sysml-v2-lsp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/LICENSE +21 -0
- package/README.md +254 -0
- package/dist/server/mcpServer.mjs +109 -0
- package/dist/server/parser/parseWorker.js +1030 -0
- package/dist/server/server.js +101 -0
- package/index.cjs +23 -0
- package/package.json +138 -0
|
@@ -0,0 +1,1030 @@
|
|
|
1
|
+
import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{parentPort as kt,receiveMessageOnPort as I0}from"node:worker_threads";var H0=Object.defineProperty,p=(r,e)=>H0(r,"name",{value:e,configurable:!0}),Tn;(r=>{r.EOF=-1,r.UNKNOWN_SOURCE_NAME="<unknown>"})(Tn||(Tn={}));var b;(r=>{r.INVALID_TYPE=0,r.EPSILON=-2,r.MIN_USER_TOKEN_TYPE=1,r.EOF=Tn.EOF,r.DEFAULT_CHANNEL=0,r.HIDDEN_CHANNEL=1,r.MIN_USER_CHANNEL_VALUE=2})(b||(b={}));var B0=p(r=>{let e=r;return e.tokenSource!==void 0&&e.channel!==void 0},"isToken"),Me=class{static{p(this,"BitSet")}data;constructor(r){r?this.data=new Uint32Array(r.map(e=>e>>>0)):this.data=new Uint32Array(1)}[Symbol.iterator](){let r=this.data.length,e=0,t=this.data[e],i=this.data;return{[Symbol.iterator](){return this},next:p(()=>{for(;e<r;)if(t!==0){let s=t&-t,a=(e<<5)+this.bitCount(s-1);return t^=s,{done:!1,value:a}}else e++,e<r&&(t=i[e]);return{done:!0,value:void 0}},"next")}}clear(r){r===void 0?this.data=new Uint32Array:(this.resize(r),this.data[r>>>5]&=~(1<<r))}or(r){let e=Math.min(this.data.length,r.data.length);for(let t=0;t<e;++t)this.data[t]|=r.data[t];if(this.data.length<r.data.length){this.resize((r.data.length<<5)-1);let t=r.data.length;for(let i=e;i<t;++i)this.data[i]=r.data[i]}}get(r){if(r<0)throw new RangeError("index cannot be negative");let e=r>>>5;return e>=this.data.length?!1:(this.data[e]&1<<r%32)!==0}get length(){let r=0,e=this.data.length,t=this.data;for(let i=0;i<e;i++)r+=this.bitCount(t[i]);return r}values(){let r=new Array(this.length),e=0,t=this.data.length;for(let i=0;i<t;++i){let s=this.data[i];for(;s!==0;){let a=s&-s;r[e++]=(i<<5)+this.bitCount(a-1),s^=a}}return r}nextSetBit(r){if(r<0)throw new RangeError("index cannot be negative");for(let e of this)if(e>=r)return e}set(r){if(r<0)throw new RangeError("index cannot be negative");this.resize(r),this.data[r>>>5]|=1<<r%32}toString(){return"{"+this.values().join(", ")+"}"}resize(r){let e=r+32>>>5;if(e<=this.data.length)return;let t=new Uint32Array(e);t.set(this.data),t.fill(0,this.data.length),this.data=t}bitCount(r){return r=r-(r>>1&1431655765),r=(r&858993459)+(r>>2&858993459),r=r+(r>>4)&252645135,r=r+(r>>8),r=r+(r>>16),r&63}},V0=3432918353,_0=461845907,U1=15,I1=13,q0=5,G0=3864292196,f=class Pr{static{p(this,"MurmurHash")}static defaultSeed=701;constructor(){}static initialize(e=Pr.defaultSeed){return e}static updateFromComparable(e,t){return this.update(e,t?.hashCode()??0)}static update(e,t){return t=Math.imul(t,V0),t=t<<U1|t>>>32-U1,t=Math.imul(t,_0),e=e^t,e=e<<I1|e>>>32-I1,e=Math.imul(e,q0)+G0,e}static finish(e,t){return e^=t*4,e^=e>>>16,e=Math.imul(e,2246822507),e^=e>>>13,e=Math.imul(e,3266489909),e^=e>>>16,e}static hashCode(e,t){return Pr.finish(Pr.update(t??Pr.defaultSeed,e),1)}},ut=class j1{static{p(this,"ObjectEqualityComparator")}static instance=new j1;hashCode(e){return e==null?0:e.hashCode()}equals(e,t){return e==null?t==null:e.equals(t)}},Q1=class z1{static{p(this,"DefaultEqualityComparator")}static instance=new z1;hashCode(e){return e==null?0:ut.instance.hashCode(e)}equals(e,t){return e==null?t==null:typeof e=="string"||typeof e=="number"?e===t:ut.instance.equals(e,t)}},de=class me{static{p(this,"HashSet")}static defaultLoadFactor=.75;static initialCapacity=16;comparator;buckets;threshold;itemCount=0;constructor(e,t=me.initialCapacity){if(e instanceof me){this.comparator=e.comparator,this.buckets=e.buckets.slice(0);for(let i=0;i<this.buckets.length;i++){let s=this.buckets[i];s&&(this.buckets[i]=s.slice(0))}this.itemCount=e.itemCount,this.threshold=e.threshold}else this.comparator=e??Q1.instance,this.buckets=this.createBuckets(t),this.threshold=Math.floor(me.initialCapacity*me.defaultLoadFactor)}getOrAdd(e){this.itemCount>this.threshold&&this.expand();let t=this.getBucket(e),i=this.buckets[t];if(!i)return i=[e],this.buckets[t]=i,++this.itemCount,e;for(let s of i)if(this.comparator.equals(s,e))return s;return i.push(e),++this.itemCount,e}get(e){if(e==null)return e;let t=this.getBucket(e),i=this.buckets[t];if(i){for(let s of i)if(this.comparator.equals(s,e))return s}}remove(e){if(e==null)return!1;let t=this.getBucket(e),i=this.buckets[t];if(!i)return!1;for(let s=0;s<i.length;s++){let a=i[s];if(this.comparator.equals(a,e))return i.splice(s,1),--this.itemCount,!0}return!1}hashCode(){let e=f.initialize();for(let t of this.buckets)if(t!=null)for(let i of t){if(i==null)break;e=f.update(e,this.comparator.hashCode(i))}return e=f.finish(e,this.size),e}equals(e){return e===this?!0:!(e instanceof me)||e.size!==this.size?!1:this.containsAll(e)}add(e){return this.getOrAdd(e)===e}contains(e){return this.containsFast(e)}containsFast(e){return e==null?!1:this.get(e)!==void 0}*[Symbol.iterator](){yield*this.toArray()}toArray(){let e=new Array(this.size),t=0;for(let i of this.buckets)if(i!=null)for(let s of i){if(s==null)break;e[t++]=s}return e}containsAll(e){if(e instanceof me){for(let t of e.buckets)if(t!=null)for(let i of t){if(i==null)break;if(!this.containsFast(i))return!1}}else for(let t of e)if(!this.containsFast(t))return!1;return!0}addAll(e){let t=!1;for(let i of e)this.getOrAdd(i)!==i&&(t=!0);return t}clear(){this.buckets=this.createBuckets(me.initialCapacity),this.itemCount=0,this.threshold=Math.floor(me.initialCapacity*me.defaultLoadFactor)}toString(){if(this.size===0)return"{}";let e="{",t=!0;for(let i of this.buckets)if(i!=null)for(let s of i){if(s==null)break;t?t=!1:e+=", ",e+=s.toString()}return e+="}",e}toTableString(){let e="";for(let t of this.buckets){if(t==null){e+=`null
|
|
3
|
+
`;continue}e+="[";let i=!0;for(let s of t)i?i=!1:e+=" ",s==null?e+="_":e+=s.toString();e+=`]
|
|
4
|
+
`}return e}getBucket(e){return this.comparator.hashCode(e)&this.buckets.length-1}expand(){let e=this.buckets,t=this.buckets.length*2,i=this.createBuckets(t);this.buckets=i,this.threshold=Math.floor(t*me.defaultLoadFactor);for(let s of e)if(s)for(let a of s){let u=this.getBucket(a),c=this.buckets[u];c||(c=[],this.buckets[u]=c),c.push(a)}}get size(){return this.itemCount}get isEmpty(){return this.itemCount===0}createBuckets(e){return new Array(e)}},I=class ce{static{p(this,"Interval")}static INVALID_INTERVAL=new ce(-1,-2);static INTERVAL_POOL_MAX_VALUE=1e3;static cache=[];start;stop;cachedHashCode;constructor(e,t){this.start=e,this.stop=t,this.cachedHashCode=Math.imul(651+e,31)+t}static of(e,t){return e!==t||e<0||e>ce.INTERVAL_POOL_MAX_VALUE?new ce(e,t):(ce.cache[e]||(ce.cache[e]=new ce(e,e)),ce.cache[e])}equals(e){return this.start===e.start&&this.stop===e.stop}hashCode(){return this.cachedHashCode}startsBeforeDisjoint(e){return this.start<e.start&&this.stop<e.start}startsBeforeNonDisjoint(e){return this.start<=e.start&&this.stop>=e.start}startsAfter(e){return this.start>e.start}startsAfterDisjoint(e){return this.start>e.stop}startsAfterNonDisjoint(e){return this.start>e.start&&this.start<=e.stop}disjoint(e){return this.startsBeforeDisjoint(e)||this.startsAfterDisjoint(e)}adjacent(e){return this.start===e.stop+1||this.stop===e.start-1}properlyContains(e){return e.start>=this.start&&e.stop<=this.stop}union(e){return ce.of(Math.min(this.start,e.start),Math.max(this.stop,e.stop))}intersection(e){return ce.of(Math.max(this.start,e.start),Math.min(this.stop,e.stop))}differenceNotProperlyContained(e){let t=null;return e.startsBeforeNonDisjoint(this)?t=ce.of(Math.max(this.start,e.stop+1),this.stop):e.startsAfterNonDisjoint(this)&&(t=ce.of(this.start,e.start-1)),t}toString(){return`${this.start}..${this.stop}`}get length(){return this.stop<this.start?0:this.stop-this.start+1}},ye=class Te{static{p(this,"Vocabulary")}static EMPTY_NAMES=[];static EMPTY_VOCABULARY=new Te(Te.EMPTY_NAMES,Te.EMPTY_NAMES,Te.EMPTY_NAMES);maxTokenType;literalNames;symbolicNames;displayNames;constructor(e,t,i){this.literalNames=e??Te.EMPTY_NAMES,this.symbolicNames=t??Te.EMPTY_NAMES,this.displayNames=i??Te.EMPTY_NAMES,this.maxTokenType=Math.max(this.displayNames.length,Math.max(this.literalNames.length,this.symbolicNames.length))-1}static fromTokenNames(e){if(e==null||e.length===0)return Te.EMPTY_VOCABULARY;let t=[...e],i=[...e];for(let s=0;s<e.length;s++){let a=e[s];if(a!=null){if(a.length>0){let u=a.codePointAt(0);if(u===39){i[s]=null;continue}else if(u>=65&&u<=90){t[s]=null;continue}}t[s]=null,i[s]=null}}return new Te(t,i,e)}getMaxTokenType(){return this.maxTokenType}getLiteralName(e){return e>=0&&e<this.literalNames.length?this.literalNames[e]:null}getSymbolicName(e){return e>=0&&e<this.symbolicNames.length?this.symbolicNames[e]:e===b.EOF?"EOF":null}getDisplayName(e){if(e>=0&&e<this.displayNames.length){let s=this.displayNames[e];if(s!=null)return s}let t=this.getLiteralName(e);if(t!=null)return t;let i=this.getSymbolicName(e);return i??`${e}`}getLiteralNames(){return this.literalNames}getSymbolicNames(){return this.symbolicNames}getDisplayNames(){return this.displayNames}},Ce=class le{static{p(this,"IntervalSet")}intervals=[];cachedHashCode;constructor(e){if(e)if(Array.isArray(e))for(let t of e)this.addOne(t);else this.addSet(e)}static of(e,t){let i=new le;return i.addRange(e,t),i}static or(e){let t=new le;for(let i of e)t.addSet(i);return t}[Symbol.iterator](){return this.intervals[Symbol.iterator]()}get(e){return this.intervals[e]}get minElement(){return this.intervals.length===0?b.INVALID_TYPE:this.intervals[0].start}get maxElement(){return this.intervals.length===0?b.INVALID_TYPE:this.intervals[this.intervals.length-1].stop}clear(){this.cachedHashCode=void 0,this.intervals=[]}addOne(e){this.addInterval(new I(e,e))}addRange(e,t){this.addInterval(new I(e,t))}addInterval(e){if(this.cachedHashCode=void 0,this.intervals.length===0)this.intervals.push(e);else{for(let t=0;t<this.intervals.length;t++){let i=this.intervals[t];if(e.equals(i))return;if(e.adjacent(i)||!e.disjoint(i)){let s=e.union(i);this.intervals[t]=s;for(let a=t+1;a<this.intervals.length;){let u=this.intervals[a];if(!s.adjacent(u)&&s.disjoint(u))break;this.intervals.splice(a,1),this.intervals[t]=s.union(u)}return}if(e.startsBeforeDisjoint(i)){this.intervals.splice(t,0,e);return}}this.intervals.push(e)}}addSet(e){return e.intervals.forEach(t=>this.addInterval(t),this),this}complementWithVocabulary(e){let t=new le;return!e||e.length===0?t:(t.addSet(e),t.subtract(this))}complement(e,t){let i=new le;return i.addInterval(new I(e,t)),i.subtract(this)}or(e){let t=new le;return t.addSet(this),e.forEach(i=>t.addSet(i)),t}and(e){if(e.length===0)return new le;let t=this.intervals,i=e.intervals,s,a=t.length,u=i.length,c=0,h=0;for(;c<a&&h<u;){let d=t[c],x=i[h];d.startsBeforeDisjoint(x)?c++:x.startsBeforeDisjoint(d)?h++:d.properlyContains(x)?(s||(s=new le),s.addInterval(d.intersection(x)),h++):x.properlyContains(d)?(s||(s=new le),s.addInterval(d.intersection(x)),c++):d.disjoint(x)||(s||(s=new le),s.addInterval(d.intersection(x)),d.startsAfterNonDisjoint(x)?h++:x.startsAfterNonDisjoint(d)&&c++)}return s||new le}subtract(e){if(this.length===0)return new le;let t=new le(this);if(e.length===0)return t;let i=0,s=0;for(;i<t.intervals.length&&s<e.intervals.length;){let a=t.intervals[i],u=e.intervals[s];if(u.stop<a.start){s++;continue}if(u.start>a.stop){i++;continue}let c,h;u.start>a.start&&(c=new I(a.start,u.start-1)),u.stop<a.stop&&(h=new I(u.stop+1,a.stop)),c?h?(t.intervals[i]=c,t.intervals.splice(i+1,0,h),i++,s++):(t.intervals[i]=c,i++):h?(t.intervals[i]=h,s++):t.intervals.splice(i,1)}return t}contains(e){let t=this.intervals.length,i=0,s=t-1;for(;i<=s;){let a=Math.floor((i+s)/2),u=this.intervals[a];if(u.stop<e)i=a+1;else if(u.start>e)s=a-1;else return!0}return!1}removeRange(e){if(this.cachedHashCode=void 0,e.start===e.stop)this.removeOne(e.start);else if(this.intervals!==null){let t=0;for(let i of this.intervals){if(e.stop<=i.start)return;if(e.start>i.start&&e.stop<i.stop){this.intervals[t]=new I(i.start,e.start);let s=new I(e.stop,i.stop);this.intervals.splice(t,0,s);return}else e.start<=i.start&&e.stop>=i.stop?(this.intervals.splice(t,1),t=t-1):e.start<i.stop?this.intervals[t]=new I(i.start,e.start):e.stop<i.stop&&(this.intervals[t]=new I(e.stop,i.stop));t+=1}}}removeOne(e){this.cachedHashCode=void 0;for(let t=0;t<this.intervals.length;t++){let i=this.intervals[t];if(e<i.start)return;if(e===i.start&&e===i.stop){this.intervals.splice(t,1);return}else if(e===i.start){this.intervals[t]=new I(i.start+1,i.stop);return}else if(e===i.stop){this.intervals[t]=new I(i.start,i.stop-1);return}else if(e<i.stop){let s=new I(i.start,e-1);this.intervals[t]=new I(e+1,i.stop),this.intervals.splice(t,0,s);return}}}hashCode(){if(this.cachedHashCode===void 0){let e=f.initialize();for(let t of this.intervals)e=f.update(e,t.start),e=f.update(e,t.stop);this.cachedHashCode=f.finish(e,this.intervals.length*2)}return this.cachedHashCode}equals(e){if(this===e)return!0;if(this.intervals.length!==e.intervals.length)return!1;for(let t=0;t<this.intervals.length;t++)if(!this.intervals[t].equals(e.intervals[t]))return!1;return!0}toString(e){if(this.intervals.length===0)return"{}";let t="";this.length>1&&(t+="{");for(let i=0;i<this.intervals.length;++i){let s=this.intervals[i],a=s.start,u=s.stop;a===u?a===b.EOF?t+="<EOF>":e?t+="'"+String.fromCodePoint(a)+"'":t+=a:e?t+="'"+String.fromCodePoint(a)+"'..'"+String.fromCodePoint(u)+"'":t+=a+".."+u,i<this.intervals.length-1&&(t+=", ")}return this.length>1&&(t+="}"),t}toStringWithVocabulary(e){if(this.intervals.length===0)return"{}";let t="";this.length>1&&(t+="{");for(let i=0;i<this.intervals.length;++i){let s=this.intervals[i],a=s.start,u=s.stop;if(a===u)a===b.EOF?t+="<EOF>":t+=this.elementName(e,a);else for(let c=a;c<=u;++c)c>a&&(t+=", "),t+=this.elementName(e,c);i<this.intervals.length-1&&(t+=", ")}return this.length>1&&(t+="}"),t}toStringWithRuleNames(e){if(this.intervals.length===0)return"{}";let t="";this.length>1&&(t+="{");let i=ye.fromTokenNames(e);for(let s=0;s<this.intervals.length;++s){let a=this.intervals[s],u=a.start,c=a.stop;if(u===c)u===b.EOF?t+="<EOF>":t+=this.elementName(i,u);else for(let h=u;h<=c;++h)h>u&&(t+=", "),t+=this.elementName(i,h);s<this.intervals.length-1&&(t+=", ")}return this.length>1&&(t+="}"),t}toArray(){let e=[];for(let t of this.intervals)for(let i=t.start;i<=t.stop;i++)e.push(i);return e}get length(){let e=0;for(let t of this.intervals)e+=t.length;return e}elementName(e,t){return t===b.EOF?"<EOF>":t===b.EPSILON?"<EPSILON>":e.getDisplayName(t)}};var K0=p(r=>r===null?"null":r,"valueToString"),_t=p(r=>Array.isArray(r)?"["+r.map(K0).join(", ")+"]":"null","arrayToString"),Nn=p((r,e)=>{if(r===e)return!0;if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++){let i=r[t],s=e[t];if(i!==s&&(!i||!i.equals(s)))return!1}return!0},"equalArrays"),j0=p((r,e)=>{if(r===e)return!0;if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!==e[t])return!1;return!0},"equalNumberArrays"),Q0=p((r,e=!1)=>(r=r.replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r"),e&&(r=r.replace(/ /g,"\xB7")),r),"escapeWhitespace"),w=class st{static{p(this,"SemanticContext")}cachedHashCode;static andContext(e,t){if(e===null||e===st.NONE)return t;if(t===null||t===st.NONE)return e;let i=new z0(e,t);return i.operands.length===1?i.operands[0]:i}static orContext(e,t){if(e===null)return t;if(t===null)return e;if(e===st.NONE||t===st.NONE)return st.NONE;let i=new Y0(e,t);return i.operands.length===1?i.operands[0]:i}static filterPrecedencePredicates(e){let t=[];for(let i of e)i instanceof st.PrecedencePredicate&&t.push(i);return t}evalPrecedence(e,t){return this}},z0=class Ln extends w{static{p(this,"AND")}operands;constructor(e,t){super();let i=new de;e instanceof Ln?e.operands.forEach(a=>{i.add(a)}):i.add(e),t instanceof Ln?t.operands.forEach(a=>{i.add(a)}):i.add(t);let s=w.filterPrecedencePredicates(i);if(s.length>0){let a=null;s.forEach(u=>{(a===null||u.precedence<a.precedence)&&(a=u)}),a&&i.add(a)}this.operands=i.toArray()}equals(e){return this===e?!0:e instanceof Ln?Nn(this.operands,e.operands):!1}hashCode(){if(this.cachedHashCode===void 0){let e=f.initialize();for(let t of this.operands)e=f.updateFromComparable(e,t);e=f.update(e,3813686060),this.cachedHashCode=f.finish(e,this.operands.length+1)}return this.cachedHashCode}evaluate(e,t){for(let i of this.operands)if(!i.evaluate(e,t))return!1;return!0}evalPrecedence(e,t){let i=!1,s=[];for(let u of this.operands){let c=u.evalPrecedence(e,t);if(i||=c!==u,c===null)return null;c!==w.NONE&&s.push(c)}if(!i)return this;if(s.length===0)return w.NONE;let a=null;return s.forEach(u=>{a=a===null?u:w.andContext(a,u)}),a}toString(){let e=this.operands.map(t=>t.toString());return(e.length>3?e.slice(3):e).join("&&")}},Y0=class Sn extends w{static{p(this,"OR")}operands;constructor(e,t){super();let i=new de;e instanceof Sn?e.operands.forEach(a=>{i.add(a)}):i.add(e),t instanceof Sn?t.operands.forEach(a=>{i.add(a)}):i.add(t);let s=w.filterPrecedencePredicates(i);if(s.length>0){let a=s.sort((c,h)=>c.compareTo(h)),u=a[a.length-1];i.add(u)}this.operands=i.toArray()}equals(e){return this===e?!0:e instanceof Sn?Nn(this.operands,e.operands):!1}hashCode(){if(this.cachedHashCode===void 0){let e=f.initialize();for(let t of this.operands)e=f.updateFromComparable(e,t);e=f.update(e,3383313031),this.cachedHashCode=f.finish(e,this.operands.length+1)}return this.cachedHashCode}evaluate(e,t){for(let i of this.operands)if(i.evaluate(e,t))return!0;return!1}evalPrecedence(e,t){let i=!1,s=[];for(let u of this.operands){let c=u.evalPrecedence(e,t);if(i||=c!==u,c===w.NONE)return w.NONE;c!==null&&s.push(c)}if(!i)return this;if(s.length===0)return null;let a=null;return s.forEach(u=>{a=a===null?u:w.orContext(a,u)}),a}toString(){let e=this.operands.map(t=>t.toString());return(e.length>3?e.slice(3):e).join("||")}};(r=>{class e extends r{static{p(this,"Predicate")}ruleIndex;predIndex;isCtxDependent;constructor(s,a,u){super(),this.ruleIndex=s??-1,this.predIndex=a??-1,this.isCtxDependent=u??!1}evaluate(s,a){let u=this.isCtxDependent?a:null;return s.sempred(u,this.ruleIndex,this.predIndex)}hashCode(){if(this.cachedHashCode===void 0){let s=f.initialize();s=f.update(s,this.ruleIndex),s=f.update(s,this.predIndex),s=f.update(s,this.isCtxDependent?1:0),s=f.finish(s,3),this.cachedHashCode=s}return this.cachedHashCode}equals(s){return this===s?!0:this.ruleIndex===s.ruleIndex&&this.predIndex===s.predIndex&&this.isCtxDependent===s.isCtxDependent}toString(){return"{"+this.ruleIndex+":"+this.predIndex+"}?"}}r.Predicate=e;class t extends r{static{p(this,"PrecedencePredicate")}precedence;constructor(s){super(),this.precedence=s??0}evaluate(s,a){return s.precpred(a,this.precedence)}evalPrecedence(s,a){return s.precpred(a??null,this.precedence)?r.NONE:null}compareTo(s){return this.precedence-s.precedence}hashCode(){return 31+this.precedence}equals(s){return this===s?!0:this.precedence===s.precedence}toString(){return"{"+this.precedence+">=prec}?"}}r.PrecedencePredicate=t,r.NONE=new e})(w||(w={}));var K=class Tr{static{p(this,"ATNConfig")}state;alt;reachesIntoOuterContext=!1;precedenceFilterSuppressed=!1;get semanticContext(){return this.#t}cachedHashCode;#e=null;#t;constructor(e,t,i,s){this.state=t,this.alt=e.alt,this.context=i,this.#t=s??w.NONE,this.reachesIntoOuterContext=e.reachesIntoOuterContext,e.precedenceFilterSuppressed!==void 0&&(this.precedenceFilterSuppressed=e.precedenceFilterSuppressed)}static duplicate(e,t){return new Tr(e,e.state,e.context,t??e.semanticContext)}static createWithContext(e,t,i,s){return new Tr({alt:t},e,i,s)}static createWithConfig(e,t,i){return new Tr(t,e,i??t.context,t.semanticContext)}static createWithSemanticContext(e,t,i){return new Tr(t,e??t.state,t.context,i)}hashCode(){if(this.cachedHashCode===void 0){let e=f.initialize(7);e=f.update(e,this.state.stateNumber),e=f.update(e,this.alt),e=f.updateFromComparable(e,this.#e),e=f.updateFromComparable(e,this.semanticContext),e=f.finish(e,4),this.cachedHashCode=e}return this.cachedHashCode}get context(){return this.#e}set context(e){this.#e=e,this.cachedHashCode=void 0}equals(e){return this===e?!0:this.state.stateNumber===e.state.stateNumber&&this.alt===e.alt&&(this.context===null?e.context===null:this.context.equals(e.context))&&this.semanticContext.equals(e.semanticContext)&&this.precedenceFilterSuppressed===e.precedenceFilterSuppressed}toString(e,t=!0){let i="";return t&&(i=","+this.alt),"("+this.state+i+(this.context!==null?",["+this.context.toString()+"]":"")+(this.semanticContext!==w.NONE?","+this.semanticContext.toString():"")+(this.reachesIntoOuterContext?",up="+this.reachesIntoOuterContext:"")+")"}},v=class Y1{static{p(this,"ATNState")}static INVALID_STATE_NUMBER=-1;static INVALID_TYPE=0;static BASIC=1;static RULE_START=2;static BLOCK_START=3;static PLUS_BLOCK_START=4;static STAR_BLOCK_START=5;static TOKEN_START=6;static RULE_STOP=7;static BLOCK_END=8;static STAR_LOOP_BACK=9;static STAR_LOOP_ENTRY=10;static PLUS_LOOP_BACK=11;static LOOP_END=12;static stateType=Y1.INVALID_STATE_NUMBER;stateNumber=0;ruleIndex=0;epsilonOnlyTransitions=!1;nextTokenWithinRule;transitions=[];hashCode(){return this.stateNumber}equals(e){return this.stateNumber===e.stateNumber}toString(){return`${this.stateNumber}`}addTransitionAtIndex(e,t){this.transitions.length===0?this.epsilonOnlyTransitions=t.isEpsilon:this.epsilonOnlyTransitions!==t.isEpsilon&&(this.epsilonOnlyTransitions=!1),this.transitions.splice(e,0,t)}addTransition(e){this.transitions.length===0?this.epsilonOnlyTransitions=e.isEpsilon:this.epsilonOnlyTransitions!==e.isEpsilon&&(this.epsilonOnlyTransitions=!1),this.transitions.push(e)}setTransition(e,t){this.transitions.splice(e,1,t)}removeTransition(e){return this.transitions.splice(e,1)[0]}},X=class W1{static{p(this,"PredictionContext")}static EMPTY_RETURN_STATE=2147483647;static traceATNSimulator=!1;cachedHashCode;constructor(e){this.cachedHashCode=e}static calculateEmptyHashCode(){let e=f.initialize(31);return e=f.finish(e,0),e}static calculateHashCodeSingle(e,t){let i=f.initialize(31);return i=f.updateFromComparable(i,e),i=f.update(i,t),i=f.finish(i,2),i}static calculateHashCodeList(e,t){let i=f.initialize(31);for(let s of e)i=f.updateFromComparable(i,s);for(let s of t)i=f.update(i,s);return i=f.finish(i,2*e.length),i}isEmpty(){return!1}hasEmptyPath(){return this.getReturnState(this.length-1)===W1.EMPTY_RETURN_STATE}hashCode(){return this.cachedHashCode}toString(e){return""}},qt=class X1 extends X{static{p(this,"SingletonPredictionContext")}parent;returnState;constructor(e,t){super(e?X.calculateHashCodeSingle(e,t):X.calculateEmptyHashCode()),this.parent=e??null,this.returnState=t}getParent(e){return this.parent}getReturnState(e){return this.returnState}equals(e){return this===e?!0:!(e instanceof X1)||this.hashCode()!==e.hashCode()||this.returnState!==e.returnState?!1:this.parent==null?e.parent==null:this.parent.equals(e.parent)}toString(){let e=this.parent===null?"":this.parent.toString();return e.length===0?this.returnState===X.EMPTY_RETURN_STATE?"$":""+this.returnState:""+this.returnState+" "+e}get length(){return 1}},j=class J1 extends qt{static{p(this,"EmptyPredictionContext")}static instance=new J1;constructor(){super(void 0,X.EMPTY_RETURN_STATE)}isEmpty(){return!0}getParent(){return null}getReturnState(){return this.returnState}equals(e){return this===e}toString(){return"$"}},C=class{static{p(this,"Transition")}static INVALID=0;static EPSILON=1;static RANGE=2;static RULE=3;static PREDICATE=4;static ATOM=5;static ACTION=6;static SET=7;static NOT_SET=8;static WILDCARD=9;static PRECEDENCE=10;target;constructor(r){this.target=r}get isEpsilon(){return!1}get label(){return null}toString(){return""}},$u=class extends C{static{p(this,"SetTransition")}set;constructor(r,e){super(r),e?this.set=e:this.set=Ce.of(b.INVALID_TYPE,b.INVALID_TYPE)}get transitionType(){return C.SET}get label(){return this.set}matches(r,e,t){return this.set.contains(r)}toString(){return this.set.toString()}},Zu=class extends $u{static{p(this,"NotSetTransition")}get transitionType(){return C.NOT_SET}matches(r,e,t){return r>=e&&r<=t&&!super.matches(r,e,t)}toString(){return"~"+super.toString()}},W0=class{static{p(this,"MapKeyEqualityComparator")}keyComparator;constructor(r){this.keyComparator=r}hashCode(r){return this.keyComparator.hashCode(r.key)}equals(r,e){return this.keyComparator.equals(r.key,e.key)}},Fe=class $1{static{p(this,"HashMap")}backingStore;constructor(e){e instanceof $1?this.backingStore=new de(e.backingStore):(e=e??Q1.instance,this.backingStore=new de(new W0(e)))}clear(){this.backingStore.clear()}containsKey(e){return this.backingStore.contains({key:e})}get(e){let t=this.backingStore.get({key:e});if(t)return t.value}get isEmpty(){return this.backingStore.isEmpty}set(e,t){let i=this.backingStore.get({key:e,value:t}),s;return i?(s=i.value,i.value=t):this.backingStore.add({key:e,value:t}),s}setIfAbsent(e,t){let i=this.backingStore.get({key:e,value:t}),s;return i?s=i.value:this.backingStore.add({key:e,value:t}),s}keys(){return this.backingStore.toArray().map(e=>e.key)}values(){return this.backingStore.toArray().map(e=>e.value)}get size(){return this.backingStore.size}hashCode(){return this.backingStore.hashCode()}equals(e){return this.backingStore.equals(e.backingStore)}},Ee=class{static{p(this,"TerminalNode")}parent=null;symbol;constructor(r){this.symbol=r}getChild(r){return null}getSymbol(){return this.symbol}getPayload(){return this.symbol}getSourceInterval(){if(this.symbol===null)return I.INVALID_INTERVAL;let r=this.symbol.tokenIndex;return new I(r,r)}getChildCount(){return 0}accept(r){return r.visitTerminal(this)}getText(){return this.symbol?.text??""}toString(){return this.symbol?.type===b.EOF?"<EOF>":this.symbol?.text??""}toStringTree(){return this.toString()}},Or=class extends Ee{static{p(this,"ErrorNode")}accept(r){return r.visitErrorNode(this)}},An=class Bt{static{p(this,"CommonToken")}static EMPTY_SOURCE=[null,null];source;tokenIndex;start;stop;type;line;column;channel;#e;constructor(e){this.type=e.type,this.source=e.source,this.tokenIndex=e.tokenIndex??-1,this.line=e.line??0,this.column=e.column??-1,this.channel=e.channel??b.DEFAULT_CHANNEL,this.start=e.start??0,this.stop=e.stop??0,this.#e=e.text,e.line===void 0&&e.source[0]!==null&&(this.line=e.source[0].line),e.column===void 0&&e.source[0]!==null&&(this.column=e.source[0].column)}static fromToken(e){let t=[e.tokenSource,e.inputStream];return new Bt({type:e.type,line:e.line,tokenIndex:e.tokenIndex,column:e.column,channel:e.channel,start:e.start,stop:e.stop,text:e.text,source:t})}static fromType(e,t){return new Bt({type:e,text:t,source:Bt.EMPTY_SOURCE})}static fromSource(e,t,i,s,a){return new Bt({type:t,channel:i,start:s,stop:a,source:e})}get tokenSource(){return this.source[0]}get inputStream(){return this.source[1]}set inputStream(e){this.source[1]=e}clone(){return new Bt({source:this.source,type:this.type,channel:this.channel,start:this.start,stop:this.stop,tokenIndex:this.tokenIndex,line:this.line,column:this.column,text:this.#e})}toString(e){let t="";this.channel>0&&(t=",channel="+this.channel);let i=this.text;i?(i=i.replace(/\n/g,"\\n"),i=i.replace(/\r/g,"\\r"),i=i.replace(/\t/g,"\\t")):i="<no text>";let s=String(this.type);return e&&(s=e.vocabulary.getDisplayName(this.type)??"<unknown>"),"[@"+this.tokenIndex+","+this.start+":"+this.stop+"='"+i+"',<"+s+">"+t+","+this.line+":"+this.column+"]"}get text(){if(this.#e!==void 0)return this.#e;let e=this.inputStream;if(!e)return;let t=e.size;return this.start<t&&this.stop<t?e.getTextFromRange(this.start,this.stop):"<EOF>"}set text(e){this.#e=e}setText(e){this.#e=e}setType(e){this.type=e}setLine(e){this.line=e}setCharPositionInLine(e){this.column=e}setChannel(e){this.channel=e}setTokenIndex(e){this.tokenIndex=e}},Qe=class we{static{p(this,"Trees")}static toStringTree(e,t,i){t=t??null,i&&(t=i.ruleNames);let s=we.getNodeText(e,t);s=Q0(s,!1);let a=e.getChildCount();if(a===0)return s;let u="("+s+" ";a>0&&(s=we.toStringTree(e.getChild(0),t),u=u.concat(s));for(let c=1;c<a;c++)s=we.toStringTree(e.getChild(c),t),u=u.concat(" "+s);return u=u.concat(")"),u}static getNodeText(e,t,i){if(t=t??null,i&&(t=i.ruleNames),t!==null)if(e instanceof l){let u=e.ruleContext.getAltNumber();return u!==0?t[e.ruleIndex]+":"+u:t[e.ruleIndex]}else{if(e instanceof Or)return e.toString();if(e instanceof Ee)return e.symbol.text}let s=e.getPayload();return B0(s)?s.text:String(e.getPayload())}static getChildren(e){let t=[];for(let i=0;i<e.getChildCount();i++)t.push(e.getChild(i));return t}static getAncestors(e){if(e.parent===null)return[];let t=[],i=e.parent;for(;i!==null;)t=[i].concat(t),i=i.parent;return t}static isAncestorOf(e,t){if(e===null||t===null||e.parent===null)return!1;let i=t.parent;for(;i!==null;){if(e===i)return!0;i=i.parent}return!1}static findAllTokenNodes(e,t){return we.findAllNodes(e,t,!0)}static findAllRuleNodes(e,t){return we.findAllNodes(e,t,!1)}static findAllNodes(e,t,i){let s=[];return we.doFindAllNodes(e,t,i,s),s}static descendants(e){let t=[e];for(let i=0;i<e.getChildCount();i++)t=t.concat(we.descendants(e.getChild(i)));return t}static getRootOfSubtreeEnclosingRegion(e,t,i){let s=e.getChildCount();for(let a=0;a<s;a++){let u=e.getChild(a),c=this.getRootOfSubtreeEnclosingRegion(u,t,i);if(c!==null)return c}return e instanceof l&&t>=e.start.tokenIndex&&(e.stop===null||i<=e.stop.tokenIndex)?e:null}static stripChildrenOutOfRange(e,t,i,s){if(e!==null)for(let a=0;a<e.getChildCount();a++){let u=e.getChild(a),c=u.getSourceInterval();if(e instanceof l&&(c.stop<i||c.start>s)&&this.isAncestorOf(u,t)){let h=An.fromType(b.INVALID_TYPE,"...");e.children[a]=new Ee(h)}}}static doFindAllNodes(e,t,i,s){i&&e instanceof Ee?e.symbol?.type===t&&s.push(e):!i&&e instanceof l&&e.ruleIndex===t&&s.push(e);for(let a=0;a<e.getChildCount();a++)we.doFindAllNodes(e.getChild(a),t,i,s)}},l=class Z1{static{p(this,"ParserRuleContext")}static empty=new Z1(null);start=null;stop=null;children=[];invokingState;parent;constructor(e,t=-1){this.parent=e,this.invokingState=t}copyFrom(e){this.parent=e.parent,this.invokingState=e.invokingState,this.children.slice(0,this.children.length),this.start=e.start,this.stop=e.stop,e.children&&e.children.forEach(t=>{t instanceof Or&&(this.children.push(t),t.parent=this)})}enterRule(e){}exitRule(e){}addChild(e){return this.children.push(e),e}removeLastChild(){this.children.pop()}addTokenNode(e){let t=new Ee(e);return this.children.push(t),t.parent=this,t}addErrorNode(e){return e.parent=this,this.children.push(e),e}getChild(e,t){if(e<0||e>=this.children.length)return null;if(!t)return this.children[e];for(let i of this.children)if(i instanceof t){if(e===0)return i;e-=1}return null}getToken(e,t){if(t<0||t>=this.children.length)return null;for(let i of this.children)if("symbol"in i&&i.symbol?.type===e){if(t===0)return i;t-=1}return null}getTokens(e){let t=[];for(let i of this.children)"symbol"in i&&i.symbol?.type===e&&t.push(i);return t}getRuleContext(e,t){return this.getChild(e,t)}getRuleContexts(e){let t=[];for(let i of this.children)i instanceof e&&t.push(i);return t}getChildCount(){return this.children.length}getSourceInterval(){return this.start===null?I.INVALID_INTERVAL:this.stop===null||this.stop.tokenIndex<this.start.tokenIndex?new I(this.start.tokenIndex,this.start.tokenIndex-1):new I(this.start.tokenIndex,this.stop.tokenIndex)}depth(){let e=0,t=this;for(;t!==null;)t=t.parent,e+=1;return e}isEmpty(){return this.invokingState===-1}get ruleContext(){return this}get ruleIndex(){return-1}getPayload(){return this}getText(){return this.children.length===0?"":this.children.map(e=>e.getText()).join("")}getAltNumber(){return L.INVALID_ALT_NUMBER}setAltNumber(e){}accept(e){return e.visitChildren(this)}toStringTree(...e){return e.length<2?Qe.toStringTree(this,null,e[0]):Qe.toStringTree(this,e[0],e[1])}toString(e,t){e=e??null,t=t??null;let i=this,s="[";for(;i!==null&&i!==t;){if(e===null)i.isEmpty()||(s+=i.invokingState);else{let a=i.ruleIndex,u=a>=0&&a<e.length?e[a]:""+a;s+=u}i.parent!==null&&(e!==null||!i.parent.isEmpty())&&(s+=" "),i=i.parent}return s+="]",s}},ze=class e0 extends X{static{p(this,"ArrayPredictionContext")}parents=[];returnStates=[];constructor(e,t){return super(X.calculateHashCodeList(e,t)),this.parents=e,this.returnStates=t,this}isEmpty(){return this.returnStates[0]===X.EMPTY_RETURN_STATE}get length(){return this.returnStates.length}getParent(e){return this.parents[e]}getReturnState(e){return this.returnStates[e]}equals(e){return this===e?!0:!(e instanceof e0)||this.hashCode()!==e.hashCode()?!1:j0(this.returnStates,e.returnStates)&&Nn(this.parents,e.parents)}toString(){if(this.isEmpty())return"[]";let e=[];for(let t=0;t<this.returnStates.length;t++){if(this.returnStates[t]===X.EMPTY_RETURN_STATE){e.push("$");continue}e.push(this.returnStates[t].toString()),this.parents[t]?e.push(this.parents[t].toString()):e.push("null")}return`[${e.join(", ")}]`}},ht=p((r,e)=>e===X.EMPTY_RETURN_STATE&&r===null?j.instance:new qt(r,e),"createSingletonPredictionContext"),e1=p((r,e)=>{if(e||(e=l.empty),!e.parent||e===l.empty)return j.instance;let t=e1(r,e.parent),s=r.states[e.invokingState].transitions[0];return ht(t,s.followState.stateNumber)},"predictionContextFromRuleContext"),t0=p((r,e,t)=>{if(r.isEmpty())return r;let i=t.get(r);if(i)return i;if(i=e.get(r),i)return t.set(r,i),i;let s=!1,a=[];for(let c=0;c<a.length;c++){let h=t0(r.getParent(c),e,t);if(s||h!==r.getParent(c)){if(!s){a=[];for(let d=0;d<r.length;d++)a[d]=r.getParent(d);s=!0}a[c]=h}}if(!s)return e.add(r),t.set(r,r),r;let u;return a.length===0?u=j.instance:a.length===1?u=ht(a[0]??void 0,r.getReturnState(0)):u=new ze(a,r.returnStates),e.add(u),t.set(u,u),t.set(r,u),u},"getCachedPredictionContext"),t1=p((r,e,t,i)=>{if(r===e||r.equals(e))return r;if(r instanceof qt&&e instanceof qt)return $0(r,e,t,i);if(t){if(r instanceof j)return r;if(e instanceof j)return e}return r instanceof qt&&(r=new ze([r.parent],[r.returnState])),e instanceof qt&&(e=new ze([e.parent],[e.returnState])),X0(r,e,t,i)},"merge"),X0=p((r,e,t,i)=>{if(i){let x=i.get(r,e);if(x||(x=i.get(e,r),x))return x}let s=0,a=0,u=0,c=new Array(r.returnStates.length+e.returnStates.length).fill(0),h=new Array(r.returnStates.length+e.returnStates.length).fill(null);for(;s<r.returnStates.length&&a<e.returnStates.length;){let x=r.parents[s],R=e.parents[a];if(r.returnStates[s]===e.returnStates[a]){let y=r.returnStates[s];y===X.EMPTY_RETURN_STATE&&x===null&&R===null||x!==null&&R!==null&&x===R?(h[u]=x,c[u]=y):(h[u]=t1(x,R,t,i),c[u]=y),s+=1,a+=1}else r.returnStates[s]<e.returnStates[a]?(h[u]=x,c[u]=r.returnStates[s],s+=1):(h[u]=R,c[u]=e.returnStates[a],a+=1);u+=1}if(s<r.returnStates.length)for(let x=s;x<r.returnStates.length;x++)h[u]=r.parents[x],c[u]=r.returnStates[x],u+=1;else for(let x=a;x<e.returnStates.length;x++)h[u]=e.parents[x],c[u]=e.returnStates[x],u+=1;if(u<h.length){if(u===1){let x=ht(h[0]??void 0,c[0]);return i!==null&&i.set(r,e,x),x}h=h.slice(0,u),c=c.slice(0,u)}let d=new ze(h,c);return d.equals(r)?(i!==null&&i.set(r,e,r),X.traceATNSimulator&&console.log("mergeArrays a="+r+",b="+e+" -> a"),r):d.equals(e)?(i!==null&&i.set(r,e,e),e):(J0(h),i!==null&&i.set(r,e,d),X.traceATNSimulator&&console.log("mergeArrays a="+r+",b="+e+" -> "+d),d)},"mergeArrays"),J0=p(r=>{let e=new Fe(ut.instance);for(let t of r)t&&(e.containsKey(t)||e.set(t,t));for(let t=0;t<r.length;t++)r[t]&&(r[t]=e.get(r[t])??null)},"combineCommonParents"),$0=p((r,e,t,i)=>{if(i!==null){let a=i.get(r,e);if(a!==null||(a=i.get(e,r),a!==null))return a}let s=Z0(r,e,t);if(s!==null)return i!==null&&i.set(r,e,s),s;if(r.returnState===e.returnState){let a=t1(r.parent,e.parent,t,i);if(a===r.parent)return r;if(a===e.parent)return e;let u=ht(a,r.returnState);return i!==null&&i.set(r,e,u),u}else{let a=null;if((r===e||r.parent!==null&&r.parent.equals(e.parent))&&(a=r.parent),a!==null){let d=[r.returnState,e.returnState];r.returnState>e.returnState&&(d[0]=e.returnState,d[1]=r.returnState);let x=[a,a],R=new ze(x,d);return i!==null&&i.set(r,e,R),R}let u=[r.returnState,e.returnState],c=[r.parent,e.parent];r.returnState>e.returnState&&(u[0]=e.returnState,u[1]=r.returnState,c=[e.parent,r.parent]);let h=new ze(c,u);return i!==null&&i.set(r,e,h),h}},"mergeSingletons"),Z0=p((r,e,t)=>{if(t){if(r===j.instance||e===j.instance)return j.instance}else{if(r===j.instance&&e===j.instance)return j.instance;if(r===j.instance){let i=[e.returnState,X.EMPTY_RETURN_STATE],s=[e.parent,null];return new ze(s,i)}if(e===j.instance){let i=[r.returnState,X.EMPTY_RETURN_STATE],s=[r.parent,null];return new ze(s,i)}}return null},"mergeRoot"),ec=class ju{constructor(e){this.atn=e}static{p(this,"LL1Analyzer")}static hitPredicate=b.INVALID_TYPE;getDecisionLookahead(e){let t=e.transitions.length,i=new Array(t);for(let s=0;s<t;s++){let a=new Ce,u=new de;this.doLook(e.transitions[s].target,void 0,j.instance,a,u,new Me,!1,!1),a.length>0&&!a.contains(ju.hitPredicate)&&(i[s]=a)}return i}look(e,t,i){let s=new Ce,a=i?e1(this.atn,i):null;return this.doLook(e,t,a,s,new de,new Me,!0,!0),s}doLook(e,t,i,s,a,u,c,h){let d=K.createWithContext(e,0,i);if(!a.get(d)){if(a.add(d),e===t)if(i){if(i.isEmpty()&&h){s.addOne(b.EOF);return}}else{s.addOne(b.EPSILON);return}if(e.constructor.stateType===v.RULE_STOP){if(i){if(i.isEmpty()&&h){s.addOne(b.EOF);return}}else{s.addOne(b.EPSILON);return}if(i!==j.instance){let x=u.get(e.ruleIndex);try{u.clear(e.ruleIndex);for(let R=0;R<i.length;R++){let y=this.atn.states[i.getReturnState(R)];this.doLook(y,t,i.getParent(R),s,a,u,c,h)}}finally{x&&u.set(e.ruleIndex)}return}}for(let x of e.transitions)switch(x.transitionType){case C.RULE:{if(u.get(x.target.ruleIndex))continue;let R=ht(i??void 0,x.followState.stateNumber);try{u.set(x.target.ruleIndex),this.doLook(x.target,t,R,s,a,u,c,h)}finally{u.clear(x.target.ruleIndex)}break}case C.PREDICATE:case C.PRECEDENCE:{c?this.doLook(x.target,t,i,s,a,u,c,h):s.addOne(ju.hitPredicate);break}case C.WILDCARD:{s.addRange(b.MIN_USER_TOKEN_TYPE,this.atn.maxTokenType);break}default:{if(x.isEpsilon)this.doLook(x.target,t,i,s,a,u,c,h);else{let R=x.label;R&&(x instanceof Zu&&(R=R.complement(b.MIN_USER_TOKEN_TYPE,this.atn.maxTokenType)),s.addSet(R))}break}}}}},L=class{static{p(this,"ATN")}static INVALID_ALT_NUMBER=0;static LEXER=0;static PARSER=1;grammarType;maxTokenType;states=[];decisionToState=[];ruleToStartState=[];ruleToStopState=[];modeNameToStartState=new Map;ruleToTokenType=[];lexerActions=[];modeToStartState=[];analyzer;constructor(r,e){this.grammarType=r,this.maxTokenType=e,this.analyzer=new ec(this)}nextTokens(r,e){if(!e&&r.nextTokenWithinRule)return r.nextTokenWithinRule;let t=this.analyzer.look(r,void 0,e);return e||(r.nextTokenWithinRule=t),t}addState(r){r&&(r.stateNumber=this.states.length),this.states.push(r)}removeState(r){this.states[r.stateNumber]=null}defineDecisionState(r){return this.decisionToState.push(r),r.decision=this.decisionToState.length-1,r.decision}getDecisionState(r){return this.decisionToState.length===0?null:this.decisionToState[r]}getNumberOfDecisions(){return this.decisionToState.length}getExpectedTokens(r,e){if(r<0||r>=this.states.length)throw new Error("Invalid state number.");let t=this.states[r],i=this.nextTokens(t);if(!i.contains(b.EPSILON))return i;let s=e,a=new Ce;for(a.addSet(i),a.removeOne(b.EPSILON);s!==null&&s.invokingState>=0&&i.contains(b.EPSILON);){let c=this.states[s.invokingState].transitions[0];i=this.nextTokens(c.followState),a.addSet(i),a.removeOne(b.EPSILON),s=s.parent}return i.contains(b.EPSILON)&&a.addOne(b.EOF),a}},O1=class r0{static{p(this,"KeyTypeEqualityComparer")}static instance=new r0;hashCode(e){let t=7;return t=31*t+e.state.stateNumber,t=31*t+e.alt,t=31*t+e.semanticContext.hashCode(),t}equals(e,t){return e===t?!0:e.state.stateNumber===t.state.stateNumber&&e.alt===t.alt&&e.semanticContext.equals(t.semanticContext)}},De=class{static{p(this,"ATNConfigSet")}configLookup=new de(O1.instance);configs=[];uniqueAlt=0;hasSemanticContext=!1;dipsIntoOuterContext=!1;fullCtx=!1;readOnly=!1;conflictingAlts=null;firstStopState;#e=-1;constructor(r){if(r!==void 0)if(typeof r=="boolean")this.fullCtx=r??!0;else{let e=r;this.addAll(e.configs),this.uniqueAlt=e.uniqueAlt,this.conflictingAlts=e.conflictingAlts,this.hasSemanticContext=e.hasSemanticContext,this.dipsIntoOuterContext=e.dipsIntoOuterContext}}[Symbol.iterator](){return this.configs[Symbol.iterator]()}add(r,e=null){if(this.readOnly)throw new Error("This set is readonly");!this.firstStopState&&r.state.constructor.stateType===v.RULE_STOP&&(this.firstStopState=r),this.hasSemanticContext||=r.semanticContext!==w.NONE,this.dipsIntoOuterContext||=r.reachesIntoOuterContext;let t=this.configLookup.getOrAdd(r);if(t===r){this.#e=-1,this.configs.push(r);return}let i=!this.fullCtx,s=t1(t.context,r.context,i,e);t.reachesIntoOuterContext||=r.reachesIntoOuterContext,t.precedenceFilterSuppressed||=r.precedenceFilterSuppressed,t.context=s}get elements(){return this.configs}getAlts(){let r=new Me;for(let e of this.configs)r.set(e.alt);return r}getPredicates(){let r=[];for(let e of this.configs)e.semanticContext!==w.NONE&&r.push(e.semanticContext);return r}getStates(){let r=new de;for(let e of this.configs)r.add(e.state);return r}optimizeConfigs(r){if(this.readOnly)throw new Error("This set is readonly");if(this.configLookup.size!==0)for(let e of this.configs)e.context=r.getCachedContext(e.context)}addAll(r){for(let e of r)this.add(e);return!1}equals(r){return!!(this===r||this.fullCtx===r.fullCtx&&this.uniqueAlt===r.uniqueAlt&&this.conflictingAlts===r.conflictingAlts&&this.hasSemanticContext===r.hasSemanticContext&&this.dipsIntoOuterContext===r.dipsIntoOuterContext&&Nn(this.configs,r.configs))}hashCode(){return this.#e===-1&&(this.#e=this.computeHashCode()),this.#e}get length(){return this.configs.length}isEmpty(){return this.configs.length===0}contains(r){if(this.configLookup===null)throw new Error("This method is not implemented for readonly sets.");return this.configLookup.contains(r)}containsFast(r){if(this.configLookup===null)throw new Error("This method is not implemented for readonly sets.");return this.configLookup.contains(r)}clear(){if(this.readOnly)throw new Error("This set is readonly");this.configs=[],this.#e=-1,this.configLookup=new de(O1.instance)}setReadonly(r){this.readOnly=r,r&&(this.configLookup=null)}toString(){return _t(this.configs)+(this.hasSemanticContext?",hasSemanticContext="+this.hasSemanticContext:"")+(this.uniqueAlt!==L.INVALID_ALT_NUMBER?",uniqueAlt="+this.uniqueAlt:"")+(this.conflictingAlts!==null?",conflictingAlts="+this.conflictingAlts:"")+(this.dipsIntoOuterContext?",dipsIntoOuterContext":"")}computeHashCode(){let r=f.initialize();return this.configs.forEach(e=>{r=f.update(r,e.hashCode())}),r=f.finish(r,this.configs.length),r}},w1=class extends v{static{p(this,"BasicState")}static stateType=v.BASIC},dt=class extends v{static{p(this,"DecisionState")}decision=-1;nonGreedy=!1},ot=class extends dt{static{p(this,"BlockStartState")}endState},Vu=class extends v{static{p(this,"BlockEndState")}static stateType=v.BLOCK_END;startState},Ft=class extends v{static{p(this,"LoopEndState")}static stateType=v.LOOP_END;loopBackState},Qu=class extends v{static{p(this,"RuleStartState")}static stateType=v.RULE_START;stopState;isLeftRecursiveRule=!1},ge=class extends v{static{p(this,"RuleStopState")}static stateType=v.RULE_STOP},tc=class extends dt{static{p(this,"TokensStartState")}static stateType=v.TOKEN_START},k1=class extends dt{static{p(this,"PlusLoopbackState")}static stateType=v.PLUS_LOOP_BACK},_u=class extends v{static{p(this,"StarLoopbackState")}static stateType=v.STAR_LOOP_BACK},je=class extends dt{static{p(this,"StarLoopEntryState")}static stateType=v.STAR_LOOP_ENTRY;loopBackState;precedenceRuleDecision=!1},qu=class extends ot{static{p(this,"PlusBlockStartState")}static stateType=v.PLUS_BLOCK_START;loopBackState},Gu=class extends ot{static{p(this,"StarBlockStartState")}static stateType=v.STAR_BLOCK_START},D1=class extends ot{static{p(this,"BasicBlockStartState")}static stateType=v.BLOCK_START},Ur=class extends C{static{p(this,"AtomTransition")}labelValue;#e;constructor(r,e){super(r),this.labelValue=e,this.#e=Ce.of(e,e)}get label(){return this.#e}get transitionType(){return C.ATOM}matches(r){return this.labelValue===r}toString(){return this.labelValue.toString()}},zu=class extends C{static{p(this,"RuleTransition")}ruleIndex;precedence;followState;constructor(r,e,t,i){super(r),this.ruleIndex=e,this.precedence=t,this.followState=i}get isEpsilon(){return!0}get transitionType(){return C.RULE}matches(r,e,t){return!1}},Yu=class extends C{static{p(this,"RangeTransition")}start;stop;#e=new Ce;constructor(r,e,t){super(r),this.start=e,this.stop=t,this.#e.addRange(e,t)}get label(){return this.#e}get transitionType(){return C.RANGE}matches(r,e,t){return r>=this.start&&r<=this.stop}toString(){return"'"+String.fromCharCode(this.start)+"'..'"+String.fromCharCode(this.stop)+"'"}},i0=class extends C{static{p(this,"ActionTransition")}ruleIndex;actionIndex;isCtxDependent;constructor(r,e,t,i){super(r),this.ruleIndex=e,this.actionIndex=t??-1,this.isCtxDependent=i??!1}get isEpsilon(){return!0}get transitionType(){return C.ACTION}matches(r,e,t){return!1}toString(){return"action_"+this.ruleIndex+":"+this.actionIndex}},Sr=class extends C{static{p(this,"EpsilonTransition")}#e;constructor(r,e=-1){super(r),this.#e=e}get outermostPrecedenceReturn(){return this.#e}get isEpsilon(){return!0}get transitionType(){return C.EPSILON}matches(){return!1}toString(){return"epsilon"}},rc=class extends C{static{p(this,"WildcardTransition")}get transitionType(){return C.WILDCARD}matches(r,e,t){return r>=e&&r<=t}toString(){return"."}},n0=class extends C{static{p(this,"AbstractPredicateTransition")}constructor(r){super(r)}},s0=class extends n0{static{p(this,"PredicateTransition")}ruleIndex;predIndex;isCtxDependent;constructor(r,e,t,i){super(r),this.ruleIndex=e,this.predIndex=t,this.isCtxDependent=i}get isEpsilon(){return!0}matches(r,e,t){return!1}get transitionType(){return C.PREDICATE}getPredicate(){return new w.Predicate(this.ruleIndex,this.predIndex,this.isCtxDependent)}toString(){return"pred_"+this.ruleIndex+":"+this.predIndex}},ic=class extends n0{static{p(this,"PrecedencePredicateTransition")}precedence;constructor(r,e){super(r),this.precedence=e}get isEpsilon(){return!0}matches(r,e,t){return!1}getPredicate(){return new w.PrecedencePredicate(this.precedence)}get transitionType(){return C.PRECEDENCE}toString(){return this.precedence+" >= _p"}},k={CHANNEL:0,CUSTOM:1,MODE:2,MORE:3,POP_MODE:4,PUSH_MODE:5,SKIP:6,TYPE:7},nc=class a0{static{p(this,"LexerSkipAction")}static instance=new a0;actionType;isPositionDependent=!1;constructor(){this.actionType=k.SKIP}equals(e){return e===this}hashCode(){return k.SKIP}execute(e){e.skip()}toString(){return"skip"}},sc=class l0{static{p(this,"LexerChannelAction")}channel;actionType;isPositionDependent=!1;cachedHashCode;constructor(e){this.actionType=k.CHANNEL,this.channel=e}execute(e){e.channel=this.channel}hashCode(){if(this.cachedHashCode===void 0){let e=f.initialize();e=f.update(e,this.actionType),e=f.update(e,this.channel),this.cachedHashCode=f.finish(e,2)}return this.cachedHashCode}equals(e){return this===e?!0:e instanceof l0?this.channel===e.channel:!1}toString(){return"channel("+this.channel+")"}},ac=class o0{static{p(this,"LexerCustomAction")}ruleIndex;actionIndex;actionType;isPositionDependent=!0;cachedHashCode;constructor(e,t){this.actionType=k.CUSTOM,this.ruleIndex=e,this.actionIndex=t}execute(e){e.action(null,this.ruleIndex,this.actionIndex)}hashCode(){if(this.cachedHashCode===void 0){let e=f.initialize();e=f.update(e,this.actionType),e=f.update(e,this.ruleIndex),e=f.update(e,this.actionIndex),this.cachedHashCode=f.finish(e,3)}return this.cachedHashCode}equals(e){return this===e?!0:e instanceof o0?this.ruleIndex===e.ruleIndex&&this.actionIndex===e.actionIndex:!1}},lc=class u0{static{p(this,"LexerMoreAction")}static instance=new u0;actionType;isPositionDependent=!1;constructor(){this.actionType=k.MORE}equals(e){return e===this}hashCode(){return k.MORE}execute(e){e.more()}toString(){return"more"}},oc=class c0{static{p(this,"LexerTypeAction")}type;actionType;isPositionDependent=!1;cachedHashCode;constructor(e){this.actionType=k.TYPE,this.type=e}execute(e){e.type=this.type}hashCode(){if(this.cachedHashCode===void 0){let e=f.initialize();e=f.update(e,this.actionType),e=f.update(e,this.type),this.cachedHashCode=f.finish(e,2)}return this.cachedHashCode}equals(e){return this===e?!0:e instanceof c0?this.type===e.type:!1}toString(){return"type("+this.type+")"}},uc=class h0{static{p(this,"LexerPushModeAction")}mode;actionType;isPositionDependent=!1;cachedHashCode;constructor(e){this.actionType=k.PUSH_MODE,this.mode=e}execute(e){e.pushMode(this.mode)}hashCode(){if(this.cachedHashCode===void 0){let e=f.initialize();e=f.update(e,this.actionType),e=f.update(e,this.mode),this.cachedHashCode=f.finish(e,2)}return this.cachedHashCode}equals(e){return this===e?!0:e instanceof h0?this.mode===e.mode:!1}toString(){return"pushMode("+this.mode+")"}},cc=class d0{static{p(this,"LexerPopModeAction")}static instance=new d0;actionType;isPositionDependent=!1;constructor(){this.actionType=k.POP_MODE}equals(e){return e===this}hashCode(){return k.POP_MODE}execute(e){e.popMode()}toString(){return"popMode"}},hc=class p0{static{p(this,"LexerModeAction")}mode;actionType;isPositionDependent=!1;cachedHashCode;constructor(e){this.actionType=k.MODE,this.mode=e}execute(e){e.mode=this.mode}hashCode(){if(this.cachedHashCode===void 0){let e=f.initialize();e=f.update(e,this.actionType),e=f.update(e,this.mode),this.cachedHashCode=f.finish(e,2)}return this.cachedHashCode}equals(e){return this===e?!0:e instanceof p0?this.mode===e.mode:!1}toString(){return"mode("+this.mode+")"}},Ye=class Ar{static{p(this,"ATNDeserializer")}static SERIALIZED_VERSION=4;static stateTypeMapper=new Map([[v.INVALID_TYPE,void 0],[v.BASIC,w1],[v.RULE_START,Qu],[v.BLOCK_START,D1],[v.PLUS_BLOCK_START,qu],[v.STAR_BLOCK_START,Gu],[v.TOKEN_START,tc],[v.RULE_STOP,ge],[v.BLOCK_END,Vu],[v.STAR_LOOP_BACK,_u],[v.STAR_LOOP_ENTRY,je],[v.PLUS_LOOP_BACK,k1],[v.LOOP_END,Ft]]);static lexerActionFactoryMapper=new Map([[k.CHANNEL,e=>new sc(e)],[k.CUSTOM,(e,t)=>new ac(e,t)],[k.MODE,e=>new hc(e)],[k.MORE,()=>lc.instance],[k.POP_MODE,()=>cc.instance],[k.PUSH_MODE,e=>new uc(e)],[k.SKIP,()=>nc.instance],[k.TYPE,e=>new oc(e)]]);data=[];pos=0;deserializationOptions;actionFactories;constructor(e){e||(e={readOnly:!1,verifyATN:!0,generateRuleBypassTransitions:!1}),this.deserializationOptions=e}deserialize(e){this.data=e,this.checkVersion();let t=this.readATN();this.readStates(t),this.readRules(t),this.readModes(t);let i=[];return this.readSets(t,i),this.readEdges(t,i),this.readDecisions(t),this.readLexerActions(t),this.markPrecedenceDecisions(t),this.verifyATN(t),this.deserializationOptions.generateRuleBypassTransitions&&t.grammarType===L.PARSER&&(this.generateRuleBypassTransitions(t),this.verifyATN(t)),t}checkVersion(){let e=this.data[this.pos++];if(e!==Ar.SERIALIZED_VERSION)throw new Error("Could not deserialize ATN with version "+e+" (expected "+Ar.SERIALIZED_VERSION+").")}readATN(){let e=this.data[this.pos++],t=this.data[this.pos++];return new L(e,t)}readStates(e){let t,i,s=[],a=[],u=this.data[this.pos++];for(let d=0;d<u;d++){let x=this.data[this.pos++];if(x===v.INVALID_TYPE){e.addState(null);continue}let R=this.data[this.pos++],y=this.stateFactory(x,R);if(x===v.LOOP_END){let N=this.data[this.pos++];s.push([y,N])}else if(y instanceof ot){let N=this.data[this.pos++];a.push([y,N])}e.addState(y)}for(t=0;t<s.length;t++){let d=s[t];d[0].loopBackState=e.states[d[1]]??void 0}for(t=0;t<a.length;t++){let d=a[t];d[0].endState=e.states[d[1]]}let c=this.data[this.pos++];for(t=0;t<c;t++)i=this.data[this.pos++],e.states[i].nonGreedy=!0;let h=this.data[this.pos++];for(t=0;t<h;t++)i=this.data[this.pos++],e.states[i].isLeftRecursiveRule=!0}readRules(e){let t,i=this.data[this.pos++];for(e.grammarType===L.LEXER&&(e.ruleToTokenType=new Array(i),e.ruleToTokenType.fill(0)),e.ruleToStartState=new Array(i),e.ruleToStartState.fill(null),t=0;t<i;t++){let s=this.data[this.pos++];if(e.ruleToStartState[t]=e.states[s],e.grammarType===L.LEXER){let a=this.data[this.pos++];e.ruleToTokenType[t]=a}}for(e.ruleToStopState=new Array(i),e.ruleToStopState.fill(null),t=0;t<e.states.length;t++){let s=e.states[t];s instanceof ge&&(e.ruleToStopState[s.ruleIndex]=s,e.ruleToStartState[s.ruleIndex].stopState=s)}}readModes(e){let t=this.data[this.pos++];for(let i=0;i<t;i++){let s=this.data[this.pos++];e.modeToStartState.push(e.states[s])}}readSets(e,t){let i=this.data[this.pos++];for(let s=0;s<i;s++){let a=new Ce;t.push(a);let u=this.data[this.pos++];this.data[this.pos++]!==0&&a.addOne(-1);for(let h=0;h<u;h++){let d=this.data[this.pos++],x=this.data[this.pos++];a.addRange(d,x)}}}readEdges(e,t){let i,s,a,u,c,h=this.data[this.pos++];for(i=0;i<h;i++){let d=this.data[this.pos++],x=this.data[this.pos++],R=this.data[this.pos++],y=this.data[this.pos++],N=this.data[this.pos++],se=this.data[this.pos++];u=this.edgeFactory(e,R,x,y,N,se,t),e.states[d].addTransition(u)}for(i=0;i<e.states.length;i++)for(a=e.states[i],s=0;s<a.transitions.length;s++){let d=a.transitions[s];if(!(d instanceof zu))continue;let x=-1;e.ruleToStartState[d.target.ruleIndex].isLeftRecursiveRule&&d.precedence===0&&(x=d.target.ruleIndex),u=new Sr(d.followState,x),e.ruleToStopState[d.target.ruleIndex].addTransition(u)}for(i=0;i<e.states.length;i++){if(a=e.states[i],a instanceof ot){if(!a.endState)throw new Error("IllegalState");if(a.endState.startState)throw new Error("IllegalState");a.endState.startState=a}if(a instanceof k1)for(s=0;s<a.transitions.length;s++)c=a.transitions[s].target,c instanceof qu&&(c.loopBackState=a);else if(a instanceof _u)for(s=0;s<a.transitions.length;s++)c=a.transitions[s].target,c instanceof je&&(c.loopBackState=a)}}readDecisions(e){let t=this.data[this.pos++];for(let i=0;i<t;i++){let s=this.data[this.pos++],a=e.states[s];e.decisionToState.push(a),a.decision=i}}readLexerActions(e){if(e.grammarType===L.LEXER){let t=this.data[this.pos++];e.lexerActions=[];for(let i=0;i<t;i++){let s=this.data[this.pos++],a=this.data[this.pos++],u=this.data[this.pos++];e.lexerActions.push(this.lexerActionFactory(s,a,u))}}}generateRuleBypassTransitions(e){let t,i=e.ruleToStartState.length;for(t=0;t<i;t++)e.ruleToTokenType[t]=e.maxTokenType+t+1;for(t=0;t<i;t++)this.generateRuleBypassTransition(e,t)}generateRuleBypassTransition(e,t){let i,s,a=new D1;a.ruleIndex=t,e.addState(a);let u=new Vu;u.ruleIndex=t,e.addState(u),a.endState=u,e.defineDecisionState(a),u.startState=a;let c=null,h=null;if(e.ruleToStartState[t].isLeftRecursiveRule){for(h=null,i=0;i<e.states.length;i++)if(s=e.states[i],this.stateIsEndStateFor(s,t)){h=s,c=s.loopBackState.transitions[0];break}if(c===null)throw new Error("Couldn't identify final state of the precedence rule prefix section.")}else h=e.ruleToStopState[t];for(i=0;i<e.states.length;i++){s=e.states[i];for(let R of s.transitions)R!==c&&R.target===h&&(R.target=u)}let d=e.ruleToStartState[t];for(;d.transitions.length>0;){let R=d.removeTransition(d.transitions.length-1);a.addTransition(R)}e.ruleToStartState[t].addTransition(new Sr(a)),h&&u.addTransition(new Sr(h));let x=new w1;e.addState(x),x.addTransition(new Ur(u,e.ruleToTokenType[t])),a.addTransition(new Sr(x))}stateIsEndStateFor(e,t){if(e.ruleIndex!==t||!(e instanceof je))return null;let i=e.transitions[e.transitions.length-1].target;return i instanceof Ft&&i.epsilonOnlyTransitions&&i.transitions[0].target instanceof ge?e:null}markPrecedenceDecisions(e){for(let t of e.states)if(t instanceof je&&e.ruleToStartState[t.ruleIndex].isLeftRecursiveRule){let i=t.transitions[t.transitions.length-1].target;i instanceof Ft&&i.epsilonOnlyTransitions&&i.transitions[0].target instanceof ge&&(t.precedenceRuleDecision=!0)}}verifyATN(e){if(this.deserializationOptions.verifyATN){for(let t of e.states)if(t!==null)if(this.checkCondition(t.epsilonOnlyTransitions||t.transitions.length<=1),t instanceof qu)this.checkCondition(t.loopBackState!==null);else if(t instanceof je)if(this.checkCondition(t.loopBackState!==null),this.checkCondition(t.transitions.length===2),t.transitions[0].target instanceof Gu)this.checkCondition(t.transitions[1].target instanceof Ft),this.checkCondition(!t.nonGreedy);else if(t.transitions[0].target instanceof Ft)this.checkCondition(t.transitions[1].target instanceof Gu),this.checkCondition(t.nonGreedy);else throw new Error("IllegalState");else t instanceof _u?(this.checkCondition(t.transitions.length===1),this.checkCondition(t.transitions[0].target instanceof je)):t instanceof Ft?this.checkCondition(t.loopBackState!==null):t instanceof Qu?this.checkCondition(t.stopState!==null):t instanceof ot?this.checkCondition(t.endState!==null):t instanceof Vu?this.checkCondition(t.startState!==null):t instanceof dt?this.checkCondition(t.transitions.length<=1||t.decision>=0):this.checkCondition(t.transitions.length<=1||t instanceof ge)}}checkCondition(e,t){if(!e)throw t==null&&(t="IllegalState"),t}edgeFactory(e,t,i,s,a,u,c){let h=e.states[i];switch(t){case C.EPSILON:return new Sr(h);case C.RANGE:return u!==0?new Yu(h,b.EOF,a):new Yu(h,s,a);case C.RULE:return new zu(e.states[s],a,u,h);case C.PREDICATE:return new s0(h,s,a,u!==0);case C.PRECEDENCE:return new ic(h,s);case C.ATOM:return u!==0?new Ur(h,b.EOF):new Ur(h,s);case C.ACTION:return new i0(h,s,a,u!==0);case C.SET:return new $u(h,c[s]);case C.NOT_SET:return new Zu(h,c[s]);case C.WILDCARD:return new rc(h);default:throw new Error("The specified transition type: "+t+" is not valid.")}}stateFactory(e,t){let i=Ar.stateTypeMapper.get(e);if(!i)throw new Error("The specified state type "+e+" is not valid.");let s=new i;return s.ruleIndex=t,s}lexerActionFactory(e,t,i){let s=Ar.lexerActionFactoryMapper.get(e);if(!s)throw new Error("The specified lexer action type "+e+" is not valid.");return s(t,i)}},dc=class x0 extends Fe{static{p(this,"OrderedHashMap")}#e=[];clear(){super.clear(),this.#e=[]}get(e){return super.get(e)}set(e,t){let i=super.set(e,t);return i===void 0&&this.#e.push(e),i}setIfAbsent(e,t){let i=super.setIfAbsent(e,t);return i===void 0&&this.#e.push(e),i}values(){return{[Symbol.iterator]:()=>{let e=0;return{next:p(()=>e<this.#e.length?{done:!1,value:super.get(this.#e[e++])}:{done:!0,value:void 0},"next")}}}}keys(){return this.#e[Symbol.iterator]()}equals(e){return e instanceof x0?super.equals(e):!1}},sh=class Wu{static{p(this,"ATNSerializer")}atn;data=[];sets=new dc(ut.instance);nonGreedyStates=[];precedenceStates=[];constructor(e){this.atn=e}static getSerialized(e){return new Wu(e).serialize()}static serializeSets(e,t){e.push(t.length);for(let i of t){let s=i.contains(b.EOF),a=[...i];s&&a[0].stop===b.EOF?e.push(a.length-1):e.push(a.length),e.push(s?1:0);for(let u of a){if(u.start===b.EOF){if(u.stop===b.EOF)continue;e.push(0)}else e.push(u.start);e.push(u.stop)}}}serialize(){this.addPreamble();let e=this.addEdges();this.addNonGreedyStates(),this.addPrecedenceStates(),this.addRuleStatesAndLexerTokenTypes(),this.addModeStartStates();let t=this.addSets();return this.addEdges(e,t),this.addDecisionStartStates(),this.addLexerActions(),this.data}addPreamble(){this.data.push(Ye.SERIALIZED_VERSION),this.data.push(this.atn.grammarType),this.data.push(this.atn.maxTokenType)}addLexerActions(){if(this.atn.grammarType===L.LEXER){this.data.push(this.atn.lexerActions.length);for(let e of this.atn.lexerActions)switch(this.data.push(e.actionType),e.actionType){case k.CHANNEL:{let t=e.channel;this.data.push(t),this.data.push(0);break}case k.CUSTOM:{let t=e.ruleIndex,i=e.actionIndex;this.data.push(t),this.data.push(i);break}case k.MODE:{let t=e.mode;this.data.push(t),this.data.push(0);break}case k.MORE:{this.data.push(0),this.data.push(0);break}case k.POP_MODE:{this.data.push(0),this.data.push(0);break}case k.PUSH_MODE:{let t=e.mode;this.data.push(t),this.data.push(0);break}case k.SKIP:{this.data.push(0),this.data.push(0);break}case k.TYPE:{let t=e.type;this.data.push(t),this.data.push(0);break}default:throw new Error(`The specified lexer action type ${e.actionType} is not valid.`)}}}addDecisionStartStates(){this.data.push(this.atn.decisionToState.length);for(let e of this.atn.decisionToState)this.data.push(e.stateNumber)}addEdges(...e){switch(e.length){case 0:{let t=0;this.data.push(this.atn.states.length);for(let i of this.atn.states){if(i===null){this.data.push(v.INVALID_TYPE);continue}let s=i.constructor.stateType;i instanceof dt&&i.nonGreedy&&this.nonGreedyStates.push(i.stateNumber),i instanceof Qu&&i.isLeftRecursiveRule&&this.precedenceStates.push(i.stateNumber),this.data.push(s),this.data.push(i.ruleIndex),i.constructor.stateType===v.LOOP_END?this.data.push(i.loopBackState.stateNumber):i instanceof ot&&this.data.push(i.endState.stateNumber),i.constructor.stateType!==v.RULE_STOP&&(t+=i.transitions.length);for(let a of i.transitions){let u=a.transitionType;if(u===C.SET||u===C.NOT_SET){let c=a;this.sets.set(c.set,!0)}}}return t}case 2:{let[t,i]=e;this.data.push(t);for(let s of this.atn.states)if(s!==null&&s.constructor.stateType!==v.RULE_STOP)for(let a of s.transitions){if(this.atn.states[a.target.stateNumber]===null)throw new Error("Cannot serialize a transition to a removed state.");let u=s.stateNumber,c=a.target.stateNumber,h=a.transitionType,d=0,x=0,R=0;switch(h){case C.RULE:{c=a.followState.stateNumber,d=a.target.stateNumber,x=a.ruleIndex,R=a.precedence;break}case C.PRECEDENCE:{d=a.precedence;break}case C.PREDICATE:{let y=a;d=y.ruleIndex,x=y.predIndex,R=y.isCtxDependent?1:0;break}case C.RANGE:{d=a.start,x=a.stop,d===b.EOF&&(d=0,R=1);break}case C.ATOM:{d=a.labelValue,d===b.EOF&&(d=0,R=1);break}case C.ACTION:{let y=a;d=y.ruleIndex,x=y.actionIndex,R=y.isCtxDependent?1:0;break}case C.SET:{d=i.get(a.set);break}case C.NOT_SET:{d=i.get(a.set);break}case C.WILDCARD:break;default:}this.data.push(u),this.data.push(c),this.data.push(h),this.data.push(d),this.data.push(x),this.data.push(R)}break}default:throw new Error("Invalid number of arguments")}}addSets(){Wu.serializeSets(this.data,[...this.sets.keys()]);let e=new Fe,t=0;for(let i of this.sets.keys())e.set(i,t++);return e}addModeStartStates(){let e=this.atn.modeToStartState.length;if(this.data.push(e),e>0)for(let t of this.atn.modeToStartState)this.data.push(t.stateNumber)}addRuleStatesAndLexerTokenTypes(){let e=this.atn.ruleToStartState.length;this.data.push(e);for(let t=0;t<e;t++){let i=this.atn.ruleToStartState[t];this.data.push(i.stateNumber),this.atn.grammarType===L.LEXER&&this.data.push(this.atn.ruleToTokenType[t])}}addPrecedenceStates(){this.data.push(this.precedenceStates.length);for(let e of this.precedenceStates)this.data.push(e)}addNonGreedyStates(){this.data.push(this.nonGreedyStates.length);for(let e of this.nonGreedyStates)this.data.push(e)}},Gt=class Xu{static{p(this,"DFAState")}stateNumber=-1;configs;edges=[];isAcceptState=!1;prediction=-1;lexerActionExecutor=null;requiresFullContext=!1;predicates=null;constructor(e){e&&(this.configs=e)}static fromState(e){let t=new Xu;return t.stateNumber=e,t}static fromConfigs(e){return new Xu(e)}static hashCode(e){return e.configs.hashCode()}static equals(e,t){return e.configs.equals(t.configs)}getAltSet(){let e=new Set;for(let t of this.configs)e.add(t.alt);return e.size===0?null:e}toString(){let e="";return e+=this.stateNumber,e+=":",e+=this.configs?this.configs.toString():"",this.isAcceptState&&(e+="=>",this.predicates?e+=_t(this.predicates):e+=this.prediction),e.toString()}},Ae=class{static{p(this,"ATNSimulator")}static ERROR=Gt.fromState(2147483647);atn;sharedContextCache;constructor(r,e){return this.atn=r,this.sharedContextCache=e,this}getCachedContext(r){if(!this.sharedContextCache)return r;let e=new Fe(ut.instance);return t0(r,this.sharedContextCache,e)}},ah=class b0{static{p(this,"CodePointTransitions")}static createWithCodePoint(e,t){return b0.createWithCodePointRange(e,t,t)}static createWithCodePointRange(e,t,i){return t===i?new Ur(e,t):new Yu(e,t,i)}},pc=class{static{p(this,"DecisionInfo")}decision=0;invocations=0;timeInPrediction=0;sllTotalLook=0;sllMinLook=0;sllMaxLook=0;sllMaxLookEvent;llTotalLook=0;llMinLook=0;llMaxLook=0;llMaxLookEvent;contextSensitivities;errors;ambiguities;predicateEvals;sllATNTransitions=0;sllDFATransitions=0;llFallback=0;llATNTransitions=0;llDFATransitions=0;constructor(r){this.decision=r,this.contextSensitivities=[],this.errors=[],this.ambiguities=[],this.predicateEvals=[]}toString(){return"{decision="+this.decision+", contextSensitivities="+this.contextSensitivities.length+", errors="+this.errors.length+", ambiguities="+this.ambiguities.length+", sllLookahead="+this.sllTotalLook+", sllATNTransitions="+this.sllATNTransitions+", sllDFATransitions="+this.sllDFATransitions+", llFallback="+this.llFallback+", llLookahead="+this.llTotalLook+", llATNTransitions="+this.llATNTransitions+"}"}},Pe=class Mr extends K{static{p(this,"LexerATNConfig")}lexerActionExecutor;passedThroughNonGreedyDecision;constructor(e,t,i,s){return super(e,t,i??e.context,i?w.NONE:e.semanticContext),this.lexerActionExecutor=i?s:e.lexerActionExecutor??null,this.passedThroughNonGreedyDecision=Mr.checkNonGreedyDecision(e,this.state),this}static createWithExecutor(e,t,i){return new Mr(e,t,e.context,i)}static createWithConfig(e,t,i){return new Mr(t,e,i??null,t.lexerActionExecutor)}static createWithContext(e,t,i){return new Mr({alt:t},e,i,null)}static checkNonGreedyDecision(e,t){return e.passedThroughNonGreedyDecision||"nonGreedy"in t&&t.nonGreedy}hashCode(){if(this.cachedHashCode===void 0){let e=f.initialize(7);e=f.update(e,this.state.stateNumber),e=f.update(e,this.alt),e=f.updateFromComparable(e,this.context),e=f.updateFromComparable(e,this.semanticContext),e=f.update(e,this.passedThroughNonGreedyDecision?1:0),e=f.updateFromComparable(e,this.lexerActionExecutor),e=f.finish(e,6),this.cachedHashCode=e}return this.cachedHashCode}equals(e){return this===e?!0:this.passedThroughNonGreedyDecision===e.passedThroughNonGreedyDecision&&(this.lexerActionExecutor&&e.lexerActionExecutor?this.lexerActionExecutor.equals(e.lexerActionExecutor):!e.lexerActionExecutor)&&super.equals(e)}},jt=class{static{p(this,"BaseErrorListener")}syntaxError(r,e,t,i,s,a){}reportAmbiguity(r,e,t,i,s,a,u){}reportAttemptingFullContext(r,e,t,i,s,a){}reportContextSensitivity(r,e,t,i,s,a){}},xc=class R0 extends jt{static{p(this,"ConsoleErrorListener")}static instance=new R0;syntaxError(e,t,i,s,a,u){console.error("line "+i+":"+s+" "+a)}},bc=class extends jt{constructor(r){return super(),this.delegates=r,this}static{p(this,"ProxyErrorListener")}syntaxError(r,e,t,i,s,a){this.delegates.forEach(u=>{u.syntaxError(r,e,t,i,s,a)})}reportAmbiguity(r,e,t,i,s,a,u){this.delegates.forEach(c=>{c.reportAmbiguity(r,e,t,i,s,a,u)})}reportAttemptingFullContext(r,e,t,i,s,a){this.delegates.forEach(u=>{u.reportAttemptingFullContext(r,e,t,i,s,a)})}reportContextSensitivity(r,e,t,i,s,a){this.delegates.forEach(u=>{u.reportContextSensitivity(r,e,t,i,s,a)})}},f0=class Nr{static{p(this,"Recognizer")}static EOF=-1;static tokenTypeMapCache=new Map;static ruleIndexMapCache=new Map;interpreter;listeners=[xc.instance];stateNumber=-1;checkVersion(e){let t="4.13.1";t!==e&&console.error("ANTLR runtime and generated code versions disagree: "+t+"!="+e)}addErrorListener(e){this.listeners.push(e)}removeErrorListeners(){this.listeners=[]}removeErrorListener(e){for(let t=0;t<this.listeners.length;t++)if(this.listeners[t]===e){this.listeners.splice(t,1);return}}getErrorListeners(){return this.listeners}getTokenTypeMap(){let e=this.vocabulary,t=Nr.tokenTypeMapCache.get(e);if(!t){t=new Map;for(let i=0;i<=this.atn.maxTokenType;i++){let s=e.getLiteralName(i);s&&t.set(s,i);let a=e.getSymbolicName(i);a&&t.set(a,i)}t.set("EOF",b.EOF),Nr.tokenTypeMapCache.set(e,t)}return t}getRuleIndexMap(){let e=this.ruleNames,t=Nr.ruleIndexMapCache.get(e);return t||(t=new Map,e.forEach((i,s)=>t.set(i,s)),Nr.ruleIndexMapCache.set(e,t)),t}getTokenType(e){let t=this.getTokenTypeMap().get(e);return t||b.INVALID_TYPE}getErrorHeader(e){let t=e.offendingToken?.line,i=e.offendingToken?.column;return"line "+t+":"+i}get errorListenerDispatch(){return new bc(this.listeners)}sempred(e,t,i){return!0}precpred(e,t){return!0}action(e,t,i){}get atn(){return this.interpreter.atn}get state(){return this.stateNumber}set state(e){this.stateNumber=e}getParseInfo(){}},m0=class g0{static{p(this,"CommonTokenFactory")}static DEFAULT=new g0;copyText=!1;constructor(e){this.copyText=e??!1}create(e,t,i,s,a,u,c,h){let d=An.fromSource(e,t,s,a,u);return d.line=c,d.column=h,i?d.text=i:this.copyText&&e[1]!==null&&(d.text=e[1].getTextFromRange(a,u)),d}},o=class C0 extends Error{static{p(this,"RecognitionException")}ctx;offendingToken=null;offendingState=-1;recognizer;input;constructor(e){super(e.message),Error.captureStackTrace&&Error.captureStackTrace(this,C0),this.message=e.message,this.recognizer=e.recognizer,this.input=e.input,this.ctx=e.ctx,this.recognizer!==null&&(this.offendingState=this.recognizer.state)}getExpectedTokens(){return this.recognizer!==null&&this.ctx!==null?this.recognizer.atn.getExpectedTokens(this.offendingState,this.ctx):null}toString(){return this.message}},Mn=class extends o{static{p(this,"LexerNoViableAltException")}startIndex;deadEndConfigs;constructor(r,e,t,i){super({message:"",recognizer:r,input:e,ctx:null}),this.startIndex=t,this.deadEndConfigs=i}toString(){let r="";return this.input&&this.startIndex>=0&&this.startIndex<this.input.size&&(r=this.input.getTextFromRange(this.startIndex,this.startIndex)),`LexerNoViableAltException(${r})`}},Ne=class Ke extends f0{static{p(this,"Lexer")}static DEFAULT_MODE=0;static MORE=-2;static SKIP=-3;static DEFAULT_TOKEN_CHANNEL=b.DEFAULT_CHANNEL;static HIDDEN=b.HIDDEN_CHANNEL;options={minDFAEdge:0,maxDFAEdge:256,minCodePoint:0,maxCodePoint:1114111};tokenStartCharIndex=-1;channel=0;type=0;mode=Ke.DEFAULT_MODE;currentTokenColumn=0;currentTokenStartLine=0;input;token=null;hitEOF=!1;factory;#e=[];#t;constructor(e,t){super(),this.options={...this.options,...t},this.input=e,this.factory=m0.DEFAULT}reset(e=!0){e&&this.input.seek(0),this.token=null,this.type=b.INVALID_TYPE,this.channel=b.DEFAULT_CHANNEL,this.tokenStartCharIndex=-1,this.currentTokenColumn=-1,this.currentTokenStartLine=-1,this.#t=void 0,this.hitEOF=!1,this.mode=Ke.DEFAULT_MODE,this.#e=[],this.interpreter.reset()}nextToken(){if(this.input===null)throw new Error("nextToken requires a non-null input stream.");let e=this.input.mark();try{for(;;){if(this.hitEOF)return this.emitEOF(),this.token;this.token=null,this.channel=b.DEFAULT_CHANNEL,this.tokenStartCharIndex=this.input.index,this.currentTokenColumn=this.interpreter.column,this.currentTokenStartLine=this.interpreter.line,this.#t=void 0;let t=!1;for(;;){this.type=b.INVALID_TYPE;let i=Ke.SKIP;try{i=this.interpreter.match(this.input,this.mode)}catch(s){if(s instanceof Mn)this.notifyListeners(s),this.recover(s);else throw s}if(this.input.LA(1)===b.EOF&&(this.hitEOF=!0),this.type===b.INVALID_TYPE&&(this.type=i),this.type===Ke.SKIP){t=!0;break}if(this.type!==Ke.MORE)break}if(!t)return this.token===null&&this.emit(),this.token}}finally{this.input.release(e)}}skip(){this.type=Ke.SKIP}more(){this.type=Ke.MORE}pushMode(e){Kt.debug&&console.log("pushMode "+e),this.#e.push(this.mode),this.mode=e}popMode(){if(this.#e.length===0)throw new Error("Empty Stack");return Kt.debug&&console.log("popMode back to "+this.#e.slice(0,-1)),this.mode=this.#e.pop(),this.mode}get modeStack(){return this.#e}emitToken(e){this.token=e}emit(){let e=this.factory.create([this,this.input],this.type,this.#t,this.channel,this.tokenStartCharIndex,this.getCharIndex()-1,this.currentTokenStartLine,this.currentTokenColumn);return this.emitToken(e),e}emitEOF(){let e=this.factory.create([this,this.input],b.EOF,void 0,b.DEFAULT_CHANNEL,this.input.index,this.input.index-1,this.line,this.column);return this.emitToken(e),e}getCharIndex(){return this.input.index}getAllTokens(){let e=[],t=this.nextToken();for(;t.type!==b.EOF;)e.push(t),t=this.nextToken();return e}notifyListeners(e){let t=this.tokenStartCharIndex,i=this.input.index,s=this.input.getTextFromRange(t,i),a="token recognition error at: '"+this.getErrorDisplay(s)+"'";this.errorListenerDispatch.syntaxError(this,null,this.currentTokenStartLine,this.currentTokenColumn,a,e)}getErrorDisplay(e){return e}getErrorDisplayForChar(e){return e.charCodeAt(0)===b.EOF?"<EOF>":e===`
|
|
5
|
+
`?"\\n":e===" "?"\\t":e==="\r"?"\\r":e}getCharErrorDisplay(e){return"'"+this.getErrorDisplayForChar(e)+"'"}recover(e){this.input.LA(1)!==b.EOF&&(e instanceof Mn?this.interpreter.consume(this.input):this.input.consume())}get inputStream(){return this.input}set inputStream(e){this.reset(!1),this.input=e}set tokenFactory(e){this.factory=e}get tokenFactory(){return this.factory}get sourceName(){return this.input.getSourceName()}get line(){return this.interpreter.line}set line(e){this.interpreter.line=e}get column(){return this.interpreter.column}set column(e){this.interpreter.column=e}get text(){return this.#t?this.#t:this.interpreter.getText(this.input)}set text(e){this.#t=e}},E0=class{static{p(this,"DFASerializer")}dfa;vocabulary;constructor(r,e){this.dfa=r,this.vocabulary=e}toString(){if(!this.dfa.s0)return"";let r="",e=this.dfa.getStates();for(let t of e){let i=0;i=t.edges.length;for(let s=0;s<i;s++){let a=t.edges[s];if(a&&a.stateNumber!==2147483647){r+=this.getStateString(t);let u=this.getEdgeLabel(s);r+="-",r+=u,r+="->",r+=this.getStateString(a),r+=`
|
|
6
|
+
`}}}return r}getEdgeLabel(r){return`${this.vocabulary.getDisplayName(r-1)}`}getStateString(r){let e=r.stateNumber,t=(r.isAcceptState?":":"")+"s"+e+(r.requiresFullContext?"^":"");return r.isAcceptState?r.predicates!==null?`${t}=>${r.predicates.toString()}`:`${t}=>${r.prediction}`:`${t}`}},Rc=class extends E0{static{p(this,"LexerDFASerializer")}constructor(r){super(r,ye.EMPTY_VOCABULARY)}getEdgeLabel=p(r=>"'"+String.fromCharCode(r)+"'","getEdgeLabel")},He=class{static{p(this,"DFA")}s0;decision;atnStartState;isPrecedenceDfa;states=new Map;constructor(r,e){this.atnStartState=r,this.decision=e??0;let t=!1;r instanceof je&&r.precedenceRuleDecision&&(t=!0,this.s0=Gt.fromState(-1)),this.isPrecedenceDfa=t}[Symbol.iterator]=()=>this.states.values()[Symbol.iterator]();getPrecedenceStartState=p(r=>{if(!this.isPrecedenceDfa)throw new Error("Only precedence DFAs may contain a precedence start state.");if(!(!this.s0||!this.s0.edges||r<0||r>=this.s0.edges.length))return this.s0.edges[r]},"getPrecedenceStartState");setPrecedenceStartState=p((r,e)=>{if(!this.isPrecedenceDfa)throw new Error("Only precedence DFAs may contain a precedence start state.");r<0||!this.s0||(this.s0.edges[r]=e)},"setPrecedenceStartState");getStates(){let r=[...this.states.values()];return r.sort((e,t)=>e.stateNumber-t.stateNumber),r}getState(r){return this.states.get(r.configs.hashCode())??null}getStateForConfigs(r){return this.states.get(r.hashCode())??null}addState(r){let e=r.configs.hashCode();this.states.has(e)||(this.states.set(e,r),r.stateNumber=this.states.size-1)}toString(r){return r?this.s0?new E0(this,r).toString()??"":"":this.toString(ye.EMPTY_VOCABULARY)}toLexerString(){return this.s0?new Rc(this).toString()??"":""}get length(){return this.states.size}},Ku=class y0{static{p(this,"LexerIndexedCustomAction")}offset;action;actionType;isPositionDependent=!0;cachedHashCode;constructor(e,t){this.actionType=t.actionType,this.offset=e,this.action=t}execute(e){this.action.execute(e)}hashCode(){if(this.cachedHashCode===void 0){let e=f.initialize();e=f.update(e,this.offset),e=f.updateFromComparable(e,this.action),this.cachedHashCode=f.finish(e,2)}return this.cachedHashCode}equals(e){return this===e?!0:e instanceof y0?this.offset===e.offset&&this.action===e.action:!1}},fc=class Pn{static{p(this,"LexerActionExecutor")}lexerActions;actionType;isPositionDependent=!1;cachedHashCode;constructor(e){return this.actionType=-1,this.lexerActions=e??[],this}static append(e,t){if(e===null)return new Pn([t]);let i=e.lexerActions.concat([t]);return new Pn(i)}fixOffsetBeforeMatch(e){let t=null;for(let i=0;i<this.lexerActions.length;i++)this.lexerActions[i].isPositionDependent&&!(this.lexerActions[i]instanceof Ku)&&(t===null&&(t=this.lexerActions.concat([])),t[i]=new Ku(e,this.lexerActions[i]));return t===null?this:new Pn(t)}execute(e,t,i){if(t===void 0||i===void 0)return;let s=!1,a=t.index;try{for(let u of this.lexerActions){let c=u;if(u instanceof Ku){let h=u.offset;t.seek(i+h),c=u.action,s=i+h!==a}else u.isPositionDependent&&(t.seek(a),s=!1);c.execute(e)}}finally{s&&t.seek(a)}}hashCode(){if(this.cachedHashCode===void 0){let e=f.initialize(7);for(let t of this.lexerActions)e=f.update(e,t.hashCode());this.cachedHashCode=f.finish(e,this.lexerActions.length)}return this.cachedHashCode}equals(e){return this===e?!0:this.cachedHashCode!==e.cachedHashCode||this.lexerActions.length!==e.lexerActions.length?!1:this.lexerActions.every((t,i)=>t.equals(e.lexerActions[i]))}},mc=class v0 extends de{static{p(this,"OrderedHashSet")}elements=[];getOrAdd(e){let t=this.size,i=super.getOrAdd(e);return this.size>t&&this.elements.push(e),i}equals(e){return e instanceof v0?super.equals(e):!1}clear(){super.clear(),this.elements=[]}*[Symbol.iterator](){yield*this.elements}toArray(){return this.elements.slice(0)}},F1=class extends De{static{p(this,"OrderedATNConfigSet")}constructor(){super(),this.configLookup=new mc}},Kt=class he extends Ae{static{p(this,"LexerATNSimulator")}static debug=!1;decisionToDFA;recognizer=null;startIndex=-1;line=1;column=0;mode=Ne.DEFAULT_MODE;prevAccept;options;lexerATNConfigFactory;constructor(e,t,i,s){super(t,s),this.decisionToDFA=i,this.recognizer=e,e?this.options=e.options:this.options={minDFAEdge:0,maxDFAEdge:256,minCodePoint:0,maxCodePoint:1114111}}match(e,t){this.mode=t;let i=e.mark();try{this.startIndex=e.index,this.prevAccept=void 0;let s=this.decisionToDFA[t];return s.s0?this.execATN(e,s.s0):this.matchATN(e)}finally{e.release(i)}}reset(){this.prevAccept=void 0,this.startIndex=-1,this.line=1,this.column=0,this.mode=Ne.DEFAULT_MODE}clearDFA(){for(let e=0;e<this.decisionToDFA.length;e++)this.decisionToDFA[e]=new He(this.atn.getDecisionState(e),e)}getDFA(e){return this.decisionToDFA[e]}getText(e){return e.getTextFromRange(this.startIndex,e.index-1)}consume(e){e.LA(1)===10?(this.line+=1,this.column=0):this.column+=1,e.consume()}getTokenName(e){return e===b.EOF?"EOF":"'"+String.fromCharCode(e)+"'"}matchATN(e){let t=this.atn.modeToStartState[this.mode];he.debug&&console.log("matchATN mode "+this.mode+" start: "+t);let i=this.mode,s=this.computeStartState(e,t),a=s.hasSemanticContext;s.hasSemanticContext=!1;let u=this.addDFAState(s);a||(this.decisionToDFA[this.mode].s0=u);let c=this.execATN(e,u);return he.debug&&console.log("DFA after matchATN: "+this.decisionToDFA[i].toLexerString()),c}execATN(e,t){he.debug&&console.log("start state closure="+t.configs),t.isAcceptState&&this.captureSimState(e,t);let i=e.LA(1);for(;;){he.debug&&console.log("execATN loop starting closure: "+t.configs);let s=this.getExistingTargetState(t,i);if(s||(s=this.computeTargetState(e,t,i)),s===Ae.ERROR||(i!==b.EOF&&this.consume(e),s.isAcceptState&&(this.captureSimState(e,s),i===b.EOF)))break;i=e.LA(1),t=s}return this.failOrAccept(e,t.configs,i)}getExistingTargetState(e,t){if(t>=this.options.minDFAEdge&&t<=this.options.maxDFAEdge){let i=e.edges[t-this.options.minDFAEdge];return he.debug&&i&&console.log("reuse state "+e.stateNumber+" edge to "+i.stateNumber),i}}computeTargetState(e,t,i){let s=new F1;return this.getReachableConfigSet(e,t.configs,s,i),s.length===0?(s.hasSemanticContext||this.addDFAEdge(t,i,Ae.ERROR),Ae.ERROR):this.addDFAEdge(t,i,null,s)}failOrAccept(e,t,i){if(this.prevAccept?.dfaState){let{dfaState:s,index:a,line:u,column:c}=this.prevAccept;return this.accept(e,s.lexerActionExecutor,this.startIndex,a,u,c),s.prediction}if(i===b.EOF&&e.index===this.startIndex)return b.EOF;throw new Mn(this.recognizer,e,this.startIndex,t)}getReachableConfigSet(e,t,i,s){let a=L.INVALID_ALT_NUMBER;for(let u of t){let c=u.alt===a;if(!(c&&u.passedThroughNonGreedyDecision)){he.debug&&console.log(`testing %s at %s
|
|
7
|
+
`,this.getTokenName(s),u.toString(this.recognizer,!0));for(let h of u.state.transitions){let d=this.getReachableTarget(h,s);if(d){let x=u.lexerActionExecutor;x&&(x=x.fixOffsetBeforeMatch(e.index-this.startIndex));let R=s===b.EOF,y=Pe.createWithExecutor(u,d,x);this.closure(e,y,i,c,!0,R)&&(a=u.alt)}}}}}accept(e,t,i,s,a,u){he.debug&&console.log(`ACTION %s
|
|
8
|
+
`,t),e.seek(s),this.line=a,this.column=u,t&&this.recognizer&&t.execute(this.recognizer,e,i)}getReachableTarget(e,t){if(e.matches(t,this.options.minCodePoint,this.options.maxCodePoint))return e.target}computeStartState(e,t){let i=j.instance,s=new F1;for(let a=0;a<t.transitions.length;a++){let u=t.transitions[a].target,c=Pe.createWithContext(u,a+1,i);this.closure(e,c,s,!1,!1,!1)}return s}closure(e,t,i,s,a,u){let c=null;if(he.debug&&console.log("closure("+t.toString(this.recognizer,!0)+")"),t.state.constructor.stateType===v.RULE_STOP){if(he.debug&&(this.recognizer!==null?console.log(`closure at %s rule stop %s
|
|
9
|
+
`,this.recognizer.ruleNames[t.state.ruleIndex],t):console.log(`closure at rule stop %s
|
|
10
|
+
`,t)),!t.context||t.context.hasEmptyPath()){if(!t.context||t.context.isEmpty())return i.add(t),!0;i.add(Pe.createWithConfig(t.state,t,j.instance)),s=!0}if(t.context&&!t.context.isEmpty()){for(let h=0;h<t.context.length;h++)if(t.context.getReturnState(h)!==X.EMPTY_RETURN_STATE){let d=t.context.getParent(h),x=this.atn.states[t.context.getReturnState(h)];c=Pe.createWithConfig(x,t,d),s=this.closure(e,c,i,s,a,u)}}return s}t.state.epsilonOnlyTransitions||(!s||!t.passedThroughNonGreedyDecision)&&i.add(t);for(let h of t.state.transitions)c=this.getEpsilonTarget(e,t,h,i,a,u),c&&(s=this.closure(e,c,i,s,a,u));return s}getEpsilonTarget(e,t,i,s,a,u){this.lexerATNConfigFactory||this.setupATNFactoryLookup();let c=this.lexerATNConfigFactory[i.transitionType];return c?c(e,t,i,s,a,u):null}setupATNFactoryLookup(){this.lexerATNConfigFactory=[],this.lexerATNConfigFactory[C.RULE]=(t,i,s)=>{let a=ht(i.context??void 0,s.followState.stateNumber);return Pe.createWithConfig(s.target,i,a)},this.lexerATNConfigFactory[C.PRECEDENCE]=()=>{throw new Error("Precedence predicates are not supported in lexers.")},this.lexerATNConfigFactory[C.PREDICATE]=(t,i,s,a,u)=>{let c=s;return he.debug&&console.log("EVAL rule "+c.ruleIndex+":"+c.predIndex),a.hasSemanticContext=!0,this.evaluatePredicate(t,c.ruleIndex,c.predIndex,u)?Pe.createWithConfig(s.target,i):null},this.lexerATNConfigFactory[C.ACTION]=(t,i,s)=>{if(i.context===null||i.context.hasEmptyPath()){let a=fc.append(i.lexerActionExecutor,this.atn.lexerActions[s.actionIndex]);return Pe.createWithExecutor(i,s.target,a)}else return Pe.createWithConfig(s.target,i)},this.lexerATNConfigFactory[C.EPSILON]=(t,i,s)=>Pe.createWithConfig(s.target,i);let e=p((t,i,s,a,u,c)=>c&&s.matches(b.EOF,this.options.minCodePoint,this.options.maxCodePoint)?Pe.createWithConfig(s.target,i):null,"simple");this.lexerATNConfigFactory[C.ATOM]=e,this.lexerATNConfigFactory[C.RANGE]=e,this.lexerATNConfigFactory[C.SET]=e}evaluatePredicate(e,t,i,s){if(!this.recognizer)return!0;if(!s)return this.recognizer.sempred(null,t,i);let a=this.column,u=this.line,c=e.index,h=e.mark();try{return this.consume(e),this.recognizer.sempred(null,t,i)}finally{this.column=a,this.line=u,e.seek(c),e.release(h)}}captureSimState(e,t){this.prevAccept={index:e.index,line:this.line,column:this.column,dfaState:t}}addDFAEdge(e,t,i,s){if(!i&&s){let a=s.hasSemanticContext;if(s.hasSemanticContext=!1,i=this.addDFAState(s),a)return i}return t<this.options.minDFAEdge||t>this.options.maxDFAEdge||(he.debug&&console.log("EDGE "+e+" -> "+i+" upon "+t),e.edges[t-this.options.minDFAEdge]=i),i}addDFAState(e){let t=this.decisionToDFA[this.mode],i=t.getStateForConfigs(e);if(i)return i;let s=Gt.fromConfigs(e),a=e.firstStopState;return a&&(s.isAcceptState=!0,s.lexerActionExecutor=a.lexerActionExecutor,s.prediction=this.atn.ruleToTokenType[a.state.ruleIndex]),e.setReadonly(!0),t.addState(s),s}},gc=class{static{p(this,"ParseInfo")}atnSimulator;constructor(r){this.atnSimulator=r}getDecisionInfo(){return this.atnSimulator.getDecisionInfo()}getLLDecisions(){let r=this.atnSimulator.getDecisionInfo(),e=new Array;for(let t=0;t<r.length;t++)r[t].llFallback>0&&e.push(t);return e}getTotalTimeInPrediction(){let r=this.atnSimulator.getDecisionInfo(),e=0;for(let t of r)e+=t.timeInPrediction;return e}getTotalSLLLookaheadOps(){let r=this.atnSimulator.getDecisionInfo(),e=0;for(let t of r)e+=t.sllTotalLook;return e}getTotalLLLookaheadOps(){let r=this.atnSimulator.getDecisionInfo(),e=0;for(let t of r)e+=t.llTotalLook;return e}getTotalSLLATNLookaheadOps(){let r=this.atnSimulator.getDecisionInfo(),e=0;for(let t of r)e+=t.sllATNTransitions;return e}getTotalLLATNLookaheadOps(){let r=this.atnSimulator.getDecisionInfo(),e=0;for(let t of r)e+=t.llATNTransitions;return e}getTotalATNLookaheadOps(){let r=this.atnSimulator.getDecisionInfo(),e=0;for(let t of r)e+=t.sllATNTransitions,e+=t.llATNTransitions;return e}getDFASize(r){if(r===void 0){let e=0,t=this.atnSimulator.decisionToDFA;for(let i=0;i<t.length;i++)e+=this.getDFASize(i);return e}else return this.atnSimulator.decisionToDFA[r].length}},g=class extends o{static{p(this,"NoViableAltException")}deadEndConfigs=null;startToken;constructor(r,e=null,t=null,i=null,s=null,a=null){a=a??r.context,i=i??r.getCurrentToken(),t=t??r.getCurrentToken(),e=e??r.inputStream,super({message:"",recognizer:r,input:e,ctx:a}),this.deadEndConfigs=s,this.startToken=t,this.offendingToken=i}},H1=class{static{p(this,"DoubleDict")}cacheMap;constructor(){this.cacheMap=new Fe}get(r,e){let t=this.cacheMap.get(r)??null;return t===null?null:t.get(e)??null}set(r,e,t){let i=this.cacheMap.get(r);i||(i=new Fe,this.cacheMap.set(r,i)),i.set(e,t)}},Cc=class L0{static{p(this,"SubsetEqualityComparer")}static instance=new L0;hashCode(e){let t=f.initialize(7);return t=f.update(t,e.state.stateNumber),t=f.updateFromComparable(t,e.context),t=f.finish(t,2),t}equals(e,t){return e.state.stateNumber===t.state.stateNumber&&(e.context?.equals(t.context)??!0)}},B=class ke{static{p(this,"PredictionMode")}static SLL=0;static LL=1;static LL_EXACT_AMBIG_DETECTION=2;static hasSLLConflictTerminatingPrediction(e,t){if(ke.allConfigsInRuleStopStates(t))return!0;if(e===ke.SLL&&t.hasSemanticContext){let s=new De;for(let a of t)a=K.duplicate(a,w.NONE),s.add(a);t=s}let i=ke.getConflictingAltSubsets(t);return ke.hasConflictingAltSet(i)&&!ke.hasStateAssociatedWithOneAlt(t)}static hasConfigInRuleStopState(e){for(let t of e)if(t.state instanceof ge)return!0;return!1}static allConfigsInRuleStopStates(e){for(let t of e)if(!(t.state instanceof ge))return!1;return!0}static resolvesToJustOneViableAlt(e){return ke.getSingleViableAlt(e)}static allSubsetsConflict(e){return!ke.hasNonConflictingAltSet(e)}static hasNonConflictingAltSet(e){for(let t of e)if(t.length===1)return!0;return!1}static hasConflictingAltSet(e){for(let t of e)if(t.length>1)return!0;return!1}static allSubsetsEqual(e){let t=null;for(let i of e)if(t===null)t=i;else if(i!==t)return!1;return!0}static getUniqueAlt(e){let t=ke.getAlts(e);return t.length===1?t.nextSetBit(0):L.INVALID_ALT_NUMBER}static getAlts(e){let t=new Me;return e.forEach(i=>{t.or(i)}),t}static getConflictingAltSubsets(e){let t=new Fe(Cc.instance);for(let i of e){let s=t.get(i);s||(s=new Me,t.set(i,s)),s.set(i.alt)}return Array.from(t.values())}static getStateToAltMap(e){let t=new Fe(ut.instance);for(let i of e){let s=t.get(i.state);s||(s=new Me,t.set(i.state,s)),s.set(i.alt)}return t}static hasStateAssociatedWithOneAlt(e){let t={};for(let i of e){let s=i.state.stateNumber;t[s]||(t[s]=0),t[s]++}return Object.values(t).some(i=>i===1)}static getSingleViableAlt(e){let t=null;for(let i of e){let s=i.nextSetBit(0);if(t===null)t=s;else if(t!==s)return L.INVALID_ALT_NUMBER}return t??0}},kr=class S extends Ae{static{p(this,"ParserATNSimulator")}static traceATNSimulator=!1;static debug;static debugAdd=!1;static debugClosure=!1;static dfaDebug=!1;static retryDebug=!1;predictionMode;decisionToDFA;parser;mergeCache=new H1;predictionState;constructor(e,t,i,s){super(t,s),this.parser=e,this.decisionToDFA=i}static getUniqueAlt(e){let t=L.INVALID_ALT_NUMBER;for(let i of e)if(t===L.INVALID_ALT_NUMBER)t=i.alt;else if(i.alt!==t)return L.INVALID_ALT_NUMBER;return t}reset(){}clearDFA(){for(let e=0;e<this.decisionToDFA.length;e++)this.decisionToDFA[e]=new He(this.atn.getDecisionState(e),e)}adaptivePredict(e,t,i){(S.debug||S.traceATNSimulator)&&console.log("adaptivePredict decision "+t+" exec LA(1)=="+this.getLookaheadName(e)+" line "+e.LT(1).line+":"+e.LT(1).column);let s=this.decisionToDFA[t];this.predictionState={input:e,startIndex:e.index,outerContext:i??void 0,dfa:s};let a=e.mark(),u=e.index;try{let c;if(s.isPrecedenceDfa?c=s.getPrecedenceStartState(this.parser.getPrecedence()):c=s.s0,!c){i||(i=l.empty),S.debug&&console.log("predictATN decision "+s.decision+" exec LA(1)=="+this.getLookaheadName(e)+", outerContext="+i.toString(this.parser.ruleNames));let x=this.computeStartState(s.atnStartState,l.empty,!1);s.isPrecedenceDfa?(x=this.applyPrecedenceFilter(x),c=this.addDFAState(s,Gt.fromConfigs(x)),s.setPrecedenceStartState(this.parser.getPrecedence(),c)):(c=this.addDFAState(s,Gt.fromConfigs(x)),s.s0=c)}let h=this.execATN(s,c,e,u,i);return S.debug&&console.log("DFA after predictATN: "+s.toString(this.parser.vocabulary)),h}finally{this.predictionState.dfa=void 0,this.mergeCache=new H1,e.seek(u),e.release(a)}}execATN(e,t,i,s,a){(S.debug||S.traceATNSimulator)&&console.log("execATN decision "+e.decision+", DFA state "+t+", LA(1)=="+this.getLookaheadName(i)+" line "+i.LT(1).line+":"+i.LT(1).column);let u,c=t,h=i.LA(1);for(;;){let d=this.getExistingTargetState(c,h);if(d||(d=this.computeTargetState(e,c,h)),d===Ae.ERROR){let x=this.noViableAlt(i,a,c.configs,s);if(i.seek(s),u=this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(c.configs,a),u!==L.INVALID_ALT_NUMBER)return u;throw x}if(d.requiresFullContext&&this.predictionMode!==B.SLL){let x=null;if(d.predicates!==null){S.debug&&console.log("DFA state has preds in DFA sim LL failover");let N=i.index;if(N!==s&&i.seek(s),x=this.evalSemanticContext(d.predicates,a,!0),x.length===1)return S.debug&&console.log("Full LL avoided"),x.nextSetBit(0);N!==s&&i.seek(N)}S.dfaDebug&&console.log("ctx sensitive state "+a+" in "+d);let y=this.computeStartState(e.atnStartState,a,!0);return this.reportAttemptingFullContext(e,x,d.configs,s,i.index),u=this.execATNWithFullContext(e,d,y,i,s,a),u}if(d.isAcceptState){if(d.predicates===null)return d.prediction;let x=i.index;i.seek(s);let R=this.evalSemanticContext(d.predicates,a,!0);if(R.length===0)throw this.noViableAlt(i,a,d.configs,s);return R.length===1||this.reportAmbiguity(e,d,s,x,!1,R,d.configs),R.nextSetBit(0)}c=d,h!==b.EOF&&(i.consume(),h=i.LA(1))}}getExistingTargetState(e,t){return e.edges[t+1]}computeTargetState(e,t,i){let s=this.computeReachSet(t.configs,i,!1);if(s===null)return this.addDFAEdge(e,t,i,Ae.ERROR),Ae.ERROR;let a=Gt.fromConfigs(s),u=S.getUniqueAlt(s);if(S.debug){let c=B.getConflictingAltSubsets(s);console.log("SLL altSubSets="+_t(c)+", configs="+s+", predict="+u+", allSubsetsConflict="+B.allSubsetsConflict(c)+", conflictingAlts="+this.getConflictingAlts(s))}return u!==L.INVALID_ALT_NUMBER?(a.isAcceptState=!0,a.configs.uniqueAlt=u,a.prediction=u):B.hasSLLConflictTerminatingPrediction(this.predictionMode,s)&&(a.configs.conflictingAlts=this.getConflictingAlts(s),a.requiresFullContext=!0,a.isAcceptState=!0,a.prediction=a.configs.conflictingAlts.nextSetBit(0)),a.isAcceptState&&a.configs.hasSemanticContext&&(this.predicateDFAState(a,this.atn.getDecisionState(e.decision)),a.predicates!==null&&(a.prediction=L.INVALID_ALT_NUMBER)),a=this.addDFAEdge(e,t,i,a),a}getRuleName(e){return this.parser!==null&&e>=0?this.parser.ruleNames[e]:"<rule "+e+">"}getTokenName(e){if(e===b.EOF)return"EOF";let i=(this.parser?.vocabulary??ye.EMPTY_VOCABULARY).getDisplayName(e);return i===e.toString()?i:i+"<"+e+">"}getLookaheadName(e){return this.getTokenName(e.LA(1))}dumpDeadEndConfigs(e){console.log("dead end configs: ");let t=e.deadEndConfigs;for(let i of t){let s="no edges";if(i.state.transitions.length>0){let a=i.state.transitions[0];a instanceof Ur?s="Atom "+this.getTokenName(a.labelValue):a instanceof $u&&(s=(a instanceof Zu?"~":"")+"Set "+a.label)}console.error(i.toString(this.parser,!0)+":"+s)}}predicateDFAState(e,t){let i=t.transitions.length,s=this.getConflictingAltsOrUniqueAlt(e.configs),a=this.getPredsForAmbigAlts(s,e.configs,i);a!==null?(e.predicates=this.getPredicatePredictions(s,a),e.prediction=L.INVALID_ALT_NUMBER):e.prediction=s.nextSetBit(0)}execATNWithFullContext(e,t,i,s,a,u){(S.debug||S.traceATNSimulator)&&console.log("execATNWithFullContext "+i);let c=!0,h=!1,d,x=i;s.seek(a);let R=s.LA(1),y=-1;for(;;){if(d=this.computeReachSet(x,R,c),d===null){let se=this.noViableAlt(s,u,x,a);s.seek(a);let Lr=this.getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(x,u);if(Lr!==L.INVALID_ALT_NUMBER)return Lr;throw se}let N=B.getConflictingAltSubsets(d);if(S.debug&&console.log("LL altSubSets="+N+", predict="+B.getUniqueAlt(N)+", resolvesToJustOneViableAlt="+B.resolvesToJustOneViableAlt(N)),d.uniqueAlt=S.getUniqueAlt(d),d.uniqueAlt!==L.INVALID_ALT_NUMBER){y=d.uniqueAlt;break}else if(this.predictionMode!==B.LL_EXACT_AMBIG_DETECTION){if(y=B.resolvesToJustOneViableAlt(N),y!==L.INVALID_ALT_NUMBER)break}else if(B.allSubsetsConflict(N)&&B.allSubsetsEqual(N)){h=!0,y=B.getSingleViableAlt(N);break}x=d,R!==b.EOF&&(s.consume(),R=s.LA(1))}return d.uniqueAlt!==L.INVALID_ALT_NUMBER?(this.reportContextSensitivity(e,y,d,a,s.index),y):(this.reportAmbiguity(e,t,a,s.index,h,d.getAlts(),d),y)}computeReachSet(e,t,i){S.debug&&console.log("in computeReachSet, starting closure: "+e);let s=new De(i),a=null;for(let c of e){if(S.debug&&console.log("testing "+this.getTokenName(t)+" at "+c),c.state instanceof ge){(i||t===b.EOF)&&(a===null&&(a=[]),a.push(c));continue}for(let h of c.state.transitions){let d=this.getReachableTarget(h,t);if(d!==null){let x=K.createWithConfig(d,c);s.add(x,this.mergeCache),S.debugAdd&&console.log("added "+x+" to intermediate")}}}let u=null;if(a===null&&t!==b.EOF&&(s.length===1||S.getUniqueAlt(s)!==L.INVALID_ALT_NUMBER)&&(u=s),u===null){u=new De(i);let c=new de,h=t===b.EOF;for(let d of s)this.closure(d,u,c,!1,i,h)}if(t===b.EOF&&(u=this.removeAllConfigsNotInRuleStopState(u,u===s)),a!==null&&(!i||!B.hasConfigInRuleStopState(u)))for(let c of a)u.add(c,this.mergeCache);return S.traceATNSimulator&&console.log("computeReachSet "+e+" -> "+u),u.length===0?null:u}removeAllConfigsNotInRuleStopState(e,t){if(B.allConfigsInRuleStopStates(e))return e;let i=new De(e.fullCtx);for(let s of e){if(s.state instanceof ge){i.add(s,this.mergeCache);continue}if(t&&s.state.epsilonOnlyTransitions&&this.atn.nextTokens(s.state).contains(b.EPSILON)){let u=this.atn.ruleToStopState[s.state.ruleIndex];i.add(K.createWithConfig(u,s),this.mergeCache)}}return i}computeStartState(e,t,i){let s=e1(this.atn,t),a=new De(i);S.traceATNSimulator&&console.log("computeStartState from ATN state "+e+" initialContext="+s.toString(this.parser));for(let u=0;u<e.transitions.length;u++){let c=e.transitions[u].target,h=K.createWithContext(c,u+1,s),d=new de;this.closure(h,a,d,!0,i,!1)}return a}applyPrecedenceFilter(e){let t=[],i=new De(e.fullCtx);for(let s of e){if(s.alt!==1)continue;let a=s.semanticContext.evalPrecedence(this.parser,this.predictionState.outerContext);a!==null&&(t[s.state.stateNumber]=s.context,a!==s.semanticContext?i.add(K.duplicate(s,a),this.mergeCache):i.add(s,this.mergeCache))}for(let s of e)if(s.alt!==1){if(!s.precedenceFilterSuppressed){let a=t[s.state.stateNumber]||null;if(a!==null&&a.equals(s.context))continue}i.add(s,this.mergeCache)}return i}getReachableTarget(e,t){return e.matches(t,0,this.atn.maxTokenType)?e.target:null}getPredsForAmbigAlts(e,t,i){let s=[];for(let u of t)e.get(u.alt)&&(s[u.alt]=w.orContext(s[u.alt]??null,u.semanticContext));let a=0;for(let u=1;u<i+1;u++){let c=s[u]??null;c===null?s[u]=w.NONE:c!==w.NONE&&(a+=1)}return a===0&&(s=null),S.debug&&console.log("getPredsForAmbigAlts result "+_t(s)),s}getPredicatePredictions(e,t){let i=[],s=!1;for(let a=1;a<t.length;a++){let u=t[a];e.get(a)&&i.push({pred:u,alt:a}),u!==w.NONE&&(s=!0)}return s?i:null}getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(e,t){let i=this.splitAccordingToSemanticValidity(e,t),s=i[0],a=i[1],u=this.getAltThatFinishedDecisionEntryRule(s);return u!==L.INVALID_ALT_NUMBER||a.length>0&&(u=this.getAltThatFinishedDecisionEntryRule(a),u!==L.INVALID_ALT_NUMBER)?u:L.INVALID_ALT_NUMBER}getAltThatFinishedDecisionEntryRule(e){let t=[];for(let i of e)(i.reachesIntoOuterContext||i.state instanceof ge&&i.context.hasEmptyPath())&&t.indexOf(i.alt)<0&&t.push(i.alt);return t.length===0?L.INVALID_ALT_NUMBER:Math.min(...t)}splitAccordingToSemanticValidity(e,t){let i=new De(e.fullCtx),s=new De(e.fullCtx);for(let a of e)a.semanticContext!==w.NONE?a.semanticContext.evaluate(this.parser,t)?i.add(a):s.add(a):i.add(a);return[i,s]}evalSemanticContext(e,t,i){let s=new Me;for(let a of e){if(a.pred===w.NONE){if(s.set(a.alt),!i)break;continue}let u=a.pred.evaluate(this.parser,t);if((S.debug||S.dfaDebug)&&console.log("eval pred "+a+"="+u),u&&(s.set(a.alt),!i))break}return s}closure(e,t,i,s,a,u){this.closureCheckingStopState(e,t,i,s,a,0,u)}closureCheckingStopState(e,t,i,s,a,u,c){if((S.traceATNSimulator||S.debugClosure)&&console.log("closure("+e.toString(this.parser,!0)+")"),e.state instanceof ge)if(e.context&&!e.context.isEmpty()){for(let h=0;h<e.context.length;h++){if(e.context.getReturnState(h)===X.EMPTY_RETURN_STATE){if(a){t.add(K.createWithConfig(e.state,e,j.instance),this.mergeCache);continue}else S.debug&&console.log("FALLING off rule "+this.getRuleName(e.state.ruleIndex)),this.closure_(e,t,i,s,a,u,c);continue}let d=this.atn.states[e.context.getReturnState(h)],x=e.context.getParent(h),R=K.createWithContext(d,e.alt,x,e.semanticContext);R.reachesIntoOuterContext=e.reachesIntoOuterContext,this.closureCheckingStopState(R,t,i,s,a,u-1,c)}return}else if(a){t.add(e,this.mergeCache);return}else S.debug&&console.log("FALLING off rule "+this.getRuleName(e.state.ruleIndex));this.closure_(e,t,i,s,a,u,c)}closure_(e,t,i,s,a,u,c){let h=e.state;h.epsilonOnlyTransitions||t.add(e,this.mergeCache);for(let d=0;d<h.transitions.length;d++){if(d===0&&this.canDropLoopEntryEdgeInLeftRecursiveRule(e))continue;let x=h.transitions[d],R=s&&!(x instanceof i0),y=this.getEpsilonTarget(e,x,R,u===0,a,c);if(y){let N=u;if(e.state.constructor.stateType===v.RULE_STOP){if(this.predictionState.dfa&&this.predictionState?.dfa.isPrecedenceDfa&&x.outermostPrecedenceReturn===this.predictionState?.dfa.atnStartState?.ruleIndex&&(y.precedenceFilterSuppressed=!0),y.reachesIntoOuterContext=!0,i.getOrAdd(y)!==y)continue;t.dipsIntoOuterContext=!0,N-=1,S.debug&&console.log("dips into outer ctx: "+y)}else{if(!x.isEpsilon&&i.getOrAdd(y)!==y)continue;x instanceof zu&&N>=0&&(N+=1)}this.closureCheckingStopState(y,t,i,R,a,N,c)}}}canDropLoopEntryEdgeInLeftRecursiveRule(e){let t=e.state;if(t.constructor.stateType!==v.STAR_LOOP_ENTRY||!e.context||!t.precedenceRuleDecision||e.context.isEmpty()||e.context.hasEmptyPath())return!1;let i=e.context.length;for(let c=0;c<i;c++)if(this.atn.states[e.context.getReturnState(c)].ruleIndex!==t.ruleIndex)return!1;let a=t.transitions[0].target.endState.stateNumber,u=this.atn.states[a];for(let c=0;c<i;c++){let h=e.context.getReturnState(c),d=this.atn.states[h];if(d.transitions.length!==1||!d.transitions[0].isEpsilon)return!1;let x=d.transitions[0].target;if(!(d.constructor.stateType===v.BLOCK_END&&x===t)&&d!==u&&x!==u&&!(x.constructor.stateType===v.BLOCK_END&&x.transitions.length===1&&x.transitions[0].isEpsilon&&x.transitions[0].target===t))return!1}return!0}getEpsilonTarget(e,t,i,s,a,u){switch(t.transitionType){case C.RULE:return this.ruleTransition(e,t);case C.PRECEDENCE:return this.precedenceTransition(e,t,i,s,a);case C.PREDICATE:return this.predTransition(e,t,i,s,a);case C.ACTION:{if(S.debug){let c=t,h=c.actionIndex===-1?65535:c.actionIndex;console.log("ACTION edge "+c.ruleIndex+":"+h)}return K.createWithConfig(t.target,e)}case C.EPSILON:return K.createWithConfig(t.target,e);case C.ATOM:case C.RANGE:case C.SET:return u&&t.matches(b.EOF,0,1)?K.createWithConfig(t.target,e):null;default:return null}}precedenceTransition(e,t,i,s,a){S.debug&&(console.log("PRED (collectPredicates="+i+") "+t.precedence+">=_p, ctx dependent=true"),this.parser!==null&&console.log("context surrounding pred is "+_t(this.parser.getRuleInvocationStack())));let u=null;if(i&&s)if(a&&this.predictionState?.input){let c=this.predictionState.input.index;this.predictionState.input.seek(this.predictionState.startIndex);let h=t.getPredicate().evaluate(this.parser,this.predictionState.outerContext);this.predictionState.input.seek(c),h&&(u=K.createWithConfig(t.target,e))}else{let c=w.andContext(e.semanticContext,t.getPredicate());u=K.createWithSemanticContext(t.target,e,c)}else u=K.createWithConfig(t.target,e);return S.debug&&console.log("config from pred transition="+u),u}predTransition(e,t,i,s,a){S.debug&&(console.log("PRED (collectPredicates="+i+") "+t.ruleIndex+":"+t.predIndex+", ctx dependent="+t.isCtxDependent),this.parser!==null&&console.log("context surrounding pred is "+_t(this.parser.getRuleInvocationStack())));let u=null;if(i&&(t.isCtxDependent&&s||!t.isCtxDependent))if(a&&this.predictionState?.input){let c=this.predictionState.input.index;this.predictionState.input.seek(this.predictionState.startIndex);let h=t.getPredicate().evaluate(this.parser,this.predictionState.outerContext);this.predictionState.input.seek(c),h&&(u=K.createWithConfig(t.target,e))}else{let c=w.andContext(e.semanticContext,t.getPredicate());u=K.createWithSemanticContext(t.target,e,c)}else u=K.createWithConfig(t.target,e);return S.debug&&console.log("config from pred transition="+u),u}ruleTransition(e,t){S.debug&&console.log("CALL rule "+this.getRuleName(t.target.ruleIndex)+", ctx="+e.context);let i=t.followState,s=ht(e.context??void 0,i.stateNumber);return K.createWithConfig(t.target,e,s)}getConflictingAlts(e){let t=B.getConflictingAltSubsets(e);return B.getAlts(t)}getConflictingAltsOrUniqueAlt(e){let t;return e.uniqueAlt!==L.INVALID_ALT_NUMBER?(t=new Me,t.set(e.uniqueAlt)):t=e.conflictingAlts,t}noViableAlt(e,t,i,s){return new g(this.parser,e,e.get(s),e.LT(1),i,t)}addDFAEdge(e,t,i,s){return S.debug&&console.log("EDGE "+t+" -> "+s+" upon "+this.getTokenName(i)),s=this.addDFAState(e,s),i<-1||i>this.atn.maxTokenType||(S.debug&&console.log(`DFA=
|
|
11
|
+
`+e.toString(this.parser!=null?this.parser.vocabulary:ye.EMPTY_VOCABULARY)),t.edges[i+1]=s),s}addDFAState(e,t){if(t===Ae.ERROR)return t;let i=e.getState(t);return i!==null?i:(t.configs.readOnly||(t.configs.optimizeConfigs(this),t.configs.setReadonly(!0)),S.traceATNSimulator&&console.log("addDFAState new "+t),e.addState(t),t)}reportAttemptingFullContext(e,t,i,s,a){if(S.debug||S.retryDebug){let u=new I(s,a+1);console.log("reportAttemptingFullContext decision="+e.decision+":"+i+", input="+this.parser.tokenStream.getTextFromInterval(u))}this.parser.errorListenerDispatch.reportAttemptingFullContext(this.parser,e,s,a,t,i)}reportContextSensitivity(e,t,i,s,a){if(S.debug||S.retryDebug){let u=new I(s,a+1);console.log("reportContextSensitivity decision="+e.decision+":"+i+", input="+this.parser.tokenStream.getTextFromInterval(u))}this.parser.errorListenerDispatch.reportContextSensitivity(this.parser,e,s,a,t,i)}reportAmbiguity(e,t,i,s,a,u,c){if(S.debug||S.retryDebug){let h=new I(i,s+1);console.log("reportAmbiguity "+u+":"+c+", input="+this.parser.tokenStream.getTextFromInterval(h))}this.parser.errorListenerDispatch.reportAmbiguity(this.parser,e,i,s,a,u,c)}},pt=class{static{p(this,"PredictionContextCache")}cache=new Fe(ut.instance);add(r){if(r===j.instance)return r;let e=this.cache.get(r);return e||(this.cache.set(r,r),r)}get(r){return this.cache.get(r)}get length(){return this.cache.size}},yn=class extends kr{static{p(this,"ProfilingATNSimulator")}decisions;numDecisions=0;currentDecision=0;currentState;conflictingAltResolvedBySLL;sllStopIndex=0;llStopIndex=0;constructor(r){let e=r.interpreter.sharedContextCache;if(super(r,r.interpreter.atn,r.interpreter.decisionToDFA,e),e){this.numDecisions=this.atn.decisionToState.length,this.decisions=new Array(this.numDecisions);for(let t=0;t<this.numDecisions;t++)this.decisions[t]=new pc(t)}}adaptivePredict(r,e,t){try{this.sllStopIndex=-1,this.llStopIndex=-1,this.currentDecision=e;let i=performance.now(),s=super.adaptivePredict(r,e,t),a=performance.now();this.decisions[e].timeInPrediction+=a-i,this.decisions[e].invocations++;let u=this.sllStopIndex-this.predictionState.startIndex+1;if(this.decisions[e].sllTotalLook+=u,this.decisions[e].sllMinLook=this.decisions[e].sllMinLook===0?u:Math.min(this.decisions[e].sllMinLook,u),u>this.decisions[e].sllMaxLook&&(this.decisions[e].sllMaxLook=u,this.decisions[e].sllMaxLookEvent={decision:e,configs:null,predictedAlt:s,input:r,startIndex:this.predictionState.startIndex,stopIndex:this.sllStopIndex,fullCtx:!1}),this.llStopIndex>=0){let c=this.llStopIndex-this.predictionState.startIndex+1;this.decisions[e].llTotalLook+=c,this.decisions[e].llMinLook=this.decisions[e].llMinLook===0?c:Math.min(this.decisions[e].llMinLook,c),c>this.decisions[e].llMaxLook&&(this.decisions[e].llMaxLook=c,this.decisions[e].llMaxLookEvent={decision:e,configs:null,predictedAlt:s,input:r,startIndex:this.predictionState.startIndex,stopIndex:this.llStopIndex,fullCtx:!0})}return s}finally{this.currentDecision=-1}}getExistingTargetState(r,e){this.sllStopIndex=this.predictionState.input.index;let t=super.getExistingTargetState(r,e);return t!==void 0&&(this.decisions[this.currentDecision].sllDFATransitions++,t===Ae.ERROR&&this.decisions[this.currentDecision].errors.push({decision:this.currentDecision,configs:r.configs,input:this.predictionState.input,startIndex:this.predictionState.startIndex,stopIndex:this.sllStopIndex,fullCtx:!1})),this.currentState=t,t}computeTargetState(r,e,t){let i=super.computeTargetState(r,e,t);return this.currentState=i,i}computeReachSet(r,e,t){t&&this.predictionState?.input&&(this.llStopIndex=this.predictionState.input.index);let i=super.computeReachSet(r,e,t);return this.predictionState?.input&&(t?(this.decisions[this.currentDecision].llATNTransitions++,i===null&&this.decisions[this.currentDecision].errors.push({decision:this.currentDecision,configs:r,input:this.predictionState.input,startIndex:this.predictionState.startIndex,stopIndex:this.sllStopIndex,fullCtx:!0})):(this.decisions[this.currentDecision].sllATNTransitions++,i===null&&this.decisions[this.currentDecision].errors.push({decision:this.currentDecision,configs:r,input:this.predictionState.input,startIndex:this.predictionState.startIndex,stopIndex:this.sllStopIndex,fullCtx:!1}))),i}reportAttemptingFullContext(r,e,t,i,s){e!==null?this.conflictingAltResolvedBySLL=e.nextSetBit(0):this.conflictingAltResolvedBySLL=t.getAlts().nextSetBit(0),this.decisions[this.currentDecision].llFallback++,e&&super.reportAttemptingFullContext(r,e,t,i,s)}reportContextSensitivity(r,e,t,i,s){e!==this.conflictingAltResolvedBySLL&&this.predictionState.input&&this.decisions[this.currentDecision].contextSensitivities.push({decision:this.currentDecision,configs:t,input:this.predictionState.input,startIndex:i,stopIndex:s,fullCtx:!0}),super.reportContextSensitivity(r,e,t,i,s)}reportAmbiguity(r,e,t,i,s,a,u){let c;a?c=a.nextSetBit(0):c=u.getAlts().nextSetBit(0),this.predictionState?.input&&(u.fullCtx&&c!==this.conflictingAltResolvedBySLL&&this.decisions[this.currentDecision].contextSensitivities.push({decision:this.currentDecision,configs:u,input:this.predictionState.input,startIndex:t,stopIndex:i,fullCtx:!0}),this.decisions[this.currentDecision].ambiguities.push({ambigAlts:a,decision:this.currentDecision,configs:u,input:this.predictionState.input,startIndex:t,stopIndex:i,fullCtx:u.fullCtx})),super.reportAmbiguity(r,e,t,i,s,a,u)}getDecisionInfo(){return this.decisions}getCurrentState(){return this.currentState}},B1;(r=>{r.toString=p(e=>`(${e.pred}, ${e.alt})`,"toString")})(B1||(B1={}));var Ju=class extends Error{static{p(this,"ParseCancellationException")}constructor(r){super(),this.cause=r}},lh=class{static{p(this,"InterpreterDataReader")}static parseInterpreterData(r){let e=[],t=[],i=[],s=[],a=[],u=r.split(`
|
|
12
|
+
`),c=0,h=u[c++];if(h!=="token literal names:")throw new Error("Unexpected data entry");do{if(h=u[c++],h.length===0)break;s.push(h==="null"?null:h)}while(!0);if(h=u[c++],h!=="token symbolic names:")throw new Error("Unexpected data entry");do{if(h=u[c++],h.length===0)break;a.push(h==="null"?null:h)}while(!0);if(h=u[c++],h!=="rule names:")throw new Error("Unexpected data entry");do{if(h=u[c++],h.length===0)break;e.push(h)}while(!0);if(h=u[c++],h==="channel names:"){do{if(h=u[c++],h.length===0)break;t.push(h)}while(!0);if(h=u[c++],h!=="mode names:")throw new Error("Unexpected data entry");do{if(h=u[c++],h.length===0)break;i.push(h)}while(!0)}if(h=u[c++],h!=="atn:")throw new Error("Unexpected data entry");h=u[c++];let d=h.split(","),x,R=[];for(let N=0;N<d.length;++N){let se=d[N];se.startsWith("[")?x=Number(se.substring(1).trim()):se.endsWith("]")?x=Number(se.substring(0,se.length-1).trim()):x=Number(se.trim()),R[N]=x}return{atn:new Ye().deserialize(R),vocabulary:new ye(s,a,[]),ruleNames:e,channels:t.length>0?t:void 0,modes:i.length>0?i:void 0}}},oh=class{static{p(this,"AbstractParseTreeVisitor")}visit(r){return r.accept(this)}visitChildren(r){let e=this.defaultResult(),t=r.getChildCount();for(let i=0;i<t&&this.shouldVisitNextChild(r,e);i++){let s=r.getChild(i);if(s){let a=s.accept(this);e=this.aggregateResult(e,a)}}return e}visitTerminal(r){return this.defaultResult()}visitErrorNode(r){return this.defaultResult()}defaultResult(){return null}shouldVisitNextChild(r,e){return!0}aggregateResult(r,e){return e}},uh=class S0{static{p(this,"ParseTreeWalker")}static DEFAULT=new S0;walk(e,t){if(t instanceof Or)e.visitErrorNode(t);else if(t instanceof Ee)e.visitTerminal(t);else{let s=t;this.enterRule(e,s);for(let a=0;a<t.getChildCount();a++)this.walk(e,t.getChild(a));this.exitRule(e,s)}}enterRule(e,t){let i=t.ruleContext;e.enterEveryRule(i),i.enterRule(e)}exitRule(e,t){let i=t.ruleContext;i.exitRule(e),e.exitEveryRule(i)}},ct;(r=>{r.fromString=p(e=>new Ec(e),"fromString")})(ct||(ct={}));var Ec=class{static{p(this,"CharStreamImpl")}name="";index=0;data;constructor(r){let e=[];for(let t of r)e.push(t.codePointAt(0));this.data=new Uint32Array(e)}reset(){this.index=0}consume(){if(this.index>=this.data.length)throw new Error("cannot consume EOF");this.index+=1}LA(r){if(r===0)return 0;r<0&&(r+=1);let e=this.index+r-1;return e<0||e>=this.data.length?b.EOF:this.data[e]}mark(){return-1}release(r){}seek(r){if(r<=this.index){this.index=r;return}this.index=Math.min(r,this.data.length)}getTextFromRange(r,e){return e=e??this.data.length-1,e>=this.data.length&&(e=this.data.length-1),r>=this.data.length?"":this.stringFromRange(r,e+1)}getTextFromInterval(r){let e=r.start,t=r.stop;return t>=this.data.length&&(t=this.data.length-1),e>=this.data.length?"":this.stringFromRange(e,t+1)}toString(){return this.stringFromRange(0)}get size(){return this.data.length}getSourceName(){return this.name?this.name:Tn.UNKNOWN_SOURCE_NAME}stringFromRange(r,e){let t=this.data.slice(r,e),i="";return t.forEach(s=>{i+=String.fromCodePoint(s)}),i}},P0=p(r=>r.setText!==void 0,"isWritableToken"),yc=class{static{p(this,"BufferedTokenStream")}tokenSource;tokens=[];p=-1;fetchedEOF=!1;constructor(r){this.tokenSource=r}mark(){return 0}release(r){}reset(){this.seek(0)}seek(r){this.lazyInit(),this.p=this.adjustSeekIndex(r)}get size(){return this.tokens.length}get index(){return this.p}get(r){return this.lazyInit(),this.tokens[r]}consume(){let r=!1;if(this.p>=0?this.fetchedEOF?r=this.p<this.tokens.length-1:r=this.p<this.tokens.length:r=!1,!r&&this.LA(1)===b.EOF)throw new Error("cannot consume EOF");this.sync(this.p+1)&&(this.p=this.adjustSeekIndex(this.p+1))}sync(r){let e=r-this.tokens.length+1;return e>0?this.fetch(e)>=e:!0}fetch(r){if(this.fetchedEOF)return 0;for(let e=0;e<r;e++){let t=this.tokenSource.nextToken();if(P0(t)&&(t.tokenIndex=this.tokens.length),this.tokens.push(t),t.type===b.EOF)return this.fetchedEOF=!0,e+1}return r}getTokens(r,e,t){if(this.lazyInit(),r===void 0&&e===void 0)return this.tokens;if(r??=0,e===void 0&&(e=this.tokens.length-1),r<0||e>=this.tokens.length||e<0||r>=this.tokens.length)throw new RangeError("start "+r+" or stop "+e+" not in 0.."+(this.tokens.length-1));if(r>e)return[];if(t===void 0)return this.tokens.slice(r,e+1);let i=[];e>=this.tokens.length&&(e=this.tokens.length-1);for(let s=r;s<e;s++){let a=this.tokens[s];if(a.type===b.EOF){i.push(a);break}t.has(a.type)&&i.push(a)}return i}LA(r){return this.LT(r)?.type??b.INVALID_TYPE}LB(r){return this.p-r<0?null:this.tokens[this.p-r]}LT(r){if(this.lazyInit(),r===0)return null;if(r<0)return this.LB(-r);let e=this.p+r-1;return this.sync(e),e>=this.tokens.length?this.tokens[this.tokens.length-1]:this.tokens[e]}adjustSeekIndex(r){return r}lazyInit(){this.p===-1&&this.setup()}setup(){this.sync(0),this.p=this.adjustSeekIndex(0)}setTokenSource(r){this.tokenSource=r,this.tokens=[],this.p=-1,this.fetchedEOF=!1}nextTokenOnChannel(r,e){if(this.sync(r),r>=this.tokens.length)return-1;let t=this.tokens[r];for(;t.channel!==e;){if(t.type===b.EOF)return-1;r+=1,this.sync(r),t=this.tokens[r]}return r}previousTokenOnChannel(r,e){if(r>=this.tokens.length)return this.tokens.length-1;for(;r>=0;){let t=this.tokens[r];if(t.type===b.EOF||t.channel===e)return r;--r}return r}getHiddenTokensToRight(r,e){if(e===void 0&&(e=-1),this.lazyInit(),r<0||r>=this.tokens.length)throw new Error(`${r} not in 0..${this.tokens.length-1}`);let t=this.nextTokenOnChannel(r+1,Ne.DEFAULT_TOKEN_CHANNEL),i=r+1,s=t===-1?this.tokens.length-1:t;return this.filterForChannel(i,s,e)}getHiddenTokensToLeft(r,e){if(e===void 0&&(e=-1),this.lazyInit(),r<0||r>=this.tokens.length)throw new Error(`${r} not in 0..${this.tokens.length-1}`);let t=this.previousTokenOnChannel(r-1,Ne.DEFAULT_TOKEN_CHANNEL);if(t===r-1)return;let i=t+1,s=r-1;return this.filterForChannel(i,s,e)}filterForChannel(r,e,t){let i=[];for(let s=r;s<e+1;s++){let a=this.tokens[s];t===-1?a.channel!==Ne.DEFAULT_TOKEN_CHANNEL&&i.push(a):a.channel===t&&i.push(a)}if(i.length!==0)return i}getSourceName(){return this.tokenSource.sourceName}getText(){return this.getTextFromInterval(I.of(0,this.size-1))}getTextFromInterval(r){let e=r.start,t=r.stop;if(e<0||t<0)return"";this.sync(t),t>=this.tokens.length&&(t=this.tokens.length-1);let i="";for(let s=e;s<=t;++s){let a=this.tokens[s];if(a.type===b.EOF)break;i+=a.text}return i}getTextFromContext(r){return this.getTextFromInterval(r.getSourceInterval())}getTextFromRange(r,e){return r!==null&&e!==null?this.getTextFromInterval(I.of(r.tokenIndex,e.tokenIndex)):""}fill(){for(this.lazyInit();this.fetch(1e3)===1e3;);}setLine(r){this.tokenSource.line=r}setColumn(r){this.tokenSource.column=r}},Dr=class extends yc{static{p(this,"CommonTokenStream")}channel=b.DEFAULT_CHANNEL;constructor(r,e){super(r),this.channel=e??b.DEFAULT_CHANNEL}adjustSeekIndex(r){return this.nextTokenOnChannel(r,this.channel)}LB(r){if(r===0||this.index-r<0)return null;let e=this.index,t=1;for(;t<=r;)e=this.previousTokenOnChannel(e-1,this.channel),t+=1;return e<0?null:this.tokens[e]}LT(r){if(this.lazyInit(),r===0)return null;if(r<0)return this.LB(-r);let e=this.index,t=1;for(;t<r;)this.sync(e+1)&&(e=this.nextTokenOnChannel(e+1,this.channel)),t+=1;return this.tokens[e]}getNumberOfOnChannelTokens(){let r=0;this.fill();for(let e of this.tokens)if(e.channel===this.channel&&(r+=1),e.type===b.EOF)break;return r}},fe=class G extends Ne{static{p(this,"XPathLexer")}static TOKEN_REF=1;static RULE_REF=2;static ANYWHERE=3;static ROOT=4;static WILDCARD=5;static BANG=6;static ID=7;static STRING=8;static channelNames=["DEFAULT_TOKEN_CHANNEL","HIDDEN"];static literalNames=[null,null,null,"'//'","'/'","'*'","'!'"];static symbolicNames=[null,"TOKEN_REF","RULE_REF","ANYWHERE","ROOT","WILDCARD","BANG","ID","STRING"];static modeNames=["DEFAULT_MODE"];static ruleNames=["ANYWHERE","ROOT","WILDCARD","BANG","ID","NameChar","NameStartChar","STRING"];constructor(e){super(e),this.interpreter=new Kt(this,G._ATN,G.decisionsToDFA,new pt)}get grammarFileName(){return"XPathLexer.g4"}get literalNames(){return G.literalNames}get symbolicNames(){return G.symbolicNames}get ruleNames(){return G.ruleNames}get serializedATN(){return G._serializedATN}get channelNames(){return G.channelNames}get modeNames(){return G.modeNames}action(e,t,i){t===4&&this.ID_action(e,i)}ID_action(e,t){if(t===0){let i=this.text;i.charAt(0)===i.charAt(0).toUpperCase()?this.type=G.TOKEN_REF:this.type=G.RULE_REF}}static _serializedATN=[4,0,8,48,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,1,0,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,5,4,29,8,4,10,4,12,4,32,9,4,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,5,7,42,8,7,10,7,12,7,45,9,7,1,7,1,7,1,43,0,8,1,3,3,4,5,5,7,6,9,7,11,0,13,0,15,8,1,0,2,784,0,0,8,14,27,48,57,65,90,95,95,97,122,127,159,170,170,173,173,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,895,895,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1327,1329,1366,1369,1369,1376,1416,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1519,1522,1536,1541,1552,1562,1564,1564,1568,1641,1646,1747,1749,1757,1759,1768,1770,1788,1791,1791,1807,1866,1869,1969,1984,2037,2042,2042,2045,2045,2048,2093,2112,2139,2144,2154,2160,2183,2185,2190,2192,2193,2200,2403,2406,2415,2417,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2556,2556,2558,2558,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2809,2815,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2901,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3072,3084,3086,3088,3090,3112,3114,3129,3132,3140,3142,3144,3146,3149,3157,3158,3160,3162,3165,3165,3168,3171,3174,3183,3200,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3293,3294,3296,3299,3302,3311,3313,3315,3328,3340,3342,3344,3346,3396,3398,3400,3402,3406,3412,3415,3423,3427,3430,3439,3450,3455,3457,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3558,3567,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3773,3776,3780,3782,3782,3784,3790,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,5909,5919,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6169,6176,6264,6272,6314,6320,6389,6400,6430,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6832,6845,6847,6862,6912,6988,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7296,7304,7312,7354,7357,7359,7376,7378,7380,7418,7424,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8203,8207,8234,8238,8255,8256,8276,8276,8288,8292,8294,8303,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12591,12593,12686,12704,12735,12784,12799,13312,19903,19968,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42737,42775,42783,42786,42888,42891,42954,42960,42961,42963,42963,42965,42969,42994,43047,43052,43052,43072,43123,43136,43205,43216,43225,43232,43255,43259,43259,43261,43309,43312,43347,43360,43388,43392,43456,43471,43481,43488,43518,43520,43574,43584,43597,43600,43609,43616,43638,43642,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868,43881,43888,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65071,65075,65076,65101,65103,65136,65140,65142,65276,65279,65279,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500,65529,65531,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,66045,66045,66176,66204,66208,66256,66272,66272,66304,66335,66349,66378,66384,66426,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,66720,66729,66736,66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954,66956,66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004,67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,67514,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897,67968,68023,68030,68031,68096,68099,68101,68102,68108,68115,68117,68119,68121,68149,68152,68154,68159,68159,68192,68220,68224,68252,68288,68295,68297,68326,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,68850,68864,68903,68912,68921,69248,69289,69291,69292,69296,69297,69373,69404,69415,69415,69424,69456,69488,69509,69552,69572,69600,69622,69632,69702,69734,69749,69759,69818,69821,69821,69826,69826,69837,69837,69840,69864,69872,69881,69888,69940,69942,69951,69956,69959,69968,70003,70006,70006,70016,70084,70089,70092,70094,70106,70108,70108,70144,70161,70163,70199,70206,70209,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,70378,70384,70393,70400,70403,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70459,70468,70471,70472,70475,70477,70480,70480,70487,70487,70493,70499,70502,70508,70512,70516,70656,70730,70736,70745,70750,70753,70784,70853,70855,70855,70864,70873,71040,71093,71096,71104,71128,71133,71168,71232,71236,71236,71248,71257,71296,71352,71360,71369,71424,71450,71453,71467,71472,71481,71488,71494,71680,71738,71840,71913,71935,71942,71945,71945,71948,71955,71957,71958,71960,71989,71991,71992,71995,72003,72016,72025,72096,72103,72106,72151,72154,72161,72163,72164,72192,72254,72263,72263,72272,72345,72349,72349,72368,72440,72704,72712,72714,72758,72760,72768,72784,72793,72818,72847,72850,72871,72873,72886,72960,72966,72968,72969,72971,73014,73018,73018,73020,73021,73023,73031,73040,73049,73056,73061,73063,73064,73066,73102,73104,73105,73107,73112,73120,73129,73440,73462,73472,73488,73490,73530,73534,73538,73552,73561,73648,73648,73728,74649,74752,74862,74880,75075,77712,77808,77824,78933,82944,83526,92160,92728,92736,92766,92768,92777,92784,92862,92864,92873,92880,92909,92912,92916,92928,92982,92992,92995,93008,93017,93027,93047,93053,93071,93760,93823,93952,94026,94031,94087,94095,94111,94176,94177,94179,94180,94192,94193,94208,100343,100352,101589,101632,101640,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,113817,113821,113822,113824,113827,118528,118573,118576,118598,119141,119145,119149,119170,119173,119179,119210,119213,119362,119364,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,120782,120831,121344,121398,121403,121452,121461,121461,121476,121476,121499,121503,121505,121519,122624,122654,122661,122666,122880,122886,122888,122904,122907,122913,122915,122916,122918,122922,122928,122989,123023,123023,123136,123180,123184,123197,123200,123209,123214,123214,123536,123566,123584,123641,124112,124153,124896,124902,124904,124907,124909,124910,124912,124926,124928,125124,125136,125142,125184,125259,125264,125273,126464,126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,126514,126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,126564,126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,126590,126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,130032,130041,131072,173791,173824,177977,177984,178205,178208,183969,183984,191456,194560,195101,196608,201546,201552,205743,917505,917505,917536,917631,917760,917999,662,0,65,90,97,122,170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,895,895,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1327,1329,1366,1369,1369,1376,1416,1488,1514,1519,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2144,2154,2160,2183,2185,2190,2208,2249,2308,2361,2365,2365,2384,2384,2392,2401,2417,2432,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2556,2556,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2809,2809,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3129,3133,3133,3160,3162,3165,3165,3168,3169,3200,3200,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3293,3294,3296,3297,3313,3314,3332,3340,3342,3344,3346,3386,3389,3389,3406,3406,3412,3414,3423,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,5905,5919,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6264,6272,6276,6279,6312,6314,6314,6320,6389,6400,6430,6480,6509,6512,6516,6528,6571,6576,6601,6656,6678,6688,6740,6823,6823,6917,6963,6981,6988,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7296,7304,7312,7354,7357,7359,7401,7404,7406,7411,7413,7414,7418,7418,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12591,12593,12686,12704,12735,12784,12799,13312,19903,19968,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42653,42656,42735,42775,42783,42786,42888,42891,42954,42960,42961,42963,42963,42965,42969,42994,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43261,43262,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43488,43492,43494,43503,43514,43518,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43646,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868,43881,43888,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,66176,66204,66208,66256,66304,66335,66349,66378,66384,66421,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,66736,66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954,66956,66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004,67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,67514,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897,67968,68023,68030,68031,68096,68096,68112,68115,68117,68119,68121,68149,68192,68220,68224,68252,68288,68295,68297,68324,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,68850,68864,68899,69248,69289,69296,69297,69376,69404,69415,69415,69424,69445,69488,69505,69552,69572,69600,69622,69635,69687,69745,69746,69749,69749,69763,69807,69840,69864,69891,69926,69956,69956,69959,69959,69968,70002,70006,70006,70019,70066,70081,70084,70106,70106,70108,70108,70144,70161,70163,70187,70207,70208,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,70366,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70461,70461,70480,70480,70493,70497,70656,70708,70727,70730,70751,70753,70784,70831,70852,70853,70855,70855,71040,71086,71128,71131,71168,71215,71236,71236,71296,71338,71352,71352,71424,71450,71488,71494,71680,71723,71840,71903,71935,71942,71945,71945,71948,71955,71957,71958,71960,71983,71999,71999,72001,72001,72096,72103,72106,72144,72161,72161,72163,72163,72192,72192,72203,72242,72250,72250,72272,72272,72284,72329,72349,72349,72368,72440,72704,72712,72714,72750,72768,72768,72818,72847,72960,72966,72968,72969,72971,73008,73030,73030,73056,73061,73063,73064,73066,73097,73112,73112,73440,73458,73474,73474,73476,73488,73490,73523,73648,73648,73728,74649,74752,74862,74880,75075,77712,77808,77824,78895,78913,78918,82944,83526,92160,92728,92736,92766,92784,92862,92880,92909,92928,92975,92992,92995,93027,93047,93053,93071,93760,93823,93952,94026,94032,94032,94099,94111,94176,94177,94179,94179,94208,100343,100352,101589,101632,101640,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,113817,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,122624,122654,122661,122666,122928,122989,123136,123180,123191,123197,123214,123214,123536,123565,123584,123627,124112,124139,124896,124902,124904,124907,124909,124910,124912,124926,124928,125124,125184,125251,125259,125259,126464,126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,126514,126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,126564,126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,126590,126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,131072,173791,173824,177977,177984,178205,178208,183969,183984,191456,194560,195101,196608,201546,201552,205743,47,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,15,1,0,0,0,1,17,1,0,0,0,3,20,1,0,0,0,5,22,1,0,0,0,7,24,1,0,0,0,9,26,1,0,0,0,11,35,1,0,0,0,13,37,1,0,0,0,15,39,1,0,0,0,17,18,5,47,0,0,18,19,5,47,0,0,19,2,1,0,0,0,20,21,5,47,0,0,21,4,1,0,0,0,22,23,5,42,0,0,23,6,1,0,0,0,24,25,5,33,0,0,25,8,1,0,0,0,26,30,3,13,6,0,27,29,3,11,5,0,28,27,1,0,0,0,29,32,1,0,0,0,30,28,1,0,0,0,30,31,1,0,0,0,31,33,1,0,0,0,32,30,1,0,0,0,33,34,6,4,0,0,34,10,1,0,0,0,35,36,7,0,0,0,36,12,1,0,0,0,37,38,7,1,0,0,38,14,1,0,0,0,39,43,5,39,0,0,40,42,9,0,0,0,41,40,1,0,0,0,42,45,1,0,0,0,43,44,1,0,0,0,43,41,1,0,0,0,44,46,1,0,0,0,45,43,1,0,0,0,46,47,5,39,0,0,47,16,1,0,0,0,3,0,30,43,1,1,4,0];static __ATN;static get _ATN(){return G.__ATN||(G.__ATN=new Ye().deserialize(G._serializedATN)),G.__ATN}static vocabulary=new ye(G.literalNames,G.symbolicNames,[]);get vocabulary(){return G.vocabulary}static decisionsToDFA=G._ATN.decisionToState.map((e,t)=>new He(e,t))},vc=class extends jt{static{p(this,"XPathLexerErrorListener")}syntaxError(r,e,t,i,s,a){}},Qt=class{static{p(this,"XPathElement")}invert;nodeName;constructor(r){this.nodeName=r,this.invert=!1}toString(){return"XPathElement["+(this.invert?"!":"")+this.nodeName+"]"}},Lc=class extends Qt{static{p(this,"XPathRuleAnywhereElement")}ruleIndex;constructor(r,e){super(r),this.ruleIndex=e}evaluate(r){return Qe.findAllRuleNodes(r,this.ruleIndex)}toString(){return"XPathRuleAnywhereElement["+(this.invert?"!":"")+this.nodeName+"]"}},Sc=class extends Qt{static{p(this,"XPathRuleElement")}ruleIndex;constructor(r,e){super(r),this.ruleIndex=e}evaluate(r){let e=[];for(let t of Qe.getChildren(r))t instanceof l&&(t.ruleIndex===this.ruleIndex&&!this.invert||t.ruleIndex!==this.ruleIndex&&this.invert)&&e.push(t);return e}toString(){return"XPathRuleElement["+(this.invert?"!":"")+this.nodeName+"]"}},Pc=class extends Qt{static{p(this,"XPathTokenAnywhereElement")}tokenType;constructor(r,e){super(r),this.tokenType=e}evaluate(r){return Qe.findAllTokenNodes(r,this.tokenType)}toString(){return"XPathTokenAnywhereElement["+(this.invert?"!":"")+this.nodeName+"]"}},Tc=class extends Qt{static{p(this,"XPathTokenElement")}tokenType;constructor(r,e){super(r),this.tokenType=e}evaluate(r){let e=[];for(let t of Qe.getChildren(r))t instanceof Ee&&t.symbol&&(t.symbol.type===this.tokenType&&!this.invert||t.symbol.type!==this.tokenType&&this.invert)&&e.push(t);return e}toString(){return"XPathTokenElement["+(this.invert?"!":"")+this.nodeName+"]"}},Ac=class extends Qt{static{p(this,"XPathWildcardAnywhereElement")}constructor(){super(r1.WILDCARD)}evaluate(r){return this.invert?[]:Qe.descendants(r)}toString(){return"XPathWildcardAnywhereElement["+(this.invert?"!":"")+this.nodeName+"]"}},Mc=class extends Qt{static{p(this,"XPathWildcardElement")}constructor(){super(r1.WILDCARD)}evaluate(r){let e=[];if(this.invert)return e;for(let t of Qe.getChildren(r))e.push(t);return e}toString(){return"XPathWildcardElement["+(this.invert?"!":"")+this.nodeName+"]"}},r1=class T0{static{p(this,"XPath")}static WILDCARD="*";static NOT="!";path;elements;parser;constructor(e,t){this.parser=e,this.path=t,this.elements=this.split(t)}static findAll(e,t,i){return new T0(i,t).evaluate(e)}split(e){let t=new fe(ct.fromString(e));t.recover=h=>{throw h},t.removeErrorListeners(),t.addErrorListener(new vc);let i=new Dr(t);try{i.fill()}catch(h){if(h instanceof Mn){let x="Invalid tokens or characters at index "+t.column+" in path '"+e+"' -- "+h.message;throw new RangeError(x)}throw h}let s=i.getTokens(),a=[],u=s.length,c=0;e:for(;c<u;){let h=s[c],d;switch(h.type){case fe.ROOT:case fe.ANYWHERE:let x=h.type===fe.ANYWHERE;c++,d=s[c];let R=d.type===fe.BANG;R&&(c++,d=s[c]);let y=this.getXPathElement(d,x);y.invert=R,a.push(y),c++;break;case fe.TOKEN_REF:case fe.RULE_REF:case fe.WILDCARD:a.push(this.getXPathElement(h,!1)),++c;break;case b.EOF:break e;default:throw new Error("Unknown path element "+h)}}return a}evaluate(e){let t=new l(null);t.addChild(e);let i=new Set([t]),s=0;for(;s<this.elements.length;){let a=new Set;for(let u of i)u.getChildCount()>0&&this.elements[s].evaluate(u).forEach(h=>{a.add(h)},a);s++,i=a}return i}getXPathElement(e,t){if(e.type===b.EOF)throw new Error("Missing path element at end of path");let i=e.text;if(i==null)throw new Error("Expected wordToken to have text content.");let s=this.parser.getTokenType(i),a=this.parser.getRuleIndex(i);switch(e.type){case fe.WILDCARD:return t?new Ac:new Mc;case fe.TOKEN_REF:case fe.STRING:if(s===b.INVALID_TYPE)throw new Error(i+" at index "+e.start+" isn't a valid token name");return t?new Pc(i,s):new Tc(i,s);default:if(a===-1)throw new Error(i+" at index "+e.start+" isn't a valid rule name");return t?new Lc(i,a):new Sc(i,a)}}},A0=class{static{p(this,"Chunk")}},Nc=class{static{p(this,"ParseTreeMatch")}tree;pattern;labels;mismatchedNode;constructor(r,e,t,i){this.tree=r,this.pattern=e,this.labels=t,this.mismatchedNode=i}get(r){let e=this.labels.get(r);return!e||e.length===0?null:e[e.length-1]}getAll(r){return this.labels.get(r)??[]}getLabels(){return this.labels}getMismatchedNode(){return this.mismatchedNode}succeeded(){return!this.mismatchedNode}getPattern(){return this.pattern}getTree(){return this.tree}toString(){return`Match ${this.succeeded()?"succeeded":"failed"}; found ${this.getLabels().size} labels`}},Uc=class{static{p(this,"ParseTreePattern")}patternRuleIndex;pattern;patternTree;matcher;constructor(r,e,t,i){this.matcher=r,this.patternRuleIndex=t,this.pattern=e,this.patternTree=i}match(r){return this.matcher.match(r,this)}matches(r){return this.matcher.match(r,this).succeeded()}findAll(r,e){let t=r1.findAll(r,e,this.matcher.getParser()),i=new Array;for(let s of t){let a=this.match(s);a.succeeded()&&i.push(a)}return i}getMatcher(){return this.matcher}getPattern(){return this.pattern}getPatternRuleIndex(){return this.patternRuleIndex}getPatternTree(){return this.patternTree}},Ir=class extends o{static{p(this,"InputMismatchException")}constructor(r){super({message:"",recognizer:r,input:r.inputStream,ctx:r.context}),this.offendingToken=r.getCurrentToken()}},wr=class extends o{static{p(this,"FailedPredicateException")}ruleIndex=0;predicateIndex=0;predicate;constructor(r,e,t=null){super({message:Ic(e??"no predicate",t??null),recognizer:r,input:r.inputStream,ctx:r.context});let s=r.atn.states[r.state].transitions[0];s instanceof s0?(this.ruleIndex=s.ruleIndex,this.predicateIndex=s.predIndex):(this.ruleIndex=0,this.predicateIndex=0),this.predicate=e,this.offendingToken=r.getCurrentToken()}},Ic=p((r,e)=>e!==null?e:"failed predicate: {"+r+"}?","formatMessage"),Fr=class{static{p(this,"DefaultErrorStrategy")}errorRecoveryMode=!1;lastErrorIndex=-1;lastErrorStates=new Ce;nextTokensContext=null;nextTokenState=0;reset(r){this.endErrorCondition(r)}beginErrorCondition(r){this.errorRecoveryMode=!0}inErrorRecoveryMode(r){return this.errorRecoveryMode}endErrorCondition(r){this.errorRecoveryMode=!1,this.lastErrorStates=new Ce,this.lastErrorIndex=-1}reportMatch(r){this.endErrorCondition(r)}reportError(r,e){this.inErrorRecoveryMode(r)||(this.beginErrorCondition(r),e instanceof g?this.reportNoViableAlternative(r,e):e instanceof Ir?this.reportInputMismatch(r,e):e instanceof wr?this.reportFailedPredicate(r,e):r.notifyErrorListeners(e.message,e.offendingToken,e))}recover(r,e){this.lastErrorIndex===r.inputStream?.index&&this.lastErrorStates.contains(r.state)&&r.consume(),this.lastErrorIndex=r.inputStream?.index??0,this.lastErrorStates.addOne(r.state);let t=this.getErrorRecoverySet(r);this.consumeUntil(r,t)}sync(r){if(this.inErrorRecoveryMode(r))return;let e=r.atn.states[r.state],t=r.tokenStream.LA(1),i=r.atn.nextTokens(e);if(i.contains(t)){this.nextTokensContext=null,this.nextTokenState=v.INVALID_STATE_NUMBER;return}if(i.contains(b.EPSILON)){this.nextTokensContext===null&&(this.nextTokensContext=r.context,this.nextTokenState=r.state);return}switch(e.constructor.stateType){case v.BLOCK_START:case v.STAR_BLOCK_START:case v.PLUS_BLOCK_START:case v.STAR_LOOP_ENTRY:{if(this.singleTokenDeletion(r)!==null)return;throw new Ir(r)}case v.PLUS_LOOP_BACK:case v.STAR_LOOP_BACK:{this.reportUnwantedToken(r);let s=new Ce;s.addSet(r.getExpectedTokens());let a=s.addSet(this.getErrorRecoverySet(r));this.consumeUntil(r,a);break}default:}}reportNoViableAlternative(r,e){if(e.message.length>0){r.notifyErrorListeners(e.message,e.offendingToken,e);return}let t=r.tokenStream,i;t!==null&&e.startToken?e.startToken.type===b.EOF?i="<EOF>":i=t.getTextFromRange(e.startToken,e.offendingToken):i="<unknown input>";let s="no viable alternative at input "+this.escapeWSAndQuote(i);r.notifyErrorListeners(s,e.offendingToken,e)}reportInputMismatch(r,e){if(e.message.length>0){r.notifyErrorListeners(e.message,e.offendingToken,e);return}let t="mismatched input "+this.getTokenErrorDisplay(e.offendingToken)+" expecting "+e.getExpectedTokens().toStringWithVocabulary(r.vocabulary);r.notifyErrorListeners(t,e.offendingToken,e)}reportFailedPredicate(r,e){let i="rule "+r.ruleNames[r.context.ruleIndex]+" "+e.message;r.notifyErrorListeners(i,e.offendingToken,e)}reportUnwantedToken(r){if(this.inErrorRecoveryMode(r))return;this.beginErrorCondition(r);let e=r.getCurrentToken(),t=this.getTokenErrorDisplay(e),i=this.getExpectedTokens(r),s="extraneous input "+t+" expecting "+i.toStringWithVocabulary(r.vocabulary);r.notifyErrorListeners(s,e,null)}reportMissingToken(r){if(this.inErrorRecoveryMode(r))return;this.beginErrorCondition(r);let e=r.getCurrentToken(),i="missing "+this.getExpectedTokens(r).toStringWithVocabulary(r.vocabulary)+" at "+this.getTokenErrorDisplay(e);r.notifyErrorListeners(i,e,null)}recoverInline(r){let e=this.singleTokenDeletion(r);if(e)return r.consume(),e;if(this.singleTokenInsertion(r))return this.getMissingSymbol(r);throw new Ir(r)}singleTokenInsertion(r){let e=r.tokenStream?.LA(1)??-1,t=r.atn,s=t.states[r.state].transitions[0].target;return t.nextTokens(s,r.context??void 0).contains(e)?(this.reportMissingToken(r),!0):!1}singleTokenDeletion(r){let e=r.tokenStream?.LA(2)??-1;if(this.getExpectedTokens(r).contains(e)){this.reportUnwantedToken(r),r.consume();let i=r.getCurrentToken();return this.reportMatch(r),i}return null}getMissingSymbol(r){let e=r.getCurrentToken(),t=this.getExpectedTokens(r),i=b.INVALID_TYPE;t.length!==0&&(i=t.minElement);let s;i===b.EOF?s="<missing EOF>":s="<missing "+r.vocabulary.getDisplayName(i)+">";let a=e,u=r.tokenStream?.LT(-1);return a.type===b.EOF&&u!==null&&(a=u),r.getTokenFactory().create(a.source,i,s,b.DEFAULT_CHANNEL,-1,-1,a.line,a.column)}getExpectedTokens(r){return r.getExpectedTokens()}getTokenErrorDisplay(r){if(r===null)return"<no token>";let e=r.text;return e||(r.type===b.EOF?e="<EOF>":e="<"+r.type+">"),this.escapeWSAndQuote(e)}escapeWSAndQuote(r){return r=r.replace(/\n/g,"\\n"),r=r.replace(/\r/g,"\\r"),r=r.replace(/\t/g,"\\t"),"'"+r+"'"}getErrorRecoverySet(r){let e=r.atn,t=r.context,i=new Ce;for(;t!==null&&t.invokingState>=0;){let a=e.states[t.invokingState].transitions[0],u=e.nextTokens(a.followState);i.addSet(u),t=t.parent}return i.removeOne(b.EPSILON),i}consumeUntil(r,e){let t=r.tokenStream?.LA(1)??-1;for(;t!==b.EOF&&!e.contains(t);)r.consume(),t=r.tokenStream?.LA(1)??-1}},Un=class extends Fr{static{p(this,"BailErrorStrategy")}recover(r,e){throw new Ju(e)}recoverInline(r){let e=new Ir(r);throw new Ju(e)}sync(r){}},Oc=class{static{p(this,"ListTokenSource")}sourceName;tokenFactory=m0.DEFAULT;tokens=[];i=0;eofToken=null;constructor(r,e){this.tokens=r,this.sourceName=e??""}get column(){if(this.i<this.tokens.length)return this.tokens[this.i].column;if(this.eofToken!==null)return this.eofToken.column;if(this.tokens.length>0){let r=this.tokens[this.tokens.length-1],e=r.text;if(e){let t=e.lastIndexOf(`
|
|
13
|
+
`);if(t>=0)return e.length-t-1}return r.column+r.stop-r.start+1}return 0}nextToken(){if(this.i>=this.tokens.length){if(this.eofToken===null){let e=-1;if(this.tokens.length>0){let i=this.tokens[this.tokens.length-1].stop;i!==-1&&(e=i+1)}let t=Math.max(-1,e-1);this.eofToken=this.tokenFactory.create([this,this.inputStream],b.EOF,"EOF",b.DEFAULT_CHANNEL,e,t,this.line,this.column)}return this.eofToken}let r=this.tokens[this.i];return this.i===this.tokens.length-1&&r.type===b.EOF&&(this.eofToken=r),this.i++,r}get line(){if(this.i<this.tokens.length)return this.tokens[this.i].line;if(this.eofToken!==null)return this.eofToken.line;if(this.tokens.length>0){let r=this.tokens[this.tokens.length-1],e=r.line,t=r.text;if(t)for(let i of t)i===`
|
|
14
|
+
`&&e++;return e}return 1}get inputStream(){return this.i<this.tokens.length?this.tokens[this.i].inputStream:this.eofToken!==null?this.eofToken.inputStream:this.tokens.length>0?this.tokens[this.tokens.length-1].inputStream:null}getSourceName(){if(this.sourceName!==null)return this.sourceName;let r=this.inputStream;return r!==null?r.getSourceName():"List"}},wc=class extends l{static{p(this,"InterpreterRuleContext")}#e;constructor(r,e,t){super(e,t),this.#e=r}get ruleIndex(){return this.#e}},kc=class{static{p(this,"TraceListener")}parser;constructor(r){this.parser=r}enterEveryRule(r){console.log("enter "+this.parser.ruleNames[r.ruleIndex]+", LT(1)="+this.parser.inputStream?.LT(1)?.text)}visitTerminal(r){console.log("consume "+r.getSymbol()+" rule "+this.parser.ruleNames[this.parser.context.ruleIndex])}exitEveryRule(r){console.log("exit "+this.parser.ruleNames[r.ruleIndex]+", LT(1)="+this.parser.inputStream?.LT(1)?.text)}visitErrorNode(r){}},i1=class extends f0{static{p(this,"Parser")}printer=null;buildParseTrees=!0;errorHandler=new Fr;context=null;precedenceStack=[];parseListeners=null;syntaxErrors=0;matchedEOF=!1;tracer=null;bypassAltsAtnCache=null;#e;constructor(r){super(),this.precedenceStack.push(0),this.syntaxErrors=0,this.#e=r}reset(r=!0){r&&this.inputStream.seek(0),this.errorHandler.reset(this),this.context=null,this.syntaxErrors=0,this.matchedEOF=!1,this.setTrace(!1),this.precedenceStack=[],this.precedenceStack.push(0),this.interpreter&&this.interpreter.reset()}match(r){let e=this.getCurrentToken();return e.type===r?(r===b.EOF&&(this.matchedEOF=!0),this.errorHandler.reportMatch(this),this.consume()):(e=this.errorHandler.recoverInline(this),this.buildParseTrees&&e.tokenIndex===-1&&this.context.addErrorNode(this.createErrorNode(this.context,e))),e}matchWildcard(){let r=this.getCurrentToken();return r.type>0?(this.errorHandler.reportMatch(this),this.consume()):(r=this.errorHandler.recoverInline(this),this.buildParseTrees&&r.tokenIndex===-1&&this.context.addErrorNode(this.createErrorNode(this.context,r))),r}getParseListeners(){return this.parseListeners??[]}addParseListener(r){if(r===null)throw new Error("listener");this.parseListeners===null&&(this.parseListeners=[]),this.parseListeners.push(r)}removeParseListener(r){if(this.parseListeners!==null&&r!==null){let e=this.parseListeners.indexOf(r);e>=0&&this.parseListeners.splice(e,1),this.parseListeners.length===0&&(this.parseListeners=null)}}removeParseListeners(){this.parseListeners=null}triggerEnterRuleEvent(){if(this.parseListeners!==null){let r=this.context;this.parseListeners.forEach(e=>{e.enterEveryRule(r),r.enterRule(e)})}}triggerExitRuleEvent(){if(this.parseListeners!==null){let r=this.context;this.parseListeners.slice(0).reverse().forEach(e=>{r.exitRule(e),e.exitEveryRule(r)})}}getTokenFactory(){return this.inputStream.tokenSource.tokenFactory}setTokenFactory(r){this.inputStream.tokenSource.tokenFactory=r}compileParseTreePattern(r,e,t){if(!t&&this.tokenStream!==null){let s=this.tokenStream.tokenSource;s instanceof Ne&&(t=s)}if(!t)throw new Error("Parser can't discover a lexer to use");return new Bc(t,this).compile(r,e)}getATNWithBypassAlts(){let r=this.serializedATN;if(r===null)throw new Error("The current parser does not support an ATN with bypass alternatives.");if(this.bypassAltsAtnCache!==null)return this.bypassAltsAtnCache;let e={readOnly:!1,verifyATN:!0,generateRuleBypassTransitions:!0};return this.bypassAltsAtnCache=new Ye(e).deserialize(r),this.bypassAltsAtnCache}get numberOfSyntaxErrors(){return this.syntaxErrors}get inputStream(){return this.#e}set inputStream(r){this.tokenStream=r}get tokenStream(){return this.#e}set tokenStream(r){this.reset(!1),this.#e=r}getCurrentToken(){return this.inputStream.LT(1)}notifyErrorListeners(r,e,t){e=e??null,t=t??null,e===null&&(e=this.getCurrentToken()),this.syntaxErrors+=1;let i=e.line,s=e.column;this.errorListenerDispatch.syntaxError(this,e,i,s,r,t)}consume(){let r=this.getCurrentToken();r.type!==b.EOF&&this.tokenStream.consume();let e=this.parseListeners!==null&&this.parseListeners.length>0;if(this.buildParseTrees||e){let t;this.errorHandler.inErrorRecoveryMode(this)?t=this.context.addErrorNode(this.createErrorNode(this.context,r)):t=this.context.addTokenNode(r),e&&this.parseListeners.forEach(i=>{t instanceof Or?i.visitErrorNode(t):i.visitTerminal(t)})}return r}addContextToParseTree(){this.context?.parent&&this.context.parent.addChild(this.context)}enterRule(r,e,t){this.state=e,this.context=r,this.context.start=this.inputStream.LT(1),this.buildParseTrees&&this.addContextToParseTree(),this.triggerEnterRuleEvent()}exitRule(){this.matchedEOF?this.context.stop=this.inputStream.LT(1):this.context.stop=this.inputStream.LT(-1),this.triggerExitRuleEvent(),this.state=this.context.invokingState,this.context=this.context.parent}enterOuterAlt(r,e){r.setAltNumber(e),this.buildParseTrees&&this.context!==r&&this.context?.parent&&(this.context.parent.removeLastChild(),this.context.parent.addChild(r)),this.context=r}getPrecedence(){return this.precedenceStack.length===0?-1:this.precedenceStack[this.precedenceStack.length-1]}enterRecursionRule(r,e,t,i){this.state=e,this.precedenceStack.push(i),this.context=r,this.context.start=this.inputStream.LT(1),this.triggerEnterRuleEvent()}pushNewRecursionContext(r,e,t){let i=this.context;i.parent=r,i.invokingState=e,i.stop=this.inputStream.LT(-1),this.context=r,this.context.start=i.start,this.buildParseTrees&&this.context.addChild(i),this.triggerEnterRuleEvent()}unrollRecursionContexts(r){this.precedenceStack.pop(),this.context.stop=this.inputStream.LT(-1);let e=this.context,t=this.getParseListeners();if(t!==null&&t.length>0)for(;this.context!==r;)this.triggerExitRuleEvent(),this.context=this.context.parent;else this.context=r;e.parent=r,this.buildParseTrees&&r!==null&&r.addChild(e)}getInvokingContext(r){let e=this.context;for(;e!==null;){if(e.ruleIndex===r)return e;e=e.parent}return null}precpred(r,e){return e>=this.precedenceStack[this.precedenceStack.length-1]}isExpectedToken(r){let e=this.interpreter.atn,t=this.context,i=e.states[this.state],s=e.nextTokens(i);if(s.contains(r))return!0;if(!s.contains(b.EPSILON))return!1;for(;t!==null&&t.invokingState>=0&&s.contains(b.EPSILON);){let u=e.states[t.invokingState].transitions[0];if(s=e.nextTokens(u.followState),s.contains(r))return!0;t=t.parent}return!!(s.contains(b.EPSILON)&&r===b.EOF)}getExpectedTokens(){return this.interpreter.atn.getExpectedTokens(this.state,this.context)}getExpectedTokensWithinCurrentRule(){let r=this.interpreter.atn,e=r.states[this.state];return r.nextTokens(e)}getRuleIndex(r){return this.getRuleIndexMap().get(r)??-1}getRuleInvocationStack(r){r=r??null,r===null&&(r=this.context);let e=[];for(;r!==null;){let t=r.ruleIndex;t<0?e.push("n/a"):e.push(this.ruleNames[t]),r=r.parent}return e}getDFAStrings(){return this.interpreter.decisionToDFA.toString()}dumpDFA(){let r=!1;for(let e of this.interpreter.decisionToDFA)e.length>0&&(r&&console.log(),this.printer&&(this.printer.println("Decision "+e.decision+":"),this.printer.print(e.toString(this.vocabulary))),r=!0)}getSourceName(){return this.inputStream.getSourceName()}getParseInfo(){let r=this.interpreter;if(r instanceof yn)return new gc(r)}setProfile(r){let e=this.interpreter,t=e.predictionMode;if(r)e instanceof yn||(this.interpreter=new yn(this));else if(e instanceof yn){let i=e.sharedContextCache;if(i){let s=new kr(this,this.atn,e.decisionToDFA,i);this.interpreter=s}}this.interpreter.predictionMode=t}setTrace(r){r?(this.tracer!==null&&this.removeParseListener(this.tracer),this.tracer=new kc(this),this.addParseListener(this.tracer)):(this.removeParseListener(this.tracer),this.tracer=null)}createTerminalNode(r,e){return new Ee(e)}createErrorNode(r,e){return new Or(e)}},Dc=class extends i1{static{p(this,"ParserInterpreter")}rootContext;overrideDecisionRoot=null;parentContextStack=[];overrideDecisionAlt=-1;overrideDecisionReached=!1;decisionToDFA;sharedContextCache=new pt;pushRecursionContextStates;#e=-1;#t=-1;#i;#r;#n;#s;constructor(r,e,t,i,s){super(s),this.#i=r,this.#r=i,this.#n=t.slice(0),this.#s=e,this.pushRecursionContextStates=new Me;for(let a of i.states)a instanceof je&&a.precedenceRuleDecision&&this.pushRecursionContextStates.set(a.stateNumber);this.decisionToDFA=i.decisionToState.map((a,u)=>new He(a,u)),this.interpreter=new kr(this,i,this.decisionToDFA,this.sharedContextCache)}reset(){super.reset(),this.overrideDecisionReached=!1,this.overrideDecisionRoot=null}get atn(){return this.#r}get vocabulary(){return this.#s}get ruleNames(){return this.#n}get grammarFileName(){return this.#i}get atnState(){return this.#r.states[this.state]}parse(r){let e=this.#r.ruleToStartState[r];for(this.rootContext=this.createInterpreterRuleContext(null,v.INVALID_STATE_NUMBER,r),e.isLeftRecursiveRule?this.enterRecursionRule(this.rootContext,e.stateNumber,r,0):this.enterRule(this.rootContext,e.stateNumber,r);;){let t=this.atnState;switch(t.constructor.stateType){case v.RULE_STOP:{if(this.context?.isEmpty())if(e.isLeftRecursiveRule){let i=this.context,s=this.parentContextStack.pop();return this.unrollRecursionContexts(s[0]),i}else return this.exitRule(),this.rootContext;this.visitRuleStopState(t);break}default:{try{this.visitState(t)}catch(i){if(i instanceof o)this.state=this.#r.ruleToStopState[t.ruleIndex].stateNumber,this.errorHandler.reportError(this,i),this.recover(i);else throw i}break}}}}addDecisionOverride(r,e,t){this.#e=r,this.#t=e,this.overrideDecisionAlt=t}get overrideDecision(){return this.#e}get overrideDecisionInputIndex(){return this.#t}enterRecursionRule(r,e,t,i){this.parentContextStack.push([this.context,r.invokingState]),super.enterRecursionRule(r,e,t,i)}get serializedATN(){throw new Error("The ParserInterpreter does not support the serializedATN property.")}visitState(r){let e=1;r instanceof dt&&(e=this.visitDecisionState(r));let t=r.transitions[e-1];switch(t.transitionType){case C.EPSILON:if(this.pushRecursionContextStates.get(r.stateNumber)&&t.target.constructor.stateType!==v.LOOP_END){let h=this.parentContextStack[this.parentContextStack.length-1],d=this.createInterpreterRuleContext(h[0],h[1],this.context.ruleIndex);this.pushNewRecursionContext(d,this.#r.ruleToStartState[r.ruleIndex].stateNumber,this.context.ruleIndex)}break;case C.ATOM:this.match(t.label.minElement);break;case C.RANGE:case C.SET:case C.NOT_SET:t.matches(this.inputStream.LA(1),b.MIN_USER_TOKEN_TYPE,65535)||this.recoverInline(),this.matchWildcard();break;case C.WILDCARD:this.matchWildcard();break;case C.RULE:let i=t.target,s=i.ruleIndex,a=this.createInterpreterRuleContext(this.context,r.stateNumber,s);i.isLeftRecursiveRule?this.enterRecursionRule(a,i.stateNumber,s,t.precedence):this.enterRule(a,t.target.stateNumber,s);break;case C.PREDICATE:let u=t;if(!this.sempred(this.context,u.ruleIndex,u.predIndex))throw new wr(this);break;case C.ACTION:let c=t;this.action(this.context,c.ruleIndex,c.actionIndex);break;case C.PRECEDENCE:if(!this.precpred(this.context,t.precedence)){let h=t.precedence;throw new wr(this,`precpred(_ctx, ${h})`)}break;default:throw new Error("UnsupportedOperationException: Unrecognized ATN transition type.")}this.state=t.target.stateNumber}visitDecisionState(r){let e=1;if(r.transitions.length>1){this.errorHandler.sync(this);let t=r.decision;t===this.#e&&this.inputStream.index===this.#t&&!this.overrideDecisionReached?(e=this.overrideDecisionAlt,this.overrideDecisionReached=!0):e=this.interpreter.adaptivePredict(this.inputStream,t,this.context)}return e}createInterpreterRuleContext(r,e,t){return new wc(t,r,e)}visitRuleStopState(r){if(this.#r.ruleToStartState[r.ruleIndex].isLeftRecursiveRule){let[i,s]=this.parentContextStack.pop();this.unrollRecursionContexts(i),this.state=s}else this.exitRule();let t=this.#r.states[this.state].transitions[0];this.state=t.followState.stateNumber}recover(r){let e=this.inputStream.index;if(this.errorHandler.recover(this,r),this.inputStream.index===e){let t=r.offendingToken;if(!t)throw new Error("Expected exception to have an offending token");let i=t.tokenSource,s=i?.inputStream??null,a=[i,s];if(r instanceof Ir){let u=r.getExpectedTokens();if(!u)throw new Error("Expected the exception to provide expected tokens");let c=b.INVALID_TYPE;u.length!==0&&(c=u.minElement);let h=this.getTokenFactory().create(a,c,t.text,b.DEFAULT_CHANNEL,-1,-1,t.line,t.column);this.context.addErrorNode(this.createErrorNode(this.context,h))}else{let u=this.getTokenFactory().create(a,b.INVALID_TYPE,t.text,b.DEFAULT_CHANNEL,-1,-1,t.line,t.column);this.context.addErrorNode(this.createErrorNode(this.context,u))}}}recoverInline(){return this.errorHandler.recoverInline(this)}},V1=class extends Map{static{p(this,"MultiMap")}map(r,e){let t=this.get(r);t||(t=new Array,this.set(r,t)),t.push(e)}getPairs(){let r=new Array;for(let e of this.keys()){let t=this.get(e)??[];for(let i of t)r.push([e,i])}return r}toString(){let r=[];return this.forEach((e,t)=>{r.push(`${t}=[${e.join(", ")}]`)}),`{${r.join(", ")}}`}},Fc=class extends Error{static{p(this,"CannotInvokeStartRuleError")}constructor(r){super(),this.cause=r}},_1=class{static{p(this,"RuleTagToken")}label;ruleName;bypassTokenType;constructor(r,e,t){this.ruleName=r,this.bypassTokenType=e,this.label=t}get channel(){return b.DEFAULT_CHANNEL}get text(){return this.label!==void 0?"<"+this.label+":"+this.ruleName+">":"<"+this.ruleName+">"}get type(){return this.bypassTokenType}get line(){return 0}get column(){return-1}get tokenIndex(){return-1}get start(){return-1}get stop(){return-1}get tokenSource(){return null}get inputStream(){return null}toString(){return this.ruleName+":"+this.bypassTokenType}},Hc=class extends Error{static{p(this,"StartRuleDoesNotConsumeFullPatternError")}},q1=class extends A0{static{p(this,"TagChunk")}tag;label;constructor(...r){let e,t;if(r.length===1?t=r[0]:(e=r[0],t=r[1]),super(),!t)throw new Error("tag cannot be null or empty");this.label=e,this.tag=t}toString(){return this.label!==void 0?this.label+":"+this.tag:this.tag}},Ht=class extends A0{static{p(this,"TextChunk")}text;constructor(r){super(),this.text=r}toString(){return"'"+this.text+"'"}},G1=class extends An{static{p(this,"TokenTagToken")}tokenName;label;constructor(r,e,t){super({type:e,source:An.EMPTY_SOURCE}),this.tokenName=r,this.label=t}get text(){return this.label!==void 0?"<"+this.label+":"+this.tokenName+">":"<"+this.tokenName+">"}toString(){return this.tokenName+":"+this.type}},Bc=class{static{p(this,"ParseTreePatternMatcher")}start="<";stop=">";escape="\\";lexer;parser;constructor(r,e){this.lexer=r,this.parser=e}setDelimiters(r,e,t){if(r===null||r.length===0)throw new Error("start cannot be null or empty");if(e===null||e.length===0)throw new Error("stop cannot be null or empty");this.start=r,this.stop=e,this.escape=t}matches(...r){switch(r.length){case 2:{let[e,t]=r,i=new V1;return this.matchImpl(e,t.getPatternTree(),i)===null}case 3:{let[e,t,i]=r,s=this.compile(t,i);return this.matches(e,s)}default:throw new Error("Invalid number of arguments")}}match(...r){switch(r.length){case 2:{let[e,t]=r,i=new V1,s=this.matchImpl(e,t.getPatternTree(),i);return new Nc(e,t,i,s)}case 3:{let[e,t,i]=r,s=this.compile(t,i);return this.match(e,s)}default:throw new Error("Invalid number of arguments")}}compile(r,e){let t=this.tokenize(r),i=new Oc(t),s=new Dr(i),a=new Dc(this.parser.grammarFileName,this.parser.vocabulary,this.parser.ruleNames,this.parser.getATNWithBypassAlts(),s);a.removeErrorListeners();let u=null;try{a.errorHandler=new Un,u=a.parse(e)}catch(c){throw c instanceof Ju?c.cause:c instanceof o?c:c instanceof Error?new Fc(c):c}if(s.LA(1)!==b.EOF)throw new Hc;return new Uc(this,r,e,u)}getLexer(){return this.lexer}getParser(){return this.parser}tokenize(r){let e=this.split(r),t=new Array;for(let i of e)if(i instanceof q1){let s=i,a=s.tag[0];if(a===a.toUpperCase()){let u=this.parser.getTokenType(s.tag);if(u===b.INVALID_TYPE)throw new Error("Unknown token "+s.tag+" in pattern: "+r);let c=new G1(s.tag,u,s.label);t.push(c)}else if(a===a.toLowerCase()){let u=this.parser.getRuleIndex(s.tag);if(u===-1)throw new Error("Unknown rule "+s.tag+" in pattern: "+r);let c=this.parser.getATNWithBypassAlts().ruleToTokenType[u];t.push(new _1(s.tag,c,s.label))}else throw new Error("invalid tag: "+s.tag+" in pattern: "+r)}else{let s=i,a=ct.fromString(s.text);this.lexer.inputStream=a;let u=this.lexer.nextToken();for(;u.type!==b.EOF;)t.push(u),u=this.lexer.nextToken()}return t}split(r){let e=0,t=r.length,i=new Array,s=new Array,a=new Array;for(;e<t;)e===r.indexOf(this.escape+this.start,e)?e+=this.escape.length+this.start.length:e===r.indexOf(this.escape+this.stop,e)?e+=this.escape.length+this.stop.length:e===r.indexOf(this.start,e)?(s.push(e),e+=this.start.length):e===r.indexOf(this.stop,e)?(a.push(e),e+=this.stop.length):e++;if(s.length>a.length)throw new Error("unterminated tag in pattern: "+r);if(s.length<a.length)throw new Error("missing start tag in pattern: "+r);let u=s.length;for(let c=0;c<u;c++)if(s[c]>=a[c])throw new Error("tag delimiters out of order in pattern: "+r);if(u===0){let c=r.substring(0,t);i.push(new Ht(c))}if(u>0&&s[0]>0){let c=r.substring(0,s[0]);i.push(new Ht(c))}for(let c=0;c<u;c++){let h=r.substring(s[c]+this.start.length,a[c]),d=h,x,R=h.indexOf(":");if(R>=0&&(x=h.substring(0,R),d=h.substring(R+1,h.length)),i.push(new q1(x,d)),c+1<u){let y=r.substring(a[c]+this.stop.length,s[c+1]);i.push(new Ht(y))}}if(u>0){let c=a[u-1]+this.stop.length;if(c<t){let h=r.substring(c,t);i.push(new Ht(h))}}for(let c=0;c<i.length;c++){let h=i[c];if(h instanceof Ht){let d=h,x=d.text.replaceAll(this.escape,"");x.length<d.text.length&&(i[c]=new Ht(x))}}return i}matchImpl(r,e,t){if(r instanceof Ee&&e instanceof Ee){let i=r,s=e,a;if(i.getSymbol().type===s.getSymbol().type)if(s.getSymbol()instanceof G1){let u=s.getSymbol();t.map(u.tokenName,r),u.label!==void 0&&t.map(u.label,r)}else i.getText()===s.getText()||a||(a=i);else a||(a=i);return a}if(r instanceof l&&e instanceof l){let i,s=this.getRuleTagToken(e);if(s)return r.ruleIndex===e.ruleIndex?(t.map(s.ruleName,r),s.label&&t.map(s.label,r)):i||(i=r),i;if(r.getChildCount()!==e.getChildCount())return i||(i=r),i;let a=r.getChildCount();for(let u=0;u<a;u++){let c=this.matchImpl(r.getChild(u),e.getChild(u),t);if(c)return c}return i}return r}getRuleTagToken(r){if(r instanceof l&&r.getChildCount()===1&&r.getChild(0)instanceof Ee){let e=r.getChild(0);if(e.getSymbol()instanceof _1)return e.getSymbol()}}},ch=class extends jt{static{p(this,"DiagnosticErrorListener")}exactOnly;constructor(r){super(),this.exactOnly=r??!0}reportAmbiguity=p((r,e,t,i,s,a,u)=>{if(this.exactOnly&&!s)return;let c=this.getDecisionDescription(r,e),h=this.getConflictingAlts(a,u),d=r.tokenStream?.getTextFromInterval(I.of(t,i)),x=`reportAmbiguity d=${c}: ambigAlts=${h}, input='${d}'`;r.notifyErrorListeners(x,null,null)},"reportAmbiguity");reportAttemptingFullContext=p((r,e,t,i,s,a)=>{let u=this.getDecisionDescription(r,e),c=r.tokenStream?.getTextFromInterval(I.of(t,i)),h=`reportAttemptingFullContext d=${u}, input='${c}'`;r.notifyErrorListeners(h,null,null)},"reportAttemptingFullContext");reportContextSensitivity=p((r,e,t,i,s,a)=>{let u=this.getDecisionDescription(r,e),c=r.tokenStream?.getTextFromInterval(I.of(t,i)),h=`reportContextSensitivity d=${u}, input='${c}'`;r.notifyErrorListeners(h,null,null)},"reportContextSensitivity");getDecisionDescription=p((r,e)=>{let t=e.decision,i=e.atnStartState.ruleIndex,s=r.ruleNames;if(i<0||i>=s.length)return t.toString();let a=s[i];return a.length===0?t.toString():`${t} (${a})`},"getDecisionDescription");getConflictingAlts=p((r,e)=>{if(r)return r;let t=new Me;for(let i=0;i<e.configs.length;i++)t.set(e.configs[i].alt);return t},"getConflictingAlts")},hh=class extends Ne{static{p(this,"LexerInterpreter")}decisionToDFA;sharedContextCache=new pt;#e;#t;#i;#r;#n;#s;constructor(r,e,t,i,s,a,u){if(super(u),a.grammarType!==L.LEXER)throw new Error("IllegalArgumentException: The ATN must be a lexer ATN.");this.#e=r,this.#t=a,this.#i=t.slice(0),this.#r=i.slice(0),this.#n=s.slice(0),this.#s=e,this.decisionToDFA=a.decisionToState.map((c,h)=>new He(c,h)),this.interpreter=new Kt(this,a,this.decisionToDFA,this.sharedContextCache)}get atn(){return this.#t}get grammarFileName(){return this.#e}get ruleNames(){return this.#i}get channelNames(){return this.#r}get modeNames(){return this.#n}get vocabulary(){return this.#s}get serializedATN(){throw new Error("The LexerInterpreter does not support the serializedATN property.")}},dh=class at{static{p(this,"RuntimeMetaData")}static VERSION="4.13.1";static getRuntimeVersion(){return at.VERSION}static checkVersion(e,t){let i=at.VERSION,s=!1,a=!1;s=i!==e&&at.getMajorMinorVersion(i)!==at.getMajorMinorVersion(e),a=i!==t&&at.getMajorMinorVersion(i)!==at.getMajorMinorVersion(t),s&&console.error(`ANTLR Tool version ${e} used for code generation does not match the current runtime version ${i}`),a&&console.error(`ANTLR Runtime version ${t} used for parser compilation does not match the current runtime version ${i}`)}static getMajorMinorVersion(e){let t=e.indexOf("."),i=t>=0?e.indexOf(".",t+1):-1,s=e.indexOf("-"),a=e.length;return i>=0&&(a=Math.min(a,i)),s>=0&&(a=Math.min(a,s)),e.substring(0,a)}},ph=class lt{static{p(this,"TokenStreamRewriter")}static DEFAULT_PROGRAM_NAME="default";static PROGRAM_INIT_SIZE=100;static MIN_TOKEN_INDEX=0;tokens;programs=new Map;lastRewriteTokenIndexes;constructor(e){this.tokens=e}getTokenStream(){return this.tokens}insertAfter(e,t,i=lt.DEFAULT_PROGRAM_NAME){let s;typeof e=="number"?s=e:s=e.tokenIndex;let a=this.getProgram(i),u=new K1(this.tokens,s,a.length,t);a.push(u)}insertBefore(e,t,i=lt.DEFAULT_PROGRAM_NAME){let s;typeof e=="number"?s=e:s=e.tokenIndex;let a=this.getProgram(i),u=new Vt(this.tokens,s,a.length,t);a.push(u)}replaceSingle(e,t,i=lt.DEFAULT_PROGRAM_NAME){this.replace(e,e,t,i)}replace(e,t,i,s=lt.DEFAULT_PROGRAM_NAME){if(typeof e!="number"&&(e=e.tokenIndex),typeof t!="number"&&(t=t.tokenIndex),e>t||e<0||t<0||t>=this.tokens.size)throw new RangeError(`replace: range invalid: ${e}..${t}(size=${this.tokens.size})`);let a=this.getProgram(s),u=new vn(this.tokens,e,t,a.length,i);a.push(u)}delete(e,t,i=lt.DEFAULT_PROGRAM_NAME){t==null&&(t=e),this.replace(e,t,null,i)}getProgram(e){let t=this.programs.get(e);return t==null&&(t=this.initializeProgram(e)),t}initializeProgram(e){let t=[];return this.programs.set(e,t),t}getText(e,t=lt.DEFAULT_PROGRAM_NAME){let i;e instanceof I?i=e:i=new I(0,this.tokens.size-1),typeof e=="string"&&(t=e);let s=this.programs.get(t),a=i.start,u=i.stop;if(u>this.tokens.size-1&&(u=this.tokens.size-1),a<0&&(a=0),s==null||s.length===0)return this.tokens.getTextFromInterval(new I(a,u));let c=[],h=this.reduceToSingleOperationPerIndex(s),d=a;for(;d<=u&&d<this.tokens.size;){let x=h.get(d);h.delete(d);let R=this.tokens.get(d);x==null?(R.type!==b.EOF&&c.push(String(R.text)),d++):d=x.execute(c)}if(u===this.tokens.size-1)for(let x of h.values())x&&x.index>=this.tokens.size-1&&c.push(String(x.text));return c.join("")}reduceToSingleOperationPerIndex(e){for(let i=0;i<e.length;i++){let s=e[i];if(s==null||!(s instanceof vn))continue;let a=s,u=this.getKindOfOps(e,Vt,i);for(let h of u)h.index===a.index?(e[h.instructionIndex]=null,a.text=String(h.text)+(a.text!=null?a.text.toString():"")):h.index>a.index&&h.index<=a.lastIndex&&(e[h.instructionIndex]=null);let c=this.getKindOfOps(e,vn,i);for(let h of c){if(h.index>=a.index&&h.lastIndex<=a.lastIndex){e[h.instructionIndex]=null;continue}let d=h.lastIndex<a.index||h.index>a.lastIndex;if(h.text==null&&a.text==null&&!d)e[h.instructionIndex]=null,a.index=Math.min(h.index,a.index),a.lastIndex=Math.max(h.lastIndex,a.lastIndex);else if(!d)throw new Error(`replace op boundaries of ${a} overlap with previous ${h}`)}}for(let i=0;i<e.length;i++){let s=e[i];if(s==null||!(s instanceof Vt))continue;let a=s,u=this.getKindOfOps(e,Vt,i);for(let h of u)h.index===a.index&&(h instanceof K1?(a.text=this.catOpText(h.text,a.text),e[h.instructionIndex]=null):h instanceof Vt&&(a.text=this.catOpText(a.text,h.text),e[h.instructionIndex]=null));let c=this.getKindOfOps(e,vn,i);for(let h of c){if(a.index===h.index){h.text=this.catOpText(a.text,h.text),e[i]=null;continue}if(a.index>=h.index&&a.index<=h.lastIndex)throw new Error(`insert op ${a} within boundaries of previous ${h}`)}}let t=new Map;for(let i of e)if(i!=null){if(t.get(i.index)!=null)throw new Error("should only be one op per index");t.set(i.index,i)}return t}catOpText(e,t){let i="",s="";return e!=null&&(i=e.toString()),t!=null&&(s=t.toString()),i+s}getKindOfOps(e,t,i){return e.slice(0,i).filter(s=>s&&s instanceof t)}},M0=class{static{p(this,"RewriteOperation")}instructionIndex;index;text;tokens;constructor(r,e,t,i){this.tokens=r,this.instructionIndex=t,this.index=e,this.text=i===void 0?"":i}execute(r){return this.index}toString(){return"<RewriteOperation@"+this.tokens.get(this.index)+':"'+this.text+'">'}},Vt=class extends M0{static{p(this,"InsertBeforeOp")}constructor(r,e,t,i){super(r,e,t,i)}execute(r){return this.text&&r.push(this.text.toString()),this.tokens.get(this.index).type!==b.EOF&&r.push(String(this.tokens.get(this.index).text)),this.index+1}toString(){return"<InsertBeforeOp@"+this.tokens.get(this.index)+':"'+this.text+'">'}},K1=class extends Vt{static{p(this,"InsertAfterOp")}constructor(r,e,t,i){super(r,e+1,t,i)}toString(){return"<InsertAfterOp@"+this.tokens.get(this.index)+':"'+this.text+'">'}},vn=class extends M0{static{p(this,"ReplaceOp")}lastIndex;constructor(r,e,t,i,s){super(r,e,i,s),this.lastIndex=t}execute(r){return this.text&&r.push(this.text.toString()),this.lastIndex+1}toString(){return this.text==null?"<DeleteOp@"+this.tokens.get(this.index)+".."+this.tokens.get(this.lastIndex)+">":"<ReplaceOp@"+this.tokens.get(this.index)+".."+this.tokens.get(this.lastIndex)+':"'+this.text+'">'}},xh=class{static{p(this,"UnbufferedTokenStream")}tokenSource;tokens;n;p=0;numMarkers=0;lastToken;lastTokenBufferStart;currentTokenIndex=0;constructor(r,e){this.tokenSource=r,e=e??256,this.tokens=new Array(e),this.n=0,this.fill(1)}get(r){let e=this.getBufferStartIndex();if(r<e||r>=e+this.n)throw new Error("get("+r+") outside buffer: "+e+".."+(e+this.n));return this.tokens[r-e]}LT(r){if(r===-1)return this.lastToken;this.sync(r);let e=this.p+r-1;if(e<0)throw new Error("LT("+r+") gives negative index");return e>=this.n?this.tokens[this.n-1]:this.tokens[e]}LA(r){return this.LT(r).type}getText(){return""}getTextFromContext(r){return this.getTextFromInterval(r.getSourceInterval())}getTextFromInterval(r){let e=this.getBufferStartIndex(),t=e+this.tokens.length-1,i=r.start,s=r.stop;if(i<e||s>t)throw new Error("interval "+r+" not in token buffer window: "+e+".."+t);let a=i-e,u=s-e,c="";for(let h=a;h<=u;h++){let d=this.tokens[h];c+=d.text}return c}getTextFromRange(r,e){return this.getTextFromInterval(I.of(r.tokenIndex,e.tokenIndex))}consume(){if(this.LA(1)===b.EOF)throw new Error("cannot consume EOF");this.lastToken=this.tokens[this.p],this.p===this.n-1&&this.numMarkers===0&&(this.n=0,this.p=-1,this.lastTokenBufferStart=this.lastToken),this.p++,this.currentTokenIndex++,this.sync(1)}mark(){this.numMarkers===0&&(this.lastTokenBufferStart=this.lastToken);let r=-this.numMarkers-1;return this.numMarkers++,r}release(r){let e=-this.numMarkers;if(r!==e)throw new Error("release() called with an invalid marker.");this.numMarkers--,this.numMarkers===0&&(this.p>0&&(this.tokens.copyWithin(0,this.p,this.n),this.n=this.n-this.p,this.p=0),this.lastTokenBufferStart=this.lastToken)}get index(){return this.currentTokenIndex}seek(r){if(r===this.currentTokenIndex)return;r>this.currentTokenIndex&&(this.sync(r-this.currentTokenIndex),r=Math.min(r,this.getBufferStartIndex()+this.n-1));let e=this.getBufferStartIndex(),t=r-e;if(t<0)throw new Error("cannot seek to negative index "+r);if(t>=this.n)throw new Error("seek to index outside buffer: "+r+" not in "+e+".."+(e+this.n));this.p=t,this.currentTokenIndex=r,this.p===0?this.lastToken=this.lastTokenBufferStart:this.lastToken=this.tokens[this.p-1]}get size(){throw new Error("Unbuffered stream cannot know its size")}getSourceName(){return this.tokenSource.sourceName}setLine(r){this.tokenSource.line=r}setColumn(r){this.tokenSource.column=r}sync(r){let e=this.p+r-1-this.n+1;e>0&&this.fill(e)}fill(r){for(let e=0;e<r;e++){if(this.n>0&&this.tokens[this.n-1].type===b.EOF)return e;let t=this.tokenSource.nextToken();this.add(t)}return r}add(r){this.n>=this.tokens.length&&(this.tokens.length=this.tokens.length*2),P0(r)&&r.setTokenIndex(this.getBufferStartIndex()+this.n),this.tokens[this.n++]=r}getBufferStartIndex(){return this.currentTokenIndex-this.p}};var E=class r extends Ne{static ABOUT=1;static ABSTRACT=2;static ACCEPT=3;static ACTION=4;static ACTOR=5;static AFTER=6;static ALIAS=7;static ALL=8;static ALLOCATE=9;static ALLOCATION=10;static ANALYSIS=11;static AND=12;static AS=13;static ASSERT=14;static ASSIGN=15;static ASSOC=16;static ASSUME=17;static AT=18;static ATTRIBUTE=19;static BEHAVIOR=20;static BIND=21;static BINDING=22;static BOOL=23;static BY=24;static CALC=25;static CASE=26;static CHAINS=27;static CLASS=28;static CLASSIFIER=29;static COMMENT=30;static COMPOSITE=31;static CONCERN=32;static CONJUGATE=33;static CONJUGATES=34;static CONJUGATION=35;static CONNECT=36;static CONNECTION=37;static CONNECTOR=38;static CONST=39;static CONSTANT=40;static CONSTRAINT=41;static CROSSES=42;static DATATYPE=43;static DECIDE=44;static DEF=45;static DEFAULT=46;static DEFINED=47;static DEPENDENCY=48;static DERIVED=49;static DIFFERENCES=50;static DISJOINING=51;static DISJOINT=52;static DO=53;static DOC=54;static ELSE=55;static END=56;static ENTRY=57;static ENUM=58;static EVENT=59;static EXHIBIT=60;static EXIT=61;static EXPOSE=62;static EXPR=63;static FALSE=64;static FEATURE=65;static FEATURED=66;static FEATURING=67;static FILTER=68;static FIRST=69;static FLOW=70;static FOR=71;static FORK=72;static FRAME=73;static FROM=74;static FUNCTION=75;static HASTYPE=76;static IF=77;static IMPLIES=78;static IMPORT=79;static IN=80;static INCLUDE=81;static INDIVIDUAL=82;static INOUT=83;static INTERACTION=84;static INTERFACE=85;static INTERSECTS=86;static INV=87;static INVERSE=88;static INVERTING=89;static ISTYPE=90;static ITEM=91;static JOIN=92;static LANGUAGE=93;static LIBRARY=94;static LOCALE=95;static LOOP=96;static MEMBER=97;static MERGE=98;static MESSAGE=99;static META=100;static METACLASS=101;static METADATA=102;static MULTIPLICITY=103;static NAMESPACE=104;static NEW=105;static NONUNIQUE=106;static NOT=107;static NULL=108;static OBJECTIVE=109;static OCCURRENCE=110;static OF=111;static OR=112;static ORDERED=113;static OUT=114;static PACKAGE=115;static PARALLEL=116;static PART=117;static PERFORM=118;static PORT=119;static PORTION=120;static PREDICATE=121;static PRIVATE=122;static PROTECTED=123;static PUBLIC=124;static REDEFINES=125;static REDEFINITION=126;static REF=127;static REFERENCES=128;static RENDER=129;static RENDERING=130;static REP=131;static REQUIRE=132;static REQUIREMENT=133;static RETURN=134;static SATISFY=135;static SEND=136;static SNAPSHOT=137;static SPECIALIZATION=138;static SPECIALIZES=139;static STAKEHOLDER=140;static STANDARD=141;static STATE=142;static STEP=143;static STRUCT=144;static SUBCLASSIFIER=145;static SUBJECT=146;static SUBSET=147;static SUBSETS=148;static SUBTYPE=149;static SUCCESSION=150;static TERMINATE=151;static THEN=152;static TIMESLICE=153;static TO=154;static TRANSITION=155;static TRUE=156;static TYPE=157;static TYPED=158;static TYPING=159;static UNIONS=160;static UNTIL=161;static USE=162;static VAR=163;static VARIANT=164;static VARIATION=165;static VERIFICATION=166;static VERIFY=167;static VIA=168;static VIEW=169;static VIEWPOINT=170;static WHEN=171;static WHILE=172;static XOR=173;static BANG_EQ_EQ=174;static COLON_COLON_GT=175;static COLON_GT_GT=176;static EQ_EQ_EQ=177;static BANG_EQ=178;static STAR_STAR=179;static ARROW=180;static DOT_DOT=181;static DOT_QUESTION=182;static COLON_COLON=183;static COLON_EQ=184;static COLON_GT=185;static LE=186;static EQ_EQ=187;static FAT_ARROW=188;static GE=189;static QUESTION_QUESTION=190;static AT_AT=191;static HASH=192;static DOLLAR=193;static PERCENT=194;static AMP=195;static LPAREN=196;static RPAREN=197;static STAR=198;static PLUS=199;static COMMA=200;static MINUS=201;static DOT=202;static SLASH=203;static COLON=204;static SEMI=205;static LT=206;static EQ=207;static GT=208;static QUESTION=209;static AT_SIGN=210;static LBRACK=211;static RBRACK=212;static CARET=213;static LBRACE=214;static PIPE=215;static RBRACE=216;static TILDE=217;static IDENTIFIER=218;static STRING=219;static DOUBLE_STRING=220;static INTEGER=221;static REAL=222;static REGULAR_COMMENT=223;static SINGLE_LINE_NOTE=224;static WS=225;static channelNames=["DEFAULT_TOKEN_CHANNEL","HIDDEN"];static literalNames=[null,"'about'","'abstract'","'accept'","'action'","'actor'","'after'","'alias'","'all'","'allocate'","'allocation'","'analysis'","'and'","'as'","'assert'","'assign'","'assoc'","'assume'","'at'","'attribute'","'behavior'","'bind'","'binding'","'bool'","'by'","'calc'","'case'","'chains'","'class'","'classifier'","'comment'","'composite'","'concern'","'conjugate'","'conjugates'","'conjugation'","'connect'","'connection'","'connector'","'const'","'constant'","'constraint'","'crosses'","'datatype'","'decide'","'def'","'default'","'defined'","'dependency'","'derived'","'differences'","'disjoining'","'disjoint'","'do'","'doc'","'else'","'end'","'entry'","'enum'","'event'","'exhibit'","'exit'","'expose'","'expr'","'false'","'feature'","'featured'","'featuring'","'filter'","'first'","'flow'","'for'","'fork'","'frame'","'from'","'function'","'hastype'","'if'","'implies'","'import'","'in'","'include'","'individual'","'inout'","'interaction'","'interface'","'intersects'","'inv'","'inverse'","'inverting'","'istype'","'item'","'join'","'language'","'library'","'locale'","'loop'","'member'","'merge'","'message'","'meta'","'metaclass'","'metadata'","'multiplicity'","'namespace'","'new'","'nonunique'","'not'","'null'","'objective'","'occurrence'","'of'","'or'","'ordered'","'out'","'package'","'parallel'","'part'","'perform'","'port'","'portion'","'predicate'","'private'","'protected'","'public'","'redefines'","'redefinition'","'ref'","'references'","'render'","'rendering'","'rep'","'require'","'requirement'","'return'","'satisfy'","'send'","'snapshot'","'specialization'","'specializes'","'stakeholder'","'standard'","'state'","'step'","'struct'","'subclassifier'","'subject'","'subset'","'subsets'","'subtype'","'succession'","'terminate'","'then'","'timeslice'","'to'","'transition'","'true'","'type'","'typed'","'typing'","'unions'","'until'","'use'","'var'","'variant'","'variation'","'verification'","'verify'","'via'","'view'","'viewpoint'","'when'","'while'","'xor'","'!=='","'::>'","':>>'","'==='","'!='","'**'","'->'","'..'","'.?'","'::'","':='","':>'","'<='","'=='","'=>'","'>='","'??'","'@@'","'#'","'$'","'%'","'&'","'('","')'","'*'","'+'","','","'-'","'.'","'/'","':'","';'","'<'","'='","'>'","'?'","'@'","'['","']'","'^'","'{'","'|'","'}'","'~'"];static symbolicNames=[null,"ABOUT","ABSTRACT","ACCEPT","ACTION","ACTOR","AFTER","ALIAS","ALL","ALLOCATE","ALLOCATION","ANALYSIS","AND","AS","ASSERT","ASSIGN","ASSOC","ASSUME","AT","ATTRIBUTE","BEHAVIOR","BIND","BINDING","BOOL","BY","CALC","CASE","CHAINS","CLASS","CLASSIFIER","COMMENT","COMPOSITE","CONCERN","CONJUGATE","CONJUGATES","CONJUGATION","CONNECT","CONNECTION","CONNECTOR","CONST","CONSTANT","CONSTRAINT","CROSSES","DATATYPE","DECIDE","DEF","DEFAULT","DEFINED","DEPENDENCY","DERIVED","DIFFERENCES","DISJOINING","DISJOINT","DO","DOC","ELSE","END","ENTRY","ENUM","EVENT","EXHIBIT","EXIT","EXPOSE","EXPR","FALSE","FEATURE","FEATURED","FEATURING","FILTER","FIRST","FLOW","FOR","FORK","FRAME","FROM","FUNCTION","HASTYPE","IF","IMPLIES","IMPORT","IN","INCLUDE","INDIVIDUAL","INOUT","INTERACTION","INTERFACE","INTERSECTS","INV","INVERSE","INVERTING","ISTYPE","ITEM","JOIN","LANGUAGE","LIBRARY","LOCALE","LOOP","MEMBER","MERGE","MESSAGE","META","METACLASS","METADATA","MULTIPLICITY","NAMESPACE","NEW","NONUNIQUE","NOT","NULL","OBJECTIVE","OCCURRENCE","OF","OR","ORDERED","OUT","PACKAGE","PARALLEL","PART","PERFORM","PORT","PORTION","PREDICATE","PRIVATE","PROTECTED","PUBLIC","REDEFINES","REDEFINITION","REF","REFERENCES","RENDER","RENDERING","REP","REQUIRE","REQUIREMENT","RETURN","SATISFY","SEND","SNAPSHOT","SPECIALIZATION","SPECIALIZES","STAKEHOLDER","STANDARD","STATE","STEP","STRUCT","SUBCLASSIFIER","SUBJECT","SUBSET","SUBSETS","SUBTYPE","SUCCESSION","TERMINATE","THEN","TIMESLICE","TO","TRANSITION","TRUE","TYPE","TYPED","TYPING","UNIONS","UNTIL","USE","VAR","VARIANT","VARIATION","VERIFICATION","VERIFY","VIA","VIEW","VIEWPOINT","WHEN","WHILE","XOR","BANG_EQ_EQ","COLON_COLON_GT","COLON_GT_GT","EQ_EQ_EQ","BANG_EQ","STAR_STAR","ARROW","DOT_DOT","DOT_QUESTION","COLON_COLON","COLON_EQ","COLON_GT","LE","EQ_EQ","FAT_ARROW","GE","QUESTION_QUESTION","AT_AT","HASH","DOLLAR","PERCENT","AMP","LPAREN","RPAREN","STAR","PLUS","COMMA","MINUS","DOT","SLASH","COLON","SEMI","LT","EQ","GT","QUESTION","AT_SIGN","LBRACK","RBRACK","CARET","LBRACE","PIPE","RBRACE","TILDE","IDENTIFIER","STRING","DOUBLE_STRING","INTEGER","REAL","REGULAR_COMMENT","SINGLE_LINE_NOTE","WS"];static modeNames=["DEFAULT_MODE"];static ruleNames=["ABOUT","ABSTRACT","ACCEPT","ACTION","ACTOR","AFTER","ALIAS","ALL","ALLOCATE","ALLOCATION","ANALYSIS","AND","AS","ASSERT","ASSIGN","ASSOC","ASSUME","AT","ATTRIBUTE","BEHAVIOR","BIND","BINDING","BOOL","BY","CALC","CASE","CHAINS","CLASS","CLASSIFIER","COMMENT","COMPOSITE","CONCERN","CONJUGATE","CONJUGATES","CONJUGATION","CONNECT","CONNECTION","CONNECTOR","CONST","CONSTANT","CONSTRAINT","CROSSES","DATATYPE","DECIDE","DEF","DEFAULT","DEFINED","DEPENDENCY","DERIVED","DIFFERENCES","DISJOINING","DISJOINT","DO","DOC","ELSE","END","ENTRY","ENUM","EVENT","EXHIBIT","EXIT","EXPOSE","EXPR","FALSE","FEATURE","FEATURED","FEATURING","FILTER","FIRST","FLOW","FOR","FORK","FRAME","FROM","FUNCTION","HASTYPE","IF","IMPLIES","IMPORT","IN","INCLUDE","INDIVIDUAL","INOUT","INTERACTION","INTERFACE","INTERSECTS","INV","INVERSE","INVERTING","ISTYPE","ITEM","JOIN","LANGUAGE","LIBRARY","LOCALE","LOOP","MEMBER","MERGE","MESSAGE","META","METACLASS","METADATA","MULTIPLICITY","NAMESPACE","NEW","NONUNIQUE","NOT","NULL","OBJECTIVE","OCCURRENCE","OF","OR","ORDERED","OUT","PACKAGE","PARALLEL","PART","PERFORM","PORT","PORTION","PREDICATE","PRIVATE","PROTECTED","PUBLIC","REDEFINES","REDEFINITION","REF","REFERENCES","RENDER","RENDERING","REP","REQUIRE","REQUIREMENT","RETURN","SATISFY","SEND","SNAPSHOT","SPECIALIZATION","SPECIALIZES","STAKEHOLDER","STANDARD","STATE","STEP","STRUCT","SUBCLASSIFIER","SUBJECT","SUBSET","SUBSETS","SUBTYPE","SUCCESSION","TERMINATE","THEN","TIMESLICE","TO","TRANSITION","TRUE","TYPE","TYPED","TYPING","UNIONS","UNTIL","USE","VAR","VARIANT","VARIATION","VERIFICATION","VERIFY","VIA","VIEW","VIEWPOINT","WHEN","WHILE","XOR","BANG_EQ_EQ","COLON_COLON_GT","COLON_GT_GT","EQ_EQ_EQ","BANG_EQ","STAR_STAR","ARROW","DOT_DOT","DOT_QUESTION","COLON_COLON","COLON_EQ","COLON_GT","LE","EQ_EQ","FAT_ARROW","GE","QUESTION_QUESTION","AT_AT","HASH","DOLLAR","PERCENT","AMP","LPAREN","RPAREN","STAR","PLUS","COMMA","MINUS","DOT","SLASH","COLON","SEMI","LT","EQ","GT","QUESTION","AT_SIGN","LBRACK","RBRACK","CARET","LBRACE","PIPE","RBRACE","TILDE","IDENTIFIER","STRING","DOUBLE_STRING","INTEGER","REAL","REGULAR_COMMENT","SINGLE_LINE_NOTE","WS"];constructor(e){super(e),this.interpreter=new Kt(this,r._ATN,r.decisionsToDFA,new pt)}get grammarFileName(){return"SysMLv2Lexer.g4"}get literalNames(){return r.literalNames}get symbolicNames(){return r.symbolicNames}get ruleNames(){return r.ruleNames}get serializedATN(){return r._serializedATN}get channelNames(){return r.channelNames}get modeNames(){return r.modeNames}static _serializedATN=[4,0,225,1950,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224,7,224,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,111,1,111,1,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,151,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,157,1,157,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,160,1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161,1,162,1,162,1,162,1,162,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,170,1,170,1,170,1,170,1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,172,1,172,1,172,1,172,1,173,1,173,1,173,1,173,1,174,1,174,1,174,1,174,1,175,1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,177,1,177,1,177,1,178,1,178,1,178,1,179,1,179,1,179,1,180,1,180,1,180,1,181,1,181,1,181,1,182,1,182,1,182,1,183,1,183,1,183,1,184,1,184,1,184,1,185,1,185,1,185,1,186,1,186,1,186,1,187,1,187,1,187,1,188,1,188,1,188,1,189,1,189,1,189,1,190,1,190,1,190,1,191,1,191,1,192,1,192,1,193,1,193,1,194,1,194,1,195,1,195,1,196,1,196,1,197,1,197,1,198,1,198,1,199,1,199,1,200,1,200,1,201,1,201,1,202,1,202,1,203,1,203,1,204,1,204,1,205,1,205,1,206,1,206,1,207,1,207,1,208,1,208,1,209,1,209,1,210,1,210,1,211,1,211,1,212,1,212,1,213,1,213,1,214,1,214,1,215,1,215,1,216,1,216,1,217,1,217,5,217,1850,8,217,10,217,12,217,1853,9,217,1,218,1,218,1,218,1,218,5,218,1859,8,218,10,218,12,218,1862,9,218,1,218,1,218,1,219,1,219,1,219,1,219,5,219,1870,8,219,10,219,12,219,1873,9,219,1,219,1,219,1,220,4,220,1878,8,220,11,220,12,220,1879,1,221,5,221,1883,8,221,10,221,12,221,1886,9,221,1,221,1,221,4,221,1890,8,221,11,221,12,221,1891,1,221,1,221,3,221,1896,8,221,1,221,4,221,1899,8,221,11,221,12,221,1900,3,221,1903,8,221,1,221,4,221,1906,8,221,11,221,12,221,1907,1,221,1,221,3,221,1912,8,221,1,221,4,221,1915,8,221,11,221,12,221,1916,3,221,1919,8,221,1,222,1,222,1,222,1,222,5,222,1925,8,222,10,222,12,222,1928,9,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223,5,223,1937,8,223,10,223,12,223,1940,9,223,1,223,1,223,1,224,4,224,1945,8,224,11,224,12,224,1946,1,224,1,224,1,1926,0,225,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111,56,113,57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131,66,133,67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75,151,76,153,77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175,88,177,89,179,90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195,98,197,99,199,100,201,101,203,102,205,103,207,104,209,105,211,106,213,107,215,108,217,109,219,110,221,111,223,112,225,113,227,114,229,115,231,116,233,117,235,118,237,119,239,120,241,121,243,122,245,123,247,124,249,125,251,126,253,127,255,128,257,129,259,130,261,131,263,132,265,133,267,134,269,135,271,136,273,137,275,138,277,139,279,140,281,141,283,142,285,143,287,144,289,145,291,146,293,147,295,148,297,149,299,150,301,151,303,152,305,153,307,154,309,155,311,156,313,157,315,158,317,159,319,160,321,161,323,162,325,163,327,164,329,165,331,166,333,167,335,168,337,169,339,170,341,171,343,172,345,173,347,174,349,175,351,176,353,177,355,178,357,179,359,180,361,181,363,182,365,183,367,184,369,185,371,186,373,187,375,188,377,189,379,190,381,191,383,192,385,193,387,194,389,195,391,196,393,197,395,198,397,199,399,200,401,201,403,202,405,203,407,204,409,205,411,206,413,207,415,208,417,209,419,210,421,211,423,212,425,213,427,214,429,215,431,216,433,217,435,218,437,219,439,220,441,221,443,222,445,223,447,224,449,225,1,0,9,3,0,65,90,95,95,97,122,4,0,48,57,65,90,95,95,97,122,2,0,39,39,92,92,2,0,34,34,92,92,1,0,48,57,2,0,69,69,101,101,2,0,43,43,45,45,2,0,10,10,13,13,3,0,9,10,13,13,32,32,1967,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289,1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0,0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1,0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0,317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0,363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0,0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381,1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0,0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1,0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0,409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0,0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427,1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0,0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1,0,0,0,0,447,1,0,0,0,0,449,1,0,0,0,1,451,1,0,0,0,3,457,1,0,0,0,5,466,1,0,0,0,7,473,1,0,0,0,9,480,1,0,0,0,11,486,1,0,0,0,13,492,1,0,0,0,15,498,1,0,0,0,17,502,1,0,0,0,19,511,1,0,0,0,21,522,1,0,0,0,23,531,1,0,0,0,25,535,1,0,0,0,27,538,1,0,0,0,29,545,1,0,0,0,31,552,1,0,0,0,33,558,1,0,0,0,35,565,1,0,0,0,37,568,1,0,0,0,39,578,1,0,0,0,41,587,1,0,0,0,43,592,1,0,0,0,45,600,1,0,0,0,47,605,1,0,0,0,49,608,1,0,0,0,51,613,1,0,0,0,53,618,1,0,0,0,55,625,1,0,0,0,57,631,1,0,0,0,59,642,1,0,0,0,61,650,1,0,0,0,63,660,1,0,0,0,65,668,1,0,0,0,67,678,1,0,0,0,69,689,1,0,0,0,71,701,1,0,0,0,73,709,1,0,0,0,75,720,1,0,0,0,77,730,1,0,0,0,79,736,1,0,0,0,81,745,1,0,0,0,83,756,1,0,0,0,85,764,1,0,0,0,87,773,1,0,0,0,89,780,1,0,0,0,91,784,1,0,0,0,93,792,1,0,0,0,95,800,1,0,0,0,97,811,1,0,0,0,99,819,1,0,0,0,101,831,1,0,0,0,103,842,1,0,0,0,105,851,1,0,0,0,107,854,1,0,0,0,109,858,1,0,0,0,111,863,1,0,0,0,113,867,1,0,0,0,115,873,1,0,0,0,117,878,1,0,0,0,119,884,1,0,0,0,121,892,1,0,0,0,123,897,1,0,0,0,125,904,1,0,0,0,127,909,1,0,0,0,129,915,1,0,0,0,131,923,1,0,0,0,133,932,1,0,0,0,135,942,1,0,0,0,137,949,1,0,0,0,139,955,1,0,0,0,141,960,1,0,0,0,143,964,1,0,0,0,145,969,1,0,0,0,147,975,1,0,0,0,149,980,1,0,0,0,151,989,1,0,0,0,153,997,1,0,0,0,155,1e3,1,0,0,0,157,1008,1,0,0,0,159,1015,1,0,0,0,161,1018,1,0,0,0,163,1026,1,0,0,0,165,1037,1,0,0,0,167,1043,1,0,0,0,169,1055,1,0,0,0,171,1065,1,0,0,0,173,1076,1,0,0,0,175,1080,1,0,0,0,177,1088,1,0,0,0,179,1098,1,0,0,0,181,1105,1,0,0,0,183,1110,1,0,0,0,185,1115,1,0,0,0,187,1124,1,0,0,0,189,1132,1,0,0,0,191,1139,1,0,0,0,193,1144,1,0,0,0,195,1151,1,0,0,0,197,1157,1,0,0,0,199,1165,1,0,0,0,201,1170,1,0,0,0,203,1180,1,0,0,0,205,1189,1,0,0,0,207,1202,1,0,0,0,209,1212,1,0,0,0,211,1216,1,0,0,0,213,1226,1,0,0,0,215,1230,1,0,0,0,217,1235,1,0,0,0,219,1245,1,0,0,0,221,1256,1,0,0,0,223,1259,1,0,0,0,225,1262,1,0,0,0,227,1270,1,0,0,0,229,1274,1,0,0,0,231,1282,1,0,0,0,233,1291,1,0,0,0,235,1296,1,0,0,0,237,1304,1,0,0,0,239,1309,1,0,0,0,241,1317,1,0,0,0,243,1327,1,0,0,0,245,1335,1,0,0,0,247,1345,1,0,0,0,249,1352,1,0,0,0,251,1362,1,0,0,0,253,1375,1,0,0,0,255,1379,1,0,0,0,257,1390,1,0,0,0,259,1397,1,0,0,0,261,1407,1,0,0,0,263,1411,1,0,0,0,265,1419,1,0,0,0,267,1431,1,0,0,0,269,1438,1,0,0,0,271,1446,1,0,0,0,273,1451,1,0,0,0,275,1460,1,0,0,0,277,1475,1,0,0,0,279,1487,1,0,0,0,281,1499,1,0,0,0,283,1508,1,0,0,0,285,1514,1,0,0,0,287,1519,1,0,0,0,289,1526,1,0,0,0,291,1540,1,0,0,0,293,1548,1,0,0,0,295,1555,1,0,0,0,297,1563,1,0,0,0,299,1571,1,0,0,0,301,1582,1,0,0,0,303,1592,1,0,0,0,305,1597,1,0,0,0,307,1607,1,0,0,0,309,1610,1,0,0,0,311,1621,1,0,0,0,313,1626,1,0,0,0,315,1631,1,0,0,0,317,1637,1,0,0,0,319,1644,1,0,0,0,321,1651,1,0,0,0,323,1657,1,0,0,0,325,1661,1,0,0,0,327,1665,1,0,0,0,329,1673,1,0,0,0,331,1683,1,0,0,0,333,1696,1,0,0,0,335,1703,1,0,0,0,337,1707,1,0,0,0,339,1712,1,0,0,0,341,1722,1,0,0,0,343,1727,1,0,0,0,345,1733,1,0,0,0,347,1737,1,0,0,0,349,1741,1,0,0,0,351,1745,1,0,0,0,353,1749,1,0,0,0,355,1753,1,0,0,0,357,1756,1,0,0,0,359,1759,1,0,0,0,361,1762,1,0,0,0,363,1765,1,0,0,0,365,1768,1,0,0,0,367,1771,1,0,0,0,369,1774,1,0,0,0,371,1777,1,0,0,0,373,1780,1,0,0,0,375,1783,1,0,0,0,377,1786,1,0,0,0,379,1789,1,0,0,0,381,1792,1,0,0,0,383,1795,1,0,0,0,385,1797,1,0,0,0,387,1799,1,0,0,0,389,1801,1,0,0,0,391,1803,1,0,0,0,393,1805,1,0,0,0,395,1807,1,0,0,0,397,1809,1,0,0,0,399,1811,1,0,0,0,401,1813,1,0,0,0,403,1815,1,0,0,0,405,1817,1,0,0,0,407,1819,1,0,0,0,409,1821,1,0,0,0,411,1823,1,0,0,0,413,1825,1,0,0,0,415,1827,1,0,0,0,417,1829,1,0,0,0,419,1831,1,0,0,0,421,1833,1,0,0,0,423,1835,1,0,0,0,425,1837,1,0,0,0,427,1839,1,0,0,0,429,1841,1,0,0,0,431,1843,1,0,0,0,433,1845,1,0,0,0,435,1847,1,0,0,0,437,1854,1,0,0,0,439,1865,1,0,0,0,441,1877,1,0,0,0,443,1918,1,0,0,0,445,1920,1,0,0,0,447,1932,1,0,0,0,449,1944,1,0,0,0,451,452,5,97,0,0,452,453,5,98,0,0,453,454,5,111,0,0,454,455,5,117,0,0,455,456,5,116,0,0,456,2,1,0,0,0,457,458,5,97,0,0,458,459,5,98,0,0,459,460,5,115,0,0,460,461,5,116,0,0,461,462,5,114,0,0,462,463,5,97,0,0,463,464,5,99,0,0,464,465,5,116,0,0,465,4,1,0,0,0,466,467,5,97,0,0,467,468,5,99,0,0,468,469,5,99,0,0,469,470,5,101,0,0,470,471,5,112,0,0,471,472,5,116,0,0,472,6,1,0,0,0,473,474,5,97,0,0,474,475,5,99,0,0,475,476,5,116,0,0,476,477,5,105,0,0,477,478,5,111,0,0,478,479,5,110,0,0,479,8,1,0,0,0,480,481,5,97,0,0,481,482,5,99,0,0,482,483,5,116,0,0,483,484,5,111,0,0,484,485,5,114,0,0,485,10,1,0,0,0,486,487,5,97,0,0,487,488,5,102,0,0,488,489,5,116,0,0,489,490,5,101,0,0,490,491,5,114,0,0,491,12,1,0,0,0,492,493,5,97,0,0,493,494,5,108,0,0,494,495,5,105,0,0,495,496,5,97,0,0,496,497,5,115,0,0,497,14,1,0,0,0,498,499,5,97,0,0,499,500,5,108,0,0,500,501,5,108,0,0,501,16,1,0,0,0,502,503,5,97,0,0,503,504,5,108,0,0,504,505,5,108,0,0,505,506,5,111,0,0,506,507,5,99,0,0,507,508,5,97,0,0,508,509,5,116,0,0,509,510,5,101,0,0,510,18,1,0,0,0,511,512,5,97,0,0,512,513,5,108,0,0,513,514,5,108,0,0,514,515,5,111,0,0,515,516,5,99,0,0,516,517,5,97,0,0,517,518,5,116,0,0,518,519,5,105,0,0,519,520,5,111,0,0,520,521,5,110,0,0,521,20,1,0,0,0,522,523,5,97,0,0,523,524,5,110,0,0,524,525,5,97,0,0,525,526,5,108,0,0,526,527,5,121,0,0,527,528,5,115,0,0,528,529,5,105,0,0,529,530,5,115,0,0,530,22,1,0,0,0,531,532,5,97,0,0,532,533,5,110,0,0,533,534,5,100,0,0,534,24,1,0,0,0,535,536,5,97,0,0,536,537,5,115,0,0,537,26,1,0,0,0,538,539,5,97,0,0,539,540,5,115,0,0,540,541,5,115,0,0,541,542,5,101,0,0,542,543,5,114,0,0,543,544,5,116,0,0,544,28,1,0,0,0,545,546,5,97,0,0,546,547,5,115,0,0,547,548,5,115,0,0,548,549,5,105,0,0,549,550,5,103,0,0,550,551,5,110,0,0,551,30,1,0,0,0,552,553,5,97,0,0,553,554,5,115,0,0,554,555,5,115,0,0,555,556,5,111,0,0,556,557,5,99,0,0,557,32,1,0,0,0,558,559,5,97,0,0,559,560,5,115,0,0,560,561,5,115,0,0,561,562,5,117,0,0,562,563,5,109,0,0,563,564,5,101,0,0,564,34,1,0,0,0,565,566,5,97,0,0,566,567,5,116,0,0,567,36,1,0,0,0,568,569,5,97,0,0,569,570,5,116,0,0,570,571,5,116,0,0,571,572,5,114,0,0,572,573,5,105,0,0,573,574,5,98,0,0,574,575,5,117,0,0,575,576,5,116,0,0,576,577,5,101,0,0,577,38,1,0,0,0,578,579,5,98,0,0,579,580,5,101,0,0,580,581,5,104,0,0,581,582,5,97,0,0,582,583,5,118,0,0,583,584,5,105,0,0,584,585,5,111,0,0,585,586,5,114,0,0,586,40,1,0,0,0,587,588,5,98,0,0,588,589,5,105,0,0,589,590,5,110,0,0,590,591,5,100,0,0,591,42,1,0,0,0,592,593,5,98,0,0,593,594,5,105,0,0,594,595,5,110,0,0,595,596,5,100,0,0,596,597,5,105,0,0,597,598,5,110,0,0,598,599,5,103,0,0,599,44,1,0,0,0,600,601,5,98,0,0,601,602,5,111,0,0,602,603,5,111,0,0,603,604,5,108,0,0,604,46,1,0,0,0,605,606,5,98,0,0,606,607,5,121,0,0,607,48,1,0,0,0,608,609,5,99,0,0,609,610,5,97,0,0,610,611,5,108,0,0,611,612,5,99,0,0,612,50,1,0,0,0,613,614,5,99,0,0,614,615,5,97,0,0,615,616,5,115,0,0,616,617,5,101,0,0,617,52,1,0,0,0,618,619,5,99,0,0,619,620,5,104,0,0,620,621,5,97,0,0,621,622,5,105,0,0,622,623,5,110,0,0,623,624,5,115,0,0,624,54,1,0,0,0,625,626,5,99,0,0,626,627,5,108,0,0,627,628,5,97,0,0,628,629,5,115,0,0,629,630,5,115,0,0,630,56,1,0,0,0,631,632,5,99,0,0,632,633,5,108,0,0,633,634,5,97,0,0,634,635,5,115,0,0,635,636,5,115,0,0,636,637,5,105,0,0,637,638,5,102,0,0,638,639,5,105,0,0,639,640,5,101,0,0,640,641,5,114,0,0,641,58,1,0,0,0,642,643,5,99,0,0,643,644,5,111,0,0,644,645,5,109,0,0,645,646,5,109,0,0,646,647,5,101,0,0,647,648,5,110,0,0,648,649,5,116,0,0,649,60,1,0,0,0,650,651,5,99,0,0,651,652,5,111,0,0,652,653,5,109,0,0,653,654,5,112,0,0,654,655,5,111,0,0,655,656,5,115,0,0,656,657,5,105,0,0,657,658,5,116,0,0,658,659,5,101,0,0,659,62,1,0,0,0,660,661,5,99,0,0,661,662,5,111,0,0,662,663,5,110,0,0,663,664,5,99,0,0,664,665,5,101,0,0,665,666,5,114,0,0,666,667,5,110,0,0,667,64,1,0,0,0,668,669,5,99,0,0,669,670,5,111,0,0,670,671,5,110,0,0,671,672,5,106,0,0,672,673,5,117,0,0,673,674,5,103,0,0,674,675,5,97,0,0,675,676,5,116,0,0,676,677,5,101,0,0,677,66,1,0,0,0,678,679,5,99,0,0,679,680,5,111,0,0,680,681,5,110,0,0,681,682,5,106,0,0,682,683,5,117,0,0,683,684,5,103,0,0,684,685,5,97,0,0,685,686,5,116,0,0,686,687,5,101,0,0,687,688,5,115,0,0,688,68,1,0,0,0,689,690,5,99,0,0,690,691,5,111,0,0,691,692,5,110,0,0,692,693,5,106,0,0,693,694,5,117,0,0,694,695,5,103,0,0,695,696,5,97,0,0,696,697,5,116,0,0,697,698,5,105,0,0,698,699,5,111,0,0,699,700,5,110,0,0,700,70,1,0,0,0,701,702,5,99,0,0,702,703,5,111,0,0,703,704,5,110,0,0,704,705,5,110,0,0,705,706,5,101,0,0,706,707,5,99,0,0,707,708,5,116,0,0,708,72,1,0,0,0,709,710,5,99,0,0,710,711,5,111,0,0,711,712,5,110,0,0,712,713,5,110,0,0,713,714,5,101,0,0,714,715,5,99,0,0,715,716,5,116,0,0,716,717,5,105,0,0,717,718,5,111,0,0,718,719,5,110,0,0,719,74,1,0,0,0,720,721,5,99,0,0,721,722,5,111,0,0,722,723,5,110,0,0,723,724,5,110,0,0,724,725,5,101,0,0,725,726,5,99,0,0,726,727,5,116,0,0,727,728,5,111,0,0,728,729,5,114,0,0,729,76,1,0,0,0,730,731,5,99,0,0,731,732,5,111,0,0,732,733,5,110,0,0,733,734,5,115,0,0,734,735,5,116,0,0,735,78,1,0,0,0,736,737,5,99,0,0,737,738,5,111,0,0,738,739,5,110,0,0,739,740,5,115,0,0,740,741,5,116,0,0,741,742,5,97,0,0,742,743,5,110,0,0,743,744,5,116,0,0,744,80,1,0,0,0,745,746,5,99,0,0,746,747,5,111,0,0,747,748,5,110,0,0,748,749,5,115,0,0,749,750,5,116,0,0,750,751,5,114,0,0,751,752,5,97,0,0,752,753,5,105,0,0,753,754,5,110,0,0,754,755,5,116,0,0,755,82,1,0,0,0,756,757,5,99,0,0,757,758,5,114,0,0,758,759,5,111,0,0,759,760,5,115,0,0,760,761,5,115,0,0,761,762,5,101,0,0,762,763,5,115,0,0,763,84,1,0,0,0,764,765,5,100,0,0,765,766,5,97,0,0,766,767,5,116,0,0,767,768,5,97,0,0,768,769,5,116,0,0,769,770,5,121,0,0,770,771,5,112,0,0,771,772,5,101,0,0,772,86,1,0,0,0,773,774,5,100,0,0,774,775,5,101,0,0,775,776,5,99,0,0,776,777,5,105,0,0,777,778,5,100,0,0,778,779,5,101,0,0,779,88,1,0,0,0,780,781,5,100,0,0,781,782,5,101,0,0,782,783,5,102,0,0,783,90,1,0,0,0,784,785,5,100,0,0,785,786,5,101,0,0,786,787,5,102,0,0,787,788,5,97,0,0,788,789,5,117,0,0,789,790,5,108,0,0,790,791,5,116,0,0,791,92,1,0,0,0,792,793,5,100,0,0,793,794,5,101,0,0,794,795,5,102,0,0,795,796,5,105,0,0,796,797,5,110,0,0,797,798,5,101,0,0,798,799,5,100,0,0,799,94,1,0,0,0,800,801,5,100,0,0,801,802,5,101,0,0,802,803,5,112,0,0,803,804,5,101,0,0,804,805,5,110,0,0,805,806,5,100,0,0,806,807,5,101,0,0,807,808,5,110,0,0,808,809,5,99,0,0,809,810,5,121,0,0,810,96,1,0,0,0,811,812,5,100,0,0,812,813,5,101,0,0,813,814,5,114,0,0,814,815,5,105,0,0,815,816,5,118,0,0,816,817,5,101,0,0,817,818,5,100,0,0,818,98,1,0,0,0,819,820,5,100,0,0,820,821,5,105,0,0,821,822,5,102,0,0,822,823,5,102,0,0,823,824,5,101,0,0,824,825,5,114,0,0,825,826,5,101,0,0,826,827,5,110,0,0,827,828,5,99,0,0,828,829,5,101,0,0,829,830,5,115,0,0,830,100,1,0,0,0,831,832,5,100,0,0,832,833,5,105,0,0,833,834,5,115,0,0,834,835,5,106,0,0,835,836,5,111,0,0,836,837,5,105,0,0,837,838,5,110,0,0,838,839,5,105,0,0,839,840,5,110,0,0,840,841,5,103,0,0,841,102,1,0,0,0,842,843,5,100,0,0,843,844,5,105,0,0,844,845,5,115,0,0,845,846,5,106,0,0,846,847,5,111,0,0,847,848,5,105,0,0,848,849,5,110,0,0,849,850,5,116,0,0,850,104,1,0,0,0,851,852,5,100,0,0,852,853,5,111,0,0,853,106,1,0,0,0,854,855,5,100,0,0,855,856,5,111,0,0,856,857,5,99,0,0,857,108,1,0,0,0,858,859,5,101,0,0,859,860,5,108,0,0,860,861,5,115,0,0,861,862,5,101,0,0,862,110,1,0,0,0,863,864,5,101,0,0,864,865,5,110,0,0,865,866,5,100,0,0,866,112,1,0,0,0,867,868,5,101,0,0,868,869,5,110,0,0,869,870,5,116,0,0,870,871,5,114,0,0,871,872,5,121,0,0,872,114,1,0,0,0,873,874,5,101,0,0,874,875,5,110,0,0,875,876,5,117,0,0,876,877,5,109,0,0,877,116,1,0,0,0,878,879,5,101,0,0,879,880,5,118,0,0,880,881,5,101,0,0,881,882,5,110,0,0,882,883,5,116,0,0,883,118,1,0,0,0,884,885,5,101,0,0,885,886,5,120,0,0,886,887,5,104,0,0,887,888,5,105,0,0,888,889,5,98,0,0,889,890,5,105,0,0,890,891,5,116,0,0,891,120,1,0,0,0,892,893,5,101,0,0,893,894,5,120,0,0,894,895,5,105,0,0,895,896,5,116,0,0,896,122,1,0,0,0,897,898,5,101,0,0,898,899,5,120,0,0,899,900,5,112,0,0,900,901,5,111,0,0,901,902,5,115,0,0,902,903,5,101,0,0,903,124,1,0,0,0,904,905,5,101,0,0,905,906,5,120,0,0,906,907,5,112,0,0,907,908,5,114,0,0,908,126,1,0,0,0,909,910,5,102,0,0,910,911,5,97,0,0,911,912,5,108,0,0,912,913,5,115,0,0,913,914,5,101,0,0,914,128,1,0,0,0,915,916,5,102,0,0,916,917,5,101,0,0,917,918,5,97,0,0,918,919,5,116,0,0,919,920,5,117,0,0,920,921,5,114,0,0,921,922,5,101,0,0,922,130,1,0,0,0,923,924,5,102,0,0,924,925,5,101,0,0,925,926,5,97,0,0,926,927,5,116,0,0,927,928,5,117,0,0,928,929,5,114,0,0,929,930,5,101,0,0,930,931,5,100,0,0,931,132,1,0,0,0,932,933,5,102,0,0,933,934,5,101,0,0,934,935,5,97,0,0,935,936,5,116,0,0,936,937,5,117,0,0,937,938,5,114,0,0,938,939,5,105,0,0,939,940,5,110,0,0,940,941,5,103,0,0,941,134,1,0,0,0,942,943,5,102,0,0,943,944,5,105,0,0,944,945,5,108,0,0,945,946,5,116,0,0,946,947,5,101,0,0,947,948,5,114,0,0,948,136,1,0,0,0,949,950,5,102,0,0,950,951,5,105,0,0,951,952,5,114,0,0,952,953,5,115,0,0,953,954,5,116,0,0,954,138,1,0,0,0,955,956,5,102,0,0,956,957,5,108,0,0,957,958,5,111,0,0,958,959,5,119,0,0,959,140,1,0,0,0,960,961,5,102,0,0,961,962,5,111,0,0,962,963,5,114,0,0,963,142,1,0,0,0,964,965,5,102,0,0,965,966,5,111,0,0,966,967,5,114,0,0,967,968,5,107,0,0,968,144,1,0,0,0,969,970,5,102,0,0,970,971,5,114,0,0,971,972,5,97,0,0,972,973,5,109,0,0,973,974,5,101,0,0,974,146,1,0,0,0,975,976,5,102,0,0,976,977,5,114,0,0,977,978,5,111,0,0,978,979,5,109,0,0,979,148,1,0,0,0,980,981,5,102,0,0,981,982,5,117,0,0,982,983,5,110,0,0,983,984,5,99,0,0,984,985,5,116,0,0,985,986,5,105,0,0,986,987,5,111,0,0,987,988,5,110,0,0,988,150,1,0,0,0,989,990,5,104,0,0,990,991,5,97,0,0,991,992,5,115,0,0,992,993,5,116,0,0,993,994,5,121,0,0,994,995,5,112,0,0,995,996,5,101,0,0,996,152,1,0,0,0,997,998,5,105,0,0,998,999,5,102,0,0,999,154,1,0,0,0,1e3,1001,5,105,0,0,1001,1002,5,109,0,0,1002,1003,5,112,0,0,1003,1004,5,108,0,0,1004,1005,5,105,0,0,1005,1006,5,101,0,0,1006,1007,5,115,0,0,1007,156,1,0,0,0,1008,1009,5,105,0,0,1009,1010,5,109,0,0,1010,1011,5,112,0,0,1011,1012,5,111,0,0,1012,1013,5,114,0,0,1013,1014,5,116,0,0,1014,158,1,0,0,0,1015,1016,5,105,0,0,1016,1017,5,110,0,0,1017,160,1,0,0,0,1018,1019,5,105,0,0,1019,1020,5,110,0,0,1020,1021,5,99,0,0,1021,1022,5,108,0,0,1022,1023,5,117,0,0,1023,1024,5,100,0,0,1024,1025,5,101,0,0,1025,162,1,0,0,0,1026,1027,5,105,0,0,1027,1028,5,110,0,0,1028,1029,5,100,0,0,1029,1030,5,105,0,0,1030,1031,5,118,0,0,1031,1032,5,105,0,0,1032,1033,5,100,0,0,1033,1034,5,117,0,0,1034,1035,5,97,0,0,1035,1036,5,108,0,0,1036,164,1,0,0,0,1037,1038,5,105,0,0,1038,1039,5,110,0,0,1039,1040,5,111,0,0,1040,1041,5,117,0,0,1041,1042,5,116,0,0,1042,166,1,0,0,0,1043,1044,5,105,0,0,1044,1045,5,110,0,0,1045,1046,5,116,0,0,1046,1047,5,101,0,0,1047,1048,5,114,0,0,1048,1049,5,97,0,0,1049,1050,5,99,0,0,1050,1051,5,116,0,0,1051,1052,5,105,0,0,1052,1053,5,111,0,0,1053,1054,5,110,0,0,1054,168,1,0,0,0,1055,1056,5,105,0,0,1056,1057,5,110,0,0,1057,1058,5,116,0,0,1058,1059,5,101,0,0,1059,1060,5,114,0,0,1060,1061,5,102,0,0,1061,1062,5,97,0,0,1062,1063,5,99,0,0,1063,1064,5,101,0,0,1064,170,1,0,0,0,1065,1066,5,105,0,0,1066,1067,5,110,0,0,1067,1068,5,116,0,0,1068,1069,5,101,0,0,1069,1070,5,114,0,0,1070,1071,5,115,0,0,1071,1072,5,101,0,0,1072,1073,5,99,0,0,1073,1074,5,116,0,0,1074,1075,5,115,0,0,1075,172,1,0,0,0,1076,1077,5,105,0,0,1077,1078,5,110,0,0,1078,1079,5,118,0,0,1079,174,1,0,0,0,1080,1081,5,105,0,0,1081,1082,5,110,0,0,1082,1083,5,118,0,0,1083,1084,5,101,0,0,1084,1085,5,114,0,0,1085,1086,5,115,0,0,1086,1087,5,101,0,0,1087,176,1,0,0,0,1088,1089,5,105,0,0,1089,1090,5,110,0,0,1090,1091,5,118,0,0,1091,1092,5,101,0,0,1092,1093,5,114,0,0,1093,1094,5,116,0,0,1094,1095,5,105,0,0,1095,1096,5,110,0,0,1096,1097,5,103,0,0,1097,178,1,0,0,0,1098,1099,5,105,0,0,1099,1100,5,115,0,0,1100,1101,5,116,0,0,1101,1102,5,121,0,0,1102,1103,5,112,0,0,1103,1104,5,101,0,0,1104,180,1,0,0,0,1105,1106,5,105,0,0,1106,1107,5,116,0,0,1107,1108,5,101,0,0,1108,1109,5,109,0,0,1109,182,1,0,0,0,1110,1111,5,106,0,0,1111,1112,5,111,0,0,1112,1113,5,105,0,0,1113,1114,5,110,0,0,1114,184,1,0,0,0,1115,1116,5,108,0,0,1116,1117,5,97,0,0,1117,1118,5,110,0,0,1118,1119,5,103,0,0,1119,1120,5,117,0,0,1120,1121,5,97,0,0,1121,1122,5,103,0,0,1122,1123,5,101,0,0,1123,186,1,0,0,0,1124,1125,5,108,0,0,1125,1126,5,105,0,0,1126,1127,5,98,0,0,1127,1128,5,114,0,0,1128,1129,5,97,0,0,1129,1130,5,114,0,0,1130,1131,5,121,0,0,1131,188,1,0,0,0,1132,1133,5,108,0,0,1133,1134,5,111,0,0,1134,1135,5,99,0,0,1135,1136,5,97,0,0,1136,1137,5,108,0,0,1137,1138,5,101,0,0,1138,190,1,0,0,0,1139,1140,5,108,0,0,1140,1141,5,111,0,0,1141,1142,5,111,0,0,1142,1143,5,112,0,0,1143,192,1,0,0,0,1144,1145,5,109,0,0,1145,1146,5,101,0,0,1146,1147,5,109,0,0,1147,1148,5,98,0,0,1148,1149,5,101,0,0,1149,1150,5,114,0,0,1150,194,1,0,0,0,1151,1152,5,109,0,0,1152,1153,5,101,0,0,1153,1154,5,114,0,0,1154,1155,5,103,0,0,1155,1156,5,101,0,0,1156,196,1,0,0,0,1157,1158,5,109,0,0,1158,1159,5,101,0,0,1159,1160,5,115,0,0,1160,1161,5,115,0,0,1161,1162,5,97,0,0,1162,1163,5,103,0,0,1163,1164,5,101,0,0,1164,198,1,0,0,0,1165,1166,5,109,0,0,1166,1167,5,101,0,0,1167,1168,5,116,0,0,1168,1169,5,97,0,0,1169,200,1,0,0,0,1170,1171,5,109,0,0,1171,1172,5,101,0,0,1172,1173,5,116,0,0,1173,1174,5,97,0,0,1174,1175,5,99,0,0,1175,1176,5,108,0,0,1176,1177,5,97,0,0,1177,1178,5,115,0,0,1178,1179,5,115,0,0,1179,202,1,0,0,0,1180,1181,5,109,0,0,1181,1182,5,101,0,0,1182,1183,5,116,0,0,1183,1184,5,97,0,0,1184,1185,5,100,0,0,1185,1186,5,97,0,0,1186,1187,5,116,0,0,1187,1188,5,97,0,0,1188,204,1,0,0,0,1189,1190,5,109,0,0,1190,1191,5,117,0,0,1191,1192,5,108,0,0,1192,1193,5,116,0,0,1193,1194,5,105,0,0,1194,1195,5,112,0,0,1195,1196,5,108,0,0,1196,1197,5,105,0,0,1197,1198,5,99,0,0,1198,1199,5,105,0,0,1199,1200,5,116,0,0,1200,1201,5,121,0,0,1201,206,1,0,0,0,1202,1203,5,110,0,0,1203,1204,5,97,0,0,1204,1205,5,109,0,0,1205,1206,5,101,0,0,1206,1207,5,115,0,0,1207,1208,5,112,0,0,1208,1209,5,97,0,0,1209,1210,5,99,0,0,1210,1211,5,101,0,0,1211,208,1,0,0,0,1212,1213,5,110,0,0,1213,1214,5,101,0,0,1214,1215,5,119,0,0,1215,210,1,0,0,0,1216,1217,5,110,0,0,1217,1218,5,111,0,0,1218,1219,5,110,0,0,1219,1220,5,117,0,0,1220,1221,5,110,0,0,1221,1222,5,105,0,0,1222,1223,5,113,0,0,1223,1224,5,117,0,0,1224,1225,5,101,0,0,1225,212,1,0,0,0,1226,1227,5,110,0,0,1227,1228,5,111,0,0,1228,1229,5,116,0,0,1229,214,1,0,0,0,1230,1231,5,110,0,0,1231,1232,5,117,0,0,1232,1233,5,108,0,0,1233,1234,5,108,0,0,1234,216,1,0,0,0,1235,1236,5,111,0,0,1236,1237,5,98,0,0,1237,1238,5,106,0,0,1238,1239,5,101,0,0,1239,1240,5,99,0,0,1240,1241,5,116,0,0,1241,1242,5,105,0,0,1242,1243,5,118,0,0,1243,1244,5,101,0,0,1244,218,1,0,0,0,1245,1246,5,111,0,0,1246,1247,5,99,0,0,1247,1248,5,99,0,0,1248,1249,5,117,0,0,1249,1250,5,114,0,0,1250,1251,5,114,0,0,1251,1252,5,101,0,0,1252,1253,5,110,0,0,1253,1254,5,99,0,0,1254,1255,5,101,0,0,1255,220,1,0,0,0,1256,1257,5,111,0,0,1257,1258,5,102,0,0,1258,222,1,0,0,0,1259,1260,5,111,0,0,1260,1261,5,114,0,0,1261,224,1,0,0,0,1262,1263,5,111,0,0,1263,1264,5,114,0,0,1264,1265,5,100,0,0,1265,1266,5,101,0,0,1266,1267,5,114,0,0,1267,1268,5,101,0,0,1268,1269,5,100,0,0,1269,226,1,0,0,0,1270,1271,5,111,0,0,1271,1272,5,117,0,0,1272,1273,5,116,0,0,1273,228,1,0,0,0,1274,1275,5,112,0,0,1275,1276,5,97,0,0,1276,1277,5,99,0,0,1277,1278,5,107,0,0,1278,1279,5,97,0,0,1279,1280,5,103,0,0,1280,1281,5,101,0,0,1281,230,1,0,0,0,1282,1283,5,112,0,0,1283,1284,5,97,0,0,1284,1285,5,114,0,0,1285,1286,5,97,0,0,1286,1287,5,108,0,0,1287,1288,5,108,0,0,1288,1289,5,101,0,0,1289,1290,5,108,0,0,1290,232,1,0,0,0,1291,1292,5,112,0,0,1292,1293,5,97,0,0,1293,1294,5,114,0,0,1294,1295,5,116,0,0,1295,234,1,0,0,0,1296,1297,5,112,0,0,1297,1298,5,101,0,0,1298,1299,5,114,0,0,1299,1300,5,102,0,0,1300,1301,5,111,0,0,1301,1302,5,114,0,0,1302,1303,5,109,0,0,1303,236,1,0,0,0,1304,1305,5,112,0,0,1305,1306,5,111,0,0,1306,1307,5,114,0,0,1307,1308,5,116,0,0,1308,238,1,0,0,0,1309,1310,5,112,0,0,1310,1311,5,111,0,0,1311,1312,5,114,0,0,1312,1313,5,116,0,0,1313,1314,5,105,0,0,1314,1315,5,111,0,0,1315,1316,5,110,0,0,1316,240,1,0,0,0,1317,1318,5,112,0,0,1318,1319,5,114,0,0,1319,1320,5,101,0,0,1320,1321,5,100,0,0,1321,1322,5,105,0,0,1322,1323,5,99,0,0,1323,1324,5,97,0,0,1324,1325,5,116,0,0,1325,1326,5,101,0,0,1326,242,1,0,0,0,1327,1328,5,112,0,0,1328,1329,5,114,0,0,1329,1330,5,105,0,0,1330,1331,5,118,0,0,1331,1332,5,97,0,0,1332,1333,5,116,0,0,1333,1334,5,101,0,0,1334,244,1,0,0,0,1335,1336,5,112,0,0,1336,1337,5,114,0,0,1337,1338,5,111,0,0,1338,1339,5,116,0,0,1339,1340,5,101,0,0,1340,1341,5,99,0,0,1341,1342,5,116,0,0,1342,1343,5,101,0,0,1343,1344,5,100,0,0,1344,246,1,0,0,0,1345,1346,5,112,0,0,1346,1347,5,117,0,0,1347,1348,5,98,0,0,1348,1349,5,108,0,0,1349,1350,5,105,0,0,1350,1351,5,99,0,0,1351,248,1,0,0,0,1352,1353,5,114,0,0,1353,1354,5,101,0,0,1354,1355,5,100,0,0,1355,1356,5,101,0,0,1356,1357,5,102,0,0,1357,1358,5,105,0,0,1358,1359,5,110,0,0,1359,1360,5,101,0,0,1360,1361,5,115,0,0,1361,250,1,0,0,0,1362,1363,5,114,0,0,1363,1364,5,101,0,0,1364,1365,5,100,0,0,1365,1366,5,101,0,0,1366,1367,5,102,0,0,1367,1368,5,105,0,0,1368,1369,5,110,0,0,1369,1370,5,105,0,0,1370,1371,5,116,0,0,1371,1372,5,105,0,0,1372,1373,5,111,0,0,1373,1374,5,110,0,0,1374,252,1,0,0,0,1375,1376,5,114,0,0,1376,1377,5,101,0,0,1377,1378,5,102,0,0,1378,254,1,0,0,0,1379,1380,5,114,0,0,1380,1381,5,101,0,0,1381,1382,5,102,0,0,1382,1383,5,101,0,0,1383,1384,5,114,0,0,1384,1385,5,101,0,0,1385,1386,5,110,0,0,1386,1387,5,99,0,0,1387,1388,5,101,0,0,1388,1389,5,115,0,0,1389,256,1,0,0,0,1390,1391,5,114,0,0,1391,1392,5,101,0,0,1392,1393,5,110,0,0,1393,1394,5,100,0,0,1394,1395,5,101,0,0,1395,1396,5,114,0,0,1396,258,1,0,0,0,1397,1398,5,114,0,0,1398,1399,5,101,0,0,1399,1400,5,110,0,0,1400,1401,5,100,0,0,1401,1402,5,101,0,0,1402,1403,5,114,0,0,1403,1404,5,105,0,0,1404,1405,5,110,0,0,1405,1406,5,103,0,0,1406,260,1,0,0,0,1407,1408,5,114,0,0,1408,1409,5,101,0,0,1409,1410,5,112,0,0,1410,262,1,0,0,0,1411,1412,5,114,0,0,1412,1413,5,101,0,0,1413,1414,5,113,0,0,1414,1415,5,117,0,0,1415,1416,5,105,0,0,1416,1417,5,114,0,0,1417,1418,5,101,0,0,1418,264,1,0,0,0,1419,1420,5,114,0,0,1420,1421,5,101,0,0,1421,1422,5,113,0,0,1422,1423,5,117,0,0,1423,1424,5,105,0,0,1424,1425,5,114,0,0,1425,1426,5,101,0,0,1426,1427,5,109,0,0,1427,1428,5,101,0,0,1428,1429,5,110,0,0,1429,1430,5,116,0,0,1430,266,1,0,0,0,1431,1432,5,114,0,0,1432,1433,5,101,0,0,1433,1434,5,116,0,0,1434,1435,5,117,0,0,1435,1436,5,114,0,0,1436,1437,5,110,0,0,1437,268,1,0,0,0,1438,1439,5,115,0,0,1439,1440,5,97,0,0,1440,1441,5,116,0,0,1441,1442,5,105,0,0,1442,1443,5,115,0,0,1443,1444,5,102,0,0,1444,1445,5,121,0,0,1445,270,1,0,0,0,1446,1447,5,115,0,0,1447,1448,5,101,0,0,1448,1449,5,110,0,0,1449,1450,5,100,0,0,1450,272,1,0,0,0,1451,1452,5,115,0,0,1452,1453,5,110,0,0,1453,1454,5,97,0,0,1454,1455,5,112,0,0,1455,1456,5,115,0,0,1456,1457,5,104,0,0,1457,1458,5,111,0,0,1458,1459,5,116,0,0,1459,274,1,0,0,0,1460,1461,5,115,0,0,1461,1462,5,112,0,0,1462,1463,5,101,0,0,1463,1464,5,99,0,0,1464,1465,5,105,0,0,1465,1466,5,97,0,0,1466,1467,5,108,0,0,1467,1468,5,105,0,0,1468,1469,5,122,0,0,1469,1470,5,97,0,0,1470,1471,5,116,0,0,1471,1472,5,105,0,0,1472,1473,5,111,0,0,1473,1474,5,110,0,0,1474,276,1,0,0,0,1475,1476,5,115,0,0,1476,1477,5,112,0,0,1477,1478,5,101,0,0,1478,1479,5,99,0,0,1479,1480,5,105,0,0,1480,1481,5,97,0,0,1481,1482,5,108,0,0,1482,1483,5,105,0,0,1483,1484,5,122,0,0,1484,1485,5,101,0,0,1485,1486,5,115,0,0,1486,278,1,0,0,0,1487,1488,5,115,0,0,1488,1489,5,116,0,0,1489,1490,5,97,0,0,1490,1491,5,107,0,0,1491,1492,5,101,0,0,1492,1493,5,104,0,0,1493,1494,5,111,0,0,1494,1495,5,108,0,0,1495,1496,5,100,0,0,1496,1497,5,101,0,0,1497,1498,5,114,0,0,1498,280,1,0,0,0,1499,1500,5,115,0,0,1500,1501,5,116,0,0,1501,1502,5,97,0,0,1502,1503,5,110,0,0,1503,1504,5,100,0,0,1504,1505,5,97,0,0,1505,1506,5,114,0,0,1506,1507,5,100,0,0,1507,282,1,0,0,0,1508,1509,5,115,0,0,1509,1510,5,116,0,0,1510,1511,5,97,0,0,1511,1512,5,116,0,0,1512,1513,5,101,0,0,1513,284,1,0,0,0,1514,1515,5,115,0,0,1515,1516,5,116,0,0,1516,1517,5,101,0,0,1517,1518,5,112,0,0,1518,286,1,0,0,0,1519,1520,5,115,0,0,1520,1521,5,116,0,0,1521,1522,5,114,0,0,1522,1523,5,117,0,0,1523,1524,5,99,0,0,1524,1525,5,116,0,0,1525,288,1,0,0,0,1526,1527,5,115,0,0,1527,1528,5,117,0,0,1528,1529,5,98,0,0,1529,1530,5,99,0,0,1530,1531,5,108,0,0,1531,1532,5,97,0,0,1532,1533,5,115,0,0,1533,1534,5,115,0,0,1534,1535,5,105,0,0,1535,1536,5,102,0,0,1536,1537,5,105,0,0,1537,1538,5,101,0,0,1538,1539,5,114,0,0,1539,290,1,0,0,0,1540,1541,5,115,0,0,1541,1542,5,117,0,0,1542,1543,5,98,0,0,1543,1544,5,106,0,0,1544,1545,5,101,0,0,1545,1546,5,99,0,0,1546,1547,5,116,0,0,1547,292,1,0,0,0,1548,1549,5,115,0,0,1549,1550,5,117,0,0,1550,1551,5,98,0,0,1551,1552,5,115,0,0,1552,1553,5,101,0,0,1553,1554,5,116,0,0,1554,294,1,0,0,0,1555,1556,5,115,0,0,1556,1557,5,117,0,0,1557,1558,5,98,0,0,1558,1559,5,115,0,0,1559,1560,5,101,0,0,1560,1561,5,116,0,0,1561,1562,5,115,0,0,1562,296,1,0,0,0,1563,1564,5,115,0,0,1564,1565,5,117,0,0,1565,1566,5,98,0,0,1566,1567,5,116,0,0,1567,1568,5,121,0,0,1568,1569,5,112,0,0,1569,1570,5,101,0,0,1570,298,1,0,0,0,1571,1572,5,115,0,0,1572,1573,5,117,0,0,1573,1574,5,99,0,0,1574,1575,5,99,0,0,1575,1576,5,101,0,0,1576,1577,5,115,0,0,1577,1578,5,115,0,0,1578,1579,5,105,0,0,1579,1580,5,111,0,0,1580,1581,5,110,0,0,1581,300,1,0,0,0,1582,1583,5,116,0,0,1583,1584,5,101,0,0,1584,1585,5,114,0,0,1585,1586,5,109,0,0,1586,1587,5,105,0,0,1587,1588,5,110,0,0,1588,1589,5,97,0,0,1589,1590,5,116,0,0,1590,1591,5,101,0,0,1591,302,1,0,0,0,1592,1593,5,116,0,0,1593,1594,5,104,0,0,1594,1595,5,101,0,0,1595,1596,5,110,0,0,1596,304,1,0,0,0,1597,1598,5,116,0,0,1598,1599,5,105,0,0,1599,1600,5,109,0,0,1600,1601,5,101,0,0,1601,1602,5,115,0,0,1602,1603,5,108,0,0,1603,1604,5,105,0,0,1604,1605,5,99,0,0,1605,1606,5,101,0,0,1606,306,1,0,0,0,1607,1608,5,116,0,0,1608,1609,5,111,0,0,1609,308,1,0,0,0,1610,1611,5,116,0,0,1611,1612,5,114,0,0,1612,1613,5,97,0,0,1613,1614,5,110,0,0,1614,1615,5,115,0,0,1615,1616,5,105,0,0,1616,1617,5,116,0,0,1617,1618,5,105,0,0,1618,1619,5,111,0,0,1619,1620,5,110,0,0,1620,310,1,0,0,0,1621,1622,5,116,0,0,1622,1623,5,114,0,0,1623,1624,5,117,0,0,1624,1625,5,101,0,0,1625,312,1,0,0,0,1626,1627,5,116,0,0,1627,1628,5,121,0,0,1628,1629,5,112,0,0,1629,1630,5,101,0,0,1630,314,1,0,0,0,1631,1632,5,116,0,0,1632,1633,5,121,0,0,1633,1634,5,112,0,0,1634,1635,5,101,0,0,1635,1636,5,100,0,0,1636,316,1,0,0,0,1637,1638,5,116,0,0,1638,1639,5,121,0,0,1639,1640,5,112,0,0,1640,1641,5,105,0,0,1641,1642,5,110,0,0,1642,1643,5,103,0,0,1643,318,1,0,0,0,1644,1645,5,117,0,0,1645,1646,5,110,0,0,1646,1647,5,105,0,0,1647,1648,5,111,0,0,1648,1649,5,110,0,0,1649,1650,5,115,0,0,1650,320,1,0,0,0,1651,1652,5,117,0,0,1652,1653,5,110,0,0,1653,1654,5,116,0,0,1654,1655,5,105,0,0,1655,1656,5,108,0,0,1656,322,1,0,0,0,1657,1658,5,117,0,0,1658,1659,5,115,0,0,1659,1660,5,101,0,0,1660,324,1,0,0,0,1661,1662,5,118,0,0,1662,1663,5,97,0,0,1663,1664,5,114,0,0,1664,326,1,0,0,0,1665,1666,5,118,0,0,1666,1667,5,97,0,0,1667,1668,5,114,0,0,1668,1669,5,105,0,0,1669,1670,5,97,0,0,1670,1671,5,110,0,0,1671,1672,5,116,0,0,1672,328,1,0,0,0,1673,1674,5,118,0,0,1674,1675,5,97,0,0,1675,1676,5,114,0,0,1676,1677,5,105,0,0,1677,1678,5,97,0,0,1678,1679,5,116,0,0,1679,1680,5,105,0,0,1680,1681,5,111,0,0,1681,1682,5,110,0,0,1682,330,1,0,0,0,1683,1684,5,118,0,0,1684,1685,5,101,0,0,1685,1686,5,114,0,0,1686,1687,5,105,0,0,1687,1688,5,102,0,0,1688,1689,5,105,0,0,1689,1690,5,99,0,0,1690,1691,5,97,0,0,1691,1692,5,116,0,0,1692,1693,5,105,0,0,1693,1694,5,111,0,0,1694,1695,5,110,0,0,1695,332,1,0,0,0,1696,1697,5,118,0,0,1697,1698,5,101,0,0,1698,1699,5,114,0,0,1699,1700,5,105,0,0,1700,1701,5,102,0,0,1701,1702,5,121,0,0,1702,334,1,0,0,0,1703,1704,5,118,0,0,1704,1705,5,105,0,0,1705,1706,5,97,0,0,1706,336,1,0,0,0,1707,1708,5,118,0,0,1708,1709,5,105,0,0,1709,1710,5,101,0,0,1710,1711,5,119,0,0,1711,338,1,0,0,0,1712,1713,5,118,0,0,1713,1714,5,105,0,0,1714,1715,5,101,0,0,1715,1716,5,119,0,0,1716,1717,5,112,0,0,1717,1718,5,111,0,0,1718,1719,5,105,0,0,1719,1720,5,110,0,0,1720,1721,5,116,0,0,1721,340,1,0,0,0,1722,1723,5,119,0,0,1723,1724,5,104,0,0,1724,1725,5,101,0,0,1725,1726,5,110,0,0,1726,342,1,0,0,0,1727,1728,5,119,0,0,1728,1729,5,104,0,0,1729,1730,5,105,0,0,1730,1731,5,108,0,0,1731,1732,5,101,0,0,1732,344,1,0,0,0,1733,1734,5,120,0,0,1734,1735,5,111,0,0,1735,1736,5,114,0,0,1736,346,1,0,0,0,1737,1738,5,33,0,0,1738,1739,5,61,0,0,1739,1740,5,61,0,0,1740,348,1,0,0,0,1741,1742,5,58,0,0,1742,1743,5,58,0,0,1743,1744,5,62,0,0,1744,350,1,0,0,0,1745,1746,5,58,0,0,1746,1747,5,62,0,0,1747,1748,5,62,0,0,1748,352,1,0,0,0,1749,1750,5,61,0,0,1750,1751,5,61,0,0,1751,1752,5,61,0,0,1752,354,1,0,0,0,1753,1754,5,33,0,0,1754,1755,5,61,0,0,1755,356,1,0,0,0,1756,1757,5,42,0,0,1757,1758,5,42,0,0,1758,358,1,0,0,0,1759,1760,5,45,0,0,1760,1761,5,62,0,0,1761,360,1,0,0,0,1762,1763,5,46,0,0,1763,1764,5,46,0,0,1764,362,1,0,0,0,1765,1766,5,46,0,0,1766,1767,5,63,0,0,1767,364,1,0,0,0,1768,1769,5,58,0,0,1769,1770,5,58,0,0,1770,366,1,0,0,0,1771,1772,5,58,0,0,1772,1773,5,61,0,0,1773,368,1,0,0,0,1774,1775,5,58,0,0,1775,1776,5,62,0,0,1776,370,1,0,0,0,1777,1778,5,60,0,0,1778,1779,5,61,0,0,1779,372,1,0,0,0,1780,1781,5,61,0,0,1781,1782,5,61,0,0,1782,374,1,0,0,0,1783,1784,5,61,0,0,1784,1785,5,62,0,0,1785,376,1,0,0,0,1786,1787,5,62,0,0,1787,1788,5,61,0,0,1788,378,1,0,0,0,1789,1790,5,63,0,0,1790,1791,5,63,0,0,1791,380,1,0,0,0,1792,1793,5,64,0,0,1793,1794,5,64,0,0,1794,382,1,0,0,0,1795,1796,5,35,0,0,1796,384,1,0,0,0,1797,1798,5,36,0,0,1798,386,1,0,0,0,1799,1800,5,37,0,0,1800,388,1,0,0,0,1801,1802,5,38,0,0,1802,390,1,0,0,0,1803,1804,5,40,0,0,1804,392,1,0,0,0,1805,1806,5,41,0,0,1806,394,1,0,0,0,1807,1808,5,42,0,0,1808,396,1,0,0,0,1809,1810,5,43,0,0,1810,398,1,0,0,0,1811,1812,5,44,0,0,1812,400,1,0,0,0,1813,1814,5,45,0,0,1814,402,1,0,0,0,1815,1816,5,46,0,0,1816,404,1,0,0,0,1817,1818,5,47,0,0,1818,406,1,0,0,0,1819,1820,5,58,0,0,1820,408,1,0,0,0,1821,1822,5,59,0,0,1822,410,1,0,0,0,1823,1824,5,60,0,0,1824,412,1,0,0,0,1825,1826,5,61,0,0,1826,414,1,0,0,0,1827,1828,5,62,0,0,1828,416,1,0,0,0,1829,1830,5,63,0,0,1830,418,1,0,0,0,1831,1832,5,64,0,0,1832,420,1,0,0,0,1833,1834,5,91,0,0,1834,422,1,0,0,0,1835,1836,5,93,0,0,1836,424,1,0,0,0,1837,1838,5,94,0,0,1838,426,1,0,0,0,1839,1840,5,123,0,0,1840,428,1,0,0,0,1841,1842,5,124,0,0,1842,430,1,0,0,0,1843,1844,5,125,0,0,1844,432,1,0,0,0,1845,1846,5,126,0,0,1846,434,1,0,0,0,1847,1851,7,0,0,0,1848,1850,7,1,0,0,1849,1848,1,0,0,0,1850,1853,1,0,0,0,1851,1849,1,0,0,0,1851,1852,1,0,0,0,1852,436,1,0,0,0,1853,1851,1,0,0,0,1854,1860,5,39,0,0,1855,1856,5,92,0,0,1856,1859,9,0,0,0,1857,1859,8,2,0,0,1858,1855,1,0,0,0,1858,1857,1,0,0,0,1859,1862,1,0,0,0,1860,1858,1,0,0,0,1860,1861,1,0,0,0,1861,1863,1,0,0,0,1862,1860,1,0,0,0,1863,1864,5,39,0,0,1864,438,1,0,0,0,1865,1871,5,34,0,0,1866,1867,5,92,0,0,1867,1870,9,0,0,0,1868,1870,8,3,0,0,1869,1866,1,0,0,0,1869,1868,1,0,0,0,1870,1873,1,0,0,0,1871,1869,1,0,0,0,1871,1872,1,0,0,0,1872,1874,1,0,0,0,1873,1871,1,0,0,0,1874,1875,5,34,0,0,1875,440,1,0,0,0,1876,1878,7,4,0,0,1877,1876,1,0,0,0,1878,1879,1,0,0,0,1879,1877,1,0,0,0,1879,1880,1,0,0,0,1880,442,1,0,0,0,1881,1883,7,4,0,0,1882,1881,1,0,0,0,1883,1886,1,0,0,0,1884,1882,1,0,0,0,1884,1885,1,0,0,0,1885,1887,1,0,0,0,1886,1884,1,0,0,0,1887,1889,5,46,0,0,1888,1890,7,4,0,0,1889,1888,1,0,0,0,1890,1891,1,0,0,0,1891,1889,1,0,0,0,1891,1892,1,0,0,0,1892,1902,1,0,0,0,1893,1895,7,5,0,0,1894,1896,7,6,0,0,1895,1894,1,0,0,0,1895,1896,1,0,0,0,1896,1898,1,0,0,0,1897,1899,7,4,0,0,1898,1897,1,0,0,0,1899,1900,1,0,0,0,1900,1898,1,0,0,0,1900,1901,1,0,0,0,1901,1903,1,0,0,0,1902,1893,1,0,0,0,1902,1903,1,0,0,0,1903,1919,1,0,0,0,1904,1906,7,4,0,0,1905,1904,1,0,0,0,1906,1907,1,0,0,0,1907,1905,1,0,0,0,1907,1908,1,0,0,0,1908,1909,1,0,0,0,1909,1911,7,5,0,0,1910,1912,7,6,0,0,1911,1910,1,0,0,0,1911,1912,1,0,0,0,1912,1914,1,0,0,0,1913,1915,7,4,0,0,1914,1913,1,0,0,0,1915,1916,1,0,0,0,1916,1914,1,0,0,0,1916,1917,1,0,0,0,1917,1919,1,0,0,0,1918,1884,1,0,0,0,1918,1905,1,0,0,0,1919,444,1,0,0,0,1920,1921,5,47,0,0,1921,1922,5,42,0,0,1922,1926,1,0,0,0,1923,1925,9,0,0,0,1924,1923,1,0,0,0,1925,1928,1,0,0,0,1926,1927,1,0,0,0,1926,1924,1,0,0,0,1927,1929,1,0,0,0,1928,1926,1,0,0,0,1929,1930,5,42,0,0,1930,1931,5,47,0,0,1931,446,1,0,0,0,1932,1933,5,47,0,0,1933,1934,5,47,0,0,1934,1938,1,0,0,0,1935,1937,8,7,0,0,1936,1935,1,0,0,0,1937,1940,1,0,0,0,1938,1936,1,0,0,0,1938,1939,1,0,0,0,1939,1941,1,0,0,0,1940,1938,1,0,0,0,1941,1942,6,223,0,0,1942,448,1,0,0,0,1943,1945,7,8,0,0,1944,1943,1,0,0,0,1945,1946,1,0,0,0,1946,1944,1,0,0,0,1946,1947,1,0,0,0,1947,1948,1,0,0,0,1948,1949,6,224,0,0,1949,450,1,0,0,0,19,0,1851,1858,1860,1869,1871,1879,1884,1891,1895,1900,1902,1907,1911,1916,1918,1926,1938,1946,1,6,0,0];static __ATN;static get _ATN(){return r.__ATN||(r.__ATN=new Ye().deserialize(r._serializedATN)),r.__ATN}static vocabulary=new ye(r.literalNames,r.symbolicNames,[]);get vocabulary(){return r.vocabulary}static decisionsToDFA=r._ATN.decisionToState.map((e,t)=>new He(e,t))};var n=class r extends i1{static ABOUT=1;static ABSTRACT=2;static ACCEPT=3;static ACTION=4;static ACTOR=5;static AFTER=6;static ALIAS=7;static ALL=8;static ALLOCATE=9;static ALLOCATION=10;static ANALYSIS=11;static AND=12;static AS=13;static ASSERT=14;static ASSIGN=15;static ASSOC=16;static ASSUME=17;static AT=18;static ATTRIBUTE=19;static BEHAVIOR=20;static BIND=21;static BINDING=22;static BOOL=23;static BY=24;static CALC=25;static CASE=26;static CHAINS=27;static CLASS=28;static CLASSIFIER=29;static COMMENT=30;static COMPOSITE=31;static CONCERN=32;static CONJUGATE=33;static CONJUGATES=34;static CONJUGATION=35;static CONNECT=36;static CONNECTION=37;static CONNECTOR=38;static CONST=39;static CONSTANT=40;static CONSTRAINT=41;static CROSSES=42;static DATATYPE=43;static DECIDE=44;static DEF=45;static DEFAULT=46;static DEFINED=47;static DEPENDENCY=48;static DERIVED=49;static DIFFERENCES=50;static DISJOINING=51;static DISJOINT=52;static DO=53;static DOC=54;static ELSE=55;static END=56;static ENTRY=57;static ENUM=58;static EVENT=59;static EXHIBIT=60;static EXIT=61;static EXPOSE=62;static EXPR=63;static FALSE=64;static FEATURE=65;static FEATURED=66;static FEATURING=67;static FILTER=68;static FIRST=69;static FLOW=70;static FOR=71;static FORK=72;static FRAME=73;static FROM=74;static FUNCTION=75;static HASTYPE=76;static IF=77;static IMPLIES=78;static IMPORT=79;static IN=80;static INCLUDE=81;static INDIVIDUAL=82;static INOUT=83;static INTERACTION=84;static INTERFACE=85;static INTERSECTS=86;static INV=87;static INVERSE=88;static INVERTING=89;static ISTYPE=90;static ITEM=91;static JOIN=92;static LANGUAGE=93;static LIBRARY=94;static LOCALE=95;static LOOP=96;static MEMBER=97;static MERGE=98;static MESSAGE=99;static META=100;static METACLASS=101;static METADATA=102;static MULTIPLICITY=103;static NAMESPACE=104;static NEW=105;static NONUNIQUE=106;static NOT=107;static NULL=108;static OBJECTIVE=109;static OCCURRENCE=110;static OF=111;static OR=112;static ORDERED=113;static OUT=114;static PACKAGE=115;static PARALLEL=116;static PART=117;static PERFORM=118;static PORT=119;static PORTION=120;static PREDICATE=121;static PRIVATE=122;static PROTECTED=123;static PUBLIC=124;static REDEFINES=125;static REDEFINITION=126;static REF=127;static REFERENCES=128;static RENDER=129;static RENDERING=130;static REP=131;static REQUIRE=132;static REQUIREMENT=133;static RETURN=134;static SATISFY=135;static SEND=136;static SNAPSHOT=137;static SPECIALIZATION=138;static SPECIALIZES=139;static STAKEHOLDER=140;static STANDARD=141;static STATE=142;static STEP=143;static STRUCT=144;static SUBCLASSIFIER=145;static SUBJECT=146;static SUBSET=147;static SUBSETS=148;static SUBTYPE=149;static SUCCESSION=150;static TERMINATE=151;static THEN=152;static TIMESLICE=153;static TO=154;static TRANSITION=155;static TRUE=156;static TYPE=157;static TYPED=158;static TYPING=159;static UNIONS=160;static UNTIL=161;static USE=162;static VAR=163;static VARIANT=164;static VARIATION=165;static VERIFICATION=166;static VERIFY=167;static VIA=168;static VIEW=169;static VIEWPOINT=170;static WHEN=171;static WHILE=172;static XOR=173;static BANG_EQ_EQ=174;static COLON_COLON_GT=175;static COLON_GT_GT=176;static EQ_EQ_EQ=177;static BANG_EQ=178;static STAR_STAR=179;static ARROW=180;static DOT_DOT=181;static DOT_QUESTION=182;static COLON_COLON=183;static COLON_EQ=184;static COLON_GT=185;static LE=186;static EQ_EQ=187;static FAT_ARROW=188;static GE=189;static QUESTION_QUESTION=190;static AT_AT=191;static HASH=192;static DOLLAR=193;static PERCENT=194;static AMP=195;static LPAREN=196;static RPAREN=197;static STAR=198;static PLUS=199;static COMMA=200;static MINUS=201;static DOT=202;static SLASH=203;static COLON=204;static SEMI=205;static LT=206;static EQ=207;static GT=208;static QUESTION=209;static AT_SIGN=210;static LBRACK=211;static RBRACK=212;static CARET=213;static LBRACE=214;static PIPE=215;static RBRACE=216;static TILDE=217;static IDENTIFIER=218;static STRING=219;static DOUBLE_STRING=220;static INTEGER=221;static REAL=222;static REGULAR_COMMENT=223;static SINGLE_LINE_NOTE=224;static WS=225;static RULE_ownedExpression=0;static RULE_typeReference=1;static RULE_sequenceExpressionList=2;static RULE_baseExpression=3;static RULE_nullExpression=4;static RULE_featureReferenceExpression=5;static RULE_metadataAccessExpression=6;static RULE_invocationExpression=7;static RULE_constructorExpression=8;static RULE_bodyExpression=9;static RULE_argumentList=10;static RULE_positionalArgumentList=11;static RULE_namedArgumentList=12;static RULE_namedArgument=13;static RULE_literalExpression=14;static RULE_literalBoolean=15;static RULE_literalString=16;static RULE_literalInteger=17;static RULE_literalReal=18;static RULE_literalInfinity=19;static RULE_argumentMember=20;static RULE_argumentExpressionMember=21;static RULE_name=22;static RULE_identification=23;static RULE_relationshipBody=24;static RULE_relationshipOwnedElement=25;static RULE_ownedRelatedElement=26;static RULE_dependency=27;static RULE_annotation=28;static RULE_ownedAnnotation=29;static RULE_annotatingElement=30;static RULE_comment=31;static RULE_documentation=32;static RULE_textualRepresentation=33;static RULE_rootNamespace=34;static RULE_namespace=35;static RULE_namespaceDeclaration=36;static RULE_namespaceBody=37;static RULE_namespaceBodyElement=38;static RULE_memberPrefix=39;static RULE_visibilityIndicator=40;static RULE_namespaceMember=41;static RULE_nonFeatureMember=42;static RULE_namespaceFeatureMember=43;static RULE_aliasMember=44;static RULE_qualifiedName=45;static RULE_importRule=46;static RULE_importDeclaration=47;static RULE_membershipImport=48;static RULE_namespaceImport=49;static RULE_filterPackage=50;static RULE_filterPackageMember=51;static RULE_memberElement=52;static RULE_nonFeatureElement=53;static RULE_featureElement=54;static RULE_type=55;static RULE_typePrefix=56;static RULE_typeDeclaration=57;static RULE_specializationPart=58;static RULE_conjugationPart=59;static RULE_typeRelationshipPart=60;static RULE_disjoiningPart=61;static RULE_unioningPart=62;static RULE_intersectingPart=63;static RULE_differencingPart=64;static RULE_typeBody=65;static RULE_typeBodyElement=66;static RULE_specialization=67;static RULE_ownedSpecialization=68;static RULE_specificType=69;static RULE_generalType=70;static RULE_conjugation=71;static RULE_ownedConjugation=72;static RULE_disjoining=73;static RULE_ownedDisjoining=74;static RULE_unioning=75;static RULE_intersecting=76;static RULE_differencing=77;static RULE_featureMember=78;static RULE_typeFeatureMember=79;static RULE_ownedFeatureMember=80;static RULE_classifier=81;static RULE_classifierDeclaration=82;static RULE_superclassingPart=83;static RULE_subclassification=84;static RULE_ownedSubclassification=85;static RULE_feature=86;static RULE_endFeaturePrefix=87;static RULE_basicFeaturePrefix=88;static RULE_featurePrefix=89;static RULE_ownedCrossFeatureMember=90;static RULE_ownedCrossFeature=91;static RULE_featureDirection=92;static RULE_featureDeclaration=93;static RULE_featureIdentification=94;static RULE_featureRelationshipPart=95;static RULE_chainingPart=96;static RULE_invertingPart=97;static RULE_typeFeaturingPart=98;static RULE_featureSpecializationPart=99;static RULE_multiplicityPart=100;static RULE_featureSpecialization=101;static RULE_typings=102;static RULE_typedBy=103;static RULE_subsettings=104;static RULE_subsets=105;static RULE_references=106;static RULE_crosses=107;static RULE_redefinitions=108;static RULE_redefines=109;static RULE_featureTyping=110;static RULE_ownedFeatureTyping=111;static RULE_subsetting=112;static RULE_ownedSubsetting=113;static RULE_ownedReferenceSubsetting=114;static RULE_ownedCrossSubsetting=115;static RULE_redefinition=116;static RULE_ownedRedefinition=117;static RULE_ownedFeatureChain=118;static RULE_featureChain=119;static RULE_ownedFeatureChaining=120;static RULE_featureInverting=121;static RULE_ownedFeatureInverting=122;static RULE_typeFeaturing=123;static RULE_ownedTypeFeaturing=124;static RULE_dataType=125;static RULE_class=126;static RULE_structure=127;static RULE_association=128;static RULE_associationStructure=129;static RULE_connector=130;static RULE_connectorDeclaration=131;static RULE_binaryConnectorDeclaration=132;static RULE_naryConnectorDeclaration=133;static RULE_connectorEndMember=134;static RULE_connectorEnd=135;static RULE_ownedCrossMultiplicityMember=136;static RULE_ownedCrossMultiplicity=137;static RULE_bindingConnector=138;static RULE_bindingConnectorDeclaration=139;static RULE_succession=140;static RULE_successionDeclaration=141;static RULE_behavior=142;static RULE_step=143;static RULE_function=144;static RULE_functionBody=145;static RULE_functionBodyPart=146;static RULE_returnFeatureMember=147;static RULE_resultExpressionMember=148;static RULE_expression=149;static RULE_predicate=150;static RULE_booleanExpression=151;static RULE_invariant=152;static RULE_ownedExpressionMember=153;static RULE_metadataReference=154;static RULE_typeReferenceMember=155;static RULE_typeResultMember=156;static RULE_referenceTyping=157;static RULE_emptyResultMember=158;static RULE_sequenceOperatorExpression=159;static RULE_sequenceExpressionListMember=160;static RULE_bodyArgumentMember=161;static RULE_bodyArgument=162;static RULE_bodyArgumentValue=163;static RULE_functionReferenceArgumentMember=164;static RULE_functionReferenceArgument=165;static RULE_functionReferenceArgumentValue=166;static RULE_functionReferenceExpression=167;static RULE_functionReferenceMember=168;static RULE_functionReference=169;static RULE_featureChainMember=170;static RULE_ownedFeatureChainMember=171;static RULE_featureReferenceMember=172;static RULE_featureReference=173;static RULE_elementReferenceMember=174;static RULE_constructorResultMember=175;static RULE_constructorResult=176;static RULE_instantiatedTypeMember=177;static RULE_instantiatedTypeReference=178;static RULE_namedArgumentMember=179;static RULE_parameterRedefinition=180;static RULE_expressionBodyMember=181;static RULE_expressionBody=182;static RULE_booleanValue=183;static RULE_realValue=184;static RULE_interaction=185;static RULE_flow=186;static RULE_successionFlow=187;static RULE_flowDeclaration=188;static RULE_payloadFeatureMember=189;static RULE_payloadFeature=190;static RULE_payloadFeatureSpecializationPart=191;static RULE_flowEndMember=192;static RULE_flowEnd=193;static RULE_flowFeatureMember=194;static RULE_flowFeature=195;static RULE_flowFeatureRedefinition=196;static RULE_valuePart=197;static RULE_featureValue=198;static RULE_multiplicity=199;static RULE_multiplicitySubset=200;static RULE_multiplicityRange=201;static RULE_ownedMultiplicity=202;static RULE_ownedMultiplicityRange=203;static RULE_multiplicityBounds=204;static RULE_multiplicityExpressionMember=205;static RULE_metaclass=206;static RULE_prefixMetadataAnnotation=207;static RULE_prefixMetadataMember=208;static RULE_prefixMetadataFeature=209;static RULE_metadataFeature=210;static RULE_metadataFeatureDeclaration=211;static RULE_metadataBody=212;static RULE_metadataBodyElement=213;static RULE_metadataBodyFeatureMember=214;static RULE_metadataBodyFeature=215;static RULE_package=216;static RULE_libraryPackage=217;static RULE_packageDeclaration=218;static RULE_packageBody=219;static RULE_elementFilterMember=220;static RULE_dependencyDeclaration=221;static RULE_annotatingMember=222;static RULE_packageBodyElement=223;static RULE_packageMember=224;static RULE_definitionElement=225;static RULE_usageElement=226;static RULE_basicDefinitionPrefix=227;static RULE_definitionExtensionKeyword=228;static RULE_definitionPrefix=229;static RULE_definition=230;static RULE_definitionDeclaration=231;static RULE_definitionBody=232;static RULE_definitionBodyItem=233;static RULE_definitionBodyItemContent=234;static RULE_definitionMember=235;static RULE_variantUsageMember=236;static RULE_nonOccurrenceUsageMember=237;static RULE_occurrenceUsageMember=238;static RULE_structureUsageMember=239;static RULE_behaviorUsageMember=240;static RULE_refPrefix=241;static RULE_basicUsagePrefix=242;static RULE_endUsagePrefix=243;static RULE_usageExtensionKeyword=244;static RULE_unextendedUsagePrefix=245;static RULE_usagePrefix=246;static RULE_usage=247;static RULE_usageDeclaration=248;static RULE_usageCompletion=249;static RULE_usageBody=250;static RULE_defaultReferenceUsage=251;static RULE_referenceUsage=252;static RULE_endFeatureUsage=253;static RULE_variantReference=254;static RULE_nonOccurrenceUsageElement=255;static RULE_occurrenceUsageElement=256;static RULE_structureUsageElement=257;static RULE_behaviorUsageElement=258;static RULE_variantUsageElement=259;static RULE_subclassificationPart=260;static RULE_attributeDefinition=261;static RULE_attributeUsage=262;static RULE_enumerationDefinition=263;static RULE_enumerationBody=264;static RULE_enumerationUsageMember=265;static RULE_enumeratedValue=266;static RULE_enumerationUsage=267;static RULE_occurrenceDefinitionPrefix=268;static RULE_occurrenceDefinition=269;static RULE_individualDefinition=270;static RULE_emptyMultiplicityMember=271;static RULE_occurrenceUsagePrefix=272;static RULE_occurrenceUsage=273;static RULE_individualUsage=274;static RULE_portionUsage=275;static RULE_portionKind=276;static RULE_eventOccurrenceUsage=277;static RULE_sourceSuccessionMember=278;static RULE_sourceSuccession=279;static RULE_sourceEndMember=280;static RULE_sourceEnd=281;static RULE_itemDefinition=282;static RULE_itemUsage=283;static RULE_partDefinition=284;static RULE_partUsage=285;static RULE_portDefinition=286;static RULE_conjugatedPortDefinitionMember=287;static RULE_conjugatedPortDefinition=288;static RULE_portUsage=289;static RULE_conjugatedPortTyping=290;static RULE_connectionDefinition=291;static RULE_connectionUsage=292;static RULE_connectorPart=293;static RULE_binaryConnectorPart=294;static RULE_naryConnectorPart=295;static RULE_bindingConnectorAsUsage=296;static RULE_successionAsUsage=297;static RULE_interfaceDefinition=298;static RULE_interfaceBody=299;static RULE_interfaceBodyItem=300;static RULE_interfaceNonOccurrenceUsageMember=301;static RULE_interfaceNonOccurrenceUsageElement=302;static RULE_interfaceOccurrenceUsageMember=303;static RULE_interfaceOccurrenceUsageElement=304;static RULE_defaultInterfaceEnd=305;static RULE_interfaceUsage=306;static RULE_interfaceUsageDeclaration=307;static RULE_interfacePart=308;static RULE_binaryInterfacePart=309;static RULE_naryInterfacePart=310;static RULE_interfaceEndMember=311;static RULE_interfaceEnd=312;static RULE_allocationDefinition=313;static RULE_allocationUsage=314;static RULE_allocationUsageDeclaration=315;static RULE_flowDefinition=316;static RULE_message=317;static RULE_messageDeclaration=318;static RULE_messageEventMember=319;static RULE_messageEvent=320;static RULE_flowUsage=321;static RULE_successionFlowUsage=322;static RULE_flowPayloadFeatureMember=323;static RULE_flowPayloadFeature=324;static RULE_flowEndSubsetting=325;static RULE_featureChainPrefix=326;static RULE_actionDefinition=327;static RULE_actionBody=328;static RULE_actionBodyItem=329;static RULE_nonBehaviorBodyItem=330;static RULE_actionBehaviorMember=331;static RULE_initialNodeMember=332;static RULE_actionNodeMember=333;static RULE_actionTargetSuccessionMember=334;static RULE_guardedSuccessionMember=335;static RULE_actionUsage=336;static RULE_actionUsageDeclaration=337;static RULE_performActionUsage=338;static RULE_performActionUsageDeclaration=339;static RULE_actionNode=340;static RULE_actionNodeUsageDeclaration=341;static RULE_actionNodePrefix=342;static RULE_controlNode=343;static RULE_controlNodePrefix=344;static RULE_mergeNode=345;static RULE_decisionNode=346;static RULE_joinNode=347;static RULE_forkNode=348;static RULE_acceptNode=349;static RULE_acceptNodeDeclaration=350;static RULE_acceptParameterPart=351;static RULE_payloadParameterMember=352;static RULE_payloadParameter=353;static RULE_triggerValuePart=354;static RULE_triggerFeatureValue=355;static RULE_triggerExpression=356;static RULE_sendNode=357;static RULE_sendNodeDeclaration=358;static RULE_senderReceiverPart=359;static RULE_nodeParameterMember=360;static RULE_nodeParameter=361;static RULE_featureBinding=362;static RULE_emptyParameterMember=363;static RULE_assignmentNode=364;static RULE_assignmentNodeDeclaration=365;static RULE_assignmentTargetMember=366;static RULE_assignmentTargetParameter=367;static RULE_assignmentTargetBinding=368;static RULE_terminateNode=369;static RULE_ifNode=370;static RULE_expressionParameterMember=371;static RULE_actionBodyParameterMember=372;static RULE_actionBodyParameter=373;static RULE_ifNodeParameterMember=374;static RULE_whileLoopNode=375;static RULE_forLoopNode=376;static RULE_forVariableDeclarationMember=377;static RULE_forVariableDeclaration=378;static RULE_actionTargetSuccession=379;static RULE_targetSuccession=380;static RULE_guardedTargetSuccession=381;static RULE_defaultTargetSuccession=382;static RULE_guardedSuccession=383;static RULE_stateDefinition=384;static RULE_stateDefBody=385;static RULE_stateBodyItem=386;static RULE_entryActionMember=387;static RULE_doActionMember=388;static RULE_exitActionMember=389;static RULE_entryTransitionMember=390;static RULE_stateActionUsage=391;static RULE_statePerformActionUsage=392;static RULE_stateAcceptActionUsage=393;static RULE_stateSendActionUsage=394;static RULE_stateAssignmentActionUsage=395;static RULE_transitionUsageMember=396;static RULE_targetTransitionUsageMember=397;static RULE_stateUsage=398;static RULE_stateUsageBody=399;static RULE_exhibitStateUsage=400;static RULE_transitionUsage=401;static RULE_targetTransitionUsage=402;static RULE_triggerActionMember=403;static RULE_triggerAction=404;static RULE_guardExpressionMember=405;static RULE_effectBehaviorMember=406;static RULE_effectBehaviorUsage=407;static RULE_transitionPerformActionUsage=408;static RULE_transitionAcceptActionUsage=409;static RULE_transitionSendActionUsage=410;static RULE_transitionAssignmentActionUsage=411;static RULE_transitionSuccessionMember=412;static RULE_transitionSuccession=413;static RULE_emptyEndMember=414;static RULE_calculationDefinition=415;static RULE_calculationUsage=416;static RULE_calculationBody=417;static RULE_calculationBodyPart=418;static RULE_calculationBodyItem=419;static RULE_returnParameterMember=420;static RULE_constraintDefinition=421;static RULE_constraintUsage=422;static RULE_assertConstraintUsage=423;static RULE_constraintUsageDeclaration=424;static RULE_requirementDefinition=425;static RULE_requirementBody=426;static RULE_requirementBodyItem=427;static RULE_subjectMember=428;static RULE_subjectUsage=429;static RULE_requirementConstraintMember=430;static RULE_requirementKind=431;static RULE_requirementConstraintUsage=432;static RULE_framedConcernMember=433;static RULE_framedConcernUsage=434;static RULE_actorMember=435;static RULE_actorUsage=436;static RULE_stakeholderMember=437;static RULE_stakeholderUsage=438;static RULE_requirementUsage=439;static RULE_satisfyRequirementUsage=440;static RULE_satisfactionSubjectMember=441;static RULE_satisfactionParameter=442;static RULE_satisfactionFeatureValue=443;static RULE_satisfactionReferenceExpression=444;static RULE_concernDefinition=445;static RULE_concernUsage=446;static RULE_caseDefinition=447;static RULE_caseUsage=448;static RULE_caseBody=449;static RULE_caseBodyItem=450;static RULE_objectiveMember=451;static RULE_objectiveRequirementUsage=452;static RULE_analysisCaseDefinition=453;static RULE_analysisCaseUsage=454;static RULE_verificationCaseDefinition=455;static RULE_verificationCaseUsage=456;static RULE_requirementVerificationMember=457;static RULE_requirementVerificationUsage=458;static RULE_useCaseDefinition=459;static RULE_useCaseUsage=460;static RULE_includeUseCaseUsage=461;static RULE_viewDefinition=462;static RULE_viewDefinitionBody=463;static RULE_viewDefinitionBodyItem=464;static RULE_viewRenderingMember=465;static RULE_viewRenderingUsage=466;static RULE_viewUsage=467;static RULE_viewBody=468;static RULE_viewBodyItem=469;static RULE_expose=470;static RULE_membershipExpose=471;static RULE_namespaceExpose=472;static RULE_viewpointDefinition=473;static RULE_viewpointUsage=474;static RULE_renderingDefinition=475;static RULE_renderingUsage=476;static RULE_metadataDefinition=477;static RULE_prefixMetadataUsage=478;static RULE_metadataUsage=479;static RULE_metadataUsageDeclaration=480;static RULE_metadataBodyUsageMember=481;static RULE_metadataBodyUsage=482;static RULE_extendedDefinition=483;static RULE_extendedUsage=484;static RULE_filterPackageImportDeclaration=485;static RULE_namespaceImportDirect=486;static RULE_calculationUsageDeclaration=487;static RULE_emptyActionUsage=488;static RULE_emptyFeature=489;static RULE_emptyMultiplicity=490;static RULE_emptyUsage=491;static RULE_filterPackageImport=492;static RULE_nonFeatureChainPrimaryExpression=493;static RULE_portConjugation=494;static literalNames=[null,"'about'","'abstract'","'accept'","'action'","'actor'","'after'","'alias'","'all'","'allocate'","'allocation'","'analysis'","'and'","'as'","'assert'","'assign'","'assoc'","'assume'","'at'","'attribute'","'behavior'","'bind'","'binding'","'bool'","'by'","'calc'","'case'","'chains'","'class'","'classifier'","'comment'","'composite'","'concern'","'conjugate'","'conjugates'","'conjugation'","'connect'","'connection'","'connector'","'const'","'constant'","'constraint'","'crosses'","'datatype'","'decide'","'def'","'default'","'defined'","'dependency'","'derived'","'differences'","'disjoining'","'disjoint'","'do'","'doc'","'else'","'end'","'entry'","'enum'","'event'","'exhibit'","'exit'","'expose'","'expr'","'false'","'feature'","'featured'","'featuring'","'filter'","'first'","'flow'","'for'","'fork'","'frame'","'from'","'function'","'hastype'","'if'","'implies'","'import'","'in'","'include'","'individual'","'inout'","'interaction'","'interface'","'intersects'","'inv'","'inverse'","'inverting'","'istype'","'item'","'join'","'language'","'library'","'locale'","'loop'","'member'","'merge'","'message'","'meta'","'metaclass'","'metadata'","'multiplicity'","'namespace'","'new'","'nonunique'","'not'","'null'","'objective'","'occurrence'","'of'","'or'","'ordered'","'out'","'package'","'parallel'","'part'","'perform'","'port'","'portion'","'predicate'","'private'","'protected'","'public'","'redefines'","'redefinition'","'ref'","'references'","'render'","'rendering'","'rep'","'require'","'requirement'","'return'","'satisfy'","'send'","'snapshot'","'specialization'","'specializes'","'stakeholder'","'standard'","'state'","'step'","'struct'","'subclassifier'","'subject'","'subset'","'subsets'","'subtype'","'succession'","'terminate'","'then'","'timeslice'","'to'","'transition'","'true'","'type'","'typed'","'typing'","'unions'","'until'","'use'","'var'","'variant'","'variation'","'verification'","'verify'","'via'","'view'","'viewpoint'","'when'","'while'","'xor'","'!=='","'::>'","':>>'","'==='","'!='","'**'","'->'","'..'","'.?'","'::'","':='","':>'","'<='","'=='","'=>'","'>='","'??'","'@@'","'#'","'$'","'%'","'&'","'('","')'","'*'","'+'","','","'-'","'.'","'/'","':'","';'","'<'","'='","'>'","'?'","'@'","'['","']'","'^'","'{'","'|'","'}'","'~'"];static symbolicNames=[null,"ABOUT","ABSTRACT","ACCEPT","ACTION","ACTOR","AFTER","ALIAS","ALL","ALLOCATE","ALLOCATION","ANALYSIS","AND","AS","ASSERT","ASSIGN","ASSOC","ASSUME","AT","ATTRIBUTE","BEHAVIOR","BIND","BINDING","BOOL","BY","CALC","CASE","CHAINS","CLASS","CLASSIFIER","COMMENT","COMPOSITE","CONCERN","CONJUGATE","CONJUGATES","CONJUGATION","CONNECT","CONNECTION","CONNECTOR","CONST","CONSTANT","CONSTRAINT","CROSSES","DATATYPE","DECIDE","DEF","DEFAULT","DEFINED","DEPENDENCY","DERIVED","DIFFERENCES","DISJOINING","DISJOINT","DO","DOC","ELSE","END","ENTRY","ENUM","EVENT","EXHIBIT","EXIT","EXPOSE","EXPR","FALSE","FEATURE","FEATURED","FEATURING","FILTER","FIRST","FLOW","FOR","FORK","FRAME","FROM","FUNCTION","HASTYPE","IF","IMPLIES","IMPORT","IN","INCLUDE","INDIVIDUAL","INOUT","INTERACTION","INTERFACE","INTERSECTS","INV","INVERSE","INVERTING","ISTYPE","ITEM","JOIN","LANGUAGE","LIBRARY","LOCALE","LOOP","MEMBER","MERGE","MESSAGE","META","METACLASS","METADATA","MULTIPLICITY","NAMESPACE","NEW","NONUNIQUE","NOT","NULL","OBJECTIVE","OCCURRENCE","OF","OR","ORDERED","OUT","PACKAGE","PARALLEL","PART","PERFORM","PORT","PORTION","PREDICATE","PRIVATE","PROTECTED","PUBLIC","REDEFINES","REDEFINITION","REF","REFERENCES","RENDER","RENDERING","REP","REQUIRE","REQUIREMENT","RETURN","SATISFY","SEND","SNAPSHOT","SPECIALIZATION","SPECIALIZES","STAKEHOLDER","STANDARD","STATE","STEP","STRUCT","SUBCLASSIFIER","SUBJECT","SUBSET","SUBSETS","SUBTYPE","SUCCESSION","TERMINATE","THEN","TIMESLICE","TO","TRANSITION","TRUE","TYPE","TYPED","TYPING","UNIONS","UNTIL","USE","VAR","VARIANT","VARIATION","VERIFICATION","VERIFY","VIA","VIEW","VIEWPOINT","WHEN","WHILE","XOR","BANG_EQ_EQ","COLON_COLON_GT","COLON_GT_GT","EQ_EQ_EQ","BANG_EQ","STAR_STAR","ARROW","DOT_DOT","DOT_QUESTION","COLON_COLON","COLON_EQ","COLON_GT","LE","EQ_EQ","FAT_ARROW","GE","QUESTION_QUESTION","AT_AT","HASH","DOLLAR","PERCENT","AMP","LPAREN","RPAREN","STAR","PLUS","COMMA","MINUS","DOT","SLASH","COLON","SEMI","LT","EQ","GT","QUESTION","AT_SIGN","LBRACK","RBRACK","CARET","LBRACE","PIPE","RBRACE","TILDE","IDENTIFIER","STRING","DOUBLE_STRING","INTEGER","REAL","REGULAR_COMMENT","SINGLE_LINE_NOTE","WS"];static ruleNames=["ownedExpression","typeReference","sequenceExpressionList","baseExpression","nullExpression","featureReferenceExpression","metadataAccessExpression","invocationExpression","constructorExpression","bodyExpression","argumentList","positionalArgumentList","namedArgumentList","namedArgument","literalExpression","literalBoolean","literalString","literalInteger","literalReal","literalInfinity","argumentMember","argumentExpressionMember","name","identification","relationshipBody","relationshipOwnedElement","ownedRelatedElement","dependency","annotation","ownedAnnotation","annotatingElement","comment","documentation","textualRepresentation","rootNamespace","namespace","namespaceDeclaration","namespaceBody","namespaceBodyElement","memberPrefix","visibilityIndicator","namespaceMember","nonFeatureMember","namespaceFeatureMember","aliasMember","qualifiedName","importRule","importDeclaration","membershipImport","namespaceImport","filterPackage","filterPackageMember","memberElement","nonFeatureElement","featureElement","type","typePrefix","typeDeclaration","specializationPart","conjugationPart","typeRelationshipPart","disjoiningPart","unioningPart","intersectingPart","differencingPart","typeBody","typeBodyElement","specialization","ownedSpecialization","specificType","generalType","conjugation","ownedConjugation","disjoining","ownedDisjoining","unioning","intersecting","differencing","featureMember","typeFeatureMember","ownedFeatureMember","classifier","classifierDeclaration","superclassingPart","subclassification","ownedSubclassification","feature","endFeaturePrefix","basicFeaturePrefix","featurePrefix","ownedCrossFeatureMember","ownedCrossFeature","featureDirection","featureDeclaration","featureIdentification","featureRelationshipPart","chainingPart","invertingPart","typeFeaturingPart","featureSpecializationPart","multiplicityPart","featureSpecialization","typings","typedBy","subsettings","subsets","references","crosses","redefinitions","redefines","featureTyping","ownedFeatureTyping","subsetting","ownedSubsetting","ownedReferenceSubsetting","ownedCrossSubsetting","redefinition","ownedRedefinition","ownedFeatureChain","featureChain","ownedFeatureChaining","featureInverting","ownedFeatureInverting","typeFeaturing","ownedTypeFeaturing","dataType","class","structure","association","associationStructure","connector","connectorDeclaration","binaryConnectorDeclaration","naryConnectorDeclaration","connectorEndMember","connectorEnd","ownedCrossMultiplicityMember","ownedCrossMultiplicity","bindingConnector","bindingConnectorDeclaration","succession","successionDeclaration","behavior","step","function","functionBody","functionBodyPart","returnFeatureMember","resultExpressionMember","expression","predicate","booleanExpression","invariant","ownedExpressionMember","metadataReference","typeReferenceMember","typeResultMember","referenceTyping","emptyResultMember","sequenceOperatorExpression","sequenceExpressionListMember","bodyArgumentMember","bodyArgument","bodyArgumentValue","functionReferenceArgumentMember","functionReferenceArgument","functionReferenceArgumentValue","functionReferenceExpression","functionReferenceMember","functionReference","featureChainMember","ownedFeatureChainMember","featureReferenceMember","featureReference","elementReferenceMember","constructorResultMember","constructorResult","instantiatedTypeMember","instantiatedTypeReference","namedArgumentMember","parameterRedefinition","expressionBodyMember","expressionBody","booleanValue","realValue","interaction","flow","successionFlow","flowDeclaration","payloadFeatureMember","payloadFeature","payloadFeatureSpecializationPart","flowEndMember","flowEnd","flowFeatureMember","flowFeature","flowFeatureRedefinition","valuePart","featureValue","multiplicity","multiplicitySubset","multiplicityRange","ownedMultiplicity","ownedMultiplicityRange","multiplicityBounds","multiplicityExpressionMember","metaclass","prefixMetadataAnnotation","prefixMetadataMember","prefixMetadataFeature","metadataFeature","metadataFeatureDeclaration","metadataBody","metadataBodyElement","metadataBodyFeatureMember","metadataBodyFeature","package","libraryPackage","packageDeclaration","packageBody","elementFilterMember","dependencyDeclaration","annotatingMember","packageBodyElement","packageMember","definitionElement","usageElement","basicDefinitionPrefix","definitionExtensionKeyword","definitionPrefix","definition","definitionDeclaration","definitionBody","definitionBodyItem","definitionBodyItemContent","definitionMember","variantUsageMember","nonOccurrenceUsageMember","occurrenceUsageMember","structureUsageMember","behaviorUsageMember","refPrefix","basicUsagePrefix","endUsagePrefix","usageExtensionKeyword","unextendedUsagePrefix","usagePrefix","usage","usageDeclaration","usageCompletion","usageBody","defaultReferenceUsage","referenceUsage","endFeatureUsage","variantReference","nonOccurrenceUsageElement","occurrenceUsageElement","structureUsageElement","behaviorUsageElement","variantUsageElement","subclassificationPart","attributeDefinition","attributeUsage","enumerationDefinition","enumerationBody","enumerationUsageMember","enumeratedValue","enumerationUsage","occurrenceDefinitionPrefix","occurrenceDefinition","individualDefinition","emptyMultiplicityMember","occurrenceUsagePrefix","occurrenceUsage","individualUsage","portionUsage","portionKind","eventOccurrenceUsage","sourceSuccessionMember","sourceSuccession","sourceEndMember","sourceEnd","itemDefinition","itemUsage","partDefinition","partUsage","portDefinition","conjugatedPortDefinitionMember","conjugatedPortDefinition","portUsage","conjugatedPortTyping","connectionDefinition","connectionUsage","connectorPart","binaryConnectorPart","naryConnectorPart","bindingConnectorAsUsage","successionAsUsage","interfaceDefinition","interfaceBody","interfaceBodyItem","interfaceNonOccurrenceUsageMember","interfaceNonOccurrenceUsageElement","interfaceOccurrenceUsageMember","interfaceOccurrenceUsageElement","defaultInterfaceEnd","interfaceUsage","interfaceUsageDeclaration","interfacePart","binaryInterfacePart","naryInterfacePart","interfaceEndMember","interfaceEnd","allocationDefinition","allocationUsage","allocationUsageDeclaration","flowDefinition","message","messageDeclaration","messageEventMember","messageEvent","flowUsage","successionFlowUsage","flowPayloadFeatureMember","flowPayloadFeature","flowEndSubsetting","featureChainPrefix","actionDefinition","actionBody","actionBodyItem","nonBehaviorBodyItem","actionBehaviorMember","initialNodeMember","actionNodeMember","actionTargetSuccessionMember","guardedSuccessionMember","actionUsage","actionUsageDeclaration","performActionUsage","performActionUsageDeclaration","actionNode","actionNodeUsageDeclaration","actionNodePrefix","controlNode","controlNodePrefix","mergeNode","decisionNode","joinNode","forkNode","acceptNode","acceptNodeDeclaration","acceptParameterPart","payloadParameterMember","payloadParameter","triggerValuePart","triggerFeatureValue","triggerExpression","sendNode","sendNodeDeclaration","senderReceiverPart","nodeParameterMember","nodeParameter","featureBinding","emptyParameterMember","assignmentNode","assignmentNodeDeclaration","assignmentTargetMember","assignmentTargetParameter","assignmentTargetBinding","terminateNode","ifNode","expressionParameterMember","actionBodyParameterMember","actionBodyParameter","ifNodeParameterMember","whileLoopNode","forLoopNode","forVariableDeclarationMember","forVariableDeclaration","actionTargetSuccession","targetSuccession","guardedTargetSuccession","defaultTargetSuccession","guardedSuccession","stateDefinition","stateDefBody","stateBodyItem","entryActionMember","doActionMember","exitActionMember","entryTransitionMember","stateActionUsage","statePerformActionUsage","stateAcceptActionUsage","stateSendActionUsage","stateAssignmentActionUsage","transitionUsageMember","targetTransitionUsageMember","stateUsage","stateUsageBody","exhibitStateUsage","transitionUsage","targetTransitionUsage","triggerActionMember","triggerAction","guardExpressionMember","effectBehaviorMember","effectBehaviorUsage","transitionPerformActionUsage","transitionAcceptActionUsage","transitionSendActionUsage","transitionAssignmentActionUsage","transitionSuccessionMember","transitionSuccession","emptyEndMember","calculationDefinition","calculationUsage","calculationBody","calculationBodyPart","calculationBodyItem","returnParameterMember","constraintDefinition","constraintUsage","assertConstraintUsage","constraintUsageDeclaration","requirementDefinition","requirementBody","requirementBodyItem","subjectMember","subjectUsage","requirementConstraintMember","requirementKind","requirementConstraintUsage","framedConcernMember","framedConcernUsage","actorMember","actorUsage","stakeholderMember","stakeholderUsage","requirementUsage","satisfyRequirementUsage","satisfactionSubjectMember","satisfactionParameter","satisfactionFeatureValue","satisfactionReferenceExpression","concernDefinition","concernUsage","caseDefinition","caseUsage","caseBody","caseBodyItem","objectiveMember","objectiveRequirementUsage","analysisCaseDefinition","analysisCaseUsage","verificationCaseDefinition","verificationCaseUsage","requirementVerificationMember","requirementVerificationUsage","useCaseDefinition","useCaseUsage","includeUseCaseUsage","viewDefinition","viewDefinitionBody","viewDefinitionBodyItem","viewRenderingMember","viewRenderingUsage","viewUsage","viewBody","viewBodyItem","expose","membershipExpose","namespaceExpose","viewpointDefinition","viewpointUsage","renderingDefinition","renderingUsage","metadataDefinition","prefixMetadataUsage","metadataUsage","metadataUsageDeclaration","metadataBodyUsageMember","metadataBodyUsage","extendedDefinition","extendedUsage","filterPackageImportDeclaration","namespaceImportDirect","calculationUsageDeclaration","emptyActionUsage","emptyFeature","emptyMultiplicity","emptyUsage","filterPackageImport","nonFeatureChainPrimaryExpression","portConjugation"];get grammarFileName(){return"SysMLv2Parser.g4"}get literalNames(){return r.literalNames}get symbolicNames(){return r.symbolicNames}get ruleNames(){return r.ruleNames}get serializedATN(){return r._serializedATN}createFailedPredicateException(e,t){return new wr(this,e,t)}constructor(e){super(e),this.interpreter=new kr(this,r._ATN,r.decisionsToDFA,new pt)}ownedExpression(e){e===void 0&&(e=0);let t=this.context,i=this.state,s=new P(this.context,i),a=s,u=0;this.enterRecursionRule(s,0,r.RULE_ownedExpression,e);let c;try{let h;this.enterOuterAlt(s,1);{switch(this.state=1005,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.IF:this.state=991,this.match(r.IF),this.state=992,this.ownedExpression(0),this.state=993,this.match(r.QUESTION),this.state=994,this.ownedExpression(0),this.state=995,this.match(r.ELSE),this.state=996,this.ownedExpression(28);break;case r.NOT:case r.PLUS:case r.MINUS:case r.TILDE:this.state=998,c=this.tokenStream.LA(1),c===107||(c-199&-32)===0&&(1<<c-199&262149)!==0?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=999,this.ownedExpression(14);break;case r.AT_AT:case r.AT_SIGN:this.state=1e3,c=this.tokenStream.LA(1),c===191||c===210?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1001,this.typeReference();break;case r.ALL:this.state=1002,this.match(r.ALL),this.state=1003,this.typeReference();break;case r.FALSE:case r.NEW:case r.NULL:case r.TRUE:case r.DOLLAR:case r.LPAREN:case r.STAR:case r.LBRACE:case r.IDENTIFIER:case r.STRING:case r.DOUBLE_STRING:case r.INTEGER:case r.REAL:this.state=1004,this.baseExpression();break;default:throw new g(this)}for(this.context.stop=this.tokenStream.LT(-1),this.state=1088,this.errorHandler.sync(this),h=this.interpreter.adaptivePredict(this.tokenStream,5,this.context);h!==2&&h!==L.INVALID_ALT_NUMBER;){if(h===1)switch(this.parseListeners!=null&&this.triggerExitRuleEvent(),a=s,this.state=1086,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,4,this.context)){case 1:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1007,!this.precpred(this.context,27))throw this.createFailedPredicateException("this.precpred(this.context, 27)");this.state=1008,this.match(r.QUESTION_QUESTION),this.state=1009,this.ownedExpression(28)}break;case 2:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1010,!this.precpred(this.context,26))throw this.createFailedPredicateException("this.precpred(this.context, 26)");this.state=1011,this.match(r.IMPLIES),this.state=1012,this.ownedExpression(27)}break;case 3:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1013,!this.precpred(this.context,25))throw this.createFailedPredicateException("this.precpred(this.context, 25)");this.state=1014,this.match(r.OR),this.state=1015,this.ownedExpression(26)}break;case 4:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1016,!this.precpred(this.context,24))throw this.createFailedPredicateException("this.precpred(this.context, 24)");this.state=1017,this.match(r.AND),this.state=1018,this.ownedExpression(25)}break;case 5:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1019,!this.precpred(this.context,23))throw this.createFailedPredicateException("this.precpred(this.context, 23)");this.state=1020,this.match(r.XOR),this.state=1021,this.ownedExpression(24)}break;case 6:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1022,!this.precpred(this.context,22))throw this.createFailedPredicateException("this.precpred(this.context, 22)");this.state=1023,this.match(r.PIPE),this.state=1024,this.ownedExpression(23)}break;case 7:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1025,!this.precpred(this.context,21))throw this.createFailedPredicateException("this.precpred(this.context, 21)");this.state=1026,this.match(r.AMP),this.state=1027,this.ownedExpression(22)}break;case 8:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1028,!this.precpred(this.context,20))throw this.createFailedPredicateException("this.precpred(this.context, 20)");this.state=1029,c=this.tokenStream.LA(1),(c-174&-32)===0&&(1<<c-174&8217)!==0?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1030,this.ownedExpression(21)}break;case 9:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1031,!this.precpred(this.context,19))throw this.createFailedPredicateException("this.precpred(this.context, 19)");this.state=1032,c=this.tokenStream.LA(1),(c-186&-32)===0&&(1<<c-186&5242889)!==0?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1033,this.ownedExpression(20)}break;case 10:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1034,!this.precpred(this.context,18))throw this.createFailedPredicateException("this.precpred(this.context, 18)");this.state=1035,this.match(r.DOT_DOT),this.state=1036,this.ownedExpression(19)}break;case 11:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1037,!this.precpred(this.context,17))throw this.createFailedPredicateException("this.precpred(this.context, 17)");this.state=1038,c=this.tokenStream.LA(1),c===199||c===201?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1039,this.ownedExpression(18)}break;case 12:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1040,!this.precpred(this.context,16))throw this.createFailedPredicateException("this.precpred(this.context, 16)");this.state=1041,c=this.tokenStream.LA(1),(c-194&-32)===0&&(1<<c-194&529)!==0?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1042,this.ownedExpression(17)}break;case 13:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1043,!this.precpred(this.context,15))throw this.createFailedPredicateException("this.precpred(this.context, 15)");this.state=1044,c=this.tokenStream.LA(1),c===179||c===213?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1045,this.ownedExpression(15)}break;case 14:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1046,!this.precpred(this.context,12))throw this.createFailedPredicateException("this.precpred(this.context, 12)");this.state=1047,c=this.tokenStream.LA(1),c===76||c===90||c===210?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1048,this.typeReference()}break;case 15:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1049,!this.precpred(this.context,11))throw this.createFailedPredicateException("this.precpred(this.context, 11)");this.state=1050,this.match(r.AS),this.state=1051,this.typeReference()}break;case 16:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1052,!this.precpred(this.context,10))throw this.createFailedPredicateException("this.precpred(this.context, 10)");this.state=1053,this.match(r.AT_AT),this.state=1054,this.typeReference()}break;case 17:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1055,!this.precpred(this.context,9))throw this.createFailedPredicateException("this.precpred(this.context, 9)");this.state=1056,this.match(r.META),this.state=1057,this.typeReference()}break;case 18:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1058,!this.precpred(this.context,8))throw this.createFailedPredicateException("this.precpred(this.context, 8)");this.state=1059,this.match(r.LBRACK),this.state=1061,this.errorHandler.sync(this),c=this.tokenStream.LA(1),(c===8||c===64||c===77||(c-105&-32)===0&&(1<<c-105&13)!==0||c===156||(c-191&-32)===0&&(1<<c-191&4236772773)!==0)&&(this.state=1060,this.sequenceExpressionList()),this.state=1063,this.match(r.RBRACK)}break;case 19:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1064,!this.precpred(this.context,7))throw this.createFailedPredicateException("this.precpred(this.context, 7)");this.state=1065,this.match(r.HASH),this.state=1066,this.match(r.LPAREN),this.state=1068,this.errorHandler.sync(this),c=this.tokenStream.LA(1),(c===8||c===64||c===77||(c-105&-32)===0&&(1<<c-105&13)!==0||c===156||(c-191&-32)===0&&(1<<c-191&4236772773)!==0)&&(this.state=1067,this.sequenceExpressionList()),this.state=1070,this.match(r.RPAREN)}break;case 20:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1071,!this.precpred(this.context,6))throw this.createFailedPredicateException("this.precpred(this.context, 6)");this.state=1072,this.argumentList()}break;case 21:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1073,!this.precpred(this.context,5))throw this.createFailedPredicateException("this.precpred(this.context, 5)");this.state=1074,this.match(r.DOT),this.state=1075,this.qualifiedName()}break;case 22:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1076,!this.precpred(this.context,4))throw this.createFailedPredicateException("this.precpred(this.context, 4)");this.state=1077,this.match(r.DOT_QUESTION),this.state=1078,this.bodyExpression()}break;case 23:{if(s=new P(t,i),this.pushNewRecursionContext(s,u,r.RULE_ownedExpression),this.state=1079,!this.precpred(this.context,3))throw this.createFailedPredicateException("this.precpred(this.context, 3)");switch(this.state=1080,this.match(r.ARROW),this.state=1081,this.qualifiedName(),this.state=1084,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.LBRACE:this.state=1082,this.bodyExpression();break;case r.LPAREN:this.state=1083,this.argumentList();break;default:throw new g(this)}}break}this.state=1090,this.errorHandler.sync(this),h=this.interpreter.adaptivePredict(this.tokenStream,5,this.context)}}}catch(h){if(h instanceof o)this.errorHandler.reportError(this,h),this.errorHandler.recover(this,h);else throw h}finally{this.unrollRecursionContexts(t)}return s}typeReference(){let e=new zt(this.context,this.state);this.enterRule(e,2,r.RULE_typeReference);try{this.enterOuterAlt(e,1),this.state=1091,this.qualifiedName()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sequenceExpressionList(){let e=new Yt(this.context,this.state);this.enterRule(e,4,r.RULE_sequenceExpressionList);let t;try{for(this.enterOuterAlt(e,1),this.state=1093,this.ownedExpression(0),this.state=1098,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1094,this.match(r.COMMA),this.state=1095,this.ownedExpression(0),this.state=1100,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}baseExpression(){let e=new In(this.context,this.state);this.enterRule(e,6,r.RULE_baseExpression);let t;try{switch(this.state=1116,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,9,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1101,this.nullExpression();break;case 2:this.enterOuterAlt(e,2),this.state=1102,this.literalExpression();break;case 3:switch(this.enterOuterAlt(e,3),this.state=1103,this.qualifiedName(),this.state=1107,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,7,this.context)){case 1:this.state=1104,this.argumentList();break;case 2:this.state=1105,this.match(r.DOT),this.state=1106,this.match(r.METADATA);break}break;case 4:this.enterOuterAlt(e,4),this.state=1109,this.constructorExpression();break;case 5:this.enterOuterAlt(e,5),this.state=1110,this.bodyExpression();break;case 6:this.enterOuterAlt(e,6),this.state=1111,this.match(r.LPAREN),this.state=1113,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||t===64||t===77||(t-105&-32)===0&&(1<<t-105&13)!==0||t===156||(t-191&-32)===0&&(1<<t-191&4236772773)!==0)&&(this.state=1112,this.sequenceExpressionList()),this.state=1115,this.match(r.RPAREN);break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}nullExpression(){let e=new On(this.context,this.state);this.enterRule(e,8,r.RULE_nullExpression);try{switch(this.state=1121,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.NULL:this.enterOuterAlt(e,1),this.state=1118,this.match(r.NULL);break;case r.LPAREN:this.enterOuterAlt(e,2),this.state=1119,this.match(r.LPAREN),this.state=1120,this.match(r.RPAREN);break;default:throw new g(this)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureReferenceExpression(){let e=new wn(this.context,this.state);this.enterRule(e,10,r.RULE_featureReferenceExpression);try{this.enterOuterAlt(e,1),this.state=1123,this.qualifiedName()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataAccessExpression(){let e=new n1(this.context,this.state);this.enterRule(e,12,r.RULE_metadataAccessExpression);try{this.enterOuterAlt(e,1),this.state=1125,this.qualifiedName(),this.state=1126,this.match(r.DOT),this.state=1127,this.match(r.METADATA)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}invocationExpression(){let e=new s1(this.context,this.state);this.enterRule(e,14,r.RULE_invocationExpression);try{this.enterOuterAlt(e,1),this.state=1129,this.qualifiedName(),this.state=1130,this.argumentList()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}constructorExpression(){let e=new kn(this.context,this.state);this.enterRule(e,16,r.RULE_constructorExpression);try{this.enterOuterAlt(e,1),this.state=1132,this.match(r.NEW),this.state=1133,this.qualifiedName(),this.state=1134,this.argumentList()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bodyExpression(){let e=new Wt(this.context,this.state);this.enterRule(e,18,r.RULE_bodyExpression);try{this.enterOuterAlt(e,1),this.state=1136,this.match(r.LBRACE),this.state=1137,this.functionBodyPart(),this.state=1138,this.match(r.RBRACE)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}argumentList(){let e=new We(this.context,this.state);this.enterRule(e,20,r.RULE_argumentList);try{this.enterOuterAlt(e,1);{switch(this.state=1140,this.match(r.LPAREN),this.state=1143,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,11,this.context)){case 1:this.state=1141,this.positionalArgumentList();break;case 2:this.state=1142,this.namedArgumentList();break}this.state=1145,this.match(r.RPAREN)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}positionalArgumentList(){let e=new Dn(this.context,this.state);this.enterRule(e,22,r.RULE_positionalArgumentList);let t;try{for(this.enterOuterAlt(e,1),this.state=1147,this.ownedExpression(0),this.state=1152,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1148,this.match(r.COMMA),this.state=1149,this.ownedExpression(0),this.state=1154,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namedArgumentList(){let e=new Fn(this.context,this.state);this.enterRule(e,24,r.RULE_namedArgumentList);let t;try{for(this.enterOuterAlt(e,1),this.state=1155,this.namedArgument(),this.state=1160,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1156,this.match(r.COMMA),this.state=1157,this.namedArgument(),this.state=1162,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namedArgument(){let e=new Xt(this.context,this.state);this.enterRule(e,26,r.RULE_namedArgument);try{this.enterOuterAlt(e,1),this.state=1163,this.qualifiedName(),this.state=1164,this.match(r.EQ),this.state=1165,this.ownedExpression(0)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}literalExpression(){let e=new Hr(this.context,this.state);this.enterRule(e,28,r.RULE_literalExpression);try{switch(this.state=1172,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.FALSE:case r.TRUE:this.enterOuterAlt(e,1),this.state=1167,this.literalBoolean();break;case r.DOUBLE_STRING:this.enterOuterAlt(e,2),this.state=1168,this.literalString();break;case r.INTEGER:this.enterOuterAlt(e,3),this.state=1169,this.literalInteger();break;case r.REAL:this.enterOuterAlt(e,4),this.state=1170,this.literalReal();break;case r.STAR:this.enterOuterAlt(e,5),this.state=1171,this.literalInfinity();break;default:throw new g(this)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}literalBoolean(){let e=new Hn(this.context,this.state);this.enterRule(e,30,r.RULE_literalBoolean);let t;try{this.enterOuterAlt(e,1),this.state=1174,t=this.tokenStream.LA(1),t===64||t===156?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}literalString(){let e=new Bn(this.context,this.state);this.enterRule(e,32,r.RULE_literalString);try{this.enterOuterAlt(e,1),this.state=1176,this.match(r.DOUBLE_STRING)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}literalInteger(){let e=new Vn(this.context,this.state);this.enterRule(e,34,r.RULE_literalInteger);try{this.enterOuterAlt(e,1),this.state=1178,this.match(r.INTEGER)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}literalReal(){let e=new _n(this.context,this.state);this.enterRule(e,36,r.RULE_literalReal);try{this.enterOuterAlt(e,1),this.state=1180,this.match(r.REAL)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}literalInfinity(){let e=new qn(this.context,this.state);this.enterRule(e,38,r.RULE_literalInfinity);try{this.enterOuterAlt(e,1),this.state=1182,this.match(r.STAR)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}argumentMember(){let e=new Gn(this.context,this.state);this.enterRule(e,40,r.RULE_argumentMember);try{this.enterOuterAlt(e,1),this.state=1184,this.ownedExpression(0)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}argumentExpressionMember(){let e=new Kn(this.context,this.state);this.enterRule(e,42,r.RULE_argumentExpressionMember);try{this.enterOuterAlt(e,1),this.state=1186,this.ownedExpression(0)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}name(){let e=new ee(this.context,this.state);this.enterRule(e,44,r.RULE_name);let t;try{this.enterOuterAlt(e,1),this.state=1188,t=this.tokenStream.LA(1),t===218||t===219?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}identification(){let e=new O(this.context,this.state);this.enterRule(e,46,r.RULE_identification);try{switch(this.state=1200,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,15,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1190,this.match(r.LT),this.state=1191,this.name(),this.state=1192,this.match(r.GT),this.state=1193,this.name();break;case 2:this.enterOuterAlt(e,2),this.state=1195,this.match(r.LT),this.state=1196,this.name(),this.state=1197,this.match(r.GT);break;case 3:this.enterOuterAlt(e,3),this.state=1199,this.name();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}relationshipBody(){let e=new Q(this.context,this.state);this.enterRule(e,48,r.RULE_relationshipBody);let t;try{switch(this.state=1219,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,18,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1202,this.match(r.SEMI);break;case 2:this.enterOuterAlt(e,2);{for(this.state=1203,this.match(r.LBRACE),this.state=1207,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&4040229124)!==0||(t-33&-32)===0&&(1<<t-33&1085130343)!==0||(t-65&-32)===0&&(1<<t-65&1909228581)!==0||(t-101&-32)===0&&(1<<t-101&1259892783)!==0||(t-138&-32)===0&&(1<<t-138&37232361)!==0||(t-175&-32)===0&&(1<<t-175&2684756995)!==0||(t-210&-32)===0&&(1<<t-210&9091)!==0;)this.state=1204,this.relationshipOwnedElement(),this.state=1209,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1210,this.match(r.RBRACE)}break;case 3:this.enterOuterAlt(e,3);{for(this.state=1211,this.match(r.LBRACE),this.state=1215,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===30||t===54||(t-93&-32)===0&&(1<<t-93&517)!==0||t===131||(t-192&-32)===0&&(1<<t-192&2147745793)!==0;)this.state=1212,this.ownedAnnotation(),this.state=1217,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1218,this.match(r.RBRACE)}break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}relationshipOwnedElement(){let e=new Br(this.context,this.state);this.enterRule(e,50,r.RULE_relationshipOwnedElement);try{switch(this.state=1223,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,19,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1221,this.ownedRelatedElement();break;case 2:this.enterOuterAlt(e,2),this.state=1222,this.ownedAnnotation();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedRelatedElement(){let e=new jn(this.context,this.state);this.enterRule(e,52,r.RULE_ownedRelatedElement);try{switch(this.state=1227,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,20,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1225,this.nonFeatureElement();break;case 2:this.enterOuterAlt(e,2),this.state=1226,this.featureElement();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}dependency(){let e=new Vr(this.context,this.state);this.enterRule(e,54,r.RULE_dependency);let t;try{switch(this.state=1271,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,27,this.context)){case 1:this.enterOuterAlt(e,1);{for(this.state=1232,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=1229,this.prefixMetadataAnnotation(),this.state=1234,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=1235,this.match(r.DEPENDENCY),this.state=1240,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,23,this.context)===1&&(this.state=1237,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1236,this.identification()),this.state=1239,this.match(r.FROM)),this.state=1242,this.qualifiedName(),this.state=1247,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1243,this.match(r.COMMA),this.state=1244,this.qualifiedName(),this.state=1249,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=1250,this.match(r.TO),this.state=1251,this.qualifiedName(),this.state=1256,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1252,this.match(r.COMMA),this.state=1253,this.qualifiedName(),this.state=1258,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1259,this.relationshipBody()}break;case 2:this.enterOuterAlt(e,2);{for(this.state=1264,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=1261,this.prefixMetadataAnnotation(),this.state=1266,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1267,this.match(r.DEPENDENCY),this.state=1268,this.dependencyDeclaration(),this.state=1269,this.relationshipBody()}break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}annotation(){let e=new Be(this.context,this.state);this.enterRule(e,56,r.RULE_annotation);try{this.enterOuterAlt(e,1),this.state=1273,this.qualifiedName()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedAnnotation(){let e=new Jt(this.context,this.state);this.enterRule(e,58,r.RULE_ownedAnnotation);try{this.enterOuterAlt(e,1),this.state=1275,this.annotatingElement()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}annotatingElement(){let e=new xt(this.context,this.state);this.enterRule(e,60,r.RULE_annotatingElement);try{switch(this.state=1281,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COMMENT:case r.LOCALE:case r.REGULAR_COMMENT:this.enterOuterAlt(e,1),this.state=1277,this.comment();break;case r.DOC:this.enterOuterAlt(e,2),this.state=1278,this.documentation();break;case r.LANGUAGE:case r.REP:this.enterOuterAlt(e,3),this.state=1279,this.textualRepresentation();break;case r.METADATA:case r.HASH:case r.AT_SIGN:this.enterOuterAlt(e,4),this.state=1280,this.metadataFeature();break;default:throw new g(this)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}comment(){let e=new Qn(this.context,this.state);this.enterRule(e,62,r.RULE_comment);let t;try{this.enterOuterAlt(e,1);{if(this.state=1298,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===30&&(this.state=1283,this.match(r.COMMENT),this.state=1285,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1284,this.identification()),this.state=1296,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===1))for(this.state=1287,this.match(r.ABOUT),this.state=1288,this.annotation(),this.state=1293,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1289,this.match(r.COMMA),this.state=1290,this.annotation(),this.state=1295,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1302,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===95&&(this.state=1300,this.match(r.LOCALE),this.state=1301,this.match(r.DOUBLE_STRING)),this.state=1304,this.match(r.REGULAR_COMMENT)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}documentation(){let e=new zn(this.context,this.state);this.enterRule(e,64,r.RULE_documentation);let t;try{this.enterOuterAlt(e,1),this.state=1306,this.match(r.DOC),this.state=1308,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1307,this.identification()),this.state=1312,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===95&&(this.state=1310,this.match(r.LOCALE),this.state=1311,this.match(r.DOUBLE_STRING)),this.state=1314,this.match(r.REGULAR_COMMENT)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}textualRepresentation(){let e=new Yn(this.context,this.state);this.enterRule(e,66,r.RULE_textualRepresentation);let t;try{this.enterOuterAlt(e,1),this.state=1320,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===131&&(this.state=1316,this.match(r.REP),this.state=1318,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1317,this.identification())),this.state=1322,this.match(r.LANGUAGE),this.state=1323,this.match(r.DOUBLE_STRING),this.state=1324,this.match(r.REGULAR_COMMENT)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}rootNamespace(){let e=new a1(this.context,this.state);this.enterRule(e,68,r.RULE_rootNamespace);let t;try{this.enterOuterAlt(e,1);{for(this.state=1329,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&490981169)!==0||(t-68&-32)===0&&(1<<t-68&2390947847)!==0||(t-102&-32)===0&&(1<<t-102&3069425939)!==0||(t-135&-32)===0&&(1<<t-135&3364135109)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=1326,this.packageBodyElement(),this.state=1331,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1332,this.match(r.EOF)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespace(){let e=new Wn(this.context,this.state);this.enterRule(e,70,r.RULE_namespace);let t;try{this.enterOuterAlt(e,1);{for(this.state=1337,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=1334,this.prefixMetadataMember(),this.state=1339,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1340,this.namespaceDeclaration(),this.state=1341,this.namespaceBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespaceDeclaration(){let e=new Xn(this.context,this.state);this.enterRule(e,72,r.RULE_namespaceDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=1343,this.match(r.NAMESPACE),this.state=1345,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1344,this.identification())}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespaceBody(){let e=new Jn(this.context,this.state);this.enterRule(e,74,r.RULE_namespaceBody);let t;try{switch(this.state=1356,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=1347,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=1348,this.match(r.LBRACE),this.state=1352,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&4040229252)!==0||(t-33&-32)===0&&(1<<t-33&1085130343)!==0||(t-65&-32)===0&&(1<<t-65&1909244965)!==0||(t-101&-32)===0&&(1<<t-101&1274572847)!==0||(t-138&-32)===0&&(1<<t-138&37232361)!==0||(t-175&-32)===0&&(1<<t-175&2684756995)!==0||(t-210&-32)===0&&(1<<t-210&9091)!==0;)this.state=1349,this.namespaceBodyElement(),this.state=1354,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1355,this.match(r.RBRACE)}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespaceBodyElement(){let e=new _r(this.context,this.state);this.enterRule(e,76,r.RULE_namespaceBodyElement);try{switch(this.state=1361,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,43,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1358,this.namespaceMember();break;case 2:this.enterOuterAlt(e,2),this.state=1359,this.aliasMember();break;case 3:this.enterOuterAlt(e,3),this.state=1360,this.importRule();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}memberPrefix(){let e=new T(this.context,this.state);this.enterRule(e,78,r.RULE_memberPrefix);let t;try{this.enterOuterAlt(e,1),this.state=1364,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-122&-32)===0&&(1<<t-122&7)!==0&&(this.state=1363,this.visibilityIndicator())}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}visibilityIndicator(){let e=new qr(this.context,this.state);this.enterRule(e,80,r.RULE_visibilityIndicator);let t;try{this.enterOuterAlt(e,1),this.state=1366,t=this.tokenStream.LA(1),(t-122&-32)===0&&(1<<t-122&7)!==0?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespaceMember(){let e=new $n(this.context,this.state);this.enterRule(e,82,r.RULE_namespaceMember);try{switch(this.state=1370,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,45,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1368,this.nonFeatureMember();break;case 2:this.enterOuterAlt(e,2),this.state=1369,this.namespaceFeatureMember();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}nonFeatureMember(){let e=new $t(this.context,this.state);this.enterRule(e,84,r.RULE_nonFeatureMember);try{this.enterOuterAlt(e,1),this.state=1372,this.memberPrefix(),this.state=1373,this.memberElement()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}namespaceFeatureMember(){let e=new Zn(this.context,this.state);this.enterRule(e,86,r.RULE_namespaceFeatureMember);try{this.enterOuterAlt(e,1),this.state=1375,this.memberPrefix(),this.state=1376,this.featureElement()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}aliasMember(){let e=new ve(this.context,this.state);this.enterRule(e,88,r.RULE_aliasMember);let t;try{this.enterOuterAlt(e,1),this.state=1378,this.memberPrefix(),this.state=1379,this.match(r.ALIAS),this.state=1384,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===206&&(this.state=1380,this.match(r.LT),this.state=1381,this.name(),this.state=1382,this.match(r.GT)),this.state=1387,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===218||t===219)&&(this.state=1386,this.name()),this.state=1389,this.match(r.FOR),this.state=1390,this.qualifiedName(),this.state=1391,this.relationshipBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}qualifiedName(){let e=new m(this.context,this.state);this.enterRule(e,90,r.RULE_qualifiedName);let t;try{let i;this.enterOuterAlt(e,1);{for(this.state=1395,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===193&&(this.state=1393,this.match(r.DOLLAR),this.state=1394,this.match(r.COLON_COLON)),this.state=1402,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,49,this.context);i!==2&&i!==L.INVALID_ALT_NUMBER;)i===1&&(this.state=1397,this.name(),this.state=1398,this.match(r.COLON_COLON)),this.state=1404,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,49,this.context);this.state=1405,this.name()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}importRule(){let e=new pe(this.context,this.state);this.enterRule(e,92,r.RULE_importRule);let t;try{this.enterOuterAlt(e,1),this.state=1408,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-122&-32)===0&&(1<<t-122&7)!==0&&(this.state=1407,this.visibilityIndicator()),this.state=1410,this.match(r.IMPORT),this.state=1412,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=1411,this.match(r.ALL)),this.state=1414,this.importDeclaration(),this.state=1415,this.relationshipBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}importDeclaration(){let e=new es(this.context,this.state);this.enterRule(e,94,r.RULE_importDeclaration);try{switch(this.state=1419,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,52,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1417,this.membershipImport();break;case 2:this.enterOuterAlt(e,2),this.state=1418,this.namespaceImport();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}membershipImport(){let e=new Zt(this.context,this.state);this.enterRule(e,96,r.RULE_membershipImport);let t;try{this.enterOuterAlt(e,1),this.state=1421,this.qualifiedName(),this.state=1424,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===183&&(this.state=1422,this.match(r.COLON_COLON),this.state=1423,this.match(r.STAR_STAR))}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespaceImport(){let e=new Gr(this.context,this.state);this.enterRule(e,98,r.RULE_namespaceImport);let t;try{switch(this.state=1434,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,55,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1426,this.qualifiedName(),this.state=1427,this.match(r.COLON_COLON),this.state=1428,this.match(r.STAR),this.state=1431,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===183&&(this.state=1429,this.match(r.COLON_COLON),this.state=1430,this.match(r.STAR_STAR));break;case 2:this.enterOuterAlt(e,2),this.state=1433,this.filterPackage();break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}filterPackage(){let e=new ts(this.context,this.state);this.enterRule(e,100,r.RULE_filterPackage);let t;try{switch(this.state=1448,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,58,this.context)){case 1:this.enterOuterAlt(e,1);{this.state=1436,this.filterPackageImportDeclaration(),this.state=1438,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=1437,this.filterPackageMember(),this.state=1440,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===211)}break;case 2:this.enterOuterAlt(e,2);{this.state=1442,this.filterPackageImport(),this.state=1444,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=1443,this.filterPackageMember(),this.state=1446,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===211)}break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}filterPackageMember(){let e=new Kr(this.context,this.state);this.enterRule(e,102,r.RULE_filterPackageMember);try{this.enterOuterAlt(e,1),this.state=1450,this.match(r.LBRACK),this.state=1451,this.ownedExpression(0),this.state=1452,this.match(r.RBRACK)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}memberElement(){let e=new rs(this.context,this.state);this.enterRule(e,104,r.RULE_memberElement);try{switch(this.state=1456,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,59,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1454,this.annotatingElement();break;case 2:this.enterOuterAlt(e,2),this.state=1455,this.nonFeatureElement();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}nonFeatureElement(){let e=new jr(this.context,this.state);this.enterRule(e,106,r.RULE_nonFeatureElement);try{switch(this.state=1484,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,60,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1458,this.dependency();break;case 2:this.enterOuterAlt(e,2),this.state=1459,this.namespace();break;case 3:this.enterOuterAlt(e,3),this.state=1460,this.type_();break;case 4:this.enterOuterAlt(e,4),this.state=1461,this.classifier();break;case 5:this.enterOuterAlt(e,5),this.state=1462,this.dataType();break;case 6:this.enterOuterAlt(e,6),this.state=1463,this.class_();break;case 7:this.enterOuterAlt(e,7),this.state=1464,this.structure();break;case 8:this.enterOuterAlt(e,8),this.state=1465,this.metaclass();break;case 9:this.enterOuterAlt(e,9),this.state=1466,this.association();break;case 10:this.enterOuterAlt(e,10),this.state=1467,this.associationStructure();break;case 11:this.enterOuterAlt(e,11),this.state=1468,this.interaction();break;case 12:this.enterOuterAlt(e,12),this.state=1469,this.behavior();break;case 13:this.enterOuterAlt(e,13),this.state=1470,this.function_();break;case 14:this.enterOuterAlt(e,14),this.state=1471,this.predicate();break;case 15:this.enterOuterAlt(e,15),this.state=1472,this.multiplicity();break;case 16:this.enterOuterAlt(e,16),this.state=1473,this.package_();break;case 17:this.enterOuterAlt(e,17),this.state=1474,this.libraryPackage();break;case 18:this.enterOuterAlt(e,18),this.state=1475,this.specialization();break;case 19:this.enterOuterAlt(e,19),this.state=1476,this.conjugation();break;case 20:this.enterOuterAlt(e,20),this.state=1477,this.subclassification();break;case 21:this.enterOuterAlt(e,21),this.state=1478,this.disjoining();break;case 22:this.enterOuterAlt(e,22),this.state=1479,this.featureInverting();break;case 23:this.enterOuterAlt(e,23),this.state=1480,this.featureTyping();break;case 24:this.enterOuterAlt(e,24),this.state=1481,this.subsetting();break;case 25:this.enterOuterAlt(e,25),this.state=1482,this.redefinition();break;case 26:this.enterOuterAlt(e,26),this.state=1483,this.typeFeaturing();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureElement(){let e=new Xe(this.context,this.state);this.enterRule(e,108,r.RULE_featureElement);try{switch(this.state=1496,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,61,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1486,this.feature();break;case 2:this.enterOuterAlt(e,2),this.state=1487,this.step();break;case 3:this.enterOuterAlt(e,3),this.state=1488,this.expression();break;case 4:this.enterOuterAlt(e,4),this.state=1489,this.booleanExpression();break;case 5:this.enterOuterAlt(e,5),this.state=1490,this.invariant();break;case 6:this.enterOuterAlt(e,6),this.state=1491,this.connector();break;case 7:this.enterOuterAlt(e,7),this.state=1492,this.bindingConnector();break;case 8:this.enterOuterAlt(e,8),this.state=1493,this.succession();break;case 9:this.enterOuterAlt(e,9),this.state=1494,this.flow();break;case 10:this.enterOuterAlt(e,10),this.state=1495,this.successionFlow();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}type_(){let e=new is(this.context,this.state);this.enterRule(e,110,r.RULE_type);try{this.enterOuterAlt(e,1),this.state=1498,this.typePrefix(),this.state=1499,this.match(r.TYPE),this.state=1500,this.typeDeclaration(),this.state=1501,this.typeBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typePrefix(){let e=new te(this.context,this.state);this.enterRule(e,112,r.RULE_typePrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=1504,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===2&&(this.state=1503,this.match(r.ABSTRACT)),this.state=1509,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=1506,this.prefixMetadataMember(),this.state=1511,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typeDeclaration(){let e=new ns(this.context,this.state);this.enterRule(e,114,r.RULE_typeDeclaration);let t;try{this.enterOuterAlt(e,1);{this.state=1513,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=1512,this.match(r.ALL)),this.state=1516,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1515,this.identification()),this.state=1519,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===103||t===211)&&(this.state=1518,this.ownedMultiplicity()),this.state=1523,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do{switch(this.state=1523,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SPECIALIZES:case r.COLON_GT:this.state=1521,this.specializationPart();break;case r.CONJUGATES:case r.TILDE:this.state=1522,this.conjugationPart();break;default:throw new g(this)}this.state=1525,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}while(t===34||t===139||t===185||t===217);for(this.state=1530,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===50||t===52||t===86||t===160;)this.state=1527,this.typeRelationshipPart(),this.state=1532,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}specializationPart(){let e=new Qr(this.context,this.state);this.enterRule(e,116,r.RULE_specializationPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1533,t=this.tokenStream.LA(1),t===139||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1534,this.ownedSpecialization(),this.state=1539,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1535,this.match(r.COMMA),this.state=1536,this.ownedSpecialization(),this.state=1541,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}conjugationPart(){let e=new bt(this.context,this.state);this.enterRule(e,118,r.RULE_conjugationPart);let t;try{this.enterOuterAlt(e,1),this.state=1542,t=this.tokenStream.LA(1),t===34||t===217?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1543,this.ownedConjugation()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typeRelationshipPart(){let e=new Je(this.context,this.state);this.enterRule(e,120,r.RULE_typeRelationshipPart);try{switch(this.state=1549,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DISJOINT:this.enterOuterAlt(e,1),this.state=1545,this.disjoiningPart();break;case r.UNIONS:this.enterOuterAlt(e,2),this.state=1546,this.unioningPart();break;case r.INTERSECTS:this.enterOuterAlt(e,3),this.state=1547,this.intersectingPart();break;case r.DIFFERENCES:this.enterOuterAlt(e,4),this.state=1548,this.differencingPart();break;default:throw new g(this)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}disjoiningPart(){let e=new ss(this.context,this.state);this.enterRule(e,122,r.RULE_disjoiningPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1551,this.match(r.DISJOINT),this.state=1552,this.match(r.FROM),this.state=1553,this.ownedDisjoining(),this.state=1558,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1554,this.match(r.COMMA),this.state=1555,this.ownedDisjoining(),this.state=1560,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}unioningPart(){let e=new as(this.context,this.state);this.enterRule(e,124,r.RULE_unioningPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1561,this.match(r.UNIONS),this.state=1562,this.unioning(),this.state=1567,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1563,this.match(r.COMMA),this.state=1564,this.unioning(),this.state=1569,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}intersectingPart(){let e=new ls(this.context,this.state);this.enterRule(e,126,r.RULE_intersectingPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1570,this.match(r.INTERSECTS),this.state=1571,this.intersecting(),this.state=1576,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1572,this.match(r.COMMA),this.state=1573,this.intersecting(),this.state=1578,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}differencingPart(){let e=new os(this.context,this.state);this.enterRule(e,128,r.RULE_differencingPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1579,this.match(r.DIFFERENCES),this.state=1580,this.differencing(),this.state=1585,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1581,this.match(r.COMMA),this.state=1582,this.differencing(),this.state=1587,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typeBody(){let e=new H(this.context,this.state);this.enterRule(e,130,r.RULE_typeBody);let t;try{switch(this.state=1597,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=1588,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=1589,this.match(r.LBRACE),this.state=1593,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&4040229252)!==0||(t-33&-32)===0&&(1<<t-33&1085130343)!==0||(t-65&-32)===0&&(1<<t-65&1909244965)!==0||(t-97&-32)===0&&(1<<t-97&3213296369)!==0||(t-131&-32)===0&&(1<<t-131&470774913)!==0||(t-163&-32)===0&&(1<<t-163&1648373761)!==0||(t-204&-32)===0&&(1<<t-204&581829)!==0;)this.state=1590,this.typeBodyElement(),this.state=1595,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1596,this.match(r.RBRACE)}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typeBodyElement(){let e=new Rt(this.context,this.state);this.enterRule(e,132,r.RULE_typeBodyElement);try{switch(this.state=1603,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,78,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1599,this.nonFeatureMember();break;case 2:this.enterOuterAlt(e,2),this.state=1600,this.featureMember();break;case 3:this.enterOuterAlt(e,3),this.state=1601,this.aliasMember();break;case 4:this.enterOuterAlt(e,4),this.state=1602,this.importRule();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}specialization(){let e=new us(this.context,this.state);this.enterRule(e,134,r.RULE_specialization);let t;try{this.enterOuterAlt(e,1),this.state=1609,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===138&&(this.state=1605,this.match(r.SPECIALIZATION),this.state=1607,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1606,this.identification())),this.state=1611,this.match(r.SUBTYPE),this.state=1612,this.specificType(),this.state=1613,t=this.tokenStream.LA(1),t===139||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1614,this.generalType(),this.state=1615,this.relationshipBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedSpecialization(){let e=new zr(this.context,this.state);this.enterRule(e,136,r.RULE_ownedSpecialization);try{this.enterOuterAlt(e,1),this.state=1617,this.generalType()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}specificType(){let e=new er(this.context,this.state);this.enterRule(e,138,r.RULE_specificType);let t;try{for(this.enterOuterAlt(e,1),this.state=1619,this.qualifiedName(),this.state=1624,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1620,this.match(r.DOT),this.state=1621,this.qualifiedName(),this.state=1626,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}generalType(){let e=new $e(this.context,this.state);this.enterRule(e,140,r.RULE_generalType);let t;try{for(this.enterOuterAlt(e,1),this.state=1627,this.qualifiedName(),this.state=1632,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1628,this.match(r.DOT),this.state=1629,this.qualifiedName(),this.state=1634,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}conjugation(){let e=new cs(this.context,this.state);this.enterRule(e,142,r.RULE_conjugation);let t;try{this.enterOuterAlt(e,1);{for(this.state=1639,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===35&&(this.state=1635,this.match(r.CONJUGATION),this.state=1637,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1636,this.identification())),this.state=1641,this.match(r.CONJUGATE),this.state=1642,this.qualifiedName(),this.state=1647,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1643,this.match(r.DOT),this.state=1644,this.qualifiedName(),this.state=1649,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=1650,t=this.tokenStream.LA(1),t===34||t===217?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1651,this.qualifiedName(),this.state=1656,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1652,this.match(r.DOT),this.state=1653,this.qualifiedName(),this.state=1658,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1659,this.relationshipBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedConjugation(){let e=new hs(this.context,this.state);this.enterRule(e,144,r.RULE_ownedConjugation);let t;try{for(this.enterOuterAlt(e,1),this.state=1661,this.qualifiedName(),this.state=1666,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1662,this.match(r.DOT),this.state=1663,this.qualifiedName(),this.state=1668,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}disjoining(){let e=new ds(this.context,this.state);this.enterRule(e,146,r.RULE_disjoining);let t;try{this.enterOuterAlt(e,1);{for(this.state=1673,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===51&&(this.state=1669,this.match(r.DISJOINING),this.state=1671,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1670,this.identification())),this.state=1675,this.match(r.DISJOINT),this.state=1676,this.qualifiedName(),this.state=1681,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1677,this.match(r.DOT),this.state=1678,this.qualifiedName(),this.state=1683,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=1684,this.match(r.FROM),this.state=1685,this.qualifiedName(),this.state=1690,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1686,this.match(r.DOT),this.state=1687,this.qualifiedName(),this.state=1692,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1693,this.relationshipBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedDisjoining(){let e=new Yr(this.context,this.state);this.enterRule(e,148,r.RULE_ownedDisjoining);let t;try{for(this.enterOuterAlt(e,1),this.state=1695,this.qualifiedName(),this.state=1700,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1696,this.match(r.DOT),this.state=1697,this.qualifiedName(),this.state=1702,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}unioning(){let e=new Wr(this.context,this.state);this.enterRule(e,150,r.RULE_unioning);let t;try{for(this.enterOuterAlt(e,1),this.state=1703,this.qualifiedName(),this.state=1708,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1704,this.match(r.DOT),this.state=1705,this.qualifiedName(),this.state=1710,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}intersecting(){let e=new Xr(this.context,this.state);this.enterRule(e,152,r.RULE_intersecting);let t;try{for(this.enterOuterAlt(e,1),this.state=1711,this.qualifiedName(),this.state=1716,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1712,this.match(r.DOT),this.state=1713,this.qualifiedName(),this.state=1718,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}differencing(){let e=new Jr(this.context,this.state);this.enterRule(e,154,r.RULE_differencing);let t;try{for(this.enterOuterAlt(e,1),this.state=1719,this.qualifiedName(),this.state=1724,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1720,this.match(r.DOT),this.state=1721,this.qualifiedName(),this.state=1726,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureMember(){let e=new ps(this.context,this.state);this.enterRule(e,156,r.RULE_featureMember);try{switch(this.state=1729,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,96,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1727,this.typeFeatureMember();break;case 2:this.enterOuterAlt(e,2),this.state=1728,this.ownedFeatureMember();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typeFeatureMember(){let e=new xs(this.context,this.state);this.enterRule(e,158,r.RULE_typeFeatureMember);try{this.enterOuterAlt(e,1),this.state=1731,this.memberPrefix(),this.state=1732,this.match(r.MEMBER),this.state=1733,this.featureElement()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedFeatureMember(){let e=new bs(this.context,this.state);this.enterRule(e,160,r.RULE_ownedFeatureMember);try{this.enterOuterAlt(e,1),this.state=1735,this.memberPrefix(),this.state=1736,this.featureElement()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}classifier(){let e=new Rs(this.context,this.state);this.enterRule(e,162,r.RULE_classifier);try{this.enterOuterAlt(e,1),this.state=1738,this.typePrefix(),this.state=1739,this.match(r.CLASSIFIER),this.state=1740,this.classifierDeclaration(),this.state=1741,this.typeBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}classifierDeclaration(){let e=new ae(this.context,this.state);this.enterRule(e,164,r.RULE_classifierDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=1744,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=1743,this.match(r.ALL)),this.state=1747,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1746,this.identification()),this.state=1750,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===103||t===211)&&(this.state=1749,this.ownedMultiplicity()),this.state=1754,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SPECIALIZES:case r.COLON_GT:this.state=1752,this.superclassingPart();break;case r.CONJUGATES:case r.TILDE:this.state=1753,this.conjugationPart();break;case r.DIFFERENCES:case r.DISJOINT:case r.INTERSECTS:case r.UNIONS:case r.SEMI:case r.LBRACE:break;default:break}for(this.state=1759,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===50||t===52||t===86||t===160;)this.state=1756,this.typeRelationshipPart(),this.state=1761,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}superclassingPart(){let e=new fs(this.context,this.state);this.enterRule(e,166,r.RULE_superclassingPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1762,t=this.tokenStream.LA(1),t===139||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1763,this.ownedSubclassification(),this.state=1768,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1764,this.match(r.COMMA),this.state=1765,this.ownedSubclassification(),this.state=1770,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}subclassification(){let e=new ms(this.context,this.state);this.enterRule(e,168,r.RULE_subclassification);let t;try{this.enterOuterAlt(e,1),this.state=1775,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===138&&(this.state=1771,this.match(r.SPECIALIZATION),this.state=1773,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1772,this.identification())),this.state=1777,this.match(r.SUBCLASSIFIER),this.state=1778,this.qualifiedName(),this.state=1779,t=this.tokenStream.LA(1),t===139||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1780,this.qualifiedName(),this.state=1781,this.relationshipBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedSubclassification(){let e=new ft(this.context,this.state);this.enterRule(e,170,r.RULE_ownedSubclassification);try{this.enterOuterAlt(e,1),this.state=1783,this.qualifiedName()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}feature(){let e=new gs(this.context,this.state);this.enterRule(e,172,r.RULE_feature);let t;try{this.enterOuterAlt(e,1);{switch(this.state=1799,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,108,this.context)){case 1:{switch(this.state=1785,this.featurePrefix(),this.state=1788,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.FEATURE:this.state=1786,this.match(r.FEATURE);break;case r.HASH:this.state=1787,this.prefixMetadataMember();break;default:throw new g(this)}this.state=1791,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||(t-34&-32)===0&&(1<<t-34&8449)!==0||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||(t-217&-32)===0&&(1<<t-217&7)!==0)&&(this.state=1790,this.featureDeclaration())}break;case 2:{switch(this.state=1795,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,107,this.context)){case 1:this.state=1793,this.endFeaturePrefix();break;case 2:this.state=1794,this.basicFeaturePrefix();break}this.state=1797,this.featureDeclaration()}break}this.state=1802,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=1801,this.valuePart()),this.state=1804,this.typeBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}endFeaturePrefix(){let e=new $r(this.context,this.state);this.enterRule(e,174,r.RULE_endFeaturePrefix);let t;try{this.enterOuterAlt(e,1),this.state=1807,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===39&&(this.state=1806,this.match(r.CONST)),this.state=1809,this.match(r.END)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}basicFeaturePrefix(){let e=new tr(this.context,this.state);this.enterRule(e,176,r.RULE_basicFeaturePrefix);let t;try{this.enterOuterAlt(e,1),this.state=1812,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===80||t===83||t===114)&&(this.state=1811,this.featureDirection()),this.state=1815,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===49&&(this.state=1814,this.match(r.DERIVED)),this.state=1818,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===2&&(this.state=1817,this.match(r.ABSTRACT)),this.state=1821,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===31||t===120)&&(this.state=1820,t=this.tokenStream.LA(1),t===31||t===120?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=1824,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===39||t===163)&&(this.state=1823,t=this.tokenStream.LA(1),t===39||t===163?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this))}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featurePrefix(){let e=new oe(this.context,this.state);this.enterRule(e,178,r.RULE_featurePrefix);try{let t;this.enterOuterAlt(e,1);{switch(this.state=1831,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,117,this.context)){case 1:this.state=1826,this.endFeaturePrefix(),this.state=1828,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,116,this.context)===1&&(this.state=1827,this.ownedCrossFeatureMember());break;case 2:this.state=1830,this.basicFeaturePrefix();break}for(this.state=1836,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,118,this.context);t!==2&&t!==L.INVALID_ALT_NUMBER;)t===1&&(this.state=1833,this.prefixMetadataMember()),this.state=1838,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,118,this.context)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedCrossFeatureMember(){let e=new Zr(this.context,this.state);this.enterRule(e,180,r.RULE_ownedCrossFeatureMember);try{this.enterOuterAlt(e,1),this.state=1839,this.ownedCrossFeature()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedCrossFeature(){let e=new Cs(this.context,this.state);this.enterRule(e,182,r.RULE_ownedCrossFeature);try{switch(this.state=1848,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,120,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1841,this.basicFeaturePrefix(),this.state=1842,this.featureDeclaration();break;case 2:this.enterOuterAlt(e,2),this.state=1844,this.basicUsagePrefix(),this.state=1846,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,119,this.context)===1&&(this.state=1845,this.usageDeclaration());break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureDirection(){let e=new ei(this.context,this.state);this.enterRule(e,184,r.RULE_featureDirection);let t;try{this.enterOuterAlt(e,1),this.state=1850,t=this.tokenStream.LA(1),t===80||t===83||t===114?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureDeclaration(){let e=new $(this.context,this.state);this.enterRule(e,186,r.RULE_featureDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=1853,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=1852,this.match(r.ALL)),this.state=1862,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.LT:case r.IDENTIFIER:case r.STRING:switch(this.state=1855,this.featureIdentification(),this.state=1858,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,122,this.context)){case 1:this.state=1856,this.featureSpecializationPart();break;case 2:this.state=1857,this.conjugationPart();break}break;case r.CROSSES:case r.DEFINED:case r.MULTIPLICITY:case r.NONUNIQUE:case r.ORDERED:case r.REDEFINES:case r.REFERENCES:case r.SUBSETS:case r.TYPED:case r.COLON_COLON_GT:case r.COLON_GT_GT:case r.COLON_GT:case r.FAT_ARROW:case r.COLON:case r.LBRACK:this.state=1860,this.featureSpecializationPart();break;case r.CONJUGATES:case r.TILDE:this.state=1861,this.conjugationPart();break;default:throw new g(this)}for(this.state=1867,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t-27&-32)===0&&(1<<t-27&41943041)!==0||(t-66&-32)===0&&(1<<t-66&5242881)!==0||t===160;)this.state=1864,this.featureRelationshipPart(),this.state=1869,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureIdentification(){let e=new Es(this.context,this.state);this.enterRule(e,188,r.RULE_featureIdentification);try{switch(this.state=1877,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.LT:this.enterOuterAlt(e,1),this.state=1870,this.match(r.LT),this.state=1871,this.name(),this.state=1872,this.match(r.GT),this.state=1874,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,125,this.context)===1&&(this.state=1873,this.name());break;case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,2),this.state=1876,this.name();break;default:throw new g(this)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureRelationshipPart(){let e=new ti(this.context,this.state);this.enterRule(e,190,r.RULE_featureRelationshipPart);try{switch(this.state=1883,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DIFFERENCES:case r.DISJOINT:case r.INTERSECTS:case r.UNIONS:this.enterOuterAlt(e,1),this.state=1879,this.typeRelationshipPart();break;case r.CHAINS:this.enterOuterAlt(e,2),this.state=1880,this.chainingPart();break;case r.INVERSE:this.enterOuterAlt(e,3),this.state=1881,this.invertingPart();break;case r.FEATURED:this.enterOuterAlt(e,4),this.state=1882,this.typeFeaturingPart();break;default:throw new g(this)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}chainingPart(){let e=new ys(this.context,this.state);this.enterRule(e,192,r.RULE_chainingPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1885,this.match(r.CHAINS),this.state=1886,this.qualifiedName(),this.state=1891,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1887,this.match(r.DOT),this.state=1888,this.qualifiedName(),this.state=1893,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}invertingPart(){let e=new vs(this.context,this.state);this.enterRule(e,194,r.RULE_invertingPart);try{this.enterOuterAlt(e,1),this.state=1894,this.match(r.INVERSE),this.state=1895,this.match(r.OF),this.state=1896,this.ownedFeatureInverting()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typeFeaturingPart(){let e=new Ls(this.context,this.state);this.enterRule(e,196,r.RULE_typeFeaturingPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1898,this.match(r.FEATURED),this.state=1899,this.match(r.BY),this.state=1900,this.ownedTypeFeaturing(),this.state=1905,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1901,this.match(r.COMMA),this.state=1902,this.ownedTypeFeaturing(),this.state=1907,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureSpecializationPart(){let e=new Z(this.context,this.state);this.enterRule(e,198,r.RULE_featureSpecializationPart);try{let t;switch(this.state=1929,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.CROSSES:case r.DEFINED:case r.REDEFINES:case r.REFERENCES:case r.SUBSETS:case r.TYPED:case r.COLON_COLON_GT:case r.COLON_GT_GT:case r.COLON_GT:case r.FAT_ARROW:case r.COLON:this.enterOuterAlt(e,1);{this.state=1909,this.errorHandler.sync(this),t=1;do{if(t===1)this.state=1908,this.featureSpecialization();else throw new g(this);this.state=1911,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,130,this.context)}while(t!==2&&t!==L.INVALID_ALT_NUMBER);for(this.state=1914,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,131,this.context)===1&&(this.state=1913,this.multiplicityPart()),this.state=1919,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,132,this.context);t!==2&&t!==L.INVALID_ALT_NUMBER;)t===1&&(this.state=1916,this.featureSpecialization()),this.state=1921,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,132,this.context)}break;case r.MULTIPLICITY:case r.NONUNIQUE:case r.ORDERED:case r.LBRACK:for(this.enterOuterAlt(e,2),this.state=1922,this.multiplicityPart(),this.state=1926,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,133,this.context);t!==2&&t!==L.INVALID_ALT_NUMBER;)t===1&&(this.state=1923,this.featureSpecialization()),this.state=1928,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,133,this.context);break;default:throw new g(this)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}multiplicityPart(){let e=new ri(this.context,this.state);this.enterRule(e,200,r.RULE_multiplicityPart);try{switch(this.state=1952,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.MULTIPLICITY:case r.LBRACK:switch(this.enterOuterAlt(e,1),this.state=1931,this.ownedMultiplicity(),this.state=1940,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,137,this.context)){case 1:this.state=1932,this.match(r.ORDERED),this.state=1934,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,135,this.context)===1&&(this.state=1933,this.match(r.NONUNIQUE));break;case 2:this.state=1936,this.match(r.NONUNIQUE),this.state=1938,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,136,this.context)===1&&(this.state=1937,this.match(r.ORDERED));break}break;case r.NONUNIQUE:case r.ORDERED:switch(this.enterOuterAlt(e,2),this.state=1950,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.ORDERED:this.state=1942,this.match(r.ORDERED),this.state=1944,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,138,this.context)===1&&(this.state=1943,this.match(r.NONUNIQUE));break;case r.NONUNIQUE:this.state=1946,this.match(r.NONUNIQUE),this.state=1948,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,139,this.context)===1&&(this.state=1947,this.match(r.ORDERED));break;default:throw new g(this)}break;default:throw new g(this)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureSpecialization(){let e=new Le(this.context,this.state);this.enterRule(e,202,r.RULE_featureSpecialization);try{switch(this.state=1959,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DEFINED:case r.TYPED:case r.COLON:this.enterOuterAlt(e,1),this.state=1954,this.typings();break;case r.SUBSETS:case r.COLON_GT:this.enterOuterAlt(e,2),this.state=1955,this.subsettings();break;case r.REFERENCES:case r.COLON_COLON_GT:this.enterOuterAlt(e,3),this.state=1956,this.references();break;case r.CROSSES:case r.FAT_ARROW:this.enterOuterAlt(e,4),this.state=1957,this.crosses();break;case r.REDEFINES:case r.COLON_GT_GT:this.enterOuterAlt(e,5),this.state=1958,this.redefinitions();break;default:throw new g(this)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typings(){let e=new Ss(this.context,this.state);this.enterRule(e,204,r.RULE_typings);let t;try{switch(this.state=1977,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,145,this.context)){case 1:for(this.enterOuterAlt(e,1),this.state=1961,this.typedBy(),this.state=1966,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1962,this.match(r.COMMA),this.state=1963,this.ownedFeatureTyping(),this.state=1968,this.errorHandler.sync(this),t=this.tokenStream.LA(1);break;case 2:for(this.enterOuterAlt(e,2),this.state=1969,this.typedBy(),this.state=1974,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1970,this.match(r.COMMA),this.state=1971,this.featureTyping(),this.state=1976,this.errorHandler.sync(this),t=this.tokenStream.LA(1);break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typedBy(){let e=new Ps(this.context,this.state);this.enterRule(e,206,r.RULE_typedBy);try{switch(this.state=1991,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,148,this.context)){case 1:this.enterOuterAlt(e,1);{switch(this.state=1982,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COLON:this.state=1979,this.match(r.COLON);break;case r.TYPED:this.state=1980,this.match(r.TYPED),this.state=1981,this.match(r.BY);break;default:throw new g(this)}this.state=1984,this.ownedFeatureTyping()}break;case 2:this.enterOuterAlt(e,2);{switch(this.state=1988,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COLON:this.state=1985,this.match(r.COLON);break;case r.DEFINED:this.state=1986,this.match(r.DEFINED),this.state=1987,this.match(r.BY);break;default:throw new g(this)}this.state=1990,this.featureTyping()}break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}subsettings(){let e=new Ts(this.context,this.state);this.enterRule(e,208,r.RULE_subsettings);let t;try{for(this.enterOuterAlt(e,1),this.state=1993,this.subsets(),this.state=1998,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1994,this.match(r.COMMA),this.state=1995,this.ownedSubsetting(),this.state=2e3,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}subsets(){let e=new ii(this.context,this.state);this.enterRule(e,210,r.RULE_subsets);let t;try{this.enterOuterAlt(e,1),this.state=2001,t=this.tokenStream.LA(1),t===148||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=2002,this.ownedSubsetting()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}references(){let e=new As(this.context,this.state);this.enterRule(e,212,r.RULE_references);let t;try{this.enterOuterAlt(e,1),this.state=2004,t=this.tokenStream.LA(1),t===128||t===175?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=2005,this.ownedReferenceSubsetting()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}crosses(){let e=new Ms(this.context,this.state);this.enterRule(e,214,r.RULE_crosses);let t;try{this.enterOuterAlt(e,1),this.state=2007,t=this.tokenStream.LA(1),t===42||t===188?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=2008,this.ownedCrossSubsetting()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}redefinitions(){let e=new Ns(this.context,this.state);this.enterRule(e,216,r.RULE_redefinitions);let t;try{for(this.enterOuterAlt(e,1),this.state=2010,this.redefines(),this.state=2015,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=2011,this.match(r.COMMA),this.state=2012,this.ownedRedefinition(),this.state=2017,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}redefines(){let e=new Us(this.context,this.state);this.enterRule(e,218,r.RULE_redefines);let t;try{this.enterOuterAlt(e,1),this.state=2018,t=this.tokenStream.LA(1),t===125||t===176?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=2019,this.ownedRedefinition()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureTyping(){let e=new mt(this.context,this.state);this.enterRule(e,220,r.RULE_featureTyping);let t;try{switch(this.state=2039,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SPECIALIZATION:case r.TYPING:this.enterOuterAlt(e,1);{switch(this.state=2025,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===138&&(this.state=2021,this.match(r.SPECIALIZATION),this.state=2023,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2022,this.identification())),this.state=2027,this.match(r.TYPING),this.state=2028,this.qualifiedName(),this.state=2032,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COLON:this.state=2029,this.match(r.COLON);break;case r.TYPED:this.state=2030,this.match(r.TYPED),this.state=2031,this.match(r.BY);break;default:throw new g(this)}this.state=2034,this.generalType(),this.state=2035,this.relationshipBody()}break;case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,2),this.state=2037,this.ownedFeatureTyping();break;case r.TILDE:this.enterOuterAlt(e,3),this.state=2038,this.conjugatedPortTyping();break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedFeatureTyping(){let e=new xe(this.context,this.state);this.enterRule(e,222,r.RULE_ownedFeatureTyping);let t;try{for(this.enterOuterAlt(e,1),this.state=2041,this.qualifiedName(),this.state=2046,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2042,this.match(r.DOT),this.state=2043,this.qualifiedName(),this.state=2048,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}subsetting(){let e=new Is(this.context,this.state);this.enterRule(e,224,r.RULE_subsetting);let t;try{this.enterOuterAlt(e,1),this.state=2053,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===138&&(this.state=2049,this.match(r.SPECIALIZATION),this.state=2051,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2050,this.identification())),this.state=2055,this.match(r.SUBSET),this.state=2056,this.specificType(),this.state=2057,t=this.tokenStream.LA(1),t===148||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=2058,this.generalType(),this.state=2059,this.relationshipBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedSubsetting(){let e=new rr(this.context,this.state);this.enterRule(e,226,r.RULE_ownedSubsetting);let t;try{for(this.enterOuterAlt(e,1),this.state=2061,this.qualifiedName(),this.state=2066,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2062,this.match(r.DOT),this.state=2063,this.qualifiedName(),this.state=2068,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedReferenceSubsetting(){let e=new z(this.context,this.state);this.enterRule(e,228,r.RULE_ownedReferenceSubsetting);let t;try{for(this.enterOuterAlt(e,1),this.state=2069,this.qualifiedName(),this.state=2074,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2070,this.match(r.DOT),this.state=2071,this.qualifiedName(),this.state=2076,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedCrossSubsetting(){let e=new Os(this.context,this.state);this.enterRule(e,230,r.RULE_ownedCrossSubsetting);let t;try{for(this.enterOuterAlt(e,1),this.state=2077,this.qualifiedName(),this.state=2082,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2078,this.match(r.DOT),this.state=2079,this.qualifiedName(),this.state=2084,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}redefinition(){let e=new ws(this.context,this.state);this.enterRule(e,232,r.RULE_redefinition);let t;try{this.enterOuterAlt(e,1),this.state=2089,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===138&&(this.state=2085,this.match(r.SPECIALIZATION),this.state=2087,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2086,this.identification())),this.state=2091,this.match(r.REDEFINITION),this.state=2092,this.specificType(),this.state=2093,t=this.tokenStream.LA(1),t===125||t===176?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=2094,this.generalType(),this.state=2095,this.relationshipBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedRedefinition(){let e=new Ze(this.context,this.state);this.enterRule(e,234,r.RULE_ownedRedefinition);let t;try{for(this.enterOuterAlt(e,1),this.state=2097,this.qualifiedName(),this.state=2102,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2098,this.match(r.DOT),this.state=2099,this.qualifiedName(),this.state=2104,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedFeatureChain(){let e=new ks(this.context,this.state);this.enterRule(e,236,r.RULE_ownedFeatureChain);let t;try{switch(this.state=2113,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,165,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2105,this.featureChain();break;case 2:this.enterOuterAlt(e,2);{this.state=2106,this.ownedFeatureChaining(),this.state=2109,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=2107,this.match(r.DOT),this.state=2108,this.ownedFeatureChaining(),this.state=2111,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===202)}break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureChain(){let e=new ni(this.context,this.state);this.enterRule(e,238,r.RULE_featureChain);let t;try{this.enterOuterAlt(e,1);{this.state=2115,this.ownedFeatureChaining(),this.state=2118,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=2116,this.match(r.DOT),this.state=2117,this.ownedFeatureChaining(),this.state=2120,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===202)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedFeatureChaining(){let e=new Ve(this.context,this.state);this.enterRule(e,240,r.RULE_ownedFeatureChaining);try{this.enterOuterAlt(e,1),this.state=2122,this.qualifiedName()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureInverting(){let e=new Ds(this.context,this.state);this.enterRule(e,242,r.RULE_featureInverting);let t;try{this.enterOuterAlt(e,1);{for(this.state=2128,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===89&&(this.state=2124,this.match(r.INVERTING),this.state=2126,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2125,this.identification())),this.state=2130,this.match(r.INVERSE),this.state=2131,this.qualifiedName(),this.state=2136,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2132,this.match(r.DOT),this.state=2133,this.qualifiedName(),this.state=2138,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=2139,this.match(r.OF),this.state=2140,this.qualifiedName(),this.state=2145,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2141,this.match(r.DOT),this.state=2142,this.qualifiedName(),this.state=2147,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2148,this.relationshipBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedFeatureInverting(){let e=new Fs(this.context,this.state);this.enterRule(e,244,r.RULE_ownedFeatureInverting);let t;try{for(this.enterOuterAlt(e,1),this.state=2150,this.qualifiedName(),this.state=2155,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2151,this.match(r.DOT),this.state=2152,this.qualifiedName(),this.state=2157,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typeFeaturing(){let e=new Hs(this.context,this.state);this.enterRule(e,246,r.RULE_typeFeaturing);let t;try{this.enterOuterAlt(e,1),this.state=2158,this.match(r.FEATURING),this.state=2163,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,173,this.context)===1&&(this.state=2160,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2159,this.identification()),this.state=2162,this.match(r.OF)),this.state=2165,this.qualifiedName(),this.state=2166,this.match(r.BY),this.state=2167,this.qualifiedName(),this.state=2168,this.relationshipBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedTypeFeaturing(){let e=new si(this.context,this.state);this.enterRule(e,248,r.RULE_ownedTypeFeaturing);try{this.enterOuterAlt(e,1),this.state=2170,this.qualifiedName()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}dataType(){let e=new Bs(this.context,this.state);this.enterRule(e,250,r.RULE_dataType);try{this.enterOuterAlt(e,1),this.state=2172,this.typePrefix(),this.state=2173,this.match(r.DATATYPE),this.state=2174,this.classifierDeclaration(),this.state=2175,this.typeBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}class_(){let e=new Vs(this.context,this.state);this.enterRule(e,252,r.RULE_class);try{this.enterOuterAlt(e,1),this.state=2177,this.typePrefix(),this.state=2178,this.match(r.CLASS),this.state=2179,this.classifierDeclaration(),this.state=2180,this.typeBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}structure(){let e=new _s(this.context,this.state);this.enterRule(e,254,r.RULE_structure);try{this.enterOuterAlt(e,1),this.state=2182,this.typePrefix(),this.state=2183,this.match(r.STRUCT),this.state=2184,this.classifierDeclaration(),this.state=2185,this.typeBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}association(){let e=new qs(this.context,this.state);this.enterRule(e,256,r.RULE_association);try{this.enterOuterAlt(e,1),this.state=2187,this.typePrefix(),this.state=2188,this.match(r.ASSOC),this.state=2189,this.classifierDeclaration(),this.state=2190,this.typeBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}associationStructure(){let e=new Gs(this.context,this.state);this.enterRule(e,258,r.RULE_associationStructure);try{this.enterOuterAlt(e,1),this.state=2192,this.typePrefix(),this.state=2193,this.match(r.ASSOC),this.state=2194,this.match(r.STRUCT),this.state=2195,this.classifierDeclaration(),this.state=2196,this.typeBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}connector(){let e=new Ks(this.context,this.state);this.enterRule(e,260,r.RULE_connector);let t;try{this.enterOuterAlt(e,1);{switch(this.state=2198,this.featurePrefix(),this.state=2199,this.match(r.CONNECTOR),this.state=2207,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,176,this.context)){case 1:this.state=2201,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||(t-34&-32)===0&&(1<<t-34&8449)!==0||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||(t-217&-32)===0&&(1<<t-217&7)!==0)&&(this.state=2200,this.featureDeclaration()),this.state=2204,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2203,this.valuePart());break;case 2:this.state=2206,this.connectorDeclaration();break}this.state=2209,this.typeBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}connectorDeclaration(){let e=new js(this.context,this.state);this.enterRule(e,262,r.RULE_connectorDeclaration);try{switch(this.state=2213,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,177,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2211,this.binaryConnectorDeclaration();break;case 2:this.enterOuterAlt(e,2),this.state=2212,this.naryConnectorDeclaration();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}binaryConnectorDeclaration(){let e=new Qs(this.context,this.state);this.enterRule(e,264,r.RULE_binaryConnectorDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=2223,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,180,this.context)){case 1:this.state=2216,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||(t-34&-32)===0&&(1<<t-34&8449)!==0||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||(t-217&-32)===0&&(1<<t-217&7)!==0)&&(this.state=2215,this.featureDeclaration()),this.state=2218,this.match(r.FROM);break;case 2:this.state=2219,this.match(r.ALL),this.state=2221,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===74&&(this.state=2220,this.match(r.FROM));break}this.state=2225,this.connectorEndMember(),this.state=2226,this.match(r.TO),this.state=2227,this.connectorEndMember()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}naryConnectorDeclaration(){let e=new zs(this.context,this.state);this.enterRule(e,266,r.RULE_naryConnectorDeclaration);let t;try{this.enterOuterAlt(e,1);{for(this.state=2230,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||(t-34&-32)===0&&(1<<t-34&8449)!==0||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||(t-217&-32)===0&&(1<<t-217&7)!==0)&&(this.state=2229,this.featureDeclaration()),this.state=2232,this.match(r.LPAREN),this.state=2233,this.connectorEndMember(),this.state=2234,this.match(r.COMMA),this.state=2235,this.connectorEndMember(),this.state=2240,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=2236,this.match(r.COMMA),this.state=2237,this.connectorEndMember(),this.state=2242,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2243,this.match(r.RPAREN)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}connectorEndMember(){let e=new V(this.context,this.state);this.enterRule(e,268,r.RULE_connectorEndMember);try{this.enterOuterAlt(e,1),this.state=2245,this.connectorEnd()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}connectorEnd(){let e=new Ys(this.context,this.state);this.enterRule(e,270,r.RULE_connectorEnd);let t;try{this.enterOuterAlt(e,1),this.state=2248,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===103||t===211)&&(this.state=2247,this.ownedCrossMultiplicityMember()),this.state=2253,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,184,this.context)===1&&(this.state=2250,this.name(),this.state=2251,t=this.tokenStream.LA(1),t===128||t===175?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=2255,this.ownedReferenceSubsetting()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedCrossMultiplicityMember(){let e=new ai(this.context,this.state);this.enterRule(e,272,r.RULE_ownedCrossMultiplicityMember);try{this.enterOuterAlt(e,1),this.state=2257,this.ownedCrossMultiplicity()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedCrossMultiplicity(){let e=new Ws(this.context,this.state);this.enterRule(e,274,r.RULE_ownedCrossMultiplicity);try{this.enterOuterAlt(e,1),this.state=2259,this.ownedMultiplicity()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bindingConnector(){let e=new Xs(this.context,this.state);this.enterRule(e,276,r.RULE_bindingConnector);try{this.enterOuterAlt(e,1),this.state=2261,this.featurePrefix(),this.state=2262,this.match(r.BINDING),this.state=2263,this.bindingConnectorDeclaration(),this.state=2264,this.typeBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bindingConnectorDeclaration(){let e=new Js(this.context,this.state);this.enterRule(e,278,r.RULE_bindingConnectorDeclaration);let t;try{switch(this.state=2286,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,189,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2266,this.featureDeclaration(),this.state=2272,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===111&&(this.state=2267,this.match(r.OF),this.state=2268,this.connectorEndMember(),this.state=2269,this.match(r.EQ),this.state=2270,this.connectorEndMember());break;case 2:this.enterOuterAlt(e,2),this.state=2275,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=2274,this.match(r.ALL)),this.state=2284,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===103||t===111||(t-193&-32)===0&&(1<<t-193&100925441)!==0)&&(this.state=2278,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===111&&(this.state=2277,this.match(r.OF)),this.state=2280,this.connectorEndMember(),this.state=2281,this.match(r.EQ),this.state=2282,this.connectorEndMember());break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}succession(){let e=new $s(this.context,this.state);this.enterRule(e,280,r.RULE_succession);try{this.enterOuterAlt(e,1),this.state=2288,this.featurePrefix(),this.state=2289,this.match(r.SUCCESSION),this.state=2290,this.successionDeclaration(),this.state=2291,this.typeBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}successionDeclaration(){let e=new Zs(this.context,this.state);this.enterRule(e,282,r.RULE_successionDeclaration);let t;try{switch(this.state=2313,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,194,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2293,this.featureDeclaration(),this.state=2299,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===69&&(this.state=2294,this.match(r.FIRST),this.state=2295,this.connectorEndMember(),this.state=2296,this.match(r.THEN),this.state=2297,this.connectorEndMember());break;case 2:this.enterOuterAlt(e,2),this.state=2302,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=2301,this.match(r.ALL)),this.state=2311,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===69||t===103||(t-193&-32)===0&&(1<<t-193&100925441)!==0)&&(this.state=2305,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===69&&(this.state=2304,this.match(r.FIRST)),this.state=2307,this.connectorEndMember(),this.state=2308,this.match(r.THEN),this.state=2309,this.connectorEndMember());break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}behavior(){let e=new ea(this.context,this.state);this.enterRule(e,284,r.RULE_behavior);try{this.enterOuterAlt(e,1),this.state=2315,this.typePrefix(),this.state=2316,this.match(r.BEHAVIOR),this.state=2317,this.classifierDeclaration(),this.state=2318,this.typeBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}step(){let e=new ta(this.context,this.state);this.enterRule(e,286,r.RULE_step);let t;try{this.enterOuterAlt(e,1),this.state=2320,this.featurePrefix(),this.state=2321,this.match(r.STEP),this.state=2322,this.featureDeclaration(),this.state=2324,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2323,this.valuePart()),this.state=2326,this.typeBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}function_(){let e=new ra(this.context,this.state);this.enterRule(e,288,r.RULE_function);try{this.enterOuterAlt(e,1),this.state=2328,this.typePrefix(),this.state=2329,this.match(r.FUNCTION),this.state=2330,this.classifierDeclaration(),this.state=2331,this.functionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionBody(){let e=new et(this.context,this.state);this.enterRule(e,290,r.RULE_functionBody);try{switch(this.state=2338,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=2333,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2),this.state=2334,this.match(r.LBRACE),this.state=2335,this.functionBodyPart(),this.state=2336,this.match(r.RBRACE);break;default:throw new g(this)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionBodyPart(){let e=new ir(this.context,this.state);this.enterRule(e,292,r.RULE_functionBodyPart);let t;try{let i;this.enterOuterAlt(e,1);{for(this.state=2344,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,198,this.context);i!==2&&i!==L.INVALID_ALT_NUMBER;){if(i===1)switch(this.state=2342,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,197,this.context)){case 1:this.state=2340,this.typeBodyElement();break;case 2:this.state=2341,this.returnFeatureMember();break}this.state=2346,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,198,this.context)}this.state=2348,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||t===64||t===77||(t-105&-32)===0&&(1<<t-105&917517)!==0||t===156||(t-191&-32)===0&&(1<<t-191&4236772773)!==0)&&(this.state=2347,this.resultExpressionMember())}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}returnFeatureMember(){let e=new li(this.context,this.state);this.enterRule(e,294,r.RULE_returnFeatureMember);try{this.enterOuterAlt(e,1),this.state=2350,this.memberPrefix(),this.state=2351,this.match(r.RETURN),this.state=2352,this.featureElement()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}resultExpressionMember(){let e=new nr(this.context,this.state);this.enterRule(e,296,r.RULE_resultExpressionMember);try{this.enterOuterAlt(e,1),this.state=2355,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,200,this.context)===1&&(this.state=2354,this.memberPrefix()),this.state=2357,this.ownedExpression(0)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}expression(){let e=new ia(this.context,this.state);this.enterRule(e,298,r.RULE_expression);let t;try{this.enterOuterAlt(e,1),this.state=2359,this.featurePrefix(),this.state=2360,this.match(r.EXPR),this.state=2361,this.featureDeclaration(),this.state=2363,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2362,this.valuePart()),this.state=2365,this.functionBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}predicate(){let e=new na(this.context,this.state);this.enterRule(e,300,r.RULE_predicate);try{this.enterOuterAlt(e,1),this.state=2367,this.typePrefix(),this.state=2368,this.match(r.PREDICATE),this.state=2369,this.classifierDeclaration(),this.state=2370,this.functionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}booleanExpression(){let e=new sa(this.context,this.state);this.enterRule(e,302,r.RULE_booleanExpression);let t;try{this.enterOuterAlt(e,1),this.state=2372,this.featurePrefix(),this.state=2373,this.match(r.BOOL),this.state=2374,this.featureDeclaration(),this.state=2376,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2375,this.valuePart()),this.state=2378,this.functionBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}invariant(){let e=new aa(this.context,this.state);this.enterRule(e,304,r.RULE_invariant);let t;try{this.enterOuterAlt(e,1),this.state=2380,this.featurePrefix(),this.state=2381,this.match(r.INV),this.state=2383,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===64||t===156)&&(this.state=2382,t=this.tokenStream.LA(1),t===64||t===156?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=2385,this.featureDeclaration(),this.state=2387,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2386,this.valuePart()),this.state=2389,this.functionBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedExpressionMember(){let e=new la(this.context,this.state);this.enterRule(e,306,r.RULE_ownedExpressionMember);try{this.enterOuterAlt(e,1),this.state=2391,this.ownedExpression(0)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataReference(){let e=new l1(this.context,this.state);this.enterRule(e,308,r.RULE_metadataReference);try{this.enterOuterAlt(e,1),this.state=2393,this.elementReferenceMember()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typeReferenceMember(){let e=new o1(this.context,this.state);this.enterRule(e,310,r.RULE_typeReferenceMember);try{this.enterOuterAlt(e,1),this.state=2395,this.typeReference()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typeResultMember(){let e=new u1(this.context,this.state);this.enterRule(e,312,r.RULE_typeResultMember);try{this.enterOuterAlt(e,1),this.state=2397,this.typeReference()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}referenceTyping(){let e=new oa(this.context,this.state);this.enterRule(e,314,r.RULE_referenceTyping);try{this.enterOuterAlt(e,1),this.state=2399,this.qualifiedName()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyResultMember(){let e=new c1(this.context,this.state);this.enterRule(e,316,r.RULE_emptyResultMember);try{this.enterOuterAlt(e,1),this.state=2401,this.emptyFeature()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sequenceOperatorExpression(){let e=new h1(this.context,this.state);this.enterRule(e,318,r.RULE_sequenceOperatorExpression);try{this.enterOuterAlt(e,1),this.state=2403,this.ownedExpressionMember(),this.state=2404,this.match(r.COMMA),this.state=2405,this.sequenceExpressionListMember()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sequenceExpressionListMember(){let e=new ua(this.context,this.state);this.enterRule(e,320,r.RULE_sequenceExpressionListMember);try{this.enterOuterAlt(e,1),this.state=2407,this.sequenceExpressionList()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bodyArgumentMember(){let e=new d1(this.context,this.state);this.enterRule(e,322,r.RULE_bodyArgumentMember);try{this.enterOuterAlt(e,1),this.state=2409,this.bodyArgument()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bodyArgument(){let e=new ca(this.context,this.state);this.enterRule(e,324,r.RULE_bodyArgument);try{this.enterOuterAlt(e,1),this.state=2411,this.bodyArgumentValue()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bodyArgumentValue(){let e=new ha(this.context,this.state);this.enterRule(e,326,r.RULE_bodyArgumentValue);try{this.enterOuterAlt(e,1),this.state=2413,this.bodyExpression()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReferenceArgumentMember(){let e=new p1(this.context,this.state);this.enterRule(e,328,r.RULE_functionReferenceArgumentMember);try{this.enterOuterAlt(e,1),this.state=2415,this.functionReferenceArgument()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReferenceArgument(){let e=new da(this.context,this.state);this.enterRule(e,330,r.RULE_functionReferenceArgument);try{this.enterOuterAlt(e,1),this.state=2417,this.functionReferenceArgumentValue()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReferenceArgumentValue(){let e=new pa(this.context,this.state);this.enterRule(e,332,r.RULE_functionReferenceArgumentValue);try{this.enterOuterAlt(e,1),this.state=2419,this.functionReferenceExpression()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReferenceExpression(){let e=new xa(this.context,this.state);this.enterRule(e,334,r.RULE_functionReferenceExpression);try{this.enterOuterAlt(e,1),this.state=2421,this.functionReferenceMember()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReferenceMember(){let e=new ba(this.context,this.state);this.enterRule(e,336,r.RULE_functionReferenceMember);try{this.enterOuterAlt(e,1),this.state=2423,this.functionReference()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReference(){let e=new Ra(this.context,this.state);this.enterRule(e,338,r.RULE_functionReference);try{this.enterOuterAlt(e,1),this.state=2425,this.referenceTyping()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureChainMember(){let e=new gt(this.context,this.state);this.enterRule(e,340,r.RULE_featureChainMember);let t;try{for(this.enterOuterAlt(e,1),this.state=2427,this.qualifiedName(),this.state=2432,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2428,this.match(r.DOT),this.state=2429,this.qualifiedName(),this.state=2434,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedFeatureChainMember(){let e=new x1(this.context,this.state);this.enterRule(e,342,r.RULE_ownedFeatureChainMember);try{switch(this.state=2437,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,206,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2435,this.featureChain();break;case 2:this.enterOuterAlt(e,2),this.state=2436,this.ownedFeatureChain();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureReferenceMember(){let e=new b1(this.context,this.state);this.enterRule(e,344,r.RULE_featureReferenceMember);try{this.enterOuterAlt(e,1),this.state=2439,this.featureReference()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureReference(){let e=new fa(this.context,this.state);this.enterRule(e,346,r.RULE_featureReference);try{this.enterOuterAlt(e,1),this.state=2441,this.qualifiedName()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}elementReferenceMember(){let e=new ma(this.context,this.state);this.enterRule(e,348,r.RULE_elementReferenceMember);try{this.enterOuterAlt(e,1),this.state=2443,this.qualifiedName()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}constructorResultMember(){let e=new R1(this.context,this.state);this.enterRule(e,350,r.RULE_constructorResultMember);try{this.enterOuterAlt(e,1),this.state=2445,this.constructorResult()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}constructorResult(){let e=new ga(this.context,this.state);this.enterRule(e,352,r.RULE_constructorResult);try{this.enterOuterAlt(e,1),this.state=2447,this.argumentList()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}instantiatedTypeMember(){let e=new f1(this.context,this.state);this.enterRule(e,354,r.RULE_instantiatedTypeMember);let t;try{for(this.enterOuterAlt(e,1),this.state=2449,this.qualifiedName(),this.state=2454,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2450,this.match(r.DOT),this.state=2451,this.qualifiedName(),this.state=2456,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}instantiatedTypeReference(){let e=new m1(this.context,this.state);this.enterRule(e,356,r.RULE_instantiatedTypeReference);try{this.enterOuterAlt(e,1),this.state=2457,this.qualifiedName()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}namedArgumentMember(){let e=new g1(this.context,this.state);this.enterRule(e,358,r.RULE_namedArgumentMember);try{this.enterOuterAlt(e,1),this.state=2459,this.namedArgument()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}parameterRedefinition(){let e=new C1(this.context,this.state);this.enterRule(e,360,r.RULE_parameterRedefinition);try{this.enterOuterAlt(e,1),this.state=2461,this.qualifiedName()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}expressionBodyMember(){let e=new E1(this.context,this.state);this.enterRule(e,362,r.RULE_expressionBodyMember);try{this.enterOuterAlt(e,1),this.state=2463,this.expressionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}expressionBody(){let e=new Ca(this.context,this.state);this.enterRule(e,364,r.RULE_expressionBody);try{this.enterOuterAlt(e,1),this.state=2465,this.match(r.LBRACE),this.state=2466,this.functionBodyPart(),this.state=2467,this.match(r.RBRACE)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}booleanValue(){let e=new y1(this.context,this.state);this.enterRule(e,366,r.RULE_booleanValue);let t;try{this.enterOuterAlt(e,1),this.state=2469,t=this.tokenStream.LA(1),t===64||t===156?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}realValue(){let e=new v1(this.context,this.state);this.enterRule(e,368,r.RULE_realValue);let t;try{switch(this.state=2477,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOT:case r.INTEGER:this.enterOuterAlt(e,1),this.state=2472,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===221&&(this.state=2471,this.match(r.INTEGER)),this.state=2474,this.match(r.DOT),this.state=2475,t=this.tokenStream.LA(1),t===221||t===222?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case r.REAL:this.enterOuterAlt(e,2),this.state=2476,this.match(r.REAL);break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interaction(){let e=new Ea(this.context,this.state);this.enterRule(e,370,r.RULE_interaction);try{this.enterOuterAlt(e,1),this.state=2479,this.typePrefix(),this.state=2480,this.match(r.INTERACTION),this.state=2481,this.classifierDeclaration(),this.state=2482,this.typeBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flow(){let e=new ya(this.context,this.state);this.enterRule(e,372,r.RULE_flow);try{this.enterOuterAlt(e,1),this.state=2484,this.featurePrefix(),this.state=2485,this.match(r.FLOW),this.state=2486,this.flowDeclaration(),this.state=2487,this.typeBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}successionFlow(){let e=new va(this.context,this.state);this.enterRule(e,374,r.RULE_successionFlow);try{this.enterOuterAlt(e,1),this.state=2489,this.featurePrefix(),this.state=2490,this.match(r.SUCCESSION),this.state=2491,this.match(r.FLOW),this.state=2492,this.flowDeclaration(),this.state=2493,this.typeBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowDeclaration(){let e=new Ct(this.context,this.state);this.enterRule(e,376,r.RULE_flowDeclaration);let t;try{switch(this.state=2534,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,218,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2495,this.featureDeclaration(),this.state=2497,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2496,this.valuePart()),this.state=2501,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===111&&(this.state=2499,this.match(r.OF),this.state=2500,this.payloadFeatureMember()),this.state=2508,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===74&&(this.state=2503,this.match(r.FROM),this.state=2504,this.flowEndMember(),this.state=2505,this.match(r.TO),this.state=2506,this.flowEndMember());break;case 2:this.enterOuterAlt(e,2),this.state=2511,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=2510,this.match(r.ALL)),this.state=2513,this.flowEndMember(),this.state=2514,this.match(r.TO),this.state=2515,this.flowEndMember();break;case 3:this.enterOuterAlt(e,3),this.state=2518,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=2517,this.usageDeclaration()),this.state=2521,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2520,this.valuePart()),this.state=2525,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===111&&(this.state=2523,this.match(r.OF),this.state=2524,this.flowPayloadFeatureMember()),this.state=2532,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===74&&(this.state=2527,this.match(r.FROM),this.state=2528,this.flowEndMember(),this.state=2529,this.match(r.TO),this.state=2530,this.flowEndMember());break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}payloadFeatureMember(){let e=new La(this.context,this.state);this.enterRule(e,378,r.RULE_payloadFeatureMember);try{this.enterOuterAlt(e,1),this.state=2536,this.payloadFeature()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}payloadFeature(){let e=new sr(this.context,this.state);this.enterRule(e,380,r.RULE_payloadFeature);let t;try{switch(this.state=2557,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,224,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2539,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2538,this.identification()),this.state=2541,this.valuePart();break;case 2:this.enterOuterAlt(e,2),this.state=2543,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2542,this.identification()),this.state=2545,this.payloadFeatureSpecializationPart(),this.state=2547,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2546,this.valuePart());break;case 3:this.enterOuterAlt(e,3),this.state=2549,this.ownedFeatureTyping(),this.state=2551,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===103||t===211)&&(this.state=2550,this.ownedMultiplicity());break;case 4:this.enterOuterAlt(e,4),this.state=2553,this.ownedMultiplicity(),this.state=2555,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-193&-32)===0&&(1<<t-193&100663297)!==0&&(this.state=2554,this.ownedFeatureTyping());break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}payloadFeatureSpecializationPart(){let e=new oi(this.context,this.state);this.enterRule(e,382,r.RULE_payloadFeatureSpecializationPart);let t;try{let i;switch(this.state=2579,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.CROSSES:case r.DEFINED:case r.REDEFINES:case r.REFERENCES:case r.SUBSETS:case r.TYPED:case r.COLON_COLON_GT:case r.COLON_GT_GT:case r.COLON_GT:case r.FAT_ARROW:case r.COLON:this.enterOuterAlt(e,1);{this.state=2560,this.errorHandler.sync(this),i=1;do{if(i===1)this.state=2559,this.featureSpecialization();else throw new g(this);this.state=2562,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,225,this.context)}while(i!==2&&i!==L.INVALID_ALT_NUMBER);for(this.state=2565,this.errorHandler.sync(this),t=this.tokenStream.LA(1),((t-103&-32)===0&&(1<<t-103&1033)!==0||t===211)&&(this.state=2564,this.multiplicityPart()),this.state=2570,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===42||t===47||(t-125&-32)===0&&(1<<t-125&8388617)!==0||(t-158&-32)===0&&(1<<t-158&1208352769)!==0||t===204;)this.state=2567,this.featureSpecialization(),this.state=2572,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}break;case r.MULTIPLICITY:case r.NONUNIQUE:case r.ORDERED:case r.LBRACK:this.enterOuterAlt(e,2);{this.state=2573,this.multiplicityPart(),this.state=2575,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=2574,this.featureSpecialization(),this.state=2577,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===42||t===47||(t-125&-32)===0&&(1<<t-125&8388617)!==0||(t-158&-32)===0&&(1<<t-158&1208352769)!==0||t===204)}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}flowEndMember(){let e=new ui(this.context,this.state);this.enterRule(e,384,r.RULE_flowEndMember);try{this.enterOuterAlt(e,1),this.state=2581,this.flowEnd()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowEnd(){let e=new Sa(this.context,this.state);this.enterRule(e,386,r.RULE_flowEnd);let t;try{for(this.enterOuterAlt(e,1),this.state=2583,this.qualifiedName(),this.state=2588,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2584,this.match(r.DOT),this.state=2585,this.qualifiedName(),this.state=2590,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}flowFeatureMember(){let e=new L1(this.context,this.state);this.enterRule(e,388,r.RULE_flowFeatureMember);try{this.enterOuterAlt(e,1),this.state=2591,this.flowFeature()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowFeature(){let e=new Pa(this.context,this.state);this.enterRule(e,390,r.RULE_flowFeature);try{this.enterOuterAlt(e,1),this.state=2593,this.flowFeatureRedefinition()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowFeatureRedefinition(){let e=new Ta(this.context,this.state);this.enterRule(e,392,r.RULE_flowFeatureRedefinition);try{this.enterOuterAlt(e,1),this.state=2595,this.qualifiedName()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}valuePart(){let e=new D(this.context,this.state);this.enterRule(e,394,r.RULE_valuePart);try{this.enterOuterAlt(e,1),this.state=2597,this.featureValue()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureValue(){let e=new Aa(this.context,this.state);this.enterRule(e,396,r.RULE_featureValue);let t;try{this.enterOuterAlt(e,1);{switch(this.state=2605,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.EQ:this.state=2599,this.match(r.EQ);break;case r.COLON_EQ:this.state=2600,this.match(r.COLON_EQ);break;case r.DEFAULT:this.state=2601,this.match(r.DEFAULT),this.state=2603,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===184||t===207)&&(this.state=2602,t=this.tokenStream.LA(1),t===184||t===207?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this));break;default:throw new g(this)}this.state=2607,this.ownedExpression(0)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}multiplicity(){let e=new Ma(this.context,this.state);this.enterRule(e,398,r.RULE_multiplicity);try{switch(this.state=2611,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,233,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2609,this.multiplicitySubset();break;case 2:this.enterOuterAlt(e,2),this.state=2610,this.multiplicityRange();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}multiplicitySubset(){let e=new Na(this.context,this.state);this.enterRule(e,400,r.RULE_multiplicitySubset);let t;try{this.enterOuterAlt(e,1),this.state=2613,this.match(r.MULTIPLICITY),this.state=2615,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2614,this.identification()),this.state=2617,this.subsets(),this.state=2618,this.typeBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}multiplicityRange(){let e=new ci(this.context,this.state);this.enterRule(e,402,r.RULE_multiplicityRange);let t;try{switch(this.state=2636,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.MULTIPLICITY:this.enterOuterAlt(e,1),this.state=2620,this.match(r.MULTIPLICITY),this.state=2622,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2621,this.identification()),this.state=2624,this.multiplicityBounds(),this.state=2625,this.typeBody();break;case r.LBRACK:this.enterOuterAlt(e,2),this.state=2627,this.match(r.LBRACK),this.state=2631,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,236,this.context)===1&&(this.state=2628,this.multiplicityExpressionMember(),this.state=2629,this.match(r.DOT_DOT)),this.state=2633,this.multiplicityExpressionMember(),this.state=2634,this.match(r.RBRACK);break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedMultiplicity(){let e=new _e(this.context,this.state);this.enterRule(e,404,r.RULE_ownedMultiplicity);try{switch(this.state=2640,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,238,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2638,this.ownedMultiplicityRange();break;case 2:this.enterOuterAlt(e,2),this.state=2639,this.multiplicityRange();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedMultiplicityRange(){let e=new Ua(this.context,this.state);this.enterRule(e,406,r.RULE_ownedMultiplicityRange);try{this.enterOuterAlt(e,1),this.state=2642,this.multiplicityBounds()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}multiplicityBounds(){let e=new hi(this.context,this.state);this.enterRule(e,408,r.RULE_multiplicityBounds);try{this.enterOuterAlt(e,1),this.state=2644,this.match(r.LBRACK),this.state=2648,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,239,this.context)===1&&(this.state=2645,this.multiplicityExpressionMember(),this.state=2646,this.match(r.DOT_DOT)),this.state=2650,this.multiplicityExpressionMember(),this.state=2651,this.match(r.RBRACK)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}multiplicityExpressionMember(){let e=new Et(this.context,this.state);this.enterRule(e,410,r.RULE_multiplicityExpressionMember);try{switch(this.enterOuterAlt(e,1),this.state=2655,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.FALSE:case r.TRUE:case r.STAR:case r.DOUBLE_STRING:case r.INTEGER:case r.REAL:this.state=2653,this.literalExpression();break;case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=2654,this.featureReferenceExpression();break;default:throw new g(this)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metaclass(){let e=new Ia(this.context,this.state);this.enterRule(e,412,r.RULE_metaclass);try{this.enterOuterAlt(e,1),this.state=2657,this.typePrefix(),this.state=2658,this.match(r.METACLASS),this.state=2659,this.classifierDeclaration(),this.state=2660,this.typeBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}prefixMetadataAnnotation(){let e=new di(this.context,this.state);this.enterRule(e,414,r.RULE_prefixMetadataAnnotation);try{switch(this.state=2666,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,241,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2662,this.match(r.HASH),this.state=2663,this.prefixMetadataFeature();break;case 2:this.enterOuterAlt(e,2),this.state=2664,this.match(r.HASH),this.state=2665,this.prefixMetadataUsage();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}prefixMetadataMember(){let e=new Y(this.context,this.state);this.enterRule(e,416,r.RULE_prefixMetadataMember);try{switch(this.state=2672,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,242,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2668,this.match(r.HASH),this.state=2669,this.prefixMetadataFeature();break;case 2:this.enterOuterAlt(e,2),this.state=2670,this.match(r.HASH),this.state=2671,this.prefixMetadataUsage();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}prefixMetadataFeature(){let e=new pi(this.context,this.state);this.enterRule(e,418,r.RULE_prefixMetadataFeature);try{this.enterOuterAlt(e,1),this.state=2674,this.ownedFeatureTyping()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataFeature(){let e=new Oa(this.context,this.state);this.enterRule(e,420,r.RULE_metadataFeature);let t;try{this.enterOuterAlt(e,1);{for(this.state=2679,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=2676,this.prefixMetadataMember(),this.state=2681,this.errorHandler.sync(this),t=this.tokenStream.LA(1);if(this.state=2682,t=this.tokenStream.LA(1),t===102||t===210?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=2683,this.metadataFeatureDeclaration(),this.state=2693,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===1)for(this.state=2684,this.match(r.ABOUT),this.state=2685,this.annotation(),this.state=2690,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=2686,this.match(r.COMMA),this.state=2687,this.annotation(),this.state=2692,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2695,this.metadataBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}metadataFeatureDeclaration(){let e=new wa(this.context,this.state);this.enterRule(e,422,r.RULE_metadataFeatureDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=2705,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,248,this.context)){case 1:switch(this.state=2698,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2697,this.identification()),this.state=2703,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COLON:this.state=2700,this.match(r.COLON);break;case r.TYPED:this.state=2701,this.match(r.TYPED),this.state=2702,this.match(r.BY);break;default:throw new g(this)}break}this.state=2707,this.ownedFeatureTyping()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}metadataBody(){let e=new yt(this.context,this.state);this.enterRule(e,424,r.RULE_metadataBody);let t;try{switch(this.state=2729,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,252,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2709,this.match(r.SEMI);break;case 2:this.enterOuterAlt(e,2);{for(this.state=2710,this.match(r.LBRACE),this.state=2714,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1880162436)!==0||(t-33&-32)===0&&(1<<t-33&2917381)!==0||(t-65&-32)===0&&(1<<t-65&1904755717)!==0||(t-101&-32)===0&&(1<<t-101&1139818511)!==0||(t-138&-32)===0&&(1<<t-138&2624201)!==0||(t-176&-32)===0&&(1<<t-176&196609)!==0||(t-210&-32)===0&&(1<<t-210&9091)!==0;)this.state=2711,this.metadataBodyElement(),this.state=2716,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2717,this.match(r.RBRACE)}break;case 3:this.enterOuterAlt(e,3);{for(this.state=2718,this.match(r.LBRACE),this.state=2725,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1174932628)!==0||(t-32&-32)===0&&(1<<t-32&71369249)!==0||(t-70&-32)===0&&(1<<t-70&60854785)!==0||(t-102&-32)===0&&(1<<t-102&3002245377)!==0||(t-141&-32)===0&&(1<<t-141&857735171)!==0||(t-176&-32)===0&&(1<<t-176&196609)!==0||(t-210&-32)===0&&(1<<t-210&8961)!==0;){switch(this.state=2723,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,250,this.context)){case 1:this.state=2719,this.definitionMember();break;case 2:this.state=2720,this.metadataBodyUsageMember();break;case 3:this.state=2721,this.aliasMember();break;case 4:this.state=2722,this.importRule();break}this.state=2727,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}this.state=2728,this.match(r.RBRACE)}break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}metadataBodyElement(){let e=new xi(this.context,this.state);this.enterRule(e,426,r.RULE_metadataBodyElement);try{switch(this.state=2735,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,253,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2731,this.nonFeatureMember();break;case 2:this.enterOuterAlt(e,2),this.state=2732,this.metadataBodyFeatureMember();break;case 3:this.enterOuterAlt(e,3),this.state=2733,this.aliasMember();break;case 4:this.enterOuterAlt(e,4),this.state=2734,this.importRule();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataBodyFeatureMember(){let e=new ka(this.context,this.state);this.enterRule(e,428,r.RULE_metadataBodyFeatureMember);try{this.enterOuterAlt(e,1),this.state=2737,this.metadataBodyFeature()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataBodyFeature(){let e=new Da(this.context,this.state);this.enterRule(e,430,r.RULE_metadataBodyFeature);let t;try{this.enterOuterAlt(e,1),this.state=2740,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===65&&(this.state=2739,this.match(r.FEATURE)),this.state=2743,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===125||t===176)&&(this.state=2742,t=this.tokenStream.LA(1),t===125||t===176?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=2745,this.ownedRedefinition(),this.state=2747,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=2746,this.featureSpecializationPart()),this.state=2750,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2749,this.valuePart()),this.state=2752,this.metadataBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}package_(){let e=new bi(this.context,this.state);this.enterRule(e,432,r.RULE_package);let t;try{this.enterOuterAlt(e,1);{for(this.state=2757,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=2754,this.prefixMetadataMember(),this.state=2759,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2760,this.packageDeclaration(),this.state=2761,this.packageBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}libraryPackage(){let e=new Ri(this.context,this.state);this.enterRule(e,434,r.RULE_libraryPackage);let t;try{this.enterOuterAlt(e,1);{for(this.state=2764,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===141&&(this.state=2763,this.match(r.STANDARD)),this.state=2766,this.match(r.LIBRARY),this.state=2770,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=2767,this.prefixMetadataMember(),this.state=2772,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2773,this.packageDeclaration(),this.state=2774,this.packageBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}packageDeclaration(){let e=new fi(this.context,this.state);this.enterRule(e,436,r.RULE_packageDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=2776,this.match(r.PACKAGE),this.state=2778,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2777,this.identification())}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}packageBody(){let e=new mi(this.context,this.state);this.enterRule(e,438,r.RULE_packageBody);let t;try{switch(this.state=2789,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=2780,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=2781,this.match(r.LBRACE),this.state=2785,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&490981169)!==0||(t-68&-32)===0&&(1<<t-68&2390947847)!==0||(t-102&-32)===0&&(1<<t-102&3069425939)!==0||(t-135&-32)===0&&(1<<t-135&3364135109)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=2782,this.packageBodyElement(),this.state=2787,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2788,this.match(r.RBRACE)}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}elementFilterMember(){let e=new ar(this.context,this.state);this.enterRule(e,440,r.RULE_elementFilterMember);try{this.enterOuterAlt(e,1),this.state=2791,this.memberPrefix(),this.state=2792,this.match(r.FILTER),this.state=2793,this.ownedExpression(0),this.state=2794,this.match(r.SEMI)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}dependencyDeclaration(){let e=new Fa(this.context,this.state);this.enterRule(e,442,r.RULE_dependencyDeclaration);let t;try{this.enterOuterAlt(e,1);{for(this.state=2800,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,265,this.context)===1&&(this.state=2797,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2796,this.identification()),this.state=2799,this.match(r.FROM)),this.state=2802,this.qualifiedName(),this.state=2807,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=2803,this.match(r.COMMA),this.state=2804,this.qualifiedName(),this.state=2809,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=2810,this.match(r.TO),this.state=2811,this.qualifiedName(),this.state=2816,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=2812,this.match(r.COMMA),this.state=2813,this.qualifiedName(),this.state=2818,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}annotatingMember(){let e=new gi(this.context,this.state);this.enterRule(e,444,r.RULE_annotatingMember);try{this.enterOuterAlt(e,1),this.state=2819,this.annotatingElement()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}packageBodyElement(){let e=new vt(this.context,this.state);this.enterRule(e,446,r.RULE_packageBodyElement);try{switch(this.state=2825,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,268,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2821,this.packageMember();break;case 2:this.enterOuterAlt(e,2),this.state=2822,this.elementFilterMember();break;case 3:this.enterOuterAlt(e,3),this.state=2823,this.aliasMember();break;case 4:this.enterOuterAlt(e,4),this.state=2824,this.importRule();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}packageMember(){let e=new Ha(this.context,this.state);this.enterRule(e,448,r.RULE_packageMember);try{switch(this.enterOuterAlt(e,1),this.state=2827,this.memberPrefix(),this.state=2830,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,269,this.context)){case 1:this.state=2828,this.definitionElement();break;case 2:this.state=2829,this.usageElement();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}definitionElement(){let e=new lr(this.context,this.state);this.enterRule(e,450,r.RULE_definitionElement);try{switch(this.state=2862,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,270,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2832,this.package_();break;case 2:this.enterOuterAlt(e,2),this.state=2833,this.libraryPackage();break;case 3:this.enterOuterAlt(e,3),this.state=2834,this.annotatingElement();break;case 4:this.enterOuterAlt(e,4),this.state=2835,this.dependency();break;case 5:this.enterOuterAlt(e,5),this.state=2836,this.attributeDefinition();break;case 6:this.enterOuterAlt(e,6),this.state=2837,this.enumerationDefinition();break;case 7:this.enterOuterAlt(e,7),this.state=2838,this.occurrenceDefinition();break;case 8:this.enterOuterAlt(e,8),this.state=2839,this.individualDefinition();break;case 9:this.enterOuterAlt(e,9),this.state=2840,this.itemDefinition();break;case 10:this.enterOuterAlt(e,10),this.state=2841,this.partDefinition();break;case 11:this.enterOuterAlt(e,11),this.state=2842,this.connectionDefinition();break;case 12:this.enterOuterAlt(e,12),this.state=2843,this.flowDefinition();break;case 13:this.enterOuterAlt(e,13),this.state=2844,this.interfaceDefinition();break;case 14:this.enterOuterAlt(e,14),this.state=2845,this.portDefinition();break;case 15:this.enterOuterAlt(e,15),this.state=2846,this.actionDefinition();break;case 16:this.enterOuterAlt(e,16),this.state=2847,this.calculationDefinition();break;case 17:this.enterOuterAlt(e,17),this.state=2848,this.stateDefinition();break;case 18:this.enterOuterAlt(e,18),this.state=2849,this.constraintDefinition();break;case 19:this.enterOuterAlt(e,19),this.state=2850,this.requirementDefinition();break;case 20:this.enterOuterAlt(e,20),this.state=2851,this.concernDefinition();break;case 21:this.enterOuterAlt(e,21),this.state=2852,this.caseDefinition();break;case 22:this.enterOuterAlt(e,22),this.state=2853,this.analysisCaseDefinition();break;case 23:this.enterOuterAlt(e,23),this.state=2854,this.verificationCaseDefinition();break;case 24:this.enterOuterAlt(e,24),this.state=2855,this.useCaseDefinition();break;case 25:this.enterOuterAlt(e,25),this.state=2856,this.viewDefinition();break;case 26:this.enterOuterAlt(e,26),this.state=2857,this.viewpointDefinition();break;case 27:this.enterOuterAlt(e,27),this.state=2858,this.renderingDefinition();break;case 28:this.enterOuterAlt(e,28),this.state=2859,this.metadataDefinition();break;case 29:this.enterOuterAlt(e,29),this.state=2860,this.allocationDefinition();break;case 30:this.enterOuterAlt(e,30),this.state=2861,this.extendedDefinition();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}usageElement(){let e=new Ci(this.context,this.state);this.enterRule(e,452,r.RULE_usageElement);try{switch(this.state=2866,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,271,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2864,this.nonOccurrenceUsageElement();break;case 2:this.enterOuterAlt(e,2),this.state=2865,this.occurrenceUsageElement();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}basicDefinitionPrefix(){let e=new Lt(this.context,this.state);this.enterRule(e,454,r.RULE_basicDefinitionPrefix);let t;try{this.enterOuterAlt(e,1),this.state=2868,t=this.tokenStream.LA(1),t===2||t===165?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definitionExtensionKeyword(){let e=new re(this.context,this.state);this.enterRule(e,456,r.RULE_definitionExtensionKeyword);try{this.enterOuterAlt(e,1),this.state=2870,this.prefixMetadataMember()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}definitionPrefix(){let e=new Ei(this.context,this.state);this.enterRule(e,458,r.RULE_definitionPrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=2873,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===2||t===165)&&(this.state=2872,this.basicDefinitionPrefix()),this.state=2878,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=2875,this.definitionExtensionKeyword(),this.state=2880,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definition(){let e=new ie(this.context,this.state);this.enterRule(e,460,r.RULE_definition);try{this.enterOuterAlt(e,1),this.state=2881,this.definitionDeclaration(),this.state=2882,this.definitionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}definitionDeclaration(){let e=new W(this.context,this.state);this.enterRule(e,462,r.RULE_definitionDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=2885,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2884,this.identification()),this.state=2888,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===139||t===185)&&(this.state=2887,this.subclassificationPart())}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definitionBody(){let e=new tt(this.context,this.state);this.enterRule(e,464,r.RULE_definitionBody);let t;try{switch(this.state=2899,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=2890,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=2891,this.match(r.LBRACE),this.state=2895,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&490981169)!==0||(t-69&-32)===0&&(1<<t-69&1195473923)!==0||(t-102&-32)===0&&(1<<t-102&3069425939)!==0||(t-135&-32)===0&&(1<<t-135&3901137093)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=2892,this.definitionBodyItem(),this.state=2897,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2898,this.match(r.RBRACE)}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definitionBodyItem(){let e=new rt(this.context,this.state);this.enterRule(e,466,r.RULE_definitionBodyItem);let t;try{switch(this.state=2911,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,279,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2901,this.importRule();break;case 2:this.enterOuterAlt(e,2),this.state=2902,this.memberPrefix(),this.state=2903,this.definitionBodyItemContent();break;case 3:this.enterOuterAlt(e,3),this.state=2906,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===152&&(this.state=2905,this.sourceSuccessionMember()),this.state=2908,this.memberPrefix(),this.state=2909,this.occurrenceUsageElement();break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definitionBodyItemContent(){let e=new Ba(this.context,this.state);this.enterRule(e,468,r.RULE_definitionBodyItemContent);let t;try{switch(this.state=2931,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,282,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2913,this.match(r.ALIAS),this.state=2918,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===206&&(this.state=2914,this.match(r.LT),this.state=2915,this.name(),this.state=2916,this.match(r.GT)),this.state=2921,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===218||t===219)&&(this.state=2920,this.name()),this.state=2923,this.match(r.FOR),this.state=2924,this.qualifiedName(),this.state=2925,this.relationshipBody();break;case 2:this.enterOuterAlt(e,2),this.state=2927,this.match(r.VARIANT),this.state=2928,this.variantUsageElement();break;case 3:this.enterOuterAlt(e,3),this.state=2929,this.definitionElement();break;case 4:this.enterOuterAlt(e,4),this.state=2930,this.nonOccurrenceUsageElement();break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definitionMember(){let e=new St(this.context,this.state);this.enterRule(e,470,r.RULE_definitionMember);try{this.enterOuterAlt(e,1),this.state=2933,this.memberPrefix(),this.state=2934,this.definitionElement()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}variantUsageMember(){let e=new yi(this.context,this.state);this.enterRule(e,472,r.RULE_variantUsageMember);try{this.enterOuterAlt(e,1),this.state=2936,this.memberPrefix(),this.state=2937,this.match(r.VARIANT),this.state=2938,this.variantUsageElement()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}nonOccurrenceUsageMember(){let e=new Va(this.context,this.state);this.enterRule(e,474,r.RULE_nonOccurrenceUsageMember);try{this.enterOuterAlt(e,1),this.state=2940,this.memberPrefix(),this.state=2941,this.nonOccurrenceUsageElement()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}occurrenceUsageMember(){let e=new S1(this.context,this.state);this.enterRule(e,476,r.RULE_occurrenceUsageMember);try{this.enterOuterAlt(e,1),this.state=2943,this.memberPrefix(),this.state=2944,this.occurrenceUsageElement()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}structureUsageMember(){let e=new _a(this.context,this.state);this.enterRule(e,478,r.RULE_structureUsageMember);try{this.enterOuterAlt(e,1),this.state=2946,this.memberPrefix(),this.state=2947,this.structureUsageElement()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}behaviorUsageMember(){let e=new vi(this.context,this.state);this.enterRule(e,480,r.RULE_behaviorUsageMember);try{this.enterOuterAlt(e,1),this.state=2949,this.memberPrefix(),this.state=2950,this.behaviorUsageElement()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}refPrefix(){let e=new Pt(this.context,this.state);this.enterRule(e,482,r.RULE_refPrefix);let t;try{this.enterOuterAlt(e,1),this.state=2953,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===80||t===83||t===114)&&(this.state=2952,this.featureDirection()),this.state=2956,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===49&&(this.state=2955,this.match(r.DERIVED)),this.state=2959,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===2||t===165)&&(this.state=2958,t=this.tokenStream.LA(1),t===2||t===165?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=2962,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===40&&(this.state=2961,this.match(r.CONSTANT))}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}basicUsagePrefix(){let e=new it(this.context,this.state);this.enterRule(e,484,r.RULE_basicUsagePrefix);try{this.enterOuterAlt(e,1),this.state=2964,this.refPrefix(),this.state=2966,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,287,this.context)===1&&(this.state=2965,this.match(r.REF))}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}endUsagePrefix(){let e=new or(this.context,this.state);this.enterRule(e,486,r.RULE_endUsagePrefix);try{this.enterOuterAlt(e,1),this.state=2968,this.match(r.END),this.state=2970,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,288,this.context)===1&&(this.state=2969,this.ownedCrossFeatureMember())}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}usageExtensionKeyword(){let e=new M(this.context,this.state);this.enterRule(e,488,r.RULE_usageExtensionKeyword);try{this.enterOuterAlt(e,1),this.state=2972,this.prefixMetadataMember()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}unextendedUsagePrefix(){let e=new Li(this.context,this.state);this.enterRule(e,490,r.RULE_unextendedUsagePrefix);try{switch(this.state=2976,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.END:this.enterOuterAlt(e,1),this.state=2974,this.endUsagePrefix();break;case r.ABSTRACT:case r.ATTRIBUTE:case r.BIND:case r.BINDING:case r.CONSTANT:case r.DERIVED:case r.ENUM:case r.FIRST:case r.IN:case r.INOUT:case r.OUT:case r.REF:case r.SUCCESSION:case r.VARIATION:case r.HASH:this.enterOuterAlt(e,2),this.state=2975,this.basicUsagePrefix();break;default:throw new g(this)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}usagePrefix(){let e=new Tt(this.context,this.state);this.enterRule(e,492,r.RULE_usagePrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=2978,this.unextendedUsagePrefix(),this.state=2982,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=2979,this.usageExtensionKeyword(),this.state=2984,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}usage(){let e=new _(this.context,this.state);this.enterRule(e,494,r.RULE_usage);let t;try{this.enterOuterAlt(e,1),this.state=2986,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=2985,this.usageDeclaration()),this.state=2988,this.usageCompletion()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}usageDeclaration(){let e=new U(this.context,this.state);this.enterRule(e,496,r.RULE_usageDeclaration);try{switch(this.state=2995,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.LT:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=2990,this.identification(),this.state=2992,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,292,this.context)===1&&(this.state=2991,this.featureSpecializationPart());break;case r.CROSSES:case r.DEFINED:case r.MULTIPLICITY:case r.NONUNIQUE:case r.ORDERED:case r.REDEFINES:case r.REFERENCES:case r.SUBSETS:case r.TYPED:case r.COLON_COLON_GT:case r.COLON_GT_GT:case r.COLON_GT:case r.FAT_ARROW:case r.COLON:case r.LBRACK:this.enterOuterAlt(e,2),this.state=2994,this.featureSpecializationPart();break;default:throw new g(this)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}usageCompletion(){let e=new ur(this.context,this.state);this.enterRule(e,498,r.RULE_usageCompletion);let t;try{this.enterOuterAlt(e,1),this.state=2998,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2997,this.valuePart()),this.state=3e3,this.usageBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}usageBody(){let e=new be(this.context,this.state);this.enterRule(e,500,r.RULE_usageBody);try{this.enterOuterAlt(e,1),this.state=3002,this.definitionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}defaultReferenceUsage(){let e=new qa(this.context,this.state);this.enterRule(e,502,r.RULE_defaultReferenceUsage);try{this.enterOuterAlt(e,1),this.state=3004,this.refPrefix(),this.state=3005,this.usage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}referenceUsage(){let e=new cr(this.context,this.state);this.enterRule(e,504,r.RULE_referenceUsage);try{this.enterOuterAlt(e,1);{switch(this.state=3009,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.END:this.state=3007,this.endUsagePrefix();break;case r.ABSTRACT:case r.CONSTANT:case r.DERIVED:case r.IN:case r.INOUT:case r.OUT:case r.REF:case r.VARIATION:this.state=3008,this.refPrefix();break;default:throw new g(this)}this.state=3011,this.match(r.REF),this.state=3012,this.usage()}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}endFeatureUsage(){let e=new Ga(this.context,this.state);this.enterRule(e,506,r.RULE_endFeatureUsage);try{this.enterOuterAlt(e,1),this.state=3014,this.endUsagePrefix(),this.state=3015,this.featureDeclaration(),this.state=3016,this.usageCompletion()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}variantReference(){let e=new Ka(this.context,this.state);this.enterRule(e,508,r.RULE_variantReference);let t;try{this.enterOuterAlt(e,1);{for(this.state=3018,this.ownedReferenceSubsetting(),this.state=3022,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===42||t===47||(t-125&-32)===0&&(1<<t-125&8388617)!==0||(t-158&-32)===0&&(1<<t-158&1208352769)!==0||t===204;)this.state=3019,this.featureSpecialization(),this.state=3024,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3025,this.usageBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}nonOccurrenceUsageElement(){let e=new hr(this.context,this.state);this.enterRule(e,510,r.RULE_nonOccurrenceUsageElement);try{switch(this.state=3035,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,297,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3027,this.referenceUsage();break;case 2:this.enterOuterAlt(e,2),this.state=3028,this.endFeatureUsage();break;case 3:this.enterOuterAlt(e,3),this.state=3029,this.attributeUsage();break;case 4:this.enterOuterAlt(e,4),this.state=3030,this.enumerationUsage();break;case 5:this.enterOuterAlt(e,5),this.state=3031,this.bindingConnectorAsUsage();break;case 6:this.enterOuterAlt(e,6),this.state=3032,this.successionAsUsage();break;case 7:this.enterOuterAlt(e,7),this.state=3033,this.extendedUsage();break;case 8:this.enterOuterAlt(e,8),this.state=3034,this.defaultReferenceUsage();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}occurrenceUsageElement(){let e=new dr(this.context,this.state);this.enterRule(e,512,r.RULE_occurrenceUsageElement);try{switch(this.state=3039,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,298,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3037,this.structureUsageElement();break;case 2:this.enterOuterAlt(e,2),this.state=3038,this.behaviorUsageElement();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}structureUsageElement(){let e=new pr(this.context,this.state);this.enterRule(e,514,r.RULE_structureUsageElement);try{switch(this.state=3056,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,299,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3041,this.occurrenceUsage();break;case 2:this.enterOuterAlt(e,2),this.state=3042,this.individualUsage();break;case 3:this.enterOuterAlt(e,3),this.state=3043,this.portionUsage();break;case 4:this.enterOuterAlt(e,4),this.state=3044,this.eventOccurrenceUsage();break;case 5:this.enterOuterAlt(e,5),this.state=3045,this.itemUsage();break;case 6:this.enterOuterAlt(e,6),this.state=3046,this.partUsage();break;case 7:this.enterOuterAlt(e,7),this.state=3047,this.viewUsage();break;case 8:this.enterOuterAlt(e,8),this.state=3048,this.renderingUsage();break;case 9:this.enterOuterAlt(e,9),this.state=3049,this.portUsage();break;case 10:this.enterOuterAlt(e,10),this.state=3050,this.connectionUsage();break;case 11:this.enterOuterAlt(e,11),this.state=3051,this.interfaceUsage();break;case 12:this.enterOuterAlt(e,12),this.state=3052,this.allocationUsage();break;case 13:this.enterOuterAlt(e,13),this.state=3053,this.message();break;case 14:this.enterOuterAlt(e,14),this.state=3054,this.flowUsage();break;case 15:this.enterOuterAlt(e,15),this.state=3055,this.successionFlowUsage();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}behaviorUsageElement(){let e=new At(this.context,this.state);this.enterRule(e,516,r.RULE_behaviorUsageElement);try{switch(this.state=3074,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,300,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3058,this.actionUsage();break;case 2:this.enterOuterAlt(e,2),this.state=3059,this.calculationUsage();break;case 3:this.enterOuterAlt(e,3),this.state=3060,this.stateUsage();break;case 4:this.enterOuterAlt(e,4),this.state=3061,this.constraintUsage();break;case 5:this.enterOuterAlt(e,5),this.state=3062,this.requirementUsage();break;case 6:this.enterOuterAlt(e,6),this.state=3063,this.concernUsage();break;case 7:this.enterOuterAlt(e,7),this.state=3064,this.caseUsage();break;case 8:this.enterOuterAlt(e,8),this.state=3065,this.analysisCaseUsage();break;case 9:this.enterOuterAlt(e,9),this.state=3066,this.verificationCaseUsage();break;case 10:this.enterOuterAlt(e,10),this.state=3067,this.useCaseUsage();break;case 11:this.enterOuterAlt(e,11),this.state=3068,this.viewpointUsage();break;case 12:this.enterOuterAlt(e,12),this.state=3069,this.performActionUsage();break;case 13:this.enterOuterAlt(e,13),this.state=3070,this.exhibitStateUsage();break;case 14:this.enterOuterAlt(e,14),this.state=3071,this.includeUseCaseUsage();break;case 15:this.enterOuterAlt(e,15),this.state=3072,this.assertConstraintUsage();break;case 16:this.enterOuterAlt(e,16),this.state=3073,this.satisfyRequirementUsage();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}variantUsageElement(){let e=new Si(this.context,this.state);this.enterRule(e,518,r.RULE_variantUsageElement);try{switch(this.state=3097,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,301,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3076,this.variantReference();break;case 2:this.enterOuterAlt(e,2),this.state=3077,this.referenceUsage();break;case 3:this.enterOuterAlt(e,3),this.state=3078,this.attributeUsage();break;case 4:this.enterOuterAlt(e,4),this.state=3079,this.bindingConnectorAsUsage();break;case 5:this.enterOuterAlt(e,5),this.state=3080,this.successionAsUsage();break;case 6:this.enterOuterAlt(e,6),this.state=3081,this.occurrenceUsage();break;case 7:this.enterOuterAlt(e,7),this.state=3082,this.individualUsage();break;case 8:this.enterOuterAlt(e,8),this.state=3083,this.portionUsage();break;case 9:this.enterOuterAlt(e,9),this.state=3084,this.eventOccurrenceUsage();break;case 10:this.enterOuterAlt(e,10),this.state=3085,this.itemUsage();break;case 11:this.enterOuterAlt(e,11),this.state=3086,this.partUsage();break;case 12:this.enterOuterAlt(e,12),this.state=3087,this.viewUsage();break;case 13:this.enterOuterAlt(e,13),this.state=3088,this.renderingUsage();break;case 14:this.enterOuterAlt(e,14),this.state=3089,this.portUsage();break;case 15:this.enterOuterAlt(e,15),this.state=3090,this.connectionUsage();break;case 16:this.enterOuterAlt(e,16),this.state=3091,this.interfaceUsage();break;case 17:this.enterOuterAlt(e,17),this.state=3092,this.allocationUsage();break;case 18:this.enterOuterAlt(e,18),this.state=3093,this.message();break;case 19:this.enterOuterAlt(e,19),this.state=3094,this.flowUsage();break;case 20:this.enterOuterAlt(e,20),this.state=3095,this.successionFlowUsage();break;case 21:this.enterOuterAlt(e,21),this.state=3096,this.behaviorUsageElement();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}subclassificationPart(){let e=new ja(this.context,this.state);this.enterRule(e,520,r.RULE_subclassificationPart);let t;try{for(this.enterOuterAlt(e,1),this.state=3099,t=this.tokenStream.LA(1),t===139||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=3100,this.ownedSubclassification(),this.state=3105,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=3101,this.match(r.COMMA),this.state=3102,this.ownedSubclassification(),this.state=3107,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}attributeDefinition(){let e=new Qa(this.context,this.state);this.enterRule(e,522,r.RULE_attributeDefinition);try{this.enterOuterAlt(e,1),this.state=3108,this.definitionPrefix(),this.state=3109,this.match(r.ATTRIBUTE),this.state=3110,this.match(r.DEF),this.state=3111,this.definition()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}attributeUsage(){let e=new xr(this.context,this.state);this.enterRule(e,524,r.RULE_attributeUsage);try{this.enterOuterAlt(e,1),this.state=3113,this.usagePrefix(),this.state=3114,this.match(r.ATTRIBUTE),this.state=3115,this.usage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}enumerationDefinition(){let e=new za(this.context,this.state);this.enterRule(e,526,r.RULE_enumerationDefinition);let t;try{this.enterOuterAlt(e,1);{for(this.state=3120,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3117,this.definitionExtensionKeyword(),this.state=3122,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3123,this.match(r.ENUM),this.state=3124,this.match(r.DEF),this.state=3125,this.definitionDeclaration(),this.state=3126,this.enumerationBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}enumerationBody(){let e=new Ya(this.context,this.state);this.enterRule(e,528,r.RULE_enumerationBody);let t;try{switch(this.state=3138,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=3128,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=3129,this.match(r.LBRACE),this.state=3134,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t-30&-32)===0&&(1<<t-30&285413377)!==0||(t-93&-32)===0&&(1<<t-93&3759154693)!==0||(t-125&-32)===0&&(1<<t-125&8388681)!==0||(t-158&-32)===0&&(1<<t-158&1275461633)!==0||(t-192&-32)===0&&(1<<t-192&2353852417)!==0;){switch(this.state=3132,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COMMENT:case r.DOC:case r.LANGUAGE:case r.LOCALE:case r.METADATA:case r.REP:case r.HASH:case r.AT_SIGN:case r.REGULAR_COMMENT:this.state=3130,this.annotatingMember();break;case r.CROSSES:case r.DEFAULT:case r.DEFINED:case r.ENUM:case r.MULTIPLICITY:case r.NONUNIQUE:case r.ORDERED:case r.PRIVATE:case r.PROTECTED:case r.PUBLIC:case r.REDEFINES:case r.REFERENCES:case r.SUBSETS:case r.TYPED:case r.COLON_COLON_GT:case r.COLON_GT_GT:case r.COLON_EQ:case r.COLON_GT:case r.FAT_ARROW:case r.COLON:case r.SEMI:case r.LT:case r.EQ:case r.LBRACK:case r.LBRACE:case r.IDENTIFIER:case r.STRING:this.state=3131,this.enumerationUsageMember();break;default:throw new g(this)}this.state=3136,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}this.state=3137,this.match(r.RBRACE)}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}enumerationUsageMember(){let e=new Pi(this.context,this.state);this.enterRule(e,530,r.RULE_enumerationUsageMember);try{this.enterOuterAlt(e,1),this.state=3140,this.memberPrefix(),this.state=3141,this.enumeratedValue()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}enumeratedValue(){let e=new Wa(this.context,this.state);this.enterRule(e,532,r.RULE_enumeratedValue);let t;try{this.enterOuterAlt(e,1),this.state=3144,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===58&&(this.state=3143,this.match(r.ENUM)),this.state=3146,this.usage()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}enumerationUsage(){let e=new Ti(this.context,this.state);this.enterRule(e,534,r.RULE_enumerationUsage);try{this.enterOuterAlt(e,1),this.state=3148,this.usagePrefix(),this.state=3149,this.match(r.ENUM),this.state=3150,this.usage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}occurrenceDefinitionPrefix(){let e=new F(this.context,this.state);this.enterRule(e,536,r.RULE_occurrenceDefinitionPrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=3153,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===2||t===165)&&(this.state=3152,this.basicDefinitionPrefix()),this.state=3157,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===82&&(this.state=3155,this.match(r.INDIVIDUAL),this.state=3156,this.emptyMultiplicityMember()),this.state=3162,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3159,this.definitionExtensionKeyword(),this.state=3164,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}occurrenceDefinition(){let e=new Xa(this.context,this.state);this.enterRule(e,538,r.RULE_occurrenceDefinition);try{this.enterOuterAlt(e,1),this.state=3165,this.occurrenceDefinitionPrefix(),this.state=3166,this.match(r.OCCURRENCE),this.state=3167,this.match(r.DEF),this.state=3168,this.definition()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}individualDefinition(){let e=new Ja(this.context,this.state);this.enterRule(e,540,r.RULE_individualDefinition);let t;try{this.enterOuterAlt(e,1);{for(this.state=3171,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===2||t===165)&&(this.state=3170,this.basicDefinitionPrefix()),this.state=3173,this.match(r.INDIVIDUAL),this.state=3177,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3174,this.definitionExtensionKeyword(),this.state=3179,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3180,this.match(r.DEF),this.state=3181,this.definition(),this.state=3182,this.emptyMultiplicityMember()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}emptyMultiplicityMember(){let e=new Ai(this.context,this.state);this.enterRule(e,542,r.RULE_emptyMultiplicityMember);try{this.enterOuterAlt(e,1),this.state=3184,this.emptyMultiplicity()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}occurrenceUsagePrefix(){let e=new A(this.context,this.state);this.enterRule(e,544,r.RULE_occurrenceUsagePrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=3186,this.basicUsagePrefix(),this.state=3188,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===82&&(this.state=3187,this.match(r.INDIVIDUAL)),this.state=3191,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===137||t===153)&&(this.state=3190,this.portionKind()),this.state=3196,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3193,this.usageExtensionKeyword(),this.state=3198,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}occurrenceUsage(){let e=new Mi(this.context,this.state);this.enterRule(e,546,r.RULE_occurrenceUsage);try{this.enterOuterAlt(e,1),this.state=3199,this.occurrenceUsagePrefix(),this.state=3200,this.match(r.OCCURRENCE),this.state=3201,this.usage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}individualUsage(){let e=new Ni(this.context,this.state);this.enterRule(e,548,r.RULE_individualUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=3203,this.basicUsagePrefix(),this.state=3204,this.match(r.INDIVIDUAL),this.state=3208,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3205,this.usageExtensionKeyword(),this.state=3210,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3211,this.usage()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}portionUsage(){let e=new Ui(this.context,this.state);this.enterRule(e,550,r.RULE_portionUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=3213,this.basicUsagePrefix(),this.state=3215,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===82&&(this.state=3214,this.match(r.INDIVIDUAL)),this.state=3217,this.portionKind(),this.state=3221,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3218,this.usageExtensionKeyword(),this.state=3223,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3224,this.usage()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}portionKind(){let e=new br(this.context,this.state);this.enterRule(e,552,r.RULE_portionKind);let t;try{this.enterOuterAlt(e,1),this.state=3226,t=this.tokenStream.LA(1),t===137||t===153?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}eventOccurrenceUsage(){let e=new Ii(this.context,this.state);this.enterRule(e,554,r.RULE_eventOccurrenceUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=3228,this.occurrenceUsagePrefix(),this.state=3229,this.match(r.EVENT),this.state=3238,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=3230,this.ownedReferenceSubsetting(),this.state=3232,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=3231,this.featureSpecializationPart());break;case r.OCCURRENCE:this.state=3234,this.match(r.OCCURRENCE),this.state=3236,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3235,this.usageDeclaration());break;default:throw new g(this)}this.state=3240,this.usageCompletion()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}sourceSuccessionMember(){let e=new nt(this.context,this.state);this.enterRule(e,556,r.RULE_sourceSuccessionMember);try{this.enterOuterAlt(e,1),this.state=3242,this.match(r.THEN),this.state=3243,this.sourceSuccession()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sourceSuccession(){let e=new $a(this.context,this.state);this.enterRule(e,558,r.RULE_sourceSuccession);try{this.enterOuterAlt(e,1),this.state=3245,this.sourceEndMember()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sourceEndMember(){let e=new Oi(this.context,this.state);this.enterRule(e,560,r.RULE_sourceEndMember);try{this.enterOuterAlt(e,1),this.state=3247,this.sourceEnd()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sourceEnd(){let e=new Za(this.context,this.state);this.enterRule(e,562,r.RULE_sourceEnd);try{this.enterOuterAlt(e,1),this.state=3250,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,322,this.context)===1&&(this.state=3249,this.ownedMultiplicity())}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}itemDefinition(){let e=new el(this.context,this.state);this.enterRule(e,564,r.RULE_itemDefinition);try{this.enterOuterAlt(e,1),this.state=3252,this.occurrenceDefinitionPrefix(),this.state=3253,this.match(r.ITEM),this.state=3254,this.match(r.DEF),this.state=3255,this.definition()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}itemUsage(){let e=new wi(this.context,this.state);this.enterRule(e,566,r.RULE_itemUsage);try{this.enterOuterAlt(e,1),this.state=3257,this.occurrenceUsagePrefix(),this.state=3258,this.match(r.ITEM),this.state=3259,this.usage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}partDefinition(){let e=new tl(this.context,this.state);this.enterRule(e,568,r.RULE_partDefinition);try{this.enterOuterAlt(e,1),this.state=3261,this.occurrenceDefinitionPrefix(),this.state=3262,this.match(r.PART),this.state=3263,this.match(r.DEF),this.state=3264,this.definition()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}partUsage(){let e=new ki(this.context,this.state);this.enterRule(e,570,r.RULE_partUsage);try{this.enterOuterAlt(e,1),this.state=3266,this.occurrenceUsagePrefix(),this.state=3267,this.match(r.PART),this.state=3268,this.usage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}portDefinition(){let e=new rl(this.context,this.state);this.enterRule(e,572,r.RULE_portDefinition);try{this.enterOuterAlt(e,1),this.state=3270,this.definitionPrefix(),this.state=3271,this.match(r.PORT),this.state=3272,this.match(r.DEF),this.state=3273,this.definition(),this.state=3274,this.conjugatedPortDefinitionMember()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}conjugatedPortDefinitionMember(){let e=new il(this.context,this.state);this.enterRule(e,574,r.RULE_conjugatedPortDefinitionMember);try{this.enterOuterAlt(e,1),this.state=3276,this.conjugatedPortDefinition()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}conjugatedPortDefinition(){let e=new nl(this.context,this.state);this.enterRule(e,576,r.RULE_conjugatedPortDefinition);try{this.enterOuterAlt(e,1),this.state=3278,this.portConjugation()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}portUsage(){let e=new Di(this.context,this.state);this.enterRule(e,578,r.RULE_portUsage);try{this.enterOuterAlt(e,1),this.state=3280,this.occurrenceUsagePrefix(),this.state=3281,this.match(r.PORT),this.state=3282,this.usage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}conjugatedPortTyping(){let e=new sl(this.context,this.state);this.enterRule(e,580,r.RULE_conjugatedPortTyping);try{this.enterOuterAlt(e,1),this.state=3284,this.match(r.TILDE),this.state=3285,this.qualifiedName()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}connectionDefinition(){let e=new al(this.context,this.state);this.enterRule(e,582,r.RULE_connectionDefinition);try{this.enterOuterAlt(e,1),this.state=3287,this.occurrenceDefinitionPrefix(),this.state=3288,this.match(r.CONNECTION),this.state=3289,this.match(r.DEF),this.state=3290,this.definition()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}connectionUsage(){let e=new Fi(this.context,this.state);this.enterRule(e,584,r.RULE_connectionUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=3292,this.occurrenceUsagePrefix(),this.state=3306,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.CONNECTION:this.state=3293,this.match(r.CONNECTION),this.state=3295,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3294,this.usageDeclaration()),this.state=3298,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=3297,this.valuePart()),this.state=3302,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===36&&(this.state=3300,this.match(r.CONNECT),this.state=3301,this.connectorPart());break;case r.CONNECT:this.state=3304,this.match(r.CONNECT),this.state=3305,this.connectorPart();break;default:throw new g(this)}this.state=3308,this.usageBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}connectorPart(){let e=new Hi(this.context,this.state);this.enterRule(e,586,r.RULE_connectorPart);try{switch(this.state=3312,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.MULTIPLICITY:case r.DOLLAR:case r.LBRACK:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=3310,this.binaryConnectorPart();break;case r.LPAREN:this.enterOuterAlt(e,2),this.state=3311,this.naryConnectorPart();break;default:throw new g(this)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}binaryConnectorPart(){let e=new ll(this.context,this.state);this.enterRule(e,588,r.RULE_binaryConnectorPart);try{this.enterOuterAlt(e,1),this.state=3314,this.connectorEndMember(),this.state=3315,this.match(r.TO),this.state=3316,this.connectorEndMember()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}naryConnectorPart(){let e=new ol(this.context,this.state);this.enterRule(e,590,r.RULE_naryConnectorPart);let t;try{this.enterOuterAlt(e,1);{for(this.state=3318,this.match(r.LPAREN),this.state=3319,this.connectorEndMember(),this.state=3320,this.match(r.COMMA),this.state=3321,this.connectorEndMember(),this.state=3326,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=3322,this.match(r.COMMA),this.state=3323,this.connectorEndMember(),this.state=3328,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3329,this.match(r.RPAREN)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}bindingConnectorAsUsage(){let e=new Rr(this.context,this.state);this.enterRule(e,592,r.RULE_bindingConnectorAsUsage);let t;try{this.enterOuterAlt(e,1),this.state=3331,this.usagePrefix(),this.state=3336,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===22&&(this.state=3332,this.match(r.BINDING),this.state=3334,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3333,this.usageDeclaration())),this.state=3338,this.match(r.BIND),this.state=3339,this.connectorEndMember(),this.state=3340,this.match(r.EQ),this.state=3341,this.connectorEndMember(),this.state=3342,this.usageBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}successionAsUsage(){let e=new fr(this.context,this.state);this.enterRule(e,594,r.RULE_successionAsUsage);let t;try{this.enterOuterAlt(e,1),this.state=3344,this.usagePrefix(),this.state=3349,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===150&&(this.state=3345,this.match(r.SUCCESSION),this.state=3347,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3346,this.usageDeclaration())),this.state=3351,this.match(r.FIRST),this.state=3352,this.connectorEndMember(),this.state=3353,this.match(r.THEN),this.state=3354,this.connectorEndMember(),this.state=3355,this.usageBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interfaceDefinition(){let e=new ul(this.context,this.state);this.enterRule(e,596,r.RULE_interfaceDefinition);try{this.enterOuterAlt(e,1),this.state=3357,this.occurrenceDefinitionPrefix(),this.state=3358,this.match(r.INTERFACE),this.state=3359,this.match(r.DEF),this.state=3360,this.definitionDeclaration(),this.state=3361,this.interfaceBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceBody(){let e=new Bi(this.context,this.state);this.enterRule(e,598,r.RULE_interfaceBody);let t;try{switch(this.state=3372,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=3363,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=3364,this.match(r.LBRACE),this.state=3368,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&490930993)!==0||(t-69&-32)===0&&(1<<t-69&1195473923)!==0||(t-102&-32)===0&&(1<<t-102&2993926401)!==0||(t-135&-32)===0&&(1<<t-135&3892740293)!==0||(t-169&-32)===0&&(1<<t-169&8388611)!==0||t===210||t===223;)this.state=3365,this.interfaceBodyItem(),this.state=3370,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3371,this.match(r.RBRACE)}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interfaceBodyItem(){let e=new Vi(this.context,this.state);this.enterRule(e,600,r.RULE_interfaceBodyItem);let t;try{switch(this.state=3383,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,336,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3374,this.definitionMember();break;case 2:this.enterOuterAlt(e,2),this.state=3375,this.variantUsageMember();break;case 3:this.enterOuterAlt(e,3),this.state=3376,this.interfaceNonOccurrenceUsageMember();break;case 4:this.enterOuterAlt(e,4),this.state=3378,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===152&&(this.state=3377,this.sourceSuccessionMember()),this.state=3380,this.interfaceOccurrenceUsageMember();break;case 5:this.enterOuterAlt(e,5),this.state=3381,this.aliasMember();break;case 6:this.enterOuterAlt(e,6),this.state=3382,this.importRule();break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interfaceNonOccurrenceUsageMember(){let e=new cl(this.context,this.state);this.enterRule(e,602,r.RULE_interfaceNonOccurrenceUsageMember);try{this.enterOuterAlt(e,1),this.state=3385,this.memberPrefix(),this.state=3386,this.interfaceNonOccurrenceUsageElement()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceNonOccurrenceUsageElement(){let e=new hl(this.context,this.state);this.enterRule(e,604,r.RULE_interfaceNonOccurrenceUsageElement);try{switch(this.state=3393,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,337,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3388,this.referenceUsage();break;case 2:this.enterOuterAlt(e,2),this.state=3389,this.attributeUsage();break;case 3:this.enterOuterAlt(e,3),this.state=3390,this.enumerationUsage();break;case 4:this.enterOuterAlt(e,4),this.state=3391,this.bindingConnectorAsUsage();break;case 5:this.enterOuterAlt(e,5),this.state=3392,this.successionAsUsage();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceOccurrenceUsageMember(){let e=new dl(this.context,this.state);this.enterRule(e,606,r.RULE_interfaceOccurrenceUsageMember);try{this.enterOuterAlt(e,1),this.state=3395,this.memberPrefix(),this.state=3396,this.interfaceOccurrenceUsageElement()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceOccurrenceUsageElement(){let e=new pl(this.context,this.state);this.enterRule(e,608,r.RULE_interfaceOccurrenceUsageElement);try{switch(this.state=3401,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,338,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3398,this.defaultInterfaceEnd();break;case 2:this.enterOuterAlt(e,2),this.state=3399,this.structureUsageElement();break;case 3:this.enterOuterAlt(e,3),this.state=3400,this.behaviorUsageElement();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}defaultInterfaceEnd(){let e=new xl(this.context,this.state);this.enterRule(e,610,r.RULE_defaultInterfaceEnd);try{this.enterOuterAlt(e,1),this.state=3403,this.match(r.END),this.state=3404,this.usage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceUsage(){let e=new _i(this.context,this.state);this.enterRule(e,612,r.RULE_interfaceUsage);try{this.enterOuterAlt(e,1),this.state=3406,this.occurrenceUsagePrefix(),this.state=3407,this.match(r.INTERFACE),this.state=3408,this.interfaceUsageDeclaration(),this.state=3409,this.interfaceBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceUsageDeclaration(){let e=new bl(this.context,this.state);this.enterRule(e,614,r.RULE_interfaceUsageDeclaration);let t;try{switch(this.state=3422,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,342,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3412,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3411,this.usageDeclaration()),this.state=3415,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=3414,this.valuePart()),this.state=3419,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===36&&(this.state=3417,this.match(r.CONNECT),this.state=3418,this.interfacePart());break;case 2:this.enterOuterAlt(e,2),this.state=3421,this.interfacePart();break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interfacePart(){let e=new Rl(this.context,this.state);this.enterRule(e,616,r.RULE_interfacePart);try{switch(this.state=3426,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.MULTIPLICITY:case r.DOLLAR:case r.LBRACK:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=3424,this.binaryInterfacePart();break;case r.LPAREN:this.enterOuterAlt(e,2),this.state=3425,this.naryInterfacePart();break;default:throw new g(this)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}binaryInterfacePart(){let e=new fl(this.context,this.state);this.enterRule(e,618,r.RULE_binaryInterfacePart);try{this.enterOuterAlt(e,1),this.state=3428,this.interfaceEndMember(),this.state=3429,this.match(r.TO),this.state=3430,this.interfaceEndMember()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}naryInterfacePart(){let e=new ml(this.context,this.state);this.enterRule(e,620,r.RULE_naryInterfacePart);let t;try{this.enterOuterAlt(e,1);{for(this.state=3432,this.match(r.LPAREN),this.state=3433,this.interfaceEndMember(),this.state=3434,this.match(r.COMMA),this.state=3435,this.interfaceEndMember(),this.state=3440,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=3436,this.match(r.COMMA),this.state=3437,this.interfaceEndMember(),this.state=3442,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3443,this.match(r.RPAREN)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interfaceEndMember(){let e=new Mt(this.context,this.state);this.enterRule(e,622,r.RULE_interfaceEndMember);try{this.enterOuterAlt(e,1),this.state=3445,this.interfaceEnd()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceEnd(){let e=new gl(this.context,this.state);this.enterRule(e,624,r.RULE_interfaceEnd);let t;try{this.enterOuterAlt(e,1),this.state=3448,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===103||t===211)&&(this.state=3447,this.ownedCrossMultiplicityMember()),this.state=3453,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,346,this.context)===1&&(this.state=3450,this.name(),this.state=3451,t=this.tokenStream.LA(1),t===128||t===175?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=3455,this.ownedReferenceSubsetting()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}allocationDefinition(){let e=new Cl(this.context,this.state);this.enterRule(e,626,r.RULE_allocationDefinition);try{this.enterOuterAlt(e,1),this.state=3457,this.occurrenceDefinitionPrefix(),this.state=3458,this.match(r.ALLOCATION),this.state=3459,this.match(r.DEF),this.state=3460,this.definition()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}allocationUsage(){let e=new qi(this.context,this.state);this.enterRule(e,628,r.RULE_allocationUsage);try{this.enterOuterAlt(e,1),this.state=3462,this.occurrenceUsagePrefix(),this.state=3463,this.allocationUsageDeclaration(),this.state=3464,this.usageBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}allocationUsageDeclaration(){let e=new El(this.context,this.state);this.enterRule(e,630,r.RULE_allocationUsageDeclaration);let t;try{switch(this.state=3476,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.ALLOCATION:this.enterOuterAlt(e,1),this.state=3466,this.match(r.ALLOCATION),this.state=3468,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3467,this.usageDeclaration()),this.state=3472,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===9&&(this.state=3470,this.match(r.ALLOCATE),this.state=3471,this.connectorPart());break;case r.ALLOCATE:this.enterOuterAlt(e,2),this.state=3474,this.match(r.ALLOCATE),this.state=3475,this.connectorPart();break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}flowDefinition(){let e=new yl(this.context,this.state);this.enterRule(e,632,r.RULE_flowDefinition);try{this.enterOuterAlt(e,1),this.state=3478,this.occurrenceDefinitionPrefix(),this.state=3479,this.match(r.FLOW),this.state=3480,this.match(r.DEF),this.state=3481,this.definition()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}message(){let e=new Gi(this.context,this.state);this.enterRule(e,634,r.RULE_message);try{this.enterOuterAlt(e,1),this.state=3483,this.occurrenceUsagePrefix(),this.state=3484,this.match(r.MESSAGE),this.state=3485,this.messageDeclaration(),this.state=3486,this.definitionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}messageDeclaration(){let e=new vl(this.context,this.state);this.enterRule(e,636,r.RULE_messageDeclaration);let t;try{switch(this.state=3509,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,354,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3489,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3488,this.usageDeclaration()),this.state=3492,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=3491,this.valuePart()),this.state=3496,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===111&&(this.state=3494,this.match(r.OF),this.state=3495,this.flowPayloadFeatureMember()),this.state=3503,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===74&&(this.state=3498,this.match(r.FROM),this.state=3499,this.messageEventMember(),this.state=3500,this.match(r.TO),this.state=3501,this.messageEventMember());break;case 2:this.enterOuterAlt(e,2),this.state=3505,this.messageEventMember(),this.state=3506,this.match(r.TO),this.state=3507,this.messageEventMember();break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}messageEventMember(){let e=new Ki(this.context,this.state);this.enterRule(e,638,r.RULE_messageEventMember);try{this.enterOuterAlt(e,1),this.state=3511,this.messageEvent()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}messageEvent(){let e=new Ll(this.context,this.state);this.enterRule(e,640,r.RULE_messageEvent);try{this.enterOuterAlt(e,1),this.state=3513,this.ownedReferenceSubsetting()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowUsage(){let e=new ji(this.context,this.state);this.enterRule(e,642,r.RULE_flowUsage);try{this.enterOuterAlt(e,1),this.state=3515,this.occurrenceUsagePrefix(),this.state=3516,this.match(r.FLOW),this.state=3517,this.flowDeclaration(),this.state=3518,this.definitionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}successionFlowUsage(){let e=new Qi(this.context,this.state);this.enterRule(e,644,r.RULE_successionFlowUsage);try{this.enterOuterAlt(e,1),this.state=3520,this.occurrenceUsagePrefix(),this.state=3521,this.match(r.SUCCESSION),this.state=3522,this.match(r.FLOW),this.state=3523,this.flowDeclaration(),this.state=3524,this.definitionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowPayloadFeatureMember(){let e=new zi(this.context,this.state);this.enterRule(e,646,r.RULE_flowPayloadFeatureMember);try{this.enterOuterAlt(e,1),this.state=3526,this.flowPayloadFeature()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowPayloadFeature(){let e=new Sl(this.context,this.state);this.enterRule(e,648,r.RULE_flowPayloadFeature);try{this.enterOuterAlt(e,1),this.state=3528,this.payloadFeature()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowEndSubsetting(){let e=new P1(this.context,this.state);this.enterRule(e,650,r.RULE_flowEndSubsetting);try{switch(this.state=3532,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,355,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3530,this.qualifiedName();break;case 2:this.enterOuterAlt(e,2),this.state=3531,this.featureChainPrefix();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureChainPrefix(){let e=new Pl(this.context,this.state);this.enterRule(e,652,r.RULE_featureChainPrefix);try{let t;this.enterOuterAlt(e,1);{this.state=3537,this.errorHandler.sync(this),t=1;do{if(t===1)this.state=3534,this.ownedFeatureChaining(),this.state=3535,this.match(r.DOT);else throw new g(this);this.state=3539,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,356,this.context)}while(t!==2&&t!==L.INVALID_ALT_NUMBER);this.state=3541,this.ownedFeatureChaining(),this.state=3542,this.match(r.DOT)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionDefinition(){let e=new Tl(this.context,this.state);this.enterRule(e,654,r.RULE_actionDefinition);try{this.enterOuterAlt(e,1),this.state=3544,this.occurrenceDefinitionPrefix(),this.state=3545,this.match(r.ACTION),this.state=3546,this.match(r.DEF),this.state=3547,this.definitionDeclaration(),this.state=3548,this.actionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionBody(){let e=new q(this.context,this.state);this.enterRule(e,656,r.RULE_actionBody);let t;try{switch(this.state=3559,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=3550,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=3551,this.match(r.LBRACE),this.state=3555,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425939)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=3552,this.actionBodyItem(),this.state=3557,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3558,this.match(r.RBRACE)}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actionBodyItem(){let e=new J(this.context,this.state);this.enterRule(e,658,r.RULE_actionBodyItem);let t;try{let i;switch(this.state=3580,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,362,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3561,this.nonBehaviorBodyItem();break;case 2:for(this.enterOuterAlt(e,2),this.state=3562,this.initialNodeMember(),this.state=3566,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,359,this.context);i!==2&&i!==L.INVALID_ALT_NUMBER;)i===1&&(this.state=3563,this.actionTargetSuccessionMember()),this.state=3568,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,359,this.context);break;case 3:for(this.enterOuterAlt(e,3),this.state=3570,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===152&&(this.state=3569,this.sourceSuccessionMember()),this.state=3572,this.actionBehaviorMember(),this.state=3576,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,361,this.context);i!==2&&i!==L.INVALID_ALT_NUMBER;)i===1&&(this.state=3573,this.actionTargetSuccessionMember()),this.state=3578,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,361,this.context);break;case 4:this.enterOuterAlt(e,4),this.state=3579,this.guardedSuccessionMember();break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}nonBehaviorBodyItem(){let e=new Yi(this.context,this.state);this.enterRule(e,660,r.RULE_nonBehaviorBodyItem);let t;try{switch(this.state=3591,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,364,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3582,this.importRule();break;case 2:this.enterOuterAlt(e,2),this.state=3583,this.aliasMember();break;case 3:this.enterOuterAlt(e,3),this.state=3584,this.definitionMember();break;case 4:this.enterOuterAlt(e,4),this.state=3585,this.variantUsageMember();break;case 5:this.enterOuterAlt(e,5),this.state=3586,this.nonOccurrenceUsageMember();break;case 6:this.enterOuterAlt(e,6),this.state=3588,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===152&&(this.state=3587,this.sourceSuccessionMember()),this.state=3590,this.structureUsageMember();break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actionBehaviorMember(){let e=new Al(this.context,this.state);this.enterRule(e,662,r.RULE_actionBehaviorMember);try{switch(this.state=3595,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,365,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3593,this.behaviorUsageMember();break;case 2:this.enterOuterAlt(e,2),this.state=3594,this.actionNodeMember();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}initialNodeMember(){let e=new Ml(this.context,this.state);this.enterRule(e,664,r.RULE_initialNodeMember);try{this.enterOuterAlt(e,1),this.state=3597,this.memberPrefix(),this.state=3598,this.match(r.FIRST),this.state=3599,this.qualifiedName(),this.state=3600,this.relationshipBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionNodeMember(){let e=new Nl(this.context,this.state);this.enterRule(e,666,r.RULE_actionNodeMember);try{this.enterOuterAlt(e,1),this.state=3602,this.memberPrefix(),this.state=3603,this.actionNode()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionTargetSuccessionMember(){let e=new Wi(this.context,this.state);this.enterRule(e,668,r.RULE_actionTargetSuccessionMember);try{this.enterOuterAlt(e,1),this.state=3605,this.memberPrefix(),this.state=3606,this.actionTargetSuccession()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}guardedSuccessionMember(){let e=new Ul(this.context,this.state);this.enterRule(e,670,r.RULE_guardedSuccessionMember);try{this.enterOuterAlt(e,1),this.state=3608,this.memberPrefix(),this.state=3609,this.guardedSuccession()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionUsage(){let e=new Il(this.context,this.state);this.enterRule(e,672,r.RULE_actionUsage);try{this.enterOuterAlt(e,1),this.state=3611,this.occurrenceUsagePrefix(),this.state=3612,this.match(r.ACTION),this.state=3613,this.actionUsageDeclaration(),this.state=3614,this.actionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionUsageDeclaration(){let e=new Nt(this.context,this.state);this.enterRule(e,674,r.RULE_actionUsageDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3617,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3616,this.usageDeclaration()),this.state=3620,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=3619,this.valuePart())}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}performActionUsage(){let e=new Ol(this.context,this.state);this.enterRule(e,676,r.RULE_performActionUsage);try{this.enterOuterAlt(e,1),this.state=3622,this.occurrenceUsagePrefix(),this.state=3623,this.match(r.PERFORM),this.state=3624,this.performActionUsageDeclaration(),this.state=3625,this.actionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}performActionUsageDeclaration(){let e=new mr(this.context,this.state);this.enterRule(e,678,r.RULE_performActionUsageDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=3635,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=3627,this.ownedReferenceSubsetting(),this.state=3629,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=3628,this.featureSpecializationPart());break;case r.ACTION:this.state=3631,this.match(r.ACTION),this.state=3633,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3632,this.usageDeclaration());break;default:throw new g(this)}this.state=3638,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=3637,this.valuePart())}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actionNode(){let e=new wl(this.context,this.state);this.enterRule(e,680,r.RULE_actionNode);try{switch(this.state=3648,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,372,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3640,this.controlNode();break;case 2:this.enterOuterAlt(e,2),this.state=3641,this.sendNode();break;case 3:this.enterOuterAlt(e,3),this.state=3642,this.acceptNode();break;case 4:this.enterOuterAlt(e,4),this.state=3643,this.assignmentNode();break;case 5:this.enterOuterAlt(e,5),this.state=3644,this.terminateNode();break;case 6:this.enterOuterAlt(e,6),this.state=3645,this.ifNode();break;case 7:this.enterOuterAlt(e,7),this.state=3646,this.whileLoopNode();break;case 8:this.enterOuterAlt(e,8),this.state=3647,this.forLoopNode();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionNodeUsageDeclaration(){let e=new qe(this.context,this.state);this.enterRule(e,682,r.RULE_actionNodeUsageDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3650,this.match(r.ACTION),this.state=3652,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3651,this.usageDeclaration())}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actionNodePrefix(){let e=new gr(this.context,this.state);this.enterRule(e,684,r.RULE_actionNodePrefix);let t;try{this.enterOuterAlt(e,1),this.state=3654,this.occurrenceUsagePrefix(),this.state=3656,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3655,this.actionNodeUsageDeclaration())}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}controlNode(){let e=new kl(this.context,this.state);this.enterRule(e,686,r.RULE_controlNode);try{switch(this.state=3662,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,375,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3658,this.mergeNode();break;case 2:this.enterOuterAlt(e,2),this.state=3659,this.decisionNode();break;case 3:this.enterOuterAlt(e,3),this.state=3660,this.joinNode();break;case 4:this.enterOuterAlt(e,4),this.state=3661,this.forkNode();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}controlNodePrefix(){let e=new Ut(this.context,this.state);this.enterRule(e,688,r.RULE_controlNodePrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=3664,this.refPrefix(),this.state=3666,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===82&&(this.state=3665,this.match(r.INDIVIDUAL)),this.state=3669,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===137||t===153)&&(this.state=3668,this.portionKind()),this.state=3674,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3671,this.usageExtensionKeyword(),this.state=3676,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}mergeNode(){let e=new Dl(this.context,this.state);this.enterRule(e,690,r.RULE_mergeNode);let t;try{this.enterOuterAlt(e,1),this.state=3677,this.controlNodePrefix(),this.state=3678,this.match(r.MERGE),this.state=3680,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3679,this.usageDeclaration()),this.state=3682,this.actionBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}decisionNode(){let e=new Fl(this.context,this.state);this.enterRule(e,692,r.RULE_decisionNode);let t;try{this.enterOuterAlt(e,1),this.state=3684,this.controlNodePrefix(),this.state=3685,this.match(r.DECIDE),this.state=3687,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3686,this.usageDeclaration()),this.state=3689,this.actionBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}joinNode(){let e=new Hl(this.context,this.state);this.enterRule(e,694,r.RULE_joinNode);let t;try{this.enterOuterAlt(e,1),this.state=3691,this.controlNodePrefix(),this.state=3692,this.match(r.JOIN),this.state=3694,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3693,this.usageDeclaration()),this.state=3696,this.actionBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}forkNode(){let e=new Bl(this.context,this.state);this.enterRule(e,696,r.RULE_forkNode);let t;try{this.enterOuterAlt(e,1),this.state=3698,this.controlNodePrefix(),this.state=3699,this.match(r.FORK),this.state=3701,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3700,this.usageDeclaration()),this.state=3703,this.actionBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}acceptNode(){let e=new Vl(this.context,this.state);this.enterRule(e,698,r.RULE_acceptNode);try{this.enterOuterAlt(e,1),this.state=3705,this.occurrenceUsagePrefix(),this.state=3706,this.acceptNodeDeclaration(),this.state=3707,this.actionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}acceptNodeDeclaration(){let e=new Cr(this.context,this.state);this.enterRule(e,700,r.RULE_acceptNodeDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3710,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3709,this.actionNodeUsageDeclaration()),this.state=3712,this.match(r.ACCEPT),this.state=3713,this.acceptParameterPart()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}acceptParameterPart(){let e=new Xi(this.context,this.state);this.enterRule(e,702,r.RULE_acceptParameterPart);let t;try{this.enterOuterAlt(e,1),this.state=3715,this.payloadParameterMember(),this.state=3718,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===168&&(this.state=3716,this.match(r.VIA),this.state=3717,this.nodeParameterMember())}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}payloadParameterMember(){let e=new _l(this.context,this.state);this.enterRule(e,704,r.RULE_payloadParameterMember);try{this.enterOuterAlt(e,1),this.state=3720,this.payloadParameter()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}payloadParameter(){let e=new ql(this.context,this.state);this.enterRule(e,706,r.RULE_payloadParameter);let t;try{switch(this.state=3730,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,387,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3722,this.payloadFeature();break;case 2:this.enterOuterAlt(e,2),this.state=3724,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=3723,this.identification()),this.state=3727,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=3726,this.payloadFeatureSpecializationPart()),this.state=3729,this.triggerValuePart();break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}triggerValuePart(){let e=new Gl(this.context,this.state);this.enterRule(e,708,r.RULE_triggerValuePart);try{this.enterOuterAlt(e,1),this.state=3732,this.triggerFeatureValue()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}triggerFeatureValue(){let e=new Kl(this.context,this.state);this.enterRule(e,710,r.RULE_triggerFeatureValue);try{this.enterOuterAlt(e,1),this.state=3734,this.triggerExpression()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}triggerExpression(){let e=new jl(this.context,this.state);this.enterRule(e,712,r.RULE_triggerExpression);let t;try{switch(this.state=3740,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.AFTER:case r.AT:this.enterOuterAlt(e,1),this.state=3736,t=this.tokenStream.LA(1),t===6||t===18?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=3737,this.argumentMember();break;case r.WHEN:this.enterOuterAlt(e,2),this.state=3738,this.match(r.WHEN),this.state=3739,this.argumentExpressionMember();break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}sendNode(){let e=new Ql(this.context,this.state);this.enterRule(e,714,r.RULE_sendNode);let t;try{this.enterOuterAlt(e,1);{switch(this.state=3742,this.occurrenceUsagePrefix(),this.state=3745,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,389,this.context)){case 1:this.state=3743,this.actionNodeUsageDeclaration();break;case 2:this.state=3744,this.actionUsageDeclaration();break}switch(this.state=3747,this.match(r.SEND),this.state=3755,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,391,this.context)){case 1:this.state=3748,this.nodeParameterMember(),this.state=3750,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===154||t===168)&&(this.state=3749,this.senderReceiverPart());break;case 2:this.state=3752,this.emptyParameterMember(),this.state=3753,this.senderReceiverPart();break}this.state=3757,this.actionBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}sendNodeDeclaration(){let e=new Ji(this.context,this.state);this.enterRule(e,716,r.RULE_sendNodeDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3760,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3759,this.actionNodeUsageDeclaration()),this.state=3762,this.match(r.SEND),this.state=3763,this.nodeParameterMember(),this.state=3765,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===154||t===168)&&(this.state=3764,this.senderReceiverPart())}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}senderReceiverPart(){let e=new $i(this.context,this.state);this.enterRule(e,718,r.RULE_senderReceiverPart);let t;try{switch(this.state=3777,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.VIA:this.enterOuterAlt(e,1),this.state=3767,this.match(r.VIA),this.state=3768,this.nodeParameterMember(),this.state=3771,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===154&&(this.state=3769,this.match(r.TO),this.state=3770,this.nodeParameterMember());break;case r.TO:this.enterOuterAlt(e,2),this.state=3773,this.emptyParameterMember(),this.state=3774,this.match(r.TO),this.state=3775,this.nodeParameterMember();break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}nodeParameterMember(){let e=new Se(this.context,this.state);this.enterRule(e,720,r.RULE_nodeParameterMember);try{this.enterOuterAlt(e,1),this.state=3779,this.nodeParameter()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}nodeParameter(){let e=new zl(this.context,this.state);this.enterRule(e,722,r.RULE_nodeParameter);try{this.enterOuterAlt(e,1),this.state=3781,this.featureBinding()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureBinding(){let e=new Yl(this.context,this.state);this.enterRule(e,724,r.RULE_featureBinding);try{this.enterOuterAlt(e,1),this.state=3783,this.ownedExpression(0)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyParameterMember(){let e=new Ue(this.context,this.state);this.enterRule(e,726,r.RULE_emptyParameterMember);try{this.enterOuterAlt(e,1),this.state=3785,this.emptyUsage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}assignmentNode(){let e=new Wl(this.context,this.state);this.enterRule(e,728,r.RULE_assignmentNode);try{this.enterOuterAlt(e,1),this.state=3787,this.occurrenceUsagePrefix(),this.state=3788,this.assignmentNodeDeclaration(),this.state=3789,this.actionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}assignmentNodeDeclaration(){let e=new Er(this.context,this.state);this.enterRule(e,730,r.RULE_assignmentNodeDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3792,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3791,this.actionNodeUsageDeclaration()),this.state=3794,this.match(r.ASSIGN),this.state=3795,this.assignmentTargetMember(),this.state=3796,this.featureChainMember(),this.state=3797,this.match(r.COLON_EQ),this.state=3798,this.nodeParameterMember()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}assignmentTargetMember(){let e=new Xl(this.context,this.state);this.enterRule(e,732,r.RULE_assignmentTargetMember);try{this.enterOuterAlt(e,1),this.state=3800,this.assignmentTargetParameter()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}assignmentTargetParameter(){let e=new Jl(this.context,this.state);this.enterRule(e,734,r.RULE_assignmentTargetParameter);try{this.enterOuterAlt(e,1),this.state=3805,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,397,this.context)===1&&(this.state=3802,this.assignmentTargetBinding(),this.state=3803,this.match(r.DOT))}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}assignmentTargetBinding(){let e=new $l(this.context,this.state);this.enterRule(e,736,r.RULE_assignmentTargetBinding);try{this.enterOuterAlt(e,1),this.state=3807,this.nonFeatureChainPrimaryExpression()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}terminateNode(){let e=new Zl(this.context,this.state);this.enterRule(e,738,r.RULE_terminateNode);let t;try{this.enterOuterAlt(e,1),this.state=3809,this.occurrenceUsagePrefix(),this.state=3811,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3810,this.actionNodeUsageDeclaration()),this.state=3813,this.match(r.TERMINATE),this.state=3815,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,399,this.context)===1&&(this.state=3814,this.nodeParameterMember()),this.state=3817,this.actionBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ifNode(){let e=new Zi(this.context,this.state);this.enterRule(e,740,r.RULE_ifNode);try{switch(this.enterOuterAlt(e,1),this.state=3819,this.actionNodePrefix(),this.state=3820,this.match(r.IF),this.state=3821,this.expressionParameterMember(),this.state=3822,this.actionBodyParameterMember(),this.state=3828,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,401,this.context)){case 1:switch(this.state=3823,this.match(r.ELSE),this.state=3826,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,400,this.context)){case 1:this.state=3824,this.actionBodyParameterMember();break;case 2:this.state=3825,this.ifNodeParameterMember();break}break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}expressionParameterMember(){let e=new yr(this.context,this.state);this.enterRule(e,742,r.RULE_expressionParameterMember);try{this.enterOuterAlt(e,1),this.state=3830,this.ownedExpression(0)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionBodyParameterMember(){let e=new It(this.context,this.state);this.enterRule(e,744,r.RULE_actionBodyParameterMember);try{this.enterOuterAlt(e,1),this.state=3832,this.actionBodyParameter()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionBodyParameter(){let e=new eo(this.context,this.state);this.enterRule(e,746,r.RULE_actionBodyParameter);let t;try{this.enterOuterAlt(e,1);{for(this.state=3838,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3834,this.match(r.ACTION),this.state=3836,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3835,this.usageDeclaration())),this.state=3840,this.match(r.LBRACE),this.state=3844,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425939)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=3841,this.actionBodyItem(),this.state=3846,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3847,this.match(r.RBRACE)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ifNodeParameterMember(){let e=new to(this.context,this.state);this.enterRule(e,748,r.RULE_ifNodeParameterMember);try{this.enterOuterAlt(e,1),this.state=3849,this.ifNode()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}whileLoopNode(){let e=new ro(this.context,this.state);this.enterRule(e,750,r.RULE_whileLoopNode);let t;try{this.enterOuterAlt(e,1);{switch(this.state=3851,this.actionNodePrefix(),this.state=3856,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.WHILE:this.state=3852,this.match(r.WHILE),this.state=3853,this.expressionParameterMember();break;case r.LOOP:this.state=3854,this.match(r.LOOP),this.state=3855,this.emptyParameterMember();break;default:throw new g(this)}this.state=3858,this.actionBodyParameterMember(),this.state=3863,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===161&&(this.state=3859,this.match(r.UNTIL),this.state=3860,this.expressionParameterMember(),this.state=3861,this.match(r.SEMI))}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}forLoopNode(){let e=new io(this.context,this.state);this.enterRule(e,752,r.RULE_forLoopNode);try{this.enterOuterAlt(e,1),this.state=3865,this.actionNodePrefix(),this.state=3866,this.match(r.FOR),this.state=3867,this.forVariableDeclarationMember(),this.state=3868,this.match(r.IN),this.state=3869,this.nodeParameterMember(),this.state=3870,this.actionBodyParameterMember()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}forVariableDeclarationMember(){let e=new no(this.context,this.state);this.enterRule(e,754,r.RULE_forVariableDeclarationMember);let t;try{this.enterOuterAlt(e,1),this.state=3873,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3872,this.usageDeclaration())}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}forVariableDeclaration(){let e=new T1(this.context,this.state);this.enterRule(e,756,r.RULE_forVariableDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3876,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3875,this.usageDeclaration())}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actionTargetSuccession(){let e=new so(this.context,this.state);this.enterRule(e,758,r.RULE_actionTargetSuccession);try{this.enterOuterAlt(e,1);{switch(this.state=3881,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.MULTIPLICITY:case r.THEN:case r.LBRACK:this.state=3878,this.targetSuccession();break;case r.IF:this.state=3879,this.guardedTargetSuccession();break;case r.ELSE:this.state=3880,this.defaultTargetSuccession();break;default:throw new g(this)}this.state=3883,this.usageBody()}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}targetSuccession(){let e=new ao(this.context,this.state);this.enterRule(e,760,r.RULE_targetSuccession);try{this.enterOuterAlt(e,1),this.state=3885,this.sourceEndMember(),this.state=3886,this.match(r.THEN),this.state=3887,this.connectorEndMember()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}guardedTargetSuccession(){let e=new en(this.context,this.state);this.enterRule(e,762,r.RULE_guardedTargetSuccession);try{this.enterOuterAlt(e,1),this.state=3889,this.guardExpressionMember(),this.state=3890,this.match(r.THEN),this.state=3891,this.transitionSuccessionMember()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}defaultTargetSuccession(){let e=new lo(this.context,this.state);this.enterRule(e,764,r.RULE_defaultTargetSuccession);try{this.enterOuterAlt(e,1),this.state=3893,this.match(r.ELSE),this.state=3894,this.transitionSuccessionMember()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}guardedSuccession(){let e=new oo(this.context,this.state);this.enterRule(e,766,r.RULE_guardedSuccession);let t;try{this.enterOuterAlt(e,1),this.state=3900,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===150&&(this.state=3896,this.match(r.SUCCESSION),this.state=3898,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3897,this.usageDeclaration())),this.state=3902,this.match(r.FIRST),this.state=3903,this.featureChainMember(),this.state=3904,this.guardExpressionMember(),this.state=3905,this.match(r.THEN),this.state=3906,this.transitionSuccessionMember(),this.state=3907,this.usageBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}stateDefinition(){let e=new uo(this.context,this.state);this.enterRule(e,768,r.RULE_stateDefinition);try{this.enterOuterAlt(e,1),this.state=3909,this.occurrenceDefinitionPrefix(),this.state=3910,this.match(r.STATE),this.state=3911,this.match(r.DEF),this.state=3912,this.definitionDeclaration(),this.state=3913,this.stateDefBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateDefBody(){let e=new co(this.context,this.state);this.enterRule(e,770,r.RULE_stateDefBody);let t;try{switch(this.state=3927,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=3915,this.match(r.SEMI);break;case r.PARALLEL:case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=3917,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===116&&(this.state=3916,this.match(r.PARALLEL)),this.state=3919,this.match(r.LBRACE),this.state=3923,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&1063503665)!==0||(t-69&-32)===0&&(1<<t-69&1195473923)!==0||(t-102&-32)===0&&(1<<t-102&3069425939)!==0||(t-135&-32)===0&&(1<<t-135&3902185669)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=3920,this.stateBodyItem(),this.state=3925,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3926,this.match(r.RBRACE)}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}stateBodyItem(){let e=new Ot(this.context,this.state);this.enterRule(e,772,r.RULE_stateBodyItem);let t;try{let i;switch(this.state=3950,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,418,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3929,this.nonBehaviorBodyItem();break;case 2:for(this.enterOuterAlt(e,2),this.state=3931,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===152&&(this.state=3930,this.sourceSuccessionMember()),this.state=3933,this.behaviorUsageMember(),this.state=3937,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,416,this.context);i!==2&&i!==L.INVALID_ALT_NUMBER;)i===1&&(this.state=3934,this.targetTransitionUsageMember()),this.state=3939,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,416,this.context);break;case 3:this.enterOuterAlt(e,3),this.state=3940,this.transitionUsageMember();break;case 4:for(this.enterOuterAlt(e,4),this.state=3941,this.entryActionMember(),this.state=3945,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,417,this.context);i!==2&&i!==L.INVALID_ALT_NUMBER;)i===1&&(this.state=3942,this.entryTransitionMember()),this.state=3947,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,417,this.context);break;case 5:this.enterOuterAlt(e,5),this.state=3948,this.doActionMember();break;case 6:this.enterOuterAlt(e,6),this.state=3949,this.exitActionMember();break}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}entryActionMember(){let e=new ho(this.context,this.state);this.enterRule(e,774,r.RULE_entryActionMember);try{this.enterOuterAlt(e,1),this.state=3952,this.memberPrefix(),this.state=3953,this.match(r.ENTRY),this.state=3954,this.stateActionUsage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}doActionMember(){let e=new po(this.context,this.state);this.enterRule(e,776,r.RULE_doActionMember);try{this.enterOuterAlt(e,1),this.state=3956,this.memberPrefix(),this.state=3957,this.match(r.DO),this.state=3958,this.stateActionUsage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}exitActionMember(){let e=new xo(this.context,this.state);this.enterRule(e,778,r.RULE_exitActionMember);try{this.enterOuterAlt(e,1),this.state=3960,this.memberPrefix(),this.state=3961,this.match(r.EXIT),this.state=3962,this.stateActionUsage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}entryTransitionMember(){let e=new tn(this.context,this.state);this.enterRule(e,780,r.RULE_entryTransitionMember);try{this.enterOuterAlt(e,1);{switch(this.state=3964,this.memberPrefix(),this.state=3968,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.IF:this.state=3965,this.guardedTargetSuccession();break;case r.THEN:this.state=3966,this.match(r.THEN),this.state=3967,this.transitionSuccessionMember();break;default:throw new g(this)}this.state=3970,this.match(r.SEMI)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateActionUsage(){let e=new vr(this.context,this.state);this.enterRule(e,782,r.RULE_stateActionUsage);try{switch(this.state=3979,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,420,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3972,this.emptyActionUsage(),this.state=3973,this.match(r.SEMI);break;case 2:this.enterOuterAlt(e,2),this.state=3975,this.statePerformActionUsage();break;case 3:this.enterOuterAlt(e,3),this.state=3976,this.stateAcceptActionUsage();break;case 4:this.enterOuterAlt(e,4),this.state=3977,this.stateSendActionUsage();break;case 5:this.enterOuterAlt(e,5),this.state=3978,this.stateAssignmentActionUsage();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}statePerformActionUsage(){let e=new bo(this.context,this.state);this.enterRule(e,784,r.RULE_statePerformActionUsage);try{this.enterOuterAlt(e,1),this.state=3981,this.performActionUsageDeclaration(),this.state=3982,this.actionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateAcceptActionUsage(){let e=new Ro(this.context,this.state);this.enterRule(e,786,r.RULE_stateAcceptActionUsage);try{this.enterOuterAlt(e,1),this.state=3984,this.acceptNodeDeclaration(),this.state=3985,this.actionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateSendActionUsage(){let e=new fo(this.context,this.state);this.enterRule(e,788,r.RULE_stateSendActionUsage);try{this.enterOuterAlt(e,1),this.state=3987,this.sendNodeDeclaration(),this.state=3988,this.actionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateAssignmentActionUsage(){let e=new mo(this.context,this.state);this.enterRule(e,790,r.RULE_stateAssignmentActionUsage);try{this.enterOuterAlt(e,1),this.state=3990,this.assignmentNodeDeclaration(),this.state=3991,this.actionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}transitionUsageMember(){let e=new go(this.context,this.state);this.enterRule(e,792,r.RULE_transitionUsageMember);try{this.enterOuterAlt(e,1),this.state=3993,this.memberPrefix(),this.state=3994,this.transitionUsage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}targetTransitionUsageMember(){let e=new rn(this.context,this.state);this.enterRule(e,794,r.RULE_targetTransitionUsageMember);try{this.enterOuterAlt(e,1),this.state=3996,this.memberPrefix(),this.state=3997,this.targetTransitionUsage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateUsage(){let e=new Co(this.context,this.state);this.enterRule(e,796,r.RULE_stateUsage);try{this.enterOuterAlt(e,1),this.state=3999,this.occurrenceUsagePrefix(),this.state=4e3,this.match(r.STATE),this.state=4001,this.actionUsageDeclaration(),this.state=4002,this.stateUsageBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateUsageBody(){let e=new nn(this.context,this.state);this.enterRule(e,798,r.RULE_stateUsageBody);let t;try{switch(this.state=4016,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=4004,this.match(r.SEMI);break;case r.PARALLEL:case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=4006,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===116&&(this.state=4005,this.match(r.PARALLEL)),this.state=4008,this.match(r.LBRACE),this.state=4012,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&1063503665)!==0||(t-69&-32)===0&&(1<<t-69&1195473923)!==0||(t-102&-32)===0&&(1<<t-102&3069425939)!==0||(t-135&-32)===0&&(1<<t-135&3902185669)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4009,this.stateBodyItem(),this.state=4014,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4015,this.match(r.RBRACE)}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}exhibitStateUsage(){let e=new Eo(this.context,this.state);this.enterRule(e,800,r.RULE_exhibitStateUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=4018,this.occurrenceUsagePrefix(),this.state=4019,this.match(r.EXHIBIT),this.state=4028,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=4020,this.ownedReferenceSubsetting(),this.state=4022,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4021,this.featureSpecializationPart());break;case r.STATE:this.state=4024,this.match(r.STATE),this.state=4026,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4025,this.usageDeclaration());break;default:throw new g(this)}this.state=4031,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4030,this.valuePart()),this.state=4033,this.stateUsageBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}transitionUsage(){let e=new yo(this.context,this.state);this.enterRule(e,802,r.RULE_transitionUsage);let t;try{this.enterOuterAlt(e,1),this.state=4035,this.match(r.TRANSITION),this.state=4040,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,429,this.context)===1&&(this.state=4037,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4036,this.usageDeclaration()),this.state=4039,this.match(r.FIRST)),this.state=4042,this.featureChainMember(),this.state=4043,this.emptyParameterMember(),this.state=4047,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===3&&(this.state=4044,this.emptyParameterMember(),this.state=4045,this.triggerActionMember()),this.state=4050,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===77&&(this.state=4049,this.guardExpressionMember()),this.state=4053,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===53&&(this.state=4052,this.effectBehaviorMember()),this.state=4055,this.match(r.THEN),this.state=4056,this.transitionSuccessionMember(),this.state=4057,this.actionBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}targetTransitionUsage(){let e=new vo(this.context,this.state);this.enterRule(e,804,r.RULE_targetTransitionUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=4059,this.emptyParameterMember(),this.state=4084,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.TRANSITION:this.state=4060,this.match(r.TRANSITION),this.state=4064,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===3&&(this.state=4061,this.emptyParameterMember(),this.state=4062,this.triggerActionMember()),this.state=4067,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===77&&(this.state=4066,this.guardExpressionMember()),this.state=4070,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===53&&(this.state=4069,this.effectBehaviorMember());break;case r.ACCEPT:this.state=4072,this.emptyParameterMember(),this.state=4073,this.triggerActionMember(),this.state=4075,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===77&&(this.state=4074,this.guardExpressionMember()),this.state=4078,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===53&&(this.state=4077,this.effectBehaviorMember());break;case r.IF:this.state=4080,this.guardExpressionMember(),this.state=4082,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===53&&(this.state=4081,this.effectBehaviorMember());break;case r.THEN:break;default:break}this.state=4086,this.match(r.THEN),this.state=4087,this.transitionSuccessionMember(),this.state=4088,this.actionBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}triggerActionMember(){let e=new sn(this.context,this.state);this.enterRule(e,806,r.RULE_triggerActionMember);try{this.enterOuterAlt(e,1),this.state=4090,this.match(r.ACCEPT),this.state=4091,this.triggerAction()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}triggerAction(){let e=new Lo(this.context,this.state);this.enterRule(e,808,r.RULE_triggerAction);try{this.enterOuterAlt(e,1),this.state=4093,this.acceptParameterPart()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}guardExpressionMember(){let e=new wt(this.context,this.state);this.enterRule(e,810,r.RULE_guardExpressionMember);try{this.enterOuterAlt(e,1),this.state=4095,this.match(r.IF),this.state=4096,this.ownedExpression(0)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}effectBehaviorMember(){let e=new an(this.context,this.state);this.enterRule(e,812,r.RULE_effectBehaviorMember);try{this.enterOuterAlt(e,1),this.state=4098,this.match(r.DO),this.state=4099,this.effectBehaviorUsage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}effectBehaviorUsage(){let e=new So(this.context,this.state);this.enterRule(e,814,r.RULE_effectBehaviorUsage);try{switch(this.state=4106,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,440,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4101,this.emptyActionUsage();break;case 2:this.enterOuterAlt(e,2),this.state=4102,this.transitionPerformActionUsage();break;case 3:this.enterOuterAlt(e,3),this.state=4103,this.transitionAcceptActionUsage();break;case 4:this.enterOuterAlt(e,4),this.state=4104,this.transitionSendActionUsage();break;case 5:this.enterOuterAlt(e,5),this.state=4105,this.transitionAssignmentActionUsage();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}transitionPerformActionUsage(){let e=new Po(this.context,this.state);this.enterRule(e,816,r.RULE_transitionPerformActionUsage);let t;try{if(this.enterOuterAlt(e,1),this.state=4108,this.performActionUsageDeclaration(),this.state=4117,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===214){for(this.state=4109,this.match(r.LBRACE),this.state=4113,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425939)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4110,this.actionBodyItem(),this.state=4115,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4116,this.match(r.RBRACE)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}transitionAcceptActionUsage(){let e=new To(this.context,this.state);this.enterRule(e,818,r.RULE_transitionAcceptActionUsage);let t;try{if(this.enterOuterAlt(e,1),this.state=4119,this.acceptNodeDeclaration(),this.state=4128,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===214){for(this.state=4120,this.match(r.LBRACE),this.state=4124,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425939)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4121,this.actionBodyItem(),this.state=4126,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4127,this.match(r.RBRACE)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}transitionSendActionUsage(){let e=new Ao(this.context,this.state);this.enterRule(e,820,r.RULE_transitionSendActionUsage);let t;try{if(this.enterOuterAlt(e,1),this.state=4130,this.sendNodeDeclaration(),this.state=4139,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===214){for(this.state=4131,this.match(r.LBRACE),this.state=4135,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425939)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4132,this.actionBodyItem(),this.state=4137,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4138,this.match(r.RBRACE)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}transitionAssignmentActionUsage(){let e=new Mo(this.context,this.state);this.enterRule(e,822,r.RULE_transitionAssignmentActionUsage);let t;try{if(this.enterOuterAlt(e,1),this.state=4141,this.assignmentNodeDeclaration(),this.state=4150,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===214){for(this.state=4142,this.match(r.LBRACE),this.state=4146,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425939)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4143,this.actionBodyItem(),this.state=4148,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4149,this.match(r.RBRACE)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}transitionSuccessionMember(){let e=new Ge(this.context,this.state);this.enterRule(e,824,r.RULE_transitionSuccessionMember);try{this.enterOuterAlt(e,1),this.state=4152,this.transitionSuccession()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}transitionSuccession(){let e=new No(this.context,this.state);this.enterRule(e,826,r.RULE_transitionSuccession);try{this.enterOuterAlt(e,1),this.state=4154,this.emptyEndMember(),this.state=4155,this.connectorEndMember()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyEndMember(){let e=new Uo(this.context,this.state);this.enterRule(e,828,r.RULE_emptyEndMember);try{this.enterOuterAlt(e,1),this.state=4157,this.emptyFeature()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}calculationDefinition(){let e=new Io(this.context,this.state);this.enterRule(e,830,r.RULE_calculationDefinition);try{this.enterOuterAlt(e,1),this.state=4159,this.occurrenceDefinitionPrefix(),this.state=4160,this.match(r.CALC),this.state=4161,this.match(r.DEF),this.state=4162,this.definitionDeclaration(),this.state=4163,this.calculationBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}calculationUsage(){let e=new Oo(this.context,this.state);this.enterRule(e,832,r.RULE_calculationUsage);try{this.enterOuterAlt(e,1),this.state=4165,this.occurrenceUsagePrefix(),this.state=4166,this.match(r.CALC),this.state=4167,this.actionUsageDeclaration(),this.state=4168,this.calculationBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}calculationBody(){let e=new Ie(this.context,this.state);this.enterRule(e,834,r.RULE_calculationBody);try{switch(this.state=4175,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=4170,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2),this.state=4171,this.match(r.LBRACE),this.state=4172,this.calculationBodyPart(),this.state=4173,this.match(r.RBRACE);break;default:throw new g(this)}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}calculationBodyPart(){let e=new wo(this.context,this.state);this.enterRule(e,836,r.RULE_calculationBodyPart);let t;try{let i;this.enterOuterAlt(e,1);{for(this.state=4180,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,450,this.context);i!==2&&i!==L.INVALID_ALT_NUMBER;)i===1&&(this.state=4177,this.calculationBodyItem()),this.state=4182,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,450,this.context);this.state=4184,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||t===64||t===77||(t-105&-32)===0&&(1<<t-105&917517)!==0||t===156||(t-191&-32)===0&&(1<<t-191&4236772773)!==0)&&(this.state=4183,this.resultExpressionMember())}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}calculationBodyItem(){let e=new ln(this.context,this.state);this.enterRule(e,838,r.RULE_calculationBodyItem);try{switch(this.state=4188,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,452,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4186,this.actionBodyItem();break;case 2:this.enterOuterAlt(e,2),this.state=4187,this.returnParameterMember();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}returnParameterMember(){let e=new on(this.context,this.state);this.enterRule(e,840,r.RULE_returnParameterMember);try{this.enterOuterAlt(e,1),this.state=4191,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,453,this.context)===1&&(this.state=4190,this.memberPrefix()),this.state=4193,this.match(r.RETURN),this.state=4194,this.usageElement()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}constraintDefinition(){let e=new ko(this.context,this.state);this.enterRule(e,842,r.RULE_constraintDefinition);try{this.enterOuterAlt(e,1),this.state=4196,this.occurrenceDefinitionPrefix(),this.state=4197,this.match(r.CONSTRAINT),this.state=4198,this.match(r.DEF),this.state=4199,this.definitionDeclaration(),this.state=4200,this.calculationBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}constraintUsage(){let e=new Do(this.context,this.state);this.enterRule(e,844,r.RULE_constraintUsage);try{this.enterOuterAlt(e,1),this.state=4202,this.occurrenceUsagePrefix(),this.state=4203,this.match(r.CONSTRAINT),this.state=4204,this.constraintUsageDeclaration(),this.state=4205,this.calculationBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}assertConstraintUsage(){let e=new Fo(this.context,this.state);this.enterRule(e,846,r.RULE_assertConstraintUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=4207,this.occurrenceUsagePrefix(),this.state=4208,this.match(r.ASSERT),this.state=4210,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===107&&(this.state=4209,this.match(r.NOT)),this.state=4218,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=4212,this.ownedReferenceSubsetting(),this.state=4214,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4213,this.featureSpecializationPart());break;case r.CONSTRAINT:this.state=4216,this.match(r.CONSTRAINT),this.state=4217,this.constraintUsageDeclaration();break;default:throw new g(this)}this.state=4220,this.calculationBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}constraintUsageDeclaration(){let e=new ne(this.context,this.state);this.enterRule(e,848,r.RULE_constraintUsageDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=4223,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4222,this.usageDeclaration()),this.state=4226,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4225,this.valuePart())}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}requirementDefinition(){let e=new Ho(this.context,this.state);this.enterRule(e,850,r.RULE_requirementDefinition);try{this.enterOuterAlt(e,1),this.state=4228,this.occurrenceDefinitionPrefix(),this.state=4229,this.match(r.REQUIREMENT),this.state=4230,this.match(r.DEF),this.state=4231,this.definitionDeclaration(),this.state=4232,this.requirementBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}requirementBody(){let e=new ue(this.context,this.state);this.enterRule(e,852,r.RULE_requirementBody);let t;try{switch(this.state=4243,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=4234,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=4235,this.match(r.LBRACE),this.state=4239,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181372084)!==0||(t-32&-32)===0&&(1<<t-32&490981169)!==0||(t-69&-32)===0&&(1<<t-69&1195473939)!==0||(t-102&-32)===0&&(1<<t-102&4143167763)!==0||(t-135&-32)===0&&(1<<t-135&3901139173)!==0||(t-167&-32)===0&&(1<<t-167&36045581)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4236,this.requirementBodyItem(),this.state=4241,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4242,this.match(r.RBRACE)}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}requirementBodyItem(){let e=new un(this.context,this.state);this.enterRule(e,854,r.RULE_requirementBodyItem);try{switch(this.state=4252,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,461,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4245,this.definitionBodyItem();break;case 2:this.enterOuterAlt(e,2),this.state=4246,this.subjectMember();break;case 3:this.enterOuterAlt(e,3),this.state=4247,this.requirementConstraintMember();break;case 4:this.enterOuterAlt(e,4),this.state=4248,this.framedConcernMember();break;case 5:this.enterOuterAlt(e,5),this.state=4249,this.requirementVerificationMember();break;case 6:this.enterOuterAlt(e,6),this.state=4250,this.actorMember();break;case 7:this.enterOuterAlt(e,7),this.state=4251,this.stakeholderMember();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}subjectMember(){let e=new cn(this.context,this.state);this.enterRule(e,856,r.RULE_subjectMember);try{this.enterOuterAlt(e,1),this.state=4254,this.memberPrefix(),this.state=4255,this.subjectUsage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}subjectUsage(){let e=new Bo(this.context,this.state);this.enterRule(e,858,r.RULE_subjectUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=4257,this.match(r.SUBJECT),this.state=4261,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4258,this.usageExtensionKeyword(),this.state=4263,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4264,this.usage()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}requirementConstraintMember(){let e=new Vo(this.context,this.state);this.enterRule(e,860,r.RULE_requirementConstraintMember);try{this.enterOuterAlt(e,1),this.state=4267,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,463,this.context)===1&&(this.state=4266,this.memberPrefix()),this.state=4269,this.requirementKind(),this.state=4270,this.requirementConstraintUsage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}requirementKind(){let e=new _o(this.context,this.state);this.enterRule(e,862,r.RULE_requirementKind);let t;try{this.enterOuterAlt(e,1),this.state=4272,t=this.tokenStream.LA(1),t===17||t===132?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}requirementConstraintUsage(){let e=new qo(this.context,this.state);this.enterRule(e,864,r.RULE_requirementConstraintUsage);let t;try{switch(this.state=4297,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=4274,this.ownedReferenceSubsetting(),this.state=4276,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4275,this.featureSpecializationPart()),this.state=4278,this.requirementBody();break;case r.CONSTRAINT:case r.HASH:this.enterOuterAlt(e,2);{switch(this.state=4292,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,467,this.context)){case 1:{for(this.state=4283,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4280,this.usageExtensionKeyword(),this.state=4285,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4286,this.match(r.CONSTRAINT)}break;case 2:{this.state=4288,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4287,this.usageExtensionKeyword(),this.state=4290,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192)}break}this.state=4294,this.constraintUsageDeclaration(),this.state=4295,this.calculationBody()}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}framedConcernMember(){let e=new Go(this.context,this.state);this.enterRule(e,866,r.RULE_framedConcernMember);try{this.enterOuterAlt(e,1),this.state=4300,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,469,this.context)===1&&(this.state=4299,this.memberPrefix()),this.state=4302,this.match(r.FRAME),this.state=4303,this.framedConcernUsage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}framedConcernUsage(){let e=new Ko(this.context,this.state);this.enterRule(e,868,r.RULE_framedConcernUsage);let t;try{switch(this.state=4328,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=4305,this.ownedReferenceSubsetting(),this.state=4307,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4306,this.featureSpecializationPart()),this.state=4309,this.calculationBody();break;case r.CONCERN:case r.HASH:this.enterOuterAlt(e,2);{switch(this.state=4323,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,473,this.context)){case 1:{for(this.state=4314,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4311,this.usageExtensionKeyword(),this.state=4316,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4317,this.match(r.CONCERN)}break;case 2:{this.state=4319,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4318,this.usageExtensionKeyword(),this.state=4321,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192)}break}this.state=4325,this.calculationUsageDeclaration(),this.state=4326,this.calculationBody()}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actorMember(){let e=new hn(this.context,this.state);this.enterRule(e,870,r.RULE_actorMember);try{this.enterOuterAlt(e,1),this.state=4330,this.memberPrefix(),this.state=4331,this.actorUsage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actorUsage(){let e=new jo(this.context,this.state);this.enterRule(e,872,r.RULE_actorUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=4333,this.match(r.ACTOR),this.state=4337,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4334,this.usageExtensionKeyword(),this.state=4339,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4340,this.usage()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}stakeholderMember(){let e=new Qo(this.context,this.state);this.enterRule(e,874,r.RULE_stakeholderMember);try{this.enterOuterAlt(e,1),this.state=4342,this.memberPrefix(),this.state=4343,this.stakeholderUsage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stakeholderUsage(){let e=new zo(this.context,this.state);this.enterRule(e,876,r.RULE_stakeholderUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=4345,this.match(r.STAKEHOLDER),this.state=4349,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4346,this.usageExtensionKeyword(),this.state=4351,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4352,this.usage()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}requirementUsage(){let e=new Yo(this.context,this.state);this.enterRule(e,878,r.RULE_requirementUsage);try{this.enterOuterAlt(e,1),this.state=4354,this.occurrenceUsagePrefix(),this.state=4355,this.match(r.REQUIREMENT),this.state=4356,this.constraintUsageDeclaration(),this.state=4357,this.requirementBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}satisfyRequirementUsage(){let e=new Wo(this.context,this.state);this.enterRule(e,880,r.RULE_satisfyRequirementUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=4359,this.occurrenceUsagePrefix(),this.state=4364,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===14&&(this.state=4360,this.match(r.ASSERT),this.state=4362,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===107&&(this.state=4361,this.match(r.NOT))),this.state=4366,this.match(r.SATISFY),this.state=4375,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=4367,this.ownedReferenceSubsetting(),this.state=4369,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4368,this.featureSpecializationPart());break;case r.REQUIREMENT:this.state=4371,this.match(r.REQUIREMENT),this.state=4373,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4372,this.usageDeclaration());break;default:throw new g(this)}this.state=4378,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4377,this.valuePart()),this.state=4382,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===24&&(this.state=4380,this.match(r.BY),this.state=4381,this.satisfactionSubjectMember()),this.state=4384,this.requirementBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}satisfactionSubjectMember(){let e=new Xo(this.context,this.state);this.enterRule(e,882,r.RULE_satisfactionSubjectMember);try{this.enterOuterAlt(e,1),this.state=4386,this.satisfactionParameter()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}satisfactionParameter(){let e=new Jo(this.context,this.state);this.enterRule(e,884,r.RULE_satisfactionParameter);try{this.enterOuterAlt(e,1),this.state=4388,this.satisfactionFeatureValue()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}satisfactionFeatureValue(){let e=new $o(this.context,this.state);this.enterRule(e,886,r.RULE_satisfactionFeatureValue);try{this.enterOuterAlt(e,1),this.state=4390,this.satisfactionReferenceExpression()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}satisfactionReferenceExpression(){let e=new Zo(this.context,this.state);this.enterRule(e,888,r.RULE_satisfactionReferenceExpression);try{this.enterOuterAlt(e,1),this.state=4392,this.featureChainMember()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}concernDefinition(){let e=new eu(this.context,this.state);this.enterRule(e,890,r.RULE_concernDefinition);try{this.enterOuterAlt(e,1),this.state=4394,this.occurrenceDefinitionPrefix(),this.state=4395,this.match(r.CONCERN),this.state=4396,this.match(r.DEF),this.state=4397,this.definitionDeclaration(),this.state=4398,this.requirementBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}concernUsage(){let e=new tu(this.context,this.state);this.enterRule(e,892,r.RULE_concernUsage);try{this.enterOuterAlt(e,1),this.state=4400,this.occurrenceUsagePrefix(),this.state=4401,this.match(r.CONCERN),this.state=4402,this.constraintUsageDeclaration(),this.state=4403,this.requirementBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}caseDefinition(){let e=new ru(this.context,this.state);this.enterRule(e,894,r.RULE_caseDefinition);try{this.enterOuterAlt(e,1),this.state=4405,this.occurrenceDefinitionPrefix(),this.state=4406,this.match(r.CASE),this.state=4407,this.match(r.DEF),this.state=4408,this.definitionDeclaration(),this.state=4409,this.caseBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}caseUsage(){let e=new iu(this.context,this.state);this.enterRule(e,896,r.RULE_caseUsage);try{this.enterOuterAlt(e,1),this.state=4411,this.occurrenceUsagePrefix(),this.state=4412,this.match(r.CASE),this.state=4413,this.constraintUsageDeclaration(),this.state=4414,this.caseBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}caseBody(){let e=new Re(this.context,this.state);this.enterRule(e,898,r.RULE_caseBody);let t;try{let i;switch(this.state=4428,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=4416,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=4417,this.match(r.LBRACE),this.state=4421,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,484,this.context);i!==2&&i!==L.INVALID_ALT_NUMBER;)i===1&&(this.state=4418,this.caseBodyItem()),this.state=4423,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,484,this.context);this.state=4425,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||t===64||t===77||(t-105&-32)===0&&(1<<t-105&917517)!==0||t===156||(t-191&-32)===0&&(1<<t-191&4236772773)!==0)&&(this.state=4424,this.resultExpressionMember()),this.state=4427,this.match(r.RBRACE)}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}caseBodyItem(){let e=new dn(this.context,this.state);this.enterRule(e,900,r.RULE_caseBodyItem);try{switch(this.state=4435,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,487,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4430,this.actionBodyItem();break;case 2:this.enterOuterAlt(e,2),this.state=4431,this.returnParameterMember();break;case 3:this.enterOuterAlt(e,3),this.state=4432,this.subjectMember();break;case 4:this.enterOuterAlt(e,4),this.state=4433,this.actorMember();break;case 5:this.enterOuterAlt(e,5),this.state=4434,this.objectiveMember();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}objectiveMember(){let e=new nu(this.context,this.state);this.enterRule(e,902,r.RULE_objectiveMember);try{this.enterOuterAlt(e,1),this.state=4437,this.memberPrefix(),this.state=4438,this.match(r.OBJECTIVE),this.state=4439,this.objectiveRequirementUsage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}objectiveRequirementUsage(){let e=new su(this.context,this.state);this.enterRule(e,904,r.RULE_objectiveRequirementUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=4444,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4441,this.usageExtensionKeyword(),this.state=4446,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4447,this.constraintUsageDeclaration(),this.state=4448,this.requirementBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}analysisCaseDefinition(){let e=new au(this.context,this.state);this.enterRule(e,906,r.RULE_analysisCaseDefinition);try{this.enterOuterAlt(e,1),this.state=4450,this.occurrenceDefinitionPrefix(),this.state=4451,this.match(r.ANALYSIS),this.state=4452,this.match(r.DEF),this.state=4453,this.definitionDeclaration(),this.state=4454,this.caseBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}analysisCaseUsage(){let e=new lu(this.context,this.state);this.enterRule(e,908,r.RULE_analysisCaseUsage);try{this.enterOuterAlt(e,1),this.state=4456,this.occurrenceUsagePrefix(),this.state=4457,this.match(r.ANALYSIS),this.state=4458,this.constraintUsageDeclaration(),this.state=4459,this.caseBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}verificationCaseDefinition(){let e=new ou(this.context,this.state);this.enterRule(e,910,r.RULE_verificationCaseDefinition);try{this.enterOuterAlt(e,1),this.state=4461,this.occurrenceDefinitionPrefix(),this.state=4462,this.match(r.VERIFICATION),this.state=4463,this.match(r.DEF),this.state=4464,this.definitionDeclaration(),this.state=4465,this.caseBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}verificationCaseUsage(){let e=new uu(this.context,this.state);this.enterRule(e,912,r.RULE_verificationCaseUsage);try{this.enterOuterAlt(e,1),this.state=4467,this.occurrenceUsagePrefix(),this.state=4468,this.match(r.VERIFICATION),this.state=4469,this.constraintUsageDeclaration(),this.state=4470,this.caseBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}requirementVerificationMember(){let e=new cu(this.context,this.state);this.enterRule(e,914,r.RULE_requirementVerificationMember);try{this.enterOuterAlt(e,1),this.state=4472,this.memberPrefix(),this.state=4473,this.match(r.VERIFY),this.state=4474,this.requirementVerificationUsage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}requirementVerificationUsage(){let e=new hu(this.context,this.state);this.enterRule(e,916,r.RULE_requirementVerificationUsage);let t;try{switch(this.state=4502,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1);{for(this.state=4476,this.ownedReferenceSubsetting(),this.state=4480,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===42||t===47||(t-125&-32)===0&&(1<<t-125&8388617)!==0||(t-158&-32)===0&&(1<<t-158&1208352769)!==0||t===204;)this.state=4477,this.featureSpecialization(),this.state=4482,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4483,this.requirementBody()}break;case r.REQUIREMENT:case r.HASH:this.enterOuterAlt(e,2);{switch(this.state=4497,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,492,this.context)){case 1:{for(this.state=4488,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4485,this.usageExtensionKeyword(),this.state=4490,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4491,this.match(r.REQUIREMENT)}break;case 2:{this.state=4493,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4492,this.usageExtensionKeyword(),this.state=4495,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192)}break}this.state=4499,this.constraintUsageDeclaration(),this.state=4500,this.requirementBody()}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}useCaseDefinition(){let e=new du(this.context,this.state);this.enterRule(e,918,r.RULE_useCaseDefinition);try{this.enterOuterAlt(e,1),this.state=4504,this.occurrenceDefinitionPrefix(),this.state=4505,this.match(r.USE),this.state=4506,this.match(r.CASE),this.state=4507,this.match(r.DEF),this.state=4508,this.definitionDeclaration(),this.state=4509,this.caseBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}useCaseUsage(){let e=new pu(this.context,this.state);this.enterRule(e,920,r.RULE_useCaseUsage);try{this.enterOuterAlt(e,1),this.state=4511,this.occurrenceUsagePrefix(),this.state=4512,this.match(r.USE),this.state=4513,this.match(r.CASE),this.state=4514,this.constraintUsageDeclaration(),this.state=4515,this.caseBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}includeUseCaseUsage(){let e=new xu(this.context,this.state);this.enterRule(e,922,r.RULE_includeUseCaseUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=4517,this.occurrenceUsagePrefix(),this.state=4518,this.match(r.INCLUDE),this.state=4528,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=4519,this.ownedReferenceSubsetting(),this.state=4521,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4520,this.featureSpecializationPart());break;case r.USE:this.state=4523,this.match(r.USE),this.state=4524,this.match(r.CASE),this.state=4526,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4525,this.usageDeclaration());break;default:throw new g(this)}this.state=4531,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4530,this.valuePart()),this.state=4533,this.caseBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}viewDefinition(){let e=new bu(this.context,this.state);this.enterRule(e,924,r.RULE_viewDefinition);try{this.enterOuterAlt(e,1),this.state=4535,this.occurrenceDefinitionPrefix(),this.state=4536,this.match(r.VIEW),this.state=4537,this.match(r.DEF),this.state=4538,this.definitionDeclaration(),this.state=4539,this.viewDefinitionBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}viewDefinitionBody(){let e=new Ru(this.context,this.state);this.enterRule(e,926,r.RULE_viewDefinitionBody);let t;try{switch(this.state=4550,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=4541,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=4542,this.match(r.LBRACE),this.state=4546,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&490981169)!==0||(t-68&-32)===0&&(1<<t-68&2390947847)!==0||(t-102&-32)===0&&(1<<t-102&3203643667)!==0||(t-135&-32)===0&&(1<<t-135&3901137093)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4543,this.viewDefinitionBodyItem(),this.state=4548,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4549,this.match(r.RBRACE)}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}viewDefinitionBodyItem(){let e=new pn(this.context,this.state);this.enterRule(e,928,r.RULE_viewDefinitionBodyItem);try{switch(this.state=4555,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,500,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4552,this.definitionBodyItem();break;case 2:this.enterOuterAlt(e,2),this.state=4553,this.elementFilterMember();break;case 3:this.enterOuterAlt(e,3),this.state=4554,this.viewRenderingMember();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}viewRenderingMember(){let e=new xn(this.context,this.state);this.enterRule(e,930,r.RULE_viewRenderingMember);try{this.enterOuterAlt(e,1),this.state=4557,this.memberPrefix(),this.state=4558,this.match(r.RENDER),this.state=4559,this.viewRenderingUsage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}viewRenderingUsage(){let e=new fu(this.context,this.state);this.enterRule(e,932,r.RULE_viewRenderingUsage);let t;try{switch(this.state=4582,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=4561,this.ownedReferenceSubsetting(),this.state=4563,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4562,this.featureSpecializationPart()),this.state=4565,this.usageBody();break;case r.RENDERING:case r.HASH:this.enterOuterAlt(e,2);{switch(this.state=4579,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,504,this.context)){case 1:{for(this.state=4570,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4567,this.usageExtensionKeyword(),this.state=4572,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4573,this.match(r.RENDERING)}break;case 2:{this.state=4575,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4574,this.usageExtensionKeyword(),this.state=4577,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192)}break}this.state=4581,this.usage()}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}viewUsage(){let e=new bn(this.context,this.state);this.enterRule(e,934,r.RULE_viewUsage);let t;try{this.enterOuterAlt(e,1),this.state=4584,this.occurrenceUsagePrefix(),this.state=4585,this.match(r.VIEW),this.state=4587,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4586,this.usageDeclaration()),this.state=4590,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4589,this.valuePart()),this.state=4592,this.viewBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}viewBody(){let e=new mu(this.context,this.state);this.enterRule(e,936,r.RULE_viewBody);let t;try{switch(this.state=4603,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=4594,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=4595,this.match(r.LBRACE),this.state=4599,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&1564722993)!==0||(t-68&-32)===0&&(1<<t-68&2390947847)!==0||(t-102&-32)===0&&(1<<t-102&3203643667)!==0||(t-135&-32)===0&&(1<<t-135&3901137093)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4596,this.viewBodyItem(),this.state=4601,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4602,this.match(r.RBRACE)}break;default:throw new g(this)}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}viewBodyItem(){let e=new Rn(this.context,this.state);this.enterRule(e,938,r.RULE_viewBodyItem);try{switch(this.state=4609,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,510,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4605,this.definitionBodyItem();break;case 2:this.enterOuterAlt(e,2),this.state=4606,this.elementFilterMember();break;case 3:this.enterOuterAlt(e,3),this.state=4607,this.viewRenderingMember();break;case 4:this.enterOuterAlt(e,4),this.state=4608,this.expose();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}expose(){let e=new gu(this.context,this.state);this.enterRule(e,940,r.RULE_expose);try{this.enterOuterAlt(e,1);{switch(this.state=4611,this.match(r.EXPOSE),this.state=4614,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,511,this.context)){case 1:this.state=4612,this.membershipExpose();break;case 2:this.state=4613,this.namespaceExpose();break}this.state=4616,this.relationshipBody()}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}membershipExpose(){let e=new Cu(this.context,this.state);this.enterRule(e,942,r.RULE_membershipExpose);try{this.enterOuterAlt(e,1),this.state=4618,this.membershipImport()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}namespaceExpose(){let e=new Eu(this.context,this.state);this.enterRule(e,944,r.RULE_namespaceExpose);try{this.enterOuterAlt(e,1),this.state=4620,this.namespaceImport()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}viewpointDefinition(){let e=new yu(this.context,this.state);this.enterRule(e,946,r.RULE_viewpointDefinition);try{this.enterOuterAlt(e,1),this.state=4622,this.occurrenceDefinitionPrefix(),this.state=4623,this.match(r.VIEWPOINT),this.state=4624,this.match(r.DEF),this.state=4625,this.definitionDeclaration(),this.state=4626,this.requirementBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}viewpointUsage(){let e=new vu(this.context,this.state);this.enterRule(e,948,r.RULE_viewpointUsage);try{this.enterOuterAlt(e,1),this.state=4628,this.occurrenceUsagePrefix(),this.state=4629,this.match(r.VIEWPOINT),this.state=4630,this.constraintUsageDeclaration(),this.state=4631,this.requirementBody()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}renderingDefinition(){let e=new Lu(this.context,this.state);this.enterRule(e,950,r.RULE_renderingDefinition);try{this.enterOuterAlt(e,1),this.state=4633,this.occurrenceDefinitionPrefix(),this.state=4634,this.match(r.RENDERING),this.state=4635,this.match(r.DEF),this.state=4636,this.definition()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}renderingUsage(){let e=new fn(this.context,this.state);this.enterRule(e,952,r.RULE_renderingUsage);try{this.enterOuterAlt(e,1),this.state=4638,this.occurrenceUsagePrefix(),this.state=4639,this.match(r.RENDERING),this.state=4640,this.usage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataDefinition(){let e=new Su(this.context,this.state);this.enterRule(e,954,r.RULE_metadataDefinition);let t;try{this.enterOuterAlt(e,1);{for(this.state=4643,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===2&&(this.state=4642,this.match(r.ABSTRACT)),this.state=4648,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4645,this.definitionExtensionKeyword(),this.state=4650,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4651,this.match(r.METADATA),this.state=4652,this.match(r.DEF),this.state=4653,this.definition()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}prefixMetadataUsage(){let e=new mn(this.context,this.state);this.enterRule(e,956,r.RULE_prefixMetadataUsage);try{this.enterOuterAlt(e,1),this.state=4655,this.ownedFeatureTyping()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataUsage(){let e=new A1(this.context,this.state);this.enterRule(e,958,r.RULE_metadataUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=4660,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4657,this.usageExtensionKeyword(),this.state=4662,this.errorHandler.sync(this),t=this.tokenStream.LA(1);if(this.state=4663,t=this.tokenStream.LA(1),t===102||t===210?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=4664,this.metadataUsageDeclaration(),this.state=4674,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===1)for(this.state=4665,this.match(r.ABOUT),this.state=4666,this.annotation(),this.state=4671,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=4667,this.match(r.COMMA),this.state=4668,this.annotation(),this.state=4673,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4676,this.metadataBody()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}metadataUsageDeclaration(){let e=new Pu(this.context,this.state);this.enterRule(e,960,r.RULE_metadataUsageDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=4686,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,519,this.context)){case 1:switch(this.state=4679,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=4678,this.identification()),this.state=4684,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COLON:this.state=4681,this.match(r.COLON);break;case r.TYPED:this.state=4682,this.match(r.TYPED),this.state=4683,this.match(r.BY);break;default:throw new g(this)}break}this.state=4688,this.ownedFeatureTyping()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}metadataBodyUsageMember(){let e=new gn(this.context,this.state);this.enterRule(e,962,r.RULE_metadataBodyUsageMember);try{this.enterOuterAlt(e,1),this.state=4690,this.metadataBodyUsage()}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataBodyUsage(){let e=new Tu(this.context,this.state);this.enterRule(e,964,r.RULE_metadataBodyUsage);let t;try{this.enterOuterAlt(e,1),this.state=4693,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===127&&(this.state=4692,this.match(r.REF)),this.state=4696,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===125||t===176)&&(this.state=4695,t=this.tokenStream.LA(1),t===125||t===176?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=4698,this.ownedRedefinition(),this.state=4700,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4699,this.featureSpecializationPart()),this.state=4703,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4702,this.valuePart()),this.state=4705,this.metadataBody()}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}extendedDefinition(){let e=new Au(this.context,this.state);this.enterRule(e,966,r.RULE_extendedDefinition);let t;try{this.enterOuterAlt(e,1);{this.state=4708,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===2||t===165)&&(this.state=4707,this.basicDefinitionPrefix()),this.state=4711,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4710,this.definitionExtensionKeyword(),this.state=4713,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192);this.state=4715,this.match(r.DEF),this.state=4716,this.definition()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}extendedUsage(){let e=new Mu(this.context,this.state);this.enterRule(e,968,r.RULE_extendedUsage);let t;try{this.enterOuterAlt(e,1);{this.state=4718,this.unextendedUsagePrefix(),this.state=4720,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4719,this.usageExtensionKeyword(),this.state=4722,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192);this.state=4724,this.usage()}}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}filterPackageImportDeclaration(){let e=new Nu(this.context,this.state);this.enterRule(e,970,r.RULE_filterPackageImportDeclaration);try{switch(this.state=4728,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,527,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4726,this.membershipImport();break;case 2:this.enterOuterAlt(e,2),this.state=4727,this.namespaceImportDirect();break}}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}namespaceImportDirect(){let e=new Uu(this.context,this.state);this.enterRule(e,972,r.RULE_namespaceImportDirect);let t;try{this.enterOuterAlt(e,1),this.state=4730,this.qualifiedName(),this.state=4731,this.match(r.COLON_COLON),this.state=4732,this.match(r.STAR),this.state=4735,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===183&&(this.state=4733,this.match(r.COLON_COLON),this.state=4734,this.match(r.STAR_STAR))}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}calculationUsageDeclaration(){let e=new Iu(this.context,this.state);this.enterRule(e,974,r.RULE_calculationUsageDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=4738,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-103&-32)===0&&(1<<t-103&37749769)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4737,this.usageDeclaration()),this.state=4741,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4740,this.valuePart())}catch(i){if(i instanceof o)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}emptyActionUsage(){let e=new Cn(this.context,this.state);this.enterRule(e,976,r.RULE_emptyActionUsage);try{this.enterOuterAlt(e,1)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyFeature(){let e=new En(this.context,this.state);this.enterRule(e,978,r.RULE_emptyFeature);try{this.enterOuterAlt(e,1)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyMultiplicity(){let e=new Ou(this.context,this.state);this.enterRule(e,980,r.RULE_emptyMultiplicity);try{this.enterOuterAlt(e,1)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyUsage(){let e=new wu(this.context,this.state);this.enterRule(e,982,r.RULE_emptyUsage);try{this.enterOuterAlt(e,1)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}filterPackageImport(){let e=new ku(this.context,this.state);this.enterRule(e,984,r.RULE_filterPackageImport);try{this.enterOuterAlt(e,1),this.state=4751,this.match(r.IDENTIFIER)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}nonFeatureChainPrimaryExpression(){let e=new Du(this.context,this.state);this.enterRule(e,986,r.RULE_nonFeatureChainPrimaryExpression);try{this.enterOuterAlt(e,1),this.state=4753,this.match(r.IDENTIFIER)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}portConjugation(){let e=new Fu(this.context,this.state);this.enterRule(e,988,r.RULE_portConjugation);try{this.enterOuterAlt(e,1)}catch(t){if(t instanceof o)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sempred(e,t,i){return t===0?this.ownedExpression_sempred(e,i):!0}ownedExpression_sempred(e,t){switch(t){case 0:return this.precpred(this.context,27);case 1:return this.precpred(this.context,26);case 2:return this.precpred(this.context,25);case 3:return this.precpred(this.context,24);case 4:return this.precpred(this.context,23);case 5:return this.precpred(this.context,22);case 6:return this.precpred(this.context,21);case 7:return this.precpred(this.context,20);case 8:return this.precpred(this.context,19);case 9:return this.precpred(this.context,18);case 10:return this.precpred(this.context,17);case 11:return this.precpred(this.context,16);case 12:return this.precpred(this.context,15);case 13:return this.precpred(this.context,12);case 14:return this.precpred(this.context,11);case 15:return this.precpred(this.context,10);case 16:return this.precpred(this.context,9);case 17:return this.precpred(this.context,8);case 18:return this.precpred(this.context,7);case 19:return this.precpred(this.context,6);case 20:return this.precpred(this.context,5);case 21:return this.precpred(this.context,4);case 22:return this.precpred(this.context,3)}return!0}static _serializedATN=[4,1,225,4758,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224,7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229,2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235,7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240,2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246,7,246,2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251,2,252,7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257,7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262,2,263,7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268,7,268,2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273,2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279,7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284,2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290,7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295,2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301,7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306,2,307,7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312,7,312,2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317,2,318,7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323,7,323,2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328,2,329,7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334,7,334,2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339,2,340,7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345,7,345,2,346,7,346,2,347,7,347,2,348,7,348,2,349,7,349,2,350,7,350,2,351,7,351,2,352,7,352,2,353,7,353,2,354,7,354,2,355,7,355,2,356,7,356,2,357,7,357,2,358,7,358,2,359,7,359,2,360,7,360,2,361,7,361,2,362,7,362,2,363,7,363,2,364,7,364,2,365,7,365,2,366,7,366,2,367,7,367,2,368,7,368,2,369,7,369,2,370,7,370,2,371,7,371,2,372,7,372,2,373,7,373,2,374,7,374,2,375,7,375,2,376,7,376,2,377,7,377,2,378,7,378,2,379,7,379,2,380,7,380,2,381,7,381,2,382,7,382,2,383,7,383,2,384,7,384,2,385,7,385,2,386,7,386,2,387,7,387,2,388,7,388,2,389,7,389,2,390,7,390,2,391,7,391,2,392,7,392,2,393,7,393,2,394,7,394,2,395,7,395,2,396,7,396,2,397,7,397,2,398,7,398,2,399,7,399,2,400,7,400,2,401,7,401,2,402,7,402,2,403,7,403,2,404,7,404,2,405,7,405,2,406,7,406,2,407,7,407,2,408,7,408,2,409,7,409,2,410,7,410,2,411,7,411,2,412,7,412,2,413,7,413,2,414,7,414,2,415,7,415,2,416,7,416,2,417,7,417,2,418,7,418,2,419,7,419,2,420,7,420,2,421,7,421,2,422,7,422,2,423,7,423,2,424,7,424,2,425,7,425,2,426,7,426,2,427,7,427,2,428,7,428,2,429,7,429,2,430,7,430,2,431,7,431,2,432,7,432,2,433,7,433,2,434,7,434,2,435,7,435,2,436,7,436,2,437,7,437,2,438,7,438,2,439,7,439,2,440,7,440,2,441,7,441,2,442,7,442,2,443,7,443,2,444,7,444,2,445,7,445,2,446,7,446,2,447,7,447,2,448,7,448,2,449,7,449,2,450,7,450,2,451,7,451,2,452,7,452,2,453,7,453,2,454,7,454,2,455,7,455,2,456,7,456,2,457,7,457,2,458,7,458,2,459,7,459,2,460,7,460,2,461,7,461,2,462,7,462,2,463,7,463,2,464,7,464,2,465,7,465,2,466,7,466,2,467,7,467,2,468,7,468,2,469,7,469,2,470,7,470,2,471,7,471,2,472,7,472,2,473,7,473,2,474,7,474,2,475,7,475,2,476,7,476,2,477,7,477,2,478,7,478,2,479,7,479,2,480,7,480,2,481,7,481,2,482,7,482,2,483,7,483,2,484,7,484,2,485,7,485,2,486,7,486,2,487,7,487,2,488,7,488,2,489,7,489,2,490,7,490,2,491,7,491,2,492,7,492,2,493,7,493,2,494,7,494,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3,0,1006,8,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3,0,1062,8,0,1,0,1,0,1,0,1,0,1,0,3,0,1069,8,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3,0,1085,8,0,5,0,1087,8,0,10,0,12,0,1090,9,0,1,1,1,1,1,2,1,2,1,2,5,2,1097,8,2,10,2,12,2,1100,9,2,1,3,1,3,1,3,1,3,1,3,1,3,3,3,1108,8,3,1,3,1,3,1,3,1,3,3,3,1114,8,3,1,3,3,3,1117,8,3,1,4,1,4,1,4,3,4,1122,8,4,1,5,1,5,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,10,1,10,1,10,3,10,1144,8,10,1,10,1,10,1,11,1,11,1,11,5,11,1151,8,11,10,11,12,11,1154,9,11,1,12,1,12,1,12,5,12,1159,8,12,10,12,12,12,1162,9,12,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,3,14,1173,8,14,1,15,1,15,1,16,1,16,1,17,1,17,1,18,1,18,1,19,1,19,1,20,1,20,1,21,1,21,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,3,23,1201,8,23,1,24,1,24,1,24,5,24,1206,8,24,10,24,12,24,1209,9,24,1,24,1,24,1,24,5,24,1214,8,24,10,24,12,24,1217,9,24,1,24,3,24,1220,8,24,1,25,1,25,3,25,1224,8,25,1,26,1,26,3,26,1228,8,26,1,27,5,27,1231,8,27,10,27,12,27,1234,9,27,1,27,1,27,3,27,1238,8,27,1,27,3,27,1241,8,27,1,27,1,27,1,27,5,27,1246,8,27,10,27,12,27,1249,9,27,1,27,1,27,1,27,1,27,5,27,1255,8,27,10,27,12,27,1258,9,27,1,27,1,27,1,27,5,27,1263,8,27,10,27,12,27,1266,9,27,1,27,1,27,1,27,1,27,3,27,1272,8,27,1,28,1,28,1,29,1,29,1,30,1,30,1,30,1,30,3,30,1282,8,30,1,31,1,31,3,31,1286,8,31,1,31,1,31,1,31,1,31,5,31,1292,8,31,10,31,12,31,1295,9,31,3,31,1297,8,31,3,31,1299,8,31,1,31,1,31,3,31,1303,8,31,1,31,1,31,1,32,1,32,3,32,1309,8,32,1,32,1,32,3,32,1313,8,32,1,32,1,32,1,33,1,33,3,33,1319,8,33,3,33,1321,8,33,1,33,1,33,1,33,1,33,1,34,5,34,1328,8,34,10,34,12,34,1331,9,34,1,34,1,34,1,35,5,35,1336,8,35,10,35,12,35,1339,9,35,1,35,1,35,1,35,1,36,1,36,3,36,1346,8,36,1,37,1,37,1,37,5,37,1351,8,37,10,37,12,37,1354,9,37,1,37,3,37,1357,8,37,1,38,1,38,1,38,3,38,1362,8,38,1,39,3,39,1365,8,39,1,40,1,40,1,41,1,41,3,41,1371,8,41,1,42,1,42,1,42,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1,44,3,44,1385,8,44,1,44,3,44,1388,8,44,1,44,1,44,1,44,1,44,1,45,1,45,3,45,1396,8,45,1,45,1,45,1,45,5,45,1401,8,45,10,45,12,45,1404,9,45,1,45,1,45,1,46,3,46,1409,8,46,1,46,1,46,3,46,1413,8,46,1,46,1,46,1,46,1,47,1,47,3,47,1420,8,47,1,48,1,48,1,48,3,48,1425,8,48,1,49,1,49,1,49,1,49,1,49,3,49,1432,8,49,1,49,3,49,1435,8,49,1,50,1,50,4,50,1439,8,50,11,50,12,50,1440,1,50,1,50,4,50,1445,8,50,11,50,12,50,1446,3,50,1449,8,50,1,51,1,51,1,51,1,51,1,52,1,52,3,52,1457,8,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,3,53,1485,8,53,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,3,54,1497,8,54,1,55,1,55,1,55,1,55,1,55,1,56,3,56,1505,8,56,1,56,5,56,1508,8,56,10,56,12,56,1511,9,56,1,57,3,57,1514,8,57,1,57,3,57,1517,8,57,1,57,3,57,1520,8,57,1,57,1,57,4,57,1524,8,57,11,57,12,57,1525,1,57,5,57,1529,8,57,10,57,12,57,1532,9,57,1,58,1,58,1,58,1,58,5,58,1538,8,58,10,58,12,58,1541,9,58,1,59,1,59,1,59,1,60,1,60,1,60,1,60,3,60,1550,8,60,1,61,1,61,1,61,1,61,1,61,5,61,1557,8,61,10,61,12,61,1560,9,61,1,62,1,62,1,62,1,62,5,62,1566,8,62,10,62,12,62,1569,9,62,1,63,1,63,1,63,1,63,5,63,1575,8,63,10,63,12,63,1578,9,63,1,64,1,64,1,64,1,64,5,64,1584,8,64,10,64,12,64,1587,9,64,1,65,1,65,1,65,5,65,1592,8,65,10,65,12,65,1595,9,65,1,65,3,65,1598,8,65,1,66,1,66,1,66,1,66,3,66,1604,8,66,1,67,1,67,3,67,1608,8,67,3,67,1610,8,67,1,67,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,69,1,69,1,69,5,69,1623,8,69,10,69,12,69,1626,9,69,1,70,1,70,1,70,5,70,1631,8,70,10,70,12,70,1634,9,70,1,71,1,71,3,71,1638,8,71,3,71,1640,8,71,1,71,1,71,1,71,1,71,5,71,1646,8,71,10,71,12,71,1649,9,71,1,71,1,71,1,71,1,71,5,71,1655,8,71,10,71,12,71,1658,9,71,1,71,1,71,1,72,1,72,1,72,5,72,1665,8,72,10,72,12,72,1668,9,72,1,73,1,73,3,73,1672,8,73,3,73,1674,8,73,1,73,1,73,1,73,1,73,5,73,1680,8,73,10,73,12,73,1683,9,73,1,73,1,73,1,73,1,73,5,73,1689,8,73,10,73,12,73,1692,9,73,1,73,1,73,1,74,1,74,1,74,5,74,1699,8,74,10,74,12,74,1702,9,74,1,75,1,75,1,75,5,75,1707,8,75,10,75,12,75,1710,9,75,1,76,1,76,1,76,5,76,1715,8,76,10,76,12,76,1718,9,76,1,77,1,77,1,77,5,77,1723,8,77,10,77,12,77,1726,9,77,1,78,1,78,3,78,1730,8,78,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,82,3,82,1745,8,82,1,82,3,82,1748,8,82,1,82,3,82,1751,8,82,1,82,1,82,3,82,1755,8,82,1,82,5,82,1758,8,82,10,82,12,82,1761,9,82,1,83,1,83,1,83,1,83,5,83,1767,8,83,10,83,12,83,1770,9,83,1,84,1,84,3,84,1774,8,84,3,84,1776,8,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,86,1,86,1,86,3,86,1789,8,86,1,86,3,86,1792,8,86,1,86,1,86,3,86,1796,8,86,1,86,1,86,3,86,1800,8,86,1,86,3,86,1803,8,86,1,86,1,86,1,87,3,87,1808,8,87,1,87,1,87,1,88,3,88,1813,8,88,1,88,3,88,1816,8,88,1,88,3,88,1819,8,88,1,88,3,88,1822,8,88,1,88,3,88,1825,8,88,1,89,1,89,3,89,1829,8,89,1,89,3,89,1832,8,89,1,89,5,89,1835,8,89,10,89,12,89,1838,9,89,1,90,1,90,1,91,1,91,1,91,1,91,1,91,3,91,1847,8,91,3,91,1849,8,91,1,92,1,92,1,93,3,93,1854,8,93,1,93,1,93,1,93,3,93,1859,8,93,1,93,1,93,3,93,1863,8,93,1,93,5,93,1866,8,93,10,93,12,93,1869,9,93,1,94,1,94,1,94,1,94,3,94,1875,8,94,1,94,3,94,1878,8,94,1,95,1,95,1,95,1,95,3,95,1884,8,95,1,96,1,96,1,96,1,96,5,96,1890,8,96,10,96,12,96,1893,9,96,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,5,98,1904,8,98,10,98,12,98,1907,9,98,1,99,4,99,1910,8,99,11,99,12,99,1911,1,99,3,99,1915,8,99,1,99,5,99,1918,8,99,10,99,12,99,1921,9,99,1,99,1,99,5,99,1925,8,99,10,99,12,99,1928,9,99,3,99,1930,8,99,1,100,1,100,1,100,3,100,1935,8,100,1,100,1,100,3,100,1939,8,100,3,100,1941,8,100,1,100,1,100,3,100,1945,8,100,1,100,1,100,3,100,1949,8,100,3,100,1951,8,100,3,100,1953,8,100,1,101,1,101,1,101,1,101,1,101,3,101,1960,8,101,1,102,1,102,1,102,5,102,1965,8,102,10,102,12,102,1968,9,102,1,102,1,102,1,102,5,102,1973,8,102,10,102,12,102,1976,9,102,3,102,1978,8,102,1,103,1,103,1,103,3,103,1983,8,103,1,103,1,103,1,103,1,103,3,103,1989,8,103,1,103,3,103,1992,8,103,1,104,1,104,1,104,5,104,1997,8,104,10,104,12,104,2e3,9,104,1,105,1,105,1,105,1,106,1,106,1,106,1,107,1,107,1,107,1,108,1,108,1,108,5,108,2014,8,108,10,108,12,108,2017,9,108,1,109,1,109,1,109,1,110,1,110,3,110,2024,8,110,3,110,2026,8,110,1,110,1,110,1,110,1,110,1,110,3,110,2033,8,110,1,110,1,110,1,110,1,110,1,110,3,110,2040,8,110,1,111,1,111,1,111,5,111,2045,8,111,10,111,12,111,2048,9,111,1,112,1,112,3,112,2052,8,112,3,112,2054,8,112,1,112,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,5,113,2065,8,113,10,113,12,113,2068,9,113,1,114,1,114,1,114,5,114,2073,8,114,10,114,12,114,2076,9,114,1,115,1,115,1,115,5,115,2081,8,115,10,115,12,115,2084,9,115,1,116,1,116,3,116,2088,8,116,3,116,2090,8,116,1,116,1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,5,117,2101,8,117,10,117,12,117,2104,9,117,1,118,1,118,1,118,1,118,4,118,2110,8,118,11,118,12,118,2111,3,118,2114,8,118,1,119,1,119,1,119,4,119,2119,8,119,11,119,12,119,2120,1,120,1,120,1,121,1,121,3,121,2127,8,121,3,121,2129,8,121,1,121,1,121,1,121,1,121,5,121,2135,8,121,10,121,12,121,2138,9,121,1,121,1,121,1,121,1,121,5,121,2144,8,121,10,121,12,121,2147,9,121,1,121,1,121,1,122,1,122,1,122,5,122,2154,8,122,10,122,12,122,2157,9,122,1,123,1,123,3,123,2161,8,123,1,123,3,123,2164,8,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130,3,130,2202,8,130,1,130,3,130,2205,8,130,1,130,3,130,2208,8,130,1,130,1,130,1,131,1,131,3,131,2214,8,131,1,132,3,132,2217,8,132,1,132,1,132,1,132,3,132,2222,8,132,3,132,2224,8,132,1,132,1,132,1,132,1,132,1,133,3,133,2231,8,133,1,133,1,133,1,133,1,133,1,133,1,133,5,133,2239,8,133,10,133,12,133,2242,9,133,1,133,1,133,1,134,1,134,1,135,3,135,2249,8,135,1,135,1,135,1,135,3,135,2254,8,135,1,135,1,135,1,136,1,136,1,137,1,137,1,138,1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,139,3,139,2273,8,139,1,139,3,139,2276,8,139,1,139,3,139,2279,8,139,1,139,1,139,1,139,1,139,3,139,2285,8,139,3,139,2287,8,139,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,1,141,1,141,3,141,2300,8,141,1,141,3,141,2303,8,141,1,141,3,141,2306,8,141,1,141,1,141,1,141,1,141,3,141,2312,8,141,3,141,2314,8,141,1,142,1,142,1,142,1,142,1,142,1,143,1,143,1,143,1,143,3,143,2325,8,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,145,3,145,2339,8,145,1,146,1,146,5,146,2343,8,146,10,146,12,146,2346,9,146,1,146,3,146,2349,8,146,1,147,1,147,1,147,1,147,1,148,3,148,2356,8,148,1,148,1,148,1,149,1,149,1,149,1,149,3,149,2364,8,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151,3,151,2377,8,151,1,151,1,151,1,152,1,152,1,152,3,152,2384,8,152,1,152,1,152,3,152,2388,8,152,1,152,1,152,1,153,1,153,1,154,1,154,1,155,1,155,1,156,1,156,1,157,1,157,1,158,1,158,1,159,1,159,1,159,1,159,1,160,1,160,1,161,1,161,1,162,1,162,1,163,1,163,1,164,1,164,1,165,1,165,1,166,1,166,1,167,1,167,1,168,1,168,1,169,1,169,1,170,1,170,1,170,5,170,2431,8,170,10,170,12,170,2434,9,170,1,171,1,171,3,171,2438,8,171,1,172,1,172,1,173,1,173,1,174,1,174,1,175,1,175,1,176,1,176,1,177,1,177,1,177,5,177,2453,8,177,10,177,12,177,2456,9,177,1,178,1,178,1,179,1,179,1,180,1,180,1,181,1,181,1,182,1,182,1,182,1,182,1,183,1,183,1,184,3,184,2473,8,184,1,184,1,184,1,184,3,184,2478,8,184,1,185,1,185,1,185,1,185,1,185,1,186,1,186,1,186,1,186,1,186,1,187,1,187,1,187,1,187,1,187,1,187,1,188,1,188,3,188,2498,8,188,1,188,1,188,3,188,2502,8,188,1,188,1,188,1,188,1,188,1,188,3,188,2509,8,188,1,188,3,188,2512,8,188,1,188,1,188,1,188,1,188,1,188,3,188,2519,8,188,1,188,3,188,2522,8,188,1,188,1,188,3,188,2526,8,188,1,188,1,188,1,188,1,188,1,188,3,188,2533,8,188,3,188,2535,8,188,1,189,1,189,1,190,3,190,2540,8,190,1,190,1,190,3,190,2544,8,190,1,190,1,190,3,190,2548,8,190,1,190,1,190,3,190,2552,8,190,1,190,1,190,3,190,2556,8,190,3,190,2558,8,190,1,191,4,191,2561,8,191,11,191,12,191,2562,1,191,3,191,2566,8,191,1,191,5,191,2569,8,191,10,191,12,191,2572,9,191,1,191,1,191,4,191,2576,8,191,11,191,12,191,2577,3,191,2580,8,191,1,192,1,192,1,193,1,193,1,193,5,193,2587,8,193,10,193,12,193,2590,9,193,1,194,1,194,1,195,1,195,1,196,1,196,1,197,1,197,1,198,1,198,1,198,1,198,3,198,2604,8,198,3,198,2606,8,198,1,198,1,198,1,199,1,199,3,199,2612,8,199,1,200,1,200,3,200,2616,8,200,1,200,1,200,1,200,1,201,1,201,3,201,2623,8,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,3,201,2632,8,201,1,201,1,201,1,201,3,201,2637,8,201,1,202,1,202,3,202,2641,8,202,1,203,1,203,1,204,1,204,1,204,1,204,3,204,2649,8,204,1,204,1,204,1,204,1,205,1,205,3,205,2656,8,205,1,206,1,206,1,206,1,206,1,206,1,207,1,207,1,207,1,207,3,207,2667,8,207,1,208,1,208,1,208,1,208,3,208,2673,8,208,1,209,1,209,1,210,5,210,2678,8,210,10,210,12,210,2681,9,210,1,210,1,210,1,210,1,210,1,210,1,210,5,210,2689,8,210,10,210,12,210,2692,9,210,3,210,2694,8,210,1,210,1,210,1,211,3,211,2699,8,211,1,211,1,211,1,211,3,211,2704,8,211,3,211,2706,8,211,1,211,1,211,1,212,1,212,1,212,5,212,2713,8,212,10,212,12,212,2716,9,212,1,212,1,212,1,212,1,212,1,212,1,212,5,212,2724,8,212,10,212,12,212,2727,9,212,1,212,3,212,2730,8,212,1,213,1,213,1,213,1,213,3,213,2736,8,213,1,214,1,214,1,215,3,215,2741,8,215,1,215,3,215,2744,8,215,1,215,1,215,3,215,2748,8,215,1,215,3,215,2751,8,215,1,215,1,215,1,216,5,216,2756,8,216,10,216,12,216,2759,9,216,1,216,1,216,1,216,1,217,3,217,2765,8,217,1,217,1,217,5,217,2769,8,217,10,217,12,217,2772,9,217,1,217,1,217,1,217,1,218,1,218,3,218,2779,8,218,1,219,1,219,1,219,5,219,2784,8,219,10,219,12,219,2787,9,219,1,219,3,219,2790,8,219,1,220,1,220,1,220,1,220,1,220,1,221,3,221,2798,8,221,1,221,3,221,2801,8,221,1,221,1,221,1,221,5,221,2806,8,221,10,221,12,221,2809,9,221,1,221,1,221,1,221,1,221,5,221,2815,8,221,10,221,12,221,2818,9,221,1,222,1,222,1,223,1,223,1,223,1,223,3,223,2826,8,223,1,224,1,224,1,224,3,224,2831,8,224,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,3,225,2863,8,225,1,226,1,226,3,226,2867,8,226,1,227,1,227,1,228,1,228,1,229,3,229,2874,8,229,1,229,5,229,2877,8,229,10,229,12,229,2880,9,229,1,230,1,230,1,230,1,231,3,231,2886,8,231,1,231,3,231,2889,8,231,1,232,1,232,1,232,5,232,2894,8,232,10,232,12,232,2897,9,232,1,232,3,232,2900,8,232,1,233,1,233,1,233,1,233,1,233,3,233,2907,8,233,1,233,1,233,1,233,3,233,2912,8,233,1,234,1,234,1,234,1,234,1,234,3,234,2919,8,234,1,234,3,234,2922,8,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,3,234,2932,8,234,1,235,1,235,1,235,1,236,1,236,1,236,1,236,1,237,1,237,1,237,1,238,1,238,1,238,1,239,1,239,1,239,1,240,1,240,1,240,1,241,3,241,2954,8,241,1,241,3,241,2957,8,241,1,241,3,241,2960,8,241,1,241,3,241,2963,8,241,1,242,1,242,3,242,2967,8,242,1,243,1,243,3,243,2971,8,243,1,244,1,244,1,245,1,245,3,245,2977,8,245,1,246,1,246,5,246,2981,8,246,10,246,12,246,2984,9,246,1,247,3,247,2987,8,247,1,247,1,247,1,248,1,248,3,248,2993,8,248,1,248,3,248,2996,8,248,1,249,3,249,2999,8,249,1,249,1,249,1,250,1,250,1,251,1,251,1,251,1,252,1,252,3,252,3010,8,252,1,252,1,252,1,252,1,253,1,253,1,253,1,253,1,254,1,254,5,254,3021,8,254,10,254,12,254,3024,9,254,1,254,1,254,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,3,255,3036,8,255,1,256,1,256,3,256,3040,8,256,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,3,257,3057,8,257,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,3,258,3075,8,258,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,3,259,3098,8,259,1,260,1,260,1,260,1,260,5,260,3104,8,260,10,260,12,260,3107,9,260,1,261,1,261,1,261,1,261,1,261,1,262,1,262,1,262,1,262,1,263,5,263,3119,8,263,10,263,12,263,3122,9,263,1,263,1,263,1,263,1,263,1,263,1,264,1,264,1,264,1,264,5,264,3133,8,264,10,264,12,264,3136,9,264,1,264,3,264,3139,8,264,1,265,1,265,1,265,1,266,3,266,3145,8,266,1,266,1,266,1,267,1,267,1,267,1,267,1,268,3,268,3154,8,268,1,268,1,268,3,268,3158,8,268,1,268,5,268,3161,8,268,10,268,12,268,3164,9,268,1,269,1,269,1,269,1,269,1,269,1,270,3,270,3172,8,270,1,270,1,270,5,270,3176,8,270,10,270,12,270,3179,9,270,1,270,1,270,1,270,1,270,1,271,1,271,1,272,1,272,3,272,3189,8,272,1,272,3,272,3192,8,272,1,272,5,272,3195,8,272,10,272,12,272,3198,9,272,1,273,1,273,1,273,1,273,1,274,1,274,1,274,5,274,3207,8,274,10,274,12,274,3210,9,274,1,274,1,274,1,275,1,275,3,275,3216,8,275,1,275,1,275,5,275,3220,8,275,10,275,12,275,3223,9,275,1,275,1,275,1,276,1,276,1,277,1,277,1,277,1,277,3,277,3233,8,277,1,277,1,277,3,277,3237,8,277,3,277,3239,8,277,1,277,1,277,1,278,1,278,1,278,1,279,1,279,1,280,1,280,1,281,3,281,3251,8,281,1,282,1,282,1,282,1,282,1,282,1,283,1,283,1,283,1,283,1,284,1,284,1,284,1,284,1,284,1,285,1,285,1,285,1,285,1,286,1,286,1,286,1,286,1,286,1,286,1,287,1,287,1,288,1,288,1,289,1,289,1,289,1,289,1,290,1,290,1,290,1,291,1,291,1,291,1,291,1,291,1,292,1,292,1,292,3,292,3296,8,292,1,292,3,292,3299,8,292,1,292,1,292,3,292,3303,8,292,1,292,1,292,3,292,3307,8,292,1,292,1,292,1,293,1,293,3,293,3313,8,293,1,294,1,294,1,294,1,294,1,295,1,295,1,295,1,295,1,295,1,295,5,295,3325,8,295,10,295,12,295,3328,9,295,1,295,1,295,1,296,1,296,1,296,3,296,3335,8,296,3,296,3337,8,296,1,296,1,296,1,296,1,296,1,296,1,296,1,297,1,297,1,297,3,297,3348,8,297,3,297,3350,8,297,1,297,1,297,1,297,1,297,1,297,1,297,1,298,1,298,1,298,1,298,1,298,1,298,1,299,1,299,1,299,5,299,3367,8,299,10,299,12,299,3370,9,299,1,299,3,299,3373,8,299,1,300,1,300,1,300,1,300,3,300,3379,8,300,1,300,1,300,1,300,3,300,3384,8,300,1,301,1,301,1,301,1,302,1,302,1,302,1,302,1,302,3,302,3394,8,302,1,303,1,303,1,303,1,304,1,304,1,304,3,304,3402,8,304,1,305,1,305,1,305,1,306,1,306,1,306,1,306,1,306,1,307,3,307,3413,8,307,1,307,3,307,3416,8,307,1,307,1,307,3,307,3420,8,307,1,307,3,307,3423,8,307,1,308,1,308,3,308,3427,8,308,1,309,1,309,1,309,1,309,1,310,1,310,1,310,1,310,1,310,1,310,5,310,3439,8,310,10,310,12,310,3442,9,310,1,310,1,310,1,311,1,311,1,312,3,312,3449,8,312,1,312,1,312,1,312,3,312,3454,8,312,1,312,1,312,1,313,1,313,1,313,1,313,1,313,1,314,1,314,1,314,1,314,1,315,1,315,3,315,3469,8,315,1,315,1,315,3,315,3473,8,315,1,315,1,315,3,315,3477,8,315,1,316,1,316,1,316,1,316,1,316,1,317,1,317,1,317,1,317,1,317,1,318,3,318,3490,8,318,1,318,3,318,3493,8,318,1,318,1,318,3,318,3497,8,318,1,318,1,318,1,318,1,318,1,318,3,318,3504,8,318,1,318,1,318,1,318,1,318,3,318,3510,8,318,1,319,1,319,1,320,1,320,1,321,1,321,1,321,1,321,1,321,1,322,1,322,1,322,1,322,1,322,1,322,1,323,1,323,1,324,1,324,1,325,1,325,3,325,3533,8,325,1,326,1,326,1,326,4,326,3538,8,326,11,326,12,326,3539,1,326,1,326,1,326,1,327,1,327,1,327,1,327,1,327,1,327,1,328,1,328,1,328,5,328,3554,8,328,10,328,12,328,3557,9,328,1,328,3,328,3560,8,328,1,329,1,329,1,329,5,329,3565,8,329,10,329,12,329,3568,9,329,1,329,3,329,3571,8,329,1,329,1,329,5,329,3575,8,329,10,329,12,329,3578,9,329,1,329,3,329,3581,8,329,1,330,1,330,1,330,1,330,1,330,1,330,3,330,3589,8,330,1,330,3,330,3592,8,330,1,331,1,331,3,331,3596,8,331,1,332,1,332,1,332,1,332,1,332,1,333,1,333,1,333,1,334,1,334,1,334,1,335,1,335,1,335,1,336,1,336,1,336,1,336,1,336,1,337,3,337,3618,8,337,1,337,3,337,3621,8,337,1,338,1,338,1,338,1,338,1,338,1,339,1,339,3,339,3630,8,339,1,339,1,339,3,339,3634,8,339,3,339,3636,8,339,1,339,3,339,3639,8,339,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,3,340,3649,8,340,1,341,1,341,3,341,3653,8,341,1,342,1,342,3,342,3657,8,342,1,343,1,343,1,343,1,343,3,343,3663,8,343,1,344,1,344,3,344,3667,8,344,1,344,3,344,3670,8,344,1,344,5,344,3673,8,344,10,344,12,344,3676,9,344,1,345,1,345,1,345,3,345,3681,8,345,1,345,1,345,1,346,1,346,1,346,3,346,3688,8,346,1,346,1,346,1,347,1,347,1,347,3,347,3695,8,347,1,347,1,347,1,348,1,348,1,348,3,348,3702,8,348,1,348,1,348,1,349,1,349,1,349,1,349,1,350,3,350,3711,8,350,1,350,1,350,1,350,1,351,1,351,1,351,3,351,3719,8,351,1,352,1,352,1,353,1,353,3,353,3725,8,353,1,353,3,353,3728,8,353,1,353,3,353,3731,8,353,1,354,1,354,1,355,1,355,1,356,1,356,1,356,1,356,3,356,3741,8,356,1,357,1,357,1,357,3,357,3746,8,357,1,357,1,357,1,357,3,357,3751,8,357,1,357,1,357,1,357,3,357,3756,8,357,1,357,1,357,1,358,3,358,3761,8,358,1,358,1,358,1,358,3,358,3766,8,358,1,359,1,359,1,359,1,359,3,359,3772,8,359,1,359,1,359,1,359,1,359,3,359,3778,8,359,1,360,1,360,1,361,1,361,1,362,1,362,1,363,1,363,1,364,1,364,1,364,1,364,1,365,3,365,3793,8,365,1,365,1,365,1,365,1,365,1,365,1,365,1,366,1,366,1,367,1,367,1,367,3,367,3806,8,367,1,368,1,368,1,369,1,369,3,369,3812,8,369,1,369,1,369,3,369,3816,8,369,1,369,1,369,1,370,1,370,1,370,1,370,1,370,1,370,1,370,3,370,3827,8,370,3,370,3829,8,370,1,371,1,371,1,372,1,372,1,373,1,373,3,373,3837,8,373,3,373,3839,8,373,1,373,1,373,5,373,3843,8,373,10,373,12,373,3846,9,373,1,373,1,373,1,374,1,374,1,375,1,375,1,375,1,375,1,375,3,375,3857,8,375,1,375,1,375,1,375,1,375,1,375,3,375,3864,8,375,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,377,3,377,3874,8,377,1,378,3,378,3877,8,378,1,379,1,379,1,379,3,379,3882,8,379,1,379,1,379,1,380,1,380,1,380,1,380,1,381,1,381,1,381,1,381,1,382,1,382,1,382,1,383,1,383,3,383,3899,8,383,3,383,3901,8,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,384,1,384,1,384,1,384,1,384,1,384,1,385,1,385,3,385,3918,8,385,1,385,1,385,5,385,3922,8,385,10,385,12,385,3925,9,385,1,385,3,385,3928,8,385,1,386,1,386,3,386,3932,8,386,1,386,1,386,5,386,3936,8,386,10,386,12,386,3939,9,386,1,386,1,386,1,386,5,386,3944,8,386,10,386,12,386,3947,9,386,1,386,1,386,3,386,3951,8,386,1,387,1,387,1,387,1,387,1,388,1,388,1,388,1,388,1,389,1,389,1,389,1,389,1,390,1,390,1,390,1,390,3,390,3969,8,390,1,390,1,390,1,391,1,391,1,391,1,391,1,391,1,391,1,391,3,391,3980,8,391,1,392,1,392,1,392,1,393,1,393,1,393,1,394,1,394,1,394,1,395,1,395,1,395,1,396,1,396,1,396,1,397,1,397,1,397,1,398,1,398,1,398,1,398,1,398,1,399,1,399,3,399,4007,8,399,1,399,1,399,5,399,4011,8,399,10,399,12,399,4014,9,399,1,399,3,399,4017,8,399,1,400,1,400,1,400,1,400,3,400,4023,8,400,1,400,1,400,3,400,4027,8,400,3,400,4029,8,400,1,400,3,400,4032,8,400,1,400,1,400,1,401,1,401,3,401,4038,8,401,1,401,3,401,4041,8,401,1,401,1,401,1,401,1,401,1,401,3,401,4048,8,401,1,401,3,401,4051,8,401,1,401,3,401,4054,8,401,1,401,1,401,1,401,1,401,1,402,1,402,1,402,1,402,1,402,3,402,4065,8,402,1,402,3,402,4068,8,402,1,402,3,402,4071,8,402,1,402,1,402,1,402,3,402,4076,8,402,1,402,3,402,4079,8,402,1,402,1,402,3,402,4083,8,402,3,402,4085,8,402,1,402,1,402,1,402,1,402,1,403,1,403,1,403,1,404,1,404,1,405,1,405,1,405,1,406,1,406,1,406,1,407,1,407,1,407,1,407,1,407,3,407,4107,8,407,1,408,1,408,1,408,5,408,4112,8,408,10,408,12,408,4115,9,408,1,408,3,408,4118,8,408,1,409,1,409,1,409,5,409,4123,8,409,10,409,12,409,4126,9,409,1,409,3,409,4129,8,409,1,410,1,410,1,410,5,410,4134,8,410,10,410,12,410,4137,9,410,1,410,3,410,4140,8,410,1,411,1,411,1,411,5,411,4145,8,411,10,411,12,411,4148,9,411,1,411,3,411,4151,8,411,1,412,1,412,1,413,1,413,1,413,1,414,1,414,1,415,1,415,1,415,1,415,1,415,1,415,1,416,1,416,1,416,1,416,1,416,1,417,1,417,1,417,1,417,1,417,3,417,4176,8,417,1,418,5,418,4179,8,418,10,418,12,418,4182,9,418,1,418,3,418,4185,8,418,1,419,1,419,3,419,4189,8,419,1,420,3,420,4192,8,420,1,420,1,420,1,420,1,421,1,421,1,421,1,421,1,421,1,421,1,422,1,422,1,422,1,422,1,422,1,423,1,423,1,423,3,423,4211,8,423,1,423,1,423,3,423,4215,8,423,1,423,1,423,3,423,4219,8,423,1,423,1,423,1,424,3,424,4224,8,424,1,424,3,424,4227,8,424,1,425,1,425,1,425,1,425,1,425,1,425,1,426,1,426,1,426,5,426,4238,8,426,10,426,12,426,4241,9,426,1,426,3,426,4244,8,426,1,427,1,427,1,427,1,427,1,427,1,427,1,427,3,427,4253,8,427,1,428,1,428,1,428,1,429,1,429,5,429,4260,8,429,10,429,12,429,4263,9,429,1,429,1,429,1,430,3,430,4268,8,430,1,430,1,430,1,430,1,431,1,431,1,432,1,432,3,432,4277,8,432,1,432,1,432,1,432,5,432,4282,8,432,10,432,12,432,4285,9,432,1,432,1,432,4,432,4289,8,432,11,432,12,432,4290,3,432,4293,8,432,1,432,1,432,1,432,3,432,4298,8,432,1,433,3,433,4301,8,433,1,433,1,433,1,433,1,434,1,434,3,434,4308,8,434,1,434,1,434,1,434,5,434,4313,8,434,10,434,12,434,4316,9,434,1,434,1,434,4,434,4320,8,434,11,434,12,434,4321,3,434,4324,8,434,1,434,1,434,1,434,3,434,4329,8,434,1,435,1,435,1,435,1,436,1,436,5,436,4336,8,436,10,436,12,436,4339,9,436,1,436,1,436,1,437,1,437,1,437,1,438,1,438,5,438,4348,8,438,10,438,12,438,4351,9,438,1,438,1,438,1,439,1,439,1,439,1,439,1,439,1,440,1,440,1,440,3,440,4363,8,440,3,440,4365,8,440,1,440,1,440,1,440,3,440,4370,8,440,1,440,1,440,3,440,4374,8,440,3,440,4376,8,440,1,440,3,440,4379,8,440,1,440,1,440,3,440,4383,8,440,1,440,1,440,1,441,1,441,1,442,1,442,1,443,1,443,1,444,1,444,1,445,1,445,1,445,1,445,1,445,1,445,1,446,1,446,1,446,1,446,1,446,1,447,1,447,1,447,1,447,1,447,1,447,1,448,1,448,1,448,1,448,1,448,1,449,1,449,1,449,5,449,4420,8,449,10,449,12,449,4423,9,449,1,449,3,449,4426,8,449,1,449,3,449,4429,8,449,1,450,1,450,1,450,1,450,1,450,3,450,4436,8,450,1,451,1,451,1,451,1,451,1,452,5,452,4443,8,452,10,452,12,452,4446,9,452,1,452,1,452,1,452,1,453,1,453,1,453,1,453,1,453,1,453,1,454,1,454,1,454,1,454,1,454,1,455,1,455,1,455,1,455,1,455,1,455,1,456,1,456,1,456,1,456,1,456,1,457,1,457,1,457,1,457,1,458,1,458,5,458,4479,8,458,10,458,12,458,4482,9,458,1,458,1,458,1,458,5,458,4487,8,458,10,458,12,458,4490,9,458,1,458,1,458,4,458,4494,8,458,11,458,12,458,4495,3,458,4498,8,458,1,458,1,458,1,458,3,458,4503,8,458,1,459,1,459,1,459,1,459,1,459,1,459,1,459,1,460,1,460,1,460,1,460,1,460,1,460,1,461,1,461,1,461,1,461,3,461,4522,8,461,1,461,1,461,1,461,3,461,4527,8,461,3,461,4529,8,461,1,461,3,461,4532,8,461,1,461,1,461,1,462,1,462,1,462,1,462,1,462,1,462,1,463,1,463,1,463,5,463,4545,8,463,10,463,12,463,4548,9,463,1,463,3,463,4551,8,463,1,464,1,464,1,464,3,464,4556,8,464,1,465,1,465,1,465,1,465,1,466,1,466,3,466,4564,8,466,1,466,1,466,1,466,5,466,4569,8,466,10,466,12,466,4572,9,466,1,466,1,466,4,466,4576,8,466,11,466,12,466,4577,3,466,4580,8,466,1,466,3,466,4583,8,466,1,467,1,467,1,467,3,467,4588,8,467,1,467,3,467,4591,8,467,1,467,1,467,1,468,1,468,1,468,5,468,4598,8,468,10,468,12,468,4601,9,468,1,468,3,468,4604,8,468,1,469,1,469,1,469,1,469,3,469,4610,8,469,1,470,1,470,1,470,3,470,4615,8,470,1,470,1,470,1,471,1,471,1,472,1,472,1,473,1,473,1,473,1,473,1,473,1,473,1,474,1,474,1,474,1,474,1,474,1,475,1,475,1,475,1,475,1,475,1,476,1,476,1,476,1,476,1,477,3,477,4644,8,477,1,477,5,477,4647,8,477,10,477,12,477,4650,9,477,1,477,1,477,1,477,1,477,1,478,1,478,1,479,5,479,4659,8,479,10,479,12,479,4662,9,479,1,479,1,479,1,479,1,479,1,479,1,479,5,479,4670,8,479,10,479,12,479,4673,9,479,3,479,4675,8,479,1,479,1,479,1,480,3,480,4680,8,480,1,480,1,480,1,480,3,480,4685,8,480,3,480,4687,8,480,1,480,1,480,1,481,1,481,1,482,3,482,4694,8,482,1,482,3,482,4697,8,482,1,482,1,482,3,482,4701,8,482,1,482,3,482,4704,8,482,1,482,1,482,1,483,3,483,4709,8,483,1,483,4,483,4712,8,483,11,483,12,483,4713,1,483,1,483,1,483,1,484,1,484,4,484,4721,8,484,11,484,12,484,4722,1,484,1,484,1,485,1,485,3,485,4729,8,485,1,486,1,486,1,486,1,486,1,486,3,486,4736,8,486,1,487,3,487,4739,8,487,1,487,3,487,4742,8,487,1,488,1,488,1,489,1,489,1,490,1,490,1,491,1,491,1,492,1,492,1,493,1,493,1,494,1,494,1,494,0,1,0,495,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402,404,406,408,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,440,442,444,446,448,450,452,454,456,458,460,462,464,466,468,470,472,474,476,478,480,482,484,486,488,490,492,494,496,498,500,502,504,506,508,510,512,514,516,518,520,522,524,526,528,530,532,534,536,538,540,542,544,546,548,550,552,554,556,558,560,562,564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608,610,612,614,616,618,620,622,624,626,628,630,632,634,636,638,640,642,644,646,648,650,652,654,656,658,660,662,664,666,668,670,672,674,676,678,680,682,684,686,688,690,692,694,696,698,700,702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732,734,736,738,740,742,744,746,748,750,752,754,756,758,760,762,764,766,768,770,772,774,776,778,780,782,784,786,788,790,792,794,796,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850,852,854,856,858,860,862,864,866,868,870,872,874,876,878,880,882,884,886,888,890,892,894,896,898,900,902,904,906,908,910,912,914,916,918,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962,964,966,968,970,972,974,976,978,980,982,984,986,988,0,27,4,0,107,107,199,199,201,201,217,217,2,0,191,191,210,210,3,0,174,174,177,178,187,187,4,0,186,186,189,189,206,206,208,208,2,0,199,199,201,201,3,0,194,194,198,198,203,203,2,0,179,179,213,213,3,0,76,76,90,90,210,210,2,0,64,64,156,156,1,0,218,219,1,0,122,124,2,0,139,139,185,185,2,0,34,34,217,217,2,0,31,31,120,120,2,0,39,39,163,163,3,0,80,80,83,83,114,114,2,0,148,148,185,185,2,0,128,128,175,175,2,0,42,42,188,188,2,0,125,125,176,176,1,0,221,222,2,0,184,184,207,207,2,0,102,102,210,210,2,0,2,2,165,165,2,0,137,137,153,153,2,0,6,6,18,18,2,0,17,17,132,132,5020,0,1005,1,0,0,0,2,1091,1,0,0,0,4,1093,1,0,0,0,6,1116,1,0,0,0,8,1121,1,0,0,0,10,1123,1,0,0,0,12,1125,1,0,0,0,14,1129,1,0,0,0,16,1132,1,0,0,0,18,1136,1,0,0,0,20,1140,1,0,0,0,22,1147,1,0,0,0,24,1155,1,0,0,0,26,1163,1,0,0,0,28,1172,1,0,0,0,30,1174,1,0,0,0,32,1176,1,0,0,0,34,1178,1,0,0,0,36,1180,1,0,0,0,38,1182,1,0,0,0,40,1184,1,0,0,0,42,1186,1,0,0,0,44,1188,1,0,0,0,46,1200,1,0,0,0,48,1219,1,0,0,0,50,1223,1,0,0,0,52,1227,1,0,0,0,54,1271,1,0,0,0,56,1273,1,0,0,0,58,1275,1,0,0,0,60,1281,1,0,0,0,62,1298,1,0,0,0,64,1306,1,0,0,0,66,1320,1,0,0,0,68,1329,1,0,0,0,70,1337,1,0,0,0,72,1343,1,0,0,0,74,1356,1,0,0,0,76,1361,1,0,0,0,78,1364,1,0,0,0,80,1366,1,0,0,0,82,1370,1,0,0,0,84,1372,1,0,0,0,86,1375,1,0,0,0,88,1378,1,0,0,0,90,1395,1,0,0,0,92,1408,1,0,0,0,94,1419,1,0,0,0,96,1421,1,0,0,0,98,1434,1,0,0,0,100,1448,1,0,0,0,102,1450,1,0,0,0,104,1456,1,0,0,0,106,1484,1,0,0,0,108,1496,1,0,0,0,110,1498,1,0,0,0,112,1504,1,0,0,0,114,1513,1,0,0,0,116,1533,1,0,0,0,118,1542,1,0,0,0,120,1549,1,0,0,0,122,1551,1,0,0,0,124,1561,1,0,0,0,126,1570,1,0,0,0,128,1579,1,0,0,0,130,1597,1,0,0,0,132,1603,1,0,0,0,134,1609,1,0,0,0,136,1617,1,0,0,0,138,1619,1,0,0,0,140,1627,1,0,0,0,142,1639,1,0,0,0,144,1661,1,0,0,0,146,1673,1,0,0,0,148,1695,1,0,0,0,150,1703,1,0,0,0,152,1711,1,0,0,0,154,1719,1,0,0,0,156,1729,1,0,0,0,158,1731,1,0,0,0,160,1735,1,0,0,0,162,1738,1,0,0,0,164,1744,1,0,0,0,166,1762,1,0,0,0,168,1775,1,0,0,0,170,1783,1,0,0,0,172,1799,1,0,0,0,174,1807,1,0,0,0,176,1812,1,0,0,0,178,1831,1,0,0,0,180,1839,1,0,0,0,182,1848,1,0,0,0,184,1850,1,0,0,0,186,1853,1,0,0,0,188,1877,1,0,0,0,190,1883,1,0,0,0,192,1885,1,0,0,0,194,1894,1,0,0,0,196,1898,1,0,0,0,198,1929,1,0,0,0,200,1952,1,0,0,0,202,1959,1,0,0,0,204,1977,1,0,0,0,206,1991,1,0,0,0,208,1993,1,0,0,0,210,2001,1,0,0,0,212,2004,1,0,0,0,214,2007,1,0,0,0,216,2010,1,0,0,0,218,2018,1,0,0,0,220,2039,1,0,0,0,222,2041,1,0,0,0,224,2053,1,0,0,0,226,2061,1,0,0,0,228,2069,1,0,0,0,230,2077,1,0,0,0,232,2089,1,0,0,0,234,2097,1,0,0,0,236,2113,1,0,0,0,238,2115,1,0,0,0,240,2122,1,0,0,0,242,2128,1,0,0,0,244,2150,1,0,0,0,246,2158,1,0,0,0,248,2170,1,0,0,0,250,2172,1,0,0,0,252,2177,1,0,0,0,254,2182,1,0,0,0,256,2187,1,0,0,0,258,2192,1,0,0,0,260,2198,1,0,0,0,262,2213,1,0,0,0,264,2223,1,0,0,0,266,2230,1,0,0,0,268,2245,1,0,0,0,270,2248,1,0,0,0,272,2257,1,0,0,0,274,2259,1,0,0,0,276,2261,1,0,0,0,278,2286,1,0,0,0,280,2288,1,0,0,0,282,2313,1,0,0,0,284,2315,1,0,0,0,286,2320,1,0,0,0,288,2328,1,0,0,0,290,2338,1,0,0,0,292,2344,1,0,0,0,294,2350,1,0,0,0,296,2355,1,0,0,0,298,2359,1,0,0,0,300,2367,1,0,0,0,302,2372,1,0,0,0,304,2380,1,0,0,0,306,2391,1,0,0,0,308,2393,1,0,0,0,310,2395,1,0,0,0,312,2397,1,0,0,0,314,2399,1,0,0,0,316,2401,1,0,0,0,318,2403,1,0,0,0,320,2407,1,0,0,0,322,2409,1,0,0,0,324,2411,1,0,0,0,326,2413,1,0,0,0,328,2415,1,0,0,0,330,2417,1,0,0,0,332,2419,1,0,0,0,334,2421,1,0,0,0,336,2423,1,0,0,0,338,2425,1,0,0,0,340,2427,1,0,0,0,342,2437,1,0,0,0,344,2439,1,0,0,0,346,2441,1,0,0,0,348,2443,1,0,0,0,350,2445,1,0,0,0,352,2447,1,0,0,0,354,2449,1,0,0,0,356,2457,1,0,0,0,358,2459,1,0,0,0,360,2461,1,0,0,0,362,2463,1,0,0,0,364,2465,1,0,0,0,366,2469,1,0,0,0,368,2477,1,0,0,0,370,2479,1,0,0,0,372,2484,1,0,0,0,374,2489,1,0,0,0,376,2534,1,0,0,0,378,2536,1,0,0,0,380,2557,1,0,0,0,382,2579,1,0,0,0,384,2581,1,0,0,0,386,2583,1,0,0,0,388,2591,1,0,0,0,390,2593,1,0,0,0,392,2595,1,0,0,0,394,2597,1,0,0,0,396,2605,1,0,0,0,398,2611,1,0,0,0,400,2613,1,0,0,0,402,2636,1,0,0,0,404,2640,1,0,0,0,406,2642,1,0,0,0,408,2644,1,0,0,0,410,2655,1,0,0,0,412,2657,1,0,0,0,414,2666,1,0,0,0,416,2672,1,0,0,0,418,2674,1,0,0,0,420,2679,1,0,0,0,422,2705,1,0,0,0,424,2729,1,0,0,0,426,2735,1,0,0,0,428,2737,1,0,0,0,430,2740,1,0,0,0,432,2757,1,0,0,0,434,2764,1,0,0,0,436,2776,1,0,0,0,438,2789,1,0,0,0,440,2791,1,0,0,0,442,2800,1,0,0,0,444,2819,1,0,0,0,446,2825,1,0,0,0,448,2827,1,0,0,0,450,2862,1,0,0,0,452,2866,1,0,0,0,454,2868,1,0,0,0,456,2870,1,0,0,0,458,2873,1,0,0,0,460,2881,1,0,0,0,462,2885,1,0,0,0,464,2899,1,0,0,0,466,2911,1,0,0,0,468,2931,1,0,0,0,470,2933,1,0,0,0,472,2936,1,0,0,0,474,2940,1,0,0,0,476,2943,1,0,0,0,478,2946,1,0,0,0,480,2949,1,0,0,0,482,2953,1,0,0,0,484,2964,1,0,0,0,486,2968,1,0,0,0,488,2972,1,0,0,0,490,2976,1,0,0,0,492,2978,1,0,0,0,494,2986,1,0,0,0,496,2995,1,0,0,0,498,2998,1,0,0,0,500,3002,1,0,0,0,502,3004,1,0,0,0,504,3009,1,0,0,0,506,3014,1,0,0,0,508,3018,1,0,0,0,510,3035,1,0,0,0,512,3039,1,0,0,0,514,3056,1,0,0,0,516,3074,1,0,0,0,518,3097,1,0,0,0,520,3099,1,0,0,0,522,3108,1,0,0,0,524,3113,1,0,0,0,526,3120,1,0,0,0,528,3138,1,0,0,0,530,3140,1,0,0,0,532,3144,1,0,0,0,534,3148,1,0,0,0,536,3153,1,0,0,0,538,3165,1,0,0,0,540,3171,1,0,0,0,542,3184,1,0,0,0,544,3186,1,0,0,0,546,3199,1,0,0,0,548,3203,1,0,0,0,550,3213,1,0,0,0,552,3226,1,0,0,0,554,3228,1,0,0,0,556,3242,1,0,0,0,558,3245,1,0,0,0,560,3247,1,0,0,0,562,3250,1,0,0,0,564,3252,1,0,0,0,566,3257,1,0,0,0,568,3261,1,0,0,0,570,3266,1,0,0,0,572,3270,1,0,0,0,574,3276,1,0,0,0,576,3278,1,0,0,0,578,3280,1,0,0,0,580,3284,1,0,0,0,582,3287,1,0,0,0,584,3292,1,0,0,0,586,3312,1,0,0,0,588,3314,1,0,0,0,590,3318,1,0,0,0,592,3331,1,0,0,0,594,3344,1,0,0,0,596,3357,1,0,0,0,598,3372,1,0,0,0,600,3383,1,0,0,0,602,3385,1,0,0,0,604,3393,1,0,0,0,606,3395,1,0,0,0,608,3401,1,0,0,0,610,3403,1,0,0,0,612,3406,1,0,0,0,614,3422,1,0,0,0,616,3426,1,0,0,0,618,3428,1,0,0,0,620,3432,1,0,0,0,622,3445,1,0,0,0,624,3448,1,0,0,0,626,3457,1,0,0,0,628,3462,1,0,0,0,630,3476,1,0,0,0,632,3478,1,0,0,0,634,3483,1,0,0,0,636,3509,1,0,0,0,638,3511,1,0,0,0,640,3513,1,0,0,0,642,3515,1,0,0,0,644,3520,1,0,0,0,646,3526,1,0,0,0,648,3528,1,0,0,0,650,3532,1,0,0,0,652,3537,1,0,0,0,654,3544,1,0,0,0,656,3559,1,0,0,0,658,3580,1,0,0,0,660,3591,1,0,0,0,662,3595,1,0,0,0,664,3597,1,0,0,0,666,3602,1,0,0,0,668,3605,1,0,0,0,670,3608,1,0,0,0,672,3611,1,0,0,0,674,3617,1,0,0,0,676,3622,1,0,0,0,678,3635,1,0,0,0,680,3648,1,0,0,0,682,3650,1,0,0,0,684,3654,1,0,0,0,686,3662,1,0,0,0,688,3664,1,0,0,0,690,3677,1,0,0,0,692,3684,1,0,0,0,694,3691,1,0,0,0,696,3698,1,0,0,0,698,3705,1,0,0,0,700,3710,1,0,0,0,702,3715,1,0,0,0,704,3720,1,0,0,0,706,3730,1,0,0,0,708,3732,1,0,0,0,710,3734,1,0,0,0,712,3740,1,0,0,0,714,3742,1,0,0,0,716,3760,1,0,0,0,718,3777,1,0,0,0,720,3779,1,0,0,0,722,3781,1,0,0,0,724,3783,1,0,0,0,726,3785,1,0,0,0,728,3787,1,0,0,0,730,3792,1,0,0,0,732,3800,1,0,0,0,734,3805,1,0,0,0,736,3807,1,0,0,0,738,3809,1,0,0,0,740,3819,1,0,0,0,742,3830,1,0,0,0,744,3832,1,0,0,0,746,3838,1,0,0,0,748,3849,1,0,0,0,750,3851,1,0,0,0,752,3865,1,0,0,0,754,3873,1,0,0,0,756,3876,1,0,0,0,758,3881,1,0,0,0,760,3885,1,0,0,0,762,3889,1,0,0,0,764,3893,1,0,0,0,766,3900,1,0,0,0,768,3909,1,0,0,0,770,3927,1,0,0,0,772,3950,1,0,0,0,774,3952,1,0,0,0,776,3956,1,0,0,0,778,3960,1,0,0,0,780,3964,1,0,0,0,782,3979,1,0,0,0,784,3981,1,0,0,0,786,3984,1,0,0,0,788,3987,1,0,0,0,790,3990,1,0,0,0,792,3993,1,0,0,0,794,3996,1,0,0,0,796,3999,1,0,0,0,798,4016,1,0,0,0,800,4018,1,0,0,0,802,4035,1,0,0,0,804,4059,1,0,0,0,806,4090,1,0,0,0,808,4093,1,0,0,0,810,4095,1,0,0,0,812,4098,1,0,0,0,814,4106,1,0,0,0,816,4108,1,0,0,0,818,4119,1,0,0,0,820,4130,1,0,0,0,822,4141,1,0,0,0,824,4152,1,0,0,0,826,4154,1,0,0,0,828,4157,1,0,0,0,830,4159,1,0,0,0,832,4165,1,0,0,0,834,4175,1,0,0,0,836,4180,1,0,0,0,838,4188,1,0,0,0,840,4191,1,0,0,0,842,4196,1,0,0,0,844,4202,1,0,0,0,846,4207,1,0,0,0,848,4223,1,0,0,0,850,4228,1,0,0,0,852,4243,1,0,0,0,854,4252,1,0,0,0,856,4254,1,0,0,0,858,4257,1,0,0,0,860,4267,1,0,0,0,862,4272,1,0,0,0,864,4297,1,0,0,0,866,4300,1,0,0,0,868,4328,1,0,0,0,870,4330,1,0,0,0,872,4333,1,0,0,0,874,4342,1,0,0,0,876,4345,1,0,0,0,878,4354,1,0,0,0,880,4359,1,0,0,0,882,4386,1,0,0,0,884,4388,1,0,0,0,886,4390,1,0,0,0,888,4392,1,0,0,0,890,4394,1,0,0,0,892,4400,1,0,0,0,894,4405,1,0,0,0,896,4411,1,0,0,0,898,4428,1,0,0,0,900,4435,1,0,0,0,902,4437,1,0,0,0,904,4444,1,0,0,0,906,4450,1,0,0,0,908,4456,1,0,0,0,910,4461,1,0,0,0,912,4467,1,0,0,0,914,4472,1,0,0,0,916,4502,1,0,0,0,918,4504,1,0,0,0,920,4511,1,0,0,0,922,4517,1,0,0,0,924,4535,1,0,0,0,926,4550,1,0,0,0,928,4555,1,0,0,0,930,4557,1,0,0,0,932,4582,1,0,0,0,934,4584,1,0,0,0,936,4603,1,0,0,0,938,4609,1,0,0,0,940,4611,1,0,0,0,942,4618,1,0,0,0,944,4620,1,0,0,0,946,4622,1,0,0,0,948,4628,1,0,0,0,950,4633,1,0,0,0,952,4638,1,0,0,0,954,4643,1,0,0,0,956,4655,1,0,0,0,958,4660,1,0,0,0,960,4686,1,0,0,0,962,4690,1,0,0,0,964,4693,1,0,0,0,966,4708,1,0,0,0,968,4718,1,0,0,0,970,4728,1,0,0,0,972,4730,1,0,0,0,974,4738,1,0,0,0,976,4743,1,0,0,0,978,4745,1,0,0,0,980,4747,1,0,0,0,982,4749,1,0,0,0,984,4751,1,0,0,0,986,4753,1,0,0,0,988,4755,1,0,0,0,990,991,6,0,-1,0,991,992,5,77,0,0,992,993,3,0,0,0,993,994,5,209,0,0,994,995,3,0,0,0,995,996,5,55,0,0,996,997,3,0,0,28,997,1006,1,0,0,0,998,999,7,0,0,0,999,1006,3,0,0,14,1e3,1001,7,1,0,0,1001,1006,3,2,1,0,1002,1003,5,8,0,0,1003,1006,3,2,1,0,1004,1006,3,6,3,0,1005,990,1,0,0,0,1005,998,1,0,0,0,1005,1e3,1,0,0,0,1005,1002,1,0,0,0,1005,1004,1,0,0,0,1006,1088,1,0,0,0,1007,1008,10,27,0,0,1008,1009,5,190,0,0,1009,1087,3,0,0,28,1010,1011,10,26,0,0,1011,1012,5,78,0,0,1012,1087,3,0,0,27,1013,1014,10,25,0,0,1014,1015,5,112,0,0,1015,1087,3,0,0,26,1016,1017,10,24,0,0,1017,1018,5,12,0,0,1018,1087,3,0,0,25,1019,1020,10,23,0,0,1020,1021,5,173,0,0,1021,1087,3,0,0,24,1022,1023,10,22,0,0,1023,1024,5,215,0,0,1024,1087,3,0,0,23,1025,1026,10,21,0,0,1026,1027,5,195,0,0,1027,1087,3,0,0,22,1028,1029,10,20,0,0,1029,1030,7,2,0,0,1030,1087,3,0,0,21,1031,1032,10,19,0,0,1032,1033,7,3,0,0,1033,1087,3,0,0,20,1034,1035,10,18,0,0,1035,1036,5,181,0,0,1036,1087,3,0,0,19,1037,1038,10,17,0,0,1038,1039,7,4,0,0,1039,1087,3,0,0,18,1040,1041,10,16,0,0,1041,1042,7,5,0,0,1042,1087,3,0,0,17,1043,1044,10,15,0,0,1044,1045,7,6,0,0,1045,1087,3,0,0,15,1046,1047,10,12,0,0,1047,1048,7,7,0,0,1048,1087,3,2,1,0,1049,1050,10,11,0,0,1050,1051,5,13,0,0,1051,1087,3,2,1,0,1052,1053,10,10,0,0,1053,1054,5,191,0,0,1054,1087,3,2,1,0,1055,1056,10,9,0,0,1056,1057,5,100,0,0,1057,1087,3,2,1,0,1058,1059,10,8,0,0,1059,1061,5,211,0,0,1060,1062,3,4,2,0,1061,1060,1,0,0,0,1061,1062,1,0,0,0,1062,1063,1,0,0,0,1063,1087,5,212,0,0,1064,1065,10,7,0,0,1065,1066,5,192,0,0,1066,1068,5,196,0,0,1067,1069,3,4,2,0,1068,1067,1,0,0,0,1068,1069,1,0,0,0,1069,1070,1,0,0,0,1070,1087,5,197,0,0,1071,1072,10,6,0,0,1072,1087,3,20,10,0,1073,1074,10,5,0,0,1074,1075,5,202,0,0,1075,1087,3,90,45,0,1076,1077,10,4,0,0,1077,1078,5,182,0,0,1078,1087,3,18,9,0,1079,1080,10,3,0,0,1080,1081,5,180,0,0,1081,1084,3,90,45,0,1082,1085,3,18,9,0,1083,1085,3,20,10,0,1084,1082,1,0,0,0,1084,1083,1,0,0,0,1085,1087,1,0,0,0,1086,1007,1,0,0,0,1086,1010,1,0,0,0,1086,1013,1,0,0,0,1086,1016,1,0,0,0,1086,1019,1,0,0,0,1086,1022,1,0,0,0,1086,1025,1,0,0,0,1086,1028,1,0,0,0,1086,1031,1,0,0,0,1086,1034,1,0,0,0,1086,1037,1,0,0,0,1086,1040,1,0,0,0,1086,1043,1,0,0,0,1086,1046,1,0,0,0,1086,1049,1,0,0,0,1086,1052,1,0,0,0,1086,1055,1,0,0,0,1086,1058,1,0,0,0,1086,1064,1,0,0,0,1086,1071,1,0,0,0,1086,1073,1,0,0,0,1086,1076,1,0,0,0,1086,1079,1,0,0,0,1087,1090,1,0,0,0,1088,1086,1,0,0,0,1088,1089,1,0,0,0,1089,1,1,0,0,0,1090,1088,1,0,0,0,1091,1092,3,90,45,0,1092,3,1,0,0,0,1093,1098,3,0,0,0,1094,1095,5,200,0,0,1095,1097,3,0,0,0,1096,1094,1,0,0,0,1097,1100,1,0,0,0,1098,1096,1,0,0,0,1098,1099,1,0,0,0,1099,5,1,0,0,0,1100,1098,1,0,0,0,1101,1117,3,8,4,0,1102,1117,3,28,14,0,1103,1107,3,90,45,0,1104,1108,3,20,10,0,1105,1106,5,202,0,0,1106,1108,5,102,0,0,1107,1104,1,0,0,0,1107,1105,1,0,0,0,1107,1108,1,0,0,0,1108,1117,1,0,0,0,1109,1117,3,16,8,0,1110,1117,3,18,9,0,1111,1113,5,196,0,0,1112,1114,3,4,2,0,1113,1112,1,0,0,0,1113,1114,1,0,0,0,1114,1115,1,0,0,0,1115,1117,5,197,0,0,1116,1101,1,0,0,0,1116,1102,1,0,0,0,1116,1103,1,0,0,0,1116,1109,1,0,0,0,1116,1110,1,0,0,0,1116,1111,1,0,0,0,1117,7,1,0,0,0,1118,1122,5,108,0,0,1119,1120,5,196,0,0,1120,1122,5,197,0,0,1121,1118,1,0,0,0,1121,1119,1,0,0,0,1122,9,1,0,0,0,1123,1124,3,90,45,0,1124,11,1,0,0,0,1125,1126,3,90,45,0,1126,1127,5,202,0,0,1127,1128,5,102,0,0,1128,13,1,0,0,0,1129,1130,3,90,45,0,1130,1131,3,20,10,0,1131,15,1,0,0,0,1132,1133,5,105,0,0,1133,1134,3,90,45,0,1134,1135,3,20,10,0,1135,17,1,0,0,0,1136,1137,5,214,0,0,1137,1138,3,292,146,0,1138,1139,5,216,0,0,1139,19,1,0,0,0,1140,1143,5,196,0,0,1141,1144,3,22,11,0,1142,1144,3,24,12,0,1143,1141,1,0,0,0,1143,1142,1,0,0,0,1143,1144,1,0,0,0,1144,1145,1,0,0,0,1145,1146,5,197,0,0,1146,21,1,0,0,0,1147,1152,3,0,0,0,1148,1149,5,200,0,0,1149,1151,3,0,0,0,1150,1148,1,0,0,0,1151,1154,1,0,0,0,1152,1150,1,0,0,0,1152,1153,1,0,0,0,1153,23,1,0,0,0,1154,1152,1,0,0,0,1155,1160,3,26,13,0,1156,1157,5,200,0,0,1157,1159,3,26,13,0,1158,1156,1,0,0,0,1159,1162,1,0,0,0,1160,1158,1,0,0,0,1160,1161,1,0,0,0,1161,25,1,0,0,0,1162,1160,1,0,0,0,1163,1164,3,90,45,0,1164,1165,5,207,0,0,1165,1166,3,0,0,0,1166,27,1,0,0,0,1167,1173,3,30,15,0,1168,1173,3,32,16,0,1169,1173,3,34,17,0,1170,1173,3,36,18,0,1171,1173,3,38,19,0,1172,1167,1,0,0,0,1172,1168,1,0,0,0,1172,1169,1,0,0,0,1172,1170,1,0,0,0,1172,1171,1,0,0,0,1173,29,1,0,0,0,1174,1175,7,8,0,0,1175,31,1,0,0,0,1176,1177,5,220,0,0,1177,33,1,0,0,0,1178,1179,5,221,0,0,1179,35,1,0,0,0,1180,1181,5,222,0,0,1181,37,1,0,0,0,1182,1183,5,198,0,0,1183,39,1,0,0,0,1184,1185,3,0,0,0,1185,41,1,0,0,0,1186,1187,3,0,0,0,1187,43,1,0,0,0,1188,1189,7,9,0,0,1189,45,1,0,0,0,1190,1191,5,206,0,0,1191,1192,3,44,22,0,1192,1193,5,208,0,0,1193,1194,3,44,22,0,1194,1201,1,0,0,0,1195,1196,5,206,0,0,1196,1197,3,44,22,0,1197,1198,5,208,0,0,1198,1201,1,0,0,0,1199,1201,3,44,22,0,1200,1190,1,0,0,0,1200,1195,1,0,0,0,1200,1199,1,0,0,0,1201,47,1,0,0,0,1202,1220,5,205,0,0,1203,1207,5,214,0,0,1204,1206,3,50,25,0,1205,1204,1,0,0,0,1206,1209,1,0,0,0,1207,1205,1,0,0,0,1207,1208,1,0,0,0,1208,1210,1,0,0,0,1209,1207,1,0,0,0,1210,1220,5,216,0,0,1211,1215,5,214,0,0,1212,1214,3,58,29,0,1213,1212,1,0,0,0,1214,1217,1,0,0,0,1215,1213,1,0,0,0,1215,1216,1,0,0,0,1216,1218,1,0,0,0,1217,1215,1,0,0,0,1218,1220,5,216,0,0,1219,1202,1,0,0,0,1219,1203,1,0,0,0,1219,1211,1,0,0,0,1220,49,1,0,0,0,1221,1224,3,52,26,0,1222,1224,3,58,29,0,1223,1221,1,0,0,0,1223,1222,1,0,0,0,1224,51,1,0,0,0,1225,1228,3,106,53,0,1226,1228,3,108,54,0,1227,1225,1,0,0,0,1227,1226,1,0,0,0,1228,53,1,0,0,0,1229,1231,3,414,207,0,1230,1229,1,0,0,0,1231,1234,1,0,0,0,1232,1230,1,0,0,0,1232,1233,1,0,0,0,1233,1235,1,0,0,0,1234,1232,1,0,0,0,1235,1240,5,48,0,0,1236,1238,3,46,23,0,1237,1236,1,0,0,0,1237,1238,1,0,0,0,1238,1239,1,0,0,0,1239,1241,5,74,0,0,1240,1237,1,0,0,0,1240,1241,1,0,0,0,1241,1242,1,0,0,0,1242,1247,3,90,45,0,1243,1244,5,200,0,0,1244,1246,3,90,45,0,1245,1243,1,0,0,0,1246,1249,1,0,0,0,1247,1245,1,0,0,0,1247,1248,1,0,0,0,1248,1250,1,0,0,0,1249,1247,1,0,0,0,1250,1251,5,154,0,0,1251,1256,3,90,45,0,1252,1253,5,200,0,0,1253,1255,3,90,45,0,1254,1252,1,0,0,0,1255,1258,1,0,0,0,1256,1254,1,0,0,0,1256,1257,1,0,0,0,1257,1259,1,0,0,0,1258,1256,1,0,0,0,1259,1260,3,48,24,0,1260,1272,1,0,0,0,1261,1263,3,414,207,0,1262,1261,1,0,0,0,1263,1266,1,0,0,0,1264,1262,1,0,0,0,1264,1265,1,0,0,0,1265,1267,1,0,0,0,1266,1264,1,0,0,0,1267,1268,5,48,0,0,1268,1269,3,442,221,0,1269,1270,3,48,24,0,1270,1272,1,0,0,0,1271,1232,1,0,0,0,1271,1264,1,0,0,0,1272,55,1,0,0,0,1273,1274,3,90,45,0,1274,57,1,0,0,0,1275,1276,3,60,30,0,1276,59,1,0,0,0,1277,1282,3,62,31,0,1278,1282,3,64,32,0,1279,1282,3,66,33,0,1280,1282,3,420,210,0,1281,1277,1,0,0,0,1281,1278,1,0,0,0,1281,1279,1,0,0,0,1281,1280,1,0,0,0,1282,61,1,0,0,0,1283,1285,5,30,0,0,1284,1286,3,46,23,0,1285,1284,1,0,0,0,1285,1286,1,0,0,0,1286,1296,1,0,0,0,1287,1288,5,1,0,0,1288,1293,3,56,28,0,1289,1290,5,200,0,0,1290,1292,3,56,28,0,1291,1289,1,0,0,0,1292,1295,1,0,0,0,1293,1291,1,0,0,0,1293,1294,1,0,0,0,1294,1297,1,0,0,0,1295,1293,1,0,0,0,1296,1287,1,0,0,0,1296,1297,1,0,0,0,1297,1299,1,0,0,0,1298,1283,1,0,0,0,1298,1299,1,0,0,0,1299,1302,1,0,0,0,1300,1301,5,95,0,0,1301,1303,5,220,0,0,1302,1300,1,0,0,0,1302,1303,1,0,0,0,1303,1304,1,0,0,0,1304,1305,5,223,0,0,1305,63,1,0,0,0,1306,1308,5,54,0,0,1307,1309,3,46,23,0,1308,1307,1,0,0,0,1308,1309,1,0,0,0,1309,1312,1,0,0,0,1310,1311,5,95,0,0,1311,1313,5,220,0,0,1312,1310,1,0,0,0,1312,1313,1,0,0,0,1313,1314,1,0,0,0,1314,1315,5,223,0,0,1315,65,1,0,0,0,1316,1318,5,131,0,0,1317,1319,3,46,23,0,1318,1317,1,0,0,0,1318,1319,1,0,0,0,1319,1321,1,0,0,0,1320,1316,1,0,0,0,1320,1321,1,0,0,0,1321,1322,1,0,0,0,1322,1323,5,93,0,0,1323,1324,5,220,0,0,1324,1325,5,223,0,0,1325,67,1,0,0,0,1326,1328,3,446,223,0,1327,1326,1,0,0,0,1328,1331,1,0,0,0,1329,1327,1,0,0,0,1329,1330,1,0,0,0,1330,1332,1,0,0,0,1331,1329,1,0,0,0,1332,1333,5,0,0,1,1333,69,1,0,0,0,1334,1336,3,416,208,0,1335,1334,1,0,0,0,1336,1339,1,0,0,0,1337,1335,1,0,0,0,1337,1338,1,0,0,0,1338,1340,1,0,0,0,1339,1337,1,0,0,0,1340,1341,3,72,36,0,1341,1342,3,74,37,0,1342,71,1,0,0,0,1343,1345,5,104,0,0,1344,1346,3,46,23,0,1345,1344,1,0,0,0,1345,1346,1,0,0,0,1346,73,1,0,0,0,1347,1357,5,205,0,0,1348,1352,5,214,0,0,1349,1351,3,76,38,0,1350,1349,1,0,0,0,1351,1354,1,0,0,0,1352,1350,1,0,0,0,1352,1353,1,0,0,0,1353,1355,1,0,0,0,1354,1352,1,0,0,0,1355,1357,5,216,0,0,1356,1347,1,0,0,0,1356,1348,1,0,0,0,1357,75,1,0,0,0,1358,1362,3,82,41,0,1359,1362,3,88,44,0,1360,1362,3,92,46,0,1361,1358,1,0,0,0,1361,1359,1,0,0,0,1361,1360,1,0,0,0,1362,77,1,0,0,0,1363,1365,3,80,40,0,1364,1363,1,0,0,0,1364,1365,1,0,0,0,1365,79,1,0,0,0,1366,1367,7,10,0,0,1367,81,1,0,0,0,1368,1371,3,84,42,0,1369,1371,3,86,43,0,1370,1368,1,0,0,0,1370,1369,1,0,0,0,1371,83,1,0,0,0,1372,1373,3,78,39,0,1373,1374,3,104,52,0,1374,85,1,0,0,0,1375,1376,3,78,39,0,1376,1377,3,108,54,0,1377,87,1,0,0,0,1378,1379,3,78,39,0,1379,1384,5,7,0,0,1380,1381,5,206,0,0,1381,1382,3,44,22,0,1382,1383,5,208,0,0,1383,1385,1,0,0,0,1384,1380,1,0,0,0,1384,1385,1,0,0,0,1385,1387,1,0,0,0,1386,1388,3,44,22,0,1387,1386,1,0,0,0,1387,1388,1,0,0,0,1388,1389,1,0,0,0,1389,1390,5,71,0,0,1390,1391,3,90,45,0,1391,1392,3,48,24,0,1392,89,1,0,0,0,1393,1394,5,193,0,0,1394,1396,5,183,0,0,1395,1393,1,0,0,0,1395,1396,1,0,0,0,1396,1402,1,0,0,0,1397,1398,3,44,22,0,1398,1399,5,183,0,0,1399,1401,1,0,0,0,1400,1397,1,0,0,0,1401,1404,1,0,0,0,1402,1400,1,0,0,0,1402,1403,1,0,0,0,1403,1405,1,0,0,0,1404,1402,1,0,0,0,1405,1406,3,44,22,0,1406,91,1,0,0,0,1407,1409,3,80,40,0,1408,1407,1,0,0,0,1408,1409,1,0,0,0,1409,1410,1,0,0,0,1410,1412,5,79,0,0,1411,1413,5,8,0,0,1412,1411,1,0,0,0,1412,1413,1,0,0,0,1413,1414,1,0,0,0,1414,1415,3,94,47,0,1415,1416,3,48,24,0,1416,93,1,0,0,0,1417,1420,3,96,48,0,1418,1420,3,98,49,0,1419,1417,1,0,0,0,1419,1418,1,0,0,0,1420,95,1,0,0,0,1421,1424,3,90,45,0,1422,1423,5,183,0,0,1423,1425,5,179,0,0,1424,1422,1,0,0,0,1424,1425,1,0,0,0,1425,97,1,0,0,0,1426,1427,3,90,45,0,1427,1428,5,183,0,0,1428,1431,5,198,0,0,1429,1430,5,183,0,0,1430,1432,5,179,0,0,1431,1429,1,0,0,0,1431,1432,1,0,0,0,1432,1435,1,0,0,0,1433,1435,3,100,50,0,1434,1426,1,0,0,0,1434,1433,1,0,0,0,1435,99,1,0,0,0,1436,1438,3,970,485,0,1437,1439,3,102,51,0,1438,1437,1,0,0,0,1439,1440,1,0,0,0,1440,1438,1,0,0,0,1440,1441,1,0,0,0,1441,1449,1,0,0,0,1442,1444,3,984,492,0,1443,1445,3,102,51,0,1444,1443,1,0,0,0,1445,1446,1,0,0,0,1446,1444,1,0,0,0,1446,1447,1,0,0,0,1447,1449,1,0,0,0,1448,1436,1,0,0,0,1448,1442,1,0,0,0,1449,101,1,0,0,0,1450,1451,5,211,0,0,1451,1452,3,0,0,0,1452,1453,5,212,0,0,1453,103,1,0,0,0,1454,1457,3,60,30,0,1455,1457,3,106,53,0,1456,1454,1,0,0,0,1456,1455,1,0,0,0,1457,105,1,0,0,0,1458,1485,3,54,27,0,1459,1485,3,70,35,0,1460,1485,3,110,55,0,1461,1485,3,162,81,0,1462,1485,3,250,125,0,1463,1485,3,252,126,0,1464,1485,3,254,127,0,1465,1485,3,412,206,0,1466,1485,3,256,128,0,1467,1485,3,258,129,0,1468,1485,3,370,185,0,1469,1485,3,284,142,0,1470,1485,3,288,144,0,1471,1485,3,300,150,0,1472,1485,3,398,199,0,1473,1485,3,432,216,0,1474,1485,3,434,217,0,1475,1485,3,134,67,0,1476,1485,3,142,71,0,1477,1485,3,168,84,0,1478,1485,3,146,73,0,1479,1485,3,242,121,0,1480,1485,3,220,110,0,1481,1485,3,224,112,0,1482,1485,3,232,116,0,1483,1485,3,246,123,0,1484,1458,1,0,0,0,1484,1459,1,0,0,0,1484,1460,1,0,0,0,1484,1461,1,0,0,0,1484,1462,1,0,0,0,1484,1463,1,0,0,0,1484,1464,1,0,0,0,1484,1465,1,0,0,0,1484,1466,1,0,0,0,1484,1467,1,0,0,0,1484,1468,1,0,0,0,1484,1469,1,0,0,0,1484,1470,1,0,0,0,1484,1471,1,0,0,0,1484,1472,1,0,0,0,1484,1473,1,0,0,0,1484,1474,1,0,0,0,1484,1475,1,0,0,0,1484,1476,1,0,0,0,1484,1477,1,0,0,0,1484,1478,1,0,0,0,1484,1479,1,0,0,0,1484,1480,1,0,0,0,1484,1481,1,0,0,0,1484,1482,1,0,0,0,1484,1483,1,0,0,0,1485,107,1,0,0,0,1486,1497,3,172,86,0,1487,1497,3,286,143,0,1488,1497,3,298,149,0,1489,1497,3,302,151,0,1490,1497,3,304,152,0,1491,1497,3,260,130,0,1492,1497,3,276,138,0,1493,1497,3,280,140,0,1494,1497,3,372,186,0,1495,1497,3,374,187,0,1496,1486,1,0,0,0,1496,1487,1,0,0,0,1496,1488,1,0,0,0,1496,1489,1,0,0,0,1496,1490,1,0,0,0,1496,1491,1,0,0,0,1496,1492,1,0,0,0,1496,1493,1,0,0,0,1496,1494,1,0,0,0,1496,1495,1,0,0,0,1497,109,1,0,0,0,1498,1499,3,112,56,0,1499,1500,5,157,0,0,1500,1501,3,114,57,0,1501,1502,3,130,65,0,1502,111,1,0,0,0,1503,1505,5,2,0,0,1504,1503,1,0,0,0,1504,1505,1,0,0,0,1505,1509,1,0,0,0,1506,1508,3,416,208,0,1507,1506,1,0,0,0,1508,1511,1,0,0,0,1509,1507,1,0,0,0,1509,1510,1,0,0,0,1510,113,1,0,0,0,1511,1509,1,0,0,0,1512,1514,5,8,0,0,1513,1512,1,0,0,0,1513,1514,1,0,0,0,1514,1516,1,0,0,0,1515,1517,3,46,23,0,1516,1515,1,0,0,0,1516,1517,1,0,0,0,1517,1519,1,0,0,0,1518,1520,3,404,202,0,1519,1518,1,0,0,0,1519,1520,1,0,0,0,1520,1523,1,0,0,0,1521,1524,3,116,58,0,1522,1524,3,118,59,0,1523,1521,1,0,0,0,1523,1522,1,0,0,0,1524,1525,1,0,0,0,1525,1523,1,0,0,0,1525,1526,1,0,0,0,1526,1530,1,0,0,0,1527,1529,3,120,60,0,1528,1527,1,0,0,0,1529,1532,1,0,0,0,1530,1528,1,0,0,0,1530,1531,1,0,0,0,1531,115,1,0,0,0,1532,1530,1,0,0,0,1533,1534,7,11,0,0,1534,1539,3,136,68,0,1535,1536,5,200,0,0,1536,1538,3,136,68,0,1537,1535,1,0,0,0,1538,1541,1,0,0,0,1539,1537,1,0,0,0,1539,1540,1,0,0,0,1540,117,1,0,0,0,1541,1539,1,0,0,0,1542,1543,7,12,0,0,1543,1544,3,144,72,0,1544,119,1,0,0,0,1545,1550,3,122,61,0,1546,1550,3,124,62,0,1547,1550,3,126,63,0,1548,1550,3,128,64,0,1549,1545,1,0,0,0,1549,1546,1,0,0,0,1549,1547,1,0,0,0,1549,1548,1,0,0,0,1550,121,1,0,0,0,1551,1552,5,52,0,0,1552,1553,5,74,0,0,1553,1558,3,148,74,0,1554,1555,5,200,0,0,1555,1557,3,148,74,0,1556,1554,1,0,0,0,1557,1560,1,0,0,0,1558,1556,1,0,0,0,1558,1559,1,0,0,0,1559,123,1,0,0,0,1560,1558,1,0,0,0,1561,1562,5,160,0,0,1562,1567,3,150,75,0,1563,1564,5,200,0,0,1564,1566,3,150,75,0,1565,1563,1,0,0,0,1566,1569,1,0,0,0,1567,1565,1,0,0,0,1567,1568,1,0,0,0,1568,125,1,0,0,0,1569,1567,1,0,0,0,1570,1571,5,86,0,0,1571,1576,3,152,76,0,1572,1573,5,200,0,0,1573,1575,3,152,76,0,1574,1572,1,0,0,0,1575,1578,1,0,0,0,1576,1574,1,0,0,0,1576,1577,1,0,0,0,1577,127,1,0,0,0,1578,1576,1,0,0,0,1579,1580,5,50,0,0,1580,1585,3,154,77,0,1581,1582,5,200,0,0,1582,1584,3,154,77,0,1583,1581,1,0,0,0,1584,1587,1,0,0,0,1585,1583,1,0,0,0,1585,1586,1,0,0,0,1586,129,1,0,0,0,1587,1585,1,0,0,0,1588,1598,5,205,0,0,1589,1593,5,214,0,0,1590,1592,3,132,66,0,1591,1590,1,0,0,0,1592,1595,1,0,0,0,1593,1591,1,0,0,0,1593,1594,1,0,0,0,1594,1596,1,0,0,0,1595,1593,1,0,0,0,1596,1598,5,216,0,0,1597,1588,1,0,0,0,1597,1589,1,0,0,0,1598,131,1,0,0,0,1599,1604,3,84,42,0,1600,1604,3,156,78,0,1601,1604,3,88,44,0,1602,1604,3,92,46,0,1603,1599,1,0,0,0,1603,1600,1,0,0,0,1603,1601,1,0,0,0,1603,1602,1,0,0,0,1604,133,1,0,0,0,1605,1607,5,138,0,0,1606,1608,3,46,23,0,1607,1606,1,0,0,0,1607,1608,1,0,0,0,1608,1610,1,0,0,0,1609,1605,1,0,0,0,1609,1610,1,0,0,0,1610,1611,1,0,0,0,1611,1612,5,149,0,0,1612,1613,3,138,69,0,1613,1614,7,11,0,0,1614,1615,3,140,70,0,1615,1616,3,48,24,0,1616,135,1,0,0,0,1617,1618,3,140,70,0,1618,137,1,0,0,0,1619,1624,3,90,45,0,1620,1621,5,202,0,0,1621,1623,3,90,45,0,1622,1620,1,0,0,0,1623,1626,1,0,0,0,1624,1622,1,0,0,0,1624,1625,1,0,0,0,1625,139,1,0,0,0,1626,1624,1,0,0,0,1627,1632,3,90,45,0,1628,1629,5,202,0,0,1629,1631,3,90,45,0,1630,1628,1,0,0,0,1631,1634,1,0,0,0,1632,1630,1,0,0,0,1632,1633,1,0,0,0,1633,141,1,0,0,0,1634,1632,1,0,0,0,1635,1637,5,35,0,0,1636,1638,3,46,23,0,1637,1636,1,0,0,0,1637,1638,1,0,0,0,1638,1640,1,0,0,0,1639,1635,1,0,0,0,1639,1640,1,0,0,0,1640,1641,1,0,0,0,1641,1642,5,33,0,0,1642,1647,3,90,45,0,1643,1644,5,202,0,0,1644,1646,3,90,45,0,1645,1643,1,0,0,0,1646,1649,1,0,0,0,1647,1645,1,0,0,0,1647,1648,1,0,0,0,1648,1650,1,0,0,0,1649,1647,1,0,0,0,1650,1651,7,12,0,0,1651,1656,3,90,45,0,1652,1653,5,202,0,0,1653,1655,3,90,45,0,1654,1652,1,0,0,0,1655,1658,1,0,0,0,1656,1654,1,0,0,0,1656,1657,1,0,0,0,1657,1659,1,0,0,0,1658,1656,1,0,0,0,1659,1660,3,48,24,0,1660,143,1,0,0,0,1661,1666,3,90,45,0,1662,1663,5,202,0,0,1663,1665,3,90,45,0,1664,1662,1,0,0,0,1665,1668,1,0,0,0,1666,1664,1,0,0,0,1666,1667,1,0,0,0,1667,145,1,0,0,0,1668,1666,1,0,0,0,1669,1671,5,51,0,0,1670,1672,3,46,23,0,1671,1670,1,0,0,0,1671,1672,1,0,0,0,1672,1674,1,0,0,0,1673,1669,1,0,0,0,1673,1674,1,0,0,0,1674,1675,1,0,0,0,1675,1676,5,52,0,0,1676,1681,3,90,45,0,1677,1678,5,202,0,0,1678,1680,3,90,45,0,1679,1677,1,0,0,0,1680,1683,1,0,0,0,1681,1679,1,0,0,0,1681,1682,1,0,0,0,1682,1684,1,0,0,0,1683,1681,1,0,0,0,1684,1685,5,74,0,0,1685,1690,3,90,45,0,1686,1687,5,202,0,0,1687,1689,3,90,45,0,1688,1686,1,0,0,0,1689,1692,1,0,0,0,1690,1688,1,0,0,0,1690,1691,1,0,0,0,1691,1693,1,0,0,0,1692,1690,1,0,0,0,1693,1694,3,48,24,0,1694,147,1,0,0,0,1695,1700,3,90,45,0,1696,1697,5,202,0,0,1697,1699,3,90,45,0,1698,1696,1,0,0,0,1699,1702,1,0,0,0,1700,1698,1,0,0,0,1700,1701,1,0,0,0,1701,149,1,0,0,0,1702,1700,1,0,0,0,1703,1708,3,90,45,0,1704,1705,5,202,0,0,1705,1707,3,90,45,0,1706,1704,1,0,0,0,1707,1710,1,0,0,0,1708,1706,1,0,0,0,1708,1709,1,0,0,0,1709,151,1,0,0,0,1710,1708,1,0,0,0,1711,1716,3,90,45,0,1712,1713,5,202,0,0,1713,1715,3,90,45,0,1714,1712,1,0,0,0,1715,1718,1,0,0,0,1716,1714,1,0,0,0,1716,1717,1,0,0,0,1717,153,1,0,0,0,1718,1716,1,0,0,0,1719,1724,3,90,45,0,1720,1721,5,202,0,0,1721,1723,3,90,45,0,1722,1720,1,0,0,0,1723,1726,1,0,0,0,1724,1722,1,0,0,0,1724,1725,1,0,0,0,1725,155,1,0,0,0,1726,1724,1,0,0,0,1727,1730,3,158,79,0,1728,1730,3,160,80,0,1729,1727,1,0,0,0,1729,1728,1,0,0,0,1730,157,1,0,0,0,1731,1732,3,78,39,0,1732,1733,5,97,0,0,1733,1734,3,108,54,0,1734,159,1,0,0,0,1735,1736,3,78,39,0,1736,1737,3,108,54,0,1737,161,1,0,0,0,1738,1739,3,112,56,0,1739,1740,5,29,0,0,1740,1741,3,164,82,0,1741,1742,3,130,65,0,1742,163,1,0,0,0,1743,1745,5,8,0,0,1744,1743,1,0,0,0,1744,1745,1,0,0,0,1745,1747,1,0,0,0,1746,1748,3,46,23,0,1747,1746,1,0,0,0,1747,1748,1,0,0,0,1748,1750,1,0,0,0,1749,1751,3,404,202,0,1750,1749,1,0,0,0,1750,1751,1,0,0,0,1751,1754,1,0,0,0,1752,1755,3,166,83,0,1753,1755,3,118,59,0,1754,1752,1,0,0,0,1754,1753,1,0,0,0,1754,1755,1,0,0,0,1755,1759,1,0,0,0,1756,1758,3,120,60,0,1757,1756,1,0,0,0,1758,1761,1,0,0,0,1759,1757,1,0,0,0,1759,1760,1,0,0,0,1760,165,1,0,0,0,1761,1759,1,0,0,0,1762,1763,7,11,0,0,1763,1768,3,170,85,0,1764,1765,5,200,0,0,1765,1767,3,170,85,0,1766,1764,1,0,0,0,1767,1770,1,0,0,0,1768,1766,1,0,0,0,1768,1769,1,0,0,0,1769,167,1,0,0,0,1770,1768,1,0,0,0,1771,1773,5,138,0,0,1772,1774,3,46,23,0,1773,1772,1,0,0,0,1773,1774,1,0,0,0,1774,1776,1,0,0,0,1775,1771,1,0,0,0,1775,1776,1,0,0,0,1776,1777,1,0,0,0,1777,1778,5,145,0,0,1778,1779,3,90,45,0,1779,1780,7,11,0,0,1780,1781,3,90,45,0,1781,1782,3,48,24,0,1782,169,1,0,0,0,1783,1784,3,90,45,0,1784,171,1,0,0,0,1785,1788,3,178,89,0,1786,1789,5,65,0,0,1787,1789,3,416,208,0,1788,1786,1,0,0,0,1788,1787,1,0,0,0,1789,1791,1,0,0,0,1790,1792,3,186,93,0,1791,1790,1,0,0,0,1791,1792,1,0,0,0,1792,1800,1,0,0,0,1793,1796,3,174,87,0,1794,1796,3,176,88,0,1795,1793,1,0,0,0,1795,1794,1,0,0,0,1796,1797,1,0,0,0,1797,1798,3,186,93,0,1798,1800,1,0,0,0,1799,1785,1,0,0,0,1799,1795,1,0,0,0,1800,1802,1,0,0,0,1801,1803,3,394,197,0,1802,1801,1,0,0,0,1802,1803,1,0,0,0,1803,1804,1,0,0,0,1804,1805,3,130,65,0,1805,173,1,0,0,0,1806,1808,5,39,0,0,1807,1806,1,0,0,0,1807,1808,1,0,0,0,1808,1809,1,0,0,0,1809,1810,5,56,0,0,1810,175,1,0,0,0,1811,1813,3,184,92,0,1812,1811,1,0,0,0,1812,1813,1,0,0,0,1813,1815,1,0,0,0,1814,1816,5,49,0,0,1815,1814,1,0,0,0,1815,1816,1,0,0,0,1816,1818,1,0,0,0,1817,1819,5,2,0,0,1818,1817,1,0,0,0,1818,1819,1,0,0,0,1819,1821,1,0,0,0,1820,1822,7,13,0,0,1821,1820,1,0,0,0,1821,1822,1,0,0,0,1822,1824,1,0,0,0,1823,1825,7,14,0,0,1824,1823,1,0,0,0,1824,1825,1,0,0,0,1825,177,1,0,0,0,1826,1828,3,174,87,0,1827,1829,3,180,90,0,1828,1827,1,0,0,0,1828,1829,1,0,0,0,1829,1832,1,0,0,0,1830,1832,3,176,88,0,1831,1826,1,0,0,0,1831,1830,1,0,0,0,1832,1836,1,0,0,0,1833,1835,3,416,208,0,1834,1833,1,0,0,0,1835,1838,1,0,0,0,1836,1834,1,0,0,0,1836,1837,1,0,0,0,1837,179,1,0,0,0,1838,1836,1,0,0,0,1839,1840,3,182,91,0,1840,181,1,0,0,0,1841,1842,3,176,88,0,1842,1843,3,186,93,0,1843,1849,1,0,0,0,1844,1846,3,484,242,0,1845,1847,3,496,248,0,1846,1845,1,0,0,0,1846,1847,1,0,0,0,1847,1849,1,0,0,0,1848,1841,1,0,0,0,1848,1844,1,0,0,0,1849,183,1,0,0,0,1850,1851,7,15,0,0,1851,185,1,0,0,0,1852,1854,5,8,0,0,1853,1852,1,0,0,0,1853,1854,1,0,0,0,1854,1862,1,0,0,0,1855,1858,3,188,94,0,1856,1859,3,198,99,0,1857,1859,3,118,59,0,1858,1856,1,0,0,0,1858,1857,1,0,0,0,1858,1859,1,0,0,0,1859,1863,1,0,0,0,1860,1863,3,198,99,0,1861,1863,3,118,59,0,1862,1855,1,0,0,0,1862,1860,1,0,0,0,1862,1861,1,0,0,0,1863,1867,1,0,0,0,1864,1866,3,190,95,0,1865,1864,1,0,0,0,1866,1869,1,0,0,0,1867,1865,1,0,0,0,1867,1868,1,0,0,0,1868,187,1,0,0,0,1869,1867,1,0,0,0,1870,1871,5,206,0,0,1871,1872,3,44,22,0,1872,1874,5,208,0,0,1873,1875,3,44,22,0,1874,1873,1,0,0,0,1874,1875,1,0,0,0,1875,1878,1,0,0,0,1876,1878,3,44,22,0,1877,1870,1,0,0,0,1877,1876,1,0,0,0,1878,189,1,0,0,0,1879,1884,3,120,60,0,1880,1884,3,192,96,0,1881,1884,3,194,97,0,1882,1884,3,196,98,0,1883,1879,1,0,0,0,1883,1880,1,0,0,0,1883,1881,1,0,0,0,1883,1882,1,0,0,0,1884,191,1,0,0,0,1885,1886,5,27,0,0,1886,1891,3,90,45,0,1887,1888,5,202,0,0,1888,1890,3,90,45,0,1889,1887,1,0,0,0,1890,1893,1,0,0,0,1891,1889,1,0,0,0,1891,1892,1,0,0,0,1892,193,1,0,0,0,1893,1891,1,0,0,0,1894,1895,5,88,0,0,1895,1896,5,111,0,0,1896,1897,3,244,122,0,1897,195,1,0,0,0,1898,1899,5,66,0,0,1899,1900,5,24,0,0,1900,1905,3,248,124,0,1901,1902,5,200,0,0,1902,1904,3,248,124,0,1903,1901,1,0,0,0,1904,1907,1,0,0,0,1905,1903,1,0,0,0,1905,1906,1,0,0,0,1906,197,1,0,0,0,1907,1905,1,0,0,0,1908,1910,3,202,101,0,1909,1908,1,0,0,0,1910,1911,1,0,0,0,1911,1909,1,0,0,0,1911,1912,1,0,0,0,1912,1914,1,0,0,0,1913,1915,3,200,100,0,1914,1913,1,0,0,0,1914,1915,1,0,0,0,1915,1919,1,0,0,0,1916,1918,3,202,101,0,1917,1916,1,0,0,0,1918,1921,1,0,0,0,1919,1917,1,0,0,0,1919,1920,1,0,0,0,1920,1930,1,0,0,0,1921,1919,1,0,0,0,1922,1926,3,200,100,0,1923,1925,3,202,101,0,1924,1923,1,0,0,0,1925,1928,1,0,0,0,1926,1924,1,0,0,0,1926,1927,1,0,0,0,1927,1930,1,0,0,0,1928,1926,1,0,0,0,1929,1909,1,0,0,0,1929,1922,1,0,0,0,1930,199,1,0,0,0,1931,1940,3,404,202,0,1932,1934,5,113,0,0,1933,1935,5,106,0,0,1934,1933,1,0,0,0,1934,1935,1,0,0,0,1935,1941,1,0,0,0,1936,1938,5,106,0,0,1937,1939,5,113,0,0,1938,1937,1,0,0,0,1938,1939,1,0,0,0,1939,1941,1,0,0,0,1940,1932,1,0,0,0,1940,1936,1,0,0,0,1940,1941,1,0,0,0,1941,1953,1,0,0,0,1942,1944,5,113,0,0,1943,1945,5,106,0,0,1944,1943,1,0,0,0,1944,1945,1,0,0,0,1945,1951,1,0,0,0,1946,1948,5,106,0,0,1947,1949,5,113,0,0,1948,1947,1,0,0,0,1948,1949,1,0,0,0,1949,1951,1,0,0,0,1950,1942,1,0,0,0,1950,1946,1,0,0,0,1951,1953,1,0,0,0,1952,1931,1,0,0,0,1952,1950,1,0,0,0,1953,201,1,0,0,0,1954,1960,3,204,102,0,1955,1960,3,208,104,0,1956,1960,3,212,106,0,1957,1960,3,214,107,0,1958,1960,3,216,108,0,1959,1954,1,0,0,0,1959,1955,1,0,0,0,1959,1956,1,0,0,0,1959,1957,1,0,0,0,1959,1958,1,0,0,0,1960,203,1,0,0,0,1961,1966,3,206,103,0,1962,1963,5,200,0,0,1963,1965,3,222,111,0,1964,1962,1,0,0,0,1965,1968,1,0,0,0,1966,1964,1,0,0,0,1966,1967,1,0,0,0,1967,1978,1,0,0,0,1968,1966,1,0,0,0,1969,1974,3,206,103,0,1970,1971,5,200,0,0,1971,1973,3,220,110,0,1972,1970,1,0,0,0,1973,1976,1,0,0,0,1974,1972,1,0,0,0,1974,1975,1,0,0,0,1975,1978,1,0,0,0,1976,1974,1,0,0,0,1977,1961,1,0,0,0,1977,1969,1,0,0,0,1978,205,1,0,0,0,1979,1983,5,204,0,0,1980,1981,5,158,0,0,1981,1983,5,24,0,0,1982,1979,1,0,0,0,1982,1980,1,0,0,0,1983,1984,1,0,0,0,1984,1992,3,222,111,0,1985,1989,5,204,0,0,1986,1987,5,47,0,0,1987,1989,5,24,0,0,1988,1985,1,0,0,0,1988,1986,1,0,0,0,1989,1990,1,0,0,0,1990,1992,3,220,110,0,1991,1982,1,0,0,0,1991,1988,1,0,0,0,1992,207,1,0,0,0,1993,1998,3,210,105,0,1994,1995,5,200,0,0,1995,1997,3,226,113,0,1996,1994,1,0,0,0,1997,2e3,1,0,0,0,1998,1996,1,0,0,0,1998,1999,1,0,0,0,1999,209,1,0,0,0,2e3,1998,1,0,0,0,2001,2002,7,16,0,0,2002,2003,3,226,113,0,2003,211,1,0,0,0,2004,2005,7,17,0,0,2005,2006,3,228,114,0,2006,213,1,0,0,0,2007,2008,7,18,0,0,2008,2009,3,230,115,0,2009,215,1,0,0,0,2010,2015,3,218,109,0,2011,2012,5,200,0,0,2012,2014,3,234,117,0,2013,2011,1,0,0,0,2014,2017,1,0,0,0,2015,2013,1,0,0,0,2015,2016,1,0,0,0,2016,217,1,0,0,0,2017,2015,1,0,0,0,2018,2019,7,19,0,0,2019,2020,3,234,117,0,2020,219,1,0,0,0,2021,2023,5,138,0,0,2022,2024,3,46,23,0,2023,2022,1,0,0,0,2023,2024,1,0,0,0,2024,2026,1,0,0,0,2025,2021,1,0,0,0,2025,2026,1,0,0,0,2026,2027,1,0,0,0,2027,2028,5,159,0,0,2028,2032,3,90,45,0,2029,2033,5,204,0,0,2030,2031,5,158,0,0,2031,2033,5,24,0,0,2032,2029,1,0,0,0,2032,2030,1,0,0,0,2033,2034,1,0,0,0,2034,2035,3,140,70,0,2035,2036,3,48,24,0,2036,2040,1,0,0,0,2037,2040,3,222,111,0,2038,2040,3,580,290,0,2039,2025,1,0,0,0,2039,2037,1,0,0,0,2039,2038,1,0,0,0,2040,221,1,0,0,0,2041,2046,3,90,45,0,2042,2043,5,202,0,0,2043,2045,3,90,45,0,2044,2042,1,0,0,0,2045,2048,1,0,0,0,2046,2044,1,0,0,0,2046,2047,1,0,0,0,2047,223,1,0,0,0,2048,2046,1,0,0,0,2049,2051,5,138,0,0,2050,2052,3,46,23,0,2051,2050,1,0,0,0,2051,2052,1,0,0,0,2052,2054,1,0,0,0,2053,2049,1,0,0,0,2053,2054,1,0,0,0,2054,2055,1,0,0,0,2055,2056,5,147,0,0,2056,2057,3,138,69,0,2057,2058,7,16,0,0,2058,2059,3,140,70,0,2059,2060,3,48,24,0,2060,225,1,0,0,0,2061,2066,3,90,45,0,2062,2063,5,202,0,0,2063,2065,3,90,45,0,2064,2062,1,0,0,0,2065,2068,1,0,0,0,2066,2064,1,0,0,0,2066,2067,1,0,0,0,2067,227,1,0,0,0,2068,2066,1,0,0,0,2069,2074,3,90,45,0,2070,2071,5,202,0,0,2071,2073,3,90,45,0,2072,2070,1,0,0,0,2073,2076,1,0,0,0,2074,2072,1,0,0,0,2074,2075,1,0,0,0,2075,229,1,0,0,0,2076,2074,1,0,0,0,2077,2082,3,90,45,0,2078,2079,5,202,0,0,2079,2081,3,90,45,0,2080,2078,1,0,0,0,2081,2084,1,0,0,0,2082,2080,1,0,0,0,2082,2083,1,0,0,0,2083,231,1,0,0,0,2084,2082,1,0,0,0,2085,2087,5,138,0,0,2086,2088,3,46,23,0,2087,2086,1,0,0,0,2087,2088,1,0,0,0,2088,2090,1,0,0,0,2089,2085,1,0,0,0,2089,2090,1,0,0,0,2090,2091,1,0,0,0,2091,2092,5,126,0,0,2092,2093,3,138,69,0,2093,2094,7,19,0,0,2094,2095,3,140,70,0,2095,2096,3,48,24,0,2096,233,1,0,0,0,2097,2102,3,90,45,0,2098,2099,5,202,0,0,2099,2101,3,90,45,0,2100,2098,1,0,0,0,2101,2104,1,0,0,0,2102,2100,1,0,0,0,2102,2103,1,0,0,0,2103,235,1,0,0,0,2104,2102,1,0,0,0,2105,2114,3,238,119,0,2106,2109,3,240,120,0,2107,2108,5,202,0,0,2108,2110,3,240,120,0,2109,2107,1,0,0,0,2110,2111,1,0,0,0,2111,2109,1,0,0,0,2111,2112,1,0,0,0,2112,2114,1,0,0,0,2113,2105,1,0,0,0,2113,2106,1,0,0,0,2114,237,1,0,0,0,2115,2118,3,240,120,0,2116,2117,5,202,0,0,2117,2119,3,240,120,0,2118,2116,1,0,0,0,2119,2120,1,0,0,0,2120,2118,1,0,0,0,2120,2121,1,0,0,0,2121,239,1,0,0,0,2122,2123,3,90,45,0,2123,241,1,0,0,0,2124,2126,5,89,0,0,2125,2127,3,46,23,0,2126,2125,1,0,0,0,2126,2127,1,0,0,0,2127,2129,1,0,0,0,2128,2124,1,0,0,0,2128,2129,1,0,0,0,2129,2130,1,0,0,0,2130,2131,5,88,0,0,2131,2136,3,90,45,0,2132,2133,5,202,0,0,2133,2135,3,90,45,0,2134,2132,1,0,0,0,2135,2138,1,0,0,0,2136,2134,1,0,0,0,2136,2137,1,0,0,0,2137,2139,1,0,0,0,2138,2136,1,0,0,0,2139,2140,5,111,0,0,2140,2145,3,90,45,0,2141,2142,5,202,0,0,2142,2144,3,90,45,0,2143,2141,1,0,0,0,2144,2147,1,0,0,0,2145,2143,1,0,0,0,2145,2146,1,0,0,0,2146,2148,1,0,0,0,2147,2145,1,0,0,0,2148,2149,3,48,24,0,2149,243,1,0,0,0,2150,2155,3,90,45,0,2151,2152,5,202,0,0,2152,2154,3,90,45,0,2153,2151,1,0,0,0,2154,2157,1,0,0,0,2155,2153,1,0,0,0,2155,2156,1,0,0,0,2156,245,1,0,0,0,2157,2155,1,0,0,0,2158,2163,5,67,0,0,2159,2161,3,46,23,0,2160,2159,1,0,0,0,2160,2161,1,0,0,0,2161,2162,1,0,0,0,2162,2164,5,111,0,0,2163,2160,1,0,0,0,2163,2164,1,0,0,0,2164,2165,1,0,0,0,2165,2166,3,90,45,0,2166,2167,5,24,0,0,2167,2168,3,90,45,0,2168,2169,3,48,24,0,2169,247,1,0,0,0,2170,2171,3,90,45,0,2171,249,1,0,0,0,2172,2173,3,112,56,0,2173,2174,5,43,0,0,2174,2175,3,164,82,0,2175,2176,3,130,65,0,2176,251,1,0,0,0,2177,2178,3,112,56,0,2178,2179,5,28,0,0,2179,2180,3,164,82,0,2180,2181,3,130,65,0,2181,253,1,0,0,0,2182,2183,3,112,56,0,2183,2184,5,144,0,0,2184,2185,3,164,82,0,2185,2186,3,130,65,0,2186,255,1,0,0,0,2187,2188,3,112,56,0,2188,2189,5,16,0,0,2189,2190,3,164,82,0,2190,2191,3,130,65,0,2191,257,1,0,0,0,2192,2193,3,112,56,0,2193,2194,5,16,0,0,2194,2195,5,144,0,0,2195,2196,3,164,82,0,2196,2197,3,130,65,0,2197,259,1,0,0,0,2198,2199,3,178,89,0,2199,2207,5,38,0,0,2200,2202,3,186,93,0,2201,2200,1,0,0,0,2201,2202,1,0,0,0,2202,2204,1,0,0,0,2203,2205,3,394,197,0,2204,2203,1,0,0,0,2204,2205,1,0,0,0,2205,2208,1,0,0,0,2206,2208,3,262,131,0,2207,2201,1,0,0,0,2207,2206,1,0,0,0,2208,2209,1,0,0,0,2209,2210,3,130,65,0,2210,261,1,0,0,0,2211,2214,3,264,132,0,2212,2214,3,266,133,0,2213,2211,1,0,0,0,2213,2212,1,0,0,0,2214,263,1,0,0,0,2215,2217,3,186,93,0,2216,2215,1,0,0,0,2216,2217,1,0,0,0,2217,2218,1,0,0,0,2218,2224,5,74,0,0,2219,2221,5,8,0,0,2220,2222,5,74,0,0,2221,2220,1,0,0,0,2221,2222,1,0,0,0,2222,2224,1,0,0,0,2223,2216,1,0,0,0,2223,2219,1,0,0,0,2223,2224,1,0,0,0,2224,2225,1,0,0,0,2225,2226,3,268,134,0,2226,2227,5,154,0,0,2227,2228,3,268,134,0,2228,265,1,0,0,0,2229,2231,3,186,93,0,2230,2229,1,0,0,0,2230,2231,1,0,0,0,2231,2232,1,0,0,0,2232,2233,5,196,0,0,2233,2234,3,268,134,0,2234,2235,5,200,0,0,2235,2240,3,268,134,0,2236,2237,5,200,0,0,2237,2239,3,268,134,0,2238,2236,1,0,0,0,2239,2242,1,0,0,0,2240,2238,1,0,0,0,2240,2241,1,0,0,0,2241,2243,1,0,0,0,2242,2240,1,0,0,0,2243,2244,5,197,0,0,2244,267,1,0,0,0,2245,2246,3,270,135,0,2246,269,1,0,0,0,2247,2249,3,272,136,0,2248,2247,1,0,0,0,2248,2249,1,0,0,0,2249,2253,1,0,0,0,2250,2251,3,44,22,0,2251,2252,7,17,0,0,2252,2254,1,0,0,0,2253,2250,1,0,0,0,2253,2254,1,0,0,0,2254,2255,1,0,0,0,2255,2256,3,228,114,0,2256,271,1,0,0,0,2257,2258,3,274,137,0,2258,273,1,0,0,0,2259,2260,3,404,202,0,2260,275,1,0,0,0,2261,2262,3,178,89,0,2262,2263,5,22,0,0,2263,2264,3,278,139,0,2264,2265,3,130,65,0,2265,277,1,0,0,0,2266,2272,3,186,93,0,2267,2268,5,111,0,0,2268,2269,3,268,134,0,2269,2270,5,207,0,0,2270,2271,3,268,134,0,2271,2273,1,0,0,0,2272,2267,1,0,0,0,2272,2273,1,0,0,0,2273,2287,1,0,0,0,2274,2276,5,8,0,0,2275,2274,1,0,0,0,2275,2276,1,0,0,0,2276,2284,1,0,0,0,2277,2279,5,111,0,0,2278,2277,1,0,0,0,2278,2279,1,0,0,0,2279,2280,1,0,0,0,2280,2281,3,268,134,0,2281,2282,5,207,0,0,2282,2283,3,268,134,0,2283,2285,1,0,0,0,2284,2278,1,0,0,0,2284,2285,1,0,0,0,2285,2287,1,0,0,0,2286,2266,1,0,0,0,2286,2275,1,0,0,0,2287,279,1,0,0,0,2288,2289,3,178,89,0,2289,2290,5,150,0,0,2290,2291,3,282,141,0,2291,2292,3,130,65,0,2292,281,1,0,0,0,2293,2299,3,186,93,0,2294,2295,5,69,0,0,2295,2296,3,268,134,0,2296,2297,5,152,0,0,2297,2298,3,268,134,0,2298,2300,1,0,0,0,2299,2294,1,0,0,0,2299,2300,1,0,0,0,2300,2314,1,0,0,0,2301,2303,5,8,0,0,2302,2301,1,0,0,0,2302,2303,1,0,0,0,2303,2311,1,0,0,0,2304,2306,5,69,0,0,2305,2304,1,0,0,0,2305,2306,1,0,0,0,2306,2307,1,0,0,0,2307,2308,3,268,134,0,2308,2309,5,152,0,0,2309,2310,3,268,134,0,2310,2312,1,0,0,0,2311,2305,1,0,0,0,2311,2312,1,0,0,0,2312,2314,1,0,0,0,2313,2293,1,0,0,0,2313,2302,1,0,0,0,2314,283,1,0,0,0,2315,2316,3,112,56,0,2316,2317,5,20,0,0,2317,2318,3,164,82,0,2318,2319,3,130,65,0,2319,285,1,0,0,0,2320,2321,3,178,89,0,2321,2322,5,143,0,0,2322,2324,3,186,93,0,2323,2325,3,394,197,0,2324,2323,1,0,0,0,2324,2325,1,0,0,0,2325,2326,1,0,0,0,2326,2327,3,130,65,0,2327,287,1,0,0,0,2328,2329,3,112,56,0,2329,2330,5,75,0,0,2330,2331,3,164,82,0,2331,2332,3,290,145,0,2332,289,1,0,0,0,2333,2339,5,205,0,0,2334,2335,5,214,0,0,2335,2336,3,292,146,0,2336,2337,5,216,0,0,2337,2339,1,0,0,0,2338,2333,1,0,0,0,2338,2334,1,0,0,0,2339,291,1,0,0,0,2340,2343,3,132,66,0,2341,2343,3,294,147,0,2342,2340,1,0,0,0,2342,2341,1,0,0,0,2343,2346,1,0,0,0,2344,2342,1,0,0,0,2344,2345,1,0,0,0,2345,2348,1,0,0,0,2346,2344,1,0,0,0,2347,2349,3,296,148,0,2348,2347,1,0,0,0,2348,2349,1,0,0,0,2349,293,1,0,0,0,2350,2351,3,78,39,0,2351,2352,5,134,0,0,2352,2353,3,108,54,0,2353,295,1,0,0,0,2354,2356,3,78,39,0,2355,2354,1,0,0,0,2355,2356,1,0,0,0,2356,2357,1,0,0,0,2357,2358,3,0,0,0,2358,297,1,0,0,0,2359,2360,3,178,89,0,2360,2361,5,63,0,0,2361,2363,3,186,93,0,2362,2364,3,394,197,0,2363,2362,1,0,0,0,2363,2364,1,0,0,0,2364,2365,1,0,0,0,2365,2366,3,290,145,0,2366,299,1,0,0,0,2367,2368,3,112,56,0,2368,2369,5,121,0,0,2369,2370,3,164,82,0,2370,2371,3,290,145,0,2371,301,1,0,0,0,2372,2373,3,178,89,0,2373,2374,5,23,0,0,2374,2376,3,186,93,0,2375,2377,3,394,197,0,2376,2375,1,0,0,0,2376,2377,1,0,0,0,2377,2378,1,0,0,0,2378,2379,3,290,145,0,2379,303,1,0,0,0,2380,2381,3,178,89,0,2381,2383,5,87,0,0,2382,2384,7,8,0,0,2383,2382,1,0,0,0,2383,2384,1,0,0,0,2384,2385,1,0,0,0,2385,2387,3,186,93,0,2386,2388,3,394,197,0,2387,2386,1,0,0,0,2387,2388,1,0,0,0,2388,2389,1,0,0,0,2389,2390,3,290,145,0,2390,305,1,0,0,0,2391,2392,3,0,0,0,2392,307,1,0,0,0,2393,2394,3,348,174,0,2394,309,1,0,0,0,2395,2396,3,2,1,0,2396,311,1,0,0,0,2397,2398,3,2,1,0,2398,313,1,0,0,0,2399,2400,3,90,45,0,2400,315,1,0,0,0,2401,2402,3,978,489,0,2402,317,1,0,0,0,2403,2404,3,306,153,0,2404,2405,5,200,0,0,2405,2406,3,320,160,0,2406,319,1,0,0,0,2407,2408,3,4,2,0,2408,321,1,0,0,0,2409,2410,3,324,162,0,2410,323,1,0,0,0,2411,2412,3,326,163,0,2412,325,1,0,0,0,2413,2414,3,18,9,0,2414,327,1,0,0,0,2415,2416,3,330,165,0,2416,329,1,0,0,0,2417,2418,3,332,166,0,2418,331,1,0,0,0,2419,2420,3,334,167,0,2420,333,1,0,0,0,2421,2422,3,336,168,0,2422,335,1,0,0,0,2423,2424,3,338,169,0,2424,337,1,0,0,0,2425,2426,3,314,157,0,2426,339,1,0,0,0,2427,2432,3,90,45,0,2428,2429,5,202,0,0,2429,2431,3,90,45,0,2430,2428,1,0,0,0,2431,2434,1,0,0,0,2432,2430,1,0,0,0,2432,2433,1,0,0,0,2433,341,1,0,0,0,2434,2432,1,0,0,0,2435,2438,3,238,119,0,2436,2438,3,236,118,0,2437,2435,1,0,0,0,2437,2436,1,0,0,0,2438,343,1,0,0,0,2439,2440,3,346,173,0,2440,345,1,0,0,0,2441,2442,3,90,45,0,2442,347,1,0,0,0,2443,2444,3,90,45,0,2444,349,1,0,0,0,2445,2446,3,352,176,0,2446,351,1,0,0,0,2447,2448,3,20,10,0,2448,353,1,0,0,0,2449,2454,3,90,45,0,2450,2451,5,202,0,0,2451,2453,3,90,45,0,2452,2450,1,0,0,0,2453,2456,1,0,0,0,2454,2452,1,0,0,0,2454,2455,1,0,0,0,2455,355,1,0,0,0,2456,2454,1,0,0,0,2457,2458,3,90,45,0,2458,357,1,0,0,0,2459,2460,3,26,13,0,2460,359,1,0,0,0,2461,2462,3,90,45,0,2462,361,1,0,0,0,2463,2464,3,364,182,0,2464,363,1,0,0,0,2465,2466,5,214,0,0,2466,2467,3,292,146,0,2467,2468,5,216,0,0,2468,365,1,0,0,0,2469,2470,7,8,0,0,2470,367,1,0,0,0,2471,2473,5,221,0,0,2472,2471,1,0,0,0,2472,2473,1,0,0,0,2473,2474,1,0,0,0,2474,2475,5,202,0,0,2475,2478,7,20,0,0,2476,2478,5,222,0,0,2477,2472,1,0,0,0,2477,2476,1,0,0,0,2478,369,1,0,0,0,2479,2480,3,112,56,0,2480,2481,5,84,0,0,2481,2482,3,164,82,0,2482,2483,3,130,65,0,2483,371,1,0,0,0,2484,2485,3,178,89,0,2485,2486,5,70,0,0,2486,2487,3,376,188,0,2487,2488,3,130,65,0,2488,373,1,0,0,0,2489,2490,3,178,89,0,2490,2491,5,150,0,0,2491,2492,5,70,0,0,2492,2493,3,376,188,0,2493,2494,3,130,65,0,2494,375,1,0,0,0,2495,2497,3,186,93,0,2496,2498,3,394,197,0,2497,2496,1,0,0,0,2497,2498,1,0,0,0,2498,2501,1,0,0,0,2499,2500,5,111,0,0,2500,2502,3,378,189,0,2501,2499,1,0,0,0,2501,2502,1,0,0,0,2502,2508,1,0,0,0,2503,2504,5,74,0,0,2504,2505,3,384,192,0,2505,2506,5,154,0,0,2506,2507,3,384,192,0,2507,2509,1,0,0,0,2508,2503,1,0,0,0,2508,2509,1,0,0,0,2509,2535,1,0,0,0,2510,2512,5,8,0,0,2511,2510,1,0,0,0,2511,2512,1,0,0,0,2512,2513,1,0,0,0,2513,2514,3,384,192,0,2514,2515,5,154,0,0,2515,2516,3,384,192,0,2516,2535,1,0,0,0,2517,2519,3,496,248,0,2518,2517,1,0,0,0,2518,2519,1,0,0,0,2519,2521,1,0,0,0,2520,2522,3,394,197,0,2521,2520,1,0,0,0,2521,2522,1,0,0,0,2522,2525,1,0,0,0,2523,2524,5,111,0,0,2524,2526,3,646,323,0,2525,2523,1,0,0,0,2525,2526,1,0,0,0,2526,2532,1,0,0,0,2527,2528,5,74,0,0,2528,2529,3,384,192,0,2529,2530,5,154,0,0,2530,2531,3,384,192,0,2531,2533,1,0,0,0,2532,2527,1,0,0,0,2532,2533,1,0,0,0,2533,2535,1,0,0,0,2534,2495,1,0,0,0,2534,2511,1,0,0,0,2534,2518,1,0,0,0,2535,377,1,0,0,0,2536,2537,3,380,190,0,2537,379,1,0,0,0,2538,2540,3,46,23,0,2539,2538,1,0,0,0,2539,2540,1,0,0,0,2540,2541,1,0,0,0,2541,2558,3,394,197,0,2542,2544,3,46,23,0,2543,2542,1,0,0,0,2543,2544,1,0,0,0,2544,2545,1,0,0,0,2545,2547,3,382,191,0,2546,2548,3,394,197,0,2547,2546,1,0,0,0,2547,2548,1,0,0,0,2548,2558,1,0,0,0,2549,2551,3,222,111,0,2550,2552,3,404,202,0,2551,2550,1,0,0,0,2551,2552,1,0,0,0,2552,2558,1,0,0,0,2553,2555,3,404,202,0,2554,2556,3,222,111,0,2555,2554,1,0,0,0,2555,2556,1,0,0,0,2556,2558,1,0,0,0,2557,2539,1,0,0,0,2557,2543,1,0,0,0,2557,2549,1,0,0,0,2557,2553,1,0,0,0,2558,381,1,0,0,0,2559,2561,3,202,101,0,2560,2559,1,0,0,0,2561,2562,1,0,0,0,2562,2560,1,0,0,0,2562,2563,1,0,0,0,2563,2565,1,0,0,0,2564,2566,3,200,100,0,2565,2564,1,0,0,0,2565,2566,1,0,0,0,2566,2570,1,0,0,0,2567,2569,3,202,101,0,2568,2567,1,0,0,0,2569,2572,1,0,0,0,2570,2568,1,0,0,0,2570,2571,1,0,0,0,2571,2580,1,0,0,0,2572,2570,1,0,0,0,2573,2575,3,200,100,0,2574,2576,3,202,101,0,2575,2574,1,0,0,0,2576,2577,1,0,0,0,2577,2575,1,0,0,0,2577,2578,1,0,0,0,2578,2580,1,0,0,0,2579,2560,1,0,0,0,2579,2573,1,0,0,0,2580,383,1,0,0,0,2581,2582,3,386,193,0,2582,385,1,0,0,0,2583,2588,3,90,45,0,2584,2585,5,202,0,0,2585,2587,3,90,45,0,2586,2584,1,0,0,0,2587,2590,1,0,0,0,2588,2586,1,0,0,0,2588,2589,1,0,0,0,2589,387,1,0,0,0,2590,2588,1,0,0,0,2591,2592,3,390,195,0,2592,389,1,0,0,0,2593,2594,3,392,196,0,2594,391,1,0,0,0,2595,2596,3,90,45,0,2596,393,1,0,0,0,2597,2598,3,396,198,0,2598,395,1,0,0,0,2599,2606,5,207,0,0,2600,2606,5,184,0,0,2601,2603,5,46,0,0,2602,2604,7,21,0,0,2603,2602,1,0,0,0,2603,2604,1,0,0,0,2604,2606,1,0,0,0,2605,2599,1,0,0,0,2605,2600,1,0,0,0,2605,2601,1,0,0,0,2606,2607,1,0,0,0,2607,2608,3,0,0,0,2608,397,1,0,0,0,2609,2612,3,400,200,0,2610,2612,3,402,201,0,2611,2609,1,0,0,0,2611,2610,1,0,0,0,2612,399,1,0,0,0,2613,2615,5,103,0,0,2614,2616,3,46,23,0,2615,2614,1,0,0,0,2615,2616,1,0,0,0,2616,2617,1,0,0,0,2617,2618,3,210,105,0,2618,2619,3,130,65,0,2619,401,1,0,0,0,2620,2622,5,103,0,0,2621,2623,3,46,23,0,2622,2621,1,0,0,0,2622,2623,1,0,0,0,2623,2624,1,0,0,0,2624,2625,3,408,204,0,2625,2626,3,130,65,0,2626,2637,1,0,0,0,2627,2631,5,211,0,0,2628,2629,3,410,205,0,2629,2630,5,181,0,0,2630,2632,1,0,0,0,2631,2628,1,0,0,0,2631,2632,1,0,0,0,2632,2633,1,0,0,0,2633,2634,3,410,205,0,2634,2635,5,212,0,0,2635,2637,1,0,0,0,2636,2620,1,0,0,0,2636,2627,1,0,0,0,2637,403,1,0,0,0,2638,2641,3,406,203,0,2639,2641,3,402,201,0,2640,2638,1,0,0,0,2640,2639,1,0,0,0,2641,405,1,0,0,0,2642,2643,3,408,204,0,2643,407,1,0,0,0,2644,2648,5,211,0,0,2645,2646,3,410,205,0,2646,2647,5,181,0,0,2647,2649,1,0,0,0,2648,2645,1,0,0,0,2648,2649,1,0,0,0,2649,2650,1,0,0,0,2650,2651,3,410,205,0,2651,2652,5,212,0,0,2652,409,1,0,0,0,2653,2656,3,28,14,0,2654,2656,3,10,5,0,2655,2653,1,0,0,0,2655,2654,1,0,0,0,2656,411,1,0,0,0,2657,2658,3,112,56,0,2658,2659,5,101,0,0,2659,2660,3,164,82,0,2660,2661,3,130,65,0,2661,413,1,0,0,0,2662,2663,5,192,0,0,2663,2667,3,418,209,0,2664,2665,5,192,0,0,2665,2667,3,956,478,0,2666,2662,1,0,0,0,2666,2664,1,0,0,0,2667,415,1,0,0,0,2668,2669,5,192,0,0,2669,2673,3,418,209,0,2670,2671,5,192,0,0,2671,2673,3,956,478,0,2672,2668,1,0,0,0,2672,2670,1,0,0,0,2673,417,1,0,0,0,2674,2675,3,222,111,0,2675,419,1,0,0,0,2676,2678,3,416,208,0,2677,2676,1,0,0,0,2678,2681,1,0,0,0,2679,2677,1,0,0,0,2679,2680,1,0,0,0,2680,2682,1,0,0,0,2681,2679,1,0,0,0,2682,2683,7,22,0,0,2683,2693,3,422,211,0,2684,2685,5,1,0,0,2685,2690,3,56,28,0,2686,2687,5,200,0,0,2687,2689,3,56,28,0,2688,2686,1,0,0,0,2689,2692,1,0,0,0,2690,2688,1,0,0,0,2690,2691,1,0,0,0,2691,2694,1,0,0,0,2692,2690,1,0,0,0,2693,2684,1,0,0,0,2693,2694,1,0,0,0,2694,2695,1,0,0,0,2695,2696,3,424,212,0,2696,421,1,0,0,0,2697,2699,3,46,23,0,2698,2697,1,0,0,0,2698,2699,1,0,0,0,2699,2703,1,0,0,0,2700,2704,5,204,0,0,2701,2702,5,158,0,0,2702,2704,5,24,0,0,2703,2700,1,0,0,0,2703,2701,1,0,0,0,2704,2706,1,0,0,0,2705,2698,1,0,0,0,2705,2706,1,0,0,0,2706,2707,1,0,0,0,2707,2708,3,222,111,0,2708,423,1,0,0,0,2709,2730,5,205,0,0,2710,2714,5,214,0,0,2711,2713,3,426,213,0,2712,2711,1,0,0,0,2713,2716,1,0,0,0,2714,2712,1,0,0,0,2714,2715,1,0,0,0,2715,2717,1,0,0,0,2716,2714,1,0,0,0,2717,2730,5,216,0,0,2718,2725,5,214,0,0,2719,2724,3,470,235,0,2720,2724,3,962,481,0,2721,2724,3,88,44,0,2722,2724,3,92,46,0,2723,2719,1,0,0,0,2723,2720,1,0,0,0,2723,2721,1,0,0,0,2723,2722,1,0,0,0,2724,2727,1,0,0,0,2725,2723,1,0,0,0,2725,2726,1,0,0,0,2726,2728,1,0,0,0,2727,2725,1,0,0,0,2728,2730,5,216,0,0,2729,2709,1,0,0,0,2729,2710,1,0,0,0,2729,2718,1,0,0,0,2730,425,1,0,0,0,2731,2736,3,84,42,0,2732,2736,3,428,214,0,2733,2736,3,88,44,0,2734,2736,3,92,46,0,2735,2731,1,0,0,0,2735,2732,1,0,0,0,2735,2733,1,0,0,0,2735,2734,1,0,0,0,2736,427,1,0,0,0,2737,2738,3,430,215,0,2738,429,1,0,0,0,2739,2741,5,65,0,0,2740,2739,1,0,0,0,2740,2741,1,0,0,0,2741,2743,1,0,0,0,2742,2744,7,19,0,0,2743,2742,1,0,0,0,2743,2744,1,0,0,0,2744,2745,1,0,0,0,2745,2747,3,234,117,0,2746,2748,3,198,99,0,2747,2746,1,0,0,0,2747,2748,1,0,0,0,2748,2750,1,0,0,0,2749,2751,3,394,197,0,2750,2749,1,0,0,0,2750,2751,1,0,0,0,2751,2752,1,0,0,0,2752,2753,3,424,212,0,2753,431,1,0,0,0,2754,2756,3,416,208,0,2755,2754,1,0,0,0,2756,2759,1,0,0,0,2757,2755,1,0,0,0,2757,2758,1,0,0,0,2758,2760,1,0,0,0,2759,2757,1,0,0,0,2760,2761,3,436,218,0,2761,2762,3,438,219,0,2762,433,1,0,0,0,2763,2765,5,141,0,0,2764,2763,1,0,0,0,2764,2765,1,0,0,0,2765,2766,1,0,0,0,2766,2770,5,94,0,0,2767,2769,3,416,208,0,2768,2767,1,0,0,0,2769,2772,1,0,0,0,2770,2768,1,0,0,0,2770,2771,1,0,0,0,2771,2773,1,0,0,0,2772,2770,1,0,0,0,2773,2774,3,436,218,0,2774,2775,3,438,219,0,2775,435,1,0,0,0,2776,2778,5,115,0,0,2777,2779,3,46,23,0,2778,2777,1,0,0,0,2778,2779,1,0,0,0,2779,437,1,0,0,0,2780,2790,5,205,0,0,2781,2785,5,214,0,0,2782,2784,3,446,223,0,2783,2782,1,0,0,0,2784,2787,1,0,0,0,2785,2783,1,0,0,0,2785,2786,1,0,0,0,2786,2788,1,0,0,0,2787,2785,1,0,0,0,2788,2790,5,216,0,0,2789,2780,1,0,0,0,2789,2781,1,0,0,0,2790,439,1,0,0,0,2791,2792,3,78,39,0,2792,2793,5,68,0,0,2793,2794,3,0,0,0,2794,2795,5,205,0,0,2795,441,1,0,0,0,2796,2798,3,46,23,0,2797,2796,1,0,0,0,2797,2798,1,0,0,0,2798,2799,1,0,0,0,2799,2801,5,74,0,0,2800,2797,1,0,0,0,2800,2801,1,0,0,0,2801,2802,1,0,0,0,2802,2807,3,90,45,0,2803,2804,5,200,0,0,2804,2806,3,90,45,0,2805,2803,1,0,0,0,2806,2809,1,0,0,0,2807,2805,1,0,0,0,2807,2808,1,0,0,0,2808,2810,1,0,0,0,2809,2807,1,0,0,0,2810,2811,5,154,0,0,2811,2816,3,90,45,0,2812,2813,5,200,0,0,2813,2815,3,90,45,0,2814,2812,1,0,0,0,2815,2818,1,0,0,0,2816,2814,1,0,0,0,2816,2817,1,0,0,0,2817,443,1,0,0,0,2818,2816,1,0,0,0,2819,2820,3,60,30,0,2820,445,1,0,0,0,2821,2826,3,448,224,0,2822,2826,3,440,220,0,2823,2826,3,88,44,0,2824,2826,3,92,46,0,2825,2821,1,0,0,0,2825,2822,1,0,0,0,2825,2823,1,0,0,0,2825,2824,1,0,0,0,2826,447,1,0,0,0,2827,2830,3,78,39,0,2828,2831,3,450,225,0,2829,2831,3,452,226,0,2830,2828,1,0,0,0,2830,2829,1,0,0,0,2831,449,1,0,0,0,2832,2863,3,432,216,0,2833,2863,3,434,217,0,2834,2863,3,60,30,0,2835,2863,3,54,27,0,2836,2863,3,522,261,0,2837,2863,3,526,263,0,2838,2863,3,538,269,0,2839,2863,3,540,270,0,2840,2863,3,564,282,0,2841,2863,3,568,284,0,2842,2863,3,582,291,0,2843,2863,3,632,316,0,2844,2863,3,596,298,0,2845,2863,3,572,286,0,2846,2863,3,654,327,0,2847,2863,3,830,415,0,2848,2863,3,768,384,0,2849,2863,3,842,421,0,2850,2863,3,850,425,0,2851,2863,3,890,445,0,2852,2863,3,894,447,0,2853,2863,3,906,453,0,2854,2863,3,910,455,0,2855,2863,3,918,459,0,2856,2863,3,924,462,0,2857,2863,3,946,473,0,2858,2863,3,950,475,0,2859,2863,3,954,477,0,2860,2863,3,626,313,0,2861,2863,3,966,483,0,2862,2832,1,0,0,0,2862,2833,1,0,0,0,2862,2834,1,0,0,0,2862,2835,1,0,0,0,2862,2836,1,0,0,0,2862,2837,1,0,0,0,2862,2838,1,0,0,0,2862,2839,1,0,0,0,2862,2840,1,0,0,0,2862,2841,1,0,0,0,2862,2842,1,0,0,0,2862,2843,1,0,0,0,2862,2844,1,0,0,0,2862,2845,1,0,0,0,2862,2846,1,0,0,0,2862,2847,1,0,0,0,2862,2848,1,0,0,0,2862,2849,1,0,0,0,2862,2850,1,0,0,0,2862,2851,1,0,0,0,2862,2852,1,0,0,0,2862,2853,1,0,0,0,2862,2854,1,0,0,0,2862,2855,1,0,0,0,2862,2856,1,0,0,0,2862,2857,1,0,0,0,2862,2858,1,0,0,0,2862,2859,1,0,0,0,2862,2860,1,0,0,0,2862,2861,1,0,0,0,2863,451,1,0,0,0,2864,2867,3,510,255,0,2865,2867,3,512,256,0,2866,2864,1,0,0,0,2866,2865,1,0,0,0,2867,453,1,0,0,0,2868,2869,7,23,0,0,2869,455,1,0,0,0,2870,2871,3,416,208,0,2871,457,1,0,0,0,2872,2874,3,454,227,0,2873,2872,1,0,0,0,2873,2874,1,0,0,0,2874,2878,1,0,0,0,2875,2877,3,456,228,0,2876,2875,1,0,0,0,2877,2880,1,0,0,0,2878,2876,1,0,0,0,2878,2879,1,0,0,0,2879,459,1,0,0,0,2880,2878,1,0,0,0,2881,2882,3,462,231,0,2882,2883,3,464,232,0,2883,461,1,0,0,0,2884,2886,3,46,23,0,2885,2884,1,0,0,0,2885,2886,1,0,0,0,2886,2888,1,0,0,0,2887,2889,3,520,260,0,2888,2887,1,0,0,0,2888,2889,1,0,0,0,2889,463,1,0,0,0,2890,2900,5,205,0,0,2891,2895,5,214,0,0,2892,2894,3,466,233,0,2893,2892,1,0,0,0,2894,2897,1,0,0,0,2895,2893,1,0,0,0,2895,2896,1,0,0,0,2896,2898,1,0,0,0,2897,2895,1,0,0,0,2898,2900,5,216,0,0,2899,2890,1,0,0,0,2899,2891,1,0,0,0,2900,465,1,0,0,0,2901,2912,3,92,46,0,2902,2903,3,78,39,0,2903,2904,3,468,234,0,2904,2912,1,0,0,0,2905,2907,3,556,278,0,2906,2905,1,0,0,0,2906,2907,1,0,0,0,2907,2908,1,0,0,0,2908,2909,3,78,39,0,2909,2910,3,512,256,0,2910,2912,1,0,0,0,2911,2901,1,0,0,0,2911,2902,1,0,0,0,2911,2906,1,0,0,0,2912,467,1,0,0,0,2913,2918,5,7,0,0,2914,2915,5,206,0,0,2915,2916,3,44,22,0,2916,2917,5,208,0,0,2917,2919,1,0,0,0,2918,2914,1,0,0,0,2918,2919,1,0,0,0,2919,2921,1,0,0,0,2920,2922,3,44,22,0,2921,2920,1,0,0,0,2921,2922,1,0,0,0,2922,2923,1,0,0,0,2923,2924,5,71,0,0,2924,2925,3,90,45,0,2925,2926,3,48,24,0,2926,2932,1,0,0,0,2927,2928,5,164,0,0,2928,2932,3,518,259,0,2929,2932,3,450,225,0,2930,2932,3,510,255,0,2931,2913,1,0,0,0,2931,2927,1,0,0,0,2931,2929,1,0,0,0,2931,2930,1,0,0,0,2932,469,1,0,0,0,2933,2934,3,78,39,0,2934,2935,3,450,225,0,2935,471,1,0,0,0,2936,2937,3,78,39,0,2937,2938,5,164,0,0,2938,2939,3,518,259,0,2939,473,1,0,0,0,2940,2941,3,78,39,0,2941,2942,3,510,255,0,2942,475,1,0,0,0,2943,2944,3,78,39,0,2944,2945,3,512,256,0,2945,477,1,0,0,0,2946,2947,3,78,39,0,2947,2948,3,514,257,0,2948,479,1,0,0,0,2949,2950,3,78,39,0,2950,2951,3,516,258,0,2951,481,1,0,0,0,2952,2954,3,184,92,0,2953,2952,1,0,0,0,2953,2954,1,0,0,0,2954,2956,1,0,0,0,2955,2957,5,49,0,0,2956,2955,1,0,0,0,2956,2957,1,0,0,0,2957,2959,1,0,0,0,2958,2960,7,23,0,0,2959,2958,1,0,0,0,2959,2960,1,0,0,0,2960,2962,1,0,0,0,2961,2963,5,40,0,0,2962,2961,1,0,0,0,2962,2963,1,0,0,0,2963,483,1,0,0,0,2964,2966,3,482,241,0,2965,2967,5,127,0,0,2966,2965,1,0,0,0,2966,2967,1,0,0,0,2967,485,1,0,0,0,2968,2970,5,56,0,0,2969,2971,3,180,90,0,2970,2969,1,0,0,0,2970,2971,1,0,0,0,2971,487,1,0,0,0,2972,2973,3,416,208,0,2973,489,1,0,0,0,2974,2977,3,486,243,0,2975,2977,3,484,242,0,2976,2974,1,0,0,0,2976,2975,1,0,0,0,2977,491,1,0,0,0,2978,2982,3,490,245,0,2979,2981,3,488,244,0,2980,2979,1,0,0,0,2981,2984,1,0,0,0,2982,2980,1,0,0,0,2982,2983,1,0,0,0,2983,493,1,0,0,0,2984,2982,1,0,0,0,2985,2987,3,496,248,0,2986,2985,1,0,0,0,2986,2987,1,0,0,0,2987,2988,1,0,0,0,2988,2989,3,498,249,0,2989,495,1,0,0,0,2990,2992,3,46,23,0,2991,2993,3,198,99,0,2992,2991,1,0,0,0,2992,2993,1,0,0,0,2993,2996,1,0,0,0,2994,2996,3,198,99,0,2995,2990,1,0,0,0,2995,2994,1,0,0,0,2996,497,1,0,0,0,2997,2999,3,394,197,0,2998,2997,1,0,0,0,2998,2999,1,0,0,0,2999,3e3,1,0,0,0,3e3,3001,3,500,250,0,3001,499,1,0,0,0,3002,3003,3,464,232,0,3003,501,1,0,0,0,3004,3005,3,482,241,0,3005,3006,3,494,247,0,3006,503,1,0,0,0,3007,3010,3,486,243,0,3008,3010,3,482,241,0,3009,3007,1,0,0,0,3009,3008,1,0,0,0,3010,3011,1,0,0,0,3011,3012,5,127,0,0,3012,3013,3,494,247,0,3013,505,1,0,0,0,3014,3015,3,486,243,0,3015,3016,3,186,93,0,3016,3017,3,498,249,0,3017,507,1,0,0,0,3018,3022,3,228,114,0,3019,3021,3,202,101,0,3020,3019,1,0,0,0,3021,3024,1,0,0,0,3022,3020,1,0,0,0,3022,3023,1,0,0,0,3023,3025,1,0,0,0,3024,3022,1,0,0,0,3025,3026,3,500,250,0,3026,509,1,0,0,0,3027,3036,3,504,252,0,3028,3036,3,506,253,0,3029,3036,3,524,262,0,3030,3036,3,534,267,0,3031,3036,3,592,296,0,3032,3036,3,594,297,0,3033,3036,3,968,484,0,3034,3036,3,502,251,0,3035,3027,1,0,0,0,3035,3028,1,0,0,0,3035,3029,1,0,0,0,3035,3030,1,0,0,0,3035,3031,1,0,0,0,3035,3032,1,0,0,0,3035,3033,1,0,0,0,3035,3034,1,0,0,0,3036,511,1,0,0,0,3037,3040,3,514,257,0,3038,3040,3,516,258,0,3039,3037,1,0,0,0,3039,3038,1,0,0,0,3040,513,1,0,0,0,3041,3057,3,546,273,0,3042,3057,3,548,274,0,3043,3057,3,550,275,0,3044,3057,3,554,277,0,3045,3057,3,566,283,0,3046,3057,3,570,285,0,3047,3057,3,934,467,0,3048,3057,3,952,476,0,3049,3057,3,578,289,0,3050,3057,3,584,292,0,3051,3057,3,612,306,0,3052,3057,3,628,314,0,3053,3057,3,634,317,0,3054,3057,3,642,321,0,3055,3057,3,644,322,0,3056,3041,1,0,0,0,3056,3042,1,0,0,0,3056,3043,1,0,0,0,3056,3044,1,0,0,0,3056,3045,1,0,0,0,3056,3046,1,0,0,0,3056,3047,1,0,0,0,3056,3048,1,0,0,0,3056,3049,1,0,0,0,3056,3050,1,0,0,0,3056,3051,1,0,0,0,3056,3052,1,0,0,0,3056,3053,1,0,0,0,3056,3054,1,0,0,0,3056,3055,1,0,0,0,3057,515,1,0,0,0,3058,3075,3,672,336,0,3059,3075,3,832,416,0,3060,3075,3,796,398,0,3061,3075,3,844,422,0,3062,3075,3,878,439,0,3063,3075,3,892,446,0,3064,3075,3,896,448,0,3065,3075,3,908,454,0,3066,3075,3,912,456,0,3067,3075,3,920,460,0,3068,3075,3,948,474,0,3069,3075,3,676,338,0,3070,3075,3,800,400,0,3071,3075,3,922,461,0,3072,3075,3,846,423,0,3073,3075,3,880,440,0,3074,3058,1,0,0,0,3074,3059,1,0,0,0,3074,3060,1,0,0,0,3074,3061,1,0,0,0,3074,3062,1,0,0,0,3074,3063,1,0,0,0,3074,3064,1,0,0,0,3074,3065,1,0,0,0,3074,3066,1,0,0,0,3074,3067,1,0,0,0,3074,3068,1,0,0,0,3074,3069,1,0,0,0,3074,3070,1,0,0,0,3074,3071,1,0,0,0,3074,3072,1,0,0,0,3074,3073,1,0,0,0,3075,517,1,0,0,0,3076,3098,3,508,254,0,3077,3098,3,504,252,0,3078,3098,3,524,262,0,3079,3098,3,592,296,0,3080,3098,3,594,297,0,3081,3098,3,546,273,0,3082,3098,3,548,274,0,3083,3098,3,550,275,0,3084,3098,3,554,277,0,3085,3098,3,566,283,0,3086,3098,3,570,285,0,3087,3098,3,934,467,0,3088,3098,3,952,476,0,3089,3098,3,578,289,0,3090,3098,3,584,292,0,3091,3098,3,612,306,0,3092,3098,3,628,314,0,3093,3098,3,634,317,0,3094,3098,3,642,321,0,3095,3098,3,644,322,0,3096,3098,3,516,258,0,3097,3076,1,0,0,0,3097,3077,1,0,0,0,3097,3078,1,0,0,0,3097,3079,1,0,0,0,3097,3080,1,0,0,0,3097,3081,1,0,0,0,3097,3082,1,0,0,0,3097,3083,1,0,0,0,3097,3084,1,0,0,0,3097,3085,1,0,0,0,3097,3086,1,0,0,0,3097,3087,1,0,0,0,3097,3088,1,0,0,0,3097,3089,1,0,0,0,3097,3090,1,0,0,0,3097,3091,1,0,0,0,3097,3092,1,0,0,0,3097,3093,1,0,0,0,3097,3094,1,0,0,0,3097,3095,1,0,0,0,3097,3096,1,0,0,0,3098,519,1,0,0,0,3099,3100,7,11,0,0,3100,3105,3,170,85,0,3101,3102,5,200,0,0,3102,3104,3,170,85,0,3103,3101,1,0,0,0,3104,3107,1,0,0,0,3105,3103,1,0,0,0,3105,3106,1,0,0,0,3106,521,1,0,0,0,3107,3105,1,0,0,0,3108,3109,3,458,229,0,3109,3110,5,19,0,0,3110,3111,5,45,0,0,3111,3112,3,460,230,0,3112,523,1,0,0,0,3113,3114,3,492,246,0,3114,3115,5,19,0,0,3115,3116,3,494,247,0,3116,525,1,0,0,0,3117,3119,3,456,228,0,3118,3117,1,0,0,0,3119,3122,1,0,0,0,3120,3118,1,0,0,0,3120,3121,1,0,0,0,3121,3123,1,0,0,0,3122,3120,1,0,0,0,3123,3124,5,58,0,0,3124,3125,5,45,0,0,3125,3126,3,462,231,0,3126,3127,3,528,264,0,3127,527,1,0,0,0,3128,3139,5,205,0,0,3129,3134,5,214,0,0,3130,3133,3,444,222,0,3131,3133,3,530,265,0,3132,3130,1,0,0,0,3132,3131,1,0,0,0,3133,3136,1,0,0,0,3134,3132,1,0,0,0,3134,3135,1,0,0,0,3135,3137,1,0,0,0,3136,3134,1,0,0,0,3137,3139,5,216,0,0,3138,3128,1,0,0,0,3138,3129,1,0,0,0,3139,529,1,0,0,0,3140,3141,3,78,39,0,3141,3142,3,532,266,0,3142,531,1,0,0,0,3143,3145,5,58,0,0,3144,3143,1,0,0,0,3144,3145,1,0,0,0,3145,3146,1,0,0,0,3146,3147,3,494,247,0,3147,533,1,0,0,0,3148,3149,3,492,246,0,3149,3150,5,58,0,0,3150,3151,3,494,247,0,3151,535,1,0,0,0,3152,3154,3,454,227,0,3153,3152,1,0,0,0,3153,3154,1,0,0,0,3154,3157,1,0,0,0,3155,3156,5,82,0,0,3156,3158,3,542,271,0,3157,3155,1,0,0,0,3157,3158,1,0,0,0,3158,3162,1,0,0,0,3159,3161,3,456,228,0,3160,3159,1,0,0,0,3161,3164,1,0,0,0,3162,3160,1,0,0,0,3162,3163,1,0,0,0,3163,537,1,0,0,0,3164,3162,1,0,0,0,3165,3166,3,536,268,0,3166,3167,5,110,0,0,3167,3168,5,45,0,0,3168,3169,3,460,230,0,3169,539,1,0,0,0,3170,3172,3,454,227,0,3171,3170,1,0,0,0,3171,3172,1,0,0,0,3172,3173,1,0,0,0,3173,3177,5,82,0,0,3174,3176,3,456,228,0,3175,3174,1,0,0,0,3176,3179,1,0,0,0,3177,3175,1,0,0,0,3177,3178,1,0,0,0,3178,3180,1,0,0,0,3179,3177,1,0,0,0,3180,3181,5,45,0,0,3181,3182,3,460,230,0,3182,3183,3,542,271,0,3183,541,1,0,0,0,3184,3185,3,980,490,0,3185,543,1,0,0,0,3186,3188,3,484,242,0,3187,3189,5,82,0,0,3188,3187,1,0,0,0,3188,3189,1,0,0,0,3189,3191,1,0,0,0,3190,3192,3,552,276,0,3191,3190,1,0,0,0,3191,3192,1,0,0,0,3192,3196,1,0,0,0,3193,3195,3,488,244,0,3194,3193,1,0,0,0,3195,3198,1,0,0,0,3196,3194,1,0,0,0,3196,3197,1,0,0,0,3197,545,1,0,0,0,3198,3196,1,0,0,0,3199,3200,3,544,272,0,3200,3201,5,110,0,0,3201,3202,3,494,247,0,3202,547,1,0,0,0,3203,3204,3,484,242,0,3204,3208,5,82,0,0,3205,3207,3,488,244,0,3206,3205,1,0,0,0,3207,3210,1,0,0,0,3208,3206,1,0,0,0,3208,3209,1,0,0,0,3209,3211,1,0,0,0,3210,3208,1,0,0,0,3211,3212,3,494,247,0,3212,549,1,0,0,0,3213,3215,3,484,242,0,3214,3216,5,82,0,0,3215,3214,1,0,0,0,3215,3216,1,0,0,0,3216,3217,1,0,0,0,3217,3221,3,552,276,0,3218,3220,3,488,244,0,3219,3218,1,0,0,0,3220,3223,1,0,0,0,3221,3219,1,0,0,0,3221,3222,1,0,0,0,3222,3224,1,0,0,0,3223,3221,1,0,0,0,3224,3225,3,494,247,0,3225,551,1,0,0,0,3226,3227,7,24,0,0,3227,553,1,0,0,0,3228,3229,3,544,272,0,3229,3238,5,59,0,0,3230,3232,3,228,114,0,3231,3233,3,198,99,0,3232,3231,1,0,0,0,3232,3233,1,0,0,0,3233,3239,1,0,0,0,3234,3236,5,110,0,0,3235,3237,3,496,248,0,3236,3235,1,0,0,0,3236,3237,1,0,0,0,3237,3239,1,0,0,0,3238,3230,1,0,0,0,3238,3234,1,0,0,0,3239,3240,1,0,0,0,3240,3241,3,498,249,0,3241,555,1,0,0,0,3242,3243,5,152,0,0,3243,3244,3,558,279,0,3244,557,1,0,0,0,3245,3246,3,560,280,0,3246,559,1,0,0,0,3247,3248,3,562,281,0,3248,561,1,0,0,0,3249,3251,3,404,202,0,3250,3249,1,0,0,0,3250,3251,1,0,0,0,3251,563,1,0,0,0,3252,3253,3,536,268,0,3253,3254,5,91,0,0,3254,3255,5,45,0,0,3255,3256,3,460,230,0,3256,565,1,0,0,0,3257,3258,3,544,272,0,3258,3259,5,91,0,0,3259,3260,3,494,247,0,3260,567,1,0,0,0,3261,3262,3,536,268,0,3262,3263,5,117,0,0,3263,3264,5,45,0,0,3264,3265,3,460,230,0,3265,569,1,0,0,0,3266,3267,3,544,272,0,3267,3268,5,117,0,0,3268,3269,3,494,247,0,3269,571,1,0,0,0,3270,3271,3,458,229,0,3271,3272,5,119,0,0,3272,3273,5,45,0,0,3273,3274,3,460,230,0,3274,3275,3,574,287,0,3275,573,1,0,0,0,3276,3277,3,576,288,0,3277,575,1,0,0,0,3278,3279,3,988,494,0,3279,577,1,0,0,0,3280,3281,3,544,272,0,3281,3282,5,119,0,0,3282,3283,3,494,247,0,3283,579,1,0,0,0,3284,3285,5,217,0,0,3285,3286,3,90,45,0,3286,581,1,0,0,0,3287,3288,3,536,268,0,3288,3289,5,37,0,0,3289,3290,5,45,0,0,3290,3291,3,460,230,0,3291,583,1,0,0,0,3292,3306,3,544,272,0,3293,3295,5,37,0,0,3294,3296,3,496,248,0,3295,3294,1,0,0,0,3295,3296,1,0,0,0,3296,3298,1,0,0,0,3297,3299,3,394,197,0,3298,3297,1,0,0,0,3298,3299,1,0,0,0,3299,3302,1,0,0,0,3300,3301,5,36,0,0,3301,3303,3,586,293,0,3302,3300,1,0,0,0,3302,3303,1,0,0,0,3303,3307,1,0,0,0,3304,3305,5,36,0,0,3305,3307,3,586,293,0,3306,3293,1,0,0,0,3306,3304,1,0,0,0,3307,3308,1,0,0,0,3308,3309,3,500,250,0,3309,585,1,0,0,0,3310,3313,3,588,294,0,3311,3313,3,590,295,0,3312,3310,1,0,0,0,3312,3311,1,0,0,0,3313,587,1,0,0,0,3314,3315,3,268,134,0,3315,3316,5,154,0,0,3316,3317,3,268,134,0,3317,589,1,0,0,0,3318,3319,5,196,0,0,3319,3320,3,268,134,0,3320,3321,5,200,0,0,3321,3326,3,268,134,0,3322,3323,5,200,0,0,3323,3325,3,268,134,0,3324,3322,1,0,0,0,3325,3328,1,0,0,0,3326,3324,1,0,0,0,3326,3327,1,0,0,0,3327,3329,1,0,0,0,3328,3326,1,0,0,0,3329,3330,5,197,0,0,3330,591,1,0,0,0,3331,3336,3,492,246,0,3332,3334,5,22,0,0,3333,3335,3,496,248,0,3334,3333,1,0,0,0,3334,3335,1,0,0,0,3335,3337,1,0,0,0,3336,3332,1,0,0,0,3336,3337,1,0,0,0,3337,3338,1,0,0,0,3338,3339,5,21,0,0,3339,3340,3,268,134,0,3340,3341,5,207,0,0,3341,3342,3,268,134,0,3342,3343,3,500,250,0,3343,593,1,0,0,0,3344,3349,3,492,246,0,3345,3347,5,150,0,0,3346,3348,3,496,248,0,3347,3346,1,0,0,0,3347,3348,1,0,0,0,3348,3350,1,0,0,0,3349,3345,1,0,0,0,3349,3350,1,0,0,0,3350,3351,1,0,0,0,3351,3352,5,69,0,0,3352,3353,3,268,134,0,3353,3354,5,152,0,0,3354,3355,3,268,134,0,3355,3356,3,500,250,0,3356,595,1,0,0,0,3357,3358,3,536,268,0,3358,3359,5,85,0,0,3359,3360,5,45,0,0,3360,3361,3,462,231,0,3361,3362,3,598,299,0,3362,597,1,0,0,0,3363,3373,5,205,0,0,3364,3368,5,214,0,0,3365,3367,3,600,300,0,3366,3365,1,0,0,0,3367,3370,1,0,0,0,3368,3366,1,0,0,0,3368,3369,1,0,0,0,3369,3371,1,0,0,0,3370,3368,1,0,0,0,3371,3373,5,216,0,0,3372,3363,1,0,0,0,3372,3364,1,0,0,0,3373,599,1,0,0,0,3374,3384,3,470,235,0,3375,3384,3,472,236,0,3376,3384,3,602,301,0,3377,3379,3,556,278,0,3378,3377,1,0,0,0,3378,3379,1,0,0,0,3379,3380,1,0,0,0,3380,3384,3,606,303,0,3381,3384,3,88,44,0,3382,3384,3,92,46,0,3383,3374,1,0,0,0,3383,3375,1,0,0,0,3383,3376,1,0,0,0,3383,3378,1,0,0,0,3383,3381,1,0,0,0,3383,3382,1,0,0,0,3384,601,1,0,0,0,3385,3386,3,78,39,0,3386,3387,3,604,302,0,3387,603,1,0,0,0,3388,3394,3,504,252,0,3389,3394,3,524,262,0,3390,3394,3,534,267,0,3391,3394,3,592,296,0,3392,3394,3,594,297,0,3393,3388,1,0,0,0,3393,3389,1,0,0,0,3393,3390,1,0,0,0,3393,3391,1,0,0,0,3393,3392,1,0,0,0,3394,605,1,0,0,0,3395,3396,3,78,39,0,3396,3397,3,608,304,0,3397,607,1,0,0,0,3398,3402,3,610,305,0,3399,3402,3,514,257,0,3400,3402,3,516,258,0,3401,3398,1,0,0,0,3401,3399,1,0,0,0,3401,3400,1,0,0,0,3402,609,1,0,0,0,3403,3404,5,56,0,0,3404,3405,3,494,247,0,3405,611,1,0,0,0,3406,3407,3,544,272,0,3407,3408,5,85,0,0,3408,3409,3,614,307,0,3409,3410,3,598,299,0,3410,613,1,0,0,0,3411,3413,3,496,248,0,3412,3411,1,0,0,0,3412,3413,1,0,0,0,3413,3415,1,0,0,0,3414,3416,3,394,197,0,3415,3414,1,0,0,0,3415,3416,1,0,0,0,3416,3419,1,0,0,0,3417,3418,5,36,0,0,3418,3420,3,616,308,0,3419,3417,1,0,0,0,3419,3420,1,0,0,0,3420,3423,1,0,0,0,3421,3423,3,616,308,0,3422,3412,1,0,0,0,3422,3421,1,0,0,0,3423,615,1,0,0,0,3424,3427,3,618,309,0,3425,3427,3,620,310,0,3426,3424,1,0,0,0,3426,3425,1,0,0,0,3427,617,1,0,0,0,3428,3429,3,622,311,0,3429,3430,5,154,0,0,3430,3431,3,622,311,0,3431,619,1,0,0,0,3432,3433,5,196,0,0,3433,3434,3,622,311,0,3434,3435,5,200,0,0,3435,3440,3,622,311,0,3436,3437,5,200,0,0,3437,3439,3,622,311,0,3438,3436,1,0,0,0,3439,3442,1,0,0,0,3440,3438,1,0,0,0,3440,3441,1,0,0,0,3441,3443,1,0,0,0,3442,3440,1,0,0,0,3443,3444,5,197,0,0,3444,621,1,0,0,0,3445,3446,3,624,312,0,3446,623,1,0,0,0,3447,3449,3,272,136,0,3448,3447,1,0,0,0,3448,3449,1,0,0,0,3449,3453,1,0,0,0,3450,3451,3,44,22,0,3451,3452,7,17,0,0,3452,3454,1,0,0,0,3453,3450,1,0,0,0,3453,3454,1,0,0,0,3454,3455,1,0,0,0,3455,3456,3,228,114,0,3456,625,1,0,0,0,3457,3458,3,536,268,0,3458,3459,5,10,0,0,3459,3460,5,45,0,0,3460,3461,3,460,230,0,3461,627,1,0,0,0,3462,3463,3,544,272,0,3463,3464,3,630,315,0,3464,3465,3,500,250,0,3465,629,1,0,0,0,3466,3468,5,10,0,0,3467,3469,3,496,248,0,3468,3467,1,0,0,0,3468,3469,1,0,0,0,3469,3472,1,0,0,0,3470,3471,5,9,0,0,3471,3473,3,586,293,0,3472,3470,1,0,0,0,3472,3473,1,0,0,0,3473,3477,1,0,0,0,3474,3475,5,9,0,0,3475,3477,3,586,293,0,3476,3466,1,0,0,0,3476,3474,1,0,0,0,3477,631,1,0,0,0,3478,3479,3,536,268,0,3479,3480,5,70,0,0,3480,3481,5,45,0,0,3481,3482,3,460,230,0,3482,633,1,0,0,0,3483,3484,3,544,272,0,3484,3485,5,99,0,0,3485,3486,3,636,318,0,3486,3487,3,464,232,0,3487,635,1,0,0,0,3488,3490,3,496,248,0,3489,3488,1,0,0,0,3489,3490,1,0,0,0,3490,3492,1,0,0,0,3491,3493,3,394,197,0,3492,3491,1,0,0,0,3492,3493,1,0,0,0,3493,3496,1,0,0,0,3494,3495,5,111,0,0,3495,3497,3,646,323,0,3496,3494,1,0,0,0,3496,3497,1,0,0,0,3497,3503,1,0,0,0,3498,3499,5,74,0,0,3499,3500,3,638,319,0,3500,3501,5,154,0,0,3501,3502,3,638,319,0,3502,3504,1,0,0,0,3503,3498,1,0,0,0,3503,3504,1,0,0,0,3504,3510,1,0,0,0,3505,3506,3,638,319,0,3506,3507,5,154,0,0,3507,3508,3,638,319,0,3508,3510,1,0,0,0,3509,3489,1,0,0,0,3509,3505,1,0,0,0,3510,637,1,0,0,0,3511,3512,3,640,320,0,3512,639,1,0,0,0,3513,3514,3,228,114,0,3514,641,1,0,0,0,3515,3516,3,544,272,0,3516,3517,5,70,0,0,3517,3518,3,376,188,0,3518,3519,3,464,232,0,3519,643,1,0,0,0,3520,3521,3,544,272,0,3521,3522,5,150,0,0,3522,3523,5,70,0,0,3523,3524,3,376,188,0,3524,3525,3,464,232,0,3525,645,1,0,0,0,3526,3527,3,648,324,0,3527,647,1,0,0,0,3528,3529,3,380,190,0,3529,649,1,0,0,0,3530,3533,3,90,45,0,3531,3533,3,652,326,0,3532,3530,1,0,0,0,3532,3531,1,0,0,0,3533,651,1,0,0,0,3534,3535,3,240,120,0,3535,3536,5,202,0,0,3536,3538,1,0,0,0,3537,3534,1,0,0,0,3538,3539,1,0,0,0,3539,3537,1,0,0,0,3539,3540,1,0,0,0,3540,3541,1,0,0,0,3541,3542,3,240,120,0,3542,3543,5,202,0,0,3543,653,1,0,0,0,3544,3545,3,536,268,0,3545,3546,5,4,0,0,3546,3547,5,45,0,0,3547,3548,3,462,231,0,3548,3549,3,656,328,0,3549,655,1,0,0,0,3550,3560,5,205,0,0,3551,3555,5,214,0,0,3552,3554,3,658,329,0,3553,3552,1,0,0,0,3554,3557,1,0,0,0,3555,3553,1,0,0,0,3555,3556,1,0,0,0,3556,3558,1,0,0,0,3557,3555,1,0,0,0,3558,3560,5,216,0,0,3559,3550,1,0,0,0,3559,3551,1,0,0,0,3560,657,1,0,0,0,3561,3581,3,660,330,0,3562,3566,3,664,332,0,3563,3565,3,668,334,0,3564,3563,1,0,0,0,3565,3568,1,0,0,0,3566,3564,1,0,0,0,3566,3567,1,0,0,0,3567,3581,1,0,0,0,3568,3566,1,0,0,0,3569,3571,3,556,278,0,3570,3569,1,0,0,0,3570,3571,1,0,0,0,3571,3572,1,0,0,0,3572,3576,3,662,331,0,3573,3575,3,668,334,0,3574,3573,1,0,0,0,3575,3578,1,0,0,0,3576,3574,1,0,0,0,3576,3577,1,0,0,0,3577,3581,1,0,0,0,3578,3576,1,0,0,0,3579,3581,3,670,335,0,3580,3561,1,0,0,0,3580,3562,1,0,0,0,3580,3570,1,0,0,0,3580,3579,1,0,0,0,3581,659,1,0,0,0,3582,3592,3,92,46,0,3583,3592,3,88,44,0,3584,3592,3,470,235,0,3585,3592,3,472,236,0,3586,3592,3,474,237,0,3587,3589,3,556,278,0,3588,3587,1,0,0,0,3588,3589,1,0,0,0,3589,3590,1,0,0,0,3590,3592,3,478,239,0,3591,3582,1,0,0,0,3591,3583,1,0,0,0,3591,3584,1,0,0,0,3591,3585,1,0,0,0,3591,3586,1,0,0,0,3591,3588,1,0,0,0,3592,661,1,0,0,0,3593,3596,3,480,240,0,3594,3596,3,666,333,0,3595,3593,1,0,0,0,3595,3594,1,0,0,0,3596,663,1,0,0,0,3597,3598,3,78,39,0,3598,3599,5,69,0,0,3599,3600,3,90,45,0,3600,3601,3,48,24,0,3601,665,1,0,0,0,3602,3603,3,78,39,0,3603,3604,3,680,340,0,3604,667,1,0,0,0,3605,3606,3,78,39,0,3606,3607,3,758,379,0,3607,669,1,0,0,0,3608,3609,3,78,39,0,3609,3610,3,766,383,0,3610,671,1,0,0,0,3611,3612,3,544,272,0,3612,3613,5,4,0,0,3613,3614,3,674,337,0,3614,3615,3,656,328,0,3615,673,1,0,0,0,3616,3618,3,496,248,0,3617,3616,1,0,0,0,3617,3618,1,0,0,0,3618,3620,1,0,0,0,3619,3621,3,394,197,0,3620,3619,1,0,0,0,3620,3621,1,0,0,0,3621,675,1,0,0,0,3622,3623,3,544,272,0,3623,3624,5,118,0,0,3624,3625,3,678,339,0,3625,3626,3,656,328,0,3626,677,1,0,0,0,3627,3629,3,228,114,0,3628,3630,3,198,99,0,3629,3628,1,0,0,0,3629,3630,1,0,0,0,3630,3636,1,0,0,0,3631,3633,5,4,0,0,3632,3634,3,496,248,0,3633,3632,1,0,0,0,3633,3634,1,0,0,0,3634,3636,1,0,0,0,3635,3627,1,0,0,0,3635,3631,1,0,0,0,3636,3638,1,0,0,0,3637,3639,3,394,197,0,3638,3637,1,0,0,0,3638,3639,1,0,0,0,3639,679,1,0,0,0,3640,3649,3,686,343,0,3641,3649,3,714,357,0,3642,3649,3,698,349,0,3643,3649,3,728,364,0,3644,3649,3,738,369,0,3645,3649,3,740,370,0,3646,3649,3,750,375,0,3647,3649,3,752,376,0,3648,3640,1,0,0,0,3648,3641,1,0,0,0,3648,3642,1,0,0,0,3648,3643,1,0,0,0,3648,3644,1,0,0,0,3648,3645,1,0,0,0,3648,3646,1,0,0,0,3648,3647,1,0,0,0,3649,681,1,0,0,0,3650,3652,5,4,0,0,3651,3653,3,496,248,0,3652,3651,1,0,0,0,3652,3653,1,0,0,0,3653,683,1,0,0,0,3654,3656,3,544,272,0,3655,3657,3,682,341,0,3656,3655,1,0,0,0,3656,3657,1,0,0,0,3657,685,1,0,0,0,3658,3663,3,690,345,0,3659,3663,3,692,346,0,3660,3663,3,694,347,0,3661,3663,3,696,348,0,3662,3658,1,0,0,0,3662,3659,1,0,0,0,3662,3660,1,0,0,0,3662,3661,1,0,0,0,3663,687,1,0,0,0,3664,3666,3,482,241,0,3665,3667,5,82,0,0,3666,3665,1,0,0,0,3666,3667,1,0,0,0,3667,3669,1,0,0,0,3668,3670,3,552,276,0,3669,3668,1,0,0,0,3669,3670,1,0,0,0,3670,3674,1,0,0,0,3671,3673,3,488,244,0,3672,3671,1,0,0,0,3673,3676,1,0,0,0,3674,3672,1,0,0,0,3674,3675,1,0,0,0,3675,689,1,0,0,0,3676,3674,1,0,0,0,3677,3678,3,688,344,0,3678,3680,5,98,0,0,3679,3681,3,496,248,0,3680,3679,1,0,0,0,3680,3681,1,0,0,0,3681,3682,1,0,0,0,3682,3683,3,656,328,0,3683,691,1,0,0,0,3684,3685,3,688,344,0,3685,3687,5,44,0,0,3686,3688,3,496,248,0,3687,3686,1,0,0,0,3687,3688,1,0,0,0,3688,3689,1,0,0,0,3689,3690,3,656,328,0,3690,693,1,0,0,0,3691,3692,3,688,344,0,3692,3694,5,92,0,0,3693,3695,3,496,248,0,3694,3693,1,0,0,0,3694,3695,1,0,0,0,3695,3696,1,0,0,0,3696,3697,3,656,328,0,3697,695,1,0,0,0,3698,3699,3,688,344,0,3699,3701,5,72,0,0,3700,3702,3,496,248,0,3701,3700,1,0,0,0,3701,3702,1,0,0,0,3702,3703,1,0,0,0,3703,3704,3,656,328,0,3704,697,1,0,0,0,3705,3706,3,544,272,0,3706,3707,3,700,350,0,3707,3708,3,656,328,0,3708,699,1,0,0,0,3709,3711,3,682,341,0,3710,3709,1,0,0,0,3710,3711,1,0,0,0,3711,3712,1,0,0,0,3712,3713,5,3,0,0,3713,3714,3,702,351,0,3714,701,1,0,0,0,3715,3718,3,704,352,0,3716,3717,5,168,0,0,3717,3719,3,720,360,0,3718,3716,1,0,0,0,3718,3719,1,0,0,0,3719,703,1,0,0,0,3720,3721,3,706,353,0,3721,705,1,0,0,0,3722,3731,3,380,190,0,3723,3725,3,46,23,0,3724,3723,1,0,0,0,3724,3725,1,0,0,0,3725,3727,1,0,0,0,3726,3728,3,382,191,0,3727,3726,1,0,0,0,3727,3728,1,0,0,0,3728,3729,1,0,0,0,3729,3731,3,708,354,0,3730,3722,1,0,0,0,3730,3724,1,0,0,0,3731,707,1,0,0,0,3732,3733,3,710,355,0,3733,709,1,0,0,0,3734,3735,3,712,356,0,3735,711,1,0,0,0,3736,3737,7,25,0,0,3737,3741,3,40,20,0,3738,3739,5,171,0,0,3739,3741,3,42,21,0,3740,3736,1,0,0,0,3740,3738,1,0,0,0,3741,713,1,0,0,0,3742,3745,3,544,272,0,3743,3746,3,682,341,0,3744,3746,3,674,337,0,3745,3743,1,0,0,0,3745,3744,1,0,0,0,3745,3746,1,0,0,0,3746,3747,1,0,0,0,3747,3755,5,136,0,0,3748,3750,3,720,360,0,3749,3751,3,718,359,0,3750,3749,1,0,0,0,3750,3751,1,0,0,0,3751,3756,1,0,0,0,3752,3753,3,726,363,0,3753,3754,3,718,359,0,3754,3756,1,0,0,0,3755,3748,1,0,0,0,3755,3752,1,0,0,0,3755,3756,1,0,0,0,3756,3757,1,0,0,0,3757,3758,3,656,328,0,3758,715,1,0,0,0,3759,3761,3,682,341,0,3760,3759,1,0,0,0,3760,3761,1,0,0,0,3761,3762,1,0,0,0,3762,3763,5,136,0,0,3763,3765,3,720,360,0,3764,3766,3,718,359,0,3765,3764,1,0,0,0,3765,3766,1,0,0,0,3766,717,1,0,0,0,3767,3768,5,168,0,0,3768,3771,3,720,360,0,3769,3770,5,154,0,0,3770,3772,3,720,360,0,3771,3769,1,0,0,0,3771,3772,1,0,0,0,3772,3778,1,0,0,0,3773,3774,3,726,363,0,3774,3775,5,154,0,0,3775,3776,3,720,360,0,3776,3778,1,0,0,0,3777,3767,1,0,0,0,3777,3773,1,0,0,0,3778,719,1,0,0,0,3779,3780,3,722,361,0,3780,721,1,0,0,0,3781,3782,3,724,362,0,3782,723,1,0,0,0,3783,3784,3,0,0,0,3784,725,1,0,0,0,3785,3786,3,982,491,0,3786,727,1,0,0,0,3787,3788,3,544,272,0,3788,3789,3,730,365,0,3789,3790,3,656,328,0,3790,729,1,0,0,0,3791,3793,3,682,341,0,3792,3791,1,0,0,0,3792,3793,1,0,0,0,3793,3794,1,0,0,0,3794,3795,5,15,0,0,3795,3796,3,732,366,0,3796,3797,3,340,170,0,3797,3798,5,184,0,0,3798,3799,3,720,360,0,3799,731,1,0,0,0,3800,3801,3,734,367,0,3801,733,1,0,0,0,3802,3803,3,736,368,0,3803,3804,5,202,0,0,3804,3806,1,0,0,0,3805,3802,1,0,0,0,3805,3806,1,0,0,0,3806,735,1,0,0,0,3807,3808,3,986,493,0,3808,737,1,0,0,0,3809,3811,3,544,272,0,3810,3812,3,682,341,0,3811,3810,1,0,0,0,3811,3812,1,0,0,0,3812,3813,1,0,0,0,3813,3815,5,151,0,0,3814,3816,3,720,360,0,3815,3814,1,0,0,0,3815,3816,1,0,0,0,3816,3817,1,0,0,0,3817,3818,3,656,328,0,3818,739,1,0,0,0,3819,3820,3,684,342,0,3820,3821,5,77,0,0,3821,3822,3,742,371,0,3822,3828,3,744,372,0,3823,3826,5,55,0,0,3824,3827,3,744,372,0,3825,3827,3,748,374,0,3826,3824,1,0,0,0,3826,3825,1,0,0,0,3827,3829,1,0,0,0,3828,3823,1,0,0,0,3828,3829,1,0,0,0,3829,741,1,0,0,0,3830,3831,3,0,0,0,3831,743,1,0,0,0,3832,3833,3,746,373,0,3833,745,1,0,0,0,3834,3836,5,4,0,0,3835,3837,3,496,248,0,3836,3835,1,0,0,0,3836,3837,1,0,0,0,3837,3839,1,0,0,0,3838,3834,1,0,0,0,3838,3839,1,0,0,0,3839,3840,1,0,0,0,3840,3844,5,214,0,0,3841,3843,3,658,329,0,3842,3841,1,0,0,0,3843,3846,1,0,0,0,3844,3842,1,0,0,0,3844,3845,1,0,0,0,3845,3847,1,0,0,0,3846,3844,1,0,0,0,3847,3848,5,216,0,0,3848,747,1,0,0,0,3849,3850,3,740,370,0,3850,749,1,0,0,0,3851,3856,3,684,342,0,3852,3853,5,172,0,0,3853,3857,3,742,371,0,3854,3855,5,96,0,0,3855,3857,3,726,363,0,3856,3852,1,0,0,0,3856,3854,1,0,0,0,3857,3858,1,0,0,0,3858,3863,3,744,372,0,3859,3860,5,161,0,0,3860,3861,3,742,371,0,3861,3862,5,205,0,0,3862,3864,1,0,0,0,3863,3859,1,0,0,0,3863,3864,1,0,0,0,3864,751,1,0,0,0,3865,3866,3,684,342,0,3866,3867,5,71,0,0,3867,3868,3,754,377,0,3868,3869,5,80,0,0,3869,3870,3,720,360,0,3870,3871,3,744,372,0,3871,753,1,0,0,0,3872,3874,3,496,248,0,3873,3872,1,0,0,0,3873,3874,1,0,0,0,3874,755,1,0,0,0,3875,3877,3,496,248,0,3876,3875,1,0,0,0,3876,3877,1,0,0,0,3877,757,1,0,0,0,3878,3882,3,760,380,0,3879,3882,3,762,381,0,3880,3882,3,764,382,0,3881,3878,1,0,0,0,3881,3879,1,0,0,0,3881,3880,1,0,0,0,3882,3883,1,0,0,0,3883,3884,3,500,250,0,3884,759,1,0,0,0,3885,3886,3,560,280,0,3886,3887,5,152,0,0,3887,3888,3,268,134,0,3888,761,1,0,0,0,3889,3890,3,810,405,0,3890,3891,5,152,0,0,3891,3892,3,824,412,0,3892,763,1,0,0,0,3893,3894,5,55,0,0,3894,3895,3,824,412,0,3895,765,1,0,0,0,3896,3898,5,150,0,0,3897,3899,3,496,248,0,3898,3897,1,0,0,0,3898,3899,1,0,0,0,3899,3901,1,0,0,0,3900,3896,1,0,0,0,3900,3901,1,0,0,0,3901,3902,1,0,0,0,3902,3903,5,69,0,0,3903,3904,3,340,170,0,3904,3905,3,810,405,0,3905,3906,5,152,0,0,3906,3907,3,824,412,0,3907,3908,3,500,250,0,3908,767,1,0,0,0,3909,3910,3,536,268,0,3910,3911,5,142,0,0,3911,3912,5,45,0,0,3912,3913,3,462,231,0,3913,3914,3,770,385,0,3914,769,1,0,0,0,3915,3928,5,205,0,0,3916,3918,5,116,0,0,3917,3916,1,0,0,0,3917,3918,1,0,0,0,3918,3919,1,0,0,0,3919,3923,5,214,0,0,3920,3922,3,772,386,0,3921,3920,1,0,0,0,3922,3925,1,0,0,0,3923,3921,1,0,0,0,3923,3924,1,0,0,0,3924,3926,1,0,0,0,3925,3923,1,0,0,0,3926,3928,5,216,0,0,3927,3915,1,0,0,0,3927,3917,1,0,0,0,3928,771,1,0,0,0,3929,3951,3,660,330,0,3930,3932,3,556,278,0,3931,3930,1,0,0,0,3931,3932,1,0,0,0,3932,3933,1,0,0,0,3933,3937,3,480,240,0,3934,3936,3,794,397,0,3935,3934,1,0,0,0,3936,3939,1,0,0,0,3937,3935,1,0,0,0,3937,3938,1,0,0,0,3938,3951,1,0,0,0,3939,3937,1,0,0,0,3940,3951,3,792,396,0,3941,3945,3,774,387,0,3942,3944,3,780,390,0,3943,3942,1,0,0,0,3944,3947,1,0,0,0,3945,3943,1,0,0,0,3945,3946,1,0,0,0,3946,3951,1,0,0,0,3947,3945,1,0,0,0,3948,3951,3,776,388,0,3949,3951,3,778,389,0,3950,3929,1,0,0,0,3950,3931,1,0,0,0,3950,3940,1,0,0,0,3950,3941,1,0,0,0,3950,3948,1,0,0,0,3950,3949,1,0,0,0,3951,773,1,0,0,0,3952,3953,3,78,39,0,3953,3954,5,57,0,0,3954,3955,3,782,391,0,3955,775,1,0,0,0,3956,3957,3,78,39,0,3957,3958,5,53,0,0,3958,3959,3,782,391,0,3959,777,1,0,0,0,3960,3961,3,78,39,0,3961,3962,5,61,0,0,3962,3963,3,782,391,0,3963,779,1,0,0,0,3964,3968,3,78,39,0,3965,3969,3,762,381,0,3966,3967,5,152,0,0,3967,3969,3,824,412,0,3968,3965,1,0,0,0,3968,3966,1,0,0,0,3969,3970,1,0,0,0,3970,3971,5,205,0,0,3971,781,1,0,0,0,3972,3973,3,976,488,0,3973,3974,5,205,0,0,3974,3980,1,0,0,0,3975,3980,3,784,392,0,3976,3980,3,786,393,0,3977,3980,3,788,394,0,3978,3980,3,790,395,0,3979,3972,1,0,0,0,3979,3975,1,0,0,0,3979,3976,1,0,0,0,3979,3977,1,0,0,0,3979,3978,1,0,0,0,3980,783,1,0,0,0,3981,3982,3,678,339,0,3982,3983,3,656,328,0,3983,785,1,0,0,0,3984,3985,3,700,350,0,3985,3986,3,656,328,0,3986,787,1,0,0,0,3987,3988,3,716,358,0,3988,3989,3,656,328,0,3989,789,1,0,0,0,3990,3991,3,730,365,0,3991,3992,3,656,328,0,3992,791,1,0,0,0,3993,3994,3,78,39,0,3994,3995,3,802,401,0,3995,793,1,0,0,0,3996,3997,3,78,39,0,3997,3998,3,804,402,0,3998,795,1,0,0,0,3999,4e3,3,544,272,0,4e3,4001,5,142,0,0,4001,4002,3,674,337,0,4002,4003,3,798,399,0,4003,797,1,0,0,0,4004,4017,5,205,0,0,4005,4007,5,116,0,0,4006,4005,1,0,0,0,4006,4007,1,0,0,0,4007,4008,1,0,0,0,4008,4012,5,214,0,0,4009,4011,3,772,386,0,4010,4009,1,0,0,0,4011,4014,1,0,0,0,4012,4010,1,0,0,0,4012,4013,1,0,0,0,4013,4015,1,0,0,0,4014,4012,1,0,0,0,4015,4017,5,216,0,0,4016,4004,1,0,0,0,4016,4006,1,0,0,0,4017,799,1,0,0,0,4018,4019,3,544,272,0,4019,4028,5,60,0,0,4020,4022,3,228,114,0,4021,4023,3,198,99,0,4022,4021,1,0,0,0,4022,4023,1,0,0,0,4023,4029,1,0,0,0,4024,4026,5,142,0,0,4025,4027,3,496,248,0,4026,4025,1,0,0,0,4026,4027,1,0,0,0,4027,4029,1,0,0,0,4028,4020,1,0,0,0,4028,4024,1,0,0,0,4029,4031,1,0,0,0,4030,4032,3,394,197,0,4031,4030,1,0,0,0,4031,4032,1,0,0,0,4032,4033,1,0,0,0,4033,4034,3,798,399,0,4034,801,1,0,0,0,4035,4040,5,155,0,0,4036,4038,3,496,248,0,4037,4036,1,0,0,0,4037,4038,1,0,0,0,4038,4039,1,0,0,0,4039,4041,5,69,0,0,4040,4037,1,0,0,0,4040,4041,1,0,0,0,4041,4042,1,0,0,0,4042,4043,3,340,170,0,4043,4047,3,726,363,0,4044,4045,3,726,363,0,4045,4046,3,806,403,0,4046,4048,1,0,0,0,4047,4044,1,0,0,0,4047,4048,1,0,0,0,4048,4050,1,0,0,0,4049,4051,3,810,405,0,4050,4049,1,0,0,0,4050,4051,1,0,0,0,4051,4053,1,0,0,0,4052,4054,3,812,406,0,4053,4052,1,0,0,0,4053,4054,1,0,0,0,4054,4055,1,0,0,0,4055,4056,5,152,0,0,4056,4057,3,824,412,0,4057,4058,3,656,328,0,4058,803,1,0,0,0,4059,4084,3,726,363,0,4060,4064,5,155,0,0,4061,4062,3,726,363,0,4062,4063,3,806,403,0,4063,4065,1,0,0,0,4064,4061,1,0,0,0,4064,4065,1,0,0,0,4065,4067,1,0,0,0,4066,4068,3,810,405,0,4067,4066,1,0,0,0,4067,4068,1,0,0,0,4068,4070,1,0,0,0,4069,4071,3,812,406,0,4070,4069,1,0,0,0,4070,4071,1,0,0,0,4071,4085,1,0,0,0,4072,4073,3,726,363,0,4073,4075,3,806,403,0,4074,4076,3,810,405,0,4075,4074,1,0,0,0,4075,4076,1,0,0,0,4076,4078,1,0,0,0,4077,4079,3,812,406,0,4078,4077,1,0,0,0,4078,4079,1,0,0,0,4079,4085,1,0,0,0,4080,4082,3,810,405,0,4081,4083,3,812,406,0,4082,4081,1,0,0,0,4082,4083,1,0,0,0,4083,4085,1,0,0,0,4084,4060,1,0,0,0,4084,4072,1,0,0,0,4084,4080,1,0,0,0,4084,4085,1,0,0,0,4085,4086,1,0,0,0,4086,4087,5,152,0,0,4087,4088,3,824,412,0,4088,4089,3,656,328,0,4089,805,1,0,0,0,4090,4091,5,3,0,0,4091,4092,3,808,404,0,4092,807,1,0,0,0,4093,4094,3,702,351,0,4094,809,1,0,0,0,4095,4096,5,77,0,0,4096,4097,3,0,0,0,4097,811,1,0,0,0,4098,4099,5,53,0,0,4099,4100,3,814,407,0,4100,813,1,0,0,0,4101,4107,3,976,488,0,4102,4107,3,816,408,0,4103,4107,3,818,409,0,4104,4107,3,820,410,0,4105,4107,3,822,411,0,4106,4101,1,0,0,0,4106,4102,1,0,0,0,4106,4103,1,0,0,0,4106,4104,1,0,0,0,4106,4105,1,0,0,0,4107,815,1,0,0,0,4108,4117,3,678,339,0,4109,4113,5,214,0,0,4110,4112,3,658,329,0,4111,4110,1,0,0,0,4112,4115,1,0,0,0,4113,4111,1,0,0,0,4113,4114,1,0,0,0,4114,4116,1,0,0,0,4115,4113,1,0,0,0,4116,4118,5,216,0,0,4117,4109,1,0,0,0,4117,4118,1,0,0,0,4118,817,1,0,0,0,4119,4128,3,700,350,0,4120,4124,5,214,0,0,4121,4123,3,658,329,0,4122,4121,1,0,0,0,4123,4126,1,0,0,0,4124,4122,1,0,0,0,4124,4125,1,0,0,0,4125,4127,1,0,0,0,4126,4124,1,0,0,0,4127,4129,5,216,0,0,4128,4120,1,0,0,0,4128,4129,1,0,0,0,4129,819,1,0,0,0,4130,4139,3,716,358,0,4131,4135,5,214,0,0,4132,4134,3,658,329,0,4133,4132,1,0,0,0,4134,4137,1,0,0,0,4135,4133,1,0,0,0,4135,4136,1,0,0,0,4136,4138,1,0,0,0,4137,4135,1,0,0,0,4138,4140,5,216,0,0,4139,4131,1,0,0,0,4139,4140,1,0,0,0,4140,821,1,0,0,0,4141,4150,3,730,365,0,4142,4146,5,214,0,0,4143,4145,3,658,329,0,4144,4143,1,0,0,0,4145,4148,1,0,0,0,4146,4144,1,0,0,0,4146,4147,1,0,0,0,4147,4149,1,0,0,0,4148,4146,1,0,0,0,4149,4151,5,216,0,0,4150,4142,1,0,0,0,4150,4151,1,0,0,0,4151,823,1,0,0,0,4152,4153,3,826,413,0,4153,825,1,0,0,0,4154,4155,3,828,414,0,4155,4156,3,268,134,0,4156,827,1,0,0,0,4157,4158,3,978,489,0,4158,829,1,0,0,0,4159,4160,3,536,268,0,4160,4161,5,25,0,0,4161,4162,5,45,0,0,4162,4163,3,462,231,0,4163,4164,3,834,417,0,4164,831,1,0,0,0,4165,4166,3,544,272,0,4166,4167,5,25,0,0,4167,4168,3,674,337,0,4168,4169,3,834,417,0,4169,833,1,0,0,0,4170,4176,5,205,0,0,4171,4172,5,214,0,0,4172,4173,3,836,418,0,4173,4174,5,216,0,0,4174,4176,1,0,0,0,4175,4170,1,0,0,0,4175,4171,1,0,0,0,4176,835,1,0,0,0,4177,4179,3,838,419,0,4178,4177,1,0,0,0,4179,4182,1,0,0,0,4180,4178,1,0,0,0,4180,4181,1,0,0,0,4181,4184,1,0,0,0,4182,4180,1,0,0,0,4183,4185,3,296,148,0,4184,4183,1,0,0,0,4184,4185,1,0,0,0,4185,837,1,0,0,0,4186,4189,3,658,329,0,4187,4189,3,840,420,0,4188,4186,1,0,0,0,4188,4187,1,0,0,0,4189,839,1,0,0,0,4190,4192,3,78,39,0,4191,4190,1,0,0,0,4191,4192,1,0,0,0,4192,4193,1,0,0,0,4193,4194,5,134,0,0,4194,4195,3,452,226,0,4195,841,1,0,0,0,4196,4197,3,536,268,0,4197,4198,5,41,0,0,4198,4199,5,45,0,0,4199,4200,3,462,231,0,4200,4201,3,834,417,0,4201,843,1,0,0,0,4202,4203,3,544,272,0,4203,4204,5,41,0,0,4204,4205,3,848,424,0,4205,4206,3,834,417,0,4206,845,1,0,0,0,4207,4208,3,544,272,0,4208,4210,5,14,0,0,4209,4211,5,107,0,0,4210,4209,1,0,0,0,4210,4211,1,0,0,0,4211,4218,1,0,0,0,4212,4214,3,228,114,0,4213,4215,3,198,99,0,4214,4213,1,0,0,0,4214,4215,1,0,0,0,4215,4219,1,0,0,0,4216,4217,5,41,0,0,4217,4219,3,848,424,0,4218,4212,1,0,0,0,4218,4216,1,0,0,0,4219,4220,1,0,0,0,4220,4221,3,834,417,0,4221,847,1,0,0,0,4222,4224,3,496,248,0,4223,4222,1,0,0,0,4223,4224,1,0,0,0,4224,4226,1,0,0,0,4225,4227,3,394,197,0,4226,4225,1,0,0,0,4226,4227,1,0,0,0,4227,849,1,0,0,0,4228,4229,3,536,268,0,4229,4230,5,133,0,0,4230,4231,5,45,0,0,4231,4232,3,462,231,0,4232,4233,3,852,426,0,4233,851,1,0,0,0,4234,4244,5,205,0,0,4235,4239,5,214,0,0,4236,4238,3,854,427,0,4237,4236,1,0,0,0,4238,4241,1,0,0,0,4239,4237,1,0,0,0,4239,4240,1,0,0,0,4240,4242,1,0,0,0,4241,4239,1,0,0,0,4242,4244,5,216,0,0,4243,4234,1,0,0,0,4243,4235,1,0,0,0,4244,853,1,0,0,0,4245,4253,3,466,233,0,4246,4253,3,856,428,0,4247,4253,3,860,430,0,4248,4253,3,866,433,0,4249,4253,3,914,457,0,4250,4253,3,870,435,0,4251,4253,3,874,437,0,4252,4245,1,0,0,0,4252,4246,1,0,0,0,4252,4247,1,0,0,0,4252,4248,1,0,0,0,4252,4249,1,0,0,0,4252,4250,1,0,0,0,4252,4251,1,0,0,0,4253,855,1,0,0,0,4254,4255,3,78,39,0,4255,4256,3,858,429,0,4256,857,1,0,0,0,4257,4261,5,146,0,0,4258,4260,3,488,244,0,4259,4258,1,0,0,0,4260,4263,1,0,0,0,4261,4259,1,0,0,0,4261,4262,1,0,0,0,4262,4264,1,0,0,0,4263,4261,1,0,0,0,4264,4265,3,494,247,0,4265,859,1,0,0,0,4266,4268,3,78,39,0,4267,4266,1,0,0,0,4267,4268,1,0,0,0,4268,4269,1,0,0,0,4269,4270,3,862,431,0,4270,4271,3,864,432,0,4271,861,1,0,0,0,4272,4273,7,26,0,0,4273,863,1,0,0,0,4274,4276,3,228,114,0,4275,4277,3,198,99,0,4276,4275,1,0,0,0,4276,4277,1,0,0,0,4277,4278,1,0,0,0,4278,4279,3,852,426,0,4279,4298,1,0,0,0,4280,4282,3,488,244,0,4281,4280,1,0,0,0,4282,4285,1,0,0,0,4283,4281,1,0,0,0,4283,4284,1,0,0,0,4284,4286,1,0,0,0,4285,4283,1,0,0,0,4286,4293,5,41,0,0,4287,4289,3,488,244,0,4288,4287,1,0,0,0,4289,4290,1,0,0,0,4290,4288,1,0,0,0,4290,4291,1,0,0,0,4291,4293,1,0,0,0,4292,4283,1,0,0,0,4292,4288,1,0,0,0,4293,4294,1,0,0,0,4294,4295,3,848,424,0,4295,4296,3,834,417,0,4296,4298,1,0,0,0,4297,4274,1,0,0,0,4297,4292,1,0,0,0,4298,865,1,0,0,0,4299,4301,3,78,39,0,4300,4299,1,0,0,0,4300,4301,1,0,0,0,4301,4302,1,0,0,0,4302,4303,5,73,0,0,4303,4304,3,868,434,0,4304,867,1,0,0,0,4305,4307,3,228,114,0,4306,4308,3,198,99,0,4307,4306,1,0,0,0,4307,4308,1,0,0,0,4308,4309,1,0,0,0,4309,4310,3,834,417,0,4310,4329,1,0,0,0,4311,4313,3,488,244,0,4312,4311,1,0,0,0,4313,4316,1,0,0,0,4314,4312,1,0,0,0,4314,4315,1,0,0,0,4315,4317,1,0,0,0,4316,4314,1,0,0,0,4317,4324,5,32,0,0,4318,4320,3,488,244,0,4319,4318,1,0,0,0,4320,4321,1,0,0,0,4321,4319,1,0,0,0,4321,4322,1,0,0,0,4322,4324,1,0,0,0,4323,4314,1,0,0,0,4323,4319,1,0,0,0,4324,4325,1,0,0,0,4325,4326,3,974,487,0,4326,4327,3,834,417,0,4327,4329,1,0,0,0,4328,4305,1,0,0,0,4328,4323,1,0,0,0,4329,869,1,0,0,0,4330,4331,3,78,39,0,4331,4332,3,872,436,0,4332,871,1,0,0,0,4333,4337,5,5,0,0,4334,4336,3,488,244,0,4335,4334,1,0,0,0,4336,4339,1,0,0,0,4337,4335,1,0,0,0,4337,4338,1,0,0,0,4338,4340,1,0,0,0,4339,4337,1,0,0,0,4340,4341,3,494,247,0,4341,873,1,0,0,0,4342,4343,3,78,39,0,4343,4344,3,876,438,0,4344,875,1,0,0,0,4345,4349,5,140,0,0,4346,4348,3,488,244,0,4347,4346,1,0,0,0,4348,4351,1,0,0,0,4349,4347,1,0,0,0,4349,4350,1,0,0,0,4350,4352,1,0,0,0,4351,4349,1,0,0,0,4352,4353,3,494,247,0,4353,877,1,0,0,0,4354,4355,3,544,272,0,4355,4356,5,133,0,0,4356,4357,3,848,424,0,4357,4358,3,852,426,0,4358,879,1,0,0,0,4359,4364,3,544,272,0,4360,4362,5,14,0,0,4361,4363,5,107,0,0,4362,4361,1,0,0,0,4362,4363,1,0,0,0,4363,4365,1,0,0,0,4364,4360,1,0,0,0,4364,4365,1,0,0,0,4365,4366,1,0,0,0,4366,4375,5,135,0,0,4367,4369,3,228,114,0,4368,4370,3,198,99,0,4369,4368,1,0,0,0,4369,4370,1,0,0,0,4370,4376,1,0,0,0,4371,4373,5,133,0,0,4372,4374,3,496,248,0,4373,4372,1,0,0,0,4373,4374,1,0,0,0,4374,4376,1,0,0,0,4375,4367,1,0,0,0,4375,4371,1,0,0,0,4376,4378,1,0,0,0,4377,4379,3,394,197,0,4378,4377,1,0,0,0,4378,4379,1,0,0,0,4379,4382,1,0,0,0,4380,4381,5,24,0,0,4381,4383,3,882,441,0,4382,4380,1,0,0,0,4382,4383,1,0,0,0,4383,4384,1,0,0,0,4384,4385,3,852,426,0,4385,881,1,0,0,0,4386,4387,3,884,442,0,4387,883,1,0,0,0,4388,4389,3,886,443,0,4389,885,1,0,0,0,4390,4391,3,888,444,0,4391,887,1,0,0,0,4392,4393,3,340,170,0,4393,889,1,0,0,0,4394,4395,3,536,268,0,4395,4396,5,32,0,0,4396,4397,5,45,0,0,4397,4398,3,462,231,0,4398,4399,3,852,426,0,4399,891,1,0,0,0,4400,4401,3,544,272,0,4401,4402,5,32,0,0,4402,4403,3,848,424,0,4403,4404,3,852,426,0,4404,893,1,0,0,0,4405,4406,3,536,268,0,4406,4407,5,26,0,0,4407,4408,5,45,0,0,4408,4409,3,462,231,0,4409,4410,3,898,449,0,4410,895,1,0,0,0,4411,4412,3,544,272,0,4412,4413,5,26,0,0,4413,4414,3,848,424,0,4414,4415,3,898,449,0,4415,897,1,0,0,0,4416,4429,5,205,0,0,4417,4421,5,214,0,0,4418,4420,3,900,450,0,4419,4418,1,0,0,0,4420,4423,1,0,0,0,4421,4419,1,0,0,0,4421,4422,1,0,0,0,4422,4425,1,0,0,0,4423,4421,1,0,0,0,4424,4426,3,296,148,0,4425,4424,1,0,0,0,4425,4426,1,0,0,0,4426,4427,1,0,0,0,4427,4429,5,216,0,0,4428,4416,1,0,0,0,4428,4417,1,0,0,0,4429,899,1,0,0,0,4430,4436,3,658,329,0,4431,4436,3,840,420,0,4432,4436,3,856,428,0,4433,4436,3,870,435,0,4434,4436,3,902,451,0,4435,4430,1,0,0,0,4435,4431,1,0,0,0,4435,4432,1,0,0,0,4435,4433,1,0,0,0,4435,4434,1,0,0,0,4436,901,1,0,0,0,4437,4438,3,78,39,0,4438,4439,5,109,0,0,4439,4440,3,904,452,0,4440,903,1,0,0,0,4441,4443,3,488,244,0,4442,4441,1,0,0,0,4443,4446,1,0,0,0,4444,4442,1,0,0,0,4444,4445,1,0,0,0,4445,4447,1,0,0,0,4446,4444,1,0,0,0,4447,4448,3,848,424,0,4448,4449,3,852,426,0,4449,905,1,0,0,0,4450,4451,3,536,268,0,4451,4452,5,11,0,0,4452,4453,5,45,0,0,4453,4454,3,462,231,0,4454,4455,3,898,449,0,4455,907,1,0,0,0,4456,4457,3,544,272,0,4457,4458,5,11,0,0,4458,4459,3,848,424,0,4459,4460,3,898,449,0,4460,909,1,0,0,0,4461,4462,3,536,268,0,4462,4463,5,166,0,0,4463,4464,5,45,0,0,4464,4465,3,462,231,0,4465,4466,3,898,449,0,4466,911,1,0,0,0,4467,4468,3,544,272,0,4468,4469,5,166,0,0,4469,4470,3,848,424,0,4470,4471,3,898,449,0,4471,913,1,0,0,0,4472,4473,3,78,39,0,4473,4474,5,167,0,0,4474,4475,3,916,458,0,4475,915,1,0,0,0,4476,4480,3,228,114,0,4477,4479,3,202,101,0,4478,4477,1,0,0,0,4479,4482,1,0,0,0,4480,4478,1,0,0,0,4480,4481,1,0,0,0,4481,4483,1,0,0,0,4482,4480,1,0,0,0,4483,4484,3,852,426,0,4484,4503,1,0,0,0,4485,4487,3,488,244,0,4486,4485,1,0,0,0,4487,4490,1,0,0,0,4488,4486,1,0,0,0,4488,4489,1,0,0,0,4489,4491,1,0,0,0,4490,4488,1,0,0,0,4491,4498,5,133,0,0,4492,4494,3,488,244,0,4493,4492,1,0,0,0,4494,4495,1,0,0,0,4495,4493,1,0,0,0,4495,4496,1,0,0,0,4496,4498,1,0,0,0,4497,4488,1,0,0,0,4497,4493,1,0,0,0,4498,4499,1,0,0,0,4499,4500,3,848,424,0,4500,4501,3,852,426,0,4501,4503,1,0,0,0,4502,4476,1,0,0,0,4502,4497,1,0,0,0,4503,917,1,0,0,0,4504,4505,3,536,268,0,4505,4506,5,162,0,0,4506,4507,5,26,0,0,4507,4508,5,45,0,0,4508,4509,3,462,231,0,4509,4510,3,898,449,0,4510,919,1,0,0,0,4511,4512,3,544,272,0,4512,4513,5,162,0,0,4513,4514,5,26,0,0,4514,4515,3,848,424,0,4515,4516,3,898,449,0,4516,921,1,0,0,0,4517,4518,3,544,272,0,4518,4528,5,81,0,0,4519,4521,3,228,114,0,4520,4522,3,198,99,0,4521,4520,1,0,0,0,4521,4522,1,0,0,0,4522,4529,1,0,0,0,4523,4524,5,162,0,0,4524,4526,5,26,0,0,4525,4527,3,496,248,0,4526,4525,1,0,0,0,4526,4527,1,0,0,0,4527,4529,1,0,0,0,4528,4519,1,0,0,0,4528,4523,1,0,0,0,4529,4531,1,0,0,0,4530,4532,3,394,197,0,4531,4530,1,0,0,0,4531,4532,1,0,0,0,4532,4533,1,0,0,0,4533,4534,3,898,449,0,4534,923,1,0,0,0,4535,4536,3,536,268,0,4536,4537,5,169,0,0,4537,4538,5,45,0,0,4538,4539,3,462,231,0,4539,4540,3,926,463,0,4540,925,1,0,0,0,4541,4551,5,205,0,0,4542,4546,5,214,0,0,4543,4545,3,928,464,0,4544,4543,1,0,0,0,4545,4548,1,0,0,0,4546,4544,1,0,0,0,4546,4547,1,0,0,0,4547,4549,1,0,0,0,4548,4546,1,0,0,0,4549,4551,5,216,0,0,4550,4541,1,0,0,0,4550,4542,1,0,0,0,4551,927,1,0,0,0,4552,4556,3,466,233,0,4553,4556,3,440,220,0,4554,4556,3,930,465,0,4555,4552,1,0,0,0,4555,4553,1,0,0,0,4555,4554,1,0,0,0,4556,929,1,0,0,0,4557,4558,3,78,39,0,4558,4559,5,129,0,0,4559,4560,3,932,466,0,4560,931,1,0,0,0,4561,4563,3,228,114,0,4562,4564,3,198,99,0,4563,4562,1,0,0,0,4563,4564,1,0,0,0,4564,4565,1,0,0,0,4565,4566,3,500,250,0,4566,4583,1,0,0,0,4567,4569,3,488,244,0,4568,4567,1,0,0,0,4569,4572,1,0,0,0,4570,4568,1,0,0,0,4570,4571,1,0,0,0,4571,4573,1,0,0,0,4572,4570,1,0,0,0,4573,4580,5,130,0,0,4574,4576,3,488,244,0,4575,4574,1,0,0,0,4576,4577,1,0,0,0,4577,4575,1,0,0,0,4577,4578,1,0,0,0,4578,4580,1,0,0,0,4579,4570,1,0,0,0,4579,4575,1,0,0,0,4580,4581,1,0,0,0,4581,4583,3,494,247,0,4582,4561,1,0,0,0,4582,4579,1,0,0,0,4583,933,1,0,0,0,4584,4585,3,544,272,0,4585,4587,5,169,0,0,4586,4588,3,496,248,0,4587,4586,1,0,0,0,4587,4588,1,0,0,0,4588,4590,1,0,0,0,4589,4591,3,394,197,0,4590,4589,1,0,0,0,4590,4591,1,0,0,0,4591,4592,1,0,0,0,4592,4593,3,936,468,0,4593,935,1,0,0,0,4594,4604,5,205,0,0,4595,4599,5,214,0,0,4596,4598,3,938,469,0,4597,4596,1,0,0,0,4598,4601,1,0,0,0,4599,4597,1,0,0,0,4599,4600,1,0,0,0,4600,4602,1,0,0,0,4601,4599,1,0,0,0,4602,4604,5,216,0,0,4603,4594,1,0,0,0,4603,4595,1,0,0,0,4604,937,1,0,0,0,4605,4610,3,466,233,0,4606,4610,3,440,220,0,4607,4610,3,930,465,0,4608,4610,3,940,470,0,4609,4605,1,0,0,0,4609,4606,1,0,0,0,4609,4607,1,0,0,0,4609,4608,1,0,0,0,4610,939,1,0,0,0,4611,4614,5,62,0,0,4612,4615,3,942,471,0,4613,4615,3,944,472,0,4614,4612,1,0,0,0,4614,4613,1,0,0,0,4615,4616,1,0,0,0,4616,4617,3,48,24,0,4617,941,1,0,0,0,4618,4619,3,96,48,0,4619,943,1,0,0,0,4620,4621,3,98,49,0,4621,945,1,0,0,0,4622,4623,3,536,268,0,4623,4624,5,170,0,0,4624,4625,5,45,0,0,4625,4626,3,462,231,0,4626,4627,3,852,426,0,4627,947,1,0,0,0,4628,4629,3,544,272,0,4629,4630,5,170,0,0,4630,4631,3,848,424,0,4631,4632,3,852,426,0,4632,949,1,0,0,0,4633,4634,3,536,268,0,4634,4635,5,130,0,0,4635,4636,5,45,0,0,4636,4637,3,460,230,0,4637,951,1,0,0,0,4638,4639,3,544,272,0,4639,4640,5,130,0,0,4640,4641,3,494,247,0,4641,953,1,0,0,0,4642,4644,5,2,0,0,4643,4642,1,0,0,0,4643,4644,1,0,0,0,4644,4648,1,0,0,0,4645,4647,3,456,228,0,4646,4645,1,0,0,0,4647,4650,1,0,0,0,4648,4646,1,0,0,0,4648,4649,1,0,0,0,4649,4651,1,0,0,0,4650,4648,1,0,0,0,4651,4652,5,102,0,0,4652,4653,5,45,0,0,4653,4654,3,460,230,0,4654,955,1,0,0,0,4655,4656,3,222,111,0,4656,957,1,0,0,0,4657,4659,3,488,244,0,4658,4657,1,0,0,0,4659,4662,1,0,0,0,4660,4658,1,0,0,0,4660,4661,1,0,0,0,4661,4663,1,0,0,0,4662,4660,1,0,0,0,4663,4664,7,22,0,0,4664,4674,3,960,480,0,4665,4666,5,1,0,0,4666,4671,3,56,28,0,4667,4668,5,200,0,0,4668,4670,3,56,28,0,4669,4667,1,0,0,0,4670,4673,1,0,0,0,4671,4669,1,0,0,0,4671,4672,1,0,0,0,4672,4675,1,0,0,0,4673,4671,1,0,0,0,4674,4665,1,0,0,0,4674,4675,1,0,0,0,4675,4676,1,0,0,0,4676,4677,3,424,212,0,4677,959,1,0,0,0,4678,4680,3,46,23,0,4679,4678,1,0,0,0,4679,4680,1,0,0,0,4680,4684,1,0,0,0,4681,4685,5,204,0,0,4682,4683,5,158,0,0,4683,4685,5,24,0,0,4684,4681,1,0,0,0,4684,4682,1,0,0,0,4685,4687,1,0,0,0,4686,4679,1,0,0,0,4686,4687,1,0,0,0,4687,4688,1,0,0,0,4688,4689,3,222,111,0,4689,961,1,0,0,0,4690,4691,3,964,482,0,4691,963,1,0,0,0,4692,4694,5,127,0,0,4693,4692,1,0,0,0,4693,4694,1,0,0,0,4694,4696,1,0,0,0,4695,4697,7,19,0,0,4696,4695,1,0,0,0,4696,4697,1,0,0,0,4697,4698,1,0,0,0,4698,4700,3,234,117,0,4699,4701,3,198,99,0,4700,4699,1,0,0,0,4700,4701,1,0,0,0,4701,4703,1,0,0,0,4702,4704,3,394,197,0,4703,4702,1,0,0,0,4703,4704,1,0,0,0,4704,4705,1,0,0,0,4705,4706,3,424,212,0,4706,965,1,0,0,0,4707,4709,3,454,227,0,4708,4707,1,0,0,0,4708,4709,1,0,0,0,4709,4711,1,0,0,0,4710,4712,3,456,228,0,4711,4710,1,0,0,0,4712,4713,1,0,0,0,4713,4711,1,0,0,0,4713,4714,1,0,0,0,4714,4715,1,0,0,0,4715,4716,5,45,0,0,4716,4717,3,460,230,0,4717,967,1,0,0,0,4718,4720,3,490,245,0,4719,4721,3,488,244,0,4720,4719,1,0,0,0,4721,4722,1,0,0,0,4722,4720,1,0,0,0,4722,4723,1,0,0,0,4723,4724,1,0,0,0,4724,4725,3,494,247,0,4725,969,1,0,0,0,4726,4729,3,96,48,0,4727,4729,3,972,486,0,4728,4726,1,0,0,0,4728,4727,1,0,0,0,4729,971,1,0,0,0,4730,4731,3,90,45,0,4731,4732,5,183,0,0,4732,4735,5,198,0,0,4733,4734,5,183,0,0,4734,4736,5,179,0,0,4735,4733,1,0,0,0,4735,4736,1,0,0,0,4736,973,1,0,0,0,4737,4739,3,496,248,0,4738,4737,1,0,0,0,4738,4739,1,0,0,0,4739,4741,1,0,0,0,4740,4742,3,394,197,0,4741,4740,1,0,0,0,4741,4742,1,0,0,0,4742,975,1,0,0,0,4743,4744,1,0,0,0,4744,977,1,0,0,0,4745,4746,1,0,0,0,4746,979,1,0,0,0,4747,4748,1,0,0,0,4748,981,1,0,0,0,4749,4750,1,0,0,0,4750,983,1,0,0,0,4751,4752,5,218,0,0,4752,985,1,0,0,0,4753,4754,5,218,0,0,4754,987,1,0,0,0,4755,4756,1,0,0,0,4756,989,1,0,0,0,531,1005,1061,1068,1084,1086,1088,1098,1107,1113,1116,1121,1143,1152,1160,1172,1200,1207,1215,1219,1223,1227,1232,1237,1240,1247,1256,1264,1271,1281,1285,1293,1296,1298,1302,1308,1312,1318,1320,1329,1337,1345,1352,1356,1361,1364,1370,1384,1387,1395,1402,1408,1412,1419,1424,1431,1434,1440,1446,1448,1456,1484,1496,1504,1509,1513,1516,1519,1523,1525,1530,1539,1549,1558,1567,1576,1585,1593,1597,1603,1607,1609,1624,1632,1637,1639,1647,1656,1666,1671,1673,1681,1690,1700,1708,1716,1724,1729,1744,1747,1750,1754,1759,1768,1773,1775,1788,1791,1795,1799,1802,1807,1812,1815,1818,1821,1824,1828,1831,1836,1846,1848,1853,1858,1862,1867,1874,1877,1883,1891,1905,1911,1914,1919,1926,1929,1934,1938,1940,1944,1948,1950,1952,1959,1966,1974,1977,1982,1988,1991,1998,2015,2023,2025,2032,2039,2046,2051,2053,2066,2074,2082,2087,2089,2102,2111,2113,2120,2126,2128,2136,2145,2155,2160,2163,2201,2204,2207,2213,2216,2221,2223,2230,2240,2248,2253,2272,2275,2278,2284,2286,2299,2302,2305,2311,2313,2324,2338,2342,2344,2348,2355,2363,2376,2383,2387,2432,2437,2454,2472,2477,2497,2501,2508,2511,2518,2521,2525,2532,2534,2539,2543,2547,2551,2555,2557,2562,2565,2570,2577,2579,2588,2603,2605,2611,2615,2622,2631,2636,2640,2648,2655,2666,2672,2679,2690,2693,2698,2703,2705,2714,2723,2725,2729,2735,2740,2743,2747,2750,2757,2764,2770,2778,2785,2789,2797,2800,2807,2816,2825,2830,2862,2866,2873,2878,2885,2888,2895,2899,2906,2911,2918,2921,2931,2953,2956,2959,2962,2966,2970,2976,2982,2986,2992,2995,2998,3009,3022,3035,3039,3056,3074,3097,3105,3120,3132,3134,3138,3144,3153,3157,3162,3171,3177,3188,3191,3196,3208,3215,3221,3232,3236,3238,3250,3295,3298,3302,3306,3312,3326,3334,3336,3347,3349,3368,3372,3378,3383,3393,3401,3412,3415,3419,3422,3426,3440,3448,3453,3468,3472,3476,3489,3492,3496,3503,3509,3532,3539,3555,3559,3566,3570,3576,3580,3588,3591,3595,3617,3620,3629,3633,3635,3638,3648,3652,3656,3662,3666,3669,3674,3680,3687,3694,3701,3710,3718,3724,3727,3730,3740,3745,3750,3755,3760,3765,3771,3777,3792,3805,3811,3815,3826,3828,3836,3838,3844,3856,3863,3873,3876,3881,3898,3900,3917,3923,3927,3931,3937,3945,3950,3968,3979,4006,4012,4016,4022,4026,4028,4031,4037,4040,4047,4050,4053,4064,4067,4070,4075,4078,4082,4084,4106,4113,4117,4124,4128,4135,4139,4146,4150,4175,4180,4184,4188,4191,4210,4214,4218,4223,4226,4239,4243,4252,4261,4267,4276,4283,4290,4292,4297,4300,4307,4314,4321,4323,4328,4337,4349,4362,4364,4369,4373,4375,4378,4382,4421,4425,4428,4435,4444,4480,4488,4495,4497,4502,4521,4526,4528,4531,4546,4550,4555,4563,4570,4577,4579,4582,4587,4590,4599,4603,4609,4614,4643,4648,4660,4671,4674,4679,4684,4686,4693,4696,4700,4703,4708,4713,4722,4728,4735,4738,4741];static __ATN;static get _ATN(){return r.__ATN||(r.__ATN=new Ye().deserialize(r._serializedATN)),r.__ATN}static vocabulary=new ye(r.literalNames,r.symbolicNames,[]);get vocabulary(){return r.vocabulary}static decisionsToDFA=r._ATN.decisionToState.map((e,t)=>new He(e,t))},P=class r extends l{constructor(e,t){super(e,t)}IF(){return this.getToken(n.IF,0)}ownedExpression(e){return e===void 0?this.getRuleContexts(r):this.getRuleContext(e,r)}QUESTION(){return this.getToken(n.QUESTION,0)}ELSE(){return this.getToken(n.ELSE,0)}PLUS(){return this.getToken(n.PLUS,0)}MINUS(){return this.getToken(n.MINUS,0)}TILDE(){return this.getToken(n.TILDE,0)}NOT(){return this.getToken(n.NOT,0)}typeReference(){return this.getRuleContext(0,zt)}AT_SIGN(){return this.getToken(n.AT_SIGN,0)}AT_AT(){return this.getToken(n.AT_AT,0)}ALL(){return this.getToken(n.ALL,0)}baseExpression(){return this.getRuleContext(0,In)}QUESTION_QUESTION(){return this.getToken(n.QUESTION_QUESTION,0)}IMPLIES(){return this.getToken(n.IMPLIES,0)}OR(){return this.getToken(n.OR,0)}AND(){return this.getToken(n.AND,0)}XOR(){return this.getToken(n.XOR,0)}PIPE(){return this.getToken(n.PIPE,0)}AMP(){return this.getToken(n.AMP,0)}EQ_EQ(){return this.getToken(n.EQ_EQ,0)}BANG_EQ(){return this.getToken(n.BANG_EQ,0)}EQ_EQ_EQ(){return this.getToken(n.EQ_EQ_EQ,0)}BANG_EQ_EQ(){return this.getToken(n.BANG_EQ_EQ,0)}LT(){return this.getToken(n.LT,0)}GT(){return this.getToken(n.GT,0)}LE(){return this.getToken(n.LE,0)}GE(){return this.getToken(n.GE,0)}DOT_DOT(){return this.getToken(n.DOT_DOT,0)}STAR(){return this.getToken(n.STAR,0)}SLASH(){return this.getToken(n.SLASH,0)}PERCENT(){return this.getToken(n.PERCENT,0)}STAR_STAR(){return this.getToken(n.STAR_STAR,0)}CARET(){return this.getToken(n.CARET,0)}ISTYPE(){return this.getToken(n.ISTYPE,0)}HASTYPE(){return this.getToken(n.HASTYPE,0)}AS(){return this.getToken(n.AS,0)}META(){return this.getToken(n.META,0)}LBRACK(){return this.getToken(n.LBRACK,0)}RBRACK(){return this.getToken(n.RBRACK,0)}sequenceExpressionList(){return this.getRuleContext(0,Yt)}HASH(){return this.getToken(n.HASH,0)}LPAREN(){return this.getToken(n.LPAREN,0)}RPAREN(){return this.getToken(n.RPAREN,0)}argumentList(){return this.getRuleContext(0,We)}DOT(){return this.getToken(n.DOT,0)}qualifiedName(){return this.getRuleContext(0,m)}DOT_QUESTION(){return this.getToken(n.DOT_QUESTION,0)}bodyExpression(){return this.getRuleContext(0,Wt)}ARROW(){return this.getToken(n.ARROW,0)}get ruleIndex(){return n.RULE_ownedExpression}enterRule(e){e.enterOwnedExpression&&e.enterOwnedExpression(this)}exitRule(e){e.exitOwnedExpression&&e.exitOwnedExpression(this)}accept(e){return e.visitOwnedExpression?e.visitOwnedExpression(this):e.visitChildren(this)}},zt=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}get ruleIndex(){return n.RULE_typeReference}enterRule(e){e.enterTypeReference&&e.enterTypeReference(this)}exitRule(e){e.exitTypeReference&&e.exitTypeReference(this)}accept(e){return e.visitTypeReference?e.visitTypeReference(this):e.visitChildren(this)}},Yt=class extends l{constructor(e,t){super(e,t)}ownedExpression(e){return e===void 0?this.getRuleContexts(P):this.getRuleContext(e,P)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}get ruleIndex(){return n.RULE_sequenceExpressionList}enterRule(e){e.enterSequenceExpressionList&&e.enterSequenceExpressionList(this)}exitRule(e){e.exitSequenceExpressionList&&e.exitSequenceExpressionList(this)}accept(e){return e.visitSequenceExpressionList?e.visitSequenceExpressionList(this):e.visitChildren(this)}},In=class extends l{constructor(e,t){super(e,t)}nullExpression(){return this.getRuleContext(0,On)}literalExpression(){return this.getRuleContext(0,Hr)}qualifiedName(){return this.getRuleContext(0,m)}argumentList(){return this.getRuleContext(0,We)}DOT(){return this.getToken(n.DOT,0)}METADATA(){return this.getToken(n.METADATA,0)}constructorExpression(){return this.getRuleContext(0,kn)}bodyExpression(){return this.getRuleContext(0,Wt)}LPAREN(){return this.getToken(n.LPAREN,0)}RPAREN(){return this.getToken(n.RPAREN,0)}sequenceExpressionList(){return this.getRuleContext(0,Yt)}get ruleIndex(){return n.RULE_baseExpression}enterRule(e){e.enterBaseExpression&&e.enterBaseExpression(this)}exitRule(e){e.exitBaseExpression&&e.exitBaseExpression(this)}accept(e){return e.visitBaseExpression?e.visitBaseExpression(this):e.visitChildren(this)}},On=class extends l{constructor(e,t){super(e,t)}NULL(){return this.getToken(n.NULL,0)}LPAREN(){return this.getToken(n.LPAREN,0)}RPAREN(){return this.getToken(n.RPAREN,0)}get ruleIndex(){return n.RULE_nullExpression}enterRule(e){e.enterNullExpression&&e.enterNullExpression(this)}exitRule(e){e.exitNullExpression&&e.exitNullExpression(this)}accept(e){return e.visitNullExpression?e.visitNullExpression(this):e.visitChildren(this)}},wn=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}get ruleIndex(){return n.RULE_featureReferenceExpression}enterRule(e){e.enterFeatureReferenceExpression&&e.enterFeatureReferenceExpression(this)}exitRule(e){e.exitFeatureReferenceExpression&&e.exitFeatureReferenceExpression(this)}accept(e){return e.visitFeatureReferenceExpression?e.visitFeatureReferenceExpression(this):e.visitChildren(this)}},n1=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}DOT(){return this.getToken(n.DOT,0)}METADATA(){return this.getToken(n.METADATA,0)}get ruleIndex(){return n.RULE_metadataAccessExpression}enterRule(e){e.enterMetadataAccessExpression&&e.enterMetadataAccessExpression(this)}exitRule(e){e.exitMetadataAccessExpression&&e.exitMetadataAccessExpression(this)}accept(e){return e.visitMetadataAccessExpression?e.visitMetadataAccessExpression(this):e.visitChildren(this)}},s1=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}argumentList(){return this.getRuleContext(0,We)}get ruleIndex(){return n.RULE_invocationExpression}enterRule(e){e.enterInvocationExpression&&e.enterInvocationExpression(this)}exitRule(e){e.exitInvocationExpression&&e.exitInvocationExpression(this)}accept(e){return e.visitInvocationExpression?e.visitInvocationExpression(this):e.visitChildren(this)}},kn=class extends l{constructor(e,t){super(e,t)}NEW(){return this.getToken(n.NEW,0)}qualifiedName(){return this.getRuleContext(0,m)}argumentList(){return this.getRuleContext(0,We)}get ruleIndex(){return n.RULE_constructorExpression}enterRule(e){e.enterConstructorExpression&&e.enterConstructorExpression(this)}exitRule(e){e.exitConstructorExpression&&e.exitConstructorExpression(this)}accept(e){return e.visitConstructorExpression?e.visitConstructorExpression(this):e.visitChildren(this)}},Wt=class extends l{constructor(e,t){super(e,t)}LBRACE(){return this.getToken(n.LBRACE,0)}functionBodyPart(){return this.getRuleContext(0,ir)}RBRACE(){return this.getToken(n.RBRACE,0)}get ruleIndex(){return n.RULE_bodyExpression}enterRule(e){e.enterBodyExpression&&e.enterBodyExpression(this)}exitRule(e){e.exitBodyExpression&&e.exitBodyExpression(this)}accept(e){return e.visitBodyExpression?e.visitBodyExpression(this):e.visitChildren(this)}},We=class extends l{constructor(e,t){super(e,t)}LPAREN(){return this.getToken(n.LPAREN,0)}RPAREN(){return this.getToken(n.RPAREN,0)}positionalArgumentList(){return this.getRuleContext(0,Dn)}namedArgumentList(){return this.getRuleContext(0,Fn)}get ruleIndex(){return n.RULE_argumentList}enterRule(e){e.enterArgumentList&&e.enterArgumentList(this)}exitRule(e){e.exitArgumentList&&e.exitArgumentList(this)}accept(e){return e.visitArgumentList?e.visitArgumentList(this):e.visitChildren(this)}},Dn=class extends l{constructor(e,t){super(e,t)}ownedExpression(e){return e===void 0?this.getRuleContexts(P):this.getRuleContext(e,P)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}get ruleIndex(){return n.RULE_positionalArgumentList}enterRule(e){e.enterPositionalArgumentList&&e.enterPositionalArgumentList(this)}exitRule(e){e.exitPositionalArgumentList&&e.exitPositionalArgumentList(this)}accept(e){return e.visitPositionalArgumentList?e.visitPositionalArgumentList(this):e.visitChildren(this)}},Fn=class extends l{constructor(e,t){super(e,t)}namedArgument(e){return e===void 0?this.getRuleContexts(Xt):this.getRuleContext(e,Xt)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}get ruleIndex(){return n.RULE_namedArgumentList}enterRule(e){e.enterNamedArgumentList&&e.enterNamedArgumentList(this)}exitRule(e){e.exitNamedArgumentList&&e.exitNamedArgumentList(this)}accept(e){return e.visitNamedArgumentList?e.visitNamedArgumentList(this):e.visitChildren(this)}},Xt=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}EQ(){return this.getToken(n.EQ,0)}ownedExpression(){return this.getRuleContext(0,P)}get ruleIndex(){return n.RULE_namedArgument}enterRule(e){e.enterNamedArgument&&e.enterNamedArgument(this)}exitRule(e){e.exitNamedArgument&&e.exitNamedArgument(this)}accept(e){return e.visitNamedArgument?e.visitNamedArgument(this):e.visitChildren(this)}},Hr=class extends l{constructor(e,t){super(e,t)}literalBoolean(){return this.getRuleContext(0,Hn)}literalString(){return this.getRuleContext(0,Bn)}literalInteger(){return this.getRuleContext(0,Vn)}literalReal(){return this.getRuleContext(0,_n)}literalInfinity(){return this.getRuleContext(0,qn)}get ruleIndex(){return n.RULE_literalExpression}enterRule(e){e.enterLiteralExpression&&e.enterLiteralExpression(this)}exitRule(e){e.exitLiteralExpression&&e.exitLiteralExpression(this)}accept(e){return e.visitLiteralExpression?e.visitLiteralExpression(this):e.visitChildren(this)}},Hn=class extends l{constructor(e,t){super(e,t)}TRUE(){return this.getToken(n.TRUE,0)}FALSE(){return this.getToken(n.FALSE,0)}get ruleIndex(){return n.RULE_literalBoolean}enterRule(e){e.enterLiteralBoolean&&e.enterLiteralBoolean(this)}exitRule(e){e.exitLiteralBoolean&&e.exitLiteralBoolean(this)}accept(e){return e.visitLiteralBoolean?e.visitLiteralBoolean(this):e.visitChildren(this)}},Bn=class extends l{constructor(e,t){super(e,t)}DOUBLE_STRING(){return this.getToken(n.DOUBLE_STRING,0)}get ruleIndex(){return n.RULE_literalString}enterRule(e){e.enterLiteralString&&e.enterLiteralString(this)}exitRule(e){e.exitLiteralString&&e.exitLiteralString(this)}accept(e){return e.visitLiteralString?e.visitLiteralString(this):e.visitChildren(this)}},Vn=class extends l{constructor(e,t){super(e,t)}INTEGER(){return this.getToken(n.INTEGER,0)}get ruleIndex(){return n.RULE_literalInteger}enterRule(e){e.enterLiteralInteger&&e.enterLiteralInteger(this)}exitRule(e){e.exitLiteralInteger&&e.exitLiteralInteger(this)}accept(e){return e.visitLiteralInteger?e.visitLiteralInteger(this):e.visitChildren(this)}},_n=class extends l{constructor(e,t){super(e,t)}REAL(){return this.getToken(n.REAL,0)}get ruleIndex(){return n.RULE_literalReal}enterRule(e){e.enterLiteralReal&&e.enterLiteralReal(this)}exitRule(e){e.exitLiteralReal&&e.exitLiteralReal(this)}accept(e){return e.visitLiteralReal?e.visitLiteralReal(this):e.visitChildren(this)}},qn=class extends l{constructor(e,t){super(e,t)}STAR(){return this.getToken(n.STAR,0)}get ruleIndex(){return n.RULE_literalInfinity}enterRule(e){e.enterLiteralInfinity&&e.enterLiteralInfinity(this)}exitRule(e){e.exitLiteralInfinity&&e.exitLiteralInfinity(this)}accept(e){return e.visitLiteralInfinity?e.visitLiteralInfinity(this):e.visitChildren(this)}},Gn=class extends l{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,P)}get ruleIndex(){return n.RULE_argumentMember}enterRule(e){e.enterArgumentMember&&e.enterArgumentMember(this)}exitRule(e){e.exitArgumentMember&&e.exitArgumentMember(this)}accept(e){return e.visitArgumentMember?e.visitArgumentMember(this):e.visitChildren(this)}},Kn=class extends l{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,P)}get ruleIndex(){return n.RULE_argumentExpressionMember}enterRule(e){e.enterArgumentExpressionMember&&e.enterArgumentExpressionMember(this)}exitRule(e){e.exitArgumentExpressionMember&&e.exitArgumentExpressionMember(this)}accept(e){return e.visitArgumentExpressionMember?e.visitArgumentExpressionMember(this):e.visitChildren(this)}},ee=class extends l{constructor(e,t){super(e,t)}IDENTIFIER(){return this.getToken(n.IDENTIFIER,0)}STRING(){return this.getToken(n.STRING,0)}get ruleIndex(){return n.RULE_name}enterRule(e){e.enterName&&e.enterName(this)}exitRule(e){e.exitName&&e.exitName(this)}accept(e){return e.visitName?e.visitName(this):e.visitChildren(this)}},O=class extends l{constructor(e,t){super(e,t)}LT(){return this.getToken(n.LT,0)}name(e){return e===void 0?this.getRuleContexts(ee):this.getRuleContext(e,ee)}GT(){return this.getToken(n.GT,0)}get ruleIndex(){return n.RULE_identification}enterRule(e){e.enterIdentification&&e.enterIdentification(this)}exitRule(e){e.exitIdentification&&e.exitIdentification(this)}accept(e){return e.visitIdentification?e.visitIdentification(this):e.visitChildren(this)}},Q=class extends l{constructor(e,t){super(e,t)}SEMI(){return this.getToken(n.SEMI,0)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}relationshipOwnedElement(e){return e===void 0?this.getRuleContexts(Br):this.getRuleContext(e,Br)}ownedAnnotation(e){return e===void 0?this.getRuleContexts(Jt):this.getRuleContext(e,Jt)}get ruleIndex(){return n.RULE_relationshipBody}enterRule(e){e.enterRelationshipBody&&e.enterRelationshipBody(this)}exitRule(e){e.exitRelationshipBody&&e.exitRelationshipBody(this)}accept(e){return e.visitRelationshipBody?e.visitRelationshipBody(this):e.visitChildren(this)}},Br=class extends l{constructor(e,t){super(e,t)}ownedRelatedElement(){return this.getRuleContext(0,jn)}ownedAnnotation(){return this.getRuleContext(0,Jt)}get ruleIndex(){return n.RULE_relationshipOwnedElement}enterRule(e){e.enterRelationshipOwnedElement&&e.enterRelationshipOwnedElement(this)}exitRule(e){e.exitRelationshipOwnedElement&&e.exitRelationshipOwnedElement(this)}accept(e){return e.visitRelationshipOwnedElement?e.visitRelationshipOwnedElement(this):e.visitChildren(this)}},jn=class extends l{constructor(e,t){super(e,t)}nonFeatureElement(){return this.getRuleContext(0,jr)}featureElement(){return this.getRuleContext(0,Xe)}get ruleIndex(){return n.RULE_ownedRelatedElement}enterRule(e){e.enterOwnedRelatedElement&&e.enterOwnedRelatedElement(this)}exitRule(e){e.exitOwnedRelatedElement&&e.exitOwnedRelatedElement(this)}accept(e){return e.visitOwnedRelatedElement?e.visitOwnedRelatedElement(this):e.visitChildren(this)}},Vr=class extends l{constructor(e,t){super(e,t)}DEPENDENCY(){return this.getToken(n.DEPENDENCY,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}TO(){return this.getToken(n.TO,0)}relationshipBody(){return this.getRuleContext(0,Q)}prefixMetadataAnnotation(e){return e===void 0?this.getRuleContexts(di):this.getRuleContext(e,di)}FROM(){return this.getToken(n.FROM,0)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}identification(){return this.getRuleContext(0,O)}dependencyDeclaration(){return this.getRuleContext(0,Fa)}get ruleIndex(){return n.RULE_dependency}enterRule(e){e.enterDependency&&e.enterDependency(this)}exitRule(e){e.exitDependency&&e.exitDependency(this)}accept(e){return e.visitDependency?e.visitDependency(this):e.visitChildren(this)}},Be=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}get ruleIndex(){return n.RULE_annotation}enterRule(e){e.enterAnnotation&&e.enterAnnotation(this)}exitRule(e){e.exitAnnotation&&e.exitAnnotation(this)}accept(e){return e.visitAnnotation?e.visitAnnotation(this):e.visitChildren(this)}},Jt=class extends l{constructor(e,t){super(e,t)}annotatingElement(){return this.getRuleContext(0,xt)}get ruleIndex(){return n.RULE_ownedAnnotation}enterRule(e){e.enterOwnedAnnotation&&e.enterOwnedAnnotation(this)}exitRule(e){e.exitOwnedAnnotation&&e.exitOwnedAnnotation(this)}accept(e){return e.visitOwnedAnnotation?e.visitOwnedAnnotation(this):e.visitChildren(this)}},xt=class extends l{constructor(e,t){super(e,t)}comment(){return this.getRuleContext(0,Qn)}documentation(){return this.getRuleContext(0,zn)}textualRepresentation(){return this.getRuleContext(0,Yn)}metadataFeature(){return this.getRuleContext(0,Oa)}get ruleIndex(){return n.RULE_annotatingElement}enterRule(e){e.enterAnnotatingElement&&e.enterAnnotatingElement(this)}exitRule(e){e.exitAnnotatingElement&&e.exitAnnotatingElement(this)}accept(e){return e.visitAnnotatingElement?e.visitAnnotatingElement(this):e.visitChildren(this)}},Qn=class extends l{constructor(e,t){super(e,t)}REGULAR_COMMENT(){return this.getToken(n.REGULAR_COMMENT,0)}COMMENT(){return this.getToken(n.COMMENT,0)}LOCALE(){return this.getToken(n.LOCALE,0)}DOUBLE_STRING(){return this.getToken(n.DOUBLE_STRING,0)}identification(){return this.getRuleContext(0,O)}ABOUT(){return this.getToken(n.ABOUT,0)}annotation(e){return e===void 0?this.getRuleContexts(Be):this.getRuleContext(e,Be)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}get ruleIndex(){return n.RULE_comment}enterRule(e){e.enterComment&&e.enterComment(this)}exitRule(e){e.exitComment&&e.exitComment(this)}accept(e){return e.visitComment?e.visitComment(this):e.visitChildren(this)}},zn=class extends l{constructor(e,t){super(e,t)}DOC(){return this.getToken(n.DOC,0)}REGULAR_COMMENT(){return this.getToken(n.REGULAR_COMMENT,0)}identification(){return this.getRuleContext(0,O)}LOCALE(){return this.getToken(n.LOCALE,0)}DOUBLE_STRING(){return this.getToken(n.DOUBLE_STRING,0)}get ruleIndex(){return n.RULE_documentation}enterRule(e){e.enterDocumentation&&e.enterDocumentation(this)}exitRule(e){e.exitDocumentation&&e.exitDocumentation(this)}accept(e){return e.visitDocumentation?e.visitDocumentation(this):e.visitChildren(this)}},Yn=class extends l{constructor(e,t){super(e,t)}LANGUAGE(){return this.getToken(n.LANGUAGE,0)}DOUBLE_STRING(){return this.getToken(n.DOUBLE_STRING,0)}REGULAR_COMMENT(){return this.getToken(n.REGULAR_COMMENT,0)}REP(){return this.getToken(n.REP,0)}identification(){return this.getRuleContext(0,O)}get ruleIndex(){return n.RULE_textualRepresentation}enterRule(e){e.enterTextualRepresentation&&e.enterTextualRepresentation(this)}exitRule(e){e.exitTextualRepresentation&&e.exitTextualRepresentation(this)}accept(e){return e.visitTextualRepresentation?e.visitTextualRepresentation(this):e.visitChildren(this)}},a1=class extends l{constructor(e,t){super(e,t)}EOF(){return this.getToken(n.EOF,0)}packageBodyElement(e){return e===void 0?this.getRuleContexts(vt):this.getRuleContext(e,vt)}get ruleIndex(){return n.RULE_rootNamespace}enterRule(e){e.enterRootNamespace&&e.enterRootNamespace(this)}exitRule(e){e.exitRootNamespace&&e.exitRootNamespace(this)}accept(e){return e.visitRootNamespace?e.visitRootNamespace(this):e.visitChildren(this)}},Wn=class extends l{constructor(e,t){super(e,t)}namespaceDeclaration(){return this.getRuleContext(0,Xn)}namespaceBody(){return this.getRuleContext(0,Jn)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}get ruleIndex(){return n.RULE_namespace}enterRule(e){e.enterNamespace&&e.enterNamespace(this)}exitRule(e){e.exitNamespace&&e.exitNamespace(this)}accept(e){return e.visitNamespace?e.visitNamespace(this):e.visitChildren(this)}},Xn=class extends l{constructor(e,t){super(e,t)}NAMESPACE(){return this.getToken(n.NAMESPACE,0)}identification(){return this.getRuleContext(0,O)}get ruleIndex(){return n.RULE_namespaceDeclaration}enterRule(e){e.enterNamespaceDeclaration&&e.enterNamespaceDeclaration(this)}exitRule(e){e.exitNamespaceDeclaration&&e.exitNamespaceDeclaration(this)}accept(e){return e.visitNamespaceDeclaration?e.visitNamespaceDeclaration(this):e.visitChildren(this)}},Jn=class extends l{constructor(e,t){super(e,t)}SEMI(){return this.getToken(n.SEMI,0)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}namespaceBodyElement(e){return e===void 0?this.getRuleContexts(_r):this.getRuleContext(e,_r)}get ruleIndex(){return n.RULE_namespaceBody}enterRule(e){e.enterNamespaceBody&&e.enterNamespaceBody(this)}exitRule(e){e.exitNamespaceBody&&e.exitNamespaceBody(this)}accept(e){return e.visitNamespaceBody?e.visitNamespaceBody(this):e.visitChildren(this)}},_r=class extends l{constructor(e,t){super(e,t)}namespaceMember(){return this.getRuleContext(0,$n)}aliasMember(){return this.getRuleContext(0,ve)}importRule(){return this.getRuleContext(0,pe)}get ruleIndex(){return n.RULE_namespaceBodyElement}enterRule(e){e.enterNamespaceBodyElement&&e.enterNamespaceBodyElement(this)}exitRule(e){e.exitNamespaceBodyElement&&e.exitNamespaceBodyElement(this)}accept(e){return e.visitNamespaceBodyElement?e.visitNamespaceBodyElement(this):e.visitChildren(this)}},T=class extends l{constructor(e,t){super(e,t)}visibilityIndicator(){return this.getRuleContext(0,qr)}get ruleIndex(){return n.RULE_memberPrefix}enterRule(e){e.enterMemberPrefix&&e.enterMemberPrefix(this)}exitRule(e){e.exitMemberPrefix&&e.exitMemberPrefix(this)}accept(e){return e.visitMemberPrefix?e.visitMemberPrefix(this):e.visitChildren(this)}},qr=class extends l{constructor(e,t){super(e,t)}PUBLIC(){return this.getToken(n.PUBLIC,0)}PRIVATE(){return this.getToken(n.PRIVATE,0)}PROTECTED(){return this.getToken(n.PROTECTED,0)}get ruleIndex(){return n.RULE_visibilityIndicator}enterRule(e){e.enterVisibilityIndicator&&e.enterVisibilityIndicator(this)}exitRule(e){e.exitVisibilityIndicator&&e.exitVisibilityIndicator(this)}accept(e){return e.visitVisibilityIndicator?e.visitVisibilityIndicator(this):e.visitChildren(this)}},$n=class extends l{constructor(e,t){super(e,t)}nonFeatureMember(){return this.getRuleContext(0,$t)}namespaceFeatureMember(){return this.getRuleContext(0,Zn)}get ruleIndex(){return n.RULE_namespaceMember}enterRule(e){e.enterNamespaceMember&&e.enterNamespaceMember(this)}exitRule(e){e.exitNamespaceMember&&e.exitNamespaceMember(this)}accept(e){return e.visitNamespaceMember?e.visitNamespaceMember(this):e.visitChildren(this)}},$t=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}memberElement(){return this.getRuleContext(0,rs)}get ruleIndex(){return n.RULE_nonFeatureMember}enterRule(e){e.enterNonFeatureMember&&e.enterNonFeatureMember(this)}exitRule(e){e.exitNonFeatureMember&&e.exitNonFeatureMember(this)}accept(e){return e.visitNonFeatureMember?e.visitNonFeatureMember(this):e.visitChildren(this)}},Zn=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}featureElement(){return this.getRuleContext(0,Xe)}get ruleIndex(){return n.RULE_namespaceFeatureMember}enterRule(e){e.enterNamespaceFeatureMember&&e.enterNamespaceFeatureMember(this)}exitRule(e){e.exitNamespaceFeatureMember&&e.exitNamespaceFeatureMember(this)}accept(e){return e.visitNamespaceFeatureMember?e.visitNamespaceFeatureMember(this):e.visitChildren(this)}},ve=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}ALIAS(){return this.getToken(n.ALIAS,0)}FOR(){return this.getToken(n.FOR,0)}qualifiedName(){return this.getRuleContext(0,m)}relationshipBody(){return this.getRuleContext(0,Q)}LT(){return this.getToken(n.LT,0)}name(e){return e===void 0?this.getRuleContexts(ee):this.getRuleContext(e,ee)}GT(){return this.getToken(n.GT,0)}get ruleIndex(){return n.RULE_aliasMember}enterRule(e){e.enterAliasMember&&e.enterAliasMember(this)}exitRule(e){e.exitAliasMember&&e.exitAliasMember(this)}accept(e){return e.visitAliasMember?e.visitAliasMember(this):e.visitChildren(this)}},m=class extends l{constructor(e,t){super(e,t)}name(e){return e===void 0?this.getRuleContexts(ee):this.getRuleContext(e,ee)}DOLLAR(){return this.getToken(n.DOLLAR,0)}COLON_COLON(e){return e===void 0?this.getTokens(n.COLON_COLON):this.getToken(n.COLON_COLON,e)}get ruleIndex(){return n.RULE_qualifiedName}enterRule(e){e.enterQualifiedName&&e.enterQualifiedName(this)}exitRule(e){e.exitQualifiedName&&e.exitQualifiedName(this)}accept(e){return e.visitQualifiedName?e.visitQualifiedName(this):e.visitChildren(this)}},pe=class extends l{constructor(e,t){super(e,t)}IMPORT(){return this.getToken(n.IMPORT,0)}importDeclaration(){return this.getRuleContext(0,es)}relationshipBody(){return this.getRuleContext(0,Q)}visibilityIndicator(){return this.getRuleContext(0,qr)}ALL(){return this.getToken(n.ALL,0)}get ruleIndex(){return n.RULE_importRule}enterRule(e){e.enterImportRule&&e.enterImportRule(this)}exitRule(e){e.exitImportRule&&e.exitImportRule(this)}accept(e){return e.visitImportRule?e.visitImportRule(this):e.visitChildren(this)}},es=class extends l{constructor(e,t){super(e,t)}membershipImport(){return this.getRuleContext(0,Zt)}namespaceImport(){return this.getRuleContext(0,Gr)}get ruleIndex(){return n.RULE_importDeclaration}enterRule(e){e.enterImportDeclaration&&e.enterImportDeclaration(this)}exitRule(e){e.exitImportDeclaration&&e.exitImportDeclaration(this)}accept(e){return e.visitImportDeclaration?e.visitImportDeclaration(this):e.visitChildren(this)}},Zt=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}COLON_COLON(){return this.getToken(n.COLON_COLON,0)}STAR_STAR(){return this.getToken(n.STAR_STAR,0)}get ruleIndex(){return n.RULE_membershipImport}enterRule(e){e.enterMembershipImport&&e.enterMembershipImport(this)}exitRule(e){e.exitMembershipImport&&e.exitMembershipImport(this)}accept(e){return e.visitMembershipImport?e.visitMembershipImport(this):e.visitChildren(this)}},Gr=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}COLON_COLON(e){return e===void 0?this.getTokens(n.COLON_COLON):this.getToken(n.COLON_COLON,e)}STAR(){return this.getToken(n.STAR,0)}STAR_STAR(){return this.getToken(n.STAR_STAR,0)}filterPackage(){return this.getRuleContext(0,ts)}get ruleIndex(){return n.RULE_namespaceImport}enterRule(e){e.enterNamespaceImport&&e.enterNamespaceImport(this)}exitRule(e){e.exitNamespaceImport&&e.exitNamespaceImport(this)}accept(e){return e.visitNamespaceImport?e.visitNamespaceImport(this):e.visitChildren(this)}},ts=class extends l{constructor(e,t){super(e,t)}filterPackageImportDeclaration(){return this.getRuleContext(0,Nu)}filterPackageMember(e){return e===void 0?this.getRuleContexts(Kr):this.getRuleContext(e,Kr)}filterPackageImport(){return this.getRuleContext(0,ku)}get ruleIndex(){return n.RULE_filterPackage}enterRule(e){e.enterFilterPackage&&e.enterFilterPackage(this)}exitRule(e){e.exitFilterPackage&&e.exitFilterPackage(this)}accept(e){return e.visitFilterPackage?e.visitFilterPackage(this):e.visitChildren(this)}},Kr=class extends l{constructor(e,t){super(e,t)}LBRACK(){return this.getToken(n.LBRACK,0)}ownedExpression(){return this.getRuleContext(0,P)}RBRACK(){return this.getToken(n.RBRACK,0)}get ruleIndex(){return n.RULE_filterPackageMember}enterRule(e){e.enterFilterPackageMember&&e.enterFilterPackageMember(this)}exitRule(e){e.exitFilterPackageMember&&e.exitFilterPackageMember(this)}accept(e){return e.visitFilterPackageMember?e.visitFilterPackageMember(this):e.visitChildren(this)}},rs=class extends l{constructor(e,t){super(e,t)}annotatingElement(){return this.getRuleContext(0,xt)}nonFeatureElement(){return this.getRuleContext(0,jr)}get ruleIndex(){return n.RULE_memberElement}enterRule(e){e.enterMemberElement&&e.enterMemberElement(this)}exitRule(e){e.exitMemberElement&&e.exitMemberElement(this)}accept(e){return e.visitMemberElement?e.visitMemberElement(this):e.visitChildren(this)}},jr=class extends l{constructor(e,t){super(e,t)}dependency(){return this.getRuleContext(0,Vr)}namespace(){return this.getRuleContext(0,Wn)}type(){return this.getRuleContext(0,is)}classifier(){return this.getRuleContext(0,Rs)}dataType(){return this.getRuleContext(0,Bs)}class(){return this.getRuleContext(0,Vs)}structure(){return this.getRuleContext(0,_s)}metaclass(){return this.getRuleContext(0,Ia)}association(){return this.getRuleContext(0,qs)}associationStructure(){return this.getRuleContext(0,Gs)}interaction(){return this.getRuleContext(0,Ea)}behavior(){return this.getRuleContext(0,ea)}function(){return this.getRuleContext(0,ra)}predicate(){return this.getRuleContext(0,na)}multiplicity(){return this.getRuleContext(0,Ma)}package(){return this.getRuleContext(0,bi)}libraryPackage(){return this.getRuleContext(0,Ri)}specialization(){return this.getRuleContext(0,us)}conjugation(){return this.getRuleContext(0,cs)}subclassification(){return this.getRuleContext(0,ms)}disjoining(){return this.getRuleContext(0,ds)}featureInverting(){return this.getRuleContext(0,Ds)}featureTyping(){return this.getRuleContext(0,mt)}subsetting(){return this.getRuleContext(0,Is)}redefinition(){return this.getRuleContext(0,ws)}typeFeaturing(){return this.getRuleContext(0,Hs)}get ruleIndex(){return n.RULE_nonFeatureElement}enterRule(e){e.enterNonFeatureElement&&e.enterNonFeatureElement(this)}exitRule(e){e.exitNonFeatureElement&&e.exitNonFeatureElement(this)}accept(e){return e.visitNonFeatureElement?e.visitNonFeatureElement(this):e.visitChildren(this)}},Xe=class extends l{constructor(e,t){super(e,t)}feature(){return this.getRuleContext(0,gs)}step(){return this.getRuleContext(0,ta)}expression(){return this.getRuleContext(0,ia)}booleanExpression(){return this.getRuleContext(0,sa)}invariant(){return this.getRuleContext(0,aa)}connector(){return this.getRuleContext(0,Ks)}bindingConnector(){return this.getRuleContext(0,Xs)}succession(){return this.getRuleContext(0,$s)}flow(){return this.getRuleContext(0,ya)}successionFlow(){return this.getRuleContext(0,va)}get ruleIndex(){return n.RULE_featureElement}enterRule(e){e.enterFeatureElement&&e.enterFeatureElement(this)}exitRule(e){e.exitFeatureElement&&e.exitFeatureElement(this)}accept(e){return e.visitFeatureElement?e.visitFeatureElement(this):e.visitChildren(this)}},is=class extends l{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,te)}TYPE(){return this.getToken(n.TYPE,0)}typeDeclaration(){return this.getRuleContext(0,ns)}typeBody(){return this.getRuleContext(0,H)}get ruleIndex(){return n.RULE_type}enterRule(e){e.enterType&&e.enterType(this)}exitRule(e){e.exitType&&e.exitType(this)}accept(e){return e.visitType?e.visitType(this):e.visitChildren(this)}},te=class extends l{constructor(e,t){super(e,t)}ABSTRACT(){return this.getToken(n.ABSTRACT,0)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}get ruleIndex(){return n.RULE_typePrefix}enterRule(e){e.enterTypePrefix&&e.enterTypePrefix(this)}exitRule(e){e.exitTypePrefix&&e.exitTypePrefix(this)}accept(e){return e.visitTypePrefix?e.visitTypePrefix(this):e.visitChildren(this)}},ns=class extends l{constructor(e,t){super(e,t)}ALL(){return this.getToken(n.ALL,0)}identification(){return this.getRuleContext(0,O)}ownedMultiplicity(){return this.getRuleContext(0,_e)}specializationPart(e){return e===void 0?this.getRuleContexts(Qr):this.getRuleContext(e,Qr)}conjugationPart(e){return e===void 0?this.getRuleContexts(bt):this.getRuleContext(e,bt)}typeRelationshipPart(e){return e===void 0?this.getRuleContexts(Je):this.getRuleContext(e,Je)}get ruleIndex(){return n.RULE_typeDeclaration}enterRule(e){e.enterTypeDeclaration&&e.enterTypeDeclaration(this)}exitRule(e){e.exitTypeDeclaration&&e.exitTypeDeclaration(this)}accept(e){return e.visitTypeDeclaration?e.visitTypeDeclaration(this):e.visitChildren(this)}},Qr=class extends l{constructor(e,t){super(e,t)}ownedSpecialization(e){return e===void 0?this.getRuleContexts(zr):this.getRuleContext(e,zr)}COLON_GT(){return this.getToken(n.COLON_GT,0)}SPECIALIZES(){return this.getToken(n.SPECIALIZES,0)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}get ruleIndex(){return n.RULE_specializationPart}enterRule(e){e.enterSpecializationPart&&e.enterSpecializationPart(this)}exitRule(e){e.exitSpecializationPart&&e.exitSpecializationPart(this)}accept(e){return e.visitSpecializationPart?e.visitSpecializationPart(this):e.visitChildren(this)}},bt=class extends l{constructor(e,t){super(e,t)}ownedConjugation(){return this.getRuleContext(0,hs)}TILDE(){return this.getToken(n.TILDE,0)}CONJUGATES(){return this.getToken(n.CONJUGATES,0)}get ruleIndex(){return n.RULE_conjugationPart}enterRule(e){e.enterConjugationPart&&e.enterConjugationPart(this)}exitRule(e){e.exitConjugationPart&&e.exitConjugationPart(this)}accept(e){return e.visitConjugationPart?e.visitConjugationPart(this):e.visitChildren(this)}},Je=class extends l{constructor(e,t){super(e,t)}disjoiningPart(){return this.getRuleContext(0,ss)}unioningPart(){return this.getRuleContext(0,as)}intersectingPart(){return this.getRuleContext(0,ls)}differencingPart(){return this.getRuleContext(0,os)}get ruleIndex(){return n.RULE_typeRelationshipPart}enterRule(e){e.enterTypeRelationshipPart&&e.enterTypeRelationshipPart(this)}exitRule(e){e.exitTypeRelationshipPart&&e.exitTypeRelationshipPart(this)}accept(e){return e.visitTypeRelationshipPart?e.visitTypeRelationshipPart(this):e.visitChildren(this)}},ss=class extends l{constructor(e,t){super(e,t)}DISJOINT(){return this.getToken(n.DISJOINT,0)}FROM(){return this.getToken(n.FROM,0)}ownedDisjoining(e){return e===void 0?this.getRuleContexts(Yr):this.getRuleContext(e,Yr)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}get ruleIndex(){return n.RULE_disjoiningPart}enterRule(e){e.enterDisjoiningPart&&e.enterDisjoiningPart(this)}exitRule(e){e.exitDisjoiningPart&&e.exitDisjoiningPart(this)}accept(e){return e.visitDisjoiningPart?e.visitDisjoiningPart(this):e.visitChildren(this)}},as=class extends l{constructor(e,t){super(e,t)}UNIONS(){return this.getToken(n.UNIONS,0)}unioning(e){return e===void 0?this.getRuleContexts(Wr):this.getRuleContext(e,Wr)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}get ruleIndex(){return n.RULE_unioningPart}enterRule(e){e.enterUnioningPart&&e.enterUnioningPart(this)}exitRule(e){e.exitUnioningPart&&e.exitUnioningPart(this)}accept(e){return e.visitUnioningPart?e.visitUnioningPart(this):e.visitChildren(this)}},ls=class extends l{constructor(e,t){super(e,t)}INTERSECTS(){return this.getToken(n.INTERSECTS,0)}intersecting(e){return e===void 0?this.getRuleContexts(Xr):this.getRuleContext(e,Xr)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}get ruleIndex(){return n.RULE_intersectingPart}enterRule(e){e.enterIntersectingPart&&e.enterIntersectingPart(this)}exitRule(e){e.exitIntersectingPart&&e.exitIntersectingPart(this)}accept(e){return e.visitIntersectingPart?e.visitIntersectingPart(this):e.visitChildren(this)}},os=class extends l{constructor(e,t){super(e,t)}DIFFERENCES(){return this.getToken(n.DIFFERENCES,0)}differencing(e){return e===void 0?this.getRuleContexts(Jr):this.getRuleContext(e,Jr)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}get ruleIndex(){return n.RULE_differencingPart}enterRule(e){e.enterDifferencingPart&&e.enterDifferencingPart(this)}exitRule(e){e.exitDifferencingPart&&e.exitDifferencingPart(this)}accept(e){return e.visitDifferencingPart?e.visitDifferencingPart(this):e.visitChildren(this)}},H=class extends l{constructor(e,t){super(e,t)}SEMI(){return this.getToken(n.SEMI,0)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}typeBodyElement(e){return e===void 0?this.getRuleContexts(Rt):this.getRuleContext(e,Rt)}get ruleIndex(){return n.RULE_typeBody}enterRule(e){e.enterTypeBody&&e.enterTypeBody(this)}exitRule(e){e.exitTypeBody&&e.exitTypeBody(this)}accept(e){return e.visitTypeBody?e.visitTypeBody(this):e.visitChildren(this)}},Rt=class extends l{constructor(e,t){super(e,t)}nonFeatureMember(){return this.getRuleContext(0,$t)}featureMember(){return this.getRuleContext(0,ps)}aliasMember(){return this.getRuleContext(0,ve)}importRule(){return this.getRuleContext(0,pe)}get ruleIndex(){return n.RULE_typeBodyElement}enterRule(e){e.enterTypeBodyElement&&e.enterTypeBodyElement(this)}exitRule(e){e.exitTypeBodyElement&&e.exitTypeBodyElement(this)}accept(e){return e.visitTypeBodyElement?e.visitTypeBodyElement(this):e.visitChildren(this)}},us=class extends l{constructor(e,t){super(e,t)}SUBTYPE(){return this.getToken(n.SUBTYPE,0)}specificType(){return this.getRuleContext(0,er)}generalType(){return this.getRuleContext(0,$e)}relationshipBody(){return this.getRuleContext(0,Q)}COLON_GT(){return this.getToken(n.COLON_GT,0)}SPECIALIZES(){return this.getToken(n.SPECIALIZES,0)}SPECIALIZATION(){return this.getToken(n.SPECIALIZATION,0)}identification(){return this.getRuleContext(0,O)}get ruleIndex(){return n.RULE_specialization}enterRule(e){e.enterSpecialization&&e.enterSpecialization(this)}exitRule(e){e.exitSpecialization&&e.exitSpecialization(this)}accept(e){return e.visitSpecialization?e.visitSpecialization(this):e.visitChildren(this)}},zr=class extends l{constructor(e,t){super(e,t)}generalType(){return this.getRuleContext(0,$e)}get ruleIndex(){return n.RULE_ownedSpecialization}enterRule(e){e.enterOwnedSpecialization&&e.enterOwnedSpecialization(this)}exitRule(e){e.exitOwnedSpecialization&&e.exitOwnedSpecialization(this)}accept(e){return e.visitOwnedSpecialization?e.visitOwnedSpecialization(this):e.visitChildren(this)}},er=class extends l{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_specificType}enterRule(e){e.enterSpecificType&&e.enterSpecificType(this)}exitRule(e){e.exitSpecificType&&e.exitSpecificType(this)}accept(e){return e.visitSpecificType?e.visitSpecificType(this):e.visitChildren(this)}},$e=class extends l{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_generalType}enterRule(e){e.enterGeneralType&&e.enterGeneralType(this)}exitRule(e){e.exitGeneralType&&e.exitGeneralType(this)}accept(e){return e.visitGeneralType?e.visitGeneralType(this):e.visitChildren(this)}},cs=class extends l{constructor(e,t){super(e,t)}CONJUGATE(){return this.getToken(n.CONJUGATE,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}relationshipBody(){return this.getRuleContext(0,Q)}TILDE(){return this.getToken(n.TILDE,0)}CONJUGATES(){return this.getToken(n.CONJUGATES,0)}CONJUGATION(){return this.getToken(n.CONJUGATION,0)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}identification(){return this.getRuleContext(0,O)}get ruleIndex(){return n.RULE_conjugation}enterRule(e){e.enterConjugation&&e.enterConjugation(this)}exitRule(e){e.exitConjugation&&e.exitConjugation(this)}accept(e){return e.visitConjugation?e.visitConjugation(this):e.visitChildren(this)}},hs=class extends l{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_ownedConjugation}enterRule(e){e.enterOwnedConjugation&&e.enterOwnedConjugation(this)}exitRule(e){e.exitOwnedConjugation&&e.exitOwnedConjugation(this)}accept(e){return e.visitOwnedConjugation?e.visitOwnedConjugation(this):e.visitChildren(this)}},ds=class extends l{constructor(e,t){super(e,t)}DISJOINT(){return this.getToken(n.DISJOINT,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}FROM(){return this.getToken(n.FROM,0)}relationshipBody(){return this.getRuleContext(0,Q)}DISJOINING(){return this.getToken(n.DISJOINING,0)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}identification(){return this.getRuleContext(0,O)}get ruleIndex(){return n.RULE_disjoining}enterRule(e){e.enterDisjoining&&e.enterDisjoining(this)}exitRule(e){e.exitDisjoining&&e.exitDisjoining(this)}accept(e){return e.visitDisjoining?e.visitDisjoining(this):e.visitChildren(this)}},Yr=class extends l{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_ownedDisjoining}enterRule(e){e.enterOwnedDisjoining&&e.enterOwnedDisjoining(this)}exitRule(e){e.exitOwnedDisjoining&&e.exitOwnedDisjoining(this)}accept(e){return e.visitOwnedDisjoining?e.visitOwnedDisjoining(this):e.visitChildren(this)}},Wr=class extends l{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_unioning}enterRule(e){e.enterUnioning&&e.enterUnioning(this)}exitRule(e){e.exitUnioning&&e.exitUnioning(this)}accept(e){return e.visitUnioning?e.visitUnioning(this):e.visitChildren(this)}},Xr=class extends l{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_intersecting}enterRule(e){e.enterIntersecting&&e.enterIntersecting(this)}exitRule(e){e.exitIntersecting&&e.exitIntersecting(this)}accept(e){return e.visitIntersecting?e.visitIntersecting(this):e.visitChildren(this)}},Jr=class extends l{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_differencing}enterRule(e){e.enterDifferencing&&e.enterDifferencing(this)}exitRule(e){e.exitDifferencing&&e.exitDifferencing(this)}accept(e){return e.visitDifferencing?e.visitDifferencing(this):e.visitChildren(this)}},ps=class extends l{constructor(e,t){super(e,t)}typeFeatureMember(){return this.getRuleContext(0,xs)}ownedFeatureMember(){return this.getRuleContext(0,bs)}get ruleIndex(){return n.RULE_featureMember}enterRule(e){e.enterFeatureMember&&e.enterFeatureMember(this)}exitRule(e){e.exitFeatureMember&&e.exitFeatureMember(this)}accept(e){return e.visitFeatureMember?e.visitFeatureMember(this):e.visitChildren(this)}},xs=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}MEMBER(){return this.getToken(n.MEMBER,0)}featureElement(){return this.getRuleContext(0,Xe)}get ruleIndex(){return n.RULE_typeFeatureMember}enterRule(e){e.enterTypeFeatureMember&&e.enterTypeFeatureMember(this)}exitRule(e){e.exitTypeFeatureMember&&e.exitTypeFeatureMember(this)}accept(e){return e.visitTypeFeatureMember?e.visitTypeFeatureMember(this):e.visitChildren(this)}},bs=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}featureElement(){return this.getRuleContext(0,Xe)}get ruleIndex(){return n.RULE_ownedFeatureMember}enterRule(e){e.enterOwnedFeatureMember&&e.enterOwnedFeatureMember(this)}exitRule(e){e.exitOwnedFeatureMember&&e.exitOwnedFeatureMember(this)}accept(e){return e.visitOwnedFeatureMember?e.visitOwnedFeatureMember(this):e.visitChildren(this)}},Rs=class extends l{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,te)}CLASSIFIER(){return this.getToken(n.CLASSIFIER,0)}classifierDeclaration(){return this.getRuleContext(0,ae)}typeBody(){return this.getRuleContext(0,H)}get ruleIndex(){return n.RULE_classifier}enterRule(e){e.enterClassifier&&e.enterClassifier(this)}exitRule(e){e.exitClassifier&&e.exitClassifier(this)}accept(e){return e.visitClassifier?e.visitClassifier(this):e.visitChildren(this)}},ae=class extends l{constructor(e,t){super(e,t)}ALL(){return this.getToken(n.ALL,0)}identification(){return this.getRuleContext(0,O)}ownedMultiplicity(){return this.getRuleContext(0,_e)}superclassingPart(){return this.getRuleContext(0,fs)}conjugationPart(){return this.getRuleContext(0,bt)}typeRelationshipPart(e){return e===void 0?this.getRuleContexts(Je):this.getRuleContext(e,Je)}get ruleIndex(){return n.RULE_classifierDeclaration}enterRule(e){e.enterClassifierDeclaration&&e.enterClassifierDeclaration(this)}exitRule(e){e.exitClassifierDeclaration&&e.exitClassifierDeclaration(this)}accept(e){return e.visitClassifierDeclaration?e.visitClassifierDeclaration(this):e.visitChildren(this)}},fs=class extends l{constructor(e,t){super(e,t)}ownedSubclassification(e){return e===void 0?this.getRuleContexts(ft):this.getRuleContext(e,ft)}COLON_GT(){return this.getToken(n.COLON_GT,0)}SPECIALIZES(){return this.getToken(n.SPECIALIZES,0)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}get ruleIndex(){return n.RULE_superclassingPart}enterRule(e){e.enterSuperclassingPart&&e.enterSuperclassingPart(this)}exitRule(e){e.exitSuperclassingPart&&e.exitSuperclassingPart(this)}accept(e){return e.visitSuperclassingPart?e.visitSuperclassingPart(this):e.visitChildren(this)}},ms=class extends l{constructor(e,t){super(e,t)}SUBCLASSIFIER(){return this.getToken(n.SUBCLASSIFIER,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}relationshipBody(){return this.getRuleContext(0,Q)}COLON_GT(){return this.getToken(n.COLON_GT,0)}SPECIALIZES(){return this.getToken(n.SPECIALIZES,0)}SPECIALIZATION(){return this.getToken(n.SPECIALIZATION,0)}identification(){return this.getRuleContext(0,O)}get ruleIndex(){return n.RULE_subclassification}enterRule(e){e.enterSubclassification&&e.enterSubclassification(this)}exitRule(e){e.exitSubclassification&&e.exitSubclassification(this)}accept(e){return e.visitSubclassification?e.visitSubclassification(this):e.visitChildren(this)}},ft=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}get ruleIndex(){return n.RULE_ownedSubclassification}enterRule(e){e.enterOwnedSubclassification&&e.enterOwnedSubclassification(this)}exitRule(e){e.exitOwnedSubclassification&&e.exitOwnedSubclassification(this)}accept(e){return e.visitOwnedSubclassification?e.visitOwnedSubclassification(this):e.visitChildren(this)}},gs=class extends l{constructor(e,t){super(e,t)}typeBody(){return this.getRuleContext(0,H)}featurePrefix(){return this.getRuleContext(0,oe)}featureDeclaration(){return this.getRuleContext(0,$)}valuePart(){return this.getRuleContext(0,D)}FEATURE(){return this.getToken(n.FEATURE,0)}prefixMetadataMember(){return this.getRuleContext(0,Y)}endFeaturePrefix(){return this.getRuleContext(0,$r)}basicFeaturePrefix(){return this.getRuleContext(0,tr)}get ruleIndex(){return n.RULE_feature}enterRule(e){e.enterFeature&&e.enterFeature(this)}exitRule(e){e.exitFeature&&e.exitFeature(this)}accept(e){return e.visitFeature?e.visitFeature(this):e.visitChildren(this)}},$r=class extends l{constructor(e,t){super(e,t)}END(){return this.getToken(n.END,0)}CONST(){return this.getToken(n.CONST,0)}get ruleIndex(){return n.RULE_endFeaturePrefix}enterRule(e){e.enterEndFeaturePrefix&&e.enterEndFeaturePrefix(this)}exitRule(e){e.exitEndFeaturePrefix&&e.exitEndFeaturePrefix(this)}accept(e){return e.visitEndFeaturePrefix?e.visitEndFeaturePrefix(this):e.visitChildren(this)}},tr=class extends l{constructor(e,t){super(e,t)}featureDirection(){return this.getRuleContext(0,ei)}DERIVED(){return this.getToken(n.DERIVED,0)}ABSTRACT(){return this.getToken(n.ABSTRACT,0)}COMPOSITE(){return this.getToken(n.COMPOSITE,0)}PORTION(){return this.getToken(n.PORTION,0)}VAR(){return this.getToken(n.VAR,0)}CONST(){return this.getToken(n.CONST,0)}get ruleIndex(){return n.RULE_basicFeaturePrefix}enterRule(e){e.enterBasicFeaturePrefix&&e.enterBasicFeaturePrefix(this)}exitRule(e){e.exitBasicFeaturePrefix&&e.exitBasicFeaturePrefix(this)}accept(e){return e.visitBasicFeaturePrefix?e.visitBasicFeaturePrefix(this):e.visitChildren(this)}},oe=class extends l{constructor(e,t){super(e,t)}endFeaturePrefix(){return this.getRuleContext(0,$r)}basicFeaturePrefix(){return this.getRuleContext(0,tr)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}ownedCrossFeatureMember(){return this.getRuleContext(0,Zr)}get ruleIndex(){return n.RULE_featurePrefix}enterRule(e){e.enterFeaturePrefix&&e.enterFeaturePrefix(this)}exitRule(e){e.exitFeaturePrefix&&e.exitFeaturePrefix(this)}accept(e){return e.visitFeaturePrefix?e.visitFeaturePrefix(this):e.visitChildren(this)}},Zr=class extends l{constructor(e,t){super(e,t)}ownedCrossFeature(){return this.getRuleContext(0,Cs)}get ruleIndex(){return n.RULE_ownedCrossFeatureMember}enterRule(e){e.enterOwnedCrossFeatureMember&&e.enterOwnedCrossFeatureMember(this)}exitRule(e){e.exitOwnedCrossFeatureMember&&e.exitOwnedCrossFeatureMember(this)}accept(e){return e.visitOwnedCrossFeatureMember?e.visitOwnedCrossFeatureMember(this):e.visitChildren(this)}},Cs=class extends l{constructor(e,t){super(e,t)}basicFeaturePrefix(){return this.getRuleContext(0,tr)}featureDeclaration(){return this.getRuleContext(0,$)}basicUsagePrefix(){return this.getRuleContext(0,it)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_ownedCrossFeature}enterRule(e){e.enterOwnedCrossFeature&&e.enterOwnedCrossFeature(this)}exitRule(e){e.exitOwnedCrossFeature&&e.exitOwnedCrossFeature(this)}accept(e){return e.visitOwnedCrossFeature?e.visitOwnedCrossFeature(this):e.visitChildren(this)}},ei=class extends l{constructor(e,t){super(e,t)}IN(){return this.getToken(n.IN,0)}OUT(){return this.getToken(n.OUT,0)}INOUT(){return this.getToken(n.INOUT,0)}get ruleIndex(){return n.RULE_featureDirection}enterRule(e){e.enterFeatureDirection&&e.enterFeatureDirection(this)}exitRule(e){e.exitFeatureDirection&&e.exitFeatureDirection(this)}accept(e){return e.visitFeatureDirection?e.visitFeatureDirection(this):e.visitChildren(this)}},$=class extends l{constructor(e,t){super(e,t)}featureIdentification(){return this.getRuleContext(0,Es)}featureSpecializationPart(){return this.getRuleContext(0,Z)}conjugationPart(){return this.getRuleContext(0,bt)}ALL(){return this.getToken(n.ALL,0)}featureRelationshipPart(e){return e===void 0?this.getRuleContexts(ti):this.getRuleContext(e,ti)}get ruleIndex(){return n.RULE_featureDeclaration}enterRule(e){e.enterFeatureDeclaration&&e.enterFeatureDeclaration(this)}exitRule(e){e.exitFeatureDeclaration&&e.exitFeatureDeclaration(this)}accept(e){return e.visitFeatureDeclaration?e.visitFeatureDeclaration(this):e.visitChildren(this)}},Es=class extends l{constructor(e,t){super(e,t)}LT(){return this.getToken(n.LT,0)}name(e){return e===void 0?this.getRuleContexts(ee):this.getRuleContext(e,ee)}GT(){return this.getToken(n.GT,0)}get ruleIndex(){return n.RULE_featureIdentification}enterRule(e){e.enterFeatureIdentification&&e.enterFeatureIdentification(this)}exitRule(e){e.exitFeatureIdentification&&e.exitFeatureIdentification(this)}accept(e){return e.visitFeatureIdentification?e.visitFeatureIdentification(this):e.visitChildren(this)}},ti=class extends l{constructor(e,t){super(e,t)}typeRelationshipPart(){return this.getRuleContext(0,Je)}chainingPart(){return this.getRuleContext(0,ys)}invertingPart(){return this.getRuleContext(0,vs)}typeFeaturingPart(){return this.getRuleContext(0,Ls)}get ruleIndex(){return n.RULE_featureRelationshipPart}enterRule(e){e.enterFeatureRelationshipPart&&e.enterFeatureRelationshipPart(this)}exitRule(e){e.exitFeatureRelationshipPart&&e.exitFeatureRelationshipPart(this)}accept(e){return e.visitFeatureRelationshipPart?e.visitFeatureRelationshipPart(this):e.visitChildren(this)}},ys=class extends l{constructor(e,t){super(e,t)}CHAINS(){return this.getToken(n.CHAINS,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_chainingPart}enterRule(e){e.enterChainingPart&&e.enterChainingPart(this)}exitRule(e){e.exitChainingPart&&e.exitChainingPart(this)}accept(e){return e.visitChainingPart?e.visitChainingPart(this):e.visitChildren(this)}},vs=class extends l{constructor(e,t){super(e,t)}INVERSE(){return this.getToken(n.INVERSE,0)}OF(){return this.getToken(n.OF,0)}ownedFeatureInverting(){return this.getRuleContext(0,Fs)}get ruleIndex(){return n.RULE_invertingPart}enterRule(e){e.enterInvertingPart&&e.enterInvertingPart(this)}exitRule(e){e.exitInvertingPart&&e.exitInvertingPart(this)}accept(e){return e.visitInvertingPart?e.visitInvertingPart(this):e.visitChildren(this)}},Ls=class extends l{constructor(e,t){super(e,t)}FEATURED(){return this.getToken(n.FEATURED,0)}BY(){return this.getToken(n.BY,0)}ownedTypeFeaturing(e){return e===void 0?this.getRuleContexts(si):this.getRuleContext(e,si)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}get ruleIndex(){return n.RULE_typeFeaturingPart}enterRule(e){e.enterTypeFeaturingPart&&e.enterTypeFeaturingPart(this)}exitRule(e){e.exitTypeFeaturingPart&&e.exitTypeFeaturingPart(this)}accept(e){return e.visitTypeFeaturingPart?e.visitTypeFeaturingPart(this):e.visitChildren(this)}},Z=class extends l{constructor(e,t){super(e,t)}featureSpecialization(e){return e===void 0?this.getRuleContexts(Le):this.getRuleContext(e,Le)}multiplicityPart(){return this.getRuleContext(0,ri)}get ruleIndex(){return n.RULE_featureSpecializationPart}enterRule(e){e.enterFeatureSpecializationPart&&e.enterFeatureSpecializationPart(this)}exitRule(e){e.exitFeatureSpecializationPart&&e.exitFeatureSpecializationPart(this)}accept(e){return e.visitFeatureSpecializationPart?e.visitFeatureSpecializationPart(this):e.visitChildren(this)}},ri=class extends l{constructor(e,t){super(e,t)}ownedMultiplicity(){return this.getRuleContext(0,_e)}ORDERED(){return this.getToken(n.ORDERED,0)}NONUNIQUE(){return this.getToken(n.NONUNIQUE,0)}get ruleIndex(){return n.RULE_multiplicityPart}enterRule(e){e.enterMultiplicityPart&&e.enterMultiplicityPart(this)}exitRule(e){e.exitMultiplicityPart&&e.exitMultiplicityPart(this)}accept(e){return e.visitMultiplicityPart?e.visitMultiplicityPart(this):e.visitChildren(this)}},Le=class extends l{constructor(e,t){super(e,t)}typings(){return this.getRuleContext(0,Ss)}subsettings(){return this.getRuleContext(0,Ts)}references(){return this.getRuleContext(0,As)}crosses(){return this.getRuleContext(0,Ms)}redefinitions(){return this.getRuleContext(0,Ns)}get ruleIndex(){return n.RULE_featureSpecialization}enterRule(e){e.enterFeatureSpecialization&&e.enterFeatureSpecialization(this)}exitRule(e){e.exitFeatureSpecialization&&e.exitFeatureSpecialization(this)}accept(e){return e.visitFeatureSpecialization?e.visitFeatureSpecialization(this):e.visitChildren(this)}},Ss=class extends l{constructor(e,t){super(e,t)}typedBy(){return this.getRuleContext(0,Ps)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}ownedFeatureTyping(e){return e===void 0?this.getRuleContexts(xe):this.getRuleContext(e,xe)}featureTyping(e){return e===void 0?this.getRuleContexts(mt):this.getRuleContext(e,mt)}get ruleIndex(){return n.RULE_typings}enterRule(e){e.enterTypings&&e.enterTypings(this)}exitRule(e){e.exitTypings&&e.exitTypings(this)}accept(e){return e.visitTypings?e.visitTypings(this):e.visitChildren(this)}},Ps=class extends l{constructor(e,t){super(e,t)}ownedFeatureTyping(){return this.getRuleContext(0,xe)}COLON(){return this.getToken(n.COLON,0)}TYPED(){return this.getToken(n.TYPED,0)}BY(){return this.getToken(n.BY,0)}featureTyping(){return this.getRuleContext(0,mt)}DEFINED(){return this.getToken(n.DEFINED,0)}get ruleIndex(){return n.RULE_typedBy}enterRule(e){e.enterTypedBy&&e.enterTypedBy(this)}exitRule(e){e.exitTypedBy&&e.exitTypedBy(this)}accept(e){return e.visitTypedBy?e.visitTypedBy(this):e.visitChildren(this)}},Ts=class extends l{constructor(e,t){super(e,t)}subsets(){return this.getRuleContext(0,ii)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}ownedSubsetting(e){return e===void 0?this.getRuleContexts(rr):this.getRuleContext(e,rr)}get ruleIndex(){return n.RULE_subsettings}enterRule(e){e.enterSubsettings&&e.enterSubsettings(this)}exitRule(e){e.exitSubsettings&&e.exitSubsettings(this)}accept(e){return e.visitSubsettings?e.visitSubsettings(this):e.visitChildren(this)}},ii=class extends l{constructor(e,t){super(e,t)}ownedSubsetting(){return this.getRuleContext(0,rr)}COLON_GT(){return this.getToken(n.COLON_GT,0)}SUBSETS(){return this.getToken(n.SUBSETS,0)}get ruleIndex(){return n.RULE_subsets}enterRule(e){e.enterSubsets&&e.enterSubsets(this)}exitRule(e){e.exitSubsets&&e.exitSubsets(this)}accept(e){return e.visitSubsets?e.visitSubsets(this):e.visitChildren(this)}},As=class extends l{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,z)}COLON_COLON_GT(){return this.getToken(n.COLON_COLON_GT,0)}REFERENCES(){return this.getToken(n.REFERENCES,0)}get ruleIndex(){return n.RULE_references}enterRule(e){e.enterReferences&&e.enterReferences(this)}exitRule(e){e.exitReferences&&e.exitReferences(this)}accept(e){return e.visitReferences?e.visitReferences(this):e.visitChildren(this)}},Ms=class extends l{constructor(e,t){super(e,t)}ownedCrossSubsetting(){return this.getRuleContext(0,Os)}FAT_ARROW(){return this.getToken(n.FAT_ARROW,0)}CROSSES(){return this.getToken(n.CROSSES,0)}get ruleIndex(){return n.RULE_crosses}enterRule(e){e.enterCrosses&&e.enterCrosses(this)}exitRule(e){e.exitCrosses&&e.exitCrosses(this)}accept(e){return e.visitCrosses?e.visitCrosses(this):e.visitChildren(this)}},Ns=class extends l{constructor(e,t){super(e,t)}redefines(){return this.getRuleContext(0,Us)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}ownedRedefinition(e){return e===void 0?this.getRuleContexts(Ze):this.getRuleContext(e,Ze)}get ruleIndex(){return n.RULE_redefinitions}enterRule(e){e.enterRedefinitions&&e.enterRedefinitions(this)}exitRule(e){e.exitRedefinitions&&e.exitRedefinitions(this)}accept(e){return e.visitRedefinitions?e.visitRedefinitions(this):e.visitChildren(this)}},Us=class extends l{constructor(e,t){super(e,t)}ownedRedefinition(){return this.getRuleContext(0,Ze)}COLON_GT_GT(){return this.getToken(n.COLON_GT_GT,0)}REDEFINES(){return this.getToken(n.REDEFINES,0)}get ruleIndex(){return n.RULE_redefines}enterRule(e){e.enterRedefines&&e.enterRedefines(this)}exitRule(e){e.exitRedefines&&e.exitRedefines(this)}accept(e){return e.visitRedefines?e.visitRedefines(this):e.visitChildren(this)}},mt=class extends l{constructor(e,t){super(e,t)}TYPING(){return this.getToken(n.TYPING,0)}qualifiedName(){return this.getRuleContext(0,m)}generalType(){return this.getRuleContext(0,$e)}relationshipBody(){return this.getRuleContext(0,Q)}COLON(){return this.getToken(n.COLON,0)}TYPED(){return this.getToken(n.TYPED,0)}BY(){return this.getToken(n.BY,0)}SPECIALIZATION(){return this.getToken(n.SPECIALIZATION,0)}identification(){return this.getRuleContext(0,O)}ownedFeatureTyping(){return this.getRuleContext(0,xe)}conjugatedPortTyping(){return this.getRuleContext(0,sl)}get ruleIndex(){return n.RULE_featureTyping}enterRule(e){e.enterFeatureTyping&&e.enterFeatureTyping(this)}exitRule(e){e.exitFeatureTyping&&e.exitFeatureTyping(this)}accept(e){return e.visitFeatureTyping?e.visitFeatureTyping(this):e.visitChildren(this)}},xe=class extends l{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_ownedFeatureTyping}enterRule(e){e.enterOwnedFeatureTyping&&e.enterOwnedFeatureTyping(this)}exitRule(e){e.exitOwnedFeatureTyping&&e.exitOwnedFeatureTyping(this)}accept(e){return e.visitOwnedFeatureTyping?e.visitOwnedFeatureTyping(this):e.visitChildren(this)}},Is=class extends l{constructor(e,t){super(e,t)}SUBSET(){return this.getToken(n.SUBSET,0)}specificType(){return this.getRuleContext(0,er)}generalType(){return this.getRuleContext(0,$e)}relationshipBody(){return this.getRuleContext(0,Q)}COLON_GT(){return this.getToken(n.COLON_GT,0)}SUBSETS(){return this.getToken(n.SUBSETS,0)}SPECIALIZATION(){return this.getToken(n.SPECIALIZATION,0)}identification(){return this.getRuleContext(0,O)}get ruleIndex(){return n.RULE_subsetting}enterRule(e){e.enterSubsetting&&e.enterSubsetting(this)}exitRule(e){e.exitSubsetting&&e.exitSubsetting(this)}accept(e){return e.visitSubsetting?e.visitSubsetting(this):e.visitChildren(this)}},rr=class extends l{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_ownedSubsetting}enterRule(e){e.enterOwnedSubsetting&&e.enterOwnedSubsetting(this)}exitRule(e){e.exitOwnedSubsetting&&e.exitOwnedSubsetting(this)}accept(e){return e.visitOwnedSubsetting?e.visitOwnedSubsetting(this):e.visitChildren(this)}},z=class extends l{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_ownedReferenceSubsetting}enterRule(e){e.enterOwnedReferenceSubsetting&&e.enterOwnedReferenceSubsetting(this)}exitRule(e){e.exitOwnedReferenceSubsetting&&e.exitOwnedReferenceSubsetting(this)}accept(e){return e.visitOwnedReferenceSubsetting?e.visitOwnedReferenceSubsetting(this):e.visitChildren(this)}},Os=class extends l{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_ownedCrossSubsetting}enterRule(e){e.enterOwnedCrossSubsetting&&e.enterOwnedCrossSubsetting(this)}exitRule(e){e.exitOwnedCrossSubsetting&&e.exitOwnedCrossSubsetting(this)}accept(e){return e.visitOwnedCrossSubsetting?e.visitOwnedCrossSubsetting(this):e.visitChildren(this)}},ws=class extends l{constructor(e,t){super(e,t)}REDEFINITION(){return this.getToken(n.REDEFINITION,0)}specificType(){return this.getRuleContext(0,er)}generalType(){return this.getRuleContext(0,$e)}relationshipBody(){return this.getRuleContext(0,Q)}COLON_GT_GT(){return this.getToken(n.COLON_GT_GT,0)}REDEFINES(){return this.getToken(n.REDEFINES,0)}SPECIALIZATION(){return this.getToken(n.SPECIALIZATION,0)}identification(){return this.getRuleContext(0,O)}get ruleIndex(){return n.RULE_redefinition}enterRule(e){e.enterRedefinition&&e.enterRedefinition(this)}exitRule(e){e.exitRedefinition&&e.exitRedefinition(this)}accept(e){return e.visitRedefinition?e.visitRedefinition(this):e.visitChildren(this)}},Ze=class extends l{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_ownedRedefinition}enterRule(e){e.enterOwnedRedefinition&&e.enterOwnedRedefinition(this)}exitRule(e){e.exitOwnedRedefinition&&e.exitOwnedRedefinition(this)}accept(e){return e.visitOwnedRedefinition?e.visitOwnedRedefinition(this):e.visitChildren(this)}},ks=class extends l{constructor(e,t){super(e,t)}featureChain(){return this.getRuleContext(0,ni)}ownedFeatureChaining(e){return e===void 0?this.getRuleContexts(Ve):this.getRuleContext(e,Ve)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_ownedFeatureChain}enterRule(e){e.enterOwnedFeatureChain&&e.enterOwnedFeatureChain(this)}exitRule(e){e.exitOwnedFeatureChain&&e.exitOwnedFeatureChain(this)}accept(e){return e.visitOwnedFeatureChain?e.visitOwnedFeatureChain(this):e.visitChildren(this)}},ni=class extends l{constructor(e,t){super(e,t)}ownedFeatureChaining(e){return e===void 0?this.getRuleContexts(Ve):this.getRuleContext(e,Ve)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_featureChain}enterRule(e){e.enterFeatureChain&&e.enterFeatureChain(this)}exitRule(e){e.exitFeatureChain&&e.exitFeatureChain(this)}accept(e){return e.visitFeatureChain?e.visitFeatureChain(this):e.visitChildren(this)}},Ve=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}get ruleIndex(){return n.RULE_ownedFeatureChaining}enterRule(e){e.enterOwnedFeatureChaining&&e.enterOwnedFeatureChaining(this)}exitRule(e){e.exitOwnedFeatureChaining&&e.exitOwnedFeatureChaining(this)}accept(e){return e.visitOwnedFeatureChaining?e.visitOwnedFeatureChaining(this):e.visitChildren(this)}},Ds=class extends l{constructor(e,t){super(e,t)}INVERSE(){return this.getToken(n.INVERSE,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}OF(){return this.getToken(n.OF,0)}relationshipBody(){return this.getRuleContext(0,Q)}INVERTING(){return this.getToken(n.INVERTING,0)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}identification(){return this.getRuleContext(0,O)}get ruleIndex(){return n.RULE_featureInverting}enterRule(e){e.enterFeatureInverting&&e.enterFeatureInverting(this)}exitRule(e){e.exitFeatureInverting&&e.exitFeatureInverting(this)}accept(e){return e.visitFeatureInverting?e.visitFeatureInverting(this):e.visitChildren(this)}},Fs=class extends l{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_ownedFeatureInverting}enterRule(e){e.enterOwnedFeatureInverting&&e.enterOwnedFeatureInverting(this)}exitRule(e){e.exitOwnedFeatureInverting&&e.exitOwnedFeatureInverting(this)}accept(e){return e.visitOwnedFeatureInverting?e.visitOwnedFeatureInverting(this):e.visitChildren(this)}},Hs=class extends l{constructor(e,t){super(e,t)}FEATURING(){return this.getToken(n.FEATURING,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}BY(){return this.getToken(n.BY,0)}relationshipBody(){return this.getRuleContext(0,Q)}OF(){return this.getToken(n.OF,0)}identification(){return this.getRuleContext(0,O)}get ruleIndex(){return n.RULE_typeFeaturing}enterRule(e){e.enterTypeFeaturing&&e.enterTypeFeaturing(this)}exitRule(e){e.exitTypeFeaturing&&e.exitTypeFeaturing(this)}accept(e){return e.visitTypeFeaturing?e.visitTypeFeaturing(this):e.visitChildren(this)}},si=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}get ruleIndex(){return n.RULE_ownedTypeFeaturing}enterRule(e){e.enterOwnedTypeFeaturing&&e.enterOwnedTypeFeaturing(this)}exitRule(e){e.exitOwnedTypeFeaturing&&e.exitOwnedTypeFeaturing(this)}accept(e){return e.visitOwnedTypeFeaturing?e.visitOwnedTypeFeaturing(this):e.visitChildren(this)}},Bs=class extends l{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,te)}DATATYPE(){return this.getToken(n.DATATYPE,0)}classifierDeclaration(){return this.getRuleContext(0,ae)}typeBody(){return this.getRuleContext(0,H)}get ruleIndex(){return n.RULE_dataType}enterRule(e){e.enterDataType&&e.enterDataType(this)}exitRule(e){e.exitDataType&&e.exitDataType(this)}accept(e){return e.visitDataType?e.visitDataType(this):e.visitChildren(this)}},Vs=class extends l{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,te)}CLASS(){return this.getToken(n.CLASS,0)}classifierDeclaration(){return this.getRuleContext(0,ae)}typeBody(){return this.getRuleContext(0,H)}get ruleIndex(){return n.RULE_class}enterRule(e){e.enterClass&&e.enterClass(this)}exitRule(e){e.exitClass&&e.exitClass(this)}accept(e){return e.visitClass?e.visitClass(this):e.visitChildren(this)}},_s=class extends l{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,te)}STRUCT(){return this.getToken(n.STRUCT,0)}classifierDeclaration(){return this.getRuleContext(0,ae)}typeBody(){return this.getRuleContext(0,H)}get ruleIndex(){return n.RULE_structure}enterRule(e){e.enterStructure&&e.enterStructure(this)}exitRule(e){e.exitStructure&&e.exitStructure(this)}accept(e){return e.visitStructure?e.visitStructure(this):e.visitChildren(this)}},qs=class extends l{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,te)}ASSOC(){return this.getToken(n.ASSOC,0)}classifierDeclaration(){return this.getRuleContext(0,ae)}typeBody(){return this.getRuleContext(0,H)}get ruleIndex(){return n.RULE_association}enterRule(e){e.enterAssociation&&e.enterAssociation(this)}exitRule(e){e.exitAssociation&&e.exitAssociation(this)}accept(e){return e.visitAssociation?e.visitAssociation(this):e.visitChildren(this)}},Gs=class extends l{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,te)}ASSOC(){return this.getToken(n.ASSOC,0)}STRUCT(){return this.getToken(n.STRUCT,0)}classifierDeclaration(){return this.getRuleContext(0,ae)}typeBody(){return this.getRuleContext(0,H)}get ruleIndex(){return n.RULE_associationStructure}enterRule(e){e.enterAssociationStructure&&e.enterAssociationStructure(this)}exitRule(e){e.exitAssociationStructure&&e.exitAssociationStructure(this)}accept(e){return e.visitAssociationStructure?e.visitAssociationStructure(this):e.visitChildren(this)}},Ks=class extends l{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,oe)}CONNECTOR(){return this.getToken(n.CONNECTOR,0)}typeBody(){return this.getRuleContext(0,H)}connectorDeclaration(){return this.getRuleContext(0,js)}featureDeclaration(){return this.getRuleContext(0,$)}valuePart(){return this.getRuleContext(0,D)}get ruleIndex(){return n.RULE_connector}enterRule(e){e.enterConnector&&e.enterConnector(this)}exitRule(e){e.exitConnector&&e.exitConnector(this)}accept(e){return e.visitConnector?e.visitConnector(this):e.visitChildren(this)}},js=class extends l{constructor(e,t){super(e,t)}binaryConnectorDeclaration(){return this.getRuleContext(0,Qs)}naryConnectorDeclaration(){return this.getRuleContext(0,zs)}get ruleIndex(){return n.RULE_connectorDeclaration}enterRule(e){e.enterConnectorDeclaration&&e.enterConnectorDeclaration(this)}exitRule(e){e.exitConnectorDeclaration&&e.exitConnectorDeclaration(this)}accept(e){return e.visitConnectorDeclaration?e.visitConnectorDeclaration(this):e.visitChildren(this)}},Qs=class extends l{constructor(e,t){super(e,t)}connectorEndMember(e){return e===void 0?this.getRuleContexts(V):this.getRuleContext(e,V)}TO(){return this.getToken(n.TO,0)}FROM(){return this.getToken(n.FROM,0)}ALL(){return this.getToken(n.ALL,0)}featureDeclaration(){return this.getRuleContext(0,$)}get ruleIndex(){return n.RULE_binaryConnectorDeclaration}enterRule(e){e.enterBinaryConnectorDeclaration&&e.enterBinaryConnectorDeclaration(this)}exitRule(e){e.exitBinaryConnectorDeclaration&&e.exitBinaryConnectorDeclaration(this)}accept(e){return e.visitBinaryConnectorDeclaration?e.visitBinaryConnectorDeclaration(this):e.visitChildren(this)}},zs=class extends l{constructor(e,t){super(e,t)}LPAREN(){return this.getToken(n.LPAREN,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(V):this.getRuleContext(e,V)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}RPAREN(){return this.getToken(n.RPAREN,0)}featureDeclaration(){return this.getRuleContext(0,$)}get ruleIndex(){return n.RULE_naryConnectorDeclaration}enterRule(e){e.enterNaryConnectorDeclaration&&e.enterNaryConnectorDeclaration(this)}exitRule(e){e.exitNaryConnectorDeclaration&&e.exitNaryConnectorDeclaration(this)}accept(e){return e.visitNaryConnectorDeclaration?e.visitNaryConnectorDeclaration(this):e.visitChildren(this)}},V=class extends l{constructor(e,t){super(e,t)}connectorEnd(){return this.getRuleContext(0,Ys)}get ruleIndex(){return n.RULE_connectorEndMember}enterRule(e){e.enterConnectorEndMember&&e.enterConnectorEndMember(this)}exitRule(e){e.exitConnectorEndMember&&e.exitConnectorEndMember(this)}accept(e){return e.visitConnectorEndMember?e.visitConnectorEndMember(this):e.visitChildren(this)}},Ys=class extends l{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,z)}ownedCrossMultiplicityMember(){return this.getRuleContext(0,ai)}name(){return this.getRuleContext(0,ee)}COLON_COLON_GT(){return this.getToken(n.COLON_COLON_GT,0)}REFERENCES(){return this.getToken(n.REFERENCES,0)}get ruleIndex(){return n.RULE_connectorEnd}enterRule(e){e.enterConnectorEnd&&e.enterConnectorEnd(this)}exitRule(e){e.exitConnectorEnd&&e.exitConnectorEnd(this)}accept(e){return e.visitConnectorEnd?e.visitConnectorEnd(this):e.visitChildren(this)}},ai=class extends l{constructor(e,t){super(e,t)}ownedCrossMultiplicity(){return this.getRuleContext(0,Ws)}get ruleIndex(){return n.RULE_ownedCrossMultiplicityMember}enterRule(e){e.enterOwnedCrossMultiplicityMember&&e.enterOwnedCrossMultiplicityMember(this)}exitRule(e){e.exitOwnedCrossMultiplicityMember&&e.exitOwnedCrossMultiplicityMember(this)}accept(e){return e.visitOwnedCrossMultiplicityMember?e.visitOwnedCrossMultiplicityMember(this):e.visitChildren(this)}},Ws=class extends l{constructor(e,t){super(e,t)}ownedMultiplicity(){return this.getRuleContext(0,_e)}get ruleIndex(){return n.RULE_ownedCrossMultiplicity}enterRule(e){e.enterOwnedCrossMultiplicity&&e.enterOwnedCrossMultiplicity(this)}exitRule(e){e.exitOwnedCrossMultiplicity&&e.exitOwnedCrossMultiplicity(this)}accept(e){return e.visitOwnedCrossMultiplicity?e.visitOwnedCrossMultiplicity(this):e.visitChildren(this)}},Xs=class extends l{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,oe)}BINDING(){return this.getToken(n.BINDING,0)}bindingConnectorDeclaration(){return this.getRuleContext(0,Js)}typeBody(){return this.getRuleContext(0,H)}get ruleIndex(){return n.RULE_bindingConnector}enterRule(e){e.enterBindingConnector&&e.enterBindingConnector(this)}exitRule(e){e.exitBindingConnector&&e.exitBindingConnector(this)}accept(e){return e.visitBindingConnector?e.visitBindingConnector(this):e.visitChildren(this)}},Js=class extends l{constructor(e,t){super(e,t)}featureDeclaration(){return this.getRuleContext(0,$)}OF(){return this.getToken(n.OF,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(V):this.getRuleContext(e,V)}EQ(){return this.getToken(n.EQ,0)}ALL(){return this.getToken(n.ALL,0)}get ruleIndex(){return n.RULE_bindingConnectorDeclaration}enterRule(e){e.enterBindingConnectorDeclaration&&e.enterBindingConnectorDeclaration(this)}exitRule(e){e.exitBindingConnectorDeclaration&&e.exitBindingConnectorDeclaration(this)}accept(e){return e.visitBindingConnectorDeclaration?e.visitBindingConnectorDeclaration(this):e.visitChildren(this)}},$s=class extends l{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,oe)}SUCCESSION(){return this.getToken(n.SUCCESSION,0)}successionDeclaration(){return this.getRuleContext(0,Zs)}typeBody(){return this.getRuleContext(0,H)}get ruleIndex(){return n.RULE_succession}enterRule(e){e.enterSuccession&&e.enterSuccession(this)}exitRule(e){e.exitSuccession&&e.exitSuccession(this)}accept(e){return e.visitSuccession?e.visitSuccession(this):e.visitChildren(this)}},Zs=class extends l{constructor(e,t){super(e,t)}featureDeclaration(){return this.getRuleContext(0,$)}FIRST(){return this.getToken(n.FIRST,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(V):this.getRuleContext(e,V)}THEN(){return this.getToken(n.THEN,0)}ALL(){return this.getToken(n.ALL,0)}get ruleIndex(){return n.RULE_successionDeclaration}enterRule(e){e.enterSuccessionDeclaration&&e.enterSuccessionDeclaration(this)}exitRule(e){e.exitSuccessionDeclaration&&e.exitSuccessionDeclaration(this)}accept(e){return e.visitSuccessionDeclaration?e.visitSuccessionDeclaration(this):e.visitChildren(this)}},ea=class extends l{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,te)}BEHAVIOR(){return this.getToken(n.BEHAVIOR,0)}classifierDeclaration(){return this.getRuleContext(0,ae)}typeBody(){return this.getRuleContext(0,H)}get ruleIndex(){return n.RULE_behavior}enterRule(e){e.enterBehavior&&e.enterBehavior(this)}exitRule(e){e.exitBehavior&&e.exitBehavior(this)}accept(e){return e.visitBehavior?e.visitBehavior(this):e.visitChildren(this)}},ta=class extends l{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,oe)}STEP(){return this.getToken(n.STEP,0)}featureDeclaration(){return this.getRuleContext(0,$)}typeBody(){return this.getRuleContext(0,H)}valuePart(){return this.getRuleContext(0,D)}get ruleIndex(){return n.RULE_step}enterRule(e){e.enterStep&&e.enterStep(this)}exitRule(e){e.exitStep&&e.exitStep(this)}accept(e){return e.visitStep?e.visitStep(this):e.visitChildren(this)}},ra=class extends l{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,te)}FUNCTION(){return this.getToken(n.FUNCTION,0)}classifierDeclaration(){return this.getRuleContext(0,ae)}functionBody(){return this.getRuleContext(0,et)}get ruleIndex(){return n.RULE_function}enterRule(e){e.enterFunction&&e.enterFunction(this)}exitRule(e){e.exitFunction&&e.exitFunction(this)}accept(e){return e.visitFunction?e.visitFunction(this):e.visitChildren(this)}},et=class extends l{constructor(e,t){super(e,t)}SEMI(){return this.getToken(n.SEMI,0)}LBRACE(){return this.getToken(n.LBRACE,0)}functionBodyPart(){return this.getRuleContext(0,ir)}RBRACE(){return this.getToken(n.RBRACE,0)}get ruleIndex(){return n.RULE_functionBody}enterRule(e){e.enterFunctionBody&&e.enterFunctionBody(this)}exitRule(e){e.exitFunctionBody&&e.exitFunctionBody(this)}accept(e){return e.visitFunctionBody?e.visitFunctionBody(this):e.visitChildren(this)}},ir=class extends l{constructor(e,t){super(e,t)}typeBodyElement(e){return e===void 0?this.getRuleContexts(Rt):this.getRuleContext(e,Rt)}returnFeatureMember(e){return e===void 0?this.getRuleContexts(li):this.getRuleContext(e,li)}resultExpressionMember(){return this.getRuleContext(0,nr)}get ruleIndex(){return n.RULE_functionBodyPart}enterRule(e){e.enterFunctionBodyPart&&e.enterFunctionBodyPart(this)}exitRule(e){e.exitFunctionBodyPart&&e.exitFunctionBodyPart(this)}accept(e){return e.visitFunctionBodyPart?e.visitFunctionBodyPart(this):e.visitChildren(this)}},li=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}RETURN(){return this.getToken(n.RETURN,0)}featureElement(){return this.getRuleContext(0,Xe)}get ruleIndex(){return n.RULE_returnFeatureMember}enterRule(e){e.enterReturnFeatureMember&&e.enterReturnFeatureMember(this)}exitRule(e){e.exitReturnFeatureMember&&e.exitReturnFeatureMember(this)}accept(e){return e.visitReturnFeatureMember?e.visitReturnFeatureMember(this):e.visitChildren(this)}},nr=class extends l{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,P)}memberPrefix(){return this.getRuleContext(0,T)}get ruleIndex(){return n.RULE_resultExpressionMember}enterRule(e){e.enterResultExpressionMember&&e.enterResultExpressionMember(this)}exitRule(e){e.exitResultExpressionMember&&e.exitResultExpressionMember(this)}accept(e){return e.visitResultExpressionMember?e.visitResultExpressionMember(this):e.visitChildren(this)}},ia=class extends l{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,oe)}EXPR(){return this.getToken(n.EXPR,0)}featureDeclaration(){return this.getRuleContext(0,$)}functionBody(){return this.getRuleContext(0,et)}valuePart(){return this.getRuleContext(0,D)}get ruleIndex(){return n.RULE_expression}enterRule(e){e.enterExpression&&e.enterExpression(this)}exitRule(e){e.exitExpression&&e.exitExpression(this)}accept(e){return e.visitExpression?e.visitExpression(this):e.visitChildren(this)}},na=class extends l{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,te)}PREDICATE(){return this.getToken(n.PREDICATE,0)}classifierDeclaration(){return this.getRuleContext(0,ae)}functionBody(){return this.getRuleContext(0,et)}get ruleIndex(){return n.RULE_predicate}enterRule(e){e.enterPredicate&&e.enterPredicate(this)}exitRule(e){e.exitPredicate&&e.exitPredicate(this)}accept(e){return e.visitPredicate?e.visitPredicate(this):e.visitChildren(this)}},sa=class extends l{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,oe)}BOOL(){return this.getToken(n.BOOL,0)}featureDeclaration(){return this.getRuleContext(0,$)}functionBody(){return this.getRuleContext(0,et)}valuePart(){return this.getRuleContext(0,D)}get ruleIndex(){return n.RULE_booleanExpression}enterRule(e){e.enterBooleanExpression&&e.enterBooleanExpression(this)}exitRule(e){e.exitBooleanExpression&&e.exitBooleanExpression(this)}accept(e){return e.visitBooleanExpression?e.visitBooleanExpression(this):e.visitChildren(this)}},aa=class extends l{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,oe)}INV(){return this.getToken(n.INV,0)}featureDeclaration(){return this.getRuleContext(0,$)}functionBody(){return this.getRuleContext(0,et)}valuePart(){return this.getRuleContext(0,D)}TRUE(){return this.getToken(n.TRUE,0)}FALSE(){return this.getToken(n.FALSE,0)}get ruleIndex(){return n.RULE_invariant}enterRule(e){e.enterInvariant&&e.enterInvariant(this)}exitRule(e){e.exitInvariant&&e.exitInvariant(this)}accept(e){return e.visitInvariant?e.visitInvariant(this):e.visitChildren(this)}},la=class extends l{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,P)}get ruleIndex(){return n.RULE_ownedExpressionMember}enterRule(e){e.enterOwnedExpressionMember&&e.enterOwnedExpressionMember(this)}exitRule(e){e.exitOwnedExpressionMember&&e.exitOwnedExpressionMember(this)}accept(e){return e.visitOwnedExpressionMember?e.visitOwnedExpressionMember(this):e.visitChildren(this)}},l1=class extends l{constructor(e,t){super(e,t)}elementReferenceMember(){return this.getRuleContext(0,ma)}get ruleIndex(){return n.RULE_metadataReference}enterRule(e){e.enterMetadataReference&&e.enterMetadataReference(this)}exitRule(e){e.exitMetadataReference&&e.exitMetadataReference(this)}accept(e){return e.visitMetadataReference?e.visitMetadataReference(this):e.visitChildren(this)}},o1=class extends l{constructor(e,t){super(e,t)}typeReference(){return this.getRuleContext(0,zt)}get ruleIndex(){return n.RULE_typeReferenceMember}enterRule(e){e.enterTypeReferenceMember&&e.enterTypeReferenceMember(this)}exitRule(e){e.exitTypeReferenceMember&&e.exitTypeReferenceMember(this)}accept(e){return e.visitTypeReferenceMember?e.visitTypeReferenceMember(this):e.visitChildren(this)}},u1=class extends l{constructor(e,t){super(e,t)}typeReference(){return this.getRuleContext(0,zt)}get ruleIndex(){return n.RULE_typeResultMember}enterRule(e){e.enterTypeResultMember&&e.enterTypeResultMember(this)}exitRule(e){e.exitTypeResultMember&&e.exitTypeResultMember(this)}accept(e){return e.visitTypeResultMember?e.visitTypeResultMember(this):e.visitChildren(this)}},oa=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}get ruleIndex(){return n.RULE_referenceTyping}enterRule(e){e.enterReferenceTyping&&e.enterReferenceTyping(this)}exitRule(e){e.exitReferenceTyping&&e.exitReferenceTyping(this)}accept(e){return e.visitReferenceTyping?e.visitReferenceTyping(this):e.visitChildren(this)}},c1=class extends l{constructor(e,t){super(e,t)}emptyFeature(){return this.getRuleContext(0,En)}get ruleIndex(){return n.RULE_emptyResultMember}enterRule(e){e.enterEmptyResultMember&&e.enterEmptyResultMember(this)}exitRule(e){e.exitEmptyResultMember&&e.exitEmptyResultMember(this)}accept(e){return e.visitEmptyResultMember?e.visitEmptyResultMember(this):e.visitChildren(this)}},h1=class extends l{constructor(e,t){super(e,t)}ownedExpressionMember(){return this.getRuleContext(0,la)}COMMA(){return this.getToken(n.COMMA,0)}sequenceExpressionListMember(){return this.getRuleContext(0,ua)}get ruleIndex(){return n.RULE_sequenceOperatorExpression}enterRule(e){e.enterSequenceOperatorExpression&&e.enterSequenceOperatorExpression(this)}exitRule(e){e.exitSequenceOperatorExpression&&e.exitSequenceOperatorExpression(this)}accept(e){return e.visitSequenceOperatorExpression?e.visitSequenceOperatorExpression(this):e.visitChildren(this)}},ua=class extends l{constructor(e,t){super(e,t)}sequenceExpressionList(){return this.getRuleContext(0,Yt)}get ruleIndex(){return n.RULE_sequenceExpressionListMember}enterRule(e){e.enterSequenceExpressionListMember&&e.enterSequenceExpressionListMember(this)}exitRule(e){e.exitSequenceExpressionListMember&&e.exitSequenceExpressionListMember(this)}accept(e){return e.visitSequenceExpressionListMember?e.visitSequenceExpressionListMember(this):e.visitChildren(this)}},d1=class extends l{constructor(e,t){super(e,t)}bodyArgument(){return this.getRuleContext(0,ca)}get ruleIndex(){return n.RULE_bodyArgumentMember}enterRule(e){e.enterBodyArgumentMember&&e.enterBodyArgumentMember(this)}exitRule(e){e.exitBodyArgumentMember&&e.exitBodyArgumentMember(this)}accept(e){return e.visitBodyArgumentMember?e.visitBodyArgumentMember(this):e.visitChildren(this)}},ca=class extends l{constructor(e,t){super(e,t)}bodyArgumentValue(){return this.getRuleContext(0,ha)}get ruleIndex(){return n.RULE_bodyArgument}enterRule(e){e.enterBodyArgument&&e.enterBodyArgument(this)}exitRule(e){e.exitBodyArgument&&e.exitBodyArgument(this)}accept(e){return e.visitBodyArgument?e.visitBodyArgument(this):e.visitChildren(this)}},ha=class extends l{constructor(e,t){super(e,t)}bodyExpression(){return this.getRuleContext(0,Wt)}get ruleIndex(){return n.RULE_bodyArgumentValue}enterRule(e){e.enterBodyArgumentValue&&e.enterBodyArgumentValue(this)}exitRule(e){e.exitBodyArgumentValue&&e.exitBodyArgumentValue(this)}accept(e){return e.visitBodyArgumentValue?e.visitBodyArgumentValue(this):e.visitChildren(this)}},p1=class extends l{constructor(e,t){super(e,t)}functionReferenceArgument(){return this.getRuleContext(0,da)}get ruleIndex(){return n.RULE_functionReferenceArgumentMember}enterRule(e){e.enterFunctionReferenceArgumentMember&&e.enterFunctionReferenceArgumentMember(this)}exitRule(e){e.exitFunctionReferenceArgumentMember&&e.exitFunctionReferenceArgumentMember(this)}accept(e){return e.visitFunctionReferenceArgumentMember?e.visitFunctionReferenceArgumentMember(this):e.visitChildren(this)}},da=class extends l{constructor(e,t){super(e,t)}functionReferenceArgumentValue(){return this.getRuleContext(0,pa)}get ruleIndex(){return n.RULE_functionReferenceArgument}enterRule(e){e.enterFunctionReferenceArgument&&e.enterFunctionReferenceArgument(this)}exitRule(e){e.exitFunctionReferenceArgument&&e.exitFunctionReferenceArgument(this)}accept(e){return e.visitFunctionReferenceArgument?e.visitFunctionReferenceArgument(this):e.visitChildren(this)}},pa=class extends l{constructor(e,t){super(e,t)}functionReferenceExpression(){return this.getRuleContext(0,xa)}get ruleIndex(){return n.RULE_functionReferenceArgumentValue}enterRule(e){e.enterFunctionReferenceArgumentValue&&e.enterFunctionReferenceArgumentValue(this)}exitRule(e){e.exitFunctionReferenceArgumentValue&&e.exitFunctionReferenceArgumentValue(this)}accept(e){return e.visitFunctionReferenceArgumentValue?e.visitFunctionReferenceArgumentValue(this):e.visitChildren(this)}},xa=class extends l{constructor(e,t){super(e,t)}functionReferenceMember(){return this.getRuleContext(0,ba)}get ruleIndex(){return n.RULE_functionReferenceExpression}enterRule(e){e.enterFunctionReferenceExpression&&e.enterFunctionReferenceExpression(this)}exitRule(e){e.exitFunctionReferenceExpression&&e.exitFunctionReferenceExpression(this)}accept(e){return e.visitFunctionReferenceExpression?e.visitFunctionReferenceExpression(this):e.visitChildren(this)}},ba=class extends l{constructor(e,t){super(e,t)}functionReference(){return this.getRuleContext(0,Ra)}get ruleIndex(){return n.RULE_functionReferenceMember}enterRule(e){e.enterFunctionReferenceMember&&e.enterFunctionReferenceMember(this)}exitRule(e){e.exitFunctionReferenceMember&&e.exitFunctionReferenceMember(this)}accept(e){return e.visitFunctionReferenceMember?e.visitFunctionReferenceMember(this):e.visitChildren(this)}},Ra=class extends l{constructor(e,t){super(e,t)}referenceTyping(){return this.getRuleContext(0,oa)}get ruleIndex(){return n.RULE_functionReference}enterRule(e){e.enterFunctionReference&&e.enterFunctionReference(this)}exitRule(e){e.exitFunctionReference&&e.exitFunctionReference(this)}accept(e){return e.visitFunctionReference?e.visitFunctionReference(this):e.visitChildren(this)}},gt=class extends l{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_featureChainMember}enterRule(e){e.enterFeatureChainMember&&e.enterFeatureChainMember(this)}exitRule(e){e.exitFeatureChainMember&&e.exitFeatureChainMember(this)}accept(e){return e.visitFeatureChainMember?e.visitFeatureChainMember(this):e.visitChildren(this)}},x1=class extends l{constructor(e,t){super(e,t)}featureChain(){return this.getRuleContext(0,ni)}ownedFeatureChain(){return this.getRuleContext(0,ks)}get ruleIndex(){return n.RULE_ownedFeatureChainMember}enterRule(e){e.enterOwnedFeatureChainMember&&e.enterOwnedFeatureChainMember(this)}exitRule(e){e.exitOwnedFeatureChainMember&&e.exitOwnedFeatureChainMember(this)}accept(e){return e.visitOwnedFeatureChainMember?e.visitOwnedFeatureChainMember(this):e.visitChildren(this)}},b1=class extends l{constructor(e,t){super(e,t)}featureReference(){return this.getRuleContext(0,fa)}get ruleIndex(){return n.RULE_featureReferenceMember}enterRule(e){e.enterFeatureReferenceMember&&e.enterFeatureReferenceMember(this)}exitRule(e){e.exitFeatureReferenceMember&&e.exitFeatureReferenceMember(this)}accept(e){return e.visitFeatureReferenceMember?e.visitFeatureReferenceMember(this):e.visitChildren(this)}},fa=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}get ruleIndex(){return n.RULE_featureReference}enterRule(e){e.enterFeatureReference&&e.enterFeatureReference(this)}exitRule(e){e.exitFeatureReference&&e.exitFeatureReference(this)}accept(e){return e.visitFeatureReference?e.visitFeatureReference(this):e.visitChildren(this)}},ma=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}get ruleIndex(){return n.RULE_elementReferenceMember}enterRule(e){e.enterElementReferenceMember&&e.enterElementReferenceMember(this)}exitRule(e){e.exitElementReferenceMember&&e.exitElementReferenceMember(this)}accept(e){return e.visitElementReferenceMember?e.visitElementReferenceMember(this):e.visitChildren(this)}},R1=class extends l{constructor(e,t){super(e,t)}constructorResult(){return this.getRuleContext(0,ga)}get ruleIndex(){return n.RULE_constructorResultMember}enterRule(e){e.enterConstructorResultMember&&e.enterConstructorResultMember(this)}exitRule(e){e.exitConstructorResultMember&&e.exitConstructorResultMember(this)}accept(e){return e.visitConstructorResultMember?e.visitConstructorResultMember(this):e.visitChildren(this)}},ga=class extends l{constructor(e,t){super(e,t)}argumentList(){return this.getRuleContext(0,We)}get ruleIndex(){return n.RULE_constructorResult}enterRule(e){e.enterConstructorResult&&e.enterConstructorResult(this)}exitRule(e){e.exitConstructorResult&&e.exitConstructorResult(this)}accept(e){return e.visitConstructorResult?e.visitConstructorResult(this):e.visitChildren(this)}},f1=class extends l{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_instantiatedTypeMember}enterRule(e){e.enterInstantiatedTypeMember&&e.enterInstantiatedTypeMember(this)}exitRule(e){e.exitInstantiatedTypeMember&&e.exitInstantiatedTypeMember(this)}accept(e){return e.visitInstantiatedTypeMember?e.visitInstantiatedTypeMember(this):e.visitChildren(this)}},m1=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}get ruleIndex(){return n.RULE_instantiatedTypeReference}enterRule(e){e.enterInstantiatedTypeReference&&e.enterInstantiatedTypeReference(this)}exitRule(e){e.exitInstantiatedTypeReference&&e.exitInstantiatedTypeReference(this)}accept(e){return e.visitInstantiatedTypeReference?e.visitInstantiatedTypeReference(this):e.visitChildren(this)}},g1=class extends l{constructor(e,t){super(e,t)}namedArgument(){return this.getRuleContext(0,Xt)}get ruleIndex(){return n.RULE_namedArgumentMember}enterRule(e){e.enterNamedArgumentMember&&e.enterNamedArgumentMember(this)}exitRule(e){e.exitNamedArgumentMember&&e.exitNamedArgumentMember(this)}accept(e){return e.visitNamedArgumentMember?e.visitNamedArgumentMember(this):e.visitChildren(this)}},C1=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}get ruleIndex(){return n.RULE_parameterRedefinition}enterRule(e){e.enterParameterRedefinition&&e.enterParameterRedefinition(this)}exitRule(e){e.exitParameterRedefinition&&e.exitParameterRedefinition(this)}accept(e){return e.visitParameterRedefinition?e.visitParameterRedefinition(this):e.visitChildren(this)}},E1=class extends l{constructor(e,t){super(e,t)}expressionBody(){return this.getRuleContext(0,Ca)}get ruleIndex(){return n.RULE_expressionBodyMember}enterRule(e){e.enterExpressionBodyMember&&e.enterExpressionBodyMember(this)}exitRule(e){e.exitExpressionBodyMember&&e.exitExpressionBodyMember(this)}accept(e){return e.visitExpressionBodyMember?e.visitExpressionBodyMember(this):e.visitChildren(this)}},Ca=class extends l{constructor(e,t){super(e,t)}LBRACE(){return this.getToken(n.LBRACE,0)}functionBodyPart(){return this.getRuleContext(0,ir)}RBRACE(){return this.getToken(n.RBRACE,0)}get ruleIndex(){return n.RULE_expressionBody}enterRule(e){e.enterExpressionBody&&e.enterExpressionBody(this)}exitRule(e){e.exitExpressionBody&&e.exitExpressionBody(this)}accept(e){return e.visitExpressionBody?e.visitExpressionBody(this):e.visitChildren(this)}},y1=class extends l{constructor(e,t){super(e,t)}TRUE(){return this.getToken(n.TRUE,0)}FALSE(){return this.getToken(n.FALSE,0)}get ruleIndex(){return n.RULE_booleanValue}enterRule(e){e.enterBooleanValue&&e.enterBooleanValue(this)}exitRule(e){e.exitBooleanValue&&e.exitBooleanValue(this)}accept(e){return e.visitBooleanValue?e.visitBooleanValue(this):e.visitChildren(this)}},v1=class extends l{constructor(e,t){super(e,t)}DOT(){return this.getToken(n.DOT,0)}INTEGER(e){return e===void 0?this.getTokens(n.INTEGER):this.getToken(n.INTEGER,e)}REAL(){return this.getToken(n.REAL,0)}get ruleIndex(){return n.RULE_realValue}enterRule(e){e.enterRealValue&&e.enterRealValue(this)}exitRule(e){e.exitRealValue&&e.exitRealValue(this)}accept(e){return e.visitRealValue?e.visitRealValue(this):e.visitChildren(this)}},Ea=class extends l{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,te)}INTERACTION(){return this.getToken(n.INTERACTION,0)}classifierDeclaration(){return this.getRuleContext(0,ae)}typeBody(){return this.getRuleContext(0,H)}get ruleIndex(){return n.RULE_interaction}enterRule(e){e.enterInteraction&&e.enterInteraction(this)}exitRule(e){e.exitInteraction&&e.exitInteraction(this)}accept(e){return e.visitInteraction?e.visitInteraction(this):e.visitChildren(this)}},ya=class extends l{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,oe)}FLOW(){return this.getToken(n.FLOW,0)}flowDeclaration(){return this.getRuleContext(0,Ct)}typeBody(){return this.getRuleContext(0,H)}get ruleIndex(){return n.RULE_flow}enterRule(e){e.enterFlow&&e.enterFlow(this)}exitRule(e){e.exitFlow&&e.exitFlow(this)}accept(e){return e.visitFlow?e.visitFlow(this):e.visitChildren(this)}},va=class extends l{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,oe)}SUCCESSION(){return this.getToken(n.SUCCESSION,0)}FLOW(){return this.getToken(n.FLOW,0)}flowDeclaration(){return this.getRuleContext(0,Ct)}typeBody(){return this.getRuleContext(0,H)}get ruleIndex(){return n.RULE_successionFlow}enterRule(e){e.enterSuccessionFlow&&e.enterSuccessionFlow(this)}exitRule(e){e.exitSuccessionFlow&&e.exitSuccessionFlow(this)}accept(e){return e.visitSuccessionFlow?e.visitSuccessionFlow(this):e.visitChildren(this)}},Ct=class extends l{constructor(e,t){super(e,t)}featureDeclaration(){return this.getRuleContext(0,$)}valuePart(){return this.getRuleContext(0,D)}OF(){return this.getToken(n.OF,0)}payloadFeatureMember(){return this.getRuleContext(0,La)}FROM(){return this.getToken(n.FROM,0)}flowEndMember(e){return e===void 0?this.getRuleContexts(ui):this.getRuleContext(e,ui)}TO(){return this.getToken(n.TO,0)}ALL(){return this.getToken(n.ALL,0)}usageDeclaration(){return this.getRuleContext(0,U)}flowPayloadFeatureMember(){return this.getRuleContext(0,zi)}get ruleIndex(){return n.RULE_flowDeclaration}enterRule(e){e.enterFlowDeclaration&&e.enterFlowDeclaration(this)}exitRule(e){e.exitFlowDeclaration&&e.exitFlowDeclaration(this)}accept(e){return e.visitFlowDeclaration?e.visitFlowDeclaration(this):e.visitChildren(this)}},La=class extends l{constructor(e,t){super(e,t)}payloadFeature(){return this.getRuleContext(0,sr)}get ruleIndex(){return n.RULE_payloadFeatureMember}enterRule(e){e.enterPayloadFeatureMember&&e.enterPayloadFeatureMember(this)}exitRule(e){e.exitPayloadFeatureMember&&e.exitPayloadFeatureMember(this)}accept(e){return e.visitPayloadFeatureMember?e.visitPayloadFeatureMember(this):e.visitChildren(this)}},sr=class extends l{constructor(e,t){super(e,t)}valuePart(){return this.getRuleContext(0,D)}identification(){return this.getRuleContext(0,O)}payloadFeatureSpecializationPart(){return this.getRuleContext(0,oi)}ownedFeatureTyping(){return this.getRuleContext(0,xe)}ownedMultiplicity(){return this.getRuleContext(0,_e)}get ruleIndex(){return n.RULE_payloadFeature}enterRule(e){e.enterPayloadFeature&&e.enterPayloadFeature(this)}exitRule(e){e.exitPayloadFeature&&e.exitPayloadFeature(this)}accept(e){return e.visitPayloadFeature?e.visitPayloadFeature(this):e.visitChildren(this)}},oi=class extends l{constructor(e,t){super(e,t)}featureSpecialization(e){return e===void 0?this.getRuleContexts(Le):this.getRuleContext(e,Le)}multiplicityPart(){return this.getRuleContext(0,ri)}get ruleIndex(){return n.RULE_payloadFeatureSpecializationPart}enterRule(e){e.enterPayloadFeatureSpecializationPart&&e.enterPayloadFeatureSpecializationPart(this)}exitRule(e){e.exitPayloadFeatureSpecializationPart&&e.exitPayloadFeatureSpecializationPart(this)}accept(e){return e.visitPayloadFeatureSpecializationPart?e.visitPayloadFeatureSpecializationPart(this):e.visitChildren(this)}},ui=class extends l{constructor(e,t){super(e,t)}flowEnd(){return this.getRuleContext(0,Sa)}get ruleIndex(){return n.RULE_flowEndMember}enterRule(e){e.enterFlowEndMember&&e.enterFlowEndMember(this)}exitRule(e){e.exitFlowEndMember&&e.exitFlowEndMember(this)}accept(e){return e.visitFlowEndMember?e.visitFlowEndMember(this):e.visitChildren(this)}},Sa=class extends l{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_flowEnd}enterRule(e){e.enterFlowEnd&&e.enterFlowEnd(this)}exitRule(e){e.exitFlowEnd&&e.exitFlowEnd(this)}accept(e){return e.visitFlowEnd?e.visitFlowEnd(this):e.visitChildren(this)}},L1=class extends l{constructor(e,t){super(e,t)}flowFeature(){return this.getRuleContext(0,Pa)}get ruleIndex(){return n.RULE_flowFeatureMember}enterRule(e){e.enterFlowFeatureMember&&e.enterFlowFeatureMember(this)}exitRule(e){e.exitFlowFeatureMember&&e.exitFlowFeatureMember(this)}accept(e){return e.visitFlowFeatureMember?e.visitFlowFeatureMember(this):e.visitChildren(this)}},Pa=class extends l{constructor(e,t){super(e,t)}flowFeatureRedefinition(){return this.getRuleContext(0,Ta)}get ruleIndex(){return n.RULE_flowFeature}enterRule(e){e.enterFlowFeature&&e.enterFlowFeature(this)}exitRule(e){e.exitFlowFeature&&e.exitFlowFeature(this)}accept(e){return e.visitFlowFeature?e.visitFlowFeature(this):e.visitChildren(this)}},Ta=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}get ruleIndex(){return n.RULE_flowFeatureRedefinition}enterRule(e){e.enterFlowFeatureRedefinition&&e.enterFlowFeatureRedefinition(this)}exitRule(e){e.exitFlowFeatureRedefinition&&e.exitFlowFeatureRedefinition(this)}accept(e){return e.visitFlowFeatureRedefinition?e.visitFlowFeatureRedefinition(this):e.visitChildren(this)}},D=class extends l{constructor(e,t){super(e,t)}featureValue(){return this.getRuleContext(0,Aa)}get ruleIndex(){return n.RULE_valuePart}enterRule(e){e.enterValuePart&&e.enterValuePart(this)}exitRule(e){e.exitValuePart&&e.exitValuePart(this)}accept(e){return e.visitValuePart?e.visitValuePart(this):e.visitChildren(this)}},Aa=class extends l{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,P)}EQ(){return this.getToken(n.EQ,0)}COLON_EQ(){return this.getToken(n.COLON_EQ,0)}DEFAULT(){return this.getToken(n.DEFAULT,0)}get ruleIndex(){return n.RULE_featureValue}enterRule(e){e.enterFeatureValue&&e.enterFeatureValue(this)}exitRule(e){e.exitFeatureValue&&e.exitFeatureValue(this)}accept(e){return e.visitFeatureValue?e.visitFeatureValue(this):e.visitChildren(this)}},Ma=class extends l{constructor(e,t){super(e,t)}multiplicitySubset(){return this.getRuleContext(0,Na)}multiplicityRange(){return this.getRuleContext(0,ci)}get ruleIndex(){return n.RULE_multiplicity}enterRule(e){e.enterMultiplicity&&e.enterMultiplicity(this)}exitRule(e){e.exitMultiplicity&&e.exitMultiplicity(this)}accept(e){return e.visitMultiplicity?e.visitMultiplicity(this):e.visitChildren(this)}},Na=class extends l{constructor(e,t){super(e,t)}MULTIPLICITY(){return this.getToken(n.MULTIPLICITY,0)}subsets(){return this.getRuleContext(0,ii)}typeBody(){return this.getRuleContext(0,H)}identification(){return this.getRuleContext(0,O)}get ruleIndex(){return n.RULE_multiplicitySubset}enterRule(e){e.enterMultiplicitySubset&&e.enterMultiplicitySubset(this)}exitRule(e){e.exitMultiplicitySubset&&e.exitMultiplicitySubset(this)}accept(e){return e.visitMultiplicitySubset?e.visitMultiplicitySubset(this):e.visitChildren(this)}},ci=class extends l{constructor(e,t){super(e,t)}MULTIPLICITY(){return this.getToken(n.MULTIPLICITY,0)}multiplicityBounds(){return this.getRuleContext(0,hi)}typeBody(){return this.getRuleContext(0,H)}identification(){return this.getRuleContext(0,O)}LBRACK(){return this.getToken(n.LBRACK,0)}multiplicityExpressionMember(e){return e===void 0?this.getRuleContexts(Et):this.getRuleContext(e,Et)}RBRACK(){return this.getToken(n.RBRACK,0)}DOT_DOT(){return this.getToken(n.DOT_DOT,0)}get ruleIndex(){return n.RULE_multiplicityRange}enterRule(e){e.enterMultiplicityRange&&e.enterMultiplicityRange(this)}exitRule(e){e.exitMultiplicityRange&&e.exitMultiplicityRange(this)}accept(e){return e.visitMultiplicityRange?e.visitMultiplicityRange(this):e.visitChildren(this)}},_e=class extends l{constructor(e,t){super(e,t)}ownedMultiplicityRange(){return this.getRuleContext(0,Ua)}multiplicityRange(){return this.getRuleContext(0,ci)}get ruleIndex(){return n.RULE_ownedMultiplicity}enterRule(e){e.enterOwnedMultiplicity&&e.enterOwnedMultiplicity(this)}exitRule(e){e.exitOwnedMultiplicity&&e.exitOwnedMultiplicity(this)}accept(e){return e.visitOwnedMultiplicity?e.visitOwnedMultiplicity(this):e.visitChildren(this)}},Ua=class extends l{constructor(e,t){super(e,t)}multiplicityBounds(){return this.getRuleContext(0,hi)}get ruleIndex(){return n.RULE_ownedMultiplicityRange}enterRule(e){e.enterOwnedMultiplicityRange&&e.enterOwnedMultiplicityRange(this)}exitRule(e){e.exitOwnedMultiplicityRange&&e.exitOwnedMultiplicityRange(this)}accept(e){return e.visitOwnedMultiplicityRange?e.visitOwnedMultiplicityRange(this):e.visitChildren(this)}},hi=class extends l{constructor(e,t){super(e,t)}LBRACK(){return this.getToken(n.LBRACK,0)}multiplicityExpressionMember(e){return e===void 0?this.getRuleContexts(Et):this.getRuleContext(e,Et)}RBRACK(){return this.getToken(n.RBRACK,0)}DOT_DOT(){return this.getToken(n.DOT_DOT,0)}get ruleIndex(){return n.RULE_multiplicityBounds}enterRule(e){e.enterMultiplicityBounds&&e.enterMultiplicityBounds(this)}exitRule(e){e.exitMultiplicityBounds&&e.exitMultiplicityBounds(this)}accept(e){return e.visitMultiplicityBounds?e.visitMultiplicityBounds(this):e.visitChildren(this)}},Et=class extends l{constructor(e,t){super(e,t)}literalExpression(){return this.getRuleContext(0,Hr)}featureReferenceExpression(){return this.getRuleContext(0,wn)}get ruleIndex(){return n.RULE_multiplicityExpressionMember}enterRule(e){e.enterMultiplicityExpressionMember&&e.enterMultiplicityExpressionMember(this)}exitRule(e){e.exitMultiplicityExpressionMember&&e.exitMultiplicityExpressionMember(this)}accept(e){return e.visitMultiplicityExpressionMember?e.visitMultiplicityExpressionMember(this):e.visitChildren(this)}},Ia=class extends l{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,te)}METACLASS(){return this.getToken(n.METACLASS,0)}classifierDeclaration(){return this.getRuleContext(0,ae)}typeBody(){return this.getRuleContext(0,H)}get ruleIndex(){return n.RULE_metaclass}enterRule(e){e.enterMetaclass&&e.enterMetaclass(this)}exitRule(e){e.exitMetaclass&&e.exitMetaclass(this)}accept(e){return e.visitMetaclass?e.visitMetaclass(this):e.visitChildren(this)}},di=class extends l{constructor(e,t){super(e,t)}HASH(){return this.getToken(n.HASH,0)}prefixMetadataFeature(){return this.getRuleContext(0,pi)}prefixMetadataUsage(){return this.getRuleContext(0,mn)}get ruleIndex(){return n.RULE_prefixMetadataAnnotation}enterRule(e){e.enterPrefixMetadataAnnotation&&e.enterPrefixMetadataAnnotation(this)}exitRule(e){e.exitPrefixMetadataAnnotation&&e.exitPrefixMetadataAnnotation(this)}accept(e){return e.visitPrefixMetadataAnnotation?e.visitPrefixMetadataAnnotation(this):e.visitChildren(this)}},Y=class extends l{constructor(e,t){super(e,t)}HASH(){return this.getToken(n.HASH,0)}prefixMetadataFeature(){return this.getRuleContext(0,pi)}prefixMetadataUsage(){return this.getRuleContext(0,mn)}get ruleIndex(){return n.RULE_prefixMetadataMember}enterRule(e){e.enterPrefixMetadataMember&&e.enterPrefixMetadataMember(this)}exitRule(e){e.exitPrefixMetadataMember&&e.exitPrefixMetadataMember(this)}accept(e){return e.visitPrefixMetadataMember?e.visitPrefixMetadataMember(this):e.visitChildren(this)}},pi=class extends l{constructor(e,t){super(e,t)}ownedFeatureTyping(){return this.getRuleContext(0,xe)}get ruleIndex(){return n.RULE_prefixMetadataFeature}enterRule(e){e.enterPrefixMetadataFeature&&e.enterPrefixMetadataFeature(this)}exitRule(e){e.exitPrefixMetadataFeature&&e.exitPrefixMetadataFeature(this)}accept(e){return e.visitPrefixMetadataFeature?e.visitPrefixMetadataFeature(this):e.visitChildren(this)}},Oa=class extends l{constructor(e,t){super(e,t)}metadataFeatureDeclaration(){return this.getRuleContext(0,wa)}metadataBody(){return this.getRuleContext(0,yt)}AT_SIGN(){return this.getToken(n.AT_SIGN,0)}METADATA(){return this.getToken(n.METADATA,0)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}ABOUT(){return this.getToken(n.ABOUT,0)}annotation(e){return e===void 0?this.getRuleContexts(Be):this.getRuleContext(e,Be)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}get ruleIndex(){return n.RULE_metadataFeature}enterRule(e){e.enterMetadataFeature&&e.enterMetadataFeature(this)}exitRule(e){e.exitMetadataFeature&&e.exitMetadataFeature(this)}accept(e){return e.visitMetadataFeature?e.visitMetadataFeature(this):e.visitChildren(this)}},wa=class extends l{constructor(e,t){super(e,t)}ownedFeatureTyping(){return this.getRuleContext(0,xe)}COLON(){return this.getToken(n.COLON,0)}TYPED(){return this.getToken(n.TYPED,0)}BY(){return this.getToken(n.BY,0)}identification(){return this.getRuleContext(0,O)}get ruleIndex(){return n.RULE_metadataFeatureDeclaration}enterRule(e){e.enterMetadataFeatureDeclaration&&e.enterMetadataFeatureDeclaration(this)}exitRule(e){e.exitMetadataFeatureDeclaration&&e.exitMetadataFeatureDeclaration(this)}accept(e){return e.visitMetadataFeatureDeclaration?e.visitMetadataFeatureDeclaration(this):e.visitChildren(this)}},yt=class extends l{constructor(e,t){super(e,t)}SEMI(){return this.getToken(n.SEMI,0)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}metadataBodyElement(e){return e===void 0?this.getRuleContexts(xi):this.getRuleContext(e,xi)}definitionMember(e){return e===void 0?this.getRuleContexts(St):this.getRuleContext(e,St)}metadataBodyUsageMember(e){return e===void 0?this.getRuleContexts(gn):this.getRuleContext(e,gn)}aliasMember(e){return e===void 0?this.getRuleContexts(ve):this.getRuleContext(e,ve)}importRule(e){return e===void 0?this.getRuleContexts(pe):this.getRuleContext(e,pe)}get ruleIndex(){return n.RULE_metadataBody}enterRule(e){e.enterMetadataBody&&e.enterMetadataBody(this)}exitRule(e){e.exitMetadataBody&&e.exitMetadataBody(this)}accept(e){return e.visitMetadataBody?e.visitMetadataBody(this):e.visitChildren(this)}},xi=class extends l{constructor(e,t){super(e,t)}nonFeatureMember(){return this.getRuleContext(0,$t)}metadataBodyFeatureMember(){return this.getRuleContext(0,ka)}aliasMember(){return this.getRuleContext(0,ve)}importRule(){return this.getRuleContext(0,pe)}get ruleIndex(){return n.RULE_metadataBodyElement}enterRule(e){e.enterMetadataBodyElement&&e.enterMetadataBodyElement(this)}exitRule(e){e.exitMetadataBodyElement&&e.exitMetadataBodyElement(this)}accept(e){return e.visitMetadataBodyElement?e.visitMetadataBodyElement(this):e.visitChildren(this)}},ka=class extends l{constructor(e,t){super(e,t)}metadataBodyFeature(){return this.getRuleContext(0,Da)}get ruleIndex(){return n.RULE_metadataBodyFeatureMember}enterRule(e){e.enterMetadataBodyFeatureMember&&e.enterMetadataBodyFeatureMember(this)}exitRule(e){e.exitMetadataBodyFeatureMember&&e.exitMetadataBodyFeatureMember(this)}accept(e){return e.visitMetadataBodyFeatureMember?e.visitMetadataBodyFeatureMember(this):e.visitChildren(this)}},Da=class extends l{constructor(e,t){super(e,t)}ownedRedefinition(){return this.getRuleContext(0,Ze)}metadataBody(){return this.getRuleContext(0,yt)}FEATURE(){return this.getToken(n.FEATURE,0)}featureSpecializationPart(){return this.getRuleContext(0,Z)}valuePart(){return this.getRuleContext(0,D)}COLON_GT_GT(){return this.getToken(n.COLON_GT_GT,0)}REDEFINES(){return this.getToken(n.REDEFINES,0)}get ruleIndex(){return n.RULE_metadataBodyFeature}enterRule(e){e.enterMetadataBodyFeature&&e.enterMetadataBodyFeature(this)}exitRule(e){e.exitMetadataBodyFeature&&e.exitMetadataBodyFeature(this)}accept(e){return e.visitMetadataBodyFeature?e.visitMetadataBodyFeature(this):e.visitChildren(this)}},bi=class extends l{constructor(e,t){super(e,t)}packageDeclaration(){return this.getRuleContext(0,fi)}packageBody(){return this.getRuleContext(0,mi)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}get ruleIndex(){return n.RULE_package}enterRule(e){e.enterPackage&&e.enterPackage(this)}exitRule(e){e.exitPackage&&e.exitPackage(this)}accept(e){return e.visitPackage?e.visitPackage(this):e.visitChildren(this)}},Ri=class extends l{constructor(e,t){super(e,t)}LIBRARY(){return this.getToken(n.LIBRARY,0)}packageDeclaration(){return this.getRuleContext(0,fi)}packageBody(){return this.getRuleContext(0,mi)}STANDARD(){return this.getToken(n.STANDARD,0)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}get ruleIndex(){return n.RULE_libraryPackage}enterRule(e){e.enterLibraryPackage&&e.enterLibraryPackage(this)}exitRule(e){e.exitLibraryPackage&&e.exitLibraryPackage(this)}accept(e){return e.visitLibraryPackage?e.visitLibraryPackage(this):e.visitChildren(this)}},fi=class extends l{constructor(e,t){super(e,t)}PACKAGE(){return this.getToken(n.PACKAGE,0)}identification(){return this.getRuleContext(0,O)}get ruleIndex(){return n.RULE_packageDeclaration}enterRule(e){e.enterPackageDeclaration&&e.enterPackageDeclaration(this)}exitRule(e){e.exitPackageDeclaration&&e.exitPackageDeclaration(this)}accept(e){return e.visitPackageDeclaration?e.visitPackageDeclaration(this):e.visitChildren(this)}},mi=class extends l{constructor(e,t){super(e,t)}SEMI(){return this.getToken(n.SEMI,0)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}packageBodyElement(e){return e===void 0?this.getRuleContexts(vt):this.getRuleContext(e,vt)}get ruleIndex(){return n.RULE_packageBody}enterRule(e){e.enterPackageBody&&e.enterPackageBody(this)}exitRule(e){e.exitPackageBody&&e.exitPackageBody(this)}accept(e){return e.visitPackageBody?e.visitPackageBody(this):e.visitChildren(this)}},ar=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}FILTER(){return this.getToken(n.FILTER,0)}ownedExpression(){return this.getRuleContext(0,P)}SEMI(){return this.getToken(n.SEMI,0)}get ruleIndex(){return n.RULE_elementFilterMember}enterRule(e){e.enterElementFilterMember&&e.enterElementFilterMember(this)}exitRule(e){e.exitElementFilterMember&&e.exitElementFilterMember(this)}accept(e){return e.visitElementFilterMember?e.visitElementFilterMember(this):e.visitChildren(this)}},Fa=class extends l{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(m):this.getRuleContext(e,m)}TO(){return this.getToken(n.TO,0)}FROM(){return this.getToken(n.FROM,0)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}identification(){return this.getRuleContext(0,O)}get ruleIndex(){return n.RULE_dependencyDeclaration}enterRule(e){e.enterDependencyDeclaration&&e.enterDependencyDeclaration(this)}exitRule(e){e.exitDependencyDeclaration&&e.exitDependencyDeclaration(this)}accept(e){return e.visitDependencyDeclaration?e.visitDependencyDeclaration(this):e.visitChildren(this)}},gi=class extends l{constructor(e,t){super(e,t)}annotatingElement(){return this.getRuleContext(0,xt)}get ruleIndex(){return n.RULE_annotatingMember}enterRule(e){e.enterAnnotatingMember&&e.enterAnnotatingMember(this)}exitRule(e){e.exitAnnotatingMember&&e.exitAnnotatingMember(this)}accept(e){return e.visitAnnotatingMember?e.visitAnnotatingMember(this):e.visitChildren(this)}},vt=class extends l{constructor(e,t){super(e,t)}packageMember(){return this.getRuleContext(0,Ha)}elementFilterMember(){return this.getRuleContext(0,ar)}aliasMember(){return this.getRuleContext(0,ve)}importRule(){return this.getRuleContext(0,pe)}get ruleIndex(){return n.RULE_packageBodyElement}enterRule(e){e.enterPackageBodyElement&&e.enterPackageBodyElement(this)}exitRule(e){e.exitPackageBodyElement&&e.exitPackageBodyElement(this)}accept(e){return e.visitPackageBodyElement?e.visitPackageBodyElement(this):e.visitChildren(this)}},Ha=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}definitionElement(){return this.getRuleContext(0,lr)}usageElement(){return this.getRuleContext(0,Ci)}get ruleIndex(){return n.RULE_packageMember}enterRule(e){e.enterPackageMember&&e.enterPackageMember(this)}exitRule(e){e.exitPackageMember&&e.exitPackageMember(this)}accept(e){return e.visitPackageMember?e.visitPackageMember(this):e.visitChildren(this)}},lr=class extends l{constructor(e,t){super(e,t)}package(){return this.getRuleContext(0,bi)}libraryPackage(){return this.getRuleContext(0,Ri)}annotatingElement(){return this.getRuleContext(0,xt)}dependency(){return this.getRuleContext(0,Vr)}attributeDefinition(){return this.getRuleContext(0,Qa)}enumerationDefinition(){return this.getRuleContext(0,za)}occurrenceDefinition(){return this.getRuleContext(0,Xa)}individualDefinition(){return this.getRuleContext(0,Ja)}itemDefinition(){return this.getRuleContext(0,el)}partDefinition(){return this.getRuleContext(0,tl)}connectionDefinition(){return this.getRuleContext(0,al)}flowDefinition(){return this.getRuleContext(0,yl)}interfaceDefinition(){return this.getRuleContext(0,ul)}portDefinition(){return this.getRuleContext(0,rl)}actionDefinition(){return this.getRuleContext(0,Tl)}calculationDefinition(){return this.getRuleContext(0,Io)}stateDefinition(){return this.getRuleContext(0,uo)}constraintDefinition(){return this.getRuleContext(0,ko)}requirementDefinition(){return this.getRuleContext(0,Ho)}concernDefinition(){return this.getRuleContext(0,eu)}caseDefinition(){return this.getRuleContext(0,ru)}analysisCaseDefinition(){return this.getRuleContext(0,au)}verificationCaseDefinition(){return this.getRuleContext(0,ou)}useCaseDefinition(){return this.getRuleContext(0,du)}viewDefinition(){return this.getRuleContext(0,bu)}viewpointDefinition(){return this.getRuleContext(0,yu)}renderingDefinition(){return this.getRuleContext(0,Lu)}metadataDefinition(){return this.getRuleContext(0,Su)}allocationDefinition(){return this.getRuleContext(0,Cl)}extendedDefinition(){return this.getRuleContext(0,Au)}get ruleIndex(){return n.RULE_definitionElement}enterRule(e){e.enterDefinitionElement&&e.enterDefinitionElement(this)}exitRule(e){e.exitDefinitionElement&&e.exitDefinitionElement(this)}accept(e){return e.visitDefinitionElement?e.visitDefinitionElement(this):e.visitChildren(this)}},Ci=class extends l{constructor(e,t){super(e,t)}nonOccurrenceUsageElement(){return this.getRuleContext(0,hr)}occurrenceUsageElement(){return this.getRuleContext(0,dr)}get ruleIndex(){return n.RULE_usageElement}enterRule(e){e.enterUsageElement&&e.enterUsageElement(this)}exitRule(e){e.exitUsageElement&&e.exitUsageElement(this)}accept(e){return e.visitUsageElement?e.visitUsageElement(this):e.visitChildren(this)}},Lt=class extends l{constructor(e,t){super(e,t)}ABSTRACT(){return this.getToken(n.ABSTRACT,0)}VARIATION(){return this.getToken(n.VARIATION,0)}get ruleIndex(){return n.RULE_basicDefinitionPrefix}enterRule(e){e.enterBasicDefinitionPrefix&&e.enterBasicDefinitionPrefix(this)}exitRule(e){e.exitBasicDefinitionPrefix&&e.exitBasicDefinitionPrefix(this)}accept(e){return e.visitBasicDefinitionPrefix?e.visitBasicDefinitionPrefix(this):e.visitChildren(this)}},re=class extends l{constructor(e,t){super(e,t)}prefixMetadataMember(){return this.getRuleContext(0,Y)}get ruleIndex(){return n.RULE_definitionExtensionKeyword}enterRule(e){e.enterDefinitionExtensionKeyword&&e.enterDefinitionExtensionKeyword(this)}exitRule(e){e.exitDefinitionExtensionKeyword&&e.exitDefinitionExtensionKeyword(this)}accept(e){return e.visitDefinitionExtensionKeyword?e.visitDefinitionExtensionKeyword(this):e.visitChildren(this)}},Ei=class extends l{constructor(e,t){super(e,t)}basicDefinitionPrefix(){return this.getRuleContext(0,Lt)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts(re):this.getRuleContext(e,re)}get ruleIndex(){return n.RULE_definitionPrefix}enterRule(e){e.enterDefinitionPrefix&&e.enterDefinitionPrefix(this)}exitRule(e){e.exitDefinitionPrefix&&e.exitDefinitionPrefix(this)}accept(e){return e.visitDefinitionPrefix?e.visitDefinitionPrefix(this):e.visitChildren(this)}},ie=class extends l{constructor(e,t){super(e,t)}definitionDeclaration(){return this.getRuleContext(0,W)}definitionBody(){return this.getRuleContext(0,tt)}get ruleIndex(){return n.RULE_definition}enterRule(e){e.enterDefinition&&e.enterDefinition(this)}exitRule(e){e.exitDefinition&&e.exitDefinition(this)}accept(e){return e.visitDefinition?e.visitDefinition(this):e.visitChildren(this)}},W=class extends l{constructor(e,t){super(e,t)}identification(){return this.getRuleContext(0,O)}subclassificationPart(){return this.getRuleContext(0,ja)}get ruleIndex(){return n.RULE_definitionDeclaration}enterRule(e){e.enterDefinitionDeclaration&&e.enterDefinitionDeclaration(this)}exitRule(e){e.exitDefinitionDeclaration&&e.exitDefinitionDeclaration(this)}accept(e){return e.visitDefinitionDeclaration?e.visitDefinitionDeclaration(this):e.visitChildren(this)}},tt=class extends l{constructor(e,t){super(e,t)}SEMI(){return this.getToken(n.SEMI,0)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}definitionBodyItem(e){return e===void 0?this.getRuleContexts(rt):this.getRuleContext(e,rt)}get ruleIndex(){return n.RULE_definitionBody}enterRule(e){e.enterDefinitionBody&&e.enterDefinitionBody(this)}exitRule(e){e.exitDefinitionBody&&e.exitDefinitionBody(this)}accept(e){return e.visitDefinitionBody?e.visitDefinitionBody(this):e.visitChildren(this)}},rt=class extends l{constructor(e,t){super(e,t)}importRule(){return this.getRuleContext(0,pe)}memberPrefix(){return this.getRuleContext(0,T)}definitionBodyItemContent(){return this.getRuleContext(0,Ba)}occurrenceUsageElement(){return this.getRuleContext(0,dr)}sourceSuccessionMember(){return this.getRuleContext(0,nt)}get ruleIndex(){return n.RULE_definitionBodyItem}enterRule(e){e.enterDefinitionBodyItem&&e.enterDefinitionBodyItem(this)}exitRule(e){e.exitDefinitionBodyItem&&e.exitDefinitionBodyItem(this)}accept(e){return e.visitDefinitionBodyItem?e.visitDefinitionBodyItem(this):e.visitChildren(this)}},Ba=class extends l{constructor(e,t){super(e,t)}ALIAS(){return this.getToken(n.ALIAS,0)}FOR(){return this.getToken(n.FOR,0)}qualifiedName(){return this.getRuleContext(0,m)}relationshipBody(){return this.getRuleContext(0,Q)}LT(){return this.getToken(n.LT,0)}name(e){return e===void 0?this.getRuleContexts(ee):this.getRuleContext(e,ee)}GT(){return this.getToken(n.GT,0)}VARIANT(){return this.getToken(n.VARIANT,0)}variantUsageElement(){return this.getRuleContext(0,Si)}definitionElement(){return this.getRuleContext(0,lr)}nonOccurrenceUsageElement(){return this.getRuleContext(0,hr)}get ruleIndex(){return n.RULE_definitionBodyItemContent}enterRule(e){e.enterDefinitionBodyItemContent&&e.enterDefinitionBodyItemContent(this)}exitRule(e){e.exitDefinitionBodyItemContent&&e.exitDefinitionBodyItemContent(this)}accept(e){return e.visitDefinitionBodyItemContent?e.visitDefinitionBodyItemContent(this):e.visitChildren(this)}},St=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}definitionElement(){return this.getRuleContext(0,lr)}get ruleIndex(){return n.RULE_definitionMember}enterRule(e){e.enterDefinitionMember&&e.enterDefinitionMember(this)}exitRule(e){e.exitDefinitionMember&&e.exitDefinitionMember(this)}accept(e){return e.visitDefinitionMember?e.visitDefinitionMember(this):e.visitChildren(this)}},yi=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}VARIANT(){return this.getToken(n.VARIANT,0)}variantUsageElement(){return this.getRuleContext(0,Si)}get ruleIndex(){return n.RULE_variantUsageMember}enterRule(e){e.enterVariantUsageMember&&e.enterVariantUsageMember(this)}exitRule(e){e.exitVariantUsageMember&&e.exitVariantUsageMember(this)}accept(e){return e.visitVariantUsageMember?e.visitVariantUsageMember(this):e.visitChildren(this)}},Va=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}nonOccurrenceUsageElement(){return this.getRuleContext(0,hr)}get ruleIndex(){return n.RULE_nonOccurrenceUsageMember}enterRule(e){e.enterNonOccurrenceUsageMember&&e.enterNonOccurrenceUsageMember(this)}exitRule(e){e.exitNonOccurrenceUsageMember&&e.exitNonOccurrenceUsageMember(this)}accept(e){return e.visitNonOccurrenceUsageMember?e.visitNonOccurrenceUsageMember(this):e.visitChildren(this)}},S1=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}occurrenceUsageElement(){return this.getRuleContext(0,dr)}get ruleIndex(){return n.RULE_occurrenceUsageMember}enterRule(e){e.enterOccurrenceUsageMember&&e.enterOccurrenceUsageMember(this)}exitRule(e){e.exitOccurrenceUsageMember&&e.exitOccurrenceUsageMember(this)}accept(e){return e.visitOccurrenceUsageMember?e.visitOccurrenceUsageMember(this):e.visitChildren(this)}},_a=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}structureUsageElement(){return this.getRuleContext(0,pr)}get ruleIndex(){return n.RULE_structureUsageMember}enterRule(e){e.enterStructureUsageMember&&e.enterStructureUsageMember(this)}exitRule(e){e.exitStructureUsageMember&&e.exitStructureUsageMember(this)}accept(e){return e.visitStructureUsageMember?e.visitStructureUsageMember(this):e.visitChildren(this)}},vi=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}behaviorUsageElement(){return this.getRuleContext(0,At)}get ruleIndex(){return n.RULE_behaviorUsageMember}enterRule(e){e.enterBehaviorUsageMember&&e.enterBehaviorUsageMember(this)}exitRule(e){e.exitBehaviorUsageMember&&e.exitBehaviorUsageMember(this)}accept(e){return e.visitBehaviorUsageMember?e.visitBehaviorUsageMember(this):e.visitChildren(this)}},Pt=class extends l{constructor(e,t){super(e,t)}featureDirection(){return this.getRuleContext(0,ei)}DERIVED(){return this.getToken(n.DERIVED,0)}CONSTANT(){return this.getToken(n.CONSTANT,0)}ABSTRACT(){return this.getToken(n.ABSTRACT,0)}VARIATION(){return this.getToken(n.VARIATION,0)}get ruleIndex(){return n.RULE_refPrefix}enterRule(e){e.enterRefPrefix&&e.enterRefPrefix(this)}exitRule(e){e.exitRefPrefix&&e.exitRefPrefix(this)}accept(e){return e.visitRefPrefix?e.visitRefPrefix(this):e.visitChildren(this)}},it=class extends l{constructor(e,t){super(e,t)}refPrefix(){return this.getRuleContext(0,Pt)}REF(){return this.getToken(n.REF,0)}get ruleIndex(){return n.RULE_basicUsagePrefix}enterRule(e){e.enterBasicUsagePrefix&&e.enterBasicUsagePrefix(this)}exitRule(e){e.exitBasicUsagePrefix&&e.exitBasicUsagePrefix(this)}accept(e){return e.visitBasicUsagePrefix?e.visitBasicUsagePrefix(this):e.visitChildren(this)}},or=class extends l{constructor(e,t){super(e,t)}END(){return this.getToken(n.END,0)}ownedCrossFeatureMember(){return this.getRuleContext(0,Zr)}get ruleIndex(){return n.RULE_endUsagePrefix}enterRule(e){e.enterEndUsagePrefix&&e.enterEndUsagePrefix(this)}exitRule(e){e.exitEndUsagePrefix&&e.exitEndUsagePrefix(this)}accept(e){return e.visitEndUsagePrefix?e.visitEndUsagePrefix(this):e.visitChildren(this)}},M=class extends l{constructor(e,t){super(e,t)}prefixMetadataMember(){return this.getRuleContext(0,Y)}get ruleIndex(){return n.RULE_usageExtensionKeyword}enterRule(e){e.enterUsageExtensionKeyword&&e.enterUsageExtensionKeyword(this)}exitRule(e){e.exitUsageExtensionKeyword&&e.exitUsageExtensionKeyword(this)}accept(e){return e.visitUsageExtensionKeyword?e.visitUsageExtensionKeyword(this):e.visitChildren(this)}},Li=class extends l{constructor(e,t){super(e,t)}endUsagePrefix(){return this.getRuleContext(0,or)}basicUsagePrefix(){return this.getRuleContext(0,it)}get ruleIndex(){return n.RULE_unextendedUsagePrefix}enterRule(e){e.enterUnextendedUsagePrefix&&e.enterUnextendedUsagePrefix(this)}exitRule(e){e.exitUnextendedUsagePrefix&&e.exitUnextendedUsagePrefix(this)}accept(e){return e.visitUnextendedUsagePrefix?e.visitUnextendedUsagePrefix(this):e.visitChildren(this)}},Tt=class extends l{constructor(e,t){super(e,t)}unextendedUsagePrefix(){return this.getRuleContext(0,Li)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(M):this.getRuleContext(e,M)}get ruleIndex(){return n.RULE_usagePrefix}enterRule(e){e.enterUsagePrefix&&e.enterUsagePrefix(this)}exitRule(e){e.exitUsagePrefix&&e.exitUsagePrefix(this)}accept(e){return e.visitUsagePrefix?e.visitUsagePrefix(this):e.visitChildren(this)}},_=class extends l{constructor(e,t){super(e,t)}usageCompletion(){return this.getRuleContext(0,ur)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_usage}enterRule(e){e.enterUsage&&e.enterUsage(this)}exitRule(e){e.exitUsage&&e.exitUsage(this)}accept(e){return e.visitUsage?e.visitUsage(this):e.visitChildren(this)}},U=class extends l{constructor(e,t){super(e,t)}identification(){return this.getRuleContext(0,O)}featureSpecializationPart(){return this.getRuleContext(0,Z)}get ruleIndex(){return n.RULE_usageDeclaration}enterRule(e){e.enterUsageDeclaration&&e.enterUsageDeclaration(this)}exitRule(e){e.exitUsageDeclaration&&e.exitUsageDeclaration(this)}accept(e){return e.visitUsageDeclaration?e.visitUsageDeclaration(this):e.visitChildren(this)}},ur=class extends l{constructor(e,t){super(e,t)}usageBody(){return this.getRuleContext(0,be)}valuePart(){return this.getRuleContext(0,D)}get ruleIndex(){return n.RULE_usageCompletion}enterRule(e){e.enterUsageCompletion&&e.enterUsageCompletion(this)}exitRule(e){e.exitUsageCompletion&&e.exitUsageCompletion(this)}accept(e){return e.visitUsageCompletion?e.visitUsageCompletion(this):e.visitChildren(this)}},be=class extends l{constructor(e,t){super(e,t)}definitionBody(){return this.getRuleContext(0,tt)}get ruleIndex(){return n.RULE_usageBody}enterRule(e){e.enterUsageBody&&e.enterUsageBody(this)}exitRule(e){e.exitUsageBody&&e.exitUsageBody(this)}accept(e){return e.visitUsageBody?e.visitUsageBody(this):e.visitChildren(this)}},qa=class extends l{constructor(e,t){super(e,t)}refPrefix(){return this.getRuleContext(0,Pt)}usage(){return this.getRuleContext(0,_)}get ruleIndex(){return n.RULE_defaultReferenceUsage}enterRule(e){e.enterDefaultReferenceUsage&&e.enterDefaultReferenceUsage(this)}exitRule(e){e.exitDefaultReferenceUsage&&e.exitDefaultReferenceUsage(this)}accept(e){return e.visitDefaultReferenceUsage?e.visitDefaultReferenceUsage(this):e.visitChildren(this)}},cr=class extends l{constructor(e,t){super(e,t)}REF(){return this.getToken(n.REF,0)}usage(){return this.getRuleContext(0,_)}endUsagePrefix(){return this.getRuleContext(0,or)}refPrefix(){return this.getRuleContext(0,Pt)}get ruleIndex(){return n.RULE_referenceUsage}enterRule(e){e.enterReferenceUsage&&e.enterReferenceUsage(this)}exitRule(e){e.exitReferenceUsage&&e.exitReferenceUsage(this)}accept(e){return e.visitReferenceUsage?e.visitReferenceUsage(this):e.visitChildren(this)}},Ga=class extends l{constructor(e,t){super(e,t)}endUsagePrefix(){return this.getRuleContext(0,or)}featureDeclaration(){return this.getRuleContext(0,$)}usageCompletion(){return this.getRuleContext(0,ur)}get ruleIndex(){return n.RULE_endFeatureUsage}enterRule(e){e.enterEndFeatureUsage&&e.enterEndFeatureUsage(this)}exitRule(e){e.exitEndFeatureUsage&&e.exitEndFeatureUsage(this)}accept(e){return e.visitEndFeatureUsage?e.visitEndFeatureUsage(this):e.visitChildren(this)}},Ka=class extends l{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,z)}usageBody(){return this.getRuleContext(0,be)}featureSpecialization(e){return e===void 0?this.getRuleContexts(Le):this.getRuleContext(e,Le)}get ruleIndex(){return n.RULE_variantReference}enterRule(e){e.enterVariantReference&&e.enterVariantReference(this)}exitRule(e){e.exitVariantReference&&e.exitVariantReference(this)}accept(e){return e.visitVariantReference?e.visitVariantReference(this):e.visitChildren(this)}},hr=class extends l{constructor(e,t){super(e,t)}referenceUsage(){return this.getRuleContext(0,cr)}endFeatureUsage(){return this.getRuleContext(0,Ga)}attributeUsage(){return this.getRuleContext(0,xr)}enumerationUsage(){return this.getRuleContext(0,Ti)}bindingConnectorAsUsage(){return this.getRuleContext(0,Rr)}successionAsUsage(){return this.getRuleContext(0,fr)}extendedUsage(){return this.getRuleContext(0,Mu)}defaultReferenceUsage(){return this.getRuleContext(0,qa)}get ruleIndex(){return n.RULE_nonOccurrenceUsageElement}enterRule(e){e.enterNonOccurrenceUsageElement&&e.enterNonOccurrenceUsageElement(this)}exitRule(e){e.exitNonOccurrenceUsageElement&&e.exitNonOccurrenceUsageElement(this)}accept(e){return e.visitNonOccurrenceUsageElement?e.visitNonOccurrenceUsageElement(this):e.visitChildren(this)}},dr=class extends l{constructor(e,t){super(e,t)}structureUsageElement(){return this.getRuleContext(0,pr)}behaviorUsageElement(){return this.getRuleContext(0,At)}get ruleIndex(){return n.RULE_occurrenceUsageElement}enterRule(e){e.enterOccurrenceUsageElement&&e.enterOccurrenceUsageElement(this)}exitRule(e){e.exitOccurrenceUsageElement&&e.exitOccurrenceUsageElement(this)}accept(e){return e.visitOccurrenceUsageElement?e.visitOccurrenceUsageElement(this):e.visitChildren(this)}},pr=class extends l{constructor(e,t){super(e,t)}occurrenceUsage(){return this.getRuleContext(0,Mi)}individualUsage(){return this.getRuleContext(0,Ni)}portionUsage(){return this.getRuleContext(0,Ui)}eventOccurrenceUsage(){return this.getRuleContext(0,Ii)}itemUsage(){return this.getRuleContext(0,wi)}partUsage(){return this.getRuleContext(0,ki)}viewUsage(){return this.getRuleContext(0,bn)}renderingUsage(){return this.getRuleContext(0,fn)}portUsage(){return this.getRuleContext(0,Di)}connectionUsage(){return this.getRuleContext(0,Fi)}interfaceUsage(){return this.getRuleContext(0,_i)}allocationUsage(){return this.getRuleContext(0,qi)}message(){return this.getRuleContext(0,Gi)}flowUsage(){return this.getRuleContext(0,ji)}successionFlowUsage(){return this.getRuleContext(0,Qi)}get ruleIndex(){return n.RULE_structureUsageElement}enterRule(e){e.enterStructureUsageElement&&e.enterStructureUsageElement(this)}exitRule(e){e.exitStructureUsageElement&&e.exitStructureUsageElement(this)}accept(e){return e.visitStructureUsageElement?e.visitStructureUsageElement(this):e.visitChildren(this)}},At=class extends l{constructor(e,t){super(e,t)}actionUsage(){return this.getRuleContext(0,Il)}calculationUsage(){return this.getRuleContext(0,Oo)}stateUsage(){return this.getRuleContext(0,Co)}constraintUsage(){return this.getRuleContext(0,Do)}requirementUsage(){return this.getRuleContext(0,Yo)}concernUsage(){return this.getRuleContext(0,tu)}caseUsage(){return this.getRuleContext(0,iu)}analysisCaseUsage(){return this.getRuleContext(0,lu)}verificationCaseUsage(){return this.getRuleContext(0,uu)}useCaseUsage(){return this.getRuleContext(0,pu)}viewpointUsage(){return this.getRuleContext(0,vu)}performActionUsage(){return this.getRuleContext(0,Ol)}exhibitStateUsage(){return this.getRuleContext(0,Eo)}includeUseCaseUsage(){return this.getRuleContext(0,xu)}assertConstraintUsage(){return this.getRuleContext(0,Fo)}satisfyRequirementUsage(){return this.getRuleContext(0,Wo)}get ruleIndex(){return n.RULE_behaviorUsageElement}enterRule(e){e.enterBehaviorUsageElement&&e.enterBehaviorUsageElement(this)}exitRule(e){e.exitBehaviorUsageElement&&e.exitBehaviorUsageElement(this)}accept(e){return e.visitBehaviorUsageElement?e.visitBehaviorUsageElement(this):e.visitChildren(this)}},Si=class extends l{constructor(e,t){super(e,t)}variantReference(){return this.getRuleContext(0,Ka)}referenceUsage(){return this.getRuleContext(0,cr)}attributeUsage(){return this.getRuleContext(0,xr)}bindingConnectorAsUsage(){return this.getRuleContext(0,Rr)}successionAsUsage(){return this.getRuleContext(0,fr)}occurrenceUsage(){return this.getRuleContext(0,Mi)}individualUsage(){return this.getRuleContext(0,Ni)}portionUsage(){return this.getRuleContext(0,Ui)}eventOccurrenceUsage(){return this.getRuleContext(0,Ii)}itemUsage(){return this.getRuleContext(0,wi)}partUsage(){return this.getRuleContext(0,ki)}viewUsage(){return this.getRuleContext(0,bn)}renderingUsage(){return this.getRuleContext(0,fn)}portUsage(){return this.getRuleContext(0,Di)}connectionUsage(){return this.getRuleContext(0,Fi)}interfaceUsage(){return this.getRuleContext(0,_i)}allocationUsage(){return this.getRuleContext(0,qi)}message(){return this.getRuleContext(0,Gi)}flowUsage(){return this.getRuleContext(0,ji)}successionFlowUsage(){return this.getRuleContext(0,Qi)}behaviorUsageElement(){return this.getRuleContext(0,At)}get ruleIndex(){return n.RULE_variantUsageElement}enterRule(e){e.enterVariantUsageElement&&e.enterVariantUsageElement(this)}exitRule(e){e.exitVariantUsageElement&&e.exitVariantUsageElement(this)}accept(e){return e.visitVariantUsageElement?e.visitVariantUsageElement(this):e.visitChildren(this)}},ja=class extends l{constructor(e,t){super(e,t)}ownedSubclassification(e){return e===void 0?this.getRuleContexts(ft):this.getRuleContext(e,ft)}COLON_GT(){return this.getToken(n.COLON_GT,0)}SPECIALIZES(){return this.getToken(n.SPECIALIZES,0)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}get ruleIndex(){return n.RULE_subclassificationPart}enterRule(e){e.enterSubclassificationPart&&e.enterSubclassificationPart(this)}exitRule(e){e.exitSubclassificationPart&&e.exitSubclassificationPart(this)}accept(e){return e.visitSubclassificationPart?e.visitSubclassificationPart(this):e.visitChildren(this)}},Qa=class extends l{constructor(e,t){super(e,t)}definitionPrefix(){return this.getRuleContext(0,Ei)}ATTRIBUTE(){return this.getToken(n.ATTRIBUTE,0)}DEF(){return this.getToken(n.DEF,0)}definition(){return this.getRuleContext(0,ie)}get ruleIndex(){return n.RULE_attributeDefinition}enterRule(e){e.enterAttributeDefinition&&e.enterAttributeDefinition(this)}exitRule(e){e.exitAttributeDefinition&&e.exitAttributeDefinition(this)}accept(e){return e.visitAttributeDefinition?e.visitAttributeDefinition(this):e.visitChildren(this)}},xr=class extends l{constructor(e,t){super(e,t)}usagePrefix(){return this.getRuleContext(0,Tt)}ATTRIBUTE(){return this.getToken(n.ATTRIBUTE,0)}usage(){return this.getRuleContext(0,_)}get ruleIndex(){return n.RULE_attributeUsage}enterRule(e){e.enterAttributeUsage&&e.enterAttributeUsage(this)}exitRule(e){e.exitAttributeUsage&&e.exitAttributeUsage(this)}accept(e){return e.visitAttributeUsage?e.visitAttributeUsage(this):e.visitChildren(this)}},za=class extends l{constructor(e,t){super(e,t)}ENUM(){return this.getToken(n.ENUM,0)}DEF(){return this.getToken(n.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,W)}enumerationBody(){return this.getRuleContext(0,Ya)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts(re):this.getRuleContext(e,re)}get ruleIndex(){return n.RULE_enumerationDefinition}enterRule(e){e.enterEnumerationDefinition&&e.enterEnumerationDefinition(this)}exitRule(e){e.exitEnumerationDefinition&&e.exitEnumerationDefinition(this)}accept(e){return e.visitEnumerationDefinition?e.visitEnumerationDefinition(this):e.visitChildren(this)}},Ya=class extends l{constructor(e,t){super(e,t)}SEMI(){return this.getToken(n.SEMI,0)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}annotatingMember(e){return e===void 0?this.getRuleContexts(gi):this.getRuleContext(e,gi)}enumerationUsageMember(e){return e===void 0?this.getRuleContexts(Pi):this.getRuleContext(e,Pi)}get ruleIndex(){return n.RULE_enumerationBody}enterRule(e){e.enterEnumerationBody&&e.enterEnumerationBody(this)}exitRule(e){e.exitEnumerationBody&&e.exitEnumerationBody(this)}accept(e){return e.visitEnumerationBody?e.visitEnumerationBody(this):e.visitChildren(this)}},Pi=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}enumeratedValue(){return this.getRuleContext(0,Wa)}get ruleIndex(){return n.RULE_enumerationUsageMember}enterRule(e){e.enterEnumerationUsageMember&&e.enterEnumerationUsageMember(this)}exitRule(e){e.exitEnumerationUsageMember&&e.exitEnumerationUsageMember(this)}accept(e){return e.visitEnumerationUsageMember?e.visitEnumerationUsageMember(this):e.visitChildren(this)}},Wa=class extends l{constructor(e,t){super(e,t)}usage(){return this.getRuleContext(0,_)}ENUM(){return this.getToken(n.ENUM,0)}get ruleIndex(){return n.RULE_enumeratedValue}enterRule(e){e.enterEnumeratedValue&&e.enterEnumeratedValue(this)}exitRule(e){e.exitEnumeratedValue&&e.exitEnumeratedValue(this)}accept(e){return e.visitEnumeratedValue?e.visitEnumeratedValue(this):e.visitChildren(this)}},Ti=class extends l{constructor(e,t){super(e,t)}usagePrefix(){return this.getRuleContext(0,Tt)}ENUM(){return this.getToken(n.ENUM,0)}usage(){return this.getRuleContext(0,_)}get ruleIndex(){return n.RULE_enumerationUsage}enterRule(e){e.enterEnumerationUsage&&e.enterEnumerationUsage(this)}exitRule(e){e.exitEnumerationUsage&&e.exitEnumerationUsage(this)}accept(e){return e.visitEnumerationUsage?e.visitEnumerationUsage(this):e.visitChildren(this)}},F=class extends l{constructor(e,t){super(e,t)}basicDefinitionPrefix(){return this.getRuleContext(0,Lt)}INDIVIDUAL(){return this.getToken(n.INDIVIDUAL,0)}emptyMultiplicityMember(){return this.getRuleContext(0,Ai)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts(re):this.getRuleContext(e,re)}get ruleIndex(){return n.RULE_occurrenceDefinitionPrefix}enterRule(e){e.enterOccurrenceDefinitionPrefix&&e.enterOccurrenceDefinitionPrefix(this)}exitRule(e){e.exitOccurrenceDefinitionPrefix&&e.exitOccurrenceDefinitionPrefix(this)}accept(e){return e.visitOccurrenceDefinitionPrefix?e.visitOccurrenceDefinitionPrefix(this):e.visitChildren(this)}},Xa=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}OCCURRENCE(){return this.getToken(n.OCCURRENCE,0)}DEF(){return this.getToken(n.DEF,0)}definition(){return this.getRuleContext(0,ie)}get ruleIndex(){return n.RULE_occurrenceDefinition}enterRule(e){e.enterOccurrenceDefinition&&e.enterOccurrenceDefinition(this)}exitRule(e){e.exitOccurrenceDefinition&&e.exitOccurrenceDefinition(this)}accept(e){return e.visitOccurrenceDefinition?e.visitOccurrenceDefinition(this):e.visitChildren(this)}},Ja=class extends l{constructor(e,t){super(e,t)}INDIVIDUAL(){return this.getToken(n.INDIVIDUAL,0)}DEF(){return this.getToken(n.DEF,0)}definition(){return this.getRuleContext(0,ie)}emptyMultiplicityMember(){return this.getRuleContext(0,Ai)}basicDefinitionPrefix(){return this.getRuleContext(0,Lt)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts(re):this.getRuleContext(e,re)}get ruleIndex(){return n.RULE_individualDefinition}enterRule(e){e.enterIndividualDefinition&&e.enterIndividualDefinition(this)}exitRule(e){e.exitIndividualDefinition&&e.exitIndividualDefinition(this)}accept(e){return e.visitIndividualDefinition?e.visitIndividualDefinition(this):e.visitChildren(this)}},Ai=class extends l{constructor(e,t){super(e,t)}emptyMultiplicity(){return this.getRuleContext(0,Ou)}get ruleIndex(){return n.RULE_emptyMultiplicityMember}enterRule(e){e.enterEmptyMultiplicityMember&&e.enterEmptyMultiplicityMember(this)}exitRule(e){e.exitEmptyMultiplicityMember&&e.exitEmptyMultiplicityMember(this)}accept(e){return e.visitEmptyMultiplicityMember?e.visitEmptyMultiplicityMember(this):e.visitChildren(this)}},A=class extends l{constructor(e,t){super(e,t)}basicUsagePrefix(){return this.getRuleContext(0,it)}INDIVIDUAL(){return this.getToken(n.INDIVIDUAL,0)}portionKind(){return this.getRuleContext(0,br)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(M):this.getRuleContext(e,M)}get ruleIndex(){return n.RULE_occurrenceUsagePrefix}enterRule(e){e.enterOccurrenceUsagePrefix&&e.enterOccurrenceUsagePrefix(this)}exitRule(e){e.exitOccurrenceUsagePrefix&&e.exitOccurrenceUsagePrefix(this)}accept(e){return e.visitOccurrenceUsagePrefix?e.visitOccurrenceUsagePrefix(this):e.visitChildren(this)}},Mi=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}OCCURRENCE(){return this.getToken(n.OCCURRENCE,0)}usage(){return this.getRuleContext(0,_)}get ruleIndex(){return n.RULE_occurrenceUsage}enterRule(e){e.enterOccurrenceUsage&&e.enterOccurrenceUsage(this)}exitRule(e){e.exitOccurrenceUsage&&e.exitOccurrenceUsage(this)}accept(e){return e.visitOccurrenceUsage?e.visitOccurrenceUsage(this):e.visitChildren(this)}},Ni=class extends l{constructor(e,t){super(e,t)}basicUsagePrefix(){return this.getRuleContext(0,it)}INDIVIDUAL(){return this.getToken(n.INDIVIDUAL,0)}usage(){return this.getRuleContext(0,_)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(M):this.getRuleContext(e,M)}get ruleIndex(){return n.RULE_individualUsage}enterRule(e){e.enterIndividualUsage&&e.enterIndividualUsage(this)}exitRule(e){e.exitIndividualUsage&&e.exitIndividualUsage(this)}accept(e){return e.visitIndividualUsage?e.visitIndividualUsage(this):e.visitChildren(this)}},Ui=class extends l{constructor(e,t){super(e,t)}basicUsagePrefix(){return this.getRuleContext(0,it)}portionKind(){return this.getRuleContext(0,br)}usage(){return this.getRuleContext(0,_)}INDIVIDUAL(){return this.getToken(n.INDIVIDUAL,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(M):this.getRuleContext(e,M)}get ruleIndex(){return n.RULE_portionUsage}enterRule(e){e.enterPortionUsage&&e.enterPortionUsage(this)}exitRule(e){e.exitPortionUsage&&e.exitPortionUsage(this)}accept(e){return e.visitPortionUsage?e.visitPortionUsage(this):e.visitChildren(this)}},br=class extends l{constructor(e,t){super(e,t)}SNAPSHOT(){return this.getToken(n.SNAPSHOT,0)}TIMESLICE(){return this.getToken(n.TIMESLICE,0)}get ruleIndex(){return n.RULE_portionKind}enterRule(e){e.enterPortionKind&&e.enterPortionKind(this)}exitRule(e){e.exitPortionKind&&e.exitPortionKind(this)}accept(e){return e.visitPortionKind?e.visitPortionKind(this):e.visitChildren(this)}},Ii=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}EVENT(){return this.getToken(n.EVENT,0)}usageCompletion(){return this.getRuleContext(0,ur)}ownedReferenceSubsetting(){return this.getRuleContext(0,z)}OCCURRENCE(){return this.getToken(n.OCCURRENCE,0)}featureSpecializationPart(){return this.getRuleContext(0,Z)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_eventOccurrenceUsage}enterRule(e){e.enterEventOccurrenceUsage&&e.enterEventOccurrenceUsage(this)}exitRule(e){e.exitEventOccurrenceUsage&&e.exitEventOccurrenceUsage(this)}accept(e){return e.visitEventOccurrenceUsage?e.visitEventOccurrenceUsage(this):e.visitChildren(this)}},nt=class extends l{constructor(e,t){super(e,t)}THEN(){return this.getToken(n.THEN,0)}sourceSuccession(){return this.getRuleContext(0,$a)}get ruleIndex(){return n.RULE_sourceSuccessionMember}enterRule(e){e.enterSourceSuccessionMember&&e.enterSourceSuccessionMember(this)}exitRule(e){e.exitSourceSuccessionMember&&e.exitSourceSuccessionMember(this)}accept(e){return e.visitSourceSuccessionMember?e.visitSourceSuccessionMember(this):e.visitChildren(this)}},$a=class extends l{constructor(e,t){super(e,t)}sourceEndMember(){return this.getRuleContext(0,Oi)}get ruleIndex(){return n.RULE_sourceSuccession}enterRule(e){e.enterSourceSuccession&&e.enterSourceSuccession(this)}exitRule(e){e.exitSourceSuccession&&e.exitSourceSuccession(this)}accept(e){return e.visitSourceSuccession?e.visitSourceSuccession(this):e.visitChildren(this)}},Oi=class extends l{constructor(e,t){super(e,t)}sourceEnd(){return this.getRuleContext(0,Za)}get ruleIndex(){return n.RULE_sourceEndMember}enterRule(e){e.enterSourceEndMember&&e.enterSourceEndMember(this)}exitRule(e){e.exitSourceEndMember&&e.exitSourceEndMember(this)}accept(e){return e.visitSourceEndMember?e.visitSourceEndMember(this):e.visitChildren(this)}},Za=class extends l{constructor(e,t){super(e,t)}ownedMultiplicity(){return this.getRuleContext(0,_e)}get ruleIndex(){return n.RULE_sourceEnd}enterRule(e){e.enterSourceEnd&&e.enterSourceEnd(this)}exitRule(e){e.exitSourceEnd&&e.exitSourceEnd(this)}accept(e){return e.visitSourceEnd?e.visitSourceEnd(this):e.visitChildren(this)}},el=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}ITEM(){return this.getToken(n.ITEM,0)}DEF(){return this.getToken(n.DEF,0)}definition(){return this.getRuleContext(0,ie)}get ruleIndex(){return n.RULE_itemDefinition}enterRule(e){e.enterItemDefinition&&e.enterItemDefinition(this)}exitRule(e){e.exitItemDefinition&&e.exitItemDefinition(this)}accept(e){return e.visitItemDefinition?e.visitItemDefinition(this):e.visitChildren(this)}},wi=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}ITEM(){return this.getToken(n.ITEM,0)}usage(){return this.getRuleContext(0,_)}get ruleIndex(){return n.RULE_itemUsage}enterRule(e){e.enterItemUsage&&e.enterItemUsage(this)}exitRule(e){e.exitItemUsage&&e.exitItemUsage(this)}accept(e){return e.visitItemUsage?e.visitItemUsage(this):e.visitChildren(this)}},tl=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}PART(){return this.getToken(n.PART,0)}DEF(){return this.getToken(n.DEF,0)}definition(){return this.getRuleContext(0,ie)}get ruleIndex(){return n.RULE_partDefinition}enterRule(e){e.enterPartDefinition&&e.enterPartDefinition(this)}exitRule(e){e.exitPartDefinition&&e.exitPartDefinition(this)}accept(e){return e.visitPartDefinition?e.visitPartDefinition(this):e.visitChildren(this)}},ki=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}PART(){return this.getToken(n.PART,0)}usage(){return this.getRuleContext(0,_)}get ruleIndex(){return n.RULE_partUsage}enterRule(e){e.enterPartUsage&&e.enterPartUsage(this)}exitRule(e){e.exitPartUsage&&e.exitPartUsage(this)}accept(e){return e.visitPartUsage?e.visitPartUsage(this):e.visitChildren(this)}},rl=class extends l{constructor(e,t){super(e,t)}definitionPrefix(){return this.getRuleContext(0,Ei)}PORT(){return this.getToken(n.PORT,0)}DEF(){return this.getToken(n.DEF,0)}definition(){return this.getRuleContext(0,ie)}conjugatedPortDefinitionMember(){return this.getRuleContext(0,il)}get ruleIndex(){return n.RULE_portDefinition}enterRule(e){e.enterPortDefinition&&e.enterPortDefinition(this)}exitRule(e){e.exitPortDefinition&&e.exitPortDefinition(this)}accept(e){return e.visitPortDefinition?e.visitPortDefinition(this):e.visitChildren(this)}},il=class extends l{constructor(e,t){super(e,t)}conjugatedPortDefinition(){return this.getRuleContext(0,nl)}get ruleIndex(){return n.RULE_conjugatedPortDefinitionMember}enterRule(e){e.enterConjugatedPortDefinitionMember&&e.enterConjugatedPortDefinitionMember(this)}exitRule(e){e.exitConjugatedPortDefinitionMember&&e.exitConjugatedPortDefinitionMember(this)}accept(e){return e.visitConjugatedPortDefinitionMember?e.visitConjugatedPortDefinitionMember(this):e.visitChildren(this)}},nl=class extends l{constructor(e,t){super(e,t)}portConjugation(){return this.getRuleContext(0,Fu)}get ruleIndex(){return n.RULE_conjugatedPortDefinition}enterRule(e){e.enterConjugatedPortDefinition&&e.enterConjugatedPortDefinition(this)}exitRule(e){e.exitConjugatedPortDefinition&&e.exitConjugatedPortDefinition(this)}accept(e){return e.visitConjugatedPortDefinition?e.visitConjugatedPortDefinition(this):e.visitChildren(this)}},Di=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}PORT(){return this.getToken(n.PORT,0)}usage(){return this.getRuleContext(0,_)}get ruleIndex(){return n.RULE_portUsage}enterRule(e){e.enterPortUsage&&e.enterPortUsage(this)}exitRule(e){e.exitPortUsage&&e.exitPortUsage(this)}accept(e){return e.visitPortUsage?e.visitPortUsage(this):e.visitChildren(this)}},sl=class extends l{constructor(e,t){super(e,t)}TILDE(){return this.getToken(n.TILDE,0)}qualifiedName(){return this.getRuleContext(0,m)}get ruleIndex(){return n.RULE_conjugatedPortTyping}enterRule(e){e.enterConjugatedPortTyping&&e.enterConjugatedPortTyping(this)}exitRule(e){e.exitConjugatedPortTyping&&e.exitConjugatedPortTyping(this)}accept(e){return e.visitConjugatedPortTyping?e.visitConjugatedPortTyping(this):e.visitChildren(this)}},al=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}CONNECTION(){return this.getToken(n.CONNECTION,0)}DEF(){return this.getToken(n.DEF,0)}definition(){return this.getRuleContext(0,ie)}get ruleIndex(){return n.RULE_connectionDefinition}enterRule(e){e.enterConnectionDefinition&&e.enterConnectionDefinition(this)}exitRule(e){e.exitConnectionDefinition&&e.exitConnectionDefinition(this)}accept(e){return e.visitConnectionDefinition?e.visitConnectionDefinition(this):e.visitChildren(this)}},Fi=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}usageBody(){return this.getRuleContext(0,be)}CONNECTION(){return this.getToken(n.CONNECTION,0)}CONNECT(){return this.getToken(n.CONNECT,0)}connectorPart(){return this.getRuleContext(0,Hi)}usageDeclaration(){return this.getRuleContext(0,U)}valuePart(){return this.getRuleContext(0,D)}get ruleIndex(){return n.RULE_connectionUsage}enterRule(e){e.enterConnectionUsage&&e.enterConnectionUsage(this)}exitRule(e){e.exitConnectionUsage&&e.exitConnectionUsage(this)}accept(e){return e.visitConnectionUsage?e.visitConnectionUsage(this):e.visitChildren(this)}},Hi=class extends l{constructor(e,t){super(e,t)}binaryConnectorPart(){return this.getRuleContext(0,ll)}naryConnectorPart(){return this.getRuleContext(0,ol)}get ruleIndex(){return n.RULE_connectorPart}enterRule(e){e.enterConnectorPart&&e.enterConnectorPart(this)}exitRule(e){e.exitConnectorPart&&e.exitConnectorPart(this)}accept(e){return e.visitConnectorPart?e.visitConnectorPart(this):e.visitChildren(this)}},ll=class extends l{constructor(e,t){super(e,t)}connectorEndMember(e){return e===void 0?this.getRuleContexts(V):this.getRuleContext(e,V)}TO(){return this.getToken(n.TO,0)}get ruleIndex(){return n.RULE_binaryConnectorPart}enterRule(e){e.enterBinaryConnectorPart&&e.enterBinaryConnectorPart(this)}exitRule(e){e.exitBinaryConnectorPart&&e.exitBinaryConnectorPart(this)}accept(e){return e.visitBinaryConnectorPart?e.visitBinaryConnectorPart(this):e.visitChildren(this)}},ol=class extends l{constructor(e,t){super(e,t)}LPAREN(){return this.getToken(n.LPAREN,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(V):this.getRuleContext(e,V)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}RPAREN(){return this.getToken(n.RPAREN,0)}get ruleIndex(){return n.RULE_naryConnectorPart}enterRule(e){e.enterNaryConnectorPart&&e.enterNaryConnectorPart(this)}exitRule(e){e.exitNaryConnectorPart&&e.exitNaryConnectorPart(this)}accept(e){return e.visitNaryConnectorPart?e.visitNaryConnectorPart(this):e.visitChildren(this)}},Rr=class extends l{constructor(e,t){super(e,t)}usagePrefix(){return this.getRuleContext(0,Tt)}BIND(){return this.getToken(n.BIND,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(V):this.getRuleContext(e,V)}EQ(){return this.getToken(n.EQ,0)}usageBody(){return this.getRuleContext(0,be)}BINDING(){return this.getToken(n.BINDING,0)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_bindingConnectorAsUsage}enterRule(e){e.enterBindingConnectorAsUsage&&e.enterBindingConnectorAsUsage(this)}exitRule(e){e.exitBindingConnectorAsUsage&&e.exitBindingConnectorAsUsage(this)}accept(e){return e.visitBindingConnectorAsUsage?e.visitBindingConnectorAsUsage(this):e.visitChildren(this)}},fr=class extends l{constructor(e,t){super(e,t)}usagePrefix(){return this.getRuleContext(0,Tt)}FIRST(){return this.getToken(n.FIRST,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(V):this.getRuleContext(e,V)}THEN(){return this.getToken(n.THEN,0)}usageBody(){return this.getRuleContext(0,be)}SUCCESSION(){return this.getToken(n.SUCCESSION,0)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_successionAsUsage}enterRule(e){e.enterSuccessionAsUsage&&e.enterSuccessionAsUsage(this)}exitRule(e){e.exitSuccessionAsUsage&&e.exitSuccessionAsUsage(this)}accept(e){return e.visitSuccessionAsUsage?e.visitSuccessionAsUsage(this):e.visitChildren(this)}},ul=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}INTERFACE(){return this.getToken(n.INTERFACE,0)}DEF(){return this.getToken(n.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,W)}interfaceBody(){return this.getRuleContext(0,Bi)}get ruleIndex(){return n.RULE_interfaceDefinition}enterRule(e){e.enterInterfaceDefinition&&e.enterInterfaceDefinition(this)}exitRule(e){e.exitInterfaceDefinition&&e.exitInterfaceDefinition(this)}accept(e){return e.visitInterfaceDefinition?e.visitInterfaceDefinition(this):e.visitChildren(this)}},Bi=class extends l{constructor(e,t){super(e,t)}SEMI(){return this.getToken(n.SEMI,0)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}interfaceBodyItem(e){return e===void 0?this.getRuleContexts(Vi):this.getRuleContext(e,Vi)}get ruleIndex(){return n.RULE_interfaceBody}enterRule(e){e.enterInterfaceBody&&e.enterInterfaceBody(this)}exitRule(e){e.exitInterfaceBody&&e.exitInterfaceBody(this)}accept(e){return e.visitInterfaceBody?e.visitInterfaceBody(this):e.visitChildren(this)}},Vi=class extends l{constructor(e,t){super(e,t)}definitionMember(){return this.getRuleContext(0,St)}variantUsageMember(){return this.getRuleContext(0,yi)}interfaceNonOccurrenceUsageMember(){return this.getRuleContext(0,cl)}interfaceOccurrenceUsageMember(){return this.getRuleContext(0,dl)}sourceSuccessionMember(){return this.getRuleContext(0,nt)}aliasMember(){return this.getRuleContext(0,ve)}importRule(){return this.getRuleContext(0,pe)}get ruleIndex(){return n.RULE_interfaceBodyItem}enterRule(e){e.enterInterfaceBodyItem&&e.enterInterfaceBodyItem(this)}exitRule(e){e.exitInterfaceBodyItem&&e.exitInterfaceBodyItem(this)}accept(e){return e.visitInterfaceBodyItem?e.visitInterfaceBodyItem(this):e.visitChildren(this)}},cl=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}interfaceNonOccurrenceUsageElement(){return this.getRuleContext(0,hl)}get ruleIndex(){return n.RULE_interfaceNonOccurrenceUsageMember}enterRule(e){e.enterInterfaceNonOccurrenceUsageMember&&e.enterInterfaceNonOccurrenceUsageMember(this)}exitRule(e){e.exitInterfaceNonOccurrenceUsageMember&&e.exitInterfaceNonOccurrenceUsageMember(this)}accept(e){return e.visitInterfaceNonOccurrenceUsageMember?e.visitInterfaceNonOccurrenceUsageMember(this):e.visitChildren(this)}},hl=class extends l{constructor(e,t){super(e,t)}referenceUsage(){return this.getRuleContext(0,cr)}attributeUsage(){return this.getRuleContext(0,xr)}enumerationUsage(){return this.getRuleContext(0,Ti)}bindingConnectorAsUsage(){return this.getRuleContext(0,Rr)}successionAsUsage(){return this.getRuleContext(0,fr)}get ruleIndex(){return n.RULE_interfaceNonOccurrenceUsageElement}enterRule(e){e.enterInterfaceNonOccurrenceUsageElement&&e.enterInterfaceNonOccurrenceUsageElement(this)}exitRule(e){e.exitInterfaceNonOccurrenceUsageElement&&e.exitInterfaceNonOccurrenceUsageElement(this)}accept(e){return e.visitInterfaceNonOccurrenceUsageElement?e.visitInterfaceNonOccurrenceUsageElement(this):e.visitChildren(this)}},dl=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}interfaceOccurrenceUsageElement(){return this.getRuleContext(0,pl)}get ruleIndex(){return n.RULE_interfaceOccurrenceUsageMember}enterRule(e){e.enterInterfaceOccurrenceUsageMember&&e.enterInterfaceOccurrenceUsageMember(this)}exitRule(e){e.exitInterfaceOccurrenceUsageMember&&e.exitInterfaceOccurrenceUsageMember(this)}accept(e){return e.visitInterfaceOccurrenceUsageMember?e.visitInterfaceOccurrenceUsageMember(this):e.visitChildren(this)}},pl=class extends l{constructor(e,t){super(e,t)}defaultInterfaceEnd(){return this.getRuleContext(0,xl)}structureUsageElement(){return this.getRuleContext(0,pr)}behaviorUsageElement(){return this.getRuleContext(0,At)}get ruleIndex(){return n.RULE_interfaceOccurrenceUsageElement}enterRule(e){e.enterInterfaceOccurrenceUsageElement&&e.enterInterfaceOccurrenceUsageElement(this)}exitRule(e){e.exitInterfaceOccurrenceUsageElement&&e.exitInterfaceOccurrenceUsageElement(this)}accept(e){return e.visitInterfaceOccurrenceUsageElement?e.visitInterfaceOccurrenceUsageElement(this):e.visitChildren(this)}},xl=class extends l{constructor(e,t){super(e,t)}END(){return this.getToken(n.END,0)}usage(){return this.getRuleContext(0,_)}get ruleIndex(){return n.RULE_defaultInterfaceEnd}enterRule(e){e.enterDefaultInterfaceEnd&&e.enterDefaultInterfaceEnd(this)}exitRule(e){e.exitDefaultInterfaceEnd&&e.exitDefaultInterfaceEnd(this)}accept(e){return e.visitDefaultInterfaceEnd?e.visitDefaultInterfaceEnd(this):e.visitChildren(this)}},_i=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}INTERFACE(){return this.getToken(n.INTERFACE,0)}interfaceUsageDeclaration(){return this.getRuleContext(0,bl)}interfaceBody(){return this.getRuleContext(0,Bi)}get ruleIndex(){return n.RULE_interfaceUsage}enterRule(e){e.enterInterfaceUsage&&e.enterInterfaceUsage(this)}exitRule(e){e.exitInterfaceUsage&&e.exitInterfaceUsage(this)}accept(e){return e.visitInterfaceUsage?e.visitInterfaceUsage(this):e.visitChildren(this)}},bl=class extends l{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,U)}valuePart(){return this.getRuleContext(0,D)}CONNECT(){return this.getToken(n.CONNECT,0)}interfacePart(){return this.getRuleContext(0,Rl)}get ruleIndex(){return n.RULE_interfaceUsageDeclaration}enterRule(e){e.enterInterfaceUsageDeclaration&&e.enterInterfaceUsageDeclaration(this)}exitRule(e){e.exitInterfaceUsageDeclaration&&e.exitInterfaceUsageDeclaration(this)}accept(e){return e.visitInterfaceUsageDeclaration?e.visitInterfaceUsageDeclaration(this):e.visitChildren(this)}},Rl=class extends l{constructor(e,t){super(e,t)}binaryInterfacePart(){return this.getRuleContext(0,fl)}naryInterfacePart(){return this.getRuleContext(0,ml)}get ruleIndex(){return n.RULE_interfacePart}enterRule(e){e.enterInterfacePart&&e.enterInterfacePart(this)}exitRule(e){e.exitInterfacePart&&e.exitInterfacePart(this)}accept(e){return e.visitInterfacePart?e.visitInterfacePart(this):e.visitChildren(this)}},fl=class extends l{constructor(e,t){super(e,t)}interfaceEndMember(e){return e===void 0?this.getRuleContexts(Mt):this.getRuleContext(e,Mt)}TO(){return this.getToken(n.TO,0)}get ruleIndex(){return n.RULE_binaryInterfacePart}enterRule(e){e.enterBinaryInterfacePart&&e.enterBinaryInterfacePart(this)}exitRule(e){e.exitBinaryInterfacePart&&e.exitBinaryInterfacePart(this)}accept(e){return e.visitBinaryInterfacePart?e.visitBinaryInterfacePart(this):e.visitChildren(this)}},ml=class extends l{constructor(e,t){super(e,t)}LPAREN(){return this.getToken(n.LPAREN,0)}interfaceEndMember(e){return e===void 0?this.getRuleContexts(Mt):this.getRuleContext(e,Mt)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}RPAREN(){return this.getToken(n.RPAREN,0)}get ruleIndex(){return n.RULE_naryInterfacePart}enterRule(e){e.enterNaryInterfacePart&&e.enterNaryInterfacePart(this)}exitRule(e){e.exitNaryInterfacePart&&e.exitNaryInterfacePart(this)}accept(e){return e.visitNaryInterfacePart?e.visitNaryInterfacePart(this):e.visitChildren(this)}},Mt=class extends l{constructor(e,t){super(e,t)}interfaceEnd(){return this.getRuleContext(0,gl)}get ruleIndex(){return n.RULE_interfaceEndMember}enterRule(e){e.enterInterfaceEndMember&&e.enterInterfaceEndMember(this)}exitRule(e){e.exitInterfaceEndMember&&e.exitInterfaceEndMember(this)}accept(e){return e.visitInterfaceEndMember?e.visitInterfaceEndMember(this):e.visitChildren(this)}},gl=class extends l{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,z)}ownedCrossMultiplicityMember(){return this.getRuleContext(0,ai)}name(){return this.getRuleContext(0,ee)}COLON_COLON_GT(){return this.getToken(n.COLON_COLON_GT,0)}REFERENCES(){return this.getToken(n.REFERENCES,0)}get ruleIndex(){return n.RULE_interfaceEnd}enterRule(e){e.enterInterfaceEnd&&e.enterInterfaceEnd(this)}exitRule(e){e.exitInterfaceEnd&&e.exitInterfaceEnd(this)}accept(e){return e.visitInterfaceEnd?e.visitInterfaceEnd(this):e.visitChildren(this)}},Cl=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}ALLOCATION(){return this.getToken(n.ALLOCATION,0)}DEF(){return this.getToken(n.DEF,0)}definition(){return this.getRuleContext(0,ie)}get ruleIndex(){return n.RULE_allocationDefinition}enterRule(e){e.enterAllocationDefinition&&e.enterAllocationDefinition(this)}exitRule(e){e.exitAllocationDefinition&&e.exitAllocationDefinition(this)}accept(e){return e.visitAllocationDefinition?e.visitAllocationDefinition(this):e.visitChildren(this)}},qi=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}allocationUsageDeclaration(){return this.getRuleContext(0,El)}usageBody(){return this.getRuleContext(0,be)}get ruleIndex(){return n.RULE_allocationUsage}enterRule(e){e.enterAllocationUsage&&e.enterAllocationUsage(this)}exitRule(e){e.exitAllocationUsage&&e.exitAllocationUsage(this)}accept(e){return e.visitAllocationUsage?e.visitAllocationUsage(this):e.visitChildren(this)}},El=class extends l{constructor(e,t){super(e,t)}ALLOCATION(){return this.getToken(n.ALLOCATION,0)}usageDeclaration(){return this.getRuleContext(0,U)}ALLOCATE(){return this.getToken(n.ALLOCATE,0)}connectorPart(){return this.getRuleContext(0,Hi)}get ruleIndex(){return n.RULE_allocationUsageDeclaration}enterRule(e){e.enterAllocationUsageDeclaration&&e.enterAllocationUsageDeclaration(this)}exitRule(e){e.exitAllocationUsageDeclaration&&e.exitAllocationUsageDeclaration(this)}accept(e){return e.visitAllocationUsageDeclaration?e.visitAllocationUsageDeclaration(this):e.visitChildren(this)}},yl=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}FLOW(){return this.getToken(n.FLOW,0)}DEF(){return this.getToken(n.DEF,0)}definition(){return this.getRuleContext(0,ie)}get ruleIndex(){return n.RULE_flowDefinition}enterRule(e){e.enterFlowDefinition&&e.enterFlowDefinition(this)}exitRule(e){e.exitFlowDefinition&&e.exitFlowDefinition(this)}accept(e){return e.visitFlowDefinition?e.visitFlowDefinition(this):e.visitChildren(this)}},Gi=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}MESSAGE(){return this.getToken(n.MESSAGE,0)}messageDeclaration(){return this.getRuleContext(0,vl)}definitionBody(){return this.getRuleContext(0,tt)}get ruleIndex(){return n.RULE_message}enterRule(e){e.enterMessage&&e.enterMessage(this)}exitRule(e){e.exitMessage&&e.exitMessage(this)}accept(e){return e.visitMessage?e.visitMessage(this):e.visitChildren(this)}},vl=class extends l{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,U)}valuePart(){return this.getRuleContext(0,D)}OF(){return this.getToken(n.OF,0)}flowPayloadFeatureMember(){return this.getRuleContext(0,zi)}FROM(){return this.getToken(n.FROM,0)}messageEventMember(e){return e===void 0?this.getRuleContexts(Ki):this.getRuleContext(e,Ki)}TO(){return this.getToken(n.TO,0)}get ruleIndex(){return n.RULE_messageDeclaration}enterRule(e){e.enterMessageDeclaration&&e.enterMessageDeclaration(this)}exitRule(e){e.exitMessageDeclaration&&e.exitMessageDeclaration(this)}accept(e){return e.visitMessageDeclaration?e.visitMessageDeclaration(this):e.visitChildren(this)}},Ki=class extends l{constructor(e,t){super(e,t)}messageEvent(){return this.getRuleContext(0,Ll)}get ruleIndex(){return n.RULE_messageEventMember}enterRule(e){e.enterMessageEventMember&&e.enterMessageEventMember(this)}exitRule(e){e.exitMessageEventMember&&e.exitMessageEventMember(this)}accept(e){return e.visitMessageEventMember?e.visitMessageEventMember(this):e.visitChildren(this)}},Ll=class extends l{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,z)}get ruleIndex(){return n.RULE_messageEvent}enterRule(e){e.enterMessageEvent&&e.enterMessageEvent(this)}exitRule(e){e.exitMessageEvent&&e.exitMessageEvent(this)}accept(e){return e.visitMessageEvent?e.visitMessageEvent(this):e.visitChildren(this)}},ji=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}FLOW(){return this.getToken(n.FLOW,0)}flowDeclaration(){return this.getRuleContext(0,Ct)}definitionBody(){return this.getRuleContext(0,tt)}get ruleIndex(){return n.RULE_flowUsage}enterRule(e){e.enterFlowUsage&&e.enterFlowUsage(this)}exitRule(e){e.exitFlowUsage&&e.exitFlowUsage(this)}accept(e){return e.visitFlowUsage?e.visitFlowUsage(this):e.visitChildren(this)}},Qi=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}SUCCESSION(){return this.getToken(n.SUCCESSION,0)}FLOW(){return this.getToken(n.FLOW,0)}flowDeclaration(){return this.getRuleContext(0,Ct)}definitionBody(){return this.getRuleContext(0,tt)}get ruleIndex(){return n.RULE_successionFlowUsage}enterRule(e){e.enterSuccessionFlowUsage&&e.enterSuccessionFlowUsage(this)}exitRule(e){e.exitSuccessionFlowUsage&&e.exitSuccessionFlowUsage(this)}accept(e){return e.visitSuccessionFlowUsage?e.visitSuccessionFlowUsage(this):e.visitChildren(this)}},zi=class extends l{constructor(e,t){super(e,t)}flowPayloadFeature(){return this.getRuleContext(0,Sl)}get ruleIndex(){return n.RULE_flowPayloadFeatureMember}enterRule(e){e.enterFlowPayloadFeatureMember&&e.enterFlowPayloadFeatureMember(this)}exitRule(e){e.exitFlowPayloadFeatureMember&&e.exitFlowPayloadFeatureMember(this)}accept(e){return e.visitFlowPayloadFeatureMember?e.visitFlowPayloadFeatureMember(this):e.visitChildren(this)}},Sl=class extends l{constructor(e,t){super(e,t)}payloadFeature(){return this.getRuleContext(0,sr)}get ruleIndex(){return n.RULE_flowPayloadFeature}enterRule(e){e.enterFlowPayloadFeature&&e.enterFlowPayloadFeature(this)}exitRule(e){e.exitFlowPayloadFeature&&e.exitFlowPayloadFeature(this)}accept(e){return e.visitFlowPayloadFeature?e.visitFlowPayloadFeature(this):e.visitChildren(this)}},P1=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}featureChainPrefix(){return this.getRuleContext(0,Pl)}get ruleIndex(){return n.RULE_flowEndSubsetting}enterRule(e){e.enterFlowEndSubsetting&&e.enterFlowEndSubsetting(this)}exitRule(e){e.exitFlowEndSubsetting&&e.exitFlowEndSubsetting(this)}accept(e){return e.visitFlowEndSubsetting?e.visitFlowEndSubsetting(this):e.visitChildren(this)}},Pl=class extends l{constructor(e,t){super(e,t)}ownedFeatureChaining(e){return e===void 0?this.getRuleContexts(Ve):this.getRuleContext(e,Ve)}DOT(e){return e===void 0?this.getTokens(n.DOT):this.getToken(n.DOT,e)}get ruleIndex(){return n.RULE_featureChainPrefix}enterRule(e){e.enterFeatureChainPrefix&&e.enterFeatureChainPrefix(this)}exitRule(e){e.exitFeatureChainPrefix&&e.exitFeatureChainPrefix(this)}accept(e){return e.visitFeatureChainPrefix?e.visitFeatureChainPrefix(this):e.visitChildren(this)}},Tl=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}ACTION(){return this.getToken(n.ACTION,0)}DEF(){return this.getToken(n.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,W)}actionBody(){return this.getRuleContext(0,q)}get ruleIndex(){return n.RULE_actionDefinition}enterRule(e){e.enterActionDefinition&&e.enterActionDefinition(this)}exitRule(e){e.exitActionDefinition&&e.exitActionDefinition(this)}accept(e){return e.visitActionDefinition?e.visitActionDefinition(this):e.visitChildren(this)}},q=class extends l{constructor(e,t){super(e,t)}SEMI(){return this.getToken(n.SEMI,0)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(J):this.getRuleContext(e,J)}get ruleIndex(){return n.RULE_actionBody}enterRule(e){e.enterActionBody&&e.enterActionBody(this)}exitRule(e){e.exitActionBody&&e.exitActionBody(this)}accept(e){return e.visitActionBody?e.visitActionBody(this):e.visitChildren(this)}},J=class extends l{constructor(e,t){super(e,t)}nonBehaviorBodyItem(){return this.getRuleContext(0,Yi)}initialNodeMember(){return this.getRuleContext(0,Ml)}actionTargetSuccessionMember(e){return e===void 0?this.getRuleContexts(Wi):this.getRuleContext(e,Wi)}actionBehaviorMember(){return this.getRuleContext(0,Al)}sourceSuccessionMember(){return this.getRuleContext(0,nt)}guardedSuccessionMember(){return this.getRuleContext(0,Ul)}get ruleIndex(){return n.RULE_actionBodyItem}enterRule(e){e.enterActionBodyItem&&e.enterActionBodyItem(this)}exitRule(e){e.exitActionBodyItem&&e.exitActionBodyItem(this)}accept(e){return e.visitActionBodyItem?e.visitActionBodyItem(this):e.visitChildren(this)}},Yi=class extends l{constructor(e,t){super(e,t)}importRule(){return this.getRuleContext(0,pe)}aliasMember(){return this.getRuleContext(0,ve)}definitionMember(){return this.getRuleContext(0,St)}variantUsageMember(){return this.getRuleContext(0,yi)}nonOccurrenceUsageMember(){return this.getRuleContext(0,Va)}structureUsageMember(){return this.getRuleContext(0,_a)}sourceSuccessionMember(){return this.getRuleContext(0,nt)}get ruleIndex(){return n.RULE_nonBehaviorBodyItem}enterRule(e){e.enterNonBehaviorBodyItem&&e.enterNonBehaviorBodyItem(this)}exitRule(e){e.exitNonBehaviorBodyItem&&e.exitNonBehaviorBodyItem(this)}accept(e){return e.visitNonBehaviorBodyItem?e.visitNonBehaviorBodyItem(this):e.visitChildren(this)}},Al=class extends l{constructor(e,t){super(e,t)}behaviorUsageMember(){return this.getRuleContext(0,vi)}actionNodeMember(){return this.getRuleContext(0,Nl)}get ruleIndex(){return n.RULE_actionBehaviorMember}enterRule(e){e.enterActionBehaviorMember&&e.enterActionBehaviorMember(this)}exitRule(e){e.exitActionBehaviorMember&&e.exitActionBehaviorMember(this)}accept(e){return e.visitActionBehaviorMember?e.visitActionBehaviorMember(this):e.visitChildren(this)}},Ml=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}FIRST(){return this.getToken(n.FIRST,0)}qualifiedName(){return this.getRuleContext(0,m)}relationshipBody(){return this.getRuleContext(0,Q)}get ruleIndex(){return n.RULE_initialNodeMember}enterRule(e){e.enterInitialNodeMember&&e.enterInitialNodeMember(this)}exitRule(e){e.exitInitialNodeMember&&e.exitInitialNodeMember(this)}accept(e){return e.visitInitialNodeMember?e.visitInitialNodeMember(this):e.visitChildren(this)}},Nl=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}actionNode(){return this.getRuleContext(0,wl)}get ruleIndex(){return n.RULE_actionNodeMember}enterRule(e){e.enterActionNodeMember&&e.enterActionNodeMember(this)}exitRule(e){e.exitActionNodeMember&&e.exitActionNodeMember(this)}accept(e){return e.visitActionNodeMember?e.visitActionNodeMember(this):e.visitChildren(this)}},Wi=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}actionTargetSuccession(){return this.getRuleContext(0,so)}get ruleIndex(){return n.RULE_actionTargetSuccessionMember}enterRule(e){e.enterActionTargetSuccessionMember&&e.enterActionTargetSuccessionMember(this)}exitRule(e){e.exitActionTargetSuccessionMember&&e.exitActionTargetSuccessionMember(this)}accept(e){return e.visitActionTargetSuccessionMember?e.visitActionTargetSuccessionMember(this):e.visitChildren(this)}},Ul=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}guardedSuccession(){return this.getRuleContext(0,oo)}get ruleIndex(){return n.RULE_guardedSuccessionMember}enterRule(e){e.enterGuardedSuccessionMember&&e.enterGuardedSuccessionMember(this)}exitRule(e){e.exitGuardedSuccessionMember&&e.exitGuardedSuccessionMember(this)}accept(e){return e.visitGuardedSuccessionMember?e.visitGuardedSuccessionMember(this):e.visitChildren(this)}},Il=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}ACTION(){return this.getToken(n.ACTION,0)}actionUsageDeclaration(){return this.getRuleContext(0,Nt)}actionBody(){return this.getRuleContext(0,q)}get ruleIndex(){return n.RULE_actionUsage}enterRule(e){e.enterActionUsage&&e.enterActionUsage(this)}exitRule(e){e.exitActionUsage&&e.exitActionUsage(this)}accept(e){return e.visitActionUsage?e.visitActionUsage(this):e.visitChildren(this)}},Nt=class extends l{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,U)}valuePart(){return this.getRuleContext(0,D)}get ruleIndex(){return n.RULE_actionUsageDeclaration}enterRule(e){e.enterActionUsageDeclaration&&e.enterActionUsageDeclaration(this)}exitRule(e){e.exitActionUsageDeclaration&&e.exitActionUsageDeclaration(this)}accept(e){return e.visitActionUsageDeclaration?e.visitActionUsageDeclaration(this):e.visitChildren(this)}},Ol=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}PERFORM(){return this.getToken(n.PERFORM,0)}performActionUsageDeclaration(){return this.getRuleContext(0,mr)}actionBody(){return this.getRuleContext(0,q)}get ruleIndex(){return n.RULE_performActionUsage}enterRule(e){e.enterPerformActionUsage&&e.enterPerformActionUsage(this)}exitRule(e){e.exitPerformActionUsage&&e.exitPerformActionUsage(this)}accept(e){return e.visitPerformActionUsage?e.visitPerformActionUsage(this):e.visitChildren(this)}},mr=class extends l{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,z)}ACTION(){return this.getToken(n.ACTION,0)}valuePart(){return this.getRuleContext(0,D)}featureSpecializationPart(){return this.getRuleContext(0,Z)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_performActionUsageDeclaration}enterRule(e){e.enterPerformActionUsageDeclaration&&e.enterPerformActionUsageDeclaration(this)}exitRule(e){e.exitPerformActionUsageDeclaration&&e.exitPerformActionUsageDeclaration(this)}accept(e){return e.visitPerformActionUsageDeclaration?e.visitPerformActionUsageDeclaration(this):e.visitChildren(this)}},wl=class extends l{constructor(e,t){super(e,t)}controlNode(){return this.getRuleContext(0,kl)}sendNode(){return this.getRuleContext(0,Ql)}acceptNode(){return this.getRuleContext(0,Vl)}assignmentNode(){return this.getRuleContext(0,Wl)}terminateNode(){return this.getRuleContext(0,Zl)}ifNode(){return this.getRuleContext(0,Zi)}whileLoopNode(){return this.getRuleContext(0,ro)}forLoopNode(){return this.getRuleContext(0,io)}get ruleIndex(){return n.RULE_actionNode}enterRule(e){e.enterActionNode&&e.enterActionNode(this)}exitRule(e){e.exitActionNode&&e.exitActionNode(this)}accept(e){return e.visitActionNode?e.visitActionNode(this):e.visitChildren(this)}},qe=class extends l{constructor(e,t){super(e,t)}ACTION(){return this.getToken(n.ACTION,0)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_actionNodeUsageDeclaration}enterRule(e){e.enterActionNodeUsageDeclaration&&e.enterActionNodeUsageDeclaration(this)}exitRule(e){e.exitActionNodeUsageDeclaration&&e.exitActionNodeUsageDeclaration(this)}accept(e){return e.visitActionNodeUsageDeclaration?e.visitActionNodeUsageDeclaration(this):e.visitChildren(this)}},gr=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}actionNodeUsageDeclaration(){return this.getRuleContext(0,qe)}get ruleIndex(){return n.RULE_actionNodePrefix}enterRule(e){e.enterActionNodePrefix&&e.enterActionNodePrefix(this)}exitRule(e){e.exitActionNodePrefix&&e.exitActionNodePrefix(this)}accept(e){return e.visitActionNodePrefix?e.visitActionNodePrefix(this):e.visitChildren(this)}},kl=class extends l{constructor(e,t){super(e,t)}mergeNode(){return this.getRuleContext(0,Dl)}decisionNode(){return this.getRuleContext(0,Fl)}joinNode(){return this.getRuleContext(0,Hl)}forkNode(){return this.getRuleContext(0,Bl)}get ruleIndex(){return n.RULE_controlNode}enterRule(e){e.enterControlNode&&e.enterControlNode(this)}exitRule(e){e.exitControlNode&&e.exitControlNode(this)}accept(e){return e.visitControlNode?e.visitControlNode(this):e.visitChildren(this)}},Ut=class extends l{constructor(e,t){super(e,t)}refPrefix(){return this.getRuleContext(0,Pt)}INDIVIDUAL(){return this.getToken(n.INDIVIDUAL,0)}portionKind(){return this.getRuleContext(0,br)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(M):this.getRuleContext(e,M)}get ruleIndex(){return n.RULE_controlNodePrefix}enterRule(e){e.enterControlNodePrefix&&e.enterControlNodePrefix(this)}exitRule(e){e.exitControlNodePrefix&&e.exitControlNodePrefix(this)}accept(e){return e.visitControlNodePrefix?e.visitControlNodePrefix(this):e.visitChildren(this)}},Dl=class extends l{constructor(e,t){super(e,t)}controlNodePrefix(){return this.getRuleContext(0,Ut)}MERGE(){return this.getToken(n.MERGE,0)}actionBody(){return this.getRuleContext(0,q)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_mergeNode}enterRule(e){e.enterMergeNode&&e.enterMergeNode(this)}exitRule(e){e.exitMergeNode&&e.exitMergeNode(this)}accept(e){return e.visitMergeNode?e.visitMergeNode(this):e.visitChildren(this)}},Fl=class extends l{constructor(e,t){super(e,t)}controlNodePrefix(){return this.getRuleContext(0,Ut)}DECIDE(){return this.getToken(n.DECIDE,0)}actionBody(){return this.getRuleContext(0,q)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_decisionNode}enterRule(e){e.enterDecisionNode&&e.enterDecisionNode(this)}exitRule(e){e.exitDecisionNode&&e.exitDecisionNode(this)}accept(e){return e.visitDecisionNode?e.visitDecisionNode(this):e.visitChildren(this)}},Hl=class extends l{constructor(e,t){super(e,t)}controlNodePrefix(){return this.getRuleContext(0,Ut)}JOIN(){return this.getToken(n.JOIN,0)}actionBody(){return this.getRuleContext(0,q)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_joinNode}enterRule(e){e.enterJoinNode&&e.enterJoinNode(this)}exitRule(e){e.exitJoinNode&&e.exitJoinNode(this)}accept(e){return e.visitJoinNode?e.visitJoinNode(this):e.visitChildren(this)}},Bl=class extends l{constructor(e,t){super(e,t)}controlNodePrefix(){return this.getRuleContext(0,Ut)}FORK(){return this.getToken(n.FORK,0)}actionBody(){return this.getRuleContext(0,q)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_forkNode}enterRule(e){e.enterForkNode&&e.enterForkNode(this)}exitRule(e){e.exitForkNode&&e.exitForkNode(this)}accept(e){return e.visitForkNode?e.visitForkNode(this):e.visitChildren(this)}},Vl=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}acceptNodeDeclaration(){return this.getRuleContext(0,Cr)}actionBody(){return this.getRuleContext(0,q)}get ruleIndex(){return n.RULE_acceptNode}enterRule(e){e.enterAcceptNode&&e.enterAcceptNode(this)}exitRule(e){e.exitAcceptNode&&e.exitAcceptNode(this)}accept(e){return e.visitAcceptNode?e.visitAcceptNode(this):e.visitChildren(this)}},Cr=class extends l{constructor(e,t){super(e,t)}ACCEPT(){return this.getToken(n.ACCEPT,0)}acceptParameterPart(){return this.getRuleContext(0,Xi)}actionNodeUsageDeclaration(){return this.getRuleContext(0,qe)}get ruleIndex(){return n.RULE_acceptNodeDeclaration}enterRule(e){e.enterAcceptNodeDeclaration&&e.enterAcceptNodeDeclaration(this)}exitRule(e){e.exitAcceptNodeDeclaration&&e.exitAcceptNodeDeclaration(this)}accept(e){return e.visitAcceptNodeDeclaration?e.visitAcceptNodeDeclaration(this):e.visitChildren(this)}},Xi=class extends l{constructor(e,t){super(e,t)}payloadParameterMember(){return this.getRuleContext(0,_l)}VIA(){return this.getToken(n.VIA,0)}nodeParameterMember(){return this.getRuleContext(0,Se)}get ruleIndex(){return n.RULE_acceptParameterPart}enterRule(e){e.enterAcceptParameterPart&&e.enterAcceptParameterPart(this)}exitRule(e){e.exitAcceptParameterPart&&e.exitAcceptParameterPart(this)}accept(e){return e.visitAcceptParameterPart?e.visitAcceptParameterPart(this):e.visitChildren(this)}},_l=class extends l{constructor(e,t){super(e,t)}payloadParameter(){return this.getRuleContext(0,ql)}get ruleIndex(){return n.RULE_payloadParameterMember}enterRule(e){e.enterPayloadParameterMember&&e.enterPayloadParameterMember(this)}exitRule(e){e.exitPayloadParameterMember&&e.exitPayloadParameterMember(this)}accept(e){return e.visitPayloadParameterMember?e.visitPayloadParameterMember(this):e.visitChildren(this)}},ql=class extends l{constructor(e,t){super(e,t)}payloadFeature(){return this.getRuleContext(0,sr)}triggerValuePart(){return this.getRuleContext(0,Gl)}identification(){return this.getRuleContext(0,O)}payloadFeatureSpecializationPart(){return this.getRuleContext(0,oi)}get ruleIndex(){return n.RULE_payloadParameter}enterRule(e){e.enterPayloadParameter&&e.enterPayloadParameter(this)}exitRule(e){e.exitPayloadParameter&&e.exitPayloadParameter(this)}accept(e){return e.visitPayloadParameter?e.visitPayloadParameter(this):e.visitChildren(this)}},Gl=class extends l{constructor(e,t){super(e,t)}triggerFeatureValue(){return this.getRuleContext(0,Kl)}get ruleIndex(){return n.RULE_triggerValuePart}enterRule(e){e.enterTriggerValuePart&&e.enterTriggerValuePart(this)}exitRule(e){e.exitTriggerValuePart&&e.exitTriggerValuePart(this)}accept(e){return e.visitTriggerValuePart?e.visitTriggerValuePart(this):e.visitChildren(this)}},Kl=class extends l{constructor(e,t){super(e,t)}triggerExpression(){return this.getRuleContext(0,jl)}get ruleIndex(){return n.RULE_triggerFeatureValue}enterRule(e){e.enterTriggerFeatureValue&&e.enterTriggerFeatureValue(this)}exitRule(e){e.exitTriggerFeatureValue&&e.exitTriggerFeatureValue(this)}accept(e){return e.visitTriggerFeatureValue?e.visitTriggerFeatureValue(this):e.visitChildren(this)}},jl=class extends l{constructor(e,t){super(e,t)}argumentMember(){return this.getRuleContext(0,Gn)}AT(){return this.getToken(n.AT,0)}AFTER(){return this.getToken(n.AFTER,0)}WHEN(){return this.getToken(n.WHEN,0)}argumentExpressionMember(){return this.getRuleContext(0,Kn)}get ruleIndex(){return n.RULE_triggerExpression}enterRule(e){e.enterTriggerExpression&&e.enterTriggerExpression(this)}exitRule(e){e.exitTriggerExpression&&e.exitTriggerExpression(this)}accept(e){return e.visitTriggerExpression?e.visitTriggerExpression(this):e.visitChildren(this)}},Ql=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}SEND(){return this.getToken(n.SEND,0)}actionBody(){return this.getRuleContext(0,q)}actionNodeUsageDeclaration(){return this.getRuleContext(0,qe)}actionUsageDeclaration(){return this.getRuleContext(0,Nt)}nodeParameterMember(){return this.getRuleContext(0,Se)}emptyParameterMember(){return this.getRuleContext(0,Ue)}senderReceiverPart(){return this.getRuleContext(0,$i)}get ruleIndex(){return n.RULE_sendNode}enterRule(e){e.enterSendNode&&e.enterSendNode(this)}exitRule(e){e.exitSendNode&&e.exitSendNode(this)}accept(e){return e.visitSendNode?e.visitSendNode(this):e.visitChildren(this)}},Ji=class extends l{constructor(e,t){super(e,t)}SEND(){return this.getToken(n.SEND,0)}nodeParameterMember(){return this.getRuleContext(0,Se)}actionNodeUsageDeclaration(){return this.getRuleContext(0,qe)}senderReceiverPart(){return this.getRuleContext(0,$i)}get ruleIndex(){return n.RULE_sendNodeDeclaration}enterRule(e){e.enterSendNodeDeclaration&&e.enterSendNodeDeclaration(this)}exitRule(e){e.exitSendNodeDeclaration&&e.exitSendNodeDeclaration(this)}accept(e){return e.visitSendNodeDeclaration?e.visitSendNodeDeclaration(this):e.visitChildren(this)}},$i=class extends l{constructor(e,t){super(e,t)}VIA(){return this.getToken(n.VIA,0)}nodeParameterMember(e){return e===void 0?this.getRuleContexts(Se):this.getRuleContext(e,Se)}TO(){return this.getToken(n.TO,0)}emptyParameterMember(){return this.getRuleContext(0,Ue)}get ruleIndex(){return n.RULE_senderReceiverPart}enterRule(e){e.enterSenderReceiverPart&&e.enterSenderReceiverPart(this)}exitRule(e){e.exitSenderReceiverPart&&e.exitSenderReceiverPart(this)}accept(e){return e.visitSenderReceiverPart?e.visitSenderReceiverPart(this):e.visitChildren(this)}},Se=class extends l{constructor(e,t){super(e,t)}nodeParameter(){return this.getRuleContext(0,zl)}get ruleIndex(){return n.RULE_nodeParameterMember}enterRule(e){e.enterNodeParameterMember&&e.enterNodeParameterMember(this)}exitRule(e){e.exitNodeParameterMember&&e.exitNodeParameterMember(this)}accept(e){return e.visitNodeParameterMember?e.visitNodeParameterMember(this):e.visitChildren(this)}},zl=class extends l{constructor(e,t){super(e,t)}featureBinding(){return this.getRuleContext(0,Yl)}get ruleIndex(){return n.RULE_nodeParameter}enterRule(e){e.enterNodeParameter&&e.enterNodeParameter(this)}exitRule(e){e.exitNodeParameter&&e.exitNodeParameter(this)}accept(e){return e.visitNodeParameter?e.visitNodeParameter(this):e.visitChildren(this)}},Yl=class extends l{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,P)}get ruleIndex(){return n.RULE_featureBinding}enterRule(e){e.enterFeatureBinding&&e.enterFeatureBinding(this)}exitRule(e){e.exitFeatureBinding&&e.exitFeatureBinding(this)}accept(e){return e.visitFeatureBinding?e.visitFeatureBinding(this):e.visitChildren(this)}},Ue=class extends l{constructor(e,t){super(e,t)}emptyUsage(){return this.getRuleContext(0,wu)}get ruleIndex(){return n.RULE_emptyParameterMember}enterRule(e){e.enterEmptyParameterMember&&e.enterEmptyParameterMember(this)}exitRule(e){e.exitEmptyParameterMember&&e.exitEmptyParameterMember(this)}accept(e){return e.visitEmptyParameterMember?e.visitEmptyParameterMember(this):e.visitChildren(this)}},Wl=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}assignmentNodeDeclaration(){return this.getRuleContext(0,Er)}actionBody(){return this.getRuleContext(0,q)}get ruleIndex(){return n.RULE_assignmentNode}enterRule(e){e.enterAssignmentNode&&e.enterAssignmentNode(this)}exitRule(e){e.exitAssignmentNode&&e.exitAssignmentNode(this)}accept(e){return e.visitAssignmentNode?e.visitAssignmentNode(this):e.visitChildren(this)}},Er=class extends l{constructor(e,t){super(e,t)}ASSIGN(){return this.getToken(n.ASSIGN,0)}assignmentTargetMember(){return this.getRuleContext(0,Xl)}featureChainMember(){return this.getRuleContext(0,gt)}COLON_EQ(){return this.getToken(n.COLON_EQ,0)}nodeParameterMember(){return this.getRuleContext(0,Se)}actionNodeUsageDeclaration(){return this.getRuleContext(0,qe)}get ruleIndex(){return n.RULE_assignmentNodeDeclaration}enterRule(e){e.enterAssignmentNodeDeclaration&&e.enterAssignmentNodeDeclaration(this)}exitRule(e){e.exitAssignmentNodeDeclaration&&e.exitAssignmentNodeDeclaration(this)}accept(e){return e.visitAssignmentNodeDeclaration?e.visitAssignmentNodeDeclaration(this):e.visitChildren(this)}},Xl=class extends l{constructor(e,t){super(e,t)}assignmentTargetParameter(){return this.getRuleContext(0,Jl)}get ruleIndex(){return n.RULE_assignmentTargetMember}enterRule(e){e.enterAssignmentTargetMember&&e.enterAssignmentTargetMember(this)}exitRule(e){e.exitAssignmentTargetMember&&e.exitAssignmentTargetMember(this)}accept(e){return e.visitAssignmentTargetMember?e.visitAssignmentTargetMember(this):e.visitChildren(this)}},Jl=class extends l{constructor(e,t){super(e,t)}assignmentTargetBinding(){return this.getRuleContext(0,$l)}DOT(){return this.getToken(n.DOT,0)}get ruleIndex(){return n.RULE_assignmentTargetParameter}enterRule(e){e.enterAssignmentTargetParameter&&e.enterAssignmentTargetParameter(this)}exitRule(e){e.exitAssignmentTargetParameter&&e.exitAssignmentTargetParameter(this)}accept(e){return e.visitAssignmentTargetParameter?e.visitAssignmentTargetParameter(this):e.visitChildren(this)}},$l=class extends l{constructor(e,t){super(e,t)}nonFeatureChainPrimaryExpression(){return this.getRuleContext(0,Du)}get ruleIndex(){return n.RULE_assignmentTargetBinding}enterRule(e){e.enterAssignmentTargetBinding&&e.enterAssignmentTargetBinding(this)}exitRule(e){e.exitAssignmentTargetBinding&&e.exitAssignmentTargetBinding(this)}accept(e){return e.visitAssignmentTargetBinding?e.visitAssignmentTargetBinding(this):e.visitChildren(this)}},Zl=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}TERMINATE(){return this.getToken(n.TERMINATE,0)}actionBody(){return this.getRuleContext(0,q)}actionNodeUsageDeclaration(){return this.getRuleContext(0,qe)}nodeParameterMember(){return this.getRuleContext(0,Se)}get ruleIndex(){return n.RULE_terminateNode}enterRule(e){e.enterTerminateNode&&e.enterTerminateNode(this)}exitRule(e){e.exitTerminateNode&&e.exitTerminateNode(this)}accept(e){return e.visitTerminateNode?e.visitTerminateNode(this):e.visitChildren(this)}},Zi=class extends l{constructor(e,t){super(e,t)}actionNodePrefix(){return this.getRuleContext(0,gr)}IF(){return this.getToken(n.IF,0)}expressionParameterMember(){return this.getRuleContext(0,yr)}actionBodyParameterMember(e){return e===void 0?this.getRuleContexts(It):this.getRuleContext(e,It)}ELSE(){return this.getToken(n.ELSE,0)}ifNodeParameterMember(){return this.getRuleContext(0,to)}get ruleIndex(){return n.RULE_ifNode}enterRule(e){e.enterIfNode&&e.enterIfNode(this)}exitRule(e){e.exitIfNode&&e.exitIfNode(this)}accept(e){return e.visitIfNode?e.visitIfNode(this):e.visitChildren(this)}},yr=class extends l{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,P)}get ruleIndex(){return n.RULE_expressionParameterMember}enterRule(e){e.enterExpressionParameterMember&&e.enterExpressionParameterMember(this)}exitRule(e){e.exitExpressionParameterMember&&e.exitExpressionParameterMember(this)}accept(e){return e.visitExpressionParameterMember?e.visitExpressionParameterMember(this):e.visitChildren(this)}},It=class extends l{constructor(e,t){super(e,t)}actionBodyParameter(){return this.getRuleContext(0,eo)}get ruleIndex(){return n.RULE_actionBodyParameterMember}enterRule(e){e.enterActionBodyParameterMember&&e.enterActionBodyParameterMember(this)}exitRule(e){e.exitActionBodyParameterMember&&e.exitActionBodyParameterMember(this)}accept(e){return e.visitActionBodyParameterMember?e.visitActionBodyParameterMember(this):e.visitChildren(this)}},eo=class extends l{constructor(e,t){super(e,t)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}ACTION(){return this.getToken(n.ACTION,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(J):this.getRuleContext(e,J)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_actionBodyParameter}enterRule(e){e.enterActionBodyParameter&&e.enterActionBodyParameter(this)}exitRule(e){e.exitActionBodyParameter&&e.exitActionBodyParameter(this)}accept(e){return e.visitActionBodyParameter?e.visitActionBodyParameter(this):e.visitChildren(this)}},to=class extends l{constructor(e,t){super(e,t)}ifNode(){return this.getRuleContext(0,Zi)}get ruleIndex(){return n.RULE_ifNodeParameterMember}enterRule(e){e.enterIfNodeParameterMember&&e.enterIfNodeParameterMember(this)}exitRule(e){e.exitIfNodeParameterMember&&e.exitIfNodeParameterMember(this)}accept(e){return e.visitIfNodeParameterMember?e.visitIfNodeParameterMember(this):e.visitChildren(this)}},ro=class extends l{constructor(e,t){super(e,t)}actionNodePrefix(){return this.getRuleContext(0,gr)}actionBodyParameterMember(){return this.getRuleContext(0,It)}WHILE(){return this.getToken(n.WHILE,0)}expressionParameterMember(e){return e===void 0?this.getRuleContexts(yr):this.getRuleContext(e,yr)}LOOP(){return this.getToken(n.LOOP,0)}emptyParameterMember(){return this.getRuleContext(0,Ue)}UNTIL(){return this.getToken(n.UNTIL,0)}SEMI(){return this.getToken(n.SEMI,0)}get ruleIndex(){return n.RULE_whileLoopNode}enterRule(e){e.enterWhileLoopNode&&e.enterWhileLoopNode(this)}exitRule(e){e.exitWhileLoopNode&&e.exitWhileLoopNode(this)}accept(e){return e.visitWhileLoopNode?e.visitWhileLoopNode(this):e.visitChildren(this)}},io=class extends l{constructor(e,t){super(e,t)}actionNodePrefix(){return this.getRuleContext(0,gr)}FOR(){return this.getToken(n.FOR,0)}forVariableDeclarationMember(){return this.getRuleContext(0,no)}IN(){return this.getToken(n.IN,0)}nodeParameterMember(){return this.getRuleContext(0,Se)}actionBodyParameterMember(){return this.getRuleContext(0,It)}get ruleIndex(){return n.RULE_forLoopNode}enterRule(e){e.enterForLoopNode&&e.enterForLoopNode(this)}exitRule(e){e.exitForLoopNode&&e.exitForLoopNode(this)}accept(e){return e.visitForLoopNode?e.visitForLoopNode(this):e.visitChildren(this)}},no=class extends l{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_forVariableDeclarationMember}enterRule(e){e.enterForVariableDeclarationMember&&e.enterForVariableDeclarationMember(this)}exitRule(e){e.exitForVariableDeclarationMember&&e.exitForVariableDeclarationMember(this)}accept(e){return e.visitForVariableDeclarationMember?e.visitForVariableDeclarationMember(this):e.visitChildren(this)}},T1=class extends l{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_forVariableDeclaration}enterRule(e){e.enterForVariableDeclaration&&e.enterForVariableDeclaration(this)}exitRule(e){e.exitForVariableDeclaration&&e.exitForVariableDeclaration(this)}accept(e){return e.visitForVariableDeclaration?e.visitForVariableDeclaration(this):e.visitChildren(this)}},so=class extends l{constructor(e,t){super(e,t)}usageBody(){return this.getRuleContext(0,be)}targetSuccession(){return this.getRuleContext(0,ao)}guardedTargetSuccession(){return this.getRuleContext(0,en)}defaultTargetSuccession(){return this.getRuleContext(0,lo)}get ruleIndex(){return n.RULE_actionTargetSuccession}enterRule(e){e.enterActionTargetSuccession&&e.enterActionTargetSuccession(this)}exitRule(e){e.exitActionTargetSuccession&&e.exitActionTargetSuccession(this)}accept(e){return e.visitActionTargetSuccession?e.visitActionTargetSuccession(this):e.visitChildren(this)}},ao=class extends l{constructor(e,t){super(e,t)}sourceEndMember(){return this.getRuleContext(0,Oi)}THEN(){return this.getToken(n.THEN,0)}connectorEndMember(){return this.getRuleContext(0,V)}get ruleIndex(){return n.RULE_targetSuccession}enterRule(e){e.enterTargetSuccession&&e.enterTargetSuccession(this)}exitRule(e){e.exitTargetSuccession&&e.exitTargetSuccession(this)}accept(e){return e.visitTargetSuccession?e.visitTargetSuccession(this):e.visitChildren(this)}},en=class extends l{constructor(e,t){super(e,t)}guardExpressionMember(){return this.getRuleContext(0,wt)}THEN(){return this.getToken(n.THEN,0)}transitionSuccessionMember(){return this.getRuleContext(0,Ge)}get ruleIndex(){return n.RULE_guardedTargetSuccession}enterRule(e){e.enterGuardedTargetSuccession&&e.enterGuardedTargetSuccession(this)}exitRule(e){e.exitGuardedTargetSuccession&&e.exitGuardedTargetSuccession(this)}accept(e){return e.visitGuardedTargetSuccession?e.visitGuardedTargetSuccession(this):e.visitChildren(this)}},lo=class extends l{constructor(e,t){super(e,t)}ELSE(){return this.getToken(n.ELSE,0)}transitionSuccessionMember(){return this.getRuleContext(0,Ge)}get ruleIndex(){return n.RULE_defaultTargetSuccession}enterRule(e){e.enterDefaultTargetSuccession&&e.enterDefaultTargetSuccession(this)}exitRule(e){e.exitDefaultTargetSuccession&&e.exitDefaultTargetSuccession(this)}accept(e){return e.visitDefaultTargetSuccession?e.visitDefaultTargetSuccession(this):e.visitChildren(this)}},oo=class extends l{constructor(e,t){super(e,t)}FIRST(){return this.getToken(n.FIRST,0)}featureChainMember(){return this.getRuleContext(0,gt)}guardExpressionMember(){return this.getRuleContext(0,wt)}THEN(){return this.getToken(n.THEN,0)}transitionSuccessionMember(){return this.getRuleContext(0,Ge)}usageBody(){return this.getRuleContext(0,be)}SUCCESSION(){return this.getToken(n.SUCCESSION,0)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_guardedSuccession}enterRule(e){e.enterGuardedSuccession&&e.enterGuardedSuccession(this)}exitRule(e){e.exitGuardedSuccession&&e.exitGuardedSuccession(this)}accept(e){return e.visitGuardedSuccession?e.visitGuardedSuccession(this):e.visitChildren(this)}},uo=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}STATE(){return this.getToken(n.STATE,0)}DEF(){return this.getToken(n.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,W)}stateDefBody(){return this.getRuleContext(0,co)}get ruleIndex(){return n.RULE_stateDefinition}enterRule(e){e.enterStateDefinition&&e.enterStateDefinition(this)}exitRule(e){e.exitStateDefinition&&e.exitStateDefinition(this)}accept(e){return e.visitStateDefinition?e.visitStateDefinition(this):e.visitChildren(this)}},co=class extends l{constructor(e,t){super(e,t)}SEMI(){return this.getToken(n.SEMI,0)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}PARALLEL(){return this.getToken(n.PARALLEL,0)}stateBodyItem(e){return e===void 0?this.getRuleContexts(Ot):this.getRuleContext(e,Ot)}get ruleIndex(){return n.RULE_stateDefBody}enterRule(e){e.enterStateDefBody&&e.enterStateDefBody(this)}exitRule(e){e.exitStateDefBody&&e.exitStateDefBody(this)}accept(e){return e.visitStateDefBody?e.visitStateDefBody(this):e.visitChildren(this)}},Ot=class extends l{constructor(e,t){super(e,t)}nonBehaviorBodyItem(){return this.getRuleContext(0,Yi)}behaviorUsageMember(){return this.getRuleContext(0,vi)}sourceSuccessionMember(){return this.getRuleContext(0,nt)}targetTransitionUsageMember(e){return e===void 0?this.getRuleContexts(rn):this.getRuleContext(e,rn)}transitionUsageMember(){return this.getRuleContext(0,go)}entryActionMember(){return this.getRuleContext(0,ho)}entryTransitionMember(e){return e===void 0?this.getRuleContexts(tn):this.getRuleContext(e,tn)}doActionMember(){return this.getRuleContext(0,po)}exitActionMember(){return this.getRuleContext(0,xo)}get ruleIndex(){return n.RULE_stateBodyItem}enterRule(e){e.enterStateBodyItem&&e.enterStateBodyItem(this)}exitRule(e){e.exitStateBodyItem&&e.exitStateBodyItem(this)}accept(e){return e.visitStateBodyItem?e.visitStateBodyItem(this):e.visitChildren(this)}},ho=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}ENTRY(){return this.getToken(n.ENTRY,0)}stateActionUsage(){return this.getRuleContext(0,vr)}get ruleIndex(){return n.RULE_entryActionMember}enterRule(e){e.enterEntryActionMember&&e.enterEntryActionMember(this)}exitRule(e){e.exitEntryActionMember&&e.exitEntryActionMember(this)}accept(e){return e.visitEntryActionMember?e.visitEntryActionMember(this):e.visitChildren(this)}},po=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}DO(){return this.getToken(n.DO,0)}stateActionUsage(){return this.getRuleContext(0,vr)}get ruleIndex(){return n.RULE_doActionMember}enterRule(e){e.enterDoActionMember&&e.enterDoActionMember(this)}exitRule(e){e.exitDoActionMember&&e.exitDoActionMember(this)}accept(e){return e.visitDoActionMember?e.visitDoActionMember(this):e.visitChildren(this)}},xo=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}EXIT(){return this.getToken(n.EXIT,0)}stateActionUsage(){return this.getRuleContext(0,vr)}get ruleIndex(){return n.RULE_exitActionMember}enterRule(e){e.enterExitActionMember&&e.enterExitActionMember(this)}exitRule(e){e.exitExitActionMember&&e.exitExitActionMember(this)}accept(e){return e.visitExitActionMember?e.visitExitActionMember(this):e.visitChildren(this)}},tn=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}SEMI(){return this.getToken(n.SEMI,0)}guardedTargetSuccession(){return this.getRuleContext(0,en)}THEN(){return this.getToken(n.THEN,0)}transitionSuccessionMember(){return this.getRuleContext(0,Ge)}get ruleIndex(){return n.RULE_entryTransitionMember}enterRule(e){e.enterEntryTransitionMember&&e.enterEntryTransitionMember(this)}exitRule(e){e.exitEntryTransitionMember&&e.exitEntryTransitionMember(this)}accept(e){return e.visitEntryTransitionMember?e.visitEntryTransitionMember(this):e.visitChildren(this)}},vr=class extends l{constructor(e,t){super(e,t)}emptyActionUsage(){return this.getRuleContext(0,Cn)}SEMI(){return this.getToken(n.SEMI,0)}statePerformActionUsage(){return this.getRuleContext(0,bo)}stateAcceptActionUsage(){return this.getRuleContext(0,Ro)}stateSendActionUsage(){return this.getRuleContext(0,fo)}stateAssignmentActionUsage(){return this.getRuleContext(0,mo)}get ruleIndex(){return n.RULE_stateActionUsage}enterRule(e){e.enterStateActionUsage&&e.enterStateActionUsage(this)}exitRule(e){e.exitStateActionUsage&&e.exitStateActionUsage(this)}accept(e){return e.visitStateActionUsage?e.visitStateActionUsage(this):e.visitChildren(this)}},bo=class extends l{constructor(e,t){super(e,t)}performActionUsageDeclaration(){return this.getRuleContext(0,mr)}actionBody(){return this.getRuleContext(0,q)}get ruleIndex(){return n.RULE_statePerformActionUsage}enterRule(e){e.enterStatePerformActionUsage&&e.enterStatePerformActionUsage(this)}exitRule(e){e.exitStatePerformActionUsage&&e.exitStatePerformActionUsage(this)}accept(e){return e.visitStatePerformActionUsage?e.visitStatePerformActionUsage(this):e.visitChildren(this)}},Ro=class extends l{constructor(e,t){super(e,t)}acceptNodeDeclaration(){return this.getRuleContext(0,Cr)}actionBody(){return this.getRuleContext(0,q)}get ruleIndex(){return n.RULE_stateAcceptActionUsage}enterRule(e){e.enterStateAcceptActionUsage&&e.enterStateAcceptActionUsage(this)}exitRule(e){e.exitStateAcceptActionUsage&&e.exitStateAcceptActionUsage(this)}accept(e){return e.visitStateAcceptActionUsage?e.visitStateAcceptActionUsage(this):e.visitChildren(this)}},fo=class extends l{constructor(e,t){super(e,t)}sendNodeDeclaration(){return this.getRuleContext(0,Ji)}actionBody(){return this.getRuleContext(0,q)}get ruleIndex(){return n.RULE_stateSendActionUsage}enterRule(e){e.enterStateSendActionUsage&&e.enterStateSendActionUsage(this)}exitRule(e){e.exitStateSendActionUsage&&e.exitStateSendActionUsage(this)}accept(e){return e.visitStateSendActionUsage?e.visitStateSendActionUsage(this):e.visitChildren(this)}},mo=class extends l{constructor(e,t){super(e,t)}assignmentNodeDeclaration(){return this.getRuleContext(0,Er)}actionBody(){return this.getRuleContext(0,q)}get ruleIndex(){return n.RULE_stateAssignmentActionUsage}enterRule(e){e.enterStateAssignmentActionUsage&&e.enterStateAssignmentActionUsage(this)}exitRule(e){e.exitStateAssignmentActionUsage&&e.exitStateAssignmentActionUsage(this)}accept(e){return e.visitStateAssignmentActionUsage?e.visitStateAssignmentActionUsage(this):e.visitChildren(this)}},go=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}transitionUsage(){return this.getRuleContext(0,yo)}get ruleIndex(){return n.RULE_transitionUsageMember}enterRule(e){e.enterTransitionUsageMember&&e.enterTransitionUsageMember(this)}exitRule(e){e.exitTransitionUsageMember&&e.exitTransitionUsageMember(this)}accept(e){return e.visitTransitionUsageMember?e.visitTransitionUsageMember(this):e.visitChildren(this)}},rn=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}targetTransitionUsage(){return this.getRuleContext(0,vo)}get ruleIndex(){return n.RULE_targetTransitionUsageMember}enterRule(e){e.enterTargetTransitionUsageMember&&e.enterTargetTransitionUsageMember(this)}exitRule(e){e.exitTargetTransitionUsageMember&&e.exitTargetTransitionUsageMember(this)}accept(e){return e.visitTargetTransitionUsageMember?e.visitTargetTransitionUsageMember(this):e.visitChildren(this)}},Co=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}STATE(){return this.getToken(n.STATE,0)}actionUsageDeclaration(){return this.getRuleContext(0,Nt)}stateUsageBody(){return this.getRuleContext(0,nn)}get ruleIndex(){return n.RULE_stateUsage}enterRule(e){e.enterStateUsage&&e.enterStateUsage(this)}exitRule(e){e.exitStateUsage&&e.exitStateUsage(this)}accept(e){return e.visitStateUsage?e.visitStateUsage(this):e.visitChildren(this)}},nn=class extends l{constructor(e,t){super(e,t)}SEMI(){return this.getToken(n.SEMI,0)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}PARALLEL(){return this.getToken(n.PARALLEL,0)}stateBodyItem(e){return e===void 0?this.getRuleContexts(Ot):this.getRuleContext(e,Ot)}get ruleIndex(){return n.RULE_stateUsageBody}enterRule(e){e.enterStateUsageBody&&e.enterStateUsageBody(this)}exitRule(e){e.exitStateUsageBody&&e.exitStateUsageBody(this)}accept(e){return e.visitStateUsageBody?e.visitStateUsageBody(this):e.visitChildren(this)}},Eo=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}EXHIBIT(){return this.getToken(n.EXHIBIT,0)}stateUsageBody(){return this.getRuleContext(0,nn)}ownedReferenceSubsetting(){return this.getRuleContext(0,z)}STATE(){return this.getToken(n.STATE,0)}valuePart(){return this.getRuleContext(0,D)}featureSpecializationPart(){return this.getRuleContext(0,Z)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_exhibitStateUsage}enterRule(e){e.enterExhibitStateUsage&&e.enterExhibitStateUsage(this)}exitRule(e){e.exitExhibitStateUsage&&e.exitExhibitStateUsage(this)}accept(e){return e.visitExhibitStateUsage?e.visitExhibitStateUsage(this):e.visitChildren(this)}},yo=class extends l{constructor(e,t){super(e,t)}TRANSITION(){return this.getToken(n.TRANSITION,0)}featureChainMember(){return this.getRuleContext(0,gt)}emptyParameterMember(e){return e===void 0?this.getRuleContexts(Ue):this.getRuleContext(e,Ue)}THEN(){return this.getToken(n.THEN,0)}transitionSuccessionMember(){return this.getRuleContext(0,Ge)}actionBody(){return this.getRuleContext(0,q)}FIRST(){return this.getToken(n.FIRST,0)}triggerActionMember(){return this.getRuleContext(0,sn)}guardExpressionMember(){return this.getRuleContext(0,wt)}effectBehaviorMember(){return this.getRuleContext(0,an)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_transitionUsage}enterRule(e){e.enterTransitionUsage&&e.enterTransitionUsage(this)}exitRule(e){e.exitTransitionUsage&&e.exitTransitionUsage(this)}accept(e){return e.visitTransitionUsage?e.visitTransitionUsage(this):e.visitChildren(this)}},vo=class extends l{constructor(e,t){super(e,t)}emptyParameterMember(e){return e===void 0?this.getRuleContexts(Ue):this.getRuleContext(e,Ue)}THEN(){return this.getToken(n.THEN,0)}transitionSuccessionMember(){return this.getRuleContext(0,Ge)}actionBody(){return this.getRuleContext(0,q)}TRANSITION(){return this.getToken(n.TRANSITION,0)}triggerActionMember(){return this.getRuleContext(0,sn)}guardExpressionMember(){return this.getRuleContext(0,wt)}effectBehaviorMember(){return this.getRuleContext(0,an)}get ruleIndex(){return n.RULE_targetTransitionUsage}enterRule(e){e.enterTargetTransitionUsage&&e.enterTargetTransitionUsage(this)}exitRule(e){e.exitTargetTransitionUsage&&e.exitTargetTransitionUsage(this)}accept(e){return e.visitTargetTransitionUsage?e.visitTargetTransitionUsage(this):e.visitChildren(this)}},sn=class extends l{constructor(e,t){super(e,t)}ACCEPT(){return this.getToken(n.ACCEPT,0)}triggerAction(){return this.getRuleContext(0,Lo)}get ruleIndex(){return n.RULE_triggerActionMember}enterRule(e){e.enterTriggerActionMember&&e.enterTriggerActionMember(this)}exitRule(e){e.exitTriggerActionMember&&e.exitTriggerActionMember(this)}accept(e){return e.visitTriggerActionMember?e.visitTriggerActionMember(this):e.visitChildren(this)}},Lo=class extends l{constructor(e,t){super(e,t)}acceptParameterPart(){return this.getRuleContext(0,Xi)}get ruleIndex(){return n.RULE_triggerAction}enterRule(e){e.enterTriggerAction&&e.enterTriggerAction(this)}exitRule(e){e.exitTriggerAction&&e.exitTriggerAction(this)}accept(e){return e.visitTriggerAction?e.visitTriggerAction(this):e.visitChildren(this)}},wt=class extends l{constructor(e,t){super(e,t)}IF(){return this.getToken(n.IF,0)}ownedExpression(){return this.getRuleContext(0,P)}get ruleIndex(){return n.RULE_guardExpressionMember}enterRule(e){e.enterGuardExpressionMember&&e.enterGuardExpressionMember(this)}exitRule(e){e.exitGuardExpressionMember&&e.exitGuardExpressionMember(this)}accept(e){return e.visitGuardExpressionMember?e.visitGuardExpressionMember(this):e.visitChildren(this)}},an=class extends l{constructor(e,t){super(e,t)}DO(){return this.getToken(n.DO,0)}effectBehaviorUsage(){return this.getRuleContext(0,So)}get ruleIndex(){return n.RULE_effectBehaviorMember}enterRule(e){e.enterEffectBehaviorMember&&e.enterEffectBehaviorMember(this)}exitRule(e){e.exitEffectBehaviorMember&&e.exitEffectBehaviorMember(this)}accept(e){return e.visitEffectBehaviorMember?e.visitEffectBehaviorMember(this):e.visitChildren(this)}},So=class extends l{constructor(e,t){super(e,t)}emptyActionUsage(){return this.getRuleContext(0,Cn)}transitionPerformActionUsage(){return this.getRuleContext(0,Po)}transitionAcceptActionUsage(){return this.getRuleContext(0,To)}transitionSendActionUsage(){return this.getRuleContext(0,Ao)}transitionAssignmentActionUsage(){return this.getRuleContext(0,Mo)}get ruleIndex(){return n.RULE_effectBehaviorUsage}enterRule(e){e.enterEffectBehaviorUsage&&e.enterEffectBehaviorUsage(this)}exitRule(e){e.exitEffectBehaviorUsage&&e.exitEffectBehaviorUsage(this)}accept(e){return e.visitEffectBehaviorUsage?e.visitEffectBehaviorUsage(this):e.visitChildren(this)}},Po=class extends l{constructor(e,t){super(e,t)}performActionUsageDeclaration(){return this.getRuleContext(0,mr)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(J):this.getRuleContext(e,J)}get ruleIndex(){return n.RULE_transitionPerformActionUsage}enterRule(e){e.enterTransitionPerformActionUsage&&e.enterTransitionPerformActionUsage(this)}exitRule(e){e.exitTransitionPerformActionUsage&&e.exitTransitionPerformActionUsage(this)}accept(e){return e.visitTransitionPerformActionUsage?e.visitTransitionPerformActionUsage(this):e.visitChildren(this)}},To=class extends l{constructor(e,t){super(e,t)}acceptNodeDeclaration(){return this.getRuleContext(0,Cr)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(J):this.getRuleContext(e,J)}get ruleIndex(){return n.RULE_transitionAcceptActionUsage}enterRule(e){e.enterTransitionAcceptActionUsage&&e.enterTransitionAcceptActionUsage(this)}exitRule(e){e.exitTransitionAcceptActionUsage&&e.exitTransitionAcceptActionUsage(this)}accept(e){return e.visitTransitionAcceptActionUsage?e.visitTransitionAcceptActionUsage(this):e.visitChildren(this)}},Ao=class extends l{constructor(e,t){super(e,t)}sendNodeDeclaration(){return this.getRuleContext(0,Ji)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(J):this.getRuleContext(e,J)}get ruleIndex(){return n.RULE_transitionSendActionUsage}enterRule(e){e.enterTransitionSendActionUsage&&e.enterTransitionSendActionUsage(this)}exitRule(e){e.exitTransitionSendActionUsage&&e.exitTransitionSendActionUsage(this)}accept(e){return e.visitTransitionSendActionUsage?e.visitTransitionSendActionUsage(this):e.visitChildren(this)}},Mo=class extends l{constructor(e,t){super(e,t)}assignmentNodeDeclaration(){return this.getRuleContext(0,Er)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(J):this.getRuleContext(e,J)}get ruleIndex(){return n.RULE_transitionAssignmentActionUsage}enterRule(e){e.enterTransitionAssignmentActionUsage&&e.enterTransitionAssignmentActionUsage(this)}exitRule(e){e.exitTransitionAssignmentActionUsage&&e.exitTransitionAssignmentActionUsage(this)}accept(e){return e.visitTransitionAssignmentActionUsage?e.visitTransitionAssignmentActionUsage(this):e.visitChildren(this)}},Ge=class extends l{constructor(e,t){super(e,t)}transitionSuccession(){return this.getRuleContext(0,No)}get ruleIndex(){return n.RULE_transitionSuccessionMember}enterRule(e){e.enterTransitionSuccessionMember&&e.enterTransitionSuccessionMember(this)}exitRule(e){e.exitTransitionSuccessionMember&&e.exitTransitionSuccessionMember(this)}accept(e){return e.visitTransitionSuccessionMember?e.visitTransitionSuccessionMember(this):e.visitChildren(this)}},No=class extends l{constructor(e,t){super(e,t)}emptyEndMember(){return this.getRuleContext(0,Uo)}connectorEndMember(){return this.getRuleContext(0,V)}get ruleIndex(){return n.RULE_transitionSuccession}enterRule(e){e.enterTransitionSuccession&&e.enterTransitionSuccession(this)}exitRule(e){e.exitTransitionSuccession&&e.exitTransitionSuccession(this)}accept(e){return e.visitTransitionSuccession?e.visitTransitionSuccession(this):e.visitChildren(this)}},Uo=class extends l{constructor(e,t){super(e,t)}emptyFeature(){return this.getRuleContext(0,En)}get ruleIndex(){return n.RULE_emptyEndMember}enterRule(e){e.enterEmptyEndMember&&e.enterEmptyEndMember(this)}exitRule(e){e.exitEmptyEndMember&&e.exitEmptyEndMember(this)}accept(e){return e.visitEmptyEndMember?e.visitEmptyEndMember(this):e.visitChildren(this)}},Io=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}CALC(){return this.getToken(n.CALC,0)}DEF(){return this.getToken(n.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,W)}calculationBody(){return this.getRuleContext(0,Ie)}get ruleIndex(){return n.RULE_calculationDefinition}enterRule(e){e.enterCalculationDefinition&&e.enterCalculationDefinition(this)}exitRule(e){e.exitCalculationDefinition&&e.exitCalculationDefinition(this)}accept(e){return e.visitCalculationDefinition?e.visitCalculationDefinition(this):e.visitChildren(this)}},Oo=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}CALC(){return this.getToken(n.CALC,0)}actionUsageDeclaration(){return this.getRuleContext(0,Nt)}calculationBody(){return this.getRuleContext(0,Ie)}get ruleIndex(){return n.RULE_calculationUsage}enterRule(e){e.enterCalculationUsage&&e.enterCalculationUsage(this)}exitRule(e){e.exitCalculationUsage&&e.exitCalculationUsage(this)}accept(e){return e.visitCalculationUsage?e.visitCalculationUsage(this):e.visitChildren(this)}},Ie=class extends l{constructor(e,t){super(e,t)}SEMI(){return this.getToken(n.SEMI,0)}LBRACE(){return this.getToken(n.LBRACE,0)}calculationBodyPart(){return this.getRuleContext(0,wo)}RBRACE(){return this.getToken(n.RBRACE,0)}get ruleIndex(){return n.RULE_calculationBody}enterRule(e){e.enterCalculationBody&&e.enterCalculationBody(this)}exitRule(e){e.exitCalculationBody&&e.exitCalculationBody(this)}accept(e){return e.visitCalculationBody?e.visitCalculationBody(this):e.visitChildren(this)}},wo=class extends l{constructor(e,t){super(e,t)}calculationBodyItem(e){return e===void 0?this.getRuleContexts(ln):this.getRuleContext(e,ln)}resultExpressionMember(){return this.getRuleContext(0,nr)}get ruleIndex(){return n.RULE_calculationBodyPart}enterRule(e){e.enterCalculationBodyPart&&e.enterCalculationBodyPart(this)}exitRule(e){e.exitCalculationBodyPart&&e.exitCalculationBodyPart(this)}accept(e){return e.visitCalculationBodyPart?e.visitCalculationBodyPart(this):e.visitChildren(this)}},ln=class extends l{constructor(e,t){super(e,t)}actionBodyItem(){return this.getRuleContext(0,J)}returnParameterMember(){return this.getRuleContext(0,on)}get ruleIndex(){return n.RULE_calculationBodyItem}enterRule(e){e.enterCalculationBodyItem&&e.enterCalculationBodyItem(this)}exitRule(e){e.exitCalculationBodyItem&&e.exitCalculationBodyItem(this)}accept(e){return e.visitCalculationBodyItem?e.visitCalculationBodyItem(this):e.visitChildren(this)}},on=class extends l{constructor(e,t){super(e,t)}RETURN(){return this.getToken(n.RETURN,0)}usageElement(){return this.getRuleContext(0,Ci)}memberPrefix(){return this.getRuleContext(0,T)}get ruleIndex(){return n.RULE_returnParameterMember}enterRule(e){e.enterReturnParameterMember&&e.enterReturnParameterMember(this)}exitRule(e){e.exitReturnParameterMember&&e.exitReturnParameterMember(this)}accept(e){return e.visitReturnParameterMember?e.visitReturnParameterMember(this):e.visitChildren(this)}},ko=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}CONSTRAINT(){return this.getToken(n.CONSTRAINT,0)}DEF(){return this.getToken(n.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,W)}calculationBody(){return this.getRuleContext(0,Ie)}get ruleIndex(){return n.RULE_constraintDefinition}enterRule(e){e.enterConstraintDefinition&&e.enterConstraintDefinition(this)}exitRule(e){e.exitConstraintDefinition&&e.exitConstraintDefinition(this)}accept(e){return e.visitConstraintDefinition?e.visitConstraintDefinition(this):e.visitChildren(this)}},Do=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}CONSTRAINT(){return this.getToken(n.CONSTRAINT,0)}constraintUsageDeclaration(){return this.getRuleContext(0,ne)}calculationBody(){return this.getRuleContext(0,Ie)}get ruleIndex(){return n.RULE_constraintUsage}enterRule(e){e.enterConstraintUsage&&e.enterConstraintUsage(this)}exitRule(e){e.exitConstraintUsage&&e.exitConstraintUsage(this)}accept(e){return e.visitConstraintUsage?e.visitConstraintUsage(this):e.visitChildren(this)}},Fo=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}ASSERT(){return this.getToken(n.ASSERT,0)}calculationBody(){return this.getRuleContext(0,Ie)}ownedReferenceSubsetting(){return this.getRuleContext(0,z)}CONSTRAINT(){return this.getToken(n.CONSTRAINT,0)}constraintUsageDeclaration(){return this.getRuleContext(0,ne)}NOT(){return this.getToken(n.NOT,0)}featureSpecializationPart(){return this.getRuleContext(0,Z)}get ruleIndex(){return n.RULE_assertConstraintUsage}enterRule(e){e.enterAssertConstraintUsage&&e.enterAssertConstraintUsage(this)}exitRule(e){e.exitAssertConstraintUsage&&e.exitAssertConstraintUsage(this)}accept(e){return e.visitAssertConstraintUsage?e.visitAssertConstraintUsage(this):e.visitChildren(this)}},ne=class extends l{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,U)}valuePart(){return this.getRuleContext(0,D)}get ruleIndex(){return n.RULE_constraintUsageDeclaration}enterRule(e){e.enterConstraintUsageDeclaration&&e.enterConstraintUsageDeclaration(this)}exitRule(e){e.exitConstraintUsageDeclaration&&e.exitConstraintUsageDeclaration(this)}accept(e){return e.visitConstraintUsageDeclaration?e.visitConstraintUsageDeclaration(this):e.visitChildren(this)}},Ho=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}REQUIREMENT(){return this.getToken(n.REQUIREMENT,0)}DEF(){return this.getToken(n.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,W)}requirementBody(){return this.getRuleContext(0,ue)}get ruleIndex(){return n.RULE_requirementDefinition}enterRule(e){e.enterRequirementDefinition&&e.enterRequirementDefinition(this)}exitRule(e){e.exitRequirementDefinition&&e.exitRequirementDefinition(this)}accept(e){return e.visitRequirementDefinition?e.visitRequirementDefinition(this):e.visitChildren(this)}},ue=class extends l{constructor(e,t){super(e,t)}SEMI(){return this.getToken(n.SEMI,0)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}requirementBodyItem(e){return e===void 0?this.getRuleContexts(un):this.getRuleContext(e,un)}get ruleIndex(){return n.RULE_requirementBody}enterRule(e){e.enterRequirementBody&&e.enterRequirementBody(this)}exitRule(e){e.exitRequirementBody&&e.exitRequirementBody(this)}accept(e){return e.visitRequirementBody?e.visitRequirementBody(this):e.visitChildren(this)}},un=class extends l{constructor(e,t){super(e,t)}definitionBodyItem(){return this.getRuleContext(0,rt)}subjectMember(){return this.getRuleContext(0,cn)}requirementConstraintMember(){return this.getRuleContext(0,Vo)}framedConcernMember(){return this.getRuleContext(0,Go)}requirementVerificationMember(){return this.getRuleContext(0,cu)}actorMember(){return this.getRuleContext(0,hn)}stakeholderMember(){return this.getRuleContext(0,Qo)}get ruleIndex(){return n.RULE_requirementBodyItem}enterRule(e){e.enterRequirementBodyItem&&e.enterRequirementBodyItem(this)}exitRule(e){e.exitRequirementBodyItem&&e.exitRequirementBodyItem(this)}accept(e){return e.visitRequirementBodyItem?e.visitRequirementBodyItem(this):e.visitChildren(this)}},cn=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}subjectUsage(){return this.getRuleContext(0,Bo)}get ruleIndex(){return n.RULE_subjectMember}enterRule(e){e.enterSubjectMember&&e.enterSubjectMember(this)}exitRule(e){e.exitSubjectMember&&e.exitSubjectMember(this)}accept(e){return e.visitSubjectMember?e.visitSubjectMember(this):e.visitChildren(this)}},Bo=class extends l{constructor(e,t){super(e,t)}SUBJECT(){return this.getToken(n.SUBJECT,0)}usage(){return this.getRuleContext(0,_)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(M):this.getRuleContext(e,M)}get ruleIndex(){return n.RULE_subjectUsage}enterRule(e){e.enterSubjectUsage&&e.enterSubjectUsage(this)}exitRule(e){e.exitSubjectUsage&&e.exitSubjectUsage(this)}accept(e){return e.visitSubjectUsage?e.visitSubjectUsage(this):e.visitChildren(this)}},Vo=class extends l{constructor(e,t){super(e,t)}requirementKind(){return this.getRuleContext(0,_o)}requirementConstraintUsage(){return this.getRuleContext(0,qo)}memberPrefix(){return this.getRuleContext(0,T)}get ruleIndex(){return n.RULE_requirementConstraintMember}enterRule(e){e.enterRequirementConstraintMember&&e.enterRequirementConstraintMember(this)}exitRule(e){e.exitRequirementConstraintMember&&e.exitRequirementConstraintMember(this)}accept(e){return e.visitRequirementConstraintMember?e.visitRequirementConstraintMember(this):e.visitChildren(this)}},_o=class extends l{constructor(e,t){super(e,t)}ASSUME(){return this.getToken(n.ASSUME,0)}REQUIRE(){return this.getToken(n.REQUIRE,0)}get ruleIndex(){return n.RULE_requirementKind}enterRule(e){e.enterRequirementKind&&e.enterRequirementKind(this)}exitRule(e){e.exitRequirementKind&&e.exitRequirementKind(this)}accept(e){return e.visitRequirementKind?e.visitRequirementKind(this):e.visitChildren(this)}},qo=class extends l{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,z)}requirementBody(){return this.getRuleContext(0,ue)}featureSpecializationPart(){return this.getRuleContext(0,Z)}constraintUsageDeclaration(){return this.getRuleContext(0,ne)}calculationBody(){return this.getRuleContext(0,Ie)}CONSTRAINT(){return this.getToken(n.CONSTRAINT,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(M):this.getRuleContext(e,M)}get ruleIndex(){return n.RULE_requirementConstraintUsage}enterRule(e){e.enterRequirementConstraintUsage&&e.enterRequirementConstraintUsage(this)}exitRule(e){e.exitRequirementConstraintUsage&&e.exitRequirementConstraintUsage(this)}accept(e){return e.visitRequirementConstraintUsage?e.visitRequirementConstraintUsage(this):e.visitChildren(this)}},Go=class extends l{constructor(e,t){super(e,t)}FRAME(){return this.getToken(n.FRAME,0)}framedConcernUsage(){return this.getRuleContext(0,Ko)}memberPrefix(){return this.getRuleContext(0,T)}get ruleIndex(){return n.RULE_framedConcernMember}enterRule(e){e.enterFramedConcernMember&&e.enterFramedConcernMember(this)}exitRule(e){e.exitFramedConcernMember&&e.exitFramedConcernMember(this)}accept(e){return e.visitFramedConcernMember?e.visitFramedConcernMember(this):e.visitChildren(this)}},Ko=class extends l{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,z)}calculationBody(){return this.getRuleContext(0,Ie)}featureSpecializationPart(){return this.getRuleContext(0,Z)}calculationUsageDeclaration(){return this.getRuleContext(0,Iu)}CONCERN(){return this.getToken(n.CONCERN,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(M):this.getRuleContext(e,M)}get ruleIndex(){return n.RULE_framedConcernUsage}enterRule(e){e.enterFramedConcernUsage&&e.enterFramedConcernUsage(this)}exitRule(e){e.exitFramedConcernUsage&&e.exitFramedConcernUsage(this)}accept(e){return e.visitFramedConcernUsage?e.visitFramedConcernUsage(this):e.visitChildren(this)}},hn=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}actorUsage(){return this.getRuleContext(0,jo)}get ruleIndex(){return n.RULE_actorMember}enterRule(e){e.enterActorMember&&e.enterActorMember(this)}exitRule(e){e.exitActorMember&&e.exitActorMember(this)}accept(e){return e.visitActorMember?e.visitActorMember(this):e.visitChildren(this)}},jo=class extends l{constructor(e,t){super(e,t)}ACTOR(){return this.getToken(n.ACTOR,0)}usage(){return this.getRuleContext(0,_)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(M):this.getRuleContext(e,M)}get ruleIndex(){return n.RULE_actorUsage}enterRule(e){e.enterActorUsage&&e.enterActorUsage(this)}exitRule(e){e.exitActorUsage&&e.exitActorUsage(this)}accept(e){return e.visitActorUsage?e.visitActorUsage(this):e.visitChildren(this)}},Qo=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}stakeholderUsage(){return this.getRuleContext(0,zo)}get ruleIndex(){return n.RULE_stakeholderMember}enterRule(e){e.enterStakeholderMember&&e.enterStakeholderMember(this)}exitRule(e){e.exitStakeholderMember&&e.exitStakeholderMember(this)}accept(e){return e.visitStakeholderMember?e.visitStakeholderMember(this):e.visitChildren(this)}},zo=class extends l{constructor(e,t){super(e,t)}STAKEHOLDER(){return this.getToken(n.STAKEHOLDER,0)}usage(){return this.getRuleContext(0,_)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(M):this.getRuleContext(e,M)}get ruleIndex(){return n.RULE_stakeholderUsage}enterRule(e){e.enterStakeholderUsage&&e.enterStakeholderUsage(this)}exitRule(e){e.exitStakeholderUsage&&e.exitStakeholderUsage(this)}accept(e){return e.visitStakeholderUsage?e.visitStakeholderUsage(this):e.visitChildren(this)}},Yo=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}REQUIREMENT(){return this.getToken(n.REQUIREMENT,0)}constraintUsageDeclaration(){return this.getRuleContext(0,ne)}requirementBody(){return this.getRuleContext(0,ue)}get ruleIndex(){return n.RULE_requirementUsage}enterRule(e){e.enterRequirementUsage&&e.enterRequirementUsage(this)}exitRule(e){e.exitRequirementUsage&&e.exitRequirementUsage(this)}accept(e){return e.visitRequirementUsage?e.visitRequirementUsage(this):e.visitChildren(this)}},Wo=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}SATISFY(){return this.getToken(n.SATISFY,0)}requirementBody(){return this.getRuleContext(0,ue)}ownedReferenceSubsetting(){return this.getRuleContext(0,z)}REQUIREMENT(){return this.getToken(n.REQUIREMENT,0)}ASSERT(){return this.getToken(n.ASSERT,0)}valuePart(){return this.getRuleContext(0,D)}BY(){return this.getToken(n.BY,0)}satisfactionSubjectMember(){return this.getRuleContext(0,Xo)}featureSpecializationPart(){return this.getRuleContext(0,Z)}usageDeclaration(){return this.getRuleContext(0,U)}NOT(){return this.getToken(n.NOT,0)}get ruleIndex(){return n.RULE_satisfyRequirementUsage}enterRule(e){e.enterSatisfyRequirementUsage&&e.enterSatisfyRequirementUsage(this)}exitRule(e){e.exitSatisfyRequirementUsage&&e.exitSatisfyRequirementUsage(this)}accept(e){return e.visitSatisfyRequirementUsage?e.visitSatisfyRequirementUsage(this):e.visitChildren(this)}},Xo=class extends l{constructor(e,t){super(e,t)}satisfactionParameter(){return this.getRuleContext(0,Jo)}get ruleIndex(){return n.RULE_satisfactionSubjectMember}enterRule(e){e.enterSatisfactionSubjectMember&&e.enterSatisfactionSubjectMember(this)}exitRule(e){e.exitSatisfactionSubjectMember&&e.exitSatisfactionSubjectMember(this)}accept(e){return e.visitSatisfactionSubjectMember?e.visitSatisfactionSubjectMember(this):e.visitChildren(this)}},Jo=class extends l{constructor(e,t){super(e,t)}satisfactionFeatureValue(){return this.getRuleContext(0,$o)}get ruleIndex(){return n.RULE_satisfactionParameter}enterRule(e){e.enterSatisfactionParameter&&e.enterSatisfactionParameter(this)}exitRule(e){e.exitSatisfactionParameter&&e.exitSatisfactionParameter(this)}accept(e){return e.visitSatisfactionParameter?e.visitSatisfactionParameter(this):e.visitChildren(this)}},$o=class extends l{constructor(e,t){super(e,t)}satisfactionReferenceExpression(){return this.getRuleContext(0,Zo)}get ruleIndex(){return n.RULE_satisfactionFeatureValue}enterRule(e){e.enterSatisfactionFeatureValue&&e.enterSatisfactionFeatureValue(this)}exitRule(e){e.exitSatisfactionFeatureValue&&e.exitSatisfactionFeatureValue(this)}accept(e){return e.visitSatisfactionFeatureValue?e.visitSatisfactionFeatureValue(this):e.visitChildren(this)}},Zo=class extends l{constructor(e,t){super(e,t)}featureChainMember(){return this.getRuleContext(0,gt)}get ruleIndex(){return n.RULE_satisfactionReferenceExpression}enterRule(e){e.enterSatisfactionReferenceExpression&&e.enterSatisfactionReferenceExpression(this)}exitRule(e){e.exitSatisfactionReferenceExpression&&e.exitSatisfactionReferenceExpression(this)}accept(e){return e.visitSatisfactionReferenceExpression?e.visitSatisfactionReferenceExpression(this):e.visitChildren(this)}},eu=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}CONCERN(){return this.getToken(n.CONCERN,0)}DEF(){return this.getToken(n.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,W)}requirementBody(){return this.getRuleContext(0,ue)}get ruleIndex(){return n.RULE_concernDefinition}enterRule(e){e.enterConcernDefinition&&e.enterConcernDefinition(this)}exitRule(e){e.exitConcernDefinition&&e.exitConcernDefinition(this)}accept(e){return e.visitConcernDefinition?e.visitConcernDefinition(this):e.visitChildren(this)}},tu=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}CONCERN(){return this.getToken(n.CONCERN,0)}constraintUsageDeclaration(){return this.getRuleContext(0,ne)}requirementBody(){return this.getRuleContext(0,ue)}get ruleIndex(){return n.RULE_concernUsage}enterRule(e){e.enterConcernUsage&&e.enterConcernUsage(this)}exitRule(e){e.exitConcernUsage&&e.exitConcernUsage(this)}accept(e){return e.visitConcernUsage?e.visitConcernUsage(this):e.visitChildren(this)}},ru=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}CASE(){return this.getToken(n.CASE,0)}DEF(){return this.getToken(n.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,W)}caseBody(){return this.getRuleContext(0,Re)}get ruleIndex(){return n.RULE_caseDefinition}enterRule(e){e.enterCaseDefinition&&e.enterCaseDefinition(this)}exitRule(e){e.exitCaseDefinition&&e.exitCaseDefinition(this)}accept(e){return e.visitCaseDefinition?e.visitCaseDefinition(this):e.visitChildren(this)}},iu=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}CASE(){return this.getToken(n.CASE,0)}constraintUsageDeclaration(){return this.getRuleContext(0,ne)}caseBody(){return this.getRuleContext(0,Re)}get ruleIndex(){return n.RULE_caseUsage}enterRule(e){e.enterCaseUsage&&e.enterCaseUsage(this)}exitRule(e){e.exitCaseUsage&&e.exitCaseUsage(this)}accept(e){return e.visitCaseUsage?e.visitCaseUsage(this):e.visitChildren(this)}},Re=class extends l{constructor(e,t){super(e,t)}SEMI(){return this.getToken(n.SEMI,0)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}caseBodyItem(e){return e===void 0?this.getRuleContexts(dn):this.getRuleContext(e,dn)}resultExpressionMember(){return this.getRuleContext(0,nr)}get ruleIndex(){return n.RULE_caseBody}enterRule(e){e.enterCaseBody&&e.enterCaseBody(this)}exitRule(e){e.exitCaseBody&&e.exitCaseBody(this)}accept(e){return e.visitCaseBody?e.visitCaseBody(this):e.visitChildren(this)}},dn=class extends l{constructor(e,t){super(e,t)}actionBodyItem(){return this.getRuleContext(0,J)}returnParameterMember(){return this.getRuleContext(0,on)}subjectMember(){return this.getRuleContext(0,cn)}actorMember(){return this.getRuleContext(0,hn)}objectiveMember(){return this.getRuleContext(0,nu)}get ruleIndex(){return n.RULE_caseBodyItem}enterRule(e){e.enterCaseBodyItem&&e.enterCaseBodyItem(this)}exitRule(e){e.exitCaseBodyItem&&e.exitCaseBodyItem(this)}accept(e){return e.visitCaseBodyItem?e.visitCaseBodyItem(this):e.visitChildren(this)}},nu=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}OBJECTIVE(){return this.getToken(n.OBJECTIVE,0)}objectiveRequirementUsage(){return this.getRuleContext(0,su)}get ruleIndex(){return n.RULE_objectiveMember}enterRule(e){e.enterObjectiveMember&&e.enterObjectiveMember(this)}exitRule(e){e.exitObjectiveMember&&e.exitObjectiveMember(this)}accept(e){return e.visitObjectiveMember?e.visitObjectiveMember(this):e.visitChildren(this)}},su=class extends l{constructor(e,t){super(e,t)}constraintUsageDeclaration(){return this.getRuleContext(0,ne)}requirementBody(){return this.getRuleContext(0,ue)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(M):this.getRuleContext(e,M)}get ruleIndex(){return n.RULE_objectiveRequirementUsage}enterRule(e){e.enterObjectiveRequirementUsage&&e.enterObjectiveRequirementUsage(this)}exitRule(e){e.exitObjectiveRequirementUsage&&e.exitObjectiveRequirementUsage(this)}accept(e){return e.visitObjectiveRequirementUsage?e.visitObjectiveRequirementUsage(this):e.visitChildren(this)}},au=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}ANALYSIS(){return this.getToken(n.ANALYSIS,0)}DEF(){return this.getToken(n.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,W)}caseBody(){return this.getRuleContext(0,Re)}get ruleIndex(){return n.RULE_analysisCaseDefinition}enterRule(e){e.enterAnalysisCaseDefinition&&e.enterAnalysisCaseDefinition(this)}exitRule(e){e.exitAnalysisCaseDefinition&&e.exitAnalysisCaseDefinition(this)}accept(e){return e.visitAnalysisCaseDefinition?e.visitAnalysisCaseDefinition(this):e.visitChildren(this)}},lu=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}ANALYSIS(){return this.getToken(n.ANALYSIS,0)}constraintUsageDeclaration(){return this.getRuleContext(0,ne)}caseBody(){return this.getRuleContext(0,Re)}get ruleIndex(){return n.RULE_analysisCaseUsage}enterRule(e){e.enterAnalysisCaseUsage&&e.enterAnalysisCaseUsage(this)}exitRule(e){e.exitAnalysisCaseUsage&&e.exitAnalysisCaseUsage(this)}accept(e){return e.visitAnalysisCaseUsage?e.visitAnalysisCaseUsage(this):e.visitChildren(this)}},ou=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}VERIFICATION(){return this.getToken(n.VERIFICATION,0)}DEF(){return this.getToken(n.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,W)}caseBody(){return this.getRuleContext(0,Re)}get ruleIndex(){return n.RULE_verificationCaseDefinition}enterRule(e){e.enterVerificationCaseDefinition&&e.enterVerificationCaseDefinition(this)}exitRule(e){e.exitVerificationCaseDefinition&&e.exitVerificationCaseDefinition(this)}accept(e){return e.visitVerificationCaseDefinition?e.visitVerificationCaseDefinition(this):e.visitChildren(this)}},uu=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}VERIFICATION(){return this.getToken(n.VERIFICATION,0)}constraintUsageDeclaration(){return this.getRuleContext(0,ne)}caseBody(){return this.getRuleContext(0,Re)}get ruleIndex(){return n.RULE_verificationCaseUsage}enterRule(e){e.enterVerificationCaseUsage&&e.enterVerificationCaseUsage(this)}exitRule(e){e.exitVerificationCaseUsage&&e.exitVerificationCaseUsage(this)}accept(e){return e.visitVerificationCaseUsage?e.visitVerificationCaseUsage(this):e.visitChildren(this)}},cu=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}VERIFY(){return this.getToken(n.VERIFY,0)}requirementVerificationUsage(){return this.getRuleContext(0,hu)}get ruleIndex(){return n.RULE_requirementVerificationMember}enterRule(e){e.enterRequirementVerificationMember&&e.enterRequirementVerificationMember(this)}exitRule(e){e.exitRequirementVerificationMember&&e.exitRequirementVerificationMember(this)}accept(e){return e.visitRequirementVerificationMember?e.visitRequirementVerificationMember(this):e.visitChildren(this)}},hu=class extends l{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,z)}requirementBody(){return this.getRuleContext(0,ue)}featureSpecialization(e){return e===void 0?this.getRuleContexts(Le):this.getRuleContext(e,Le)}constraintUsageDeclaration(){return this.getRuleContext(0,ne)}REQUIREMENT(){return this.getToken(n.REQUIREMENT,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(M):this.getRuleContext(e,M)}get ruleIndex(){return n.RULE_requirementVerificationUsage}enterRule(e){e.enterRequirementVerificationUsage&&e.enterRequirementVerificationUsage(this)}exitRule(e){e.exitRequirementVerificationUsage&&e.exitRequirementVerificationUsage(this)}accept(e){return e.visitRequirementVerificationUsage?e.visitRequirementVerificationUsage(this):e.visitChildren(this)}},du=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}USE(){return this.getToken(n.USE,0)}CASE(){return this.getToken(n.CASE,0)}DEF(){return this.getToken(n.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,W)}caseBody(){return this.getRuleContext(0,Re)}get ruleIndex(){return n.RULE_useCaseDefinition}enterRule(e){e.enterUseCaseDefinition&&e.enterUseCaseDefinition(this)}exitRule(e){e.exitUseCaseDefinition&&e.exitUseCaseDefinition(this)}accept(e){return e.visitUseCaseDefinition?e.visitUseCaseDefinition(this):e.visitChildren(this)}},pu=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}USE(){return this.getToken(n.USE,0)}CASE(){return this.getToken(n.CASE,0)}constraintUsageDeclaration(){return this.getRuleContext(0,ne)}caseBody(){return this.getRuleContext(0,Re)}get ruleIndex(){return n.RULE_useCaseUsage}enterRule(e){e.enterUseCaseUsage&&e.enterUseCaseUsage(this)}exitRule(e){e.exitUseCaseUsage&&e.exitUseCaseUsage(this)}accept(e){return e.visitUseCaseUsage?e.visitUseCaseUsage(this):e.visitChildren(this)}},xu=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}INCLUDE(){return this.getToken(n.INCLUDE,0)}caseBody(){return this.getRuleContext(0,Re)}ownedReferenceSubsetting(){return this.getRuleContext(0,z)}USE(){return this.getToken(n.USE,0)}CASE(){return this.getToken(n.CASE,0)}valuePart(){return this.getRuleContext(0,D)}featureSpecializationPart(){return this.getRuleContext(0,Z)}usageDeclaration(){return this.getRuleContext(0,U)}get ruleIndex(){return n.RULE_includeUseCaseUsage}enterRule(e){e.enterIncludeUseCaseUsage&&e.enterIncludeUseCaseUsage(this)}exitRule(e){e.exitIncludeUseCaseUsage&&e.exitIncludeUseCaseUsage(this)}accept(e){return e.visitIncludeUseCaseUsage?e.visitIncludeUseCaseUsage(this):e.visitChildren(this)}},bu=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}VIEW(){return this.getToken(n.VIEW,0)}DEF(){return this.getToken(n.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,W)}viewDefinitionBody(){return this.getRuleContext(0,Ru)}get ruleIndex(){return n.RULE_viewDefinition}enterRule(e){e.enterViewDefinition&&e.enterViewDefinition(this)}exitRule(e){e.exitViewDefinition&&e.exitViewDefinition(this)}accept(e){return e.visitViewDefinition?e.visitViewDefinition(this):e.visitChildren(this)}},Ru=class extends l{constructor(e,t){super(e,t)}SEMI(){return this.getToken(n.SEMI,0)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}viewDefinitionBodyItem(e){return e===void 0?this.getRuleContexts(pn):this.getRuleContext(e,pn)}get ruleIndex(){return n.RULE_viewDefinitionBody}enterRule(e){e.enterViewDefinitionBody&&e.enterViewDefinitionBody(this)}exitRule(e){e.exitViewDefinitionBody&&e.exitViewDefinitionBody(this)}accept(e){return e.visitViewDefinitionBody?e.visitViewDefinitionBody(this):e.visitChildren(this)}},pn=class extends l{constructor(e,t){super(e,t)}definitionBodyItem(){return this.getRuleContext(0,rt)}elementFilterMember(){return this.getRuleContext(0,ar)}viewRenderingMember(){return this.getRuleContext(0,xn)}get ruleIndex(){return n.RULE_viewDefinitionBodyItem}enterRule(e){e.enterViewDefinitionBodyItem&&e.enterViewDefinitionBodyItem(this)}exitRule(e){e.exitViewDefinitionBodyItem&&e.exitViewDefinitionBodyItem(this)}accept(e){return e.visitViewDefinitionBodyItem?e.visitViewDefinitionBodyItem(this):e.visitChildren(this)}},xn=class extends l{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,T)}RENDER(){return this.getToken(n.RENDER,0)}viewRenderingUsage(){return this.getRuleContext(0,fu)}get ruleIndex(){return n.RULE_viewRenderingMember}enterRule(e){e.enterViewRenderingMember&&e.enterViewRenderingMember(this)}exitRule(e){e.exitViewRenderingMember&&e.exitViewRenderingMember(this)}accept(e){return e.visitViewRenderingMember?e.visitViewRenderingMember(this):e.visitChildren(this)}},fu=class extends l{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,z)}usageBody(){return this.getRuleContext(0,be)}featureSpecializationPart(){return this.getRuleContext(0,Z)}usage(){return this.getRuleContext(0,_)}RENDERING(){return this.getToken(n.RENDERING,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(M):this.getRuleContext(e,M)}get ruleIndex(){return n.RULE_viewRenderingUsage}enterRule(e){e.enterViewRenderingUsage&&e.enterViewRenderingUsage(this)}exitRule(e){e.exitViewRenderingUsage&&e.exitViewRenderingUsage(this)}accept(e){return e.visitViewRenderingUsage?e.visitViewRenderingUsage(this):e.visitChildren(this)}},bn=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}VIEW(){return this.getToken(n.VIEW,0)}viewBody(){return this.getRuleContext(0,mu)}usageDeclaration(){return this.getRuleContext(0,U)}valuePart(){return this.getRuleContext(0,D)}get ruleIndex(){return n.RULE_viewUsage}enterRule(e){e.enterViewUsage&&e.enterViewUsage(this)}exitRule(e){e.exitViewUsage&&e.exitViewUsage(this)}accept(e){return e.visitViewUsage?e.visitViewUsage(this):e.visitChildren(this)}},mu=class extends l{constructor(e,t){super(e,t)}SEMI(){return this.getToken(n.SEMI,0)}LBRACE(){return this.getToken(n.LBRACE,0)}RBRACE(){return this.getToken(n.RBRACE,0)}viewBodyItem(e){return e===void 0?this.getRuleContexts(Rn):this.getRuleContext(e,Rn)}get ruleIndex(){return n.RULE_viewBody}enterRule(e){e.enterViewBody&&e.enterViewBody(this)}exitRule(e){e.exitViewBody&&e.exitViewBody(this)}accept(e){return e.visitViewBody?e.visitViewBody(this):e.visitChildren(this)}},Rn=class extends l{constructor(e,t){super(e,t)}definitionBodyItem(){return this.getRuleContext(0,rt)}elementFilterMember(){return this.getRuleContext(0,ar)}viewRenderingMember(){return this.getRuleContext(0,xn)}expose(){return this.getRuleContext(0,gu)}get ruleIndex(){return n.RULE_viewBodyItem}enterRule(e){e.enterViewBodyItem&&e.enterViewBodyItem(this)}exitRule(e){e.exitViewBodyItem&&e.exitViewBodyItem(this)}accept(e){return e.visitViewBodyItem?e.visitViewBodyItem(this):e.visitChildren(this)}},gu=class extends l{constructor(e,t){super(e,t)}EXPOSE(){return this.getToken(n.EXPOSE,0)}relationshipBody(){return this.getRuleContext(0,Q)}membershipExpose(){return this.getRuleContext(0,Cu)}namespaceExpose(){return this.getRuleContext(0,Eu)}get ruleIndex(){return n.RULE_expose}enterRule(e){e.enterExpose&&e.enterExpose(this)}exitRule(e){e.exitExpose&&e.exitExpose(this)}accept(e){return e.visitExpose?e.visitExpose(this):e.visitChildren(this)}},Cu=class extends l{constructor(e,t){super(e,t)}membershipImport(){return this.getRuleContext(0,Zt)}get ruleIndex(){return n.RULE_membershipExpose}enterRule(e){e.enterMembershipExpose&&e.enterMembershipExpose(this)}exitRule(e){e.exitMembershipExpose&&e.exitMembershipExpose(this)}accept(e){return e.visitMembershipExpose?e.visitMembershipExpose(this):e.visitChildren(this)}},Eu=class extends l{constructor(e,t){super(e,t)}namespaceImport(){return this.getRuleContext(0,Gr)}get ruleIndex(){return n.RULE_namespaceExpose}enterRule(e){e.enterNamespaceExpose&&e.enterNamespaceExpose(this)}exitRule(e){e.exitNamespaceExpose&&e.exitNamespaceExpose(this)}accept(e){return e.visitNamespaceExpose?e.visitNamespaceExpose(this):e.visitChildren(this)}},yu=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}VIEWPOINT(){return this.getToken(n.VIEWPOINT,0)}DEF(){return this.getToken(n.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,W)}requirementBody(){return this.getRuleContext(0,ue)}get ruleIndex(){return n.RULE_viewpointDefinition}enterRule(e){e.enterViewpointDefinition&&e.enterViewpointDefinition(this)}exitRule(e){e.exitViewpointDefinition&&e.exitViewpointDefinition(this)}accept(e){return e.visitViewpointDefinition?e.visitViewpointDefinition(this):e.visitChildren(this)}},vu=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}VIEWPOINT(){return this.getToken(n.VIEWPOINT,0)}constraintUsageDeclaration(){return this.getRuleContext(0,ne)}requirementBody(){return this.getRuleContext(0,ue)}get ruleIndex(){return n.RULE_viewpointUsage}enterRule(e){e.enterViewpointUsage&&e.enterViewpointUsage(this)}exitRule(e){e.exitViewpointUsage&&e.exitViewpointUsage(this)}accept(e){return e.visitViewpointUsage?e.visitViewpointUsage(this):e.visitChildren(this)}},Lu=class extends l{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,F)}RENDERING(){return this.getToken(n.RENDERING,0)}DEF(){return this.getToken(n.DEF,0)}definition(){return this.getRuleContext(0,ie)}get ruleIndex(){return n.RULE_renderingDefinition}enterRule(e){e.enterRenderingDefinition&&e.enterRenderingDefinition(this)}exitRule(e){e.exitRenderingDefinition&&e.exitRenderingDefinition(this)}accept(e){return e.visitRenderingDefinition?e.visitRenderingDefinition(this):e.visitChildren(this)}},fn=class extends l{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,A)}RENDERING(){return this.getToken(n.RENDERING,0)}usage(){return this.getRuleContext(0,_)}get ruleIndex(){return n.RULE_renderingUsage}enterRule(e){e.enterRenderingUsage&&e.enterRenderingUsage(this)}exitRule(e){e.exitRenderingUsage&&e.exitRenderingUsage(this)}accept(e){return e.visitRenderingUsage?e.visitRenderingUsage(this):e.visitChildren(this)}},Su=class extends l{constructor(e,t){super(e,t)}METADATA(){return this.getToken(n.METADATA,0)}DEF(){return this.getToken(n.DEF,0)}definition(){return this.getRuleContext(0,ie)}ABSTRACT(){return this.getToken(n.ABSTRACT,0)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts(re):this.getRuleContext(e,re)}get ruleIndex(){return n.RULE_metadataDefinition}enterRule(e){e.enterMetadataDefinition&&e.enterMetadataDefinition(this)}exitRule(e){e.exitMetadataDefinition&&e.exitMetadataDefinition(this)}accept(e){return e.visitMetadataDefinition?e.visitMetadataDefinition(this):e.visitChildren(this)}},mn=class extends l{constructor(e,t){super(e,t)}ownedFeatureTyping(){return this.getRuleContext(0,xe)}get ruleIndex(){return n.RULE_prefixMetadataUsage}enterRule(e){e.enterPrefixMetadataUsage&&e.enterPrefixMetadataUsage(this)}exitRule(e){e.exitPrefixMetadataUsage&&e.exitPrefixMetadataUsage(this)}accept(e){return e.visitPrefixMetadataUsage?e.visitPrefixMetadataUsage(this):e.visitChildren(this)}},A1=class extends l{constructor(e,t){super(e,t)}metadataUsageDeclaration(){return this.getRuleContext(0,Pu)}metadataBody(){return this.getRuleContext(0,yt)}AT_SIGN(){return this.getToken(n.AT_SIGN,0)}METADATA(){return this.getToken(n.METADATA,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(M):this.getRuleContext(e,M)}ABOUT(){return this.getToken(n.ABOUT,0)}annotation(e){return e===void 0?this.getRuleContexts(Be):this.getRuleContext(e,Be)}COMMA(e){return e===void 0?this.getTokens(n.COMMA):this.getToken(n.COMMA,e)}get ruleIndex(){return n.RULE_metadataUsage}enterRule(e){e.enterMetadataUsage&&e.enterMetadataUsage(this)}exitRule(e){e.exitMetadataUsage&&e.exitMetadataUsage(this)}accept(e){return e.visitMetadataUsage?e.visitMetadataUsage(this):e.visitChildren(this)}},Pu=class extends l{constructor(e,t){super(e,t)}ownedFeatureTyping(){return this.getRuleContext(0,xe)}COLON(){return this.getToken(n.COLON,0)}TYPED(){return this.getToken(n.TYPED,0)}BY(){return this.getToken(n.BY,0)}identification(){return this.getRuleContext(0,O)}get ruleIndex(){return n.RULE_metadataUsageDeclaration}enterRule(e){e.enterMetadataUsageDeclaration&&e.enterMetadataUsageDeclaration(this)}exitRule(e){e.exitMetadataUsageDeclaration&&e.exitMetadataUsageDeclaration(this)}accept(e){return e.visitMetadataUsageDeclaration?e.visitMetadataUsageDeclaration(this):e.visitChildren(this)}},gn=class extends l{constructor(e,t){super(e,t)}metadataBodyUsage(){return this.getRuleContext(0,Tu)}get ruleIndex(){return n.RULE_metadataBodyUsageMember}enterRule(e){e.enterMetadataBodyUsageMember&&e.enterMetadataBodyUsageMember(this)}exitRule(e){e.exitMetadataBodyUsageMember&&e.exitMetadataBodyUsageMember(this)}accept(e){return e.visitMetadataBodyUsageMember?e.visitMetadataBodyUsageMember(this):e.visitChildren(this)}},Tu=class extends l{constructor(e,t){super(e,t)}ownedRedefinition(){return this.getRuleContext(0,Ze)}metadataBody(){return this.getRuleContext(0,yt)}REF(){return this.getToken(n.REF,0)}featureSpecializationPart(){return this.getRuleContext(0,Z)}valuePart(){return this.getRuleContext(0,D)}COLON_GT_GT(){return this.getToken(n.COLON_GT_GT,0)}REDEFINES(){return this.getToken(n.REDEFINES,0)}get ruleIndex(){return n.RULE_metadataBodyUsage}enterRule(e){e.enterMetadataBodyUsage&&e.enterMetadataBodyUsage(this)}exitRule(e){e.exitMetadataBodyUsage&&e.exitMetadataBodyUsage(this)}accept(e){return e.visitMetadataBodyUsage?e.visitMetadataBodyUsage(this):e.visitChildren(this)}},Au=class extends l{constructor(e,t){super(e,t)}DEF(){return this.getToken(n.DEF,0)}definition(){return this.getRuleContext(0,ie)}basicDefinitionPrefix(){return this.getRuleContext(0,Lt)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts(re):this.getRuleContext(e,re)}get ruleIndex(){return n.RULE_extendedDefinition}enterRule(e){e.enterExtendedDefinition&&e.enterExtendedDefinition(this)}exitRule(e){e.exitExtendedDefinition&&e.exitExtendedDefinition(this)}accept(e){return e.visitExtendedDefinition?e.visitExtendedDefinition(this):e.visitChildren(this)}},Mu=class extends l{constructor(e,t){super(e,t)}unextendedUsagePrefix(){return this.getRuleContext(0,Li)}usage(){return this.getRuleContext(0,_)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(M):this.getRuleContext(e,M)}get ruleIndex(){return n.RULE_extendedUsage}enterRule(e){e.enterExtendedUsage&&e.enterExtendedUsage(this)}exitRule(e){e.exitExtendedUsage&&e.exitExtendedUsage(this)}accept(e){return e.visitExtendedUsage?e.visitExtendedUsage(this):e.visitChildren(this)}},Nu=class extends l{constructor(e,t){super(e,t)}membershipImport(){return this.getRuleContext(0,Zt)}namespaceImportDirect(){return this.getRuleContext(0,Uu)}get ruleIndex(){return n.RULE_filterPackageImportDeclaration}enterRule(e){e.enterFilterPackageImportDeclaration&&e.enterFilterPackageImportDeclaration(this)}exitRule(e){e.exitFilterPackageImportDeclaration&&e.exitFilterPackageImportDeclaration(this)}accept(e){return e.visitFilterPackageImportDeclaration?e.visitFilterPackageImportDeclaration(this):e.visitChildren(this)}},Uu=class extends l{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,m)}COLON_COLON(e){return e===void 0?this.getTokens(n.COLON_COLON):this.getToken(n.COLON_COLON,e)}STAR(){return this.getToken(n.STAR,0)}STAR_STAR(){return this.getToken(n.STAR_STAR,0)}get ruleIndex(){return n.RULE_namespaceImportDirect}enterRule(e){e.enterNamespaceImportDirect&&e.enterNamespaceImportDirect(this)}exitRule(e){e.exitNamespaceImportDirect&&e.exitNamespaceImportDirect(this)}accept(e){return e.visitNamespaceImportDirect?e.visitNamespaceImportDirect(this):e.visitChildren(this)}},Iu=class extends l{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,U)}valuePart(){return this.getRuleContext(0,D)}get ruleIndex(){return n.RULE_calculationUsageDeclaration}enterRule(e){e.enterCalculationUsageDeclaration&&e.enterCalculationUsageDeclaration(this)}exitRule(e){e.exitCalculationUsageDeclaration&&e.exitCalculationUsageDeclaration(this)}accept(e){return e.visitCalculationUsageDeclaration?e.visitCalculationUsageDeclaration(this):e.visitChildren(this)}},Cn=class extends l{constructor(e,t){super(e,t)}get ruleIndex(){return n.RULE_emptyActionUsage}enterRule(e){e.enterEmptyActionUsage&&e.enterEmptyActionUsage(this)}exitRule(e){e.exitEmptyActionUsage&&e.exitEmptyActionUsage(this)}accept(e){return e.visitEmptyActionUsage?e.visitEmptyActionUsage(this):e.visitChildren(this)}},En=class extends l{constructor(e,t){super(e,t)}get ruleIndex(){return n.RULE_emptyFeature}enterRule(e){e.enterEmptyFeature&&e.enterEmptyFeature(this)}exitRule(e){e.exitEmptyFeature&&e.exitEmptyFeature(this)}accept(e){return e.visitEmptyFeature?e.visitEmptyFeature(this):e.visitChildren(this)}},Ou=class extends l{constructor(e,t){super(e,t)}get ruleIndex(){return n.RULE_emptyMultiplicity}enterRule(e){e.enterEmptyMultiplicity&&e.enterEmptyMultiplicity(this)}exitRule(e){e.exitEmptyMultiplicity&&e.exitEmptyMultiplicity(this)}accept(e){return e.visitEmptyMultiplicity?e.visitEmptyMultiplicity(this):e.visitChildren(this)}},wu=class extends l{constructor(e,t){super(e,t)}get ruleIndex(){return n.RULE_emptyUsage}enterRule(e){e.enterEmptyUsage&&e.enterEmptyUsage(this)}exitRule(e){e.exitEmptyUsage&&e.exitEmptyUsage(this)}accept(e){return e.visitEmptyUsage?e.visitEmptyUsage(this):e.visitChildren(this)}},ku=class extends l{constructor(e,t){super(e,t)}IDENTIFIER(){return this.getToken(n.IDENTIFIER,0)}get ruleIndex(){return n.RULE_filterPackageImport}enterRule(e){e.enterFilterPackageImport&&e.enterFilterPackageImport(this)}exitRule(e){e.exitFilterPackageImport&&e.exitFilterPackageImport(this)}accept(e){return e.visitFilterPackageImport?e.visitFilterPackageImport(this):e.visitChildren(this)}},Du=class extends l{constructor(e,t){super(e,t)}IDENTIFIER(){return this.getToken(n.IDENTIFIER,0)}get ruleIndex(){return n.RULE_nonFeatureChainPrimaryExpression}enterRule(e){e.enterNonFeatureChainPrimaryExpression&&e.enterNonFeatureChainPrimaryExpression(this)}exitRule(e){e.exitNonFeatureChainPrimaryExpression&&e.exitNonFeatureChainPrimaryExpression(this)}accept(e){return e.visitNonFeatureChainPrimaryExpression?e.visitNonFeatureChainPrimaryExpression(this):e.visitChildren(this)}},Fu=class extends l{constructor(e,t){super(e,t)}get ruleIndex(){return n.RULE_portConjugation}enterRule(e){e.enterPortConjugation&&e.enterPortConjugation(this)}exitRule(e){e.exitPortConjugation&&e.exitPortConjugation(this)}accept(e){return e.visitPortConjugation?e.visitPortConjugation(this):e.visitChildren(this)}};var Hu=class extends jt{errors=[];syntaxError(e,t,i,s,a,u){let c=t,h=c?.text?.length??1;this.errors.push({line:i-1,column:s,message:a,offendingSymbol:c,length:h})}getErrors(){return this.errors}hasErrors(){return this.errors.length>0}};var U0=`
|
|
15
|
+
package WarmUp {
|
|
16
|
+
public import ISQ::*;
|
|
17
|
+
private import ScalarValues::*;
|
|
18
|
+
public import Pkg::**;
|
|
19
|
+
|
|
20
|
+
// ---- Part / Port / Item / Interface / Connection / Allocation ----
|
|
21
|
+
part def Vehicle {
|
|
22
|
+
attribute mass :> ISQ::mass;
|
|
23
|
+
attribute name : String;
|
|
24
|
+
attribute flags : Boolean;
|
|
25
|
+
attribute count : Integer = 42;
|
|
26
|
+
attribute ratio : Real default 3.14;
|
|
27
|
+
attribute list :> ISQ::mass [*] nonunique ordered;
|
|
28
|
+
ref item fuel : Fuel;
|
|
29
|
+
port p1 : Port1;
|
|
30
|
+
port p2 : ~Port1;
|
|
31
|
+
|
|
32
|
+
perform action doSomething;
|
|
33
|
+
exhibit state myStates parallel {
|
|
34
|
+
state operatingStates {
|
|
35
|
+
entry action initial;
|
|
36
|
+
do doSomething;
|
|
37
|
+
state off;
|
|
38
|
+
state starting;
|
|
39
|
+
state on { do doSomething; }
|
|
40
|
+
transition initial then off;
|
|
41
|
+
transition 'off-on' first off accept StartSig then on;
|
|
42
|
+
transition on_off first on accept StopSig do send new OffSig() to ctrl then off;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
state healthStates {
|
|
46
|
+
state normal;
|
|
47
|
+
state degraded;
|
|
48
|
+
transition initial then normal;
|
|
49
|
+
transition norm_deg first normal accept when temp > Tmax then degraded;
|
|
50
|
+
transition deg_norm first degraded accept ReturnNormal then normal;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
constraint massConstraint { mass <= 2000 }
|
|
54
|
+
assert constraint fuelCheck { fuel.fuelMass <= fuelMassMax }
|
|
55
|
+
|
|
56
|
+
item :> envelopingShapes [1] : Box {
|
|
57
|
+
length1 :>> length = 100;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
part def Engine {
|
|
62
|
+
attribute mass :> ISQ::mass;
|
|
63
|
+
attribute power :> ISQ::power;
|
|
64
|
+
attribute cost : Real;
|
|
65
|
+
attribute displacement :> ISQ::volume;
|
|
66
|
+
attribute fuelEfficiency : Real;
|
|
67
|
+
port ctrlPort : ~CtrlPort;
|
|
68
|
+
port fuelIn : ~FuelPort;
|
|
69
|
+
port driveOut : DrivePort;
|
|
70
|
+
port flyWheel;
|
|
71
|
+
part cylinders : Cylinder [4..6];
|
|
72
|
+
part alternator { action generateElectricity; }
|
|
73
|
+
perform action generateTorque;
|
|
74
|
+
exhibit state engineStates {
|
|
75
|
+
state off; state starting; state on { do generateTorque; }
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
abstract part def Software;
|
|
80
|
+
part def Controller :> Software {
|
|
81
|
+
port controlPort : CtrlPort;
|
|
82
|
+
exhibit state controllerStates parallel {
|
|
83
|
+
state opStates {
|
|
84
|
+
entry action initial;
|
|
85
|
+
state off; state on;
|
|
86
|
+
transition initial then off;
|
|
87
|
+
transition 'off-on' first off accept StartSig then on;
|
|
88
|
+
transition 'on-off' first on accept StopSig then off;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
part def Sensor { port sensorPort : SensorPort; }
|
|
94
|
+
part def Wheel { attribute diameter : Real; port lugPort : LugPort; }
|
|
95
|
+
part def Hub { port shankPort : ShankPort; }
|
|
96
|
+
part def HalfAxle { port shankComposite : ShankCompositePort {} }
|
|
97
|
+
part def Axle { attribute mass :> ISQ::mass; }
|
|
98
|
+
part def FrontAxle :> Axle { attribute steeringAngle :> ISQ::angularMeasure; }
|
|
99
|
+
part def Driveshaft;
|
|
100
|
+
part def Differential;
|
|
101
|
+
part def AxleAssembly;
|
|
102
|
+
part def Transmission { attribute gearRatio : Real; port clutch : ~DrivePort; exhibit state tStates; }
|
|
103
|
+
part def FuelTank {
|
|
104
|
+
attribute mass :> ISQ::mass;
|
|
105
|
+
ref item fuel : Fuel { attribute :>> fuelMass; }
|
|
106
|
+
attribute fuelKind : FuelKind;
|
|
107
|
+
attribute fuelMassMax :> ISQ::mass;
|
|
108
|
+
assert constraint fuelConstraint { fuel.fuelMass <= fuelMassMax }
|
|
109
|
+
port fuelOut : FuelPort;
|
|
110
|
+
port fuelIn : ~FuelPort;
|
|
111
|
+
}
|
|
112
|
+
part def Body { attribute color : Colors; }
|
|
113
|
+
part def BodyAssy;
|
|
114
|
+
part def Road { attribute incline : Real; attribute friction : Real; }
|
|
115
|
+
part def Thermostat;
|
|
116
|
+
part def Sunroof;
|
|
117
|
+
part def StarterMotor { port gearPort : GearPort; }
|
|
118
|
+
part def ElectricalGenerator;
|
|
119
|
+
part def TorqueGenerator;
|
|
120
|
+
part def SteeringSubsystem;
|
|
121
|
+
part def BrakingSubsystem;
|
|
122
|
+
part def Cylinder;
|
|
123
|
+
|
|
124
|
+
// ---- Port definitions ----
|
|
125
|
+
port def Port1 { in item cmd : Cmd; }
|
|
126
|
+
port def CtrlPort;
|
|
127
|
+
port def SensorPort;
|
|
128
|
+
port def DrivePort { out torque : Torque; }
|
|
129
|
+
port def FuelPort { out item fuel : Fuel; }
|
|
130
|
+
port def FuelCmdPort :> Port1 { in item fuelCmd : FuelCmd redefines cmd; }
|
|
131
|
+
port def GearPort;
|
|
132
|
+
port def LugPort { attribute threadDia; attribute threadPitch; }
|
|
133
|
+
port def ShankPort { attribute threadDia; attribute threadPitch; attribute shaftLength; }
|
|
134
|
+
port def LugCompositePort { port lug : LugPort [*]; }
|
|
135
|
+
port def ShankCompositePort { port shank : ShankPort [*]; }
|
|
136
|
+
port def VehicleToRoadPort;
|
|
137
|
+
port def SetSpeedPort;
|
|
138
|
+
port def CruiseControlPort :> CtrlPort;
|
|
139
|
+
port def SpeedSensorPort;
|
|
140
|
+
port def DriverCmdPort { out item driverCmd : DriverCmd [*]; }
|
|
141
|
+
port def HandPort :> DriverCmdPort {
|
|
142
|
+
out item ignitionCmd : IgnCmd subsets driverCmd;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// ---- Item / Signal definitions ----
|
|
146
|
+
item def Cmd;
|
|
147
|
+
item def DriverCmd;
|
|
148
|
+
item def IgnCmd :> DriverCmd { attribute onOff : OnOff; }
|
|
149
|
+
item def FuelCmd :> Cmd;
|
|
150
|
+
item def Fuel { attribute fuelMass :> ISQ::mass; }
|
|
151
|
+
item def Torque;
|
|
152
|
+
item def SensedSpeed { attribute speed :> ISQ::speed; }
|
|
153
|
+
item def EngineStatus;
|
|
154
|
+
attribute def StartSig;
|
|
155
|
+
attribute def StopSig;
|
|
156
|
+
attribute def OffSig;
|
|
157
|
+
attribute def OverTemp;
|
|
158
|
+
attribute def ReturnNormal;
|
|
159
|
+
attribute def SetSpeed :> Real;
|
|
160
|
+
attribute def VehicleOnSig;
|
|
161
|
+
|
|
162
|
+
// ---- Interface definitions ----
|
|
163
|
+
interface def DriveInterface {
|
|
164
|
+
end p1 : DrivePort;
|
|
165
|
+
end p2 : ~DrivePort;
|
|
166
|
+
flow p1.torque to p2.torque;
|
|
167
|
+
}
|
|
168
|
+
interface def FuelInterface {
|
|
169
|
+
end fuelOut : FuelPort;
|
|
170
|
+
end fuelIn : ~FuelPort;
|
|
171
|
+
flow of Fuel from fuelOut.fuel to fuelIn.fuel;
|
|
172
|
+
}
|
|
173
|
+
interface def WheelFastenerInterface {
|
|
174
|
+
end lugPort : LugPort;
|
|
175
|
+
end shankPort : ShankPort;
|
|
176
|
+
attribute maxTorque : Torque;
|
|
177
|
+
constraint { lugPort.threadDia == shankPort.threadDia }
|
|
178
|
+
}
|
|
179
|
+
interface def WheelHubInterface {
|
|
180
|
+
end lugComposite : LugCompositePort;
|
|
181
|
+
end shankComposite : ShankCompositePort;
|
|
182
|
+
interface wfi : WheelFastenerInterface [5]
|
|
183
|
+
connect lugComposite.lug to shankComposite.shank;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// ---- Allocation ----
|
|
187
|
+
allocation def LogicalToPhysical {
|
|
188
|
+
end #logical logicalEnd;
|
|
189
|
+
end #physical physicalEnd;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// ---- Enum definitions ----
|
|
193
|
+
enum def Colors { black; grey; red; }
|
|
194
|
+
enum def OnOff { on; off; }
|
|
195
|
+
enum def FuelKind { gas; diesel; }
|
|
196
|
+
enum def DiamChoices :> ISQ::LengthValue {
|
|
197
|
+
enum = 60;
|
|
198
|
+
enum = 80;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// ---- Attribute definitions ----
|
|
202
|
+
attribute cylinderDia : DiamChoices = 80;
|
|
203
|
+
alias Torque2 for ISQ::TorqueValue;
|
|
204
|
+
|
|
205
|
+
// ---- Action definitions ----
|
|
206
|
+
action def ProvidePower {
|
|
207
|
+
in item cmd : Cmd;
|
|
208
|
+
out wheelTorque : Torque [2];
|
|
209
|
+
}
|
|
210
|
+
action def GenerateTorque {
|
|
211
|
+
in item fuelCmd : FuelCmd;
|
|
212
|
+
out engineTorque : Torque;
|
|
213
|
+
}
|
|
214
|
+
action def AmplifyTorque { in engineTorque : Torque; out txTorque : Torque; }
|
|
215
|
+
action def TransferTorque { in txTorque : Torque; out dsTorque : Torque; }
|
|
216
|
+
action def DistributeTorque { in dsTorque : Torque; out wheelTorque : Torque [2]; }
|
|
217
|
+
action def PerformSelfTest;
|
|
218
|
+
action def ApplyParkingBrake;
|
|
219
|
+
action def SenseTemperature { out temp :> ISQ::temperature; }
|
|
220
|
+
|
|
221
|
+
// ---- State definitions ----
|
|
222
|
+
state def VehicleStates;
|
|
223
|
+
state def ControllerStates;
|
|
224
|
+
|
|
225
|
+
// ---- Requirement definitions ----
|
|
226
|
+
requirement def MassReq {
|
|
227
|
+
doc /* mass shall be less than required */
|
|
228
|
+
attribute massRequired :> ISQ::mass;
|
|
229
|
+
attribute massActual :> ISQ::mass;
|
|
230
|
+
require constraint { massActual <= massRequired }
|
|
231
|
+
}
|
|
232
|
+
requirement def ReliabilityReq {
|
|
233
|
+
doc /* reliability shall be sufficient */
|
|
234
|
+
attribute reliabilityRequired : Real;
|
|
235
|
+
attribute reliabilityActual : Real;
|
|
236
|
+
require constraint { reliabilityActual >= reliabilityRequired }
|
|
237
|
+
}
|
|
238
|
+
requirement def TorqueReq {
|
|
239
|
+
doc /* engine shall generate torque */
|
|
240
|
+
subject gt : GenerateTorque;
|
|
241
|
+
}
|
|
242
|
+
requirement def DriveOutputReq { doc /* engine shall provide drive */ }
|
|
243
|
+
requirement def FuelReq {
|
|
244
|
+
doc /* adequate fuel economy */
|
|
245
|
+
attribute actualFE : Real;
|
|
246
|
+
attribute requiredFE : Real;
|
|
247
|
+
require constraint { actualFE >= requiredFE }
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// ---- Individual definitions ----
|
|
251
|
+
individual def VehicleContext_1;
|
|
252
|
+
individual def Vehicle_1 :> Vehicle;
|
|
253
|
+
individual def Wheel_1 :> Wheel;
|
|
254
|
+
individual def Road_1 :> Road;
|
|
255
|
+
|
|
256
|
+
// ---- Metadata definitions ----
|
|
257
|
+
metadata def Safety { attribute isMandatory : Boolean; }
|
|
258
|
+
metadata def Security;
|
|
259
|
+
metadata def <fm> failureMode;
|
|
260
|
+
metadata def <l> logical;
|
|
261
|
+
metadata def <p> physical;
|
|
262
|
+
|
|
263
|
+
// ---- Generic context ----
|
|
264
|
+
part def Context {
|
|
265
|
+
attribute time : Real;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
// ---- Verification ----
|
|
269
|
+
verification def MassTest;
|
|
270
|
+
verification def AccelTest;
|
|
271
|
+
|
|
272
|
+
// ---- Use cases ----
|
|
273
|
+
use case def TransportPassenger {
|
|
274
|
+
objective TransportObjective {
|
|
275
|
+
doc /* deliver passenger safely */
|
|
276
|
+
}
|
|
277
|
+
subject vehicle : Vehicle;
|
|
278
|
+
actor environment;
|
|
279
|
+
actor road;
|
|
280
|
+
actor driver;
|
|
281
|
+
actor passenger [0..4];
|
|
282
|
+
include use case getIn :> GetIn [1..5];
|
|
283
|
+
include use case getOut :> GetOut [1..5];
|
|
284
|
+
}
|
|
285
|
+
use case def GetIn {
|
|
286
|
+
subject vehicle : Vehicle;
|
|
287
|
+
actor driver [0..1];
|
|
288
|
+
actor passenger [0..1];
|
|
289
|
+
assert constraint { driver != null xor passenger != null }
|
|
290
|
+
}
|
|
291
|
+
use case def GetOut {
|
|
292
|
+
subject vehicle : Vehicle;
|
|
293
|
+
actor driver [0..1];
|
|
294
|
+
actor passenger [0..1];
|
|
295
|
+
assert constraint { driver != null xor passenger != null }
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// ---- Calc definitions ----
|
|
299
|
+
calc def FuelConsumption {
|
|
300
|
+
in bestFuel : Real;
|
|
301
|
+
in idleFuel : Real;
|
|
302
|
+
in tpd : Real;
|
|
303
|
+
attribute f = bestFuel + idleFuel * tpd;
|
|
304
|
+
return dpv : Real = 1 / f;
|
|
305
|
+
}
|
|
306
|
+
calc def AvgTravelTime { in scenario : Real; return tpd : Real; }
|
|
307
|
+
calc def TraveledDist { in scenario : Real; return dist : Real; }
|
|
308
|
+
calc def IdlingFuel { in engine : Engine; return fa : Real = engine.displacement * 0.5; }
|
|
309
|
+
calc def BestFuel {
|
|
310
|
+
in mass : Real; in bsfc : Real; in tpd : Real; in dist : Real;
|
|
311
|
+
attribute pwr : Real;
|
|
312
|
+
constraint { pwr == ((1 / 2) * mass * tpd**(-3)) / dist }
|
|
313
|
+
return fb : Real = bsfc * 0.76 * pwr * tpd;
|
|
314
|
+
}
|
|
315
|
+
calc def ComputeBSFC { in engine : Engine; return : Real; }
|
|
316
|
+
|
|
317
|
+
// ---- Concern / Viewpoint / View ----
|
|
318
|
+
concern def VehicleSafety {
|
|
319
|
+
doc /* identify safety features */
|
|
320
|
+
subject;
|
|
321
|
+
stakeholder se : SafetyEngineer;
|
|
322
|
+
}
|
|
323
|
+
part def SafetyEngineer;
|
|
324
|
+
viewpoint def BehaviorViewpoint;
|
|
325
|
+
viewpoint def SafetyViewpoint { frame concern vs : VehicleSafety; }
|
|
326
|
+
view def TreeView { render asTreeDiagram; }
|
|
327
|
+
view def NestedView;
|
|
328
|
+
view def TableView;
|
|
329
|
+
view def PartsTreeView :> TreeView { filter @SysML::PartUsage; }
|
|
330
|
+
|
|
331
|
+
// ---- Trade study ----
|
|
332
|
+
analysis def TradeStudy;
|
|
333
|
+
|
|
334
|
+
// ---- Variation ----
|
|
335
|
+
variation part def TxChoices :> Transmission {
|
|
336
|
+
variant part txAuto;
|
|
337
|
+
variant part txManual;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
// ---- Vehicle Configuration (exercises deep nesting, connects, binds) ----
|
|
341
|
+
package VehicleConfig {
|
|
342
|
+
part vehicle_b : Vehicle {
|
|
343
|
+
attribute redefines mass = dryMass + cargoMass + fuelTank.fuel.fuelMass;
|
|
344
|
+
attribute dryMass redefines mass = 1500;
|
|
345
|
+
attribute redefines count default 0;
|
|
346
|
+
attribute partMasses = (fuelTank.mass, engine.mass);
|
|
347
|
+
port fuelCmdPort : FuelCmdPort redefines p1 { in item fuelCmd redefines cmd; }
|
|
348
|
+
port setSpeedPort : ~SetSpeedPort;
|
|
349
|
+
port vehicleToRoadPort redefines p2 {
|
|
350
|
+
port wheelToRoadPort1 : VehicleToRoadPort;
|
|
351
|
+
port wheelToRoadPort2 : VehicleToRoadPort;
|
|
352
|
+
}
|
|
353
|
+
perform actionTree::providePower redefines doSomething;
|
|
354
|
+
|
|
355
|
+
part fuelTank : FuelTank {
|
|
356
|
+
attribute redefines mass = 75;
|
|
357
|
+
ref item redefines fuel { attribute redefines fuelMass = 60; }
|
|
358
|
+
attribute redefines fuelMassMax = 60;
|
|
359
|
+
}
|
|
360
|
+
part frontAxle : AxleAssembly {
|
|
361
|
+
attribute mass :> ISQ::mass = 800;
|
|
362
|
+
part axle : FrontAxle;
|
|
363
|
+
part wheels : Wheel [2];
|
|
364
|
+
}
|
|
365
|
+
part rearAxle : AxleAssembly {
|
|
366
|
+
attribute mass :> ISQ::mass = 875;
|
|
367
|
+
attribute driveTrainEff : Real = 0.6;
|
|
368
|
+
perform providePower.distributeTorque;
|
|
369
|
+
part rearWheel1 : Wheel {
|
|
370
|
+
attribute redefines diameter;
|
|
371
|
+
port wheelToRoad : VehicleToRoadPort;
|
|
372
|
+
port lugPort :>> lugPort { port lug :>> lug [5]; }
|
|
373
|
+
}
|
|
374
|
+
part rearWheel2 : Wheel {
|
|
375
|
+
attribute redefines diameter;
|
|
376
|
+
port wheelToRoad : VehicleToRoadPort;
|
|
377
|
+
}
|
|
378
|
+
part differential : Differential {
|
|
379
|
+
port shaftD; port leftDiff; port rightDiff;
|
|
380
|
+
}
|
|
381
|
+
part rearAxlePart {
|
|
382
|
+
part leftHalf : HalfAxle;
|
|
383
|
+
part rightHalf : HalfAxle;
|
|
384
|
+
}
|
|
385
|
+
bind shaftD = differential.shaftD;
|
|
386
|
+
connect differential.leftDiff to rearAxlePart.leftHalf.shankComposite;
|
|
387
|
+
connect differential.rightDiff to rearAxlePart.rightHalf.shankComposite;
|
|
388
|
+
interface wheelHub1 : WheelHubInterface
|
|
389
|
+
connect [1] rearWheel1.lugPort to [1] rearAxlePart.leftHalf.shankComposite;
|
|
390
|
+
interface wheelHub2 : WheelHubInterface
|
|
391
|
+
connect [1] rearWheel2.lugPort to [1] rearAxlePart.rightHalf.shankComposite;
|
|
392
|
+
}
|
|
393
|
+
part starterMotor : StarterMotor;
|
|
394
|
+
part engine : Engine {
|
|
395
|
+
perform providePower.generateTorque redefines generateTorque;
|
|
396
|
+
part cylinders : Cylinder [4..6];
|
|
397
|
+
part alternator { action generateElectricity; }
|
|
398
|
+
satisfy requirements::engineSpec by vehicle_b.engine {
|
|
399
|
+
requirement torqueReq :>> torqueReq { }
|
|
400
|
+
requirement driveReq :>> driveReq { }
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
part transmission : Transmission {
|
|
404
|
+
attribute mass :> ISQ::mass = 100;
|
|
405
|
+
port shaftA;
|
|
406
|
+
perform providePower.amplifyTorque;
|
|
407
|
+
}
|
|
408
|
+
part driveshaft : Driveshaft {
|
|
409
|
+
attribute mass :> ISQ::mass = 100;
|
|
410
|
+
port shaftB; port shaftC;
|
|
411
|
+
perform providePower.transferTorque;
|
|
412
|
+
}
|
|
413
|
+
part sw : Controller {
|
|
414
|
+
exhibit state controllerStates redefines controllerStates;
|
|
415
|
+
part cruise : Sensor;
|
|
416
|
+
}
|
|
417
|
+
part speedSensor : Sensor;
|
|
418
|
+
|
|
419
|
+
part bodyAssy : BodyAssy {
|
|
420
|
+
part body : Body { attribute :>> color = Colors::red; }
|
|
421
|
+
part bumper { @Safety { isMandatory = true; } }
|
|
422
|
+
part keylessEntry { @Security; }
|
|
423
|
+
}
|
|
424
|
+
part interior {
|
|
425
|
+
part alarm { @Security; }
|
|
426
|
+
part seatBelt [2] { @Safety { isMandatory = true; } }
|
|
427
|
+
part frontSeat [2];
|
|
428
|
+
part airbag { @Safety { isMandatory = false; } }
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
// Connections and binds
|
|
432
|
+
bind engine.fuelIn = fuelCmdPort;
|
|
433
|
+
interface eTx : DriveInterface connect engine.driveOut to transmission.clutch;
|
|
434
|
+
interface fuelIf : FuelInterface connect fuelTank.fuelOut to engine.fuelIn;
|
|
435
|
+
allocate actionTree::providePower.genToAmp to eTx;
|
|
436
|
+
bind engine.ctrlPort = p1;
|
|
437
|
+
connect starterMotor.gearPort to engine.flyWheel;
|
|
438
|
+
connect sw.controlPort to engine.ctrlPort;
|
|
439
|
+
connect transmission.shaftA to driveshaft.shaftB;
|
|
440
|
+
connect driveshaft.shaftC to rearAxle.shaftD;
|
|
441
|
+
bind rearAxle.rearWheel1.wheelToRoad = vehicleToRoadPort.wheelToRoadPort1;
|
|
442
|
+
bind rearAxle.rearWheel2.wheelToRoad = vehicleToRoadPort.wheelToRoadPort2;
|
|
443
|
+
satisfy requirements::vehicleSpec by vehicle_b {
|
|
444
|
+
requirement massReq :>> massReq { attribute redefines massActual = vehicle_b.mass; }
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
// ---- Action tree ----
|
|
450
|
+
package actionTree {
|
|
451
|
+
action providePower : ProvidePower {
|
|
452
|
+
in item fuelCmd : FuelCmd redefines cmd;
|
|
453
|
+
out wheelTorque redefines wheelTorque [2] = distributeTorque.wheelTorque;
|
|
454
|
+
action generateTorque : GenerateTorque { in item = providePower.fuelCmd; }
|
|
455
|
+
action amplifyTorque : AmplifyTorque;
|
|
456
|
+
action transferTorque : TransferTorque;
|
|
457
|
+
action distributeTorque : DistributeTorque;
|
|
458
|
+
flow genToAmp from generateTorque.engineTorque to amplifyTorque.engineTorque;
|
|
459
|
+
flow amplifyTorque.txTorque to transferTorque.txTorque;
|
|
460
|
+
flow transferTorque.dsTorque to distributeTorque.dsTorque;
|
|
461
|
+
}
|
|
462
|
+
action performSelfTest : PerformSelfTest;
|
|
463
|
+
action applyParkingBrake : ApplyParkingBrake;
|
|
464
|
+
action senseTemperature : SenseTemperature;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
// ---- Discrete interactions (messages, events, successions) ----
|
|
468
|
+
package Interactions {
|
|
469
|
+
part def Driver { port p1; port p2; }
|
|
470
|
+
part part0 {
|
|
471
|
+
perform action startVehicle {
|
|
472
|
+
action turnOn send ignCmd via driver.p1 { in ignCmd : IgnCmd; }
|
|
473
|
+
action trigger1 accept ignCmd : IgnCmd via vehicle.p1;
|
|
474
|
+
flow of IgnCmd from trigger1.ignCmd to startEngine.ignCmd;
|
|
475
|
+
action startEngine { in item ignCmd : IgnCmd; out item es : EngineStatus; }
|
|
476
|
+
flow of EngineStatus from startEngine.es to sendStatus.es;
|
|
477
|
+
action sendStatus send es via vehicle.p2 { in es : EngineStatus; }
|
|
478
|
+
action trigger2 accept es : EngineStatus via driver.p2;
|
|
479
|
+
}
|
|
480
|
+
part driver : Driver {
|
|
481
|
+
perform startVehicle.turnOn;
|
|
482
|
+
perform startVehicle.trigger2;
|
|
483
|
+
event occurrence driverReady;
|
|
484
|
+
}
|
|
485
|
+
part vehicle : Vehicle {
|
|
486
|
+
perform startVehicle.trigger1;
|
|
487
|
+
perform startVehicle.sendStatus;
|
|
488
|
+
event occurrence doorClosed;
|
|
489
|
+
}
|
|
490
|
+
first vehicle.doorClosed then driver.driverReady;
|
|
491
|
+
message of ignCmd : IgnCmd from driver.turnOn to vehicle.trigger1;
|
|
492
|
+
message of es : EngineStatus from vehicle.sendStatus to driver.trigger2;
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
// ---- Requirements (nested, with derivation) ----
|
|
497
|
+
package requirements {
|
|
498
|
+
item marketSurvey;
|
|
499
|
+
dependency from vehicleSpec to marketSurvey;
|
|
500
|
+
requirement vehicleSpec {
|
|
501
|
+
subject vehicle : Vehicle;
|
|
502
|
+
requirement <'1'> massReq : MassReq {
|
|
503
|
+
doc /* total mass shall be within limits */
|
|
504
|
+
attribute redefines massRequired = 2000;
|
|
505
|
+
attribute redefines massActual default vehicle.mass;
|
|
506
|
+
attribute fuelMassActual :> ISQ::mass;
|
|
507
|
+
assume constraint { fuelMassActual == 60 }
|
|
508
|
+
}
|
|
509
|
+
allocate massReq to VehicleConfig::vehicle_b.mass;
|
|
510
|
+
requirement <'2'> fuelReqs {
|
|
511
|
+
doc /* fuel economy group */
|
|
512
|
+
attribute assumedCargo :> ISQ::mass;
|
|
513
|
+
requirement <'2_1'> cityFE : FuelReq {
|
|
514
|
+
redefines requiredFE = 10;
|
|
515
|
+
assume constraint { assumedCargo <= 500 }
|
|
516
|
+
}
|
|
517
|
+
requirement <'2_2'> hwyFE : FuelReq {
|
|
518
|
+
redefines requiredFE = 12.75;
|
|
519
|
+
assume constraint { assumedCargo <= 500 }
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
requirement engineSpec {
|
|
524
|
+
subject engine1 : Engine;
|
|
525
|
+
requirement <'1'> engineMassReq : MassReq {
|
|
526
|
+
doc /* engine mass within limits */
|
|
527
|
+
attribute redefines massRequired = 200;
|
|
528
|
+
attribute redefines massActual = engine1.mass;
|
|
529
|
+
}
|
|
530
|
+
requirement torqueReq : TorqueReq {
|
|
531
|
+
subject gt default engine1.generateTorque;
|
|
532
|
+
}
|
|
533
|
+
requirement driveReq : DriveOutputReq {
|
|
534
|
+
port torqueOut { out torque : Torque; }
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
#derivation connection {
|
|
538
|
+
end #original ::> vehicleSpec.massReq;
|
|
539
|
+
end #derive ::> engineSpec.engineMassReq;
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
// ---- Analysis (calc, fuel economy) ----
|
|
544
|
+
package vehicleAnalysis {
|
|
545
|
+
analysis fuelEconomyAnalysis {
|
|
546
|
+
subject = VehicleConfig::vehicle_b;
|
|
547
|
+
objective fuelEconObj {
|
|
548
|
+
doc /* estimate fuel economy */
|
|
549
|
+
require requirements::vehicleSpec.fuelReqs;
|
|
550
|
+
}
|
|
551
|
+
in attribute scenario : Real;
|
|
552
|
+
attribute dist = TraveledDist(scenario);
|
|
553
|
+
attribute tpd = AvgTravelTime(scenario);
|
|
554
|
+
attribute bsfc = ComputeBSFC(VehicleConfig::vehicle_b.engine);
|
|
555
|
+
attribute fa = BestFuel(VehicleConfig::vehicle_b.mass, bsfc, tpd, dist);
|
|
556
|
+
attribute fb = IdlingFuel(VehicleConfig::vehicle_b.engine);
|
|
557
|
+
return attribute calcFE : Real = FuelConsumption(fa, fb, tpd);
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
// ---- Trade-off analysis (variation, objective, evaluation) ----
|
|
562
|
+
package tradeOff {
|
|
563
|
+
analysis engineTradeOff : TradeStudy {
|
|
564
|
+
subject vehicleAlts :> VehicleConfig::vehicle_b [2];
|
|
565
|
+
part alt4cyl :> vehicleAlts {
|
|
566
|
+
part engine redefines engine { part cylinders :>> cylinders [4]; attribute mass redefines mass = 180; }
|
|
567
|
+
}
|
|
568
|
+
part alt6cyl :> vehicleAlts {
|
|
569
|
+
part engine redefines engine { part cylinders redefines cylinders [6]; attribute mass redefines mass = 220; }
|
|
570
|
+
}
|
|
571
|
+
objective;
|
|
572
|
+
return part selected :> VehicleConfig::vehicle_b;
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
// ---- Verification ----
|
|
577
|
+
package vehicleVerification {
|
|
578
|
+
verification massTests : MassTest {
|
|
579
|
+
subject vehicle_uut :> VehicleConfig::vehicle_b;
|
|
580
|
+
objective {
|
|
581
|
+
verify requirements::vehicleSpec.massReq {
|
|
582
|
+
redefines massActual = weighVehicle.massMeasured;
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
action weighVehicle { out massMeasured :> ISQ::mass; }
|
|
586
|
+
then action evaluatePassFail {
|
|
587
|
+
in massMeasured :> ISQ::mass;
|
|
588
|
+
out verdict : Real;
|
|
589
|
+
}
|
|
590
|
+
flow from weighVehicle.massMeasured to evaluatePassFail.massMeasured;
|
|
591
|
+
return :>> verdict = evaluatePassFail.verdict;
|
|
592
|
+
}
|
|
593
|
+
part verificationCtx {
|
|
594
|
+
perform massTests;
|
|
595
|
+
part vehicle_UUT :> VehicleConfig::vehicle_b;
|
|
596
|
+
part massVerifSys {
|
|
597
|
+
part scale { perform massTests.weighVehicle; }
|
|
598
|
+
part operator { perform massTests.evaluatePassFail; }
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
// ---- Individuals (snapshots, timeslices) ----
|
|
604
|
+
package vehicleIndividuals {
|
|
605
|
+
individual a : VehicleContext_1 {
|
|
606
|
+
timeslice t0_t2 {
|
|
607
|
+
snapshot t0 {
|
|
608
|
+
attribute t0t redefines time = 0;
|
|
609
|
+
snapshot t0_r : Road_1 { :>> Road::incline = 0; :>> Road::friction = 0.1; }
|
|
610
|
+
snapshot t0_v : Vehicle_1 {
|
|
611
|
+
:>> Vehicle::mass = 1500;
|
|
612
|
+
:>> Vehicle::ratio = 0;
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
snapshot t1 {
|
|
616
|
+
attribute t1t redefines time = 1;
|
|
617
|
+
snapshot t1_r : Road_1 { :>> Road::incline = 0; :>> Road::friction = 0.1; }
|
|
618
|
+
snapshot t1_v : Vehicle_1 { :>> Vehicle::mass = 1500; }
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
// ---- Use case scenario (forks, joins, successions) ----
|
|
625
|
+
package missionScenario {
|
|
626
|
+
use case transportPassenger : TransportPassenger {
|
|
627
|
+
first start;
|
|
628
|
+
then action a {
|
|
629
|
+
action driverGetIn subsets getIn [1];
|
|
630
|
+
action passengerGetIn subsets getIn [1];
|
|
631
|
+
}
|
|
632
|
+
then action trigger accept ignCmd : IgnCmd;
|
|
633
|
+
then action b {
|
|
634
|
+
action driveToDestination;
|
|
635
|
+
action providePower;
|
|
636
|
+
}
|
|
637
|
+
then action c {
|
|
638
|
+
action driverGetOut subsets getOut [1];
|
|
639
|
+
action passengerGetOut subsets getOut [1];
|
|
640
|
+
}
|
|
641
|
+
then done;
|
|
642
|
+
}
|
|
643
|
+
use case transportPassenger_1 : TransportPassenger {
|
|
644
|
+
action driverGetIn subsets getIn [1];
|
|
645
|
+
action passengerGetIn subsets getIn [1];
|
|
646
|
+
action driverGetOut subsets getOut [1];
|
|
647
|
+
action passengerGetOut subsets getOut [1];
|
|
648
|
+
action driveToDestination;
|
|
649
|
+
action providePower;
|
|
650
|
+
join join1; join join2; join join3;
|
|
651
|
+
action trigger accept ignCmd : IgnCmd;
|
|
652
|
+
first start; then fork fork1;
|
|
653
|
+
then driverGetIn; then passengerGetIn;
|
|
654
|
+
first driverGetIn then join1;
|
|
655
|
+
first passengerGetIn then join1;
|
|
656
|
+
first join1 then trigger;
|
|
657
|
+
first trigger then fork2;
|
|
658
|
+
fork fork2; then driveToDestination; then providePower;
|
|
659
|
+
first driveToDestination then join2;
|
|
660
|
+
first providePower then join2;
|
|
661
|
+
first join2 then fork3;
|
|
662
|
+
fork fork3; then driverGetOut; then passengerGetOut;
|
|
663
|
+
first driverGetOut then join3;
|
|
664
|
+
first passengerGetOut then join3;
|
|
665
|
+
first join3 then done;
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
// ---- Mission context with driver states ----
|
|
670
|
+
package missionCtx {
|
|
671
|
+
part def MissionDriver {
|
|
672
|
+
port handPort : HandPort {}
|
|
673
|
+
exhibit state driverStates {
|
|
674
|
+
state initial; state wait;
|
|
675
|
+
transition initial then wait;
|
|
676
|
+
transition 'w-w-1' first wait
|
|
677
|
+
do send new IgnCmd(onOff=OnOff::on) via handPort then wait;
|
|
678
|
+
transition 'w-w-2' first wait
|
|
679
|
+
do send new IgnCmd(onOff=OnOff::off) via handPort then wait;
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
part def Passenger;
|
|
683
|
+
part missionContext : Context {
|
|
684
|
+
perform missionScenario::transportPassenger;
|
|
685
|
+
part road : Road = missionScenario::transportPassenger.road;
|
|
686
|
+
part driver : MissionDriver = missionScenario::transportPassenger.driver {
|
|
687
|
+
perform missionScenario::transportPassenger.a.driverGetIn;
|
|
688
|
+
perform missionScenario::transportPassenger.b.driveToDestination;
|
|
689
|
+
perform missionScenario::transportPassenger.c.driverGetOut;
|
|
690
|
+
}
|
|
691
|
+
part passenger : Passenger = missionScenario::transportPassenger.passenger;
|
|
692
|
+
part vehicle_b_1 :> VehicleConfig::vehicle_b = missionScenario::transportPassenger.vehicle {
|
|
693
|
+
perform missionScenario::transportPassenger.b.providePower redefines doSomething;
|
|
694
|
+
perform missionScenario::transportPassenger.trigger;
|
|
695
|
+
}
|
|
696
|
+
connect driver.handPort to vehicle_b_1.p1;
|
|
697
|
+
connect road to vehicle_b_1.vehicleToRoadPort;
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
// ---- Superset model (variation, selection constraint) ----
|
|
702
|
+
package supersetModel {
|
|
703
|
+
abstract part vehicleFamily {
|
|
704
|
+
variation part engine : Engine {
|
|
705
|
+
variant part engine4Cyl;
|
|
706
|
+
variant part engine6Cyl;
|
|
707
|
+
}
|
|
708
|
+
part txChoices : TxChoices;
|
|
709
|
+
part sunroof : Sunroof [0..1];
|
|
710
|
+
assert constraint selectionConstraint {
|
|
711
|
+
(engine == engine::engine4Cyl and txChoices == TxChoices::txManual) xor
|
|
712
|
+
(engine == engine::engine6Cyl and txChoices == TxChoices::txAuto)
|
|
713
|
+
}
|
|
714
|
+
part driveshaft; part frontAxle; part rearAxle;
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
// ---- Safety/security filter groups ----
|
|
719
|
+
package filterGroups {
|
|
720
|
+
public import VehicleConfig::vehicle_b::**;
|
|
721
|
+
package SafetyGroup { public import vehicle_b::**; filter @Safety; }
|
|
722
|
+
package SecurityGroup { public import vehicle_b::**; filter @Security; }
|
|
723
|
+
package SafetyAndSecurity { public import vehicle_b::**; filter @Safety or @Security; }
|
|
724
|
+
package MandatorySafety { public import vehicle_b::**; filter @Safety and Safety::isMandatory; }
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
// ---- Views ----
|
|
728
|
+
package vehicleViews {
|
|
729
|
+
view vehiclePartsTree_Safety : PartsTreeView {
|
|
730
|
+
satisfy requirement sv : SafetyViewpoint;
|
|
731
|
+
expose VehicleConfig::**;
|
|
732
|
+
filter @Safety;
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
// ---- Occurrence / CruiseControl (messages, events, redefines) ----
|
|
737
|
+
occurrence CruiseControl {
|
|
738
|
+
part vehicle_b :> VehicleConfig::vehicle_b {
|
|
739
|
+
port redefines setSpeedPort { event occurrence setSpeedReceived; }
|
|
740
|
+
part redefines speedSensor {
|
|
741
|
+
port redefines sensorPort { event occurrence sensedSpeedSent; }
|
|
742
|
+
}
|
|
743
|
+
part redefines sw {
|
|
744
|
+
part redefines cruise {
|
|
745
|
+
port redefines sensorPort { event occurrence sensedSpeedReceived; }
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
part redefines engine {
|
|
749
|
+
port redefines fuelIn { event occurrence fuelCmdReceived; }
|
|
750
|
+
}
|
|
751
|
+
message sendSensed of SensedSpeed
|
|
752
|
+
from speedSensor.sensorPort.sensedSpeedSent
|
|
753
|
+
to sw.cruise.sensorPort.sensedSpeedReceived;
|
|
754
|
+
message sendFuelCmd of FuelCmd
|
|
755
|
+
from sw.cruise.controlPort
|
|
756
|
+
to engine.fuelIn.fuelCmdReceived;
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
// ---- Allocation (logical to physical) ----
|
|
761
|
+
package logicalAllocation {
|
|
762
|
+
#logical part vehicleLogical : Vehicle {
|
|
763
|
+
part torqueGen : TorqueGenerator { action generateTorque; }
|
|
764
|
+
part elecGen : ElectricalGenerator { action generateElec; }
|
|
765
|
+
part steeringSystem : SteeringSubsystem;
|
|
766
|
+
part brakingSystem : BrakingSubsystem;
|
|
767
|
+
}
|
|
768
|
+
allocation vehicleL2P : LogicalToPhysical
|
|
769
|
+
allocate vehicleLogical to VehicleConfig::vehicle_b {
|
|
770
|
+
allocate vehicleLogical.torqueGen to VehicleConfig::vehicle_b.engine {
|
|
771
|
+
allocate vehicleLogical.torqueGen.generateTorque
|
|
772
|
+
to VehicleConfig::vehicle_b.engine.generateTorque;
|
|
773
|
+
}
|
|
774
|
+
allocate vehicleLogical.elecGen to VehicleConfig::vehicle_b.engine {
|
|
775
|
+
allocate vehicleLogical.elecGen.generateElec
|
|
776
|
+
to VehicleConfig::vehicle_b.engine.alternator.generateElectricity;
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
// ---- Engine variant with refinement ----
|
|
782
|
+
package engine4CylVariant {
|
|
783
|
+
part engine : Engine { part cylinders : Cylinder [4..8] ordered; }
|
|
784
|
+
part engine4Cyl :> engine {
|
|
785
|
+
part redefines cylinders [4];
|
|
786
|
+
part cyl1 subsets cylinders [1];
|
|
787
|
+
part cyl2 subsets cylinders [1];
|
|
788
|
+
part cyl3 subsets cylinders [1];
|
|
789
|
+
part cyl4 subsets cylinders [1];
|
|
790
|
+
}
|
|
791
|
+
#refinement dependency engine4Cyl to VehicleConfig::vehicle_b::engine;
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
// ---- Wheel hub assemblies (nested interfaces with explicit connections) ----
|
|
795
|
+
package wheelHubAssy {
|
|
796
|
+
part wheelHubAssy1 {
|
|
797
|
+
part wheel1 : Wheel {
|
|
798
|
+
port :>> lugPort : LugCompositePort { port lug :>> lug [5]; }
|
|
799
|
+
}
|
|
800
|
+
part hub1 : Hub {
|
|
801
|
+
port :>> shankPort : ShankCompositePort { port shank :>> shank [5]; }
|
|
802
|
+
}
|
|
803
|
+
interface wheelHub : WheelHubInterface
|
|
804
|
+
connect [1] wheel1.lugPort to [1] hub1.shankPort;
|
|
805
|
+
}
|
|
806
|
+
part wheelHubAssy2 {
|
|
807
|
+
part wheel1 : Wheel {
|
|
808
|
+
port :>> lugPort : LugCompositePort { port lug :>> lug [5]; }
|
|
809
|
+
}
|
|
810
|
+
part hub1 : Hub {
|
|
811
|
+
port :>> shankPort : ShankCompositePort {
|
|
812
|
+
port shank :>> shank [5] {
|
|
813
|
+
attribute :>> threadDia = 14;
|
|
814
|
+
attribute :>> threadPitch = 1.5;
|
|
815
|
+
attribute :>> shaftLength = 70;
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
}
|
|
819
|
+
interface wheelHub : WheelHubInterface
|
|
820
|
+
connect [1] lugComposite ::> wheel1.lugPort
|
|
821
|
+
to [1] shankComposite ::> hub1.shankPort {
|
|
822
|
+
interface wf1 :> wfi
|
|
823
|
+
connect lugPort ::> lugComposite.lug
|
|
824
|
+
to shankPort ::> shankComposite.shank {
|
|
825
|
+
attribute :>> maxTorque = 90 * 1.356;
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
// ==== ADDITIONAL DFA WARM-UP \u2014 EXPRESSION & TYPING COVERAGE ====
|
|
832
|
+
|
|
833
|
+
// ---- Unit/bracket expressions (exercises ownedExpression LBRACK alt) ----
|
|
834
|
+
package unitExprs {
|
|
835
|
+
attribute len1 : Real = 4800 [mm];
|
|
836
|
+
attribute spd1 : Real = 1.96 [m / s**2];
|
|
837
|
+
attribute area1 : Real = 90 * 1.356 [N * m];
|
|
838
|
+
attribute pos3d = (0, 0, 0) [spatialCF];
|
|
839
|
+
attribute mixed = 2.5 * (a + b) [kg / m**3];
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
// ---- Trigger variants (accept at, accept via, complex guard) ----
|
|
843
|
+
package triggerPatterns {
|
|
844
|
+
state def TriggerStates {
|
|
845
|
+
state idle;
|
|
846
|
+
state active;
|
|
847
|
+
state off2;
|
|
848
|
+
transition t_at first idle accept at maintenanceTime then active;
|
|
849
|
+
transition t_via first active accept cmd : Cmd via ctrlPort then off2;
|
|
850
|
+
transition t_guard first idle
|
|
851
|
+
accept ignCmd : IgnCmd via p1
|
|
852
|
+
if (ignCmd.onOff == OnOff::on and flags)
|
|
853
|
+
do send new StartSig() to ctrl
|
|
854
|
+
then active;
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
// ---- META expression & semantic metadata ----
|
|
859
|
+
package metaExprs {
|
|
860
|
+
state fmodes [*] nonunique;
|
|
861
|
+
metadata def FailInfo {
|
|
862
|
+
:>> baseType = fmodes meta SysML::StateUsage;
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
// ---- Deeply nested redefines chains (4\u20135 levels) ----
|
|
867
|
+
package deepRedefines {
|
|
868
|
+
occurrence def DeepRedef {
|
|
869
|
+
part v :> VehicleConfig::vehicle_b {
|
|
870
|
+
part redefines sw {
|
|
871
|
+
part redefines cruise {
|
|
872
|
+
port redefines sensorPort {
|
|
873
|
+
event occurrence sensedRx;
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
part redefines engine {
|
|
878
|
+
port redefines fuelIn {
|
|
879
|
+
event occurrence fuelRx;
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
// ---- Event occurrence with .sourceEvent/.targetEvent ----
|
|
887
|
+
package eventPatterns {
|
|
888
|
+
occurrence def MsgPattern {
|
|
889
|
+
part sender { port sp; event occurrence eSent; }
|
|
890
|
+
part receiver { port rp; event occurrence eRcvd; }
|
|
891
|
+
message msg1 of Cmd from sender.sp.eSent to receiver.rp.eRcvd;
|
|
892
|
+
first sender.eSent then receiver.eRcvd;
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
|
|
896
|
+
// ---- Quantity types & derived units ----
|
|
897
|
+
package quantityTypes {
|
|
898
|
+
attribute dpv :> scalarQuantities = distance / volume;
|
|
899
|
+
attribute tpd :> scalarQuantities = time / distance;
|
|
900
|
+
attribute unitKpl : DerivedUnit = km / L;
|
|
901
|
+
attribute unitRpm : DerivedUnit = 1 / SI::min;
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
// ---- Rich metadata annotations ----
|
|
905
|
+
package richMetadata {
|
|
906
|
+
@Rationale about engineTradeOff {
|
|
907
|
+
text = "engine4cyl selected based on trade study";
|
|
908
|
+
}
|
|
909
|
+
@Risk about vehicleSafety {
|
|
910
|
+
totalRisk = medium;
|
|
911
|
+
technicalRisk = medium;
|
|
912
|
+
scheduleRisk = medium;
|
|
913
|
+
costRisk = low;
|
|
914
|
+
}
|
|
915
|
+
@StatusInfo {
|
|
916
|
+
status = StatusKind::closed;
|
|
917
|
+
originator = "Alice";
|
|
918
|
+
owner = "Bob";
|
|
919
|
+
}
|
|
920
|
+
@VerificationMethod {
|
|
921
|
+
kind = (VerificationMethodKind::test, VerificationMethodKind::analyze);
|
|
922
|
+
}
|
|
923
|
+
}
|
|
924
|
+
|
|
925
|
+
// ---- Nested invocation & PassIf pattern ----
|
|
926
|
+
package nestedInvocations {
|
|
927
|
+
verification def MassTest {
|
|
928
|
+
subject uut : Vehicle;
|
|
929
|
+
actor verifier = verCtx.massSys;
|
|
930
|
+
objective {
|
|
931
|
+
verify requirements::vehicleSpec.massReq {
|
|
932
|
+
redefines massActual = weigh.measured;
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
action weigh { out measured :> ISQ::mass; }
|
|
936
|
+
then action eval {
|
|
937
|
+
in measured :> ISQ::mass;
|
|
938
|
+
out verdict = PassIf(requirements::vehicleSpec.massReq(uut));
|
|
939
|
+
}
|
|
940
|
+
flow from weigh.measured to eval.measured;
|
|
941
|
+
return :>> verdict = eval.verdict;
|
|
942
|
+
}
|
|
943
|
+
}
|
|
944
|
+
|
|
945
|
+
// ---- Calc with :> subsetting (evaluationFunction pattern) ----
|
|
946
|
+
package calcPatterns {
|
|
947
|
+
calc :> evaluationFunction {
|
|
948
|
+
in part v :> alt4cyl;
|
|
949
|
+
return attribute ev : Real = EvalFunc(v.engine.mass, v.engine.power);
|
|
950
|
+
}
|
|
951
|
+
}
|
|
952
|
+
|
|
953
|
+
// ---- Redefines with sum() and complex value expressions ----
|
|
954
|
+
package sumPatterns {
|
|
955
|
+
part cfgPart : Vehicle {
|
|
956
|
+
attribute dryMass redefines mass = sum(partMasses);
|
|
957
|
+
attribute partMasses = (fuelTank.mass, engine.mass, rearAxle.mass);
|
|
958
|
+
attribute avgFE :> distancePerVolume;
|
|
959
|
+
}
|
|
960
|
+
}
|
|
961
|
+
|
|
962
|
+
// ---- Nested variation within variant ----
|
|
963
|
+
package nestedVariation {
|
|
964
|
+
variation part engineChoices : Engine {
|
|
965
|
+
variant part eng4;
|
|
966
|
+
variant part eng6 {
|
|
967
|
+
part cyl : Cylinder [6] {
|
|
968
|
+
variation attribute dia : Real {
|
|
969
|
+
variant attribute smallDia;
|
|
970
|
+
variant attribute largeDia;
|
|
971
|
+
}
|
|
972
|
+
}
|
|
973
|
+
}
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
// ---- Objective with typing, semicolon body ----
|
|
978
|
+
package tradeStudyPatterns {
|
|
979
|
+
analysis tradeA : TradeStudy {
|
|
980
|
+
subject alts :> VehicleConfig::vehicle_b [2];
|
|
981
|
+
objective : MaximizeObjective;
|
|
982
|
+
return part sel :> VehicleConfig::vehicle_b;
|
|
983
|
+
}
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
// ---- Prefix metadata on attributes (#mop, #moe) ----
|
|
987
|
+
package prefixMetadata {
|
|
988
|
+
part monitoredPart {
|
|
989
|
+
#mop attribute trackedMass :> ISQ::mass;
|
|
990
|
+
#moe attribute trackedTime :> ISQ::time;
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
// ---- Complex feature chains (4+ segments, qualified names) ----
|
|
995
|
+
package featureChains {
|
|
996
|
+
bind cruiseCtrl.speedPort.value = speedSensor.outputPort.signalValue;
|
|
997
|
+
bind engine.fuelPort.fuelType = fuelSys.supply.fuelPort.fuelType;
|
|
998
|
+
connect [1] chassis.frontAxle.leftWheel.hubPort
|
|
999
|
+
to [1] brakeSys.frontLeft.caliper.mountPort;
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
// ---- Conditional / ternary / null-coalesce expressions ----
|
|
1003
|
+
package exprCoverage {
|
|
1004
|
+
attribute ternary = a > b ? a : b;
|
|
1005
|
+
attribute coalesce = maybeNull ?? defaultVal;
|
|
1006
|
+
attribute implies = p implies q;
|
|
1007
|
+
attribute bitwise = flags & mask | shifted ^ inverted;
|
|
1008
|
+
attribute range = 1..10;
|
|
1009
|
+
attribute cast = x as Integer;
|
|
1010
|
+
attribute isinstance = y istype Real;
|
|
1011
|
+
attribute hastype = z hastype String;
|
|
1012
|
+
attribute select = items.>filter(x | x > 0);
|
|
1013
|
+
attribute collect = items->collect(x | x.name);
|
|
1014
|
+
attribute all = all v : Vehicle {| v.mass > 0 |};
|
|
1015
|
+
}
|
|
1016
|
+
|
|
1017
|
+
// ---- Assignment actions ----
|
|
1018
|
+
package assignActions {
|
|
1019
|
+
action doAssign {
|
|
1020
|
+
attribute x : Integer = 0;
|
|
1021
|
+
assign x := x + 1;
|
|
1022
|
+
assign x := if x > 10 ? 0 : x;
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
`;function Vc(){let r=U0.split(`
|
|
1027
|
+
`),e=r.slice(1,r.length-1),t=30,i=[];for(let s=0;s<e.length;s+=t){let a=e.slice(s,s+t).join(`
|
|
1028
|
+
`);i.push(`package WU_${i.length} {
|
|
1029
|
+
${a}
|
|
1030
|
+
}`)}return i}function _c(r){let e=ct.fromString(r),t=new E(e),i=new Dr(t);i.fill();let s=new n(i);s.removeErrorListeners(),s.interpreter.predictionMode=B.SLL,s.errorHandler=new Un;try{s.rootNamespace()}catch{i.seek(0),s.reset(),s.interpreter.predictionMode=B.LL,s.errorHandler=new Fr,s.removeErrorListeners();try{s.rootNamespace()}catch{}}}var M1=new Set(["about","abstract","accept","action","actor","after","alias","all","allocate","allocation","analysis","assert","assign","assume","attribute","bind","binding","calc","case","comment","concern","connect","connection","constraint","decide","def","default","defined","dependency","derived","do","doc","else","end","entry","enum","event","exhibit","exit","expose","feature","filter","first","flow","for","fork","frame","from","if","import","in","include","individual","inout","interface","item","join","language","library","locale","merge","message","meta","metadata","multiplicity","namespace","nonunique","not","null","objective","occurrence","of","ordered","out","package","parallel","part","perform","port","private","protected","public","readonly","redefines","ref","references","render","rendering","rep","require","requirement","return","satisfy","send","snapshot","specializes","stakeholder","state","subject","subsets","succession","then","timeslice","to","transition","type","use","variant","variation","verification","verify","view","viewpoint","when","while"]);function qc(r,e){let t=r.length,i=e.length,s=Array.from({length:t+1},()=>Array(i+1).fill(0));for(let a=0;a<=t;a++)s[a][0]=a;for(let a=0;a<=i;a++)s[0][a]=a;for(let a=1;a<=t;a++)for(let u=1;u<=i;u++){let c=r[a-1]===e[u-1]?0:1;s[a][u]=Math.min(s[a-1][u]+1,s[a][u-1]+1,s[a-1][u-1]+c)}return s[t][i]}function Gc(r){let e=r.toLowerCase();if(e.length<4||M1.has(e))return;let t=e.length<=5?1:2,i,s=t+1;for(let a of M1){if(Math.abs(a.length-e.length)>t)continue;let u=qc(e,a);u>0&&u<s&&(s=u,i=a)}return i}var Kc=new Set([E.IDENTIFIER,E.COLON,E.DEF,E.LBRACE,E.LBRACK,E.ABOUT]),O0=new Set([E.PART,E.PORT,E.ITEM,E.ATTRIBUTE,E.ACTION,E.CALC,E.STATE,E.CONSTRAINT,E.REQUIREMENT,E.CONCERN,E.CASE,E.ANALYSIS,E.VERIFICATION,E.VIEW,E.VIEWPOINT,E.RENDERING,E.METADATA,E.PACKAGE,E.NAMESPACE,E.ENUM,E.ALLOCATION,E.CONNECTION,E.INTERFACE,E.OCCURRENCE,E.INDIVIDUAL,E.FLOW,E.SUCCESSION,E.BINDING,E.DEF,E.COLON,E.COLON_GT,E.COLON_GT_GT,E.COLON_COLON]);function jc(r){let e=[];r.fill();let t=r.getTokens(),i=[];for(let s=0;s<t.length;s++){let a=t[s];a.channel===0&&a.type!==b.EOF&&i.push(a)}for(let s=0;s<i.length;s++){let a=i[s];if(a.type!==E.IDENTIFIER||!a.text||s>0&&O0.has(i[s-1].type))continue;let u=s===0;if(!u&&s+1<i.length&&Kc.has(i[s+1].type)&&(u=!0),!u)continue;let c=Gc(a.text);if(!c)continue;let h=(a.line??1)-1,d=a.column??0;e.push({severity:1,range:{start:{line:h,character:d},end:{line:h,character:d+a.text.length}},message:`Unknown keyword '${a.text}'. Did you mean '${c}'?`,source:"sysml"})}return e}var Qc=new Set(["about","abstract","accept","action","actor","after","alias","all","allocate","allocation","analysis","and","as","assert","assign","assume","attribute","bind","binding","bool","by","calc","case","comment","concern","connect","connection","constraint","decide","def","default","defined","dependency","derived","do","doc","else","end","entry","enum","event","exhibit","exit","expose","false","feature","filter","first","flow","for","fork","frame","from","hastype","if","implies","import","in","include","individual","inout","interface","istype","item","join","language","library","locale","merge","message","meta","metadata","multiplicity","namespace","nonunique","not","null","objective","occurrence","of","or","ordered","out","package","parallel","part","perform","port","private","protected","public","readonly","redefines","ref","references","render","rendering","rep","require","requirement","return","satisfy","send","snapshot","specializes","stakeholder","state","subject","subsets","succession","then","timeslice","to","transition","true","type","use","variant","variation","verification","verify","view","viewpoint","when","while","xor"]);var zc=3;var Yc=6,Wc=7,Xc=8,Jc=9,$c=10;function Zc(r){if(r.startsWith("/*")||r.startsWith("//"))return Wc;if(r.startsWith('"')||r.startsWith("'"))return Xc;if(/^\d/.test(r))return Jc;if(/^[+\-*/<>=!&|^~%]+$/.test(r)||r==="::"||r===":>"||r===":>>")return $c;if(Qc.has(r))return Yc;if(/^[a-zA-Z_]\w*$/.test(r))return zc}function eh(r){r.fill();let e=r.getTokens(),t=[],i=0,s=0;for(let a=0;a<e.length;a++){let u=e[a];if(!u.text||u.channel!==0)continue;let c=Zc(u.text);if(c===void 0)continue;let h=(u.line??1)-1,d=u.column??0,x=u.text.length,R=h-i,y=R===0?d-s:d;t.push(R,y,x,c,0),i=h,s=d}return t}var th=new Set([b.EOF,E.RBRACE,E.SEMI]);function rh(r,e){if(r.length===0)return r;e.fill();let t=e.getTokens(),i=[];for(let s of t)s.channel===0&&i.push(s);return r.map(s=>{let a=i.find(h=>h.line-1===s.line&&h.column===s.column);if(!a||!th.has(a.type)&&a.type!==b.EOF)return s;let u=i.indexOf(a);if(u<=0)return s;let c=i[u-1];return c.text&&c.type===E.IDENTIFIER?{line:(c.line??1)-1,column:c.column??0,length:c.text.length,message:`Unexpected identifier '${c.text}'. Expected a SysML keyword (package, part, attribute, action, etc.)`}:s})}var ih=new Set(["abstract","accept","action","actor","alias","allocate","allocation","analysis","assert","assign","assume","attribute","bind","binding","calc","case","comment","concern","connect","connection","constraint","decide","dependency","doc","end","entry","enum","event","exhibit","exit","expose","feature","filter","first","flow","for","fork","frame","if","import","in","include","individual","inout","interface","item","join","merge","message","metadata","multiplicity","namespace","objective","occurrence","of","ordered","out","package","parallel","part","perform","port","private","protected","public","readonly","redefines","ref","render","rendering","rep","require","requirement","return","satisfy","send","snapshot","specializes","stakeholder","state","subject","subsets","succession","then","timeslice","to","transition","type","use","variant","variation","verification","verify","view","viewpoint","when","while"]);function nh(r){let e=[];r.fill();let t=r.getTokens(),i=[];for(let s of t)s.channel===0&&s.type!==b.EOF&&i.push(s);for(let s=0;s<i.length;s++){let a=i[s];if(a.type!==E.IDENTIFIER||!a.text)continue;let u=a.text.toLowerCase();if(ih.has(u)||M1.has(u))continue;let c=s===0;if(!c&&s>0){let R=i[s-1].type;if((R===E.LBRACE||R===E.RBRACE||R===E.SEMI)&&(c=!0),O0.has(R)||R===E.COLON||R===E.COLON_GT||R===E.COLON_GT_GT||R===E.COLON_COLON||R===E.EQ||R===E.DOT)continue}if(!c)continue;if(s+1<i.length){let x=i[s+1];if(x.type===E.COLON||x.type===E.EQ||x.type===E.LBRACE||x.type===E.COLON_GT||x.type===E.COLON_GT_GT||x.type===E.DEF||x.type===E.SEMI||x.type===E.LBRACK)continue}let h=(a.line??1)-1,d=a.column??0;e.push({severity:1,range:{start:{line:h,character:d},end:{line:h,character:d+a.text.length}},message:`Unexpected '${a.text}'. Expected a SysML keyword (package, part, attribute, action, etc.)`,source:"sysml"})}return e}var Bu=new Set;function w0(r){let{id:e,text:t,uri:i,version:s}=r,a=Date.now(),u=ct.fromString(t),c=new E(u),h=new Dr(c);h.fill();let d=Date.now()-a,x=Date.now(),R=new n(h);R.removeErrorListeners(),R.interpreter.predictionMode=B.SLL,R.errorHandler=new Un;let y=[],N="SLL";try{R.rootNamespace()}catch{N="LL",h.seek(0),R.reset(),R.interpreter.predictionMode=B.LL,R.errorHandler=new Fr;let Oe=new Hu;c.removeErrorListeners(),R.removeErrorListeners(),R.addErrorListener(Oe);try{R.rootNamespace()}catch{}y=Oe.getErrors().map(Dt=>({line:Dt.line,column:Dt.column,message:Dt.message,length:Dt.length}))}y=rh(y,h);let se=nh(h),Lr=Date.now()-x;if(Bu.has(e)){Bu.delete(e);return}let N1=jc(h),k0=new Set(y.map(Oe=>`${Oe.line}:${Oe.column}`));for(let Oe of se){let Dt=`${Oe.range.start.line}:${Oe.range.start.character}`;k0.has(Dt)||N1.push(Oe)}let D0=eh(h),F0={id:e,uri:i,version:s,errors:y,keywordDiagnostics:N1,semanticTokenData:D0,timing:{lexMs:d,parseMs:Lr},mode:N};kt?.postMessage(F0)}setImmediate(()=>{let r=Vc(),e=Date.now(),t=!1;for(let i=0;i<r.length;i++){if(kt){let s=I0(kt);for(;s;){let a=s.message;"cancel"in a?Bu.add(a.id):(w0(a),t=!0),s=I0(kt)}}if(t){kt?.postMessage({warmup:!0,elapsed:Date.now()-e,interrupted:!0,chunksCompleted:i,totalChunks:r.length});return}try{_c(r[i])}catch{}}kt?.postMessage({warmup:!0,elapsed:Date.now()-e,interrupted:!1,chunksCompleted:r.length,totalChunks:r.length})});kt?.on("message",r=>{if("cancel"in r){Bu.add(r.id);return}w0(r)});
|