-- Data for Name: pkguiform; Type: TABLE DATA; Schema: te; Owner: admin
--

COPY pkguiform (uiform_id, uiform_name, uiform_order, uiform_enabled, uiform_source, uiform_notes) FROM stdin;
50	dspTimeExpenseHistory	0	t	<?xml version="1.0" encoding="UTF-8"?>\n<ui version="4.0">\n <comment>This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL.  By using this software, you agree\nto be bound by its terms.</comment>\n <class>dspTimeExpenseHistory</class>\n <widget class="QWidget" name="dspTimeExpenseHistory">\n  <property name="geometry">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>800</width>\n    <height>600</height>\n   </rect>\n  </property>\n  <property name="windowTitle">\n   <string>Worksheet History</string>\n  </property>\n  <layout class="QGridLayout" name="gridLayout_2">\n   <item row="0" column="0">\n    <widget class="ParameterWidget" name="_parameterWidget"/>\n   </item>\n   <item row="0" column="1">\n    <layout class="QVBoxLayout" name="verticalLayout">\n     <item>\n      <widget class="QPushButton" name="_close">\n       <property name="text">\n        <string>Close</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class="QPushButton" name="_query">\n       <property name="text">\n        <string>Query</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class="QPushButton" name="_print">\n       <property name="text">\n        <string>Print</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <spacer name="verticalSpacer">\n       <property name="orientation">\n        <enum>Qt::Vertical</enum>\n       </property>\n       <property name="sizeHint" stdset="0">\n        <size>\n         <width>20</width>\n         <height>0</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n    </layout>\n   </item>\n   <item row="1" column="0" colspan="2">\n    <widget class="QFrame" name="_frame">\n     <property name="sizePolicy">\n      <sizepolicy hsizetype="Preferred" vsizetype="Expanding">\n       <horstretch>0</horstretch>\n       <verstretch>1</verstretch>\n      </sizepolicy>\n     </property>\n     <property name="frameShape">\n      <enum>QFrame::NoFrame</enum>\n     </property>\n     <property name="frameShadow">\n      <enum>QFrame::Raised</enum>\n     </property>\n     <layout class="QGridLayout" name="gridLayout">\n      <property name="margin">\n       <number>0</number>\n      </property>\n      <item row="0" column="0">\n       <widget class="QLabel" name="_listLit">\n        <property name="text">\n         <string>Worksheet Items</string>\n        </property>\n       </widget>\n      </item>\n      <item row="1" column="0">\n       <widget class="XTreeWidget" name="_list">\n        <property name="populateLinear">\n         <bool>false</bool>\n        </property>\n       </widget>\n      </item>\n     </layout>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <customwidgets>\n  <customwidget>\n   <class>ParameterWidget</class>\n   <extends>QWidget</extends>\n   <header>parameterwidget.h</header>\n  </customwidget>\n  <customwidget>\n   <class>XTreeWidget</class>\n   <extends>QTreeWidget</extends>\n   <header>xtreewidget.h</header>\n   <container>1</container>\n  </customwidget>\n </customwidgets>\n <resources/>\n <connections/>\n</ui>\n	
52	tebilling	0	t	<?xml version="1.0" encoding="UTF-8"?>\n<ui version="4.0">\n <comment>This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL.  By using this software, you agree\nto be bound by its terms.</comment>\n <class>tebilling</class>\n <widget class="QDialog" name="tebilling">\n  <property name="geometry">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>396</width>\n    <height>334</height>\n   </rect>\n  </property>\n  <property name="windowTitle">\n   <string>Billing</string>\n  </property>\n  <layout class="QGridLayout" name="gridLayout">\n   <item row="0" column="0">\n    <layout class="QVBoxLayout" name="verticalLayout_3">\n     <item>\n      <layout class="QVBoxLayout" name="verticalLayout_2">\n       <item>\n        <widget class="QGroupBox" name="_custGroup">\n         <property name="title">\n          <string/>\n         </property>\n         <layout class="QGridLayout" name="gridLayout_2">\n          <item row="0" column="0">\n           <widget class="CustCluster" name="_cust">\n            <property name="descriptionVisible">\n             <bool>false</bool>\n            </property>\n            <property name="orientation">\n             <enum>Qt::Horizontal</enum>\n            </property>\n           </widget>\n          </item>\n         </layout>\n        </widget>\n       </item>\n       <item>\n        <widget class="QGroupBox" name="_billingGroup">\n         <property name="sizePolicy">\n          <sizepolicy hsizetype="Preferred" vsizetype="Preferred">\n           <horstretch>0</horstretch>\n           <verstretch>1</verstretch>\n          </sizepolicy>\n         </property>\n         <property name="title">\n          <string>Use specified billing rate</string>\n         </property>\n         <property name="checkable">\n          <bool>true</bool>\n         </property>\n         <property name="checked">\n          <bool>false</bool>\n         </property>\n         <layout class="QHBoxLayout" name="horizontalLayout">\n          <item>\n           <widget class="QLabel" name="_rateLit">\n            <property name="text">\n             <string>Rate:</string>\n            </property>\n            <property name="alignment">\n             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n            </property>\n           </widget>\n          </item>\n          <item>\n           <widget class="CurrCluster" name="_rate"/>\n          </item>\n          <item>\n           <spacer name="horizontalSpacer_2">\n            <property name="orientation">\n             <enum>Qt::Horizontal</enum>\n            </property>\n            <property name="sizeHint" stdset="0">\n             <size>\n              <width>112</width>\n              <height>20</height>\n             </size>\n            </property>\n           </spacer>\n          </item>\n         </layout>\n        </widget>\n       </item>\n       <item>\n        <layout class="QVBoxLayout" name="verticalLayout">\n         <property name="spacing">\n          <number>0</number>\n         </property>\n         <item>\n          <layout class="QHBoxLayout" name="horizontalLayout_2">\n           <item>\n            <spacer name="horizontalSpacer">\n             <property name="orientation">\n              <enum>Qt::Horizontal</enum>\n             </property>\n             <property name="sizeType">\n              <enum>QSizePolicy::Fixed</enum>\n             </property>\n             <property name="sizeHint" stdset="0">\n              <size>\n               <width>12</width>\n               <height>10</height>\n              </size>\n             </property>\n            </spacer>\n           </item>\n           <item>\n            <widget class="QCheckBox" name="_useItem">\n             <property name="focusPolicy">\n              <enum>Qt::StrongFocus</enum>\n             </property>\n             <property name="text">\n              <string>Use Specified item</string>\n             </property>\n             <property name="checked">\n              <bool>true</bool>\n             </property>\n            </widget>\n           </item>\n          </layout>\n         </item>\n         <item>\n          <widget class="QGroupBox" name="_itemGroup">\n           <property name="minimumSize">\n            <size>\n             <width>0</width>\n             <height>130</height>\n            </size>\n           </property>\n           <property name="title">\n            <string/>\n           </property>\n           <property name="checkable">\n            <bool>false</bool>\n           </property>\n           <property name="checked">\n            <bool>false</bool>\n           </property>\n           <layout class="QGridLayout" name="gridLayout_3">\n            <item row="0" column="0">\n             <widget class="ItemCluster" name="_item">\n              <property name="nameVisible">\n               <bool>true</bool>\n              </property>\n              <property name="descriptionVisible">\n               <bool>true</bool>\n              </property>\n             </widget>\n            </item>\n           </layout>\n          </widget>\n         </item>\n        </layout>\n       </item>\n      </layout>\n     </item>\n     <item>\n      <spacer name="verticalSpacer">\n       <property name="orientation">\n        <enum>Qt::Vertical</enum>\n       </property>\n       <property name="sizeHint" stdset="0">\n        <size>\n         <width>20</width>\n         <height>0</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n    </layout>\n   </item>\n  </layout>\n </widget>\n <layoutdefault spacing="6" margin="11"/>\n <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>\n <customwidgets>\n  <customwidget>\n   <class>CurrCluster</class>\n   <extends>CurrDisplay</extends>\n   <header>currcluster.h</header>\n  </customwidget>\n  <customwidget>\n   <class>CurrDisplay</class>\n   <extends>QWidget</extends>\n   <header>currcluster.h</header>\n  </customwidget>\n  <customwidget>\n   <class>CustCluster</class>\n   <extends>QWidget</extends>\n   <header>custcluster.h</header>\n  </customwidget>\n  <customwidget>\n   <class>ItemCluster</class>\n   <extends>QWidget</extends>\n   <header>itemcluster.h</header>\n   <container>1</container>\n  </customwidget>\n </customwidgets>\n <tabstops>\n  <tabstop>_rate</tabstop>\n </tabstops>\n <resources/>\n <connections>\n  <connection>\n   <sender>_billingGroup</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>_rate</receiver>\n   <slot>setCurrencyEnabled(bool)</slot>\n   <hints>\n    <hint type="sourcelabel">\n     <x>210</x>\n     <y>133</y>\n    </hint>\n    <hint type="destinationlabel">\n     <x>167</x>\n     <y>142</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>_useItem</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>_item</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type="sourcelabel">\n     <x>200</x>\n     <y>189</y>\n    </hint>\n    <hint type="destinationlabel">\n     <x>196</x>\n     <y>250</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n	
54	teexpense	0	t	<?xml version="1.0" encoding="UTF-8"?>\n<ui version="4.0">\n <comment>This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL.  By using this software, you agree\nto be bound by its terms.</comment>\n <class>teexpense</class>\n <widget class="QDialog" name="teexpense">\n  <property name="geometry">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>373</width>\n    <height>161</height>\n   </rect>\n  </property>\n  <property name="sizePolicy">\n   <sizepolicy hsizetype="Expanding" vsizetype="Expanding">\n    <horstretch>0</horstretch>\n    <verstretch>0</verstretch>\n   </sizepolicy>\n  </property>\n  <property name="minimumSize">\n   <size>\n    <width>0</width>\n    <height>0</height>\n   </size>\n  </property>\n  <property name="windowTitle">\n   <string>Expense Item Setup</string>\n  </property>\n  <layout class="QGridLayout" name="gridLayout">\n   <item row="0" column="0">\n    <layout class="QVBoxLayout" name="verticalLayout_2">\n     <property name="spacing">\n      <number>4</number>\n     </property>\n     <item>\n      <layout class="QHBoxLayout" name="horizontalLayout_2">\n       <item>\n        <spacer name="horizontalSpacer_2">\n         <property name="orientation">\n          <enum>Qt::Horizontal</enum>\n         </property>\n         <property name="sizeType">\n          <enum>QSizePolicy::Fixed</enum>\n         </property>\n         <property name="sizeHint" stdset="0">\n          <size>\n           <width>10</width>\n           <height>20</height>\n          </size>\n         </property>\n        </spacer>\n       </item>\n       <item>\n        <widget class="QCheckBox" name="_projectExpense">\n         <property name="text">\n          <string>Allow use as Expense Item on Projects</string>\n         </property>\n         <property name="checked">\n          <bool>false</bool>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </item>\n     <item>\n      <widget class="QGroupBox" name="_allowExpenseGroup">\n       <property name="enabled">\n        <bool>false</bool>\n       </property>\n       <property name="title">\n        <string/>\n       </property>\n       <property name="checked">\n        <bool>false</bool>\n       </property>\n       <layout class="QGridLayout" name="gridLayout_5">\n        <item row="0" column="0">\n         <layout class="QVBoxLayout" name="verticalLayout">\n          <item>\n           <layout class="QGridLayout" name="gridLayout_3">\n            <item row="0" column="0">\n             <widget class="QRadioButton" name="_accountSelected">\n              <property name="text">\n               <string>Account</string>\n              </property>\n              <property name="checked">\n               <bool>true</bool>\n              </property>\n             </widget>\n            </item>\n            <item row="1" column="0">\n             <widget class="QRadioButton" name="_expcatSelected">\n              <property name="text">\n               <string>Expense Category</string>\n              </property>\n             </widget>\n            </item>\n            <item row="0" column="1">\n             <layout class="QHBoxLayout" name="horizontalLayout">\n              <item>\n               <widget class="GLCluster" name="_account">\n                <property name="sizePolicy">\n                 <sizepolicy hsizetype="Expanding" vsizetype="Preferred">\n                  <horstretch>0</horstretch>\n                  <verstretch>0</verstretch>\n                 </sizepolicy>\n                </property>\n               </widget>\n              </item>\n             </layout>\n            </item>\n            <item row="1" column="1">\n             <widget class="ExpenseCluster" name="_expcat">\n              <property name="sizePolicy">\n               <sizepolicy hsizetype="Expanding" vsizetype="Preferred">\n                <horstretch>0</horstretch>\n                <verstretch>0</verstretch>\n               </sizepolicy>\n              </property>\n              <property name="focusPolicy">\n               <enum>Qt::StrongFocus</enum>\n              </property>\n              <property name="label">\n               <string/>\n              </property>\n              <property name="nameVisible">\n               <bool>false</bool>\n              </property>\n              <property name="orientation">\n               <enum>Qt::Horizontal</enum>\n              </property>\n              <property name="infoVisible" stdset="0">\n               <bool>false</bool>\n              </property>\n              <property name="readonly" stdset="0">\n               <bool>true</bool>\n              </property>\n             </widget>\n            </item>\n           </layout>\n          </item>\n          <item>\n           <spacer name="verticalSpacer">\n            <property name="orientation">\n             <enum>Qt::Vertical</enum>\n            </property>\n            <property name="sizeHint" stdset="0">\n             <size>\n              <width>20</width>\n              <height>0</height>\n             </size>\n            </property>\n           </spacer>\n          </item>\n         </layout>\n        </item>\n       </layout>\n      </widget>\n     </item>\n    </layout>\n   </item>\n  </layout>\n </widget>\n <layoutdefault spacing="5" margin="5"/>\n <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>\n <customwidgets>\n  <customwidget>\n   <class>ExpenseCluster</class>\n   <extends>QWidget</extends>\n   <header>expensecluster.h</header>\n  </customwidget>\n  <customwidget>\n   <class>GLCluster</class>\n   <extends>QWidget</extends>\n   <header>glcluster.h</header>\n  </customwidget>\n </customwidgets>\n <tabstops>\n  <tabstop>_accountSelected</tabstop>\n  <tabstop>_account</tabstop>\n  <tabstop>_expcatSelected</tabstop>\n </tabstops>\n <resources/>\n <connections>\n  <connection>\n   <sender>_accountSelected</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>_account</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type="sourcelabel">\n     <x>75</x>\n     <y>64</y>\n    </hint>\n    <hint type="destinationlabel">\n     <x>283</x>\n     <y>68</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>_expcatSelected</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>_expcat</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type="sourcelabel">\n     <x>130</x>\n     <y>126</y>\n    </hint>\n    <hint type="destinationlabel">\n     <x>448</x>\n     <y>140</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>_projectExpense</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>_allowExpenseGroup</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type="sourcelabel">\n     <x>196</x>\n     <y>25</y>\n    </hint>\n    <hint type="destinationlabel">\n     <x>186</x>\n     <y>96</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n	
55	timeExpenseSheet	0	t	<?xml version="1.0" encoding="UTF-8"?>\n<ui version="4.0">\n <comment>This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL.  By using this software, you agree\nto be bound by its terms.</comment>\n <class>timeExpenseSheet</class>\n <widget class="QDialog" name="timeExpenseSheet">\n  <property name="geometry">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>800</width>\n    <height>600</height>\n   </rect>\n  </property>\n  <property name="minimumSize">\n   <size>\n    <width>775</width>\n    <height>400</height>\n   </size>\n  </property>\n  <property name="windowTitle">\n   <string>Worksheet</string>\n  </property>\n  <layout class="QGridLayout" name="gridLayout_2">\n   <item row="0" column="0">\n    <layout class="QHBoxLayout">\n     <property name="spacing">\n      <number>12</number>\n     </property>\n     <item>\n      <widget class="QLabel" name="_sheetNumberExtraLit">\n       <property name="text">\n        <string>Sheet #:</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class="QLabel" name="_sheetNumberExtra">\n       <property name="text">\n        <string>...</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <spacer>\n       <property name="orientation">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name="sizeType">\n        <enum>QSizePolicy::Expanding</enum>\n       </property>\n       <property name="sizeHint" stdset="0">\n        <size>\n         <width>0</width>\n         <height>20</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n     <item>\n      <widget class="QDialogButtonBox" name="_buttonBox">\n       <property name="standardButtons">\n        <set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item row="1" column="0">\n    <widget class="QTabWidget" name="_TimeExpenseInformation">\n     <property name="enabled">\n      <bool>true</bool>\n     </property>\n     <property name="currentIndex">\n      <number>0</number>\n     </property>\n     <widget class="QWidget" name="_headerPage">\n      <attribute name="title">\n       <string>S&amp;heet</string>\n      </attribute>\n      <layout class="QGridLayout" name="gridLayout">\n       <item row="0" column="0" colspan="2">\n        <layout class="QHBoxLayout" name="horizontalLayout">\n         <item>\n          <widget class="QLabel" name="_weekendingLit">\n           <property name="text">\n            <string>Week of Date:</string>\n           </property>\n           <property name="alignment">\n            <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n           </property>\n          </widget>\n         </item>\n         <item>\n          <widget class="DLineEdit" name="_weekending">\n           <property name="enabled">\n            <bool>true</bool>\n           </property>\n           <property name="sizePolicy">\n            <sizepolicy hsizetype="Expanding" vsizetype="Fixed">\n             <horstretch>0</horstretch>\n             <verstretch>0</verstretch>\n            </sizepolicy>\n           </property>\n           <property name="focusPolicy">\n            <enum>Qt::StrongFocus</enum>\n           </property>\n           <property name="defaultDate">\n            <enum>XDateEdit::None</enum>\n           </property>\n          </widget>\n         </item>\n         <item>\n          <widget class="QLabel" name="_siteLit">\n           <property name="text">\n            <string>Site:</string>\n           </property>\n           <property name="alignment">\n            <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n           </property>\n           <property name="margin">\n            <number>3</number>\n           </property>\n          </widget>\n         </item>\n         <item>\n          <widget class="WComboBox" name="_site">\n           <property name="sizePolicy">\n            <sizepolicy hsizetype="Expanding" vsizetype="Fixed">\n             <horstretch>0</horstretch>\n             <verstretch>0</verstretch>\n            </sizepolicy>\n           </property>\n           <property name="maximumSize">\n            <size>\n             <width>200</width>\n             <height>16777215</height>\n            </size>\n           </property>\n          </widget>\n         </item>\n         <item>\n          <widget class="QLabel" name="_originatedByLit">\n           <property name="text">\n            <string>Employee:</string>\n           </property>\n           <property name="alignment">\n            <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n           </property>\n           <property name="margin">\n            <number>3</number>\n           </property>\n          </widget>\n         </item>\n         <item>\n          <widget class="EmpCluster" name="_employee"/>\n         </item>\n         <item>\n          <spacer name="horizontalSpacer_2">\n           <property name="orientation">\n            <enum>Qt::Horizontal</enum>\n           </property>\n           <property name="sizeHint" stdset="0">\n            <size>\n             <width>0</width>\n             <height>20</height>\n            </size>\n           </property>\n          </spacer>\n         </item>\n        </layout>\n       </item>\n       <item row="1" column="0">\n        <widget class="XTreeWidget" name="_lines">\n         <property name="focusPolicy">\n          <enum>Qt::StrongFocus</enum>\n         </property>\n         <property name="alternatingRowColors">\n          <bool>false</bool>\n         </property>\n         <property name="rootIsDecorated">\n          <bool>true</bool>\n         </property>\n        </widget>\n       </item>\n       <item row="1" column="1">\n        <layout class="QVBoxLayout" name="verticalLayout">\n         <item>\n          <widget class="QPushButton" name="_new">\n           <property name="enabled">\n            <bool>false</bool>\n           </property>\n           <property name="text">\n            <string>&amp;New</string>\n           </property>\n          </widget>\n         </item>\n         <item>\n          <widget class="QPushButton" name="_edit">\n           <property name="enabled">\n            <bool>false</bool>\n           </property>\n           <property name="text">\n            <string>&amp;Edit</string>\n           </property>\n           <property name="autoDefault">\n            <bool>true</bool>\n           </property>\n          </widget>\n         </item>\n         <item>\n          <widget class="QPushButton" name="_view">\n           <property name="enabled">\n            <bool>false</bool>\n           </property>\n           <property name="text">\n            <string>&amp;View</string>\n           </property>\n           <property name="autoDefault">\n            <bool>true</bool>\n           </property>\n          </widget>\n         </item>\n         <item>\n          <widget class="QPushButton" name="_delete">\n           <property name="enabled">\n            <bool>false</bool>\n           </property>\n           <property name="text">\n            <string>&amp;Delete</string>\n           </property>\n           <property name="autoDefault">\n            <bool>true</bool>\n           </property>\n          </widget>\n         </item>\n         <item>\n          <spacer>\n           <property name="orientation">\n            <enum>Qt::Vertical</enum>\n           </property>\n           <property name="sizeType">\n            <enum>QSizePolicy::Expanding</enum>\n           </property>\n           <property name="sizeHint" stdset="0">\n            <size>\n             <width>20</width>\n             <height>20</height>\n            </size>\n           </property>\n          </spacer>\n         </item>\n        </layout>\n       </item>\n      </layout>\n     </widget>\n     <widget class="QWidget" name="_sheetNotesPage">\n      <attribute name="title">\n       <string>Notes</string>\n      </attribute>\n      <layout class="QGridLayout">\n       <item row="0" column="0">\n        <widget class="QTextEdit" name="_orderComments">\n         <property name="focusPolicy">\n          <enum>Qt::ClickFocus</enum>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n     <widget class="QWidget" name="_sheetDocumentsPage">\n      <attribute name="title">\n       <string>Documents</string>\n      </attribute>\n      <layout class="QVBoxLayout" name="verticalLayout_2">\n       <item>\n        <widget class="Documents" name="_documents">\n         <property name="type">\n          <enum>Documents::TimeExpense</enum>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n    </widget>\n   </item>\n   <item row="2" column="0">\n    <widget class="XCheckBox" name="_printSheet">\n     <property name="text">\n      <string>Print on Save</string>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <layoutdefault spacing="5" margin="5"/>\n <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>\n <customwidgets>\n  <customwidget>\n   <class>DLineEdit</class>\n   <extends>QWidget</extends>\n   <header>datecluster.h</header>\n   <container>1</container>\n  </customwidget>\n  <customwidget>\n   <class>Documents</class>\n   <extends>QWidget</extends>\n   <header>documents.h</header>\n  </customwidget>\n  <customwidget>\n   <class>EmpCluster</class>\n   <extends>QWidget</extends>\n   <header>empcluster.h</header>\n  </customwidget>\n  <customwidget>\n   <class>WComboBox</class>\n   <extends>XComboBox</extends>\n   <header>wcombobox.h</header>\n  </customwidget>\n  <customwidget>\n   <class>XCheckBox</class>\n   <extends>QCheckBox</extends>\n   <header>xcheckbox.h</header>\n  </customwidget>\n  <customwidget>\n   <class>XComboBox</class>\n   <extends>QComboBox</extends>\n   <header>xcombobox.h</header>\n  </customwidget>\n  <customwidget>\n   <class>XTreeWidget</class>\n   <extends>QTreeWidget</extends>\n   <header>xtreewidget.h</header>\n   <container>1</container>\n  </customwidget>\n </customwidgets>\n <resources/>\n <connections/>\n</ui>\n	
56	timeExpenseSheetItem	0	t	<?xml version="1.0" encoding="UTF-8"?>\n<ui version="4.0">\n <comment>This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2011 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL.  By using this software, you agree\nto be bound by its terms.</comment>\n <class>timeExpenseSheetItem</class>\n <widget class="QDialog" name="timeExpenseSheetItem">\n  <property name="geometry">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>825</width>\n    <height>626</height>\n   </rect>\n  </property>\n  <property name="windowTitle">\n   <string>Worksheet</string>\n  </property>\n  <property name="sizeGripEnabled">\n   <bool>false</bool>\n  </property>\n  <property name="screenTitle" stdset="0">\n   <string>Worksheet</string>\n  </property>\n  <layout class="QGridLayout" name="gridLayout_8">\n   <item row="0" column="0">\n    <layout class="QHBoxLayout" name="horizontalLayout">\n     <item>\n      <widget class="QLabel" name="_sheetLit">\n       <property name="text">\n        <string>Worksheet:</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class="XLabel" name="_sheet">\n       <property name="minimumSize">\n        <size>\n         <width>80</width>\n         <height>0</height>\n        </size>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class="QLabel" name="_linenumberLit">\n       <property name="text">\n        <string>Line #:</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class="QLabel" name="_linenumber">\n       <property name="minimumSize">\n        <size>\n         <width>80</width>\n         <height>0</height>\n        </size>\n       </property>\n       <property name="text">\n        <string/>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <spacer name="horizontalSpacer">\n       <property name="orientation">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name="sizeHint" stdset="0">\n        <size>\n         <width>19</width>\n         <height>20</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n    </layout>\n   </item>\n   <item row="0" column="1" rowspan="2">\n    <widget class="QDialogButtonBox" name="_buttonBox">\n     <property name="orientation">\n      <enum>Qt::Vertical</enum>\n     </property>\n     <property name="standardButtons">\n      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set>\n     </property>\n    </widget>\n   </item>\n   <item row="1" column="0">\n    <widget class="QGroupBox" name="_dateGroup">\n     <property name="sizePolicy">\n      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name="title">\n      <string/>\n     </property>\n     <layout class="QGridLayout" name="gridLayout_7">\n      <item row="0" column="0">\n       <layout class="QHBoxLayout" name="horizontalLayout_8">\n        <item>\n         <layout class="QGridLayout" name="gridLayout_3">\n          <item row="0" column="0">\n           <widget class="QLabel" name="_weLit">\n            <property name="text">\n             <string>Week of:</string>\n            </property>\n            <property name="alignment">\n             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n            </property>\n           </widget>\n          </item>\n          <item row="0" column="1">\n           <widget class="DLineEdit" name="_weekending">\n            <property name="focusPolicy">\n             <enum>Qt::NoFocus</enum>\n            </property>\n            <property name="defaultDate">\n             <enum>XDateEdit::Empty</enum>\n            </property>\n           </widget>\n          </item>\n          <item row="0" column="2">\n           <widget class="QLabel" name="_wkLit">\n            <property name="text">\n             <string>Work Date:</string>\n            </property>\n            <property name="alignment">\n             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n            </property>\n           </widget>\n          </item>\n          <item row="1" column="0">\n           <widget class="QLabel" name="_projectLit">\n            <property name="text">\n             <string>Project #:</string>\n            </property>\n            <property name="alignment">\n             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n            </property>\n           </widget>\n          </item>\n          <item row="1" column="1" colspan="5">\n           <widget class="ProjectCluster" name="_project">\n            <property name="focusPolicy">\n             <enum>Qt::StrongFocus</enum>\n            </property>\n            <property name="label">\n             <string/>\n            </property>\n            <property name="nameVisible">\n             <bool>true</bool>\n            </property>\n            <property name="orientation">\n             <enum>Qt::Horizontal</enum>\n            </property>\n            <property name="infoVisible" stdset="0">\n             <bool>false</bool>\n            </property>\n            <property name="listVisible" stdset="0">\n             <bool>false</bool>\n            </property>\n           </widget>\n          </item>\n          <item row="0" column="3">\n           <layout class="QHBoxLayout" name="horizontalLayout_9">\n            <item>\n             <widget class="DLineEdit" name="_workdate">\n              <property name="focusPolicy">\n               <enum>Qt::StrongFocus</enum>\n              </property>\n             </widget>\n            </item>\n            <item>\n             <spacer name="horizontalSpacer_9">\n              <property name="orientation">\n               <enum>Qt::Horizontal</enum>\n              </property>\n              <property name="sizeHint" stdset="0">\n               <size>\n                <width>0</width>\n                <height>20</height>\n               </size>\n              </property>\n             </spacer>\n            </item>\n           </layout>\n          </item>\n          <item row="2" column="0">\n           <widget class="QLabel" name="_taskLit">\n            <property name="text">\n             <string>Task:</string>\n            </property>\n            <property name="alignment">\n             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n            </property>\n           </widget>\n          </item>\n          <item row="2" column="1" colspan="5">\n           <layout class="QHBoxLayout" name="horizontalLayout_4">\n            <item>\n             <widget class="XComboBox" name="_task">\n              <property name="focusPolicy">\n               <enum>Qt::StrongFocus</enum>\n              </property>\n              <property name="sizeAdjustPolicy">\n               <enum>QComboBox::AdjustToContents</enum>\n              </property>\n             </widget>\n            </item>\n            <item>\n             <spacer name="horizontalSpacer_2">\n              <property name="orientation">\n               <enum>Qt::Horizontal</enum>\n              </property>\n              <property name="sizeHint" stdset="0">\n               <size>\n                <width>0</width>\n                <height>13</height>\n               </size>\n              </property>\n             </spacer>\n            </item>\n           </layout>\n          </item>\n          <item row="0" column="4">\n           <widget class="QLabel" name="_typeLit">\n            <property name="text">\n             <string>Type:</string>\n            </property>\n           </widget>\n          </item>\n          <item row="0" column="5">\n           <widget class="XComboBox" name="_type"/>\n          </item>\n         </layout>\n        </item>\n        <item>\n         <spacer name="horizontalSpacer_8">\n          <property name="orientation">\n           <enum>Qt::Horizontal</enum>\n          </property>\n          <property name="sizeHint" stdset="0">\n           <size>\n            <width>0</width>\n            <height>20</height>\n           </size>\n          </property>\n         </spacer>\n        </item>\n       </layout>\n      </item>\n     </layout>\n    </widget>\n   </item>\n   <item row="2" column="0" colspan="2">\n    <layout class="QHBoxLayout" name="horizontalLayout_10">\n     <item>\n      <layout class="QVBoxLayout" name="verticalLayout_2">\n       <item>\n        <widget class="QGroupBox" name="_custGroup">\n         <property name="title">\n          <string/>\n         </property>\n         <layout class="QGridLayout" name="gridLayout_2">\n          <item row="0" column="0">\n           <widget class="CustCluster" name="_clients">\n            <property name="focusPolicy">\n             <enum>Qt::StrongFocus</enum>\n            </property>\n            <property name="type">\n             <enum>CLineEdit::AllCustomers</enum>\n            </property>\n           </widget>\n          </item>\n          <item row="1" column="0">\n           <layout class="QHBoxLayout" name="horizontalLayout_2">\n            <item>\n             <widget class="QLabel" name="label_2">\n              <property name="text">\n               <string>  Cust. PO#:</string>\n              </property>\n             </widget>\n            </item>\n            <item>\n             <widget class="XLineEdit" name="_po">\n              <property name="sizePolicy">\n               <sizepolicy hsizetype="Maximum" vsizetype="Fixed">\n                <horstretch>0</horstretch>\n                <verstretch>0</verstretch>\n               </sizepolicy>\n              </property>\n              <property name="focusPolicy">\n               <enum>Qt::StrongFocus</enum>\n              </property>\n             </widget>\n            </item>\n            <item>\n             <spacer name="horizontalSpacer_3">\n              <property name="orientation">\n               <enum>Qt::Horizontal</enum>\n              </property>\n              <property name="sizeHint" stdset="0">\n               <size>\n                <width>0</width>\n                <height>20</height>\n               </size>\n              </property>\n             </spacer>\n            </item>\n           </layout>\n          </item>\n         </layout>\n        </widget>\n       </item>\n       <item>\n        <widget class="QGroupBox" name="_itemGroup">\n         <property name="title">\n          <string/>\n         </property>\n         <layout class="QGridLayout" name="gridLayout_10">\n          <item row="0" column="0">\n           <widget class="ItemCluster" name="_items"/>\n          </item>\n         </layout>\n        </widget>\n       </item>\n      </layout>\n     </item>\n     <item>\n      <widget class="QGroupBox" name="_qtyGroup">\n       <property name="minimumSize">\n        <size>\n         <width>231</width>\n         <height>171</height>\n        </size>\n       </property>\n       <property name="title">\n        <string/>\n       </property>\n       <layout class="QGridLayout" name="gridLayout">\n        <item row="0" column="0">\n         <layout class="QVBoxLayout" name="verticalLayout_4">\n          <item>\n           <layout class="QVBoxLayout" name="verticalLayout_3">\n            <item>\n             <layout class="QGridLayout" name="gridLayout_5">\n              <item row="1" column="0">\n               <widget class="QLabel" name="_qtyLabel">\n                <property name="text">\n                 <string>Hours:</string>\n                </property>\n                <property name="alignment">\n                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n                </property>\n               </widget>\n              </item>\n              <item row="2" column="0">\n               <widget class="QLabel" name="_rateLit">\n                <property name="text">\n                 <string>Rate:</string>\n                </property>\n                <property name="alignment">\n                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n                </property>\n               </widget>\n              </item>\n              <item row="3" column="0">\n               <widget class="QLabel" name="_totalLit">\n                <property name="text">\n                 <string>Total:</string>\n                </property>\n                <property name="alignment">\n                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n                </property>\n               </widget>\n              </item>\n              <item row="0" column="1">\n               <widget class="EmpCluster" name="_employee">\n                <property name="label">\n                 <string/>\n                </property>\n               </widget>\n              </item>\n              <item row="0" column="0">\n               <widget class="QLabel" name="_qtyLabel_2">\n                <property name="text">\n                 <string>Employee:</string>\n                </property>\n                <property name="alignment">\n                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n                </property>\n               </widget>\n              </item>\n              <item row="1" column="1">\n               <layout class="QHBoxLayout" name="horizontalLayout_3">\n                <item>\n                 <widget class="XLineEdit" name="_hours"/>\n                </item>\n                <item>\n                 <widget class="QCheckBox" name="_billable">\n                  <property name="focusPolicy">\n                   <enum>Qt::StrongFocus</enum>\n                  </property>\n                  <property name="text">\n                   <string>Billable</string>\n                  </property>\n                 </widget>\n                </item>\n                <item>\n                 <spacer name="horizontalSpacer_4">\n                  <property name="orientation">\n                   <enum>Qt::Horizontal</enum>\n                  </property>\n                  <property name="sizeHint" stdset="0">\n                   <size>\n                    <width>40</width>\n                    <height>20</height>\n                   </size>\n                  </property>\n                 </spacer>\n                </item>\n               </layout>\n              </item>\n              <item row="2" column="1">\n               <layout class="QHBoxLayout" name="horizontalLayout_6">\n                <item>\n                 <widget class="CurrCluster" name="_rate">\n                  <property name="focusPolicy">\n                   <enum>Qt::StrongFocus</enum>\n                  </property>\n                  <property name="fieldNameValue">\n                   <string>timedtl_rate</string>\n                  </property>\n                 </widget>\n                </item>\n                <item>\n                 <spacer name="horizontalSpacer_6">\n                  <property name="orientation">\n                   <enum>Qt::Horizontal</enum>\n                  </property>\n                  <property name="sizeHint" stdset="0">\n                   <size>\n                    <width>40</width>\n                    <height>20</height>\n                   </size>\n                  </property>\n                 </spacer>\n                </item>\n               </layout>\n              </item>\n              <item row="3" column="1">\n               <layout class="QHBoxLayout" name="horizontalLayout_7">\n                <item>\n                 <widget class="CurrCluster" name="_total">\n                  <property name="focusPolicy">\n                   <enum>Qt::NoFocus</enum>\n                  </property>\n                  <property name="enabled">\n                   <bool>false</bool>\n                  </property>\n                 </widget>\n                </item>\n                <item>\n                 <spacer name="horizontalSpacer_7">\n                  <property name="orientation">\n                   <enum>Qt::Horizontal</enum>\n                  </property>\n                  <property name="sizeHint" stdset="0">\n                   <size>\n                    <width>40</width>\n                    <height>20</height>\n                   </size>\n                  </property>\n                 </spacer>\n                </item>\n               </layout>\n              </item>\n              <item row="7" column="1">\n               <widget class="QCheckBox" name="_prepaid">\n                <property name="focusPolicy">\n                 <enum>Qt::StrongFocus</enum>\n                </property>\n                <property name="text">\n                 <string>Prepaid (not reimbursable)</string>\n                </property>\n               </widget>\n              </item>\n              <item row="5" column="0">\n               <widget class="QLabel" name="_empcostLit">\n                <property name="text">\n                 <string>Hourly Cost:</string>\n                </property>\n                <property name="alignment">\n                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n                </property>\n               </widget>\n              </item>\n              <item row="5" column="1">\n               <layout class="QHBoxLayout" name="horizontalLayout_12">\n                <item>\n                 <widget class="CurrCluster" name="_empcost">\n                  <property name="enabled">\n                   <bool>false</bool>\n                  </property>\n                 </widget>\n                </item>\n                <item>\n                 <spacer name="horizontalSpacer_11">\n                  <property name="orientation">\n                   <enum>Qt::Horizontal</enum>\n                  </property>\n                  <property name="sizeHint" stdset="0">\n                   <size>\n                    <width>40</width>\n                    <height>20</height>\n                   </size>\n                  </property>\n                 </spacer>\n                </item>\n               </layout>\n              </item>\n              <item row="6" column="0">\n               <widget class="QLabel" name="_totCostLit">\n                <property name="text">\n                 <string>Total Cost:</string>\n                </property>\n                <property name="alignment">\n                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n                </property>\n               </widget>\n              </item>\n              <item row="6" column="1">\n               <layout class="QHBoxLayout" name="horizontalLayout_13">\n                <item>\n                 <widget class="CurrCluster" name="_totCost">\n                  <property name="enabled">\n                   <bool>false</bool>\n                  </property>\n                 </widget>\n                </item>\n                <item>\n                 <spacer name="horizontalSpacer_13">\n                  <property name="orientation">\n                   <enum>Qt::Horizontal</enum>\n                  </property>\n                  <property name="sizeHint" stdset="0">\n                   <size>\n                    <width>40</width>\n                    <height>20</height>\n                   </size>\n                  </property>\n                 </spacer>\n                </item>\n               </layout>\n              </item>\n             </layout>\n            </item>\n           </layout>\n          </item>\n          <item>\n           <spacer name="verticalSpacer_3">\n            <property name="orientation">\n             <enum>Qt::Vertical</enum>\n            </property>\n            <property name="sizeHint" stdset="0">\n             <size>\n              <width>20</width>\n              <height>0</height>\n             </size>\n            </property>\n           </spacer>\n          </item>\n         </layout>\n        </item>\n       </layout>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item row="3" column="0" colspan="2">\n    <widget class="QTabWidget" name="_tab">\n     <property name="currentIndex">\n      <number>0</number>\n     </property>\n     <widget class="QWidget" name="_summaryTab">\n      <attribute name="title">\n       <string>Summary</string>\n      </attribute>\n      <layout class="QGridLayout" name="gridLayout_14">\n       <item row="0" column="0">\n        <widget class="QGroupBox" name="_projectGroup">\n         <property name="title">\n          <string>Task</string>\n         </property>\n         <layout class="QGridLayout" name="gridLayout_6">\n          <item row="0" column="0">\n           <layout class="QVBoxLayout" name="verticalLayout">\n            <item>\n             <layout class="QHBoxLayout" name="horizontalLayout_5">\n              <item>\n               <spacer name="horizontalSpacer_10">\n                <property name="orientation">\n                 <enum>Qt::Horizontal</enum>\n                </property>\n                <property name="sizeHint" stdset="0">\n                 <size>\n                  <width>40</width>\n                  <height>20</height>\n                 </size>\n                </property>\n               </spacer>\n              </item>\n              <item>\n               <layout class="QGridLayout" name="gridLayout_4">\n                <item row="0" column="0">\n                 <widget class="QLabel" name="_budgetLit">\n                  <property name="text">\n                   <string>Planned Hours:</string>\n                  </property>\n                  <property name="alignment">\n                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n                  </property>\n                 </widget>\n                </item>\n                <item row="0" column="1">\n                 <widget class="XLabel" name="_budget"/>\n                </item>\n                <item row="0" column="2" rowspan="2">\n                 <widget class="Line" name="line">\n                  <property name="orientation">\n                   <enum>Qt::Vertical</enum>\n                  </property>\n                 </widget>\n                </item>\n                <item row="0" column="3">\n                 <widget class="QLabel" name="_budgetCostLit">\n                  <property name="text">\n                   <string>Planned Expense:</string>\n                  </property>\n                  <property name="alignment">\n                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n                  </property>\n                 </widget>\n                </item>\n                <item row="0" column="4">\n                 <widget class="XLabel" name="_budgetCost"/>\n                </item>\n                <item row="1" column="0">\n                 <widget class="QLabel" name="_actualLit">\n                  <property name="text">\n                   <string>Actual Hours:</string>\n                  </property>\n                  <property name="alignment">\n                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n                  </property>\n                 </widget>\n                </item>\n                <item row="1" column="1">\n                 <widget class="XLabel" name="_actual"/>\n                </item>\n                <item row="1" column="3">\n                 <widget class="QLabel" name="_actualCostLit">\n                  <property name="text">\n                   <string>Actual Expense:</string>\n                  </property>\n                  <property name="alignment">\n                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n                  </property>\n                 </widget>\n                </item>\n                <item row="1" column="4">\n                 <widget class="XLabel" name="_actualCost"/>\n                </item>\n               </layout>\n              </item>\n              <item>\n               <spacer name="horizontalSpacer_5">\n                <property name="orientation">\n                 <enum>Qt::Horizontal</enum>\n                </property>\n                <property name="sizeHint" stdset="0">\n                 <size>\n                  <width>0</width>\n                  <height>20</height>\n                 </size>\n                </property>\n               </spacer>\n              </item>\n             </layout>\n            </item>\n            <item>\n             <spacer name="verticalSpacer_2">\n              <property name="orientation">\n               <enum>Qt::Vertical</enum>\n              </property>\n              <property name="sizeHint" stdset="0">\n               <size>\n                <width>20</width>\n                <height>0</height>\n               </size>\n              </property>\n             </spacer>\n            </item>\n           </layout>\n          </item>\n         </layout>\n        </widget>\n       </item>\n       <item row="0" column="1">\n        <widget class="QGroupBox" name="groupBox">\n         <property name="title">\n          <string>Employee</string>\n         </property>\n         <layout class="QGridLayout" name="gridLayout_13">\n          <item row="0" column="0">\n           <layout class="QVBoxLayout" name="verticalLayout_5">\n            <item>\n             <layout class="QHBoxLayout" name="horizontalLayout_11">\n              <item>\n               <layout class="QGridLayout" name="gridLayout_12">\n                <item row="0" column="0">\n                 <widget class="QLabel" name="_dayHrsLit">\n                  <property name="text">\n                   <string>Day Total:</string>\n                  </property>\n                  <property name="alignment">\n                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n                  </property>\n                 </widget>\n                </item>\n                <item row="0" column="1">\n                 <widget class="XLabel" name="_dayHrs"/>\n                </item>\n                <item row="1" column="0">\n                 <widget class="QLabel" name="_weekHrsLit">\n                  <property name="text">\n                   <string>Worksheet Total:</string>\n                  </property>\n                  <property name="alignment">\n                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n                  </property>\n                 </widget>\n                </item>\n                <item row="1" column="1">\n                 <widget class="XLabel" name="_weekHrs"/>\n                </item>\n                <item row="1" column="2">\n                 <widget class="QLabel" name="_actualCostLit_2">\n                  <property name="text">\n                   <string>Hours</string>\n                  </property>\n                  <property name="alignment">\n                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n                  </property>\n                 </widget>\n                </item>\n                <item row="0" column="2">\n                 <widget class="QLabel" name="_budgetCostLit_2">\n                  <property name="text">\n                   <string>Hours</string>\n                  </property>\n                  <property name="alignment">\n                   <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n                  </property>\n                 </widget>\n                </item>\n               </layout>\n              </item>\n              <item>\n               <spacer name="horizontalSpacer_12">\n                <property name="orientation">\n                 <enum>Qt::Horizontal</enum>\n                </property>\n                <property name="sizeHint" stdset="0">\n                 <size>\n                  <width>0</width>\n                  <height>20</height>\n                 </size>\n                </property>\n               </spacer>\n              </item>\n             </layout>\n            </item>\n            <item>\n             <spacer name="verticalSpacer_4">\n              <property name="orientation">\n               <enum>Qt::Vertical</enum>\n              </property>\n              <property name="sizeHint" stdset="0">\n               <size>\n                <width>20</width>\n                <height>0</height>\n               </size>\n              </property>\n             </spacer>\n            </item>\n           </layout>\n          </item>\n         </layout>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n     <widget class="QWidget" name="_notesTab">\n      <attribute name="title">\n       <string>Notes</string>\n      </attribute>\n      <layout class="QGridLayout" name="gridLayout_9">\n       <item row="0" column="0">\n        <widget class="XTextEdit" name="_notes">\n         <property name="focusPolicy">\n          <enum>Qt::StrongFocus</enum>\n         </property>\n         <property name="tabChangesFocus">\n          <bool>true</bool>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <customwidgets>\n  <customwidget>\n   <class>CurrCluster</class>\n   <extends></extends>\n   <header>currcluster.h</header>\n  </customwidget>\n  <customwidget>\n   <class>CustCluster</class>\n   <extends></extends>\n   <header>custcluster.h</header>\n  </customwidget>\n  <customwidget>\n   <class>DLineEdit</class>\n   <extends></extends>\n   <header>datecluster.h</header>\n   <container>1</container>\n  </customwidget>\n  <customwidget>\n   <class>EmpCluster</class>\n   <extends></extends>\n   <header>empcluster.h</header>\n  </customwidget>\n  <customwidget>\n   <class>ItemCluster</class>\n   <extends></extends>\n   <header>itemcluster.h</header>\n   <container>1</container>\n  </customwidget>\n  <customwidget>\n   <class>ProjectCluster</class>\n   <extends></extends>\n   <header>projectcluster.h</header>\n  </customwidget>\n  <customwidget>\n   <class>XComboBox</class>\n   <extends></extends>\n   <header>xcombobox.h</header>\n  </customwidget>\n  <customwidget>\n   <class>XLabel</class>\n   <extends></extends>\n   <header>xlabel.h</header>\n  </customwidget>\n  <customwidget>\n   <class>XLineEdit</class>\n   <extends></extends>\n   <header>xlineedit.h</header>\n   <container>1</container>\n  </customwidget>\n  <customwidget>\n   <class>XTextEdit</class>\n   <extends></extends>\n   <header>xtextedit.h</header>\n  </customwidget>\n </customwidgets>\n <tabstops>\n  <tabstop>_workdate</tabstop>\n  <tabstop>_type</tabstop>\n  <tabstop>_project</tabstop>\n  <tabstop>_task</tabstop>\n  <tabstop>_clients</tabstop>\n  <tabstop>_po</tabstop>\n  <tabstop>_items</tabstop>\n  <tabstop>_employee</tabstop>\n  <tabstop>_hours</tabstop>\n  <tabstop>_billable</tabstop>\n  <tabstop>_rate</tabstop>\n  <tabstop>_prepaid</tabstop>\n  <tabstop>_tab</tabstop>\n  <tabstop>_notes</tabstop>\n  <tabstop>_buttonBox</tabstop>\n </tabstops>\n <resources/>\n <connections>\n  <connection>\n   <sender>_rate</sender>\n   <signal>idChanged(int)</signal>\n   <receiver>_total</receiver>\n   <slot>setId(int)</slot>\n   <hints>\n    <hint type="sourcelabel">\n     <x>598</x>\n     <y>292</y>\n    </hint>\n    <hint type="destinationlabel">\n     <x>598</x>\n     <y>330</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n	
57	timeExpenseSheets	0	t	<?xml version="1.0" encoding="UTF-8"?>\n<ui version="4.0">\n <comment>This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL.  By using this software, you agree\nto be bound by its terms.</comment>\n <class>timeExpenseSheets</class>\n <widget class="QWidget" name="timeExpenseSheets">\n  <property name="geometry">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>800</width>\n    <height>600</height>\n   </rect>\n  </property>\n  <property name="sizePolicy">\n   <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">\n    <horstretch>0</horstretch>\n    <verstretch>0</verstretch>\n   </sizepolicy>\n  </property>\n  <property name="minimumSize">\n   <size>\n    <width>700</width>\n    <height>370</height>\n   </size>\n  </property>\n  <property name="windowTitle">\n   <string>Worksheets</string>\n  </property>\n  <layout class="QGridLayout" name="gridLayout_5">\n   <property name="margin">\n    <number>0</number>\n   </property>\n   <property name="spacing">\n    <number>0</number>\n   </property>\n   <item row="0" column="0">\n    <widget class="QToolBar" name="_toolBar">\n     <property name="enabled">\n      <bool>true</bool>\n     </property>\n     <property name="orientation">\n      <enum>Qt::Horizontal</enum>\n     </property>\n     <property name="toolButtonStyle">\n      <enum>Qt::ToolButtonIconOnly</enum>\n     </property>\n     <addaction name="_new"/>\n     <addaction name="_close"/>\n     <addaction name="separator"/>\n     <addaction name="_approve"/>\n     <addaction name="_process"/>\n     <addaction name="separator"/>\n     <addaction name="_print"/>\n     <addaction name="separator"/>\n     <addaction name="_query"/>\n    </widget>\n   </item>\n   <item row="1" column="0">\n    <widget class="QFrame" name="frame">\n     <property name="frameShape">\n      <enum>QFrame::StyledPanel</enum>\n     </property>\n     <property name="frameShadow">\n      <enum>QFrame::Raised</enum>\n     </property>\n     <layout class="QGridLayout" name="gridLayout_3">\n      <item row="0" column="0">\n       <widget class="QGroupBox" name="_empGrp">\n        <property name="minimumSize">\n         <size>\n          <width>301</width>\n          <height>111</height>\n         </size>\n        </property>\n        <property name="baseSize">\n         <size>\n          <width>0</width>\n          <height>0</height>\n         </size>\n        </property>\n        <property name="title">\n         <string>Employees</string>\n        </property>\n        <layout class="QGridLayout" name="gridLayout">\n         <item row="0" column="0">\n          <layout class="QHBoxLayout" name="horizontalLayout_2">\n           <item>\n            <widget class="QRadioButton" name="_showAllEmployees">\n             <property name="text">\n              <string>All</string>\n             </property>\n            </widget>\n           </item>\n           <item>\n            <spacer name="horizontalSpacer">\n             <property name="orientation">\n              <enum>Qt::Horizontal</enum>\n             </property>\n             <property name="sizeType">\n              <enum>QSizePolicy::Preferred</enum>\n             </property>\n             <property name="sizeHint" stdset="0">\n              <size>\n               <width>40</width>\n               <height>10</height>\n              </size>\n             </property>\n            </spacer>\n           </item>\n          </layout>\n         </item>\n         <item row="1" column="0">\n          <layout class="QHBoxLayout" name="horizontalLayout">\n           <item>\n            <widget class="QRadioButton" name="_selected">\n             <property name="text">\n              <string>Selected:</string>\n             </property>\n            </widget>\n           </item>\n           <item>\n            <widget class="EmpCluster" name="_employee"/>\n           </item>\n           <item>\n            <spacer name="horizontalSpacer_2">\n             <property name="orientation">\n              <enum>Qt::Horizontal</enum>\n             </property>\n             <property name="sizeHint" stdset="0">\n              <size>\n               <width>40</width>\n               <height>10</height>\n              </size>\n             </property>\n            </spacer>\n           </item>\n          </layout>\n         </item>\n         <item row="2" column="0">\n          <layout class="QHBoxLayout" name="horizontalLayout_4">\n           <item>\n            <widget class="QRadioButton" name="_showDirectReports">\n             <property name="text">\n              <string>Direct Reports</string>\n             </property>\n            </widget>\n           </item>\n           <item>\n            <widget class="EmpCluster" name="_manager"/>\n           </item>\n           <item>\n            <spacer name="horizontalSpacer_3">\n             <property name="orientation">\n              <enum>Qt::Horizontal</enum>\n             </property>\n             <property name="sizeHint" stdset="0">\n              <size>\n               <width>40</width>\n               <height>20</height>\n              </size>\n             </property>\n            </spacer>\n           </item>\n          </layout>\n         </item>\n        </layout>\n       </widget>\n      </item>\n      <item row="0" column="2">\n       <widget class="QGroupBox" name="_weekendingGrp">\n        <property name="minimumSize">\n         <size>\n          <width>253</width>\n          <height>111</height>\n         </size>\n        </property>\n        <property name="title">\n         <string>Week of</string>\n        </property>\n        <layout class="QGridLayout" name="gridLayout_4">\n         <property name="verticalSpacing">\n          <number>5</number>\n         </property>\n         <item row="0" column="0">\n          <widget class="DateCluster" name="_weekending"/>\n         </item>\n        </layout>\n       </widget>\n      </item>\n      <item row="0" column="3">\n       <widget class="QGroupBox" name="_unposted">\n        <property name="title">\n         <string>Status</string>\n        </property>\n        <layout class="QVBoxLayout" name="verticalLayout">\n         <item>\n          <widget class="XCheckBox" name="_open">\n           <property name="text">\n            <string>Open</string>\n           </property>\n          </widget>\n         </item>\n         <item>\n          <widget class="XCheckBox" name="_approved">\n           <property name="text">\n            <string>Approved</string>\n           </property>\n          </widget>\n         </item>\n         <item>\n          <widget class="XCheckBox" name="_closed">\n           <property name="text">\n            <string>Closed</string>\n           </property>\n          </widget>\n         </item>\n        </layout>\n       </widget>\n      </item>\n     </layout>\n    </widget>\n   </item>\n   <item row="2" column="0">\n    <widget class="XTreeWidget" name="_sheets">\n     <property name="selectionMode">\n      <enum>QAbstractItemView::ExtendedSelection</enum>\n     </property>\n     <property name="populateLinear">\n      <bool>false</bool>\n     </property>\n    </widget>\n   </item>\n   <item row="3" column="0">\n    <layout class="QHBoxLayout" name="horizontalLayout_3">\n     <property name="spacing">\n      <number>12</number>\n     </property>\n     <property name="margin">\n      <number>6</number>\n     </property>\n     <item>\n      <widget class="QLabel" name="label">\n       <property name="text">\n        <string>When Processing:</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class="XCheckBox" name="_invoice">\n       <property name="text">\n        <string>Invoice</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class="XCheckBox" name="_voucher">\n       <property name="text">\n        <string>Voucher</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class="XCheckBox" name="_post">\n       <property name="text">\n        <string>Post Time</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <spacer name="horizontalSpacer_5">\n       <property name="orientation">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name="sizeHint" stdset="0">\n        <size>\n         <width>40</width>\n         <height>0</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n    </layout>\n   </item>\n  </layout>\n  <action name="_new">\n   <property name="text">\n    <string>New</string>\n   </property>\n   <property name="shortcut">\n    <string>Ctrl+N</string>\n   </property>\n  </action>\n  <action name="_close">\n   <property name="text">\n    <string>Close</string>\n   </property>\n   <property name="shortcut">\n    <string>Ctrl+W</string>\n   </property>\n  </action>\n  <action name="_process">\n   <property name="text">\n    <string>Process</string>\n   </property>\n   <property name="toolTip">\n    <string>Process Approved</string>\n   </property>\n  </action>\n  <action name="_approve">\n   <property name="text">\n    <string>Approve</string>\n   </property>\n   <property name="toolTip">\n    <string>Approve All</string>\n   </property>\n  </action>\n  <action name="_query">\n   <property name="text">\n    <string>Query</string>\n   </property>\n   <property name="shortcut">\n    <string>Ctrl+R</string>\n   </property>\n  </action>\n  <action name="_print">\n   <property name="text">\n    <string>Print</string>\n   </property>\n   <property name="shortcut">\n    <string>Ctrl+P</string>\n   </property>\n  </action>\n </widget>\n <customwidgets>\n  <customwidget>\n   <class>DateCluster</class>\n   <extends>QWidget</extends>\n   <header>datecluster.h</header>\n   <container>1</container>\n  </customwidget>\n  <customwidget>\n   <class>EmpCluster</class>\n   <extends>QWidget</extends>\n   <header>empcluster.h</header>\n  </customwidget>\n  <customwidget>\n   <class>XCheckBox</class>\n   <extends>QCheckBox</extends>\n   <header>xcheckbox.h</header>\n  </customwidget>\n  <customwidget>\n   <class>XTreeWidget</class>\n   <extends>QTreeWidget</extends>\n   <header>xtreewidget.h</header>\n   <container>1</container>\n  </customwidget>\n </customwidgets>\n <resources/>\n <connections/>\n</ui>\n	
51	projectGantt	0	t	<?xml version="1.0" encoding="UTF-8"?>\n<ui version="4.0">\n <comment>This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL.  By using this software, you agree\nto be bound by its terms.</comment>\n <class>projectGantt</class>\n <widget class="QWidget" name="projectGantt">\n  <property name="windowModality">\n   <enum>Qt::NonModal</enum>\n  </property>\n  <property name="geometry">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>800</width>\n    <height>600</height>\n   </rect>\n  </property>\n  <property name="windowTitle">\n   <string>Project Gantt</string>\n  </property>\n  <property name="statusTip">\n   <string/>\n  </property>\n  <layout class="QGridLayout" name="gridLayout">\n   <property name="margin">\n    <number>0</number>\n   </property>\n   <property name="spacing">\n    <number>0</number>\n   </property>\n   <item row="0" column="0">\n    <widget class="QToolBar" name="_toolBar">\n     <property name="enabled">\n      <bool>true</bool>\n     </property>\n     <property name="orientation">\n      <enum>Qt::Horizontal</enum>\n     </property>\n     <property name="toolButtonStyle">\n      <enum>Qt::ToolButtonIconOnly</enum>\n     </property>\n     <addaction name="_close"/>\n     <addaction name="separator"/>\n    </widget>\n   </item>\n  </layout>\n  <action name="_close">\n   <property name="text">\n    <string>Close</string>\n   </property>\n   <property name="shortcut">\n    <string>Ctrl+W</string>\n   </property>\n  </action>\n </widget>\n <resources/>\n <connections/>\n</ui>\n	
53	tecustomer	0	t	<?xml version="1.0" encoding="UTF-8"?>\n<ui version="4.0">\n <comment>This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL.  By using this software, you agree\nto be bound by its terms.</comment>\n <class>tecustomer</class>\n <widget class="QDialog" name="tecustomer">\n  <property name="geometry">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>323</width>\n    <height>91</height>\n   </rect>\n  </property>\n  <property name="windowTitle">\n   <string>Billing</string>\n  </property>\n  <layout class="QGridLayout" name="gridLayout">\n   <property name="leftMargin">\n    <number>0</number>\n   </property>\n   <property name="topMargin">\n    <number>6</number>\n   </property>\n   <property name="rightMargin">\n    <number>0</number>\n   </property>\n   <property name="bottomMargin">\n    <number>0</number>\n   </property>\n   <item row="0" column="0">\n    <widget class="QGroupBox" name="_billingGroup">\n     <property name="sizePolicy">\n      <sizepolicy hsizetype="Preferred" vsizetype="Preferred">\n       <horstretch>0</horstretch>\n       <verstretch>1</verstretch>\n      </sizepolicy>\n     </property>\n     <property name="title">\n      <string>Use specified billing rate</string>\n     </property>\n     <property name="checkable">\n      <bool>true</bool>\n     </property>\n     <property name="checked">\n      <bool>false</bool>\n     </property>\n     <layout class="QHBoxLayout" name="horizontalLayout">\n      <item>\n       <widget class="QLabel" name="_rateLit">\n        <property name="text">\n         <string>Rate:</string>\n        </property>\n        <property name="alignment">\n         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class="CurrCluster" name="_rate"/>\n      </item>\n      <item>\n       <spacer name="horizontalSpacer_2">\n        <property name="orientation">\n         <enum>Qt::Horizontal</enum>\n        </property>\n        <property name="sizeHint" stdset="0">\n         <size>\n          <width>41</width>\n          <height>20</height>\n         </size>\n        </property>\n       </spacer>\n      </item>\n     </layout>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <layoutdefault spacing="6" margin="11"/>\n <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>\n <customwidgets>\n  <customwidget>\n   <class>CurrCluster</class>\n   <extends>CurrDisplay</extends>\n   <header>currcluster.h</header>\n  </customwidget>\n  <customwidget>\n   <class>CurrDisplay</class>\n   <extends>QWidget</extends>\n   <header>currcluster.h</header>\n  </customwidget>\n </customwidgets>\n <tabstops>\n  <tabstop>_rate</tabstop>\n </tabstops>\n <resources/>\n <connections>\n  <connection>\n   <sender>_billingGroup</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>_rate</receiver>\n   <slot>setCurrencyEnabled(bool)</slot>\n   <hints>\n    <hint type="sourcelabel">\n     <x>210</x>\n     <y>133</y>\n    </hint>\n    <hint type="destinationlabel">\n     <x>167</x>\n     <y>142</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n	
\.


--
-- Data for Name: tecustrate; Type: TABLE DATA; Schema: te; Owner: admin
--

COPY tecustrate (tecustrate_cust_id, tecustrate_rate, tecustrate_id, tecustrate_curr_id) FROM stdin;
\.


--
-- Name: tecustrate_tecustrate_id_seq; Type: SEQUENCE SET; Schema: te; Owner: admin
--

SELECT pg_catalog.setval('tecustrate_tecustrate_id_seq', 1, false);


--
-- Data for Name: teemp; Type: TABLE DATA; Schema: te; Owner: admin
--

COPY teemp (teemp_id, teemp_emp_id, teemp_contractor) FROM stdin;
\.


--
-- Name: teemp_teemp_id_seq; Type: SEQUENCE SET; Schema: te; Owner: admin
--

SELECT pg_catalog.setval('teemp_teemp_id_seq', 1, false);


--
-- Data for Name: teexp; Type: TABLE DATA; Schema: te; Owner: admin
--

COPY teexp (teexp_id, teexp_expcat_id, teexp_accnt_id) FROM stdin;
\.


--
-- Data for Name: tehead; Type: TABLE DATA; Schema: te; Owner: admin
--

COPY tehead (tehead_id, tehead_number, tehead_weekending, tehead_lastupdated, tehead_notes, tehead_status, tehead_emp_id, tehead_warehous_id, tehead_username) FROM stdin;
\.


--
-- Name: tehead_tehead_id_seq; Type: SEQUENCE SET; Schema: te; Owner: admin
--

SELECT pg_catalog.setval('tehead_tehead_id_seq', 1, false);


--
-- Data for Name: teitem; Type: TABLE DATA; Schema: te; Owner: admin
--

COPY teitem (teitem_id, teitem_tehead_id, teitem_linenumber, teitem_type, teitem_workdate, teitem_cust_id, teitem_vend_id, teitem_po, teitem_item_id, teitem_qty, teitem_rate, teitem_total, teitem_prjtask_id, teitem_lastupdated, teitem_billable, teitem_prepaid, teitem_notes, teitem_posted, teitem_curr_id, teitem_uom_id, teitem_invcitem_id, teitem_vodist_id, teitem_postedvalue, teitem_empcost) FROM stdin;
\.


--
-- Name: teitem_teitem_id_seq; Type: SEQUENCE SET; Schema: te; Owner: admin
--

SELECT pg_catalog.setval('teitem_teitem_id_seq', 1, false);


--
-- Data for Name: teprj; Type: TABLE DATA; Schema: te; Owner: admin
--

COPY teprj (teprj_id, teprj_prj_id, teprj_cust_id, teprj_rate, teprj_curr_id) FROM stdin;
\.


--
-- Name: teprj_teprj_id_seq; Type: SEQUENCE SET; Schema: te; Owner: admin
--

SELECT pg_catalog.setval('teprj_teprj_id_seq', 1, false);


--
-- Data for Name: teprjtask; Type: TABLE DATA; Schema: te; Owner: admin
--

COPY teprjtask (teprjtask_id, teprjtask_cust_id, teprjtask_rate, teprjtask_item_id, teprjtask_prjtask_id, teprjtask_curr_id) FROM stdin;
\.


--
-- Name: teprjtask_teprjtask_id_seq; Type: SEQUENCE SET; Schema: te; Owner: admin
--

SELECT pg_catalog.setval('teprjtask_teprjtask_id_seq', 1, false);


--
-- Name: timesheet_seq; Type: SEQUENCE SET; Schema: te; Owner: admin
--

SELECT pg_catalog.setval('timesheet_seq', 1000, false);



--
-- Data for Name: js; Type: TABLE DATA; Schema: xt; Owner: admin
--

COPY js (js_id, js_text, js_namespace, js_type, js_context, js_ext, js_active) FROM stdin;
1	\n\n/**\n * WARNING!!! IMPORTANT!!! README!!!\n * \n * The file was GENERATED! None of this file was written by a human.\n * DO NOT EDIT this file!\n * This file was created by running build_app.js in the process_manifext.js file.\n * If you find a bug or need to extend it with a new feature, you MUST follow this process:\n * \n * 1. Modify the PEG Grammer definition at: ../lib/orm/source/xt/pegs/metasql.peg\n * 2. Use the PEG.js online tool to test the new grammer:\n *    - http://pegjs.org/online\n * 3. Run build_app.js with your PEG Grammer change and git commit the modified files.\n */\n\n(function () {\nXT.MetaSQL = {};\nXT.MetaSQL.parser = (function() {\n  /*\n   * Generated by PEG.js 0.8.0.\n   *\n   * http://pegjs.majda.cz/\n   */\n\n  function peg$subclass(child, parent) {\n    function ctor() { this.constructor = child; }\n    ctor.prototype = parent.prototype;\n    child.prototype = new ctor();\n  }\n\n  function SyntaxError(message, expected, found, offset, line, column) {\n    this.message  = message;\n    this.expected = expected;\n    this.found    = found;\n    this.offset   = offset;\n    this.line     = line;\n    this.column   = column;\n\n    this.name     = "SyntaxError";\n  }\n\n  peg$subclass(SyntaxError, Error);\n\n  function parse(input) {\n    var options = arguments.length > 1 ? arguments[1] : {},\n\n        peg$FAILED = {},\n\n        peg$startRuleFunctions = { Start: peg$parseStart },\n        peg$startRuleFunction  = peg$parseStart,\n\n        peg$c0 = peg$FAILED,\n        peg$c1 = function(start, metasql, end) {\n              return start.join('') + metasql + end.join('');\n            },\n        peg$c2 = null,\n        peg$c3 = function(sql) {\n              return sql;\n            },\n        peg$c4 = [],\n        peg$c5 = function(first, rest) {\n              return first + rest.join('');\n            },\n        peg$c6 = function(quoted) {\n              //return "quoted: " + quoted;\n              return quoted;\n            },\n        peg$c7 = function(comment) {\n              //return "comment: " + comment;\n              return comment;\n            },\n        peg$c8 = function(state) {\n              //return "statement: " + state;\n              return state;\n            },\n        peg$c9 = function(sql) {\n              //return "sql: " + sql;\n              return sql;\n            },\n        peg$c10 = function(value) {\n              //return "MQLValue: " + value;\n              return value;\n            },\n        peg$c11 = function(literal) {\n              //return "MQLLiteral: " + literal;\n              return literal;\n            },\n        peg$c12 = function(loopcontrol) {\n              //return "MQLLoopControl: " + loopcontrol;\n              return loopcontrol;\n            },\n        peg$c13 = function(rawcond) {\n              //return "MQLRawMQLCondition: " + rawcond;\n              return rawcond;\n            },\n        peg$c14 = function(controlstate) {\n              //return "MQLControlStatement: " + controlstate;\n              return controlstate;\n            },\n        peg$c15 = function(generic) {\n              //return "MQLGeneric: " + generic;\n              return generic;\n            },\n        peg$c16 = "(",\n        peg$c17 = { type: "literal", value: "(", description: "\\"(\\"" },\n        peg$c18 = ")",\n        peg$c19 = { type: "literal", value: ")", description: "\\")\\"" },\n        peg$c20 = function(id) {\n              var stackidx,\n                  listidx;\n\n              if (Object.prototype.toString.call(params[id]) === '[object Array]') {\n                stackidx = stackIdx(id);\n\n                if (stackidx < loopstack.length) {\n                  listidx = loopstack[stackidx].count;\n\n                  if (listidx >= params[id].length) {\n                    listidx = params[id].length - 1;\n                  }\n\n                  if (typeof params[id][0] == 'string') {\n                    return ("'" + params[id][listidx] + "'");\n                  } else {\n                    return params[id][listidx];\n                  }\n                }\n                else {\n                  // Not in a foreach loop\n                  if (typeof params[id][0] == 'string') {\n                    return "'" + params[id][0] + "'";\n                  } else {\n                    return params[id][0];\n                  }\n                }\n              }\n\n              if (typeof params[id] == 'string') {\n                return ("'" + (params[id] ? params[id] : 'NULL ') + "'");\n              } else {\n                return (params[id] ? params[id] : 'NULL ');\n              }\n            },\n        peg$c21 = function(id) {\n              var stackidx,\n                  listidx;\n\n              if (Object.prototype.toString.call(params[id]) === '[object Array]') {\n                stackidx = stackIdx(id);\n\n                if (stackidx < loopstack.length) {\n                  listidx = loopstack[stackidx].count;\n\n                  if (listidx >= params[id].length) {\n                    listidx = params[id].length - 1;\n                  }\n\n                  return params[id][listidx];\n                }\n                else {\n                  // Not in a foreach loop\n                  return params[id][0];\n                }\n              }\n\n              return (params[id] ? params[id] : '');\n            },\n        peg$c22 = function(loop) {\n              return loop;\n            },\n        peg$c23 = function(cond) {\n              return cond;\n            },\n        peg$c24 = void 0,\n        peg$c25 = function(ifcond, ifbody) {\n              if (ifcond) {\n                return (ifbody ? extractList(ifbody, 1).join('') : '');\n              } else {\n                return '';\n              }\n            },\n        peg$c26 = function(ifcond, ifbody, elsebody) {\n              if (ifcond) {\n                return (ifbody ? extractList(ifbody, 1).join('') : '');\n              } else {\n                return (elsebody ? extractList(elsebody, 1).join('') : '');\n              }\n            },\n        peg$c27 = function(ifcond, ifbody, elseifwraper, elsebody) {\n              if (ifcond) {\n                return (ifbody ? extractList(ifbody, 1).join('') : '');\n              }\n\n              if (elseifwraper !== null) {\n                for (var i = 0; i < elseifwraper.length; i++) {\n                  // Find a valid elseif if any exists.\n                  if (elseifwraper[i][0]) {\n                    return (elseifwraper[i][1] ? extractList(elseifwraper[i][1], 1).join('') : '');\n                  }\n                }\n              }\n\n              // The ifcond and elseifwraper conditions did not match.\n              return (elsebody ? extractList(elsebody, 1).join('') : '');\n            },\n        peg$c28 = function(wrapper) {\n              var body = wrapper.body,\n                  foreachcond = wrapper.foreachstart.id,\n                  foreachtext = wrapper.foreachstart.text,\n                  extractedbody = '',\n                  result = '',\n                  stackidx = stackIdx(foreachcond),\n                  extractForeach = function (foreachbody) {\n                    var foreachraw = '';\n\n                    for (var k = 0; k < foreachbody.length; k++) {\n                      // Index [k][1] is a nested foreach, build it recursively.\n                      if (foreachbody[k][1]) {\n                        foreachraw += foreachbody[k][1].foreachstart.text;\n                        foreachraw += extractForeach(foreachbody[k][1].body);\n                        foreachraw += foreachbody[k][1].foreachend;\n                      }\n\n                      // Index [k][2] is this foreach's body text.\n                      foreachraw += foreachbody[k][2];\n                    }\n\n                    return foreachraw;\n                  };\n\n              extractedbody += extractForeach(body);\n\n              if (params[foreachcond]) {\n                if (Object.prototype.toString.call(params[foreachcond]) === '[object Array]') {\n                  for (var i = 0; i < params[foreachcond].length; i++) {\n                    var recurseOptions = {\n                          loopstack: loopstack\n                        };\n\n                    // Call the parser recursively on the body.\n                    result += parser.parse(extractedbody, recurseOptions);\n\n                    loopstack[stackidx].count++;\n                  }\n\n                  loopstack.shift().id;\n                  return result;\n                } else {\n                  return '';\n                }\n              }\n            },\n        peg$c29 = function(start, body, end) {\n              return start + (body ? extractList(body, 1).join('') : '') + end;\n            },\n        peg$c30 = function(id) {\n              return ! (id in params);\n            },\n        peg$c31 = function(id) {\n              return (id in params);\n            },\n        peg$c32 = function(re) {\n              for (var prop in params) {\n                if (prop.match(re)) {\n                  return true;\n                }\n              }\n\n              return '';\n            },\n        peg$c33 = function(id) {\n              var stackidx = stackIdx(id);\n\n              if (Object.prototype.toString.call(params[id]) === '[object Array]') {\n                if (stackidx < loopstack.length) {\n                  listidx = loopstack[stackidx].count;\n\n                  // Figure out if this is the first item in the array.\n                  if (listidx === 0) {\n                    return true;\n                  } else {\n                    return false;\n                  }\n                }\n                else {\n                  // Not in a foreach loop\n                  return (id in params);\n                }\n              } else {\n                // Not a list parameter or does not exist.\n                return true;\n              }\n            },\n        peg$c34 = function(id) {\n              var stackidx = stackIdx(id);\n\n              if (Object.prototype.toString.call(params[id]) === '[object Array]') {\n                if (stackidx < loopstack.length) {\n                  listidx = loopstack[stackidx].count;\n\n                  // Figure out if this is the last item in the array.\n                  if (listidx === (params[id].length - 1)) {\n                    return true;\n                  } else {\n                    return false;\n                  }\n                }\n                else {\n                  // Not in a foreach loop\n                  if ((id in params) && params[id].length === 1) {\n                    return true;\n                  } else {\n                    return false;\n                  }\n                }\n              } else {\n                // Not a list parameter or does not exist.\n                return false;\n              }\n            },\n        peg$c35 = function(id) {\n              loopstack.unshift({ id: id, count: 0 });\n\n              return {\n                text: text(),\n                id: id\n              };\n            },\n        peg$c36 = function() {\n              return text();\n            },\n        peg$c37 = function(foreachstart, body, foreachend) {\n              var wrapper = {\n                foreachstart: foreachstart,\n                body: body,\n                foreachend: foreachend\n              };\n\n              return wrapper;\n            },\n        peg$c38 = function(loop) {\n              // TODO: Figure out what the passed loop count is.\n              // TODO: Figure out where we are in the loop.\n              // TODO: Continue logic.\n              loop = loop || 1;\n              return '';\n            },\n        peg$c39 = function(loop) {\n              // TODO: Figure out what the passed loop count is.\n              // TODO: Figure out where we are in the loop.\n              // TODO: Break logic.\n              loop = loop || 1;\n              return '';\n            },\n        peg$c40 = "<?",\n        peg$c41 = { type: "literal", value: "<?", description: "\\"<?\\"" },\n        peg$c42 = "?>",\n        peg$c43 = { type: "literal", value: "?>", description: "\\"?>\\"" },\n        peg$c44 = /^[Vv]/,\n        peg$c45 = { type: "class", value: "[Vv]", description: "[Vv]" },\n        peg$c46 = /^[Aa]/,\n        peg$c47 = { type: "class", value: "[Aa]", description: "[Aa]" },\n        peg$c48 = /^[Ll]/,\n        peg$c49 = { type: "class", value: "[Ll]", description: "[Ll]" },\n        peg$c50 = /^[Uu]/,\n        peg$c51 = { type: "class", value: "[Uu]", description: "[Uu]" },\n        peg$c52 = /^[Ee]/,\n        peg$c53 = { type: "class", value: "[Ee]", description: "[Ee]" },\n        peg$c54 = /^[Ii]/,\n        peg$c55 = { type: "class", value: "[Ii]", description: "[Ii]" },\n        peg$c56 = /^[Tt]/,\n        peg$c57 = { type: "class", value: "[Tt]", description: "[Tt]" },\n        peg$c58 = /^[Rr]/,\n        peg$c59 = { type: "class", value: "[Rr]", description: "[Rr]" },\n        peg$c60 = /^[Ff]/,\n        peg$c61 = { type: "class", value: "[Ff]", description: "[Ff]" },\n        peg$c62 = /^[Ss]/,\n        peg$c63 = { type: "class", value: "[Ss]", description: "[Ss]" },\n        peg$c64 = /^[Nn]/,\n        peg$c65 = { type: "class", value: "[Nn]", description: "[Nn]" },\n        peg$c66 = /^[Dd]/,\n        peg$c67 = { type: "class", value: "[Dd]", description: "[Dd]" },\n        peg$c68 = /^[Oo]/,\n        peg$c69 = { type: "class", value: "[Oo]", description: "[Oo]" },\n        peg$c70 = /^[Xx]/,\n        peg$c71 = { type: "class", value: "[Xx]", description: "[Xx]" },\n        peg$c72 = /^[Cc]/,\n        peg$c73 = { type: "class", value: "[Cc]", description: "[Cc]" },\n        peg$c74 = /^[Hh]/,\n        peg$c75 = { type: "class", value: "[Hh]", description: "[Hh]" },\n        peg$c76 = /^[Bb]/,\n        peg$c77 = { type: "class", value: "[Bb]", description: "[Bb]" },\n        peg$c78 = /^[Kk]/,\n        peg$c79 = { type: "class", value: "[Kk]", description: "[Kk]" },\n        peg$c80 = function(text) {\n              return (text ? text : '');\n            },\n        peg$c81 = function(body) {\n              return (body ? body : '');\n            },\n        peg$c82 = { type: "any", description: "any character" },\n        peg$c83 = { type: "other", description: "whitespace" },\n        peg$c84 = "\\t",\n        peg$c85 = { type: "literal", value: "\\t", description: "\\"\\\\t\\"" },\n        peg$c86 = "\\x0B",\n        peg$c87 = { type: "literal", value: "\\x0B", description: "\\"\\\\x0B\\"" },\n        peg$c88 = "\\f",\n        peg$c89 = { type: "literal", value: "\\f", description: "\\"\\\\f\\"" },\n        peg$c90 = " ",\n        peg$c91 = { type: "literal", value: " ", description: "\\" \\"" },\n        peg$c92 = "\\xA0",\n        peg$c93 = { type: "literal", value: "\\xA0", description: "\\"\\\\xA0\\"" },\n        peg$c94 = "\\uFEFF",\n        peg$c95 = { type: "literal", value: "\\uFEFF", description: "\\"\\\\uFEFF\\"" },\n        peg$c96 = /^[\\n\\r\\u2028\\u2029]/,\n        peg$c97 = { type: "class", value: "[\\\\n\\\\r\\\\u2028\\\\u2029]", description: "[\\\\n\\\\r\\\\u2028\\\\u2029]" },\n        peg$c98 = function(line) {\n              return line + '&';\n            },\n        peg$c99 = { type: "other", description: "end of line" },\n        peg$c100 = "\\n",\n        peg$c101 = { type: "literal", value: "\\n", description: "\\"\\\\n\\"" },\n        peg$c102 = "\\r\\n",\n        peg$c103 = { type: "literal", value: "\\r\\n", description: "\\"\\\\r\\\\n\\"" },\n        peg$c104 = "\\r",\n        peg$c105 = { type: "literal", value: "\\r", description: "\\"\\\\r\\"" },\n        peg$c106 = "\\u2028",\n        peg$c107 = { type: "literal", value: "\\u2028", description: "\\"\\\\u2028\\"" },\n        peg$c108 = "\\u2029",\n        peg$c109 = { type: "literal", value: "\\u2029", description: "\\"\\\\u2029\\"" },\n        peg$c110 = /^[0-9]/,\n        peg$c111 = { type: "class", value: "[0-9]", description: "[0-9]" },\n        peg$c112 = /^[0-9a-f]/i,\n        peg$c113 = { type: "class", value: "[0-9a-f]i", description: "[0-9a-f]i" },\n        peg$c114 = "'",\n        peg$c115 = { type: "literal", value: "'", description: "\\"'\\"" },\n        peg$c116 = /^[^']/,\n        peg$c117 = { type: "class", value: "[^']", description: "[^']" },\n        peg$c118 = function(str) {\n              return str.join("");\n            },\n        peg$c119 = "\\"",\n        peg$c120 = { type: "literal", value: "\\"", description: "\\"\\\\\\"\\"" },\n        peg$c121 = /^[^"]/,\n        peg$c122 = { type: "class", value: "[^\\"]", description: "[^\\"]" },\n        peg$c123 = { type: "other", description: "comment" },\n        peg$c124 = "/*",\n        peg$c125 = { type: "literal", value: "/*", description: "\\"/*\\"" },\n        peg$c126 = "*/",\n        peg$c127 = { type: "literal", value: "*/", description: "\\"*/\\"" },\n        peg$c128 = "--",\n        peg$c129 = { type: "literal", value: "--", description: "\\"--\\"" },\n        peg$c130 = function(start, body) {\n              return start + (body ? extractList(body, 1).join('') : '');\n            },\n        peg$c131 = { type: "other", description: "quoted identifier" },\n        peg$c132 = function(start, body, end) {\n              return (body ? body.join('') : '');\n            },\n        peg$c133 = { type: "other", description: "quoted string" },\n        peg$c134 = function(start, body, end) {\n              return start + (body ? body.join('') : '') + end;\n            },\n        peg$c135 = "\\\\",\n        peg$c136 = { type: "literal", value: "\\\\", description: "\\"\\\\\\\\\\"" },\n        peg$c137 = function(sequence) {\n              return sequence;\n            },\n        peg$c138 = function() {\n              return "";\n            },\n        peg$c139 = "0",\n        peg$c140 = { type: "literal", value: "0", description: "\\"0\\"" },\n        peg$c141 = function() {\n              return "\\0";\n            },\n        peg$c142 = "b",\n        peg$c143 = { type: "literal", value: "b", description: "\\"b\\"" },\n        peg$c144 = function() {\n              return "\\b";\n            },\n        peg$c145 = "f",\n        peg$c146 = { type: "literal", value: "f", description: "\\"f\\"" },\n        peg$c147 = function() {\n              return "\\f";\n            },\n        peg$c148 = "n",\n        peg$c149 = { type: "literal", value: "n", description: "\\"n\\"" },\n        peg$c150 = function() {\n              return "\\n";\n            },\n        peg$c151 = "r",\n        peg$c152 = { type: "literal", value: "r", description: "\\"r\\"" },\n        peg$c153 = function() {\n              return "\\r";\n            },\n        peg$c154 = "t",\n        peg$c155 = { type: "literal", value: "t", description: "\\"t\\"" },\n        peg$c156 = function() {\n              return "\\t";\n            },\n        peg$c157 = "v",\n        peg$c158 = { type: "literal", value: "v", description: "\\"v\\"" },\n        peg$c159 = function() {\n              return "\\x0B"; // IE does not recognize "\\v".\n            },\n        peg$c160 = "x",\n        peg$c161 = { type: "literal", value: "x", description: "\\"x\\"" },\n        peg$c162 = "u",\n        peg$c163 = { type: "literal", value: "u", description: "\\"u\\"" },\n        peg$c164 = function(digits) {\n              return String.fromCharCode(parseInt(digits, 16));\n            },\n        peg$c165 = /^[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/,\n        peg$c166 = { type: "class", value: "[ \\\\xA0\\\\u1680\\\\u2000-\\\\u200A\\\\u202F\\\\u205F\\\\u3000]", description: "[ \\\\xA0\\\\u1680\\\\u2000-\\\\u200A\\\\u202F\\\\u205F\\\\u3000]" },\n\n        peg$currPos          = 0,\n        peg$reportedPos      = 0,\n        peg$cachedPos        = 0,\n        peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },\n        peg$maxFailPos       = 0,\n        peg$maxFailExpected  = [],\n        peg$silentFails      = 0,\n\n        peg$result;\n\n    if ("startRule" in options) {\n      if (!(options.startRule in peg$startRuleFunctions)) {\n        throw new Error("Can't start parsing from rule \\"" + options.startRule + "\\".");\n      }\n\n      peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n    }\n\n    function text() {\n      return input.substring(peg$reportedPos, peg$currPos);\n    }\n\n    function offset() {\n      return peg$reportedPos;\n    }\n\n    function line() {\n      return peg$computePosDetails(peg$reportedPos).line;\n    }\n\n    function column() {\n      return peg$computePosDetails(peg$reportedPos).column;\n    }\n\n    function expected(description) {\n      throw peg$buildException(\n        null,\n        [{ type: "other", description: description }],\n        peg$reportedPos\n      );\n    }\n\n    function error(message) {\n      throw peg$buildException(message, null, peg$reportedPos);\n    }\n\n    function peg$computePosDetails(pos) {\n      function advance(details, startPos, endPos) {\n        var p, ch;\n\n        for (p = startPos; p < endPos; p++) {\n          ch = input.charAt(p);\n          if (ch === "\\n") {\n            if (!details.seenCR) { details.line++; }\n            details.column = 1;\n            details.seenCR = false;\n          } else if (ch === "\\r" || ch === "\\u2028" || ch === "\\u2029") {\n            details.line++;\n            details.column = 1;\n            details.seenCR = true;\n          } else {\n            details.column++;\n            details.seenCR = false;\n          }\n        }\n      }\n\n      if (peg$cachedPos !== pos) {\n        if (peg$cachedPos > pos) {\n          peg$cachedPos = 0;\n          peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };\n        }\n        advance(peg$cachedPosDetails, peg$cachedPos, pos);\n        peg$cachedPos = pos;\n      }\n\n      return peg$cachedPosDetails;\n    }\n\n    function peg$fail(expected) {\n      if (peg$currPos < peg$maxFailPos) { return; }\n\n      if (peg$currPos > peg$maxFailPos) {\n        peg$maxFailPos = peg$currPos;\n        peg$maxFailExpected = [];\n      }\n\n      peg$maxFailExpected.push(expected);\n    }\n\n    function peg$buildException(message, expected, pos) {\n      function cleanupExpected(expected) {\n        var i = 1;\n\n        expected.sort(function(a, b) {\n          if (a.description < b.description) {\n            return -1;\n          } else if (a.description > b.description) {\n            return 1;\n          } else {\n            return 0;\n          }\n        });\n\n        while (i < expected.length) {\n          if (expected[i - 1] === expected[i]) {\n            expected.splice(i, 1);\n          } else {\n            i++;\n          }\n        }\n      }\n\n      function buildMessage(expected, found) {\n        function stringEscape(s) {\n          function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n          return s\n            .replace(/\\\\/g,   '\\\\\\\\')\n            .replace(/"/g,    '\\\\"')\n            .replace(/\\x08/g, '\\\\b')\n            .replace(/\\t/g,   '\\\\t')\n            .replace(/\\n/g,   '\\\\n')\n            .replace(/\\f/g,   '\\\\f')\n            .replace(/\\r/g,   '\\\\r')\n            .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n            .replace(/[\\x10-\\x1F\\x80-\\xFF]/g,    function(ch) { return '\\\\x'  + hex(ch); })\n            .replace(/[\\u0180-\\u0FFF]/g,         function(ch) { return '\\\\u0' + hex(ch); })\n            .replace(/[\\u1080-\\uFFFF]/g,         function(ch) { return '\\\\u'  + hex(ch); });\n        }\n\n        var expectedDescs = new Array(expected.length),\n            expectedDesc, foundDesc, i;\n\n        for (i = 0; i < expected.length; i++) {\n          expectedDescs[i] = expected[i].description;\n        }\n\n        expectedDesc = expected.length > 1\n          ? expectedDescs.slice(0, -1).join(", ")\n              + " or "\n              + expectedDescs[expected.length - 1]\n          : expectedDescs[0];\n\n        foundDesc = found ? "\\"" + stringEscape(found) + "\\"" : "end of input";\n\n        return "Expected " + expectedDesc + " but " + foundDesc + " found.";\n      }\n\n      var posDetails = peg$computePosDetails(pos),\n          found      = pos < input.length ? input.charAt(pos) : null;\n\n      if (expected !== null) {\n        cleanupExpected(expected);\n      }\n\n      return new SyntaxError(\n        message !== null ? message : buildMessage(expected, found),\n        expected,\n        found,\n        pos,\n        posDetails.line,\n        posDetails.column\n      );\n    }\n\n    function peg$parseStart() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$currPos;\n      s1 = peg$parse__();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseMetaSQL();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parse__();\n          if (s3 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c1(s1, s2, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseMetaSQL() {\n      var s0, s1;\n\n      s0 = peg$currPos;\n      s1 = peg$parseSourceElements();\n      if (s1 === peg$FAILED) {\n        s1 = peg$c2;\n      }\n      if (s1 !== peg$FAILED) {\n        peg$reportedPos = s0;\n        s1 = peg$c3(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    function peg$parseSourceElements() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$currPos;\n      s1 = peg$parseSourceElement();\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$parseSourceElement();\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$parseSourceElement();\n        }\n        if (s2 !== peg$FAILED) {\n          peg$reportedPos = s0;\n          s1 = peg$c5(s1, s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseSourceElement() {\n      var s0, s1;\n\n      s0 = peg$currPos;\n      s1 = peg$parseQuotedString();\n      if (s1 !== peg$FAILED) {\n        peg$reportedPos = s0;\n        s1 = peg$c6(s1);\n      }\n      s0 = s1;\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parseComment();\n        if (s1 !== peg$FAILED) {\n          peg$reportedPos = s0;\n          s1 = peg$c7(s1);\n        }\n        s0 = s1;\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parseStatement();\n          if (s1 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c8(s1);\n          }\n          s0 = s1;\n          if (s0 === peg$FAILED) {\n            s0 = peg$currPos;\n            s1 = peg$parseSQLText();\n            if (s1 !== peg$FAILED) {\n              peg$reportedPos = s0;\n              s1 = peg$c9(s1);\n            }\n            s0 = s1;\n          }\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parseStatement() {\n      var s0, s1;\n\n      s0 = peg$currPos;\n      s1 = peg$parseMQLValue();\n      if (s1 !== peg$FAILED) {\n        peg$reportedPos = s0;\n        s1 = peg$c10(s1);\n      }\n      s0 = s1;\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parseMQLLiteral();\n        if (s1 !== peg$FAILED) {\n          peg$reportedPos = s0;\n          s1 = peg$c11(s1);\n        }\n        s0 = s1;\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parseMQLLoopControl();\n          if (s1 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c12(s1);\n          }\n          s0 = s1;\n          if (s0 === peg$FAILED) {\n            s0 = peg$currPos;\n            s1 = peg$parseMQLRawMQLCondition();\n            if (s1 !== peg$FAILED) {\n              peg$reportedPos = s0;\n              s1 = peg$c13(s1);\n            }\n            s0 = s1;\n            if (s0 === peg$FAILED) {\n              s0 = peg$currPos;\n              s1 = peg$parseMQLControlStatement();\n              if (s1 !== peg$FAILED) {\n                peg$reportedPos = s0;\n                s1 = peg$c14(s1);\n              }\n              s0 = s1;\n              if (s0 === peg$FAILED) {\n                s0 = peg$currPos;\n                s1 = peg$parseMQLGeneric();\n                if (s1 !== peg$FAILED) {\n                  peg$reportedPos = s0;\n                  s1 = peg$c15(s1);\n                }\n                s0 = s1;\n              }\n            }\n          }\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parseMQLValue() {\n      var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n      s0 = peg$currPos;\n      s1 = peg$parseMQLOpen();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseWhiteSpace();\n        if (s2 === peg$FAILED) {\n          s2 = peg$c2;\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseValue();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parseWhiteSpace();\n            if (s4 === peg$FAILED) {\n              s4 = peg$c2;\n            }\n            if (s4 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 40) {\n                s5 = peg$c16;\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c17); }\n              }\n              if (s5 !== peg$FAILED) {\n                s6 = peg$parseWhiteSpace();\n                if (s6 === peg$FAILED) {\n                  s6 = peg$c2;\n                }\n                if (s6 !== peg$FAILED) {\n                  s7 = peg$parseQuotedIdentifier();\n                  if (s7 !== peg$FAILED) {\n                    s8 = peg$parseWhiteSpace();\n                    if (s8 === peg$FAILED) {\n                      s8 = peg$c2;\n                    }\n                    if (s8 !== peg$FAILED) {\n                      if (input.charCodeAt(peg$currPos) === 41) {\n                        s9 = peg$c18;\n                        peg$currPos++;\n                      } else {\n                        s9 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c19); }\n                      }\n                      if (s9 !== peg$FAILED) {\n                        s10 = peg$parseWhiteSpace();\n                        if (s10 === peg$FAILED) {\n                          s10 = peg$c2;\n                        }\n                        if (s10 !== peg$FAILED) {\n                          s11 = peg$parseMQLClose();\n                          if (s11 !== peg$FAILED) {\n                            peg$reportedPos = s0;\n                            s1 = peg$c20(s7);\n                            s0 = s1;\n                          } else {\n                            peg$currPos = s0;\n                            s0 = peg$c0;\n                          }\n                        } else {\n                          peg$currPos = s0;\n                          s0 = peg$c0;\n                        }\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$c0;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$c0;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseMQLLiteral() {\n      var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n      s0 = peg$currPos;\n      s1 = peg$parseMQLOpen();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseWhiteSpace();\n        if (s2 === peg$FAILED) {\n          s2 = peg$c2;\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseLiteral();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parseWhiteSpace();\n            if (s4 === peg$FAILED) {\n              s4 = peg$c2;\n            }\n            if (s4 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 40) {\n                s5 = peg$c16;\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c17); }\n              }\n              if (s5 !== peg$FAILED) {\n                s6 = peg$parseWhiteSpace();\n                if (s6 === peg$FAILED) {\n                  s6 = peg$c2;\n                }\n                if (s6 !== peg$FAILED) {\n                  s7 = peg$parseQuotedIdentifier();\n                  if (s7 !== peg$FAILED) {\n                    s8 = peg$parseWhiteSpace();\n                    if (s8 === peg$FAILED) {\n                      s8 = peg$c2;\n                    }\n                    if (s8 !== peg$FAILED) {\n                      if (input.charCodeAt(peg$currPos) === 41) {\n                        s9 = peg$c18;\n                        peg$currPos++;\n                      } else {\n                        s9 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c19); }\n                      }\n                      if (s9 !== peg$FAILED) {\n                        s10 = peg$parseWhiteSpace();\n                        if (s10 === peg$FAILED) {\n                          s10 = peg$c2;\n                        }\n                        if (s10 !== peg$FAILED) {\n                          s11 = peg$parseMQLClose();\n                          if (s11 !== peg$FAILED) {\n                            peg$reportedPos = s0;\n                            s1 = peg$c21(s7);\n                            s0 = s1;\n                          } else {\n                            peg$currPos = s0;\n                            s0 = peg$c0;\n                          }\n                        } else {\n                          peg$currPos = s0;\n                          s0 = peg$c0;\n                        }\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$c0;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$c0;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseMQLLoopControl() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      s1 = peg$parseMQLOpen();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseWhiteSpace();\n        if (s2 === peg$FAILED) {\n          s2 = peg$c2;\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseMQLLoopFunction();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parseWhiteSpace();\n            if (s4 === peg$FAILED) {\n              s4 = peg$c2;\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parseMQLClose();\n              if (s5 !== peg$FAILED) {\n                peg$reportedPos = s0;\n                s1 = peg$c22(s3);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseMQLRawMQLCondition() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      s1 = peg$parseMQLOpen();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseWhiteSpace();\n        if (s2 === peg$FAILED) {\n          s2 = peg$c2;\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseMQLCondition();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parseWhiteSpace();\n            if (s4 === peg$FAILED) {\n              s4 = peg$c2;\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parseMQLClose();\n              if (s5 !== peg$FAILED) {\n                peg$reportedPos = s0;\n                s1 = peg$c23(s3);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseMQLControlStatement() {\n      var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n      s0 = peg$currPos;\n      s1 = peg$parseMQLIf();\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$currPos;\n        s4 = peg$currPos;\n        peg$silentFails++;\n        s5 = peg$parseMQLElse();\n        if (s5 === peg$FAILED) {\n          s5 = peg$parseMQLElseIf();\n          if (s5 === peg$FAILED) {\n            s5 = peg$parseMQLEndIf();\n          }\n        }\n        peg$silentFails--;\n        if (s5 === peg$FAILED) {\n          s4 = peg$c24;\n        } else {\n          peg$currPos = s4;\n          s4 = peg$c0;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parseSourceElement();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$c0;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$c0;\n        }\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$currPos;\n          s4 = peg$currPos;\n          peg$silentFails++;\n          s5 = peg$parseMQLElse();\n          if (s5 === peg$FAILED) {\n            s5 = peg$parseMQLElseIf();\n            if (s5 === peg$FAILED) {\n              s5 = peg$parseMQLEndIf();\n            }\n          }\n          peg$silentFails--;\n          if (s5 === peg$FAILED) {\n            s4 = peg$c24;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$c0;\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseSourceElement();\n            if (s5 !== peg$FAILED) {\n              s4 = [s4, s5];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$c0;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$c0;\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseMQLEndIf();\n          if (s3 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c25(s1, s2);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parseMQLIf();\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          s3 = peg$currPos;\n          s4 = peg$currPos;\n          peg$silentFails++;\n          s5 = peg$parseMQLElse();\n          if (s5 === peg$FAILED) {\n            s5 = peg$parseMQLElseIf();\n            if (s5 === peg$FAILED) {\n              s5 = peg$parseMQLEndIf();\n            }\n          }\n          peg$silentFails--;\n          if (s5 === peg$FAILED) {\n            s4 = peg$c24;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$c0;\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseSourceElement();\n            if (s5 !== peg$FAILED) {\n              s4 = [s4, s5];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$c0;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$c0;\n          }\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$currPos;\n            s4 = peg$currPos;\n            peg$silentFails++;\n            s5 = peg$parseMQLElse();\n            if (s5 === peg$FAILED) {\n              s5 = peg$parseMQLElseIf();\n              if (s5 === peg$FAILED) {\n                s5 = peg$parseMQLEndIf();\n              }\n            }\n            peg$silentFails--;\n            if (s5 === peg$FAILED) {\n              s4 = peg$c24;\n            } else {\n              peg$currPos = s4;\n              s4 = peg$c0;\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parseSourceElement();\n              if (s5 !== peg$FAILED) {\n                s4 = [s4, s5];\n                s3 = s4;\n              } else {\n                peg$currPos = s3;\n                s3 = peg$c0;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$c0;\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parseMQLElse();\n            if (s3 !== peg$FAILED) {\n              s4 = [];\n              s5 = peg$currPos;\n              s6 = peg$currPos;\n              peg$silentFails++;\n              s7 = peg$parseMQLElseIf();\n              if (s7 === peg$FAILED) {\n                s7 = peg$parseMQLEndIf();\n              }\n              peg$silentFails--;\n              if (s7 === peg$FAILED) {\n                s6 = peg$c24;\n              } else {\n                peg$currPos = s6;\n                s6 = peg$c0;\n              }\n              if (s6 !== peg$FAILED) {\n                s7 = peg$parseSourceElement();\n                if (s7 !== peg$FAILED) {\n                  s6 = [s6, s7];\n                  s5 = s6;\n                } else {\n                  peg$currPos = s5;\n                  s5 = peg$c0;\n                }\n              } else {\n                peg$currPos = s5;\n                s5 = peg$c0;\n              }\n              while (s5 !== peg$FAILED) {\n                s4.push(s5);\n                s5 = peg$currPos;\n                s6 = peg$currPos;\n                peg$silentFails++;\n                s7 = peg$parseMQLElseIf();\n                if (s7 === peg$FAILED) {\n                  s7 = peg$parseMQLEndIf();\n                }\n                peg$silentFails--;\n                if (s7 === peg$FAILED) {\n                  s6 = peg$c24;\n                } else {\n                  peg$currPos = s6;\n                  s6 = peg$c0;\n                }\n                if (s6 !== peg$FAILED) {\n                  s7 = peg$parseSourceElement();\n                  if (s7 !== peg$FAILED) {\n                    s6 = [s6, s7];\n                    s5 = s6;\n                  } else {\n                    peg$currPos = s5;\n                    s5 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s5;\n                  s5 = peg$c0;\n                }\n              }\n              if (s4 !== peg$FAILED) {\n                s5 = peg$parseMQLEndIf();\n                if (s5 !== peg$FAILED) {\n                  peg$reportedPos = s0;\n                  s1 = peg$c26(s1, s2, s4);\n                  s0 = s1;\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parseMQLIf();\n          if (s1 !== peg$FAILED) {\n            s2 = [];\n            s3 = peg$currPos;\n            s4 = peg$currPos;\n            peg$silentFails++;\n            s5 = peg$parseMQLElse();\n            if (s5 === peg$FAILED) {\n              s5 = peg$parseMQLElseIf();\n              if (s5 === peg$FAILED) {\n                s5 = peg$parseMQLEndIf();\n              }\n            }\n            peg$silentFails--;\n            if (s5 === peg$FAILED) {\n              s4 = peg$c24;\n            } else {\n              peg$currPos = s4;\n              s4 = peg$c0;\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parseSourceElement();\n              if (s5 !== peg$FAILED) {\n                s4 = [s4, s5];\n                s3 = s4;\n              } else {\n                peg$currPos = s3;\n                s3 = peg$c0;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$c0;\n            }\n            while (s3 !== peg$FAILED) {\n              s2.push(s3);\n              s3 = peg$currPos;\n              s4 = peg$currPos;\n              peg$silentFails++;\n              s5 = peg$parseMQLElse();\n              if (s5 === peg$FAILED) {\n                s5 = peg$parseMQLElseIf();\n                if (s5 === peg$FAILED) {\n                  s5 = peg$parseMQLEndIf();\n                }\n              }\n              peg$silentFails--;\n              if (s5 === peg$FAILED) {\n                s4 = peg$c24;\n              } else {\n                peg$currPos = s4;\n                s4 = peg$c0;\n              }\n              if (s4 !== peg$FAILED) {\n                s5 = peg$parseSourceElement();\n                if (s5 !== peg$FAILED) {\n                  s4 = [s4, s5];\n                  s3 = s4;\n                } else {\n                  peg$currPos = s3;\n                  s3 = peg$c0;\n                }\n              } else {\n                peg$currPos = s3;\n                s3 = peg$c0;\n              }\n            }\n            if (s2 !== peg$FAILED) {\n              s3 = [];\n              s4 = peg$currPos;\n              s5 = peg$parseMQLElseIf();\n              if (s5 !== peg$FAILED) {\n                s6 = [];\n                s7 = peg$currPos;\n                s8 = peg$currPos;\n                peg$silentFails++;\n                s9 = peg$parseMQLElseIf();\n                if (s9 === peg$FAILED) {\n                  s9 = peg$parseMQLElse();\n                  if (s9 === peg$FAILED) {\n                    s9 = peg$parseMQLEndIf();\n                  }\n                }\n                peg$silentFails--;\n                if (s9 === peg$FAILED) {\n                  s8 = peg$c24;\n                } else {\n                  peg$currPos = s8;\n                  s8 = peg$c0;\n                }\n                if (s8 !== peg$FAILED) {\n                  s9 = peg$parseSourceElement();\n                  if (s9 !== peg$FAILED) {\n                    s8 = [s8, s9];\n                    s7 = s8;\n                  } else {\n                    peg$currPos = s7;\n                    s7 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s7;\n                  s7 = peg$c0;\n                }\n                while (s7 !== peg$FAILED) {\n                  s6.push(s7);\n                  s7 = peg$currPos;\n                  s8 = peg$currPos;\n                  peg$silentFails++;\n                  s9 = peg$parseMQLElseIf();\n                  if (s9 === peg$FAILED) {\n                    s9 = peg$parseMQLElse();\n                    if (s9 === peg$FAILED) {\n                      s9 = peg$parseMQLEndIf();\n                    }\n                  }\n                  peg$silentFails--;\n                  if (s9 === peg$FAILED) {\n                    s8 = peg$c24;\n                  } else {\n                    peg$currPos = s8;\n                    s8 = peg$c0;\n                  }\n                  if (s8 !== peg$FAILED) {\n                    s9 = peg$parseSourceElement();\n                    if (s9 !== peg$FAILED) {\n                      s8 = [s8, s9];\n                      s7 = s8;\n                    } else {\n                      peg$currPos = s7;\n                      s7 = peg$c0;\n                    }\n                  } else {\n                    peg$currPos = s7;\n                    s7 = peg$c0;\n                  }\n                }\n                if (s6 !== peg$FAILED) {\n                  s5 = [s5, s6];\n                  s4 = s5;\n                } else {\n                  peg$currPos = s4;\n                  s4 = peg$c0;\n                }\n              } else {\n                peg$currPos = s4;\n                s4 = peg$c0;\n              }\n              while (s4 !== peg$FAILED) {\n                s3.push(s4);\n                s4 = peg$currPos;\n                s5 = peg$parseMQLElseIf();\n                if (s5 !== peg$FAILED) {\n                  s6 = [];\n                  s7 = peg$currPos;\n                  s8 = peg$currPos;\n                  peg$silentFails++;\n                  s9 = peg$parseMQLElseIf();\n                  if (s9 === peg$FAILED) {\n                    s9 = peg$parseMQLElse();\n                    if (s9 === peg$FAILED) {\n                      s9 = peg$parseMQLEndIf();\n                    }\n                  }\n                  peg$silentFails--;\n                  if (s9 === peg$FAILED) {\n                    s8 = peg$c24;\n                  } else {\n                    peg$currPos = s8;\n                    s8 = peg$c0;\n                  }\n                  if (s8 !== peg$FAILED) {\n                    s9 = peg$parseSourceElement();\n                    if (s9 !== peg$FAILED) {\n                      s8 = [s8, s9];\n                      s7 = s8;\n                    } else {\n                      peg$currPos = s7;\n                      s7 = peg$c0;\n                    }\n                  } else {\n                    peg$currPos = s7;\n                    s7 = peg$c0;\n                  }\n                  while (s7 !== peg$FAILED) {\n                    s6.push(s7);\n                    s7 = peg$currPos;\n                    s8 = peg$currPos;\n                    peg$silentFails++;\n                    s9 = peg$parseMQLElseIf();\n                    if (s9 === peg$FAILED) {\n                      s9 = peg$parseMQLElse();\n                      if (s9 === peg$FAILED) {\n                        s9 = peg$parseMQLEndIf();\n                      }\n                    }\n                    peg$silentFails--;\n                    if (s9 === peg$FAILED) {\n                      s8 = peg$c24;\n                    } else {\n                      peg$currPos = s8;\n                      s8 = peg$c0;\n                    }\n                    if (s8 !== peg$FAILED) {\n                      s9 = peg$parseSourceElement();\n                      if (s9 !== peg$FAILED) {\n                        s8 = [s8, s9];\n                        s7 = s8;\n                      } else {\n                        peg$currPos = s7;\n                        s7 = peg$c0;\n                      }\n                    } else {\n                      peg$currPos = s7;\n                      s7 = peg$c0;\n                    }\n                  }\n                  if (s6 !== peg$FAILED) {\n                    s5 = [s5, s6];\n                    s4 = s5;\n                  } else {\n                    peg$currPos = s4;\n                    s4 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s4;\n                  s4 = peg$c0;\n                }\n              }\n              if (s3 !== peg$FAILED) {\n                s4 = peg$parseMQLElse();\n                if (s4 !== peg$FAILED) {\n                  s5 = [];\n                  s6 = peg$currPos;\n                  s7 = peg$currPos;\n                  peg$silentFails++;\n                  s8 = peg$parseMQLEndIf();\n                  peg$silentFails--;\n                  if (s8 === peg$FAILED) {\n                    s7 = peg$c24;\n                  } else {\n                    peg$currPos = s7;\n                    s7 = peg$c0;\n                  }\n                  if (s7 !== peg$FAILED) {\n                    s8 = peg$parseSourceElement();\n                    if (s8 !== peg$FAILED) {\n                      s7 = [s7, s8];\n                      s6 = s7;\n                    } else {\n                      peg$currPos = s6;\n                      s6 = peg$c0;\n                    }\n                  } else {\n                    peg$currPos = s6;\n                    s6 = peg$c0;\n                  }\n                  while (s6 !== peg$FAILED) {\n                    s5.push(s6);\n                    s6 = peg$currPos;\n                    s7 = peg$currPos;\n                    peg$silentFails++;\n                    s8 = peg$parseMQLEndIf();\n                    peg$silentFails--;\n                    if (s8 === peg$FAILED) {\n                      s7 = peg$c24;\n                    } else {\n                      peg$currPos = s7;\n                      s7 = peg$c0;\n                    }\n                    if (s7 !== peg$FAILED) {\n                      s8 = peg$parseSourceElement();\n                      if (s8 !== peg$FAILED) {\n                        s7 = [s7, s8];\n                        s6 = s7;\n                      } else {\n                        peg$currPos = s6;\n                        s6 = peg$c0;\n                      }\n                    } else {\n                      peg$currPos = s6;\n                      s6 = peg$c0;\n                    }\n                  }\n                  if (s5 !== peg$FAILED) {\n                    s6 = peg$parseMQLEndIf();\n                    if (s6 !== peg$FAILED) {\n                      peg$reportedPos = s0;\n                      s1 = peg$c27(s1, s2, s3, s5);\n                      s0 = s1;\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$c0;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n          if (s0 === peg$FAILED) {\n            s0 = peg$currPos;\n            s1 = peg$parseForEachWrapper();\n            if (s1 !== peg$FAILED) {\n              peg$reportedPos = s0;\n              s1 = peg$c28(s1);\n            }\n            s0 = s1;\n          }\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parseMQLGeneric() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      s1 = peg$parseMQLOpen();\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$currPos;\n        s4 = peg$currPos;\n        peg$silentFails++;\n        s5 = peg$parseMQLClose();\n        peg$silentFails--;\n        if (s5 === peg$FAILED) {\n          s4 = peg$c24;\n        } else {\n          peg$currPos = s4;\n          s4 = peg$c0;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parseSourceCharacter();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$c0;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$c0;\n        }\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$currPos;\n          s4 = peg$currPos;\n          peg$silentFails++;\n          s5 = peg$parseMQLClose();\n          peg$silentFails--;\n          if (s5 === peg$FAILED) {\n            s4 = peg$c24;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$c0;\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseSourceCharacter();\n            if (s5 !== peg$FAILED) {\n              s4 = [s4, s5];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$c0;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$c0;\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseMQLClose();\n          if (s3 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c29(s1, s2, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseMQLCondition() {\n      var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\n\n      s0 = peg$currPos;\n      s1 = peg$parseNot();\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$parseWhiteSpace();\n        if (s3 !== peg$FAILED) {\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$parseWhiteSpace();\n          }\n        } else {\n          s2 = peg$c0;\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseExists();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parseWhiteSpace();\n            if (s4 === peg$FAILED) {\n              s4 = peg$c2;\n            }\n            if (s4 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 40) {\n                s5 = peg$c16;\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c17); }\n              }\n              if (s5 !== peg$FAILED) {\n                s6 = peg$parseWhiteSpace();\n                if (s6 === peg$FAILED) {\n                  s6 = peg$c2;\n                }\n                if (s6 !== peg$FAILED) {\n                  s7 = peg$parseQuotedIdentifier();\n                  if (s7 !== peg$FAILED) {\n                    s8 = peg$parseWhiteSpace();\n                    if (s8 === peg$FAILED) {\n                      s8 = peg$c2;\n                    }\n                    if (s8 !== peg$FAILED) {\n                      if (input.charCodeAt(peg$currPos) === 41) {\n                        s9 = peg$c18;\n                        peg$currPos++;\n                      } else {\n                        s9 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c19); }\n                      }\n                      if (s9 !== peg$FAILED) {\n                        peg$reportedPos = s0;\n                        s1 = peg$c30(s7);\n                        s0 = s1;\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$c0;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$c0;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parseExists();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parseWhiteSpace();\n          if (s2 === peg$FAILED) {\n            s2 = peg$c2;\n          }\n          if (s2 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 40) {\n              s3 = peg$c16;\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c17); }\n            }\n            if (s3 !== peg$FAILED) {\n              s4 = peg$parseWhiteSpace();\n              if (s4 === peg$FAILED) {\n                s4 = peg$c2;\n              }\n              if (s4 !== peg$FAILED) {\n                s5 = peg$parseQuotedIdentifier();\n                if (s5 !== peg$FAILED) {\n                  s6 = peg$parseWhiteSpace();\n                  if (s6 === peg$FAILED) {\n                    s6 = peg$c2;\n                  }\n                  if (s6 !== peg$FAILED) {\n                    if (input.charCodeAt(peg$currPos) === 41) {\n                      s7 = peg$c18;\n                      peg$currPos++;\n                    } else {\n                      s7 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c19); }\n                    }\n                    if (s7 !== peg$FAILED) {\n                      peg$reportedPos = s0;\n                      s1 = peg$c31(s5);\n                      s0 = s1;\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$c0;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parseReExists();\n          if (s1 !== peg$FAILED) {\n            s2 = peg$parseWhiteSpace();\n            if (s2 === peg$FAILED) {\n              s2 = peg$c2;\n            }\n            if (s2 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 40) {\n                s3 = peg$c16;\n                peg$currPos++;\n              } else {\n                s3 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c17); }\n              }\n              if (s3 !== peg$FAILED) {\n                s4 = peg$parseWhiteSpace();\n                if (s4 === peg$FAILED) {\n                  s4 = peg$c2;\n                }\n                if (s4 !== peg$FAILED) {\n                  s5 = peg$parseRegExp();\n                  if (s5 !== peg$FAILED) {\n                    s6 = peg$parseWhiteSpace();\n                    if (s6 === peg$FAILED) {\n                      s6 = peg$c2;\n                    }\n                    if (s6 !== peg$FAILED) {\n                      if (input.charCodeAt(peg$currPos) === 41) {\n                        s7 = peg$c18;\n                        peg$currPos++;\n                      } else {\n                        s7 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c19); }\n                      }\n                      if (s7 !== peg$FAILED) {\n                        peg$reportedPos = s0;\n                        s1 = peg$c32(s5);\n                        s0 = s1;\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$c0;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$c0;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n          if (s0 === peg$FAILED) {\n            s0 = peg$currPos;\n            s1 = peg$parseIsFirst();\n            if (s1 !== peg$FAILED) {\n              s2 = peg$parseWhiteSpace();\n              if (s2 === peg$FAILED) {\n                s2 = peg$c2;\n              }\n              if (s2 !== peg$FAILED) {\n                if (input.charCodeAt(peg$currPos) === 40) {\n                  s3 = peg$c16;\n                  peg$currPos++;\n                } else {\n                  s3 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c17); }\n                }\n                if (s3 !== peg$FAILED) {\n                  s4 = peg$parseWhiteSpace();\n                  if (s4 === peg$FAILED) {\n                    s4 = peg$c2;\n                  }\n                  if (s4 !== peg$FAILED) {\n                    s5 = peg$parseQuotedIdentifier();\n                    if (s5 !== peg$FAILED) {\n                      s6 = peg$parseWhiteSpace();\n                      if (s6 === peg$FAILED) {\n                        s6 = peg$c2;\n                      }\n                      if (s6 !== peg$FAILED) {\n                        if (input.charCodeAt(peg$currPos) === 41) {\n                          s7 = peg$c18;\n                          peg$currPos++;\n                        } else {\n                          s7 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$c19); }\n                        }\n                        if (s7 !== peg$FAILED) {\n                          peg$reportedPos = s0;\n                          s1 = peg$c33(s5);\n                          s0 = s1;\n                        } else {\n                          peg$currPos = s0;\n                          s0 = peg$c0;\n                        }\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$c0;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$c0;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n            if (s0 === peg$FAILED) {\n              s0 = peg$currPos;\n              s1 = peg$parseIsLast();\n              if (s1 !== peg$FAILED) {\n                s2 = peg$parseWhiteSpace();\n                if (s2 === peg$FAILED) {\n                  s2 = peg$c2;\n                }\n                if (s2 !== peg$FAILED) {\n                  if (input.charCodeAt(peg$currPos) === 40) {\n                    s3 = peg$c16;\n                    peg$currPos++;\n                  } else {\n                    s3 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c17); }\n                  }\n                  if (s3 !== peg$FAILED) {\n                    s4 = peg$parseWhiteSpace();\n                    if (s4 === peg$FAILED) {\n                      s4 = peg$c2;\n                    }\n                    if (s4 !== peg$FAILED) {\n                      s5 = peg$parseQuotedIdentifier();\n                      if (s5 !== peg$FAILED) {\n                        s6 = peg$parseWhiteSpace();\n                        if (s6 === peg$FAILED) {\n                          s6 = peg$c2;\n                        }\n                        if (s6 !== peg$FAILED) {\n                          if (input.charCodeAt(peg$currPos) === 41) {\n                            s7 = peg$c18;\n                            peg$currPos++;\n                          } else {\n                            s7 = peg$FAILED;\n                            if (peg$silentFails === 0) { peg$fail(peg$c19); }\n                          }\n                          if (s7 !== peg$FAILED) {\n                            peg$reportedPos = s0;\n                            s1 = peg$c34(s5);\n                            s0 = s1;\n                          } else {\n                            peg$currPos = s0;\n                            s0 = peg$c0;\n                          }\n                        } else {\n                          peg$currPos = s0;\n                          s0 = peg$c0;\n                        }\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$c0;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$c0;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            }\n          }\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parseMQLIf() {\n      var s0, s1, s2, s3, s4, s5, s6, s7;\n\n      s0 = peg$currPos;\n      s1 = peg$parseMQLOpen();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseWhiteSpace();\n        if (s2 === peg$FAILED) {\n          s2 = peg$c2;\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseIf();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parseWhiteSpace();\n            if (s4 === peg$FAILED) {\n              s4 = peg$c2;\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parseMQLCondition();\n              if (s5 !== peg$FAILED) {\n                s6 = peg$parseWhiteSpace();\n                if (s6 === peg$FAILED) {\n                  s6 = peg$c2;\n                }\n                if (s6 !== peg$FAILED) {\n                  s7 = peg$parseMQLClose();\n                  if (s7 !== peg$FAILED) {\n                    peg$reportedPos = s0;\n                    s1 = peg$c23(s5);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseMQLElseIf() {\n      var s0, s1, s2, s3, s4, s5, s6, s7;\n\n      s0 = peg$currPos;\n      s1 = peg$parseMQLOpen();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseWhiteSpace();\n        if (s2 === peg$FAILED) {\n          s2 = peg$c2;\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseElseIf();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parseWhiteSpace();\n            if (s4 === peg$FAILED) {\n              s4 = peg$c2;\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parseMQLCondition();\n              if (s5 !== peg$FAILED) {\n                s6 = peg$parseWhiteSpace();\n                if (s6 === peg$FAILED) {\n                  s6 = peg$c2;\n                }\n                if (s6 !== peg$FAILED) {\n                  s7 = peg$parseMQLClose();\n                  if (s7 !== peg$FAILED) {\n                    peg$reportedPos = s0;\n                    s1 = peg$c23(s5);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseMQLElse() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      s1 = peg$parseMQLOpen();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseWhiteSpace();\n        if (s2 === peg$FAILED) {\n          s2 = peg$c2;\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseElse();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parseWhiteSpace();\n            if (s4 === peg$FAILED) {\n              s4 = peg$c2;\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parseMQLClose();\n              if (s5 !== peg$FAILED) {\n                s1 = [s1, s2, s3, s4, s5];\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseMQLEndIf() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      s1 = peg$parseMQLOpen();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseWhiteSpace();\n        if (s2 === peg$FAILED) {\n          s2 = peg$c2;\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseEndIf();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parseWhiteSpace();\n            if (s4 === peg$FAILED) {\n              s4 = peg$c2;\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parseMQLClose();\n              if (s5 !== peg$FAILED) {\n                s1 = [s1, s2, s3, s4, s5];\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseMQLForeach() {\n      var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n      s0 = peg$currPos;\n      s1 = peg$parseMQLOpen();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseWhiteSpace();\n        if (s2 === peg$FAILED) {\n          s2 = peg$c2;\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseForeach();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parseWhiteSpace();\n            if (s4 === peg$FAILED) {\n              s4 = peg$c2;\n            }\n            if (s4 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 40) {\n                s5 = peg$c16;\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c17); }\n              }\n              if (s5 !== peg$FAILED) {\n                s6 = peg$parseWhiteSpace();\n                if (s6 === peg$FAILED) {\n                  s6 = peg$c2;\n                }\n                if (s6 !== peg$FAILED) {\n                  s7 = peg$parseQuotedIdentifier();\n                  if (s7 !== peg$FAILED) {\n                    s8 = peg$parseWhiteSpace();\n                    if (s8 === peg$FAILED) {\n                      s8 = peg$c2;\n                    }\n                    if (s8 !== peg$FAILED) {\n                      if (input.charCodeAt(peg$currPos) === 41) {\n                        s9 = peg$c18;\n                        peg$currPos++;\n                      } else {\n                        s9 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c19); }\n                      }\n                      if (s9 !== peg$FAILED) {\n                        s10 = peg$parseWhiteSpace();\n                        if (s10 === peg$FAILED) {\n                          s10 = peg$c2;\n                        }\n                        if (s10 !== peg$FAILED) {\n                          s11 = peg$parseMQLClose();\n                          if (s11 !== peg$FAILED) {\n                            peg$reportedPos = s0;\n                            s1 = peg$c35(s7);\n                            s0 = s1;\n                          } else {\n                            peg$currPos = s0;\n                            s0 = peg$c0;\n                          }\n                        } else {\n                          peg$currPos = s0;\n                          s0 = peg$c0;\n                        }\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$c0;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$c0;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseMQLEndForeach() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      s1 = peg$parseMQLOpen();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseWhiteSpace();\n        if (s2 === peg$FAILED) {\n          s2 = peg$c2;\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseEndForeach();\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parseWhiteSpace();\n            if (s4 === peg$FAILED) {\n              s4 = peg$c2;\n            }\n            if (s4 !== peg$FAILED) {\n              s5 = peg$parseMQLClose();\n              if (s5 !== peg$FAILED) {\n                peg$reportedPos = s0;\n                s1 = peg$c36();\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseForEachWrapper() {\n      var s0, s1, s2, s3, s4, s5, s6;\n\n      s0 = peg$currPos;\n      s1 = peg$parseMQLForeach();\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$currPos;\n        s4 = peg$currPos;\n        peg$silentFails++;\n        s5 = peg$parseMQLEndForeach();\n        peg$silentFails--;\n        if (s5 === peg$FAILED) {\n          s4 = peg$c24;\n        } else {\n          peg$currPos = s4;\n          s4 = peg$c0;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parseForEachWrapper();\n          if (s5 === peg$FAILED) {\n            s5 = peg$c2;\n          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parseSourceCharacter();\n            if (s6 !== peg$FAILED) {\n              s4 = [s4, s5, s6];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$c0;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$c0;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$c0;\n        }\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$currPos;\n          s4 = peg$currPos;\n          peg$silentFails++;\n          s5 = peg$parseMQLEndForeach();\n          peg$silentFails--;\n          if (s5 === peg$FAILED) {\n            s4 = peg$c24;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$c0;\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseForEachWrapper();\n            if (s5 === peg$FAILED) {\n              s5 = peg$c2;\n            }\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parseSourceCharacter();\n              if (s6 !== peg$FAILED) {\n                s4 = [s4, s5, s6];\n                s3 = s4;\n              } else {\n                peg$currPos = s3;\n                s3 = peg$c0;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$c0;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$c0;\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseMQLEndForeach();\n          if (s3 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c37(s1, s2, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseMQLLoopFunction() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$currPos;\n      s1 = peg$parseContinue();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseWhiteSpace();\n        if (s2 === peg$FAILED) {\n          s2 = peg$c2;\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseMQLLoopCount();\n          if (s3 === peg$FAILED) {\n            s3 = peg$c2;\n          }\n          if (s3 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c38(s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parseBreak();\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parseWhiteSpace();\n          if (s2 === peg$FAILED) {\n            s2 = peg$c2;\n          }\n          if (s2 !== peg$FAILED) {\n            s3 = peg$parseMQLLoopCount();\n            if (s3 === peg$FAILED) {\n              s3 = peg$c2;\n            }\n            if (s3 !== peg$FAILED) {\n              peg$reportedPos = s0;\n              s1 = peg$c39(s3);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parseMQLLoopCount() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 40) {\n        s1 = peg$c16;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c17); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseWhiteSpace();\n        if (s2 === peg$FAILED) {\n          s2 = peg$c2;\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = [];\n          s4 = peg$parseDecimalDigit();\n          while (s4 !== peg$FAILED) {\n            s3.push(s4);\n            s4 = peg$parseDecimalDigit();\n          }\n          if (s3 !== peg$FAILED) {\n            s4 = peg$parseWhiteSpace();\n            if (s4 === peg$FAILED) {\n              s4 = peg$c2;\n            }\n            if (s4 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 41) {\n                s5 = peg$c18;\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c19); }\n              }\n              if (s5 !== peg$FAILED) {\n                peg$reportedPos = s0;\n                s1 = peg$c22(s3);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseMQLOpen() {\n      var s0;\n\n      if (input.substr(peg$currPos, 2) === peg$c40) {\n        s0 = peg$c40;\n        peg$currPos += 2;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c41); }\n      }\n\n      return s0;\n    }\n\n    function peg$parseMQLClose() {\n      var s0;\n\n      if (input.substr(peg$currPos, 2) === peg$c42) {\n        s0 = peg$c42;\n        peg$currPos += 2;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c43); }\n      }\n\n      return s0;\n    }\n\n    function peg$parseValue() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      if (peg$c44.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c45); }\n      }\n      if (s1 !== peg$FAILED) {\n        if (peg$c46.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c47); }\n        }\n        if (s2 !== peg$FAILED) {\n          if (peg$c48.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c49); }\n          }\n          if (s3 !== peg$FAILED) {\n            if (peg$c50.test(input.charAt(peg$currPos))) {\n              s4 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c51); }\n            }\n            if (s4 !== peg$FAILED) {\n              if (peg$c52.test(input.charAt(peg$currPos))) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c53); }\n              }\n              if (s5 !== peg$FAILED) {\n                s1 = [s1, s2, s3, s4, s5];\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseLiteral() {\n      var s0, s1, s2, s3, s4, s5, s6, s7;\n\n      s0 = peg$currPos;\n      if (peg$c48.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c49); }\n      }\n      if (s1 !== peg$FAILED) {\n        if (peg$c54.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c55); }\n        }\n        if (s2 !== peg$FAILED) {\n          if (peg$c56.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c57); }\n          }\n          if (s3 !== peg$FAILED) {\n            if (peg$c52.test(input.charAt(peg$currPos))) {\n              s4 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c53); }\n            }\n            if (s4 !== peg$FAILED) {\n              if (peg$c58.test(input.charAt(peg$currPos))) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c59); }\n              }\n              if (s5 !== peg$FAILED) {\n                if (peg$c46.test(input.charAt(peg$currPos))) {\n                  s6 = input.charAt(peg$currPos);\n                  peg$currPos++;\n                } else {\n                  s6 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c47); }\n                }\n                if (s6 !== peg$FAILED) {\n                  if (peg$c48.test(input.charAt(peg$currPos))) {\n                    s7 = input.charAt(peg$currPos);\n                    peg$currPos++;\n                  } else {\n                    s7 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c49); }\n                  }\n                  if (s7 !== peg$FAILED) {\n                    s1 = [s1, s2, s3, s4, s5, s6, s7];\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseIf() {\n      var s0, s1, s2;\n\n      s0 = peg$currPos;\n      if (peg$c54.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c55); }\n      }\n      if (s1 !== peg$FAILED) {\n        if (peg$c60.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c61); }\n        }\n        if (s2 !== peg$FAILED) {\n          s1 = [s1, s2];\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseElseIf() {\n      var s0, s1, s2, s3, s4, s5, s6;\n\n      s0 = peg$currPos;\n      if (peg$c52.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c53); }\n      }\n      if (s1 !== peg$FAILED) {\n        if (peg$c48.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c49); }\n        }\n        if (s2 !== peg$FAILED) {\n          if (peg$c62.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c63); }\n          }\n          if (s3 !== peg$FAILED) {\n            if (peg$c52.test(input.charAt(peg$currPos))) {\n              s4 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c53); }\n            }\n            if (s4 !== peg$FAILED) {\n              if (peg$c54.test(input.charAt(peg$currPos))) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c55); }\n              }\n              if (s5 !== peg$FAILED) {\n                if (peg$c60.test(input.charAt(peg$currPos))) {\n                  s6 = input.charAt(peg$currPos);\n                  peg$currPos++;\n                } else {\n                  s6 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c61); }\n                }\n                if (s6 !== peg$FAILED) {\n                  s1 = [s1, s2, s3, s4, s5, s6];\n                  s0 = s1;\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseElse() {\n      var s0, s1, s2, s3, s4;\n\n      s0 = peg$currPos;\n      if (peg$c52.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c53); }\n      }\n      if (s1 !== peg$FAILED) {\n        if (peg$c48.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c49); }\n        }\n        if (s2 !== peg$FAILED) {\n          if (peg$c62.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c63); }\n          }\n          if (s3 !== peg$FAILED) {\n            if (peg$c52.test(input.charAt(peg$currPos))) {\n              s4 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c53); }\n            }\n            if (s4 !== peg$FAILED) {\n              s1 = [s1, s2, s3, s4];\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseEndIf() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      if (peg$c52.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c53); }\n      }\n      if (s1 !== peg$FAILED) {\n        if (peg$c64.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c65); }\n        }\n        if (s2 !== peg$FAILED) {\n          if (peg$c66.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c67); }\n          }\n          if (s3 !== peg$FAILED) {\n            if (peg$c54.test(input.charAt(peg$currPos))) {\n              s4 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c55); }\n            }\n            if (s4 !== peg$FAILED) {\n              if (peg$c60.test(input.charAt(peg$currPos))) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c61); }\n              }\n              if (s5 !== peg$FAILED) {\n                s1 = [s1, s2, s3, s4, s5];\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseNot() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$currPos;\n      if (peg$c64.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c65); }\n      }\n      if (s1 !== peg$FAILED) {\n        if (peg$c68.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c69); }\n        }\n        if (s2 !== peg$FAILED) {\n          if (peg$c56.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c57); }\n          }\n          if (s3 !== peg$FAILED) {\n            s1 = [s1, s2, s3];\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseExists() {\n      var s0, s1, s2, s3, s4, s5, s6;\n\n      s0 = peg$currPos;\n      if (peg$c52.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c53); }\n      }\n      if (s1 !== peg$FAILED) {\n        if (peg$c70.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c71); }\n        }\n        if (s2 !== peg$FAILED) {\n          if (peg$c54.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c55); }\n          }\n          if (s3 !== peg$FAILED) {\n            if (peg$c62.test(input.charAt(peg$currPos))) {\n              s4 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c63); }\n            }\n            if (s4 !== peg$FAILED) {\n              if (peg$c56.test(input.charAt(peg$currPos))) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c57); }\n              }\n              if (s5 !== peg$FAILED) {\n                if (peg$c62.test(input.charAt(peg$currPos))) {\n                  s6 = input.charAt(peg$currPos);\n                  peg$currPos++;\n                } else {\n                  s6 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c63); }\n                }\n                if (s6 !== peg$FAILED) {\n                  s1 = [s1, s2, s3, s4, s5, s6];\n                  s0 = s1;\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseReExists() {\n      var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n      s0 = peg$currPos;\n      if (peg$c58.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c59); }\n      }\n      if (s1 !== peg$FAILED) {\n        if (peg$c52.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c53); }\n        }\n        if (s2 !== peg$FAILED) {\n          if (peg$c52.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c53); }\n          }\n          if (s3 !== peg$FAILED) {\n            if (peg$c70.test(input.charAt(peg$currPos))) {\n              s4 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c71); }\n            }\n            if (s4 !== peg$FAILED) {\n              if (peg$c54.test(input.charAt(peg$currPos))) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c55); }\n              }\n              if (s5 !== peg$FAILED) {\n                if (peg$c62.test(input.charAt(peg$currPos))) {\n                  s6 = input.charAt(peg$currPos);\n                  peg$currPos++;\n                } else {\n                  s6 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c63); }\n                }\n                if (s6 !== peg$FAILED) {\n                  if (peg$c56.test(input.charAt(peg$currPos))) {\n                    s7 = input.charAt(peg$currPos);\n                    peg$currPos++;\n                  } else {\n                    s7 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c57); }\n                  }\n                  if (s7 !== peg$FAILED) {\n                    if (peg$c62.test(input.charAt(peg$currPos))) {\n                      s8 = input.charAt(peg$currPos);\n                      peg$currPos++;\n                    } else {\n                      s8 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c63); }\n                    }\n                    if (s8 !== peg$FAILED) {\n                      s1 = [s1, s2, s3, s4, s5, s6, s7, s8];\n                      s0 = s1;\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$c0;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseIsFirst() {\n      var s0, s1, s2, s3, s4, s5, s6, s7;\n\n      s0 = peg$currPos;\n      if (peg$c54.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c55); }\n      }\n      if (s1 !== peg$FAILED) {\n        if (peg$c62.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c63); }\n        }\n        if (s2 !== peg$FAILED) {\n          if (peg$c60.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c61); }\n          }\n          if (s3 !== peg$FAILED) {\n            if (peg$c54.test(input.charAt(peg$currPos))) {\n              s4 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c55); }\n            }\n            if (s4 !== peg$FAILED) {\n              if (peg$c58.test(input.charAt(peg$currPos))) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c59); }\n              }\n              if (s5 !== peg$FAILED) {\n                if (peg$c62.test(input.charAt(peg$currPos))) {\n                  s6 = input.charAt(peg$currPos);\n                  peg$currPos++;\n                } else {\n                  s6 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c63); }\n                }\n                if (s6 !== peg$FAILED) {\n                  if (peg$c56.test(input.charAt(peg$currPos))) {\n                    s7 = input.charAt(peg$currPos);\n                    peg$currPos++;\n                  } else {\n                    s7 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c57); }\n                  }\n                  if (s7 !== peg$FAILED) {\n                    s1 = [s1, s2, s3, s4, s5, s6, s7];\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseIsLast() {\n      var s0, s1, s2, s3, s4, s5, s6;\n\n      s0 = peg$currPos;\n      if (peg$c54.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c55); }\n      }\n      if (s1 !== peg$FAILED) {\n        if (peg$c62.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c63); }\n        }\n        if (s2 !== peg$FAILED) {\n          if (peg$c48.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c49); }\n          }\n          if (s3 !== peg$FAILED) {\n            if (peg$c46.test(input.charAt(peg$currPos))) {\n              s4 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c47); }\n            }\n            if (s4 !== peg$FAILED) {\n              if (peg$c62.test(input.charAt(peg$currPos))) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c63); }\n              }\n              if (s5 !== peg$FAILED) {\n                if (peg$c56.test(input.charAt(peg$currPos))) {\n                  s6 = input.charAt(peg$currPos);\n                  peg$currPos++;\n                } else {\n                  s6 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c57); }\n                }\n                if (s6 !== peg$FAILED) {\n                  s1 = [s1, s2, s3, s4, s5, s6];\n                  s0 = s1;\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseForeach() {\n      var s0, s1, s2, s3, s4, s5, s6, s7;\n\n      s0 = peg$currPos;\n      if (peg$c60.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c61); }\n      }\n      if (s1 !== peg$FAILED) {\n        if (peg$c68.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c69); }\n        }\n        if (s2 !== peg$FAILED) {\n          if (peg$c58.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c59); }\n          }\n          if (s3 !== peg$FAILED) {\n            if (peg$c52.test(input.charAt(peg$currPos))) {\n              s4 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c53); }\n            }\n            if (s4 !== peg$FAILED) {\n              if (peg$c46.test(input.charAt(peg$currPos))) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c47); }\n              }\n              if (s5 !== peg$FAILED) {\n                if (peg$c72.test(input.charAt(peg$currPos))) {\n                  s6 = input.charAt(peg$currPos);\n                  peg$currPos++;\n                } else {\n                  s6 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c73); }\n                }\n                if (s6 !== peg$FAILED) {\n                  if (peg$c74.test(input.charAt(peg$currPos))) {\n                    s7 = input.charAt(peg$currPos);\n                    peg$currPos++;\n                  } else {\n                    s7 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c75); }\n                  }\n                  if (s7 !== peg$FAILED) {\n                    s1 = [s1, s2, s3, s4, s5, s6, s7];\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseEndForeach() {\n      var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n      s0 = peg$currPos;\n      if (peg$c52.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c53); }\n      }\n      if (s1 !== peg$FAILED) {\n        if (peg$c64.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c65); }\n        }\n        if (s2 !== peg$FAILED) {\n          if (peg$c66.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c67); }\n          }\n          if (s3 !== peg$FAILED) {\n            if (peg$c60.test(input.charAt(peg$currPos))) {\n              s4 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c61); }\n            }\n            if (s4 !== peg$FAILED) {\n              if (peg$c68.test(input.charAt(peg$currPos))) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c69); }\n              }\n              if (s5 !== peg$FAILED) {\n                if (peg$c58.test(input.charAt(peg$currPos))) {\n                  s6 = input.charAt(peg$currPos);\n                  peg$currPos++;\n                } else {\n                  s6 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c59); }\n                }\n                if (s6 !== peg$FAILED) {\n                  if (peg$c52.test(input.charAt(peg$currPos))) {\n                    s7 = input.charAt(peg$currPos);\n                    peg$currPos++;\n                  } else {\n                    s7 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c53); }\n                  }\n                  if (s7 !== peg$FAILED) {\n                    if (peg$c46.test(input.charAt(peg$currPos))) {\n                      s8 = input.charAt(peg$currPos);\n                      peg$currPos++;\n                    } else {\n                      s8 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c47); }\n                    }\n                    if (s8 !== peg$FAILED) {\n                      if (peg$c72.test(input.charAt(peg$currPos))) {\n                        s9 = input.charAt(peg$currPos);\n                        peg$currPos++;\n                      } else {\n                        s9 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c73); }\n                      }\n                      if (s9 !== peg$FAILED) {\n                        if (peg$c74.test(input.charAt(peg$currPos))) {\n                          s10 = input.charAt(peg$currPos);\n                          peg$currPos++;\n                        } else {\n                          s10 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$c75); }\n                        }\n                        if (s10 !== peg$FAILED) {\n                          s1 = [s1, s2, s3, s4, s5, s6, s7, s8, s9, s10];\n                          s0 = s1;\n                        } else {\n                          peg$currPos = s0;\n                          s0 = peg$c0;\n                        }\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$c0;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$c0;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseContinue() {\n      var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n      s0 = peg$currPos;\n      if (peg$c72.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c73); }\n      }\n      if (s1 !== peg$FAILED) {\n        if (peg$c68.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c69); }\n        }\n        if (s2 !== peg$FAILED) {\n          if (peg$c64.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c65); }\n          }\n          if (s3 !== peg$FAILED) {\n            if (peg$c56.test(input.charAt(peg$currPos))) {\n              s4 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c57); }\n            }\n            if (s4 !== peg$FAILED) {\n              if (peg$c54.test(input.charAt(peg$currPos))) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c55); }\n              }\n              if (s5 !== peg$FAILED) {\n                if (peg$c64.test(input.charAt(peg$currPos))) {\n                  s6 = input.charAt(peg$currPos);\n                  peg$currPos++;\n                } else {\n                  s6 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c65); }\n                }\n                if (s6 !== peg$FAILED) {\n                  if (peg$c50.test(input.charAt(peg$currPos))) {\n                    s7 = input.charAt(peg$currPos);\n                    peg$currPos++;\n                  } else {\n                    s7 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c51); }\n                  }\n                  if (s7 !== peg$FAILED) {\n                    if (peg$c52.test(input.charAt(peg$currPos))) {\n                      s8 = input.charAt(peg$currPos);\n                      peg$currPos++;\n                    } else {\n                      s8 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c53); }\n                    }\n                    if (s8 !== peg$FAILED) {\n                      s1 = [s1, s2, s3, s4, s5, s6, s7, s8];\n                      s0 = s1;\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$c0;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$c0;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$c0;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseBreak() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      if (peg$c76.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c77); }\n      }\n      if (s1 !== peg$FAILED) {\n        if (peg$c58.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c59); }\n        }\n        if (s2 !== peg$FAILED) {\n          if (peg$c52.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c53); }\n          }\n          if (s3 !== peg$FAILED) {\n            if (peg$c46.test(input.charAt(peg$currPos))) {\n              s4 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c47); }\n            }\n            if (s4 !== peg$FAILED) {\n              if (peg$c78.test(input.charAt(peg$currPos))) {\n                s5 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s5 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c79); }\n              }\n              if (s5 !== peg$FAILED) {\n                s1 = [s1, s2, s3, s4, s5];\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$c0;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseSQLText() {\n      var s0, s1;\n\n      s0 = peg$currPos;\n      s1 = peg$parseSQLPattern();\n      if (s1 !== peg$FAILED) {\n        peg$reportedPos = s0;\n        s1 = peg$c80(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    function peg$parseSQLPattern() {\n      var s0, s1;\n\n      s0 = peg$currPos;\n      s1 = peg$parseSourceCharacter();\n      if (s1 !== peg$FAILED) {\n        peg$reportedPos = s0;\n        s1 = peg$c81(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    function peg$parseSourceCharacter() {\n      var s0;\n\n      if (input.length > peg$currPos) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c82); }\n      }\n\n      return s0;\n    }\n\n    function peg$parseWhiteSpace() {\n      var s0, s1;\n\n      peg$silentFails++;\n      if (input.charCodeAt(peg$currPos) === 9) {\n        s0 = peg$c84;\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c85); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 11) {\n          s0 = peg$c86;\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c87); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 12) {\n            s0 = peg$c88;\n            peg$currPos++;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c89); }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 32) {\n              s0 = peg$c90;\n              peg$currPos++;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c91); }\n            }\n            if (s0 === peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 160) {\n                s0 = peg$c92;\n                peg$currPos++;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c93); }\n              }\n              if (s0 === peg$FAILED) {\n                if (input.charCodeAt(peg$currPos) === 65279) {\n                  s0 = peg$c94;\n                  peg$currPos++;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c95); }\n                }\n                if (s0 === peg$FAILED) {\n                  s0 = peg$parseZs();\n                }\n              }\n            }\n          }\n        }\n      }\n      peg$silentFails--;\n      if (s0 === peg$FAILED) {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c83); }\n      }\n\n      return s0;\n    }\n\n    function peg$parseLineTerminator() {\n      var s0, s1;\n\n      s0 = peg$currPos;\n      if (peg$c96.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c97); }\n      }\n      if (s1 !== peg$FAILED) {\n        peg$reportedPos = s0;\n        s1 = peg$c98(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    function peg$parseLineTerminatorSequence() {\n      var s0, s1;\n\n      peg$silentFails++;\n      if (input.charCodeAt(peg$currPos) === 10) {\n        s0 = peg$c100;\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c101); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.substr(peg$currPos, 2) === peg$c102) {\n          s0 = peg$c102;\n          peg$currPos += 2;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c103); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 13) {\n            s0 = peg$c104;\n            peg$currPos++;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c105); }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 8232) {\n              s0 = peg$c106;\n              peg$currPos++;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c107); }\n            }\n            if (s0 === peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 8233) {\n                s0 = peg$c108;\n                peg$currPos++;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c109); }\n              }\n            }\n          }\n        }\n      }\n      peg$silentFails--;\n      if (s0 === peg$FAILED) {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c99); }\n      }\n\n      return s0;\n    }\n\n    function peg$parseDecimalDigit() {\n      var s0;\n\n      if (peg$c110.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c111); }\n      }\n\n      return s0;\n    }\n\n    function peg$parseHexDigit() {\n      var s0;\n\n      if (peg$c112.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c113); }\n      }\n\n      return s0;\n    }\n\n    function peg$parseRegExp() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 39) {\n        s1 = peg$c114;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c115); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        if (peg$c116.test(input.charAt(peg$currPos))) {\n          s3 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c117); }\n        }\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          if (peg$c116.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c117); }\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 39) {\n            s3 = peg$c114;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c115); }\n          }\n          if (s3 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c118(s2);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 34) {\n          s1 = peg$c119;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c120); }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = [];\n          if (peg$c121.test(input.charAt(peg$currPos))) {\n            s3 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c122); }\n          }\n          while (s3 !== peg$FAILED) {\n            s2.push(s3);\n            if (peg$c121.test(input.charAt(peg$currPos))) {\n              s3 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c122); }\n            }\n          }\n          if (s2 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 34) {\n              s3 = peg$c119;\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c120); }\n            }\n            if (s3 !== peg$FAILED) {\n              peg$reportedPos = s0;\n              s1 = peg$c118(s2);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$c0;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parseComment() {\n      var s0, s1;\n\n      peg$silentFails++;\n      s0 = peg$parseMultiLineComment();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseSingleLineComment();\n      }\n      peg$silentFails--;\n      if (s0 === peg$FAILED) {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c123); }\n      }\n\n      return s0;\n    }\n\n    function peg$parseMultiLineComment() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 2) === peg$c124) {\n        s1 = peg$c124;\n        peg$currPos += 2;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c125); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$currPos;\n        s4 = peg$currPos;\n        peg$silentFails++;\n        if (input.substr(peg$currPos, 2) === peg$c126) {\n          s5 = peg$c126;\n          peg$currPos += 2;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c127); }\n        }\n        peg$silentFails--;\n        if (s5 === peg$FAILED) {\n          s4 = peg$c24;\n        } else {\n          peg$currPos = s4;\n          s4 = peg$c0;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parseSourceCharacter();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$c0;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$c0;\n        }\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$currPos;\n          s4 = peg$currPos;\n          peg$silentFails++;\n          if (input.substr(peg$currPos, 2) === peg$c126) {\n            s5 = peg$c126;\n            peg$currPos += 2;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c127); }\n          }\n          peg$silentFails--;\n          if (s5 === peg$FAILED) {\n            s4 = peg$c24;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$c0;\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseSourceCharacter();\n            if (s5 !== peg$FAILED) {\n              s4 = [s4, s5];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$c0;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$c0;\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          if (input.substr(peg$currPos, 2) === peg$c126) {\n            s3 = peg$c126;\n            peg$currPos += 2;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c127); }\n          }\n          if (s3 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c29(s1, s2, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseMultiLineCommentNoLineTerminator() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 2) === peg$c124) {\n        s1 = peg$c124;\n        peg$currPos += 2;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c125); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$currPos;\n        s4 = peg$currPos;\n        peg$silentFails++;\n        if (input.substr(peg$currPos, 2) === peg$c126) {\n          s5 = peg$c126;\n          peg$currPos += 2;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c127); }\n        }\n        if (s5 === peg$FAILED) {\n          s5 = peg$parseLineTerminator();\n        }\n        peg$silentFails--;\n        if (s5 === peg$FAILED) {\n          s4 = peg$c24;\n        } else {\n          peg$currPos = s4;\n          s4 = peg$c0;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parseSourceCharacter();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$c0;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$c0;\n        }\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$currPos;\n          s4 = peg$currPos;\n          peg$silentFails++;\n          if (input.substr(peg$currPos, 2) === peg$c126) {\n            s5 = peg$c126;\n            peg$currPos += 2;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c127); }\n          }\n          if (s5 === peg$FAILED) {\n            s5 = peg$parseLineTerminator();\n          }\n          peg$silentFails--;\n          if (s5 === peg$FAILED) {\n            s4 = peg$c24;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$c0;\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseSourceCharacter();\n            if (s5 !== peg$FAILED) {\n              s4 = [s4, s5];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$c0;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$c0;\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          if (input.substr(peg$currPos, 2) === peg$c126) {\n            s3 = peg$c126;\n            peg$currPos += 2;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c127); }\n          }\n          if (s3 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c29(s1, s2, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseSingleLineComment() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 2) === peg$c128) {\n        s1 = peg$c128;\n        peg$currPos += 2;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c129); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$currPos;\n        s4 = peg$currPos;\n        peg$silentFails++;\n        s5 = peg$parseLineTerminator();\n        peg$silentFails--;\n        if (s5 === peg$FAILED) {\n          s4 = peg$c24;\n        } else {\n          peg$currPos = s4;\n          s4 = peg$c0;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parseSourceCharacter();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$c0;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$c0;\n        }\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$currPos;\n          s4 = peg$currPos;\n          peg$silentFails++;\n          s5 = peg$parseLineTerminator();\n          peg$silentFails--;\n          if (s5 === peg$FAILED) {\n            s4 = peg$c24;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$c0;\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseSourceCharacter();\n            if (s5 !== peg$FAILED) {\n              s4 = [s4, s5];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$c0;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$c0;\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          peg$reportedPos = s0;\n          s1 = peg$c130(s1, s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseQuotedIdentifier() {\n      var s0, s1;\n\n      peg$silentFails++;\n      s0 = peg$parseSingleQuotedIdentifier();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseDoubleQuotedIdentifier();\n      }\n      peg$silentFails--;\n      if (s0 === peg$FAILED) {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c131); }\n      }\n\n      return s0;\n    }\n\n    function peg$parseSingleQuotedIdentifier() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 39) {\n        s1 = peg$c114;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c115); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$parseSingleStringCharacter();\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$parseSingleStringCharacter();\n        }\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 39) {\n            s3 = peg$c114;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c115); }\n          }\n          if (s3 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c132(s1, s2, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseDoubleQuotedIdentifier() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 34) {\n        s1 = peg$c119;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c120); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$parseDoubleStringCharacter();\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$parseDoubleStringCharacter();\n        }\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 34) {\n            s3 = peg$c119;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c120); }\n          }\n          if (s3 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c132(s1, s2, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseQuotedString() {\n      var s0, s1;\n\n      peg$silentFails++;\n      s0 = peg$parseSingleQuotedString();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseDoubleQuotedString();\n      }\n      peg$silentFails--;\n      if (s0 === peg$FAILED) {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c133); }\n      }\n\n      return s0;\n    }\n\n    function peg$parseSingleQuotedString() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 39) {\n        s1 = peg$c114;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c115); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$parseSingleStringCharacter();\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$parseSingleStringCharacter();\n        }\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 39) {\n            s3 = peg$c114;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c115); }\n          }\n          if (s3 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c134(s1, s2, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseDoubleQuotedString() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 34) {\n        s1 = peg$c119;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c120); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$parseDoubleStringCharacter();\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$parseDoubleStringCharacter();\n        }\n        if (s2 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 34) {\n            s3 = peg$c119;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c120); }\n          }\n          if (s3 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c134(s1, s2, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseDoubleStringCharacter() {\n      var s0, s1, s2;\n\n      s0 = peg$currPos;\n      s1 = peg$currPos;\n      peg$silentFails++;\n      if (input.charCodeAt(peg$currPos) === 34) {\n        s2 = peg$c119;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c120); }\n      }\n      if (s2 === peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 92) {\n          s2 = peg$c135;\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c136); }\n        }\n        if (s2 === peg$FAILED) {\n          s2 = peg$parseLineTerminator();\n        }\n      }\n      peg$silentFails--;\n      if (s2 === peg$FAILED) {\n        s1 = peg$c24;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$c0;\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseSourceCharacter();\n        if (s2 !== peg$FAILED) {\n          peg$reportedPos = s0;\n          s1 = peg$c36();\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 92) {\n          s1 = peg$c135;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c136); }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parseEscapeSequence();\n          if (s2 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c137(s2);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$parseLineContinuation();\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parseSingleStringCharacter() {\n      var s0, s1, s2;\n\n      s0 = peg$currPos;\n      s1 = peg$currPos;\n      peg$silentFails++;\n      if (input.charCodeAt(peg$currPos) === 39) {\n        s2 = peg$c114;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c115); }\n      }\n      if (s2 === peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 92) {\n          s2 = peg$c135;\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c136); }\n        }\n        if (s2 === peg$FAILED) {\n          s2 = peg$parseLineTerminator();\n        }\n      }\n      peg$silentFails--;\n      if (s2 === peg$FAILED) {\n        s1 = peg$c24;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$c0;\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseSourceCharacter();\n        if (s2 !== peg$FAILED) {\n          peg$reportedPos = s0;\n          s1 = peg$c36();\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 92) {\n          s1 = peg$c135;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c136); }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$parseEscapeSequence();\n          if (s2 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c137(s2);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$parseLineContinuation();\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parseLineContinuation() {\n      var s0, s1, s2;\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 92) {\n        s1 = peg$c135;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c136); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseLineTerminatorSequence();\n        if (s2 !== peg$FAILED) {\n          peg$reportedPos = s0;\n          s1 = peg$c138();\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseEscapeSequence() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$parseCharacterEscapeSequence();\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 48) {\n          s1 = peg$c139;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c140); }\n        }\n        if (s1 !== peg$FAILED) {\n          s2 = peg$currPos;\n          peg$silentFails++;\n          s3 = peg$parseDecimalDigit();\n          peg$silentFails--;\n          if (s3 === peg$FAILED) {\n            s2 = peg$c24;\n          } else {\n            peg$currPos = s2;\n            s2 = peg$c0;\n          }\n          if (s2 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c141();\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n        if (s0 === peg$FAILED) {\n          s0 = peg$parseHexEscapeSequence();\n          if (s0 === peg$FAILED) {\n            s0 = peg$parseUnicodeEscapeSequence();\n          }\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parseCharacterEscapeSequence() {\n      var s0;\n\n      s0 = peg$parseSingleEscapeCharacter();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseNonEscapeCharacter();\n      }\n\n      return s0;\n    }\n\n    function peg$parseSingleEscapeCharacter() {\n      var s0, s1;\n\n      if (input.charCodeAt(peg$currPos) === 39) {\n        s0 = peg$c114;\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c115); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 34) {\n          s0 = peg$c119;\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c120); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 92) {\n            s0 = peg$c135;\n            peg$currPos++;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c136); }\n          }\n          if (s0 === peg$FAILED) {\n            s0 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 98) {\n              s1 = peg$c142;\n              peg$currPos++;\n            } else {\n              s1 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c143); }\n            }\n            if (s1 !== peg$FAILED) {\n              peg$reportedPos = s0;\n              s1 = peg$c144();\n            }\n            s0 = s1;\n            if (s0 === peg$FAILED) {\n              s0 = peg$currPos;\n              if (input.charCodeAt(peg$currPos) === 102) {\n                s1 = peg$c145;\n                peg$currPos++;\n              } else {\n                s1 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c146); }\n              }\n              if (s1 !== peg$FAILED) {\n                peg$reportedPos = s0;\n                s1 = peg$c147();\n              }\n              s0 = s1;\n              if (s0 === peg$FAILED) {\n                s0 = peg$currPos;\n                if (input.charCodeAt(peg$currPos) === 110) {\n                  s1 = peg$c148;\n                  peg$currPos++;\n                } else {\n                  s1 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c149); }\n                }\n                if (s1 !== peg$FAILED) {\n                  peg$reportedPos = s0;\n                  s1 = peg$c150();\n                }\n                s0 = s1;\n                if (s0 === peg$FAILED) {\n                  s0 = peg$currPos;\n                  if (input.charCodeAt(peg$currPos) === 114) {\n                    s1 = peg$c151;\n                    peg$currPos++;\n                  } else {\n                    s1 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c152); }\n                  }\n                  if (s1 !== peg$FAILED) {\n                    peg$reportedPos = s0;\n                    s1 = peg$c153();\n                  }\n                  s0 = s1;\n                  if (s0 === peg$FAILED) {\n                    s0 = peg$currPos;\n                    if (input.charCodeAt(peg$currPos) === 116) {\n                      s1 = peg$c154;\n                      peg$currPos++;\n                    } else {\n                      s1 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c155); }\n                    }\n                    if (s1 !== peg$FAILED) {\n                      peg$reportedPos = s0;\n                      s1 = peg$c156();\n                    }\n                    s0 = s1;\n                    if (s0 === peg$FAILED) {\n                      s0 = peg$currPos;\n                      if (input.charCodeAt(peg$currPos) === 118) {\n                        s1 = peg$c157;\n                        peg$currPos++;\n                      } else {\n                        s1 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c158); }\n                      }\n                      if (s1 !== peg$FAILED) {\n                        peg$reportedPos = s0;\n                        s1 = peg$c159();\n                      }\n                      s0 = s1;\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parseNonEscapeCharacter() {\n      var s0, s1, s2;\n\n      s0 = peg$currPos;\n      s1 = peg$currPos;\n      peg$silentFails++;\n      s2 = peg$parseEscapeCharacter();\n      if (s2 === peg$FAILED) {\n        s2 = peg$parseLineTerminator();\n      }\n      peg$silentFails--;\n      if (s2 === peg$FAILED) {\n        s1 = peg$c24;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$c0;\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseSourceCharacter();\n        if (s2 !== peg$FAILED) {\n          peg$reportedPos = s0;\n          s1 = peg$c36();\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseEscapeCharacter() {\n      var s0;\n\n      s0 = peg$parseSingleEscapeCharacter();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseDecimalDigit();\n        if (s0 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 120) {\n            s0 = peg$c160;\n            peg$currPos++;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c161); }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 117) {\n              s0 = peg$c162;\n              peg$currPos++;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c163); }\n            }\n          }\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parseHexEscapeSequence() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 120) {\n        s1 = peg$c160;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c161); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$currPos;\n        s3 = peg$currPos;\n        s4 = peg$parseHexDigit();\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parseHexDigit();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$c0;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$c0;\n        }\n        if (s3 !== peg$FAILED) {\n          s3 = input.substring(s2, peg$currPos);\n        }\n        s2 = s3;\n        if (s2 !== peg$FAILED) {\n          peg$reportedPos = s0;\n          s1 = peg$c164(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseUnicodeEscapeSequence() {\n      var s0, s1, s2, s3, s4, s5, s6, s7;\n\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 117) {\n        s1 = peg$c162;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c163); }\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$currPos;\n        s3 = peg$currPos;\n        s4 = peg$parseHexDigit();\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parseHexDigit();\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parseHexDigit();\n            if (s6 !== peg$FAILED) {\n              s7 = peg$parseHexDigit();\n              if (s7 !== peg$FAILED) {\n                s4 = [s4, s5, s6, s7];\n                s3 = s4;\n              } else {\n                peg$currPos = s3;\n                s3 = peg$c0;\n              }\n            } else {\n              peg$currPos = s3;\n              s3 = peg$c0;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$c0;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$c0;\n        }\n        if (s3 !== peg$FAILED) {\n          s3 = input.substring(s2, peg$currPos);\n        }\n        s2 = s3;\n        if (s2 !== peg$FAILED) {\n          peg$reportedPos = s0;\n          s1 = peg$c164(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parse__() {\n      var s0, s1;\n\n      s0 = [];\n      s1 = peg$parseWhiteSpace();\n      if (s1 === peg$FAILED) {\n        s1 = peg$parseLineTerminatorSequence();\n        if (s1 === peg$FAILED) {\n          s1 = peg$parseComment();\n        }\n      }\n      while (s1 !== peg$FAILED) {\n        s0.push(s1);\n        s1 = peg$parseWhiteSpace();\n        if (s1 === peg$FAILED) {\n          s1 = peg$parseLineTerminatorSequence();\n          if (s1 === peg$FAILED) {\n            s1 = peg$parseComment();\n          }\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parse_() {\n      var s0, s1;\n\n      s0 = [];\n      s1 = peg$parseWhiteSpace();\n      if (s1 === peg$FAILED) {\n        s1 = peg$parseMultiLineCommentNoLineTerminator();\n      }\n      while (s1 !== peg$FAILED) {\n        s0.push(s1);\n        s1 = peg$parseWhiteSpace();\n        if (s1 === peg$FAILED) {\n          s1 = peg$parseMultiLineCommentNoLineTerminator();\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parseZs() {\n      var s0;\n\n      if (peg$c165.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c166); }\n      }\n\n      return s0;\n    }\n\n\n      // The default params below are for the MetaSQL test here: https://github.com/xtuple/openrpt/blob/master/MetaSQL/test.mql\n      params = options.params ? options.params : {\n          start: true\n          ,test_0_1_0: 'test_0_1_0'\n          ,test_0_1_2: ['test_0_1_2']\n          ,test_0_1_3: ['test_0_1_3', 'test_0_1_3_2', 'test_0_1_3_3']\n          ,test_0_1_4: 'true THEN true END AS test_0_1_4) AS tests; SELECT current_user--'\n          ,test_0_2_0: 'test_0_2_0'\n          ,test_0_2_2: ['test_0_2_2']\n          ,test_0_2_3: ['test_0_2_3','test_0_2_3_2', 'test_0_2_3_3']\n          ,test_0_2_4: "(SELECT usr_username FROM usr WHERE usr_username = 'admin')"\n          ,test_0_3_0: true\n          ,test_0_3_2: null\n          ,test_0_3_3: ''\n          ,test_0_3_4: 'true THEN true END AS test_0_3_4) AS test; SELECT current_user--'\n          ,test_0_4_0a: 'test_0_4_0'\n          ,test_0_4_2a: null\n          ,test_0_4_3a: ''\n          ,test_0_4_4a: 'true THEN true END AS test_0_4_4) AS test; SELECT current_user--'\n          ,test_0_5_0: ['test_0_5_0']\n          ,test_0_5_1: ['test_0_5_1','test_0_5_1_2', 'test_0_5_1_3']\n          ,test_0_5_2: 'test_0_5_2'\n          ,test_0_5_4: ['true THEN true END AS test_0_5_4) AS test; SELECT current_user--']\n          ,test_0_6_0: ['test_0_6_0']\n          ,test_0_6_1: ['test_0_6_1','test_0_6_1_2', 'test_0_6_1_3']\n          ,test_0_6_2: 'test_0_6_2'\n          ,test_0_6_4: ['true THEN true END AS test_0_6_4) AS test; SELECT current_user--']\n          ,test_1_3_0: 'test_1_3_0'\n          ,test_1_3_1: 'test_1_3_1'\n          ,test_1_3_1_2: 'test_1_3_1_2'\n          ,test_2_3_0: 'test_2_3_0'\n          ,test_2_3_1: 'test_2_3_1'\n          ,test_3_3_0: 'test_3_3_0'\n          ,test_3_3_1: 'test_3_3_1'\n          ,test_3_3_2: 'test_3_3_2'\n          ,test_4_0_0: ['test_4_0_0', 'test_4_0_0_2', 'test_4_0_0_3']\n          ,test_4_0_1: ['true THEN true END AS test_4_0_1) AS test; SELECT current_user--']\n          ,test_41_0_0: ['test_41_0_0', 'test_41_0_0_2', 'test_41_0_0_3']\n          ,test_42_0_0: ['test_42_0_0', 'test_42_0_0_2', 'test_42_0_0_3']\n          ,test_43_0_0: ['test_43_0_0', 'test_43_0_0_2', 'test_43_0_0_3']\n          ,test_4_1_0: 'test_4_1_0'\n          ,test_4_1_2: ['test_4_1_2']\n          ,test_4_1_3: ['test_4_1_3', 'test_4_1_3_2', 'test_4_1_3_3']\n          ,test_4_1_4: ['test_4_1_4', 'test_4_1_4_2', 'test_4_1_4_3']\n          ,test_4_1_42: 'test_4_1_42'\n          ,test_4_1_5: ['test_4_1_5', 'test_4_1_5_2', 'test_4_1_5_3']\n          ,test_4_1_52: ['test_4_1_52']\n          ,test_4_1_6: ['test_4_1_6', 'test_4_1_6_2', 'test_4_1_6_3']\n          ,test_4_1_62: ['test_4_1_62', 'test_4_1_62_2', 'test_4_1_62_3']\n          ,test_4_1_7: [1]\n          ,test_4_1_8: [true]\n          ,test_4_2_0: 'test_4_2_0'\n          ,test_4_2_2: ['test_4_2_2']\n          ,test_4_2_3: ['test_4_2_3', 'test_4_2_3_2', 'test_4_2_3_3']\n          ,test_4_2_4: ['test_4_2_4', 'test_4_2_4_2', 'test_4_2_4_3']\n          ,test_4_2_42: 'test_4_2_42'\n          ,test_4_2_5: ['test_4_2_5', 'test_4_2_5_2', 'test_4_2_5_3']\n          ,test_4_2_52: ['test_4_2_52']\n          ,test_4_2_6: ['test_4_2_6', 'test_4_2_6_2', 'test_4_2_6_3']\n          ,test_4_2_62: ['test_4_2_62', 'test_4_2_62_2', 'test_4_2_62_3']\n          ,test_4_3_0: ['test_4_3_0']\n          ,test_4_3_01: 'test_4_3_01'\n          ,test_4_3_1: ['test_4_3_1']\n          ,test_4_3_2: ['test_4_3_2']\n          ,test_4_3_21: null\n          ,test_4_3_3: ['test_4_3_3']\n          ,test_4_3_31: ''\n          ,test_4_4_0: ['test_4_4_0']\n          ,test_4_4_01: 'test_4_4_01'\n          ,test_4_4_1: ['test_4_4_1']\n          ,test_4_4_2: ['test_4_4_2']\n          ,test_4_4_21: null\n          ,test_4_4_3: ['test_4_4_3']\n          ,test_4_4_31: ''\n          ,test_4_5_0: ['test_4_5_0']\n          ,test_4_5_1: ['test_4_5_1', 'test_4_5_1_2']\n          ,test_4_5_2: ['test_4_5_2', 'test_4_5_2_2']\n          ,test_4_5_3: ['test_4_5_3']\n          ,test_4_5_32: 'test_4_5_32'\n          ,test_4_5_4: ['test_4_5_4']\n          ,test_4_6_0: ['test_4_6_0']\n          ,test_4_6_1: ['test_4_6_1', 'test_4_6_1_2']\n          ,test_4_6_2: ['test_4_6_2', 'test_4_6_2_2']\n          ,test_4_6_3: ['test_4_6_3']\n          ,test_4_6_32: 'test_4_6_32'\n          ,test_4_6_4: ['test_4_6_4']\n          ,test_4_7_0: ['test_4_7_0', 'test_4_7_0_2', 'test_4_7_0_3']\n          ,test_4_8_0: ['test_4_8_0', 'test_4_8_0_2', 'test_4_8_0_3']\n          ,test_44_0_0: ['test_44_0_0', 'test_44_0_0_2']\n          ,test_44_0_02: ['test_44_0_02', 'test_44_0_02_2']\n          ,test_44_0_1: ['test_44_0_1', 'test_44_0_1_2']\n          ,test_441_0_0: ['test_441_0_0', 'test_441_0_0_2']\n          ,test_441_0_02: ['test_441_0_02', 'test_441_0_02_2']\n          ,test_442_0_0: ['test_442_0_0', 'test_442_0_0_2']\n          ,test_442_0_02: ['test_442_0_02', 'test_442_0_02_2']\n          ,test_443_0_0: ['test_443_0_0', 'test_443_0_0_2', 'test_443_0_0_3']\n          ,test_443_0_02: ['test_443_0_02', 'test_443_0_02_2', 'test_443_0_02_3']\n          ,test_444_0_0: ['test_444_0_0', 'test_444_0_0_2']\n          ,test_444_0_02: ['test_444_0_02', 'test_444_0_01_2']\n          ,test_444_0_03: ['test_444_0_03', 'test_444_0_01_3']\n          ,end: true\n        }\n      ,loopstack = options.loopstack ? options.loopstack : []\n      ,stackIdx = function (id) {\n          var idx = 1;\n\n          if (loopstack.length > 0) {\n            for (idx = 0; idx < loopstack.length; idx++) {\n              if (loopstack[idx].id === id) {\n                break;\n              }\n            }\n          }\n\n          return idx;\n        }\n      ,extractList = function (list, index) {\n          var result = new Array(list.length),\n              i;\n\n          for (i = 0; i < list.length; i++) {\n            result[i] = list[i][index];\n          }\n\n          return result;\n        }\n      ,buildList = function (first, rest, index) {\n          return [first].concat(extractList(rest, index));\n        }\n      ,optionalList = function (value) {\n          return value !== null ? value : [];\n        }\n\n\n    peg$result = peg$startRuleFunction();\n\n    if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n      return peg$result;\n    } else {\n      if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n        peg$fail({ type: "end", description: "end of input" });\n      }\n\n      throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);\n    }\n  }\n\n  return {\n    SyntaxError: SyntaxError,\n    parse:       parse\n  };\n})();\n\n})();\n\n	XT	MetaSQL	xtuple	f	t
2	\n\n/**\n * WARNING!!! IMPORTANT!!! README!!!\n * \n * The file was GENERATED! None of this file was written by a human.\n * DO NOT EDIT this file!\n * This file was created by running build_app.js in the process_manifext.js file.\n * If you find a bug or need to extend it with a new feature, you MUST follow this process:\n * \n * 1. Modify the PEG Grammer definition at: ../lib/orm/source/xt/pegs/ediprofile.peg\n * 2. Use the PEG.js online tool to test the new grammer:\n *    - http://pegjs.org/online\n * 3. Run build_app.js with your PEG Grammer change and git commit the modified files.\n */\n\n(function () {\nXT.EDIProfile = {};\nXT.EDIProfile.parser = (function() {\n  /*\n   * Generated by PEG.js 0.8.0.\n   *\n   * http://pegjs.majda.cz/\n   */\n\n  function peg$subclass(child, parent) {\n    function ctor() { this.constructor = child; }\n    ctor.prototype = parent.prototype;\n    child.prototype = new ctor();\n  }\n\n  function SyntaxError(message, expected, found, offset, line, column) {\n    this.message  = message;\n    this.expected = expected;\n    this.found    = found;\n    this.offset   = offset;\n    this.line     = line;\n    this.column   = column;\n\n    this.name     = "SyntaxError";\n  }\n\n  peg$subclass(SyntaxError, Error);\n\n  function parse(input) {\n    var options = arguments.length > 1 ? arguments[1] : {},\n\n        peg$FAILED = {},\n\n        peg$startRuleFunctions = { Start: peg$parseStart },\n        peg$startRuleFunction  = peg$parseStart,\n\n        peg$c0 = peg$FAILED,\n        peg$c1 = function(start, editext, end) {\n              return start.join('') + editext + end.join('');\n            },\n        peg$c2 = null,\n        peg$c3 = function(body) {\n              return body;\n            },\n        peg$c4 = [],\n        peg$c5 = function(first, rest) {\n              return first + rest.join('');\n            },\n        peg$c6 = function(token) {\n              //return "token: " + token;\n              return token;\n            },\n        peg$c7 = function(body) {\n              //return "body: " + body;\n              return body;\n            },\n        peg$c8 = function(editoken) {\n              //return "EDIToken: " + editoken;\n              return editoken;\n            },\n        peg$c9 = void 0,\n        peg$c10 = function(start, body, end) {\n              var id = body ? extractList(body, 1).join('') : '';\n\n              if (params[id]) {\n                return params[id];\n              } else if (params.hasOwnProperty(id)) {\n                return params[id];\n              } else {\n                return start + id + end;\n              }\n            },\n        peg$c11 = "</",\n        peg$c12 = { type: "literal", value: "</", description: "\\"</\\"" },\n        peg$c13 = ">",\n        peg$c14 = { type: "literal", value: ">", description: "\\">\\"" },\n        peg$c15 = function(body) {\n              return (body ? body : '');\n            },\n        peg$c16 = { type: "any", description: "any character" },\n        peg$c17 = { type: "other", description: "whitespace" },\n        peg$c18 = "\\t",\n        peg$c19 = { type: "literal", value: "\\t", description: "\\"\\\\t\\"" },\n        peg$c20 = "\\x0B",\n        peg$c21 = { type: "literal", value: "\\x0B", description: "\\"\\\\x0B\\"" },\n        peg$c22 = "\\f",\n        peg$c23 = { type: "literal", value: "\\f", description: "\\"\\\\f\\"" },\n        peg$c24 = " ",\n        peg$c25 = { type: "literal", value: " ", description: "\\" \\"" },\n        peg$c26 = "\\xA0",\n        peg$c27 = { type: "literal", value: "\\xA0", description: "\\"\\\\xA0\\"" },\n        peg$c28 = "\\uFEFF",\n        peg$c29 = { type: "literal", value: "\\uFEFF", description: "\\"\\\\uFEFF\\"" },\n        peg$c30 = { type: "other", description: "end of line" },\n        peg$c31 = "\\n",\n        peg$c32 = { type: "literal", value: "\\n", description: "\\"\\\\n\\"" },\n        peg$c33 = "\\r\\n",\n        peg$c34 = { type: "literal", value: "\\r\\n", description: "\\"\\\\r\\\\n\\"" },\n        peg$c35 = "\\r",\n        peg$c36 = { type: "literal", value: "\\r", description: "\\"\\\\r\\"" },\n        peg$c37 = "\\u2028",\n        peg$c38 = { type: "literal", value: "\\u2028", description: "\\"\\\\u2028\\"" },\n        peg$c39 = "\\u2029",\n        peg$c40 = { type: "literal", value: "\\u2029", description: "\\"\\\\u2029\\"" },\n        peg$c41 = /^[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/,\n        peg$c42 = { type: "class", value: "[ \\\\xA0\\\\u1680\\\\u2000-\\\\u200A\\\\u202F\\\\u205F\\\\u3000]", description: "[ \\\\xA0\\\\u1680\\\\u2000-\\\\u200A\\\\u202F\\\\u205F\\\\u3000]" },\n\n        peg$currPos          = 0,\n        peg$reportedPos      = 0,\n        peg$cachedPos        = 0,\n        peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },\n        peg$maxFailPos       = 0,\n        peg$maxFailExpected  = [],\n        peg$silentFails      = 0,\n\n        peg$result;\n\n    if ("startRule" in options) {\n      if (!(options.startRule in peg$startRuleFunctions)) {\n        throw new Error("Can't start parsing from rule \\"" + options.startRule + "\\".");\n      }\n\n      peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n    }\n\n    function text() {\n      return input.substring(peg$reportedPos, peg$currPos);\n    }\n\n    function offset() {\n      return peg$reportedPos;\n    }\n\n    function line() {\n      return peg$computePosDetails(peg$reportedPos).line;\n    }\n\n    function column() {\n      return peg$computePosDetails(peg$reportedPos).column;\n    }\n\n    function expected(description) {\n      throw peg$buildException(\n        null,\n        [{ type: "other", description: description }],\n        peg$reportedPos\n      );\n    }\n\n    function error(message) {\n      throw peg$buildException(message, null, peg$reportedPos);\n    }\n\n    function peg$computePosDetails(pos) {\n      function advance(details, startPos, endPos) {\n        var p, ch;\n\n        for (p = startPos; p < endPos; p++) {\n          ch = input.charAt(p);\n          if (ch === "\\n") {\n            if (!details.seenCR) { details.line++; }\n            details.column = 1;\n            details.seenCR = false;\n          } else if (ch === "\\r" || ch === "\\u2028" || ch === "\\u2029") {\n            details.line++;\n            details.column = 1;\n            details.seenCR = true;\n          } else {\n            details.column++;\n            details.seenCR = false;\n          }\n        }\n      }\n\n      if (peg$cachedPos !== pos) {\n        if (peg$cachedPos > pos) {\n          peg$cachedPos = 0;\n          peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };\n        }\n        advance(peg$cachedPosDetails, peg$cachedPos, pos);\n        peg$cachedPos = pos;\n      }\n\n      return peg$cachedPosDetails;\n    }\n\n    function peg$fail(expected) {\n      if (peg$currPos < peg$maxFailPos) { return; }\n\n      if (peg$currPos > peg$maxFailPos) {\n        peg$maxFailPos = peg$currPos;\n        peg$maxFailExpected = [];\n      }\n\n      peg$maxFailExpected.push(expected);\n    }\n\n    function peg$buildException(message, expected, pos) {\n      function cleanupExpected(expected) {\n        var i = 1;\n\n        expected.sort(function(a, b) {\n          if (a.description < b.description) {\n            return -1;\n          } else if (a.description > b.description) {\n            return 1;\n          } else {\n            return 0;\n          }\n        });\n\n        while (i < expected.length) {\n          if (expected[i - 1] === expected[i]) {\n            expected.splice(i, 1);\n          } else {\n            i++;\n          }\n        }\n      }\n\n      function buildMessage(expected, found) {\n        function stringEscape(s) {\n          function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n          return s\n            .replace(/\\\\/g,   '\\\\\\\\')\n            .replace(/"/g,    '\\\\"')\n            .replace(/\\x08/g, '\\\\b')\n            .replace(/\\t/g,   '\\\\t')\n            .replace(/\\n/g,   '\\\\n')\n            .replace(/\\f/g,   '\\\\f')\n            .replace(/\\r/g,   '\\\\r')\n            .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n            .replace(/[\\x10-\\x1F\\x80-\\xFF]/g,    function(ch) { return '\\\\x'  + hex(ch); })\n            .replace(/[\\u0180-\\u0FFF]/g,         function(ch) { return '\\\\u0' + hex(ch); })\n            .replace(/[\\u1080-\\uFFFF]/g,         function(ch) { return '\\\\u'  + hex(ch); });\n        }\n\n        var expectedDescs = new Array(expected.length),\n            expectedDesc, foundDesc, i;\n\n        for (i = 0; i < expected.length; i++) {\n          expectedDescs[i] = expected[i].description;\n        }\n\n        expectedDesc = expected.length > 1\n          ? expectedDescs.slice(0, -1).join(", ")\n              + " or "\n              + expectedDescs[expected.length - 1]\n          : expectedDescs[0];\n\n        foundDesc = found ? "\\"" + stringEscape(found) + "\\"" : "end of input";\n\n        return "Expected " + expectedDesc + " but " + foundDesc + " found.";\n      }\n\n      var posDetails = peg$computePosDetails(pos),\n          found      = pos < input.length ? input.charAt(pos) : null;\n\n      if (expected !== null) {\n        cleanupExpected(expected);\n      }\n\n      return new SyntaxError(\n        message !== null ? message : buildMessage(expected, found),\n        expected,\n        found,\n        pos,\n        posDetails.line,\n        posDetails.column\n      );\n    }\n\n    function peg$parseStart() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$currPos;\n      s1 = peg$parse__();\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseEDIProfile();\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parse__();\n          if (s3 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c1(s1, s2, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseEDIProfile() {\n      var s0, s1;\n\n      s0 = peg$currPos;\n      s1 = peg$parseSourceElements();\n      if (s1 === peg$FAILED) {\n        s1 = peg$c2;\n      }\n      if (s1 !== peg$FAILED) {\n        peg$reportedPos = s0;\n        s1 = peg$c3(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    function peg$parseSourceElements() {\n      var s0, s1, s2, s3;\n\n      s0 = peg$currPos;\n      s1 = peg$parseSourceElement();\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$parseSourceElement();\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$parseSourceElement();\n        }\n        if (s2 !== peg$FAILED) {\n          peg$reportedPos = s0;\n          s1 = peg$c5(s1, s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseSourceElement() {\n      var s0, s1;\n\n      s0 = peg$currPos;\n      s1 = peg$parseToken();\n      if (s1 !== peg$FAILED) {\n        peg$reportedPos = s0;\n        s1 = peg$c6(s1);\n      }\n      s0 = s1;\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parseBodyText();\n        if (s1 !== peg$FAILED) {\n          peg$reportedPos = s0;\n          s1 = peg$c7(s1);\n        }\n        s0 = s1;\n      }\n\n      return s0;\n    }\n\n    function peg$parseToken() {\n      var s0, s1;\n\n      s0 = peg$currPos;\n      s1 = peg$parseEDIToken();\n      if (s1 !== peg$FAILED) {\n        peg$reportedPos = s0;\n        s1 = peg$c8(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    function peg$parseEDIToken() {\n      var s0, s1, s2, s3, s4, s5;\n\n      s0 = peg$currPos;\n      s1 = peg$parseEDITokenOpen();\n      if (s1 !== peg$FAILED) {\n        s2 = [];\n        s3 = peg$currPos;\n        s4 = peg$currPos;\n        peg$silentFails++;\n        s5 = peg$parseEDITokenClose();\n        peg$silentFails--;\n        if (s5 === peg$FAILED) {\n          s4 = peg$c9;\n        } else {\n          peg$currPos = s4;\n          s4 = peg$c0;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parseSourceCharacter();\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$c0;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$c0;\n        }\n        while (s3 !== peg$FAILED) {\n          s2.push(s3);\n          s3 = peg$currPos;\n          s4 = peg$currPos;\n          peg$silentFails++;\n          s5 = peg$parseEDITokenClose();\n          peg$silentFails--;\n          if (s5 === peg$FAILED) {\n            s4 = peg$c9;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$c0;\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parseSourceCharacter();\n            if (s5 !== peg$FAILED) {\n              s4 = [s4, s5];\n              s3 = s4;\n            } else {\n              peg$currPos = s3;\n              s3 = peg$c0;\n            }\n          } else {\n            peg$currPos = s3;\n            s3 = peg$c0;\n          }\n        }\n        if (s2 !== peg$FAILED) {\n          s3 = peg$parseEDITokenClose();\n          if (s3 !== peg$FAILED) {\n            peg$reportedPos = s0;\n            s1 = peg$c10(s1, s2, s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$c0;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$c0;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$c0;\n      }\n\n      return s0;\n    }\n\n    function peg$parseEDITokenOpen() {\n      var s0;\n\n      if (input.substr(peg$currPos, 2) === peg$c11) {\n        s0 = peg$c11;\n        peg$currPos += 2;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c12); }\n      }\n\n      return s0;\n    }\n\n    function peg$parseEDITokenClose() {\n      var s0;\n\n      if (input.charCodeAt(peg$currPos) === 62) {\n        s0 = peg$c13;\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c14); }\n      }\n\n      return s0;\n    }\n\n    function peg$parseBodyText() {\n      var s0, s1;\n\n      s0 = peg$currPos;\n      s1 = peg$parseBodyPattern();\n      if (s1 !== peg$FAILED) {\n        peg$reportedPos = s0;\n        s1 = peg$c15(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    function peg$parseBodyPattern() {\n      var s0, s1;\n\n      s0 = peg$currPos;\n      s1 = peg$parseSourceCharacter();\n      if (s1 !== peg$FAILED) {\n        peg$reportedPos = s0;\n        s1 = peg$c15(s1);\n      }\n      s0 = s1;\n\n      return s0;\n    }\n\n    function peg$parseSourceCharacter() {\n      var s0;\n\n      if (input.length > peg$currPos) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c16); }\n      }\n\n      return s0;\n    }\n\n    function peg$parse__() {\n      var s0, s1;\n\n      s0 = [];\n      s1 = peg$parseWhiteSpace();\n      if (s1 === peg$FAILED) {\n        s1 = peg$parseLineTerminatorSequence();\n      }\n      while (s1 !== peg$FAILED) {\n        s0.push(s1);\n        s1 = peg$parseWhiteSpace();\n        if (s1 === peg$FAILED) {\n          s1 = peg$parseLineTerminatorSequence();\n        }\n      }\n\n      return s0;\n    }\n\n    function peg$parseWhiteSpace() {\n      var s0, s1;\n\n      peg$silentFails++;\n      if (input.charCodeAt(peg$currPos) === 9) {\n        s0 = peg$c18;\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c19); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 11) {\n          s0 = peg$c20;\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c21); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 12) {\n            s0 = peg$c22;\n            peg$currPos++;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c23); }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 32) {\n              s0 = peg$c24;\n              peg$currPos++;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c25); }\n            }\n            if (s0 === peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 160) {\n                s0 = peg$c26;\n                peg$currPos++;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c27); }\n              }\n              if (s0 === peg$FAILED) {\n                if (input.charCodeAt(peg$currPos) === 65279) {\n                  s0 = peg$c28;\n                  peg$currPos++;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c29); }\n                }\n                if (s0 === peg$FAILED) {\n                  s0 = peg$parseZs();\n                }\n              }\n            }\n          }\n        }\n      }\n      peg$silentFails--;\n      if (s0 === peg$FAILED) {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c17); }\n      }\n\n      return s0;\n    }\n\n    function peg$parseLineTerminatorSequence() {\n      var s0, s1;\n\n      peg$silentFails++;\n      if (input.charCodeAt(peg$currPos) === 10) {\n        s0 = peg$c31;\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c32); }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.substr(peg$currPos, 2) === peg$c33) {\n          s0 = peg$c33;\n          peg$currPos += 2;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c34); }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 13) {\n            s0 = peg$c35;\n            peg$currPos++;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c36); }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 8232) {\n              s0 = peg$c37;\n              peg$currPos++;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c38); }\n            }\n            if (s0 === peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 8233) {\n                s0 = peg$c39;\n                peg$currPos++;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c40); }\n              }\n            }\n          }\n        }\n      }\n      peg$silentFails--;\n      if (s0 === peg$FAILED) {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c30); }\n      }\n\n      return s0;\n    }\n\n    function peg$parseZs() {\n      var s0;\n\n      if (peg$c41.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c42); }\n      }\n\n      return s0;\n    }\n\n\n      // The default params below are for the test above.\n      params = options.params ? options.params : {\n          foo: 'bar'\n        }\n      ,extractList = function (list, index) {\n          var result = new Array(list.length),\n              i;\n\n          for (i = 0; i < list.length; i++) {\n            result[i] = list[i][index];\n          }\n\n          return result;\n        }\n      ,buildList = function (first, rest, index) {\n          return [first].concat(extractList(rest, index));\n        }\n      ,optionalList = function (value) {\n          return value !== null ? value : [];\n        }\n\n\n    peg$result = peg$startRuleFunction();\n\n    if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n      return peg$result;\n    } else {\n      if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n        peg$fail({ type: "end", description: "end of input" });\n      }\n\n      throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);\n    }\n  }\n\n  return {\n    SyntaxError: SyntaxError,\n    parse:       parse\n  };\n})();\n\n})();\n\n	XT	EDIProfile	xtuple	f	t
\.


--
