@spotify/backstage-plugin-pulse-common 0.11.2 → 0.11.4
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.
- package/CHANGELOG.md +13 -0
- package/README.md +2 -8
- package/dist/index.cjs.js +10 -10
- package/dist/index.esm.js +10 -10
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @spotify/backstage-plugin-pulse-common
|
|
2
2
|
|
|
3
|
+
## 0.11.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated backstage dependencies to `v1.24.0`
|
|
8
|
+
|
|
9
|
+
## 0.11.3
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependency `@types/ungap__structured-clone` to `^1.0.0`.
|
|
14
|
+
- Upgraded to Backstage `v1.23.0`
|
|
15
|
+
|
|
3
16
|
## 0.11.2
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
# Spotify Plugins for Backstage: Pulse - Common
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This plugin is part of [Spotify Plugins for Backstage](https://backstage.spotify.com/marketplace/spotify/bundle/spotify-plugins-bundle/).
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
be depended on directly.
|
|
7
|
-
|
|
8
|
-
For installation and setup instructions, please see [the Pulse frontend plugin][2].
|
|
9
|
-
|
|
10
|
-
[1]: https://backstage.spotify.com/plugins/pulse
|
|
11
|
-
[2]: https://www.npmjs.com/package/@spotify/backstage-plugin-pulse
|
|
5
|
+
If you are already a customer, you can find detailed documentation about the Pulse Plugins [here](https://backstage.spotify.com/docs/pulse).
|
package/dist/index.cjs.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var Ct=require("@backstage/plugin-permission-common"),Qt=require("@ungap/structured-clone"),Mt=require("ajv"),jt=require("ajv-formats"),Ut=require("assert"),Ft=require("lodash"),Bt=require("crypto");function G(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}function Zt(r){if(r&&r.__esModule)return r;var t=Object.create(null);return r&&Object.keys(r).forEach(function(n){if(n!=="default"){var i=Object.getOwnPropertyDescriptor(r,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return r[n]}})}}),t.default=r,Object.freeze(t)}var Gt=G(Qt),Wt=G(Mt),Vt=G(jt),Be=G(Ut),ee=G(Ft),Xt=Zt(Bt);const Ht="survey-instance",Ze=Ct.createPermission({name:"survey.instance.administer",attributes:{action:"create"}}),Jt=[Ze],Ge="pulse.experimentalFlags",Yt=(r,t)=>{const n=r.getOptionalStringArray(Ge);return n==null?void 0:n.includes(t)},Kt=(r,t)=>{var n;const i=r.getOptionalStringArray(Ge),s=`${t}=`;return(n=i==null?void 0:i.find(a=>a.startsWith(s)))==null?void 0:n.replace(s,"")},en=()=>{"structuredClone"in globalThis||(globalThis.structuredClone=Gt.default)};var tn="surveyTemplate",nn="http://json-schema.org/draft-07/schema",rn="Survey Template",sn="object",an={template:{type:"object",description:"Meta data about the survey template",properties:{id:{type:"string",description:"An id of the survey template. If there are multiple templates with the same id, they must have different versions.",format:"regex",pattern:"^[a-zA-Z][a-zA-Z0-9_-]*[a-zA-Z0-9]$",minLength:1},version:{type:"string",format:"regex",pattern:"^[0-9]+(\\.[0-9]+)?$",description:"A version of template"},name:{type:"string",description:"The display name of the survey template",minLength:1},description:{type:"string",description:"A longer description of the survey template"},owner:{type:"string",description:"The owner of the survey template",minLength:1}},required:["id","version","name","owner"],additionalProperties:!1},parameters:{type:"array",description:"Template parameters that can or must be set when creating a survey from this template. Parameters are referred to elsewhere in the survey using the ${p:<id>} construct and will get lazily in-place replaced.",items:{type:"object",properties:{id:{type:"string",description:"The id of the parameter",format:"regex",pattern:"^[a-zA-Z][a-zA-Z0-9_]*$"},description:{type:"string",description:"The description of the parameter"},format:{type:"string",enum:["string","number","boolean"],description:"The format of the parameter. Should only be set if a default value is not provided."},default:{type:["string","number","boolean"],description:"An optional default value of this parameter. If this is omitted, the parameter must be provided when creating a survey from the template."}},required:["id","description"],oneOf:[{required:["format"]},{required:["default"]}],additionalProperties:!1}},macros:{type:"object",description:"Expression shortcuts. Macros are referred to elsewhere in the survey using the ${m:<name>} construct (similar to parameters) and will get lazily in-place replaced. Macros can be recursive and contain references to parameters or answers in the survey.",additionalProperties:{type:"string"}},sections:{type:"array",description:"The survey sections, in the order they will appear in the survey",items:{$ref:"#/$defs/section"}}},on=!1,ln=["template","parameters","sections"],_n={section:{type:"object",description:"A survey section.",properties:{id:{type:"string",description:"The id of this section",format:"regex",pattern:"^[a-zA-Z][a-zA-Z0-9_-]*[a-zA-Z0-9]$"},name:{type:"string",description:"The name of this section"},display_logic:{type:"string",description:"An optional boolean expression that decides if the surveyee should see the questions in this section."},hide_progress_bar:{type:"boolean",description:"When set, the survey progress bar will not be shown during this section."},pages:{type:"array",description:"The questions in the section, split into pages",items:{$ref:"#/$defs/page"}}},additionalProperties:!1,required:["id","name","pages"]},page:{type:"object",properties:{questions:{type:"array",description:"The questions on the page",items:{$ref:"#/$defs/question"}}},required:["questions"],additionalProperties:!1},question:{type:"object",properties:{id:{type:"string",description:"The unique ID of the question",pattern:"^[a-zA-Z][a-zA-Z0-9_]*$"},text:{type:"string",description:"The question description, in markdown"},type:{type:"string",enum:["mc-single","mc-multi","matrix-single","matrix-multi","text-single","text-multi","description"],description:"The type of question"},layout:{type:"string",enum:["vertical","horizontal"],description:"Determines the visual layout of the options in multiple choice questions"},display_logic:{type:"string",description:"A boolean expression with logic if this question should be displayed or not"},required:{type:"string",enum:["required","optional","request"],description:"If the question is required to answer; request means you will get a warning if you skip it but you can."},validation:{type:"object",description:"Validation constraints on the question. Only applied if the user has answered the question, so typically used in combination with required",properties:{min_choices:{type:"integer",description:"The minimum number of choices to user can pick (multiple choice questions only)"},max_choices:{type:"integer",description:"The maximum number of choices to user can pick (multiple choice questions only)"}},additionalProperties:!1},statements:{type:"array",items:{$ref:"#/$defs/statement"}},dynamic_statements:{type:"string",description:"Carry forward statements from a previous question",pattern:"^[a-zA-Z][a-zA-Z0-9_]*/(all|selected|all_entered_text|selected_entered_text|not_selected|for_matrix_choice\\([\\-a-zA-Z0-9_]+\\)|unselected_for_matrix_choice\\([\\-a-zA-Z0-9_]+\\))$"},statement_groups:{type:"array",items:{type:"object",properties:{statements:{type:"array",items:{$ref:"#/$defs/statement"}},id:{type:"string",description:"The id of the group."},display:{type:"string",description:"The display name of the group"},display_logic:{type:"string",description:"A boolean expression determining if the group should be displayed"},randomization:{$ref:"#/$defs/randomization"}},required:["statements","id","display"],additionalProperties:!1}},choices:{type:"array",items:{$ref:"#/$defs/choice"}},dynamic_choices:{type:"string",description:"Carry forward choices from a previous question",pattern:"^[a-zA-Z][a-zA-Z0-9_]*/(all|selected|all_entered_text|selected_entered_text|not_selected|for_matrix_choice\\([\\-a-zA-Z0-9_]+\\)|unselected_for_matrix_choice\\([\\-a-zA-Z0-9_]+\\))$"},choice_groups:{type:"array",items:{type:"object",properties:{choices:{type:"array",items:{$ref:"#/$defs/choice"}},id:{type:"string",description:"The id of the group."},display:{type:"string",description:"The display name of the group"},display_logic:{type:"string",description:"A boolean expression determining if the group should be displayed"},randomization:{$ref:"#/$defs/randomization"}},required:["choices","id","display"],additionalProperties:!1}},randomization:{$ref:"#/$defs/randomization"},configuration:{type:"object",properties:{choice_column_width_pixels:{type:"integer",description:"Size of the column with the choice descriptions in a matrix question"}},additionalProperties:!1}},additionalProperties:!1,required:["text"],oneOf:[{$ref:"#/$defs/question-mc-horizontal"},{$ref:"#/$defs/question-mc-vertical"},{$ref:"#/$defs/question-matrix"},{$ref:"#/$defs/question-text"},{$ref:"#/$defs/question-description"}]},"question-mc-horizontal":{type:"object",properties:{type:{enum:["mc-single","mc-multi"]},position:{const:"horizontal"}},required:["id","type","position","choices"],not:{anyOf:[{required:["choice_groups"]},{required:["dynamic_choices"]},{required:["statements"]},{required:["dynamic_statements"]},{required:["statement_groups"]}]}},"question-mc-vertical":{type:"object",properties:{type:{enum:["mc-single","mc-multi"]},position:{const:"vertical"}},required:["id","type"],not:{anyOf:[{required:["statements"]},{required:["dynamic_statements"]},{required:["statement_groups"]}]},oneOf:[{anyOf:[{required:["choices"]},{required:["dynamic_choices"]}],not:{required:["choice_groups"]}},{required:["choice_groups"],not:{anyOf:[{required:["choices"]},{required:["dynamic_choices"]}]}}]},"question-matrix":{type:"object",properties:{type:{enum:["matrix-single","matrix-multi"]}},required:["id","type","choices"],not:{anyOf:[{required:["dynamic_choices"]},{required:["choice_groups"]}]},oneOf:[{anyOf:[{required:["statements"]},{required:["dynamic_statements"]}],not:{required:["statement_groups"]}},{required:["statement_groups"],not:{anyOf:[{required:["statements"]},{required:["dynamic_statements"]}]}}]},"question-text":{type:"object",properties:{type:{enum:["text-single","text-multi"]}},required:["id","type"],not:{anyOf:[{required:["choices"]},{required:["choice_groups"]},{required:["dynamic_choices"]},{required:["statements"]},{required:["statement_groups"]},{required:["dynamic_statements"]},{required:["randomization"]}]}},"question-description":{type:"object",properties:{type:{const:"description"}},not:{anyOf:[{required:["choices"]},{required:["choice_groups"]},{required:["dynamic_choices"]},{required:["statements"]},{required:["statement_groups"]},{required:["dynamic_statements"]},{required:["randomization"]}]}},statement:{type:"object",properties:{id:{type:"string",pattern:"^[a-zA-Z][a-zA-Z0-9_]*$",description:"The id of the statement"},display:{type:"string",description:"The statement name, as shown to the surveyee"},display_logic:{type:"string",description:"A boolean expression determining if the statement should be displayed"}},required:["id","display"],additionalProperties:!1},choice:{type:"object",properties:{display:{type:"string",description:"The choice name, as shown to the surveyee"},id:{type:"string",pattern:"^[a-zA-Z][a-zA-Z0-9_]*$",description:"The id of the choice"},value:{type:"integer",description:"The value the choice"},display_logic:{type:"string",description:"A boolean expression determining if the choice should be displayed"},text_input:{type:"string",enum:["no","optional","forced"],description:"If a textbox should appear next to the choice, and if it should be mandatory to fill it in if the choice is selected"},exclusive_answer:{type:"boolean",description:"If true, this choice can't be combined with other choices in this question"}},required:["display"],oneOf:[{required:["value"]},{required:["id"]}],additionalProperties:!1},randomization:{type:"object",description:"Configuration of the display order randomization of choices, statements or groups.",properties:{type:{type:"string",description:"The type of randomization: randomize all items, a subset of them, or using constrained randomization",enum:["all","subset","constrained"]},total:{type:"integer",description:"Maximum number of items to show"},order:{type:"string",description:"A space separated string containing the order of the items; each 'word' is either an id of some item or the wildcard $ representing the remaining items"}},required:["type"],oneOf:[{properties:{type:{const:"all"}},not:{required:["total","order"]}},{properties:{type:{const:"subset"}},required:["total"],not:{required:["order"]}},{properties:{type:{const:"constrained"}},required:["order"]}],additionalProperties:!1}},We={$id:tn,$schema:nn,title:rn,type:sn,properties:an,additionalProperties:on,required:ln,$defs:_n},cn=(r=>(r.DuplicateResponse="DUPLICATE_RESPONSE",r.InternalError="INTERNAL_ERROR",r.InvalidDates="INVALID_DATES",r.InvalidId="INVALID_ID",r.InvalidParticipants="INVALID_PARTICIPANTS",r.InvalidResponse="INVALID_RESPONSE",r.MissingTitle="MISSING_TITLE",r.OverlappingSurveys="OVERLAPPING_SURVEYS",r.ParticipantsFrozen="PARTICIPANTS_FROZEN",r.SurveyIsClosed="SURVEY_IS_CLOSED",r.Unauthorized="UNAUTHORIZED",r))(cn||{}),pn=(r=>(r.Horizontal="HORIZONTAL",r.Vertical="VERTICAL",r))(pn||{}),un=(r=>(r.Optional="OPTIONAL",r.Request="REQUEST",r.Required="REQUIRED",r))(un||{}),fe=(r=>(r.Description="DESCRIPTION",r.MatrixMulti="MATRIX_MULTI",r.MatrixSingle="MATRIX_SINGLE",r.McMulti="MC_MULTI",r.McSingle="MC_SINGLE",r.TextMulti="TEXT_MULTI",r.TextSingle="TEXT_SINGLE",r))(fe||{}),dn=(r=>(r.All="ALL",r.Constrained="CONSTRAINED",r.Subset="SUBSET",r))(dn||{}),hn=(r=>(r.Finalized="FINALIZED",r.Partial="PARTIAL",r))(hn||{}),mn=(r=>(r.Active="ACTIVE",r.Published="PUBLISHED",r))(mn||{}),fn=(r=>(r.Q1="Q1",r.Q2="Q2",r.Q3="Q3",r.Q4="Q4",r))(fn||{}),yn=Object.defineProperty,gn=(r,t,n)=>t in r?yn(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n,k=(r,t,n)=>(gn(r,typeof t!="symbol"?t+"":t,n),n);function xn(r={}){return r.transformer&&r.transformer.constructor.name==="object"&&(r.transformer=H.fromObj(r.transformer)),wt._load_from_dict({data:br,memo:Er,...r})}const Ve={};class Xe{}const te={},He={escape(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")},compile(r,t){return new RegExp(r,t)},error:SyntaxError};function wn(r,t,n,i){const s=r.compile(t,i).exec(n);if(s!=null)return s[0]}class Je{constructor(t,n,i,s,a=!1){this.terminals=t,this.g_regex_flags=n,this.re_=i,this.use_bytes=s,this.match_whole=a,this.allowed_types=new Set(this.terminals.map(o=>o.name)),this._regexps=this._build_mres(t)}_build_mres(t){let n=this.match_whole?"$":"",i=In(t,a=>a.pattern.flags.join("")),s=[];for(let[a,o]of i){const l=o.map(p=>`(?<${p.name}>${p.pattern.to_regexp()+n})`).join("|");s.push(new RegExp(l,this.g_regex_flags+a+"y"))}return s}match(t,n){for(const i of this._regexps){i.lastIndex=n;let s=i.exec(t);if(s){let a=null;for(let[o,l]of Object.entries(s.groups))if(l){a=o;break}return[s[0],a]}}}}const Ye=typeof require!="undefined"&&require("util");class Ke{}const W={};function v(r){return Object.entries(r)}function ye(r){return Object.keys(r)}function vn(r,t){t===void 0&&(t=Object.keys(r)[0]);let n=r[t];return delete r[t],n}function et(r,t,n=null){return r[t]||n}function tt(r,t){if(r.constructor.name==="Map")for(const[n,i]of v(t))r.set(n,i);else for(const[n,i]of v(t))r[n]=i}function Tn(r){return function(){return new r(...arguments)}}function h(r){let t=0,n=[...arguments].slice(1);return r.replace(/%([sr])/g,function(){const i=arguments[1],s=n[t++];return i==="r"?Ye?Ye.inspect(s,!1,null,!0):JSON.stringify(s,null,0):s})}function bn(r,t){let n=new Set(r);for(const i of t)n.add(i);return n}function nt(r,t){return[...r].filter(n=>!t.has(n))}function rt(r){return{...r}}function it(r){return!!r}function ge(r){return Object.create(r.prototype)}function I(r){if(typeof r=="object"){let t=Object.create(Object.getPrototypeOf(r));return Object.assign(t,r)}return r}function ne(r){return new Set(r)}function xe(r){return r&&r.constructor.name==="Object"}function En(r){return r&&r.constructor.name==="Array"}function Nn(r){return typeof r=="function"}function*V(r,t=0){let n=t;for(const i of r)yield[n++,i]}function Rn(r){for(const t of r)if(t)return!0;return!1}function st(r,t){return t.filter(r||it)}function re(r){let t=[...arguments].slice(1);return function(){return r(...t,...arguments)}}class we extends Error{}function E(r){return r[r.length-1]}function P(r){return function(){let t=new r(...arguments);return t.__call__.bind(t)}}function O(r,t){return Array.from({length:t},()=>r).flat()}function at(r){return/^[A-Z_$]*$/.test(r)}function ve(r,t,n){const i=r.split(t);return n?i.splice(-n-1):i}function Te(r,t){let n=new RegExp(t,"g");return(r.match(n)||[]).length}function kn(r,t){for(let n of r)if(!t.has(n))return!1;return!0}function*In(r,t){let n=[],i=null;for(const s of r){const a=t(s);i&&a!=i&&(yield[i,n],n=[]),n.push(s),i=a}yield[i,n]}class A extends Error{}class S extends A{}function be(r,t,n="Got %r, expected one of %s"){if(!t.includes(r))throw new S(h(n,r,t))}class ie extends A{}class qn extends A{}class X extends A{}class z extends A{constructor(){super(...arguments),k(this,"pos_in_stream",null),k(this,"_terminals_by_name",null)}get_context(t,n=40){let i,s,a=this.pos_in_stream,o=max(a-n,0),l=a+n;return t instanceof bytes?(s=E(ve(t.slice(o,a),`
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var Ct=require("@backstage/plugin-permission-common"),Qt=require("@ungap/structured-clone"),Mt=require("ajv"),jt=require("ajv-formats"),Ut=require("assert"),Ft=require("crypto"),Zt=require("lodash");function G(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}function Bt(r){if(r&&r.__esModule)return r;var t=Object.create(null);return r&&Object.keys(r).forEach(function(n){if(n!=="default"){var i=Object.getOwnPropertyDescriptor(r,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return r[n]}})}}),t.default=r,Object.freeze(t)}var Gt=G(Qt),Wt=G(Mt),Vt=G(jt),Ze=G(Ut),Xt=Bt(Ft),ee=G(Zt);const Ht="survey-instance",Be=Ct.createPermission({name:"survey.instance.administer",attributes:{action:"create"}}),Jt=[Be],Ge="pulse.experimentalFlags",Yt=(r,t)=>{const n=r.getOptionalStringArray(Ge);return n==null?void 0:n.includes(t)},Kt=(r,t)=>{var n;const i=r.getOptionalStringArray(Ge),s=`${t}=`;return(n=i==null?void 0:i.find(a=>a.startsWith(s)))==null?void 0:n.replace(s,"")},en=()=>{"structuredClone"in globalThis||(globalThis.structuredClone=Gt.default)};var tn="surveyTemplate",nn="http://json-schema.org/draft-07/schema",rn="Survey Template",sn="object",an={template:{type:"object",description:"Meta data about the survey template",properties:{id:{type:"string",description:"An id of the survey template. If there are multiple templates with the same id, they must have different versions.",format:"regex",pattern:"^[a-zA-Z][a-zA-Z0-9_-]*[a-zA-Z0-9]$",minLength:1},version:{type:"string",format:"regex",pattern:"^[0-9]+(\\.[0-9]+)?$",description:"A version of template"},name:{type:"string",description:"The display name of the survey template",minLength:1},description:{type:"string",description:"A longer description of the survey template"},owner:{type:"string",description:"The owner of the survey template",minLength:1}},required:["id","version","name","owner"],additionalProperties:!1},parameters:{type:"array",description:"Template parameters that can or must be set when creating a survey from this template. Parameters are referred to elsewhere in the survey using the ${p:<id>} construct and will get lazily in-place replaced.",items:{type:"object",properties:{id:{type:"string",description:"The id of the parameter",format:"regex",pattern:"^[a-zA-Z][a-zA-Z0-9_]*$"},description:{type:"string",description:"The description of the parameter"},format:{type:"string",enum:["string","number","boolean"],description:"The format of the parameter. Should only be set if a default value is not provided."},default:{type:["string","number","boolean"],description:"An optional default value of this parameter. If this is omitted, the parameter must be provided when creating a survey from the template."}},required:["id","description"],oneOf:[{required:["format"]},{required:["default"]}],additionalProperties:!1}},macros:{type:"object",description:"Expression shortcuts. Macros are referred to elsewhere in the survey using the ${m:<name>} construct (similar to parameters) and will get lazily in-place replaced. Macros can be recursive and contain references to parameters or answers in the survey.",additionalProperties:{type:"string"}},sections:{type:"array",description:"The survey sections, in the order they will appear in the survey",items:{$ref:"#/$defs/section"}}},on=!1,ln=["template","parameters","sections"],_n={section:{type:"object",description:"A survey section.",properties:{id:{type:"string",description:"The id of this section",format:"regex",pattern:"^[a-zA-Z][a-zA-Z0-9_-]*[a-zA-Z0-9]$"},name:{type:"string",description:"The name of this section"},display_logic:{type:"string",description:"An optional boolean expression that decides if the surveyee should see the questions in this section."},hide_progress_bar:{type:"boolean",description:"When set, the survey progress bar will not be shown during this section."},pages:{type:"array",description:"The questions in the section, split into pages",items:{$ref:"#/$defs/page"}}},additionalProperties:!1,required:["id","name","pages"]},page:{type:"object",properties:{questions:{type:"array",description:"The questions on the page",items:{$ref:"#/$defs/question"}}},required:["questions"],additionalProperties:!1},question:{type:"object",properties:{id:{type:"string",description:"The unique ID of the question",pattern:"^[a-zA-Z][a-zA-Z0-9_]*$"},text:{type:"string",description:"The question description, in markdown"},type:{type:"string",enum:["mc-single","mc-multi","matrix-single","matrix-multi","text-single","text-multi","description"],description:"The type of question"},layout:{type:"string",enum:["vertical","horizontal"],description:"Determines the visual layout of the options in multiple choice questions"},display_logic:{type:"string",description:"A boolean expression with logic if this question should be displayed or not"},required:{type:"string",enum:["required","optional","request"],description:"If the question is required to answer; request means you will get a warning if you skip it but you can."},validation:{type:"object",description:"Validation constraints on the question. Only applied if the user has answered the question, so typically used in combination with required",properties:{min_choices:{type:"integer",description:"The minimum number of choices to user can pick (multiple choice questions only)"},max_choices:{type:"integer",description:"The maximum number of choices to user can pick (multiple choice questions only)"}},additionalProperties:!1},statements:{type:"array",items:{$ref:"#/$defs/statement"}},dynamic_statements:{type:"string",description:"Carry forward statements from a previous question",pattern:"^[a-zA-Z][a-zA-Z0-9_]*/(all|selected|all_entered_text|selected_entered_text|not_selected|for_matrix_choice\\([\\-a-zA-Z0-9_]+\\)|unselected_for_matrix_choice\\([\\-a-zA-Z0-9_]+\\))$"},statement_groups:{type:"array",items:{type:"object",properties:{statements:{type:"array",items:{$ref:"#/$defs/statement"}},id:{type:"string",description:"The id of the group."},display:{type:"string",description:"The display name of the group"},display_logic:{type:"string",description:"A boolean expression determining if the group should be displayed"},randomization:{$ref:"#/$defs/randomization"}},required:["statements","id","display"],additionalProperties:!1}},choices:{type:"array",items:{$ref:"#/$defs/choice"}},dynamic_choices:{type:"string",description:"Carry forward choices from a previous question",pattern:"^[a-zA-Z][a-zA-Z0-9_]*/(all|selected|all_entered_text|selected_entered_text|not_selected|for_matrix_choice\\([\\-a-zA-Z0-9_]+\\)|unselected_for_matrix_choice\\([\\-a-zA-Z0-9_]+\\))$"},choice_groups:{type:"array",items:{type:"object",properties:{choices:{type:"array",items:{$ref:"#/$defs/choice"}},id:{type:"string",description:"The id of the group."},display:{type:"string",description:"The display name of the group"},display_logic:{type:"string",description:"A boolean expression determining if the group should be displayed"},randomization:{$ref:"#/$defs/randomization"}},required:["choices","id","display"],additionalProperties:!1}},randomization:{$ref:"#/$defs/randomization"},configuration:{type:"object",properties:{choice_column_width_pixels:{type:"integer",description:"Size of the column with the choice descriptions in a matrix question"}},additionalProperties:!1}},additionalProperties:!1,required:["text"],oneOf:[{$ref:"#/$defs/question-mc-horizontal"},{$ref:"#/$defs/question-mc-vertical"},{$ref:"#/$defs/question-matrix"},{$ref:"#/$defs/question-text"},{$ref:"#/$defs/question-description"}]},"question-mc-horizontal":{type:"object",properties:{type:{enum:["mc-single","mc-multi"]},position:{const:"horizontal"}},required:["id","type","position","choices"],not:{anyOf:[{required:["choice_groups"]},{required:["dynamic_choices"]},{required:["statements"]},{required:["dynamic_statements"]},{required:["statement_groups"]}]}},"question-mc-vertical":{type:"object",properties:{type:{enum:["mc-single","mc-multi"]},position:{const:"vertical"}},required:["id","type"],not:{anyOf:[{required:["statements"]},{required:["dynamic_statements"]},{required:["statement_groups"]}]},oneOf:[{anyOf:[{required:["choices"]},{required:["dynamic_choices"]}],not:{required:["choice_groups"]}},{required:["choice_groups"],not:{anyOf:[{required:["choices"]},{required:["dynamic_choices"]}]}}]},"question-matrix":{type:"object",properties:{type:{enum:["matrix-single","matrix-multi"]}},required:["id","type","choices"],not:{anyOf:[{required:["dynamic_choices"]},{required:["choice_groups"]}]},oneOf:[{anyOf:[{required:["statements"]},{required:["dynamic_statements"]}],not:{required:["statement_groups"]}},{required:["statement_groups"],not:{anyOf:[{required:["statements"]},{required:["dynamic_statements"]}]}}]},"question-text":{type:"object",properties:{type:{enum:["text-single","text-multi"]}},required:["id","type"],not:{anyOf:[{required:["choices"]},{required:["choice_groups"]},{required:["dynamic_choices"]},{required:["statements"]},{required:["statement_groups"]},{required:["dynamic_statements"]},{required:["randomization"]}]}},"question-description":{type:"object",properties:{type:{const:"description"}},not:{anyOf:[{required:["choices"]},{required:["choice_groups"]},{required:["dynamic_choices"]},{required:["statements"]},{required:["statement_groups"]},{required:["dynamic_statements"]},{required:["randomization"]}]}},statement:{type:"object",properties:{id:{type:"string",pattern:"^[a-zA-Z][a-zA-Z0-9_]*$",description:"The id of the statement"},display:{type:"string",description:"The statement name, as shown to the surveyee"},display_logic:{type:"string",description:"A boolean expression determining if the statement should be displayed"}},required:["id","display"],additionalProperties:!1},choice:{type:"object",properties:{display:{type:"string",description:"The choice name, as shown to the surveyee"},id:{type:"string",pattern:"^[a-zA-Z][a-zA-Z0-9_]*$",description:"The id of the choice"},value:{type:"integer",description:"The value the choice"},display_logic:{type:"string",description:"A boolean expression determining if the choice should be displayed"},text_input:{type:"string",enum:["no","optional","forced"],description:"If a textbox should appear next to the choice, and if it should be mandatory to fill it in if the choice is selected"},exclusive_answer:{type:"boolean",description:"If true, this choice can't be combined with other choices in this question"}},required:["display"],oneOf:[{required:["value"]},{required:["id"]}],additionalProperties:!1},randomization:{type:"object",description:"Configuration of the display order randomization of choices, statements or groups.",properties:{type:{type:"string",description:"The type of randomization: randomize all items, a subset of them, or using constrained randomization",enum:["all","subset","constrained"]},total:{type:"integer",description:"Maximum number of items to show"},order:{type:"string",description:"A space separated string containing the order of the items; each 'word' is either an id of some item or the wildcard $ representing the remaining items"}},required:["type"],oneOf:[{properties:{type:{const:"all"}},not:{required:["total","order"]}},{properties:{type:{const:"subset"}},required:["total"],not:{required:["order"]}},{properties:{type:{const:"constrained"}},required:["order"]}],additionalProperties:!1}},We={$id:tn,$schema:nn,title:rn,type:sn,properties:an,additionalProperties:on,required:ln,$defs:_n};const cn=/\$\{m:([^\}]+)\}/g,pn=100,fe=(r,t)=>{if(typeof t=="string"){let n=t,i=0;for(;i<pn;){const s=n.replace(cn,(a,o)=>{if(r[o]===void 0)throw new Error(`Undefined macro: ${o}`);return r[o]});if(s===n)return s;n=s,i+=1}throw new Error(`Failed to finish interpolate macros - cyclic macros!? Stuck at: ${t}"`)}return typeof t=="object"&&Object.keys(t).forEach(n=>{t[n]=fe(r,t[n])}),t},Ve=r=>(r.sections=fe(r.macros||{},r.sections),r),un="(?<questionId>[a-zA-Z][a-zA-Z0-9_]*)",dn="((?<expressionWithoutIdentifier>all|all_entered_text|selected|selected_entered_text|not_selected)|(?<expressionWithIdentifier>for_matrix_choice|unselected_for_matrix_choice)(\\((?<identifier>[\\-a-zA-Z0-9_]+)\\)))",Xe=new RegExp(`^${un}/${dn}$`);var T=(r=>(r.ALL="all",r.ALL_ENTERED_TEXT="all_entered_text",r.SELECTED="selected",r.SELECTED_ENTERED_TEXT="selected_entered_text",r.NOT_SELECTED="not_selected",r.FOR_MATRIX_CHOICE="for_matrix_choice",r.UNSELECTED_FOR_MATRIX_CHOICE="unselected_for_matrix_choice",r))(T||{});const He=r=>Xe.test(r),P=r=>{var t;const n=(t=r.match(Xe))==null?void 0:t.groups;if(!n)throw new Error(`Invalid locator expression: ${r}`);const i=n.expressionWithoutIdentifier||n.expressionWithIdentifier||"all",s={questionId:n.questionId,expression:i};if(n.identifier){const a=isNaN(parseInt(n.identifier,10))?n.identifier:parseInt(n.identifier,10);s.identifier=a}return s};var hn=(r=>(r.DuplicateResponse="DUPLICATE_RESPONSE",r.InternalError="INTERNAL_ERROR",r.InvalidDates="INVALID_DATES",r.InvalidId="INVALID_ID",r.InvalidParticipants="INVALID_PARTICIPANTS",r.InvalidResponse="INVALID_RESPONSE",r.MissingTitle="MISSING_TITLE",r.OverlappingSurveys="OVERLAPPING_SURVEYS",r.ParticipantsFrozen="PARTICIPANTS_FROZEN",r.SurveyIsClosed="SURVEY_IS_CLOSED",r.Unauthorized="UNAUTHORIZED",r))(hn||{}),mn=(r=>(r.Horizontal="HORIZONTAL",r.Vertical="VERTICAL",r))(mn||{}),fn=(r=>(r.Optional="OPTIONAL",r.Request="REQUEST",r.Required="REQUIRED",r))(fn||{}),ye=(r=>(r.Description="DESCRIPTION",r.MatrixMulti="MATRIX_MULTI",r.MatrixSingle="MATRIX_SINGLE",r.McMulti="MC_MULTI",r.McSingle="MC_SINGLE",r.TextMulti="TEXT_MULTI",r.TextSingle="TEXT_SINGLE",r))(ye||{}),yn=(r=>(r.All="ALL",r.Constrained="CONSTRAINED",r.Subset="SUBSET",r))(yn||{}),gn=(r=>(r.Finalized="FINALIZED",r.Partial="PARTIAL",r))(gn||{}),xn=(r=>(r.Active="ACTIVE",r.Published="PUBLISHED",r))(xn||{}),wn=(r=>(r.Q1="Q1",r.Q2="Q2",r.Q3="Q3",r.Q4="Q4",r))(wn||{});const te=(r,t="camelCase")=>{const n=t==="camelCase"?ee.default.camelCase:ee.default.snakeCase;return ee.default.transform(r,(i,s,a)=>{const o=typeof a=="string"?n(a):a;i[o]=ee.default.isObject(s)&&!(s instanceof Date)?te(s,t):s})};function vn(r){const t=structuredClone(r);return{...t,...t.template,sections:t.sections.map(n=>({...te(n),pages:n.pages.map((i,s)=>({...i,id:`${n.id}-${s}`,questions:Tn(t,n,i.questions)}))}))}}function Tn(r,t,n){return n.map(i=>bn(r.template.id,t,i))}function bn(r,t,n){var i,s;return{...te({...n,choiceGroups:(i=n.choice_groups)==null?void 0:i.map(a=>({...a,randomization:ge(a.randomization)})),statementGroups:(s=n.statement_groups)==null?void 0:s.map(a=>({...a,randomization:ge(a.randomization)})),randomization:ge(n.randomization)}),id:Ye(r,n),type:Ke(n.type),layout:En(n.layout),required:Nn(n.required),label:t.name}}function ge(r){var t;return r?{type:Je(r.type),order:(t=r.order)==null?void 0:t.split(" "),total:r.total}:void 0}function Je(r){return r.toUpperCase()}function Ye(r,t){return`${r}.${t.id}`}const xe=r=>r.split(".").pop();function Ke(r="description"){return r.replace("-","_").toUpperCase()}function En(r){return r==null?void 0:r.toUpperCase()}function Nn(r="optional"){return r.replace("-","_").toUpperCase()}function et(r){return structuredClone(r).sections.flatMap(t=>t.pages.flatMap(n=>n.questions))}var Rn=Object.defineProperty,In=(r,t,n)=>t in r?Rn(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n,I=(r,t,n)=>(In(r,typeof t!="symbol"?t+"":t,n),n);function kn(r={}){return r.transformer&&r.transformer.constructor.name==="object"&&(r.transformer=H.fromObj(r.transformer)),It._load_from_dict({data:Sr,memo:$r,...r})}const tt={};class nt{}const ne={},rt={escape(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")},compile(r,t){return new RegExp(r,t)},error:SyntaxError};function qn(r,t,n,i){const s=r.compile(t,i).exec(n);if(s!=null)return s[0]}class it{constructor(t,n,i,s,a=!1){this.terminals=t,this.g_regex_flags=n,this.re_=i,this.use_bytes=s,this.match_whole=a,this.allowed_types=new Set(this.terminals.map(o=>o.name)),this._regexps=this._build_mres(t)}_build_mres(t){let n=this.match_whole?"$":"",i=Ln(t,a=>a.pattern.flags.join("")),s=[];for(let[a,o]of i){const l=o.map(p=>`(?<${p.name}>${p.pattern.to_regexp()+n})`).join("|");s.push(new RegExp(l,this.g_regex_flags+a+"y"))}return s}match(t,n){for(const i of this._regexps){i.lastIndex=n;let s=i.exec(t);if(s){let a=null;for(let[o,l]of Object.entries(s.groups))if(l){a=o;break}return[s[0],a]}}}}const st=typeof require!="undefined"&&require("util");class at{}const W={};function v(r){return Object.entries(r)}function we(r){return Object.keys(r)}function On(r,t){t===void 0&&(t=Object.keys(r)[0]);let n=r[t];return delete r[t],n}function ot(r,t,n=null){return r[t]||n}function lt(r,t){if(r.constructor.name==="Map")for(const[n,i]of v(t))r.set(n,i);else for(const[n,i]of v(t))r[n]=i}function An(r){return function(){return new r(...arguments)}}function h(r){let t=0,n=[...arguments].slice(1);return r.replace(/%([sr])/g,function(){const i=arguments[1],s=n[t++];return i==="r"?st?st.inspect(s,!1,null,!0):JSON.stringify(s,null,0):s})}function Sn(r,t){let n=new Set(r);for(const i of t)n.add(i);return n}function _t(r,t){return[...r].filter(n=>!t.has(n))}function ct(r){return{...r}}function pt(r){return!!r}function ve(r){return Object.create(r.prototype)}function k(r){if(typeof r=="object"){let t=Object.create(Object.getPrototypeOf(r));return Object.assign(t,r)}return r}function re(r){return new Set(r)}function Te(r){return r&&r.constructor.name==="Object"}function $n(r){return r&&r.constructor.name==="Array"}function zn(r){return typeof r=="function"}function*V(r,t=0){let n=t;for(const i of r)yield[n++,i]}function Dn(r){for(const t of r)if(t)return!0;return!1}function ut(r,t){return t.filter(r||pt)}function ie(r){let t=[...arguments].slice(1);return function(){return r(...t,...arguments)}}class be extends Error{}function E(r){return r[r.length-1]}function L(r){return function(){let t=new r(...arguments);return t.__call__.bind(t)}}function O(r,t){return Array.from({length:t},()=>r).flat()}function dt(r){return/^[A-Z_$]*$/.test(r)}function Ee(r,t,n){const i=r.split(t);return n?i.splice(-n-1):i}function Ne(r,t){let n=new RegExp(t,"g");return(r.match(n)||[]).length}function Pn(r,t){for(let n of r)if(!t.has(n))return!1;return!0}function*Ln(r,t){let n=[],i=null;for(const s of r){const a=t(s);i&&a!=i&&(yield[i,n],n=[]),n.push(s),i=a}yield[i,n]}class A extends Error{}class S extends A{}function Re(r,t,n="Got %r, expected one of %s"){if(!t.includes(r))throw new S(h(n,r,t))}class se extends A{}class Cn extends A{}class X extends A{}class z extends A{constructor(){super(...arguments),I(this,"pos_in_stream",null),I(this,"_terminals_by_name",null)}get_context(t,n=40){let i,s,a=this.pos_in_stream,o=max(a-n,0),l=a+n;return t instanceof bytes?(s=E(Ee(t.slice(o,a),`
|
|
2
2
|
`,1)),i=t.slice(a,l).split(`
|
|
3
3
|
`,1)[0],(s+i+`
|
|
4
4
|
`+" "*s.expandtabs().length+`^
|
|
5
|
-
`).decode("ascii","backslashreplace")):(s=E(
|
|
5
|
+
`).decode("ascii","backslashreplace")):(s=E(Ee(t.slice(o,a),`
|
|
6
6
|
`,1)),i=t.slice(a,l).split(`
|
|
7
7
|
`,1)[0],s+i+`
|
|
8
8
|
`+" "*s.expandtabs().length+`^
|
|
9
|
-
`)}match_examples(t,n,i=!1){
|
|
9
|
+
`)}match_examples(t,n,i=!1){Te(n)&&(n=v(n));let s=[null,!1];for(const[a,[o,l]]of V(n))for(const[p,_]of V(l))try{t(_)}catch(c){if(c instanceof z){if(c.state.eq(this.state)){if(c.token===this.token)return o;i&&c.token.type===this.token.type&&!E(s)&&(s=[o,!0]),s[0]===null&&(s=[o,!1])}}else throw c}return s[0]}_format_expected(t){let n;return this._terminals_by_name&&(n=this._terminals_by_name,t=t.map(i=>i in n?n[i].user_repr():i)),h(`Expected one of:
|
|
10
10
|
* %s
|
|
11
11
|
`,t.join(`
|
|
12
|
-
* `))}}class
|
|
12
|
+
* `))}}class Qn extends z{constructor(t,n=null,i=null){super(),this.expected=t,this.state=n,this.token=new g("<EOF>",""),this.pos_in_stream=-1,this.line=-1,this.column=-1,this._terminals_by_name=i}}class M extends z{constructor({seq:t,lex_pos:n,line:i,column:s,allowed:a=null,considered_tokens:o=null,state:l=null,token_history:p=null,terminals_by_name:_=null,considered_rules:c=null}={}){super(),this.line=i,this.column=s,this.pos_in_stream=n,this.state=l,this._terminals_by_name=_,this.allowed=a,this.considered_tokens=o,this.considered_rules=c,this.token_history=p,this.char=t[n]}}class j extends z{constructor({token:t,expected:n,considered_rules:i=null,state:s=null,interactive_parser:a=null,terminals_by_name:o=null,token_history:l=null}={}){super(),this.line=t&&t.line||"?",this.column=t&&t.column||"?",this.pos_in_stream=t&&t.start_pos||null,this.state=s,this.token=t,this.expected=n,this._accepts=tt,this.considered_rules=i,this.interactive_parser=a,this._terminals_by_name=o,this.token_history=l}get accepts(){return this._accepts===tt&&(this._accepts=this.interactive_parser&&this.interactive_parser.accepts()),this._accepts}}class Ie extends A{constructor(t,n,i){let s=h(`Error trying to process rule "%s":
|
|
13
13
|
|
|
14
|
-
%s`,t,i);super(s),this.rule=t,this.obj=n,this.orig_exc=i}}function
|
|
14
|
+
%s`,t,i);super(s),this.rule=t,this.obj=n,this.orig_exc=i}}function Mn(r,t=null,n=null){let i,s,a=new Map;for(const o of r)i=t!==null?t(o):o,s=n!==null?n(o):o,a.has(i)?a.get(i).push(s):a.set(i,[s]);return a}function ae(r,t,n){let i;return Te(r)?"__type__"in r?(i=t[r.__type__],i.deserialize(r,n)):"@"in r?n[r["@"]]:Object.fromEntries(v(r).map(([s,a])=>[s,ae(a,t,n)])):$n(r)?r.map(s=>ae(s,t,n)):r}class N{static deserialize(t,n){const i=this;let s=i&&i.__serialize_fields__;if("@"in t)return n[t["@"]];let a=ve(i);for(const o of s)if(t&&o in t)a[o]=ae(t[o],Or,n);else throw new KeyError("Cannot find key for class",i,e);return"_deserialize"in a&&a._deserialize(),a}}class jn extends N{static get __serialize_fields__(){return["memoized"]}constructor(t){super(),this.types_to_memoize=t,this.memoized=new Enumerator}in_types(t){return t instanceof this.types_to_memoize}serialize(){return _serialize(this.memoized.reversed(),null)}static deserialize(t,n,i){return ae(t,n,i)}}class ht{constructor(){this.empty=!0}}class w{constructor(t,n,i=null){this.data=t,this.children=n,this._meta=i}get meta(){return this._meta===null&&(this._meta=new ht),this._meta}repr(){return h("Tree(%r, %r)",this.data,this.children)}_pretty_label(){return this.data}_pretty(t,n){if(this.children.length===1&&!(this.children[0]instanceof w))return[O(n,t).join(""),this._pretty_label()," ",h("%s",this.children[0].value),`
|
|
15
15
|
`];let i=[O(n,t).join(""),this._pretty_label(),`
|
|
16
16
|
`];for(const s of this.children)s instanceof w?i.push(...s._pretty(t+1,n)):i.push(O(n,t+1).join(""),h("%s",s.value),`
|
|
17
|
-
`);return i}pretty(t=" "){return this._pretty(0,t).join("")}eq(t){return t&&this&&t&&this&&t.children&&this.children&&t.data&&this.data?this.data===t.data&&this.children===t.children:!1}iter_subtrees(){let t=[this],n=new Map;for(const i of t)n.set(i,i),t.push(...[...i.children].reverse().filter(s=>s instanceof w&&!n.has(s)).map(s=>s));return t=void 0,[...n.values()].reverse()}find_pred(t){return
|
|
17
|
+
`);return i}pretty(t=" "){return this._pretty(0,t).join("")}eq(t){return t&&this&&t&&this&&t.children&&this.children&&t.data&&this.data?this.data===t.data&&this.children===t.children:!1}iter_subtrees(){let t=[this],n=new Map;for(const i of t)n.set(i,i),t.push(...[...i.children].reverse().filter(s=>s instanceof w&&!n.has(s)).map(s=>s));return t=void 0,[...n.values()].reverse()}find_pred(t){return ut(t,this.iter_subtrees())}find_data(t){return this.find_pred(n=>n.data===t)}*scan_values(t){for(const n of this.children)if(n instanceof w)for(const i of n.scan_values(t))yield i;else t(n)&&(yield n)}*iter_subtrees_topdown(){let t,n=[this];for(;n.length;)if(t=n.pop(),t instanceof w){yield t;for(const i of[...t.children].reverse())n.push(i)}}copy(){return type(this)(this.data,this.children)}set(t,n){this.data=t,this.children=n}}class H extends nt{static get __visit_tokens__(){return!0}constructor(t=!0){super(),this.__visit_tokens__=t}static fromObj(t,...n){class i extends this{}for(let[s,a]of Object.entries(t))i.prototype[s]=a;return new i(...n)}_call_userfunc(t,n=null){let i,s,a=n!==null?n:t.children;if(t&&t.data&&this&&this[t.data]){i=this&&this[t.data];try{return s=i&&i.visit_wrapper||null,s!==null?i.visit_wrapper(i,t.data,a,t.meta):i(a)}catch(o){throw o instanceof se?o:o instanceof Error?new Ie(t.data,t,o):o}}else return this.__default__(t.data,a,t.meta)}_call_userfunc_token(t){let n;if(t&&t.type&&this&&this[t.type]){n=this&&this[t.type];try{return n(t)}catch(i){throw i instanceof se?i:i instanceof Error?new Ie(t.type,t,i):i}}else return this.__default_token__(t)}*_transform_children(t){let n;for(const i of t)i instanceof w?n=this._transform_tree(i):this.__visit_tokens__&&i instanceof g?n=this._call_userfunc_token(i):n=i,n!==ne&&(yield n)}_transform_tree(t){let n=[...this._transform_children(t.children)];return this._call_userfunc(t,n)}transform(t){return this._transform_tree(t)}__default__(t,n,i){return new w(t,n,i)}__default_token__(t){return t}}class mt extends H{_transform_tree(t){return this._call_userfunc(t)}transform(t){for(const n of t.iter_subtrees())n.children=[...this._transform_children(n.children)];return this._transform_tree(t)}}class Un extends H{transform(t){let n,i,s,a=[],o=[t];for(;o.length;){const _=o.pop();a.push(_),_ instanceof w&&o.push(..._.children)}let l=[];for(const _ of[...a].reverse())_ instanceof w?(s=_.children.length,s?(n=l.slice(-s),l.splice(-s)):n=[],i=this._call_userfunc(_,n),i!==ne&&l.push(i)):this.__visit_tokens__&&_ instanceof g?(i=this._call_userfunc_token(_),i!==ne&&l.push(i)):l.push(_);let[p]=l;return p}}class Fn extends H{_transform_tree(t){return t.children=[...this._transform_children(t.children)],this._call_userfunc(t)}}class ke{_call_userfunc(t){const n=this[t.data];return n?n(t):this.__default__(t)}__default__(t){return t}__class_getitem__(t){return cls}}class Zn extends ke{visit(t){for(const n of t.iter_subtrees())this._call_userfunc(n);return t}visit_topdown(t){for(const n of t.iter_subtrees_topdown())this._call_userfunc(n);return t}}class Bn extends ke{visit(t){for(const n of t.children)n instanceof w&&this.visit(n);return this._call_userfunc(t),t}visit_topdown(t){this._call_userfunc(t);for(const n of t.children)n instanceof w&&this.visit_topdown(n);return t}}class Gn extends nt{visit(t){return t.data in this?this[t.data](t):this.__default__(t)}visit_children(t){return t.children.map(n=>n instanceof w?this.visit(n):n)}__default__(t){return this.visit_children(t)}}var Wn=0;class qe extends N{constructor(t){super(),I(this,"is_term",W),this.name=t}eq(t){return this.is_term===t.is_term&&this.name===t.name}repr(){return h("%s(%r)",type(this).name,this.name)}static get fullrepr(){return property(__repr__)}get fullrepr(){return this.constructor.fullrepr}renamed(t){return type(this)(t(this.name))}}class Oe extends qe{static get __serialize_fields__(){return["name","filter_out"]}get is_term(){return!0}constructor(t,n=!1){super(),this.name=t,this.filter_out=n}get fullrepr(){return h("%s(%r, %r)",type(this).name,this.name,this.filter_out)}renamed(t){return type(this)(t(this.name),this.filter_out)}}class Ae extends qe{static get __serialize_fields__(){return["name"]}get is_term(){return!1}}class oe extends N{static get __serialize_fields__(){return["keep_all_tokens","expand1","priority","template_source","empty_indices"]}constructor(t=!1,n=!1,i=null,s=null,a=[]){super(),this.keep_all_tokens=t,this.expand1=n,this.priority=i,this.template_source=s,this.empty_indices=a}repr(){return h("RuleOptions(%r, %r, %r, %r)",this.keep_all_tokens,this.expand1,this.priority,this.template_source)}}class B extends N{static get __serialize_fields__(){return["origin","expansion","order","alias","options"]}static get __serialize_namespace__(){return[Oe,Ae,oe]}constructor(t,n,i=0,s=null,a=null){super(),this.origin=t,this.expansion=n,this.alias=s,this.order=i,this.options=a||new oe,this._hash=[this.origin,this.expansion]}_deserialize(){this._hash=[this.origin,this.expansion]}repr(){return h("Rule(%r, %r, %r, %r)",this.origin,this.expansion,this.alias,this.options)}eq(t){return t instanceof B?this.origin===t.origin&&this.expansion===t.expansion:!1}}class Se extends N{constructor(t,n=[],i=null){super(),this.value=t,this.flags=re(n),this.raw=i}repr(){return repr(this.to_regexp())}eq(t){return type(this)===type(t)&&this.value===t.value&&this.flags===t.flags}to_regexp(){throw new NotImplementedError}get min_width(){throw new NotImplementedError}get max_width(){throw new NotImplementedError}_get_flags(t){return t}}class $e extends Se{static get __serialize_fields__(){return["value","flags"]}static get type(){return"str"}to_regexp(){return this._get_flags(rt.escape(this.value))}get min_width(){return this.value.length}get max_width(){return this.value.length}}class ze extends Se{static get __serialize_fields__(){return["value","flags","_width"]}static get type(){return"re"}to_regexp(){return this._get_flags(this.value)}_get_width(){return this._width===null&&(this._width=get_regexp_width(this.to_regexp())),this._width}get min_width(){return this._get_width()[0]}get max_width(){return this._get_width()[1]}}class le extends N{static get __serialize_fields__(){return["name","pattern","priority"]}static get __serialize_namespace__(){return[$e,ze]}constructor(t,n,i=Wn){super(),this.name=t,this.pattern=n,this.priority=i}repr(){return h("%s(%r, %r)",type(this).name,this.name,this.pattern)}user_repr(){return this.name.startsWith("__")?this.pattern.raw||this.name:this.name}}class g{constructor(t,n,i=null,s=null,a=null,o=null,l=null,p=null){I(this,"value"),I(this,"type"),this.type=t,this.start_pos=i,this.value=n,this.line=s,this.column=a,this.end_line=o,this.end_column=l,this.end_pos=p}update(t=null,n=null){return g.new_borrow_pos(t!==null?t:this.type,n!==null?n:this.value,this)}static new_borrow_pos(t,n,i){const s=this;return new s(t,n,i.start_pos,i.line,i.column,i.end_line,i.end_column,i.end_pos)}repr(){return h("Token(%r, %r)",this.type,this.value)}eq(t){return t instanceof g&&this.type!==t.type?!1:str.__eq__(this,t)}static get __hash__(){return str.__hash__}}class je{constructor(t){this.newline_char=t,this.char_pos=0,this.line=1,this.column=1,this.line_start_pos=0}eq(t){return t instanceof je?this.char_pos===t.char_pos&&this.newline_char===t.newline_char:W}feed(t,n=!0){let i;n&&(i=Ne(t,this.newline_char),i&&(this.line+=i,this.line_start_pos=this.char_pos+t.lastIndexOf(this.newline_char)+1)),this.char_pos+=t.length,this.column=this.char_pos-this.line_start_pos+1}}class Vn{constructor(t){this.scanner=t}__call__(t){let n,i=this.scanner.match(t.value,0);return i&&([n,t.type]=i),t}}const Xn=L(Vn);class Hn{constructor(t,n,i){this.callback1=t,this.callback2=n,this.cond=i}__call__(t){let n=this.callback1(t);return this.cond(n)?this.callback2(t):n}}const Jn=L(Hn);function Yn(r,t,n,i){let s,a,o=Mn(r,_=>_.pattern.constructor.type),l=new Set,p={};for(const _ of o.get("re")||[]){a=[];for(const c of o.get("str")||[])c.priority===_.priority&&(s=c.pattern.value,s===qn(n,_.pattern.to_regexp(),s,t)&&(a.push(c),Pn(new Set(c.pattern.flags),new Set(_.pattern.flags))&&l.add(c)));a.length&&(p[_.name]=new Xn(new it(a,t,n,i,!0)))}return[r.filter(_=>!l.has(_)).map(_=>_),p]}function Kn(r){return r.includes(`
|
|
18
18
|
`)||r.includes("\\n")||r.includes("\\s")||r.includes("[^")||r.includes("(?s")&&r.includes(".")}class Ue{constructor(t,n=null,i=null){this.text=t,this.line_ctr=n||new je(`
|
|
19
|
-
`),this.last_token=i}eq(t){return t instanceof Ue?this.text===t.text&&this.line_ctr===t.line_ctr&&this.last_token===t.last_token:W}}class _t{constructor(t,n){this.lexer=t,this.state=n}static from_text(t,n){return new this(t,new Ue(n))}lex(t){return this.lexer.lex(this.state,t)}}class le extends Ke{lex(t,n){return W}}function Zn(r,t){r.sort((n,i)=>{let s=t(n),a=t(i);for(let o=0;o<s.length;o++){if(s[o]>a[o])return 1;if(s[o]<a[o])return-1}return 0})}class _e extends le{constructor(t){super();let n=[...t.terminals];if(this.re=t.re_module,!t.skip_validation){for(const i of n){try{this.re.compile(i.pattern.to_regexp(),t.g_regex_flags)}catch(s){throw s instanceof this.re.error?new X(h("Cannot compile token %s: %s",i.name,i.pattern)):s}if(i.pattern.min_width===0)throw new X(h("Lexer does not allow zero-width terminals. (%s: %s)",i.name,i.pattern))}if(!(new Set(t.ignore)<=new Set(n.map(i=>i.name))))throw new X(h("Ignore terminals are not defined: %s",nt(new Set(t.ignore),new Set(n.map(i=>i.name)))))}this.newline_types=ne(n.filter(i=>Bn(i.pattern.to_regexp())).map(i=>i.name)),this.ignore_types=ne(t.ignore),Zn(n,i=>[-i.priority,-i.pattern.max_width,-i.pattern.value.length,i.name]),this.terminals=n,this.user_callbacks=t.callbacks,this.g_regex_flags=t.g_regex_flags,this.use_bytes=t.use_bytes,this.terminals_by_name=t.terminals_by_name,this._scanner=null}_build_scanner(){let t;[t,this.callback]=Fn(this.terminals,this.g_regex_flags,this.re,this.use_bytes);for(const[n,i]of v(this.user_callbacks))n in this.callback?this.callback[n]=new Un(this.callback[n],i,s=>s.type===n):this.callback[n]=i;this._scanner=new Je(t,this.g_regex_flags,this.re,this.use_bytes)}get scanner(){return this._scanner===null&&this._build_scanner(),this._scanner}match(t,n){return this.scanner.match(t,n)}*lex(t,n){try{for(;;)yield this.next_token(t,n)}catch(i){if(!(i instanceof we))throw i}}next_token(t,n=null){let i,s,a,o,l=t.line_ctr;for(;l.char_pos<t.text.length;){if(s=this.match(t.text,l.char_pos),!s)throw i=nt(this.scanner.allowed_types,this.ignore_types),i||(i=new Set(["<END-OF-FILE>"])),new M({seq:t.text,lex_pos:l.char_pos,line:l.line,column:l.column,allowed:i,token_history:t.last_token&&[t.last_token],state:n,terminals_by_name:this.terminals_by_name});let[p,_]=s;if(this.ignore_types.has(_))_ in this.callback&&(o=new g(_,p,l.char_pos,l.line,l.column),this.callback[_](o)),l.feed(p,this.newline_types.has(_));else{if(a=new g(_,p,l.char_pos,l.line,l.column),l.feed(p,this.newline_types.has(_)),a.end_line=l.line,a.end_column=l.column,a.end_pos=l.char_pos,a.type in this.callback&&(a=this.callback[a.type](a),!(a instanceof g)))throw new X(h("Callbacks must return a token (returned %r)",a));return t.last_token=a,a}}throw new we(this)}}class Gn extends le{constructor({conf:t,states:n,always_accept:i=[]}={}){super();let s,a,o,l=[...t.terminals],p=t.terminals_by_name,_=I(t);_.terminals=l;let c=new Map;this.lexers={};for(let[m,f]of v(n))s=ne(f),c.has(s)?a=c.get(s):(f=bn(new Set(f),[...new Set(t.ignore),...new Set(i)]),o=I(_),o.terminals=[...f].filter(x=>x in p).map(x=>p[x]),a=new _e(o),c.set(s,a)),this.lexers[m]=a;this.root_lexer=new _e(_)}*lex(t,n){let i,s,a;try{for(;;)s=this.lexers[n.position],yield s.next_token(t,n)}catch(o){if(!(o instanceof we))if(o instanceof M)try{throw i=t.last_token,a=this.root_lexer.next_token(t,n),new j({token:a,expected:o.allowed,state:n,token_history:[i],terminals_by_name:this.root_lexer.terminals_by_name})}catch(l){throw l}else throw o}}}class ct extends N{static get __serialize_fields__(){return["terminals","ignore","g_regex_flags","use_bytes","lexer_type"]}static get __serialize_namespace__(){return[oe]}constructor({terminals:t,re_module:n,ignore:i=[],postlex:s=null,callbacks:a=null,g_regex_flags:o="",skip_validation:l=!1,use_bytes:p=!1}={}){super(),this.terminals=t,this.terminals_by_name=Object.fromEntries(this.terminals.map(_=>[_.name,_])),this.ignore=i,this.postlex=s,this.callbacks=Object.keys(a).length||{},this.g_regex_flags=o,this.re_module=n,this.skip_validation=l,this.use_bytes=p,this.lexer_type=null}_deserialize(){this.terminals_by_name=Object.fromEntries(this.terminals.map(t=>[t.name,t]))}}class pt extends N{static get __serialize_fields__(){return["rules","start","parser_type"]}constructor(t,n,i){super(),this.rules=t,this.callbacks=n,this.start=i,this.parser_type=null}}class Wn{constructor(t){this.node_builder=t}__call__(t){return t.length===1?t[0]:this.node_builder(t)}}const Vn=P(Wn);class Xn{constructor(t,n=null){this.node_builder=t,this.node_filter=n}__call__(t){let n,i,s,a=this.node_builder(t);return a instanceof w&&(s=a.meta,n=this._pp_get_meta(t),n!==null&&("line"in s||(s.line=n&&n.container_line||n.line,s.column=n&&n.container_column||n.column,s.start_pos=n&&n.container_start_pos||n.start_pos,s.empty=!1),s.container_line=n&&n.container_line||n.line,s.container_column=n&&n.container_column||n.column),i=this._pp_get_meta([...t].reverse()),i!==null&&("end_line"in s||(s.end_line=i&&i.container_end_line||i.end_line,s.end_column=i&&i.container_end_column||i.end_column,s.end_pos=i&&i.container_end_pos||i.end_pos,s.empty=!1),s.container_end_line=i&&i.container_end_line||i.end_line,s.container_end_column=i&&i.container_end_column||i.end_column)),a}_pp_get_meta(t){for(const n of t)if(!(this.node_filter!==null&&!this.node_filter(n))){if(n instanceof w){if(!n.meta.empty)return n.meta}else if(n instanceof g)return n}}}const ut=P(Xn);function Hn(r){if(Nn(r))return re({unknown_param_0:ut,node_filter:r});if(r===!0)return ut;if(r===!1)return null;throw new S(h("Invalid option for propagate_positions: %r",r))}class Se{constructor(t,n,i){this.node_builder=i,this.to_include=t,this.append_none=n}__call__(t){let n=[];for(const[i,s,a]of this.to_include)a&&n.push(...O([null],a)),s?n.push(...t[i].children):n.push(t[i]);return this.append_none&&n.push(...O([null],this.append_none)),this.node_builder(n)}}const Jn=P(Se);class Yn extends Se{__call__(t){let n=[];for(const[i,s,a]of this.to_include)a&&n.push(...O([null],a)),s?n.length?n.push(...t[i].children):n=t[i].children:n.push(t[i]);return this.append_none&&n.push(...O([null],this.append_none)),this.node_builder(n)}}const Kn=P(Yn);class er extends Se{constructor(t,n){super(),this.node_builder=n,this.to_include=t}__call__(t){let n=[];for(const[i,s]of this.to_include)s?n.length?n.push(...t[i].children):n=t[i].children:n.push(t[i]);return this.node_builder(n)}}const tr=P(er);function nr(r){return!r.is_term&&r.name.startsWith("_")}function rr(r,t,n,i){let s,a;i.length?(a=i.map(p=>(0+p).toString()).join(""),s=a.split("0").map(p=>p.length)):s=O([0],r.length+1);let o=[],l=0;for(const[p,_]of V(r))l+=s[p],(t||!(_.is_term&&_.filter_out))&&(o.push([p,nr(_),l]),l=0);if(l+=s[r.length],i.length||o.length<r.length||Rn(o.map(([p,_,c])=>_)))return(i.length||n).length?re(n?Jn:Kn,o,l):re(tr,o.map(([p,_,c])=>[p,_]))}function ir(r){function t(n){let i=new w(r.name,n);return r(i)}return t=wraps(r)(t),t}function sr(r,t,n){if(n===_vargs_meta||n===_vargs_meta_inline)throw new NotImplementedError("Meta args not supported for internal transformer");function i(s){return n(r,t,s,null)}return i=wraps(r)(i),i}class ar{constructor(t,n,i=!1,s=!1,a=!1){this.tree_class=n,this.propagate_positions=i,this.ambiguous=s,this.maybe_placeholders=a,this.rule_builders=[...this._init_builders(t)]}*_init_builders(t){let n,i,s,a,o=Hn(this.propagate_positions);for(const l of t)s=l.options,i=s.keep_all_tokens,n=s.expand1,a=[...st(null,[n&&!l.alias&&Vn,rr(l.expansion,i,this.ambiguous,this.maybe_placeholders?s.empty_indices:[]),o])],yield[l,a]}create_callback(t=null){let n,i,s,a=new Map;for(const[o,l]of this.rule_builders){i=o.alias||o.options.template_source||o.origin.name,t&&t[i]?(n=t&&t[i],s=n&&n.visit_wrapper||null,s!==null?n=sr(n,i,s):t instanceof lt&&(n=ir(n))):n=re(this.tree_class,i);for(const p of l)n=p(n);if(a.has(o))throw new ie(h("Rule '%s' already exists",o));a.set(o,n)}return a}}class dt extends N{constructor({parser_conf:t,debug:n=!1}={}){super();let i=new LALR_Analyzer({unknown_param_0:t,debug:n});i.compute_lalr();let s=t.callbacks;this._parse_table=i.parse_table,this.parser_conf=t,this.parser=new ht(i.parse_table,s,n)}static deserialize(t,n,i,s=!1){let a=ge(this);return a._parse_table=_r.deserialize(t,n),a.parser=new ht(a._parse_table,i,s),a}serialize(t){return this._parse_table.serialize(t)}parse_interactive(t,n){return this.parser.parse({lexer:t,start:n,start_interactive:!0})}parse({lexer:t,start:n,on_error:i=null}={}){let s,a;try{return this.parser.parse({lexer:t,start:n})}catch(o){if(o instanceof z){if(i===null)throw o;for(;;){if(o instanceof M&&(a=o.interactive_parser.lexer_thread.state,s=a.line_ctr.char_pos),!i(o))throw o;o instanceof M&&s===a.line_ctr.char_pos&&a.line_ctr.feed(a.text.slice(s,s+1));try{return o.interactive_parser.resume_parse()}catch(l){if(l instanceof j){if(o instanceof j&&o.token.type===l.token.type&&l.token.type==="$END"&&o.interactive_parser.eq(l.interactive_parser))throw l;o=l}else if(l instanceof M)o=l;else throw l}}}else throw o}}}class or{constructor(t,n,i){this.parse_table=t,this.start_state=this.parse_table.start_states[i],this.end_state=this.parse_table.end_states[i],this.states=this.parse_table.states,this.callbacks=n,this.start=i}}class Fe{constructor(t,n,i=null,s=null){this.parse_conf=t,this.lexer=n,this.state_stack=i||[this.parse_conf.start_state],this.value_stack=s||[]}get position(){return E(this.state_stack)}eq(t){return t instanceof Fe?this.state_stack.length===t.state_stack.length&&this.position===t.position:W}copy(){return I(this)}feed_token(t,n=!1){let i,s,a,o,l,p,_,c,m,f,x=this.state_stack,d=this.value_stack,u=this.parse_conf.states,y=this.parse_conf.end_state,b=this.parse_conf.callbacks;for(;;){if(m=E(x),t.type in u[m])[s,a]=u[m][t.type];else throw o=new Set(ye(u[m]).filter(q=>at(q)).map(q=>q)),new j({token:t,expected:o,state:this,interactive_parser:null});if(s===$e){x.push(a),d.push(t.type in b?b[t.type](t):t);return}else if(p=a,c=p.expansion.length,c?(_=d.slice(-c),x.splice(-c),d.splice(-c)):_=[],f=b.get(p)(_),[i,l]=u[E(x)][p.origin.name],x.push(l),d.push(f),n&&E(x)===y)return E(d)}}}class ht{constructor(t,n,i=!1){this.parse_table=t,this.callbacks=n,this.debug=i}parse({lexer:t,start:n,value_stack:i=null,state_stack:s=null,start_interactive:a=!1}={}){let o=new or(this.parse_table,this.callbacks,n),l=new Fe(o,t,s,i);return a?new D(this,l,l.lexer):this.parse_from_state(l)}parse_from_state(t){let n,i;try{i=null;for(i of t.lexer.lex(t))t.feed_token(i);return n=i?g.new_borrow_pos("$END","",i):new g("$END","",0,1,1),t.feed_token(n,!0)}catch(s){if(s instanceof z){try{s.interactive_parser=new D(this,t,t.lexer)}catch(a){if(!(a instanceof ReferenceError))throw a}throw s}else if(s instanceof Error){if(this.debug){console.log(""),console.log("STATE STACK DUMP"),console.log("----------------");for(const[a,o]of V(t.state_stack))console.log(h("%d)",a),o);console.log("")}throw s}else throw s}}}class D{constructor(t,n,i){this.parser=t,this.parser_state=n,this.lexer_thread=i,this.result=null}feed_token(t){return this.parser_state.feed_token(t,t.type==="$END")}*iter_parse(){for(const t of this.lexer_thread.lex(this.parser_state))yield t,this.result=this.feed_token(t)}exhaust_lexer(){return[...this.iter_parse()]}feed_eof(t=null){let n=t!==null?g.new_borrow_pos("$END","",t):new g("$END","",0,1,1);return this.feed_token(n)}copy(){return I(this)}eq(t){return t instanceof D?this.parser_state===t.parser_state&&this.lexer_thread===t.lexer_thread:!1}as_immutable(){let t=I(this);return new mt(t.parser,t.parser_state,t.lexer_thread)}pretty(){let t=["Parser choices:"];for(const[n,i]of v(this.choices()))t.push(h(" - %s -> %r",n,i));return t.push(h("stack size: %s",this.parser_state.state_stack.length)),t.join(`
|
|
20
|
-
`)}choices(){return this.parser_state.parse_conf.parse_table.states[this.parser_state.position]}accepts(){let t,n=new Set;for(const i of this.choices())if(at(i)){t=I(this);let s=null;try{t.feed_token(new g(i,""))}catch(a){if(s=a,!(a instanceof j))throw a}s||n.add(i)}return n}resume_parse(){return this.parser.parse_from_state(this.parser_state)}}class mt extends D{constructor(){super(...arguments),k(this,"result",null)}feed_token(t){let n=I(this);return n.result=D.feed_token(n,t),n}exhaust_lexer(){let t=this.as_mutable();return t.exhaust_lexer(),t.as_immutable()}as_mutable(){let t=I(this);return new D(t.parser,t.parser_state,t.lexer_thread)}}class ft{constructor(t){this.name=t}repr(){return this.toString()}}var $e=new ft("Shift"),yt=new ft("Reduce");class lr{constructor(t,n,i){this.states=t,this.start_states=n,this.end_states=i}serialize(t){let n=new Enumerator,i=Object.fromEntries(v(this.states).map(([s,a])=>[s,Object.fromEntries(v(a).map(([o,[l,p]])=>[et(n,o),l===yt?[1,p.serialize(t)]:[0,p]]))]));return{tokens:n.reversed(),states:i,start_states:this.start_states,end_states:this.end_states}}static deserialize(t,n){const i=this;let s=t.tokens,a=Object.fromEntries(v(t.states).map(([o,l])=>[o,Object.fromEntries(v(l).map(([p,[_,c]])=>[s[p],_===1?[yt,Z.deserialize(c,n)]:[$e,c]]))]));return new i(a,t.start_states,t.end_states)}}class _r extends lr{static from_ParseTable(t){const n=this;let i=[...t.states],s=Object.fromEntries(V(i).map(([p,_])=>[_,p])),a={};for(let[p,_]of v(t.states))_=Object.fromEntries(v(_).map(([c,m])=>[c,m[0]===$e?[m[0],s[m[1]]]:m])),a[s[p]]=_;let o=Object.fromEntries(v(t.start_states).map(([p,_])=>[p,s[_]])),l=Object.fromEntries(v(t.end_states).map(([p,_])=>[p,s[_]]));return new n(a,o,l)}}function cr(r){if(r&&r.__future_interface__)return r;{class t extends le{constructor(i){super(),this.lexer=r(i)}lex(i,s){return this.lexer.lex(i.text)}}return t}}function pr(r,t,n,i,s){let a=pt.deserialize(r.parser_conf,t),o=dt.deserialize(r.parser,t,i,s.debug);return a.callbacks=i,new ur({lexer_conf:n,parser_conf:a,options:s,parser:o})}var gt={};class ur extends N{static get __serialize_fields__(){return["lexer_conf","parser_conf","parser"]}constructor({lexer_conf:t,parser_conf:n,options:i,parser:s=null}={}){super();let a,o;this.parser_conf=n,this.lexer_conf=t,this.options=i,s?this.parser=s:(o=et(gt,n.parser_type),this.parser=o(t,n,i));let l=t.lexer_type;if(this.skip_lexer=!1,["dynamic","dynamic_complete"].includes(l)){this.skip_lexer=!0;return}const p={basic:fr,contextual:yr};l in p?(a=p[l],this.lexer=a(t,this.parser,t.postlex,i)):this.lexer=cr(l)(t),t.postlex&&(this.lexer=new mr(this.lexer,t.postlex))}_verify_start(t=null){let n;if(t===null){if(n=this.parser_conf.start,n.length>1)throw new S("Lark initialized with more than 1 possible start rule. Must specify which start rule to parse",n);[t]=n}else if(!this.parser_conf.start.includes(t))throw new S(h("Unknown start rule %s. Must be one of %r",t,this.parser_conf.start));return t}_make_lexer_thread(t){return this.skip_lexer?t:_t.from_text(this.lexer,t)}parse(t,n=null,i=null){let s=this._verify_start(n),a=i===null?{}:{on_error:i},o=this._make_lexer_thread(t);return this.parser.parse({lexer:o,start:s,...a})}parse_interactive(t=null,n=null){let i=this._verify_start(n);if(this.parser_conf.parser_type!=="lalr")throw new S("parse_interactive() currently only works with parser='lalr' ");let s=this._make_lexer_thread(t);return this.parser.parse_interactive(s,i)}}function dr(r,t){let n;be(r,["lalr","earley","cyk"]),typeof t!="object"&&(n={lalr:["basic","contextual"],earley:["basic","dynamic","dynamic_complete"],cyk:["basic"]}[r],be(t,n,h("Parser %r does not support lexer %%r, expected one of %%s",r)))}function hr(r,t){let n,i={};for(const s of t)n=r&&r[s.name]||null,n!==null&&(i[s.name]=n);return i}class mr{constructor(t,n){this.lexer=t,this.postlexer=n}lex(t,n){let i=this.lexer.lex(t,n);return this.postlexer.process(i)}}function fr(r,t,n,i){return new _e(r)}function yr(r,t,n,i){let s=Object.fromEntries(v(t._parse_table.states).map(([o,l])=>[o,[...ye(l)]])),a=n?n.always_accept:[];return new Gn({conf:r,states:s,always_accept:a})}function gr(r,t,n=null){let i=n?n.debug:!1;return new dt({parser_conf:t,debug:i})}gt.lalr=gr;class xt extends Ke{constructor(){super(...arguments),k(this,"always_accept",[])}process(t){return t}}class xr extends N{constructor(t){super(),k(this,"OPTIONS_DOC",'\n **=== General Options ===**\n\n start\n The start symbol. Either a string, or a list of strings for multiple possible starts (Default: "start")\n debug\n Display debug information and extra warnings. Use only when debugging (Default: ``False``)\n When used with Earley, it generates a forest graph as "sppf.png", if \'dot\' is installed.\n transformer\n Applies the transformer to every parse tree (equivalent to applying it after the parse, but faster)\n propagate_positions\n Propagates (line, column, end_line, end_column) attributes into all tree branches.\n Accepts ``False``, ``True``, or a callable, which will filter which nodes to ignore when propagating.\n maybe_placeholders\n When ``True``, the ``[]`` operator returns ``None`` when not matched.\n When ``False``, ``[]`` behaves like the ``?`` operator, and returns no value at all.\n (default= ``True``)\n cache\n Cache the results of the Lark grammar analysis, for x2 to x3 faster loading. LALR only for now.\n\n - When ``False``, does nothing (default)\n - When ``True``, caches to a temporary file in the local directory\n - When given a string, caches to the path pointed by the string\n regex\n When True, uses the ``regex`` module instead of the stdlib ``re``.\n g_regex_flags\n Flags that are applied to all terminals (both regex and strings)\n keep_all_tokens\n Prevent the tree builder from automagically removing "punctuation" tokens (Default: ``False``)\n tree_class\n Lark will produce trees comprised of instances of this class instead of the default ``lark.Tree``.\n\n **=== Algorithm Options ===**\n\n parser\n Decides which parser engine to use. Accepts "earley" or "lalr". (Default: "earley").\n (there is also a "cyk" option for legacy)\n lexer\n Decides whether or not to use a lexer stage\n\n - "auto" (default): Choose for me based on the parser\n - "basic": Use a basic lexer\n - "contextual": Stronger lexer (only works with parser="lalr")\n - "dynamic": Flexible and powerful (only with parser="earley")\n - "dynamic_complete": Same as dynamic, but tries *every* variation of tokenizing possible.\n ambiguity\n Decides how to handle ambiguity in the parse. Only relevant if parser="earley"\n\n - "resolve": The parser will automatically choose the simplest derivation\n (it chooses consistently: greedy for tokens, non-greedy for rules)\n - "explicit": The parser will return all derivations wrapped in "_ambig" tree nodes (i.e. a forest).\n - "forest": The parser will return the root of the shared packed parse forest.\n\n **=== Misc. / Domain Specific Options ===**\n\n postlex\n Lexer post-processing (Default: ``None``) Only works with the basic and contextual lexers.\n priority\n How priorities should be evaluated - "auto", ``None``, "normal", "invert" (Default: "auto")\n lexer_callbacks\n Dictionary of callbacks for the lexer. May alter tokens during lexing. Use with caution.\n use_bytes\n Accept an input of type ``bytes`` instead of ``str``.\n edit_terminals\n A callback for editing the terminals before parse.\n import_paths\n A List of either paths or loader functions to specify from where grammars are imported\n source_path\n Override the source of from where the grammar was loaded. Useful for relative imports and unconventional grammar loading\n **=== End of Options ===**\n '),k(this,"_defaults",{debug:!1,keep_all_tokens:!1,tree_class:null,cache:!1,postlex:null,parser:"earley",lexer:"auto",transformer:null,start:"start",priority:"auto",ambiguity:"auto",regex:!1,propagate_positions:!1,lexer_callbacks:{},maybe_placeholders:!0,edit_terminals:null,g_regex_flags:"",use_bytes:!1,import_paths:[],source_path:null,_plugins:null});let n,i=rt(t),s=this;for(const[a,o]of v(this._defaults))a in i?(n=vn(i,a),typeof o=="boolean"&&!["cache","use_bytes","propagate_positions"].includes(a)&&(n=it(n))):n=o,s[a]=n;if(typeof s.start=="string"&&(s.start=[s.start]),this.options=s,be(this.parser,["earley","lalr","cyk",null]),this.parser==="earley"&&this.transformer)throw new S("Cannot specify an embedded transformer when using the Earley algorithm. Please use your transformer on the resulting parse tree, or use a different algorithm (i.e. LALR)");if(Object.keys(i).length)throw new S(h("Unknown options: %s",ye(i)))}serialize(t){return this.options}static deserialize(t,n){const i=this;return new i(t)}}class wt extends N{static get __serialize_fields__(){return["parser","rules","options"]}_build_lexer(t=!1){let n=this.lexer_conf;return t&&(n=I(n),n.ignore=[]),new _e(n)}_prepare_callbacks(){this._callbacks=new Map,this.options.ambiguity!=="forest"&&(this._parse_tree_builder=new ar(this.rules,this.options.tree_class||Tn(w),this.options.propagate_positions,this.options.parser!=="lalr"&&this.options.ambiguity==="explicit",this.options.maybe_placeholders),this._callbacks=this._parse_tree_builder.create_callback(this.options.transformer)),tt(this._callbacks,hr(this.options.transformer,this.terminals))}_deserialize_lexer_conf(t,n,i){let s=ct.deserialize(t.lexer_conf,n);return s.callbacks=i.lexer_callbacks||{},s.re_module=i.regex?regex:He,s.use_bytes=i.use_bytes,s.g_regex_flags=i.g_regex_flags||"",s.skip_validation=!0,s.postlex=i.postlex,s}_load({f:t,...n}={}){let i;xe(t)?i=t:i=pickle.load(t);let s=i.memo,a=i.data,o=Sn.deserialize(s,{Rule:Z,TerminalDef:oe},{}),l=rt(a.options);return tt(l,n),this.options=xr.deserialize(l,o),this.rules=a.rules.map(p=>Z.deserialize(p,o)),this.source_path="<deserialized>",dr(this.options.parser,this.options.lexer),this.lexer_conf=this._deserialize_lexer_conf(a.parser,o,this.options),this.terminals=this.lexer_conf.terminals,this._prepare_callbacks(),this._terminals_dict=Object.fromEntries(this.terminals.map(p=>[p.name,p])),this.parser=pr(a.parser,o,this.lexer_conf,this._callbacks,this.options),this}static _load_from_dict({data:t,memo:n,...i}={}){return ge(this)._load({f:{data:t,memo:n},...i})}repr(){return h("Lark(open(%r), parser=%r, lexer=%r, ...)",this.source_path,this.options.parser,this.options.lexer)}lex(t,n=!1){let i;!("lexer"in this)||n?i=this._build_lexer(n):i=this.lexer;let s=_t.from_text(i,t).lex(null);return this.options.postlex?this.options.postlex.process(s):s}get_terminal(t){return this._terminals_dict[t]}parse_interactive(t=null,n=null){return this.parser.parse_interactive({unknown_param_0:t,start:n})}parse(t,n=null,i=null){return this.parser.parse(t,n,i)}}class vt extends A{}class Tt extends xt{constructor(){super(),this.paren_level=0,this.indent_level=[0]}*handle_NL(t){if(this.paren_level>0)return;yield t;let n=ve(t.value,`
|
|
21
|
-
`,1)[1],i=
|
|
22
|
-
])+`,flags:[],_width:[1,4294967295],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},1:{name:"IDENTIFIER",pattern:{value:"[a-zA-Z][a-zA-Z0-9_]*[a-zA-Z0-9]",flags:[],_width:[2,4294967295],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},2:{name:"INT",pattern:{value:"-?[0-9]+",flags:[],_width:[1,4294967295],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},3:{name:"STRING",pattern:{value:`(?:'[^\\']*'|"[^"]*")`,flags:[],_width:[2,4294967295],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},4:{name:"OPERATOR",pattern:{value:"(?:regex_matches|not_contains|contains|==|!=|<=|>=|<|>)",flags:[],_width:[1,13],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},5:{name:"CONJUNCTION",pattern:{value:"(?:and|or)",flags:[],_width:[2,3],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},6:{name:"NEGATION",pattern:{value:"!",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},7:{name:"TRUE",pattern:{value:"true",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},8:{name:"FALSE",pattern:{value:"false",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},9:{name:"LPAR",pattern:{value:"(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},10:{name:"RPAR",pattern:{value:")",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},11:{name:"__ANON_0",pattern:{value:"selected_value(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},12:{name:"__ANON_1",pattern:{value:"selected(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},13:{name:"__ANON_2",pattern:{value:"text(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},14:{name:"__ANON_3",pattern:{value:"text_ignore_case(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},15:{name:"__ANON_4",pattern:{value:"count_selected(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},16:{name:"__ANON_5",pattern:{value:"count_choice_selections(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},17:{name:"LSQB",pattern:{value:"[",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},18:{name:"__ANON_6",pattern:{value:"])",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},19:{name:"RSQB",pattern:{value:"]",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},20:{name:"DOT",pattern:{value:".",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},21:{origin:{name:"start",__type__:"NonTerminal"},expansion:[{name:"top_level_expr",__type__:"NonTerminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},22:{origin:{name:"start",__type__:"NonTerminal"},expansion:[{name:"bool_expr",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},23:{origin:{name:"top_level_expr",__type__:"NonTerminal"},expansion:[{name:"LPAR",filter_out:!0,__type__:"Terminal"},{name:"bool_expr",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},24:{origin:{name:"top_level_expr",__type__:"NonTerminal"},expansion:[{name:"LPAR",filter_out:!0,__type__:"Terminal"},{name:"bool_expr",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"CONJUNCTION",filter_out:!1,__type__:"Terminal"},{name:"top_level_expr",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},25:{origin:{name:"bool_expr",__type__:"NonTerminal"},expansion:[{name:"condition",__type__:"NonTerminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},26:{origin:{name:"bool_expr",__type__:"NonTerminal"},expansion:[{name:"condition",__type__:"NonTerminal"},{name:"CONJUNCTION",filter_out:!1,__type__:"Terminal"},{name:"bool_expr",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},27:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"bool_const",__type__:"NonTerminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},28:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_selected_value",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},29:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_mc_selected",__type__:"NonTerminal"}],order:2,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},30:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_mc_text",__type__:"NonTerminal"}],order:3,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},31:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_mc_text_ignore_case",__type__:"NonTerminal"}],order:4,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},32:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_mc_count",__type__:"NonTerminal"}],order:5,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},33:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_matrix_selected",__type__:"NonTerminal"}],order:6,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},34:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_matrix_count",__type__:"NonTerminal"}],order:7,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},35:{origin:{name:"qc_selected_value",__type__:"NonTerminal"},expansion:[{name:"__ANON_0",filter_out:!0,__type__:"Terminal"},{name:"question_or_matrix_statement_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},36:{origin:{name:"qc_mc_selected",__type__:"NonTerminal"},expansion:[{name:"NEGATION",filter_out:!1,__type__:"Terminal"},{name:"__ANON_1",filter_out:!0,__type__:"Terminal"},{name:"mc_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},37:{origin:{name:"qc_mc_selected",__type__:"NonTerminal"},expansion:[{name:"__ANON_1",filter_out:!0,__type__:"Terminal"},{name:"mc_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},38:{origin:{name:"qc_mc_text",__type__:"NonTerminal"},expansion:[{name:"__ANON_2",filter_out:!0,__type__:"Terminal"},{name:"mc_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"STRING",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},39:{origin:{name:"qc_mc_text_ignore_case",__type__:"NonTerminal"},expansion:[{name:"__ANON_3",filter_out:!0,__type__:"Terminal"},{name:"mc_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"STRING",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},40:{origin:{name:"qc_mc_count",__type__:"NonTerminal"},expansion:[{name:"__ANON_4",filter_out:!0,__type__:"Terminal"},{name:"question_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},41:{origin:{name:"qc_matrix_selected",__type__:"NonTerminal"},expansion:[{name:"NEGATION",filter_out:!1,__type__:"Terminal"},{name:"__ANON_1",filter_out:!0,__type__:"Terminal"},{name:"matrix_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},42:{origin:{name:"qc_matrix_selected",__type__:"NonTerminal"},expansion:[{name:"__ANON_1",filter_out:!0,__type__:"Terminal"},{name:"matrix_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},43:{origin:{name:"qc_matrix_count",__type__:"NonTerminal"},expansion:[{name:"__ANON_5",filter_out:!0,__type__:"Terminal"},{name:"question_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"},{name:"__ANON_6",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},44:{origin:{name:"qc_matrix_count",__type__:"NonTerminal"},expansion:[{name:"__ANON_5",filter_out:!0,__type__:"Terminal"},{name:"question_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"},{name:"__ANON_6",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},45:{origin:{name:"question_selector",__type__:"NonTerminal"},expansion:[{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},46:{origin:{name:"mc_choice_selector",__type__:"NonTerminal"},expansion:[{name:"question_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"},{name:"RSQB",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},47:{origin:{name:"mc_choice_selector",__type__:"NonTerminal"},expansion:[{name:"question_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"},{name:"RSQB",filter_out:!0,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},48:{origin:{name:"matrix_statement_selector",__type__:"NonTerminal"},expansion:[{name:"question_selector",__type__:"NonTerminal"},{name:"DOT",filter_out:!0,__type__:"Terminal"},{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},49:{origin:{name:"matrix_choice_selector",__type__:"NonTerminal"},expansion:[{name:"matrix_statement_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"},{name:"RSQB",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},50:{origin:{name:"matrix_choice_selector",__type__:"NonTerminal"},expansion:[{name:"matrix_statement_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"},{name:"RSQB",filter_out:!0,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},51:{origin:{name:"question_or_matrix_statement_selector",__type__:"NonTerminal"},expansion:[{name:"question_selector",__type__:"NonTerminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},52:{origin:{name:"question_or_matrix_statement_selector",__type__:"NonTerminal"},expansion:[{name:"matrix_statement_selector",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},53:{origin:{name:"bool_const",__type__:"NonTerminal"},expansion:[{name:"TRUE",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},54:{origin:{name:"bool_const",__type__:"NonTerminal"},expansion:[{name:"FALSE",filter_out:!1,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"}};const Nr="(?<questionId>[a-zA-Z][a-zA-Z0-9_]*)",Rr="((?<expressionWithoutIdentifier>all|all_entered_text|selected|selected_entered_text|not_selected)|(?<expressionWithIdentifier>for_matrix_choice|unselected_for_matrix_choice)(\\((?<identifier>[\\-a-zA-Z0-9_]+)\\)))",bt=new RegExp(`^${Nr}/${Rr}$`);var T=(r=>(r.ALL="all",r.ALL_ENTERED_TEXT="all_entered_text",r.SELECTED="selected",r.SELECTED_ENTERED_TEXT="selected_entered_text",r.NOT_SELECTED="not_selected",r.FOR_MATRIX_CHOICE="for_matrix_choice",r.UNSELECTED_FOR_MATRIX_CHOICE="unselected_for_matrix_choice",r))(T||{});const Et=r=>bt.test(r),L=r=>{var t;const n=(t=r.match(bt))==null?void 0:t.groups;if(!n)throw new Error(`Invalid locator expression: ${r}`);const i=n.expressionWithoutIdentifier||n.expressionWithIdentifier||"all",s={questionId:n.questionId,expression:i};if(n.identifier){const a=isNaN(parseInt(n.identifier,10))?n.identifier:parseInt(n.identifier,10);s.identifier=a}return s},ce=(r,t="camelCase")=>{const n=t==="camelCase"?ee.default.camelCase:ee.default.snakeCase;return ee.default.transform(r,(i,s,a)=>{const o=typeof a=="string"?n(a):a;i[o]=ee.default.isObject(s)?ce(s,t):s})};function kr(r){const t=structuredClone(r);return{...t,...t.template,sections:t.sections.map(n=>({...ce(n),pages:n.pages.map((i,s)=>({...i,id:`${n.id}-${s}`,questions:Ir(t,n,i.questions)}))}))}}function Ir(r,t,n){return n.map(i=>qr(r.template.id,t,i))}function qr(r,t,n){var i,s;return{...ce({...n,choiceGroups:(i=n.choice_groups)==null?void 0:i.map(a=>({...a,randomization:ze(a.randomization)})),statementGroups:(s=n.statement_groups)==null?void 0:s.map(a=>({...a,randomization:ze(a.randomization)})),randomization:ze(n.randomization)}),id:Rt(r,n),type:kt(n.type),layout:Or(n.layout),required:Ar(n.required),label:t.name}}function ze(r){var t;return r?{type:Nt(r.type),order:(t=r.order)==null?void 0:t.split(" "),total:r.total}:void 0}function Nt(r){return r.toUpperCase()}function Rt(r,t){return`${r}.${t.id}`}const De=r=>r.split(".").pop();function kt(r="description"){return r.replace("-","_").toUpperCase()}function Or(r){return r==null?void 0:r.toUpperCase()}function Ar(r="optional"){return r.replace("-","_").toUpperCase()}function It(r){return structuredClone(r).sections.flatMap(t=>t.pages.flatMap(n=>n.questions))}var Sr=Object.defineProperty,$r=(r,t,n)=>t in r?Sr(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n,U=(r,t,n)=>($r(r,typeof t!="symbol"?t+"":t,n),n),zr=(r,t,n)=>{if(!t.has(r))throw TypeError("Cannot "+n)},qt=(r,t,n)=>{if(t.has(r))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(r):t.set(r,n)},J=(r,t,n)=>(zr(r,t,"access private method"),n),Y,pe,ue,Pe;const Le=/\$\{q\:(?<locator>[\-a-zA-Z0-9_\/\(\)]+)\}/g,Ot=r=>{var t,n;return(n=(t=r.choiceId)!=null?t:r.choiceValue)!=null?n:r.text};class de{constructor(t,n=[],i="",s=!1){qt(this,Y),qt(this,ue),U(this,"questions",new Map),U(this,"responsesByQuestion",new Map),U(this,"responsesByQuestionStatement",new Map),U(this,"hashSalt"),U(this,"forExport"),U(this,"evaluationCache",new Map),this.questions=new Map((t?It(t):[]).filter(a=>a.id).map(a=>[De(a.id),a])),n.filter(a=>a.singleAnswer||a.multipleAnswers).forEach(a=>{const o=De(a.questionId);this.responsesByQuestion.set(o,[...this.responsesByQuestion.get(o)||[],a]),a.statementId&&this.responsesByQuestionStatement.set(`${o}.${a.statementId}`,a)}),this.hashSalt=i,this.forExport=s}getQuestionAnswers(t,n){let i;if(n){const s=this.responsesByQuestionStatement.get(`${t}.${n}`);i=s===void 0?[]:[s]}else i=this.responsesByQuestion.get(t)||[];return i.flatMap(s=>{const{multipleAnswers:a,singleAnswer:o}=s;return a||[o]})}evaluateDisplayLogic(t){if(t&&!this.forExport)try{const n=this.evaluationCache.get(t);if(n!==void 0)return n;const i=Qe(t,this);return this.evaluationCache.set(t,i),i}catch(n){return console.error(n),!1}return!0}evaluateDynamicExpression(t,n){const i=this.questions.get(t.questionId);if(!i)return[];const s=this.getQuestionChoicesFlattened(i),a=s.filter(c=>this.isSelected({questionId:t.questionId,choice:c.id||c.value})),o=this.getQuestionStatementsFlattened(i),l=c=>n==="choices"?c:{...c,id:c.id||c.value||c.display},p=c=>({id:c.id,display:c.display,value:c.value});let _=[];switch(t.expression){case T.ALL:_=s.map(l);break;case T.ALL_ENTERED_TEXT:_=s.map(c=>l(J(this,ue,Pe).call(this,c,t)));break;case T.SELECTED:_=a;break;case T.SELECTED_ENTERED_TEXT:_=a.map(c=>l(J(this,ue,Pe).call(this,c,t)));break;case T.NOT_SELECTED:_=s.filter(c=>!this.isSelected({questionId:t.questionId,choice:c.id||c.value})).map(l);break;case T.FOR_MATRIX_CHOICE:_=o.filter(c=>this.isSelected({questionId:t.questionId,statementId:c.id,choice:t.identifier}));break;case T.UNSELECTED_FOR_MATRIX_CHOICE:_=o.filter(c=>!this.isSelected({questionId:t.questionId,statementId:c.id,choice:t.identifier}));break;default:_=[]}return this.forExport&&(_=t.expression===T.FOR_MATRIX_CHOICE||t.expression===T.UNSELECTED_FOR_MATRIX_CHOICE?o:s.map(l)),_.map(p)}isSelected(t){return!!J(this,Y,pe).call(this,t.questionId,t.statementId,t.choice).length}countSelected(t){return this.getQuestionAnswers(t).length}selectedValue(t){const n=this.getQuestionAnswers(t.questionId,t.statementId);return n.length?Ot(n[0]):null}countChoiceSelections(t,n){return J(this,Y,pe).call(this,t,null,n).length}textEntry(t){return J(this,Y,pe).call(this,t.questionId,t.statementId,t.choice).map(n=>n.text).filter(n=>n).join(", ")}getQuestionText(t){if(this.forExport)return t.text;let n=t.text;return n=n.replaceAll(Le,(i,s)=>{if(s&&Et(s)){const a=L(s);return this.evaluateDynamicExpression(a,"choices").map(o=>o.display).join(", ")}return i}),n}getQuestionChoices(t){var n;const i=((n=t.choices)!=null?n:[]).filter(s=>this.evaluateDisplayLogic(s.displayLogic));if(t.dynamicChoices){const s=L(t.dynamicChoices),a=this.evaluateDynamicExpression(s,"choices");i.push(...a)}return t.type===fe.MatrixSingle||t.type===fe.MatrixMulti?i:this.applyRandomization(i,t.id,s=>{var a;return`${(a=s.id)!=null?a:s.value}`},t.randomization)}getQuestionChoiceGroups(t){var n;const i=(((n=t.choiceGroups)==null?void 0:n.filter(s=>this.evaluateDisplayLogic(s.displayLogic)))||[]).map(s=>({...s,choices:this.applyRandomization(s.choices.filter(a=>this.evaluateDisplayLogic(a.displayLogic)),t.id,a=>{var o;return`${(o=a.id)!=null?o:a.value}`},s.randomization)})).filter(s=>!!s.choices.length);return this.applyRandomization(i,t.id,s=>s.id,t.randomization)}getQuestionStatements(t){var n;const i=((n=t.statements)!=null?n:[]).filter(s=>this.evaluateDisplayLogic(s.displayLogic));if(t.dynamicStatements){const s=L(t.dynamicStatements),a=this.evaluateDynamicExpression(s,"statements");i.push(...a)}return this.applyRandomization(i,t.id,s=>s.id,t.randomization)}getQuestionStatementGroups(t){var n;const i=(((n=t.statementGroups)==null?void 0:n.filter(s=>this.evaluateDisplayLogic(s.displayLogic)))||[]).map(s=>({...s,statements:this.applyRandomization(s.statements.filter(a=>this.evaluateDisplayLogic(a.displayLogic)),t.id,a=>a.id,s.randomization)})).filter(s=>!!s.statements.length);return this.applyRandomization(i,t.id,s=>s.id,t.randomization)}getQuestionChoicesFlattened(t){return[...this.getQuestionChoices(t),...this.getQuestionChoiceGroups(t).flatMap(n=>n.choices)]}getQuestionStatementsFlattened(t){return[...this.getQuestionStatements(t),...this.getQuestionStatementGroups(t).flatMap(n=>n.statements)]}applyRandomization(t,n,i,s){var a,o;if(!s||this.forExport)return t;const l=new Map(t.map(u=>[i(u),u])),p=[...l.keys()],_=new Set(p),c=((a=s.order)!=null?a:["$"]).filter(u=>u==="$"||_.has(u)),m=p.filter(u=>!c.includes(u)).map(u=>({weight:this.keyHash(n,u),key:u}));m.sort((u,y)=>u.weight.localeCompare(y.weight));const f=(o=s.total)!=null?o:p.length,x=Math.min(f-(c.length-1),m.length),d=[];return c.forEach(u=>{u==="$"?d.push(...m.slice(0,x).map(y=>y.key)):d.push(u)}),d.map(u=>l.get(u))}keyHash(t,n){const i=`${t}.${this.hashSalt}.${n}`;return Xt.createHash("sha256").update(i).digest("hex")}}Y=new WeakSet,pe=function(r,t,n){return this.getQuestionAnswers(r,t).filter(i=>typeof n=="undefined"||n===null||Ot(i)===n)},ue=new WeakSet,Pe=function(r,t){if(r.textInput&&["forced","optional"].includes(r.textInput)){const n=this.textEntry({questionId:t.questionId,choice:r.id||r.value});return{...r,display:n}}return r};function At(r){if(r.length===1)return r[0];const t=r[1].value;return t==="or"?r[0]||r[2]:t==="and"?r[0]&&r[2]:!1}function he(r,t,n){switch(t){case"==":return r===n;case"!=":return r!==n;case"<=":return r<=n;case">=":return r>=n;case"<":return r<n;case">":return r>n;default:return!1}}function St(r,t,n,i){const s=i?r.toLowerCase():r,a=i?n.toLowerCase():n;switch(t){case"contains":return s.includes(a);case"not_contains":return!s.includes(a);case"regex_matches":try{return new RegExp(n).test(s)}catch{return!1}default:return he(s,t,a)}}function $t(r,t){return r.length===1?t(r[0]):(Be.default(r[0].type==="NEGATION"),!t(r[1]))}function Ce(r){if(!["INT","IDENTIFIER"].includes(r.type))throw new SyntaxError(`Invalid token type: ${r.type}; expected IDENTIFIER or INT`);return R(r)}function R(r){var t,n;switch(r.type){case"IDENTIFIER":return r.value;case"INT":return parseInt(r.value,10);case"STRING":{const i=r.value.match(/(?:'(?<single>[^\']*)')|(?:"(?<double>[^\"]*)")/),s=((t=i==null?void 0:i.groups)==null?void 0:t.double)||((n=i==null?void 0:i.groups)==null?void 0:n.single);return Be.default(s),s}case"OPERATOR":return r.value;case"TRUE":return!0;case"FALSE":return!1;default:throw new SyntaxError(`Invalid token type: ${r.type}`)}}function Qe(r,t){const n={start:i=>i[0],top_level_expr:At,bool_expr:At,condition:i=>i[0],qc_mc_selected:i=>$t(i,s=>t.isSelected(s)),qc_mc_text:i=>St(t.textEntry(i[0]),R(i[1]),R(i[2]),!1),qc_mc_text_ignore_case:i=>St(t.textEntry(i[0]),R(i[1]),R(i[2]),!0),qc_mc_count:i=>he(t.countSelected(i[0]),R(i[1]),R(i[2])),qc_matrix_selected:i=>$t(i,s=>t.isSelected(s)),qc_selected_value:i=>{const s=t.selectedValue(i[0]);return s!==null&&he(s,R(i[1]),R(i[2]))},qc_matrix_count:i=>he(t.countChoiceSelections(i[0],Ce(i[1])),R(i[2]),R(i[3])),question_selector:i=>i[0].value,question_or_matrix_statement_selector:i=>typeof i[0]=="string"?{questionId:i[0]}:i[0],mc_choice_selector:i=>({questionId:i[0],choice:Ce(i[1])}),matrix_statement_selector:i=>({questionId:i[0],statementId:R(i[1])}),matrix_choice_selector:i=>({...i[0],choice:Ce(i[1])}),bool_const:i=>i[0].value==="true"};return Tr.get_parser({transformer:n}).parse(r)}const Dr=/\$\{m:([^\}]+)\}/g,Pr=100,Me=(r,t)=>{if(typeof t=="string"){let n=t,i=0;for(;i<Pr;){const s=n.replace(Dr,(a,o)=>{if(r[o]===void 0)throw new Error(`Undefined macro: ${o}`);return r[o]});if(s===n)return s;n=s,i+=1}throw new Error(`Failed to finish interpolate macros - cyclic macros!? Stuck at: ${t}"`)}return typeof t=="object"&&Object.keys(t).forEach(n=>{t[n]=Me(r,t[n])}),t},zt=r=>(r.sections=Me(r.macros||{},r.sections),r);var Lr=Object.defineProperty,Cr=(r,t,n)=>t in r?Lr(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n,C=(r,t,n)=>(Cr(r,typeof t!="symbol"?t+"":t,n),n);const Dt=new Wt.default({allowUnionTypes:!0});Vt.default(Dt);const Pt=Dt.compile(We);class K extends Error{}class $ extends Error{}class me extends Error{}class Q extends Error{}class Qr extends Error{}class Mr{constructor(){C(this,"seenQuestions",new Set),C(this,"seenMultiQuestions",new Set),C(this,"seenQuestionStatements",new Map),C(this,"seenQuestionChoices",new Map),C(this,"seenTextChoices",new Map),C(this,"evaluator",{}),C(this,"validateReference",t=>{var n,i,s;if(!this.seenQuestions.has(t.questionId))throw new K(`Invalid question: ${t.questionId}`);if(t.statementId!==void 0&&!((n=this.seenQuestionStatements.get(t.questionId))!=null&&n.has(t.statementId)))throw new K(`Invalid statement: ${t.questionId}.${t.statementId}`);if(t.choice!==void 0&&!((i=this.seenQuestionChoices.get(t.questionId))!=null&&i.has(t.choice)))throw new K(`Invalid choice: ${t.questionId}[${t.choice}]`);if(t.choice!==void 0&&t.expectText===!0&&!((s=this.seenTextChoices.get(t.questionId))!=null&&s.has(t.choice)))throw new K(`Invalid text reference: ${t.questionId}[${t.choice}]`);if(typeof t.expectMulti=="boolean"&&t.expectMulti&&!this.seenMultiQuestions.has(t.questionId))throw new $(`Invalid question reference: ${t.questionId}. Expected a multi-answer question.`);if(typeof t.expectMulti=="boolean"&&!t.expectMulti&&this.seenMultiQuestions.has(t.questionId))throw new $(`Invalid question reference: ${t.questionId}. Expected a non-multi-answer question.`)}),this.evaluator.isSelected=t=>(this.validateReference(t),!1),this.evaluator.countSelected=t=>(this.validateReference({questionId:t}),0),this.evaluator.selectedValue=t=>(this.validateReference({questionId:t.questionId,statementId:t.statementId,expectMulti:!1}),0),this.evaluator.countChoiceSelections=(t,n)=>(this.validateReference({questionId:t,choice:n}),0),this.evaluator.textEntry=t=>(this.validateReference({...t,expectText:!0}),"")}}const F=(r,t,n)=>{if(n)try{Qe(n,r.evaluator)}catch(i){throw i instanceof K||i instanceof $||i instanceof Q?i:new Error(`Syntax error parsing display logic at ${t}: ${n}`)}},jr=(r,t)=>{[...t.matchAll(Le)].forEach(n=>{var i;const s=L(n.groups.locator);if(!r.seenQuestions.has(s.questionId))throw new $(`Invalid question referenced in locator expression: ${s.questionId}/${s.expression}`);if(s.identifier&&!((i=r.seenQuestionChoices.get(s.questionId))!=null&&i.has(s.identifier)))throw new $(`Invalid question choice referenced in locator expression: ${s.questionId}/${s.expression}(${s.identifier})`)})},B=(r,t,n)=>{if(n){const i=new Set(t);if(n.order){const s=n.order.split(" "),a=s.filter(o=>o==="$").length;if(a===0)throw new me(`Wildcard $ is missing in randomization order at ${r.id}`);if(a>1)throw new me(`Wildcard $ occurred multiples times in randomization order at ${r.id}`);if(s.forEach(o=>{if(o!=="$"&&!i.has(o))throw new me(`Unknown id ${o} in randomization ordering at ${r.id}`)}),n.total!==void 0&&n.total<s.length)throw new me(`Total value in randomization is too small at ${r.id}`)}}},Lt=(r,t)=>{const n=[T.FOR_MATRIX_CHOICE,T.UNSELECTED_FOR_MATRIX_CHOICE].includes(r.expression),i=(n?t.seenQuestionStatements:t.seenQuestionChoices).get(r.questionId);if(i===void 0)throw new $(`Invalid question referenced in locator expression: ${r.questionId}/${r.expression}`);if(n){const s=t.seenQuestionChoices.get(r.questionId);if(!r.identifier||!(s!=null&&s.has(r.identifier)))throw new $(`Invalid choice referenced in locator expression: ${r.questionId}/${r.expression}(${r.identifier})`)}return i},Ur=(r,t)=>{var n,i,s,a,o,l,p,_,c,m,f;if(jr(t,r.text),r.id!==void 0){if(F(t,r.id,r.display_logic),(n=r.statements)==null||n.forEach(d=>{F(t,`${r.id}.${d.id}`,d.display_logic)}),(i=r.choices)==null||i.forEach(d=>{F(t,`${r.id}[${d.id||d.value}]`,d.display_logic)}),r.type==="matrix-multi"||r.type==="matrix-single"?r.statement_groups?B(r,r.statement_groups.map(d=>d.id),r.randomization):B(r,(a=(s=r.statements)==null?void 0:s.map(d=>d.id))!=null?a:[],r.randomization):r.choice_groups?B(r,r.choice_groups.map(d=>d.id),r.randomization):B(r,(l=(o=r.choices)==null?void 0:o.map(d=>`${d.id||d.value}`))!=null?l:[],r.randomization),(p=r.statement_groups)==null||p.forEach(d=>{d.statements.forEach(u=>{F(t,`${r.id}.${u.id}`,u.display_logic)}),B(r,d.statements.map(u=>u.id),d.randomization)}),(_=r.choice_groups)==null||_.forEach(d=>{d.choices.forEach(u=>{F(t,`${r.id}[${u.id||u.value}]`,u.display_logic)}),B(r,d.choices.map(u=>`${u.id||u.value}`),d.randomization)}),t.seenQuestions.has(r.id))throw new Q(`Duplicate question id: ${r.id}`);if(t.seenQuestions.add(r.id),r.type&&["matrix-multi","mc-multi"].includes(r.type)&&t.seenMultiQuestions.add(r.id),r.statements||r.dynamic_statements){const d=new Set;if(t.seenQuestionStatements.set(r.id,d),(c=r.statements)==null||c.forEach(u=>{if(d.has(u.id))throw new Q(`Duplicate statement id: ${r.id}.${u.id}`);d.add(u.id)}),r.dynamic_statements){const u=L(r.dynamic_statements);Lt(u,t).forEach(y=>{if(typeof y=="number")throw new $(`Dynamic statement in question ${r.id} refers to choices with values`);if(d.has(y))throw new Q(`Duplicate statement ${y} via dynamic statements in question ${r.id}`);d.add(y)})}}const x=(m=r.choices)!=null?m:[];if(r.choice_groups){if(new Set(r.choice_groups.map(d=>d.id)).size!==r.choice_groups.length)throw new Q(`Choice groups must have a unique id in question ${r.id}`);r.choice_groups.forEach(d=>x.push(...d.choices))}if(x||r.dynamic_choices){const d=new Set;t.seenQuestionChoices.set(r.id,d);const u=new Set;if(t.seenTextChoices.set(r.id,u),x.forEach(y=>{var b;const q=(b=y.id)!=null?b:y.value;if(d.has(q))throw new Q(`Duplicate choice: ${r.id}[${q}]`);d.add(q),y.text_input&&y.text_input!=="no"&&u.add(q)}),r.dynamic_choices){const y=L(r.dynamic_choices);Lt(y,t).forEach(b=>{if(d.has(b))throw new Q(`Duplicate choice ${b} via dynamic choices in ${r.id}`);d.add(b)}),(f=t.seenTextChoices.get(y.questionId))==null||f.forEach(b=>u.add(b))}if(new Set([...d].map(y=>typeof y)).size>=2)throw new Qr("All choices in a question must either all have id's or all have values")}}},Fr=r=>{if(!Pt(r))throw new Error(`Invalid template: ${r.template.id}. Reason: ${JSON.stringify(Pt.errors,null,4)}`);zt(r);const t=new Mr;r.sections.forEach(n=>{F(t,n.id,n.display_logic),n.pages.forEach(i=>{var s;(s=i.questions)==null||s.forEach(a=>{Ur(a,t)})})})};function Br(r,t){const n=structuredClone(r);return{...n,sections:n.sections.map(i=>({id:i.id,name:i.name,hideProgressBar:i.hideProgressBar,pages:t.evaluateDisplayLogic(i.displayLogic)?i.pages.map(s=>({...s,questions:Zr(s.questions,t)})).filter(s=>s.questions.length):[]})).filter(i=>i.pages.length)}}function Zr(r,t){return r.filter(n=>t.evaluateDisplayLogic(n.displayLogic)).map(n=>({...n,text:t.getQuestionText(n),statements:t.getQuestionStatements(n),choices:t.getQuestionChoices(n),statementGroups:t.getQuestionStatementGroups(n),choiceGroups:t.getQuestionChoiceGroups(n),randomization:void 0}))}const Gr=r=>!!(r!=null&&r.singleAnswer)||!!(r!=null&&r.multipleAnswers)&&(r==null?void 0:r.multipleAnswers.length)>0,Wr=(r,t)=>{let n=!1,i=t,s=new de(r,i);const a=p=>_=>{const c=p.includes(_.questionId);return c&&(n=!0),!c},o=p=>_=>{const c=!_.statementId||p.includes(_.statementId);return c||(n=!0),c},l=p=>_=>{var c;if(_.singleAnswer){const f=!!_.singleAnswer.text||p.includes(_.singleAnswer.choiceId||_.singleAnswer.choiceValue);return f||(n=!0),{..._,singleAnswer:f?_.singleAnswer:void 0}}const m=(c=_.multipleAnswers)==null?void 0:c.filter(f=>!!f.text||p.includes(f.choiceId||f.choiceValue));return m&&m.length<_.multipleAnswers.length&&(n=!0),{..._,multipleAnswers:m}};for(const p of r.sections){if(!s.evaluateDisplayLogic(p.displayLogic)){const _=p.pages.flatMap(c=>c.questions).map(c=>c.id);i=i.filter(a(_)),n&&(n=!1,s=new de(r,i));continue}for(const _ of p.pages)for(const c of _.questions){if(!s.evaluateDisplayLogic(c.displayLogic))i=i.filter(a([c.id]));else{const m=s.getQuestionStatementsFlattened(c).map(u=>u.id),f=s.getQuestionChoicesFlattened(c).map(u=>u.id||u.value),x=o(m),d=l(f);i=i.filter(u=>u.questionId!==c.id||x(u)),i=i.map(u=>u.questionId!==c.id?u:d(u))}n&&(n=!1,s=new de(r,i))}}return i},Vr=We,Xr="pulse_default_alpha",Hr={allPermissions:Jt,SURVEY_RESOURCE_TYPE:Ht,surveyAdministerPermission:Ze};exports.DEFAULT_TEMPLATE_ID=Xr,exports.LOCATOR_EXPRESSION=T,exports.QUESTION_TEXT_LOCATOR_PATTERN=Le,exports.TemplateContextEvaluator=de,exports.evaluateExpression=Qe,exports.evaluateTemplateNode=Br,exports.extractQuestionNodes=It,exports.getExperimentalOptionalBoolean=Yt,exports.getExperimentalOptionalString=Kt,exports.getQualifiedQuestionId=Rt,exports.getQuestionTypeEnum=kt,exports.getRandomizationTypeEnum=Nt,exports.getRawQuestionId=De,exports.getRelevantQuestionResponses=Wr,exports.getTemplateNode=kr,exports.hasAnswer=Gr,exports.interpolateMacros=Me,exports.interpolateTemplate=zt,exports.parseLocator=L,exports.permissions=Hr,exports.polyfillStructuredClone=en,exports.templateSchema=Vr,exports.transformCase=ce,exports.validateLocator=Et,exports.validateTemplate=Fr;
|
|
19
|
+
`),this.last_token=i}eq(t){return t instanceof Ue?this.text===t.text&&this.line_ctr===t.line_ctr&&this.last_token===t.last_token:W}}class ft{constructor(t,n){this.lexer=t,this.state=n}static from_text(t,n){return new this(t,new Ue(n))}lex(t){return this.lexer.lex(this.state,t)}}class _e extends at{lex(t,n){return W}}function er(r,t){r.sort((n,i)=>{let s=t(n),a=t(i);for(let o=0;o<s.length;o++){if(s[o]>a[o])return 1;if(s[o]<a[o])return-1}return 0})}class ce extends _e{constructor(t){super();let n=[...t.terminals];if(this.re=t.re_module,!t.skip_validation){for(const i of n){try{this.re.compile(i.pattern.to_regexp(),t.g_regex_flags)}catch(s){throw s instanceof this.re.error?new X(h("Cannot compile token %s: %s",i.name,i.pattern)):s}if(i.pattern.min_width===0)throw new X(h("Lexer does not allow zero-width terminals. (%s: %s)",i.name,i.pattern))}if(!(new Set(t.ignore)<=new Set(n.map(i=>i.name))))throw new X(h("Ignore terminals are not defined: %s",_t(new Set(t.ignore),new Set(n.map(i=>i.name)))))}this.newline_types=re(n.filter(i=>Kn(i.pattern.to_regexp())).map(i=>i.name)),this.ignore_types=re(t.ignore),er(n,i=>[-i.priority,-i.pattern.max_width,-i.pattern.value.length,i.name]),this.terminals=n,this.user_callbacks=t.callbacks,this.g_regex_flags=t.g_regex_flags,this.use_bytes=t.use_bytes,this.terminals_by_name=t.terminals_by_name,this._scanner=null}_build_scanner(){let t;[t,this.callback]=Yn(this.terminals,this.g_regex_flags,this.re,this.use_bytes);for(const[n,i]of v(this.user_callbacks))n in this.callback?this.callback[n]=new Jn(this.callback[n],i,s=>s.type===n):this.callback[n]=i;this._scanner=new it(t,this.g_regex_flags,this.re,this.use_bytes)}get scanner(){return this._scanner===null&&this._build_scanner(),this._scanner}match(t,n){return this.scanner.match(t,n)}*lex(t,n){try{for(;;)yield this.next_token(t,n)}catch(i){if(!(i instanceof be))throw i}}next_token(t,n=null){let i,s,a,o,l=t.line_ctr;for(;l.char_pos<t.text.length;){if(s=this.match(t.text,l.char_pos),!s)throw i=_t(this.scanner.allowed_types,this.ignore_types),i||(i=new Set(["<END-OF-FILE>"])),new M({seq:t.text,lex_pos:l.char_pos,line:l.line,column:l.column,allowed:i,token_history:t.last_token&&[t.last_token],state:n,terminals_by_name:this.terminals_by_name});let[p,_]=s;if(this.ignore_types.has(_))_ in this.callback&&(o=new g(_,p,l.char_pos,l.line,l.column),this.callback[_](o)),l.feed(p,this.newline_types.has(_));else{if(a=new g(_,p,l.char_pos,l.line,l.column),l.feed(p,this.newline_types.has(_)),a.end_line=l.line,a.end_column=l.column,a.end_pos=l.char_pos,a.type in this.callback&&(a=this.callback[a.type](a),!(a instanceof g)))throw new X(h("Callbacks must return a token (returned %r)",a));return t.last_token=a,a}}throw new be(this)}}class tr extends _e{constructor({conf:t,states:n,always_accept:i=[]}={}){super();let s,a,o,l=[...t.terminals],p=t.terminals_by_name,_=k(t);_.terminals=l;let c=new Map;this.lexers={};for(let[m,f]of v(n))s=re(f),c.has(s)?a=c.get(s):(f=Sn(new Set(f),[...new Set(t.ignore),...new Set(i)]),o=k(_),o.terminals=[...f].filter(x=>x in p).map(x=>p[x]),a=new ce(o),c.set(s,a)),this.lexers[m]=a;this.root_lexer=new ce(_)}*lex(t,n){let i,s,a;try{for(;;)s=this.lexers[n.position],yield s.next_token(t,n)}catch(o){if(!(o instanceof be))if(o instanceof M)try{throw i=t.last_token,a=this.root_lexer.next_token(t,n),new j({token:a,expected:o.allowed,state:n,token_history:[i],terminals_by_name:this.root_lexer.terminals_by_name})}catch(l){throw l}else throw o}}}class yt extends N{static get __serialize_fields__(){return["terminals","ignore","g_regex_flags","use_bytes","lexer_type"]}static get __serialize_namespace__(){return[le]}constructor({terminals:t,re_module:n,ignore:i=[],postlex:s=null,callbacks:a=null,g_regex_flags:o="",skip_validation:l=!1,use_bytes:p=!1}={}){super(),this.terminals=t,this.terminals_by_name=Object.fromEntries(this.terminals.map(_=>[_.name,_])),this.ignore=i,this.postlex=s,this.callbacks=Object.keys(a).length||{},this.g_regex_flags=o,this.re_module=n,this.skip_validation=l,this.use_bytes=p,this.lexer_type=null}_deserialize(){this.terminals_by_name=Object.fromEntries(this.terminals.map(t=>[t.name,t]))}}class gt extends N{static get __serialize_fields__(){return["rules","start","parser_type"]}constructor(t,n,i){super(),this.rules=t,this.callbacks=n,this.start=i,this.parser_type=null}}class nr{constructor(t){this.node_builder=t}__call__(t){return t.length===1?t[0]:this.node_builder(t)}}const rr=L(nr);class ir{constructor(t,n=null){this.node_builder=t,this.node_filter=n}__call__(t){let n,i,s,a=this.node_builder(t);return a instanceof w&&(s=a.meta,n=this._pp_get_meta(t),n!==null&&("line"in s||(s.line=n&&n.container_line||n.line,s.column=n&&n.container_column||n.column,s.start_pos=n&&n.container_start_pos||n.start_pos,s.empty=!1),s.container_line=n&&n.container_line||n.line,s.container_column=n&&n.container_column||n.column),i=this._pp_get_meta([...t].reverse()),i!==null&&("end_line"in s||(s.end_line=i&&i.container_end_line||i.end_line,s.end_column=i&&i.container_end_column||i.end_column,s.end_pos=i&&i.container_end_pos||i.end_pos,s.empty=!1),s.container_end_line=i&&i.container_end_line||i.end_line,s.container_end_column=i&&i.container_end_column||i.end_column)),a}_pp_get_meta(t){for(const n of t)if(!(this.node_filter!==null&&!this.node_filter(n))){if(n instanceof w){if(!n.meta.empty)return n.meta}else if(n instanceof g)return n}}}const xt=L(ir);function sr(r){if(zn(r))return ie({unknown_param_0:xt,node_filter:r});if(r===!0)return xt;if(r===!1)return null;throw new S(h("Invalid option for propagate_positions: %r",r))}class De{constructor(t,n,i){this.node_builder=i,this.to_include=t,this.append_none=n}__call__(t){let n=[];for(const[i,s,a]of this.to_include)a&&n.push(...O([null],a)),s?n.push(...t[i].children):n.push(t[i]);return this.append_none&&n.push(...O([null],this.append_none)),this.node_builder(n)}}const ar=L(De);class or extends De{__call__(t){let n=[];for(const[i,s,a]of this.to_include)a&&n.push(...O([null],a)),s?n.length?n.push(...t[i].children):n=t[i].children:n.push(t[i]);return this.append_none&&n.push(...O([null],this.append_none)),this.node_builder(n)}}const lr=L(or);class _r extends De{constructor(t,n){super(),this.node_builder=n,this.to_include=t}__call__(t){let n=[];for(const[i,s]of this.to_include)s?n.length?n.push(...t[i].children):n=t[i].children:n.push(t[i]);return this.node_builder(n)}}const cr=L(_r);function pr(r){return!r.is_term&&r.name.startsWith("_")}function ur(r,t,n,i){let s,a;i.length?(a=i.map(p=>(0+p).toString()).join(""),s=a.split("0").map(p=>p.length)):s=O([0],r.length+1);let o=[],l=0;for(const[p,_]of V(r))l+=s[p],(t||!(_.is_term&&_.filter_out))&&(o.push([p,pr(_),l]),l=0);if(l+=s[r.length],i.length||o.length<r.length||Dn(o.map(([p,_,c])=>_)))return(i.length||n).length?ie(n?ar:lr,o,l):ie(cr,o.map(([p,_,c])=>[p,_]))}function dr(r){function t(n){let i=new w(r.name,n);return r(i)}return t=wraps(r)(t),t}function hr(r,t,n){if(n===_vargs_meta||n===_vargs_meta_inline)throw new NotImplementedError("Meta args not supported for internal transformer");function i(s){return n(r,t,s,null)}return i=wraps(r)(i),i}class mr{constructor(t,n,i=!1,s=!1,a=!1){this.tree_class=n,this.propagate_positions=i,this.ambiguous=s,this.maybe_placeholders=a,this.rule_builders=[...this._init_builders(t)]}*_init_builders(t){let n,i,s,a,o=sr(this.propagate_positions);for(const l of t)s=l.options,i=s.keep_all_tokens,n=s.expand1,a=[...ut(null,[n&&!l.alias&&rr,ur(l.expansion,i,this.ambiguous,this.maybe_placeholders?s.empty_indices:[]),o])],yield[l,a]}create_callback(t=null){let n,i,s,a=new Map;for(const[o,l]of this.rule_builders){i=o.alias||o.options.template_source||o.origin.name,t&&t[i]?(n=t&&t[i],s=n&&n.visit_wrapper||null,s!==null?n=hr(n,i,s):t instanceof mt&&(n=dr(n))):n=ie(this.tree_class,i);for(const p of l)n=p(n);if(a.has(o))throw new se(h("Rule '%s' already exists",o));a.set(o,n)}return a}}class wt extends N{constructor({parser_conf:t,debug:n=!1}={}){super();let i=new LALR_Analyzer({unknown_param_0:t,debug:n});i.compute_lalr();let s=t.callbacks;this._parse_table=i.parse_table,this.parser_conf=t,this.parser=new vt(i.parse_table,s,n)}static deserialize(t,n,i,s=!1){let a=ve(this);return a._parse_table=gr.deserialize(t,n),a.parser=new vt(a._parse_table,i,s),a}serialize(t){return this._parse_table.serialize(t)}parse_interactive(t,n){return this.parser.parse({lexer:t,start:n,start_interactive:!0})}parse({lexer:t,start:n,on_error:i=null}={}){let s,a;try{return this.parser.parse({lexer:t,start:n})}catch(o){if(o instanceof z){if(i===null)throw o;for(;;){if(o instanceof M&&(a=o.interactive_parser.lexer_thread.state,s=a.line_ctr.char_pos),!i(o))throw o;o instanceof M&&s===a.line_ctr.char_pos&&a.line_ctr.feed(a.text.slice(s,s+1));try{return o.interactive_parser.resume_parse()}catch(l){if(l instanceof j){if(o instanceof j&&o.token.type===l.token.type&&l.token.type==="$END"&&o.interactive_parser.eq(l.interactive_parser))throw l;o=l}else if(l instanceof M)o=l;else throw l}}}else throw o}}}class fr{constructor(t,n,i){this.parse_table=t,this.start_state=this.parse_table.start_states[i],this.end_state=this.parse_table.end_states[i],this.states=this.parse_table.states,this.callbacks=n,this.start=i}}class Fe{constructor(t,n,i=null,s=null){this.parse_conf=t,this.lexer=n,this.state_stack=i||[this.parse_conf.start_state],this.value_stack=s||[]}get position(){return E(this.state_stack)}eq(t){return t instanceof Fe?this.state_stack.length===t.state_stack.length&&this.position===t.position:W}copy(){return k(this)}feed_token(t,n=!1){let i,s,a,o,l,p,_,c,m,f,x=this.state_stack,d=this.value_stack,u=this.parse_conf.states,y=this.parse_conf.end_state,b=this.parse_conf.callbacks;for(;;){if(m=E(x),t.type in u[m])[s,a]=u[m][t.type];else throw o=new Set(we(u[m]).filter(q=>dt(q)).map(q=>q)),new j({token:t,expected:o,state:this,interactive_parser:null});if(s===Pe){x.push(a),d.push(t.type in b?b[t.type](t):t);return}else if(p=a,c=p.expansion.length,c?(_=d.slice(-c),x.splice(-c),d.splice(-c)):_=[],f=b.get(p)(_),[i,l]=u[E(x)][p.origin.name],x.push(l),d.push(f),n&&E(x)===y)return E(d)}}}class vt{constructor(t,n,i=!1){this.parse_table=t,this.callbacks=n,this.debug=i}parse({lexer:t,start:n,value_stack:i=null,state_stack:s=null,start_interactive:a=!1}={}){let o=new fr(this.parse_table,this.callbacks,n),l=new Fe(o,t,s,i);return a?new D(this,l,l.lexer):this.parse_from_state(l)}parse_from_state(t){let n,i;try{i=null;for(i of t.lexer.lex(t))t.feed_token(i);return n=i?g.new_borrow_pos("$END","",i):new g("$END","",0,1,1),t.feed_token(n,!0)}catch(s){if(s instanceof z){try{s.interactive_parser=new D(this,t,t.lexer)}catch(a){if(!(a instanceof ReferenceError))throw a}throw s}else if(s instanceof Error){if(this.debug){console.log(""),console.log("STATE STACK DUMP"),console.log("----------------");for(const[a,o]of V(t.state_stack))console.log(h("%d)",a),o);console.log("")}throw s}else throw s}}}class D{constructor(t,n,i){this.parser=t,this.parser_state=n,this.lexer_thread=i,this.result=null}feed_token(t){return this.parser_state.feed_token(t,t.type==="$END")}*iter_parse(){for(const t of this.lexer_thread.lex(this.parser_state))yield t,this.result=this.feed_token(t)}exhaust_lexer(){return[...this.iter_parse()]}feed_eof(t=null){let n=t!==null?g.new_borrow_pos("$END","",t):new g("$END","",0,1,1);return this.feed_token(n)}copy(){return k(this)}eq(t){return t instanceof D?this.parser_state===t.parser_state&&this.lexer_thread===t.lexer_thread:!1}as_immutable(){let t=k(this);return new Tt(t.parser,t.parser_state,t.lexer_thread)}pretty(){let t=["Parser choices:"];for(const[n,i]of v(this.choices()))t.push(h(" - %s -> %r",n,i));return t.push(h("stack size: %s",this.parser_state.state_stack.length)),t.join(`
|
|
20
|
+
`)}choices(){return this.parser_state.parse_conf.parse_table.states[this.parser_state.position]}accepts(){let t,n=new Set;for(const i of this.choices())if(dt(i)){t=k(this);let s=null;try{t.feed_token(new g(i,""))}catch(a){if(s=a,!(a instanceof j))throw a}s||n.add(i)}return n}resume_parse(){return this.parser.parse_from_state(this.parser_state)}}class Tt extends D{constructor(){super(...arguments),I(this,"result",null)}feed_token(t){let n=k(this);return n.result=D.feed_token(n,t),n}exhaust_lexer(){let t=this.as_mutable();return t.exhaust_lexer(),t.as_immutable()}as_mutable(){let t=k(this);return new D(t.parser,t.parser_state,t.lexer_thread)}}class bt{constructor(t){this.name=t}repr(){return this.toString()}}var Pe=new bt("Shift"),Et=new bt("Reduce");class yr{constructor(t,n,i){this.states=t,this.start_states=n,this.end_states=i}serialize(t){let n=new Enumerator,i=Object.fromEntries(v(this.states).map(([s,a])=>[s,Object.fromEntries(v(a).map(([o,[l,p]])=>[ot(n,o),l===Et?[1,p.serialize(t)]:[0,p]]))]));return{tokens:n.reversed(),states:i,start_states:this.start_states,end_states:this.end_states}}static deserialize(t,n){const i=this;let s=t.tokens,a=Object.fromEntries(v(t.states).map(([o,l])=>[o,Object.fromEntries(v(l).map(([p,[_,c]])=>[s[p],_===1?[Et,B.deserialize(c,n)]:[Pe,c]]))]));return new i(a,t.start_states,t.end_states)}}class gr extends yr{static from_ParseTable(t){const n=this;let i=[...t.states],s=Object.fromEntries(V(i).map(([p,_])=>[_,p])),a={};for(let[p,_]of v(t.states))_=Object.fromEntries(v(_).map(([c,m])=>[c,m[0]===Pe?[m[0],s[m[1]]]:m])),a[s[p]]=_;let o=Object.fromEntries(v(t.start_states).map(([p,_])=>[p,s[_]])),l=Object.fromEntries(v(t.end_states).map(([p,_])=>[p,s[_]]));return new n(a,o,l)}}function xr(r){if(r&&r.__future_interface__)return r;{class t extends _e{constructor(i){super(),this.lexer=r(i)}lex(i,s){return this.lexer.lex(i.text)}}return t}}function wr(r,t,n,i,s){let a=gt.deserialize(r.parser_conf,t),o=wt.deserialize(r.parser,t,i,s.debug);return a.callbacks=i,new vr({lexer_conf:n,parser_conf:a,options:s,parser:o})}var Nt={};class vr extends N{static get __serialize_fields__(){return["lexer_conf","parser_conf","parser"]}constructor({lexer_conf:t,parser_conf:n,options:i,parser:s=null}={}){super();let a,o;this.parser_conf=n,this.lexer_conf=t,this.options=i,s?this.parser=s:(o=ot(Nt,n.parser_type),this.parser=o(t,n,i));let l=t.lexer_type;if(this.skip_lexer=!1,["dynamic","dynamic_complete"].includes(l)){this.skip_lexer=!0;return}const p={basic:Nr,contextual:Rr};l in p?(a=p[l],this.lexer=a(t,this.parser,t.postlex,i)):this.lexer=xr(l)(t),t.postlex&&(this.lexer=new Er(this.lexer,t.postlex))}_verify_start(t=null){let n;if(t===null){if(n=this.parser_conf.start,n.length>1)throw new S("Lark initialized with more than 1 possible start rule. Must specify which start rule to parse",n);[t]=n}else if(!this.parser_conf.start.includes(t))throw new S(h("Unknown start rule %s. Must be one of %r",t,this.parser_conf.start));return t}_make_lexer_thread(t){return this.skip_lexer?t:ft.from_text(this.lexer,t)}parse(t,n=null,i=null){let s=this._verify_start(n),a=i===null?{}:{on_error:i},o=this._make_lexer_thread(t);return this.parser.parse({lexer:o,start:s,...a})}parse_interactive(t=null,n=null){let i=this._verify_start(n);if(this.parser_conf.parser_type!=="lalr")throw new S("parse_interactive() currently only works with parser='lalr' ");let s=this._make_lexer_thread(t);return this.parser.parse_interactive(s,i)}}function Tr(r,t){let n;Re(r,["lalr","earley","cyk"]),typeof t!="object"&&(n={lalr:["basic","contextual"],earley:["basic","dynamic","dynamic_complete"],cyk:["basic"]}[r],Re(t,n,h("Parser %r does not support lexer %%r, expected one of %%s",r)))}function br(r,t){let n,i={};for(const s of t)n=r&&r[s.name]||null,n!==null&&(i[s.name]=n);return i}class Er{constructor(t,n){this.lexer=t,this.postlexer=n}lex(t,n){let i=this.lexer.lex(t,n);return this.postlexer.process(i)}}function Nr(r,t,n,i){return new ce(r)}function Rr(r,t,n,i){let s=Object.fromEntries(v(t._parse_table.states).map(([o,l])=>[o,[...we(l)]])),a=n?n.always_accept:[];return new tr({conf:r,states:s,always_accept:a})}function Ir(r,t,n=null){let i=n?n.debug:!1;return new wt({parser_conf:t,debug:i})}Nt.lalr=Ir;class Rt extends at{constructor(){super(...arguments),I(this,"always_accept",[])}process(t){return t}}class kr extends N{constructor(t){super(),I(this,"OPTIONS_DOC",'\n **=== General Options ===**\n\n start\n The start symbol. Either a string, or a list of strings for multiple possible starts (Default: "start")\n debug\n Display debug information and extra warnings. Use only when debugging (Default: ``False``)\n When used with Earley, it generates a forest graph as "sppf.png", if \'dot\' is installed.\n transformer\n Applies the transformer to every parse tree (equivalent to applying it after the parse, but faster)\n propagate_positions\n Propagates (line, column, end_line, end_column) attributes into all tree branches.\n Accepts ``False``, ``True``, or a callable, which will filter which nodes to ignore when propagating.\n maybe_placeholders\n When ``True``, the ``[]`` operator returns ``None`` when not matched.\n When ``False``, ``[]`` behaves like the ``?`` operator, and returns no value at all.\n (default= ``True``)\n cache\n Cache the results of the Lark grammar analysis, for x2 to x3 faster loading. LALR only for now.\n\n - When ``False``, does nothing (default)\n - When ``True``, caches to a temporary file in the local directory\n - When given a string, caches to the path pointed by the string\n regex\n When True, uses the ``regex`` module instead of the stdlib ``re``.\n g_regex_flags\n Flags that are applied to all terminals (both regex and strings)\n keep_all_tokens\n Prevent the tree builder from automagically removing "punctuation" tokens (Default: ``False``)\n tree_class\n Lark will produce trees comprised of instances of this class instead of the default ``lark.Tree``.\n\n **=== Algorithm Options ===**\n\n parser\n Decides which parser engine to use. Accepts "earley" or "lalr". (Default: "earley").\n (there is also a "cyk" option for legacy)\n lexer\n Decides whether or not to use a lexer stage\n\n - "auto" (default): Choose for me based on the parser\n - "basic": Use a basic lexer\n - "contextual": Stronger lexer (only works with parser="lalr")\n - "dynamic": Flexible and powerful (only with parser="earley")\n - "dynamic_complete": Same as dynamic, but tries *every* variation of tokenizing possible.\n ambiguity\n Decides how to handle ambiguity in the parse. Only relevant if parser="earley"\n\n - "resolve": The parser will automatically choose the simplest derivation\n (it chooses consistently: greedy for tokens, non-greedy for rules)\n - "explicit": The parser will return all derivations wrapped in "_ambig" tree nodes (i.e. a forest).\n - "forest": The parser will return the root of the shared packed parse forest.\n\n **=== Misc. / Domain Specific Options ===**\n\n postlex\n Lexer post-processing (Default: ``None``) Only works with the basic and contextual lexers.\n priority\n How priorities should be evaluated - "auto", ``None``, "normal", "invert" (Default: "auto")\n lexer_callbacks\n Dictionary of callbacks for the lexer. May alter tokens during lexing. Use with caution.\n use_bytes\n Accept an input of type ``bytes`` instead of ``str``.\n edit_terminals\n A callback for editing the terminals before parse.\n import_paths\n A List of either paths or loader functions to specify from where grammars are imported\n source_path\n Override the source of from where the grammar was loaded. Useful for relative imports and unconventional grammar loading\n **=== End of Options ===**\n '),I(this,"_defaults",{debug:!1,keep_all_tokens:!1,tree_class:null,cache:!1,postlex:null,parser:"earley",lexer:"auto",transformer:null,start:"start",priority:"auto",ambiguity:"auto",regex:!1,propagate_positions:!1,lexer_callbacks:{},maybe_placeholders:!0,edit_terminals:null,g_regex_flags:"",use_bytes:!1,import_paths:[],source_path:null,_plugins:null});let n,i=ct(t),s=this;for(const[a,o]of v(this._defaults))a in i?(n=On(i,a),typeof o=="boolean"&&!["cache","use_bytes","propagate_positions"].includes(a)&&(n=pt(n))):n=o,s[a]=n;if(typeof s.start=="string"&&(s.start=[s.start]),this.options=s,Re(this.parser,["earley","lalr","cyk",null]),this.parser==="earley"&&this.transformer)throw new S("Cannot specify an embedded transformer when using the Earley algorithm. Please use your transformer on the resulting parse tree, or use a different algorithm (i.e. LALR)");if(Object.keys(i).length)throw new S(h("Unknown options: %s",we(i)))}serialize(t){return this.options}static deserialize(t,n){const i=this;return new i(t)}}class It extends N{static get __serialize_fields__(){return["parser","rules","options"]}_build_lexer(t=!1){let n=this.lexer_conf;return t&&(n=k(n),n.ignore=[]),new ce(n)}_prepare_callbacks(){this._callbacks=new Map,this.options.ambiguity!=="forest"&&(this._parse_tree_builder=new mr(this.rules,this.options.tree_class||An(w),this.options.propagate_positions,this.options.parser!=="lalr"&&this.options.ambiguity==="explicit",this.options.maybe_placeholders),this._callbacks=this._parse_tree_builder.create_callback(this.options.transformer)),lt(this._callbacks,br(this.options.transformer,this.terminals))}_deserialize_lexer_conf(t,n,i){let s=yt.deserialize(t.lexer_conf,n);return s.callbacks=i.lexer_callbacks||{},s.re_module=i.regex?regex:rt,s.use_bytes=i.use_bytes,s.g_regex_flags=i.g_regex_flags||"",s.skip_validation=!0,s.postlex=i.postlex,s}_load({f:t,...n}={}){let i;Te(t)?i=t:i=pickle.load(t);let s=i.memo,a=i.data,o=jn.deserialize(s,{Rule:B,TerminalDef:le},{}),l=ct(a.options);return lt(l,n),this.options=kr.deserialize(l,o),this.rules=a.rules.map(p=>B.deserialize(p,o)),this.source_path="<deserialized>",Tr(this.options.parser,this.options.lexer),this.lexer_conf=this._deserialize_lexer_conf(a.parser,o,this.options),this.terminals=this.lexer_conf.terminals,this._prepare_callbacks(),this._terminals_dict=Object.fromEntries(this.terminals.map(p=>[p.name,p])),this.parser=wr(a.parser,o,this.lexer_conf,this._callbacks,this.options),this}static _load_from_dict({data:t,memo:n,...i}={}){return ve(this)._load({f:{data:t,memo:n},...i})}repr(){return h("Lark(open(%r), parser=%r, lexer=%r, ...)",this.source_path,this.options.parser,this.options.lexer)}lex(t,n=!1){let i;!("lexer"in this)||n?i=this._build_lexer(n):i=this.lexer;let s=ft.from_text(i,t).lex(null);return this.options.postlex?this.options.postlex.process(s):s}get_terminal(t){return this._terminals_dict[t]}parse_interactive(t=null,n=null){return this.parser.parse_interactive({unknown_param_0:t,start:n})}parse(t,n=null,i=null){return this.parser.parse(t,n,i)}}class kt extends A{}class qt extends Rt{constructor(){super(),this.paren_level=0,this.indent_level=[0]}*handle_NL(t){if(this.paren_level>0)return;yield t;let n=Ee(t.value,`
|
|
21
|
+
`,1)[1],i=Ne(n," ")+Ne(n," ")*this.tab_len;if(i>E(this.indent_level))this.indent_level.push(i),yield g.new_borrow_pos(this.INDENT_type,n,t);else{for(;i<E(this.indent_level);)this.indent_level.pop(),yield g.new_borrow_pos(this.DEDENT_type,n,t);if(i!==E(this.indent_level))throw new kt(h("Unexpected dedent to column %s. Expected dedent to %s",i,E(this.indent_level)))}}*_process(t){for(const n of t)n.type===this.NL_type?yield*this.handle_NL(n):yield n,this.OPEN_PAREN_types.includes(n.type)?this.paren_level+=1:this.CLOSE_PAREN_types.includes(n.type)&&(this.paren_level-=1);for(;this.indent_level.length>1;)this.indent_level.pop(),yield new g(this.DEDENT_type,"")}process(t){return this.paren_level=0,this.indent_level=[0],this._process(t)}get always_accept(){return[this.NL_type]}get NL_type(){throw new NotImplementedError}get OPEN_PAREN_types(){throw new NotImplementedError}get CLOSE_PAREN_types(){throw new NotImplementedError}get INDENT_type(){throw new NotImplementedError}get DEDENT_type(){throw new NotImplementedError}get tab_len(){throw new NotImplementedError}}class qr extends qt{static get NL_type(){return"_NEWLINE"}get NL_type(){return this.constructor.NL_type}static get OPEN_PAREN_types(){return["LPAR","LSQB","LBRACE"]}get OPEN_PAREN_types(){return this.constructor.OPEN_PAREN_types}static get CLOSE_PAREN_types(){return["RPAR","RSQB","RBRACE"]}get CLOSE_PAREN_types(){return this.constructor.CLOSE_PAREN_types}static get INDENT_type(){return"_INDENT"}get INDENT_type(){return this.constructor.INDENT_type}static get DEDENT_type(){return"_DEDENT"}get DEDENT_type(){return this.constructor.DEDENT_type}static get tab_len(){return 8}get tab_len(){return this.constructor.tab_len}}const Or={Terminal:Oe,NonTerminal:Ae,RuleOptions:oe,PatternStr:$e,PatternRE:ze,TerminalDef:le};var Ar={LarkError:A,ConfigurationError:S,GrammarError:se,ParseError:Cn,LexError:X,UnexpectedInput:z,UnexpectedEOF:Qn,UnexpectedCharacters:M,UnexpectedToken:j,VisitError:Ie,Meta:ht,Tree:w,Discard:ne,Transformer:H,Transformer_InPlace:mt,Transformer_NonRecursive:Un,Transformer_InPlaceRecursive:Fn,VisitorBase:ke,Visitor:Zn,Visitor_Recursive:Bn,Interpreter:Gn,Symbol:qe,Terminal:Oe,NonTerminal:Ae,RuleOptions:oe,Rule:B,Pattern:Se,PatternStr:$e,PatternRE:ze,TerminalDef:le,Token:g,Lexer:_e,LexerConf:yt,ParserConf:gt,InteractiveParser:D,ImmutableInteractiveParser:Tt,PostLex:Rt,Lark:It,DedentError:kt,Indenter:qt,PythonIndenter:qr,get_parser:kn},Sr={parser:{lexer_conf:{terminals:[{"@":0},{"@":1},{"@":2},{"@":3},{"@":4},{"@":5},{"@":6},{"@":7},{"@":8},{"@":9},{"@":10},{"@":11},{"@":12},{"@":13},{"@":14},{"@":15},{"@":16},{"@":17},{"@":18},{"@":19},{"@":20}],ignore:["WS"],g_regex_flags:0,use_bytes:!1,lexer_type:"contextual",__type__:"LexerConf"},parser_conf:{rules:[{"@":21},{"@":22},{"@":23},{"@":24},{"@":25},{"@":26},{"@":27},{"@":28},{"@":29},{"@":30},{"@":31},{"@":32},{"@":33},{"@":34},{"@":35},{"@":36},{"@":37},{"@":38},{"@":39},{"@":40},{"@":41},{"@":42},{"@":43},{"@":44},{"@":45},{"@":46},{"@":47},{"@":48},{"@":49},{"@":50},{"@":51},{"@":52},{"@":53},{"@":54}],start:["start"],parser_type:"lalr",__type__:"ParserConf"},parser:{tokens:{0:"$END",1:"RPAR",2:"LSQB",3:"DOT",4:"question_selector",5:"IDENTIFIER",6:"OPERATOR",7:"CONJUNCTION",8:"__ANON_3",9:"__ANON_1",10:"qc_mc_text",11:"FALSE",12:"bool_expr",13:"__ANON_0",14:"__ANON_2",15:"__ANON_5",16:"qc_mc_count",17:"qc_matrix_selected",18:"condition",19:"qc_selected_value",20:"bool_const",21:"qc_matrix_count",22:"NEGATION",23:"__ANON_4",24:"TRUE",25:"qc_mc_selected",26:"qc_mc_text_ignore_case",27:"__ANON_6",28:"INT",29:"RSQB",30:"matrix_statement_selector",31:"matrix_choice_selector",32:"mc_choice_selector",33:"STRING",34:"question_or_matrix_statement_selector",35:"top_level_expr",36:"LPAR",37:"start"},states:{0:{0:[1,{"@":22}]},1:{1:[1,{"@":45}],2:[1,{"@":45}],3:[1,{"@":45}]},2:{2:[1,{"@":48}],1:[1,{"@":48}]},3:{1:[0,10]},4:{1:[0,9]},5:{4:[0,8],5:[0,1]},6:{2:[0,50]},7:{},8:{1:[0,57]},9:{6:[0,65]},10:{1:[1,{"@":42}],0:[1,{"@":42}],7:[1,{"@":42}]},11:{8:[0,66],9:[0,35],10:[0,44],11:[0,63],12:[0,49],13:[0,56],14:[0,54],15:[0,34],16:[0,75],17:[0,68],18:[0,78],19:[0,69],20:[0,36],21:[0,71],22:[0,80],23:[0,5],24:[0,43],25:[0,39],26:[0,51]},12:{0:[1,{"@":24}]},13:{6:[0,70]},14:{2:[0,77],3:[0,28]},15:{3:[0,28],1:[1,{"@":51}]},16:{1:[1,{"@":41}],0:[1,{"@":41}],7:[1,{"@":41}]},17:{27:[0,73]},18:{1:[1,{"@":52}]},19:{8:[0,66],9:[0,35],10:[0,44],11:[0,63],25:[0,39],12:[0,27],13:[0,56],14:[0,54],15:[0,34],16:[0,75],17:[0,68],18:[0,78],19:[0,69],21:[0,71],22:[0,80],23:[0,5],24:[0,43],26:[0,51],20:[0,36]},20:{27:[0,13]},21:{6:[0,47]},22:{6:[0,23]},23:{28:[0,60]},24:{1:[0,16]},25:{2:[0,77]},26:{0:[1,{"@":21}]},27:{1:[0,29]},28:{5:[0,2]},29:{7:[0,81],0:[1,{"@":23}]},30:{1:[0,22]},31:{1:[0,21]},32:{29:[0,64]},33:{1:[0,52]},34:{5:[0,1],4:[0,76]},35:{30:[0,6],5:[0,1],4:[0,14],31:[0,3],32:[0,41]},36:{1:[1,{"@":27}],0:[1,{"@":27}],7:[1,{"@":27}]},37:{29:[0,53]},38:{1:[1,{"@":40}],0:[1,{"@":40}],7:[1,{"@":40}]},39:{1:[1,{"@":29}],0:[1,{"@":29}],7:[1,{"@":29}]},40:{1:[1,{"@":43}],0:[1,{"@":43}],7:[1,{"@":43}]},41:{1:[0,61]},42:{28:[0,40]},43:{1:[1,{"@":53}],0:[1,{"@":53}],7:[1,{"@":53}]},44:{1:[1,{"@":30}],0:[1,{"@":30}],7:[1,{"@":30}]},45:{1:[1,{"@":50}]},46:{1:[1,{"@":39}],0:[1,{"@":39}],7:[1,{"@":39}]},47:{33:[0,48]},48:{1:[1,{"@":38}],0:[1,{"@":38}],7:[1,{"@":38}]},49:{0:[1,{"@":26}],1:[1,{"@":26}]},50:{5:[0,55],28:[0,62]},51:{1:[1,{"@":31}],0:[1,{"@":31}],7:[1,{"@":31}]},52:{1:[1,{"@":36}],0:[1,{"@":36}],7:[1,{"@":36}]},53:{1:[1,{"@":47}]},54:{4:[0,25],32:[0,31],5:[0,1]},55:{29:[0,45]},56:{4:[0,15],5:[0,1],30:[0,18],34:[0,30]},57:{6:[0,58]},58:{28:[0,38]},59:{28:[0,17],5:[0,20]},60:{1:[1,{"@":35}],0:[1,{"@":35}],7:[1,{"@":35}]},61:{1:[1,{"@":37}],0:[1,{"@":37}],7:[1,{"@":37}]},62:{29:[0,79]},63:{1:[1,{"@":54}],0:[1,{"@":54}],7:[1,{"@":54}]},64:{1:[1,{"@":46}]},65:{33:[0,46]},66:{4:[0,25],32:[0,4],5:[0,1]},67:{30:[0,6],5:[0,1],4:[0,14],32:[0,33],31:[0,24]},68:{1:[1,{"@":33}],0:[1,{"@":33}],7:[1,{"@":33}]},69:{1:[1,{"@":28}],0:[1,{"@":28}],7:[1,{"@":28}]},70:{28:[0,74]},71:{1:[1,{"@":34}],0:[1,{"@":34}],7:[1,{"@":34}]},72:{8:[0,66],35:[0,26],9:[0,35],10:[0,44],11:[0,63],36:[0,19],25:[0,39],13:[0,56],14:[0,54],15:[0,34],16:[0,75],17:[0,68],18:[0,78],19:[0,69],37:[0,7],12:[0,0],21:[0,71],22:[0,80],23:[0,5],24:[0,43],26:[0,51],20:[0,36]},73:{6:[0,42]},74:{1:[1,{"@":44}],0:[1,{"@":44}],7:[1,{"@":44}]},75:{1:[1,{"@":32}],0:[1,{"@":32}],7:[1,{"@":32}]},76:{2:[0,59]},77:{28:[0,32],5:[0,37]},78:{7:[0,11],0:[1,{"@":25}],1:[1,{"@":25}]},79:{1:[1,{"@":49}]},80:{9:[0,67]},81:{35:[0,12],36:[0,19]}},start_states:{start:72},end_states:{start:7}},__type__:"ParsingFrontend"},rules:[{"@":21},{"@":22},{"@":23},{"@":24},{"@":25},{"@":26},{"@":27},{"@":28},{"@":29},{"@":30},{"@":31},{"@":32},{"@":33},{"@":34},{"@":35},{"@":36},{"@":37},{"@":38},{"@":39},{"@":40},{"@":41},{"@":42},{"@":43},{"@":44},{"@":45},{"@":46},{"@":47},{"@":48},{"@":49},{"@":50},{"@":51},{"@":52},{"@":53},{"@":54}],options:{debug:!1,keep_all_tokens:!1,tree_class:null,cache:!1,postlex:null,parser:"lalr",lexer:"contextual",transformer:null,start:["start"],priority:"normal",ambiguity:"auto",regex:!1,propagate_positions:!1,lexer_callbacks:{},maybe_placeholders:!1,edit_terminals:null,g_regex_flags:0,use_bytes:!1,import_paths:[],source_path:null,_plugins:{}},__type__:"Lark"},$r={0:{name:"WS",pattern:{value:`(?:[ \f\r
|
|
22
|
+
])+`,flags:[],_width:[1,4294967295],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},1:{name:"IDENTIFIER",pattern:{value:"[a-zA-Z][a-zA-Z0-9_]*[a-zA-Z0-9]",flags:[],_width:[2,4294967295],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},2:{name:"INT",pattern:{value:"-?[0-9]+",flags:[],_width:[1,4294967295],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},3:{name:"STRING",pattern:{value:`(?:'[^\\']*'|"[^"]*")`,flags:[],_width:[2,4294967295],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},4:{name:"OPERATOR",pattern:{value:"(?:regex_matches|not_contains|contains|==|!=|<=|>=|<|>)",flags:[],_width:[1,13],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},5:{name:"CONJUNCTION",pattern:{value:"(?:and|or)",flags:[],_width:[2,3],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},6:{name:"NEGATION",pattern:{value:"!",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},7:{name:"TRUE",pattern:{value:"true",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},8:{name:"FALSE",pattern:{value:"false",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},9:{name:"LPAR",pattern:{value:"(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},10:{name:"RPAR",pattern:{value:")",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},11:{name:"__ANON_0",pattern:{value:"selected_value(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},12:{name:"__ANON_1",pattern:{value:"selected(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},13:{name:"__ANON_2",pattern:{value:"text(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},14:{name:"__ANON_3",pattern:{value:"text_ignore_case(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},15:{name:"__ANON_4",pattern:{value:"count_selected(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},16:{name:"__ANON_5",pattern:{value:"count_choice_selections(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},17:{name:"LSQB",pattern:{value:"[",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},18:{name:"__ANON_6",pattern:{value:"])",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},19:{name:"RSQB",pattern:{value:"]",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},20:{name:"DOT",pattern:{value:".",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},21:{origin:{name:"start",__type__:"NonTerminal"},expansion:[{name:"top_level_expr",__type__:"NonTerminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},22:{origin:{name:"start",__type__:"NonTerminal"},expansion:[{name:"bool_expr",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},23:{origin:{name:"top_level_expr",__type__:"NonTerminal"},expansion:[{name:"LPAR",filter_out:!0,__type__:"Terminal"},{name:"bool_expr",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},24:{origin:{name:"top_level_expr",__type__:"NonTerminal"},expansion:[{name:"LPAR",filter_out:!0,__type__:"Terminal"},{name:"bool_expr",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"CONJUNCTION",filter_out:!1,__type__:"Terminal"},{name:"top_level_expr",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},25:{origin:{name:"bool_expr",__type__:"NonTerminal"},expansion:[{name:"condition",__type__:"NonTerminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},26:{origin:{name:"bool_expr",__type__:"NonTerminal"},expansion:[{name:"condition",__type__:"NonTerminal"},{name:"CONJUNCTION",filter_out:!1,__type__:"Terminal"},{name:"bool_expr",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},27:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"bool_const",__type__:"NonTerminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},28:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_selected_value",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},29:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_mc_selected",__type__:"NonTerminal"}],order:2,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},30:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_mc_text",__type__:"NonTerminal"}],order:3,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},31:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_mc_text_ignore_case",__type__:"NonTerminal"}],order:4,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},32:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_mc_count",__type__:"NonTerminal"}],order:5,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},33:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_matrix_selected",__type__:"NonTerminal"}],order:6,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},34:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_matrix_count",__type__:"NonTerminal"}],order:7,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},35:{origin:{name:"qc_selected_value",__type__:"NonTerminal"},expansion:[{name:"__ANON_0",filter_out:!0,__type__:"Terminal"},{name:"question_or_matrix_statement_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},36:{origin:{name:"qc_mc_selected",__type__:"NonTerminal"},expansion:[{name:"NEGATION",filter_out:!1,__type__:"Terminal"},{name:"__ANON_1",filter_out:!0,__type__:"Terminal"},{name:"mc_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},37:{origin:{name:"qc_mc_selected",__type__:"NonTerminal"},expansion:[{name:"__ANON_1",filter_out:!0,__type__:"Terminal"},{name:"mc_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},38:{origin:{name:"qc_mc_text",__type__:"NonTerminal"},expansion:[{name:"__ANON_2",filter_out:!0,__type__:"Terminal"},{name:"mc_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"STRING",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},39:{origin:{name:"qc_mc_text_ignore_case",__type__:"NonTerminal"},expansion:[{name:"__ANON_3",filter_out:!0,__type__:"Terminal"},{name:"mc_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"STRING",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},40:{origin:{name:"qc_mc_count",__type__:"NonTerminal"},expansion:[{name:"__ANON_4",filter_out:!0,__type__:"Terminal"},{name:"question_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},41:{origin:{name:"qc_matrix_selected",__type__:"NonTerminal"},expansion:[{name:"NEGATION",filter_out:!1,__type__:"Terminal"},{name:"__ANON_1",filter_out:!0,__type__:"Terminal"},{name:"matrix_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},42:{origin:{name:"qc_matrix_selected",__type__:"NonTerminal"},expansion:[{name:"__ANON_1",filter_out:!0,__type__:"Terminal"},{name:"matrix_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},43:{origin:{name:"qc_matrix_count",__type__:"NonTerminal"},expansion:[{name:"__ANON_5",filter_out:!0,__type__:"Terminal"},{name:"question_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"},{name:"__ANON_6",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},44:{origin:{name:"qc_matrix_count",__type__:"NonTerminal"},expansion:[{name:"__ANON_5",filter_out:!0,__type__:"Terminal"},{name:"question_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"},{name:"__ANON_6",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},45:{origin:{name:"question_selector",__type__:"NonTerminal"},expansion:[{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},46:{origin:{name:"mc_choice_selector",__type__:"NonTerminal"},expansion:[{name:"question_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"},{name:"RSQB",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},47:{origin:{name:"mc_choice_selector",__type__:"NonTerminal"},expansion:[{name:"question_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"},{name:"RSQB",filter_out:!0,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},48:{origin:{name:"matrix_statement_selector",__type__:"NonTerminal"},expansion:[{name:"question_selector",__type__:"NonTerminal"},{name:"DOT",filter_out:!0,__type__:"Terminal"},{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},49:{origin:{name:"matrix_choice_selector",__type__:"NonTerminal"},expansion:[{name:"matrix_statement_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"},{name:"RSQB",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},50:{origin:{name:"matrix_choice_selector",__type__:"NonTerminal"},expansion:[{name:"matrix_statement_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"},{name:"RSQB",filter_out:!0,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},51:{origin:{name:"question_or_matrix_statement_selector",__type__:"NonTerminal"},expansion:[{name:"question_selector",__type__:"NonTerminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},52:{origin:{name:"question_or_matrix_statement_selector",__type__:"NonTerminal"},expansion:[{name:"matrix_statement_selector",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},53:{origin:{name:"bool_const",__type__:"NonTerminal"},expansion:[{name:"TRUE",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},54:{origin:{name:"bool_const",__type__:"NonTerminal"},expansion:[{name:"FALSE",filter_out:!1,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"}},zr=Object.defineProperty,Dr=(r,t,n)=>t in r?zr(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n,U=(r,t,n)=>(Dr(r,typeof t!="symbol"?t+"":t,n),n),Pr=(r,t,n)=>{if(!t.has(r))throw TypeError("Cannot "+n)},Ot=(r,t,n)=>{if(t.has(r))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(r):t.set(r,n)},J=(r,t,n)=>(Pr(r,t,"access private method"),n),Y,pe,ue,Le;const Ce=/\$\{q\:(?<locator>[\-a-zA-Z0-9_\/\(\)]+)\}/g,At=r=>{var t,n;return(n=(t=r.choiceId)!=null?t:r.choiceValue)!=null?n:r.text};class de{constructor(t,n=[],i="",s=!1){Ot(this,Y),Ot(this,ue),U(this,"questions",new Map),U(this,"responsesByQuestion",new Map),U(this,"responsesByQuestionStatement",new Map),U(this,"hashSalt"),U(this,"forExport"),U(this,"evaluationCache",new Map),this.questions=new Map((t?et(t):[]).filter(a=>a.id).map(a=>[xe(a.id),a])),n.filter(a=>a.singleAnswer||a.multipleAnswers).forEach(a=>{const o=xe(a.questionId);this.responsesByQuestion.set(o,[...this.responsesByQuestion.get(o)||[],a]),a.statementId&&this.responsesByQuestionStatement.set(`${o}.${a.statementId}`,a)}),this.hashSalt=i,this.forExport=s}getQuestionAnswers(t,n){let i;if(n){const s=this.responsesByQuestionStatement.get(`${t}.${n}`);i=s===void 0?[]:[s]}else i=this.responsesByQuestion.get(t)||[];return i.flatMap(s=>{const{multipleAnswers:a,singleAnswer:o}=s;return a||[o]})}evaluateDisplayLogic(t){if(t&&!this.forExport)try{const n=this.evaluationCache.get(t);if(n!==void 0)return n;const i=Me(t,this);return this.evaluationCache.set(t,i),i}catch(n){return console.error(n),!1}return!0}evaluateDynamicExpression(t,n){const i=this.questions.get(t.questionId);if(!i)return[];const s=this.getQuestionChoicesFlattened(i),a=s.filter(c=>this.isSelected({questionId:t.questionId,choice:c.id||c.value})),o=this.getQuestionStatementsFlattened(i),l=c=>n==="choices"?c:{...c,id:c.id||c.value||c.display},p=c=>({id:c.id,display:c.display,value:c.value});let _=[];switch(t.expression){case T.ALL:_=s.map(l);break;case T.ALL_ENTERED_TEXT:_=s.map(c=>J(this,ue,Le).call(this,c,t)).filter(c=>!!c).map(c=>l(c));break;case T.SELECTED:_=a;break;case T.SELECTED_ENTERED_TEXT:_=a.map(c=>J(this,ue,Le).call(this,c,t)).filter(c=>!!c).map(c=>l(c));break;case T.NOT_SELECTED:_=s.filter(c=>!this.isSelected({questionId:t.questionId,choice:c.id||c.value})).map(l);break;case T.FOR_MATRIX_CHOICE:_=o.filter(c=>this.isSelected({questionId:t.questionId,statementId:c.id,choice:t.identifier}));break;case T.UNSELECTED_FOR_MATRIX_CHOICE:_=o.filter(c=>!this.isSelected({questionId:t.questionId,statementId:c.id,choice:t.identifier}));break;default:_=[]}return this.forExport&&(_=t.expression===T.FOR_MATRIX_CHOICE||t.expression===T.UNSELECTED_FOR_MATRIX_CHOICE?o:s.map(l)),_.map(p)}isSelected(t){return!!J(this,Y,pe).call(this,t.questionId,t.statementId,t.choice).length}countSelected(t){return this.getQuestionAnswers(t).length}selectedValue(t){const n=this.getQuestionAnswers(t.questionId,t.statementId);return n.length?At(n[0]):null}countChoiceSelections(t,n){return J(this,Y,pe).call(this,t,null,n).length}textEntry(t){return J(this,Y,pe).call(this,t.questionId,t.statementId,t.choice).map(n=>n.text).filter(n=>n).join(", ")}getQuestionText(t){if(this.forExport)return t.text;let n=t.text;return n=n.replaceAll(Ce,(i,s)=>{if(s&&He(s)){const a=P(s);return this.evaluateDynamicExpression(a,"choices").map(o=>o.display).join(", ")}return i}),n}getQuestionChoices(t){var n;const i=((n=t.choices)!=null?n:[]).filter(s=>this.evaluateDisplayLogic(s.displayLogic));if(t.dynamicChoices){const s=P(t.dynamicChoices),a=this.evaluateDynamicExpression(s,"choices");i.push(...a)}return t.type===ye.MatrixSingle||t.type===ye.MatrixMulti?i:this.applyRandomization(i,t.id,s=>{var a;return`${(a=s.id)!=null?a:s.value}`},t.randomization)}getQuestionChoiceGroups(t){var n;const i=(((n=t.choiceGroups)==null?void 0:n.filter(s=>this.evaluateDisplayLogic(s.displayLogic)))||[]).map(s=>({...s,choices:this.applyRandomization(s.choices.filter(a=>this.evaluateDisplayLogic(a.displayLogic)),t.id,a=>{var o;return`${(o=a.id)!=null?o:a.value}`},s.randomization)})).filter(s=>!!s.choices.length);return this.applyRandomization(i,t.id,s=>s.id,t.randomization)}getQuestionStatements(t){var n;const i=((n=t.statements)!=null?n:[]).filter(s=>this.evaluateDisplayLogic(s.displayLogic));if(t.dynamicStatements){const s=P(t.dynamicStatements),a=this.evaluateDynamicExpression(s,"statements");i.push(...a)}return this.applyRandomization(i,t.id,s=>s.id,t.randomization)}getQuestionStatementGroups(t){var n;const i=(((n=t.statementGroups)==null?void 0:n.filter(s=>this.evaluateDisplayLogic(s.displayLogic)))||[]).map(s=>({...s,statements:this.applyRandomization(s.statements.filter(a=>this.evaluateDisplayLogic(a.displayLogic)),t.id,a=>a.id,s.randomization)})).filter(s=>!!s.statements.length);return this.applyRandomization(i,t.id,s=>s.id,t.randomization)}getQuestionChoicesFlattened(t){return[...this.getQuestionChoices(t),...this.getQuestionChoiceGroups(t).flatMap(n=>n.choices)]}getQuestionStatementsFlattened(t){return[...this.getQuestionStatements(t),...this.getQuestionStatementGroups(t).flatMap(n=>n.statements)]}applyRandomization(t,n,i,s){var a,o;if(!s||this.forExport)return t;const l=new Map(t.map(u=>[i(u),u])),p=[...l.keys()],_=new Set(p),c=((a=s.order)!=null?a:["$"]).filter(u=>u==="$"||_.has(u)),m=p.filter(u=>!c.includes(u)).map(u=>({weight:this.keyHash(n,u),key:u}));m.sort((u,y)=>u.weight.localeCompare(y.weight));const f=(o=s.total)!=null?o:p.length,x=Math.min(f-(c.length-1),m.length),d=[];return c.forEach(u=>{u==="$"?d.push(...m.slice(0,x).map(y=>y.key)):d.push(u)}),d.map(u=>l.get(u))}keyHash(t,n){const i=`${t}.${this.hashSalt}.${n}`;return Xt.createHash("sha256").update(i).digest("hex")}}Y=new WeakSet,pe=function(r,t,n){return this.getQuestionAnswers(r,t).filter(i=>typeof n=="undefined"||n===null||At(i)===n)},ue=new WeakSet,Le=function(r,t){if(r.textInput&&["forced","optional"].includes(r.textInput)){const n=this.textEntry({questionId:t.questionId,choice:r.id||r.value});return n.trim()?{...r,display:n}:r.textInput==="forced"?null:r}return r};function St(r){if(r.length===1)return r[0];const t=r[1].value;return t==="or"?r[0]||r[2]:t==="and"?r[0]&&r[2]:!1}function he(r,t,n){switch(t){case"==":return r===n;case"!=":return r!==n;case"<=":return r<=n;case">=":return r>=n;case"<":return r<n;case">":return r>n;default:return!1}}function $t(r,t,n,i){const s=i?r.toLowerCase():r,a=i?n.toLowerCase():n;switch(t){case"contains":return s.includes(a);case"not_contains":return!s.includes(a);case"regex_matches":try{return new RegExp(n).test(s)}catch{return!1}default:return he(s,t,a)}}function zt(r,t){return r.length===1?t(r[0]):(Ze.default(r[0].type==="NEGATION"),!t(r[1]))}function Qe(r){if(!["INT","IDENTIFIER"].includes(r.type))throw new SyntaxError(`Invalid token type: ${r.type}; expected IDENTIFIER or INT`);return R(r)}function R(r){var t,n;switch(r.type){case"IDENTIFIER":return r.value;case"INT":return parseInt(r.value,10);case"STRING":{const i=r.value.match(/(?:'(?<single>[^\']*)')|(?:"(?<double>[^\"]*)")/),s=((t=i==null?void 0:i.groups)==null?void 0:t.double)||((n=i==null?void 0:i.groups)==null?void 0:n.single);return Ze.default(s),s}case"OPERATOR":return r.value;case"TRUE":return!0;case"FALSE":return!1;default:throw new SyntaxError(`Invalid token type: ${r.type}`)}}function Me(r,t){const n={start:i=>i[0],top_level_expr:St,bool_expr:St,condition:i=>i[0],qc_mc_selected:i=>zt(i,s=>t.isSelected(s)),qc_mc_text:i=>$t(t.textEntry(i[0]),R(i[1]),R(i[2]),!1),qc_mc_text_ignore_case:i=>$t(t.textEntry(i[0]),R(i[1]),R(i[2]),!0),qc_mc_count:i=>he(t.countSelected(i[0]),R(i[1]),R(i[2])),qc_matrix_selected:i=>zt(i,s=>t.isSelected(s)),qc_selected_value:i=>{const s=t.selectedValue(i[0]);return s!==null&&he(s,R(i[1]),R(i[2]))},qc_matrix_count:i=>he(t.countChoiceSelections(i[0],Qe(i[1])),R(i[2]),R(i[3])),question_selector:i=>i[0].value,question_or_matrix_statement_selector:i=>typeof i[0]=="string"?{questionId:i[0]}:i[0],mc_choice_selector:i=>({questionId:i[0],choice:Qe(i[1])}),matrix_statement_selector:i=>({questionId:i[0],statementId:R(i[1])}),matrix_choice_selector:i=>({...i[0],choice:Qe(i[1])}),bool_const:i=>i[0].value==="true"};return Ar.get_parser({transformer:n}).parse(r)}var Lr=Object.defineProperty,Cr=(r,t,n)=>t in r?Lr(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n,C=(r,t,n)=>(Cr(r,typeof t!="symbol"?t+"":t,n),n);const Dt=new Wt.default({allowUnionTypes:!0});Vt.default(Dt);const Pt=Dt.compile(We);class K extends Error{}class $ extends Error{}class me extends Error{}class Q extends Error{}class Qr extends Error{}class Mr{constructor(){C(this,"seenQuestions",new Set),C(this,"seenMultiQuestions",new Set),C(this,"seenQuestionStatements",new Map),C(this,"seenQuestionChoices",new Map),C(this,"seenTextChoices",new Map),C(this,"evaluator",{}),C(this,"validateReference",t=>{var n,i,s;if(!this.seenQuestions.has(t.questionId))throw new K(`Invalid question: ${t.questionId}`);if(t.statementId!==void 0&&!((n=this.seenQuestionStatements.get(t.questionId))!=null&&n.has(t.statementId)))throw new K(`Invalid statement: ${t.questionId}.${t.statementId}`);if(t.choice!==void 0&&!((i=this.seenQuestionChoices.get(t.questionId))!=null&&i.has(t.choice)))throw new K(`Invalid choice: ${t.questionId}[${t.choice}]`);if(t.choice!==void 0&&t.expectText===!0&&!((s=this.seenTextChoices.get(t.questionId))!=null&&s.has(t.choice)))throw new K(`Invalid text reference: ${t.questionId}[${t.choice}]`);if(typeof t.expectMulti=="boolean"&&t.expectMulti&&!this.seenMultiQuestions.has(t.questionId))throw new $(`Invalid question reference: ${t.questionId}. Expected a multi-answer question.`);if(typeof t.expectMulti=="boolean"&&!t.expectMulti&&this.seenMultiQuestions.has(t.questionId))throw new $(`Invalid question reference: ${t.questionId}. Expected a non-multi-answer question.`)}),this.evaluator.isSelected=t=>(this.validateReference(t),!1),this.evaluator.countSelected=t=>(this.validateReference({questionId:t}),0),this.evaluator.selectedValue=t=>(this.validateReference({questionId:t.questionId,statementId:t.statementId,expectMulti:!1}),0),this.evaluator.countChoiceSelections=(t,n)=>(this.validateReference({questionId:t,choice:n}),0),this.evaluator.textEntry=t=>(this.validateReference({...t,expectText:!0}),"")}}const F=(r,t,n)=>{if(n)try{Me(n,r.evaluator)}catch(i){throw i instanceof K||i instanceof $||i instanceof Q?i:new Error(`Syntax error parsing display logic at ${t}: ${n}`)}},jr=(r,t)=>{[...t.matchAll(Ce)].forEach(n=>{var i;const s=P(n.groups.locator);if(!r.seenQuestions.has(s.questionId))throw new $(`Invalid question referenced in locator expression: ${s.questionId}/${s.expression}`);if(s.identifier&&!((i=r.seenQuestionChoices.get(s.questionId))!=null&&i.has(s.identifier)))throw new $(`Invalid question choice referenced in locator expression: ${s.questionId}/${s.expression}(${s.identifier})`)})},Z=(r,t,n)=>{if(n){const i=new Set(t);if(n.order){const s=n.order.split(" "),a=s.filter(o=>o==="$").length;if(a===0)throw new me(`Wildcard $ is missing in randomization order at ${r.id}`);if(a>1)throw new me(`Wildcard $ occurred multiples times in randomization order at ${r.id}`);if(s.forEach(o=>{if(o!=="$"&&!i.has(o))throw new me(`Unknown id ${o} in randomization ordering at ${r.id}`)}),n.total!==void 0&&n.total<s.length)throw new me(`Total value in randomization is too small at ${r.id}`)}}},Lt=(r,t)=>{const n=[T.FOR_MATRIX_CHOICE,T.UNSELECTED_FOR_MATRIX_CHOICE].includes(r.expression),i=(n?t.seenQuestionStatements:t.seenQuestionChoices).get(r.questionId);if(i===void 0)throw new $(`Invalid question referenced in locator expression: ${r.questionId}/${r.expression}`);if(n){const s=t.seenQuestionChoices.get(r.questionId);if(!r.identifier||!(s!=null&&s.has(r.identifier)))throw new $(`Invalid choice referenced in locator expression: ${r.questionId}/${r.expression}(${r.identifier})`)}return i},Ur=(r,t)=>{var n,i,s,a,o,l,p,_,c,m,f;if(jr(t,r.text),r.id!==void 0){if(F(t,r.id,r.display_logic),(n=r.statements)==null||n.forEach(d=>{F(t,`${r.id}.${d.id}`,d.display_logic)}),(i=r.choices)==null||i.forEach(d=>{F(t,`${r.id}[${d.id||d.value}]`,d.display_logic)}),r.type==="matrix-multi"||r.type==="matrix-single"?r.statement_groups?Z(r,r.statement_groups.map(d=>d.id),r.randomization):Z(r,(a=(s=r.statements)==null?void 0:s.map(d=>d.id))!=null?a:[],r.randomization):r.choice_groups?Z(r,r.choice_groups.map(d=>d.id),r.randomization):Z(r,(l=(o=r.choices)==null?void 0:o.map(d=>`${d.id||d.value}`))!=null?l:[],r.randomization),(p=r.statement_groups)==null||p.forEach(d=>{d.statements.forEach(u=>{F(t,`${r.id}.${u.id}`,u.display_logic)}),Z(r,d.statements.map(u=>u.id),d.randomization)}),(_=r.choice_groups)==null||_.forEach(d=>{d.choices.forEach(u=>{F(t,`${r.id}[${u.id||u.value}]`,u.display_logic)}),Z(r,d.choices.map(u=>`${u.id||u.value}`),d.randomization)}),t.seenQuestions.has(r.id))throw new Q(`Duplicate question id: ${r.id}`);if(t.seenQuestions.add(r.id),r.type&&["matrix-multi","mc-multi"].includes(r.type)&&t.seenMultiQuestions.add(r.id),r.statements||r.dynamic_statements){const d=new Set;if(t.seenQuestionStatements.set(r.id,d),(c=r.statements)==null||c.forEach(u=>{if(d.has(u.id))throw new Q(`Duplicate statement id: ${r.id}.${u.id}`);d.add(u.id)}),r.dynamic_statements){const u=P(r.dynamic_statements);Lt(u,t).forEach(y=>{if(typeof y=="number")throw new $(`Dynamic statement in question ${r.id} refers to choices with values`);if(d.has(y))throw new Q(`Duplicate statement ${y} via dynamic statements in question ${r.id}`);d.add(y)})}}const x=(m=r.choices)!=null?m:[];if(r.choice_groups){if(new Set(r.choice_groups.map(d=>d.id)).size!==r.choice_groups.length)throw new Q(`Choice groups must have a unique id in question ${r.id}`);r.choice_groups.forEach(d=>x.push(...d.choices))}if(x||r.dynamic_choices){const d=new Set;t.seenQuestionChoices.set(r.id,d);const u=new Set;if(t.seenTextChoices.set(r.id,u),x.forEach(y=>{var b;const q=(b=y.id)!=null?b:y.value;if(d.has(q))throw new Q(`Duplicate choice: ${r.id}[${q}]`);d.add(q),y.text_input&&y.text_input!=="no"&&u.add(q)}),r.dynamic_choices){const y=P(r.dynamic_choices);Lt(y,t).forEach(b=>{if(d.has(b))throw new Q(`Duplicate choice ${b} via dynamic choices in ${r.id}`);d.add(b)}),(f=t.seenTextChoices.get(y.questionId))==null||f.forEach(b=>u.add(b))}if(new Set([...d].map(y=>typeof y)).size>=2)throw new Qr("All choices in a question must either all have id's or all have values")}}},Fr=r=>{if(!Pt(r))throw new Error(`Invalid template: ${r.template.id}. Reason: ${JSON.stringify(Pt.errors,null,4)}`);Ve(r);const t=new Mr;r.sections.forEach(n=>{F(t,n.id,n.display_logic),n.pages.forEach(i=>{var s;(s=i.questions)==null||s.forEach(a=>{Ur(a,t)})})})};function Zr(r,t){const n=structuredClone(r);return{...n,sections:n.sections.map(i=>({id:i.id,name:i.name,hideProgressBar:i.hideProgressBar,pages:t.evaluateDisplayLogic(i.displayLogic)?i.pages.map(s=>({...s,questions:Br(s.questions,t)})).filter(s=>s.questions.length):[]})).filter(i=>i.pages.length)}}function Br(r,t){return r.filter(n=>t.evaluateDisplayLogic(n.displayLogic)).map(n=>({...n,text:t.getQuestionText(n),statements:t.getQuestionStatements(n),choices:t.getQuestionChoices(n),statementGroups:t.getQuestionStatementGroups(n),choiceGroups:t.getQuestionChoiceGroups(n),randomization:void 0}))}const Gr=r=>!!(r!=null&&r.singleAnswer)||!!(r!=null&&r.multipleAnswers)&&(r==null?void 0:r.multipleAnswers.length)>0,Wr=(r,t)=>{let n=!1,i=t,s=new de(r,i);const a=p=>_=>{const c=p.includes(_.questionId);return c&&(n=!0),!c},o=p=>_=>{const c=!_.statementId||p.includes(_.statementId);return c||(n=!0),c},l=p=>_=>{var c;if(_.singleAnswer){const f=!!_.singleAnswer.text||p.includes(_.singleAnswer.choiceId||_.singleAnswer.choiceValue);return f||(n=!0),{..._,singleAnswer:f?_.singleAnswer:void 0}}const m=(c=_.multipleAnswers)==null?void 0:c.filter(f=>!!f.text||p.includes(f.choiceId||f.choiceValue));return m&&m.length<_.multipleAnswers.length&&(n=!0),{..._,multipleAnswers:m}};for(const p of r.sections){if(!s.evaluateDisplayLogic(p.displayLogic)){const _=p.pages.flatMap(c=>c.questions).map(c=>c.id);i=i.filter(a(_)),n&&(n=!1,s=new de(r,i));continue}for(const _ of p.pages)for(const c of _.questions){if(!s.evaluateDisplayLogic(c.displayLogic))i=i.filter(a([c.id]));else{const m=s.getQuestionStatementsFlattened(c).map(u=>u.id),f=s.getQuestionChoicesFlattened(c).map(u=>u.id||u.value),x=o(m),d=l(f);i=i.filter(u=>u.questionId!==c.id||x(u)),i=i.map(u=>u.questionId!==c.id?u:d(u))}n&&(n=!1,s=new de(r,i))}}return i},Vr=We,Xr="pulse_default_alpha",Hr={allPermissions:Jt,SURVEY_RESOURCE_TYPE:Ht,surveyAdministerPermission:Be};exports.DEFAULT_TEMPLATE_ID=Xr,exports.LOCATOR_EXPRESSION=T,exports.QUESTION_TEXT_LOCATOR_PATTERN=Ce,exports.TemplateContextEvaluator=de,exports.evaluateExpression=Me,exports.evaluateTemplateNode=Zr,exports.extractQuestionNodes=et,exports.getExperimentalOptionalBoolean=Yt,exports.getExperimentalOptionalString=Kt,exports.getQualifiedQuestionId=Ye,exports.getQuestionTypeEnum=Ke,exports.getRandomizationTypeEnum=Je,exports.getRawQuestionId=xe,exports.getRelevantQuestionResponses=Wr,exports.getTemplateNode=vn,exports.hasAnswer=Gr,exports.interpolateMacros=fe,exports.interpolateTemplate=Ve,exports.parseLocator=P,exports.permissions=Hr,exports.polyfillStructuredClone=en,exports.templateSchema=Vr,exports.transformCase=te,exports.validateLocator=He,exports.validateTemplate=Fr;
|
|
23
23
|
//# sourceMappingURL=index.cjs.js.map
|
package/dist/index.esm.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import{createPermission as Lt}from"@backstage/plugin-permission-common";import Ct from"@ungap/structured-clone";import Qt from"ajv";import Mt from"ajv-formats";import Fe from"assert";import K from"lodash";import*as jt from"crypto";const Ut="survey-instance",Ze=Lt({name:"survey.instance.administer",attributes:{action:"create"}}),Ft=[Ze],Be="pulse.experimentalFlags",Zt=(r,t)=>{const n=r.getOptionalStringArray(Be);return n==null?void 0:n.includes(t)},Bt=(r,t)=>{var n;const i=r.getOptionalStringArray(Be),s=`${t}=`;return(n=i==null?void 0:i.find(a=>a.startsWith(s)))==null?void 0:n.replace(s,"")},Gt=()=>{"structuredClone"in globalThis||(globalThis.structuredClone=Ct)};var Wt="surveyTemplate",Vt="http://json-schema.org/draft-07/schema",Xt="Survey Template",Ht="object",Jt={template:{type:"object",description:"Meta data about the survey template",properties:{id:{type:"string",description:"An id of the survey template. If there are multiple templates with the same id, they must have different versions.",format:"regex",pattern:"^[a-zA-Z][a-zA-Z0-9_-]*[a-zA-Z0-9]$",minLength:1},version:{type:"string",format:"regex",pattern:"^[0-9]+(\\.[0-9]+)?$",description:"A version of template"},name:{type:"string",description:"The display name of the survey template",minLength:1},description:{type:"string",description:"A longer description of the survey template"},owner:{type:"string",description:"The owner of the survey template",minLength:1}},required:["id","version","name","owner"],additionalProperties:!1},parameters:{type:"array",description:"Template parameters that can or must be set when creating a survey from this template. Parameters are referred to elsewhere in the survey using the ${p:<id>} construct and will get lazily in-place replaced.",items:{type:"object",properties:{id:{type:"string",description:"The id of the parameter",format:"regex",pattern:"^[a-zA-Z][a-zA-Z0-9_]*$"},description:{type:"string",description:"The description of the parameter"},format:{type:"string",enum:["string","number","boolean"],description:"The format of the parameter. Should only be set if a default value is not provided."},default:{type:["string","number","boolean"],description:"An optional default value of this parameter. If this is omitted, the parameter must be provided when creating a survey from the template."}},required:["id","description"],oneOf:[{required:["format"]},{required:["default"]}],additionalProperties:!1}},macros:{type:"object",description:"Expression shortcuts. Macros are referred to elsewhere in the survey using the ${m:<name>} construct (similar to parameters) and will get lazily in-place replaced. Macros can be recursive and contain references to parameters or answers in the survey.",additionalProperties:{type:"string"}},sections:{type:"array",description:"The survey sections, in the order they will appear in the survey",items:{$ref:"#/$defs/section"}}},Yt=!1,Kt=["template","parameters","sections"],en={section:{type:"object",description:"A survey section.",properties:{id:{type:"string",description:"The id of this section",format:"regex",pattern:"^[a-zA-Z][a-zA-Z0-9_-]*[a-zA-Z0-9]$"},name:{type:"string",description:"The name of this section"},display_logic:{type:"string",description:"An optional boolean expression that decides if the surveyee should see the questions in this section."},hide_progress_bar:{type:"boolean",description:"When set, the survey progress bar will not be shown during this section."},pages:{type:"array",description:"The questions in the section, split into pages",items:{$ref:"#/$defs/page"}}},additionalProperties:!1,required:["id","name","pages"]},page:{type:"object",properties:{questions:{type:"array",description:"The questions on the page",items:{$ref:"#/$defs/question"}}},required:["questions"],additionalProperties:!1},question:{type:"object",properties:{id:{type:"string",description:"The unique ID of the question",pattern:"^[a-zA-Z][a-zA-Z0-9_]*$"},text:{type:"string",description:"The question description, in markdown"},type:{type:"string",enum:["mc-single","mc-multi","matrix-single","matrix-multi","text-single","text-multi","description"],description:"The type of question"},layout:{type:"string",enum:["vertical","horizontal"],description:"Determines the visual layout of the options in multiple choice questions"},display_logic:{type:"string",description:"A boolean expression with logic if this question should be displayed or not"},required:{type:"string",enum:["required","optional","request"],description:"If the question is required to answer; request means you will get a warning if you skip it but you can."},validation:{type:"object",description:"Validation constraints on the question. Only applied if the user has answered the question, so typically used in combination with required",properties:{min_choices:{type:"integer",description:"The minimum number of choices to user can pick (multiple choice questions only)"},max_choices:{type:"integer",description:"The maximum number of choices to user can pick (multiple choice questions only)"}},additionalProperties:!1},statements:{type:"array",items:{$ref:"#/$defs/statement"}},dynamic_statements:{type:"string",description:"Carry forward statements from a previous question",pattern:"^[a-zA-Z][a-zA-Z0-9_]*/(all|selected|all_entered_text|selected_entered_text|not_selected|for_matrix_choice\\([\\-a-zA-Z0-9_]+\\)|unselected_for_matrix_choice\\([\\-a-zA-Z0-9_]+\\))$"},statement_groups:{type:"array",items:{type:"object",properties:{statements:{type:"array",items:{$ref:"#/$defs/statement"}},id:{type:"string",description:"The id of the group."},display:{type:"string",description:"The display name of the group"},display_logic:{type:"string",description:"A boolean expression determining if the group should be displayed"},randomization:{$ref:"#/$defs/randomization"}},required:["statements","id","display"],additionalProperties:!1}},choices:{type:"array",items:{$ref:"#/$defs/choice"}},dynamic_choices:{type:"string",description:"Carry forward choices from a previous question",pattern:"^[a-zA-Z][a-zA-Z0-9_]*/(all|selected|all_entered_text|selected_entered_text|not_selected|for_matrix_choice\\([\\-a-zA-Z0-9_]+\\)|unselected_for_matrix_choice\\([\\-a-zA-Z0-9_]+\\))$"},choice_groups:{type:"array",items:{type:"object",properties:{choices:{type:"array",items:{$ref:"#/$defs/choice"}},id:{type:"string",description:"The id of the group."},display:{type:"string",description:"The display name of the group"},display_logic:{type:"string",description:"A boolean expression determining if the group should be displayed"},randomization:{$ref:"#/$defs/randomization"}},required:["choices","id","display"],additionalProperties:!1}},randomization:{$ref:"#/$defs/randomization"},configuration:{type:"object",properties:{choice_column_width_pixels:{type:"integer",description:"Size of the column with the choice descriptions in a matrix question"}},additionalProperties:!1}},additionalProperties:!1,required:["text"],oneOf:[{$ref:"#/$defs/question-mc-horizontal"},{$ref:"#/$defs/question-mc-vertical"},{$ref:"#/$defs/question-matrix"},{$ref:"#/$defs/question-text"},{$ref:"#/$defs/question-description"}]},"question-mc-horizontal":{type:"object",properties:{type:{enum:["mc-single","mc-multi"]},position:{const:"horizontal"}},required:["id","type","position","choices"],not:{anyOf:[{required:["choice_groups"]},{required:["dynamic_choices"]},{required:["statements"]},{required:["dynamic_statements"]},{required:["statement_groups"]}]}},"question-mc-vertical":{type:"object",properties:{type:{enum:["mc-single","mc-multi"]},position:{const:"vertical"}},required:["id","type"],not:{anyOf:[{required:["statements"]},{required:["dynamic_statements"]},{required:["statement_groups"]}]},oneOf:[{anyOf:[{required:["choices"]},{required:["dynamic_choices"]}],not:{required:["choice_groups"]}},{required:["choice_groups"],not:{anyOf:[{required:["choices"]},{required:["dynamic_choices"]}]}}]},"question-matrix":{type:"object",properties:{type:{enum:["matrix-single","matrix-multi"]}},required:["id","type","choices"],not:{anyOf:[{required:["dynamic_choices"]},{required:["choice_groups"]}]},oneOf:[{anyOf:[{required:["statements"]},{required:["dynamic_statements"]}],not:{required:["statement_groups"]}},{required:["statement_groups"],not:{anyOf:[{required:["statements"]},{required:["dynamic_statements"]}]}}]},"question-text":{type:"object",properties:{type:{enum:["text-single","text-multi"]}},required:["id","type"],not:{anyOf:[{required:["choices"]},{required:["choice_groups"]},{required:["dynamic_choices"]},{required:["statements"]},{required:["statement_groups"]},{required:["dynamic_statements"]},{required:["randomization"]}]}},"question-description":{type:"object",properties:{type:{const:"description"}},not:{anyOf:[{required:["choices"]},{required:["choice_groups"]},{required:["dynamic_choices"]},{required:["statements"]},{required:["statement_groups"]},{required:["dynamic_statements"]},{required:["randomization"]}]}},statement:{type:"object",properties:{id:{type:"string",pattern:"^[a-zA-Z][a-zA-Z0-9_]*$",description:"The id of the statement"},display:{type:"string",description:"The statement name, as shown to the surveyee"},display_logic:{type:"string",description:"A boolean expression determining if the statement should be displayed"}},required:["id","display"],additionalProperties:!1},choice:{type:"object",properties:{display:{type:"string",description:"The choice name, as shown to the surveyee"},id:{type:"string",pattern:"^[a-zA-Z][a-zA-Z0-9_]*$",description:"The id of the choice"},value:{type:"integer",description:"The value the choice"},display_logic:{type:"string",description:"A boolean expression determining if the choice should be displayed"},text_input:{type:"string",enum:["no","optional","forced"],description:"If a textbox should appear next to the choice, and if it should be mandatory to fill it in if the choice is selected"},exclusive_answer:{type:"boolean",description:"If true, this choice can't be combined with other choices in this question"}},required:["display"],oneOf:[{required:["value"]},{required:["id"]}],additionalProperties:!1},randomization:{type:"object",description:"Configuration of the display order randomization of choices, statements or groups.",properties:{type:{type:"string",description:"The type of randomization: randomize all items, a subset of them, or using constrained randomization",enum:["all","subset","constrained"]},total:{type:"integer",description:"Maximum number of items to show"},order:{type:"string",description:"A space separated string containing the order of the items; each 'word' is either an id of some item or the wildcard $ representing the remaining items"}},required:["type"],oneOf:[{properties:{type:{const:"all"}},not:{required:["total","order"]}},{properties:{type:{const:"subset"}},required:["total"],not:{required:["order"]}},{properties:{type:{const:"constrained"}},required:["order"]}],additionalProperties:!1}},Ge={$id:Wt,$schema:Vt,title:Xt,type:Ht,properties:Jt,additionalProperties:Yt,required:Kt,$defs:en},tn=(r=>(r.DuplicateResponse="DUPLICATE_RESPONSE",r.InternalError="INTERNAL_ERROR",r.InvalidDates="INVALID_DATES",r.InvalidId="INVALID_ID",r.InvalidParticipants="INVALID_PARTICIPANTS",r.InvalidResponse="INVALID_RESPONSE",r.MissingTitle="MISSING_TITLE",r.OverlappingSurveys="OVERLAPPING_SURVEYS",r.ParticipantsFrozen="PARTICIPANTS_FROZEN",r.SurveyIsClosed="SURVEY_IS_CLOSED",r.Unauthorized="UNAUTHORIZED",r))(tn||{}),nn=(r=>(r.Horizontal="HORIZONTAL",r.Vertical="VERTICAL",r))(nn||{}),rn=(r=>(r.Optional="OPTIONAL",r.Request="REQUEST",r.Required="REQUIRED",r))(rn||{}),me=(r=>(r.Description="DESCRIPTION",r.MatrixMulti="MATRIX_MULTI",r.MatrixSingle="MATRIX_SINGLE",r.McMulti="MC_MULTI",r.McSingle="MC_SINGLE",r.TextMulti="TEXT_MULTI",r.TextSingle="TEXT_SINGLE",r))(me||{}),sn=(r=>(r.All="ALL",r.Constrained="CONSTRAINED",r.Subset="SUBSET",r))(sn||{}),an=(r=>(r.Finalized="FINALIZED",r.Partial="PARTIAL",r))(an||{}),on=(r=>(r.Active="ACTIVE",r.Published="PUBLISHED",r))(on||{}),ln=(r=>(r.Q1="Q1",r.Q2="Q2",r.Q3="Q3",r.Q4="Q4",r))(ln||{}),_n=Object.defineProperty,cn=(r,t,n)=>t in r?_n(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n,k=(r,t,n)=>(cn(r,typeof t!="symbol"?t+"":t,n),n);function pn(r={}){return r.transformer&&r.transformer.constructor.name==="object"&&(r.transformer=X.fromObj(r.transformer)),xt._load_from_dict({data:mr,memo:fr,...r})}const We={};class Ve{}const ee={},Xe={escape(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")},compile(r,t){return new RegExp(r,t)},error:SyntaxError};function un(r,t,n,i){const s=r.compile(t,i).exec(n);if(s!=null)return s[0]}class He{constructor(t,n,i,s,a=!1){this.terminals=t,this.g_regex_flags=n,this.re_=i,this.use_bytes=s,this.match_whole=a,this.allowed_types=new Set(this.terminals.map(o=>o.name)),this._regexps=this._build_mres(t)}_build_mres(t){let n=this.match_whole?"$":"",i=wn(t,a=>a.pattern.flags.join("")),s=[];for(let[a,o]of i){const l=o.map(p=>`(?<${p.name}>${p.pattern.to_regexp()+n})`).join("|");s.push(new RegExp(l,this.g_regex_flags+a+"y"))}return s}match(t,n){for(const i of this._regexps){i.lastIndex=n;let s=i.exec(t);if(s){let a=null;for(let[o,l]of Object.entries(s.groups))if(l){a=o;break}return[s[0],a]}}}}const Je=typeof require!="undefined"&&require("util");class Ye{}const G={};function T(r){return Object.entries(r)}function fe(r){return Object.keys(r)}function hn(r,t){t===void 0&&(t=Object.keys(r)[0]);let n=r[t];return delete r[t],n}function Ke(r,t,n=null){return r[t]||n}function et(r,t){if(r.constructor.name==="Map")for(const[n,i]of T(t))r.set(n,i);else for(const[n,i]of T(t))r[n]=i}function dn(r){return function(){return new r(...arguments)}}function d(r){let t=0,n=[...arguments].slice(1);return r.replace(/%([sr])/g,function(){const i=arguments[1],s=n[t++];return i==="r"?Je?Je.inspect(s,!1,null,!0):JSON.stringify(s,null,0):s})}function mn(r,t){let n=new Set(r);for(const i of t)n.add(i);return n}function tt(r,t){return[...r].filter(n=>!t.has(n))}function nt(r){return{...r}}function rt(r){return!!r}function ye(r){return Object.create(r.prototype)}function I(r){if(typeof r=="object"){let t=Object.create(Object.getPrototypeOf(r));return Object.assign(t,r)}return r}function te(r){return new Set(r)}function ge(r){return r&&r.constructor.name==="Object"}function fn(r){return r&&r.constructor.name==="Array"}function yn(r){return typeof r=="function"}function*W(r,t=0){let n=t;for(const i of r)yield[n++,i]}function gn(r){for(const t of r)if(t)return!0;return!1}function it(r,t){return t.filter(r||rt)}function ne(r){let t=[...arguments].slice(1);return function(){return r(...t,...arguments)}}class xe extends Error{}function E(r){return r[r.length-1]}function P(r){return function(){let t=new r(...arguments);return t.__call__.bind(t)}}function O(r,t){return Array.from({length:t},()=>r).flat()}function st(r){return/^[A-Z_$]*$/.test(r)}function we(r,t,n){const i=r.split(t);return n?i.splice(-n-1):i}function Te(r,t){let n=new RegExp(t,"g");return(r.match(n)||[]).length}function xn(r,t){for(let n of r)if(!t.has(n))return!1;return!0}function*wn(r,t){let n=[],i=null;for(const s of r){const a=t(s);i&&a!=i&&(yield[i,n],n=[]),n.push(s),i=a}yield[i,n]}class A extends Error{}class S extends A{}function ve(r,t,n="Got %r, expected one of %s"){if(!t.includes(r))throw new S(d(n,r,t))}class re extends A{}class Tn extends A{}class V extends A{}class z extends A{constructor(){super(...arguments),k(this,"pos_in_stream",null),k(this,"_terminals_by_name",null)}get_context(t,n=40){let i,s,a=this.pos_in_stream,o=max(a-n,0),l=a+n;return t instanceof bytes?(s=E(we(t.slice(o,a),`
|
|
1
|
+
import{createPermission as Lt}from"@backstage/plugin-permission-common";import Ct from"@ungap/structured-clone";import Qt from"ajv";import Mt from"ajv-formats";import Fe from"assert";import*as jt from"crypto";import K from"lodash";const Ut="survey-instance",Ze=Lt({name:"survey.instance.administer",attributes:{action:"create"}}),Ft=[Ze],Be="pulse.experimentalFlags",Zt=(r,t)=>{const n=r.getOptionalStringArray(Be);return n==null?void 0:n.includes(t)},Bt=(r,t)=>{var n;const i=r.getOptionalStringArray(Be),s=`${t}=`;return(n=i==null?void 0:i.find(a=>a.startsWith(s)))==null?void 0:n.replace(s,"")},Gt=()=>{"structuredClone"in globalThis||(globalThis.structuredClone=Ct)};var Wt="surveyTemplate",Vt="http://json-schema.org/draft-07/schema",Xt="Survey Template",Ht="object",Jt={template:{type:"object",description:"Meta data about the survey template",properties:{id:{type:"string",description:"An id of the survey template. If there are multiple templates with the same id, they must have different versions.",format:"regex",pattern:"^[a-zA-Z][a-zA-Z0-9_-]*[a-zA-Z0-9]$",minLength:1},version:{type:"string",format:"regex",pattern:"^[0-9]+(\\.[0-9]+)?$",description:"A version of template"},name:{type:"string",description:"The display name of the survey template",minLength:1},description:{type:"string",description:"A longer description of the survey template"},owner:{type:"string",description:"The owner of the survey template",minLength:1}},required:["id","version","name","owner"],additionalProperties:!1},parameters:{type:"array",description:"Template parameters that can or must be set when creating a survey from this template. Parameters are referred to elsewhere in the survey using the ${p:<id>} construct and will get lazily in-place replaced.",items:{type:"object",properties:{id:{type:"string",description:"The id of the parameter",format:"regex",pattern:"^[a-zA-Z][a-zA-Z0-9_]*$"},description:{type:"string",description:"The description of the parameter"},format:{type:"string",enum:["string","number","boolean"],description:"The format of the parameter. Should only be set if a default value is not provided."},default:{type:["string","number","boolean"],description:"An optional default value of this parameter. If this is omitted, the parameter must be provided when creating a survey from the template."}},required:["id","description"],oneOf:[{required:["format"]},{required:["default"]}],additionalProperties:!1}},macros:{type:"object",description:"Expression shortcuts. Macros are referred to elsewhere in the survey using the ${m:<name>} construct (similar to parameters) and will get lazily in-place replaced. Macros can be recursive and contain references to parameters or answers in the survey.",additionalProperties:{type:"string"}},sections:{type:"array",description:"The survey sections, in the order they will appear in the survey",items:{$ref:"#/$defs/section"}}},Yt=!1,Kt=["template","parameters","sections"],en={section:{type:"object",description:"A survey section.",properties:{id:{type:"string",description:"The id of this section",format:"regex",pattern:"^[a-zA-Z][a-zA-Z0-9_-]*[a-zA-Z0-9]$"},name:{type:"string",description:"The name of this section"},display_logic:{type:"string",description:"An optional boolean expression that decides if the surveyee should see the questions in this section."},hide_progress_bar:{type:"boolean",description:"When set, the survey progress bar will not be shown during this section."},pages:{type:"array",description:"The questions in the section, split into pages",items:{$ref:"#/$defs/page"}}},additionalProperties:!1,required:["id","name","pages"]},page:{type:"object",properties:{questions:{type:"array",description:"The questions on the page",items:{$ref:"#/$defs/question"}}},required:["questions"],additionalProperties:!1},question:{type:"object",properties:{id:{type:"string",description:"The unique ID of the question",pattern:"^[a-zA-Z][a-zA-Z0-9_]*$"},text:{type:"string",description:"The question description, in markdown"},type:{type:"string",enum:["mc-single","mc-multi","matrix-single","matrix-multi","text-single","text-multi","description"],description:"The type of question"},layout:{type:"string",enum:["vertical","horizontal"],description:"Determines the visual layout of the options in multiple choice questions"},display_logic:{type:"string",description:"A boolean expression with logic if this question should be displayed or not"},required:{type:"string",enum:["required","optional","request"],description:"If the question is required to answer; request means you will get a warning if you skip it but you can."},validation:{type:"object",description:"Validation constraints on the question. Only applied if the user has answered the question, so typically used in combination with required",properties:{min_choices:{type:"integer",description:"The minimum number of choices to user can pick (multiple choice questions only)"},max_choices:{type:"integer",description:"The maximum number of choices to user can pick (multiple choice questions only)"}},additionalProperties:!1},statements:{type:"array",items:{$ref:"#/$defs/statement"}},dynamic_statements:{type:"string",description:"Carry forward statements from a previous question",pattern:"^[a-zA-Z][a-zA-Z0-9_]*/(all|selected|all_entered_text|selected_entered_text|not_selected|for_matrix_choice\\([\\-a-zA-Z0-9_]+\\)|unselected_for_matrix_choice\\([\\-a-zA-Z0-9_]+\\))$"},statement_groups:{type:"array",items:{type:"object",properties:{statements:{type:"array",items:{$ref:"#/$defs/statement"}},id:{type:"string",description:"The id of the group."},display:{type:"string",description:"The display name of the group"},display_logic:{type:"string",description:"A boolean expression determining if the group should be displayed"},randomization:{$ref:"#/$defs/randomization"}},required:["statements","id","display"],additionalProperties:!1}},choices:{type:"array",items:{$ref:"#/$defs/choice"}},dynamic_choices:{type:"string",description:"Carry forward choices from a previous question",pattern:"^[a-zA-Z][a-zA-Z0-9_]*/(all|selected|all_entered_text|selected_entered_text|not_selected|for_matrix_choice\\([\\-a-zA-Z0-9_]+\\)|unselected_for_matrix_choice\\([\\-a-zA-Z0-9_]+\\))$"},choice_groups:{type:"array",items:{type:"object",properties:{choices:{type:"array",items:{$ref:"#/$defs/choice"}},id:{type:"string",description:"The id of the group."},display:{type:"string",description:"The display name of the group"},display_logic:{type:"string",description:"A boolean expression determining if the group should be displayed"},randomization:{$ref:"#/$defs/randomization"}},required:["choices","id","display"],additionalProperties:!1}},randomization:{$ref:"#/$defs/randomization"},configuration:{type:"object",properties:{choice_column_width_pixels:{type:"integer",description:"Size of the column with the choice descriptions in a matrix question"}},additionalProperties:!1}},additionalProperties:!1,required:["text"],oneOf:[{$ref:"#/$defs/question-mc-horizontal"},{$ref:"#/$defs/question-mc-vertical"},{$ref:"#/$defs/question-matrix"},{$ref:"#/$defs/question-text"},{$ref:"#/$defs/question-description"}]},"question-mc-horizontal":{type:"object",properties:{type:{enum:["mc-single","mc-multi"]},position:{const:"horizontal"}},required:["id","type","position","choices"],not:{anyOf:[{required:["choice_groups"]},{required:["dynamic_choices"]},{required:["statements"]},{required:["dynamic_statements"]},{required:["statement_groups"]}]}},"question-mc-vertical":{type:"object",properties:{type:{enum:["mc-single","mc-multi"]},position:{const:"vertical"}},required:["id","type"],not:{anyOf:[{required:["statements"]},{required:["dynamic_statements"]},{required:["statement_groups"]}]},oneOf:[{anyOf:[{required:["choices"]},{required:["dynamic_choices"]}],not:{required:["choice_groups"]}},{required:["choice_groups"],not:{anyOf:[{required:["choices"]},{required:["dynamic_choices"]}]}}]},"question-matrix":{type:"object",properties:{type:{enum:["matrix-single","matrix-multi"]}},required:["id","type","choices"],not:{anyOf:[{required:["dynamic_choices"]},{required:["choice_groups"]}]},oneOf:[{anyOf:[{required:["statements"]},{required:["dynamic_statements"]}],not:{required:["statement_groups"]}},{required:["statement_groups"],not:{anyOf:[{required:["statements"]},{required:["dynamic_statements"]}]}}]},"question-text":{type:"object",properties:{type:{enum:["text-single","text-multi"]}},required:["id","type"],not:{anyOf:[{required:["choices"]},{required:["choice_groups"]},{required:["dynamic_choices"]},{required:["statements"]},{required:["statement_groups"]},{required:["dynamic_statements"]},{required:["randomization"]}]}},"question-description":{type:"object",properties:{type:{const:"description"}},not:{anyOf:[{required:["choices"]},{required:["choice_groups"]},{required:["dynamic_choices"]},{required:["statements"]},{required:["statement_groups"]},{required:["dynamic_statements"]},{required:["randomization"]}]}},statement:{type:"object",properties:{id:{type:"string",pattern:"^[a-zA-Z][a-zA-Z0-9_]*$",description:"The id of the statement"},display:{type:"string",description:"The statement name, as shown to the surveyee"},display_logic:{type:"string",description:"A boolean expression determining if the statement should be displayed"}},required:["id","display"],additionalProperties:!1},choice:{type:"object",properties:{display:{type:"string",description:"The choice name, as shown to the surveyee"},id:{type:"string",pattern:"^[a-zA-Z][a-zA-Z0-9_]*$",description:"The id of the choice"},value:{type:"integer",description:"The value the choice"},display_logic:{type:"string",description:"A boolean expression determining if the choice should be displayed"},text_input:{type:"string",enum:["no","optional","forced"],description:"If a textbox should appear next to the choice, and if it should be mandatory to fill it in if the choice is selected"},exclusive_answer:{type:"boolean",description:"If true, this choice can't be combined with other choices in this question"}},required:["display"],oneOf:[{required:["value"]},{required:["id"]}],additionalProperties:!1},randomization:{type:"object",description:"Configuration of the display order randomization of choices, statements or groups.",properties:{type:{type:"string",description:"The type of randomization: randomize all items, a subset of them, or using constrained randomization",enum:["all","subset","constrained"]},total:{type:"integer",description:"Maximum number of items to show"},order:{type:"string",description:"A space separated string containing the order of the items; each 'word' is either an id of some item or the wildcard $ representing the remaining items"}},required:["type"],oneOf:[{properties:{type:{const:"all"}},not:{required:["total","order"]}},{properties:{type:{const:"subset"}},required:["total"],not:{required:["order"]}},{properties:{type:{const:"constrained"}},required:["order"]}],additionalProperties:!1}},Ge={$id:Wt,$schema:Vt,title:Xt,type:Ht,properties:Jt,additionalProperties:Yt,required:Kt,$defs:en};const tn=/\$\{m:([^\}]+)\}/g,nn=100,me=(r,t)=>{if(typeof t=="string"){let n=t,i=0;for(;i<nn;){const s=n.replace(tn,(a,o)=>{if(r[o]===void 0)throw new Error(`Undefined macro: ${o}`);return r[o]});if(s===n)return s;n=s,i+=1}throw new Error(`Failed to finish interpolate macros - cyclic macros!? Stuck at: ${t}"`)}return typeof t=="object"&&Object.keys(t).forEach(n=>{t[n]=me(r,t[n])}),t},We=r=>(r.sections=me(r.macros||{},r.sections),r),rn="(?<questionId>[a-zA-Z][a-zA-Z0-9_]*)",sn="((?<expressionWithoutIdentifier>all|all_entered_text|selected|selected_entered_text|not_selected)|(?<expressionWithIdentifier>for_matrix_choice|unselected_for_matrix_choice)(\\((?<identifier>[\\-a-zA-Z0-9_]+)\\)))",Ve=new RegExp(`^${rn}/${sn}$`);var v=(r=>(r.ALL="all",r.ALL_ENTERED_TEXT="all_entered_text",r.SELECTED="selected",r.SELECTED_ENTERED_TEXT="selected_entered_text",r.NOT_SELECTED="not_selected",r.FOR_MATRIX_CHOICE="for_matrix_choice",r.UNSELECTED_FOR_MATRIX_CHOICE="unselected_for_matrix_choice",r))(v||{});const Xe=r=>Ve.test(r),P=r=>{var t;const n=(t=r.match(Ve))==null?void 0:t.groups;if(!n)throw new Error(`Invalid locator expression: ${r}`);const i=n.expressionWithoutIdentifier||n.expressionWithIdentifier||"all",s={questionId:n.questionId,expression:i};if(n.identifier){const a=isNaN(parseInt(n.identifier,10))?n.identifier:parseInt(n.identifier,10);s.identifier=a}return s};var an=(r=>(r.DuplicateResponse="DUPLICATE_RESPONSE",r.InternalError="INTERNAL_ERROR",r.InvalidDates="INVALID_DATES",r.InvalidId="INVALID_ID",r.InvalidParticipants="INVALID_PARTICIPANTS",r.InvalidResponse="INVALID_RESPONSE",r.MissingTitle="MISSING_TITLE",r.OverlappingSurveys="OVERLAPPING_SURVEYS",r.ParticipantsFrozen="PARTICIPANTS_FROZEN",r.SurveyIsClosed="SURVEY_IS_CLOSED",r.Unauthorized="UNAUTHORIZED",r))(an||{}),on=(r=>(r.Horizontal="HORIZONTAL",r.Vertical="VERTICAL",r))(on||{}),ln=(r=>(r.Optional="OPTIONAL",r.Request="REQUEST",r.Required="REQUIRED",r))(ln||{}),fe=(r=>(r.Description="DESCRIPTION",r.MatrixMulti="MATRIX_MULTI",r.MatrixSingle="MATRIX_SINGLE",r.McMulti="MC_MULTI",r.McSingle="MC_SINGLE",r.TextMulti="TEXT_MULTI",r.TextSingle="TEXT_SINGLE",r))(fe||{}),_n=(r=>(r.All="ALL",r.Constrained="CONSTRAINED",r.Subset="SUBSET",r))(_n||{}),cn=(r=>(r.Finalized="FINALIZED",r.Partial="PARTIAL",r))(cn||{}),pn=(r=>(r.Active="ACTIVE",r.Published="PUBLISHED",r))(pn||{}),un=(r=>(r.Q1="Q1",r.Q2="Q2",r.Q3="Q3",r.Q4="Q4",r))(un||{});const ee=(r,t="camelCase")=>{const n=t==="camelCase"?K.camelCase:K.snakeCase;return K.transform(r,(i,s,a)=>{const o=typeof a=="string"?n(a):a;i[o]=K.isObject(s)&&!(s instanceof Date)?ee(s,t):s})};function hn(r){const t=structuredClone(r);return{...t,...t.template,sections:t.sections.map(n=>({...ee(n),pages:n.pages.map((i,s)=>({...i,id:`${n.id}-${s}`,questions:dn(t,n,i.questions)}))}))}}function dn(r,t,n){return n.map(i=>mn(r.template.id,t,i))}function mn(r,t,n){var i,s;return{...ee({...n,choiceGroups:(i=n.choice_groups)==null?void 0:i.map(a=>({...a,randomization:ye(a.randomization)})),statementGroups:(s=n.statement_groups)==null?void 0:s.map(a=>({...a,randomization:ye(a.randomization)})),randomization:ye(n.randomization)}),id:Je(r,n),type:Ye(n.type),layout:fn(n.layout),required:yn(n.required),label:t.name}}function ye(r){var t;return r?{type:He(r.type),order:(t=r.order)==null?void 0:t.split(" "),total:r.total}:void 0}function He(r){return r.toUpperCase()}function Je(r,t){return`${r}.${t.id}`}const ge=r=>r.split(".").pop();function Ye(r="description"){return r.replace("-","_").toUpperCase()}function fn(r){return r==null?void 0:r.toUpperCase()}function yn(r="optional"){return r.replace("-","_").toUpperCase()}function Ke(r){return structuredClone(r).sections.flatMap(t=>t.pages.flatMap(n=>n.questions))}var gn=Object.defineProperty,xn=(r,t,n)=>t in r?gn(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n,k=(r,t,n)=>(xn(r,typeof t!="symbol"?t+"":t,n),n);function wn(r={}){return r.transformer&&r.transformer.constructor.name==="object"&&(r.transformer=X.fromObj(r.transformer)),Rt._load_from_dict({data:Er,memo:Nr,...r})}const et={};class tt{}const te={},nt={escape(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")},compile(r,t){return new RegExp(r,t)},error:SyntaxError};function Tn(r,t,n,i){const s=r.compile(t,i).exec(n);if(s!=null)return s[0]}class rt{constructor(t,n,i,s,a=!1){this.terminals=t,this.g_regex_flags=n,this.re_=i,this.use_bytes=s,this.match_whole=a,this.allowed_types=new Set(this.terminals.map(o=>o.name)),this._regexps=this._build_mres(t)}_build_mres(t){let n=this.match_whole?"$":"",i=qn(t,a=>a.pattern.flags.join("")),s=[];for(let[a,o]of i){const l=o.map(p=>`(?<${p.name}>${p.pattern.to_regexp()+n})`).join("|");s.push(new RegExp(l,this.g_regex_flags+a+"y"))}return s}match(t,n){for(const i of this._regexps){i.lastIndex=n;let s=i.exec(t);if(s){let a=null;for(let[o,l]of Object.entries(s.groups))if(l){a=o;break}return[s[0],a]}}}}const it=typeof require!="undefined"&&require("util");class st{}const G={};function T(r){return Object.entries(r)}function xe(r){return Object.keys(r)}function vn(r,t){t===void 0&&(t=Object.keys(r)[0]);let n=r[t];return delete r[t],n}function at(r,t,n=null){return r[t]||n}function ot(r,t){if(r.constructor.name==="Map")for(const[n,i]of T(t))r.set(n,i);else for(const[n,i]of T(t))r[n]=i}function bn(r){return function(){return new r(...arguments)}}function d(r){let t=0,n=[...arguments].slice(1);return r.replace(/%([sr])/g,function(){const i=arguments[1],s=n[t++];return i==="r"?it?it.inspect(s,!1,null,!0):JSON.stringify(s,null,0):s})}function En(r,t){let n=new Set(r);for(const i of t)n.add(i);return n}function lt(r,t){return[...r].filter(n=>!t.has(n))}function _t(r){return{...r}}function ct(r){return!!r}function we(r){return Object.create(r.prototype)}function I(r){if(typeof r=="object"){let t=Object.create(Object.getPrototypeOf(r));return Object.assign(t,r)}return r}function ne(r){return new Set(r)}function Te(r){return r&&r.constructor.name==="Object"}function Nn(r){return r&&r.constructor.name==="Array"}function Rn(r){return typeof r=="function"}function*W(r,t=0){let n=t;for(const i of r)yield[n++,i]}function kn(r){for(const t of r)if(t)return!0;return!1}function pt(r,t){return t.filter(r||ct)}function re(r){let t=[...arguments].slice(1);return function(){return r(...t,...arguments)}}class ve extends Error{}function E(r){return r[r.length-1]}function L(r){return function(){let t=new r(...arguments);return t.__call__.bind(t)}}function O(r,t){return Array.from({length:t},()=>r).flat()}function ut(r){return/^[A-Z_$]*$/.test(r)}function be(r,t,n){const i=r.split(t);return n?i.splice(-n-1):i}function Ee(r,t){let n=new RegExp(t,"g");return(r.match(n)||[]).length}function In(r,t){for(let n of r)if(!t.has(n))return!1;return!0}function*qn(r,t){let n=[],i=null;for(const s of r){const a=t(s);i&&a!=i&&(yield[i,n],n=[]),n.push(s),i=a}yield[i,n]}class A extends Error{}class S extends A{}function Ne(r,t,n="Got %r, expected one of %s"){if(!t.includes(r))throw new S(d(n,r,t))}class ie extends A{}class On extends A{}class V extends A{}class z extends A{constructor(){super(...arguments),k(this,"pos_in_stream",null),k(this,"_terminals_by_name",null)}get_context(t,n=40){let i,s,a=this.pos_in_stream,o=max(a-n,0),l=a+n;return t instanceof bytes?(s=E(be(t.slice(o,a),`
|
|
2
2
|
`,1)),i=t.slice(a,l).split(`
|
|
3
3
|
`,1)[0],(s+i+`
|
|
4
4
|
`+" "*s.expandtabs().length+`^
|
|
5
|
-
`).decode("ascii","backslashreplace")):(s=E(
|
|
5
|
+
`).decode("ascii","backslashreplace")):(s=E(be(t.slice(o,a),`
|
|
6
6
|
`,1)),i=t.slice(a,l).split(`
|
|
7
7
|
`,1)[0],s+i+`
|
|
8
8
|
`+" "*s.expandtabs().length+`^
|
|
9
|
-
`)}match_examples(t,n,i=!1){
|
|
9
|
+
`)}match_examples(t,n,i=!1){Te(n)&&(n=T(n));let s=[null,!1];for(const[a,[o,l]]of W(n))for(const[p,_]of W(l))try{t(_)}catch(c){if(c instanceof z){if(c.state.eq(this.state)){if(c.token===this.token)return o;i&&c.token.type===this.token.type&&!E(s)&&(s=[o,!0]),s[0]===null&&(s=[o,!1])}}else throw c}return s[0]}_format_expected(t){let n;return this._terminals_by_name&&(n=this._terminals_by_name,t=t.map(i=>i in n?n[i].user_repr():i)),d(`Expected one of:
|
|
10
10
|
* %s
|
|
11
11
|
`,t.join(`
|
|
12
|
-
* `))}}class
|
|
12
|
+
* `))}}class An extends z{constructor(t,n=null,i=null){super(),this.expected=t,this.state=n,this.token=new g("<EOF>",""),this.pos_in_stream=-1,this.line=-1,this.column=-1,this._terminals_by_name=i}}class M extends z{constructor({seq:t,lex_pos:n,line:i,column:s,allowed:a=null,considered_tokens:o=null,state:l=null,token_history:p=null,terminals_by_name:_=null,considered_rules:c=null}={}){super(),this.line=i,this.column=s,this.pos_in_stream=n,this.state=l,this._terminals_by_name=_,this.allowed=a,this.considered_tokens=o,this.considered_rules=c,this.token_history=p,this.char=t[n]}}class j extends z{constructor({token:t,expected:n,considered_rules:i=null,state:s=null,interactive_parser:a=null,terminals_by_name:o=null,token_history:l=null}={}){super(),this.line=t&&t.line||"?",this.column=t&&t.column||"?",this.pos_in_stream=t&&t.start_pos||null,this.state=s,this.token=t,this.expected=n,this._accepts=et,this.considered_rules=i,this.interactive_parser=a,this._terminals_by_name=o,this.token_history=l}get accepts(){return this._accepts===et&&(this._accepts=this.interactive_parser&&this.interactive_parser.accepts()),this._accepts}}class Re extends A{constructor(t,n,i){let s=d(`Error trying to process rule "%s":
|
|
13
13
|
|
|
14
|
-
%s`,t,i);super(s),this.rule=t,this.obj=n,this.orig_exc=i}}function
|
|
14
|
+
%s`,t,i);super(s),this.rule=t,this.obj=n,this.orig_exc=i}}function Sn(r,t=null,n=null){let i,s,a=new Map;for(const o of r)i=t!==null?t(o):o,s=n!==null?n(o):o,a.has(i)?a.get(i).push(s):a.set(i,[s]);return a}function se(r,t,n){let i;return Te(r)?"__type__"in r?(i=t[r.__type__],i.deserialize(r,n)):"@"in r?n[r["@"]]:Object.fromEntries(T(r).map(([s,a])=>[s,se(a,t,n)])):Nn(r)?r.map(s=>se(s,t,n)):r}class N{static deserialize(t,n){const i=this;let s=i&&i.__serialize_fields__;if("@"in t)return n[t["@"]];let a=we(i);for(const o of s)if(t&&o in t)a[o]=se(t[o],vr,n);else throw new KeyError("Cannot find key for class",i,e);return"_deserialize"in a&&a._deserialize(),a}}class $n extends N{static get __serialize_fields__(){return["memoized"]}constructor(t){super(),this.types_to_memoize=t,this.memoized=new Enumerator}in_types(t){return t instanceof this.types_to_memoize}serialize(){return _serialize(this.memoized.reversed(),null)}static deserialize(t,n,i){return se(t,n,i)}}class ht{constructor(){this.empty=!0}}class w{constructor(t,n,i=null){this.data=t,this.children=n,this._meta=i}get meta(){return this._meta===null&&(this._meta=new ht),this._meta}repr(){return d("Tree(%r, %r)",this.data,this.children)}_pretty_label(){return this.data}_pretty(t,n){if(this.children.length===1&&!(this.children[0]instanceof w))return[O(n,t).join(""),this._pretty_label()," ",d("%s",this.children[0].value),`
|
|
15
15
|
`];let i=[O(n,t).join(""),this._pretty_label(),`
|
|
16
16
|
`];for(const s of this.children)s instanceof w?i.push(...s._pretty(t+1,n)):i.push(O(n,t+1).join(""),d("%s",s.value),`
|
|
17
|
-
`);return i}pretty(t=" "){return this._pretty(0,t).join("")}eq(t){return t&&this&&t&&this&&t.children&&this.children&&t.data&&this.data?this.data===t.data&&this.children===t.children:!1}iter_subtrees(){let t=[this],n=new Map;for(const i of t)n.set(i,i),t.push(...[...i.children].reverse().filter(s=>s instanceof w&&!n.has(s)).map(s=>s));return t=void 0,[...n.values()].reverse()}find_pred(t){return
|
|
17
|
+
`);return i}pretty(t=" "){return this._pretty(0,t).join("")}eq(t){return t&&this&&t&&this&&t.children&&this.children&&t.data&&this.data?this.data===t.data&&this.children===t.children:!1}iter_subtrees(){let t=[this],n=new Map;for(const i of t)n.set(i,i),t.push(...[...i.children].reverse().filter(s=>s instanceof w&&!n.has(s)).map(s=>s));return t=void 0,[...n.values()].reverse()}find_pred(t){return pt(t,this.iter_subtrees())}find_data(t){return this.find_pred(n=>n.data===t)}*scan_values(t){for(const n of this.children)if(n instanceof w)for(const i of n.scan_values(t))yield i;else t(n)&&(yield n)}*iter_subtrees_topdown(){let t,n=[this];for(;n.length;)if(t=n.pop(),t instanceof w){yield t;for(const i of[...t.children].reverse())n.push(i)}}copy(){return type(this)(this.data,this.children)}set(t,n){this.data=t,this.children=n}}class X extends tt{static get __visit_tokens__(){return!0}constructor(t=!0){super(),this.__visit_tokens__=t}static fromObj(t,...n){class i extends this{}for(let[s,a]of Object.entries(t))i.prototype[s]=a;return new i(...n)}_call_userfunc(t,n=null){let i,s,a=n!==null?n:t.children;if(t&&t.data&&this&&this[t.data]){i=this&&this[t.data];try{return s=i&&i.visit_wrapper||null,s!==null?i.visit_wrapper(i,t.data,a,t.meta):i(a)}catch(o){throw o instanceof ie?o:o instanceof Error?new Re(t.data,t,o):o}}else return this.__default__(t.data,a,t.meta)}_call_userfunc_token(t){let n;if(t&&t.type&&this&&this[t.type]){n=this&&this[t.type];try{return n(t)}catch(i){throw i instanceof ie?i:i instanceof Error?new Re(t.type,t,i):i}}else return this.__default_token__(t)}*_transform_children(t){let n;for(const i of t)i instanceof w?n=this._transform_tree(i):this.__visit_tokens__&&i instanceof g?n=this._call_userfunc_token(i):n=i,n!==te&&(yield n)}_transform_tree(t){let n=[...this._transform_children(t.children)];return this._call_userfunc(t,n)}transform(t){return this._transform_tree(t)}__default__(t,n,i){return new w(t,n,i)}__default_token__(t){return t}}class dt extends X{_transform_tree(t){return this._call_userfunc(t)}transform(t){for(const n of t.iter_subtrees())n.children=[...this._transform_children(n.children)];return this._transform_tree(t)}}class zn extends X{transform(t){let n,i,s,a=[],o=[t];for(;o.length;){const _=o.pop();a.push(_),_ instanceof w&&o.push(..._.children)}let l=[];for(const _ of[...a].reverse())_ instanceof w?(s=_.children.length,s?(n=l.slice(-s),l.splice(-s)):n=[],i=this._call_userfunc(_,n),i!==te&&l.push(i)):this.__visit_tokens__&&_ instanceof g?(i=this._call_userfunc_token(_),i!==te&&l.push(i)):l.push(_);let[p]=l;return p}}class Dn extends X{_transform_tree(t){return t.children=[...this._transform_children(t.children)],this._call_userfunc(t)}}class ke{_call_userfunc(t){const n=this[t.data];return n?n(t):this.__default__(t)}__default__(t){return t}__class_getitem__(t){return cls}}class Pn extends ke{visit(t){for(const n of t.iter_subtrees())this._call_userfunc(n);return t}visit_topdown(t){for(const n of t.iter_subtrees_topdown())this._call_userfunc(n);return t}}class Ln extends ke{visit(t){for(const n of t.children)n instanceof w&&this.visit(n);return this._call_userfunc(t),t}visit_topdown(t){this._call_userfunc(t);for(const n of t.children)n instanceof w&&this.visit_topdown(n);return t}}class Cn extends tt{visit(t){return t.data in this?this[t.data](t):this.__default__(t)}visit_children(t){return t.children.map(n=>n instanceof w?this.visit(n):n)}__default__(t){return this.visit_children(t)}}var Qn=0;class Ie extends N{constructor(t){super(),k(this,"is_term",G),this.name=t}eq(t){return this.is_term===t.is_term&&this.name===t.name}repr(){return d("%s(%r)",type(this).name,this.name)}static get fullrepr(){return property(__repr__)}get fullrepr(){return this.constructor.fullrepr}renamed(t){return type(this)(t(this.name))}}class qe extends Ie{static get __serialize_fields__(){return["name","filter_out"]}get is_term(){return!0}constructor(t,n=!1){super(),this.name=t,this.filter_out=n}get fullrepr(){return d("%s(%r, %r)",type(this).name,this.name,this.filter_out)}renamed(t){return type(this)(t(this.name),this.filter_out)}}class Oe extends Ie{static get __serialize_fields__(){return["name"]}get is_term(){return!1}}class ae extends N{static get __serialize_fields__(){return["keep_all_tokens","expand1","priority","template_source","empty_indices"]}constructor(t=!1,n=!1,i=null,s=null,a=[]){super(),this.keep_all_tokens=t,this.expand1=n,this.priority=i,this.template_source=s,this.empty_indices=a}repr(){return d("RuleOptions(%r, %r, %r, %r)",this.keep_all_tokens,this.expand1,this.priority,this.template_source)}}class B extends N{static get __serialize_fields__(){return["origin","expansion","order","alias","options"]}static get __serialize_namespace__(){return[qe,Oe,ae]}constructor(t,n,i=0,s=null,a=null){super(),this.origin=t,this.expansion=n,this.alias=s,this.order=i,this.options=a||new ae,this._hash=[this.origin,this.expansion]}_deserialize(){this._hash=[this.origin,this.expansion]}repr(){return d("Rule(%r, %r, %r, %r)",this.origin,this.expansion,this.alias,this.options)}eq(t){return t instanceof B?this.origin===t.origin&&this.expansion===t.expansion:!1}}class Ae extends N{constructor(t,n=[],i=null){super(),this.value=t,this.flags=ne(n),this.raw=i}repr(){return repr(this.to_regexp())}eq(t){return type(this)===type(t)&&this.value===t.value&&this.flags===t.flags}to_regexp(){throw new NotImplementedError}get min_width(){throw new NotImplementedError}get max_width(){throw new NotImplementedError}_get_flags(t){return t}}class Se extends Ae{static get __serialize_fields__(){return["value","flags"]}static get type(){return"str"}to_regexp(){return this._get_flags(nt.escape(this.value))}get min_width(){return this.value.length}get max_width(){return this.value.length}}class $e extends Ae{static get __serialize_fields__(){return["value","flags","_width"]}static get type(){return"re"}to_regexp(){return this._get_flags(this.value)}_get_width(){return this._width===null&&(this._width=get_regexp_width(this.to_regexp())),this._width}get min_width(){return this._get_width()[0]}get max_width(){return this._get_width()[1]}}class oe extends N{static get __serialize_fields__(){return["name","pattern","priority"]}static get __serialize_namespace__(){return[Se,$e]}constructor(t,n,i=Qn){super(),this.name=t,this.pattern=n,this.priority=i}repr(){return d("%s(%r, %r)",type(this).name,this.name,this.pattern)}user_repr(){return this.name.startsWith("__")?this.pattern.raw||this.name:this.name}}class g{constructor(t,n,i=null,s=null,a=null,o=null,l=null,p=null){k(this,"value"),k(this,"type"),this.type=t,this.start_pos=i,this.value=n,this.line=s,this.column=a,this.end_line=o,this.end_column=l,this.end_pos=p}update(t=null,n=null){return g.new_borrow_pos(t!==null?t:this.type,n!==null?n:this.value,this)}static new_borrow_pos(t,n,i){const s=this;return new s(t,n,i.start_pos,i.line,i.column,i.end_line,i.end_column,i.end_pos)}repr(){return d("Token(%r, %r)",this.type,this.value)}eq(t){return t instanceof g&&this.type!==t.type?!1:str.__eq__(this,t)}static get __hash__(){return str.__hash__}}class Me{constructor(t){this.newline_char=t,this.char_pos=0,this.line=1,this.column=1,this.line_start_pos=0}eq(t){return t instanceof Me?this.char_pos===t.char_pos&&this.newline_char===t.newline_char:G}feed(t,n=!0){let i;n&&(i=Ee(t,this.newline_char),i&&(this.line+=i,this.line_start_pos=this.char_pos+t.lastIndexOf(this.newline_char)+1)),this.char_pos+=t.length,this.column=this.char_pos-this.line_start_pos+1}}class Mn{constructor(t){this.scanner=t}__call__(t){let n,i=this.scanner.match(t.value,0);return i&&([n,t.type]=i),t}}const jn=L(Mn);class Un{constructor(t,n,i){this.callback1=t,this.callback2=n,this.cond=i}__call__(t){let n=this.callback1(t);return this.cond(n)?this.callback2(t):n}}const Fn=L(Un);function Zn(r,t,n,i){let s,a,o=Sn(r,_=>_.pattern.constructor.type),l=new Set,p={};for(const _ of o.get("re")||[]){a=[];for(const c of o.get("str")||[])c.priority===_.priority&&(s=c.pattern.value,s===Tn(n,_.pattern.to_regexp(),s,t)&&(a.push(c),In(new Set(c.pattern.flags),new Set(_.pattern.flags))&&l.add(c)));a.length&&(p[_.name]=new jn(new rt(a,t,n,i,!0)))}return[r.filter(_=>!l.has(_)).map(_=>_),p]}function Bn(r){return r.includes(`
|
|
18
18
|
`)||r.includes("\\n")||r.includes("\\s")||r.includes("[^")||r.includes("(?s")&&r.includes(".")}class je{constructor(t,n=null,i=null){this.text=t,this.line_ctr=n||new Me(`
|
|
19
|
-
`),this.last_token=i}eq(t){return t instanceof je?this.text===t.text&&this.line_ctr===t.line_ctr&&this.last_token===t.last_token:G}}class lt{constructor(t,n){this.lexer=t,this.state=n}static from_text(t,n){return new this(t,new je(n))}lex(t){return this.lexer.lex(this.state,t)}}class oe extends Ye{lex(t,n){return G}}function Ln(r,t){r.sort((n,i)=>{let s=t(n),a=t(i);for(let o=0;o<s.length;o++){if(s[o]>a[o])return 1;if(s[o]<a[o])return-1}return 0})}class le extends oe{constructor(t){super();let n=[...t.terminals];if(this.re=t.re_module,!t.skip_validation){for(const i of n){try{this.re.compile(i.pattern.to_regexp(),t.g_regex_flags)}catch(s){throw s instanceof this.re.error?new V(d("Cannot compile token %s: %s",i.name,i.pattern)):s}if(i.pattern.min_width===0)throw new V(d("Lexer does not allow zero-width terminals. (%s: %s)",i.name,i.pattern))}if(!(new Set(t.ignore)<=new Set(n.map(i=>i.name))))throw new V(d("Ignore terminals are not defined: %s",tt(new Set(t.ignore),new Set(n.map(i=>i.name)))))}this.newline_types=te(n.filter(i=>Pn(i.pattern.to_regexp())).map(i=>i.name)),this.ignore_types=te(t.ignore),Ln(n,i=>[-i.priority,-i.pattern.max_width,-i.pattern.value.length,i.name]),this.terminals=n,this.user_callbacks=t.callbacks,this.g_regex_flags=t.g_regex_flags,this.use_bytes=t.use_bytes,this.terminals_by_name=t.terminals_by_name,this._scanner=null}_build_scanner(){let t;[t,this.callback]=Dn(this.terminals,this.g_regex_flags,this.re,this.use_bytes);for(const[n,i]of T(this.user_callbacks))n in this.callback?this.callback[n]=new zn(this.callback[n],i,s=>s.type===n):this.callback[n]=i;this._scanner=new He(t,this.g_regex_flags,this.re,this.use_bytes)}get scanner(){return this._scanner===null&&this._build_scanner(),this._scanner}match(t,n){return this.scanner.match(t,n)}*lex(t,n){try{for(;;)yield this.next_token(t,n)}catch(i){if(!(i instanceof xe))throw i}}next_token(t,n=null){let i,s,a,o,l=t.line_ctr;for(;l.char_pos<t.text.length;){if(s=this.match(t.text,l.char_pos),!s)throw i=tt(this.scanner.allowed_types,this.ignore_types),i||(i=new Set(["<END-OF-FILE>"])),new M({seq:t.text,lex_pos:l.char_pos,line:l.line,column:l.column,allowed:i,token_history:t.last_token&&[t.last_token],state:n,terminals_by_name:this.terminals_by_name});let[p,_]=s;if(this.ignore_types.has(_))_ in this.callback&&(o=new g(_,p,l.char_pos,l.line,l.column),this.callback[_](o)),l.feed(p,this.newline_types.has(_));else{if(a=new g(_,p,l.char_pos,l.line,l.column),l.feed(p,this.newline_types.has(_)),a.end_line=l.line,a.end_column=l.column,a.end_pos=l.char_pos,a.type in this.callback&&(a=this.callback[a.type](a),!(a instanceof g)))throw new V(d("Callbacks must return a token (returned %r)",a));return t.last_token=a,a}}throw new xe(this)}}class Cn extends oe{constructor({conf:t,states:n,always_accept:i=[]}={}){super();let s,a,o,l=[...t.terminals],p=t.terminals_by_name,_=I(t);_.terminals=l;let c=new Map;this.lexers={};for(let[m,f]of T(n))s=te(f),c.has(s)?a=c.get(s):(f=mn(new Set(f),[...new Set(t.ignore),...new Set(i)]),o=I(_),o.terminals=[...f].filter(x=>x in p).map(x=>p[x]),a=new le(o),c.set(s,a)),this.lexers[m]=a;this.root_lexer=new le(_)}*lex(t,n){let i,s,a;try{for(;;)s=this.lexers[n.position],yield s.next_token(t,n)}catch(o){if(!(o instanceof xe))if(o instanceof M)try{throw i=t.last_token,a=this.root_lexer.next_token(t,n),new j({token:a,expected:o.allowed,state:n,token_history:[i],terminals_by_name:this.root_lexer.terminals_by_name})}catch(l){throw l}else throw o}}}class _t extends N{static get __serialize_fields__(){return["terminals","ignore","g_regex_flags","use_bytes","lexer_type"]}static get __serialize_namespace__(){return[ae]}constructor({terminals:t,re_module:n,ignore:i=[],postlex:s=null,callbacks:a=null,g_regex_flags:o="",skip_validation:l=!1,use_bytes:p=!1}={}){super(),this.terminals=t,this.terminals_by_name=Object.fromEntries(this.terminals.map(_=>[_.name,_])),this.ignore=i,this.postlex=s,this.callbacks=Object.keys(a).length||{},this.g_regex_flags=o,this.re_module=n,this.skip_validation=l,this.use_bytes=p,this.lexer_type=null}_deserialize(){this.terminals_by_name=Object.fromEntries(this.terminals.map(t=>[t.name,t]))}}class ct extends N{static get __serialize_fields__(){return["rules","start","parser_type"]}constructor(t,n,i){super(),this.rules=t,this.callbacks=n,this.start=i,this.parser_type=null}}class Qn{constructor(t){this.node_builder=t}__call__(t){return t.length===1?t[0]:this.node_builder(t)}}const Mn=P(Qn);class jn{constructor(t,n=null){this.node_builder=t,this.node_filter=n}__call__(t){let n,i,s,a=this.node_builder(t);return a instanceof w&&(s=a.meta,n=this._pp_get_meta(t),n!==null&&("line"in s||(s.line=n&&n.container_line||n.line,s.column=n&&n.container_column||n.column,s.start_pos=n&&n.container_start_pos||n.start_pos,s.empty=!1),s.container_line=n&&n.container_line||n.line,s.container_column=n&&n.container_column||n.column),i=this._pp_get_meta([...t].reverse()),i!==null&&("end_line"in s||(s.end_line=i&&i.container_end_line||i.end_line,s.end_column=i&&i.container_end_column||i.end_column,s.end_pos=i&&i.container_end_pos||i.end_pos,s.empty=!1),s.container_end_line=i&&i.container_end_line||i.end_line,s.container_end_column=i&&i.container_end_column||i.end_column)),a}_pp_get_meta(t){for(const n of t)if(!(this.node_filter!==null&&!this.node_filter(n))){if(n instanceof w){if(!n.meta.empty)return n.meta}else if(n instanceof g)return n}}}const pt=P(jn);function Un(r){if(yn(r))return ne({unknown_param_0:pt,node_filter:r});if(r===!0)return pt;if(r===!1)return null;throw new S(d("Invalid option for propagate_positions: %r",r))}class Ae{constructor(t,n,i){this.node_builder=i,this.to_include=t,this.append_none=n}__call__(t){let n=[];for(const[i,s,a]of this.to_include)a&&n.push(...O([null],a)),s?n.push(...t[i].children):n.push(t[i]);return this.append_none&&n.push(...O([null],this.append_none)),this.node_builder(n)}}const Fn=P(Ae);class Zn extends Ae{__call__(t){let n=[];for(const[i,s,a]of this.to_include)a&&n.push(...O([null],a)),s?n.length?n.push(...t[i].children):n=t[i].children:n.push(t[i]);return this.append_none&&n.push(...O([null],this.append_none)),this.node_builder(n)}}const Bn=P(Zn);class Gn extends Ae{constructor(t,n){super(),this.node_builder=n,this.to_include=t}__call__(t){let n=[];for(const[i,s]of this.to_include)s?n.length?n.push(...t[i].children):n=t[i].children:n.push(t[i]);return this.node_builder(n)}}const Wn=P(Gn);function Vn(r){return!r.is_term&&r.name.startsWith("_")}function Xn(r,t,n,i){let s,a;i.length?(a=i.map(p=>(0+p).toString()).join(""),s=a.split("0").map(p=>p.length)):s=O([0],r.length+1);let o=[],l=0;for(const[p,_]of W(r))l+=s[p],(t||!(_.is_term&&_.filter_out))&&(o.push([p,Vn(_),l]),l=0);if(l+=s[r.length],i.length||o.length<r.length||gn(o.map(([p,_,c])=>_)))return(i.length||n).length?ne(n?Fn:Bn,o,l):ne(Wn,o.map(([p,_,c])=>[p,_]))}function Hn(r){function t(n){let i=new w(r.name,n);return r(i)}return t=wraps(r)(t),t}function Jn(r,t,n){if(n===_vargs_meta||n===_vargs_meta_inline)throw new NotImplementedError("Meta args not supported for internal transformer");function i(s){return n(r,t,s,null)}return i=wraps(r)(i),i}class Yn{constructor(t,n,i=!1,s=!1,a=!1){this.tree_class=n,this.propagate_positions=i,this.ambiguous=s,this.maybe_placeholders=a,this.rule_builders=[...this._init_builders(t)]}*_init_builders(t){let n,i,s,a,o=Un(this.propagate_positions);for(const l of t)s=l.options,i=s.keep_all_tokens,n=s.expand1,a=[...it(null,[n&&!l.alias&&Mn,Xn(l.expansion,i,this.ambiguous,this.maybe_placeholders?s.empty_indices:[]),o])],yield[l,a]}create_callback(t=null){let n,i,s,a=new Map;for(const[o,l]of this.rule_builders){i=o.alias||o.options.template_source||o.origin.name,t&&t[i]?(n=t&&t[i],s=n&&n.visit_wrapper||null,s!==null?n=Jn(n,i,s):t instanceof ot&&(n=Hn(n))):n=ne(this.tree_class,i);for(const p of l)n=p(n);if(a.has(o))throw new re(d("Rule '%s' already exists",o));a.set(o,n)}return a}}class ut extends N{constructor({parser_conf:t,debug:n=!1}={}){super();let i=new LALR_Analyzer({unknown_param_0:t,debug:n});i.compute_lalr();let s=t.callbacks;this._parse_table=i.parse_table,this.parser_conf=t,this.parser=new ht(i.parse_table,s,n)}static deserialize(t,n,i,s=!1){let a=ye(this);return a._parse_table=tr.deserialize(t,n),a.parser=new ht(a._parse_table,i,s),a}serialize(t){return this._parse_table.serialize(t)}parse_interactive(t,n){return this.parser.parse({lexer:t,start:n,start_interactive:!0})}parse({lexer:t,start:n,on_error:i=null}={}){let s,a;try{return this.parser.parse({lexer:t,start:n})}catch(o){if(o instanceof z){if(i===null)throw o;for(;;){if(o instanceof M&&(a=o.interactive_parser.lexer_thread.state,s=a.line_ctr.char_pos),!i(o))throw o;o instanceof M&&s===a.line_ctr.char_pos&&a.line_ctr.feed(a.text.slice(s,s+1));try{return o.interactive_parser.resume_parse()}catch(l){if(l instanceof j){if(o instanceof j&&o.token.type===l.token.type&&l.token.type==="$END"&&o.interactive_parser.eq(l.interactive_parser))throw l;o=l}else if(l instanceof M)o=l;else throw l}}}else throw o}}}class Kn{constructor(t,n,i){this.parse_table=t,this.start_state=this.parse_table.start_states[i],this.end_state=this.parse_table.end_states[i],this.states=this.parse_table.states,this.callbacks=n,this.start=i}}class Ue{constructor(t,n,i=null,s=null){this.parse_conf=t,this.lexer=n,this.state_stack=i||[this.parse_conf.start_state],this.value_stack=s||[]}get position(){return E(this.state_stack)}eq(t){return t instanceof Ue?this.state_stack.length===t.state_stack.length&&this.position===t.position:G}copy(){return I(this)}feed_token(t,n=!1){let i,s,a,o,l,p,_,c,m,f,x=this.state_stack,h=this.value_stack,u=this.parse_conf.states,y=this.parse_conf.end_state,b=this.parse_conf.callbacks;for(;;){if(m=E(x),t.type in u[m])[s,a]=u[m][t.type];else throw o=new Set(fe(u[m]).filter(q=>st(q)).map(q=>q)),new j({token:t,expected:o,state:this,interactive_parser:null});if(s===Se){x.push(a),h.push(t.type in b?b[t.type](t):t);return}else if(p=a,c=p.expansion.length,c?(_=h.slice(-c),x.splice(-c),h.splice(-c)):_=[],f=b.get(p)(_),[i,l]=u[E(x)][p.origin.name],x.push(l),h.push(f),n&&E(x)===y)return E(h)}}}class ht{constructor(t,n,i=!1){this.parse_table=t,this.callbacks=n,this.debug=i}parse({lexer:t,start:n,value_stack:i=null,state_stack:s=null,start_interactive:a=!1}={}){let o=new Kn(this.parse_table,this.callbacks,n),l=new Ue(o,t,s,i);return a?new D(this,l,l.lexer):this.parse_from_state(l)}parse_from_state(t){let n,i;try{i=null;for(i of t.lexer.lex(t))t.feed_token(i);return n=i?g.new_borrow_pos("$END","",i):new g("$END","",0,1,1),t.feed_token(n,!0)}catch(s){if(s instanceof z){try{s.interactive_parser=new D(this,t,t.lexer)}catch(a){if(!(a instanceof ReferenceError))throw a}throw s}else if(s instanceof Error){if(this.debug){console.log(""),console.log("STATE STACK DUMP"),console.log("----------------");for(const[a,o]of W(t.state_stack))console.log(d("%d)",a),o);console.log("")}throw s}else throw s}}}class D{constructor(t,n,i){this.parser=t,this.parser_state=n,this.lexer_thread=i,this.result=null}feed_token(t){return this.parser_state.feed_token(t,t.type==="$END")}*iter_parse(){for(const t of this.lexer_thread.lex(this.parser_state))yield t,this.result=this.feed_token(t)}exhaust_lexer(){return[...this.iter_parse()]}feed_eof(t=null){let n=t!==null?g.new_borrow_pos("$END","",t):new g("$END","",0,1,1);return this.feed_token(n)}copy(){return I(this)}eq(t){return t instanceof D?this.parser_state===t.parser_state&&this.lexer_thread===t.lexer_thread:!1}as_immutable(){let t=I(this);return new dt(t.parser,t.parser_state,t.lexer_thread)}pretty(){let t=["Parser choices:"];for(const[n,i]of T(this.choices()))t.push(d(" - %s -> %r",n,i));return t.push(d("stack size: %s",this.parser_state.state_stack.length)),t.join(`
|
|
20
|
-
`)}choices(){return this.parser_state.parse_conf.parse_table.states[this.parser_state.position]}accepts(){let t,n=new Set;for(const i of this.choices())if(st(i)){t=I(this);let s=null;try{t.feed_token(new g(i,""))}catch(a){if(s=a,!(a instanceof j))throw a}s||n.add(i)}return n}resume_parse(){return this.parser.parse_from_state(this.parser_state)}}class dt extends D{constructor(){super(...arguments),k(this,"result",null)}feed_token(t){let n=I(this);return n.result=D.feed_token(n,t),n}exhaust_lexer(){let t=this.as_mutable();return t.exhaust_lexer(),t.as_immutable()}as_mutable(){let t=I(this);return new D(t.parser,t.parser_state,t.lexer_thread)}}class mt{constructor(t){this.name=t}repr(){return this.toString()}}var Se=new mt("Shift"),ft=new mt("Reduce");class er{constructor(t,n,i){this.states=t,this.start_states=n,this.end_states=i}serialize(t){let n=new Enumerator,i=Object.fromEntries(T(this.states).map(([s,a])=>[s,Object.fromEntries(T(a).map(([o,[l,p]])=>[Ke(n,o),l===ft?[1,p.serialize(t)]:[0,p]]))]));return{tokens:n.reversed(),states:i,start_states:this.start_states,end_states:this.end_states}}static deserialize(t,n){const i=this;let s=t.tokens,a=Object.fromEntries(T(t.states).map(([o,l])=>[o,Object.fromEntries(T(l).map(([p,[_,c]])=>[s[p],_===1?[ft,B.deserialize(c,n)]:[Se,c]]))]));return new i(a,t.start_states,t.end_states)}}class tr extends er{static from_ParseTable(t){const n=this;let i=[...t.states],s=Object.fromEntries(W(i).map(([p,_])=>[_,p])),a={};for(let[p,_]of T(t.states))_=Object.fromEntries(T(_).map(([c,m])=>[c,m[0]===Se?[m[0],s[m[1]]]:m])),a[s[p]]=_;let o=Object.fromEntries(T(t.start_states).map(([p,_])=>[p,s[_]])),l=Object.fromEntries(T(t.end_states).map(([p,_])=>[p,s[_]]));return new n(a,o,l)}}function nr(r){if(r&&r.__future_interface__)return r;{class t extends oe{constructor(i){super(),this.lexer=r(i)}lex(i,s){return this.lexer.lex(i.text)}}return t}}function rr(r,t,n,i,s){let a=ct.deserialize(r.parser_conf,t),o=ut.deserialize(r.parser,t,i,s.debug);return a.callbacks=i,new ir({lexer_conf:n,parser_conf:a,options:s,parser:o})}var yt={};class ir extends N{static get __serialize_fields__(){return["lexer_conf","parser_conf","parser"]}constructor({lexer_conf:t,parser_conf:n,options:i,parser:s=null}={}){super();let a,o;this.parser_conf=n,this.lexer_conf=t,this.options=i,s?this.parser=s:(o=Ke(yt,n.parser_type),this.parser=o(t,n,i));let l=t.lexer_type;if(this.skip_lexer=!1,["dynamic","dynamic_complete"].includes(l)){this.skip_lexer=!0;return}const p={basic:lr,contextual:_r};l in p?(a=p[l],this.lexer=a(t,this.parser,t.postlex,i)):this.lexer=nr(l)(t),t.postlex&&(this.lexer=new or(this.lexer,t.postlex))}_verify_start(t=null){let n;if(t===null){if(n=this.parser_conf.start,n.length>1)throw new S("Lark initialized with more than 1 possible start rule. Must specify which start rule to parse",n);[t]=n}else if(!this.parser_conf.start.includes(t))throw new S(d("Unknown start rule %s. Must be one of %r",t,this.parser_conf.start));return t}_make_lexer_thread(t){return this.skip_lexer?t:lt.from_text(this.lexer,t)}parse(t,n=null,i=null){let s=this._verify_start(n),a=i===null?{}:{on_error:i},o=this._make_lexer_thread(t);return this.parser.parse({lexer:o,start:s,...a})}parse_interactive(t=null,n=null){let i=this._verify_start(n);if(this.parser_conf.parser_type!=="lalr")throw new S("parse_interactive() currently only works with parser='lalr' ");let s=this._make_lexer_thread(t);return this.parser.parse_interactive(s,i)}}function sr(r,t){let n;ve(r,["lalr","earley","cyk"]),typeof t!="object"&&(n={lalr:["basic","contextual"],earley:["basic","dynamic","dynamic_complete"],cyk:["basic"]}[r],ve(t,n,d("Parser %r does not support lexer %%r, expected one of %%s",r)))}function ar(r,t){let n,i={};for(const s of t)n=r&&r[s.name]||null,n!==null&&(i[s.name]=n);return i}class or{constructor(t,n){this.lexer=t,this.postlexer=n}lex(t,n){let i=this.lexer.lex(t,n);return this.postlexer.process(i)}}function lr(r,t,n,i){return new le(r)}function _r(r,t,n,i){let s=Object.fromEntries(T(t._parse_table.states).map(([o,l])=>[o,[...fe(l)]])),a=n?n.always_accept:[];return new Cn({conf:r,states:s,always_accept:a})}function cr(r,t,n=null){let i=n?n.debug:!1;return new ut({parser_conf:t,debug:i})}yt.lalr=cr;class gt extends Ye{constructor(){super(...arguments),k(this,"always_accept",[])}process(t){return t}}class pr extends N{constructor(t){super(),k(this,"OPTIONS_DOC",'\n **=== General Options ===**\n\n start\n The start symbol. Either a string, or a list of strings for multiple possible starts (Default: "start")\n debug\n Display debug information and extra warnings. Use only when debugging (Default: ``False``)\n When used with Earley, it generates a forest graph as "sppf.png", if \'dot\' is installed.\n transformer\n Applies the transformer to every parse tree (equivalent to applying it after the parse, but faster)\n propagate_positions\n Propagates (line, column, end_line, end_column) attributes into all tree branches.\n Accepts ``False``, ``True``, or a callable, which will filter which nodes to ignore when propagating.\n maybe_placeholders\n When ``True``, the ``[]`` operator returns ``None`` when not matched.\n When ``False``, ``[]`` behaves like the ``?`` operator, and returns no value at all.\n (default= ``True``)\n cache\n Cache the results of the Lark grammar analysis, for x2 to x3 faster loading. LALR only for now.\n\n - When ``False``, does nothing (default)\n - When ``True``, caches to a temporary file in the local directory\n - When given a string, caches to the path pointed by the string\n regex\n When True, uses the ``regex`` module instead of the stdlib ``re``.\n g_regex_flags\n Flags that are applied to all terminals (both regex and strings)\n keep_all_tokens\n Prevent the tree builder from automagically removing "punctuation" tokens (Default: ``False``)\n tree_class\n Lark will produce trees comprised of instances of this class instead of the default ``lark.Tree``.\n\n **=== Algorithm Options ===**\n\n parser\n Decides which parser engine to use. Accepts "earley" or "lalr". (Default: "earley").\n (there is also a "cyk" option for legacy)\n lexer\n Decides whether or not to use a lexer stage\n\n - "auto" (default): Choose for me based on the parser\n - "basic": Use a basic lexer\n - "contextual": Stronger lexer (only works with parser="lalr")\n - "dynamic": Flexible and powerful (only with parser="earley")\n - "dynamic_complete": Same as dynamic, but tries *every* variation of tokenizing possible.\n ambiguity\n Decides how to handle ambiguity in the parse. Only relevant if parser="earley"\n\n - "resolve": The parser will automatically choose the simplest derivation\n (it chooses consistently: greedy for tokens, non-greedy for rules)\n - "explicit": The parser will return all derivations wrapped in "_ambig" tree nodes (i.e. a forest).\n - "forest": The parser will return the root of the shared packed parse forest.\n\n **=== Misc. / Domain Specific Options ===**\n\n postlex\n Lexer post-processing (Default: ``None``) Only works with the basic and contextual lexers.\n priority\n How priorities should be evaluated - "auto", ``None``, "normal", "invert" (Default: "auto")\n lexer_callbacks\n Dictionary of callbacks for the lexer. May alter tokens during lexing. Use with caution.\n use_bytes\n Accept an input of type ``bytes`` instead of ``str``.\n edit_terminals\n A callback for editing the terminals before parse.\n import_paths\n A List of either paths or loader functions to specify from where grammars are imported\n source_path\n Override the source of from where the grammar was loaded. Useful for relative imports and unconventional grammar loading\n **=== End of Options ===**\n '),k(this,"_defaults",{debug:!1,keep_all_tokens:!1,tree_class:null,cache:!1,postlex:null,parser:"earley",lexer:"auto",transformer:null,start:"start",priority:"auto",ambiguity:"auto",regex:!1,propagate_positions:!1,lexer_callbacks:{},maybe_placeholders:!0,edit_terminals:null,g_regex_flags:"",use_bytes:!1,import_paths:[],source_path:null,_plugins:null});let n,i=nt(t),s=this;for(const[a,o]of T(this._defaults))a in i?(n=hn(i,a),typeof o=="boolean"&&!["cache","use_bytes","propagate_positions"].includes(a)&&(n=rt(n))):n=o,s[a]=n;if(typeof s.start=="string"&&(s.start=[s.start]),this.options=s,ve(this.parser,["earley","lalr","cyk",null]),this.parser==="earley"&&this.transformer)throw new S("Cannot specify an embedded transformer when using the Earley algorithm. Please use your transformer on the resulting parse tree, or use a different algorithm (i.e. LALR)");if(Object.keys(i).length)throw new S(d("Unknown options: %s",fe(i)))}serialize(t){return this.options}static deserialize(t,n){const i=this;return new i(t)}}class xt extends N{static get __serialize_fields__(){return["parser","rules","options"]}_build_lexer(t=!1){let n=this.lexer_conf;return t&&(n=I(n),n.ignore=[]),new le(n)}_prepare_callbacks(){this._callbacks=new Map,this.options.ambiguity!=="forest"&&(this._parse_tree_builder=new Yn(this.rules,this.options.tree_class||dn(w),this.options.propagate_positions,this.options.parser!=="lalr"&&this.options.ambiguity==="explicit",this.options.maybe_placeholders),this._callbacks=this._parse_tree_builder.create_callback(this.options.transformer)),et(this._callbacks,ar(this.options.transformer,this.terminals))}_deserialize_lexer_conf(t,n,i){let s=_t.deserialize(t.lexer_conf,n);return s.callbacks=i.lexer_callbacks||{},s.re_module=i.regex?regex:Xe,s.use_bytes=i.use_bytes,s.g_regex_flags=i.g_regex_flags||"",s.skip_validation=!0,s.postlex=i.postlex,s}_load({f:t,...n}={}){let i;ge(t)?i=t:i=pickle.load(t);let s=i.memo,a=i.data,o=En.deserialize(s,{Rule:B,TerminalDef:ae},{}),l=nt(a.options);return et(l,n),this.options=pr.deserialize(l,o),this.rules=a.rules.map(p=>B.deserialize(p,o)),this.source_path="<deserialized>",sr(this.options.parser,this.options.lexer),this.lexer_conf=this._deserialize_lexer_conf(a.parser,o,this.options),this.terminals=this.lexer_conf.terminals,this._prepare_callbacks(),this._terminals_dict=Object.fromEntries(this.terminals.map(p=>[p.name,p])),this.parser=rr(a.parser,o,this.lexer_conf,this._callbacks,this.options),this}static _load_from_dict({data:t,memo:n,...i}={}){return ye(this)._load({f:{data:t,memo:n},...i})}repr(){return d("Lark(open(%r), parser=%r, lexer=%r, ...)",this.source_path,this.options.parser,this.options.lexer)}lex(t,n=!1){let i;!("lexer"in this)||n?i=this._build_lexer(n):i=this.lexer;let s=lt.from_text(i,t).lex(null);return this.options.postlex?this.options.postlex.process(s):s}get_terminal(t){return this._terminals_dict[t]}parse_interactive(t=null,n=null){return this.parser.parse_interactive({unknown_param_0:t,start:n})}parse(t,n=null,i=null){return this.parser.parse(t,n,i)}}class wt extends A{}class Tt extends gt{constructor(){super(),this.paren_level=0,this.indent_level=[0]}*handle_NL(t){if(this.paren_level>0)return;yield t;let n=we(t.value,`
|
|
21
|
-
`,1)[1],i=
|
|
22
|
-
])+`,flags:[],_width:[1,4294967295],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},1:{name:"IDENTIFIER",pattern:{value:"[a-zA-Z][a-zA-Z0-9_]*[a-zA-Z0-9]",flags:[],_width:[2,4294967295],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},2:{name:"INT",pattern:{value:"-?[0-9]+",flags:[],_width:[1,4294967295],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},3:{name:"STRING",pattern:{value:`(?:'[^\\']*'|"[^"]*")`,flags:[],_width:[2,4294967295],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},4:{name:"OPERATOR",pattern:{value:"(?:regex_matches|not_contains|contains|==|!=|<=|>=|<|>)",flags:[],_width:[1,13],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},5:{name:"CONJUNCTION",pattern:{value:"(?:and|or)",flags:[],_width:[2,3],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},6:{name:"NEGATION",pattern:{value:"!",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},7:{name:"TRUE",pattern:{value:"true",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},8:{name:"FALSE",pattern:{value:"false",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},9:{name:"LPAR",pattern:{value:"(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},10:{name:"RPAR",pattern:{value:")",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},11:{name:"__ANON_0",pattern:{value:"selected_value(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},12:{name:"__ANON_1",pattern:{value:"selected(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},13:{name:"__ANON_2",pattern:{value:"text(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},14:{name:"__ANON_3",pattern:{value:"text_ignore_case(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},15:{name:"__ANON_4",pattern:{value:"count_selected(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},16:{name:"__ANON_5",pattern:{value:"count_choice_selections(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},17:{name:"LSQB",pattern:{value:"[",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},18:{name:"__ANON_6",pattern:{value:"])",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},19:{name:"RSQB",pattern:{value:"]",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},20:{name:"DOT",pattern:{value:".",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},21:{origin:{name:"start",__type__:"NonTerminal"},expansion:[{name:"top_level_expr",__type__:"NonTerminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},22:{origin:{name:"start",__type__:"NonTerminal"},expansion:[{name:"bool_expr",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},23:{origin:{name:"top_level_expr",__type__:"NonTerminal"},expansion:[{name:"LPAR",filter_out:!0,__type__:"Terminal"},{name:"bool_expr",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},24:{origin:{name:"top_level_expr",__type__:"NonTerminal"},expansion:[{name:"LPAR",filter_out:!0,__type__:"Terminal"},{name:"bool_expr",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"CONJUNCTION",filter_out:!1,__type__:"Terminal"},{name:"top_level_expr",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},25:{origin:{name:"bool_expr",__type__:"NonTerminal"},expansion:[{name:"condition",__type__:"NonTerminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},26:{origin:{name:"bool_expr",__type__:"NonTerminal"},expansion:[{name:"condition",__type__:"NonTerminal"},{name:"CONJUNCTION",filter_out:!1,__type__:"Terminal"},{name:"bool_expr",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},27:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"bool_const",__type__:"NonTerminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},28:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_selected_value",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},29:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_mc_selected",__type__:"NonTerminal"}],order:2,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},30:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_mc_text",__type__:"NonTerminal"}],order:3,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},31:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_mc_text_ignore_case",__type__:"NonTerminal"}],order:4,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},32:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_mc_count",__type__:"NonTerminal"}],order:5,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},33:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_matrix_selected",__type__:"NonTerminal"}],order:6,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},34:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_matrix_count",__type__:"NonTerminal"}],order:7,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},35:{origin:{name:"qc_selected_value",__type__:"NonTerminal"},expansion:[{name:"__ANON_0",filter_out:!0,__type__:"Terminal"},{name:"question_or_matrix_statement_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},36:{origin:{name:"qc_mc_selected",__type__:"NonTerminal"},expansion:[{name:"NEGATION",filter_out:!1,__type__:"Terminal"},{name:"__ANON_1",filter_out:!0,__type__:"Terminal"},{name:"mc_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},37:{origin:{name:"qc_mc_selected",__type__:"NonTerminal"},expansion:[{name:"__ANON_1",filter_out:!0,__type__:"Terminal"},{name:"mc_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},38:{origin:{name:"qc_mc_text",__type__:"NonTerminal"},expansion:[{name:"__ANON_2",filter_out:!0,__type__:"Terminal"},{name:"mc_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"STRING",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},39:{origin:{name:"qc_mc_text_ignore_case",__type__:"NonTerminal"},expansion:[{name:"__ANON_3",filter_out:!0,__type__:"Terminal"},{name:"mc_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"STRING",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},40:{origin:{name:"qc_mc_count",__type__:"NonTerminal"},expansion:[{name:"__ANON_4",filter_out:!0,__type__:"Terminal"},{name:"question_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},41:{origin:{name:"qc_matrix_selected",__type__:"NonTerminal"},expansion:[{name:"NEGATION",filter_out:!1,__type__:"Terminal"},{name:"__ANON_1",filter_out:!0,__type__:"Terminal"},{name:"matrix_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},42:{origin:{name:"qc_matrix_selected",__type__:"NonTerminal"},expansion:[{name:"__ANON_1",filter_out:!0,__type__:"Terminal"},{name:"matrix_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},43:{origin:{name:"qc_matrix_count",__type__:"NonTerminal"},expansion:[{name:"__ANON_5",filter_out:!0,__type__:"Terminal"},{name:"question_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"},{name:"__ANON_6",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},44:{origin:{name:"qc_matrix_count",__type__:"NonTerminal"},expansion:[{name:"__ANON_5",filter_out:!0,__type__:"Terminal"},{name:"question_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"},{name:"__ANON_6",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},45:{origin:{name:"question_selector",__type__:"NonTerminal"},expansion:[{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},46:{origin:{name:"mc_choice_selector",__type__:"NonTerminal"},expansion:[{name:"question_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"},{name:"RSQB",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},47:{origin:{name:"mc_choice_selector",__type__:"NonTerminal"},expansion:[{name:"question_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"},{name:"RSQB",filter_out:!0,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},48:{origin:{name:"matrix_statement_selector",__type__:"NonTerminal"},expansion:[{name:"question_selector",__type__:"NonTerminal"},{name:"DOT",filter_out:!0,__type__:"Terminal"},{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},49:{origin:{name:"matrix_choice_selector",__type__:"NonTerminal"},expansion:[{name:"matrix_statement_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"},{name:"RSQB",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},50:{origin:{name:"matrix_choice_selector",__type__:"NonTerminal"},expansion:[{name:"matrix_statement_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"},{name:"RSQB",filter_out:!0,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},51:{origin:{name:"question_or_matrix_statement_selector",__type__:"NonTerminal"},expansion:[{name:"question_selector",__type__:"NonTerminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},52:{origin:{name:"question_or_matrix_statement_selector",__type__:"NonTerminal"},expansion:[{name:"matrix_statement_selector",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},53:{origin:{name:"bool_const",__type__:"NonTerminal"},expansion:[{name:"TRUE",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},54:{origin:{name:"bool_const",__type__:"NonTerminal"},expansion:[{name:"FALSE",filter_out:!1,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"}};const yr="(?<questionId>[a-zA-Z][a-zA-Z0-9_]*)",gr="((?<expressionWithoutIdentifier>all|all_entered_text|selected|selected_entered_text|not_selected)|(?<expressionWithIdentifier>for_matrix_choice|unselected_for_matrix_choice)(\\((?<identifier>[\\-a-zA-Z0-9_]+)\\)))",vt=new RegExp(`^${yr}/${gr}$`);var v=(r=>(r.ALL="all",r.ALL_ENTERED_TEXT="all_entered_text",r.SELECTED="selected",r.SELECTED_ENTERED_TEXT="selected_entered_text",r.NOT_SELECTED="not_selected",r.FOR_MATRIX_CHOICE="for_matrix_choice",r.UNSELECTED_FOR_MATRIX_CHOICE="unselected_for_matrix_choice",r))(v||{});const bt=r=>vt.test(r),L=r=>{var t;const n=(t=r.match(vt))==null?void 0:t.groups;if(!n)throw new Error(`Invalid locator expression: ${r}`);const i=n.expressionWithoutIdentifier||n.expressionWithIdentifier||"all",s={questionId:n.questionId,expression:i};if(n.identifier){const a=isNaN(parseInt(n.identifier,10))?n.identifier:parseInt(n.identifier,10);s.identifier=a}return s},_e=(r,t="camelCase")=>{const n=t==="camelCase"?K.camelCase:K.snakeCase;return K.transform(r,(i,s,a)=>{const o=typeof a=="string"?n(a):a;i[o]=K.isObject(s)?_e(s,t):s})};function xr(r){const t=structuredClone(r);return{...t,...t.template,sections:t.sections.map(n=>({..._e(n),pages:n.pages.map((i,s)=>({...i,id:`${n.id}-${s}`,questions:wr(t,n,i.questions)}))}))}}function wr(r,t,n){return n.map(i=>Tr(r.template.id,t,i))}function Tr(r,t,n){var i,s;return{..._e({...n,choiceGroups:(i=n.choice_groups)==null?void 0:i.map(a=>({...a,randomization:$e(a.randomization)})),statementGroups:(s=n.statement_groups)==null?void 0:s.map(a=>({...a,randomization:$e(a.randomization)})),randomization:$e(n.randomization)}),id:Nt(r,n),type:Rt(n.type),layout:vr(n.layout),required:br(n.required),label:t.name}}function $e(r){var t;return r?{type:Et(r.type),order:(t=r.order)==null?void 0:t.split(" "),total:r.total}:void 0}function Et(r){return r.toUpperCase()}function Nt(r,t){return`${r}.${t.id}`}const ze=r=>r.split(".").pop();function Rt(r="description"){return r.replace("-","_").toUpperCase()}function vr(r){return r==null?void 0:r.toUpperCase()}function br(r="optional"){return r.replace("-","_").toUpperCase()}function kt(r){return structuredClone(r).sections.flatMap(t=>t.pages.flatMap(n=>n.questions))}var Er=Object.defineProperty,Nr=(r,t,n)=>t in r?Er(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n,U=(r,t,n)=>(Nr(r,typeof t!="symbol"?t+"":t,n),n),Rr=(r,t,n)=>{if(!t.has(r))throw TypeError("Cannot "+n)},It=(r,t,n)=>{if(t.has(r))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(r):t.set(r,n)},H=(r,t,n)=>(Rr(r,t,"access private method"),n),J,ce,pe,De;const Pe=/\$\{q\:(?<locator>[\-a-zA-Z0-9_\/\(\)]+)\}/g,qt=r=>{var t,n;return(n=(t=r.choiceId)!=null?t:r.choiceValue)!=null?n:r.text};class ue{constructor(t,n=[],i="",s=!1){It(this,J),It(this,pe),U(this,"questions",new Map),U(this,"responsesByQuestion",new Map),U(this,"responsesByQuestionStatement",new Map),U(this,"hashSalt"),U(this,"forExport"),U(this,"evaluationCache",new Map),this.questions=new Map((t?kt(t):[]).filter(a=>a.id).map(a=>[ze(a.id),a])),n.filter(a=>a.singleAnswer||a.multipleAnswers).forEach(a=>{const o=ze(a.questionId);this.responsesByQuestion.set(o,[...this.responsesByQuestion.get(o)||[],a]),a.statementId&&this.responsesByQuestionStatement.set(`${o}.${a.statementId}`,a)}),this.hashSalt=i,this.forExport=s}getQuestionAnswers(t,n){let i;if(n){const s=this.responsesByQuestionStatement.get(`${t}.${n}`);i=s===void 0?[]:[s]}else i=this.responsesByQuestion.get(t)||[];return i.flatMap(s=>{const{multipleAnswers:a,singleAnswer:o}=s;return a||[o]})}evaluateDisplayLogic(t){if(t&&!this.forExport)try{const n=this.evaluationCache.get(t);if(n!==void 0)return n;const i=Ce(t,this);return this.evaluationCache.set(t,i),i}catch(n){return console.error(n),!1}return!0}evaluateDynamicExpression(t,n){const i=this.questions.get(t.questionId);if(!i)return[];const s=this.getQuestionChoicesFlattened(i),a=s.filter(c=>this.isSelected({questionId:t.questionId,choice:c.id||c.value})),o=this.getQuestionStatementsFlattened(i),l=c=>n==="choices"?c:{...c,id:c.id||c.value||c.display},p=c=>({id:c.id,display:c.display,value:c.value});let _=[];switch(t.expression){case v.ALL:_=s.map(l);break;case v.ALL_ENTERED_TEXT:_=s.map(c=>l(H(this,pe,De).call(this,c,t)));break;case v.SELECTED:_=a;break;case v.SELECTED_ENTERED_TEXT:_=a.map(c=>l(H(this,pe,De).call(this,c,t)));break;case v.NOT_SELECTED:_=s.filter(c=>!this.isSelected({questionId:t.questionId,choice:c.id||c.value})).map(l);break;case v.FOR_MATRIX_CHOICE:_=o.filter(c=>this.isSelected({questionId:t.questionId,statementId:c.id,choice:t.identifier}));break;case v.UNSELECTED_FOR_MATRIX_CHOICE:_=o.filter(c=>!this.isSelected({questionId:t.questionId,statementId:c.id,choice:t.identifier}));break;default:_=[]}return this.forExport&&(_=t.expression===v.FOR_MATRIX_CHOICE||t.expression===v.UNSELECTED_FOR_MATRIX_CHOICE?o:s.map(l)),_.map(p)}isSelected(t){return!!H(this,J,ce).call(this,t.questionId,t.statementId,t.choice).length}countSelected(t){return this.getQuestionAnswers(t).length}selectedValue(t){const n=this.getQuestionAnswers(t.questionId,t.statementId);return n.length?qt(n[0]):null}countChoiceSelections(t,n){return H(this,J,ce).call(this,t,null,n).length}textEntry(t){return H(this,J,ce).call(this,t.questionId,t.statementId,t.choice).map(n=>n.text).filter(n=>n).join(", ")}getQuestionText(t){if(this.forExport)return t.text;let n=t.text;return n=n.replaceAll(Pe,(i,s)=>{if(s&&bt(s)){const a=L(s);return this.evaluateDynamicExpression(a,"choices").map(o=>o.display).join(", ")}return i}),n}getQuestionChoices(t){var n;const i=((n=t.choices)!=null?n:[]).filter(s=>this.evaluateDisplayLogic(s.displayLogic));if(t.dynamicChoices){const s=L(t.dynamicChoices),a=this.evaluateDynamicExpression(s,"choices");i.push(...a)}return t.type===me.MatrixSingle||t.type===me.MatrixMulti?i:this.applyRandomization(i,t.id,s=>{var a;return`${(a=s.id)!=null?a:s.value}`},t.randomization)}getQuestionChoiceGroups(t){var n;const i=(((n=t.choiceGroups)==null?void 0:n.filter(s=>this.evaluateDisplayLogic(s.displayLogic)))||[]).map(s=>({...s,choices:this.applyRandomization(s.choices.filter(a=>this.evaluateDisplayLogic(a.displayLogic)),t.id,a=>{var o;return`${(o=a.id)!=null?o:a.value}`},s.randomization)})).filter(s=>!!s.choices.length);return this.applyRandomization(i,t.id,s=>s.id,t.randomization)}getQuestionStatements(t){var n;const i=((n=t.statements)!=null?n:[]).filter(s=>this.evaluateDisplayLogic(s.displayLogic));if(t.dynamicStatements){const s=L(t.dynamicStatements),a=this.evaluateDynamicExpression(s,"statements");i.push(...a)}return this.applyRandomization(i,t.id,s=>s.id,t.randomization)}getQuestionStatementGroups(t){var n;const i=(((n=t.statementGroups)==null?void 0:n.filter(s=>this.evaluateDisplayLogic(s.displayLogic)))||[]).map(s=>({...s,statements:this.applyRandomization(s.statements.filter(a=>this.evaluateDisplayLogic(a.displayLogic)),t.id,a=>a.id,s.randomization)})).filter(s=>!!s.statements.length);return this.applyRandomization(i,t.id,s=>s.id,t.randomization)}getQuestionChoicesFlattened(t){return[...this.getQuestionChoices(t),...this.getQuestionChoiceGroups(t).flatMap(n=>n.choices)]}getQuestionStatementsFlattened(t){return[...this.getQuestionStatements(t),...this.getQuestionStatementGroups(t).flatMap(n=>n.statements)]}applyRandomization(t,n,i,s){var a,o;if(!s||this.forExport)return t;const l=new Map(t.map(u=>[i(u),u])),p=[...l.keys()],_=new Set(p),c=((a=s.order)!=null?a:["$"]).filter(u=>u==="$"||_.has(u)),m=p.filter(u=>!c.includes(u)).map(u=>({weight:this.keyHash(n,u),key:u}));m.sort((u,y)=>u.weight.localeCompare(y.weight));const f=(o=s.total)!=null?o:p.length,x=Math.min(f-(c.length-1),m.length),h=[];return c.forEach(u=>{u==="$"?h.push(...m.slice(0,x).map(y=>y.key)):h.push(u)}),h.map(u=>l.get(u))}keyHash(t,n){const i=`${t}.${this.hashSalt}.${n}`;return jt.createHash("sha256").update(i).digest("hex")}}J=new WeakSet,ce=function(r,t,n){return this.getQuestionAnswers(r,t).filter(i=>typeof n=="undefined"||n===null||qt(i)===n)},pe=new WeakSet,De=function(r,t){if(r.textInput&&["forced","optional"].includes(r.textInput)){const n=this.textEntry({questionId:t.questionId,choice:r.id||r.value});return{...r,display:n}}return r};function Ot(r){if(r.length===1)return r[0];const t=r[1].value;return t==="or"?r[0]||r[2]:t==="and"?r[0]&&r[2]:!1}function he(r,t,n){switch(t){case"==":return r===n;case"!=":return r!==n;case"<=":return r<=n;case">=":return r>=n;case"<":return r<n;case">":return r>n;default:return!1}}function At(r,t,n,i){const s=i?r.toLowerCase():r,a=i?n.toLowerCase():n;switch(t){case"contains":return s.includes(a);case"not_contains":return!s.includes(a);case"regex_matches":try{return new RegExp(n).test(s)}catch{return!1}default:return he(s,t,a)}}function St(r,t){return r.length===1?t(r[0]):(Fe(r[0].type==="NEGATION"),!t(r[1]))}function Le(r){if(!["INT","IDENTIFIER"].includes(r.type))throw new SyntaxError(`Invalid token type: ${r.type}; expected IDENTIFIER or INT`);return R(r)}function R(r){var t,n;switch(r.type){case"IDENTIFIER":return r.value;case"INT":return parseInt(r.value,10);case"STRING":{const i=r.value.match(/(?:'(?<single>[^\']*)')|(?:"(?<double>[^\"]*)")/),s=((t=i==null?void 0:i.groups)==null?void 0:t.double)||((n=i==null?void 0:i.groups)==null?void 0:n.single);return Fe(s),s}case"OPERATOR":return r.value;case"TRUE":return!0;case"FALSE":return!1;default:throw new SyntaxError(`Invalid token type: ${r.type}`)}}function Ce(r,t){const n={start:i=>i[0],top_level_expr:Ot,bool_expr:Ot,condition:i=>i[0],qc_mc_selected:i=>St(i,s=>t.isSelected(s)),qc_mc_text:i=>At(t.textEntry(i[0]),R(i[1]),R(i[2]),!1),qc_mc_text_ignore_case:i=>At(t.textEntry(i[0]),R(i[1]),R(i[2]),!0),qc_mc_count:i=>he(t.countSelected(i[0]),R(i[1]),R(i[2])),qc_matrix_selected:i=>St(i,s=>t.isSelected(s)),qc_selected_value:i=>{const s=t.selectedValue(i[0]);return s!==null&&he(s,R(i[1]),R(i[2]))},qc_matrix_count:i=>he(t.countChoiceSelections(i[0],Le(i[1])),R(i[2]),R(i[3])),question_selector:i=>i[0].value,question_or_matrix_statement_selector:i=>typeof i[0]=="string"?{questionId:i[0]}:i[0],mc_choice_selector:i=>({questionId:i[0],choice:Le(i[1])}),matrix_statement_selector:i=>({questionId:i[0],statementId:R(i[1])}),matrix_choice_selector:i=>({...i[0],choice:Le(i[1])}),bool_const:i=>i[0].value==="true"};return dr.get_parser({transformer:n}).parse(r)}const kr=/\$\{m:([^\}]+)\}/g,Ir=100,Qe=(r,t)=>{if(typeof t=="string"){let n=t,i=0;for(;i<Ir;){const s=n.replace(kr,(a,o)=>{if(r[o]===void 0)throw new Error(`Undefined macro: ${o}`);return r[o]});if(s===n)return s;n=s,i+=1}throw new Error(`Failed to finish interpolate macros - cyclic macros!? Stuck at: ${t}"`)}return typeof t=="object"&&Object.keys(t).forEach(n=>{t[n]=Qe(r,t[n])}),t},$t=r=>(r.sections=Qe(r.macros||{},r.sections),r);var qr=Object.defineProperty,Or=(r,t,n)=>t in r?qr(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n,C=(r,t,n)=>(Or(r,typeof t!="symbol"?t+"":t,n),n);const zt=new Qt({allowUnionTypes:!0});Mt(zt);const Dt=zt.compile(Ge);class Y extends Error{}class $ extends Error{}class de extends Error{}class Q extends Error{}class Ar extends Error{}class Sr{constructor(){C(this,"seenQuestions",new Set),C(this,"seenMultiQuestions",new Set),C(this,"seenQuestionStatements",new Map),C(this,"seenQuestionChoices",new Map),C(this,"seenTextChoices",new Map),C(this,"evaluator",{}),C(this,"validateReference",t=>{var n,i,s;if(!this.seenQuestions.has(t.questionId))throw new Y(`Invalid question: ${t.questionId}`);if(t.statementId!==void 0&&!((n=this.seenQuestionStatements.get(t.questionId))!=null&&n.has(t.statementId)))throw new Y(`Invalid statement: ${t.questionId}.${t.statementId}`);if(t.choice!==void 0&&!((i=this.seenQuestionChoices.get(t.questionId))!=null&&i.has(t.choice)))throw new Y(`Invalid choice: ${t.questionId}[${t.choice}]`);if(t.choice!==void 0&&t.expectText===!0&&!((s=this.seenTextChoices.get(t.questionId))!=null&&s.has(t.choice)))throw new Y(`Invalid text reference: ${t.questionId}[${t.choice}]`);if(typeof t.expectMulti=="boolean"&&t.expectMulti&&!this.seenMultiQuestions.has(t.questionId))throw new $(`Invalid question reference: ${t.questionId}. Expected a multi-answer question.`);if(typeof t.expectMulti=="boolean"&&!t.expectMulti&&this.seenMultiQuestions.has(t.questionId))throw new $(`Invalid question reference: ${t.questionId}. Expected a non-multi-answer question.`)}),this.evaluator.isSelected=t=>(this.validateReference(t),!1),this.evaluator.countSelected=t=>(this.validateReference({questionId:t}),0),this.evaluator.selectedValue=t=>(this.validateReference({questionId:t.questionId,statementId:t.statementId,expectMulti:!1}),0),this.evaluator.countChoiceSelections=(t,n)=>(this.validateReference({questionId:t,choice:n}),0),this.evaluator.textEntry=t=>(this.validateReference({...t,expectText:!0}),"")}}const F=(r,t,n)=>{if(n)try{Ce(n,r.evaluator)}catch(i){throw i instanceof Y||i instanceof $||i instanceof Q?i:new Error(`Syntax error parsing display logic at ${t}: ${n}`)}},$r=(r,t)=>{[...t.matchAll(Pe)].forEach(n=>{var i;const s=L(n.groups.locator);if(!r.seenQuestions.has(s.questionId))throw new $(`Invalid question referenced in locator expression: ${s.questionId}/${s.expression}`);if(s.identifier&&!((i=r.seenQuestionChoices.get(s.questionId))!=null&&i.has(s.identifier)))throw new $(`Invalid question choice referenced in locator expression: ${s.questionId}/${s.expression}(${s.identifier})`)})},Z=(r,t,n)=>{if(n){const i=new Set(t);if(n.order){const s=n.order.split(" "),a=s.filter(o=>o==="$").length;if(a===0)throw new de(`Wildcard $ is missing in randomization order at ${r.id}`);if(a>1)throw new de(`Wildcard $ occurred multiples times in randomization order at ${r.id}`);if(s.forEach(o=>{if(o!=="$"&&!i.has(o))throw new de(`Unknown id ${o} in randomization ordering at ${r.id}`)}),n.total!==void 0&&n.total<s.length)throw new de(`Total value in randomization is too small at ${r.id}`)}}},Pt=(r,t)=>{const n=[v.FOR_MATRIX_CHOICE,v.UNSELECTED_FOR_MATRIX_CHOICE].includes(r.expression),i=(n?t.seenQuestionStatements:t.seenQuestionChoices).get(r.questionId);if(i===void 0)throw new $(`Invalid question referenced in locator expression: ${r.questionId}/${r.expression}`);if(n){const s=t.seenQuestionChoices.get(r.questionId);if(!r.identifier||!(s!=null&&s.has(r.identifier)))throw new $(`Invalid choice referenced in locator expression: ${r.questionId}/${r.expression}(${r.identifier})`)}return i},zr=(r,t)=>{var n,i,s,a,o,l,p,_,c,m,f;if($r(t,r.text),r.id!==void 0){if(F(t,r.id,r.display_logic),(n=r.statements)==null||n.forEach(h=>{F(t,`${r.id}.${h.id}`,h.display_logic)}),(i=r.choices)==null||i.forEach(h=>{F(t,`${r.id}[${h.id||h.value}]`,h.display_logic)}),r.type==="matrix-multi"||r.type==="matrix-single"?r.statement_groups?Z(r,r.statement_groups.map(h=>h.id),r.randomization):Z(r,(a=(s=r.statements)==null?void 0:s.map(h=>h.id))!=null?a:[],r.randomization):r.choice_groups?Z(r,r.choice_groups.map(h=>h.id),r.randomization):Z(r,(l=(o=r.choices)==null?void 0:o.map(h=>`${h.id||h.value}`))!=null?l:[],r.randomization),(p=r.statement_groups)==null||p.forEach(h=>{h.statements.forEach(u=>{F(t,`${r.id}.${u.id}`,u.display_logic)}),Z(r,h.statements.map(u=>u.id),h.randomization)}),(_=r.choice_groups)==null||_.forEach(h=>{h.choices.forEach(u=>{F(t,`${r.id}[${u.id||u.value}]`,u.display_logic)}),Z(r,h.choices.map(u=>`${u.id||u.value}`),h.randomization)}),t.seenQuestions.has(r.id))throw new Q(`Duplicate question id: ${r.id}`);if(t.seenQuestions.add(r.id),r.type&&["matrix-multi","mc-multi"].includes(r.type)&&t.seenMultiQuestions.add(r.id),r.statements||r.dynamic_statements){const h=new Set;if(t.seenQuestionStatements.set(r.id,h),(c=r.statements)==null||c.forEach(u=>{if(h.has(u.id))throw new Q(`Duplicate statement id: ${r.id}.${u.id}`);h.add(u.id)}),r.dynamic_statements){const u=L(r.dynamic_statements);Pt(u,t).forEach(y=>{if(typeof y=="number")throw new $(`Dynamic statement in question ${r.id} refers to choices with values`);if(h.has(y))throw new Q(`Duplicate statement ${y} via dynamic statements in question ${r.id}`);h.add(y)})}}const x=(m=r.choices)!=null?m:[];if(r.choice_groups){if(new Set(r.choice_groups.map(h=>h.id)).size!==r.choice_groups.length)throw new Q(`Choice groups must have a unique id in question ${r.id}`);r.choice_groups.forEach(h=>x.push(...h.choices))}if(x||r.dynamic_choices){const h=new Set;t.seenQuestionChoices.set(r.id,h);const u=new Set;if(t.seenTextChoices.set(r.id,u),x.forEach(y=>{var b;const q=(b=y.id)!=null?b:y.value;if(h.has(q))throw new Q(`Duplicate choice: ${r.id}[${q}]`);h.add(q),y.text_input&&y.text_input!=="no"&&u.add(q)}),r.dynamic_choices){const y=L(r.dynamic_choices);Pt(y,t).forEach(b=>{if(h.has(b))throw new Q(`Duplicate choice ${b} via dynamic choices in ${r.id}`);h.add(b)}),(f=t.seenTextChoices.get(y.questionId))==null||f.forEach(b=>u.add(b))}if(new Set([...h].map(y=>typeof y)).size>=2)throw new Ar("All choices in a question must either all have id's or all have values")}}},Dr=r=>{if(!Dt(r))throw new Error(`Invalid template: ${r.template.id}. Reason: ${JSON.stringify(Dt.errors,null,4)}`);$t(r);const t=new Sr;r.sections.forEach(n=>{F(t,n.id,n.display_logic),n.pages.forEach(i=>{var s;(s=i.questions)==null||s.forEach(a=>{zr(a,t)})})})};function Pr(r,t){const n=structuredClone(r);return{...n,sections:n.sections.map(i=>({id:i.id,name:i.name,hideProgressBar:i.hideProgressBar,pages:t.evaluateDisplayLogic(i.displayLogic)?i.pages.map(s=>({...s,questions:Lr(s.questions,t)})).filter(s=>s.questions.length):[]})).filter(i=>i.pages.length)}}function Lr(r,t){return r.filter(n=>t.evaluateDisplayLogic(n.displayLogic)).map(n=>({...n,text:t.getQuestionText(n),statements:t.getQuestionStatements(n),choices:t.getQuestionChoices(n),statementGroups:t.getQuestionStatementGroups(n),choiceGroups:t.getQuestionChoiceGroups(n),randomization:void 0}))}const Cr=r=>!!(r!=null&&r.singleAnswer)||!!(r!=null&&r.multipleAnswers)&&(r==null?void 0:r.multipleAnswers.length)>0,Qr=(r,t)=>{let n=!1,i=t,s=new ue(r,i);const a=p=>_=>{const c=p.includes(_.questionId);return c&&(n=!0),!c},o=p=>_=>{const c=!_.statementId||p.includes(_.statementId);return c||(n=!0),c},l=p=>_=>{var c;if(_.singleAnswer){const f=!!_.singleAnswer.text||p.includes(_.singleAnswer.choiceId||_.singleAnswer.choiceValue);return f||(n=!0),{..._,singleAnswer:f?_.singleAnswer:void 0}}const m=(c=_.multipleAnswers)==null?void 0:c.filter(f=>!!f.text||p.includes(f.choiceId||f.choiceValue));return m&&m.length<_.multipleAnswers.length&&(n=!0),{..._,multipleAnswers:m}};for(const p of r.sections){if(!s.evaluateDisplayLogic(p.displayLogic)){const _=p.pages.flatMap(c=>c.questions).map(c=>c.id);i=i.filter(a(_)),n&&(n=!1,s=new ue(r,i));continue}for(const _ of p.pages)for(const c of _.questions){if(!s.evaluateDisplayLogic(c.displayLogic))i=i.filter(a([c.id]));else{const m=s.getQuestionStatementsFlattened(c).map(u=>u.id),f=s.getQuestionChoicesFlattened(c).map(u=>u.id||u.value),x=o(m),h=l(f);i=i.filter(u=>u.questionId!==c.id||x(u)),i=i.map(u=>u.questionId!==c.id?u:h(u))}n&&(n=!1,s=new ue(r,i))}}return i},Mr=Ge,jr="pulse_default_alpha",Ur={allPermissions:Ft,SURVEY_RESOURCE_TYPE:Ut,surveyAdministerPermission:Ze};export{jr as DEFAULT_TEMPLATE_ID,v as LOCATOR_EXPRESSION,Pe as QUESTION_TEXT_LOCATOR_PATTERN,ue as TemplateContextEvaluator,Ce as evaluateExpression,Pr as evaluateTemplateNode,kt as extractQuestionNodes,Zt as getExperimentalOptionalBoolean,Bt as getExperimentalOptionalString,Nt as getQualifiedQuestionId,Rt as getQuestionTypeEnum,Et as getRandomizationTypeEnum,ze as getRawQuestionId,Qr as getRelevantQuestionResponses,xr as getTemplateNode,Cr as hasAnswer,Qe as interpolateMacros,$t as interpolateTemplate,L as parseLocator,Ur as permissions,Gt as polyfillStructuredClone,Mr as templateSchema,_e as transformCase,bt as validateLocator,Dr as validateTemplate};
|
|
19
|
+
`),this.last_token=i}eq(t){return t instanceof je?this.text===t.text&&this.line_ctr===t.line_ctr&&this.last_token===t.last_token:G}}class mt{constructor(t,n){this.lexer=t,this.state=n}static from_text(t,n){return new this(t,new je(n))}lex(t){return this.lexer.lex(this.state,t)}}class le extends st{lex(t,n){return G}}function Gn(r,t){r.sort((n,i)=>{let s=t(n),a=t(i);for(let o=0;o<s.length;o++){if(s[o]>a[o])return 1;if(s[o]<a[o])return-1}return 0})}class _e extends le{constructor(t){super();let n=[...t.terminals];if(this.re=t.re_module,!t.skip_validation){for(const i of n){try{this.re.compile(i.pattern.to_regexp(),t.g_regex_flags)}catch(s){throw s instanceof this.re.error?new V(d("Cannot compile token %s: %s",i.name,i.pattern)):s}if(i.pattern.min_width===0)throw new V(d("Lexer does not allow zero-width terminals. (%s: %s)",i.name,i.pattern))}if(!(new Set(t.ignore)<=new Set(n.map(i=>i.name))))throw new V(d("Ignore terminals are not defined: %s",lt(new Set(t.ignore),new Set(n.map(i=>i.name)))))}this.newline_types=ne(n.filter(i=>Bn(i.pattern.to_regexp())).map(i=>i.name)),this.ignore_types=ne(t.ignore),Gn(n,i=>[-i.priority,-i.pattern.max_width,-i.pattern.value.length,i.name]),this.terminals=n,this.user_callbacks=t.callbacks,this.g_regex_flags=t.g_regex_flags,this.use_bytes=t.use_bytes,this.terminals_by_name=t.terminals_by_name,this._scanner=null}_build_scanner(){let t;[t,this.callback]=Zn(this.terminals,this.g_regex_flags,this.re,this.use_bytes);for(const[n,i]of T(this.user_callbacks))n in this.callback?this.callback[n]=new Fn(this.callback[n],i,s=>s.type===n):this.callback[n]=i;this._scanner=new rt(t,this.g_regex_flags,this.re,this.use_bytes)}get scanner(){return this._scanner===null&&this._build_scanner(),this._scanner}match(t,n){return this.scanner.match(t,n)}*lex(t,n){try{for(;;)yield this.next_token(t,n)}catch(i){if(!(i instanceof ve))throw i}}next_token(t,n=null){let i,s,a,o,l=t.line_ctr;for(;l.char_pos<t.text.length;){if(s=this.match(t.text,l.char_pos),!s)throw i=lt(this.scanner.allowed_types,this.ignore_types),i||(i=new Set(["<END-OF-FILE>"])),new M({seq:t.text,lex_pos:l.char_pos,line:l.line,column:l.column,allowed:i,token_history:t.last_token&&[t.last_token],state:n,terminals_by_name:this.terminals_by_name});let[p,_]=s;if(this.ignore_types.has(_))_ in this.callback&&(o=new g(_,p,l.char_pos,l.line,l.column),this.callback[_](o)),l.feed(p,this.newline_types.has(_));else{if(a=new g(_,p,l.char_pos,l.line,l.column),l.feed(p,this.newline_types.has(_)),a.end_line=l.line,a.end_column=l.column,a.end_pos=l.char_pos,a.type in this.callback&&(a=this.callback[a.type](a),!(a instanceof g)))throw new V(d("Callbacks must return a token (returned %r)",a));return t.last_token=a,a}}throw new ve(this)}}class Wn extends le{constructor({conf:t,states:n,always_accept:i=[]}={}){super();let s,a,o,l=[...t.terminals],p=t.terminals_by_name,_=I(t);_.terminals=l;let c=new Map;this.lexers={};for(let[m,f]of T(n))s=ne(f),c.has(s)?a=c.get(s):(f=En(new Set(f),[...new Set(t.ignore),...new Set(i)]),o=I(_),o.terminals=[...f].filter(x=>x in p).map(x=>p[x]),a=new _e(o),c.set(s,a)),this.lexers[m]=a;this.root_lexer=new _e(_)}*lex(t,n){let i,s,a;try{for(;;)s=this.lexers[n.position],yield s.next_token(t,n)}catch(o){if(!(o instanceof ve))if(o instanceof M)try{throw i=t.last_token,a=this.root_lexer.next_token(t,n),new j({token:a,expected:o.allowed,state:n,token_history:[i],terminals_by_name:this.root_lexer.terminals_by_name})}catch(l){throw l}else throw o}}}class ft extends N{static get __serialize_fields__(){return["terminals","ignore","g_regex_flags","use_bytes","lexer_type"]}static get __serialize_namespace__(){return[oe]}constructor({terminals:t,re_module:n,ignore:i=[],postlex:s=null,callbacks:a=null,g_regex_flags:o="",skip_validation:l=!1,use_bytes:p=!1}={}){super(),this.terminals=t,this.terminals_by_name=Object.fromEntries(this.terminals.map(_=>[_.name,_])),this.ignore=i,this.postlex=s,this.callbacks=Object.keys(a).length||{},this.g_regex_flags=o,this.re_module=n,this.skip_validation=l,this.use_bytes=p,this.lexer_type=null}_deserialize(){this.terminals_by_name=Object.fromEntries(this.terminals.map(t=>[t.name,t]))}}class yt extends N{static get __serialize_fields__(){return["rules","start","parser_type"]}constructor(t,n,i){super(),this.rules=t,this.callbacks=n,this.start=i,this.parser_type=null}}class Vn{constructor(t){this.node_builder=t}__call__(t){return t.length===1?t[0]:this.node_builder(t)}}const Xn=L(Vn);class Hn{constructor(t,n=null){this.node_builder=t,this.node_filter=n}__call__(t){let n,i,s,a=this.node_builder(t);return a instanceof w&&(s=a.meta,n=this._pp_get_meta(t),n!==null&&("line"in s||(s.line=n&&n.container_line||n.line,s.column=n&&n.container_column||n.column,s.start_pos=n&&n.container_start_pos||n.start_pos,s.empty=!1),s.container_line=n&&n.container_line||n.line,s.container_column=n&&n.container_column||n.column),i=this._pp_get_meta([...t].reverse()),i!==null&&("end_line"in s||(s.end_line=i&&i.container_end_line||i.end_line,s.end_column=i&&i.container_end_column||i.end_column,s.end_pos=i&&i.container_end_pos||i.end_pos,s.empty=!1),s.container_end_line=i&&i.container_end_line||i.end_line,s.container_end_column=i&&i.container_end_column||i.end_column)),a}_pp_get_meta(t){for(const n of t)if(!(this.node_filter!==null&&!this.node_filter(n))){if(n instanceof w){if(!n.meta.empty)return n.meta}else if(n instanceof g)return n}}}const gt=L(Hn);function Jn(r){if(Rn(r))return re({unknown_param_0:gt,node_filter:r});if(r===!0)return gt;if(r===!1)return null;throw new S(d("Invalid option for propagate_positions: %r",r))}class ze{constructor(t,n,i){this.node_builder=i,this.to_include=t,this.append_none=n}__call__(t){let n=[];for(const[i,s,a]of this.to_include)a&&n.push(...O([null],a)),s?n.push(...t[i].children):n.push(t[i]);return this.append_none&&n.push(...O([null],this.append_none)),this.node_builder(n)}}const Yn=L(ze);class Kn extends ze{__call__(t){let n=[];for(const[i,s,a]of this.to_include)a&&n.push(...O([null],a)),s?n.length?n.push(...t[i].children):n=t[i].children:n.push(t[i]);return this.append_none&&n.push(...O([null],this.append_none)),this.node_builder(n)}}const er=L(Kn);class tr extends ze{constructor(t,n){super(),this.node_builder=n,this.to_include=t}__call__(t){let n=[];for(const[i,s]of this.to_include)s?n.length?n.push(...t[i].children):n=t[i].children:n.push(t[i]);return this.node_builder(n)}}const nr=L(tr);function rr(r){return!r.is_term&&r.name.startsWith("_")}function ir(r,t,n,i){let s,a;i.length?(a=i.map(p=>(0+p).toString()).join(""),s=a.split("0").map(p=>p.length)):s=O([0],r.length+1);let o=[],l=0;for(const[p,_]of W(r))l+=s[p],(t||!(_.is_term&&_.filter_out))&&(o.push([p,rr(_),l]),l=0);if(l+=s[r.length],i.length||o.length<r.length||kn(o.map(([p,_,c])=>_)))return(i.length||n).length?re(n?Yn:er,o,l):re(nr,o.map(([p,_,c])=>[p,_]))}function sr(r){function t(n){let i=new w(r.name,n);return r(i)}return t=wraps(r)(t),t}function ar(r,t,n){if(n===_vargs_meta||n===_vargs_meta_inline)throw new NotImplementedError("Meta args not supported for internal transformer");function i(s){return n(r,t,s,null)}return i=wraps(r)(i),i}class or{constructor(t,n,i=!1,s=!1,a=!1){this.tree_class=n,this.propagate_positions=i,this.ambiguous=s,this.maybe_placeholders=a,this.rule_builders=[...this._init_builders(t)]}*_init_builders(t){let n,i,s,a,o=Jn(this.propagate_positions);for(const l of t)s=l.options,i=s.keep_all_tokens,n=s.expand1,a=[...pt(null,[n&&!l.alias&&Xn,ir(l.expansion,i,this.ambiguous,this.maybe_placeholders?s.empty_indices:[]),o])],yield[l,a]}create_callback(t=null){let n,i,s,a=new Map;for(const[o,l]of this.rule_builders){i=o.alias||o.options.template_source||o.origin.name,t&&t[i]?(n=t&&t[i],s=n&&n.visit_wrapper||null,s!==null?n=ar(n,i,s):t instanceof dt&&(n=sr(n))):n=re(this.tree_class,i);for(const p of l)n=p(n);if(a.has(o))throw new ie(d("Rule '%s' already exists",o));a.set(o,n)}return a}}class xt extends N{constructor({parser_conf:t,debug:n=!1}={}){super();let i=new LALR_Analyzer({unknown_param_0:t,debug:n});i.compute_lalr();let s=t.callbacks;this._parse_table=i.parse_table,this.parser_conf=t,this.parser=new wt(i.parse_table,s,n)}static deserialize(t,n,i,s=!1){let a=we(this);return a._parse_table=cr.deserialize(t,n),a.parser=new wt(a._parse_table,i,s),a}serialize(t){return this._parse_table.serialize(t)}parse_interactive(t,n){return this.parser.parse({lexer:t,start:n,start_interactive:!0})}parse({lexer:t,start:n,on_error:i=null}={}){let s,a;try{return this.parser.parse({lexer:t,start:n})}catch(o){if(o instanceof z){if(i===null)throw o;for(;;){if(o instanceof M&&(a=o.interactive_parser.lexer_thread.state,s=a.line_ctr.char_pos),!i(o))throw o;o instanceof M&&s===a.line_ctr.char_pos&&a.line_ctr.feed(a.text.slice(s,s+1));try{return o.interactive_parser.resume_parse()}catch(l){if(l instanceof j){if(o instanceof j&&o.token.type===l.token.type&&l.token.type==="$END"&&o.interactive_parser.eq(l.interactive_parser))throw l;o=l}else if(l instanceof M)o=l;else throw l}}}else throw o}}}class lr{constructor(t,n,i){this.parse_table=t,this.start_state=this.parse_table.start_states[i],this.end_state=this.parse_table.end_states[i],this.states=this.parse_table.states,this.callbacks=n,this.start=i}}class Ue{constructor(t,n,i=null,s=null){this.parse_conf=t,this.lexer=n,this.state_stack=i||[this.parse_conf.start_state],this.value_stack=s||[]}get position(){return E(this.state_stack)}eq(t){return t instanceof Ue?this.state_stack.length===t.state_stack.length&&this.position===t.position:G}copy(){return I(this)}feed_token(t,n=!1){let i,s,a,o,l,p,_,c,m,f,x=this.state_stack,h=this.value_stack,u=this.parse_conf.states,y=this.parse_conf.end_state,b=this.parse_conf.callbacks;for(;;){if(m=E(x),t.type in u[m])[s,a]=u[m][t.type];else throw o=new Set(xe(u[m]).filter(q=>ut(q)).map(q=>q)),new j({token:t,expected:o,state:this,interactive_parser:null});if(s===De){x.push(a),h.push(t.type in b?b[t.type](t):t);return}else if(p=a,c=p.expansion.length,c?(_=h.slice(-c),x.splice(-c),h.splice(-c)):_=[],f=b.get(p)(_),[i,l]=u[E(x)][p.origin.name],x.push(l),h.push(f),n&&E(x)===y)return E(h)}}}class wt{constructor(t,n,i=!1){this.parse_table=t,this.callbacks=n,this.debug=i}parse({lexer:t,start:n,value_stack:i=null,state_stack:s=null,start_interactive:a=!1}={}){let o=new lr(this.parse_table,this.callbacks,n),l=new Ue(o,t,s,i);return a?new D(this,l,l.lexer):this.parse_from_state(l)}parse_from_state(t){let n,i;try{i=null;for(i of t.lexer.lex(t))t.feed_token(i);return n=i?g.new_borrow_pos("$END","",i):new g("$END","",0,1,1),t.feed_token(n,!0)}catch(s){if(s instanceof z){try{s.interactive_parser=new D(this,t,t.lexer)}catch(a){if(!(a instanceof ReferenceError))throw a}throw s}else if(s instanceof Error){if(this.debug){console.log(""),console.log("STATE STACK DUMP"),console.log("----------------");for(const[a,o]of W(t.state_stack))console.log(d("%d)",a),o);console.log("")}throw s}else throw s}}}class D{constructor(t,n,i){this.parser=t,this.parser_state=n,this.lexer_thread=i,this.result=null}feed_token(t){return this.parser_state.feed_token(t,t.type==="$END")}*iter_parse(){for(const t of this.lexer_thread.lex(this.parser_state))yield t,this.result=this.feed_token(t)}exhaust_lexer(){return[...this.iter_parse()]}feed_eof(t=null){let n=t!==null?g.new_borrow_pos("$END","",t):new g("$END","",0,1,1);return this.feed_token(n)}copy(){return I(this)}eq(t){return t instanceof D?this.parser_state===t.parser_state&&this.lexer_thread===t.lexer_thread:!1}as_immutable(){let t=I(this);return new Tt(t.parser,t.parser_state,t.lexer_thread)}pretty(){let t=["Parser choices:"];for(const[n,i]of T(this.choices()))t.push(d(" - %s -> %r",n,i));return t.push(d("stack size: %s",this.parser_state.state_stack.length)),t.join(`
|
|
20
|
+
`)}choices(){return this.parser_state.parse_conf.parse_table.states[this.parser_state.position]}accepts(){let t,n=new Set;for(const i of this.choices())if(ut(i)){t=I(this);let s=null;try{t.feed_token(new g(i,""))}catch(a){if(s=a,!(a instanceof j))throw a}s||n.add(i)}return n}resume_parse(){return this.parser.parse_from_state(this.parser_state)}}class Tt extends D{constructor(){super(...arguments),k(this,"result",null)}feed_token(t){let n=I(this);return n.result=D.feed_token(n,t),n}exhaust_lexer(){let t=this.as_mutable();return t.exhaust_lexer(),t.as_immutable()}as_mutable(){let t=I(this);return new D(t.parser,t.parser_state,t.lexer_thread)}}class vt{constructor(t){this.name=t}repr(){return this.toString()}}var De=new vt("Shift"),bt=new vt("Reduce");class _r{constructor(t,n,i){this.states=t,this.start_states=n,this.end_states=i}serialize(t){let n=new Enumerator,i=Object.fromEntries(T(this.states).map(([s,a])=>[s,Object.fromEntries(T(a).map(([o,[l,p]])=>[at(n,o),l===bt?[1,p.serialize(t)]:[0,p]]))]));return{tokens:n.reversed(),states:i,start_states:this.start_states,end_states:this.end_states}}static deserialize(t,n){const i=this;let s=t.tokens,a=Object.fromEntries(T(t.states).map(([o,l])=>[o,Object.fromEntries(T(l).map(([p,[_,c]])=>[s[p],_===1?[bt,B.deserialize(c,n)]:[De,c]]))]));return new i(a,t.start_states,t.end_states)}}class cr extends _r{static from_ParseTable(t){const n=this;let i=[...t.states],s=Object.fromEntries(W(i).map(([p,_])=>[_,p])),a={};for(let[p,_]of T(t.states))_=Object.fromEntries(T(_).map(([c,m])=>[c,m[0]===De?[m[0],s[m[1]]]:m])),a[s[p]]=_;let o=Object.fromEntries(T(t.start_states).map(([p,_])=>[p,s[_]])),l=Object.fromEntries(T(t.end_states).map(([p,_])=>[p,s[_]]));return new n(a,o,l)}}function pr(r){if(r&&r.__future_interface__)return r;{class t extends le{constructor(i){super(),this.lexer=r(i)}lex(i,s){return this.lexer.lex(i.text)}}return t}}function ur(r,t,n,i,s){let a=yt.deserialize(r.parser_conf,t),o=xt.deserialize(r.parser,t,i,s.debug);return a.callbacks=i,new hr({lexer_conf:n,parser_conf:a,options:s,parser:o})}var Et={};class hr extends N{static get __serialize_fields__(){return["lexer_conf","parser_conf","parser"]}constructor({lexer_conf:t,parser_conf:n,options:i,parser:s=null}={}){super();let a,o;this.parser_conf=n,this.lexer_conf=t,this.options=i,s?this.parser=s:(o=at(Et,n.parser_type),this.parser=o(t,n,i));let l=t.lexer_type;if(this.skip_lexer=!1,["dynamic","dynamic_complete"].includes(l)){this.skip_lexer=!0;return}const p={basic:yr,contextual:gr};l in p?(a=p[l],this.lexer=a(t,this.parser,t.postlex,i)):this.lexer=pr(l)(t),t.postlex&&(this.lexer=new fr(this.lexer,t.postlex))}_verify_start(t=null){let n;if(t===null){if(n=this.parser_conf.start,n.length>1)throw new S("Lark initialized with more than 1 possible start rule. Must specify which start rule to parse",n);[t]=n}else if(!this.parser_conf.start.includes(t))throw new S(d("Unknown start rule %s. Must be one of %r",t,this.parser_conf.start));return t}_make_lexer_thread(t){return this.skip_lexer?t:mt.from_text(this.lexer,t)}parse(t,n=null,i=null){let s=this._verify_start(n),a=i===null?{}:{on_error:i},o=this._make_lexer_thread(t);return this.parser.parse({lexer:o,start:s,...a})}parse_interactive(t=null,n=null){let i=this._verify_start(n);if(this.parser_conf.parser_type!=="lalr")throw new S("parse_interactive() currently only works with parser='lalr' ");let s=this._make_lexer_thread(t);return this.parser.parse_interactive(s,i)}}function dr(r,t){let n;Ne(r,["lalr","earley","cyk"]),typeof t!="object"&&(n={lalr:["basic","contextual"],earley:["basic","dynamic","dynamic_complete"],cyk:["basic"]}[r],Ne(t,n,d("Parser %r does not support lexer %%r, expected one of %%s",r)))}function mr(r,t){let n,i={};for(const s of t)n=r&&r[s.name]||null,n!==null&&(i[s.name]=n);return i}class fr{constructor(t,n){this.lexer=t,this.postlexer=n}lex(t,n){let i=this.lexer.lex(t,n);return this.postlexer.process(i)}}function yr(r,t,n,i){return new _e(r)}function gr(r,t,n,i){let s=Object.fromEntries(T(t._parse_table.states).map(([o,l])=>[o,[...xe(l)]])),a=n?n.always_accept:[];return new Wn({conf:r,states:s,always_accept:a})}function xr(r,t,n=null){let i=n?n.debug:!1;return new xt({parser_conf:t,debug:i})}Et.lalr=xr;class Nt extends st{constructor(){super(...arguments),k(this,"always_accept",[])}process(t){return t}}class wr extends N{constructor(t){super(),k(this,"OPTIONS_DOC",'\n **=== General Options ===**\n\n start\n The start symbol. Either a string, or a list of strings for multiple possible starts (Default: "start")\n debug\n Display debug information and extra warnings. Use only when debugging (Default: ``False``)\n When used with Earley, it generates a forest graph as "sppf.png", if \'dot\' is installed.\n transformer\n Applies the transformer to every parse tree (equivalent to applying it after the parse, but faster)\n propagate_positions\n Propagates (line, column, end_line, end_column) attributes into all tree branches.\n Accepts ``False``, ``True``, or a callable, which will filter which nodes to ignore when propagating.\n maybe_placeholders\n When ``True``, the ``[]`` operator returns ``None`` when not matched.\n When ``False``, ``[]`` behaves like the ``?`` operator, and returns no value at all.\n (default= ``True``)\n cache\n Cache the results of the Lark grammar analysis, for x2 to x3 faster loading. LALR only for now.\n\n - When ``False``, does nothing (default)\n - When ``True``, caches to a temporary file in the local directory\n - When given a string, caches to the path pointed by the string\n regex\n When True, uses the ``regex`` module instead of the stdlib ``re``.\n g_regex_flags\n Flags that are applied to all terminals (both regex and strings)\n keep_all_tokens\n Prevent the tree builder from automagically removing "punctuation" tokens (Default: ``False``)\n tree_class\n Lark will produce trees comprised of instances of this class instead of the default ``lark.Tree``.\n\n **=== Algorithm Options ===**\n\n parser\n Decides which parser engine to use. Accepts "earley" or "lalr". (Default: "earley").\n (there is also a "cyk" option for legacy)\n lexer\n Decides whether or not to use a lexer stage\n\n - "auto" (default): Choose for me based on the parser\n - "basic": Use a basic lexer\n - "contextual": Stronger lexer (only works with parser="lalr")\n - "dynamic": Flexible and powerful (only with parser="earley")\n - "dynamic_complete": Same as dynamic, but tries *every* variation of tokenizing possible.\n ambiguity\n Decides how to handle ambiguity in the parse. Only relevant if parser="earley"\n\n - "resolve": The parser will automatically choose the simplest derivation\n (it chooses consistently: greedy for tokens, non-greedy for rules)\n - "explicit": The parser will return all derivations wrapped in "_ambig" tree nodes (i.e. a forest).\n - "forest": The parser will return the root of the shared packed parse forest.\n\n **=== Misc. / Domain Specific Options ===**\n\n postlex\n Lexer post-processing (Default: ``None``) Only works with the basic and contextual lexers.\n priority\n How priorities should be evaluated - "auto", ``None``, "normal", "invert" (Default: "auto")\n lexer_callbacks\n Dictionary of callbacks for the lexer. May alter tokens during lexing. Use with caution.\n use_bytes\n Accept an input of type ``bytes`` instead of ``str``.\n edit_terminals\n A callback for editing the terminals before parse.\n import_paths\n A List of either paths or loader functions to specify from where grammars are imported\n source_path\n Override the source of from where the grammar was loaded. Useful for relative imports and unconventional grammar loading\n **=== End of Options ===**\n '),k(this,"_defaults",{debug:!1,keep_all_tokens:!1,tree_class:null,cache:!1,postlex:null,parser:"earley",lexer:"auto",transformer:null,start:"start",priority:"auto",ambiguity:"auto",regex:!1,propagate_positions:!1,lexer_callbacks:{},maybe_placeholders:!0,edit_terminals:null,g_regex_flags:"",use_bytes:!1,import_paths:[],source_path:null,_plugins:null});let n,i=_t(t),s=this;for(const[a,o]of T(this._defaults))a in i?(n=vn(i,a),typeof o=="boolean"&&!["cache","use_bytes","propagate_positions"].includes(a)&&(n=ct(n))):n=o,s[a]=n;if(typeof s.start=="string"&&(s.start=[s.start]),this.options=s,Ne(this.parser,["earley","lalr","cyk",null]),this.parser==="earley"&&this.transformer)throw new S("Cannot specify an embedded transformer when using the Earley algorithm. Please use your transformer on the resulting parse tree, or use a different algorithm (i.e. LALR)");if(Object.keys(i).length)throw new S(d("Unknown options: %s",xe(i)))}serialize(t){return this.options}static deserialize(t,n){const i=this;return new i(t)}}class Rt extends N{static get __serialize_fields__(){return["parser","rules","options"]}_build_lexer(t=!1){let n=this.lexer_conf;return t&&(n=I(n),n.ignore=[]),new _e(n)}_prepare_callbacks(){this._callbacks=new Map,this.options.ambiguity!=="forest"&&(this._parse_tree_builder=new or(this.rules,this.options.tree_class||bn(w),this.options.propagate_positions,this.options.parser!=="lalr"&&this.options.ambiguity==="explicit",this.options.maybe_placeholders),this._callbacks=this._parse_tree_builder.create_callback(this.options.transformer)),ot(this._callbacks,mr(this.options.transformer,this.terminals))}_deserialize_lexer_conf(t,n,i){let s=ft.deserialize(t.lexer_conf,n);return s.callbacks=i.lexer_callbacks||{},s.re_module=i.regex?regex:nt,s.use_bytes=i.use_bytes,s.g_regex_flags=i.g_regex_flags||"",s.skip_validation=!0,s.postlex=i.postlex,s}_load({f:t,...n}={}){let i;Te(t)?i=t:i=pickle.load(t);let s=i.memo,a=i.data,o=$n.deserialize(s,{Rule:B,TerminalDef:oe},{}),l=_t(a.options);return ot(l,n),this.options=wr.deserialize(l,o),this.rules=a.rules.map(p=>B.deserialize(p,o)),this.source_path="<deserialized>",dr(this.options.parser,this.options.lexer),this.lexer_conf=this._deserialize_lexer_conf(a.parser,o,this.options),this.terminals=this.lexer_conf.terminals,this._prepare_callbacks(),this._terminals_dict=Object.fromEntries(this.terminals.map(p=>[p.name,p])),this.parser=ur(a.parser,o,this.lexer_conf,this._callbacks,this.options),this}static _load_from_dict({data:t,memo:n,...i}={}){return we(this)._load({f:{data:t,memo:n},...i})}repr(){return d("Lark(open(%r), parser=%r, lexer=%r, ...)",this.source_path,this.options.parser,this.options.lexer)}lex(t,n=!1){let i;!("lexer"in this)||n?i=this._build_lexer(n):i=this.lexer;let s=mt.from_text(i,t).lex(null);return this.options.postlex?this.options.postlex.process(s):s}get_terminal(t){return this._terminals_dict[t]}parse_interactive(t=null,n=null){return this.parser.parse_interactive({unknown_param_0:t,start:n})}parse(t,n=null,i=null){return this.parser.parse(t,n,i)}}class kt extends A{}class It extends Nt{constructor(){super(),this.paren_level=0,this.indent_level=[0]}*handle_NL(t){if(this.paren_level>0)return;yield t;let n=be(t.value,`
|
|
21
|
+
`,1)[1],i=Ee(n," ")+Ee(n," ")*this.tab_len;if(i>E(this.indent_level))this.indent_level.push(i),yield g.new_borrow_pos(this.INDENT_type,n,t);else{for(;i<E(this.indent_level);)this.indent_level.pop(),yield g.new_borrow_pos(this.DEDENT_type,n,t);if(i!==E(this.indent_level))throw new kt(d("Unexpected dedent to column %s. Expected dedent to %s",i,E(this.indent_level)))}}*_process(t){for(const n of t)n.type===this.NL_type?yield*this.handle_NL(n):yield n,this.OPEN_PAREN_types.includes(n.type)?this.paren_level+=1:this.CLOSE_PAREN_types.includes(n.type)&&(this.paren_level-=1);for(;this.indent_level.length>1;)this.indent_level.pop(),yield new g(this.DEDENT_type,"")}process(t){return this.paren_level=0,this.indent_level=[0],this._process(t)}get always_accept(){return[this.NL_type]}get NL_type(){throw new NotImplementedError}get OPEN_PAREN_types(){throw new NotImplementedError}get CLOSE_PAREN_types(){throw new NotImplementedError}get INDENT_type(){throw new NotImplementedError}get DEDENT_type(){throw new NotImplementedError}get tab_len(){throw new NotImplementedError}}class Tr extends It{static get NL_type(){return"_NEWLINE"}get NL_type(){return this.constructor.NL_type}static get OPEN_PAREN_types(){return["LPAR","LSQB","LBRACE"]}get OPEN_PAREN_types(){return this.constructor.OPEN_PAREN_types}static get CLOSE_PAREN_types(){return["RPAR","RSQB","RBRACE"]}get CLOSE_PAREN_types(){return this.constructor.CLOSE_PAREN_types}static get INDENT_type(){return"_INDENT"}get INDENT_type(){return this.constructor.INDENT_type}static get DEDENT_type(){return"_DEDENT"}get DEDENT_type(){return this.constructor.DEDENT_type}static get tab_len(){return 8}get tab_len(){return this.constructor.tab_len}}const vr={Terminal:qe,NonTerminal:Oe,RuleOptions:ae,PatternStr:Se,PatternRE:$e,TerminalDef:oe};var br={LarkError:A,ConfigurationError:S,GrammarError:ie,ParseError:On,LexError:V,UnexpectedInput:z,UnexpectedEOF:An,UnexpectedCharacters:M,UnexpectedToken:j,VisitError:Re,Meta:ht,Tree:w,Discard:te,Transformer:X,Transformer_InPlace:dt,Transformer_NonRecursive:zn,Transformer_InPlaceRecursive:Dn,VisitorBase:ke,Visitor:Pn,Visitor_Recursive:Ln,Interpreter:Cn,Symbol:Ie,Terminal:qe,NonTerminal:Oe,RuleOptions:ae,Rule:B,Pattern:Ae,PatternStr:Se,PatternRE:$e,TerminalDef:oe,Token:g,Lexer:le,LexerConf:ft,ParserConf:yt,InteractiveParser:D,ImmutableInteractiveParser:Tt,PostLex:Nt,Lark:Rt,DedentError:kt,Indenter:It,PythonIndenter:Tr,get_parser:wn},Er={parser:{lexer_conf:{terminals:[{"@":0},{"@":1},{"@":2},{"@":3},{"@":4},{"@":5},{"@":6},{"@":7},{"@":8},{"@":9},{"@":10},{"@":11},{"@":12},{"@":13},{"@":14},{"@":15},{"@":16},{"@":17},{"@":18},{"@":19},{"@":20}],ignore:["WS"],g_regex_flags:0,use_bytes:!1,lexer_type:"contextual",__type__:"LexerConf"},parser_conf:{rules:[{"@":21},{"@":22},{"@":23},{"@":24},{"@":25},{"@":26},{"@":27},{"@":28},{"@":29},{"@":30},{"@":31},{"@":32},{"@":33},{"@":34},{"@":35},{"@":36},{"@":37},{"@":38},{"@":39},{"@":40},{"@":41},{"@":42},{"@":43},{"@":44},{"@":45},{"@":46},{"@":47},{"@":48},{"@":49},{"@":50},{"@":51},{"@":52},{"@":53},{"@":54}],start:["start"],parser_type:"lalr",__type__:"ParserConf"},parser:{tokens:{0:"$END",1:"RPAR",2:"LSQB",3:"DOT",4:"question_selector",5:"IDENTIFIER",6:"OPERATOR",7:"CONJUNCTION",8:"__ANON_3",9:"__ANON_1",10:"qc_mc_text",11:"FALSE",12:"bool_expr",13:"__ANON_0",14:"__ANON_2",15:"__ANON_5",16:"qc_mc_count",17:"qc_matrix_selected",18:"condition",19:"qc_selected_value",20:"bool_const",21:"qc_matrix_count",22:"NEGATION",23:"__ANON_4",24:"TRUE",25:"qc_mc_selected",26:"qc_mc_text_ignore_case",27:"__ANON_6",28:"INT",29:"RSQB",30:"matrix_statement_selector",31:"matrix_choice_selector",32:"mc_choice_selector",33:"STRING",34:"question_or_matrix_statement_selector",35:"top_level_expr",36:"LPAR",37:"start"},states:{0:{0:[1,{"@":22}]},1:{1:[1,{"@":45}],2:[1,{"@":45}],3:[1,{"@":45}]},2:{2:[1,{"@":48}],1:[1,{"@":48}]},3:{1:[0,10]},4:{1:[0,9]},5:{4:[0,8],5:[0,1]},6:{2:[0,50]},7:{},8:{1:[0,57]},9:{6:[0,65]},10:{1:[1,{"@":42}],0:[1,{"@":42}],7:[1,{"@":42}]},11:{8:[0,66],9:[0,35],10:[0,44],11:[0,63],12:[0,49],13:[0,56],14:[0,54],15:[0,34],16:[0,75],17:[0,68],18:[0,78],19:[0,69],20:[0,36],21:[0,71],22:[0,80],23:[0,5],24:[0,43],25:[0,39],26:[0,51]},12:{0:[1,{"@":24}]},13:{6:[0,70]},14:{2:[0,77],3:[0,28]},15:{3:[0,28],1:[1,{"@":51}]},16:{1:[1,{"@":41}],0:[1,{"@":41}],7:[1,{"@":41}]},17:{27:[0,73]},18:{1:[1,{"@":52}]},19:{8:[0,66],9:[0,35],10:[0,44],11:[0,63],25:[0,39],12:[0,27],13:[0,56],14:[0,54],15:[0,34],16:[0,75],17:[0,68],18:[0,78],19:[0,69],21:[0,71],22:[0,80],23:[0,5],24:[0,43],26:[0,51],20:[0,36]},20:{27:[0,13]},21:{6:[0,47]},22:{6:[0,23]},23:{28:[0,60]},24:{1:[0,16]},25:{2:[0,77]},26:{0:[1,{"@":21}]},27:{1:[0,29]},28:{5:[0,2]},29:{7:[0,81],0:[1,{"@":23}]},30:{1:[0,22]},31:{1:[0,21]},32:{29:[0,64]},33:{1:[0,52]},34:{5:[0,1],4:[0,76]},35:{30:[0,6],5:[0,1],4:[0,14],31:[0,3],32:[0,41]},36:{1:[1,{"@":27}],0:[1,{"@":27}],7:[1,{"@":27}]},37:{29:[0,53]},38:{1:[1,{"@":40}],0:[1,{"@":40}],7:[1,{"@":40}]},39:{1:[1,{"@":29}],0:[1,{"@":29}],7:[1,{"@":29}]},40:{1:[1,{"@":43}],0:[1,{"@":43}],7:[1,{"@":43}]},41:{1:[0,61]},42:{28:[0,40]},43:{1:[1,{"@":53}],0:[1,{"@":53}],7:[1,{"@":53}]},44:{1:[1,{"@":30}],0:[1,{"@":30}],7:[1,{"@":30}]},45:{1:[1,{"@":50}]},46:{1:[1,{"@":39}],0:[1,{"@":39}],7:[1,{"@":39}]},47:{33:[0,48]},48:{1:[1,{"@":38}],0:[1,{"@":38}],7:[1,{"@":38}]},49:{0:[1,{"@":26}],1:[1,{"@":26}]},50:{5:[0,55],28:[0,62]},51:{1:[1,{"@":31}],0:[1,{"@":31}],7:[1,{"@":31}]},52:{1:[1,{"@":36}],0:[1,{"@":36}],7:[1,{"@":36}]},53:{1:[1,{"@":47}]},54:{4:[0,25],32:[0,31],5:[0,1]},55:{29:[0,45]},56:{4:[0,15],5:[0,1],30:[0,18],34:[0,30]},57:{6:[0,58]},58:{28:[0,38]},59:{28:[0,17],5:[0,20]},60:{1:[1,{"@":35}],0:[1,{"@":35}],7:[1,{"@":35}]},61:{1:[1,{"@":37}],0:[1,{"@":37}],7:[1,{"@":37}]},62:{29:[0,79]},63:{1:[1,{"@":54}],0:[1,{"@":54}],7:[1,{"@":54}]},64:{1:[1,{"@":46}]},65:{33:[0,46]},66:{4:[0,25],32:[0,4],5:[0,1]},67:{30:[0,6],5:[0,1],4:[0,14],32:[0,33],31:[0,24]},68:{1:[1,{"@":33}],0:[1,{"@":33}],7:[1,{"@":33}]},69:{1:[1,{"@":28}],0:[1,{"@":28}],7:[1,{"@":28}]},70:{28:[0,74]},71:{1:[1,{"@":34}],0:[1,{"@":34}],7:[1,{"@":34}]},72:{8:[0,66],35:[0,26],9:[0,35],10:[0,44],11:[0,63],36:[0,19],25:[0,39],13:[0,56],14:[0,54],15:[0,34],16:[0,75],17:[0,68],18:[0,78],19:[0,69],37:[0,7],12:[0,0],21:[0,71],22:[0,80],23:[0,5],24:[0,43],26:[0,51],20:[0,36]},73:{6:[0,42]},74:{1:[1,{"@":44}],0:[1,{"@":44}],7:[1,{"@":44}]},75:{1:[1,{"@":32}],0:[1,{"@":32}],7:[1,{"@":32}]},76:{2:[0,59]},77:{28:[0,32],5:[0,37]},78:{7:[0,11],0:[1,{"@":25}],1:[1,{"@":25}]},79:{1:[1,{"@":49}]},80:{9:[0,67]},81:{35:[0,12],36:[0,19]}},start_states:{start:72},end_states:{start:7}},__type__:"ParsingFrontend"},rules:[{"@":21},{"@":22},{"@":23},{"@":24},{"@":25},{"@":26},{"@":27},{"@":28},{"@":29},{"@":30},{"@":31},{"@":32},{"@":33},{"@":34},{"@":35},{"@":36},{"@":37},{"@":38},{"@":39},{"@":40},{"@":41},{"@":42},{"@":43},{"@":44},{"@":45},{"@":46},{"@":47},{"@":48},{"@":49},{"@":50},{"@":51},{"@":52},{"@":53},{"@":54}],options:{debug:!1,keep_all_tokens:!1,tree_class:null,cache:!1,postlex:null,parser:"lalr",lexer:"contextual",transformer:null,start:["start"],priority:"normal",ambiguity:"auto",regex:!1,propagate_positions:!1,lexer_callbacks:{},maybe_placeholders:!1,edit_terminals:null,g_regex_flags:0,use_bytes:!1,import_paths:[],source_path:null,_plugins:{}},__type__:"Lark"},Nr={0:{name:"WS",pattern:{value:`(?:[ \f\r
|
|
22
|
+
])+`,flags:[],_width:[1,4294967295],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},1:{name:"IDENTIFIER",pattern:{value:"[a-zA-Z][a-zA-Z0-9_]*[a-zA-Z0-9]",flags:[],_width:[2,4294967295],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},2:{name:"INT",pattern:{value:"-?[0-9]+",flags:[],_width:[1,4294967295],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},3:{name:"STRING",pattern:{value:`(?:'[^\\']*'|"[^"]*")`,flags:[],_width:[2,4294967295],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},4:{name:"OPERATOR",pattern:{value:"(?:regex_matches|not_contains|contains|==|!=|<=|>=|<|>)",flags:[],_width:[1,13],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},5:{name:"CONJUNCTION",pattern:{value:"(?:and|or)",flags:[],_width:[2,3],__type__:"PatternRE"},priority:0,__type__:"TerminalDef"},6:{name:"NEGATION",pattern:{value:"!",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},7:{name:"TRUE",pattern:{value:"true",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},8:{name:"FALSE",pattern:{value:"false",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},9:{name:"LPAR",pattern:{value:"(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},10:{name:"RPAR",pattern:{value:")",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},11:{name:"__ANON_0",pattern:{value:"selected_value(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},12:{name:"__ANON_1",pattern:{value:"selected(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},13:{name:"__ANON_2",pattern:{value:"text(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},14:{name:"__ANON_3",pattern:{value:"text_ignore_case(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},15:{name:"__ANON_4",pattern:{value:"count_selected(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},16:{name:"__ANON_5",pattern:{value:"count_choice_selections(",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},17:{name:"LSQB",pattern:{value:"[",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},18:{name:"__ANON_6",pattern:{value:"])",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},19:{name:"RSQB",pattern:{value:"]",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},20:{name:"DOT",pattern:{value:".",flags:[],__type__:"PatternStr"},priority:0,__type__:"TerminalDef"},21:{origin:{name:"start",__type__:"NonTerminal"},expansion:[{name:"top_level_expr",__type__:"NonTerminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},22:{origin:{name:"start",__type__:"NonTerminal"},expansion:[{name:"bool_expr",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},23:{origin:{name:"top_level_expr",__type__:"NonTerminal"},expansion:[{name:"LPAR",filter_out:!0,__type__:"Terminal"},{name:"bool_expr",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},24:{origin:{name:"top_level_expr",__type__:"NonTerminal"},expansion:[{name:"LPAR",filter_out:!0,__type__:"Terminal"},{name:"bool_expr",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"CONJUNCTION",filter_out:!1,__type__:"Terminal"},{name:"top_level_expr",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},25:{origin:{name:"bool_expr",__type__:"NonTerminal"},expansion:[{name:"condition",__type__:"NonTerminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},26:{origin:{name:"bool_expr",__type__:"NonTerminal"},expansion:[{name:"condition",__type__:"NonTerminal"},{name:"CONJUNCTION",filter_out:!1,__type__:"Terminal"},{name:"bool_expr",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},27:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"bool_const",__type__:"NonTerminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},28:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_selected_value",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},29:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_mc_selected",__type__:"NonTerminal"}],order:2,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},30:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_mc_text",__type__:"NonTerminal"}],order:3,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},31:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_mc_text_ignore_case",__type__:"NonTerminal"}],order:4,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},32:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_mc_count",__type__:"NonTerminal"}],order:5,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},33:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_matrix_selected",__type__:"NonTerminal"}],order:6,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},34:{origin:{name:"condition",__type__:"NonTerminal"},expansion:[{name:"qc_matrix_count",__type__:"NonTerminal"}],order:7,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},35:{origin:{name:"qc_selected_value",__type__:"NonTerminal"},expansion:[{name:"__ANON_0",filter_out:!0,__type__:"Terminal"},{name:"question_or_matrix_statement_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},36:{origin:{name:"qc_mc_selected",__type__:"NonTerminal"},expansion:[{name:"NEGATION",filter_out:!1,__type__:"Terminal"},{name:"__ANON_1",filter_out:!0,__type__:"Terminal"},{name:"mc_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},37:{origin:{name:"qc_mc_selected",__type__:"NonTerminal"},expansion:[{name:"__ANON_1",filter_out:!0,__type__:"Terminal"},{name:"mc_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},38:{origin:{name:"qc_mc_text",__type__:"NonTerminal"},expansion:[{name:"__ANON_2",filter_out:!0,__type__:"Terminal"},{name:"mc_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"STRING",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},39:{origin:{name:"qc_mc_text_ignore_case",__type__:"NonTerminal"},expansion:[{name:"__ANON_3",filter_out:!0,__type__:"Terminal"},{name:"mc_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"STRING",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},40:{origin:{name:"qc_mc_count",__type__:"NonTerminal"},expansion:[{name:"__ANON_4",filter_out:!0,__type__:"Terminal"},{name:"question_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},41:{origin:{name:"qc_matrix_selected",__type__:"NonTerminal"},expansion:[{name:"NEGATION",filter_out:!1,__type__:"Terminal"},{name:"__ANON_1",filter_out:!0,__type__:"Terminal"},{name:"matrix_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},42:{origin:{name:"qc_matrix_selected",__type__:"NonTerminal"},expansion:[{name:"__ANON_1",filter_out:!0,__type__:"Terminal"},{name:"matrix_choice_selector",__type__:"NonTerminal"},{name:"RPAR",filter_out:!0,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},43:{origin:{name:"qc_matrix_count",__type__:"NonTerminal"},expansion:[{name:"__ANON_5",filter_out:!0,__type__:"Terminal"},{name:"question_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"},{name:"__ANON_6",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},44:{origin:{name:"qc_matrix_count",__type__:"NonTerminal"},expansion:[{name:"__ANON_5",filter_out:!0,__type__:"Terminal"},{name:"question_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"},{name:"__ANON_6",filter_out:!0,__type__:"Terminal"},{name:"OPERATOR",filter_out:!1,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},45:{origin:{name:"question_selector",__type__:"NonTerminal"},expansion:[{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},46:{origin:{name:"mc_choice_selector",__type__:"NonTerminal"},expansion:[{name:"question_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"},{name:"RSQB",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},47:{origin:{name:"mc_choice_selector",__type__:"NonTerminal"},expansion:[{name:"question_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"},{name:"RSQB",filter_out:!0,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},48:{origin:{name:"matrix_statement_selector",__type__:"NonTerminal"},expansion:[{name:"question_selector",__type__:"NonTerminal"},{name:"DOT",filter_out:!0,__type__:"Terminal"},{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},49:{origin:{name:"matrix_choice_selector",__type__:"NonTerminal"},expansion:[{name:"matrix_statement_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"INT",filter_out:!1,__type__:"Terminal"},{name:"RSQB",filter_out:!0,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},50:{origin:{name:"matrix_choice_selector",__type__:"NonTerminal"},expansion:[{name:"matrix_statement_selector",__type__:"NonTerminal"},{name:"LSQB",filter_out:!0,__type__:"Terminal"},{name:"IDENTIFIER",filter_out:!1,__type__:"Terminal"},{name:"RSQB",filter_out:!0,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},51:{origin:{name:"question_or_matrix_statement_selector",__type__:"NonTerminal"},expansion:[{name:"question_selector",__type__:"NonTerminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},52:{origin:{name:"question_or_matrix_statement_selector",__type__:"NonTerminal"},expansion:[{name:"matrix_statement_selector",__type__:"NonTerminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},53:{origin:{name:"bool_const",__type__:"NonTerminal"},expansion:[{name:"TRUE",filter_out:!1,__type__:"Terminal"}],order:0,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"},54:{origin:{name:"bool_const",__type__:"NonTerminal"},expansion:[{name:"FALSE",filter_out:!1,__type__:"Terminal"}],order:1,alias:null,options:{keep_all_tokens:!1,expand1:!1,priority:null,template_source:null,empty_indices:[],__type__:"RuleOptions"},__type__:"Rule"}},Rr=Object.defineProperty,kr=(r,t,n)=>t in r?Rr(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n,U=(r,t,n)=>(kr(r,typeof t!="symbol"?t+"":t,n),n),Ir=(r,t,n)=>{if(!t.has(r))throw TypeError("Cannot "+n)},qt=(r,t,n)=>{if(t.has(r))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(r):t.set(r,n)},H=(r,t,n)=>(Ir(r,t,"access private method"),n),J,ce,pe,Pe;const Le=/\$\{q\:(?<locator>[\-a-zA-Z0-9_\/\(\)]+)\}/g,Ot=r=>{var t,n;return(n=(t=r.choiceId)!=null?t:r.choiceValue)!=null?n:r.text};class ue{constructor(t,n=[],i="",s=!1){qt(this,J),qt(this,pe),U(this,"questions",new Map),U(this,"responsesByQuestion",new Map),U(this,"responsesByQuestionStatement",new Map),U(this,"hashSalt"),U(this,"forExport"),U(this,"evaluationCache",new Map),this.questions=new Map((t?Ke(t):[]).filter(a=>a.id).map(a=>[ge(a.id),a])),n.filter(a=>a.singleAnswer||a.multipleAnswers).forEach(a=>{const o=ge(a.questionId);this.responsesByQuestion.set(o,[...this.responsesByQuestion.get(o)||[],a]),a.statementId&&this.responsesByQuestionStatement.set(`${o}.${a.statementId}`,a)}),this.hashSalt=i,this.forExport=s}getQuestionAnswers(t,n){let i;if(n){const s=this.responsesByQuestionStatement.get(`${t}.${n}`);i=s===void 0?[]:[s]}else i=this.responsesByQuestion.get(t)||[];return i.flatMap(s=>{const{multipleAnswers:a,singleAnswer:o}=s;return a||[o]})}evaluateDisplayLogic(t){if(t&&!this.forExport)try{const n=this.evaluationCache.get(t);if(n!==void 0)return n;const i=Qe(t,this);return this.evaluationCache.set(t,i),i}catch(n){return console.error(n),!1}return!0}evaluateDynamicExpression(t,n){const i=this.questions.get(t.questionId);if(!i)return[];const s=this.getQuestionChoicesFlattened(i),a=s.filter(c=>this.isSelected({questionId:t.questionId,choice:c.id||c.value})),o=this.getQuestionStatementsFlattened(i),l=c=>n==="choices"?c:{...c,id:c.id||c.value||c.display},p=c=>({id:c.id,display:c.display,value:c.value});let _=[];switch(t.expression){case v.ALL:_=s.map(l);break;case v.ALL_ENTERED_TEXT:_=s.map(c=>H(this,pe,Pe).call(this,c,t)).filter(c=>!!c).map(c=>l(c));break;case v.SELECTED:_=a;break;case v.SELECTED_ENTERED_TEXT:_=a.map(c=>H(this,pe,Pe).call(this,c,t)).filter(c=>!!c).map(c=>l(c));break;case v.NOT_SELECTED:_=s.filter(c=>!this.isSelected({questionId:t.questionId,choice:c.id||c.value})).map(l);break;case v.FOR_MATRIX_CHOICE:_=o.filter(c=>this.isSelected({questionId:t.questionId,statementId:c.id,choice:t.identifier}));break;case v.UNSELECTED_FOR_MATRIX_CHOICE:_=o.filter(c=>!this.isSelected({questionId:t.questionId,statementId:c.id,choice:t.identifier}));break;default:_=[]}return this.forExport&&(_=t.expression===v.FOR_MATRIX_CHOICE||t.expression===v.UNSELECTED_FOR_MATRIX_CHOICE?o:s.map(l)),_.map(p)}isSelected(t){return!!H(this,J,ce).call(this,t.questionId,t.statementId,t.choice).length}countSelected(t){return this.getQuestionAnswers(t).length}selectedValue(t){const n=this.getQuestionAnswers(t.questionId,t.statementId);return n.length?Ot(n[0]):null}countChoiceSelections(t,n){return H(this,J,ce).call(this,t,null,n).length}textEntry(t){return H(this,J,ce).call(this,t.questionId,t.statementId,t.choice).map(n=>n.text).filter(n=>n).join(", ")}getQuestionText(t){if(this.forExport)return t.text;let n=t.text;return n=n.replaceAll(Le,(i,s)=>{if(s&&Xe(s)){const a=P(s);return this.evaluateDynamicExpression(a,"choices").map(o=>o.display).join(", ")}return i}),n}getQuestionChoices(t){var n;const i=((n=t.choices)!=null?n:[]).filter(s=>this.evaluateDisplayLogic(s.displayLogic));if(t.dynamicChoices){const s=P(t.dynamicChoices),a=this.evaluateDynamicExpression(s,"choices");i.push(...a)}return t.type===fe.MatrixSingle||t.type===fe.MatrixMulti?i:this.applyRandomization(i,t.id,s=>{var a;return`${(a=s.id)!=null?a:s.value}`},t.randomization)}getQuestionChoiceGroups(t){var n;const i=(((n=t.choiceGroups)==null?void 0:n.filter(s=>this.evaluateDisplayLogic(s.displayLogic)))||[]).map(s=>({...s,choices:this.applyRandomization(s.choices.filter(a=>this.evaluateDisplayLogic(a.displayLogic)),t.id,a=>{var o;return`${(o=a.id)!=null?o:a.value}`},s.randomization)})).filter(s=>!!s.choices.length);return this.applyRandomization(i,t.id,s=>s.id,t.randomization)}getQuestionStatements(t){var n;const i=((n=t.statements)!=null?n:[]).filter(s=>this.evaluateDisplayLogic(s.displayLogic));if(t.dynamicStatements){const s=P(t.dynamicStatements),a=this.evaluateDynamicExpression(s,"statements");i.push(...a)}return this.applyRandomization(i,t.id,s=>s.id,t.randomization)}getQuestionStatementGroups(t){var n;const i=(((n=t.statementGroups)==null?void 0:n.filter(s=>this.evaluateDisplayLogic(s.displayLogic)))||[]).map(s=>({...s,statements:this.applyRandomization(s.statements.filter(a=>this.evaluateDisplayLogic(a.displayLogic)),t.id,a=>a.id,s.randomization)})).filter(s=>!!s.statements.length);return this.applyRandomization(i,t.id,s=>s.id,t.randomization)}getQuestionChoicesFlattened(t){return[...this.getQuestionChoices(t),...this.getQuestionChoiceGroups(t).flatMap(n=>n.choices)]}getQuestionStatementsFlattened(t){return[...this.getQuestionStatements(t),...this.getQuestionStatementGroups(t).flatMap(n=>n.statements)]}applyRandomization(t,n,i,s){var a,o;if(!s||this.forExport)return t;const l=new Map(t.map(u=>[i(u),u])),p=[...l.keys()],_=new Set(p),c=((a=s.order)!=null?a:["$"]).filter(u=>u==="$"||_.has(u)),m=p.filter(u=>!c.includes(u)).map(u=>({weight:this.keyHash(n,u),key:u}));m.sort((u,y)=>u.weight.localeCompare(y.weight));const f=(o=s.total)!=null?o:p.length,x=Math.min(f-(c.length-1),m.length),h=[];return c.forEach(u=>{u==="$"?h.push(...m.slice(0,x).map(y=>y.key)):h.push(u)}),h.map(u=>l.get(u))}keyHash(t,n){const i=`${t}.${this.hashSalt}.${n}`;return jt.createHash("sha256").update(i).digest("hex")}}J=new WeakSet,ce=function(r,t,n){return this.getQuestionAnswers(r,t).filter(i=>typeof n=="undefined"||n===null||Ot(i)===n)},pe=new WeakSet,Pe=function(r,t){if(r.textInput&&["forced","optional"].includes(r.textInput)){const n=this.textEntry({questionId:t.questionId,choice:r.id||r.value});return n.trim()?{...r,display:n}:r.textInput==="forced"?null:r}return r};function At(r){if(r.length===1)return r[0];const t=r[1].value;return t==="or"?r[0]||r[2]:t==="and"?r[0]&&r[2]:!1}function he(r,t,n){switch(t){case"==":return r===n;case"!=":return r!==n;case"<=":return r<=n;case">=":return r>=n;case"<":return r<n;case">":return r>n;default:return!1}}function St(r,t,n,i){const s=i?r.toLowerCase():r,a=i?n.toLowerCase():n;switch(t){case"contains":return s.includes(a);case"not_contains":return!s.includes(a);case"regex_matches":try{return new RegExp(n).test(s)}catch{return!1}default:return he(s,t,a)}}function $t(r,t){return r.length===1?t(r[0]):(Fe(r[0].type==="NEGATION"),!t(r[1]))}function Ce(r){if(!["INT","IDENTIFIER"].includes(r.type))throw new SyntaxError(`Invalid token type: ${r.type}; expected IDENTIFIER or INT`);return R(r)}function R(r){var t,n;switch(r.type){case"IDENTIFIER":return r.value;case"INT":return parseInt(r.value,10);case"STRING":{const i=r.value.match(/(?:'(?<single>[^\']*)')|(?:"(?<double>[^\"]*)")/),s=((t=i==null?void 0:i.groups)==null?void 0:t.double)||((n=i==null?void 0:i.groups)==null?void 0:n.single);return Fe(s),s}case"OPERATOR":return r.value;case"TRUE":return!0;case"FALSE":return!1;default:throw new SyntaxError(`Invalid token type: ${r.type}`)}}function Qe(r,t){const n={start:i=>i[0],top_level_expr:At,bool_expr:At,condition:i=>i[0],qc_mc_selected:i=>$t(i,s=>t.isSelected(s)),qc_mc_text:i=>St(t.textEntry(i[0]),R(i[1]),R(i[2]),!1),qc_mc_text_ignore_case:i=>St(t.textEntry(i[0]),R(i[1]),R(i[2]),!0),qc_mc_count:i=>he(t.countSelected(i[0]),R(i[1]),R(i[2])),qc_matrix_selected:i=>$t(i,s=>t.isSelected(s)),qc_selected_value:i=>{const s=t.selectedValue(i[0]);return s!==null&&he(s,R(i[1]),R(i[2]))},qc_matrix_count:i=>he(t.countChoiceSelections(i[0],Ce(i[1])),R(i[2]),R(i[3])),question_selector:i=>i[0].value,question_or_matrix_statement_selector:i=>typeof i[0]=="string"?{questionId:i[0]}:i[0],mc_choice_selector:i=>({questionId:i[0],choice:Ce(i[1])}),matrix_statement_selector:i=>({questionId:i[0],statementId:R(i[1])}),matrix_choice_selector:i=>({...i[0],choice:Ce(i[1])}),bool_const:i=>i[0].value==="true"};return br.get_parser({transformer:n}).parse(r)}var qr=Object.defineProperty,Or=(r,t,n)=>t in r?qr(r,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[t]=n,C=(r,t,n)=>(Or(r,typeof t!="symbol"?t+"":t,n),n);const zt=new Qt({allowUnionTypes:!0});Mt(zt);const Dt=zt.compile(Ge);class Y extends Error{}class $ extends Error{}class de extends Error{}class Q extends Error{}class Ar extends Error{}class Sr{constructor(){C(this,"seenQuestions",new Set),C(this,"seenMultiQuestions",new Set),C(this,"seenQuestionStatements",new Map),C(this,"seenQuestionChoices",new Map),C(this,"seenTextChoices",new Map),C(this,"evaluator",{}),C(this,"validateReference",t=>{var n,i,s;if(!this.seenQuestions.has(t.questionId))throw new Y(`Invalid question: ${t.questionId}`);if(t.statementId!==void 0&&!((n=this.seenQuestionStatements.get(t.questionId))!=null&&n.has(t.statementId)))throw new Y(`Invalid statement: ${t.questionId}.${t.statementId}`);if(t.choice!==void 0&&!((i=this.seenQuestionChoices.get(t.questionId))!=null&&i.has(t.choice)))throw new Y(`Invalid choice: ${t.questionId}[${t.choice}]`);if(t.choice!==void 0&&t.expectText===!0&&!((s=this.seenTextChoices.get(t.questionId))!=null&&s.has(t.choice)))throw new Y(`Invalid text reference: ${t.questionId}[${t.choice}]`);if(typeof t.expectMulti=="boolean"&&t.expectMulti&&!this.seenMultiQuestions.has(t.questionId))throw new $(`Invalid question reference: ${t.questionId}. Expected a multi-answer question.`);if(typeof t.expectMulti=="boolean"&&!t.expectMulti&&this.seenMultiQuestions.has(t.questionId))throw new $(`Invalid question reference: ${t.questionId}. Expected a non-multi-answer question.`)}),this.evaluator.isSelected=t=>(this.validateReference(t),!1),this.evaluator.countSelected=t=>(this.validateReference({questionId:t}),0),this.evaluator.selectedValue=t=>(this.validateReference({questionId:t.questionId,statementId:t.statementId,expectMulti:!1}),0),this.evaluator.countChoiceSelections=(t,n)=>(this.validateReference({questionId:t,choice:n}),0),this.evaluator.textEntry=t=>(this.validateReference({...t,expectText:!0}),"")}}const F=(r,t,n)=>{if(n)try{Qe(n,r.evaluator)}catch(i){throw i instanceof Y||i instanceof $||i instanceof Q?i:new Error(`Syntax error parsing display logic at ${t}: ${n}`)}},$r=(r,t)=>{[...t.matchAll(Le)].forEach(n=>{var i;const s=P(n.groups.locator);if(!r.seenQuestions.has(s.questionId))throw new $(`Invalid question referenced in locator expression: ${s.questionId}/${s.expression}`);if(s.identifier&&!((i=r.seenQuestionChoices.get(s.questionId))!=null&&i.has(s.identifier)))throw new $(`Invalid question choice referenced in locator expression: ${s.questionId}/${s.expression}(${s.identifier})`)})},Z=(r,t,n)=>{if(n){const i=new Set(t);if(n.order){const s=n.order.split(" "),a=s.filter(o=>o==="$").length;if(a===0)throw new de(`Wildcard $ is missing in randomization order at ${r.id}`);if(a>1)throw new de(`Wildcard $ occurred multiples times in randomization order at ${r.id}`);if(s.forEach(o=>{if(o!=="$"&&!i.has(o))throw new de(`Unknown id ${o} in randomization ordering at ${r.id}`)}),n.total!==void 0&&n.total<s.length)throw new de(`Total value in randomization is too small at ${r.id}`)}}},Pt=(r,t)=>{const n=[v.FOR_MATRIX_CHOICE,v.UNSELECTED_FOR_MATRIX_CHOICE].includes(r.expression),i=(n?t.seenQuestionStatements:t.seenQuestionChoices).get(r.questionId);if(i===void 0)throw new $(`Invalid question referenced in locator expression: ${r.questionId}/${r.expression}`);if(n){const s=t.seenQuestionChoices.get(r.questionId);if(!r.identifier||!(s!=null&&s.has(r.identifier)))throw new $(`Invalid choice referenced in locator expression: ${r.questionId}/${r.expression}(${r.identifier})`)}return i},zr=(r,t)=>{var n,i,s,a,o,l,p,_,c,m,f;if($r(t,r.text),r.id!==void 0){if(F(t,r.id,r.display_logic),(n=r.statements)==null||n.forEach(h=>{F(t,`${r.id}.${h.id}`,h.display_logic)}),(i=r.choices)==null||i.forEach(h=>{F(t,`${r.id}[${h.id||h.value}]`,h.display_logic)}),r.type==="matrix-multi"||r.type==="matrix-single"?r.statement_groups?Z(r,r.statement_groups.map(h=>h.id),r.randomization):Z(r,(a=(s=r.statements)==null?void 0:s.map(h=>h.id))!=null?a:[],r.randomization):r.choice_groups?Z(r,r.choice_groups.map(h=>h.id),r.randomization):Z(r,(l=(o=r.choices)==null?void 0:o.map(h=>`${h.id||h.value}`))!=null?l:[],r.randomization),(p=r.statement_groups)==null||p.forEach(h=>{h.statements.forEach(u=>{F(t,`${r.id}.${u.id}`,u.display_logic)}),Z(r,h.statements.map(u=>u.id),h.randomization)}),(_=r.choice_groups)==null||_.forEach(h=>{h.choices.forEach(u=>{F(t,`${r.id}[${u.id||u.value}]`,u.display_logic)}),Z(r,h.choices.map(u=>`${u.id||u.value}`),h.randomization)}),t.seenQuestions.has(r.id))throw new Q(`Duplicate question id: ${r.id}`);if(t.seenQuestions.add(r.id),r.type&&["matrix-multi","mc-multi"].includes(r.type)&&t.seenMultiQuestions.add(r.id),r.statements||r.dynamic_statements){const h=new Set;if(t.seenQuestionStatements.set(r.id,h),(c=r.statements)==null||c.forEach(u=>{if(h.has(u.id))throw new Q(`Duplicate statement id: ${r.id}.${u.id}`);h.add(u.id)}),r.dynamic_statements){const u=P(r.dynamic_statements);Pt(u,t).forEach(y=>{if(typeof y=="number")throw new $(`Dynamic statement in question ${r.id} refers to choices with values`);if(h.has(y))throw new Q(`Duplicate statement ${y} via dynamic statements in question ${r.id}`);h.add(y)})}}const x=(m=r.choices)!=null?m:[];if(r.choice_groups){if(new Set(r.choice_groups.map(h=>h.id)).size!==r.choice_groups.length)throw new Q(`Choice groups must have a unique id in question ${r.id}`);r.choice_groups.forEach(h=>x.push(...h.choices))}if(x||r.dynamic_choices){const h=new Set;t.seenQuestionChoices.set(r.id,h);const u=new Set;if(t.seenTextChoices.set(r.id,u),x.forEach(y=>{var b;const q=(b=y.id)!=null?b:y.value;if(h.has(q))throw new Q(`Duplicate choice: ${r.id}[${q}]`);h.add(q),y.text_input&&y.text_input!=="no"&&u.add(q)}),r.dynamic_choices){const y=P(r.dynamic_choices);Pt(y,t).forEach(b=>{if(h.has(b))throw new Q(`Duplicate choice ${b} via dynamic choices in ${r.id}`);h.add(b)}),(f=t.seenTextChoices.get(y.questionId))==null||f.forEach(b=>u.add(b))}if(new Set([...h].map(y=>typeof y)).size>=2)throw new Ar("All choices in a question must either all have id's or all have values")}}},Dr=r=>{if(!Dt(r))throw new Error(`Invalid template: ${r.template.id}. Reason: ${JSON.stringify(Dt.errors,null,4)}`);We(r);const t=new Sr;r.sections.forEach(n=>{F(t,n.id,n.display_logic),n.pages.forEach(i=>{var s;(s=i.questions)==null||s.forEach(a=>{zr(a,t)})})})};function Pr(r,t){const n=structuredClone(r);return{...n,sections:n.sections.map(i=>({id:i.id,name:i.name,hideProgressBar:i.hideProgressBar,pages:t.evaluateDisplayLogic(i.displayLogic)?i.pages.map(s=>({...s,questions:Lr(s.questions,t)})).filter(s=>s.questions.length):[]})).filter(i=>i.pages.length)}}function Lr(r,t){return r.filter(n=>t.evaluateDisplayLogic(n.displayLogic)).map(n=>({...n,text:t.getQuestionText(n),statements:t.getQuestionStatements(n),choices:t.getQuestionChoices(n),statementGroups:t.getQuestionStatementGroups(n),choiceGroups:t.getQuestionChoiceGroups(n),randomization:void 0}))}const Cr=r=>!!(r!=null&&r.singleAnswer)||!!(r!=null&&r.multipleAnswers)&&(r==null?void 0:r.multipleAnswers.length)>0,Qr=(r,t)=>{let n=!1,i=t,s=new ue(r,i);const a=p=>_=>{const c=p.includes(_.questionId);return c&&(n=!0),!c},o=p=>_=>{const c=!_.statementId||p.includes(_.statementId);return c||(n=!0),c},l=p=>_=>{var c;if(_.singleAnswer){const f=!!_.singleAnswer.text||p.includes(_.singleAnswer.choiceId||_.singleAnswer.choiceValue);return f||(n=!0),{..._,singleAnswer:f?_.singleAnswer:void 0}}const m=(c=_.multipleAnswers)==null?void 0:c.filter(f=>!!f.text||p.includes(f.choiceId||f.choiceValue));return m&&m.length<_.multipleAnswers.length&&(n=!0),{..._,multipleAnswers:m}};for(const p of r.sections){if(!s.evaluateDisplayLogic(p.displayLogic)){const _=p.pages.flatMap(c=>c.questions).map(c=>c.id);i=i.filter(a(_)),n&&(n=!1,s=new ue(r,i));continue}for(const _ of p.pages)for(const c of _.questions){if(!s.evaluateDisplayLogic(c.displayLogic))i=i.filter(a([c.id]));else{const m=s.getQuestionStatementsFlattened(c).map(u=>u.id),f=s.getQuestionChoicesFlattened(c).map(u=>u.id||u.value),x=o(m),h=l(f);i=i.filter(u=>u.questionId!==c.id||x(u)),i=i.map(u=>u.questionId!==c.id?u:h(u))}n&&(n=!1,s=new ue(r,i))}}return i},Mr=Ge,jr="pulse_default_alpha",Ur={allPermissions:Ft,SURVEY_RESOURCE_TYPE:Ut,surveyAdministerPermission:Ze};export{jr as DEFAULT_TEMPLATE_ID,v as LOCATOR_EXPRESSION,Le as QUESTION_TEXT_LOCATOR_PATTERN,ue as TemplateContextEvaluator,Qe as evaluateExpression,Pr as evaluateTemplateNode,Ke as extractQuestionNodes,Zt as getExperimentalOptionalBoolean,Bt as getExperimentalOptionalString,Je as getQualifiedQuestionId,Ye as getQuestionTypeEnum,He as getRandomizationTypeEnum,ge as getRawQuestionId,Qr as getRelevantQuestionResponses,hn as getTemplateNode,Cr as hasAnswer,me as interpolateMacros,We as interpolateTemplate,P as parseLocator,Ur as permissions,Gt as polyfillStructuredClone,Mr as templateSchema,ee as transformCase,Xe as validateLocator,Dr as validateTemplate};
|
|
23
23
|
//# sourceMappingURL=index.esm.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spotify/backstage-plugin-pulse-common",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.4",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
5
5
|
"homepage": "https://backstage.spotify.com",
|
|
6
6
|
"main": "dist/index.cjs.js",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"json2ts": "./src/templates/schema/generateSchemaTypes.sh"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@backstage/config": "^1.
|
|
28
|
-
"@backstage/plugin-permission-common": "^0.7.
|
|
27
|
+
"@backstage/config": "^1.2.0",
|
|
28
|
+
"@backstage/plugin-permission-common": "^0.7.13",
|
|
29
29
|
"@ungap/structured-clone": "^1.2.0",
|
|
30
30
|
"ajv": "^8.11.2",
|
|
31
31
|
"ajv-formats": "^2.1.1",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"lodash": "^4.17.21"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@backstage/cli": "^0.
|
|
37
|
-
"@types/ungap__structured-clone": "^0.
|
|
36
|
+
"@backstage/cli": "^0.26.0",
|
|
37
|
+
"@types/ungap__structured-clone": "^1.0.0",
|
|
38
38
|
"js-yaml": "^4.1.0",
|
|
39
39
|
"json-schema-to-typescript": "^13.1.1",
|
|
40
40
|
"process": "^0.11.10"
|