Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

2gl

Package Overview
Dependencies
Maintainers
5
Versions
51
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

2gl - npm Package Compare versions

Comparing version 0.4.1 to 0.5.0

.nyc_output/0252ee8257ec0bfd27f41afb2235f508.json

3

Buffer.js

@@ -119,2 +119,3 @@ /**

this._initData = null;
return this;
}

@@ -213,2 +214,2 @@

*/
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9CdWZmZXIuanMiXSwibmFtZXMiOlsiQnVmZmVyIiwiY29uc3RydWN0b3IiLCJpbml0RGF0YSIsIm9wdGlvbnMiLCJfaW5pdERhdGEiLCJieXRlTGVuZ3RoIiwidW5kZWZpbmVkIiwidHlwZSIsIkFycmF5QnVmZmVyIiwiZHJhd1R5cGUiLCJTdGF0aWNEcmF3IiwiT2JqZWN0IiwiYXNzaWduIiwiZGVmYXVsdE9wdGlvbnMiLCJfZ2xCdWZmZXIiLCJfZ2xDb250ZXh0IiwiYmluZCIsImdsIiwibG9jYXRpb24iLCJwcmVwYXJlIiwiYmluZEJ1ZmZlciIsIkFSUkFZX0JVRkZFUiIsInZlcnRleEF0dHJpYlBvaW50ZXIiLCJpdGVtU2l6ZSIsIl90b0dsUGFyYW0iLCJkYXRhVHlwZSIsIm5vcm1hbGl6ZWQiLCJzdHJpZGUiLCJvZmZzZXQiLCJFbGVtZW50QXJyYXlCdWZmZXIiLCJFTEVNRU5UX0FSUkFZX0JVRkZFUiIsInJlbW92ZSIsIl91bnByZXBhcmUiLCJzdWJEYXRhIiwiaW5kZXgiLCJkYXRhIiwiYnVmZmVyU3ViRGF0YSIsImNyZWF0ZUJ1ZmZlciIsImJ1ZmZlckRhdGEiLCJkZWxldGVCdWZmZXIiLCJwYXJhbSIsIlNUQVRJQ19EUkFXIiwiRHluYW1pY0RyYXciLCJEWU5BTUlDX0RSQVciLCJCeXRlIiwiQllURSIsIlNob3J0IiwiU0hPUlQiLCJJbnQiLCJJTlQiLCJGbG9hdCIsIkZMT0FUIiwiVW5zaWduZWRCeXRlIiwiVU5TSUdORURfQllURSIsIlVuc2lnbmVkU2hvcnQiLCJVTlNJR05FRF9TSE9SVCIsIlVuc2lnbmVkSW50IiwiVU5TSUdORURfSU5UIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7QUFRQSxNQUFNQSxNQUFOLENBQWE7QUFDVEMsY0FBWUMsUUFBWixFQUFzQkMsT0FBdEIsRUFBK0I7QUFDM0IsU0FBS0MsU0FBTCxHQUFpQkYsUUFBakI7O0FBRUE7Ozs7QUFJQSxTQUFLRyxVQUFMLEdBQWtCSCxTQUFTRyxVQUFULEtBQXdCQyxT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QWxELE9BQU9vRCxZQUFQLEdBQXNCLEVBQXRCO0FBQ0FwRCxPQUFPc0QsYUFBUCxHQUF1QixFQUF2QjtBQUNBdEQsT0FBT3dELFdBQVAsR0FBcUIsRUFBckI7QUFDQXhELE9BQU80QyxJQUFQLEdBQWMsRUFBZDtBQUNBNUMsT0FBTzhDLEtBQVAsR0FBZSxFQUFmO0FBQ0E5QyxPQUFPZ0QsR0FBUCxHQUFhLEVBQWI7O0FBRUFoRCxPQUFPYSxjQUFQLEdBQXdCO0FBQ3BCVSxZQUFVLENBRFU7QUFFcEJFLFlBQVV6QixPQUFPa0QsS0FGRztBQUdwQnZCLFVBQVEsQ0FIWTtBQUlwQkMsVUFBUSxDQUpZO0FBS3BCRixjQUFZO0FBTFEsQ0FBeEI7O0FBUUEsZUFBZTFCLE1BQWY7O0FBRUEiLCJmaWxlIjoiQnVmZmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDQmNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LTQu9GPINGF0YDQsNC90LXQvdC40Y8g0Lgg0L/QvtC00LPQvtGC0L7QstC60Lgg0LTQsNC90L3Ri9GFINC00LvRjyDQv9C10YDQtdC00LDRh9C4INCyINCw0YLRgNC40LHRg9GC0Ysg0YjQtdC50LTQtdGA0LBcbiAqXG4gKiBAcGFyYW0ge1R5cGVkQXJyYXkgfCBBcnJheUJ1ZmZlciB8IG51bWJlcn0gaW5pdERhdGEg0JTQsNC90L3Ri9C1INC00LvRjyDQuNC90LjRgtCwINCx0YPRhNC10YDQsDpcbiAqINGB0L7QtNC10YDQttC40LzQvtC1INCx0YPRhNC10YDQsCDQuNC70Lgg0LXQs9C+INGA0LDQt9C80LXRgFxuICogQHBhcmFtIHs/QnVmZmVyQmluZE9wdGlvbnN9IG9wdGlvbnMg0J/QsNGA0LDQvNC10YLRgNGLINC/0LXRgNC10LTQsNGH0Lgg0LHRg9GE0LXRgNCwINCyINCy0LjQtNC10L7QutCw0YDRgtGDLFxuICog0LzQvtCz0YPRgiDQsdGL0YLRjCDQv9C10YDQtdC+0L/RgNC10LTQtdC70LXQvdGLINC40Lcge0BsaW5rIEJ1ZmZlckNoYW5uZWx9XG4gKi9cbmNsYXNzIEJ1ZmZlciB7XG4gICAgY29uc3RydWN0b3IoaW5pdERhdGEsIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5faW5pdERhdGEgPSBpbml0RGF0YTtcblxuICAgICAgICAvKipcbiAgICAgICAgICog0KDQsNC30LzQtdGAINC00LDQvdC90YvRhSDQsiDQsdGD0YTQtdGA0LUg0LIg0LHQsNC50YLQsNGFXG4gICAgICAgICAqIEB0eXBlIHtOdW1iZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmJ5dGVMZW5ndGggPSBpbml0RGF0YS5ieXRlTGVuZ3RoICE9PSB1bmRlZmluZWQgPyBpbml0RGF0YS5ieXRlTGVuZ3RoIDogaW5pdERhdGE7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCi0LjQvyDQsdGD0YTQtdGA0LAuINCR0YPRhNC10YAg0LzQvtC20LXRgiDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0YzRgdGPINC00LvRjyDQv9C10YDQtdC00LDRh9C4INC80LDRgdGB0LjQstCwINC00LDQvdC90YvRhSxcbiAgICAgICAgICog0YLQsNC6INC4INC00LvRjyDQv9C10YDQtdC00LDRh9C4INC40L3QtNC10LrRgdC+0LIg0Y3Qu9C10LzQtdC90YLQvtCyINC40Lcg0LTQsNC90L3Ri9GFLlxuICAgICAgICAgKiBAdHlwZSB7QnVmZmVyLkFycmF5QnVmZmVyIHwgQnVmZmVyLkVsZW1lbnRBcnJheUJ1ZmZlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudHlwZSA9IEJ1ZmZlci5BcnJheUJ1ZmZlcjtcblxuICAgICAgICAvKipcbiAgICAgICAgICog0KPQutCw0LfRi9Cy0LDQtdGCLCDQutCw0Log0YfQsNGB0YLQviDQtNCw0L3QvdGL0LUg0LHRg9GE0LXRgNCwINCx0YPQtNGD0YIg0LjQt9C80LXQvdGP0YLRjNGB0Y8uXG4gICAgICAgICAqIEB0eXBlIHtCdWZmZXIuU3RhdGljRHJhdyB8IEJ1ZmZlci5EeW5hbWljRHJhd31cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZHJhd1R5cGUgPSBCdWZmZXIuU3RhdGljRHJhdztcblxuICAgICAgICAvKipcbiAgICAgICAgICog0J/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDRgdCy0Y/Qt9GL0LLQsNC90LjRjyDQsdGD0YTQtdGA0LBcbiAgICAgICAgICogQHR5cGUge0J1ZmZlckJpbmRPcHRpb25zfVxuICAgICAgICAgKiBAaWdub3JlXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBCdWZmZXIuZGVmYXVsdE9wdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQmNGB0YXQvtC00L3Ri9C5IFdlYkdMINCx0YPRhNC10YBcbiAgICAgICAgICogQHR5cGUgez9XZWJHTEJ1ZmZlcn1cbiAgICAgICAgICogQGlnbm9yZVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fZ2xCdWZmZXIgPSBudWxsO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQmtC+0L3RgtC10LrRgdGCIFdlYkdMLCDQsiDQutC+0YLQvtGA0L7QvCDQsdGL0Lsg0LjQvdC40YbQuNCw0LvQuNC30LjRgNC+0LLQsNC9INCx0YPRhNC10YAuXG4gICAgICAgICAqINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDRgtC+0LvRjNC60L4g0LTQu9GPINGD0LTQsNC70LXQvdC40Y8g0LHRg9GE0LXRgNCwLCDQv9C+0LTRg9C80LDRgtGMINGF0L7RgNC+0YjQviwg0L/RgNC10LbQtNC1INGH0LXQvCDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0LTQu9GPINGH0LXQs9C+LdGC0L4g0LXRidGRLlxuICAgICAgICAgKiBAdHlwZSB7P1dlYkdMUmVuZGVyaW5nQ29udGV4dH1cbiAgICAgICAgICogQGlnbm9yZVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fZ2xDb250ZXh0ID0gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodCy0Y/Qt9GL0LLQsNC10YIg0LTQsNC90L3Ri9C1INGBINC60L7QvdGC0LXQutGB0YLQvtC8IFdlYkdMLlxuICAgICAqXG4gICAgICog0JIg0YHQu9GD0YfQsNC1IEJ1ZmZlci5BcnJheUJ1ZmZlciDRgdCy0Y/Qt9GL0LLQsNC10YIg0YEg0LDRgtGA0LjQsdGD0YLQsNC80Lgg0YjQtdC50LTQtdGA0LAuXG4gICAgICog0JAg0LIg0YHQu9GD0YfQsNC1IEJ1ZmZlci5FbGVtZW50QXJyYXlCdWZmZXIg0YHQstGP0LfRi9Cy0LDQtdGCINC80LDRgdGB0LjQsiDQuNC90LTQtdC60YHQvtCyLlxuICAgICAqXG4gICAgICog0JXRgdC70Lgg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC/0LXRgNCy0YvQuSDRgNCw0LcsINC00L7QsdCw0LLQu9GP0LXRgiDQtNCw0L3QvdGL0LUg0LIg0LrQvtC90YLQtdC60YHRgiBXZWJHTC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0fSBnbFxuICAgICAqIEBwYXJhbSB7P051bWJlcn0gbG9jYXRpb24g0J/QvtC70L7QttC10L3QuNC1INCw0YLRgtGA0LjQsdGD0YLQsCDQtNC70Y8g0YHQstGP0LfRi9Cy0LDQvdC40Y8g0LTQsNC90L3Ri9GFINGBINC/0LXRgNC10LzQtdC90L3Ri9C80Lgg0LIg0YjQtdC50LTQtdGA0LVcbiAgICAgKiBAcGFyYW0gez9CdWZmZXJCaW5kT3B0aW9uc30gb3B0aW9ucyDQn9Cw0YDQsNC80LXRgtGA0Ysg0L/QtdGA0LXQtNCw0LLQsNC10LzRi9C1INCyINGE0YPQvdC60YbQuNGOIHZlcnRleEF0dHJpYlBvaW50ZXIsINC10YHQu9C4INC40YUg0L3QtdGCLFxuICAgICAqINGC0L4g0LjRgdC/0L7Qu9GM0LfRg9GO0YLRgdGPINC/0LDRgNCw0LzQtdGC0YDRiyDQutC+0L3QutGA0LXRgtC90L7Qs9C+INCx0YPRhNC10YDQsC4g0J/QsNGA0LDQvNC10YLRgNGLINC00L7Qu9C20L3RiyDQsdGL0YLRjCDQv9C10YDQtdC00LDQvdGLINCy0YHQtS5cbiAgICAgKi9cbiAgICBiaW5kKGdsLCBsb2NhdGlvbiwgb3B0aW9ucykge1xuICAgICAgICBpZiAoIXRoaXMuX2dsQnVmZmVyKSB7XG4gICAgICAgICAgICB0aGlzLnByZXBhcmUoZ2wpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQnVmZmVyLkFycmF5QnVmZmVyKSB7XG4gICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdGhpcy5fZ2xCdWZmZXIpO1xuXG4gICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB0aGlzLm9wdGlvbnM7XG5cbiAgICAgICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIobG9jYXRpb24sIG9wdGlvbnMuaXRlbVNpemUsIHRoaXMuX3RvR2xQYXJhbShnbCwgb3B0aW9ucy5kYXRhVHlwZSksXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5ub3JtYWxpemVkLCBvcHRpb25zLnN0cmlkZSwgb3B0aW9ucy5vZmZzZXQpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSBCdWZmZXIuRWxlbWVudEFycmF5QnVmZmVyKSB7XG4gICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCB0aGlzLl9nbEJ1ZmZlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GP0LXRgiDQtNCw0L3QvdGL0LUg0LjQtyDQutC+0L3RgtC10LrRgdGC0LAgV2ViR0wuXG4gICAgICovXG4gICAgcmVtb3ZlKCkge1xuICAgICAgICB0aGlzLl91bnByZXBhcmUoKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQl9Cw0LzQtdC90Y/QtdGCINGH0LDRgdGC0Ywg0LHRg9GE0LXRgNCwINC90L7QstGL0LzQuCDQtNCw0L3QvdGL0LzQuCDQuCDQvtGC0L/RgNCw0LLQu9GP0LXRgiDQuNGFINCyINCy0LjQtNC10L7QutCw0YDRgtGDXG4gICAgICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRleHR9IGdsXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGluZGV4INCY0L3QtNC10LrRgSwg0YEg0LrQvtGC0L7RgNC+0LPQviDQvdCw0YfQsNGC0Ywg0LfQsNC80LXQvdGDXG4gICAgICogQHBhcmFtIHtUeXBlZEFycmF5fSBkYXRhINCd0L7QstGL0LUg0LTQsNC90L3Ri9C1XG4gICAgICovXG4gICAgc3ViRGF0YShnbCwgaW5kZXgsIGRhdGEpIHtcbiAgICAgICAgZ2wuYmluZEJ1ZmZlcih0aGlzLl90b0dsUGFyYW0oZ2wsIHRoaXMudHlwZSksIHRoaXMuX2dsQnVmZmVyKTtcbiAgICAgICAgZ2wuYnVmZmVyU3ViRGF0YSh0aGlzLl90b0dsUGFyYW0oZ2wsIHRoaXMudHlwZSksIGluZGV4LCBkYXRhKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQmtC70LDQtNGR0YIg0LTQsNC90L3Ri9C1INCyINCy0LjQtNC10L7QutCw0YDRgtGDXG4gICAgICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRleHR9IGdsXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHByZXBhcmUoZ2wpIHtcbiAgICAgICAgdGhpcy5fZ2xDb250ZXh0ID0gZ2w7XG4gICAgICAgIHRoaXMuX2dsQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7XG4gICAgICAgIGdsLmJpbmRCdWZmZXIodGhpcy5fdG9HbFBhcmFtKGdsLCB0aGlzLnR5cGUpLCB0aGlzLl9nbEJ1ZmZlcik7XG4gICAgICAgIGdsLmJ1ZmZlckRhdGEodGhpcy5fdG9HbFBhcmFtKGdsLCB0aGlzLnR5cGUpLCB0aGlzLl9pbml0RGF0YSwgdGhpcy5fdG9HbFBhcmFtKGdsLCB0aGlzLmRyYXdUeXBlKSk7XG4gICAgICAgIHRoaXMuX2luaXREYXRhID0gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GP0LXRgiDQtNCw0L3QvdGL0LUg0LjQtyDQstC40LTQtdC+0LrQsNGA0YLRi1xuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBfdW5wcmVwYXJlKCkge1xuICAgICAgICBpZiAodGhpcy5fZ2xCdWZmZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2dsQ29udGV4dC5kZWxldGVCdWZmZXIodGhpcy5fZ2xCdWZmZXIpO1xuICAgICAgICAgICAgdGhpcy5fZ2xCdWZmZXIgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fZ2xDb250ZXh0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQtdC+0LHRgNCw0LfQvtCy0YvQstCw0LXRgiDQv9Cw0YDQsNC80LXRgtGA0Ysg0LHRg9GE0LXRgNCwINCyINC/0LDRgNCw0LzQtdGC0YDRiyBXZWJHTFxuICAgICAqIEBwYXJhbSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0fSBnbFxuICAgICAqIEBwYXJhbSB7QnVmZmVyLkFycmF5QnVmZmVyIHwgQnVmZmVyLkVsZW1lbnRBcnJheUJ1ZmZlcn0gcGFyYW1cbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgX3RvR2xQYXJhbShnbCwgcGFyYW0pIHtcbiAgICAgICAgaWYgKHBhcmFtID09PSBCdWZmZXIuQXJyYXlCdWZmZXIpIHsgcmV0dXJuIGdsLkFSUkFZX0JVRkZFUjsgfVxuICAgICAgICBpZiAocGFyYW0gPT09IEJ1ZmZlci5FbGVtZW50QXJyYXlCdWZmZXIpIHsgcmV0dXJuIGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSOyB9XG4gICAgICAgIGlmIChwYXJhbSA9PT0gQnVmZmVyLlN0YXRpY0RyYXcpIHsgcmV0dXJuIGdsLlNUQVRJQ19EUkFXOyB9XG4gICAgICAgIGlmIChwYXJhbSA9PT0gQnVmZmVyLkR5bmFtaWNEcmF3KSB7IHJldHVybiBnbC5EWU5BTUlDX0RSQVc7IH1cbiAgICAgICAgaWYgKHBhcmFtID09PSBCdWZmZXIuQnl0ZSkgeyByZXR1cm4gZ2wuQllURTsgfVxuICAgICAgICBpZiAocGFyYW0gPT09IEJ1ZmZlci5TaG9ydCkgeyByZXR1cm4gZ2wuU0hPUlQ7IH1cbiAgICAgICAgaWYgKHBhcmFtID09PSBCdWZmZXIuSW50KSB7IHJldHVybiBnbC5JTlQ7IH1cbiAgICAgICAgaWYgKHBhcmFtID09PSBCdWZmZXIuRmxvYXQpIHsgcmV0dXJuIGdsLkZMT0FUOyB9XG4gICAgICAgIGlmIChwYXJhbSA9PT0gQnVmZmVyLlVuc2lnbmVkQnl0ZSkgeyByZXR1cm4gZ2wuVU5TSUdORURfQllURTsgfVxuICAgICAgICBpZiAocGFyYW0gPT09IEJ1ZmZlci5VbnNpZ25lZFNob3J0KSB7IHJldHVybiBnbC5VTlNJR05FRF9TSE9SVDsgfVxuICAgICAgICBpZiAocGFyYW0gPT09IEJ1ZmZlci5VbnNpZ25lZEludCkgeyByZXR1cm4gZ2wuVU5TSUdORURfSU5UOyB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cblxuQnVmZmVyLkFycmF5QnVmZmVyID0gMTtcbkJ1ZmZlci5FbGVtZW50QXJyYXlCdWZmZXIgPSAyO1xuXG5CdWZmZXIuU3RhdGljRHJhdyA9IDEwO1xuQnVmZmVyLkR5bmFtaWNEcmF3ID0gMTE7XG5cbkJ1ZmZlci5GbG9hdCA9IDIwO1xuQnVmZmVyLlVuc2lnbmVkQnl0ZSA9IDIxO1xuQnVmZmVyLlVuc2lnbmVkU2hvcnQgPSAyMjtcbkJ1ZmZlci5VbnNpZ25lZEludCA9IDIzO1xuQnVmZmVyLkJ5dGUgPSAyNDtcbkJ1ZmZlci5TaG9ydCA9IDI1O1xuQnVmZmVyLkludCA9IDI2O1xuXG5CdWZmZXIuZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgaXRlbVNpemU6IDMsXG4gICAgZGF0YVR5cGU6IEJ1ZmZlci5GbG9hdCxcbiAgICBzdHJpZGU6IDAsXG4gICAgb2Zmc2V0OiAwLFxuICAgIG5vcm1hbGl6ZWQ6IGZhbHNlXG59O1xuXG5leHBvcnQgZGVmYXVsdCBCdWZmZXI7XG5cbi8qKlxuICog0J/QsNGA0LDQvNC10YLRgNGLINC/0LXRgNC10LTQsNCy0LDQtdC80YvQtSDQsiDRhNGD0L3QutGG0LjRjiB2ZXJ0ZXhBdHRyaWJQb2ludGVyLlxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEJ1ZmZlckJpbmRPcHRpb25zXG4gKiBAcHJvcGVydHkge051bWJlcn0gaXRlbVNpemUg0KDQsNC30LzQtdGA0L3QvtGB0YLRjCDRjdC70LXQvNC10L3RgtC+0LIg0LIg0LHRg9GE0LXRgNC1XG4gKiBAcHJvcGVydHkge0J1ZmZlci5GbG9hdCB8IEJ1ZmZlci5VbnNpZ25lZEJ5dGV9IGRhdGFUeXBlINCi0LjQvyDQtNCw0L3QvdGL0YUg0LIg0LHRg9GE0LXRgNC1XG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IG5vcm1hbGl6ZWQg0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyDRhtC10LvQvtGH0LjRgdC70LXQvdC90YvRhSDRgtC40L/QvtCyLiDQldGB0LvQuCDQstGL0YHRgtCw0LLQu9C10L0g0LIgdHJ1ZSwg0YLQvlxuICog0LfQvdCw0YfQtdC90LjRjyDQuNC80LXRjtGJ0LjQtSDRgtC40L8gQllURSDQvtGCIC0xMjgg0LTQviAxMjgg0LHRg9C00YPRgiDQv9C10YDQtdCy0LXQtNC10L3RiyDQvtGCIC0xLjAg0LTQviAxLjAuXG4gKiBAcHJvcGVydHkge051bWJlcn0gc3RyaWRlXG4gKiBAcHJvcGVydHkge051bWJlcn0gb2Zmc2V0XG4gKi9cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9CdWZmZXIuanMiXSwibmFtZXMiOlsiQnVmZmVyIiwiY29uc3RydWN0b3IiLCJpbml0RGF0YSIsIm9wdGlvbnMiLCJfaW5pdERhdGEiLCJieXRlTGVuZ3RoIiwidW5kZWZpbmVkIiwidHlwZSIsIkFycmF5QnVmZmVyIiwiZHJhd1R5cGUiLCJTdGF0aWNEcmF3IiwiT2JqZWN0IiwiYXNzaWduIiwiZGVmYXVsdE9wdGlvbnMiLCJfZ2xCdWZmZXIiLCJfZ2xDb250ZXh0IiwiYmluZCIsImdsIiwibG9jYXRpb24iLCJwcmVwYXJlIiwiYmluZEJ1ZmZlciIsIkFSUkFZX0JVRkZFUiIsInZlcnRleEF0dHJpYlBvaW50ZXIiLCJpdGVtU2l6ZSIsIl90b0dsUGFyYW0iLCJkYXRhVHlwZSIsIm5vcm1hbGl6ZWQiLCJzdHJpZGUiLCJvZmZzZXQiLCJFbGVtZW50QXJyYXlCdWZmZXIiLCJFTEVNRU5UX0FSUkFZX0JVRkZFUiIsInJlbW92ZSIsIl91bnByZXBhcmUiLCJzdWJEYXRhIiwiaW5kZXgiLCJkYXRhIiwiYnVmZmVyU3ViRGF0YSIsImNyZWF0ZUJ1ZmZlciIsImJ1ZmZlckRhdGEiLCJkZWxldGVCdWZmZXIiLCJwYXJhbSIsIlNUQVRJQ19EUkFXIiwiRHluYW1pY0RyYXciLCJEWU5BTUlDX0RSQVciLCJCeXRlIiwiQllURSIsIlNob3J0IiwiU0hPUlQiLCJJbnQiLCJJTlQiLCJGbG9hdCIsIkZMT0FUIiwiVW5zaWduZWRCeXRlIiwiVU5TSUdORURfQllURSIsIlVuc2lnbmVkU2hvcnQiLCJVTlNJR05FRF9TSE9SVCIsIlVuc2lnbmVkSW50IiwiVU5TSUdORURfSU5UIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7QUFRQSxNQUFNQSxNQUFOLENBQWE7QUFDVEMsY0FBWUMsUUFBWixFQUFzQkMsT0FBdEIsRUFBK0I7QUFDM0IsU0FBS0MsU0FBTCxHQUFpQkYsUUFBakI7O0FBRUE7Ozs7QUFJQSxTQUFLRyxVQUFMLEdBQWtCSCxTQUFTRyxVQUFULEtBQXdCQyxT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UCxHQUFlLEVBQWY7QUFDQWxELE9BQU9vRCxZQUFQLEdBQXNCLEVBQXRCO0FBQ0FwRCxPQUFPc0QsYUFBUCxHQUF1QixFQUF2QjtBQUNBdEQsT0FBT3dELFdBQVAsR0FBcUIsRUFBckI7QUFDQXhELE9BQU80QyxJQUFQLEdBQWMsRUFBZDtBQUNBNUMsT0FBTzhDLEtBQVAsR0FBZSxFQUFmO0FBQ0E5QyxPQUFPZ0QsR0FBUCxHQUFhLEVBQWI7O0FBRUFoRCxPQUFPYSxjQUFQLEdBQXdCO0FBQ3BCVSxZQUFVLENBRFU7QUFFcEJFLFlBQVV6QixPQUFPa0QsS0FGRztBQUdwQnZCLFVBQVEsQ0FIWTtBQUlwQkMsVUFBUSxDQUpZO0FBS3BCRixjQUFZO0FBTFEsQ0FBeEI7O0FBUUEsZUFBZTFCLE1BQWY7O0FBRUEiLCJmaWxlIjoiQnVmZmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDQmNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LTQu9GPINGF0YDQsNC90LXQvdC40Y8g0Lgg0L/QvtC00LPQvtGC0L7QstC60Lgg0LTQsNC90L3Ri9GFINC00LvRjyDQv9C10YDQtdC00LDRh9C4INCyINCw0YLRgNC40LHRg9GC0Ysg0YjQtdC50LTQtdGA0LBcbiAqXG4gKiBAcGFyYW0ge1R5cGVkQXJyYXkgfCBBcnJheUJ1ZmZlciB8IG51bWJlcn0gaW5pdERhdGEg0JTQsNC90L3Ri9C1INC00LvRjyDQuNC90LjRgtCwINCx0YPRhNC10YDQsDpcbiAqINGB0L7QtNC10YDQttC40LzQvtC1INCx0YPRhNC10YDQsCDQuNC70Lgg0LXQs9C+INGA0LDQt9C80LXRgFxuICogQHBhcmFtIHs/QnVmZmVyQmluZE9wdGlvbnN9IG9wdGlvbnMg0J/QsNGA0LDQvNC10YLRgNGLINC/0LXRgNC10LTQsNGH0Lgg0LHRg9GE0LXRgNCwINCyINCy0LjQtNC10L7QutCw0YDRgtGDLFxuICog0LzQvtCz0YPRgiDQsdGL0YLRjCDQv9C10YDQtdC+0L/RgNC10LTQtdC70LXQvdGLINC40Lcge0BsaW5rIEJ1ZmZlckNoYW5uZWx9XG4gKi9cbmNsYXNzIEJ1ZmZlciB7XG4gICAgY29uc3RydWN0b3IoaW5pdERhdGEsIG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5faW5pdERhdGEgPSBpbml0RGF0YTtcblxuICAgICAgICAvKipcbiAgICAgICAgICog0KDQsNC30LzQtdGAINC00LDQvdC90YvRhSDQsiDQsdGD0YTQtdGA0LUg0LIg0LHQsNC50YLQsNGFXG4gICAgICAgICAqIEB0eXBlIHtOdW1iZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmJ5dGVMZW5ndGggPSBpbml0RGF0YS5ieXRlTGVuZ3RoICE9PSB1bmRlZmluZWQgPyBpbml0RGF0YS5ieXRlTGVuZ3RoIDogaW5pdERhdGE7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCi0LjQvyDQsdGD0YTQtdGA0LAuINCR0YPRhNC10YAg0LzQvtC20LXRgiDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0YzRgdGPINC00LvRjyDQv9C10YDQtdC00LDRh9C4INC80LDRgdGB0LjQstCwINC00LDQvdC90YvRhSxcbiAgICAgICAgICog0YLQsNC6INC4INC00LvRjyDQv9C10YDQtdC00LDRh9C4INC40L3QtNC10LrRgdC+0LIg0Y3Qu9C10LzQtdC90YLQvtCyINC40Lcg0LTQsNC90L3Ri9GFLlxuICAgICAgICAgKiBAdHlwZSB7QnVmZmVyLkFycmF5QnVmZmVyIHwgQnVmZmVyLkVsZW1lbnRBcnJheUJ1ZmZlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudHlwZSA9IEJ1ZmZlci5BcnJheUJ1ZmZlcjtcblxuICAgICAgICAvKipcbiAgICAgICAgICog0KPQutCw0LfRi9Cy0LDQtdGCLCDQutCw0Log0YfQsNGB0YLQviDQtNCw0L3QvdGL0LUg0LHRg9GE0LXRgNCwINCx0YPQtNGD0YIg0LjQt9C80LXQvdGP0YLRjNGB0Y8uXG4gICAgICAgICAqIEB0eXBlIHtCdWZmZXIuU3RhdGljRHJhdyB8IEJ1ZmZlci5EeW5hbWljRHJhd31cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZHJhd1R5cGUgPSBCdWZmZXIuU3RhdGljRHJhdztcblxuICAgICAgICAvKipcbiAgICAgICAgICog0J/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDRgdCy0Y/Qt9GL0LLQsNC90LjRjyDQsdGD0YTQtdGA0LBcbiAgICAgICAgICogQHR5cGUge0J1ZmZlckJpbmRPcHRpb25zfVxuICAgICAgICAgKiBAaWdub3JlXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBCdWZmZXIuZGVmYXVsdE9wdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQmNGB0YXQvtC00L3Ri9C5IFdlYkdMINCx0YPRhNC10YBcbiAgICAgICAgICogQHR5cGUgez9XZWJHTEJ1ZmZlcn1cbiAgICAgICAgICogQGlnbm9yZVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fZ2xCdWZmZXIgPSBudWxsO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQmtC+0L3RgtC10LrRgdGCIFdlYkdMLCDQsiDQutC+0YLQvtGA0L7QvCDQsdGL0Lsg0LjQvdC40YbQuNCw0LvQuNC30LjRgNC+0LLQsNC9INCx0YPRhNC10YAuXG4gICAgICAgICAqINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDRgtC+0LvRjNC60L4g0LTQu9GPINGD0LTQsNC70LXQvdC40Y8g0LHRg9GE0LXRgNCwLCDQv9C+0LTRg9C80LDRgtGMINGF0L7RgNC+0YjQviwg0L/RgNC10LbQtNC1INGH0LXQvCDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0LTQu9GPINGH0LXQs9C+LdGC0L4g0LXRidGRLlxuICAgICAgICAgKiBAdHlwZSB7P1dlYkdMUmVuZGVyaW5nQ29udGV4dH1cbiAgICAgICAgICogQGlnbm9yZVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fZ2xDb250ZXh0ID0gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodCy0Y/Qt9GL0LLQsNC10YIg0LTQsNC90L3Ri9C1INGBINC60L7QvdGC0LXQutGB0YLQvtC8IFdlYkdMLlxuICAgICAqXG4gICAgICog0JIg0YHQu9GD0YfQsNC1IEJ1ZmZlci5BcnJheUJ1ZmZlciDRgdCy0Y/Qt9GL0LLQsNC10YIg0YEg0LDRgtGA0LjQsdGD0YLQsNC80Lgg0YjQtdC50LTQtdGA0LAuXG4gICAgICog0JAg0LIg0YHQu9GD0YfQsNC1IEJ1ZmZlci5FbGVtZW50QXJyYXlCdWZmZXIg0YHQstGP0LfRi9Cy0LDQtdGCINC80LDRgdGB0LjQsiDQuNC90LTQtdC60YHQvtCyLlxuICAgICAqXG4gICAgICog0JXRgdC70Lgg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC/0LXRgNCy0YvQuSDRgNCw0LcsINC00L7QsdCw0LLQu9GP0LXRgiDQtNCw0L3QvdGL0LUg0LIg0LrQvtC90YLQtdC60YHRgiBXZWJHTC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0fSBnbFxuICAgICAqIEBwYXJhbSB7P051bWJlcn0gbG9jYXRpb24g0J/QvtC70L7QttC10L3QuNC1INCw0YLRgtGA0LjQsdGD0YLQsCDQtNC70Y8g0YHQstGP0LfRi9Cy0LDQvdC40Y8g0LTQsNC90L3Ri9GFINGBINC/0LXRgNC10LzQtdC90L3Ri9C80Lgg0LIg0YjQtdC50LTQtdGA0LVcbiAgICAgKiBAcGFyYW0gez9CdWZmZXJCaW5kT3B0aW9uc30gb3B0aW9ucyDQn9Cw0YDQsNC80LXRgtGA0Ysg0L/QtdGA0LXQtNCw0LLQsNC10LzRi9C1INCyINGE0YPQvdC60YbQuNGOIHZlcnRleEF0dHJpYlBvaW50ZXIsINC10YHQu9C4INC40YUg0L3QtdGCLFxuICAgICAqINGC0L4g0LjRgdC/0L7Qu9GM0LfRg9GO0YLRgdGPINC/0LDRgNCw0LzQtdGC0YDRiyDQutC+0L3QutGA0LXRgtC90L7Qs9C+INCx0YPRhNC10YDQsC4g0J/QsNGA0LDQvNC10YLRgNGLINC00L7Qu9C20L3RiyDQsdGL0YLRjCDQv9C10YDQtdC00LDQvdGLINCy0YHQtS5cbiAgICAgKi9cbiAgICBiaW5kKGdsLCBsb2NhdGlvbiwgb3B0aW9ucykge1xuICAgICAgICBpZiAoIXRoaXMuX2dsQnVmZmVyKSB7XG4gICAgICAgICAgICB0aGlzLnByZXBhcmUoZ2wpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gQnVmZmVyLkFycmF5QnVmZmVyKSB7XG4gICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdGhpcy5fZ2xCdWZmZXIpO1xuXG4gICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB0aGlzLm9wdGlvbnM7XG5cbiAgICAgICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIobG9jYXRpb24sIG9wdGlvbnMuaXRlbVNpemUsIHRoaXMuX3RvR2xQYXJhbShnbCwgb3B0aW9ucy5kYXRhVHlwZSksXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5ub3JtYWxpemVkLCBvcHRpb25zLnN0cmlkZSwgb3B0aW9ucy5vZmZzZXQpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSBCdWZmZXIuRWxlbWVudEFycmF5QnVmZmVyKSB7XG4gICAgICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCB0aGlzLl9nbEJ1ZmZlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GP0LXRgiDQtNCw0L3QvdGL0LUg0LjQtyDQutC+0L3RgtC10LrRgdGC0LAgV2ViR0wuXG4gICAgICovXG4gICAgcmVtb3ZlKCkge1xuICAgICAgICB0aGlzLl91bnByZXBhcmUoKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQl9Cw0LzQtdC90Y/QtdGCINGH0LDRgdGC0Ywg0LHRg9GE0LXRgNCwINC90L7QstGL0LzQuCDQtNCw0L3QvdGL0LzQuCDQuCDQvtGC0L/RgNCw0LLQu9GP0LXRgiDQuNGFINCyINCy0LjQtNC10L7QutCw0YDRgtGDXG4gICAgICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRleHR9IGdsXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGluZGV4INCY0L3QtNC10LrRgSwg0YEg0LrQvtGC0L7RgNC+0LPQviDQvdCw0YfQsNGC0Ywg0LfQsNC80LXQvdGDXG4gICAgICogQHBhcmFtIHtUeXBlZEFycmF5fSBkYXRhINCd0L7QstGL0LUg0LTQsNC90L3Ri9C1XG4gICAgICovXG4gICAgc3ViRGF0YShnbCwgaW5kZXgsIGRhdGEpIHtcbiAgICAgICAgZ2wuYmluZEJ1ZmZlcih0aGlzLl90b0dsUGFyYW0oZ2wsIHRoaXMudHlwZSksIHRoaXMuX2dsQnVmZmVyKTtcbiAgICAgICAgZ2wuYnVmZmVyU3ViRGF0YSh0aGlzLl90b0dsUGFyYW0oZ2wsIHRoaXMudHlwZSksIGluZGV4LCBkYXRhKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQmtC70LDQtNGR0YIg0LTQsNC90L3Ri9C1INCyINCy0LjQtNC10L7QutCw0YDRgtGDXG4gICAgICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRleHR9IGdsXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIHByZXBhcmUoZ2wpIHtcbiAgICAgICAgdGhpcy5fZ2xDb250ZXh0ID0gZ2w7XG4gICAgICAgIHRoaXMuX2dsQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7XG4gICAgICAgIGdsLmJpbmRCdWZmZXIodGhpcy5fdG9HbFBhcmFtKGdsLCB0aGlzLnR5cGUpLCB0aGlzLl9nbEJ1ZmZlcik7XG4gICAgICAgIGdsLmJ1ZmZlckRhdGEodGhpcy5fdG9HbFBhcmFtKGdsLCB0aGlzLnR5cGUpLCB0aGlzLl9pbml0RGF0YSwgdGhpcy5fdG9HbFBhcmFtKGdsLCB0aGlzLmRyYXdUeXBlKSk7XG4gICAgICAgIHRoaXMuX2luaXREYXRhID0gbnVsbDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIg0LTQsNC90L3Ri9C1INC40Lcg0LLQuNC00LXQvtC60LDRgNGC0YtcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgX3VucHJlcGFyZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2dsQnVmZmVyKSB7XG4gICAgICAgICAgICB0aGlzLl9nbENvbnRleHQuZGVsZXRlQnVmZmVyKHRoaXMuX2dsQnVmZmVyKTtcbiAgICAgICAgICAgIHRoaXMuX2dsQnVmZmVyID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX2dsQ29udGV4dCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LXQvtCx0YDQsNC30L7QstGL0LLQsNC10YIg0L/QsNGA0LDQvNC10YLRgNGLINCx0YPRhNC10YDQsCDQsiDQv9Cw0YDQsNC80LXRgtGA0YsgV2ViR0xcbiAgICAgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dH0gZ2xcbiAgICAgKiBAcGFyYW0ge0J1ZmZlci5BcnJheUJ1ZmZlciB8IEJ1ZmZlci5FbGVtZW50QXJyYXlCdWZmZXJ9IHBhcmFtXG4gICAgICogQGlnbm9yZVxuICAgICAqL1xuICAgIF90b0dsUGFyYW0oZ2wsIHBhcmFtKSB7XG4gICAgICAgIGlmIChwYXJhbSA9PT0gQnVmZmVyLkFycmF5QnVmZmVyKSB7IHJldHVybiBnbC5BUlJBWV9CVUZGRVI7IH1cbiAgICAgICAgaWYgKHBhcmFtID09PSBCdWZmZXIuRWxlbWVudEFycmF5QnVmZmVyKSB7IHJldHVybiBnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUjsgfVxuICAgICAgICBpZiAocGFyYW0gPT09IEJ1ZmZlci5TdGF0aWNEcmF3KSB7IHJldHVybiBnbC5TVEFUSUNfRFJBVzsgfVxuICAgICAgICBpZiAocGFyYW0gPT09IEJ1ZmZlci5EeW5hbWljRHJhdykgeyByZXR1cm4gZ2wuRFlOQU1JQ19EUkFXOyB9XG4gICAgICAgIGlmIChwYXJhbSA9PT0gQnVmZmVyLkJ5dGUpIHsgcmV0dXJuIGdsLkJZVEU7IH1cbiAgICAgICAgaWYgKHBhcmFtID09PSBCdWZmZXIuU2hvcnQpIHsgcmV0dXJuIGdsLlNIT1JUOyB9XG4gICAgICAgIGlmIChwYXJhbSA9PT0gQnVmZmVyLkludCkgeyByZXR1cm4gZ2wuSU5UOyB9XG4gICAgICAgIGlmIChwYXJhbSA9PT0gQnVmZmVyLkZsb2F0KSB7IHJldHVybiBnbC5GTE9BVDsgfVxuICAgICAgICBpZiAocGFyYW0gPT09IEJ1ZmZlci5VbnNpZ25lZEJ5dGUpIHsgcmV0dXJuIGdsLlVOU0lHTkVEX0JZVEU7IH1cbiAgICAgICAgaWYgKHBhcmFtID09PSBCdWZmZXIuVW5zaWduZWRTaG9ydCkgeyByZXR1cm4gZ2wuVU5TSUdORURfU0hPUlQ7IH1cbiAgICAgICAgaWYgKHBhcmFtID09PSBCdWZmZXIuVW5zaWduZWRJbnQpIHsgcmV0dXJuIGdsLlVOU0lHTkVEX0lOVDsgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5cbkJ1ZmZlci5BcnJheUJ1ZmZlciA9IDE7XG5CdWZmZXIuRWxlbWVudEFycmF5QnVmZmVyID0gMjtcblxuQnVmZmVyLlN0YXRpY0RyYXcgPSAxMDtcbkJ1ZmZlci5EeW5hbWljRHJhdyA9IDExO1xuXG5CdWZmZXIuRmxvYXQgPSAyMDtcbkJ1ZmZlci5VbnNpZ25lZEJ5dGUgPSAyMTtcbkJ1ZmZlci5VbnNpZ25lZFNob3J0ID0gMjI7XG5CdWZmZXIuVW5zaWduZWRJbnQgPSAyMztcbkJ1ZmZlci5CeXRlID0gMjQ7XG5CdWZmZXIuU2hvcnQgPSAyNTtcbkJ1ZmZlci5JbnQgPSAyNjtcblxuQnVmZmVyLmRlZmF1bHRPcHRpb25zID0ge1xuICAgIGl0ZW1TaXplOiAzLFxuICAgIGRhdGFUeXBlOiBCdWZmZXIuRmxvYXQsXG4gICAgc3RyaWRlOiAwLFxuICAgIG9mZnNldDogMCxcbiAgICBub3JtYWxpemVkOiBmYWxzZVxufTtcblxuZXhwb3J0IGRlZmF1bHQgQnVmZmVyO1xuXG4vKipcbiAqINCf0LDRgNCw0LzQtdGC0YDRiyDQv9C10YDQtdC00LDQstCw0LXQvNGL0LUg0LIg0YTRg9C90LrRhtC40Y4gdmVydGV4QXR0cmliUG9pbnRlci5cbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBCdWZmZXJCaW5kT3B0aW9uc1xuICogQHByb3BlcnR5IHtOdW1iZXJ9IGl0ZW1TaXplINCg0LDQt9C80LXRgNC90L7RgdGC0Ywg0Y3Qu9C10LzQtdC90YLQvtCyINCyINCx0YPRhNC10YDQtVxuICogQHByb3BlcnR5IHtCdWZmZXIuRmxvYXQgfCBCdWZmZXIuVW5zaWduZWRCeXRlfSBkYXRhVHlwZSDQotC40L8g0LTQsNC90L3Ri9GFINCyINCx0YPRhNC10YDQtVxuICogQHByb3BlcnR5IHtCb29sZWFufSBub3JtYWxpemVkINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8g0YbQtdC70L7Rh9C40YHQu9C10L3QvdGL0YUg0YLQuNC/0L7Qsi4g0JXRgdC70Lgg0LLRi9GB0YLQsNCy0LvQtdC9INCyIHRydWUsINGC0L5cbiAqINC30L3QsNGH0LXQvdC40Y8g0LjQvNC10Y7RidC40LUg0YLQuNC/IEJZVEUg0L7RgiAtMTI4INC00L4gMTI4INCx0YPQtNGD0YIg0L/QtdGA0LXQstC10LTQtdC90Ysg0L7RgiAtMS4wINC00L4gMS4wLlxuICogQHByb3BlcnR5IHtOdW1iZXJ9IHN0cmlkZVxuICogQHByb3BlcnR5IHtOdW1iZXJ9IG9mZnNldFxuICovXG4iXX0=
{
"name": "2gl",
"version": "0.4.1",
"version": "0.5.0",
"description": "WebGL library for 2GIS projects",
"repository": {
"type": "git",
"url": "git@github.com:2gis/2gl.git"
"url": "git+https://github.com/2gis/2gl.git"
},
"main": "index.js",
"typings": "index.d.ts",
"module": "src/index.js",

@@ -11,0 +12,0 @@ "jsnext:main": "src/index.js",

@@ -14,4 +14,4 @@ import Object3DPlugin from './rendererPlugins/Object3DPlugin';

* @param {Boolean} [options.autoClear=true] Стирать ли прошлый кадр перед новый рендерингом
* @param {Array} [options.clearColor=true] Цвет заливки в формате RGBA
* @param {Object} [options.sortObjects=true] Нужно ли сортировать прозрачные объекты по удаленности
* @param {Number[]} [options.clearColor=[1,1,1,1]] Цвет заливки в формате RGBA
* @param {Boolean} [options.sortObjects=true] Нужно ли сортировать прозрачные объекты по удаленности
* или по renderOrder

@@ -32,3 +32,3 @@ * */

this._gl = this._canvasElement.getContext('webgl', attributes) || this._canvasElement.getContext('experimental-webgl', attributes);
this._gl = options.version === 2 ? this._canvasElement.getContext('webgl2', attributes) : this._canvasElement.getContext('webgl', attributes) || this._canvasElement.getContext('experimental-webgl', attributes);
} else {

@@ -281,2 +281,2 @@ this._gl = options.gl;

*/
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9SZW5kZXJlci5qcyJdLCJuYW1lcyI6WyJPYmplY3QzRFBsdWdpbiIsIlJlbmRlcmVyIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiY2FudmFzIiwiX2NhbnZhc0VsZW1lbnQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiYXR0cmlidXRlcyIsImFudGlhbGlhcyIsInVuZGVmaW5lZCIsInN0ZW5jaWwiLCJmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0IiwiX2dsIiwiZ2V0Q29udGV4dCIsImdsIiwiX3BpeGVsUmF0aW8iLCJwaXhlbFJhdGlvIiwiYXV0b0NsZWFyIiwiY2xlYXJDb2xvciIsInNvcnRPYmplY3RzIiwiX3BsdWdpbnMiLCJfcGx1Z2luc0J5VHlwZSIsIl9tYXhQbHVnaW5PcmRlciIsImFkZFBsdWdpbiIsIndlYkdsRXh0ZW5zaW9ucyIsInBsdWdpbiIsIm9yZGVyIiwicHVzaCIsInNvcnQiLCJhIiwiYiIsInR5cGUiLCJNYXRoIiwibWF4IiwiYXBwbHkiLCJtYXAiLCJwIiwicmVtb3ZlUGx1Z2luIiwiUGx1Z2luIiwic29tZSIsImVsIiwiaSIsInNwbGljZSIsInNldFBpeGVsUmF0aW8iLCJ2YWx1ZSIsImdldFBpeGVsUmF0aW8iLCJzZXRTaXplIiwid2lkdGgiLCJoZWlnaHQiLCJfc2l6ZSIsInN0eWxlIiwic2V0Vmlld3BvcnQiLCJ2aWV3cG9ydCIsImdldFNpemUiLCJzZXRSZW5kZXJUYXJnZXQiLCJyZW5kZXJUYXJnZXQiLCJfcmVuZGVyVGFyZ2V0IiwicmVhZFBpeGVscyIsIngiLCJ5IiwiYXJyYXkiLCJiaW5kIiwiUkdCQSIsIlVOU0lHTkVEX0JZVEUiLCJ1bmJpbmQiLCJjbGVhciIsIkNPTE9SX0JVRkZFUl9CSVQiLCJERVBUSF9CVUZGRVJfQklUIiwicmVuZGVyIiwic2NlbmUiLCJjYW1lcmEiLCJ1c2VyRGF0YSIsInR5cGlmeUZvclJlbmRlciIsImNsZWFyRGVwdGgiLCJjbGVhclN0ZW5jaWwiLCJ1cGRhdGVMb2NhbE1hdHJpeCIsInVwZGF0ZVdvcmxkTWF0cml4Iiwic3RhdGUiLCJyZW5kZXJlciIsImV4dGVuc2lvbnMiLCJwbHVnaW5zVG9SZW5kZXIiLCJpdGVtIiwiZmlsdGVyIiwiaGFzT2JqZWN0cyIsImxlbmd0aCIsImFkZEV4dGVuc2lvbiIsIm5hbWUiLCJnZXRFeHRlbnNpb24iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLGNBQVAsTUFBMkIsa0NBQTNCOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7QUFlQSxNQUFNQyxRQUFOLENBQWU7QUFDWEMsZ0JBQVlDLE9BQVosRUFBcUI7QUFDakJBLGtCQUFVQSxXQUFXLEVBQXJCOztBQUVBLFlBQUlBLFFBQVFDLE1BQVosRUFBb0I7QUFDaEIsaUJBQUtDLGNBQUwsR0FBc0IsT0FBT0YsUUFBUUMsTUFBZixLQUEwQixRQUExQixHQUNsQkUsU0FBU0MsY0FBVCxDQUF3QkosUUFBUUMsTUFBaEMsQ0FEa0IsR0FDd0JELFFBQVFDLE1BRHREOztBQUdBLGtCQUFNSSxhQUFhO0FBQ2ZDLDJCQUFXTixRQUFRTSxTQUFSLEtBQXNCQyxTQUF0QixHQUFrQ1AsUUFBUU0sU0FBMUMsR0FBc0QsSUFEbEQ7QUFFZkUseUJBQVNSLFFBQVFRLE9BQVIsS0FBb0JELFNBQXBCLEdBQWdDUCxRQUFRUSxPQUF4QyxHQUFrRCxLQUY1QztBQUdmQyw4Q0FBOEJULFFBQVFTLDRCQUFSLEtBQXlDRixTQUF6QyxHQUMxQlAsUUFBUVMsNEJBRGtCLEdBQ2E7QUFKNUIsYUFBbkI7O0FBT0EsaUJBQUtDLEdBQUwsR0FBVyxLQUFLUixjQUFMLENBQW9CUyxVQUFwQixDQUErQixPQUEvQixFQUF3Q04sVUFBeEMsS0FDUCxLQUFLSCxjQUFMLENBQW9CUyxVQUFwQixDQUErQixvQkFBL0IsRUFBcUROLFVBQXJELENBREo7QUFFSCxTQWJELE1BYU87QUFDSCxpQkFBS0ssR0FBTCxHQUFXVixRQUFRWSxFQUFuQjtBQUNIOztBQUVELGFBQUtDLFdBQUwsR0FBbUJiLFFBQVFjLFVBQVIsSUFBc0IsQ0FBekM7O0FB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SSxNQUFwQyxFQUE0QzNDLEdBQTVDLEVBQWlEO0FBQzdDdUMsNEJBQWdCdkMsQ0FBaEIsRUFBbUIyQixNQUFuQixDQUNJUyxLQURKLEVBRUlHLGdCQUFnQnZDLElBQUksQ0FBcEIsQ0FGSixFQUdJdUMsZ0JBQWdCdkMsSUFBSSxDQUFwQixDQUhKO0FBS0g7O0FBRUQsWUFBSSxLQUFLZSxhQUFULEVBQXdCO0FBQ3BCLGlCQUFLQSxhQUFMLENBQW1CUSxNQUFuQixDQUEwQmxELEVBQTFCO0FBQ0g7O0FBRUQsZUFBTyxJQUFQO0FBQ0g7O0FBRUQ7Ozs7O0FBS0F1RSxpQkFBYUMsSUFBYixFQUFtQjtBQUNmLGFBQUs5RCxlQUFMLENBQXFCOEQsSUFBckIsSUFBNkIsS0FBSzFFLEdBQUwsQ0FBUzJFLFlBQVQsQ0FBc0JELElBQXRCLENBQTdCO0FBQ0EsZUFBTyxJQUFQO0FBQ0g7QUFuUVU7O0FBc1FmLGVBQWV0RixRQUFmOztBQUVBIiwiZmlsZSI6IlJlbmRlcmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE9iamVjdDNEUGx1Z2luIGZyb20gJy4vcmVuZGVyZXJQbHVnaW5zL09iamVjdDNEUGx1Z2luJztcblxuLyoqXG4gKiDQmNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LTQu9GPINC40L3QuNGG0LjQsNC70LjQt9Cw0YbQuNGPIFdlYkdMINC60L7QvdGC0LXQutGB0YLQsCDQuCDQvtGC0YDQuNGB0L7QstC60Lgg0L7QsdGK0LXQutGC0L7Qsi5cbiAqINCU0LvRjyDQvdC10LrQvtGC0L7RgNGL0YUg0L7QsdGK0LXQutGC0L7QsiDQvNC+0LbQtdGCINC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDRgdC/0LXRhtC40YTQuNGH0L3Ri9C1INGA0LXQvdC00LXRgNGLLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBbb3B0aW9ucy5jYW52YXNdINCt0LvQtdC80LXQvdGCIGNhbnZhc1xuICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRleHR9IFtvcHRpb25zLmdsXSDQldGB0LvQuCDRjdC70LXQvNC10L3RgiBjYW52YXMg0L3QtSDRg9C60LDQt9Cw0L0sINGC0L4g0LzQvtC20L3QviDQvdCw0L/RgNGP0LzRg9GOINC/0LXRgNC10LTQsNGC0YwgV2ViR0wg0LrQvtC90YLQtdC60YHRglxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRpb25zLnBpeGVsUmF0aW89MV0gUGl4ZWwgcmF0aW8g0Y3QutGA0LDQvdCwXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmFudGlhbGlhcz10cnVlXSDQmNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0LvQuCDQsNC90YLQuNCw0LvQuNCw0YHQuNC90LNcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuc3RlbmNpbD1mYWxzZV0g0JjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINC70Lggc3RlbmNpbCBidWZmZXJcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuYXV0b0NsZWFyPXRydWVdINCh0YLQuNGA0LDRgtGMINC70Lgg0L/RgNC+0YjQu9GL0Lkg0LrQsNC00YAg0L/QtdGA0LXQtCDQvdC+0LLRi9C5INGA0LXQvdC00LXRgNC40L3Qs9C+0LxcbiAqIEBwYXJhbSB7QXJyYXl9IFtvcHRpb25zLmNsZWFyQ29sb3I9dHJ1ZV0g0KbQstC10YIg0LfQsNC70LjQstC60Lgg0LIg0YTQvtGA0LzQsNGC0LUgUkdCQVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zLnNvcnRPYmplY3RzPXRydWVdINCd0YPQttC90L4g0LvQuCDRgdC+0YDRgtC40YDQvtCy0LDRgtGMINC/0YDQvtC30YDQsNGH0L3Ri9C1INC+0LHRitC10LrRgtGLINC/0L4g0YPQtNCw0LvQtdC90L3QvtGB0YLQuFxuICog0LjQu9C4INC/0L4gcmVuZGVyT3JkZXJcbiAqICovXG5jbGFzcyBSZW5kZXJlciB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgICBpZiAob3B0aW9ucy5jYW52YXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbnZhc0VsZW1lbnQgPSB0eXBlb2Ygb3B0aW9ucy5jYW52YXMgPT09ICdzdHJpbmcnID9cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvcHRpb25zLmNhbnZhcykgOiBvcHRpb25zLmNhbnZhcztcblxuICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHtcbiAgICAgICAgICAgICAgICBhbnRpYWxpYXM6IG9wdGlvbnMuYW50aWFsaWFzICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLmFudGlhbGlhcyA6IHRydWUsXG4gICAgICAgICAgICAgICAgc3RlbmNpbDogb3B0aW9ucy5zdGVuY2lsICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLnN0ZW5jaWwgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0OiBvcHRpb25zLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQgIT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCA6IGZhbHNlXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLl9nbCA9IHRoaXMuX2NhbnZhc0VsZW1lbnQuZ2V0Q29udGV4dCgnd2ViZ2wnLCBhdHRyaWJ1dGVzKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuX2NhbnZhc0VsZW1lbnQuZ2V0Q29udGV4dCgnZXhwZXJpbWVudGFsLXdlYmdsJywgYXR0cmlidXRlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9nbCA9IG9wdGlvbnMuZ2w7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9waXhlbFJhdGlvID0gb3B0aW9ucy5waXhlbFJhdGlvIHx8IDE7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCe0L/RgNC10LTQtdC70Y/QtdGCINGB0YLQuNGA0LDRgtGMINC70Lgg0L/RgNC+0YjQu9GL0Lkg0LrQsNC00YAg0L/QtdGA0LXQtCDQvdC+0LLRi9C8INGA0LXQvdC00LXRgNC40L3Qs9C+0LxcbiAgICAgICAgICogQHR5cGUge0Jvb2xlYW59XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmF1dG9DbGVhciA9IG9wdGlvbnMuYXV0b0NsZWFyICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLmF1dG9DbGVhciA6IHRydWU7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCm0LLQtdGCINC30LDQu9C40LLQutC4INCyINGE0L7RgNC80LDRgtC1IFJHQkFcbiAgICAgICAgICogQHR5cGUge0FycmF5fVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5jbGVhckNvbG9yID0gb3B0aW9ucy5jbGVhckNvbG9yIHx8IFsxLCAxLCAxLCAxXTtcbiAgICAgICAgdGhpcy5zb3J0T2JqZWN0cyA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5fcGx1Z2lucyA9IFtdO1xuICAgICAgICB0aGlzLl9wbHVnaW5zQnlUeXBlID0ge307XG4gICAgICAgIHRoaXMuX21heFBsdWdpbk9yZGVyID0gMDtcblxuICAgICAgICB0aGlzLmFkZFBsdWdpbihuZXcgT2JqZWN0M0RQbHVnaW4oKSwgMCk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCh0L/QuNGB0L7QuiDQstC60LvRjtGH0LXQvdC90YvRhSBXZWJHTCDRgNCw0YHRiNC40YDQtdC90LjQuVxuICAgICAgICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy53ZWJHbEV4dGVuc2lvbnMgPSB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQlNC+0LHQsNCy0LvRj9C10YIge0BsaW5rIFJlbmRlcmVyUGx1Z2lufSDQuiDRgNC10L3QtNC10YDRgy4g0Jog0YDQtdC90LTQtdGA0YMg0LzQvtC20LXRgiDQsdGL0YLRjCDQtNC+0LHQsNCy0LvQtdC9INGC0L7Qu9GM0LrQviDQvtC00LjQvSDQv9C70LDQs9C40L0g0LrQsNC20LTQvtCz0L4g0YLQuNC/0LAuXG4gICAgICogQHBhcmFtIHtQbHVnaW59IHBsdWdpbiDQn9C70LDQs9C40L1cbiAgICAgKiBAcGFyYW0gez9OdW1iZXJ9IG9yZGVyINCa0LDQttC00YvQuSDQv9C70LDQs9C40L0g0LLRi9C/0L7Qu9C90Y/QtdGC0YHRjyDQv9GA0Lgg0YDQtdC90LTQtdGA0LjQvdCz0LUg0L/QviDQstC+0LfRgNCw0YHRgtCw0L3QuNGOIG9yZGVyLFxuICAgICAqINC10YHQu9C4INC10LPQviDQvdC10YIsINGC0L4g0LLRi9Cx0LjRgNCw0LXRgtGB0Y8g0LzQsNC60YHQuNC80LDQu9GM0L3Ri9C5IG9yZGVyICsgMS5cbiAgICAgKi9cbiAgICBhZGRQbHVnaW4ocGx1Z2luLCBvcmRlcikge1xuICAgICAgICBpZiAob3JkZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb3JkZXIgPSB0aGlzLl9tYXhQbHVnaW5PcmRlciArIDE7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9wbHVnaW5zLnB1c2goe1xuICAgICAgICAgICAgcGx1Z2luLFxuICAgICAgICAgICAgb3JkZXJcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3BsdWdpbnMuc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpO1xuICAgICAgICB0aGlzLl9wbHVnaW5zQnlUeXBlW3BsdWdpbi50eXBlXSA9IHBsdWdpbjtcblxuICAgICAgICB0aGlzLl9tYXhQbHVnaW5PcmRlciA9IE1hdGgubWF4LmFwcGx5KE1hdGgsIHRoaXMuX3BsdWdpbnMubWFwKHAgPT4gcC5vcmRlcikpO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCIHtAbGluayBSZW5kZXJlclBsdWdpbn0g0LjQtyDRgNC10L3QtNC10YDQsC5cbiAgICAgKiBAcGFyYW0ge1BsdWdpbn0gUGx1Z2luINCa0LvQsNGB0YEg0L/Qu9Cw0LPQuNC90LBcbiAgICAgKi9cbiAgICByZW1vdmVQbHVnaW4oUGx1Z2luKSB7XG4gICAgICAgIHRoaXMuX3BsdWdpbnMuc29tZSgoZWwsIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChlbC5wbHVnaW4gaW5zdGFuY2VvZiBQbHVnaW4pIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fcGx1Z2luc0J5VHlwZVt0aGlzLl9wbHVnaW5zW2ldLnBsdWdpbi50eXBlXTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wbHVnaW5zLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0L/QsNGA0LDQvNC10YLRgCBwaXhlbCByYXRpb1xuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB2YWx1ZVxuICAgICAqL1xuICAgIHNldFBpeGVsUmF0aW8odmFsdWUpIHtcbiAgICAgICAgdGhpcy5fcGl4ZWxSYXRpbyA9IHZhbHVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGC0LXQutGD0YnQuNC5IHBpeGVsIHJhdGlvXG4gICAgICogQHJldHVybnMge051bWJlcn1cbiAgICAgKi9cbiAgICBnZXRQaXhlbFJhdGlvKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGl4ZWxSYXRpbztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDRgNCw0LfQvNC10YDRiyDRjdC70LXQvNC10L3RgtGDIGNhbnZhcyDQuCB2aWV3cG9ydCDQtNC70Y8gV2ViR0xcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gd2lkdGgg0KjQuNGA0LjQvdCwINCyINC/0LjQutGB0LXQu9GP0YVcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gaGVpZ2h0INCS0YvRgdC+0YLQsCDQsiDQv9C40LrRgdC10LvRj9GFXG4gICAgICovXG4gICAgc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuX3NpemUgPSBbXG4gICAgICAgICAgICB3aWR0aCAqIHRoaXMuX3BpeGVsUmF0aW8sXG4gICAgICAgICAgICBoZWlnaHQgKiB0aGlzLl9waXhlbFJhdGlvXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKHRoaXMuX2NhbnZhc0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbnZhc0VsZW1lbnQud2lkdGggPSB0aGlzLl9zaXplWzBdO1xuICAgICAgICAgICAgdGhpcy5fY2FudmFzRWxlbWVudC5oZWlnaHQgPSB0aGlzLl9zaXplWzFdO1xuICAgICAgICAgICAgdGhpcy5fY2FudmFzRWxlbWVudC5zdHlsZS53aWR0aCA9IHdpZHRoICsgJ3B4JztcbiAgICAgICAgICAgIHRoaXMuX2NhbnZhc0VsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0Vmlld3BvcnQoKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiB2aWV3cG9ydCDQtNC70Y8gV2ViR0xcbiAgICAgKiDQldGB0LvQuCDRgNCw0LfQvNC10YDRiyDQvdC1INGD0LrQsNC30LDQvdGLLCDRgtC+INCy0YvRgdGC0LDQstC70Y/QtdGCINGA0LDQt9C80LXRgNGLINGD0LrQsNC30LDQvdC90YvQtSDQsiDRhNGD0L3QutGG0LjQuCB7QGxpbmsgUmVuZGVyZXIjc2V0U2l6ZX1cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gW3dpZHRoXSDQqNC40YDQuNC90LAg0LIg0L/QuNC60YHQtdC70Y/RhVxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBbaGVpZ2h0XSDQktGL0YHQvtGC0LAg0LIg0L/QuNC60YHQtdC70Y/RhVxuICAgICAqL1xuICAgIHNldFZpZXdwb3J0KHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgICAgaWYgKHdpZHRoICE9PSB1bmRlZmluZWQgJiYgaGVpZ2h0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2dsLnZpZXdwb3J0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZ2wudmlld3BvcnQoMCwgMCwgdGhpcy5fc2l6ZVswXSwgdGhpcy5fc2l6ZVsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgtC10LrRg9GJ0LjQuSB2aWV3cG9ydCBXZWJHTFxuICAgICAqIEByZXR1cm5zIHtBcnJheX1cbiAgICAgKi9cbiAgICBnZXRTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiBSZW5kZXJUYXJnZXRcbiAgICAgKiBAcGFyYW0gez9SZW5kZXJUYXJnZXR9IHJlbmRlclRhcmdldFxuICAgICAqL1xuICAgIHNldFJlbmRlclRhcmdldChyZW5kZXJUYXJnZXQpIHtcbiAgICAgICAgdGhpcy5fcmVuZGVyVGFyZ2V0ID0gcmVuZGVyVGFyZ2V0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodGH0LjRgtGL0LLQsNC10YIg0YPQutCw0LfQsNC90L3Rg9GOINC+0LHQu9Cw0YHRgtGMINC/0LjQutGB0LXQu9C10Lkg0LIg0LzQsNGB0YHQuNCyXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHgg0JrQvtC+0YDQtNC40L3QsNGC0Ysg0L3QsNGH0LDQu9CwINC+0LHQu9Cw0YHRgtC4XG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHkg0JrQvtC+0YDQtNC40L3QsNGC0Ysg0L3QsNGH0LDQu9CwINC+0LHQu9Cw0YHRgtC4XG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHdpZHRoINCo0LjRgNC40L3QsCDQvtCx0LvQsNGB0YLQuFxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBoZWlnaHQg0JLRi9GB0L7RgtCwINC+0LHQu9Cw0YHRgtC4XG4gICAgICogQHBhcmFtIHtUeXBlZEFycmF5fSBhcnJheSDQnNCw0YHRgdC40LIg0LTQu9GPINC30LDQv9C40YHQuCDQtNCw0L3QvdGL0YVcbiAgICAgKi9cbiAgICByZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGFycmF5KSB7XG4gICAgICAgIGNvbnN0IGdsID0gdGhpcy5fZ2w7XG5cbiAgICAgICAgaWYgKHRoaXMuX3JlbmRlclRhcmdldCkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyVGFyZ2V0LmJpbmQoZ2wpO1xuICAgICAgICAgICAgZ2wucmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBhcnJheSk7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJUYXJnZXQudW5iaW5kKGdsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdsLnJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYXJyYXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7Rh9C40YnQsNC10YIg0YLQtdC60YPRidC40Lkg0LrQsNC00YAg0Lgg0LfQsNC70LjQstCw0LXRgiDRhtCy0LXRgtC+0Lwg0YPQutCw0LfQsNC90L3Ri9C8INCyIGNsZWFyQ29sb3JcbiAgICAgKi9cbiAgICBjbGVhcigpIHtcbiAgICAgICAgY29uc3QgZ2wgPSB0aGlzLl9nbDtcblxuICAgICAgICBnbC5jbGVhckNvbG9yLmFwcGx5KGdsLCB0aGlzLmNsZWFyQ29sb3IpO1xuICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KDQuNGB0YPQtdGCINGB0YbQtdC90YNcbiAgICAgKiBAcGFyYW0ge1NjZW5lfSBzY2VuZSDQodGG0LXQvdCwXG4gICAgICogQHBhcmFtIHtDYW1lcmF9IGNhbWVyYSDQmtCw0LzQtdGA0LBcbiAgICAgKiBAcGFyYW0geyp9IHVzZXJEYXRhINCU0L7Qv9C+0LvQvdC40YLQtdC70YzQvdCw0Y8g0LjQvdGE0L7RgNC80LDRhtC40Y8sINC60L7RgtC+0YDQsNGPINCx0YPQtNC10YIg0L/QtdGA0LXQtNCw0L3QsCDQstGB0LXQvCDQv9C70LDQs9C40L3QsNC8INC4INC+0LHRitC10LrRgtCw0LxcbiAgICAgKi9cbiAgICByZW5kZXIoc2NlbmUsIGNhbWVyYSwgdXNlckRhdGEpIHtcbiAgICAgICAgY29uc3QgZ2wgPSB0aGlzLl9nbDtcblxuICAgICAgICBzY2VuZS50eXBpZnlGb3JSZW5kZXIodGhpcy5fcGx1Z2luc0J5VHlwZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3JlbmRlclRhcmdldCkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyVGFyZ2V0LmJpbmQoZ2wpO1xuICAgICAgICB9XG5cbiAgICAgICAgZ2wuY2xlYXJEZXB0aCgxKTtcbiAgICAgICAgZ2wuY2xlYXJTdGVuY2lsKDApO1xuXG4gICAgICAgIGlmICh0aGlzLmF1dG9DbGVhcikge1xuICAgICAgICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FtZXJhLnVwZGF0ZUxvY2FsTWF0cml4KCk7XG4gICAgICAgIGNhbWVyYS51cGRhdGVXb3JsZE1hdHJpeCgpO1xuXG4gICAgICAgIGNvbnN0IHN0YXRlID0ge1xuICAgICAgICAgICAgcmVuZGVyZXI6IHRoaXMsXG4gICAgICAgICAgICBleHRlbnNpb25zOiB0aGlzLndlYkdsRXh0ZW5zaW9ucyxcbiAgICAgICAgICAgIHNjZW5lLFxuICAgICAgICAgICAgY2FtZXJhLFxuICAgICAgICAgICAgZ2wsXG4gICAgICAgICAgICB1c2VyRGF0YVxuICAgICAgICB9O1xuICAgICAgICAvLyBUT0RPOiBtYWtlIHN0YXRlIGltbXV0YWJsZT9cblxuICAgICAgICBjb25zdCBwbHVnaW5zVG9SZW5kZXIgPSB0aGlzLl9wbHVnaW5zXG4gICAgICAgICAgICAubWFwKGl0ZW0gPT4gaXRlbS5wbHVnaW4pXG4gICAgICAgICAgICAuZmlsdGVyKHBsdWdpbiA9PiBwbHVnaW4uaGFzT2JqZWN0cygpKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBsdWdpbnNUb1JlbmRlci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcGx1Z2luc1RvUmVuZGVyW2ldLnJlbmRlcihcbiAgICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgICBwbHVnaW5zVG9SZW5kZXJbaSAtIDFdLFxuICAgICAgICAgICAgICAgIHBsdWdpbnNUb1JlbmRlcltpICsgMV1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fcmVuZGVyVGFyZ2V0KSB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJUYXJnZXQudW5iaW5kKGdsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0LrQu9GO0YfQsNC10YIg0YDQsNGB0YjQuNGA0LXQvdC40LUgV2ViR0xcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lINCd0LDQt9Cy0LDQvdC40LUg0YDQsNGB0YjQuNGA0LXQvdC40Y9cbiAgICAgKi9cbiAgICBhZGRFeHRlbnNpb24obmFtZSkge1xuICAgICAgICB0aGlzLndlYkdsRXh0ZW5zaW9uc1tuYW1lXSA9IHRoaXMuX2dsLmdldEV4dGVuc2lvbihuYW1lKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSZW5kZXJlcjtcblxuLyoqXG4gKiDQodC+0YHRgtC+0Y/QvdC40LUg0YDQtdC90LTQtdGA0LAuINCf0LXRgNC10LTQsNC10YLRgdGPINC+0LHRitC10LrRgtCw0Lwg0LTQu9GPINC+0YLRgNC40YHQvtCy0LrQuC5cbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGF0ZVxuICogQHByb3BlcnR5IHtXZWJHTFJlbmRlcmluZ0NvbnRleHR9IGdsXG4gKiBAcHJvcGVydHkge1NjZW5lfSBzY2VuZVxuICogQHByb3BlcnR5IHtDYW1lcmF9IGNhbWVyYVxuICogQHByb3BlcnR5IHtSZW5kZXJlcn0gcmVuZGVyZXJcbiAqL1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9SZW5kZXJlci5qcyJdLCJuYW1lcyI6WyJPYmplY3QzRFBsdWdpbiIsIlJlbmRlcmVyIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiY2FudmFzIiwiX2NhbnZhc0VsZW1lbnQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiYXR0cmlidXRlcyIsImFudGlhbGlhcyIsInVuZGVmaW5lZCIsInN0ZW5jaWwiLCJmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0IiwiX2dsIiwidmVyc2lvbiIsImdldENvbnRleHQiLCJnbCIsIl9waXhlbFJhdGlvIiwicGl4ZWxSYXRpbyIsImF1dG9DbGVhciIsImNsZWFyQ29sb3IiLCJzb3J0T2JqZWN0cyIsIl9wbHVnaW5zIiwiX3BsdWdpbnNCeVR5cGUiLCJfbWF4UGx1Z2luT3JkZXIiLCJhZGRQbHVnaW4iLCJ3ZWJHbEV4dGVuc2lvbnMiLCJwbHVnaW4iLCJvcmRlciIsInB1c2giLCJzb3J0IiwiYSIsImIiLCJ0eXBlIiwiTWF0aCIsIm1heCIsImFwcGx5IiwibWFwIiwicCIsInJlbW92ZVBsdWdpbiIsIlBsdWdpbiIsInNvbWUiLCJlbCIsImkiLCJzcGxpY2UiLCJzZXRQaXhlbFJhdGlvIiwidmFsdWUiLCJnZXRQaXhlbFJhdGlvIiwic2V0U2l6ZSIsIndpZHRoIiwiaGVpZ2h0IiwiX3NpemUiLCJzdHlsZSIsInNldFZpZXdwb3J0Iiwidmlld3BvcnQiLCJnZXRTaXplIiwic2V0UmVuZGVyVGFyZ2V0IiwicmVuZGVyVGFyZ2V0IiwiX3JlbmRlclRhcmdldCIsInJlYWRQaXhlbHMiLCJ4IiwieSIsImFycmF5IiwiYmluZCIsIlJHQkEiLCJVTlNJR05FRF9CWVRFIiwidW5iaW5kIiwiY2xlYXIiLCJDT0xPUl9CVUZGRVJfQklUIiwiREVQVEhfQlVGRkVSX0JJVCIsInJlbmRlciIsInNjZW5lIiwiY2FtZXJhIiwidXNlckRhdGEiLCJ0eXBpZnlGb3JSZW5kZXIiLCJjbGVhckRlcHRoIiwiY2xlYXJTdGVuY2lsIiwidXBkYXRlTG9jYWxNYXRyaXgiLCJ1cGRhdGVXb3JsZE1hdHJpeCIsInN0YXRlIiwicmVuZGVyZXIiLCJleHRlbnNpb25zIiwicGx1Z2luc1RvUmVuZGVyIiwiaXRlbSIsImZpbHRlciIsImhhc09iamVjdHMiLCJsZW5ndGgiLCJhZGRFeHRlbnNpb24iLCJuYW1lIiwiZ2V0RXh0ZW5zaW9uIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxjQUFQLE1BQTJCLGtDQUEzQjs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsTUFBTUMsUUFBTixDQUFlO0FBQ1hDLGdCQUFZQyxPQUFaLEVBQXFCO0FBQ2pCQSxrQkFBVUEsV0FBVyxFQUFyQjs7QUFFQSxZQUFJQSxRQUFRQyxNQUFaLEVBQW9CO0FBQ2hCLGlCQUFLQyxjQUFMLEdBQXNCLE9BQU9GLFFBQVFDLE1BQWYsS0FBMEIsUUFBMUIsR0FDbEJFLFNBQVNDLGNBQVQsQ0FBd0JKLFFBQVFDLE1BQWhDLENBRGtCLEdBQ3dCRCxRQUFRQyxNQUR0RDs7QUFHQSxrQkFBTUksYUFBYTtBQUNmQywyQkFBV04sUUFBUU0sU0FBUixLQUFzQkMsU0FBdEIsR0FBa0NQLFFBQVFNLFNBQTFDLEdBQXNELElBRGxEO0FBRWZFLHlCQUFTUixRQUFRUSxPQUFSLEtBQW9CRCxTQUFwQixHQUFnQ1AsUUFBUVEsT0FBeEMsR0FBa0QsS0FGNUM7QUFHZkMsOENBQThCVCxRQUFRUyw0QkFBUixLQUF5Q0YsU0FBekMsR0FDMUJQLFFBQVFTLDRCQURrQixHQUNhO0FBSjVCLGFBQW5COztBQU9BLGlCQUFLQyxHQUFMLEdBQVdWLFFBQVFXLE9BQVIsS0FBb0IsQ0FBcEIsR0FDUCxLQUFLVCxjQUFMLENBQW9CVSxVQUFwQixDQUErQixRQUEvQixFQUF5Q1AsVUFBekMsQ0FETyxHQUVOLEtBQUtILGNBQUwsQ0FBb0JVLFVBQXBCLENBQStCLE9BQS9CLEVBQXdDUCxVQUF4QyxLQUNHLEtBQUtILGNBQUwsQ0FBb0JVLFVBQXBCLENBQStCLG9CQUEvQixFQUFxRFAsVUFBckQsQ0FIUjtBQUlILFNB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REUsRUFFbkJ5RCxNQUZtQixDQUVaekQsVUFBVUEsT0FBTzBELFVBQVAsRUFGRSxDQUF4Qjs7QUFJQSxhQUFLLElBQUkxQyxJQUFJLENBQWIsRUFBZ0JBLElBQUl1QyxnQkFBZ0JJLE1BQXBDLEVBQTRDM0MsR0FBNUMsRUFBaUQ7QUFDN0N1Qyw0QkFBZ0J2QyxDQUFoQixFQUFtQjJCLE1BQW5CLENBQ0lTLEtBREosRUFFSUcsZ0JBQWdCdkMsSUFBSSxDQUFwQixDQUZKLEVBR0l1QyxnQkFBZ0J2QyxJQUFJLENBQXBCLENBSEo7QUFLSDs7QUFFRCxZQUFJLEtBQUtlLGFBQVQsRUFBd0I7QUFDcEIsaUJBQUtBLGFBQUwsQ0FBbUJRLE1BQW5CLENBQTBCbEQsRUFBMUI7QUFDSDs7QUFFRCxlQUFPLElBQVA7QUFDSDs7QUFFRDs7Ozs7QUFLQXVFLGlCQUFhQyxJQUFiLEVBQW1CO0FBQ2YsYUFBSzlELGVBQUwsQ0FBcUI4RCxJQUFyQixJQUE2QixLQUFLM0UsR0FBTCxDQUFTNEUsWUFBVCxDQUFzQkQsSUFBdEIsQ0FBN0I7QUFDQSxlQUFPLElBQVA7QUFDSDtBQXJRVTs7QUF3UWYsZUFBZXZGLFFBQWY7O0FBRUEiLCJmaWxlIjoiUmVuZGVyZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT2JqZWN0M0RQbHVnaW4gZnJvbSAnLi9yZW5kZXJlclBsdWdpbnMvT2JqZWN0M0RQbHVnaW4nO1xuXG4vKipcbiAqINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8g0LjQvdC40YbQuNCw0LvQuNC30LDRhtC40Y8gV2ViR0wg0LrQvtC90YLQtdC60YHRgtCwINC4INC+0YLRgNC40YHQvtCy0LrQuCDQvtCx0YrQtdC60YLQvtCyLlxuICog0JTQu9GPINC90LXQutC+0YLQvtGA0YvRhSDQvtCx0YrQtdC60YLQvtCyINC80L7QttC10YIg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINGB0L/QtdGG0LjRhNC40YfQvdGL0LUg0YDQtdC90LTQtdGA0YsuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IFtvcHRpb25zLmNhbnZhc10g0K3Qu9C10LzQtdC90YIgY2FudmFzXG4gKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dH0gW29wdGlvbnMuZ2xdINCV0YHQu9C4INGN0LvQtdC80LXQvdGCIGNhbnZhcyDQvdC1INGD0LrQsNC30LDQvSwg0YLQviDQvNC+0LbQvdC+INC90LDQv9GA0Y/QvNGD0Y4g0L/QtdGA0LXQtNCw0YLRjCBXZWJHTCDQutC+0L3RgtC10LrRgdGCXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdGlvbnMucGl4ZWxSYXRpbz0xXSBQaXhlbCByYXRpbyDRjdC60YDQsNC90LBcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuYW50aWFsaWFzPXRydWVdINCY0YHQv9C+0LvRjNC30L7QstCw0YLRjCDQu9C4INCw0L3RgtC40LDQu9C40LDRgdC40L3Qs1xuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5zdGVuY2lsPWZhbHNlXSDQmNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0LvQuCBzdGVuY2lsIGJ1ZmZlclxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5hdXRvQ2xlYXI9dHJ1ZV0g0KHRgtC40YDQsNGC0Ywg0LvQuCDQv9GA0L7RiNC70YvQuSDQutCw0LTRgCDQv9C10YDQtdC0INC90L7QstGL0Lkg0YDQtdC90LTQtdGA0LjQvdCz0L7QvFxuICogQHBhcmFtIHtOdW1iZXJbXX0gW29wdGlvbnMuY2xlYXJDb2xvcj1bMSwxLDEsMV1dINCm0LLQtdGCINC30LDQu9C40LLQutC4INCyINGE0L7RgNC80LDRgtC1IFJHQkFcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuc29ydE9iamVjdHM9dHJ1ZV0g0J3Rg9C20L3QviDQu9C4INGB0L7RgNGC0LjRgNC+0LLQsNGC0Ywg0L/RgNC+0LfRgNCw0YfQvdGL0LUg0L7QsdGK0LXQutGC0Ysg0L/QviDRg9C00LDQu9C10L3QvdC+0YHRgtC4XG4gKiDQuNC70Lgg0L/QviByZW5kZXJPcmRlclxuICogKi9cbmNsYXNzIFJlbmRlcmVyIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgICAgIGlmIChvcHRpb25zLmNhbnZhcykge1xuICAgICAgICAgICAgdGhpcy5fY2FudmFzRWxlbWVudCA9IHR5cGVvZiBvcHRpb25zLmNhbnZhcyA9PT0gJ3N0cmluZycgP1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG9wdGlvbnMuY2FudmFzKSA6IG9wdGlvbnMuY2FudmFzO1xuXG4gICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0ge1xuICAgICAgICAgICAgICAgIGFudGlhbGlhczogb3B0aW9ucy5hbnRpYWxpYXMgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuYW50aWFsaWFzIDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzdGVuY2lsOiBvcHRpb25zLnN0ZW5jaWwgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuc3RlbmNpbCA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ6IG9wdGlvbnMuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCAhPT0gdW5kZWZpbmVkID9cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0IDogZmFsc2VcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuX2dsID0gb3B0aW9ucy52ZXJzaW9uID09PSAyID9cbiAgICAgICAgICAgICAgICB0aGlzLl9jYW52YXNFbGVtZW50LmdldENvbnRleHQoJ3dlYmdsMicsIGF0dHJpYnV0ZXMpIDpcbiAgICAgICAgICAgICAgICAodGhpcy5fY2FudmFzRWxlbWVudC5nZXRDb250ZXh0KCd3ZWJnbCcsIGF0dHJpYnV0ZXMpIHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhbnZhc0VsZW1lbnQuZ2V0Q29udGV4dCgnZXhwZXJpbWVudGFsLXdlYmdsJywgYXR0cmlidXRlcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZ2wgPSBvcHRpb25zLmdsO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcGl4ZWxSYXRpbyA9IG9wdGlvbnMucGl4ZWxSYXRpbyB8fCAxO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQntC/0YDQtdC00LXQu9GP0LXRgiDRgdGC0LjRgNCw0YLRjCDQu9C4INC/0YDQvtGI0LvRi9C5INC60LDQtNGAINC/0LXRgNC10LQg0L3QvtCy0YvQvCDRgNC10L3QtNC10YDQuNC90LPQvtC8XG4gICAgICAgICAqIEB0eXBlIHtCb29sZWFufVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5hdXRvQ2xlYXIgPSBvcHRpb25zLmF1dG9DbGVhciAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5hdXRvQ2xlYXIgOiB0cnVlO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQptCy0LXRgiDQt9Cw0LvQuNCy0LrQuCDQsiDRhNC+0YDQvNCw0YLQtSBSR0JBXG4gICAgICAgICAqIEB0eXBlIHtBcnJheX1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuY2xlYXJDb2xvciA9IG9wdGlvbnMuY2xlYXJDb2xvciB8fCBbMSwgMSwgMSwgMV07XG4gICAgICAgIHRoaXMuc29ydE9iamVjdHMgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuX3BsdWdpbnMgPSBbXTtcbiAgICAgICAgdGhpcy5fcGx1Z2luc0J5VHlwZSA9IHt9O1xuICAgICAgICB0aGlzLl9tYXhQbHVnaW5PcmRlciA9IDA7XG5cbiAgICAgICAgdGhpcy5hZGRQbHVnaW4obmV3IE9iamVjdDNEUGx1Z2luKCksIDApO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQodC/0LjRgdC+0Log0LLQutC70Y7Rh9C10L3QvdGL0YUgV2ViR0wg0YDQsNGB0YjQuNGA0LXQvdC40LlcbiAgICAgICAgICogQHR5cGUge09iamVjdH1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMud2ViR2xFeHRlbnNpb25zID0ge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JTQvtCx0LDQstC70Y/QtdGCIHtAbGluayBSZW5kZXJlclBsdWdpbn0g0Log0YDQtdC90LTQtdGA0YMuINCaINGA0LXQvdC00LXRgNGDINC80L7QttC10YIg0LHRi9GC0Ywg0LTQvtCx0LDQstC70LXQvSDRgtC+0LvRjNC60L4g0L7QtNC40L0g0L/Qu9Cw0LPQuNC9INC60LDQttC00L7Qs9C+INGC0LjQv9CwLlxuICAgICAqIEBwYXJhbSB7UGx1Z2lufSBwbHVnaW4g0J/Qu9Cw0LPQuNC9XG4gICAgICogQHBhcmFtIHs/TnVtYmVyfSBvcmRlciDQmtCw0LbQtNGL0Lkg0L/Qu9Cw0LPQuNC9INCy0YvQv9C+0LvQvdGP0LXRgtGB0Y8g0L/RgNC4INGA0LXQvdC00LXRgNC40L3Qs9C1INC/0L4g0LLQvtC30YDQsNGB0YLQsNC90LjRjiBvcmRlcixcbiAgICAgKiDQtdGB0LvQuCDQtdCz0L4g0L3QtdGCLCDRgtC+INCy0YvQsdC40YDQsNC10YLRgdGPINC80LDQutGB0LjQvNCw0LvRjNC90YvQuSBvcmRlciArIDEuXG4gICAgICovXG4gICAgYWRkUGx1Z2luKHBsdWdpbiwgb3JkZXIpIHtcbiAgICAgICAgaWYgKG9yZGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9yZGVyID0gdGhpcy5fbWF4UGx1Z2luT3JkZXIgKyAxO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcGx1Z2lucy5wdXNoKHtcbiAgICAgICAgICAgIHBsdWdpbixcbiAgICAgICAgICAgIG9yZGVyXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9wbHVnaW5zLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKTtcbiAgICAgICAgdGhpcy5fcGx1Z2luc0J5VHlwZVtwbHVnaW4udHlwZV0gPSBwbHVnaW47XG5cbiAgICAgICAgdGhpcy5fbWF4UGx1Z2luT3JkZXIgPSBNYXRoLm1heC5hcHBseShNYXRoLCB0aGlzLl9wbHVnaW5zLm1hcChwID0+IHAub3JkZXIpKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GP0LXRgiB7QGxpbmsgUmVuZGVyZXJQbHVnaW59INC40Lcg0YDQtdC90LTQtdGA0LAuXG4gICAgICogQHBhcmFtIHtQbHVnaW59IFBsdWdpbiDQmtC70LDRgdGBINC/0LvQsNCz0LjQvdCwXG4gICAgICovXG4gICAgcmVtb3ZlUGx1Z2luKFBsdWdpbikge1xuICAgICAgICB0aGlzLl9wbHVnaW5zLnNvbWUoKGVsLCBpKSA9PiB7XG4gICAgICAgICAgICBpZiAoZWwucGx1Z2luIGluc3RhbmNlb2YgUGx1Z2luKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3BsdWdpbnNCeVR5cGVbdGhpcy5fcGx1Z2luc1tpXS5wbHVnaW4udHlwZV07XG4gICAgICAgICAgICAgICAgdGhpcy5fcGx1Z2lucy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINC/0LDRgNCw0LzQtdGC0YAgcGl4ZWwgcmF0aW9cbiAgICAgKiBAcGFyYW0ge051bWJlcn0gdmFsdWVcbiAgICAgKi9cbiAgICBzZXRQaXhlbFJhdGlvKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3BpeGVsUmF0aW8gPSB2YWx1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgtC10LrRg9GJ0LjQuSBwaXhlbCByYXRpb1xuICAgICAqIEByZXR1cm5zIHtOdW1iZXJ9XG4gICAgICovXG4gICAgZ2V0UGl4ZWxSYXRpbygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BpeGVsUmF0aW87XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0YDQsNC30LzQtdGA0Ysg0Y3Qu9C10LzQtdC90YLRgyBjYW52YXMg0Lggdmlld3BvcnQg0LTQu9GPIFdlYkdMXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHdpZHRoINCo0LjRgNC40L3QsCDQsiDQv9C40LrRgdC10LvRj9GFXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGhlaWdodCDQktGL0YHQvtGC0LAg0LIg0L/QuNC60YHQtdC70Y/RhVxuICAgICAqL1xuICAgIHNldFNpemUod2lkdGgsIGhlaWdodCkge1xuICAgICAgICB0aGlzLl9zaXplID0gW1xuICAgICAgICAgICAgd2lkdGggKiB0aGlzLl9waXhlbFJhdGlvLFxuICAgICAgICAgICAgaGVpZ2h0ICogdGhpcy5fcGl4ZWxSYXRpb1xuICAgICAgICBdO1xuXG4gICAgICAgIGlmICh0aGlzLl9jYW52YXNFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9jYW52YXNFbGVtZW50LndpZHRoID0gdGhpcy5fc2l6ZVswXTtcbiAgICAgICAgICAgIHRoaXMuX2NhbnZhc0VsZW1lbnQuaGVpZ2h0ID0gdGhpcy5fc2l6ZVsxXTtcbiAgICAgICAgICAgIHRoaXMuX2NhbnZhc0VsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7XG4gICAgICAgICAgICB0aGlzLl9jYW52YXNFbGVtZW50LnN0eWxlLmhlaWdodCA9IGhlaWdodCArICdweCc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFZpZXdwb3J0KCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIgdmlld3BvcnQg0LTQu9GPIFdlYkdMXG4gICAgICog0JXRgdC70Lgg0YDQsNC30LzQtdGA0Ysg0L3QtSDRg9C60LDQt9Cw0L3Riywg0YLQviDQstGL0YHRgtCw0LLQu9GP0LXRgiDRgNCw0LfQvNC10YDRiyDRg9C60LDQt9Cw0L3QvdGL0LUg0LIg0YTRg9C90LrRhtC40Lgge0BsaW5rIFJlbmRlcmVyI3NldFNpemV9XG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IFt3aWR0aF0g0KjQuNGA0LjQvdCwINCyINC/0LjQutGB0LXQu9GP0YVcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gW2hlaWdodF0g0JLRi9GB0L7RgtCwINCyINC/0LjQutGB0LXQu9GP0YVcbiAgICAgKi9cbiAgICBzZXRWaWV3cG9ydCh3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICAgIGlmICh3aWR0aCAhPT0gdW5kZWZpbmVkICYmIGhlaWdodCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLl9nbC52aWV3cG9ydCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2dsLnZpZXdwb3J0KDAsIDAsIHRoaXMuX3NpemVbMF0sIHRoaXMuX3NpemVbMV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YLQtdC60YPRidC40Lkgdmlld3BvcnQgV2ViR0xcbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9XG4gICAgICovXG4gICAgZ2V0U2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIgUmVuZGVyVGFyZ2V0XG4gICAgICogQHBhcmFtIHs/UmVuZGVyVGFyZ2V0fSByZW5kZXJUYXJnZXRcbiAgICAgKi9cbiAgICBzZXRSZW5kZXJUYXJnZXQocmVuZGVyVGFyZ2V0KSB7XG4gICAgICAgIHRoaXMuX3JlbmRlclRhcmdldCA9IHJlbmRlclRhcmdldDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHRh9C40YLRi9Cy0LDQtdGCINGD0LrQsNC30LDQvdC90YPRjiDQvtCx0LvQsNGB0YLRjCDQv9C40LrRgdC10LvQtdC5INCyINC80LDRgdGB0LjQslxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB4INCa0L7QvtGA0LTQuNC90LDRgtGLINC90LDRh9Cw0LvQsCDQvtCx0LvQsNGB0YLQuFxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB5INCa0L7QvtGA0LTQuNC90LDRgtGLINC90LDRh9Cw0LvQsCDQvtCx0LvQsNGB0YLQuFxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB3aWR0aCDQqNC40YDQuNC90LAg0L7QsdC70LDRgdGC0LhcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gaGVpZ2h0INCS0YvRgdC+0YLQsCDQvtCx0LvQsNGB0YLQuFxuICAgICAqIEBwYXJhbSB7VHlwZWRBcnJheX0gYXJyYXkg0JzQsNGB0YHQuNCyINC00LvRjyDQt9Cw0L/QuNGB0Lgg0LTQsNC90L3Ri9GFXG4gICAgICovXG4gICAgcmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBhcnJheSkge1xuICAgICAgICBjb25zdCBnbCA9IHRoaXMuX2dsO1xuXG4gICAgICAgIGlmICh0aGlzLl9yZW5kZXJUYXJnZXQpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlclRhcmdldC5iaW5kKGdsKTtcbiAgICAgICAgICAgIGdsLnJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgYXJyYXkpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyVGFyZ2V0LnVuYmluZChnbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnbC5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIGFycmF5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0YfQuNGJ0LDQtdGCINGC0LXQutGD0YnQuNC5INC60LDQtNGAINC4INC30LDQu9C40LLQsNC10YIg0YbQstC10YLQvtC8INGD0LrQsNC30LDQvdC90YvQvCDQsiBjbGVhckNvbG9yXG4gICAgICovXG4gICAgY2xlYXIoKSB7XG4gICAgICAgIGNvbnN0IGdsID0gdGhpcy5fZ2w7XG5cbiAgICAgICAgZ2wuY2xlYXJDb2xvci5hcHBseShnbCwgdGhpcy5jbGVhckNvbG9yKTtcbiAgICAgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCg0LjRgdGD0LXRgiDRgdGG0LXQvdGDXG4gICAgICogQHBhcmFtIHtTY2VuZX0gc2NlbmUg0KHRhtC10L3QsFxuICAgICAqIEBwYXJhbSB7Q2FtZXJhfSBjYW1lcmEg0JrQsNC80LXRgNCwXG4gICAgICogQHBhcmFtIHsqfSB1c2VyRGF0YSDQlNC+0L/QvtC70L3QuNGC0LXQu9GM0L3QsNGPINC40L3RhNC+0YDQvNCw0YbQuNGPLCDQutC+0YLQvtGA0LDRjyDQsdGD0LTQtdGCINC/0LXRgNC10LTQsNC90LAg0LLRgdC10Lwg0L/Qu9Cw0LPQuNC90LDQvCDQuCDQvtCx0YrQtdC60YLQsNC8XG4gICAgICovXG4gICAgcmVuZGVyKHNjZW5lLCBjYW1lcmEsIHVzZXJEYXRhKSB7XG4gICAgICAgIGNvbnN0IGdsID0gdGhpcy5fZ2w7XG5cbiAgICAgICAgc2NlbmUudHlwaWZ5Rm9yUmVuZGVyKHRoaXMuX3BsdWdpbnNCeVR5cGUpO1xuXG4gICAgICAgIGlmICh0aGlzLl9yZW5kZXJUYXJnZXQpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlclRhcmdldC5iaW5kKGdsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGdsLmNsZWFyRGVwdGgoMSk7XG4gICAgICAgIGdsLmNsZWFyU3RlbmNpbCgwKTtcblxuICAgICAgICBpZiAodGhpcy5hdXRvQ2xlYXIpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhbWVyYS51cGRhdGVMb2NhbE1hdHJpeCgpO1xuICAgICAgICBjYW1lcmEudXBkYXRlV29ybGRNYXRyaXgoKTtcblxuICAgICAgICBjb25zdCBzdGF0ZSA9IHtcbiAgICAgICAgICAgIHJlbmRlcmVyOiB0aGlzLFxuICAgICAgICAgICAgZXh0ZW5zaW9uczogdGhpcy53ZWJHbEV4dGVuc2lvbnMsXG4gICAgICAgICAgICBzY2VuZSxcbiAgICAgICAgICAgIGNhbWVyYSxcbiAgICAgICAgICAgIGdsLFxuICAgICAgICAgICAgdXNlckRhdGFcbiAgICAgICAgfTtcbiAgICAgICAgLy8gVE9ETzogbWFrZSBzdGF0ZSBpbW11dGFibGU/XG5cbiAgICAgICAgY29uc3QgcGx1Z2luc1RvUmVuZGVyID0gdGhpcy5fcGx1Z2luc1xuICAgICAgICAgICAgLm1hcChpdGVtID0+IGl0ZW0ucGx1Z2luKVxuICAgICAgICAgICAgLmZpbHRlcihwbHVnaW4gPT4gcGx1Z2luLmhhc09iamVjdHMoKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwbHVnaW5zVG9SZW5kZXIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHBsdWdpbnNUb1JlbmRlcltpXS5yZW5kZXIoXG4gICAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgICAgcGx1Z2luc1RvUmVuZGVyW2kgLSAxXSxcbiAgICAgICAgICAgICAgICBwbHVnaW5zVG9SZW5kZXJbaSArIDFdXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3JlbmRlclRhcmdldCkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyVGFyZ2V0LnVuYmluZChnbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC60LvRjtGH0LDQtdGCINGA0LDRgdGI0LjRgNC10L3QuNC1IFdlYkdMXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSDQndCw0LfQstCw0L3QuNC1INGA0LDRgdGI0LjRgNC10L3QuNGPXG4gICAgICovXG4gICAgYWRkRXh0ZW5zaW9uKG5hbWUpIHtcbiAgICAgICAgdGhpcy53ZWJHbEV4dGVuc2lvbnNbbmFtZV0gPSB0aGlzLl9nbC5nZXRFeHRlbnNpb24obmFtZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVuZGVyZXI7XG5cbi8qKlxuICog0KHQvtGB0YLQvtGP0L3QuNC1INGA0LXQvdC00LXRgNCwLiDQn9C10YDQtdC00LDQtdGC0YHRjyDQvtCx0YrQtdC60YLQsNC8INC00LvRjyDQvtGC0YDQuNGB0L7QstC60LguXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RhdGVcbiAqIEBwcm9wZXJ0eSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0fSBnbFxuICogQHByb3BlcnR5IHtTY2VuZX0gc2NlbmVcbiAqIEBwcm9wZXJ0eSB7Q2FtZXJhfSBjYW1lcmFcbiAqIEBwcm9wZXJ0eSB7UmVuZGVyZXJ9IHJlbmRlcmVyXG4gKi9cbiJdfQ==

@@ -6,8 +6,20 @@ import Texture from './Texture';

*
* @param {Object} options
* @param {vec2} [options.size] Размер фреймбуфера
* @param {RenderTargetOptions & TextureOptions} options
*/
class RenderTarget {
constructor(options = {}) {
this._size = options.size;
/**
* Параметры для связывания фреймбуфера
* @type {RenderTargetOptions & TextureOptions}
* @readonly
*/
this.options = Object.assign({}, RenderTarget.defaultOptions, options);
/**
* Контекст WebGL, в котором был инициализирован фреймбуфер.
* Используется только для удаления, подумать хорошо, прежде чем использовать для чего-то ещё.
* @type {?WebGLRenderingContext}
* @ignore
*/
this._glContext = null;
}

@@ -20,7 +32,2 @@

bind(gl) {
if (this._sizeChanged) {
this._unprepare(gl);
this._sizeChanged = false;
}
if (!this._frameBuffer) {

@@ -46,6 +53,5 @@ this._prepare(gl);

* Удаляет фреймбуфер из видеокарты
* @param {WebGLRenderingContext} gl
*/
remove(gl) {
this._unprepare(gl);
remove() {
this._unprepare();
return this;

@@ -59,4 +65,4 @@ }

setSize(size) {
this._size = size;
this._sizeChanged = true;
this.options.size = size;
this._unprepare();
return this;

@@ -66,2 +72,10 @@ }

/**
* Возвращает текущую текстуру фреймбуфера
* @return {Texture | null}
*/
getTexture() {
return this._texture;
}
/**
* Инициализирует фреймбуфер, текстуры и рендербуфер

@@ -72,6 +86,4 @@ * @param {WebGLRenderingContext} gl

_prepare(gl) {
this._texture = new Texture();
this._texture.generateMipmaps = false;
this._texture.size = this._size;
this._glContext = gl;
this._texture = new Texture(null, this.options);
this._texture._prepare(gl);

@@ -84,5 +96,5 @@

gl.bindRenderbuffer(gl.RENDERBUFFER, this._renderBuffer);
gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, this._size[0], this._size[1]);
gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, this.options.size[0], this.options.size[1]);
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this._texture._texture, 0);
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this._texture.getTexture(), 0);
gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, this._renderBuffer);

@@ -98,7 +110,7 @@

* Удаляет данные из видеокарты
* @param {WebGLRenderingContext} gl
* @ignore
*/
_unprepare(gl) {
_unprepare() {
if (this._frameBuffer) {
const gl = this._glContext;
this._texture.remove(gl);

@@ -108,2 +120,4 @@ gl.deleteFramebuffer(this._frameBuffer);

this._frameBuffer = null;
this._renderBuffer = null;
this._texture = null;
}

@@ -136,3 +150,15 @@ }

RenderTarget.defaultOptions = Object.assign({}, Texture.defaultOptions, {
size: [0, 0],
generateMipmaps: false
});
export default RenderTarget;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9SZW5kZXJUYXJnZXQuanMiXSwibmFtZXMiOlsiVGV4dHVyZSIsIlJlbmRlclRhcmdldCIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsIl9zaXplIiwic2l6ZSIsImJpbmQiLCJnbCIsIl9zaXplQ2hhbmdlZCIsIl91bnByZXBhcmUiLCJfZnJhbWVCdWZmZXIiLCJfcHJlcGFyZSIsImJpbmRGcmFtZWJ1ZmZlciIsIkZSQU1FQlVGRkVSIiwidW5iaW5kIiwicmVtb3ZlIiwic2V0U2l6ZSIsIl90ZXh0dXJlIiwiZ2VuZXJhdGVNaXBtYXBzIiwiY3JlYXRlRnJhbWVidWZmZXIiLCJfcmVuZGVyQnVmZmVyIiwiY3JlYXRlUmVuZGVyYnVmZmVyIiwiYmluZFJlbmRlcmJ1ZmZlciIsIlJFTkRFUkJVRkZFUiIsInJlbmRlcmJ1ZmZlclN0b3JhZ2UiLCJERVBUSF9DT01QT05FTlQxNiIsImZyYW1lYnVmZmVyVGV4dHVyZTJEIiwiQ09MT1JfQVRUQUNITUVOVDAiLCJURVhUVVJFXzJEIiwiZnJhbWVidWZmZXJSZW5kZXJidWZmZXIiLCJERVBUSF9BVFRBQ0hNRU5UIiwiX2NoZWNrQ29tcGxldGUiLCJkZWxldGVGcmFtZWJ1ZmZlciIsImRlbGV0ZVJlbmRlcmJ1ZmZlciIsInN0YXR1cyIsImNoZWNrRnJhbWVidWZmZXJTdGF0dXMiLCJGUkFNRUJVRkZFUl9DT01QTEVURSIsIkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEIiwiY29uc29sZSIsImxvZyIsIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCIsIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUyIsIkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxPQUFQLE1BQW9CLFdBQXBCOztBQUVBOzs7Ozs7QUFNQSxNQUFNQyxZQUFOLENBQW1CO0FBQ2ZDLGdCQUFZQyxVQUFVLEVBQXRCLEVBQTBCO0FBQ3RCLGFBQUtDLEtB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QXdDO0FBQ3BDO0FBQ0gsU0FGRCxNQUVPLElBQUlGLFdBQVczQixHQUFHOEIsdUJBQWxCLEVBQTJDO0FBQzlDQyxvQkFBUUMsR0FBUixDQUFZLDRCQUFaO0FBQ0gsU0FGTSxNQUVBLElBQUlMLFdBQVczQixHQUFHaUMsaUNBQWxCLEVBQXFEO0FBQ3hERixvQkFBUUMsR0FBUixDQUFZLG1DQUFaO0FBQ0gsU0FGTSxNQUVBLElBQUlMLFdBQVczQixHQUFHa0MsaUNBQWxCLEVBQXFEO0FBQ3hESCxvQkFBUUMsR0FBUixDQUFZLG1DQUFaO0FBQ0gsU0FGTSxNQUVBLElBQUlMLFdBQVczQixHQUFHbUMseUNBQWxCLEVBQTZEO0FBQ2hFSixvQkFBUUMsR0FBUixDQUFZLDJDQUFaO0FBQ0gsU0FGTSxNQUVBO0FBQ0hELG9CQUFRQyxHQUFSLENBQVksb0NBQW9DTCxNQUFoRDtBQUNIO0FBQ0o7QUFuSGM7O0FBc0huQixlQUFlakMsWUFBZiIsImZpbGUiOiJSZW5kZXJUYXJnZXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVGV4dHVyZSBmcm9tICcuL1RleHR1cmUnO1xuXG4vKipcbiAqINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDRhNGA0LXQudC80LHRg9GE0LXRgNCwLCDQutGD0LTQsCDQvNC+0LbQvdC+INC+0YLRgNC10L3QtNC10YDQuNGC0Ywg0LrQsNC00YAuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEBwYXJhbSB7dmVjMn0gW29wdGlvbnMuc2l6ZV0g0KDQsNC30LzQtdGAINGE0YDQtdC50LzQsdGD0YTQtdGA0LBcbiAqL1xuY2xhc3MgUmVuZGVyVGFyZ2V0IHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5fc2l6ZSA9IG9wdGlvbnMuc2l6ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodCy0Y/Qt9GL0LLQsNC10YIg0LrQvtC80L/QvtC90LXQvdGC0Ysg0YEg0LrQvtC90YLQtdC60YHRgtC+0LwgV2ViR0xcbiAgICAgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dH0gZ2xcbiAgICAgKi9cbiAgICBiaW5kKGdsKSB7XG4gICAgICAgIGlmICh0aGlzLl9zaXplQ2hhbmdlZCkge1xuICAgICAgICAgICAgdGhpcy5fdW5wcmVwYXJlKGdsKTtcbiAgICAgICAgICAgIHRoaXMuX3NpemVDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX2ZyYW1lQnVmZmVyKSB7XG4gICAgICAgICAgICB0aGlzLl9wcmVwYXJlKGdsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgdGhpcy5fZnJhbWVCdWZmZXIpO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINC/0YPRgdGC0L7QuSDRhNGA0LXQudC80LHRg9GE0LXRgCDRgyDQutC+0L3RgtC10LrRgdGC0LAgV2ViR0xcbiAgICAgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dH0gZ2xcbiAgICAgKi9cbiAgICB1bmJpbmQoZ2wpIHtcbiAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIg0YTRgNC10LnQvNCx0YPRhNC10YAg0LjQtyDQstC40LTQtdC+0LrQsNGA0YLRi1xuICAgICAqIEBwYXJhbSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0fSBnbFxuICAgICAqL1xuICAgIHJlbW92ZShnbCkge1xuICAgICAgICB0aGlzLl91bnByZXBhcmUoZ2wpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDRgNCw0LfQvNC10YAg0YTRgNC10LnQvNCx0YPRhNC10YDRg1xuICAgICAqIEBwYXJhbSB7dmVjMn0gc2l6ZVxuICAgICAqL1xuICAgIHNldFNpemUoc2l6ZSkge1xuICAgICAgICB0aGlzLl9zaXplID0gc2l6ZTtcbiAgICAgICAgdGhpcy5fc2l6ZUNoYW5nZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGE0YDQtdC50LzQsdGD0YTQtdGALCDRgtC10LrRgdGC0YPRgNGLINC4INGA0LXQvdC00LXRgNCx0YPRhNC10YBcbiAgICAgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dH0gZ2xcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgX3ByZXBhcmUoZ2wpIHtcbiAgICAgICAgdGhpcy5fdGV4dHVyZSA9IG5ldyBUZXh0dXJlKCk7XG4gICAgICAgIHRoaXMuX3RleHR1cmUuZ2VuZXJhdGVNaXBtYXBzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3RleHR1cmUuc2l6ZSA9IHRoaXMuX3NpemU7XG5cbiAgICAgICAgdGhpcy5fdGV4dHVyZS5fcHJlcGFyZShnbCk7XG5cbiAgICAgICAgdGhpcy5fZnJhbWVCdWZmZXIgPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpO1xuICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIHRoaXMuX2ZyYW1lQnVmZmVyKTtcblxuICAgICAgICB0aGlzLl9yZW5kZXJCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTtcbiAgICAgICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHRoaXMuX3JlbmRlckJ1ZmZlcik7XG4gICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBUSF9DT01QT05FTlQxNiwgdGhpcy5fc2l6ZVswXSwgdGhpcy5fc2l6ZVsxXSk7XG5cbiAgICAgICAgZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0aGlzLl90ZXh0dXJlLl90ZXh0dXJlLCAwKTtcbiAgICAgICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZFUiwgdGhpcy5fcmVuZGVyQnVmZmVyKTtcblxuICAgICAgICB0aGlzLl9jaGVja0NvbXBsZXRlKGdsKTtcblxuICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgbnVsbCk7XG4gICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIg0LTQsNC90L3Ri9C1INC40Lcg0LLQuNC00LXQvtC60LDRgNGC0YtcbiAgICAgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dH0gZ2xcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgX3VucHJlcGFyZShnbCkge1xuICAgICAgICBpZiAodGhpcy5fZnJhbWVCdWZmZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX3RleHR1cmUucmVtb3ZlKGdsKTtcbiAgICAgICAgICAgIGdsLmRlbGV0ZUZyYW1lYnVmZmVyKHRoaXMuX2ZyYW1lQnVmZmVyKTtcbiAgICAgICAgICAgIGdsLmRlbGV0ZVJlbmRlcmJ1ZmZlcih0aGlzLl9yZW5kZXJCdWZmZXIpO1xuICAgICAgICAgICAgdGhpcy5fZnJhbWVCdWZmZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/RgNC+0LLQtdGA0Y/QtdGCINC40L3QuNGG0LjQsNC70LjQt9Cw0YbQuNGOINGE0YDQtdC50LzQsdGD0YTQtdGA0LBcbiAgICAgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dH0gZ2xcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgX2NoZWNrQ29tcGxldGUoZ2wpIHtcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUik7XG5cbiAgICAgICAgaWYgKHN0YXR1cyA9PT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09IGdsLkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRnJhbWVidWZmZXIgaXMgdW5zdXBwb3J0ZWQnKTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09IGdsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0ZyYW1lYnVmZmVyIGluY29tcGxldGUgYXR0YWNobWVudCcpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PT0gZ2wuRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRnJhbWVidWZmZXIgaW5jb21wbGV0ZSBkaW1lbnNpb25zJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSBnbC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0ZyYW1lYnVmZmVyIGluY29tcGxldGUgbWlzc2luZyBhdHRhY2htZW50Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnVW5leHBlY3RlZCBmcmFtZWJ1ZmZlciBzdGF0dXM6ICcgKyBzdGF0dXMpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSZW5kZXJUYXJnZXQ7XG4iXX0=
/**
* Параметры связывания текстуры
*
* @typedef {Object} RenderTargetOptions
* @property {Number[]} size
*/
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9SZW5kZXJUYXJnZXQuanMiXSwibmFtZXMiOlsiVGV4dHVyZSIsIlJlbmRlclRhcmdldCIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsIk9iamVjdCIsImFzc2lnbiIsImRlZmF1bHRPcHRpb25zIiwiX2dsQ29udGV4dCIsImJpbmQiLCJnbCIsIl9mcmFtZUJ1ZmZlciIsIl9wcmVwYXJlIiwiYmluZEZyYW1lYnVmZmVyIiwiRlJBTUVCVUZGRVIiLCJ1bmJpbmQiLCJyZW1vdmUiLCJfdW5wcmVwYXJlIiwic2V0U2l6ZSIsInNpemUiLCJnZXRUZXh0dXJlIiwiX3RleHR1cmUiLCJjcmVhdGVGcmFtZWJ1ZmZlciIsIl9yZW5kZXJCdWZmZXIiLCJjcmVhdGVSZW5kZXJidWZmZXIiLCJiaW5kUmVuZGVyYnVmZmVyIiwiUkVOREVSQlVGRkVSIiwicmVuZGVyYnVmZmVyU3RvcmFnZSIsIkRFUFRIX0NPTVBPTkVOVDE2IiwiZnJhbWVidWZmZXJUZXh0dXJlMkQiLCJDT0xPUl9BVFRBQ0hNRU5UMCIsIlRFWFRVUkVfMkQiLCJmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciIsIkRFUFRIX0FUVEFDSE1FTlQiLCJfY2hlY2tDb21wbGV0ZSIsImRlbGV0ZUZyYW1lYnVmZmVyIiwiZGVsZXRlUmVuZGVyYnVmZmVyIiwic3RhdHVzIiwiY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyIsIkZSQU1FQlVGRkVSX0NPTVBMRVRFIiwiRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQiLCJjb25zb2xlIiwibG9nIiwiRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UIiwiRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TIiwiRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQiLCJnZW5lcmF0ZU1pcG1hcHMiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLE9BQVAsTUFBb0IsV0FBcEI7O0FBRUE7Ozs7O0FBS0EsTUFBTUMsWUFBTixDQUFtQjtBQUNmQyxn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O0FBQ0g7QUFDSjs7QUFFRDs7Ozs7QUFLQWEsbUJBQWV4QixFQUFmLEVBQW1CO0FBQ2YsY0FBTTJCLFNBQVMzQixHQUFHNEIsc0JBQUgsQ0FBMEI1QixHQUFHSSxXQUE3QixDQUFmOztBQUVBLFlBQUl1QixXQUFXM0IsR0FBRzZCLG9CQUFsQixFQUF3QztBQUNwQztBQUNILFNBRkQsTUFFTyxJQUFJRixXQUFXM0IsR0FBRzhCLHVCQUFsQixFQUEyQztBQUM5Q0Msb0JBQVFDLEdBQVIsQ0FBWSw0QkFBWjtBQUNILFNBRk0sTUFFQSxJQUFJTCxXQUFXM0IsR0FBR2lDLGlDQUFsQixFQUFxRDtBQUN4REYsb0JBQVFDLEdBQVIsQ0FBWSxtQ0FBWjtBQUNILFNBRk0sTUFFQSxJQUFJTCxXQUFXM0IsR0FBR2tDLGlDQUFsQixFQUFxRDtBQUN4REgsb0JBQVFDLEdBQVIsQ0FBWSxtQ0FBWjtBQUNILFNBRk0sTUFFQSxJQUFJTCxXQUFXM0IsR0FBR21DLHlDQUFsQixFQUE2RDtBQUNoRUosb0JBQVFDLEdBQVIsQ0FBWSwyQ0FBWjtBQUNILFNBRk0sTUFFQTtBQUNIRCxvQkFBUUMsR0FBUixDQUFZLG9DQUFvQ0wsTUFBaEQ7QUFDSDtBQUNKO0FBbEljOztBQXFJbkJuQyxhQUFhSyxjQUFiLEdBQThCRixPQUFPQyxNQUFQLENBQWMsRUFBZCxFQUFrQkwsUUFBUU0sY0FBMUIsRUFBMEM7QUFDcEVZLFVBQU0sQ0FBQyxDQUFELEVBQUksQ0FBSixDQUQ4RDtBQUVwRTJCLHFCQUFpQjtBQUZtRCxDQUExQyxDQUE5Qjs7QUFLQSxlQUFlNUMsWUFBZjs7QUFFQSIsImZpbGUiOiJSZW5kZXJUYXJnZXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVGV4dHVyZSBmcm9tICcuL1RleHR1cmUnO1xuXG4vKipcbiAqINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDRhNGA0LXQudC80LHRg9GE0LXRgNCwLCDQutGD0LTQsCDQvNC+0LbQvdC+INC+0YLRgNC10L3QtNC10YDQuNGC0Ywg0LrQsNC00YAuXG4gKlxuICogQHBhcmFtIHtSZW5kZXJUYXJnZXRPcHRpb25zICYgVGV4dHVyZU9wdGlvbnN9IG9wdGlvbnNcbiAqL1xuY2xhc3MgUmVuZGVyVGFyZ2V0IHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqINCf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0YHQstGP0LfRi9Cy0LDQvdC40Y8g0YTRgNC10LnQvNCx0YPRhNC10YDQsFxuICAgICAgICAgKiBAdHlwZSB7UmVuZGVyVGFyZ2V0T3B0aW9ucyAmIFRleHR1cmVPcHRpb25zfVxuICAgICAgICAgKiBAcmVhZG9ubHlcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIFJlbmRlclRhcmdldC5kZWZhdWx0T3B0aW9ucywgb3B0aW9ucyk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCa0L7QvdGC0LXQutGB0YIgV2ViR0wsINCyINC60L7RgtC+0YDQvtC8INCx0YvQuyDQuNC90LjRhtC40LDQu9C40LfQuNGA0L7QstCw0L0g0YTRgNC10LnQvNCx0YPRhNC10YAuXG4gICAgICAgICAqINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDRgtC+0LvRjNC60L4g0LTQu9GPINGD0LTQsNC70LXQvdC40Y8sINC/0L7QtNGD0LzQsNGC0Ywg0YXQvtGA0L7RiNC+LCDQv9GA0LXQttC00LUg0YfQtdC8INC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDQtNC70Y8g0YfQtdCz0L4t0YLQviDQtdGJ0ZEuXG4gICAgICAgICAqIEB0eXBlIHs/V2ViR0xSZW5kZXJpbmdDb250ZXh0fVxuICAgICAgICAgKiBAaWdub3JlXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9nbENvbnRleHQgPSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0LLRj9C30YvQstCw0LXRgiDQutC+0LzQv9C+0L3QtdC90YLRiyDRgSDQutC+0L3RgtC10LrRgdGC0L7QvCBXZWJHTFxuICAgICAqIEBwYXJhbSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0fSBnbFxuICAgICAqL1xuICAgIGJpbmQoZ2wpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9mcmFtZUJ1ZmZlcikge1xuICAgICAgICAgICAgdGhpcy5fcHJlcGFyZShnbCk7XG4gICAgICAgIH1cblxuICAgICAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIHRoaXMuX2ZyYW1lQnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDQv9GD0YHRgtC+0Lkg0YTRgNC10LnQvNCx0YPRhNC10YAg0YMg0LrQvtC90YLQtdC60YHRgtCwIFdlYkdMXG4gICAgICogQHBhcmFtIHtXZWJHTFJlbmRlcmluZ0NvbnRleHR9IGdsXG4gICAgICovXG4gICAgdW5iaW5kKGdsKSB7XG4gICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgbnVsbCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCINGE0YDQtdC50LzQsdGD0YTQtdGAINC40Lcg0LLQuNC00LXQvtC60LDRgNGC0YtcbiAgICAgKi9cbiAgICByZW1vdmUoKSB7XG4gICAgICAgIHRoaXMuX3VucHJlcGFyZSgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDRgNCw0LfQvNC10YAg0YTRgNC10LnQvNCx0YPRhNC10YDRg1xuICAgICAqIEBwYXJhbSB7dmVjMn0gc2l6ZVxuICAgICAqL1xuICAgIHNldFNpemUoc2l6ZSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMuc2l6ZSA9IHNpemU7XG4gICAgICAgIHRoaXMuX3VucHJlcGFyZSgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgtC10LrRg9GJ0YPRjiDRgtC10LrRgdGC0YPRgNGDINGE0YDQtdC50LzQsdGD0YTQtdGA0LBcbiAgICAgKiBAcmV0dXJuIHtUZXh0dXJlIHwgbnVsbH1cbiAgICAgKi9cbiAgICBnZXRUZXh0dXJlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGV4dHVyZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGE0YDQtdC50LzQsdGD0YTQtdGALCDRgtC10LrRgdGC0YPRgNGLINC4INGA0LXQvdC00LXRgNCx0YPRhNC10YBcbiAgICAgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dH0gZ2xcbiAgICAgKiBAaWdub3JlXG4gICAgICovXG4gICAgX3ByZXBhcmUoZ2wpIHtcbiAgICAgICAgdGhpcy5fZ2xDb250ZXh0ID0gZ2w7XG4gICAgICAgIHRoaXMuX3RleHR1cmUgPSBuZXcgVGV4dHVyZShudWxsLCB0aGlzLm9wdGlvbnMpO1xuICAgICAgICB0aGlzLl90ZXh0dXJlLl9wcmVwYXJlKGdsKTtcblxuICAgICAgICB0aGlzLl9mcmFtZUJ1ZmZlciA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCk7XG4gICAgICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgdGhpcy5fZnJhbWVCdWZmZXIpO1xuXG4gICAgICAgIHRoaXMuX3JlbmRlckJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpO1xuICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgdGhpcy5fcmVuZGVyQnVmZmVyKTtcbiAgICAgICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCB0aGlzLm9wdGlvbnMuc2l6ZVswXSwgdGhpcy5vcHRpb25zLnNpemVbMV0pO1xuXG4gICAgICAgIGdsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGhpcy5fdGV4dHVyZS5nZXRUZXh0dXJlKCksIDApO1xuICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wuUkVOREVSQlVGRkVSLCB0aGlzLl9yZW5kZXJCdWZmZXIpO1xuXG4gICAgICAgIHRoaXMuX2NoZWNrQ29tcGxldGUoZ2wpO1xuXG4gICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBudWxsKTtcbiAgICAgICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBudWxsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GP0LXRgiDQtNCw0L3QvdGL0LUg0LjQtyDQstC40LTQtdC+0LrQsNGA0YLRi1xuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBfdW5wcmVwYXJlKCkge1xuICAgICAgICBpZiAodGhpcy5fZnJhbWVCdWZmZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGdsID0gdGhpcy5fZ2xDb250ZXh0O1xuICAgICAgICAgICAgdGhpcy5fdGV4dHVyZS5yZW1vdmUoZ2wpO1xuICAgICAgICAgICAgZ2wuZGVsZXRlRnJhbWVidWZmZXIodGhpcy5fZnJhbWVCdWZmZXIpO1xuICAgICAgICAgICAgZ2wuZGVsZXRlUmVuZGVyYnVmZmVyKHRoaXMuX3JlbmRlckJ1ZmZlcik7XG4gICAgICAgICAgICB0aGlzLl9mcmFtZUJ1ZmZlciA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJCdWZmZXIgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fdGV4dHVyZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QstC10YDRj9C10YIg0LjQvdC40YbQuNCw0LvQuNC30LDRhtC40Y4g0YTRgNC10LnQvNCx0YPRhNC10YDQsFxuICAgICAqIEBwYXJhbSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0fSBnbFxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICBfY2hlY2tDb21wbGV0ZShnbCkge1xuICAgICAgICBjb25zdCBzdGF0dXMgPSBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKTtcblxuICAgICAgICBpZiAoc3RhdHVzID09PSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PT0gZ2wuRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGcmFtZWJ1ZmZlciBpcyB1bnN1cHBvcnRlZCcpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PT0gZ2wuRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRnJhbWVidWZmZXIgaW5jb21wbGV0ZSBhdHRhY2htZW50Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSBnbC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlMpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGcmFtZWJ1ZmZlciBpbmNvbXBsZXRlIGRpbWVuc2lvbnMnKTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09IGdsLkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRnJhbWVidWZmZXIgaW5jb21wbGV0ZSBtaXNzaW5nIGF0dGFjaG1lbnQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdVbmV4cGVjdGVkIGZyYW1lYnVmZmVyIHN0YXR1czogJyArIHN0YXR1cyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cblJlbmRlclRhcmdldC5kZWZhdWx0T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIFRleHR1cmUuZGVmYXVsdE9wdGlvbnMsIHtcbiAgICBzaXplOiBbMCwgMF0sXG4gICAgZ2VuZXJhdGVNaXBtYXBzOiBmYWxzZSxcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBSZW5kZXJUYXJnZXQ7XG5cbi8qKlxuICog0J/QsNGA0LDQvNC10YLRgNGLINGB0LLRj9C30YvQstCw0L3QuNGPINGC0LXQutGB0YLRg9GA0YtcbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBSZW5kZXJUYXJnZXRPcHRpb25zXG4gKiBAcHJvcGVydHkge051bWJlcltdfSBzaXplXG4gKi9cbiJdfQ==

@@ -121,2 +121,3 @@ /**

this._initData = null;
return this;
}

@@ -123,0 +124,0 @@

@@ -14,4 +14,4 @@ import Object3DPlugin from './rendererPlugins/Object3DPlugin';

* @param {Boolean} [options.autoClear=true] Стирать ли прошлый кадр перед новый рендерингом
* @param {Array} [options.clearColor=true] Цвет заливки в формате RGBA
* @param {Object} [options.sortObjects=true] Нужно ли сортировать прозрачные объекты по удаленности
* @param {Number[]} [options.clearColor=[1,1,1,1]] Цвет заливки в формате RGBA
* @param {Boolean} [options.sortObjects=true] Нужно ли сортировать прозрачные объекты по удаленности
* или по renderOrder

@@ -34,4 +34,6 @@ * */

this._gl = this._canvasElement.getContext('webgl', attributes) ||
this._canvasElement.getContext('experimental-webgl', attributes);
this._gl = options.version === 2 ?
this._canvasElement.getContext('webgl2', attributes) :
(this._canvasElement.getContext('webgl', attributes) ||
this._canvasElement.getContext('experimental-webgl', attributes));
} else {

@@ -38,0 +40,0 @@ this._gl = options.gl;

@@ -6,8 +6,20 @@ import Texture from './Texture';

*
* @param {Object} options
* @param {vec2} [options.size] Размер фреймбуфера
* @param {RenderTargetOptions & TextureOptions} options
*/
class RenderTarget {
constructor(options = {}) {
this._size = options.size;
/**
* Параметры для связывания фреймбуфера
* @type {RenderTargetOptions & TextureOptions}
* @readonly
*/
this.options = Object.assign({}, RenderTarget.defaultOptions, options);
/**
* Контекст WebGL, в котором был инициализирован фреймбуфер.
* Используется только для удаления, подумать хорошо, прежде чем использовать для чего-то ещё.
* @type {?WebGLRenderingContext}
* @ignore
*/
this._glContext = null;
}

@@ -20,7 +32,2 @@

bind(gl) {
if (this._sizeChanged) {
this._unprepare(gl);
this._sizeChanged = false;
}
if (!this._frameBuffer) {

@@ -46,6 +53,5 @@ this._prepare(gl);

* Удаляет фреймбуфер из видеокарты
* @param {WebGLRenderingContext} gl
*/
remove(gl) {
this._unprepare(gl);
remove() {
this._unprepare();
return this;

@@ -59,4 +65,4 @@ }

setSize(size) {
this._size = size;
this._sizeChanged = true;
this.options.size = size;
this._unprepare();
return this;

@@ -66,2 +72,10 @@ }

/**
* Возвращает текущую текстуру фреймбуфера
* @return {Texture | null}
*/
getTexture() {
return this._texture;
}
/**
* Инициализирует фреймбуфер, текстуры и рендербуфер

@@ -72,6 +86,4 @@ * @param {WebGLRenderingContext} gl

_prepare(gl) {
this._texture = new Texture();
this._texture.generateMipmaps = false;
this._texture.size = this._size;
this._glContext = gl;
this._texture = new Texture(null, this.options);
this._texture._prepare(gl);

@@ -84,5 +96,5 @@

gl.bindRenderbuffer(gl.RENDERBUFFER, this._renderBuffer);
gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, this._size[0], this._size[1]);
gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, this.options.size[0], this.options.size[1]);
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this._texture._texture, 0);
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, this._texture.getTexture(), 0);
gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, this._renderBuffer);

@@ -98,7 +110,7 @@

* Удаляет данные из видеокарты
* @param {WebGLRenderingContext} gl
* @ignore
*/
_unprepare(gl) {
_unprepare() {
if (this._frameBuffer) {
const gl = this._glContext;
this._texture.remove(gl);

@@ -108,2 +120,4 @@ gl.deleteFramebuffer(this._frameBuffer);

this._frameBuffer = null;
this._renderBuffer = null;
this._texture = null;
}

@@ -136,2 +150,14 @@ }

RenderTarget.defaultOptions = Object.assign({}, Texture.defaultOptions, {
size: [0, 0],
generateMipmaps: false,
});
export default RenderTarget;
/**
* Параметры связывания текстуры
*
* @typedef {Object} RenderTargetOptions
* @property {Number[]} size
*/
/**
* Текстуры используются для отрисовки изображений в WebGL
*/
class Texture {
/**
* @param {HTMLImageElement | HTMLCanvasElement} [src=null] В качестве изображения может быть
* либо элемент img, либо canvas
* @param {HTMLImageElement | HTMLCanvasElement | ImageBitmap | ImageData | TypedArray} [src=null] В качестве
* изображения может быть либо элемент img, либо canvas
* @param {?TextureOptions} options
*/
constructor(src) {
constructor(src, options = {}) {
this._src = src || null;
/**
* Тип фильтра при отображении текстуры, размеры которой больше, чем размеры исходной картинки
* @type {TextureFilter}
* Параметры для связывания текстуры
* @type {TextureOptions}
* @readonly
*/
this.magFilter = Texture.LinearFilter;
this.options = Object.assign({}, Texture.defaultOptions, options);
/**
* Тип фильтра при отображении текстуры, размеры которой меньше, чем размеры исходной картинки
* @type {TextureFilter}
*/
this.minFilter = Texture.LinearMipMapLinearFilter;
/**
* Что делать, если ширина исходной картинки не равна степени 2.
* @type {TextureClamp}
*/
this.wrapS = Texture.ClampToEdgeWrapping;
/**
* Что делать, если высота исходной картинки не равна степени 2.
* @type {TextureClamp}
*/
this.wrapT = Texture.ClampToEdgeWrapping;
/**
* Формат текстуры (RGBA или Alpha)
* @type {TextureFormat}
*/
this.format = Texture.RgbaFormat;
/**
* Генерировать ли mipmaps.
* Они значительно повышают качество и производительность отображения.
* Mipmaps могут использоваться только, если размеры текстуры равны степени 2.
*
* @type {Boolean}
*/
this.generateMipmaps = true;
/**
* Нужно ли отражать текстуру относительно оси Y.
* @type {Boolean}
*/
this.flipY = true;
/**
* Сохранен ли цвет текстуры с premultiply аlpha.
* @type {Boolean}
*/
this.premultiplyAlpha = true;
/**
* Контекст WebGL, в котором была инициализирована текстура.

@@ -81,4 +39,6 @@ * Используется только для удаления, подумать хорошо, прежде чем использовать для чего-то ещё.

enable(gl, index) {
if (index !== undefined) {
gl.activeTexture(gl.TEXTURE0 + index);
const unit = index !== undefined ? index : this.options.unit;
if (unit !== undefined) {
gl.activeTexture(gl.TEXTURE0 + unit);
}

@@ -108,2 +68,10 @@

/**
* Возвращает WebGL текстуру
* @return {WebGLTexture}
*/
getTexture() {
return this._texture;
}
_prepare(gl) {

@@ -114,14 +82,14 @@ this._glContext = gl;

gl.bindTexture(gl.TEXTURE_2D, this._texture);
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.flipY);
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.premultiplyAlpha);
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.options.flipY);
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.options.premultiplyAlpha);
if (this.size) {
if (this.options.size) {
gl.texImage2D(
gl.TEXTURE_2D,
0,
this._toGlParam(gl, this.format),
this.size[0],
this.size[1],
this._toGlParam(gl, this.options.format),
this.options.size[0],
this.options.size[1],
0,
this._toGlParam(gl, this.format),
this._toGlParam(gl, this.options.format),
gl.UNSIGNED_BYTE,

@@ -131,12 +99,19 @@ this._src

} else {
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._src);
gl.texImage2D(
gl.TEXTURE_2D,
0,
this._toGlParam(gl, this.options.format),
this._toGlParam(gl, this.options.format),
gl.UNSIGNED_BYTE,
this._src
);
}
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, this._toGlParam(gl, this.wrapS));
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this._toGlParam(gl, this.wrapT));
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, this._toGlParam(gl, this.options.wrapS));
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this._toGlParam(gl, this.options.wrapT));
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, this._toGlParam(gl, this.magFilter));
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, this._toGlParam(gl, this.minFilter));
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, this._toGlParam(gl, this.options.magFilter));
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, this._toGlParam(gl, this.options.minFilter));
if (this.generateMipmaps &&
if (this.options.generateMipmaps &&
this.minFilter !== Texture.NearestFilter &&

@@ -165,2 +140,3 @@ this.minFilter !== Texture.LinearFilter

if (param === Texture.AlphaFormat) { return gl.ALPHA; }
if (param === Texture.RgbFormat) { return gl.RGB; }
return null;

@@ -183,3 +159,15 @@ }

Texture.AlphaFormat = 12;
Texture.RgbFormat = 13;
Texture.defaultOptions = {
magFilter: Texture.LinearFilter,
minFilter: Texture.LinearMipMapLinearFilter,
wrapS: Texture.ClampToEdgeWrapping,
wrapT: Texture.ClampToEdgeWrapping,
format: Texture.RgbaFormat,
generateMipmaps: true,
flipY: true,
premultiplyAlpha: true,
};
export default Texture;

@@ -200,1 +188,17 @@

*/
/**
* Параметры связывания текстуры
*
* @typedef {Object} TextureOptions
* @property {TextureFilter} magFilter
* @property {TextureFilter} minFilter
* @property {TextureClamp} wrapS
* @property {TextureClamp} wrapT
* @property {TextureFormat} format
* @property {Boolean} generateMipmaps
* @property {Boolean} flipY
* @property {Boolean} premultiplyAlpha
* @property {?Number[]} size
* @property {?Number} unit
*/

@@ -45,10 +45,6 @@ /**

* стандартный подход для связывания атрибутов через {@link ShaderProgram#bind}.
*
* @param {State} state Стейт рендерера
*/
unbind(state) {
const ext = state.extensions.OES_vertex_array_object;
if (ext) {
ext.bindVertexArrayOES(null);
unbind() {
if (this._ext) {
this._ext.bindVertexArrayOES(null);
}

@@ -55,0 +51,0 @@

/**
* Текстуры используются для отрисовки изображений в WebGL
*/
class Texture {
/**
* @param {HTMLImageElement | HTMLCanvasElement} [src=null] В качестве изображения может быть
* либо элемент img, либо canvas
*/
constructor(src) {
this._src = src || null;
/**
* Тип фильтра при отображении текстуры, размеры которой больше, чем размеры исходной картинки
* @type {TextureFilter}
* @param {HTMLImageElement | HTMLCanvasElement | ImageBitmap | ImageData | TypedArray} [src=null] В качестве
* изображения может быть либо элемент img, либо canvas
* @param {?TextureOptions} options
*/
this.magFilter = Texture.LinearFilter;
constructor(src, options = {}) {
this._src = src || null;
/**
* Тип фильтра при отображении текстуры, размеры которой меньше, чем размеры исходной картинки
* @type {TextureFilter}
*/
this.minFilter = Texture.LinearMipMapLinearFilter;
/**
* Параметры для связывания текстуры
* @type {TextureOptions}
* @readonly
*/
this.options = Object.assign({}, Texture.defaultOptions, options);
/**
* Что делать, если ширина исходной картинки не равна степени 2.
* @type {TextureClamp}
*/
this.wrapS = Texture.ClampToEdgeWrapping;
/**
* Контекст WebGL, в котором была инициализирована текстура.
* Используется только для удаления, подумать хорошо, прежде чем использовать для чего-то ещё.
* @type {?WebGLRenderingContext}
* @ignore
*/
this._glContext = null;
}
/**
* Что делать, если высота исходной картинки не равна степени 2.
* @type {TextureClamp}
* Связывает WebGL и данные текстуры.
* При первом вызов происходит инициализация.
*
* @param {WebGLRenderingContext} gl
* @param {?Number} index Номер текстуры в контексте WebGL.
* Если его нет, используется уже активированный юнит текстуры.
*/
this.wrapT = Texture.ClampToEdgeWrapping;
enable(gl, index) {
const unit = index !== undefined ? index : this.options.unit;
/**
* Формат текстуры (RGBA или Alpha)
* @type {TextureFormat}
*/
this.format = Texture.RgbaFormat;
if (unit !== undefined) {
gl.activeTexture(gl.TEXTURE0 + unit);
}
/**
* Генерировать ли mipmaps.
* Они значительно повышают качество и производительность отображения.
* Mipmaps могут использоваться только, если размеры текстуры равны степени 2.
*
* @type {Boolean}
*/
this.generateMipmaps = true;
if (!this._texture) {
this._prepare(gl);
}
/**
* Нужно ли отражать текстуру относительно оси Y.
* @type {Boolean}
*/
this.flipY = true;
gl.bindTexture(gl.TEXTURE_2D, this._texture);
/**
* Сохранен ли цвет текстуры с premultiply аlpha.
* @type {Boolean}
*/
this.premultiplyAlpha = true;
return this;
}
/**
* Контекст WebGL, в котором была инициализирована текстура.
* Используется только для удаления, подумать хорошо, прежде чем использовать для чего-то ещё.
* @type {?WebGLRenderingContext}
* @ignore
* Удаляет текстуру из видеокарты
*/
this._glContext = null;
}
remove() {
if (this._texture) {
this._glContext.deleteTexture(this._texture);
this._glContext = null;
this._texture = null;
}
/**
* Связывает WebGL и данные текстуры.
* При первом вызов происходит инициализация.
*
* @param {WebGLRenderingContext} gl
* @param {?Number} index Номер текстуры в контексте WebGL.
* Если его нет, используется уже активированный юнит текстуры.
*/
enable(gl, index) {
if (index !== undefined) {
gl.activeTexture(gl.TEXTURE0 + index);
return this;
}
if (!this._texture) {
this._prepare(gl);
/**
* Возвращает WebGL текстуру
* @return {WebGLTexture}
*/
getTexture() {
return this._texture;
}
gl.bindTexture(gl.TEXTURE_2D, this._texture);
_prepare(gl) {
this._glContext = gl;
this._texture = gl.createTexture();
return this;
}
gl.bindTexture(gl.TEXTURE_2D, this._texture);
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.options.flipY);
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.options.premultiplyAlpha);
/**
* Удаляет текстуру из видеокарты
*/
remove() {
if (this._texture) {
this._glContext.deleteTexture(this._texture);
this._glContext = null;
this._texture = null;
}
if (this.options.size) {
gl.texImage2D(gl.TEXTURE_2D, 0, this._toGlParam(gl, this.options.format), this.options.size[0], this.options.size[1], 0, this._toGlParam(gl, this.options.format), gl.UNSIGNED_BYTE, this._src);
} else {
gl.texImage2D(gl.TEXTURE_2D, 0, this._toGlParam(gl, this.options.format), this._toGlParam(gl, this.options.format), gl.UNSIGNED_BYTE, this._src);
}
return this;
}
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, this._toGlParam(gl, this.options.wrapS));
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this._toGlParam(gl, this.options.wrapT));
_prepare(gl) {
this._glContext = gl;
this._texture = gl.createTexture();
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, this._toGlParam(gl, this.options.magFilter));
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, this._toGlParam(gl, this.options.minFilter));
gl.bindTexture(gl.TEXTURE_2D, this._texture);
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.flipY);
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.premultiplyAlpha);
if (this.options.generateMipmaps && this.minFilter !== Texture.NearestFilter && this.minFilter !== Texture.LinearFilter) {
gl.generateMipmap(gl.TEXTURE_2D);
}
if (this.size) {
gl.texImage2D(gl.TEXTURE_2D, 0, this._toGlParam(gl, this.format), this.size[0], this.size[1], 0, this._toGlParam(gl, this.format), gl.UNSIGNED_BYTE, this._src);
} else {
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, this._src);
gl.bindTexture(gl.TEXTURE_2D, null);
}
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, this._toGlParam(gl, this.wrapS));
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this._toGlParam(gl, this.wrapT));
_toGlParam(gl, param) {
if (param === Texture.ClampToEdgeWrapping) {
return gl.CLAMP_TO_EDGE;
}
if (param === Texture.Repeat) {
return gl.REPEAT;
}
if (param === Texture.MirroredRepeat) {
return gl.MIRRORED_REPEAT;
}
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, this._toGlParam(gl, this.magFilter));
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, this._toGlParam(gl, this.minFilter));
if (param === Texture.NearestFilter) {
return gl.NEAREST;
}
if (param === Texture.NearestMipMapNearestFilter) {
return gl.NEAREST_MIPMAP_NEAREST;
}
if (param === Texture.NearestMipMapLinearFilter) {
return gl.NEAREST_MIPMAP_LINEAR;
}
if (this.generateMipmaps && this.minFilter !== Texture.NearestFilter && this.minFilter !== Texture.LinearFilter) {
gl.generateMipmap(gl.TEXTURE_2D);
if (param === Texture.LinearFilter) {
return gl.LINEAR;
}
if (param === Texture.LinearMipMapNearestFilter) {
return gl.LINEAR_MIPMAP_NEAREST;
}
if (param === Texture.LinearMipMapLinearFilter) {
return gl.LINEAR_MIPMAP_LINEAR;
}
if (param === Texture.RgbaFormat) {
return gl.RGBA;
}
if (param === Texture.AlphaFormat) {
return gl.ALPHA;
}
if (param === Texture.RgbFormat) {
return gl.RGB;
}
return null;
}
gl.bindTexture(gl.TEXTURE_2D, null);
}
_toGlParam(gl, param) {
if (param === Texture.ClampToEdgeWrapping) {
return gl.CLAMP_TO_EDGE;
}
if (param === Texture.Repeat) {
return gl.REPEAT;
}
if (param === Texture.MirroredRepeat) {
return gl.MIRRORED_REPEAT;
}
if (param === Texture.NearestFilter) {
return gl.NEAREST;
}
if (param === Texture.NearestMipMapNearestFilter) {
return gl.NEAREST_MIPMAP_NEAREST;
}
if (param === Texture.NearestMipMapLinearFilter) {
return gl.NEAREST_MIPMAP_LINEAR;
}
if (param === Texture.LinearFilter) {
return gl.LINEAR;
}
if (param === Texture.LinearMipMapNearestFilter) {
return gl.LINEAR_MIPMAP_NEAREST;
}
if (param === Texture.LinearMipMapLinearFilter) {
return gl.LINEAR_MIPMAP_LINEAR;
}
if (param === Texture.RgbaFormat) {
return gl.RGBA;
}
if (param === Texture.AlphaFormat) {
return gl.ALPHA;
}
return null;
}
}

@@ -187,3 +158,15 @@

Texture.AlphaFormat = 12;
Texture.RgbFormat = 13;
Texture.defaultOptions = {
magFilter: Texture.LinearFilter,
minFilter: Texture.LinearMipMapLinearFilter,
wrapS: Texture.ClampToEdgeWrapping,
wrapT: Texture.ClampToEdgeWrapping,
format: Texture.RgbaFormat,
generateMipmaps: true,
flipY: true,
premultiplyAlpha: true
};
export default Texture;

@@ -204,2 +187,18 @@

*/
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9UZXh0dXJlLmpzIl0sIm5hbWVzIjpbIlRleHR1cmUiLCJjb25zdHJ1Y3RvciIsInNyYyIsIl9zcmMiLCJtYWdGaWx0ZXIiLCJMaW5lYXJGaWx0ZXIiLCJtaW5GaWx0ZXIiLCJMaW5lYXJNaXBNYXBMaW5lYXJGaWx0ZXIiLCJ3cmFwUyIsIkNsYW1wVG9FZGdlV3JhcHBpbmciLCJ3cmFwVCIsImZvcm1hdCIsIlJnYmFGb3JtYXQiLCJnZW5lcmF0ZU1pcG1hcHMiLCJmbGlwWSIsInByZW11bHRpcGx5QWxwaGEiLCJfZ2xDb250ZXh0IiwiZW5hYmxlIiwiZ2wiLCJpbmRleCIsInVuZGVmaW5lZCIsImFjdGl2ZVRleHR1cmUiLCJURVhUVVJFMCIsIl90ZXh0dXJlIiwiX3ByZXBhcmUiLCJiaW5kVGV4dHVyZSIsIlRFWFRVUkVfMkQiLCJyZW1vdmUiLCJkZWxldGVUZXh0dXJlIiwiY3JlYXRlVGV4dHVyZSIsInBpeGVsU3RvcmVpIiwiVU5QQUNLX0ZMSVBfWV9XRUJHTCIsIlVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTCIsInNpemUiLCJ0ZXhJbWFnZTJEIiwiX3RvR2xQYXJhbSIsIlVOU0lHTkVEX0JZVEUiLCJSR0JBIiwidGV4UGFyYW1ldGVyaSIsIlRFWFRVUkVfV1JBUF9TIiwiVEVYVFVSRV9XUkFQX1QiLCJURVhUVVJFX01BR19GSUxURVIiLCJURVhUVVJFX01JTl9GSUxURVIiLCJOZWFyZXN0RmlsdGVyIiwiZ2VuZXJhdGVNaXBtYXAiLCJwYXJhbSIsIkNMQU1QX1RPX0VER0UiLCJSZXBlYXQiLCJSRVBFQVQiLCJNaXJyb3JlZFJlcGVhdCIsIk1JUlJPUkVEX1JFUEVBVCIsIk5FQVJFU1QiLCJOZWFyZXN0TWlwTWFwTmVhcmVzdEZpbHRlciIsIk5FQVJFU1RfTUlQTUFQX05FQVJFU1QiLCJOZWFyZXN0TWlwTWFwTGluZWFyRmlsdGVyIiwiTkVBUkVTVF9NSVBNQVBfTElORUFSIiwiTElORUFSIiwiTGluZWFyTWlwTWFwTmVhcmVzdEZpbHRlciIsIkxJTkVBUl9NSVBNQVBfTkVBUkVTVCIsIkxJTkVBUl9NSVBNQVBfTElORUFSIiwiQWxwaGFGb3JtYXQiLCJBTFBIQSJdLCJtYXBwaW5ncyI6IkFBQUE7OztBQUdBLE1BQU1BLE9BQU4sQ0FBYztBQUNWOzs7O0FBSUFDLGNBQVlDLEdBQVosRUFBaUI7QUFDYixTQUFLQyxJQUFMLEdBQVlELE9BQU8sSUFBbkI7O0FBRUE7Ozs7QUFJQSxTQUFLRSxTQUFMLEdBQWlCSixRQUFRSyxZQUF6Qjs7QUFFQTs7OztBQUlBLFNBQUtDLFNBQUwsR0FBaUJOLFFBQVFPLHdCQUF6Qjs7QUFFQTs7OztBQUlBLFNBQUtDLEtBQUwsR0FBYVIsUUFBUVMsbUJBQXJCOztBQUVBOzs7O0FBSUEsU0FBS0MsS0FBTCxHQUFhVixRQUFRUyxtQkFBckI7O0FBRUE7Ozs7QUFJQSxTQUFLRSxNQUFMLEdBQWNYLFFBQVFZLFVBQXRCOztBQUVBOzs7Ozs7O0FBT0EsU0FBS0MsZUFBTCxHQUF1QixJQUF2Qjs7QUFFQTs7OztBQUlBLFNBQUtDLEtBQUwsR0FBYSxJQUFiOztBQUVBOzs7O0FBSUEsU0FBS0MsZ0JBQUwsR0FBd0IsSUFBeEI7O0FBRUE7Ozs7OztBQU1BLFNBQUtDLFVBQUwsR0FBa0IsSUFBbEI7QUFDSDs7QUFFRDs7Ozs7Ozs7QUFRQUMsU0FBT0MsRUFBUCxFQUFXQyxLQUFYLEVBQWtCO0FBQ2QsUUFBSUEsVUFBVUMsU0FBZCxFQUF5QjtBQUNyQkYsU0FBR0csYUFBSCxDQUFpQkgsR0FBR0ksUUFBSCxHQUFjSCxLQUEvQjtBQUNIOztBQUVELFFBQUksQ0FBQyxLQUFLSSxRQUFWLEVBQW9CO0FBQ2hCLFdBQUtDLFFBQUwsQ0FBY04sRUFBZDtBQUNIOztBQUVEQSxPQUFHTyxXQUFILENBQWVQLEdBQUdRLFVBQWxCLEVBQThCLEtBQUtILFFBQW5DOztBQUVBLFdBQU8sSUFBUDtBQUNIOztBQUVEOzs7QUFHQUksV0FBUztBQUNMLFFBQUksS0FBS0osUUFBVCxFQUFtQjtBQUNmLFdBQUtQLFVBQUwsQ0FBZ0JZLGFBQWhCLENB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gtGD0YDRiyDQuNGB0L/QvtC70YzQt9GD0Y7RgtGB0Y8g0LTQu9GPINC+0YLRgNC40YHQvtCy0LrQuCDQuNC30L7QsdGA0LDQttC10L3QuNC5INCyIFdlYkdMXG4gKi9cbmNsYXNzIFRleHR1cmUge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7SFRNTEltYWdlRWxlbWVudCB8IEhUTUxDYW52YXNFbGVtZW50fSBbc3JjPW51bGxdINCSINC60LDRh9C10YHRgtCy0LUg0LjQt9C+0LHRgNCw0LbQtdC90LjRjyDQvNC+0LbQtdGCINCx0YvRgtGMXG4gICAgICog0LvQuNCx0L4g0Y3Qu9C10LzQtdC90YIgaW1nLCDQu9C40LHQviBjYW52YXNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihzcmMpIHtcbiAgICAgICAgdGhpcy5fc3JjID0gc3JjIHx8IG51bGw7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCi0LjQvyDRhNC40LvRjNGC0YDQsCDQv9GA0Lgg0L7RgtC+0LHRgNCw0LbQtdC90LjQuCDRgtC10LrRgdGC0YPRgNGLLCDRgNCw0LfQvNC10YDRiyDQutC+0YLQvtGA0L7QuSDQsdC+0LvRjNGI0LUsINGH0LXQvCDRgNCw0LfQvNC10YDRiyDQuNGB0YXQvtC00L3QvtC5INC60LDRgNGC0LjQvdC60LhcbiAgICAgICAgICogQHR5cGUge1RleHR1cmVGaWx0ZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm1hZ0ZpbHRlciA9IFRleHR1cmUuTGluZWFyRmlsdGVyO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQotC40L8g0YTQuNC70YzRgtGA0LAg0L/RgNC4INC+0YLQvtCx0YDQsNC20LXQvdC40Lgg0YLQtdC60YHRgtGD0YDRiywg0YDQsNC30LzQtdGA0Ysg0LrQvtGC0L7RgNC+0Lkg0LzQtdC90YzRiNC1LCDRh9C10Lwg0YDQsNC30LzQtdGA0Ysg0LjRgdGF0L7QtNC90L7QuSDQutCw0YDRgtC40L3QutC4XG4gICAgICAgICAqIEB0eXBlIHtUZXh0dXJlRmlsdGVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5taW5GaWx0ZXIgPSBUZXh0dXJlLkxpbmVhck1pcE1hcExpbmVhckZpbHRlcjtcblxuICAgICAgICAvKipcbiAgICAgICAgICog0KfRgtC+INC00LXQu9Cw0YLRjCwg0LXRgdC70Lgg0YjQuNGA0LjQvdCwINC40YHRhdC+0LTQvdC+0Lkg0LrQsNGA0YLQuNC90LrQuCDQvdC1INGA0LDQstC90LAg0YHRgtC10L/QtdC90LggMi5cbiAgICAgICAgICogQHR5cGUge1RleHR1cmVDbGFtcH1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMud3JhcFMgPSBUZXh0dXJlLkNsYW1wVG9FZGdlV3JhcHBpbmc7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCn0YLQviDQtNC10LvQsNGC0YwsINC10YHQu9C4INCy0YvRgdC+0YLQsCDQuNGB0YXQvtC00L3QvtC5INC60LDRgNGC0LjQvdC60Lgg0L3QtSDRgNCw0LLQvdCwINGB0YLQtdC/0LXQvdC4IDIuXG4gICAgICAgICAqIEB0eXBlIHtUZXh0dXJlQ2xhbXB9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLndyYXBUID0gVGV4dHVyZS5DbGFtcFRvRWRnZVdyYXBwaW5nO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQpNC+0YDQvNCw0YIg0YLQtdC60YHRgtGD0YDRiyAoUkdCQSDQuNC70LggQWxwaGEpXG4gICAgICAgICAqIEB0eXBlIHtUZXh0dXJlRm9ybWF0fVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5mb3JtYXQgPSBUZXh0dXJlLlJnYmFGb3JtYXQ7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCT0LXQvdC10YDQuNGA0L7QstCw0YLRjCDQu9C4IG1pcG1hcHMuXG4gICAgICAgICAqINCe0L3QuCDQt9C90LDRh9C40YLQtdC70YzQvdC+INC/0L7QstGL0YjQsNGO0YIg0LrQsNGH0LXRgdGC0LLQviDQuCDQv9GA0L7QuNC30LLQvtC00LjRgtC10LvRjNC90L7RgdGC0Ywg0L7RgtC+0LHRgNCw0LbQtdC90LjRjy5cbiAgICAgICAgICogTWlwbWFwcyDQvNC+0LPRg9GCINC40YHQv9C+0LvRjNC30L7QstCw0YLRjNGB0Y8g0YLQvtC70YzQutC+LCDQtdGB0LvQuCDRgNCw0LfQvNC10YDRiyDRgtC10LrRgdGC0YPRgNGLINGA0LDQstC90Ysg0YHRgtC10L/QtdC90LggMi5cbiAgICAgICAgICpcbiAgICAgICAgICogQHR5cGUge0Jvb2xlYW59XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmdlbmVyYXRlTWlwbWFwcyA9IHRydWU7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCd0YPQttC90L4g0LvQuCDQvtGC0YDQsNC20LDRgtGMINGC0LXQutGB0YLRg9GA0YMg0L7RgtC90L7RgdC40YLQtdC70YzQvdC+INC+0YHQuCBZLlxuICAgICAgICAgKiBAdHlwZSB7Qm9vbGVhbn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZmxpcFkgPSB0cnVlO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQodC+0YXRgNCw0L3QtdC9INC70Lgg0YbQstC10YIg0YLQtdC60YHRgtGD0YDRiyDRgSBwcmVtdWx0aXBseSDQsGxwaGEuXG4gICAgICAgICAqIEB0eXBlIHtCb29sZWFufVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5wcmVtdWx0aXBseUFscGhhID0gdHJ1ZTtcblxuICAgICAgICAvKipcbiAgICAgICAgICog0JrQvtC90YLQtdC60YHRgiBXZWJHTCwg0LIg0LrQvtGC0L7RgNC+0Lwg0LHRi9C70LAg0LjQvdC40YbQuNCw0LvQuNC30LjRgNC+0LLQsNC90LAg0YLQtdC60YHRgtGD0YDQsC5cbiAgICAgICAgICog0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINGC0L7Qu9GM0LrQviDQtNC70Y8g0YPQtNCw0LvQtdC90LjRjywg0L/QvtC00YPQvNCw0YLRjCDRhdC+0YDQvtGI0L4sINC/0YDQtdC20LTQtSDRh9C10Lwg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINC00LvRjyDRh9C10LPQvi3RgtC+INC10YnRkS5cbiAgICAgICAgICogQHR5cGUgez9XZWJHTFJlbmRlcmluZ0NvbnRleHR9XG4gICAgICAgICAqIEBpZ25vcmVcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2dsQ29udGV4dCA9IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQstGP0LfRi9Cy0LDQtdGCIFdlYkdMINC4INC00LDQvdC90YvQtSDRgtC10LrRgdGC0YPRgNGLLlxuICAgICAqINCf0YDQuCDQv9C10YDQstC+0Lwg0LLRi9C30L7QsiDQv9GA0L7QuNGB0YXQvtC00LjRgiDQuNC90LjRhtC40LDQu9C40LfQsNGG0LjRjy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7V2ViR0xSZW5kZXJpbmdDb250ZXh0fSBnbFxuICAgICAqIEBwYXJhbSB7P051bWJlcn0gaW5kZXgg0J3QvtC80LXRgCDRgtC10LrRgdGC0YPRgNGLINCyINC60L7QvdGC0LXQutGB0YLQtSBXZWJHTC5cbiAgICAgKiDQldGB0LvQuCDQtdCz0L4g0L3QtdGCLCDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0YPQttC1INCw0LrRgtC40LLQuNGA0L7QstCw0L3QvdGL0Lkg0Y7QvdC40YIg0YLQtdC60YHRgtGD0YDRiy5cbiAgICAgKi9cbiAgICBlbmFibGUoZ2wsIGluZGV4KSB7XG4gICAgICAgIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBnbC5hY3RpdmVUZXh0dXJlKGdsLlRFWFRVUkUwICsgaW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl90ZXh0dXJlKSB7XG4gICAgICAgICAgICB0aGlzLl9wcmVwYXJlKGdsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRoaXMuX3RleHR1cmUpO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCINGC0LXQutGB0YLRg9GA0YMg0LjQtyDQstC40LTQtdC+0LrQsNGA0YLRi1xuICAgICAqL1xuICAgIHJlbW92ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3RleHR1cmUpIHtcbiAgICAgICAgICAgIHRoaXMuX2dsQ29udGV4dC5kZWxldGVUZXh0dXJlKHRoaXMuX3RleHR1cmUpO1xuICAgICAgICAgICAgdGhpcy5fZ2xDb250ZXh0ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX3RleHR1cmUgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgX3ByZXBhcmUoZ2wpIHtcbiAgICAgICAgdGhpcy5fZ2xDb250ZXh0ID0gZ2w7XG4gICAgICAgIHRoaXMuX3RleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7XG5cbiAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGhpcy5fdGV4dHVyZSk7XG4gICAgICAgIGdsLnBpeGVsU3RvcmVpKGdsLlVOUEFDS19GTElQX1lfV0VCR0wsIHRoaXMuZmxpcFkpO1xuICAgICAgICBnbC5waXhlbFN0b3JlaShnbC5VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wsIHRoaXMucHJlbXVsdGlwbHlBbHBoYSk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2l6ZSkge1xuICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChcbiAgICAgICAgICAgICAgICBnbC5URVhUVVJFXzJELFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgdGhpcy5fdG9HbFBhcmFtKGdsLCB0aGlzLmZvcm1hdCksXG4gICAgICAgICAgICAgICAgdGhpcy5zaXplWzBdLFxuICAgICAgICAgICAgICAgIHRoaXMuc2l6ZVsxXSxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIHRoaXMuX3RvR2xQYXJhbShnbCwgdGhpcy5mb3JtYXQpLFxuICAgICAgICAgICAgICAgIGdsLlVOU0lHTkVEX0JZVEUsXG4gICAgICAgICAgICAgICAgdGhpcy5fc3JjXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCB0aGlzLl9zcmMpO1xuICAgICAgICB9XG5cbiAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgdGhpcy5fdG9HbFBhcmFtKGdsLCB0aGlzLndyYXBTKSk7XG4gICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIHRoaXMuX3RvR2xQYXJhbShnbCwgdGhpcy53cmFwVCkpO1xuXG4gICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCB0aGlzLl90b0dsUGFyYW0oZ2wsIHRoaXMubWFnRmlsdGVyKSk7XG4gICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSLCB0aGlzLl90b0dsUGFyYW0oZ2wsIHRoaXMubWluRmlsdGVyKSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZ2VuZXJhdGVNaXBtYXBzICYmXG4gICAgICAgICAgICB0aGlzLm1pbkZpbHRlciAhPT0gVGV4dHVyZS5OZWFyZXN0RmlsdGVyICYmXG4gICAgICAgICAgICB0aGlzLm1pbkZpbHRlciAhPT0gVGV4dHVyZS5MaW5lYXJGaWx0ZXJcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBnbC5nZW5lcmF0ZU1pcG1hcChnbC5URVhUVVJFXzJEKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpO1xuICAgIH1cblxuICAgIF90b0dsUGFyYW0oZ2wsIHBhcmFtKSB7XG4gICAgICAgIGlmIChwYXJhbSA9PT0gVGV4dHVyZS5DbGFtcFRvRWRnZVdyYXBwaW5nKSB7IHJldHVybiBnbC5DTEFNUF9UT19FREdFOyB9XG4gICAgICAgIGlmIChwYXJhbSA9PT0gVGV4dHVyZS5SZXBlYXQpIHsgcmV0dXJuIGdsLlJFUEVBVDsgfVxuICAgICAgICBpZiAocGFyYW0gPT09IFRleHR1cmUuTWlycm9yZWRSZXBlYXQpIHsgcmV0dXJuIGdsLk1JUlJPUkVEX1JFUEVBVDsgfVxuXG4gICAgICAgIGlmIChwYXJhbSA9PT0gVGV4dHVyZS5OZWFyZXN0RmlsdGVyKSB7IHJldHVybiBnbC5ORUFSRVNUOyB9XG4gICAgICAgIGlmIChwYXJhbSA9PT0gVGV4dHVyZS5OZWFyZXN0TWlwTWFwTmVhcmVzdEZpbHRlcikgeyByZXR1cm4gZ2wuTkVBUkVTVF9NSVBNQVBfTkVBUkVTVDsgfVxuICAgICAgICBpZiAocGFyYW0gPT09IFRleHR1cmUuTmVhcmVzdE1pcE1hcExpbmVhckZpbHRlcikgeyByZXR1cm4gZ2wuTkVBUkVTVF9NSVBNQVBfTElORUFSOyB9XG5cbiAgICAgICAgaWYgKHBhcmFtID09PSBUZXh0dXJlLkxpbmVhckZpbHRlcikgeyByZXR1cm4gZ2wuTElORUFSOyB9XG4gICAgICAgIGlmIChwYXJhbSA9PT0gVGV4dHVyZS5MaW5lYXJNaXBNYXBOZWFyZXN0RmlsdGVyKSB7IHJldHVybiBnbC5MSU5FQVJfTUlQTUFQX05FQVJFU1Q7IH1cbiAgICAgICAgaWYgKHBhcmFtID09PSBUZXh0dXJlLkxpbmVhck1pcE1hcExpbmVhckZpbHRlcikgeyByZXR1cm4gZ2wuTElORUFSX01JUE1BUF9MSU5FQVI7IH1cbiAgICAgICAgaWYgKHBhcmFtID09PSBUZXh0dXJlLlJnYmFGb3JtYXQpIHsgcmV0dXJuIGdsLlJHQkE7IH1cbiAgICAgICAgaWYgKHBhcmFtID09PSBUZXh0dXJlLkFscGhhRm9ybWF0KSB7IHJldHVybiBnbC5BTFBIQTsgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5cblRleHR1cmUuQ2xhbXBUb0VkZ2VXcmFwcGluZyA9IDg7XG5UZXh0dXJlLlJlcGVhdCA9IDk7XG5UZXh0dXJlLk1pcnJvcmVkUmVwZWF0ID0gMTA7XG5cblRleHR1cmUuTmVhcmVzdEZpbHRlciA9IDE7XG5UZXh0dXJlLk5lYXJlc3RNaXBNYXBOZWFyZXN0RmlsdGVyID0gMjtcblRleHR1cmUuTmVhcmVzdE1pcE1hcExpbmVhckZpbHRlciA9IDM7XG5UZXh0dXJlLkxpbmVhckZpbHRlciA9IDQ7XG5UZXh0dXJlLkxpbmVhck1pcE1hcE5lYXJlc3RGaWx0ZXIgPSA1O1xuVGV4dHVyZS5MaW5lYXJNaXBNYXBMaW5lYXJGaWx0ZXIgPSA2O1xuXG5UZXh0dXJlLlJnYmFGb3JtYXQgPSAxMTtcblRleHR1cmUuQWxwaGFGb3JtYXQgPSAxMjtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dHVyZTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7VGV4dHVyZS5OZWFyZXN0RmlsdGVyIHwgVGV4dHVyZS5OZWFyZXN0TWlwTWFwTmVhcmVzdEZpbHRlciB8XG4gKiBUZXh0dXJlLk5lYXJlc3RNaXBNYXBMaW5lYXJGaWx0ZXIgfCBUZXh0dXJlLkxpbmVhckZpbHRlciB8XG4gKiBUZXh0dXJlLkxpbmVhck1pcE1hcE5lYXJlc3RGaWx0ZXIgfCBUZXh0dXJlLkxpbmVhck1pcE1hcExpbmVhckZpbHRlcn0gVGV4dHVyZUZpbHRlclxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge1RleHR1cmUuQ2xhbXBUb0VkZ2VXcmFwcGluZ30gVGV4dHVyZUNsYW1wXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7VGV4dHVyZS5SZ2JhRm9ybWF0IHwgVGV4dHVyZS5BbHBoYUZvcm1hdH0gVGV4dHVyZUZvcm1hdFxuICovXG4iXX0=
/**
* Параметры связывания текстуры
*
* @typedef {Object} TextureOptions
* @property {TextureFilter} magFilter
* @property {TextureFilter} minFilter
* @property {TextureClamp} wrapS
* @property {TextureClamp} wrapT
* @property {TextureFormat} format
* @property {Boolean} generateMipmaps
* @property {Boolean} flipY
* @property {Boolean} premultiplyAlpha
* @property {?Number[]} size
* @property {?Number} unit
*/
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9UZXh0dXJlLmpzIl0sIm5hbWVzIjpbIlRleHR1cmUiLCJjb25zdHJ1Y3RvciIsInNyYyIsIm9wdGlvbnMiLCJfc3JjIiwiT2JqZWN0IiwiYXNzaWduIiwiZGVmYXVsdE9wdGlvbnMiLCJfZ2xDb250ZXh0IiwiZW5hYmxlIiwiZ2wiLCJpbmRleCIsInVuaXQiLCJ1bmRlZmluZWQiLCJhY3RpdmVUZXh0dXJlIiwiVEVYVFVSRTAiLCJfdGV4dHVyZSIsIl9wcmVwYXJlIiwiYmluZFRleHR1cmUiLCJURVhUVVJFXzJEIiwicmVtb3ZlIiwiZGVsZXRlVGV4dHVyZSIsImdldFRleHR1cmUiLCJjcmVhdGVUZXh0dXJlIiwicGl4ZWxTdG9yZWkiLCJVTlBBQ0tfRkxJUF9ZX1dFQkdMIiwiZmxpcFkiLCJVTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0wiLCJwcmVtdWx0aXBseUFscGhhIiwic2l6ZSIsInRleEltYWdlMkQiLCJfdG9HbFBhcmFtIiwiZm9ybWF0IiwiVU5TSUdORURfQllURSIsInRleFBhcmFtZXRlcmkiLCJURVhUVVJFX1dSQVBfUyIsIndyYXBTIiwiVEVYVFVSRV9XUkFQX1QiLCJ3cmFwVCIsIlRFWFRVUkVfTUFHX0ZJTFRFUiIsIm1hZ0ZpbHRlciIsIlRFWFRVUkVfTUlOX0ZJTFRFUiIsIm1pbkZpbHRlciIsImdlbmVyYXRlTWlwbWFwcyIsIk5lYXJlc3RGaWx0ZXIiLCJMaW5lYXJGaWx0ZXIiLCJnZW5lcmF0ZU1pcG1hcCIsInBhcmFtIiwiQ2xhbXBUb0VkZ2VXcmFwcGluZyIsIkNMQU1QX1RPX0VER0UiLCJSZXBlYXQiLCJSRVBFQVQiLCJNaXJyb3JlZFJlcGVhdCIsIk1JUlJPUkVEX1JFUEVBVCIsIk5FQVJFU1QiLCJOZWFyZXN0TWlwTWFwTmVhcmVzdEZpbHRlciIsIk5FQVJFU1RfTUlQTUFQX05FQVJFU1QiLCJOZWFyZXN0TWlwTWFwTGluZWFyRmlsdGVyIiwiTkVBUkVTVF9NSVBNQVBfTElORUFSIiwiTElORUFSIiwiTGluZWFyTWlwTWFwTmVhcmVzdEZpbHRlciIsIkxJTkVBUl9NSVBNQVBfTkVBUkVTVCIsIkxpbmVhck1pcE1hcExpbmVhckZpbHRlciIsIkxJTkVBUl9NSVBNQVBfTElORUFSIiwiUmdiYUZvcm1hdCIsIlJHQkEiLCJBbHBoYUZvcm1hdCIsIkFMUEhBIiwiUmdiRm9ybWF0IiwiUkdCIl0sIm1hcHBpbmdzIjoiQUFBQTs7OztBQUlBLE1BQU1BLE9BQU4sQ0FBYztBQUNWOzs7OztBQUtBQyxnQkFBWUMsR0FBWixFQUFpQkMsVUFBVSxFQUEzQixFQUErQjtBQUMzQixhQUFLQyxJQUFMLEdBQVlGLE9BQU8sSUFBbkI7O0FBRUE7Ozs7O0FBS0EsYUFBS0MsT0FBTCxHQUFlRSxPQUFPQyxNQUFQLENBQWMsRUFBZCxFQUFrQk4sUUFBUU8sY0FBMUIsRUFBMENKLE9BQTFDLENBQWY7O0FBRUE7Ozs7OztBQU1BLGFBQUtLLFVBQUwsR0FBa0IsSUFBbEI7QUFDSDs7QUFFRDs7Ozs7Ozs7QUFRQUMsV0FBT0MsRUFBUCxFQUFXQyxLQUFYLEVBQWtCO0FBQ2QsY0FBTUMsT0FBT0QsVUFBVUUsU0FBVixHQUFzQkYsS0FBdEIsR0FBOEIsS0FBS1IsT0FBTCxDQUFhUyxJQUF4RDs7QUFFQSxZQUFJQSxTQUFTQyxTQUFiLEVBQXdCO0FBQ3BCSCxlQUFHSSxhQUFILENBQWlCSixHQUFHSyxRQUFILEdBQWNILElBQS9CO0FBQ0g7O0FBRUQsWUFBSSxDQUFDLEtBQUtJLFFBQVYsRUFBb0I7QUFDaEIsaUJBQUtDLFFBQUwsQ0FBY1AsRUFBZDtBQUNIOztBQUVEQSxXQUFHUSxXQUFILENBQWVSLEdBQUdTLFVBQWxCLEVBQThCLEtBQUtILFFBQW5DOztBQUVBLGVBQU8sSUFBUDtBQUNIOztBQUVEOzs7QUFHQUksYUFBUztBQUNMLFlBQUksS0FBS0osUUFBVCxFQUFtQjtBQUNmLGlCQUFLUixVQUFMLENBQWdCYSxhQUFoQixDQUE4QixLQUFLTCxRQUFuQztBQUNBLGlCQUFLUixVQUFMLEdBQWtCLElBQWxCO0FBQ0EsaUJBQUtRLFFBQUwsR0FB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LENBQXhCO0FBQ0E1QyxRQUFRdUQsMEJBQVIsR0FBcUMsQ0FBckM7QUFDQXZELFFBQVF5RCx5QkFBUixHQUFvQyxDQUFwQztBQUNBekQsUUFBUTZDLFlBQVIsR0FBdUIsQ0FBdkI7QUFDQTdDLFFBQVE0RCx5QkFBUixHQUFvQyxDQUFwQztBQUNBNUQsUUFBUThELHdCQUFSLEdBQW1DLENBQW5DOztBQUVBOUQsUUFBUWdFLFVBQVIsR0FBcUIsRUFBckI7QUFDQWhFLFFBQVFrRSxXQUFSLEdBQXNCLEVBQXRCO0FBQ0FsRSxRQUFRb0UsU0FBUixHQUFvQixFQUFwQjs7QUFFQXBFLFFBQVFPLGNBQVIsR0FBeUI7QUFDckJpQyxlQUFXeEMsUUFBUTZDLFlBREU7QUFFckJILGVBQVcxQyxRQUFROEQsd0JBRkU7QUFHckIxQixXQUFPcEMsUUFBUWdELG1CQUhNO0FBSXJCVixXQUFPdEMsUUFBUWdELG1CQUpNO0FBS3JCaEIsWUFBUWhDLFFBQVFnRSxVQUxLO0FBTXJCckIscUJBQWlCLElBTkk7QUFPckJqQixXQUFPLElBUGM7QUFRckJFLHNCQUFrQjtBQVJHLENBQXpCOztBQVdBLGVBQWU1QixPQUFmOztBQUVBOzs7Ozs7QUFNQTs7OztBQUlBOzs7O0FBSUEiLCJmaWxlIjoiVGV4dHVyZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog0KLQtdC60YHRgtGD0YDRiyDQuNGB0L/QvtC70YzQt9GD0Y7RgtGB0Y8g0LTQu9GPINC+0YLRgNC40YHQvtCy0LrQuCDQuNC30L7QsdGA0LDQttC10L3QuNC5INCyIFdlYkdMXG4gKi9cblxuY2xhc3MgVGV4dHVyZSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtIVE1MSW1hZ2VFbGVtZW50IHwgSFRNTENhbnZhc0VsZW1lbnQgfCBJbWFnZUJpdG1hcCB8IEltYWdlRGF0YSB8IFR5cGVkQXJyYXl9IFtzcmM9bnVsbF0g0JIg0LrQsNGH0LXRgdGC0LLQtVxuICAgICAqINC40LfQvtCx0YDQsNC20LXQvdC40Y8g0LzQvtC20LXRgiDQsdGL0YLRjCDQu9C40LHQviDRjdC70LXQvNC10L3RgiBpbWcsINC70LjQsdC+IGNhbnZhc1xuICAgICAqIEBwYXJhbSB7P1RleHR1cmVPcHRpb25zfSBvcHRpb25zXG4gICAgICovXG4gICAgY29uc3RydWN0b3Ioc3JjLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5fc3JjID0gc3JjIHx8IG51bGw7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0YHQstGP0LfRi9Cy0LDQvdC40Y8g0YLQtdC60YHRgtGD0YDRi1xuICAgICAgICAgKiBAdHlwZSB7VGV4dHVyZU9wdGlvbnN9XG4gICAgICAgICAqIEByZWFkb25seVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgVGV4dHVyZS5kZWZhdWx0T3B0aW9ucywgb3B0aW9ucyk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCa0L7QvdGC0LXQutGB0YIgV2ViR0wsINCyINC60L7RgtC+0YDQvtC8INCx0YvQu9CwINC40L3QuNGG0LjQsNC70LjQt9C40YDQvtCy0LDQvdCwINGC0LXQutGB0YLRg9GA0LAuXG4gICAgICAgICAqINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDRgtC+0LvRjNC60L4g0LTQu9GPINGD0LTQsNC70LXQvdC40Y8sINC/0L7QtNGD0LzQsNGC0Ywg0YXQvtGA0L7RiNC+LCDQv9GA0LXQttC00LUg0YfQtdC8INC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDQtNC70Y8g0YfQtdCz0L4t0YLQviDQtdGJ0ZEuXG4gICAgICAgICAqIEB0eXBlIHs/V2ViR0xSZW5kZXJpbmdDb250ZXh0fVxuICAgICAgICAgKiBAaWdub3JlXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9nbENvbnRleHQgPSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0LLRj9C30YvQstCw0LXRgiBXZWJHTCDQuCDQtNCw0L3QvdGL0LUg0YLQtdC60YHRgtGD0YDRiy5cbiAgICAgKiDQn9GA0Lgg0L/QtdGA0LLQvtC8INCy0YvQt9C+0LIg0L/RgNC+0LjRgdGF0L7QtNC40YIg0LjQvdC40YbQuNCw0LvQuNC30LDRhtC40Y8uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1dlYkdMUmVuZGVyaW5nQ29udGV4dH0gZ2xcbiAgICAgKiBAcGFyYW0gez9OdW1iZXJ9IGluZGV4INCd0L7QvNC10YAg0YLQtdC60YHRgtGD0YDRiyDQsiDQutC+0L3RgtC10LrRgdGC0LUgV2ViR0wuXG4gICAgICog0JXRgdC70Lgg0LXQs9C+INC90LXRgiwg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINGD0LbQtSDQsNC60YLQuNCy0LjRgNC+0LLQsNC90L3Ri9C5INGO0L3QuNGCINGC0LXQutGB0YLRg9GA0YsuXG4gICAgICovXG4gICAgZW5hYmxlKGdsLCBpbmRleCkge1xuICAgICAgICBjb25zdCB1bml0ID0gaW5kZXggIT09IHVuZGVmaW5lZCA/IGluZGV4IDogdGhpcy5vcHRpb25zLnVuaXQ7XG5cbiAgICAgICAgaWYgKHVuaXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZ2wuYWN0aXZlVGV4dHVyZShnbC5URVhUVVJFMCArIHVuaXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl90ZXh0dXJlKSB7XG4gICAgICAgICAgICB0aGlzLl9wcmVwYXJlKGdsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGdsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRoaXMuX3RleHR1cmUpO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCINGC0LXQutGB0YLRg9GA0YMg0LjQtyDQstC40LTQtdC+0LrQsNGA0YLRi1xuICAgICAqL1xuICAgIHJlbW92ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3RleHR1cmUpIHtcbiAgICAgICAgICAgIHRoaXMuX2dsQ29udGV4dC5kZWxldGVUZXh0dXJlKHRoaXMuX3RleHR1cmUpO1xuICAgICAgICAgICAgdGhpcy5fZ2xDb250ZXh0ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX3RleHR1cmUgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIgV2ViR0wg0YLQtdC60YHRgtGD0YDRg1xuICAgICAqIEByZXR1cm4ge1dlYkdMVGV4dHVyZX1cbiAgICAgKi9cbiAgICBnZXRUZXh0dXJlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGV4dHVyZTtcbiAgICB9XG5cbiAgICBfcHJlcGFyZShnbCkge1xuICAgICAgICB0aGlzLl9nbENvbnRleHQgPSBnbDtcbiAgICAgICAgdGhpcy5fdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTtcblxuICAgICAgICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0aGlzLl90ZXh0dXJlKTtcbiAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX0ZMSVBfWV9XRUJHTCwgdGhpcy5vcHRpb25zLmZsaXBZKTtcbiAgICAgICAgZ2wucGl4ZWxTdG9yZWkoZ2wuVU5QQUNLX1BSRU1VTFRJUExZX0FMUEhBX1dFQkdMLCB0aGlzLm9wdGlvbnMucHJlbXVsdGlwbHlBbHBoYSk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaXplKSB7XG4gICAgICAgICAgICBnbC50ZXhJbWFnZTJEKFxuICAgICAgICAgICAgICAgIGdsLlRFWFRVUkVfMkQsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICB0aGlzLl90b0dsUGFyYW0oZ2wsIHRoaXMub3B0aW9ucy5mb3JtYXQpLFxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zaXplWzBdLFxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zaXplWzFdLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgdGhpcy5fdG9HbFBhcmFtKGdsLCB0aGlzLm9wdGlvbnMuZm9ybWF0KSxcbiAgICAgICAgICAgICAgICBnbC5VTlNJR05FRF9CWVRFLFxuICAgICAgICAgICAgICAgIHRoaXMuX3NyY1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdsLnRleEltYWdlMkQoXG4gICAgICAgICAgICAgICAgZ2wuVEVYVFVSRV8yRCxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIHRoaXMuX3RvR2xQYXJhbShnbCwgdGhpcy5vcHRpb25zLmZvcm1hdCksXG4gICAgICAgICAgICAgICAgdGhpcy5fdG9HbFBhcmFtKGdsLCB0aGlzLm9wdGlvbnMuZm9ybWF0KSxcbiAgICAgICAgICAgICAgICBnbC5VTlNJR05FRF9CWVRFLFxuICAgICAgICAgICAgICAgIHRoaXMuX3NyY1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MsIHRoaXMuX3RvR2xQYXJhbShnbCwgdGhpcy5vcHRpb25zLndyYXBTKSk7XG4gICAgICAgIGdsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIHRoaXMuX3RvR2xQYXJhbShnbCwgdGhpcy5vcHRpb25zLndyYXBUKSk7XG5cbiAgICAgICAgZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIHRoaXMuX3RvR2xQYXJhbShnbCwgdGhpcy5vcHRpb25zLm1hZ0ZpbHRlcikpO1xuICAgICAgICBnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgdGhpcy5fdG9HbFBhcmFtKGdsLCB0aGlzLm9wdGlvbnMubWluRmlsdGVyKSk7XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5nZW5lcmF0ZU1pcG1hcHMgJiZcbiAgICAgICAgICAgIHRoaXMubWluRmlsdGVyICE9PSBUZXh0dXJlLk5lYXJlc3RGaWx0ZXIgJiZcbiAgICAgICAgICAgIHRoaXMubWluRmlsdGVyICE9PSBUZXh0dXJlLkxpbmVhckZpbHRlclxuICAgICAgICApIHtcbiAgICAgICAgICAgIGdsLmdlbmVyYXRlTWlwbWFwKGdsLlRFWFRVUkVfMkQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7XG4gICAgfVxuXG4gICAgX3RvR2xQYXJhbShnbCwgcGFyYW0pIHtcbiAgICAgICAgaWYgKHBhcmFtID09PSBUZXh0dXJlLkNsYW1wVG9FZGdlV3JhcHBpbmcpIHsgcmV0dXJuIGdsLkNMQU1QX1RPX0VER0U7IH1cbiAgICAgICAgaWYgKHBhcmFtID09PSBUZXh0dXJlLlJlcGVhdCkgeyByZXR1cm4gZ2wuUkVQRUFUOyB9XG4gICAgICAgIGlmIChwYXJhbSA9PT0gVGV4dHVyZS5NaXJyb3JlZFJlcGVhdCkgeyByZXR1cm4gZ2wuTUlSUk9SRURfUkVQRUFUOyB9XG5cbiAgICAgICAgaWYgKHBhcmFtID09PSBUZXh0dXJlLk5lYXJlc3RGaWx0ZXIpIHsgcmV0dXJuIGdsLk5FQVJFU1Q7IH1cbiAgICAgICAgaWYgKHBhcmFtID09PSBUZXh0dXJlLk5lYXJlc3RNaXBNYXBOZWFyZXN0RmlsdGVyKSB7IHJldHVybiBnbC5ORUFSRVNUX01JUE1BUF9ORUFSRVNUOyB9XG4gICAgICAgIGlmIChwYXJhbSA9PT0gVGV4dHVyZS5OZWFyZXN0TWlwTWFwTGluZWFyRmlsdGVyKSB7IHJldHVybiBnbC5ORUFSRVNUX01JUE1BUF9MSU5FQVI7IH1cblxuICAgICAgICBpZiAocGFyYW0gPT09IFRleHR1cmUuTGluZWFyRmlsdGVyKSB7IHJldHVybiBnbC5MSU5FQVI7IH1cbiAgICAgICAgaWYgKHBhcmFtID09PSBUZXh0dXJlLkxpbmVhck1pcE1hcE5lYXJlc3RGaWx0ZXIpIHsgcmV0dXJuIGdsLkxJTkVBUl9NSVBNQVBfTkVBUkVTVDsgfVxuICAgICAgICBpZiAocGFyYW0gPT09IFRleHR1cmUuTGluZWFyTWlwTWFwTGluZWFyRmlsdGVyKSB7IHJldHVybiBnbC5MSU5FQVJfTUlQTUFQX0xJTkVBUjsgfVxuICAgICAgICBpZiAocGFyYW0gPT09IFRleHR1cmUuUmdiYUZvcm1hdCkgeyByZXR1cm4gZ2wuUkdCQTsgfVxuICAgICAgICBpZiAocGFyYW0gPT09IFRleHR1cmUuQWxwaGFGb3JtYXQpIHsgcmV0dXJuIGdsLkFMUEhBOyB9XG4gICAgICAgIGlmIChwYXJhbSA9PT0gVGV4dHVyZS5SZ2JGb3JtYXQpIHsgcmV0dXJuIGdsLlJHQjsgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5cblRleHR1cmUuQ2xhbXBUb0VkZ2VXcmFwcGluZyA9IDg7XG5UZXh0dXJlLlJlcGVhdCA9IDk7XG5UZXh0dXJlLk1pcnJvcmVkUmVwZWF0ID0gMTA7XG5cblRleHR1cmUuTmVhcmVzdEZpbHRlciA9IDE7XG5UZXh0dXJlLk5lYXJlc3RNaXBNYXBOZWFyZXN0RmlsdGVyID0gMjtcblRleHR1cmUuTmVhcmVzdE1pcE1hcExpbmVhckZpbHRlciA9IDM7XG5UZXh0dXJlLkxpbmVhckZpbHRlciA9IDQ7XG5UZXh0dXJlLkxpbmVhck1pcE1hcE5lYXJlc3RGaWx0ZXIgPSA1O1xuVGV4dHVyZS5MaW5lYXJNaXBNYXBMaW5lYXJGaWx0ZXIgPSA2O1xuXG5UZXh0dXJlLlJnYmFGb3JtYXQgPSAxMTtcblRleHR1cmUuQWxwaGFGb3JtYXQgPSAxMjtcblRleHR1cmUuUmdiRm9ybWF0ID0gMTM7XG5cblRleHR1cmUuZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgbWFnRmlsdGVyOiBUZXh0dXJlLkxpbmVhckZpbHRlcixcbiAgICBtaW5GaWx0ZXI6IFRleHR1cmUuTGluZWFyTWlwTWFwTGluZWFyRmlsdGVyLFxuICAgIHdyYXBTOiBUZXh0dXJlLkNsYW1wVG9FZGdlV3JhcHBpbmcsXG4gICAgd3JhcFQ6IFRleHR1cmUuQ2xhbXBUb0VkZ2VXcmFwcGluZyxcbiAgICBmb3JtYXQ6IFRleHR1cmUuUmdiYUZvcm1hdCxcbiAgICBnZW5lcmF0ZU1pcG1hcHM6IHRydWUsXG4gICAgZmxpcFk6IHRydWUsXG4gICAgcHJlbXVsdGlwbHlBbHBoYTogdHJ1ZSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRleHR1cmU7XG5cbi8qKlxuICogQHR5cGVkZWYge1RleHR1cmUuTmVhcmVzdEZpbHRlciB8IFRleHR1cmUuTmVhcmVzdE1pcE1hcE5lYXJlc3RGaWx0ZXIgfFxuICogVGV4dHVyZS5OZWFyZXN0TWlwTWFwTGluZWFyRmlsdGVyIHwgVGV4dHVyZS5MaW5lYXJGaWx0ZXIgfFxuICogVGV4dHVyZS5MaW5lYXJNaXBNYXBOZWFyZXN0RmlsdGVyIHwgVGV4dHVyZS5MaW5lYXJNaXBNYXBMaW5lYXJGaWx0ZXJ9IFRleHR1cmVGaWx0ZXJcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtUZXh0dXJlLkNsYW1wVG9FZGdlV3JhcHBpbmd9IFRleHR1cmVDbGFtcFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge1RleHR1cmUuUmdiYUZvcm1hdCB8IFRleHR1cmUuQWxwaGFGb3JtYXR9IFRleHR1cmVGb3JtYXRcbiAqL1xuXG4vKipcbiAqINCf0LDRgNCw0LzQtdGC0YDRiyDRgdCy0Y/Qt9GL0LLQsNC90LjRjyDRgtC10LrRgdGC0YPRgNGLXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gVGV4dHVyZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7VGV4dHVyZUZpbHRlcn0gbWFnRmlsdGVyXG4gKiBAcHJvcGVydHkge1RleHR1cmVGaWx0ZXJ9IG1pbkZpbHRlclxuICogQHByb3BlcnR5IHtUZXh0dXJlQ2xhbXB9IHdyYXBTXG4gKiBAcHJvcGVydHkge1RleHR1cmVDbGFtcH0gd3JhcFRcbiAqIEBwcm9wZXJ0eSB7VGV4dHVyZUZvcm1hdH0gZm9ybWF0XG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGdlbmVyYXRlTWlwbWFwc1xuICogQHByb3BlcnR5IHtCb29sZWFufSBmbGlwWVxuICogQHByb3BlcnR5IHtCb29sZWFufSBwcmVtdWx0aXBseUFscGhhXG4gKiBAcHJvcGVydHkgez9OdW1iZXJbXX0gc2l6ZVxuICogQHByb3BlcnR5IHs/TnVtYmVyfSB1bml0XG4gKi9cbiJdfQ==

@@ -45,10 +45,6 @@ /**

* стандартный подход для связывания атрибутов через {@link ShaderProgram#bind}.
*
* @param {State} state Стейт рендерера
*/
unbind(state) {
const ext = state.extensions.OES_vertex_array_object;
if (ext) {
ext.bindVertexArrayOES(null);
unbind() {
if (this._ext) {
this._ext.bindVertexArrayOES(null);
}

@@ -99,2 +95,2 @@

export default Vao;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9WYW8uanMiXSwibmFtZXMiOlsiVmFvIiwiY29uc3RydWN0b3IiLCJzaGFkZXJQcm9ncmFtIiwiYXR0cmlidXRlcyIsIl92YW8iLCJfYXR0cmlidXRlcyIsIl9zaGFkZXJQcm9ncmFtIiwiX2V4dCIsImJpbmQiLCJzdGF0ZSIsImV4dCIsImV4dGVuc2lvbnMiLCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIsIl9iaW5kIiwiZ2wiLCJ1bmJpbmQiLCJiaW5kVmVydGV4QXJyYXlPRVMiLCJyZW1vdmUiLCJkZWxldGVWZXJ0ZXhBcnJheU9FUyIsIl9wcmVwYXJlIiwiY3JlYXRlVmVydGV4QXJyYXlPRVMiLCJzaGFkZXJBdHRyaWJ1dGVzIiwibmFtZSIsInNoYWRlckF0dHJpYnV0ZSIsImluZGV4IiwiZW5hYmxlVmVydGV4QXR0cmliQXJyYXkiLCJsb2NhdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7OztBQVNBLE1BQU1BLEdBQU4sQ0FBVTtBQUNOQyxnQkFBWUMsYUFBWixFQUEyQkMsYUFBYSxFQUF4QyxFQUE0QztBQUN4QyxhQUFLQyxJQUFMLEdBQVksSUFBWjtBQUNBLGFBQUtDLFdBQUwsR0FBbUJGLFVBQW5CO0FBQ0EsYUFBS0csY0FBTCxHQUFzQkosYUFBdEI7O0FBRUE7Ozs7QUFJQSxhQUFLSyxJQUFMLEdBQVksSUFBWjtBQUNIOztBQUVEOzs7OztBQUtBQyxTQUFLQyxLQUFMLEVBQVk7QUFDUixjQUFNQyxNQUFNRCxNQUFNRSxVQUFOLENBQWlCQyx1QkFBN0I7O0FBRUEsWUFBSUYsR0FBSixFQUFTO0FBQ0wsaUJBQUtHLEtBQUwsQ0FBV0osTUFBTUssRUFBakIsRUFBcUJKLEdBQXJCO0FBQ0gsU0FGRCxNQUVPO0FBQ0g7QUFDQSxpQkFBS0osY0FBTCxDQUFvQkUsSUFBcEIsQ0FBeUJDLE1BQU1LLEVBQS9CLEVBQW1DLElBQW5DLEVBQXlDLEtBQUtULFdBQTlDO0FBQ0g7O0FBRUQsZUFBTyxJQUFQO0FBQ0g7O0FBRUQ7Ozs7Ozs7QUFPQVUsV0FBT04sS0FBUCxFQUFjO0FBQ1YsY0FBTUMsTUFBTUQsTUFBTUUsVUFBTixDQUFpQkMsdUJBQTdCOztBQUVBLFlBQUlGLEdBQUosRUFBUztBQUNMQSxnQkFBSU0sa0JBQUosQ0FBdUIsSUFBdkI7QUFDSDs7QUFFRCxlQUFPLElBQVA7QUFDSDs7QUFFRDs7O0FBR0FDLGFBQVM7QUFDTCxZQUFJLEtBQUtiLElBQVQsRUFBZTtBQUNYLGlCQUFLRyxJQUFMLENBQVVXLG9CQUFWLENBQStCLEtBQUtkLElBQXBDO0FBQ0g7O0FBRUQsZUFBTyxJQUFQO0FBQ0g7O0FBRURTLFVBQU1DLEVBQU4sRUFBVUosR0FBVixFQUFlO0FBQ1gsWUFBSSxDQUFDLEtBQUtOLElBQVYsRUFBZ0I7QUFDWixpQkFBS2UsUUFBTCxDQUFjTCxFQUFkLEVBQWtCSixHQUFsQjtBQUNILFNBRkQsTUFFTztBQUNIQSxnQkFBSU0sa0JBQUosQ0FBdUIsS0FBS1osSUFBNUI7QUFDSDtBQUNKOztBQUVEZSxhQUFTTCxFQUFULEVBQWFKLEdBQWIsRUFBa0I7QUFDZCxhQUFLSCxJQUFMLEdBQVlHLEdBQVo7QUFDQSxhQUFLTixJQUFMLEdBQVlNLElBQUlVLG9CQUFKLEVBQVo7O0FBRUFWLFlBQUlNLGtCQUFKLENBQXVCLEtBQUtaLElBQTVCOztBQUVBLGNBQU1pQixtQkFBbUIsS0FBS2YsY0FBTCxDQUFvQkgsVUFBN0M7QUFDQSxjQUFNQSxhQUFhLEtBQUtFLFdBQXhCOztBQUVBO0FBQ0EsYUFBSyxNQUFNaUIsSUFBWCxJQUFtQm5CLFVBQW5CLEVBQStCO0FBQzNCLGtCQUFNb0Isa0JBQWtCRixpQkFBaUJDLElBQWpCLENBQXhCO0FBQ0EsZ0JBQUlDLGdCQUFnQkMsS0FBaEIsS0FBMEIsSUFBOUIsRUFBb0M7QUFDaENWLG1CQUFHVyx1QkFBSCxDQUEyQkYsZ0JBQWdCRyxRQUEzQztBQUNIO0FBQ0R2Qix1QkFBV21CLElBQVgsRUFBaUJkLElBQWpCLENBQXNCTSxFQUF0QixFQUEwQlMsZ0JBQWdCRyxRQUExQztBQUNIO0FBQ0o7QUFwRks7O0FBdUZWLGVBQWUxQixHQUFmIiwiZmlsZSI6IlZhby5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog0J7QsdC10YDRgtC60LAg0L3QsNC0IHZlcnRleCBhcnJheSBvYmplY3QuXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9ydS9kb2NzL1dlYi9BUEkvT0VTX3ZlcnRleF9hcnJheV9vYmplY3RcbiAqXG4gKiDQlNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0L3QtdC+0LHRhdC+0LTQuNC80L4g0LLQutC70Y7Rh9C40YLRjCDRgNCw0YHRiNC40YDQtdC90LjQtSByZW5kZXJlci5hZGRFeHRlbnNpb24oJ09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0JylcbiAqXG4gKiBAcGFyYW0ge1NoYWRlclByb2dyYW19INCo0LXQudC00LXRgNC90LDRjyDQv9GA0L7Qs9GA0LDQvNC80LAsINC60LDQttC00YvQuSBWYW8g0L/RgNC40LLRj9C30LDQvSDQuiDQvtC00L3QvtC5INGI0LXQudC00LXRgNC90L7QuSDQv9GA0L7Qs9GA0LDQvNC80LUuXG4gKiBAcGFyYW0ge09iamVjdH0gS2V5LXZhbHVlINC+0LHRitC10LrRgiDRgdC+0LTQtdGA0LbQsNGJ0LjQuSDQtNCw0L3QvdGL0LUg0LDRgtGA0LjQsdGD0YLQvtCyLlxuICovXG5jbGFzcyBWYW8ge1xuICAgIGNvbnN0cnVjdG9yKHNoYWRlclByb2dyYW0sIGF0dHJpYnV0ZXMgPSB7fSkge1xuICAgICAgICB0aGlzLl92YW8gPSBudWxsO1xuICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzID0gYXR0cmlidXRlcztcbiAgICAgICAgdGhpcy5fc2hhZGVyUHJvZ3JhbSA9IHNoYWRlclByb2dyYW07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdlYkdMINGN0LrRgdGC0LXQvdGI0LXQvSwg0LIg0LrQvtGC0L7RgNC+0Lwg0LHRi9C7INC40L3QuNGG0LjQsNC70LjQt9C40YDQvtCy0LDQvSDQsdGD0YTQtdGALlxuICAgICAgICAgKiDQmNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0YLQvtC70YzQutC+INC00LvRjyDRg9C00LDQu9C10L3QuNGPIHZhbywg0L/QvtC00YPQvNCw0YLRjCDRhdC+0YDQvtGI0L4sINC/0YDQtdC20LTQtSDRh9C10Lwg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINC00LvRjyDRh9C10LPQvi3RgtC+INC10YnRkS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2V4dCA9IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQstGP0LfRi9Cy0LDQtdGCIHZhbyDRgSDQutC+0L3RgtC10LrRgdGC0L7QvCBXZWJHTC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U3RhdGV9INCh0YLQtdC50YIg0YDQtdC90LTQtdGA0LBcbiAgICAgKi9cbiAgICBiaW5kKHN0YXRlKSB7XG4gICAgICAgIGNvbnN0IGV4dCA9IHN0YXRlLmV4dGVuc2lvbnMuT0VTX3ZlcnRleF9hcnJheV9vYmplY3Q7XG5cbiAgICAgICAgaWYgKGV4dCkge1xuICAgICAgICAgICAgdGhpcy5fYmluZChzdGF0ZS5nbCwgZXh0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vINCSINGB0LvRg9GH0LDQtSDRhNC+0LvQu9Cx0LXQutCwIC0g0LHQuNC90LTQuNC8INCw0YLRgNC40LHRg9GC0Ysg0L/RgNGP0LzQviDQuNC3INGI0LXQudC00LXRgNC90L7QuSDQv9GA0L7Qs9GA0LDQvNC80YtcbiAgICAgICAgICAgIHRoaXMuX3NoYWRlclByb2dyYW0uYmluZChzdGF0ZS5nbCwgbnVsbCwgdGhpcy5fYXR0cmlidXRlcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntGC0LLRj9C30YvQstCw0LXRgiB2YW8g0L7RgiDQutC+0L3RgtC10LrRgdGC0LAgV2ViR0wuXG4gICAgICog0JLQndCY0JzQkNCd0JjQlTog0K3RgtC+0YIg0LzQtdGC0L7QtCDQvdGD0LbQvdC+INCy0YvQt9GL0LLQsNGC0Ywg0LLRgdC10LPQtNCwLCDQv9C10YDQtdC0INGC0LXQvCDQutCw0Log0LHRg9C00LXRgiDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0YzRgdGPXG4gICAgICog0YHRgtCw0L3QtNCw0YDRgtC90YvQuSDQv9C+0LTRhdC+0LQg0LTQu9GPINGB0LLRj9C30YvQstCw0L3QuNGPINCw0YLRgNC40LHRg9GC0L7QsiDRh9C10YDQtdC3IHtAbGluayBTaGFkZXJQcm9ncmFtI2JpbmR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtTdGF0ZX0gc3RhdGUg0KHRgtC10LnRgiDRgNC10L3QtNC10YDQtdGA0LBcbiAgICAgKi9cbiAgICB1bmJpbmQoc3RhdGUpIHtcbiAgICAgICAgY29uc3QgZXh0ID0gc3RhdGUuZXh0ZW5zaW9ucy5PRVNfdmVydGV4X2FycmF5X29iamVjdDtcblxuICAgICAgICBpZiAoZXh0KSB7XG4gICAgICAgICAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIgdmFvLlxuICAgICAqL1xuICAgIHJlbW92ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3Zhbykge1xuICAgICAgICAgICAgdGhpcy5fZXh0LmRlbGV0ZVZlcnRleEFycmF5T0VTKHRoaXMuX3Zhbyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBfYmluZChnbCwgZXh0KSB7XG4gICAgICAgIGlmICghdGhpcy5fdmFvKSB7XG4gICAgICAgICAgICB0aGlzLl9wcmVwYXJlKGdsLCBleHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXh0LmJpbmRWZXJ0ZXhBcnJheU9FUyh0aGlzLl92YW8pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX3ByZXBhcmUoZ2wsIGV4dCkge1xuICAgICAgICB0aGlzLl9leHQgPSBleHQ7XG4gICAgICAgIHRoaXMuX3ZhbyA9IGV4dC5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpO1xuXG4gICAgICAgIGV4dC5iaW5kVmVydGV4QXJyYXlPRVModGhpcy5fdmFvKTtcblxuICAgICAgICBjb25zdCBzaGFkZXJBdHRyaWJ1dGVzID0gdGhpcy5fc2hhZGVyUHJvZ3JhbS5hdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gdGhpcy5fYXR0cmlidXRlcztcblxuICAgICAgICAvLyDQkdC40L3QtNC40Lwg0LDRgtGA0LjQsdGD0YLRiyDQv9C10YDQtdC00LDQvdC90YvQtSDQsiDQutC+0L3RgdGC0YDRg9C60YLQvtGALCDQuNGFINC/0LDRgNCw0LzQtdGC0YDRiyDQsdC10YDRkdC8INC40Lcg0YjQtdC50LTQtdGA0L3QvtC5INC/0YDQvtCz0YDQsNC80LzRi1xuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgaW4gYXR0cmlidXRlcykge1xuICAgICAgICAgICAgY29uc3Qgc2hhZGVyQXR0cmlidXRlID0gc2hhZGVyQXR0cmlidXRlc1tuYW1lXTtcbiAgICAgICAgICAgIGlmIChzaGFkZXJBdHRyaWJ1dGUuaW5kZXggIT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShzaGFkZXJBdHRyaWJ1dGUubG9jYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXR0cmlidXRlc1tuYW1lXS5iaW5kKGdsLCBzaGFkZXJBdHRyaWJ1dGUubG9jYXRpb24pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBWYW87XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9WYW8uanMiXSwibmFtZXMiOlsiVmFvIiwiY29uc3RydWN0b3IiLCJzaGFkZXJQcm9ncmFtIiwiYXR0cmlidXRlcyIsIl92YW8iLCJfYXR0cmlidXRlcyIsIl9zaGFkZXJQcm9ncmFtIiwiX2V4dCIsImJpbmQiLCJzdGF0ZSIsImV4dCIsImV4dGVuc2lvbnMiLCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIsIl9iaW5kIiwiZ2wiLCJ1bmJpbmQiLCJiaW5kVmVydGV4QXJyYXlPRVMiLCJyZW1vdmUiLCJkZWxldGVWZXJ0ZXhBcnJheU9FUyIsIl9wcmVwYXJlIiwiY3JlYXRlVmVydGV4QXJyYXlPRVMiLCJzaGFkZXJBdHRyaWJ1dGVzIiwibmFtZSIsInNoYWRlckF0dHJpYnV0ZSIsImluZGV4IiwiZW5hYmxlVmVydGV4QXR0cmliQXJyYXkiLCJsb2NhdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7OztBQVNBLE1BQU1BLEdBQU4sQ0FBVTtBQUNOQyxnQkFBWUMsYUFBWixFQUEyQkMsYUFBYSxFQUF4QyxFQUE0QztBQUN4QyxhQUFLQyxJQUFMLEdBQVksSUFBWjtBQUNBLGFBQUtDLFdBQUwsR0FBbUJGLFVBQW5CO0FBQ0EsYUFBS0csY0FBTCxHQUFzQkosYUFBdEI7O0FBRUE7Ozs7QUFJQSxhQUFLSyxJQUFMLEdBQVksSUFBWjtBQUNIOztBQUVEOzs7OztBQUtBQyxTQUFLQyxLQUFMLEVBQVk7QUFDUixjQUFNQyxNQUFNRCxNQUFNRSxVQUFOLENBQWlCQyx1QkFBN0I7O0FBRUEsWUFBSUYsR0FBSixFQUFTO0FBQ0wsaUJBQUtHLEtBQUwsQ0FBV0osTUFBTUssRUFBakIsRUFBcUJKLEdBQXJCO0FBQ0gsU0FGRCxNQUVPO0FBQ0g7QUFDQSxpQkFBS0osY0FBTCxDQUFvQkUsSUFBcEIsQ0FBeUJDLE1BQU1LLEVBQS9CLEVBQW1DLElBQW5DLEVBQXlDLEtBQUtULFdBQTlDO0FBQ0g7O0FBRUQsZUFBTyxJQUFQO0FBQ0g7O0FBRUQ7Ozs7O0FBS0FVLGFBQVM7QUFDTCxZQUFJLEtBQUtSLElBQVQsRUFBZTtBQUNYLGlCQUFLQSxJQUFMLENBQVVTLGtCQUFWLENBQTZCLElBQTdCO0FBQ0g7O0FBRUQsZUFBTyxJQUFQO0FBQ0g7O0FBRUQ7OztBQUdBQyxhQUFTO0FBQ0wsWUFBSSxLQUFLYixJQUFULEVBQWU7QUFDWCxpQkFBS0csSUFBTCxDQUFVVyxvQkFBVixDQUErQixLQUFLZCxJQUFwQztBQUNIOztBQUVELGVBQU8sSUFBUDtBQUNIOztBQUVEUyxVQUFNQyxFQUFOLEVBQVVKLEdBQVYsRUFBZTtBQUNYLFlBQUksQ0FBQyxLQUFLTixJQUFWLEVBQWdCO0FBQ1osaUJBQUtlLFFBQUwsQ0FBY0wsRUFBZCxFQUFrQkosR0FBbEI7QUFDSCxTQUZELE1BRU87QUFDSEEsZ0JBQUlNLGtCQUFKLENBQXVCLEtBQUtaLElBQTVCO0FBQ0g7QUFDSjs7QUFFRGUsYUFBU0wsRUFBVCxFQUFhSixHQUFiLEVBQWtCO0FBQ2QsYUFBS0gsSUFBTCxHQUFZRyxHQUFaO0FBQ0EsYUFBS04sSUFBTCxHQUFZTSxJQUFJVSxvQkFBSixFQUFaOztBQUVBVixZQUFJTSxrQkFBSixDQUF1QixLQUFLWixJQUE1Qjs7QUFFQSxjQUFNaUIsbUJBQW1CLEtBQUtmLGNBQUwsQ0FBb0JILFVBQTdDO0FBQ0EsY0FBTUEsYUFBYSxLQUFLRSxXQUF4Qjs7QUFFQTtBQUNBLGFBQUssTUFBTWlCLElBQVgsSUFBbUJuQixVQUFuQixFQUErQjtBQUMzQixrQkFBTW9CLGtCQUFrQkYsaUJBQWlCQyxJQUFqQixDQUF4QjtBQUNBLGdCQUFJQyxnQkFBZ0JDLEtBQWhCLEtBQTBCLElBQTlCLEVBQW9DO0FBQ2hDVixtQkFBR1csdUJBQUgsQ0FBMkJGLGdCQUFnQkcsUUFBM0M7QUFDSDtBQUNEdkIsdUJBQVdtQixJQUFYLEVBQWlCZCxJQUFqQixDQUFzQk0sRUFBdEIsRUFBMEJTLGdCQUFnQkcsUUFBMUM7QUFDSDtBQUNKO0FBaEZLOztBQW1GVixlQUFlMUIsR0FBZiIsImZpbGUiOiJWYW8uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqINCe0LHQtdGA0YLQutCwINC90LDQtCB2ZXJ0ZXggYXJyYXkgb2JqZWN0LlxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvcnUvZG9jcy9XZWIvQVBJL09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0XG4gKlxuICog0JTQu9GPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINC90LXQvtCx0YXQvtC00LjQvNC+INCy0LrQu9GO0YfQuNGC0Ywg0YDQsNGB0YjQuNGA0LXQvdC40LUgcmVuZGVyZXIuYWRkRXh0ZW5zaW9uKCdPRVNfdmVydGV4X2FycmF5X29iamVjdCcpXG4gKlxuICogQHBhcmFtIHtTaGFkZXJQcm9ncmFtfSDQqNC10LnQtNC10YDQvdCw0Y8g0L/RgNC+0LPRgNCw0LzQvNCwLCDQutCw0LbQtNGL0LkgVmFvINC/0YDQuNCy0Y/Qt9Cw0L0g0Log0L7QtNC90L7QuSDRiNC10LnQtNC10YDQvdC+0Lkg0L/RgNC+0LPRgNCw0LzQvNC1LlxuICogQHBhcmFtIHtPYmplY3R9IEtleS12YWx1ZSDQvtCx0YrQtdC60YIg0YHQvtC00LXRgNC20LDRidC40Lkg0LTQsNC90L3Ri9C1INCw0YLRgNC40LHRg9GC0L7Qsi5cbiAqL1xuY2xhc3MgVmFvIHtcbiAgICBjb25zdHJ1Y3RvcihzaGFkZXJQcm9ncmFtLCBhdHRyaWJ1dGVzID0ge30pIHtcbiAgICAgICAgdGhpcy5fdmFvID0gbnVsbDtcbiAgICAgICAgdGhpcy5fYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7XG4gICAgICAgIHRoaXMuX3NoYWRlclByb2dyYW0gPSBzaGFkZXJQcm9ncmFtO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXZWJHTCDRjdC60YHRgtC10L3RiNC10L0sINCyINC60L7RgtC+0YDQvtC8INCx0YvQuyDQuNC90LjRhtC40LDQu9C40LfQuNGA0L7QstCw0L0g0LHRg9GE0LXRgC5cbiAgICAgICAgICog0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINGC0L7Qu9GM0LrQviDQtNC70Y8g0YPQtNCw0LvQtdC90LjRjyB2YW8sINC/0L7QtNGD0LzQsNGC0Ywg0YXQvtGA0L7RiNC+LCDQv9GA0LXQttC00LUg0YfQtdC8INC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDQtNC70Y8g0YfQtdCz0L4t0YLQviDQtdGJ0ZEuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9leHQgPSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCh0LLRj9C30YvQstCw0LXRgiB2YW8g0YEg0LrQvtC90YLQtdC60YHRgtC+0LwgV2ViR0wuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1N0YXRlfSDQodGC0LXQudGCINGA0LXQvdC00LXRgNCwXG4gICAgICovXG4gICAgYmluZChzdGF0ZSkge1xuICAgICAgICBjb25zdCBleHQgPSBzdGF0ZS5leHRlbnNpb25zLk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0O1xuXG4gICAgICAgIGlmIChleHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2JpbmQoc3RhdGUuZ2wsIGV4dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyDQkiDRgdC70YPRh9Cw0LUg0YTQvtC70LvQsdC10LrQsCAtINCx0LjQvdC00LjQvCDQsNGC0YDQuNCx0YPRgtGLINC/0YDRj9C80L4g0LjQtyDRiNC10LnQtNC10YDQvdC+0Lkg0L/RgNC+0LPRgNCw0LzQvNGLXG4gICAgICAgICAgICB0aGlzLl9zaGFkZXJQcm9ncmFtLmJpbmQoc3RhdGUuZ2wsIG51bGwsIHRoaXMuX2F0dHJpYnV0ZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J7RgtCy0Y/Qt9GL0LLQsNC10YIgdmFvINC+0YIg0LrQvtC90YLQtdC60YHRgtCwIFdlYkdMLlxuICAgICAqINCS0J3QmNCc0JDQndCY0JU6INCt0YLQvtGCINC80LXRgtC+0LQg0L3Rg9C20L3QviDQstGL0LfRi9Cy0LDRgtGMINCy0YHQtdCz0LTQsCwg0L/QtdGA0LXQtCDRgtC10Lwg0LrQsNC6INCx0YPQtNC10YIg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGM0YHRj1xuICAgICAqINGB0YLQsNC90LTQsNGA0YLQvdGL0Lkg0L/QvtC00YXQvtC0INC00LvRjyDRgdCy0Y/Qt9GL0LLQsNC90LjRjyDQsNGC0YDQuNCx0YPRgtC+0LIg0YfQtdGA0LXQtyB7QGxpbmsgU2hhZGVyUHJvZ3JhbSNiaW5kfS5cbiAgICAgKi9cbiAgICB1bmJpbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLl9leHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2V4dC5iaW5kVmVydGV4QXJyYXlPRVMobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GP0LXRgiB2YW8uXG4gICAgICovXG4gICAgcmVtb3ZlKCkge1xuICAgICAgICBpZiAodGhpcy5fdmFvKSB7XG4gICAgICAgICAgICB0aGlzLl9leHQuZGVsZXRlVmVydGV4QXJyYXlPRVModGhpcy5fdmFvKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIF9iaW5kKGdsLCBleHQpIHtcbiAgICAgICAgaWYgKCF0aGlzLl92YW8pIHtcbiAgICAgICAgICAgIHRoaXMuX3ByZXBhcmUoZ2wsIGV4dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBleHQuYmluZFZlcnRleEFycmF5T0VTKHRoaXMuX3Zhbyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfcHJlcGFyZShnbCwgZXh0KSB7XG4gICAgICAgIHRoaXMuX2V4dCA9IGV4dDtcbiAgICAgICAgdGhpcy5fdmFvID0gZXh0LmNyZWF0ZVZlcnRleEFycmF5T0VTKCk7XG5cbiAgICAgICAgZXh0LmJpbmRWZXJ0ZXhBcnJheU9FUyh0aGlzLl92YW8pO1xuXG4gICAgICAgIGNvbnN0IHNoYWRlckF0dHJpYnV0ZXMgPSB0aGlzLl9zaGFkZXJQcm9ncmFtLmF0dHJpYnV0ZXM7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzO1xuXG4gICAgICAgIC8vINCR0LjQvdC00LjQvCDQsNGC0YDQuNCx0YPRgtGLINC/0LXRgNC10LTQsNC90L3Ri9C1INCyINC60L7QvdGB0YLRgNGD0LrRgtC+0YAsINC40YUg0L/QsNGA0LDQvNC10YLRgNGLINCx0LXRgNGR0Lwg0LjQtyDRiNC10LnQtNC10YDQvdC+0Lkg0L/RgNC+0LPRgNCw0LzQvNGLXG4gICAgICAgIGZvciAoY29uc3QgbmFtZSBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBjb25zdCBzaGFkZXJBdHRyaWJ1dGUgPSBzaGFkZXJBdHRyaWJ1dGVzW25hbWVdO1xuICAgICAgICAgICAgaWYgKHNoYWRlckF0dHJpYnV0ZS5pbmRleCAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHNoYWRlckF0dHJpYnV0ZS5sb2NhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhdHRyaWJ1dGVzW25hbWVdLmJpbmQoZ2wsIHNoYWRlckF0dHJpYnV0ZS5sb2NhdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFZhbztcbiJdfQ==

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc