@galacean/engine-shaderlab 1.6.0-alpha.1 → 1.6.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/browser.js +6325 -4885
  2. package/dist/browser.js.map +1 -1
  3. package/dist/browser.min.js +1 -1
  4. package/dist/browser.min.js.map +1 -1
  5. package/dist/browser.verbose.js +5956 -4985
  6. package/dist/browser.verbose.js.map +1 -1
  7. package/dist/browser.verbose.min.js +1 -1
  8. package/dist/browser.verbose.min.js.map +1 -1
  9. package/dist/main.js +6325 -4885
  10. package/dist/main.js.map +1 -1
  11. package/dist/main.verbose.js +5956 -4985
  12. package/dist/main.verbose.js.map +1 -1
  13. package/dist/module.js +6325 -4887
  14. package/dist/module.js.map +1 -1
  15. package/dist/module.verbose.js +5958 -4986
  16. package/dist/module.verbose.js.map +1 -1
  17. package/package.json +4 -4
  18. package/types/GSError.d.ts +2 -1
  19. package/types/ParserUtils.d.ts +1 -1
  20. package/types/Preprocessor.d.ts +31 -0
  21. package/types/ShaderLab.d.ts +15 -1
  22. package/types/codeGen/CodeGenVisitor.d.ts +1 -2
  23. package/types/codeGen/GLES100.d.ts +4 -8
  24. package/types/codeGen/GLES300.d.ts +9 -6
  25. package/types/codeGen/types.d.ts +2 -2
  26. package/types/common/BaseLexer.d.ts +2 -0
  27. package/types/common/IBaseSymbol.d.ts +5 -0
  28. package/types/common/SymbolTable.d.ts +7 -0
  29. package/types/common/SymbolTableStack.d.ts +13 -0
  30. package/types/common/enums/Keyword.d.ts +108 -0
  31. package/types/common/index.d.ts +1 -1
  32. package/types/common/types.d.ts +4 -5
  33. package/types/index.d.ts +0 -1
  34. package/types/lalr/CFG.d.ts +1 -1
  35. package/types/lexer/Lexer.d.ts +10 -5
  36. package/types/{preprocessor → macroProcessor}/MacroDefine.d.ts +2 -2
  37. package/types/macroProcessor/MacroParserLexer.d.ts +32 -0
  38. package/types/macroProcessor/Utils.d.ts +5 -0
  39. package/types/{preprocessor → macroProcessor}/constants.d.ts +4 -6
  40. package/types/macroProcessor/index.d.ts +1 -0
  41. package/types/parser/AST.d.ts +124 -23
  42. package/types/parser/GrammarSymbol.d.ts +21 -1
  43. package/types/parser/ShaderInfo.d.ts +4 -2
  44. package/types/parser/ShaderTargetParser.d.ts +3 -2
  45. package/types/parser/builtin/functions.d.ts +2 -1
  46. package/types/parser/builtin/variables.d.ts +1 -1
  47. package/types/parser/symbolTable/SymbolInfo.d.ts +12 -8
  48. package/types/parser/symbolTable/index.d.ts +1 -1
  49. package/types/parser/types.d.ts +7 -6
  50. package/types/sourceParser/ShaderSourceFactory.d.ts +8 -0
  51. package/types/sourceParser/ShaderSourceSymbol.d.ts +10 -0
  52. package/types/sourceParser/SourceLexer.d.ts +19 -0
  53. package/types/sourceParser/index.d.ts +1 -0
  54. package/types/common/BaseScanner.d.ts +0 -2
  55. package/types/common/BaseSymbolTable.d.ts +0 -18
  56. package/types/common/Keywords.d.ts +0 -99
  57. package/types/contentParser/ContentSymbolTable.d.ts +0 -10
  58. package/types/contentParser/KeywordMap.d.ts +0 -2
  59. package/types/contentParser/Scanner.d.ts +0 -10
  60. package/types/contentParser/index.d.ts +0 -1
  61. package/types/lexer/Utils.d.ts +0 -7
  62. package/types/parser/symbolTable/TargetSymbolTable.d.ts +0 -13
  63. package/types/preprocessor/PpScanner.d.ts +0 -51
  64. package/types/preprocessor/Preprocessor.d.ts +0 -1
  65. package/types/preprocessor/Utils.d.ts +0 -10
  66. package/types/preprocessor/index.d.ts +0 -1
  67. /package/types/common/{Enums.d.ts → enums/ShaderStage.d.ts} +0 -0
  68. /package/types/{preprocessor/PpParser.d.ts → macroProcessor/MacroParser.d.ts} +0 -0
  69. /package/types/{preprocessor → macroProcessor}/sourceMap/index.d.ts +0 -0
  70. /package/types/{contentParser/ShaderContentParser.d.ts → sourceParser/ShaderSourceParser.d.ts} +0 -0
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@galacean/engine")):"function"==typeof define&&define.amd?define(["exports","@galacean/engine"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).Galacean=e.Galacean||{},e.Galacean.ShaderLab={}),e.Galacean)}(this,function(e,t){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,i=Array(t);r<t;r++)i[r]=e[r];return i}function i(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(i)return(i=i.call(e)).next.bind(i);if(Array.isArray(e)||(i=function(e,t){if(e){if("string"==typeof e)return r(e,void 0);var i=Object.prototype.toString.call(e).slice(8,-1);if("Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i)return Array.from(i);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return r(e,void 0)}}(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function n(e,t){return(n=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function a(e,t){if("function"!=typeof t&&null!==t)throw TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&n(e,t)}function o(e,t,r,i){var n,a=arguments.length,o=a<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,i);else for(var s=e.length-1;s>=0;s--)(n=e[s])&&(o=(a<3?n(o):a>3?n(t,r,o):n(t,r))||o);return a>3&&o&&Object.defineProperty(t,r,o),o}"function"==typeof SuppressedError&&SuppressedError;var s,c,u,l,p,h,d,_,f,S,v,m,g,y,x,E,T,C,b,A,P,R,I,O,L,N,G,M,k,D,F,B,w,U,V,W,H,j,q,z,Q,X,K,Y,J,$,Z,ee,et,er,ei,en,ea,eo,es,ec,eu,el=/*#__PURE__*/function(){function e(){}var t=e.prototype;return t.set=function(e,t){this.start=e,this.end=t},t.dispose=function(){this.start.dispose(),this.end.dispose()},e}(),ep=/*#__PURE__*/function(){function e(){}var t=e.prototype;return t.set=function(e){this.index=e},t.dispose=function(){this.index=0},e}(),eh=((s={})[s.ATTRIBUTE=0]="ATTRIBUTE",s[s.CONST=1]="CONST",s[s.BOOL=2]="BOOL",s[s.FLOAT=3]="FLOAT",s[s.DOUBLE=4]="DOUBLE",s[s.INT=5]="INT",s[s.UINT=6]="UINT",s[s.BREAK=7]="BREAK",s[s.CONTINUE=8]="CONTINUE",s[s.DO=9]="DO",s[s.ELSE=10]="ELSE",s[s.FOR=11]="FOR",s[s.IF=12]="IF",s[s.WHILE=13]="WHILE",s[s.DISCARD=14]="DISCARD",s[s.RETURN=15]="RETURN",s[s.BVEC2=16]="BVEC2",s[s.BVEC3=17]="BVEC3",s[s.BVEC4=18]="BVEC4",s[s.IVEC2=19]="IVEC2",s[s.IVEC3=20]="IVEC3",s[s.IVEC4=21]="IVEC4",s[s.UVEC2=22]="UVEC2",s[s.UVEC3=23]="UVEC3",s[s.UVEC4=24]="UVEC4",s[s.VEC2=25]="VEC2",s[s.VEC3=26]="VEC3",s[s.VEC4=27]="VEC4",s[s.VEC4_ARRAY=28]="VEC4_ARRAY",s[s.MAT2=29]="MAT2",s[s.MAT3=30]="MAT3",s[s.MAT4=31]="MAT4",s[s.MAT2X3=32]="MAT2X3",s[s.MAT2X4=33]="MAT2X4",s[s.MAT3X2=34]="MAT3X2",s[s.MAT3X4=35]="MAT3X4",s[s.MAT4X2=36]="MAT4X2",s[s.MAT4X3=37]="MAT4X3",s[s.IN=38]="IN",s[s.OUT=39]="OUT",s[s.INOUT=40]="INOUT",s[s.CENTROID=41]="CENTROID",s[s.SAMPLER2D=42]="SAMPLER2D",s[s.SAMPLER3D=43]="SAMPLER3D",s[s.SAMPLER_CUBE=44]="SAMPLER_CUBE",s[s.SAMPLER2D_SHADOW=45]="SAMPLER2D_SHADOW",s[s.SAMPLER_CUBE_SHADOW=46]="SAMPLER_CUBE_SHADOW",s[s.SAMPLER2D_ARRAY=47]="SAMPLER2D_ARRAY",s[s.SAMPLER2D_ARRAY_SHADOW=48]="SAMPLER2D_ARRAY_SHADOW",s[s.I_SAMPLER2D=49]="I_SAMPLER2D",s[s.I_SAMPLER3D=50]="I_SAMPLER3D",s[s.I_SAMPLER_CUBE=51]="I_SAMPLER_CUBE",s[s.I_SAMPLER2D_ARRAY=52]="I_SAMPLER2D_ARRAY",s[s.U_SAMPLER2D=53]="U_SAMPLER2D",s[s.U_SAMPLER3D=54]="U_SAMPLER3D",s[s.U_SAMPLER_CUBE=55]="U_SAMPLER_CUBE",s[s.U_SAMPLER2D_ARRAY=56]="U_SAMPLER2D_ARRAY",s[s.STRUCT=57]="STRUCT",s[s.LAYOUT=58]="LAYOUT",s[s.LOCATION=59]="LOCATION",s[s.VOID=60]="VOID",s[s.TRUE=61]="TRUE",s[s.FALSE=62]="FALSE",s[s.PRECISION=63]="PRECISION",s[s.PRECISE=64]="PRECISE",s[s.HIGHP=65]="HIGHP",s[s.MEDIUMP=66]="MEDIUMP",s[s.LOWP=67]="LOWP",s[s.INVARIANT=68]="INVARIANT",s[s.SMOOTH=69]="SMOOTH",s[s.FLAT=70]="FLAT",s[s.NOPERSPECTIVE=71]="NOPERSPECTIVE",s[s.GS_RenderQueueType=72]="GS_RenderQueueType",s[s.GS_BlendState=73]="GS_BlendState",s[s.GS_DepthState=74]="GS_DepthState",s[s.GS_StencilState=75]="GS_StencilState",s[s.GS_RasterState=76]="GS_RasterState",s[s.GS_EditorProperties=77]="GS_EditorProperties",s[s.GS_EditorMacros=78]="GS_EditorMacros",s[s.GS_Editor=79]="GS_Editor",s[s.GS_Tags=80]="GS_Tags",s[s.GS_ReplacementTag=81]="GS_ReplacementTag",s[s.GS_LightMode=82]="GS_LightMode",s[s.GS_PipelineStage=83]="GS_PipelineStage",s[s.GS_VertexShader=84]="GS_VertexShader",s[s.GS_FragmentShader=85]="GS_FragmentShader",s[s.GS_SubShader=86]="GS_SubShader",s[s.GS_Pass=87]="GS_Pass",s[s.GS_BlendFactor=88]="GS_BlendFactor",s[s.GS_BlendOperation=89]="GS_BlendOperation",s[s.GS_Bool=90]="GS_Bool",s[s.GS_Number=91]="GS_Number",s[s.GS_Color=92]="GS_Color",s[s.GS_CompareFunction=93]="GS_CompareFunction",s[s.GS_StencilOperation=94]="GS_StencilOperation",s[s.GS_CullMode=95]="GS_CullMode",s[s.GS_UsePass=96]="GS_UsePass",s),ed=new Map([["attribute",eh.ATTRIBUTE],["const",eh.CONST],["bool",eh.BOOL],["float",eh.FLOAT],["double",eh.DOUBLE],["int",eh.INT],["uint",eh.UINT],["break",eh.BREAK],["continue",eh.CONTINUE],["do",eh.DO],["else",eh.ELSE],["for",eh.FOR],["if",eh.IF],["while",eh.WHILE],["discard",eh.DISCARD],["return",eh.RETURN],["bvec2",eh.BVEC2],["bvec3",eh.BVEC3],["bvec4",eh.BVEC4],["ivec2",eh.IVEC2],["ivec3",eh.IVEC3],["ivec4",eh.IVEC4],["uvec2",eh.UVEC2],["uvec3",eh.UVEC3],["uvec4",eh.UVEC4],["vec2",eh.VEC2],["vec3",eh.VEC3],["vec4",eh.VEC4],["mat2",eh.MAT2],["mat3",eh.MAT3],["mat4",eh.MAT4],["in",eh.IN],["out",eh.OUT],["inout",eh.INOUT],["sampler2D",eh.SAMPLER2D],["samplerCube",eh.SAMPLER_CUBE],["sampler3D",eh.SAMPLER3D],["sampler2DShadow",eh.SAMPLER2D_SHADOW],["samplerCubeShadow",eh.SAMPLER_CUBE_SHADOW],["sampler2DArray",eh.SAMPLER2D_ARRAY],["sampler2DArrayShadow",eh.SAMPLER2D_ARRAY_SHADOW],["isampler2D",eh.I_SAMPLER2D],["isampler3D",eh.I_SAMPLER3D],["isamplerCube",eh.I_SAMPLER_CUBE],["isampler2DArray",eh.I_SAMPLER2D_ARRAY],["usampler2D",eh.U_SAMPLER2D],["usampler3D",eh.U_SAMPLER3D],["usamplerCube",eh.U_SAMPLER_CUBE],["usampler2DArray",eh.U_SAMPLER2D_ARRAY],["struct",eh.STRUCT],["void",eh.VOID],["true",eh.TRUE],["false",eh.FALSE],["precision",eh.PRECISION],["precise",eh.PRECISE],["highp",eh.HIGHP],["mediump",eh.MEDIUMP],["lowp",eh.LOWP],["invariant",eh.INVARIANT],["flat",eh.FLAT],["smooth",eh.SMOOTH],["noperspective",eh.NOPERSPECTIVE],["centroid",eh.CENTROID],["layout",eh.LAYOUT],["location",eh.LOCATION]]),e_=((c={})[c.ID=1e3]="ID",c[c.FLOAT_CONSTANT=1001]="FLOAT_CONSTANT",c[c.INT_CONSTANT=1002]="INT_CONSTANT",c[c.STRING_CONST=1003]="STRING_CONST",c[c.LEFT_OP=1004]="LEFT_OP",c[c.RIGHT_OP=1005]="RIGHT_OP",c[c.INC_OP=1006]="INC_OP",c[c.DEC_OP=1007]="DEC_OP",c[c.LE_OP=1008]="LE_OP",c[c.GE_OP=1009]="GE_OP",c[c.EQ_OP=1010]="EQ_OP",c[c.NE_OP=1011]="NE_OP",c[c.AND_OP=1012]="AND_OP",c[c.OR_OP=1013]="OR_OP",c[c.XOR_OP=1014]="XOR_OP",c[c.MUL_ASSIGN=1015]="MUL_ASSIGN",c[c.DIV_ASSIGN=1016]="DIV_ASSIGN",c[c.ADD_ASSIGN=1017]="ADD_ASSIGN",c[c.SUB_ASSIGN=1018]="SUB_ASSIGN",c[c.MOD_ASSIGN=1019]="MOD_ASSIGN",c[c.LEFT_ASSIGN=1020]="LEFT_ASSIGN",c[c.RIGHT_ASSIGN=1021]="RIGHT_ASSIGN",c[c.AND_ASSIGN=1022]="AND_ASSIGN",c[c.XOR_ASSIGN=1023]="XOR_ASSIGN",c[c.OR_ASSIGN=1024]="OR_ASSIGN",c[c.LEFT_PAREN=1025]="LEFT_PAREN",c[c.RIGHT_PAREN=1026]="RIGHT_PAREN",c[c.LEFT_BRACKET=1027]="LEFT_BRACKET",c[c.RIGHT_BRACKET=1028]="RIGHT_BRACKET",c[c.LEFT_BRACE=1029]="LEFT_BRACE",c[c.RIGHT_BRACE=1030]="RIGHT_BRACE",c[c.DOT=1031]="DOT",c[c.COMMA=1032]="COMMA",c[c.COLON=1033]="COLON",c[c.EQUAL=1034]="EQUAL",c[c.SEMICOLON=1035]="SEMICOLON",c[c.BANG=1036]="BANG",c[c.DASH=1037]="DASH",c[c.TILDE=1038]="TILDE",c[c.PLUS=1039]="PLUS",c[c.STAR=1040]="STAR",c[c.SLASH=1041]="SLASH",c[c.PERCENT=1042]="PERCENT",c[c.LEFT_ANGLE=1043]="LEFT_ANGLE",c[c.RIGHT_ANGLE=1044]="RIGHT_ANGLE",c[c.VERTICAL_BAR=1045]="VERTICAL_BAR",c[c.CARET=1046]="CARET",c[c.AMPERSAND=1047]="AMPERSAND",c[c.QUESTION=1048]="QUESTION",c[c.NOT_WORD=1049]="NOT_WORD",c[c.EPSILON=1998]="EPSILON",c[c.EOF=1999]="EOF",c);function ef(e,t){return null!=t&&"undefined"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t}var eS=/*#__PURE__*/function(){function e(){}return e.createObjectPool=function(r){var i=new t.ClearableObjectPool(r);return e._shaderLabObjectPoolSet.push(i),i},e.clearAllShaderLabObjectPool=function(){for(var t=0,r=e._shaderLabObjectPoolSet.length;t<r;t++)e._shaderLabObjectPoolSet[t].clear()},e.createGSError=function(e,r,i,n,a){t.Logger.error(e)},e}();eS._shaderLabObjectPoolSet=[];var ev=/*#__PURE__*/function(){function e(){}var t=e.prototype;return t.set=function(e,t,r){if(this.type=e,this.lexeme=t,r){if(ef(r,el))this.location=r;else{var i=t_.createPosition(r.index+t.length);this.location=t_.createRange(r,i)}}},t.dispose=function(){},e}();ev.pool=eS.createObjectPool(ev);var em=new ev;em.set(e_.EOF,"/EOF");var eg=/*#__PURE__*/function(){function e(){}return e.isNum=function(e){return e>=48&&e<=57},e.isLetter=function(e){return 95===e||e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122},e.isAlpha=function(e){return 95===e||e>=65&&e<=90||e>=97&&e<=122},e.isPpCharacters=function(e){return 35===e||95===e||e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122},e.isSpace=function(e){return 9===e||10===e||13===e||32===e},e}();function ey(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function ex(e,t,r){return t&&ey(e.prototype,t),r&&ey(e,r),e}var eE=((u={}).PreprocessorError="PreprocessorError",u.CompilationError="CompilationError",u.ScannerError="ScannerError",u),eT=/*#__PURE__*/function(){function e(e,t){void 0===t&&(t=new Map),this._currentIndex=0,this._source=e,this._keywordsMap=t}var t=e.prototype;return t.getCurPosition=function(){return t_.createPosition(this._currentIndex)},t.isEnd=function(){return this._currentIndex>=this._source.length},t.getCurChar=function(){return this._source[this._currentIndex]},t.getCurCharCode=function(){return this._source.charCodeAt(this._currentIndex)},t.advance=function(e){void 0===e&&(e=1),this._currentIndex+=e},t._advance=function(){this._currentIndex++},t.skipSpace=function(t){for(var r=t?e._spaceCharsWithBreak:e._spaceChars,i=this.getCurChar();e._checkIsIn(i,r);)this._advance(),i=this.getCurChar()},t.skipCommentsAndSpace=function(){if(this.skipSpace(!0),"//"===this.peek(2)){var e=this.getCurPosition();this.advance(2);for(var t=this.getCurChar();"\n"!==t&&"\r"!==t&&!this.isEnd();)this._advance(),t=this.getCurChar();return this.skipCommentsAndSpace(),t_.createRange(e,this.getCurPosition())}if("/*"===this.peek(2)){var r=this.getCurPosition();for(this.advance(2);"*/"!==this.peek(2)&&!this.isEnd();)this._advance();return this.advance(2),this.skipCommentsAndSpace(),t_.createRange(r,this.getCurPosition())}},t.peek=function(e){var t=this._currentIndex;return this._source.substring(t,t+e)},t.scanText=function(e){this.skipCommentsAndSpace();var t=this.peek(e.length);t!==e&&this.throwError(this.getCurPosition(),'Expect text "'+e+'", but got "'+t+'"'),this.advance(e.length)},t.throwError=function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];throw eS.createGSError(r.join(" "),eE.ScannerError,this._source,e)},t.scanPairedText=function(e,t,r,i){void 0===r&&(r=!1),void 0===i&&(i=!1),i||this.scanText(e);for(var n=this._currentIndex,a=r?1:0;this.peek(t.length)!==t||0!==a;){if(this.isEnd())return;if(r){if(this.peek(e.length)===e){a+=1,this.advance(e.length);continue}if(this.peek(t.length)===t){if(0==(a-=1))break;this.advance(t.length);continue}}this.advance(t.length)}return this.advance(t.length),this._source.substring(n,this._currentIndex-t.length)},t.scanToken=function(e,t){void 0===t&&(t=/\w/),this.skipCommentsAndSpace();var r,i=this.getCurPosition();if(!this.isEnd()){for(;t.test(this.getCurChar())&&!this.isEnd();)this._advance();var n=this.getCurPosition();if(i.index===n.index){this._advance();var a=ev.pool.get();return a.set(e_.NOT_WORD,this._source[i.index],i),null==e||e(a,this),a}var o=this._source.substring(i.index,n.index),s=null!=(r=this._keywordsMap.get(o))?r:e_.ID,c=t_.createRange(i,n),u=ev.pool.get();return u.set(s,o,c),null==e||e(u,this),u}},e._checkIsIn=function(e,t){for(var r=0;r<t.length;r++)if(e===t[r])return!0;return!1},ex(e,[{key:"current",get:function(){return this._currentIndex}},{key:"source",get:function(){return this._source}}]),e}();eT._spaceCharsWithBreak=[" "," ","\n","\r"],eT._spaceChars=[" "," "];var eC=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var r=t.prototype;return r.reset=function(e){this._source=e,this._currentIndex=0},r.tokenize=function(){return function(e,t){var r,i,n,a={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return o.next=s(0),o.throw=s(1),o.return=s(2),"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(s){return function(c){return function(s){if(r)throw TypeError("Generator is already executing.");for(;o&&(o=0,s[0]&&(a=0)),a;)try{if(r=1,i&&(n=2&s[0]?i.return:s[0]?i.throw||((n=i.return)&&n.call(i),0):i.next)&&!(n=n.call(i,s[1])).done)return n;switch(i=0,n&&(s=[2&s[0],n.value]),s[0]){case 0:case 1:n=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,i=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(n=(n=a.trys).length>0&&n[n.length-1])&&(6===s[0]||2===s[0])){a=0;continue}if(3===s[0]&&(!n||s[1]>n[0]&&s[1]<n[3])){a.label=s[1];break}if(6===s[0]&&a.label<n[1]){a.label=n[1],n=s;break}if(n&&a.label<n[2]){a.label=n[2],a.ops.push(s);break}n[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],i=0}finally{r=n=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}}(this,function(e){switch(e.label){case 0:if(this.isEnd())return[3,2];return[4,this.scanToken()];case 1:return e.sent(),[3,0];case 2:return[2,em]}})},r.skipSpace=function(){for(;eg.isSpace(this.getCurCharCode());)this._advance()},r.scanToken=function(){if(this.skipCommentsAndSpace(),this.isEnd())return em;if(eg.isAlpha(this.getCurCharCode()))return this._scanWord();if(eg.isNum(this.getCurCharCode()))return this._scanNum();var e,t=this._getPosition(),r=ev.pool.get();switch(this.getCurChar()){case"<":if(this._advance(),"<"===(e=this.getCurChar())){if(this._advance(),"="===this.getCurChar()){this._advance(),r.set(e_.LEFT_ASSIGN,"<<=",t);break}r.set(e_.LEFT_OP,"<<",t);break}if("="===e){this._advance(),r.set(e_.LE_OP,"<=",t);break}r.set(e_.LEFT_ANGLE,"<",t);break;case">":if(this._advance(),">"===(e=this.getCurChar())){if(this._advance(),"="===this.getCurChar()){this._advance(),r.set(e_.RIGHT_ASSIGN,">>=",t);break}r.set(e_.RIGHT_OP,">>",t);break}if("="===e){this._advance(),r.set(e_.GE_OP,">=",t);break}r.set(e_.RIGHT_ANGLE,">",t);break;case"+":if(this._advance(),"+"===(e=this.getCurChar())){this._advance(),r.set(e_.INC_OP,"++",t);break}if("="===e){this._advance(),r.set(e_.ADD_ASSIGN,"+=",t);break}r.set(e_.PLUS,"+",t);break;case"-":if(this._advance(),"-"===(e=this.getCurChar())){this._advance(),r.set(e_.DEC_OP,"--",t);break}if("="===e){this._advance(),r.set(e_.SUB_ASSIGN,"-=",t);break}r.set(e_.DASH,"-",t);break;case"=":if(this._advance(),"="===this.getCurChar()){this._advance(),r.set(e_.EQ_OP,"==",t);break}r.set(e_.EQUAL,"=",t);break;case"!":if(this._advance(),"="===this.getCurChar()){this._advance(),r.set(e_.NE_OP,"!=",t);break}r.set(e_.BANG,"!",t);break;case"&":if(this._advance(),"&"===(e=this.getCurChar())){this._advance(),r.set(e_.AND_OP,"&&",t);break}if("="===e){this._advance(),r.set(e_.ADD_ASSIGN,"&=",t);break}r.set(e_.AMPERSAND,"&",t);break;case"|":if(this._advance(),"|"===(e=this.getCurChar())){this._advance(),r.set(e_.OR_OP,"||",t);break}if("="===e){this._advance(),r.set(e_.OR_ASSIGN,"|=",t);break}r.set(e_.VERTICAL_BAR,"|",t);break;case"^":if(this._advance(),"^"===(e=this.getCurChar())){this._advance(),r.set(e_.XOR_OP,"^^",t);break}if("="===e){this._advance(),r.set(e_.XOR_ASSIGN,"^=",t);break}r.set(e_.CARET,"^",t);break;case"*":if(this._advance(),"="===this.getCurChar()){this._advance(),r.set(e_.MUL_ASSIGN,"*=",t);break}r.set(e_.STAR,"*",t);break;case"/":if(this._advance(),"="===this.getCurChar()){this._advance(),r.set(e_.DIV_ASSIGN,"/=",t);break}r.set(e_.SLASH,"/",t);break;case"%":if(this._advance(),"="===this.getCurChar()){this._advance(),r.set(e_.MOD_ASSIGN,"%=",t);break}r.set(e_.PERCENT,"%",t);break;case"(":this._advance(),r.set(e_.LEFT_PAREN,"(",t);break;case")":this._advance(),r.set(e_.RIGHT_PAREN,")",t);break;case"{":this._advance(),r.set(e_.LEFT_BRACE,"{",t);break;case"}":this._advance(),r.set(e_.RIGHT_BRACE,"}",t);break;case"[":this._advance(),r.set(e_.LEFT_BRACKET,"[",t);break;case"]":this._advance(),r.set(e_.RIGHT_BRACKET,"]",t);break;case".":if(this._advance(),eg.isNum(this.getCurCharCode()))return this._scanNumAfterDot();r.set(e_.DOT,".",t);break;case",":this._advance(),r.set(e_.COMMA,",",t);break;case":":this._advance(),r.set(e_.COLON,":",t);break;case";":this._advance(),r.set(e_.SEMICOLON,";",t);break;case"~":this._advance(),r.set(e_.TILDE,"~",t);break;case"?":this._advance(),r.set(e_.QUESTION,"?",t);break;case'"':return this._advance(),this._scanStringConst();default:this.throwError(this.getCurPosition(),"Unexpected character "+this.getCurChar())}return r},r._scanStringConst=function(){for(var e=this._getPosition(),t=[];'"'!==this.getCurChar();)t.push(this.getCurChar()),this._advance();this._advance();var r=t_.createRange(e,this._getPosition()),i=ev.pool.get();return i.set(e_.STRING_CONST,t.join(""),r),i},r._scanNumAfterDot=function(){for(var e=["."];eg.isNum(this.getCurCharCode());)e.push(this.getCurChar()),this._advance();var t=ev.pool.get();return t.set(e_.FLOAT_CONSTANT,e.join(""),this._getPosition(1)),t},r._getPosition=function(e){return void 0===e&&(e=0),t_.createPosition(this.current-e)},r._scanWord=function(){var e=[this.getCurChar()],t=this._getPosition();for(this._advance();eg.isLetter(this.getCurCharCode());)e.push(this.getCurChar()),this._advance();var r=e.join(""),i=ed.get(r);if(i){var n=ev.pool.get();return n.set(i,r,t),n}var a=ev.pool.get();return a.set(e_.ID,r,t),a},r._scanNum=function(){for(var e=[];eg.isNum(this.getCurCharCode());)e.push(this.getCurChar()),this._advance();if("."===this.getCurChar()){for(e.push(this.getCurChar()),this._advance();eg.isNum(this.getCurCharCode());)e.push(this.getCurChar()),this._advance();this._scanFloatSuffix(e);var t=ev.pool.get();return t.set(e_.FLOAT_CONSTANT,e.join(""),this._getPosition(e.length)),t}if("e"===this.getCurChar()||"E"===this.getCurChar()){this._scanFloatSuffix(e);var r=ev.pool.get();return r.set(e_.FLOAT_CONSTANT,e.join(""),this._getPosition(e.length)),r}this._scanIntegerSuffix(e);var i=ev.pool.get();return i.set(e_.INT_CONSTANT,e.join(""),this._getPosition(e.length)),i},r._scanFloatSuffix=function(e){if("e"===this.getCurChar()||"E"===this.getCurChar())for(e.push(this.getCurChar()),this._advance(),("+"===this.getCurChar()||"-"===this.getCurChar())&&(e.push(this.getCurChar()),this._advance()),eg.isNum(this.getCurCharCode())||this.throwError(this.getCurPosition(),"lexing error, invalid exponent suffix.");eg.isNum(this.getCurCharCode());)e.push(this.getCurChar()),this._advance();("f"===this.getCurChar()||"F"===this.getCurChar())&&(e.push(this.getCurChar()),this._advance())},r._scanIntegerSuffix=function(e){("u"===this.getCurChar()||"U"===this.getCurChar())&&(e.push(this.getCurChar()),this._advance())},t}(eT),eb=((l={})[l.Shift=0]="Shift",l[l.Reduce=1]="Reduce",l[l.Accept=2]="Accept",l),eA=function(){this.globalPrecisions=[]},eP=function(e,t,r){this.type=e,this.typeLexeme=t,this.arraySpecifier=r},eR=((p={})[p.VAR=0]="VAR",p[p.FN=1]="FN",p[p.STRUCT=2]="STRUCT",p),eI=function(e,t,r,i,n){this.ident=e,this.symbolType=t,this.astNode=r,this.dataType=i,this.signature=n},eO=/*#__PURE__*/function(e){function t(t,r){var i=new eP(r.protoType.returnType.type,r.protoType.returnType.typeSpecifier.lexeme);return e.call(this,t,eR.FN,r,i)||this}return a(t,e),t}(eI),eL=/*#__PURE__*/function(e){function t(t,r){return e.call(this,t,eR.STRUCT,r)||this}return a(t,e),t}(eI),eN=function(){this._table=new Map},eG=/*#__PURE__*/function(){function e(){this.stack=[]}var t=e.prototype;return t.newScope=function(e){this.stack.push(e)},t.clear=function(){this.stack.length=0},t.dropScope=function(){this.stack.pop()},t.insert=function(e){this._scope.insert(e)},ex(e,[{key:"_scope",get:function(){return this.stack[this.stack.length-1]}}]),e}(),eM=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}a(r,e);var i=r.prototype;return i.insert=function(e){for(var r,i=null!=(r=this._table.get(e.ident))?r:[],n=0;n<i.length;n++)if(this._compareWith(i[n],e.symbolType,e.signature,e.astNode)){t.Logger.warn("replace symbol:",e.ident),i[n]=e;return}i.push(e),this._table.set(e.ident,i)},i.lookup=function(e,t,r,i){var n=this._table.get(e);if(n)for(var a=n.length,o=0;o<a;o++){var s=n[o];if(this._compareWith(s,t,r,i))return s}},i.getAllFnSymbols=function(e){var t;return(null!=(t=this._table.get(e))?t:[]).filter(function(e){return e.symbolType===eR.FN})},i._compareWith=function(e,t,r,i){if(e.symbolType!==t)return!1;if(e.symbolType===eR.FN){if(!i&&!r)return!0;var n=e.astNode.protoType.paramSig,a=null!=r?r:i.protoType.paramSig,o=n.length;if(o!==a.length)return!1;for(var s=0;s<o;s++){var c=n[s],u=a[s];if(3e3!==c&&3e3!==u&&c!==u)return!1}}return!0},r}(eN),ek=/*#__PURE__*/function(e){function t(t,r,i,n){var a;return(a=e.call(this,t,eR.VAR,n,r)||this).isGlobalVariable=i,a}return a(t,e),t}(eI),eD=/*#__PURE__*/function(){function e(){this.semanticStack=[],this.acceptRule=void 0,this.symbolTableStack=new eG,this.curFunctionInfo={},this._shaderData=new eA,this._translationRuleTable=new Map,this.newScope()}var r=e.prototype;return r.reset=function(){this.semanticStack.length=0,this._shaderData=new eA,this.symbolTableStack.clear(),this.newScope()},r.newScope=function(){var e=new eM;this.symbolTableStack.newScope(e)},r.dropScope=function(){return this.symbolTableStack.dropScope()},r.addTranslationRule=function(e,t){this._translationRuleTable.set(e,t)},r.getTranslationRule=function(e){return this._translationRuleTable.get(e)},r.lookupSymbolBy=function(e,t,r,i){for(var n=this.symbolTableStack.stack,a=n.length,o=a-1;o>=0;o--){var s=n[o].lookup(e,t,r,i);if(s)return s}},r.reportError=function(e,r){t.Logger.error(r)},ex(e,[{key:"shaderData",get:function(){return this._shaderData}}]),e}(),eF=((h={})[h.START=2e3]="START",h[h.gs_shader_program=2001]="gs_shader_program",h[h.global_declaration=2002]="global_declaration",h[h.variable_declaration=2003]="variable_declaration",h[h.variable_declaration_list=2004]="variable_declaration_list",h[h.variable_declaration_statement=2005]="variable_declaration_statement",h[h.array_specifier_list=2006]="array_specifier_list",h[h.array_specifier=2007]="array_specifier",h[h.ext_builtin_type_specifier_nonarray=2008]="ext_builtin_type_specifier_nonarray",h[h.precision_specifier=2009]="precision_specifier",h[h.variable_identifier=2010]="variable_identifier",h[h.variable_identifier_node=2011]="variable_identifier_node",h[h.primary_expression=2012]="primary_expression",h[h.postfix_expression=2013]="postfix_expression",h[h.integer_expression=2014]="integer_expression",h[h.function_call=2015]="function_call",h[h.function_call_generic=2016]="function_call_generic",h[h.function_call_header_no_parameters=2017]="function_call_header_no_parameters",h[h.function_call_header_with_parameters=2018]="function_call_header_with_parameters",h[h.function_call_parameter_list=2019]="function_call_parameter_list",h[h.function_call_header=2020]="function_call_header",h[h.function_identifier=2021]="function_identifier",h[h.constructor_identifier=2022]="constructor_identifier",h[h.unary_expression=2023]="unary_expression",h[h.unary_operator=2024]="unary_operator",h[h.multiplicative_expression=2025]="multiplicative_expression",h[h.additive_expression=2026]="additive_expression",h[h.shift_expression=2027]="shift_expression",h[h.relational_expression=2028]="relational_expression",h[h.equality_expression=2029]="equality_expression",h[h.and_expression=2030]="and_expression",h[h.inclusive_or_expression=2031]="inclusive_or_expression",h[h.exclusive_or_expression=2032]="exclusive_or_expression",h[h.logical_and_expression=2033]="logical_and_expression",h[h.logical_xor_expression=2034]="logical_xor_expression",h[h.logical_or_expression=2035]="logical_or_expression",h[h.conditional_expression=2036]="conditional_expression",h[h.assignment_expression=2037]="assignment_expression",h[h.assignment_operator=2038]="assignment_operator",h[h.expression=2039]="expression",h[h.integer_constant_expression=2040]="integer_constant_expression",h[h.integer_constant_expression_operator=2041]="integer_constant_expression_operator",h[h.declaration=2042]="declaration",h[h.function_prototype=2043]="function_prototype",h[h.function_declarator=2044]="function_declarator",h[h.function_header_with_parameters=2045]="function_header_with_parameters",h[h.function_header=2046]="function_header",h[h.function_parameter_list=2047]="function_parameter_list",h[h.parameter_declarator=2048]="parameter_declarator",h[h.parameter_declaration=2049]="parameter_declaration",h[h.parameter_qualifier=2050]="parameter_qualifier",h[h.parameter_type_specifier=2051]="parameter_type_specifier",h[h.init_declarator_list=2052]="init_declarator_list",h[h.single_declaration=2053]="single_declaration",h[h.fully_specified_type=2054]="fully_specified_type",h[h.type_qualifier=2055]="type_qualifier",h[h.single_type_qualifier=2056]="single_type_qualifier",h[h.storage_qualifier=2057]="storage_qualifier",h[h.precision_qualifier=2058]="precision_qualifier",h[h.interpolation_qualifier=2059]="interpolation_qualifier",h[h.invariant_qualifier=2060]="invariant_qualifier",h[h.type_specifier=2061]="type_specifier",h[h.type_specifier_nonarray=2062]="type_specifier_nonarray",h[h.type_specifier_no_prec=2063]="type_specifier_no_prec",h[h.basic_type=2064]="basic_type",h[h.struct_specifier=2065]="struct_specifier",h[h.struct_declaration_list=2066]="struct_declaration_list",h[h.struct_declaration=2067]="struct_declaration",h[h.layout_qualifier=2068]="layout_qualifier",h[h.struct_declarator_list=2069]="struct_declarator_list",h[h.struct_declarator=2070]="struct_declarator",h[h.identifier_list=2071]="identifier_list",h[h.decl_identifier=2072]="decl_identifier",h[h.initializer=2073]="initializer",h[h.initializer_list=2074]="initializer_list",h[h.declaration_statement=2075]="declaration_statement",h[h.simple_statement=2076]="simple_statement",h[h.compound_statement_no_scope=2077]="compound_statement_no_scope",h[h.statement_with_scope=2078]="statement_with_scope",h[h.compound_statement=2079]="compound_statement",h[h.statement=2080]="statement",h[h.statement_list=2081]="statement_list",h[h.iteration_statement_no_new_scope=2082]="iteration_statement_no_new_scope",h[h.expression_statement=2083]="expression_statement",h[h.selection_statement=2084]="selection_statement",h[h.selection_rest_statement=2085]="selection_rest_statement",h[h.condition=2086]="condition",h[h.conditionopt=2087]="conditionopt",h[h.iteration_statement=2088]="iteration_statement",h[h.for_init_statement=2089]="for_init_statement",h[h.for_rest_statement=2090]="for_rest_statement",h[h.jump_statement=2091]="jump_statement",h[h.external_declaration=2092]="external_declaration",h[h.function_definition=2093]="function_definition",h[h.field_selection=2094]="field_selection",h[h.bool_constant=2095]="bool_constant",h[h.function_identifier_node=2096]="function_identifier_node",h[h.typename_identifier_node=2097]="typename_identifier_node",h[h.scope_brace=2098]="scope_brace",h[h.scope_end_brace=2099]="scope_end_brace",h[h._ignore=2100]="_ignore",h),eB=function e(t,r){this.goal=t,this.derivation=r,this.id=e._id++,e.pool.set(this.id,this)};eB._id=0,eB.pool=new Map;var ew=/*#__PURE__*/function(){function e(e,t){this.startSymbol=e,t.unshift(new eB(eF.START,[e])),this.productions=t}var t=e.prototype;return t.getProductionList=function(e){return this.productions.filter(function(t){return t.goal===e})},t.isNullableNT=function(e){return this.productions.find(function(t){return t.goal===e&&t.derivation[0]===e_.EPSILON})},t.getProductionByID=function(e){return eB.pool.get(e)},e.create=function(t,r){return new e(t,r.map(function(e){return new eB(e[0],e.slice(1))}))},e}(),eU=function(e,t,r){this.type=e,this.typeLexeme=t,this.arraySpecifier=r},eV=function(e,t,r){this.typeInfo=e,this.ident=t,this.mrtIndex=r};function eW(e){return function(t){t.prototype.nt=e,t.pool=eS.createObjectPool(t)}}var eH=/*#__PURE__*/function(){function e(){}var t=e.prototype;return t.set=function(e,t){this._location=e,this._children=t,this.init()},t.init=function(){},t.dispose=function(){},t.codeGen=function(e){return e.defaultCodeGen(this.children)},t.semanticAnalyze=function(e){},ex(e,[{key:"children",get:function(){return this._children}},{key:"location",get:function(){return this._location}}]),e}();(d=eu||(eu={}))._unwrapToken=function(e){if(ef(e,ev))return e;throw"not token"},d.get=function(e,t,r,i){var n=e.get();n.set(r,i),n.semanticAnalyze(t),t.semanticStack.push(n)},_=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t}(eH),d.TrivialNode=_,_=o([eW(eF._ignore)],_),f=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.semanticAnalyze=function(e){e.newScope()},t}(eH),d.ScopeBrace=f,f=o([eW(eF.scope_brace)],f),S=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.semanticAnalyze=function(e){e.dropScope()},t}(eH),d.ScopeEndBrace=S,S=o([eW(eF.scope_end_brace)],S),v=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var r=t.prototype;return r.init=function(){this.isFragReturnStatement=!1},r.semanticAnalyze=function(e){d._unwrapToken(this.children[0]).type===eh.RETURN&&(e.curFunctionInfo.returnStatement=this)},r.codeGen=function(e){return e.visitJumpStatement(this)},t}(eH),d.JumpStatement=v,v=o([eW(eF.jump_statement)],v),m=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.init=function(){this._type=void 0},ex(t,[{key:"type",get:function(){var e;return null!=(e=this._type)?e:3e3},set:function(e){this._type=e}}]),t}(eH),d.ExpressionAstNode=m,g=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var r=t.prototype;return r.init=function(){this.typeSpecifier=void 0,this.arraySpecifier=void 0},r.semanticAnalyze=function(e){var t,r=this.children,i=r.length,n=r[0],a=n.typeSpecifier;this.typeSpecifier=a,this.arraySpecifier=a.arraySpecifier;var o=r[1];if(2===i||4===i){var s=new eU(n.type,a.lexeme,this.arraySpecifier),c=r[3];t=new ek(o.lexeme,s,!1,c)}else{var u=r[2];this.arraySpecifier=u;var l=new eU(n.type,a.lexeme,this.arraySpecifier),p=r[4];t=new ek(o.lexeme,l,!1,p)}e.symbolTableStack.insert(t)},r.codeGen=function(e){return e.visitSingleDeclaration(this)},t}(eH),d.SingleDeclaration=g,g=o([eW(eF.single_declaration)],g),y=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.semanticAnalyze=function(e){var t=this.children;this.typeSpecifier=1===t.length?t[0]:t[1],this.type=this.typeSpecifier.type},t}(eH),d.FullySpecifiedType=y,y=o([eW(eF.fully_specified_type)],y),x=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t}(eH),d.TypeQualifier=x,x=o([eW(eF.type_qualifier)],x),E=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.semanticAnalyze=function(e){var t=this.children[0];ef(t,ev)?this.qualifier=t.type:this.qualifier=t.qualifier,this.lexeme=t.lexeme},t}(eH),d.SingleTypeQualifier=E,E=o([eW(eF.single_type_qualifier)],E),T=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var r=t.prototype;return r.init=function(){this.arraySize=void 0},r.semanticAnalyze=function(e){var t,r=this.children,i=r[0];this.type=i.type,this.lexeme=i.lexeme,this.arraySize=null==r?void 0:null==(t=r[1])?void 0:t.size,this.isCustom="string"==typeof this.type},ex(t,[{key:"arraySpecifier",get:function(){return this.children[1]}}]),t}(eH),d.TypeSpecifier=T,T=o([eW(eF.type_specifier)],T),C=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.semanticAnalyze=function(e){var t=this.children[1];this.size=t.value},t}(eH),d.ArraySpecifier=C,C=o([eW(eF.array_specifier)],C),b=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.semanticAnalyze=function(e){var t=this.children[0];switch(this.lexeme=t.lexeme,t.type){case e_.PLUS:this.compute=function(e,t){return e+t};break;case e_.DASH:this.compute=function(e,t){return e-t};break;case e_.STAR:this.compute=function(e,t){return e*t};break;case e_.SLASH:this.compute=function(e,t){return e/t};break;case e_.PERCENT:this.compute=function(e,t){return e%t};break;default:e.reportError(t.location,"not implemented operator "+t.lexeme)}},t}(eH),d.IntegerConstantExpressionOperator=b,b=o([eW(eF.integer_constant_expression_operator)],b),A=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var r=t.prototype;return r.init=function(){this.value=void 0},r.semanticAnalyze=function(e){if(1===this.children.length){var t=this.children[0];ef(t,ev)&&(this.value=Number(t.lexeme))}},t}(eH),d.IntegerConstantExpression=A,A=o([eW(eF.integer_constant_expression)],A),P=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.init=function(){var e=this.children[0];ef(e,ev)?this.type=e.lexeme:this.type=e.type,this.lexeme=e.lexeme},t}(eH),d.TypeSpecifierNonArray=P,P=o([eW(eF.type_specifier_nonarray)],P),R=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.init=function(){var e=this.children[0];this.type=e.type,this.lexeme=e.lexeme},t}(eH),d.ExtBuiltinTypeSpecifierNonArray=R,R=o([eW(eF.ext_builtin_type_specifier_nonarray)],R),I=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.semanticAnalyze=function(e){var t,r=this.children,i=r.length;if(1===i){var n=r[0],a=n.typeSpecifier,o=n.arraySpecifier;this.typeInfo=new eU(a.type,a.lexeme,o)}else{var s=r[0];this.typeInfo=s.typeInfo}if(3===i||5===i)t=new ek(r[2].lexeme,this.typeInfo,!1,this),e.symbolTableStack.insert(t);else if(4===i||6===i){var c=this.typeInfo,u=this.children[3];c.arraySpecifier=u,t=new ek(r[2].lexeme,c,!1,this),e.symbolTableStack.insert(t)}},t}(eH),d.InitDeclaratorList=I,I=o([eW(eF.init_declarator_list)],I),O=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.idList=[],t}a(t,e);var r=t.prototype;return r.init=function(){this.idList.length=0},r.semanticAnalyze=function(e){var t=this.children,r=this.idList;if(2===t.length)r.push(t[1]);else{var i=t[0],n=t[2],a=i.idList.length;r.length=a+1;for(var o=0;o<a;o++)r[o]=i.idList[o];r[a]=n}},t}(eH),d.IdentifierList=O,O=o([eW(eF.identifier_list)],O),L=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.codeGen=function(e){return e.visitDeclaration(this)},t}(eH),d.Declaration=L,L=o([eW(eF.declaration)],L),N=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var r=t.prototype;return r.semanticAnalyze=function(e){var t=this.children[0];this.ident=t.ident,this.returnType=t.returnType,this.parameterList=t.parameterInfoList,this.paramSig=t.paramSig},r.codeGen=function(e){return e.visitFunctionProtoType(this)},t}(eH),d.FunctionProtoType=N,N=o([eW(eF.function_prototype)],N),G=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.semanticAnalyze=function(e){e.curFunctionInfo.returnStatement=null,e.curFunctionInfo.header=this;var t=this.children,r=t[0],i=t[1];this.ident=r.ident,this.returnType=r.returnType,this.parameterInfoList=null==i?void 0:i.parameterInfoList,this.paramSig=null==i?void 0:i.paramSig},t}(eH),d.FunctionDeclarator=G,G=o([eW(eF.function_declarator)],G),M=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var r=t.prototype;return r.semanticAnalyze=function(e){e.newScope();var t=this.children;this.ident=t[1],this.returnType=t[0]},r.codeGen=function(e){return e.visitFunctionHeader(this)},t}(eH),d.FunctionHeader=M,M=o([eW(eF.function_header)],M),k=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.parameterInfoList=[],t.paramSig=[],t}a(t,e);var r=t.prototype;return r.init=function(){this.parameterInfoList.length=0,this.paramSig.length=0},r.semanticAnalyze=function(e){var t=this.children,r=t.length,i=this.parameterInfoList,n=this.paramSig;if(1===r){var a=t[0];i.push({ident:a.ident,typeInfo:a.typeInfo,astNode:a}),n.push(a.typeInfo.type)}else{var o=t[0],s=t[2],c=o.parameterInfoList.length;i.length=c+1,n.length=c+1;for(var u=0;u<c;u++)i[u]=o.parameterInfoList[u],n[u]=o.paramSig[u];i[c]={ident:s.ident,typeInfo:s.typeInfo,astNode:s},n[c]=s.typeInfo.type}},r.codeGen=function(e){return e.visitFunctionParameterList(this)},t}(eH),d.FunctionParameterList=k,k=o([eW(eF.function_parameter_list)],k),D=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var r=t.prototype;return r.init=function(){this.typeQualifier=void 0},r.semanticAnalyze=function(e){var t,r=this.children,i=r.length;t=1===i?r[0]:r[1],2===i&&(this.typeQualifier=r[0]),this.typeInfo=t.typeInfo,this.ident=t.ident;var n=new ek(t.ident.lexeme,t.typeInfo,!1,this);e.symbolTableStack.insert(n)},t}(eH),d.ParameterDeclaration=D,D=o([eW(eF.parameter_declaration)],D),F=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.semanticAnalyze=function(e){var t=this.children;this.ident=t[1];var r=t[0],i=t[2];this.typeInfo=new eU(r.type,r.lexeme,i)},t}(eH),d.ParameterDeclarator=F,F=o([eW(eF.parameter_declarator)],F),B=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t}(eH),d.CompoundStatementNoScope=B,B=o([eW(eF.compound_statement_no_scope)],B),w=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.codeGen=function(e){return e.visitStatementList(this)},t}(eH),d.StatementList=w,w=o([eW(eF.statement_list)],w),U=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var r=t.prototype;return r.init=function(){this.returnStatement=void 0},r.semanticAnalyze=function(e){var t=this.children;this.protoType=t[0],this.statements=t[1],e.dropScope();var r=new eO(this.protoType.ident.lexeme,this);e.symbolTableStack.insert(r);var i=e.curFunctionInfo,n=i.header,a=i.returnStatement;n.returnType.type===eh.VOID?a&&e.reportError(n.returnType.location,"Return in void function."):a?this.returnStatement=a:e.reportError(n.returnType.location,"No return statement found."),i.header=void 0,i.returnStatement=void 0},r.codeGen=function(e){return e.visitFunctionDefinition(this)},t}(eH),d.FunctionDefinition=U,U=o([eW(eF.function_definition)],U),V=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var r=t.prototype;return r.semanticAnalyze=function(e){this.type=this.children[0].type},r.codeGen=function(e){return e.visitFunctionCall(this)},t}(m),d.FunctionCall=V,V=o([eW(eF.function_call)],V),W=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var r=t.prototype;return r.init=function(){e.prototype.init.call(this),this.fnSymbol=void 0},r.semanticAnalyze=function(e){var t=this.children[0];if(t.isBuiltin)this.type=t.ident;else{var r,i,n=t.ident;if(4===this.children.length){var a=this.children[2];ef(a,H)&&(i=a.paramSig)}var o=e.lookupSymbolBy(n,eR.FN,i);if(!o)return;this.type=null==o?void 0:null==(r=o.dataType)?void 0:r.type,this.fnSymbol=o}},t}(m),d.FunctionCallGeneric=W,W=o([eW(eF.function_call_generic)],W),H=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.paramSig=[],t.paramNodes=[],t}a(t,e);var r=t.prototype;return r.init=function(){this.paramSig.length=0,this.paramNodes.length=0},r.semanticAnalyze=function(e){var t=this.children,r=this.paramSig,i=this.paramNodes;if(1===t.length){var n=t[0];void 0==n.type?r.push(3e3):r.push(n.type),this.paramNodes.push(n)}else{var a=t[0],o=t[2];if(0===a.paramSig.length||void 0==o.type)this.paramSig.push(3e3);else{var s=a.paramSig.length;r.length=s+1,i.length=s+1;for(var c=0;c<s;c++)r[c]=a.paramSig[c],i[c]=a.paramNodes[c];r[s]=o.type,i[s]=o}}},t}(eH),d.FunctionCallParameterList=H,H=o([eW(eF.function_call_parameter_list)],H),j=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.semanticAnalyze=function(e){e.shaderData.globalPrecisions.push(this)},t}(eH),d.PrecisionSpecifier=j,j=o([eW(eF.precision_specifier)],j),q=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var r=t.prototype;return r.semanticAnalyze=function(e){var t=this.children[0];this.ident=t.type,this.lexeme=t.lexeme,this.isBuiltin="string"!=typeof this.ident},r.codeGen=function(e){return e.visitFunctionIdentifier(this)},t}(eH),d.FunctionIdentifier=q,q=o([eW(eF.function_identifier)],q),z=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t}(m),d.AssignmentExpression=z,z=o([eW(eF.assignment_expression)],z),Q=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t}(m),d.Expression=Q,Q=o([eW(eF.expression)],Q),X=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.semanticAnalyze=function(e){if(1===this.children.length){var t,r=this.children[0];if(ef(r,en))this.type=null!=(t=r.typeInfo)?t:3e3;else switch(r.type){case e_.INT_CONSTANT:this._type=eh.INT;break;case e_.FLOAT_CONSTANT:this.type=eh.FLOAT;break;case eh.TRUE:case eh.FALSE:this.type=eh.BOOL}}else{var i=this.children[1];this.type=i.type}},t}(m),d.PrimaryExpression=X,X=o([eW(eF.primary_expression)],X),K=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var r=t.prototype;return r.init=function(){if(e.prototype.init.call(this),1===this.children.length){var t=this.children[0];this.type=t.type}},r.codeGen=function(e){return e.visitPostfixExpression(this)},t}(m),d.PostfixExpression=K,K=o([eW(eF.postfix_expression)],K),Y=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var r=t.prototype;return r.init=function(){this.ident=void 0},r.semanticAnalyze=function(e){var t=this.children;6===t.length?(this.ident=t[1],e.symbolTableStack.insert(new eL(this.ident.lexeme,this)),this.propList=t[3].propList):this.propList=t[2].propList},t}(eH),d.StructSpecifier=Y,Y=o([eW(eF.struct_specifier)],Y),J=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.propList=[],t}a(t,e);var r=t.prototype;return r.init=function(){this.propList.length=0},r.semanticAnalyze=function(e){var t=this.children,r=this.propList;if(1===t.length){var i=t[0].props,n=i.length;r.length=n;for(var a=0;a<n;a++)r[a]=i[a]}else{var o=t[0].propList,s=t[1].props,c=o.length,u=s.length;r.length=c+u;for(var l=0;l<c;l++)r[l]=o[l];for(var p=0;p<u;p++)r[p+c]=s[p]}},t}(eH),d.StructDeclarationList=J,J=o([eW(eF.struct_declaration_list)],J),$=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.props=[],t}a(t,e);var r=t.prototype;return r.init=function(){this.typeSpecifier=void 0,this.declaratorList=void 0,this.props.length=0},r.semanticAnalyze=function(e){var t=this.children,r=this.props;3===t.length?(this.typeSpecifier=t[0],this.declaratorList=t[1]):(this.typeSpecifier=t[1],this.declaratorList=t[2]);var i=t[0],n=this.typeSpecifier,a=n.type,o=n.lexeme;if(ef(i,Z)){var s=t[2],c=new eV(new eU(a,o),s.ident,i.index);r.push(c)}else{var u=this.declaratorList.declaratorList,l=u.length;r.length=l;for(var p=0;p<l;p++){var h=u[p],d=new eV(new eU(a,o,h.arraySpecifier),h.ident);r[p]=d}}},t}(eH),d.StructDeclaration=$,$=o([eW(eF.struct_declaration)],$),Z=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.semanticAnalyze=function(e){this.index=Number(this.children[4].lexeme)},t}(eH),d.LayoutQualifier=Z,Z=o([eW(eF.layout_qualifier)],Z),ee=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.declaratorList=[],t}a(t,e);var r=t.prototype;return r.init=function(){this.declaratorList.length=0},r.semanticAnalyze=function(e){var t=this.children,r=this.declaratorList;if(1===t.length)r.push(t[0]);else{var i=t[0],n=t[1],a=i.declaratorList.length;r.length=a+1;for(var o=0;o<a;o++)r[o]=i.declaratorList[o];r[a]=n}},t}(eH),d.StructDeclaratorList=ee,ee=o([eW(eF.struct_declarator_list)],ee),et=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var r=t.prototype;return r.init=function(){this.arraySpecifier=void 0},r.semanticAnalyze=function(e){var t=this.children;this.ident=t[0],this.arraySpecifier=t[1]},t}(eH),d.StructDeclarator=et,et=o([eW(eF.struct_declarator)],et),er=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var r=t.prototype;return r.semanticAnalyze=function(e){var t=this.children,r=t[0],i=t[1];this.type=r;var n=new ek(i.lexeme,new eU(r.type,r.typeSpecifier.lexeme),!0,this);e.symbolTableStack.insert(n)},r.codeGen=function(e){return e.visitGlobalVariableDeclaration(this)+";"},t}(eH),d.VariableDeclaration=er,er=o([eW(eF.variable_declaration)],er),ei=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.semanticAnalyze=function(e){var t=this.children,r=t.length,i=t[0].type;if(this.type=i,1!==r){var n=t[2],a=er.pool.get();3===r?a.set(n.location,[i,n]):a.set(n.location,[i,n,t[3]]),a.semanticAnalyze(e)}},t}(eH),d.VariableDeclarationList=ei,ei=o([eW(eF.variable_declaration_list)],ei),en=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}a(t,e);var r=t.prototype;return r.semanticAnalyze=function(e){var t,r,i=this.children[0];this.lexeme=i.lexeme,this.symbolInfo=e.lookupSymbolBy(i.lexeme,eR.VAR),this.typeInfo=null==(r=this.symbolInfo)?void 0:null==(t=r.dataType)?void 0:t.type},r.codeGen=function(e){return e.visitVariableIdentifier(this)},t}(eH),d.VariableIdentifier=en,en=o([eW(eF.variable_identifier)],en),ea=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return a(t,e),t.prototype.semanticAnalyze=function(e){this.shaderData=e.shaderData,this.shaderData.symbolTable=e.symbolTableStack._scope},t}(eH),d.GLShaderProgram=ea,o([eW(eF.gs_shader_program)],ea);var ej=/*#__PURE__*/function(){function e(){}return e.isTerminal=function(e){return e<eF.START},e.toString=function(e){if(this.isTerminal(e)){var t;return null!=(t=e_[e])?t:eh[e]}return eF[e]},e.createProductionWithOptions=function(e,t,r){for(var n,a=[],o=i(t);!(n=o()).done;){var s=n.value;a.push([[].concat([e],s),function(e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];if(i[0]){var a=i[0].location.start,o=i[i.length-1].location.end,s=t_.createRange(a,o);eu.get(null!=r?r:eu.TrivialNode.pool,e,s,i)}}])}return a},e.addMapSetItem=function(e,t,r){var i,n=null!=(i=e.get(t))?i:new Set;n.add(r),e.set(t,n)},e.isSubSet=function(e,t){for(var r,n=i(e);!(r=n()).done;){var a=r.value;if(!t.has(a))return!1}return!0},e.isActionEqual=function(e,t){return e.action===t.action&&e.target===t.target},e}(),eq=[].concat(ej.createProductionWithOptions(eF.gs_shader_program,[[eF.global_declaration],[eF.gs_shader_program,eF.global_declaration]],eu.GLShaderProgram.pool),ej.createProductionWithOptions(eF.global_declaration,[[eF.precision_specifier],[eF.variable_declaration_statement],[eF.struct_specifier],[eF.function_definition]]),ej.createProductionWithOptions(eF.variable_declaration,[[eF.fully_specified_type,e_.ID],[eF.fully_specified_type,e_.ID,eF.array_specifier]],eu.VariableDeclaration.pool),ej.createProductionWithOptions(eF.variable_declaration_list,[[eF.variable_declaration],[eF.variable_declaration_list,e_.COMMA,e_.ID],[eF.variable_declaration_list,e_.COMMA,e_.ID,eF.array_specifier]],eu.VariableDeclarationList.pool),ej.createProductionWithOptions(eF.variable_declaration_statement,[[eF.variable_declaration_list,e_.SEMICOLON]]),ej.createProductionWithOptions(eF.ext_builtin_type_specifier_nonarray,[[eh.VOID],[eh.FLOAT],[eh.BOOL],[eh.INT],[eh.UINT],[eh.VEC2],[eh.VEC3],[eh.VEC4],[eh.BVEC2],[eh.BVEC3],[eh.BVEC4],[eh.IVEC2],[eh.IVEC3],[eh.IVEC4],[eh.UVEC2],[eh.UVEC3],[eh.UVEC4],[eh.MAT2],[eh.MAT3],[eh.MAT4],[eh.MAT2X3],[eh.MAT2X4],[eh.MAT3X2],[eh.MAT3X4],[eh.MAT4X2],[eh.MAT4X3],[eh.SAMPLER2D],[eh.SAMPLER3D],[eh.SAMPLER_CUBE],[eh.SAMPLER2D_SHADOW],[eh.SAMPLER_CUBE_SHADOW],[eh.SAMPLER2D_ARRAY],[eh.SAMPLER2D_ARRAY_SHADOW],[eh.I_SAMPLER2D],[eh.I_SAMPLER3D],[eh.I_SAMPLER_CUBE],[eh.I_SAMPLER2D_ARRAY],[eh.U_SAMPLER2D],[eh.U_SAMPLER3D],[eh.U_SAMPLER_CUBE],[eh.U_SAMPLER2D_ARRAY]],eu.ExtBuiltinTypeSpecifierNonArray.pool),ej.createProductionWithOptions(eF.type_specifier_nonarray,[[e_.ID],[eF.ext_builtin_type_specifier_nonarray]],eu.TypeSpecifierNonArray.pool),ej.createProductionWithOptions(eF.fully_specified_type,[[eF.type_specifier],[eF.type_qualifier,eF.type_specifier]],eu.FullySpecifiedType.pool),ej.createProductionWithOptions(eF.type_specifier,[[eF.type_specifier_nonarray],[eF.ext_builtin_type_specifier_nonarray,eF.array_specifier]],eu.TypeSpecifier.pool),ej.createProductionWithOptions(eF.type_qualifier,[[eF.single_type_qualifier],[eF.type_qualifier,eF.single_type_qualifier]],eu.TypeQualifier.pool),ej.createProductionWithOptions(eF.single_type_qualifier,[[eF.storage_qualifier],[eF.precision_qualifier],[eF.interpolation_qualifier],[eF.invariant_qualifier],[eh.PRECISE]],eu.SingleTypeQualifier.pool),ej.createProductionWithOptions(eF.storage_qualifier,[[eh.CONST],[eh.IN],[eh.INOUT],[eh.OUT],[eh.CENTROID]]),ej.createProductionWithOptions(eF.interpolation_qualifier,[[eh.SMOOTH],[eh.FLAT]]),ej.createProductionWithOptions(eF.invariant_qualifier,[[eh.INVARIANT]]),ej.createProductionWithOptions(eF.precision_qualifier,[[eh.HIGHP],[eh.MEDIUMP],[eh.LOWP]]),ej.createProductionWithOptions(eF.struct_specifier,[[eh.STRUCT,e_.ID,e_.LEFT_BRACE,eF.struct_declaration_list,e_.RIGHT_BRACE,e_.SEMICOLON],[eh.STRUCT,e_.LEFT_BRACE,eF.struct_declaration_list,e_.RIGHT_BRACE,e_.SEMICOLON]],eu.StructSpecifier.pool),ej.createProductionWithOptions(eF.struct_declaration_list,[[eF.struct_declaration],[eF.struct_declaration_list,eF.struct_declaration]],eu.StructDeclarationList.pool),ej.createProductionWithOptions(eF.struct_declaration,[[eF.type_specifier,eF.struct_declarator_list,e_.SEMICOLON],[eF.type_qualifier,eF.type_specifier,eF.struct_declarator_list,e_.SEMICOLON],[eF.layout_qualifier,eF.type_specifier,eF.struct_declarator,e_.SEMICOLON]],eu.StructDeclaration.pool),ej.createProductionWithOptions(eF.layout_qualifier,[[eh.LAYOUT,e_.LEFT_PAREN,eh.LOCATION,e_.EQUAL,e_.INT_CONSTANT,e_.RIGHT_PAREN]],eu.LayoutQualifier.pool),ej.createProductionWithOptions(eF.struct_declarator_list,[[eF.struct_declarator],[eF.struct_declarator_list,e_.COMMA,eF.struct_declarator]],eu.StructDeclaratorList.pool),ej.createProductionWithOptions(eF.struct_declarator,[[e_.ID],[e_.ID,eF.array_specifier]],eu.StructDeclarator.pool),ej.createProductionWithOptions(eF.array_specifier,[[e_.LEFT_BRACKET,e_.RIGHT_BRACKET],[e_.LEFT_BRACKET,eF.integer_constant_expression,e_.RIGHT_BRACKET]],eu.ArraySpecifier.pool),ej.createProductionWithOptions(eF.integer_constant_expression_operator,[[e_.PLUS],[e_.DASH],[e_.STAR],[e_.SLASH],[e_.PERCENT]],eu.IntegerConstantExpressionOperator.pool),ej.createProductionWithOptions(eF.integer_constant_expression,[[eF.variable_identifier],[e_.INT_CONSTANT],[eF.integer_constant_expression,eF.integer_constant_expression_operator,e_.INT_CONSTANT],[eF.integer_constant_expression,eF.integer_constant_expression_operator,eF.variable_identifier]],eu.IntegerConstantExpression.pool),ej.createProductionWithOptions(eF.conditional_expression,[[eF.logical_or_expression],[eF.logical_or_expression,e_.QUESTION,eF.expression,e_.COLON,eF.assignment_expression]]),ej.createProductionWithOptions(eF.logical_or_expression,[[eF.logical_xor_expression],[eF.logical_or_expression,e_.OR_OP,eF.logical_xor_expression]]),ej.createProductionWithOptions(eF.logical_xor_expression,[[eF.logical_and_expression],[eF.logical_xor_expression,e_.XOR_OP,eF.logical_and_expression]]),ej.createProductionWithOptions(eF.logical_and_expression,[[eF.inclusive_or_expression],[eF.logical_and_expression,e_.AND_OP,eF.inclusive_or_expression]]),ej.createProductionWithOptions(eF.inclusive_or_expression,[[eF.exclusive_or_expression],[eF.inclusive_or_expression,e_.VERTICAL_BAR,eF.exclusive_or_expression]]),ej.createProductionWithOptions(eF.exclusive_or_expression,[[eF.and_expression],[eF.exclusive_or_expression,e_.CARET,eF.and_expression]]),ej.createProductionWithOptions(eF.and_expression,[[eF.equality_expression],[eF.and_expression,e_.AMPERSAND,eF.equality_expression]]),ej.createProductionWithOptions(eF.equality_expression,[[eF.relational_expression],[eF.equality_expression,e_.EQ_OP,eF.relational_expression],[eF.equality_expression,e_.NE_OP,eF.relational_expression]]),ej.createProductionWithOptions(eF.relational_expression,[[eF.shift_expression],[eF.relational_expression,e_.LEFT_ANGLE,eF.shift_expression],[eF.relational_expression,e_.RIGHT_ANGLE,eF.shift_expression],[eF.relational_expression,e_.LE_OP,eF.shift_expression],[eF.relational_expression,e_.GE_OP,eF.shift_expression]]),ej.createProductionWithOptions(eF.shift_expression,[[eF.additive_expression],[eF.shift_expression,e_.LEFT_OP,eF.additive_expression],[eF.shift_expression,e_.RIGHT_OP,eF.additive_expression]]),ej.createProductionWithOptions(eF.additive_expression,[[eF.multiplicative_expression],[eF.additive_expression,e_.PLUS,eF.multiplicative_expression],[eF.additive_expression,e_.DASH,eF.multiplicative_expression]]),ej.createProductionWithOptions(eF.multiplicative_expression,[[eF.unary_expression],[eF.multiplicative_expression,e_.STAR,eF.unary_expression],[eF.multiplicative_expression,e_.SLASH,eF.unary_expression],[eF.multiplicative_expression,e_.PERCENT,eF.unary_expression]]),ej.createProductionWithOptions(eF.unary_expression,[[eF.postfix_expression],[e_.INC_OP,eF.unary_expression],[e_.DEC_OP,eF.unary_expression],[eF.unary_operator,eF.unary_expression]]),ej.createProductionWithOptions(eF.unary_operator,[[e_.PLUS],[e_.DASH],[e_.BANG],[e_.TILDE]]),ej.createProductionWithOptions(eF.postfix_expression,[[eF.primary_expression],[eF.postfix_expression,e_.LEFT_BRACKET,eF.expression,e_.RIGHT_BRACKET],[eF.function_call],[eF.postfix_expression,e_.DOT,e_.ID],[eF.postfix_expression,e_.DOT,eF.function_call],[eF.postfix_expression,e_.INC_OP],[eF.postfix_expression,e_.DEC_OP]],eu.PostfixExpression.pool),ej.createProductionWithOptions(eF.primary_expression,[[eF.variable_identifier],[e_.INT_CONSTANT],[e_.FLOAT_CONSTANT],[eh.TRUE],[eh.FALSE],[e_.LEFT_PAREN,eF.expression,e_.RIGHT_PAREN]],eu.PrimaryExpression.pool),ej.createProductionWithOptions(eF.expression,[[eF.assignment_expression],[eF.expression,e_.COMMA,eF.assignment_expression]],eu.Expression.pool),ej.createProductionWithOptions(eF.assignment_expression,[[eF.conditional_expression],[eF.unary_expression,eF.assignment_operator,eF.assignment_expression]],eu.AssignmentExpression.pool),ej.createProductionWithOptions(eF.assignment_operator,[[e_.EQUAL],[e_.MUL_ASSIGN],[e_.DIV_ASSIGN],[e_.MOD_ASSIGN],[e_.ADD_ASSIGN],[e_.SUB_ASSIGN],[e_.LEFT_ASSIGN],[e_.RIGHT_ASSIGN],[e_.AND_ASSIGN],[e_.XOR_ASSIGN],[e_.OR_ASSIGN]]),ej.createProductionWithOptions(eF.function_call,[[eF.function_call_generic]],eu.FunctionCall.pool),ej.createProductionWithOptions(eF.function_call_generic,[[eF.function_identifier,e_.LEFT_PAREN,eF.function_call_parameter_list,e_.RIGHT_PAREN],[eF.function_identifier,e_.LEFT_PAREN,e_.RIGHT_PAREN],[eF.function_identifier,eh.VOID,e_.RIGHT_PAREN]],eu.FunctionCallGeneric.pool),ej.createProductionWithOptions(eF.function_call_parameter_list,[[eF.assignment_expression],[eF.function_call_parameter_list,e_.COMMA,eF.assignment_expression]],eu.FunctionCallParameterList.pool),ej.createProductionWithOptions(eF.function_identifier,[[eF.type_specifier]],eu.FunctionIdentifier.pool),ej.createProductionWithOptions(eF.function_definition,[[eF.function_prototype,eF.compound_statement_no_scope]],eu.FunctionDefinition.pool),ej.createProductionWithOptions(eF.function_prototype,[[eF.function_declarator,e_.RIGHT_PAREN]],eu.FunctionProtoType.pool),ej.createProductionWithOptions(eF.function_declarator,[[eF.function_header],[eF.function_header,eF.function_parameter_list]],eu.FunctionDeclarator.pool),ej.createProductionWithOptions(eF.function_header,[[eF.fully_specified_type,e_.ID,e_.LEFT_PAREN]],eu.FunctionHeader.pool),ej.createProductionWithOptions(eF.function_parameter_list,[[eF.parameter_declaration],[eF.function_parameter_list,e_.COMMA,eF.parameter_declaration]],eu.FunctionParameterList.pool),ej.createProductionWithOptions(eF.parameter_declaration,[[eF.type_qualifier,eF.parameter_declarator],[eF.parameter_declarator]],eu.ParameterDeclaration.pool),ej.createProductionWithOptions(eF.parameter_declarator,[[eF.type_specifier,e_.ID],[eF.type_specifier,e_.ID,eF.array_specifier]],eu.ParameterDeclarator.pool),ej.createProductionWithOptions(eF.statement_list,[[eF.statement],[eF.statement_list,eF.statement]],eu.StatementList.pool),ej.createProductionWithOptions(eF.statement,[[eF.compound_statement],[eF.simple_statement]]),ej.createProductionWithOptions(eF.compound_statement_no_scope,[[e_.LEFT_BRACE,e_.RIGHT_BRACE],[e_.LEFT_BRACE,eF.statement_list,e_.RIGHT_BRACE]],eu.CompoundStatementNoScope.pool),ej.createProductionWithOptions(eF.compound_statement,[[e_.LEFT_BRACE,e_.RIGHT_BRACE],[eF.scope_brace,eF.statement_list,eF.scope_end_brace]]),ej.createProductionWithOptions(eF.simple_statement,[[eF.declaration],[eF.expression_statement],[eF.selection_statement],[eF.iteration_statement],[eF.jump_statement]]),ej.createProductionWithOptions(eF.declaration,[[eF.function_prototype,e_.SEMICOLON],[eF.init_declarator_list,e_.SEMICOLON],[eh.PRECISION,eF.precision_qualifier,eF.ext_builtin_type_specifier_nonarray,e_.SEMICOLON],[eF.type_qualifier,e_.ID,e_.SEMICOLON],[eF.type_qualifier,e_.ID,eF.identifier_list,e_.SEMICOLON]],eu.Declaration.pool),ej.createProductionWithOptions(eF.identifier_list,[[e_.COMMA,e_.ID],[eF.identifier_list,e_.COMMA,e_.ID]],eu.IdentifierList.pool),ej.createProductionWithOptions(eF.init_declarator_list,[[eF.single_declaration],[eF.init_declarator_list,e_.COMMA,e_.ID],[eF.init_declarator_list,e_.COMMA,e_.ID,eF.array_specifier],[eF.init_declarator_list,e_.COMMA,e_.ID,eF.array_specifier,e_.EQUAL,eF.initializer],[eF.init_declarator_list,e_.COMMA,e_.ID,e_.EQUAL,eF.initializer]],eu.InitDeclaratorList.pool),ej.createProductionWithOptions(eF.single_declaration,[[eF.fully_specified_type,e_.ID],[eF.fully_specified_type,e_.ID,eF.array_specifier],[eF.fully_specified_type,e_.ID,eF.array_specifier,e_.EQUAL,eF.initializer],[eF.fully_specified_type,e_.ID,e_.EQUAL,eF.initializer]],eu.SingleDeclaration.pool),ej.createProductionWithOptions(eF.initializer,[[eF.assignment_expression],[e_.LEFT_BRACE,eF.initializer_list,e_.RIGHT_BRACE]]),ej.createProductionWithOptions(eF.initializer_list,[[eF.initializer],[eF.initializer_list,e_.COMMA,eF.initializer]]),ej.createProductionWithOptions(eF.expression_statement,[[e_.SEMICOLON],[eF.expression,e_.SEMICOLON]]),ej.createProductionWithOptions(eF.selection_statement,[[eh.IF,e_.LEFT_PAREN,eF.expression,e_.RIGHT_PAREN,eF.statement],[eh.IF,e_.LEFT_PAREN,eF.expression,e_.RIGHT_PAREN,eF.statement,eh.ELSE,eF.statement]]),ej.createProductionWithOptions(eF.iteration_statement,[[eh.WHILE,e_.LEFT_PAREN,eF.condition,e_.RIGHT_PAREN,eF.statement],[eh.FOR,e_.LEFT_PAREN,eF.for_init_statement,eF.for_rest_statement,e_.RIGHT_PAREN,eF.statement]]),ej.createProductionWithOptions(eF.precision_specifier,[[eh.PRECISION,eF.precision_qualifier,eF.ext_builtin_type_specifier_nonarray,e_.SEMICOLON]],eu.PrecisionSpecifier.pool),ej.createProductionWithOptions(eF.for_init_statement,[[eF.expression_statement],[eF.declaration]]),ej.createProductionWithOptions(eF.condition,[[eF.expression],[eF.fully_specified_type,e_.ID,e_.EQUAL,eF.initializer]]),ej.createProductionWithOptions(eF.for_rest_statement,[[eF.conditionopt,e_.SEMICOLON],[eF.conditionopt,e_.SEMICOLON,eF.expression]]),ej.createProductionWithOptions(eF.conditionopt,[[e_.EPSILON],[eF.condition]]),ej.createProductionWithOptions(eF.jump_statement,[[eh.CONTINUE,e_.SEMICOLON],[eh.BREAK,e_.SEMICOLON],[eh.RETURN,e_.SEMICOLON],[eh.RETURN,eF.expression,e_.SEMICOLON],[eh.DISCARD,e_.SEMICOLON]],eu.JumpStatement.pool),ej.createProductionWithOptions(eF.scope_brace,[[e_.LEFT_BRACE]],eu.ScopeBrace.pool),ej.createProductionWithOptions(eF.scope_end_brace,[[e_.RIGHT_BRACE]],eu.ScopeEndBrace.pool),ej.createProductionWithOptions(eF.variable_identifier,[[e_.ID]],eu.VariableIdentifier.pool)),ez=function(e){for(var t=0;t<eq.length;t++){var r=eq[t][1];r&&e.addTranslationRule(t,r)}},eQ=/*#__PURE__*/function(){function e(t,r,n){this._needReInfer=!0,this.production=t,this.position=r,this.lookaheadSet=new Set;for(var a,o=i(n);!(a=o()).done;){var s=a.value;this.lookaheadSet.add(s)}this.id=e._id++}var t=e.prototype;return t.addLookahead=function(e){for(var t,r=i(e);!(t=r()).done;){var n=t.value;this.lookaheadSet.has(n)||(this.lookaheadSet.add(n),this.needReInfer=!0)}},t.symbolByOffset=function(e){return this.production.derivation[this.position+e]},t.canReduce=function(){if(this.position>this.production.derivation.length-1)return!0;for(var e=this.position;e<this.production.derivation.length;e++)if(this.production.derivation[e]!==e_.EPSILON)return!1;return!0},t.advance=function(){return new e(this.production,this.position+1,this.lookaheadSet)},ex(e,[{key:"needReInfer",get:function(){return this._needReInfer},set:function(e){this._needReInfer=e}},{key:"curSymbol",get:function(){return this.production.derivation[this.position]}},{key:"nextSymbol",get:function(){return this.production.derivation[this.position+1]}}]),e}();eQ._id=0;var eX=/*#__PURE__*/function(){function e(t){this.closured=!1,this._stateItemPool=new Map,this.id=e._id++,this._items=new Set([].concat(t)),this.cores=new Set([].concat(t));for(var r,n=i(t);!(r=n()).done;){var a=r.value,o=this.getStateItemMapKey(a.production,a.position);this._stateItemPool.set(o,a)}e.pool.set(this.id,this)}var t=e.prototype;return t.getStateItemMapKey=function(e,t){return e.id+","+t},t.createStateItem=function(e,t,r){void 0===r&&(r=new Set);var n=this.getStateItemMapKey(e,t),a=this._stateItemPool.get(n);if(a){for(var o,s=i(r);!(o=s()).done;){var c=o.value;a.lookaheadSet.has(c)||(a.lookaheadSet.add(c),a.needReInfer=!0)}return a}var u=new eQ(e,t,r);return this._stateItemPool.set(n,u),u},e.create=function(t){var r=this.getMapKey(t),n=this.closureMap.get(r);if(n){for(var a,o=i(t);!(a=o()).done;){var s=a.value;n.createStateItem(s.production,s.position,s.lookaheadSet)}return n}var c=new e(t);return this.closureMap.set(r,c),c},e.getMapKey=function(e){return e.map(function(e){return e.production.id+","+e.position}).join(";")},ex(e,[{key:"items",get:function(){return this._items}},{key:"needReInfer",get:function(){for(var e,t=i(this.cores);!(e=t()).done;)if(e.value.needReInfer)return!0;return!1}}]),e}();eX.closureMap=new Map,eX.pool=new Map,eX._id=0;var eK=/*#__PURE__*/function(){function e(e){this.firstSetMap=new Map,this.followSetMap=new Map,this.actionTable=new Map,this.gotoTable=new Map,this._firstSetNTStack=[],this.grammar=e}var t=e.prototype;return t.generate=function(){this.computeFirstSet(),this.buildStateTable()},t.buildStateTable=function(){var e=[new eQ(this.grammar.productions[0],0,[e_.EOF])],t=eX.create(e);this._extendState(t)},t._extendState=function(e){if(e.needReInfer){this._closure(e);for(var t,r=this._inferNextState(e),n=i(r);!(t=n()).done;){var a=t.value;this._extendState(a)}}},t._closure=function(e){for(var t,r=i(e.cores);!(t=r()).done;){var n=t.value;n.canReduce()||this._extendStateItem(e,n)}return e.closured=!0,e},t._extendStateItem=function(e,t){if(!ej.isTerminal(t.curSymbol)){var r=this.grammar.getProductionList(t.curSymbol);if(t.nextSymbol){for(var n=new Set,a=!1,o=1,s=t.symbolByOffset(1);s;s=t.symbolByOffset(++o)){if(ej.isTerminal(s)){n.add(s),a=!0;break}c=this.firstSetMap.get(s);for(var c,u,l=i(c);!(u=l()).done;){var p=u.value;n.add(p)}if(!c.has(e_.EPSILON))break}if(!a&&(null==c?void 0:c.has(e_.EPSILON)))for(var h,d=i(t.lookaheadSet);!(h=d()).done;){var _=h.value;n.add(_)}for(var f,S=i(r);!(f=S()).done;){var v=f.value,m=e.createStateItem(v,0);e.items.has(m)&&ej.isSubSet(n,m.lookaheadSet)||(e.items.add(m),m.addLookahead(n),this._extendStateItem(e,m))}}else for(var g,y=i(r);!(g=y()).done;){var x=g.value,E=e.createStateItem(x,0);e.items.has(E)&&ej.isSubSet(t.lookaheadSet,E.lookaheadSet)||(e.items.add(E),E.addLookahead(t.lookaheadSet),this._extendStateItem(e,E))}}},t._inferNextState=function(e){var t=new Map,r=null!=(a=this.actionTable.get(e.id))?a:new Map,n=null!=(o=this.gotoTable.get(e.id))?o:new Map;this.actionTable.set(e.id,r),this.gotoTable.set(e.id,n);for(var a,o,s,c=i(e.items);!(s=c()).done;){var u=s.value;if(u.canReduce()){var l=void 0;l=u.production.goal!==eF.START?{action:eb.Reduce,target:u.production.id}:{action:eb.Accept};for(var p,h=i(u.lookaheadSet);!(p=h()).done;){var d=p.value;this._addAction(r,d,l)}}else{var _=u.advance();ej.addMapSetItem(t,u.curSymbol,_)}u.needReInfer=!1}for(var f,S=new Set,v=i(t.entries());!(f=v()).done;){var m=f.value,g=m[0],y=m[1],x=eX.create(Array.from(y));ej.isTerminal(g)?this._addAction(r,g,{action:eb.Shift,target:x.id}):n.set(g,x.id),S.add(x)}return S},t._addAction=function(e,t,r){var i=e.get(t);(!i||ej.isActionEqual(i,r)||t!==eh.ELSE||i.action!==eb.Shift||r.action!==eb.Reduce)&&e.set(t,r)},t.computeFirstSet=function(){for(var e,t=i(this.grammar.productions.slice(1));!(e=t()).done;){var r=e.value;this._computeFirstSetForNT(r.goal)}},t._computeFirstSetForNT=function(e){var t=this._firstSetNTStack.findIndex(function(t){return t===e});if(-1!==t){for(var r=this.firstSetMap.get(e),n=this._firstSetNTStack.length,a=n-1;a>t;a--){var o=this._firstSetNTStack[a];this.firstSetMap.set(o,r)}return r}this._firstSetNTStack.push(e);var s=this.grammar.getProductionList(e),c=new Set;this.firstSetMap.set(e,c),this.grammar.isNullableNT(e)&&c.add(e_.EPSILON);for(var u,l=i(s);!(u=l()).done;){for(var p=u.value,h=0;h<p.derivation.length;h++){var d=p.derivation[h];if(ej.isTerminal(d)){c.add(d);break}for(var _,f=this._computeFirstSetForNT(d),S=i(f);!(_=S()).done;){var v=_.value;v!==e_.EPSILON&&c.add(v)}if(!this.grammar.isNullableNT(d))break}h===p.derivation.length&&c.add(e_.EPSILON)}return this._firstSetNTStack.pop(),c},e}(),eY=/*#__PURE__*/function(){function e(e,t,r){this._traceBackStack=[],this.actionTable=e,this.gotoTable=t,this.grammar=r,this.sematicAnalyzer=new eD}return e.prototype.parse=function(e){this.sematicAnalyzer.reset();var r=performance.now(),i=this._traceBackStack,n=this.sematicAnalyzer;i.push(0);for(var a=e.next(),o=0;;){o+=1;var s=a.value,c=this.stateActionTable.get(s.type);if((null==c?void 0:c.action)===eb.Shift)i.push(s,c.target),a=e.next();else{if((null==c?void 0:c.action)===eb.Accept)return t.Logger.info("[pass compilation - parser] Accept! State automata run "+o+" times! cost time "+(performance.now()-r)+"ms"),null==n.acceptRule||n.acceptRule.call(n,n),n.semanticStack.pop();if((null==c?void 0:c.action)!==eb.Reduce)return eS.createGSError("Unexpected token "+s.lexeme,eE.CompilationError,t_._processingPassText,s.location),null;for(var u=c.target,l=this.grammar.getProductionByID(u),p=n.getTranslationRule(l.id),h=[],d=l.derivation.length-1;d>=0;d--)if(l.derivation[d]!==e_.EPSILON){i.pop();var _=i.pop();if(ef(_,ev))h.unshift(_);else{var f=n.semanticStack.pop();h.unshift(f)}}null==p||p.apply(void 0,[].concat([n],h));var S=this.stateGotoTable;i.push(l.goal);var v=null==S?void 0:S.get(l.goal);i.push(v);continue}}},e.create=function(){if(!this._singleton){var t=ew.create(eF.gs_shader_program,eq.map(function(e){return e[0]})),r=new eK(t);r.generate(),this._singleton=new e(r.actionTable,r.gotoTable,t),ez(this._singleton.sematicAnalyzer)}return this._singleton},ex(e,[{key:"curState",get:function(){return this._traceBackStack[this._traceBackStack.length-1]}},{key:"stateActionTable",get:function(){return this.actionTable.get(this.curState)}},{key:"stateGotoTable",get:function(){return this.gotoTable.get(this.curState)}}]),e}();function eJ(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}var e$=/*#__PURE__*/function(){function e(e,t,r,i){this.macro=e,this.body=t,this.location=r,this.args=i,i&&(this._argsLexemes=this.args.map(function(e){return e.lexeme}),this._replaceRegex=RegExp("\\b("+this._argsLexemes.join("|")+")\\b","g"))}return e.prototype.expandFunctionBody=function(e){var t,r=this;if(e.length!==(null==(t=this.args)?void 0:t.length))throw eS.createGSError("mismatched function macro",GSErrorName.PreprocessorError,"",this.location);return this.body.lexeme.replace(this._replaceRegex,function(t){return e[r._argsLexemes.indexOf(t)]})},ex(e,[{key:"isFunction",get:function(){var e;return!!(null==(e=this.args)?void 0:e.length)}}]),e}(),eZ=((eo={})[eo.id=0]="id",eo[eo.line_remain=1]="line_remain",eo[eo.chunk=2]="chunk",eo[eo.int_constant=3]="int_constant",eo[eo.string_const=4]="string_const",eo[eo.right_op=5]="right_op",eo[eo.left_op=6]="left_op",eo[eo.left_paren=7]="left_paren",eo[eo.right_paren=8]="right_paren",eo[eo.ge=9]="ge",eo[eo.le=10]="le",eo[eo.eq=11]="eq",eo[eo.neq=12]="neq",eo[eo.and=13]="and",eo[eo.or=14]="or",eo[eo.left_angle=15]="left_angle",eo[eo.right_angle=16]="right_angle",eo[eo.star=17]="star",eo[eo.plus=18]="plus",eo[eo.dash=19]="dash",eo[eo.bang=20]="bang",eo[eo.slash=21]="slash",eo[eo.percent=22]="percent",eo[eo.EOF=100]="EOF",eo),e0=((es={})[es.define=101]="define",es[es.undef=102]="undef",es[es.if=103]="if",es[es.ifdef=104]="ifdef",es[es.ifndef=105]="ifndef",es[es.else=106]="else",es[es.elif=107]="elif",es[es.endif=108]="endif",es[es.include=109]="include",es[es.defined=110]="defined",es),e1=new Map([["#define",101],["#undef",102],["#if",103],["#ifdef",104],["#ifndef",105],["#else",106],["#elif",107],["#endif",108],["#include",109],["defined",110]]),e2=/*#__PURE__*/function(){function e(){}return e.expand=function(e,t){for(var r,n=[],a=0,o=0,s=i(e);!(r=s()).done;){var c=r.value,u=t.slice(a,c.rangeInBlock.start.index);n.push(u,c.replace);var l=o+u.length+c.replace.length;a=c.rangeInBlock.end.index,o=l}return n.push(t.slice(a)),n.join("")},e.assembleSegments=function(e,t){for(var r,n=[],a=0,o=i(e);!(r=o()).done;){var s=r.value,c=t.slice(a,s.range.start.index);n.push(c,s.replace),a=s.range.end.index}return n.push(t.slice(a)),n.join("")},e}(),e3=/*#__PURE__*/function(e){function t(t){var r;return(r=e.call(this,t)||this).macroLvl=0,r}a(t,e);var r=t.prototype;return r.scanDirective=function(e){var t=this._advanceToDirective(e);return[e0.if,e0.ifdef,e0.ifndef].includes(null==t?void 0:t.type)?this.macroLvl+=1:(null==t?void 0:t.type)===e0.endif&&(this.macroLvl-=1),t},r.scanWordsUntilChar=function(e){for(var t=[];;)if(this.skipSpace(!0),eg.isLetter(this.getCurCharCode()))t.push(this.scanWord());else{if(this.getCurChar()===e)return this._advance(),t;this._advance()}},r.scanWord=function(e){if(void 0===e&&(e=!1),e)for(;!eg.isLetter(this.getCurCharCode())&&!this.isEnd();)this._advance();else this.skipSpace(!0);if(this.isEnd())return em;for(var t=this._currentIndex;eg.isLetter(this.getCurCharCode())&&!this.isEnd();)this._advance();var r=this._currentIndex,i=this._source.slice(t,r);r===t&&this.throwError(this.getShaderPosition(0),"no word found.");var n=e1.get(i);if(n){var a=ev.pool.get();return a.set(n,i,this.getShaderPosition(0)),a}var o=ev.pool.get();return o.set(eZ.id,i,this.getShaderPosition(i.length)),o},r.getShaderPosition=function(e){return t_.createPosition(this._currentIndex-e)},r.scanToken=function(e){if(this.skipCommentsAndSpace(),!this.isEnd()){for(var t=this._source,r=this._currentIndex,i=!1,n=t.length;this._currentIndex<n;)if(eg.isPpCharacters(t.charCodeAt(this._currentIndex)))this._advance(),i=!0;else{if(i)break;this._advance(),this.skipCommentsAndSpace(),r=this._currentIndex}var a=t.slice(r,this._currentIndex),o=ev.pool.get(),s=e1.get(a);return o.set(null!=s?s:eZ.id,a,this.getShaderPosition(this._currentIndex-r)),null==e||e(o,this),o}},r.scanQuotedString=function(){this.skipSpace(!0),'"'!==this.getCurChar()&&this.throwError(this.getShaderPosition(0),"unexpected char, expected '\"'");var e=this.getShaderPosition(0);this._advance();for(var t=this._currentIndex;'"'!==this.getCurChar()&&!this.isEnd();)this._advance();this.isEnd()&&this.throwError(this.getShaderPosition(0),"unexpected char, expected '\"'");var r=this._source.slice(t,this._currentIndex),i=ev.pool.get();return i.set(eZ.string_const,r,e),i},r.scanToChar=function(e){for(var t=this._source;t[this._currentIndex]!==e&&!this.isEnd();)this._advance()},r.scanMacroBranchChunk=function(){for(var e=this._currentIndex,t=this.getShaderPosition(0),r=this.macroLvl,i=this.scanDirective();(i.type!==e0.endif||r-1!==this.macroLvl)&&(![e0.elif,e0.else].includes(i.type)||r!==this.macroLvl);)i=this.scanDirective();var n=this._source.slice(e,this._currentIndex-i.lexeme.length-1),a=ev.pool.get();return a.set(eZ.chunk,n,t),{token:a,nextDirective:i}},r.scanPairedBlock=function(e,t){this.scanToChar(e);var r=0,i=this._source;do{var n=i[this._currentIndex];n===e?r++:n===t&&r--,this._advance()}while(r>0)},r.scanRemainMacro=function(){for(var e=this.macroLvl,t=this.scanDirective();!this.isEnd()&&(t.type!==e0.endif||e-1!==this.macroLvl);)t=this.scanDirective();return this.getShaderPosition(0)},r.peekNonSpace=function(){for(var e=this._currentIndex;/\s/.test(this._source[e]);)e+=1;return this._source[e]},r.scanInteger=function(){for(var e=this._currentIndex;eg.isNum(this.getCurCharCode());)this._advance();this._currentIndex===e&&this.throwError(this.getShaderPosition(0),"no integer found");var t=this._source.slice(e,this._currentIndex),r=ev.pool.get();return r.set(eZ.int_constant,t,this.getShaderPosition(0)),r},r.scanLineRemain=function(){this.skipSpace(!1);for(var e=this._currentIndex,t=[];"\n"!==this.getCurChar();){if(this.isEnd()){var r=this._source.slice(e,this._currentIndex),i=ev.pool.get();return i.set(eZ.line_remain,r,this.getShaderPosition(r.length)),i}this._advance();var n=this._skipComments();n&&(n.start.index-=e,n.end.index-=e,t.push(n))}var a=this._source.slice(e,this._currentIndex);t.length&&(a=e2.assembleSegments(t.map(function(e){return{range:e,replace:""}}),a));var o=ev.pool.get();return o.set(eZ.line_remain,a,this.getShaderPosition(a.length)),o},r._advanceToDirective=function(e){for(;;){var t=this.scanToken(e);if(null==t?void 0:t.lexeme.startsWith("#"))return t;if(this.isEnd())return}},r._skipComments=function(){if("//"===this.peek(2)){for(var e=this.getShaderPosition(0);"\n"!==this.getCurChar()&&!this.isEnd();)this._advance();return t_.createRange(e,this.getCurPosition())}if("/*"===this.peek(2)){var t=this.getShaderPosition(0);for(this.advance(2);"*/"!==this.peek(2)&&!this.isEnd();)this._advance();return this.advance(2),t_.createRange(t,this.getShaderPosition(0))}},t}(eT),e4=/*#__PURE__*/function(){function e(){}return e.reset=function(e,t){this._definedMacros.clear(),this._expandSegmentsStack.length=0,this._expandSegmentsStack.push([]),this._branchMacros.clear(),this.addPredefinedMacro("GL_ES"),this._includeMap=e,this._basePathForIncludeKey=t},e.addPredefinedMacro=function(e,t){var r,i=ev.pool.get();i.set(eZ.id,e),t&&(r=ev.pool.get()).set(eZ.id,t),this._definedMacros.set(e,new e$(i,r))},e.parse=function(e){for(;!e.isEnd();){var t=e.scanDirective(this._onToken.bind(this));if(e.isEnd())break;switch(t.type){case e0.define:this._parseDefine(e);break;case e0.undef:this._parseUndef(e);break;case e0.if:this._parseIf(e);break;case e0.ifndef:this._parseIfNdef(e);break;case e0.ifdef:this._parseIfDef(e);break;case e0.include:this._parseInclude(e)}}return e2.expand(this.expandSegments,e.source,e.sourceMap)},e.reportError=function(e,t,r,i){eS.createGSError(t,eE.PreprocessorError,r,e,i)},e._parseInclude=function(e){var r,i=e.getShaderPosition(8);e.skipSpace(!0);var n=e.scanQuotedString();r="."!==n.lexeme[0]?n.lexeme:new URL(n.lexeme,this._basePathForIncludeKey).href.substring(t.ShaderPass._shaderRootPath.length),e.scanToChar("\n");var a=e.getShaderPosition(0),o=this._includeMap[r];if(!o){this.reportError(n.location,'Shader slice "'+r+'" not founded.',e.source,e.file);return}var s=t_.createRange(i,a),c=this._expandMacroChunk(o,s,n.lexeme);this.expandSegments.push({rangeInBlock:s,replace:c.content})},e._parseIfDef=function(e){var t=e.current-6,r=e.scanWord();this._addEmptyReplace(e,t),this._branchMacros.add(r.lexeme);var i=this._definedMacros.get(r.lexeme);e.skipSpace(!0);var n=e.scanMacroBranchChunk(),a=n.token,o=n.nextDirective;if(i){var s=o.type===e0.endif?e.getShaderPosition(0):e.scanRemainMacro(),c=this._expandMacroChunk(a.lexeme,a.location,e),u=t_.createRange(a.location.start,s);this.expandSegments.push({rangeInBlock:u,replace:c.content});return}this.expandSegments.pop(),this._addEmptyReplace(e,t),this._parseMacroBranch(o.type,e)},e._parseMacroBranch=function(e,t){if(e!==e0.endif){var r=t.current;if(e===e0.else){var i=t.scanMacroBranchChunk().token,n=this._expandMacroChunk(i.lexeme,i.location,t),a=t_.createPosition(r),o=t_.createRange(a,t.getShaderPosition(0));this.expandSegments.push({rangeInBlock:o,replace:n.content})}else if(e===e0.elif){var s=this._parseConstantExpression(t),c=t.scanMacroBranchChunk(),u=c.token,l=c.nextDirective;if(s){var p=l.type===e0.endif?t.current:t.scanRemainMacro().index,h=this._expandMacroChunk(u.lexeme,u.location,t),d=t_.createPosition(r),_=t_.createPosition(p),f=t_.createRange(d,_);this.expandSegments.push({rangeInBlock:f,replace:h.content})}else{var S=t_.createPosition(r),v=t_.createPosition(t.current),m=t_.createRange(S,v);this.expandSegments.push({rangeInBlock:m,replace:""}),this._parseMacroBranch(l.type,t)}}}},e._parseConstantExpression=function(e){return e.skipSpace(!0),this._parseLogicalOrExpression(e)},e._parseLogicalOrExpression=function(e){var t=this._parseLogicalAndExpression(e),r=e.peek(2);if(r&&"||"===r){e.advance(2),e.skipSpace(!1);var i=this._parseLogicalOrExpression(e);return t||i}return t},e._parseLogicalAndExpression=function(e){var t=this._parseEqualityExpression(e),r=e.peek(2);if(r&&"&&"===r){e.advance(2),e.skipSpace(!1);var i=this._parseLogicalAndExpression(e);return t&&i}return t},e._parseEqualityExpression=function(e){var t=this._parseRelationalExpression(e),r=e.peek(2);if(r&&["==","!="].includes(r)){e.advance(2),e.skipSpace(!1);var i=this._parseEqualityExpression(e);switch(r){case"==":return t===i;case"!=":return t!==i}}return t},e._parseRelationalExpression=function(e){var t=this._parseShiftExpression(e),r=e.peek(2);if("="!==r[1]&&(r=r[0]),r&&[">","<",">=","<="].includes(r)){var i=e.getShaderPosition(0);e.advance(r.length),e.skipSpace(!1);var n=this._parseRelationalExpression(e);if((void 0===t?"undefined":eJ(t))!==(void 0===n?"undefined":eJ(n))&&"number"!=typeof t){this.reportError(i,"invalid operator in relation expression.",e.source,e.file);return}switch(r){case">":return t>n;case"<":return t<n;case">=":return t>=n;case"<=":return t<=n}}return t},e._parseShiftExpression=function(e){var t=this._parseAdditiveExpression(e),r=e.peek(2);if(r&&[">>","<<"].includes(r)){var i=e.getShaderPosition(0);e.advance(2),e.skipSpace(!1);var n=this._parseShiftExpression(e);if((void 0===t?"undefined":eJ(t))!==(void 0===n?"undefined":eJ(n))&&"number"!=typeof t){this.reportError(i,"invalid operator in shift expression.",e.source,e.file);return}switch(r){case">>":return t>>n;case"<<":return t<<n}}return t},e._parseAdditiveExpression=function(e){var t=this._parseMulticativeExpression(e);if([">","<"].includes(e.getCurChar())){var r=e.getShaderPosition(0);e.advance();var i=e.getCurChar();e.skipSpace(!1);var n=this._parseAdditiveExpression(e);if((void 0===t?"undefined":eJ(t))!==(void 0===n?"undefined":eJ(n))&&"number"!=typeof t)return this.reportError(r,"invalid operator.",e.source,e.file),!1;switch(i){case"+":return t+n;case"-":return t-n}}return t},e._parseMulticativeExpression=function(e){var t=this._parseUnaryExpression(e);if(e.skipSpace(!1),["*","/","%"].includes(e.getCurChar())){var r=e.getShaderPosition(0),i=e.getCurChar();e.skipSpace(!1);var n=this._parseMulticativeExpression(e);if((void 0===t?"undefined":eJ(t))!==(void 0===n?"undefined":eJ(n))&&"number"!=typeof t){this.reportError(r,"invalid operator.",e.source,e.file);return}switch(i){case"*":return t*n;case"/":return t/n;case"%":return t%n}}return t},e._parseUnaryExpression=function(e){var t=e.getCurChar();if(["+","-","!"].includes(t)){e.advance();var r=e.getShaderPosition(0),i=this._parseParenthesisExpression(e);switch(("!"===t&&"boolean"!=typeof i||"!"!==t&&"number"!=typeof i)&&this.reportError(r,"invalid operator.",e.source,e.file),t){case"+":return i;case"-":return-i;case"!":return!i}}return this._parseParenthesisExpression(e)},e._parseParenthesisExpression=function(e){if("("===e.getCurChar()){e._advance(),e.skipSpace(!1);var t=this._parseConstantExpression(e);return e.scanToChar(")"),e._advance(),t}return this._parseConstant(e)},e._parseConstant=function(e){if(eg.isAlpha(e.getCurCharCode())){var t=e.scanWord();if(t.type===e0.defined){var r="("===e.peekNonSpace(),i=e.scanWord(!0);return r&&(e.scanToChar(")"),e._advance()),this._branchMacros.add(i.lexeme),!!this._definedMacros.get(i.lexeme)}var n=this._definedMacros.get(t.lexeme);if(!n||!n.body)return!1;n.isFunction&&this.reportError(t.location,"invalid function macro usage",e.source,e.file);var a=Number(n.body.lexeme);return Number.isInteger(a)||this.reportError(t.location,"invalid const macro: "+t.lexeme,e.source,e.file),this._branchMacros.add(t.lexeme),a}if(eg.isNum(e.getCurCharCode()))return Number(e.scanInteger().lexeme);this.reportError(e.getShaderPosition(0),"invalid token: "+e.getCurChar(),e.source,e.file)},e._expandMacroChunk=function(e,t,r){this._expandSegmentsStack.push([]),i="string"==typeof r?new e3(e,r):new e3(e,r.file,t);var i,n=this.parse(i);return this._expandSegmentsStack.pop(),{content:n}},e._parseIfNdef=function(e){var t=e.current-7,r=e.scanWord();this._addEmptyReplace(e,t),this._branchMacros.add(r.lexeme);var i=this._definedMacros.get(r.lexeme),n=e.scanMacroBranchChunk(),a=n.token,o=n.nextDirective;if(!i){var s=o.type===e0.endif?e.getShaderPosition(0):e.scanRemainMacro(),c=this._expandMacroChunk(a.lexeme,a.location,e),u=t_.createRange(a.location.start,s);this.expandSegments.push({rangeInBlock:u,replace:c.content});return}this.expandSegments.pop(),this._addEmptyReplace(e,t),this._parseMacroBranch(o.type,e)},e._addEmptyReplace=function(e,t){var r=t_.createPosition(t),i=e.getCurPosition(),n=t_.createRange(r,i);this.expandSegments.push({rangeInBlock:n,replace:""})},e._parseIf=function(e){var t=e.current-3,r=this._parseConstantExpression(e);this._addEmptyReplace(e,t);var i=e.scanMacroBranchChunk(),n=i.token,a=i.nextDirective;if(r){var o=a.type===e0.endif?e.getShaderPosition(0):e.scanRemainMacro(),s=this._expandMacroChunk(n.lexeme,n.location,e),c=t_.createRange(n.location.start,o);this.expandSegments.push({rangeInBlock:c,replace:s.content});return}this.expandSegments.pop(),this._addEmptyReplace(e,t),this._parseMacroBranch(a.type,e)},e._parseDefine=function(e){var t,r=e.getShaderPosition(7),i=e.scanWord(),n=i.location.end;this._definedMacros.get(i.lexeme)&&i.lexeme.startsWith("GL_")&&this.reportError(i.location,"redefined macro: "+i.lexeme,e.source,e.file),"("===e.getCurChar()&&(t=e.scanWordsUntilChar(")"),n=e.getShaderPosition(0));var a=new e$(i,e.scanLineRemain(),t_.createRange(r,n),t);this._definedMacros.set(i.lexeme,a),this.expandSegments.push({rangeInBlock:t_.createRange(r,e.getCurPosition()),replace:""})},e._parseUndef=function(e){var t=e.current-6,r=e.scanWord(),i=t_.createPosition(t),n=t_.createRange(i,e.getCurPosition());this.expandSegments.push({rangeInBlock:n,replace:""}),this._definedMacros.delete(r.lexeme)},e._onToken=function(e,t){var r=this._definedMacros.get(e.lexeme);if(r){var i=r.body.lexeme;if(r.isFunction){t.scanToChar("("),t._advance();for(var n=[],a=1,o=t.current;;){if("("===t.getCurChar())a+=1;else if(")"===t.getCurChar()){if(0==(a-=1))break}else","===t.getCurChar()&&1===a&&(n.push(t.source.slice(o,t.current)),o=t.current+1);t._advance()}n.push(t.source.slice(o,t.current)),t._advance();var s=t_.createRange(e.location.start,t.getCurPosition());i=r.expandFunctionBody(n);var c=this._expandMacroChunk(i,s,t),u=t_.createRange(e.location.start,t.getCurPosition());this.expandSegments.push({rangeInBlock:u,replace:c.content})}else{var l=this._expandMacroChunk(i,e.location,t),p=t_.createRange(e.location.start,e.location.end);this.expandSegments.push({rangeInBlock:p,replace:l.content})}}},ex(e,null,[{key:"expandSegments",get:function(){return this._expandSegmentsStack[this._expandSegmentsStack.length-1]}}]),e}();e4._definedMacros=new Map,e4._expandSegmentsStack=[[]],e4._branchMacros=new Set;var e9=/*#__PURE__*/function(){function e(){}return e.reset=function(e,t){e4.reset(e,t)},e.process=function(e){return this.baseScanner=new e3(e),e4.parse(this.baseScanner)},e.addPredefinedMacro=function(e,t){e4.addPredefinedMacro(e,t)},e}(),e5=/*#__PURE__*/function(){function e(){}return e.unwrapNodeByType=function(t,r){var i=t.children[0];if(!ef(i,ev))return i.nt===r?i:e.unwrapNodeByType(i,r)},e.isTerminal=function(e){return e<eF.START},e}(),e6=/*#__PURE__*/function(){function e(){this.attributeList=[],this.attributeStructs=[],this._referencedAttributeList=Object.create(null),this._referencedGlobals=Object.create(null),this._referencedVaryingList=Object.create(null),this._referencedMRTList=Object.create(null)}var t=e.prototype;return t.reset=function(){this.attributeList.length=0,this.attributeStructs.length=0,this._referencedAttributeList=Object.create(null),this._referencedGlobals=Object.create(null),this._referencedVaryingList=Object.create(null),this._referencedMRTList=Object.create(null),this.mrtStruct=void 0},t.isAttributeStruct=function(e){return -1!==this.attributeStructs.findIndex(function(t){return t.ident.lexeme===e})},t.isVaryingStruct=function(e){var t,r;return(null==(r=this.varyingStruct)?void 0:null==(t=r.ident)?void 0:t.lexeme)===e},t.isMRTStruct=function(e){var t,r;return(null==(r=this.mrtStruct)?void 0:null==(t=r.ident)?void 0:t.lexeme)===e},t.referenceAttribute=function(e){if(!this._referencedAttributeList[e.lexeme]){var t=this.attributeList.find(function(t){return t.ident.lexeme===e.lexeme});if(!t)return eS.createGSError("referenced attribute not found: "+e.lexeme,eE.CompilationError,t_._processingPassText,e.location);this._referencedAttributeList[e.lexeme]=t}},t.referenceVarying=function(e){if(!this._referencedVaryingList[e.lexeme]){var t,r=null==(t=this.varyingStruct)?void 0:t.propList.find(function(t){return t.ident.lexeme===e.lexeme});if(!r)return eS.createGSError("referenced varying not found: "+e.lexeme,eE.CompilationError,t_._processingPassText,e.location);this._referencedVaryingList[e.lexeme]=r}},t.referenceMRTProp=function(e){if(!this._referencedMRTList[e.lexeme]){var t,r=null==(t=this.mrtStruct)?void 0:t.propList.find(function(t){return t.ident.lexeme===e.lexeme});if(!r)return eS.createGSError("referenced mrt not found: "+e.lexeme,eE.CompilationError,t_._processingPassText,e.location);this._referencedMRTList[e.lexeme]=r}},t.referenceGlobal=function(e,t){if(!this._referencedGlobals[e]){if(t===eR.FN){for(var r=this._passSymbolTable.getAllFnSymbols(e),i=0;i<r.length;i++){var n=0===i?e:e+i;this._referencedGlobals[n]=r[i]}return}var a=this._passSymbolTable.lookup(e,t);a&&(this._referencedGlobals[e]=a)}},e.reset=function(){this._singleton||(this._singleton=new e),this._singleton.reset()},ex(e,[{key:"passSymbolTable",get:function(){return this._passSymbolTable}}],[{key:"context",get:function(){return this._singleton}}]),e}(),e7=/*#__PURE__*/function(){function e(){this.array=[]}return e.prototype.dispose=function(){this.array.length=0},e}(),e8="GS_glFragColor",te=/*#__PURE__*/function(){function e(){}var r=e.prototype;return r.defaultCodeGen=function(t){var r=e._tmpArrayPool,n=r.get();n.dispose();for(var a,o=i(t);!(a=o()).done;){var s=a.value;ef(s,ev)?n.array.push(s.lexeme):n.array.push(s.codeGen(this))}return r.return(n),n.array.join(" ")},r.visitPostfixExpression=function(e){var t=e.children,r=t.length,i=e6.context;if(3===r){var n=t[0],a=t[2];return ef(a,ev)?i.isAttributeStruct(n.type)?(i.referenceAttribute(a),a.lexeme):i.isVaryingStruct(n.type)?(i.referenceVarying(a),a.lexeme):i.isMRTStruct(n.type)?(i.referenceMRTProp(a),a.lexeme):n.codeGen(this)+"."+a.lexeme:n.codeGen(this)+"."+a.codeGen(this)}if(4===r){var o=t[0],s=t[2],c=o.codeGen(this),u=s.codeGen(this);if("gl_FragData"===c){var l=this.getFragDataCodeGen(u);return i._referencedMRTList[l]=this.getReferencedMRTPropText(u,l),l}return c+"["+u+"]"}return this.defaultCodeGen(e.children)},r.visitVariableIdentifier=function(e){return ef(e.symbolInfo,ek)&&e.symbolInfo.isGlobalVariable&&e6.context.referenceGlobal(e.lexeme,eR.VAR),e.lexeme},r.visitFunctionCall=function(e){var t=e.children[0];if(ef(t.fnSymbol,eO)){e6.context.referenceGlobal(t.fnSymbol.ident,eR.FN);var r=t.children[2],i=t.fnSymbol.astNode.protoType.parameterList;if(ef(r,eu.FunctionCallParameterList)){for(var n=[],a=r.paramNodes,o=0;o<a.length;o++)e6.context.isAttributeStruct(i[o].typeInfo.typeLexeme)||e6.context.isVaryingStruct(i[o].typeInfo.typeLexeme)||n.push(a[o].codeGen(this));return t.fnSymbol.ident+"("+n.join(", ")+")"}}return this.defaultCodeGen(e.children)},r.visitStatementList=function(e){var t=e.children;return 1===t.length?t[0].codeGen(this):t[0].codeGen(this)+"\n"+t[1].codeGen(this)},r.visitSingleDeclaration=function(e){var t=e.typeSpecifier.type;return"string"==typeof t&&e6.context.referenceGlobal(t,eR.STRUCT),this.defaultCodeGen(e.children)},r.visitGlobalVariableDeclaration=function(e){var t=e.children,r=t[0];return ef(r,eu.FullySpecifiedType)&&r.typeSpecifier.isCustom&&e6.context.referenceGlobal(r.type,eR.STRUCT),this.defaultCodeGen(t)},r.visitDeclaration=function(e){var t=e6.context,r=e.children,i=r[0];if(ef(i,eu.InitDeclaratorList)){var n=i.typeInfo.typeLexeme;if(t.isVaryingStruct(n)||t.isMRTStruct(n))return""}return this.defaultCodeGen(r)},r.visitFunctionProtoType=function(e){return e6.context._curFn=e,this.defaultCodeGen(e.children)},r.visitFunctionDefinition=function(e){return e6.context._curFn=void 0,this.defaultCodeGen(e.children)},r.visitFunctionParameterList=function(e){var t=this;return e.parameterInfoList.filter(function(e){return!e6.context.isAttributeStruct(e.typeInfo.typeLexeme)&&!e6.context.isVaryingStruct(e.typeInfo.typeLexeme)}).map(function(e){return e.astNode.codeGen(t)}).join(", ")},r.visitFunctionHeader=function(e){var t=e.returnType.typeSpecifier.lexeme;return e6.context.isAttributeStruct(t)||e6.context.isVaryingStruct(t)?"void "+e.ident.lexeme+"(":this.defaultCodeGen(e.children)},r.visitJumpStatement=function(e){var t=e.children;if(t[0].type===eh.RETURN){var r=t[1];if(ef(r,eu.Expression)){var i,n,a,o,s=e5.unwrapNodeByType(r,eF.variable_identifier);if((null==s?void 0:s.typeInfo)===(null==(n=e6.context.varyingStruct)?void 0:null==(i=n.ident)?void 0:i.lexeme))return"";var c=e5.unwrapNodeByType(r,eF.function_call);if((null==c?void 0:c.type)===(null==(o=e6.context.varyingStruct)?void 0:null==(a=o.ident)?void 0:a.lexeme))return""+r.codeGen(this)+";"}}return this.defaultCodeGen(t)},r.visitFunctionIdentifier=function(e){return this.defaultCodeGen(e.children)},r._reportError=function(e,r){t.Logger.error(r)},e}();te._tmpArrayPool=new t.ReturnableObjectPool(e7,10);var tt=((ec={})[ec.VERTEX=0]="VERTEX",ec[ec.FRAGMENT=1]="FRAGMENT",ec[ec.ALL=2]="ALL",ec),tr=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t._versionText="",t._extensions="",t._globalCodeArray=[],t}a(t,e);var r=t.prototype;return r.visitShaderProgram=function(e,t,r){return e6.reset(),e6.context._passSymbolTable=e.shaderData.symbolTable,{vertex:this.vertexMain(t,e.shaderData),fragment:this._fragmentMain(r,e.shaderData)}},r.vertexMain=function(e,t){var r=t.symbolTable,n=r.lookup(e,eR.FN);if(!(null==n?void 0:n.astNode))throw"no entry function found: "+e;var a=n.astNode;e6.context.stage=tt.VERTEX;var o=a.protoType.returnType;if("string"==typeof o.type){var s=r.lookup(o.type,eR.STRUCT);s?e6.context.varyingStruct=s.astNode:this._reportError(o.location,"invalid varying struct: "+o.type)}else o.type!==eh.VOID&&this._reportError(o.location,"vertex main entry can only return struct or void.");var c=a.protoType.parameterList;if(null==c?void 0:c.length)for(var u,l=i(c);!(u=l()).done;){var p=u.value;if("string"==typeof p.typeInfo.type){var h=r.lookup(p.typeInfo.type,eR.STRUCT);if(!h){this._reportError(p.astNode.location,'Not found attribute struct "'+p.typeInfo.type+'".');continue}e6.context.attributeStructs.push(h.astNode);for(var d,_=i(h.astNode.propList);!(d=_()).done;){var f=d.value;e6.context.attributeList.push(f)}}else e6.context.attributeList.push(p)}var S=a.statements.codeGen(this),v=this._globalCodeArray;v.length=0,this._getGlobalText(t,v),this.getAttributeDeclare(v),this.getVaryingDeclare(v);var m=v.sort(function(e,t){return e.index-t.index}).map(function(e){return e.text}).join("\n");return e6.context.reset(),this._versionText+"\n"+m+"\n\nvoid main() "+S},r._fragmentMain=function(e,t){var r=t.symbolTable,i=r.lookup(e,eR.FN);if(!(null==i?void 0:i.astNode))throw"no entry function found: "+e;var n=i.astNode,a=n.returnStatement;a&&(a.isFragReturnStatement=!0);var o=e6.context;o.stage=tt.FRAGMENT;var s=n.protoType.returnType,c=s.type,u=s.location;if("string"==typeof c){var l=r.lookup(c,eR.STRUCT);l?o.mrtStruct=l.astNode:this._reportError(u,"invalid mrt struct: "+c)}else c!==eh.VOID&&c!==eh.VEC4&&this._reportError(u,"fragment main entry can only return struct or vec4.");var p=n.statements.codeGen(this),h=this._globalCodeArray;h.length=0,this._getGlobalText(t,h),this.getVaryingDeclare(h),this.getMRTDeclare(h);var d=h.sort(function(e,t){return e.index-t.index}).map(function(e){return e.text}).join("\n");return o.reset(),this._versionText+"\n"+this._extensions+"\n\n#ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n precision highp int;\n#else\n precision mediump float;\n precision mediump int;\n#endif\n\n"+d+"\n\nvoid main() "+p},r._getGlobalText=function(e,t,r,n){void 0===r&&(r=0),void 0===n&&(n=new Set);var a=e6.context._referencedGlobals;if(r===Object.keys(a).length){for(var o,s=i(e.globalPrecisions);!(o=s()).done;){var c=o.value;t.push({text:c.codeGen(this),index:c.location.start.index})}return t}for(var u in r=Object.keys(a).length,a){var l=a[u];n.has(u)||(n.add(u),ef(l,eI)?l.symbolType===eR.VAR?t.push({text:"uniform "+l.astNode.codeGen(this),index:l.astNode.location.start.index}):t.push({text:l.astNode.codeGen(this),index:l.astNode.location.start.index}):t.push({text:l.codeGen(this),index:l.location.start.index}))}return this._getGlobalText(e,t,r,n)},t}(te),ti=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t._versionText="#version 100",t._extensions=["GL_EXT_shader_texture_lod","GL_OES_standard_derivatives","GL_EXT_draw_buffers","GL_EXT_frag_depth"].map(function(e){return"#extension "+e+" : enable\n"}).join(""),t}a(t,e);var r=t.prototype;return r.getFragDataCodeGen=function(e){return"gl_FragData["+e+"]"},r.getReferencedMRTPropText=function(e,t){return""},r.getAttributeDeclare=function(e){for(var t,r=i(Object.values(e6.context._referencedAttributeList));!(t=r()).done;){var n=t.value;e.push({text:"attribute "+n.typeInfo.typeLexeme+" "+n.ident.lexeme+";",index:n.ident.location.start.index})}},r.getVaryingDeclare=function(e){for(var t,r=i(Object.values(e6.context._referencedVaryingList));!(t=r()).done;){var n=t.value;e.push({text:"varying "+n.typeInfo.typeLexeme+" "+n.ident.lexeme+";",index:n.ident.location.start.index})}},r.getMRTDeclare=function(e){},r.visitPostfixExpression=function(t){var r=t.children,i=r[0],n=e6.context;if(ef(i,eu.PostfixExpression)&&n.isMRTStruct(i.type)){var a=r[2],o=n.mrtStruct.propList.find(function(e){return e.ident.lexeme===a.lexeme});return o?"gl_FragData["+o.mrtIndex+"]":(this._reportError(a.location,"not found mrt property: "+a.lexeme),"")}return e.prototype.visitPostfixExpression.call(this,t)},r.visitJumpStatement=function(t){return t.isFragReturnStatement?"gl_FragColor = "+t.children[1].codeGen(this):e.prototype.visitJumpStatement.call(this,t)},t.getVisitor=function(){return this._singleton||(this._singleton=new t),this._singleton},t}(tr),tn=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t._versionText="#version 300 es",t}a(t,e);var r=t.prototype;return r.getFragDataCodeGen=function(e){return"GS_glFragData_"+e},r.getReferencedMRTPropText=function(e,t){return"layout(location = "+e+") out vec4 "+t+";"},r.getAttributeDeclare=function(e){for(var t,r=i(Object.values(e6.context._referencedAttributeList));!(t=r()).done;){var n=t.value;e.push({text:"in "+n.typeInfo.typeLexeme+" "+n.ident.lexeme+";",index:n.ident.location.start.index})}},r.getVaryingDeclare=function(e){for(var t=e6.context.stage===tt.FRAGMENT?"in":"out",r=Object.values(e6.context._referencedVaryingList),i=0;i<r.length;i++){var n,a=r[i];e.push({text:(null!=(n=a.qualifier)?n:t)+" "+a.typeInfo.typeLexeme+" "+a.ident.lexeme+";",index:a.ident.location.start.index})}},r.getMRTDeclare=function(e){var t=e6.context._referencedMRTList;for(var r in t){var i=t[r];"string"==typeof i?e.push({text:i,index:Number.MAX_SAFE_INTEGER}):e.push({text:this.getReferencedMRTPropText(i.mrtIndex,r),index:i.ident.location.start.index})}},r.visitFunctionIdentifier=function(e){var t=e.children;if(1!==t[0].children.length)return this.defaultCodeGen(t);var r=e.lexeme;if("texture2D"===e.ident||"textureCube"===e.ident)r="texture";else if("texture2DProj"===e.ident)r="textureProj";else if(e6.context.stage===tt.FRAGMENT)switch(e.ident){case"texture2DLodEXT":case"textureCubeLodEXT":r="textureLod";break;case"texture2DGradEXT":case"textureCubeGradEXT":r="textureGrad";break;case"texture2DProjLodEXT":r="textureProjLod";break;case"texture2DProjGradEXT":r="textureProjGrad";break;case"gl_FragDepthEXT":r="gl_FragDepth"}return r},r.visitVariableIdentifier=function(t){return e6.context.stage===tt.FRAGMENT&&"gl_FragColor"===t.lexeme?(this._registerFragColorVariable(t),e8):e.prototype.visitVariableIdentifier.call(this,t)},r.visitJumpStatement=function(t){return t.isFragReturnStatement?e6.context.mrtStruct?"":(this._registerFragColorVariable(t),e8+" = "+t.children[1].codeGen(this)+";"):e.prototype.visitJumpStatement.call(this,t)},r._registerFragColorVariable=function(e){var t=e6.context._referencedVaryingList;if(!t[e8]){var r=ev.pool.get();r.set(e_.ID,e8,t_.createPosition(0,0,0)),t[e8]={ident:r,typeInfo:new eU(eh.VEC4,"vec4"),qualifier:"out",astNode:e}}},t.getVisitor=function(){return this._singleton||(this._singleton=new t),this._singleton},t}(tr);function ta(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(ta=function(){return!!e})()}function to(e,t,r){return(to=ta()?Reflect.construct:function(e,t,r){var i=[null];i.push.apply(i,t);var a=new(Function.bind.apply(e,i));return r&&n(a,r.prototype),a}).apply(null,arguments)}function ts(){return(ts=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e}).apply(this,arguments)}var tc=new Map([["RenderQueueType",eh.GS_RenderQueueType],["BlendState",eh.GS_BlendState],["DepthState",eh.GS_DepthState],["StencilState",eh.GS_StencilState],["RasterState",eh.GS_RasterState],["EditorProperties",eh.GS_EditorProperties],["EditorMacros",eh.GS_EditorMacros],["Editor",eh.GS_Editor],["Tags",eh.GS_Tags],["VertexShader",eh.GS_VertexShader],["FragmentShader",eh.GS_FragmentShader],["SubShader",eh.GS_SubShader],["Pass",eh.GS_Pass],["BlendFactor",eh.GS_BlendFactor],["BlendOperation",eh.GS_BlendOperation],["Bool",eh.GS_Bool],["Number",eh.GS_Number],["CompareFunction",eh.GS_CompareFunction],["StencilOperation",eh.GS_StencilOperation],["CullMode",eh.GS_CullMode],["true",eh.TRUE],["false",eh.FALSE],["UsePass",eh.GS_UsePass],["Color",eh.GS_Color]]),tu=/*#__PURE__*/function(e){function t(t,r){return void 0===r&&(r=new Map),e.call(this,t,r)||this}a(t,e);var r=t.prototype;return r.scanWord=function(){this.skipCommentsAndSpace();for(var e=this._currentIndex;/\S/.test(this.getCurChar())&&!this.isEnd();)this._advance();return this._source.substring(e,this._currentIndex)},r.scanNumber=function(){this.skipCommentsAndSpace();for(var e=this._currentIndex;/[0-9]/.test(this.getCurChar());)this._advance();if("."===this.getCurChar())for(this._advance();/[0-9]/.test(this.getCurChar());)this._advance();return Number(this._source.substring(e,this._currentIndex))},t}(eT),tl=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}a(r,e);var i=r.prototype;return i.insert=function(e){for(var r,i=null!=(r=this._table.get(e.ident))?r:[],n=0;n<i.length;n++)if(i[n].type===e.type){t.Logger.warn("replace symbol:",e.ident),i[n]=e;return}i.push(e),this._table.set(e.ident,i)},i.lookup=function(e,t){var r=this._table.get(e);if(r)for(var i=r.length,n=0;n<i;n++){var a=r[n];if(a.type===t)return a}},r}(eN),tp=[eh.GS_RenderQueueType,eh.GS_BlendFactor,eh.GS_BlendOperation,eh.GS_Bool,eh.GS_Number,eh.GS_Color,eh.GS_CompareFunction,eh.GS_StencilOperation,eh.GS_CullMode],th=[eh.GS_BlendState,eh.GS_DepthState,eh.GS_RasterState,eh.GS_StencilState],td=/*#__PURE__*/function(){function e(){}return e.reset=function(){this._errors.length=0,this._symbolTableStack.clear(),this._newScope()},e.parse=function(e){var r=performance.now(),i=new tu(e,tc),n={subShaders:[],globalContents:[],renderStates:{constantMap:{},variableMap:{}}};i.scanText("Shader"),n.name=i.scanPairedText('"','"'),i.scanText("{"),i.skipCommentsAndSpace(),this._parseShaderStatements(n,i);for(var a=n.globalContents,o=n.renderStates,s=0;s<n.subShaders.length;s++)for(var c=n.subShaders[s],u=a.concat(c.globalContents),l=ts({},o.constantMap,c.renderStates.constantMap),p=ts({},o.variableMap,c.renderStates.variableMap),h=0;h<c.passes.length;h++){var d=c.passes[h];if(Object.assign(d.renderStates.constantMap,l),Object.assign(d.renderStates.variableMap,p),!d.isUsePass){var _=u.concat(d.globalContents);d.contents=_.map(function(e){return e.content}).join("\n")}}return t.Logger.info("[content compilation] cost time "+(performance.now()-r)+"ms"),n},e._isRenderStateDeclarator=function(e){return th.includes(e.type)},e._isEngineType=function(e){return tp.includes(e.type)},e._lookupSymbolByType=function(t,r){for(var i=e._symbolTableStack.stack,n=i.length,a=n-1;a>=0;a--){var o=i[a].lookup(t,r);if(o)return o}},e._parseShaderStatements=function(t,r){for(var i=1,n=r.getCurPosition();;){var a=r.scanToken();switch(a.type){case eh.GS_SubShader:this._addGlobalStatement(t,r,n,a.lexeme.length);var o=this._parseSubShader(r);t.subShaders.push(o),n=r.getCurPosition();break;case eh.GS_EditorProperties:case eh.GS_EditorMacros:case eh.GS_Editor:this._addGlobalStatement(t,r,n,a.lexeme.length),r.scanPairedText("{","}",!0),n=r.getCurPosition();break;case eh.GS_RenderQueueType:this._addGlobalStatement(t,r,n,a.lexeme.length),this._parseRenderQueueAssignment(t,r),n=r.getCurPosition();break;case e_.NOT_WORD:if("{"===a.lexeme)i+=1;else if("}"===a.lexeme&&0==(i-=1)){this._addGlobalStatement(t,r,n,a.lexeme.length),this._symbolTableStack.dropScope();return}default:if(e._isRenderStateDeclarator(a)){this._addGlobalStatement(t,r,n,a.lexeme.length),this._parseRenderStateDeclarationOrAssignment(t,a,r),n=r.getCurPosition();break}e._isEngineType(a)&&(this._addGlobalStatement(t,r,n,a.lexeme.length),this._parseVariableDeclaration(a.type,r),n=r.getCurPosition())}}},e._parseRenderStateDeclarationOrAssignment=function(t,r,i){var n,a=i.scanToken();if(a.type===e_.ID)n=!0,i.scanText("{");else if("{"===a.lexeme)n=!1;else if("="===a.lexeme){var o=i.scanToken();i.scanText(";");var s=e._lookupSymbolByType(o.lexeme,r.type);(null==s?void 0:s.value)||eS.createGSError('Invalid "'+r.lexeme+'" variable: '+o.lexeme,eE.CompilationError,i.source,o.location);var c=s.value;Object.assign(t.renderStates.constantMap,c.constantMap),Object.assign(t.renderStates.variableMap,c.variableMap);return}var u=this._parseRenderStatePropList(r.lexeme,i);n?this._symbolTableStack.insert({ident:a.lexeme,type:r.type,value:u}):(Object.assign(t.renderStates.constantMap,u.constantMap),Object.assign(t.renderStates.variableMap,u.variableMap))},e._parseVariableDeclaration=function(e,t){var r=t.scanToken();t.scanText(";"),this._symbolTableStack.insert({type:r.type,ident:r.lexeme})},e._newScope=function(){var e=new tl;this._symbolTableStack.newScope(e)},e._dropScope=function(){this._symbolTableStack.dropScope()},e._parseRenderStatePropList=function(e,t){for(var r={constantMap:{},variableMap:{}};"}"!==t.getCurChar();)this._parseRenderStatePropItem(r,e,t),t.skipCommentsAndSpace();return t._advance(),r},e._parseRenderStatePropItem=function(r,i,n){var a=n.scanToken().lexeme,o=n.scanToken();if("BlendState"===i&&"BlendColor"!==a&&"AlphaToCoverage"!==a){var s=0;"["===o.lexeme?(s=n.scanNumber(),n.scanText("]"),n.scanText("=")):"="!==o.lexeme&&eS.createGSError("Invalid syntax, expect character '=', but got "+o.lexeme,eE.CompilationError,n.source,n.getCurPosition()),a+=s}a=i+a;var c=t.RenderStateDataKey[a];if(void 0==c&&eS.createGSError("Invalid render state element "+a,eE.CompilationError,n.source,n.getCurPosition()),n.skipCommentsAndSpace(),/[0-9.]/.test(n.getCurChar()))p=n.scanNumber();else{var u=n.scanToken();if(u.type===eh.TRUE)p=!0;else if(u.type===eh.FALSE)p=!1;else if(u.type===eh.GS_Color){n.scanText("(");for(var l=[];;){if(l.push(n.scanNumber()),n.skipCommentsAndSpace(),")"===n.peek(1)){n._advance();break}n.scanText(",")}p=to(t.Color,[].concat(l))}else if("."===n.getCurChar()){n._advance();var p,h,d=n.scanToken();void 0==(p=null==(h=e._engineType[u.lexeme])?void 0:h[d.lexeme])&&eS.createGSError("Invalid engine constant: "+u.lexeme+"."+d.lexeme,eE.CompilationError,n.source,d.location)}else p=u.lexeme}n.scanText(";"),"string"==typeof p?r.variableMap[c]=p:r.constantMap[c]=p},e._parseRenderQueueAssignment=function(r,i){i.scanText("=");var n=i.scanToken();i.scanText(";");var a=e._engineType.RenderQueueType[n.lexeme],o=t.RenderStateDataKey.RenderQueueType;void 0==a?r.renderStates.variableMap[o]=n.lexeme:r.renderStates.constantMap[o]=a},e._addGlobalStatement=function(e,t,r,i){t.current>r.index+i&&e.globalContents.push({range:{start:r,end:ts({},t.getCurPosition(),{index:t.current-i-1})},content:t.source.substring(r.index,t.current-i-1)})},e._parseSubShader=function(t){this._newScope();var r={passes:[],globalContents:[],renderStates:{constantMap:{},variableMap:{}},tags:{}},i=1;r.name=t.scanPairedText('"','"'),t.scanText("{"),t.skipCommentsAndSpace();for(var n=t.getCurPosition();;){var a=t.scanToken();switch(a.type){case eh.GS_Pass:this._addGlobalStatement(r,t,n,a.lexeme.length);var o=this._parsePass(t);r.passes.push(o),n=t.getCurPosition();break;case eh.GS_RenderQueueType:this._addGlobalStatement(r,t,n,a.lexeme.length),this._parseRenderQueueAssignment(r,t),n=t.getCurPosition();break;case eh.GS_UsePass:this._addGlobalStatement(r,t,n,a.lexeme.length);var s=t.scanPairedText('"','"');r.passes.push({name:s,isUsePass:!0,renderStates:{constantMap:{},variableMap:{}},tags:{}}),n=t.getCurPosition();break;case eh.GS_Tags:this._addGlobalStatement(r,t,n,a.lexeme.length),this._parseTags(r,t),n=t.getCurPosition();break;case e_.NOT_WORD:if("{"===a.lexeme)i+=1;else if("}"===a.lexeme&&0==(i-=1))return this._addGlobalStatement(r,t,n,a.lexeme.length),this._dropScope(),r;default:if(e._isRenderStateDeclarator(a)){this._addGlobalStatement(r,t,n,a.lexeme.length),this._parseRenderStateDeclarationOrAssignment(r,a,t),n=t.getCurPosition();break}e._isEngineType(a)&&(this._addGlobalStatement(r,t,n,a.lexeme.length),this._parseVariableDeclaration(a.type,t),n=t.getCurPosition())}}},e._parseTags=function(e,t){for(t.scanText("{");;){var r=t.scanToken();t.scanText("=");var i=t.scanPairedText('"','"');if(t.skipCommentsAndSpace(),e.tags[r.lexeme]=i,"}"===t.peek(1)){t._advance();return}t.scanText(",")}},e._parsePass=function(t){this._newScope();var r={globalContents:[],renderStates:{constantMap:{},variableMap:{}},tags:{}};r.name=t.scanPairedText('"','"'),t.scanText("{");var i=1;t.skipCommentsAndSpace();for(var n=t.getCurPosition();;){var a=t.scanToken();switch(a.type){case eh.GS_RenderQueueType:this._addGlobalStatement(r,t,n,a.lexeme.length),this._parseRenderQueueAssignment(r,t),n=t.getCurPosition();break;case eh.GS_Tags:this._addGlobalStatement(r,t,n,a.lexeme.length),this._parseTags(r,t),n=t.getCurPosition();break;case eh.GS_VertexShader:case eh.GS_FragmentShader:this._addGlobalStatement(r,t,n,a.lexeme.length),t.scanText("=");var o=t.scanToken();r[a.lexeme]&&eS.createGSError("reassign main entry",eE.CompilationError,t.source,t.getCurPosition()),r[a.type===eh.GS_VertexShader?"vertexEntry":"fragmentEntry"]=o.lexeme,t.scanText(";"),n=t.getCurPosition();break;case e_.NOT_WORD:if("{"===a.lexeme)i+=1;else if("}"===a.lexeme&&0==(i-=1))return this._addGlobalStatement(r,t,n,a.lexeme.length),this._dropScope(),r;default:if(e._isRenderStateDeclarator(a)){this._addGlobalStatement(r,t,n,a.lexeme.length),this._parseRenderStateDeclarationOrAssignment(r,a,t),n=t.getCurPosition();break}e._isEngineType(a)&&(this._addGlobalStatement(r,t,n,a.lexeme.length),this._parseVariableDeclaration(a.type,t),n=t.getCurPosition())}}},e}();td._engineType={RenderQueueType:t.RenderQueueType,CompareFunction:t.CompareFunction,StencilOperation:t.StencilOperation,BlendOperation:t.BlendOperation,BlendFactor:t.BlendFactor,CullMode:t.CullMode},td._errors=[],td._symbolTableStack=new eG;var t_=/*#__PURE__*/function(){function e(){}var r=e.prototype;return r._parseShaderPass=function(r,n,a,o,s,c,u){e9.reset(t.ShaderLib,u);for(var l,p=i(o);!(l=p()).done;){var h=l.value;e9.addPredefinedMacro(h.name,h.value)}for(var d=0;d<c.length;d++)e9.addPredefinedMacro(c[d]);var _=performance.now(),f=e9.process(r);t.Logger.info("[pass compilation - preprocessor] cost time "+(performance.now()-_)+"ms");var S=new eC(f).tokenize(),v=e._parser;e._processingPassText=f;var m=v.parse(S);if(m){var g=s===t.ShaderPlatformTarget.GLES100?ti.getVisitor():tn.getVisitor(),y=performance.now(),x=g.visitShaderProgram(m,n,a);return t.Logger.info("[CodeGen] cost time: "+(performance.now()-y)+"ms"),e._processingPassText=void 0,x}},r._parseShaderContent=function(e){return eS.clearAllShaderLabObjectPool(),td.reset(),td.parse(e)},e.createPosition=function(e,t,r){var i=this._shaderPositionPool.get();return i.set(e),i},e.createRange=function(e,t){var r=this._shaderRangePool.get();return r.set(e,t),r},e}();t_._parser=eY.create(),t_._shaderPositionPool=eS.createObjectPool(ep),t_._shaderRangePool=eS.createObjectPool(el);var tf="1.6.0-alpha.1";console.log("Galacean Engine ShaderLab Version: "+tf+" | Mode: Release"),e.ShaderLab=t_,e.version=tf,Object.defineProperty(e,"__esModule",{value:!0})});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@galacean/engine")):"function"==typeof define&&define.amd?define(["exports","@galacean/engine"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).Galacean=e.Galacean||{},e.Galacean.ShaderLab={}),e.Galacean)}(this,function(e,t){"use strict";function r(e,t){return(r=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function n(e,t){if("function"!=typeof t&&null!==t)throw TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&r(e,t)}function i(e,t){return null!=t&&"undefined"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t}function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function o(e,t,r){return t&&a(e.prototype,t),r&&a(e,r),e}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function c(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return s(e,void 0);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return s(e,void 0)}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function l(e,t,r,n){var i,a=arguments.length,o=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,r,o):i(t,r))||o);return a>3&&o&&Object.defineProperty(t,r,o),o}"function"==typeof SuppressedError&&SuppressedError;var u,p,h,_,d,f,m,S,g,v,y,E,x,C,A,T,b,O,I,L,P,R,M,N,D,G,V,k,F,B,w,W,U,H,j,z,q,X,Q,Y,K,J,Z,$,ee,et,er,en,ei,ea,eo,es,ec,el,eu,ep,eh,e_,ed,ef,em,eS,eg,ev,ey,eE,ex,eC,eA,eT,eb,eO,eI,eL,eP,eR,eM,eN,eD=/*#__PURE__*/function(){function e(){}var t=e.prototype;return t.set=function(e,t){this.start=e,this.end=t},t.dispose=function(){this.start.dispose(),this.end.dispose()},e}(),eG=/*#__PURE__*/function(){function e(){}var t=e.prototype;return t.set=function(e){this.index=e},t.dispose=function(){this.index=0},e}(),eV=((u={})[u.ID=1e3]="ID",u[u.FLOAT_CONSTANT=1001]="FLOAT_CONSTANT",u[u.INT_CONSTANT=1002]="INT_CONSTANT",u[u.STRING_CONST=1003]="STRING_CONST",u[u.LEFT_OP=1004]="LEFT_OP",u[u.RIGHT_OP=1005]="RIGHT_OP",u[u.INC_OP=1006]="INC_OP",u[u.DEC_OP=1007]="DEC_OP",u[u.LE_OP=1008]="LE_OP",u[u.GE_OP=1009]="GE_OP",u[u.EQ_OP=1010]="EQ_OP",u[u.NE_OP=1011]="NE_OP",u[u.AND_OP=1012]="AND_OP",u[u.OR_OP=1013]="OR_OP",u[u.XOR_OP=1014]="XOR_OP",u[u.MUL_ASSIGN=1015]="MUL_ASSIGN",u[u.DIV_ASSIGN=1016]="DIV_ASSIGN",u[u.ADD_ASSIGN=1017]="ADD_ASSIGN",u[u.SUB_ASSIGN=1018]="SUB_ASSIGN",u[u.MOD_ASSIGN=1019]="MOD_ASSIGN",u[u.LEFT_ASSIGN=1020]="LEFT_ASSIGN",u[u.RIGHT_ASSIGN=1021]="RIGHT_ASSIGN",u[u.AND_ASSIGN=1022]="AND_ASSIGN",u[u.XOR_ASSIGN=1023]="XOR_ASSIGN",u[u.OR_ASSIGN=1024]="OR_ASSIGN",u[u.LEFT_PAREN=1025]="LEFT_PAREN",u[u.RIGHT_PAREN=1026]="RIGHT_PAREN",u[u.LEFT_BRACKET=1027]="LEFT_BRACKET",u[u.RIGHT_BRACKET=1028]="RIGHT_BRACKET",u[u.LEFT_BRACE=1029]="LEFT_BRACE",u[u.RIGHT_BRACE=1030]="RIGHT_BRACE",u[u.DOT=1031]="DOT",u[u.COMMA=1032]="COMMA",u[u.COLON=1033]="COLON",u[u.EQUAL=1034]="EQUAL",u[u.SEMICOLON=1035]="SEMICOLON",u[u.BANG=1036]="BANG",u[u.DASH=1037]="DASH",u[u.TILDE=1038]="TILDE",u[u.PLUS=1039]="PLUS",u[u.STAR=1040]="STAR",u[u.SLASH=1041]="SLASH",u[u.PERCENT=1042]="PERCENT",u[u.LEFT_ANGLE=1043]="LEFT_ANGLE",u[u.RIGHT_ANGLE=1044]="RIGHT_ANGLE",u[u.VERTICAL_BAR=1045]="VERTICAL_BAR",u[u.CARET=1046]="CARET",u[u.AMPERSAND=1047]="AMPERSAND",u[u.QUESTION=1048]="QUESTION",u[u.NotWord=1049]="NotWord",u[u.EPSILON=1998]="EPSILON",u[u.EOF=1999]="EOF",u),ek=((p={})[p.CONST=0]="CONST",p[p.BOOL=1]="BOOL",p[p.FLOAT=2]="FLOAT",p[p.DOUBLE=3]="DOUBLE",p[p.INT=4]="INT",p[p.UINT=5]="UINT",p[p.BREAK=6]="BREAK",p[p.CONTINUE=7]="CONTINUE",p[p.DO=8]="DO",p[p.ELSE=9]="ELSE",p[p.FOR=10]="FOR",p[p.IF=11]="IF",p[p.WHILE=12]="WHILE",p[p.DISCARD=13]="DISCARD",p[p.RETURN=14]="RETURN",p[p.BVEC2=15]="BVEC2",p[p.BVEC3=16]="BVEC3",p[p.BVEC4=17]="BVEC4",p[p.IVEC2=18]="IVEC2",p[p.IVEC3=19]="IVEC3",p[p.IVEC4=20]="IVEC4",p[p.UVEC2=21]="UVEC2",p[p.UVEC3=22]="UVEC3",p[p.UVEC4=23]="UVEC4",p[p.VEC2=24]="VEC2",p[p.VEC3=25]="VEC3",p[p.VEC4=26]="VEC4",p[p.VEC4_ARRAY=27]="VEC4_ARRAY",p[p.MAT2=28]="MAT2",p[p.MAT3=29]="MAT3",p[p.MAT4=30]="MAT4",p[p.MAT2X3=31]="MAT2X3",p[p.MAT2X4=32]="MAT2X4",p[p.MAT3X2=33]="MAT3X2",p[p.MAT3X4=34]="MAT3X4",p[p.MAT4X2=35]="MAT4X2",p[p.MAT4X3=36]="MAT4X3",p[p.IN=37]="IN",p[p.OUT=38]="OUT",p[p.INOUT=39]="INOUT",p[p.CENTROID=40]="CENTROID",p[p.SAMPLER2D=41]="SAMPLER2D",p[p.SAMPLER3D=42]="SAMPLER3D",p[p.SAMPLER_CUBE=43]="SAMPLER_CUBE",p[p.SAMPLER2D_SHADOW=44]="SAMPLER2D_SHADOW",p[p.SAMPLER_CUBE_SHADOW=45]="SAMPLER_CUBE_SHADOW",p[p.SAMPLER2D_ARRAY=46]="SAMPLER2D_ARRAY",p[p.SAMPLER2D_ARRAY_SHADOW=47]="SAMPLER2D_ARRAY_SHADOW",p[p.I_SAMPLER2D=48]="I_SAMPLER2D",p[p.I_SAMPLER3D=49]="I_SAMPLER3D",p[p.I_SAMPLER_CUBE=50]="I_SAMPLER_CUBE",p[p.I_SAMPLER2D_ARRAY=51]="I_SAMPLER2D_ARRAY",p[p.U_SAMPLER2D=52]="U_SAMPLER2D",p[p.U_SAMPLER3D=53]="U_SAMPLER3D",p[p.U_SAMPLER_CUBE=54]="U_SAMPLER_CUBE",p[p.U_SAMPLER2D_ARRAY=55]="U_SAMPLER2D_ARRAY",p[p.STRUCT=56]="STRUCT",p[p.LAYOUT=57]="LAYOUT",p[p.LOCATION=58]="LOCATION",p[p.VOID=59]="VOID",p[p.PRECISION=60]="PRECISION",p[p.PRECISE=61]="PRECISE",p[p.HIGHP=62]="HIGHP",p[p.MEDIUMP=63]="MEDIUMP",p[p.LOWP=64]="LOWP",p[p.INVARIANT=65]="INVARIANT",p[p.SMOOTH=66]="SMOOTH",p[p.FLAT=67]="FLAT",p[p.NOPERSPECTIVE=68]="NOPERSPECTIVE",p[p.True=69]="True",p[p.False=70]="False",p[p.LeftBrace=71]="LeftBrace",p[p.RightBrace=72]="RightBrace",p[p.Equal=73]="Equal",p[p.GSRenderQueueType=74]="GSRenderQueueType",p[p.GSBlendState=75]="GSBlendState",p[p.GSDepthState=76]="GSDepthState",p[p.GSStencilState=77]="GSStencilState",p[p.GSRasterState=78]="GSRasterState",p[p.GSEditorProperties=79]="GSEditorProperties",p[p.GSEditorMacros=80]="GSEditorMacros",p[p.GSEditor=81]="GSEditor",p[p.GSTags=82]="GSTags",p[p.GSVertexShader=83]="GSVertexShader",p[p.GSFragmentShader=84]="GSFragmentShader",p[p.GSSubShader=85]="GSSubShader",p[p.GSPass=86]="GSPass",p[p.GSBlendFactor=87]="GSBlendFactor",p[p.GSBlendOperation=88]="GSBlendOperation",p[p.GSBool=89]="GSBool",p[p.GSNumber=90]="GSNumber",p[p.GSColor=91]="GSColor",p[p.GSCompareFunction=92]="GSCompareFunction",p[p.GSStencilOperation=93]="GSStencilOperation",p[p.GSCullMode=94]="GSCullMode",p[p.GSUsePass=95]="GSUsePass",p[p.MACRO_IF=96]="MACRO_IF",p[p.MACRO_IFDEF=97]="MACRO_IFDEF",p[p.MACRO_IFNDEF=98]="MACRO_IFNDEF",p[p.MACRO_ELSE=99]="MACRO_ELSE",p[p.MACRO_ELIF=100]="MACRO_ELIF",p[p.MACRO_ENDIF=101]="MACRO_ENDIF",p[p.MACRO_UNDEF=102]="MACRO_UNDEF",p[p.MACRO_DEFINE_EXPRESSION=103]="MACRO_DEFINE_EXPRESSION",p[p.MACRO_CONDITIONAL_EXPRESSION=104]="MACRO_CONDITIONAL_EXPRESSION",p[p.MACRO_CALL=105]="MACRO_CALL",p),eF=/*#__PURE__*/function(){function e(){}return e.createObjectPool=function(r){var n=new t.ClearableObjectPool(r);return e._shaderLabObjectPoolSet.push(n),n},e.clearAllShaderLabObjectPool=function(){for(var t=0,r=e._shaderLabObjectPoolSet.length;t<r;t++)e._shaderLabObjectPoolSet[t].clear()},e.createGSError=function(e,r,n,i,a){t.Logger.error(e)},e}();eF._shaderLabObjectPoolSet=[];var eB=/*#__PURE__*/function(){function e(){}var t=e.prototype;return t.set=function(e,t,r){if(this.type=e,this.lexeme=t,r){if(i(r,eD))this.location=r;else{var n=tk.createPosition(r.index+t.length);this.location=tk.createRange(r,n)}}},t.dispose=function(){},e}();eB.pool=eF.createObjectPool(eB);var ew=new eB;ew.set(eV.EOF,"/EOF");var eW=/*#__PURE__*/function(){function e(){}return e.parse=function(e,t,r,n){var i=this;return void 0===n&&(n=!0),n&&this._parseMacroDefines(e,r),e.replace(this._includeReg,function(e,n){return i._replace(n,t,r)})},e.getReferenceSymbolNames=function(e,t,r){r.length=0;var n=e[t];if(n)for(var i=0;i<n.length;i++){var a=n[i],o=a.valueType;if(2===o||1===o){var s=2===o?a.functionCallName:a.value;if(-1!==a.params.indexOf(s))continue;-1===r.indexOf(s)&&r.push(s)}}},e._isNumber=function(e){return!isNaN(Number(e))},e._isExist=function(e,t){return e.some(function(e){return e.valueType===t.valueType&&e.value===t.value&&e.isFunction===t.isFunction&&e.functionCallName===t.functionCallName&&e.params.length===t.params.length&&e.params.every(function(e,r){return e===t.params[r]})})},e._parseMacroDefines=function(e,t){var r;for(this._macroRegex.lastIndex=0;null!==(r=this._macroRegex.exec(e));){var n=r[1],i=r[2],a=r[3],o=r[4],s=!!i&&!!o,c=s&&a?a.split(",").map(function(e){return e.trim()}).filter(Boolean):[],l=o?o.trim():"",u=3,p="";if(this._isNumber(l))u=0;else if(this._symbolReg.test(l))u=1;else{var h=this._funcCallReg.exec(l);h&&(u=2,p=h[1])}var _={isFunction:s,name:n,value:l,valueType:u,params:c,functionCallName:p},d=t[n];d?this._isExist(d,_)||d.push(_):t[n]=[_]}},e._mergeMacroDefineLists=function(e,t){for(var r in e)if(t[r])for(var n=t[r],i=e[r],a=0;a<i.length;a++){var o=i[a];this._isExist(n,o)||n.push(o)}else t[r]=e[r]},e._replace=function(e,r,n){i="."===e[0]?new URL(e,r).href.substring(t.ShaderPass._shaderRootPath.length):e;var i,a=t.ShaderLib[i];if(!a)return t.Logger.error('Shader slice "'+i+'" not founded.'),"";if(this._repeatIncludeSet.has(i)&&t.Logger.warn('Shader slice "'+i+'" is included multiple times.'),this._repeatIncludeSet.add(i),this._macroDefineIncludeMap.has(i))this._mergeMacroDefineLists(this._macroDefineIncludeMap.get(i),n);else{var o={};this._parseMacroDefines(a,o),this._macroDefineIncludeMap.set(i,o),this._mergeMacroDefineLists(o,n)}return this.parse(a,r,n,!1)},e}();function eU(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(eU=function(){return!!e})()}function eH(e,t,n){return(eH=eU()?Reflect.construct:function(e,t,n){var i=[null];i.push.apply(i,t);var a=new(Function.bind.apply(e,i));return n&&r(a,n.prototype),a}).apply(null,arguments)}eW._includeReg=/^[ \t]*#include +"([\w\d./]+)"/gm,eW._macroRegex=/^\s*#define\s+(\w+)[ ]*(\(([^)]*)\))?[ ]+(\(?\w+\)?.*?)(?:\/\/.*|\/\*.*?\*\/)?\s*$/gm,eW._symbolReg=/^[a-zA-Z_][a-zA-Z0-9_]*$/,eW._funcCallReg=/^([a-zA-Z_][a-zA-Z0-9_]*)\s*\((.*)\)$/,eW._macroDefineIncludeMap=new Map,eW._repeatIncludeSet=new Set;var ej=((h={})[h.VERTEX=0]="VERTEX",h[h.FRAGMENT=1]="FRAGMENT",h[h.ALL=2]="ALL",h);function ez(e){return e>=200&&e<=213}var eq=new Map,eX=/*#__PURE__*/function(){function e(e,t,r){for(var n=arguments.length,i=Array(n>3?n-3:0),a=3;a<n;a++)i[a-3]=arguments[a];this.ident=e,this._returnType=t,this.args=i,this.scope=r}return e.getReturnType=function(e,t){return ez(e._returnType)?t:e._returnType},e._create=function(t,r){for(var n,i=arguments.length,a=Array(i>2?i-2:0),o=2;o<i;o++)a[o-2]=arguments[o];var s=eH(e,[].concat([t,r,ej.ALL],a)),c=null!=(n=eq.get(t))?n:[];c.push(s),eq.set(t,c)},e._createWithScop=function(t,r,n){for(var i,a=arguments.length,o=Array(a>3?a-3:0),s=3;s<a;s++)o[s-3]=arguments[s];var c=eH(e,[].concat([t,r,n],o)),l=null!=(i=eq.get(t))?i:[];l.push(c),eq.set(t,l)},e.getFn=function(e,t){var r=eq.get(e);if(r)for(var n=r.length,i=0;i<n;i++){var a=r[i],o=a.args,s=o.length;if(s===t.length){for(var c=3e3,l=!0,u=0;u<s;u++){var p=o[u];if(ez(p))3e3===c&&(c=t[u]);else if(p!==t[u]&&3e3!==t[u]){l=!1;break}}if(l)return a._realReturnType=c,a}}},e.isExist=function(e){return!!eq.get(e)},o(e,[{key:"realReturnType",get:function(){return this._realReturnType}}]),e}();eX._create("radians",200,200),eX._create("degrees",200,200),eX._create("sin",200,200),eX._create("cos",200,200),eX._create("tan",200,200),eX._create("asin",200,200),eX._create("acos",200,200),eX._create("atan",200,200,200),eX._create("atan",200,200),eX._create("sinh",200,200),eX._create("cosh",200,200),eX._create("tanh",200,200),eX._create("asinh",200,200),eX._create("acosh",200,200),eX._create("atanh",200,200),eX._create("pow",200,200,200),eX._create("exp",200,200),eX._create("log",200,200),eX._create("exp2",200,200),eX._create("log2",200,200),eX._create("sqrt",200,200),eX._create("inversesqrt",200,200),eX._create("abs",200,200),eX._create("abs",201,201),eX._create("sign",200,200),eX._create("sign",201,201),eX._create("floor",200,200),eX._create("trunc",200,200),eX._create("round",200,200),eX._create("roundEven",200,200),eX._create("ceil",200,200),eX._create("fract",200,200),eX._create("mod",200,200,ek.FLOAT),eX._create("mod",200,200,200),eX._create("min",200,200,200),eX._create("min",200,200,ek.FLOAT),eX._create("min",201,201,201),eX._create("min",201,201,ek.INT),eX._create("min",202,202,202),eX._create("min",202,202,ek.UINT),eX._create("max",200,200,200),eX._create("max",200,200,ek.FLOAT),eX._create("max",201,201,201),eX._create("max",201,201,ek.INT),eX._create("clamp",200,200,200,200),eX._create("clamp",200,200,ek.FLOAT,ek.FLOAT),eX._create("clamp",201,201,201,201),eX._create("clamp",201,201,ek.INT,ek.INT),eX._create("clamp",202,202,202,202),eX._create("clamp",202,202,ek.UINT,ek.UINT),eX._create("mix",200,200,200,200),eX._create("mix",200,200,200,ek.FLOAT),eX._create("mix",200,200,200,203),eX._create("step",200,200,200),eX._create("step",200,ek.FLOAT,200),eX._create("smoothstep",200,200,200,200),eX._create("smoothstep",200,ek.FLOAT,ek.FLOAT,200),eX._create("isnan",203,200),eX._create("isinf",203,200),eX._create("floatBitsToInt",200,200),eX._create("floatBitsToUint",202,200),eX._create("intBitsToFloat",200,201),eX._create("uintBitsToFloat",200,202),eX._create("packSnorm2x16",ek.UINT,ek.VEC2),eX._create("unpackSnorm2x16",ek.VEC2,ek.UINT),eX._create("packUnorm2x16",ek.UINT,ek.VEC2),eX._create("unpackUnorm2x16",ek.VEC2,ek.UINT),eX._create("packHalf2x16",ek.UINT,ek.VEC2),eX._create("unpackHalf2x16",ek.VEC2,ek.UINT),eX._create("length",ek.FLOAT,200),eX._create("distance",ek.FLOAT,200,200),eX._create("dot",ek.FLOAT,200,200),eX._create("cross",ek.VEC3,ek.VEC3,ek.VEC3),eX._create("normalize",200,200),eX._create("faceforward",200,200,200,200),eX._create("reflect",200,200,200),eX._create("refract",200,200,200,ek.FLOAT),eX._create("matrixCompMult",204,204,204),eX._create("outerProduct",ek.MAT2,ek.VEC2,ek.VEC2),eX._create("outerProduct",ek.MAT3,ek.VEC3,ek.VEC3),eX._create("outerProduct",ek.MAT4,ek.VEC4,ek.VEC4),eX._create("outerProduct",ek.MAT2X3,ek.VEC3,ek.VEC2),eX._create("outerProduct",ek.MAT3X2,ek.VEC2,ek.VEC3),eX._create("outerProduct",ek.MAT2X4,ek.VEC4,ek.VEC2),eX._create("outerProduct",ek.MAT4X2,ek.VEC2,ek.VEC4),eX._create("outerProduct",ek.MAT3X4,ek.VEC4,ek.VEC3),eX._create("outerProduct",ek.MAT4X3,ek.VEC3,ek.VEC4),eX._create("transpose",ek.MAT2,ek.MAT2),eX._create("transpose",ek.MAT3,ek.MAT3),eX._create("transpose",ek.MAT4,ek.MAT4),eX._create("transpose",ek.MAT2X3,ek.MAT3X2),eX._create("transpose",ek.MAT3X2,ek.MAT2X3),eX._create("transpose",ek.MAT4X2,ek.MAT2X4),eX._create("transpose",ek.MAT2X4,ek.MAT4X2),eX._create("transpose",ek.MAT3X4,ek.MAT4X3),eX._create("transpose",ek.MAT4X3,ek.MAT3X4),eX._create("determinant",ek.FLOAT,ek.MAT2),eX._create("determinant",ek.FLOAT,ek.MAT3),eX._create("determinant",ek.FLOAT,ek.MAT4),eX._create("inverse",ek.MAT2,ek.MAT2),eX._create("inverse",ek.MAT3,ek.MAT3),eX._create("inverse",ek.MAT4,ek.MAT4),eX._create("lessThan",205,208,208),eX._create("lessThan",205,206,206),eX._create("lessThan",205,207,207),eX._create("lessThanEqual",205,208,208),eX._create("lessThanEqual",205,206,206),eX._create("lessThanEqual",205,207,207),eX._create("greaterThan",205,208,208),eX._create("greaterThan",205,206,206),eX._create("greaterThan",205,207,207),eX._create("greaterThanEqual",205,208,208),eX._create("greaterThanEqual",205,206,206),eX._create("greaterThanEqual",205,207,207),eX._create("equal",205,208,208),eX._create("equal",205,206,206),eX._create("equal",205,207,207),eX._create("equal",205,205,205),eX._create("notEqual",205,208,208),eX._create("notEqual",205,206,206),eX._create("notEqual",205,207,207),eX._create("notEqual",205,205,205),eX._create("any",ek.BOOL,205),eX._create("all",ek.BOOL,205),eX._create("not",205,205),eX._create("textureSize",ek.IVEC2,210,ek.INT),eX._create("textureSize",ek.IVEC3,211,ek.INT),eX._create("textureSize",ek.IVEC2,212,ek.INT),eX._create("textureSize",ek.IVEC2,ek.SAMPLER2D_SHADOW,ek.INT),eX._create("textureSize",ek.IVEC2,ek.SAMPLER_CUBE_SHADOW,ek.INT),eX._create("textureSize",ek.IVEC3,213,ek.INT),eX._create("textureSize",ek.IVEC3,ek.SAMPLER2D_ARRAY_SHADOW,ek.INT),eX._create("texture2D",ek.VEC4,ek.SAMPLER2D,ek.VEC2),eX._create("texture2D",ek.VEC4,ek.SAMPLER2D,ek.VEC2,ek.FLOAT),eX._create("texture",209,210,ek.VEC2,ek.FLOAT),eX._create("texture",209,210,ek.VEC2),eX._create("texture",209,211,ek.VEC3,ek.FLOAT),eX._create("texture",209,211,ek.VEC3),eX._create("texture",209,212,ek.VEC3,ek.FLOAT),eX._create("texture",209,212,ek.VEC3),eX._create("texture",ek.FLOAT,ek.SAMPLER2D_SHADOW,ek.VEC3,ek.FLOAT),eX._create("texture",ek.FLOAT,ek.SAMPLER2D_SHADOW,ek.VEC3),eX._create("texture",ek.FLOAT,ek.SAMPLER_CUBE_SHADOW,ek.VEC4,ek.FLOAT),eX._create("texture",ek.FLOAT,ek.SAMPLER_CUBE_SHADOW,ek.VEC4),eX._create("texture",209,ek.SAMPLER2D_ARRAY,ek.VEC3,ek.FLOAT),eX._create("texture",209,ek.SAMPLER2D_ARRAY,ek.VEC3),eX._create("texture",ek.FLOAT,ek.SAMPLER2D_ARRAY_SHADOW,ek.VEC4),eX._create("textureProj",209,210,ek.VEC3,ek.FLOAT),eX._create("textureProj",209,210,ek.VEC3),eX._create("textureProj",209,210,ek.VEC4,ek.FLOAT),eX._create("textureProj",209,210,ek.VEC4),eX._create("textureProj",209,211,ek.VEC4,ek.FLOAT),eX._create("textureProj",209,211,ek.VEC4),eX._create("textureProj",ek.FLOAT,ek.SAMPLER2D_SHADOW,ek.VEC4,ek.FLOAT),eX._create("textureProj",ek.FLOAT,ek.SAMPLER2D_SHADOW,ek.VEC4),eX._create("textureLod",209,210,ek.VEC2,ek.FLOAT),eX._create("textureLod",209,211,ek.VEC3,ek.FLOAT),eX._create("textureLod",209,212,ek.VEC3,ek.FLOAT),eX._create("textureLod",ek.FLOAT,ek.SAMPLER2D_SHADOW,ek.VEC3,ek.FLOAT),eX._create("textureLod",209,213,ek.VEC3,ek.FLOAT),eX._create("texture2DLodEXT",209,210,ek.VEC2,ek.FLOAT),eX._create("texture2DLodEXT",209,211,ek.VEC3,ek.FLOAT),eX._create("textureCube",ek.SAMPLER_CUBE,ek.VEC3),eX._create("textureCube",ek.SAMPLER_CUBE,ek.VEC3,ek.FLOAT),eX._create("textureCube",209,212,ek.VEC3,ek.FLOAT),eX._create("textureCubeLod",ek.SAMPLER_CUBE,ek.VEC3,ek.FLOAT),eX._create("textureCubeLodEXT",209,212,ek.VEC3,ek.FLOAT),eX._create("textureOffset",209,210,ek.VEC2,ek.IVEC2,ek.FLOAT),eX._create("textureOffset",209,210,ek.VEC2,ek.IVEC2),eX._create("textureOffset",209,211,ek.VEC3,ek.IVEC3,ek.FLOAT),eX._create("textureOffset",209,211,ek.VEC3,ek.IVEC3),eX._create("textureOffset",ek.FLOAT,ek.SAMPLER2D_SHADOW,ek.VEC3,ek.IVEC2,ek.FLOAT),eX._create("textureOffset",ek.FLOAT,ek.SAMPLER2D_SHADOW,ek.VEC3,ek.IVEC2),eX._create("textureOffset",209,213,ek.VEC3,ek.IVEC2,ek.FLOAT),eX._create("textureOffset",209,213,ek.VEC3,ek.IVEC2),eX._create("texelFetch",209,210,ek.IVEC2,ek.INT),eX._create("texelFetch",209,211,ek.IVEC3,ek.INT),eX._create("texelFetch",209,213,ek.IVEC3,ek.INT),eX._create("texelFetchOffset",209,210,ek.IVEC2,ek.INT,ek.IVEC2),eX._create("texelFetchOffset",209,211,ek.IVEC3,ek.INT,ek.IVEC3),eX._create("texelFetchOffset",209,213,ek.IVEC3,ek.INT,ek.IVEC2),eX._create("textureProjOffset",209,210,ek.VEC3,ek.IVEC2,ek.FLOAT),eX._create("textureProjOffset",209,210,ek.VEC3,ek.IVEC2),eX._create("textureProjOffset",209,210,ek.VEC4,ek.IVEC2,ek.FLOAT),eX._create("textureProjOffset",209,210,ek.VEC4,ek.IVEC2),eX._create("textureProjOffset",209,211,ek.VEC4,ek.IVEC3,ek.FLOAT),eX._create("textureProjOffset",209,211,ek.VEC4,ek.IVEC3),eX._create("textureProjOffset",ek.FLOAT,ek.SAMPLER2D_SHADOW,ek.VEC4,ek.IVEC2,ek.FLOAT),eX._create("textureProjOffset",ek.FLOAT,ek.SAMPLER2D_SHADOW,ek.VEC4,ek.IVEC2),eX._create("textureLodOffset",209,210,ek.VEC2,ek.FLOAT,ek.IVEC2),eX._create("textureLodOffset",209,211,ek.VEC3,ek.FLOAT,ek.IVEC3),eX._create("textureLodOffset",ek.FLOAT,ek.SAMPLER2D_SHADOW,ek.VEC3,ek.FLOAT,ek.IVEC2),eX._create("textureLodOffset",209,213,ek.VEC3,ek.FLOAT,ek.IVEC2),eX._create("textureProjLod",209,210,ek.VEC3,ek.FLOAT),eX._create("textureProjLod",209,210,ek.VEC4,ek.FLOAT),eX._create("textureProjLod",209,211,ek.VEC4,ek.FLOAT),eX._create("textureProjLod",ek.FLOAT,ek.SAMPLER2D_SHADOW,ek.VEC4,ek.FLOAT),eX._create("textureProjLodOffset",209,210,ek.VEC3,ek.FLOAT,ek.IVEC2),eX._create("textureProjLodOffset",209,210,ek.VEC4,ek.FLOAT,ek.IVEC2),eX._create("textureProjLodOffset",209,211,ek.VEC4,ek.FLOAT,ek.IVEC3),eX._create("textureProjLodOffset",ek.FLOAT,ek.SAMPLER2D_SHADOW,ek.VEC4,ek.FLOAT,ek.IVEC2),eX._create("textureGrad",209,210,ek.VEC2,ek.VEC2,ek.VEC2),eX._create("textureGrad",209,211,ek.VEC3,ek.VEC3,ek.VEC3),eX._create("textureGrad",209,212,ek.VEC3,ek.VEC3,ek.VEC3),eX._create("textureGrad",ek.FLOAT,ek.SAMPLER2D_SHADOW,ek.VEC3,ek.VEC2,ek.VEC2),eX._create("textureGrad",ek.FLOAT,ek.SAMPLER_CUBE_SHADOW,ek.VEC4,ek.VEC3,ek.VEC3),eX._create("textureGrad",209,213,ek.VEC3,ek.VEC2,ek.VEC2),eX._create("textureGrad",ek.FLOAT,ek.SAMPLER2D_ARRAY_SHADOW,ek.VEC4,ek.VEC2,ek.VEC2),eX._create("textureGradOffset",209,210,ek.VEC2,ek.VEC2,ek.VEC2,ek.IVEC2),eX._create("textureGradOffset",209,211,ek.VEC3,ek.VEC3,ek.VEC3,ek.IVEC3),eX._create("textureGradOffset",ek.FLOAT,ek.SAMPLER2D_SHADOW,ek.VEC3,ek.VEC2,ek.VEC2,ek.IVEC2),eX._create("textureGradOffset",209,213,ek.VEC3,ek.VEC2,ek.VEC2,ek.IVEC2),eX._create("textureGradOffset",ek.FLOAT,ek.SAMPLER2D_ARRAY_SHADOW,ek.VEC3,ek.VEC2,ek.VEC2,ek.IVEC2),eX._create("textureProjGrad",209,210,ek.VEC3,ek.VEC2,ek.VEC2),eX._create("textureProjGrad",209,210,ek.VEC4,ek.VEC2,ek.VEC2),eX._create("textureProjGrad",209,211,ek.VEC4,ek.VEC3,ek.VEC3),eX._create("textureProjGrad",ek.FLOAT,ek.SAMPLER2D_SHADOW,ek.VEC4,ek.VEC2,ek.VEC2),eX._create("textureProjGradOffset",209,210,ek.VEC3,ek.VEC2,ek.VEC2,ek.IVEC2),eX._create("textureProjGradOffset",209,210,ek.VEC4,ek.VEC2,ek.VEC2,ek.IVEC2),eX._create("textureProjGradOffset",209,211,ek.VEC4,ek.VEC3,ek.VEC3,ek.IVEC3),eX._create("textureProjGradOffset",ek.FLOAT,ek.SAMPLER2D_SHADOW,ek.VEC4,ek.VEC2,ek.VEC2,ek.IVEC2),eX._createWithScop("dFdx",200,ej.FRAGMENT,200),eX._createWithScop("dFdy",200,ej.FRAGMENT,200),eX._createWithScop("fwidth",200,ej.FRAGMENT,200);var eQ=new Map,eY=/*#__PURE__*/function(){function e(e,t,r){this.type=e,this.lexeme=t,this.scope=r}return e.createVariable=function(t,r,n){void 0===n&&(n=ej.ALL);var i=new e(r,t,n);eQ.set(t,i)},e.getVar=function(e){return eQ.get(e)},e}();eY.createVariable("gl_VertexID",ek.INT,ej.VERTEX),eY.createVariable("gl_InstanceID",ek.INT,ej.VERTEX),eY.createVariable("gl_Position",ek.VEC4,ej.VERTEX),eY.createVariable("gl_PointSize",ek.FLOAT,ej.VERTEX),eY.createVariable("gl_FragCoord",ek.VEC4,ej.FRAGMENT),eY.createVariable("gl_FrontFacing",ek.BOOL,ej.FRAGMENT),eY.createVariable("gl_FragDepth",ek.FLOAT,ej.FRAGMENT),eY.createVariable("gl_PointCoord",ek.VEC2,ej.FRAGMENT),eY.createVariable("gl_FragColor",ek.VEC4,ej.FRAGMENT),eY.createVariable("gl_FragData",ek.VEC4_ARRAY,ej.FRAGMENT),eY.createVariable("gl_MaxVertexAttribs",ek.INT),eY.createVariable("gl_MaxVertexUniformVectors",ek.INT),eY.createVariable("gl_MaxVertexOutputVectors",ek.INT),eY.createVariable("gl_MaxFragmentInputVectors",ek.INT),eY.createVariable("gl_MaxVertexTextureImageUnits",ek.INT),eY.createVariable("gl_MaxCombinedTextureImageUnits",ek.INT),eY.createVariable("gl_MaxTextureImageUnits",ek.INT),eY.createVariable("gl_MaxFragmentUniformVectors",ek.INT),eY.createVariable("gl_MaxDrawBuffers",ek.INT),eY.createVariable("gl_MinProgramTexelOffset",ek.INT),eY.createVariable("gl_MaxProgramTexelOffset",ek.INT);var eK=((_={})[_.START=2e3]="START",_[_.gs_shader_program=2001]="gs_shader_program",_[_.global_declaration=2002]="global_declaration",_[_.variable_declaration=2003]="variable_declaration",_[_.variable_declaration_list=2004]="variable_declaration_list",_[_.variable_declaration_statement=2005]="variable_declaration_statement",_[_.array_specifier_list=2006]="array_specifier_list",_[_.array_specifier=2007]="array_specifier",_[_.ext_builtin_type_specifier_nonarray=2008]="ext_builtin_type_specifier_nonarray",_[_.precision_specifier=2009]="precision_specifier",_[_.variable_identifier=2010]="variable_identifier",_[_.variable_identifier_node=2011]="variable_identifier_node",_[_.primary_expression=2012]="primary_expression",_[_.postfix_expression=2013]="postfix_expression",_[_.integer_expression=2014]="integer_expression",_[_.function_call=2015]="function_call",_[_.function_call_generic=2016]="function_call_generic",_[_.function_call_header_no_parameters=2017]="function_call_header_no_parameters",_[_.function_call_header_with_parameters=2018]="function_call_header_with_parameters",_[_.function_call_parameter_list=2019]="function_call_parameter_list",_[_.function_call_header=2020]="function_call_header",_[_.function_identifier=2021]="function_identifier",_[_.constructor_identifier=2022]="constructor_identifier",_[_.unary_expression=2023]="unary_expression",_[_.unary_operator=2024]="unary_operator",_[_.multiplicative_expression=2025]="multiplicative_expression",_[_.additive_expression=2026]="additive_expression",_[_.shift_expression=2027]="shift_expression",_[_.relational_expression=2028]="relational_expression",_[_.equality_expression=2029]="equality_expression",_[_.and_expression=2030]="and_expression",_[_.inclusive_or_expression=2031]="inclusive_or_expression",_[_.exclusive_or_expression=2032]="exclusive_or_expression",_[_.logical_and_expression=2033]="logical_and_expression",_[_.logical_xor_expression=2034]="logical_xor_expression",_[_.logical_or_expression=2035]="logical_or_expression",_[_.conditional_expression=2036]="conditional_expression",_[_.assignment_expression=2037]="assignment_expression",_[_.assignment_operator=2038]="assignment_operator",_[_.expression=2039]="expression",_[_.integer_constant_expression=2040]="integer_constant_expression",_[_.integer_constant_expression_operator=2041]="integer_constant_expression_operator",_[_.declaration=2042]="declaration",_[_.function_prototype=2043]="function_prototype",_[_.function_declarator=2044]="function_declarator",_[_.function_header_with_parameters=2045]="function_header_with_parameters",_[_.function_header=2046]="function_header",_[_.function_parameter_list=2047]="function_parameter_list",_[_.parameter_declarator=2048]="parameter_declarator",_[_.parameter_declaration=2049]="parameter_declaration",_[_.parameter_qualifier=2050]="parameter_qualifier",_[_.parameter_type_specifier=2051]="parameter_type_specifier",_[_.init_declarator_list=2052]="init_declarator_list",_[_.single_declaration=2053]="single_declaration",_[_.fully_specified_type=2054]="fully_specified_type",_[_.type_qualifier=2055]="type_qualifier",_[_.single_type_qualifier=2056]="single_type_qualifier",_[_.storage_qualifier=2057]="storage_qualifier",_[_.precision_qualifier=2058]="precision_qualifier",_[_.interpolation_qualifier=2059]="interpolation_qualifier",_[_.invariant_qualifier=2060]="invariant_qualifier",_[_.type_specifier=2061]="type_specifier",_[_.type_specifier_nonarray=2062]="type_specifier_nonarray",_[_.type_specifier_no_prec=2063]="type_specifier_no_prec",_[_.basic_type=2064]="basic_type",_[_.struct_specifier=2065]="struct_specifier",_[_.struct_declaration_list=2066]="struct_declaration_list",_[_.struct_declaration=2067]="struct_declaration",_[_.layout_qualifier=2068]="layout_qualifier",_[_.struct_declarator_list=2069]="struct_declarator_list",_[_.struct_declarator=2070]="struct_declarator",_[_.identifier_list=2071]="identifier_list",_[_.decl_identifier=2072]="decl_identifier",_[_.initializer=2073]="initializer",_[_.initializer_list=2074]="initializer_list",_[_.declaration_statement=2075]="declaration_statement",_[_.simple_statement=2076]="simple_statement",_[_.compound_statement_no_scope=2077]="compound_statement_no_scope",_[_.statement_with_scope=2078]="statement_with_scope",_[_.compound_statement=2079]="compound_statement",_[_.statement=2080]="statement",_[_.statement_list=2081]="statement_list",_[_.iteration_statement_no_new_scope=2082]="iteration_statement_no_new_scope",_[_.expression_statement=2083]="expression_statement",_[_.selection_statement=2084]="selection_statement",_[_.selection_rest_statement=2085]="selection_rest_statement",_[_.condition=2086]="condition",_[_.conditionopt=2087]="conditionopt",_[_.iteration_statement=2088]="iteration_statement",_[_.for_init_statement=2089]="for_init_statement",_[_.for_rest_statement=2090]="for_rest_statement",_[_.jump_statement=2091]="jump_statement",_[_.external_declaration=2092]="external_declaration",_[_.function_definition=2093]="function_definition",_[_.field_selection=2094]="field_selection",_[_.bool_constant=2095]="bool_constant",_[_.function_identifier_node=2096]="function_identifier_node",_[_.typename_identifier_node=2097]="typename_identifier_node",_[_.scope_brace=2098]="scope_brace",_[_.scope_end_brace=2099]="scope_end_brace",_[_.macro_undef=2100]="macro_undef",_[_.macro_push_context=2101]="macro_push_context",_[_.macro_pop_context=2102]="macro_pop_context",_[_.macro_elif_expression=2103]="macro_elif_expression",_[_.macro_else_expression=2104]="macro_else_expression",_[_.global_macro_if_statement=2105]="global_macro_if_statement",_[_.global_macro_declaration=2106]="global_macro_declaration",_[_.global_macro_branch=2107]="global_macro_branch",_[_.macro_struct_declaration=2108]="macro_struct_declaration",_[_.macro_struct_branch=2109]="macro_struct_branch",_[_.macro_if_statement=2110]="macro_if_statement",_[_.macro_branch=2111]="macro_branch",_[_.macro_param_case_list=2112]="macro_param_case_list",_[_.macro_param_block=2113]="macro_param_block",_[_.macro_parameter_branch=2114]="macro_parameter_branch",_[_.macro_call_arg_case_list=2115]="macro_call_arg_case_list",_[_.macro_call_arg_block=2116]="macro_call_arg_block",_[_.macro_call_arg_branch=2117]="macro_call_arg_branch",_[_.macro_call_symbol=2118]="macro_call_symbol",_[_.macro_call_function=2119]="macro_call_function",_[_._ignore=2120]="_ignore",_),eJ=/*#__PURE__*/function(){function e(){this._table=new Map}var r=e.prototype;return r.insert=function(e,r){void 0===r&&(r=!1),e.isInMacroBranch=r;for(var n,i=null!=(n=this._table.get(e.ident))?n:[],a=0,o=i.length;a<o;a++)if(!i[a].isInMacroBranch&&i[a].equal(e)){t.Logger.warn("Replace symbol:",e.ident),i[a]=e;return}i.push(e),this._table.set(e.ident,i)},r.getSymbol=function(e,t){void 0===t&&(t=!1);var r=this._table.get(e.ident);if(r)for(var n=r.length-1;n>=0;n--){var i=r[n];if((t||!i.isInMacroBranch)&&i.equal(e))return i}},r.getSymbols=function(e,t,r){return void 0===t&&(t=!1),r.length=0,this._getSymbols(e,t,r),r},r._getSymbols=function(e,t,r){void 0===t&&(t=!1);var n=this._table.get(e.ident);if(n)for(var i=n.length-1;i>=0;i--){var a=n[i];(t||!a.isInMacroBranch)&&a.equal(e)&&r.push(a)}return r},e}(),eZ=/*#__PURE__*/function(){function e(){this.stack=[],this._macroLevel=0}var t=e.prototype;return t.pushScope=function(e){this.stack.push(e)},t.clear=function(){this.stack.length=0},t.popScope=function(){return this.stack.pop()},t.insert=function(e){this.scope.insert(e,this.isInMacroBranch)},t.lookup=function(e,t){void 0===t&&(t=!1);for(var r=this.stack.length-1;r>=0;r--){var n=this.stack[r].getSymbol(e,t);if(n)return n}},t.lookupAll=function(e,t,r){void 0===t&&(t=!1),r.length=0;for(var n=this.stack.length-1;n>=0;n--)this.stack[n]._getSymbols(e,t,r);return r},o(e,[{key:"scope",get:function(){return this.stack[this.stack.length-1]}},{key:"isInMacroBranch",get:function(){return this._macroLevel>0}}]),e}();function e$(e){return(e$=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function e0(e){var t="function"==typeof Map?new Map:void 0;return(e0=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return eH(e,arguments,e$(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),r(n,e)})(e)}var e2=/*#__PURE__*/function(e){function t(t,r,n,i,a){var o;return(o=e.call(this,r)||this).location=n,o.source=i,o.file=a,o.name=t,o}return n(t,e),t.prototype.toString=function(){var e=this.message,t=this.location,r=this.source;return r?(i(t,eG)||(t.start,t.end),r.split("\n"),this.name+": "+e+"\n\n"):e},t}(e0(Error));e2.wrappingLineCount=2;var e1=((d={}).PreprocessorError="PreprocessorError",d.CompilationError="CompilationError",d.ScannerError="ScannerError",d.CompilationWarn="CompilationWarning",d),e3=function(e,t,r){this.type=e,this.typeLexeme=t,this.arraySpecifier=r},e4=((f={})[f.VAR=0]="VAR",f[f.FN=1]="FN",f[f.STRUCT=2]="STRUCT",f[f.Any=3]="Any",f),e9=/*#__PURE__*/function(){function e(e,t,r,n,i,a){void 0===a&&(a=!1),this.ident=e,this.type=t,this.astNode=r,this.dataType=n,this.paramSignature=i,this.isInMacroBranch=a}var t=e.prototype;return t.set=function(e,t,r,n,i){this.ident=e,this.type=t,this.astNode=r,this.dataType=n,this.paramSignature=i},t.equal=function(e){if(3!==e.type&&this.type!==e.type)return!1;if(1===this.type){if(!e.astNode&&!e.paramSignature)return!0;var t,r=this.astNode.protoType.paramSig,n=null!=(t=e.paramSignature)?t:e.astNode.protoType.paramSig,i=null==r?void 0:r.length;if(i!==(null==n?void 0:n.length))return!1;for(var a=0;a<i;a++){var o=r[a],s=n[a];if(3e3!==o&&3e3!==s&&o!==s)return!1}}return!0},e}(),e5=/*#__PURE__*/function(e){function t(t,r){var n=new e3(r.protoType.returnType.type,r.protoType.returnType.typeSpecifier.lexeme);return e.call(this,t,e4.FN,r,n)||this}return n(t,e),t}(e9),e6=/*#__PURE__*/function(e){function t(t,r){return e.call(this,t,e4.STRUCT,r)||this}return n(t,e),t}(e9),e7=/*#__PURE__*/function(e){function t(t,r,n,i){var a;return(a=e.call(this,t,e4.VAR,i,r)||this).isGlobalVariable=n,a}return n(t,e),t}(e9),e8=/*#__PURE__*/function(){function e(){this.globalPrecisions=[],this.globalMacroDeclarations=[]}return e.prototype.getOuterGlobalMacroDeclarations=function(){return this.globalMacroDeclarations.filter(function(e){return i(e.parent,eN.GLShaderProgram)})},e}(),te=/*#__PURE__*/function(){function e(){this.semanticStack=[],this.acceptRule=void 0,this.symbolTableStack=new eZ,this.curFunctionInfo={},this._shaderData=new e8,this._translationRuleTable=new Map,this.pushScope()}var r=e.prototype;return r.reset=function(e){this._macroDefineList=e,this.semanticStack.length=0,this._shaderData=new e8,this.symbolTableStack.clear(),this.pushScope()},r.pushScope=function(){this.symbolTableStack.pushScope(new eJ)},r.popScope=function(){return this.symbolTableStack.popScope()},r.addTranslationRule=function(e,t){this._translationRuleTable.set(e,t)},r.getTranslationRule=function(e){return this._translationRuleTable.get(e)},r.reportError=function(e,r){t.Logger.error(r)},r.reportWarning=function(e,r){t.Logger.warn(new e2(e1.CompilationWarn,r,e,tk._processingPassText).toString())},o(e,[{key:"shaderData",get:function(){return this._shaderData}},{key:"macroDefineList",get:function(){return this._macroDefineList}}]),e}();te._lookupSymbol=new e9("",null);var tt=function(e,t,r){this.type=e,this.typeLexeme=t,this.arraySpecifier=r},tr=function(e,t,r,n){void 0===n&&(n=!1),this.typeInfo=e,this.ident=t,this.mrtIndex=r,this.isInMacroBranch=n};function tn(e){return function(t){t.prototype.nt=e,t.pool=eF.createObjectPool(t)}}var ti=/*#__PURE__*/function(){function e(){}var t=e.prototype;return t.set=function(t,r){this._location=t,this._children=r;for(var n,a=c(r);!(n=a()).done;){var o=n.value;i(o,e)&&(o._parent=this)}this.init()},t.init=function(){},t.dispose=function(){},t.setCache=function(e){return this._codeCache=e,e},t.getCache=function(){return this._codeCache},t.codeGen=function(e){var t=e.defaultCodeGen(this.children);return this.setCache(t),t},t.semanticAnalyze=function(e){},o(e,[{key:"parent",get:function(){return this._parent}},{key:"children",get:function(){return this._children}},{key:"location",get:function(){return this._location}}]),e}();(m=eN||(eN={}))._unwrapToken=function(e){if(i(e,eB))return e;throw"not token"},m.get=function(e,t,r,n){var i=e.get();i.set(r,n),i.semanticAnalyze(t),t.semanticStack.push(i)},S=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t}(ti),m.TrivialNode=S,S=l([tn(eK._ignore)],S),g=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.semanticAnalyze=function(e){e.pushScope()},t}(ti),m.ScopeBrace=g,g=l([tn(eK.scope_brace)],g),v=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.semanticAnalyze=function(e){e.popScope()},t}(ti),m.ScopeEndBrace=v,v=l([tn(eK.scope_end_brace)],v),y=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.init=function(){this.isFragReturnStatement=!1},r.semanticAnalyze=function(e){m._unwrapToken(this.children[0]).type===ek.RETURN&&(e.curFunctionInfo.returnStatement=this)},r.codeGen=function(e){return this.setCache(e.visitJumpStatement(this))},t}(ti),m.JumpStatement=y,y=l([tn(eK.jump_statement)],y),E=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.init=function(){this._type=void 0},o(t,[{key:"type",get:function(){var e;return null!=(e=this._type)?e:3e3},set:function(e){this._type=e}}]),t}(ti),m.ExpressionAstNode=E,x=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.init=function(){this.typeSpecifier=void 0,this.arraySpecifier=void 0},r.semanticAnalyze=function(e){var t,r=this.children,n=r.length,i=r[0],a=i.typeSpecifier;this.typeSpecifier=a,this.arraySpecifier=a.arraySpecifier;var o=r[1];if(2===n||4===n){var s=new tt(i.type,a.lexeme,this.arraySpecifier),c=r[3];t=new e7(o.lexeme,s,!1,c)}else{var l=r[2];this.arraySpecifier=l;var u=new tt(i.type,a.lexeme,this.arraySpecifier),p=r[4];t=new e7(o.lexeme,u,!1,p)}e.symbolTableStack.insert(t)},r.codeGen=function(e){return this.setCache(e.visitSingleDeclaration(this))},t}(ti),m.SingleDeclaration=x,x=l([tn(eK.single_declaration)],x),C=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.semanticAnalyze=function(e){var t=this.children;this.typeSpecifier=1===t.length?t[0]:t[1],this.type=this.typeSpecifier.type},t}(ti),m.FullySpecifiedType=C,C=l([tn(eK.fully_specified_type)],C),A=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t}(ti),m.TypeQualifier=A,A=l([tn(eK.type_qualifier)],A),T=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.semanticAnalyze=function(e){var t=this.children[0];i(t,eB)?this.qualifier=t.type:this.qualifier=t.qualifier,this.lexeme=t.lexeme},t}(ti),m.SingleTypeQualifier=T,T=l([tn(eK.single_type_qualifier)],T),b=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.init=function(){this.arraySize=void 0},r.semanticAnalyze=function(e){var t,r=this.children,n=r[0];this.type=n.type,this.lexeme=n.lexeme,this.arraySize=null==r?void 0:null==(t=r[1])?void 0:t.size,this.isCustom="string"==typeof this.type},o(t,[{key:"arraySpecifier",get:function(){return this.children[1]}}]),t}(ti),m.TypeSpecifier=b,b=l([tn(eK.type_specifier)],b),O=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.semanticAnalyze=function(e){var t=this.children[1];this.size=t.value},t}(ti),m.ArraySpecifier=O,O=l([tn(eK.array_specifier)],O),I=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.semanticAnalyze=function(e){var t=this.children[0];switch(this.lexeme=t.lexeme,t.type){case eV.PLUS:this.compute=function(e,t){return e+t};break;case eV.DASH:this.compute=function(e,t){return e-t};break;case eV.STAR:this.compute=function(e,t){return e*t};break;case eV.SLASH:this.compute=function(e,t){return e/t};break;case eV.PERCENT:this.compute=function(e,t){return e%t};break;default:e.reportError(t.location,"not implemented operator "+t.lexeme)}},t}(ti),m.IntegerConstantExpressionOperator=I,I=l([tn(eK.integer_constant_expression_operator)],I),L=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.init=function(){this.value=void 0},r.semanticAnalyze=function(e){if(1===this.children.length){var t=this.children[0];i(t,eB)&&(this.value=Number(t.lexeme))}},t}(ti),m.IntegerConstantExpression=L,L=l([tn(eK.integer_constant_expression)],L),P=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.init=function(){var e=this.children[0];i(e,eB)?this.type=e.lexeme:this.type=e.type,this.lexeme=e.lexeme},t}(ti),m.TypeSpecifierNonArray=P,P=l([tn(eK.type_specifier_nonarray)],P),R=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.init=function(){var e=this.children[0];this.type=e.type,this.lexeme=e.lexeme},t}(ti),m.ExtBuiltinTypeSpecifierNonArray=R,R=l([tn(eK.ext_builtin_type_specifier_nonarray)],R),M=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.semanticAnalyze=function(e){var t,r=this.children,n=r.length;if(1===n){var i=r[0],a=i.typeSpecifier,o=i.arraySpecifier;this.typeInfo=new tt(a.type,a.lexeme,o)}else{var s=r[0];this.typeInfo=s.typeInfo}if(3===n||5===n)t=new e7(r[2].lexeme,this.typeInfo,!1,this),e.symbolTableStack.insert(t);else if(4===n||6===n){var c=this.typeInfo,l=this.children[3];c.arraySpecifier=l,t=new e7(r[2].lexeme,c,!1,this),e.symbolTableStack.insert(t)}},t}(ti),m.InitDeclaratorList=M,M=l([tn(eK.init_declarator_list)],M),N=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.idList=[],t}n(t,e);var r=t.prototype;return r.init=function(){this.idList.length=0},r.semanticAnalyze=function(e){var t=this.children,r=this.idList;if(2===t.length)r.push(t[1]);else{var n=t[0],i=t[2],a=n.idList.length;r.length=a+1;for(var o=0;o<a;o++)r[o]=n.idList[o];r[a]=i}},t}(ti),m.IdentifierList=N,N=l([tn(eK.identifier_list)],N),D=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.codeGen=function(e){return this.setCache(e.visitDeclaration(this))},t}(ti),m.Declaration=D,D=l([tn(eK.declaration)],D),G=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.semanticAnalyze=function(e){var t=this.children[0];this.ident=t.ident,this.returnType=t.returnType,this.parameterList=t.parameterInfoList,this.paramSig=t.paramSig},t}(ti),m.FunctionProtoType=G,G=l([tn(eK.function_prototype)],G),V=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.semanticAnalyze=function(e){e.curFunctionInfo.returnStatement=null,e.curFunctionInfo.header=this;var t=this.children,r=t[0],n=t[1];this.ident=r.ident,this.returnType=r.returnType,this.parameterInfoList=null==n?void 0:n.parameterInfoList,this.paramSig=null==n?void 0:n.paramSig},t}(ti),m.FunctionDeclarator=V,V=l([tn(eK.function_declarator)],V),k=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.semanticAnalyze=function(e){e.pushScope();var t=this.children;this.ident=t[1],this.returnType=t[0]},r.codeGen=function(e){return this.setCache(e.visitFunctionHeader(this))},t}(ti),m.FunctionHeader=k,k=l([tn(eK.function_header)],k),F=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.parameterInfoList=[],t.paramSig=[],t}n(t,e);var r=t.prototype;return r.init=function(){this.parameterInfoList.length=0,this.paramSig.length=0},r.semanticAnalyze=function(e){var r=this.children,n=this.parameterInfoList,a=this.paramSig;if(i(r[0],U)){var o,s,c=r[0];n.push({ident:c.ident,typeInfo:c.typeInfo,astNode:c}),a.push(null!=(s=null==(o=c.typeInfo)?void 0:o.type)?s:3e3)}else if(i(r[2],U)){var l,u,p=r[0],h=r[2];n.push.apply(n,[].concat(p.parameterInfoList,[{ident:h.ident,typeInfo:h.typeInfo,astNode:h}])),a.push.apply(a,[].concat(p.paramSig,[null!=(u=null==(l=h.typeInfo)?void 0:l.type)?u:3e3]))}else i(r[0],t)&&i(r[1],w)?(n.push.apply(n,[].concat(r[0].parameterInfoList,[{astNode:r[1]}])),a.push.apply(a,[].concat(r[0].paramSig,[3e3]))):i(r[0],w)&&(n.push({astNode:r[0]}),a.push(3e3))},r.codeGen=function(e){return this.setCache(e.visitFunctionParameterList(this))},t}(ti),m.FunctionParameterList=F,F=l([tn(eK.function_parameter_list)],F),B=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t}(ti),m.MacroParamCaseList=B,B=l([tn(eK.macro_param_case_list)],B),w=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t}(ti),m.MacroParamBlock=w,w=l([tn(eK.macro_param_block)],w),W=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t}(ti),m.MacroParameterBranch=W,W=l([tn(eK.macro_parameter_branch)],W),U=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.init=function(){this.typeInfo=void 0,this.ident=void 0},r.semanticAnalyze=function(e){var t,r=this.children;if(i(r[0],H)?t=r[0]:i(r[1],H)&&(t=r[1]),t){this.typeInfo=t.typeInfo,this.ident=t.ident;var n=new e7(t.ident.lexeme,t.typeInfo,!1,t);e.symbolTableStack.insert(n)}},t}(ti),m.ParameterDeclaration=U,U=l([tn(eK.parameter_declaration)],U),H=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.semanticAnalyze=function(e){var t=this.children;this.ident=t[1];var r=t[0],n=t[2];this.typeInfo=new tt(r.type,r.lexeme,n)},t}(ti),m.ParameterDeclarator=H,H=l([tn(eK.parameter_declarator)],H),j=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t}(ti),m.CompoundStatementNoScope=j,j=l([tn(eK.compound_statement_no_scope)],j),z=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.codeGen=function(e){return this.setCache(e.visitStatementList(this))},t}(ti),m.StatementList=z,z=l([tn(eK.statement_list)],z),q=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.init=function(){this.returnStatement=void 0},r.semanticAnalyze=function(e){var t=this.children;this.protoType=t[0],this.statements=t[1],e.popScope();var r=new e5(this.protoType.ident.lexeme,this);e.symbolTableStack.insert(r),this.isInMacroBranch=e.symbolTableStack.isInMacroBranch;var n=e.curFunctionInfo,i=n.header,a=n.returnStatement;i.returnType.type===ek.VOID?a&&e.reportError(i.returnType.location,"Return in void function."):a?this.returnStatement=a:e.reportError(i.returnType.location,"No return statement found."),n.header=void 0,n.returnStatement=void 0},r.codeGen=function(e){return this.setCache(e.visitFunctionDefinition(this))},t}(ti),m.FunctionDefinition=q,q=l([tn(eK.function_definition)],q),X=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.semanticAnalyze=function(e){this.type=this.children[0].type},r.codeGen=function(e){return this.setCache(e.visitFunctionCall(this))},t}(E),m.FunctionCall=X,X=l([tn(eK.function_call)],X),Q=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.init=function(){e.prototype.init.call(this),this.fnSymbol=void 0},r.semanticAnalyze=function(e){var t=this.children[0];if(t.isBuiltin)this.type=t.ident;else{var r,n,a=t.ident;if(4===this.children.length){var o=this.children[2];i(o,Y)&&(n=o.paramSig)}var s=te._lookupSymbol;s.set(a,e4.FN,void 0,void 0,n);var c=e.symbolTableStack.lookup(s,!0);if(!c)return;this.type=null==c?void 0:null==(r=c.dataType)?void 0:r.type,this.fnSymbol=c}},t}(E),m.FunctionCallGeneric=Q,Q=l([tn(eK.function_call_generic)],Q),Y=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.paramSig=[],t.paramNodes=[],t}n(t,e);var r=t.prototype;return r.init=function(){this.paramSig.length=0,this.paramNodes.length=0},r.semanticAnalyze=function(e){var r=this.children,n=this.paramSig,a=this.paramNodes;if(i(r[0],et)){var o=r[0];n.push(o.type),a.push(o)}else if(i(r[2],et)){var s=r[0],c=r[2];n.push.apply(n,[].concat(s.paramSig,[c.type])),a.push.apply(a,[].concat(s.paramNodes,[c]))}else i(r[0],t)&&i(r[1],J)?(n.push.apply(n,[].concat(r[0].paramSig,[3e3])),a.push.apply(a,[].concat(r[0].paramNodes,[r[1]]))):i(r[0],J)&&(n.push(3e3),a.push(r[0]))},t}(ti),m.FunctionCallParameterList=Y,Y=l([tn(eK.function_call_parameter_list)],Y),K=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t}(ti),m.MacroCallArgCaseList=K,K=l([tn(eK.macro_call_arg_case_list)],K),J=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t}(ti),m.MacroCallArgBlock=J,J=l([tn(eK.macro_call_arg_block)],J),Z=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t}(ti),m.MacroCallArgBranch=Z,Z=l([tn(eK.macro_call_arg_branch)],Z),$=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.semanticAnalyze=function(e){e.symbolTableStack.isInMacroBranch||e.shaderData.globalPrecisions.push(this)},t}(ti),m.PrecisionSpecifier=$,$=l([tn(eK.precision_specifier)],$),ee=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.semanticAnalyze=function(e){var t=this.children[0];this.ident=t.type,this.lexeme=t.lexeme,this.isBuiltin="string"!=typeof this.ident},r.codeGen=function(e){return this.setCache(e.visitFunctionIdentifier(this))},t}(ti),m.FunctionIdentifier=ee,ee=l([tn(eK.function_identifier)],ee),et=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t}(E),m.AssignmentExpression=et,et=l([tn(eK.assignment_expression)],et),er=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t}(E),m.Expression=er,er=l([tn(eK.expression)],er),en=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.semanticAnalyze=function(e){if(1===this.children.length){var t,r=this.children[0];if(i(r,ef))this.type=null!=(t=r.typeInfo)?t:3e3;else switch(r.type){case eV.INT_CONSTANT:this._type=ek.INT;break;case eV.FLOAT_CONSTANT:this.type=ek.FLOAT;break;case ek.True:case ek.False:this.type=ek.BOOL}}else{var n=this.children[1];this.type=n.type}},t}(E),m.PrimaryExpression=en,en=l([tn(eK.primary_expression)],en),ei=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.init=function(){if(e.prototype.init.call(this),1===this.children.length){var t=this.children[0];this.type=t.type}},r.codeGen=function(e){return this.setCache(e.visitPostfixExpression(this))},t}(E),m.PostfixExpression=ei,ei=l([tn(eK.postfix_expression)],ei),ea=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.init=function(){this.ident=void 0},r.semanticAnalyze=function(e){var t=this.children;this.isInMacroBranch=e.symbolTableStack.isInMacroBranch,6===t.length?(this.ident=t[1],e.symbolTableStack.insert(new e6(this.ident.lexeme,this)),this.propList=t[3].propList,this.macroExpressions=t[3].macroExpressions):(this.propList=t[2].propList,this.macroExpressions=t[2].macroExpressions)},r.codeGen=function(e){return this.setCache(e.visitStructSpecifier(this))},t}(ti),m.StructSpecifier=ea,ea=l([tn(eK.struct_specifier)],ea),eo=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.propList=[],t.macroExpressions=[],t}n(t,e);var r=t.prototype;return r.init=function(){this.propList.length=0,this.macroExpressions.length=0},r.semanticAnalyze=function(e){var t=this.children,r=this.propList,n=this.macroExpressions;1===t.length?(r.push.apply(r,[].concat(t[0].props)),n.push.apply(n,[].concat(t[0].macroExpressions))):(r.push.apply(r,[].concat(t[0].propList)),r.push.apply(r,[].concat(t[1].props)),n.push.apply(n,[].concat(t[0].macroExpressions)),n.push.apply(n,[].concat(t[1].macroExpressions)))},t}(ti),m.StructDeclarationList=eo,eo=l([tn(eK.struct_declaration_list)],eo),es=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.props=[],t.macroExpressions=[],t}n(t,e);var r=t.prototype;return r.init=function(){this._typeSpecifier=void 0,this._declaratorList=void 0,this.props.length=0,this.macroExpressions.length=0},r.semanticAnalyze=function(e){var t=this.children,r=this.props,n=this.macroExpressions;if(1===t.length){for(var a=t[0],o=a.props,s=0,c=o.length;s<c;s++)o[s].isInMacroBranch=!0,r.push(o[s]);n.push.apply(n,[].concat(a.macroExpressions));return}3===t.length?(this._typeSpecifier=t[0],this._declaratorList=t[1]):(this._typeSpecifier=t[1],this._declaratorList=t[2]);var l=t[0],u=this._typeSpecifier,p=u.type,h=u.lexeme,_=e.symbolTableStack.isInMacroBranch;if(i(l,eu)){var d=t[2],f=new tr(new tt(p,h),d.ident,l.index,_);r.push(f)}else{var m=this._declaratorList.declaratorList,S=m.length;r.length=S;for(var g=0;g<S;g++){var v=m[g],y=new tr(new tt(p,h,v.arraySpecifier),v.ident,void 0,_);r[g]=y}}},t}(ti),m.StructDeclaration=es,es=l([tn(eK.struct_declaration)],es),ec=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.props=[],t.macroExpressions=[],t}n(t,e);var r=t.prototype;return r.init=function(){this.props.length=0,this.macroExpressions.length=0},r.semanticAnalyze=function(){var e,t,r,n,i,a,o=this.children;this.macroExpressions.push(o[0]),3===o.length?((e=this.props).push.apply(e,[].concat(o[1].propList)),(t=this.props).push.apply(t,[].concat(o[2].props)),(r=this.macroExpressions).push.apply(r,[].concat(o[1].macroExpressions)),(n=this.macroExpressions).push.apply(n,[].concat(o[2].macroExpressions))):((i=this.props).push.apply(i,[].concat(o[1].props)),(a=this.macroExpressions).push.apply(a,[].concat(o[1].macroExpressions)))},t}(ti),m.MacroStructDeclaration=ec,ec=l([tn(eK.macro_struct_declaration)],ec),el=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.props=[],t.macroExpressions=[],t}n(t,e);var r=t.prototype;return r.init=function(){this.props.length=0,this.macroExpressions.length=0},r.semanticAnalyze=function(){var e,r,n,a,o=this.children,s=o[o.length-1];this.macroExpressions.push(o[0]),i(o[1],eo)&&((e=this.props).push.apply(e,[].concat(o[1].propList)),(r=this.macroExpressions).push.apply(r,[].concat(o[1].macroExpressions))),i(s,t)&&((n=this.props).push.apply(n,[].concat(s.props)),(a=this.macroExpressions).push.apply(a,[].concat(s.macroExpressions))),o.length>1&&i(s,ey)&&this.macroExpressions.push(s)},t}(ti),m.MacroStructBranch=el,el=l([tn(eK.macro_struct_branch)],el),eu=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.semanticAnalyze=function(e){this.index=Number(this.children[4].lexeme)},t}(ti),m.LayoutQualifier=eu,eu=l([tn(eK.layout_qualifier)],eu),ep=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.declaratorList=[],t}n(t,e);var r=t.prototype;return r.init=function(){this.declaratorList.length=0},r.semanticAnalyze=function(e){var t=this.children,r=this.declaratorList;if(1===t.length)r.push(t[0]);else{var n=t[0],i=t[1],a=n.declaratorList.length;r.length=a+1;for(var o=0;o<a;o++)r[o]=n.declaratorList[o];r[a]=i}},t}(ti),m.StructDeclaratorList=ep,ep=l([tn(eK.struct_declarator_list)],ep),eh=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.init=function(){this.arraySpecifier=void 0},r.semanticAnalyze=function(e){var t=this.children;this.ident=t[0],this.arraySpecifier=t[1]},t}(ti),m.StructDeclarator=eh,eh=l([tn(eK.struct_declarator)],eh),e_=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.init=function(){this.isStatic=!1},r.semanticAnalyze=function(e){var t=this.children,r=t[0],n=t[1];this.type=r;var i=new e7(n.lexeme,new tt(r.type,r.typeSpecifier.lexeme),!0,this);e.symbolTableStack.insert(i),4===t.length&&(this.isStatic=!0)},r.codeGen=function(t){return this.isStatic?e.prototype.codeGen.call(this,t):this.setCache(t.visitGlobalVariableDeclaration(this))},t}(ti),m.VariableDeclaration=e_,e_=l([tn(eK.variable_declaration)],e_),ed=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.variableDeclarations=[],t}n(t,e);var r=t.prototype;return r.init=function(){this.variableDeclarations.length=0},r.semanticAnalyze=function(e){var t=this.children,r=t.length,n=t[0],a=n.type;if(this.type=a,i(n,e_))this.variableDeclarations.push(n);else{(o=this.variableDeclarations).push.apply(o,[].concat(n.variableDeclarations));var o,s=t[2],c=e_.pool.get();3===r?c.set(s.location,[a,s]):c.set(s.location,[a,s,t[3]]),c.semanticAnalyze(e),this.variableDeclarations.push(c)}},t}(ti),m.VariableDeclarationList=ed,ed=l([tn(eK.variable_declaration_list)],ed),ef=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.referenceGlobalSymbolNames=[],t._symbols=[],t}n(t,e);var r=t.prototype;return r.init=function(){this.typeInfo=3e3,this.referenceGlobalSymbolNames.length=0,this._symbols.length=0},r.semanticAnalyze=function(e){var t=this.children[0],r=this.referenceGlobalSymbolNames,n=this._symbols,a=te._lookupSymbol;l=i(t,eB)?[t.lexeme]:t.referenceSymbolNames;for(var o=0;o<l.length;o++){var s=l[o];if(!(e.macroDefineList[s]||!i(t,eB)&&eX.isExist(s))){var c=eY.getVar(s);if(c){this.typeInfo=c.type;continue}if(a.set(s,e4.Any),e.symbolTableStack.lookupAll(a,!0,n),n.length){this.typeInfo=null==(u=n[0].dataType)?void 0:u.type;var l,u,p=e.symbolTableStack.scope.getSymbol(a,!0);p?(i(p,e5)||p.isGlobalVariable)&&-1===r.indexOf(s)&&r.push(s):n.some(function(e){return i(e,e5)||e.isGlobalVariable})&&-1===r.indexOf(s)&&r.push(s)}}}},r.codeGen=function(e){return this.setCache(e.visitVariableIdentifier(this))},r.getLexeme=function(e){var t=this.children[0];return i(t,eB)?t.lexeme:t.codeGen(e)},t}(ti),m.VariableIdentifier=ef,ef=l([tn(eK.variable_identifier)],ef),em=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.semanticAnalyze=function(e){this.shaderData=e.shaderData,this.shaderData.symbolTable=e.symbolTableStack.scope},t}(ti),m.GLShaderProgram=em,em=l([tn(eK.gs_shader_program)],em),eS=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.macroExpressions=[],t}n(t,e);var r=t.prototype;return r.init=function(){this.macroExpressions.length=0},r.semanticAnalyze=function(e){var t,r=this.children[0];(i(r,eg)||i(r,eA)||i(r,eB))&&(e.shaderData.globalMacroDeclarations.push(this),i(r,eA)?(t=this.macroExpressions).push.apply(t,[].concat(r.macroExpressions)):this.macroExpressions.push(r))},t}(ti),m.GlobalDeclaration=eS,eS=l([tn(eK.global_declaration)],eS),eg=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.codeGen=function(t){return this.setCache(e.prototype.codeGen.call(this,t)+"\n")},t}(ti),m.MacroUndef=eg,eg=l([tn(eK.macro_undef)],eg),ev=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.semanticAnalyze=function(e){e.symbolTableStack._macroLevel++},r.codeGen=function(t){return this.setCache("\n"+e.prototype.codeGen.call(this,t)+"\n")},t}(ti),m.MacroPushContext=ev,ev=l([tn(eK.macro_push_context)],ev),ey=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.semanticAnalyze=function(e){e.symbolTableStack._macroLevel--},r.codeGen=function(t){return this.setCache("\n"+e.prototype.codeGen.call(this,t)+"\n")},t}(ti),m.MacroPopContext=ey,ey=l([tn(eK.macro_pop_context)],ey),eE=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.codeGen=function(t){return this.setCache("\n"+e.prototype.codeGen.call(this,t)+"\n")},t}(ti),m.MacroElifExpression=eE,eE=l([tn(eK.macro_elif_expression)],eE),ex=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t.prototype.codeGen=function(t){return this.setCache("\n"+e.prototype.codeGen.call(this,t)+"\n")},t}(ti),m.MacroElseExpression=ex,ex=l([tn(eK.macro_else_expression)],ex),eC=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.macroExpressions=[],t}n(t,e);var r=t.prototype;return r.init=function(){this.macroExpressions.length=0},r.semanticAnalyze=function(e){var t=this.children,r=this.macroExpressions;1===t.length?r.push.apply(r,[].concat(t[0].macroExpressions)):(r.push.apply(r,[].concat(t[0].macroExpressions)),r.push.apply(r,[].concat(t[1].macroExpressions)))},r.codeGen=function(e){var t=this.children;return 1===t.length?this.setCache(t[0].codeGen(e)):this.setCache(t[0].codeGen(e)+"\n"+t[1].codeGen(e))},t}(ti),m.GlobalMacroDeclaration=eC,eC=l([tn(eK.global_macro_declaration)],eC),eA=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.macroExpressions=[],t}n(t,e);var r=t.prototype;return r.init=function(){this.macroExpressions.length=0},r.semanticAnalyze=function(e){var t=this.children,r=this.macroExpressions;3===t.length?(r.push(t[0]),r.push.apply(r,[].concat(t[1].macroExpressions)),r.push.apply(r,[].concat(t[2].macroExpressions))):(r.push(t[0]),r.push.apply(r,[].concat(t[1].macroExpressions)))},t}(ti),m.GlobalMacroIfStatement=eA,eA=l([tn(eK.global_macro_if_statement)],eA),eT=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.macroExpressions=[],t}n(t,e);var r=t.prototype;return r.init=function(){this.macroExpressions.length=0},r.semanticAnalyze=function(e){var r=this.children,n=r[r.length-1],a=this.macroExpressions;a.push(r[0]),i(r[1],eC)&&a.push.apply(a,[].concat(r[1].macroExpressions)),i(n,t)&&a.push.apply(a,[].concat(n.macroExpressions)),r.length>1&&i(n,ey)&&a.push(n)},t}(ti),m.GlobalMacroBranch=eT,eT=l([tn(eK.global_macro_branch)],eT),eb=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t}(ti),m.MacroIfStatement=eb,eb=l([tn(eK.macro_if_statement)],eb),eO=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return n(t,e),t}(ti),m.MacroBranch=eO,eO=l([tn(eK.macro_branch)],eO),eI=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t.referenceSymbolNames=[],t}n(t,e);var r=t.prototype;return r.init=function(){this.referenceSymbolNames.length=0},r.semanticAnalyze=function(e){var t=this.children[0].lexeme;this.macroName=t,eW.getReferenceSymbolNames(e.macroDefineList,t,this.referenceSymbolNames)},t}(ti),m.MacroCallSymbol=eI,eI=l([tn(eK.macro_call_symbol)],eI),eL=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.semanticAnalyze=function(e){var t=this.children[0];this.referenceSymbolNames=t.referenceSymbolNames,this.macroName=t.macroName},r.codeGen=function(e){return this.setCache(e.visitMacroCallFunction(this))},t}(ti),m.MacroCallFunction=eL,l([tn(eK.macro_call_function)],eL);var ta=/*#__PURE__*/function(){function e(){}return e.unwrapNodeByType=function(t,r){var n=t.children[0];if(!i(n,eB))return n.nt===r?n:e.unwrapNodeByType(n,r)},e.isTerminal=function(e){return e<eK.START},e}(),to=/*#__PURE__*/function(){function e(){this.attributeStructs=[],this.attributeList=[],this.varyingStructs=[],this.varyingList=[],this.mrtStructs=[],this.mrtList=[],this._referencedGlobalMacroASTs=[]}var t=e.prototype;return t.reset=function(e){void 0===e&&(e=!0),e&&(this.attributeStructs.length=0,this.attributeList.length=0,this.varyingStructs.length=0,this.varyingList.length=0,this.mrtStructs.length=0,this.mrtList.length=0),this._referencedAttributeList=Object.create(null),this._referencedVaryingList=Object.create(null),this._referencedMRTList=Object.create(null),this._referencedGlobals=Object.create(null),this._referencedGlobalMacroASTs.length=0},t.isAttributeStruct=function(e){return -1!==this.attributeStructs.findIndex(function(t){return t.ident.lexeme===e})},t.isVaryingStruct=function(e){return -1!==this.varyingStructs.findIndex(function(t){return t.ident.lexeme===e})},t.isMRTStruct=function(e){return -1!==this.mrtStructs.findIndex(function(t){return t.ident.lexeme===e})},t.referenceAttribute=function(e){var t=e.lexeme;if(!this._referencedAttributeList[t]){var r=this.attributeList.filter(function(e){return e.ident.lexeme===t});if(!r.length)return eF.createGSError("referenced attribute not found: "+t,e1.CompilationError,tk._processingPassText,e.location);this._referencedAttributeList[t]=r}},t.referenceVarying=function(e){var t=e.lexeme;if(!this._referencedVaryingList[t]){var r=this.varyingList.filter(function(e){return e.ident.lexeme===t});if(!r.length)return eF.createGSError("referenced varying not found: "+t,e1.CompilationError,tk._processingPassText,e.location);this._referencedVaryingList[t]=r}},t.referenceMRTProp=function(e){var t=e.lexeme;if(!this._referencedMRTList[t]){var r=this.mrtList.filter(function(e){return e.ident.lexeme===t});if(!r.length)return eF.createGSError("referenced mrt not found: "+t,e1.CompilationError,tk._processingPassText,e.location);this._referencedMRTList[t]=r}},t.referenceGlobal=function(t,r){if(!this._referencedGlobals[t]){this._referencedGlobals[t]=[];var n=e._lookupSymbol;n.set(t,r),this._passSymbolTable.getSymbols(n,!0,this._referencedGlobals[t])}},e.reset=function(){this._singleton||(this._singleton=new e),this._singleton.reset()},o(e,null,[{key:"context",get:function(){return this._singleton}}]),e}();to._lookupSymbol=new e9("",null);var ts=/*#__PURE__*/function(){function e(){this.array=[]}return e.prototype.dispose=function(){this.array.length=0},e}(),tc=/*#__PURE__*/function(){function e(){}var r=e.prototype;return r.defaultCodeGen=function(t){var r=e._tmpArrayPool,n=r.get();n.dispose();for(var a,o=c(t);!(a=o()).done;){var s=a.value;i(s,eB)?n.array.push(s.lexeme):n.array.push(s.codeGen(this))}return r.return(n),n.array.join(" ")},r.visitPostfixExpression=function(e){var t=e.children,r=t.length,n=to.context;if(3===r){var a=t[0],o=t[2];return i(o,eB)?n.isAttributeStruct(a.type)?(n.referenceAttribute(o),o.lexeme):n.isVaryingStruct(a.type)?(n.referenceVarying(o),o.lexeme):n.isMRTStruct(a.type)?(n.referenceMRTProp(o),o.lexeme):a.codeGen(this)+"."+o.lexeme:a.codeGen(this)+"."+o.codeGen(this)}if(4===r){var s=t[0],c=t[2],l=s.codeGen(this),u=c.codeGen(this);return"gl_FragData"===l&&this._reportError(s.location,"Please use MRT struct instead of gl_FragData."),l+"["+u+"]"}return this.defaultCodeGen(e.children)},r.visitVariableIdentifier=function(e){for(var t,r=c(e.referenceGlobalSymbolNames);!(t=r()).done;){var n=t.value;to.context.referenceGlobal(n,e4.Any)}return e.getLexeme(this)},r.visitFunctionCall=function(e){var t=e.children[0];if(i(t.fnSymbol,e5)){to.context.referenceGlobal(t.fnSymbol.ident,e4.FN);var r=t.children[2];if(i(r,eN.FunctionCallParameterList)){for(var n=r.paramNodes,a=t.fnSymbol.astNode.protoType.parameterList,o=n.filter(function(e,t){var r,n=null==a?void 0:null==(r=a[t])?void 0:r.typeInfo;return!n||!to.context.isAttributeStruct(n.typeLexeme)&&!to.context.isVaryingStruct(n.typeLexeme)&&!to.context.isMRTStruct(n.typeLexeme)}),s="",c=0,l=o.length;c<l;c++){var u=o[c],p=u.codeGen(this);i(u,eN.MacroCallArgBlock)||0===c?s+=p:s+=", "+p}return t.fnSymbol.ident+"("+s+")"}}return this.defaultCodeGen(e.children)},r.visitMacroCallFunction=function(e){var t=e.children[2];if(!i(t,eN.FunctionCallParameterList))return this.defaultCodeGen(e.children);for(var r=t.paramNodes.filter(function(e){if(i(e,eN.AssignmentExpression)){var t=ta.unwrapNodeByType(e,eK.variable_identifier);if(t&&"string"==typeof t.typeInfo&&(to.context.isAttributeStruct(t.typeInfo)||to.context.isVaryingStruct(t.typeInfo)||to.context.isMRTStruct(t.typeInfo)))return!1}return!0}),n="",a=0,o=r.length;a<o;a++){var s=r[a],c=s.codeGen(this);i(s,eN.MacroCallArgBlock)||0===a?n+=c:n+=", "+c}return e.macroName+"("+n+")"},r.visitStatementList=function(e){var t=e.children;return 1===t.length?t[0].codeGen(this):t[0].codeGen(this)+"\n"+t[1].codeGen(this)},r.visitSingleDeclaration=function(e){var t=e.typeSpecifier.type;return"string"==typeof t&&to.context.referenceGlobal(t,e4.STRUCT),this.defaultCodeGen(e.children)},r.visitGlobalVariableDeclaration=function(e){var t=e.children,r=t[0];return i(r,eN.FullySpecifiedType)&&r.typeSpecifier.isCustom&&to.context.referenceGlobal(r.type,e4.STRUCT),"uniform "+this.defaultCodeGen(t)},r.visitDeclaration=function(e){var t=to.context,r=e.children,n=r[0];if(i(n,eN.InitDeclaratorList)){var a=n.typeInfo.typeLexeme;if(t.isVaryingStruct(a)||t.isMRTStruct(a))return""}return this.defaultCodeGen(r)},r.visitFunctionParameterList=function(e){for(var t=e.parameterInfoList.filter(function(e){return!e.typeInfo||!to.context.isAttributeStruct(e.typeInfo.typeLexeme)&&!to.context.isVaryingStruct(e.typeInfo.typeLexeme)&&!to.context.isMRTStruct(e.typeInfo.typeLexeme)}),r="",n=0,a=t.length;n<a;n++){var o=t[n].astNode,s=o.codeGen(this);i(o,eN.MacroParamBlock)||0===n?r+=s:r+=", "+s}return r},r.visitFunctionHeader=function(e){var t=e.returnType.typeSpecifier.lexeme;return to.context.isVaryingStruct(t)?"void "+e.ident.lexeme+"(":this.defaultCodeGen(e.children)},r.visitJumpStatement=function(e){var t=e.children;if(t[0].type===ek.RETURN){var r=t[1];if(i(r,eN.Expression)){var n=ta.unwrapNodeByType(r,eK.variable_identifier);if(to.context.isVaryingStruct(null==n?void 0:n.typeInfo))return"";var a=ta.unwrapNodeByType(r,eK.function_call);if(to.context.isVaryingStruct(null==a?void 0:a.type))return""+r.codeGen(this)+";"}}return this.defaultCodeGen(t)},r.visitFunctionIdentifier=function(e){return this.defaultCodeGen(e.children)},r.visitStructSpecifier=function(e){var t=this,r=to.context,n=r.varyingStructs,a=r.attributeStructs,o=r.mrtStructs,s=-1!==n.indexOf(e),l=-1!==a.indexOf(e),u=-1!==o.indexOf(e);if(s&&l&&this._reportError(e.location,"cannot use same struct as Varying and Attribute"),s&&u&&this._reportError(e.location,"cannot use same struct as Varying and MRT"),l&&u&&this._reportError(e.location,"cannot use same struct as Attribute and MRT"),!s&&!l&&!u)return this.defaultCodeGen(e.children);var p=[];p.push.apply(p,[].concat(e.macroExpressions.map(function(e){return{text:i(e,eB)?e.lexeme:e.codeGen(t),index:e.location.start.index}})));for(var h,_=c(e.propList);!(h=_()).done;){var d,f,m,S=h.value,g=S.ident.lexeme;s&&(null==(d=r._referencedVaryingList[g])?void 0:d.indexOf(S))>=0?p.push({text:""+this.getVaryingProp(S)+"\n",index:S.ident.location.start.index}):l&&(null==(f=r._referencedAttributeList[g])?void 0:f.indexOf(S))>=0?p.push({text:""+this.getAttributeProp(S)+"\n",index:S.ident.location.start.index}):u&&(null==(m=r._referencedMRTList[g])?void 0:m.indexOf(S))>=0&&p.push({text:""+this.getMRTProp(S)+"\n",index:S.ident.location.start.index})}return p.sort(function(e,t){return e.index-t.index}).map(function(e){return e.text}).join("")},r.visitFunctionDefinition=function(e){return e.protoType.ident.lexeme==to.context.stageEntry?"void main() "+e.statements.codeGen(this):this.defaultCodeGen(e.children)},r._reportError=function(e,r){t.Logger.error(r)},e}();tc._tmpArrayPool=new t.ReturnableObjectPool(ts,10);var tl=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t._globalCodeArray=[],t}n(t,e);var r=t.prototype;return r.reset=function(){this._globalCodeArray.length=0,t._serializedGlobalKey.clear()},r.getOtherGlobal=function(e,t){for(var r,n=c(e.globalPrecisions);!(r=n()).done;){var i=r.value;t.push({text:i.codeGen(this),index:i.location.start.index})}},r.visitShaderProgram=function(e,t,r){to.reset(),this.reset();var n=e.shaderData;to.context._passSymbolTable=n.symbolTable;var i=n.getOuterGlobalMacroDeclarations();return{vertex:this._vertexMain(t,n,i),fragment:this._fragmentMain(r,n,i)}},r._vertexMain=function(e,r,n){var i=this,a=to.context;a.stage=ej.VERTEX,a.stageEntry=e;var o=t._lookupSymbol,s=r.symbolTable;o.set(e,e4.FN);var l=s.getSymbols(o,!0,[]);if(!l.length)throw"no entry function found: "+e;var u=a.attributeStructs,p=a.attributeList,h=a.varyingStructs,_=a.varyingList;l.forEach(function(e){var t=e.astNode,r=t.protoType.returnType;if("string"==typeof r.type){o.set(r.type,e4.STRUCT);var n=s.getSymbols(o,!0,[]);if(n.length)for(var a=0;a<n.length;a++){var l=n[a].astNode;h.push(l);for(var d,f=c(l.propList);!(d=f()).done;){var m=d.value;_.push(m)}}else i._reportError(r.location,'invalid varying struct: "'+r.type+'".')}else r.type!==ek.VOID&&i._reportError(r.location,"vertex main entry can only return struct or void.");var S=t.protoType.parameterList,g=null==S?void 0:S[0];if(g){var v=g.typeInfo.type;if("string"==typeof v){o.set(v,e4.STRUCT);var y=s.getSymbols(o,!0,[]);if(y.length)for(var E=0;E<y.length;E++){var x=y[E].astNode;u.push(x);for(var C,A=c(x.propList);!(C=A()).done;){var T=C.value;p.push(T)}}else i._reportError(g.astNode.location,'invalid attribute struct: "'+v+'".')}}});var d=this._globalCodeArray;to.context.referenceGlobal(e,e4.FN),this._getGlobalSymbol(d),this._getCustomStruct(a.attributeStructs,d),this._getCustomStruct(a.varyingStructs,d),this._getGlobalMacroDeclarations(n,d),this.getOtherGlobal(r,d);var f=d.sort(function(e,t){return e.index-t.index}).map(function(e){return e.text}).join("\n");return to.context.reset(!1),this.reset(),f},r._fragmentMain=function(e,r,n){var i=this,a=to.context;a.stage=ej.FRAGMENT,a.stageEntry=e;var o=t._lookupSymbol,s=r.symbolTable;o.set(e,e4.FN);var l=s.getSymbols(o,!0,[]);if(!(null==l?void 0:l.length))throw"no entry function found: "+e;l.forEach(function(e){var t=e.astNode,r=t.returnStatement;r&&(r.isFragReturnStatement=!0);var n=t.protoType.returnType,l=n.type,u=n.location;if("string"==typeof l){o.set(l,e4.STRUCT);var p=s.getSymbols(o,!0,[]);if(p.length)for(var h=0;h<p.length;h++){var _=p[h].astNode;a.mrtStructs.push(_);for(var d,f=c(_.propList);!(d=f()).done;){var m=d.value;a.mrtList.push(m)}}else i._reportError(u,"invalid mrt struct: "+l)}else l!==ek.VOID&&l!==ek.VEC4&&i._reportError(u,"fragment main entry can only return struct or vec4.")});var u=this._globalCodeArray;to.context.referenceGlobal(e,e4.FN),this._getGlobalSymbol(u),this._getCustomStruct(a.varyingStructs,u),this._getCustomStruct(a.mrtStructs,u),this._getGlobalMacroDeclarations(n,u),this.getOtherGlobal(r,u);var p=u.sort(function(e,t){return e.index-t.index}).map(function(e){return e.text}).join("\n");return a.reset(),this.reset(),p},r._getGlobalSymbol=function(e){var r=to.context._referencedGlobals,n=Object.keys(r).length;if(0!==n){for(var i in r)if(!t._serializedGlobalKey.has(i)){t._serializedGlobalKey.add(i);for(var a=r[i],o=0;o<a.length;o++){var s=a[o],c=s.astNode.codeGen(this)+(s.type===e4.VAR?";":"");s.isInMacroBranch||e.push({text:c,index:s.astNode.location.start.index})}}Object.keys(r).length!==n&&this._getGlobalSymbol(e)}},r._getCustomStruct=function(e,t){for(var r,n=c(e);!(r=n()).done;){var i=r.value,a=i.codeGen(this);i.isInMacroBranch||t.push({text:a,index:i.location.start.index})}},r._getGlobalMacroDeclarations=function(e,t){var r=this,n=to.context,a=n._referencedGlobals,o=n._referencedGlobalMacroASTs;o.length=0;for(var s,l=c(Object.values(a));!(s=l()).done;)for(var u,p=s.value,h=c(p);!(u=h()).done;){var _=u.value;_.isInMacroBranch&&o.push(_.astNode)}for(var d,f=c(e);!(d=f()).done;){var m=d.value,S=void 0,g=m.children[0];if(i(g,eN.GlobalMacroIfStatement)){var v=[];v.push.apply(v,[].concat(m.macroExpressions.map(function(e){return{text:i(e,eB)?e.lexeme:e.codeGen(r),index:e.location.start.index}}))),this._visitGlobalMacroIfStatement(g,v),S=v.sort(function(e,t){return e.index-t.index}).map(function(e){return e.text}).join("\n")}else S=m.codeGen(this);t.push({text:S,index:m.location.start.index})}},r._visitGlobalMacroIfStatement=function(e,t){for(var r=e.children,n=0;n<r.length;n++){var a=r[n];if(i(a,eN.PrecisionSpecifier))t.push({text:a.codeGen(this),index:a.location.start.index});else if(i(a,eN.FunctionDefinition))-1!==to.context._referencedGlobalMacroASTs.indexOf(a)&&t.push({text:a.getCache(),index:a.location.start.index});else if(i(a,eN.StructSpecifier)){var o,s,c,l,u=to.context,p=u.stage;(-1!==to.context._referencedGlobalMacroASTs.indexOf(a)||(p===ej.VERTEX?u.isAttributeStruct(null==(o=a.ident)?void 0:o.lexeme)||u.isVaryingStruct(null==(s=a.ident)?void 0:s.lexeme):u.isVaryingStruct(null==(c=a.ident)?void 0:c.lexeme)||u.isMRTStruct(null==(l=a.ident)?void 0:l.lexeme)))&&t.push({text:a.getCache(),index:a.location.start.index})}else if(i(a,eN.VariableDeclarationList))for(var h=a.variableDeclarations,_=0;_<h.length;_++){var d=h[_];-1!==to.context._referencedGlobalMacroASTs.indexOf(d)&&t.push({text:d.getCache()+";",index:d.location.start.index})}i(a,ti)&&this._visitGlobalMacroIfStatement(a,t)}},t}(tc);tl._lookupSymbol=new e9("",null),tl._serializedGlobalKey=new Set;var tu=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}n(t,e);var r=t.prototype;return r.getAttributeProp=function(e){return"attribute "+e.typeInfo.typeLexeme+" "+e.ident.lexeme+";"},r.getVaryingProp=function(e){return"varying "+e.typeInfo.typeLexeme+" "+e.ident.lexeme+";"},r.getMRTProp=function(){return null},r.visitPostfixExpression=function(t){var r=t.children,n=r[0],a=to.context;if(i(n,eN.PostfixExpression)&&a.isMRTStruct(n.type)){var o=r[2],s=a.mrtList.find(function(e){return e.ident.lexeme===o.lexeme});return s?"gl_FragData["+s.mrtIndex+"]":(this._reportError(o.location,"not found mrt property: "+o.lexeme),"")}return e.prototype.visitPostfixExpression.call(this,t)},r.visitJumpStatement=function(t){return t.isFragReturnStatement?to.context.mrtStructs.length?"":"gl_FragColor = "+t.children[1].codeGen(this):e.prototype.visitJumpStatement.call(this,t)},t.getVisitor=function(){return this._singleton||(this._singleton=new t),this._singleton},t}(tl),tp="GS_glFragColor",th=/*#__PURE__*/function(e){function t(){var t;return t=e.apply(this,arguments)||this,t._otherCodeArray=[],t._fragColorVariableRegistered=!1,t}n(t,e);var r=t.prototype;return r.reset=function(){e.prototype.reset.call(this),this._otherCodeArray.length=0,this._fragColorVariableRegistered=!1},r.getOtherGlobal=function(t,r){e.prototype.getOtherGlobal.call(this,t,r);for(var n=0,i=this._otherCodeArray.length;n<i;n++)r.push(this._otherCodeArray[n])},r.getAttributeProp=function(e){return"in "+e.typeInfo.typeLexeme+" "+e.ident.lexeme+";"},r.getVaryingProp=function(e){return(to.context.stage===ej.FRAGMENT?"in":"out")+" "+e.typeInfo.typeLexeme+" "+e.ident.lexeme+";"},r.getMRTProp=function(e){return"layout(location = "+e.mrtIndex+") out vec4 "+e.ident.lexeme+";"},r.visitFunctionIdentifier=function(e){var t=e.children;if(1!==t[0].children.length)return this.defaultCodeGen(t);var r=e.lexeme;switch(e.ident){case"texture2D":case"textureCube":r="texture";break;case"texture2DProj":r="textureProj";break;case"texture2DLodEXT":case"textureCubeLodEXT":r="textureLod";break;case"texture2DGradEXT":case"textureCubeGradEXT":r="textureGrad";break;case"texture2DProjLodEXT":r="textureProjLod";break;case"texture2DProjGradEXT":r="textureProjGrad";break;case"gl_FragDepthEXT":r="gl_FragDepth"}return r},r.visitVariableIdentifier=function(t){var r=to.context;if(r.stage===ej.FRAGMENT&&"gl_FragColor"===t.getLexeme(this)){if(r.mrtStructs.length){this._reportError(t.location,"gl_FragColor cannot be used with MRT (Multiple Render Targets).");return}return this._registerFragColorVariable(),tp}return e.prototype.visitVariableIdentifier.call(this,t)},r.visitJumpStatement=function(t){return t.isFragReturnStatement?to.context.mrtStructs.length?"":(this._registerFragColorVariable(),tp+" = "+t.children[1].codeGen(this)+";"):e.prototype.visitJumpStatement.call(this,t)},r._registerFragColorVariable=function(){this._fragColorVariableRegistered||(this._otherCodeArray.push({text:"out vec4 "+tp+";",index:0}),this._fragColorVariableRegistered=!0)},t.getVisitor=function(){return this._singleton||(this._singleton=new t),this._singleton},t}(tl),t_=/*#__PURE__*/function(){function e(e){this._currentIndex=0,this._source=e}var t=e.prototype;return t.setSource=function(e){this._source=e,this._currentIndex=0},t.getShaderPosition=function(e){return void 0===e&&(e=0),tk.createPosition(this._currentIndex-e)},t.isEnd=function(){return this._currentIndex>=this._source.length},t.getCurChar=function(){return this._source[this._currentIndex]},t.getCurCharCode=function(){return this._source.charCodeAt(this._currentIndex)},t.advance=function(e){this._currentIndex+=e},t.skipSpace=function(t){for(;e.isWhiteSpaceChar(this.getCurCharCode(),t);)this.advance(1)},t.skipCommentsAndSpace=function(){for(var t=this._source,r=t.length,n=this._currentIndex;n<r;){for(;n<r&&e.isWhiteSpaceChar(t.charCodeAt(n),!0);)n++;if(n+1>=r||47!==t.charCodeAt(n))break;var i=t.charCodeAt(n+1);if(47===i)for(n+=2;n<r;){var a=t.charCodeAt(n);if(10===a||13===a)break;n++}else if(42===i){for(n+=2;n+1<r&&!(42===t.charCodeAt(n)&&47===t.charCodeAt(n+1));)n++;n+=2}else break}this.advance(n-this._currentIndex)},t.peek=function(e){var t=this._currentIndex;return this._source.substring(t,t+e)},t.scanLexeme=function(e){this.skipCommentsAndSpace();var t=e.length,r=this.peek(t);r!==e&&this.throwError(this.getShaderPosition(0),'Expect lexeme "'+e+'", but got "'+r+'"'),this.advance(t)},t.scanTwoExpectedLexemes=function(e,t){return(this.skipCommentsAndSpace(),this.peek(e.length)===e)?(this.advance(e.length),e):this.peek(t.length)===t?(this.advance(t.length),t):null},t.throwError=function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];throw eF.createGSError(r.join(" "),e1.ScannerError,this._source,e)},t.scanPairedChar=function(e,t,r,n){n||this.scanLexeme(e);var i=this._currentIndex,a=this._source,o=a.length,s=this._currentIndex;if(r)for(var c=1;s<o;){var l=a[s];if(l===t&&0==--c)break;l===e&&c++,s++}else for(;s<o&&a[s]!==t;)s++;return this.advance(s+1-this._currentIndex),a.substring(i,s)},e.isDigit=function(e){return e>=48&&e<=57},e.isAlpha=function(e){return 95===e||e>=65&&e<=90||e>=97&&e<=122},e.isAlnum=function(t){return e.isAlpha(t)||e.isDigit(t)},e.isPreprocessorStartChar=function(e){return 35===e},e.isWhiteSpaceChar=function(e,t){return 32===e||9===e||t&&(10===e||13===e)},o(e,[{key:"currentIndex",get:function(){return this._currentIndex}},{key:"source",get:function(){return this._source}}]),e}(),td=/*#__PURE__*/function(e){function t(t,r){var n;return(n=e.call(this,t)||this).macroDefineList=r,n._needScanMacroConditionExpression=!1,n}n(t,e);var r=t.prototype;return r.tokenize=function(){return function(e,t){var r,n,i,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return o.next=s(0),o.throw=s(1),o.return=s(2),"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(s){return function(c){return function(s){if(r)throw TypeError("Generator is already executing.");for(;o&&(o=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(i=2&s[0]?n.return:s[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,s[1])).done)return i;switch(n=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(i=(i=a.trys).length>0&&i[i.length-1])&&(6===s[0]||2===s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]<i[3])){a.label=s[1];break}if(6===s[0]&&a.label<i[1]){a.label=i[1],i=s;break}if(i&&a.label<i[2]){a.label=i[2],a.ops.push(s);break}i[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=i=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}}(this,function(e){switch(e.label){case 0:if(this.isEnd())return[3,2];return[4,this.scanToken()];case 1:return e.sent(),[3,0];case 2:return[2,ew]}})},r.scanToken=function(){if(this.skipCommentsAndSpace(),this.isEnd())return ew;if(this._needScanMacroConditionExpression)return this._needScanMacroConditionExpression=!1,this._scanMacroConditionExpression();var e,t=this.getCurCharCode();if(t_.isPreprocessorStartChar(t))return this._scanDirectives();if(t_.isAlpha(t))return this._scanWord();if(t_.isDigit(t))return this._scanNum();var r=this.getShaderPosition(),n=eB.pool.get();switch(this.getCurChar()){case"<":if(this.advance(1),"<"===(e=this.getCurChar())){if(this.advance(1),"="===this.getCurChar()){this.advance(1),n.set(eV.LEFT_ASSIGN,"<<=",r);break}n.set(eV.LEFT_OP,"<<",r);break}if("="===e){this.advance(1),n.set(eV.LE_OP,"<=",r);break}n.set(eV.LEFT_ANGLE,"<",r);break;case">":if(this.advance(1),">"===(e=this.getCurChar())){if(this.advance(1),"="===this.getCurChar()){this.advance(1),n.set(eV.RIGHT_ASSIGN,">>=",r);break}n.set(eV.RIGHT_OP,">>",r);break}if("="===e){this.advance(1),n.set(eV.GE_OP,">=",r);break}n.set(eV.RIGHT_ANGLE,">",r);break;case"+":if(this.advance(1),"+"===(e=this.getCurChar())){this.advance(1),n.set(eV.INC_OP,"++",r);break}if("="===e){this.advance(1),n.set(eV.ADD_ASSIGN,"+=",r);break}n.set(eV.PLUS,"+",r);break;case"-":if(this.advance(1),"-"===(e=this.getCurChar())){this.advance(1),n.set(eV.DEC_OP,"--",r);break}if("="===e){this.advance(1),n.set(eV.SUB_ASSIGN,"-=",r);break}n.set(eV.DASH,"-",r);break;case"=":if(this.advance(1),"="===this.getCurChar()){this.advance(1),n.set(eV.EQ_OP,"==",r);break}n.set(eV.EQUAL,"=",r);break;case"!":if(this.advance(1),"="===this.getCurChar()){this.advance(1),n.set(eV.NE_OP,"!=",r);break}n.set(eV.BANG,"!",r);break;case"&":if(this.advance(1),"&"===(e=this.getCurChar())){this.advance(1),n.set(eV.AND_OP,"&&",r);break}if("="===e){this.advance(1),n.set(eV.ADD_ASSIGN,"&=",r);break}n.set(eV.AMPERSAND,"&",r);break;case"|":if(this.advance(1),"|"===(e=this.getCurChar())){this.advance(1),n.set(eV.OR_OP,"||",r);break}if("="===e){this.advance(1),n.set(eV.OR_ASSIGN,"|=",r);break}n.set(eV.VERTICAL_BAR,"|",r);break;case"^":if(this.advance(1),"^"===(e=this.getCurChar())){this.advance(1),n.set(eV.XOR_OP,"^^",r);break}if("="===e){this.advance(1),n.set(eV.XOR_ASSIGN,"^=",r);break}n.set(eV.CARET,"^",r);break;case"*":if(this.advance(1),"="===this.getCurChar()){this.advance(1),n.set(eV.MUL_ASSIGN,"*=",r);break}n.set(eV.STAR,"*",r);break;case"/":if(this.advance(1),"="===this.getCurChar()){this.advance(1),n.set(eV.DIV_ASSIGN,"/=",r);break}n.set(eV.SLASH,"/",r);break;case"%":if(this.advance(1),"="===this.getCurChar()){this.advance(1),n.set(eV.MOD_ASSIGN,"%=",r);break}n.set(eV.PERCENT,"%",r);break;case"(":this.advance(1),n.set(eV.LEFT_PAREN,"(",r);break;case")":this.advance(1),n.set(eV.RIGHT_PAREN,")",r);break;case"{":this.advance(1),n.set(eV.LEFT_BRACE,"{",r);break;case"}":this.advance(1),n.set(eV.RIGHT_BRACE,"}",r);break;case"[":this.advance(1),n.set(eV.LEFT_BRACKET,"[",r);break;case"]":this.advance(1),n.set(eV.RIGHT_BRACKET,"]",r);break;case".":if(this.advance(1),t_.isDigit(this.getCurCharCode()))return this._scanNumAfterDot();n.set(eV.DOT,".",r);break;case",":this.advance(1),n.set(eV.COMMA,",",r);break;case":":this.advance(1),n.set(eV.COLON,":",r);break;case";":this.advance(1),n.set(eV.SEMICOLON,";",r);break;case"~":this.advance(1),n.set(eV.TILDE,"~",r);break;case"?":this.advance(1),n.set(eV.QUESTION,"?",r);break;case'"':return this.advance(1),this._scanStringConst();default:this.throwError(this.getShaderPosition(0),"Unexpected character "+this.getCurChar())}return n},r._scanStringConst=function(){for(var e=this.getShaderPosition(),t=[];'"'!==this.getCurChar();)t.push(this.getCurChar()),this.advance(1);this.advance(1);var r=tk.createRange(e,this.getShaderPosition()),n=eB.pool.get();return n.set(eV.STRING_CONST,t.join(""),r),n},r._scanNumAfterDot=function(){for(var e=["."];t_.isDigit(this.getCurCharCode());)e.push(this.getCurChar()),this.advance(1);this._scanFloatSuffix(e);var t=eB.pool.get();return t.set(eV.FLOAT_CONSTANT,e.join(""),this.getShaderPosition(e.length)),t},r._scanUtilBreakLine=function(e){for(;"\n"!==this.getCurChar()&&!this.isEnd();)e.push(this.getCurChar()),this.advance(1)},r._scanDirectives=function(){var e=[this.getCurChar()],r=this.getShaderPosition();for(this.advance(1);t_.isAlpha(this.getCurCharCode());)e.push(this.getCurChar()),this.advance(1);var n=eB.pool.get(),i=e.join("");if("#define"===i){this._scanUtilBreakLine(e);var a=e.join("")+"\n";n.set(ek.MACRO_DEFINE_EXPRESSION,a,r)}else{var o=t._lexemeTable[i];n.set(null!=o?o:eV.ID,i,r),("#if"===i||"#elif"===i)&&(this._needScanMacroConditionExpression=!0)}return n},r._scanMacroConditionExpression=function(){var e=[],t=this.getShaderPosition();this._scanUtilBreakLine(e);var r=e.join(""),n=eB.pool.get();return n.set(ek.MACRO_CONDITIONAL_EXPRESSION,r,t),n},r._scanWord=function(){var e=[this.getCurChar()],r=this.getShaderPosition();for(this.advance(1);t_.isAlnum(this.getCurCharCode());)e.push(this.getCurChar()),this.advance(1);var n=eB.pool.get(),i=e.join(""),a=t._lexemeTable[i];return this.macroDefineList[i]?n.set(ek.MACRO_CALL,i,r):n.set(null!=a?a:eV.ID,i,r),n},r._scanNum=function(){for(var e=[];t_.isDigit(this.getCurCharCode());)e.push(this.getCurChar()),this.advance(1);var t=this.getCurChar();if("."===t){for(e.push(t),this.advance(1);t_.isDigit(this.getCurCharCode());)e.push(this.getCurChar()),this.advance(1);this._scanFloatSuffix(e);var r=eB.pool.get();return r.set(eV.FLOAT_CONSTANT,e.join(""),this.getShaderPosition(e.length)),r}if("e"===t||"E"===t){this._scanFloatSuffix(e);var n=eB.pool.get();return n.set(eV.FLOAT_CONSTANT,e.join(""),this.getShaderPosition(e.length)),n}this._scanIntegerSuffix(e);var i=eB.pool.get();return i.set(eV.INT_CONSTANT,e.join(""),this.getShaderPosition(e.length)),i},r._scanFloatSuffix=function(e){var t=this.getCurChar();if("e"===t||"E"===t){e.push(t),this.advance(1),("+"===(t=this.getCurChar())||"-"===t)&&(e.push(t),this.advance(1),t=this.getCurChar()),t_.isDigit(this.getCurCharCode())||this.throwError(this.getShaderPosition(0),"lexing error, invalid exponent suffix.");do e.push(t),this.advance(1),t=this.getCurChar();while(t_.isDigit(this.getCurCharCode()))}("f"===t||"F"===t)&&(e.push(t),this.advance(1))},r._scanIntegerSuffix=function(e){var t=this.getCurChar();("u"===t||"U"===t)&&(e.push(t),this.advance(1))},t}(t_);function tf(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}td._lexemeTable={const:ek.CONST,bool:ek.BOOL,float:ek.FLOAT,double:ek.DOUBLE,int:ek.INT,uint:ek.UINT,break:ek.BREAK,continue:ek.CONTINUE,do:ek.DO,else:ek.ELSE,for:ek.FOR,if:ek.IF,while:ek.WHILE,discard:ek.DISCARD,return:ek.RETURN,bvec2:ek.BVEC2,bvec3:ek.BVEC3,bvec4:ek.BVEC4,ivec2:ek.IVEC2,ivec3:ek.IVEC3,ivec4:ek.IVEC4,uvec2:ek.UVEC2,uvec3:ek.UVEC3,uvec4:ek.UVEC4,vec2:ek.VEC2,vec3:ek.VEC3,vec4:ek.VEC4,mat2:ek.MAT2,mat3:ek.MAT3,mat4:ek.MAT4,in:ek.IN,out:ek.OUT,inout:ek.INOUT,sampler2D:ek.SAMPLER2D,samplerCube:ek.SAMPLER_CUBE,sampler3D:ek.SAMPLER3D,sampler2DShadow:ek.SAMPLER2D_SHADOW,samplerCubeShadow:ek.SAMPLER_CUBE_SHADOW,sampler2DArray:ek.SAMPLER2D_ARRAY,sampler2DArrayShadow:ek.SAMPLER2D_ARRAY_SHADOW,isampler2D:ek.I_SAMPLER2D,isampler3D:ek.I_SAMPLER3D,isamplerCube:ek.I_SAMPLER_CUBE,isampler2DArray:ek.I_SAMPLER2D_ARRAY,usampler2D:ek.U_SAMPLER2D,usampler3D:ek.U_SAMPLER3D,usamplerCube:ek.U_SAMPLER_CUBE,usampler2DArray:ek.U_SAMPLER2D_ARRAY,struct:ek.STRUCT,void:ek.VOID,true:ek.True,false:ek.False,precision:ek.PRECISION,precise:ek.PRECISE,highp:ek.HIGHP,mediump:ek.MEDIUMP,lowp:ek.LOWP,invariant:ek.INVARIANT,flat:ek.FLAT,smooth:ek.SMOOTH,noperspective:ek.NOPERSPECTIVE,centroid:ek.CENTROID,layout:ek.LAYOUT,location:ek.LOCATION,"#if":ek.MACRO_IF,"#ifdef":ek.MACRO_IFDEF,"#ifndef":ek.MACRO_IFNDEF,"#else":ek.MACRO_ELSE,"#elif":ek.MACRO_ELIF,"#endif":ek.MACRO_ENDIF,"#undef":ek.MACRO_UNDEF};var tm=((eP={})[eP.id=0]="id",eP[eP.line_remain=1]="line_remain",eP[eP.chunk=2]="chunk",eP[eP.int_constant=3]="int_constant",eP[eP.string_const=4]="string_const",eP[eP.right_op=5]="right_op",eP[eP.left_op=6]="left_op",eP[eP.left_paren=7]="left_paren",eP[eP.right_paren=8]="right_paren",eP[eP.ge=9]="ge",eP[eP.le=10]="le",eP[eP.eq=11]="eq",eP[eP.neq=12]="neq",eP[eP.and=13]="and",eP[eP.or=14]="or",eP[eP.left_angle=15]="left_angle",eP[eP.right_angle=16]="right_angle",eP[eP.star=17]="star",eP[eP.plus=18]="plus",eP[eP.dash=19]="dash",eP[eP.bang=20]="bang",eP[eP.slash=21]="slash",eP[eP.percent=22]="percent",eP[eP.EOF=100]="EOF",eP),tS=((eR={})[eR.define=101]="define",eR[eR.undef=102]="undef",eR[eR.if=103]="if",eR[eR.ifdef=104]="ifdef",eR[eR.ifndef=105]="ifndef",eR[eR.else=106]="else",eR[eR.elif=107]="elif",eR[eR.endif=108]="endif",eR[eR.defined=109]="defined",eR),tg=/*#__PURE__*/function(){function e(e,t,r,n){this.macro=e,this.body=t,this.location=r,this.args=n,(null==n?void 0:n.length)>0&&(this._argsLexemes=this.args.map(function(e){return e.lexeme}),this._replaceRegex=RegExp("\\b("+this._argsLexemes.join("|")+")\\b","g"))}return e.prototype.expandFunctionBody=function(e){var t,r=this;if(e.length!==(null==(t=this.args)?void 0:t.length))throw eF.createGSError("mismatched function macro",GSErrorName.PreprocessorError,"",this.location);return 0===e.length?this.body.lexeme:this.body.lexeme.replace(this._replaceRegex,function(t){return e[r._argsLexemes.indexOf(t)]})},o(e,[{key:"isFunction",get:function(){return!!this.args}}]),e}(),tv=/*#__PURE__*/function(e){function t(t){var r;return(r=e.call(this,t)||this).macroLvl=0,r}n(t,e);var r=t.prototype;return r.scanWordsUntilTerminator=function(e){for(var t=[];;)if(this.skipSpace(!0),t_.isAlpha(this.getCurCharCode()))t.push(this.scanWord());else{if(this.getCurChar()===e)return this.advance(1),t;this.advance(1)}},r.scanWord=function(){for(;!t_.isAlpha(this.getCurCharCode())&&!this.isEnd();)this.advance(1);if(this.isEnd())return ew;for(var e,r=this._currentIndex;t_.isAlnum(this.getCurCharCode())&&!this.isEnd();)this.advance(1);var n=this._currentIndex,i=this._source.slice(r,n);n===r&&this.throwError(this.getShaderPosition(0),"no word found.");var a=eB.pool.get(),o=null!=(e=t._lexemeTable[i])?e:tm.id;return a.set(o,i,this.getShaderPosition(i.length)),a},r.scanToken=function(){if(this.skipCommentsAndSpace(),!this.isEnd()){for(var e,r=this._source,n=this._currentIndex,i=!1,a=r.length;this._currentIndex<a;)if(t._isPpCharacters(r.charCodeAt(this._currentIndex)))this.advance(1),i=!0;else{if(i)break;this.advance(1),this.skipCommentsAndSpace(),n=this._currentIndex}var o=r.slice(n,this._currentIndex),s=eB.pool.get(),c=null!=(e=t._lexemeTable[o])?e:tm.id;return s.set(c,o,this.getShaderPosition(this._currentIndex-n)),c===tS.if||c===tS.ifdef||c===tS.ifndef?this.macroLvl++:c===tS.endif&&this.macroLvl--,s}},r.scanQuotedString=function(){this.skipSpace(!0);var e=this._source,t=e.length,r=this.getShaderPosition(0),n=this._currentIndex;34!==e.charCodeAt(n)&&this.throwError(r,"Unexpected char, expected '\"'");for(var i=++n;n<t&&34!==e.charCodeAt(n);)n++;n>=t&&this.throwError(this.getShaderPosition(0),"Unexpected char, expected '\"'");var a=e.slice(i,n);this.advance(n+1-this._currentIndex);var o=eB.pool.get();return o.set(tm.string_const,a,r),o},r.scanToChar=function(e){for(var t=this._source;t[this._currentIndex]!==e&&!this.isEnd();)this.advance(1)},r.scanMacroBranchBody=function(){for(var e=this.getShaderPosition(0),t=this.macroLvl,r=this.scanToken();;){var n=r.type;if(n===tS.endif&&t-1===this.macroLvl||(n===tS.elif||n===tS.else)&&t===this.macroLvl)break;r=this.scanToken()}var i=this._source.slice(e.index,this._currentIndex-r.lexeme.length-1),a=eB.pool.get();return a.set(tm.chunk,i,e),{body:a,nextDirective:r}},r.scanPairedBlock=function(e,t){this.scanToChar(e);var r=0,n=this._source;do{var i=n[this._currentIndex];i===e?r++:i===t&&r--,this.advance(1)}while(r>0)},r.scanRemainMacro=function(){for(var e=this.macroLvl,t=this.scanToken();!this.isEnd()&&(t.type!==tS.endif||e-1!==this.macroLvl);)t=this.scanToken();return this.getShaderPosition(0)},r.peekNonSpace=function(){for(var e=this._currentIndex;/\s/.test(this._source[e]);)e+=1;return this._source[e]},r.scanInteger=function(){for(var e=this._currentIndex;t_.isDigit(this.getCurCharCode());)this.advance(1);this._currentIndex===e&&this.throwError(this.getShaderPosition(0),"no integer found");var t=this._source.slice(e,this._currentIndex),r=eB.pool.get();return r.set(tm.int_constant,t,this.getShaderPosition(0)),r},r.scanMacroBody=function(){this.skipSpace(!1);for(var e="",t=this._source,r=t.length,n=this.getShaderPosition(0);this._currentIndex<r;){var i=t.charCodeAt(this._currentIndex);if(10===i)break;if(47===i){var a=this._currentIndex+1;if(a<r){var o=t.charCodeAt(a);if(47===o)break;if(42===o){for(this.advance(2);this._currentIndex+1<r;){var s=this._currentIndex;if(42===t.charCodeAt(s)&&47===t.charCodeAt(s+1)){this.advance(2);break}this.advance(1)}e+=" ";continue}}}e+=t[this._currentIndex],this.advance(1)}if(""===e)return null;var c=eB.pool.get();return c.set(tm.line_remain,e,tk.createRange(n,this.getShaderPosition(0))),c},t._isPpCharacters=function(e){return 35===e||t_.isAlnum(e)},t}(t_);tv._lexemeTable={"#define":tS.define,"#undef":tS.undef,"#if":tS.if,"#ifdef":tS.ifdef,"#ifndef":tS.ifndef,"#else":tS.else,"#elif":tS.elif,"#endif":tS.endif,defined:tS.defined};var ty=/*#__PURE__*/function(){function e(){}return e.expand=function(e,t){for(var r,n=[],i=0,a=0,o=c(e);!(r=o()).done;){var s=r.value,l=t.slice(i,s.rangeInBlock.start.index);n.push(l,s.replace);var u=a+l.length+s.replace.length;i=s.rangeInBlock.end.index,a=u}return n.push(t.slice(i)),n.join("")},e}(),tE=/*#__PURE__*/function(){function e(){}return e.parse=function(t,r){e._reset();for(var n,i=c(r);!(n=i()).done;){var a=n.value;e._addPredefinedMacro(a.name,a.value)}return this.lexer=new tv(t),e._parseDirectives(this.lexer)},e._reset=function(){this._expandSegmentsStack.length=0,this._expandSegmentsStack.push([]),this._definedMacros.clear(),this._addPredefinedMacro("GL_ES")},e._addPredefinedMacro=function(e,t){var r,n=eB.pool.get();n.set(tm.id,e),void 0!=t&&(r=eB.pool.get()).set(tm.id,t),this._definedMacros.set(e,new tg(n,r))},e._parseDirectives=function(e){for(var t;t=e.scanToken();)switch(t.type){case tm.id:this._parseMacro(e,t);break;case tS.define:this._parseDefine(e);break;case tS.undef:this._parseUndef(e);break;case tS.if:this._parseIfDirective(e,tS.if);break;case tS.ifndef:this._parseIfDirective(e,tS.ifndef);break;case tS.ifdef:this._parseIfDirective(e,tS.ifdef)}return ty.expand(this._getExpandSegments(),e.source,e.sourceMap)},e._getExpandSegments=function(){return this._expandSegmentsStack[this._expandSegmentsStack.length-1]},e._reportError=function(e,t,r,n){eF.createGSError(t,e1.PreprocessorError,r,e,n)},e._parseIfDirective=function(e,t){var r,n=t===tS.if?3:t===tS.ifdef?6:7,i=e.currentIndex-n,a=!1;if(t===tS.if)r=this._parseConstantExpression(e);else{var o=e.scanWord().lexeme;if(o.startsWith("GL_"))a=!0;else{var s=this._definedMacros.get(o);r=t===tS.ifdef?!!s:!s}}e.skipSpace(!0);var c=e.scanMacroBranchBody(),l=c.body,u=c.nextDirective;if(!a){if(r){var p=u.type===tS.endif?e.getShaderPosition(0):e.scanRemainMacro(),h=this._expandMacroChunk(l.lexeme,l.location,e);this._addContentReplace(e.file,tk.createPosition(i),p,h.content,e.blockRange,h.sourceMap)}else this._addEmptyReplace(e,i),this._processConditionalDirective(u.type,e)}},e._processConditionalDirective=function(e,t){if(e!==tS.endif){var r=t.currentIndex;if(e===tS.else){var n=t.scanMacroBranchBody().body,i=this._expandMacroChunk(n.lexeme,n.location,t);this._addContentReplace(t.file,tk.createPosition(r),t.getShaderPosition(0),i.content,t.blockRange,i.sourceMap)}else if(e===tS.elif){var a=this._parseConstantExpression(t),o=t.scanMacroBranchBody(),s=o.body,c=o.nextDirective;if(a){var l=c.type===tS.endif?t.currentIndex:t.scanRemainMacro().index,u=this._expandMacroChunk(s.lexeme,s.location,t);this._addContentReplace(t.file,tk.createPosition(r),tk.createPosition(l),u.content,t.blockRange,u.sourceMap)}else this._addContentReplace(t.file,tk.createPosition(r),tk.createPosition(t.currentIndex),"",t.blockRange),this._processConditionalDirective(c.type,t)}}},e._parseConstantExpression=function(e){return e.skipSpace(!0),this._parseLogicalOrExpression(e)},e._parseLogicalOrExpression=function(e){var t=this._parseLogicalAndExpression(e),r=e.peek(2);if(r&&"||"===r){e.advance(2),e.skipSpace(!1);var n=this._parseLogicalOrExpression(e);return t||n}return t},e._parseLogicalAndExpression=function(e){var t=this._parseEqualityExpression(e),r=e.peek(2);if(r&&"&&"===r){e.advance(2),e.skipSpace(!1);var n=this._parseLogicalAndExpression(e);return t&&n}return t},e._parseEqualityExpression=function(e){var t=this._parseRelationalExpression(e),r=e.peek(2);if(r&&["==","!="].includes(r)){e.advance(2),e.skipSpace(!1);var n=this._parseEqualityExpression(e);switch(r){case"==":return t===n;case"!=":return t!==n}}return t},e._parseRelationalExpression=function(e){var t=this._parseShiftExpression(e),r=e.peek(2);if("="!==r[1]&&(r=r[0]),r&&[">","<",">=","<="].includes(r)){var n=e.getShaderPosition(0);e.advance(r.length),e.skipSpace(!1);var i=this._parseRelationalExpression(e);if((void 0===t?"undefined":tf(t))!==(void 0===i?"undefined":tf(i))&&"number"!=typeof t){this._reportError(n,"invalid operator in relation expression.",e.source,e.file);return}switch(r){case">":return t>i;case"<":return t<i;case">=":return t>=i;case"<=":return t<=i}}return t},e._parseShiftExpression=function(e){var t=this._parseAdditiveExpression(e),r=e.peek(2);if(r&&[">>","<<"].includes(r)){var n=e.getShaderPosition(0);e.advance(2),e.skipSpace(!1);var i=this._parseShiftExpression(e);if((void 0===t?"undefined":tf(t))!==(void 0===i?"undefined":tf(i))&&"number"!=typeof t){this._reportError(n,"invalid operator in shift expression.",e.source,e.file);return}switch(r){case">>":return t>>i;case"<<":return t<<i}}return t},e._parseAdditiveExpression=function(e){var t=this._parseMulticativeExpression(e);if([">","<"].includes(e.getCurChar())){var r=e.getShaderPosition(0);e.advance(1);var n=e.getCurChar();e.skipSpace(!1);var i=this._parseAdditiveExpression(e);if((void 0===t?"undefined":tf(t))!==(void 0===i?"undefined":tf(i))&&"number"!=typeof t)return this._reportError(r,"invalid operator.",e.source,e.file),!1;switch(n){case"+":return t+i;case"-":return t-i}}return t},e._parseMulticativeExpression=function(e){var t=this._parseUnaryExpression(e);if(e.skipSpace(!1),["*","/","%"].includes(e.getCurChar())){var r=e.getShaderPosition(0),n=e.getCurChar();e.skipSpace(!1);var i=this._parseMulticativeExpression(e);if((void 0===t?"undefined":tf(t))!==(void 0===i?"undefined":tf(i))&&"number"!=typeof t){this._reportError(r,"invalid operator.",e.source,e.file);return}switch(n){case"*":return t*i;case"/":return t/i;case"%":return t%i}}return t},e._parseUnaryExpression=function(e){var t=e.getCurChar();if(["+","-","!"].includes(t)){var r=e.getShaderPosition(0);e.advance(1),e.skipSpace(!1);var n=this._parseParenthesisExpression(e);switch(("!"===t&&"boolean"!=typeof n||"!"!==t&&"number"!=typeof n)&&this._reportError(r,"invalid operator.",e.source,e.file),t){case"+":return n;case"-":return-n;case"!":return!n}}return this._parseParenthesisExpression(e)},e._parseParenthesisExpression=function(e){if("("===e.getCurChar()){e.advance(1),e.skipSpace(!1);var t=this._parseConstantExpression(e);return e.scanToChar(")"),e.advance(1),t}return this._parseConstant(e)},e._parseConstant=function(e){if(t_.isAlpha(e.getCurCharCode())){var t=e.scanWord();if(t.type===tS.defined){var r="("===e.peekNonSpace(),n=e.scanWord();return r&&(e.scanToChar(")"),e.advance(1)),!!this._definedMacros.get(n.lexeme)}var i=this._definedMacros.get(t.lexeme);if(!i)return!1;if(!i.body)return!0;i.isFunction&&this._reportError(t.location,"invalid function macro usage",e.source,e.file);var a=Number(i.body.lexeme);return Number.isInteger(a)||this._reportError(t.location,"invalid const macro: "+t.lexeme,e.source,e.file),a}if(t_.isDigit(e.getCurCharCode()))return Number(e.scanInteger().lexeme);this._reportError(e.getShaderPosition(0),"invalid token: "+e.getCurChar(),e.source,e.file)},e._parseMacroFunctionArgs=function(e,t,r){for(var n=e.length,i=t+r.length;i<n&&40!==e.charCodeAt(i);)i++;for(var a=[],o=1,s=i+1,c=s;c<n&&o>0;){var l=e.charCodeAt(c);if(40===l)o++;else if(41===l){if(0==--o){var u=e.substring(s,c).trim();u.length>0&&a.push(u);break}}else if(44===l&&1===o){var p=e.substring(s,c).trim();p.length>0&&a.push(p),s=c+1}c++}return{args:a,endIndex:c+1}},e._expandMacroBody=function(e){for(var t=this._expandVisitedMacros,r=++this._expandVersionId,n=e,i=!0;i;){i=!1;for(var a=n.length,o=0;o<a;){var s,c,l=n.charCodeAt(o);if(!t_.isAlpha(l)){o++;continue}for(var u=o;o<a&&t_.isAlnum(n.charCodeAt(o));)o++;var p=n.substring(u,o),h=this._definedMacros.get(p);if(h&&t[p]!==r){t[p]=r;var _=void 0,d=void 0;if(h.isFunction){var f=this._parseMacroFunctionArgs(n,u,p),m=f.args,S=f.endIndex;_=h.expandFunctionBody(m),d=S}else _=null!=(c=null==(s=h.body)?void 0:s.lexeme)?c:"",d=o;n=n.substring(0,u)+_+n.substring(d),i=!0;break}}}return n},e._expandMacroChunk=function(e,t,r){this._expandSegmentsStack.push([]),n="string"==typeof r?new tv(e,r):new tv(e,r.file,t);var n,i=this._parseDirectives(n);return this._expandSegmentsStack.pop(),{content:i}},e._addEmptyReplace=function(e,t){this._addContentReplace(e.file,tk.createPosition(t),e.getShaderPosition(0),"",e.blockRange)},e._addContentReplace=function(e,t,r,n,i,a){var o=tk.createRange(t,r);this._getExpandSegments().push({rangeInBlock:o,replace:n})},e._parseDefine=function(e){var t,r=e.getShaderPosition(7),n=e.scanWord(),i=n.lexeme,a=n.location,o=a.end;this._definedMacros.get(i)&&i.startsWith("GL_")&&this._reportError(a,"Redefined macro: "+i,e.source,e.file),"("===e.getCurChar()&&(t=e.scanWordsUntilTerminator(")"),o=e.getShaderPosition(0));var s=new tg(n,e.scanMacroBody(),tk.createRange(r,o),t);this._definedMacros.set(i,s),this._addContentReplace(e.file,r,e.getShaderPosition(0),"",e.blockRange)},e._parseUndef=function(e){var t=e.getShaderPosition(6),r=e.scanWord();this._definedMacros.delete(r.lexeme),this._addContentReplace(e.file,t,e.getShaderPosition(0),"",e.blockRange)},e._parseMacro=function(e,t){var r=this._definedMacros.get(t.lexeme);if(r){var n=t.location;if(r.isFunction){var i=this._parseMacroFunctionArgs(e.source,n.start.index,t.lexeme),a=i.args,o=i.endIndex,s=r.expandFunctionBody(a),c=this._expandMacroBody(s),l=o-n.end.index;e.advance(l),this._addContentReplace(e.file,n.start,e.getShaderPosition(0),c,e.blockRange)}else{var u,p,h=null!=(p=null==(u=r.body)?void 0:u.lexeme)?p:"",_=this._expandMacroBody(h);this._addContentReplace(e.file,n.start,n.end,_,e.blockRange)}}},e}();tE._definedMacros=new Map,tE._expandSegmentsStack=[[]],tE._expandVisitedMacros={},tE._expandVersionId=1;var tx=/*#__PURE__*/function(){function e(t,r,n){this._needReInfer=!0,this.production=t,this.position=r,this.lookaheadSet=new Set;for(var i,a=c(n);!(i=a()).done;){var o=i.value;this.lookaheadSet.add(o)}this.id=e._id++}var t=e.prototype;return t.addLookahead=function(e){for(var t,r=c(e);!(t=r()).done;){var n=t.value;this.lookaheadSet.has(n)||(this.lookaheadSet.add(n),this.needReInfer=!0)}},t.symbolByOffset=function(e){return this.production.derivation[this.position+e]},t.canReduce=function(){if(this.position>this.production.derivation.length-1)return!0;for(var e=this.position;e<this.production.derivation.length;e++)if(this.production.derivation[e]!==eV.EPSILON)return!1;return!0},t.advance=function(){return new e(this.production,this.position+1,this.lookaheadSet)},o(e,[{key:"needReInfer",get:function(){return this._needReInfer},set:function(e){this._needReInfer=e}},{key:"curSymbol",get:function(){return this.production.derivation[this.position]}},{key:"nextSymbol",get:function(){return this.production.derivation[this.position+1]}}]),e}();tx._id=0;var tC=/*#__PURE__*/function(){function e(t){this.closured=!1,this._stateItemPool=new Map,this.id=e._id++,this._items=new Set([].concat(t)),this.cores=new Set([].concat(t));for(var r,n=c(t);!(r=n()).done;){var i=r.value,a=this.getStateItemMapKey(i.production,i.position);this._stateItemPool.set(a,i)}e.pool.set(this.id,this)}var t=e.prototype;return t.getStateItemMapKey=function(e,t){return e.id+","+t},t.createStateItem=function(e,t,r){void 0===r&&(r=new Set);var n=this.getStateItemMapKey(e,t),i=this._stateItemPool.get(n);if(i){for(var a,o=c(r);!(a=o()).done;){var s=a.value;i.lookaheadSet.has(s)||(i.lookaheadSet.add(s),i.needReInfer=!0)}return i}var l=new tx(e,t,r);return this._stateItemPool.set(n,l),l},e.create=function(t){var r=this.getMapKey(t),n=this.closureMap.get(r);if(n){for(var i,a=c(t);!(i=a()).done;){var o=i.value;n.createStateItem(o.production,o.position,o.lookaheadSet)}return n}var s=new e(t);return this.closureMap.set(r,s),s},e.getMapKey=function(e){return e.map(function(e){return e.production.id+","+e.position}).join(";")},o(e,[{key:"items",get:function(){return this._items}},{key:"needReInfer",get:function(){for(var e,t=c(this.cores);!(e=t()).done;)if(e.value.needReInfer)return!0;return!1}}]),e}();tC.closureMap=new Map,tC.pool=new Map,tC._id=0;var tA=/*#__PURE__*/function(){function e(){}return e.isTerminal=function(e){return e<eK.START},e.toString=function(e){if(this.isTerminal(e)){var t;return null!=(t=eV[e])?t:ek[e]}return eK[e]},e.createProductionWithOptions=function(e,t,r){for(var n,i=[],a=c(t);!(n=a()).done;){var o=n.value;i.push([[].concat([e],o),function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];if(n[0]){var a=n[0].location.start,o=n[n.length-1].location.end,s=tk.createRange(a,o);eN.get(null!=r?r:eN.TrivialNode.pool,e,s,n)}}])}return i},e.addMapSetItem=function(e,t,r){var n,i=null!=(n=e.get(t))?n:new Set;i.add(r),e.set(t,i)},e.isSubSet=function(e,t){for(var r,n=c(e);!(r=n()).done;){var i=r.value;if(!t.has(i))return!1}return!0},e.isActionEqual=function(e,t){return e.action===t.action&&e.target===t.target},e}(),tT=((eM={})[eM.Shift=0]="Shift",eM[eM.Reduce=1]="Reduce",eM[eM.Accept=2]="Accept",eM),tb=/*#__PURE__*/function(){function e(e){this.firstSetMap=new Map,this.followSetMap=new Map,this.actionTable=new Map,this.gotoTable=new Map,this._firstSetNTStack=[],this.grammar=e}var t=e.prototype;return t.generate=function(){this.computeFirstSet(),this.buildStateTable()},t.buildStateTable=function(){var e=[new tx(this.grammar.productions[0],0,[eV.EOF])],t=tC.create(e);this._extendState(t)},t._extendState=function(e){if(e.needReInfer){this._closure(e);for(var t,r=this._inferNextState(e),n=c(r);!(t=n()).done;){var i=t.value;this._extendState(i)}}},t._closure=function(e){for(var t,r=c(e.cores);!(t=r()).done;){var n=t.value;n.canReduce()||this._extendStateItem(e,n)}return e.closured=!0,e},t._extendStateItem=function(e,t){if(!tA.isTerminal(t.curSymbol)){var r=this.grammar.getProductionList(t.curSymbol);if(t.nextSymbol){for(var n=new Set,i=!1,a=1,o=t.symbolByOffset(1);o;o=t.symbolByOffset(++a)){if(tA.isTerminal(o)){n.add(o),i=!0;break}s=this.firstSetMap.get(o);for(var s,l,u=c(s);!(l=u()).done;){var p=l.value;n.add(p)}if(!s.has(eV.EPSILON))break}if(!i&&(null==s?void 0:s.has(eV.EPSILON)))for(var h,_=c(t.lookaheadSet);!(h=_()).done;){var d=h.value;n.add(d)}for(var f,m=c(r);!(f=m()).done;){var S=f.value,g=e.createStateItem(S,0);e.items.has(g)&&tA.isSubSet(n,g.lookaheadSet)||(e.items.add(g),g.addLookahead(n),this._extendStateItem(e,g))}}else for(var v,y=c(r);!(v=y()).done;){var E=v.value,x=e.createStateItem(E,0);e.items.has(x)&&tA.isSubSet(t.lookaheadSet,x.lookaheadSet)||(e.items.add(x),x.addLookahead(t.lookaheadSet),this._extendStateItem(e,x))}}},t._inferNextState=function(e){var t=new Map,r=null!=(i=this.actionTable.get(e.id))?i:new Map,n=null!=(a=this.gotoTable.get(e.id))?a:new Map;this.actionTable.set(e.id,r),this.gotoTable.set(e.id,n);for(var i,a,o,s=c(e.items);!(o=s()).done;){var l=o.value;if(l.canReduce()){var u=void 0;u=l.production.goal!==eK.START?{action:tT.Reduce,target:l.production.id}:{action:tT.Accept};for(var p,h=c(l.lookaheadSet);!(p=h()).done;){var _=p.value;this._addAction(r,_,u)}}else{var d=l.advance();tA.addMapSetItem(t,l.curSymbol,d)}l.needReInfer=!1}for(var f,m=new Set,S=c(t.entries());!(f=S()).done;){var g=f.value,v=g[0],y=g[1],E=tC.create(Array.from(y));tA.isTerminal(v)?this._addAction(r,v,{action:tT.Shift,target:E.id}):n.set(v,E.id),m.add(E)}return m},t._addAction=function(e,t,r){var n=e.get(t);(!n||tA.isActionEqual(n,r)||t!==ek.ELSE||n.action!==tT.Shift||r.action!==tT.Reduce)&&e.set(t,r)},t.computeFirstSet=function(){for(var e,t=c(this.grammar.productions.slice(1));!(e=t()).done;){var r=e.value;this._computeFirstSetForNT(r.goal)}},t._computeFirstSetForNT=function(e){var t=this._firstSetNTStack.findIndex(function(t){return t===e});if(-1!==t){for(var r=this.firstSetMap.get(e),n=this._firstSetNTStack.length,i=n-1;i>t;i--){var a=this._firstSetNTStack[i];this.firstSetMap.set(a,r)}return r}this._firstSetNTStack.push(e);var o=this.grammar.getProductionList(e),s=new Set;this.firstSetMap.set(e,s),this.grammar.isNullableNT(e)&&s.add(eV.EPSILON);for(var l,u=c(o);!(l=u()).done;){for(var p=l.value,h=0;h<p.derivation.length;h++){var _=p.derivation[h];if(tA.isTerminal(_)){s.add(_);break}for(var d,f=this._computeFirstSetForNT(_),m=c(f);!(d=m()).done;){var S=d.value;S!==eV.EPSILON&&s.add(S)}if(!this.grammar.isNullableNT(_))break}h===p.derivation.length&&s.add(eV.EPSILON)}return this._firstSetNTStack.pop(),s},e}(),tO=function e(t,r){this.goal=t,this.derivation=r,this.id=e._id++,e.pool.set(this.id,this)};tO._id=0,tO.pool=new Map;var tI=/*#__PURE__*/function(){function e(e,t){this.startSymbol=e,t.unshift(new tO(eK.START,[e])),this.productions=t}var t=e.prototype;return t.getProductionList=function(e){return this.productions.filter(function(t){return t.goal===e})},t.isNullableNT=function(e){return this.productions.find(function(t){return t.goal===e&&t.derivation[0]===eV.EPSILON})},t.getProductionByID=function(e){return tO.pool.get(e)},e.create=function(t,r){return new e(t,r.map(function(e){return new tO(e[0],e.slice(1))}))},e}(),tL=[].concat(tA.createProductionWithOptions(eK.gs_shader_program,[[eK.global_declaration],[eK.gs_shader_program,eK.global_declaration]],eN.GLShaderProgram.pool),tA.createProductionWithOptions(eK.global_declaration,[[eK.precision_specifier],[eK.variable_declaration_statement],[eK.struct_specifier],[eK.function_definition],[eK.global_macro_if_statement],[eK.macro_undef],[ek.MACRO_DEFINE_EXPRESSION]],eN.GlobalDeclaration.pool),tA.createProductionWithOptions(eK.macro_call_symbol,[[ek.MACRO_CALL]],eN.MacroCallSymbol.pool),tA.createProductionWithOptions(eK.macro_call_function,[[eK.macro_call_symbol,eV.LEFT_PAREN,eV.RIGHT_PAREN],[eK.macro_call_symbol,eV.LEFT_PAREN,eK.function_call_parameter_list,eV.RIGHT_PAREN]],eN.MacroCallFunction.pool),tA.createProductionWithOptions(eK.macro_undef,[[ek.MACRO_UNDEF,eV.ID],[ek.MACRO_UNDEF,ek.MACRO_CALL]],eN.MacroUndef.pool),tA.createProductionWithOptions(eK.macro_push_context,[[ek.MACRO_IF,ek.MACRO_CONDITIONAL_EXPRESSION],[ek.MACRO_IFDEF,eV.ID],[ek.MACRO_IFNDEF,eV.ID],[ek.MACRO_IFDEF,eK.macro_call_symbol],[ek.MACRO_IFNDEF,eK.macro_call_symbol]],eN.MacroPushContext.pool),tA.createProductionWithOptions(eK.macro_pop_context,[[ek.MACRO_ENDIF]],eN.MacroPopContext.pool),tA.createProductionWithOptions(eK.macro_elif_expression,[[ek.MACRO_ELIF,ek.MACRO_CONDITIONAL_EXPRESSION]],eN.MacroElifExpression.pool),tA.createProductionWithOptions(eK.macro_else_expression,[[ek.MACRO_ELSE]],eN.MacroElseExpression.pool),tA.createProductionWithOptions(eK.global_macro_declaration,[[eK.global_declaration],[eK.global_macro_declaration,eK.global_declaration]],eN.GlobalMacroDeclaration.pool),tA.createProductionWithOptions(eK.global_macro_if_statement,[[eK.macro_push_context,eK.global_macro_declaration,eK.global_macro_branch],[eK.macro_push_context,eK.global_macro_branch]],eN.GlobalMacroIfStatement.pool),tA.createProductionWithOptions(eK.global_macro_branch,[[eK.macro_pop_context],[eK.macro_elif_expression,eK.global_macro_declaration,eK.global_macro_branch],[eK.macro_else_expression,eK.global_macro_declaration,eK.macro_pop_context],[eK.macro_elif_expression,eK.global_macro_branch],[eK.macro_else_expression,eK.macro_pop_context]],eN.GlobalMacroBranch.pool),tA.createProductionWithOptions(eK.variable_declaration,[[eK.fully_specified_type,eV.ID],[eK.fully_specified_type,eV.ID,eK.array_specifier],[eK.fully_specified_type,eV.ID,eV.EQUAL,eK.initializer]],eN.VariableDeclaration.pool),tA.createProductionWithOptions(eK.variable_declaration_list,[[eK.variable_declaration],[eK.variable_declaration_list,eV.COMMA,eV.ID],[eK.variable_declaration_list,eV.COMMA,eV.ID,eK.array_specifier]],eN.VariableDeclarationList.pool),tA.createProductionWithOptions(eK.variable_declaration_statement,[[eK.variable_declaration_list,eV.SEMICOLON]]),tA.createProductionWithOptions(eK.ext_builtin_type_specifier_nonarray,[[ek.VOID],[ek.FLOAT],[ek.BOOL],[ek.INT],[ek.UINT],[ek.VEC2],[ek.VEC3],[ek.VEC4],[ek.BVEC2],[ek.BVEC3],[ek.BVEC4],[ek.IVEC2],[ek.IVEC3],[ek.IVEC4],[ek.UVEC2],[ek.UVEC3],[ek.UVEC4],[ek.MAT2],[ek.MAT3],[ek.MAT4],[ek.MAT2X3],[ek.MAT2X4],[ek.MAT3X2],[ek.MAT3X4],[ek.MAT4X2],[ek.MAT4X3],[ek.SAMPLER2D],[ek.SAMPLER3D],[ek.SAMPLER_CUBE],[ek.SAMPLER2D_SHADOW],[ek.SAMPLER_CUBE_SHADOW],[ek.SAMPLER2D_ARRAY],[ek.SAMPLER2D_ARRAY_SHADOW],[ek.I_SAMPLER2D],[ek.I_SAMPLER3D],[ek.I_SAMPLER_CUBE],[ek.I_SAMPLER2D_ARRAY],[ek.U_SAMPLER2D],[ek.U_SAMPLER3D],[ek.U_SAMPLER_CUBE],[ek.U_SAMPLER2D_ARRAY]],eN.ExtBuiltinTypeSpecifierNonArray.pool),tA.createProductionWithOptions(eK.type_specifier_nonarray,[[eV.ID],[eK.ext_builtin_type_specifier_nonarray]],eN.TypeSpecifierNonArray.pool),tA.createProductionWithOptions(eK.fully_specified_type,[[eK.type_specifier],[eK.type_qualifier,eK.type_specifier]],eN.FullySpecifiedType.pool),tA.createProductionWithOptions(eK.type_specifier,[[eK.type_specifier_nonarray],[eK.ext_builtin_type_specifier_nonarray,eK.array_specifier]],eN.TypeSpecifier.pool),tA.createProductionWithOptions(eK.type_qualifier,[[eK.single_type_qualifier],[eK.type_qualifier,eK.single_type_qualifier]],eN.TypeQualifier.pool),tA.createProductionWithOptions(eK.single_type_qualifier,[[eK.storage_qualifier],[eK.precision_qualifier],[eK.interpolation_qualifier],[eK.invariant_qualifier],[ek.PRECISE]],eN.SingleTypeQualifier.pool),tA.createProductionWithOptions(eK.storage_qualifier,[[ek.CONST],[ek.IN],[ek.INOUT],[ek.OUT],[ek.CENTROID]]),tA.createProductionWithOptions(eK.interpolation_qualifier,[[ek.SMOOTH],[ek.FLAT]]),tA.createProductionWithOptions(eK.invariant_qualifier,[[ek.INVARIANT]]),tA.createProductionWithOptions(eK.precision_qualifier,[[ek.HIGHP],[ek.MEDIUMP],[ek.LOWP]]),tA.createProductionWithOptions(eK.struct_specifier,[[ek.STRUCT,eV.ID,eV.LEFT_BRACE,eK.struct_declaration_list,eV.RIGHT_BRACE,eV.SEMICOLON],[ek.STRUCT,eV.LEFT_BRACE,eK.struct_declaration_list,eV.RIGHT_BRACE,eV.SEMICOLON]],eN.StructSpecifier.pool),tA.createProductionWithOptions(eK.struct_declaration_list,[[eK.struct_declaration],[eK.struct_declaration_list,eK.struct_declaration]],eN.StructDeclarationList.pool),tA.createProductionWithOptions(eK.struct_declaration,[[eK.type_specifier,eK.struct_declarator_list,eV.SEMICOLON],[eK.type_qualifier,eK.type_specifier,eK.struct_declarator_list,eV.SEMICOLON],[eK.layout_qualifier,eK.type_specifier,eK.struct_declarator,eV.SEMICOLON],[eK.macro_struct_declaration]],eN.StructDeclaration.pool),tA.createProductionWithOptions(eK.macro_struct_declaration,[[eK.macro_push_context,eK.struct_declaration_list,eK.macro_struct_branch],[eK.macro_push_context,eK.macro_struct_branch]],eN.MacroStructDeclaration.pool),tA.createProductionWithOptions(eK.macro_struct_branch,[[eK.macro_pop_context],[eK.macro_elif_expression,eK.struct_declaration_list,eK.macro_struct_branch],[eK.macro_else_expression,eK.struct_declaration_list,eK.macro_pop_context],[eK.macro_elif_expression,eK.macro_struct_branch],[eK.macro_else_expression,eK.macro_pop_context]],eN.MacroStructBranch.pool),tA.createProductionWithOptions(eK.layout_qualifier,[[ek.LAYOUT,eV.LEFT_PAREN,ek.LOCATION,eV.EQUAL,eV.INT_CONSTANT,eV.RIGHT_PAREN]],eN.LayoutQualifier.pool),tA.createProductionWithOptions(eK.struct_declarator_list,[[eK.struct_declarator],[eK.struct_declarator_list,eV.COMMA,eK.struct_declarator]],eN.StructDeclaratorList.pool),tA.createProductionWithOptions(eK.struct_declarator,[[eV.ID],[eV.ID,eK.array_specifier]],eN.StructDeclarator.pool),tA.createProductionWithOptions(eK.array_specifier,[[eV.LEFT_BRACKET,eV.RIGHT_BRACKET],[eV.LEFT_BRACKET,eK.integer_constant_expression,eV.RIGHT_BRACKET]],eN.ArraySpecifier.pool),tA.createProductionWithOptions(eK.integer_constant_expression_operator,[[eV.PLUS],[eV.DASH],[eV.STAR],[eV.SLASH],[eV.PERCENT]],eN.IntegerConstantExpressionOperator.pool),tA.createProductionWithOptions(eK.integer_constant_expression,[[eK.variable_identifier],[eV.INT_CONSTANT],[eK.integer_constant_expression,eK.integer_constant_expression_operator,eV.INT_CONSTANT],[eK.integer_constant_expression,eK.integer_constant_expression_operator,eK.variable_identifier]],eN.IntegerConstantExpression.pool),tA.createProductionWithOptions(eK.conditional_expression,[[eK.logical_or_expression],[eK.logical_or_expression,eV.QUESTION,eK.expression,eV.COLON,eK.assignment_expression]]),tA.createProductionWithOptions(eK.logical_or_expression,[[eK.logical_xor_expression],[eK.logical_or_expression,eV.OR_OP,eK.logical_xor_expression]]),tA.createProductionWithOptions(eK.logical_xor_expression,[[eK.logical_and_expression],[eK.logical_xor_expression,eV.XOR_OP,eK.logical_and_expression]]),tA.createProductionWithOptions(eK.logical_and_expression,[[eK.inclusive_or_expression],[eK.logical_and_expression,eV.AND_OP,eK.inclusive_or_expression]]),tA.createProductionWithOptions(eK.inclusive_or_expression,[[eK.exclusive_or_expression],[eK.inclusive_or_expression,eV.VERTICAL_BAR,eK.exclusive_or_expression]]),tA.createProductionWithOptions(eK.exclusive_or_expression,[[eK.and_expression],[eK.exclusive_or_expression,eV.CARET,eK.and_expression]]),tA.createProductionWithOptions(eK.and_expression,[[eK.equality_expression],[eK.and_expression,eV.AMPERSAND,eK.equality_expression]]),tA.createProductionWithOptions(eK.equality_expression,[[eK.relational_expression],[eK.equality_expression,eV.EQ_OP,eK.relational_expression],[eK.equality_expression,eV.NE_OP,eK.relational_expression]]),tA.createProductionWithOptions(eK.relational_expression,[[eK.shift_expression],[eK.relational_expression,eV.LEFT_ANGLE,eK.shift_expression],[eK.relational_expression,eV.RIGHT_ANGLE,eK.shift_expression],[eK.relational_expression,eV.LE_OP,eK.shift_expression],[eK.relational_expression,eV.GE_OP,eK.shift_expression]]),tA.createProductionWithOptions(eK.shift_expression,[[eK.additive_expression],[eK.shift_expression,eV.LEFT_OP,eK.additive_expression],[eK.shift_expression,eV.RIGHT_OP,eK.additive_expression]]),tA.createProductionWithOptions(eK.additive_expression,[[eK.multiplicative_expression],[eK.additive_expression,eV.PLUS,eK.multiplicative_expression],[eK.additive_expression,eV.DASH,eK.multiplicative_expression]]),tA.createProductionWithOptions(eK.multiplicative_expression,[[eK.unary_expression],[eK.multiplicative_expression,eV.STAR,eK.unary_expression],[eK.multiplicative_expression,eV.SLASH,eK.unary_expression],[eK.multiplicative_expression,eV.PERCENT,eK.unary_expression]]),tA.createProductionWithOptions(eK.unary_expression,[[eK.postfix_expression],[eV.INC_OP,eK.unary_expression],[eV.DEC_OP,eK.unary_expression],[eK.unary_operator,eK.unary_expression]]),tA.createProductionWithOptions(eK.unary_operator,[[eV.PLUS],[eV.DASH],[eV.BANG],[eV.TILDE]]),tA.createProductionWithOptions(eK.postfix_expression,[[eK.primary_expression],[eK.postfix_expression,eV.LEFT_BRACKET,eK.expression,eV.RIGHT_BRACKET],[eK.function_call],[eK.postfix_expression,eV.DOT,eV.ID],[eK.postfix_expression,eV.DOT,eK.function_call],[eK.postfix_expression,eV.INC_OP],[eK.postfix_expression,eV.DEC_OP]],eN.PostfixExpression.pool),tA.createProductionWithOptions(eK.primary_expression,[[eK.variable_identifier],[eV.INT_CONSTANT],[eV.FLOAT_CONSTANT],[ek.True],[ek.False],[eV.LEFT_PAREN,eK.expression,eV.RIGHT_PAREN]],eN.PrimaryExpression.pool),tA.createProductionWithOptions(eK.expression,[[eK.assignment_expression],[eK.expression,eV.COMMA,eK.assignment_expression]],eN.Expression.pool),tA.createProductionWithOptions(eK.assignment_expression,[[eK.conditional_expression],[eK.unary_expression,eK.assignment_operator,eK.assignment_expression]],eN.AssignmentExpression.pool),tA.createProductionWithOptions(eK.assignment_operator,[[eV.EQUAL],[eV.MUL_ASSIGN],[eV.DIV_ASSIGN],[eV.MOD_ASSIGN],[eV.ADD_ASSIGN],[eV.SUB_ASSIGN],[eV.LEFT_ASSIGN],[eV.RIGHT_ASSIGN],[eV.AND_ASSIGN],[eV.XOR_ASSIGN],[eV.OR_ASSIGN]]),tA.createProductionWithOptions(eK.function_call,[[eK.function_call_generic]],eN.FunctionCall.pool),tA.createProductionWithOptions(eK.function_call_generic,[[eK.function_identifier,eV.LEFT_PAREN,eK.function_call_parameter_list,eV.RIGHT_PAREN],[eK.function_identifier,eV.LEFT_PAREN,eV.RIGHT_PAREN],[eK.function_identifier,ek.VOID,eV.RIGHT_PAREN]],eN.FunctionCallGeneric.pool),tA.createProductionWithOptions(eK.function_call_parameter_list,[[eK.assignment_expression],[eK.function_call_parameter_list,eV.COMMA,eK.assignment_expression],[eK.macro_call_arg_block],[eK.function_call_parameter_list,eK.macro_call_arg_block]],eN.FunctionCallParameterList.pool),tA.createProductionWithOptions(eK.macro_call_arg_case_list,[[eK.assignment_expression],[eV.COMMA,eK.assignment_expression],[eK.macro_call_arg_block],[eK.macro_call_arg_case_list,eK.macro_call_arg_block],[eK.macro_call_arg_case_list,eV.COMMA,eK.assignment_expression]],eN.MacroCallArgCaseList.pool),tA.createProductionWithOptions(eK.macro_call_arg_block,[[eK.macro_push_context,eK.macro_call_arg_branch],[eK.macro_push_context,eK.macro_call_arg_case_list,eK.macro_call_arg_branch]],eN.MacroCallArgBlock.pool),tA.createProductionWithOptions(eK.macro_call_arg_branch,[[eK.macro_pop_context],[eK.macro_elif_expression,eK.macro_call_arg_case_list,eK.macro_call_arg_branch],[eK.macro_else_expression,eK.macro_call_arg_case_list,eK.macro_pop_context],[eK.macro_elif_expression,eK.macro_call_arg_branch],[eK.macro_else_expression,eK.macro_pop_context]],eN.MacroCallArgBranch.pool),tA.createProductionWithOptions(eK.function_identifier,[[eK.type_specifier]],eN.FunctionIdentifier.pool),tA.createProductionWithOptions(eK.function_definition,[[eK.function_prototype,eK.compound_statement_no_scope]],eN.FunctionDefinition.pool),tA.createProductionWithOptions(eK.function_prototype,[[eK.function_declarator,eV.RIGHT_PAREN]],eN.FunctionProtoType.pool),tA.createProductionWithOptions(eK.function_declarator,[[eK.function_header],[eK.function_header,eK.function_parameter_list]],eN.FunctionDeclarator.pool),tA.createProductionWithOptions(eK.function_header,[[eK.fully_specified_type,eV.ID,eV.LEFT_PAREN]],eN.FunctionHeader.pool),tA.createProductionWithOptions(eK.function_parameter_list,[[eK.parameter_declaration],[eK.function_parameter_list,eV.COMMA,eK.parameter_declaration],[eK.macro_param_block],[eK.function_parameter_list,eK.macro_param_block]],eN.FunctionParameterList.pool),tA.createProductionWithOptions(eK.macro_param_case_list,[[eK.parameter_declaration],[eV.COMMA,eK.parameter_declaration],[eK.macro_param_block],[eK.macro_param_case_list,eK.macro_param_block],[eK.macro_param_case_list,eV.COMMA,eK.parameter_declaration]],eN.MacroParamCaseList.pool),tA.createProductionWithOptions(eK.macro_param_block,[[eK.macro_push_context,eK.macro_parameter_branch],[eK.macro_push_context,eK.macro_param_case_list,eK.macro_parameter_branch]],eN.MacroParamBlock.pool),tA.createProductionWithOptions(eK.macro_parameter_branch,[[eK.macro_pop_context],[eK.macro_elif_expression,eK.macro_param_case_list,eK.macro_parameter_branch],[eK.macro_else_expression,eK.macro_param_case_list,eK.macro_pop_context],[eK.macro_elif_expression,eK.macro_parameter_branch],[eK.macro_else_expression,eK.macro_pop_context]],eN.MacroParameterBranch.pool),tA.createProductionWithOptions(eK.parameter_declaration,[[eK.type_qualifier,eK.parameter_declarator],[eK.parameter_declarator],[eK.macro_call_symbol],[eK.macro_call_function]],eN.ParameterDeclaration.pool),tA.createProductionWithOptions(eK.parameter_declarator,[[eK.type_specifier,eV.ID],[eK.type_specifier,eV.ID,eK.array_specifier]],eN.ParameterDeclarator.pool),tA.createProductionWithOptions(eK.statement_list,[[eK.statement],[eK.statement_list,eK.statement]],eN.StatementList.pool),tA.createProductionWithOptions(eK.statement,[[eK.compound_statement],[eK.simple_statement]]),tA.createProductionWithOptions(eK.compound_statement_no_scope,[[eV.LEFT_BRACE,eV.RIGHT_BRACE],[eV.LEFT_BRACE,eK.statement_list,eV.RIGHT_BRACE]],eN.CompoundStatementNoScope.pool),tA.createProductionWithOptions(eK.compound_statement,[[eV.LEFT_BRACE,eV.RIGHT_BRACE],[eK.scope_brace,eK.statement_list,eK.scope_end_brace]]),tA.createProductionWithOptions(eK.simple_statement,[[eK.declaration],[eK.expression_statement],[eK.selection_statement],[eK.iteration_statement],[eK.jump_statement],[eK.macro_if_statement],[eK.macro_undef],[ek.MACRO_DEFINE_EXPRESSION]]),tA.createProductionWithOptions(eK.declaration,[[eK.function_prototype,eV.SEMICOLON],[eK.init_declarator_list,eV.SEMICOLON],[ek.PRECISION,eK.precision_qualifier,eK.ext_builtin_type_specifier_nonarray,eV.SEMICOLON],[eK.type_qualifier,eV.ID,eV.SEMICOLON],[eK.type_qualifier,eV.ID,eK.identifier_list,eV.SEMICOLON]],eN.Declaration.pool),tA.createProductionWithOptions(eK.identifier_list,[[eV.COMMA,eV.ID],[eK.identifier_list,eV.COMMA,eV.ID]],eN.IdentifierList.pool),tA.createProductionWithOptions(eK.init_declarator_list,[[eK.single_declaration],[eK.init_declarator_list,eV.COMMA,eV.ID],[eK.init_declarator_list,eV.COMMA,eV.ID,eK.array_specifier],[eK.init_declarator_list,eV.COMMA,eV.ID,eK.array_specifier,eV.EQUAL,eK.initializer],[eK.init_declarator_list,eV.COMMA,eV.ID,eV.EQUAL,eK.initializer]],eN.InitDeclaratorList.pool),tA.createProductionWithOptions(eK.single_declaration,[[eK.fully_specified_type,eV.ID],[eK.fully_specified_type,eV.ID,eK.array_specifier],[eK.fully_specified_type,eV.ID,eK.array_specifier,eV.EQUAL,eK.initializer],[eK.fully_specified_type,eV.ID,eV.EQUAL,eK.initializer]],eN.SingleDeclaration.pool),tA.createProductionWithOptions(eK.initializer,[[eK.assignment_expression],[eV.LEFT_BRACE,eK.initializer_list,eV.RIGHT_BRACE]]),tA.createProductionWithOptions(eK.initializer_list,[[eK.initializer],[eK.initializer_list,eV.COMMA,eK.initializer]]),tA.createProductionWithOptions(eK.expression_statement,[[eV.SEMICOLON],[eK.expression,eV.SEMICOLON]]),tA.createProductionWithOptions(eK.selection_statement,[[ek.IF,eV.LEFT_PAREN,eK.expression,eV.RIGHT_PAREN,eK.statement],[ek.IF,eV.LEFT_PAREN,eK.expression,eV.RIGHT_PAREN,eK.statement,ek.ELSE,eK.statement]]),tA.createProductionWithOptions(eK.iteration_statement,[[ek.WHILE,eV.LEFT_PAREN,eK.condition,eV.RIGHT_PAREN,eK.statement],[ek.FOR,eV.LEFT_PAREN,eK.for_init_statement,eK.for_rest_statement,eV.RIGHT_PAREN,eK.statement]]),tA.createProductionWithOptions(eK.precision_specifier,[[ek.PRECISION,eK.precision_qualifier,eK.ext_builtin_type_specifier_nonarray,eV.SEMICOLON]],eN.PrecisionSpecifier.pool),tA.createProductionWithOptions(eK.for_init_statement,[[eK.expression_statement],[eK.declaration]]),tA.createProductionWithOptions(eK.condition,[[eK.expression],[eK.fully_specified_type,eV.ID,eV.EQUAL,eK.initializer]]),tA.createProductionWithOptions(eK.for_rest_statement,[[eK.conditionopt,eV.SEMICOLON],[eK.conditionopt,eV.SEMICOLON,eK.expression]]),tA.createProductionWithOptions(eK.conditionopt,[[eV.EPSILON],[eK.condition]]),tA.createProductionWithOptions(eK.jump_statement,[[ek.CONTINUE,eV.SEMICOLON],[ek.BREAK,eV.SEMICOLON],[ek.RETURN,eV.SEMICOLON],[ek.RETURN,eK.expression,eV.SEMICOLON],[ek.DISCARD,eV.SEMICOLON]],eN.JumpStatement.pool),tA.createProductionWithOptions(eK.scope_brace,[[eV.LEFT_BRACE]],eN.ScopeBrace.pool),tA.createProductionWithOptions(eK.scope_end_brace,[[eV.RIGHT_BRACE]],eN.ScopeEndBrace.pool),tA.createProductionWithOptions(eK.variable_identifier,[[eV.ID],[eK.macro_call_symbol],[eK.macro_call_function]],eN.VariableIdentifier.pool),tA.createProductionWithOptions(eK.macro_if_statement,[[eK.macro_push_context,eK.statement_list,eK.macro_branch],[eK.macro_push_context,eK.macro_branch]],eN.MacroIfStatement.pool),tA.createProductionWithOptions(eK.macro_branch,[[eK.macro_pop_context],[eK.macro_elif_expression,eK.statement_list,eK.macro_branch],[eK.macro_else_expression,eK.statement_list,eK.macro_pop_context],[eK.macro_elif_expression,eK.macro_branch],[eK.macro_else_expression,eK.macro_pop_context]],eN.MacroBranch.pool)),tP=function(e){for(var t=0;t<tL.length;t++){var r=tL[t][1];r&&e.addTranslationRule(t,r)}},tR=/*#__PURE__*/function(){function e(e,t,r){this._traceBackStack=[],this.actionTable=e,this.gotoTable=t,this.grammar=r,this.sematicAnalyzer=new te}return e.prototype.parse=function(e,r){this.sematicAnalyzer.reset(r);var n=performance.now(),a=this._traceBackStack,o=this.sematicAnalyzer;a.push(0);for(var s=e.next(),c=0;;){c+=1;var l=s.value,u=this.stateActionTable.get(l.type);if((null==u?void 0:u.action)===tT.Shift)a.push(l,u.target),s=e.next();else{if((null==u?void 0:u.action)===tT.Accept)return t.Logger.info("[Task - AST compilation] Accept! State automata run "+c+" times! cost time "+(performance.now()-n)+"ms"),null==o.acceptRule||o.acceptRule.call(o,o),o.semanticStack.pop();if((null==u?void 0:u.action)!==tT.Reduce)return eF.createGSError("Unexpected token "+l.lexeme,e1.CompilationError,tk._processingPassText,l.location),null;for(var p=u.target,h=this.grammar.getProductionByID(p),_=o.getTranslationRule(h.id),d=[],f=h.derivation.length-1;f>=0;f--)if(h.derivation[f]!==eV.EPSILON){a.pop();var m=a.pop();if(i(m,eB))d.unshift(m);else{var S=o.semanticStack.pop();d.unshift(S)}}null==_||_.apply(void 0,[].concat([o],d));var g=this.stateGotoTable;a.push(h.goal);var v=null==g?void 0:g.get(h.goal);a.push(v);continue}}},e.create=function(){if(!this._singleton){var t=tI.create(eK.gs_shader_program,tL.map(function(e){return e[0]})),r=new tb(t);r.generate(),this._singleton=new e(r.actionTable,r.gotoTable,t),tP(this._singleton.sematicAnalyzer)}return this._singleton},o(e,[{key:"curState",get:function(){return this._traceBackStack[this._traceBackStack.length-1]}},{key:"stateActionTable",get:function(){return this.actionTable.get(this.curState)}},{key:"stateGotoTable",get:function(){return this.gotoTable.get(this.curState)}}]),e}();function tM(){return(tM=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var tN=/*#__PURE__*/function(){function e(){}return e.createRenderStates=function(){return{constantMap:{},variableMap:{}}},e.createShaderSource=function(e){return{name:e,subShaders:[],pendingContents:[],renderStates:this.createRenderStates()}},e.createSubShaderSource=function(e){return{name:e,passes:[],pendingContents:[],tags:{},renderStates:this.createRenderStates()}},e.createShaderPassSource=function(e){return{name:e,pendingContents:[],tags:{},renderStates:this.createRenderStates()}},e.createUsePass=function(e){return{name:e,pendingContents:[],isUsePass:!0,tags:{},renderStates:this.createRenderStates()}},e}(),tD=/*#__PURE__*/function(){function e(e,t,r){this.ident=e,this.type=t,this.value=r,this.isInMacroBranch=!1}var t=e.prototype;return t.set=function(e,t,r){this.ident=e,this.type=t,this.value=r},t.equal=function(e){return this.type===e.type},e}(),tG=/*#__PURE__*/function(e){function r(){var t;return t=e.apply(this,arguments)||this,t.hasPendingContent=!1,t}n(r,e);var i=r.prototype;return i.scanNumber=function(){this.skipCommentsAndSpace();var e=this._currentIndex,t=this._source,n=this._currentIndex;return n=r._scanDigits(t,n),"."===t[n]&&(n=r._scanDigits(t,n+1)),this.advance(n-this._currentIndex),Number(t.substring(e,n))},i.scanColor=function(){this.scanLexeme("(");var e=0,r=0,n=0,i=1;return e=this.scanNumber(),this.skipCommentsAndSpace(),")"!==this.peek(1)&&(this.scanLexeme(","),r=this.scanNumber(),this.skipCommentsAndSpace(),")"!==this.peek(1)&&(this.scanLexeme(","),n=this.scanNumber(),this.skipCommentsAndSpace(),")"!==this.peek(1)&&(this.scanLexeme(","),i=this.scanNumber(),this.skipCommentsAndSpace()))),this.scanLexeme(")"),new t.Color(e,r,n,i)},i.scanToken=function(){for(;;){if(this.skipCommentsAndSpace(),this.isEnd())return;var e=this.getShaderPosition(0);if(t_.isAlpha(this.getCurCharCode())){var t=this._scanWord(e);if(null!==t)return t;this.hasPendingContent=!0;continue}var n=this.getCurChar(),i=r._symbolLexemeTable[n];if(void 0!==i){this.advance(1);var a=eB.pool.get();return a.set(i,n,e),a}this.advance(1)}},i.createCompileError=function(e,t){return eF.createGSError(e,e1.CompilationError,this.source,null!=t?t:this.getShaderPosition(0))},i._scanWord=function(e){for(;t_.isAlnum(this.getCurCharCode())&&!this.isEnd();)this.advance(1);var t,n=this.getShaderPosition(0);if(!this._validateWordBoundaries(e.index,n.index))return null;var i=this._source.substring(e.index,n.index),a=null!=(t=r._keywordLexemeTable[i])?t:eV.ID,o=tk.createRange(e,n),s=eB.pool.get();return s.set(a,i,o),s},i._validateWordBoundaries=function(e,t){var r=this._source;if(e>0){var n=r.charCodeAt(e-1);if(!this._isValidWordBoundary(n))return!1}if(t<r.length){var i=r.charCodeAt(t);if(!this._isValidWordBoundary(i))return!1}return!0},i._isValidWordBoundary=function(e){return t_.isWhiteSpaceChar(e,!0)||r._isWordSeparatorChar(e)},r._isWordSeparatorChar=function(e){return 123===e||125===e||61===e||59===e||46===e||91===e||40===e},r._scanDigits=function(e,t){for(var r=t;r<e.length;){var n=e.charCodeAt(r);if(t_.isDigit(n))r++;else break}return r},r}(t_);tG._keywordLexemeTable={RenderQueueType:ek.GSRenderQueueType,BlendState:ek.GSBlendState,DepthState:ek.GSDepthState,StencilState:ek.GSStencilState,RasterState:ek.GSRasterState,EditorProperties:ek.GSEditorProperties,EditorMacros:ek.GSEditorMacros,Editor:ek.GSEditor,Tags:ek.GSTags,VertexShader:ek.GSVertexShader,FragmentShader:ek.GSFragmentShader,SubShader:ek.GSSubShader,Pass:ek.GSPass,BlendFactor:ek.GSBlendFactor,BlendOperation:ek.GSBlendOperation,Bool:ek.GSBool,Number:ek.GSNumber,Color:ek.GSColor,CompareFunction:ek.GSCompareFunction,StencilOperation:ek.GSStencilOperation,CullMode:ek.GSCullMode,UsePass:ek.GSUsePass,true:ek.True,false:ek.False},tG._symbolLexemeTable={"{":ek.LeftBrace,"}":ek.RightBrace,"=":ek.Equal};var tV=/*#__PURE__*/function(){function e(){}return e.parse=function(e){var r=performance.now();this.errors.length=0,this._symbolTableStack.clear(),this._pushScope();var n=this._lexer;n.setSource(e);for(var i=this._parseShader(n),a=i.pendingContents,o=i.renderStates,s=0,c=i.subShaders.length;s<c;s++)for(var l=i.subShaders[s],u=a.concat(l.pendingContents),p=tM({},o.constantMap,l.renderStates.constantMap),h=tM({},o.variableMap,l.renderStates.variableMap),_=0,d=l.passes.length;_<d;_++){var f=l.passes[_];if(Object.assign(f.renderStates.constantMap,p),Object.assign(f.renderStates.variableMap,h),!f.isUsePass){var m=u.concat(f.pendingContents);f.contents=m.map(function(e){return e.content}).join("\n")}}return t.Logger.info("[Task - Source compilation] cost time "+(performance.now()-r)+"ms"),i},e._parseShader=function(e){e.scanLexeme("Shader");var t=e.scanPairedChar('"','"',!1,!1),r=tN.createShaderSource(t);e.scanLexeme("{");var n=1;e.skipCommentsAndSpace();for(var i=e.getShaderPosition(0),a=r.pendingContents;;){var o=e.scanToken();switch(o.type){case ek.GSSubShader:this._addPendingContents(i,o.lexeme.length,a);var s=this._parseSubShader();r.subShaders.push(s),i=e.getShaderPosition(0);break;case ek.GSEditorProperties:case ek.GSEditorMacros:case ek.GSEditor:this._addPendingContents(i,o.lexeme.length,a),e.scanPairedChar("{","}",!0,!1),i=e.getShaderPosition(0);break;case ek.LeftBrace:++n;break;case ek.RightBrace:if(0==--n)return this._addPendingContents(i,o.lexeme.length,a),this._popScope(),r;break;default:i=this._parseRenderState(o,i,a,r.renderStates)}}},e._parseRenderStateDeclarationOrAssignment=function(e,t){var r=this._lexer,n=r.scanToken();if(n.type===eV.ID){r.scanLexeme("{");var i=this._parseRenderStateProperties(t.lexeme),a=new tD(n.lexeme,t.type,i);this._symbolTableStack.insert(a)}else if("="===n.lexeme){var o=r.scanToken();r.scanLexeme(";");var s=this._lookupSymbol;s.set(o.lexeme,t.type);var c=this._symbolTableStack.lookup(s);(null==c?void 0:c.value)||this._createCompileError('Invalid "'+t.lexeme+'" variable: '+o.lexeme,o.location);var l=c.value;Object.assign(e.constantMap,l.constantMap),Object.assign(e.variableMap,l.variableMap);return}},e._parseVariableDeclaration=function(){var e=this._lexer,t=e.scanToken();e.scanLexeme(";");var r=new tD(t.lexeme,t.type);this._symbolTableStack.insert(r)},e._pushScope=function(){var e=new eJ;this._symbolTableStack.pushScope(e)},e._popScope=function(){this._symbolTableStack.popScope()},e._parseRenderStateProperties=function(e){for(var t=this._lexer,r=tN.createRenderStates();"}"!==t.getCurChar();)this._parseRenderStateProperty(e,r),t.skipCommentsAndSpace();return t.advance(1),r},e._createCompileError=function(e,t){this._lexer.createCompileError(e,t)},e._parseRenderStateProperty=function(e,r){var n=this._lexer,i=n.scanToken().lexeme,a=i;if("BlendState"===e&&"BlendColor"!==i&&"AlphaToCoverage"!==i){var o=0,s=n.scanTwoExpectedLexemes("[","=");"["===s?(o=n.scanNumber(),n.scanLexeme("]"),n.scanLexeme("=")):"="!==s&&this._createCompileError("Invalid syntax, expect '[' or '=', but got unexpected token"),a+=o}else n.scanLexeme("=");var c=t.RenderStateElementKey[e+a];void 0===c&&this._createCompileError("Invalid render state property "+i),n.skipCommentsAndSpace();var l=n.getCurCharCode();if(t_.isDigit(l)||46===l)h=n.scanNumber();else{var u=n.scanToken(),p=u.type;if(p===ek.True)h=!0;else if(p===ek.False)h=!1;else if(p===ek.GSColor)h=n.scanColor();else if("."===n.getCurChar()){n.advance(1);var h,_,d=n.scanToken();void 0==(h=null==(_=this._renderStateConstMap[u.lexeme])?void 0:_[d.lexeme])&&this._createCompileError("Invalid engine constant: "+u.lexeme+"."+d.lexeme,d.location)}else{h=u.lexeme;var f=this._lookupSymbol;f.set(u.lexeme,eV.ID),this._symbolTableStack.lookup(f)||this._createCompileError("Invalid "+e+" variable: "+u.lexeme,u.location)}}n.scanLexeme(";"),"string"==typeof h?r.variableMap[c]=h:r.constantMap[c]=h},e._parseRenderQueueDeclarationOrAssignment=function(e){var r=this._lexer,n=r.scanToken();if(n.type===eV.ID){r.scanLexeme(";");var i=new tD(n.lexeme,ek.GSRenderQueueType);this._symbolTableStack.insert(i);return}"="!==n.lexeme&&this._createCompileError("Invalid syntax, expect character '=', but got "+n.lexeme,n.location);var a=r.scanToken();r.scanLexeme(";");var o=this._renderStateConstMap.RenderQueueType[a.lexeme],s=t.RenderStateElementKey.RenderQueueType;if(void 0==o){e.variableMap[s]=a.lexeme;var c=this._lookupSymbol;c.set(a.lexeme,ek.GSRenderQueueType),this._symbolTableStack.lookup(c)||this._createCompileError("Invalid RenderQueueType variable: "+a.lexeme,a.location)}else e.constantMap[s]=o},e._addPendingContents=function(e,t,r){var n=this._lexer;if(n.hasPendingContent){var i=n.currentIndex-t;r.push({range:{start:e,end:tM({},n.getShaderPosition(0),{index:i-1})},content:n.source.substring(e.index,i-1)}),n.hasPendingContent=!1}},e._parseSubShader=function(){var e=this._lexer;this._pushScope();var t=1,r=e.scanPairedChar('"','"',!1,!1),n=tN.createSubShaderSource(r);e.scanLexeme("{"),e.skipCommentsAndSpace();for(var i=e.getShaderPosition(0);;){var a=e.scanToken();switch(a.type){case ek.GSPass:this._addPendingContents(i,a.lexeme.length,n.pendingContents);var o=this._parsePass();n.passes.push(o),i=e.getShaderPosition(0);break;case ek.GSUsePass:this._addPendingContents(i,a.lexeme.length,n.pendingContents);var s=e.scanPairedChar('"','"',!1,!1);n.passes.push(tN.createUsePass(s)),i=e.getShaderPosition(0);break;case ek.LeftBrace:++t;break;case ek.RightBrace:if(0==--t)return this._addPendingContents(i,a.lexeme.length,n.pendingContents),this._popScope(),n;break;default:i=this._parseRenderStateAndTags(a,i,n.pendingContents,n.renderStates,n.tags)}}},e._parseTags=function(e){var t=this._lexer;for(t.scanLexeme("{");;){var r=t.scanToken();t.scanLexeme("=");var n=t.scanPairedChar('"','"',!1,!1);if(t.skipCommentsAndSpace(),e[r.lexeme]=n,"}"===t.peek(1)){t.advance(1);return}t.scanLexeme(",")}},e._parsePass=function(){this._pushScope();var e=this._lexer,t=e.scanPairedChar('"','"',!1,!1),r=tN.createShaderPassSource(t);e.scanLexeme("{");var n=1;e.skipCommentsAndSpace();for(var i=e.getShaderPosition(0);;){var a=e.scanToken();switch(a.type){case ek.GSVertexShader:case ek.GSFragmentShader:this._addPendingContents(i,a.lexeme.length,r.pendingContents),e.scanLexeme("=");var o=e.scanToken();r[a.lexeme]&&eF.createGSError("Reassign main entry",e1.CompilationError,e.source,e.getShaderPosition(0)),r[a.type===ek.GSVertexShader?"vertexEntry":"fragmentEntry"]=o.lexeme,e.scanLexeme(";"),i=e.getShaderPosition(0);break;case ek.LeftBrace:++n;break;case ek.RightBrace:if(0==--n)return this._addPendingContents(i,a.lexeme.length,r.pendingContents),this._popScope(),r;break;default:i=this._parseRenderStateAndTags(a,i,r.pendingContents,r.renderStates,r.tags)}}},e._parseRenderStateAndTags=function(e,t,r,n,i){return e.type===ek.GSTags?(this._addPendingContents(t,e.lexeme.length,r),this._parseTags(i),t=this._lexer.getShaderPosition(0)):t=this._parseRenderState(e,t,r,n),t},e._parseRenderState=function(e,t,r,n){switch(e.type){case ek.GSBlendState:case ek.GSDepthState:case ek.GSRasterState:case ek.GSStencilState:this._addPendingContents(t,e.lexeme.length,r),this._parseRenderStateDeclarationOrAssignment(n,e),t=this._lexer.getShaderPosition(0);break;case ek.GSBlendFactor:case ek.GSBlendOperation:case ek.GSBool:case ek.GSNumber:case ek.GSColor:case ek.GSCompareFunction:case ek.GSStencilOperation:case ek.GSCullMode:this._addPendingContents(t,e.lexeme.length,r),this._parseVariableDeclaration(),t=this._lexer.getShaderPosition(0);break;case ek.GSRenderQueueType:this._addPendingContents(t,e.lexeme.length,r),this._parseRenderQueueDeclarationOrAssignment(n),t=this._lexer.getShaderPosition(0);break;default:this._lexer.hasPendingContent=!0}return t},e}();tV.errors=[],tV._renderStateConstMap={RenderQueueType:t.RenderQueueType,CompareFunction:t.CompareFunction,StencilOperation:t.StencilOperation,BlendOperation:t.BlendOperation,BlendFactor:t.BlendFactor,CullMode:t.CullMode},tV._symbolTableStack=new eZ,tV._lexer=new tG,tV._lookupSymbol=new tD("",null);var tk=/*#__PURE__*/function(){function e(){}var r=e.prototype;return r._parseShaderSource=function(e){return eF.clearAllShaderLabObjectPool(),tV.parse(e)},r._parseShaderPass=function(r,n,i,a,o){var s=performance.now(),c={};eW._repeatIncludeSet.clear();var l=eW.parse(r,o,c);t.Logger.info("[Task - Pre processor] cost time "+(performance.now()-s)+"ms");var u=new td(l,c).tokenize(),p=e._parser;e._processingPassText=l;var h=p.parse(u,c);if(h){var _=a===t.ShaderLanguage.GLSLES100?tu.getVisitor():th.getVisitor(),d=performance.now(),f=_.visitShaderProgram(h,n,i);return t.Logger.info("[Task - CodeGen] cost time: "+(performance.now()-d)+"ms"),t.Logger.info("[Task - Total compilation] cost time: "+(performance.now()-s)+"ms"),e._processingPassText=void 0,f}},r._parseMacros=function(e,r){var n=performance.now(),i=tE.parse(e,r);return t.Logger.info("[Task - parse macros] cost time: "+(performance.now()-n)+"ms"),i},e.createPosition=function(e,t,r){var n=this._shaderPositionPool.get();return n.set(e),n},e.createRange=function(e,t){var r=this._shaderRangePool.get();return r.set(e,t),r},e}();tk._parser=tR.create(),tk._shaderPositionPool=eF.createObjectPool(eG),tk._shaderRangePool=eF.createObjectPool(eD);var tF="1.6.0-beta.0";console.log("Galacean Engine ShaderLab Version: "+tF+" | Mode: Release"),e.GSError=e2,e.GSErrorName=e1,e.ShaderLab=tk,e.version=tF,Object.defineProperty(e,"__esModule",{value:!0})});
2
2
  //# sourceMappingURL=browser.min.js.map