mirror of
https://github.com/gpujs/gpu.js.git
synced 2026-01-18 16:04:10 +00:00
19 lines
145 KiB
JavaScript
19 lines
145 KiB
JavaScript
/**
|
||
* gpu.js
|
||
* http://gpu.rocks/
|
||
*
|
||
* GPU Accelerated JavaScript
|
||
*
|
||
* @version 0.0.0
|
||
* @date Mon Jul 24 2017 11:49:41 GMT+0800 (+08)
|
||
*
|
||
* @license MIT
|
||
* The MIT License
|
||
*
|
||
* Copyright (c) 2017 gpu.js Team
|
||
*/
|
||
"use strict";!function t(e,n,i){function r(a,o){if(!n[a]){if(!e[a]){var u="function"==typeof require&&require;if(!o&&u)return u(a,!0);if(s)return s(a,!0);var h=new Error("Cannot find module '"+a+"'");throw h.code="MODULE_NOT_FOUND",h}var l=n[a]={exports:{}};e[a][0].call(l.exports,function(t){var n=e[a][1][t];return r(n?n:t)},l,l.exports,t,e,n,i)}return n[a].exports}for(var s="function"==typeof require&&require,a=0;a<i.length;a++)r(i[a]);return r}({1:[function(t,e,n){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),o=t("../function-builder-base"),u=t("./function-node");e.exports=function(t){function e(){return i(this,e),r(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return s(e,t),a(e,[{key:"addFunction",value:function(t,e,n,i){this.addFunctionNode(new u(t,e,n,i).setAddFunction(this.addFunction.bind(this)))}},{key:"getPrototypeString",value:function(){var t="";for(var e in this.nodeMap)if(this.nodeMap.hasOwnProperty(e)){var n=this.nodeMap[e];t+=n.isSubKernel?"var "+n.functionName+" = "+n.jsFunctionString.replace("return","return "+n.functionName+"Result[this.thread.z][this.thread.y][this.thread.x] =")+".bind(this);\n":"var "+n.functionName+" = "+n.jsFunctionString+";\n"}return t}},{key:"addSubKernel",value:function(t,e,n){var i=new u(null,t,e,n).setAddFunction(this.addFunction.bind(this));i.isSubKernel=!0,this.addFunctionNode(i)}}]),e}(o)},{"../function-builder-base":6,"./function-node":2}],2:[function(t,e,n){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),o=t("../function-node-base");e.exports=function(t){function e(){return i(this,e),r(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return s(e,t),a(e,[{key:"generate",value:function(t){this.functionString=this.jsFunctionString}},{key:"getFunctionPrototypeString",value:function(t){return this.functionString}}]),e}(o)},{"../function-node-base":7}],3:[function(t,e,n){var i=t("../../core/utils"),r=t("../kernel-run-shortcut");e.exports=function(t,e){return"() => {\n "+r.toString()+";\n const utils = {\n allPropertiesOf: function "+i.allPropertiesOf.toString()+",\n clone: function "+i.clone.toString()+",\n /*splitArray: function "+i.splitArray.toString()+",\n getArgumentType: function "+i.getArgumentType.toString()+",\n getDimensions: function "+i.getDimensions.toString()+",\n dimToTexSize: function "+i.dimToTexSize.toString()+",\n copyFlatten: function "+i.copyFlatten.toString()+",\n flatten: function "+i.flatten.toString()+",\n systemEndianness: '"+i.systemEndianness()+"',\n initWebGl: function "+i.initWebGl.toString()+",\n isArray: function "+i.isArray.toString()+"*/\n };\n class "+(e||"Kernel")+" {\n constructor() { \n this.argumentsLength = 0;\n this._canvas = null;\n this._webGl = null;\n this.built = false;\n this.program = null;\n this.paramNames = "+JSON.stringify(t.paramNames)+";\n this.paramTypes = "+JSON.stringify(t.paramTypes)+";\n this.texSize = "+JSON.stringify(t.texSize)+";\n this.dimensions = "+JSON.stringify(t.dimensions)+";\n this._kernelString = `"+t._kernelString+"`;\n\t\t this.run = function() {\n this.run = null;\n this.build();\n return this.run.apply(this, arguments);\n }.bind(this);\n this.thread = {\n x: 0,\n y: 0,\n z: 0\n };\n this.runDimensions = {\n x: null,\n y: null,\n z: null\n };\n }\n setCanvas(canvas) { this._canvas = canvas; return this; }\n setWebGl(webGl) { this._webGl = webGl; return this; }\n "+t.build.toString()+"\n run () { "+t.kernelString+" }\n getKernelString() { return this._kernelString; }\n };\n return kernelRunShortcut(new Kernel());\n };"}},{"../../core/utils":24,"../kernel-run-shortcut":9}],4:[function(t,e,n){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),o=t("../kernel-base"),u=t("../../core/utils"),h=t("./kernel-string");e.exports=function(t){function e(t,n){i(this,e);var s=r(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return s._fnBody=u.getFunctionBodyFromString(t),s.functionBuilder=n.functionBuilder,s._fn=null,s.run=null,s._canvasCtx=null,s._imageData=null,s._colorData=null,s._kernelString=null,s.thread={x:0,y:0,z:0},s.runDimensions={x:null,y:null,z:null},s.run=function(){return this.run=null,this.build(),this.run.apply(this,arguments)}.bind(s),s}return s(e,t),a(e,[{key:"validateOptions",value:function(){if(!this.dimensions||0===this.dimensions.length){if(1!==arguments.length)throw"Auto dimensions only supported for kernels with only one input";var t=u.getArgumentType(arguments[0]);if("Array"===t)this.dimensions=u.getDimensions(t);else{if("Texture"!==t)throw"Auto dimensions not supported for input type: "+t;this.dimensions=arguments[0].dimensions}}}},{key:"build",value:function(){for(var t=[],e=0;e<arguments.length;e++){var n=u.getArgumentType(arguments[e]);if("Array"===n||"Number"===n)t[e]=arguments[e];else{if("Texture"!==n)throw"Input type not supported (CPU): "+arguments[e];t[e]=arguments[e].toArray()}}for(var i=this.threadDim||(this.threadDim=u.clone(this.dimensions));i.length<3;)i.push(1);if(this.graphical){var r=this.getCanvas();this.runDimensions.x=r.width=i[0],this.runDimensions.y=r.height=i[1],this._canvasCtx=r.getContext("2d"),this._imageData=this._canvasCtx.createImageData(i[0],i[1]),this._colorData=new Uint8ClampedArray(i[0]*i[1]*4)}var s=this.getKernelString();this.debug&&(console.log("Options:"),console.dir(this),console.log("Function output:"),console.log(s)),this.kernelString=s,this.run=new Function([],s).bind(this)()}},{key:"color",value:function(t,e,n,i){"undefined"==typeof i&&(i=1),t=Math.floor(255*t),e=Math.floor(255*e),n=Math.floor(255*n),i=Math.floor(255*i);var r=this.runDimensions.x,s=this.runDimensions.y,a=this.thread.x,o=s-this.thread.y-1,u=a+o*r;this._colorData[4*u+0]=t,this._colorData[4*u+1]=e,this._colorData[4*u+2]=n,this._colorData[4*u+3]=i}},{key:"getKernelString",value:function(){var t=this;if(null!==this._kernelString)return this._kernelString;for(var e=(this.paramNames,this.functionBuilder),n=this.threadDim||(this.threadDim=u.clone(this.dimensions));n.length<3;)n.push(1);if(null!==this.subKernels){this.subKernelOutputTextures=[],this.subKernelOutputVariableNames=[];for(var i=0;i<this.subKernels.length;i++){var r=this.subKernels[i];e.addSubKernel(r),this.subKernelOutputVariableNames.push(r.name+"Result")}}else if(null!==this.subKernelProperties){this.subKernelOutputVariableNames=[];var s=0;for(var a in this.subKernelProperties)if(this.subKernelProperties.hasOwnProperty(a)){var o=this.subKernelProperties[a];e.addSubKernel(o),this.subKernelOutputVariableNames.push(o.name+"Result"),s++}}return this._kernelString="\n "+(this.constants?Object.keys(this.constants).map(function(e){return"var "+e+" = "+t.constants[e]}).join(";\n")+";\n":"")+"\n "+(null===this.subKernelOutputVariableNames?"":this.subKernelOutputVariableNames.map(function(t){return" var "+t+" = null;\n"}).join(""))+"\n "+e.getPrototypeString()+"\n var fn = function fn("+this.paramNames.join(", ")+") { "+this._fnBody+" }.bind(this);\n return function ("+this.paramNames.join(", ")+") {\n var ret = new Array("+n[2]+");\n "+(null===this.subKernelOutputVariableNames?"":this.subKernelOutputVariableNames.map(function(t){return" "+t+" = new Array("+n[2]+");\n"}).join(""))+"\n for (this.thread.z = 0; this.thread.z < "+n[2]+"; this.thread.z++) {\n ret[this.thread.z] = new Array("+n[1]+");\n "+(null===this.subKernelOutputVariableNames?"":this.subKernelOutputVariableNames.map(function(t){return" "+t+"[this.thread.z] = new Array("+n[1]+");\n"}).join(""))+"\n for (this.thread.y = 0; this.thread.y < "+n[1]+"; this.thread.y++) {\n ret[this.thread.z][this.thread.y] = new Array("+n[0]+");\n "+(null===this.subKernelOutputVariableNames?"":this.subKernelOutputVariableNames.map(function(t){return" "+t+"[this.thread.z][this.thread.y] = new Array("+n[0]+");\n"}).join(""))+"\n for (this.thread.x = 0; this.thread.x < "+n[0]+"; this.thread.x++) {\n ret[this.thread.z][this.thread.y][this.thread.x] = fn("+this.paramNames.join(", ")+");\n }\n }\n }\n \n if (this.graphical) {\n this._imageData.data.set(this._colorData);\n this._canvasCtx.putImageData(this._imageData, 0, 0);\n return;\n }\n \n if (this.dimensions.length === 1) {\n ret = ret[0][0];\n "+(null===this.subKernelOutputVariableNames?"":this.subKernelOutputVariableNames.map(function(t){return" "+t+" = "+t+"[0][0];\n"}).join(""))+"\n \n } else if (this.dimensions.length === 2) {\n ret = ret[0];\n "+(null===this.subKernelOutputVariableNames?"":this.subKernelOutputVariableNames.map(function(t){return" "+t+" = "+t+"[0];\n"}).join(""))+"\n }\n \n "+(null===this.subKernelOutputVariableNames?"return ret;\n":null!==this.subKernels?"var result = [\n "+this.subKernelOutputVariableNames.map(function(t){return""+t}).join(",\n")+"\n ];\n result.result = ret;\n return result;\n":"return {\n result: ret,\n "+Object.keys(this.subKernelProperties).map(function(e,n){return e+": "+t.subKernelOutputVariableNames[n]}).join(",\n")+"\n };")+"\n }.bind(this);"}},{key:"toString",value:function(){return h(this)}},{key:"precompileKernelObj",value:function(t){var e=this.threadDim||(this.threadDim=u.clone(this.dimensions));return{threadDim:e}}}],[{key:"compileKernel",value:function(t){for(var e=t.threadDim;e.length<3;)e.push(1)}}]),e}(o)},{"../../core/utils":24,"../kernel-base":8,"./kernel-string":3}],5:[function(t,e,n){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),o=(t("../../core/utils"),t("../runner-base")),u=t("./kernel"),h=t("./function-builder");e.exports=function(t){function e(t){i(this,e);var n=r(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,new h,t));return n.Kernel=u,n.kernel=null,n}return s(e,t),a(e,[{key:"getMode",value:function(){return"cpu"}}]),e}(o)},{"../../core/utils":24,"../runner-base":10,"./function-builder":1,"./kernel":4}],6:[function(t,e,n){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t){return Math.floor(t+.5)}var s=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}();e.exports=function(){function t(e){i(this,t),this.nodeMap={},this.gpu=e,this.rootKernel=null}return s(t,[{key:"addFunction",value:function(t,e,n,i){throw new Error("addFunction not supported on base")}},{key:"addFunctionNode",value:function(t){this.nodeMap[t.functionName]=t,t.isRootKernel&&(this.rootKernel=t)}},{key:"traceFunctionCalls",value:function(t,e,n){t=t||"kernel",e=e||[];var i=this.nodeMap[t];if(i)if(e.indexOf(t)>=0);else{e.push(t),n&&(i.parent=n,i.constants=n.constants),i.getFunctionString();for(var r=0;r<i.calledFunctions.length;++r)this.traceFunctionCalls(i.calledFunctions[r],e,i)}return e}},{key:"polyfillStandardFunctions",value:function(){this.addFunction("round",r)}}],[{key:"round",value:function(t){return r(t)}}]),t}()},{}],7:[function(require,module,exports){function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_createClass=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),utils=require("../core/utils"),acorn=require("acorn");module.exports=function(){function BaseFunctionNode(t,e,n,i,r){if(_classCallCheck(this,BaseFunctionNode),this.calledFunctions=[],this.calledFunctionsArguments={},this.initVariables=[],this.readVariables=[],this.writeVariables=[],this.addFunction=null,this.isRootKernel=!1,this.isSubKernel=!1,this.parent=null,this.debug=null,this.prototypeOnly=null,this.constants=null,n&&(n.hasOwnProperty("debug")&&(this.debug=n.debug),n.hasOwnProperty("prototypeOnly")&&(this.prototypeOnly=n.prototypeOnly),n.hasOwnProperty("constants")&&(this.constants=n.constants),n.hasOwnProperty("loopMaxIterations")&&(this.loopMaxIterations=n.loopMaxIterations)),!e)throw"jsFunction, parameter is missing";if(this.jsFunctionString=e.toString(),!utils.isFunctionString(this.jsFunctionString))throw console.error("jsFunction, to string conversion check failed: not a function?",this.jsFunctionString),"jsFunction, to string conversion check failed: not a function?";if(utils.isFunction(e)?this.jsFunction=e:this.jsFunction=null,this.functionName=t||e&&e.name||utils.getFunctionNameFromString(this.jsFunctionString),!this.functionName)throw"jsFunction, missing name argument or value";if(this.paramNames=utils.getParamNamesFromString(this.jsFunctionString),i){if(Array.isArray(i)){if(i.length!==this.paramNames.length)throw"Invalid argument type array length, against function length -> ("+i.length+","+this.paramNames.length+")";this.paramTypes=i}else if("object"===("undefined"==typeof i?"undefined":_typeof(i))){var s=Object.keys(i);if(i.hasOwnProperty("returns")&&(this.returnType=i.returns,s.splice(s.indexOf("returns"),1)),s.length>0&&s.length!==this.paramNames.length)throw"Invalid argument type array length, against function length -> ("+s.length+","+this.paramNames.length+")";this.paramTypes=this.paramNames.map(function(t){return i.hasOwnProperty(t)?i[t]:"float"})}}else this.paramTypes=[];this.returnType||(this.returnType=r||"float")}return _createClass(BaseFunctionNode,[{key:"setAddFunction",value:function(t){return this.addFunction=t,this}},{key:"getJsFunction",value:function getJsFunction(){if(this.jsFunction)return this.jsFunction;if(this.jsFunctionString)return this.jsFunction=eval(this.jsFunctionString),this.jsFunction;throw"Missing jsFunction, and jsFunctionString parameter"}},{key:"getJsAST",value:function(t){if(this.jsFunctionAST)return this.jsFunctionAST;if(t=t||acorn,null===t)throw"Missing JS to AST parser";var e=t.parse("var "+this.functionName+" = "+this.jsFunctionString+";");if(null===e)throw"Failed to parse JS code";var n=e.body[0].declarations[0].init;return this.jsFunctionAST=n,n}},{key:"getFunctionString",value:function(){return this.generate(),this.functionString}},{key:"setFunctionString",value:function(t){this.functionString=t}},{key:"getParamType",value:function(t){var e=this.paramNames.indexOf(t);if(e===-1)return null;if(!this.parent)return null;if(this.paramTypes[e])return this.paramTypes[e];for(var n=this.parent.calledFunctionsArguments[this.functionName],i=0;i<n.length;i++){var r=n[i];if(null!==r[e])return this.paramTypes[e]=r[e].type}return null}},{key:"getUserParamName",value:function(t){var e=this.paramNames.indexOf(t);if(e===-1)return null;if(!this.parent)return null;for(var n=this.parent.calledFunctionsArguments[this.functionName],i=0;i<n.length;i++){var r=n[i];if(null!==r[e])return r[e].name}return null}},{key:"generate",value:function(t){throw new Error("generate not defined on BaseFunctionNode")}}]),BaseFunctionNode}()},{"../core/utils":24,acorn:26}],8:[function(t,e,n){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),s=t("../core/utils");e.exports=function(){function t(e,n){i(this,t),this.paramNames=s.getParamNamesFromString(e),this.fnString=e,this.dimensions=[],this.debug=!1,this.graphical=!1,this.loopMaxIterations=0,this.constants=null,this.wraparound=null,this.hardcodeConstants=null,this.outputToTexture=null,this.texSize=null,this._canvas=null,this._webGl=null,this.threadDim=null,this.floatTextures=null,this.floatOutput=null,this.floatOutputForce=null,this.addFunction=null,this.copyData=!0,this.subKernels=null,this.subKernelProperties=null,this.subKernelNames=null,this.subKernelOutputVariableNames=null;for(var r in n)n.hasOwnProperty(r)&&this.hasOwnProperty(r)&&(this[r]=n[r]);n.hasOwnProperty("canvas")&&(this._canvas=n.canvas),this._canvas||(this._canvas=s.initCanvas())}return r(t,[{key:"build",value:function(){throw new Error('"build" not defined on Base')}},{key:"setAddFunction",value:function(t){return this.addFunction=t,this}},{key:"setDimensions",value:function(t){return this.dimensions=t,this}},{key:"setDebug",value:function(t){return this.debug=t,this}},{key:"setGraphical",value:function(t){return this.graphical=t,this}},{key:"setLoopMaxIterations",value:function(t){return this.loopMaxIterations=t,this}},{key:"setConstants",value:function(t){return this.constants=t,this}},{key:"setWraparound",value:function(t){return console.warn("Wraparound mode is not supported and undocumented."),this.wraparound=t,this}},{key:"setHardcodeConstants",value:function(t){return this.hardcodeConstants=t,this}},{key:"setOutputToTexture",value:function(t){return this.outputToTexture=t,this}},{key:"setFloatTextures",value:function(t){return this.floatTextures=t,this}},{key:"setFloatOutput",value:function(t){return this.floatOutput=t,this}},{key:"setFloatOutputForce",value:function(t){return this.floatOutputForce=t,this}},{key:"setCanvas",value:function(t){return this._canvas=t,this}},{key:"setWebGl",value:function(t){return this._webGl=t,this}},{key:"setCopyData",value:function(t){return this.copyData=t,this}},{key:"getCanvas",value:function(){return this._canvas}},{key:"getWebGl",value:function(){return this._webGl}},{key:"validateOptions",value:function(){throw new Error("validateOptions not defined")}},{key:"exec",value:function(){return this.execute.apply(this,arguments)}},{key:"execute",value:function(){var t=this,e=1===arguments.length?[arguments[0]]:Array.apply(null,arguments);return s.newPromise(function(n,i){try{n(t.run.apply(t,e))}catch(r){i(r)}})}},{key:"addSubKernel",value:function(t){return null===this.subKernels&&(this.subKernels=[],this.subKernelNames=[]),this.subKernels.push(t),this.subKernelNames.push(s.getFunctionNameFromString(t)),this}},{key:"addSubKernelProperty",value:function(t,e){if(null===this.subKernelProperties&&(this.subKernelProperties={},this.subKernelNames=[]),this.subKernelProperties.hasOwnProperty(t))throw new Error("cannot add sub kernel "+t+", already defined");return this.subKernelProperties[t]=e,this.subKernelNames.push(s.getFunctionNameFromString(e)),this}}]),t}()},{"../core/utils":24}],9:[function(t,e,n){var i=t("../core/utils");e.exports=function(t){var e=function(){return t.run.apply(t,arguments)};return i.allPropertiesOf(t).forEach(function(n){"_"===n[0]&&"_"===n[1]||("function"==typeof t[n]?"set"===n.substring(0,3)?e[n]=function(){return t[n].apply(t,arguments),e}:e[n]=t[n].bind(t):(e.__defineGetter__(n,function(){return t[n]}),e.__defineSetter__(n,function(e){t[n]=e})))}),e.kernel=t,e}},{"../core/utils":24}],10:[function(t,e,n){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),s=t("../core/utils"),a=t("./kernel-run-shortcut");e.exports=function(){function t(e,n){i(this,t),n=n||{},this.kernel=n.kernel,this.canvas=n.canvas,this.webGl=n.webGl,this.fn=null,this.functionBuilder=e,this.fnString=null,this.endianness=s.systemEndianness(),this.functionBuilder.polyfillStandardFunctions()}return r(t,[{key:"textureToArray",value:function(t){var e=this.createKernel(function(t){return t[this.thread.z][this.thread.y][this.thread.x]});return e(t)}},{key:"deleteTexture",value:function(t){this.webGl.deleteTexture(t.texture)}},{key:"buildPromiseKernel",value:function(){throw new Error("not yet implemented")}},{key:"getMode",value:function(){throw new Error('"mode" not implemented on BaseRunner')}},{key:"buildKernel",value:function(t,e){e=Object.assign({},e||{});var n=t.toString();return e.functionBuilder||(e.functionBuilder=this.functionBuilder),e.canvas||(e.canvas=this.canvas),e.webGl||(e.webGl=this.webgl),a(new this.Kernel(n,e))}}]),t}()},{"../core/utils":24,"./kernel-run-shortcut":9}],11:[function(t,e,n){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),o=t("../function-builder-base"),u=t("./function-node");t("../../core/utils");e.exports=function(t){function e(){return i(this,e),r(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return s(e,t),a(e,[{key:"addFunction",value:function(t,e,n,i){this.addFunctionNode(new u(t,e,n,i).setAddFunction(this.addFunction.bind(this)))}},{key:"getStringFromFunctionNames",value:function(t){for(var e=[],n=0;n<t.length;++n){var i=this.nodeMap[t[n]];i&&e.push(this.nodeMap[t[n]].getFunctionString())}return e.join("\n")}},{key:"getPrototypeStringFromFunctionNames",value:function(t,e){for(var n=[],i=0;i<t.length;++i){var r=this.nodeMap[t[i]];r&&n.push(r.getFunctionPrototypeString(e))}return n.join("\n")}},{key:"getString",value:function(t,e){return void 0===e&&(e={}),t?this.getStringFromFunctionNames(this.traceFunctionCalls(t,[],e).reverse(),e):this.getStringFromFunctionNames(Object.keys(this.nodeMap),e)}},{key:"getPrototypeString",value:function(t){return this.rootKernel.generate(),t?this.getPrototypeStringFromFunctionNames(this.traceFunctionCalls(t,[]).reverse()):this.getPrototypeStringFromFunctionNames(Object.keys(this.nodeMap))}},{key:"addKernel",value:function(t,e,n,i){var r=new u("kernel",t,e,i);return r.setAddFunction(this.addFunction.bind(this)),r.paramNames=n,r.paramTypes=i,r.isRootKernel=!0,this.addFunctionNode(r),r}},{key:"addSubKernel",value:function(t,e,n,i){var r=new u(null,t,e,n,i);return r.setAddFunction(this.addFunction.bind(this)),r.isSubKernel=!0,this.addFunctionNode(r),r}}]),e}(o)},{"../../core/utils":24,"../function-builder-base":6,"./function-node":12}],12:[function(t,e,n){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t){return t.replace(d,"((").replace(m,"((")}function o(t,e,n){return console.error(t,e,n),t}var u=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),h=t("../function-node-base"),l=t("../../core/utils"),c="Math.",p="this.",f="this.constants.",d=/decode32\(\s+encode32\(/g,m=/encode32\(\s+decode32\(/g;e.exports=function(t){function e(){return i(this,e),r(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return s(e,t),u(e,[{key:"generate",value:function(){return this.debug&&console.log(this),this.prototypeOnly?e.astFunctionPrototype(this.getJsAST(),[],this).join("").trim():(this.functionStringArray=this.astGeneric(this.getJsAST(),[],this),this.functionString=a(this.functionStringArray.join("").trim()),this.functionString)}},{key:"isIdentifierConstant",value:function(t){return!!this.constants&&this.constants.hasOwnProperty(t)}},{key:"astGeneric",value:function(t,e,n){if(null===t)throw o("NULL ast",t,n);if(Array.isArray(t)){for(var i=0;i<t.length;i++)this.astGeneric(t[i],e,n);return e}switch(t.type){case"FunctionDeclaration":return this.astFunctionDeclaration(t,e,n);case"FunctionExpression":return this.astFunctionExpression(t,e,n);case"ReturnStatement":return this.astReturnStatement(t,e,n);case"Literal":return this.astLiteral(t,e,n);case"BinaryExpression":return this.astBinaryExpression(t,e,n);case"Identifier":return this.astIdentifierExpression(t,e,n);case"AssignmentExpression":return this.astAssignmentExpression(t,e,n);case"ExpressionStatement":return this.astExpressionStatement(t,e,n);case"EmptyStatement":return this.astEmptyStatement(t,e,n);case"BlockStatement":return this.astBlockStatement(t,e,n);case"IfStatement":return this.astIfStatement(t,e,n);case"BreakStatement":return this.astBreakStatement(t,e,n);case"ContinueStatement":return this.astContinueStatement(t,e,n);case"ForStatement":return this.astForStatement(t,e,n);case"WhileStatement":return this.astWhileStatement(t,e,n);case"VariableDeclaration":return this.astVariableDeclaration(t,e,n);case"VariableDeclarator":return this.astVariableDeclarator(t,e,n);case"ThisExpression":return this.astThisExpression(t,e,n);case"SequenceExpression":return this.astSequenceExpression(t,e,n);case"UnaryExpression":return this.astUnaryExpression(t,e,n);case"UpdateExpression":return this.astUpdateExpression(t,e,n);case"LogicalExpression":return this.astLogicalExpression(t,e,n);case"MemberExpression":return this.astMemberExpression(t,e,n);case"CallExpression":return this.astCallExpression(t,e,n);case"ArrayExpression":return this.astArrayExpression(t,e,n)}throw o("Unknown ast type : "+t.type,t,n)}},{key:"astFunctionDeclaration",value:function(t,e,n){return this.addFunction&&this.addFunction(null,l.getAstString(this.jsFunctionString,t)),e}},{key:"astFunctionExpression",value:function(t,e,n){if(n.isRootKernel?(e.push("void"),n.kernalAst=t):e.push(n.returnType),e.push(" "),e.push(n.functionName),e.push("("),!n.isRootKernel)for(var i=0;i<n.paramNames.length;++i){var r=n.paramNames[i];i>0&&e.push(", ");var s=n.getParamType(r);switch(s){case"Texture":case"Array":e.push("sampler2D");break;default:e.push("float")}e.push(" "),e.push("user_"),e.push(r)}e.push(") {\n");for(var a=0;a<t.body.body.length;++a)this.astGeneric(t.body.body[a],e,n),e.push("\n");return e.push("}\n"),e}},{key:"astReturnStatement",value:function(t,e,n){return n.isRootKernel?(e.push("kernelResult = "),this.astGeneric(t.argument,e,n),e.push(";"),e.push("return;")):n.isSubKernel?(e.push(n.functionName+"Result = "),this.astGeneric(t.argument,e,n),e.push(";"),e.push("return "+n.functionName+"Result;")):(e.push("return "),this.astGeneric(t.argument,e,n),e.push(";")),e}},{key:"astLiteral",value:function(t,e,n){if(isNaN(t.value))throw o("Non-numeric literal not supported : "+t.value,t,n);return e.push(t.value),Number.isInteger(t.value)&&e.push(".0"),e}},{key:"astBinaryExpression",value:function(t,e,n){return e.push("("),"%"===t.operator?(e.push("mod("),this.astGeneric(t.left,e,n),e.push(","),this.astGeneric(t.right,e,n),e.push(")")):"==="===t.operator?(this.astGeneric(t.left,e,n),e.push("=="),this.astGeneric(t.right,e,n)):"!=="===t.operator?(this.astGeneric(t.left,e,n),e.push("!="),this.astGeneric(t.right,e,n)):(this.astGeneric(t.left,e,n),e.push(t.operator),this.astGeneric(t.right,e,n)),e.push(")"),e}},{key:"astIdentifierExpression",value:function(t,e,n){if("Identifier"!==t.type)throw o("IdentifierExpression - not an Identifier",ast,n);switch(t.name){case"gpu_threadX":e.push("threadId.x");break;case"gpu_threadY":e.push("threadId.y");break;case"gpu_threadZ":e.push("threadId.z");break;case"gpu_dimensionsX":e.push("uOutputDim.x");break;case"gpu_dimensionsY":e.push("uOutputDim.y");break;case"gpu_dimensionsZ":e.push("uOutputDim.z");break;default:if(this.constants&&this.constants.hasOwnProperty(t.name))e.push("constants_"+t.name);else{var i=n.getUserParamName(t.name);null!==i?e.push("user_"+i):e.push("user_"+t.name)}}return e}},{key:"astForStatement",
|
||
value:function(t,e,n){if("ForStatement"!==t.type)throw o("Invalid for statment",ast,n);if(t.test&&"BinaryExpression"===t.test.type){if("Identifier"===t.test.right.type&&"<"===t.test.operator&&this.isIdentifierConstant(t.test.right.name)===!1){if(void 0===this.opt.loopMaxIterations&&(console.warn("Warning: loopMaxIterations is not set! Using default of 100 which may result in unintended behavior."),console.warn("Set loopMaxIterations or use a for loop of fixed length to silence this message.")),e.push("for (float "),this.astGeneric(t.init,e,n),e.push(";"),this.astGeneric(t.test.left,e,n),e.push(t.test.operator),e.push("LOOP_MAX"),e.push(";"),this.astGeneric(t.update,e,n),e.push(")"),e.push("{\n"),e.push("if ("),this.astGeneric(t.test.left,e,n),e.push(t.test.operator),this.astGeneric(t.test.right,e,n),e.push(") {\n"),"BlockStatement"===t.body.type)for(var i=0;i<t.body.body.length;i++)this.astGeneric(t.body.body[i],e,n);else this.astGeneric(t.body,e,n);return e.push("} else {\n"),e.push("break;\n"),e.push("}\n"),e.push("}\n"),e}if(e.push("for ("),!Array.isArray(t.init.declarations)||t.init.declarations.length<1)throw console.log(this.jsFunctionString),new Error("Error: Incompatible for loop declaration");return this.astGeneric(t.init,e,n),this.astGeneric(t.test,e,n),e.push(";"),this.astGeneric(t.update,e,n),e.push(")"),this.astGeneric(t.body,e,n),e}throw o("Invalid for statement",ast,n)}},{key:"astWhileStatement",value:function(t,e,n){if("WhileStatement"!==t.type)throw o("Invalid while statment",ast,n);return e.push("for (float i = 0.0; i < LOOP_MAX; i++) {"),e.push("if ("),this.astGeneric(t.test,e,n),e.push(") {\n"),this.astGeneric(t.body,e,n),e.push("} else {\n"),e.push("break;\n"),e.push("}\n"),e.push("}\n"),e}},{key:"astAssignmentExpression",value:function(t,e,n){return"%="!==t.operator?(this.astGeneric(t.left,e,n),e.push(t.operator),this.astGeneric(t.right,e,n),e):(this.astGeneric(t.left,e,n),e.push("="),e.push("mod("),this.astGeneric(t.left,e,n),e.push(","),this.astGeneric(t.right,e,n),e.push(")"),void 0)}},{key:"astEmptyStatement",value:function(t,e,n){return e}},{key:"astBlockStatement",value:function(t,e,n){e.push("{\n");for(var i=0;i<t.body.length;i++)this.astGeneric(t.body[i],e,n);return e.push("}\n"),e}},{key:"astExpressionStatement",value:function(t,e,n){return this.astGeneric(t.expression,e,n),e.push(";\n"),e}},{key:"astVariableDeclaration",value:function(t,e,n){e.push("float ");for(var i=0;i<t.declarations.length;i++)i>0&&e.push(","),this.astGeneric(t.declarations[i],e,n);return e.push(";"),e}},{key:"astVariableDeclarator",value:function(t,e,n){return this.astGeneric(t.id,e,n),null!==t.init&&(e.push("="),this.astGeneric(t.init,e,n)),e}},{key:"astIfStatement",value:function(t,e,n){return e.push("if ("),this.astGeneric(t.test,e,n),e.push(")"),"BlockStatement"===t.consequent.type?this.astGeneric(t.consequent,e,n):(e.push(" {\n"),this.astGeneric(t.consequent,e,n),e.push("\n}\n")),t.alternate&&(e.push("else "),"BlockStatement"===t.alternate.type?this.astGeneric(t.alternate,e,n):(e.push(" {\n"),this.astGeneric(t.alternate,e,n),e.push("\n}\n"))),e}},{key:"astBreakStatement",value:function(t,e,n){return e.push("break;\n"),e}},{key:"astContinueStatement",value:function(t,e,n){return e.push("continue;\n"),e}},{key:"astLogicalExpression",value:function(t,e,n){return e.push("("),this.astGeneric(t.left,e,n),e.push(t.operator),this.astGeneric(t.right,e,n),e.push(")"),e}},{key:"astUpdateExpression",value:function(t,e,n){return t.prefix?(e.push(t.operator),this.astGeneric(t.argument,e,n)):(this.astGeneric(t.argument,e,n),e.push(t.operator)),e}},{key:"astUnaryExpression",value:function(t,e,n){return t.prefix?(e.push(t.operator),this.astGeneric(t.argument,e,n)):(this.astGeneric(t.argument,e,n),e.push(t.operator)),e}},{key:"astThisExpression",value:function(t,e,n){return e.push("this"),e}},{key:"astMemberExpression",value:function(t,e,n){if(t.computed)if("Identifier"===t.object.type){var i=t.object.name,r=(n.functionName||"kernel",!1);if(n.paramNames){var s=n.paramNames.indexOf(i);s>=0&&"float"===n.paramTypes[s]&&(r=!0)}r?(this.astGeneric(t.object,e,n),e.push("[int("),this.astGeneric(t.property,e,n),e.push(")]")):(e.push("get("),this.astGeneric(t.object,e,n),e.push(", vec2("),this.astGeneric(t.object,e,n),e.push("Size[0],"),this.astGeneric(t.object,e,n),e.push("Size[1]), vec3("),this.astGeneric(t.object,e,n),e.push("Dim[0],"),this.astGeneric(t.object,e,n),e.push("Dim[1],"),this.astGeneric(t.object,e,n),e.push("Dim[2]"),e.push("), "),this.astGeneric(t.property,e,n),e.push(")"))}else{this.astGeneric(t.object,e,n);var a=e.pop();e.push(","),this.astGeneric(t.property,e,n),e.push(a)}else{var o=this.astMemberExpressionUnroll(t),u=o.toLowerCase();0===o.indexOf(f)&&(o="constants_"+o.slice(f.length)),"this.thread.x"===u?e.push("threadId.x"):"this.thread.y"===u?e.push("threadId.y"):"this.thread.z"===u?e.push("threadId.z"):"this.dimensions.x"===u?e.push("uOutputDim.x"):"this.dimensions.y"===u?e.push("uOutputDim.y"):"this.dimensions.z"===u?e.push("uOutputDim.z"):e.push(o)}return e}},{key:"astSequenceExpression",value:function(t,e,n){for(var i=0;i<t.expressions.length;i++)i>0&&e.push(","),this.astGeneric(t.expressions,e,n);return e}},{key:"astMemberExpressionUnroll",value:function(t,e){if("Identifier"===t.type)return t.name;if("ThisExpression"===t.type)return"this";if("MemberExpression"===t.type&&t.object&&t.property)return this.astMemberExpressionUnroll(t.object,e)+"."+this.astMemberExpressionUnroll(t.property,e);throw o("Unknown CallExpression_unroll",t,e)}},{key:"astCallExpression",value:function(t,e,n){if(t.callee){var i=this.astMemberExpressionUnroll(t.callee);0===i.indexOf(c)&&(i=i.slice(c.length)),0===i.indexOf(p)&&(i=i.slice(p.length)),n.calledFunctions.indexOf(i)<0&&n.calledFunctions.push(i),n.hasOwnProperty("funcName")||(n.calledFunctionsArguments[i]=[]);var r=[];n.calledFunctionsArguments[i].push(r),e.push(i),e.push("(");for(var s=0;s<t.arguments.length;++s){var a=t.arguments[s];if(s>0&&e.push(", "),this.astGeneric(a,e,n),"Identifier"===a.type){var u=n.paramNames.indexOf(a.name);u===-1?r.push(null):r.push({name:a.name,type:n.paramTypes[u]})}else r.push(null)}return e.push(")"),e}throw o("Unknown CallExpression",t,n)}},{key:"astArrayExpression",value:function(t,e,n){var i=t.elements.length;e.push("float["+i+"](");for(var r=0;r<i;++r){r>0&&e.push(", ");var s=t.elements[r];this.astGeneric(s,e,n)}return e.push(")"),e}},{key:"getFunctionPrototypeString",value:function(){return this.webGlFunctionPrototypeString?this.webGlFunctionPrototypeString:this.webGlFunctionPrototypeString=this.generate()}},{key:"build",value:function(){return this.getFunctionPrototypeString().length>0}}],[{key:"astFunctionPrototype",value:function(t,e,n){if(n.isRootKernel||n.isSubKernel)return e;e.push(n.returnType),e.push(" "),e.push(n.functionName),e.push("(");for(var i=0;i<n.paramNames.length;++i)i>0&&e.push(", "),e.push(n.paramTypes[i]),e.push(" "),e.push("user_"),e.push(n.paramNames[i]);return e.push(");\n"),e}}]),e}(h)},{"../../core/utils":24,"../function-node-base":7}],13:[function(t,e,n){var i=t("../../core/utils"),r=t("../kernel-run-shortcut");e.exports=function(t,e){return"() => {\n "+r.toString()+";\n const utils = {\n allPropertiesOf: function "+i.allPropertiesOf.toString()+",\n clone: function "+i.clone.toString()+",\n splitArray: function "+i.splitArray.toString()+",\n getArgumentType: function "+i.getArgumentType.toString()+",\n getDimensions: function "+i.getDimensions.toString()+",\n dimToTexSize: function "+i.dimToTexSize.toString()+",\n copyFlatten: function "+i.copyFlatten.toString()+",\n flatten: function "+i.flatten.toString()+",\n systemEndianness: '"+i.systemEndianness()+"',\n initWebGl: function "+i.initWebGl.toString()+",\n isArray: function "+i.isArray.toString()+"\n };\n class "+(e||"Kernel")+" {\n constructor() {\n this.argumentsLength = 0;\n this._canvas = null;\n this._webGl = null;\n this.built = false;\n this.program = null;\n this.paramNames = "+JSON.stringify(t.paramNames)+";\n this.paramTypes = "+JSON.stringify(t.paramTypes)+";\n this.texSize = "+JSON.stringify(t.texSize)+";\n this.dimensions = "+JSON.stringify(t.dimensions)+";\n this.compiledFragShaderString = `"+t.compiledFragShaderString+"`;\n\t\t this.compiledVertShaderString = `"+t.compiledVertShaderString+"`;\n\t\t this.programUniformLocationCache = {};\n\t\t this.textureCache = {};\n\t\t this.subKernelOutputTextures = null;\n }\n "+t._getFragShaderString.toString()+"\n "+t._getVertShaderString.toString()+"\n validateOptions() {}\n setupParams() {}\n setCanvas(canvas) { this._canvas = canvas; return this; }\n setWebGl(webGl) { this._webGl = webGl; return this; }\n "+t.getUniformLocation.toString()+"\n "+t.setupParams.toString()+"\n "+t.build.toString()+"\n\t\t "+t.run.toString()+"\n\t\t "+t._addArgument.toString()+"\n\t\t "+t.getArgumentTexture.toString()+"\n\t\t "+t.getTextureCache.toString()+"\n\t\t "+t.getOutputTexture.toString()+"\n\t\t "+t.renderOutput.toString()+"\n };\n return kernelRunShortcut(new Kernel());\n };"}},{"../../core/utils":24,"../kernel-run-shortcut":9}],14:[function(t,e,n){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),o=(t("fs"),t("../kernel-base")),u=t("../../core/utils"),h=t("../../core/texture"),l=t("./shader-frag"),c=t("./shader-vert"),p=t("./kernel-string"),f=[],d={};e.exports=function(t){function e(t,n){i(this,e);var s=r(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));return s.textureCache={},s.threadDim={},s.programUniformLocationCache={},s.framebuffer=null,s.buffer=null,s.program=null,s.functionBuilder=n.functionBuilder,s.outputToTexture=n.outputToTexture,s.endianness=u.systemEndianness(),s.subKernelOutputTextures=null,s.subKernelOutputVariableNames=null,s.paramTypes=null,s.argumentsLength=0,s.ext=null,s.compiledFragShaderString=null,s.compiledVertShaderString=null,s._webGl||(s._webGl=u.initWebGl(s.getCanvas())),s}return s(e,t),a(e,[{key:"validateOptions",value:function(){var t=u.isFloatReadPixelsSupported();if(this.floatTextures===!0&&!u.OES_texture_float)throw"Float textures are not supported on this browser";if(this.floatOutput===!0&&this.floatOutputForce!==!0&&!t)throw"Float texture outputs are not supported on this browser";if(null===this.floatTextures&&u.OES_texture_float&&(this.floatTextures=!0,this.floatOutput=t&&!this.graphical),!this.dimensions||0===this.dimensions.length){if(1!==arguments.length)throw"Auto dimensions only supported for kernels with only one input";var e=u.getArgumentType(arguments[0]);if("Array"===e)this.dimensions=u.getDimensions(e);else{if("Texture"!==e)throw"Auto dimensions not supported for input type: "+e;this.dimensions=arguments[0].dimensions}}if(this.texSize=u.dimToTexSize({floatTextures:this.floatTextures,floatOutput:this.floatOutput},this.dimensions,!0),this.graphical){if(2!==this.dimensions.length)throw"Output must have 2 dimensions on graphical mode";if(this.floatOutput)throw"Cannot use graphical mode and float output at the same time";this.texSize=u.clone(this.dimensions)}else void 0===this.floatOutput&&u.OES_texture_float&&(this.floatOutput=!0)}},{key:"build",value:function(){this.validateOptions(),this.setupParams(arguments);var t=this.texSize,e=this._webGl,n=this._canvas,i=f.indexOf(n);i===-1&&(i=f.length,f.push(n),d[i]=[]);var r=d[i];r.push(t);for(var s=[0,0],a=0;a<r.length;a++){var o=r[a];s[0]<o[0]&&(s[0]=o[0]),s[1]<o[1]&&(s[1]=o[1])}e.enable(e.SCISSOR_TEST),e.viewport(0,0,s[0],s[1]);for(var h=this.threadDim=u.clone(this.dimensions);h.length<3;)h.push(1);this.functionBuilder&&this._addKernels();var l=this._getVertShaderString(arguments),c=e.createShader(e.VERTEX_SHADER);e.shaderSource(c,l),e.compileShader(c);var p=this._getFragShaderString(arguments),m=e.createShader(e.FRAGMENT_SHADER);if(e.shaderSource(m,p),e.compileShader(m),!e.getShaderParameter(c,e.COMPILE_STATUS))throw console.log(l),console.error("An error occurred compiling the shaders: "+e.getShaderInfoLog(c)),"Error compiling vertex shader";if(!e.getShaderParameter(m,e.COMPILE_STATUS))throw console.log(p),console.error("An error occurred compiling the shaders: "+e.getShaderInfoLog(m)),"Error compiling fragment shader";this.debug&&(console.log("Options:"),console.dir(this),console.log("GLSL Shader Output:"),console.log(p));var g=this.program=e.createProgram();return e.attachShader(g,c),e.attachShader(g,m),e.linkProgram(g),this.framebuffer=e.createFramebuffer(),this.framebuffer.width=t[0],this.framebuffer.height=t[1],this}},{key:"run",value:function(){null===this.program&&this.build.apply(this,arguments);var t=this.paramNames,e=this.paramTypes,n=this.texSize,i=this.threadDim,r=this.framebuffer,s=new Float32Array([-1,-1,1,-1,-1,1,1,1]),a=new Float32Array([0,0,1,0,0,1,1,1]),o=this._webGl;o.useProgram(this.program),o.scissor(0,0,n[0],n[1]);var u=s.byteLength,l=this.buffer;l?o.bindBuffer(o.ARRAY_BUFFER,l):(l=this.buffer=o.createBuffer(),o.bindBuffer(o.ARRAY_BUFFER,l),o.bufferData(o.ARRAY_BUFFER,s.byteLength+a.byteLength,o.STATIC_DRAW)),o.bufferSubData(o.ARRAY_BUFFER,0,s),o.bufferSubData(o.ARRAY_BUFFER,u,a);var c=o.getAttribLocation(this.program,"aPos");o.enableVertexAttribArray(c),o.vertexAttribPointer(c,2,o.FLOAT,o.FALSE,0,0);var p=o.getAttribLocation(this.program,"aTexCoord");if(o.enableVertexAttribArray(p),o.vertexAttribPointer(p,2,o.FLOAT,o.FALSE,0,u),!this.hardcodeConstants){var f=this.getUniformLocation("uOutputDim");o.uniform3fv(f,i);var d=this.getUniformLocation("uTexSize");o.uniform2fv(d,n)}this.argumentsLength=0;for(var m=0;m<t.length;m++)this._addArgument(arguments[m],e[m],t[m]);var g=this.getOutputTexture();if(o.activeTexture(o.TEXTURE0+this.argumentsLength),o.bindTexture(o.TEXTURE_2D,g),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.NEAREST),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.NEAREST),this.floatOutput?o.texImage2D(o.TEXTURE_2D,0,o.RGBA,n[0],n[1],0,o.RGBA,o.FLOAT,null):o.texImage2D(o.TEXTURE_2D,0,o.RGBA,n[0],n[1],0,o.RGBA,o.UNSIGNED_BYTE,null),this.graphical)return o.bindRenderbuffer(o.RENDERBUFFER,null),o.bindFramebuffer(o.FRAMEBUFFER,null),void o.drawArrays(o.TRIANGLE_STRIP,0,4);if(o.bindFramebuffer(o.FRAMEBUFFER,r),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,g,0),null!==this.subKernelOutputTextures){for(var y=[o.COLOR_ATTACHMENT0],b=0;b<this.subKernelOutputTextures.length;b++){var v=this.subKernelOutputTextures[b];y.push(o.COLOR_ATTACHMENT0+b+1),o.activeTexture(o.TEXTURE0+t.length+b),o.bindTexture(o.TEXTURE_2D,v),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.NEAREST),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.NEAREST),this.floatOutput?o.texImage2D(o.TEXTURE_2D,0,o.RGBA,n[0],n[1],0,o.RGBA,o.FLOAT,null):o.texImage2D(o.TEXTURE_2D,0,o.RGBA,n[0],n[1],0,o.RGBA,o.UNSIGNED_BYTE,null),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0+b+1,o.TEXTURE_2D,v,0)}this.ext.drawBuffersWEBGL(y)}if(o.drawArrays(o.TRIANGLE_STRIP,0,4),null!==this.subKernelOutputTextures){if(null!==this.subKernels){var x=[];x.result=this.renderOutput(g);for(var k=0;k<this.subKernels.length;k++)x.push(new h(this.subKernelOutputTextures[k],n,this.dimensions,this._webGl));return x}if(null!==this.subKernelProperties){var _={result:this.renderOutput(g)},S=0;for(var E in this.subKernelProperties)this.subKernelProperties.hasOwnProperty(E)&&(_[E]=new h(this.subKernelOutputTextures[S],n,this.dimensions,this._webGl),S++);return _}}return this.renderOutput(g)}},{key:"renderOutput",value:function(t){var e=this.texSize,n=this._webGl,i=this.threadDim;if(this.outputToTexture)return new h(t,e,this.dimensions,this._webGl);var r=void 0;if(this.floatOutput)r=new Float32Array(e[0]*e[1]*4),n.readPixels(0,0,e[0],e[1],n.RGBA,n.FLOAT,r);else{var s=new Uint8Array(e[0]*e[1]*4);n.readPixels(0,0,e[0],e[1],n.RGBA,n.UNSIGNED_BYTE,s),r=new Float32Array(s.buffer)}if(r=r.subarray(0,i[0]*i[1]*i[2]),1===this.dimensions.length)return r;if(2===this.dimensions.length)return u.splitArray(r,this.dimensions[0]);if(3===this.dimensions.length){var a=u.splitArray(r,this.dimensions[0]*this.dimensions[1]);return a.map(function(t){return u.splitArray(t,this.dimensions[0])})}}},{key:"getOutputTexture",value:function(){return this.getTextureCache("OUTPUT")}},{key:"getArgumentTexture",value:function(t){return this.getTextureCache("ARGUMENT_"+t)}},{key:"getSubKernelTexture",value:function(t){return this.getTextureCache("SUB_KERNEL_"+t)}},{key:"getTextureCache",value:function(t){return this.outputToTexture?this._webGl.createTexture():this.textureCache.hasOwnProperty(t)?this.textureCache[t]:this.textureCache[t]=this._webGl.createTexture()}},{key:"setupParams",value:function(t){for(var e=this.paramTypes=[],n=0;n<t.length;n++){var i=t[n],r=u.getArgumentType(i);e.push(r)}}},{key:"getUniformLocation",value:function(t){var e=this.programUniformLocationCache[t];return e||(e=this._webGl.getUniformLocation(this.program,t),this.programUniformLocationCache[t]=e),e}},{key:"_getFragShaderArtifactMap",value:function(t){return{HEADER:this._getHeaderString(),LOOP_MAX:this._getLoopMaxString(),CONSTANTS:this._getConstantsString(),DECODE32_ENDIANNESS:this._getDecode32EndiannessString(),ENCODE32_ENDIANNESS:this._getEncode32EndiannessString(),GET_WRAPAROUND:this._getGetWraparoundString(),GET_TEXTURE_CHANNEL:this._getGetTextureChannelString(),GET_TEXTURE_INDEX:this._getGetTextureIndexString(),GET_RESULT:this._getGetResultString(),MAIN_PARAMS:this._getMainParamsString(t),MAIN_CONSTANTS:this._getMainConstantsString(),KERNEL:this._getKernelString(),MAIN_RESULT:this._getMainResultString()}}},{key:"_addArgument",value:function(t,e,n){var i=this._webGl,r=this.getArgumentTexture(n);switch(t.constructor===h&&(e="Texture"),e){case"Array":var s=u.getDimensions(t,!0),a=u.dimToTexSize({floatTextures:this.floatTextures,floatOutput:this.floatOutput},s);i.activeTexture(i.TEXTURE0+this.argumentsLength),i.bindTexture(i.TEXTURE_2D,r),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.NEAREST);var o=a[0]*a[1];this.floatTextures&&(o*=4);var l=new Float32Array(o);u.flattenTo(t,l);var c=void 0;this.floatTextures?(c=new Float32Array(l),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,a[0],a[1],0,i.RGBA,i.FLOAT,c)):(c=new Uint8Array(new Float32Array(l).buffer),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,a[0],a[1],0,i.RGBA,i.UNSIGNED_BYTE,c));var p=this.getUniformLocation("user_"+n),f=this.getUniformLocation("user_"+n+"Size"),d=this.getUniformLocation("user_"+n+"Dim");this.hardcodeConstants||(i.uniform3fv(d,s),i.uniform2fv(f,a)),i.uniform1i(p,this.argumentsLength);break;case"Number":var m=this.getUniformLocation("user_"+n);i.uniform1f(m,t);break;case"Texture":var g=t,y=u.getDimensions(g.dimensions,!0),b=g.size;i.activeTexture(i.TEXTURE0+this.argumentsLength),i.bindTexture(i.TEXTURE_2D,g.texture);var v=this.getUniformLocation("user_"+n),x=this.getUniformLocation("user_"+n+"Size"),k=this.getUniformLocation("user_"+n+"Dim");i.uniform3fv(k,y),i.uniform2fv(x,b),i.uniform1i(v,this.argumentsLength);break;default:throw"Input type not supported (WebGL): "+t}this.argumentsLength++}},{key:"_getHeaderString",value:function(){return null!==this.subKernels||null!==this.subKernelProperties?"#extension GL_EXT_draw_buffers : require\n":""}},{key:"_getLoopMaxString",value:function(){return this.loopMaxIterations?" "+parseInt(this.loopMaxIterations)+".0;\n":" 100.0;\n"}},{key:"_getConstantsString",value:function(){var t=[],e=this.threadDim,n=this.texSize;return this.hardcodeConstants?t.push("highp vec3 uOutputDim = vec3("+e[0]+","+e[1]+", "+e[2]+")","highp vec2 uTexSize = vec2("+n[0]+", "+n[1]+")"):t.push("uniform highp vec3 uOutputDim","uniform highp vec2 uTexSize"),this._linesToString(t)}},{key:"_getTextureCoordinate",value:function(){var t=this.subKernelOutputVariableNames;return null===t||t.length<1?"varying highp vec2 vTexCoord;\n":"out highp vec2 vTexCoord;\n"}},{key:"_getDecode32EndiannessString",value:function(){return"LE"===this.endianness?"":" rgba.rgba = rgba.abgr;\n"}},{key:"_getEncode32EndiannessString",value:function(){return"LE"===this.endianness?"":" rgba.rgba = rgba.abgr;\n"}},{key:"_getGetWraparoundString",value:function(){return this.wraparound?" xyz = mod(xyz, texDim);\n":""}},{key:"_getGetTextureChannelString",value:function(){return this.floatTextures?this._linesToString([" int channel = int(integerMod(index, 4.0))"," index = float(int(index) / 4)"]):""}},{key:"_getGetTextureIndexString",value:function(){return this.floatTextures?" index = float(int(index)/4);\n":""}},{key:"_getGetResultString",value:function(){return this.floatTextures?this._linesToString([" if (channel == 0) return texel.r"," if (channel == 1) return texel.g"," if (channel == 2) return texel.b"," if (channel == 3) return texel.a"]):" return decode32(texel);\n"}},{key:"_getMainParamsString",value:function(t){for(var e=[],n=this.paramTypes,i=this.paramNames,r=0;r<i.length;r++){var s=t[r],a=i[r],o=n[r];if(this.hardcodeConstants)if("Array"===o||"Texture"===o){var h=u.getDimensions(s,!0),l=u.dimToTexSize({floatTextures:this.floatTextures,floatOutput:this.floatOutput},h);e.push("uniform highp sampler2D user_"+a,"highp vec2 user_"+a+"Size = vec2("+l[0]+".0, "+l[1]+".0)","highp vec3 user_"+a+"Dim = vec3("+h[0]+".0, "+h[1]+".0, "+h[2]+".0)")}else"Number"===o&&Number.isInteger(s)?e.push("highp float user_"+a+" = "+s+".0"):"Number"===o&&e.push("highp float user_"+a+" = "+s);else"Array"===o||"Texture"===o?e.push("uniform highp sampler2D user_"+a,"uniform highp vec2 user_"+a+"Size","uniform highp vec3 user_"+a+"Dim"):"Number"===o&&e.push("uniform highp float user_"+a)}return this._linesToString(e)}},{key:"_getMainConstantsString",value:function(){var t=[];if(this.constants)for(var e in this.constants)if(this.constants.hasOwnProperty(e)){var n=parseFloat(this.constants[e]);Number.isInteger(n)?t.push("const float constants_"+e+" = "+parseInt(n)+".0"):t.push("const float constants_"+e+" = "+parseFloat(n))}return this._linesToString(t)}},{key:"_getKernelString",value:function(){var t=[],e=this.subKernelOutputVariableNames;if(null!==e){t.push("highp float kernelResult = 0.0");for(var n=0;n<e.length;n++)t.push("highp float "+e[n]+" = 0.0")}else t.push("highp float kernelResult = 0.0");return this._linesToString(t)+this.functionBuilder.getPrototypeString("kernel")}},{key:"_getMainResultString",value:function(){var t=this.subKernelOutputVariableNames,e=[];if(this.floatOutput&&e.push(" index *= 4.0"),this.graphical)e.push(" threadId = indexTo3D(index, uOutputDim)"," kernel()"," gl_FragColor = actualColor");else if(this.floatOutput)e.push(" threadId = indexTo3D(index, uOutputDim)"," kernel()"," gl_FragColor.r = kernelResult"," index += 1.0"," threadId = indexTo3D(index, uOutputDim)"," kernel()"," gl_FragColor.g = kernelResult"," index += 1.0"," threadId = indexTo3D(index, uOutputDim)"," kernel()"," gl_FragColor.b = kernelResult"," index += 1.0"," threadId = indexTo3D(index, uOutputDim)"," kernel()"," gl_FragColor.a = kernelResult");else if(null!==t){e.push(" threadId = indexTo3D(index, uOutputDim)"),e.push(" kernel()"),e.push(" gl_FragData[0] = encode32(kernelResult)");for(var n=0;n<t.length;n++)e.push(" gl_FragData["+(n+1)+"] = encode32("+t[n]+")")}else e.push(" threadId = indexTo3D(index, uOutputDim)"," kernel()"," gl_FragColor = encode32(kernelResult)");return this._linesToString(e)}},{key:"_linesToString",value:function(t){return t.length>0?t.join(";\n")+";\n":"\n"}},{key:"_replaceArtifacts",value:function(t,e){return t.replace(/[ ]*__([A-Z]+[0-9]*([_]?[A-Z])*)__;\n/g,function(t,n){if(e.hasOwnProperty(n))return e[n];throw"unhandled artifact "+n})}},{key:"_addKernels",value:function(){var t=this.functionBuilder,e=this._webGl;if(t.addKernel(this.fnString,{prototypeOnly:!1,constants:this.constants,debug:this.debug,loopMaxIterations:this.loopMaxIterations},this.paramNames,this.paramTypes),null!==this.subKernels){var n=this.ext=e.getExtension("WEBGL_draw_buffers");if(!n)throw new Error("could not instantiate draw buffers extension");this.subKernelOutputTextures=[],this.subKernelOutputVariableNames=[];for(var i=0;i<this.subKernels.length;i++){var r=this.subKernels[i];t.addSubKernel(r,{prototypeOnly:!1,constants:this.constants,debug:this.debug,loopMaxIterations:this.loopMaxIterations}),this.subKernelOutputTextures.push(this.getSubKernelTexture(i)),this.subKernelOutputVariableNames.push(r.name+"Result")}}else if(null!==this.subKernelProperties){var s=this.ext=e.getExtension("WEBGL_draw_buffers");if(!s)throw new Error("could not instantiate draw buffers extension");this.subKernelOutputTextures=[],this.subKernelOutputVariableNames=[];var a=0;for(var o in this.subKernelProperties)if(this.subKernelProperties.hasOwnProperty(o)){var u=this.subKernelProperties[o];t.addSubKernel(u,{prototypeOnly:!1,constants:this.constants,debug:this.debug,loopMaxIterations:this.loopMaxIterations}),this.subKernelOutputTextures.push(this.getSubKernelTexture(o)),this.subKernelOutputVariableNames.push(u.name+"Result"),a++}}}},{key:"_getFragShaderString",value:function(t){return null!==this.compiledFragShaderString?this.compiledFragShaderString:this.compiledFragShaderString=this._replaceArtifacts(l,this._getFragShaderArtifactMap(t))}},{key:"_getVertShaderString",value:function(t){return null!==this.compiledVertShaderString?this.compiledVertShaderString:this.compiledVertShaderString=c}},{key:"toString",value:function(){return p(this)}}]),e}(o)},{"../../core/texture":22,"../../core/utils":24,"../kernel-base":8,"./kernel-string":13,"./shader-frag":16,"./shader-vert":17,fs:27}],15:[function(t,e,n){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),o=t("../runner-base"),u=t("./kernel"),h=(t("../../core/utils"),t("./function-builder"));e.exports=function(t){function e(t){i(this,e);var n=r(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,new h,t));return n.Kernel=u,n.kernel=null,n}return s(e,t),a(e,[{key:"getMode",value:function(){return"gpu"}}]),e}(o)},{"../../core/utils":24,"../runner-base":10,"./function-builder":11,"./kernel":14}],16:[function(t,e,n){e.exports="__HEADER__;\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\nconst float LOOP_MAX = __LOOP_MAX__;\n#define EPSILON 0.0000001;\n\n__CONSTANTS__;\n\nvarying highp vec2 vTexCoord;\n\nvec4 round(vec4 x) {\n return floor(x + 0.5);\n}\n\nhighp float round(highp float x) {\n return floor(x + 0.5);\n}\n\nvec2 integerMod(vec2 x, float y) {\n vec2 res = floor(mod(x, y));\n return res * step(1.0 - floor(y), -res);\n}\n\nvec3 integerMod(vec3 x, float y) {\n vec3 res = floor(mod(x, y));\n return res * step(1.0 - floor(y), -res);\n}\n\nvec4 integerMod(vec4 x, vec4 y) {\n vec4 res = floor(mod(x, y));\n return res * step(1.0 - floor(y), -res);\n}\n\nhighp float integerMod(highp float x, highp float y) {\n highp float res = floor(mod(x, y));\n return res * (res > floor(y) - 1.0 ? 0.0 : 1.0);\n}\n\nhighp int integerMod(highp int x, highp int y) {\n return int(integerMod(float(x), float(y)));\n}\n\n// Here be dragons!\n// DO NOT OPTIMIZE THIS CODE\n// YOU WILL BREAK SOMETHING ON SOMEBODY'S MACHINE\n// LEAVE IT AS IT IS, LEST YOU WASTE YOUR OWN TIME\nconst vec2 MAGIC_VEC = vec2(1.0, -256.0);\nconst vec4 SCALE_FACTOR = vec4(1.0, 256.0, 65536.0, 0.0);\nconst vec4 SCALE_FACTOR_INV = vec4(1.0, 0.00390625, 0.0000152587890625, 0.0); // 1, 1/256, 1/65536\nhighp float decode32(highp vec4 rgba) {\n __DECODE32_ENDIANNESS__;\n rgba *= 255.0;\n vec2 gte128;\n gte128.x = rgba.b >= 128.0 ? 1.0 : 0.0;\n gte128.y = rgba.a >= 128.0 ? 1.0 : 0.0;\n float exponent = 2.0 * rgba.a - 127.0 + dot(gte128, MAGIC_VEC);\n float res = exp2(round(exponent));\n rgba.b = rgba.b - 128.0 * gte128.x;\n res = dot(rgba, SCALE_FACTOR) * exp2(round(exponent-23.0)) + res;\n res *= gte128.y * -2.0 + 1.0;\n return res;\n}\n\nhighp vec4 encode32(highp float f) {\n highp float F = abs(f);\n highp float sign = f < 0.0 ? 1.0 : 0.0;\n highp float exponent = floor(log2(F));\n highp float mantissa = (exp2(-exponent) * F);\n // exponent += floor(log2(mantissa));\n vec4 rgba = vec4(F * exp2(23.0-exponent)) * SCALE_FACTOR_INV;\n rgba.rg = integerMod(rgba.rg, 256.0);\n rgba.b = integerMod(rgba.b, 128.0);\n rgba.a = exponent*0.5 + 63.5;\n rgba.ba += vec2(integerMod(exponent+127.0, 2.0), sign) * 128.0;\n rgba = floor(rgba);\n rgba *= 0.003921569; // 1/255\n __ENCODE32_ENDIANNESS__;\n return rgba;\n}\n// Dragons end here\n\nhighp float index;\nhighp vec3 threadId;\n\nhighp vec3 indexTo3D(highp float idx, highp vec3 texDim) {\n highp float z = floor(idx / (texDim.x * texDim.y));\n idx -= z * texDim.x * texDim.y;\n highp float y = floor(idx / texDim.x);\n highp float x = integerMod(idx, texDim.x);\n return vec3(x, y, z);\n}\n\nhighp float get(highp sampler2D tex, highp vec2 texSize, highp vec3 texDim, highp float z, highp float y, highp float x) {\n highp vec3 xyz = vec3(x, y, z);\n xyz = floor(xyz + 0.5);\n __GET_WRAPAROUND__;\n highp float index = round(xyz.x + texDim.x * (xyz.y + texDim.y * xyz.z));\n __GET_TEXTURE_CHANNEL__;\n highp float w = round(texSize.x);\n vec2 st = vec2(integerMod(index, w), float(int(index) / int(w))) + 0.5;\n __GET_TEXTURE_INDEX__;\n highp vec4 texel = texture2D(tex, st / texSize);\n __GET_RESULT__;\n}\n\nhighp float get(highp sampler2D tex, highp vec2 texSize, highp vec3 texDim, highp float y, highp float x) {\n return get(tex, texSize, texDim, 0.0, y, x);\n}\n\nhighp float get(highp sampler2D tex, highp vec2 texSize, highp vec3 texDim, highp float x) {\n return get(tex, texSize, texDim, 0.0, 0.0, x);\n}\n\nhighp vec4 actualColor;\nvoid color(float r, float g, float b, float a) {\n actualColor = vec4(r,g,b,a);\n}\n\nvoid color(float r, float g, float b) {\n color(r,g,b,1.0);\n}\n\n__MAIN_PARAMS__;\n__MAIN_CONSTANTS__;\n__KERNEL__;\n\nvoid main(void) {\n index = floor(vTexCoord.s * float(uTexSize.x)) + floor(vTexCoord.t * float(uTexSize.y)) * uTexSize.x;\n __MAIN_RESULT__;\n}";
|
||
},{}],17:[function(t,e,n){e.exports="precision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\nattribute highp vec2 aPos;\nattribute highp vec2 aTexCoord;\n\nvarying highp vec2 vTexCoord;\n\nvoid main(void) {\n gl_Position = vec4(aPos, 0, 1);\n vTexCoord = aTexCoord;\n}"},{}],18:[function(t,e,n){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),o=t("./kernel"),u=t("../../core/utils");e.exports=function(t){function e(){return i(this,e),r(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}return s(e,t),a(e,[{key:"validateOptions",value:function(){this.texSize=u.dimToTexSize({floatTextures:this.floatTextures,floatOutput:this.floatOutput},this.dimensions,!0)}}]),e}(o)},{"../../core/utils":24,"./kernel":14}],19:[function(t,e,n){var i=t("./utils");e.exports=function(t,e){var n=e.toString();return new Function("return function "+t+" ("+i.getParamNamesFromString(n).join(", ")+") {"+i.getFunctionBodyFromString(n)+"}")()}},{"./utils":24}],20:[function(t,e,n){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}();t("./utils-core");e.exports=function(){function t(){i(this,t)}return r(t,null,[{key:"validateKernelObj",value:function(t){if(null==t)throw"KernelObj being validated is NULL";if("string"==typeof t){try{t=JSON.parse(t)}catch(e){throw console.error(e),"Failed to convert KernelObj from JSON string"}if(null==t)throw"Invalid (NULL) KernelObj JSON string representation"}if(1!=t.isKernelObj)throw"Failed missing isKernelObj flag check";return t}},{key:"loadKernelObj",value:function(t,e){t=validateKernelObj(t)}}]),t}()},{"./utils-core":23}],21:[function(t,e,n){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),o=t("./utils"),u=t("../backend/web-gl/runner"),h=t("../backend/cpu/runner"),l=t("../backend/web-gl/validator-kernel"),c=t("./gpu-core"),p=function(t){function e(t){i(this,e);var n=r(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));t=t||{},n._canvas=t.canvas||null,n._webGl=t.webGl||null;var s=t.mode||"webgl";o.isWebGlSupported()||(console.warn("Warning: gpu not supported, falling back to cpu support"),s="cpu"),n.kernels=[];var a={canvas:n._canvas,webGl:n._webGl};if(s)switch(s.toLowerCase()){case"cpu":n._runner=new h(a);break;case"gpu":case"webgl":n._runner=new u(a);break;case"webgl-validator":n._runner=new u(a),n._runner.Kernel=l;break;default:throw new Error('"'+s+'" mode is not defined')}return n}return s(e,t),a(e,[{key:"createKernel",value:function(t,e){if("undefined"==typeof t)throw"Missing fn parameter";if(!o.isFunction(t))throw"fn parameter not a function";var n=this._runner.buildKernel(t,e||{});return this._canvas||(this._canvas=n.getCanvas()),this._runner.canvas||(this._runner.canvas=n.getCanvas()),this.kernels.push(n),n}},{key:"createKernelMap",value:function(){var t=void 0,e=void 0;"function"==typeof arguments[arguments.length-2]?(t=arguments[arguments.length-2],e=arguments[arguments.length-1]):t=arguments[arguments.length-1],o.isWebGlDrawBuffersSupported()||(this._runner=new h(e));var n=this.createKernel(t,e);if(Array.isArray(arguments[0]))for(var i=arguments[0],r=0;r<i.length;r++)n.addSubKernel(i[r]);else{var s=arguments[0];for(var a in s)s.hasOwnProperty(a)&&n.addSubKernelProperty(a,s[a])}return n}},{key:"combineKernels",value:function(){var t=arguments[arguments.length-2],e=arguments[arguments.length-1];if("cpu"===this.getMode())return e;for(var n=arguments[0].getCanvas(),i=arguments[0].getWebGl(),r=0;r<arguments.length-1;r++)arguments[r].setCanvas(n).setWebGl(i).setOutputToTexture(!0);return function(){e.apply(null,arguments);var n=t.texSize,i=t.getWebGl(),r=t.threadDim,s=void 0;if(t.floatOutput)s=new Float32Array(n[0]*n[1]*4),i.readPixels(0,0,n[0],n[1],i.RGBA,i.FLOAT,s);else{var a=new Uint8Array(n[0]*n[1]*4);i.readPixels(0,0,n[0],n[1],i.RGBA,i.UNSIGNED_BYTE,a),s=new Float32Array(a.buffer)}if(s=s.subarray(0,r[0]*r[1]*r[2]),1===t.dimensions.length)return s;if(2===t.dimensions.length)return o.splitArray(s,t.dimensions[0]);if(3===t.dimensions.length){var u=o.splitArray(s,t.dimensions[0]*t.dimensions[1]);return u.map(function(e){return o.splitArray(e,t.dimensions[0])})}}}},{key:"addFunction",value:function(t,e,n){return this._runner.functionBuilder.addFunction(null,t,e,n),this}},{key:"getMode",value:function(){return this._runner.getMode()}},{key:"isWebGlSupported",value:function(){return o.isWebGlSupported()}},{key:"getCanvas",value:function(){return this._canvas}},{key:"getWebGl",value:function(){return this._webGl}}]),e}(c);Object.assign(p,c),e.exports=p},{"../backend/cpu/runner":5,"../backend/web-gl/runner":15,"../backend/web-gl/validator-kernel":18,"./gpu-core":20,"./utils":24}],22:[function(t,e,n){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}();e.exports=function(){function t(e,n,r,s){i(this,t),this.texture=e,this.size=n,this.dimensions=r,this.webGl=s,this.kernel=null}return r(t,[{key:"toArray",value:function(t){if(!t)throw new Error("You need to pass the GPU object for toArray to work.");return this.kernel?this.kernel(this):(this.kernel=t.createKernel(function(t){return t[this.thread.z][this.thread.y][this.thread.x]}).setDimensions(this.dimensions),this.kernel(this))}},{key:"delete",value:function(){return this.webGl.deleteTexture(this.texture)}}]),t}()},{}],23:[function(t,e,n){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),s=function(){function t(){i(this,t)}return r(t,null,[{key:"isCanvas",value:function(t){return null!==t&&t.nodeName&&t.getContext&&"CANVAS"===t.nodeName.toUpperCase()}},{key:"isCanvasSupported",value:function(){return a}},{key:"initCanvas",value:function(){if(!a)return null;var t=document.createElement("canvas");return t.width=2,t.height=2,t}},{key:"isWebGl",value:function(t){return t&&"function"==typeof t.getExtension}},{key:"isWebGlSupported",value:function(){return u}},{key:"isWebGlDrawBuffersSupported",value:function(){return h}},{key:"initWebGlDefaultOptions",value:function(){return{alpha:!1,depth:!1,antialias:!1}}},{key:"initWebGl",value:function(e){if(("undefined"!=typeof a||null===e)&&!a)return null;if(!t.isCanvas(e))throw new Error("Invalid canvas object - "+e);var n=e.getContext("experimental-webgl",t.initWebGlDefaultOptions())||e.getContext("webgl",t.initWebGlDefaultOptions());return n&&(n.OES_texture_float=n.getExtension("OES_texture_float"),n.OES_texture_float_linear=n.getExtension("OES_texture_float_linear"),n.OES_element_index_uint=n.getExtension("OES_element_index_uint")),n}}]),t}(),a="undefined"!=typeof document&&s.isCanvas(document.createElement("canvas")),o=s.initWebGl(s.initCanvas()),u=s.isWebGl(o),h=u&&Boolean(o.getExtension("WEBGL_draw_buffers"));u?(s.OES_texture_float=o.OES_texture_float,s.OES_texture_float_linear=o.OES_texture_float_linear,s.OES_element_index_uint=o.OES_element_index_uint):(s.OES_texture_float=!1,s.OES_texture_float_linear=!1,s.OES_element_index_uint=!1),e.exports=s},{}],24:[function(t,e,n){function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=function(){function t(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}}(),u=t("./utils-core"),h=t("./texture"),l=/function ([^(]*)/,c=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,p=/([^\s,]+)/g,f=function(){var t=new ArrayBuffer(4),e=new Uint32Array(t),n=new Uint8Array(t);if(e[0]=3735928559,239===n[0])return"LE";if(222===n[0])return"BE";throw new Error("unknown endianness")}(),d=null,m=function(e){function n(){return i(this,n),r(this,(n.__proto__||Object.getPrototypeOf(n)).apply(this,arguments))}return s(n,e),o(n,null,[{key:"systemEndianness",value:function(){return f}},{key:"isFunction",value:function(t){return"function"==typeof t}},{key:"isFunctionString",value:function(t){return null!==t&&"function"===t.toString().slice(0,"function".length).toLowerCase()}},{key:"getFunctionNameFromString",value:function(t){return l.exec(t)[1]}},{key:"getFunctionBodyFromString",value:function(t){return t.substring(t.indexOf("{")+1,t.lastIndexOf("}"))}},{key:"getParamNamesFromString",value:function(t){var e=t.toString().replace(c,""),n=e.slice(e.indexOf("(")+1,e.indexOf(")")).match(p);return null===n&&(n=[]),n}},{key:"clone",value:function(t){if(null===t||"object"!==("undefined"==typeof t?"undefined":a(t))||t.hasOwnProperty("isActiveClone"))return t;var e=t.constructor();for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(t.isActiveClone=null,e[i]=n.clone(t[i]),delete t.isActiveClone);return e}},{key:"newPromise",value:function(t){var e=Promise||small_promise;if(null===e)throw TypeError("Browser is missing Promise implementation. Consider adding small_promise.js polyfill");return new e(t)}},{key:"functionBinder",value:function(t,e){return t.bind?t.bind(e):function(){var n=1===arguments.length?[arguments[0]]:Array.apply(null,arguments);return t.apply(e,n)}}},{key:"isArray",value:function(t){return!isNaN(t.length)}},{key:"getArgumentType",value:function(t){return n.isArray(t)?"Array":"number"==typeof t?"Number":t instanceof h?"Texture":"Unknown"}},{key:"isFloatReadPixelsSupported",value:function(){if(null!==d)return d;var e=t("../index"),n=new e({mode:"webgl-validator"}).createKernel(function(){return 1},{dimensions:[2],floatTextures:!0,floatOutput:!0,floatOutputForce:!0})();return d=1===n[0]}},{key:"dimToTexSize",value:function(t,e,n){for(var i=e[0],r=1;r<e.length;r++)i*=e[r];!t.floatTextures||n&&!t.floatOutput||(i=Math.ceil(i/4));var s=Math.ceil(Math.sqrt(i));return[s,s]}},{key:"getDimensions",value:function(t,e){var i=void 0;if(n.isArray(t)){for(var r=[],s=t;n.isArray(s);)r.push(s.length),s=s[0];i=r.reverse()}else{if(!(t instanceof h))throw"Unknown dimensions of "+t;i=t.dimensions}if(e)for(i=n.clone(i);i.length<3;)i.push(1);return i}},{key:"pad",value:function(t,e){function n(t){return Array.apply(null,new Array(t)).map(Number.prototype.valueOf,0)}for(var i=t.length+2*e,r=t.map(function(t){return[].concat(n(e),t,n(e))}),s=0;s<e;s++)r=[].concat([n(i)],r,[n(i)]);return r}},{key:"flatten2dArrayTo",value:function(t,e){for(var n=0,i=0;i<t.length;i++)e.set(t[i],n),n+=t[i].length}},{key:"flatten3dArrayTo",value:function(t,e){for(var n=0,i=0;i<t.length;i++)for(var r=0;r<t[i].length;r++)e.set(t[i][r],n),n+=t[i][r].length}},{key:"flattenTo",value:function(t,e){n.isArray(t[0])?n.isArray(t[0][0])?n.flatten3dArrayTo(t,e):n.flatten2dArrayTo(t,e):e.set(t)}},{key:"splitArray",value:function(t,e){for(var n=[],i=0;i<t.length;i+=e)n.push(t.slice(i,i+e));return n}},{key:"getAstString",value:function(t,e){var n=Array.isArray(t)?t:t.split(/\r?\n/g),i=e.loc.start,r=e.loc.end,s=[];s.push(n[i.line-1].slice(i.column));for(var a=i.line;a<r.line-1;a++)s.push(n[a]);return s.push(n[r.line-1].slice(0,r.column)),s.join("\n")}},{key:"allPropertiesOf",value:function(t){var e=[];do e.push.apply(e,Object.getOwnPropertyNames(t));while(t=Object.getPrototypeOf(t));return e}}]),n}(u);Object.assign(m,u),e.exports=m},{"../index":25,"./texture":22,"./utils-core":23}],25:[function(t,e,n){var i=t("./core/gpu"),r=t("./core/alias"),s=t("./core/utils"),a=t("./backend/cpu/function-builder"),o=t("./backend/cpu/function-node"),u=t("./backend/cpu/kernel"),h=t("./backend/cpu/runner"),l=t("./backend/web-gl/function-builder"),c=t("./backend/web-gl/function-node"),p=t("./backend/web-gl/kernel"),f=t("./backend/web-gl/runner");i.alias=r,i.utils=s,i.CPUFunctionBuilder=a,i.CPUFunctionNode=o,i.CPUKernel=u,i.CPURunner=h,i.WebGLFunctionBuilder=l,i.WebGLFunctionNode=c,i.WebGLKernel=p,i.WebGLRunner=f,"undefined"!=typeof e&&(e.exports=i),"undefined"!=typeof window&&(window.GPU=i)},{"./backend/cpu/function-builder":1,"./backend/cpu/function-node":2,"./backend/cpu/kernel":4,"./backend/cpu/runner":5,"./backend/web-gl/function-builder":11,"./backend/web-gl/function-node":12,"./backend/web-gl/kernel":14,"./backend/web-gl/runner":15,"./core/alias":19,"./core/gpu":21,"./core/utils":24}],26:[function(t,e,n){!function(t,i){"object"==typeof n&&"undefined"!=typeof e?i(n):"function"==typeof define&&define.amd?define(["exports"],i):i(t.acorn=t.acorn||{})}(this,function(t){function e(t,e){for(var n=65536,i=0;i<e.length;i+=2){if(n+=e[i],n>t)return!1;if(n+=e[i+1],n>=t)return!0}}function n(t,n){return t<65?36===t:t<91||(t<97?95===t:t<123||(t<=65535?t>=170&&w.test(String.fromCharCode(t)):n!==!1&&e(t,A)))}function i(t,n){return t<48?36===t:t<58||!(t<65)&&(t<91||(t<97?95===t:t<123||(t<=65535?t>=170&&T.test(String.fromCharCode(t)):n!==!1&&(e(t,A)||e(t,O)))))}function r(t,e){return new C(t,{beforeExpr:!0,binop:e})}function s(t,e){return void 0===e&&(e={}),e.keyword=t,F[t]=new C(t,e)}function a(t){return 10===t||13===t||8232===t||8233===t}function o(t,e){return M.call(t,e)}function u(t,e){for(var n=1,i=0;;){D.lastIndex=i;var r=D.exec(t);if(!(r&&r.index<e))return new B(n,e-i);++n,i=r.index+r[0].length}}function h(t){var e={};for(var n in z)e[n]=t&&o(t,n)?t[n]:z[n];if(e.ecmaVersion>=2015&&(e.ecmaVersion-=2009),null==e.allowReserved&&(e.allowReserved=e.ecmaVersion<5),U(e.onToken)){var i=e.onToken;e.onToken=function(t){return i.push(t)}}return U(e.onComment)&&(e.onComment=l(e,e.onComment)),e}function l(t,e){return function(n,i,r,s,a,o){var u={type:n?"Block":"Line",value:i,start:r,end:s};t.locations&&(u.loc=new K(this,a,o)),t.ranges&&(u.range=[r,s]),e.push(u)}}function c(t){return new RegExp("^(?:"+t.replace(/ /g,"|")+")$")}function p(){this.shorthandAssign=this.trailingComma=this.parenthesizedAssign=this.parenthesizedBind=-1}function f(t,e,n,i){return t.type=e,t.end=n,this.options.locations&&(t.loc.end=i),this.options.ranges&&(t.range[1]=n),t}function d(t,e,n,i){try{return new RegExp(t,e)}catch(r){if(void 0!==n)throw r instanceof SyntaxError&&i.raise(n,"Error parsing regular expression: "+r.message),r}}function m(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode((t>>10)+55296,(1023&t)+56320))}function g(t,e){return new X(e,t).parse()}function y(t,e,n){var i=new X(n,t,e);return i.nextToken(),i.parseExpression()}function b(t,e){return new X(e,t)}function v(e,n,i){t.parse_dammit=e,t.LooseParser=n,t.pluginsLoose=i}var x={3:"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile",5:"class enum extends super const export import",6:"enum",strict:"implements interface let package private protected public static yield",strictBind:"eval arguments"},k="break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this",_={5:k,6:k+" const class extends export import super"},S="ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞮꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",E="·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣔ-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఃా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഁ-ഃാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ູົຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭ᳲ-᳴᳸᳹᷀-᷵᷻-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱꤀-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_",w=new RegExp("["+S+"]"),T=new RegExp("["+S+E+"]");S=E=null;var A=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541],O=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239],C=function(t,e){void 0===e&&(e={}),this.label=t,this.keyword=e.keyword,this.beforeExpr=!!e.beforeExpr,this.startsExpr=!!e.startsExpr,this.isLoop=!!e.isLoop,this.isAssign=!!e.isAssign,this.prefix=!!e.prefix,this.postfix=!!e.postfix,this.binop=e.binop||null,this.updateContext=null},N={beforeExpr:!0},P={startsExpr:!0},F={},R={num:new C("num",P),regexp:new C("regexp",P),string:new C("string",P),name:new C("name",P),eof:new C("eof"),bracketL:new C("[",{beforeExpr:!0,startsExpr:!0}),bracketR:new C("]"),braceL:new C("{",{beforeExpr:!0,startsExpr:!0}),braceR:new C("}"),parenL:new C("(",{beforeExpr:!0,startsExpr:!0}),parenR:new C(")"),comma:new C(",",N),semi:new C(";",N),colon:new C(":",N),dot:new C("."),question:new C("?",N),arrow:new C("=>",N),template:new C("template"),invalidTemplate:new C("invalidTemplate"),ellipsis:new C("...",N),backQuote:new C("`",P),dollarBraceL:new C("${",{beforeExpr:!0,startsExpr:!0}),eq:new C("=",{beforeExpr:!0,isAssign:!0}),assign:new C("_=",{beforeExpr:!0,isAssign:!0}),incDec:new C("++/--",{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new C("prefix",{beforeExpr:!0,prefix:!0,startsExpr:!0}),logicalOR:r("||",1),logicalAND:r("&&",2),bitwiseOR:r("|",3),bitwiseXOR:r("^",4),bitwiseAND:r("&",5),equality:r("==/!=",6),relational:r("</>",7),bitShift:r("<</>>",8),plusMin:new C("+/-",{beforeExpr:!0,binop:9,prefix:!0,startsExpr:!0}),modulo:r("%",10),star:r("*",10),slash:r("/",10),starstar:new C("**",{beforeExpr:!0}),_break:s("break"),_case:s("case",N),_catch:s("catch"),_continue:s("continue"),_debugger:s("debugger"),_default:s("default",N),_do:s("do",{isLoop:!0,beforeExpr:!0}),_else:s("else",N),_finally:s("finally"),_for:s("for",{isLoop:!0}),_function:s("function",P),_if:s("if"),_return:s("return",N),_switch:s("switch"),_throw:s("throw",N),_try:s("try"),_var:s("var"),_const:s("const"),_while:s("while",{isLoop:!0}),_with:s("with"),_new:s("new",{beforeExpr:!0,startsExpr:!0}),_this:s("this",P),_super:s("super",P),_class:s("class",P),_extends:s("extends",N),_export:s("export"),_import:s("import"),_null:s("null",P),_true:s("true",P),_false:s("false",P),_in:s("in",{beforeExpr:!0,binop:7}),_instanceof:s("instanceof",{beforeExpr:!0,binop:7}),_typeof:s("typeof",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_void:s("void",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_delete:s("delete",{beforeExpr:!0,prefix:!0,startsExpr:!0})},L=/\r\n?|\n|\u2028|\u2029/,D=new RegExp(L.source,"g"),I=/[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/,G=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,j=Object.prototype,M=j.hasOwnProperty,V=j.toString,U=Array.isArray||function(t){return"[object Array]"===V.call(t)},B=function(t,e){this.line=t,this.column=e};B.prototype.offset=function(t){return new B(this.line,this.column+t)};var K=function(t,e,n){this.start=e,this.end=n,null!==t.sourceFile&&(this.source=t.sourceFile)},z={ecmaVersion:7,sourceType:"script",onInsertedSemicolon:null,onTrailingComma:null,allowReserved:null,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowHashBang:!1,locations:!1,onToken:null,onComment:null,ranges:!1,program:null,sourceFile:null,directSourceFile:null,preserveParens:!1,plugins:{}},W={},X=function(t,e,n){this.options=t=h(t),this.sourceFile=t.sourceFile,this.keywords=c(_[t.ecmaVersion>=6?6:5]);var i="";if(!t.allowReserved){for(var r=t.ecmaVersion;!(i=x[r]);r--);"module"==t.sourceType&&(i+=" await")}this.reservedWords=c(i);var s=(i?i+" ":"")+x.strict;this.reservedWordsStrict=c(s),this.reservedWordsStrictBind=c(s+" "+x.strictBind),this.input=String(e),this.containsEsc=!1,this.loadPlugins(t.plugins),n?(this.pos=n,this.lineStart=this.input.lastIndexOf("\n",n-1)+1,this.curLine=this.input.slice(0,this.lineStart).split(L).length):(this.pos=this.lineStart=0,this.curLine=1),this.type=R.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=this.initialContext(),this.exprAllowed=!0,this.inModule="module"===t.sourceType,this.strict=this.inModule||this.strictDirective(this.pos),this.potentialArrowAt=-1,this.inFunction=this.inGenerator=this.inAsync=!1,this.yieldPos=this.awaitPos=0,this.labels=[],0===this.pos&&t.allowHashBang&&"#!"===this.input.slice(0,2)&&this.skipLineComment(2),this.scopeStack=[],this.enterFunctionScope()};X.prototype.isKeyword=function(t){return this.keywords.test(t)},X.prototype.isReservedWord=function(t){return this.reservedWords.test(t)},X.prototype.extend=function(t,e){this[t]=e(this[t])},X.prototype.loadPlugins=function(t){var e=this;for(var n in t){var i=W[n];if(!i)throw new Error("Plugin '"+n+"' not found");i(e,t[n])}},X.prototype.parse=function(){var t=this.options.program||this.startNode();return this.nextToken(),this.parseTopLevel(t)};var q=X.prototype,Y=/^(?:'((?:[^']|\.)*)'|"((?:[^"]|\.)*)"|;)/;q.strictDirective=function(t){for(var e=this;;){G.lastIndex=t,t+=G.exec(e.input)[0].length;var n=Y.exec(e.input.slice(t));if(!n)return!1;if("use strict"==(n[1]||n[2]))return!0;t+=n[0].length}},q.eat=function(t){return this.type===t&&(this.next(),!0)},q.isContextual=function(t){return this.type===R.name&&this.value===t},q.eatContextual=function(t){return this.value===t&&this.eat(R.name)},q.expectContextual=function(t){this.eatContextual(t)||this.unexpected()},q.canInsertSemicolon=function(){return this.type===R.eof||this.type===R.braceR||L.test(this.input.slice(this.lastTokEnd,this.start))},q.insertSemicolon=function(){if(this.canInsertSemicolon())return this.options.onInsertedSemicolon&&this.options.onInsertedSemicolon(this.lastTokEnd,this.lastTokEndLoc),!0},q.semicolon=function(){this.eat(R.semi)||this.insertSemicolon()||this.unexpected()},q.afterTrailingComma=function(t,e){if(this.type==t)return this.options.onTrailingComma&&this.options.onTrailingComma(this.lastTokStart,this.lastTokStartLoc),e||this.next(),!0},q.expect=function(t){this.eat(t)||this.unexpected()},q.unexpected=function(t){this.raise(null!=t?t:this.start,"Unexpected token")},q.checkPatternErrors=function(t,e){if(t){t.trailingComma>-1&&this.raiseRecoverable(t.trailingComma,"Comma is not permitted after the rest element");var n=e?t.parenthesizedAssign:t.parenthesizedBind;n>-1&&this.raiseRecoverable(n,"Parenthesized pattern")}},q.checkExpressionErrors=function(t,e){var n=t?t.shorthandAssign:-1;return e?void(n>-1&&this.raise(n,"Shorthand property assignments are valid only in destructuring patterns")):n>=0},q.checkYieldAwaitInDefaultParams=function(){this.yieldPos&&(!this.awaitPos||this.yieldPos<this.awaitPos)&&this.raise(this.yieldPos,"Yield expression cannot be a default value"),this.awaitPos&&this.raise(this.awaitPos,"Await expression cannot be a default value")},q.isSimpleAssignTarget=function(t){return"ParenthesizedExpression"===t.type?this.isSimpleAssignTarget(t.expression):"Identifier"===t.type||"MemberExpression"===t.type};var H=X.prototype;H.parseTopLevel=function(t){var e=this,n={};for(t.body||(t.body=[]);this.type!==R.eof;){var i=e.parseStatement(!0,!0,n);t.body.push(i)}return this.next(),this.options.ecmaVersion>=6&&(t.sourceType=this.options.sourceType),this.finishNode(t,"Program")};var J={kind:"loop"},$={kind:"switch"};H.isLet=function(){if(this.type!==R.name||this.options.ecmaVersion<6||"let"!=this.value)return!1;G.lastIndex=this.pos;var t=G.exec(this.input),e=this.pos+t[0].length,r=this.input.charCodeAt(e);if(91===r||123==r)return!0;if(n(r,!0)){for(var s=e+1;i(this.input.charCodeAt(s),!0);)++s;var a=this.input.slice(e,s);if(!this.isKeyword(a))return!0}return!1},H.isAsyncFunction=function(){if(this.type!==R.name||this.options.ecmaVersion<8||"async"!=this.value)return!1;G.lastIndex=this.pos;var t=G.exec(this.input),e=this.pos+t[0].length;return!(L.test(this.input.slice(this.pos,e))||"function"!==this.input.slice(e,e+8)||e+8!=this.input.length&&i(this.input.charAt(e+8)))},H.parseStatement=function(t,e,n){var i,r=this.type,s=this.startNode();switch(this.isLet()&&(r=R._var,i="let"),r){case R._break:case R._continue:return this.parseBreakContinueStatement(s,r.keyword);case R._debugger:return this.parseDebuggerStatement(s);case R._do:return this.parseDoStatement(s);case R._for:return this.parseForStatement(s);case R._function:return!t&&this.options.ecmaVersion>=6&&this.unexpected(),this.parseFunctionStatement(s,!1);case R._class:return t||this.unexpected(),this.parseClass(s,!0);case R._if:return this.parseIfStatement(s);case R._return:return this.parseReturnStatement(s);case R._switch:return this.parseSwitchStatement(s);case R._throw:return this.parseThrowStatement(s);case R._try:return this.parseTryStatement(s);case R._const:case R._var:return i=i||this.value,t||"var"==i||this.unexpected(),this.parseVarStatement(s,i);case R._while:return this.parseWhileStatement(s);case R._with:return this.parseWithStatement(s);case R.braceL:return this.parseBlock();case R.semi:return this.parseEmptyStatement(s);case R._export:case R._import:return this.options.allowImportExportEverywhere||(e||this.raise(this.start,"'import' and 'export' may only appear at the top level"),this.inModule||this.raise(this.start,"'import' and 'export' may appear only with 'sourceType: module'")),r===R._import?this.parseImport(s):this.parseExport(s,n);default:if(this.isAsyncFunction()&&t)return this.next(),this.parseFunctionStatement(s,!0);var a=this.value,o=this.parseExpression();return r===R.name&&"Identifier"===o.type&&this.eat(R.colon)?this.parseLabeledStatement(s,a,o):this.parseExpressionStatement(s,o)}},H.parseBreakContinueStatement=function(t,e){var n=this,i="break"==e;this.next(),this.eat(R.semi)||this.insertSemicolon()?t.label=null:this.type!==R.name?this.unexpected():(t.label=this.parseIdent(),this.semicolon());for(var r=0;r<this.labels.length;++r){var s=n.labels[r];if(null==t.label||s.name===t.label.name){if(null!=s.kind&&(i||"loop"===s.kind))break;if(t.label&&i)break}}return r===this.labels.length&&this.raise(t.start,"Unsyntactic "+e),this.finishNode(t,i?"BreakStatement":"ContinueStatement")},H.parseDebuggerStatement=function(t){return this.next(),this.semicolon(),this.finishNode(t,"DebuggerStatement")},H.parseDoStatement=function(t){return this.next(),this.labels.push(J),t.body=this.parseStatement(!1),this.labels.pop(),this.expect(R._while),t.test=this.parseParenExpression(),this.options.ecmaVersion>=6?this.eat(R.semi):this.semicolon(),this.finishNode(t,"DoWhileStatement")},H.parseForStatement=function(t){if(this.next(),this.labels.push(J),this.enterLexicalScope(),this.expect(R.parenL),this.type===R.semi)return this.parseFor(t,null);var e=this.isLet();if(this.type===R._var||this.type===R._const||e){var n=this.startNode(),i=e?"let":this.value;return this.next(),this.parseVar(n,!0,i),this.finishNode(n,"VariableDeclaration"),!(this.type===R._in||this.options.ecmaVersion>=6&&this.isContextual("of"))||1!==n.declarations.length||"var"!==i&&n.declarations[0].init?this.parseFor(t,n):this.parseForIn(t,n)}var r=new p,s=this.parseExpression(!0,r);return this.type===R._in||this.options.ecmaVersion>=6&&this.isContextual("of")?(this.toAssignable(s),this.checkLVal(s),this.checkPatternErrors(r,!0),this.parseForIn(t,s)):(this.checkExpressionErrors(r,!0),this.parseFor(t,s))},H.parseFunctionStatement=function(t,e){
|
||
return this.next(),this.parseFunction(t,!0,!1,e)},H.isFunction=function(){return this.type===R._function||this.isAsyncFunction()},H.parseIfStatement=function(t){return this.next(),t.test=this.parseParenExpression(),t.consequent=this.parseStatement(!this.strict&&this.isFunction()),t.alternate=this.eat(R._else)?this.parseStatement(!this.strict&&this.isFunction()):null,this.finishNode(t,"IfStatement")},H.parseReturnStatement=function(t){return this.inFunction||this.options.allowReturnOutsideFunction||this.raise(this.start,"'return' outside of function"),this.next(),this.eat(R.semi)||this.insertSemicolon()?t.argument=null:(t.argument=this.parseExpression(),this.semicolon()),this.finishNode(t,"ReturnStatement")},H.parseSwitchStatement=function(t){var e=this;this.next(),t.discriminant=this.parseParenExpression(),t.cases=[],this.expect(R.braceL),this.labels.push($),this.enterLexicalScope();for(var n,i=!1;this.type!=R.braceR;)if(e.type===R._case||e.type===R._default){var r=e.type===R._case;n&&e.finishNode(n,"SwitchCase"),t.cases.push(n=e.startNode()),n.consequent=[],e.next(),r?n.test=e.parseExpression():(i&&e.raiseRecoverable(e.lastTokStart,"Multiple default clauses"),i=!0,n.test=null),e.expect(R.colon)}else n||e.unexpected(),n.consequent.push(e.parseStatement(!0));return this.exitLexicalScope(),n&&this.finishNode(n,"SwitchCase"),this.next(),this.labels.pop(),this.finishNode(t,"SwitchStatement")},H.parseThrowStatement=function(t){return this.next(),L.test(this.input.slice(this.lastTokEnd,this.start))&&this.raise(this.lastTokEnd,"Illegal newline after throw"),t.argument=this.parseExpression(),this.semicolon(),this.finishNode(t,"ThrowStatement")};var Q=[];H.parseTryStatement=function(t){if(this.next(),t.block=this.parseBlock(),t.handler=null,this.type===R._catch){var e=this.startNode();this.next(),this.expect(R.parenL),e.param=this.parseBindingAtom(),this.enterLexicalScope(),this.checkLVal(e.param,"let"),this.expect(R.parenR),e.body=this.parseBlock(!1),this.exitLexicalScope(),t.handler=this.finishNode(e,"CatchClause")}return t.finalizer=this.eat(R._finally)?this.parseBlock():null,t.handler||t.finalizer||this.raise(t.start,"Missing catch or finally clause"),this.finishNode(t,"TryStatement")},H.parseVarStatement=function(t,e){return this.next(),this.parseVar(t,!1,e),this.semicolon(),this.finishNode(t,"VariableDeclaration")},H.parseWhileStatement=function(t){return this.next(),t.test=this.parseParenExpression(),this.labels.push(J),t.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(t,"WhileStatement")},H.parseWithStatement=function(t){return this.strict&&this.raise(this.start,"'with' in strict mode"),this.next(),t.object=this.parseParenExpression(),t.body=this.parseStatement(!1),this.finishNode(t,"WithStatement")},H.parseEmptyStatement=function(t){return this.next(),this.finishNode(t,"EmptyStatement")},H.parseLabeledStatement=function(t,e,n){for(var i=this,r=0,s=i.labels;r<s.length;r+=1){var a=s[r];a.name===e&&i.raise(n.start,"Label '"+e+"' is already declared")}for(var o=this.type.isLoop?"loop":this.type===R._switch?"switch":null,u=this.labels.length-1;u>=0;u--){var h=i.labels[u];if(h.statementStart!=t.start)break;h.statementStart=i.start,h.kind=o}return this.labels.push({name:e,kind:o,statementStart:this.start}),t.body=this.parseStatement(!0),("ClassDeclaration"==t.body.type||"VariableDeclaration"==t.body.type&&"var"!=t.body.kind||"FunctionDeclaration"==t.body.type&&(this.strict||t.body.generator))&&this.raiseRecoverable(t.body.start,"Invalid labeled declaration"),this.labels.pop(),t.label=n,this.finishNode(t,"LabeledStatement")},H.parseExpressionStatement=function(t,e){return t.expression=e,this.semicolon(),this.finishNode(t,"ExpressionStatement")},H.parseBlock=function(t){var e=this;void 0===t&&(t=!0);var n=this.startNode();for(n.body=[],this.expect(R.braceL),t&&this.enterLexicalScope();!this.eat(R.braceR);){var i=e.parseStatement(!0);n.body.push(i)}return t&&this.exitLexicalScope(),this.finishNode(n,"BlockStatement")},H.parseFor=function(t,e){return t.init=e,this.expect(R.semi),t.test=this.type===R.semi?null:this.parseExpression(),this.expect(R.semi),t.update=this.type===R.parenR?null:this.parseExpression(),this.expect(R.parenR),this.exitLexicalScope(),t.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(t,"ForStatement")},H.parseForIn=function(t,e){var n=this.type===R._in?"ForInStatement":"ForOfStatement";return this.next(),t.left=e,t.right=this.parseExpression(),this.expect(R.parenR),this.exitLexicalScope(),t.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(t,n)},H.parseVar=function(t,e,n){var i=this;for(t.declarations=[],t.kind=n;;){var r=i.startNode();if(i.parseVarId(r,n),i.eat(R.eq)?r.init=i.parseMaybeAssign(e):"const"!==n||i.type===R._in||i.options.ecmaVersion>=6&&i.isContextual("of")?"Identifier"==r.id.type||e&&(i.type===R._in||i.isContextual("of"))?r.init=null:i.raise(i.lastTokEnd,"Complex binding patterns require an initialization value"):i.unexpected(),t.declarations.push(i.finishNode(r,"VariableDeclarator")),!i.eat(R.comma))break}return t},H.parseVarId=function(t,e){t.id=this.parseBindingAtom(e),this.checkLVal(t.id,e,!1)},H.parseFunction=function(t,e,n,i){this.initFunction(t),this.options.ecmaVersion>=6&&!i&&(t.generator=this.eat(R.star)),this.options.ecmaVersion>=8&&(t.async=!!i),e&&(t.id="nullableID"===e&&this.type!=R.name?null:this.parseIdent(),t.id&&this.checkLVal(t.id,"var"));var r=this.inGenerator,s=this.inAsync,a=this.yieldPos,o=this.awaitPos,u=this.inFunction;return this.inGenerator=t.generator,this.inAsync=t.async,this.yieldPos=0,this.awaitPos=0,this.inFunction=!0,this.enterFunctionScope(),e||(t.id=this.type==R.name?this.parseIdent():null),this.parseFunctionParams(t),this.parseFunctionBody(t,n),this.inGenerator=r,this.inAsync=s,this.yieldPos=a,this.awaitPos=o,this.inFunction=u,this.finishNode(t,e?"FunctionDeclaration":"FunctionExpression")},H.parseFunctionParams=function(t){this.expect(R.parenL),t.params=this.parseBindingList(R.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams()},H.parseClass=function(t,e){var n=this;this.next(),this.parseClassId(t,e),this.parseClassSuper(t);var i=this.startNode(),r=!1;for(i.body=[],this.expect(R.braceL);!this.eat(R.braceR);)if(!n.eat(R.semi)){var s=n.startNode(),a=n.eat(R.star),o=!1,u=n.type===R.name&&"static"===n.value;n.parsePropertyName(s),s["static"]=u&&n.type!==R.parenL,s["static"]&&(a&&n.unexpected(),a=n.eat(R.star),n.parsePropertyName(s)),n.options.ecmaVersion>=8&&!a&&!s.computed&&"Identifier"===s.key.type&&"async"===s.key.name&&n.type!==R.parenL&&!n.canInsertSemicolon()&&(o=!0,n.parsePropertyName(s)),s.kind="method";var h=!1;if(!s.computed){var l=s.key;a||o||"Identifier"!==l.type||n.type===R.parenL||"get"!==l.name&&"set"!==l.name||(h=!0,s.kind=l.name,l=n.parsePropertyName(s)),!s["static"]&&("Identifier"===l.type&&"constructor"===l.name||"Literal"===l.type&&"constructor"===l.value)&&(r&&n.raise(l.start,"Duplicate constructor in the same class"),h&&n.raise(l.start,"Constructor can't have get/set modifier"),a&&n.raise(l.start,"Constructor can't be a generator"),o&&n.raise(l.start,"Constructor can't be an async method"),s.kind="constructor",r=!0)}if(n.parseClassMethod(i,s,a,o),h){var c="get"===s.kind?0:1;if(s.value.params.length!==c){var p=s.value.start;"get"===s.kind?n.raiseRecoverable(p,"getter should have no params"):n.raiseRecoverable(p,"setter should have exactly one param")}else"set"===s.kind&&"RestElement"===s.value.params[0].type&&n.raiseRecoverable(s.value.params[0].start,"Setter cannot use rest params")}}return t.body=this.finishNode(i,"ClassBody"),this.finishNode(t,e?"ClassDeclaration":"ClassExpression")},H.parseClassMethod=function(t,e,n,i){e.value=this.parseMethod(n,i),t.body.push(this.finishNode(e,"MethodDefinition"))},H.parseClassId=function(t,e){t.id=this.type===R.name?this.parseIdent():e===!0?this.unexpected():null},H.parseClassSuper=function(t){t.superClass=this.eat(R._extends)?this.parseExprSubscripts():null},H.parseExport=function(t,e){var n=this;if(this.next(),this.eat(R.star))return this.expectContextual("from"),t.source=this.type===R.string?this.parseExprAtom():this.unexpected(),this.semicolon(),this.finishNode(t,"ExportAllDeclaration");if(this.eat(R._default)){this.checkExport(e,"default",this.lastTokStart);var i;if(this.type===R._function||(i=this.isAsyncFunction())){var r=this.startNode();this.next(),i&&this.next(),t.declaration=this.parseFunction(r,"nullableID",!1,i)}else if(this.type===R._class){var s=this.startNode();t.declaration=this.parseClass(s,"nullableID")}else t.declaration=this.parseMaybeAssign(),this.semicolon();return this.finishNode(t,"ExportDefaultDeclaration")}if(this.shouldParseExportStatement())t.declaration=this.parseStatement(!0),"VariableDeclaration"===t.declaration.type?this.checkVariableExport(e,t.declaration.declarations):this.checkExport(e,t.declaration.id.name,t.declaration.id.start),t.specifiers=[],t.source=null;else{if(t.declaration=null,t.specifiers=this.parseExportSpecifiers(e),this.eatContextual("from"))t.source=this.type===R.string?this.parseExprAtom():this.unexpected();else{for(var a=0,o=t.specifiers;a<o.length;a+=1){var u=o[a];n.checkUnreserved(u.local)}t.source=null}this.semicolon()}return this.finishNode(t,"ExportNamedDeclaration")},H.checkExport=function(t,e,n){t&&(o(t,e)&&this.raiseRecoverable(n,"Duplicate export '"+e+"'"),t[e]=!0)},H.checkPatternExport=function(t,e){var n=this,i=e.type;if("Identifier"==i)this.checkExport(t,e.name,e.start);else if("ObjectPattern"==i)for(var r=0,s=e.properties;r<s.length;r+=1){var a=s[r];n.checkPatternExport(t,a.value)}else if("ArrayPattern"==i)for(var o=0,u=e.elements;o<u.length;o+=1){var h=u[o];h&&n.checkPatternExport(t,h)}else"AssignmentPattern"==i?this.checkPatternExport(t,e.left):"ParenthesizedExpression"==i&&this.checkPatternExport(t,e.expression)},H.checkVariableExport=function(t,e){var n=this;if(t)for(var i=0,r=e;i<r.length;i+=1){var s=r[i];n.checkPatternExport(t,s.id)}},H.shouldParseExportStatement=function(){return"var"===this.type.keyword||"const"===this.type.keyword||"class"===this.type.keyword||"function"===this.type.keyword||this.isLet()||this.isAsyncFunction()},H.parseExportSpecifiers=function(t){var e=this,n=[],i=!0;for(this.expect(R.braceL);!this.eat(R.braceR);){if(i)i=!1;else if(e.expect(R.comma),e.afterTrailingComma(R.braceR))break;var r=e.startNode();r.local=e.parseIdent(!0),r.exported=e.eatContextual("as")?e.parseIdent(!0):r.local,e.checkExport(t,r.exported.name,r.exported.start),n.push(e.finishNode(r,"ExportSpecifier"))}return n},H.parseImport=function(t){return this.next(),this.type===R.string?(t.specifiers=Q,t.source=this.parseExprAtom()):(t.specifiers=this.parseImportSpecifiers(),this.expectContextual("from"),t.source=this.type===R.string?this.parseExprAtom():this.unexpected()),this.semicolon(),this.finishNode(t,"ImportDeclaration")},H.parseImportSpecifiers=function(){var t=this,e=[],n=!0;if(this.type===R.name){var i=this.startNode();if(i.local=this.parseIdent(),this.checkLVal(i.local,"let"),e.push(this.finishNode(i,"ImportDefaultSpecifier")),!this.eat(R.comma))return e}if(this.type===R.star){var r=this.startNode();return this.next(),this.expectContextual("as"),r.local=this.parseIdent(),this.checkLVal(r.local,"let"),e.push(this.finishNode(r,"ImportNamespaceSpecifier")),e}for(this.expect(R.braceL);!this.eat(R.braceR);){if(n)n=!1;else if(t.expect(R.comma),t.afterTrailingComma(R.braceR))break;var s=t.startNode();s.imported=t.parseIdent(!0),t.eatContextual("as")?s.local=t.parseIdent():(t.checkUnreserved(s.imported),s.local=s.imported),t.checkLVal(s.local,"let"),e.push(t.finishNode(s,"ImportSpecifier"))}return e};var Z=X.prototype;Z.toAssignable=function(t,e){var n=this;if(this.options.ecmaVersion>=6&&t)switch(t.type){case"Identifier":this.inAsync&&"await"===t.name&&this.raise(t.start,"Can not use 'await' as identifier inside an async function");break;case"ObjectPattern":case"ArrayPattern":break;case"ObjectExpression":t.type="ObjectPattern";for(var i=0,r=t.properties;i<r.length;i+=1){var s=r[i];"init"!==s.kind&&n.raise(s.key.start,"Object pattern can't contain getter or setter"),n.toAssignable(s.value,e)}break;case"ArrayExpression":t.type="ArrayPattern",this.toAssignableList(t.elements,e);break;case"AssignmentExpression":if("="!==t.operator){this.raise(t.left.end,"Only '=' operator can be used for specifying default value.");break}t.type="AssignmentPattern",delete t.operator,this.toAssignable(t.left,e);case"AssignmentPattern":break;case"ParenthesizedExpression":this.toAssignable(t.expression,e);break;case"MemberExpression":if(!e)break;default:this.raise(t.start,"Assigning to rvalue")}return t},Z.toAssignableList=function(t,e){var n=this,i=t.length;if(i){var r=t[i-1];if(r&&"RestElement"==r.type)--i;else if(r&&"SpreadElement"==r.type){r.type="RestElement";var s=r.argument;this.toAssignable(s,e),--i}6===this.options.ecmaVersion&&e&&r&&"RestElement"===r.type&&"Identifier"!==r.argument.type&&this.unexpected(r.argument.start)}for(var a=0;a<i;a++){var o=t[a];o&&n.toAssignable(o,e)}return t},Z.parseSpread=function(t){var e=this.startNode();return this.next(),e.argument=this.parseMaybeAssign(!1,t),this.finishNode(e,"SpreadElement")},Z.parseRestBinding=function(){var t=this.startNode();return this.next(),6===this.options.ecmaVersion&&this.type!==R.name&&this.unexpected(),t.argument=this.parseBindingAtom(),this.finishNode(t,"RestElement")},Z.parseBindingAtom=function(){if(this.options.ecmaVersion<6)return this.parseIdent();switch(this.type){case R.name:return this.parseIdent();case R.bracketL:var t=this.startNode();return this.next(),t.elements=this.parseBindingList(R.bracketR,!0,!0),this.finishNode(t,"ArrayPattern");case R.braceL:return this.parseObj(!0);default:this.unexpected()}},Z.parseBindingList=function(t,e,n){for(var i=this,r=[],s=!0;!this.eat(t);)if(s?s=!1:i.expect(R.comma),e&&i.type===R.comma)r.push(null);else{if(n&&i.afterTrailingComma(t))break;if(i.type===R.ellipsis){var a=i.parseRestBinding();i.parseBindingListItem(a),r.push(a),i.type===R.comma&&i.raise(i.start,"Comma is not permitted after the rest element"),i.expect(t);break}var o=i.parseMaybeDefault(i.start,i.startLoc);i.parseBindingListItem(o),r.push(o)}return r},Z.parseBindingListItem=function(t){return t},Z.parseMaybeDefault=function(t,e,n){if(n=n||this.parseBindingAtom(),this.options.ecmaVersion<6||!this.eat(R.eq))return n;var i=this.startNodeAt(t,e);return i.left=n,i.right=this.parseMaybeAssign(),this.finishNode(i,"AssignmentPattern")},Z.checkLVal=function(t,e,n){var i=this;switch(t.type){case"Identifier":this.strict&&this.reservedWordsStrictBind.test(t.name)&&this.raiseRecoverable(t.start,(e?"Binding ":"Assigning to ")+t.name+" in strict mode"),n&&(o(n,t.name)&&this.raiseRecoverable(t.start,"Argument name clash"),n[t.name]=!0),e&&"none"!==e&&(("var"===e&&!this.canDeclareVarName(t.name)||"var"!==e&&!this.canDeclareLexicalName(t.name))&&this.raiseRecoverable(t.start,"Identifier '"+t.name+"' has already been declared"),"var"===e?this.declareVarName(t.name):this.declareLexicalName(t.name));break;case"MemberExpression":e&&this.raiseRecoverable(t.start,(e?"Binding":"Assigning to")+" member expression");break;case"ObjectPattern":for(var r=0,s=t.properties;r<s.length;r+=1){var a=s[r];i.checkLVal(a.value,e,n)}break;case"ArrayPattern":for(var u=0,h=t.elements;u<h.length;u+=1){var l=h[u];l&&i.checkLVal(l,e,n)}break;case"AssignmentPattern":this.checkLVal(t.left,e,n);break;case"RestElement":this.checkLVal(t.argument,e,n);break;case"ParenthesizedExpression":this.checkLVal(t.expression,e,n);break;default:this.raise(t.start,(e?"Binding":"Assigning to")+" rvalue")}};var tt=X.prototype;tt.checkPropClash=function(t,e){if(!(this.options.ecmaVersion>=6&&(t.computed||t.method||t.shorthand))){var n,i=t.key;switch(i.type){case"Identifier":n=i.name;break;case"Literal":n=String(i.value);break;default:return}var r=t.kind;if(this.options.ecmaVersion>=6)return void("__proto__"===n&&"init"===r&&(e.proto&&this.raiseRecoverable(i.start,"Redefinition of __proto__ property"),e.proto=!0));n="$"+n;var s=e[n];if(s){var a;a="init"===r?this.strict&&s.init||s.get||s.set:s.init||s[r],a&&this.raiseRecoverable(i.start,"Redefinition of property")}else s=e[n]={init:!1,get:!1,set:!1};s[r]=!0}},tt.parseExpression=function(t,e){var n=this,i=this.start,r=this.startLoc,s=this.parseMaybeAssign(t,e);if(this.type===R.comma){var a=this.startNodeAt(i,r);for(a.expressions=[s];this.eat(R.comma);)a.expressions.push(n.parseMaybeAssign(t,e));return this.finishNode(a,"SequenceExpression")}return s},tt.parseMaybeAssign=function(t,e,n){if(this.inGenerator&&this.isContextual("yield"))return this.parseYield();var i=!1,r=-1,s=-1;e?(r=e.parenthesizedAssign,s=e.trailingComma,e.parenthesizedAssign=e.trailingComma=-1):(e=new p,i=!0);var a=this.start,o=this.startLoc;this.type!=R.parenL&&this.type!=R.name||(this.potentialArrowAt=this.start);var u=this.parseMaybeConditional(t,e);if(n&&(u=n.call(this,u,a,o)),this.type.isAssign){this.checkPatternErrors(e,!0),i||p.call(e);var h=this.startNodeAt(a,o);return h.operator=this.value,h.left=this.type===R.eq?this.toAssignable(u):u,e.shorthandAssign=-1,this.checkLVal(u),this.next(),h.right=this.parseMaybeAssign(t),this.finishNode(h,"AssignmentExpression")}return i&&this.checkExpressionErrors(e,!0),r>-1&&(e.parenthesizedAssign=r),s>-1&&(e.trailingComma=s),u},tt.parseMaybeConditional=function(t,e){var n=this.start,i=this.startLoc,r=this.parseExprOps(t,e);if(this.checkExpressionErrors(e))return r;if(this.eat(R.question)){var s=this.startNodeAt(n,i);return s.test=r,s.consequent=this.parseMaybeAssign(),this.expect(R.colon),s.alternate=this.parseMaybeAssign(t),this.finishNode(s,"ConditionalExpression")}return r},tt.parseExprOps=function(t,e){var n=this.start,i=this.startLoc,r=this.parseMaybeUnary(e,!1);return this.checkExpressionErrors(e)?r:r.start==n&&"ArrowFunctionExpression"===r.type?r:this.parseExprOp(r,n,i,-1,t)},tt.parseExprOp=function(t,e,n,i,r){var s=this.type.binop;if(null!=s&&(!r||this.type!==R._in)&&s>i){var a=this.type===R.logicalOR||this.type===R.logicalAND,o=this.value;this.next();var u=this.start,h=this.startLoc,l=this.parseExprOp(this.parseMaybeUnary(null,!1),u,h,s,r),c=this.buildBinary(e,n,t,l,o,a);return this.parseExprOp(c,e,n,i,r)}return t},tt.buildBinary=function(t,e,n,i,r,s){var a=this.startNodeAt(t,e);return a.left=n,a.operator=r,a.right=i,this.finishNode(a,s?"LogicalExpression":"BinaryExpression")},tt.parseMaybeUnary=function(t,e){var n,i=this,r=this.start,s=this.startLoc;if(this.inAsync&&this.isContextual("await"))n=this.parseAwait(t),e=!0;else if(this.type.prefix){var a=this.startNode(),o=this.type===R.incDec;a.operator=this.value,a.prefix=!0,this.next(),a.argument=this.parseMaybeUnary(null,!0),this.checkExpressionErrors(t,!0),o?this.checkLVal(a.argument):this.strict&&"delete"===a.operator&&"Identifier"===a.argument.type?this.raiseRecoverable(a.start,"Deleting local variable in strict mode"):e=!0,n=this.finishNode(a,o?"UpdateExpression":"UnaryExpression")}else{if(n=this.parseExprSubscripts(t),this.checkExpressionErrors(t))return n;for(;this.type.postfix&&!this.canInsertSemicolon();){var u=i.startNodeAt(r,s);u.operator=i.value,u.prefix=!1,u.argument=n,i.checkLVal(n),i.next(),n=i.finishNode(u,"UpdateExpression")}}return!e&&this.eat(R.starstar)?this.buildBinary(r,s,n,this.parseMaybeUnary(null,!1),"**",!1):n},tt.parseExprSubscripts=function(t){var e=this.start,n=this.startLoc,i=this.parseExprAtom(t),r="ArrowFunctionExpression"===i.type&&")"!==this.input.slice(this.lastTokStart,this.lastTokEnd);if(this.checkExpressionErrors(t)||r)return i;var s=this.parseSubscripts(i,e,n);return t&&"MemberExpression"===s.type&&(t.parenthesizedAssign>=s.start&&(t.parenthesizedAssign=-1),t.parenthesizedBind>=s.start&&(t.parenthesizedBind=-1)),s},tt.parseSubscripts=function(t,e,n,i){for(var r=this,s=this.options.ecmaVersion>=8&&"Identifier"===t.type&&"async"===t.name&&this.lastTokEnd==t.end&&!this.canInsertSemicolon(),a=void 0;;)if((a=r.eat(R.bracketL))||r.eat(R.dot)){var o=r.startNodeAt(e,n);o.object=t,o.property=a?r.parseExpression():r.parseIdent(!0),o.computed=!!a,a&&r.expect(R.bracketR),t=r.finishNode(o,"MemberExpression")}else if(!i&&r.eat(R.parenL)){var u=new p,h=r.yieldPos,l=r.awaitPos;r.yieldPos=0,r.awaitPos=0;var c=r.parseExprList(R.parenR,r.options.ecmaVersion>=8,!1,u);if(s&&!r.canInsertSemicolon()&&r.eat(R.arrow))return r.checkPatternErrors(u,!1),r.checkYieldAwaitInDefaultParams(),r.yieldPos=h,r.awaitPos=l,r.parseArrowExpression(r.startNodeAt(e,n),c,!0);r.checkExpressionErrors(u,!0),r.yieldPos=h||r.yieldPos,r.awaitPos=l||r.awaitPos;var f=r.startNodeAt(e,n);f.callee=t,f.arguments=c,t=r.finishNode(f,"CallExpression")}else{if(r.type!==R.backQuote)return t;var d=r.startNodeAt(e,n);d.tag=t,d.quasi=r.parseTemplate({isTagged:!0}),t=r.finishNode(d,"TaggedTemplateExpression")}},tt.parseExprAtom=function(t){var e,n=this.potentialArrowAt==this.start;switch(this.type){case R._super:this.inFunction||this.raise(this.start,"'super' outside of function or class");case R._this:var i=this.type===R._this?"ThisExpression":"Super";return e=this.startNode(),this.next(),this.finishNode(e,i);case R.name:var r=this.start,s=this.startLoc,a=this.parseIdent(this.type!==R.name);if(this.options.ecmaVersion>=8&&"async"===a.name&&!this.canInsertSemicolon()&&this.eat(R._function))return this.parseFunction(this.startNodeAt(r,s),!1,!1,!0);if(n&&!this.canInsertSemicolon()){if(this.eat(R.arrow))return this.parseArrowExpression(this.startNodeAt(r,s),[a],!1);if(this.options.ecmaVersion>=8&&"async"===a.name&&this.type===R.name)return a=this.parseIdent(),!this.canInsertSemicolon()&&this.eat(R.arrow)||this.unexpected(),this.parseArrowExpression(this.startNodeAt(r,s),[a],!0)}return a;case R.regexp:var o=this.value;return e=this.parseLiteral(o.value),e.regex={pattern:o.pattern,flags:o.flags},e;case R.num:case R.string:return this.parseLiteral(this.value);case R._null:case R._true:case R._false:return e=this.startNode(),e.value=this.type===R._null?null:this.type===R._true,e.raw=this.type.keyword,this.next(),this.finishNode(e,"Literal");case R.parenL:var u=this.start,h=this.parseParenAndDistinguishExpression(n);return t&&(t.parenthesizedAssign<0&&!this.isSimpleAssignTarget(h)&&(t.parenthesizedAssign=u),t.parenthesizedBind<0&&(t.parenthesizedBind=u)),h;case R.bracketL:return e=this.startNode(),this.next(),e.elements=this.parseExprList(R.bracketR,!0,!0,t),this.finishNode(e,"ArrayExpression");case R.braceL:return this.parseObj(!1,t);case R._function:return e=this.startNode(),this.next(),this.parseFunction(e,!1);case R._class:return this.parseClass(this.startNode(),!1);case R._new:return this.parseNew();case R.backQuote:return this.parseTemplate();default:this.unexpected()}},tt.parseLiteral=function(t){var e=this.startNode();return e.value=t,e.raw=this.input.slice(this.start,this.end),this.next(),this.finishNode(e,"Literal")},tt.parseParenExpression=function(){this.expect(R.parenL);var t=this.parseExpression();return this.expect(R.parenR),t},tt.parseParenAndDistinguishExpression=function(t){var e,n=this,i=this.start,r=this.startLoc,s=this.options.ecmaVersion>=8;if(this.options.ecmaVersion>=6){this.next();var a,o,u=this.start,h=this.startLoc,l=[],c=!0,f=!1,d=new p,m=this.yieldPos,g=this.awaitPos;for(this.yieldPos=0,this.awaitPos=0;this.type!==R.parenR;){if(c?c=!1:n.expect(R.comma),s&&n.afterTrailingComma(R.parenR,!0)){f=!0;break}if(n.type===R.ellipsis){a=n.start,l.push(n.parseParenItem(n.parseRestBinding())),n.type===R.comma&&n.raise(n.start,"Comma is not permitted after the rest element");break}n.type!==R.parenL||o||(o=n.start),l.push(n.parseMaybeAssign(!1,d,n.parseParenItem))}var y=this.start,b=this.startLoc;if(this.expect(R.parenR),t&&!this.canInsertSemicolon()&&this.eat(R.arrow))return this.checkPatternErrors(d,!1),this.checkYieldAwaitInDefaultParams(),o&&this.unexpected(o),this.yieldPos=m,this.awaitPos=g,this.parseParenArrowList(i,r,l);l.length&&!f||this.unexpected(this.lastTokStart),a&&this.unexpected(a),this.checkExpressionErrors(d,!0),this.yieldPos=m||this.yieldPos,this.awaitPos=g||this.awaitPos,l.length>1?(e=this.startNodeAt(u,h),e.expressions=l,this.finishNodeAt(e,"SequenceExpression",y,b)):e=l[0]}else e=this.parseParenExpression();if(this.options.preserveParens){var v=this.startNodeAt(i,r);return v.expression=e,this.finishNode(v,"ParenthesizedExpression")}return e},tt.parseParenItem=function(t){return t},tt.parseParenArrowList=function(t,e,n){return this.parseArrowExpression(this.startNodeAt(t,e),n)};var et=[];tt.parseNew=function(){var t=this.startNode(),e=this.parseIdent(!0);if(this.options.ecmaVersion>=6&&this.eat(R.dot))return t.meta=e,t.property=this.parseIdent(!0),"target"!==t.property.name&&this.raiseRecoverable(t.property.start,"The only valid meta property for new is new.target"),this.inFunction||this.raiseRecoverable(t.start,"new.target can only be used in functions"),this.finishNode(t,"MetaProperty");var n=this.start,i=this.startLoc;return t.callee=this.parseSubscripts(this.parseExprAtom(),n,i,!0),this.eat(R.parenL)?t.arguments=this.parseExprList(R.parenR,this.options.ecmaVersion>=8,!1):t.arguments=et,this.finishNode(t,"NewExpression")},tt.parseTemplateElement=function(t){var e=t.isTagged,n=this.startNode();return this.type===R.invalidTemplate?(e||this.raiseRecoverable(this.start,"Bad escape sequence in untagged template literal"),n.value={raw:this.value,cooked:null}):n.value={raw:this.input.slice(this.start,this.end).replace(/\r\n?/g,"\n"),cooked:this.value},this.next(),n.tail=this.type===R.backQuote,this.finishNode(n,"TemplateElement")},tt.parseTemplate=function(t){var e=this;void 0===t&&(t={});var n=t.isTagged;void 0===n&&(n=!1);var i=this.startNode();this.next(),i.expressions=[];var r=this.parseTemplateElement({isTagged:n});for(i.quasis=[r];!r.tail;)e.expect(R.dollarBraceL),i.expressions.push(e.parseExpression()),e.expect(R.braceR),i.quasis.push(r=e.parseTemplateElement({isTagged:n}));return this.next(),this.finishNode(i,"TemplateLiteral")},tt.isAsyncProp=function(t){return!(t.computed||"Identifier"!==t.key.type||"async"!==t.key.name||this.type!==R.name&&this.type!==R.num&&this.type!==R.string&&this.type!==R.bracketL||L.test(this.input.slice(this.lastTokEnd,this.start)))},tt.parseObj=function(t,e){var n=this,i=this.startNode(),r=!0,s={};for(i.properties=[],this.next();!this.eat(R.braceR);){if(r)r=!1;else if(n.expect(R.comma),n.afterTrailingComma(R.braceR))break;var a=n.startNode(),o=void 0,u=void 0,h=void 0,l=void 0;n.options.ecmaVersion>=6&&(a.method=!1,a.shorthand=!1,(t||e)&&(h=n.start,l=n.startLoc),t||(o=n.eat(R.star))),n.parsePropertyName(a),!t&&n.options.ecmaVersion>=8&&!o&&n.isAsyncProp(a)?(u=!0,n.parsePropertyName(a,e)):u=!1,n.parsePropertyValue(a,t,o,u,h,l,e),n.checkPropClash(a,s),i.properties.push(n.finishNode(a,"Property"))}return this.finishNode(i,t?"ObjectPattern":"ObjectExpression")},tt.parsePropertyValue=function(t,e,n,i,r,s,a){if((n||i)&&this.type===R.colon&&this.unexpected(),this.eat(R.colon))t.value=e?this.parseMaybeDefault(this.start,this.startLoc):this.parseMaybeAssign(!1,a),t.kind="init";else if(this.options.ecmaVersion>=6&&this.type===R.parenL)e&&this.unexpected(),t.kind="init",t.method=!0,t.value=this.parseMethod(n,i);else if(this.options.ecmaVersion>=5&&!t.computed&&"Identifier"===t.key.type&&("get"===t.key.name||"set"===t.key.name)&&this.type!=R.comma&&this.type!=R.braceR){(n||i||e)&&this.unexpected(),t.kind=t.key.name,this.parsePropertyName(t),t.value=this.parseMethod(!1);var o="get"===t.kind?0:1;if(t.value.params.length!==o){var u=t.value.start;"get"===t.kind?this.raiseRecoverable(u,"getter should have no params"):this.raiseRecoverable(u,"setter should have exactly one param")}else"set"===t.kind&&"RestElement"===t.value.params[0].type&&this.raiseRecoverable(t.value.params[0].start,"Setter cannot use rest params")}else this.options.ecmaVersion>=6&&!t.computed&&"Identifier"===t.key.type?(this.checkUnreserved(t.key),t.kind="init",e?t.value=this.parseMaybeDefault(r,s,t.key):this.type===R.eq&&a?(a.shorthandAssign<0&&(a.shorthandAssign=this.start),t.value=this.parseMaybeDefault(r,s,t.key)):t.value=t.key,t.shorthand=!0):this.unexpected()},tt.parsePropertyName=function(t){if(this.options.ecmaVersion>=6){if(this.eat(R.bracketL))return t.computed=!0,t.key=this.parseMaybeAssign(),this.expect(R.bracketR),t.key;t.computed=!1}return t.key=this.type===R.num||this.type===R.string?this.parseExprAtom():this.parseIdent(!0)},tt.initFunction=function(t){t.id=null,this.options.ecmaVersion>=6&&(t.generator=!1,t.expression=!1),this.options.ecmaVersion>=8&&(t.async=!1)},tt.parseMethod=function(t,e){var n=this.startNode(),i=this.inGenerator,r=this.inAsync,s=this.yieldPos,a=this.awaitPos,o=this.inFunction;return this.initFunction(n),this.options.ecmaVersion>=6&&(n.generator=t),this.options.ecmaVersion>=8&&(n.async=!!e),this.inGenerator=n.generator,this.inAsync=n.async,this.yieldPos=0,this.awaitPos=0,this.inFunction=!0,this.enterFunctionScope(),this.expect(R.parenL),n.params=this.parseBindingList(R.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams(),this.parseFunctionBody(n,!1),this.inGenerator=i,this.inAsync=r,this.yieldPos=s,this.awaitPos=a,this.inFunction=o,this.finishNode(n,"FunctionExpression")},tt.parseArrowExpression=function(t,e,n){var i=this.inGenerator,r=this.inAsync,s=this.yieldPos,a=this.awaitPos,o=this.inFunction;return this.enterFunctionScope(),this.initFunction(t),this.options.ecmaVersion>=8&&(t.async=!!n),this.inGenerator=!1,this.inAsync=t.async,this.yieldPos=0,this.awaitPos=0,this.inFunction=!0,t.params=this.toAssignableList(e,!0),this.parseFunctionBody(t,!0),this.inGenerator=i,this.inAsync=r,this.yieldPos=s,this.awaitPos=a,this.inFunction=o,this.finishNode(t,"ArrowFunctionExpression")},tt.parseFunctionBody=function(t,e){var n=e&&this.type!==R.braceL,i=this.strict,r=!1;if(n)t.body=this.parseMaybeAssign(),t.expression=!0,this.checkParams(t,!1);else{var s=this.options.ecmaVersion>=7&&!this.isSimpleParamList(t.params);i&&!s||(r=this.strictDirective(this.end),r&&s&&this.raiseRecoverable(t.start,"Illegal 'use strict' directive in function with non-simple parameter list"));var a=this.labels;this.labels=[],r&&(this.strict=!0),this.checkParams(t,!i&&!r&&!e&&this.isSimpleParamList(t.params)),t.body=this.parseBlock(!1),t.expression=!1,this.labels=a}this.exitFunctionScope(),this.strict&&t.id&&this.checkLVal(t.id,"none"),this.strict=i},tt.isSimpleParamList=function(t){for(var e=0,n=t;e<n.length;e+=1){var i=n[e];if("Identifier"!==i.type)return!1}return!0},tt.checkParams=function(t,e){for(var n=this,i={},r=0,s=t.params;r<s.length;r+=1){var a=s[r];n.checkLVal(a,"var",e?null:i)}},tt.parseExprList=function(t,e,n,i){for(var r=this,s=[],a=!0;!this.eat(t);){if(a)a=!1;else if(r.expect(R.comma),e&&r.afterTrailingComma(t))break;var o=void 0;n&&r.type===R.comma?o=null:r.type===R.ellipsis?(o=r.parseSpread(i),i&&r.type===R.comma&&i.trailingComma<0&&(i.trailingComma=r.start)):o=r.parseMaybeAssign(!1,i),s.push(o)}return s},tt.checkUnreserved=function(t){var e=t.start,n=t.end,i=t.name;if(this.inGenerator&&"yield"===i&&this.raiseRecoverable(e,"Can not use 'yield' as identifier inside a generator"),this.inAsync&&"await"===i&&this.raiseRecoverable(e,"Can not use 'await' as identifier inside an async function"),this.isKeyword(i)&&this.raise(e,"Unexpected keyword '"+i+"'"),!(this.options.ecmaVersion<6&&this.input.slice(e,n).indexOf("\\")!=-1)){var r=this.strict?this.reservedWordsStrict:this.reservedWords;r.test(i)&&this.raiseRecoverable(e,"The keyword '"+i+"' is reserved")}},tt.parseIdent=function(t,e){var n=this.startNode();return t&&"never"==this.options.allowReserved&&(t=!1),this.type===R.name?n.name=this.value:this.type.keyword?n.name=this.type.keyword:this.unexpected(),this.next(),this.finishNode(n,"Identifier"),t||this.checkUnreserved(n),n},tt.parseYield=function(){this.yieldPos||(this.yieldPos=this.start);var t=this.startNode();return this.next(),this.type==R.semi||this.canInsertSemicolon()||this.type!=R.star&&!this.type.startsExpr?(t.delegate=!1,
|
||
t.argument=null):(t.delegate=this.eat(R.star),t.argument=this.parseMaybeAssign()),this.finishNode(t,"YieldExpression")},tt.parseAwait=function(){this.awaitPos||(this.awaitPos=this.start);var t=this.startNode();return this.next(),t.argument=this.parseMaybeUnary(null,!0),this.finishNode(t,"AwaitExpression")};var nt=X.prototype;nt.raise=function(t,e){var n=u(this.input,t);e+=" ("+n.line+":"+n.column+")";var i=new SyntaxError(e);throw i.pos=t,i.loc=n,i.raisedAt=this.pos,i},nt.raiseRecoverable=nt.raise,nt.curPosition=function(){if(this.options.locations)return new B(this.curLine,this.pos-this.lineStart)};var it=X.prototype,rt=Object.assign||function(t){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];for(var i=0,r=e;i<r.length;i+=1){var s=r[i];for(var a in s)o(s,a)&&(t[a]=s[a])}return t};it.enterFunctionScope=function(){this.scopeStack.push({"var":{},lexical:{},childVar:{},parentLexical:{}})},it.exitFunctionScope=function(){this.scopeStack.pop()},it.enterLexicalScope=function(){var t=this.scopeStack[this.scopeStack.length-1],e={"var":{},lexical:{},childVar:{},parentLexical:{}};this.scopeStack.push(e),rt(e.parentLexical,t.lexical,t.parentLexical)},it.exitLexicalScope=function(){var t=this.scopeStack.pop(),e=this.scopeStack[this.scopeStack.length-1];rt(e.childVar,t["var"],t.childVar)},it.canDeclareVarName=function(t){var e=this.scopeStack[this.scopeStack.length-1];return!o(e.lexical,t)&&!o(e.parentLexical,t)},it.canDeclareLexicalName=function(t){var e=this.scopeStack[this.scopeStack.length-1];return!o(e.lexical,t)&&!o(e["var"],t)&&!o(e.childVar,t)},it.declareVarName=function(t){this.scopeStack[this.scopeStack.length-1]["var"][t]=!0},it.declareLexicalName=function(t){this.scopeStack[this.scopeStack.length-1].lexical[t]=!0};var st=function(t,e,n){this.type="",this.start=e,this.end=0,t.options.locations&&(this.loc=new K(t,n)),t.options.directSourceFile&&(this.sourceFile=t.options.directSourceFile),t.options.ranges&&(this.range=[e,0])},at=X.prototype;at.startNode=function(){return new st(this,this.start,this.startLoc)},at.startNodeAt=function(t,e){return new st(this,t,e)},at.finishNode=function(t,e){return f.call(this,t,e,this.lastTokEnd,this.lastTokEndLoc)},at.finishNodeAt=function(t,e,n,i){return f.call(this,t,e,n,i)};var ot=function(t,e,n,i,r){this.token=t,this.isExpr=!!e,this.preserveSpace=!!n,this.override=i,this.generator=!!r},ut={b_stat:new ot("{",(!1)),b_expr:new ot("{",(!0)),b_tmpl:new ot("${",(!1)),p_stat:new ot("(",(!1)),p_expr:new ot("(",(!0)),q_tmpl:new ot("`",(!0),(!0),function(t){return t.tryReadTemplateToken()}),f_stat:new ot("function",(!1)),f_expr:new ot("function",(!0)),f_expr_gen:new ot("function",(!0),(!1),null,(!0)),f_gen:new ot("function",(!1),(!1),null,(!0))},ht=X.prototype;ht.initialContext=function(){return[ut.b_stat]},ht.braceIsBlock=function(t){var e=this.curContext();return e===ut.f_expr||e===ut.f_stat||(t!==R.colon||e!==ut.b_stat&&e!==ut.b_expr?t===R._return||t==R.name&&this.exprAllowed?L.test(this.input.slice(this.lastTokEnd,this.start)):t===R._else||t===R.semi||t===R.eof||t===R.parenR||t==R.arrow||(t==R.braceL?e===ut.b_stat:t!=R._var&&t!=R.name&&!this.exprAllowed):!e.isExpr)},ht.inGeneratorContext=function(){for(var t=this,e=this.context.length-1;e>=1;e--){var n=t.context[e];if("function"===n.token)return n.generator}return!1},ht.updateContext=function(t){var e,n=this.type;n.keyword&&t==R.dot?this.exprAllowed=!1:(e=n.updateContext)?e.call(this,t):this.exprAllowed=n.beforeExpr},R.parenR.updateContext=R.braceR.updateContext=function(){if(1==this.context.length)return void(this.exprAllowed=!0);var t=this.context.pop();t===ut.b_stat&&"function"===this.curContext().token&&(t=this.context.pop()),this.exprAllowed=!t.isExpr},R.braceL.updateContext=function(t){this.context.push(this.braceIsBlock(t)?ut.b_stat:ut.b_expr),this.exprAllowed=!0},R.dollarBraceL.updateContext=function(){this.context.push(ut.b_tmpl),this.exprAllowed=!0},R.parenL.updateContext=function(t){var e=t===R._if||t===R._for||t===R._with||t===R._while;this.context.push(e?ut.p_stat:ut.p_expr),this.exprAllowed=!0},R.incDec.updateContext=function(){},R._function.updateContext=R._class.updateContext=function(t){t.beforeExpr&&t!==R.semi&&t!==R._else&&(t!==R.colon&&t!==R.braceL||this.curContext()!==ut.b_stat)?this.context.push(ut.f_expr):this.context.push(ut.f_stat),this.exprAllowed=!1},R.backQuote.updateContext=function(){this.curContext()===ut.q_tmpl?this.context.pop():this.context.push(ut.q_tmpl),this.exprAllowed=!1},R.star.updateContext=function(t){if(t==R._function){var e=this.context.length-1;this.context[e]===ut.f_expr?this.context[e]=ut.f_expr_gen:this.context[e]=ut.f_gen}this.exprAllowed=!0},R.name.updateContext=function(t){var e=!1;this.options.ecmaVersion>=6&&("of"==this.value&&!this.exprAllowed||"yield"==this.value&&this.inGeneratorContext())&&(e=!0),this.exprAllowed=e};var lt=function(t){this.type=t.type,this.value=t.value,this.start=t.start,this.end=t.end,t.options.locations&&(this.loc=new K(t,t.startLoc,t.endLoc)),t.options.ranges&&(this.range=[t.start,t.end])},ct=X.prototype,pt="object"==typeof Packages&&"[object JavaPackage]"==Object.prototype.toString.call(Packages);ct.next=function(){this.options.onToken&&this.options.onToken(new lt(this)),this.lastTokEnd=this.end,this.lastTokStart=this.start,this.lastTokEndLoc=this.endLoc,this.lastTokStartLoc=this.startLoc,this.nextToken()},ct.getToken=function(){return this.next(),new lt(this)},"undefined"!=typeof Symbol&&(ct[Symbol.iterator]=function(){var t=this;return{next:function(){var e=t.getToken();return{done:e.type===R.eof,value:e}}}}),ct.curContext=function(){return this.context[this.context.length-1]},ct.nextToken=function(){var t=this.curContext();return t&&t.preserveSpace||this.skipSpace(),this.start=this.pos,this.options.locations&&(this.startLoc=this.curPosition()),this.pos>=this.input.length?this.finishToken(R.eof):t.override?t.override(this):void this.readToken(this.fullCharCodeAtPos())},ct.readToken=function(t){return n(t,this.options.ecmaVersion>=6)||92===t?this.readWord():this.getTokenFromCode(t)},ct.fullCharCodeAtPos=function(){var t=this.input.charCodeAt(this.pos);if(t<=55295||t>=57344)return t;var e=this.input.charCodeAt(this.pos+1);return(t<<10)+e-56613888},ct.skipBlockComment=function(){var t=this,e=this.options.onComment&&this.curPosition(),n=this.pos,i=this.input.indexOf("*/",this.pos+=2);if(i===-1&&this.raise(this.pos-2,"Unterminated comment"),this.pos=i+2,this.options.locations){D.lastIndex=n;for(var r;(r=D.exec(this.input))&&r.index<this.pos;)++t.curLine,t.lineStart=r.index+r[0].length}this.options.onComment&&this.options.onComment(!0,this.input.slice(n+2,i),n,this.pos,e,this.curPosition())},ct.skipLineComment=function(t){for(var e=this,n=this.pos,i=this.options.onComment&&this.curPosition(),r=this.input.charCodeAt(this.pos+=t);this.pos<this.input.length&&!a(r);)r=e.input.charCodeAt(++e.pos);this.options.onComment&&this.options.onComment(!1,this.input.slice(n+t,this.pos),n,this.pos,i,this.curPosition())},ct.skipSpace=function(){var t=this;t:for(;this.pos<this.input.length;){var e=t.input.charCodeAt(t.pos);switch(e){case 32:case 160:++t.pos;break;case 13:10===t.input.charCodeAt(t.pos+1)&&++t.pos;case 10:case 8232:case 8233:++t.pos,t.options.locations&&(++t.curLine,t.lineStart=t.pos);break;case 47:switch(t.input.charCodeAt(t.pos+1)){case 42:t.skipBlockComment();break;case 47:t.skipLineComment(2);break;default:break t}break;default:if(!(e>8&&e<14||e>=5760&&I.test(String.fromCharCode(e))))break t;++t.pos}}},ct.finishToken=function(t,e){this.end=this.pos,this.options.locations&&(this.endLoc=this.curPosition());var n=this.type;this.type=t,this.value=e,this.updateContext(n)},ct.readToken_dot=function(){var t=this.input.charCodeAt(this.pos+1);if(t>=48&&t<=57)return this.readNumber(!0);var e=this.input.charCodeAt(this.pos+2);return this.options.ecmaVersion>=6&&46===t&&46===e?(this.pos+=3,this.finishToken(R.ellipsis)):(++this.pos,this.finishToken(R.dot))},ct.readToken_slash=function(){var t=this.input.charCodeAt(this.pos+1);return this.exprAllowed?(++this.pos,this.readRegexp()):61===t?this.finishOp(R.assign,2):this.finishOp(R.slash,1)},ct.readToken_mult_modulo_exp=function(t){var e=this.input.charCodeAt(this.pos+1),n=1,i=42===t?R.star:R.modulo;return this.options.ecmaVersion>=7&&42===e&&(++n,i=R.starstar,e=this.input.charCodeAt(this.pos+2)),61===e?this.finishOp(R.assign,n+1):this.finishOp(i,n)},ct.readToken_pipe_amp=function(t){var e=this.input.charCodeAt(this.pos+1);return e===t?this.finishOp(124===t?R.logicalOR:R.logicalAND,2):61===e?this.finishOp(R.assign,2):this.finishOp(124===t?R.bitwiseOR:R.bitwiseAND,1)},ct.readToken_caret=function(){var t=this.input.charCodeAt(this.pos+1);return 61===t?this.finishOp(R.assign,2):this.finishOp(R.bitwiseXOR,1)},ct.readToken_plus_min=function(t){var e=this.input.charCodeAt(this.pos+1);return e===t?45!=e||62!=this.input.charCodeAt(this.pos+2)||0!==this.lastTokEnd&&!L.test(this.input.slice(this.lastTokEnd,this.pos))?this.finishOp(R.incDec,2):(this.skipLineComment(3),this.skipSpace(),this.nextToken()):61===e?this.finishOp(R.assign,2):this.finishOp(R.plusMin,1)},ct.readToken_lt_gt=function(t){var e=this.input.charCodeAt(this.pos+1),n=1;return e===t?(n=62===t&&62===this.input.charCodeAt(this.pos+2)?3:2,61===this.input.charCodeAt(this.pos+n)?this.finishOp(R.assign,n+1):this.finishOp(R.bitShift,n)):33==e&&60==t&&45==this.input.charCodeAt(this.pos+2)&&45==this.input.charCodeAt(this.pos+3)?(this.inModule&&this.unexpected(),this.skipLineComment(4),this.skipSpace(),this.nextToken()):(61===e&&(n=2),this.finishOp(R.relational,n))},ct.readToken_eq_excl=function(t){var e=this.input.charCodeAt(this.pos+1);return 61===e?this.finishOp(R.equality,61===this.input.charCodeAt(this.pos+2)?3:2):61===t&&62===e&&this.options.ecmaVersion>=6?(this.pos+=2,this.finishToken(R.arrow)):this.finishOp(61===t?R.eq:R.prefix,1)},ct.getTokenFromCode=function(t){switch(t){case 46:return this.readToken_dot();case 40:return++this.pos,this.finishToken(R.parenL);case 41:return++this.pos,this.finishToken(R.parenR);case 59:return++this.pos,this.finishToken(R.semi);case 44:return++this.pos,this.finishToken(R.comma);case 91:return++this.pos,this.finishToken(R.bracketL);case 93:return++this.pos,this.finishToken(R.bracketR);case 123:return++this.pos,this.finishToken(R.braceL);case 125:return++this.pos,this.finishToken(R.braceR);case 58:return++this.pos,this.finishToken(R.colon);case 63:return++this.pos,this.finishToken(R.question);case 96:if(this.options.ecmaVersion<6)break;return++this.pos,this.finishToken(R.backQuote);case 48:var e=this.input.charCodeAt(this.pos+1);if(120===e||88===e)return this.readRadixNumber(16);if(this.options.ecmaVersion>=6){if(111===e||79===e)return this.readRadixNumber(8);if(98===e||66===e)return this.readRadixNumber(2)}case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(t);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo_exp(t);case 124:case 38:return this.readToken_pipe_amp(t);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(t);case 60:case 62:return this.readToken_lt_gt(t);case 61:case 33:return this.readToken_eq_excl(t);case 126:return this.finishOp(R.prefix,1)}this.raise(this.pos,"Unexpected character '"+m(t)+"'")},ct.finishOp=function(t,e){var n=this.input.slice(this.pos,this.pos+e);return this.pos+=e,this.finishToken(t,n)};var ft=!!d("","u");ct.readRegexp=function(){for(var t,e,n=this,i=this.pos;;){n.pos>=n.input.length&&n.raise(i,"Unterminated regular expression");var r=n.input.charAt(n.pos);if(L.test(r)&&n.raise(i,"Unterminated regular expression"),t)t=!1;else{if("["===r)e=!0;else if("]"===r&&e)e=!1;else if("/"===r&&!e)break;t="\\"===r}++n.pos}var s=this.input.slice(i,this.pos);++this.pos;var a=this.readWord1(),o=s,u="";if(a){var h=/^[gim]*$/;this.options.ecmaVersion>=6&&(h=/^[gimuy]*$/),h.test(a)||this.raise(i,"Invalid regular expression flag"),a.indexOf("u")>=0&&(ft?u="u":(o=o.replace(/\\u\{([0-9a-fA-F]+)\}/g,function(t,e,r){return e=Number("0x"+e),e>1114111&&n.raise(i+r+3,"Code point out of bounds"),"x"}),o=o.replace(/\\u([a-fA-F0-9]{4})|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"),u=u.replace("u","")))}var l=null;return pt||(d(o,u,i,this),l=d(s,a)),this.finishToken(R.regexp,{pattern:s,flags:a,value:l})},ct.readInt=function(t,e){for(var n=this,i=this.pos,r=0,s=0,a=null==e?1/0:e;s<a;++s){var o=n.input.charCodeAt(n.pos),u=void 0;if(u=o>=97?o-97+10:o>=65?o-65+10:o>=48&&o<=57?o-48:1/0,u>=t)break;++n.pos,r=r*t+u}return this.pos===i||null!=e&&this.pos-i!==e?null:r},ct.readRadixNumber=function(t){this.pos+=2;var e=this.readInt(t);return null==e&&this.raise(this.start+2,"Expected number in radix "+t),n(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number"),this.finishToken(R.num,e)},ct.readNumber=function(t){var e=this.pos,i=!1,r=48===this.input.charCodeAt(this.pos);t||null!==this.readInt(10)||this.raise(e,"Invalid number"),r&&this.pos==e+1&&(r=!1);var s=this.input.charCodeAt(this.pos);46!==s||r||(++this.pos,this.readInt(10),i=!0,s=this.input.charCodeAt(this.pos)),69!==s&&101!==s||r||(s=this.input.charCodeAt(++this.pos),43!==s&&45!==s||++this.pos,null===this.readInt(10)&&this.raise(e,"Invalid number"),i=!0),n(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number");var a,o=this.input.slice(e,this.pos);return i?a=parseFloat(o):r&&1!==o.length?this.strict?this.raise(e,"Invalid number"):a=/[89]/.test(o)?parseInt(o,10):parseInt(o,8):a=parseInt(o,10),this.finishToken(R.num,a)},ct.readCodePoint=function(){var t,e=this.input.charCodeAt(this.pos);if(123===e){this.options.ecmaVersion<6&&this.unexpected();var n=++this.pos;t=this.readHexChar(this.input.indexOf("}",this.pos)-this.pos),++this.pos,t>1114111&&this.invalidStringToken(n,"Code point out of bounds")}else t=this.readHexChar(4);return t},ct.readString=function(t){for(var e=this,n="",i=++this.pos;;){e.pos>=e.input.length&&e.raise(e.start,"Unterminated string constant");var r=e.input.charCodeAt(e.pos);if(r===t)break;92===r?(n+=e.input.slice(i,e.pos),n+=e.readEscapedChar(!1),i=e.pos):(a(r)&&e.raise(e.start,"Unterminated string constant"),++e.pos)}return n+=this.input.slice(i,this.pos++),this.finishToken(R.string,n)};var dt={};ct.tryReadTemplateToken=function(){this.inTemplateElement=!0;try{this.readTmplToken()}catch(t){if(t!==dt)throw t;this.readInvalidTemplateToken()}this.inTemplateElement=!1},ct.invalidStringToken=function(t,e){if(this.inTemplateElement&&this.options.ecmaVersion>=9)throw dt;this.raise(t,e)},ct.readTmplToken=function(){for(var t=this,e="",n=this.pos;;){t.pos>=t.input.length&&t.raise(t.start,"Unterminated template");var i=t.input.charCodeAt(t.pos);if(96===i||36===i&&123===t.input.charCodeAt(t.pos+1))return t.pos!==t.start||t.type!==R.template&&t.type!==R.invalidTemplate?(e+=t.input.slice(n,t.pos),t.finishToken(R.template,e)):36===i?(t.pos+=2,t.finishToken(R.dollarBraceL)):(++t.pos,t.finishToken(R.backQuote));if(92===i)e+=t.input.slice(n,t.pos),e+=t.readEscapedChar(!0),n=t.pos;else if(a(i)){switch(e+=t.input.slice(n,t.pos),++t.pos,i){case 13:10===t.input.charCodeAt(t.pos)&&++t.pos;case 10:e+="\n";break;default:e+=String.fromCharCode(i)}t.options.locations&&(++t.curLine,t.lineStart=t.pos),n=t.pos}else++t.pos}},ct.readInvalidTemplateToken=function(){for(var t=this;this.pos<this.input.length;this.pos++)switch(t.input[t.pos]){case"\\":++t.pos;break;case"$":if("{"!==t.input[t.pos+1])break;case"`":return t.finishToken(R.invalidTemplate,t.input.slice(t.start,t.pos))}this.raise(this.start,"Unterminated template")},ct.readEscapedChar=function(t){var e=this.input.charCodeAt(++this.pos);switch(++this.pos,e){case 110:return"\n";case 114:return"\r";case 120:return String.fromCharCode(this.readHexChar(2));case 117:return m(this.readCodePoint());case 116:return"\t";case 98:return"\b";case 118:return"\x0B";case 102:return"\f";case 13:10===this.input.charCodeAt(this.pos)&&++this.pos;case 10:return this.options.locations&&(this.lineStart=this.pos,++this.curLine),"";default:if(e>=48&&e<=55){var n=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],i=parseInt(n,8);return i>255&&(n=n.slice(0,-1),i=parseInt(n,8)),"0"!==n&&(this.strict||t)&&this.invalidStringToken(this.pos-2,"Octal literal in strict mode"),this.pos+=n.length-1,String.fromCharCode(i)}return String.fromCharCode(e)}},ct.readHexChar=function(t){var e=this.pos,n=this.readInt(16,t);return null===n&&this.invalidStringToken(e,"Bad character escape sequence"),n},ct.readWord1=function(){var t=this;this.containsEsc=!1;for(var e="",r=!0,s=this.pos,a=this.options.ecmaVersion>=6;this.pos<this.input.length;){var o=t.fullCharCodeAtPos();if(i(o,a))t.pos+=o<=65535?1:2;else{if(92!==o)break;t.containsEsc=!0,e+=t.input.slice(s,t.pos);var u=t.pos;117!=t.input.charCodeAt(++t.pos)&&t.invalidStringToken(t.pos,"Expecting Unicode escape sequence \\uXXXX"),++t.pos;var h=t.readCodePoint();(r?n:i)(h,a)||t.invalidStringToken(u,"Invalid Unicode escape"),e+=m(h),s=t.pos}r=!1}return e+this.input.slice(s,this.pos)},ct.readWord=function(){var t=this.readWord1(),e=R.name;return this.keywords.test(t)&&(this.containsEsc&&this.raiseRecoverable(this.start,"Escape sequence in keyword "+t),e=F[t]),this.finishToken(e,t)};var mt="5.1.1";t.version=mt,t.parse=g,t.parseExpressionAt=y,t.tokenizer=b,t.addLooseExports=v,t.Parser=X,t.plugins=W,t.defaultOptions=z,t.Position=B,t.SourceLocation=K,t.getLineInfo=u,t.Node=st,t.TokenType=C,t.tokTypes=R,t.keywordTypes=F,t.TokContext=ot,t.tokContexts=ut,t.isIdentifierChar=i,t.isIdentifierStart=n,t.Token=lt,t.isNewLine=a,t.lineBreak=L,t.lineBreakG=D,t.nonASCIIwhitespace=I,Object.defineProperty(t,"__esModule",{value:!0})})},{}],27:[function(t,e,n){},{}]},{},[25]); |