diff --git a/LibreMetaverse.LslTools/LibreMetaverse.LslTools.csproj b/LibreMetaverse.LslTools/LibreMetaverse.LslTools.csproj
new file mode 100644
index 00000000..9f432d04
--- /dev/null
+++ b/LibreMetaverse.LslTools/LibreMetaverse.LslTools.csproj
@@ -0,0 +1,42 @@
+
+
+ netstandard2.0;netstandard2.1;net5.0
+ LibreMetaverse.LslTools
+ LibreMetaverse.LslTools
+ Lexer for LSL scrripting language.
+ Tools
+ true
+ true
+ snupkg
+ 0419,1574,1591
+ x64;x86
+
+
+ TRACE;DEBUG
+ False
+
+
+ TRACE;DEBUG
+
+
+ TRACE;DEBUG
+
+
+ true
+ pdbonly
+ TRACE
+ True
+
+
+ true
+ pdbonly
+ TRACE
+ True
+
+
+ true
+ pdbonly
+ TRACE
+ True
+
+
diff --git a/LibreMetaverse.LslTools/ObjectList.cs b/LibreMetaverse.LslTools/ObjectList.cs
new file mode 100644
index 00000000..c55fe2d4
--- /dev/null
+++ b/LibreMetaverse.LslTools/ObjectList.cs
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.Collections;
+
+namespace LibreMetaverse
+{
+
+ public class ObjectList
+ {
+ private ObjectList.Link head;
+ private ObjectList.Link last;
+ private int count;
+
+ private void Add0(ObjectList.Link a)
+ {
+ if (this.head == null)
+ this.head = this.last = a;
+ else
+ this.last = this.last.next = a;
+ }
+
+ private object Get0(ObjectList.Link a, int x)
+ {
+ if (a == null || x < 0)
+ return (object)null;
+ if (x == 0)
+ return a.it;
+ return this.Get0(a.next, x - 1);
+ }
+
+ public void Add(object o)
+ {
+ this.Add0(new ObjectList.Link(o, (ObjectList.Link)null));
+ ++this.count;
+ }
+
+ public void Push(object o)
+ {
+ this.head = new ObjectList.Link(o, this.head);
+ ++this.count;
+ }
+
+ public object Pop()
+ {
+ object it = this.head.it;
+ this.head = this.head.next;
+ --this.count;
+ return it;
+ }
+
+ public object Top => this.head.it;
+
+ public int Count => this.count;
+
+ public object this[int ix] => this.Get0(this.head, ix);
+
+ public IEnumerator GetEnumerator()
+ {
+ return (IEnumerator)new ObjectList.OListEnumerator(this);
+ }
+
+ private class Link
+ {
+ internal object it;
+ internal ObjectList.Link next;
+
+ internal Link(object o, ObjectList.Link x)
+ {
+ this.it = o;
+ this.next = x;
+ }
+ }
+
+ public class OListEnumerator : IEnumerator
+ {
+ private ObjectList list;
+ private ObjectList.Link cur;
+
+ public OListEnumerator(ObjectList o)
+ {
+ this.list = o;
+ }
+
+ public object Current => this.cur.it;
+
+ public bool MoveNext()
+ {
+ this.cur = this.cur != null ? this.cur.next : this.list.head;
+ return this.cur != null;
+ }
+
+ public void Reset()
+ {
+ this.cur = (ObjectList.Link)null;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/LibreMetaverse.LslTools/Tools/AddToFunc.cs b/LibreMetaverse.LslTools/Tools/AddToFunc.cs
new file mode 100644
index 00000000..afbe2074
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/AddToFunc.cs
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public delegate void AddToFunc(Transition a, SymbolSet s);
+}
diff --git a/LibreMetaverse.LslTools/Tools/Arc.cs b/LibreMetaverse.LslTools/Tools/Arc.cs
new file mode 100644
index 00000000..70362d59
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Arc.cs
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.IO;
+
+namespace LibreMetaverse.LslTools
+{
+ internal class Arc
+ {
+ public char m_ch;
+ public NfaNode m_next;
+
+ public Arc()
+ {
+ }
+
+ public Arc(char ch, NfaNode next)
+ {
+ this.m_ch = ch;
+ this.m_next = next;
+ }
+
+ public virtual bool Match(char ch)
+ {
+ return (int) ch == (int) this.m_ch;
+ }
+
+ public virtual void Print(TextWriter s)
+ {
+ s.WriteLine(string.Format(" {0} {1}", (object) this.m_ch, (object) this.m_next.m_state));
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ArcEx.cs b/LibreMetaverse.LslTools/Tools/ArcEx.cs
new file mode 100644
index 00000000..642014a7
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ArcEx.cs
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.IO;
+
+namespace LibreMetaverse.LslTools
+{
+ internal class ArcEx : Arc
+ {
+ public Regex m_ref;
+
+ public ArcEx(Regex re, NfaNode next)
+ {
+ this.m_ref = re;
+ this.m_next = next;
+ }
+
+ public override bool Match(char ch)
+ {
+ return this.m_ref.Match(ch);
+ }
+
+ public override void Print(TextWriter s)
+ {
+ s.Write(" ");
+ this.m_ref.Print(s);
+ s.WriteLine(this.m_next.m_state);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/Builder.cs b/LibreMetaverse.LslTools/Tools/Builder.cs
new file mode 100644
index 00000000..8f472da5
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Builder.cs
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public delegate void Builder(Transition t);
+}
diff --git a/LibreMetaverse.LslTools/Tools/CSToolsException.cs b/LibreMetaverse.LslTools/Tools/CSToolsException.cs
new file mode 100644
index 00000000..f05b83ea
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/CSToolsException.cs
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+
+namespace LibreMetaverse.LslTools
+{
+ public class CSToolsException : Exception
+ {
+ public int nExceptionNumber;
+ public SourceLineInfo slInfo;
+ public string sInput;
+ public SYMBOL sym;
+ public bool handled;
+
+ public CSToolsException(int n, string s)
+ : this(n, new SourceLineInfo(0), "", s)
+ {
+ }
+
+ public CSToolsException(int n, Lexer yl, string s)
+ : this(n, yl, yl.yytext, s)
+ {
+ }
+
+ public CSToolsException(int n, Lexer yl, string yy, string s)
+ : this(n, yl, yl.m_pch, yy, s)
+ {
+ }
+
+ public CSToolsException(int n, TOKEN t, string s)
+ : this(n, t.yylx, t.pos, t.yytext, s)
+ {
+ this.sym = (SYMBOL) t;
+ }
+
+ public CSToolsException(int n, SYMBOL t, string s)
+ : this(n, t.yylx, t.pos, t.yyname, s)
+ {
+ this.sym = t;
+ }
+
+ public CSToolsException(int en, Lexer yl, int p, string y, string s)
+ : this(en, yl.sourceLineInfo(p), y, s)
+ {
+ }
+
+ public CSToolsException(int en, SourceLineInfo s, string y, string m)
+ : base(s.ToString() + ": " + m)
+ {
+ this.nExceptionNumber = en;
+ this.slInfo = s;
+ this.sInput = y;
+ }
+
+ public virtual void Handle(ErrorHandler erh)
+ {
+ if (erh.throwExceptions)
+ throw this;
+ if (this.handled)
+ return;
+ this.handled = true;
+ erh.Report(this);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/CSToolsFatalException.cs b/LibreMetaverse.LslTools/Tools/CSToolsFatalException.cs
new file mode 100644
index 00000000..b53bf842
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/CSToolsFatalException.cs
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class CSToolsFatalException : CSToolsException
+ {
+ public CSToolsFatalException(int n, string s)
+ : base(n, s)
+ {
+ }
+
+ public CSToolsFatalException(int n, Lexer yl, string s)
+ : base(n, yl, yl.yytext, s)
+ {
+ }
+
+ public CSToolsFatalException(int n, Lexer yl, string yy, string s)
+ : base(n, yl, yl.m_pch, yy, s)
+ {
+ }
+
+ public CSToolsFatalException(int n, Lexer yl, int p, string y, string s)
+ : base(n, yl, p, y, s)
+ {
+ }
+
+ public CSToolsFatalException(int n, TOKEN t, string s)
+ : base(n, t, s)
+ {
+ }
+
+ public CSToolsFatalException(int en, SourceLineInfo s, string y, string m)
+ : base(en, s, y, m)
+ {
+ }
+
+ public override void Handle(ErrorHandler erh)
+ {
+ throw this;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/CSToolsStopException.cs b/LibreMetaverse.LslTools/Tools/CSToolsStopException.cs
new file mode 100644
index 00000000..fc43ec65
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/CSToolsStopException.cs
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class CSToolsStopException : CSToolsException
+ {
+ public CSToolsStopException(int n, string s)
+ : base(n, s)
+ {
+ }
+
+ public CSToolsStopException(int n, Lexer yl, string s)
+ : base(n, yl, yl.yytext, s)
+ {
+ }
+
+ public CSToolsStopException(int n, Lexer yl, string yy, string s)
+ : base(n, yl, yl.m_pch, yy, s)
+ {
+ }
+
+ public CSToolsStopException(int n, Lexer yl, int p, string y, string s)
+ : base(n, yl, p, y, s)
+ {
+ }
+
+ public CSToolsStopException(int n, TOKEN t, string s)
+ : base(n, t, s)
+ {
+ }
+
+ public CSToolsStopException(int n, SYMBOL t, string s)
+ : base(n, t, s)
+ {
+ }
+
+ public CSToolsStopException(int en, SourceLineInfo s, string y, string m)
+ : base(en, s, y, m)
+ {
+ }
+
+ public override void Handle(ErrorHandler erh)
+ {
+ throw this;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/CSymbol.cs b/LibreMetaverse.LslTools/Tools/CSymbol.cs
new file mode 100644
index 00000000..78bc2489
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/CSymbol.cs
@@ -0,0 +1,228 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections;
+
+namespace LibreMetaverse.LslTools
+{
+ public class CSymbol : TOKEN
+ {
+ public int m_yynum = -1;
+ public ObjectList m_prods = new ObjectList();
+ public string m_initialisation = "";
+ public CSymbol.SymType m_symtype;
+ public SymbolsGen m_parser;
+ public Precedence m_prec;
+ public SymbolSet m_first;
+ public SymbolSet m_follow;
+ private object isNullable;
+ public CSymbol m_refSymbol;
+ public bool m_defined;
+ public bool m_emitted;
+ public Production m_prod;
+
+ public CSymbol(Lexer yyl)
+ : base(yyl)
+ {
+ }
+
+ public CSymbol(SymbolsGen yyp)
+ : base(yyp.m_lexer)
+ {
+ this.m_parser = yyp;
+ this.m_symtype = CSymbol.SymType.unknown;
+ this.m_prec = (Precedence) null;
+ this.m_prod = (Production) null;
+ this.m_refSymbol = (CSymbol) null;
+ this.m_first = new SymbolSet(yyp);
+ this.m_follow = new SymbolSet(yyp);
+ }
+
+ protected CSymbol()
+ {
+ }
+
+ public override bool IsTerminal()
+ {
+ return this.m_symtype == CSymbol.SymType.terminal;
+ }
+
+ public virtual CSymbol Resolve()
+ {
+ if (this.yytext == "EOF")
+ this.m_yynum = 2;
+ CSymbol symbol = (CSymbol) this.m_parser.m_symbols.symbols[(object) this.yytext];
+ if (symbol != null)
+ return symbol;
+ if (this.m_yynum < 0)
+ this.m_yynum = ++this.m_parser.LastSymbol;
+ this.m_parser.m_symbols.symbols[(object) this.yytext] = (object) this;
+ return this;
+ }
+
+ public override bool Matches(string s)
+ {
+ return false;
+ }
+
+ internal ParseState Next(ParseState p)
+ {
+ if (!p.m_transitions.Contains((object) this.yytext))
+ return (ParseState) null;
+ return ((Transition) p.m_transitions[(object) this.yytext]).m_next?.m_next;
+ }
+
+ internal Hashtable Reduce(ParseState p)
+ {
+ if (!p.m_transitions.Contains((object) this.yytext))
+ return (Hashtable) null;
+ return ((Transition) p.m_transitions[(object) this.yytext]).m_reduce;
+ }
+
+ public virtual string TypeStr()
+ {
+ return this.yytext;
+ }
+
+ public Precedence.PrecType ShiftPrecedence(Production prod, ParseState ps)
+ {
+ if (prod == null || !prod.m_lhs.m_follow.Contains(this))
+ return Precedence.PrecType.left;
+ if (this.m_prec == null)
+ {
+ Console.WriteLine("Shift/Reduce conflict {0} on reduction {1} in state {2}", (object) this.yytext, (object) prod.m_pno, (object) ps.m_state);
+ return Precedence.PrecType.left;
+ }
+ if (this.m_prec.m_type == Precedence.PrecType.nonassoc)
+ return Precedence.PrecType.nonassoc;
+ int num = Precedence.Check(this, prod, 0);
+ if (num == 0)
+ return Precedence.Check(this.m_prec, Precedence.PrecType.right, 0) != 0 ? Precedence.PrecType.left : Precedence.PrecType.right;
+ return num > 0 ? Precedence.PrecType.left : Precedence.PrecType.right;
+ }
+
+ public bool AddFollow(SymbolSet map)
+ {
+ bool flag = false;
+ foreach (CSymbol key in (IEnumerable) map.Keys)
+ flag |= this.m_follow.CheckIn(key);
+ return flag;
+ }
+
+ public void AddStartItems(ParseState pstate, SymbolSet follows)
+ {
+ foreach (var p in this.m_prods)
+ {
+ Production prod = (Production) p;
+ pstate.MaybeAdd(new ProdItem(prod, 0));
+ }
+ }
+
+ public bool IsNullable()
+ {
+ if (this.isNullable == null)
+ {
+ switch (this.m_symtype)
+ {
+ case CSymbol.SymType.terminal:
+ this.isNullable = (object) false;
+ break;
+ case CSymbol.SymType.nonterminal:
+ this.isNullable = (object) false;
+ IEnumerator enumerator = this.m_prods.GetEnumerator();
+ try
+ {
+ while (enumerator.MoveNext())
+ {
+ Production current = (Production) enumerator.Current;
+ bool flag = true;
+ foreach (CSymbol rh in current.m_rhs)
+ {
+ if (!rh.IsNullable())
+ {
+ flag = false;
+ break;
+ }
+ }
+ if (flag)
+ {
+ this.isNullable = (object) true;
+ break;
+ }
+ }
+ break;
+ }
+ finally
+ {
+ (enumerator as IDisposable)?.Dispose();
+ }
+ case CSymbol.SymType.oldaction:
+ this.isNullable = (object) true;
+ break;
+ case CSymbol.SymType.simpleaction:
+ this.isNullable = (object) true;
+ break;
+ case CSymbol.SymType.eofsymbol:
+ this.isNullable = (object) false;
+ break;
+ default:
+ throw new Exception("unexpected symbol type");
+ }
+ }
+ return (bool) this.isNullable;
+ }
+
+ public static object Serialise(object o, Serialiser s)
+ {
+ if (s == null)
+ return (object) new CSymbol();
+ CSymbol csymbol = (CSymbol) o;
+ if (s.Encode)
+ {
+ s.Serialise((object) csymbol.yytext);
+ s.Serialise((object) csymbol.m_yynum);
+ s.Serialise((object) (int) csymbol.m_symtype);
+ return (object) null;
+ }
+ csymbol.yytext = (string) s.Deserialise();
+ csymbol.m_yynum = (int) s.Deserialise();
+ csymbol.m_symtype = (CSymbol.SymType) s.Deserialise();
+ return (object) csymbol;
+ }
+
+ public enum SymType
+ {
+ unknown,
+ terminal,
+ nonterminal,
+ nodesymbol,
+ oldaction,
+ simpleaction,
+ eofsymbol,
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/CatTest.cs b/LibreMetaverse.LslTools/Tools/CatTest.cs
new file mode 100644
index 00000000..624c543b
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/CatTest.cs
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.Globalization;
+
+namespace LibreMetaverse.LslTools
+{
+ public class CatTest
+ {
+ private UnicodeCategory cat;
+
+ public CatTest(UnicodeCategory c)
+ {
+ this.cat = c;
+ }
+
+ public bool Test(char ch)
+ {
+ return char.GetUnicodeCategory(ch) == this.cat;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ChTest.cs b/LibreMetaverse.LslTools/Tools/ChTest.cs
new file mode 100644
index 00000000..797bdfbf
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ChTest.cs
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ internal delegate bool ChTest(char ch);
+}
diff --git a/LibreMetaverse.LslTools/Tools/Charset.cs b/LibreMetaverse.LslTools/Tools/Charset.cs
new file mode 100644
index 00000000..bb308a5e
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Charset.cs
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections;
+using System.Globalization;
+using System.Text;
+
+namespace LibreMetaverse.LslTools
+{
+ public class Charset
+ {
+ internal Hashtable m_chars = new Hashtable();
+ internal UnicodeCategory m_cat;
+ internal char m_generic;
+
+ private Charset()
+ {
+ }
+
+ internal Charset(UnicodeCategory cat)
+ {
+ this.m_cat = cat;
+ this.m_generic = char.MinValue;
+ while (char.GetUnicodeCategory(this.m_generic) != cat)
+ ++this.m_generic;
+ this.m_chars[(object) this.m_generic] = (object) true;
+ }
+
+ public static Encoding GetEncoding(string enc, ref bool toupper, ErrorHandler erh)
+ {
+ string str1 = enc;
+ if (str1 != null)
+ {
+ string str2 = string.IsInterned(str1);
+ if ((object) str2 == (object) "")
+ return Encoding.Default;
+ if ((object) str2 == (object) "ASCII")
+ return Encoding.ASCII;
+ if ((object) str2 == (object) "ASCIICAPS")
+ {
+ toupper = true;
+ return Encoding.ASCII;
+ }
+ if ((object) str2 == (object) "UTF7")
+ return Encoding.UTF7;
+ if ((object) str2 == (object) "UTF8")
+ return Encoding.UTF8;
+ if ((object) str2 == (object) "Unicode")
+ return Encoding.Unicode;
+ }
+ try
+ {
+ if (char.IsDigit(enc[0]))
+ return Encoding.GetEncoding(int.Parse(enc));
+ return Encoding.GetEncoding(enc);
+ }
+ catch (Exception)
+ {
+ erh.Error(new CSToolsException(43, "Warning: Encoding " + enc + " unknown: ignored"));
+ }
+ return Encoding.ASCII;
+ }
+
+ public static object Serialise(object o, Serialiser s)
+ {
+ if (s == null)
+ return (object) new Charset();
+ Charset charset = (Charset) o;
+ if (s.Encode)
+ {
+ s.Serialise((object) (int) charset.m_cat);
+ s.Serialise((object) charset.m_generic);
+ s.Serialise((object) charset.m_chars);
+ return (object) null;
+ }
+ charset.m_cat = (UnicodeCategory) s.Deserialise();
+ charset.m_generic = (char) s.Deserialise();
+ charset.m_chars = (Hashtable) s.Deserialise();
+ return (object) charset;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/CommentList.cs b/LibreMetaverse.LslTools/Tools/CommentList.cs
new file mode 100644
index 00000000..55040ced
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/CommentList.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class CommentList
+ {
+ public int spos;
+ public int len;
+ public CommentList tail;
+
+ public CommentList(int st, int ln, CommentList t)
+ {
+ this.spos = st;
+ this.len = ln;
+ this.tail = t;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/CsReader.cs b/LibreMetaverse.LslTools/Tools/CsReader.cs
new file mode 100644
index 00000000..78cc6392
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/CsReader.cs
@@ -0,0 +1,251 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.IO;
+using System.Text;
+
+namespace LibreMetaverse.LslTools
+{
+ public class CsReader
+ {
+ public string fname = "";
+ public LineManager lm = new LineManager();
+ private bool sol = true;
+ private TextReader m_stream;
+ private int back;
+ private CsReader.State state;
+ private int pos;
+
+ public CsReader(string data)
+ {
+ this.m_stream = (TextReader) new StringReader(data);
+ this.state = CsReader.State.copy;
+ this.back = -1;
+ }
+
+ public CsReader(string fileName, Encoding enc)
+ {
+ this.fname = fileName;
+ this.m_stream = (TextReader) new StreamReader((Stream) new FileStream(fileName, FileMode.Open, FileAccess.Read), enc);
+ this.state = CsReader.State.copy;
+ this.back = -1;
+ }
+
+ public CsReader(CsReader inf, Encoding enc)
+ {
+ this.fname = inf.fname;
+ this.m_stream = !(inf.m_stream is StreamReader) ? (TextReader) new StreamReader(inf.m_stream.ReadToEnd()) : (TextReader) new StreamReader(((StreamReader) inf.m_stream).BaseStream, enc);
+ this.state = CsReader.State.copy;
+ this.back = -1;
+ }
+
+ public bool Eof()
+ {
+ return this.state == CsReader.State.at_eof;
+ }
+
+ public int Read(char[] arr, int offset, int count)
+ {
+ int num1 = 0;
+ while (count > 0)
+ {
+ int num2 = this.Read();
+ if (num2 >= 0)
+ {
+ arr[offset + num1] = (char) num2;
+ --count;
+ ++num1;
+ }
+ else
+ break;
+ }
+ return num1;
+ }
+
+ public string ReadLine()
+ {
+ int num1 = 0;
+ char[] chArray = new char[1024];
+ int num2 = 1024;
+ int length = 0;
+ for (; num2 > 0; --num2)
+ {
+ num1 = this.Read();
+ if ((ushort) num1 != (ushort) 13)
+ {
+ if (num1 >= 0 && (ushort) num1 != (ushort) 10)
+ chArray[length++] = (char) num1;
+ else
+ break;
+ }
+ }
+ if (num1 < 0)
+ this.state = CsReader.State.at_eof;
+ return new string(chArray, 0, length);
+ }
+
+ public int Read()
+ {
+ int len = 0;
+ if (this.state == CsReader.State.at_eof)
+ return -1;
+ int num;
+ while (true)
+ {
+ do
+ {
+ do
+ {
+ if (this.back >= 0)
+ {
+ num = this.back;
+ this.back = -1;
+ }
+ else
+ num = this.state != CsReader.State.at_eof ? this.m_stream.Read() : -1;
+ }
+ while (num == 13);
+ while (this.sol && num == 35)
+ {
+ while (num != 32)
+ num = this.m_stream.Read();
+ this.lm.lines = 0;
+ while (num == 32)
+ num = this.m_stream.Read();
+ for (; num >= 48 && num <= 57; num = this.m_stream.Read())
+ this.lm.lines = this.lm.lines * 10 + (num - 48);
+ while (num == 32)
+ num = this.m_stream.Read();
+ if (num == 34)
+ {
+ this.fname = "";
+ for (num = this.m_stream.Read(); num != 34; num = this.m_stream.Read())
+ this.fname += (string) (object) num;
+ }
+ while (num != 10)
+ num = this.m_stream.Read();
+ if (num == 13)
+ num = this.m_stream.Read();
+ }
+ if (num < 0)
+ {
+ if (this.state == CsReader.State.sol)
+ num = 47;
+ this.state = CsReader.State.at_eof;
+ ++this.pos;
+ return num;
+ }
+ this.sol = false;
+ switch (this.state)
+ {
+ case CsReader.State.copy:
+ switch (num)
+ {
+ case 10:
+ this.lm.newline(this.pos);
+ this.sol = true;
+ break;
+ case 47:
+ this.state = CsReader.State.sol;
+ continue;
+ }
+ ++this.pos;
+ return num;
+ case CsReader.State.sol:
+ switch (num)
+ {
+ case 42:
+ this.state = CsReader.State.c_com;
+ continue;
+ case 47:
+ len = 2;
+ this.state = CsReader.State.cpp_com;
+ continue;
+ default:
+ this.back = num;
+ this.state = CsReader.State.copy;
+ ++this.pos;
+ return 47;
+ }
+ case CsReader.State.c_com:
+ ++len;
+ if (num == 10)
+ {
+ this.lm.newline(this.pos);
+ len = 0;
+ this.sol = true;
+ }
+ continue;
+ case CsReader.State.cpp_com:
+ goto label_45;
+ case CsReader.State.c_star:
+ goto label_41;
+ default:
+ continue;
+ }
+ }
+ while (num != 42);
+ this.state = CsReader.State.c_star;
+ continue;
+label_41:
+ ++len;
+ switch (num)
+ {
+ case 42:
+ this.state = CsReader.State.c_star;
+ continue;
+ case 47:
+ this.lm.comment(this.pos, len);
+ this.state = CsReader.State.copy;
+ continue;
+ default:
+ this.state = CsReader.State.c_com;
+ continue;
+ }
+label_45:
+ if (num != 10)
+ ++len;
+ else
+ break;
+ }
+ this.state = CsReader.State.copy;
+ this.sol = true;
+ ++this.pos;
+ return num;
+ }
+
+ private enum State
+ {
+ copy,
+ sol,
+ c_com,
+ cpp_com,
+ c_star,
+ at_eof,
+ transparent,
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/Dfa.cs b/LibreMetaverse.LslTools/Tools/Dfa.cs
new file mode 100644
index 00000000..2f6991e4
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Dfa.cs
@@ -0,0 +1,305 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections;
+
+namespace LibreMetaverse.LslTools
+{
+ public class Dfa : LNode
+ {
+ public Hashtable m_map = new Hashtable();
+ public string m_tokClass = "";
+ public int m_reswds = -1;
+ internal NList m_nfa = new NList();
+ private YyLexer m_tokens;
+ public Dfa.Action m_actions;
+
+ private Dfa()
+ {
+ }
+
+ public Dfa(TokensGen tks)
+ : base(tks)
+ {
+ this.m_tokens = tks.m_tokens;
+ }
+
+ public Dfa(Nfa nfa)
+ : base(nfa.m_tks)
+ {
+ this.m_tokens = this.m_tks.m_tokens;
+ this.AddNfaNode((NfaNode) nfa);
+ this.Closure();
+ this.AddActions();
+ }
+
+ public static void SetTokens(YyLexer tks, Hashtable h)
+ {
+ foreach (Dfa dfa in (IEnumerable) h.Values)
+ {
+ if (dfa.m_tokens == null)
+ {
+ dfa.m_tokens = tks;
+ Dfa.SetTokens(tks, dfa.m_map);
+ }
+ }
+ }
+
+ private void AddAction(int act)
+ {
+ this.m_actions = new Dfa.Action(act, this.m_actions);
+ }
+
+ private void MakeLastAction(int act)
+ {
+ while (this.m_actions != null && this.m_actions.a_act >= act)
+ this.m_actions = this.m_actions.a_next;
+ this.AddAction(act);
+ }
+
+ internal bool AddNfaNode(NfaNode nfa)
+ {
+ if (!this.m_nfa.Add(nfa))
+ return false;
+ if (nfa.m_sTerminal != "")
+ {
+ int length = 0;
+ string str1 = "";
+ string sTerminal = nfa.m_sTerminal;
+ if (sTerminal[0] == '%')
+ {
+ length = 0;
+ int index = 1;
+ while (index < sTerminal.Length && (sTerminal[index] != ' ' && sTerminal[index] != '\t') && (sTerminal[index] != '\n' && sTerminal[index] != '{' && sTerminal[index] != ':'))
+ {
+ ++index;
+ ++length;
+ }
+ str1 = nfa.m_sTerminal.Substring(1, length);
+ }
+ if (length > 0 && length + 1 < sTerminal.Length)
+ {
+ string str2 = nfa.m_sTerminal.Substring(length + 1).Trim();
+ if (str2.Length > 0 && str2.StartsWith("%except"))
+ {
+ this.m_reswds = nfa.m_state;
+ this.m_tks.m_tokens.reswds[(object) nfa.m_state] = (object) ResWds.New(this.m_tks, str2.Substring(7));
+ }
+ }
+ if (str1 == "")
+ {
+ if (this.m_tokClass == "" || this.m_actions.a_act > nfa.m_state)
+ this.AddAction(nfa.m_state);
+ }
+ else if (this.m_actions == null || this.m_actions.a_act > nfa.m_state)
+ {
+ this.MakeLastAction(nfa.m_state);
+ this.m_tokClass = str1;
+ }
+ }
+ return true;
+ }
+
+ internal void AddActions()
+ {
+ this.m_tks.states.Add((object) this);
+ foreach (Charset charset in (IEnumerable) this.m_tks.m_tokens.cats.Values)
+ {
+ foreach (char key in (IEnumerable) charset.m_chars.Keys)
+ {
+ Dfa dfa = this.Target(key);
+ if (dfa != null)
+ this.m_map[(object) key] = (object) dfa;
+ }
+ }
+ }
+
+ internal Dfa Target(char ch)
+ {
+ Dfa dfa = new Dfa(this.m_tks);
+ for (NList nlist = this.m_nfa; !nlist.AtEnd; nlist = nlist.m_next)
+ nlist.m_node.AddTarget(ch, dfa);
+ if (dfa.m_nfa.AtEnd)
+ return (Dfa) null;
+ dfa.Closure();
+ foreach (var t in this.m_tks.states)
+ {
+ if (((Dfa) t).SameAs(dfa))
+ return (Dfa) t;
+ }
+ dfa.AddActions();
+ return dfa;
+ }
+
+ private void Closure()
+ {
+ for (NList nlist = this.m_nfa; !nlist.AtEnd; nlist = nlist.m_next)
+ this.ClosureAdd(nlist.m_node);
+ }
+
+ private void ClosureAdd(NfaNode nfa)
+ {
+ foreach (var t in nfa.m_eps)
+ {
+ NfaNode ep = (NfaNode) t;
+ if (this.AddNfaNode(ep))
+ this.ClosureAdd(ep);
+ }
+ }
+
+ internal bool SameAs(Dfa dfa)
+ {
+ NList nlist1 = this.m_nfa;
+ NList nlist2;
+ for (nlist2 = dfa.m_nfa; nlist1.m_node == nlist2.m_node && !nlist1.AtEnd; nlist2 = nlist2.m_next)
+ nlist1 = nlist1.m_next;
+ return nlist1.m_node == nlist2.m_node;
+ }
+
+ public int Match(string str, int ix, ref int action)
+ {
+ Dfa dfa;
+ int num;
+ if (ix < str.Length && (dfa = (Dfa) this.m_map[(object) this.m_tokens.Filter(str[ix])]) != null && (num = dfa.Match(str, ix + 1, ref action)) >= 0)
+ return num + 1;
+ if (this.m_actions == null)
+ return -1;
+ action = this.m_actions.a_act;
+ return 0;
+ }
+
+ public void Print()
+ {
+ Console.Write("{0}:", (object) this.m_state);
+ if (this.m_actions != null)
+ {
+ Console.Write(" (");
+ for (Dfa.Action action = this.m_actions; action != null; action = action.a_next)
+ Console.Write("{0} <", (object) action.a_act);
+ if (this.m_tokClass != "")
+ Console.Write(this.m_tokClass);
+ Console.Write(">)");
+ }
+ Console.WriteLine();
+ Hashtable hashtable = new Hashtable();
+ IDictionaryEnumerator enumerator1 = this.m_map.GetEnumerator();
+ int count = this.m_map.Count;
+ while (count-- > 0)
+ {
+ enumerator1.MoveNext();
+ char key1 = (char) enumerator1.Key;
+ Dfa dfa1 = (Dfa) enumerator1.Value;
+ if (!hashtable.Contains((object) key1))
+ {
+ hashtable[(object) key1] = (object) true;
+ Console.Write(" {0} ", (object) dfa1.m_state);
+ int num1 = (int) key1;
+ if (num1 >= 32 && num1 < 128)
+ Console.Write(key1);
+ else
+ Console.Write(" #{0} ", (object) num1);
+ IDictionaryEnumerator enumerator2 = this.m_map.GetEnumerator();
+ do
+ {
+ enumerator2.MoveNext();
+ }
+ while ((Dfa) enumerator2.Value != dfa1);
+ for (int index = count; index > 0; --index)
+ {
+ enumerator2.MoveNext();
+ char key2 = (char) enumerator2.Key;
+ Dfa dfa2 = (Dfa) enumerator2.Value;
+ if (dfa1 == dfa2)
+ {
+ hashtable[(object) key2] = (object) true;
+ int num2 = (int) key2;
+ if (num2 >= 32 && num2 < 128)
+ Console.Write(key2);
+ else
+ Console.Write(" #{0} ", (object) num2);
+ }
+ }
+ Console.WriteLine();
+ }
+ }
+ }
+
+ public static object Serialise(object o, Serialiser s)
+ {
+ if (s == null)
+ return (object) new Dfa();
+ Dfa dfa = (Dfa) o;
+ if (s.Encode)
+ {
+ s.Serialise((object) dfa.m_state);
+ s.Serialise((object) dfa.m_map);
+ s.Serialise((object) dfa.m_actions);
+ s.Serialise((object) dfa.m_tokClass);
+ s.Serialise((object) dfa.m_reswds);
+ return (object) null;
+ }
+ dfa.m_state = (int) s.Deserialise();
+ dfa.m_map = (Hashtable) s.Deserialise();
+ dfa.m_actions = (Dfa.Action) s.Deserialise();
+ dfa.m_tokClass = (string) s.Deserialise();
+ dfa.m_reswds = (int) s.Deserialise();
+ return (object) dfa;
+ }
+
+ public class Action
+ {
+ public int a_act;
+ public Dfa.Action a_next;
+
+ public Action(int act, Dfa.Action next)
+ {
+ this.a_act = act;
+ this.a_next = next;
+ }
+
+ private Action()
+ {
+ }
+
+ public static object Serialise(object o, Serialiser s)
+ {
+ if (s == null)
+ return (object) new Dfa.Action();
+ Dfa.Action action = (Dfa.Action) o;
+ if (s.Encode)
+ {
+ s.Serialise((object) action.a_act);
+ s.Serialise((object) action.a_next);
+ return (object) null;
+ }
+ action.a_act = (int) s.Deserialise();
+ action.a_next = (Dfa.Action) s.Deserialise();
+ return (object) action;
+ }
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/EOF.cs b/LibreMetaverse.LslTools/Tools/EOF.cs
new file mode 100644
index 00000000..8d063aff
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/EOF.cs
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class EOF : CSymbol
+ {
+ public EOF(SymbolsGen yyp)
+ : base(yyp)
+ {
+ this.yytext = nameof (EOF);
+ this.m_yynum = 2;
+ this.m_symtype = CSymbol.SymType.eofsymbol;
+ }
+
+ public EOF(Lexer yyl)
+ : base(yyl)
+ {
+ this.yytext = nameof (EOF);
+ this.pos = yyl.m_LineManager.end;
+ this.m_symtype = CSymbol.SymType.eofsymbol;
+ }
+
+ private EOF()
+ {
+ }
+
+ public override string yyname => nameof (EOF);
+
+ public override int yynum => 2;
+
+ public new static object Serialise(object o, Serialiser s)
+ {
+ if (s == null)
+ return (object) new EOF();
+ return CSymbol.Serialise(o, s);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ErrorHandler.cs b/LibreMetaverse.LslTools/Tools/ErrorHandler.cs
new file mode 100644
index 00000000..4f50dd70
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ErrorHandler.cs
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+
+namespace LibreMetaverse.LslTools
+{
+ public class ErrorHandler
+ {
+ public int counter;
+ public bool throwExceptions;
+
+ public ErrorHandler()
+ {
+ }
+
+ public ErrorHandler(bool ee)
+ {
+ this.throwExceptions = ee;
+ }
+
+ public virtual void Error(CSToolsException e)
+ {
+ ++this.counter;
+ e.Handle(this);
+ }
+
+ public virtual void Report(CSToolsException e)
+ {
+ Console.WriteLine(e.Message);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/Func.cs b/LibreMetaverse.LslTools/Tools/Func.cs
new file mode 100644
index 00000000..8950de17
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Func.cs
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public delegate SymbolSet Func(Transition a);
+}
diff --git a/LibreMetaverse.LslTools/Tools/GenBase.cs b/LibreMetaverse.LslTools/Tools/GenBase.cs
new file mode 100644
index 00000000..0b177b45
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/GenBase.cs
@@ -0,0 +1,245 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.IO;
+using System.Text;
+using YYClass;
+
+namespace LibreMetaverse.LslTools
+{
+ public class GenBase
+ {
+ protected Encoding m_scriptEncoding = Encoding.ASCII;
+ public string m_outname = "tokens";
+ public int LastSymbol = 2;
+ public ErrorHandler erh;
+ public TextWriter m_outFile;
+ protected bool toupper;
+ public Production m_prod;
+
+ protected GenBase(ErrorHandler eh)
+ {
+ this.erh = eh;
+ }
+
+ protected string ScriptEncoding
+ {
+ set => this.m_scriptEncoding = Charset.GetEncoding(value, ref this.toupper, this.erh);
+ }
+
+ protected int Braces(int a, string b, ref int p, int max)
+ {
+ int num1 = a;
+ int num2 = 0;
+ while (p < max)
+ {
+ if (b[p] == '\\')
+ ++p;
+ else if (num2 == 0 && b[p] == '{')
+ ++num1;
+ else if (num2 == 0 && b[p] == '}')
+ {
+ if (--num1 == 0)
+ {
+ ++p;
+ break;
+ }
+ }
+ else if ((int) b[p] == num2)
+ num2 = 0;
+ else if (num2 == 0 && (b[p] == '\'' || b[p] == '"'))
+ num2 = (int) b[p];
+ ++p;
+ }
+ return num1;
+ }
+
+ protected string ToBraceIfFound(ref string buf, ref int p, ref int max, CsReader inf)
+ {
+ int num = p;
+ int a = this.Braces(0, buf, ref p, max);
+ string str1 = buf.Substring(num, p - num);
+ while (inf != null && a > 0)
+ {
+ buf = inf.ReadLine();
+ if (buf == null || p == 0)
+ this.Error(47, num, "EOF in action or class def??");
+ max = buf.Length;
+ p = 0;
+ string str2 = str1 + (object) '\n';
+ a = this.Braces(a, buf, ref p, max);
+ str1 = str2 + buf.Substring(0, p);
+ }
+ return str1;
+ }
+
+ public bool White(string buf, ref int offset, int max)
+ {
+ while (offset < max && (buf[offset] == ' ' || buf[offset] == '\t'))
+ ++offset;
+ return offset < max;
+ }
+
+ public bool NonWhite(string buf, ref int offset, int max)
+ {
+ while (offset < max && buf[offset] != ' ' && buf[offset] != '\t')
+ ++offset;
+ return offset < max;
+ }
+
+ public int EmitClassDefin(
+ string b,
+ ref int p,
+ int max,
+ CsReader inf,
+ string defbas,
+ out string bas,
+ out string name,
+ bool lx)
+ {
+ bool flag = false;
+ name = "";
+ bas = defbas;
+ if (lx)
+ this.NonWhite(b, ref p, max);
+ this.White(b, ref p, max);
+ while (p < max && b[p] != '{' && (b[p] != ':' && b[p] != ';') && (b[p] != ' ' && b[p] != '\t' && b[p] != '\n'))
+ {
+ name += (string) (object) b[p];
+ ++p;
+ }
+ this.White(b, ref p, max);
+ if (b[p] == ':')
+ {
+ ++p;
+ this.White(b, ref p, max);
+ bas = "";
+ while (p < max && b[p] != ' ' && (b[p] != '{' && b[p] != '\t') && (b[p] != ';' && b[p] != '\n'))
+ {
+ bas += (string) (object) b[p];
+ ++p;
+ }
+ }
+ int yynum = new TokClassDef(this, name, bas).m_yynum;
+ this.m_outFile.WriteLine("//%+{0}+{1}", (object) name, (object) yynum);
+ this.m_outFile.Write("public class ");
+ this.m_outFile.Write(name);
+ this.m_outFile.Write(" : " + bas);
+ this.m_outFile.WriteLine("{");
+ do
+ {
+ if (p >= max)
+ {
+ b += inf.ReadLine();
+ max = b.Length;
+ }
+ this.White(b, ref p, max);
+ }
+ while (p >= max);
+ if (b[p] != ';')
+ {
+ cs0syntax cs0syntax = new cs0syntax((YyParser) new yycs0syntax(), this.erh);
+ ((cs0tokens) cs0syntax.m_lexer).Out = this.m_outname;
+ cs0syntax.Cls = name;
+ cs0syntax.Out = this.m_outname;
+ if (lx)
+ {
+ cs0syntax.Ctx = "Lexer yyl";
+ cs0syntax.Par = "yym";
+ }
+ else
+ {
+ cs0syntax.Ctx = "Parser yyp";
+ cs0syntax.Par = "yyq";
+ }
+ string braceIfFound = this.ToBraceIfFound(ref b, ref p, ref max, inf);
+ TOKEN token = (TOKEN) null;
+ try
+ {
+ token = (TOKEN) cs0syntax.Parse(braceIfFound);
+ }
+ catch (Exception)
+ {
+ }
+ if (token == null)
+ {
+ this.Error(48, p, "Bad class definition for " + name);
+ return -1;
+ }
+ token.yytext = token.yytext.Replace("yyq", "((" + this.m_outname + ")yyp)");
+ token.yytext = token.yytext.Replace("yym", "((" + this.m_outname + ")yyl)");
+ string yytext = token.yytext;
+ char[] chArray = new char[1]{ '\n' };
+ foreach (string str in yytext.Split(chArray))
+ this.m_outFile.WriteLine(str);
+ flag = cs0syntax.defconseen;
+ }
+ this.m_outFile.WriteLine("public override string yyname { get { return \"" + name + "\"; }}");
+ this.m_outFile.WriteLine("public override int yynum { get { return " + (object) yynum + "; }}");
+ if (!flag)
+ {
+ if (lx)
+ this.m_outFile.Write("public " + name + "(Lexer yyl):base(yyl){}");
+ else
+ this.m_outFile.Write("public " + name + "(Parser yyp):base(yyp){}");
+ }
+ this.m_outFile.WriteLine("}");
+ return yynum;
+ }
+
+ public void Error(int n, int p, string str)
+ {
+ Console.WriteLine("" + (object) this.sourceLineInfo(p) + ": " + str);
+ if (this.m_outFile != null)
+ {
+ this.m_outFile.WriteLine();
+ this.m_outFile.WriteLine("#error Generator failed earlier. Fix the parser script and run ParserGenerator again.");
+ }
+ this.erh.Error((CSToolsException) new CSToolsFatalException(n, this.sourceLineInfo(p), "", str));
+ }
+
+ public virtual SourceLineInfo sourceLineInfo(int pos)
+ {
+ return new SourceLineInfo(pos);
+ }
+
+ public int line(int pos)
+ {
+ return this.sourceLineInfo(pos).lineNumber;
+ }
+
+ public int position(int pos)
+ {
+ return this.sourceLineInfo(pos).rawCharPosition;
+ }
+
+ public string Saypos(int pos)
+ {
+ return this.sourceLineInfo(pos).ToString();
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/LNode.cs b/LibreMetaverse.LslTools/Tools/LNode.cs
new file mode 100644
index 00000000..c77774b5
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/LNode.cs
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public abstract class LNode
+ {
+ public int m_state;
+ public TokensGen m_tks;
+
+ public LNode(TokensGen tks)
+ {
+ this.m_tks = tks;
+ this.m_state = tks.NewState();
+ }
+
+ protected LNode()
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/Lexer.cs b/LibreMetaverse.LslTools/Tools/Lexer.cs
new file mode 100644
index 00000000..9624f53f
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Lexer.cs
@@ -0,0 +1,328 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.IO;
+
+namespace LibreMetaverse.LslTools
+{
+ public class Lexer
+ {
+ internal LineManager m_LineManager = new LineManager();
+ public string m_state = "YYINITIAL";
+ public bool m_debug;
+ public string m_buf;
+ private YyLexer m_tokens;
+ public string yytext;
+ public int m_pch;
+ private bool m_matching;
+ private int m_startMatch;
+
+ public Lexer(YyLexer tks)
+ {
+ this.m_state = "YYINITIAL";
+ this.tokens = tks;
+ }
+
+ public SourceLineInfo sourceLineInfo(int pos)
+ {
+ return new SourceLineInfo(this, pos);
+ }
+
+ public string sourceLine(SourceLineInfo s)
+ {
+ return this.m_buf.Substring(s.startOfLine, s.endOfLine - s.startOfLine);
+ }
+
+ public string Saypos(int pos)
+ {
+ return this.sourceLineInfo(pos).ToString();
+ }
+
+ public Dfa m_start => (Dfa) this.m_tokens.starts[(object) this.m_state];
+
+ public YyLexer tokens
+ {
+ get => this.m_tokens;
+ set
+ {
+ this.m_tokens = value;
+ this.m_tokens.GetDfa();
+ }
+ }
+
+ public int yypos => this.m_pch;
+
+ public void yy_begin(string newstate)
+ {
+ this.m_state = newstate;
+ }
+
+ private bool Match(ref TOKEN tok, Dfa dfa)
+ {
+ char ch = this.PeekChar();
+ int pch = this.m_pch;
+ int mark = 0;
+ if (this.m_debug)
+ {
+ Console.Write("state {0} with ", (object) dfa.m_state);
+ if (char.IsLetterOrDigit(ch) || char.IsPunctuation(ch))
+ Console.WriteLine(ch);
+ else
+ Console.WriteLine("#" + (object) (int) ch);
+ }
+ if (dfa.m_actions != null)
+ mark = this.Mark();
+ Dfa dfa1;
+ if ((dfa1 = (Dfa) dfa.m_map[(object) this.m_tokens.Filter(ch)]) == null)
+ {
+ if (this.m_debug)
+ Console.Write("{0} no arc", (object) dfa.m_state);
+ if (dfa.m_actions != null)
+ {
+ if (this.m_debug)
+ Console.WriteLine(" terminal");
+ return this.TryActions(dfa, ref tok);
+ }
+ if (this.m_debug)
+ Console.WriteLine(" fails");
+ return false;
+ }
+ this.Advance();
+ if (!this.Match(ref tok, dfa1))
+ {
+ if (this.m_debug)
+ Console.WriteLine("back to {0} with {1}", (object) dfa.m_state, (object) ch);
+ if (dfa.m_actions != null)
+ {
+ if (this.m_debug)
+ Console.WriteLine("{0} succeeds", (object) dfa.m_state);
+ this.Restore(mark);
+ return this.TryActions(dfa, ref tok);
+ }
+ if (this.m_debug)
+ Console.WriteLine("{0} fails", (object) dfa.m_state);
+ return false;
+ }
+ if (dfa.m_reswds >= 0)
+ ((ResWds) this.m_tokens.reswds[(object) dfa.m_reswds]).Check(this, ref tok);
+ if (this.m_debug)
+ {
+ Console.Write("{0} matched ", (object) dfa.m_state);
+ if (this.m_pch <= this.m_buf.Length)
+ Console.WriteLine(this.m_buf.Substring(pch, this.m_pch - pch));
+ else
+ Console.WriteLine(this.m_buf.Substring(pch));
+ }
+ return true;
+ }
+
+ public void Start(StreamReader inFile)
+ {
+ this.m_state = "YYINITIAL";
+ this.m_LineManager.lines = 1;
+ this.m_LineManager.list = (LineList) null;
+ inFile = new StreamReader(inFile.BaseStream, this.m_tokens.m_encoding);
+ this.m_buf = inFile.ReadToEnd();
+ if (this.m_tokens.toupper)
+ this.m_buf = this.m_buf.ToUpper();
+ for (this.m_pch = 0; this.m_pch < this.m_buf.Length; ++this.m_pch)
+ {
+ if (this.m_buf[this.m_pch] == '\n')
+ this.m_LineManager.newline(this.m_pch);
+ }
+ this.m_pch = 0;
+ }
+
+ public void Start(CsReader inFile)
+ {
+ this.m_state = "YYINITIAL";
+ inFile = new CsReader(inFile, this.m_tokens.m_encoding);
+ this.m_LineManager = inFile.lm;
+ if (!inFile.Eof())
+ {
+ this.m_buf = inFile.ReadLine();
+ while (!inFile.Eof())
+ {
+ this.m_buf += "\n";
+ this.m_buf += inFile.ReadLine();
+ }
+ }
+ if (this.m_tokens.toupper)
+ this.m_buf = this.m_buf.ToUpper();
+ this.m_pch = 0;
+ }
+
+ public void Start(string buf)
+ {
+ this.m_state = "YYINITIAL";
+ this.m_LineManager.lines = 1;
+ this.m_LineManager.list = (LineList) null;
+ this.m_buf = buf + "\n";
+ for (this.m_pch = 0; this.m_pch < this.m_buf.Length; ++this.m_pch)
+ {
+ if (this.m_buf[this.m_pch] == '\n')
+ this.m_LineManager.newline(this.m_pch);
+ }
+ if (this.m_tokens.toupper)
+ this.m_buf = this.m_buf.ToUpper();
+ this.m_pch = 0;
+ }
+
+ public TOKEN Next()
+ {
+ TOKEN tok = (TOKEN) null;
+ while (this.PeekChar() != char.MinValue)
+ {
+ this.Matching(true);
+ if (!this.Match(ref tok, (Dfa) this.m_tokens.starts[(object) this.m_state]))
+ {
+ if (this.yypos == 0)
+ Console.Write("Check text encoding.. ");
+ int num = (int) this.PeekChar();
+ this.m_tokens.erh.Error((CSToolsException) new CSToolsStopException(2, this, "illegal character <" + (object) (char) num + "> " + (object) num));
+ return (TOKEN) null;
+ }
+ this.Matching(false);
+ if (tok != null)
+ {
+ tok.pos = this.m_pch - this.yytext.Length;
+ return tok;
+ }
+ }
+ return (TOKEN) null;
+ }
+
+ private bool TryActions(Dfa dfa, ref TOKEN tok)
+ {
+ int length = this.m_pch - this.m_startMatch;
+ if (length == 0)
+ return false;
+ this.yytext = this.m_startMatch + length > this.m_buf.Length ? this.m_buf.Substring(this.m_startMatch) : this.m_buf.Substring(this.m_startMatch, length);
+ Dfa.Action action = dfa.m_actions;
+ bool reject = true;
+ while (reject && action != null)
+ {
+ int aAct = action.a_act;
+ reject = false;
+ action = action.a_next;
+ if (action == null && dfa.m_tokClass != "")
+ {
+ if (this.m_debug)
+ Console.WriteLine("creating a " + dfa.m_tokClass);
+ tok = (TOKEN) Tfactory.create(dfa.m_tokClass, this);
+ }
+ else
+ {
+ tok = this.m_tokens.OldAction(this, ref this.yytext, aAct, ref reject);
+ if (this.m_debug && !reject)
+ Console.WriteLine("Old action " + (object) aAct);
+ }
+ }
+ return !reject;
+ }
+
+ public char PeekChar()
+ {
+ if (this.m_pch < this.m_buf.Length)
+ return this.m_buf[this.m_pch];
+ return this.m_pch == this.m_buf.Length && this.m_tokens.usingEOF ? char.MaxValue : char.MinValue;
+ }
+
+ public void Advance()
+ {
+ ++this.m_pch;
+ }
+
+ public virtual int GetChar()
+ {
+ int num = (int) this.PeekChar();
+ ++this.m_pch;
+ return num;
+ }
+
+ public void UnGetChar()
+ {
+ if (this.m_pch <= 0)
+ return;
+ --this.m_pch;
+ }
+
+ private int Mark()
+ {
+ return this.m_pch - this.m_startMatch;
+ }
+
+ private void Restore(int mark)
+ {
+ this.m_pch = this.m_startMatch + mark;
+ }
+
+ private void Matching(bool b)
+ {
+ this.m_matching = b;
+ if (!b)
+ return;
+ this.m_startMatch = this.m_pch;
+ }
+
+ public Lexer._Enumerator GetEnumerator()
+ {
+ return new Lexer._Enumerator(this);
+ }
+
+ public void Reset()
+ {
+ this.m_pch = 0;
+ this.m_LineManager.backto(0);
+ }
+
+ public class _Enumerator
+ {
+ private Lexer lxr;
+ private TOKEN t;
+
+ public _Enumerator(Lexer x)
+ {
+ this.lxr = x;
+ this.t = (TOKEN) null;
+ }
+
+ public bool MoveNext()
+ {
+ this.t = this.lxr.Next();
+ return this.t != null;
+ }
+
+ public TOKEN Current => this.t;
+
+ public void Reset()
+ {
+ this.lxr.Reset();
+ }
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/LineList.cs b/LibreMetaverse.LslTools/Tools/LineList.cs
new file mode 100644
index 00000000..c8b23776
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/LineList.cs
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class LineList
+ {
+ public int head;
+ public CommentList comments;
+ public LineList tail;
+
+ public LineList(int h, LineList t)
+ {
+ this.head = h;
+ this.comments = (CommentList) null;
+ this.tail = t;
+ }
+
+ public int getpos(int pos)
+ {
+ int num = pos - this.head;
+ for (CommentList commentList = this.comments; commentList != null; commentList = commentList.tail)
+ {
+ if (pos > commentList.spos)
+ num += commentList.len;
+ }
+ return num;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/LineManager.cs b/LibreMetaverse.LslTools/Tools/LineManager.cs
new file mode 100644
index 00000000..78d8f9f4
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/LineManager.cs
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class LineManager
+ {
+ public int lines = 1;
+ public int end;
+ public LineList list;
+
+ public void newline(int pos)
+ {
+ ++this.lines;
+ this.backto(pos);
+ this.list = new LineList(pos, this.list);
+ }
+
+ public void backto(int pos)
+ {
+ if (pos > this.end)
+ this.end = pos;
+ while (this.list != null && this.list.head >= pos)
+ {
+ this.list = this.list.tail;
+ --this.lines;
+ }
+ }
+
+ public void comment(int pos, int len)
+ {
+ if (pos > this.end)
+ this.end = pos;
+ if (this.list == null)
+ {
+ this.list = new LineList(0, this.list);
+ this.lines = 1;
+ }
+ this.list.comments = new CommentList(pos, len, this.list.comments);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/Literal.cs b/LibreMetaverse.LslTools/Tools/Literal.cs
new file mode 100644
index 00000000..813f93d5
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Literal.cs
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class Literal : CSymbol
+ {
+ public Literal(SymbolsGen yyp)
+ : base(yyp)
+ {
+ this.m_symtype = CSymbol.SymType.terminal;
+ }
+
+ private Literal()
+ {
+ }
+
+ public override CSymbol Resolve()
+ {
+ int length = this.yytext.Length;
+ string str = "";
+ for (int index = 1; index + 1 < length; ++index)
+ {
+ if (this.yytext[index] == '\\')
+ {
+ if (index + 1 < length)
+ ++index;
+ if (this.yytext[index] >= '0' && this.yytext[index] <= '7')
+ {
+ int num;
+ for (num = (int) this.yytext[index++] - 48; index < length && this.yytext[index] >= '0' && this.yytext[index] <= '7'; ++index)
+ num = num * 8 + (int) this.yytext[index] - 48;
+ str += (string) (object) (char) num;
+ }
+ else
+ {
+ char ch = this.yytext[index];
+ switch (ch)
+ {
+ case 'r':
+ str += (string) (object) '\r';
+ continue;
+ case 't':
+ str += (string) (object) '\t';
+ continue;
+ default:
+ str = ch == 'n' ? str + (object) '\n' : str + (object) this.yytext[index];
+ continue;
+ }
+ }
+ }
+ else
+ str += (string) (object) this.yytext[index];
+ }
+ this.yytext = str;
+ CSymbol literal = (CSymbol) this.m_parser.m_symbols.literals[(object) this.yytext];
+ if (literal != null)
+ return literal;
+ this.m_yynum = ++this.m_parser.LastSymbol;
+ this.m_parser.m_symbols.literals[(object) this.yytext] = (object) this;
+ this.m_parser.m_symbols.symbolInfo[(object) this.m_yynum] = (object) new ParsingInfo(this.yytext, this.m_yynum);
+ return (CSymbol) this;
+ }
+
+ public bool CouldStart(CSymbol nonterm)
+ {
+ return false;
+ }
+
+ public override string TypeStr()
+ {
+ return "TOKEN";
+ }
+
+ public new static object Serialise(object o, Serialiser s)
+ {
+ if (s == null)
+ return (object) new Literal();
+ return CSymbol.Serialise(o, s);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/NList.cs b/LibreMetaverse.LslTools/Tools/NList.cs
new file mode 100644
index 00000000..e629a6f4
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/NList.cs
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ internal class NList
+ {
+ public NfaNode m_node;
+ public NList m_next;
+
+ public NList()
+ {
+ this.m_node = (NfaNode) null;
+ this.m_next = (NList) null;
+ }
+
+ private NList(NfaNode nd, NList nx)
+ {
+ this.m_node = nd;
+ this.m_next = nx;
+ }
+
+ public bool Add(NfaNode n)
+ {
+ if (this.m_node == null)
+ {
+ this.m_next = new NList();
+ this.m_node = n;
+ }
+ else if (this.m_node.m_state < n.m_state)
+ {
+ this.m_next = new NList(this.m_node, this.m_next);
+ this.m_node = n;
+ }
+ else
+ {
+ if (this.m_node.m_state == n.m_state)
+ return false;
+ return this.m_next.Add(n);
+ }
+ return true;
+ }
+
+ public bool AtEnd => this.m_node == null;
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/Nfa.cs b/LibreMetaverse.LslTools/Tools/Nfa.cs
new file mode 100644
index 00000000..d3ba6323
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Nfa.cs
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class Nfa : NfaNode
+ {
+ public NfaNode m_end;
+
+ public Nfa(TokensGen tks)
+ : base(tks)
+ {
+ this.m_end = new NfaNode(this.m_tks);
+ }
+
+ public Nfa(TokensGen tks, Regex re)
+ : base(tks)
+ {
+ this.m_end = new NfaNode(tks);
+ re.Build(this);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/NfaNode.cs b/LibreMetaverse.LslTools/Tools/NfaNode.cs
new file mode 100644
index 00000000..394315a7
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/NfaNode.cs
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class NfaNode : LNode
+ {
+ public string m_sTerminal = "";
+ public ObjectList m_arcs = new ObjectList();
+ public ObjectList m_eps = new ObjectList();
+
+ public NfaNode(TokensGen tks)
+ : base(tks)
+ {
+ }
+
+ public void AddArc(char ch, NfaNode next)
+ {
+ this.m_arcs.Add((object) new Arc(ch, next));
+ }
+
+ public void AddUArc(char ch, NfaNode next)
+ {
+ this.m_arcs.Add((object) new UArc(ch, next));
+ }
+
+ public void AddArcEx(Regex re, NfaNode next)
+ {
+ this.m_arcs.Add((object) new ArcEx(re, next));
+ }
+
+ public void AddEps(NfaNode next)
+ {
+ this.m_eps.Add((object) next);
+ }
+
+ public void AddTarget(char ch, Dfa next)
+ {
+ foreach (var t in this.m_arcs)
+ {
+ Arc arc = (Arc) t;
+ if (arc.Match(ch))
+ next.AddNfaNode(arc.m_next);
+ }
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/Null.cs b/LibreMetaverse.LslTools/Tools/Null.cs
new file mode 100644
index 00000000..cd0d71b0
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Null.cs
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class Null : TOKEN
+ {
+ public Null(Lexer yyl, string proxy)
+ : base(yyl)
+ {
+ this.yytext = proxy;
+ }
+
+ public Null(Parser yyp, string proxy)
+ : base(yyp)
+ {
+ this.yytext = proxy;
+ }
+
+ public override string yyname => this.yytext;
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ParseStackEntry.cs b/LibreMetaverse.LslTools/Tools/ParseStackEntry.cs
new file mode 100644
index 00000000..39714df0
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ParseStackEntry.cs
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class ParseStackEntry
+ {
+ public Parser yyps;
+ public int m_state;
+ public SYMBOL m_value;
+
+ public ParseStackEntry(Parser yyp)
+ {
+ this.yyps = yyp;
+ }
+
+ public ParseStackEntry(Parser yyp, int state, SYMBOL value)
+ {
+ this.yyps = yyp;
+ this.m_state = state;
+ this.m_value = value;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ParseState.cs b/LibreMetaverse.LslTools/Tools/ParseState.cs
new file mode 100644
index 00000000..c0033c90
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ParseState.cs
@@ -0,0 +1,274 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections;
+
+namespace LibreMetaverse.LslTools
+{
+ public class ParseState
+ {
+ private bool m_changed = true;
+ public Hashtable m_transitions = new Hashtable();
+ public int m_state;
+ public CSymbol m_accessingSymbol;
+ public SymbolsGen m_sgen;
+ internal ProdItemList m_items;
+
+ public ParseState(SymbolsGen syms, CSymbol acc)
+ {
+ this.m_sgen = syms;
+ this.m_state = syms.state++;
+ this.m_accessingSymbol = acc;
+ this.m_items = new ProdItemList();
+ }
+
+ private ParseState()
+ {
+ }
+
+ public Transition GetTransition(CSymbol s)
+ {
+ return (Transition) this.m_transitions[(object) s.yytext] ?? new Transition(this, s);
+ }
+
+ public bool Accessor(CSymbol[] x)
+ {
+ return new Path(x).Top == this;
+ }
+
+ public bool Lookback(Production pr, ParseState p)
+ {
+ return new Path(this, pr.Prefix(pr.m_rhs.Count)).Top == this;
+ }
+
+ public void MaybeAdd(ProdItem item)
+ {
+ if (!this.m_items.Add(item))
+ return;
+ this.m_changed = true;
+ }
+
+ public void Closure()
+ {
+ while (this.m_changed)
+ {
+ this.m_changed = false;
+ for (ProdItemList prodItemList = this.m_items; prodItemList.m_pi != null; prodItemList = prodItemList.m_next)
+ this.CheckClosure(prodItemList.m_pi);
+ }
+ }
+
+ public void CheckClosure(ProdItem item)
+ {
+ CSymbol csymbol = item.Next();
+ if (csymbol == null)
+ return;
+ csymbol.AddStartItems(this, item.FirstOfRest(csymbol.m_parser));
+ if (!item.IsReducingAction())
+ return;
+ this.MaybeAdd(new ProdItem(item.m_prod, item.m_pos + 1));
+ }
+
+ public void AddEntries()
+ {
+ for (ProdItemList prodItemList = this.m_items; prodItemList.m_pi != null; prodItemList = prodItemList.m_next)
+ {
+ ProdItem pi1 = prodItemList.m_pi;
+ if (!pi1.m_done)
+ {
+ CSymbol csymbol = pi1.Next();
+ if (csymbol != null && !pi1.IsReducingAction())
+ {
+ ParseState parseState = new ParseState(this.m_sgen, csymbol);
+ parseState.MaybeAdd(new ProdItem(pi1.m_prod, pi1.m_pos + 1));
+ for (ProdItemList next = prodItemList.m_next; next != null && next.m_pi != null; next = next.m_next)
+ {
+ ProdItem pi2 = next.m_pi;
+ if (csymbol == pi2.Next())
+ {
+ parseState.MaybeAdd(new ProdItem(pi2.m_prod, pi2.m_pos + 1));
+ pi2.m_done = true;
+ }
+ }
+ if (!this.m_items.AtEnd)
+ {
+ if (csymbol.IsAction())
+ {
+ ParseState next = parseState.CheckExists();
+ foreach (CSymbol key in (IEnumerable) csymbol.m_follow.Keys)
+ {
+ if (key != this.m_sgen.m_symbols.EOFSymbol)
+ this.GetTransition(key).m_next = new ParserShift((ParserAction) csymbol, next);
+ }
+ }
+ else
+ this.GetTransition(csymbol).m_next = new ParserShift((ParserAction) null, parseState.CheckExists());
+ }
+ }
+ }
+ }
+ }
+
+ public void ReduceStates()
+ {
+ for (ProdItemList prodItemList = this.m_items; prodItemList.m_pi != null; prodItemList = prodItemList.m_next)
+ {
+ ProdItem pi = prodItemList.m_pi;
+ if (pi.Next() == null)
+ {
+ Production prod = pi.m_prod;
+ if (prod.m_pno != 0)
+ {
+ int count = prod.m_rhs.Count;
+ CSymbol rh;
+ ParserReduce parserReduce;
+ if (count > 0 && (rh = (CSymbol) prod.m_rhs[count - 1]) != null && rh.IsAction())
+ {
+ ParserAction action = (ParserAction) rh;
+ action.m_len = count;
+ parserReduce = new ParserReduce(action, count - 1, prod);
+ }
+ else
+ {
+ this.m_sgen.m_lexer.yytext = "%" + prod.m_lhs.yytext;
+ this.m_sgen.m_prod = prod;
+ var parserSimpleAction = new ParserSimpleAction(this.m_sgen)
+ {
+ m_sym = prod.m_lhs,
+ m_len = count
+ };
+ parserReduce = new ParserReduce((ParserAction) parserSimpleAction, count, prod);
+ }
+ foreach (CSymbol key in (IEnumerable) pi.m_prod.m_lhs.m_follow.Keys)
+ this.GetTransition(key).m_reduce[(object) prod] = (object) parserReduce;
+ }
+ }
+ }
+ }
+
+ public bool SameAs(ParseState p)
+ {
+ if (this.m_accessingSymbol != p.m_accessingSymbol)
+ return false;
+ ProdItemList prodItemList1 = this.m_items;
+ ProdItemList prodItemList2;
+ for (prodItemList2 = p.m_items; !prodItemList1.AtEnd && !prodItemList2.AtEnd && (prodItemList1.m_pi.m_prod == prodItemList2.m_pi.m_prod && prodItemList1.m_pi.m_pos == prodItemList2.m_pi.m_pos); prodItemList2 = prodItemList2.m_next)
+ prodItemList1 = prodItemList1.m_next;
+ if (prodItemList1.AtEnd)
+ return prodItemList2.AtEnd;
+ return false;
+ }
+
+ public ParseState CheckExists()
+ {
+ this.Closure();
+ foreach (ParseState p in (IEnumerable) this.m_sgen.m_symbols.m_states.Values)
+ {
+ if (this.SameAs(p))
+ return p;
+ }
+ this.m_sgen.m_symbols.m_states[(object) this.m_state] = (object) this;
+ this.AddEntries();
+ return this;
+ }
+
+ ~ParseState()
+ {
+ if (this.m_sgen == null || this.m_state != this.m_sgen.state - 1)
+ return;
+ --this.m_sgen.state;
+ }
+
+ public void Print()
+ {
+ Console.WriteLine();
+ if (this.m_state == 0)
+ Console.WriteLine("state 0");
+ else
+ Console.WriteLine("state {0} accessed by {1}", (object) this.m_state, (object) this.m_accessingSymbol.yytext);
+ if (this.m_items != null)
+ {
+ for (ProdItemList prodItemList = this.m_items; prodItemList.m_pi != null; prodItemList = prodItemList.m_next)
+ {
+ prodItemList.m_pi.Print();
+ prodItemList.m_pi.m_prod.m_lhs.m_follow.Print();
+ }
+ }
+ foreach (Transition transition in (IEnumerable) this.m_transitions.Values)
+ transition.Print0();
+ }
+
+ public void Print0()
+ {
+ Console.WriteLine();
+ if (this.m_state == 0)
+ Console.WriteLine("state 0");
+ else
+ Console.WriteLine("state {0} accessed by {1}", (object) this.m_state, (object) this.m_accessingSymbol.yytext);
+ if (this.m_items != null)
+ {
+ for (ProdItemList prodItemList = this.m_items; prodItemList.m_pi != null; prodItemList = prodItemList.m_next)
+ {
+ prodItemList.m_pi.Print();
+ Console.WriteLine();
+ }
+ }
+ Console.WriteLine();
+ foreach (ParsingInfo pi in (IEnumerable) this.m_sgen.m_symbols.symbolInfo.Values)
+ this.PrintTransition(pi);
+ }
+
+ private void PrintTransition(ParsingInfo pi)
+ {
+ ParserEntry parserEntry = (ParserEntry) pi.m_parsetable[(object) this.m_state];
+ if (parserEntry == null)
+ return;
+ Console.Write(" {0} {1} ", (object) pi.m_name, (object) parserEntry.str);
+ if (parserEntry.m_action != null)
+ parserEntry.m_action.Print();
+ Console.WriteLine();
+ }
+
+ public static object Serialise(object o, Serialiser s)
+ {
+ if (s == null)
+ return (object) new ParseState();
+ ParseState parseState = (ParseState) o;
+ if (s.Encode)
+ {
+ s.Serialise((object) parseState.m_state);
+ s.Serialise((object) parseState.m_accessingSymbol);
+ s.Serialise((object) parseState.m_changed);
+ return (object) true;
+ }
+ parseState.m_state = (int) s.Deserialise();
+ parseState.m_accessingSymbol = (CSymbol) s.Deserialise();
+ parseState.m_changed = (bool) s.Deserialise();
+ return (object) parseState;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/Parser.cs b/LibreMetaverse.LslTools/Tools/Parser.cs
new file mode 100644
index 00000000..3c4eaf5c
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Parser.cs
@@ -0,0 +1,238 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.IO;
+
+namespace LibreMetaverse.LslTools
+{
+ public class Parser
+ {
+ internal ObjectList m_stack = new ObjectList();
+ public YyParser m_symbols;
+ public bool m_debug;
+ public bool m_stkdebug;
+ public Lexer m_lexer;
+ internal SYMBOL m_ungot;
+
+ public Parser(YyParser syms, Lexer lexer)
+ {
+ this.m_lexer = lexer;
+ this.m_symbols = syms;
+ this.m_symbols.erh = this.m_lexer.tokens.erh;
+ }
+
+ private void Create()
+ {
+ this.m_symbols.GetParser(this.m_lexer);
+ }
+
+ protected bool Error(ref ParseStackEntry top, string str)
+ {
+ SYMBOL ns = (SYMBOL) new error(this, top);
+ if (this.m_debug)
+ Console.WriteLine("Error encountered: " + str);
+ ns.pos = top.m_value.pos;
+ if (this.m_symbols.symbolInfo[(object) 0] != null && this.m_symbols.erh.counter < 1000)
+ {
+ while (top != null && this.m_stack.Count > 0)
+ {
+ if (this.m_debug)
+ Console.WriteLine("Error recovery uncovers state {0}", (object) top.m_state);
+ ParserEntry entry;
+ if (ns.Pass(this.m_symbols, top.m_state, out entry))
+ {
+ SYMBOL symbol1 = top.m_value;
+ top.m_value = ns;
+ entry.Pass(ref top);
+ while (top.m_value != this.m_symbols.EOFSymbol && !top.m_value.Pass(this.m_symbols, top.m_state, out entry))
+ {
+ if (entry != null && entry.IsReduce())
+ {
+ SYMBOL symbol2 = (SYMBOL) null;
+ if (entry.m_action != null)
+ symbol2 = entry.m_action.Action(this);
+ this.m_ungot = top.m_value;
+ this.Pop(ref top, ((ParserReduce) entry).m_depth, ns);
+ symbol2.pos = top.m_value.pos;
+ top.m_value = symbol2;
+ }
+ else
+ {
+ string yyname = top.m_value.yyname;
+ if (this.m_debug)
+ {
+ if (yyname == "TOKEN")
+ Console.WriteLine("Error recovery discards literal {0}", (object) ((TOKEN) top.m_value).yytext);
+ else
+ Console.WriteLine("Error recovery discards token {0}", (object) yyname);
+ }
+ top.m_value = this.NextSym();
+ }
+ }
+ if (this.m_debug)
+ Console.WriteLine("Recovery complete");
+ ++this.m_symbols.erh.counter;
+ return true;
+ }
+ this.Pop(ref top, 1, ns);
+ }
+ }
+ this.m_symbols.erh.Error(new CSToolsException(13, this.m_lexer, ns.pos, "syntax error", str));
+ top.m_value = ns;
+ return false;
+ }
+
+ public SYMBOL Parse(StreamReader input)
+ {
+ this.m_lexer.Start(input);
+ return this.Parse();
+ }
+
+ public SYMBOL Parse(CsReader inFile)
+ {
+ this.m_lexer.Start(inFile);
+ return this.Parse();
+ }
+
+ public SYMBOL Parse(string buf)
+ {
+ this.m_lexer.Start(buf);
+ return this.Parse();
+ }
+
+ private SYMBOL Parse()
+ {
+ this.Create();
+ ParseStackEntry s = new ParseStackEntry(this, 0, this.NextSym());
+ try
+ {
+ while (true)
+ {
+ do
+ {
+ string yyname = s.m_value.yyname;
+ if (this.m_debug)
+ {
+ if (yyname.Equals("TOKEN"))
+ Console.WriteLine(string.Format("State {0} with {1} \"{2}\"", (object) s.m_state, (object) yyname, (object) ((TOKEN) s.m_value).yytext));
+ else
+ Console.WriteLine(string.Format("State {0} with {1}", (object) s.m_state, (object) yyname));
+ }
+ ParserEntry entry;
+ if (s.m_value != null && s.m_value.Pass(this.m_symbols, s.m_state, out entry))
+ entry.Pass(ref s);
+ else if (s.m_value == this.m_symbols.EOFSymbol)
+ {
+ if (s.m_state == this.m_symbols.m_accept.m_state)
+ {
+ this.Pop(ref s, 1, (SYMBOL) this.m_symbols.m_startSymbol);
+ if (this.m_symbols.erh.counter > 0)
+ return (SYMBOL) new recoveredError(this, s);
+ SYMBOL symbol = s.m_value;
+ s.m_value = (SYMBOL) null;
+ return symbol;
+ }
+ if (!this.Error(ref s, "Unexpected EOF"))
+ return s.m_value;
+ }
+ else if (!this.Error(ref s, "syntax error"))
+ return s.m_value;
+ }
+ while (!this.m_debug);
+ if (s.m_value != null)
+ {
+ object dollar = s.m_value.m_dollar;
+ Console.WriteLine("In state {0} top {1} value {2}", (object) s.m_state, (object) s.m_value.yyname, dollar != null ? (object) dollar.GetType().Name : (object) "null");
+ if (dollar != null && dollar.GetType().Name.Equals("Int32"))
+ Console.WriteLine((int) dollar);
+ else
+ s.m_value.Print();
+ }
+ else
+ Console.WriteLine("In state {0} top NULL", (object) s.m_state);
+ }
+ }
+ catch (CSToolsStopException ex)
+ {
+ if (this.m_symbols.erh.throwExceptions)
+ throw;
+ this.m_symbols.erh.Report((CSToolsException) ex);
+ }
+ return (SYMBOL) null;
+ }
+
+ internal void Push(ParseStackEntry elt)
+ {
+ this.m_stack.Push((object) elt);
+ }
+
+ internal void Pop(ref ParseStackEntry elt, int depth, SYMBOL ns)
+ {
+ for (; this.m_stack.Count > 0 && depth > 0; --depth)
+ {
+ elt = (ParseStackEntry) this.m_stack.Pop();
+ if (this.m_symbols.m_concrete)
+ ns.kids.Push((object) elt.m_value);
+ }
+ if (depth == 0)
+ return;
+ this.m_symbols.erh.Error(new CSToolsException(14, this.m_lexer, "Pop failed"));
+ }
+
+ public ParseStackEntry StackAt(int ix)
+ {
+ int count = this.m_stack.Count;
+ if (this.m_stkdebug)
+ Console.WriteLine("StackAt({0}),count {1}", (object) ix, (object) count);
+ ParseStackEntry parseStackEntry = (ParseStackEntry) this.m_stack[ix];
+ if (parseStackEntry == null)
+ return new ParseStackEntry(this, 0, (SYMBOL) this.m_symbols.Special);
+ if (parseStackEntry.m_value is Null)
+ return new ParseStackEntry(this, parseStackEntry.m_state, (SYMBOL) null);
+ if (this.m_stkdebug)
+ Console.WriteLine(parseStackEntry.m_value.yyname);
+ return parseStackEntry;
+ }
+
+ public SYMBOL NextSym()
+ {
+ SYMBOL ungot = this.m_ungot;
+ if (ungot == null)
+ return (SYMBOL) this.m_lexer.Next() ?? (SYMBOL) this.m_symbols.EOFSymbol;
+ this.m_ungot = (SYMBOL) null;
+ return ungot;
+ }
+
+ public void Error(int n, SYMBOL sym, string s)
+ {
+ if (sym != null)
+ this.m_symbols.erh.Error(new CSToolsException(n, sym.yylx, sym.pos, "", s));
+ else
+ this.m_symbols.erh.Error(new CSToolsException(n, s));
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ParserAction.cs b/LibreMetaverse.LslTools/Tools/ParserAction.cs
new file mode 100644
index 00000000..0088e410
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ParserAction.cs
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+
+namespace LibreMetaverse.LslTools
+{
+ public class ParserAction : CSymbol
+ {
+ public CSymbol m_sym;
+ public int m_len;
+
+ public ParserAction(SymbolsGen yyp)
+ : base(yyp)
+ {
+ }
+
+ protected ParserAction()
+ {
+ }
+
+ public virtual SYMBOL Action(Parser yyp)
+ {
+ SYMBOL symbol1 = (SYMBOL) Sfactory.create(this.m_sym.yytext, yyp);
+ if (symbol1.yyname == this.m_sym.yytext)
+ {
+ SYMBOL symbol2 = yyp.StackAt(this.m_len - 1).m_value;
+ symbol1.m_dollar = this.m_len == 0 || symbol2 == null ? (object) null : symbol2.m_dollar;
+ }
+ return symbol1;
+ }
+
+ public override void Print()
+ {
+ Console.Write(this.m_sym.yytext);
+ }
+
+ public override bool IsAction()
+ {
+ return true;
+ }
+
+ public virtual int ActNum()
+ {
+ return 0;
+ }
+
+ public new static object Serialise(object o, Serialiser s)
+ {
+ ParserAction parserAction = (ParserAction) o;
+ if (s.Encode)
+ {
+ CSymbol.Serialise((object) parserAction, s);
+ s.Serialise((object) parserAction.m_sym);
+ s.Serialise((object) parserAction.m_len);
+ return (object) null;
+ }
+ CSymbol.Serialise((object) parserAction, s);
+ parserAction.m_sym = (CSymbol) s.Deserialise();
+ parserAction.m_len = (int) s.Deserialise();
+ return (object) parserAction;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ParserEntry.cs b/LibreMetaverse.LslTools/Tools/ParserEntry.cs
new file mode 100644
index 00000000..8f7c5f5d
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ParserEntry.cs
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public abstract class ParserEntry
+ {
+ public ParserAction m_action;
+ public int m_priority;
+
+ public ParserEntry()
+ {
+ this.m_action = (ParserAction) null;
+ }
+
+ public ParserEntry(ParserAction action)
+ {
+ this.m_action = action;
+ }
+
+ public virtual void Pass(ref ParseStackEntry top)
+ {
+ }
+
+ public virtual bool IsReduce()
+ {
+ return false;
+ }
+
+ public virtual string str => "";
+
+ public static object Serialise(object o, Serialiser s)
+ {
+ ParserEntry parserEntry = (ParserEntry) o;
+ if (s.Encode)
+ {
+ s.Serialise((object) parserEntry.m_action);
+ return (object) null;
+ }
+ parserEntry.m_action = (ParserAction) s.Deserialise();
+ return (object) parserEntry;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ParserOldAction.cs b/LibreMetaverse.LslTools/Tools/ParserOldAction.cs
new file mode 100644
index 00000000..fef71c07
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ParserOldAction.cs
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class ParserOldAction : ParserAction
+ {
+ public int m_action;
+
+ public ParserOldAction(SymbolsGen yyp)
+ : base(yyp)
+ {
+ this.m_action = yyp.action_num++;
+ yyp.actions.Add((object) this);
+ this.m_sym = (CSymbol) null;
+ this.m_symtype = CSymbol.SymType.oldaction;
+ yyp.OldAction(this);
+ }
+
+ private ParserOldAction()
+ {
+ }
+
+ public override SYMBOL Action(Parser yyp)
+ {
+ SYMBOL yysym = base.Action(yyp);
+ object obj = yyp.m_symbols.Action(yyp, yysym, this.m_action);
+ if (obj != null)
+ yysym.m_dollar = obj;
+ return yysym;
+ }
+
+ public override int ActNum()
+ {
+ return this.m_action;
+ }
+
+ public new static object Serialise(object o, Serialiser s)
+ {
+ if (s == null)
+ return (object) new ParserOldAction();
+ ParserOldAction parserOldAction = (ParserOldAction) o;
+ if (s.Encode)
+ {
+ ParserAction.Serialise((object) parserOldAction, s);
+ s.Serialise((object) parserOldAction.m_action);
+ return (object) null;
+ }
+ ParserAction.Serialise((object) parserOldAction, s);
+ parserOldAction.m_action = (int) s.Deserialise();
+ return (object) parserOldAction;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ParserReduce.cs b/LibreMetaverse.LslTools/Tools/ParserReduce.cs
new file mode 100644
index 00000000..e64f9825
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ParserReduce.cs
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections;
+
+namespace LibreMetaverse.LslTools
+{
+ public class ParserReduce : ParserEntry
+ {
+ public int m_depth;
+ public Production m_prod;
+ public SymbolSet m_lookAhead;
+
+ public ParserReduce(ParserAction action, int depth, Production prod)
+ : base(action)
+ {
+ this.m_depth = depth;
+ this.m_prod = prod;
+ }
+
+ private ParserReduce()
+ {
+ }
+
+ public void BuildLookback(Transition a)
+ {
+ SymbolsGen sgen = a.m_ps.m_sgen;
+ if (this.m_lookAhead != null)
+ return;
+ this.m_lookAhead = new SymbolSet(sgen);
+ foreach (ParseState q in (IEnumerable) sgen.m_symbols.m_states.Values)
+ {
+ Transition transition = (Transition) q.m_transitions[(object) this.m_prod.m_lhs.yytext];
+ if (transition != null)
+ {
+ Path path = new Path(q, this.m_prod.Prefix(this.m_prod.m_rhs.Count));
+ if (path.valid && path.Top == a.m_ps)
+ transition.m_lookbackOf[(object) this] = (object) true;
+ }
+ }
+ }
+
+ public override void Pass(ref ParseStackEntry top)
+ {
+ Parser yyps = top.yyps;
+ SYMBOL ns = this.m_action.Action(yyps);
+ yyps.m_ungot = top.m_value;
+ if (yyps.m_debug)
+ Console.WriteLine("about to pop {0} count is {1}", (object) this.m_depth, (object) yyps.m_stack.Count);
+ yyps.Pop(ref top, this.m_depth, ns);
+ if (ns.pos == 0)
+ ns.pos = top.m_value.pos;
+ top.m_value = ns;
+ }
+
+ public override bool IsReduce()
+ {
+ return true;
+ }
+
+ public override string str
+ {
+ get
+ {
+ if (this.m_prod == null)
+ return "?? null reduce";
+ return string.Format("reduce {0}", (object) this.m_prod.m_pno);
+ }
+ }
+
+ public new static object Serialise(object o, Serialiser s)
+ {
+ if (s == null)
+ return (object) new ParserReduce();
+ ParserReduce parserReduce = (ParserReduce) o;
+ if (s.Encode)
+ {
+ ParserEntry.Serialise((object) parserReduce, s);
+ s.Serialise((object) parserReduce.m_depth);
+ s.Serialise((object) parserReduce.m_prod);
+ return (object) null;
+ }
+ ParserEntry.Serialise((object) parserReduce, s);
+ parserReduce.m_depth = (int) s.Deserialise();
+ parserReduce.m_prod = (Production) s.Deserialise();
+ return (object) parserReduce;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ParserShift.cs b/LibreMetaverse.LslTools/Tools/ParserShift.cs
new file mode 100644
index 00000000..7ad7491f
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ParserShift.cs
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class ParserShift : ParserEntry
+ {
+ public ParseState m_next;
+
+ public ParserShift()
+ {
+ }
+
+ public ParserShift(ParserAction action, ParseState next)
+ : base(action)
+ {
+ this.m_next = next;
+ }
+
+ public override void Pass(ref ParseStackEntry top)
+ {
+ Parser yyps = top.yyps;
+ if (this.m_action == null)
+ {
+ yyps.Push(top);
+ top = new ParseStackEntry(yyps, this.m_next.m_state, yyps.NextSym());
+ }
+ else
+ {
+ yyps.Push(new ParseStackEntry(yyps, top.m_state, this.m_action.Action(yyps)));
+ top.m_state = this.m_next.m_state;
+ }
+ }
+
+ public override string str
+ {
+ get
+ {
+ if (this.m_next == null)
+ return "?? null shift";
+ return string.Format("shift {0}", (object) this.m_next.m_state);
+ }
+ }
+
+ public new static object Serialise(object o, Serialiser s)
+ {
+ if (s == null)
+ return (object) new ParserShift();
+ ParserShift parserShift = (ParserShift) o;
+ if (s.Encode)
+ {
+ ParserEntry.Serialise((object) parserShift, s);
+ s.Serialise((object) parserShift.m_next);
+ return (object) null;
+ }
+ ParserEntry.Serialise((object) parserShift, s);
+ parserShift.m_next = (ParseState) s.Deserialise();
+ return (object) parserShift;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ParserSimpleAction.cs b/LibreMetaverse.LslTools/Tools/ParserSimpleAction.cs
new file mode 100644
index 00000000..9bfb34ad
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ParserSimpleAction.cs
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+
+namespace LibreMetaverse.LslTools
+{
+ public class ParserSimpleAction : ParserAction
+ {
+ public ParserSimpleAction(SymbolsGen yyp)
+ : base(yyp)
+ {
+ yyp.actions.Add((object) this);
+ this.m_symtype = CSymbol.SymType.simpleaction;
+ yyp.SimpleAction(this);
+ }
+
+ private ParserSimpleAction()
+ {
+ }
+
+ public override string TypeStr()
+ {
+ return this.m_sym.yytext;
+ }
+
+ public override void Print()
+ {
+ Console.Write(" %{0}", (object) this.m_sym.yytext);
+ }
+
+ public new static object Serialise(object o, Serialiser s)
+ {
+ if (s == null)
+ return (object) new ParserSimpleAction();
+ if (!s.Encode)
+ return ParserAction.Serialise(o, s);
+ ParserAction.Serialise(o, s);
+ return (object) null;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ParsingInfo.cs b/LibreMetaverse.LslTools/Tools/ParsingInfo.cs
new file mode 100644
index 00000000..010784f9
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ParsingInfo.cs
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.Collections;
+
+namespace LibreMetaverse.LslTools
+{
+ public class ParsingInfo
+ {
+ public Hashtable m_parsetable = new Hashtable();
+ public string m_name;
+ public int m_yynum;
+
+ public ParsingInfo(string name, int num)
+ {
+ this.m_name = name;
+ this.m_yynum = num;
+ }
+
+ private ParsingInfo()
+ {
+ }
+
+ public static object Serialise(object o, Serialiser s)
+ {
+ if (s == null)
+ return (object) new ParsingInfo();
+ ParsingInfo parsingInfo = (ParsingInfo) o;
+ if (s.Encode)
+ {
+ s.Serialise((object) parsingInfo.m_name);
+ s.Serialise((object) parsingInfo.m_yynum);
+ s.Serialise((object) parsingInfo.m_parsetable);
+ return (object) null;
+ }
+ parsingInfo.m_name = (string) s.Deserialise();
+ parsingInfo.m_yynum = (int) s.Deserialise();
+ parsingInfo.m_parsetable = (Hashtable) s.Deserialise();
+ return (object) parsingInfo;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/Path.cs b/LibreMetaverse.LslTools/Tools/Path.cs
new file mode 100644
index 00000000..643209c4
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Path.cs
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class Path
+ {
+ public bool valid = true;
+ private ParseState[] m_states;
+
+ public Path(ParseState[] s)
+ {
+ this.m_states = s;
+ }
+
+ public Path(ParseState q, CSymbol[] x)
+ {
+ this.m_states = new ParseState[x.Length + 1];
+ ParseState parseState = this.m_states[0] = q;
+ for (int index1 = 0; index1 < x.Length; ++index1)
+ {
+ int index2 = index1;
+ while (index2 < x.Length && x[index2].IsAction())
+ ++index2;
+ if (index2 >= x.Length)
+ {
+ this.m_states[index1 + 1] = parseState;
+ }
+ else
+ {
+ Transition transition = (Transition) parseState.m_transitions[(object) x[index2].yytext];
+ if (transition == null || transition.m_next == null)
+ {
+ this.valid = false;
+ break;
+ }
+ parseState = this.m_states[index1 + 1] = transition.m_next.m_next;
+ }
+ }
+ }
+
+ public Path(CSymbol[] x)
+ : this((ParseState) x[0].m_parser.m_symbols.m_states[(object) 0], x)
+ {
+ }
+
+ public CSymbol[] Spelling
+ {
+ get
+ {
+ CSymbol[] csymbolArray = new CSymbol[this.m_states.Length - 1];
+ for (int index = 0; index < csymbolArray.Length; ++index)
+ csymbolArray[index] = this.m_states[index].m_accessingSymbol;
+ return csymbolArray;
+ }
+ }
+
+ public ParseState Top => this.m_states[this.m_states.Length - 1];
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/Precedence.cs b/LibreMetaverse.LslTools/Tools/Precedence.cs
new file mode 100644
index 00000000..40d7fba2
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Precedence.cs
@@ -0,0 +1,116 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+
+namespace LibreMetaverse.LslTools
+{
+ public class Precedence
+ {
+ public Precedence.PrecType m_type;
+ public int m_prec;
+ public Precedence m_next;
+
+ public Precedence(Precedence.PrecType t, int p, Precedence next)
+ {
+ if (Precedence.CheckType(next, t, 0) != 0)
+ Console.WriteLine("redeclaration of precedence");
+ this.m_next = next;
+ this.m_type = t;
+ this.m_prec = p;
+ }
+
+ private static int CheckType(Precedence p, Precedence.PrecType t, int d)
+ {
+ if (p == null)
+ return 0;
+ if (p.m_type == t || p.m_type <= Precedence.PrecType.nonassoc && t <= Precedence.PrecType.nonassoc)
+ return p.m_prec;
+ return Precedence.Check(p.m_next, t, d + 1);
+ }
+
+ public static int Check(Precedence p, Precedence.PrecType t, int d)
+ {
+ if (p == null)
+ return 0;
+ if (p.m_type == t)
+ return p.m_prec;
+ return Precedence.Check(p.m_next, t, d + 1);
+ }
+
+ public static int Check(CSymbol s, Production p, int d)
+ {
+ if (s.m_prec == null)
+ return 0;
+ int num1 = Precedence.CheckType(s.m_prec, Precedence.PrecType.after, d + 1);
+ int num2 = Precedence.CheckType(s.m_prec, Precedence.PrecType.left, d + 1);
+ if (num1 > num2)
+ return num1 - p.m_prec;
+ return num2 - p.m_prec;
+ }
+
+ public static void Check(Production p)
+ {
+ int count = p.m_rhs.Count;
+ while (count > 1 && ((SYMBOL) p.m_rhs[count - 1]).IsAction())
+ --count;
+ switch (count)
+ {
+ case 2:
+ if ((CSymbol) p.m_rhs[0] == p.m_lhs)
+ {
+ int num = Precedence.Check(((CSymbol) p.m_rhs[1]).m_prec, Precedence.PrecType.after, 0);
+ if (num == 0)
+ break;
+ p.m_prec = num;
+ break;
+ }
+ if ((CSymbol) p.m_rhs[1] != p.m_lhs)
+ break;
+ int num1 = Precedence.Check(((CSymbol) p.m_rhs[0]).m_prec, Precedence.PrecType.before, 0);
+ if (num1 == 0)
+ break;
+ p.m_prec = num1;
+ break;
+ case 3:
+ int num2 = Precedence.CheckType(((CSymbol) p.m_rhs[1]).m_prec, Precedence.PrecType.left, 0);
+ if (num2 == 0 || (CSymbol) p.m_rhs[2] != p.m_lhs)
+ break;
+ p.m_prec = num2;
+ break;
+ }
+ }
+
+ public enum PrecType
+ {
+ left,
+ right,
+ nonassoc,
+ before,
+ after,
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ProdItem.cs b/LibreMetaverse.LslTools/Tools/ProdItem.cs
new file mode 100644
index 00000000..4850be07
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ProdItem.cs
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections;
+
+namespace LibreMetaverse.LslTools
+{
+ public class ProdItem
+ {
+ public Production m_prod;
+ public int m_pos;
+ public bool m_done;
+ private SymbolSet follow;
+
+ public ProdItem(Production prod, int pos)
+ {
+ this.m_prod = prod;
+ this.m_pos = pos;
+ this.m_done = false;
+ }
+
+ public ProdItem()
+ {
+ this.m_prod = (Production) null;
+ this.m_pos = 0;
+ this.m_done = false;
+ }
+
+ public CSymbol Next()
+ {
+ if (this.m_pos < this.m_prod.m_rhs.Count)
+ return (CSymbol) this.m_prod.m_rhs[this.m_pos];
+ return (CSymbol) null;
+ }
+
+ public bool IsReducingAction()
+ {
+ if (this.m_pos == this.m_prod.m_rhs.Count - 1)
+ return this.Next().IsAction();
+ return false;
+ }
+
+ public SymbolSet FirstOfRest(SymbolsGen syms)
+ {
+ if (this.follow != null)
+ return this.follow;
+ this.follow = new SymbolSet(syms);
+ bool flag = false;
+ int count = this.m_prod.m_rhs.Count;
+ for (int index = this.m_pos + 1; index < count; ++index)
+ {
+ CSymbol rh = (CSymbol) this.m_prod.m_rhs[index];
+ foreach (CSymbol key in (IEnumerable) rh.m_first.Keys)
+ this.follow.CheckIn(key);
+ if (!rh.IsNullable())
+ {
+ flag = true;
+ break;
+ }
+ }
+ if (!flag)
+ this.follow.Add(this.m_prod.m_lhs.m_follow);
+ this.follow = this.follow.Resolve();
+ return this.follow;
+ }
+
+ public void Print()
+ {
+ Console.Write(" {0} {1} : ", (object) this.m_prod.m_pno, this.m_prod.m_lhs == null ? (object) "$start" : (object) this.m_prod.m_lhs.yytext);
+ int index;
+ for (index = 0; index < this.m_prod.m_rhs.Count; ++index)
+ {
+ if (index == this.m_pos)
+ Console.Write("_");
+ else
+ Console.Write(" ");
+ string str = ((TOKEN) this.m_prod.m_rhs[index]).yytext;
+ if (str.Equals("\n"))
+ str = "\\n";
+ Console.Write(str);
+ }
+ if (index == this.m_pos)
+ Console.Write("_");
+ Console.Write(" ");
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ProdItemList.cs b/LibreMetaverse.LslTools/Tools/ProdItemList.cs
new file mode 100644
index 00000000..02b96ef6
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ProdItemList.cs
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ internal class ProdItemList
+ {
+ public ProdItem m_pi;
+ public ProdItemList m_next;
+
+ public ProdItemList(ProdItem pi, ProdItemList n)
+ {
+ this.m_pi = pi;
+ this.m_next = n;
+ }
+
+ public ProdItemList()
+ {
+ this.m_pi = (ProdItem) null;
+ this.m_next = (ProdItemList) null;
+ }
+
+ public bool Add(ProdItem pi)
+ {
+ if (this.m_pi == null)
+ {
+ this.m_next = new ProdItemList();
+ this.m_pi = pi;
+ }
+ else if (this.m_pi.m_prod.m_pno < pi.m_prod.m_pno || this.m_pi.m_prod.m_pno == pi.m_prod.m_pno && this.m_pi.m_pos < pi.m_pos)
+ {
+ this.m_next = new ProdItemList(this.m_pi, this.m_next);
+ this.m_pi = pi;
+ }
+ else
+ {
+ if (this.m_pi.m_prod.m_pno == pi.m_prod.m_pno && this.m_pi.m_pos == pi.m_pos)
+ return false;
+ return this.m_next.Add(pi);
+ }
+ return true;
+ }
+
+ public bool AtEnd => this.m_pi == null;
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/Production.cs b/LibreMetaverse.LslTools/Tools/Production.cs
new file mode 100644
index 00000000..3f7f4063
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Production.cs
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.Collections;
+
+namespace LibreMetaverse.LslTools
+{
+ public class Production
+ {
+ public ObjectList m_rhs = new ObjectList();
+ public Hashtable m_alias = new Hashtable();
+ public int m_pno;
+ public CSymbol m_lhs;
+ public bool m_actionsOnly;
+ public int m_prec;
+
+ public Production(SymbolsGen syms)
+ {
+ this.m_lhs = (CSymbol) null;
+ this.m_prec = 0;
+ this.m_pno = syms.pno++;
+ this.m_actionsOnly = true;
+ syms.prods.Add((object) this);
+ }
+
+ public Production(SymbolsGen syms, CSymbol lhs)
+ {
+ this.m_lhs = lhs;
+ this.m_prec = 0;
+ this.m_pno = syms.pno++;
+ this.m_actionsOnly = true;
+ syms.prods.Add((object) this);
+ lhs.m_prods.Add((object) this);
+ }
+
+ private Production()
+ {
+ }
+
+ public void AddToRhs(CSymbol s)
+ {
+ this.m_rhs.Add((object) s);
+ this.m_actionsOnly = this.m_actionsOnly && s.IsAction();
+ }
+
+ public void AddFirst(CSymbol s, int j)
+ {
+ for (; j < this.m_rhs.Count; ++j)
+ {
+ CSymbol rh = (CSymbol) this.m_rhs[j];
+ s.AddFollow(rh.m_first);
+ if (!rh.IsNullable())
+ break;
+ }
+ }
+
+ public bool CouldBeEmpty(int j)
+ {
+ for (; j < this.m_rhs.Count; ++j)
+ {
+ if (!((CSymbol) this.m_rhs[j]).IsNullable())
+ return false;
+ }
+ return true;
+ }
+
+ public CSymbol[] Prefix(int i)
+ {
+ CSymbol[] csymbolArray = new CSymbol[i];
+ for (int index = 0; index < i; ++index)
+ csymbolArray[index] = (CSymbol) this.m_rhs[index];
+ return csymbolArray;
+ }
+
+ public void StackRef(ref string str, int ch, int ix)
+ {
+ int num = this.m_rhs.Count + 1;
+ CSymbol rh = (CSymbol) this.m_rhs[ix - 1];
+ str += string.Format("\n\t(({0})(yyq.StackAt({1}).m_value))\n\t", (object) rh.TypeStr(), (object) (num - ix - 1));
+ }
+
+ public static object Serialise(object o, Serialiser s)
+ {
+ if (s == null)
+ return (object) new Production();
+ Production production = (Production) o;
+ if (s.Encode)
+ {
+ s.Serialise((object) production.m_pno);
+ return (object) null;
+ }
+ production.m_pno = (int) s.Deserialise();
+ return (object) production;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ReAlt.cs b/LibreMetaverse.LslTools/Tools/ReAlt.cs
new file mode 100644
index 00000000..703da37b
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ReAlt.cs
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.IO;
+
+namespace LibreMetaverse.LslTools
+{
+ internal class ReAlt : Regex
+ {
+ public Regex m_alt;
+
+ public ReAlt(TokensGen tks, Regex sub, int p, string str)
+ {
+ this.m_sub = sub;
+ this.m_alt = new Regex(tks, p, str);
+ }
+
+ public override void Print(TextWriter s)
+ {
+ s.Write("(");
+ if (this.m_sub != null)
+ this.m_sub.Print(s);
+ s.Write("|");
+ if (this.m_alt != null)
+ this.m_alt.Print(s);
+ s.Write(")");
+ }
+
+ public override int Match(string str, int pos, int max)
+ {
+ int num1 = -1;
+ int num2 = -1;
+ if (this.m_sub != null)
+ num1 = this.m_sub.Match(str, pos, max);
+ if (this.m_alt != null)
+ num2 = this.m_sub.Match(str, pos, max);
+ if (num1 > num2)
+ return num1;
+ return num2;
+ }
+
+ public override void Build(Nfa nfa)
+ {
+ if (this.m_alt != null)
+ {
+ Nfa nfa1 = new Nfa(nfa.m_tks, this.m_alt);
+ nfa.AddEps((NfaNode) nfa1);
+ nfa1.m_end.AddEps(nfa.m_end);
+ }
+ base.Build(nfa);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ReCat.cs b/LibreMetaverse.LslTools/Tools/ReCat.cs
new file mode 100644
index 00000000..ec1c9fee
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ReCat.cs
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.IO;
+
+namespace LibreMetaverse.LslTools
+{
+ internal class ReCat : Regex
+ {
+ private Regex m_next;
+
+ public ReCat(TokensGen tks, Regex sub, int p, string str)
+ {
+ this.m_sub = sub;
+ this.m_next = new Regex(tks, p, str);
+ }
+
+ public override void Print(TextWriter s)
+ {
+ s.Write("(");
+ if (this.m_sub != null)
+ this.m_sub.Print(s);
+ s.Write(")(");
+ if (this.m_next != null)
+ this.m_next.Print(s);
+ s.Write(")");
+ }
+
+ public override int Match(string str, int pos, int max)
+ {
+ int num1 = -1;
+ if (this.m_next == null)
+ return base.Match(str, pos, max);
+ if (this.m_sub == null)
+ return this.m_next.Match(str, pos, max);
+ int num2;
+ for (int max1 = max; max1 >= 0; max1 = num2 - 1)
+ {
+ num2 = this.m_sub.Match(str, pos, max1);
+ if (num2 >= 0)
+ {
+ int num3 = this.m_next.Match(str, pos + num2, max);
+ if (num3 >= 0 && num2 + num3 > num1)
+ num1 = num2 + num3;
+ }
+ else
+ break;
+ }
+ return num1;
+ }
+
+ public override void Build(Nfa nfa)
+ {
+ if (this.m_next != null)
+ {
+ if (this.m_sub != null)
+ {
+ Nfa nfa1 = new Nfa(nfa.m_tks, this.m_sub);
+ Nfa nfa2 = new Nfa(nfa.m_tks, this.m_next);
+ nfa.AddEps((NfaNode) nfa1);
+ nfa1.m_end.AddEps((NfaNode) nfa2);
+ nfa2.m_end.AddEps(nfa.m_end);
+ }
+ else
+ this.m_next.Build(nfa);
+ }
+ else
+ base.Build(nfa);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ReCategory.cs b/LibreMetaverse.LslTools/Tools/ReCategory.cs
new file mode 100644
index 00000000..eaed0667
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ReCategory.cs
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.IO;
+
+namespace LibreMetaverse.LslTools
+{
+ internal class ReCategory : Regex
+ {
+ private string m_str;
+ private ChTest m_test;
+
+ public ReCategory(TokensGen tks, string str)
+ {
+ this.m_str = str;
+ this.m_test = tks.m_tokens.GetTest(str);
+ }
+
+ public override bool Match(char ch)
+ {
+ return this.m_test(ch);
+ }
+
+ public override void Print(TextWriter s)
+ {
+ s.WriteLine("{" + this.m_str + "}");
+ }
+
+ public override void Build(Nfa nfa)
+ {
+ nfa.AddArcEx((Regex) this, nfa.m_end);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ReOpt.cs b/LibreMetaverse.LslTools/Tools/ReOpt.cs
new file mode 100644
index 00000000..0d0d7301
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ReOpt.cs
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.IO;
+
+namespace LibreMetaverse.LslTools
+{
+ internal class ReOpt : Regex
+ {
+ public ReOpt(Regex sub)
+ {
+ this.m_sub = sub;
+ }
+
+ public override void Print(TextWriter s)
+ {
+ this.m_sub.Print(s);
+ s.Write("?");
+ }
+
+ public override int Match(string str, int pos, int max)
+ {
+ int num = this.m_sub.Match(str, pos, max);
+ if (num < 0)
+ num = 0;
+ return num;
+ }
+
+ public override void Build(Nfa nfa)
+ {
+ nfa.AddEps(nfa.m_end);
+ base.Build(nfa);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/RePlus.cs b/LibreMetaverse.LslTools/Tools/RePlus.cs
new file mode 100644
index 00000000..b533608a
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/RePlus.cs
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.IO;
+
+namespace LibreMetaverse.LslTools
+{
+ internal class RePlus : Regex
+ {
+ public RePlus(Regex sub)
+ {
+ this.m_sub = sub;
+ }
+
+ public override void Print(TextWriter s)
+ {
+ this.m_sub.Print(s);
+ s.Write("+");
+ }
+
+ public override int Match(string str, int pos, int max)
+ {
+ int num1 = this.m_sub.Match(str, pos, max);
+ if (num1 < 0)
+ return -1;
+ int num2 = num1;
+ while (num1 > 0)
+ {
+ num1 = this.m_sub.Match(str, pos + num2, max);
+ if (num1 >= 0)
+ num2 += num1;
+ else
+ break;
+ }
+ return num2;
+ }
+
+ public override void Build(Nfa nfa)
+ {
+ base.Build(nfa);
+ nfa.m_end.AddEps((NfaNode) nfa);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ReRange.cs b/LibreMetaverse.LslTools/Tools/ReRange.cs
new file mode 100644
index 00000000..84d2c5d3
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ReRange.cs
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.Collections;
+using System.IO;
+using System.Text;
+
+namespace LibreMetaverse.LslTools
+{
+ internal class ReRange : Regex
+ {
+ public Hashtable m_map = new Hashtable();
+ public bool m_invert;
+
+ public ReRange(TokensGen tks, string str)
+ {
+ StringBuilder stringBuilder = new StringBuilder();
+ int num1 = str.Length - 1;
+ for (int index = 1; index < num1; ++index)
+ {
+ if (str[index] == '\\')
+ {
+ if (index + 1 < num1)
+ ++index;
+ if (str[index] >= '0' && str[index] <= '7')
+ {
+ int num2;
+ for (num2 = (int) str[index++] - 48; index < num1 && str[index] >= '0' && str[index] <= '7'; ++index)
+ num2 = num2 * 8 + (int) str[index] - 48;
+ stringBuilder.Append((char) num2);
+ }
+ else
+ {
+ char ch = str[index];
+ switch (ch)
+ {
+ case 'r':
+ stringBuilder.Append('\r');
+ continue;
+ case 't':
+ stringBuilder.Append('\t');
+ continue;
+ case 'v':
+ stringBuilder.Append('\v');
+ continue;
+ default:
+ if (ch == 'n')
+ {
+ stringBuilder.Append('\n');
+ continue;
+ }
+ stringBuilder.Append(str[index]);
+ continue;
+ }
+ }
+ }
+ else
+ stringBuilder.Append(str[index]);
+ }
+ int length = stringBuilder.Length;
+ if (length > 0 && stringBuilder[0] == '^')
+ {
+ this.m_invert = true;
+ stringBuilder.Remove(0, 1).Append(char.MinValue).Append(char.MaxValue);
+ }
+ for (int index1 = 0; index1 < length; ++index1)
+ {
+ if (index1 + 1 < length && stringBuilder[index1 + 1] == '-')
+ {
+ for (int index2 = (int) stringBuilder[index1]; index2 <= (int) stringBuilder[index1 + 2]; ++index2)
+ this.Set(tks, (char) index2);
+ index1 += 2;
+ }
+ else
+ this.Set(tks, stringBuilder[index1]);
+ }
+ }
+
+ public override void Print(TextWriter s)
+ {
+ s.Write("[");
+ if (this.m_invert)
+ s.Write("^");
+ foreach (char key in (IEnumerable) this.m_map.Keys)
+ s.Write(key);
+ s.Write("]");
+ }
+
+ private void Set(TokensGen tks, char ch)
+ {
+ this.m_map[(object) ch] = (object) true;
+ tks.m_tokens.UsingChar(ch);
+ }
+
+ public override bool Match(char ch)
+ {
+ if (this.m_invert)
+ return !this.m_map.Contains((object) ch);
+ return this.m_map.Contains((object) ch);
+ }
+
+ public override int Match(string str, int pos, int max)
+ {
+ return max < pos || !this.Match(str[pos]) ? -1 : 1;
+ }
+
+ public override void Build(Nfa nfa)
+ {
+ nfa.AddArcEx((Regex) this, nfa.m_end);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ReStar.cs b/LibreMetaverse.LslTools/Tools/ReStar.cs
new file mode 100644
index 00000000..26bf1887
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ReStar.cs
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.IO;
+
+namespace LibreMetaverse.LslTools
+{
+ internal class ReStar : Regex
+ {
+ public ReStar(Regex sub)
+ {
+ this.m_sub = sub;
+ }
+
+ public override void Print(TextWriter s)
+ {
+ this.m_sub.Print(s);
+ s.Write("*");
+ }
+
+ public override int Match(string str, int pos, int max)
+ {
+ int num1 = this.m_sub.Match(str, pos, max);
+ if (num1 < 0)
+ return -1;
+ int num2 = 0;
+ while (num1 > 0)
+ {
+ num1 = this.m_sub.Match(str, pos + num2, max);
+ if (num1 >= 0)
+ num2 += num1;
+ else
+ break;
+ }
+ return num2;
+ }
+
+ public override void Build(Nfa nfa)
+ {
+ Nfa nfa1 = new Nfa(nfa.m_tks, this.m_sub);
+ nfa.AddEps((NfaNode) nfa1);
+ nfa.AddEps(nfa.m_end);
+ nfa1.m_end.AddEps((NfaNode) nfa);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ReStr.cs b/LibreMetaverse.LslTools/Tools/ReStr.cs
new file mode 100644
index 00000000..92ee22c3
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ReStr.cs
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.IO;
+
+namespace LibreMetaverse.LslTools
+{
+ internal class ReStr : Regex
+ {
+ public string m_str = "";
+
+ public ReStr()
+ {
+ }
+
+ public ReStr(TokensGen tks, string str)
+ {
+ this.m_str = str;
+ foreach (var c in str)
+ tks.m_tokens.UsingChar(c);
+ }
+
+ public ReStr(TokensGen tks, char ch)
+ {
+ this.m_str = new string(ch, 1);
+ tks.m_tokens.UsingChar(ch);
+ }
+
+ public override void Print(TextWriter s)
+ {
+ s.Write($"(\"{(object)this.m_str}\")");
+ }
+
+ public override int Match(string str, int pos, int max)
+ {
+ int length = this.m_str.Length;
+ if (length > max || length > max - pos)
+ return -1;
+ for (int index = 0; index < length; ++index)
+ {
+ if ((int) str[index] != (int) this.m_str[index])
+ return -1;
+ }
+ return length;
+ }
+
+ public override void Build(Nfa nfa)
+ {
+ int length = this.m_str.Length;
+ NfaNode nfaNode = (NfaNode) nfa;
+ for (int index = 0; index < length; ++index)
+ {
+ NfaNode next = new NfaNode(nfa.m_tks);
+ nfaNode.AddArc(this.m_str[index], next);
+ nfaNode = next;
+ }
+ nfaNode.AddEps(nfa.m_end);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/ReUStr.cs b/LibreMetaverse.LslTools/Tools/ReUStr.cs
new file mode 100644
index 00000000..492061bc
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ReUStr.cs
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.IO;
+
+namespace LibreMetaverse.LslTools
+{
+ internal class ReUStr : ReStr
+ {
+ public ReUStr(TokensGen tks, string str)
+ {
+ this.m_str = str;
+ foreach (var c in str)
+ {
+ tks.m_tokens.UsingChar(char.ToLower(c));
+ tks.m_tokens.UsingChar(char.ToUpper(c));
+ }
+ }
+
+ public ReUStr(TokensGen tks, char ch)
+ {
+ this.m_str = new string(ch, 1);
+ tks.m_tokens.UsingChar(char.ToLower(ch));
+ tks.m_tokens.UsingChar(char.ToUpper(ch));
+ }
+
+ public override void Print(TextWriter s)
+ {
+ s.Write($"(U\"{(object)this.m_str}\")");
+ }
+
+ public override int Match(string str, int pos, int max)
+ {
+ int length = this.m_str.Length;
+ if (length > max || length > max - pos)
+ return -1;
+ for (int index = 0; index < length; ++index)
+ {
+ if ((int) char.ToUpper(str[index]) != (int) char.ToUpper(this.m_str[index]))
+ return -1;
+ }
+ return length;
+ }
+
+ public override void Build(Nfa nfa)
+ {
+ int length = this.m_str.Length;
+ NfaNode nfaNode = (NfaNode) nfa;
+ for (int index = 0; index < length; ++index)
+ {
+ NfaNode next = new NfaNode(nfa.m_tks);
+ nfaNode.AddUArc(this.m_str[index], next);
+ nfaNode = next;
+ }
+ nfaNode.AddEps(nfa.m_end);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/Regex.cs b/LibreMetaverse.LslTools/Tools/Regex.cs
new file mode 100644
index 00000000..12fe65ba
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Regex.cs
@@ -0,0 +1,330 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.IO;
+using System.Text;
+
+namespace LibreMetaverse.LslTools
+{
+ public class Regex
+ {
+ public Regex m_sub;
+
+ public Regex(TokensGen tks, int p, string str)
+ {
+ int length = str.Length;
+ int num1 = 0;
+ int num2 = 0;
+ int num3 = 0;
+ this.m_sub = (Regex) null;
+ if (length == 0)
+ return;
+ int startIndex;
+ if (str[0] == '(')
+ {
+ int index;
+ for (index = 1; index < length; ++index)
+ {
+ if (str[index] == '\\')
+ ++index;
+ else if (str[index] == ']' && num2 > 0)
+ num2 = 0;
+ else if (num2 <= 0)
+ {
+ if (str[index] == '"' || str[index] == '\'')
+ {
+ if (num3 == (int) str[index])
+ num3 = 0;
+ else if (num3 == 0)
+ num3 = (int) str[index];
+ }
+ else if (num3 <= 0)
+ {
+ if (str[index] == '[')
+ ++num2;
+ else if (str[index] == '(')
+ ++num1;
+ else if (str[index] == ')' && num1-- == 0)
+ break;
+ }
+ }
+ }
+ if (index != length)
+ {
+ this.m_sub = new Regex(tks, p + 1, str.Substring(1, index - 1));
+ startIndex = index + 1;
+ }
+ else
+ goto label_99;
+ }
+ else if (str[0] == '[')
+ {
+ int index;
+ for (index = 1; index < length && str[index] != ']'; ++index)
+ {
+ if (str[index] == '\\')
+ ++index;
+ }
+ if (index != length)
+ {
+ this.m_sub = (Regex) new ReRange(tks, str.Substring(0, index + 1));
+ startIndex = index + 1;
+ }
+ else
+ goto label_99;
+ }
+ else if (str[0] == '\'' || str[0] == '"')
+ {
+ StringBuilder stringBuilder = new StringBuilder();
+ int index;
+ for (index = 1; index < length && (int) str[index] != (int) str[0]; ++index)
+ {
+ if (str[index] == '\\')
+ {
+ char ch = str[++index];
+ switch (ch)
+ {
+ case 'r':
+ stringBuilder.Append('\r');
+ continue;
+ case 't':
+ stringBuilder.Append('\t');
+ continue;
+ case 'v':
+ stringBuilder.Append('\v');
+ continue;
+ default:
+ switch (ch)
+ {
+ case '\n':
+ continue;
+ case '"':
+ stringBuilder.Append('"');
+ continue;
+ case '\'':
+ stringBuilder.Append('\'');
+ continue;
+ case '0':
+ stringBuilder.Append(char.MinValue);
+ continue;
+ case '\\':
+ stringBuilder.Append('\\');
+ continue;
+ case 'n':
+ stringBuilder.Append('\n');
+ continue;
+ default:
+ stringBuilder.Append(str[index]);
+ continue;
+ }
+ }
+ }
+ else
+ stringBuilder.Append(str[index]);
+ }
+ if (index != length)
+ {
+ startIndex = index + 1;
+ this.m_sub = (Regex) new ReStr(tks, stringBuilder.ToString());
+ }
+ else
+ goto label_99;
+ }
+ else if (str.StartsWith("U\"") || str.StartsWith("U'"))
+ {
+ StringBuilder stringBuilder = new StringBuilder();
+ int index;
+ for (index = 2; index < length && (int) str[index] != (int) str[1]; ++index)
+ {
+ if (str[index] == '\\')
+ {
+ char ch = str[++index];
+ switch (ch)
+ {
+ case 'r':
+ stringBuilder.Append('\r');
+ continue;
+ case 't':
+ stringBuilder.Append('\t');
+ continue;
+ case 'v':
+ stringBuilder.Append('\v');
+ continue;
+ default:
+ switch (ch)
+ {
+ case '\n':
+ continue;
+ case '"':
+ stringBuilder.Append('"');
+ continue;
+ case '\'':
+ stringBuilder.Append('\'');
+ continue;
+ case '\\':
+ stringBuilder.Append('\\');
+ continue;
+ case 'n':
+ stringBuilder.Append('\n');
+ continue;
+ default:
+ stringBuilder.Append(str[index]);
+ continue;
+ }
+ }
+ }
+ else
+ stringBuilder.Append(str[index]);
+ }
+ if (index != length)
+ {
+ startIndex = index + 1;
+ this.m_sub = (Regex) new ReUStr(tks, stringBuilder.ToString());
+ }
+ else
+ goto label_99;
+ }
+ else if (str[0] == '\\')
+ {
+ char ch1;
+ char ch2 = ch1 = str[1];
+ switch (ch2)
+ {
+ case 'r':
+ ch1 = '\r';
+ break;
+ case 't':
+ ch1 = '\t';
+ break;
+ case 'v':
+ ch1 = '\v';
+ break;
+ default:
+ if (ch2 == 'n')
+ {
+ ch1 = '\n';
+ break;
+ }
+ break;
+ }
+ this.m_sub = (Regex) new ReStr(tks, ch1);
+ startIndex = 2;
+ }
+ else if (str[0] == '{')
+ {
+ int index = 1;
+ while (index < length && str[index] != '}')
+ ++index;
+ if (index != length)
+ {
+ string str1 = str.Substring(1, index - 1);
+ string define = (string) tks.defines[(object) str1];
+ this.m_sub = define != null ? new Regex(tks, p + 1, define) : (Regex) new ReCategory(tks, str1);
+ startIndex = index + 1;
+ }
+ else
+ goto label_99;
+ }
+ else
+ {
+ this.m_sub = str[0] != '.' ? (Regex) new ReStr(tks, str[0]) : (Regex) new ReRange(tks, "[^\n]");
+ startIndex = 1;
+ }
+ if (startIndex >= length)
+ return;
+ if (str[startIndex] == '?')
+ {
+ this.m_sub = (Regex) new ReOpt(this.m_sub);
+ ++startIndex;
+ }
+ else if (str[startIndex] == '*')
+ {
+ this.m_sub = (Regex) new ReStar(this.m_sub);
+ ++startIndex;
+ }
+ else if (str[startIndex] == '+')
+ {
+ this.m_sub = (Regex) new RePlus(this.m_sub);
+ ++startIndex;
+ }
+ if (startIndex >= length)
+ return;
+ if (str[startIndex] == '|')
+ {
+ this.m_sub = (Regex) new ReAlt(tks, this.m_sub, p + startIndex + 1, str.Substring(startIndex + 1, length - startIndex - 1));
+ return;
+ }
+ if (startIndex >= length)
+ return;
+ this.m_sub = (Regex) new ReCat(tks, this.m_sub, p + startIndex, str.Substring(startIndex, length - startIndex));
+ return;
+label_99:
+ tks.erh.Error((CSToolsException) new CSToolsFatalException(1, tks.sourceLineInfo(p), str, "ill-formed regular expression " + str));
+ }
+
+ protected Regex()
+ {
+ }
+
+ public virtual void Print(TextWriter s)
+ {
+ if (this.m_sub == null)
+ return;
+ this.m_sub.Print(s);
+ }
+
+ public virtual bool Match(char ch)
+ {
+ return false;
+ }
+
+ public int Match(string str)
+ {
+ return this.Match(str, 0, str.Length);
+ }
+
+ public virtual int Match(string str, int pos, int max)
+ {
+ if (max < 0)
+ return -1;
+ if (this.m_sub != null)
+ return this.m_sub.Match(str, pos, max);
+ return 0;
+ }
+
+ public virtual void Build(Nfa nfa)
+ {
+ if (this.m_sub != null)
+ {
+ Nfa nfa1 = new Nfa(nfa.m_tks, this.m_sub);
+ nfa.AddEps((NfaNode) nfa1);
+ nfa1.m_end.AddEps(nfa.m_end);
+ }
+ else
+ nfa.AddEps(nfa.m_end);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/Relation.cs b/LibreMetaverse.LslTools/Tools/Relation.cs
new file mode 100644
index 00000000..13585706
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Relation.cs
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.Collections;
+
+namespace LibreMetaverse.LslTools
+{
+ public delegate Hashtable Relation(Transition a);
+}
diff --git a/LibreMetaverse.LslTools/Tools/ResWds.cs b/LibreMetaverse.LslTools/Tools/ResWds.cs
new file mode 100644
index 00000000..e483f6f5
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/ResWds.cs
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.Collections;
+
+namespace LibreMetaverse.LslTools
+{
+ public class ResWds
+ {
+ public Hashtable m_wds = new Hashtable();
+ public bool m_upper;
+
+ public static ResWds New(TokensGen tks, string str)
+ {
+ ResWds resWds = new ResWds();
+ str = str.Trim();
+ if (str[0] == 'U')
+ {
+ resWds.m_upper = true;
+ str = str.Substring(1).Trim();
+ }
+ if (str[0] == '{' && str[str.Length - 1] == '}')
+ {
+ str = str.Substring(1, str.Length - 2).Trim();
+ string str1 = str;
+ char[] chArray = new char[1]{ ',' };
+ foreach (string str2 in str1.Split(chArray))
+ {
+ string str3 = str2.Trim();
+ string name = str3;
+ int num = str3.IndexOf(' ');
+ if (num > 0)
+ {
+ name = str3.Substring(num).Trim();
+ str3 = str3.Substring(0, num);
+ }
+ resWds.m_wds[(object) str3] = (object) name;
+ if (tks.m_tokens.tokens[(object) name] == null)
+ {
+ TokClassDef tokClassDef = new TokClassDef((GenBase) tks, name, "TOKEN");
+ tks.m_outFile.WriteLine("//%{0}+{1}", (object) name, (object) tokClassDef.m_yynum);
+ tks.m_outFile.Write("public class {0} : TOKEN", (object) name);
+ tks.m_outFile.WriteLine("{ public override string yyname { get { return \"" + name + "\";}}");
+ tks.m_outFile.WriteLine("public override int yynum { get { return " + (object) tokClassDef.m_yynum + "; }}");
+ tks.m_outFile.WriteLine(" public " + name + "(Lexer yyl):base(yyl) {}}");
+ }
+ }
+ return resWds;
+ }
+ tks.m_tokens.erh.Error(new CSToolsException(47, "bad ResWds element"));
+ return (ResWds) null;
+ }
+
+ public void Check(Lexer yyl, ref TOKEN tok)
+ {
+ string str = tok.yytext;
+ if (this.m_upper)
+ str = str.ToUpper();
+ object wd = this.m_wds[(object) str];
+ if (wd == null)
+ return;
+ tok = (TOKEN) Tfactory.create((string) wd, yyl);
+ }
+
+ public static object Serialise(object o, Serialiser s)
+ {
+ if (s == null)
+ return (object) new ResWds();
+ ResWds resWds = (ResWds) o;
+ if (s.Encode)
+ {
+ s.Serialise((object) resWds.m_upper);
+ s.Serialise((object) resWds.m_wds);
+ return (object) null;
+ }
+ resWds.m_upper = (bool) s.Deserialise();
+ resWds.m_wds = (Hashtable) s.Deserialise();
+ return (object) resWds;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/SCreator.cs b/LibreMetaverse.LslTools/Tools/SCreator.cs
new file mode 100644
index 00000000..06af23c6
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/SCreator.cs
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public delegate object SCreator(Parser yyp);
+}
diff --git a/LibreMetaverse.LslTools/Tools/SYMBOL.cs b/LibreMetaverse.LslTools/Tools/SYMBOL.cs
new file mode 100644
index 00000000..072ae29b
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/SYMBOL.cs
@@ -0,0 +1,158 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+
+namespace LibreMetaverse.LslTools
+{
+ public class SYMBOL
+ {
+ public ObjectList kids = new ObjectList();
+ public object m_dollar;
+ public int pos;
+ public Lexer yylx;
+ public Parser yyps;
+
+ protected SYMBOL()
+ {
+ }
+
+ public SYMBOL(Lexer yyl)
+ {
+ this.yylx = yyl;
+ }
+
+ public SYMBOL(Parser yyp)
+ {
+ this.yyps = yyp;
+ this.yylx = yyp.m_lexer;
+ }
+
+ public int Line => this.yylx.sourceLineInfo(this.pos).lineNumber;
+
+ public int Position => this.yylx.sourceLineInfo(this.pos).rawCharPosition;
+
+ public string Pos => this.yylx.Saypos(this.pos);
+
+ public object yylval
+ {
+ get => this.m_dollar;
+ set => this.m_dollar = value;
+ }
+
+ public virtual int yynum => 0;
+
+ public virtual bool IsTerminal()
+ {
+ return false;
+ }
+
+ public virtual bool IsAction()
+ {
+ return false;
+ }
+
+ public virtual bool IsCSymbol()
+ {
+ return false;
+ }
+
+ public YyParser yyact
+ {
+ get
+ {
+ if (this.yyps != null)
+ return this.yyps.m_symbols;
+ return (YyParser) null;
+ }
+ }
+
+ public virtual bool Pass(YyParser syms, int snum, out ParserEntry entry)
+ {
+ ParsingInfo parsingInfo = (ParsingInfo) syms.symbolInfo[(object) this.yynum];
+ if (parsingInfo == null)
+ {
+ string s = string.Format("No parsinginfo for symbol {0} {1}", (object) this.yyname, (object) this.yynum);
+ syms.erh.Error((CSToolsException) new CSToolsFatalException(9, this.yylx, this.yyname, s));
+ }
+ bool flag = parsingInfo.m_parsetable.Contains((object) snum);
+ entry = !flag ? (ParserEntry) null : (ParserEntry) parsingInfo.m_parsetable[(object) snum];
+ return flag;
+ }
+
+ public virtual string yyname => nameof (SYMBOL);
+
+ public override string ToString()
+ {
+ return this.yyname;
+ }
+
+ public virtual bool Matches(string s)
+ {
+ return false;
+ }
+
+ public virtual void Print()
+ {
+ Console.WriteLine(this.ToString());
+ }
+
+ private void ConcreteSyntaxTree(string n)
+ {
+ if (this is error)
+ Console.WriteLine(n + " " + this.ToString());
+ else
+ Console.WriteLine(n + "-" + this.ToString());
+ int num = 0;
+ foreach (SYMBOL kid in this.kids)
+ kid.ConcreteSyntaxTree(n + (num++ != this.kids.Count - 1 ? " |" : " "));
+ }
+
+ public virtual void ConcreteSyntaxTree()
+ {
+ this.ConcreteSyntaxTree("");
+ }
+
+ public static implicit operator int(SYMBOL s)
+ {
+ object dollar;
+ for (; (dollar = s.m_dollar) is SYMBOL; s = (SYMBOL) dollar)
+ {
+ if (dollar == null)
+ break;
+ }
+ try
+ {
+ return (int) dollar;
+ }
+ catch (Exception)
+ {
+ Console.WriteLine("attempt to convert from " + (object) s.m_dollar.GetType());
+ throw;
+ }
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/Serialiser.cs b/LibreMetaverse.LslTools/Tools/Serialiser.cs
new file mode 100644
index 00000000..6be49abc
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Serialiser.cs
@@ -0,0 +1,367 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections;
+using System.Globalization;
+using System.IO;
+using System.Text;
+
+namespace LibreMetaverse.LslTools
+{
+ public class Serialiser
+ {
+ private static Hashtable tps = new Hashtable();
+ private static Hashtable srs = new Hashtable();
+ private Hashtable obs = new Hashtable();
+ private int id = 100;
+ private const string Version = "4.5";
+ private TextWriter f;
+ private int[] b;
+ private int pos;
+ private int cl;
+
+ public Serialiser(TextWriter ff)
+ {
+ this.f = ff;
+ }
+
+ public Serialiser(int[] bb)
+ {
+ this.b = bb;
+ }
+
+ static Serialiser()
+ {
+ Serialiser.srs[(object) Serialiser.SerType.Null] = (object) new Serialiser.ObjectSerialiser(Serialiser.NullSerialise);
+ Serialiser.tps[(object) typeof (int)] = (object) Serialiser.SerType.Int;
+ Serialiser.srs[(object) Serialiser.SerType.Int] = (object) new Serialiser.ObjectSerialiser(Serialiser.IntSerialise);
+ Serialiser.tps[(object) typeof (string)] = (object) Serialiser.SerType.String;
+ Serialiser.srs[(object) Serialiser.SerType.String] = (object) new Serialiser.ObjectSerialiser(Serialiser.StringSerialise);
+ Serialiser.tps[(object) typeof (Hashtable)] = (object) Serialiser.SerType.Hashtable;
+ Serialiser.srs[(object) Serialiser.SerType.Hashtable] = (object) new Serialiser.ObjectSerialiser(Serialiser.HashtableSerialise);
+ Serialiser.tps[(object) typeof (char)] = (object) Serialiser.SerType.Char;
+ Serialiser.srs[(object) Serialiser.SerType.Char] = (object) new Serialiser.ObjectSerialiser(Serialiser.CharSerialise);
+ Serialiser.tps[(object) typeof (bool)] = (object) Serialiser.SerType.Bool;
+ Serialiser.srs[(object) Serialiser.SerType.Bool] = (object) new Serialiser.ObjectSerialiser(Serialiser.BoolSerialise);
+ Serialiser.tps[(object) typeof (Encoding)] = (object) Serialiser.SerType.Encoding;
+ Serialiser.srs[(object) Serialiser.SerType.Encoding] = (object) new Serialiser.ObjectSerialiser(Serialiser.EncodingSerialise);
+ Serialiser.tps[(object) typeof (UnicodeCategory)] = (object) Serialiser.SerType.UnicodeCategory;
+ Serialiser.srs[(object) Serialiser.SerType.UnicodeCategory] = (object) new Serialiser.ObjectSerialiser(Serialiser.UnicodeCategorySerialise);
+ Serialiser.tps[(object) typeof (CSymbol.SymType)] = (object) Serialiser.SerType.Symtype;
+ Serialiser.srs[(object) Serialiser.SerType.Symtype] = (object) new Serialiser.ObjectSerialiser(Serialiser.SymtypeSerialise);
+ Serialiser.tps[(object) typeof (Charset)] = (object) Serialiser.SerType.Charset;
+ Serialiser.srs[(object) Serialiser.SerType.Charset] = (object) new Serialiser.ObjectSerialiser(Charset.Serialise);
+ Serialiser.tps[(object) typeof (TokClassDef)] = (object) Serialiser.SerType.TokClassDef;
+ Serialiser.srs[(object) Serialiser.SerType.TokClassDef] = (object) new Serialiser.ObjectSerialiser(TokClassDef.Serialise);
+ Serialiser.tps[(object) typeof (Dfa)] = (object) Serialiser.SerType.Dfa;
+ Serialiser.srs[(object) Serialiser.SerType.Dfa] = (object) new Serialiser.ObjectSerialiser(Dfa.Serialise);
+ Serialiser.tps[(object) typeof (ResWds)] = (object) Serialiser.SerType.ResWds;
+ Serialiser.srs[(object) Serialiser.SerType.ResWds] = (object) new Serialiser.ObjectSerialiser(ResWds.Serialise);
+ Serialiser.tps[(object) typeof (Dfa.Action)] = (object) Serialiser.SerType.Action;
+ Serialiser.srs[(object) Serialiser.SerType.Action] = (object) new Serialiser.ObjectSerialiser(Dfa.Action.Serialise);
+ Serialiser.tps[(object) typeof (ParserOldAction)] = (object) Serialiser.SerType.ParserOldAction;
+ Serialiser.srs[(object) Serialiser.SerType.ParserOldAction] = (object) new Serialiser.ObjectSerialiser(ParserOldAction.Serialise);
+ Serialiser.tps[(object) typeof (ParserSimpleAction)] = (object) Serialiser.SerType.ParserSimpleAction;
+ Serialiser.srs[(object) Serialiser.SerType.ParserSimpleAction] = (object) new Serialiser.ObjectSerialiser(ParserSimpleAction.Serialise);
+ Serialiser.tps[(object) typeof (ParserShift)] = (object) Serialiser.SerType.ParserShift;
+ Serialiser.srs[(object) Serialiser.SerType.ParserShift] = (object) new Serialiser.ObjectSerialiser(ParserShift.Serialise);
+ Serialiser.tps[(object) typeof (ParserReduce)] = (object) Serialiser.SerType.ParserReduce;
+ Serialiser.srs[(object) Serialiser.SerType.ParserReduce] = (object) new Serialiser.ObjectSerialiser(ParserReduce.Serialise);
+ Serialiser.tps[(object) typeof (ParseState)] = (object) Serialiser.SerType.ParseState;
+ Serialiser.srs[(object) Serialiser.SerType.ParseState] = (object) new Serialiser.ObjectSerialiser(ParseState.Serialise);
+ Serialiser.tps[(object) typeof (ParsingInfo)] = (object) Serialiser.SerType.ParsingInfo;
+ Serialiser.srs[(object) Serialiser.SerType.ParsingInfo] = (object) new Serialiser.ObjectSerialiser(ParsingInfo.Serialise);
+ Serialiser.tps[(object) typeof (CSymbol)] = (object) Serialiser.SerType.CSymbol;
+ Serialiser.srs[(object) Serialiser.SerType.CSymbol] = (object) new Serialiser.ObjectSerialiser(CSymbol.Serialise);
+ Serialiser.tps[(object) typeof (Literal)] = (object) Serialiser.SerType.Literal;
+ Serialiser.srs[(object) Serialiser.SerType.Literal] = (object) new Serialiser.ObjectSerialiser(Literal.Serialise);
+ Serialiser.tps[(object) typeof (Production)] = (object) Serialiser.SerType.Production;
+ Serialiser.srs[(object) Serialiser.SerType.Production] = (object) new Serialiser.ObjectSerialiser(Production.Serialise);
+ Serialiser.tps[(object) typeof (EOF)] = (object) Serialiser.SerType.EOF;
+ Serialiser.srs[(object) Serialiser.SerType.EOF] = (object) new Serialiser.ObjectSerialiser(EOF.Serialise);
+ }
+
+ public void VersionCheck()
+ {
+ if (this.Encode)
+ {
+ this.Serialise((object) "4.5");
+ }
+ else
+ {
+ string str = this.Deserialise() as string;
+ if (str == null)
+ throw new Exception("Serialisation error - found data from version 4.4 or earlier");
+ if (str != "4.5")
+ throw new Exception("Serialisation error - expected version 4.5, found data from version " + str);
+ }
+ }
+
+ public bool Encode => this.f != null;
+
+ private void _Write(Serialiser.SerType t)
+ {
+ this._Write((int) t);
+ }
+
+ public void _Write(int i)
+ {
+ if (this.cl == 5)
+ {
+ this.f.WriteLine();
+ this.cl = 0;
+ }
+ ++this.cl;
+ this.f.Write(i);
+ this.f.Write(",");
+ }
+
+ public int _Read()
+ {
+ return this.b[this.pos++];
+ }
+
+ private static object NullSerialise(object o, Serialiser s)
+ {
+ return (object) null;
+ }
+
+ private static object IntSerialise(object o, Serialiser s)
+ {
+ if (!s.Encode)
+ return (object) s._Read();
+ s._Write((int) o);
+ return (object) null;
+ }
+
+ private static object StringSerialise(object o, Serialiser s)
+ {
+ if (s == null)
+ return (object) "";
+ Encoding encoding = (Encoding) new UnicodeEncoding();
+ if (s.Encode)
+ {
+ byte[] bytes = encoding.GetBytes((string) o);
+ s._Write(bytes.Length);
+ foreach (var t in bytes)
+ s._Write((int) t);
+
+ return (object) null;
+ }
+ int count = s._Read();
+ byte[] bytes1 = new byte[count];
+ for (int index = 0; index < count; ++index)
+ bytes1[index] = (byte) s._Read();
+ return (object) encoding.GetString(bytes1, 0, count);
+ }
+
+ private static object HashtableSerialise(object o, Serialiser s)
+ {
+ if (s == null)
+ return (object) new Hashtable();
+ Hashtable hashtable = (Hashtable) o;
+ if (s.Encode)
+ {
+ s._Write(hashtable.Count);
+ foreach (DictionaryEntry dictionaryEntry in hashtable)
+ {
+ s.Serialise(dictionaryEntry.Key);
+ s.Serialise(dictionaryEntry.Value);
+ }
+ return (object) null;
+ }
+ int num = s._Read();
+ for (int index1 = 0; index1 < num; ++index1)
+ {
+ object index2 = s.Deserialise();
+ object obj = s.Deserialise();
+ hashtable[index2] = obj;
+ }
+ return (object) hashtable;
+ }
+
+ private static object CharSerialise(object o, Serialiser s)
+ {
+ Encoding encoding = (Encoding) new UnicodeEncoding();
+ if (s.Encode)
+ {
+ byte[] bytes = encoding.GetBytes(new string((char) o, 1));
+ s._Write((int) bytes[0]);
+ s._Write((int) bytes[1]);
+ return (object) null;
+ }
+ byte[] bytes1 = new byte[2]
+ {
+ (byte) s._Read(),
+ (byte) s._Read()
+ };
+ return (object) encoding.GetString(bytes1, 0, 2)[0];
+ }
+
+ private static object BoolSerialise(object o, Serialiser s)
+ {
+ if (!s.Encode)
+ return (object) (s._Read() != 0);
+ s._Write(!(bool) o ? 0 : 1);
+ return (object) null;
+ }
+
+ private static object EncodingSerialise(object o, Serialiser s)
+ {
+ if (s.Encode)
+ {
+ Encoding encoding = (Encoding) o;
+ s.Serialise((object) encoding.WebName);
+ return (object) null;
+ }
+ string name = (string) s.Deserialise();
+ string str1 = name;
+ if (str1 != null)
+ {
+ string str2 = string.IsInterned(str1);
+ if ((object) str2 == (object) "us-ascii")
+ return (object) Encoding.ASCII;
+ if ((object) str2 == (object) "utf-16")
+ return (object) Encoding.Unicode;
+ if ((object) str2 == (object) "utf-7")
+ return (object) Encoding.UTF7;
+ if ((object) str2 == (object) "utf-8")
+ return (object) Encoding.UTF8;
+ }
+ try
+ {
+ return (object) Encoding.GetEncoding(name);
+ }
+ catch (Exception)
+ {
+ throw new Exception("Unknown encoding");
+ }
+ }
+
+ private static object UnicodeCategorySerialise(object o, Serialiser s)
+ {
+ if (!s.Encode)
+ return (object) (UnicodeCategory) s._Read();
+ s._Write((int) o);
+ return (object) null;
+ }
+
+ private static object SymtypeSerialise(object o, Serialiser s)
+ {
+ if (!s.Encode)
+ return (object) (CSymbol.SymType) s._Read();
+ s._Write((int) o);
+ return (object) null;
+ }
+
+ public void Serialise(object o)
+ {
+ if (o == null)
+ this._Write(Serialiser.SerType.Null);
+ else if (o is Encoding)
+ {
+ this._Write(Serialiser.SerType.Encoding);
+ Serialiser.EncodingSerialise(o, this);
+ }
+ else
+ {
+ Type type = o.GetType();
+ if (type.IsClass)
+ {
+ object ob = this.obs[o];
+ if (ob != null)
+ {
+ this._Write((int) ob);
+ return;
+ }
+ int i = ++this.id;
+ this._Write(i);
+ this.obs[o] = (object) i;
+ }
+ object tp = Serialiser.tps[(object) type];
+ if (tp == null)
+ throw new Exception("unknown type " + type.FullName);
+ Serialiser.SerType t = (Serialiser.SerType) tp;
+ this._Write(t);
+ object obj = ((Serialiser.ObjectSerialiser) Serialiser.srs[(object) t])(o, this);
+ }
+ }
+
+ public object Deserialise()
+ {
+ int num1 = this._Read();
+ int num2 = 0;
+ if (num1 > 100)
+ {
+ num2 = num1;
+ if (num2 <= this.obs.Count + 100)
+ return this.obs[(object) num2];
+ num1 = this._Read();
+ }
+ Serialiser.ObjectSerialiser sr = (Serialiser.ObjectSerialiser) Serialiser.srs[(object) (Serialiser.SerType) num1];
+ if (sr == null)
+ throw new Exception("unknown type " + (object) num1);
+ if (num2 <= 0)
+ return sr((object) null, this);
+ object o = sr((object) null, (Serialiser) null);
+ this.obs[(object) num2] = o;
+ object obj = sr(o, this);
+ this.obs[(object) num2] = obj;
+ return obj;
+ }
+
+ private enum SerType
+ {
+ Null,
+ Int,
+ Bool,
+ Char,
+ String,
+ Hashtable,
+ Encoding,
+ UnicodeCategory,
+ Symtype,
+ Charset,
+ TokClassDef,
+ Action,
+ Dfa,
+ ResWds,
+ ParserOldAction,
+ ParserSimpleAction,
+ ParserShift,
+ ParserReduce,
+ ParseState,
+ ParsingInfo,
+ CSymbol,
+ Literal,
+ Production,
+ EOF,
+ }
+
+ private delegate object ObjectSerialiser(object o, Serialiser s);
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/Sfactory.cs b/LibreMetaverse.LslTools/Tools/Sfactory.cs
new file mode 100644
index 00000000..374ce510
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Sfactory.cs
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+
+namespace LibreMetaverse.LslTools
+{
+ public class Sfactory
+ {
+ public Sfactory(YyParser syms, string cls_name, SCreator cr)
+ {
+ syms.types[(object) cls_name] = (object) cr;
+ }
+
+ public static object create(string cls_name, Parser yyp)
+ {
+ SCreator type1 = (SCreator) yyp.m_symbols.types[(object) cls_name];
+ if (type1 == null)
+ yyp.m_symbols.erh.Error(new CSToolsException(16, yyp.m_lexer, "no factory for {" + cls_name + ")"));
+ try
+ {
+ return type1(yyp);
+ }
+ catch (CSToolsException ex)
+ {
+ yyp.m_symbols.erh.Error(ex);
+ }
+ catch (Exception ex)
+ {
+ yyp.m_symbols.erh.Error(new CSToolsException(17, yyp.m_lexer, string.Format("Create of {0} failed ({1})", (object) cls_name, (object) ex.Message)));
+ }
+ int length = cls_name.LastIndexOf('_');
+ if (length > 0)
+ {
+ SCreator type2 = (SCreator) yyp.m_symbols.types[(object) cls_name.Substring(0, length)];
+ if (type2 != null)
+ {
+ SYMBOL symbol = (SYMBOL) type2(yyp);
+ symbol.m_dollar = (object) 0;
+ return (object) symbol;
+ }
+ }
+ return (object) null;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/SourceLineInfo.cs b/LibreMetaverse.LslTools/Tools/SourceLineInfo.cs
new file mode 100644
index 00000000..acc62172
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/SourceLineInfo.cs
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class SourceLineInfo
+ {
+ public int lineNumber;
+ public int charPosition;
+ public int startOfLine;
+ public int endOfLine;
+ public int rawCharPosition;
+ public Lexer lxr;
+
+ public SourceLineInfo(int pos)
+ {
+ this.lineNumber = 1;
+ this.startOfLine = 0;
+ this.endOfLine = this.rawCharPosition = this.charPosition = pos;
+ }
+
+ public SourceLineInfo(LineManager lm, int pos)
+ {
+ this.lineNumber = lm.lines;
+ this.startOfLine = 0;
+ this.endOfLine = lm.end;
+ this.charPosition = pos;
+ this.rawCharPosition = pos;
+ LineList lineList = lm.list;
+ while (lineList != null)
+ {
+ if (lineList.head > pos)
+ {
+ this.endOfLine = lineList.head;
+ lineList = lineList.tail;
+ --this.lineNumber;
+ }
+ else
+ {
+ this.startOfLine = lineList.head + 1;
+ this.rawCharPosition = lineList.getpos(pos);
+ this.charPosition = pos - this.startOfLine + 1;
+ break;
+ }
+ }
+ }
+
+ public SourceLineInfo(Lexer lx, int pos)
+ : this(lx.m_LineManager, pos)
+ {
+ this.lxr = lx;
+ }
+
+ public override string ToString()
+ {
+ return "Line " + (object) this.lineNumber + ", char " + (object) this.rawCharPosition;
+ }
+
+ public string sourceLine
+ {
+ get
+ {
+ if (this.lxr == null)
+ return "";
+ return this.lxr.sourceLine(this);
+ }
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/SymbolSet.cs b/LibreMetaverse.LslTools/Tools/SymbolSet.cs
new file mode 100644
index 00000000..37183230
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/SymbolSet.cs
@@ -0,0 +1,139 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections;
+
+namespace LibreMetaverse.LslTools
+{
+ public class SymbolSet
+ {
+ private Hashtable m_set = new Hashtable();
+ public SymbolsGen m_symbols;
+ public SymbolSet m_next;
+
+ public SymbolSet(SymbolsGen syms)
+ {
+ this.m_symbols = syms;
+ }
+
+ public SymbolSet(SymbolSet s)
+ : this(s.m_symbols)
+ {
+ this.Add(s);
+ }
+
+ public bool Contains(CSymbol a)
+ {
+ return this.m_set.Contains((object) a);
+ }
+
+ public ICollection Keys => this.m_set.Keys;
+
+ public IDictionaryEnumerator GetEnumerator()
+ {
+ return this.m_set.GetEnumerator();
+ }
+
+ public int Count => this.m_set.Count;
+
+ public bool CheckIn(CSymbol a)
+ {
+ if (this.Contains(a))
+ return false;
+ this.AddIn(a);
+ return true;
+ }
+
+ public SymbolSet Resolve()
+ {
+ return this.find(this.m_symbols.lahead);
+ }
+
+ private SymbolSet find(SymbolSet h)
+ {
+ if (h == null)
+ {
+ this.m_next = this.m_symbols.lahead;
+ this.m_symbols.lahead = this;
+ return this;
+ }
+ if (SymbolSet.Equals(h, this))
+ return h;
+ return this.find(h.m_next);
+ }
+
+ private static bool Equals(SymbolSet s, SymbolSet t)
+ {
+ if (s.m_set.Count != t.m_set.Count)
+ return false;
+ IDictionaryEnumerator enumerator1 = s.GetEnumerator();
+ IDictionaryEnumerator enumerator2 = t.GetEnumerator();
+ for (int index = 0; index < s.Count; ++index)
+ {
+ enumerator1.MoveNext();
+ enumerator2.MoveNext();
+ if (enumerator1.Key != enumerator2.Key)
+ return false;
+ }
+ return true;
+ }
+
+ public void AddIn(CSymbol t)
+ {
+ this.m_set[(object) t] = (object) true;
+ }
+
+ public void Add(SymbolSet s)
+ {
+ if (s == this)
+ return;
+ foreach (CSymbol key in (IEnumerable) s.Keys)
+ this.AddIn(key);
+ }
+
+ public void Print()
+ {
+ string str = "[";
+ int num = 0;
+ foreach (CSymbol key in (IEnumerable) this.Keys)
+ {
+ ++num;
+ str = !key.yytext.Equals("\n") ? str + key.yytext : str + "\\n";
+ if (num < this.Count)
+ str += ",";
+ }
+ Console.WriteLine(str + "]");
+ }
+
+ public static SymbolSet operator +(SymbolSet s, SymbolSet t)
+ {
+ SymbolSet symbolSet = new SymbolSet(s);
+ symbolSet.Add(t);
+ return symbolSet.Resolve();
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/SymbolType.cs b/LibreMetaverse.LslTools/Tools/SymbolType.cs
new file mode 100644
index 00000000..dcd659bc
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/SymbolType.cs
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class SymbolType
+ {
+ private string m_name;
+ private SymbolType m_next;
+
+ public SymbolType(SymbolsGen yyp, string name)
+ : this(yyp, name, false)
+ {
+ }
+
+ public SymbolType(SymbolsGen yyp, string name, bool defined)
+ {
+ Lexer lexer = yyp.m_lexer;
+ int length = name.IndexOf("+");
+ int num = 0;
+ if (length > 0)
+ {
+ num = int.Parse(name.Substring(length + 1));
+ if (num > yyp.LastSymbol)
+ yyp.LastSymbol = num;
+ name = name.Substring(0, length);
+ }
+ lexer.yytext = name;
+ CSymbol csymbol1 = new CSymbol(yyp);
+ if (num > 0)
+ csymbol1.m_yynum = num;
+ CSymbol csymbol2 = csymbol1.Resolve();
+ if (defined)
+ csymbol2.m_defined = true;
+ this.m_name = name;
+ this.m_next = yyp.stypes;
+ yyp.stypes = this;
+ }
+
+ public SymbolType _Find(string name)
+ {
+ if (name.Equals(this.m_name))
+ return this;
+ if (this.m_next == null)
+ return (SymbolType) null;
+ return this.m_next._Find(name);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/SymbolsGen.cs b/LibreMetaverse.LslTools/Tools/SymbolsGen.cs
new file mode 100644
index 00000000..e419cbb7
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/SymbolsGen.cs
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public abstract class SymbolsGen : GenBase
+ {
+ public bool m_lalrParser = true;
+ public YyParser m_symbols = new YyParser();
+ public ObjectList prods = new ObjectList();
+ internal ObjectList actions = new ObjectList();
+ public Lexer m_lexer;
+ public int pno;
+ public int m_trans;
+ public int action;
+ internal int action_num;
+ public SymbolType stypes;
+ internal int state;
+ public SymbolSet lahead;
+
+ protected SymbolsGen(ErrorHandler eh)
+ : base(eh)
+ {
+ }
+
+ public bool Find(CSymbol sym)
+ {
+ if (sym.yytext.Equals("Null") || sym.yytext[0] == '\'')
+ return true;
+ if (this.stypes == null)
+ return false;
+ return this.stypes._Find(sym.yytext) != null;
+ }
+
+ public abstract void ParserDirective();
+
+ public abstract void Declare();
+
+ public abstract void SetNamespace();
+
+ public abstract void SetStartSymbol();
+
+ public abstract void ClassDefinition(string s);
+
+ public abstract void AssocType(Precedence.PrecType pt, int n);
+
+ public abstract void CopySegment();
+
+ public abstract void SimpleAction(ParserSimpleAction a);
+
+ public abstract void OldAction(ParserOldAction a);
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/TCreator.cs b/LibreMetaverse.LslTools/Tools/TCreator.cs
new file mode 100644
index 00000000..301db205
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/TCreator.cs
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public delegate object TCreator(Lexer yyl);
+}
diff --git a/LibreMetaverse.LslTools/Tools/TOKEN.cs b/LibreMetaverse.LslTools/Tools/TOKEN.cs
new file mode 100644
index 00000000..bd65dc19
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/TOKEN.cs
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+
+namespace LibreMetaverse.LslTools
+{
+ public class TOKEN : SYMBOL
+ {
+ private int num = 1;
+ private string m_str;
+
+ public TOKEN(Parser yyp)
+ : base(yyp)
+ {
+ }
+
+ public TOKEN(Lexer yyl)
+ : base(yyl)
+ {
+ if (yyl == null)
+ return;
+ this.m_str = yyl.yytext;
+ }
+
+ public TOKEN(Lexer yyl, string s)
+ : base(yyl)
+ {
+ this.m_str = s;
+ }
+
+ protected TOKEN()
+ {
+ }
+
+ public string yytext
+ {
+ get => this.m_str;
+ set => this.m_str = value;
+ }
+
+ public override bool IsTerminal()
+ {
+ return true;
+ }
+
+ public override bool Pass(YyParser syms, int snum, out ParserEntry entry)
+ {
+ if (this.yynum == 1)
+ {
+ Literal literal = (Literal) syms.literals[(object) this.yytext];
+ if (literal != null)
+ this.num = literal.m_yynum;
+ }
+ ParsingInfo parsingInfo = (ParsingInfo) syms.symbolInfo[(object) this.yynum];
+ if (parsingInfo == null)
+ {
+ string s = string.Format("Parser does not recognise literal {0}", (object) this.yytext);
+ syms.erh.Error((CSToolsException) new CSToolsFatalException(9, this.yylx, this.yyname, s));
+ }
+ bool flag = parsingInfo.m_parsetable.Contains((object) snum);
+ entry = !flag ? (ParserEntry) null : (ParserEntry) parsingInfo.m_parsetable[(object) snum];
+ return flag;
+ }
+
+ public override string yyname => nameof (TOKEN);
+
+ public override int yynum => this.num;
+
+ public override bool Matches(string s)
+ {
+ return s.Equals(this.m_str);
+ }
+
+ public override string ToString()
+ {
+ return this.yyname + "<" + this.yytext + ">";
+ }
+
+ public override void Print()
+ {
+ Console.WriteLine(this.ToString());
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/Tfactory.cs b/LibreMetaverse.LslTools/Tools/Tfactory.cs
new file mode 100644
index 00000000..a65b9a94
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Tfactory.cs
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+
+namespace LibreMetaverse.LslTools
+{
+ public class Tfactory
+ {
+ public Tfactory(YyLexer tks, string cls_name, TCreator cr)
+ {
+ tks.types[(object) cls_name] = (object) cr;
+ }
+
+ public static object create(string cls_name, Lexer yyl)
+ {
+ TCreator type1 = (TCreator) yyl.tokens.types[(object) cls_name];
+ if (type1 == null)
+ yyl.tokens.erh.Error(new CSToolsException(6, yyl, cls_name, string.Format("no factory for {0}", (object) cls_name)));
+ try
+ {
+ return type1(yyl);
+ }
+ catch (CSToolsException ex)
+ {
+ yyl.tokens.erh.Error(ex);
+ }
+ catch (Exception ex)
+ {
+ yyl.tokens.erh.Error(new CSToolsException(7, yyl, cls_name, string.Format("Line {0}: Create of {1} failed ({2})", (object) yyl.Saypos(yyl.m_pch), (object) cls_name, (object) ex.Message)));
+ }
+ int length = cls_name.LastIndexOf('_');
+ if (length > 0)
+ {
+ TCreator type2 = (TCreator) yyl.tokens.types[(object) cls_name.Substring(0, length)];
+ if (type2 != null)
+ return type2(yyl);
+ }
+ return (object) null;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/TokClassDef.cs b/LibreMetaverse.LslTools/Tools/TokClassDef.cs
new file mode 100644
index 00000000..ec9b53d1
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/TokClassDef.cs
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class TokClassDef
+ {
+ public string m_refToken = "";
+ public string m_initialisation = "";
+ public string m_implement = "";
+ public string m_name = "";
+ public int m_yynum;
+
+ public TokClassDef(GenBase gbs, string name, string bas)
+ {
+ if (gbs is TokensGen)
+ {
+ TokensGen tokensGen = (TokensGen) gbs;
+ this.m_name = name;
+ tokensGen.m_tokens.tokens[(object) name] = (object) this;
+ this.m_refToken = bas;
+ }
+ this.m_yynum = ++gbs.LastSymbol;
+ }
+
+ private TokClassDef()
+ {
+ }
+
+ public static object Serialise(object o, Serialiser s)
+ {
+ if (s == null)
+ return (object) new TokClassDef();
+ TokClassDef tokClassDef = (TokClassDef) o;
+ if (s.Encode)
+ {
+ s.Serialise((object) tokClassDef.m_name);
+ s.Serialise((object) tokClassDef.m_yynum);
+ return (object) null;
+ }
+ tokClassDef.m_name = (string) s.Deserialise();
+ tokClassDef.m_yynum = (int) s.Deserialise();
+ return (object) tokClassDef;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/TokensGen.cs b/LibreMetaverse.LslTools/Tools/TokensGen.cs
new file mode 100644
index 00000000..69eae8be
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/TokensGen.cs
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.Collections;
+
+namespace LibreMetaverse.LslTools
+{
+ public abstract class TokensGen : GenBase
+ {
+ public Hashtable defines = new Hashtable();
+ public ObjectList states = new ObjectList();
+ protected bool m_showDfa;
+ public YyLexer m_tokens;
+ private int state;
+
+ public TokensGen(ErrorHandler eh)
+ : base(eh)
+ {
+ }
+
+ public int NewState()
+ {
+ return ++this.state;
+ }
+
+ public string FixActions(string str)
+ {
+ return str.Replace("yybegin", "yym.yy_begin").Replace("yyl", "((" + this.m_outname + ")yym)");
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/Transition.cs b/LibreMetaverse.LslTools/Tools/Transition.cs
new file mode 100644
index 00000000..c9463daa
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/Transition.cs
@@ -0,0 +1,207 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections;
+
+namespace LibreMetaverse.LslTools
+{
+ public class Transition
+ {
+ public Hashtable m_reduce = new Hashtable();
+ private Hashtable m_reads = new Hashtable();
+ private Hashtable m_includes = new Hashtable();
+ internal Hashtable m_lookbackOf = new Hashtable();
+ public int m_tno;
+ public ParseState m_ps;
+ public CSymbol m_A;
+ public ParserShift m_next;
+ private SymbolSet m_DR;
+ private SymbolSet m_Read;
+ private SymbolSet m_Follow;
+
+ public Transition(ParseState p, CSymbol a)
+ {
+ this.m_ps = p;
+ this.m_A = a;
+ this.m_tno = p.m_sgen.m_trans++;
+ p.m_transitions[(object) a.yytext] = (object) this;
+ }
+
+ private ParsingInfo ParsingInfo => this.m_ps.m_sgen.m_symbols.GetSymbolInfo(this.m_A.yytext, this.m_A.m_yynum);
+
+ public static Hashtable reads(Transition a)
+ {
+ return a.m_reads;
+ }
+
+ public static Hashtable includes(Transition a)
+ {
+ return a.m_includes;
+ }
+
+ public static SymbolSet DR(Transition a)
+ {
+ return a.m_DR;
+ }
+
+ public static SymbolSet Read(Transition a)
+ {
+ return a.m_Read;
+ }
+
+ public static SymbolSet Follow(Transition a)
+ {
+ return a.m_Follow;
+ }
+
+ public static void AddToRead(Transition a, SymbolSet s)
+ {
+ a.m_Read.Add(s);
+ }
+
+ public static void AddToFollow(Transition a, SymbolSet s)
+ {
+ a.m_Follow.Add(s);
+ }
+
+ public static void BuildDR(Transition t)
+ {
+ SymbolsGen sgen = t.m_ps.m_sgen;
+ t.m_DR = new SymbolSet(sgen);
+ if (t.m_next == null)
+ return;
+ foreach (Transition transition in (IEnumerable) t.m_next.m_next.m_transitions.Values)
+ {
+ if (transition.m_next != null && (transition.m_A.m_symtype == CSymbol.SymType.terminal || transition.m_A.m_symtype == CSymbol.SymType.eofsymbol))
+ t.m_DR.AddIn(transition.m_A);
+ }
+ }
+
+ public static void Final(Transition t)
+ {
+ t.m_DR.AddIn(t.m_ps.m_sgen.m_symbols.EOFSymbol);
+ }
+
+ public static void BuildReads(Transition t)
+ {
+ t.m_Read = new SymbolSet(t.m_ps.m_sgen);
+ ParseState parseState = t.m_A.Next(t.m_ps);
+ if (parseState == null)
+ return;
+ foreach (Transition transition in (IEnumerable) parseState.m_transitions.Values)
+ {
+ if (transition.m_A.IsNullable())
+ t.m_reads[(object) transition] = (object) true;
+ }
+ }
+
+ public static void BuildIncludes(Transition t)
+ {
+ t.m_Follow = new SymbolSet(t.m_ps.m_sgen);
+ foreach (Production prod in t.m_A.m_prods)
+ {
+ for (int i = prod.m_rhs.Count - 1; i >= 0; --i)
+ {
+ CSymbol rh = (CSymbol) prod.m_rhs[i];
+ if (rh.m_symtype == CSymbol.SymType.nonterminal)
+ ((Transition) (i <= 0 ? t.m_ps : new Path(t.m_ps, prod.Prefix(i)).Top).m_transitions[(object) rh.yytext]).m_includes[(object) t] = (object) true;
+ if (!rh.IsNullable())
+ break;
+ }
+ }
+ }
+
+ public static void BuildLookback(Transition t)
+ {
+ foreach (ParserReduce parserReduce in (IEnumerable) t.m_reduce.Values)
+ parserReduce.BuildLookback(t);
+ }
+
+ public static void BuildLA(Transition t)
+ {
+ foreach (ParserReduce key in (IEnumerable) t.m_lookbackOf.Keys)
+ key.m_lookAhead.Add(t.m_Follow);
+ }
+
+ public static void BuildParseTable(Transition t)
+ {
+ YyParser symbols = t.m_ps.m_sgen.m_symbols;
+ ParsingInfo parsingInfo = t.ParsingInfo;
+ ParserReduce parserReduce1 = (ParserReduce) null;
+ foreach (ParserReduce parserReduce2 in (IEnumerable) t.m_reduce.Values)
+ {
+ if ((!t.m_ps.m_sgen.m_lalrParser ? (parserReduce2.m_prod.m_lhs.m_follow.Contains(t.m_A) ? 1 : 0) : (parserReduce2.m_lookAhead.Contains(t.m_A) ? 1 : 0)) != 0)
+ {
+ if (parserReduce1 != null)
+ symbols.erh.Error(new CSToolsException(12, string.Format("reduce/reduce conflict {0} vs {1}", (object) parserReduce1.m_prod.m_pno, (object) parserReduce2.m_prod.m_pno) + string.Format(" state {0} on {1}", (object) t.m_ps.m_state, (object) t.m_A.yytext)));
+ parserReduce1 = parserReduce2;
+ }
+ }
+ if (t.m_next != null && t.m_A != symbols.EOFSymbol)
+ {
+ if (parserReduce1 == null)
+ {
+ parsingInfo.m_parsetable[(object) t.m_ps.m_state] = (object) t.m_next;
+ }
+ else
+ {
+ switch (t.m_A.ShiftPrecedence(parserReduce1.m_prod, t.m_ps))
+ {
+ case Precedence.PrecType.left:
+ parsingInfo.m_parsetable[(object) t.m_ps.m_state] = (object) t.m_next;
+ break;
+ case Precedence.PrecType.right:
+ parsingInfo.m_parsetable[(object) t.m_ps.m_state] = (object) parserReduce1;
+ break;
+ }
+ }
+ }
+ else
+ {
+ if (parserReduce1 == null)
+ return;
+ parsingInfo.m_parsetable[(object) t.m_ps.m_state] = (object) parserReduce1;
+ }
+ }
+
+ public void Print0()
+ {
+ Console.Write(" " + this.m_A.yytext);
+ if (this.m_next != null)
+ Console.Write(" shift " + (object) this.m_next.m_next.m_state);
+ foreach (Production key in (IEnumerable) this.m_reduce.Keys)
+ Console.Write(" reduce (" + (object) key.m_pno + ")");
+ Console.WriteLine();
+ }
+
+ public void Print(SymbolSet x, string s)
+ {
+ Console.Write("Transition (" + (object) this.m_ps.m_state + "," + this.m_A.yytext + ") " + s + " ");
+ x.Print();
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/UArc.cs b/LibreMetaverse.LslTools/Tools/UArc.cs
new file mode 100644
index 00000000..973c550c
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/UArc.cs
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.IO;
+
+namespace LibreMetaverse.LslTools
+{
+ internal class UArc : Arc
+ {
+ public UArc()
+ {
+ }
+
+ public UArc(char ch, NfaNode next)
+ : base(ch, next)
+ {
+ }
+
+ public override bool Match(char ch)
+ {
+ return (int) char.ToUpper(ch) == (int) char.ToUpper(this.m_ch);
+ }
+
+ public override void Print(TextWriter s)
+ {
+ s.WriteLine(string.Format(" U'{0}' {1}", (object) this.m_ch, (object) this.m_next.m_state));
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/YyLexer.cs b/LibreMetaverse.LslTools/Tools/YyLexer.cs
new file mode 100644
index 00000000..2de57025
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/YyLexer.cs
@@ -0,0 +1,291 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections;
+using System.Globalization;
+using System.IO;
+using System.Text;
+
+namespace LibreMetaverse.LslTools
+{
+ public class YyLexer
+ {
+ public Encoding m_encoding = Encoding.ASCII;
+ public Hashtable cats = new Hashtable();
+ public Hashtable starts = new Hashtable();
+ public Hashtable types = new Hashtable();
+ public Hashtable tokens = new Hashtable();
+ public Hashtable reswds = new Hashtable();
+ public bool usingEOF;
+ public bool toupper;
+ public UnicodeCategory m_gencat;
+ protected int[] arr;
+ public ErrorHandler erh;
+
+ public YyLexer(ErrorHandler eh)
+ {
+ this.erh = eh;
+ this.UsingCat(UnicodeCategory.OtherPunctuation);
+ this.m_gencat = UnicodeCategory.OtherPunctuation;
+ Tfactory tfactory = new Tfactory(this, "TOKEN", new TCreator(this.Tokenfactory));
+ }
+
+ public void GetDfa()
+ {
+ if (this.tokens.Count > 0)
+ return;
+ Serialiser serialiser = new Serialiser(this.arr);
+ serialiser.VersionCheck();
+ this.m_encoding = (Encoding) serialiser.Deserialise();
+ this.toupper = (bool) serialiser.Deserialise();
+ this.cats = (Hashtable) serialiser.Deserialise();
+ this.m_gencat = (UnicodeCategory) serialiser.Deserialise();
+ this.usingEOF = (bool) serialiser.Deserialise();
+ this.starts = (Hashtable) serialiser.Deserialise();
+ Dfa.SetTokens(this, this.starts);
+ this.tokens = (Hashtable) serialiser.Deserialise();
+ this.reswds = (Hashtable) serialiser.Deserialise();
+ }
+
+ public void EmitDfa(TextWriter outFile)
+ {
+ Console.WriteLine("Serializing the lexer");
+ Serialiser serialiser = new Serialiser(outFile);
+ serialiser.VersionCheck();
+ serialiser.Serialise((object) this.m_encoding);
+ serialiser.Serialise((object) this.toupper);
+ serialiser.Serialise((object) this.cats);
+ serialiser.Serialise((object) this.m_gencat);
+ serialiser.Serialise((object) this.usingEOF);
+ serialiser.Serialise((object) this.starts);
+ serialiser.Serialise((object) this.tokens);
+ serialiser.Serialise((object) this.reswds);
+ outFile.WriteLine("0};");
+ }
+
+ public string InputEncoding
+ {
+ set => this.m_encoding = Charset.GetEncoding(value, ref this.toupper, this.erh);
+ }
+
+ protected object Tokenfactory(Lexer yyl)
+ {
+ return (object) new TOKEN(yyl);
+ }
+
+ public Charset UsingCat(UnicodeCategory cat)
+ {
+ if (cat == this.m_gencat)
+ {
+ for (int index = 0; index < 28; ++index)
+ {
+ if (Enum.IsDefined(typeof (UnicodeCategory), (object) index))
+ {
+ UnicodeCategory cat1 = (UnicodeCategory) index;
+ if (cat1 != UnicodeCategory.Surrogate && this.cats[(object) cat1] == null)
+ {
+ this.UsingCat(cat1);
+ this.m_gencat = cat1;
+ }
+ }
+ }
+ return (Charset) this.cats[(object) cat];
+ }
+ if (this.cats[(object) cat] != null)
+ return (Charset) this.cats[(object) cat];
+ Charset charset = new Charset(cat);
+ this.cats[(object) cat] = (object) charset;
+ return charset;
+ }
+
+ internal void UsingChar(char ch)
+ {
+ Charset charset = this.UsingCat(char.GetUnicodeCategory(ch));
+ if ((int) charset.m_generic == (int) ch)
+ {
+ while (charset.m_generic != char.MaxValue)
+ {
+ ++charset.m_generic;
+ if (char.GetUnicodeCategory(charset.m_generic) == charset.m_cat && !charset.m_chars.Contains((object) charset.m_generic))
+ {
+ charset.m_chars[(object) charset.m_generic] = (object) true;
+ return;
+ }
+ }
+ charset.m_generic = ch;
+ }
+ else
+ charset.m_chars[(object) ch] = (object) true;
+ }
+
+ internal char Filter(char ch)
+ {
+ Charset charset = (Charset) this.cats[(object) char.GetUnicodeCategory(ch)] ?? (Charset) this.cats[(object) this.m_gencat];
+ if (charset.m_chars.Contains((object) ch))
+ return ch;
+ return charset.m_generic;
+ }
+
+ private bool testEOF(char ch)
+ {
+ return char.GetUnicodeCategory(ch) == UnicodeCategory.OtherNotAssigned;
+ }
+
+ private bool CharIsSymbol(char c)
+ {
+ UnicodeCategory unicodeCategory = char.GetUnicodeCategory(c);
+ switch (unicodeCategory)
+ {
+ case UnicodeCategory.CurrencySymbol:
+ case UnicodeCategory.ModifierSymbol:
+ case UnicodeCategory.OtherSymbol:
+ return true;
+ default:
+ return unicodeCategory == UnicodeCategory.MathSymbol;
+ }
+ }
+
+ private bool CharIsSeparator(char c)
+ {
+ UnicodeCategory unicodeCategory = char.GetUnicodeCategory(c);
+ switch (unicodeCategory)
+ {
+ case UnicodeCategory.LineSeparator:
+ case UnicodeCategory.ParagraphSeparator:
+ return true;
+ default:
+ return unicodeCategory == UnicodeCategory.SpaceSeparator;
+ }
+ }
+
+ internal ChTest GetTest(string name)
+ {
+ try
+ {
+ object obj = Enum.Parse(typeof (UnicodeCategory), name);
+ if (obj != null)
+ {
+ UnicodeCategory unicodeCategory = (UnicodeCategory) obj;
+ this.UsingCat(unicodeCategory);
+ return new ChTest(new CatTest(unicodeCategory).Test);
+ }
+ }
+ catch (Exception)
+ {
+ }
+ string str1 = name;
+ if (str1 != null)
+ {
+ string str2 = string.IsInterned(str1);
+ if ((object) str2 == (object) "Symbol")
+ {
+ this.UsingCat(UnicodeCategory.OtherSymbol);
+ this.UsingCat(UnicodeCategory.ModifierSymbol);
+ this.UsingCat(UnicodeCategory.CurrencySymbol);
+ this.UsingCat(UnicodeCategory.MathSymbol);
+ return new ChTest(this.CharIsSymbol);
+ }
+ if ((object) str2 == (object) "Punctuation")
+ {
+ this.UsingCat(UnicodeCategory.OtherPunctuation);
+ this.UsingCat(UnicodeCategory.FinalQuotePunctuation);
+ this.UsingCat(UnicodeCategory.InitialQuotePunctuation);
+ this.UsingCat(UnicodeCategory.ClosePunctuation);
+ this.UsingCat(UnicodeCategory.OpenPunctuation);
+ this.UsingCat(UnicodeCategory.DashPunctuation);
+ this.UsingCat(UnicodeCategory.ConnectorPunctuation);
+ return new ChTest(char.IsPunctuation);
+ }
+ if ((object) str2 == (object) "Separator")
+ {
+ this.UsingCat(UnicodeCategory.ParagraphSeparator);
+ this.UsingCat(UnicodeCategory.LineSeparator);
+ this.UsingCat(UnicodeCategory.SpaceSeparator);
+ return new ChTest(this.CharIsSeparator);
+ }
+ if ((object) str2 == (object) "WhiteSpace")
+ {
+ this.UsingCat(UnicodeCategory.Control);
+ this.UsingCat(UnicodeCategory.ParagraphSeparator);
+ this.UsingCat(UnicodeCategory.LineSeparator);
+ this.UsingCat(UnicodeCategory.SpaceSeparator);
+ return new ChTest(char.IsWhiteSpace);
+ }
+ if ((object) str2 == (object) "Number")
+ {
+ this.UsingCat(UnicodeCategory.OtherNumber);
+ this.UsingCat(UnicodeCategory.LetterNumber);
+ this.UsingCat(UnicodeCategory.DecimalDigitNumber);
+ return new ChTest(char.IsNumber);
+ }
+ if ((object) str2 == (object) "Digit")
+ {
+ this.UsingCat(UnicodeCategory.DecimalDigitNumber);
+ return new ChTest(char.IsDigit);
+ }
+ if ((object) str2 == (object) "Letter")
+ {
+ this.UsingCat(UnicodeCategory.OtherLetter);
+ this.UsingCat(UnicodeCategory.ModifierLetter);
+ this.UsingCat(UnicodeCategory.TitlecaseLetter);
+ this.UsingCat(UnicodeCategory.LowercaseLetter);
+ this.UsingCat(UnicodeCategory.UppercaseLetter);
+ return new ChTest(char.IsLetter);
+ }
+ if ((object) str2 == (object) "Lower")
+ {
+ this.UsingCat(UnicodeCategory.LowercaseLetter);
+ return new ChTest(char.IsLower);
+ }
+ if ((object) str2 == (object) "Upper")
+ {
+ this.UsingCat(UnicodeCategory.UppercaseLetter);
+ return new ChTest(char.IsUpper);
+ }
+ if ((object) str2 == (object) "EOF")
+ {
+ this.UsingCat(UnicodeCategory.OtherNotAssigned);
+ this.UsingChar(char.MaxValue);
+ this.usingEOF = true;
+ return new ChTest(this.testEOF);
+ }
+ }
+ this.erh.Error(new CSToolsException(24, "No such Charset " + name));
+ return new ChTest(char.IsControl);
+ }
+
+ public virtual TOKEN OldAction(Lexer yyl, ref string yytext, int action, ref bool reject)
+ {
+ return (TOKEN) null;
+ }
+
+ public IEnumerator GetEnumerator()
+ {
+ return this.tokens.Values.GetEnumerator();
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/YyParser.cs b/LibreMetaverse.LslTools/Tools/YyParser.cs
new file mode 100644
index 00000000..109151ed
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/YyParser.cs
@@ -0,0 +1,139 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections;
+using System.IO;
+
+namespace LibreMetaverse.LslTools
+{
+ public class YyParser
+ {
+ public ErrorHandler erh = new ErrorHandler(true);
+ public Hashtable symbols = new Hashtable();
+ public Hashtable literals = new Hashtable();
+ public Hashtable symbolInfo = new Hashtable();
+ public Hashtable m_states = new Hashtable();
+ public Hashtable types = new Hashtable();
+ public bool m_concrete;
+ public CSymbol EOFSymbol;
+ public CSymbol Special;
+ public CSymbol m_startSymbol;
+ public ParseState m_accept;
+ public int[] arr;
+
+ public string StartSymbol
+ {
+ get
+ {
+ if (this.m_startSymbol != null)
+ return this.m_startSymbol.yytext;
+ return "";
+ }
+ set
+ {
+ CSymbol symbol = (CSymbol) this.symbols[(object) value];
+ if (symbol == null)
+ this.erh.Error(new CSToolsException(25, "No such symbol <" + value + ">"));
+ this.m_startSymbol = symbol;
+ }
+ }
+
+ public ParsingInfo GetSymbolInfo(string name, int num)
+ {
+ ParsingInfo parsingInfo = (ParsingInfo) this.symbolInfo[(object) num];
+ if (parsingInfo == null)
+ this.symbolInfo[(object) num] = (object) (parsingInfo = new ParsingInfo(name, num));
+ return parsingInfo;
+ }
+
+ public void ClassInit(SymbolsGen yyp)
+ {
+ this.Special = new CSymbol(yyp);
+ this.Special.yytext = "S'";
+ this.EOFSymbol = new EOF(yyp).Resolve();
+ }
+
+ public void Transitions(Builder b)
+ {
+ foreach (ParseState parseState in (IEnumerable) this.m_states.Values)
+ {
+ foreach (Transition t in (IEnumerable) parseState.m_transitions.Values)
+ b(t);
+ }
+ }
+
+ public void PrintTransitions(Func f, string s)
+ {
+ foreach (ParseState parseState in (IEnumerable) this.m_states.Values)
+ {
+ foreach (Transition a in (IEnumerable) parseState.m_transitions.Values)
+ a.Print(f(a), s);
+ }
+ }
+
+ public virtual object Action(Parser yyp, SYMBOL yysym, int yyact)
+ {
+ return (object) null;
+ }
+
+ public void GetEOF(Lexer yyl)
+ {
+ this.EOFSymbol = (CSymbol) this.symbols[(object) "EOF"];
+ if (this.EOFSymbol != null)
+ return;
+ this.EOFSymbol = (CSymbol) new EOF(yyl);
+ }
+
+ public void Emit(TextWriter m_outFile)
+ {
+ Serialiser serialiser = new Serialiser(m_outFile);
+ serialiser.VersionCheck();
+ Console.WriteLine("Serialising the parser");
+ serialiser.Serialise((object) this.m_startSymbol);
+ serialiser.Serialise((object) this.m_accept);
+ serialiser.Serialise((object) this.m_states);
+ serialiser.Serialise((object) this.literals);
+ serialiser.Serialise((object) this.symbolInfo);
+ serialiser.Serialise((object) this.m_concrete);
+ m_outFile.WriteLine("0};");
+ }
+
+ public void GetParser(Lexer m_lexer)
+ {
+ Serialiser serialiser = new Serialiser(this.arr);
+ serialiser.VersionCheck();
+ this.m_startSymbol = (CSymbol) serialiser.Deserialise();
+ this.m_startSymbol.kids = new ObjectList();
+ this.m_accept = (ParseState) serialiser.Deserialise();
+ this.m_states = (Hashtable) serialiser.Deserialise();
+ this.literals = (Hashtable) serialiser.Deserialise();
+ this.symbolInfo = (Hashtable) serialiser.Deserialise();
+ this.m_concrete = (bool) serialiser.Deserialise();
+ this.GetEOF(m_lexer);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/error.cs b/LibreMetaverse.LslTools/Tools/error.cs
new file mode 100644
index 00000000..c9102bb4
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/error.cs
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace LibreMetaverse.LslTools
+{
+ public class error : SYMBOL
+ {
+ public int state;
+ public SYMBOL sym;
+
+ public error(Parser yyp, ParseStackEntry s)
+ : base(yyp)
+ {
+ this.state = s.m_state;
+ this.sym = s.m_value;
+ }
+
+ public error(Parser yyp)
+ : base(yyp)
+ {
+ }
+
+ public override string yyname => nameof (error);
+
+ public override string ToString()
+ {
+ string str = "syntax error occurred in state " + (object) this.state;
+ if (this.sym == null)
+ return str;
+ if (!(this.sym is TOKEN))
+ return str + " on symbol " + this.sym.yyname;
+ TOKEN sym = (TOKEN) this.sym;
+ return str + " on input token " + sym.yytext;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/Tools/recoveredError.cs b/LibreMetaverse.LslTools/Tools/recoveredError.cs
new file mode 100644
index 00000000..c7fc8223
--- /dev/null
+++ b/LibreMetaverse.LslTools/Tools/recoveredError.cs
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+
+namespace LibreMetaverse.LslTools
+{
+ public class recoveredError : error
+ {
+ public recoveredError(Parser yyp, ParseStackEntry s)
+ : base(yyp, s)
+ {
+ }
+
+ public override string ToString()
+ {
+ return "Parse contained " + (object) this.yyps.m_symbols.erh.counter + " errors";
+ }
+
+ public override void ConcreteSyntaxTree()
+ {
+ Console.WriteLine(this.ToString());
+ if (this.sym == null)
+ return;
+ this.sym.ConcreteSyntaxTree();
+ }
+
+ public override void Print()
+ {
+ Console.WriteLine(this.ToString());
+ if (this.sym == null)
+ return;
+ this.sym.Print();
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/ANY.cs b/LibreMetaverse.LslTools/YYClass/ANY.cs
new file mode 100644
index 00000000..6c08d1ad
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/ANY.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class ANY : TOKEN
+ {
+ public ANY(Lexer yyl)
+ : base(yyl)
+ {
+ }
+
+ public override string yyname => nameof (ANY);
+
+ public override int yynum => 7;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/BASE.cs b/LibreMetaverse.LslTools/YYClass/BASE.cs
new file mode 100644
index 00000000..5a2c7391
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/BASE.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class BASE : TOKEN
+ {
+ public BASE(Lexer yyl)
+ : base(yyl)
+ {
+ }
+
+ public override string yyname => nameof (BASE);
+
+ public override int yynum => 3;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall.cs b/LibreMetaverse.LslTools/YYClass/BaseCall.cs
new file mode 100644
index 00000000..477162e2
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/BaseCall.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class BaseCall : TOKEN
+ {
+ public BaseCall(Parser yyq)
+ : base(yyq)
+ {
+ }
+
+ public override string yyname => nameof (BaseCall);
+
+ public override int yynum => 22;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_1.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_1.cs
new file mode 100644
index 00000000..a8b9ab2f
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/BaseCall_1.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class BaseCall_1 : BaseCall
+ {
+ public BaseCall_1(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_2.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_2.cs
new file mode 100644
index 00000000..052a1ab4
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/BaseCall_2.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class BaseCall_2 : BaseCall
+ {
+ public BaseCall_2(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_2_1.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_2_1.cs
new file mode 100644
index 00000000..55277dd9
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/BaseCall_2_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class BaseCall_2_1 : BaseCall_2
+ {
+ public BaseCall_2_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = "";
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_3.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_3.cs
new file mode 100644
index 00000000..6fc8e3e9
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/BaseCall_3.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class BaseCall_3 : BaseCall
+ {
+ public BaseCall_3(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_4.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_4.cs
new file mode 100644
index 00000000..7bfcc346
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/BaseCall_4.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class BaseCall_4 : BaseCall
+ {
+ public BaseCall_4(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_4_1.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_4_1.cs
new file mode 100644
index 00000000..5d2fc66e
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/BaseCall_4_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class BaseCall_4_1 : BaseCall_4
+ {
+ public BaseCall_4_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = "base" + ((TOKEN) yyq.StackAt(1).m_value).yytext;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_5.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_5.cs
new file mode 100644
index 00000000..c933e9bd
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/BaseCall_5.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class BaseCall_5 : BaseCall
+ {
+ public BaseCall_5(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_6.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_6.cs
new file mode 100644
index 00000000..a003deee
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/BaseCall_6.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class BaseCall_6 : BaseCall
+ {
+ public BaseCall_6(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/BaseCall_6_1.cs b/LibreMetaverse.LslTools/YYClass/BaseCall_6_1.cs
new file mode 100644
index 00000000..e3a0728f
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/BaseCall_6_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class BaseCall_6_1 : BaseCall_6
+ {
+ public BaseCall_6_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = "this" + ((TOKEN) yyq.StackAt(1).m_value).yytext;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/COLON.cs b/LibreMetaverse.LslTools/YYClass/COLON.cs
new file mode 100644
index 00000000..b99d3a83
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/COLON.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class COLON : TOKEN
+ {
+ public COLON(Lexer yyl)
+ : base(yyl)
+ {
+ }
+
+ public override string yyname => nameof (COLON);
+
+ public override int yynum => 8;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Call.cs b/LibreMetaverse.LslTools/YYClass/Call.cs
new file mode 100644
index 00000000..e0ba3432
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Call.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Call : TOKEN
+ {
+ public Call(Parser yyq)
+ : base(yyq)
+ {
+ }
+
+ public override string yyname => nameof (Call);
+
+ public override int yynum => 21;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Call_1.cs b/LibreMetaverse.LslTools/YYClass/Call_1.cs
new file mode 100644
index 00000000..48fed96c
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Call_1.cs
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Call_1 : Call
+ {
+ public Call_1(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Call_2.cs b/LibreMetaverse.LslTools/YYClass/Call_2.cs
new file mode 100644
index 00000000..65eeb873
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Call_2.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Call_2 : Call
+ {
+ public Call_2(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Call_2_1.cs b/LibreMetaverse.LslTools/YYClass/Call_2_1.cs
new file mode 100644
index 00000000..c3b77deb
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Call_2_1.cs
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Call_2_1 : Call_2
+ {
+ public Call_2_1(Parser yyq)
+ : base(yyq)
+ {
+ if (((TOKEN) yyq.StackAt(3).m_value).yytext.Trim() != ((cs0syntax) yyq).Cls)
+ this.yytext = ((TOKEN) yyq.StackAt(3).m_value).yytext + "(" + ((TOKEN) yyq.StackAt(1).m_value).yytext + ")";
+ else if (((TOKEN) yyq.StackAt(1).m_value).yytext.Length == 0)
+ this.yytext = ((TOKEN) yyq.StackAt(3).m_value).yytext + "(" + ((cs0syntax) yyq).Par + ")";
+ else
+ this.yytext = ((TOKEN) yyq.StackAt(3).m_value).yytext + "(" + ((cs0syntax) yyq).Par + "," + ((TOKEN) yyq.StackAt(1).m_value).yytext + ")";
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/ClassBody.cs b/LibreMetaverse.LslTools/YYClass/ClassBody.cs
new file mode 100644
index 00000000..9fd650d7
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/ClassBody.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class ClassBody : TOKEN
+ {
+ public ClassBody(Parser yyq)
+ : base(yyq)
+ {
+ }
+
+ public override string yyname => nameof (ClassBody);
+
+ public override int yynum => 19;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/ClassBody_1.cs b/LibreMetaverse.LslTools/YYClass/ClassBody_1.cs
new file mode 100644
index 00000000..5e156e85
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/ClassBody_1.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class ClassBody_1 : ClassBody
+ {
+ public ClassBody_1(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/ClassBody_2.cs b/LibreMetaverse.LslTools/YYClass/ClassBody_2.cs
new file mode 100644
index 00000000..9edd7076
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/ClassBody_2.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class ClassBody_2 : ClassBody
+ {
+ public ClassBody_2(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/ClassBody_2_1.cs b/LibreMetaverse.LslTools/YYClass/ClassBody_2_1.cs
new file mode 100644
index 00000000..2b57eb27
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/ClassBody_2_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class ClassBody_2_1 : ClassBody_2
+ {
+ public ClassBody_2_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = ((TOKEN) yyq.StackAt(1).m_value).yytext;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Cons.cs b/LibreMetaverse.LslTools/YYClass/Cons.cs
new file mode 100644
index 00000000..e2fbd037
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Cons.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Cons : TOKEN
+ {
+ public Cons(Parser yyq)
+ : base(yyq)
+ {
+ }
+
+ public override string yyname => nameof (Cons);
+
+ public override int yynum => 20;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Cons_1.cs b/LibreMetaverse.LslTools/YYClass/Cons_1.cs
new file mode 100644
index 00000000..b22f35a7
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Cons_1.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Cons_1 : Cons
+ {
+ public Cons_1(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Cons_2.cs b/LibreMetaverse.LslTools/YYClass/Cons_2.cs
new file mode 100644
index 00000000..821f7c8e
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Cons_2.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Cons_2 : Cons
+ {
+ public Cons_2(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Cons_2_1.cs b/LibreMetaverse.LslTools/YYClass/Cons_2_1.cs
new file mode 100644
index 00000000..7baa4c82
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Cons_2_1.cs
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Cons_2_1 : Cons_2
+ {
+ public Cons_2_1(Parser yyq)
+ : base(yyq)
+ {
+ cs0syntax cs0syntax = (cs0syntax) yyq;
+ if (((TOKEN) yyq.StackAt(4).m_value).yytext.Trim() != cs0syntax.Cls)
+ {
+ this.yytext = ((TOKEN) yyq.StackAt(4).m_value).yytext + "(" + ((TOKEN) yyq.StackAt(2).m_value).yytext + ")";
+ }
+ else
+ {
+ if (((TOKEN) yyq.StackAt(2).m_value).yytext.Length == 0)
+ {
+ this.yytext = ((TOKEN) yyq.StackAt(4).m_value).yytext + "(" + cs0syntax.Ctx + ")";
+ cs0syntax.defconseen = true;
+ }
+ else
+ this.yytext = ((TOKEN) yyq.StackAt(4).m_value).yytext + "(" + cs0syntax.Ctx + "," + ((TOKEN) yyq.StackAt(2).m_value).yytext + ")";
+ if (((TOKEN) yyq.StackAt(0).m_value).yytext.Length == 0)
+ {
+ Cons_2_1 cons21 = this;
+ cons21.yytext = cons21.yytext + ":base(" + cs0syntax.Par + ")";
+ }
+ else
+ {
+ Cons_2_1 cons21 = this;
+ cons21.yytext = cons21.yytext + ":" + ((TOKEN) yyq.StackAt(0).m_value).yytext.Substring(0, 4) + "(" + cs0syntax.Par + "," + ((TOKEN) yyq.StackAt(0).m_value).yytext.Substring(4) + ")";
+ }
+ }
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/GStuff.cs b/LibreMetaverse.LslTools/YYClass/GStuff.cs
new file mode 100644
index 00000000..a4b9f829
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/GStuff.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class GStuff : TOKEN
+ {
+ public GStuff(Parser yyq)
+ : base(yyq)
+ {
+ }
+
+ public override string yyname => nameof (GStuff);
+
+ public override int yynum => 16;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_1.cs b/LibreMetaverse.LslTools/YYClass/GStuff_1.cs
new file mode 100644
index 00000000..73fe9b6e
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/GStuff_1.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class GStuff_1 : GStuff
+ {
+ public GStuff_1(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_2.cs b/LibreMetaverse.LslTools/YYClass/GStuff_2.cs
new file mode 100644
index 00000000..456d59e2
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/GStuff_2.cs
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class GStuff_2 : GStuff
+ {
+ public GStuff_2(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_2_1.cs b/LibreMetaverse.LslTools/YYClass/GStuff_2_1.cs
new file mode 100644
index 00000000..f1ebe4d2
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/GStuff_2_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class GStuff_2_1 : GStuff_2
+ {
+ public GStuff_2_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = "";
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_3.cs b/LibreMetaverse.LslTools/YYClass/GStuff_3.cs
new file mode 100644
index 00000000..bc44e89a
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/GStuff_3.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class GStuff_3 : GStuff
+ {
+ public GStuff_3(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_4.cs b/LibreMetaverse.LslTools/YYClass/GStuff_4.cs
new file mode 100644
index 00000000..3d0860e3
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/GStuff_4.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class GStuff_4 : GStuff
+ {
+ public GStuff_4(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_4_1.cs b/LibreMetaverse.LslTools/YYClass/GStuff_4_1.cs
new file mode 100644
index 00000000..af515205
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/GStuff_4_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class GStuff_4_1 : GStuff_4
+ {
+ public GStuff_4_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = ((TOKEN) yyq.StackAt(1).m_value).yytext + ((TOKEN) yyq.StackAt(0).m_value).yytext;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_5.cs b/LibreMetaverse.LslTools/YYClass/GStuff_5.cs
new file mode 100644
index 00000000..f54f791d
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/GStuff_5.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class GStuff_5 : GStuff
+ {
+ public GStuff_5(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_6.cs b/LibreMetaverse.LslTools/YYClass/GStuff_6.cs
new file mode 100644
index 00000000..13dc59cf
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/GStuff_6.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class GStuff_6 : GStuff
+ {
+ public GStuff_6(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/GStuff_6_1.cs b/LibreMetaverse.LslTools/YYClass/GStuff_6_1.cs
new file mode 100644
index 00000000..b7284e5c
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/GStuff_6_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class GStuff_6_1 : GStuff_6
+ {
+ public GStuff_6_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = ((TOKEN) yyq.StackAt(1).m_value).yytext + ((TOKEN) yyq.StackAt(0).m_value).yytext;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/ID.cs b/LibreMetaverse.LslTools/YYClass/ID.cs
new file mode 100644
index 00000000..063bd464
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/ID.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class ID : TOKEN
+ {
+ public ID(Lexer yyl)
+ : base(yyl)
+ {
+ }
+
+ public override string yyname => nameof (ID);
+
+ public override int yynum => 6;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item.cs b/LibreMetaverse.LslTools/YYClass/Item.cs
new file mode 100644
index 00000000..b83bb377
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item : TOKEN
+ {
+ public Item(Parser yyq)
+ : base(yyq)
+ {
+ }
+
+ public override string yyname => nameof (Item);
+
+ public override int yynum => 18;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_1.cs b/LibreMetaverse.LslTools/YYClass/Item_1.cs
new file mode 100644
index 00000000..8687952e
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_1.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_1 : Item
+ {
+ public Item_1(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_10.cs b/LibreMetaverse.LslTools/YYClass/Item_10.cs
new file mode 100644
index 00000000..a25db083
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_10.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_10 : Item
+ {
+ public Item_10(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_10_1.cs b/LibreMetaverse.LslTools/YYClass/Item_10_1.cs
new file mode 100644
index 00000000..b42c7b46
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_10_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_10_1 : Item_10
+ {
+ public Item_10_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = " this ";
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_11.cs b/LibreMetaverse.LslTools/YYClass/Item_11.cs
new file mode 100644
index 00000000..e3070bf0
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_11.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_11 : Item
+ {
+ public Item_11(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_12.cs b/LibreMetaverse.LslTools/YYClass/Item_12.cs
new file mode 100644
index 00000000..38f15e98
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_12.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_12 : Item
+ {
+ public Item_12(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_12_1.cs b/LibreMetaverse.LslTools/YYClass/Item_12_1.cs
new file mode 100644
index 00000000..0a3fa02d
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_12_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_12_1 : Item_12
+ {
+ public Item_12_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = " this[" + ((TOKEN) yyq.StackAt(1).m_value).yytext + "]";
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_13.cs b/LibreMetaverse.LslTools/YYClass/Item_13.cs
new file mode 100644
index 00000000..31ecea71
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_13.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_13 : Item
+ {
+ public Item_13(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_14.cs b/LibreMetaverse.LslTools/YYClass/Item_14.cs
new file mode 100644
index 00000000..2ae9e3e8
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_14.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_14 : Item
+ {
+ public Item_14(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_14_1.cs b/LibreMetaverse.LslTools/YYClass/Item_14_1.cs
new file mode 100644
index 00000000..a3072cae
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_14_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_14_1 : Item_14
+ {
+ public Item_14_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = ":";
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_15.cs b/LibreMetaverse.LslTools/YYClass/Item_15.cs
new file mode 100644
index 00000000..648a6ddd
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_15.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_15 : Item
+ {
+ public Item_15(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_16.cs b/LibreMetaverse.LslTools/YYClass/Item_16.cs
new file mode 100644
index 00000000..cb91ac69
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_16.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_16 : Item
+ {
+ public Item_16(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_16_1.cs b/LibreMetaverse.LslTools/YYClass/Item_16_1.cs
new file mode 100644
index 00000000..9961039b
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_16_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_16_1 : Item_16
+ {
+ public Item_16_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = " new " + ((TOKEN) yyq.StackAt(0).m_value).yytext;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_17.cs b/LibreMetaverse.LslTools/YYClass/Item_17.cs
new file mode 100644
index 00000000..e1114826
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_17.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_17 : Item
+ {
+ public Item_17(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_18.cs b/LibreMetaverse.LslTools/YYClass/Item_18.cs
new file mode 100644
index 00000000..d3286ad2
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_18.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_18 : Item
+ {
+ public Item_18(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_18_1.cs b/LibreMetaverse.LslTools/YYClass/Item_18_1.cs
new file mode 100644
index 00000000..9b8c978b
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_18_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_18_1 : Item_18
+ {
+ public Item_18_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = " new " + ((TOKEN) yyq.StackAt(0).m_value).yytext;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_19.cs b/LibreMetaverse.LslTools/YYClass/Item_19.cs
new file mode 100644
index 00000000..93f84d5d
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_19.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_19 : Item
+ {
+ public Item_19(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_2.cs b/LibreMetaverse.LslTools/YYClass/Item_2.cs
new file mode 100644
index 00000000..5ad667aa
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_2.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_2 : Item
+ {
+ public Item_2(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_20.cs b/LibreMetaverse.LslTools/YYClass/Item_20.cs
new file mode 100644
index 00000000..1c364821
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_20.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_20 : Item
+ {
+ public Item_20(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_20_1.cs b/LibreMetaverse.LslTools/YYClass/Item_20_1.cs
new file mode 100644
index 00000000..8ec9b076
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_20_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_20_1 : Item_20
+ {
+ public Item_20_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = "(" + ((TOKEN) yyq.StackAt(1).m_value).yytext + ")";
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_21.cs b/LibreMetaverse.LslTools/YYClass/Item_21.cs
new file mode 100644
index 00000000..15cf51d1
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_21.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_21 : Item
+ {
+ public Item_21(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_22.cs b/LibreMetaverse.LslTools/YYClass/Item_22.cs
new file mode 100644
index 00000000..716cfac8
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_22.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_22 : Item
+ {
+ public Item_22(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_22_1.cs b/LibreMetaverse.LslTools/YYClass/Item_22_1.cs
new file mode 100644
index 00000000..edcfee2e
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_22_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_22_1 : Item_22
+ {
+ public Item_22_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = "{" + ((TOKEN) yyq.StackAt(1).m_value).yytext + "}\n";
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_23.cs b/LibreMetaverse.LslTools/YYClass/Item_23.cs
new file mode 100644
index 00000000..3e9d8f59
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_23.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_23 : Item
+ {
+ public Item_23(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_24.cs b/LibreMetaverse.LslTools/YYClass/Item_24.cs
new file mode 100644
index 00000000..08a8485e
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_24.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_24 : Item
+ {
+ public Item_24(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_24_1.cs b/LibreMetaverse.LslTools/YYClass/Item_24_1.cs
new file mode 100644
index 00000000..d9f06bca
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_24_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_24_1 : Item_24
+ {
+ public Item_24_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = "[" + ((TOKEN) yyq.StackAt(1).m_value).yytext + "]";
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_2_1.cs b/LibreMetaverse.LslTools/YYClass/Item_2_1.cs
new file mode 100644
index 00000000..faa24c7d
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_2_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_2_1 : Item_2
+ {
+ public Item_2_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = ((TOKEN) yyq.StackAt(0).m_value).yytext;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_3.cs b/LibreMetaverse.LslTools/YYClass/Item_3.cs
new file mode 100644
index 00000000..c5727ebc
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_3.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_3 : Item
+ {
+ public Item_3(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_4.cs b/LibreMetaverse.LslTools/YYClass/Item_4.cs
new file mode 100644
index 00000000..05692ad1
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_4.cs
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_4 : Item
+ {
+ public Item_4(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_4_1.cs b/LibreMetaverse.LslTools/YYClass/Item_4_1.cs
new file mode 100644
index 00000000..fec75cf2
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_4_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_4_1 : Item_4
+ {
+ public Item_4_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = ((TOKEN) yyq.StackAt(0).m_value).yytext;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_5.cs b/LibreMetaverse.LslTools/YYClass/Item_5.cs
new file mode 100644
index 00000000..5fa67c08
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_5.cs
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_5 : Item
+ {
+ public Item_5(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_6.cs b/LibreMetaverse.LslTools/YYClass/Item_6.cs
new file mode 100644
index 00000000..43e3162a
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_6.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_6 : Item
+ {
+ public Item_6(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_6_1.cs b/LibreMetaverse.LslTools/YYClass/Item_6_1.cs
new file mode 100644
index 00000000..d9c35b9b
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_6_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_6_1 : Item_6
+ {
+ public Item_6_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = ";\n";
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_7.cs b/LibreMetaverse.LslTools/YYClass/Item_7.cs
new file mode 100644
index 00000000..13a6e3e4
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_7.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_7 : Item
+ {
+ public Item_7(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_8.cs b/LibreMetaverse.LslTools/YYClass/Item_8.cs
new file mode 100644
index 00000000..66e22e9c
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_8.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_8 : Item
+ {
+ public Item_8(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_8_1.cs b/LibreMetaverse.LslTools/YYClass/Item_8_1.cs
new file mode 100644
index 00000000..53f852ec
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_8_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_8_1 : Item_8
+ {
+ public Item_8_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = " base ";
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Item_9.cs b/LibreMetaverse.LslTools/YYClass/Item_9.cs
new file mode 100644
index 00000000..abb4fee2
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Item_9.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Item_9 : Item
+ {
+ public Item_9(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/LBRACE.cs b/LibreMetaverse.LslTools/YYClass/LBRACE.cs
new file mode 100644
index 00000000..cf9ce60a
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/LBRACE.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class LBRACE : TOKEN
+ {
+ public LBRACE(Lexer yyl)
+ : base(yyl)
+ {
+ }
+
+ public override string yyname => nameof (LBRACE);
+
+ public override int yynum => 10;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/LBRACK.cs b/LibreMetaverse.LslTools/YYClass/LBRACK.cs
new file mode 100644
index 00000000..c042d1ca
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/LBRACK.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class LBRACK : TOKEN
+ {
+ public LBRACK(Lexer yyl)
+ : base(yyl)
+ {
+ }
+
+ public override string yyname => nameof (LBRACK);
+
+ public override int yynum => 14;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/LPAREN.cs b/LibreMetaverse.LslTools/YYClass/LPAREN.cs
new file mode 100644
index 00000000..53e278a5
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/LPAREN.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class LPAREN : TOKEN
+ {
+ public LPAREN(Lexer yyl)
+ : base(yyl)
+ {
+ }
+
+ public override string yyname => nameof (LPAREN);
+
+ public override int yynum => 12;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/NEW.cs b/LibreMetaverse.LslTools/YYClass/NEW.cs
new file mode 100644
index 00000000..e1deabe8
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/NEW.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class NEW : TOKEN
+ {
+ public NEW(Lexer yyl)
+ : base(yyl)
+ {
+ }
+
+ public override string yyname => nameof (NEW);
+
+ public override int yynum => 5;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Name.cs b/LibreMetaverse.LslTools/YYClass/Name.cs
new file mode 100644
index 00000000..fc144152
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Name.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Name : TOKEN
+ {
+ public Name(Parser yyq)
+ : base(yyq)
+ {
+ }
+
+ public override string yyname => nameof (Name);
+
+ public override int yynum => 23;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Name_1.cs b/LibreMetaverse.LslTools/YYClass/Name_1.cs
new file mode 100644
index 00000000..1d4ee6d3
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Name_1.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Name_1 : Name
+ {
+ public Name_1(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Name_2.cs b/LibreMetaverse.LslTools/YYClass/Name_2.cs
new file mode 100644
index 00000000..39066216
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Name_2.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Name_2 : Name
+ {
+ public Name_2(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Name_2_1.cs b/LibreMetaverse.LslTools/YYClass/Name_2_1.cs
new file mode 100644
index 00000000..0ace37f3
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Name_2_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Name_2_1 : Name_2
+ {
+ public Name_2_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = " " + ((TOKEN) yyq.StackAt(0).m_value).yytext + " ";
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Name_3.cs b/LibreMetaverse.LslTools/YYClass/Name_3.cs
new file mode 100644
index 00000000..438abef7
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Name_3.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Name_3 : Name
+ {
+ public Name_3(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Name_4.cs b/LibreMetaverse.LslTools/YYClass/Name_4.cs
new file mode 100644
index 00000000..6695e875
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Name_4.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Name_4 : Name
+ {
+ public Name_4(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Name_4_1.cs b/LibreMetaverse.LslTools/YYClass/Name_4_1.cs
new file mode 100644
index 00000000..a1c3cb06
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Name_4_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Name_4_1 : Name_4
+ {
+ public Name_4_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = ((TOKEN) yyq.StackAt(3).m_value).yytext + "[" + ((TOKEN) yyq.StackAt(1).m_value).yytext + "]";
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/RBRACE.cs b/LibreMetaverse.LslTools/YYClass/RBRACE.cs
new file mode 100644
index 00000000..5e1f6d89
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/RBRACE.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class RBRACE : TOKEN
+ {
+ public RBRACE(Lexer yyl)
+ : base(yyl)
+ {
+ }
+
+ public override string yyname => nameof (RBRACE);
+
+ public override int yynum => 11;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/RBRACK.cs b/LibreMetaverse.LslTools/YYClass/RBRACK.cs
new file mode 100644
index 00000000..65a5e993
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/RBRACK.cs
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class RBRACK : TOKEN
+ {
+ public RBRACK(Lexer yyl)
+ : base(yyl)
+ {
+ }
+
+ public override string yyname => nameof (RBRACK);
+
+ public override int yynum => 15;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/RPAREN.cs b/LibreMetaverse.LslTools/YYClass/RPAREN.cs
new file mode 100644
index 00000000..edfa826d
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/RPAREN.cs
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class RPAREN : TOKEN
+ {
+ public RPAREN(Lexer yyl)
+ : base(yyl)
+ {
+ }
+
+ public override string yyname => nameof (RPAREN);
+
+ public override int yynum => 13;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/SEMICOLON.cs b/LibreMetaverse.LslTools/YYClass/SEMICOLON.cs
new file mode 100644
index 00000000..3a31bddf
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/SEMICOLON.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class SEMICOLON : TOKEN
+ {
+ public SEMICOLON(Lexer yyl)
+ : base(yyl)
+ {
+ }
+
+ public override string yyname => nameof (SEMICOLON);
+
+ public override int yynum => 9;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Stuff.cs b/LibreMetaverse.LslTools/YYClass/Stuff.cs
new file mode 100644
index 00000000..ee1b3eec
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Stuff.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Stuff : TOKEN
+ {
+ public Stuff(Parser yyq)
+ : base(yyq)
+ {
+ }
+
+ public override string yyname => nameof (Stuff);
+
+ public override int yynum => 17;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Stuff_1.cs b/LibreMetaverse.LslTools/YYClass/Stuff_1.cs
new file mode 100644
index 00000000..216f60bf
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Stuff_1.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Stuff_1 : Stuff
+ {
+ public Stuff_1(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Stuff_2.cs b/LibreMetaverse.LslTools/YYClass/Stuff_2.cs
new file mode 100644
index 00000000..98145f3f
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Stuff_2.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Stuff_2 : Stuff
+ {
+ public Stuff_2(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Stuff_2_1.cs b/LibreMetaverse.LslTools/YYClass/Stuff_2_1.cs
new file mode 100644
index 00000000..76ee655c
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Stuff_2_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Stuff_2_1 : Stuff_2
+ {
+ public Stuff_2_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = "";
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Stuff_3.cs b/LibreMetaverse.LslTools/YYClass/Stuff_3.cs
new file mode 100644
index 00000000..164acc62
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Stuff_3.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Stuff_3 : Stuff
+ {
+ public Stuff_3(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Stuff_4.cs b/LibreMetaverse.LslTools/YYClass/Stuff_4.cs
new file mode 100644
index 00000000..3193c371
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Stuff_4.cs
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Stuff_4 : Stuff
+ {
+ public Stuff_4(Parser yyq)
+ : base(yyq)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/Stuff_4_1.cs b/LibreMetaverse.LslTools/YYClass/Stuff_4_1.cs
new file mode 100644
index 00000000..516e9475
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/Stuff_4_1.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class Stuff_4_1 : Stuff_4
+ {
+ public Stuff_4_1(Parser yyq)
+ : base(yyq)
+ {
+ this.yytext = ((TOKEN) yyq.StackAt(1).m_value).yytext + ((TOKEN) yyq.StackAt(0).m_value).yytext;
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/THIS.cs b/LibreMetaverse.LslTools/YYClass/THIS.cs
new file mode 100644
index 00000000..1347321a
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/THIS.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class THIS : TOKEN
+ {
+ public THIS(Lexer yyl)
+ : base(yyl)
+ {
+ }
+
+ public override string yyname => nameof (THIS);
+
+ public override int yynum => 4;
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/cs0syntax.cs b/LibreMetaverse.LslTools/YYClass/cs0syntax.cs
new file mode 100644
index 00000000..52fa8518
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/cs0syntax.cs
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class cs0syntax : Parser
+ {
+ public string Out;
+ public string Cls;
+ public string Par;
+ public string Ctx;
+ public bool defconseen;
+
+ public cs0syntax()
+ : base((YyParser) new yycs0syntax(), (Lexer) new cs0tokens())
+ {
+ }
+
+ public cs0syntax(YyParser syms)
+ : base(syms, (Lexer) new cs0tokens())
+ {
+ }
+
+ public cs0syntax(YyParser syms, ErrorHandler erh)
+ : base(syms, (Lexer) new cs0tokens(erh))
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/cs0tokens.cs b/LibreMetaverse.LslTools/YYClass/cs0tokens.cs
new file mode 100644
index 00000000..3564a805
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/cs0tokens.cs
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class cs0tokens : Lexer
+ {
+ public string Out;
+
+ public cs0tokens()
+ : base((YyLexer) new yycs0tokens(new ErrorHandler(false)))
+ {
+ }
+
+ public cs0tokens(ErrorHandler eh)
+ : base((YyLexer) new yycs0tokens(eh))
+ {
+ }
+
+ public cs0tokens(YyLexer tks)
+ : base(tks)
+ {
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/yycs0syntax.cs b/LibreMetaverse.LslTools/YYClass/yycs0syntax.cs
new file mode 100644
index 00000000..b5239622
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/yycs0syntax.cs
@@ -0,0 +1,6958 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class yycs0syntax : YyParser
+ {
+ public yycs0syntax()
+ {
+ this.arr = new int[6405]
+ {
+ 101,
+ 4,
+ 6,
+ 52,
+ 0,
+ 46,
+ 0,
+ 53,
+ 0,
+ 102,
+ 20,
+ 103,
+ 4,
+ 18,
+ 67,
+ 0,
+ 108,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 115,
+ 0,
+ 66,
+ 0,
+ 111,
+ 0,
+ 100,
+ 0,
+ 121,
+ 0,
+ 1,
+ 19,
+ 1,
+ 2,
+ 104,
+ 18,
+ 1,
+ 156,
+ 102,
+ 2,
+ 0,
+ 105,
+ 5,
+ 51,
+ 1,
+ 0,
+ 106,
+ 18,
+ 1,
+ 0,
+ 0,
+ 2,
+ 0,
+ 1,
+ 1,
+ 107,
+ 18,
+ 1,
+ 1,
+ 108,
+ 20,
+ 109,
+ 4,
+ 12,
+ 76,
+ 0,
+ 66,
+ 0,
+ 82,
+ 0,
+ 65,
+ 0,
+ 67,
+ 0,
+ 69,
+ 0,
+ 1,
+ 10,
+ 1,
+ 1,
+ 2,
+ 0,
+ 1,
+ 2,
+ 110,
+ 18,
+ 1,
+ 2,
+ 111,
+ 20,
+ 112,
+ 4,
+ 12,
+ 71,
+ 0,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 1,
+ 16,
+ 1,
+ 2,
+ 2,
+ 0,
+ 1,
+ 3,
+ 113,
+ 18,
+ 1,
+ 3,
+ 114,
+ 20,
+ 115,
+ 4,
+ 12,
+ 76,
+ 0,
+ 66,
+ 0,
+ 82,
+ 0,
+ 65,
+ 0,
+ 67,
+ 0,
+ 75,
+ 0,
+ 1,
+ 14,
+ 1,
+ 1,
+ 2,
+ 0,
+ 1,
+ 4,
+ 116,
+ 18,
+ 1,
+ 4,
+ 117,
+ 20,
+ 118,
+ 4,
+ 10,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 1,
+ 17,
+ 1,
+ 2,
+ 2,
+ 0,
+ 1,
+ 5,
+ 119,
+ 18,
+ 1,
+ 5,
+ 120,
+ 20,
+ 121,
+ 4,
+ 12,
+ 82,
+ 0,
+ 66,
+ 0,
+ 82,
+ 0,
+ 65,
+ 0,
+ 67,
+ 0,
+ 75,
+ 0,
+ 1,
+ 15,
+ 1,
+ 1,
+ 2,
+ 0,
+ 1,
+ 115,
+ 122,
+ 18,
+ 1,
+ 115,
+ 123,
+ 20,
+ 124,
+ 4,
+ 12,
+ 82,
+ 0,
+ 80,
+ 0,
+ 65,
+ 0,
+ 82,
+ 0,
+ 69,
+ 0,
+ 78,
+ 0,
+ 1,
+ 13,
+ 1,
+ 1,
+ 2,
+ 0,
+ 1,
+ 7,
+ 125,
+ 18,
+ 1,
+ 7,
+ 108,
+ 2,
+ 0,
+ 1,
+ 8,
+ 126,
+ 18,
+ 1,
+ 8,
+ 117,
+ 2,
+ 0,
+ 1,
+ 118,
+ (int) sbyte.MaxValue,
+ 18,
+ 1,
+ 118,
+ 128,
+ 20,
+ 129,
+ 4,
+ 12,
+ 76,
+ 0,
+ 80,
+ 0,
+ 65,
+ 0,
+ 82,
+ 0,
+ 69,
+ 0,
+ 78,
+ 0,
+ 1,
+ 12,
+ 1,
+ 1,
+ 2,
+ 0,
+ 1,
+ 10,
+ 130,
+ 18,
+ 1,
+ 10,
+ 131,
+ 20,
+ 132,
+ 4,
+ 12,
+ 82,
+ 0,
+ 66,
+ 0,
+ 82,
+ 0,
+ 65,
+ 0,
+ 67,
+ 0,
+ 69,
+ 0,
+ 1,
+ 11,
+ 1,
+ 1,
+ 2,
+ 0,
+ 1,
+ 12,
+ 133,
+ 18,
+ 1,
+ 12,
+ 128,
+ 2,
+ 0,
+ 1,
+ 13,
+ 134,
+ 18,
+ 1,
+ 13,
+ 117,
+ 2,
+ 0,
+ 1,
+ 119,
+ 135,
+ 18,
+ 1,
+ 119,
+ 117,
+ 2,
+ 0,
+ 1,
+ 16,
+ 136,
+ 18,
+ 1,
+ 16,
+ 123,
+ 2,
+ 0,
+ 1,
+ 116,
+ 137,
+ 18,
+ 1,
+ 116,
+ 138,
+ 20,
+ 139,
+ 4,
+ 10,
+ 67,
+ 0,
+ 79,
+ 0,
+ 76,
+ 0,
+ 79,
+ 0,
+ 78,
+ 0,
+ 1,
+ 8,
+ 1,
+ 1,
+ 2,
+ 0,
+ 1,
+ 18,
+ 140,
+ 18,
+ 1,
+ 18,
+ 141,
+ 20,
+ 142,
+ 4,
+ 6,
+ 78,
+ 0,
+ 69,
+ 0,
+ 87,
+ 0,
+ 1,
+ 5,
+ 1,
+ 1,
+ 2,
+ 0,
+ 1,
+ 19,
+ 143,
+ 18,
+ 1,
+ 19,
+ 144,
+ 20,
+ 145,
+ 4,
+ 8,
+ 78,
+ 0,
+ 97,
+ 0,
+ 109,
+ 0,
+ 101,
+ 0,
+ 1,
+ 23,
+ 1,
+ 2,
+ 2,
+ 0,
+ 1,
+ 20,
+ 146,
+ 18,
+ 1,
+ 20,
+ 128,
+ 2,
+ 0,
+ 1,
+ 21,
+ 147,
+ 18,
+ 1,
+ 21,
+ 117,
+ 2,
+ 0,
+ 1,
+ 131,
+ 148,
+ 18,
+ 1,
+ 131,
+ 123,
+ 2,
+ 0,
+ 1,
+ 117,
+ 149,
+ 18,
+ 1,
+ 117,
+ 150,
+ 20,
+ 151,
+ 4,
+ 8,
+ 84,
+ 0,
+ 72,
+ 0,
+ 73,
+ 0,
+ 83,
+ 0,
+ 1,
+ 4,
+ 1,
+ 1,
+ 2,
+ 0,
+ 1,
+ 133,
+ 152,
+ 18,
+ 1,
+ 133,
+ 153,
+ 20,
+ 154,
+ 4,
+ 8,
+ 66,
+ 0,
+ 65,
+ 0,
+ 83,
+ 0,
+ 69,
+ 0,
+ 1,
+ 3,
+ 1,
+ 1,
+ 2,
+ 0,
+ 1,
+ 134,
+ 155,
+ 18,
+ 1,
+ 134,
+ 128,
+ 2,
+ 0,
+ 1,
+ 26,
+ 156,
+ 18,
+ 1,
+ 26,
+ 138,
+ 2,
+ 0,
+ 1,
+ 27,
+ 157,
+ 18,
+ 1,
+ 27,
+ 150,
+ 2,
+ 0,
+ 1,
+ 28,
+ 158,
+ 18,
+ 1,
+ 28,
+ 114,
+ 2,
+ 0,
+ 1,
+ 29,
+ 159,
+ 18,
+ 1,
+ 29,
+ 117,
+ 2,
+ 0,
+ 1,
+ 135,
+ 160,
+ 18,
+ 1,
+ 135,
+ 117,
+ 2,
+ 0,
+ 1,
+ 35,
+ 161,
+ 18,
+ 1,
+ 35,
+ 120,
+ 2,
+ 0,
+ 1,
+ 37,
+ 162,
+ 18,
+ 1,
+ 37,
+ 153,
+ 2,
+ 0,
+ 1,
+ 38,
+ 163,
+ 18,
+ 1,
+ 38,
+ 164,
+ 20,
+ 165,
+ 4,
+ 18,
+ 83,
+ 0,
+ 69,
+ 0,
+ 77,
+ 0,
+ 73,
+ 0,
+ 67,
+ 0,
+ 79,
+ 0,
+ 76,
+ 0,
+ 79,
+ 0,
+ 78,
+ 0,
+ 1,
+ 9,
+ 1,
+ 1,
+ 2,
+ 0,
+ 1,
+ 39,
+ 166,
+ 18,
+ 1,
+ 39,
+ 144,
+ 2,
+ 0,
+ 1,
+ 40,
+ 167,
+ 18,
+ 1,
+ 40,
+ 168,
+ 20,
+ 169,
+ 4,
+ 6,
+ 65,
+ 0,
+ 78,
+ 0,
+ 89,
+ 0,
+ 1,
+ 7,
+ 1,
+ 1,
+ 2,
+ 0,
+ 1,
+ 41,
+ 170,
+ 18,
+ 1,
+ 41,
+ 171,
+ 20,
+ 172,
+ 4,
+ 4,
+ 73,
+ 0,
+ 68,
+ 0,
+ 1,
+ 6,
+ 1,
+ 1,
+ 2,
+ 0,
+ 1,
+ 42,
+ 173,
+ 18,
+ 1,
+ 42,
+ 114,
+ 2,
+ 0,
+ 1,
+ 43,
+ 174,
+ 18,
+ 1,
+ 43,
+ 117,
+ 2,
+ 0,
+ 1,
+ 147,
+ 175,
+ 18,
+ 1,
+ 147,
+ 123,
+ 2,
+ 0,
+ 1,
+ 154,
+ 176,
+ 18,
+ 1,
+ 154,
+ 177,
+ 20,
+ 178,
+ 4,
+ 8,
+ 67,
+ 0,
+ 111,
+ 0,
+ 110,
+ 0,
+ 115,
+ 0,
+ 1,
+ 20,
+ 1,
+ 2,
+ 2,
+ 0,
+ 1,
+ 149,
+ 179,
+ 18,
+ 1,
+ 149,
+ 180,
+ 20,
+ 181,
+ 4,
+ 16,
+ 66,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 101,
+ 0,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 1,
+ 22,
+ 1,
+ 2,
+ 2,
+ 0,
+ 1,
+ 156,
+ 104,
+ 1,
+ 157,
+ 182,
+ 18,
+ 1,
+ 157,
+ 183,
+ 23,
+ 184,
+ 4,
+ 6,
+ 69,
+ 0,
+ 79,
+ 0,
+ 70,
+ 0,
+ 1,
+ 2,
+ 1,
+ 6,
+ 2,
+ 0,
+ 1,
+ 153,
+ 185,
+ 18,
+ 1,
+ 153,
+ 186,
+ 20,
+ 187,
+ 4,
+ 8,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 1,
+ 18,
+ 1,
+ 2,
+ 2,
+ 0,
+ 1,
+ 155,
+ 188,
+ 18,
+ 1,
+ 155,
+ 131,
+ 2,
+ 0,
+ 1,
+ 54,
+ 189,
+ 18,
+ 1,
+ 54,
+ 120,
+ 2,
+ 0,
+ 1,
+ 56,
+ 190,
+ 18,
+ 1,
+ 56,
+ 186,
+ 2,
+ 0,
+ 1,
+ 63,
+ 191,
+ 18,
+ 1,
+ 63,
+ 123,
+ 2,
+ 0,
+ 1,
+ 65,
+ 192,
+ 18,
+ 1,
+ 65,
+ 193,
+ 20,
+ 194,
+ 4,
+ 8,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 1,
+ 21,
+ 1,
+ 2,
+ 2,
+ 0,
+ 1,
+ 101,
+ 195,
+ 18,
+ 1,
+ 101,
+ 144,
+ 2,
+ 0,
+ 1,
+ 102,
+ 196,
+ 18,
+ 1,
+ 102,
+ 128,
+ 2,
+ 0,
+ 1,
+ 103,
+ 197,
+ 18,
+ 1,
+ 103,
+ 117,
+ 2,
+ 0,
+ 198,
+ 5,
+ 0,
+ 199,
+ 5,
+ 97,
+ 1,
+ 2,
+ 200,
+ 19,
+ 184,
+ 1,
+ 2,
+ 201,
+ 5,
+ 1,
+ 1,
+ 155,
+ 202,
+ 17,
+ 203,
+ 15,
+ 204,
+ 4,
+ 28,
+ 37,
+ 0,
+ 67,
+ 0,
+ 108,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 115,
+ 0,
+ 66,
+ 0,
+ 111,
+ 0,
+ 100,
+ 0,
+ 121,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 205,
+ 20,
+ 206,
+ 4,
+ 26,
+ 67,
+ 0,
+ 108,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 115,
+ 0,
+ 66,
+ 0,
+ 111,
+ 0,
+ 100,
+ 0,
+ 121,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 26,
+ 1,
+ 3,
+ 1,
+ 4,
+ 1,
+ 3,
+ 207,
+ 22,
+ 1,
+ 1,
+ 1,
+ 3,
+ 208,
+ 19,
+ 154,
+ 1,
+ 3,
+ 209,
+ 5,
+ 44,
+ 1,
+ 1,
+ 210,
+ 17,
+ 211,
+ 15,
+ 212,
+ 4,
+ 22,
+ 37,
+ 0,
+ 71,
+ 0,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 213,
+ 20,
+ 214,
+ 4,
+ 20,
+ 71,
+ 0,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 29,
+ 1,
+ 3,
+ 1,
+ 1,
+ 1,
+ 0,
+ 215,
+ 22,
+ 1,
+ 2,
+ 1,
+ 2,
+ 216,
+ 16,
+ 0,
+ 162,
+ 1,
+ 3,
+ 217,
+ 17,
+ 218,
+ 15,
+ 219,
+ 4,
+ 20,
+ 37,
+ 0,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 220,
+ 20,
+ 221,
+ 4,
+ 18,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 38,
+ 1,
+ 3,
+ 1,
+ 1,
+ 1,
+ 0,
+ 222,
+ 22,
+ 1,
+ 5,
+ 1,
+ 4,
+ 223,
+ 16,
+ 0,
+ 162,
+ 1,
+ 5,
+ 224,
+ 17,
+ 225,
+ 15,
+ 226,
+ 4,
+ 20,
+ 37,
+ 0,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 52,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 227,
+ 20,
+ 228,
+ 4,
+ 18,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 52,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 98,
+ 1,
+ 3,
+ 1,
+ 4,
+ 1,
+ 3,
+ 229,
+ 22,
+ 1,
+ 25,
+ 1,
+ 115,
+ 230,
+ 17,
+ 231,
+ 15,
+ 232,
+ 4,
+ 26,
+ 37,
+ 0,
+ 66,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 101,
+ 0,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 233,
+ 20,
+ 234,
+ 4,
+ 24,
+ 66,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 101,
+ 0,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 50,
+ 1,
+ 3,
+ 1,
+ 1,
+ 1,
+ 0,
+ 235,
+ 22,
+ 1,
+ 9,
+ 1,
+ 7,
+ 236,
+ 17,
+ 218,
+ 1,
+ 0,
+ 222,
+ 1,
+ 8,
+ 237,
+ 16,
+ 0,
+ 162,
+ 1,
+ 118,
+ 238,
+ 17,
+ 218,
+ 1,
+ 0,
+ 222,
+ 1,
+ 10,
+ 239,
+ 17,
+ 240,
+ 15,
+ 241,
+ 4,
+ 20,
+ 37,
+ 0,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 242,
+ 20,
+ 243,
+ 4,
+ 18,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 95,
+ 1,
+ 3,
+ 1,
+ 4,
+ 1,
+ 3,
+ 244,
+ 22,
+ 1,
+ 24,
+ 1,
+ 12,
+ 245,
+ 17,
+ 218,
+ 1,
+ 0,
+ 222,
+ 1,
+ 13,
+ 246,
+ 16,
+ 0,
+ 162,
+ 1,
+ 119,
+ 247,
+ 16,
+ 0,
+ 162,
+ 1,
+ 16,
+ 248,
+ 17,
+ 249,
+ 15,
+ 250,
+ 4,
+ 20,
+ 37,
+ 0,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 48,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 251,
+ 20,
+ 252,
+ 4,
+ 18,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 48,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 92,
+ 1,
+ 3,
+ 1,
+ 4,
+ 1,
+ 3,
+ 253,
+ 22,
+ 1,
+ 23,
+ 1,
+ 116,
+ 254,
+ 16,
+ 0,
+ 152,
+ 1,
+ 19,
+ (int) byte.MaxValue,
+ 17,
+ 256,
+ 15,
+ 257,
+ 4,
+ 20,
+ 37,
+ 0,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 56,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 258,
+ 20,
+ 259,
+ 4,
+ 18,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 56,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 89,
+ 1,
+ 3,
+ 1,
+ 3,
+ 1,
+ 2,
+ 260,
+ 22,
+ 1,
+ 22,
+ 1,
+ 20,
+ 261,
+ 17,
+ 218,
+ 1,
+ 0,
+ 222,
+ 1,
+ 21,
+ 262,
+ 16,
+ 0,
+ 162,
+ 1,
+ 131,
+ 263,
+ 17,
+ 264,
+ 15,
+ 265,
+ 4,
+ 26,
+ 37,
+ 0,
+ 66,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 101,
+ 0,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 95,
+ 0,
+ 54,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 266,
+ 20,
+ 267,
+ 4,
+ 24,
+ 66,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 101,
+ 0,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 95,
+ 0,
+ 54,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 56,
+ 1,
+ 3,
+ 1,
+ 6,
+ 1,
+ 5,
+ 268,
+ 22,
+ 1,
+ 11,
+ 1,
+ 134,
+ 269,
+ 17,
+ 218,
+ 1,
+ 0,
+ 222,
+ 1,
+ 135,
+ 270,
+ 16,
+ 0,
+ 162,
+ 1,
+ 27,
+ 271,
+ 17,
+ 272,
+ 15,
+ 273,
+ 4,
+ 20,
+ 37,
+ 0,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 48,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 274,
+ 20,
+ 275,
+ 4,
+ 18,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 48,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 77,
+ 1,
+ 3,
+ 1,
+ 2,
+ 1,
+ 1,
+ 276,
+ 22,
+ 1,
+ 18,
+ 1,
+ 26,
+ 277,
+ 17,
+ 278,
+ 15,
+ 279,
+ 4,
+ 20,
+ 37,
+ 0,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 52,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 280,
+ 20,
+ 281,
+ 4,
+ 18,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 52,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 83,
+ 1,
+ 3,
+ 1,
+ 2,
+ 1,
+ 1,
+ 282,
+ 22,
+ 1,
+ 20,
+ 1,
+ 29,
+ 283,
+ 16,
+ 0,
+ 162,
+ 1,
+ 28,
+ 284,
+ 17,
+ 218,
+ 1,
+ 0,
+ 222,
+ 1,
+ 35,
+ 285,
+ 17,
+ 286,
+ 15,
+ 287,
+ 4,
+ 20,
+ 37,
+ 0,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 288,
+ 20,
+ 289,
+ 4,
+ 18,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 80,
+ 1,
+ 3,
+ 1,
+ 5,
+ 1,
+ 4,
+ 290,
+ 22,
+ 1,
+ 19,
+ 1,
+ 37,
+ 291,
+ 17,
+ 292,
+ 15,
+ 293,
+ 4,
+ 18,
+ 37,
+ 0,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 56,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 294,
+ 20,
+ 295,
+ 4,
+ 16,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 56,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 74,
+ 1,
+ 3,
+ 1,
+ 2,
+ 1,
+ 1,
+ 296,
+ 22,
+ 1,
+ 17,
+ 1,
+ 38,
+ 297,
+ 17,
+ 298,
+ 15,
+ 299,
+ 4,
+ 18,
+ 37,
+ 0,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 54,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 300,
+ 20,
+ 301,
+ 4,
+ 16,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 54,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 71,
+ 1,
+ 3,
+ 1,
+ 2,
+ 1,
+ 1,
+ 302,
+ 22,
+ 1,
+ 16,
+ 1,
+ 39,
+ 303,
+ 17,
+ 304,
+ 15,
+ 305,
+ 4,
+ 18,
+ 37,
+ 0,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 52,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 306,
+ 20,
+ 307,
+ 4,
+ 16,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 52,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 68,
+ 1,
+ 3,
+ 1,
+ 2,
+ 1,
+ 1,
+ 308,
+ 22,
+ 1,
+ 15,
+ 1,
+ 40,
+ 309,
+ 17,
+ 310,
+ 15,
+ 311,
+ 4,
+ 18,
+ 37,
+ 0,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 312,
+ 20,
+ 313,
+ 4,
+ 16,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 65,
+ 1,
+ 3,
+ 1,
+ 2,
+ 1,
+ 1,
+ 314,
+ 22,
+ 1,
+ 14,
+ 1,
+ 41,
+ 315,
+ 17,
+ 316,
+ 15,
+ 317,
+ 4,
+ 18,
+ 37,
+ 0,
+ 78,
+ 0,
+ 97,
+ 0,
+ 109,
+ 0,
+ 101,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 318,
+ 20,
+ 319,
+ 4,
+ 16,
+ 78,
+ 0,
+ 97,
+ 0,
+ 109,
+ 0,
+ 101,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 59,
+ 1,
+ 3,
+ 1,
+ 2,
+ 1,
+ 1,
+ 320,
+ 22,
+ 1,
+ 12,
+ 1,
+ 42,
+ 321,
+ 17,
+ 218,
+ 1,
+ 0,
+ 222,
+ 1,
+ 43,
+ 322,
+ 16,
+ 0,
+ 162,
+ 1,
+ 147,
+ 323,
+ 17,
+ 324,
+ 15,
+ 325,
+ 4,
+ 26,
+ 37,
+ 0,
+ 66,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 101,
+ 0,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 95,
+ 0,
+ 52,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 326,
+ 20,
+ 327,
+ 4,
+ 24,
+ 66,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 101,
+ 0,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 95,
+ 0,
+ 52,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 53,
+ 1,
+ 3,
+ 1,
+ 6,
+ 1,
+ 5,
+ 328,
+ 22,
+ 1,
+ 10,
+ 1,
+ 154,
+ 329,
+ 17,
+ 330,
+ 15,
+ 331,
+ 4,
+ 22,
+ 37,
+ 0,
+ 71,
+ 0,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 52,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 332,
+ 20,
+ 333,
+ 4,
+ 20,
+ 71,
+ 0,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 52,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 32,
+ 1,
+ 3,
+ 1,
+ 3,
+ 1,
+ 2,
+ 334,
+ 22,
+ 1,
+ 3,
+ 1,
+ 149,
+ 335,
+ 17,
+ 336,
+ 15,
+ 337,
+ 4,
+ 18,
+ 37,
+ 0,
+ 67,
+ 0,
+ 111,
+ 0,
+ 110,
+ 0,
+ 115,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 338,
+ 20,
+ 339,
+ 4,
+ 16,
+ 67,
+ 0,
+ 111,
+ 0,
+ 110,
+ 0,
+ 115,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 44,
+ 1,
+ 3,
+ 1,
+ 6,
+ 1,
+ 5,
+ 340,
+ 22,
+ 1,
+ 7,
+ 1,
+ 153,
+ 341,
+ 17,
+ 342,
+ 15,
+ 343,
+ 4,
+ 22,
+ 37,
+ 0,
+ 71,
+ 0,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 54,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 344,
+ 20,
+ 345,
+ 4,
+ 20,
+ 71,
+ 0,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 54,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 35,
+ 1,
+ 3,
+ 1,
+ 3,
+ 1,
+ 2,
+ 346,
+ 22,
+ 1,
+ 4,
+ 1,
+ 54,
+ 347,
+ 17,
+ 348,
+ 15,
+ 349,
+ 4,
+ 18,
+ 37,
+ 0,
+ 78,
+ 0,
+ 97,
+ 0,
+ 109,
+ 0,
+ 101,
+ 0,
+ 95,
+ 0,
+ 52,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 350,
+ 20,
+ 351,
+ 4,
+ 16,
+ 78,
+ 0,
+ 97,
+ 0,
+ 109,
+ 0,
+ 101,
+ 0,
+ 95,
+ 0,
+ 52,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 62,
+ 1,
+ 3,
+ 1,
+ 5,
+ 1,
+ 4,
+ 352,
+ 22,
+ 1,
+ 13,
+ 1,
+ 56,
+ 353,
+ 17,
+ 354,
+ 15,
+ 355,
+ 4,
+ 20,
+ 37,
+ 0,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 52,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 356,
+ 20,
+ 357,
+ 4,
+ 18,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 52,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 41,
+ 1,
+ 3,
+ 1,
+ 3,
+ 1,
+ 2,
+ 358,
+ 22,
+ 1,
+ 6,
+ 1,
+ 63,
+ 359,
+ 17,
+ 360,
+ 15,
+ 361,
+ 4,
+ 18,
+ 37,
+ 0,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 362,
+ 20,
+ 363,
+ 4,
+ 16,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 47,
+ 1,
+ 3,
+ 1,
+ 5,
+ 1,
+ 4,
+ 364,
+ 22,
+ 1,
+ 8,
+ 1,
+ 65,
+ 365,
+ 17,
+ 366,
+ 15,
+ 367,
+ 4,
+ 20,
+ 37,
+ 0,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 54,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ -1,
+ 1,
+ 5,
+ 368,
+ 20,
+ 369,
+ 4,
+ 18,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 54,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 86,
+ 1,
+ 3,
+ 1,
+ 3,
+ 1,
+ 2,
+ 370,
+ 22,
+ 1,
+ 21,
+ 1,
+ 101,
+ 371,
+ 17,
+ 304,
+ 1,
+ 1,
+ 308,
+ 1,
+ 102,
+ 372,
+ 17,
+ 218,
+ 1,
+ 0,
+ 222,
+ 1,
+ 103,
+ 373,
+ 16,
+ 0,
+ 162,
+ 1,
+ 4,
+ 374,
+ 19,
+ 151,
+ 1,
+ 4,
+ 375,
+ 5,
+ 44,
+ 1,
+ 1,
+ 210,
+ 1,
+ 2,
+ 376,
+ 16,
+ 0,
+ 157,
+ 1,
+ 3,
+ 217,
+ 1,
+ 4,
+ 377,
+ 16,
+ 0,
+ 157,
+ 1,
+ 5,
+ 224,
+ 1,
+ 115,
+ 230,
+ 1,
+ 7,
+ 236,
+ 1,
+ 8,
+ 378,
+ 16,
+ 0,
+ 157,
+ 1,
+ 118,
+ 238,
+ 1,
+ 10,
+ 239,
+ 1,
+ 12,
+ 245,
+ 1,
+ 13,
+ 379,
+ 16,
+ 0,
+ 157,
+ 1,
+ 119,
+ 380,
+ 16,
+ 0,
+ 157,
+ 1,
+ 16,
+ 248,
+ 1,
+ 116,
+ 381,
+ 16,
+ 0,
+ 149,
+ 1,
+ 19,
+ (int) byte.MaxValue,
+ 1,
+ 20,
+ 261,
+ 1,
+ 21,
+ 382,
+ 16,
+ 0,
+ 157,
+ 1,
+ 131,
+ 263,
+ 1,
+ 134,
+ 269,
+ 1,
+ 135,
+ 383,
+ 16,
+ 0,
+ 157,
+ 1,
+ 27,
+ 271,
+ 1,
+ 26,
+ 277,
+ 1,
+ 29,
+ 384,
+ 16,
+ 0,
+ 157,
+ 1,
+ 28,
+ 284,
+ 1,
+ 35,
+ 285,
+ 1,
+ 37,
+ 291,
+ 1,
+ 38,
+ 297,
+ 1,
+ 39,
+ 303,
+ 1,
+ 40,
+ 309,
+ 1,
+ 41,
+ 315,
+ 1,
+ 42,
+ 321,
+ 1,
+ 43,
+ 385,
+ 16,
+ 0,
+ 157,
+ 1,
+ 147,
+ 323,
+ 1,
+ 154,
+ 329,
+ 1,
+ 149,
+ 335,
+ 1,
+ 153,
+ 341,
+ 1,
+ 54,
+ 347,
+ 1,
+ 56,
+ 353,
+ 1,
+ 63,
+ 359,
+ 1,
+ 65,
+ 365,
+ 1,
+ 101,
+ 371,
+ 1,
+ 102,
+ 372,
+ 1,
+ 103,
+ 386,
+ 16,
+ 0,
+ 157,
+ 1,
+ 5,
+ 387,
+ 19,
+ 142,
+ 1,
+ 5,
+ 388,
+ 5,
+ 43,
+ 1,
+ 1,
+ 210,
+ 1,
+ 2,
+ 389,
+ 16,
+ 0,
+ 140,
+ 1,
+ 3,
+ 217,
+ 1,
+ 4,
+ 390,
+ 16,
+ 0,
+ 140,
+ 1,
+ 5,
+ 224,
+ 1,
+ 115,
+ 230,
+ 1,
+ 7,
+ 236,
+ 1,
+ 8,
+ 391,
+ 16,
+ 0,
+ 140,
+ 1,
+ 118,
+ 238,
+ 1,
+ 10,
+ 239,
+ 1,
+ 12,
+ 245,
+ 1,
+ 13,
+ 392,
+ 16,
+ 0,
+ 140,
+ 1,
+ 119,
+ 393,
+ 16,
+ 0,
+ 140,
+ 1,
+ 16,
+ 248,
+ 1,
+ 19,
+ (int) byte.MaxValue,
+ 1,
+ 20,
+ 261,
+ 1,
+ 21,
+ 394,
+ 16,
+ 0,
+ 140,
+ 1,
+ 131,
+ 263,
+ 1,
+ 134,
+ 269,
+ 1,
+ 135,
+ 395,
+ 16,
+ 0,
+ 140,
+ 1,
+ 27,
+ 271,
+ 1,
+ 26,
+ 277,
+ 1,
+ 29,
+ 396,
+ 16,
+ 0,
+ 140,
+ 1,
+ 28,
+ 284,
+ 1,
+ 35,
+ 285,
+ 1,
+ 37,
+ 291,
+ 1,
+ 38,
+ 297,
+ 1,
+ 39,
+ 303,
+ 1,
+ 40,
+ 309,
+ 1,
+ 41,
+ 315,
+ 1,
+ 42,
+ 321,
+ 1,
+ 43,
+ 397,
+ 16,
+ 0,
+ 140,
+ 1,
+ 147,
+ 323,
+ 1,
+ 154,
+ 329,
+ 1,
+ 149,
+ 335,
+ 1,
+ 153,
+ 341,
+ 1,
+ 54,
+ 347,
+ 1,
+ 56,
+ 353,
+ 1,
+ 63,
+ 359,
+ 1,
+ 65,
+ 365,
+ 1,
+ 101,
+ 371,
+ 1,
+ 102,
+ 372,
+ 1,
+ 103,
+ 398,
+ 16,
+ 0,
+ 140,
+ 1,
+ 6,
+ 399,
+ 19,
+ 172,
+ 1,
+ 6,
+ 400,
+ 5,
+ 44,
+ 1,
+ 1,
+ 210,
+ 1,
+ 2,
+ 401,
+ 16,
+ 0,
+ 170,
+ 1,
+ 3,
+ 217,
+ 1,
+ 4,
+ 402,
+ 16,
+ 0,
+ 170,
+ 1,
+ 5,
+ 224,
+ 1,
+ 115,
+ 230,
+ 1,
+ 7,
+ 236,
+ 1,
+ 8,
+ 403,
+ 16,
+ 0,
+ 170,
+ 1,
+ 118,
+ 238,
+ 1,
+ 10,
+ 239,
+ 1,
+ 12,
+ 245,
+ 1,
+ 13,
+ 404,
+ 16,
+ 0,
+ 170,
+ 1,
+ 119,
+ 405,
+ 16,
+ 0,
+ 170,
+ 1,
+ 16,
+ 248,
+ 1,
+ 18,
+ 406,
+ 16,
+ 0,
+ 170,
+ 1,
+ 19,
+ (int) byte.MaxValue,
+ 1,
+ 20,
+ 261,
+ 1,
+ 21,
+ 407,
+ 16,
+ 0,
+ 170,
+ 1,
+ 131,
+ 263,
+ 1,
+ 134,
+ 269,
+ 1,
+ 135,
+ 408,
+ 16,
+ 0,
+ 170,
+ 1,
+ 27,
+ 271,
+ 1,
+ 26,
+ 277,
+ 1,
+ 29,
+ 409,
+ 16,
+ 0,
+ 170,
+ 1,
+ 28,
+ 284,
+ 1,
+ 35,
+ 285,
+ 1,
+ 37,
+ 291,
+ 1,
+ 38,
+ 297,
+ 1,
+ 39,
+ 303,
+ 1,
+ 40,
+ 309,
+ 1,
+ 41,
+ 315,
+ 1,
+ 42,
+ 321,
+ 1,
+ 43,
+ 410,
+ 16,
+ 0,
+ 170,
+ 1,
+ 147,
+ 323,
+ 1,
+ 154,
+ 329,
+ 1,
+ 149,
+ 335,
+ 1,
+ 153,
+ 341,
+ 1,
+ 54,
+ 347,
+ 1,
+ 56,
+ 353,
+ 1,
+ 63,
+ 359,
+ 1,
+ 65,
+ 365,
+ 1,
+ 101,
+ 371,
+ 1,
+ 102,
+ 372,
+ 1,
+ 103,
+ 411,
+ 16,
+ 0,
+ 170,
+ 1,
+ 7,
+ 412,
+ 19,
+ 169,
+ 1,
+ 7,
+ 413,
+ 5,
+ 43,
+ 1,
+ 1,
+ 210,
+ 1,
+ 2,
+ 414,
+ 16,
+ 0,
+ 167,
+ 1,
+ 3,
+ 217,
+ 1,
+ 4,
+ 415,
+ 16,
+ 0,
+ 167,
+ 1,
+ 5,
+ 224,
+ 1,
+ 115,
+ 230,
+ 1,
+ 7,
+ 236,
+ 1,
+ 8,
+ 416,
+ 16,
+ 0,
+ 167,
+ 1,
+ 118,
+ 238,
+ 1,
+ 10,
+ 239,
+ 1,
+ 12,
+ 245,
+ 1,
+ 13,
+ 417,
+ 16,
+ 0,
+ 167,
+ 1,
+ 119,
+ 418,
+ 16,
+ 0,
+ 167,
+ 1,
+ 16,
+ 248,
+ 1,
+ 19,
+ (int) byte.MaxValue,
+ 1,
+ 20,
+ 261,
+ 1,
+ 21,
+ 419,
+ 16,
+ 0,
+ 167,
+ 1,
+ 131,
+ 263,
+ 1,
+ 134,
+ 269,
+ 1,
+ 135,
+ 420,
+ 16,
+ 0,
+ 167,
+ 1,
+ 27,
+ 271,
+ 1,
+ 26,
+ 277,
+ 1,
+ 29,
+ 421,
+ 16,
+ 0,
+ 167,
+ 1,
+ 28,
+ 284,
+ 1,
+ 35,
+ 285,
+ 1,
+ 37,
+ 291,
+ 1,
+ 38,
+ 297,
+ 1,
+ 39,
+ 303,
+ 1,
+ 40,
+ 309,
+ 1,
+ 41,
+ 315,
+ 1,
+ 42,
+ 321,
+ 1,
+ 43,
+ 422,
+ 16,
+ 0,
+ 167,
+ 1,
+ 147,
+ 323,
+ 1,
+ 154,
+ 329,
+ 1,
+ 149,
+ 335,
+ 1,
+ 153,
+ 341,
+ 1,
+ 54,
+ 347,
+ 1,
+ 56,
+ 353,
+ 1,
+ 63,
+ 359,
+ 1,
+ 65,
+ 365,
+ 1,
+ 101,
+ 371,
+ 1,
+ 102,
+ 372,
+ 1,
+ 103,
+ 423,
+ 16,
+ 0,
+ 167,
+ 1,
+ 8,
+ 424,
+ 19,
+ 139,
+ 1,
+ 8,
+ 425,
+ 5,
+ 43,
+ 1,
+ 1,
+ 210,
+ 1,
+ 2,
+ 426,
+ 16,
+ 0,
+ 156,
+ 1,
+ 3,
+ 217,
+ 1,
+ 4,
+ 427,
+ 16,
+ 0,
+ 156,
+ 1,
+ 5,
+ 224,
+ 1,
+ 115,
+ 428,
+ 16,
+ 0,
+ 137,
+ 1,
+ 7,
+ 236,
+ 1,
+ 8,
+ 429,
+ 16,
+ 0,
+ 156,
+ 1,
+ 118,
+ 238,
+ 1,
+ 10,
+ 239,
+ 1,
+ 12,
+ 245,
+ 1,
+ 13,
+ 430,
+ 16,
+ 0,
+ 156,
+ 1,
+ 119,
+ 431,
+ 16,
+ 0,
+ 156,
+ 1,
+ 16,
+ 248,
+ 1,
+ 19,
+ (int) byte.MaxValue,
+ 1,
+ 20,
+ 261,
+ 1,
+ 21,
+ 432,
+ 16,
+ 0,
+ 156,
+ 1,
+ 131,
+ 263,
+ 1,
+ 134,
+ 269,
+ 1,
+ 135,
+ 433,
+ 16,
+ 0,
+ 156,
+ 1,
+ 27,
+ 271,
+ 1,
+ 26,
+ 277,
+ 1,
+ 29,
+ 434,
+ 16,
+ 0,
+ 156,
+ 1,
+ 28,
+ 284,
+ 1,
+ 35,
+ 285,
+ 1,
+ 37,
+ 291,
+ 1,
+ 38,
+ 297,
+ 1,
+ 39,
+ 303,
+ 1,
+ 40,
+ 309,
+ 1,
+ 41,
+ 315,
+ 1,
+ 42,
+ 321,
+ 1,
+ 43,
+ 435,
+ 16,
+ 0,
+ 156,
+ 1,
+ 147,
+ 323,
+ 1,
+ 154,
+ 329,
+ 1,
+ 149,
+ 335,
+ 1,
+ 153,
+ 341,
+ 1,
+ 54,
+ 347,
+ 1,
+ 56,
+ 353,
+ 1,
+ 63,
+ 359,
+ 1,
+ 65,
+ 365,
+ 1,
+ 101,
+ 371,
+ 1,
+ 102,
+ 372,
+ 1,
+ 103,
+ 436,
+ 16,
+ 0,
+ 156,
+ 1,
+ 9,
+ 437,
+ 19,
+ 165,
+ 1,
+ 9,
+ 438,
+ 5,
+ 43,
+ 1,
+ 1,
+ 210,
+ 1,
+ 2,
+ 439,
+ 16,
+ 0,
+ 163,
+ 1,
+ 3,
+ 217,
+ 1,
+ 4,
+ 440,
+ 16,
+ 0,
+ 163,
+ 1,
+ 5,
+ 224,
+ 1,
+ 115,
+ 230,
+ 1,
+ 7,
+ 236,
+ 1,
+ 8,
+ 441,
+ 16,
+ 0,
+ 163,
+ 1,
+ 118,
+ 238,
+ 1,
+ 10,
+ 239,
+ 1,
+ 12,
+ 245,
+ 1,
+ 13,
+ 442,
+ 16,
+ 0,
+ 163,
+ 1,
+ 119,
+ 443,
+ 16,
+ 0,
+ 163,
+ 1,
+ 16,
+ 248,
+ 1,
+ 19,
+ (int) byte.MaxValue,
+ 1,
+ 20,
+ 261,
+ 1,
+ 21,
+ 444,
+ 16,
+ 0,
+ 163,
+ 1,
+ 131,
+ 263,
+ 1,
+ 134,
+ 269,
+ 1,
+ 135,
+ 445,
+ 16,
+ 0,
+ 163,
+ 1,
+ 27,
+ 271,
+ 1,
+ 26,
+ 277,
+ 1,
+ 29,
+ 446,
+ 16,
+ 0,
+ 163,
+ 1,
+ 28,
+ 284,
+ 1,
+ 35,
+ 285,
+ 1,
+ 37,
+ 291,
+ 1,
+ 38,
+ 297,
+ 1,
+ 39,
+ 303,
+ 1,
+ 40,
+ 309,
+ 1,
+ 41,
+ 315,
+ 1,
+ 42,
+ 321,
+ 1,
+ 43,
+ 447,
+ 16,
+ 0,
+ 163,
+ 1,
+ 147,
+ 323,
+ 1,
+ 154,
+ 329,
+ 1,
+ 149,
+ 335,
+ 1,
+ 153,
+ 341,
+ 1,
+ 54,
+ 347,
+ 1,
+ 56,
+ 353,
+ 1,
+ 63,
+ 359,
+ 1,
+ 65,
+ 365,
+ 1,
+ 101,
+ 371,
+ 1,
+ 102,
+ 372,
+ 1,
+ 103,
+ 448,
+ 16,
+ 0,
+ 163,
+ 1,
+ 10,
+ 449,
+ 19,
+ 109,
+ 1,
+ 10,
+ 450,
+ 5,
+ 44,
+ 1,
+ 0,
+ 451,
+ 16,
+ 0,
+ 107,
+ 1,
+ 1,
+ 210,
+ 1,
+ 2,
+ 452,
+ 16,
+ 0,
+ 125,
+ 1,
+ 3,
+ 217,
+ 1,
+ 4,
+ 453,
+ 16,
+ 0,
+ 125,
+ 1,
+ 5,
+ 224,
+ 1,
+ 115,
+ 230,
+ 1,
+ 7,
+ 236,
+ 1,
+ 8,
+ 454,
+ 16,
+ 0,
+ 125,
+ 1,
+ 118,
+ 238,
+ 1,
+ 10,
+ 239,
+ 1,
+ 12,
+ 245,
+ 1,
+ 13,
+ 455,
+ 16,
+ 0,
+ 125,
+ 1,
+ 119,
+ 456,
+ 16,
+ 0,
+ 125,
+ 1,
+ 16,
+ 248,
+ 1,
+ 19,
+ (int) byte.MaxValue,
+ 1,
+ 20,
+ 261,
+ 1,
+ 21,
+ 457,
+ 16,
+ 0,
+ 125,
+ 1,
+ 131,
+ 263,
+ 1,
+ 134,
+ 269,
+ 1,
+ 135,
+ 458,
+ 16,
+ 0,
+ 125,
+ 1,
+ 27,
+ 271,
+ 1,
+ 26,
+ 277,
+ 1,
+ 29,
+ 459,
+ 16,
+ 0,
+ 125,
+ 1,
+ 28,
+ 284,
+ 1,
+ 35,
+ 285,
+ 1,
+ 37,
+ 291,
+ 1,
+ 38,
+ 297,
+ 1,
+ 39,
+ 303,
+ 1,
+ 40,
+ 309,
+ 1,
+ 41,
+ 315,
+ 1,
+ 42,
+ 321,
+ 1,
+ 43,
+ 460,
+ 16,
+ 0,
+ 125,
+ 1,
+ 147,
+ 323,
+ 1,
+ 154,
+ 329,
+ 1,
+ 149,
+ 335,
+ 1,
+ 153,
+ 341,
+ 1,
+ 54,
+ 347,
+ 1,
+ 56,
+ 353,
+ 1,
+ 63,
+ 359,
+ 1,
+ 65,
+ 365,
+ 1,
+ 101,
+ 371,
+ 1,
+ 102,
+ 372,
+ 1,
+ 103,
+ 461,
+ 16,
+ 0,
+ 125,
+ 1,
+ 11,
+ 462,
+ 19,
+ 132,
+ 1,
+ 11,
+ 463,
+ 5,
+ 35,
+ 1,
+ 1,
+ 210,
+ 1,
+ 2,
+ 464,
+ 16,
+ 0,
+ 188,
+ 1,
+ 3,
+ 217,
+ 1,
+ 5,
+ 224,
+ 1,
+ 115,
+ 230,
+ 1,
+ 7,
+ 236,
+ 1,
+ 8,
+ 465,
+ 16,
+ 0,
+ 130,
+ 1,
+ 118,
+ 238,
+ 1,
+ 10,
+ 239,
+ 1,
+ 12,
+ 245,
+ 1,
+ 16,
+ 248,
+ 1,
+ 19,
+ (int) byte.MaxValue,
+ 1,
+ 20,
+ 261,
+ 1,
+ 131,
+ 263,
+ 1,
+ 134,
+ 269,
+ 1,
+ 26,
+ 277,
+ 1,
+ 27,
+ 271,
+ 1,
+ 28,
+ 284,
+ 1,
+ 35,
+ 285,
+ 1,
+ 37,
+ 291,
+ 1,
+ 38,
+ 297,
+ 1,
+ 39,
+ 303,
+ 1,
+ 40,
+ 309,
+ 1,
+ 41,
+ 315,
+ 1,
+ 42,
+ 321,
+ 1,
+ 147,
+ 323,
+ 1,
+ 154,
+ 329,
+ 1,
+ 149,
+ 335,
+ 1,
+ 153,
+ 341,
+ 1,
+ 54,
+ 347,
+ 1,
+ 56,
+ 353,
+ 1,
+ 63,
+ 359,
+ 1,
+ 65,
+ 365,
+ 1,
+ 101,
+ 371,
+ 1,
+ 102,
+ 372,
+ 1,
+ 12,
+ 466,
+ 19,
+ 129,
+ 1,
+ 12,
+ 467,
+ 5,
+ 45,
+ 1,
+ 1,
+ 210,
+ 1,
+ 2,
+ 468,
+ 16,
+ 0,
+ 133,
+ 1,
+ 3,
+ 217,
+ 1,
+ 4,
+ 469,
+ 16,
+ 0,
+ 133,
+ 1,
+ 5,
+ 224,
+ 1,
+ 115,
+ 230,
+ 1,
+ 7,
+ 236,
+ 1,
+ 117,
+ 470,
+ 16,
+ 0,
+ (int) sbyte.MaxValue,
+ 1,
+ 118,
+ 238,
+ 1,
+ 8,
+ 471,
+ 16,
+ 0,
+ 133,
+ 1,
+ 10,
+ 239,
+ 1,
+ 13,
+ 472,
+ 16,
+ 0,
+ 133,
+ 1,
+ 12,
+ 245,
+ 1,
+ 119,
+ 473,
+ 16,
+ 0,
+ 133,
+ 1,
+ 16,
+ 248,
+ 1,
+ 19,
+ 474,
+ 16,
+ 0,
+ 146,
+ 1,
+ 20,
+ 261,
+ 1,
+ 21,
+ 475,
+ 16,
+ 0,
+ 133,
+ 1,
+ 131,
+ 263,
+ 1,
+ 133,
+ 476,
+ 16,
+ 0,
+ 155,
+ 1,
+ 134,
+ 269,
+ 1,
+ 135,
+ 477,
+ 16,
+ 0,
+ 133,
+ 1,
+ 27,
+ 271,
+ 1,
+ 26,
+ 277,
+ 1,
+ 29,
+ 478,
+ 16,
+ 0,
+ 133,
+ 1,
+ 28,
+ 284,
+ 1,
+ 35,
+ 285,
+ 1,
+ 37,
+ 291,
+ 1,
+ 38,
+ 297,
+ 1,
+ 39,
+ 303,
+ 1,
+ 40,
+ 309,
+ 1,
+ 41,
+ 315,
+ 1,
+ 42,
+ 321,
+ 1,
+ 43,
+ 479,
+ 16,
+ 0,
+ 133,
+ 1,
+ 147,
+ 323,
+ 1,
+ 154,
+ 329,
+ 1,
+ 149,
+ 335,
+ 1,
+ 153,
+ 341,
+ 1,
+ 54,
+ 347,
+ 1,
+ 56,
+ 353,
+ 1,
+ 63,
+ 359,
+ 1,
+ 65,
+ 365,
+ 1,
+ 101,
+ 480,
+ 16,
+ 0,
+ 196,
+ 1,
+ 102,
+ 372,
+ 1,
+ 103,
+ 481,
+ 16,
+ 0,
+ 133,
+ 1,
+ 13,
+ 482,
+ 19,
+ 124,
+ 1,
+ 13,
+ 483,
+ 5,
+ 31,
+ 1,
+ 3,
+ 217,
+ 1,
+ 5,
+ 224,
+ 1,
+ 7,
+ 236,
+ 1,
+ 118,
+ 238,
+ 1,
+ 119,
+ 484,
+ 16,
+ 0,
+ 148,
+ 1,
+ 10,
+ 239,
+ 1,
+ 13,
+ 485,
+ 16,
+ 0,
+ 136,
+ 1,
+ 12,
+ 245,
+ 1,
+ 16,
+ 248,
+ 1,
+ 19,
+ (int) byte.MaxValue,
+ 1,
+ 20,
+ 261,
+ 1,
+ 21,
+ 486,
+ 16,
+ 0,
+ 191,
+ 1,
+ 134,
+ 269,
+ 1,
+ 135,
+ 487,
+ 16,
+ 0,
+ 175,
+ 1,
+ 27,
+ 271,
+ 1,
+ 26,
+ 277,
+ 1,
+ 28,
+ 284,
+ 1,
+ 35,
+ 285,
+ 1,
+ 37,
+ 291,
+ 1,
+ 38,
+ 297,
+ 1,
+ 39,
+ 303,
+ 1,
+ 40,
+ 309,
+ 1,
+ 41,
+ 315,
+ 1,
+ 42,
+ 321,
+ 1,
+ 54,
+ 347,
+ 1,
+ 56,
+ 353,
+ 1,
+ 63,
+ 359,
+ 1,
+ 65,
+ 365,
+ 1,
+ 101,
+ 371,
+ 1,
+ 102,
+ 372,
+ 1,
+ 103,
+ 488,
+ 16,
+ 0,
+ 122,
+ 1,
+ 14,
+ 489,
+ 19,
+ 115,
+ 1,
+ 14,
+ 490,
+ 5,
+ 43,
+ 1,
+ 1,
+ 210,
+ 1,
+ 2,
+ 491,
+ 16,
+ 0,
+ 113,
+ 1,
+ 3,
+ 217,
+ 1,
+ 4,
+ 492,
+ 16,
+ 0,
+ 113,
+ 1,
+ 5,
+ 224,
+ 1,
+ 115,
+ 230,
+ 1,
+ 7,
+ 236,
+ 1,
+ 8,
+ 493,
+ 16,
+ 0,
+ 113,
+ 1,
+ 118,
+ 238,
+ 1,
+ 10,
+ 239,
+ 1,
+ 12,
+ 245,
+ 1,
+ 13,
+ 494,
+ 16,
+ 0,
+ 113,
+ 1,
+ 119,
+ 495,
+ 16,
+ 0,
+ 113,
+ 1,
+ 16,
+ 248,
+ 1,
+ 19,
+ (int) byte.MaxValue,
+ 1,
+ 20,
+ 261,
+ 1,
+ 21,
+ 496,
+ 16,
+ 0,
+ 113,
+ 1,
+ 131,
+ 263,
+ 1,
+ 134,
+ 269,
+ 1,
+ 135,
+ 497,
+ 16,
+ 0,
+ 113,
+ 1,
+ 27,
+ 498,
+ 16,
+ 0,
+ 158,
+ 1,
+ 26,
+ 277,
+ 1,
+ 29,
+ 499,
+ 16,
+ 0,
+ 113,
+ 1,
+ 28,
+ 284,
+ 1,
+ 35,
+ 285,
+ 1,
+ 37,
+ 291,
+ 1,
+ 38,
+ 297,
+ 1,
+ 39,
+ 303,
+ 1,
+ 40,
+ 309,
+ 1,
+ 41,
+ 500,
+ 16,
+ 0,
+ 173,
+ 1,
+ 42,
+ 321,
+ 1,
+ 43,
+ 501,
+ 16,
+ 0,
+ 113,
+ 1,
+ 147,
+ 323,
+ 1,
+ 154,
+ 329,
+ 1,
+ 149,
+ 335,
+ 1,
+ 153,
+ 341,
+ 1,
+ 54,
+ 347,
+ 1,
+ 56,
+ 353,
+ 1,
+ 63,
+ 359,
+ 1,
+ 65,
+ 365,
+ 1,
+ 101,
+ 371,
+ 1,
+ 102,
+ 372,
+ 1,
+ 103,
+ 502,
+ 16,
+ 0,
+ 113,
+ 1,
+ 15,
+ 503,
+ 19,
+ 121,
+ 1,
+ 15,
+ 504,
+ 5,
+ 29,
+ 1,
+ 3,
+ 217,
+ 1,
+ 4,
+ 505,
+ 16,
+ 0,
+ 119,
+ 1,
+ 5,
+ 224,
+ 1,
+ 7,
+ 236,
+ 1,
+ 118,
+ 238,
+ 1,
+ 10,
+ 239,
+ 1,
+ 12,
+ 245,
+ 1,
+ 16,
+ 248,
+ 1,
+ 19,
+ (int) byte.MaxValue,
+ 1,
+ 20,
+ 261,
+ 1,
+ 134,
+ 269,
+ 1,
+ 26,
+ 277,
+ 1,
+ 27,
+ 271,
+ 1,
+ 28,
+ 284,
+ 1,
+ 29,
+ 506,
+ 16,
+ 0,
+ 161,
+ 1,
+ 35,
+ 285,
+ 1,
+ 37,
+ 291,
+ 1,
+ 38,
+ 297,
+ 1,
+ 39,
+ 303,
+ 1,
+ 40,
+ 309,
+ 1,
+ 41,
+ 315,
+ 1,
+ 42,
+ 321,
+ 1,
+ 43,
+ 507,
+ 16,
+ 0,
+ 189,
+ 1,
+ 54,
+ 347,
+ 1,
+ 56,
+ 353,
+ 1,
+ 63,
+ 359,
+ 1,
+ 65,
+ 365,
+ 1,
+ 101,
+ 371,
+ 1,
+ 102,
+ 372,
+ 1,
+ 16,
+ 508,
+ 19,
+ 112,
+ 1,
+ 16,
+ 509,
+ 5,
+ 1,
+ 1,
+ 1,
+ 510,
+ 16,
+ 0,
+ 110,
+ 1,
+ 17,
+ 511,
+ 19,
+ 118,
+ 1,
+ 17,
+ 512,
+ 5,
+ 9,
+ 1,
+ 3,
+ 513,
+ 16,
+ 0,
+ 116,
+ 1,
+ 42,
+ 514,
+ 16,
+ 0,
+ 174,
+ 1,
+ 7,
+ 515,
+ 16,
+ 0,
+ 126,
+ 1,
+ 12,
+ 516,
+ 16,
+ 0,
+ 134,
+ 1,
+ 118,
+ 517,
+ 16,
+ 0,
+ 135,
+ 1,
+ 20,
+ 518,
+ 16,
+ 0,
+ 147,
+ 1,
+ 134,
+ 519,
+ 16,
+ 0,
+ 160,
+ 1,
+ 28,
+ 520,
+ 16,
+ 0,
+ 159,
+ 1,
+ 102,
+ 521,
+ 16,
+ 0,
+ 197,
+ 1,
+ 18,
+ 522,
+ 19,
+ 187,
+ 1,
+ 18,
+ 523,
+ 5,
+ 10,
+ 1,
+ 2,
+ 524,
+ 16,
+ 0,
+ 185,
+ 1,
+ 4,
+ 525,
+ 16,
+ 0,
+ 190,
+ 1,
+ 43,
+ 526,
+ 16,
+ 0,
+ 190,
+ 1,
+ 8,
+ 527,
+ 16,
+ 0,
+ 190,
+ 1,
+ 13,
+ 528,
+ 16,
+ 0,
+ 190,
+ 1,
+ 119,
+ 529,
+ 16,
+ 0,
+ 190,
+ 1,
+ 21,
+ 530,
+ 16,
+ 0,
+ 190,
+ 1,
+ 135,
+ 531,
+ 16,
+ 0,
+ 190,
+ 1,
+ 29,
+ 532,
+ 16,
+ 0,
+ 190,
+ 1,
+ 103,
+ 533,
+ 16,
+ 0,
+ 190,
+ 1,
+ 19,
+ 534,
+ 19,
+ 103,
+ 1,
+ 19,
+ 535,
+ 5,
+ 1,
+ 1,
+ 0,
+ 536,
+ 16,
+ 0,
+ 104,
+ 1,
+ 20,
+ 537,
+ 19,
+ 178,
+ 1,
+ 20,
+ 538,
+ 5,
+ 1,
+ 1,
+ 2,
+ 539,
+ 16,
+ 0,
+ 176,
+ 1,
+ 21,
+ 540,
+ 19,
+ 194,
+ 1,
+ 21,
+ 541,
+ 5,
+ 1,
+ 1,
+ 18,
+ 542,
+ 16,
+ 0,
+ 192,
+ 1,
+ 22,
+ 543,
+ 19,
+ 181,
+ 1,
+ 22,
+ 544,
+ 5,
+ 1,
+ 1,
+ 115,
+ 545,
+ 16,
+ 0,
+ 179,
+ 1,
+ 23,
+ 546,
+ 19,
+ 145,
+ 1,
+ 23,
+ 547,
+ 5,
+ 11,
+ 1,
+ 2,
+ 548,
+ 16,
+ 0,
+ 195,
+ 1,
+ 4,
+ 549,
+ 16,
+ 0,
+ 166,
+ 1,
+ 43,
+ 550,
+ 16,
+ 0,
+ 166,
+ 1,
+ 8,
+ 551,
+ 16,
+ 0,
+ 166,
+ 1,
+ 13,
+ 552,
+ 16,
+ 0,
+ 166,
+ 1,
+ 18,
+ 553,
+ 16,
+ 0,
+ 143,
+ 1,
+ 21,
+ 554,
+ 16,
+ 0,
+ 166,
+ 1,
+ 119,
+ 555,
+ 16,
+ 0,
+ 166,
+ 1,
+ 135,
+ 556,
+ 16,
+ 0,
+ 166,
+ 1,
+ 29,
+ 557,
+ 16,
+ 0,
+ 166,
+ 1,
+ 103,
+ 558,
+ 16,
+ 0,
+ 166,
+ 1,
+ 24,
+ 559,
+ 19,
+ 560,
+ 4,
+ 22,
+ 67,
+ 0,
+ 108,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 115,
+ 0,
+ 66,
+ 0,
+ 111,
+ 0,
+ 100,
+ 0,
+ 121,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 24,
+ 535,
+ 1,
+ 25,
+ 561,
+ 19,
+ 562,
+ 4,
+ 22,
+ 67,
+ 0,
+ 108,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 115,
+ 0,
+ 66,
+ 0,
+ 111,
+ 0,
+ 100,
+ 0,
+ 121,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 1,
+ 25,
+ 535,
+ 1,
+ 26,
+ 563,
+ 19,
+ 206,
+ 1,
+ 26,
+ 535,
+ 1,
+ 27,
+ 564,
+ 19,
+ 565,
+ 4,
+ 16,
+ 71,
+ 0,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 27,
+ 509,
+ 1,
+ 28,
+ 566,
+ 19,
+ 567,
+ 4,
+ 16,
+ 71,
+ 0,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 1,
+ 28,
+ 509,
+ 1,
+ 29,
+ 568,
+ 19,
+ 214,
+ 1,
+ 29,
+ 509,
+ 1,
+ 30,
+ 569,
+ 19,
+ 570,
+ 4,
+ 16,
+ 71,
+ 0,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 51,
+ 0,
+ 1,
+ 30,
+ 509,
+ 1,
+ 31,
+ 571,
+ 19,
+ 572,
+ 4,
+ 16,
+ 71,
+ 0,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 52,
+ 0,
+ 1,
+ 31,
+ 509,
+ 1,
+ 32,
+ 573,
+ 19,
+ 333,
+ 1,
+ 32,
+ 509,
+ 1,
+ 33,
+ 574,
+ 19,
+ 575,
+ 4,
+ 16,
+ 71,
+ 0,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 53,
+ 0,
+ 1,
+ 33,
+ 509,
+ 1,
+ 34,
+ 576,
+ 19,
+ 577,
+ 4,
+ 16,
+ 71,
+ 0,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 54,
+ 0,
+ 1,
+ 34,
+ 509,
+ 1,
+ 35,
+ 578,
+ 19,
+ 345,
+ 1,
+ 35,
+ 509,
+ 1,
+ 36,
+ 579,
+ 19,
+ 580,
+ 4,
+ 14,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 36,
+ 512,
+ 1,
+ 37,
+ 581,
+ 19,
+ 582,
+ 4,
+ 14,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 1,
+ 37,
+ 512,
+ 1,
+ 38,
+ 583,
+ 19,
+ 221,
+ 1,
+ 38,
+ 512,
+ 1,
+ 39,
+ 584,
+ 19,
+ 585,
+ 4,
+ 14,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 51,
+ 0,
+ 1,
+ 39,
+ 512,
+ 1,
+ 40,
+ 586,
+ 19,
+ 587,
+ 4,
+ 14,
+ 83,
+ 0,
+ 116,
+ 0,
+ 117,
+ 0,
+ 102,
+ 0,
+ 102,
+ 0,
+ 95,
+ 0,
+ 52,
+ 0,
+ 1,
+ 40,
+ 512,
+ 1,
+ 41,
+ 588,
+ 19,
+ 357,
+ 1,
+ 41,
+ 512,
+ 1,
+ 42,
+ 589,
+ 19,
+ 590,
+ 4,
+ 12,
+ 67,
+ 0,
+ 111,
+ 0,
+ 110,
+ 0,
+ 115,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 42,
+ 538,
+ 1,
+ 43,
+ 591,
+ 19,
+ 592,
+ 4,
+ 12,
+ 67,
+ 0,
+ 111,
+ 0,
+ 110,
+ 0,
+ 115,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 1,
+ 43,
+ 538,
+ 1,
+ 44,
+ 593,
+ 19,
+ 339,
+ 1,
+ 44,
+ 538,
+ 1,
+ 45,
+ 594,
+ 19,
+ 595,
+ 4,
+ 12,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 45,
+ 541,
+ 1,
+ 46,
+ 596,
+ 19,
+ 597,
+ 4,
+ 12,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 1,
+ 46,
+ 541,
+ 1,
+ 47,
+ 598,
+ 19,
+ 363,
+ 1,
+ 47,
+ 541,
+ 1,
+ 48,
+ 599,
+ 19,
+ 600,
+ 4,
+ 20,
+ 66,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 101,
+ 0,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 48,
+ 544,
+ 1,
+ 49,
+ 601,
+ 19,
+ 602,
+ 4,
+ 20,
+ 66,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 101,
+ 0,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 1,
+ 49,
+ 544,
+ 1,
+ 50,
+ 603,
+ 19,
+ 234,
+ 1,
+ 50,
+ 544,
+ 1,
+ 51,
+ 604,
+ 19,
+ 605,
+ 4,
+ 20,
+ 66,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 101,
+ 0,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 95,
+ 0,
+ 51,
+ 0,
+ 1,
+ 51,
+ 544,
+ 1,
+ 52,
+ 606,
+ 19,
+ 607,
+ 4,
+ 20,
+ 66,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 101,
+ 0,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 95,
+ 0,
+ 52,
+ 0,
+ 1,
+ 52,
+ 544,
+ 1,
+ 53,
+ 608,
+ 19,
+ 327,
+ 1,
+ 53,
+ 544,
+ 1,
+ 54,
+ 609,
+ 19,
+ 610,
+ 4,
+ 20,
+ 66,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 101,
+ 0,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 95,
+ 0,
+ 53,
+ 0,
+ 1,
+ 54,
+ 544,
+ 1,
+ 55,
+ 611,
+ 19,
+ 612,
+ 4,
+ 20,
+ 66,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 101,
+ 0,
+ 67,
+ 0,
+ 97,
+ 0,
+ 108,
+ 0,
+ 108,
+ 0,
+ 95,
+ 0,
+ 54,
+ 0,
+ 1,
+ 55,
+ 544,
+ 1,
+ 56,
+ 613,
+ 19,
+ 267,
+ 1,
+ 56,
+ 544,
+ 1,
+ 57,
+ 614,
+ 19,
+ 615,
+ 4,
+ 12,
+ 78,
+ 0,
+ 97,
+ 0,
+ 109,
+ 0,
+ 101,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 57,
+ 547,
+ 1,
+ 58,
+ 616,
+ 19,
+ 617,
+ 4,
+ 12,
+ 78,
+ 0,
+ 97,
+ 0,
+ 109,
+ 0,
+ 101,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 1,
+ 58,
+ 547,
+ 1,
+ 59,
+ 618,
+ 19,
+ 319,
+ 1,
+ 59,
+ 547,
+ 1,
+ 60,
+ 619,
+ 19,
+ 620,
+ 4,
+ 12,
+ 78,
+ 0,
+ 97,
+ 0,
+ 109,
+ 0,
+ 101,
+ 0,
+ 95,
+ 0,
+ 51,
+ 0,
+ 1,
+ 60,
+ 547,
+ 1,
+ 61,
+ 621,
+ 19,
+ 622,
+ 4,
+ 12,
+ 78,
+ 0,
+ 97,
+ 0,
+ 109,
+ 0,
+ 101,
+ 0,
+ 95,
+ 0,
+ 52,
+ 0,
+ 1,
+ 61,
+ 547,
+ 1,
+ 62,
+ 623,
+ 19,
+ 351,
+ 1,
+ 62,
+ 547,
+ 1,
+ 63,
+ 624,
+ 19,
+ 625,
+ 4,
+ 12,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 1,
+ 63,
+ 523,
+ 1,
+ 64,
+ 626,
+ 19,
+ 627,
+ 4,
+ 12,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 1,
+ 64,
+ 523,
+ 1,
+ 65,
+ 628,
+ 19,
+ 313,
+ 1,
+ 65,
+ 523,
+ 1,
+ 66,
+ 629,
+ 19,
+ 630,
+ 4,
+ 12,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 51,
+ 0,
+ 1,
+ 66,
+ 523,
+ 1,
+ 67,
+ 631,
+ 19,
+ 632,
+ 4,
+ 12,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 52,
+ 0,
+ 1,
+ 67,
+ 523,
+ 1,
+ 68,
+ 633,
+ 19,
+ 307,
+ 1,
+ 68,
+ 523,
+ 1,
+ 69,
+ 634,
+ 19,
+ 635,
+ 4,
+ 12,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 53,
+ 0,
+ 1,
+ 69,
+ 523,
+ 1,
+ 70,
+ 636,
+ 19,
+ 637,
+ 4,
+ 12,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 54,
+ 0,
+ 1,
+ 70,
+ 523,
+ 1,
+ 71,
+ 638,
+ 19,
+ 301,
+ 1,
+ 71,
+ 523,
+ 1,
+ 72,
+ 639,
+ 19,
+ 640,
+ 4,
+ 12,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 55,
+ 0,
+ 1,
+ 72,
+ 523,
+ 1,
+ 73,
+ 641,
+ 19,
+ 642,
+ 4,
+ 12,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 56,
+ 0,
+ 1,
+ 73,
+ 523,
+ 1,
+ 74,
+ 643,
+ 19,
+ 295,
+ 1,
+ 74,
+ 523,
+ 1,
+ 75,
+ 644,
+ 19,
+ 645,
+ 4,
+ 12,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 57,
+ 0,
+ 1,
+ 75,
+ 523,
+ 1,
+ 76,
+ 646,
+ 19,
+ 647,
+ 4,
+ 14,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 48,
+ 0,
+ 1,
+ 76,
+ 523,
+ 1,
+ 77,
+ 648,
+ 19,
+ 275,
+ 1,
+ 77,
+ 523,
+ 1,
+ 78,
+ 649,
+ 19,
+ 650,
+ 4,
+ 14,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 49,
+ 0,
+ 1,
+ 78,
+ 523,
+ 1,
+ 79,
+ 651,
+ 19,
+ 652,
+ 4,
+ 14,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 50,
+ 0,
+ 1,
+ 79,
+ 523,
+ 1,
+ 80,
+ 653,
+ 19,
+ 289,
+ 1,
+ 80,
+ 523,
+ 1,
+ 81,
+ 654,
+ 19,
+ 655,
+ 4,
+ 14,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 51,
+ 0,
+ 1,
+ 81,
+ 523,
+ 1,
+ 82,
+ 656,
+ 19,
+ 657,
+ 4,
+ 14,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 52,
+ 0,
+ 1,
+ 82,
+ 523,
+ 1,
+ 83,
+ 658,
+ 19,
+ 281,
+ 1,
+ 83,
+ 523,
+ 1,
+ 84,
+ 659,
+ 19,
+ 660,
+ 4,
+ 14,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 53,
+ 0,
+ 1,
+ 84,
+ 523,
+ 1,
+ 85,
+ 661,
+ 19,
+ 662,
+ 4,
+ 14,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 54,
+ 0,
+ 1,
+ 85,
+ 523,
+ 1,
+ 86,
+ 663,
+ 19,
+ 369,
+ 1,
+ 86,
+ 523,
+ 1,
+ 87,
+ 664,
+ 19,
+ 665,
+ 4,
+ 14,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 55,
+ 0,
+ 1,
+ 87,
+ 523,
+ 1,
+ 88,
+ 666,
+ 19,
+ 667,
+ 4,
+ 14,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 56,
+ 0,
+ 1,
+ 88,
+ 523,
+ 1,
+ 89,
+ 668,
+ 19,
+ 259,
+ 1,
+ 89,
+ 523,
+ 1,
+ 90,
+ 669,
+ 19,
+ 670,
+ 4,
+ 14,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 49,
+ 0,
+ 57,
+ 0,
+ 1,
+ 90,
+ 523,
+ 1,
+ 91,
+ 671,
+ 19,
+ 672,
+ 4,
+ 14,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 48,
+ 0,
+ 1,
+ 91,
+ 523,
+ 1,
+ 92,
+ 673,
+ 19,
+ 252,
+ 1,
+ 92,
+ 523,
+ 1,
+ 93,
+ 674,
+ 19,
+ 675,
+ 4,
+ 14,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 49,
+ 0,
+ 1,
+ 93,
+ 523,
+ 1,
+ 94,
+ 676,
+ 19,
+ 677,
+ 4,
+ 14,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 50,
+ 0,
+ 1,
+ 94,
+ 523,
+ 1,
+ 95,
+ 678,
+ 19,
+ 243,
+ 1,
+ 95,
+ 523,
+ 1,
+ 96,
+ 679,
+ 19,
+ 680,
+ 4,
+ 14,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 51,
+ 0,
+ 1,
+ 96,
+ 523,
+ 1,
+ 97,
+ 681,
+ 19,
+ 682,
+ 4,
+ 14,
+ 73,
+ 0,
+ 116,
+ 0,
+ 101,
+ 0,
+ 109,
+ 0,
+ 95,
+ 0,
+ 50,
+ 0,
+ 52,
+ 0,
+ 1,
+ 97,
+ 523,
+ 1,
+ 98,
+ 683,
+ 19,
+ 228,
+ 1,
+ 98,
+ 523,
+ 2,
+ 1,
+ 0
+ };
+ Sfactory sfactory1 = new Sfactory((YyParser) this, "Name", new SCreator(yycs0syntax.Name_factory));
+ Sfactory sfactory2 = new Sfactory((YyParser) this, "Cons_1", new SCreator(yycs0syntax.Cons_1_factory));
+ Sfactory sfactory3 = new Sfactory((YyParser) this, "Cons_2", new SCreator(yycs0syntax.Cons_2_factory));
+ Sfactory sfactory4 = new Sfactory((YyParser) this, "BaseCall_1", new SCreator(yycs0syntax.BaseCall_1_factory));
+ Sfactory sfactory5 = new Sfactory((YyParser) this, "BaseCall_2", new SCreator(yycs0syntax.BaseCall_2_factory));
+ Sfactory sfactory6 = new Sfactory((YyParser) this, "BaseCall_3", new SCreator(yycs0syntax.BaseCall_3_factory));
+ Sfactory sfactory7 = new Sfactory((YyParser) this, "BaseCall_4", new SCreator(yycs0syntax.BaseCall_4_factory));
+ Sfactory sfactory8 = new Sfactory((YyParser) this, "BaseCall_5", new SCreator(yycs0syntax.BaseCall_5_factory));
+ Sfactory sfactory9 = new Sfactory((YyParser) this, "BaseCall_6", new SCreator(yycs0syntax.BaseCall_6_factory));
+ Sfactory sfactory10 = new Sfactory((YyParser) this, "GStuff", new SCreator(yycs0syntax.GStuff_factory));
+ Sfactory sfactory11 = new Sfactory((YyParser) this, "Item_18_1", new SCreator(yycs0syntax.Item_18_1_factory));
+ Sfactory sfactory12 = new Sfactory((YyParser) this, "ClassBody", new SCreator(yycs0syntax.ClassBody_factory));
+ Sfactory sfactory13 = new Sfactory((YyParser) this, "Item_20_1", new SCreator(yycs0syntax.Item_20_1_factory));
+ Sfactory sfactory14 = new Sfactory((YyParser) this, "Stuff_4_1", new SCreator(yycs0syntax.Stuff_4_1_factory));
+ Sfactory sfactory15 = new Sfactory((YyParser) this, "Item_12_1", new SCreator(yycs0syntax.Item_12_1_factory));
+ Sfactory sfactory16 = new Sfactory((YyParser) this, "Item_2", new SCreator(yycs0syntax.Item_2_factory));
+ Sfactory sfactory17 = new Sfactory((YyParser) this, "Item_3", new SCreator(yycs0syntax.Item_3_factory));
+ Sfactory sfactory18 = new Sfactory((YyParser) this, "Item_4", new SCreator(yycs0syntax.Item_4_factory));
+ Sfactory sfactory19 = new Sfactory((YyParser) this, "Item_5", new SCreator(yycs0syntax.Item_5_factory));
+ Sfactory sfactory20 = new Sfactory((YyParser) this, "Item_6", new SCreator(yycs0syntax.Item_6_factory));
+ Sfactory sfactory21 = new Sfactory((YyParser) this, "Item_7", new SCreator(yycs0syntax.Item_7_factory));
+ Sfactory sfactory22 = new Sfactory((YyParser) this, "Item_8", new SCreator(yycs0syntax.Item_8_factory));
+ Sfactory sfactory23 = new Sfactory((YyParser) this, "Item_9", new SCreator(yycs0syntax.Item_9_factory));
+ Sfactory sfactory24 = new Sfactory((YyParser) this, "BaseCall_6_1", new SCreator(yycs0syntax.BaseCall_6_1_factory));
+ Sfactory sfactory25 = new Sfactory((YyParser) this, "Cons", new SCreator(yycs0syntax.Cons_factory));
+ Sfactory sfactory26 = new Sfactory((YyParser) this, "error", new SCreator(yycs0syntax.error_factory));
+ Sfactory sfactory27 = new Sfactory((YyParser) this, "Item_20", new SCreator(yycs0syntax.Item_20_factory));
+ Sfactory sfactory28 = new Sfactory((YyParser) this, "Item_21", new SCreator(yycs0syntax.Item_21_factory));
+ Sfactory sfactory29 = new Sfactory((YyParser) this, "Item_22", new SCreator(yycs0syntax.Item_22_factory));
+ Sfactory sfactory30 = new Sfactory((YyParser) this, "Item_1", new SCreator(yycs0syntax.Item_1_factory));
+ Sfactory sfactory31 = new Sfactory((YyParser) this, "Item_6_1", new SCreator(yycs0syntax.Item_6_1_factory));
+ Sfactory sfactory32 = new Sfactory((YyParser) this, "Call", new SCreator(yycs0syntax.Call_factory));
+ Sfactory sfactory33 = new Sfactory((YyParser) this, "Stuff", new SCreator(yycs0syntax.Stuff_factory));
+ Sfactory sfactory34 = new Sfactory((YyParser) this, "Item", new SCreator(yycs0syntax.Item_factory));
+ Sfactory sfactory35 = new Sfactory((YyParser) this, "Name_4_1", new SCreator(yycs0syntax.Name_4_1_factory));
+ Sfactory sfactory36 = new Sfactory((YyParser) this, "Item_16_1", new SCreator(yycs0syntax.Item_16_1_factory));
+ Sfactory sfactory37 = new Sfactory((YyParser) this, "Call_2", new SCreator(yycs0syntax.Call_2_factory));
+ Sfactory sfactory38 = new Sfactory((YyParser) this, "Stuff_2_1", new SCreator(yycs0syntax.Stuff_2_1_factory));
+ Sfactory sfactory39 = new Sfactory((YyParser) this, "Item_10_1", new SCreator(yycs0syntax.Item_10_1_factory));
+ Sfactory sfactory40 = new Sfactory((YyParser) this, "Item_24_1", new SCreator(yycs0syntax.Item_24_1_factory));
+ Sfactory sfactory41 = new Sfactory((YyParser) this, "Stuff_1", new SCreator(yycs0syntax.Stuff_1_factory));
+ Sfactory sfactory42 = new Sfactory((YyParser) this, "Stuff_2", new SCreator(yycs0syntax.Stuff_2_factory));
+ Sfactory sfactory43 = new Sfactory((YyParser) this, "Stuff_3", new SCreator(yycs0syntax.Stuff_3_factory));
+ Sfactory sfactory44 = new Sfactory((YyParser) this, "Stuff_4", new SCreator(yycs0syntax.Stuff_4_factory));
+ Sfactory sfactory45 = new Sfactory((YyParser) this, "BaseCall", new SCreator(yycs0syntax.BaseCall_factory));
+ Sfactory sfactory46 = new Sfactory((YyParser) this, "Call_2_1", new SCreator(yycs0syntax.Call_2_1_factory));
+ Sfactory sfactory47 = new Sfactory((YyParser) this, "GStuff_6_1", new SCreator(yycs0syntax.GStuff_6_1_factory));
+ Sfactory sfactory48 = new Sfactory((YyParser) this, "BaseCall_4_1", new SCreator(yycs0syntax.BaseCall_4_1_factory));
+ Sfactory sfactory49 = new Sfactory((YyParser) this, "Item_10", new SCreator(yycs0syntax.Item_10_factory));
+ Sfactory sfactory50 = new Sfactory((YyParser) this, "Item_11", new SCreator(yycs0syntax.Item_11_factory));
+ Sfactory sfactory51 = new Sfactory((YyParser) this, "Item_12", new SCreator(yycs0syntax.Item_12_factory));
+ Sfactory sfactory52 = new Sfactory((YyParser) this, "Item_13", new SCreator(yycs0syntax.Item_13_factory));
+ Sfactory sfactory53 = new Sfactory((YyParser) this, "Item_14", new SCreator(yycs0syntax.Item_14_factory));
+ Sfactory sfactory54 = new Sfactory((YyParser) this, "Item_15", new SCreator(yycs0syntax.Item_15_factory));
+ Sfactory sfactory55 = new Sfactory((YyParser) this, "Item_16", new SCreator(yycs0syntax.Item_16_factory));
+ Sfactory sfactory56 = new Sfactory((YyParser) this, "Item_17", new SCreator(yycs0syntax.Item_17_factory));
+ Sfactory sfactory57 = new Sfactory((YyParser) this, "Item_18", new SCreator(yycs0syntax.Item_18_factory));
+ Sfactory sfactory58 = new Sfactory((YyParser) this, "Item_19", new SCreator(yycs0syntax.Item_19_factory));
+ Sfactory sfactory59 = new Sfactory((YyParser) this, "Name_3", new SCreator(yycs0syntax.Name_3_factory));
+ Sfactory sfactory60 = new Sfactory((YyParser) this, "GStuff_1", new SCreator(yycs0syntax.GStuff_1_factory));
+ Sfactory sfactory61 = new Sfactory((YyParser) this, "GStuff_2", new SCreator(yycs0syntax.GStuff_2_factory));
+ Sfactory sfactory62 = new Sfactory((YyParser) this, "GStuff_3", new SCreator(yycs0syntax.GStuff_3_factory));
+ Sfactory sfactory63 = new Sfactory((YyParser) this, "GStuff_4", new SCreator(yycs0syntax.GStuff_4_factory));
+ Sfactory sfactory64 = new Sfactory((YyParser) this, "GStuff_5", new SCreator(yycs0syntax.GStuff_5_factory));
+ Sfactory sfactory65 = new Sfactory((YyParser) this, "GStuff_6", new SCreator(yycs0syntax.GStuff_6_factory));
+ Sfactory sfactory66 = new Sfactory((YyParser) this, "Item_4_1", new SCreator(yycs0syntax.Item_4_1_factory));
+ Sfactory sfactory67 = new Sfactory((YyParser) this, "Cons_2_1", new SCreator(yycs0syntax.Cons_2_1_factory));
+ Sfactory sfactory68 = new Sfactory((YyParser) this, "Item_23", new SCreator(yycs0syntax.Item_23_factory));
+ Sfactory sfactory69 = new Sfactory((YyParser) this, "Item_24", new SCreator(yycs0syntax.Item_24_factory));
+ Sfactory sfactory70 = new Sfactory((YyParser) this, "Call_1", new SCreator(yycs0syntax.Call_1_factory));
+ Sfactory sfactory71 = new Sfactory((YyParser) this, "ClassBody_2_1", new SCreator(yycs0syntax.ClassBody_2_1_factory));
+ Sfactory sfactory72 = new Sfactory((YyParser) this, "Name_4", new SCreator(yycs0syntax.Name_4_factory));
+ Sfactory sfactory73 = new Sfactory((YyParser) this, "Name_2_1", new SCreator(yycs0syntax.Name_2_1_factory));
+ Sfactory sfactory74 = new Sfactory((YyParser) this, "Item_14_1", new SCreator(yycs0syntax.Item_14_1_factory));
+ Sfactory sfactory75 = new Sfactory((YyParser) this, "ClassBody_1", new SCreator(yycs0syntax.ClassBody_1_factory));
+ Sfactory sfactory76 = new Sfactory((YyParser) this, "ClassBody_2", new SCreator(yycs0syntax.ClassBody_2_factory));
+ Sfactory sfactory77 = new Sfactory((YyParser) this, "Item_22_1", new SCreator(yycs0syntax.Item_22_1_factory));
+ Sfactory sfactory78 = new Sfactory((YyParser) this, "GStuff_4_1", new SCreator(yycs0syntax.GStuff_4_1_factory));
+ Sfactory sfactory79 = new Sfactory((YyParser) this, "Name_1", new SCreator(yycs0syntax.Name_1_factory));
+ Sfactory sfactory80 = new Sfactory((YyParser) this, "Name_2", new SCreator(yycs0syntax.Name_2_factory));
+ Sfactory sfactory81 = new Sfactory((YyParser) this, "BaseCall_2_1", new SCreator(yycs0syntax.BaseCall_2_1_factory));
+ Sfactory sfactory82 = new Sfactory((YyParser) this, "Item_8_1", new SCreator(yycs0syntax.Item_8_1_factory));
+ Sfactory sfactory83 = new Sfactory((YyParser) this, "GStuff_2_1", new SCreator(yycs0syntax.GStuff_2_1_factory));
+ Sfactory sfactory84 = new Sfactory((YyParser) this, "Item_2_1", new SCreator(yycs0syntax.Item_2_1_factory));
+ }
+
+ public override object Action(Parser yyq, SYMBOL yysym, int yyact)
+ {
+ if (yyact == -1)
+#pragma warning disable CS0642 // Possible mistaken empty statement
+ ;
+#pragma warning restore CS0642 // Possible mistaken empty statement
+ return (object) null;
+ }
+
+ public static object Name_factory(Parser yyp)
+ {
+ return (object) new Name(yyp);
+ }
+
+ public static object Cons_1_factory(Parser yyp)
+ {
+ return (object) new Cons_1(yyp);
+ }
+
+ public static object Cons_2_factory(Parser yyp)
+ {
+ return (object) new Cons_2(yyp);
+ }
+
+ public static object BaseCall_1_factory(Parser yyp)
+ {
+ return (object) new BaseCall_1(yyp);
+ }
+
+ public static object BaseCall_2_factory(Parser yyp)
+ {
+ return (object) new BaseCall_2(yyp);
+ }
+
+ public static object BaseCall_3_factory(Parser yyp)
+ {
+ return (object) new BaseCall_3(yyp);
+ }
+
+ public static object BaseCall_4_factory(Parser yyp)
+ {
+ return (object) new BaseCall_4(yyp);
+ }
+
+ public static object BaseCall_5_factory(Parser yyp)
+ {
+ return (object) new BaseCall_5(yyp);
+ }
+
+ public static object BaseCall_6_factory(Parser yyp)
+ {
+ return (object) new BaseCall_6(yyp);
+ }
+
+ public static object GStuff_factory(Parser yyp)
+ {
+ return (object) new GStuff(yyp);
+ }
+
+ public static object Item_18_1_factory(Parser yyp)
+ {
+ return (object) new Item_18_1(yyp);
+ }
+
+ public static object ClassBody_factory(Parser yyp)
+ {
+ return (object) new ClassBody(yyp);
+ }
+
+ public static object Item_20_1_factory(Parser yyp)
+ {
+ return (object) new Item_20_1(yyp);
+ }
+
+ public static object Stuff_4_1_factory(Parser yyp)
+ {
+ return (object) new Stuff_4_1(yyp);
+ }
+
+ public static object Item_12_1_factory(Parser yyp)
+ {
+ return (object) new Item_12_1(yyp);
+ }
+
+ public static object Item_2_factory(Parser yyp)
+ {
+ return (object) new Item_2(yyp);
+ }
+
+ public static object Item_3_factory(Parser yyp)
+ {
+ return (object) new Item_3(yyp);
+ }
+
+ public static object Item_4_factory(Parser yyp)
+ {
+ return (object) new Item_4(yyp);
+ }
+
+ public static object Item_5_factory(Parser yyp)
+ {
+ return (object) new Item_5(yyp);
+ }
+
+ public static object Item_6_factory(Parser yyp)
+ {
+ return (object) new Item_6(yyp);
+ }
+
+ public static object Item_7_factory(Parser yyp)
+ {
+ return (object) new Item_7(yyp);
+ }
+
+ public static object Item_8_factory(Parser yyp)
+ {
+ return (object) new Item_8(yyp);
+ }
+
+ public static object Item_9_factory(Parser yyp)
+ {
+ return (object) new Item_9(yyp);
+ }
+
+ public static object BaseCall_6_1_factory(Parser yyp)
+ {
+ return (object) new BaseCall_6_1(yyp);
+ }
+
+ public static object Cons_factory(Parser yyp)
+ {
+ return (object) new Cons(yyp);
+ }
+
+ public static object error_factory(Parser yyp)
+ {
+ return (object) new error(yyp);
+ }
+
+ public static object Item_20_factory(Parser yyp)
+ {
+ return (object) new Item_20(yyp);
+ }
+
+ public static object Item_21_factory(Parser yyp)
+ {
+ return (object) new Item_21(yyp);
+ }
+
+ public static object Item_22_factory(Parser yyp)
+ {
+ return (object) new Item_22(yyp);
+ }
+
+ public static object Item_1_factory(Parser yyp)
+ {
+ return (object) new Item_1(yyp);
+ }
+
+ public static object Item_6_1_factory(Parser yyp)
+ {
+ return (object) new Item_6_1(yyp);
+ }
+
+ public static object Call_factory(Parser yyp)
+ {
+ return (object) new Call(yyp);
+ }
+
+ public static object Stuff_factory(Parser yyp)
+ {
+ return (object) new Stuff(yyp);
+ }
+
+ public static object Item_factory(Parser yyp)
+ {
+ return (object) new Item(yyp);
+ }
+
+ public static object Name_4_1_factory(Parser yyp)
+ {
+ return (object) new Name_4_1(yyp);
+ }
+
+ public static object Item_16_1_factory(Parser yyp)
+ {
+ return (object) new Item_16_1(yyp);
+ }
+
+ public static object Call_2_factory(Parser yyp)
+ {
+ return (object) new Call_2(yyp);
+ }
+
+ public static object Stuff_2_1_factory(Parser yyp)
+ {
+ return (object) new Stuff_2_1(yyp);
+ }
+
+ public static object Item_10_1_factory(Parser yyp)
+ {
+ return (object) new Item_10_1(yyp);
+ }
+
+ public static object Item_24_1_factory(Parser yyp)
+ {
+ return (object) new Item_24_1(yyp);
+ }
+
+ public static object Stuff_1_factory(Parser yyp)
+ {
+ return (object) new Stuff_1(yyp);
+ }
+
+ public static object Stuff_2_factory(Parser yyp)
+ {
+ return (object) new Stuff_2(yyp);
+ }
+
+ public static object Stuff_3_factory(Parser yyp)
+ {
+ return (object) new Stuff_3(yyp);
+ }
+
+ public static object Stuff_4_factory(Parser yyp)
+ {
+ return (object) new Stuff_4(yyp);
+ }
+
+ public static object BaseCall_factory(Parser yyp)
+ {
+ return (object) new BaseCall(yyp);
+ }
+
+ public static object Call_2_1_factory(Parser yyp)
+ {
+ return (object) new Call_2_1(yyp);
+ }
+
+ public static object GStuff_6_1_factory(Parser yyp)
+ {
+ return (object) new GStuff_6_1(yyp);
+ }
+
+ public static object BaseCall_4_1_factory(Parser yyp)
+ {
+ return (object) new BaseCall_4_1(yyp);
+ }
+
+ public static object Item_10_factory(Parser yyp)
+ {
+ return (object) new Item_10(yyp);
+ }
+
+ public static object Item_11_factory(Parser yyp)
+ {
+ return (object) new Item_11(yyp);
+ }
+
+ public static object Item_12_factory(Parser yyp)
+ {
+ return (object) new Item_12(yyp);
+ }
+
+ public static object Item_13_factory(Parser yyp)
+ {
+ return (object) new Item_13(yyp);
+ }
+
+ public static object Item_14_factory(Parser yyp)
+ {
+ return (object) new Item_14(yyp);
+ }
+
+ public static object Item_15_factory(Parser yyp)
+ {
+ return (object) new Item_15(yyp);
+ }
+
+ public static object Item_16_factory(Parser yyp)
+ {
+ return (object) new Item_16(yyp);
+ }
+
+ public static object Item_17_factory(Parser yyp)
+ {
+ return (object) new Item_17(yyp);
+ }
+
+ public static object Item_18_factory(Parser yyp)
+ {
+ return (object) new Item_18(yyp);
+ }
+
+ public static object Item_19_factory(Parser yyp)
+ {
+ return (object) new Item_19(yyp);
+ }
+
+ public static object Name_3_factory(Parser yyp)
+ {
+ return (object) new Name_3(yyp);
+ }
+
+ public static object GStuff_1_factory(Parser yyp)
+ {
+ return (object) new GStuff_1(yyp);
+ }
+
+ public static object GStuff_2_factory(Parser yyp)
+ {
+ return (object) new GStuff_2(yyp);
+ }
+
+ public static object GStuff_3_factory(Parser yyp)
+ {
+ return (object) new GStuff_3(yyp);
+ }
+
+ public static object GStuff_4_factory(Parser yyp)
+ {
+ return (object) new GStuff_4(yyp);
+ }
+
+ public static object GStuff_5_factory(Parser yyp)
+ {
+ return (object) new GStuff_5(yyp);
+ }
+
+ public static object GStuff_6_factory(Parser yyp)
+ {
+ return (object) new GStuff_6(yyp);
+ }
+
+ public static object Item_4_1_factory(Parser yyp)
+ {
+ return (object) new Item_4_1(yyp);
+ }
+
+ public static object Cons_2_1_factory(Parser yyp)
+ {
+ return (object) new Cons_2_1(yyp);
+ }
+
+ public static object Item_23_factory(Parser yyp)
+ {
+ return (object) new Item_23(yyp);
+ }
+
+ public static object Item_24_factory(Parser yyp)
+ {
+ return (object) new Item_24(yyp);
+ }
+
+ public static object Call_1_factory(Parser yyp)
+ {
+ return (object) new Call_1(yyp);
+ }
+
+ public static object ClassBody_2_1_factory(Parser yyp)
+ {
+ return (object) new ClassBody_2_1(yyp);
+ }
+
+ public static object Name_4_factory(Parser yyp)
+ {
+ return (object) new Name_4(yyp);
+ }
+
+ public static object Name_2_1_factory(Parser yyp)
+ {
+ return (object) new Name_2_1(yyp);
+ }
+
+ public static object Item_14_1_factory(Parser yyp)
+ {
+ return (object) new Item_14_1(yyp);
+ }
+
+ public static object ClassBody_1_factory(Parser yyp)
+ {
+ return (object) new ClassBody_1(yyp);
+ }
+
+ public static object ClassBody_2_factory(Parser yyp)
+ {
+ return (object) new ClassBody_2(yyp);
+ }
+
+ public static object Item_22_1_factory(Parser yyp)
+ {
+ return (object) new Item_22_1(yyp);
+ }
+
+ public static object GStuff_4_1_factory(Parser yyp)
+ {
+ return (object) new GStuff_4_1(yyp);
+ }
+
+ public static object Name_1_factory(Parser yyp)
+ {
+ return (object) new Name_1(yyp);
+ }
+
+ public static object Name_2_factory(Parser yyp)
+ {
+ return (object) new Name_2(yyp);
+ }
+
+ public static object BaseCall_2_1_factory(Parser yyp)
+ {
+ return (object) new BaseCall_2_1(yyp);
+ }
+
+ public static object Item_8_1_factory(Parser yyp)
+ {
+ return (object) new Item_8_1(yyp);
+ }
+
+ public static object GStuff_2_1_factory(Parser yyp)
+ {
+ return (object) new GStuff_2_1(yyp);
+ }
+
+ public static object Item_2_1_factory(Parser yyp)
+ {
+ return (object) new Item_2_1(yyp);
+ }
+ }
+}
diff --git a/LibreMetaverse.LslTools/YYClass/yycs0tokens.cs b/LibreMetaverse.LslTools/YYClass/yycs0tokens.cs
new file mode 100644
index 00000000..dd4323ae
--- /dev/null
+++ b/LibreMetaverse.LslTools/YYClass/yycs0tokens.cs
@@ -0,0 +1,9495 @@
+/*
+ * Copyright (c) 2019-2022, Sjofn LLC
+ * All rights reserved.
+ *
+ * - Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * - Neither the name of the openmetaverse.co nor the names
+ * of its contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using LibreMetaverse.LslTools;
+
+namespace YYClass
+{
+ public class yycs0tokens : YyLexer
+ {
+ public yycs0tokens(ErrorHandler eh)
+ : base(eh)
+ {
+ this.arr = new int[9345]
+ {
+ 101,
+ 4,
+ 6,
+ 52,
+ 0,
+ 46,
+ 0,
+ 53,
+ 0,
+ 6,
+ 102,
+ 4,
+ 16,
+ 117,
+ 0,
+ 115,
+ 0,
+ 45,
+ 0,
+ 97,
+ 0,
+ 115,
+ 0,
+ 99,
+ 0,
+ 105,
+ 0,
+ 105,
+ 0,
+ 2,
+ 0,
+ 103,
+ 5,
+ 27,
+ 7,
+ 0,
+ 104,
+ 9,
+ 1,
+ 0,
+ 3,
+ 192,
+ 0,
+ 105,
+ 5,
+ 27,
+ 3,
+ 65,
+ 0,
+ 2,
+ 1,
+ 3,
+ 66,
+ 0,
+ 2,
+ 1,
+ 3,
+ 67,
+ 0,
+ 2,
+ 1,
+ 3,
+ 68,
+ 0,
+ 2,
+ 1,
+ 3,
+ 69,
+ 0,
+ 2,
+ 1,
+ 3,
+ 70,
+ 0,
+ 2,
+ 1,
+ 3,
+ 71,
+ 0,
+ 2,
+ 1,
+ 3,
+ 72,
+ 0,
+ 2,
+ 1,
+ 3,
+ 73,
+ 0,
+ 2,
+ 1,
+ 3,
+ 74,
+ 0,
+ 2,
+ 1,
+ 3,
+ 75,
+ 0,
+ 2,
+ 1,
+ 3,
+ 76,
+ 0,
+ 2,
+ 1,
+ 3,
+ 77,
+ 0,
+ 2,
+ 1,
+ 3,
+ 78,
+ 0,
+ 2,
+ 1,
+ 3,
+ 79,
+ 0,
+ 2,
+ 1,
+ 3,
+ 80,
+ 0,
+ 2,
+ 1,
+ 3,
+ 81,
+ 0,
+ 2,
+ 1,
+ 3,
+ 82,
+ 0,
+ 2,
+ 1,
+ 3,
+ 83,
+ 0,
+ 2,
+ 1,
+ 3,
+ 84,
+ 0,
+ 2,
+ 1,
+ 3,
+ 85,
+ 0,
+ 2,
+ 1,
+ 3,
+ 86,
+ 0,
+ 2,
+ 1,
+ 3,
+ 87,
+ 0,
+ 2,
+ 1,
+ 3,
+ 88,
+ 0,
+ 2,
+ 1,
+ 3,
+ 89,
+ 0,
+ 2,
+ 1,
+ 3,
+ 90,
+ 0,
+ 2,
+ 1,
+ 3,
+ 192,
+ 0,
+ 2,
+ 1,
+ 7,
+ 1,
+ 106,
+ 9,
+ 1,
+ 1,
+ 3,
+ 170,
+ 0,
+ 107,
+ 5,
+ 27,
+ 3,
+ 109,
+ 0,
+ 2,
+ 1,
+ 3,
+ 110,
+ 0,
+ 2,
+ 1,
+ 3,
+ 111,
+ 0,
+ 2,
+ 1,
+ 3,
+ 112,
+ 0,
+ 2,
+ 1,
+ 3,
+ 113,
+ 0,
+ 2,
+ 1,
+ 3,
+ 114,
+ 0,
+ 2,
+ 1,
+ 3,
+ 115,
+ 0,
+ 2,
+ 1,
+ 3,
+ 116,
+ 0,
+ 2,
+ 1,
+ 3,
+ 117,
+ 0,
+ 2,
+ 1,
+ 3,
+ 118,
+ 0,
+ 2,
+ 1,
+ 3,
+ 119,
+ 0,
+ 2,
+ 1,
+ 3,
+ 120,
+ 0,
+ 2,
+ 1,
+ 3,
+ 121,
+ 0,
+ 2,
+ 1,
+ 3,
+ 122,
+ 0,
+ 2,
+ 1,
+ 3,
+ 170,
+ 0,
+ 2,
+ 1,
+ 3,
+ 97,
+ 0,
+ 2,
+ 1,
+ 3,
+ 98,
+ 0,
+ 2,
+ 1,
+ 3,
+ 99,
+ 0,
+ 2,
+ 1,
+ 3,
+ 100,
+ 0,
+ 2,
+ 1,
+ 3,
+ 101,
+ 0,
+ 2,
+ 1,
+ 3,
+ 102,
+ 0,
+ 2,
+ 1,
+ 3,
+ 103,
+ 0,
+ 2,
+ 1,
+ 3,
+ 104,
+ 0,
+ 2,
+ 1,
+ 3,
+ 105,
+ 0,
+ 2,
+ 1,
+ 3,
+ 106,
+ 0,
+ 2,
+ 1,
+ 3,
+ 107,
+ 0,
+ 2,
+ 1,
+ 3,
+ 108,
+ 0,
+ 2,
+ 1,
+ 7,
+ 2,
+ 108,
+ 9,
+ 1,
+ 2,
+ 3,
+ 197,
+ 1,
+ 109,
+ 5,
+ 1,
+ 3,
+ 197,
+ 1,
+ 2,
+ 1,
+ 7,
+ 3,
+ 110,
+ 9,
+ 1,
+ 3,
+ 3,
+ 176,
+ 2,
+ 111,
+ 5,
+ 1,
+ 3,
+ 176,
+ 2,
+ 2,
+ 1,
+ 7,
+ 4,
+ 112,
+ 9,
+ 1,
+ 4,
+ 3,
+ 187,
+ 1,
+ 113,
+ 5,
+ 1,
+ 3,
+ 187,
+ 1,
+ 2,
+ 1,
+ 7,
+ 5,
+ 114,
+ 9,
+ 1,
+ 5,
+ 3,
+ 0,
+ 3,
+ 115,
+ 5,
+ 1,
+ 3,
+ 0,
+ 3,
+ 2,
+ 1,
+ 7,
+ 6,
+ 116,
+ 9,
+ 1,
+ 6,
+ 3,
+ 3,
+ 9,
+ 117,
+ 5,
+ 1,
+ 3,
+ 3,
+ 9,
+ 2,
+ 1,
+ 7,
+ 7,
+ 118,
+ 9,
+ 1,
+ 7,
+ 3,
+ 136,
+ 4,
+ 119,
+ 5,
+ 1,
+ 3,
+ 136,
+ 4,
+ 2,
+ 1,
+ 7,
+ 8,
+ 120,
+ 9,
+ 1,
+ 8,
+ 3,
+ 96,
+ 6,
+ 121,
+ 5,
+ 11,
+ 3,
+ 96,
+ 6,
+ 2,
+ 1,
+ 3,
+ 48,
+ 0,
+ 2,
+ 1,
+ 3,
+ 49,
+ 0,
+ 2,
+ 1,
+ 3,
+ 50,
+ 0,
+ 2,
+ 1,
+ 3,
+ 51,
+ 0,
+ 2,
+ 1,
+ 3,
+ 52,
+ 0,
+ 2,
+ 1,
+ 3,
+ 53,
+ 0,
+ 2,
+ 1,
+ 3,
+ 54,
+ 0,
+ 2,
+ 1,
+ 3,
+ 55,
+ 0,
+ 2,
+ 1,
+ 3,
+ 56,
+ 0,
+ 2,
+ 1,
+ 3,
+ 57,
+ 0,
+ 2,
+ 1,
+ 7,
+ 9,
+ 122,
+ 9,
+ 1,
+ 9,
+ 3,
+ 96,
+ 33,
+ 123,
+ 5,
+ 1,
+ 3,
+ 96,
+ 33,
+ 2,
+ 1,
+ 7,
+ 10,
+ 124,
+ 9,
+ 1,
+ 10,
+ 3,
+ 178,
+ 0,
+ 125,
+ 5,
+ 1,
+ 3,
+ 178,
+ 0,
+ 2,
+ 1,
+ 7,
+ 11,
+ 126,
+ 9,
+ 1,
+ 11,
+ 3,
+ 160,
+ 0,
+ (int) sbyte.MaxValue,
+ 5,
+ 2,
+ 3,
+ 160,
+ 0,
+ 2,
+ 1,
+ 3,
+ 32,
+ 0,
+ 2,
+ 1,
+ 7,
+ 12,
+ 128,
+ 9,
+ 1,
+ 12,
+ 3,
+ 40,
+ 32,
+ 129,
+ 5,
+ 1,
+ 3,
+ 40,
+ 32,
+ 2,
+ 1,
+ 7,
+ 13,
+ 130,
+ 9,
+ 1,
+ 13,
+ 3,
+ 41,
+ 32,
+ 131,
+ 5,
+ 1,
+ 3,
+ 41,
+ 32,
+ 2,
+ 1,
+ 7,
+ 14,
+ 132,
+ 9,
+ 1,
+ 14,
+ 3,
+ 1,
+ 0,
+ 133,
+ 5,
+ 5,
+ 3,
+ 0,
+ 0,
+ 2,
+ 1,
+ 3,
+ 1,
+ 0,
+ 2,
+ 1,
+ 3,
+ 13,
+ 0,
+ 2,
+ 1,
+ 3,
+ 9,
+ 0,
+ 2,
+ 1,
+ 3,
+ 10,
+ 0,
+ 2,
+ 1,
+ 7,
+ 15,
+ 134,
+ 9,
+ 1,
+ 15,
+ 3,
+ 15,
+ 7,
+ 135,
+ 5,
+ 1,
+ 3,
+ 15,
+ 7,
+ 2,
+ 1,
+ 7,
+ 17,
+ 136,
+ 9,
+ 1,
+ 17,
+ 3,
+ 0,
+ 224,
+ 137,
+ 5,
+ 1,
+ 3,
+ 0,
+ 224,
+ 2,
+ 1,
+ 7,
+ 18,
+ 138,
+ 9,
+ 1,
+ 18,
+ 3,
+ 63,
+ 32,
+ 139,
+ 5,
+ 2,
+ 3,
+ 63,
+ 32,
+ 2,
+ 1,
+ 3,
+ 95,
+ 0,
+ 2,
+ 1,
+ 7,
+ 19,
+ 140,
+ 9,
+ 1,
+ 19,
+ 3,
+ 45,
+ 0,
+ 141,
+ 5,
+ 1,
+ 3,
+ 45,
+ 0,
+ 2,
+ 1,
+ 7,
+ 20,
+ 142,
+ 9,
+ 1,
+ 20,
+ 3,
+ 58,
+ 15,
+ 143,
+ 5,
+ 4,
+ 3,
+ 123,
+ 0,
+ 2,
+ 1,
+ 3,
+ 91,
+ 0,
+ 2,
+ 1,
+ 3,
+ 58,
+ 15,
+ 2,
+ 1,
+ 3,
+ 40,
+ 0,
+ 2,
+ 1,
+ 7,
+ 21,
+ 144,
+ 9,
+ 1,
+ 21,
+ 3,
+ 59,
+ 15,
+ 145,
+ 5,
+ 4,
+ 3,
+ 59,
+ 15,
+ 2,
+ 1,
+ 3,
+ 125,
+ 0,
+ 2,
+ 1,
+ 3,
+ 93,
+ 0,
+ 2,
+ 1,
+ 3,
+ 41,
+ 0,
+ 2,
+ 1,
+ 7,
+ 22,
+ 146,
+ 9,
+ 1,
+ 22,
+ 3,
+ 171,
+ 0,
+ 147,
+ 5,
+ 1,
+ 3,
+ 171,
+ 0,
+ 2,
+ 1,
+ 7,
+ 23,
+ 148,
+ 9,
+ 1,
+ 23,
+ 3,
+ 187,
+ 0,
+ 149,
+ 5,
+ 1,
+ 3,
+ 187,
+ 0,
+ 2,
+ 1,
+ 7,
+ 24,
+ 150,
+ 9,
+ 1,
+ 24,
+ 3,
+ 33,
+ 0,
+ 151,
+ 5,
+ 5,
+ 3,
+ 33,
+ 0,
+ 2,
+ 1,
+ 3,
+ 34,
+ 0,
+ 2,
+ 1,
+ 3,
+ 58,
+ 0,
+ 2,
+ 1,
+ 3,
+ 59,
+ 0,
+ 2,
+ 1,
+ 3,
+ 39,
+ 0,
+ 2,
+ 1,
+ 7,
+ 25,
+ 152,
+ 9,
+ 1,
+ 25,
+ 3,
+ 43,
+ 0,
+ 153,
+ 5,
+ 1,
+ 3,
+ 43,
+ 0,
+ 2,
+ 1,
+ 7,
+ 26,
+ 154,
+ 9,
+ 1,
+ 26,
+ 3,
+ 36,
+ 0,
+ 155,
+ 5,
+ 1,
+ 3,
+ 36,
+ 0,
+ 2,
+ 1,
+ 7,
+ 27,
+ 156,
+ 9,
+ 1,
+ 27,
+ 3,
+ 94,
+ 0,
+ 157,
+ 5,
+ 1,
+ 3,
+ 94,
+ 0,
+ 2,
+ 1,
+ 7,
+ 27,
+ 2,
+ 0,
+ 158,
+ 5,
+ 1,
+ 159,
+ 4,
+ 18,
+ 89,
+ 0,
+ 89,
+ 0,
+ 73,
+ 0,
+ 78,
+ 0,
+ 73,
+ 0,
+ 84,
+ 0,
+ 73,
+ 0,
+ 65,
+ 0,
+ 76,
+ 0,
+ 160,
+ 12,
+ 1,
+ 259,
+ 161,
+ 5,
+ 104,
+ 3,
+ 1,
+ 0,
+ 162,
+ 12,
+ 1,
+ 496,
+ 163,
+ 5,
+ 0,
+ 164,
+ 11,
+ 1,
+ 256,
+ 0,
+ 165,
+ 4,
+ 6,
+ 65,
+ 0,
+ 78,
+ 0,
+ 89,
+ 0,
+ 1,
+ -1,
+ 3,
+ 9,
+ 0,
+ 166,
+ 12,
+ 1,
+ 2749,
+ 167,
+ 5,
+ 0,
+ 168,
+ 11,
+ 1,
+ 2,
+ 169,
+ 11,
+ 1,
+ 256,
+ 0,
+ 165,
+ 1,
+ -1,
+ 3,
+ 10,
+ 0,
+ 170,
+ 12,
+ 1,
+ 2861,
+ 171,
+ 5,
+ 0,
+ 172,
+ 11,
+ 1,
+ 2,
+ 0,
+ 173,
+ 4,
+ 0,
+ 1,
+ -1,
+ 3,
+ 13,
+ 0,
+ 166,
+ 3,
+ 0,
+ 3,
+ 162,
+ 3,
+ 96,
+ 33,
+ 162,
+ 3,
+ 32,
+ 0,
+ 166,
+ 3,
+ 33,
+ 0,
+ 162,
+ 3,
+ 34,
+ 0,
+ 174,
+ 12,
+ 1,
+ 3613,
+ 175,
+ 5,
+ 104,
+ 3,
+ 1,
+ 0,
+ 176,
+ 12,
+ 1,
+ 3614,
+ 177,
+ 5,
+ 104,
+ 3,
+ 1,
+ 0,
+ 176,
+ 3,
+ 9,
+ 0,
+ 176,
+ 3,
+ 10,
+ 0,
+ 176,
+ 3,
+ 13,
+ 0,
+ 176,
+ 3,
+ 0,
+ 3,
+ 176,
+ 3,
+ 96,
+ 33,
+ 176,
+ 3,
+ 32,
+ 0,
+ 176,
+ 3,
+ 33,
+ 0,
+ 176,
+ 3,
+ 34,
+ 0,
+ 178,
+ 12,
+ 1,
+ 3713,
+ 179,
+ 5,
+ 0,
+ 180,
+ 11,
+ 1,
+ 196,
+ 0,
+ 165,
+ 1,
+ -1,
+ 3,
+ 36,
+ 0,
+ 176,
+ 3,
+ 39,
+ 0,
+ 176,
+ 3,
+ 40,
+ 0,
+ 176,
+ 3,
+ 41,
+ 0,
+ 176,
+ 3,
+ 43,
+ 0,
+ 176,
+ 3,
+ 45,
+ 0,
+ 176,
+ 3,
+ 3,
+ 9,
+ 176,
+ 3,
+ 49,
+ 0,
+ 176,
+ 3,
+ 50,
+ 0,
+ 176,
+ 3,
+ 48,
+ 0,
+ 176,
+ 3,
+ 52,
+ 0,
+ 176,
+ 3,
+ 53,
+ 0,
+ 176,
+ 3,
+ 51,
+ 0,
+ 176,
+ 3,
+ 55,
+ 0,
+ 176,
+ 3,
+ 56,
+ 0,
+ 176,
+ 3,
+ 54,
+ 0,
+ 176,
+ 3,
+ 58,
+ 0,
+ 176,
+ 3,
+ 59,
+ 0,
+ 176,
+ 3,
+ 57,
+ 0,
+ 176,
+ 3,
+ 65,
+ 0,
+ 176,
+ 3,
+ 66,
+ 0,
+ 176,
+ 3,
+ 67,
+ 0,
+ 176,
+ 3,
+ 68,
+ 0,
+ 176,
+ 3,
+ 69,
+ 0,
+ 176,
+ 3,
+ 70,
+ 0,
+ 176,
+ 3,
+ 71,
+ 0,
+ 176,
+ 3,
+ 72,
+ 0,
+ 176,
+ 3,
+ 73,
+ 0,
+ 176,
+ 3,
+ 74,
+ 0,
+ 176,
+ 3,
+ 75,
+ 0,
+ 176,
+ 3,
+ 76,
+ 0,
+ 176,
+ 3,
+ 77,
+ 0,
+ 176,
+ 3,
+ 78,
+ 0,
+ 176,
+ 3,
+ 79,
+ 0,
+ 176,
+ 3,
+ 80,
+ 0,
+ 176,
+ 3,
+ 81,
+ 0,
+ 176,
+ 3,
+ 82,
+ 0,
+ 176,
+ 3,
+ 83,
+ 0,
+ 176,
+ 3,
+ 84,
+ 0,
+ 176,
+ 3,
+ 85,
+ 0,
+ 176,
+ 3,
+ 86,
+ 0,
+ 176,
+ 3,
+ 87,
+ 0,
+ 176,
+ 3,
+ 88,
+ 0,
+ 176,
+ 3,
+ 89,
+ 0,
+ 176,
+ 3,
+ 90,
+ 0,
+ 176,
+ 3,
+ 91,
+ 0,
+ 176,
+ 3,
+ 93,
+ 0,
+ 176,
+ 3,
+ 94,
+ 0,
+ 176,
+ 3,
+ 95,
+ 0,
+ 176,
+ 3,
+ 97,
+ 0,
+ 176,
+ 3,
+ 98,
+ 0,
+ 176,
+ 3,
+ 99,
+ 0,
+ 176,
+ 3,
+ 100,
+ 0,
+ 176,
+ 3,
+ 101,
+ 0,
+ 176,
+ 3,
+ 102,
+ 0,
+ 176,
+ 3,
+ 103,
+ 0,
+ 176,
+ 3,
+ 104,
+ 0,
+ 176,
+ 3,
+ 105,
+ 0,
+ 176,
+ 3,
+ 106,
+ 0,
+ 176,
+ 3,
+ 107,
+ 0,
+ 176,
+ 3,
+ 108,
+ 0,
+ 176,
+ 3,
+ 109,
+ 0,
+ 176,
+ 3,
+ 110,
+ 0,
+ 176,
+ 3,
+ 111,
+ 0,
+ 176,
+ 3,
+ 112,
+ 0,
+ 176,
+ 3,
+ 113,
+ 0,
+ 176,
+ 3,
+ 114,
+ 0,
+ 176,
+ 3,
+ 115,
+ 0,
+ 176,
+ 3,
+ 116,
+ 0,
+ 176,
+ 3,
+ 117,
+ 0,
+ 176,
+ 3,
+ 118,
+ 0,
+ 176,
+ 3,
+ 119,
+ 0,
+ 176,
+ 3,
+ 120,
+ 0,
+ 176,
+ 3,
+ 121,
+ 0,
+ 176,
+ 3,
+ 122,
+ 0,
+ 176,
+ 3,
+ 123,
+ 0,
+ 176,
+ 3,
+ 125,
+ 0,
+ 176,
+ 3,
+ 96,
+ 6,
+ 176,
+ 3,
+ 58,
+ 15,
+ 176,
+ 3,
+ 59,
+ 15,
+ 176,
+ 3,
+ 136,
+ 4,
+ 176,
+ 3,
+ 160,
+ 0,
+ 176,
+ 3,
+ 15,
+ 7,
+ 176,
+ 3,
+ 170,
+ 0,
+ 176,
+ 3,
+ 171,
+ 0,
+ 176,
+ 3,
+ 178,
+ 0,
+ 176,
+ 3,
+ 176,
+ 2,
+ 176,
+ 3,
+ 187,
+ 0,
+ 176,
+ 3,
+ 187,
+ 1,
+ 176,
+ 3,
+ 192,
+ 0,
+ 176,
+ 3,
+ 41,
+ 32,
+ 176,
+ 3,
+ 197,
+ 1,
+ 176,
+ 3,
+ 0,
+ 224,
+ 176,
+ 3,
+ 40,
+ 32,
+ 176,
+ 3,
+ 63,
+ 32,
+ 176,
+ 0,
+ 173,
+ 1,
+ -1,
+ 3,
+ 9,
+ 0,
+ 176,
+ 3,
+ 10,
+ 0,
+ 176,
+ 3,
+ 13,
+ 0,
+ 176,
+ 3,
+ 0,
+ 3,
+ 176,
+ 3,
+ 96,
+ 33,
+ 176,
+ 3,
+ 32,
+ 0,
+ 176,
+ 3,
+ 33,
+ 0,
+ 176,
+ 3,
+ 34,
+ 0,
+ 178,
+ 3,
+ 36,
+ 0,
+ 176,
+ 3,
+ 39,
+ 0,
+ 176,
+ 3,
+ 40,
+ 0,
+ 176,
+ 3,
+ 41,
+ 0,
+ 176,
+ 3,
+ 43,
+ 0,
+ 176,
+ 3,
+ 45,
+ 0,
+ 176,
+ 3,
+ 3,
+ 9,
+ 176,
+ 3,
+ 49,
+ 0,
+ 176,
+ 3,
+ 50,
+ 0,
+ 176,
+ 3,
+ 48,
+ 0,
+ 176,
+ 3,
+ 52,
+ 0,
+ 176,
+ 3,
+ 53,
+ 0,
+ 176,
+ 3,
+ 51,
+ 0,
+ 176,
+ 3,
+ 55,
+ 0,
+ 176,
+ 3,
+ 56,
+ 0,
+ 176,
+ 3,
+ 54,
+ 0,
+ 176,
+ 3,
+ 58,
+ 0,
+ 176,
+ 3,
+ 59,
+ 0,
+ 176,
+ 3,
+ 57,
+ 0,
+ 176,
+ 3,
+ 65,
+ 0,
+ 176,
+ 3,
+ 66,
+ 0,
+ 176,
+ 3,
+ 67,
+ 0,
+ 176,
+ 3,
+ 68,
+ 0,
+ 176,
+ 3,
+ 69,
+ 0,
+ 176,
+ 3,
+ 70,
+ 0,
+ 176,
+ 3,
+ 71,
+ 0,
+ 176,
+ 3,
+ 72,
+ 0,
+ 176,
+ 3,
+ 73,
+ 0,
+ 176,
+ 3,
+ 74,
+ 0,
+ 176,
+ 3,
+ 75,
+ 0,
+ 176,
+ 3,
+ 76,
+ 0,
+ 176,
+ 3,
+ 77,
+ 0,
+ 176,
+ 3,
+ 78,
+ 0,
+ 176,
+ 3,
+ 79,
+ 0,
+ 176,
+ 3,
+ 80,
+ 0,
+ 176,
+ 3,
+ 81,
+ 0,
+ 176,
+ 3,
+ 82,
+ 0,
+ 176,
+ 3,
+ 83,
+ 0,
+ 176,
+ 3,
+ 84,
+ 0,
+ 176,
+ 3,
+ 85,
+ 0,
+ 176,
+ 3,
+ 86,
+ 0,
+ 176,
+ 3,
+ 87,
+ 0,
+ 176,
+ 3,
+ 88,
+ 0,
+ 176,
+ 3,
+ 89,
+ 0,
+ 176,
+ 3,
+ 90,
+ 0,
+ 176,
+ 3,
+ 91,
+ 0,
+ 176,
+ 3,
+ 93,
+ 0,
+ 176,
+ 3,
+ 94,
+ 0,
+ 176,
+ 3,
+ 95,
+ 0,
+ 176,
+ 3,
+ 97,
+ 0,
+ 176,
+ 3,
+ 98,
+ 0,
+ 176,
+ 3,
+ 99,
+ 0,
+ 176,
+ 3,
+ 100,
+ 0,
+ 176,
+ 3,
+ 101,
+ 0,
+ 176,
+ 3,
+ 102,
+ 0,
+ 176,
+ 3,
+ 103,
+ 0,
+ 176,
+ 3,
+ 104,
+ 0,
+ 176,
+ 3,
+ 105,
+ 0,
+ 176,
+ 3,
+ 106,
+ 0,
+ 176,
+ 3,
+ 107,
+ 0,
+ 176,
+ 3,
+ 108,
+ 0,
+ 176,
+ 3,
+ 109,
+ 0,
+ 176,
+ 3,
+ 110,
+ 0,
+ 176,
+ 3,
+ 111,
+ 0,
+ 176,
+ 3,
+ 112,
+ 0,
+ 176,
+ 3,
+ 113,
+ 0,
+ 176,
+ 3,
+ 114,
+ 0,
+ 176,
+ 3,
+ 115,
+ 0,
+ 176,
+ 3,
+ 116,
+ 0,
+ 176,
+ 3,
+ 117,
+ 0,
+ 176,
+ 3,
+ 118,
+ 0,
+ 176,
+ 3,
+ 119,
+ 0,
+ 176,
+ 3,
+ 120,
+ 0,
+ 176,
+ 3,
+ 121,
+ 0,
+ 176,
+ 3,
+ 122,
+ 0,
+ 176,
+ 3,
+ 123,
+ 0,
+ 176,
+ 3,
+ 125,
+ 0,
+ 176,
+ 3,
+ 96,
+ 6,
+ 176,
+ 3,
+ 58,
+ 15,
+ 176,
+ 3,
+ 59,
+ 15,
+ 176,
+ 3,
+ 136,
+ 4,
+ 176,
+ 3,
+ 160,
+ 0,
+ 176,
+ 3,
+ 15,
+ 7,
+ 176,
+ 3,
+ 170,
+ 0,
+ 176,
+ 3,
+ 171,
+ 0,
+ 176,
+ 3,
+ 178,
+ 0,
+ 176,
+ 3,
+ 176,
+ 2,
+ 176,
+ 3,
+ 187,
+ 0,
+ 176,
+ 3,
+ 187,
+ 1,
+ 176,
+ 3,
+ 192,
+ 0,
+ 176,
+ 3,
+ 41,
+ 32,
+ 176,
+ 3,
+ 197,
+ 1,
+ 176,
+ 3,
+ 0,
+ 224,
+ 176,
+ 3,
+ 40,
+ 32,
+ 176,
+ 3,
+ 63,
+ 32,
+ 176,
+ 181,
+ 11,
+ 1,
+ 256,
+ 0,
+ 165,
+ 1,
+ -1,
+ 3,
+ 36,
+ 0,
+ 162,
+ 3,
+ 39,
+ 0,
+ 182,
+ 12,
+ 1,
+ 4141,
+ 183,
+ 5,
+ 104,
+ 3,
+ 1,
+ 0,
+ 184,
+ 12,
+ 1,
+ 4142,
+ 185,
+ 5,
+ 104,
+ 3,
+ 1,
+ 0,
+ 184,
+ 3,
+ 9,
+ 0,
+ 184,
+ 3,
+ 10,
+ 0,
+ 184,
+ 3,
+ 13,
+ 0,
+ 184,
+ 3,
+ 0,
+ 3,
+ 184,
+ 3,
+ 96,
+ 33,
+ 184,
+ 3,
+ 32,
+ 0,
+ 184,
+ 3,
+ 33,
+ 0,
+ 184,
+ 3,
+ 34,
+ 0,
+ 184,
+ 3,
+ 36,
+ 0,
+ 184,
+ 3,
+ 39,
+ 0,
+ 186,
+ 12,
+ 1,
+ 4244,
+ 187,
+ 5,
+ 0,
+ 188,
+ 11,
+ 1,
+ 176,
+ 0,
+ 165,
+ 1,
+ -1,
+ 3,
+ 40,
+ 0,
+ 184,
+ 3,
+ 41,
+ 0,
+ 184,
+ 3,
+ 43,
+ 0,
+ 184,
+ 3,
+ 45,
+ 0,
+ 184,
+ 3,
+ 3,
+ 9,
+ 184,
+ 3,
+ 49,
+ 0,
+ 184,
+ 3,
+ 50,
+ 0,
+ 184,
+ 3,
+ 48,
+ 0,
+ 184,
+ 3,
+ 52,
+ 0,
+ 184,
+ 3,
+ 53,
+ 0,
+ 184,
+ 3,
+ 51,
+ 0,
+ 184,
+ 3,
+ 55,
+ 0,
+ 184,
+ 3,
+ 56,
+ 0,
+ 184,
+ 3,
+ 54,
+ 0,
+ 184,
+ 3,
+ 58,
+ 0,
+ 184,
+ 3,
+ 59,
+ 0,
+ 184,
+ 3,
+ 57,
+ 0,
+ 184,
+ 3,
+ 65,
+ 0,
+ 184,
+ 3,
+ 66,
+ 0,
+ 184,
+ 3,
+ 67,
+ 0,
+ 184,
+ 3,
+ 68,
+ 0,
+ 184,
+ 3,
+ 69,
+ 0,
+ 184,
+ 3,
+ 70,
+ 0,
+ 184,
+ 3,
+ 71,
+ 0,
+ 184,
+ 3,
+ 72,
+ 0,
+ 184,
+ 3,
+ 73,
+ 0,
+ 184,
+ 3,
+ 74,
+ 0,
+ 184,
+ 3,
+ 75,
+ 0,
+ 184,
+ 3,
+ 76,
+ 0,
+ 184,
+ 3,
+ 77,
+ 0,
+ 184,
+ 3,
+ 78,
+ 0,
+ 184,
+ 3,
+ 79,
+ 0,
+ 184,
+ 3,
+ 80,
+ 0,
+ 184,
+ 3,
+ 81,
+ 0,
+ 184,
+ 3,
+ 82,
+ 0,
+ 184,
+ 3,
+ 83,
+ 0,
+ 184,
+ 3,
+ 84,
+ 0,
+ 184,
+ 3,
+ 85,
+ 0,
+ 184,
+ 3,
+ 86,
+ 0,
+ 184,
+ 3,
+ 87,
+ 0,
+ 184,
+ 3,
+ 88,
+ 0,
+ 184,
+ 3,
+ 89,
+ 0,
+ 184,
+ 3,
+ 90,
+ 0,
+ 184,
+ 3,
+ 91,
+ 0,
+ 184,
+ 3,
+ 93,
+ 0,
+ 184,
+ 3,
+ 94,
+ 0,
+ 184,
+ 3,
+ 95,
+ 0,
+ 184,
+ 3,
+ 97,
+ 0,
+ 184,
+ 3,
+ 98,
+ 0,
+ 184,
+ 3,
+ 99,
+ 0,
+ 184,
+ 3,
+ 100,
+ 0,
+ 184,
+ 3,
+ 101,
+ 0,
+ 184,
+ 3,
+ 102,
+ 0,
+ 184,
+ 3,
+ 103,
+ 0,
+ 184,
+ 3,
+ 104,
+ 0,
+ 184,
+ 3,
+ 105,
+ 0,
+ 184,
+ 3,
+ 106,
+ 0,
+ 184,
+ 3,
+ 107,
+ 0,
+ 184,
+ 3,
+ 108,
+ 0,
+ 184,
+ 3,
+ 109,
+ 0,
+ 184,
+ 3,
+ 110,
+ 0,
+ 184,
+ 3,
+ 111,
+ 0,
+ 184,
+ 3,
+ 112,
+ 0,
+ 184,
+ 3,
+ 113,
+ 0,
+ 184,
+ 3,
+ 114,
+ 0,
+ 184,
+ 3,
+ 115,
+ 0,
+ 184,
+ 3,
+ 116,
+ 0,
+ 184,
+ 3,
+ 117,
+ 0,
+ 184,
+ 3,
+ 118,
+ 0,
+ 184,
+ 3,
+ 119,
+ 0,
+ 184,
+ 3,
+ 120,
+ 0,
+ 184,
+ 3,
+ 121,
+ 0,
+ 184,
+ 3,
+ 122,
+ 0,
+ 184,
+ 3,
+ 123,
+ 0,
+ 184,
+ 3,
+ 125,
+ 0,
+ 184,
+ 3,
+ 96,
+ 6,
+ 184,
+ 3,
+ 58,
+ 15,
+ 184,
+ 3,
+ 59,
+ 15,
+ 184,
+ 3,
+ 136,
+ 4,
+ 184,
+ 3,
+ 160,
+ 0,
+ 184,
+ 3,
+ 15,
+ 7,
+ 184,
+ 3,
+ 170,
+ 0,
+ 184,
+ 3,
+ 171,
+ 0,
+ 184,
+ 3,
+ 178,
+ 0,
+ 184,
+ 3,
+ 176,
+ 2,
+ 184,
+ 3,
+ 187,
+ 0,
+ 184,
+ 3,
+ 187,
+ 1,
+ 184,
+ 3,
+ 192,
+ 0,
+ 184,
+ 3,
+ 41,
+ 32,
+ 184,
+ 3,
+ 197,
+ 1,
+ 184,
+ 3,
+ 0,
+ 224,
+ 184,
+ 3,
+ 40,
+ 32,
+ 184,
+ 3,
+ 63,
+ 32,
+ 184,
+ 0,
+ 173,
+ 1,
+ -1,
+ 3,
+ 9,
+ 0,
+ 184,
+ 3,
+ 10,
+ 0,
+ 184,
+ 3,
+ 13,
+ 0,
+ 184,
+ 3,
+ 0,
+ 3,
+ 184,
+ 3,
+ 96,
+ 33,
+ 184,
+ 3,
+ 32,
+ 0,
+ 184,
+ 3,
+ 33,
+ 0,
+ 184,
+ 3,
+ 34,
+ 0,
+ 184,
+ 3,
+ 36,
+ 0,
+ 184,
+ 3,
+ 39,
+ 0,
+ 186,
+ 3,
+ 40,
+ 0,
+ 184,
+ 3,
+ 41,
+ 0,
+ 184,
+ 3,
+ 43,
+ 0,
+ 184,
+ 3,
+ 45,
+ 0,
+ 184,
+ 3,
+ 3,
+ 9,
+ 184,
+ 3,
+ 49,
+ 0,
+ 184,
+ 3,
+ 50,
+ 0,
+ 184,
+ 3,
+ 48,
+ 0,
+ 184,
+ 3,
+ 52,
+ 0,
+ 184,
+ 3,
+ 53,
+ 0,
+ 184,
+ 3,
+ 51,
+ 0,
+ 184,
+ 3,
+ 55,
+ 0,
+ 184,
+ 3,
+ 56,
+ 0,
+ 184,
+ 3,
+ 54,
+ 0,
+ 184,
+ 3,
+ 58,
+ 0,
+ 184,
+ 3,
+ 59,
+ 0,
+ 184,
+ 3,
+ 57,
+ 0,
+ 184,
+ 3,
+ 65,
+ 0,
+ 184,
+ 3,
+ 66,
+ 0,
+ 184,
+ 3,
+ 67,
+ 0,
+ 184,
+ 3,
+ 68,
+ 0,
+ 184,
+ 3,
+ 69,
+ 0,
+ 184,
+ 3,
+ 70,
+ 0,
+ 184,
+ 3,
+ 71,
+ 0,
+ 184,
+ 3,
+ 72,
+ 0,
+ 184,
+ 3,
+ 73,
+ 0,
+ 184,
+ 3,
+ 74,
+ 0,
+ 184,
+ 3,
+ 75,
+ 0,
+ 184,
+ 3,
+ 76,
+ 0,
+ 184,
+ 3,
+ 77,
+ 0,
+ 184,
+ 3,
+ 78,
+ 0,
+ 184,
+ 3,
+ 79,
+ 0,
+ 184,
+ 3,
+ 80,
+ 0,
+ 184,
+ 3,
+ 81,
+ 0,
+ 184,
+ 3,
+ 82,
+ 0,
+ 184,
+ 3,
+ 83,
+ 0,
+ 184,
+ 3,
+ 84,
+ 0,
+ 184,
+ 3,
+ 85,
+ 0,
+ 184,
+ 3,
+ 86,
+ 0,
+ 184,
+ 3,
+ 87,
+ 0,
+ 184,
+ 3,
+ 88,
+ 0,
+ 184,
+ 3,
+ 89,
+ 0,
+ 184,
+ 3,
+ 90,
+ 0,
+ 184,
+ 3,
+ 91,
+ 0,
+ 184,
+ 3,
+ 93,
+ 0,
+ 184,
+ 3,
+ 94,
+ 0,
+ 184,
+ 3,
+ 95,
+ 0,
+ 184,
+ 3,
+ 97,
+ 0,
+ 184,
+ 3,
+ 98,
+ 0,
+ 184,
+ 3,
+ 99,
+ 0,
+ 184,
+ 3,
+ 100,
+ 0,
+ 184,
+ 3,
+ 101,
+ 0,
+ 184,
+ 3,
+ 102,
+ 0,
+ 184,
+ 3,
+ 103,
+ 0,
+ 184,
+ 3,
+ 104,
+ 0,
+ 184,
+ 3,
+ 105,
+ 0,
+ 184,
+ 3,
+ 106,
+ 0,
+ 184,
+ 3,
+ 107,
+ 0,
+ 184,
+ 3,
+ 108,
+ 0,
+ 184,
+ 3,
+ 109,
+ 0,
+ 184,
+ 3,
+ 110,
+ 0,
+ 184,
+ 3,
+ 111,
+ 0,
+ 184,
+ 3,
+ 112,
+ 0,
+ 184,
+ 3,
+ 113,
+ 0,
+ 184,
+ 3,
+ 114,
+ 0,
+ 184,
+ 3,
+ 115,
+ 0,
+ 184,
+ 3,
+ 116,
+ 0,
+ 184,
+ 3,
+ 117,
+ 0,
+ 184,
+ 3,
+ 118,
+ 0,
+ 184,
+ 3,
+ 119,
+ 0,
+ 184,
+ 3,
+ 120,
+ 0,
+ 184,
+ 3,
+ 121,
+ 0,
+ 184,
+ 3,
+ 122,
+ 0,
+ 184,
+ 3,
+ 123,
+ 0,
+ 184,
+ 3,
+ 125,
+ 0,
+ 184,
+ 3,
+ 96,
+ 6,
+ 184,
+ 3,
+ 58,
+ 15,
+ 184,
+ 3,
+ 59,
+ 15,
+ 184,
+ 3,
+ 136,
+ 4,
+ 184,
+ 3,
+ 160,
+ 0,
+ 184,
+ 3,
+ 15,
+ 7,
+ 184,
+ 3,
+ 170,
+ 0,
+ 184,
+ 3,
+ 171,
+ 0,
+ 184,
+ 3,
+ 178,
+ 0,
+ 184,
+ 3,
+ 176,
+ 2,
+ 184,
+ 3,
+ 187,
+ 0,
+ 184,
+ 3,
+ 187,
+ 1,
+ 184,
+ 3,
+ 192,
+ 0,
+ 184,
+ 3,
+ 41,
+ 32,
+ 184,
+ 3,
+ 197,
+ 1,
+ 184,
+ 3,
+ 0,
+ 224,
+ 184,
+ 3,
+ 40,
+ 32,
+ 184,
+ 3,
+ 63,
+ 32,
+ 184,
+ 189,
+ 11,
+ 1,
+ 256,
+ 0,
+ 165,
+ 1,
+ -1,
+ 3,
+ 40,
+ 0,
+ 190,
+ 12,
+ 1,
+ 3185,
+ 191,
+ 5,
+ 0,
+ 192,
+ 11,
+ 1,
+ 236,
+ 0,
+ 193,
+ 4,
+ 12,
+ 76,
+ 0,
+ 80,
+ 0,
+ 65,
+ 0,
+ 82,
+ 0,
+ 69,
+ 0,
+ 78,
+ 0,
+ 1,
+ -1,
+ 3,
+ 41,
+ 0,
+ 194,
+ 12,
+ 1,
+ 3504,
+ 195,
+ 5,
+ 0,
+ 196,
+ 11,
+ 1,
+ 241,
+ 0,
+ 197,
+ 4,
+ 12,
+ 82,
+ 0,
+ 80,
+ 0,
+ 65,
+ 0,
+ 82,
+ 0,
+ 69,
+ 0,
+ 78,
+ 0,
+ 1,
+ -1,
+ 3,
+ 43,
+ 0,
+ 162,
+ 3,
+ 45,
+ 0,
+ 162,
+ 3,
+ 3,
+ 9,
+ 162,
+ 3,
+ 49,
+ 0,
+ 162,
+ 3,
+ 50,
+ 0,
+ 162,
+ 3,
+ 48,
+ 0,
+ 162,
+ 3,
+ 52,
+ 0,
+ 162,
+ 3,
+ 53,
+ 0,
+ 162,
+ 3,
+ 51,
+ 0,
+ 162,
+ 3,
+ 55,
+ 0,
+ 162,
+ 3,
+ 56,
+ 0,
+ 162,
+ 3,
+ 54,
+ 0,
+ 162,
+ 3,
+ 58,
+ 0,
+ 198,
+ 12,
+ 1,
+ 3929,
+ 199,
+ 5,
+ 0,
+ 200,
+ 11,
+ 1,
+ 216,
+ 0,
+ 201,
+ 4,
+ 10,
+ 67,
+ 0,
+ 79,
+ 0,
+ 76,
+ 0,
+ 79,
+ 0,
+ 78,
+ 0,
+ 1,
+ -1,
+ 3,
+ 59,
+ 0,
+ 202,
+ 12,
+ 1,
+ 4035,
+ 203,
+ 5,
+ 0,
+ 204,
+ 11,
+ 1,
+ 221,
+ 0,
+ 205,
+ 4,
+ 18,
+ 83,
+ 0,
+ 69,
+ 0,
+ 77,
+ 0,
+ 73,
+ 0,
+ 67,
+ 0,
+ 79,
+ 0,
+ 76,
+ 0,
+ 79,
+ 0,
+ 78,
+ 0,
+ 1,
+ -1,
+ 3,
+ 57,
+ 0,
+ 162,
+ 3,
+ 65,
+ 0,
+ 206,
+ 12,
+ 1,
+ 260,
+ 207,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 12,
+ 1,
+ 261,
+ 209,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 210,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 4,
+ 4,
+ 73,
+ 0,
+ 68,
+ 0,
+ 1,
+ -1,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 212,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 3,
+ 66,
+ 0,
+ 206,
+ 3,
+ 67,
+ 0,
+ 206,
+ 3,
+ 68,
+ 0,
+ 206,
+ 3,
+ 69,
+ 0,
+ 206,
+ 3,
+ 70,
+ 0,
+ 206,
+ 3,
+ 71,
+ 0,
+ 206,
+ 3,
+ 72,
+ 0,
+ 206,
+ 3,
+ 73,
+ 0,
+ 206,
+ 3,
+ 74,
+ 0,
+ 206,
+ 3,
+ 75,
+ 0,
+ 206,
+ 3,
+ 76,
+ 0,
+ 206,
+ 3,
+ 77,
+ 0,
+ 206,
+ 3,
+ 78,
+ 0,
+ 206,
+ 3,
+ 79,
+ 0,
+ 206,
+ 3,
+ 80,
+ 0,
+ 206,
+ 3,
+ 81,
+ 0,
+ 206,
+ 3,
+ 82,
+ 0,
+ 206,
+ 3,
+ 83,
+ 0,
+ 206,
+ 3,
+ 84,
+ 0,
+ 206,
+ 3,
+ 85,
+ 0,
+ 206,
+ 3,
+ 86,
+ 0,
+ 206,
+ 3,
+ 87,
+ 0,
+ 206,
+ 3,
+ 88,
+ 0,
+ 206,
+ 3,
+ 89,
+ 0,
+ 206,
+ 3,
+ 90,
+ 0,
+ 206,
+ 3,
+ 91,
+ 0,
+ 213,
+ 12,
+ 1,
+ 3078,
+ 214,
+ 5,
+ 0,
+ 215,
+ 11,
+ 1,
+ 246,
+ 0,
+ 216,
+ 4,
+ 12,
+ 76,
+ 0,
+ 66,
+ 0,
+ 82,
+ 0,
+ 65,
+ 0,
+ 67,
+ 0,
+ 75,
+ 0,
+ 1,
+ -1,
+ 3,
+ 93,
+ 0,
+ 217,
+ 12,
+ 1,
+ 3398,
+ 218,
+ 5,
+ 0,
+ 219,
+ 11,
+ 1,
+ 251,
+ 0,
+ 220,
+ 4,
+ 12,
+ 82,
+ 0,
+ 66,
+ 0,
+ 82,
+ 0,
+ 65,
+ 0,
+ 67,
+ 0,
+ 75,
+ 0,
+ 1,
+ -1,
+ 3,
+ 94,
+ 0,
+ 162,
+ 3,
+ 95,
+ 0,
+ 206,
+ 3,
+ 97,
+ 0,
+ 206,
+ 3,
+ 98,
+ 0,
+ 221,
+ 12,
+ 1,
+ 2298,
+ 222,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 223,
+ 12,
+ 1,
+ 2341,
+ 224,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 225,
+ 12,
+ 1,
+ 2375,
+ 226,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 227,
+ 12,
+ 1,
+ 2422,
+ 228,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 229,
+ 11,
+ 1,
+ 93,
+ 0,
+ 230,
+ 4,
+ 8,
+ 66,
+ 0,
+ 65,
+ 0,
+ 83,
+ 0,
+ 69,
+ 0,
+ 1,
+ -1,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 231,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 232,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 233,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 3,
+ 99,
+ 0,
+ 206,
+ 3,
+ 100,
+ 0,
+ 206,
+ 3,
+ 101,
+ 0,
+ 206,
+ 3,
+ 102,
+ 0,
+ 206,
+ 3,
+ 103,
+ 0,
+ 206,
+ 3,
+ 104,
+ 0,
+ 206,
+ 3,
+ 105,
+ 0,
+ 206,
+ 3,
+ 106,
+ 0,
+ 206,
+ 3,
+ 107,
+ 0,
+ 206,
+ 3,
+ 108,
+ 0,
+ 206,
+ 3,
+ 109,
+ 0,
+ 206,
+ 3,
+ 110,
+ 0,
+ 234,
+ 12,
+ 1,
+ 603,
+ 235,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 236,
+ 12,
+ 1,
+ 650,
+ 237,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 238,
+ 12,
+ 1,
+ 688,
+ 239,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 240,
+ 11,
+ 1,
+ 145,
+ 0,
+ 241,
+ 4,
+ 6,
+ 78,
+ 0,
+ 69,
+ 0,
+ 87,
+ 0,
+ 1,
+ -1,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 242,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 243,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 3,
+ 111,
+ 0,
+ 206,
+ 3,
+ 112,
+ 0,
+ 206,
+ 3,
+ 113,
+ 0,
+ 206,
+ 3,
+ 114,
+ 0,
+ 206,
+ 3,
+ 115,
+ 0,
+ 206,
+ 3,
+ 116,
+ 0,
+ 244,
+ 12,
+ 1,
+ 924,
+ 245,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 246,
+ 12,
+ 1,
+ 974,
+ 247,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 248,
+ 12,
+ 1,
+ 1025,
+ 249,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 250,
+ 12,
+ 1,
+ 1059,
+ 251,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 252,
+ 11,
+ 1,
+ 119,
+ 0,
+ 253,
+ 4,
+ 8,
+ 84,
+ 0,
+ 72,
+ 0,
+ 73,
+ 0,
+ 83,
+ 0,
+ 1,
+ -1,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 254,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ (int) byte.MaxValue,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 256,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 3,
+ 117,
+ 0,
+ 206,
+ 3,
+ 118,
+ 0,
+ 206,
+ 3,
+ 119,
+ 0,
+ 206,
+ 3,
+ 120,
+ 0,
+ 206,
+ 3,
+ 121,
+ 0,
+ 257,
+ 12,
+ 1,
+ 1349,
+ 258,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 259,
+ 12,
+ 1,
+ 1389,
+ 260,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 261,
+ 12,
+ 1,
+ 1420,
+ 262,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 263,
+ 11,
+ 1,
+ 74,
+ 264,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 265,
+ 12,
+ 1,
+ 1538,
+ 266,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 267,
+ 12,
+ 1,
+ 1585,
+ 268,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 269,
+ 12,
+ 1,
+ 1634,
+ 270,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 271,
+ 12,
+ 1,
+ 1685,
+ 272,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 273,
+ 12,
+ 1,
+ 1714,
+ 274,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 275,
+ 11,
+ 1,
+ 8,
+ 276,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 277,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 278,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 279,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 280,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 281,
+ 12,
+ 1,
+ 2073,
+ 282,
+ 5,
+ 63,
+ 3,
+ 109,
+ 0,
+ 208,
+ 3,
+ 110,
+ 0,
+ 208,
+ 3,
+ 111,
+ 0,
+ 208,
+ 3,
+ 112,
+ 0,
+ 208,
+ 3,
+ 113,
+ 0,
+ 208,
+ 3,
+ 114,
+ 0,
+ 208,
+ 3,
+ 115,
+ 0,
+ 208,
+ 3,
+ 116,
+ 0,
+ 208,
+ 3,
+ 117,
+ 0,
+ 208,
+ 3,
+ 118,
+ 0,
+ 208,
+ 3,
+ 119,
+ 0,
+ 208,
+ 3,
+ 120,
+ 0,
+ 208,
+ 3,
+ 121,
+ 0,
+ 208,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 283,
+ 11,
+ 1,
+ 55,
+ 284,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 285,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 3,
+ 122,
+ 0,
+ 208,
+ 3,
+ 48,
+ 0,
+ 208,
+ 3,
+ 49,
+ 0,
+ 208,
+ 3,
+ 50,
+ 0,
+ 208,
+ 3,
+ 51,
+ 0,
+ 208,
+ 3,
+ 52,
+ 0,
+ 208,
+ 3,
+ 53,
+ 0,
+ 208,
+ 3,
+ 54,
+ 0,
+ 208,
+ 3,
+ 55,
+ 0,
+ 208,
+ 3,
+ 56,
+ 0,
+ 208,
+ 3,
+ 57,
+ 0,
+ 208,
+ 3,
+ 65,
+ 0,
+ 208,
+ 3,
+ 66,
+ 0,
+ 208,
+ 3,
+ 67,
+ 0,
+ 208,
+ 3,
+ 68,
+ 0,
+ 208,
+ 3,
+ 69,
+ 0,
+ 208,
+ 3,
+ 70,
+ 0,
+ 208,
+ 3,
+ 71,
+ 0,
+ 208,
+ 3,
+ 72,
+ 0,
+ 208,
+ 3,
+ 73,
+ 0,
+ 208,
+ 3,
+ 74,
+ 0,
+ 208,
+ 3,
+ 75,
+ 0,
+ 208,
+ 3,
+ 76,
+ 0,
+ 208,
+ 3,
+ 77,
+ 0,
+ 208,
+ 3,
+ 78,
+ 0,
+ 208,
+ 3,
+ 79,
+ 0,
+ 208,
+ 3,
+ 80,
+ 0,
+ 208,
+ 3,
+ 81,
+ 0,
+ 208,
+ 3,
+ 82,
+ 0,
+ 208,
+ 3,
+ 83,
+ 0,
+ 208,
+ 3,
+ 84,
+ 0,
+ 208,
+ 3,
+ 85,
+ 0,
+ 208,
+ 3,
+ 86,
+ 0,
+ 208,
+ 3,
+ 87,
+ 0,
+ 208,
+ 3,
+ 88,
+ 0,
+ 208,
+ 3,
+ 89,
+ 0,
+ 208,
+ 3,
+ 90,
+ 0,
+ 208,
+ 3,
+ 95,
+ 0,
+ 208,
+ 3,
+ 97,
+ 0,
+ 208,
+ 3,
+ 98,
+ 0,
+ 208,
+ 3,
+ 99,
+ 0,
+ 208,
+ 3,
+ 100,
+ 0,
+ 208,
+ 3,
+ 101,
+ 0,
+ 208,
+ 3,
+ 102,
+ 0,
+ 208,
+ 3,
+ 103,
+ 0,
+ 208,
+ 3,
+ 104,
+ 0,
+ 208,
+ 3,
+ 105,
+ 0,
+ 208,
+ 3,
+ 106,
+ 0,
+ 208,
+ 3,
+ 107,
+ 0,
+ 208,
+ 3,
+ 108,
+ 0,
+ 208,
+ 286,
+ 11,
+ 1,
+ 164,
+ 0,
+ 211,
+ 1,
+ -1,
+ 3,
+ 122,
+ 0,
+ 206,
+ 3,
+ 123,
+ 0,
+ 287,
+ 12,
+ 1,
+ 2972,
+ 288,
+ 5,
+ 0,
+ 289,
+ 11,
+ 1,
+ 226,
+ 0,
+ 290,
+ 4,
+ 12,
+ 76,
+ 0,
+ 66,
+ 0,
+ 82,
+ 0,
+ 65,
+ 0,
+ 67,
+ 0,
+ 69,
+ 0,
+ 1,
+ -1,
+ 3,
+ 125,
+ 0,
+ 291,
+ 12,
+ 1,
+ 3292,
+ 292,
+ 5,
+ 0,
+ 293,
+ 11,
+ 1,
+ 231,
+ 0,
+ 294,
+ 4,
+ 12,
+ 82,
+ 0,
+ 66,
+ 0,
+ 82,
+ 0,
+ 65,
+ 0,
+ 67,
+ 0,
+ 69,
+ 0,
+ 1,
+ -1,
+ 3,
+ 96,
+ 6,
+ 162,
+ 3,
+ 58,
+ 15,
+ 162,
+ 3,
+ 59,
+ 15,
+ 162,
+ 3,
+ 136,
+ 4,
+ 162,
+ 3,
+ 160,
+ 0,
+ 162,
+ 3,
+ 15,
+ 7,
+ 162,
+ 3,
+ 170,
+ 0,
+ 162,
+ 3,
+ 171,
+ 0,
+ 162,
+ 3,
+ 178,
+ 0,
+ 162,
+ 3,
+ 176,
+ 2,
+ 162,
+ 3,
+ 187,
+ 0,
+ 162,
+ 3,
+ 187,
+ 1,
+ 162,
+ 3,
+ 192,
+ 0,
+ 162,
+ 3,
+ 41,
+ 32,
+ 162,
+ 3,
+ 197,
+ 1,
+ 162,
+ 3,
+ 0,
+ 224,
+ 162,
+ 3,
+ 40,
+ 32,
+ 162,
+ 3,
+ 63,
+ 32,
+ 162,
+ 0,
+ 173,
+ 1,
+ -1,
+ 295,
+ 5,
+ 13,
+ 165,
+ 296,
+ 10,
+ 165,
+ 1,
+ 7,
+ 241,
+ 297,
+ 10,
+ 241,
+ 1,
+ 5,
+ 253,
+ 298,
+ 10,
+ 253,
+ 1,
+ 4,
+ 211,
+ 299,
+ 10,
+ 211,
+ 1,
+ 6,
+ 230,
+ 300,
+ 10,
+ 230,
+ 1,
+ 3,
+ 290,
+ 301,
+ 10,
+ 290,
+ 1,
+ 10,
+ 294,
+ 302,
+ 10,
+ 294,
+ 1,
+ 11,
+ 193,
+ 303,
+ 10,
+ 193,
+ 1,
+ 12,
+ 205,
+ 304,
+ 10,
+ 205,
+ 1,
+ 9,
+ 216,
+ 305,
+ 10,
+ 216,
+ 1,
+ 14,
+ 220,
+ 306,
+ 10,
+ 220,
+ 1,
+ 15,
+ 201,
+ 307,
+ 10,
+ 201,
+ 1,
+ 8,
+ 197,
+ 308,
+ 10,
+ 197,
+ 1,
+ 13,
+ 309,
+ 5,
+ 0,
+ 0
+ };
+ Tfactory tfactory1 = new Tfactory((YyLexer) this, "ANY", new TCreator(yycs0tokens.ANY_factory));
+ Tfactory tfactory2 = new Tfactory((YyLexer) this, "NEW", new TCreator(yycs0tokens.NEW_factory));
+ Tfactory tfactory3 = new Tfactory((YyLexer) this, "THIS", new TCreator(yycs0tokens.THIS_factory));
+ Tfactory tfactory4 = new Tfactory((YyLexer) this, "ID", new TCreator(yycs0tokens.ID_factory));
+ Tfactory tfactory5 = new Tfactory((YyLexer) this, "BASE", new TCreator(yycs0tokens.BASE_factory));
+ Tfactory tfactory6 = new Tfactory((YyLexer) this, "LBRACE", new TCreator(yycs0tokens.LBRACE_factory));
+ Tfactory tfactory7 = new Tfactory((YyLexer) this, "RBRACE", new TCreator(yycs0tokens.RBRACE_factory));
+ Tfactory tfactory8 = new Tfactory((YyLexer) this, "LPAREN", new TCreator(yycs0tokens.LPAREN_factory));
+ Tfactory tfactory9 = new Tfactory((YyLexer) this, "SEMICOLON", new TCreator(yycs0tokens.SEMICOLON_factory));
+ Tfactory tfactory10 = new Tfactory((YyLexer) this, "LBRACK", new TCreator(yycs0tokens.LBRACK_factory));
+ Tfactory tfactory11 = new Tfactory((YyLexer) this, "RBRACK", new TCreator(yycs0tokens.RBRACK_factory));
+ Tfactory tfactory12 = new Tfactory((YyLexer) this, "COLON", new TCreator(yycs0tokens.COLON_factory));
+ Tfactory tfactory13 = new Tfactory((YyLexer) this, "RPAREN", new TCreator(yycs0tokens.RPAREN_factory));
+ }
+
+ public static object ANY_factory(Lexer yyl)
+ {
+ return (object) new ANY(yyl);
+ }
+
+ public static object NEW_factory(Lexer yyl)
+ {
+ return (object) new NEW(yyl);
+ }
+
+ public static object THIS_factory(Lexer yyl)
+ {
+ return (object) new THIS(yyl);
+ }
+
+ public static object ID_factory(Lexer yyl)
+ {
+ return (object) new ID(yyl);
+ }
+
+ public static object BASE_factory(Lexer yyl)
+ {
+ return (object) new BASE(yyl);
+ }
+
+ public static object LBRACE_factory(Lexer yyl)
+ {
+ return (object) new LBRACE(yyl);
+ }
+
+ public static object RBRACE_factory(Lexer yyl)
+ {
+ return (object) new RBRACE(yyl);
+ }
+
+ public static object LPAREN_factory(Lexer yyl)
+ {
+ return (object) new LPAREN(yyl);
+ }
+
+ public static object SEMICOLON_factory(Lexer yyl)
+ {
+ return (object) new SEMICOLON(yyl);
+ }
+
+ public static object LBRACK_factory(Lexer yyl)
+ {
+ return (object) new LBRACK(yyl);
+ }
+
+ public static object RBRACK_factory(Lexer yyl)
+ {
+ return (object) new RBRACK(yyl);
+ }
+
+ public static object COLON_factory(Lexer yyl)
+ {
+ return (object) new COLON(yyl);
+ }
+
+ public static object RPAREN_factory(Lexer yyl)
+ {
+ return (object) new RPAREN(yyl);
+ }
+
+ public override TOKEN OldAction(
+ Lexer yym,
+ ref string yytext,
+ int action,
+ ref bool reject)
+ {
+ int num = action;
+ switch (num + 1)
+ {
+ case 0:
+ case 3:
+label_5:
+ return (TOKEN) null;
+ default:
+ switch (num)
+ {
+ case 8:
+ yytext = "yym.yy_begin";
+ return (TOKEN) new ANY(yym);
+ case 55:
+ yytext = "((" + ((cs0tokens) yym).Out + ")yym)";
+ return (TOKEN) new ANY(yym);
+ case 74:
+ yytext = "((" + ((cs0tokens) yym).Out + ")yyq)";
+ return (TOKEN) new ANY(yym);
+ default:
+ goto label_5;
+ }
+ }
+ }
+ }
+}
diff --git a/LibreMetaverse.sln b/LibreMetaverse.sln
index 158da8bd..d6e7946e 100644
--- a/LibreMetaverse.sln
+++ b/LibreMetaverse.sln
@@ -54,6 +54,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GridAccountant", "Programs\
{27C70F3A-0000-0000-0000-000000000000} = {27C70F3A-0000-0000-0000-000000000000}
EndProjectSection
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.LslTools", "LibreMetaverse.LslTools\LibreMetaverse.LslTools.csproj", "{989E5E15-D99B-4CF1-AF64-90C568FC979A}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@@ -262,6 +264,18 @@ Global
{6DE58F9A-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|x64
{6DE58F9A-0000-0000-0000-000000000000}.ReleaseNoGui|x64.ActiveCfg = Release|x64
{6DE58F9A-0000-0000-0000-000000000000}.ReleaseNoGui|x86.ActiveCfg = Release|x86
+ {989E5E15-D99B-4CF1-AF64-90C568FC979A}.Debug|x64.ActiveCfg = Debug|x64
+ {989E5E15-D99B-4CF1-AF64-90C568FC979A}.Debug|x64.Build.0 = Debug|x64
+ {989E5E15-D99B-4CF1-AF64-90C568FC979A}.Debug|x86.ActiveCfg = Debug|x86
+ {989E5E15-D99B-4CF1-AF64-90C568FC979A}.Debug|x86.Build.0 = Debug|x86
+ {989E5E15-D99B-4CF1-AF64-90C568FC979A}.Release|x64.ActiveCfg = Release|x64
+ {989E5E15-D99B-4CF1-AF64-90C568FC979A}.Release|x64.Build.0 = Release|x64
+ {989E5E15-D99B-4CF1-AF64-90C568FC979A}.Release|x86.ActiveCfg = Release|x86
+ {989E5E15-D99B-4CF1-AF64-90C568FC979A}.Release|x86.Build.0 = Release|x86
+ {989E5E15-D99B-4CF1-AF64-90C568FC979A}.ReleaseNoGui|x64.ActiveCfg = Release|x64
+ {989E5E15-D99B-4CF1-AF64-90C568FC979A}.ReleaseNoGui|x64.Build.0 = Release|x64
+ {989E5E15-D99B-4CF1-AF64-90C568FC979A}.ReleaseNoGui|x86.ActiveCfg = Release|x86
+ {989E5E15-D99B-4CF1-AF64-90C568FC979A}.ReleaseNoGui|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE