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

2gl

Package Overview
Dependencies
Maintainers
1
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.1.0 to 0.2.0

materials/BasicMeshMaterial.js

26

index.js

@@ -31,17 +31,17 @@ 'use strict';

var _BasicMeshProgram = require('./programs/BasicMeshProgram');
var _BasicMeshMaterial = require('./materials/BasicMeshMaterial');
var _BasicMeshProgram2 = _interopRequireDefault(_BasicMeshProgram);
var _BasicMeshMaterial2 = _interopRequireDefault(_BasicMeshMaterial);
var _ComplexMeshProgram = require('./programs/ComplexMeshProgram');
var _ComplexMeshMaterial = require('./materials/ComplexMeshMaterial');
var _ComplexMeshProgram2 = _interopRequireDefault(_ComplexMeshProgram);
var _ComplexMeshMaterial2 = _interopRequireDefault(_ComplexMeshMaterial);
var _SpriteProgram = require('./programs/SpriteProgram');
var _SpriteMaterial = require('./materials/SpriteMaterial');
var _SpriteProgram2 = _interopRequireDefault(_SpriteProgram);
var _SpriteMaterial2 = _interopRequireDefault(_SpriteMaterial);
var _MultiSpriteProgram = require('./programs/MultiSpriteProgram');
var _MultiSpriteMaterial = require('./materials/MultiSpriteMaterial');
var _MultiSpriteProgram2 = _interopRequireDefault(_MultiSpriteProgram);
var _MultiSpriteMaterial2 = _interopRequireDefault(_MultiSpriteMaterial);

@@ -128,6 +128,6 @@ var _Mesh = require('./Mesh');

ShaderProgram: _ShaderProgram2.default,
BasicMeshProgram: _BasicMeshProgram2.default,
ComplexMeshProgram: _ComplexMeshProgram2.default,
SpriteProgram: _SpriteProgram2.default,
MultiSpriteProgram: _MultiSpriteProgram2.default,
BasicMeshMaterial: _BasicMeshMaterial2.default,
ComplexMeshMaterial: _ComplexMeshMaterial2.default,
SpriteMaterial: _SpriteMaterial2.default,
MultiSpriteMaterial: _MultiSpriteMaterial2.default,
Scene: _Scene2.default,

@@ -153,2 +153,2 @@ Texture: _Texture2.default,

module.exports = dgl;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBd0JZOzs7Ozs7Ozs7Ozs7O0FBS1osbUJBQVMsVUFBVCxHQUFzQixPQUFRLFlBQVAsS0FBd0IsV0FBeEIsR0FBdUMsWUFBeEMsR0FBdUQsS0FBdkQ7O0FBRXRCLElBQU0sTUFBTTtBQUNSLGdDQURRO0FBRVIsZ0NBRlE7QUFHUixrREFIUTtBQUlSLG9EQUpRO0FBS1IsNEJBTFE7QUFNUixnQ0FOUTtBQU9SLHdCQVBRO0FBUVIsNEJBUlE7QUFTUixzQ0FUUTtBQVVSLDBDQVZRO0FBV1IsZ0RBWFE7QUFZUixvREFaUTtBQWFSLDBDQWJRO0FBY1Isb0RBZFE7QUFlUiwwQkFmUTtBQWdCUiw4QkFoQlE7QUFpQlIsd0NBakJRO0FBa0JSLGdEQWxCUTtBQW1CUixrQ0FuQlE7QUFvQlIsd0NBcEJRO0FBcUJSLHNCQXJCUTtBQXNCUiwwQkF0QlE7QUF1QlIsOEJBdkJRO0FBd0JSLHNCQXhCUTtBQXlCUix5QkF6QlE7QUEwQlIsVUFBTSxJQUFOO0FBQ0Esd0JBM0JRO0FBNEJSLHdCQTVCUTtBQTZCUix3QkE3QlE7QUE4QlIsd0JBOUJRO0FBK0JSLHdCQS9CUTtDQUFOOztBQWtDTixPQUFPLE9BQVAsR0FBaUIsR0FBakIiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVuZGVyZXIgZnJvbSAnLi9yZW5kZXJlci9SZW5kZXJlcic7XG5pbXBvcnQgT2JqZWN0M0QgZnJvbSAnLi9PYmplY3QzRCc7XG5pbXBvcnQgUGVyc3BlY3RpdmVDYW1lcmEgZnJvbSAnLi9jYW1lcmFzL1BlcnNwZWN0aXZlQ2FtZXJhJztcbmltcG9ydCBPcnRob2dyYXBoaWNDYW1lcmEgZnJvbSAnLi9jYW1lcmFzL09ydGhvZ3JhcGhpY0NhbWVyYSc7XG5pbXBvcnQgQnVmZmVyIGZyb20gJy4vQnVmZmVyJztcbmltcG9ydCBHZW9tZXRyeSBmcm9tICcuL0dlb21ldHJ5JztcbmltcG9ydCBTaGFkZXJQcm9ncmFtIGZyb20gJy4vU2hhZGVyUHJvZ3JhbSc7XG5pbXBvcnQgQmFzaWNNZXNoUHJvZ3JhbSBmcm9tICcuL3Byb2dyYW1zL0Jhc2ljTWVzaFByb2dyYW0nO1xuaW1wb3J0IENvbXBsZXhNZXNoUHJvZ3JhbSBmcm9tICcuL3Byb2dyYW1zL0NvbXBsZXhNZXNoUHJvZ3JhbSc7XG5pbXBvcnQgU3ByaXRlUHJvZ3JhbSBmcm9tICcuL3Byb2dyYW1zL1Nwcml0ZVByb2dyYW0nO1xuaW1wb3J0IE11bHRpU3ByaXRlUHJvZ3JhbSBmcm9tICcuL3Byb2dyYW1zL011bHRpU3ByaXRlUHJvZ3JhbSc7XG5pbXBvcnQgTWVzaCBmcm9tICcuL01lc2gnO1xuaW1wb3J0IFNwcml0ZSBmcm9tICcuL1Nwcml0ZSc7XG5pbXBvcnQgTXVsdGlTcHJpdGUgZnJvbSAnLi9NdWx0aVNwcml0ZSc7XG5pbXBvcnQgU2NlbmUgZnJvbSAnLi9TY2VuZSc7XG5pbXBvcnQgVGV4dHVyZSBmcm9tICcuL1RleHR1cmUnO1xuaW1wb3J0IEFtYmllbnRMaWdodCBmcm9tICcuL2xpZ2h0cy9BbWJpZW50TGlnaHQnO1xuaW1wb3J0IERpcmVjdGlvbmFsTGlnaHQgZnJvbSAnLi9saWdodHMvRGlyZWN0aW9uYWxMaWdodCc7XG5pbXBvcnQgUmF5Y2FzdGVyIGZyb20gJy4vUmF5Y2FzdGVyJztcbmltcG9ydCBSZW5kZXJUYXJnZXQgZnJvbSAnLi9SZW5kZXJUYXJnZXQnO1xuaW1wb3J0IFJheSBmcm9tICcuL21hdGgvUmF5JztcbmltcG9ydCBQbGFuZSBmcm9tICcuL21hdGgvUGxhbmUnO1xuaW1wb3J0IEJveCBmcm9tICcuL21hdGgvQm94JztcbmltcG9ydCBGcnVzdHVtIGZyb20gJy4vbWF0aC9GcnVzdHVtJztcbmltcG9ydCAqIGFzIG1hdGggZnJvbSAnLi9tYXRoL01hdGgnO1xuaW1wb3J0IExpbmUzIGZyb20gJy4vbWF0aC9MaW5lMyc7XG5pbXBvcnQge3ZlYzMsIG1hdDMsIHZlYzIsIG1hdDQsIHF1YXQsIGdsTWF0cml4fSBmcm9tICdnbC1tYXRyaXgnO1xuXG4vLyB3aXRoIEZsb2F0MzJBcnJheSB3ZSBoYXZlIGVycm9ycyB3aXRoIHJheWNhc3RcbmdsTWF0cml4LkFSUkFZX1RZUEUgPSAodHlwZW9mIEZsb2F0NjRBcnJheSAhPT0gJ3VuZGVmaW5lZCcpID8gRmxvYXQ2NEFycmF5IDogQXJyYXk7XG5cbmNvbnN0IGRnbCA9IHtcbiAgICBSZW5kZXJlcixcbiAgICBPYmplY3QzRCxcbiAgICBQZXJzcGVjdGl2ZUNhbWVyYSxcbiAgICBPcnRob2dyYXBoaWNDYW1lcmEsXG4gICAgQnVmZmVyLFxuICAgIEdlb21ldHJ5LFxuICAgIE1lc2gsXG4gICAgU3ByaXRlLFxuICAgIE11bHRpU3ByaXRlLFxuICAgIFNoYWRlclByb2dyYW0sXG4gICAgQmFzaWNNZXNoUHJvZ3JhbSxcbiAgICBDb21wbGV4TWVzaFByb2dyYW0sXG4gICAgU3ByaXRlUHJvZ3JhbSxcbiAgICBNdWx0aVNwcml0ZVByb2dyYW0sXG4gICAgU2NlbmUsXG4gICAgVGV4dHVyZSxcbiAgICBBbWJpZW50TGlnaHQsXG4gICAgRGlyZWN0aW9uYWxMaWdodCxcbiAgICBSYXljYXN0ZXIsXG4gICAgUmVuZGVyVGFyZ2V0LFxuICAgIFJheSxcbiAgICBQbGFuZSxcbiAgICBGcnVzdHVtLFxuICAgIEJveCxcbiAgICBMaW5lMyxcbiAgICBNYXRoOiBtYXRoLFxuICAgIHZlYzMsXG4gICAgbWF0MyxcbiAgICB2ZWMyLFxuICAgIG1hdDQsXG4gICAgcXVhdFxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZ2w7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBd0JZOzs7Ozs7Ozs7Ozs7O0FBS1osbUJBQVMsVUFBVCxHQUFzQixPQUFRLFlBQVAsS0FBd0IsV0FBeEIsR0FBdUMsWUFBeEMsR0FBdUQsS0FBdkQ7O0FBRXRCLElBQU0sTUFBTTtBQUNSLGdDQURRO0FBRVIsZ0NBRlE7QUFHUixrREFIUTtBQUlSLG9EQUpRO0FBS1IsNEJBTFE7QUFNUixnQ0FOUTtBQU9SLHdCQVBRO0FBUVIsNEJBUlE7QUFTUixzQ0FUUTtBQVVSLDBDQVZRO0FBV1Isa0RBWFE7QUFZUixzREFaUTtBQWFSLDRDQWJRO0FBY1Isc0RBZFE7QUFlUiwwQkFmUTtBQWdCUiw4QkFoQlE7QUFpQlIsd0NBakJRO0FBa0JSLGdEQWxCUTtBQW1CUixrQ0FuQlE7QUFvQlIsd0NBcEJRO0FBcUJSLHNCQXJCUTtBQXNCUiwwQkF0QlE7QUF1QlIsOEJBdkJRO0FBd0JSLHNCQXhCUTtBQXlCUix5QkF6QlE7QUEwQlIsVUFBTSxJQUFOO0FBQ0Esd0JBM0JRO0FBNEJSLHdCQTVCUTtBQTZCUix3QkE3QlE7QUE4QlIsd0JBOUJRO0FBK0JSLHdCQS9CUTtDQUFOOztBQWtDTixPQUFPLE9BQVAsR0FBaUIsR0FBakIiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVuZGVyZXIgZnJvbSAnLi9yZW5kZXJlci9SZW5kZXJlcic7XG5pbXBvcnQgT2JqZWN0M0QgZnJvbSAnLi9PYmplY3QzRCc7XG5pbXBvcnQgUGVyc3BlY3RpdmVDYW1lcmEgZnJvbSAnLi9jYW1lcmFzL1BlcnNwZWN0aXZlQ2FtZXJhJztcbmltcG9ydCBPcnRob2dyYXBoaWNDYW1lcmEgZnJvbSAnLi9jYW1lcmFzL09ydGhvZ3JhcGhpY0NhbWVyYSc7XG5pbXBvcnQgQnVmZmVyIGZyb20gJy4vQnVmZmVyJztcbmltcG9ydCBHZW9tZXRyeSBmcm9tICcuL0dlb21ldHJ5JztcbmltcG9ydCBTaGFkZXJQcm9ncmFtIGZyb20gJy4vU2hhZGVyUHJvZ3JhbSc7XG5pbXBvcnQgQmFzaWNNZXNoTWF0ZXJpYWwgZnJvbSAnLi9tYXRlcmlhbHMvQmFzaWNNZXNoTWF0ZXJpYWwnO1xuaW1wb3J0IENvbXBsZXhNZXNoTWF0ZXJpYWwgZnJvbSAnLi9tYXRlcmlhbHMvQ29tcGxleE1lc2hNYXRlcmlhbCc7XG5pbXBvcnQgU3ByaXRlTWF0ZXJpYWwgZnJvbSAnLi9tYXRlcmlhbHMvU3ByaXRlTWF0ZXJpYWwnO1xuaW1wb3J0IE11bHRpU3ByaXRlTWF0ZXJpYWwgZnJvbSAnLi9tYXRlcmlhbHMvTXVsdGlTcHJpdGVNYXRlcmlhbCc7XG5pbXBvcnQgTWVzaCBmcm9tICcuL01lc2gnO1xuaW1wb3J0IFNwcml0ZSBmcm9tICcuL1Nwcml0ZSc7XG5pbXBvcnQgTXVsdGlTcHJpdGUgZnJvbSAnLi9NdWx0aVNwcml0ZSc7XG5pbXBvcnQgU2NlbmUgZnJvbSAnLi9TY2VuZSc7XG5pbXBvcnQgVGV4dHVyZSBmcm9tICcuL1RleHR1cmUnO1xuaW1wb3J0IEFtYmllbnRMaWdodCBmcm9tICcuL2xpZ2h0cy9BbWJpZW50TGlnaHQnO1xuaW1wb3J0IERpcmVjdGlvbmFsTGlnaHQgZnJvbSAnLi9saWdodHMvRGlyZWN0aW9uYWxMaWdodCc7XG5pbXBvcnQgUmF5Y2FzdGVyIGZyb20gJy4vUmF5Y2FzdGVyJztcbmltcG9ydCBSZW5kZXJUYXJnZXQgZnJvbSAnLi9SZW5kZXJUYXJnZXQnO1xuaW1wb3J0IFJheSBmcm9tICcuL21hdGgvUmF5JztcbmltcG9ydCBQbGFuZSBmcm9tICcuL21hdGgvUGxhbmUnO1xuaW1wb3J0IEJveCBmcm9tICcuL21hdGgvQm94JztcbmltcG9ydCBGcnVzdHVtIGZyb20gJy4vbWF0aC9GcnVzdHVtJztcbmltcG9ydCAqIGFzIG1hdGggZnJvbSAnLi9tYXRoL01hdGgnO1xuaW1wb3J0IExpbmUzIGZyb20gJy4vbWF0aC9MaW5lMyc7XG5pbXBvcnQge3ZlYzMsIG1hdDMsIHZlYzIsIG1hdDQsIHF1YXQsIGdsTWF0cml4fSBmcm9tICdnbC1tYXRyaXgnO1xuXG4vLyB3aXRoIEZsb2F0MzJBcnJheSB3ZSBoYXZlIGVycm9ycyB3aXRoIHJheWNhc3RcbmdsTWF0cml4LkFSUkFZX1RZUEUgPSAodHlwZW9mIEZsb2F0NjRBcnJheSAhPT0gJ3VuZGVmaW5lZCcpID8gRmxvYXQ2NEFycmF5IDogQXJyYXk7XG5cbmNvbnN0IGRnbCA9IHtcbiAgICBSZW5kZXJlcixcbiAgICBPYmplY3QzRCxcbiAgICBQZXJzcGVjdGl2ZUNhbWVyYSxcbiAgICBPcnRob2dyYXBoaWNDYW1lcmEsXG4gICAgQnVmZmVyLFxuICAgIEdlb21ldHJ5LFxuICAgIE1lc2gsXG4gICAgU3ByaXRlLFxuICAgIE11bHRpU3ByaXRlLFxuICAgIFNoYWRlclByb2dyYW0sXG4gICAgQmFzaWNNZXNoTWF0ZXJpYWwsXG4gICAgQ29tcGxleE1lc2hNYXRlcmlhbCxcbiAgICBTcHJpdGVNYXRlcmlhbCxcbiAgICBNdWx0aVNwcml0ZU1hdGVyaWFsLFxuICAgIFNjZW5lLFxuICAgIFRleHR1cmUsXG4gICAgQW1iaWVudExpZ2h0LFxuICAgIERpcmVjdGlvbmFsTGlnaHQsXG4gICAgUmF5Y2FzdGVyLFxuICAgIFJlbmRlclRhcmdldCxcbiAgICBSYXksXG4gICAgUGxhbmUsXG4gICAgRnJ1c3R1bSxcbiAgICBCb3gsXG4gICAgTGluZTMsXG4gICAgTWF0aDogbWF0aCxcbiAgICB2ZWMzLFxuICAgIG1hdDMsXG4gICAgdmVjMixcbiAgICBtYXQ0LFxuICAgIHF1YXRcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZGdsO1xuIl19

@@ -34,6 +34,6 @@ 'use strict';

* @param {Geometry} geometry Геометрия меша
* @param {Program} program Программа для отрисовки меша
* @param {Material} material Программа для отрисовки меша
*/
function Mesh(geometry, program) {
function Mesh(geometry, material) {
_classCallCheck(this, Mesh);

@@ -52,5 +52,5 @@

* Программа для отрисовки меша
* @type {Program}
* @type {Material}
*/
_this.program = program;
_this.material = material;
return _this;

@@ -79,7 +79,7 @@ }

state.object = this;
this.program.enable(state);
this.material.enable(state);
gl.drawArrays(gl.TRIANGLES, 0, this.geometry.getBuffer('position').length);
this.program.disable(gl);
this.material.disable(gl);

@@ -162,3 +162,3 @@ return this;

this.program.typifyForRender(typedObjects, this);
this.material.typifyForRender(typedObjects, this);

@@ -178,2 +178,2 @@ this.children.forEach(function (child) {

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,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Ozs7Ozs7Ozt3Q0FnRDFCLGNBQWM7QUFDMUIsZ0JBQUksQ0FBQyxLQUFLLE9BQUwsRUFBYztBQUFFLHVCQUFPLElBQVAsQ0FBRjthQUFuQjs7QUFFQSxpQkFBSyxPQUFMLENBQWEsZUFBYixDQUE2QixZQUE3QixFQUEyQyxJQUEzQyxFQUgwQjs7QUFLMUIsaUJBQUssUUFBTCxDQUFjLE9BQWQsQ0FBc0I7dUJBQVMsTUFBTSxlQUFOLENBQXNCLFlBQXRCO2FBQVQsQ0FBdEIsQ0FMMEI7O0FBTzFCLG1CQUFPLElBQVAsQ0FQMEI7Ozs7V0FsRzVCOzs7a0JBNkdTIiwiZmlsZSI6Ik1lc2guanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT2JqZWN0M0QgZnJvbSAnLi9PYmplY3QzRCc7XG5pbXBvcnQge3ZlYzMsIG1hdDR9IGZyb20gJ2dsLW1hdHJpeCc7XG5cbi8qKlxuICog0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyDQvtGC0YDQuNGB0L7QstC60LggM0Qg0L7QsdGK0LXQutGC0L7Qsi4g0JrQsNC20LTQvtC80YMg0LzQtdGI0YMg0L3QtdC+0LHRhdC+0LTQuNC80L4g0LfQsNC00LDRgtGMINC/0YDQvtCz0YDQsNC80LzRgyDQuCDQs9C10L7QvNC10YLRgNC40Y4uXG4gKlxuICogQGV4dGVuZHMge09iamVjdDNEfVxuICovXG5jbGFzcyBNZXNoIGV4dGVuZHMgT2JqZWN0M0Qge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7R2VvbWV0cnl9IGdlb21ldHJ5INCT0LXQvtC80LXRgtGA0LjRjyDQvNC10YjQsFxuICAgICAqIEBwYXJhbSB7UHJvZ3JhbX0gcHJvZ3JhbSDQn9GA0L7Qs9GA0LDQvNC80LAg0LTQu9GPINC+0YLRgNC40YHQvtCy0LrQuCDQvNC10YjQsFxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGdlb21ldHJ5LCBwcm9ncmFtKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCT0LXQvtC80LXRgtGA0LjRjyDQvNC10YjQsFxuICAgICAgICAgKiBAdHlwZSB7R2VvbWV0cnl9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmdlb21ldHJ5ID0gZ2VvbWV0cnk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCf0YDQvtCz0YDQsNC80LzQsCDQtNC70Y8g0L7RgtGA0LjRgdC+0LLQutC4INC80LXRiNCwXG4gICAgICAgICAqIEB0eXBlIHtQcm9ncmFtfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5wcm9ncmFtID0gcHJvZ3JhbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktGL0LfRi9Cy0LDQtdGC0YHRjyDRgNC10L3QtNC10YDQvtC8INC00LvRjyDQv9C+0LTQs9C+0YLQvtCy0LrQuCDQuCDQvtGC0YDQuNGB0L7QstC60Lgg0L7QsdGK0LXQutGC0LAuXG4gICAgICogQHBhcmFtIHtTdGF0ZX0gc3RhdGUg0KLQtdC60YPRidC40LUg0YHQvtGB0YLQvtGP0L3QuNC1INGA0LXQvdC00LXRgNCwXG4gICAgICovXG4gICAgcmVuZGVyKHN0YXRlKSB7XG4gICAgICAgIGNvbnN0IGdsID0gc3RhdGUuZ2w7XG5cbiAgICAgICAgaWYgKCF0aGlzLnZpc2libGUpIHsgcmV0dXJuIHRoaXM7IH1cblxuICAgICAgICBpZiAodGhpcy53b3JsZE1hdHJpeE5lZWRzVXBkYXRlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZS5vYmplY3QgPSB0aGlzO1xuICAgICAgICB0aGlzLnByb2dyYW0uZW5hYmxlKHN0YXRlKTtcblxuICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgdGhpcy5nZW9tZXRyeS5nZXRCdWZmZXIoJ3Bvc2l0aW9uJykubGVuZ3RoKTtcblxuICAgICAgICB0aGlzLnByb2dyYW0uZGlzYWJsZShnbCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/RgNC+0LLQtdGA0Y/QtdGCINC/0LXRgNC10YHQtdC60LDQtdGCINC70Lgge0BsaW5rIFJheWNhc3Rlcn0g0LTQsNC90L3Ri9C5INC+0LHRitC10LrRgiwg0LLQvdC+0YHQuNGCINCy0YHQtSDQv9C10YDQtdGB0LXRh9C10L3QuNGPINCyINC80LDRgdGB0LjQsiBpbnRlcnNlY3RzLlxuICAgICAqIEBwYXJhbSB7UmF5Y2FzdGVyfSByYXljYXN0ZXJcbiAgICAgKiBAcGFyYW0ge0ludGVyc2VjdFtdfSBpbnRlcnNlY3RzXG4gICAgICogQHBhcmFtIHtCb29sZWFufSByZWN1cnNpdmUg0J/RgNC+0LLQtdGA0Y/RgtGMINC70Lgg0L/QtdGA0LXRgdC10YfQtdC90LjRjyDRgSDQtNC+0YfQtdGA0L3QuNC80Lgg0L7QsdGK0LXQutGC0LDQvNC4XG4gICAgICovXG4gICAgcmF5Y2FzdChyYXljYXN0ZXIsIGludGVyc2VjdHMsIHJlY3Vyc2l2ZSkge1xuICAgICAgICAvLyBnZXQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbXJkb29iL3RocmVlLmpzL2Jsb2IvbWFzdGVyL3NyYy9vYmplY3RzL01lc2guanNcblxuICAgICAgICBjb25zdCBpbnZlcnNlTWF0cml4ID0gbWF0NC5jcmVhdGUoKTtcbiAgICAgICAgbWF0NC5pbnZlcnQoaW52ZXJzZU1hdHJpeCwgdGhpcy53b3JsZE1hdHJpeCk7XG5cbiAgICAgICAgY29uc3QgcmF5ID0gcmF5Y2FzdGVyLnJheS5jbG9uZSgpO1xuICAgICAgICByYXkuYXBwbHlNYXRyaXg0KGludmVyc2VNYXRyaXgpO1xuXG4gICAgICAgIGNvbnN0IGJvdW5kaW5nQm94ID0gdGhpcy5nZW9tZXRyeS5nZXRCb3VuZGluZ0JveCgpO1xuXG4gICAgICAgIGlmICghcmF5LmludGVyc2VjdEJveChib3VuZGluZ0JveCkpIHsgcmV0dXJuIHRoaXM7IH1cblxuICAgICAgICBjb25zdCBwb3NpdGlvbkJ1ZmZlciA9IHRoaXMuZ2VvbWV0cnkuYnVmZmVycy5wb3NpdGlvbjtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9uQnVmZmVyLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICAgICAgICBjb25zdCB0cmlhbmdsZSA9IHBvc2l0aW9uQnVmZmVyLmdldFRyaWFuZ2xlKGkgLyAzKTtcblxuICAgICAgICAgICAgY29uc3QgaW50ZXJzZWN0aW9uUG9pbnQgPSByYXkuaW50ZXJzZWN0VHJpYW5nbGUodHJpYW5nbGUsIGZhbHNlKTtcblxuICAgICAgICAgICAgaWYgKCFpbnRlcnNlY3Rpb25Qb2ludCkgeyBjb250aW51ZTsgfVxuXG4gICAgICAgICAgICB2ZWMzLnRyYW5zZm9ybU1hdDQoaW50ZXJzZWN0aW9uUG9pbnQsIGludGVyc2VjdGlvblBvaW50LCB0aGlzLndvcmxkTWF0cml4KTtcblxuICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSB2ZWMzLmRpc3QocmF5Y2FzdGVyLnJheS5vcmlnaW4sIGludGVyc2VjdGlvblBvaW50KTtcblxuICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDwgcmF5Y2FzdGVyLnByZWNpc2lvbiB8fCBkaXN0YW5jZSA8IHJheWNhc3Rlci5uZWFyIHx8IGRpc3RhbmNlID4gcmF5Y2FzdGVyLmZhcikgeyBjb250aW51ZTsgfVxuXG4gICAgICAgICAgICBpbnRlcnNlY3RzLnB1c2goe1xuICAgICAgICAgICAgICAgIGRpc3RhbmNlOiBkaXN0YW5jZSxcbiAgICAgICAgICAgICAgICBwb2ludDogaW50ZXJzZWN0aW9uUG9pbnQsXG4gICAgICAgICAgICAgICAgb2JqZWN0OiB0aGlzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZWN1cnNpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiBjaGlsZC5yYXljYXN0KHJheWNhc3RlciwgaW50ZXJzZWN0cywgcmVjdXJzaXZlKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktGL0LfRi9Cy0LDQtdGC0YHRjyDQvdCwINGN0YLQsNC/0LUg0YDQtdC90LTQtdGA0LjQvdCz0LAsINGH0YLQvtCx0Ysg0L7Qv9GA0LXQtNC10LvQuNGC0Ywg0Log0LrQsNC60L7QvNGDINGC0LjQv9GDINGA0LXQvdC00LXRgNCwINC/0YDQuNC90LDQtNC70LXQttC40YIg0L7QsdGK0LXQutGCLlxuICAgICAqINCc0LXRiNC4INGA0LDQt9C00LXQu9GP0Y7RgtGB0Y8g0L3QsCDQv9GA0L7Qt9GA0LDRh9C90YvQtSDQuCDQvdC10YIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1R5cGVkT2JqZWN0c30gdHlwZWRPYmplY3RzXG4gICAgICovXG4gICAgdHlwaWZ5Rm9yUmVuZGVyKHR5cGVkT2JqZWN0cykge1xuICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkgeyByZXR1cm4gdGhpczsgfVxuXG4gICAgICAgIHRoaXMucHJvZ3JhbS50eXBpZnlGb3JSZW5kZXIodHlwZWRPYmplY3RzLCB0aGlzKTtcblxuICAgICAgICB0aGlzLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4gY2hpbGQudHlwaWZ5Rm9yUmVuZGVyKHR5cGVkT2JqZWN0cykpO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWVzaDtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,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Ozs7Ozs7Ozs7O3dDQWdEMUIsY0FBYztBQUMxQixnQkFBSSxDQUFDLEtBQUssT0FBTCxFQUFjO0FBQUUsdUJBQU8sSUFBUCxDQUFGO2FBQW5COztBQUVBLGlCQUFLLFFBQUwsQ0FBYyxlQUFkLENBQThCLFlBQTlCLEVBQTRDLElBQTVDLEVBSDBCOztBQUsxQixpQkFBSyxRQUFMLENBQWMsT0FBZCxDQUFzQjt1QkFBUyxNQUFNLGVBQU4sQ0FBc0IsWUFBdEI7YUFBVCxDQUF0QixDQUwwQjs7QUFPMUIsbUJBQU8sSUFBUCxDQVAwQjs7OztXQWxHNUI7OztrQkE2R1MiLCJmaWxlIjoiTWVzaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBPYmplY3QzRCBmcm9tICcuL09iamVjdDNEJztcbmltcG9ydCB7dmVjMywgbWF0NH0gZnJvbSAnZ2wtbWF0cml4JztcblxuLyoqXG4gKiDQmNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LTQu9GPINC+0YLRgNC40YHQvtCy0LrQuCAzRCDQvtCx0YrQtdC60YLQvtCyLiDQmtCw0LbQtNC+0LzRgyDQvNC10YjRgyDQvdC10L7QsdGF0L7QtNC40LzQviDQt9Cw0LTQsNGC0Ywg0L/RgNC+0LPRgNCw0LzQvNGDINC4INCz0LXQvtC80LXRgtGA0LjRji5cbiAqXG4gKiBAZXh0ZW5kcyB7T2JqZWN0M0R9XG4gKi9cbmNsYXNzIE1lc2ggZXh0ZW5kcyBPYmplY3QzRCB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtHZW9tZXRyeX0gZ2VvbWV0cnkg0JPQtdC+0LzQtdGC0YDQuNGPINC80LXRiNCwXG4gICAgICogQHBhcmFtIHtNYXRlcmlhbH0gbWF0ZXJpYWwg0J/RgNC+0LPRgNCw0LzQvNCwINC00LvRjyDQvtGC0YDQuNGB0L7QstC60Lgg0LzQtdGI0LBcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihnZW9tZXRyeSwgbWF0ZXJpYWwpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICog0JPQtdC+0LzQtdGC0YDQuNGPINC80LXRiNCwXG4gICAgICAgICAqIEB0eXBlIHtHZW9tZXRyeX1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZ2VvbWV0cnkgPSBnZW9tZXRyeTtcblxuICAgICAgICAvKipcbiAgICAgICAgICog0J/RgNC+0LPRgNCw0LzQvNCwINC00LvRjyDQvtGC0YDQuNGB0L7QstC60Lgg0LzQtdGI0LBcbiAgICAgICAgICogQHR5cGUge01hdGVyaWFsfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5tYXRlcmlhbCA9IG1hdGVyaWFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0YvQt9GL0LLQsNC10YLRgdGPINGA0LXQvdC00LXRgNC+0Lwg0LTQu9GPINC/0L7QtNCz0L7RgtC+0LLQutC4INC4INC+0YLRgNC40YHQvtCy0LrQuCDQvtCx0YrQtdC60YLQsC5cbiAgICAgKiBAcGFyYW0ge1N0YXRlfSBzdGF0ZSDQotC10LrRg9GJ0LjQtSDRgdC+0YHRgtC+0Y/QvdC40LUg0YDQtdC90LTQtdGA0LBcbiAgICAgKi9cbiAgICByZW5kZXIoc3RhdGUpIHtcbiAgICAgICAgY29uc3QgZ2wgPSBzdGF0ZS5nbDtcblxuICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkgeyByZXR1cm4gdGhpczsgfVxuXG4gICAgICAgIGlmICh0aGlzLndvcmxkTWF0cml4TmVlZHNVcGRhdGUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlLm9iamVjdCA9IHRoaXM7XG4gICAgICAgIHRoaXMubWF0ZXJpYWwuZW5hYmxlKHN0YXRlKTtcblxuICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgMCwgdGhpcy5nZW9tZXRyeS5nZXRCdWZmZXIoJ3Bvc2l0aW9uJykubGVuZ3RoKTtcblxuICAgICAgICB0aGlzLm1hdGVyaWFsLmRpc2FibGUoZ2wpO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQvtCy0LXRgNGP0LXRgiDQv9C10YDQtdGB0LXQutCw0LXRgiDQu9C4IHtAbGluayBSYXljYXN0ZXJ9INC00LDQvdC90YvQuSDQvtCx0YrQtdC60YIsINCy0L3QvtGB0LjRgiDQstGB0LUg0L/QtdGA0LXRgdC10YfQtdC90LjRjyDQsiDQvNCw0YHRgdC40LIgaW50ZXJzZWN0cy5cbiAgICAgKiBAcGFyYW0ge1JheWNhc3Rlcn0gcmF5Y2FzdGVyXG4gICAgICogQHBhcmFtIHtJbnRlcnNlY3RbXX0gaW50ZXJzZWN0c1xuICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gcmVjdXJzaXZlINCf0YDQvtCy0LXRgNGP0YLRjCDQu9C4INC/0LXRgNC10YHQtdGH0LXQvdC40Y8g0YEg0LTQvtGH0LXRgNC90LjQvNC4INC+0LHRitC10LrRgtCw0LzQuFxuICAgICAqL1xuICAgIHJheWNhc3QocmF5Y2FzdGVyLCBpbnRlcnNlY3RzLCByZWN1cnNpdmUpIHtcbiAgICAgICAgLy8gZ2V0IGZyb20gaHR0cHM6Ly9naXRodWIuY29tL21yZG9vYi90aHJlZS5qcy9ibG9iL21hc3Rlci9zcmMvb2JqZWN0cy9NZXNoLmpzXG5cbiAgICAgICAgY29uc3QgaW52ZXJzZU1hdHJpeCA9IG1hdDQuY3JlYXRlKCk7XG4gICAgICAgIG1hdDQuaW52ZXJ0KGludmVyc2VNYXRyaXgsIHRoaXMud29ybGRNYXRyaXgpO1xuXG4gICAgICAgIGNvbnN0IHJheSA9IHJheWNhc3Rlci5yYXkuY2xvbmUoKTtcbiAgICAgICAgcmF5LmFwcGx5TWF0cml4NChpbnZlcnNlTWF0cml4KTtcblxuICAgICAgICBjb25zdCBib3VuZGluZ0JveCA9IHRoaXMuZ2VvbWV0cnkuZ2V0Qm91bmRpbmdCb3goKTtcblxuICAgICAgICBpZiAoIXJheS5pbnRlcnNlY3RCb3goYm91bmRpbmdCb3gpKSB7IHJldHVybiB0aGlzOyB9XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb25CdWZmZXIgPSB0aGlzLmdlb21ldHJ5LmJ1ZmZlcnMucG9zaXRpb247XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbkJ1ZmZlci5sZW5ndGg7IGkgKz0gMykge1xuICAgICAgICAgICAgY29uc3QgdHJpYW5nbGUgPSBwb3NpdGlvbkJ1ZmZlci5nZXRUcmlhbmdsZShpIC8gMyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGludGVyc2VjdGlvblBvaW50ID0gcmF5LmludGVyc2VjdFRyaWFuZ2xlKHRyaWFuZ2xlLCBmYWxzZSk7XG5cbiAgICAgICAgICAgIGlmICghaW50ZXJzZWN0aW9uUG9pbnQpIHsgY29udGludWU7IH1cblxuICAgICAgICAgICAgdmVjMy50cmFuc2Zvcm1NYXQ0KGludGVyc2VjdGlvblBvaW50LCBpbnRlcnNlY3Rpb25Qb2ludCwgdGhpcy53b3JsZE1hdHJpeCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gdmVjMy5kaXN0KHJheWNhc3Rlci5yYXkub3JpZ2luLCBpbnRlcnNlY3Rpb25Qb2ludCk7XG5cbiAgICAgICAgICAgIGlmIChkaXN0YW5jZSA8IHJheWNhc3Rlci5wcmVjaXNpb24gfHwgZGlzdGFuY2UgPCByYXljYXN0ZXIubmVhciB8fCBkaXN0YW5jZSA+IHJheWNhc3Rlci5mYXIpIHsgY29udGludWU7IH1cblxuICAgICAgICAgICAgaW50ZXJzZWN0cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBkaXN0YW5jZTogZGlzdGFuY2UsXG4gICAgICAgICAgICAgICAgcG9pbnQ6IGludGVyc2VjdGlvblBvaW50LFxuICAgICAgICAgICAgICAgIG9iamVjdDogdGhpc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVjdXJzaXZlKSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4gY2hpbGQucmF5Y2FzdChyYXljYXN0ZXIsIGludGVyc2VjdHMsIHJlY3Vyc2l2ZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLRi9C30YvQstCw0LXRgtGB0Y8g0L3QsCDRjdGC0LDQv9C1INGA0LXQvdC00LXRgNC40L3Qs9CwLCDRh9GC0L7QsdGLINC+0L/RgNC10LTQtdC70LjRgtGMINC6INC60LDQutC+0LzRgyDRgtC40L/RgyDRgNC10L3QtNC10YDQsCDQv9GA0LjQvdCw0LTQu9C10LbQuNGCINC+0LHRitC10LrRgi5cbiAgICAgKiDQnNC10YjQuCDRgNCw0LfQtNC10LvRj9GO0YLRgdGPINC90LAg0L/RgNC+0LfRgNCw0YfQvdGL0LUg0Lgg0L3QtdGCLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUeXBlZE9iamVjdHN9IHR5cGVkT2JqZWN0c1xuICAgICAqL1xuICAgIHR5cGlmeUZvclJlbmRlcih0eXBlZE9iamVjdHMpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZpc2libGUpIHsgcmV0dXJuIHRoaXM7IH1cblxuICAgICAgICB0aGlzLm1hdGVyaWFsLnR5cGlmeUZvclJlbmRlcih0eXBlZE9iamVjdHMsIHRoaXMpO1xuXG4gICAgICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiBjaGlsZC50eXBpZnlGb3JSZW5kZXIodHlwZWRPYmplY3RzKSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNZXNoO1xuIl19

@@ -42,6 +42,6 @@ 'use strict';

* @param {SpriteDescriptor[]} sprites Описание спрайтов, входящих в мультиспрайт
* @param {SpriteProgram} program
* @param {SpriteMaterial} material
*/
function MultiSprite(sprites, program) {
function MultiSprite(sprites, material) {
_classCallCheck(this, MultiSprite);

@@ -51,3 +51,3 @@

* Программа отрисовки спрайта
* @type {SpriteProgram}
* @type {SpriteMaterial}
*/

@@ -57,3 +57,3 @@

_this.program = program;
_this.material = material;

@@ -239,5 +239,5 @@ _this._initArrays(sprites);

this.program.enable(state);
this.material.enable(state);
gl.drawArrays(gl.TRIANGLES, 0, this._geometry.getBuffer('disposition').length);
this.program.disable();
this.material.disable();

@@ -258,7 +258,7 @@ return this;

// Если cпрайт невидим или у программы спрайта не установлена текстура, то не рендерим его
if (!this.visible || !this.program.getTexture()) {
if (!this.visible || !this.material.getTexture()) {
return this;
}
this.program.typifyForRender(typedObjects, this);
this.material.typifyForRender(typedObjects, this);

@@ -353,2 +353,2 @@ this.children.forEach(function (child) {

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,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LEVBQzhCLGlCQUQ5QixFQUVLLFNBRkwsQ0FFZSxTQUZmLEVBRTBCLGFBRjFCLEVBSUssU0FKTCxDQUllLFVBSmYsRUFJMkIsY0FKM0IsRUFLSyxTQUxMLENBS2UsT0FMZixFQUt3QixXQUx4QixFQU1LLFNBTkwsQ0FNZSxRQU5mLEVBTXlCLFlBTnpCLEVBT0ssU0FQTCxDQU9lLFlBUGYsRUFPNkIsZ0JBUDdCLEVBcEJZOzs7O1dBOU9kOzs7a0JBNlFTIiwiZmlsZSI6Ik11bHRpU3ByaXRlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE9iamVjdDNEIGZyb20gJy4vT2JqZWN0M0QnO1xuaW1wb3J0IEdlb21ldHJ5IGZyb20gJy4vR2VvbWV0cnknO1xuaW1wb3J0IEJ1ZmZlciBmcm9tICcuL0J1ZmZlcic7XG5cbi8qKlxuICog0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyDQvtGC0YDQuNGB0L7QstC60Lgg0LzRg9C70YzRgtC40YHQv9GA0LDQudGC0L7Qsi4g0JzRg9C70YzRgtC40YHQv9GA0LDQudGCINC/0YDQtdC00YHRgtCw0LLQu9GP0LXRgiDRgdC+0LHQvtC5INC80L3QvtC20LXRgdGC0LLQvlxuICog0YHQv9GA0LDQudGC0L7Qsiwg0LrQvtGC0L7RgNGL0LUg0YDQuNGB0YPRjtGC0YHRjyDQsiDQvtC00LjQvSBkcmF3IGNhbGwuINCh0L/RgNCw0LnRgtCw0LzQuCDQsiDQvNGD0LvRjNGC0LjRgdC/0YDQsNC50YLQtSDQvNC+0LbQvdC+XG4gKiDRg9C/0YDQsNCy0LvRj9GC0Ywg0L3QtdC30LDQstC40YHQuNC80L4g0LTRgNGD0LMg0L7RgiDQtNGA0YPQs9CwLlxuICpcbiAqIEBleHRlbmRzIHtPYmplY3QzRH1cbiAqL1xuY2xhc3MgTXVsdGlTcHJpdGUgZXh0ZW5kcyBPYmplY3QzRCB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtTcHJpdGVEZXNjcmlwdG9yW119IHNwcml0ZXMg0J7Qv9C40YHQsNC90LjQtSDRgdC/0YDQsNC50YLQvtCyLCDQstGF0L7QtNGP0YnQuNGFINCyINC80YPQu9GM0YLQuNGB0L/RgNCw0LnRglxuICAgICAqIEBwYXJhbSB7U3ByaXRlUHJvZ3JhbX0gcHJvZ3JhbVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHNwcml0ZXMsIHByb2dyYW0pIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICog0J/RgNC+0LPRgNCw0LzQvNCwINC+0YLRgNC40YHQvtCy0LrQuCDRgdC/0YDQsNC50YLQsFxuICAgICAgICAgKiBAdHlwZSB7U3ByaXRlUHJvZ3JhbX1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucHJvZ3JhbSA9IHByb2dyYW07XG5cbiAgICAgICAgdGhpcy5faW5pdEFycmF5cyhzcHJpdGVzKTtcbiAgICAgICAgdGhpcy5faW5pdEdlb21ldHJ5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0YHQv9GA0LDQudGC0YMgb3BhY2l0eVxuICAgICAqXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHNwcml0ZUluZGV4INCY0L3QtNC10LrRgSDRgdC/0YDQsNC50YLQsFxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB2YWx1ZSAgICAgICDQndC+0LLQvtC1INC30L3QsNGH0LXQvdC40LUgb3BhY2l0eVxuICAgICAqL1xuICAgIHNldE9wYWNpdHkoc3ByaXRlSW5kZXgsIHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IHRoaXMuX2RhdGEuY29sb3JBbHBoYS5hcnJheTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBzcHJpdGVJbmRleCAqIDY7XG5cbiAgICAgICAgYXJyW3N0YXJ0XSA9IHZhbHVlO1xuICAgICAgICBhcnJbc3RhcnQgKyAxXSA9IHZhbHVlO1xuICAgICAgICBhcnJbc3RhcnQgKyAyXSA9IHZhbHVlO1xuICAgICAgICBhcnJbc3RhcnQgKyAzXSA9IHZhbHVlO1xuICAgICAgICBhcnJbc3RhcnQgKyA0XSA9IHZhbHVlO1xuICAgICAgICBhcnJbc3RhcnQgKyA1XSA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMuX2RhdGEuY29sb3JBbHBoYS5kaXJ0eSA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0YHQv9GA0LDQudGC0YMg0L/QvtC30LjRhtC40Y5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBzcHJpdGVJbmRleCDQmNC90LTQtdC60YEg0YHQv9GA0LDQudGC0LBcbiAgICAgKiBAcGFyYW0ge3ZlYzJ9ICAgdmFsdWUgICAgICAg0J3QvtCy0L7QtSDQt9C90LDRh9C10L3QuNC1INC/0L7Qt9C40YbQuNC4XG4gICAgICovXG4gICAgc2V0UG9zaXRpb24oc3ByaXRlSW5kZXgsIHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IHRoaXMuX2RhdGEucG9zaXRpb24uYXJyYXk7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gc3ByaXRlSW5kZXggKiAxODtcblxuICAgICAgICBhcnJbc3RhcnRdID0gdmFsdWVbMF07IGFycltzdGFydCArIDFdID0gdmFsdWVbMV07XG4gICAgICAgIGFycltzdGFydCArIDNdID0gdmFsdWVbMF07IGFycltzdGFydCArIDRdID0gdmFsdWVbMV07XG4gICAgICAgIGFycltzdGFydCArIDZdID0gdmFsdWVbMF07IGFycltzdGFydCArIDddID0gdmFsdWVbMV07XG4gICAgICAgIGFycltzdGFydCArIDldID0gdmFsdWVbMF07IGFycltzdGFydCArIDEwXSA9IHZhbHVlWzFdO1xuICAgICAgICBhcnJbc3RhcnQgKyAxMl0gPSB2YWx1ZVswXTsgYXJyW3N0YXJ0ICsgMTNdID0gdmFsdWVbMV07XG4gICAgICAgIGFycltzdGFydCArIDE1XSA9IHZhbHVlWzBdOyBhcnJbc3RhcnQgKyAxNl0gPSB2YWx1ZVsxXTtcblxuICAgICAgICB0aGlzLl9kYXRhLnBvc2l0aW9uLmRpcnR5ID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDRgdC/0YDQsNC50YLRgyDQstGL0YHQvtGC0YNcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBzcHJpdGVJbmRleCDQmNC90LTQtdC60YEg0YHQv9GA0LDQudGC0LBcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gdmFsdWUgICAgICAg0J3QvtCy0L7QtSDQt9C90LDRh9C10L3QuNC1INCy0YvRgdC+0YLRi1xuICAgICAqL1xuICAgIHNldEVsZXZhdGlvbihzcHJpdGVJbmRleCwgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgYXJyID0gdGhpcy5fZGF0YS5wb3NpdGlvbi5hcnJheTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBzcHJpdGVJbmRleCAqIDE4O1xuXG4gICAgICAgIGFycltzdGFydCArIDJdID0gdmFsdWU7XG4gICAgICAgIGFycltzdGFydCArIDVdID0gdmFsdWU7XG4gICAgICAgIGFycltzdGFydCArIDhdID0gdmFsdWU7XG4gICAgICAgIGFycltzdGFydCArIDExXSA9IHZhbHVlO1xuICAgICAgICBhcnJbc3RhcnQgKyAxNF0gPSB2YWx1ZTtcbiAgICAgICAgYXJyW3N0YXJ0ICsgMTddID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fZGF0YS5wb3NpdGlvbi5kaXJ0eSA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0YHQv9GA0LDQudGC0YMg0YDQsNC30LzQtdGAXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gc3ByaXRlSW5kZXgg0JjQvdC00LXQutGBINGB0L/RgNCw0LnRgtCwXG4gICAgICogQHBhcmFtIHt2ZWMyfSAgIHZhbHVlICAgICAgINCd0L7QstC+0LUg0LfQvdCw0YfQtdC90LjQtSDRgNCw0LfQvNC10YDQsFxuICAgICAqL1xuICAgIHNldFNpemUoc3ByaXRlSW5kZXgsIHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IHRoaXMuX2RhdGEuc2NhbGUuYXJyYXk7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gc3ByaXRlSW5kZXggKiAxMjtcblxuICAgICAgICBhcnJbc3RhcnRdID0gdmFsdWVbMF07IGFycltzdGFydCArIDFdID0gdmFsdWVbMV07XG4gICAgICAgIGFycltzdGFydCArIDJdID0gdmFsdWVbMF07IGFycltzdGFydCArIDNdID0gdmFsdWVbMV07XG4gICAgICAgIGFycltzdGFydCArIDRdID0gdmFsdWVbMF07IGFycltzdGFydCArIDVdID0gdmFsdWVbMV07XG4gICAgICAgIGFycltzdGFydCArIDZdID0gdmFsdWVbMF07IGFycltzdGFydCArIDddID0gdmFsdWVbMV07XG4gICAgICAgIGFycltzdGFydCArIDhdID0gdmFsdWVbMF07IGFycltzdGFydCArIDldID0gdmFsdWVbMV07XG4gICAgICAgIGFycltzdGFydCArIDEwXSA9IHZhbHVlWzBdOyBhcnJbc3RhcnQgKyAxMV0gPSB2YWx1ZVsxXTtcblxuICAgICAgICB0aGlzLl9kYXRhLnNjYWxlLmRpcnR5ID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDRgdC/0YDQsNC50YLRgyBj0LzQtdGJ0LXQvdC40LVcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBzcHJpdGVJbmRleCDQmNC90LTQtdC60YEg0YHQv9GA0LDQudGC0LBcbiAgICAgKiBAcGFyYW0ge3ZlYzJ9ICAgdmFsdWUgICAgICAg0J3QvtCy0L7QtSDQt9C90LDRh9C10L3QuNC1INGB0LzQtdGJ0LXQvdC40Y9cbiAgICAgKi9cbiAgICBzZXRPZmZzZXQoc3ByaXRlSW5kZXgsIHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IHRoaXMuX2RhdGEub2Zmc2V0LmFycmF5O1xuICAgICAgICBjb25zdCBzdGFydCA9IHNwcml0ZUluZGV4ICogMTI7XG5cbiAgICAgICAgYXJyW3N0YXJ0XSA9IHZhbHVlWzBdOyBhcnJbc3RhcnQgKyAxXSA9IHZhbHVlWzFdO1xuICAgICAgICBhcnJbc3RhcnQgKyAyXSA9IHZhbHVlWzBdOyBhcnJbc3RhcnQgKyAzXSA9IHZhbHVlWzFdO1xuICAgICAgICBhcnJbc3RhcnQgKyA0XSA9IHZhbHVlWzBdOyBhcnJbc3RhcnQgKyA1XSA9IHZhbHVlWzFdO1xuICAgICAgICBhcnJbc3RhcnQgKyA2XSA9IHZhbHVlWzBdOyBhcnJbc3RhcnQgKyA3XSA9IHZhbHVlWzFdO1xuICAgICAgICBhcnJbc3RhcnQgKyA4XSA9IHZhbHVlWzBdOyBhcnJbc3RhcnQgKyA5XSA9IHZhbHVlWzFdO1xuICAgICAgICBhcnJbc3RhcnQgKyAxMF0gPSB2YWx1ZVswXTsgYXJyW3N0YXJ0ICsgMTFdID0gdmFsdWVbMV07XG5cbiAgICAgICAgdGhpcy5fZGF0YS5vZmZzZXQuZGlydHkgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINGB0L/RgNCw0LnRgtGDINC90L7QstGL0LUgVVYt0LrQvtC+0YDQtNC40L3QsNGC0YtcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBzcHJpdGVJbmRleCDQmNC90LTQtdC60YEg0YHQv9GA0LDQudGC0LBcbiAgICAgKiBAcGFyYW0ge0FycmF5fSAgYm91bmQgICAgICAg0J3QvtCy0L7QtSDQt9C90LDRh9C10L3QuNC1INC60L7QvtGA0LTQuNC90LDRglxuICAgICAqL1xuICAgIHNldFVWKHNwcml0ZUluZGV4LCBib3VuZCkge1xuICAgICAgICBjb25zdCBhcnIgPSB0aGlzLl9kYXRhLnRleHR1cmUuYXJyYXk7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gc3ByaXRlSW5kZXggKiAxMjtcblxuICAgICAgICBhcnJbc3RhcnRdID0gYm91bmRbMl07IGFycltzdGFydCArIDFdID0gMSAtIGJvdW5kWzNdO1xuICAgICAgICBhcnJbc3RhcnQgKyAyXSA9IGJvdW5kWzJdOyBhcnJbc3RhcnQgKyAzXSA9IDEgLSBib3VuZFsxXTtcbiAgICAgICAgYXJyW3N0YXJ0ICsgNF0gPSBib3VuZFswXTsgYXJyW3N0YXJ0ICsgNV0gPSAxIC0gYm91bmRbM107XG4gICAgICAgIGFycltzdGFydCArIDZdID0gYm91bmRbMF07IGFycltzdGFydCArIDddID0gMSAtIGJvdW5kWzFdO1xuICAgICAgICBhcnJbc3RhcnQgKyA4XSA9IGJvdW5kWzBdOyBhcnJbc3RhcnQgKyA5XSA9IDEgLSBib3VuZFszXTtcbiAgICAgICAgYXJyW3N0YXJ0ICsgMTBdID0gYm91bmRbMl07IGFycltzdGFydCArIDExXSA9IDEgLSBib3VuZFsxXTtcblxuICAgICAgICB0aGlzLl9kYXRhLnRleHR1cmUuZGlydHkgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHJlbmRlcihzdGF0ZSkge1xuICAgICAgICBjb25zdCB7Z2wsIHNoYWRlclByb2dyYW19ID0gc3RhdGU7XG4gICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gdGhpcy5fZ2VvbWV0cnk7XG5cbiAgICAgICAgc2hhZGVyUHJvZ3JhbS5iaW5kKGdsLCBudWxsLCB7XG4gICAgICAgICAgICB0ZXh0dXJlOiBnZW9tZXRyeS5nZXRCdWZmZXIoJ3RleHR1cmUnKSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBnZW9tZXRyeS5nZXRCdWZmZXIoJ3Bvc2l0aW9uJyksXG4gICAgICAgICAgICBjb2xvckFscGhhOiBnZW9tZXRyeS5nZXRCdWZmZXIoJ2NvbG9yQWxwaGEnKSxcbiAgICAgICAgICAgIHNjYWxlOiBnZW9tZXRyeS5nZXRCdWZmZXIoJ3NjYWxlJyksXG4gICAgICAgICAgICBvZmZzZXQ6IGdlb21ldHJ5LmdldEJ1ZmZlcignb2Zmc2V0JyksXG4gICAgICAgICAgICBkaXNwb3NpdGlvbjogZ2VvbWV0cnkuZ2V0QnVmZmVyKCdkaXNwb3NpdGlvbicpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuX2RhdGEpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9kYXRhW2tleV0uZGlydHkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9nZW9tZXRyeS5nZXRCdWZmZXIoa2V5KS5zdWJEYXRhKGdsLCAwLCB0aGlzLl9kYXRhW2tleV0uYXJyYXkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFba2V5XS5kaXJ0eSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcm9ncmFtLmVuYWJsZShzdGF0ZSk7XG4gICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCB0aGlzLl9nZW9tZXRyeS5nZXRCdWZmZXIoJ2Rpc3Bvc2l0aW9uJykubGVuZ3RoKTtcbiAgICAgICAgdGhpcy5wcm9ncmFtLmRpc2FibGUoKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktGL0LfRi9Cy0LDQtdGC0YHRjyDQvdCwINGN0YLQsNC/0LUg0YDQtdC90LTQtdGA0LjQvdCz0LAsINGH0YLQvtCx0Ysg0L7Qv9GA0LXQtNC10LvQuNGC0Ywg0Log0LrQsNC60L7QvNGDINGC0LjQv9GDINGA0LXQvdC00LXRgNCwINC/0YDQuNC90LDQtNC70LXQttC40YIg0L7QsdGK0LXQutGCLlxuICAgICAqINCh0L/RgNCw0LnRgtGLINGA0LjRgdGD0Y7RgtGB0Y8g0L7RgtC00LXQu9GM0L3Ri9C8INGA0LXQvdC00LXRgNC+0LwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1R5cGVkT2JqZWN0c30gdHlwZWRPYmplY3RzXG4gICAgICovXG4gICAgdHlwaWZ5Rm9yUmVuZGVyKHR5cGVkT2JqZWN0cykge1xuICAgICAgICAvLyDQldGB0LvQuCBj0L/RgNCw0LnRgiDQvdC10LLQuNC00LjQvCDQuNC70Lgg0YMg0L/RgNC+0LPRgNCw0LzQvNGLINGB0L/RgNCw0LnRgtCwINC90LUg0YPRgdGC0LDQvdC+0LLQu9C10L3QsCDRgtC10LrRgdGC0YPRgNCwLCDRgtC+INC90LUg0YDQtdC90LTQtdGA0LjQvCDQtdCz0L5cbiAgICAgICAgaWYgKCF0aGlzLnZpc2libGUgfHwgIXRoaXMucHJvZ3JhbS5nZXRUZXh0dXJlKCkpIHsgcmV0dXJuIHRoaXM7IH1cblxuICAgICAgICB0aGlzLnByb2dyYW0udHlwaWZ5Rm9yUmVuZGVyKHR5cGVkT2JqZWN0cywgdGhpcyk7XG5cbiAgICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IGNoaWxkLnR5cGlmeUZvclJlbmRlcih0eXBlZE9iamVjdHMpKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBfaW5pdEFycmF5cyhzcHJpdGVzKSB7XG4gICAgICAgIGNvbnN0IHNwcml0ZUNvdW50ID0gc3ByaXRlcy5sZW5ndGg7XG5cbiAgICAgICAgY29uc3QgZWxlbWVudERpc3Bvc2l0aW9uID0gW1xuICAgICAgICAgICAgMC41LCAtMC41LCAwLFxuICAgICAgICAgICAgMC41LCAwLjUsIDAsXG4gICAgICAgICAgICAtMC41LCAtMC41LCAwLFxuXG4gICAgICAgICAgICAtMC41LCAwLjUsIDAsXG4gICAgICAgICAgICAtMC41LCAtMC41LCAwLFxuICAgICAgICAgICAgMC41LCAwLjUsIDBcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBkaXNwb3NpdGlvbkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShzcHJpdGVDb3VudCAqIDE4KTtcbiAgICAgICAgY29uc3QgdGV4dHVyZUFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShzcHJpdGVDb3VudCAqIDEyKTtcblxuICAgICAgICBjb25zdCBwb3NpdGlvbkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShzcHJpdGVDb3VudCAqIDE4KTtcbiAgICAgICAgY29uc3Qgc2NhbGVBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoc3ByaXRlQ291bnQgKiAxMik7XG4gICAgICAgIGNvbnN0IG9mZnNldEFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShzcHJpdGVDb3VudCAqIDEyKTtcbiAgICAgICAgY29uc3QgY29sb3JBbHBoYUFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShzcHJpdGVDb3VudCAqIDYpO1xuXG4gICAgICAgIHRoaXMuX2RhdGEgPSB7XG4gICAgICAgICAgICBkaXNwb3NpdGlvbjoge2FycmF5OiBkaXNwb3NpdGlvbkFycmF5LCBkaXJ0eTogZmFsc2V9LFxuICAgICAgICAgICAgdGV4dHVyZToge2FycmF5OiB0ZXh0dXJlQXJyYXksIGRpcnR5OiBmYWxzZX0sXG4gICAgICAgICAgICBwb3NpdGlvbjoge2FycmF5OiBwb3NpdGlvbkFycmF5LCBkaXJ0eTogZmFsc2V9LFxuICAgICAgICAgICAgc2NhbGU6IHthcnJheTogc2NhbGVBcnJheSwgZGlydHk6IGZhbHNlfSxcbiAgICAgICAgICAgIG9mZnNldDoge2FycmF5OiBvZmZzZXRBcnJheSwgZGlydHk6IGZhbHNlfSxcbiAgICAgICAgICAgIGNvbG9yQWxwaGE6IHthcnJheTogY29sb3JBbHBoYUFycmF5LCBkaXJ0eTogZmFsc2V9XG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzcHJpdGVDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBzcHJpdGUgPSBzcHJpdGVzW2ldO1xuXG4gICAgICAgICAgICBkaXNwb3NpdGlvbkFycmF5LnNldChlbGVtZW50RGlzcG9zaXRpb24sIGkgKiAxOCk7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0VVYoaSwgc3ByaXRlLnV2IHx8IFswLCAwLCAxLCAxXSk7XG4gICAgICAgICAgICB0aGlzLnNldFNpemUoaSwgc3ByaXRlLnNpemUgfHwgWzAsIDBdKTtcbiAgICAgICAgICAgIHRoaXMuc2V0T2Zmc2V0KGksIHNwcml0ZS5vZmZzZXQgfHwgWzAsIDBdKTtcbiAgICAgICAgICAgIHRoaXMuc2V0T3BhY2l0eShpLCBzcHJpdGUub3BhY2l0eSAhPT0gdW5kZWZpbmVkID8gc3ByaXRlLm9wYWNpdHkgOiAxKTtcbiAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb24oaSwgc3ByaXRlLnBvc2l0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuc2V0RWxldmF0aW9uKGksIHNwcml0ZS5lbGV2YXRpb24gfHwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfaW5pdEdlb21ldHJ5KCkge1xuICAgICAgICB0aGlzLl9nZW9tZXRyeSA9IG5ldyBHZW9tZXRyeSgpO1xuXG4gICAgICAgIGNvbnN0IHRleHR1cmVCdWZmZXIgPSBuZXcgQnVmZmVyKHRoaXMuX2RhdGEudGV4dHVyZS5hcnJheSwgMik7XG4gICAgICAgIHRleHR1cmVCdWZmZXIuZHJhd1R5cGUgPSBCdWZmZXIuRHluYW1pY0RyYXc7XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb25CdWZmZXIgPSBuZXcgQnVmZmVyKHRoaXMuX2RhdGEucG9zaXRpb24uYXJyYXksIDMpO1xuICAgICAgICBwb3NpdGlvbkJ1ZmZlci5kcmF3VHlwZSA9IEJ1ZmZlci5EeW5hbWljRHJhdztcblxuICAgICAgICBjb25zdCBzY2FsZUJ1ZmZlciA9IG5ldyBCdWZmZXIodGhpcy5fZGF0YS5zY2FsZS5hcnJheSwgMik7XG4gICAgICAgIHNjYWxlQnVmZmVyLmRyYXdUeXBlID0gQnVmZmVyLkR5bmFtaWNEcmF3O1xuXG4gICAgICAgIGNvbnN0IG9mZnNldEJ1ZmZlciA9IG5ldyBCdWZmZXIodGhpcy5fZGF0YS5vZmZzZXQuYXJyYXksIDIpO1xuICAgICAgICBvZmZzZXRCdWZmZXIuZHJhd1R5cGUgPSBCdWZmZXIuRHluYW1pY0RyYXc7XG5cbiAgICAgICAgY29uc3QgY29sb3JBbHBoYUJ1ZmZlciA9IG5ldyBCdWZmZXIodGhpcy5fZGF0YS5jb2xvckFscGhhLmFycmF5LCAxKTtcbiAgICAgICAgY29sb3JBbHBoYUJ1ZmZlci5kcmF3VHlwZSA9IEJ1ZmZlci5EeW5hbWljRHJhdztcblxuICAgICAgICBjb25zdCBkaXNwb3NpdGlvbkJ1ZmZlciA9IG5ldyBCdWZmZXIodGhpcy5fZGF0YS5kaXNwb3NpdGlvbi5hcnJheSwgMyk7XG5cbiAgICAgICAgdGhpcy5fZ2VvbWV0cnlcbiAgICAgICAgICAgIC5zZXRCdWZmZXIoJ2Rpc3Bvc2l0aW9uJywgZGlzcG9zaXRpb25CdWZmZXIpXG4gICAgICAgICAgICAuc2V0QnVmZmVyKCd0ZXh0dXJlJywgdGV4dHVyZUJ1ZmZlcilcblxuICAgICAgICAgICAgLnNldEJ1ZmZlcigncG9zaXRpb24nLCBwb3NpdGlvbkJ1ZmZlcilcbiAgICAgICAgICAgIC5zZXRCdWZmZXIoJ3NjYWxlJywgc2NhbGVCdWZmZXIpXG4gICAgICAgICAgICAuc2V0QnVmZmVyKCdvZmZzZXQnLCBvZmZzZXRCdWZmZXIpXG4gICAgICAgICAgICAuc2V0QnVmZmVyKCdjb2xvckFscGhhJywgY29sb3JBbHBoYUJ1ZmZlcik7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNdWx0aVNwcml0ZTtcblxuLyoqXG4gKiDQntC/0LjRgdCw0L3QuNC1INGB0L/RgNCw0LnRgtCwLiDQnNCw0YHRgdC40LIg0YLQsNC60LjRhSDQvtCx0YrQtdC60YLQvtCyINC/0LXRgNC10LTQsNGR0YLRgdGPINCyINC60L7QvdGB0YLRgNGD0LrRgtC+0YAg0LrQu9Cw0YHRgdCwXG4gKiBNdWx0aVNwcml0ZVxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFNwcml0ZURlc2NyaXB0b3JcbiAqIEBwcm9wZXJ0eSB7dmVjMn0gcG9zaXRpb24g0JrQvtC+0YDQtNC40L3QsNGC0Ysg0YHQv9GA0LDQudGC0LAg0LIg0L/Qu9C+0YHQutC+0YHRgtC4IFhZXG4gKiBAcHJvcGVydHkge3ZlYzJ9IHNpemUg0KDQsNC30LzQtdGAINGB0L/RgNCw0LnRgtCwINCyINC/0LjQutGB0LXQu9GP0YVcbiAqIEBwcm9wZXJ0eSB7dmVjMn0gb2Zmc2V0INCh0LzQtdGJ0LXQvdC40LUg0YHQv9GA0LDQudGC0LAg0LIg0L/QuNC60YHQtdC70Y/RhSDQsiDQv9C70L7RgdC60L7RgdGC0Lgg0Y3QutGA0LDQvdCwXG4gKiBAcHJvcGVydHkge051bWJlcn0gZWxldmF0aW9uINCS0YvRgdC+0YLQsCDRgdC/0YDQsNC50YLQsCDQv9C+INC+0YHQuCBaXG4gKiBAcHJvcGVydHkge051bWJlcn0gb3BhY2l0eSDQntC/0LDRgdC40YLQuCDRgdC/0YDQsNC50YLQsFxuICogQHByb3BlcnR5IHtBcnJheX0gdXYg0JrQvtC+0YDQtNC40L3QsNGC0Ysg0YLQtdC60YHRgtGD0YDRiyDRgdC/0YDQsNC50YLQsFxuICovXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9NdWx0aVNwcml0ZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFXTTs7Ozs7Ozs7QUFLRixhQUxFLFdBS0YsQ0FBWSxPQUFaLEVBQXFCLFFBQXJCLEVBQStCOzhCQUw3QixhQUs2Qjs7Ozs7OzsyRUFMN0IseUJBSzZCOztBQU8zQixjQUFLLFFBQUwsR0FBZ0IsUUFBaEIsQ0FQMkI7O0FBUzNCLGNBQUssV0FBTCxDQUFpQixPQUFqQixFQVQyQjtBQVUzQixjQUFLLGFBQUwsR0FWMkI7O0tBQS9COzs7Ozs7Ozs7O2lCQUxFOzttQ0F3QlMsYUFBYSxPQUFPO0FBQzNCLGdCQUFNLE1BQU0sS0FBSyxLQUFMLENBQVcsVUFBWCxDQUFzQixLQUF0QixDQURlO0FBRTNCLGdCQUFNLFFBQVEsY0FBYyxDQUFkLENBRmE7O0FBSTNCLGdCQUFJLEtBQUosSUFBYSxLQUFiLENBSjJCO0FBSzNCLGdCQUFJLFFBQVEsQ0FBUixDQUFKLEdBQWlCLEtBQWpCLENBTDJCO0FBTTNCLGdCQUFJLFFBQVEsQ0FBUixDQUFKLEdBQWlCLEtBQWpCLENBTjJCO0FBTzNCLGdCQUFJLFFBQVEsQ0FBUixDQUFKLEdBQWlCLEtBQWpCLENBUDJCO0FBUTNCLGdCQUFJLFFBQVEsQ0FBUixDQUFKLEdBQWlCLEtBQWpCLENBUjJCO0FBUzNCLGdCQUFJLFFBQVEsQ0FBUixDQUFKLEdBQWlCLEtBQWpCLENBVDJCOztBQVczQixpQkFBSyxLQUFMLENBQVcsVUFBWCxDQUFzQixLQUF0QixHQUE4QixJQUE5QixDQVgyQjs7QUFhM0IsbUJBQU8sSUFBUCxDQWIyQjs7Ozs7Ozs7Ozs7O29DQXNCbkIsYUFBYSxPQUFPO0FBQzVCLGdCQUFNLE1BQU0sS0FBSyxLQUFMLENBQVcsUUFBWCxDQUFvQixLQUFwQixDQURnQjtBQUU1QixnQkFBTSxRQUFRLGNBQWMsRUFBZCxDQUZjOztBQUk1QixnQkFBSSxLQUFKLElBQWEsTUFBTSxDQUFOLENBQWIsQ0FKNEIsR0FJTCxDQUFJLFFBQVEsQ0FBUixDQUFKLEdBQWlCLE1BQU0sQ0FBTixDQUFqQixDQUpLO0FBSzVCLGdCQUFJLFFBQVEsQ0FBUixDQUFKLEdBQWlCLE1BQU0sQ0FBTixDQUFqQixDQUw0QixHQUtELENBQUksUUFBUSxDQUFSLENBQUosR0FBaUIsTUFBTSxDQUFOLENBQWpCLENBTEM7QUFNNUIsZ0JBQUksUUFBUSxDQUFSLENBQUosR0FBaUIsTUFBTSxDQUFOLENBQWpCLENBTjRCLEdBTUQsQ0FBSSxRQUFRLENBQVIsQ0FBSixHQUFpQixNQUFNLENBQU4sQ0FBakIsQ0FOQztBQU81QixnQkFBSSxRQUFRLENBQVIsQ0FBSixHQUFpQixNQUFNLENBQU4sQ0FBakIsQ0FQNEIsR0FPRCxDQUFJLFFBQVEsRUFBUixDQUFKLEdBQWtCLE1BQU0sQ0FBTixDQUFsQixDQVBDO0FBUTVCLGdCQUFJLFFBQVEsRUFBUixDQUFKLEdBQWtCLE1BQU0sQ0FBTixDQUFsQixDQVI0QixHQVFBLENBQUksUUFBUSxFQUFSLENBQUosR0FBa0IsTUFBTSxDQUFOLENBQWxCLENBUkE7QUFTNUIsZ0JBQUksUUFBUSxFQUFSLENBQUosR0FBa0IsTUFBTSxDQUFOLENBQWxCLENBVDRCLEdBU0EsQ0FBSSxRQUFRLEVBQVIsQ0FBSixHQUFrQixNQUFNLENBQU4sQ0FBbEIsQ0FUQTs7QUFXNUIsaUJBQUssS0FBTCxDQUFXLFFBQVgsQ0FBb0IsS0FBcEIsR0FBNEIsSUFBNUIsQ0FYNEI7O0FBYTVCLG1CQUFPLElBQVAsQ0FiNEI7Ozs7Ozs7Ozs7OztxQ0FzQm5CLGFBQWEsT0FBTztBQUM3QixnQkFBTSxNQUFNLEtBQUssS0FBTCxDQUFXLFFBQVgsQ0FBb0IsS0FBcEIsQ0FEaUI7QUFFN0IsZ0JBQU0sUUFBUSxjQUFjLEVBQWQsQ0FGZTs7QUFJN0IsZ0JBQUksUUFBUSxDQUFSLENBQUosR0FBaUIsS0FBakIsQ0FKNkI7QUFLN0IsZ0JBQUksUUFBUSxDQUFSLENBQUosR0FBaUIsS0FBakIsQ0FMNkI7QUFNN0IsZ0JBQUksUUFBUSxDQUFSLENBQUosR0FBaUIsS0FBakIsQ0FONkI7QUFPN0IsZ0JBQUksUUFBUSxFQUFSLENBQUosR0FBa0IsS0FBbEIsQ0FQNkI7QUFRN0IsZ0JBQUksUUFBUSxFQUFSLENBQUosR0FBa0IsS0FBbEIsQ0FSNkI7QUFTN0IsZ0JBQUksUUFBUSxFQUFSLENBQUosR0FBa0IsS0FBbEIsQ0FUNkI7O0FBVzdCLGlCQUFLLEtBQUwsQ0FBVyxRQUFYLENBQW9CLEtBQXBCLEdBQTRCLElBQTVCLENBWDZCOztBQWE3QixtQkFBTyxJQUFQLENBYjZCOzs7Ozs7Ozs7Ozs7Z0NBc0J6QixhQUFhLE9BQU87QUFDeEIsZ0JBQU0sTUFBTSxLQUFLLEtBQUwsQ0FBVyxLQUFYLENBQWlCLEtBQWpCLENBRFk7QUFFeEIsZ0JBQU0sUUFBUSxjQUFjLEVBQWQsQ0FGVTs7QUFJeEIsZ0JBQUksS0FBSixJQUFhLE1BQU0sQ0FBTixDQUFiLENBSndCLEdBSUQsQ0FBSSxRQUFRLENBQVIsQ0FBSixHQUFpQixNQUFNLENBQU4sQ0FBakIsQ0FKQztBQUt4QixnQkFBSSxRQUFRLENBQVIsQ0FBSixHQUFpQixNQUFNLENBQU4sQ0FBakIsQ0FMd0IsR0FLRyxDQUFJLFFBQVEsQ0FBUixDQUFKLEdBQWlCLE1BQU0sQ0FBTixDQUFqQixDQUxIO0FBTXhCLGdCQUFJLFFBQVEsQ0FBUixDQUFKLEdBQWlCLE1BQU0sQ0FBTixDQUFqQixDQU53QixHQU1HLENBQUksUUFBUSxDQUFSLENBQUosR0FBaUIsTUFBTSxDQUFOLENBQWpCLENBTkg7QUFPeEIsZ0JBQUksUUFBUSxDQUFSLENBQUosR0FBaUIsTUFBTSxDQUFOLENBQWpCLENBUHdCLEdBT0csQ0FBSSxRQUFRLENBQVIsQ0FBSixHQUFpQixNQUFNLENBQU4sQ0FBakIsQ0FQSDtBQVF4QixnQkFBSSxRQUFRLENBQVIsQ0FBSixHQUFpQixNQUFNLENBQU4sQ0FBakIsQ0FSd0IsR0FRRyxDQUFJLFFBQVEsQ0FBUixDQUFKLEdBQWlCLE1BQU0sQ0FBTixDQUFqQixDQVJIO0FBU3hCLGdCQUFJLFFBQVEsRUFBUixDQUFKLEdBQWtCLE1BQU0sQ0FBTixDQUFsQixDQVR3QixHQVNJLENBQUksUUFBUSxFQUFSLENBQUosR0FBa0IsTUFBTSxDQUFOLENBQWxCLENBVEo7O0FBV3hCLGlCQUFLLEtBQUwsQ0FBVyxLQUFYLENBQWlCLEtBQWpCLEdBQXlCLElBQXpCLENBWHdCOztBQWF4QixtQkFBTyxJQUFQLENBYndCOzs7Ozs7Ozs7Ozs7a0NBc0JsQixhQUFhLE9BQU87QUFDMUIsZ0JBQU0sTUFBTSxLQUFLLEtBQUwsQ0FBVyxNQUFYLENBQWtCLEtBQWxCLENBRGM7QUFFMUIsZ0JBQU0sUUFBUSxjQUFjLEVBQWQsQ0FGWTs7QUFJMUIsZ0JBQUksS0FBSixJQUFhLE1BQU0sQ0FBTixDQUFiLENBSjBCLEdBSUgsQ0FBSSxRQUFRLENBQVIsQ0FBSixHQUFpQixNQUFNLENBQU4sQ0FBakIsQ0FKRztBQUsxQixnQkFBSSxRQUFRLENBQVIsQ0FBSixHQUFpQixNQUFNLENBQU4sQ0FBakIsQ0FMMEIsR0FLQyxDQUFJLFFBQVEsQ0FBUixDQUFKLEdBQWlCLE1BQU0sQ0FBTixDQUFqQixDQUxEO0FBTTFCLGdCQUFJLFFBQVEsQ0FBUixDQUFKLEdBQWlCLE1BQU0sQ0FBTixDQUFqQixDQU4wQixHQU1DLENBQUksUUFBUSxDQUFSLENBQUosR0FBaUIsTUFBTSxDQUFOLENBQWpCLENBTkQ7QUFPMUIsZ0JBQUksUUFBUSxDQUFSLENBQUosR0FBaUIsTUFBTSxDQUFOLENBQWpCLENBUDBCLEdBT0MsQ0FBSSxRQUFRLENBQVIsQ0FBSixHQUFpQixNQUFNLENBQU4sQ0FBakIsQ0FQRDtBQVExQixnQkFBSSxRQUFRLENBQVIsQ0FBSixHQUFpQixNQUFNLENBQU4sQ0FBakIsQ0FSMEIsR0FRQyxDQUFJLFFBQVEsQ0FBUixDQUFKLEdBQWlCLE1BQU0sQ0FBTixDQUFqQixDQVJEO0FBUzFCLGdCQUFJLFFBQVEsRUFBUixDQUFKLEdBQWtCLE1BQU0sQ0FBTixDQUFsQixDQVQwQixHQVNFLENBQUksUUFBUSxFQUFSLENBQUosR0FBa0IsTUFBTSxDQUFOLENBQWxCLENBVEY7O0FBVzFCLGlCQUFLLEtBQUwsQ0FBVyxNQUFYLENBQWtCLEtBQWxCLEdBQTBCLElBQTFCLENBWDBCOztBQWExQixtQkFBTyxJQUFQLENBYjBCOzs7Ozs7Ozs7Ozs7OEJBc0J4QixhQUFhLE9BQU87QUFDdEIsZ0JBQU0sTUFBTSxLQUFLLEtBQUwsQ0FBVyxPQUFYLENBQW1CLEtBQW5CLENBRFU7QUFFdEIsZ0JBQU0sUUFBUSxjQUFjLEVBQWQsQ0FGUTs7QUFJdEIsZ0JBQUksS0FBSixJQUFhLE1BQU0sQ0FBTixDQUFiLENBSnNCLEdBSUMsQ0FBSSxRQUFRLENBQVIsQ0FBSixHQUFpQixJQUFJLE1BQU0sQ0FBTixDQUFKLENBSmxCO0FBS3RCLGdCQUFJLFFBQVEsQ0FBUixDQUFKLEdBQWlCLE1BQU0sQ0FBTixDQUFqQixDQUxzQixHQUtLLENBQUksUUFBUSxDQUFSLENBQUosR0FBaUIsSUFBSSxNQUFNLENBQU4sQ0FBSixDQUx0QjtBQU10QixnQkFBSSxRQUFRLENBQVIsQ0FBSixHQUFpQixNQUFNLENBQU4sQ0FBakIsQ0FOc0IsR0FNSyxDQUFJLFFBQVEsQ0FBUixDQUFKLEdBQWlCLElBQUksTUFBTSxDQUFOLENBQUosQ0FOdEI7QUFPdEIsZ0JBQUksUUFBUSxDQUFSLENBQUosR0FBaUIsTUFBTSxDQUFOLENBQWpCLENBUHNCLEdBT0ssQ0FBSSxRQUFRLENBQVIsQ0FBSixHQUFpQixJQUFJLE1BQU0sQ0FBTixDQUFKLENBUHRCO0FBUXRCLGdCQUFJLFFBQVEsQ0FBUixDQUFKLEdBQWlCLE1BQU0sQ0FBTixDQUFqQixDQVJzQixHQVFLLENBQUksUUFBUSxDQUFSLENBQUosR0FBaUIsSUFBSSxNQUFNLENBQU4sQ0FBSixDQVJ0QjtBQVN0QixnQkFBSSxRQUFRLEVBQVIsQ0FBSixHQUFrQixNQUFNLENBQU4sQ0FBbEIsQ0FUc0IsR0FTTSxDQUFJLFFBQVEsRUFBUixDQUFKLEdBQWtCLElBQUksTUFBTSxDQUFOLENBQUosQ0FUeEI7O0FBV3RCLGlCQUFLLEtBQUwsQ0FBVyxPQUFYLENBQW1CLEtBQW5CLEdBQTJCLElBQTNCLENBWHNCOztBQWF0QixtQkFBTyxJQUFQLENBYnNCOzs7OytCQWdCbkIsT0FBTztnQkFDSCxLQUFxQixNQUFyQixHQURHO2dCQUNDLGdCQUFpQixNQUFqQixjQUREOztBQUVWLGdCQUFNLFdBQVcsS0FBSyxTQUFMLENBRlA7O0FBSVYsMEJBQWMsSUFBZCxDQUFtQixFQUFuQixFQUF1QixJQUF2QixFQUE2QjtBQUN6Qix5QkFBUyxTQUFTLFNBQVQsQ0FBbUIsU0FBbkIsQ0FBVDtBQUNBLDBCQUFVLFNBQVMsU0FBVCxDQUFtQixVQUFuQixDQUFWO0FBQ0EsNEJBQVksU0FBUyxTQUFULENBQW1CLFlBQW5CLENBQVo7QUFDQSx1QkFBTyxTQUFTLFNBQVQsQ0FBbUIsT0FBbkIsQ0FBUDtBQUNBLHdCQUFRLFNBQVMsU0FBVCxDQUFtQixRQUFuQixDQUFSO0FBQ0EsNkJBQWEsU0FBUyxTQUFULENBQW1CLGFBQW5CLENBQWI7YUFOSixFQUpVOztBQWFWLGlCQUFLLElBQU0sR0FBTixJQUFhLEtBQUssS0FBTCxFQUFZO0FBQzFCLG9CQUFJLEtBQUssS0FBTCxDQUFXLEdBQVgsRUFBZ0IsS0FBaEIsRUFBdUI7QUFDdkIseUJBQUssU0FBTCxDQUFlLFNBQWYsQ0FBeUIsR0FBekIsRUFBOEIsT0FBOUIsQ0FBc0MsRUFBdEMsRUFBMEMsQ0FBMUMsRUFBNkMsS0FBSyxLQUFMLENBQVcsR0FBWCxFQUFnQixLQUFoQixDQUE3QyxDQUR1QjtBQUV2Qix5QkFBSyxLQUFMLENBQVcsR0FBWCxFQUFnQixLQUFoQixHQUF3QixLQUF4QixDQUZ1QjtpQkFBM0I7YUFESjs7QUFPQSxpQkFBSyxRQUFMLENBQWMsTUFBZCxDQUFxQixLQUFyQixFQXBCVTtBQXFCVixlQUFHLFVBQUgsQ0FBYyxHQUFHLFNBQUgsRUFBYyxDQUE1QixFQUErQixLQUFLLFNBQUwsQ0FBZSxTQUFmLENBQXlCLGFBQXpCLEVBQXdDLE1BQXhDLENBQS9CLENBckJVO0FBc0JWLGlCQUFLLFFBQUwsQ0FBYyxPQUFkLEdBdEJVOztBQXdCVixtQkFBTyxJQUFQLENBeEJVOzs7Ozs7Ozs7Ozs7d0NBaUNFLGNBQWM7O0FBRTFCLGdCQUFJLENBQUMsS0FBSyxPQUFMLElBQWdCLENBQUMsS0FBSyxRQUFMLENBQWMsVUFBZCxFQUFELEVBQTZCO0FBQUUsdUJBQU8sSUFBUCxDQUFGO2FBQWxEOztBQUVBLGlCQUFLLFFBQUwsQ0FBYyxlQUFkLENBQThCLFlBQTlCLEVBQTRDLElBQTVDLEVBSjBCOztBQU0xQixpQkFBSyxRQUFMLENBQWMsT0FBZCxDQUFzQjt1QkFBUyxNQUFNLGVBQU4sQ0FBc0IsWUFBdEI7YUFBVCxDQUF0QixDQU4wQjs7QUFRMUIsbUJBQU8sSUFBUCxDQVIwQjs7OztvQ0FXbEIsU0FBUztBQUNqQixnQkFBTSxjQUFjLFFBQVEsTUFBUixDQURIOztBQUdqQixnQkFBTSxxQkFBcUIsQ0FDdkIsR0FEdUIsRUFDbEIsQ0FBQyxHQUFELEVBQU0sQ0FEWSxFQUV2QixHQUZ1QixFQUVsQixHQUZrQixFQUViLENBRmEsRUFHdkIsQ0FBQyxHQUFELEVBQU0sQ0FBQyxHQUFELEVBQU0sQ0FIVyxFQUt2QixDQUFDLEdBQUQsRUFBTSxHQUxpQixFQUtaLENBTFksRUFNdkIsQ0FBQyxHQUFELEVBQU0sQ0FBQyxHQUFELEVBQU0sQ0FOVyxFQU92QixHQVB1QixFQU9sQixHQVBrQixFQU9iLENBUGEsQ0FBckIsQ0FIVzs7QUFhakIsZ0JBQU0sbUJBQW1CLElBQUksWUFBSixDQUFpQixjQUFjLEVBQWQsQ0FBcEMsQ0FiVztBQWNqQixnQkFBTSxlQUFlLElBQUksWUFBSixDQUFpQixjQUFjLEVBQWQsQ0FBaEMsQ0FkVzs7QUFnQmpCLGdCQUFNLGdCQUFnQixJQUFJLFlBQUosQ0FBaUIsY0FBYyxFQUFkLENBQWpDLENBaEJXO0FBaUJqQixnQkFBTSxhQUFhLElBQUksWUFBSixDQUFpQixjQUFjLEVBQWQsQ0FBOUIsQ0FqQlc7QUFrQmpCLGdCQUFNLGNBQWMsSUFBSSxZQUFKLENBQWlCLGNBQWMsRUFBZCxDQUEvQixDQWxCVztBQW1CakIsZ0JBQU0sa0JBQWtCLElBQUksWUFBSixDQUFpQixjQUFjLENBQWQsQ0FBbkMsQ0FuQlc7O0FBcUJqQixpQkFBSyxLQUFMLEdBQWE7QUFDVCw2QkFBYSxFQUFDLE9BQU8sZ0JBQVAsRUFBeUIsT0FBTyxLQUFQLEVBQXZDO0FBQ0EseUJBQVMsRUFBQyxPQUFPLFlBQVAsRUFBcUIsT0FBTyxLQUFQLEVBQS9CO0FBQ0EsMEJBQVUsRUFBQyxPQUFPLGFBQVAsRUFBc0IsT0FBTyxLQUFQLEVBQWpDO0FBQ0EsdUJBQU8sRUFBQyxPQUFPLFVBQVAsRUFBbUIsT0FBTyxLQUFQLEVBQTNCO0FBQ0Esd0JBQVEsRUFBQyxPQUFPLFdBQVAsRUFBb0IsT0FBTyxLQUFQLEVBQTdCO0FBQ0EsNEJBQVksRUFBQyxPQUFPLGVBQVAsRUFBd0IsT0FBTyxLQUFQLEVBQXJDO2FBTkosQ0FyQmlCOztBQThCakIsaUJBQUssSUFBSSxJQUFJLENBQUosRUFBTyxJQUFJLFdBQUosRUFBaUIsR0FBakMsRUFBc0M7QUFDbEMsb0JBQU0sU0FBUyxRQUFRLENBQVIsQ0FBVCxDQUQ0Qjs7QUFHbEMsaUNBQWlCLEdBQWpCLENBQXFCLGtCQUFyQixFQUF5QyxJQUFJLEVBQUosQ0FBekMsQ0FIa0M7O0FBS2xDLHFCQUFLLEtBQUwsQ0FBVyxDQUFYLEVBQWMsT0FBTyxFQUFQLElBQWEsQ0FBQyxDQUFELEVBQUksQ0FBSixFQUFPLENBQVAsRUFBVSxDQUFWLENBQWIsQ0FBZCxDQUxrQztBQU1sQyxxQkFBSyxPQUFMLENBQWEsQ0FBYixFQUFnQixPQUFPLElBQVAsSUFBZSxDQUFDLENBQUQsRUFBSSxDQUFKLENBQWYsQ0FBaEIsQ0FOa0M7QUFPbEMscUJBQUssU0FBTCxDQUFlLENBQWYsRUFBa0IsT0FBTyxNQUFQLElBQWlCLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FBakIsQ0FBbEIsQ0FQa0M7QUFRbEMscUJBQUssVUFBTCxDQUFnQixDQUFoQixFQUFtQixPQUFPLE9BQVAsS0FBbUIsU0FBbkIsR0FBK0IsT0FBTyxPQUFQLEdBQWlCLENBQWhELENBQW5CLENBUmtDO0FBU2xDLHFCQUFLLFdBQUwsQ0FBaUIsQ0FBakIsRUFBb0IsT0FBTyxRQUFQLENBQXBCLENBVGtDO0FBVWxDLHFCQUFLLFlBQUwsQ0FBa0IsQ0FBbEIsRUFBcUIsT0FBTyxTQUFQLElBQW9CLENBQXBCLENBQXJCLENBVmtDO2FBQXRDOzs7O3dDQWNZO0FBQ1osaUJBQUssU0FBTCxHQUFpQix3QkFBakIsQ0FEWTs7QUFHWixnQkFBTSxnQkFBZ0IscUJBQVcsS0FBSyxLQUFMLENBQVcsT0FBWCxDQUFtQixLQUFuQixFQUEwQixDQUFyQyxDQUFoQixDQUhNO0FBSVosMEJBQWMsUUFBZCxHQUF5QixpQkFBTyxXQUFQLENBSmI7O0FBTVosZ0JBQU0saUJBQWlCLHFCQUFXLEtBQUssS0FBTCxDQUFXLFFBQVgsQ0FBb0IsS0FBcEIsRUFBMkIsQ0FBdEMsQ0FBakIsQ0FOTTtBQU9aLDJCQUFlLFFBQWYsR0FBMEIsaUJBQU8sV0FBUCxDQVBkOztBQVNaLGdCQUFNLGNBQWMscUJBQVcsS0FBSyxLQUFMLENBQVcsS0FBWCxDQUFpQixLQUFqQixFQUF3QixDQUFuQyxDQUFkLENBVE07QUFVWix3QkFBWSxRQUFaLEdBQXVCLGlCQUFPLFdBQVAsQ0FWWDs7QUFZWixnQkFBTSxlQUFlLHFCQUFXLEtBQUssS0FBTCxDQUFXLE1BQVgsQ0FBa0IsS0FBbEIsRUFBeUIsQ0FBcEMsQ0FBZixDQVpNO0FBYVoseUJBQWEsUUFBYixHQUF3QixpQkFBTyxXQUFQLENBYlo7O0FBZVosZ0JBQU0sbUJBQW1CLHFCQUFXLEtBQUssS0FBTCxDQUFXLFVBQVgsQ0FBc0IsS0FBdEIsRUFBNkIsQ0FBeEMsQ0FBbkIsQ0FmTTtBQWdCWiw2QkFBaUIsUUFBakIsR0FBNEIsaUJBQU8sV0FBUCxDQWhCaEI7O0FBa0JaLGdCQUFNLG9CQUFvQixxQkFBVyxLQUFLLEtBQUwsQ0FBVyxXQUFYLENBQXVCLEtBQXZCLEVBQThCLENBQXpDLENBQXBCLENBbEJNOztBQW9CWixpQkFBSyxTQUFMLENBQ0ssU0FETCxDQUNlLGFBRGYsRUFDOEIsaUJBRDlCLEVBRUssU0FGTCxDQUVlLFNBRmYsRUFFMEIsYUFGMUIsRUFJSyxTQUpMLENBSWUsVUFKZixFQUkyQixjQUozQixFQUtLLFNBTEwsQ0FLZSxPQUxmLEVBS3dCLFdBTHhCLEVBTUssU0FOTCxDQU1lLFFBTmYsRUFNeUIsWUFOekIsRUFPSyxTQVBMLENBT2UsWUFQZixFQU82QixnQkFQN0IsRUFwQlk7Ozs7V0E5T2Q7OztrQkE2UVMiLCJmaWxlIjoiTXVsdGlTcHJpdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT2JqZWN0M0QgZnJvbSAnLi9PYmplY3QzRCc7XG5pbXBvcnQgR2VvbWV0cnkgZnJvbSAnLi9HZW9tZXRyeSc7XG5pbXBvcnQgQnVmZmVyIGZyb20gJy4vQnVmZmVyJztcblxuLyoqXG4gKiDQmNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LTQu9GPINC+0YLRgNC40YHQvtCy0LrQuCDQvNGD0LvRjNGC0LjRgdC/0YDQsNC50YLQvtCyLiDQnNGD0LvRjNGC0LjRgdC/0YDQsNC50YIg0L/RgNC10LTRgdGC0LDQstC70Y/QtdGCINGB0L7QsdC+0Lkg0LzQvdC+0LbQtdGB0YLQstC+XG4gKiDRgdC/0YDQsNC50YLQvtCyLCDQutC+0YLQvtGA0YvQtSDRgNC40YHRg9GO0YLRgdGPINCyINC+0LTQuNC9IGRyYXcgY2FsbC4g0KHQv9GA0LDQudGC0LDQvNC4INCyINC80YPQu9GM0YLQuNGB0L/RgNCw0LnRgtC1INC80L7QttC90L5cbiAqINGD0L/RgNCw0LLQu9GP0YLRjCDQvdC10LfQsNCy0LjRgdC40LzQviDQtNGA0YPQsyDQvtGCINC00YDRg9Cz0LAuXG4gKlxuICogQGV4dGVuZHMge09iamVjdDNEfVxuICovXG5jbGFzcyBNdWx0aVNwcml0ZSBleHRlbmRzIE9iamVjdDNEIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1Nwcml0ZURlc2NyaXB0b3JbXX0gc3ByaXRlcyDQntC/0LjRgdCw0L3QuNC1INGB0L/RgNCw0LnRgtC+0LIsINCy0YXQvtC00Y/RidC40YUg0LIg0LzRg9C70YzRgtC40YHQv9GA0LDQudGCXG4gICAgICogQHBhcmFtIHtTcHJpdGVNYXRlcmlhbH0gbWF0ZXJpYWxcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihzcHJpdGVzLCBtYXRlcmlhbCkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQn9GA0L7Qs9GA0LDQvNC80LAg0L7RgtGA0LjRgdC+0LLQutC4INGB0L/RgNCw0LnRgtCwXG4gICAgICAgICAqIEB0eXBlIHtTcHJpdGVNYXRlcmlhbH1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubWF0ZXJpYWwgPSBtYXRlcmlhbDtcblxuICAgICAgICB0aGlzLl9pbml0QXJyYXlzKHNwcml0ZXMpO1xuICAgICAgICB0aGlzLl9pbml0R2VvbWV0cnkoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDRgdC/0YDQsNC50YLRgyBvcGFjaXR5XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gc3ByaXRlSW5kZXgg0JjQvdC00LXQutGBINGB0L/RgNCw0LnRgtCwXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHZhbHVlICAgICAgINCd0L7QstC+0LUg0LfQvdCw0YfQtdC90LjQtSBvcGFjaXR5XG4gICAgICovXG4gICAgc2V0T3BhY2l0eShzcHJpdGVJbmRleCwgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgYXJyID0gdGhpcy5fZGF0YS5jb2xvckFscGhhLmFycmF5O1xuICAgICAgICBjb25zdCBzdGFydCA9IHNwcml0ZUluZGV4ICogNjtcblxuICAgICAgICBhcnJbc3RhcnRdID0gdmFsdWU7XG4gICAgICAgIGFycltzdGFydCArIDFdID0gdmFsdWU7XG4gICAgICAgIGFycltzdGFydCArIDJdID0gdmFsdWU7XG4gICAgICAgIGFycltzdGFydCArIDNdID0gdmFsdWU7XG4gICAgICAgIGFycltzdGFydCArIDRdID0gdmFsdWU7XG4gICAgICAgIGFycltzdGFydCArIDVdID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fZGF0YS5jb2xvckFscGhhLmRpcnR5ID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDRgdC/0YDQsNC50YLRgyDQv9C+0LfQuNGG0LjRjlxuICAgICAqXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHNwcml0ZUluZGV4INCY0L3QtNC10LrRgSDRgdC/0YDQsNC50YLQsFxuICAgICAqIEBwYXJhbSB7dmVjMn0gICB2YWx1ZSAgICAgICDQndC+0LLQvtC1INC30L3QsNGH0LXQvdC40LUg0L/QvtC30LjRhtC40LhcbiAgICAgKi9cbiAgICBzZXRQb3NpdGlvbihzcHJpdGVJbmRleCwgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgYXJyID0gdGhpcy5fZGF0YS5wb3NpdGlvbi5hcnJheTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBzcHJpdGVJbmRleCAqIDE4O1xuXG4gICAgICAgIGFycltzdGFydF0gPSB2YWx1ZVswXTsgYXJyW3N0YXJ0ICsgMV0gPSB2YWx1ZVsxXTtcbiAgICAgICAgYXJyW3N0YXJ0ICsgM10gPSB2YWx1ZVswXTsgYXJyW3N0YXJ0ICsgNF0gPSB2YWx1ZVsxXTtcbiAgICAgICAgYXJyW3N0YXJ0ICsgNl0gPSB2YWx1ZVswXTsgYXJyW3N0YXJ0ICsgN10gPSB2YWx1ZVsxXTtcbiAgICAgICAgYXJyW3N0YXJ0ICsgOV0gPSB2YWx1ZVswXTsgYXJyW3N0YXJ0ICsgMTBdID0gdmFsdWVbMV07XG4gICAgICAgIGFycltzdGFydCArIDEyXSA9IHZhbHVlWzBdOyBhcnJbc3RhcnQgKyAxM10gPSB2YWx1ZVsxXTtcbiAgICAgICAgYXJyW3N0YXJ0ICsgMTVdID0gdmFsdWVbMF07IGFycltzdGFydCArIDE2XSA9IHZhbHVlWzFdO1xuXG4gICAgICAgIHRoaXMuX2RhdGEucG9zaXRpb24uZGlydHkgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINGB0L/RgNCw0LnRgtGDINCy0YvRgdC+0YLRg1xuICAgICAqXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHNwcml0ZUluZGV4INCY0L3QtNC10LrRgSDRgdC/0YDQsNC50YLQsFxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB2YWx1ZSAgICAgICDQndC+0LLQvtC1INC30L3QsNGH0LXQvdC40LUg0LLRi9GB0L7RgtGLXG4gICAgICovXG4gICAgc2V0RWxldmF0aW9uKHNwcml0ZUluZGV4LCB2YWx1ZSkge1xuICAgICAgICBjb25zdCBhcnIgPSB0aGlzLl9kYXRhLnBvc2l0aW9uLmFycmF5O1xuICAgICAgICBjb25zdCBzdGFydCA9IHNwcml0ZUluZGV4ICogMTg7XG5cbiAgICAgICAgYXJyW3N0YXJ0ICsgMl0gPSB2YWx1ZTtcbiAgICAgICAgYXJyW3N0YXJ0ICsgNV0gPSB2YWx1ZTtcbiAgICAgICAgYXJyW3N0YXJ0ICsgOF0gPSB2YWx1ZTtcbiAgICAgICAgYXJyW3N0YXJ0ICsgMTFdID0gdmFsdWU7XG4gICAgICAgIGFycltzdGFydCArIDE0XSA9IHZhbHVlO1xuICAgICAgICBhcnJbc3RhcnQgKyAxN10gPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLl9kYXRhLnBvc2l0aW9uLmRpcnR5ID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDRgdC/0YDQsNC50YLRgyDRgNCw0LfQvNC10YBcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBzcHJpdGVJbmRleCDQmNC90LTQtdC60YEg0YHQv9GA0LDQudGC0LBcbiAgICAgKiBAcGFyYW0ge3ZlYzJ9ICAgdmFsdWUgICAgICAg0J3QvtCy0L7QtSDQt9C90LDRh9C10L3QuNC1INGA0LDQt9C80LXRgNCwXG4gICAgICovXG4gICAgc2V0U2l6ZShzcHJpdGVJbmRleCwgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgYXJyID0gdGhpcy5fZGF0YS5zY2FsZS5hcnJheTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBzcHJpdGVJbmRleCAqIDEyO1xuXG4gICAgICAgIGFycltzdGFydF0gPSB2YWx1ZVswXTsgYXJyW3N0YXJ0ICsgMV0gPSB2YWx1ZVsxXTtcbiAgICAgICAgYXJyW3N0YXJ0ICsgMl0gPSB2YWx1ZVswXTsgYXJyW3N0YXJ0ICsgM10gPSB2YWx1ZVsxXTtcbiAgICAgICAgYXJyW3N0YXJ0ICsgNF0gPSB2YWx1ZVswXTsgYXJyW3N0YXJ0ICsgNV0gPSB2YWx1ZVsxXTtcbiAgICAgICAgYXJyW3N0YXJ0ICsgNl0gPSB2YWx1ZVswXTsgYXJyW3N0YXJ0ICsgN10gPSB2YWx1ZVsxXTtcbiAgICAgICAgYXJyW3N0YXJ0ICsgOF0gPSB2YWx1ZVswXTsgYXJyW3N0YXJ0ICsgOV0gPSB2YWx1ZVsxXTtcbiAgICAgICAgYXJyW3N0YXJ0ICsgMTBdID0gdmFsdWVbMF07IGFycltzdGFydCArIDExXSA9IHZhbHVlWzFdO1xuXG4gICAgICAgIHRoaXMuX2RhdGEuc2NhbGUuZGlydHkgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINGB0L/RgNCw0LnRgtGDIGPQvNC10YnQtdC90LjQtVxuICAgICAqXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHNwcml0ZUluZGV4INCY0L3QtNC10LrRgSDRgdC/0YDQsNC50YLQsFxuICAgICAqIEBwYXJhbSB7dmVjMn0gICB2YWx1ZSAgICAgICDQndC+0LLQvtC1INC30L3QsNGH0LXQvdC40LUg0YHQvNC10YnQtdC90LjRj1xuICAgICAqL1xuICAgIHNldE9mZnNldChzcHJpdGVJbmRleCwgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgYXJyID0gdGhpcy5fZGF0YS5vZmZzZXQuYXJyYXk7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gc3ByaXRlSW5kZXggKiAxMjtcblxuICAgICAgICBhcnJbc3RhcnRdID0gdmFsdWVbMF07IGFycltzdGFydCArIDFdID0gdmFsdWVbMV07XG4gICAgICAgIGFycltzdGFydCArIDJdID0gdmFsdWVbMF07IGFycltzdGFydCArIDNdID0gdmFsdWVbMV07XG4gICAgICAgIGFycltzdGFydCArIDRdID0gdmFsdWVbMF07IGFycltzdGFydCArIDVdID0gdmFsdWVbMV07XG4gICAgICAgIGFycltzdGFydCArIDZdID0gdmFsdWVbMF07IGFycltzdGFydCArIDddID0gdmFsdWVbMV07XG4gICAgICAgIGFycltzdGFydCArIDhdID0gdmFsdWVbMF07IGFycltzdGFydCArIDldID0gdmFsdWVbMV07XG4gICAgICAgIGFycltzdGFydCArIDEwXSA9IHZhbHVlWzBdOyBhcnJbc3RhcnQgKyAxMV0gPSB2YWx1ZVsxXTtcblxuICAgICAgICB0aGlzLl9kYXRhLm9mZnNldC5kaXJ0eSA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0YHQv9GA0LDQudGC0YMg0L3QvtCy0YvQtSBVVi3QutC+0L7RgNC00LjQvdCw0YLRi1xuICAgICAqXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHNwcml0ZUluZGV4INCY0L3QtNC10LrRgSDRgdC/0YDQsNC50YLQsFxuICAgICAqIEBwYXJhbSB7QXJyYXl9ICBib3VuZCAgICAgICDQndC+0LLQvtC1INC30L3QsNGH0LXQvdC40LUg0LrQvtC+0YDQtNC40L3QsNGCXG4gICAgICovXG4gICAgc2V0VVYoc3ByaXRlSW5kZXgsIGJvdW5kKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IHRoaXMuX2RhdGEudGV4dHVyZS5hcnJheTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBzcHJpdGVJbmRleCAqIDEyO1xuXG4gICAgICAgIGFycltzdGFydF0gPSBib3VuZFsyXTsgYXJyW3N0YXJ0ICsgMV0gPSAxIC0gYm91bmRbM107XG4gICAgICAgIGFycltzdGFydCArIDJdID0gYm91bmRbMl07IGFycltzdGFydCArIDNdID0gMSAtIGJvdW5kWzFdO1xuICAgICAgICBhcnJbc3RhcnQgKyA0XSA9IGJvdW5kWzBdOyBhcnJbc3RhcnQgKyA1XSA9IDEgLSBib3VuZFszXTtcbiAgICAgICAgYXJyW3N0YXJ0ICsgNl0gPSBib3VuZFswXTsgYXJyW3N0YXJ0ICsgN10gPSAxIC0gYm91bmRbMV07XG4gICAgICAgIGFycltzdGFydCArIDhdID0gYm91bmRbMF07IGFycltzdGFydCArIDldID0gMSAtIGJvdW5kWzNdO1xuICAgICAgICBhcnJbc3RhcnQgKyAxMF0gPSBib3VuZFsyXTsgYXJyW3N0YXJ0ICsgMTFdID0gMSAtIGJvdW5kWzFdO1xuXG4gICAgICAgIHRoaXMuX2RhdGEudGV4dHVyZS5kaXJ0eSA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcmVuZGVyKHN0YXRlKSB7XG4gICAgICAgIGNvbnN0IHtnbCwgc2hhZGVyUHJvZ3JhbX0gPSBzdGF0ZTtcbiAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSB0aGlzLl9nZW9tZXRyeTtcblxuICAgICAgICBzaGFkZXJQcm9ncmFtLmJpbmQoZ2wsIG51bGwsIHtcbiAgICAgICAgICAgIHRleHR1cmU6IGdlb21ldHJ5LmdldEJ1ZmZlcigndGV4dHVyZScpLFxuICAgICAgICAgICAgcG9zaXRpb246IGdlb21ldHJ5LmdldEJ1ZmZlcigncG9zaXRpb24nKSxcbiAgICAgICAgICAgIGNvbG9yQWxwaGE6IGdlb21ldHJ5LmdldEJ1ZmZlcignY29sb3JBbHBoYScpLFxuICAgICAgICAgICAgc2NhbGU6IGdlb21ldHJ5LmdldEJ1ZmZlcignc2NhbGUnKSxcbiAgICAgICAgICAgIG9mZnNldDogZ2VvbWV0cnkuZ2V0QnVmZmVyKCdvZmZzZXQnKSxcbiAgICAgICAgICAgIGRpc3Bvc2l0aW9uOiBnZW9tZXRyeS5nZXRCdWZmZXIoJ2Rpc3Bvc2l0aW9uJylcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5fZGF0YSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGFba2V5XS5kaXJ0eSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2dlb21ldHJ5LmdldEJ1ZmZlcihrZXkpLnN1YkRhdGEoZ2wsIDAsIHRoaXMuX2RhdGFba2V5XS5hcnJheSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YVtrZXldLmRpcnR5ID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1hdGVyaWFsLmVuYWJsZShzdGF0ZSk7XG4gICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCAwLCB0aGlzLl9nZW9tZXRyeS5nZXRCdWZmZXIoJ2Rpc3Bvc2l0aW9uJykubGVuZ3RoKTtcbiAgICAgICAgdGhpcy5tYXRlcmlhbC5kaXNhYmxlKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLRi9C30YvQstCw0LXRgtGB0Y8g0L3QsCDRjdGC0LDQv9C1INGA0LXQvdC00LXRgNC40L3Qs9CwLCDRh9GC0L7QsdGLINC+0L/RgNC10LTQtdC70LjRgtGMINC6INC60LDQutC+0LzRgyDRgtC40L/RgyDRgNC10L3QtNC10YDQsCDQv9GA0LjQvdCw0LTQu9C10LbQuNGCINC+0LHRitC10LrRgi5cbiAgICAgKiDQodC/0YDQsNC50YLRiyDRgNC40YHRg9GO0YLRgdGPINC+0YLQtNC10LvRjNC90YvQvCDRgNC10L3QtNC10YDQvtC8LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUeXBlZE9iamVjdHN9IHR5cGVkT2JqZWN0c1xuICAgICAqL1xuICAgIHR5cGlmeUZvclJlbmRlcih0eXBlZE9iamVjdHMpIHtcbiAgICAgICAgLy8g0JXRgdC70LggY9C/0YDQsNC50YIg0L3QtdCy0LjQtNC40Lwg0LjQu9C4INGDINC/0YDQvtCz0YDQsNC80LzRiyDRgdC/0YDQsNC50YLQsCDQvdC1INGD0YHRgtCw0L3QvtCy0LvQtdC90LAg0YLQtdC60YHRgtGD0YDQsCwg0YLQviDQvdC1INGA0LXQvdC00LXRgNC40Lwg0LXQs9C+XG4gICAgICAgIGlmICghdGhpcy52aXNpYmxlIHx8ICF0aGlzLm1hdGVyaWFsLmdldFRleHR1cmUoKSkgeyByZXR1cm4gdGhpczsgfVxuXG4gICAgICAgIHRoaXMubWF0ZXJpYWwudHlwaWZ5Rm9yUmVuZGVyKHR5cGVkT2JqZWN0cywgdGhpcyk7XG5cbiAgICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IGNoaWxkLnR5cGlmeUZvclJlbmRlcih0eXBlZE9iamVjdHMpKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBfaW5pdEFycmF5cyhzcHJpdGVzKSB7XG4gICAgICAgIGNvbnN0IHNwcml0ZUNvdW50ID0gc3ByaXRlcy5sZW5ndGg7XG5cbiAgICAgICAgY29uc3QgZWxlbWVudERpc3Bvc2l0aW9uID0gW1xuICAgICAgICAgICAgMC41LCAtMC41LCAwLFxuICAgICAgICAgICAgMC41LCAwLjUsIDAsXG4gICAgICAgICAgICAtMC41LCAtMC41LCAwLFxuXG4gICAgICAgICAgICAtMC41LCAwLjUsIDAsXG4gICAgICAgICAgICAtMC41LCAtMC41LCAwLFxuICAgICAgICAgICAgMC41LCAwLjUsIDBcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBkaXNwb3NpdGlvbkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShzcHJpdGVDb3VudCAqIDE4KTtcbiAgICAgICAgY29uc3QgdGV4dHVyZUFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShzcHJpdGVDb3VudCAqIDEyKTtcblxuICAgICAgICBjb25zdCBwb3NpdGlvbkFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShzcHJpdGVDb3VudCAqIDE4KTtcbiAgICAgICAgY29uc3Qgc2NhbGVBcnJheSA9IG5ldyBGbG9hdDMyQXJyYXkoc3ByaXRlQ291bnQgKiAxMik7XG4gICAgICAgIGNvbnN0IG9mZnNldEFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShzcHJpdGVDb3VudCAqIDEyKTtcbiAgICAgICAgY29uc3QgY29sb3JBbHBoYUFycmF5ID0gbmV3IEZsb2F0MzJBcnJheShzcHJpdGVDb3VudCAqIDYpO1xuXG4gICAgICAgIHRoaXMuX2RhdGEgPSB7XG4gICAgICAgICAgICBkaXNwb3NpdGlvbjoge2FycmF5OiBkaXNwb3NpdGlvbkFycmF5LCBkaXJ0eTogZmFsc2V9LFxuICAgICAgICAgICAgdGV4dHVyZToge2FycmF5OiB0ZXh0dXJlQXJyYXksIGRpcnR5OiBmYWxzZX0sXG4gICAgICAgICAgICBwb3NpdGlvbjoge2FycmF5OiBwb3NpdGlvbkFycmF5LCBkaXJ0eTogZmFsc2V9LFxuICAgICAgICAgICAgc2NhbGU6IHthcnJheTogc2NhbGVBcnJheSwgZGlydHk6IGZhbHNlfSxcbiAgICAgICAgICAgIG9mZnNldDoge2FycmF5OiBvZmZzZXRBcnJheSwgZGlydHk6IGZhbHNlfSxcbiAgICAgICAgICAgIGNvbG9yQWxwaGE6IHthcnJheTogY29sb3JBbHBoYUFycmF5LCBkaXJ0eTogZmFsc2V9XG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzcHJpdGVDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBzcHJpdGUgPSBzcHJpdGVzW2ldO1xuXG4gICAgICAgICAgICBkaXNwb3NpdGlvbkFycmF5LnNldChlbGVtZW50RGlzcG9zaXRpb24sIGkgKiAxOCk7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0VVYoaSwgc3ByaXRlLnV2IHx8IFswLCAwLCAxLCAxXSk7XG4gICAgICAgICAgICB0aGlzLnNldFNpemUoaSwgc3ByaXRlLnNpemUgfHwgWzAsIDBdKTtcbiAgICAgICAgICAgIHRoaXMuc2V0T2Zmc2V0KGksIHNwcml0ZS5vZmZzZXQgfHwgWzAsIDBdKTtcbiAgICAgICAgICAgIHRoaXMuc2V0T3BhY2l0eShpLCBzcHJpdGUub3BhY2l0eSAhPT0gdW5kZWZpbmVkID8gc3ByaXRlLm9wYWNpdHkgOiAxKTtcbiAgICAgICAgICAgIHRoaXMuc2V0UG9zaXRpb24oaSwgc3ByaXRlLnBvc2l0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuc2V0RWxldmF0aW9uKGksIHNwcml0ZS5lbGV2YXRpb24gfHwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfaW5pdEdlb21ldHJ5KCkge1xuICAgICAgICB0aGlzLl9nZW9tZXRyeSA9IG5ldyBHZW9tZXRyeSgpO1xuXG4gICAgICAgIGNvbnN0IHRleHR1cmVCdWZmZXIgPSBuZXcgQnVmZmVyKHRoaXMuX2RhdGEudGV4dHVyZS5hcnJheSwgMik7XG4gICAgICAgIHRleHR1cmVCdWZmZXIuZHJhd1R5cGUgPSBCdWZmZXIuRHluYW1pY0RyYXc7XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb25CdWZmZXIgPSBuZXcgQnVmZmVyKHRoaXMuX2RhdGEucG9zaXRpb24uYXJyYXksIDMpO1xuICAgICAgICBwb3NpdGlvbkJ1ZmZlci5kcmF3VHlwZSA9IEJ1ZmZlci5EeW5hbWljRHJhdztcblxuICAgICAgICBjb25zdCBzY2FsZUJ1ZmZlciA9IG5ldyBCdWZmZXIodGhpcy5fZGF0YS5zY2FsZS5hcnJheSwgMik7XG4gICAgICAgIHNjYWxlQnVmZmVyLmRyYXdUeXBlID0gQnVmZmVyLkR5bmFtaWNEcmF3O1xuXG4gICAgICAgIGNvbnN0IG9mZnNldEJ1ZmZlciA9IG5ldyBCdWZmZXIodGhpcy5fZGF0YS5vZmZzZXQuYXJyYXksIDIpO1xuICAgICAgICBvZmZzZXRCdWZmZXIuZHJhd1R5cGUgPSBCdWZmZXIuRHluYW1pY0RyYXc7XG5cbiAgICAgICAgY29uc3QgY29sb3JBbHBoYUJ1ZmZlciA9IG5ldyBCdWZmZXIodGhpcy5fZGF0YS5jb2xvckFscGhhLmFycmF5LCAxKTtcbiAgICAgICAgY29sb3JBbHBoYUJ1ZmZlci5kcmF3VHlwZSA9IEJ1ZmZlci5EeW5hbWljRHJhdztcblxuICAgICAgICBjb25zdCBkaXNwb3NpdGlvbkJ1ZmZlciA9IG5ldyBCdWZmZXIodGhpcy5fZGF0YS5kaXNwb3NpdGlvbi5hcnJheSwgMyk7XG5cbiAgICAgICAgdGhpcy5fZ2VvbWV0cnlcbiAgICAgICAgICAgIC5zZXRCdWZmZXIoJ2Rpc3Bvc2l0aW9uJywgZGlzcG9zaXRpb25CdWZmZXIpXG4gICAgICAgICAgICAuc2V0QnVmZmVyKCd0ZXh0dXJlJywgdGV4dHVyZUJ1ZmZlcilcblxuICAgICAgICAgICAgLnNldEJ1ZmZlcigncG9zaXRpb24nLCBwb3NpdGlvbkJ1ZmZlcilcbiAgICAgICAgICAgIC5zZXRCdWZmZXIoJ3NjYWxlJywgc2NhbGVCdWZmZXIpXG4gICAgICAgICAgICAuc2V0QnVmZmVyKCdvZmZzZXQnLCBvZmZzZXRCdWZmZXIpXG4gICAgICAgICAgICAuc2V0QnVmZmVyKCdjb2xvckFscGhhJywgY29sb3JBbHBoYUJ1ZmZlcik7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNdWx0aVNwcml0ZTtcblxuLyoqXG4gKiDQntC/0LjRgdCw0L3QuNC1INGB0L/RgNCw0LnRgtCwLiDQnNCw0YHRgdC40LIg0YLQsNC60LjRhSDQvtCx0YrQtdC60YLQvtCyINC/0LXRgNC10LTQsNGR0YLRgdGPINCyINC60L7QvdGB0YLRgNGD0LrRgtC+0YAg0LrQu9Cw0YHRgdCwXG4gKiBNdWx0aVNwcml0ZVxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFNwcml0ZURlc2NyaXB0b3JcbiAqIEBwcm9wZXJ0eSB7dmVjMn0gcG9zaXRpb24g0JrQvtC+0YDQtNC40L3QsNGC0Ysg0YHQv9GA0LDQudGC0LAg0LIg0L/Qu9C+0YHQutC+0YHRgtC4IFhZXG4gKiBAcHJvcGVydHkge3ZlYzJ9IHNpemUg0KDQsNC30LzQtdGAINGB0L/RgNCw0LnRgtCwINCyINC/0LjQutGB0LXQu9GP0YVcbiAqIEBwcm9wZXJ0eSB7dmVjMn0gb2Zmc2V0INCh0LzQtdGJ0LXQvdC40LUg0YHQv9GA0LDQudGC0LAg0LIg0L/QuNC60YHQtdC70Y/RhSDQsiDQv9C70L7RgdC60L7RgdGC0Lgg0Y3QutGA0LDQvdCwXG4gKiBAcHJvcGVydHkge051bWJlcn0gZWxldmF0aW9uINCS0YvRgdC+0YLQsCDRgdC/0YDQsNC50YLQsCDQv9C+INC+0YHQuCBaXG4gKiBAcHJvcGVydHkge051bWJlcn0gb3BhY2l0eSDQntC/0LDRgdC40YLQuCDRgdC/0YDQsNC50YLQsFxuICogQHByb3BlcnR5IHtBcnJheX0gdXYg0JrQvtC+0YDQtNC40L3QsNGC0Ysg0YLQtdC60YHRgtGD0YDRiyDRgdC/0YDQsNC50YLQsFxuICovXG4iXX0=
{
"name": "2gl",
"version": "0.1.0",
"version": "0.2.0",
"description": "WebGL library for 2GIS projects",

@@ -5,0 +5,0 @@ "repository": {

@@ -11,4 +11,4 @@ # 2gl [![Build Status](https://travis-ci.org/2gis/2gl.svg?branch=master)](https://travis-ci.org/2gis/2gl) [![Coverage Status](https://coveralls.io/repos/2gis/2gl/badge.svg?branch=master&service=github)](https://coveralls.io/github/2gis/2gl?branch=master)

1. [Basic mesh](https://2gis.github.io/2gl/docs/BasicMeshProgram.html) - меш, закрашивается в один цвет
2. [Complex mesh](https://2gis.github.io/2gl/docs/ComplexMeshProgram.html) - меш, для которого можно устанавить: цвета для каждой из вершин, освещение, текстуру и определять для какой из вершин будет использоваться текстура
1. [Basic mesh](https://2gis.github.io/2gl/docs/BasicMeshMaterial.html) - меш, закрашивается в один цвет
2. [Complex mesh](https://2gis.github.io/2gl/docs/ComplexMeshMaterial.html) - меш, для которого можно устанавить: цвета для каждой из вершин, освещение, текстуру и определять для какой из вершин будет использоваться текстура
3. [Sprite](https://2gis.github.io/2gl/docs/Sprite.html) - спрайт, к камере расположен всегда одной гранью, удалённость не влияет на размеры изображения

@@ -15,0 +15,0 @@ 4. [MultiSprite](https://2gis.github.io/2gl/docs/MultiSprite.html) - мультиспрайт представляет собой множество спрайтов, которые рисуются в один draw call

@@ -35,6 +35,6 @@ 'use strict';

/**
* @param {SpriteProgram} program
* @param {SpriteMaterial} material
*/
function Sprite(program) {
function Sprite(material) {
_classCallCheck(this, Sprite);

@@ -44,3 +44,3 @@

* Программа отрисовки спрайта
* @type {SpriteProgram}
* @type {SpriteMaterial}
*/

@@ -50,3 +50,3 @@

_this.program = program;
_this.material = material;

@@ -65,3 +65,3 @@ /**

// Если cпрайт невидим или у программы спрайта не установлена текстура, то не рендерим его
if (!this.visible || !this.program.getTexture()) {
if (!this.visible || !this.material.getTexture()) {
return this;

@@ -78,3 +78,3 @@ }

this.program.enable(state);
this.material.enable(state);

@@ -84,3 +84,3 @@ // draw for indices

this.program.disable(state.gl);
this.material.disable(state.gl);

@@ -104,3 +104,3 @@ return this;

this.program.typifyForRender(typedObjects, this);
this.material.typifyForRender(typedObjects, this);

@@ -120,2 +120,2 @@ this.children.forEach(function (child) {

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9TcHJpdGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBVU07Ozs7Ozs7QUFJRixXQUpFLE1BSUYsQ0FBWSxPQUFaLEVBQXFCOzBCQUpuQixRQUltQjs7Ozs7Ozt1RUFKbkIsb0JBSW1COztBQU9qQixVQUFLLE9BQUwsR0FBZSxPQUFmOzs7Ozs7QUFQaUIsU0FhakIsQ0FBSyxNQUFMLEdBQWMsZUFBSyxNQUFMLEVBQWQsQ0FiaUI7O0dBQXJCOztlQUpFOzsyQkFvQkssT0FBTzs7QUFFVixVQUFJLENBQUMsS0FBSyxPQUFMLElBQWdCLENBQUMsS0FBSyxPQUFMLENBQWEsVUFBYixFQUFELEVBQTRCO0FBQUUsZUFBTyxJQUFQLENBQUY7T0FBakQ7O0FBRUEsVUFBSSxLQUFLLHNCQUFMLEVBQTZCO0FBQzdCLGFBQUssaUJBQUwsR0FENkI7T0FBakM7O0FBSUEsVUFBTSxLQUFLLE1BQU0sRUFBTixDQVJEOztBQVVWLFlBQU0sTUFBTixHQUFlLElBQWYsQ0FWVTs7QUFZVixXQUFLLE9BQUwsQ0FBYSxNQUFiLENBQW9CLEtBQXBCOzs7QUFaVSxRQWVWLENBQUcsWUFBSCxDQUFnQixHQUFHLFNBQUgsRUFBYyxDQUE5QixFQUFpQyxHQUFHLGNBQUgsRUFBbUIsQ0FBcEQsRUFmVTs7QUFpQlYsV0FBSyxPQUFMLENBQWEsT0FBYixDQUFxQixNQUFNLEVBQU4sQ0FBckIsQ0FqQlU7O0FBbUJWLGFBQU8sSUFBUCxDQW5CVTs7Ozs7Ozs7Ozs7O29DQTRCRSxjQUFjO0FBQzFCLFVBQUksQ0FBQyxLQUFLLE9BQUwsRUFBYztBQUFFLGVBQU8sSUFBUCxDQUFGO09BQW5COztBQUVBLFdBQUssT0FBTCxDQUFhLGVBQWIsQ0FBNkIsWUFBN0IsRUFBMkMsSUFBM0MsRUFIMEI7O0FBSzFCLFdBQUssUUFBTCxDQUFjLE9BQWQsQ0FBc0I7ZUFBUyxNQUFNLGVBQU4sQ0FBc0IsWUFBdEI7T0FBVCxDQUF0QixDQUwwQjs7QUFPMUIsYUFBTyxJQUFQLENBUDBCOzs7O1NBaEQ1Qjs7O2tCQTJEUyIsImZpbGUiOiJTcHJpdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT2JqZWN0M0QgZnJvbSAnLi9PYmplY3QzRCc7XG5pbXBvcnQge3ZlYzJ9IGZyb20gJ2dsLW1hdHJpeCc7XG5cbi8qKlxuICog0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyDQvtGC0YDQuNGB0L7QstC60Lgg0YHQv9GA0LDQudGC0L7Qsi4g0KHQv9GA0LDQudGC0Ysg0LLRgdC10LPQtNCwINGA0LjRgdGD0Y7RgtGB0Y8g0LvQuNGG0LXQstC+0Lkg0YHRgtC+0YDQvtC90L7QuVxuICog0Lgg0LjRhSDRgNCw0LfQvNC10YDRiyDQvdC1INC30LDQstC40YHRj9GCINC+0YIg0L/QvtC70L7QttC10L3QuNGPLiDQoi7QtS4g0LrQvtC+0YDQtNC40L3QsNGC0Ysg0YHQv9GA0LDQudGC0LAg0L/RgNC+0LXRhtC40YDRg9GO0YLRgdGPINCyINC/0LvQvtGB0LrQvtGB0YLRjCDRjdC60YDQsNC90LAsXG4gKiDQuCDRg9C20LUg0L3QsCDQvdC10Lkg0L7RgtGA0LjRgdC+0LLRi9Cy0LDRjtGC0YHRjy5cbiAqXG4gKiBAZXh0ZW5kcyB7T2JqZWN0M0R9XG4gKi9cbmNsYXNzIFNwcml0ZSBleHRlbmRzIE9iamVjdDNEIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1Nwcml0ZVByb2dyYW19IHByb2dyYW1cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcm9ncmFtKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCf0YDQvtCz0YDQsNC80LzQsCDQvtGC0YDQuNGB0L7QstC60Lgg0YHQv9GA0LDQudGC0LBcbiAgICAgICAgICogQHR5cGUge1Nwcml0ZVByb2dyYW19XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnByb2dyYW0gPSBwcm9ncmFtO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDQodC80LXRidC10L3QuNC1INGB0L/RgNCw0LnRgtCwINCyINC/0LvQvtGB0LrQvtGB0YLQuCDRjdC60YDQsNC90LBcbiAgICAgICAgICogQHR5cGUge3ZlYzJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm9mZnNldCA9IHZlYzIuY3JlYXRlKCk7XG4gICAgfVxuXG4gICAgcmVuZGVyKHN0YXRlKSB7XG4gICAgICAgIC8vINCV0YHQu9C4IGPQv9GA0LDQudGCINC90LXQstC40LTQuNC8INC40LvQuCDRgyDQv9GA0L7Qs9GA0LDQvNC80Ysg0YHQv9GA0LDQudGC0LAg0L3QtSDRg9GB0YLQsNC90L7QstC70LXQvdCwINGC0LXQutGB0YLRg9GA0LAsINGC0L4g0L3QtSDRgNC10L3QtNC10YDQuNC8INC10LPQvlxuICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSB8fCAhdGhpcy5wcm9ncmFtLmdldFRleHR1cmUoKSkgeyByZXR1cm4gdGhpczsgfVxuXG4gICAgICAgIGlmICh0aGlzLndvcmxkTWF0cml4TmVlZHNVcGRhdGUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdsID0gc3RhdGUuZ2w7XG5cbiAgICAgICAgc3RhdGUub2JqZWN0ID0gdGhpcztcblxuICAgICAgICB0aGlzLnByb2dyYW0uZW5hYmxlKHN0YXRlKTtcblxuICAgICAgICAvLyBkcmF3IGZvciBpbmRpY2VzXG4gICAgICAgIGdsLmRyYXdFbGVtZW50cyhnbC5UUklBTkdMRVMsIDYsIGdsLlVOU0lHTkVEX1NIT1JULCAwKTtcblxuICAgICAgICB0aGlzLnByb2dyYW0uZGlzYWJsZShzdGF0ZS5nbCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLRi9C30YvQstCw0LXRgtGB0Y8g0L3QsCDRjdGC0LDQv9C1INGA0LXQvdC00LXRgNC40L3Qs9CwLCDRh9GC0L7QsdGLINC+0L/RgNC10LTQtdC70LjRgtGMINC6INC60LDQutC+0LzRgyDRgtC40L/RgyDRgNC10L3QtNC10YDQsCDQv9GA0LjQvdCw0LTQu9C10LbQuNGCINC+0LHRitC10LrRgi5cbiAgICAgKiDQodC/0YDQsNC50YLRiyDRgNC40YHRg9GO0YLRgdGPINC+0YLQtNC10LvRjNC90YvQvCDRgNC10L3QtNC10YDQvtC8LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtUeXBlZE9iamVjdHN9IHR5cGVkT2JqZWN0c1xuICAgICAqL1xuICAgIHR5cGlmeUZvclJlbmRlcih0eXBlZE9iamVjdHMpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZpc2libGUpIHsgcmV0dXJuIHRoaXM7IH1cblxuICAgICAgICB0aGlzLnByb2dyYW0udHlwaWZ5Rm9yUmVuZGVyKHR5cGVkT2JqZWN0cywgdGhpcyk7XG5cbiAgICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IGNoaWxkLnR5cGlmeUZvclJlbmRlcih0eXBlZE9iamVjdHMpKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNwcml0ZTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9TcHJpdGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBVU07Ozs7Ozs7QUFJRixXQUpFLE1BSUYsQ0FBWSxRQUFaLEVBQXNCOzBCQUpwQixRQUlvQjs7Ozs7Ozt1RUFKcEIsb0JBSW9COztBQU9sQixVQUFLLFFBQUwsR0FBZ0IsUUFBaEI7Ozs7OztBQVBrQixTQWFsQixDQUFLLE1BQUwsR0FBYyxlQUFLLE1BQUwsRUFBZCxDQWJrQjs7R0FBdEI7O2VBSkU7OzJCQW9CSyxPQUFPOztBQUVWLFVBQUksQ0FBQyxLQUFLLE9BQUwsSUFBZ0IsQ0FBQyxLQUFLLFFBQUwsQ0FBYyxVQUFkLEVBQUQsRUFBNkI7QUFBRSxlQUFPLElBQVAsQ0FBRjtPQUFsRDs7QUFFQSxVQUFJLEtBQUssc0JBQUwsRUFBNkI7QUFDN0IsYUFBSyxpQkFBTCxHQUQ2QjtPQUFqQzs7QUFJQSxVQUFNLEtBQUssTUFBTSxFQUFOLENBUkQ7O0FBVVYsWUFBTSxNQUFOLEdBQWUsSUFBZixDQVZVOztBQVlWLFdBQUssUUFBTCxDQUFjLE1BQWQsQ0FBcUIsS0FBckI7OztBQVpVLFFBZVYsQ0FBRyxZQUFILENBQWdCLEdBQUcsU0FBSCxFQUFjLENBQTlCLEVBQWlDLEdBQUcsY0FBSCxFQUFtQixDQUFwRCxFQWZVOztBQWlCVixXQUFLLFFBQUwsQ0FBYyxPQUFkLENBQXNCLE1BQU0sRUFBTixDQUF0QixDQWpCVTs7QUFtQlYsYUFBTyxJQUFQLENBbkJVOzs7Ozs7Ozs7Ozs7b0NBNEJFLGNBQWM7QUFDMUIsVUFBSSxDQUFDLEtBQUssT0FBTCxFQUFjO0FBQUUsZUFBTyxJQUFQLENBQUY7T0FBbkI7O0FBRUEsV0FBSyxRQUFMLENBQWMsZUFBZCxDQUE4QixZQUE5QixFQUE0QyxJQUE1QyxFQUgwQjs7QUFLMUIsV0FBSyxRQUFMLENBQWMsT0FBZCxDQUFzQjtlQUFTLE1BQU0sZUFBTixDQUFzQixZQUF0QjtPQUFULENBQXRCLENBTDBCOztBQU8xQixhQUFPLElBQVAsQ0FQMEI7Ozs7U0FoRDVCOzs7a0JBMkRTIiwiZmlsZSI6IlNwcml0ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBPYmplY3QzRCBmcm9tICcuL09iamVjdDNEJztcbmltcG9ydCB7dmVjMn0gZnJvbSAnZ2wtbWF0cml4JztcblxuLyoqXG4gKiDQmNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0LTQu9GPINC+0YLRgNC40YHQvtCy0LrQuCDRgdC/0YDQsNC50YLQvtCyLiDQodC/0YDQsNC50YLRiyDQstGB0LXQs9C00LAg0YDQuNGB0YPRjtGC0YHRjyDQu9C40YbQtdCy0L7QuSDRgdGC0L7RgNC+0L3QvtC5XG4gKiDQuCDQuNGFINGA0LDQt9C80LXRgNGLINC90LUg0LfQsNCy0LjRgdGP0YIg0L7RgiDQv9C+0LvQvtC20LXQvdC40Y8uINCiLtC1LiDQutC+0L7RgNC00LjQvdCw0YLRiyDRgdC/0YDQsNC50YLQsCDQv9GA0L7QtdGG0LjRgNGD0Y7RgtGB0Y8g0LIg0L/Qu9C+0YHQutC+0YHRgtGMINGN0LrRgNCw0L3QsCxcbiAqINC4INGD0LbQtSDQvdCwINC90LXQuSDQvtGC0YDQuNGB0L7QstGL0LLQsNGO0YLRgdGPLlxuICpcbiAqIEBleHRlbmRzIHtPYmplY3QzRH1cbiAqL1xuY2xhc3MgU3ByaXRlIGV4dGVuZHMgT2JqZWN0M0Qge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7U3ByaXRlTWF0ZXJpYWx9IG1hdGVyaWFsXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobWF0ZXJpYWwpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICog0J/RgNC+0LPRgNCw0LzQvNCwINC+0YLRgNC40YHQvtCy0LrQuCDRgdC/0YDQsNC50YLQsFxuICAgICAgICAgKiBAdHlwZSB7U3ByaXRlTWF0ZXJpYWx9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm1hdGVyaWFsID0gbWF0ZXJpYWw7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqINCh0LzQtdGJ0LXQvdC40LUg0YHQv9GA0LDQudGC0LAg0LIg0L/Qu9C+0YHQutC+0YHRgtC4INGN0LrRgNCw0L3QsFxuICAgICAgICAgKiBAdHlwZSB7dmVjMn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub2Zmc2V0ID0gdmVjMi5jcmVhdGUoKTtcbiAgICB9XG5cbiAgICByZW5kZXIoc3RhdGUpIHtcbiAgICAgICAgLy8g0JXRgdC70LggY9C/0YDQsNC50YIg0L3QtdCy0LjQtNC40Lwg0LjQu9C4INGDINC/0YDQvtCz0YDQsNC80LzRiyDRgdC/0YDQsNC50YLQsCDQvdC1INGD0YHRgtCw0L3QvtCy0LvQtdC90LAg0YLQtdC60YHRgtGD0YDQsCwg0YLQviDQvdC1INGA0LXQvdC00LXRgNC40Lwg0LXQs9C+XG4gICAgICAgIGlmICghdGhpcy52aXNpYmxlIHx8ICF0aGlzLm1hdGVyaWFsLmdldFRleHR1cmUoKSkgeyByZXR1cm4gdGhpczsgfVxuXG4gICAgICAgIGlmICh0aGlzLndvcmxkTWF0cml4TmVlZHNVcGRhdGUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdsID0gc3RhdGUuZ2w7XG5cbiAgICAgICAgc3RhdGUub2JqZWN0ID0gdGhpcztcblxuICAgICAgICB0aGlzLm1hdGVyaWFsLmVuYWJsZShzdGF0ZSk7XG5cbiAgICAgICAgLy8gZHJhdyBmb3IgaW5kaWNlc1xuICAgICAgICBnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVTLCA2LCBnbC5VTlNJR05FRF9TSE9SVCwgMCk7XG5cbiAgICAgICAgdGhpcy5tYXRlcmlhbC5kaXNhYmxlKHN0YXRlLmdsKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktGL0LfRi9Cy0LDQtdGC0YHRjyDQvdCwINGN0YLQsNC/0LUg0YDQtdC90LTQtdGA0LjQvdCz0LAsINGH0YLQvtCx0Ysg0L7Qv9GA0LXQtNC10LvQuNGC0Ywg0Log0LrQsNC60L7QvNGDINGC0LjQv9GDINGA0LXQvdC00LXRgNCwINC/0YDQuNC90LDQtNC70LXQttC40YIg0L7QsdGK0LXQutGCLlxuICAgICAqINCh0L/RgNCw0LnRgtGLINGA0LjRgdGD0Y7RgtGB0Y8g0L7RgtC00LXQu9GM0L3Ri9C8INGA0LXQvdC00LXRgNC+0LwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1R5cGVkT2JqZWN0c30gdHlwZWRPYmplY3RzXG4gICAgICovXG4gICAgdHlwaWZ5Rm9yUmVuZGVyKHR5cGVkT2JqZWN0cykge1xuICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkgeyByZXR1cm4gdGhpczsgfVxuXG4gICAgICAgIHRoaXMubWF0ZXJpYWwudHlwaWZ5Rm9yUmVuZGVyKHR5cGVkT2JqZWN0cywgdGhpcyk7XG5cbiAgICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IGNoaWxkLnR5cGlmeUZvclJlbmRlcih0eXBlZE9iamVjdHMpKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNwcml0ZTtcbiJdfQ==

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