diff --git a/build/proton.js b/build/proton.js index e540a71..9e10dc5 100755 --- a/build/proton.js +++ b/build/proton.js @@ -355,6 +355,13 @@ toArray: function toArray(arr) { return this.isArray(arr) ? arr : [arr]; }, + sliceArray: function sliceArray(arr1, index, arr2) { + this.emptyArray(arr2); + + for (var i = index; i < arr1.length; i++) { + arr2.push(arr1[i]); + } + }, getRandFromArray: function getRandFromArray(arr) { if (!arr) return null; return arr[Math.floor(arr.length * Math.random())]; @@ -2378,9 +2385,9 @@ _proto.initialize = function initialize(particle) {} /** - * Apply this behaviour for all particles every time + * computing life cycle * - * @method applyBehaviour + * @method calculate * @memberof Proton.Behaviour * @instance * @@ -2766,6 +2773,8 @@ _this.reset(emitter, mass, callback); + _this.newPool = []; + _this.pool = []; _this.name = "Collision"; return _this; } @@ -2810,8 +2819,13 @@ ; _proto.applyBehaviour = function applyBehaviour(particle, time, index) { - var newPool = this.emitter ? this.emitter.particles.slice(index) : this.pool.slice(index); - var length = newPool.length; + if (this.emitter) { + Util.sliceArray(this.emitter.particles, index, this.newPool); + } else { + Util.sliceArray(this.pool, index, this.newPool); + } + + var length = this.newPool.length; var otherParticle; var lengthSq; var overlap; @@ -2820,7 +2834,7 @@ var i; for (i = 0; i < length; i++) { - otherParticle = newPool[i]; + otherParticle = this.newPool[i]; if (otherParticle !== particle) { this.delta.copy(otherParticle.p); @@ -5510,4 +5524,4 @@ return Proton; })); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9uLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMvV2ViR0xVdGlsLmpzIiwiLi4vc3JjL3V0aWxzL0RvbVV0aWwuanMiLCIuLi9zcmMvdXRpbHMvSW1nVXRpbC5qcyIsIi4uL3NyYy91dGlscy9VdGlsLmpzIiwiLi4vc3JjL3V0aWxzL1B1aWQuanMiLCIuLi9zcmMvY29yZS9Qb29sLmpzIiwiLi4vc3JjL2RlYnVnL1N0YXRzLmpzIiwiLi4vc3JjL2V2ZW50cy9FdmVudERpc3BhdGNoZXIuanMiLCIuLi9zcmMvbWF0aC9NYXRoVXRpbC5qcyIsIi4uL3NyYy9tYXRoL0ludGVncmF0aW9uLmpzIiwiLi4vc3JjL2NvcmUvUHJvdG9uLmpzIiwiLi4vc3JjL3V0aWxzL1JnYi5qcyIsIi4uL3NyYy91dGlscy9Qcm9wVXRpbC5qcyIsIi4uL3NyYy9tYXRoL2Vhc2UuanMiLCIuLi9zcmMvbWF0aC9WZWN0b3IyRC5qcyIsIi4uL3NyYy9jb3JlL1BhcnRpY2xlLmpzIiwiLi4vc3JjL3V0aWxzL0NvbG9yVXRpbC5qcyIsIi4uL3NyYy9tYXRoL1BvbGFyMkQuanMiLCIuLi9zcmMvbWF0aC9NYXQzLmpzIiwiLi4vc3JjL21hdGgvU3Bhbi5qcyIsIi4uL3NyYy9tYXRoL0FycmF5U3Bhbi5qcyIsIi4uL3NyYy9tYXRoL1JlY3RhbmdsZS5qcyIsIi4uL3NyYy9pbml0aWFsaXplL1JhdGUuanMiLCIuLi9zcmMvaW5pdGlhbGl6ZS9Jbml0aWFsaXplLmpzIiwiLi4vc3JjL2luaXRpYWxpemUvTGlmZS5qcyIsIi4uL3NyYy96b25lL1pvbmUuanMiLCIuLi9zcmMvem9uZS9Qb2ludFpvbmUuanMiLCIuLi9zcmMvaW5pdGlhbGl6ZS9Qb3NpdGlvbi5qcyIsIi4uL3NyYy9pbml0aWFsaXplL1ZlbG9jaXR5LmpzIiwiLi4vc3JjL2luaXRpYWxpemUvTWFzcy5qcyIsIi4uL3NyYy9pbml0aWFsaXplL1JhZGl1cy5qcyIsIi4uL3NyYy9pbml0aWFsaXplL0JvZHkuanMiLCIuLi9zcmMvYmVoYXZpb3VyL0JlaGF2aW91ci5qcyIsIi4uL3NyYy9iZWhhdmlvdXIvRm9yY2UuanMiLCIuLi9zcmMvYmVoYXZpb3VyL0F0dHJhY3Rpb24uanMiLCIuLi9zcmMvYmVoYXZpb3VyL1JhbmRvbURyaWZ0LmpzIiwiLi4vc3JjL2JlaGF2aW91ci9HcmF2aXR5LmpzIiwiLi4vc3JjL2JlaGF2aW91ci9Db2xsaXNpb24uanMiLCIuLi9zcmMvYmVoYXZpb3VyL0Nyb3NzWm9uZS5qcyIsIi4uL3NyYy9iZWhhdmlvdXIvQWxwaGEuanMiLCIuLi9zcmMvYmVoYXZpb3VyL1NjYWxlLmpzIiwiLi4vc3JjL2JlaGF2aW91ci9Sb3RhdGUuanMiLCIuLi9zcmMvYmVoYXZpb3VyL0NvbG9yLmpzIiwiLi4vc3JjL2JlaGF2aW91ci9DeWNsb25lLmpzIiwiLi4vc3JjL2JlaGF2aW91ci9SZXB1bHNpb24uanMiLCIuLi9zcmMvYmVoYXZpb3VyL0dyYXZpdHlXZWxsLmpzIiwiLi4vc3JjL2luaXRpYWxpemUvSW5pdGlhbGl6ZVV0aWwuanMiLCIuLi9zcmMvZW1pdHRlci9FbWl0dGVyLmpzIiwiLi4vc3JjL2VtaXR0ZXIvQmVoYXZpb3VyRW1pdHRlci5qcyIsIi4uL3NyYy9lbWl0dGVyL0ZvbGxvd0VtaXR0ZXIuanMiLCIuLi9zcmMvdXRpbHMvVHlwZXMuanMiLCIuLi9zcmMvcmVuZGVyL0Jhc2VSZW5kZXJlci5qcyIsIi4uL3NyYy9yZW5kZXIvQ2FudmFzUmVuZGVyZXIuanMiLCIuLi9zcmMvcmVuZGVyL0RvbVJlbmRlcmVyLmpzIiwiLi4vc3JjL3JlbmRlci9FYXNlbFJlbmRlcmVyLmpzIiwiLi4vc3JjL3JlbmRlci9QaXhlbFJlbmRlcmVyLmpzIiwiLi4vc3JjL3JlbmRlci9QaXhpUmVuZGVyZXIuanMiLCIuLi9zcmMvdXRpbHMvTVN0YWNrLmpzIiwiLi4vc3JjL3JlbmRlci9XZWJHTFJlbmRlcmVyLmpzIiwiLi4vc3JjL3JlbmRlci9DdXN0b21SZW5kZXJlci5qcyIsIi4uL3NyYy96b25lL0xpbmVab25lLmpzIiwiLi4vc3JjL3pvbmUvQ2lyY2xlWm9uZS5qcyIsIi4uL3NyYy96b25lL1JlY3Rab25lLmpzIiwiLi4vc3JjL3pvbmUvSW1hZ2Vab25lLmpzIiwiLi4vc3JjL2RlYnVnL0RlYnVnLmpzIiwiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLldlYkdMVXRpbFxuICAgKiBAbWV0aG9kIGlwb3RcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uXG4gICAqIEB0b2RvIGFkZCBsZW5ndGggZGVzY3JpcHRpb25cbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGxlbmd0aFxuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgKi9cbiAgaXBvdChsZW5ndGgpIHtcbiAgICByZXR1cm4gKGxlbmd0aCAmIChsZW5ndGggLSAxKSkgPT09IDA7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLldlYkdMVXRpbFxuICAgKiBAbWV0aG9kIG5ocG90XG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvblxuICAgKiBAdG9kbyBhZGQgbGVuZ3RoIGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBsZW5ndGhcbiAgICpcbiAgICogQHJldHVybiB7TnVtYmVyfVxuICAgKi9cbiAgbmhwb3QobGVuZ3RoKSB7XG4gICAgLS1sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCAzMjsgaSA8PD0gMSkge1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoIHwgKGxlbmd0aCA+PiBpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGVuZ3RoICsgMTtcbiAgfSxcblxuICAvKipcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uV2ViR0xVdGlsXG4gICAqIEBtZXRob2QgbWFrZVRyYW5zbGF0aW9uXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvblxuICAgKiBAdG9kbyBhZGQgdHgsIHR5IGRlc2NyaXB0aW9uXG4gICAqIEB0b2RvIGFkZCByZXR1cm4gZGVzY3JpcHRpb25cbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHR4IGVpdGhlciAwIG9yIDFcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHR5IGVpdGhlciAwIG9yIDFcbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgbWFrZVRyYW5zbGF0aW9uKHR4LCB0eSkge1xuICAgIHJldHVybiBbMSwgMCwgMCwgMCwgMSwgMCwgdHgsIHR5LCAxXTtcbiAgfSxcblxuICAvKipcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uV2ViR0xVdGlsXG4gICAqIEBtZXRob2QgbWFrZVJvdGF0aW9uXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvblxuICAgKiBAdG9kbyBhZGQgcmV0dXJuIGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBhbmdsZUluUmFkaWFuc1xuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBtYWtlUm90YXRpb24oYW5nbGVJblJhZGlhbnMpIHtcbiAgICBsZXQgYyA9IE1hdGguY29zKGFuZ2xlSW5SYWRpYW5zKTtcbiAgICBsZXQgcyA9IE1hdGguc2luKGFuZ2xlSW5SYWRpYW5zKTtcblxuICAgIHJldHVybiBbYywgLXMsIDAsIHMsIGMsIDAsIDAsIDAsIDFdO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5XZWJHTFV0aWxcbiAgICogQG1ldGhvZCBtYWtlU2NhbGVcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uXG4gICAqIEB0b2RvIGFkZCB0eCwgdHkgZGVzY3JpcHRpb25cbiAgICogQHRvZG8gYWRkIHJldHVybiBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gc3ggZWl0aGVyIDAgb3IgMVxuICAgKiBAcGFyYW0ge051bWJlcn0gc3kgZWl0aGVyIDAgb3IgMVxuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBtYWtlU2NhbGUoc3gsIHN5KSB7XG4gICAgcmV0dXJuIFtzeCwgMCwgMCwgMCwgc3ksIDAsIDAsIDAsIDFdO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5XZWJHTFV0aWxcbiAgICogQG1ldGhvZCBtYXRyaXhNdWx0aXBseVxuICAgKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb25cbiAgICogQHRvZG8gYWRkIGEsIGIgZGVzY3JpcHRpb25cbiAgICogQHRvZG8gYWRkIHJldHVybiBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gYVxuICAgKiBAcGFyYW0ge09iamVjdH0gYlxuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBtYXRyaXhNdWx0aXBseShhLCBiKSB7XG4gICAgbGV0IGEwMCA9IGFbMCAqIDMgKyAwXTtcbiAgICBsZXQgYTAxID0gYVswICogMyArIDFdO1xuICAgIGxldCBhMDIgPSBhWzAgKiAzICsgMl07XG4gICAgbGV0IGExMCA9IGFbMSAqIDMgKyAwXTtcbiAgICBsZXQgYTExID0gYVsxICogMyArIDFdO1xuICAgIGxldCBhMTIgPSBhWzEgKiAzICsgMl07XG4gICAgbGV0IGEyMCA9IGFbMiAqIDMgKyAwXTtcbiAgICBsZXQgYTIxID0gYVsyICogMyArIDFdO1xuICAgIGxldCBhMjIgPSBhWzIgKiAzICsgMl07XG4gICAgbGV0IGIwMCA9IGJbMCAqIDMgKyAwXTtcbiAgICBsZXQgYjAxID0gYlswICogMyArIDFdO1xuICAgIGxldCBiMDIgPSBiWzAgKiAzICsgMl07XG4gICAgbGV0IGIxMCA9IGJbMSAqIDMgKyAwXTtcbiAgICBsZXQgYjExID0gYlsxICogMyArIDFdO1xuICAgIGxldCBiMTIgPSBiWzEgKiAzICsgMl07XG4gICAgbGV0IGIyMCA9IGJbMiAqIDMgKyAwXTtcbiAgICBsZXQgYjIxID0gYlsyICogMyArIDFdO1xuICAgIGxldCBiMjIgPSBiWzIgKiAzICsgMl07XG5cbiAgICByZXR1cm4gW1xuICAgICAgYTAwICogYjAwICsgYTAxICogYjEwICsgYTAyICogYjIwLFxuICAgICAgYTAwICogYjAxICsgYTAxICogYjExICsgYTAyICogYjIxLFxuICAgICAgYTAwICogYjAyICsgYTAxICogYjEyICsgYTAyICogYjIyLFxuICAgICAgYTEwICogYjAwICsgYTExICogYjEwICsgYTEyICogYjIwLFxuICAgICAgYTEwICogYjAxICsgYTExICogYjExICsgYTEyICogYjIxLFxuICAgICAgYTEwICogYjAyICsgYTExICogYjEyICsgYTEyICogYjIyLFxuICAgICAgYTIwICogYjAwICsgYTIxICogYjEwICsgYTIyICogYjIwLFxuICAgICAgYTIwICogYjAxICsgYTIxICogYjExICsgYTIyICogYjIxLFxuICAgICAgYTIwICogYjAyICsgYTIxICogYjEyICsgYTIyICogYjIyXG4gICAgXTtcbiAgfVxufTtcbiIsImV4cG9ydCBkZWZhdWx0IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYW5kIHJldHVybnMgYSBuZXcgY2FudmFzLiBUaGUgb3BhY2l0eSBpcyBieSBkZWZhdWx0IHNldCB0byAwXG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkRvbVV0aWxcbiAgICogQG1ldGhvZCBjcmVhdGVDYW52YXNcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9ICRpZCB0aGUgY2FudmFzJyBpZFxuICAgKiBAcGFyYW0ge051bWJlcn0gJHdpZHRoIHRoZSBjYW52YXMnIHdpZHRoXG4gICAqIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0IHRoZSBjYW52YXMnIGhlaWdodFxuICAgKiBAcGFyYW0ge1N0cmluZ30gWyRwb3NpdGlvbj1hYnNvbHV0ZV0gdGhlIGNhbnZhcycgcG9zaXRpb24sIGRlZmF1bHQgaXMgJ2Fic29sdXRlJ1xuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBjcmVhdGVDYW52YXMoaWQsIHdpZHRoLCBoZWlnaHQsIHBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiKSB7XG4gICAgY29uc3QgZG9tID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcblxuICAgIGRvbS5pZCA9IGlkO1xuICAgIGRvbS53aWR0aCA9IHdpZHRoO1xuICAgIGRvbS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgZG9tLnN0eWxlLm9wYWNpdHkgPSAwO1xuICAgIGRvbS5zdHlsZS5wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIHRoaXMudHJhbnNmb3JtKGRvbSwgLTUwMCwgLTUwMCwgMCwgMCk7XG5cbiAgICByZXR1cm4gZG9tO1xuICB9LFxuXG4gIGNyZWF0ZURpdihpZCwgd2lkdGgsIGhlaWdodCkge1xuICAgIGNvbnN0IGRvbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cbiAgICBkb20uaWQgPSBpZDtcbiAgICBkb20uc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG4gICAgdGhpcy5yZXNpemUoZG9tLCB3aWR0aCwgaGVpZ2h0KTtcblxuICAgIHJldHVybiBkb207XG4gIH0sXG5cbiAgcmVzaXplKGRvbSwgd2lkdGgsIGhlaWdodCkge1xuICAgIGRvbS5zdHlsZS53aWR0aCA9IHdpZHRoICsgXCJweFwiO1xuICAgIGRvbS5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyBcInB4XCI7XG4gICAgZG9tLnN0eWxlLm1hcmdpbkxlZnQgPSAtd2lkdGggLyAyICsgXCJweFwiO1xuICAgIGRvbS5zdHlsZS5tYXJnaW5Ub3AgPSAtaGVpZ2h0IC8gMiArIFwicHhcIjtcbiAgfSxcblxuICAvKipcbiAgICogQWRkcyBhIHRyYW5zZm9ybTogdHJhbnNsYXRlKCksIHNjYWxlKCksIHJvdGF0ZSgpIHRvIGEgZ2l2ZW4gZGl2IGRvbSBmb3IgYWxsIGJyb3dzZXJzXG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkRvbVV0aWxcbiAgICogQG1ldGhvZCB0cmFuc2Zvcm1cbiAgICpcbiAgICogQHBhcmFtIHtIVE1MRGl2RWxlbWVudH0gZGl2XG4gICAqIEBwYXJhbSB7TnVtYmVyfSAkeFxuICAgKiBAcGFyYW0ge051bWJlcn0gJHlcbiAgICogQHBhcmFtIHtOdW1iZXJ9ICRzY2FsZVxuICAgKiBAcGFyYW0ge051bWJlcn0gJHJvdGF0ZVxuICAgKi9cbiAgdHJhbnNmb3JtKGRpdiwgeCwgeSwgc2NhbGUsIHJvdGF0ZSkge1xuICAgIGRpdi5zdHlsZS53aWxsQ2hhbmdlID0gXCJ0cmFuc2Zvcm1cIjtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7eH1weCwgJHt5fXB4KSBzY2FsZSgke3NjYWxlfSkgcm90YXRlKCR7cm90YXRlfWRlZylgO1xuICAgIHRoaXMuY3NzMyhkaXYsIFwidHJhbnNmb3JtXCIsIHRyYW5zZm9ybSk7XG4gIH0sXG5cbiAgdHJhbnNmb3JtM2QoZGl2LCB4LCB5LCBzY2FsZSwgcm90YXRlKSB7XG4gICAgZGl2LnN0eWxlLndpbGxDaGFuZ2UgPSBcInRyYW5zZm9ybVwiO1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke3h9cHgsICR7eX1weCwgMCkgc2NhbGUoJHtzY2FsZX0pIHJvdGF0ZSgke3JvdGF0ZX1kZWcpYDtcbiAgICB0aGlzLmNzczMoZGl2LCBcImJhY2tmYWNlVmlzaWJpbGl0eVwiLCBcImhpZGRlblwiKTtcbiAgICB0aGlzLmNzczMoZGl2LCBcInRyYW5zZm9ybVwiLCB0cmFuc2Zvcm0pO1xuICB9LFxuXG4gIGNzczMoZGl2LCBrZXksIHZhbCkge1xuICAgIGNvbnN0IGJrZXkgPSBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc3Vic3RyKDEpO1xuXG4gICAgZGl2LnN0eWxlW2BXZWJraXQke2JrZXl9YF0gPSB2YWw7XG4gICAgZGl2LnN0eWxlW2BNb3oke2JrZXl9YF0gPSB2YWw7XG4gICAgZGl2LnN0eWxlW2BPJHtia2V5fWBdID0gdmFsO1xuICAgIGRpdi5zdHlsZVtgbXMke2JrZXl9YF0gPSB2YWw7XG4gICAgZGl2LnN0eWxlW2Ake2tleX1gXSA9IHZhbDtcbiAgfVxufTtcbiIsImltcG9ydCBXZWJHTFV0aWwgZnJvbSBcIi4vV2ViR0xVdGlsXCI7XG5pbXBvcnQgRG9tVXRpbCBmcm9tIFwiLi9Eb21VdGlsXCI7XG5cbmNvbnN0IGltZ3NDYWNoZSA9IHt9O1xuY29uc3QgY2FudmFzQ2FjaGUgPSB7fTtcbmxldCBjYW52YXNJZCA9IDA7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBnZXQgdGhlIGltYWdlIGRhdGEuIEl0IGNvdWxkIGJlIG5lY2Vzc2FyeSB0byBjcmVhdGUgYSBQcm90b24uWm9uZS5cbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIGdldEltYWdlRGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge0hUTUxDYW52YXNFbGVtZW50fSAgIGNvbnRleHQgYW55IGNhbnZhcywgbXVzdCBiZSBhIDJkQ29udGV4dCAnY2FudmFzLmdldENvbnRleHQoJzJkJyknXG4gICAqIEBwYXJhbSB7T2JqZWN0fSAgICAgICAgICAgICAgaW1hZ2UgICBjb3VsZCBiZSBhbnkgZG9tIGltYWdlLCBlLmcuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGlzSXNBbkltZ1RhZycpO1xuICAgKiBAcGFyYW0ge1Byb3Rvbi5SZWN0YW5nbGV9ICAgIHJlY3RcbiAgICovXG4gIGdldEltYWdlRGF0YShjb250ZXh0LCBpbWFnZSwgcmVjdCkge1xuICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCByZWN0LngsIHJlY3QueSk7XG4gICAgY29uc3QgaW1hZ2VkYXRhID0gY29udGV4dC5nZXRJbWFnZURhdGEocmVjdC54LCByZWN0LnksIHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0KTtcbiAgICBjb250ZXh0LmNsZWFyUmVjdChyZWN0LngsIHJlY3QueSwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpO1xuXG4gICAgcmV0dXJuIGltYWdlZGF0YTtcbiAgfSxcblxuICAvKipcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIGdldEltZ0Zyb21DYWNoZVxuICAgKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb25cbiAgICogQHRvZG8gZGVzY3JpYmUgZnVuY1xuICAgKlxuICAgKiBAcGFyYW0ge01peGVkfSAgICAgICAgICAgICAgIGltZ1xuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gICAgIHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gICAgICAgICAgICAgZHJhd0NhbnZhcyAgc2V0IHRvIHRydWUgaWYgYSBjYW52YXMgc2hvdWxkIGJlIHNhdmVkIGludG8gcGFydGljbGUuZGF0YS5jYW52YXNcbiAgICogQHBhcmFtIHtCb29sZWFufSAgICAgICAgICAgICBmdW5jXG4gICAqL1xuICBnZXRJbWdGcm9tQ2FjaGUoaW1nLCBjYWxsYmFjaywgcGFyYW0pIHtcbiAgICBjb25zdCBzcmMgPSB0eXBlb2YgaW1nID09PSBcInN0cmluZ1wiID8gaW1nIDogaW1nLnNyYztcblxuICAgIGlmIChpbWdzQ2FjaGVbc3JjXSkge1xuICAgICAgY2FsbGJhY2soaW1nc0NhY2hlW3NyY10sIHBhcmFtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICAgIGltYWdlLm9ubG9hZCA9IGUgPT4ge1xuICAgICAgICBpbWdzQ2FjaGVbc3JjXSA9IGUudGFyZ2V0O1xuICAgICAgICBjYWxsYmFjayhpbWdzQ2FjaGVbc3JjXSwgcGFyYW0pO1xuICAgICAgfTtcblxuICAgICAgaW1hZ2Uuc3JjID0gc3JjO1xuICAgIH1cbiAgfSxcblxuICBnZXRDYW52YXNGcm9tQ2FjaGUoaW1nLCBjYWxsYmFjaywgcGFyYW0pIHtcbiAgICBjb25zdCBzcmMgPSBpbWcuc3JjO1xuXG4gICAgaWYgKCFjYW52YXNDYWNoZVtzcmNdKSB7XG4gICAgICBjb25zdCB3aWR0aCA9IFdlYkdMVXRpbC5uaHBvdChpbWcud2lkdGgpO1xuICAgICAgY29uc3QgaGVpZ2h0ID0gV2ViR0xVdGlsLm5ocG90KGltZy5oZWlnaHQpO1xuXG4gICAgICBjb25zdCBjYW52YXMgPSBEb21VdGlsLmNyZWF0ZUNhbnZhcyhgcHJvdG9uX2NhbnZhc19jYWNoZV8keysrY2FudmFzSWR9YCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltZywgMCwgMCwgaW1nLndpZHRoLCBpbWcuaGVpZ2h0KTtcblxuICAgICAgY2FudmFzQ2FjaGVbc3JjXSA9IGNhbnZhcztcbiAgICB9XG5cbiAgICBjYWxsYmFjayAmJiBjYWxsYmFjayhjYW52YXNDYWNoZVtzcmNdLCBwYXJhbSk7XG5cbiAgICByZXR1cm4gY2FudmFzQ2FjaGVbc3JjXTtcbiAgfVxufTtcbiIsImltcG9ydCBJbWdVdGlsIGZyb20gXCIuL0ltZ1V0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGVmYXVsdCBpZiB0aGUgdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWRcbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIGluaXRWYWx1ZVxuICAgKlxuICAgKiBAcGFyYW0ge01peGVkfSB2YWx1ZSBhIHNwZWNpZmljIHZhbHVlLCBjb3VsZCBiZSBldmVyeXRoaW5nIGJ1dCBudWxsIG9yIHVuZGVmaW5lZFxuICAgKiBAcGFyYW0ge01peGVkfSBkZWZhdWx0cyB0aGUgZGVmYXVsdCBpZiB0aGUgdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWRcbiAgICovXG4gIGluaXRWYWx1ZSh2YWx1ZSwgZGVmYXVsdHMpIHtcbiAgICB2YWx1ZSA9IHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGRlZmF1bHRzO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSB2YWx1ZSBpcyBhIHZhbGlkIGFycmF5XG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBpc0FycmF5XG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlIEFueSBhcnJheVxuICAgKlxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAgICovXG4gIGlzQXJyYXkodmFsdWUpIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZXN0cm95ZXMgdGhlIGdpdmVuIGFycmF5XG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBlbXB0eUFycmF5XG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IEFueSBhcnJheVxuICAgKi9cbiAgZW1wdHlBcnJheShhcnIpIHtcbiAgICBpZiAoYXJyKSBhcnIubGVuZ3RoID0gMDtcbiAgfSxcblxuICB0b0FycmF5KGFycikge1xuICAgIHJldHVybiB0aGlzLmlzQXJyYXkoYXJyKSA/IGFyciA6IFthcnJdO1xuICB9LFxuXG4gIGdldFJhbmRGcm9tQXJyYXkoYXJyKSB7XG4gICAgaWYgKCFhcnIpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBhcnJbTWF0aC5mbG9vcihhcnIubGVuZ3RoICogTWF0aC5yYW5kb20oKSldO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZXN0cm95ZXMgdGhlIGdpdmVuIG9iamVjdFxuICAgKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5VdGlsXG4gICAqIEBtZXRob2QgZW1wdHlPYmplY3RcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iaiBBbnkgb2JqZWN0XG4gICAqL1xuICBlbXB0eU9iamVjdChvYmosIGlnbm9yZSA9IG51bGwpIHtcbiAgICBmb3IgKGxldCBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoaWdub3JlICYmIGlnbm9yZS5pbmRleE9mKGtleSkgPiAtMSkgY29udGludWU7XG4gICAgICBkZWxldGUgb2JqW2tleV07XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBNYWtlcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIGFuZCBiaW5kcyB0aGUgZ2l2ZW4gYXJyYXlcbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIGNsYXNzQXBwbHlcbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29uc3RydWN0b3IgQSBjbGFzcyB0byBtYWtlIGFuIGluc3RhbmNlIGZyb21cbiAgICogQHBhcmFtIHtBcnJheX0gW2FyZ3NdIEFueSBhcnJheSB0byBiaW5kIGl0IHRvIHRoZSBjb25zdHJ1Y3RvclxuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSBpbnN0YW5jZSBvZiBjb25zdHJ1Y3Rvciwgb3B0aW9uYWxseSBiaW5kIHdpdGggYXJnc1xuICAgKi9cbiAgY2xhc3NBcHBseShjb25zdHJ1Y3RvciwgYXJncyA9IG51bGwpIHtcbiAgICBpZiAoIWFyZ3MpIHtcbiAgICAgIHJldHVybiBuZXcgY29uc3RydWN0b3IoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgRmFjdG9yeUZ1bmMgPSBjb25zdHJ1Y3Rvci5iaW5kLmFwcGx5KGNvbnN0cnVjdG9yLCBbbnVsbF0uY29uY2F0KGFyZ3MpKTtcbiAgICAgIHJldHVybiBuZXcgRmFjdG9yeUZ1bmMoKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBnZXQgdGhlIGltYWdlIGRhdGEuIEl0IGNvdWxkIGJlIG5lY2Vzc2FyeSB0byBjcmVhdGUgYSBQcm90b24uWm9uZS5cbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIGdldEltYWdlRGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge0hUTUxDYW52YXNFbGVtZW50fSAgIGNvbnRleHQgYW55IGNhbnZhcywgbXVzdCBiZSBhIDJkQ29udGV4dCAnY2FudmFzLmdldENvbnRleHQoJzJkJyknXG4gICAqIEBwYXJhbSB7T2JqZWN0fSAgICAgICAgICAgICAgaW1hZ2UgICBjb3VsZCBiZSBhbnkgZG9tIGltYWdlLCBlLmcuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGlzSXNBbkltZ1RhZycpO1xuICAgKiBAcGFyYW0ge1Byb3Rvbi5SZWN0YW5nbGV9ICAgIHJlY3RcbiAgICovXG4gIGdldEltYWdlRGF0YShjb250ZXh0LCBpbWFnZSwgcmVjdCkge1xuICAgIHJldHVybiBJbWdVdGlsLmdldEltYWdlRGF0YShjb250ZXh0LCBpbWFnZSwgcmVjdCk7XG4gIH0sXG5cbiAgZGVzdHJveUFsbChhcnIsIHBhcmFtID0gbnVsbCkge1xuICAgIGxldCBpID0gYXJyLmxlbmd0aDtcblxuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGFycltpXS5kZXN0cm95KHBhcmFtKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICAgIGRlbGV0ZSBhcnJbaV07XG4gICAgfVxuXG4gICAgYXJyLmxlbmd0aCA9IDA7XG4gIH0sXG5cbiAgYXNzaWduKHRhcmdldCwgc291cmNlKSB7XG4gICAgaWYgKHR5cGVvZiBPYmplY3QuYXNzaWduICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGZvciAobGV0IGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlKTtcbiAgICB9XG4gIH1cbn07XG4iLCJjb25zdCBpZHNNYXAgPSB7fTtcblxuY29uc3QgUHVpZCA9IHtcbiAgX2luZGV4OiAwLFxuICBfY2FjaGU6IHt9LFxuXG4gIGlkKHR5cGUpIHtcbiAgICBpZiAoaWRzTWFwW3R5cGVdID09PSB1bmRlZmluZWQgfHwgaWRzTWFwW3R5cGVdID09PSBudWxsKSBpZHNNYXBbdHlwZV0gPSAwO1xuICAgIHJldHVybiBgJHt0eXBlfV8ke2lkc01hcFt0eXBlXSsrfWA7XG4gIH0sXG5cbiAgZ2V0SWQodGFyZ2V0KSB7XG4gICAgbGV0IHVpZCA9IHRoaXMuZ2V0SWRGcm9tQ2FjaGUodGFyZ2V0KTtcbiAgICBpZiAodWlkKSByZXR1cm4gdWlkO1xuXG4gICAgdWlkID0gYFBVSURfJHt0aGlzLl9pbmRleCsrfWA7XG4gICAgdGhpcy5fY2FjaGVbdWlkXSA9IHRhcmdldDtcbiAgICByZXR1cm4gdWlkO1xuICB9LFxuXG4gIGdldElkRnJvbUNhY2hlKHRhcmdldCkge1xuICAgIGxldCBvYmosIGlkO1xuXG4gICAgZm9yIChpZCBpbiB0aGlzLl9jYWNoZSkge1xuICAgICAgb2JqID0gdGhpcy5fY2FjaGVbaWRdO1xuXG4gICAgICBpZiAob2JqID09PSB0YXJnZXQpIHJldHVybiBpZDtcbiAgICAgIGlmICh0aGlzLmlzQm9keShvYmosIHRhcmdldCkgJiYgb2JqLnNyYyA9PT0gdGFyZ2V0LnNyYykgcmV0dXJuIGlkO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9LFxuXG4gIGlzQm9keShvYmosIHRhcmdldCkge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiB0YXJnZXQgPT09IFwib2JqZWN0XCIgJiYgb2JqLmlzSW5uZXIgJiYgdGFyZ2V0LmlzSW5uZXI7XG4gIH0sXG5cbiAgZ2V0VGFyZ2V0KHVpZCkge1xuICAgIHJldHVybiB0aGlzLl9jYWNoZVt1aWRdO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBQdWlkO1xuIiwiLyoqXG4gKiBQb29sIGlzIHRoZSBjYWNoZSBwb29sIG9mIHRoZSBwcm90b24gZW5naW5lLCBpdCBpcyB2ZXJ5IGltcG9ydGFudC5cbiAqXG4gKiBnZXQodGFyZ2V0LCBwYXJhbXMsIHVpZClcbiAqICBDbGFzc1xuICogICAgdWlkID0gUHVpZC5nZXRJZCAtPiBQdWlkIHNhdmUgdGFyZ2V0IGNhY2hlXG4gKiAgICB0YXJnZXQuX19wdWlkID0gdWlkXG4gKlxuICogIGJvZHlcbiAqICAgIHVpZCA9IFB1aWQuZ2V0SWQgLT4gUHVpZCBzYXZlIHRhcmdldCBjYWNoZVxuICpcbiAqXG4gKiBleHBpcmUodGFyZ2V0KVxuICogIGNhY2hlW3RhcmdldC5fX3B1aWRdIHB1c2ggdGFyZ2V0XG4gKlxuICovXG5pbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IFB1aWQgZnJvbSBcIi4uL3V0aWxzL1B1aWRcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUG9vbCB7XG4gIC8qKlxuICAgKiBAbWVtYmVyb2YhIFByb3RvbiNcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhbGlhcyBQcm90b24uUG9vbFxuICAgKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb25cbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIG9mIHByb3BlcnRpZXNcbiAgICpcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IHRvdGFsXG4gICAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBjYWNoZVxuICAgKi9cbiAgY29uc3RydWN0b3IobnVtKSB7XG4gICAgdGhpcy50b3RhbCA9IDA7XG4gICAgdGhpcy5jYWNoZSA9IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBAbWV0aG9kIGdldFxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Qb29sXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fEZ1bmN0aW9ufSB0YXJnZXRcbiAgICogQHBhcmFtIHtPYmplY3R9IFtwYXJhbXNdIGp1c3QgYWRkIGlmIGB0YXJnZXRgIGlzIGEgZnVuY3Rpb25cbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgZ2V0KHRhcmdldCwgcGFyYW1zLCB1aWQpIHtcbiAgICBsZXQgcDtcbiAgICB1aWQgPSB1aWQgfHwgdGFyZ2V0Ll9fcHVpZCB8fCBQdWlkLmdldElkKHRhcmdldCk7XG5cbiAgICBpZiAodGhpcy5jYWNoZVt1aWRdICYmIHRoaXMuY2FjaGVbdWlkXS5sZW5ndGggPiAwKSB7XG4gICAgICBwID0gdGhpcy5jYWNoZVt1aWRdLnBvcCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwID0gdGhpcy5jcmVhdGVPckNsb25lKHRhcmdldCwgcGFyYW1zKTtcbiAgICB9XG5cbiAgICBwLl9fcHVpZCA9IHRhcmdldC5fX3B1aWQgfHwgdWlkO1xuICAgIHJldHVybiBwO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBAbWV0aG9kIHNldFxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Qb29sXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB0YXJnZXRcbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgZXhwaXJlKHRhcmdldCkge1xuICAgIHJldHVybiB0aGlzLmdldENhY2hlKHRhcmdldC5fX3B1aWQpLnB1c2godGFyZ2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGNsYXNzIGluc3RhbmNlXG4gICAqXG4gICAqIEB0b2RvIGFkZCBtb3JlIGRvY3VtZW50YXRpb25cbiAgICpcbiAgICogQG1ldGhvZCBjcmVhdGVcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uUG9vbFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdHxGdW5jdGlvbn0gdGFyZ2V0IGFueSBPYmplY3Qgb3IgRnVuY3Rpb25cbiAgICogQHBhcmFtIHtPYmplY3R9IFtwYXJhbXNdIGp1c3QgYWRkIGlmIGB0YXJnZXRgIGlzIGEgZnVuY3Rpb25cbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgY3JlYXRlT3JDbG9uZSh0YXJnZXQsIHBhcmFtcykge1xuICAgIHRoaXMudG90YWwrKztcblxuICAgIGlmICh0aGlzLmNyZWF0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlKHRhcmdldCwgcGFyYW1zKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0YXJnZXQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIFV0aWwuY2xhc3NBcHBseSh0YXJnZXQsIHBhcmFtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0YXJnZXQuY2xvbmUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIC0gd2hhdCBpcyBpbiB0aGUgY2FjaGU/XG4gICAqXG4gICAqIEBtZXRob2QgZ2V0Q291bnRcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uUG9vbFxuICAgKlxuICAgKiBAcmV0dXJuIHtOdW1iZXJ9XG4gICAqL1xuICBnZXRDb3VudCgpIHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIGZvciAobGV0IGlkIGluIHRoaXMuY2FjaGUpIGNvdW50ICs9IHRoaXMuY2FjaGVbaWRdLmxlbmd0aDtcbiAgICByZXR1cm4gY291bnQrKztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95ZXMgYWxsIGl0ZW1zIGZyb20gUG9vbC5jYWNoZVxuICAgKlxuICAgKiBAbWV0aG9kIGRlc3Ryb3lcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uUG9vbFxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICBmb3IgKGxldCBpZCBpbiB0aGlzLmNhY2hlKSB7XG4gICAgICB0aGlzLmNhY2hlW2lkXS5sZW5ndGggPSAwO1xuICAgICAgZGVsZXRlIHRoaXMuY2FjaGVbaWRdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIFBvb2wuY2FjaGVcbiAgICpcbiAgICogQG1ldGhvZCBnZXRDYWNoZVxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Qb29sXG4gICAqIEBwcml2YXRlXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB1aWQgdGhlIHVuaXF1ZSBpZFxuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBnZXRDYWNoZSh1aWQgPSBcImRlZmF1bHRcIikge1xuICAgIGlmICghdGhpcy5jYWNoZVt1aWRdKSB0aGlzLmNhY2hlW3VpZF0gPSBbXTtcbiAgICByZXR1cm4gdGhpcy5jYWNoZVt1aWRdO1xuICB9XG59XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBTdGF0cyB7XG4gIGNvbnN0cnVjdG9yKHByb3Rvbikge1xuICAgIHRoaXMucHJvdG9uID0gcHJvdG9uO1xuICAgIHRoaXMuY29udGFpbmVyID0gbnVsbDtcbiAgICB0aGlzLnR5cGUgPSAxO1xuXG4gICAgdGhpcy5lbWl0dGVySW5kZXggPSAwO1xuICAgIHRoaXMucmVuZGVyZXJJbmRleCA9IDA7XG4gIH1cblxuICB1cGRhdGUoc3R5bGUsIGJvZHkpIHtcbiAgICB0aGlzLmFkZChzdHlsZSwgYm9keSk7XG5cbiAgICBjb25zdCBlbWl0dGVyID0gdGhpcy5nZXRFbWl0dGVyKCk7XG4gICAgY29uc3QgcmVuZGVyZXIgPSB0aGlzLmdldFJlbmRlcmVyKCk7XG4gICAgbGV0IHN0ciA9IFwiXCI7XG5cbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSAyOlxuICAgICAgICBzdHIgKz0gXCJlbWl0dGVyOlwiICsgdGhpcy5wcm90b24uZW1pdHRlcnMubGVuZ3RoICsgXCI8YnI+XCI7XG4gICAgICAgIGlmIChlbWl0dGVyKSBzdHIgKz0gXCJlbSBzcGVlZDpcIiArIGVtaXR0ZXIuZW1pdFNwZWVkICsgXCI8YnI+XCI7XG4gICAgICAgIGlmIChlbWl0dGVyKSBzdHIgKz0gXCJwb3M6XCIgKyB0aGlzLmdldEVtaXR0ZXJQb3MoZW1pdHRlcik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIDM6XG4gICAgICAgIGlmIChlbWl0dGVyKSBzdHIgKz0gXCJpbml0aWFsaXplczpcIiArIGVtaXR0ZXIuaW5pdGlhbGl6ZXMubGVuZ3RoICsgXCI8YnI+XCI7XG4gICAgICAgIGlmIChlbWl0dGVyKVxuICAgICAgICAgIHN0ciArPSAnPHNwYW4gc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jaztcIj4nICsgdGhpcy5jb25jYXRBcnIoZW1pdHRlci5pbml0aWFsaXplcykgKyBcIjwvc3Bhbj48YnI+XCI7XG4gICAgICAgIGlmIChlbWl0dGVyKSBzdHIgKz0gXCJiZWhhdmlvdXJzOlwiICsgZW1pdHRlci5iZWhhdmlvdXJzLmxlbmd0aCArIFwiPGJyPlwiO1xuICAgICAgICBpZiAoZW1pdHRlcikgc3RyICs9ICc8c3BhbiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO1wiPicgKyB0aGlzLmNvbmNhdEFycihlbWl0dGVyLmJlaGF2aW91cnMpICsgXCI8L3NwYW4+PGJyPlwiO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSA0OlxuICAgICAgICBpZiAocmVuZGVyZXIpIHN0ciArPSByZW5kZXJlci5uYW1lICsgXCI8YnI+XCI7XG4gICAgICAgIGlmIChyZW5kZXJlcikgc3RyICs9IFwiYm9keTpcIiArIHRoaXMuZ2V0Q3JlYXRlZE51bWJlcihyZW5kZXJlcikgKyBcIjxicj5cIjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHN0ciArPSBcInBhcnRpY2xlczpcIiArIHRoaXMucHJvdG9uLmdldENvdW50KCkgKyBcIjxicj5cIjtcbiAgICAgICAgc3RyICs9IFwicG9vbDpcIiArIHRoaXMucHJvdG9uLnBvb2wuZ2V0Q291bnQoKSArIFwiPGJyPlwiO1xuICAgICAgICBzdHIgKz0gXCJ0b3RhbDpcIiArIHRoaXMucHJvdG9uLnBvb2wudG90YWw7XG4gICAgfVxuXG4gICAgdGhpcy5jb250YWluZXIuaW5uZXJIVE1MID0gc3RyO1xuICB9XG5cbiAgYWRkKHN0eWxlLCBib2R5KSB7XG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lcikge1xuICAgICAgdGhpcy50eXBlID0gMTtcblxuICAgICAgdGhpcy5jb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgdGhpcy5jb250YWluZXIuc3R5bGUuY3NzVGV4dCA9IFtcbiAgICAgICAgXCJwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MHB4O2xlZnQ6MDtjdXJzb3I6cG9pbnRlcjtcIixcbiAgICAgICAgXCJvcGFjaXR5OjAuOTt6LWluZGV4OjEwMDAwO3BhZGRpbmc6MTBweDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtcIixcbiAgICAgICAgXCJ3aWR0aDoxMjBweDtoZWlnaHQ6NTBweDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDI7Y29sb3I6IzBmZjtcIlxuICAgICAgXS5qb2luKFwiXCIpO1xuXG4gICAgICB0aGlzLmNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICBcImNsaWNrXCIsXG4gICAgICAgIGUgPT4ge1xuICAgICAgICAgIHRoaXMudHlwZSsrO1xuICAgICAgICAgIGlmICh0aGlzLnR5cGUgPiA0KSB0aGlzLnR5cGUgPSAxO1xuICAgICAgICB9LFxuICAgICAgICBmYWxzZVxuICAgICAgKTtcblxuICAgICAgbGV0IGJnLCBjb2xvcjtcbiAgICAgIHN3aXRjaCAoc3R5bGUpIHtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIGJnID0gXCIjMjAxXCI7XG4gICAgICAgICAgY29sb3IgPSBcIiNmMDhcIjtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgYmcgPSBcIiMwMjBcIjtcbiAgICAgICAgICBjb2xvciA9IFwiIzBmMFwiO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYmcgPSBcIiMwMDJcIjtcbiAgICAgICAgICBjb2xvciA9IFwiIzBmZlwiO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZVtcImJhY2tncm91bmQtY29sb3JcIl0gPSBiZztcbiAgICAgIHRoaXMuY29udGFpbmVyLnN0eWxlW1wiY29sb3JcIl0gPSBjb2xvcjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29udGFpbmVyLnBhcmVudE5vZGUpIHtcbiAgICAgIGJvZHkgPSBib2R5IHx8IHRoaXMuYm9keSB8fCBkb2N1bWVudC5ib2R5O1xuICAgICAgYm9keS5hcHBlbmRDaGlsZCh0aGlzLmNvbnRhaW5lcik7XG4gICAgfVxuICB9XG5cbiAgZ2V0RW1pdHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm90b24uZW1pdHRlcnNbdGhpcy5lbWl0dGVySW5kZXhdO1xuICB9XG5cbiAgZ2V0UmVuZGVyZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvdG9uLnJlbmRlcmVyc1t0aGlzLnJlbmRlcmVySW5kZXhdO1xuICB9XG5cbiAgY29uY2F0QXJyKGFycikge1xuICAgIGxldCByZXN1bHQgPSBcIlwiO1xuICAgIGlmICghYXJyIHx8ICFhcnIubGVuZ3RoKSByZXR1cm4gcmVzdWx0O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHJlc3VsdCArPSAoYXJyW2ldLm5hbWUgfHwgXCJcIikuc3Vic3RyKDAsIDEpICsgXCIuXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldENyZWF0ZWROdW1iZXIocmVuZGVyZXIpIHtcbiAgICByZXR1cm4gcmVuZGVyZXIucG9vbC50b3RhbCB8fCAocmVuZGVyZXIuY3Bvb2wgJiYgcmVuZGVyZXIuY3Bvb2wudG90YWwpIHx8IDA7XG4gIH1cblxuICBnZXRFbWl0dGVyUG9zKGUpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChlLnAueCkgKyBcIixcIiArIE1hdGgucm91bmQoZS5wLnkpO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5jb250YWluZXIgJiYgdGhpcy5jb250YWluZXIucGFyZW50Tm9kZSkge1xuICAgICAgY29uc3QgYm9keSA9IHRoaXMuYm9keSB8fCBkb2N1bWVudC5ib2R5O1xuICAgICAgYm9keS5yZW1vdmVDaGlsZCh0aGlzLmNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgdGhpcy5wcm90b24gPSBudWxsO1xuICAgIHRoaXMuY29udGFpbmVyID0gbnVsbDtcbiAgfVxufVxuIiwiLypcbiAqIEV2ZW50RGlzcGF0Y2hlclxuICogVGhpcyBjb2RlIHJlZmVyZW5jZSBzaW5jZSBodHRwOi8vY3JlYXRlanMuY29tLy5cbiAqXG4gKiovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV2ZW50RGlzcGF0Y2hlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2xpc3RlbmVycyA9IG51bGw7XG4gIH1cblxuICBzdGF0aWMgYmluZCh0YXJnZXQpIHtcbiAgICB0YXJnZXQucHJvdG90eXBlLmRpc3BhdGNoRXZlbnQgPSBFdmVudERpc3BhdGNoZXIucHJvdG90eXBlLmRpc3BhdGNoRXZlbnQ7XG4gICAgdGFyZ2V0LnByb3RvdHlwZS5oYXNFdmVudExpc3RlbmVyID0gRXZlbnREaXNwYXRjaGVyLnByb3RvdHlwZS5oYXNFdmVudExpc3RlbmVyO1xuICAgIHRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciA9IEV2ZW50RGlzcGF0Y2hlci5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcjtcbiAgICB0YXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgPSBFdmVudERpc3BhdGNoZXIucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXI7XG4gICAgdGFyZ2V0LnByb3RvdHlwZS5yZW1vdmVBbGxFdmVudExpc3RlbmVycyA9IEV2ZW50RGlzcGF0Y2hlci5wcm90b3R5cGUucmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnM7XG4gIH1cblxuICBhZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgaWYgKCF0aGlzLl9saXN0ZW5lcnMpIHtcbiAgICAgIHRoaXMuX2xpc3RlbmVycyA9IHt9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fbGlzdGVuZXJzW3R5cGVdKSB0aGlzLl9saXN0ZW5lcnNbdHlwZV0gPSBbXTtcbiAgICB0aGlzLl9saXN0ZW5lcnNbdHlwZV0ucHVzaChsaXN0ZW5lcik7XG5cbiAgICByZXR1cm4gbGlzdGVuZXI7XG4gIH1cblxuICByZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgaWYgKCF0aGlzLl9saXN0ZW5lcnMpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuX2xpc3RlbmVyc1t0eXBlXSkgcmV0dXJuO1xuXG4gICAgY29uc3QgYXJyID0gdGhpcy5fbGlzdGVuZXJzW3R5cGVdO1xuICAgIGNvbnN0IGxlbmd0aCA9IGFyci5sZW5ndGg7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJyW2ldID09PSBsaXN0ZW5lcikge1xuICAgICAgICBpZiAobGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuX2xpc3RlbmVyc1t0eXBlXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFsbG93cyBmb3IgZmFzdGVyIGNoZWNrcy5cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgYXJyLnNwbGljZShpLCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKHR5cGUpIHtcbiAgICBpZiAoIXR5cGUpIHRoaXMuX2xpc3RlbmVycyA9IG51bGw7XG4gICAgZWxzZSBpZiAodGhpcy5fbGlzdGVuZXJzKSBkZWxldGUgdGhpcy5fbGlzdGVuZXJzW3R5cGVdO1xuICB9XG5cbiAgZGlzcGF0Y2hFdmVudCh0eXBlLCBhcmdzKSB7XG4gICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xuICAgIGNvbnN0IGxpc3RlbmVycyA9IHRoaXMuX2xpc3RlbmVycztcblxuICAgIGlmICh0eXBlICYmIGxpc3RlbmVycykge1xuICAgICAgbGV0IGFyciA9IGxpc3RlbmVyc1t0eXBlXTtcbiAgICAgIGlmICghYXJyKSByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAvLyBhcnIgPSBhcnIuc2xpY2UoKTtcbiAgICAgIC8vIHRvIGF2b2lkIGlzc3VlcyB3aXRoIGl0ZW1zIGJlaW5nIHJlbW92ZWQgb3IgYWRkZWQgZHVyaW5nIHRoZSBkaXNwYXRjaFxuXG4gICAgICBsZXQgaGFuZGxlcjtcbiAgICAgIGxldCBpID0gYXJyLmxlbmd0aDtcbiAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgaGFuZGxlciA9IGFycltpXTtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IGhhbmRsZXIoYXJncyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuICEhcmVzdWx0O1xuICB9XG5cbiAgaGFzRXZlbnRMaXN0ZW5lcih0eXBlKSB7XG4gICAgY29uc3QgbGlzdGVuZXJzID0gdGhpcy5fbGlzdGVuZXJzO1xuICAgIHJldHVybiAhIShsaXN0ZW5lcnMgJiYgbGlzdGVuZXJzW3R5cGVdKTtcbiAgfVxufVxuIiwiY29uc3QgUEkgPSAzLjE0MTU5MjY7XG5jb25zdCBJTkZJTklUWSA9IEluZmluaXR5O1xuXG5jb25zdCBNYXRoVXRpbCA9IHtcbiAgUEk6IFBJLFxuICBQSXgyOiBQSSAqIDIsXG4gIFBJXzI6IFBJIC8gMixcbiAgUElfMTgwOiBQSSAvIDE4MCxcbiAgTjE4MF9QSTogMTgwIC8gUEksXG4gIEluZmluaXR5OiAtOTk5LFxuXG4gIGlzSW5maW5pdHkobnVtKSB7XG4gICAgcmV0dXJuIG51bSA9PT0gdGhpcy5JbmZpbml0eSB8fCBudW0gPT09IElORklOSVRZO1xuICB9LFxuXG4gIHJhbmRvbUFUb0IoYSwgYiwgaXNJbnQgPSBmYWxzZSkge1xuICAgIGlmICghaXNJbnQpIHJldHVybiBhICsgTWF0aC5yYW5kb20oKSAqIChiIC0gYSk7XG4gICAgZWxzZSByZXR1cm4gKChNYXRoLnJhbmRvbSgpICogKGIgLSBhKSkgPj4gMCkgKyBhO1xuICB9LFxuXG4gIHJhbmRvbUZsb2F0aW5nKGNlbnRlciwgZiwgaXNJbnQpIHtcbiAgICByZXR1cm4gdGhpcy5yYW5kb21BVG9CKGNlbnRlciAtIGYsIGNlbnRlciArIGYsIGlzSW50KTtcbiAgfSxcblxuICByYW5kb21Db2xvcigpIHtcbiAgICByZXR1cm4gXCIjXCIgKyAoXCIwMDAwMFwiICsgKChNYXRoLnJhbmRvbSgpICogMHgxMDAwMDAwKSA8PCAwKS50b1N0cmluZygxNikpLnNsaWNlKC02KTtcbiAgfSxcblxuICByYW5kb21ab25lKGRpc3BsYXkpIHt9LFxuXG4gIGZsb29yKG51bSwgayA9IDQpIHtcbiAgICBjb25zdCBkaWdpdHMgPSBNYXRoLnBvdygxMCwgayk7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IobnVtICogZGlnaXRzKSAvIGRpZ2l0cztcbiAgfSxcblxuICBkZWdyZWVUcmFuc2Zvcm0oYSkge1xuICAgIHJldHVybiAoYSAqIFBJKSAvIDE4MDtcbiAgfSxcblxuICB0b0NvbG9yMTYobnVtKSB7XG4gICAgcmV0dXJuIGAjJHtudW0udG9TdHJpbmcoMTYpfWA7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1hdGhVdGlsO1xuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW50ZWdyYXRpb24ge1xuICBjb25zdHJ1Y3Rvcih0eXBlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIGNhbGN1bGF0ZShwYXJ0aWNsZXMsIHRpbWUsIGRhbXBpbmcpIHtcbiAgICB0aGlzLmV1bGVySW50ZWdyYXRlKHBhcnRpY2xlcywgdGltZSwgZGFtcGluZyk7XG4gIH1cblxuICAvLyBFdWxlciBJbnRlZ3JhdGVcbiAgLy8gaHR0cHM6Ly9yb3NldHRhY29kZS5vcmcvd2lraS9FdWxlcl9tZXRob2RcbiAgZXVsZXJJbnRlZ3JhdGUocGFydGljbGUsIHRpbWUsIGRhbXBpbmcpIHtcbiAgICBpZiAoIXBhcnRpY2xlLnNsZWVwKSB7XG4gICAgICBwYXJ0aWNsZS5vbGQucC5jb3B5KHBhcnRpY2xlLnApO1xuICAgICAgcGFydGljbGUub2xkLnYuY29weShwYXJ0aWNsZS52KTtcblxuICAgICAgcGFydGljbGUuYS5tdWx0aXBseVNjYWxhcigxIC8gcGFydGljbGUubWFzcyk7XG4gICAgICBwYXJ0aWNsZS52LmFkZChwYXJ0aWNsZS5hLm11bHRpcGx5U2NhbGFyKHRpbWUpKTtcbiAgICAgIHBhcnRpY2xlLnAuYWRkKHBhcnRpY2xlLm9sZC52Lm11bHRpcGx5U2NhbGFyKHRpbWUpKTtcblxuICAgICAgaWYgKGRhbXBpbmcpIHBhcnRpY2xlLnYubXVsdGlwbHlTY2FsYXIoZGFtcGluZyk7XG5cbiAgICAgIHBhcnRpY2xlLmEuY2xlYXIoKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBQb29sIGZyb20gXCIuL1Bvb2xcIjtcbmltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgU3RhdHMgZnJvbSBcIi4uL2RlYnVnL1N0YXRzXCI7XG5pbXBvcnQgRXZlbnREaXNwYXRjaGVyIGZyb20gXCIuLi9ldmVudHMvRXZlbnREaXNwYXRjaGVyXCI7XG5pbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcbmltcG9ydCBJbnRlZ3JhdGlvbiBmcm9tIFwiLi4vbWF0aC9JbnRlZ3JhdGlvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcm90b24ge1xuICBzdGF0aWMgVVNFX0NMT0NLID0gZmFsc2U7XG5cbiAgLy8gbWVhc3VyZSAxOjEwMFxuICBzdGF0aWMgTUVBU1VSRSA9IDEwMDtcbiAgc3RhdGljIEVVTEVSID0gXCJldWxlclwiO1xuICBzdGF0aWMgUksyID0gXCJydW5nZS1rdXR0YTJcIjtcblxuICAvLyBldmVudCBuYW1lXG4gIHN0YXRpYyBQQVJUSUNMRV9DUkVBVEVEID0gXCJQQVJUSUNMRV9DUkVBVEVEXCI7XG4gIHN0YXRpYyBQQVJUSUNMRV9VUERBVEUgPSBcIlBBUlRJQ0xFX1VQREFURVwiO1xuICBzdGF0aWMgUEFSVElDTEVfU0xFRVAgPSBcIlBBUlRJQ0xFX1NMRUVQXCI7XG4gIHN0YXRpYyBQQVJUSUNMRV9ERUFEID0gXCJQQVJUSUNMRV9ERUFEXCI7XG5cbiAgc3RhdGljIEVNSVRURVJfQURERUQgPSBcIkVNSVRURVJfQURERURcIjtcbiAgc3RhdGljIEVNSVRURVJfUkVNT1ZFRCA9IFwiRU1JVFRFUl9SRU1PVkVEXCI7XG5cbiAgc3RhdGljIFBST1RPTl9VUERBVEUgPSBcIlBST1RPTl9VUERBVEVcIjtcbiAgc3RhdGljIFBST1RPTl9VUERBVEVfQUZURVIgPSBcIlBST1RPTl9VUERBVEVfQUZURVJcIjtcbiAgc3RhdGljIERFRkFVTFRfSU5URVJWQUwgPSAwLjAxNjc7XG5cbiAgc3RhdGljIGFtZW5kQ2hhbmdlVGFic0J1ZyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdHJ1Y3RvciB0byBhZGQgZW1pdHRlcnNcbiAgICpcbiAgICogQGNvbnN0cnVjdG9yIFByb3RvblxuICAgKlxuICAgKiBAdG9kbyBwcm9QYXJ0aWNsZUNvdW50IGlzIG5vdCBpbiB1c2VcbiAgICogQHRvZG8gYWRkIG1vcmUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgc2luZ2xlIHByb3BlcnRpZXMgYW5kIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtwcm9QYXJ0aWNsZUNvdW50XSBub3QgaW4gdXNlP1xuICAgKiBAcGFyYW0ge051bWJlcn0gW2ludGVncmF0aW9uVHlwZT1Qcm90b24uRVVMRVJdXG4gICAqXG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBbaW50ZWdyYXRpb25UeXBlPVByb3Rvbi5FVUxFUl1cbiAgICogQHByb3BlcnR5IHtBcnJheX0gZW1pdHRlcnMgICBBbGwgYWRkZWQgZW1pdHRlclxuICAgKiBAcHJvcGVydHkge0FycmF5fSByZW5kZXJlcnMgIEFsbCBhZGRlZCByZW5kZXJlclxuICAgKiBAcHJvcGVydHkge051bWJlcn0gdGltZSAgICAgIFRoZSBhY3RpdmUgdGltZVxuICAgKiBAcHJvcGVydHkge051bWJlcn0gb2xkdGltZSAgIFRoZSBvbGQgdGltZVxuICAgKi9cbiAgY29uc3RydWN0b3IoaW50ZWdyYXRpb25UeXBlKSB7XG4gICAgdGhpcy5lbWl0dGVycyA9IFtdO1xuICAgIHRoaXMucmVuZGVyZXJzID0gW107XG5cbiAgICB0aGlzLnRpbWUgPSAwO1xuICAgIHRoaXMubm93ID0gMDtcbiAgICB0aGlzLnRoZW4gPSAwO1xuICAgIHRoaXMuZWxhcHNlZCA9IDA7XG5cbiAgICB0aGlzLnN0YXRzID0gbmV3IFN0YXRzKHRoaXMpO1xuICAgIHRoaXMucG9vbCA9IG5ldyBQb29sKDgwKTtcblxuICAgIHRoaXMuaW50ZWdyYXRpb25UeXBlID0gVXRpbC5pbml0VmFsdWUoaW50ZWdyYXRpb25UeXBlLCBQcm90b24uRVVMRVIpO1xuICAgIHRoaXMuaW50ZWdyYXRvciA9IG5ldyBJbnRlZ3JhdGlvbih0aGlzLmludGVncmF0aW9uVHlwZSk7XG5cbiAgICB0aGlzLl9mcHMgPSBcImF1dG9cIjtcbiAgICB0aGlzLl9pbnRlcnZhbCA9IFByb3Rvbi5ERUZBVUxUX0lOVEVSVkFMO1xuICB9XG5cbiAgc2V0IGZwcyhmcHMpIHtcbiAgICB0aGlzLl9mcHMgPSBmcHM7XG4gICAgdGhpcy5faW50ZXJ2YWwgPSBmcHMgPT09IFwiYXV0b1wiID8gUHJvdG9uLkRFRkFVTFRfSU5URVJWQUwgOiBNYXRoVXRpbC5mbG9vcigxIC8gZnBzLCA3KTtcbiAgfVxuXG4gIGdldCBmcHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZwcztcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGQgYSB0eXBlIG9mIFJlbmRlcmVyXG4gICAqXG4gICAqIEBtZXRob2QgYWRkUmVuZGVyZXJcbiAgICogQG1lbWJlcm9mIFByb3RvblxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtSZW5kZXJlcn0gcmVuZGVyXG4gICAqL1xuICBhZGRSZW5kZXJlcihyZW5kZXIpIHtcbiAgICByZW5kZXIuaW5pdCh0aGlzKTtcbiAgICB0aGlzLnJlbmRlcmVycy5wdXNoKHJlbmRlcik7XG4gIH1cblxuICAvKipcbiAgICogQG5hbWUgYWRkIGEgdHlwZSBvZiBSZW5kZXJlclxuICAgKlxuICAgKiBAbWV0aG9kIGFkZFJlbmRlcmVyXG4gICAqIEBwYXJhbSB7UmVuZGVyZXJ9IHJlbmRlclxuICAgKi9cbiAgcmVtb3ZlUmVuZGVyZXIocmVuZGVyKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnJlbmRlcmVycy5pbmRleE9mKHJlbmRlcik7XG4gICAgdGhpcy5yZW5kZXJlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICByZW5kZXIucmVtb3ZlKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIGFkZCB0aGUgRW1pdHRlclxuICAgKlxuICAgKiBAbWV0aG9kIGFkZEVtaXR0ZXJcbiAgICogQG1lbWJlcm9mIFByb3RvblxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtFbWl0dGVyfSBlbWl0dGVyXG4gICAqL1xuICBhZGRFbWl0dGVyKGVtaXR0ZXIpIHtcbiAgICB0aGlzLmVtaXR0ZXJzLnB1c2goZW1pdHRlcik7XG4gICAgZW1pdHRlci5wYXJlbnQgPSB0aGlzO1xuXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KFByb3Rvbi5FTUlUVEVSX0FEREVELCBlbWl0dGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGFuIEVtaXR0ZXJcbiAgICpcbiAgICogQG1ldGhvZCByZW1vdmVFbWl0dGVyXG4gICAqIEBtZW1iZXJvZiBQcm90b25cbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLkVtaXR0ZXJ9IGVtaXR0ZXJcbiAgICovXG4gIHJlbW92ZUVtaXR0ZXIoZW1pdHRlcikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5lbWl0dGVycy5pbmRleE9mKGVtaXR0ZXIpO1xuICAgIHRoaXMuZW1pdHRlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBlbWl0dGVyLnBhcmVudCA9IG51bGw7XG5cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQoUHJvdG9uLkVNSVRURVJfUkVNT1ZFRCwgZW1pdHRlcik7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBhbGwgYWRkZWQgZW1pdHRlcnNcbiAgICpcbiAgICogQG1ldGhvZCB1cGRhdGVcbiAgICogQG1lbWJlcm9mIFByb3RvblxuICAgKiBAaW5zdGFuY2VcbiAgICovXG4gIHVwZGF0ZSgpIHtcbiAgICAvLyAnYXV0bycgaXMgdGhlIGRlZmF1bHQgYnJvd3NlciByZWZyZXNoIHJhdGUsIHRoZSB2YXN0IG1ham9yaXR5IGlzIDYwZnBzXG4gICAgaWYgKHRoaXMuX2ZwcyA9PT0gXCJhdXRvXCIpIHtcbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChQcm90b24uUFJPVE9OX1VQREFURSk7XG5cbiAgICAgIGlmIChQcm90b24uVVNFX0NMT0NLKSB7XG4gICAgICAgIGlmICghdGhpcy50aGVuKSB0aGlzLnRoZW4gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgdGhpcy5ub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgdGhpcy5lbGFwc2VkID0gKHRoaXMubm93IC0gdGhpcy50aGVuKSAqIDAuMDAxO1xuICAgICAgICAvLyBGaXggYnVncyBzdWNoIGFzIGNocm9tZSBicm93c2VyIHN3aXRjaGluZyB0YWJzIGNhdXNpbmcgZXhjZXNzaXZlIHRpbWUgZGlmZmVyZW5jZVxuICAgICAgICB0aGlzLmFtZW5kQ2hhbmdlVGFic0J1ZygpO1xuXG4gICAgICAgIGlmICh0aGlzLmVsYXBzZWQgPiAwKSB0aGlzLmVtaXR0ZXJzVXBkYXRlKHRoaXMuZWxhcHNlZCk7XG4gICAgICAgIHRoaXMudGhlbiA9IHRoaXMubm93O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lbWl0dGVyc1VwZGF0ZShQcm90b24uREVGQVVMVF9JTlRFUlZBTCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChQcm90b24uUFJPVE9OX1VQREFURV9BRlRFUik7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGZwcyBmcmFtZSByYXRlIGlzIHNldFxuICAgIGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLnRoZW4pIHRoaXMudGhlbiA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgdGhpcy5ub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgIHRoaXMuZWxhcHNlZCA9ICh0aGlzLm5vdyAtIHRoaXMudGhlbikgKiAwLjAwMTtcblxuICAgICAgaWYgKHRoaXMuZWxhcHNlZCA+IHRoaXMuX2ludGVydmFsKSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChQcm90b24uUFJPVE9OX1VQREFURSk7XG4gICAgICAgIHRoaXMuZW1pdHRlcnNVcGRhdGUodGhpcy5faW50ZXJ2YWwpO1xuICAgICAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xOTc2NDAxOC9jb250cm9sbGluZy1mcHMtd2l0aC1yZXF1ZXN0YW5pbWF0aW9uZnJhbWVcbiAgICAgICAgdGhpcy50aGVuID0gdGhpcy5ub3cgLSAodGhpcy5lbGFwc2VkICUgdGhpcy5faW50ZXJ2YWwpICogMTAwMDtcbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KFByb3Rvbi5QUk9UT05fVVBEQVRFX0FGVEVSKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBlbWl0dGVyc1VwZGF0ZShlbGFwc2VkKSB7XG4gICAgbGV0IGkgPSB0aGlzLmVtaXR0ZXJzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB0aGlzLmVtaXR0ZXJzW2ldLnVwZGF0ZShlbGFwc2VkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb25cbiAgICpcbiAgICogQG1ldGhvZCBhbWVuZENoYW5nZVRhYnNCdWdcbiAgICogQG1lbWJlcm9mIFByb3RvblxuICAgKiBAaW5zdGFuY2VcbiAgICovXG4gIGFtZW5kQ2hhbmdlVGFic0J1ZygpIHtcbiAgICBpZiAoIVByb3Rvbi5hbWVuZENoYW5nZVRhYnNCdWcpIHJldHVybjtcbiAgICBpZiAodGhpcy5lbGFwc2VkID4gMC41KSB7XG4gICAgICB0aGlzLnRoZW4gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgIHRoaXMuZWxhcHNlZCA9IDA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvdW50cyBhbGwgcGFydGljbGVzIGZyb20gYWxsIGVtaXR0ZXJzXG4gICAqXG4gICAqIEBtZXRob2QgZ2V0Q291bnRcbiAgICogQG1lbWJlcm9mIFByb3RvblxuICAgKiBAaW5zdGFuY2VcbiAgICovXG4gIGdldENvdW50KCkge1xuICAgIGxldCB0b3RhbCA9IDA7XG4gICAgbGV0IGkgPSB0aGlzLmVtaXR0ZXJzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpLS0pIHRvdGFsICs9IHRoaXMuZW1pdHRlcnNbaV0ucGFydGljbGVzLmxlbmd0aDtcbiAgICByZXR1cm4gdG90YWw7XG4gIH1cblxuICBnZXRBbGxQYXJ0aWNsZXMoKSB7XG4gICAgbGV0IHBhcnRpY2xlcyA9IFtdO1xuICAgIGxldCBpID0gdGhpcy5lbWl0dGVycy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaS0tKSBwYXJ0aWNsZXMgPSBwYXJ0aWNsZXMuY29uY2F0KHRoaXMuZW1pdHRlcnNbaV0ucGFydGljbGVzKTtcbiAgICByZXR1cm4gcGFydGljbGVzO1xuICB9XG5cbiAgZGVzdHJveUFsbEVtaXR0ZXJzKCkge1xuICAgIFV0aWwuZGVzdHJveUFsbCh0aGlzLmVtaXR0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyBldmVyeXRoaW5nIHJlbGF0ZWQgdG8gdGhpcyBQcm90b24gaW5zdGFuY2UuIFRoaXMgaW5jbHVkZXMgYWxsIGVtaXR0ZXJzLCBhbmQgYWxsIHByb3BlcnRpZXNcbiAgICpcbiAgICogQG1ldGhvZCBkZXN0cm95XG4gICAqIEBtZW1iZXJvZiBQcm90b25cbiAgICogQGluc3RhbmNlXG4gICAqL1xuICBkZXN0cm95KHJlbW92ZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgZGVzdHJveU90aGVyID0gKCkgPT4ge1xuICAgICAgdGhpcy50aW1lID0gMDtcbiAgICAgIHRoaXMudGhlbiA9IDA7XG4gICAgICB0aGlzLnBvb2wuZGVzdHJveSgpO1xuICAgICAgdGhpcy5zdGF0cy5kZXN0cm95KCk7XG5cbiAgICAgIFV0aWwuZGVzdHJveUFsbCh0aGlzLmVtaXR0ZXJzKTtcbiAgICAgIFV0aWwuZGVzdHJveUFsbCh0aGlzLnJlbmRlcmVycywgdGhpcy5nZXRBbGxQYXJ0aWNsZXMoKSk7XG5cbiAgICAgIHRoaXMuaW50ZWdyYXRvciA9IG51bGw7XG4gICAgICB0aGlzLnJlbmRlcmVycyA9IG51bGw7XG4gICAgICB0aGlzLmVtaXR0ZXJzID0gbnVsbDtcbiAgICAgIHRoaXMuc3RhdHMgPSBudWxsO1xuICAgICAgdGhpcy5wb29sID0gbnVsbDtcbiAgICB9O1xuXG4gICAgaWYgKHJlbW92ZSkge1xuICAgICAgc2V0VGltZW91dChkZXN0cm95T3RoZXIsIDIwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlc3Ryb3lPdGhlcigpO1xuICAgIH1cbiAgfVxufVxuXG5FdmVudERpc3BhdGNoZXIuYmluZChQcm90b24pO1xuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmdiIHtcbiAgY29uc3RydWN0b3IociA9IDI1NSwgZyA9IDI1NSwgYiA9IDI1NSkge1xuICAgIHRoaXMuciA9IHI7XG4gICAgdGhpcy5nID0gZztcbiAgICB0aGlzLmIgPSBiO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5yID0gMjU1O1xuICAgIHRoaXMuZyA9IDI1NTtcbiAgICB0aGlzLmIgPSAyNTU7XG4gIH1cbn1cbiIsImV4cG9ydCBkZWZhdWx0IHtcbiAgaGFzUHJvcCh0YXJnZXQsIGtleSkge1xuICAgIGlmICghdGFyZ2V0KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgLy8gcmV0dXJuIG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBzZXQgdGhlIHByb3RvdHlwZSBpbiBhIGdpdmVuIHByb3RvdHlwZU9iamVjdFxuICAgKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5VdGlsXG4gICAqIEBtZXRob2Qgc2V0UHJvcFxuICAgKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb24gZm9yIHBhcmFtIGB0YXJnZXRgXG4gICAqIEB0b2RvIHRyYW5zbGF0ZSBkZXNyaXB0aW9uIGZyb20gY2hpbmVzZSB0byBlbmdsaXNoXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB0YXJnZXRcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3RvdHlwZU9iamVjdCBBbiBvYmplY3Qgb2Ygc2luZ2xlIHByb3RvdHlwZXNcbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fSB0YXJnZXRcbiAgICovXG4gIHNldFByb3AodGFyZ2V0LCBwcm9wcykge1xuICAgIGZvciAobGV0IHByb3AgaW4gcHJvcHMpIHtcbiAgICAgIGlmICh0YXJnZXQuaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgICAgdGFyZ2V0W3Byb3BdID0gU3Bhbi5nZXRTcGFuVmFsdWUocHJvcHNbcHJvcF0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBzZXRWZWN0b3JWYWxcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciBwYXJhbSBgdGFyZ2V0YFxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb24gZm9yIHBhcmFtIGBjb25mYFxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb24gZm9yIGZ1bmN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB0YXJnZXRcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZcbiAgICovXG4gIHNldFZlY3RvclZhbChwYXJ0aWNsZSwgY29uZiA9IG51bGwpIHtcbiAgICBpZiAoIWNvbmYpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmhhc1Byb3AoY29uZiwgXCJ4XCIpKSBwYXJ0aWNsZS5wLnggPSBjb25mW1wieFwiXTtcbiAgICBpZiAodGhpcy5oYXNQcm9wKGNvbmYsIFwieVwiKSkgcGFydGljbGUucC55ID0gY29uZltcInlcIl07XG5cbiAgICBpZiAodGhpcy5oYXNQcm9wKGNvbmYsIFwidnhcIikpIHBhcnRpY2xlLnYueCA9IGNvbmZbXCJ2eFwiXTtcbiAgICBpZiAodGhpcy5oYXNQcm9wKGNvbmYsIFwidnlcIikpIHBhcnRpY2xlLnYueSA9IGNvbmZbXCJ2eVwiXTtcblxuICAgIGlmICh0aGlzLmhhc1Byb3AoY29uZiwgXCJheFwiKSkgcGFydGljbGUuYS54ID0gY29uZltcImF4XCJdO1xuICAgIGlmICh0aGlzLmhhc1Byb3AoY29uZiwgXCJheVwiKSkgcGFydGljbGUuYS55ID0gY29uZltcImF5XCJdO1xuXG4gICAgaWYgKHRoaXMuaGFzUHJvcChjb25mLCBcInBcIikpIHBhcnRpY2xlLnAuY29weShjb25mW1wicFwiXSk7XG4gICAgaWYgKHRoaXMuaGFzUHJvcChjb25mLCBcInZcIikpIHBhcnRpY2xlLnYuY29weShjb25mW1widlwiXSk7XG4gICAgaWYgKHRoaXMuaGFzUHJvcChjb25mLCBcImFcIikpIHBhcnRpY2xlLmEuY29weShjb25mW1wiYVwiXSk7XG5cbiAgICBpZiAodGhpcy5oYXNQcm9wKGNvbmYsIFwicG9zaXRpb25cIikpIHBhcnRpY2xlLnAuY29weShjb25mW1wicG9zaXRpb25cIl0pO1xuICAgIGlmICh0aGlzLmhhc1Byb3AoY29uZiwgXCJ2ZWxvY2l0eVwiKSkgcGFydGljbGUudi5jb3B5KGNvbmZbXCJ2ZWxvY2l0eVwiXSk7XG4gICAgaWYgKHRoaXMuaGFzUHJvcChjb25mLCBcImFjY2VsZXJhdGVcIikpIHBhcnRpY2xlLmEuY29weShjb25mW1wiYWNjZWxlcmF0ZVwiXSk7XG4gIH1cbn07XG4iLCJpbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4vTWF0aFV0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBlYXNlTGluZWFyKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuXG4gIGVhc2VJblF1YWQodmFsdWUpIHtcbiAgICByZXR1cm4gTWF0aC5wb3codmFsdWUsIDIpO1xuICB9LFxuXG4gIGVhc2VPdXRRdWFkKHZhbHVlKSB7XG4gICAgcmV0dXJuIC0oTWF0aC5wb3codmFsdWUgLSAxLCAyKSAtIDEpO1xuICB9LFxuXG4gIGVhc2VJbk91dFF1YWQodmFsdWUpIHtcbiAgICBpZiAoKHZhbHVlIC89IDAuNSkgPCAxKSByZXR1cm4gMC41ICogTWF0aC5wb3codmFsdWUsIDIpO1xuXG4gICAgcmV0dXJuIC0wLjUgKiAoKHZhbHVlIC09IDIpICogdmFsdWUgLSAyKTtcbiAgfSxcblxuICBlYXNlSW5DdWJpYyh2YWx1ZSkge1xuICAgIHJldHVybiBNYXRoLnBvdyh2YWx1ZSwgMyk7XG4gIH0sXG5cbiAgZWFzZU91dEN1YmljKHZhbHVlKSB7XG4gICAgcmV0dXJuIE1hdGgucG93KHZhbHVlIC0gMSwgMykgKyAxO1xuICB9LFxuXG4gIGVhc2VJbk91dEN1YmljKHZhbHVlKSB7XG4gICAgaWYgKCh2YWx1ZSAvPSAwLjUpIDwgMSkgcmV0dXJuIDAuNSAqIE1hdGgucG93KHZhbHVlLCAzKTtcblxuICAgIHJldHVybiAwLjUgKiAoTWF0aC5wb3codmFsdWUgLSAyLCAzKSArIDIpO1xuICB9LFxuXG4gIGVhc2VJblF1YXJ0KHZhbHVlKSB7XG4gICAgcmV0dXJuIE1hdGgucG93KHZhbHVlLCA0KTtcbiAgfSxcblxuICBlYXNlT3V0UXVhcnQodmFsdWUpIHtcbiAgICByZXR1cm4gLShNYXRoLnBvdyh2YWx1ZSAtIDEsIDQpIC0gMSk7XG4gIH0sXG5cbiAgZWFzZUluT3V0UXVhcnQodmFsdWUpIHtcbiAgICBpZiAoKHZhbHVlIC89IDAuNSkgPCAxKSByZXR1cm4gMC41ICogTWF0aC5wb3codmFsdWUsIDQpO1xuXG4gICAgcmV0dXJuIC0wLjUgKiAoKHZhbHVlIC09IDIpICogTWF0aC5wb3codmFsdWUsIDMpIC0gMik7XG4gIH0sXG5cbiAgZWFzZUluU2luZSh2YWx1ZSkge1xuICAgIHJldHVybiAtTWF0aC5jb3ModmFsdWUgKiBNYXRoVXRpbC5QSV8yKSArIDE7XG4gIH0sXG5cbiAgZWFzZU91dFNpbmUodmFsdWUpIHtcbiAgICByZXR1cm4gTWF0aC5zaW4odmFsdWUgKiBNYXRoVXRpbC5QSV8yKTtcbiAgfSxcblxuICBlYXNlSW5PdXRTaW5lKHZhbHVlKSB7XG4gICAgcmV0dXJuIC0wLjUgKiAoTWF0aC5jb3MoTWF0aC5QSSAqIHZhbHVlKSAtIDEpO1xuICB9LFxuXG4gIGVhc2VJbkV4cG8odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyAwIDogTWF0aC5wb3coMiwgMTAgKiAodmFsdWUgLSAxKSk7XG4gIH0sXG5cbiAgZWFzZU91dEV4cG8odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDEgPyAxIDogLU1hdGgucG93KDIsIC0xMCAqIHZhbHVlKSArIDE7XG4gIH0sXG5cbiAgZWFzZUluT3V0RXhwbyh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gMCkgcmV0dXJuIDA7XG5cbiAgICBpZiAodmFsdWUgPT09IDEpIHJldHVybiAxO1xuXG4gICAgaWYgKCh2YWx1ZSAvPSAwLjUpIDwgMSkgcmV0dXJuIDAuNSAqIE1hdGgucG93KDIsIDEwICogKHZhbHVlIC0gMSkpO1xuXG4gICAgcmV0dXJuIDAuNSAqICgtTWF0aC5wb3coMiwgLTEwICogLS12YWx1ZSkgKyAyKTtcbiAgfSxcblxuICBlYXNlSW5DaXJjKHZhbHVlKSB7XG4gICAgcmV0dXJuIC0oTWF0aC5zcXJ0KDEgLSB2YWx1ZSAqIHZhbHVlKSAtIDEpO1xuICB9LFxuXG4gIGVhc2VPdXRDaXJjKHZhbHVlKSB7XG4gICAgcmV0dXJuIE1hdGguc3FydCgxIC0gTWF0aC5wb3codmFsdWUgLSAxLCAyKSk7XG4gIH0sXG5cbiAgZWFzZUluT3V0Q2lyYyh2YWx1ZSkge1xuICAgIGlmICgodmFsdWUgLz0gMC41KSA8IDEpIHJldHVybiAtMC41ICogKE1hdGguc3FydCgxIC0gdmFsdWUgKiB2YWx1ZSkgLSAxKTtcbiAgICByZXR1cm4gMC41ICogKE1hdGguc3FydCgxIC0gKHZhbHVlIC09IDIpICogdmFsdWUpICsgMSk7XG4gIH0sXG5cbiAgZWFzZUluQmFjayh2YWx1ZSkge1xuICAgIGxldCBzID0gMS43MDE1ODtcbiAgICByZXR1cm4gdmFsdWUgKiB2YWx1ZSAqICgocyArIDEpICogdmFsdWUgLSBzKTtcbiAgfSxcblxuICBlYXNlT3V0QmFjayh2YWx1ZSkge1xuICAgIGxldCBzID0gMS43MDE1ODtcbiAgICByZXR1cm4gKHZhbHVlID0gdmFsdWUgLSAxKSAqIHZhbHVlICogKChzICsgMSkgKiB2YWx1ZSArIHMpICsgMTtcbiAgfSxcblxuICBlYXNlSW5PdXRCYWNrKHZhbHVlKSB7XG4gICAgbGV0IHMgPSAxLjcwMTU4O1xuICAgIGlmICgodmFsdWUgLz0gMC41KSA8IDEpIHJldHVybiAwLjUgKiAodmFsdWUgKiB2YWx1ZSAqICgoKHMgKj0gMS41MjUpICsgMSkgKiB2YWx1ZSAtIHMpKTtcbiAgICByZXR1cm4gMC41ICogKCh2YWx1ZSAtPSAyKSAqIHZhbHVlICogKCgocyAqPSAxLjUyNSkgKyAxKSAqIHZhbHVlICsgcykgKyAyKTtcbiAgfSxcblxuICBnZXRFYXNpbmcoZWFzZSkge1xuICAgIGlmICh0eXBlb2YgZWFzZSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZWFzZTtcbiAgICBlbHNlIHJldHVybiB0aGlzW2Vhc2VdIHx8IHRoaXMuZWFzZUxpbmVhcjtcbiAgfVxufTtcbiIsImltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWN0b3IyRCB7XG4gIGNvbnN0cnVjdG9yKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4IHx8IDA7XG4gICAgdGhpcy55ID0geSB8fCAwO1xuICB9XG5cbiAgc2V0KHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRYKHgpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0WSh5KSB7XG4gICAgdGhpcy55ID0geTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldEdyYWRpZW50KCkge1xuICAgIGlmICh0aGlzLnggIT09IDApIHJldHVybiBNYXRoLmF0YW4yKHRoaXMueSwgdGhpcy54KTtcbiAgICBlbHNlIGlmICh0aGlzLnkgPiAwKSByZXR1cm4gTWF0aFV0aWwuUElfMjtcbiAgICBlbHNlIGlmICh0aGlzLnkgPCAwKSByZXR1cm4gLU1hdGhVdGlsLlBJXzI7XG4gIH1cblxuICBjb3B5KHYpIHtcbiAgICB0aGlzLnggPSB2Lng7XG4gICAgdGhpcy55ID0gdi55O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGQodiwgdykge1xuICAgIGlmICh3ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmFkZFZlY3RvcnModiwgdyk7XG4gICAgfVxuXG4gICAgdGhpcy54ICs9IHYueDtcbiAgICB0aGlzLnkgKz0gdi55O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGRYWShhLCBiKSB7XG4gICAgdGhpcy54ICs9IGE7XG4gICAgdGhpcy55ICs9IGI7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZFZlY3RvcnMoYSwgYikge1xuICAgIHRoaXMueCA9IGEueCArIGIueDtcbiAgICB0aGlzLnkgPSBhLnkgKyBiLnk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN1Yih2LCB3KSB7XG4gICAgaWYgKHcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuc3ViVmVjdG9ycyh2LCB3KTtcbiAgICB9XG5cbiAgICB0aGlzLnggLT0gdi54O1xuICAgIHRoaXMueSAtPSB2Lnk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN1YlZlY3RvcnMoYSwgYikge1xuICAgIHRoaXMueCA9IGEueCAtIGIueDtcbiAgICB0aGlzLnkgPSBhLnkgLSBiLnk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRpdmlkZVNjYWxhcihzKSB7XG4gICAgaWYgKHMgIT09IDApIHtcbiAgICAgIHRoaXMueCAvPSBzO1xuICAgICAgdGhpcy55IC89IHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0KDAsIDApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbXVsdGlwbHlTY2FsYXIocykge1xuICAgIHRoaXMueCAqPSBzO1xuICAgIHRoaXMueSAqPSBzO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBuZWdhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsdGlwbHlTY2FsYXIoLTEpO1xuICB9XG5cbiAgZG90KHYpIHtcbiAgICByZXR1cm4gdGhpcy54ICogdi54ICsgdGhpcy55ICogdi55O1xuICB9XG5cbiAgbGVuZ3RoU3EoKSB7XG4gICAgcmV0dXJuIHRoaXMueCAqIHRoaXMueCArIHRoaXMueSAqIHRoaXMueTtcbiAgfVxuXG4gIGxlbmd0aCgpIHtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHRoaXMueCAqIHRoaXMueCArIHRoaXMueSAqIHRoaXMueSk7XG4gIH1cblxuICBub3JtYWxpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKHRoaXMubGVuZ3RoKCkpO1xuICB9XG5cbiAgZGlzdGFuY2VUbyh2KSB7XG4gICAgcmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RhbmNlVG9TcXVhcmVkKHYpKTtcbiAgfVxuXG4gIHJvdGF0ZSh0aGEpIHtcbiAgICBjb25zdCB4ID0gdGhpcy54O1xuICAgIGNvbnN0IHkgPSB0aGlzLnk7XG5cbiAgICB0aGlzLnggPSB4ICogTWF0aC5jb3ModGhhKSArIHkgKiBNYXRoLnNpbih0aGEpO1xuICAgIHRoaXMueSA9IC14ICogTWF0aC5zaW4odGhhKSArIHkgKiBNYXRoLmNvcyh0aGEpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBkaXN0YW5jZVRvU3F1YXJlZCh2KSB7XG4gICAgY29uc3QgZHggPSB0aGlzLnggLSB2Lng7XG4gICAgY29uc3QgZHkgPSB0aGlzLnkgLSB2Lnk7XG5cbiAgICByZXR1cm4gZHggKiBkeCArIGR5ICogZHk7XG4gIH1cblxuICBsZXJwKHYsIGFscGhhKSB7XG4gICAgdGhpcy54ICs9ICh2LnggLSB0aGlzLngpICogYWxwaGE7XG4gICAgdGhpcy55ICs9ICh2LnkgLSB0aGlzLnkpICogYWxwaGE7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGVxdWFscyh2KSB7XG4gICAgcmV0dXJuIHYueCA9PT0gdGhpcy54ICYmIHYueSA9PT0gdGhpcy55O1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy54ID0gMC4wO1xuICAgIHRoaXMueSA9IDAuMDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNsb25lKCkge1xuICAgIHJldHVybiBuZXcgVmVjdG9yMkQodGhpcy54LCB0aGlzLnkpO1xuICB9XG59XG4iLCIvKiogQHR5cGVkZWYge2ltcG9ydCgnLi4vYmVoYXZpb3VyL0JlaGF2aW91cicpfSBCZWhhdmlvdXIgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9tYXRoL1ZlY3RvcjJEJyl9IFZlY3RvcjJEICovXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi4vdXRpbHMvUmdiJyl9IFJnYiAqL1xuaW1wb3J0IFJnYiBmcm9tIFwiLi4vdXRpbHMvUmdiXCI7XG5pbXBvcnQgUHVpZCBmcm9tIFwiLi4vdXRpbHMvUHVpZFwiO1xuaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBQcm9wVXRpbCBmcm9tIFwiLi4vdXRpbHMvUHJvcFV0aWxcIjtcbmltcG9ydCBlYXNlIGZyb20gXCIuLi9tYXRoL2Vhc2VcIjtcbmltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi4vbWF0aC9WZWN0b3IyRFwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuLi9tYXRoL01hdGhVdGlsXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcnRpY2xlIHtcbiAgLyoqIEB0eXBlIHN0cmluZyAqL1xuICBpZCA9IFwiXCI7XG5cbiAgLyoqIEB0eXBlIHt7cDpWZWN0b3IyRCx2OlZlY3RvcjJELGE6VmVjdG9yMkR9fSAqL1xuICBvbGQgPSBudWxsO1xuXG4gIC8qKiBAdHlwZSB7b2JqZWN0fSAqL1xuICBkYXRhID0gbnVsbDtcblxuICAvKiogQHR5cGUge0JlaGF2aW91cltdfSAqL1xuICBiZWhhdmlvdXJzID0gbnVsbDtcblxuICAvKiogQHR5cGUge1ZlY3RvcjJEfSAqL1xuICBwID0gbnVsbDtcblxuICAvKiogQHR5cGUge1ZlY3RvcjJEfSAqL1xuICB2ID0gbnVsbDtcblxuICAvKiogQHR5cGUge1ZlY3RvcjJEfSAqL1xuICBhID0gbnVsbDtcblxuICAvKiogQHR5cGUge1JnYn0gKi9cbiAgcmdiID0gbnVsbDtcblxuICAvKipcbiAgICogdGhlIFBhcnRpY2xlIGNsYXNzXG4gICAqXG4gICAqIEBjbGFzcyBQcm90b24uUGFydGljbGVcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwT2JqIHRoZSBwYXJhbWV0ZXJzIG9iamVjdDtcbiAgICogZm9yIGV4YW1wbGUge2xpZmU6MyxkZWFkOmZhbHNlfVxuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZikge1xuICAgIC8qKlxuICAgICAqIFRoZSBwYXJ0aWNsZSdzIGlkO1xuICAgICAqIEBwcm9wZXJ0eSBpZFxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5uYW1lID0gXCJQYXJ0aWNsZVwiO1xuICAgIHRoaXMuaWQgPSBQdWlkLmlkKHRoaXMubmFtZSk7XG4gICAgdGhpcy5vbGQgPSB7fTtcbiAgICB0aGlzLmRhdGEgPSB7fTtcbiAgICB0aGlzLmJlaGF2aW91cnMgPSBbXTtcblxuICAgIHRoaXMucCA9IG5ldyBWZWN0b3IyRCgpO1xuICAgIHRoaXMudiA9IG5ldyBWZWN0b3IyRCgpO1xuICAgIHRoaXMuYSA9IG5ldyBWZWN0b3IyRCgpO1xuICAgIHRoaXMub2xkLnAgPSBuZXcgVmVjdG9yMkQoKTtcbiAgICB0aGlzLm9sZC52ID0gbmV3IFZlY3RvcjJEKCk7XG4gICAgdGhpcy5vbGQuYSA9IG5ldyBWZWN0b3IyRCgpO1xuXG4gICAgdGhpcy5yZ2IgPSBuZXcgUmdiKCk7XG4gICAgdGhpcy5yZXNldCgpO1xuICAgIGNvbmYgJiYgUHJvcFV0aWwuc2V0UHJvcCh0aGlzLCBjb25mKTtcbiAgfVxuXG4gIGdldERpcmVjdGlvbigpIHtcbiAgICByZXR1cm4gTWF0aC5hdGFuMih0aGlzLnYueCwgLXRoaXMudi55KSAqIE1hdGhVdGlsLk4xODBfUEk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLmxpZmUgPSBJbmZpbml0eTtcbiAgICB0aGlzLmFnZSA9IDA7XG5cbiAgICB0aGlzLmRlYWQgPSBmYWxzZTtcbiAgICB0aGlzLnNsZWVwID0gZmFsc2U7XG4gICAgdGhpcy5ib2R5ID0gbnVsbDtcbiAgICB0aGlzLnNwcml0ZSA9IG51bGw7XG4gICAgdGhpcy5wYXJlbnQgPSBudWxsO1xuXG4gICAgdGhpcy5lbmVyZ3kgPSAxOyAvLyBFbmVyZ3kgTG9zc1xuICAgIHRoaXMubWFzcyA9IDE7XG4gICAgdGhpcy5yYWRpdXMgPSAxMDtcbiAgICB0aGlzLmFscGhhID0gMTtcbiAgICB0aGlzLnNjYWxlID0gMTtcbiAgICB0aGlzLnJvdGF0aW9uID0gMDtcbiAgICB0aGlzLmNvbG9yID0gbnVsbDtcblxuICAgIHRoaXMucC5zZXQoMCwgMCk7XG4gICAgdGhpcy52LnNldCgwLCAwKTtcbiAgICB0aGlzLmEuc2V0KDAsIDApO1xuICAgIHRoaXMub2xkLnAuc2V0KDAsIDApO1xuICAgIHRoaXMub2xkLnYuc2V0KDAsIDApO1xuICAgIHRoaXMub2xkLmEuc2V0KDAsIDApO1xuICAgIHRoaXMuZWFzaW5nID0gZWFzZS5lYXNlTGluZWFyO1xuXG4gICAgdGhpcy5yZ2IucmVzZXQoKTtcbiAgICBVdGlsLmVtcHR5T2JqZWN0KHRoaXMuZGF0YSk7XG4gICAgdGhpcy5yZW1vdmVBbGxCZWhhdmlvdXJzKCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHVwZGF0ZSh0aW1lLCBpbmRleCkge1xuICAgIGlmICghdGhpcy5zbGVlcCkge1xuICAgICAgdGhpcy5hZ2UgKz0gdGltZTtcbiAgICAgIHRoaXMuYXBwbHlCZWhhdmlvdXJzKHRpbWUsIGluZGV4KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hZ2UgPCB0aGlzLmxpZmUpIHtcbiAgICAgIGNvbnN0IHNjYWxlID0gdGhpcy5lYXNpbmcodGhpcy5hZ2UgLyB0aGlzLmxpZmUpO1xuICAgICAgdGhpcy5lbmVyZ3kgPSBNYXRoLm1heCgxIC0gc2NhbGUsIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cblxuICBhcHBseUJlaGF2aW91cnModGltZSwgaW5kZXgpIHtcbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmJlaGF2aW91cnMubGVuZ3RoO1xuICAgIGxldCBpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmJlaGF2aW91cnNbaV0gJiYgdGhpcy5iZWhhdmlvdXJzW2ldLmFwcGx5QmVoYXZpb3VyKHRoaXMsIHRpbWUsIGluZGV4KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtCZWhhdmlvdXJ9IGJlaGF2aW91clxuICAgKi9cbiAgYWRkQmVoYXZpb3VyKGJlaGF2aW91cikge1xuICAgIHRoaXMuYmVoYXZpb3Vycy5wdXNoKGJlaGF2aW91cik7XG5cbiAgICBpZiAoYmVoYXZpb3VyLmhhc093blByb3BlcnR5KFwicGFyZW50c1wiKSkgYmVoYXZpb3VyLnBhcmVudHMucHVzaCh0aGlzKTtcbiAgICBiZWhhdmlvdXIuaW5pdGlhbGl6ZSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0JlaGF2aW91cltdfSBiZWhhdmlvdXJzXG4gICAqL1xuICBhZGRCZWhhdmlvdXJzKGJlaGF2aW91cnMpIHtcbiAgICBjb25zdCBsZW5ndGggPSBiZWhhdmlvdXJzLmxlbmd0aDtcbiAgICBsZXQgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5hZGRCZWhhdmlvdXIoYmVoYXZpb3Vyc1tpXSk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlQmVoYXZpb3VyKGJlaGF2aW91cikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5iZWhhdmlvdXJzLmluZGV4T2YoYmVoYXZpb3VyKTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICBjb25zdCBiZWhhdmlvdXIgPSB0aGlzLmJlaGF2aW91cnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIGJlaGF2aW91ci5wYXJlbnRzID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICByZW1vdmVBbGxCZWhhdmlvdXJzKCkge1xuICAgIFV0aWwuZW1wdHlBcnJheSh0aGlzLmJlaGF2aW91cnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3RvcnkgdGhpcyBwYXJ0aWNsZVxuICAgKiBAbWV0aG9kIGRlc3Ryb3lcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZW1vdmVBbGxCZWhhdmlvdXJzKCk7XG4gICAgdGhpcy5lbmVyZ3kgPSAwO1xuICAgIHRoaXMuZGVhZCA9IHRydWU7XG4gICAgdGhpcy5wYXJlbnQgPSBudWxsO1xuICB9XG59XG4iLCJleHBvcnQgZGVmYXVsdCB7XG4gIC8qKlxuICAgKiBAdHlwZWRlZiAge09iamVjdH0gcmdiT2JqZWN0XG4gICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSByIHJlZCB2YWx1ZVxuICAgKiBAcHJvcGVydHkge051bWJlcn0gZyBncmVlbiB2YWx1ZVxuICAgKiBAcHJvcGVydHkge051bWJlcn0gYiBibHVlIHZhbHVlXG4gICAqL1xuICAvKipcbiAgICogY29udmVydHMgYSBoZXggdmFsdWUgdG8gYSByZ2Igb2JqZWN0XG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBoZXhUb1JnYlxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gaCBhbnkgaGV4IHZhbHVlLCBlLmcuICMwMDAwMDAgb3IgMDAwMDAwIGZvciBibGFja1xuICAgKlxuICAgKiBAcmV0dXJuIHtyZ2JPYmplY3R9XG4gICAqL1xuICBoZXhUb1JnYihoKSB7XG4gICAgY29uc3QgaGV4MTYgPSBoLmNoYXJBdCgwKSA9PT0gXCIjXCIgPyBoLnN1YnN0cmluZygxLCA3KSA6IGg7XG4gICAgY29uc3QgciA9IHBhcnNlSW50KGhleDE2LnN1YnN0cmluZygwLCAyKSwgMTYpO1xuICAgIGNvbnN0IGcgPSBwYXJzZUludChoZXgxNi5zdWJzdHJpbmcoMiwgNCksIDE2KTtcbiAgICBjb25zdCBiID0gcGFyc2VJbnQoaGV4MTYuc3Vic3RyaW5nKDQsIDYpLCAxNik7XG5cbiAgICByZXR1cm4geyByLCBnLCBiIH07XG4gIH0sXG5cbiAgLyoqXG4gICAqIGNvbnZlcnRzIGEgcmdiIHZhbHVlIHRvIGEgcmdiIHN0cmluZ1xuICAgKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5VdGlsXG4gICAqIEBtZXRob2QgcmdiVG9IZXhcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3QgfCBQcm90b24uaGV4VG9SZ2J9IHJnYiBhIHJnYiBvYmplY3QgbGlrZSBpbiB7QGxpbmsgUHJvdG9uI1Byb3Rvbi59XG4gICAqXG4gICAqIEByZXR1cm4ge1N0cmluZ30gcmdiKClcbiAgICovXG4gIHJnYlRvSGV4KHJiZykge1xuICAgIHJldHVybiBgcmdiKCR7cmJnLnJ9LCAke3JiZy5nfSwgJHtyYmcuYn0pYDtcbiAgfSxcblxuICBnZXRIZXgxNkZyb21QYXJ0aWNsZShwKSB7XG4gICAgcmV0dXJuIE51bWJlcihwLnJnYi5yKSAqIDY1NTM2ICsgTnVtYmVyKHAucmdiLmcpICogMjU2ICsgTnVtYmVyKHAucmdiLmIpO1xuICB9XG59O1xuIiwiaW1wb3J0IFZlY3RvcjJEIGZyb20gXCIuL1ZlY3RvcjJEXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvbGFyMkQge1xuICBjb25zdHJ1Y3RvcihyLCB0aGEpIHtcbiAgICB0aGlzLnIgPSBNYXRoLmFicyhyKSB8fCAwO1xuICAgIHRoaXMudGhhID0gdGhhIHx8IDA7XG4gIH1cblxuICBzZXQociwgdGhhKSB7XG4gICAgdGhpcy5yID0gcjtcbiAgICB0aGlzLnRoYSA9IHRoYTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldFIocikge1xuICAgIHRoaXMuciA9IHI7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRUaGEodGhhKSB7XG4gICAgdGhpcy50aGEgPSB0aGE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjb3B5KHApIHtcbiAgICB0aGlzLnIgPSBwLnI7XG4gICAgdGhpcy50aGEgPSBwLnRoYTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRvVmVjdG9yKCkge1xuICAgIHJldHVybiBuZXcgVmVjdG9yMkQodGhpcy5nZXRYKCksIHRoaXMuZ2V0WSgpKTtcbiAgfVxuXG4gIGdldFgoKSB7XG4gICAgcmV0dXJuIHRoaXMuciAqIE1hdGguc2luKHRoaXMudGhhKTtcbiAgfVxuXG4gIGdldFkoKSB7XG4gICAgcmV0dXJuIC10aGlzLnIgKiBNYXRoLmNvcyh0aGlzLnRoYSk7XG4gIH1cblxuICBub3JtYWxpemUoKSB7XG4gICAgdGhpcy5yID0gMTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGVxdWFscyh2KSB7XG4gICAgcmV0dXJuIHYuciA9PT0gdGhpcy5yICYmIHYudGhhID09PSB0aGlzLnRoYTtcbiAgfVxuXG4gIGNsZWFyKCkge1xuICAgIHRoaXMuciA9IDAuMDtcbiAgICB0aGlzLnRoYSA9IDAuMDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNsb25lKCkge1xuICAgIHJldHVybiBuZXcgUG9sYXIyRCh0aGlzLnIsIHRoaXMudGhhKTtcbiAgfVxufVxuIiwiY29uc3QgTWF0MyA9IHtcbiAgY3JlYXRlKG1hdDMpIHtcbiAgICBjb25zdCBtYXQgPSBuZXcgRmxvYXQzMkFycmF5KDkpO1xuICAgIGlmIChtYXQzKSB0aGlzLnNldChtYXQzLCBtYXQpO1xuXG4gICAgcmV0dXJuIG1hdDtcbiAgfSxcblxuICBzZXQobWF0MSwgbWF0Mikge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgOTsgaSsrKSBtYXQyW2ldID0gbWF0MVtpXTtcblxuICAgIHJldHVybiBtYXQyO1xuICB9LFxuXG4gIG11bHRpcGx5KG1hdCwgbWF0MiwgbWF0Mykge1xuICAgIGxldCBhMDAgPSBtYXRbMF0sXG4gICAgICBhMDEgPSBtYXRbMV0sXG4gICAgICBhMDIgPSBtYXRbMl0sXG4gICAgICBhMTAgPSBtYXRbM10sXG4gICAgICBhMTEgPSBtYXRbNF0sXG4gICAgICBhMjAgPSBtYXRbNl0sXG4gICAgICBhMjEgPSBtYXRbN10sXG4gICAgICBiMDAgPSBtYXQyWzBdLFxuICAgICAgYjAxID0gbWF0MlsxXSxcbiAgICAgIGIwMiA9IG1hdDJbMl0sXG4gICAgICBiMTAgPSBtYXQyWzNdLFxuICAgICAgYjExID0gbWF0Mls0XSxcbiAgICAgIGIyMCA9IG1hdDJbNl0sXG4gICAgICBiMjEgPSBtYXQyWzddO1xuXG4gICAgbWF0M1swXSA9IGIwMCAqIGEwMCArIGIwMSAqIGExMDtcbiAgICBtYXQzWzFdID0gYjAwICogYTAxICsgYjAxICogYTExO1xuICAgIG1hdDNbMl0gPSBhMDIgKiBiMDI7XG4gICAgbWF0M1szXSA9IGIxMCAqIGEwMCArIGIxMSAqIGExMDtcbiAgICBtYXQzWzRdID0gYjEwICogYTAxICsgYjExICogYTExO1xuICAgIG1hdDNbNl0gPSBiMjAgKiBhMDAgKyBiMjEgKiBhMTAgKyBhMjA7XG4gICAgbWF0M1s3XSA9IGIyMCAqIGEwMSArIGIyMSAqIGExMSArIGEyMTtcblxuICAgIHJldHVybiBtYXQzO1xuICB9LFxuXG4gIGludmVyc2UobWF0LCBtYXQzKSB7XG4gICAgbGV0IGEwMCA9IG1hdFswXSxcbiAgICAgIGEwMSA9IG1hdFsxXSxcbiAgICAgIGExMCA9IG1hdFszXSxcbiAgICAgIGExMSA9IG1hdFs0XSxcbiAgICAgIGEyMCA9IG1hdFs2XSxcbiAgICAgIGEyMSA9IG1hdFs3XSxcbiAgICAgIGIwMSA9IGExMSxcbiAgICAgIGIxMSA9IC1hMTAsXG4gICAgICBiMjEgPSBhMjEgKiBhMTAgLSBhMTEgKiBhMjAsXG4gICAgICBkID0gYTAwICogYjAxICsgYTAxICogYjExLFxuICAgICAgaWQ7XG5cbiAgICBpZCA9IDEgLyBkO1xuICAgIG1hdDNbMF0gPSBiMDEgKiBpZDtcbiAgICBtYXQzWzFdID0gLWEwMSAqIGlkO1xuICAgIG1hdDNbM10gPSBiMTEgKiBpZDtcbiAgICBtYXQzWzRdID0gYTAwICogaWQ7XG4gICAgbWF0M1s2XSA9IGIyMSAqIGlkO1xuICAgIG1hdDNbN10gPSAoLWEyMSAqIGEwMCArIGEwMSAqIGEyMCkgKiBpZDtcblxuICAgIHJldHVybiBtYXQzO1xuICB9LFxuXG4gIG11bHRpcGx5VmVjMihtLCB2ZWMsIG1hdDMpIHtcbiAgICBsZXQgeCA9IHZlY1swXSxcbiAgICAgIHkgPSB2ZWNbMV07XG5cbiAgICBtYXQzWzBdID0geCAqIG1bMF0gKyB5ICogbVszXSArIG1bNl07XG4gICAgbWF0M1sxXSA9IHggKiBtWzFdICsgeSAqIG1bNF0gKyBtWzddO1xuXG4gICAgcmV0dXJuIG1hdDM7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IE1hdDM7XG4iLCJpbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuLi9tYXRoL01hdGhVdGlsXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNwYW4ge1xuICBjb25zdHJ1Y3RvcihhLCBiLCBjZW50ZXIpIHtcbiAgICBpZiAoVXRpbC5pc0FycmF5KGEpKSB7XG4gICAgICB0aGlzLmlzQXJyYXkgPSB0cnVlO1xuICAgICAgdGhpcy5hID0gYTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0FycmF5ID0gZmFsc2U7XG4gICAgICB0aGlzLmEgPSBVdGlsLmluaXRWYWx1ZShhLCAxKTtcbiAgICAgIHRoaXMuYiA9IFV0aWwuaW5pdFZhbHVlKGIsIHRoaXMuYSk7XG4gICAgICB0aGlzLmNlbnRlciA9IFV0aWwuaW5pdFZhbHVlKGNlbnRlciwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGdldFZhbHVlKGlzSW50ID0gZmFsc2UpIHtcbiAgICBpZiAodGhpcy5pc0FycmF5KSB7XG4gICAgICByZXR1cm4gVXRpbC5nZXRSYW5kRnJvbUFycmF5KHRoaXMuYSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5jZW50ZXIpIHtcbiAgICAgICAgcmV0dXJuIE1hdGhVdGlsLnJhbmRvbUFUb0IodGhpcy5hLCB0aGlzLmIsIGlzSW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBNYXRoVXRpbC5yYW5kb21GbG9hdGluZyh0aGlzLmEsIHRoaXMuYiwgaXNJbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbmV3IFNwYW4gb2JqZWN0XG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBzZXRTcGFuVmFsdWVcbiAgICpcbiAgICogQHRvZG8gYSwgYiBhbmQgYyBzaG91bGQgYmUgJ01peGVkJyBvciAnTnVtYmVyJz9cbiAgICpcbiAgICogQHBhcmFtIHtNaXhlZCB8IFNwYW59IGFcbiAgICogQHBhcmFtIHtNaXhlZH0gICAgICAgICAgICAgICBiXG4gICAqIEBwYXJhbSB7TWl4ZWR9ICAgICAgICAgICAgICAgY1xuICAgKlxuICAgKiBAcmV0dXJuIHtTcGFufVxuICAgKi9cbiAgc3RhdGljIHNldFNwYW5WYWx1ZShhLCBiLCBjKSB7XG4gICAgaWYgKGEgaW5zdGFuY2VvZiBTcGFuKSB7XG4gICAgICByZXR1cm4gYTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbmV3IFNwYW4oYSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gbmV3IFNwYW4oYSwgYik7XG4gICAgICAgIGVsc2UgcmV0dXJuIG5ldyBTcGFuKGEsIGIsIGMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBmcm9tIGEgU3BhbiwgaWYgdGhlIHBhcmFtIGlzIG5vdCBhIFNwYW4gaXQgd2lsbCByZXR1cm4gdGhlIGdpdmVuIHBhcmFtZXRlclxuICAgKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5VdGlsXG4gICAqIEBtZXRob2QgZ2V0VmFsdWVcbiAgICpcbiAgICogQHBhcmFtIHtNaXhlZCB8IFNwYW59IHBhblxuICAgKlxuICAgKiBAcmV0dXJuIHtNaXhlZH0gdGhlIHZhbHVlIG9mIFNwYW4gT1IgdGhlIHBhcmFtZXRlciBpZiBpdCBpcyBub3QgYSBTcGFuXG4gICAqL1xuICBzdGF0aWMgZ2V0U3BhblZhbHVlKHBhbikge1xuICAgIHJldHVybiBwYW4gaW5zdGFuY2VvZiBTcGFuID8gcGFuLmdldFZhbHVlKCkgOiBwYW47XG4gIH1cbn1cbiIsImltcG9ydCBTcGFuIGZyb20gXCIuL1NwYW5cIjtcbmltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4vTWF0aFV0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXJyYXlTcGFuIGV4dGVuZHMgU3BhbiB7XG4gIGNvbnN0cnVjdG9yKGNvbG9yKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9hcnIgPSBVdGlsLnRvQXJyYXkoY29sb3IpO1xuICB9XG5cbiAgZ2V0VmFsdWUoKSB7XG4gICAgY29uc3QgdmFsID0gVXRpbC5nZXRSYW5kRnJvbUFycmF5KHRoaXMuX2Fycik7XG4gICAgcmV0dXJuIHZhbCA9PT0gXCJyYW5kb21cIiB8fCB2YWwgPT09IFwiUmFuZG9tXCIgPyBNYXRoVXRpbC5yYW5kb21Db2xvcigpIDogdmFsO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2Ugc3VyZSB0aGF0IHRoZSBjb2xvciBpcyBhbiBpbnN0YW5jZSBvZiBQcm90b24uQXJyYXlTcGFuLCBpZiBub3QgaXQgbWFrZXMgYSBuZXcgaW5zdGFuY2VcbiAgICpcbiAgICogQG1ldGhvZCBzZXRTcGFuVmFsdWVcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uQ29sb3JcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLlBhcnRpY2xlfSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge051bWJlcn0gdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgc3RhdGljIGNyZWF0ZUFycmF5U3BhbihhcnIpIHtcbiAgICBpZiAoIWFycikgcmV0dXJuIG51bGw7XG5cbiAgICBpZiAoYXJyIGluc3RhbmNlb2YgQXJyYXlTcGFuKSByZXR1cm4gYXJyO1xuICAgIGVsc2UgcmV0dXJuIG5ldyBBcnJheVNwYW4oYXJyKTtcbiAgfVxufVxuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVjdGFuZ2xlIHtcbiAgY29uc3RydWN0b3IoeCwgeSwgdywgaCkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcblxuICAgIHRoaXMud2lkdGggPSB3O1xuICAgIHRoaXMuaGVpZ2h0ID0gaDtcblxuICAgIHRoaXMuYm90dG9tID0gdGhpcy55ICsgdGhpcy5oZWlnaHQ7XG4gICAgdGhpcy5yaWdodCA9IHRoaXMueCArIHRoaXMud2lkdGg7XG4gIH1cblxuICBjb250YWlucyh4LCB5KSB7XG4gICAgaWYgKHggPD0gdGhpcy5yaWdodCAmJiB4ID49IHRoaXMueCAmJiB5IDw9IHRoaXMuYm90dG9tICYmIHkgPj0gdGhpcy55KSByZXR1cm4gdHJ1ZTtcbiAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwiaW1wb3J0IFNwYW4gZnJvbSBcIi4uL21hdGgvU3BhblwiO1xuaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmF0ZSB7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHBhcnRpY2xlcyBwZXIgc2Vjb25kIGVtaXNzaW9uIChhIFtwYXJ0aWNsZV0vYiBbc10pO1xuICAgKiBAbmFtZXNwYWNlXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFsaWFzIFJhdGVcbiAgICpcbiAgICogQHBhcmFtIHtBcnJheSB8IE51bWJlciB8IFNwYW59IG51bXBhbiB0aGUgbnVtYmVyIG9mIGVhY2ggZW1pc3Npb247XG4gICAqIEBwYXJhbSB7QXJyYXkgfCBOdW1iZXIgfCBTcGFufSB0aW1lcGFuIHRoZSB0aW1lIG9mIGVhY2ggZW1pc3Npb247XG4gICAqIGZvciBleGFtcGxlOiBuZXcgUmF0ZShuZXcgU3BhbigxMCwgMjApLCBuZXcgU3BhbiguMSwgLjI1KSk7XG4gICAqL1xuICBjb25zdHJ1Y3RvcihudW1wYW4sIHRpbWVwYW4pIHtcbiAgICB0aGlzLm51bVBhbiA9IFNwYW4uc2V0U3BhblZhbHVlKFV0aWwuaW5pdFZhbHVlKG51bXBhbiwgMSkpO1xuICAgIHRoaXMudGltZVBhbiA9IFNwYW4uc2V0U3BhblZhbHVlKFV0aWwuaW5pdFZhbHVlKHRpbWVwYW4sIDEpKTtcblxuICAgIHRoaXMuc3RhcnRUaW1lID0gMDtcbiAgICB0aGlzLm5leHRUaW1lID0gMDtcbiAgICB0aGlzLmluaXQoKTtcbiAgfVxuXG4gIGluaXQoKSB7XG4gICAgdGhpcy5zdGFydFRpbWUgPSAwO1xuICAgIHRoaXMubmV4dFRpbWUgPSB0aGlzLnRpbWVQYW4uZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGdldFZhbHVlKHRpbWUpIHtcbiAgICB0aGlzLnN0YXJ0VGltZSArPSB0aW1lO1xuXG4gICAgaWYgKHRoaXMuc3RhcnRUaW1lID49IHRoaXMubmV4dFRpbWUpIHtcbiAgICAgIHRoaXMuc3RhcnRUaW1lID0gMDtcbiAgICAgIHRoaXMubmV4dFRpbWUgPSB0aGlzLnRpbWVQYW4uZ2V0VmFsdWUoKTtcblxuICAgICAgaWYgKHRoaXMubnVtUGFuLmIgPT09IDEpIHtcbiAgICAgICAgaWYgKHRoaXMubnVtUGFuLmdldFZhbHVlKGZhbHNlKSA+IDAuNSkgcmV0dXJuIDE7XG4gICAgICAgIGVsc2UgcmV0dXJuIDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5udW1QYW4uZ2V0VmFsdWUodHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIEluaXRpYWxpemUge1xuICByZXNldCgpIHt9XG5cbiAgaW5pdChlbWl0dGVyLCBwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplKHBhcnRpY2xlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsaXplKGVtaXR0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHN1YiBjbGFzcyBpbml0XG4gIGluaXRpYWxpemUodGFyZ2V0KSB7fVxufVxuIiwiaW1wb3J0IFNwYW4gZnJvbSBcIi4uL21hdGgvU3BhblwiO1xuaW1wb3J0IEluaXRpYWxpemUgZnJvbSBcIi4vSW5pdGlhbGl6ZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaWZlIGV4dGVuZHMgSW5pdGlhbGl6ZSB7XG4gIGNvbnN0cnVjdG9yKGEsIGIsIGMpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5saWZlUGFuID0gU3Bhbi5zZXRTcGFuVmFsdWUoYSwgYiwgYyk7XG4gICAgdGhpcy5uYW1lID0gXCJMaWZlXCI7XG4gIH1cblxuICBpbml0aWFsaXplKHRhcmdldCkge1xuICAgIGlmICh0aGlzLmxpZmVQYW4uYSA9PT0gSW5maW5pdHkpIHRhcmdldC5saWZlID0gSW5maW5pdHk7XG4gICAgZWxzZSB0YXJnZXQubGlmZSA9IHRoaXMubGlmZVBhbi5nZXRWYWx1ZSgpO1xuICB9XG59XG4iLCJpbXBvcnQgVmVjdG9yMkQgZnJvbSBcIi4uL21hdGgvVmVjdG9yMkRcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgWm9uZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMudmVjdG9yID0gbmV3IFZlY3RvcjJEKDAsIDApO1xuICAgIHRoaXMucmFuZG9tID0gMDtcbiAgICB0aGlzLmNyb3NzVHlwZSA9IFwiZGVhZFwiO1xuICAgIHRoaXMuYWxlcnQgPSB0cnVlO1xuICB9XG5cbiAgZ2V0UG9zaXRpb24oKSB7fVxuXG4gIGNyb3NzaW5nKHBhcnRpY2xlKSB7fVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy52ZWN0b3IgPSBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQgWm9uZSBmcm9tIFwiLi9ab25lXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvaW50Wm9uZSBleHRlbmRzIFpvbmUge1xuICBjb25zdHJ1Y3Rvcih4LCB5KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgfVxuXG4gIGdldFBvc2l0aW9uKCkge1xuICAgIHRoaXMudmVjdG9yLnggPSB0aGlzLng7XG4gICAgdGhpcy52ZWN0b3IueSA9IHRoaXMueTtcblxuICAgIHJldHVybiB0aGlzLnZlY3RvcjtcbiAgfVxuXG4gIGNyb3NzaW5nKHBhcnRpY2xlKSB7XG4gICAgaWYgKHRoaXMuYWxlcnQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJTb3JyeSwgUG9pbnRab25lIGRvZXMgbm90IHN1cHBvcnQgY3Jvc3NpbmcgbWV0aG9kIVwiKTtcbiAgICAgIHRoaXMuYWxlcnQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgUG9pbnRab25lIGZyb20gXCIuLi96b25lL1BvaW50Wm9uZVwiO1xuaW1wb3J0IEluaXRpYWxpemUgZnJvbSBcIi4vSW5pdGlhbGl6ZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb3NpdGlvbiBleHRlbmRzIEluaXRpYWxpemUge1xuICBjb25zdHJ1Y3Rvcih6b25lKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnpvbmUgPSBVdGlsLmluaXRWYWx1ZSh6b25lLCBuZXcgUG9pbnRab25lKCkpO1xuICAgIHRoaXMubmFtZSA9IFwiUG9zaXRpb25cIjtcbiAgfVxuXG4gIHJlc2V0KHpvbmUpIHtcbiAgICB0aGlzLnpvbmUgPSBVdGlsLmluaXRWYWx1ZSh6b25lLCBuZXcgUG9pbnRab25lKCkpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZSh0YXJnZXQpIHtcbiAgICB0aGlzLnpvbmUuZ2V0UG9zaXRpb24oKTtcblxuICAgIHRhcmdldC5wLnggPSB0aGlzLnpvbmUudmVjdG9yLng7XG4gICAgdGFyZ2V0LnAueSA9IHRoaXMuem9uZS52ZWN0b3IueTtcbiAgfVxufVxuIiwiaW1wb3J0IFByb3RvbiBmcm9tIFwiLi4vY29yZS9Qcm90b25cIjtcbmltcG9ydCBTcGFuIGZyb20gXCIuLi9tYXRoL1NwYW5cIjtcbmltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgSW5pdGlhbGl6ZSBmcm9tIFwiLi9Jbml0aWFsaXplXCI7XG5pbXBvcnQgUG9sYXIyRCBmcm9tIFwiLi4vbWF0aC9Qb2xhcjJEXCI7XG5pbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2NpdHkgZXh0ZW5kcyBJbml0aWFsaXplIHtcbiAgY29uc3RydWN0b3IocnBhbiwgdGhhcGFuLCB0eXBlKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuclBhbiA9IFNwYW4uc2V0U3BhblZhbHVlKHJwYW4pO1xuICAgIHRoaXMudGhhUGFuID0gU3Bhbi5zZXRTcGFuVmFsdWUodGhhcGFuKTtcbiAgICB0aGlzLnR5cGUgPSBVdGlsLmluaXRWYWx1ZSh0eXBlLCBcInZlY3RvclwiKTtcblxuICAgIHRoaXMubmFtZSA9IFwiVmVsb2NpdHlcIjtcbiAgfVxuXG4gIHJlc2V0KHJwYW4sIHRoYXBhbiwgdHlwZSkge1xuICAgIHRoaXMuclBhbiA9IFNwYW4uc2V0U3BhblZhbHVlKHJwYW4pO1xuICAgIHRoaXMudGhhUGFuID0gU3Bhbi5zZXRTcGFuVmFsdWUodGhhcGFuKTtcbiAgICB0aGlzLnR5cGUgPSBVdGlsLmluaXRWYWx1ZSh0eXBlLCBcInZlY3RvclwiKTtcbiAgfVxuXG4gIG5vcm1hbGl6ZVZlbG9jaXR5KHZyKSB7XG4gICAgcmV0dXJuIHZyICogUHJvdG9uLk1FQVNVUkU7XG4gIH1cblxuICBpbml0aWFsaXplKHRhcmdldCkge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IFwicFwiIHx8IHRoaXMudHlwZSA9PT0gXCJQXCIgfHwgdGhpcy50eXBlID09PSBcInBvbGFyXCIpIHtcbiAgICAgIGNvbnN0IHBvbGFyMmQgPSBuZXcgUG9sYXIyRChcbiAgICAgICAgdGhpcy5ub3JtYWxpemVWZWxvY2l0eSh0aGlzLnJQYW4uZ2V0VmFsdWUoKSksXG4gICAgICAgIHRoaXMudGhhUGFuLmdldFZhbHVlKCkgKiBNYXRoVXRpbC5QSV8xODBcbiAgICAgICk7XG5cbiAgICAgIHRhcmdldC52LnggPSBwb2xhcjJkLmdldFgoKTtcbiAgICAgIHRhcmdldC52LnkgPSBwb2xhcjJkLmdldFkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0LnYueCA9IHRoaXMubm9ybWFsaXplVmVsb2NpdHkodGhpcy5yUGFuLmdldFZhbHVlKCkpO1xuICAgICAgdGFyZ2V0LnYueSA9IHRoaXMubm9ybWFsaXplVmVsb2NpdHkodGhpcy50aGFQYW4uZ2V0VmFsdWUoKSk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgU3BhbiBmcm9tIFwiLi4vbWF0aC9TcGFuXCI7XG5pbXBvcnQgSW5pdGlhbGl6ZSBmcm9tIFwiLi9Jbml0aWFsaXplXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1hc3MgZXh0ZW5kcyBJbml0aWFsaXplIHtcbiAgY29uc3RydWN0b3IoYSwgYiwgYykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5tYXNzUGFuID0gU3Bhbi5zZXRTcGFuVmFsdWUoYSwgYiwgYyk7XG4gICAgdGhpcy5uYW1lID0gXCJNYXNzXCI7XG4gIH1cblxuICBpbml0aWFsaXplKHRhcmdldCkge1xuICAgIHRhcmdldC5tYXNzID0gdGhpcy5tYXNzUGFuLmdldFZhbHVlKCk7XG4gIH1cbn1cbiIsImltcG9ydCBTcGFuIGZyb20gXCIuLi9tYXRoL1NwYW5cIjtcbmltcG9ydCBJbml0aWFsaXplIGZyb20gXCIuL0luaXRpYWxpemVcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFkaXVzIGV4dGVuZHMgSW5pdGlhbGl6ZSB7XG4gIGNvbnN0cnVjdG9yKGEsIGIsIGMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucmFkaXVzID0gU3Bhbi5zZXRTcGFuVmFsdWUoYSwgYiwgYyk7XG5cbiAgICB0aGlzLm5hbWUgPSBcIlJhZGl1c1wiO1xuICB9XG5cbiAgcmVzZXQoYSwgYiwgYykge1xuICAgIHRoaXMucmFkaXVzID0gU3Bhbi5zZXRTcGFuVmFsdWUoYSwgYiwgYyk7XG4gIH1cblxuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7XG4gICAgcGFydGljbGUucmFkaXVzID0gdGhpcy5yYWRpdXMuZ2V0VmFsdWUoKTtcbiAgICBwYXJ0aWNsZS5kYXRhLm9sZFJhZGl1cyA9IHBhcnRpY2xlLnJhZGl1cztcbiAgfVxufVxuIiwiaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBBcnJheVNwYW4gZnJvbSBcIi4uL21hdGgvQXJyYXlTcGFuXCI7XG5pbXBvcnQgSW5pdGlhbGl6ZSBmcm9tIFwiLi9Jbml0aWFsaXplXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvZHkgZXh0ZW5kcyBJbml0aWFsaXplIHtcbiAgY29uc3RydWN0b3IoaW1hZ2UsIHcsIGgpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5pbWFnZSA9IHRoaXMuc2V0U3BhblZhbHVlKGltYWdlKTtcbiAgICB0aGlzLncgPSBVdGlsLmluaXRWYWx1ZSh3LCAyMCk7XG4gICAgdGhpcy5oID0gVXRpbC5pbml0VmFsdWUoaCwgdGhpcy53KTtcbiAgICB0aGlzLm5hbWUgPSBcIkJvZHlcIjtcbiAgfVxuXG4gIGluaXRpYWxpemUocGFydGljbGUpIHtcbiAgICBjb25zdCBpbWFnZVRhcmdldCA9IHRoaXMuaW1hZ2UuZ2V0VmFsdWUoKTtcblxuICAgIGlmICh0eXBlb2YgaW1hZ2VUYXJnZXQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHBhcnRpY2xlLmJvZHkgPSB7XG4gICAgICAgIHdpZHRoOiB0aGlzLncsXG4gICAgICAgIGhlaWdodDogdGhpcy5oLFxuICAgICAgICBzcmM6IGltYWdlVGFyZ2V0LFxuICAgICAgICBpc0lubmVyOiB0cnVlLFxuICAgICAgICBpbm5lcjogdHJ1ZVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydGljbGUuYm9keSA9IGltYWdlVGFyZ2V0O1xuICAgIH1cbiAgfVxuXG4gIHNldFNwYW5WYWx1ZShpbWFnZSkge1xuICAgIHJldHVybiBpbWFnZSBpbnN0YW5jZW9mIEFycmF5U3BhbiA/IGltYWdlIDogbmV3IEFycmF5U3BhbihpbWFnZSk7XG4gIH1cbn1cbiIsImltcG9ydCBQcm90b24gZnJvbSBcIi4uL2NvcmUvUHJvdG9uXCI7XG5pbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IGVhc2UgZnJvbSBcIi4uL21hdGgvZWFzZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCZWhhdmlvdXIge1xuICBzdGF0aWMgaWQgPSAwO1xuXG4gIC8qKlxuICAgKiBUaGUgQmVoYXZpb3VyIGNsYXNzIGlzIHRoZSBiYXNlIGZvciB0aGUgb3RoZXIgQmVoYXZpb3VyXG4gICAqXG4gICAqIEBtZW1iZXJvZiEgLVxuICAgKiBAaW50ZXJmYWNlXG4gICAqIEBhbGlhcyBQcm90b24uQmVoYXZpb3VyXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBsaWZlIFx0dGhlIGJlaGF2aW91cnMgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gZWFzaW5nIFx0VGhlIGJlaGF2aW91cidzIGRlY2F5aW5nIHRyZW5kLCBmb3IgZXhhbXBsZSBlYXNlLmVhc2VPdXRRdWFydFxuICAgKlxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gIGlkIFx0XHRUaGUgYmVoYXZpb3VycyBpZFxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKiBAcHJvcGVydHkge051bWJlcn0gIGFnZT0wIFx0SG93IGxvbmcgdGhlIHBhcnRpY2xlIHNob3VsZCBiZSAnYWxpZmUnXG4gICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSAgZW5lcmd5PTFcbiAgICogQHByb3BlcnR5IHtCb29sZWFufSBkZWFkPWZhbHNlIFRoZSBwYXJ0aWNsZSBpcyBkZWFkIGF0IGZpcnN0XG4gICAqIEBwcm9wZXJ0eSB7QXJyYXl9ICAgcGFyZW50cyBcdFRoZSBiZWhhdmlvdXIncyBwYXJlbnRzIGFycmF5XG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSAgbmFtZSBcdFRoZSBiZWhhdmlvdXIgbmFtZVxuICAgKi9cbiAgY29uc3RydWN0b3IobGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy5saWZlID0gVXRpbC5pbml0VmFsdWUobGlmZSwgSW5maW5pdHkpO1xuICAgIHRoaXMuZWFzaW5nID0gZWFzZS5nZXRFYXNpbmcoZWFzaW5nKTtcblxuICAgIHRoaXMuYWdlID0gMDtcbiAgICB0aGlzLmVuZXJneSA9IDE7XG4gICAgdGhpcy5kZWFkID0gZmFsc2U7XG4gICAgdGhpcy5wYXJlbnRzID0gW107XG5cbiAgICB0aGlzLmlkID0gYEJlaGF2aW91cl8ke0JlaGF2aW91ci5pZCsrfWA7XG4gICAgdGhpcy5uYW1lID0gXCJCZWhhdmlvdXJcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQG1ldGhvZCByZXNldFxuICAgKiBAbWVtYmVyb2YgUHJvdG9uLkJlaGF2aW91clxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICovXG4gIHJlc2V0KGxpZmUsIGVhc2luZykge1xuICAgIHRoaXMubGlmZSA9IFV0aWwuaW5pdFZhbHVlKGxpZmUsIEluZmluaXR5KTtcbiAgICB0aGlzLmVhc2luZyA9IGVhc2UuZ2V0RWFzaW5nKGVhc2luZyk7XG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplIGEgZm9yY2UgYnkgMToxMDA7XG4gICAqXG4gICAqIEBtZXRob2Qgbm9ybWFsaXplRm9yY2VcbiAgICogQG1lbWJlcm9mIFByb3Rvbi5CZWhhdmlvdXJcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLlZlY3RvcjJEfSBmb3JjZVxuICAgKi9cbiAgbm9ybWFsaXplRm9yY2UoZm9yY2UpIHtcbiAgICByZXR1cm4gZm9yY2UubXVsdGlwbHlTY2FsYXIoUHJvdG9uLk1FQVNVUkUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZSBhIHZhbHVlIGJ5IDE6MTAwO1xuICAgKlxuICAgKiBAbWV0aG9kIG5vcm1hbGl6ZVZhbHVlXG4gICAqIEBtZW1iZXJvZiBQcm90b24uQmVoYXZpb3VyXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gdmFsdWVcbiAgICovXG4gIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICogUHJvdG9uLk1FQVNVUkU7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYmVoYXZpb3VyJ3MgcGFyYW1ldGVycyBmb3IgYWxsIHBhcnRpY2xlc1xuICAgKlxuICAgKiBAbWV0aG9kIGluaXRpYWxpemVcbiAgICogQG1lbWJlcm9mIFByb3Rvbi5CZWhhdmlvdXJcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLlBhcnRpY2xlfSBwYXJ0aWNsZVxuICAgKi9cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge31cblxuICAvKipcbiAgICogQXBwbHkgdGhpcyBiZWhhdmlvdXIgZm9yIGFsbCBwYXJ0aWNsZXMgZXZlcnkgdGltZVxuICAgKlxuICAgKiBAbWV0aG9kIGFwcGx5QmVoYXZpb3VyXG4gICAqIEBtZW1iZXJvZiBQcm90b24uQmVoYXZpb3VyXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFx0XHRcdHRpbWUgdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IFx0XHRcdGluZGV4IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgY2FsY3VsYXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuYWdlICs9IHRpbWU7XG5cbiAgICBpZiAodGhpcy5hZ2UgPj0gdGhpcy5saWZlIHx8IHRoaXMuZGVhZCkge1xuICAgICAgdGhpcy5lbmVyZ3kgPSAwO1xuICAgICAgdGhpcy5kZWFkID0gdHJ1ZTtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzY2FsZSA9IHRoaXMuZWFzaW5nKHBhcnRpY2xlLmFnZSAvIHBhcnRpY2xlLmxpZmUpO1xuICAgICAgdGhpcy5lbmVyZ3kgPSBNYXRoLm1heCgxIC0gc2NhbGUsIDApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGlzIGJlaGF2aW91ciBmb3IgYWxsIHBhcnRpY2xlcyBldmVyeSB0aW1lXG4gICAqXG4gICAqIEBtZXRob2QgYXBwbHlCZWhhdmlvdXJcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uQ29sb3JcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLlBhcnRpY2xlfSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge051bWJlcn0gdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5jYWxjdWxhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0b3J5IHRoaXMgYmVoYXZpb3VyXG4gICAqXG4gICAqIEBtZXRob2QgZGVzdHJveVxuICAgKiBAbWVtYmVyb2YgUHJvdG9uLkJlaGF2aW91clxuICAgKiBAaW5zdGFuY2VcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgbGV0IGkgPSB0aGlzLnBhcmVudHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRoaXMucGFyZW50c1tpXS5yZW1vdmVCZWhhdmlvdXIodGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5wYXJlbnRzLmxlbmd0aCA9IDA7XG4gIH1cbn1cbiIsImltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi4vbWF0aC9WZWN0b3IyRFwiO1xuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9CZWhhdmlvdXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRm9yY2UgZXh0ZW5kcyBCZWhhdmlvdXIge1xuICAvKipcbiAgICogQG1lbWJlcm9mISBQcm90b24jXG4gICAqIEBhdWdtZW50cyBQcm90b24uQmVoYXZpb3VyXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWxpYXMgUHJvdG9uLkZvcmNlXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBmeFxuICAgKiBAcGFyYW0ge051bWJlcn0gZnlcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0XHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZS5lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqXG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lIFRoZSBCZWhhdmlvdXIgbmFtZVxuICAgKi9cbiAgY29uc3RydWN0b3IoZngsIGZ5LCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcpO1xuXG4gICAgdGhpcy5mb3JjZSA9IHRoaXMubm9ybWFsaXplRm9yY2UobmV3IFZlY3RvcjJEKGZ4LCBmeSkpO1xuICAgIHRoaXMubmFtZSA9IFwiRm9yY2VcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQG1ldGhvZCByZXNldFxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Gb3JjZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGZ4XG4gICAqIEBwYXJhbSB7TnVtYmVyfSBmeVxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICovXG4gIHJlc2V0KGZ4LCBmeSwgbGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy5mb3JjZSA9IHRoaXMubm9ybWFsaXplRm9yY2UobmV3IFZlY3RvcjJEKGZ4LCBmeSkpO1xuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoaXMgYmVoYXZpb3VyIGZvciBhbGwgcGFydGljbGVzIGV2ZXJ5IHRpbWVcbiAgICpcbiAgICogQG1ldGhvZCBhcHBseUJlaGF2aW91clxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Gb3JjZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uUGFydGljbGV9IHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB0aGUgaW50ZWdyYXRlIHRpbWUgMS9tc1xuICAgKiBAcGFyYW0ge0ludH0gdGhlIHBhcnRpY2xlIGluZGV4XG4gICAqL1xuICBhcHBseUJlaGF2aW91cihwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuICAgIHBhcnRpY2xlLmEuYWRkKHRoaXMuZm9yY2UpO1xuICB9XG59XG4iLCJpbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IFZlY3RvcjJEIGZyb20gXCIuLi9tYXRoL1ZlY3RvcjJEXCI7XG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gXCIuL0JlaGF2aW91clwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdHRyYWN0aW9uIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIFRoaXMgYmVoYXZpb3VyIGxldCB0aGUgcGFydGljbGVzIGZvbGxvdyBvbmUgc3BlY2lmaWMgUHJvdG9uLlZlY3RvcjJEXG4gICAqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAYXVnbWVudHMgUHJvdG9uLkJlaGF2aW91clxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFsaWFzIFByb3Rvbi5BdHRyYWN0aW9uXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvbiBmb3IgJ2ZvcmNlJyBhbmQgJ3JhZGl1cydcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uVmVjdG9yMkR9IHRhcmdldFBvc2l0aW9uIHRoZSBhdHRyYWN0aW9uIHBvaW50IGNvb3JkaW5hdGVzXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbZm9yY2U9MTAwXVxuICAgKiBAcGFyYW0ge051bWJlcn0gW3JhZGl1cz0xMDAwXVxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKlxuICAgKiBAcHJvcGVydHkge1Byb3Rvbi5WZWN0b3IyRH0gdGFyZ2V0UG9zaXRpb25cbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IHJhZGl1c1xuICAgKiBAcHJvcGVydHkge051bWJlcn0gZm9yY2VcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IHJhZGl1c1NxXG4gICAqIEBwcm9wZXJ0eSB7UHJvdG9uLlZlY3RvcjJEfSBhdHRyYWN0aW9uRm9yY2VcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IGxlbmd0aFNxXG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lIFRoZSBCZWhhdmlvdXIgbmFtZVxuICAgKi9cbiAgY29uc3RydWN0b3IodGFyZ2V0UG9zaXRpb24sIGZvcmNlLCByYWRpdXMsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZyk7XG5cbiAgICB0aGlzLnRhcmdldFBvc2l0aW9uID0gVXRpbC5pbml0VmFsdWUodGFyZ2V0UG9zaXRpb24sIG5ldyBWZWN0b3IyRCgpKTtcbiAgICB0aGlzLnJhZGl1cyA9IFV0aWwuaW5pdFZhbHVlKHJhZGl1cywgMTAwMCk7XG4gICAgdGhpcy5mb3JjZSA9IFV0aWwuaW5pdFZhbHVlKHRoaXMubm9ybWFsaXplVmFsdWUoZm9yY2UpLCAxMDApO1xuXG4gICAgdGhpcy5yYWRpdXNTcSA9IHRoaXMucmFkaXVzICogdGhpcy5yYWRpdXM7XG4gICAgdGhpcy5hdHRyYWN0aW9uRm9yY2UgPSBuZXcgVmVjdG9yMkQoKTtcbiAgICB0aGlzLmxlbmd0aFNxID0gMDtcblxuICAgIHRoaXMubmFtZSA9IFwiQXR0cmFjdGlvblwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkF0dHJhY3Rpb25cbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvbiBmb3IgJ2ZvcmNlJyBhbmQgJ3JhZGl1cydcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uVmVjdG9yMkR9IHRhcmdldFBvc2l0aW9uIHRoZSBhdHRyYWN0aW9uIHBvaW50IGNvb3JkaW5hdGVzXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbZm9yY2U9MTAwXVxuICAgKiBAcGFyYW0ge051bWJlcn0gW3JhZGl1cz0xMDAwXVxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKi9cbiAgcmVzZXQodGFyZ2V0UG9zaXRpb24sIGZvcmNlLCByYWRpdXMsIGxpZmUsIGVhc2luZykge1xuICAgIHRoaXMudGFyZ2V0UG9zaXRpb24gPSBVdGlsLmluaXRWYWx1ZSh0YXJnZXRQb3NpdGlvbiwgbmV3IFZlY3RvcjJEKCkpO1xuICAgIHRoaXMucmFkaXVzID0gVXRpbC5pbml0VmFsdWUocmFkaXVzLCAxMDAwKTtcbiAgICB0aGlzLmZvcmNlID0gVXRpbC5pbml0VmFsdWUodGhpcy5ub3JtYWxpemVWYWx1ZShmb3JjZSksIDEwMCk7XG5cbiAgICB0aGlzLnJhZGl1c1NxID0gdGhpcy5yYWRpdXMgKiB0aGlzLnJhZGl1cztcbiAgICB0aGlzLmF0dHJhY3Rpb25Gb3JjZSA9IG5ldyBWZWN0b3IyRCgpO1xuICAgIHRoaXMubGVuZ3RoU3EgPSAwO1xuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoaXMgYmVoYXZpb3VyIGZvciBhbGwgcGFydGljbGVzIGV2ZXJ5IHRpbWVcbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uQXR0cmFjdGlvblxuICAgKiBAbWV0aG9kIGFwcGx5QmVoYXZpb3VyXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFx0XHRcdHRpbWUgdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IFx0XHRcdGluZGV4IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5jYWxjdWxhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcblxuICAgIHRoaXMuYXR0cmFjdGlvbkZvcmNlLmNvcHkodGhpcy50YXJnZXRQb3NpdGlvbik7XG4gICAgdGhpcy5hdHRyYWN0aW9uRm9yY2Uuc3ViKHBhcnRpY2xlLnApO1xuICAgIHRoaXMubGVuZ3RoU3EgPSB0aGlzLmF0dHJhY3Rpb25Gb3JjZS5sZW5ndGhTcSgpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoU3EgPiAwLjAwMDA0ICYmIHRoaXMubGVuZ3RoU3EgPCB0aGlzLnJhZGl1c1NxKSB7XG4gICAgICB0aGlzLmF0dHJhY3Rpb25Gb3JjZS5ub3JtYWxpemUoKTtcbiAgICAgIHRoaXMuYXR0cmFjdGlvbkZvcmNlLm11bHRpcGx5U2NhbGFyKDEgLSB0aGlzLmxlbmd0aFNxIC8gdGhpcy5yYWRpdXNTcSk7XG4gICAgICB0aGlzLmF0dHJhY3Rpb25Gb3JjZS5tdWx0aXBseVNjYWxhcih0aGlzLmZvcmNlKTtcblxuICAgICAgcGFydGljbGUuYS5hZGQodGhpcy5hdHRyYWN0aW9uRm9yY2UpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IFZlY3RvcjJEIGZyb20gXCIuLi9tYXRoL1ZlY3RvcjJEXCI7XG5pbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcbmltcG9ydCBCZWhhdmlvdXIgZnJvbSBcIi4vQmVoYXZpb3VyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhbmRvbURyaWZ0IGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAYXVnbWVudHMgQmVoYXZpb3VyXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWxpYXMgUmFuZG9tRHJpZnRcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGRyaWZ0WCBcdFx0XHRcdFggdmFsdWUgb2YgdGhlIG5ldyBWZWN0b3IyRFxuICAgKiBAcGFyYW0ge051bWJlcn0gZHJpZnRZICBcdFx0XHRcdFkgdmFsdWUgb2YgdGhlIG5ldyBWZWN0b3IyRFxuICAgKiBAcGFyYW0ge051bWJlcn0gZGVsYXkgXHRcdFx0XHRIb3cgbXVjaCBkZWxheSB0aGUgZHJpZnQgc2hvdWxkIGhhdmVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICpcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IHRpbWUgVGhlIHRpbWUgb2YgdGhlIGRyaWZ0XG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lIFRoZSBCZWhhdmlvdXIgbmFtZVxuICAgKi9cbiAgY29uc3RydWN0b3IoZHJpZnRYLCBkcmlmdFksIGRlbGF5LCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcpO1xuXG4gICAgdGhpcy5yZXNldChkcmlmdFgsIGRyaWZ0WSwgZGVsYXkpO1xuICAgIHRoaXMudGltZSA9IDA7XG4gICAgdGhpcy5uYW1lID0gXCJSYW5kb21EcmlmdFwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUmFuZG9tRHJpZnRcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBkcmlmdFggXHRcdFx0XHRYIHZhbHVlIG9mIHRoZSBuZXcgVmVjdG9yMkRcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGRyaWZ0WSAgXHRcdFx0XHRZIHZhbHVlIG9mIHRoZSBuZXcgVmVjdG9yMkRcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGRlbGF5IFx0XHRcdFx0SG93IG11Y2ggZGVsYXkgdGhlIGRyaWZ0IHNob3VsZCBoYXZlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gXHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqL1xuICByZXNldChkcmlmdFgsIGRyaWZ0WSwgZGVsYXksIGxpZmUsIGVhc2luZykge1xuICAgIHRoaXMucGFuRm9jZSA9IG5ldyBWZWN0b3IyRChkcmlmdFgsIGRyaWZ0WSk7XG4gICAgdGhpcy5wYW5Gb2NlID0gdGhpcy5ub3JtYWxpemVGb3JjZSh0aGlzLnBhbkZvY2UpO1xuICAgIHRoaXMuZGVsYXkgPSBkZWxheTtcblxuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIGluaXRpYWxpemUocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS5kYXRhLnRpbWUgPSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoaXMgYmVoYXZpb3VyIGZvciBhbGwgcGFydGljbGVzIGV2ZXJ5IHRpbWVcbiAgICpcbiAgICogQG1ldGhvZCBhcHBseUJlaGF2aW91clxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1JhbmRvbURyaWZ0XG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge051bWJlcn0gXHRcdFx0dGltZSB0aGUgaW50ZWdyYXRlIHRpbWUgMS9tc1xuICAgKiBAcGFyYW0ge0ludH0gXHRcdFx0aW5kZXggdGhlIHBhcnRpY2xlIGluZGV4XG4gICAqL1xuICBhcHBseUJlaGF2aW91cihwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuICAgIHBhcnRpY2xlLmRhdGEudGltZSArPSB0aW1lO1xuXG4gICAgaWYgKHBhcnRpY2xlLmRhdGEudGltZSA+PSB0aGlzLmRlbGF5KSB7XG4gICAgICBwYXJ0aWNsZS5hLmFkZFhZKFxuICAgICAgICBNYXRoVXRpbC5yYW5kb21BVG9CKC10aGlzLnBhbkZvY2UueCwgdGhpcy5wYW5Gb2NlLngpLFxuICAgICAgICBNYXRoVXRpbC5yYW5kb21BVG9CKC10aGlzLnBhbkZvY2UueSwgdGhpcy5wYW5Gb2NlLnkpXG4gICAgICApO1xuXG4gICAgICBwYXJ0aWNsZS5kYXRhLnRpbWUgPSAwO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IEZvcmNlIGZyb20gXCIuL0ZvcmNlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdyYXZpdHkgZXh0ZW5kcyBGb3JjZSB7XG4gIC8qKlxuICAgKiBAbWVtYmVyb2YhIFByb3RvbiNcbiAgICogQGF1Z21lbnRzIFByb3RvbiNQcm90b24uRm9yY2VcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhbGlhcyBQcm90b24uR3Jhdml0eVxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gZyBcdFx0XHRcdFx0XHRcdEdyYXZpdHlcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICpcbiAgICogQHByb3BlcnR5IHtTdHJpbmd9IG5hbWUgVGhlIEJlaGF2aW91ciBuYW1lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihnLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcigwLCBnLCBsaWZlLCBlYXNpbmcpO1xuICAgIHRoaXMubmFtZSA9IFwiR3Jhdml0eVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkdyYXZpdHlcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBnIFx0XHRcdFx0XHRcdFx0R3Jhdml0eVxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKi9cbiAgcmVzZXQoZywgbGlmZSwgZWFzaW5nKSB7XG4gICAgc3VwZXIucmVzZXQoMCwgZywgbGlmZSwgZWFzaW5nKTtcbiAgfVxufVxuIiwiaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi4vbWF0aC9WZWN0b3IyRFwiO1xuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9CZWhhdmlvdXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGlzaW9uIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayBhZnRlciBjb2xsaXNpb25cbiAgICpcbiAgICogQGNhbGxiYWNrIENhbGxiYWNrXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLlBhcnRpY2xlfSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJpdGNsZX0gb3RoZXJQYXJ0aWNsZVxuICAgKi9cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAYXVnbWVudHMgUHJvdG9uLkJlaGF2aW91clxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFsaWFzIFByb3Rvbi5Db2xsaXNpb25cbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIHRvIG1hc3NcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uRW1pdHRlcn0gXHRbZW1pdHRlcj1udWxsXSBcdFx0dGhlIGF0dHJhY3Rpb24gcG9pbnQgY29vcmRpbmF0ZXNcbiAgICogQHBhcmFtIHtCb29sZWFufSBcdFx0W21hc3M9dHJ1ZV1cbiAgICogQHBhcmFtIHtDYWxsYmFja31cdCBcdFtjYWxsYmFjaz1udWxsXVx0XHR0aGUgY2FsbGJhY2sgYWZ0ZXIgdGhlIGNvbGxpc2lvblxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKlxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gbmFtZSBUaGUgQmVoYXZpb3VyIG5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGVtaXR0ZXIsIG1hc3MsIGNhbGxiYWNrLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcpO1xuXG4gICAgdGhpcy5yZXNldChlbWl0dGVyLCBtYXNzLCBjYWxsYmFjayk7XG4gICAgdGhpcy5uYW1lID0gXCJDb2xsaXNpb25cIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uQ29sbGlzaW9uXG4gICAqIEBtZXRob2QgcmVzZXRcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvbiB0byBtYXNzXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLkVtaXR0ZXJ9IFx0W2VtaXR0ZXI9bnVsbF0gXHRcdHRoZSBhdHRyYWN0aW9uIHBvaW50IGNvb3JkaW5hdGVzXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gXHRcdFttYXNzPXRydWVdXG4gICAqIEBwYXJhbSB7Q2FsbGJhY2t9XHQgXHRbY2FsbGJhY2s9bnVsbF1cdFx0dGhlIGNhbGxiYWNrIGFmdGVyIHRoZSBjb2xsaXNpb25cbiAgICogQHBhcmFtIHtOdW1iZXJ9IFx0XHRcdFtsaWZlPUluZmluaXR5XSBcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICovXG4gIHJlc2V0KGVtaXR0ZXIsIG1hc3MsIGNhbGxiYWNrLCBsaWZlLCBlYXNpbmcpIHtcbiAgICB0aGlzLmVtaXR0ZXIgPSBVdGlsLmluaXRWYWx1ZShlbWl0dGVyLCBudWxsKTtcbiAgICB0aGlzLm1hc3MgPSBVdGlsLmluaXRWYWx1ZShtYXNzLCB0cnVlKTtcbiAgICB0aGlzLmNhbGxiYWNrID0gVXRpbC5pbml0VmFsdWUoY2FsbGJhY2ssIG51bGwpO1xuXG4gICAgdGhpcy5jb2xsaXNpb25Qb29sID0gW107XG4gICAgdGhpcy5kZWx0YSA9IG5ldyBWZWN0b3IyRCgpO1xuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoaXMgYmVoYXZpb3VyIGZvciBhbGwgcGFydGljbGVzIGV2ZXJ5IHRpbWVcbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uQ29sbGlzaW9uXG4gICAqIEBtZXRob2QgYXBwbHlCZWhhdmlvdXJcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLlBhcnRpY2xlfSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge051bWJlcn0gXHRcdFx0dGltZSB0aGUgaW50ZWdyYXRlIHRpbWUgMS9tc1xuICAgKiBAcGFyYW0ge0ludH0gXHRcdFx0aW5kZXggdGhlIHBhcnRpY2xlIGluZGV4XG4gICAqL1xuICBhcHBseUJlaGF2aW91cihwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICBjb25zdCBuZXdQb29sID0gdGhpcy5lbWl0dGVyID8gdGhpcy5lbWl0dGVyLnBhcnRpY2xlcy5zbGljZShpbmRleCkgOiB0aGlzLnBvb2wuc2xpY2UoaW5kZXgpO1xuICAgIGNvbnN0IGxlbmd0aCA9IG5ld1Bvb2wubGVuZ3RoO1xuXG4gICAgbGV0IG90aGVyUGFydGljbGU7XG4gICAgbGV0IGxlbmd0aFNxO1xuICAgIGxldCBvdmVybGFwO1xuICAgIGxldCB0b3RhbE1hc3M7XG4gICAgbGV0IGF2ZXJhZ2VNYXNzMSwgYXZlcmFnZU1hc3MyO1xuICAgIGxldCBpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBvdGhlclBhcnRpY2xlID0gbmV3UG9vbFtpXTtcblxuICAgICAgaWYgKG90aGVyUGFydGljbGUgIT09IHBhcnRpY2xlKSB7XG4gICAgICAgIHRoaXMuZGVsdGEuY29weShvdGhlclBhcnRpY2xlLnApO1xuICAgICAgICB0aGlzLmRlbHRhLnN1YihwYXJ0aWNsZS5wKTtcblxuICAgICAgICBsZW5ndGhTcSA9IHRoaXMuZGVsdGEubGVuZ3RoU3EoKTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBwYXJ0aWNsZS5yYWRpdXMgKyBvdGhlclBhcnRpY2xlLnJhZGl1cztcblxuICAgICAgICBpZiAobGVuZ3RoU3EgPD0gZGlzdGFuY2UgKiBkaXN0YW5jZSkge1xuICAgICAgICAgIG92ZXJsYXAgPSBkaXN0YW5jZSAtIE1hdGguc3FydChsZW5ndGhTcSk7XG4gICAgICAgICAgb3ZlcmxhcCArPSAwLjU7XG5cbiAgICAgICAgICB0b3RhbE1hc3MgPSBwYXJ0aWNsZS5tYXNzICsgb3RoZXJQYXJ0aWNsZS5tYXNzO1xuICAgICAgICAgIGF2ZXJhZ2VNYXNzMSA9IHRoaXMubWFzcyA/IG90aGVyUGFydGljbGUubWFzcyAvIHRvdGFsTWFzcyA6IDAuNTtcbiAgICAgICAgICBhdmVyYWdlTWFzczIgPSB0aGlzLm1hc3MgPyBwYXJ0aWNsZS5tYXNzIC8gdG90YWxNYXNzIDogMC41O1xuXG4gICAgICAgICAgcGFydGljbGUucC5hZGQoXG4gICAgICAgICAgICB0aGlzLmRlbHRhXG4gICAgICAgICAgICAgIC5jbG9uZSgpXG4gICAgICAgICAgICAgIC5ub3JtYWxpemUoKVxuICAgICAgICAgICAgICAubXVsdGlwbHlTY2FsYXIob3ZlcmxhcCAqIC1hdmVyYWdlTWFzczEpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBvdGhlclBhcnRpY2xlLnAuYWRkKHRoaXMuZGVsdGEubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIob3ZlcmxhcCAqIGF2ZXJhZ2VNYXNzMikpO1xuXG4gICAgICAgICAgdGhpcy5jYWxsYmFjayAmJiB0aGlzLmNhbGxiYWNrKHBhcnRpY2xlLCBvdGhlclBhcnRpY2xlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBCZWhhdmlvdXIgZnJvbSBcIi4vQmVoYXZpb3VyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENyb3NzWm9uZSBleHRlbmRzIEJlaGF2aW91ciB7XG4gIC8qKlxuICAgKiBEZWZpbmVzIHdoYXQgaGFwcGVucyBpZiB0aGUgcGFydGljbGVzIGNvbWUgdG8gdGhlIGVuZCBvZiB0aGUgc3BlY2lmaWVkIHpvbmVcbiAgICpcbiAgICogQG1lbWJlcm9mISBQcm90b24jXG4gICAqIEBhdWdtZW50cyBQcm90b24uQmVoYXZpb3VyXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWxpYXMgUHJvdG9uLkNyb3NzWm9uZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5ab25lfSB6b25lIFx0XHRcdFx0XHRcdGNhbiBiZSBhbnkgUHJvdG9uLlpvbmUgLSBlLmcuIFByb3Rvbi5SZWN0Wm9uZSgpXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBcdFx0W2Nyb3NzVHlwZT1kZWFkXSBcdFx0XHR3aGF0IGhhcHBlbnMgaWYgdGhlIHBhcnRpY2xlcyBwYXNzIHRoZSB6b25lIC0gYWxsb3dlZCBzdHJpbmdzOiBkZWFkIHwgYm91bmQgfCBjcm9zc1xuICAgKiBAcGFyYW0ge051bWJlcn0gXHRcdFtsaWZlPUluZmluaXR5XSBcdFx0XHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFx0XHRbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKlxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gbmFtZSBUaGUgQmVoYXZpb3VyIG5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKHpvbmUsIGNyb3NzVHlwZSwgbGlmZSwgZWFzaW5nKSB7XG4gICAgc3VwZXIobGlmZSwgZWFzaW5nKTtcblxuICAgIHRoaXMucmVzZXQoem9uZSwgY3Jvc3NUeXBlKTtcbiAgICB0aGlzLm5hbWUgPSBcIkNyb3NzWm9uZVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkNyb3NzWm9uZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uWm9uZX0gem9uZSBcdFx0XHRcdGNhbiBiZSBhbnkgUHJvdG9uLlpvbmUgLSBlLmcuIFByb3Rvbi5SZWN0Wm9uZSgpXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBcdFx0W2Nyb3NzVHlwZT1kZWFkXSBcdHdoYXQgaGFwcGVucyBpZiB0aGUgcGFydGljbGVzIHBhc3MgdGhlIHpvbmUgLSBhbGxvd2VkIHN0cmluZ3M6IGRlYWQgfCBib3VuZCB8IGNyb3NzXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBcdFx0W2xpZmU9SW5maW5pdHldIFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBcdFx0W2Vhc2luZz1lYXNlTGluZWFyXVx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICovXG4gIHJlc2V0KHpvbmUsIGNyb3NzVHlwZSwgbGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy56b25lID0gem9uZTtcbiAgICB0aGlzLnpvbmUuY3Jvc3NUeXBlID0gVXRpbC5pbml0VmFsdWUoY3Jvc3NUeXBlLCBcImRlYWRcIik7XG5cbiAgICBsaWZlICYmIHN1cGVyLnJlc2V0KGxpZmUsIGVhc2luZyk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgdGhpcyBiZWhhdmlvdXIgZm9yIGFsbCBwYXJ0aWNsZXMgZXZlcnkgdGltZVxuICAgKlxuICAgKiBAbWV0aG9kIGFwcGx5QmVoYXZpb3VyXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkNyb3NzWm9uZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uUGFydGljbGV9IHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB0aGUgaW50ZWdyYXRlIHRpbWUgMS9tc1xuICAgKiBAcGFyYW0ge0ludH0gdGhlIHBhcnRpY2xlIGluZGV4XG4gICAqL1xuICBhcHBseUJlaGF2aW91cihwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuICAgIHRoaXMuem9uZS5jcm9zc2luZyhwYXJ0aWNsZSk7XG4gIH1cbn1cbiIsImltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgU3BhbiBmcm9tIFwiLi4vbWF0aC9TcGFuXCI7XG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gXCIuL0JlaGF2aW91clwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBbHBoYSBleHRlbmRzIEJlaGF2aW91ciB7XG4gIC8qKlxuICAgKiBAbWVtYmVyb2YhIFByb3RvbiNcbiAgICogQGF1Z21lbnRzIFByb3Rvbi5CZWhhdmlvdXJcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhbGlhcyBQcm90b24uQWxwaGFcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciAnYScgYW5kICdiJ1xuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gYVxuICAgKiBAcGFyYW0ge1N0cmluZ30gYlxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKlxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gbmFtZSBUaGUgQmVoYXZpb3VyIG5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGEsIGIsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZyk7XG5cbiAgICB0aGlzLnJlc2V0KGEsIGIpO1xuICAgIHRoaXMubmFtZSA9IFwiQWxwaGFcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQG1ldGhvZCByZXNldFxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5BbHBoYVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciAnYScgYW5kICdiJ1xuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gYVxuICAgKiBAcGFyYW0ge1N0cmluZ30gYlxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKi9cbiAgcmVzZXQoYSwgYiwgbGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy5zYW1lID0gYiA9PT0gbnVsbCB8fCBiID09PSB1bmRlZmluZWQgPyB0cnVlIDogZmFsc2U7XG4gICAgdGhpcy5hID0gU3Bhbi5zZXRTcGFuVmFsdWUoVXRpbC5pbml0VmFsdWUoYSwgMSkpO1xuICAgIHRoaXMuYiA9IFNwYW4uc2V0U3BhblZhbHVlKGIpO1xuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG5ldyBhbHBoYSB2YWx1ZSBvZiB0aGUgcGFydGljbGVcbiAgICpcbiAgICogQG1ldGhvZCBpbml0aWFsaXplXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkFscGhhXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGUgQSBzaW5nbGUgUHJvdG9uIGdlbmVyYXRlZCBwYXJ0aWNsZVxuICAgKi9cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLmRhdGEuYWxwaGFBID0gdGhpcy5hLmdldFZhbHVlKCk7XG5cbiAgICBpZiAodGhpcy5zYW1lKSBwYXJ0aWNsZS5kYXRhLmFscGhhQiA9IHBhcnRpY2xlLmRhdGEuYWxwaGFBO1xuICAgIGVsc2UgcGFydGljbGUuZGF0YS5hbHBoYUIgPSB0aGlzLmIuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWV0aG9kIGFwcGx5QmVoYXZpb3VyXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkFscGhhXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFx0XHRcdHRpbWUgdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IFx0XHRcdGluZGV4IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5jYWxjdWxhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcblxuICAgIHBhcnRpY2xlLmFscGhhID0gcGFydGljbGUuZGF0YS5hbHBoYUIgKyAocGFydGljbGUuZGF0YS5hbHBoYUEgLSBwYXJ0aWNsZS5kYXRhLmFscGhhQikgKiB0aGlzLmVuZXJneTtcblxuICAgIGlmIChwYXJ0aWNsZS5hbHBoYSA8IDAuMDAxKSBwYXJ0aWNsZS5hbHBoYSA9IDA7XG4gIH1cbn1cbiIsImltcG9ydCBTcGFuIGZyb20gXCIuLi9tYXRoL1NwYW5cIjtcbmltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gXCIuL0JlaGF2aW91clwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2FsZSBleHRlbmRzIEJlaGF2aW91ciB7XG4gIC8qKlxuICAgKiBAbWVtYmVyb2YhIFByb3RvbiNcbiAgICogQGF1Z21lbnRzIFByb3Rvbi5CZWhhdmlvdXJcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhbGlhcyBQcm90b24uU2NhbGVcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciAnYScgYW5kICdiJ1xuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gYVxuICAgKiBAcGFyYW0ge1N0cmluZ30gYlxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKlxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gbmFtZSBUaGUgQmVoYXZpb3VyIG5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGEsIGIsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZyk7XG5cbiAgICB0aGlzLnJlc2V0KGEsIGIpO1xuICAgIHRoaXMubmFtZSA9IFwiU2NhbGVcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQG1ldGhvZCByZXNldFxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5TY2FsZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGFcbiAgICogQHBhcmFtIHtTdHJpbmd9IGJcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICovXG4gIHJlc2V0KGEsIGIsIGxpZmUsIGVhc2luZykge1xuICAgIHRoaXMuc2FtZSA9IGIgPT09IG51bGwgfHwgYiA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMuYSA9IFNwYW4uc2V0U3BhblZhbHVlKFV0aWwuaW5pdFZhbHVlKGEsIDEpKTtcbiAgICB0aGlzLmIgPSBTcGFuLnNldFNwYW5WYWx1ZShiKTtcblxuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBiZWhhdmlvdXIncyBwYXJhbWV0ZXJzIGZvciBhbGwgcGFydGljbGVzXG4gICAqXG4gICAqIEBtZXRob2QgaW5pdGlhbGl6ZVxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5TY2FsZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uUGFydGljbGV9IHBhcnRpY2xlXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7XG4gICAgcGFydGljbGUuZGF0YS5zY2FsZUEgPSB0aGlzLmEuZ2V0VmFsdWUoKTtcbiAgICBwYXJ0aWNsZS5kYXRhLm9sZFJhZGl1cyA9IHBhcnRpY2xlLnJhZGl1cztcbiAgICBwYXJ0aWNsZS5kYXRhLnNjYWxlQiA9IHRoaXMuc2FtZSA/IHBhcnRpY2xlLmRhdGEuc2NhbGVBIDogdGhpcy5iLmdldFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgdGhpcyBiZWhhdmlvdXIgZm9yIGFsbCBwYXJ0aWNsZXMgZXZlcnkgdGltZVxuICAgKlxuICAgKiBAbWV0aG9kIGFwcGx5QmVoYXZpb3VyXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlNjYWxlXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFx0XHRcdHRpbWUgdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IFx0XHRcdGluZGV4IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5jYWxjdWxhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcbiAgICBwYXJ0aWNsZS5zY2FsZSA9IHBhcnRpY2xlLmRhdGEuc2NhbGVCICsgKHBhcnRpY2xlLmRhdGEuc2NhbGVBIC0gcGFydGljbGUuZGF0YS5zY2FsZUIpICogdGhpcy5lbmVyZ3k7XG5cbiAgICBpZiAocGFydGljbGUuc2NhbGUgPCAwLjAwMDEpIHBhcnRpY2xlLnNjYWxlID0gMDtcbiAgICBwYXJ0aWNsZS5yYWRpdXMgPSBwYXJ0aWNsZS5kYXRhLm9sZFJhZGl1cyAqIHBhcnRpY2xlLnNjYWxlO1xuICB9XG59XG4iLCJpbXBvcnQgU3BhbiBmcm9tIFwiLi4vbWF0aC9TcGFuXCI7XG5pbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9CZWhhdmlvdXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm90YXRlIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAYXVnbWVudHMgUHJvdG9uLkJlaGF2aW91clxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFsaWFzIFByb3Rvbi5Sb3RhdGVcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciAnYScsICdiJyBhbmQgJ3N0eWxlJ1xuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2luZmx1ZW5jZT1WZWxvY2l0eV0gVGhlIHJvdGF0aW9uJ3MgaW5mbHVlbmNlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBiXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbc3R5bGU9dG9dXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gXHRcdFx0XHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZS5lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqXG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lIFRoZSBCZWhhdmlvdXIgbmFtZVxuICAgKi9cbiAgY29uc3RydWN0b3IoaW5mbHVlbmNlLCBiLCBzdHlsZSwgbGlmZSwgZWFzaW5nKSB7XG4gICAgc3VwZXIobGlmZSwgZWFzaW5nKTtcblxuICAgIHRoaXMucmVzZXQoaW5mbHVlbmNlLCBiLCBzdHlsZSk7XG4gICAgdGhpcy5uYW1lID0gXCJSb3RhdGVcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQG1ldGhvZCByZXNldFxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Sb3RhdGVcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvbiBmb3IgJ2EnLCAnYicgYW5kICdzdHlsZSdcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IGFcbiAgICogQHBhcmFtIHtTdHJpbmd9IGJcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtzdHlsZT10b11cbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICovXG4gIHJlc2V0KGEsIGIsIHN0eWxlLCBsaWZlLCBlYXNpbmcpIHtcbiAgICB0aGlzLnNhbWUgPSBiID09PSBudWxsIHx8IGIgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBmYWxzZTtcblxuICAgIHRoaXMuYSA9IFNwYW4uc2V0U3BhblZhbHVlKFV0aWwuaW5pdFZhbHVlKGEsIFwiVmVsb2NpdHlcIikpO1xuICAgIHRoaXMuYiA9IFNwYW4uc2V0U3BhblZhbHVlKFV0aWwuaW5pdFZhbHVlKGIsIDApKTtcbiAgICB0aGlzLnN0eWxlID0gVXRpbC5pbml0VmFsdWUoc3R5bGUsIFwidG9cIik7XG5cbiAgICBsaWZlICYmIHN1cGVyLnJlc2V0KGxpZmUsIGVhc2luZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYmVoYXZpb3VyJ3MgcGFyYW1ldGVycyBmb3IgYWxsIHBhcnRpY2xlc1xuICAgKlxuICAgKiBAbWV0aG9kIGluaXRpYWxpemVcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uUm90YXRlXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICovXG4gIGluaXRpYWxpemUocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS5yb3RhdGlvbiA9IHRoaXMuYS5nZXRWYWx1ZSgpO1xuICAgIHBhcnRpY2xlLmRhdGEucm90YXRpb25BID0gdGhpcy5hLmdldFZhbHVlKCk7XG5cbiAgICBpZiAoIXRoaXMuc2FtZSkgcGFydGljbGUuZGF0YS5yb3RhdGlvbkIgPSB0aGlzLmIuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGlzIGJlaGF2aW91ciBmb3IgYWxsIHBhcnRpY2xlcyBldmVyeSB0aW1lXG4gICAqXG4gICAqIEBtZXRob2QgYXBwbHlCZWhhdmlvdXJcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uUm90YXRlXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFx0XHRcdHRpbWUgdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IFx0XHRcdGluZGV4IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5jYWxjdWxhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcblxuICAgIGlmICghdGhpcy5zYW1lKSB7XG4gICAgICBpZiAodGhpcy5zdHlsZSA9PT0gXCJ0b1wiIHx8IHRoaXMuc3R5bGUgPT09IFwiVE9cIiB8fCB0aGlzLnN0eWxlID09PSBcIl9cIikge1xuICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbiArPVxuICAgICAgICAgIHBhcnRpY2xlLmRhdGEucm90YXRpb25CICsgKHBhcnRpY2xlLmRhdGEucm90YXRpb25BIC0gcGFydGljbGUuZGF0YS5yb3RhdGlvbkIpICogdGhpcy5lbmVyZ3k7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbiArPSBwYXJ0aWNsZS5kYXRhLnJvdGF0aW9uQjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuYS5hID09PSBcIlZcIiB8fCB0aGlzLmEuYSA9PT0gXCJWZWxvY2l0eVwiIHx8IHRoaXMuYS5hID09PSBcInZcIikge1xuICAgICAgLy8gYmV0YS4uLlxuICAgICAgcGFydGljbGUucm90YXRpb24gPSBwYXJ0aWNsZS5nZXREaXJlY3Rpb24oKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBDb2xvclV0aWwgZnJvbSBcIi4uL3V0aWxzL0NvbG9yVXRpbFwiO1xuaW1wb3J0IEFycmF5U3BhbiBmcm9tIFwiLi4vbWF0aC9BcnJheVNwYW5cIjtcbmltcG9ydCBCZWhhdmlvdXIgZnJvbSBcIi4vQmVoYXZpb3VyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbG9yIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAYXVnbWVudHMgUHJvdG9uLkJlaGF2aW91clxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFsaWFzIFByb3Rvbi5Db2xvclxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5BcnJheVNwYW4gfCBTdHJpbmd9IGEgdGhlIHN0cmluZyBzaG91bGQgYmUgYSBoZXggZS5nLiAjMDAwMDAwIGZvciBibGFja1xuICAgKiBAcGFyYW0ge1Byb3Rvbi5BcnJheVNwYW4gfCBTdHJpbmd9IGIgdGhlIHN0cmluZyBzaG91bGQgYmUgYSBoZXggZS5nLiAjMDAwMDAwIGZvciBibGFja1xuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICpcbiAgICogQHByb3BlcnR5IHtTdHJpbmd9IG5hbWUgVGhlIEJlaGF2aW91ciBuYW1lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhLCBiLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcpO1xuXG4gICAgdGhpcy5yZXNldChhLCBiKTtcbiAgICB0aGlzLm5hbWUgPSBcIkNvbG9yXCI7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhpcyBiZWhhdmlvdXIncyBwYXJhbWV0ZXJzXG4gICAqXG4gICAqIEBtZXRob2QgcmVzZXRcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uQ29sb3JcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLkFycmF5U3BhbiB8IFN0cmluZ30gYSB0aGUgc3RyaW5nIHNob3VsZCBiZSBhIGhleCBlLmcuICMwMDAwMDAgZm9yIGJsYWNrXG4gICAqIEBwYXJhbSB7UHJvdG9uLkFycmF5U3BhbiB8IFN0cmluZ30gYiB0aGUgc3RyaW5nIHNob3VsZCBiZSBhIGhleCBlLmcuICMwMDAwMDAgZm9yIGJsYWNrXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gXHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKi9cbiAgcmVzZXQoYSwgYiwgbGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy5hID0gQXJyYXlTcGFuLmNyZWF0ZUFycmF5U3BhbihhKTtcbiAgICB0aGlzLmIgPSBBcnJheVNwYW4uY3JlYXRlQXJyYXlTcGFuKGIpO1xuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBiZWhhdmlvdXIncyBwYXJhbWV0ZXJzIGZvciBhbGwgcGFydGljbGVzXG4gICAqXG4gICAqIEBtZXRob2QgaW5pdGlhbGl6ZVxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Db2xvclxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uUGFydGljbGV9IHBhcnRpY2xlXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7XG4gICAgcGFydGljbGUuY29sb3IgPSB0aGlzLmEuZ2V0VmFsdWUoKTtcbiAgICBwYXJ0aWNsZS5kYXRhLmNvbG9yQSA9IENvbG9yVXRpbC5oZXhUb1JnYihwYXJ0aWNsZS5jb2xvcik7XG5cbiAgICBpZiAodGhpcy5iKSBwYXJ0aWNsZS5kYXRhLmNvbG9yQiA9IENvbG9yVXRpbC5oZXhUb1JnYih0aGlzLmIuZ2V0VmFsdWUoKSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgdGhpcyBiZWhhdmlvdXIgZm9yIGFsbCBwYXJ0aWNsZXMgZXZlcnkgdGltZVxuICAgKlxuICAgKiBAbWV0aG9kIGFwcGx5QmVoYXZpb3VyXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkNvbG9yXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHRoZSBpbnRlZ3JhdGUgdGltZSAxL21zXG4gICAqIEBwYXJhbSB7SW50fSB0aGUgcGFydGljbGUgaW5kZXhcbiAgICovXG4gIGFwcGx5QmVoYXZpb3VyKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIGlmICh0aGlzLmIpIHtcbiAgICAgIHRoaXMuY2FsY3VsYXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCk7XG5cbiAgICAgIHBhcnRpY2xlLnJnYi5yID0gcGFydGljbGUuZGF0YS5jb2xvckIuciArIChwYXJ0aWNsZS5kYXRhLmNvbG9yQS5yIC0gcGFydGljbGUuZGF0YS5jb2xvckIucikgKiB0aGlzLmVuZXJneTtcbiAgICAgIHBhcnRpY2xlLnJnYi5nID0gcGFydGljbGUuZGF0YS5jb2xvckIuZyArIChwYXJ0aWNsZS5kYXRhLmNvbG9yQS5nIC0gcGFydGljbGUuZGF0YS5jb2xvckIuZykgKiB0aGlzLmVuZXJneTtcbiAgICAgIHBhcnRpY2xlLnJnYi5iID0gcGFydGljbGUuZGF0YS5jb2xvckIuYiArIChwYXJ0aWNsZS5kYXRhLmNvbG9yQS5iIC0gcGFydGljbGUuZGF0YS5jb2xvckIuYikgKiB0aGlzLmVuZXJneTtcblxuICAgICAgcGFydGljbGUucmdiLnIgPSBwYXJ0aWNsZS5yZ2IuciA8PCAwO1xuICAgICAgcGFydGljbGUucmdiLmcgPSBwYXJ0aWNsZS5yZ2IuZyA8PCAwO1xuICAgICAgcGFydGljbGUucmdiLmIgPSBwYXJ0aWNsZS5yZ2IuYiA8PCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0aWNsZS5yZ2IuciA9IHBhcnRpY2xlLmRhdGEuY29sb3JBLnI7XG4gICAgICBwYXJ0aWNsZS5yZ2IuZyA9IHBhcnRpY2xlLmRhdGEuY29sb3JBLmc7XG4gICAgICBwYXJ0aWNsZS5yZ2IuYiA9IHBhcnRpY2xlLmRhdGEuY29sb3JBLmI7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcbmltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi4vbWF0aC9WZWN0b3IyRFwiO1xuaW1wb3J0IFNwYW4gZnJvbSBcIi4uL21hdGgvU3BhblwiO1xuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9CZWhhdmlvdXJcIjtcblxuY29uc3QgQ0hBTkdJTkcgPSBcImNoYW5naW5nXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEN5Y2xvbmUgZXh0ZW5kcyBCZWhhdmlvdXIge1xuICAvKipcbiAgICogQG1lbWJlcm9mISBQcm90b24jXG4gICAqIEBhdWdtZW50cyBQcm90b24uQmVoYXZpb3VyXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWxpYXMgUHJvdG9uLkN5Y2xvbmVcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGFuZ2xlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBmb3JjZVxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICpcbiAgICogQHByb3BlcnR5IHtTdHJpbmd9IG5hbWUgVGhlIEJlaGF2aW91ciBuYW1lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhbmdsZSwgZm9yY2UsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZyk7XG4gICAgdGhpcy5zZXRBbmdsZUFuZEZvcmNlKGFuZ2xlLCBmb3JjZSk7XG4gICAgdGhpcy5uYW1lID0gXCJDeWNsb25lXCI7XG4gIH1cblxuICBzZXRBbmdsZUFuZEZvcmNlKGFuZ2xlLCBmb3JjZSkge1xuICAgIHRoaXMuZm9yY2UgPSBDSEFOR0lORztcbiAgICB0aGlzLmFuZ2xlID0gTWF0aFV0aWwuUEkgLyAyO1xuXG4gICAgaWYgKGFuZ2xlID09PSBcInJpZ2h0XCIpIHtcbiAgICAgIHRoaXMuYW5nbGUgPSBNYXRoVXRpbC5QSSAvIDI7XG4gICAgfSBlbHNlIGlmIChhbmdsZSA9PT0gXCJsZWZ0XCIpIHtcbiAgICAgIHRoaXMuYW5nbGUgPSAtTWF0aFV0aWwuUEkgLyAyO1xuICAgIH0gZWxzZSBpZiAoYW5nbGUgPT09IFwicmFuZG9tXCIpIHtcbiAgICAgIHRoaXMuYW5nbGUgPSBcInJhbmRvbVwiO1xuICAgIH0gZWxzZSBpZiAoYW5nbGUgaW5zdGFuY2VvZiBTcGFuKSB7XG4gICAgICB0aGlzLmFuZ2xlID0gXCJzcGFuXCI7XG4gICAgICB0aGlzLnNwYW4gPSBhbmdsZTtcbiAgICB9IGVsc2UgaWYgKGFuZ2xlKSB7XG4gICAgICB0aGlzLmFuZ2xlID0gYW5nbGU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgU3RyaW5nKGZvcmNlKS50b0xvd2VyQ2FzZSgpID09PSBcImNoYW5naW5nXCIgfHxcbiAgICAgIFN0cmluZyhmb3JjZSkudG9Mb3dlckNhc2UoKSA9PT0gXCJjaGFuZ1wiIHx8XG4gICAgICBTdHJpbmcoZm9yY2UpLnRvTG93ZXJDYXNlKCkgPT09IFwiYXV0b1wiXG4gICAgKSB7XG4gICAgICB0aGlzLmZvcmNlID0gQ0hBTkdJTkc7XG4gICAgfSBlbHNlIGlmIChmb3JjZSkge1xuICAgICAgdGhpcy5mb3JjZSA9IGZvcmNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQG1ldGhvZCByZXNldFxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5DeWNsb25lXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gYW5nbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGZvcmNlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gXHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKi9cbiAgcmVzZXQoYW5nbGUsIGZvcmNlLCBsaWZlLCBlYXNpbmcpIHtcbiAgICB0aGlzLmFuZ2xlID0gTWF0aFV0aWwuUEkgLyAyO1xuICAgIHRoaXMuc2V0QW5nbGVBbmRGb3JjZShhbmdsZSwgZm9yY2UpO1xuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIGluaXRpYWxpemUocGFydGljbGUpIHtcbiAgICBpZiAodGhpcy5hbmdsZSA9PT0gXCJyYW5kb21cIikge1xuICAgICAgcGFydGljbGUuZGF0YS5jYW5nbGUgPSBNYXRoVXRpbC5yYW5kb21BVG9CKC1NYXRoVXRpbC5QSSwgTWF0aFV0aWwuUEkpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hbmdsZSA9PT0gXCJzcGFuXCIpIHtcbiAgICAgIHBhcnRpY2xlLmRhdGEuY2FuZ2xlID0gdGhpcy5zcGFuLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcGFydGljbGUuZGF0YS5jeWNsb25lID0gbmV3IFZlY3RvcjJEKDAsIDApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoaXMgYmVoYXZpb3VyIGZvciBhbGwgcGFydGljbGVzIGV2ZXJ5IHRpbWVcbiAgICpcbiAgICogQG1ldGhvZCBhcHBseUJlaGF2aW91clxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5DeWNsb25lXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHRoZSBpbnRlZ3JhdGUgdGltZSAxL21zXG4gICAqIEBwYXJhbSB7SW50fSB0aGUgcGFydGljbGUgaW5kZXhcbiAgICovXG4gIGFwcGx5QmVoYXZpb3VyKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuY2FsY3VsYXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCk7XG5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGxldCBncmFkaWVudCA9IHBhcnRpY2xlLnYuZ2V0R3JhZGllbnQoKTtcbiAgICBpZiAodGhpcy5hbmdsZSA9PT0gXCJyYW5kb21cIiB8fCB0aGlzLmFuZ2xlID09PSBcInNwYW5cIikge1xuICAgICAgZ3JhZGllbnQgKz0gcGFydGljbGUuZGF0YS5jYW5nbGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyYWRpZW50ICs9IHRoaXMuYW5nbGU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9yY2UgPT09IENIQU5HSU5HKSB7XG4gICAgICBsZW5ndGggPSBwYXJ0aWNsZS52Lmxlbmd0aCgpIC8gMTAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZW5ndGggPSB0aGlzLmZvcmNlO1xuICAgIH1cblxuICAgIHBhcnRpY2xlLmRhdGEuY3ljbG9uZS54ID0gbGVuZ3RoICogTWF0aC5jb3MoZ3JhZGllbnQpO1xuICAgIHBhcnRpY2xlLmRhdGEuY3ljbG9uZS55ID0gbGVuZ3RoICogTWF0aC5zaW4oZ3JhZGllbnQpO1xuICAgIHBhcnRpY2xlLmRhdGEuY3ljbG9uZSA9IHRoaXMubm9ybWFsaXplRm9yY2UocGFydGljbGUuZGF0YS5jeWNsb25lKTtcbiAgICBwYXJ0aWNsZS5hLmFkZChwYXJ0aWNsZS5kYXRhLmN5Y2xvbmUpO1xuICB9XG59XG4iLCJpbXBvcnQgQXR0cmFjdGlvbiBmcm9tIFwiLi9BdHRyYWN0aW9uXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlcHVsc2lvbiBleHRlbmRzIEF0dHJhY3Rpb24ge1xuICAvKipcbiAgICogVGhlIG9wcGlzaXRlIG9mIFByb3Rvbi5BdHRyYWN0aW9uIC0gdHVybnMgdGhlIGZvcmNlXG4gICAqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAYXVnbWVudHMgUHJvdG9uI1Byb3Rvbi5BdHRyYWN0aW9uXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWxpYXMgUHJvdG9uLlJlcHVsc2lvblxuICAgKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb24gZm9yICdmb3JjZScgYW5kICdyYWRpdXMnXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLlZlY3RvcjJEfSB0YXJnZXRQb3NpdGlvbiB0aGUgYXR0cmFjdGlvbiBwb2ludCBjb29yZGluYXRlc1xuICAgKiBAcGFyYW0ge051bWJlcn0gW2ZvcmNlPTEwMF1cbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtyYWRpdXM9MTAwMF1cbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICpcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IGZvcmNlXG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lIFRoZSBCZWhhdmlvdXIgbmFtZVxuICAgKi9cbiAgY29uc3RydWN0b3IodGFyZ2V0UG9zaXRpb24sIGZvcmNlLCByYWRpdXMsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKHRhcmdldFBvc2l0aW9uLCBmb3JjZSwgcmFkaXVzLCBsaWZlLCBlYXNpbmcpO1xuXG4gICAgdGhpcy5mb3JjZSAqPSAtMTtcbiAgICB0aGlzLm5hbWUgPSBcIlJlcHVsc2lvblwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlJlcHVsc2lvblxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciAnZm9yY2UnIGFuZCAncmFkaXVzJ1xuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5WZWN0b3IyRH0gdGFyZ2V0UG9zaXRpb24gdGhlIGF0dHJhY3Rpb24gcG9pbnQgY29vcmRpbmF0ZXNcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtmb3JjZT0xMDBdXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbcmFkaXVzPTEwMDBdXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gXHRcdFx0XHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZS5lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqL1xuICByZXNldCh0YXJnZXRQb3NpdGlvbiwgZm9yY2UsIHJhZGl1cywgbGlmZSwgZWFzaW5nKSB7XG4gICAgc3VwZXIucmVzZXQodGFyZ2V0UG9zaXRpb24sIGZvcmNlLCByYWRpdXMsIGxpZmUsIGVhc2luZyk7XG4gICAgdGhpcy5mb3JjZSAqPSAtMTtcbiAgfVxufVxuIiwiaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi4vbWF0aC9WZWN0b3IyRFwiO1xuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9CZWhhdmlvdXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR3Jhdml0eVdlbGwgZXh0ZW5kcyBCZWhhdmlvdXIge1xuICAvKipcbiAgICogQG1lbWJlcm9mISBQcm90b24jXG4gICAqIEBhdWdtZW50cyBCZWhhdmlvdXJcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhbGlhcyBHcmF2aXR5V2VsbFxuICAgKlxuICAgKiBAcGFyYW0ge1ZlY3RvcjJEfSBbY2VudGVyUG9pbnQ9bmV3IFZlY3RvcjJEXSBUaGUgcG9pbnQgaW4gdGhlIGNlbnRlclxuICAgKiBAcGFyYW0ge051bWJlcn0gW2ZvcmNlPTEwMF1cdFx0XHRcdFx0VGhlIGZvcmNlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV1cdFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlTGluZWFyXVx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICpcbiAgICogQHByb3BlcnR5IHtTdHJpbmd9IG5hbWUgVGhlIEJlaGF2aW91ciBuYW1lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjZW50ZXJQb2ludCwgZm9yY2UsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZyk7XG5cbiAgICB0aGlzLmRpc3RhbmNlVmVjID0gbmV3IFZlY3RvcjJEKCk7XG4gICAgdGhpcy5jZW50ZXJQb2ludCA9IFV0aWwuaW5pdFZhbHVlKGNlbnRlclBvaW50LCBuZXcgVmVjdG9yMkQoKSk7XG4gICAgdGhpcy5mb3JjZSA9IFV0aWwuaW5pdFZhbHVlKHRoaXMubm9ybWFsaXplVmFsdWUoZm9yY2UpLCAxMDApO1xuXG4gICAgdGhpcy5uYW1lID0gXCJHcmF2aXR5V2VsbFwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jR3Jhdml0eVdlbGxcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7VmVjdG9yMkR9IFtjZW50ZXJQb2ludD1uZXcgVmVjdG9yMkRdIFRoZSBwb2ludCBpbiB0aGUgY2VudGVyXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbZm9yY2U9MTAwXVx0XHRcdFx0XHRUaGUgZm9yY2VcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XVx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2VMaW5lYXJdXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKi9cbiAgcmVzZXQoY2VudGVyUG9pbnQsIGZvcmNlLCBsaWZlLCBlYXNpbmcpIHtcbiAgICB0aGlzLmRpc3RhbmNlVmVjID0gbmV3IFZlY3RvcjJEKCk7XG4gICAgdGhpcy5jZW50ZXJQb2ludCA9IFV0aWwuaW5pdFZhbHVlKGNlbnRlclBvaW50LCBuZXcgVmVjdG9yMkQoKSk7XG4gICAgdGhpcy5mb3JjZSA9IFV0aWwuaW5pdFZhbHVlKHRoaXMubm9ybWFsaXplVmFsdWUoZm9yY2UpLCAxMDApO1xuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7fVxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGlzIGJlaGF2aW91ciBmb3IgYWxsIHBhcnRpY2xlcyBldmVyeSB0aW1lXG4gICAqXG4gICAqIEBtZXRob2QgYXBwbHlCZWhhdmlvdXJcbiAgICogQG1lbWJlcm9mIFByb3RvbiNHcmF2aXR5V2VsbFxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHRoZSBpbnRlZ3JhdGUgdGltZSAxL21zXG4gICAqIEBwYXJhbSB7SW50fSB0aGUgcGFydGljbGUgaW5kZXhcbiAgICovXG4gIGFwcGx5QmVoYXZpb3VyKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuZGlzdGFuY2VWZWMuc2V0KHRoaXMuY2VudGVyUG9pbnQueCAtIHBhcnRpY2xlLnAueCwgdGhpcy5jZW50ZXJQb2ludC55IC0gcGFydGljbGUucC55KTtcbiAgICBjb25zdCBkaXN0YW5jZVNxID0gdGhpcy5kaXN0YW5jZVZlYy5sZW5ndGhTcSgpO1xuXG4gICAgaWYgKGRpc3RhbmNlU3EgIT09IDApIHtcbiAgICAgIGNvbnN0IGRpc3RhbmNlID0gdGhpcy5kaXN0YW5jZVZlYy5sZW5ndGgoKTtcbiAgICAgIGNvbnN0IGZhY3RvciA9ICh0aGlzLmZvcmNlICogdGltZSkgLyAoZGlzdGFuY2VTcSAqIGRpc3RhbmNlKTtcblxuICAgICAgcGFydGljbGUudi54ICs9IGZhY3RvciAqIHRoaXMuZGlzdGFuY2VWZWMueDtcbiAgICAgIHBhcnRpY2xlLnYueSArPSBmYWN0b3IgKiB0aGlzLmRpc3RhbmNlVmVjLnk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgUHJvcFV0aWwgZnJvbSBcIi4uL3V0aWxzL1Byb3BVdGlsXCI7XG5pbXBvcnQgSW5pdGlhbGl6ZSBmcm9tIFwiLi9Jbml0aWFsaXplXCI7XG5pbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBpbml0aWFsaXplKGVtaXR0ZXIsIHBhcnRpY2xlLCBpbml0aWFsaXplcykge1xuICAgIGNvbnN0IGxlbmd0aCA9IGluaXRpYWxpemVzLmxlbmd0aDtcbiAgICBsZXQgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGluaXRpYWxpemVzW2ldIGluc3RhbmNlb2YgSW5pdGlhbGl6ZSkge1xuICAgICAgICBpbml0aWFsaXplc1tpXS5pbml0KGVtaXR0ZXIsIHBhcnRpY2xlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5pdChlbWl0dGVyLCBwYXJ0aWNsZSwgaW5pdGlhbGl6ZXNbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYmluZEVtaXR0ZXIoZW1pdHRlciwgcGFydGljbGUpO1xuICB9LFxuXG4gIC8vIGluaXRcbiAgaW5pdChlbWl0dGVyLCBwYXJ0aWNsZSwgaW5pdGlhbGl6ZSkge1xuICAgIFByb3BVdGlsLnNldFByb3AocGFydGljbGUsIGluaXRpYWxpemUpO1xuICAgIFByb3BVdGlsLnNldFZlY3RvclZhbChwYXJ0aWNsZSwgaW5pdGlhbGl6ZSk7XG4gIH0sXG5cbiAgYmluZEVtaXR0ZXIoZW1pdHRlciwgcGFydGljbGUpIHtcbiAgICBpZiAoZW1pdHRlci5iaW5kRW1pdHRlcikge1xuICAgICAgcGFydGljbGUucC5hZGQoZW1pdHRlci5wKTtcbiAgICAgIHBhcnRpY2xlLnYuYWRkKGVtaXR0ZXIudik7XG4gICAgICBwYXJ0aWNsZS5hLmFkZChlbWl0dGVyLmEpO1xuICAgICAgcGFydGljbGUudi5yb3RhdGUoTWF0aFV0aWwuZGVncmVlVHJhbnNmb3JtKGVtaXR0ZXIucm90YXRpb24pKTtcbiAgICB9XG4gIH1cbn07XG4iLCJpbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IFB1aWQgZnJvbSBcIi4uL3V0aWxzL1B1aWRcIjtcbmltcG9ydCBQYXJ0aWNsZSBmcm9tIFwiLi4vY29yZS9QYXJ0aWNsZVwiO1xuaW1wb3J0IEV2ZW50RGlzcGF0Y2hlciBmcm9tIFwiLi4vZXZlbnRzL0V2ZW50RGlzcGF0Y2hlclwiO1xuXG5pbXBvcnQgUmF0ZSBmcm9tIFwiLi4vaW5pdGlhbGl6ZS9SYXRlXCI7XG5pbXBvcnQgSW5pdGlhbGl6ZVV0aWwgZnJvbSBcIi4uL2luaXRpYWxpemUvSW5pdGlhbGl6ZVV0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW1pdHRlciBleHRlbmRzIFBhcnRpY2xlIHtcbiAgLyoqXG4gICAqIFlvdSBjYW4gdXNlIHRoaXMgZW1pdCBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEl0IHdpbGwgZGlzcGF0Y2ggZm9sbG93IGV2ZW50czpcbiAgICogUEFSVElDTEVfQ1JFQVRFRFxuICAgKiBQQVJUSUNMRV9VUERBVEFcbiAgICogUEFSVElDTEVfREVBRFxuICAgKlxuICAgKiBAY2xhc3MgRW1pdHRlclxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmYgdGhlIHBhcmFtZXRlcnMgb2JqZWN0O1xuICAgKiBmb3IgZXhhbXBsZSB7ZGFtcGluZzowLjAxLGJpbmRFbWl0dGVyOmZhbHNlfVxuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZiA9IHt9KSB7XG4gICAgc3VwZXIoY29uZik7XG5cbiAgICB0aGlzLnBhcnRpY2xlcyA9IFtdO1xuICAgIHRoaXMuYmVoYXZpb3VycyA9IFtdO1xuICAgIHRoaXMuaW5pdGlhbGl6ZXMgPSBbXTtcblxuICAgIHRoaXMuZW1pdFRpbWUgPSAwO1xuICAgIHRoaXMuZW1pdFNwZWVkID0gMDtcbiAgICB0aGlzLnRvdGFsVGltZSA9IC0xO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGZyaWN0aW9uIGNvZWZmaWNpZW50IGZvciBhbGwgcGFydGljbGUgZW1pdCBieSBUaGlzO1xuICAgICAqIEBwcm9wZXJ0eSBkYW1waW5nXG4gICAgICogQHR5cGUge051bWJlcn1cbiAgICAgKiBAZGVmYXVsdCAwLjAwNlxuICAgICAqL1xuICAgIHRoaXMuZGFtcGluZyA9IDAuMDA2O1xuXG4gICAgLyoqXG4gICAgICogSWYgYmluZEVtaXR0ZXIgdGhlIHBhcnRpY2xlcyBjYW4gYmluZCB0aGlzIGVtaXR0ZXIncyBwcm9wZXJ0eTtcbiAgICAgKiBAcHJvcGVydHkgYmluZEVtaXR0ZXJcbiAgICAgKiBAdHlwZSB7Qm9vbGVhbn1cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgdGhpcy5iaW5kRW1pdHRlciA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbnVtYmVyIG9mIHBhcnRpY2xlcyBwZXIgc2Vjb25kIGVtaXQgKGEgW3BhcnRpY2xlXS9iIFtzXSk7XG4gICAgICogQHByb3BlcnR5IHJhdGVcbiAgICAgKiBAdHlwZSB7UmF0ZX1cbiAgICAgKiBAZGVmYXVsdCBSYXRlKDEsIC4xKVxuICAgICAqL1xuICAgIHRoaXMucmF0ZSA9IG5ldyBSYXRlKDEsIDAuMSk7XG5cbiAgICB0aGlzLm5hbWUgPSBcIkVtaXR0ZXJcIjtcbiAgICB0aGlzLmlkID0gUHVpZC5pZCh0aGlzLm5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHN0YXJ0IGVtaXQgcGFydGljbGVcbiAgICogQG1ldGhvZCBlbWl0XG4gICAqIEBwYXJhbSB7TnVtYmVyfSBlbWl0VGltZSBiZWdpbiBlbWl0IHRpbWU7XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBsaWZlIHRoZSBsaWZlIG9mIHRoaXMgZW1pdHRlclxuICAgKi9cbiAgZW1pdCh0b3RhbFRpbWUsIGxpZmUpIHtcbiAgICB0aGlzLnN0b3BlZCA9IGZhbHNlO1xuICAgIHRoaXMuZW1pdFRpbWUgPSAwO1xuICAgIHRoaXMudG90YWxUaW1lID0gVXRpbC5pbml0VmFsdWUodG90YWxUaW1lLCBJbmZpbml0eSk7XG5cbiAgICBpZiAobGlmZSA9PT0gdHJ1ZSB8fCBsaWZlID09PSBcImxpZmVcIiB8fCBsaWZlID09PSBcImRlc3Ryb3lcIikge1xuICAgICAgdGhpcy5saWZlID0gdG90YWxUaW1lID09PSBcIm9uY2VcIiA/IDEgOiB0aGlzLnRvdGFsVGltZTtcbiAgICB9IGVsc2UgaWYgKCFpc05hTihsaWZlKSkge1xuICAgICAgdGhpcy5saWZlID0gbGlmZTtcbiAgICB9XG5cbiAgICB0aGlzLnJhdGUuaW5pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHN0b3AgZW1pdGluZ1xuICAgKiBAbWV0aG9kIHN0b3BcbiAgICovXG4gIHN0b3AoKSB7XG4gICAgdGhpcy50b3RhbFRpbWUgPSAtMTtcbiAgICB0aGlzLmVtaXRUaW1lID0gMDtcbiAgICB0aGlzLnN0b3BlZCA9IHRydWU7XG4gIH1cblxuICBwcmVFbWl0KHRpbWUpIHtcbiAgICBsZXQgb2xkU3RvcGVkID0gdGhpcy5zdG9wZWQ7XG4gICAgbGV0IG9sZEVtaXRUaW1lID0gdGhpcy5lbWl0VGltZTtcbiAgICBsZXQgb2xkVG90YWxUaW1lID0gdGhpcy50b3RhbFRpbWU7XG5cbiAgICB0aGlzLnN0b3BlZCA9IGZhbHNlO1xuICAgIHRoaXMuZW1pdFRpbWUgPSAwO1xuICAgIHRoaXMudG90YWxUaW1lID0gdGltZTtcbiAgICB0aGlzLnJhdGUuaW5pdCgpO1xuXG4gICAgY29uc3Qgc3RlcCA9IDAuMDE2NztcbiAgICB3aGlsZSAodGltZSA+IHN0ZXApIHtcbiAgICAgIHRpbWUgLT0gc3RlcDtcbiAgICAgIHRoaXMudXBkYXRlKHN0ZXApO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcGVkID0gb2xkU3RvcGVkO1xuICAgIHRoaXMuZW1pdFRpbWUgPSBvbGRFbWl0VGltZSArIE1hdGgubWF4KHRpbWUsIDApO1xuICAgIHRoaXMudG90YWxUaW1lID0gb2xkVG90YWxUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIHJlbW92ZSBjdXJyZW50IGFsbCBwYXJ0aWNsZXNcbiAgICogQG1ldGhvZCByZW1vdmVBbGxQYXJ0aWNsZXNcbiAgICovXG4gIHJlbW92ZUFsbFBhcnRpY2xlcygpIHtcbiAgICBsZXQgaSA9IHRoaXMucGFydGljbGVzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB0aGlzLnBhcnRpY2xlc1tpXS5kZWFkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGQgaW5pdGlhbGl6ZSB0byB0aGlzIGVtaXR0ZXJcbiAgICogQG1ldGhvZCBhZGRTZWxmSW5pdGlhbGl6ZVxuICAgKi9cbiAgYWRkU2VsZkluaXRpYWxpemUoaW5pdGlhbGl6ZSkge1xuICAgIGlmIChpbml0aWFsaXplW1wiaW5pdFwiXSkge1xuICAgICAgaW5pdGlhbGl6ZS5pbml0KHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0aGlzLmluaXRBbGwoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogYWRkIHRoZSBJbml0aWFsaXplIHRvIHBhcnRpY2xlcztcbiAgICpcbiAgICogeW91IGNhbiB1c2UgaW5pdGlhbGl6ZXMgYXJyYXk6Zm9yIGV4YW1wbGUgZW1pdHRlci5hZGRJbml0aWFsaXplKGluaXRpYWxpemUxLGluaXRpYWxpemUyLGluaXRpYWxpemUzKTtcbiAgICogQG1ldGhvZCBhZGRJbml0aWFsaXplXG4gICAqIEBwYXJhbSB7SW5pdGlhbGl6ZX0gaW5pdGlhbGl6ZSBsaWtlIHRoaXMgbmV3IFJhZGl1cygxLCAxMilcbiAgICovXG4gIGFkZEluaXRpYWxpemUoLi4ucmVzdCkge1xuICAgIGxldCBpID0gcmVzdC5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkgdGhpcy5pbml0aWFsaXplcy5wdXNoKHJlc3RbaV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIHJlbW92ZSB0aGUgSW5pdGlhbGl6ZVxuICAgKiBAbWV0aG9kIHJlbW92ZUluaXRpYWxpemVcbiAgICogQHBhcmFtIHtJbml0aWFsaXplfSBpbml0aWFsaXplIGEgaW5pdGlhbGl6ZVxuICAgKi9cbiAgcmVtb3ZlSW5pdGlhbGl6ZShpbml0aWFsaXplcikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbml0aWFsaXplcy5pbmRleE9mKGluaXRpYWxpemVyKTtcbiAgICBpZiAoaW5kZXggPiAtMSkgdGhpcy5pbml0aWFsaXplcy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIHJlbW92ZSBhbGwgSW5pdGlhbGl6ZXNcbiAgICogQG1ldGhvZCByZW1vdmVJbml0aWFsaXplcnNcbiAgICovXG4gIHJlbW92ZUFsbEluaXRpYWxpemVycygpIHtcbiAgICBVdGlsLmVtcHR5QXJyYXkodGhpcy5pbml0aWFsaXplcyk7XG4gIH1cblxuICAvKipcbiAgICogYWRkIHRoZSBCZWhhdmlvdXIgdG8gcGFydGljbGVzO1xuICAgKlxuICAgKiB5b3UgY2FuIHVzZSBCZWhhdmlvdXJzIGFycmF5OmVtaXR0ZXIuYWRkQmVoYXZpb3VyKEJlaGF2aW91cjEsQmVoYXZpb3VyMixCZWhhdmlvdXIzKTtcbiAgICogQG1ldGhvZCBhZGRCZWhhdmlvdXJcbiAgICogQHBhcmFtIHtCZWhhdmlvdXJ9IGJlaGF2aW91ciBsaWtlIHRoaXMgbmV3IENvbG9yKCdyYW5kb20nKVxuICAgKi9cbiAgYWRkQmVoYXZpb3VyKC4uLnJlc3QpIHtcbiAgICBsZXQgaSA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgbGV0IGJlaGF2aW91ciA9IHJlc3RbaV07XG4gICAgICB0aGlzLmJlaGF2aW91cnMucHVzaChiZWhhdmlvdXIpO1xuICAgICAgaWYgKGJlaGF2aW91ci5wYXJlbnRzKSBiZWhhdmlvdXIucGFyZW50cy5wdXNoKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiByZW1vdmUgdGhlIEJlaGF2aW91clxuICAgKiBAbWV0aG9kIHJlbW92ZUJlaGF2aW91clxuICAgKiBAcGFyYW0ge0JlaGF2aW91cn0gYmVoYXZpb3VyIGEgYmVoYXZpb3VyXG4gICAqL1xuICByZW1vdmVCZWhhdmlvdXIoYmVoYXZpb3VyKSB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy5iZWhhdmlvdXJzLmluZGV4T2YoYmVoYXZpb3VyKTtcbiAgICB0aGlzLmJlaGF2aW91cnMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIGlmIChiZWhhdmlvdXIucGFyZW50cykge1xuICAgICAgaW5kZXggPSBiZWhhdmlvdXIucGFyZW50cy5pbmRleE9mKGJlaGF2aW91cik7XG4gICAgICBiZWhhdmlvdXIucGFyZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiByZW1vdmUgYWxsIGJlaGF2aW91cnNcbiAgICogQG1ldGhvZCByZW1vdmVBbGxCZWhhdmlvdXJzXG4gICAqL1xuICByZW1vdmVBbGxCZWhhdmlvdXJzKCkge1xuICAgIFV0aWwuZW1wdHlBcnJheSh0aGlzLmJlaGF2aW91cnMpO1xuICB9XG5cbiAgLy8gZW1pdHRlciB1cGRhdGVcbiAgdXBkYXRlKHRpbWUpIHtcbiAgICB0aGlzLmFnZSArPSB0aW1lO1xuICAgIGlmICh0aGlzLmFnZSA+PSB0aGlzLmxpZmUgfHwgdGhpcy5kZWFkKSB0aGlzLmRlc3Ryb3koKTtcblxuICAgIHRoaXMuZW1pdHRpbmcodGltZSk7XG4gICAgdGhpcy5pbnRlZ3JhdGUodGltZSk7XG4gIH1cblxuICBpbnRlZ3JhdGUodGltZSkge1xuICAgIGlmICghdGhpcy5wYXJlbnQpIHJldHVybjtcblxuICAgIGNvbnN0IGRhbXBpbmcgPSAxIC0gdGhpcy5kYW1waW5nO1xuICAgIHRoaXMucGFyZW50LmludGVncmF0b3IuY2FsY3VsYXRlKHRoaXMsIHRpbWUsIGRhbXBpbmcpO1xuXG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5wYXJ0aWNsZXMubGVuZ3RoO1xuICAgIGxldCBpLCBwYXJ0aWNsZTtcblxuICAgIGZvciAoaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBwYXJ0aWNsZSA9IHRoaXMucGFydGljbGVzW2ldO1xuXG4gICAgICAvLyBwYXJ0aWNsZSB1cGRhdGVcbiAgICAgIHBhcnRpY2xlLnVwZGF0ZSh0aW1lLCBpKTtcbiAgICAgIHRoaXMucGFyZW50LmludGVncmF0b3IuY2FsY3VsYXRlKHBhcnRpY2xlLCB0aW1lLCBkYW1waW5nKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2goXCJQQVJUSUNMRV9VUERBVEVcIiwgcGFydGljbGUpO1xuXG4gICAgICAvLyBjaGVjayBkZWFkXG4gICAgICBpZiAocGFydGljbGUuZGVhZCkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKFwiUEFSVElDTEVfREVBRFwiLCBwYXJ0aWNsZSk7XG5cbiAgICAgICAgdGhpcy5wYXJlbnQucG9vbC5leHBpcmUocGFydGljbGUpO1xuICAgICAgICB0aGlzLnBhcnRpY2xlcy5zcGxpY2UoaSwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZGlzcGF0Y2goZXZlbnQsIHRhcmdldCkge1xuICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQsIHRhcmdldCk7XG4gICAgdGhpcy5iaW5kRXZlbnQgJiYgdGhpcy5kaXNwYXRjaEV2ZW50KGV2ZW50LCB0YXJnZXQpO1xuICB9XG5cbiAgZW1pdHRpbmcodGltZSkge1xuICAgIGlmICh0aGlzLnRvdGFsVGltZSA9PT0gXCJvbmNlXCIpIHtcbiAgICAgIGxldCBpO1xuICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5yYXRlLmdldFZhbHVlKDk5OTk5KTtcblxuICAgICAgaWYgKGxlbmd0aCA+IDApIHRoaXMuZW1pdFNwZWVkID0gbGVuZ3RoO1xuICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB0aGlzLmNyZWF0ZVBhcnRpY2xlKCk7XG4gICAgICB0aGlzLnRvdGFsVGltZSA9IFwibm9uZVwiO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVtaXRUaW1lICs9IHRpbWU7XG5cbiAgICAgIGlmICh0aGlzLmVtaXRUaW1lIDwgdGhpcy50b3RhbFRpbWUpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5yYXRlLmdldFZhbHVlKHRpbWUpO1xuICAgICAgICBsZXQgaTtcblxuICAgICAgICBpZiAobGVuZ3RoID4gMCkgdGhpcy5lbWl0U3BlZWQgPSBsZW5ndGg7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgdGhpcy5jcmVhdGVQYXJ0aWNsZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBjcmVhdGUgc2luZ2xlIHBhcnRpY2xlO1xuICAgKlxuICAgKiBjYW4gdXNlIGVtaXQoe3g6MTB9LG5ldyBHcmF2aXR5KDEwKSx7J3BhcnRpY2xlVXBkYXRlJyxmdW59KSBvciBlbWl0KFt7eDoxMH0sbmV3IEluaXRpYWxpemVdLG5ldyBHcmF2aXR5KDEwKSx7J3BhcnRpY2xlVXBkYXRlJyxmdW59KVxuICAgKiBAbWV0aG9kIHJlbW92ZUFsbFBhcnRpY2xlc1xuICAgKi9cbiAgY3JlYXRlUGFydGljbGUoaW5pdGlhbGl6ZSwgYmVoYXZpb3VyKSB7XG4gICAgY29uc3QgcGFydGljbGUgPSB0aGlzLnBhcmVudC5wb29sLmdldChQYXJ0aWNsZSk7XG4gICAgdGhpcy5zZXR1cFBhcnRpY2xlKHBhcnRpY2xlLCBpbml0aWFsaXplLCBiZWhhdmlvdXIpO1xuICAgIHRoaXMuZGlzcGF0Y2goXCJQQVJUSUNMRV9DUkVBVEVEXCIsIHBhcnRpY2xlKTtcblxuICAgIHJldHVybiBwYXJ0aWNsZTtcbiAgfVxuXG4gIHNldHVwUGFydGljbGUocGFydGljbGUsIGluaXRpYWxpemUsIGJlaGF2aW91cikge1xuICAgIGxldCBpbml0aWFsaXplcyA9IHRoaXMuaW5pdGlhbGl6ZXM7XG4gICAgbGV0IGJlaGF2aW91cnMgPSB0aGlzLmJlaGF2aW91cnM7XG5cbiAgICBpZiAoaW5pdGlhbGl6ZSkgaW5pdGlhbGl6ZXMgPSBVdGlsLnRvQXJyYXkoaW5pdGlhbGl6ZSk7XG4gICAgaWYgKGJlaGF2aW91cikgYmVoYXZpb3VycyA9IFV0aWwudG9BcnJheShiZWhhdmlvdXIpO1xuXG4gICAgcGFydGljbGUucmVzZXQoKTtcbiAgICBJbml0aWFsaXplVXRpbC5pbml0aWFsaXplKHRoaXMsIHBhcnRpY2xlLCBpbml0aWFsaXplcyk7XG4gICAgcGFydGljbGUuYWRkQmVoYXZpb3VycyhiZWhhdmlvdXJzKTtcbiAgICBwYXJ0aWNsZS5wYXJlbnQgPSB0aGlzO1xuXG4gICAgdGhpcy5wYXJ0aWNsZXMucHVzaChwYXJ0aWNsZSk7XG4gIH1cblxuICByZW1vdmUoKSB7XG4gICAgdGhpcy5zdG9wKCk7XG4gICAgVXRpbC5kZXN0cm95QWxsKHRoaXMucGFydGljbGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0b3J5IHRoaXMgRW1pdHRlclxuICAgKiBAbWV0aG9kIGRlc3Ryb3lcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZWFkID0gdHJ1ZTtcbiAgICB0aGlzLnJlbW92ZSgpO1xuICAgIHRoaXMucmVtb3ZlQWxsSW5pdGlhbGl6ZXJzKCk7XG4gICAgdGhpcy5yZW1vdmVBbGxCZWhhdmlvdXJzKCk7XG4gICAgdGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQucmVtb3ZlRW1pdHRlcih0aGlzKTtcblxuICAgIHRoaXMucmF0ZSA9IG51bGw7XG4gICAgdGhpcy5vbGQgPSBudWxsO1xuICAgIHRoaXMucmdiID0gbnVsbDtcbiAgICB0aGlzLnYgPSBudWxsO1xuICAgIHRoaXMuYSA9IG51bGw7XG4gICAgdGhpcy5wID0gbnVsbDtcbiAgfVxufVxuXG5FdmVudERpc3BhdGNoZXIuYmluZChFbWl0dGVyKTtcbiIsImltcG9ydCBFbWl0dGVyIGZyb20gXCIuL0VtaXR0ZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmVoYXZpb3VyRW1pdHRlciBleHRlbmRzIEVtaXR0ZXIge1xuICAvKipcbiAgICogVGhlIEJlaGF2aW91ckVtaXR0ZXIgY2xhc3MgaW5oZXJpdHMgZnJvbSBQcm90b24uRW1pdHRlclxuICAgKlxuICAgKiB1c2UgdGhlIEJlaGF2aW91ckVtaXR0ZXIgeW91IGNhbiBhZGQgYmVoYXZpb3VycyB0byBzZWxmO1xuICAgKiBAY2xhc3MgUHJvdG9uLkJlaGF2aW91ckVtaXR0ZXJcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25mIHRoZSBwYXJhbWV0ZXJzIG9iamVjdDtcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmYpIHtcbiAgICBzdXBlcihjb25mKTtcblxuICAgIHRoaXMuc2VsZkJlaGF2aW91cnMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGQgdGhlIEJlaGF2aW91ciB0byBlbWl0dGVyO1xuICAgKlxuICAgKiB5b3UgY2FuIHVzZSBCZWhhdmlvdXJzIGFycmF5OmVtaXR0ZXIuYWRkU2VsZkJlaGF2aW91cihCZWhhdmlvdXIxLEJlaGF2aW91cjIsQmVoYXZpb3VyMyk7XG4gICAqIEBtZXRob2QgYWRkU2VsZkJlaGF2aW91clxuICAgKiBAcGFyYW0ge1Byb3Rvbi5CZWhhdmlvdXJ9IGJlaGF2aW91ciBsaWtlIHRoaXMgbmV3IFByb3Rvbi5Db2xvcigncmFuZG9tJylcbiAgICovXG4gIGFkZFNlbGZCZWhhdmlvdXIoLi4ucmVzdCkge1xuICAgIGxldCBpLFxuICAgICAgbGVuZ3RoID0gcmVzdC5sZW5ndGg7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBiZWhhdmlvdXIgPSByZXN0W2ldO1xuICAgICAgdGhpcy5zZWxmQmVoYXZpb3Vycy5wdXNoKGJlaGF2aW91cik7XG4gICAgICBiZWhhdmlvdXIuaW5pdGlhbGl6ZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogcmVtb3ZlIHRoZSBCZWhhdmlvdXIgZm9yIHNlbGZcbiAgICogQG1ldGhvZCByZW1vdmVTZWxmQmVoYXZpb3VyXG4gICAqIEBwYXJhbSB7UHJvdG9uLkJlaGF2aW91cn0gYmVoYXZpb3VyIGEgYmVoYXZpb3VyXG4gICAqL1xuICByZW1vdmVTZWxmQmVoYXZpb3VyKGJlaGF2aW91cikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxmQmVoYXZpb3Vycy5pbmRleE9mKGJlaGF2aW91cik7XG4gICAgaWYgKGluZGV4ID4gLTEpIHRoaXMuc2VsZkJlaGF2aW91cnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIHVwZGF0ZSh0aW1lKSB7XG4gICAgc3VwZXIudXBkYXRlKHRpbWUpO1xuXG4gICAgaWYgKCF0aGlzLnNsZWVwKSB7XG4gICAgICBjb25zdCBsZW5ndGggPSB0aGlzLnNlbGZCZWhhdmlvdXJzLmxlbmd0aDtcbiAgICAgIGxldCBpO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy5zZWxmQmVoYXZpb3Vyc1tpXS5hcHBseUJlaGF2aW91cih0aGlzLCB0aW1lLCBpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgRW1pdHRlciBmcm9tIFwiLi9FbWl0dGVyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvbGxvd0VtaXR0ZXIgZXh0ZW5kcyBFbWl0dGVyIHtcbiAgLyoqXG4gICAqIFRoZSBGb2xsb3dFbWl0dGVyIGNsYXNzIGluaGVyaXRzIGZyb20gUHJvdG9uLkVtaXR0ZXJcbiAgICpcbiAgICogdXNlIHRoZSBGb2xsb3dFbWl0dGVyIHdpbGwgZW1pdCBwYXJ0aWNsZSB3aGVuIG1vdXNlbW92aW5nXG4gICAqXG4gICAqIEBjbGFzcyBQcm90b24uRm9sbG93RW1pdHRlclxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtFbGVtZW50fSBtb3VzZVRhcmdldCBtb3VzZWV2ZW50J3MgdGFyZ2V0O1xuICAgKiBAcGFyYW0ge051bWJlcn0gZWFzZSB0aGUgZWFzaW5nIG9mIGZvbGxvd2luZyBzcGVlZDtcbiAgICogQGRlZmF1bHQgMC43XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25mIHRoZSBwYXJhbWV0ZXJzIG9iamVjdDtcbiAgICovXG4gIGNvbnN0cnVjdG9yKG1vdXNlVGFyZ2V0LCBlYXNlLCBjb25mKSB7XG4gICAgc3VwZXIoY29uZik7XG5cbiAgICB0aGlzLm1vdXNlVGFyZ2V0ID0gVXRpbC5pbml0VmFsdWUobW91c2VUYXJnZXQsIHdpbmRvdyk7XG4gICAgdGhpcy5lYXNlID0gVXRpbC5pbml0VmFsdWUoZWFzZSwgMC43KTtcblxuICAgIHRoaXMuX2FsbG93RW1pdHRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmluaXRFdmVudEhhbmRsZXIoKTtcbiAgfVxuXG4gIGluaXRFdmVudEhhbmRsZXIoKSB7XG4gICAgdGhpcy5tb3VzZW1vdmVIYW5kbGVyID0gZSA9PiB0aGlzLm1vdXNlbW92ZS5jYWxsKHRoaXMsIGUpO1xuICAgIHRoaXMubW91c2Vkb3duSGFuZGxlciA9IGUgPT4gdGhpcy5tb3VzZWRvd24uY2FsbCh0aGlzLCBlKTtcbiAgICB0aGlzLm1vdXNldXBIYW5kbGVyID0gZSA9PiB0aGlzLm1vdXNldXAuY2FsbCh0aGlzLCBlKTtcbiAgICB0aGlzLm1vdXNlVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5tb3VzZW1vdmVIYW5kbGVyLCBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogc3RhcnQgZW1pdCBwYXJ0aWNsZVxuICAgKiBAbWV0aG9kIGVtaXRcbiAgICovXG4gIGVtaXQoKSB7XG4gICAgdGhpcy5fYWxsb3dFbWl0dGluZyA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogc3RvcCBlbWl0aW5nXG4gICAqIEBtZXRob2Qgc3RvcFxuICAgKi9cbiAgc3RvcCgpIHtcbiAgICB0aGlzLl9hbGxvd0VtaXR0aW5nID0gZmFsc2U7XG4gIH1cblxuICBtb3VzZW1vdmUoZSkge1xuICAgIGlmIChlLmxheWVyWCB8fCBlLmxheWVyWCA9PT0gMCkge1xuICAgICAgdGhpcy5wLnggKz0gKGUubGF5ZXJYIC0gdGhpcy5wLngpICogdGhpcy5lYXNlO1xuICAgICAgdGhpcy5wLnkgKz0gKGUubGF5ZXJZIC0gdGhpcy5wLnkpICogdGhpcy5lYXNlO1xuICAgIH0gZWxzZSBpZiAoZS5vZmZzZXRYIHx8IGUub2Zmc2V0WCA9PT0gMCkge1xuICAgICAgdGhpcy5wLnggKz0gKGUub2Zmc2V0WCAtIHRoaXMucC54KSAqIHRoaXMuZWFzZTtcbiAgICAgIHRoaXMucC55ICs9IChlLm9mZnNldFkgLSB0aGlzLnAueSkgKiB0aGlzLmVhc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2FsbG93RW1pdHRpbmcpIHN1cGVyLmVtaXQoXCJvbmNlXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3RvcnkgdGhpcyBFbWl0dGVyXG4gICAqIEBtZXRob2QgZGVzdHJveVxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgdGhpcy5tb3VzZVRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMubW91c2Vtb3ZlSGFuZGxlciwgZmFsc2UpO1xuICB9XG59XG4iLCJleHBvcnQgZGVmYXVsdCB7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciBpdCBpcyBhIHBpY3R1cmUgb2JqZWN0XG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IGlzIG9yIG5vXG4gICAqL1xuICBpc0ltYWdlKG9iaikge1xuICAgIGlmICghb2JqKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKG9iai5fX2lzSW1hZ2UpIHJldHVybiB0cnVlO1xuXG4gICAgY29uc3QgdGFnTmFtZSA9IGAke29iai50YWdOYW1lfWAudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBub2RlTmFtZSA9IGAke29iai5ub2RlTmFtZX1gLnRvVXBwZXJDYXNlKCk7XG4gICAgaWYgKG5vZGVOYW1lID09PSBcIklNR1wiIHx8IHRhZ05hbWUgPT09IFwiSU1HXCIpIHtcbiAgICAgIG9iai5fX2lzSW1hZ2UgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciBpdCBpcyBhIHN0cmluZyBvYmplY3RcbiAgICpcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gaXMgb3Igbm9cbiAgICovXG4gIGlzU3RyaW5nKG9iaikge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiO1xuICB9XG59O1xuIiwiaW1wb3J0IFBvb2wgZnJvbSBcIi4uL2NvcmUvUG9vbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYXNlUmVuZGVyZXIge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBzdHJva2UpIHtcbiAgICB0aGlzLnBvb2wgPSBuZXcgUG9vbCgpO1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5zdHJva2UgPSBzdHJva2U7XG4gICAgdGhpcy5jaXJjbGVDb25mID0geyBpc0NpcmNsZTogdHJ1ZSB9O1xuXG4gICAgdGhpcy5pbml0RXZlbnRIYW5kbGVyKCk7XG4gICAgdGhpcy5uYW1lID0gXCJCYXNlUmVuZGVyZXJcIjtcbiAgfVxuXG4gIHNldFN0cm9rZShjb2xvciA9IFwiIzAwMDAwMFwiLCB0aGlua25lc3MgPSAxKSB7XG4gICAgdGhpcy5zdHJva2UgPSB7IGNvbG9yLCB0aGlua25lc3MgfTtcbiAgfVxuXG4gIGluaXRFdmVudEhhbmRsZXIoKSB7XG4gICAgdGhpcy5fcHJvdG9uVXBkYXRlSGFuZGxlciA9ICgpID0+IHtcbiAgICAgIHRoaXMub25Qcm90b25VcGRhdGUuY2FsbCh0aGlzKTtcbiAgICB9O1xuXG4gICAgdGhpcy5fcHJvdG9uVXBkYXRlQWZ0ZXJIYW5kbGVyID0gKCkgPT4ge1xuICAgICAgdGhpcy5vblByb3RvblVwZGF0ZUFmdGVyLmNhbGwodGhpcyk7XG4gICAgfTtcblxuICAgIHRoaXMuX2VtaXR0ZXJBZGRlZEhhbmRsZXIgPSBlbWl0dGVyID0+IHtcbiAgICAgIHRoaXMub25FbWl0dGVyQWRkZWQuY2FsbCh0aGlzLCBlbWl0dGVyKTtcbiAgICB9O1xuXG4gICAgdGhpcy5fZW1pdHRlclJlbW92ZWRIYW5kbGVyID0gZW1pdHRlciA9PiB7XG4gICAgICB0aGlzLm9uRW1pdHRlclJlbW92ZWQuY2FsbCh0aGlzLCBlbWl0dGVyKTtcbiAgICB9O1xuXG4gICAgdGhpcy5fcGFydGljbGVDcmVhdGVkSGFuZGxlciA9IHBhcnRpY2xlID0+IHtcbiAgICAgIHRoaXMub25QYXJ0aWNsZUNyZWF0ZWQuY2FsbCh0aGlzLCBwYXJ0aWNsZSk7XG4gICAgfTtcblxuICAgIHRoaXMuX3BhcnRpY2xlVXBkYXRlSGFuZGxlciA9IHBhcnRpY2xlID0+IHtcbiAgICAgIHRoaXMub25QYXJ0aWNsZVVwZGF0ZS5jYWxsKHRoaXMsIHBhcnRpY2xlKTtcbiAgICB9O1xuXG4gICAgdGhpcy5fcGFydGljbGVEZWFkSGFuZGxlciA9IHBhcnRpY2xlID0+IHtcbiAgICAgIHRoaXMub25QYXJ0aWNsZURlYWQuY2FsbCh0aGlzLCBwYXJ0aWNsZSk7XG4gICAgfTtcbiAgfVxuXG4gIGluaXQocHJvdG9uKSB7XG4gICAgdGhpcy5wYXJlbnQgPSBwcm90b247XG5cbiAgICBwcm90b24uYWRkRXZlbnRMaXN0ZW5lcihcIlBST1RPTl9VUERBVEVcIiwgdGhpcy5fcHJvdG9uVXBkYXRlSGFuZGxlcik7XG4gICAgcHJvdG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJQUk9UT05fVVBEQVRFX0FGVEVSXCIsIHRoaXMuX3Byb3RvblVwZGF0ZUFmdGVySGFuZGxlcik7XG5cbiAgICBwcm90b24uYWRkRXZlbnRMaXN0ZW5lcihcIkVNSVRURVJfQURERURcIiwgdGhpcy5fZW1pdHRlckFkZGVkSGFuZGxlcik7XG4gICAgcHJvdG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJFTUlUVEVSX1JFTU9WRURcIiwgdGhpcy5fZW1pdHRlclJlbW92ZWRIYW5kbGVyKTtcblxuICAgIHByb3Rvbi5hZGRFdmVudExpc3RlbmVyKFwiUEFSVElDTEVfQ1JFQVRFRFwiLCB0aGlzLl9wYXJ0aWNsZUNyZWF0ZWRIYW5kbGVyKTtcbiAgICBwcm90b24uYWRkRXZlbnRMaXN0ZW5lcihcIlBBUlRJQ0xFX1VQREFURVwiLCB0aGlzLl9wYXJ0aWNsZVVwZGF0ZUhhbmRsZXIpO1xuICAgIHByb3Rvbi5hZGRFdmVudExpc3RlbmVyKFwiUEFSVElDTEVfREVBRFwiLCB0aGlzLl9wYXJ0aWNsZURlYWRIYW5kbGVyKTtcbiAgfVxuXG4gIHJlc2l6ZSh3aWR0aCwgaGVpZ2h0KSB7fVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZW1vdmUoKTtcbiAgICB0aGlzLnBvb2wuZGVzdHJveSgpO1xuICAgIHRoaXMucG9vbCA9IG51bGw7XG4gICAgdGhpcy5lbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLnN0cm9rZSA9IG51bGw7XG4gIH1cblxuICByZW1vdmUocHJvdG9uKSB7XG4gICAgdGhpcy5wYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIlBST1RPTl9VUERBVEVcIiwgdGhpcy5fcHJvdG9uVXBkYXRlSGFuZGxlcik7XG4gICAgdGhpcy5wYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIlBST1RPTl9VUERBVEVfQUZURVJcIiwgdGhpcy5fcHJvdG9uVXBkYXRlQWZ0ZXJIYW5kbGVyKTtcblxuICAgIHRoaXMucGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJFTUlUVEVSX0FEREVEXCIsIHRoaXMuX2VtaXR0ZXJBZGRlZEhhbmRsZXIpO1xuICAgIHRoaXMucGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJFTUlUVEVSX1JFTU9WRURcIiwgdGhpcy5fZW1pdHRlclJlbW92ZWRIYW5kbGVyKTtcblxuICAgIHRoaXMucGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJQQVJUSUNMRV9DUkVBVEVEXCIsIHRoaXMuX3BhcnRpY2xlQ3JlYXRlZEhhbmRsZXIpO1xuICAgIHRoaXMucGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJQQVJUSUNMRV9VUERBVEVcIiwgdGhpcy5fcGFydGljbGVVcGRhdGVIYW5kbGVyKTtcbiAgICB0aGlzLnBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiUEFSVElDTEVfREVBRFwiLCB0aGlzLl9wYXJ0aWNsZURlYWRIYW5kbGVyKTtcblxuICAgIHRoaXMucGFyZW50ID0gbnVsbDtcbiAgfVxuXG4gIG9uUHJvdG9uVXBkYXRlKCkge31cbiAgb25Qcm90b25VcGRhdGVBZnRlcigpIHt9XG5cbiAgb25FbWl0dGVyQWRkZWQoZW1pdHRlcikge31cbiAgb25FbWl0dGVyUmVtb3ZlZChlbWl0dGVyKSB7fVxuXG4gIG9uUGFydGljbGVDcmVhdGVkKHBhcnRpY2xlKSB7fVxuICBvblBhcnRpY2xlVXBkYXRlKHBhcnRpY2xlKSB7fVxuICBvblBhcnRpY2xlRGVhZChwYXJ0aWNsZSkge31cbn1cbiIsImltcG9ydCBUeXBlcyBmcm9tIFwiLi4vdXRpbHMvVHlwZXNcIjtcbmltcG9ydCBJbWdVdGlsIGZyb20gXCIuLi91dGlscy9JbWdVdGlsXCI7XG5pbXBvcnQgQ29sb3JVdGlsIGZyb20gXCIuLi91dGlscy9Db2xvclV0aWxcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuaW1wb3J0IEJhc2VSZW5kZXJlciBmcm9tIFwiLi9CYXNlUmVuZGVyZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FudmFzUmVuZGVyZXIgZXh0ZW5kcyBCYXNlUmVuZGVyZXIge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50KSB7XG4gICAgc3VwZXIoZWxlbWVudCk7XG5cbiAgICB0aGlzLnN0cm9rZSA9IG51bGw7XG4gICAgdGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoXCIyZFwiKTtcbiAgICB0aGlzLmJ1ZmZlckNhY2hlID0ge307XG4gICAgdGhpcy5uYW1lID0gXCJDYW52YXNSZW5kZXJlclwiO1xuICB9XG5cbiAgcmVzaXplKHdpZHRoLCBoZWlnaHQpIHtcbiAgICB0aGlzLmVsZW1lbnQud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmVsZW1lbnQuaGVpZ2h0ID0gaGVpZ2h0O1xuICB9XG5cbiAgb25Qcm90b25VcGRhdGUoKSB7XG4gICAgdGhpcy5jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLmVsZW1lbnQud2lkdGgsIHRoaXMuZWxlbWVudC5oZWlnaHQpO1xuICB9XG5cbiAgb25QYXJ0aWNsZUNyZWF0ZWQocGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUuYm9keSkge1xuICAgICAgSW1nVXRpbC5nZXRJbWdGcm9tQ2FjaGUocGFydGljbGUuYm9keSwgdGhpcy5hZGRJbWcyQm9keSwgcGFydGljbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0aWNsZS5jb2xvciA9IHBhcnRpY2xlLmNvbG9yIHx8IFwiI2ZmMDAwMFwiO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFydGljbGVVcGRhdGUocGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUuYm9keSkge1xuICAgICAgaWYgKFR5cGVzLmlzSW1hZ2UocGFydGljbGUuYm9keSkpIHtcbiAgICAgICAgdGhpcy5kcmF3SW1hZ2UocGFydGljbGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRyYXdDaXJjbGUocGFydGljbGUpO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7XG4gICAgcGFydGljbGUuYm9keSA9IG51bGw7XG4gIH1cblxuICAvLyBwcml2YXRlIG1ldGhvZFxuICBhZGRJbWcyQm9keShpbWcsIHBhcnRpY2xlKSB7XG4gICAgcGFydGljbGUuYm9keSA9IGltZztcbiAgfVxuXG4gIC8vIHByaXZhdGUgZHJhd0ltYWdlIG1ldGhvZFxuICBkcmF3SW1hZ2UocGFydGljbGUpIHtcbiAgICBjb25zdCB3ID0gKHBhcnRpY2xlLmJvZHkud2lkdGggKiBwYXJ0aWNsZS5zY2FsZSkgfCAwO1xuICAgIGNvbnN0IGggPSAocGFydGljbGUuYm9keS5oZWlnaHQgKiBwYXJ0aWNsZS5zY2FsZSkgfCAwO1xuICAgIGNvbnN0IHggPSBwYXJ0aWNsZS5wLnggLSB3IC8gMjtcbiAgICBjb25zdCB5ID0gcGFydGljbGUucC55IC0gaCAvIDI7XG5cbiAgICBpZiAoISFwYXJ0aWNsZS5jb2xvcikge1xuICAgICAgaWYgKCFwYXJ0aWNsZS5kYXRhW1wiYnVmZmVyXCJdKSBwYXJ0aWNsZS5kYXRhLmJ1ZmZlciA9IHRoaXMuY3JlYXRlQnVmZmVyKHBhcnRpY2xlLmJvZHkpO1xuXG4gICAgICBjb25zdCBidWZDb250ZXh0ID0gcGFydGljbGUuZGF0YS5idWZmZXIuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgICAgYnVmQ29udGV4dC5jbGVhclJlY3QoMCwgMCwgcGFydGljbGUuZGF0YS5idWZmZXIud2lkdGgsIHBhcnRpY2xlLmRhdGEuYnVmZmVyLmhlaWdodCk7XG4gICAgICBidWZDb250ZXh0Lmdsb2JhbEFscGhhID0gcGFydGljbGUuYWxwaGE7XG4gICAgICBidWZDb250ZXh0LmRyYXdJbWFnZShwYXJ0aWNsZS5ib2R5LCAwLCAwKTtcblxuICAgICAgYnVmQ29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBcInNvdXJjZS1hdG9wXCI7XG4gICAgICBidWZDb250ZXh0LmZpbGxTdHlsZSA9IENvbG9yVXRpbC5yZ2JUb0hleChwYXJ0aWNsZS5yZ2IpO1xuICAgICAgYnVmQ29udGV4dC5maWxsUmVjdCgwLCAwLCBwYXJ0aWNsZS5kYXRhLmJ1ZmZlci53aWR0aCwgcGFydGljbGUuZGF0YS5idWZmZXIuaGVpZ2h0KTtcbiAgICAgIGJ1ZkNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gXCJzb3VyY2Utb3ZlclwiO1xuICAgICAgYnVmQ29udGV4dC5nbG9iYWxBbHBoYSA9IDE7XG5cbiAgICAgIHRoaXMuY29udGV4dC5kcmF3SW1hZ2UoXG4gICAgICAgIHBhcnRpY2xlLmRhdGEuYnVmZmVyLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICBwYXJ0aWNsZS5kYXRhLmJ1ZmZlci53aWR0aCxcbiAgICAgICAgcGFydGljbGUuZGF0YS5idWZmZXIuaGVpZ2h0LFxuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB3LFxuICAgICAgICBoXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbnRleHQuc2F2ZSgpO1xuXG4gICAgICB0aGlzLmNvbnRleHQuZ2xvYmFsQWxwaGEgPSBwYXJ0aWNsZS5hbHBoYTtcbiAgICAgIHRoaXMuY29udGV4dC50cmFuc2xhdGUocGFydGljbGUucC54LCBwYXJ0aWNsZS5wLnkpO1xuICAgICAgdGhpcy5jb250ZXh0LnJvdGF0ZShNYXRoVXRpbC5kZWdyZWVUcmFuc2Zvcm0ocGFydGljbGUucm90YXRpb24pKTtcbiAgICAgIHRoaXMuY29udGV4dC50cmFuc2xhdGUoLXBhcnRpY2xlLnAueCwgLXBhcnRpY2xlLnAueSk7XG4gICAgICB0aGlzLmNvbnRleHQuZHJhd0ltYWdlKHBhcnRpY2xlLmJvZHksIDAsIDAsIHBhcnRpY2xlLmJvZHkud2lkdGgsIHBhcnRpY2xlLmJvZHkuaGVpZ2h0LCB4LCB5LCB3LCBoKTtcblxuICAgICAgdGhpcy5jb250ZXh0Lmdsb2JhbEFscGhhID0gMTtcbiAgICAgIHRoaXMuY29udGV4dC5yZXN0b3JlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gcHJpdmF0ZSBkcmF3Q2lyY2xlIC0tXG4gIGRyYXdDaXJjbGUocGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUucmdiKSB7XG4gICAgICB0aGlzLmNvbnRleHQuZmlsbFN0eWxlID0gYHJnYmEoJHtwYXJ0aWNsZS5yZ2Iucn0sJHtwYXJ0aWNsZS5yZ2IuZ30sJHtwYXJ0aWNsZS5yZ2IuYn0sJHtwYXJ0aWNsZS5hbHBoYX0pYDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250ZXh0LmZpbGxTdHlsZSA9IHBhcnRpY2xlLmNvbG9yO1xuICAgIH1cblxuICAgIC8vIGRyYXcgY2lyY2xlXG4gICAgdGhpcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgIHRoaXMuY29udGV4dC5hcmMocGFydGljbGUucC54LCBwYXJ0aWNsZS5wLnksIHBhcnRpY2xlLnJhZGl1cywgMCwgTWF0aC5QSSAqIDIsIHRydWUpO1xuXG4gICAgaWYgKHRoaXMuc3Ryb2tlKSB7XG4gICAgICB0aGlzLmNvbnRleHQuc3Ryb2tlU3R5bGUgPSB0aGlzLnN0cm9rZS5jb2xvcjtcbiAgICAgIHRoaXMuY29udGV4dC5saW5lV2lkdGggPSB0aGlzLnN0cm9rZS50aGlua25lc3M7XG4gICAgICB0aGlzLmNvbnRleHQuc3Ryb2tlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIHRoaXMuY29udGV4dC5maWxsKCk7XG4gIH1cblxuICAvLyBwcml2YXRlIGNyZWF0ZUJ1ZmZlclxuICBjcmVhdGVCdWZmZXIoaW1hZ2UpIHtcbiAgICBpZiAoVHlwZXMuaXNJbWFnZShpbWFnZSkpIHtcbiAgICAgIGNvbnN0IHNpemUgPSBpbWFnZS53aWR0aCArIFwiX1wiICsgaW1hZ2UuaGVpZ2h0O1xuICAgICAgbGV0IGNhbnZhcyA9IHRoaXMuYnVmZmVyQ2FjaGVbc2l6ZV07XG5cbiAgICAgIGlmICghY2FudmFzKSB7XG4gICAgICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgICAgIGNhbnZhcy53aWR0aCA9IGltYWdlLndpZHRoO1xuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaW1hZ2UuaGVpZ2h0O1xuICAgICAgICB0aGlzLmJ1ZmZlckNhY2hlW3NpemVdID0gY2FudmFzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2FudmFzO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgc3VwZXIuZGVzdHJveSgpO1xuICAgIHRoaXMuc3Ryb2tlID0gbnVsbDtcbiAgICB0aGlzLmNvbnRleHQgPSBudWxsO1xuICAgIHRoaXMuYnVmZmVyQ2FjaGUgPSBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQgRG9tVXRpbCBmcm9tIFwiLi4vdXRpbHMvRG9tVXRpbFwiO1xuaW1wb3J0IEltZ1V0aWwgZnJvbSBcIi4uL3V0aWxzL0ltZ1V0aWxcIjtcbmltcG9ydCBCYXNlUmVuZGVyZXIgZnJvbSBcIi4vQmFzZVJlbmRlcmVyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERvbVJlbmRlcmVyIGV4dGVuZHMgQmFzZVJlbmRlcmVyIHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCkge1xuICAgIHN1cGVyKGVsZW1lbnQpO1xuXG4gICAgdGhpcy5zdHJva2UgPSBudWxsO1xuICAgIHRoaXMudHJhbnNmb3JtM2QgPSBmYWxzZTtcbiAgICB0aGlzLnBvb2wuY3JlYXRlID0gKGJvZHksIHBhcnRpY2xlKSA9PiB0aGlzLmNyZWF0ZUJvZHkoYm9keSwgcGFydGljbGUpO1xuICAgIHRoaXMuYWRkSW1nMkJvZHkgPSB0aGlzLmFkZEltZzJCb2R5LmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLm5hbWUgPSBcIkRvbVJlbmRlcmVyXCI7XG4gIH1cblxuICBvblBhcnRpY2xlQ3JlYXRlZChwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZS5ib2R5KSB7XG4gICAgICBJbWdVdGlsLmdldEltZ0Zyb21DYWNoZShwYXJ0aWNsZS5ib2R5LCB0aGlzLmFkZEltZzJCb2R5LCBwYXJ0aWNsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRpY2xlLmJvZHkgPSB0aGlzLnBvb2wuZ2V0KHRoaXMuY2lyY2xlQ29uZiwgcGFydGljbGUpO1xuICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHBhcnRpY2xlLmJvZHkpO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFydGljbGVVcGRhdGUocGFydGljbGUpIHtcbiAgICBpZiAodGhpcy5ib2R5UmVhZHkocGFydGljbGUpKSB7XG4gICAgICBpZiAodGhpcy50cmFuc2Zvcm0zZCkge1xuICAgICAgICBEb21VdGlsLnRyYW5zZm9ybTNkKHBhcnRpY2xlLmJvZHksIHBhcnRpY2xlLnAueCwgcGFydGljbGUucC55LCBwYXJ0aWNsZS5zY2FsZSwgcGFydGljbGUucm90YXRpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgRG9tVXRpbC50cmFuc2Zvcm0ocGFydGljbGUuYm9keSwgcGFydGljbGUucC54LCBwYXJ0aWNsZS5wLnksIHBhcnRpY2xlLnNjYWxlLCBwYXJ0aWNsZS5yb3RhdGlvbik7XG4gICAgICB9XG5cbiAgICAgIHBhcnRpY2xlLmJvZHkuc3R5bGUub3BhY2l0eSA9IHBhcnRpY2xlLmFscGhhO1xuXG4gICAgICBpZiAocGFydGljbGUuYm9keS5pc0NpcmNsZSkge1xuICAgICAgICBwYXJ0aWNsZS5ib2R5LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHBhcnRpY2xlLmNvbG9yIHx8IFwiI2ZmMDAwMFwiO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7XG4gICAgaWYgKHRoaXMuYm9keVJlYWR5KHBhcnRpY2xlKSkge1xuICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHBhcnRpY2xlLmJvZHkpO1xuICAgICAgdGhpcy5wb29sLmV4cGlyZShwYXJ0aWNsZS5ib2R5KTtcbiAgICAgIHBhcnRpY2xlLmJvZHkgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGJvZHlSZWFkeShwYXJ0aWNsZSkge1xuICAgIHJldHVybiB0eXBlb2YgcGFydGljbGUuYm9keSA9PT0gXCJvYmplY3RcIiAmJiBwYXJ0aWNsZS5ib2R5ICYmICFwYXJ0aWNsZS5ib2R5LmlzSW5uZXI7XG4gIH1cblxuICAvLyBwcml2YXRlIG1ldGhvZFxuICBhZGRJbWcyQm9keShpbWcsIHBhcnRpY2xlKSB7XG4gICAgaWYgKHBhcnRpY2xlLmRlYWQpIHJldHVybjtcbiAgICBwYXJ0aWNsZS5ib2R5ID0gdGhpcy5wb29sLmdldChpbWcsIHBhcnRpY2xlKTtcbiAgICBEb21VdGlsLnJlc2l6ZShwYXJ0aWNsZS5ib2R5LCBpbWcud2lkdGgsIGltZy5oZWlnaHQpO1xuXG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHBhcnRpY2xlLmJvZHkpO1xuICB9XG5cbiAgY3JlYXRlQm9keShib2R5LCBwYXJ0aWNsZSkge1xuICAgIGlmIChib2R5LmlzQ2lyY2xlKSByZXR1cm4gdGhpcy5jcmVhdGVDaXJjbGUocGFydGljbGUpO1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZVNwcml0ZShib2R5LCBwYXJ0aWNsZSk7XG4gIH1cblxuICAvLyBwcml2YXRlIG1ldGhvZHNcbiAgY3JlYXRlQ2lyY2xlKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgZG9tID0gRG9tVXRpbC5jcmVhdGVEaXYoYCR7cGFydGljbGUuaWR9X2RvbWAsIDIgKiBwYXJ0aWNsZS5yYWRpdXMsIDIgKiBwYXJ0aWNsZS5yYWRpdXMpO1xuICAgIGRvbS5zdHlsZS5ib3JkZXJSYWRpdXMgPSBgJHtwYXJ0aWNsZS5yYWRpdXN9cHhgO1xuXG4gICAgaWYgKHRoaXMuc3Ryb2tlKSB7XG4gICAgICBkb20uc3R5bGUuYm9yZGVyQ29sb3IgPSB0aGlzLnN0cm9rZS5jb2xvcjtcbiAgICAgIGRvbS5zdHlsZS5ib3JkZXJXaWR0aCA9IGAke3RoaXMuc3Ryb2tlLnRoaW5rbmVzc31weGA7XG4gICAgfVxuICAgIGRvbS5pc0NpcmNsZSA9IHRydWU7XG5cbiAgICByZXR1cm4gZG9tO1xuICB9XG5cbiAgY3JlYXRlU3ByaXRlKGJvZHksIHBhcnRpY2xlKSB7XG4gICAgY29uc3QgdXJsID0gdHlwZW9mIGJvZHkgPT09IFwic3RyaW5nXCIgPyBib2R5IDogYm9keS5zcmM7XG4gICAgY29uc3QgZG9tID0gRG9tVXRpbC5jcmVhdGVEaXYoYCR7cGFydGljbGUuaWR9X2RvbWAsIGJvZHkud2lkdGgsIGJvZHkuaGVpZ2h0KTtcbiAgICBkb20uc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgke3VybH0pYDtcblxuICAgIHJldHVybiBkb207XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICB0aGlzLnN0cm9rZSA9IG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCBUeXBlcyBmcm9tIFwiLi4vdXRpbHMvVHlwZXNcIjtcbmltcG9ydCBCYXNlUmVuZGVyZXIgZnJvbSBcIi4vQmFzZVJlbmRlcmVyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc2VsUmVuZGVyZXIgZXh0ZW5kcyBCYXNlUmVuZGVyZXIge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBzdHJva2UpIHtcbiAgICBzdXBlcihlbGVtZW50KTtcblxuICAgIHRoaXMuc3Ryb2tlID0gc3Ryb2tlO1xuICAgIHRoaXMubmFtZSA9IFwiRWFzZWxSZW5kZXJlclwiO1xuICB9XG5cbiAgb25QYXJ0aWNsZUNyZWF0ZWQocGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUuYm9keSkge1xuICAgICAgdGhpcy5jcmVhdGVTcHJpdGUocGFydGljbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNyZWF0ZUNpcmNsZShwYXJ0aWNsZSk7XG4gICAgfVxuXG4gICAgdGhpcy5lbGVtZW50LmFkZENoaWxkKHBhcnRpY2xlLmJvZHkpO1xuICB9XG5cbiAgb25QYXJ0aWNsZVVwZGF0ZShwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZS5ib2R5KSB7XG4gICAgICBwYXJ0aWNsZS5ib2R5LnggPSBwYXJ0aWNsZS5wLng7XG4gICAgICBwYXJ0aWNsZS5ib2R5LnkgPSBwYXJ0aWNsZS5wLnk7XG5cbiAgICAgIHBhcnRpY2xlLmJvZHkuYWxwaGEgPSBwYXJ0aWNsZS5hbHBoYTtcbiAgICAgIHBhcnRpY2xlLmJvZHkuc2NhbGVYID0gcGFydGljbGUuYm9keS5zY2FsZVkgPSBwYXJ0aWNsZS5zY2FsZTtcbiAgICAgIHBhcnRpY2xlLmJvZHkucm90YXRpb24gPSBwYXJ0aWNsZS5yb3RhdGlvbjtcbiAgICB9XG4gIH1cblxuICBvblBhcnRpY2xlRGVhZChwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZS5ib2R5KSB7XG4gICAgICBwYXJ0aWNsZS5ib2R5LnBhcmVudCAmJiBwYXJ0aWNsZS5ib2R5LnBhcmVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5ib2R5KTtcbiAgICAgIHRoaXMucG9vbC5leHBpcmUocGFydGljbGUuYm9keSk7XG4gICAgICBwYXJ0aWNsZS5ib2R5ID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAocGFydGljbGUuZ3JhcGhpY3MpIHRoaXMucG9vbC5leHBpcmUocGFydGljbGUuZ3JhcGhpY3MpO1xuICB9XG5cbiAgLy8gcHJpdmF0ZVxuICBjcmVhdGVTcHJpdGUocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS5ib2R5ID0gdGhpcy5wb29sLmdldChwYXJ0aWNsZS5ib2R5KTtcblxuICAgIGlmIChwYXJ0aWNsZS5ib2R5LnBhcmVudCkgcmV0dXJuO1xuICAgIGlmIChwYXJ0aWNsZS5ib2R5W1wiaW1hZ2VcIl0pIHtcbiAgICAgIHBhcnRpY2xlLmJvZHkucmVnWCA9IHBhcnRpY2xlLmJvZHkuaW1hZ2Uud2lkdGggLyAyO1xuICAgICAgcGFydGljbGUuYm9keS5yZWdZID0gcGFydGljbGUuYm9keS5pbWFnZS5oZWlnaHQgLyAyO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUNpcmNsZShwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGdyYXBoaWNzID0gdGhpcy5wb29sLmdldChjcmVhdGVqcy5HcmFwaGljcyk7XG5cbiAgICBpZiAodGhpcy5zdHJva2UpIHtcbiAgICAgIGlmIChUeXBlcy5pc1N0cmluZyh0aGlzLnN0cm9rZSkpIHtcbiAgICAgICAgZ3JhcGhpY3MuYmVnaW5TdHJva2UodGhpcy5zdHJva2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JhcGhpY3MuYmVnaW5TdHJva2UoXCIjMDAwMDAwXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBncmFwaGljcy5iZWdpbkZpbGwocGFydGljbGUuY29sb3IgfHwgXCIjZmYwMDAwXCIpLmRyYXdDaXJjbGUoMCwgMCwgcGFydGljbGUucmFkaXVzKTtcbiAgICBjb25zdCBzaGFwZSA9IHRoaXMucG9vbC5nZXQoY3JlYXRlanMuU2hhcGUsIFtncmFwaGljc10pO1xuXG4gICAgcGFydGljbGUuYm9keSA9IHNoYXBlO1xuICAgIHBhcnRpY2xlLmdyYXBoaWNzID0gZ3JhcGhpY3M7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICB0aGlzLnN0cm9rZSA9IG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCBSZWN0YW5nbGUgZnJvbSBcIi4uL21hdGgvUmVjdGFuZ2xlXCI7XG5pbXBvcnQgQmFzZVJlbmRlcmVyIGZyb20gXCIuL0Jhc2VSZW5kZXJlclwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQaXhlbFJlbmRlcmVyIGV4dGVuZHMgQmFzZVJlbmRlcmVyIHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgcmVjdGFuZ2xlKSB7XG4gICAgc3VwZXIoZWxlbWVudCk7XG5cbiAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgIHRoaXMuaW1hZ2VEYXRhID0gbnVsbDtcbiAgICB0aGlzLnJlY3RhbmdsZSA9IHJlY3RhbmdsZTtcbiAgICB0aGlzLmNyZWF0ZUltYWdlRGF0YShyZWN0YW5nbGUpO1xuXG4gICAgdGhpcy5uYW1lID0gXCJQaXhlbFJlbmRlcmVyXCI7XG4gIH1cblxuICByZXNpemUod2lkdGgsIGhlaWdodCkge1xuICAgIHRoaXMuZWxlbWVudC53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuZWxlbWVudC5oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cblxuICBjcmVhdGVJbWFnZURhdGEocmVjdGFuZ2xlKSB7XG4gICAgdGhpcy5yZWN0YW5nbGUgPSByZWN0YW5nbGUgPyByZWN0YW5nbGUgOiBuZXcgUmVjdGFuZ2xlKDAsIDAsIHRoaXMuZWxlbWVudC53aWR0aCwgdGhpcy5lbGVtZW50LmhlaWdodCk7XG4gICAgdGhpcy5pbWFnZURhdGEgPSB0aGlzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHRoaXMucmVjdGFuZ2xlLndpZHRoLCB0aGlzLnJlY3RhbmdsZS5oZWlnaHQpO1xuICAgIHRoaXMuY29udGV4dC5wdXRJbWFnZURhdGEodGhpcy5pbWFnZURhdGEsIHRoaXMucmVjdGFuZ2xlLngsIHRoaXMucmVjdGFuZ2xlLnkpO1xuICB9XG5cbiAgb25Qcm90b25VcGRhdGUoKSB7XG4gICAgdGhpcy5jb250ZXh0LmNsZWFyUmVjdCh0aGlzLnJlY3RhbmdsZS54LCB0aGlzLnJlY3RhbmdsZS55LCB0aGlzLnJlY3RhbmdsZS53aWR0aCwgdGhpcy5yZWN0YW5nbGUuaGVpZ2h0KTtcbiAgICB0aGlzLmltYWdlRGF0YSA9IHRoaXMuY29udGV4dC5nZXRJbWFnZURhdGEoXG4gICAgICB0aGlzLnJlY3RhbmdsZS54LFxuICAgICAgdGhpcy5yZWN0YW5nbGUueSxcbiAgICAgIHRoaXMucmVjdGFuZ2xlLndpZHRoLFxuICAgICAgdGhpcy5yZWN0YW5nbGUuaGVpZ2h0XG4gICAgKTtcbiAgfVxuXG4gIG9uUHJvdG9uVXBkYXRlQWZ0ZXIoKSB7XG4gICAgdGhpcy5jb250ZXh0LnB1dEltYWdlRGF0YSh0aGlzLmltYWdlRGF0YSwgdGhpcy5yZWN0YW5nbGUueCwgdGhpcy5yZWN0YW5nbGUueSk7XG4gIH1cblxuICBvblBhcnRpY2xlQ3JlYXRlZChwYXJ0aWNsZSkge31cblxuICBvblBhcnRpY2xlVXBkYXRlKHBhcnRpY2xlKSB7XG4gICAgaWYgKHRoaXMuaW1hZ2VEYXRhKSB7XG4gICAgICB0aGlzLnNldFBpeGVsKFxuICAgICAgICB0aGlzLmltYWdlRGF0YSxcbiAgICAgICAgKHBhcnRpY2xlLnAueCAtIHRoaXMucmVjdGFuZ2xlLngpID4+IDAsXG4gICAgICAgIChwYXJ0aWNsZS5wLnkgLSB0aGlzLnJlY3RhbmdsZS55KSA+PiAwLFxuICAgICAgICBwYXJ0aWNsZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBzZXRQaXhlbChpbWFnZWRhdGEsIHgsIHksIHBhcnRpY2xlKSB7XG4gICAgY29uc3QgcmdiID0gcGFydGljbGUucmdiO1xuICAgIGlmICh4IDwgMCB8fCB4ID4gdGhpcy5lbGVtZW50LndpZHRoIHx8IHkgPCAwIHx8IHkgPiB0aGlzLmVsZW1lbnR3aWR0aCkgcmV0dXJuO1xuXG4gICAgY29uc3QgaSA9ICgoeSA+PiAwKSAqIGltYWdlZGF0YS53aWR0aCArICh4ID4+IDApKSAqIDQ7XG4gICAgaW1hZ2VkYXRhLmRhdGFbaV0gPSByZ2IucjtcbiAgICBpbWFnZWRhdGEuZGF0YVtpICsgMV0gPSByZ2IuZztcbiAgICBpbWFnZWRhdGEuZGF0YVtpICsgMl0gPSByZ2IuYjtcbiAgICBpbWFnZWRhdGEuZGF0YVtpICsgM10gPSBwYXJ0aWNsZS5hbHBoYSAqIDI1NTtcbiAgfVxuXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7fVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgc3VwZXIuZGVzdHJveSgpO1xuICAgIHRoaXMuc3Ryb2tlID0gbnVsbDtcbiAgICB0aGlzLmNvbnRleHQgPSBudWxsO1xuICAgIHRoaXMuaW1hZ2VEYXRhID0gbnVsbDtcbiAgICB0aGlzLnJlY3RhbmdsZSA9IG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCBUeXBlcyBmcm9tIFwiLi4vdXRpbHMvVHlwZXNcIjtcbmltcG9ydCBDb2xvclV0aWwgZnJvbSBcIi4uL3V0aWxzL0NvbG9yVXRpbFwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuLi9tYXRoL01hdGhVdGlsXCI7XG5pbXBvcnQgQmFzZVJlbmRlcmVyIGZyb20gXCIuL0Jhc2VSZW5kZXJlclwiO1xuXG5sZXQgUElYSUNsYXNzO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGl4aVJlbmRlcmVyIGV4dGVuZHMgQmFzZVJlbmRlcmVyIHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgc3Ryb2tlKSB7XG4gICAgc3VwZXIoZWxlbWVudCk7XG5cbiAgICB0aGlzLnN0cm9rZSA9IHN0cm9rZTtcbiAgICB0aGlzLmNvbG9yID0gZmFsc2U7XG4gICAgdGhpcy5zZXRDb2xvciA9IGZhbHNlO1xuICAgIHRoaXMuYmxlbmRNb2RlID0gbnVsbDtcbiAgICB0aGlzLnBvb2wuY3JlYXRlID0gKGJvZHksIHBhcnRpY2xlKSA9PiB0aGlzLmNyZWF0ZUJvZHkoYm9keSwgcGFydGljbGUpO1xuICAgIHRoaXMuc2V0UElYSSh3aW5kb3cuUElYSSk7XG5cbiAgICB0aGlzLm5hbWUgPSBcIlBpeGlSZW5kZXJlclwiO1xuICB9XG5cbiAgc2V0UElYSShQSVhJKSB7XG4gICAgdHJ5IHtcbiAgICAgIFBJWElDbGFzcyA9IFBJWEkgfHwgeyBTcHJpdGU6IHt9IH07XG4gICAgICB0aGlzLmNyZWF0ZUZyb21JbWFnZSA9IFBJWElDbGFzcy5TcHJpdGUuZnJvbSB8fCBQSVhJQ2xhc3MuU3ByaXRlLmZyb21JbWFnZTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG5cbiAgb25Qcm90b25VcGRhdGUoKSB7fVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcGFydGljbGVcbiAgICovXG4gIG9uUGFydGljbGVDcmVhdGVkKHBhcnRpY2xlKSB7XG4gICAgaWYgKHBhcnRpY2xlLmJvZHkpIHtcbiAgICAgIHBhcnRpY2xlLmJvZHkgPSB0aGlzLnBvb2wuZ2V0KHBhcnRpY2xlLmJvZHksIHBhcnRpY2xlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydGljbGUuYm9keSA9IHRoaXMucG9vbC5nZXQodGhpcy5jaXJjbGVDb25mLCBwYXJ0aWNsZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYmxlbmRNb2RlKSB7XG4gICAgICBwYXJ0aWNsZS5ib2R5LmJsZW5kTW9kZSA9IHRoaXMuYmxlbmRNb2RlO1xuICAgIH1cblxuICAgIHRoaXMuZWxlbWVudC5hZGRDaGlsZChwYXJ0aWNsZS5ib2R5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcGFydGljbGVcbiAgICovXG4gIG9uUGFydGljbGVVcGRhdGUocGFydGljbGUpIHtcbiAgICB0aGlzLnRyYW5zZm9ybShwYXJ0aWNsZSwgcGFydGljbGUuYm9keSk7XG5cbiAgICBpZiAodGhpcy5zZXRDb2xvciA9PT0gdHJ1ZSB8fCB0aGlzLmNvbG9yID09PSB0cnVlKSB7XG4gICAgICBwYXJ0aWNsZS5ib2R5LnRpbnQgPSBDb2xvclV0aWwuZ2V0SGV4MTZGcm9tUGFydGljbGUocGFydGljbGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcGFydGljbGVcbiAgICovXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7XG4gICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHBhcnRpY2xlLmJvZHkpO1xuICAgIHRoaXMucG9vbC5leHBpcmUocGFydGljbGUuYm9keSk7XG4gICAgcGFydGljbGUuYm9keSA9IG51bGw7XG4gIH1cblxuICB0cmFuc2Zvcm0ocGFydGljbGUsIHRhcmdldCkge1xuICAgIHRhcmdldC54ID0gcGFydGljbGUucC54O1xuICAgIHRhcmdldC55ID0gcGFydGljbGUucC55O1xuXG4gICAgdGFyZ2V0LmFscGhhID0gcGFydGljbGUuYWxwaGE7XG5cbiAgICB0YXJnZXQuc2NhbGUueCA9IHBhcnRpY2xlLnNjYWxlO1xuICAgIHRhcmdldC5zY2FsZS55ID0gcGFydGljbGUuc2NhbGU7XG5cbiAgICAvLyB1c2luZyBjYWNoZWQgdmVyc2lvbiBvZiBNYXRoVXRpbC5QSV8xODAgZm9yIHNsaWdodCBwZXJmb3JtYW5jZSBpbmNyZWFzZS5cbiAgICB0YXJnZXQucm90YXRpb24gPSBwYXJ0aWNsZS5yb3RhdGlvbiAqIE1hdGhVdGlsLlBJXzE4MDsgLy8gTWF0aFV0aWwuUElfMTgwO1xuICB9XG5cbiAgY3JlYXRlQm9keShib2R5LCBwYXJ0aWNsZSkge1xuICAgIGlmIChib2R5LmlzQ2lyY2xlKSByZXR1cm4gdGhpcy5jcmVhdGVDaXJjbGUocGFydGljbGUpO1xuICAgIGVsc2UgcmV0dXJuIHRoaXMuY3JlYXRlU3ByaXRlKGJvZHkpO1xuICB9XG5cbiAgY3JlYXRlU3ByaXRlKGJvZHkpIHtcbiAgICBjb25zdCBzcHJpdGUgPSBib2R5LmlzSW5uZXIgPyB0aGlzLmNyZWF0ZUZyb21JbWFnZShib2R5LnNyYykgOiBuZXcgUElYSUNsYXNzLlNwcml0ZShib2R5KTtcblxuICAgIHNwcml0ZS5hbmNob3IueCA9IDAuNTtcbiAgICBzcHJpdGUuYW5jaG9yLnkgPSAwLjU7XG5cbiAgICByZXR1cm4gc3ByaXRlO1xuICB9XG5cbiAgY3JlYXRlQ2lyY2xlKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgZ3JhcGhpY3MgPSBuZXcgUElYSUNsYXNzLkdyYXBoaWNzKCk7XG5cbiAgICBpZiAodGhpcy5zdHJva2UpIHtcbiAgICAgIGNvbnN0IHN0cm9rZSA9IFR5cGVzLmlzU3RyaW5nKHRoaXMuc3Ryb2tlKSA/IHRoaXMuc3Ryb2tlIDogMHgwMDAwMDA7XG4gICAgICBncmFwaGljcy5iZWdpblN0cm9rZShzdHJva2UpO1xuICAgIH1cblxuICAgIGdyYXBoaWNzLmJlZ2luRmlsbChwYXJ0aWNsZS5jb2xvciB8fCAweDAwOGNlZCk7XG4gICAgZ3JhcGhpY3MuZHJhd0NpcmNsZSgwLCAwLCBwYXJ0aWNsZS5yYWRpdXMpO1xuICAgIGdyYXBoaWNzLmVuZEZpbGwoKTtcblxuICAgIHJldHVybiBncmFwaGljcztcbiAgfVxuXG4gIGRlc3Ryb3kocGFydGljbGVzKSB7XG4gICAgc3VwZXIuZGVzdHJveSgpO1xuXG4gICAgbGV0IGkgPSBwYXJ0aWNsZXMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIGxldCBwYXJ0aWNsZSA9IHBhcnRpY2xlc1tpXTtcbiAgICAgIGlmIChwYXJ0aWNsZS5ib2R5KSB7XG4gICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5ib2R5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBNYXQzIGZyb20gXCIuLi9tYXRoL01hdDNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTVN0YWNrIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5tYXRzID0gW107XG4gICAgdGhpcy5zaXplID0gMDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykgdGhpcy5tYXRzLnB1c2goTWF0My5jcmVhdGUoWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdKSk7XG4gIH1cblxuICBzZXQobSwgaSkge1xuICAgIGlmIChpID09PSAwKSBNYXQzLnNldChtLCB0aGlzLm1hdHNbMF0pO1xuICAgIGVsc2UgTWF0My5tdWx0aXBseSh0aGlzLm1hdHNbaSAtIDFdLCBtLCB0aGlzLm1hdHNbaV0pO1xuXG4gICAgdGhpcy5zaXplID0gTWF0aC5tYXgodGhpcy5zaXplLCBpICsgMSk7XG4gIH1cblxuICBwdXNoKG0pIHtcbiAgICBpZiAodGhpcy5zaXplID09PSAwKSBNYXQzLnNldChtLCB0aGlzLm1hdHNbMF0pO1xuICAgIGVsc2UgTWF0My5tdWx0aXBseSh0aGlzLm1hdHNbdGhpcy5zaXplIC0gMV0sIG0sIHRoaXMubWF0c1t0aGlzLnNpemVdKTtcblxuICAgIHRoaXMuc2l6ZSsrO1xuICB9XG5cbiAgcG9wKCkge1xuICAgIGlmICh0aGlzLnNpemUgPiAwKSB0aGlzLnNpemUtLTtcbiAgfVxuXG4gIHRvcCgpIHtcbiAgICByZXR1cm4gdGhpcy5tYXRzW3RoaXMuc2l6ZSAtIDFdO1xuICB9XG59XG4iLCJpbXBvcnQgTWF0MyBmcm9tIFwiLi4vbWF0aC9NYXQzXCI7XG5pbXBvcnQgQmFzZVJlbmRlcmVyIGZyb20gXCIuL0Jhc2VSZW5kZXJlclwiO1xuXG5pbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IEltZ1V0aWwgZnJvbSBcIi4uL3V0aWxzL0ltZ1V0aWxcIjtcbmltcG9ydCBNU3RhY2sgZnJvbSBcIi4uL3V0aWxzL01TdGFja1wiO1xuaW1wb3J0IERvbVV0aWwgZnJvbSBcIi4uL3V0aWxzL0RvbVV0aWxcIjtcbmltcG9ydCBXZWJHTFV0aWwgZnJvbSBcIi4uL3V0aWxzL1dlYkdMVXRpbFwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuLi9tYXRoL01hdGhVdGlsXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdlYkdMUmVuZGVyZXIgZXh0ZW5kcyBCYXNlUmVuZGVyZXIge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50KSB7XG4gICAgc3VwZXIoZWxlbWVudCk7XG5cbiAgICB0aGlzLmdsID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoXCJleHBlcmltZW50YWwtd2ViZ2xcIiwgeyBhbnRpYWxpYXM6IHRydWUsIHN0ZW5jaWw6IGZhbHNlLCBkZXB0aDogZmFsc2UgfSk7XG4gICAgaWYgKCF0aGlzLmdsKSBhbGVydChcIlNvcnJ5IHlvdXIgYnJvd3NlciBkbyBub3Qgc3VwcGVzdCBXZWJHTCFcIik7XG5cbiAgICB0aGlzLmluaXRWYXIoKTtcbiAgICB0aGlzLnNldE1heFJhZGl1cygpO1xuICAgIHRoaXMuaW5pdFNoYWRlcnMoKTtcbiAgICB0aGlzLmluaXRCdWZmZXJzKCk7XG5cbiAgICB0aGlzLmdsLmJsZW5kRXF1YXRpb24odGhpcy5nbC5GVU5DX0FERCk7XG4gICAgdGhpcy5nbC5ibGVuZEZ1bmModGhpcy5nbC5TUkNfQUxQSEEsIHRoaXMuZ2wuT05FX01JTlVTX1NSQ19BTFBIQSk7XG4gICAgdGhpcy5nbC5lbmFibGUodGhpcy5nbC5CTEVORCk7XG4gICAgdGhpcy5hZGRJbWcyQm9keSA9IHRoaXMuYWRkSW1nMkJvZHkuYmluZCh0aGlzKTtcblxuICAgIHRoaXMubmFtZSA9IFwiV2ViR0xSZW5kZXJlclwiO1xuICB9XG5cbiAgaW5pdChwcm90b24pIHtcbiAgICBzdXBlci5pbml0KHByb3Rvbik7XG4gICAgdGhpcy5yZXNpemUodGhpcy5lbGVtZW50LndpZHRoLCB0aGlzLmVsZW1lbnQuaGVpZ2h0KTtcbiAgfVxuXG4gIHJlc2l6ZSh3aWR0aCwgaGVpZ2h0KSB7XG4gICAgdGhpcy51bWF0WzRdID0gLTI7XG4gICAgdGhpcy51bWF0WzddID0gMTtcblxuICAgIHRoaXMuc21hdFswXSA9IDEgLyB3aWR0aDtcbiAgICB0aGlzLnNtYXRbNF0gPSAxIC8gaGVpZ2h0O1xuXG4gICAgdGhpcy5tc3RhY2suc2V0KHRoaXMudW1hdCwgMCk7XG4gICAgdGhpcy5tc3RhY2suc2V0KHRoaXMuc21hdCwgMSk7XG5cbiAgICB0aGlzLmdsLnZpZXdwb3J0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgIHRoaXMuZWxlbWVudC53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuZWxlbWVudC5oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cblxuICBzZXRNYXhSYWRpdXMocmFkaXVzKSB7XG4gICAgdGhpcy5jaXJjbGVDYW52YXNVUkwgPSB0aGlzLmNyZWF0ZUNpcmNsZShyYWRpdXMpO1xuICB9XG5cbiAgZ2V0VmVydGV4U2hhZGVyKCkge1xuICAgIGNvbnN0IHZzU291cmNlID0gW1xuICAgICAgXCJ1bmlmb3JtIHZlYzIgdmlld3BvcnQ7XCIsXG4gICAgICBcImF0dHJpYnV0ZSB2ZWMyIGFWZXJ0ZXhQb3NpdGlvbjtcIixcbiAgICAgIFwiYXR0cmlidXRlIHZlYzIgYVRleHR1cmVDb29yZDtcIixcbiAgICAgIFwidW5pZm9ybSBtYXQzIHRNYXQ7XCIsXG4gICAgICBcInZhcnlpbmcgdmVjMiB2VGV4dHVyZUNvb3JkO1wiLFxuICAgICAgXCJ2YXJ5aW5nIGZsb2F0IGFscGhhO1wiLFxuICAgICAgXCJ2b2lkIG1haW4oKSB7XCIsXG4gICAgICBcInZlYzMgdiA9IHRNYXQgKiB2ZWMzKGFWZXJ0ZXhQb3NpdGlvbiwgMS4wKTtcIixcbiAgICAgIFwiZ2xfUG9zaXRpb24gPSB2ZWM0KHYueCwgdi55LCAwLCAxKTtcIixcbiAgICAgIFwidlRleHR1cmVDb29yZCA9IGFUZXh0dXJlQ29vcmQ7XCIsXG4gICAgICBcImFscGhhID0gdE1hdFswXVsyXTtcIixcbiAgICAgIFwifVwiXG4gICAgXS5qb2luKFwiXFxuXCIpO1xuICAgIHJldHVybiB2c1NvdXJjZTtcbiAgfVxuXG4gIGdldEZyYWdtZW50U2hhZGVyKCkge1xuICAgIGNvbnN0IGZzU291cmNlID0gW1xuICAgICAgXCJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcIixcbiAgICAgIFwidmFyeWluZyB2ZWMyIHZUZXh0dXJlQ29vcmQ7XCIsXG4gICAgICBcInZhcnlpbmcgZmxvYXQgYWxwaGE7XCIsXG4gICAgICBcInVuaWZvcm0gc2FtcGxlcjJEIHVTYW1wbGVyO1wiLFxuICAgICAgXCJ1bmlmb3JtIHZlYzQgY29sb3I7XCIsXG4gICAgICBcInVuaWZvcm0gYm9vbCB1c2VUZXh0dXJlO1wiLFxuICAgICAgXCJ1bmlmb3JtIHZlYzMgdUNvbG9yO1wiLFxuICAgICAgXCJ2b2lkIG1haW4oKSB7XCIsXG4gICAgICBcInZlYzQgdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVTYW1wbGVyLCB2VGV4dHVyZUNvb3JkKTtcIixcbiAgICAgIFwiZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZUNvbG9yICogdmVjNCh1Q29sb3IsIDEuMCk7XCIsXG4gICAgICBcImdsX0ZyYWdDb2xvci53ICo9IGFscGhhO1wiLFxuICAgICAgXCJ9XCJcbiAgICBdLmpvaW4oXCJcXG5cIik7XG4gICAgcmV0dXJuIGZzU291cmNlO1xuICB9XG5cbiAgaW5pdFZhcigpIHtcbiAgICB0aGlzLm1zdGFjayA9IG5ldyBNU3RhY2soKTtcbiAgICB0aGlzLnVtYXQgPSBNYXQzLmNyZWF0ZShbMiwgMCwgMSwgMCwgLTIsIDAsIC0xLCAxLCAxXSk7XG4gICAgdGhpcy5zbWF0ID0gTWF0My5jcmVhdGUoWzEgLyAxMDAsIDAsIDEsIDAsIDEgLyAxMDAsIDAsIDAsIDAsIDFdKTtcbiAgICB0aGlzLnRleHR1cmVidWZmZXJzID0ge307XG4gIH1cblxuICBibGVuZEVxdWF0aW9uKEEpIHtcbiAgICB0aGlzLmdsLmJsZW5kRXF1YXRpb24odGhpcy5nbFtBXSk7XG4gIH1cblxuICBibGVuZEZ1bmMoQSwgQikge1xuICAgIHRoaXMuZ2wuYmxlbmRGdW5jKHRoaXMuZ2xbQV0sIHRoaXMuZ2xbQl0pO1xuICB9XG5cbiAgZ2V0U2hhZGVyKGdsLCBzdHIsIGZzKSB7XG4gICAgY29uc3Qgc2hhZGVyID0gZnMgPyBnbC5jcmVhdGVTaGFkZXIoZ2wuRlJBR01FTlRfU0hBREVSKSA6IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTtcblxuICAgIGdsLnNoYWRlclNvdXJjZShzaGFkZXIsIHN0cik7XG4gICAgZ2wuY29tcGlsZVNoYWRlcihzaGFkZXIpO1xuXG4gICAgaWYgKCFnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBnbC5DT01QSUxFX1NUQVRVUykpIHtcbiAgICAgIGFsZXJ0KGdsLmdldFNoYWRlckluZm9Mb2coc2hhZGVyKSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gc2hhZGVyO1xuICB9XG5cbiAgaW5pdFNoYWRlcnMoKSB7XG4gICAgY29uc3QgZnJhZ21lbnRTaGFkZXIgPSB0aGlzLmdldFNoYWRlcih0aGlzLmdsLCB0aGlzLmdldEZyYWdtZW50U2hhZGVyKCksIHRydWUpO1xuICAgIGNvbnN0IHZlcnRleFNoYWRlciA9IHRoaXMuZ2V0U2hhZGVyKHRoaXMuZ2wsIHRoaXMuZ2V0VmVydGV4U2hhZGVyKCksIGZhbHNlKTtcblxuICAgIHRoaXMuc3Byb2dyYW0gPSB0aGlzLmdsLmNyZWF0ZVByb2dyYW0oKTtcbiAgICB0aGlzLmdsLmF0dGFjaFNoYWRlcih0aGlzLnNwcm9ncmFtLCB2ZXJ0ZXhTaGFkZXIpO1xuICAgIHRoaXMuZ2wuYXR0YWNoU2hhZGVyKHRoaXMuc3Byb2dyYW0sIGZyYWdtZW50U2hhZGVyKTtcbiAgICB0aGlzLmdsLmxpbmtQcm9ncmFtKHRoaXMuc3Byb2dyYW0pO1xuXG4gICAgaWYgKCF0aGlzLmdsLmdldFByb2dyYW1QYXJhbWV0ZXIodGhpcy5zcHJvZ3JhbSwgdGhpcy5nbC5MSU5LX1NUQVRVUykpIGFsZXJ0KFwiQ291bGQgbm90IGluaXRpYWxpc2Ugc2hhZGVyc1wiKTtcblxuICAgIHRoaXMuZ2wudXNlUHJvZ3JhbSh0aGlzLnNwcm9ncmFtKTtcbiAgICB0aGlzLnNwcm9ncmFtLnZwYSA9IHRoaXMuZ2wuZ2V0QXR0cmliTG9jYXRpb24odGhpcy5zcHJvZ3JhbSwgXCJhVmVydGV4UG9zaXRpb25cIik7XG4gICAgdGhpcy5zcHJvZ3JhbS50Y2EgPSB0aGlzLmdsLmdldEF0dHJpYkxvY2F0aW9uKHRoaXMuc3Byb2dyYW0sIFwiYVRleHR1cmVDb29yZFwiKTtcbiAgICB0aGlzLmdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHRoaXMuc3Byb2dyYW0udGNhKTtcbiAgICB0aGlzLmdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHRoaXMuc3Byb2dyYW0udnBhKTtcblxuICAgIHRoaXMuc3Byb2dyYW0udE1hdFVuaWZvcm0gPSB0aGlzLmdsLmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnNwcm9ncmFtLCBcInRNYXRcIik7XG4gICAgdGhpcy5zcHJvZ3JhbS5zYW1wbGVyVW5pZm9ybSA9IHRoaXMuZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMuc3Byb2dyYW0sIFwidVNhbXBsZXJcIik7XG4gICAgdGhpcy5zcHJvZ3JhbS51c2VUZXggPSB0aGlzLmdsLmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnNwcm9ncmFtLCBcInVzZVRleHR1cmVcIik7XG4gICAgdGhpcy5zcHJvZ3JhbS5jb2xvciA9IHRoaXMuZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMuc3Byb2dyYW0sIFwidUNvbG9yXCIpO1xuICAgIHRoaXMuZ2wudW5pZm9ybTFpKHRoaXMuc3Byb2dyYW0udXNlVGV4LCAxKTtcbiAgfVxuXG4gIGluaXRCdWZmZXJzKCkge1xuICAgIGNvbnN0IHZzID0gWzAsIDMsIDEsIDAsIDIsIDNdO1xuICAgIGxldCBpZHg7XG5cbiAgICB0aGlzLnVuaXRJQnVmZmVyID0gdGhpcy5nbC5jcmVhdGVCdWZmZXIoKTtcbiAgICB0aGlzLmdsLmJpbmRCdWZmZXIodGhpcy5nbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgdGhpcy51bml0SUJ1ZmZlcik7XG4gICAgdGhpcy5nbC5idWZmZXJEYXRhKHRoaXMuZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50MTZBcnJheSh2cyksIHRoaXMuZ2wuU1RBVElDX0RSQVcpO1xuXG4gICAgbGV0IGk7XG4gICAgbGV0IGlkcyA9IFtdO1xuICAgIGZvciAoaSA9IDA7IGkgPCAxMDA7IGkrKykgaWRzLnB1c2goaSk7XG4gICAgaWR4ID0gbmV3IFVpbnQxNkFycmF5KGlkcyk7XG5cbiAgICB0aGlzLnVuaXRJMzMgPSB0aGlzLmdsLmNyZWF0ZUJ1ZmZlcigpO1xuICAgIHRoaXMuZ2wuYmluZEJ1ZmZlcih0aGlzLmdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCB0aGlzLnVuaXRJMzMpO1xuICAgIHRoaXMuZ2wuYnVmZmVyRGF0YSh0aGlzLmdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpZHgsIHRoaXMuZ2wuU1RBVElDX0RSQVcpO1xuXG4gICAgaWRzID0gW107XG4gICAgZm9yIChpID0gMDsgaSA8IDEwMDsgaSsrKSBpZHMucHVzaChpLCBpICsgMSwgaSArIDIpO1xuICAgIGlkeCA9IG5ldyBVaW50MTZBcnJheShpZHMpO1xuXG4gICAgdGhpcy5zdHJpcEJ1ZmZlciA9IHRoaXMuZ2wuY3JlYXRlQnVmZmVyKCk7XG4gICAgdGhpcy5nbC5iaW5kQnVmZmVyKHRoaXMuZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHRoaXMuc3RyaXBCdWZmZXIpO1xuICAgIHRoaXMuZ2wuYnVmZmVyRGF0YSh0aGlzLmdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpZHgsIHRoaXMuZ2wuU1RBVElDX0RSQVcpO1xuICB9XG5cbiAgY3JlYXRlQ2lyY2xlKHJhaWR1cykge1xuICAgIHRoaXMuY2lyY2xlQ2FudmFzUmFkaXVzID0gV2ViR0xVdGlsLm5ocG90KFV0aWwuaW5pdFZhbHVlKHJhaWR1cywgMzIpKTtcbiAgICBjb25zdCBjYW52YXMgPSBEb21VdGlsLmNyZWF0ZUNhbnZhcyhcImNpcmNsZV9jYW52YXNcIiwgdGhpcy5jaXJjbGVDYW52YXNSYWRpdXMgKiAyLCB0aGlzLmNpcmNsZUNhbnZhc1JhZGl1cyAqIDIpO1xuICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICBjb250ZXh0LmFyYyh0aGlzLmNpcmNsZUNhbnZhc1JhZGl1cywgdGhpcy5jaXJjbGVDYW52YXNSYWRpdXMsIHRoaXMuY2lyY2xlQ2FudmFzUmFkaXVzLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7XG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICBjb250ZXh0LmZpbGxTdHlsZSA9IFwiI0ZGRlwiO1xuICAgIGNvbnRleHQuZmlsbCgpO1xuXG4gICAgcmV0dXJuIGNhbnZhcy50b0RhdGFVUkwoKTtcbiAgfVxuXG4gIGRyYXdJbWcyQ2FudmFzKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgX3cgPSBwYXJ0aWNsZS5ib2R5LndpZHRoO1xuICAgIGNvbnN0IF9oID0gcGFydGljbGUuYm9keS5oZWlnaHQ7XG5cbiAgICBjb25zdCBfd2lkdGggPSBXZWJHTFV0aWwubmhwb3QocGFydGljbGUuYm9keS53aWR0aCk7XG4gICAgY29uc3QgX2hlaWdodCA9IFdlYkdMVXRpbC5uaHBvdChwYXJ0aWNsZS5ib2R5LmhlaWdodCk7XG5cbiAgICBjb25zdCBfc2NhbGVYID0gcGFydGljbGUuYm9keS53aWR0aCAvIF93aWR0aDtcbiAgICBjb25zdCBfc2NhbGVZID0gcGFydGljbGUuYm9keS5oZWlnaHQgLyBfaGVpZ2h0O1xuXG4gICAgaWYgKCF0aGlzLnRleHR1cmVidWZmZXJzW3BhcnRpY2xlLmRhdGEuc3JjXSlcbiAgICAgIHRoaXMudGV4dHVyZWJ1ZmZlcnNbcGFydGljbGUuZGF0YS5zcmNdID0gW1xuICAgICAgICB0aGlzLmdsLmNyZWF0ZVRleHR1cmUoKSxcbiAgICAgICAgdGhpcy5nbC5jcmVhdGVCdWZmZXIoKSxcbiAgICAgICAgdGhpcy5nbC5jcmVhdGVCdWZmZXIoKVxuICAgICAgXTtcblxuICAgIHBhcnRpY2xlLmRhdGEudGV4dHVyZSA9IHRoaXMudGV4dHVyZWJ1ZmZlcnNbcGFydGljbGUuZGF0YS5zcmNdWzBdO1xuICAgIHBhcnRpY2xlLmRhdGEudmNCdWZmZXIgPSB0aGlzLnRleHR1cmVidWZmZXJzW3BhcnRpY2xlLmRhdGEuc3JjXVsxXTtcbiAgICBwYXJ0aWNsZS5kYXRhLnRjQnVmZmVyID0gdGhpcy50ZXh0dXJlYnVmZmVyc1twYXJ0aWNsZS5kYXRhLnNyY11bMl07XG5cbiAgICB0aGlzLmdsLmJpbmRCdWZmZXIodGhpcy5nbC5BUlJBWV9CVUZGRVIsIHBhcnRpY2xlLmRhdGEudGNCdWZmZXIpO1xuICAgIHRoaXMuZ2wuYnVmZmVyRGF0YShcbiAgICAgIHRoaXMuZ2wuQVJSQVlfQlVGRkVSLFxuICAgICAgbmV3IEZsb2F0MzJBcnJheShbMC4wLCAwLjAsIF9zY2FsZVgsIDAuMCwgMC4wLCBfc2NhbGVZLCBfc2NhbGVZLCBfc2NhbGVZXSksXG4gICAgICB0aGlzLmdsLlNUQVRJQ19EUkFXXG4gICAgKTtcbiAgICB0aGlzLmdsLmJpbmRCdWZmZXIodGhpcy5nbC5BUlJBWV9CVUZGRVIsIHBhcnRpY2xlLmRhdGEudmNCdWZmZXIpO1xuICAgIHRoaXMuZ2wuYnVmZmVyRGF0YShcbiAgICAgIHRoaXMuZ2wuQVJSQVlfQlVGRkVSLFxuICAgICAgbmV3IEZsb2F0MzJBcnJheShbMC4wLCAwLjAsIF93LCAwLjAsIDAuMCwgX2gsIF93LCBfaF0pLFxuICAgICAgdGhpcy5nbC5TVEFUSUNfRFJBV1xuICAgICk7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gcGFydGljbGUuZGF0YS5jYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgIGNvbnN0IGRhdGEgPSBjb250ZXh0LmdldEltYWdlRGF0YSgwLCAwLCBfd2lkdGgsIF9oZWlnaHQpO1xuXG4gICAgdGhpcy5nbC5iaW5kVGV4dHVyZSh0aGlzLmdsLlRFWFRVUkVfMkQsIHBhcnRpY2xlLmRhdGEudGV4dHVyZSk7XG4gICAgdGhpcy5nbC50ZXhJbWFnZTJEKHRoaXMuZ2wuVEVYVFVSRV8yRCwgMCwgdGhpcy5nbC5SR0JBLCB0aGlzLmdsLlJHQkEsIHRoaXMuZ2wuVU5TSUdORURfQllURSwgZGF0YSk7XG4gICAgdGhpcy5nbC50ZXhQYXJhbWV0ZXJpKHRoaXMuZ2wuVEVYVFVSRV8yRCwgdGhpcy5nbC5URVhUVVJFX01BR19GSUxURVIsIHRoaXMuZ2wuTElORUFSKTtcbiAgICB0aGlzLmdsLnRleFBhcmFtZXRlcmkodGhpcy5nbC5URVhUVVJFXzJELCB0aGlzLmdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgdGhpcy5nbC5MSU5FQVJfTUlQTUFQX05FQVJFU1QpO1xuICAgIHRoaXMuZ2wuZ2VuZXJhdGVNaXBtYXAodGhpcy5nbC5URVhUVVJFXzJEKTtcblxuICAgIHBhcnRpY2xlLmRhdGEudGV4dHVyZUxvYWRlZCA9IHRydWU7XG4gICAgcGFydGljbGUuZGF0YS50ZXh0dXJlV2lkdGggPSBfdztcbiAgICBwYXJ0aWNsZS5kYXRhLnRleHR1cmVIZWlnaHQgPSBfaDtcbiAgfVxuXG4gIG9uUHJvdG9uVXBkYXRlKCkge1xuICAgIC8vIHRoaXMuZ2wuY2xlYXJDb2xvcigwLCAwLCAwLCAxKTtcbiAgICAvLyB0aGlzLmdsLmNsZWFyKHRoaXMuZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IHRoaXMuZ2wuREVQVEhfQlVGRkVSX0JJVCk7XG4gIH1cblxuICBvblBhcnRpY2xlQ3JlYXRlZChwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLmRhdGEudGV4dHVyZUxvYWRlZCA9IGZhbHNlO1xuICAgIHBhcnRpY2xlLmRhdGEudG1hdCA9IE1hdDMuY3JlYXRlKCk7XG4gICAgcGFydGljbGUuZGF0YS50bWF0WzhdID0gMTtcbiAgICBwYXJ0aWNsZS5kYXRhLmltYXQgPSBNYXQzLmNyZWF0ZSgpO1xuICAgIHBhcnRpY2xlLmRhdGEuaW1hdFs4XSA9IDE7XG5cbiAgICBpZiAocGFydGljbGUuYm9keSkge1xuICAgICAgSW1nVXRpbC5nZXRJbWdGcm9tQ2FjaGUocGFydGljbGUuYm9keSwgdGhpcy5hZGRJbWcyQm9keSwgcGFydGljbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBJbWdVdGlsLmdldEltZ0Zyb21DYWNoZSh0aGlzLmNpcmNsZUNhbnZhc1VSTCwgdGhpcy5hZGRJbWcyQm9keSwgcGFydGljbGUpO1xuICAgICAgcGFydGljbGUuZGF0YS5vbGRTY2FsZSA9IHBhcnRpY2xlLnJhZGl1cyAvIHRoaXMuY2lyY2xlQ2FudmFzUmFkaXVzO1xuICAgIH1cbiAgfVxuXG4gIC8vIHByaXZhdGVcbiAgYWRkSW1nMkJvZHkoaW1nLCBwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZS5kZWFkKSByZXR1cm47XG4gICAgcGFydGljbGUuYm9keSA9IGltZztcbiAgICBwYXJ0aWNsZS5kYXRhLnNyYyA9IGltZy5zcmM7XG4gICAgcGFydGljbGUuZGF0YS5jYW52YXMgPSBJbWdVdGlsLmdldENhbnZhc0Zyb21DYWNoZShpbWcpO1xuICAgIHBhcnRpY2xlLmRhdGEub2xkU2NhbGUgPSAxO1xuXG4gICAgdGhpcy5kcmF3SW1nMkNhbnZhcyhwYXJ0aWNsZSk7XG4gIH1cblxuICBvblBhcnRpY2xlVXBkYXRlKHBhcnRpY2xlKSB7XG4gICAgaWYgKHBhcnRpY2xlLmRhdGEudGV4dHVyZUxvYWRlZCkge1xuICAgICAgdGhpcy51cGRhdGVNYXRyaXgocGFydGljbGUpO1xuXG4gICAgICB0aGlzLmdsLnVuaWZvcm0zZih0aGlzLnNwcm9ncmFtLmNvbG9yLCBwYXJ0aWNsZS5yZ2IuciAvIDI1NSwgcGFydGljbGUucmdiLmcgLyAyNTUsIHBhcnRpY2xlLnJnYi5iIC8gMjU1KTtcbiAgICAgIHRoaXMuZ2wudW5pZm9ybU1hdHJpeDNmdih0aGlzLnNwcm9ncmFtLnRNYXRVbmlmb3JtLCBmYWxzZSwgdGhpcy5tc3RhY2sudG9wKCkpO1xuXG4gICAgICB0aGlzLmdsLmJpbmRCdWZmZXIodGhpcy5nbC5BUlJBWV9CVUZGRVIsIHBhcnRpY2xlLmRhdGEudmNCdWZmZXIpO1xuICAgICAgdGhpcy5nbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHRoaXMuc3Byb2dyYW0udnBhLCAyLCB0aGlzLmdsLkZMT0FULCBmYWxzZSwgMCwgMCk7XG4gICAgICB0aGlzLmdsLmJpbmRCdWZmZXIodGhpcy5nbC5BUlJBWV9CVUZGRVIsIHBhcnRpY2xlLmRhdGEudGNCdWZmZXIpO1xuICAgICAgdGhpcy5nbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHRoaXMuc3Byb2dyYW0udGNhLCAyLCB0aGlzLmdsLkZMT0FULCBmYWxzZSwgMCwgMCk7XG4gICAgICB0aGlzLmdsLmJpbmRUZXh0dXJlKHRoaXMuZ2wuVEVYVFVSRV8yRCwgcGFydGljbGUuZGF0YS50ZXh0dXJlKTtcbiAgICAgIHRoaXMuZ2wudW5pZm9ybTFpKHRoaXMuc3Byb2dyYW0uc2FtcGxlclVuaWZvcm0sIDApO1xuICAgICAgdGhpcy5nbC5iaW5kQnVmZmVyKHRoaXMuZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHRoaXMudW5pdElCdWZmZXIpO1xuXG4gICAgICB0aGlzLmdsLmRyYXdFbGVtZW50cyh0aGlzLmdsLlRSSUFOR0xFUywgNiwgdGhpcy5nbC5VTlNJR05FRF9TSE9SVCwgMCk7XG4gICAgICB0aGlzLm1zdGFjay5wb3AoKTtcbiAgICB9XG4gIH1cblxuICBvblBhcnRpY2xlRGVhZChwYXJ0aWNsZSkge31cblxuICB1cGRhdGVNYXRyaXgocGFydGljbGUpIHtcbiAgICBjb25zdCBtb3ZlT3JpZ2luTWF0cml4ID0gV2ViR0xVdGlsLm1ha2VUcmFuc2xhdGlvbihcbiAgICAgIC1wYXJ0aWNsZS5kYXRhLnRleHR1cmVXaWR0aCAvIDIsXG4gICAgICAtcGFydGljbGUuZGF0YS50ZXh0dXJlSGVpZ2h0IC8gMlxuICAgICk7XG4gICAgY29uc3QgdHJhbnNsYXRpb25NYXRyaXggPSBXZWJHTFV0aWwubWFrZVRyYW5zbGF0aW9uKHBhcnRpY2xlLnAueCwgcGFydGljbGUucC55KTtcblxuICAgIGNvbnN0IGFuZ2VsID0gcGFydGljbGUucm90YXRpb24gKiBNYXRoVXRpbC5QSV8xODA7XG4gICAgY29uc3Qgcm90YXRpb25NYXRyaXggPSBXZWJHTFV0aWwubWFrZVJvdGF0aW9uKGFuZ2VsKTtcblxuICAgIGNvbnN0IHNjYWxlID0gcGFydGljbGUuc2NhbGUgKiBwYXJ0aWNsZS5kYXRhLm9sZFNjYWxlO1xuICAgIGNvbnN0IHNjYWxlTWF0cml4ID0gV2ViR0xVdGlsLm1ha2VTY2FsZShzY2FsZSwgc2NhbGUpO1xuICAgIGxldCBtYXRyaXggPSBXZWJHTFV0aWwubWF0cml4TXVsdGlwbHkobW92ZU9yaWdpbk1hdHJpeCwgc2NhbGVNYXRyaXgpO1xuXG4gICAgbWF0cml4ID0gV2ViR0xVdGlsLm1hdHJpeE11bHRpcGx5KG1hdHJpeCwgcm90YXRpb25NYXRyaXgpO1xuICAgIG1hdHJpeCA9IFdlYkdMVXRpbC5tYXRyaXhNdWx0aXBseShtYXRyaXgsIHRyYW5zbGF0aW9uTWF0cml4KTtcblxuICAgIE1hdDMuaW52ZXJzZShtYXRyaXgsIHBhcnRpY2xlLmRhdGEuaW1hdCk7XG4gICAgbWF0cml4WzJdID0gcGFydGljbGUuYWxwaGE7XG5cbiAgICB0aGlzLm1zdGFjay5wdXNoKG1hdHJpeCk7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICB0aGlzLmdsID0gbnVsbDtcbiAgICB0aGlzLm1zdGFjayA9IG51bGw7XG4gICAgdGhpcy51bWF0ID0gbnVsbDtcbiAgICB0aGlzLnNtYXQgPSBudWxsO1xuICAgIHRoaXMudGV4dHVyZWJ1ZmZlcnMgPSBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQgQmFzZVJlbmRlcmVyIGZyb20gXCIuL0Jhc2VSZW5kZXJlclwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDdXN0b21SZW5kZXJlciBleHRlbmRzIEJhc2VSZW5kZXJlciB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQpIHtcbiAgICBzdXBlcihlbGVtZW50KTtcblxuICAgIHRoaXMubmFtZSA9IFwiQ3VzdG9tUmVuZGVyZXJcIjtcbiAgfVxufVxuIiwiaW1wb3J0IFpvbmUgZnJvbSBcIi4vWm9uZVwiO1xuaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaW5lWm9uZSBleHRlbmRzIFpvbmUge1xuICBjb25zdHJ1Y3Rvcih4MSwgeTEsIHgyLCB5MiwgZGlyZWN0aW9uKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmICh4MiAtIHgxID49IDApIHtcbiAgICAgIHRoaXMueDEgPSB4MTtcbiAgICAgIHRoaXMueTEgPSB5MTtcbiAgICAgIHRoaXMueDIgPSB4MjtcbiAgICAgIHRoaXMueTIgPSB5MjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy54MSA9IHgyO1xuICAgICAgdGhpcy55MSA9IHkyO1xuICAgICAgdGhpcy54MiA9IHgxO1xuICAgICAgdGhpcy55MiA9IHkxO1xuICAgIH1cblxuICAgIHRoaXMuZHggPSB0aGlzLngyIC0gdGhpcy54MTtcbiAgICB0aGlzLmR5ID0gdGhpcy55MiAtIHRoaXMueTE7XG5cbiAgICB0aGlzLm1pbnggPSBNYXRoLm1pbih0aGlzLngxLCB0aGlzLngyKTtcbiAgICB0aGlzLm1pbnkgPSBNYXRoLm1pbih0aGlzLnkxLCB0aGlzLnkyKTtcbiAgICB0aGlzLm1heHggPSBNYXRoLm1heCh0aGlzLngxLCB0aGlzLngyKTtcbiAgICB0aGlzLm1heHkgPSBNYXRoLm1heCh0aGlzLnkxLCB0aGlzLnkyKTtcblxuICAgIHRoaXMuZG90ID0gdGhpcy54MiAqIHRoaXMueTEgLSB0aGlzLngxICogdGhpcy55MjtcbiAgICB0aGlzLnh4eXkgPSB0aGlzLmR4ICogdGhpcy5keCArIHRoaXMuZHkgKiB0aGlzLmR5O1xuXG4gICAgdGhpcy5ncmFkaWVudCA9IHRoaXMuZ2V0R3JhZGllbnQoKTtcbiAgICB0aGlzLmxlbmd0aCA9IHRoaXMuZ2V0TGVuZ3RoKCk7XG4gICAgdGhpcy5kaXJlY3Rpb24gPSBVdGlsLmluaXRWYWx1ZShkaXJlY3Rpb24sIFwiPlwiKTtcbiAgfVxuXG4gIGdldFBvc2l0aW9uKCkge1xuICAgIHRoaXMucmFuZG9tID0gTWF0aC5yYW5kb20oKTtcbiAgICB0aGlzLnZlY3Rvci54ID0gdGhpcy54MSArIHRoaXMucmFuZG9tICogdGhpcy5sZW5ndGggKiBNYXRoLmNvcyh0aGlzLmdyYWRpZW50KTtcbiAgICB0aGlzLnZlY3Rvci55ID0gdGhpcy55MSArIHRoaXMucmFuZG9tICogdGhpcy5sZW5ndGggKiBNYXRoLnNpbih0aGlzLmdyYWRpZW50KTtcblxuICAgIHJldHVybiB0aGlzLnZlY3RvcjtcbiAgfVxuXG4gIGdldERpcmVjdGlvbih4LCB5KSB7XG4gICAgY29uc3QgQSA9IHRoaXMuZHk7XG4gICAgY29uc3QgQiA9IC10aGlzLmR4O1xuICAgIGNvbnN0IEMgPSB0aGlzLmRvdDtcbiAgICBjb25zdCBEID0gQiA9PT0gMCA/IDEgOiBCO1xuXG4gICAgaWYgKChBICogeCArIEIgKiB5ICsgQykgKiBEID4gMCkgcmV0dXJuIHRydWU7XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXREaXN0YW5jZSh4LCB5KSB7XG4gICAgY29uc3QgQSA9IHRoaXMuZHk7XG4gICAgY29uc3QgQiA9IC10aGlzLmR4O1xuICAgIGNvbnN0IEMgPSB0aGlzLmRvdDtcbiAgICBjb25zdCBEID0gQSAqIHggKyBCICogeSArIEM7XG5cbiAgICByZXR1cm4gRCAvIE1hdGguc3FydCh0aGlzLnh4eXkpO1xuICB9XG5cbiAgZ2V0U3ltbWV0cmljKHYpIHtcbiAgICBjb25zdCB0aGEyID0gdi5nZXRHcmFkaWVudCgpO1xuICAgIGNvbnN0IHRoYTEgPSB0aGlzLmdldEdyYWRpZW50KCk7XG4gICAgY29uc3QgdGhhID0gMiAqICh0aGExIC0gdGhhMik7XG5cbiAgICBjb25zdCBvbGR4ID0gdi54O1xuICAgIGNvbnN0IG9sZHkgPSB2Lnk7XG5cbiAgICB2LnggPSBvbGR4ICogTWF0aC5jb3ModGhhKSAtIG9sZHkgKiBNYXRoLnNpbih0aGEpO1xuICAgIHYueSA9IG9sZHggKiBNYXRoLnNpbih0aGEpICsgb2xkeSAqIE1hdGguY29zKHRoYSk7XG5cbiAgICByZXR1cm4gdjtcbiAgfVxuXG4gIGdldEdyYWRpZW50KCkge1xuICAgIHJldHVybiBNYXRoLmF0YW4yKHRoaXMuZHksIHRoaXMuZHgpO1xuICB9XG5cbiAgcmFuZ2VPdXQocGFydGljbGUpIHtcbiAgICBjb25zdCBhbmdsZSA9IE1hdGguYWJzKHRoaXMuZ2V0R3JhZGllbnQoKSk7XG5cbiAgICBpZiAoYW5nbGUgPD0gTWF0aFV0aWwuUEkgLyA0KSB7XG4gICAgICBpZiAocGFydGljbGUucC54IDw9IHRoaXMubWF4eCAmJiBwYXJ0aWNsZS5wLnggPj0gdGhpcy5taW54KSByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHBhcnRpY2xlLnAueSA8PSB0aGlzLm1heHkgJiYgcGFydGljbGUucC55ID49IHRoaXMubWlueSkgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0TGVuZ3RoKCkge1xuICAgIHJldHVybiBNYXRoLnNxcnQodGhpcy5keCAqIHRoaXMuZHggKyB0aGlzLmR5ICogdGhpcy5keSk7XG4gIH1cblxuICBjcm9zc2luZyhwYXJ0aWNsZSkge1xuICAgIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJkZWFkXCIpIHtcbiAgICAgIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gXCI+XCIgfHwgdGhpcy5kaXJlY3Rpb24gPT09IFwiUlwiIHx8IHRoaXMuZGlyZWN0aW9uID09PSBcInJpZ2h0XCIgfHwgdGhpcy5kaXJlY3Rpb24gPT09IFwiZG93blwiKSB7XG4gICAgICAgIGlmICghdGhpcy5yYW5nZU91dChwYXJ0aWNsZSkpIHJldHVybjtcbiAgICAgICAgaWYgKHRoaXMuZ2V0RGlyZWN0aW9uKHBhcnRpY2xlLnAueCwgcGFydGljbGUucC55KSkgcGFydGljbGUuZGVhZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXRoaXMucmFuZ2VPdXQocGFydGljbGUpKSByZXR1cm47XG4gICAgICAgIGlmICghdGhpcy5nZXREaXJlY3Rpb24ocGFydGljbGUucC54LCBwYXJ0aWNsZS5wLnkpKSBwYXJ0aWNsZS5kZWFkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuY3Jvc3NUeXBlID09PSBcImJvdW5kXCIpIHtcbiAgICAgIGlmICghdGhpcy5yYW5nZU91dChwYXJ0aWNsZSkpIHJldHVybjtcblxuICAgICAgaWYgKHRoaXMuZ2V0RGlzdGFuY2UocGFydGljbGUucC54LCBwYXJ0aWNsZS5wLnkpIDw9IHBhcnRpY2xlLnJhZGl1cykge1xuICAgICAgICBpZiAodGhpcy5keCA9PT0gMCkge1xuICAgICAgICAgIHBhcnRpY2xlLnYueCAqPSAtMTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmR5ID09PSAwKSB7XG4gICAgICAgICAgcGFydGljbGUudi55ICo9IC0xO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZ2V0U3ltbWV0cmljKHBhcnRpY2xlLnYpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJjcm9zc1wiKSB7XG4gICAgICBpZiAodGhpcy5hbGVydCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiU29ycnksIExpbmVab25lIGRvZXMgbm90IHN1cHBvcnQgY3Jvc3MgbWV0aG9kIVwiKTtcbiAgICAgICAgdGhpcy5hbGVydCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IFpvbmUgZnJvbSBcIi4vWm9uZVwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuLi9tYXRoL01hdGhVdGlsXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENpcmNsZVpvbmUgZXh0ZW5kcyBab25lIHtcbiAgY29uc3RydWN0b3IoeCwgeSwgcmFkaXVzKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgICB0aGlzLnJhZGl1cyA9IHJhZGl1cztcbiAgICB0aGlzLmFuZ2xlID0gMDtcbiAgICB0aGlzLmNlbnRlciA9IHsgeCwgeSB9O1xuICB9XG5cbiAgZ2V0UG9zaXRpb24oKSB7XG4gICAgdGhpcy5hbmdsZSA9IE1hdGhVdGlsLlBJeDIgKiBNYXRoLnJhbmRvbSgpO1xuICAgIHRoaXMucmFuZG9tUmFkaXVzID0gTWF0aC5yYW5kb20oKSAqIHRoaXMucmFkaXVzO1xuICAgIHRoaXMudmVjdG9yLnggPSB0aGlzLnggKyB0aGlzLnJhbmRvbVJhZGl1cyAqIE1hdGguY29zKHRoaXMuYW5nbGUpO1xuICAgIHRoaXMudmVjdG9yLnkgPSB0aGlzLnkgKyB0aGlzLnJhbmRvbVJhZGl1cyAqIE1hdGguc2luKHRoaXMuYW5nbGUpO1xuXG4gICAgcmV0dXJuIHRoaXMudmVjdG9yO1xuICB9XG5cbiAgc2V0Q2VudGVyKHgsIHkpIHtcbiAgICB0aGlzLmNlbnRlci54ID0geDtcbiAgICB0aGlzLmNlbnRlci55ID0geTtcbiAgfVxuXG4gIGNyb3NzaW5nKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgZCA9IHBhcnRpY2xlLnAuZGlzdGFuY2VUbyh0aGlzLmNlbnRlcik7XG5cbiAgICBpZiAodGhpcy5jcm9zc1R5cGUgPT09IFwiZGVhZFwiKSB7XG4gICAgICBpZiAoZCAtIHBhcnRpY2xlLnJhZGl1cyA+IHRoaXMucmFkaXVzKSBwYXJ0aWNsZS5kZWFkID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3Jvc3NUeXBlID09PSBcImJvdW5kXCIpIHtcbiAgICAgIGlmIChkICsgcGFydGljbGUucmFkaXVzID49IHRoaXMucmFkaXVzKSB0aGlzLmdldFN5bW1ldHJpYyhwYXJ0aWNsZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJjcm9zc1wiKSB7XG4gICAgICBpZiAodGhpcy5hbGVydCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiU29ycnksIENpcmNsZVpvbmUgZG9lcyBub3Qgc3VwcG9ydCBjcm9zcyBtZXRob2QhXCIpO1xuICAgICAgICB0aGlzLmFsZXJ0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0U3ltbWV0cmljKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgdGhhMiA9IHBhcnRpY2xlLnYuZ2V0R3JhZGllbnQoKTtcbiAgICBjb25zdCB0aGExID0gdGhpcy5nZXRHcmFkaWVudChwYXJ0aWNsZSk7XG5cbiAgICBjb25zdCB0aGEgPSAyICogKHRoYTEgLSB0aGEyKTtcbiAgICBjb25zdCBvbGR4ID0gcGFydGljbGUudi54O1xuICAgIGNvbnN0IG9sZHkgPSBwYXJ0aWNsZS52Lnk7XG5cbiAgICBwYXJ0aWNsZS52LnggPSBvbGR4ICogTWF0aC5jb3ModGhhKSAtIG9sZHkgKiBNYXRoLnNpbih0aGEpO1xuICAgIHBhcnRpY2xlLnYueSA9IG9sZHggKiBNYXRoLnNpbih0aGEpICsgb2xkeSAqIE1hdGguY29zKHRoYSk7XG4gIH1cblxuICBnZXRHcmFkaWVudChwYXJ0aWNsZSkge1xuICAgIHJldHVybiAtTWF0aFV0aWwuUElfMiArIE1hdGguYXRhbjIocGFydGljbGUucC55IC0gdGhpcy5jZW50ZXIueSwgcGFydGljbGUucC54IC0gdGhpcy5jZW50ZXIueCk7XG4gIH1cbn1cbiIsImltcG9ydCBab25lIGZyb20gXCIuL1pvbmVcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVjdFpvbmUgZXh0ZW5kcyBab25lIHtcbiAgY29uc3RydWN0b3IoeCwgeSwgd2lkdGgsIGhlaWdodCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICB9XG5cbiAgZ2V0UG9zaXRpb24oKSB7XG4gICAgdGhpcy52ZWN0b3IueCA9IHRoaXMueCArIE1hdGgucmFuZG9tKCkgKiB0aGlzLndpZHRoO1xuICAgIHRoaXMudmVjdG9yLnkgPSB0aGlzLnkgKyBNYXRoLnJhbmRvbSgpICogdGhpcy5oZWlnaHQ7XG5cbiAgICByZXR1cm4gdGhpcy52ZWN0b3I7XG4gIH1cblxuICBjcm9zc2luZyhwYXJ0aWNsZSkge1xuICAgIC8vIHBhcnRpY2xlIGRlYWQgem9uZVxuICAgIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJkZWFkXCIpIHtcbiAgICAgIGlmIChwYXJ0aWNsZS5wLnggKyBwYXJ0aWNsZS5yYWRpdXMgPCB0aGlzLngpIHBhcnRpY2xlLmRlYWQgPSB0cnVlO1xuICAgICAgZWxzZSBpZiAocGFydGljbGUucC54IC0gcGFydGljbGUucmFkaXVzID4gdGhpcy54ICsgdGhpcy53aWR0aCkgcGFydGljbGUuZGVhZCA9IHRydWU7XG5cbiAgICAgIGlmIChwYXJ0aWNsZS5wLnkgKyBwYXJ0aWNsZS5yYWRpdXMgPCB0aGlzLnkpIHBhcnRpY2xlLmRlYWQgPSB0cnVlO1xuICAgICAgZWxzZSBpZiAocGFydGljbGUucC55IC0gcGFydGljbGUucmFkaXVzID4gdGhpcy55ICsgdGhpcy5oZWlnaHQpIHBhcnRpY2xlLmRlYWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIHBhcnRpY2xlIGJvdW5kIHpvbmVcbiAgICBlbHNlIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJib3VuZFwiKSB7XG4gICAgICBpZiAocGFydGljbGUucC54IC0gcGFydGljbGUucmFkaXVzIDwgdGhpcy54KSB7XG4gICAgICAgIHBhcnRpY2xlLnAueCA9IHRoaXMueCArIHBhcnRpY2xlLnJhZGl1cztcbiAgICAgICAgcGFydGljbGUudi54ICo9IC0xO1xuICAgICAgfSBlbHNlIGlmIChwYXJ0aWNsZS5wLnggKyBwYXJ0aWNsZS5yYWRpdXMgPiB0aGlzLnggKyB0aGlzLndpZHRoKSB7XG4gICAgICAgIHBhcnRpY2xlLnAueCA9IHRoaXMueCArIHRoaXMud2lkdGggLSBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgICAgIHBhcnRpY2xlLnYueCAqPSAtMTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcnRpY2xlLnAueSAtIHBhcnRpY2xlLnJhZGl1cyA8IHRoaXMueSkge1xuICAgICAgICBwYXJ0aWNsZS5wLnkgPSB0aGlzLnkgKyBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgICAgIHBhcnRpY2xlLnYueSAqPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAocGFydGljbGUucC55ICsgcGFydGljbGUucmFkaXVzID4gdGhpcy55ICsgdGhpcy5oZWlnaHQpIHtcbiAgICAgICAgcGFydGljbGUucC55ID0gdGhpcy55ICsgdGhpcy5oZWlnaHQgLSBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgICAgIHBhcnRpY2xlLnYueSAqPSAtMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBwYXJ0aWNsZSBjcm9zcyB6b25lXG4gICAgZWxzZSBpZiAodGhpcy5jcm9zc1R5cGUgPT09IFwiY3Jvc3NcIikge1xuICAgICAgaWYgKHBhcnRpY2xlLnAueCArIHBhcnRpY2xlLnJhZGl1cyA8IHRoaXMueCAmJiBwYXJ0aWNsZS52LnggPD0gMCkge1xuICAgICAgICBwYXJ0aWNsZS5wLnggPSB0aGlzLnggKyB0aGlzLndpZHRoICsgcGFydGljbGUucmFkaXVzO1xuICAgICAgfSBlbHNlIGlmIChwYXJ0aWNsZS5wLnggLSBwYXJ0aWNsZS5yYWRpdXMgPiB0aGlzLnggKyB0aGlzLndpZHRoICYmIHBhcnRpY2xlLnYueCA+PSAwKSB7XG4gICAgICAgIHBhcnRpY2xlLnAueCA9IHRoaXMueCAtIHBhcnRpY2xlLnJhZGl1cztcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcnRpY2xlLnAueSArIHBhcnRpY2xlLnJhZGl1cyA8IHRoaXMueSAmJiBwYXJ0aWNsZS52LnkgPD0gMCkge1xuICAgICAgICBwYXJ0aWNsZS5wLnkgPSB0aGlzLnkgKyB0aGlzLmhlaWdodCArIHBhcnRpY2xlLnJhZGl1cztcbiAgICAgIH0gZWxzZSBpZiAocGFydGljbGUucC55IC0gcGFydGljbGUucmFkaXVzID4gdGhpcy55ICsgdGhpcy5oZWlnaHQgJiYgcGFydGljbGUudi55ID49IDApIHtcbiAgICAgICAgcGFydGljbGUucC55ID0gdGhpcy55IC0gcGFydGljbGUucmFkaXVzO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IFpvbmUgZnJvbSBcIi4vWm9uZVwiO1xuaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW1hZ2Vab25lIGV4dGVuZHMgWm9uZSB7XG4gIGNvbnN0cnVjdG9yKGltYWdlRGF0YSwgeCwgeSwgZCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yZXNldChpbWFnZURhdGEsIHgsIHksIGQpO1xuICB9XG5cbiAgcmVzZXQoaW1hZ2VEYXRhLCB4LCB5LCBkKSB7XG4gICAgdGhpcy5pbWFnZURhdGEgPSBpbWFnZURhdGE7XG4gICAgdGhpcy54ID0gVXRpbC5pbml0VmFsdWUoeCwgMCk7XG4gICAgdGhpcy55ID0gVXRpbC5pbml0VmFsdWUoeSwgMCk7XG4gICAgdGhpcy5kID0gVXRpbC5pbml0VmFsdWUoZCwgMik7XG5cbiAgICB0aGlzLnZlY3RvcnMgPSBbXTtcbiAgICB0aGlzLnNldFZlY3RvcnMoKTtcbiAgfVxuXG4gIHNldFZlY3RvcnMoKSB7XG4gICAgbGV0IGksIGo7XG4gICAgY29uc3QgbGVuZ3RoMSA9IHRoaXMuaW1hZ2VEYXRhLndpZHRoO1xuICAgIGNvbnN0IGxlbmd0aDIgPSB0aGlzLmltYWdlRGF0YS5oZWlnaHQ7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoMTsgaSArPSB0aGlzLmQpIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCBsZW5ndGgyOyBqICs9IHRoaXMuZCkge1xuICAgICAgICBsZXQgaW5kZXggPSAoKGogPj4gMCkgKiBsZW5ndGgxICsgKGkgPj4gMCkpICogNDtcblxuICAgICAgICBpZiAodGhpcy5pbWFnZURhdGEuZGF0YVtpbmRleCArIDNdID4gMCkge1xuICAgICAgICAgIHRoaXMudmVjdG9ycy5wdXNoKHsgeDogaSArIHRoaXMueCwgeTogaiArIHRoaXMueSB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnZlY3RvcjtcbiAgfVxuXG4gIGdldEJvdW5kKHgsIHkpIHtcbiAgICBjb25zdCBpbmRleCA9ICgoeSA+PiAwKSAqIHRoaXMuaW1hZ2VEYXRhLndpZHRoICsgKHggPj4gMCkpICogNDtcbiAgICBpZiAodGhpcy5pbWFnZURhdGEuZGF0YVtpbmRleCArIDNdID4gMCkgcmV0dXJuIHRydWU7XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRQb3NpdGlvbigpIHtcbiAgICBjb25zdCB2ZWN0b3IgPSBVdGlsLmdldFJhbmRGcm9tQXJyYXkodGhpcy52ZWN0b3JzKTtcbiAgICByZXR1cm4gdGhpcy52ZWN0b3IuY29weSh2ZWN0b3IpO1xuICB9XG5cbiAgZ2V0Q29sb3IoeCwgeSkge1xuICAgIHggLT0gdGhpcy54O1xuICAgIHkgLT0gdGhpcy55O1xuICAgIGNvbnN0IGkgPSAoKHkgPj4gMCkgKiB0aGlzLmltYWdlRGF0YS53aWR0aCArICh4ID4+IDApKSAqIDQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcjogdGhpcy5pbWFnZURhdGEuZGF0YVtpXSxcbiAgICAgIGc6IHRoaXMuaW1hZ2VEYXRhLmRhdGFbaSArIDFdLFxuICAgICAgYjogdGhpcy5pbWFnZURhdGEuZGF0YVtpICsgMl0sXG4gICAgICBhOiB0aGlzLmltYWdlRGF0YS5kYXRhW2kgKyAzXVxuICAgIH07XG4gIH1cblxuICBjcm9zc2luZyhwYXJ0aWNsZSkge1xuICAgIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJkZWFkXCIpIHtcbiAgICAgIGlmICh0aGlzLmdldEJvdW5kKHBhcnRpY2xlLnAueCAtIHRoaXMueCwgcGFydGljbGUucC55IC0gdGhpcy55KSkgcGFydGljbGUuZGVhZCA9IHRydWU7XG4gICAgICBlbHNlIHBhcnRpY2xlLmRlYWQgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3Jvc3NUeXBlID09PSBcImJvdW5kXCIpIHtcbiAgICAgIGlmICghdGhpcy5nZXRCb3VuZChwYXJ0aWNsZS5wLnggLSB0aGlzLngsIHBhcnRpY2xlLnAueSAtIHRoaXMueSkpIHBhcnRpY2xlLnYubmVnYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgdGhpcy5pbWFnZURhdGEgPSBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQgQ29sb3JVdGlsIGZyb20gXCIuLi91dGlscy9Db2xvclV0aWxcIjtcbmltcG9ydCBDaXJjbGVab25lIGZyb20gXCIuLi96b25lL0NpcmNsZVpvbmVcIjtcbmltcG9ydCBQb2ludFpvbmUgZnJvbSBcIi4uL3pvbmUvUG9pbnRab25lXCI7XG5pbXBvcnQgTGluZVpvbmUgZnJvbSBcIi4uL3pvbmUvTGluZVpvbmVcIjtcbmltcG9ydCBSZWN0Wm9uZSBmcm9tIFwiLi4vem9uZS9SZWN0Wm9uZVwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGFkZEV2ZW50TGlzdGVuZXIocHJvdG9uLCBmdW5jKSB7XG4gICAgcHJvdG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJQUk9UT05fVVBEQVRFX0FGVEVSXCIsICgpID0+IGZ1bmMoKSk7XG4gIH0sXG5cbiAgZ2V0U3R5bGUoY29sb3IgPSBcIiNmZjAwMDBcIikge1xuICAgIGNvbnN0IHJnYiA9IENvbG9yVXRpbC5oZXhUb1JnYihjb2xvcik7XG4gICAgcmV0dXJuIGByZ2JhKCR7cmdiLnJ9LCAke3JnYi5nfSwgJHtyZ2IuYn0sIDAuNSlgO1xuICB9LFxuXG4gIGRyYXdab25lKHByb3RvbiwgY2FudmFzLCB6b25lLCBjbGVhcikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgIGNvbnN0IHN0eWxlID0gdGhpcy5nZXRTdHlsZSgpO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKHByb3RvbiwgKCkgPT4ge1xuICAgICAgaWYgKGNsZWFyKSBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuXG4gICAgICBpZiAoem9uZSBpbnN0YW5jZW9mIFBvaW50Wm9uZSkge1xuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IHN0eWxlO1xuICAgICAgICBjb250ZXh0LmFyYyh6b25lLngsIHpvbmUueSwgMTAsIDAsIE1hdGguUEkgKiAyLCB0cnVlKTtcbiAgICAgICAgY29udGV4dC5maWxsKCk7XG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICB9IGVsc2UgaWYgKHpvbmUgaW5zdGFuY2VvZiBMaW5lWm9uZSkge1xuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gc3R5bGU7XG4gICAgICAgIGNvbnRleHQubW92ZVRvKHpvbmUueDEsIHpvbmUueTEpO1xuICAgICAgICBjb250ZXh0LmxpbmVUbyh6b25lLngyLCB6b25lLnkyKTtcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgIH0gZWxzZSBpZiAoem9uZSBpbnN0YW5jZW9mIFJlY3Rab25lKSB7XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBzdHlsZTtcbiAgICAgICAgY29udGV4dC5kcmF3UmVjdCh6b25lLngsIHpvbmUueSwgem9uZS53aWR0aCwgem9uZS5oZWlnaHQpO1xuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgfSBlbHNlIGlmICh6b25lIGluc3RhbmNlb2YgQ2lyY2xlWm9uZSkge1xuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gc3R5bGU7XG4gICAgICAgIGNvbnRleHQuYXJjKHpvbmUueCwgem9uZS55LCB6b25lLnJhZGl1cywgMCwgTWF0aC5QSSAqIDIsIHRydWUpO1xuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIGRyYXdFbWl0dGVyKHByb3RvbiwgY2FudmFzLCBlbWl0dGVyLCBjbGVhcikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgIGNvbnN0IHN0eWxlID0gdGhpcy5nZXRTdHlsZSgpO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKHByb3RvbiwgKCkgPT4ge1xuICAgICAgaWYgKGNsZWFyKSBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBzdHlsZTtcbiAgICAgIGNvbnRleHQuYXJjKGVtaXR0ZXIucC54LCBlbWl0dGVyLnAueSwgMTAsIDAsIE1hdGguUEkgKiAyLCB0cnVlKTtcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB9KTtcbiAgfVxufTtcbiIsImltcG9ydCBQcm90b24gZnJvbSBcIi4vY29yZS9Qcm90b25cIjtcbmltcG9ydCBQYXJ0aWNsZSBmcm9tIFwiLi9jb3JlL1BhcnRpY2xlXCI7XG5pbXBvcnQgUG9vbCBmcm9tIFwiLi9jb3JlL1Bvb2xcIjtcblxuaW1wb3J0IFV0aWwgZnJvbSBcIi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IENvbG9yVXRpbCBmcm9tIFwiLi91dGlscy9Db2xvclV0aWxcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi9tYXRoL01hdGhVdGlsXCI7XG5pbXBvcnQgVmVjdG9yMkQgZnJvbSBcIi4vbWF0aC9WZWN0b3IyRFwiO1xuaW1wb3J0IFBvbGFyMkQgZnJvbSBcIi4vbWF0aC9Qb2xhcjJEXCI7XG5pbXBvcnQgTWF0MyBmcm9tIFwiLi9tYXRoL01hdDNcIjtcbmltcG9ydCBTcGFuIGZyb20gXCIuL21hdGgvU3BhblwiO1xuaW1wb3J0IEFycmF5U3BhbiBmcm9tIFwiLi9tYXRoL0FycmF5U3BhblwiO1xuaW1wb3J0IFJlY3RhbmdsZSBmcm9tIFwiLi9tYXRoL1JlY3RhbmdsZVwiO1xuaW1wb3J0IGVhc2UgZnJvbSBcIi4vbWF0aC9lYXNlXCI7XG5cbmltcG9ydCBSYXRlIGZyb20gXCIuL2luaXRpYWxpemUvUmF0ZVwiO1xuaW1wb3J0IEluaXRpYWxpemUgZnJvbSBcIi4vaW5pdGlhbGl6ZS9Jbml0aWFsaXplXCI7XG5pbXBvcnQgTGlmZSBmcm9tIFwiLi9pbml0aWFsaXplL0xpZmVcIjtcbmltcG9ydCBQb3NpdGlvbiBmcm9tIFwiLi9pbml0aWFsaXplL1Bvc2l0aW9uXCI7XG5pbXBvcnQgVmVsb2NpdHkgZnJvbSBcIi4vaW5pdGlhbGl6ZS9WZWxvY2l0eVwiO1xuaW1wb3J0IE1hc3MgZnJvbSBcIi4vaW5pdGlhbGl6ZS9NYXNzXCI7XG5pbXBvcnQgUmFkaXVzIGZyb20gXCIuL2luaXRpYWxpemUvUmFkaXVzXCI7XG5pbXBvcnQgQm9keSBmcm9tIFwiLi9pbml0aWFsaXplL0JvZHlcIjtcblxuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9iZWhhdmlvdXIvQmVoYXZpb3VyXCI7XG5pbXBvcnQgRm9yY2UgZnJvbSBcIi4vYmVoYXZpb3VyL0ZvcmNlXCI7XG5pbXBvcnQgQXR0cmFjdGlvbiBmcm9tIFwiLi9iZWhhdmlvdXIvQXR0cmFjdGlvblwiO1xuaW1wb3J0IFJhbmRvbURyaWZ0IGZyb20gXCIuL2JlaGF2aW91ci9SYW5kb21EcmlmdFwiO1xuaW1wb3J0IEdyYXZpdHkgZnJvbSBcIi4vYmVoYXZpb3VyL0dyYXZpdHlcIjtcbmltcG9ydCBDb2xsaXNpb24gZnJvbSBcIi4vYmVoYXZpb3VyL0NvbGxpc2lvblwiO1xuaW1wb3J0IENyb3NzWm9uZSBmcm9tIFwiLi9iZWhhdmlvdXIvQ3Jvc3Nab25lXCI7XG5pbXBvcnQgQWxwaGEgZnJvbSBcIi4vYmVoYXZpb3VyL0FscGhhXCI7XG5pbXBvcnQgU2NhbGUgZnJvbSBcIi4vYmVoYXZpb3VyL1NjYWxlXCI7XG5pbXBvcnQgUm90YXRlIGZyb20gXCIuL2JlaGF2aW91ci9Sb3RhdGVcIjtcbmltcG9ydCBDb2xvciBmcm9tIFwiLi9iZWhhdmlvdXIvQ29sb3JcIjtcbmltcG9ydCBDeWNsb25lIGZyb20gXCIuL2JlaGF2aW91ci9DeWNsb25lXCI7XG5pbXBvcnQgUmVwdWxzaW9uIGZyb20gXCIuL2JlaGF2aW91ci9SZXB1bHNpb25cIjtcbmltcG9ydCBHcmF2aXR5V2VsbCBmcm9tIFwiLi9iZWhhdmlvdXIvR3Jhdml0eVdlbGxcIjtcblxuaW1wb3J0IEVtaXR0ZXIgZnJvbSBcIi4vZW1pdHRlci9FbWl0dGVyXCI7XG5pbXBvcnQgQmVoYXZpb3VyRW1pdHRlciBmcm9tIFwiLi9lbWl0dGVyL0JlaGF2aW91ckVtaXR0ZXJcIjtcbmltcG9ydCBGb2xsb3dFbWl0dGVyIGZyb20gXCIuL2VtaXR0ZXIvRm9sbG93RW1pdHRlclwiO1xuXG5pbXBvcnQgQ2FudmFzUmVuZGVyZXIgZnJvbSBcIi4vcmVuZGVyL0NhbnZhc1JlbmRlcmVyXCI7XG5pbXBvcnQgRG9tUmVuZGVyZXIgZnJvbSBcIi4vcmVuZGVyL0RvbVJlbmRlcmVyXCI7XG5pbXBvcnQgRWFzZWxSZW5kZXJlciBmcm9tIFwiLi9yZW5kZXIvRWFzZWxSZW5kZXJlclwiO1xuaW1wb3J0IFBpeGVsUmVuZGVyZXIgZnJvbSBcIi4vcmVuZGVyL1BpeGVsUmVuZGVyZXJcIjtcbmltcG9ydCBQaXhpUmVuZGVyZXIgZnJvbSBcIi4vcmVuZGVyL1BpeGlSZW5kZXJlclwiO1xuaW1wb3J0IFdlYkdMUmVuZGVyZXIgZnJvbSBcIi4vcmVuZGVyL1dlYkdMUmVuZGVyZXJcIjtcbmltcG9ydCBDdXN0b21SZW5kZXJlciBmcm9tIFwiLi9yZW5kZXIvQ3VzdG9tUmVuZGVyZXJcIjtcblxuaW1wb3J0IFpvbmUgZnJvbSBcIi4vem9uZS9ab25lXCI7XG5pbXBvcnQgTGluZVpvbmUgZnJvbSBcIi4vem9uZS9MaW5lWm9uZVwiO1xuaW1wb3J0IENpcmNsZVpvbmUgZnJvbSBcIi4vem9uZS9DaXJjbGVab25lXCI7XG5pbXBvcnQgUG9pbnRab25lIGZyb20gXCIuL3pvbmUvUG9pbnRab25lXCI7XG5pbXBvcnQgUmVjdFpvbmUgZnJvbSBcIi4vem9uZS9SZWN0Wm9uZVwiO1xuaW1wb3J0IEltYWdlWm9uZSBmcm9tIFwiLi96b25lL0ltYWdlWm9uZVwiO1xuXG5pbXBvcnQgRGVidWcgZnJvbSBcIi4vZGVidWcvRGVidWdcIjtcblxuLy8gbmFtZXNwYWNlXG5Qcm90b24uUGFydGljbGUgPSBQYXJ0aWNsZTtcblByb3Rvbi5Qb29sID0gUG9vbDtcblxuUHJvdG9uLlV0aWwgPSBVdGlsO1xuUHJvdG9uLkNvbG9yVXRpbCA9IENvbG9yVXRpbDtcblByb3Rvbi5NYXRoVXRpbCA9IE1hdGhVdGlsO1xuUHJvdG9uLlZlY3RvcjJEID0gUHJvdG9uLlZlY3RvciA9IFZlY3RvcjJEO1xuUHJvdG9uLlBvbGFyMkQgPSBQcm90b24uUG9sYXIgPSBQb2xhcjJEO1xuUHJvdG9uLkFycmF5U3BhbiA9IEFycmF5U3BhbjtcblByb3Rvbi5SZWN0YW5nbGUgPSBSZWN0YW5nbGU7XG5Qcm90b24uUmF0ZSA9IFJhdGU7XG5Qcm90b24uZWFzZSA9IGVhc2U7XG5Qcm90b24uU3BhbiA9IFNwYW47XG5Qcm90b24uTWF0MyA9IE1hdDM7XG5Qcm90b24uZ2V0U3BhbiA9IChhLCBiLCBjZW50ZXIpID0+IG5ldyBTcGFuKGEsIGIsIGNlbnRlcik7XG5Qcm90b24uY3JlYXRlQXJyYXlTcGFuID0gQXJyYXlTcGFuLmNyZWF0ZUFycmF5U3BhbjtcblxuUHJvdG9uLkluaXRpYWxpemUgPSBQcm90b24uSW5pdCA9IEluaXRpYWxpemU7XG5Qcm90b24uTGlmZSA9IFByb3Rvbi5MID0gTGlmZTtcblByb3Rvbi5Qb3NpdGlvbiA9IFByb3Rvbi5QID0gUG9zaXRpb247XG5Qcm90b24uVmVsb2NpdHkgPSBQcm90b24uViA9IFZlbG9jaXR5O1xuUHJvdG9uLk1hc3MgPSBQcm90b24uTSA9IE1hc3M7XG5Qcm90b24uUmFkaXVzID0gUHJvdG9uLlIgPSBSYWRpdXM7XG5Qcm90b24uQm9keSA9IFByb3Rvbi5CID0gQm9keTtcblxuUHJvdG9uLkJlaGF2aW91ciA9IEJlaGF2aW91cjtcblByb3Rvbi5Gb3JjZSA9IFByb3Rvbi5GID0gRm9yY2U7XG5Qcm90b24uQXR0cmFjdGlvbiA9IFByb3Rvbi5BID0gQXR0cmFjdGlvbjtcblByb3Rvbi5SYW5kb21EcmlmdCA9IFByb3Rvbi5SRCA9IFJhbmRvbURyaWZ0O1xuUHJvdG9uLkdyYXZpdHkgPSBQcm90b24uRyA9IEdyYXZpdHk7XG5Qcm90b24uQ29sbGlzaW9uID0gQ29sbGlzaW9uO1xuUHJvdG9uLkNyb3NzWm9uZSA9IENyb3NzWm9uZTtcblByb3Rvbi5BbHBoYSA9IEFscGhhO1xuUHJvdG9uLlNjYWxlID0gUHJvdG9uLlMgPSBTY2FsZTtcblByb3Rvbi5Sb3RhdGUgPSBSb3RhdGU7XG5Qcm90b24uQ29sb3IgPSBDb2xvcjtcblByb3Rvbi5SZXB1bHNpb24gPSBSZXB1bHNpb247XG5Qcm90b24uQ3ljbG9uZSA9IEN5Y2xvbmU7XG5Qcm90b24uR3Jhdml0eVdlbGwgPSBHcmF2aXR5V2VsbDtcblxuUHJvdG9uLkVtaXR0ZXIgPSBFbWl0dGVyO1xuUHJvdG9uLkJlaGF2aW91ckVtaXR0ZXIgPSBCZWhhdmlvdXJFbWl0dGVyO1xuUHJvdG9uLkZvbGxvd0VtaXR0ZXIgPSBGb2xsb3dFbWl0dGVyO1xuXG5Qcm90b24uWm9uZSA9IFpvbmU7XG5Qcm90b24uTGluZVpvbmUgPSBMaW5lWm9uZTtcblByb3Rvbi5DaXJjbGVab25lID0gQ2lyY2xlWm9uZTtcblByb3Rvbi5Qb2ludFpvbmUgPSBQb2ludFpvbmU7XG5Qcm90b24uUmVjdFpvbmUgPSBSZWN0Wm9uZTtcblByb3Rvbi5JbWFnZVpvbmUgPSBJbWFnZVpvbmU7XG5cblByb3Rvbi5DYW52YXNSZW5kZXJlciA9IENhbnZhc1JlbmRlcmVyO1xuUHJvdG9uLkRvbVJlbmRlcmVyID0gRG9tUmVuZGVyZXI7XG5Qcm90b24uRWFzZWxSZW5kZXJlciA9IEVhc2VsUmVuZGVyZXI7XG5Qcm90b24uUGl4aVJlbmRlcmVyID0gUGl4aVJlbmRlcmVyO1xuUHJvdG9uLlBpeGVsUmVuZGVyZXIgPSBQaXhlbFJlbmRlcmVyO1xuUHJvdG9uLldlYkdMUmVuZGVyZXIgPSBQcm90b24uV2ViR2xSZW5kZXJlciA9IFdlYkdMUmVuZGVyZXI7XG5Qcm90b24uQ3VzdG9tUmVuZGVyZXIgPSBDdXN0b21SZW5kZXJlcjtcblxuUHJvdG9uLkRlYnVnID0gRGVidWc7XG5VdGlsLmFzc2lnbihQcm90b24sIGVhc2UpO1xuXG4vLyBleHBvcnRcbmV4cG9ydCBkZWZhdWx0IFByb3RvbjtcbiJdLCJuYW1lcyI6WyJpcG90IiwibGVuZ3RoIiwibmhwb3QiLCJpIiwibWFrZVRyYW5zbGF0aW9uIiwidHgiLCJ0eSIsIm1ha2VSb3RhdGlvbiIsImFuZ2xlSW5SYWRpYW5zIiwiYyIsIk1hdGgiLCJjb3MiLCJzIiwic2luIiwibWFrZVNjYWxlIiwic3giLCJzeSIsIm1hdHJpeE11bHRpcGx5IiwiYSIsImIiLCJhMDAiLCJhMDEiLCJhMDIiLCJhMTAiLCJhMTEiLCJhMTIiLCJhMjAiLCJhMjEiLCJhMjIiLCJiMDAiLCJiMDEiLCJiMDIiLCJiMTAiLCJiMTEiLCJiMTIiLCJiMjAiLCJiMjEiLCJiMjIiLCJjcmVhdGVDYW52YXMiLCJpZCIsIndpZHRoIiwiaGVpZ2h0IiwicG9zaXRpb24iLCJkb20iLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsIm9wYWNpdHkiLCJ0cmFuc2Zvcm0iLCJjcmVhdGVEaXYiLCJyZXNpemUiLCJtYXJnaW5MZWZ0IiwibWFyZ2luVG9wIiwiZGl2IiwieCIsInkiLCJzY2FsZSIsInJvdGF0ZSIsIndpbGxDaGFuZ2UiLCJjc3MzIiwidHJhbnNmb3JtM2QiLCJrZXkiLCJ2YWwiLCJia2V5IiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzdWJzdHIiLCJpbWdzQ2FjaGUiLCJjYW52YXNDYWNoZSIsImNhbnZhc0lkIiwiZ2V0SW1hZ2VEYXRhIiwiY29udGV4dCIsImltYWdlIiwicmVjdCIsImRyYXdJbWFnZSIsImltYWdlZGF0YSIsImNsZWFyUmVjdCIsImdldEltZ0Zyb21DYWNoZSIsImltZyIsImNhbGxiYWNrIiwicGFyYW0iLCJzcmMiLCJJbWFnZSIsIm9ubG9hZCIsImUiLCJ0YXJnZXQiLCJnZXRDYW52YXNGcm9tQ2FjaGUiLCJXZWJHTFV0aWwiLCJjYW52YXMiLCJEb21VdGlsIiwiZ2V0Q29udGV4dCIsImluaXRWYWx1ZSIsInZhbHVlIiwiZGVmYXVsdHMiLCJ1bmRlZmluZWQiLCJpc0FycmF5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwiZW1wdHlBcnJheSIsImFyciIsInRvQXJyYXkiLCJnZXRSYW5kRnJvbUFycmF5IiwiZmxvb3IiLCJyYW5kb20iLCJlbXB0eU9iamVjdCIsIm9iaiIsImlnbm9yZSIsImluZGV4T2YiLCJjbGFzc0FwcGx5IiwiY29uc3RydWN0b3IiLCJhcmdzIiwiRmFjdG9yeUZ1bmMiLCJiaW5kIiwiYXBwbHkiLCJjb25jYXQiLCJJbWdVdGlsIiwiZGVzdHJveUFsbCIsImRlc3Ryb3kiLCJhc3NpZ24iLCJzb3VyY2UiLCJoYXNPd25Qcm9wZXJ0eSIsImlkc01hcCIsIlB1aWQiLCJfaW5kZXgiLCJfY2FjaGUiLCJ0eXBlIiwiZ2V0SWQiLCJ1aWQiLCJnZXRJZEZyb21DYWNoZSIsImlzQm9keSIsImlzSW5uZXIiLCJnZXRUYXJnZXQiLCJQb29sIiwibnVtIiwidG90YWwiLCJjYWNoZSIsImdldCIsInBhcmFtcyIsInAiLCJfX3B1aWQiLCJwb3AiLCJjcmVhdGVPckNsb25lIiwiZXhwaXJlIiwiZ2V0Q2FjaGUiLCJwdXNoIiwiY3JlYXRlIiwiVXRpbCIsImNsb25lIiwiZ2V0Q291bnQiLCJjb3VudCIsIlN0YXRzIiwicHJvdG9uIiwiY29udGFpbmVyIiwiZW1pdHRlckluZGV4IiwicmVuZGVyZXJJbmRleCIsInVwZGF0ZSIsImJvZHkiLCJhZGQiLCJlbWl0dGVyIiwiZ2V0RW1pdHRlciIsInJlbmRlcmVyIiwiZ2V0UmVuZGVyZXIiLCJzdHIiLCJlbWl0dGVycyIsImVtaXRTcGVlZCIsImdldEVtaXR0ZXJQb3MiLCJpbml0aWFsaXplcyIsImNvbmNhdEFyciIsImJlaGF2aW91cnMiLCJuYW1lIiwiZ2V0Q3JlYXRlZE51bWJlciIsInBvb2wiLCJpbm5lckhUTUwiLCJjc3NUZXh0Iiwiam9pbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJiZyIsImNvbG9yIiwicGFyZW50Tm9kZSIsImFwcGVuZENoaWxkIiwicmVuZGVyZXJzIiwicmVzdWx0IiwiY3Bvb2wiLCJyb3VuZCIsInJlbW92ZUNoaWxkIiwiRXZlbnREaXNwYXRjaGVyIiwiX2xpc3RlbmVycyIsImRpc3BhdGNoRXZlbnQiLCJoYXNFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzIiwibGlzdGVuZXIiLCJzcGxpY2UiLCJsaXN0ZW5lcnMiLCJoYW5kbGVyIiwiUEkiLCJJTkZJTklUWSIsIkluZmluaXR5IiwiTWF0aFV0aWwiLCJQSXgyIiwiUElfMiIsIlBJXzE4MCIsIk4xODBfUEkiLCJpc0luZmluaXR5IiwicmFuZG9tQVRvQiIsImlzSW50IiwicmFuZG9tRmxvYXRpbmciLCJjZW50ZXIiLCJmIiwicmFuZG9tQ29sb3IiLCJzbGljZSIsInJhbmRvbVpvbmUiLCJkaXNwbGF5IiwiayIsImRpZ2l0cyIsInBvdyIsImRlZ3JlZVRyYW5zZm9ybSIsInRvQ29sb3IxNiIsIkludGVncmF0aW9uIiwiY2FsY3VsYXRlIiwicGFydGljbGVzIiwidGltZSIsImRhbXBpbmciLCJldWxlckludGVncmF0ZSIsInBhcnRpY2xlIiwic2xlZXAiLCJvbGQiLCJjb3B5IiwidiIsIm11bHRpcGx5U2NhbGFyIiwibWFzcyIsImNsZWFyIiwiUHJvdG9uIiwiaW50ZWdyYXRpb25UeXBlIiwibm93IiwidGhlbiIsImVsYXBzZWQiLCJzdGF0cyIsIkVVTEVSIiwiaW50ZWdyYXRvciIsIl9mcHMiLCJfaW50ZXJ2YWwiLCJERUZBVUxUX0lOVEVSVkFMIiwiYWRkUmVuZGVyZXIiLCJyZW5kZXIiLCJpbml0IiwicmVtb3ZlUmVuZGVyZXIiLCJpbmRleCIsInJlbW92ZSIsImFkZEVtaXR0ZXIiLCJwYXJlbnQiLCJFTUlUVEVSX0FEREVEIiwicmVtb3ZlRW1pdHRlciIsIkVNSVRURVJfUkVNT1ZFRCIsIlBST1RPTl9VUERBVEUiLCJVU0VfQ0xPQ0siLCJEYXRlIiwiZ2V0VGltZSIsImFtZW5kQ2hhbmdlVGFic0J1ZyIsImVtaXR0ZXJzVXBkYXRlIiwiUFJPVE9OX1VQREFURV9BRlRFUiIsImdldEFsbFBhcnRpY2xlcyIsImRlc3Ryb3lBbGxFbWl0dGVycyIsImRlc3Ryb3lPdGhlciIsInNldFRpbWVvdXQiLCJmcHMiLCJNRUFTVVJFIiwiUksyIiwiUEFSVElDTEVfQ1JFQVRFRCIsIlBBUlRJQ0xFX1VQREFURSIsIlBBUlRJQ0xFX1NMRUVQIiwiUEFSVElDTEVfREVBRCIsIlJnYiIsInIiLCJnIiwicmVzZXQiLCJoYXNQcm9wIiwic2V0UHJvcCIsInByb3BzIiwicHJvcCIsIlNwYW4iLCJnZXRTcGFuVmFsdWUiLCJzZXRWZWN0b3JWYWwiLCJjb25mIiwiZWFzZUxpbmVhciIsImVhc2VJblF1YWQiLCJlYXNlT3V0UXVhZCIsImVhc2VJbk91dFF1YWQiLCJlYXNlSW5DdWJpYyIsImVhc2VPdXRDdWJpYyIsImVhc2VJbk91dEN1YmljIiwiZWFzZUluUXVhcnQiLCJlYXNlT3V0UXVhcnQiLCJlYXNlSW5PdXRRdWFydCIsImVhc2VJblNpbmUiLCJlYXNlT3V0U2luZSIsImVhc2VJbk91dFNpbmUiLCJlYXNlSW5FeHBvIiwiZWFzZU91dEV4cG8iLCJlYXNlSW5PdXRFeHBvIiwiZWFzZUluQ2lyYyIsInNxcnQiLCJlYXNlT3V0Q2lyYyIsImVhc2VJbk91dENpcmMiLCJlYXNlSW5CYWNrIiwiZWFzZU91dEJhY2siLCJlYXNlSW5PdXRCYWNrIiwiZ2V0RWFzaW5nIiwiZWFzZSIsIlZlY3RvcjJEIiwic2V0Iiwic2V0WCIsInNldFkiLCJnZXRHcmFkaWVudCIsImF0YW4yIiwidyIsImFkZFZlY3RvcnMiLCJhZGRYWSIsInN1YiIsInN1YlZlY3RvcnMiLCJkaXZpZGVTY2FsYXIiLCJuZWdhdGUiLCJkb3QiLCJsZW5ndGhTcSIsIm5vcm1hbGl6ZSIsImRpc3RhbmNlVG8iLCJkaXN0YW5jZVRvU3F1YXJlZCIsInRoYSIsImR4IiwiZHkiLCJsZXJwIiwiYWxwaGEiLCJlcXVhbHMiLCJQYXJ0aWNsZSIsImRhdGEiLCJyZ2IiLCJQcm9wVXRpbCIsImdldERpcmVjdGlvbiIsImxpZmUiLCJhZ2UiLCJkZWFkIiwic3ByaXRlIiwiZW5lcmd5IiwicmFkaXVzIiwicm90YXRpb24iLCJlYXNpbmciLCJyZW1vdmVBbGxCZWhhdmlvdXJzIiwiYXBwbHlCZWhhdmlvdXJzIiwibWF4IiwiYXBwbHlCZWhhdmlvdXIiLCJhZGRCZWhhdmlvdXIiLCJiZWhhdmlvdXIiLCJwYXJlbnRzIiwiaW5pdGlhbGl6ZSIsImFkZEJlaGF2aW91cnMiLCJyZW1vdmVCZWhhdmlvdXIiLCJoZXhUb1JnYiIsImgiLCJoZXgxNiIsInN1YnN0cmluZyIsInBhcnNlSW50IiwicmdiVG9IZXgiLCJyYmciLCJnZXRIZXgxNkZyb21QYXJ0aWNsZSIsIk51bWJlciIsIlBvbGFyMkQiLCJhYnMiLCJzZXRSIiwic2V0VGhhIiwidG9WZWN0b3IiLCJnZXRYIiwiZ2V0WSIsIk1hdDMiLCJtYXQzIiwibWF0IiwiRmxvYXQzMkFycmF5IiwibWF0MSIsIm1hdDIiLCJtdWx0aXBseSIsImludmVyc2UiLCJkIiwibXVsdGlwbHlWZWMyIiwibSIsInZlYyIsImdldFZhbHVlIiwic2V0U3BhblZhbHVlIiwicGFuIiwiQXJyYXlTcGFuIiwiX2FyciIsImNyZWF0ZUFycmF5U3BhbiIsIlJlY3RhbmdsZSIsImJvdHRvbSIsInJpZ2h0IiwiY29udGFpbnMiLCJSYXRlIiwibnVtcGFuIiwidGltZXBhbiIsIm51bVBhbiIsInRpbWVQYW4iLCJzdGFydFRpbWUiLCJuZXh0VGltZSIsIkluaXRpYWxpemUiLCJMaWZlIiwibGlmZVBhbiIsIlpvbmUiLCJ2ZWN0b3IiLCJjcm9zc1R5cGUiLCJhbGVydCIsImdldFBvc2l0aW9uIiwiY3Jvc3NpbmciLCJQb2ludFpvbmUiLCJjb25zb2xlIiwiZXJyb3IiLCJQb3NpdGlvbiIsInpvbmUiLCJWZWxvY2l0eSIsInJwYW4iLCJ0aGFwYW4iLCJyUGFuIiwidGhhUGFuIiwibm9ybWFsaXplVmVsb2NpdHkiLCJ2ciIsInBvbGFyMmQiLCJNYXNzIiwibWFzc1BhbiIsIlJhZGl1cyIsIm9sZFJhZGl1cyIsIkJvZHkiLCJpbWFnZVRhcmdldCIsImlubmVyIiwiQmVoYXZpb3VyIiwibm9ybWFsaXplRm9yY2UiLCJmb3JjZSIsIm5vcm1hbGl6ZVZhbHVlIiwiRm9yY2UiLCJmeCIsImZ5IiwiQXR0cmFjdGlvbiIsInRhcmdldFBvc2l0aW9uIiwicmFkaXVzU3EiLCJhdHRyYWN0aW9uRm9yY2UiLCJSYW5kb21EcmlmdCIsImRyaWZ0WCIsImRyaWZ0WSIsImRlbGF5IiwicGFuRm9jZSIsIkdyYXZpdHkiLCJDb2xsaXNpb24iLCJjb2xsaXNpb25Qb29sIiwiZGVsdGEiLCJuZXdQb29sIiwib3RoZXJQYXJ0aWNsZSIsIm92ZXJsYXAiLCJ0b3RhbE1hc3MiLCJhdmVyYWdlTWFzczEiLCJhdmVyYWdlTWFzczIiLCJkaXN0YW5jZSIsIkNyb3NzWm9uZSIsIkFscGhhIiwic2FtZSIsImFscGhhQSIsImFscGhhQiIsIlNjYWxlIiwic2NhbGVBIiwic2NhbGVCIiwiUm90YXRlIiwiaW5mbHVlbmNlIiwicm90YXRpb25BIiwicm90YXRpb25CIiwiQ29sb3IiLCJjb2xvckEiLCJDb2xvclV0aWwiLCJjb2xvckIiLCJDSEFOR0lORyIsIkN5Y2xvbmUiLCJhbmdsZSIsInNldEFuZ2xlQW5kRm9yY2UiLCJzcGFuIiwiU3RyaW5nIiwidG9Mb3dlckNhc2UiLCJjYW5nbGUiLCJjeWNsb25lIiwiZ3JhZGllbnQiLCJSZXB1bHNpb24iLCJHcmF2aXR5V2VsbCIsImNlbnRlclBvaW50IiwiZGlzdGFuY2VWZWMiLCJkaXN0YW5jZVNxIiwiZmFjdG9yIiwiYmluZEVtaXR0ZXIiLCJFbWl0dGVyIiwiZW1pdFRpbWUiLCJ0b3RhbFRpbWUiLCJyYXRlIiwiZW1pdCIsInN0b3BlZCIsImlzTmFOIiwic3RvcCIsInByZUVtaXQiLCJvbGRTdG9wZWQiLCJvbGRFbWl0VGltZSIsIm9sZFRvdGFsVGltZSIsInN0ZXAiLCJyZW1vdmVBbGxQYXJ0aWNsZXMiLCJhZGRTZWxmSW5pdGlhbGl6ZSIsImFkZEluaXRpYWxpemUiLCJyZXN0IiwicmVtb3ZlSW5pdGlhbGl6ZSIsImluaXRpYWxpemVyIiwicmVtb3ZlQWxsSW5pdGlhbGl6ZXJzIiwiYXJndW1lbnRzIiwiZW1pdHRpbmciLCJpbnRlZ3JhdGUiLCJkaXNwYXRjaCIsImV2ZW50IiwiYmluZEV2ZW50IiwiY3JlYXRlUGFydGljbGUiLCJzZXR1cFBhcnRpY2xlIiwiSW5pdGlhbGl6ZVV0aWwiLCJCZWhhdmlvdXJFbWl0dGVyIiwic2VsZkJlaGF2aW91cnMiLCJhZGRTZWxmQmVoYXZpb3VyIiwicmVtb3ZlU2VsZkJlaGF2aW91ciIsIkZvbGxvd0VtaXR0ZXIiLCJtb3VzZVRhcmdldCIsIndpbmRvdyIsIl9hbGxvd0VtaXR0aW5nIiwiaW5pdEV2ZW50SGFuZGxlciIsIm1vdXNlbW92ZUhhbmRsZXIiLCJtb3VzZW1vdmUiLCJtb3VzZWRvd25IYW5kbGVyIiwibW91c2Vkb3duIiwibW91c2V1cEhhbmRsZXIiLCJtb3VzZXVwIiwibGF5ZXJYIiwibGF5ZXJZIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJpc0ltYWdlIiwiX19pc0ltYWdlIiwidGFnTmFtZSIsIm5vZGVOYW1lIiwiaXNTdHJpbmciLCJCYXNlUmVuZGVyZXIiLCJlbGVtZW50Iiwic3Ryb2tlIiwiY2lyY2xlQ29uZiIsImlzQ2lyY2xlIiwic2V0U3Ryb2tlIiwidGhpbmtuZXNzIiwiX3Byb3RvblVwZGF0ZUhhbmRsZXIiLCJvblByb3RvblVwZGF0ZSIsIl9wcm90b25VcGRhdGVBZnRlckhhbmRsZXIiLCJvblByb3RvblVwZGF0ZUFmdGVyIiwiX2VtaXR0ZXJBZGRlZEhhbmRsZXIiLCJvbkVtaXR0ZXJBZGRlZCIsIl9lbWl0dGVyUmVtb3ZlZEhhbmRsZXIiLCJvbkVtaXR0ZXJSZW1vdmVkIiwiX3BhcnRpY2xlQ3JlYXRlZEhhbmRsZXIiLCJvblBhcnRpY2xlQ3JlYXRlZCIsIl9wYXJ0aWNsZVVwZGF0ZUhhbmRsZXIiLCJvblBhcnRpY2xlVXBkYXRlIiwiX3BhcnRpY2xlRGVhZEhhbmRsZXIiLCJvblBhcnRpY2xlRGVhZCIsIkNhbnZhc1JlbmRlcmVyIiwiYnVmZmVyQ2FjaGUiLCJhZGRJbWcyQm9keSIsIlR5cGVzIiwiZHJhd0NpcmNsZSIsImJ1ZmZlciIsImNyZWF0ZUJ1ZmZlciIsImJ1ZkNvbnRleHQiLCJnbG9iYWxBbHBoYSIsImdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiIsImZpbGxTdHlsZSIsImZpbGxSZWN0Iiwic2F2ZSIsInRyYW5zbGF0ZSIsInJlc3RvcmUiLCJiZWdpblBhdGgiLCJhcmMiLCJzdHJva2VTdHlsZSIsImxpbmVXaWR0aCIsImNsb3NlUGF0aCIsImZpbGwiLCJzaXplIiwiRG9tUmVuZGVyZXIiLCJjcmVhdGVCb2R5IiwiYm9keVJlYWR5IiwiYmFja2dyb3VuZENvbG9yIiwiY3JlYXRlQ2lyY2xlIiwiY3JlYXRlU3ByaXRlIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyQ29sb3IiLCJib3JkZXJXaWR0aCIsInVybCIsImJhY2tncm91bmRJbWFnZSIsIkVhc2VsUmVuZGVyZXIiLCJhZGRDaGlsZCIsInNjYWxlWCIsInNjYWxlWSIsImdyYXBoaWNzIiwicmVnWCIsInJlZ1kiLCJjcmVhdGVqcyIsIkdyYXBoaWNzIiwiYmVnaW5TdHJva2UiLCJiZWdpbkZpbGwiLCJzaGFwZSIsIlNoYXBlIiwiUGl4ZWxSZW5kZXJlciIsInJlY3RhbmdsZSIsImltYWdlRGF0YSIsImNyZWF0ZUltYWdlRGF0YSIsInB1dEltYWdlRGF0YSIsInNldFBpeGVsIiwiZWxlbWVudHdpZHRoIiwiUElYSUNsYXNzIiwiUGl4aVJlbmRlcmVyIiwic2V0Q29sb3IiLCJibGVuZE1vZGUiLCJzZXRQSVhJIiwiUElYSSIsIlNwcml0ZSIsImNyZWF0ZUZyb21JbWFnZSIsImZyb20iLCJmcm9tSW1hZ2UiLCJ0aW50IiwiYW5jaG9yIiwiZW5kRmlsbCIsIk1TdGFjayIsIm1hdHMiLCJ0b3AiLCJXZWJHTFJlbmRlcmVyIiwiZ2wiLCJhbnRpYWxpYXMiLCJzdGVuY2lsIiwiZGVwdGgiLCJpbml0VmFyIiwic2V0TWF4UmFkaXVzIiwiaW5pdFNoYWRlcnMiLCJpbml0QnVmZmVycyIsImJsZW5kRXF1YXRpb24iLCJGVU5DX0FERCIsImJsZW5kRnVuYyIsIlNSQ19BTFBIQSIsIk9ORV9NSU5VU19TUkNfQUxQSEEiLCJlbmFibGUiLCJCTEVORCIsInVtYXQiLCJzbWF0IiwibXN0YWNrIiwidmlld3BvcnQiLCJjaXJjbGVDYW52YXNVUkwiLCJnZXRWZXJ0ZXhTaGFkZXIiLCJ2c1NvdXJjZSIsImdldEZyYWdtZW50U2hhZGVyIiwiZnNTb3VyY2UiLCJ0ZXh0dXJlYnVmZmVycyIsIkEiLCJCIiwiZ2V0U2hhZGVyIiwiZnMiLCJzaGFkZXIiLCJjcmVhdGVTaGFkZXIiLCJGUkFHTUVOVF9TSEFERVIiLCJWRVJURVhfU0hBREVSIiwic2hhZGVyU291cmNlIiwiY29tcGlsZVNoYWRlciIsImdldFNoYWRlclBhcmFtZXRlciIsIkNPTVBJTEVfU1RBVFVTIiwiZ2V0U2hhZGVySW5mb0xvZyIsImZyYWdtZW50U2hhZGVyIiwidmVydGV4U2hhZGVyIiwic3Byb2dyYW0iLCJjcmVhdGVQcm9ncmFtIiwiYXR0YWNoU2hhZGVyIiwibGlua1Byb2dyYW0iLCJnZXRQcm9ncmFtUGFyYW1ldGVyIiwiTElOS19TVEFUVVMiLCJ1c2VQcm9ncmFtIiwidnBhIiwiZ2V0QXR0cmliTG9jYXRpb24iLCJ0Y2EiLCJlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSIsInRNYXRVbmlmb3JtIiwiZ2V0VW5pZm9ybUxvY2F0aW9uIiwic2FtcGxlclVuaWZvcm0iLCJ1c2VUZXgiLCJ1bmlmb3JtMWkiLCJ2cyIsImlkeCIsInVuaXRJQnVmZmVyIiwiYmluZEJ1ZmZlciIsIkVMRU1FTlRfQVJSQVlfQlVGRkVSIiwiYnVmZmVyRGF0YSIsIlVpbnQxNkFycmF5IiwiU1RBVElDX0RSQVciLCJpZHMiLCJ1bml0STMzIiwic3RyaXBCdWZmZXIiLCJyYWlkdXMiLCJjaXJjbGVDYW52YXNSYWRpdXMiLCJ0b0RhdGFVUkwiLCJkcmF3SW1nMkNhbnZhcyIsIl93IiwiX2giLCJfd2lkdGgiLCJfaGVpZ2h0IiwiX3NjYWxlWCIsIl9zY2FsZVkiLCJjcmVhdGVUZXh0dXJlIiwidGV4dHVyZSIsInZjQnVmZmVyIiwidGNCdWZmZXIiLCJBUlJBWV9CVUZGRVIiLCJiaW5kVGV4dHVyZSIsIlRFWFRVUkVfMkQiLCJ0ZXhJbWFnZTJEIiwiUkdCQSIsIlVOU0lHTkVEX0JZVEUiLCJ0ZXhQYXJhbWV0ZXJpIiwiVEVYVFVSRV9NQUdfRklMVEVSIiwiTElORUFSIiwiVEVYVFVSRV9NSU5fRklMVEVSIiwiTElORUFSX01JUE1BUF9ORUFSRVNUIiwiZ2VuZXJhdGVNaXBtYXAiLCJ0ZXh0dXJlTG9hZGVkIiwidGV4dHVyZVdpZHRoIiwidGV4dHVyZUhlaWdodCIsInRtYXQiLCJpbWF0Iiwib2xkU2NhbGUiLCJ1cGRhdGVNYXRyaXgiLCJ1bmlmb3JtM2YiLCJ1bmlmb3JtTWF0cml4M2Z2IiwidmVydGV4QXR0cmliUG9pbnRlciIsIkZMT0FUIiwiZHJhd0VsZW1lbnRzIiwiVFJJQU5HTEVTIiwiVU5TSUdORURfU0hPUlQiLCJtb3ZlT3JpZ2luTWF0cml4IiwidHJhbnNsYXRpb25NYXRyaXgiLCJhbmdlbCIsInJvdGF0aW9uTWF0cml4Iiwic2NhbGVNYXRyaXgiLCJtYXRyaXgiLCJDdXN0b21SZW5kZXJlciIsIkxpbmVab25lIiwieDEiLCJ5MSIsIngyIiwieTIiLCJkaXJlY3Rpb24iLCJtaW54IiwibWluIiwibWlueSIsIm1heHgiLCJtYXh5IiwieHh5eSIsImdldExlbmd0aCIsIkMiLCJEIiwiZ2V0RGlzdGFuY2UiLCJnZXRTeW1tZXRyaWMiLCJ0aGEyIiwidGhhMSIsIm9sZHgiLCJvbGR5IiwicmFuZ2VPdXQiLCJDaXJjbGVab25lIiwicmFuZG9tUmFkaXVzIiwic2V0Q2VudGVyIiwiUmVjdFpvbmUiLCJJbWFnZVpvbmUiLCJ2ZWN0b3JzIiwic2V0VmVjdG9ycyIsImoiLCJsZW5ndGgxIiwibGVuZ3RoMiIsImdldEJvdW5kIiwiZ2V0Q29sb3IiLCJmdW5jIiwiZ2V0U3R5bGUiLCJkcmF3Wm9uZSIsIm1vdmVUbyIsImxpbmVUbyIsImRyYXdSZWN0IiwiZHJhd0VtaXR0ZXIiLCJWZWN0b3IiLCJQb2xhciIsImdldFNwYW4iLCJJbml0IiwiTCIsIlAiLCJWIiwiTSIsIlIiLCJGIiwiUkQiLCJHIiwiUyIsIldlYkdsUmVuZGVyZXIiLCJEZWJ1ZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtCQUFlO0VBQ2I7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFQSxFQUFBQSxJQVphLEVBWVJDLFNBQUFBLElBQUFBLENBQUFBLE1BWlEsRUFZQTtFQUNYLElBQUEsT0FBTyxDQUFDQSxNQUFNLEdBQUlBLE1BQU0sR0FBRyxDQUFwQixNQUE0QixDQUFuQyxDQUFBO0VBQ0QsR0FkWTs7RUFnQmI7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFQyxFQUFBQSxLQTNCYSxFQTJCUEQsU0FBQUEsS0FBQUEsQ0FBQUEsTUEzQk8sRUEyQkM7RUFDWixJQUFBLEVBQUVBLE1BQUYsQ0FBQTs7RUFDQSxJQUFBLEtBQUssSUFBSUUsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxFQUFwQixFQUF3QkEsQ0FBQyxLQUFLLENBQTlCLEVBQWlDO0VBQy9CRixNQUFBQSxNQUFNLEdBQUdBLE1BQU0sR0FBSUEsTUFBTSxJQUFJRSxDQUE3QixDQUFBO0VBQ0QsS0FBQTs7RUFFRCxJQUFPRixPQUFBQSxNQUFNLEdBQUcsQ0FBaEIsQ0FBQTtFQUNELEdBbENZOztFQW9DYjtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFRyxFQUFBQSxlQWpEYSxFQUFBLFNBQUEsZUFBQSxDQWlER0MsRUFqREgsRUFpRE9DLEVBakRQLEVBaURXO0VBQ3RCLElB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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9uLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMvV2ViR0xVdGlsLmpzIiwiLi4vc3JjL3V0aWxzL0RvbVV0aWwuanMiLCIuLi9zcmMvdXRpbHMvSW1nVXRpbC5qcyIsIi4uL3NyYy91dGlscy9VdGlsLmpzIiwiLi4vc3JjL3V0aWxzL1B1aWQuanMiLCIuLi9zcmMvY29yZS9Qb29sLmpzIiwiLi4vc3JjL2RlYnVnL1N0YXRzLmpzIiwiLi4vc3JjL2V2ZW50cy9FdmVudERpc3BhdGNoZXIuanMiLCIuLi9zcmMvbWF0aC9NYXRoVXRpbC5qcyIsIi4uL3NyYy9tYXRoL0ludGVncmF0aW9uLmpzIiwiLi4vc3JjL2NvcmUvUHJvdG9uLmpzIiwiLi4vc3JjL3V0aWxzL1JnYi5qcyIsIi4uL3NyYy91dGlscy9Qcm9wVXRpbC5qcyIsIi4uL3NyYy9tYXRoL2Vhc2UuanMiLCIuLi9zcmMvbWF0aC9WZWN0b3IyRC5qcyIsIi4uL3NyYy9jb3JlL1BhcnRpY2xlLmpzIiwiLi4vc3JjL3V0aWxzL0NvbG9yVXRpbC5qcyIsIi4uL3NyYy9tYXRoL1BvbGFyMkQuanMiLCIuLi9zcmMvbWF0aC9NYXQzLmpzIiwiLi4vc3JjL21hdGgvU3Bhbi5qcyIsIi4uL3NyYy9tYXRoL0FycmF5U3Bhbi5qcyIsIi4uL3NyYy9tYXRoL1JlY3RhbmdsZS5qcyIsIi4uL3NyYy9pbml0aWFsaXplL1JhdGUuanMiLCIuLi9zcmMvaW5pdGlhbGl6ZS9Jbml0aWFsaXplLmpzIiwiLi4vc3JjL2luaXRpYWxpemUvTGlmZS5qcyIsIi4uL3NyYy96b25lL1pvbmUuanMiLCIuLi9zcmMvem9uZS9Qb2ludFpvbmUuanMiLCIuLi9zcmMvaW5pdGlhbGl6ZS9Qb3NpdGlvbi5qcyIsIi4uL3NyYy9pbml0aWFsaXplL1ZlbG9jaXR5LmpzIiwiLi4vc3JjL2luaXRpYWxpemUvTWFzcy5qcyIsIi4uL3NyYy9pbml0aWFsaXplL1JhZGl1cy5qcyIsIi4uL3NyYy9pbml0aWFsaXplL0JvZHkuanMiLCIuLi9zcmMvYmVoYXZpb3VyL0JlaGF2aW91ci5qcyIsIi4uL3NyYy9iZWhhdmlvdXIvRm9yY2UuanMiLCIuLi9zcmMvYmVoYXZpb3VyL0F0dHJhY3Rpb24uanMiLCIuLi9zcmMvYmVoYXZpb3VyL1JhbmRvbURyaWZ0LmpzIiwiLi4vc3JjL2JlaGF2aW91ci9HcmF2aXR5LmpzIiwiLi4vc3JjL2JlaGF2aW91ci9Db2xsaXNpb24uanMiLCIuLi9zcmMvYmVoYXZpb3VyL0Nyb3NzWm9uZS5qcyIsIi4uL3NyYy9iZWhhdmlvdXIvQWxwaGEuanMiLCIuLi9zcmMvYmVoYXZpb3VyL1NjYWxlLmpzIiwiLi4vc3JjL2JlaGF2aW91ci9Sb3RhdGUuanMiLCIuLi9zcmMvYmVoYXZpb3VyL0NvbG9yLmpzIiwiLi4vc3JjL2JlaGF2aW91ci9DeWNsb25lLmpzIiwiLi4vc3JjL2JlaGF2aW91ci9SZXB1bHNpb24uanMiLCIuLi9zcmMvYmVoYXZpb3VyL0dyYXZpdHlXZWxsLmpzIiwiLi4vc3JjL2luaXRpYWxpemUvSW5pdGlhbGl6ZVV0aWwuanMiLCIuLi9zcmMvZW1pdHRlci9FbWl0dGVyLmpzIiwiLi4vc3JjL2VtaXR0ZXIvQmVoYXZpb3VyRW1pdHRlci5qcyIsIi4uL3NyYy9lbWl0dGVyL0ZvbGxvd0VtaXR0ZXIuanMiLCIuLi9zcmMvdXRpbHMvVHlwZXMuanMiLCIuLi9zcmMvcmVuZGVyL0Jhc2VSZW5kZXJlci5qcyIsIi4uL3NyYy9yZW5kZXIvQ2FudmFzUmVuZGVyZXIuanMiLCIuLi9zcmMvcmVuZGVyL0RvbVJlbmRlcmVyLmpzIiwiLi4vc3JjL3JlbmRlci9FYXNlbFJlbmRlcmVyLmpzIiwiLi4vc3JjL3JlbmRlci9QaXhlbFJlbmRlcmVyLmpzIiwiLi4vc3JjL3JlbmRlci9QaXhpUmVuZGVyZXIuanMiLCIuLi9zcmMvdXRpbHMvTVN0YWNrLmpzIiwiLi4vc3JjL3JlbmRlci9XZWJHTFJlbmRlcmVyLmpzIiwiLi4vc3JjL3JlbmRlci9DdXN0b21SZW5kZXJlci5qcyIsIi4uL3NyYy96b25lL0xpbmVab25lLmpzIiwiLi4vc3JjL3pvbmUvQ2lyY2xlWm9uZS5qcyIsIi4uL3NyYy96b25lL1JlY3Rab25lLmpzIiwiLi4vc3JjL3pvbmUvSW1hZ2Vab25lLmpzIiwiLi4vc3JjL2RlYnVnL0RlYnVnLmpzIiwiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLldlYkdMVXRpbFxuICAgKiBAbWV0aG9kIGlwb3RcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uXG4gICAqIEB0b2RvIGFkZCBsZW5ndGggZGVzY3JpcHRpb25cbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGxlbmd0aFxuICAgKlxuICAgKiBAcmV0dXJuIHtCb29sZWFufVxuICAgKi9cbiAgaXBvdChsZW5ndGgpIHtcbiAgICByZXR1cm4gKGxlbmd0aCAmIChsZW5ndGggLSAxKSkgPT09IDA7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLldlYkdMVXRpbFxuICAgKiBAbWV0aG9kIG5ocG90XG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvblxuICAgKiBAdG9kbyBhZGQgbGVuZ3RoIGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBsZW5ndGhcbiAgICpcbiAgICogQHJldHVybiB7TnVtYmVyfVxuICAgKi9cbiAgbmhwb3QobGVuZ3RoKSB7XG4gICAgLS1sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCAzMjsgaSA8PD0gMSkge1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoIHwgKGxlbmd0aCA+PiBpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGVuZ3RoICsgMTtcbiAgfSxcblxuICAvKipcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uV2ViR0xVdGlsXG4gICAqIEBtZXRob2QgbWFrZVRyYW5zbGF0aW9uXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvblxuICAgKiBAdG9kbyBhZGQgdHgsIHR5IGRlc2NyaXB0aW9uXG4gICAqIEB0b2RvIGFkZCByZXR1cm4gZGVzY3JpcHRpb25cbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHR4IGVpdGhlciAwIG9yIDFcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHR5IGVpdGhlciAwIG9yIDFcbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgbWFrZVRyYW5zbGF0aW9uKHR4LCB0eSkge1xuICAgIHJldHVybiBbMSwgMCwgMCwgMCwgMSwgMCwgdHgsIHR5LCAxXTtcbiAgfSxcblxuICAvKipcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uV2ViR0xVdGlsXG4gICAqIEBtZXRob2QgbWFrZVJvdGF0aW9uXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvblxuICAgKiBAdG9kbyBhZGQgcmV0dXJuIGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBhbmdsZUluUmFkaWFuc1xuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBtYWtlUm90YXRpb24oYW5nbGVJblJhZGlhbnMpIHtcbiAgICBsZXQgYyA9IE1hdGguY29zKGFuZ2xlSW5SYWRpYW5zKTtcbiAgICBsZXQgcyA9IE1hdGguc2luKGFuZ2xlSW5SYWRpYW5zKTtcblxuICAgIHJldHVybiBbYywgLXMsIDAsIHMsIGMsIDAsIDAsIDAsIDFdO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5XZWJHTFV0aWxcbiAgICogQG1ldGhvZCBtYWtlU2NhbGVcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uXG4gICAqIEB0b2RvIGFkZCB0eCwgdHkgZGVzY3JpcHRpb25cbiAgICogQHRvZG8gYWRkIHJldHVybiBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gc3ggZWl0aGVyIDAgb3IgMVxuICAgKiBAcGFyYW0ge051bWJlcn0gc3kgZWl0aGVyIDAgb3IgMVxuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBtYWtlU2NhbGUoc3gsIHN5KSB7XG4gICAgcmV0dXJuIFtzeCwgMCwgMCwgMCwgc3ksIDAsIDAsIDAsIDFdO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5XZWJHTFV0aWxcbiAgICogQG1ldGhvZCBtYXRyaXhNdWx0aXBseVxuICAgKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb25cbiAgICogQHRvZG8gYWRkIGEsIGIgZGVzY3JpcHRpb25cbiAgICogQHRvZG8gYWRkIHJldHVybiBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gYVxuICAgKiBAcGFyYW0ge09iamVjdH0gYlxuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBtYXRyaXhNdWx0aXBseShhLCBiKSB7XG4gICAgbGV0IGEwMCA9IGFbMCAqIDMgKyAwXTtcbiAgICBsZXQgYTAxID0gYVswICogMyArIDFdO1xuICAgIGxldCBhMDIgPSBhWzAgKiAzICsgMl07XG4gICAgbGV0IGExMCA9IGFbMSAqIDMgKyAwXTtcbiAgICBsZXQgYTExID0gYVsxICogMyArIDFdO1xuICAgIGxldCBhMTIgPSBhWzEgKiAzICsgMl07XG4gICAgbGV0IGEyMCA9IGFbMiAqIDMgKyAwXTtcbiAgICBsZXQgYTIxID0gYVsyICogMyArIDFdO1xuICAgIGxldCBhMjIgPSBhWzIgKiAzICsgMl07XG4gICAgbGV0IGIwMCA9IGJbMCAqIDMgKyAwXTtcbiAgICBsZXQgYjAxID0gYlswICogMyArIDFdO1xuICAgIGxldCBiMDIgPSBiWzAgKiAzICsgMl07XG4gICAgbGV0IGIxMCA9IGJbMSAqIDMgKyAwXTtcbiAgICBsZXQgYjExID0gYlsxICogMyArIDFdO1xuICAgIGxldCBiMTIgPSBiWzEgKiAzICsgMl07XG4gICAgbGV0IGIyMCA9IGJbMiAqIDMgKyAwXTtcbiAgICBsZXQgYjIxID0gYlsyICogMyArIDFdO1xuICAgIGxldCBiMjIgPSBiWzIgKiAzICsgMl07XG5cbiAgICByZXR1cm4gW1xuICAgICAgYTAwICogYjAwICsgYTAxICogYjEwICsgYTAyICogYjIwLFxuICAgICAgYTAwICogYjAxICsgYTAxICogYjExICsgYTAyICogYjIxLFxuICAgICAgYTAwICogYjAyICsgYTAxICogYjEyICsgYTAyICogYjIyLFxuICAgICAgYTEwICogYjAwICsgYTExICogYjEwICsgYTEyICogYjIwLFxuICAgICAgYTEwICogYjAxICsgYTExICogYjExICsgYTEyICogYjIxLFxuICAgICAgYTEwICogYjAyICsgYTExICogYjEyICsgYTEyICogYjIyLFxuICAgICAgYTIwICogYjAwICsgYTIxICogYjEwICsgYTIyICogYjIwLFxuICAgICAgYTIwICogYjAxICsgYTIxICogYjExICsgYTIyICogYjIxLFxuICAgICAgYTIwICogYjAyICsgYTIxICogYjEyICsgYTIyICogYjIyXG4gICAgXTtcbiAgfVxufTtcbiIsImV4cG9ydCBkZWZhdWx0IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYW5kIHJldHVybnMgYSBuZXcgY2FudmFzLiBUaGUgb3BhY2l0eSBpcyBieSBkZWZhdWx0IHNldCB0byAwXG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkRvbVV0aWxcbiAgICogQG1ldGhvZCBjcmVhdGVDYW52YXNcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9ICRpZCB0aGUgY2FudmFzJyBpZFxuICAgKiBAcGFyYW0ge051bWJlcn0gJHdpZHRoIHRoZSBjYW52YXMnIHdpZHRoXG4gICAqIEBwYXJhbSB7TnVtYmVyfSAkaGVpZ2h0IHRoZSBjYW52YXMnIGhlaWdodFxuICAgKiBAcGFyYW0ge1N0cmluZ30gWyRwb3NpdGlvbj1hYnNvbHV0ZV0gdGhlIGNhbnZhcycgcG9zaXRpb24sIGRlZmF1bHQgaXMgJ2Fic29sdXRlJ1xuICAgKlxuICAgKiBAcmV0dXJuIHtPYmplY3R9XG4gICAqL1xuICBjcmVhdGVDYW52YXMoaWQsIHdpZHRoLCBoZWlnaHQsIHBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiKSB7XG4gICAgY29uc3QgZG9tID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcblxuICAgIGRvbS5pZCA9IGlkO1xuICAgIGRvbS53aWR0aCA9IHdpZHRoO1xuICAgIGRvbS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgZG9tLnN0eWxlLm9wYWNpdHkgPSAwO1xuICAgIGRvbS5zdHlsZS5wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIHRoaXMudHJhbnNmb3JtKGRvbSwgLTUwMCwgLTUwMCwgMCwgMCk7XG5cbiAgICByZXR1cm4gZG9tO1xuICB9LFxuXG4gIGNyZWF0ZURpdihpZCwgd2lkdGgsIGhlaWdodCkge1xuICAgIGNvbnN0IGRvbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cbiAgICBkb20uaWQgPSBpZDtcbiAgICBkb20uc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG4gICAgdGhpcy5yZXNpemUoZG9tLCB3aWR0aCwgaGVpZ2h0KTtcblxuICAgIHJldHVybiBkb207XG4gIH0sXG5cbiAgcmVzaXplKGRvbSwgd2lkdGgsIGhlaWdodCkge1xuICAgIGRvbS5zdHlsZS53aWR0aCA9IHdpZHRoICsgXCJweFwiO1xuICAgIGRvbS5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyBcInB4XCI7XG4gICAgZG9tLnN0eWxlLm1hcmdpbkxlZnQgPSAtd2lkdGggLyAyICsgXCJweFwiO1xuICAgIGRvbS5zdHlsZS5tYXJnaW5Ub3AgPSAtaGVpZ2h0IC8gMiArIFwicHhcIjtcbiAgfSxcblxuICAvKipcbiAgICogQWRkcyBhIHRyYW5zZm9ybTogdHJhbnNsYXRlKCksIHNjYWxlKCksIHJvdGF0ZSgpIHRvIGEgZ2l2ZW4gZGl2IGRvbSBmb3IgYWxsIGJyb3dzZXJzXG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkRvbVV0aWxcbiAgICogQG1ldGhvZCB0cmFuc2Zvcm1cbiAgICpcbiAgICogQHBhcmFtIHtIVE1MRGl2RWxlbWVudH0gZGl2XG4gICAqIEBwYXJhbSB7TnVtYmVyfSAkeFxuICAgKiBAcGFyYW0ge051bWJlcn0gJHlcbiAgICogQHBhcmFtIHtOdW1iZXJ9ICRzY2FsZVxuICAgKiBAcGFyYW0ge051bWJlcn0gJHJvdGF0ZVxuICAgKi9cbiAgdHJhbnNmb3JtKGRpdiwgeCwgeSwgc2NhbGUsIHJvdGF0ZSkge1xuICAgIGRpdi5zdHlsZS53aWxsQ2hhbmdlID0gXCJ0cmFuc2Zvcm1cIjtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBgdHJhbnNsYXRlKCR7eH1weCwgJHt5fXB4KSBzY2FsZSgke3NjYWxlfSkgcm90YXRlKCR7cm90YXRlfWRlZylgO1xuICAgIHRoaXMuY3NzMyhkaXYsIFwidHJhbnNmb3JtXCIsIHRyYW5zZm9ybSk7XG4gIH0sXG5cbiAgdHJhbnNmb3JtM2QoZGl2LCB4LCB5LCBzY2FsZSwgcm90YXRlKSB7XG4gICAgZGl2LnN0eWxlLndpbGxDaGFuZ2UgPSBcInRyYW5zZm9ybVwiO1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IGB0cmFuc2xhdGUzZCgke3h9cHgsICR7eX1weCwgMCkgc2NhbGUoJHtzY2FsZX0pIHJvdGF0ZSgke3JvdGF0ZX1kZWcpYDtcbiAgICB0aGlzLmNzczMoZGl2LCBcImJhY2tmYWNlVmlzaWJpbGl0eVwiLCBcImhpZGRlblwiKTtcbiAgICB0aGlzLmNzczMoZGl2LCBcInRyYW5zZm9ybVwiLCB0cmFuc2Zvcm0pO1xuICB9LFxuXG4gIGNzczMoZGl2LCBrZXksIHZhbCkge1xuICAgIGNvbnN0IGJrZXkgPSBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc3Vic3RyKDEpO1xuXG4gICAgZGl2LnN0eWxlW2BXZWJraXQke2JrZXl9YF0gPSB2YWw7XG4gICAgZGl2LnN0eWxlW2BNb3oke2JrZXl9YF0gPSB2YWw7XG4gICAgZGl2LnN0eWxlW2BPJHtia2V5fWBdID0gdmFsO1xuICAgIGRpdi5zdHlsZVtgbXMke2JrZXl9YF0gPSB2YWw7XG4gICAgZGl2LnN0eWxlW2Ake2tleX1gXSA9IHZhbDtcbiAgfVxufTtcbiIsImltcG9ydCBXZWJHTFV0aWwgZnJvbSBcIi4vV2ViR0xVdGlsXCI7XG5pbXBvcnQgRG9tVXRpbCBmcm9tIFwiLi9Eb21VdGlsXCI7XG5cbmNvbnN0IGltZ3NDYWNoZSA9IHt9O1xuY29uc3QgY2FudmFzQ2FjaGUgPSB7fTtcbmxldCBjYW52YXNJZCA9IDA7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBnZXQgdGhlIGltYWdlIGRhdGEuIEl0IGNvdWxkIGJlIG5lY2Vzc2FyeSB0byBjcmVhdGUgYSBQcm90b24uWm9uZS5cbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIGdldEltYWdlRGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge0hUTUxDYW52YXNFbGVtZW50fSAgIGNvbnRleHQgYW55IGNhbnZhcywgbXVzdCBiZSBhIDJkQ29udGV4dCAnY2FudmFzLmdldENvbnRleHQoJzJkJyknXG4gICAqIEBwYXJhbSB7T2JqZWN0fSAgICAgICAgICAgICAgaW1hZ2UgICBjb3VsZCBiZSBhbnkgZG9tIGltYWdlLCBlLmcuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGlzSXNBbkltZ1RhZycpO1xuICAgKiBAcGFyYW0ge1Byb3Rvbi5SZWN0YW5nbGV9ICAgIHJlY3RcbiAgICovXG4gIGdldEltYWdlRGF0YShjb250ZXh0LCBpbWFnZSwgcmVjdCkge1xuICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCByZWN0LngsIHJlY3QueSk7XG4gICAgY29uc3QgaW1hZ2VkYXRhID0gY29udGV4dC5nZXRJbWFnZURhdGEocmVjdC54LCByZWN0LnksIHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0KTtcbiAgICBjb250ZXh0LmNsZWFyUmVjdChyZWN0LngsIHJlY3QueSwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpO1xuXG4gICAgcmV0dXJuIGltYWdlZGF0YTtcbiAgfSxcblxuICAvKipcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIGdldEltZ0Zyb21DYWNoZVxuICAgKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb25cbiAgICogQHRvZG8gZGVzY3JpYmUgZnVuY1xuICAgKlxuICAgKiBAcGFyYW0ge01peGVkfSAgICAgICAgICAgICAgIGltZ1xuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gICAgIHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gICAgICAgICAgICAgZHJhd0NhbnZhcyAgc2V0IHRvIHRydWUgaWYgYSBjYW52YXMgc2hvdWxkIGJlIHNhdmVkIGludG8gcGFydGljbGUuZGF0YS5jYW52YXNcbiAgICogQHBhcmFtIHtCb29sZWFufSAgICAgICAgICAgICBmdW5jXG4gICAqL1xuICBnZXRJbWdGcm9tQ2FjaGUoaW1nLCBjYWxsYmFjaywgcGFyYW0pIHtcbiAgICBjb25zdCBzcmMgPSB0eXBlb2YgaW1nID09PSBcInN0cmluZ1wiID8gaW1nIDogaW1nLnNyYztcblxuICAgIGlmIChpbWdzQ2FjaGVbc3JjXSkge1xuICAgICAgY2FsbGJhY2soaW1nc0NhY2hlW3NyY10sIHBhcmFtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICAgIGltYWdlLm9ubG9hZCA9IGUgPT4ge1xuICAgICAgICBpbWdzQ2FjaGVbc3JjXSA9IGUudGFyZ2V0O1xuICAgICAgICBjYWxsYmFjayhpbWdzQ2FjaGVbc3JjXSwgcGFyYW0pO1xuICAgICAgfTtcblxuICAgICAgaW1hZ2Uuc3JjID0gc3JjO1xuICAgIH1cbiAgfSxcblxuICBnZXRDYW52YXNGcm9tQ2FjaGUoaW1nLCBjYWxsYmFjaywgcGFyYW0pIHtcbiAgICBjb25zdCBzcmMgPSBpbWcuc3JjO1xuXG4gICAgaWYgKCFjYW52YXNDYWNoZVtzcmNdKSB7XG4gICAgICBjb25zdCB3aWR0aCA9IFdlYkdMVXRpbC5uaHBvdChpbWcud2lkdGgpO1xuICAgICAgY29uc3QgaGVpZ2h0ID0gV2ViR0xVdGlsLm5ocG90KGltZy5oZWlnaHQpO1xuXG4gICAgICBjb25zdCBjYW52YXMgPSBEb21VdGlsLmNyZWF0ZUNhbnZhcyhgcHJvdG9uX2NhbnZhc19jYWNoZV8keysrY2FudmFzSWR9YCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltZywgMCwgMCwgaW1nLndpZHRoLCBpbWcuaGVpZ2h0KTtcblxuICAgICAgY2FudmFzQ2FjaGVbc3JjXSA9IGNhbnZhcztcbiAgICB9XG5cbiAgICBjYWxsYmFjayAmJiBjYWxsYmFjayhjYW52YXNDYWNoZVtzcmNdLCBwYXJhbSk7XG5cbiAgICByZXR1cm4gY2FudmFzQ2FjaGVbc3JjXTtcbiAgfVxufTtcbiIsImltcG9ydCBJbWdVdGlsIGZyb20gXCIuL0ltZ1V0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGVmYXVsdCBpZiB0aGUgdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWRcbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIGluaXRWYWx1ZVxuICAgKlxuICAgKiBAcGFyYW0ge01peGVkfSB2YWx1ZSBhIHNwZWNpZmljIHZhbHVlLCBjb3VsZCBiZSBldmVyeXRoaW5nIGJ1dCBudWxsIG9yIHVuZGVmaW5lZFxuICAgKiBAcGFyYW0ge01peGVkfSBkZWZhdWx0cyB0aGUgZGVmYXVsdCBpZiB0aGUgdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWRcbiAgICovXG4gIGluaXRWYWx1ZSh2YWx1ZSwgZGVmYXVsdHMpIHtcbiAgICB2YWx1ZSA9IHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IGRlZmF1bHRzO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSB2YWx1ZSBpcyBhIHZhbGlkIGFycmF5XG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBpc0FycmF5XG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlIEFueSBhcnJheVxuICAgKlxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAgICovXG4gIGlzQXJyYXkodmFsdWUpIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZXN0cm95ZXMgdGhlIGdpdmVuIGFycmF5XG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBlbXB0eUFycmF5XG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IEFueSBhcnJheVxuICAgKi9cbiAgZW1wdHlBcnJheShhcnIpIHtcbiAgICBpZiAoYXJyKSBhcnIubGVuZ3RoID0gMDtcbiAgfSxcblxuICB0b0FycmF5KGFycikge1xuICAgIHJldHVybiB0aGlzLmlzQXJyYXkoYXJyKSA/IGFyciA6IFthcnJdO1xuICB9LFxuXG4gIHNsaWNlQXJyYXkoYXJyMSwgaW5kZXgsIGFycjIpIHtcbiAgICB0aGlzLmVtcHR5QXJyYXkoYXJyMik7XG4gICAgZm9yIChsZXQgaSA9IGluZGV4OyBpIDwgYXJyMS5sZW5ndGg7IGkrKykge1xuICAgICAgYXJyMi5wdXNoKGFycjFbaV0pO1xuICAgIH1cbiAgfSxcblxuICBnZXRSYW5kRnJvbUFycmF5KGFycikge1xuICAgIGlmICghYXJyKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gYXJyW01hdGguZmxvb3IoYXJyLmxlbmd0aCAqIE1hdGgucmFuZG9tKCkpXTtcbiAgfSxcblxuICAvKipcbiAgICogRGVzdHJveWVzIHRoZSBnaXZlbiBvYmplY3RcbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIGVtcHR5T2JqZWN0XG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogQW55IG9iamVjdFxuICAgKi9cbiAgZW1wdHlPYmplY3Qob2JqLCBpZ25vcmUgPSBudWxsKSB7XG4gICAgZm9yIChsZXQga2V5IGluIG9iaikge1xuICAgICAgaWYgKGlnbm9yZSAmJiBpZ25vcmUuaW5kZXhPZihrZXkpID4gLTEpIGNvbnRpbnVlO1xuICAgICAgZGVsZXRlIG9ialtrZXldO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogTWFrZXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyBhbmQgYmluZHMgdGhlIGdpdmVuIGFycmF5XG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBjbGFzc0FwcGx5XG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbnN0cnVjdG9yIEEgY2xhc3MgdG8gbWFrZSBhbiBpbnN0YW5jZSBmcm9tXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcmdzXSBBbnkgYXJyYXkgdG8gYmluZCBpdCB0byB0aGUgY29uc3RydWN0b3JcbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgaW5zdGFuY2Ugb2YgY29uc3RydWN0b3IsIG9wdGlvbmFsbHkgYmluZCB3aXRoIGFyZ3NcbiAgICovXG4gIGNsYXNzQXBwbHkoY29uc3RydWN0b3IsIGFyZ3MgPSBudWxsKSB7XG4gICAgaWYgKCFhcmdzKSB7XG4gICAgICByZXR1cm4gbmV3IGNvbnN0cnVjdG9yKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IEZhY3RvcnlGdW5jID0gY29uc3RydWN0b3IuYmluZC5hcHBseShjb25zdHJ1Y3RvciwgW251bGxdLmNvbmNhdChhcmdzKSk7XG4gICAgICByZXR1cm4gbmV3IEZhY3RvcnlGdW5jKCk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBUaGlzIHdpbGwgZ2V0IHRoZSBpbWFnZSBkYXRhLiBJdCBjb3VsZCBiZSBuZWNlc3NhcnkgdG8gY3JlYXRlIGEgUHJvdG9uLlpvbmUuXG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlV0aWxcbiAgICogQG1ldGhvZCBnZXRJbWFnZURhdGFcbiAgICpcbiAgICogQHBhcmFtIHtIVE1MQ2FudmFzRWxlbWVudH0gICBjb250ZXh0IGFueSBjYW52YXMsIG11c3QgYmUgYSAyZENvbnRleHQgJ2NhbnZhcy5nZXRDb250ZXh0KCcyZCcpJ1xuICAgKiBAcGFyYW0ge09iamVjdH0gICAgICAgICAgICAgIGltYWdlICAgY291bGQgYmUgYW55IGRvbSBpbWFnZSwgZS5nLiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGhpc0lzQW5JbWdUYWcnKTtcbiAgICogQHBhcmFtIHtQcm90b24uUmVjdGFuZ2xlfSAgICByZWN0XG4gICAqL1xuICBnZXRJbWFnZURhdGEoY29udGV4dCwgaW1hZ2UsIHJlY3QpIHtcbiAgICByZXR1cm4gSW1nVXRpbC5nZXRJbWFnZURhdGEoY29udGV4dCwgaW1hZ2UsIHJlY3QpO1xuICB9LFxuXG4gIGRlc3Ryb3lBbGwoYXJyLCBwYXJhbSA9IG51bGwpIHtcbiAgICBsZXQgaSA9IGFyci5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhcnJbaV0uZGVzdHJveShwYXJhbSk7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuXG4gICAgICBkZWxldGUgYXJyW2ldO1xuICAgIH1cblxuICAgIGFyci5sZW5ndGggPSAwO1xuICB9LFxuXG4gIGFzc2lnbih0YXJnZXQsIHNvdXJjZSkge1xuICAgIGlmICh0eXBlb2YgT2JqZWN0LmFzc2lnbiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBmb3IgKGxldCBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSk7XG4gICAgfVxuICB9XG59O1xuIiwiY29uc3QgaWRzTWFwID0ge307XG5cbmNvbnN0IFB1aWQgPSB7XG4gIF9pbmRleDogMCxcbiAgX2NhY2hlOiB7fSxcblxuICBpZCh0eXBlKSB7XG4gICAgaWYgKGlkc01hcFt0eXBlXSA9PT0gdW5kZWZpbmVkIHx8IGlkc01hcFt0eXBlXSA9PT0gbnVsbCkgaWRzTWFwW3R5cGVdID0gMDtcbiAgICByZXR1cm4gYCR7dHlwZX1fJHtpZHNNYXBbdHlwZV0rK31gO1xuICB9LFxuXG4gIGdldElkKHRhcmdldCkge1xuICAgIGxldCB1aWQgPSB0aGlzLmdldElkRnJvbUNhY2hlKHRhcmdldCk7XG4gICAgaWYgKHVpZCkgcmV0dXJuIHVpZDtcblxuICAgIHVpZCA9IGBQVUlEXyR7dGhpcy5faW5kZXgrK31gO1xuICAgIHRoaXMuX2NhY2hlW3VpZF0gPSB0YXJnZXQ7XG4gICAgcmV0dXJuIHVpZDtcbiAgfSxcblxuICBnZXRJZEZyb21DYWNoZSh0YXJnZXQpIHtcbiAgICBsZXQgb2JqLCBpZDtcblxuICAgIGZvciAoaWQgaW4gdGhpcy5fY2FjaGUpIHtcbiAgICAgIG9iaiA9IHRoaXMuX2NhY2hlW2lkXTtcblxuICAgICAgaWYgKG9iaiA9PT0gdGFyZ2V0KSByZXR1cm4gaWQ7XG4gICAgICBpZiAodGhpcy5pc0JvZHkob2JqLCB0YXJnZXQpICYmIG9iai5zcmMgPT09IHRhcmdldC5zcmMpIHJldHVybiBpZDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcblxuICBpc0JvZHkob2JqLCB0YXJnZXQpIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgdGFyZ2V0ID09PSBcIm9iamVjdFwiICYmIG9iai5pc0lubmVyICYmIHRhcmdldC5pc0lubmVyO1xuICB9LFxuXG4gIGdldFRhcmdldCh1aWQpIHtcbiAgICByZXR1cm4gdGhpcy5fY2FjaGVbdWlkXTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgUHVpZDtcbiIsIi8qKlxuICogUG9vbCBpcyB0aGUgY2FjaGUgcG9vbCBvZiB0aGUgcHJvdG9uIGVuZ2luZSwgaXQgaXMgdmVyeSBpbXBvcnRhbnQuXG4gKlxuICogZ2V0KHRhcmdldCwgcGFyYW1zLCB1aWQpXG4gKiAgQ2xhc3NcbiAqICAgIHVpZCA9IFB1aWQuZ2V0SWQgLT4gUHVpZCBzYXZlIHRhcmdldCBjYWNoZVxuICogICAgdGFyZ2V0Ll9fcHVpZCA9IHVpZFxuICpcbiAqICBib2R5XG4gKiAgICB1aWQgPSBQdWlkLmdldElkIC0+IFB1aWQgc2F2ZSB0YXJnZXQgY2FjaGVcbiAqXG4gKlxuICogZXhwaXJlKHRhcmdldClcbiAqICBjYWNoZVt0YXJnZXQuX19wdWlkXSBwdXNoIHRhcmdldFxuICpcbiAqL1xuaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBQdWlkIGZyb20gXCIuLi91dGlscy9QdWlkXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvb2wge1xuICAvKipcbiAgICogQG1lbWJlcm9mISBQcm90b24jXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWxpYXMgUHJvdG9uLlBvb2xcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvbiBvZiBwcm9wZXJ0aWVzXG4gICAqXG4gICAqIEBwcm9wZXJ0eSB7TnVtYmVyfSB0b3RhbFxuICAgKiBAcHJvcGVydHkge09iamVjdH0gY2FjaGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKG51bSkge1xuICAgIHRoaXMudG90YWwgPSAwO1xuICAgIHRoaXMuY2FjaGUgPSB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb25cbiAgICpcbiAgICogQG1ldGhvZCBnZXRcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uUG9vbFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdHxGdW5jdGlvbn0gdGFyZ2V0XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zXSBqdXN0IGFkZCBpZiBgdGFyZ2V0YCBpcyBhIGZ1bmN0aW9uXG4gICAqXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIGdldCh0YXJnZXQsIHBhcmFtcywgdWlkKSB7XG4gICAgbGV0IHA7XG4gICAgdWlkID0gdWlkIHx8IHRhcmdldC5fX3B1aWQgfHwgUHVpZC5nZXRJZCh0YXJnZXQpO1xuXG4gICAgaWYgKHRoaXMuY2FjaGVbdWlkXSAmJiB0aGlzLmNhY2hlW3VpZF0ubGVuZ3RoID4gMCkge1xuICAgICAgcCA9IHRoaXMuY2FjaGVbdWlkXS5wb3AoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcCA9IHRoaXMuY3JlYXRlT3JDbG9uZSh0YXJnZXQsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgcC5fX3B1aWQgPSB0YXJnZXQuX19wdWlkIHx8IHVpZDtcbiAgICByZXR1cm4gcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb25cbiAgICpcbiAgICogQG1ldGhvZCBzZXRcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uUG9vbFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gdGFyZ2V0XG4gICAqXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIGV4cGlyZSh0YXJnZXQpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDYWNoZSh0YXJnZXQuX19wdWlkKS5wdXNoKHRhcmdldCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBjbGFzcyBpbnN0YW5jZVxuICAgKlxuICAgKiBAdG9kbyBhZGQgbW9yZSBkb2N1bWVudGF0aW9uXG4gICAqXG4gICAqIEBtZXRob2QgY3JlYXRlXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlBvb2xcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R8RnVuY3Rpb259IHRhcmdldCBhbnkgT2JqZWN0IG9yIEZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbcGFyYW1zXSBqdXN0IGFkZCBpZiBgdGFyZ2V0YCBpcyBhIGZ1bmN0aW9uXG4gICAqXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIGNyZWF0ZU9yQ2xvbmUodGFyZ2V0LCBwYXJhbXMpIHtcbiAgICB0aGlzLnRvdGFsKys7XG5cbiAgICBpZiAodGhpcy5jcmVhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZSh0YXJnZXQsIHBhcmFtcyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGFyZ2V0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBVdGlsLmNsYXNzQXBwbHkodGFyZ2V0LCBwYXJhbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGFyZ2V0LmNsb25lKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvbiAtIHdoYXQgaXMgaW4gdGhlIGNhY2hlP1xuICAgKlxuICAgKiBAbWV0aG9kIGdldENvdW50XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlBvb2xcbiAgICpcbiAgICogQHJldHVybiB7TnVtYmVyfVxuICAgKi9cbiAgZ2V0Q291bnQoKSB7XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBmb3IgKGxldCBpZCBpbiB0aGlzLmNhY2hlKSBjb3VudCArPSB0aGlzLmNhY2hlW2lkXS5sZW5ndGg7XG4gICAgcmV0dXJuIGNvdW50Kys7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveWVzIGFsbCBpdGVtcyBmcm9tIFBvb2wuY2FjaGVcbiAgICpcbiAgICogQG1ldGhvZCBkZXN0cm95XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlBvb2xcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgZm9yIChsZXQgaWQgaW4gdGhpcy5jYWNoZSkge1xuICAgICAgdGhpcy5jYWNoZVtpZF0ubGVuZ3RoID0gMDtcbiAgICAgIGRlbGV0ZSB0aGlzLmNhY2hlW2lkXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBQb29sLmNhY2hlXG4gICAqXG4gICAqIEBtZXRob2QgZ2V0Q2FjaGVcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uUG9vbFxuICAgKiBAcHJpdmF0ZVxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gdWlkIHRoZSB1bmlxdWUgaWRcbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgZ2V0Q2FjaGUodWlkID0gXCJkZWZhdWx0XCIpIHtcbiAgICBpZiAoIXRoaXMuY2FjaGVbdWlkXSkgdGhpcy5jYWNoZVt1aWRdID0gW107XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVbdWlkXTtcbiAgfVxufVxuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RhdHMge1xuICBjb25zdHJ1Y3Rvcihwcm90b24pIHtcbiAgICB0aGlzLnByb3RvbiA9IHByb3RvbjtcbiAgICB0aGlzLmNvbnRhaW5lciA9IG51bGw7XG4gICAgdGhpcy50eXBlID0gMTtcblxuICAgIHRoaXMuZW1pdHRlckluZGV4ID0gMDtcbiAgICB0aGlzLnJlbmRlcmVySW5kZXggPSAwO1xuICB9XG5cbiAgdXBkYXRlKHN0eWxlLCBib2R5KSB7XG4gICAgdGhpcy5hZGQoc3R5bGUsIGJvZHkpO1xuXG4gICAgY29uc3QgZW1pdHRlciA9IHRoaXMuZ2V0RW1pdHRlcigpO1xuICAgIGNvbnN0IHJlbmRlcmVyID0gdGhpcy5nZXRSZW5kZXJlcigpO1xuICAgIGxldCBzdHIgPSBcIlwiO1xuXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgc3RyICs9IFwiZW1pdHRlcjpcIiArIHRoaXMucHJvdG9uLmVtaXR0ZXJzLmxlbmd0aCArIFwiPGJyPlwiO1xuICAgICAgICBpZiAoZW1pdHRlcikgc3RyICs9IFwiZW0gc3BlZWQ6XCIgKyBlbWl0dGVyLmVtaXRTcGVlZCArIFwiPGJyPlwiO1xuICAgICAgICBpZiAoZW1pdHRlcikgc3RyICs9IFwicG9zOlwiICsgdGhpcy5nZXRFbWl0dGVyUG9zKGVtaXR0ZXIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAzOlxuICAgICAgICBpZiAoZW1pdHRlcikgc3RyICs9IFwiaW5pdGlhbGl6ZXM6XCIgKyBlbWl0dGVyLmluaXRpYWxpemVzLmxlbmd0aCArIFwiPGJyPlwiO1xuICAgICAgICBpZiAoZW1pdHRlcilcbiAgICAgICAgICBzdHIgKz0gJzxzcGFuIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7XCI+JyArIHRoaXMuY29uY2F0QXJyKGVtaXR0ZXIuaW5pdGlhbGl6ZXMpICsgXCI8L3NwYW4+PGJyPlwiO1xuICAgICAgICBpZiAoZW1pdHRlcikgc3RyICs9IFwiYmVoYXZpb3VyczpcIiArIGVtaXR0ZXIuYmVoYXZpb3Vycy5sZW5ndGggKyBcIjxicj5cIjtcbiAgICAgICAgaWYgKGVtaXR0ZXIpIHN0ciArPSAnPHNwYW4gc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jaztcIj4nICsgdGhpcy5jb25jYXRBcnIoZW1pdHRlci5iZWhhdmlvdXJzKSArIFwiPC9zcGFuPjxicj5cIjtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgNDpcbiAgICAgICAgaWYgKHJlbmRlcmVyKSBzdHIgKz0gcmVuZGVyZXIubmFtZSArIFwiPGJyPlwiO1xuICAgICAgICBpZiAocmVuZGVyZXIpIHN0ciArPSBcImJvZHk6XCIgKyB0aGlzLmdldENyZWF0ZWROdW1iZXIocmVuZGVyZXIpICsgXCI8YnI+XCI7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBzdHIgKz0gXCJwYXJ0aWNsZXM6XCIgKyB0aGlzLnByb3Rvbi5nZXRDb3VudCgpICsgXCI8YnI+XCI7XG4gICAgICAgIHN0ciArPSBcInBvb2w6XCIgKyB0aGlzLnByb3Rvbi5wb29sLmdldENvdW50KCkgKyBcIjxicj5cIjtcbiAgICAgICAgc3RyICs9IFwidG90YWw6XCIgKyB0aGlzLnByb3Rvbi5wb29sLnRvdGFsO1xuICAgIH1cblxuICAgIHRoaXMuY29udGFpbmVyLmlubmVySFRNTCA9IHN0cjtcbiAgfVxuXG4gIGFkZChzdHlsZSwgYm9keSkge1xuICAgIGlmICghdGhpcy5jb250YWluZXIpIHtcbiAgICAgIHRoaXMudHlwZSA9IDE7XG5cbiAgICAgIHRoaXMuY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgIHRoaXMuY29udGFpbmVyLnN0eWxlLmNzc1RleHQgPSBbXG4gICAgICAgIFwicG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjBweDtsZWZ0OjA7Y3Vyc29yOnBvaW50ZXI7XCIsXG4gICAgICAgIFwib3BhY2l0eTowLjk7ei1pbmRleDoxMDAwMDtwYWRkaW5nOjEwcHg7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6SGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7XCIsXG4gICAgICAgIFwid2lkdGg6MTIwcHg7aGVpZ2h0OjUwcHg7YmFja2dyb3VuZC1jb2xvcjojMDAyO2NvbG9yOiMwZmY7XCJcbiAgICAgIF0uam9pbihcIlwiKTtcblxuICAgICAgdGhpcy5jb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgXCJjbGlja1wiLFxuICAgICAgICBlID0+IHtcbiAgICAgICAgICB0aGlzLnR5cGUrKztcbiAgICAgICAgICBpZiAodGhpcy50eXBlID4gNCkgdGhpcy50eXBlID0gMTtcbiAgICAgICAgfSxcbiAgICAgICAgZmFsc2VcbiAgICAgICk7XG5cbiAgICAgIGxldCBiZywgY29sb3I7XG4gICAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBiZyA9IFwiIzIwMVwiO1xuICAgICAgICAgIGNvbG9yID0gXCIjZjA4XCI7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIGJnID0gXCIjMDIwXCI7XG4gICAgICAgICAgY29sb3IgPSBcIiMwZjBcIjtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJnID0gXCIjMDAyXCI7XG4gICAgICAgICAgY29sb3IgPSBcIiMwZmZcIjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jb250YWluZXIuc3R5bGVbXCJiYWNrZ3JvdW5kLWNvbG9yXCJdID0gYmc7XG4gICAgICB0aGlzLmNvbnRhaW5lci5zdHlsZVtcImNvbG9yXCJdID0gY29sb3I7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lci5wYXJlbnROb2RlKSB7XG4gICAgICBib2R5ID0gYm9keSB8fCB0aGlzLmJvZHkgfHwgZG9jdW1lbnQuYm9keTtcbiAgICAgIGJvZHkuYXBwZW5kQ2hpbGQodGhpcy5jb250YWluZXIpO1xuICAgIH1cbiAgfVxuXG4gIGdldEVtaXR0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvdG9uLmVtaXR0ZXJzW3RoaXMuZW1pdHRlckluZGV4XTtcbiAgfVxuXG4gIGdldFJlbmRlcmVyKCkge1xuICAgIHJldHVybiB0aGlzLnByb3Rvbi5yZW5kZXJlcnNbdGhpcy5yZW5kZXJlckluZGV4XTtcbiAgfVxuXG4gIGNvbmNhdEFycihhcnIpIHtcbiAgICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgICBpZiAoIWFyciB8fCAhYXJyLmxlbmd0aCkgcmV0dXJuIHJlc3VsdDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXN1bHQgKz0gKGFycltpXS5uYW1lIHx8IFwiXCIpLnN1YnN0cigwLCAxKSArIFwiLlwiO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXRDcmVhdGVkTnVtYmVyKHJlbmRlcmVyKSB7XG4gICAgcmV0dXJuIHJlbmRlcmVyLnBvb2wudG90YWwgfHwgKHJlbmRlcmVyLmNwb29sICYmIHJlbmRlcmVyLmNwb29sLnRvdGFsKSB8fCAwO1xuICB9XG5cbiAgZ2V0RW1pdHRlclBvcyhlKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoZS5wLngpICsgXCIsXCIgKyBNYXRoLnJvdW5kKGUucC55KTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuY29udGFpbmVyICYmIHRoaXMuY29udGFpbmVyLnBhcmVudE5vZGUpIHtcbiAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLmJvZHkgfHwgZG9jdW1lbnQuYm9keTtcbiAgICAgIGJvZHkucmVtb3ZlQ2hpbGQodGhpcy5jb250YWluZXIpO1xuICAgIH1cblxuICAgIHRoaXMucHJvdG9uID0gbnVsbDtcbiAgICB0aGlzLmNvbnRhaW5lciA9IG51bGw7XG4gIH1cbn1cbiIsIi8qXG4gKiBFdmVudERpc3BhdGNoZXJcbiAqIFRoaXMgY29kZSByZWZlcmVuY2Ugc2luY2UgaHR0cDovL2NyZWF0ZWpzLmNvbS8uXG4gKlxuICoqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFdmVudERpc3BhdGNoZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMgPSBudWxsO1xuICB9XG5cbiAgc3RhdGljIGJpbmQodGFyZ2V0KSB7XG4gICAgdGFyZ2V0LnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50ID0gRXZlbnREaXNwYXRjaGVyLnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50O1xuICAgIHRhcmdldC5wcm90b3R5cGUuaGFzRXZlbnRMaXN0ZW5lciA9IEV2ZW50RGlzcGF0Y2hlci5wcm90b3R5cGUuaGFzRXZlbnRMaXN0ZW5lcjtcbiAgICB0YXJnZXQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIgPSBFdmVudERpc3BhdGNoZXIucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI7XG4gICAgdGFyZ2V0LnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyID0gRXZlbnREaXNwYXRjaGVyLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyO1xuICAgIHRhcmdldC5wcm90b3R5cGUucmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMgPSBFdmVudERpc3BhdGNoZXIucHJvdG90eXBlLnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzO1xuICB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgIGlmICghdGhpcy5fbGlzdGVuZXJzKSB7XG4gICAgICB0aGlzLl9saXN0ZW5lcnMgPSB7fTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX2xpc3RlbmVyc1t0eXBlXSkgdGhpcy5fbGlzdGVuZXJzW3R5cGVdID0gW107XG4gICAgdGhpcy5fbGlzdGVuZXJzW3R5cGVdLnB1c2gobGlzdGVuZXIpO1xuXG4gICAgcmV0dXJuIGxpc3RlbmVyO1xuICB9XG5cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgIGlmICghdGhpcy5fbGlzdGVuZXJzKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLl9saXN0ZW5lcnNbdHlwZV0pIHJldHVybjtcblxuICAgIGNvbnN0IGFyciA9IHRoaXMuX2xpc3RlbmVyc1t0eXBlXTtcbiAgICBjb25zdCBsZW5ndGggPSBhcnIubGVuZ3RoO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGFycltpXSA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKGxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLl9saXN0ZW5lcnNbdHlwZV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhbGxvd3MgZm9yIGZhc3RlciBjaGVja3MuXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGFyci5zcGxpY2UoaSwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW1vdmVBbGxFdmVudExpc3RlbmVycyh0eXBlKSB7XG4gICAgaWYgKCF0eXBlKSB0aGlzLl9saXN0ZW5lcnMgPSBudWxsO1xuICAgIGVsc2UgaWYgKHRoaXMuX2xpc3RlbmVycykgZGVsZXRlIHRoaXMuX2xpc3RlbmVyc1t0eXBlXTtcbiAgfVxuXG4gIGRpc3BhdGNoRXZlbnQodHlwZSwgYXJncykge1xuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcbiAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnM7XG5cbiAgICBpZiAodHlwZSAmJiBsaXN0ZW5lcnMpIHtcbiAgICAgIGxldCBhcnIgPSBsaXN0ZW5lcnNbdHlwZV07XG4gICAgICBpZiAoIWFycikgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgLy8gYXJyID0gYXJyLnNsaWNlKCk7XG4gICAgICAvLyB0byBhdm9pZCBpc3N1ZXMgd2l0aCBpdGVtcyBiZWluZyByZW1vdmVkIG9yIGFkZGVkIGR1cmluZyB0aGUgZGlzcGF0Y2hcblxuICAgICAgbGV0IGhhbmRsZXI7XG4gICAgICBsZXQgaSA9IGFyci5sZW5ndGg7XG4gICAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgIGhhbmRsZXIgPSBhcnJbaV07XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCBoYW5kbGVyKGFyZ3MpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAhIXJlc3VsdDtcbiAgfVxuXG4gIGhhc0V2ZW50TGlzdGVuZXIodHlwZSkge1xuICAgIGNvbnN0IGxpc3RlbmVycyA9IHRoaXMuX2xpc3RlbmVycztcbiAgICByZXR1cm4gISEobGlzdGVuZXJzICYmIGxpc3RlbmVyc1t0eXBlXSk7XG4gIH1cbn1cbiIsImNvbnN0IFBJID0gMy4xNDE1OTI2O1xuY29uc3QgSU5GSU5JVFkgPSBJbmZpbml0eTtcblxuY29uc3QgTWF0aFV0aWwgPSB7XG4gIFBJOiBQSSxcbiAgUEl4MjogUEkgKiAyLFxuICBQSV8yOiBQSSAvIDIsXG4gIFBJXzE4MDogUEkgLyAxODAsXG4gIE4xODBfUEk6IDE4MCAvIFBJLFxuICBJbmZpbml0eTogLTk5OSxcblxuICBpc0luZmluaXR5KG51bSkge1xuICAgIHJldHVybiBudW0gPT09IHRoaXMuSW5maW5pdHkgfHwgbnVtID09PSBJTkZJTklUWTtcbiAgfSxcblxuICByYW5kb21BVG9CKGEsIGIsIGlzSW50ID0gZmFsc2UpIHtcbiAgICBpZiAoIWlzSW50KSByZXR1cm4gYSArIE1hdGgucmFuZG9tKCkgKiAoYiAtIGEpO1xuICAgIGVsc2UgcmV0dXJuICgoTWF0aC5yYW5kb20oKSAqIChiIC0gYSkpID4+IDApICsgYTtcbiAgfSxcblxuICByYW5kb21GbG9hdGluZyhjZW50ZXIsIGYsIGlzSW50KSB7XG4gICAgcmV0dXJuIHRoaXMucmFuZG9tQVRvQihjZW50ZXIgLSBmLCBjZW50ZXIgKyBmLCBpc0ludCk7XG4gIH0sXG5cbiAgcmFuZG9tQ29sb3IoKSB7XG4gICAgcmV0dXJuIFwiI1wiICsgKFwiMDAwMDBcIiArICgoTWF0aC5yYW5kb20oKSAqIDB4MTAwMDAwMCkgPDwgMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNik7XG4gIH0sXG5cbiAgcmFuZG9tWm9uZShkaXNwbGF5KSB7fSxcblxuICBmbG9vcihudW0sIGsgPSA0KSB7XG4gICAgY29uc3QgZGlnaXRzID0gTWF0aC5wb3coMTAsIGspO1xuICAgIHJldHVybiBNYXRoLmZsb29yKG51bSAqIGRpZ2l0cykgLyBkaWdpdHM7XG4gIH0sXG5cbiAgZGVncmVlVHJhbnNmb3JtKGEpIHtcbiAgICByZXR1cm4gKGEgKiBQSSkgLyAxODA7XG4gIH0sXG5cbiAgdG9Db2xvcjE2KG51bSkge1xuICAgIHJldHVybiBgIyR7bnVtLnRvU3RyaW5nKDE2KX1gO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNYXRoVXRpbDtcbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIEludGVncmF0aW9uIHtcbiAgY29uc3RydWN0b3IodHlwZSkge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBjYWxjdWxhdGUocGFydGljbGVzLCB0aW1lLCBkYW1waW5nKSB7XG4gICAgdGhpcy5ldWxlckludGVncmF0ZShwYXJ0aWNsZXMsIHRpbWUsIGRhbXBpbmcpO1xuICB9XG5cbiAgLy8gRXVsZXIgSW50ZWdyYXRlXG4gIC8vIGh0dHBzOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvRXVsZXJfbWV0aG9kXG4gIGV1bGVySW50ZWdyYXRlKHBhcnRpY2xlLCB0aW1lLCBkYW1waW5nKSB7XG4gICAgaWYgKCFwYXJ0aWNsZS5zbGVlcCkge1xuICAgICAgcGFydGljbGUub2xkLnAuY29weShwYXJ0aWNsZS5wKTtcbiAgICAgIHBhcnRpY2xlLm9sZC52LmNvcHkocGFydGljbGUudik7XG5cbiAgICAgIHBhcnRpY2xlLmEubXVsdGlwbHlTY2FsYXIoMSAvIHBhcnRpY2xlLm1hc3MpO1xuICAgICAgcGFydGljbGUudi5hZGQocGFydGljbGUuYS5tdWx0aXBseVNjYWxhcih0aW1lKSk7XG4gICAgICBwYXJ0aWNsZS5wLmFkZChwYXJ0aWNsZS5vbGQudi5tdWx0aXBseVNjYWxhcih0aW1lKSk7XG5cbiAgICAgIGlmIChkYW1waW5nKSBwYXJ0aWNsZS52Lm11bHRpcGx5U2NhbGFyKGRhbXBpbmcpO1xuXG4gICAgICBwYXJ0aWNsZS5hLmNsZWFyKCk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgUG9vbCBmcm9tIFwiLi9Qb29sXCI7XG5pbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IFN0YXRzIGZyb20gXCIuLi9kZWJ1Zy9TdGF0c1wiO1xuaW1wb3J0IEV2ZW50RGlzcGF0Y2hlciBmcm9tIFwiLi4vZXZlbnRzL0V2ZW50RGlzcGF0Y2hlclwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuLi9tYXRoL01hdGhVdGlsXCI7XG5pbXBvcnQgSW50ZWdyYXRpb24gZnJvbSBcIi4uL21hdGgvSW50ZWdyYXRpb25cIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHJvdG9uIHtcbiAgc3RhdGljIFVTRV9DTE9DSyA9IGZhbHNlO1xuXG4gIC8vIG1lYXN1cmUgMToxMDBcbiAgc3RhdGljIE1FQVNVUkUgPSAxMDA7XG4gIHN0YXRpYyBFVUxFUiA9IFwiZXVsZXJcIjtcbiAgc3RhdGljIFJLMiA9IFwicnVuZ2Uta3V0dGEyXCI7XG5cbiAgLy8gZXZlbnQgbmFtZVxuICBzdGF0aWMgUEFSVElDTEVfQ1JFQVRFRCA9IFwiUEFSVElDTEVfQ1JFQVRFRFwiO1xuICBzdGF0aWMgUEFSVElDTEVfVVBEQVRFID0gXCJQQVJUSUNMRV9VUERBVEVcIjtcbiAgc3RhdGljIFBBUlRJQ0xFX1NMRUVQID0gXCJQQVJUSUNMRV9TTEVFUFwiO1xuICBzdGF0aWMgUEFSVElDTEVfREVBRCA9IFwiUEFSVElDTEVfREVBRFwiO1xuXG4gIHN0YXRpYyBFTUlUVEVSX0FEREVEID0gXCJFTUlUVEVSX0FEREVEXCI7XG4gIHN0YXRpYyBFTUlUVEVSX1JFTU9WRUQgPSBcIkVNSVRURVJfUkVNT1ZFRFwiO1xuXG4gIHN0YXRpYyBQUk9UT05fVVBEQVRFID0gXCJQUk9UT05fVVBEQVRFXCI7XG4gIHN0YXRpYyBQUk9UT05fVVBEQVRFX0FGVEVSID0gXCJQUk9UT05fVVBEQVRFX0FGVEVSXCI7XG4gIHN0YXRpYyBERUZBVUxUX0lOVEVSVkFMID0gMC4wMTY3O1xuXG4gIHN0YXRpYyBhbWVuZENoYW5nZVRhYnNCdWcgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUaGUgY29uc3RydWN0b3IgdG8gYWRkIGVtaXR0ZXJzXG4gICAqXG4gICAqIEBjb25zdHJ1Y3RvciBQcm90b25cbiAgICpcbiAgICogQHRvZG8gcHJvUGFydGljbGVDb3VudCBpcyBub3QgaW4gdXNlXG4gICAqIEB0b2RvIGFkZCBtb3JlIGRvY3VtZW50YXRpb24gb2YgdGhlIHNpbmdsZSBwcm9wZXJ0aWVzIGFuZCBwYXJhbWV0ZXJzXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbcHJvUGFydGljbGVDb3VudF0gbm90IGluIHVzZT9cbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtpbnRlZ3JhdGlvblR5cGU9UHJvdG9uLkVVTEVSXVxuICAgKlxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gW2ludGVncmF0aW9uVHlwZT1Qcm90b24uRVVMRVJdXG4gICAqIEBwcm9wZXJ0eSB7QXJyYXl9IGVtaXR0ZXJzICAgQWxsIGFkZGVkIGVtaXR0ZXJcbiAgICogQHByb3BlcnR5IHtBcnJheX0gcmVuZGVyZXJzICBBbGwgYWRkZWQgcmVuZGVyZXJcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IHRpbWUgICAgICBUaGUgYWN0aXZlIHRpbWVcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IG9sZHRpbWUgICBUaGUgb2xkIHRpbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGludGVncmF0aW9uVHlwZSkge1xuICAgIHRoaXMuZW1pdHRlcnMgPSBbXTtcbiAgICB0aGlzLnJlbmRlcmVycyA9IFtdO1xuXG4gICAgdGhpcy50aW1lID0gMDtcbiAgICB0aGlzLm5vdyA9IDA7XG4gICAgdGhpcy50aGVuID0gMDtcbiAgICB0aGlzLmVsYXBzZWQgPSAwO1xuXG4gICAgdGhpcy5zdGF0cyA9IG5ldyBTdGF0cyh0aGlzKTtcbiAgICB0aGlzLnBvb2wgPSBuZXcgUG9vbCg4MCk7XG5cbiAgICB0aGlzLmludGVncmF0aW9uVHlwZSA9IFV0aWwuaW5pdFZhbHVlKGludGVncmF0aW9uVHlwZSwgUHJvdG9uLkVVTEVSKTtcbiAgICB0aGlzLmludGVncmF0b3IgPSBuZXcgSW50ZWdyYXRpb24odGhpcy5pbnRlZ3JhdGlvblR5cGUpO1xuXG4gICAgdGhpcy5fZnBzID0gXCJhdXRvXCI7XG4gICAgdGhpcy5faW50ZXJ2YWwgPSBQcm90b24uREVGQVVMVF9JTlRFUlZBTDtcbiAgfVxuXG4gIHNldCBmcHMoZnBzKSB7XG4gICAgdGhpcy5fZnBzID0gZnBzO1xuICAgIHRoaXMuX2ludGVydmFsID0gZnBzID09PSBcImF1dG9cIiA/IFByb3Rvbi5ERUZBVUxUX0lOVEVSVkFMIDogTWF0aFV0aWwuZmxvb3IoMSAvIGZwcywgNyk7XG4gIH1cblxuICBnZXQgZnBzKCkge1xuICAgIHJldHVybiB0aGlzLl9mcHM7XG4gIH1cblxuICAvKipcbiAgICogYWRkIGEgdHlwZSBvZiBSZW5kZXJlclxuICAgKlxuICAgKiBAbWV0aG9kIGFkZFJlbmRlcmVyXG4gICAqIEBtZW1iZXJvZiBQcm90b25cbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7UmVuZGVyZXJ9IHJlbmRlclxuICAgKi9cbiAgYWRkUmVuZGVyZXIocmVuZGVyKSB7XG4gICAgcmVuZGVyLmluaXQodGhpcyk7XG4gICAgdGhpcy5yZW5kZXJlcnMucHVzaChyZW5kZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBuYW1lIGFkZCBhIHR5cGUgb2YgUmVuZGVyZXJcbiAgICpcbiAgICogQG1ldGhvZCBhZGRSZW5kZXJlclxuICAgKiBAcGFyYW0ge1JlbmRlcmVyfSByZW5kZXJcbiAgICovXG4gIHJlbW92ZVJlbmRlcmVyKHJlbmRlcikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZW5kZXJlcnMuaW5kZXhPZihyZW5kZXIpO1xuICAgIHRoaXMucmVuZGVyZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgcmVuZGVyLnJlbW92ZSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGQgdGhlIEVtaXR0ZXJcbiAgICpcbiAgICogQG1ldGhvZCBhZGRFbWl0dGVyXG4gICAqIEBtZW1iZXJvZiBQcm90b25cbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7RW1pdHRlcn0gZW1pdHRlclxuICAgKi9cbiAgYWRkRW1pdHRlcihlbWl0dGVyKSB7XG4gICAgdGhpcy5lbWl0dGVycy5wdXNoKGVtaXR0ZXIpO1xuICAgIGVtaXR0ZXIucGFyZW50ID0gdGhpcztcblxuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChQcm90b24uRU1JVFRFUl9BRERFRCwgZW1pdHRlcik7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhbiBFbWl0dGVyXG4gICAqXG4gICAqIEBtZXRob2QgcmVtb3ZlRW1pdHRlclxuICAgKiBAbWVtYmVyb2YgUHJvdG9uXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5FbWl0dGVyfSBlbWl0dGVyXG4gICAqL1xuICByZW1vdmVFbWl0dGVyKGVtaXR0ZXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZW1pdHRlcnMuaW5kZXhPZihlbWl0dGVyKTtcbiAgICB0aGlzLmVtaXR0ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgZW1pdHRlci5wYXJlbnQgPSBudWxsO1xuXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KFByb3Rvbi5FTUlUVEVSX1JFTU9WRUQsIGVtaXR0ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYWxsIGFkZGVkIGVtaXR0ZXJzXG4gICAqXG4gICAqIEBtZXRob2QgdXBkYXRlXG4gICAqIEBtZW1iZXJvZiBQcm90b25cbiAgICogQGluc3RhbmNlXG4gICAqL1xuICB1cGRhdGUoKSB7XG4gICAgLy8gJ2F1dG8nIGlzIHRoZSBkZWZhdWx0IGJyb3dzZXIgcmVmcmVzaCByYXRlLCB0aGUgdmFzdCBtYWpvcml0eSBpcyA2MGZwc1xuICAgIGlmICh0aGlzLl9mcHMgPT09IFwiYXV0b1wiKSB7XG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoUHJvdG9uLlBST1RPTl9VUERBVEUpO1xuXG4gICAgICBpZiAoUHJvdG9uLlVTRV9DTE9DSykge1xuICAgICAgICBpZiAoIXRoaXMudGhlbikgdGhpcy50aGVuID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIHRoaXMubm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIHRoaXMuZWxhcHNlZCA9ICh0aGlzLm5vdyAtIHRoaXMudGhlbikgKiAwLjAwMTtcbiAgICAgICAgLy8gRml4IGJ1Z3Mgc3VjaCBhcyBjaHJvbWUgYnJvd3NlciBzd2l0Y2hpbmcgdGFicyBjYXVzaW5nIGV4Y2Vzc2l2ZSB0aW1lIGRpZmZlcmVuY2VcbiAgICAgICAgdGhpcy5hbWVuZENoYW5nZVRhYnNCdWcoKTtcblxuICAgICAgICBpZiAodGhpcy5lbGFwc2VkID4gMCkgdGhpcy5lbWl0dGVyc1VwZGF0ZSh0aGlzLmVsYXBzZWQpO1xuICAgICAgICB0aGlzLnRoZW4gPSB0aGlzLm5vdztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZW1pdHRlcnNVcGRhdGUoUHJvdG9uLkRFRkFVTFRfSU5URVJWQUwpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoUHJvdG9uLlBST1RPTl9VUERBVEVfQUZURVIpO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBmcHMgZnJhbWUgcmF0ZSBpcyBzZXRcbiAgICBlbHNlIHtcbiAgICAgIGlmICghdGhpcy50aGVuKSB0aGlzLnRoZW4gPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgIHRoaXMubm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICB0aGlzLmVsYXBzZWQgPSAodGhpcy5ub3cgLSB0aGlzLnRoZW4pICogMC4wMDE7XG5cbiAgICAgIGlmICh0aGlzLmVsYXBzZWQgPiB0aGlzLl9pbnRlcnZhbCkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoUHJvdG9uLlBST1RPTl9VUERBVEUpO1xuICAgICAgICB0aGlzLmVtaXR0ZXJzVXBkYXRlKHRoaXMuX2ludGVydmFsKTtcbiAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTk3NjQwMTgvY29udHJvbGxpbmctZnBzLXdpdGgtcmVxdWVzdGFuaW1hdGlvbmZyYW1lXG4gICAgICAgIHRoaXMudGhlbiA9IHRoaXMubm93IC0gKHRoaXMuZWxhcHNlZCAlIHRoaXMuX2ludGVydmFsKSAqIDEwMDA7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChQcm90b24uUFJPVE9OX1VQREFURV9BRlRFUik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZW1pdHRlcnNVcGRhdGUoZWxhcHNlZCkge1xuICAgIGxldCBpID0gdGhpcy5lbWl0dGVycy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkgdGhpcy5lbWl0dGVyc1tpXS51cGRhdGUoZWxhcHNlZCk7XG4gIH1cblxuICAvKipcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEBtZXRob2QgYW1lbmRDaGFuZ2VUYWJzQnVnXG4gICAqIEBtZW1iZXJvZiBQcm90b25cbiAgICogQGluc3RhbmNlXG4gICAqL1xuICBhbWVuZENoYW5nZVRhYnNCdWcoKSB7XG4gICAgaWYgKCFQcm90b24uYW1lbmRDaGFuZ2VUYWJzQnVnKSByZXR1cm47XG4gICAgaWYgKHRoaXMuZWxhcHNlZCA+IDAuNSkge1xuICAgICAgdGhpcy50aGVuID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICB0aGlzLmVsYXBzZWQgPSAwO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb3VudHMgYWxsIHBhcnRpY2xlcyBmcm9tIGFsbCBlbWl0dGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIGdldENvdW50XG4gICAqIEBtZW1iZXJvZiBQcm90b25cbiAgICogQGluc3RhbmNlXG4gICAqL1xuICBnZXRDb3VudCgpIHtcbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIGxldCBpID0gdGhpcy5lbWl0dGVycy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoaS0tKSB0b3RhbCArPSB0aGlzLmVtaXR0ZXJzW2ldLnBhcnRpY2xlcy5sZW5ndGg7XG4gICAgcmV0dXJuIHRvdGFsO1xuICB9XG5cbiAgZ2V0QWxsUGFydGljbGVzKCkge1xuICAgIGxldCBwYXJ0aWNsZXMgPSBbXTtcbiAgICBsZXQgaSA9IHRoaXMuZW1pdHRlcnMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGktLSkgcGFydGljbGVzID0gcGFydGljbGVzLmNvbmNhdCh0aGlzLmVtaXR0ZXJzW2ldLnBhcnRpY2xlcyk7XG4gICAgcmV0dXJuIHBhcnRpY2xlcztcbiAgfVxuXG4gIGRlc3Ryb3lBbGxFbWl0dGVycygpIHtcbiAgICBVdGlsLmRlc3Ryb3lBbGwodGhpcy5lbWl0dGVycyk7XG4gIH1cblxuICAvKipcbiAgICogRGVzdHJveXMgZXZlcnl0aGluZyByZWxhdGVkIHRvIHRoaXMgUHJvdG9uIGluc3RhbmNlLiBUaGlzIGluY2x1ZGVzIGFsbCBlbWl0dGVycywgYW5kIGFsbCBwcm9wZXJ0aWVzXG4gICAqXG4gICAqIEBtZXRob2QgZGVzdHJveVxuICAgKiBAbWVtYmVyb2YgUHJvdG9uXG4gICAqIEBpbnN0YW5jZVxuICAgKi9cbiAgZGVzdHJveShyZW1vdmUgPSBmYWxzZSkge1xuICAgIGNvbnN0IGRlc3Ryb3lPdGhlciA9ICgpID0+IHtcbiAgICAgIHRoaXMudGltZSA9IDA7XG4gICAgICB0aGlzLnRoZW4gPSAwO1xuICAgICAgdGhpcy5wb29sLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuc3RhdHMuZGVzdHJveSgpO1xuXG4gICAgICBVdGlsLmRlc3Ryb3lBbGwodGhpcy5lbWl0dGVycyk7XG4gICAgICBVdGlsLmRlc3Ryb3lBbGwodGhpcy5yZW5kZXJlcnMsIHRoaXMuZ2V0QWxsUGFydGljbGVzKCkpO1xuXG4gICAgICB0aGlzLmludGVncmF0b3IgPSBudWxsO1xuICAgICAgdGhpcy5yZW5kZXJlcnMgPSBudWxsO1xuICAgICAgdGhpcy5lbWl0dGVycyA9IG51bGw7XG4gICAgICB0aGlzLnN0YXRzID0gbnVsbDtcbiAgICAgIHRoaXMucG9vbCA9IG51bGw7XG4gICAgfTtcblxuICAgIGlmIChyZW1vdmUpIHtcbiAgICAgIHNldFRpbWVvdXQoZGVzdHJveU90aGVyLCAyMDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZXN0cm95T3RoZXIoKTtcbiAgICB9XG4gIH1cbn1cblxuRXZlbnREaXNwYXRjaGVyLmJpbmQoUHJvdG9uKTtcbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIFJnYiB7XG4gIGNvbnN0cnVjdG9yKHIgPSAyNTUsIGcgPSAyNTUsIGIgPSAyNTUpIHtcbiAgICB0aGlzLnIgPSByO1xuICAgIHRoaXMuZyA9IGc7XG4gICAgdGhpcy5iID0gYjtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuciA9IDI1NTtcbiAgICB0aGlzLmcgPSAyNTU7XG4gICAgdGhpcy5iID0gMjU1O1xuICB9XG59XG4iLCJleHBvcnQgZGVmYXVsdCB7XG4gIGhhc1Byb3AodGFyZ2V0LCBrZXkpIHtcbiAgICBpZiAoIXRhcmdldCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0YXJnZXRba2V5XSAhPT0gdW5kZWZpbmVkO1xuICAgIC8vIHJldHVybiBvYmouaGFzT3duUHJvcGVydHkoa2V5KTtcbiAgfSxcblxuICAvKipcbiAgICogc2V0IHRoZSBwcm90b3R5cGUgaW4gYSBnaXZlbiBwcm90b3R5cGVPYmplY3RcbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIHNldFByb3BcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciBwYXJhbSBgdGFyZ2V0YFxuICAgKiBAdG9kbyB0cmFuc2xhdGUgZGVzcmlwdGlvbiBmcm9tIGNoaW5lc2UgdG8gZW5nbGlzaFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gdGFyZ2V0XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwcm90b3R5cGVPYmplY3QgQW4gb2JqZWN0IG9mIHNpbmdsZSBwcm90b3R5cGVzXG4gICAqXG4gICAqIEByZXR1cm4ge09iamVjdH0gdGFyZ2V0XG4gICAqL1xuICBzZXRQcm9wKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKGxldCBwcm9wIGluIHByb3BzKSB7XG4gICAgICBpZiAodGFyZ2V0Lmhhc093blByb3BlcnR5KHByb3ApKSB7XG4gICAgICAgIHRhcmdldFtwcm9wXSA9IFNwYW4uZ2V0U3BhblZhbHVlKHByb3BzW3Byb3BdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9LFxuXG4gIC8qKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5VdGlsXG4gICAqIEBtZXRob2Qgc2V0VmVjdG9yVmFsXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvbiBmb3IgcGFyYW0gYHRhcmdldGBcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciBwYXJhbSBgY29uZmBcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciBmdW5jdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gdGFyZ2V0XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25mXG4gICAqL1xuICBzZXRWZWN0b3JWYWwocGFydGljbGUsIGNvbmYgPSBudWxsKSB7XG4gICAgaWYgKCFjb25mKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5oYXNQcm9wKGNvbmYsIFwieFwiKSkgcGFydGljbGUucC54ID0gY29uZltcInhcIl07XG4gICAgaWYgKHRoaXMuaGFzUHJvcChjb25mLCBcInlcIikpIHBhcnRpY2xlLnAueSA9IGNvbmZbXCJ5XCJdO1xuXG4gICAgaWYgKHRoaXMuaGFzUHJvcChjb25mLCBcInZ4XCIpKSBwYXJ0aWNsZS52LnggPSBjb25mW1widnhcIl07XG4gICAgaWYgKHRoaXMuaGFzUHJvcChjb25mLCBcInZ5XCIpKSBwYXJ0aWNsZS52LnkgPSBjb25mW1widnlcIl07XG5cbiAgICBpZiAodGhpcy5oYXNQcm9wKGNvbmYsIFwiYXhcIikpIHBhcnRpY2xlLmEueCA9IGNvbmZbXCJheFwiXTtcbiAgICBpZiAodGhpcy5oYXNQcm9wKGNvbmYsIFwiYXlcIikpIHBhcnRpY2xlLmEueSA9IGNvbmZbXCJheVwiXTtcblxuICAgIGlmICh0aGlzLmhhc1Byb3AoY29uZiwgXCJwXCIpKSBwYXJ0aWNsZS5wLmNvcHkoY29uZltcInBcIl0pO1xuICAgIGlmICh0aGlzLmhhc1Byb3AoY29uZiwgXCJ2XCIpKSBwYXJ0aWNsZS52LmNvcHkoY29uZltcInZcIl0pO1xuICAgIGlmICh0aGlzLmhhc1Byb3AoY29uZiwgXCJhXCIpKSBwYXJ0aWNsZS5hLmNvcHkoY29uZltcImFcIl0pO1xuXG4gICAgaWYgKHRoaXMuaGFzUHJvcChjb25mLCBcInBvc2l0aW9uXCIpKSBwYXJ0aWNsZS5wLmNvcHkoY29uZltcInBvc2l0aW9uXCJdKTtcbiAgICBpZiAodGhpcy5oYXNQcm9wKGNvbmYsIFwidmVsb2NpdHlcIikpIHBhcnRpY2xlLnYuY29weShjb25mW1widmVsb2NpdHlcIl0pO1xuICAgIGlmICh0aGlzLmhhc1Byb3AoY29uZiwgXCJhY2NlbGVyYXRlXCIpKSBwYXJ0aWNsZS5hLmNvcHkoY29uZltcImFjY2VsZXJhdGVcIl0pO1xuICB9XG59O1xuIiwiaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuL01hdGhVdGlsXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZWFzZUxpbmVhcih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcblxuICBlYXNlSW5RdWFkKHZhbHVlKSB7XG4gICAgcmV0dXJuIE1hdGgucG93KHZhbHVlLCAyKTtcbiAgfSxcblxuICBlYXNlT3V0UXVhZCh2YWx1ZSkge1xuICAgIHJldHVybiAtKE1hdGgucG93KHZhbHVlIC0gMSwgMikgLSAxKTtcbiAgfSxcblxuICBlYXNlSW5PdXRRdWFkKHZhbHVlKSB7XG4gICAgaWYgKCh2YWx1ZSAvPSAwLjUpIDwgMSkgcmV0dXJuIDAuNSAqIE1hdGgucG93KHZhbHVlLCAyKTtcblxuICAgIHJldHVybiAtMC41ICogKCh2YWx1ZSAtPSAyKSAqIHZhbHVlIC0gMik7XG4gIH0sXG5cbiAgZWFzZUluQ3ViaWModmFsdWUpIHtcbiAgICByZXR1cm4gTWF0aC5wb3codmFsdWUsIDMpO1xuICB9LFxuXG4gIGVhc2VPdXRDdWJpYyh2YWx1ZSkge1xuICAgIHJldHVybiBNYXRoLnBvdyh2YWx1ZSAtIDEsIDMpICsgMTtcbiAgfSxcblxuICBlYXNlSW5PdXRDdWJpYyh2YWx1ZSkge1xuICAgIGlmICgodmFsdWUgLz0gMC41KSA8IDEpIHJldHVybiAwLjUgKiBNYXRoLnBvdyh2YWx1ZSwgMyk7XG5cbiAgICByZXR1cm4gMC41ICogKE1hdGgucG93KHZhbHVlIC0gMiwgMykgKyAyKTtcbiAgfSxcblxuICBlYXNlSW5RdWFydCh2YWx1ZSkge1xuICAgIHJldHVybiBNYXRoLnBvdyh2YWx1ZSwgNCk7XG4gIH0sXG5cbiAgZWFzZU91dFF1YXJ0KHZhbHVlKSB7XG4gICAgcmV0dXJuIC0oTWF0aC5wb3codmFsdWUgLSAxLCA0KSAtIDEpO1xuICB9LFxuXG4gIGVhc2VJbk91dFF1YXJ0KHZhbHVlKSB7XG4gICAgaWYgKCh2YWx1ZSAvPSAwLjUpIDwgMSkgcmV0dXJuIDAuNSAqIE1hdGgucG93KHZhbHVlLCA0KTtcblxuICAgIHJldHVybiAtMC41ICogKCh2YWx1ZSAtPSAyKSAqIE1hdGgucG93KHZhbHVlLCAzKSAtIDIpO1xuICB9LFxuXG4gIGVhc2VJblNpbmUodmFsdWUpIHtcbiAgICByZXR1cm4gLU1hdGguY29zKHZhbHVlICogTWF0aFV0aWwuUElfMikgKyAxO1xuICB9LFxuXG4gIGVhc2VPdXRTaW5lKHZhbHVlKSB7XG4gICAgcmV0dXJuIE1hdGguc2luKHZhbHVlICogTWF0aFV0aWwuUElfMik7XG4gIH0sXG5cbiAgZWFzZUluT3V0U2luZSh2YWx1ZSkge1xuICAgIHJldHVybiAtMC41ICogKE1hdGguY29zKE1hdGguUEkgKiB2YWx1ZSkgLSAxKTtcbiAgfSxcblxuICBlYXNlSW5FeHBvKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gMCA6IE1hdGgucG93KDIsIDEwICogKHZhbHVlIC0gMSkpO1xuICB9LFxuXG4gIGVhc2VPdXRFeHBvKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAxID8gMSA6IC1NYXRoLnBvdygyLCAtMTAgKiB2YWx1ZSkgKyAxO1xuICB9LFxuXG4gIGVhc2VJbk91dEV4cG8odmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IDApIHJldHVybiAwO1xuXG4gICAgaWYgKHZhbHVlID09PSAxKSByZXR1cm4gMTtcblxuICAgIGlmICgodmFsdWUgLz0gMC41KSA8IDEpIHJldHVybiAwLjUgKiBNYXRoLnBvdygyLCAxMCAqICh2YWx1ZSAtIDEpKTtcblxuICAgIHJldHVybiAwLjUgKiAoLU1hdGgucG93KDIsIC0xMCAqIC0tdmFsdWUpICsgMik7XG4gIH0sXG5cbiAgZWFzZUluQ2lyYyh2YWx1ZSkge1xuICAgIHJldHVybiAtKE1hdGguc3FydCgxIC0gdmFsdWUgKiB2YWx1ZSkgLSAxKTtcbiAgfSxcblxuICBlYXNlT3V0Q2lyYyh2YWx1ZSkge1xuICAgIHJldHVybiBNYXRoLnNxcnQoMSAtIE1hdGgucG93KHZhbHVlIC0gMSwgMikpO1xuICB9LFxuXG4gIGVhc2VJbk91dENpcmModmFsdWUpIHtcbiAgICBpZiAoKHZhbHVlIC89IDAuNSkgPCAxKSByZXR1cm4gLTAuNSAqIChNYXRoLnNxcnQoMSAtIHZhbHVlICogdmFsdWUpIC0gMSk7XG4gICAgcmV0dXJuIDAuNSAqIChNYXRoLnNxcnQoMSAtICh2YWx1ZSAtPSAyKSAqIHZhbHVlKSArIDEpO1xuICB9LFxuXG4gIGVhc2VJbkJhY2sodmFsdWUpIHtcbiAgICBsZXQgcyA9IDEuNzAxNTg7XG4gICAgcmV0dXJuIHZhbHVlICogdmFsdWUgKiAoKHMgKyAxKSAqIHZhbHVlIC0gcyk7XG4gIH0sXG5cbiAgZWFzZU91dEJhY2sodmFsdWUpIHtcbiAgICBsZXQgcyA9IDEuNzAxNTg7XG4gICAgcmV0dXJuICh2YWx1ZSA9IHZhbHVlIC0gMSkgKiB2YWx1ZSAqICgocyArIDEpICogdmFsdWUgKyBzKSArIDE7XG4gIH0sXG5cbiAgZWFzZUluT3V0QmFjayh2YWx1ZSkge1xuICAgIGxldCBzID0gMS43MDE1ODtcbiAgICBpZiAoKHZhbHVlIC89IDAuNSkgPCAxKSByZXR1cm4gMC41ICogKHZhbHVlICogdmFsdWUgKiAoKChzICo9IDEuNTI1KSArIDEpICogdmFsdWUgLSBzKSk7XG4gICAgcmV0dXJuIDAuNSAqICgodmFsdWUgLT0gMikgKiB2YWx1ZSAqICgoKHMgKj0gMS41MjUpICsgMSkgKiB2YWx1ZSArIHMpICsgMik7XG4gIH0sXG5cbiAgZ2V0RWFzaW5nKGVhc2UpIHtcbiAgICBpZiAodHlwZW9mIGVhc2UgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGVhc2U7XG4gICAgZWxzZSByZXR1cm4gdGhpc1tlYXNlXSB8fCB0aGlzLmVhc2VMaW5lYXI7XG4gIH1cbn07XG4iLCJpbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVjdG9yMkQge1xuICBjb25zdHJ1Y3Rvcih4LCB5KSB7XG4gICAgdGhpcy54ID0geCB8fCAwO1xuICAgIHRoaXMueSA9IHkgfHwgMDtcbiAgfVxuXG4gIHNldCh4LCB5KSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0WCh4KSB7XG4gICAgdGhpcy54ID0geDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldFkoeSkge1xuICAgIHRoaXMueSA9IHk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXRHcmFkaWVudCgpIHtcbiAgICBpZiAodGhpcy54ICE9PSAwKSByZXR1cm4gTWF0aC5hdGFuMih0aGlzLnksIHRoaXMueCk7XG4gICAgZWxzZSBpZiAodGhpcy55ID4gMCkgcmV0dXJuIE1hdGhVdGlsLlBJXzI7XG4gICAgZWxzZSBpZiAodGhpcy55IDwgMCkgcmV0dXJuIC1NYXRoVXRpbC5QSV8yO1xuICB9XG5cbiAgY29weSh2KSB7XG4gICAgdGhpcy54ID0gdi54O1xuICAgIHRoaXMueSA9IHYueTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkKHYsIHcpIHtcbiAgICBpZiAodyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5hZGRWZWN0b3JzKHYsIHcpO1xuICAgIH1cblxuICAgIHRoaXMueCArPSB2Lng7XG4gICAgdGhpcy55ICs9IHYueTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkWFkoYSwgYikge1xuICAgIHRoaXMueCArPSBhO1xuICAgIHRoaXMueSArPSBiO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGRWZWN0b3JzKGEsIGIpIHtcbiAgICB0aGlzLnggPSBhLnggKyBiLng7XG4gICAgdGhpcy55ID0gYS55ICsgYi55O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdWIodiwgdykge1xuICAgIGlmICh3ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnN1YlZlY3RvcnModiwgdyk7XG4gICAgfVxuXG4gICAgdGhpcy54IC09IHYueDtcbiAgICB0aGlzLnkgLT0gdi55O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdWJWZWN0b3JzKGEsIGIpIHtcbiAgICB0aGlzLnggPSBhLnggLSBiLng7XG4gICAgdGhpcy55ID0gYS55IC0gYi55O1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBkaXZpZGVTY2FsYXIocykge1xuICAgIGlmIChzICE9PSAwKSB7XG4gICAgICB0aGlzLnggLz0gcztcbiAgICAgIHRoaXMueSAvPSBzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldCgwLCAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG11bHRpcGx5U2NhbGFyKHMpIHtcbiAgICB0aGlzLnggKj0gcztcbiAgICB0aGlzLnkgKj0gcztcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbmVnYXRlKCkge1xuICAgIHJldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKC0xKTtcbiAgfVxuXG4gIGRvdCh2KSB7XG4gICAgcmV0dXJuIHRoaXMueCAqIHYueCArIHRoaXMueSAqIHYueTtcbiAgfVxuXG4gIGxlbmd0aFNxKCkge1xuICAgIHJldHVybiB0aGlzLnggKiB0aGlzLnggKyB0aGlzLnkgKiB0aGlzLnk7XG4gIH1cblxuICBsZW5ndGgoKSB7XG4gICAgcmV0dXJuIE1hdGguc3FydCh0aGlzLnggKiB0aGlzLnggKyB0aGlzLnkgKiB0aGlzLnkpO1xuICB9XG5cbiAgbm9ybWFsaXplKCkge1xuICAgIHJldHVybiB0aGlzLmRpdmlkZVNjYWxhcih0aGlzLmxlbmd0aCgpKTtcbiAgfVxuXG4gIGRpc3RhbmNlVG8odikge1xuICAgIHJldHVybiBNYXRoLnNxcnQodGhpcy5kaXN0YW5jZVRvU3F1YXJlZCh2KSk7XG4gIH1cblxuICByb3RhdGUodGhhKSB7XG4gICAgY29uc3QgeCA9IHRoaXMueDtcbiAgICBjb25zdCB5ID0gdGhpcy55O1xuXG4gICAgdGhpcy54ID0geCAqIE1hdGguY29zKHRoYSkgKyB5ICogTWF0aC5zaW4odGhhKTtcbiAgICB0aGlzLnkgPSAteCAqIE1hdGguc2luKHRoYSkgKyB5ICogTWF0aC5jb3ModGhhKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGlzdGFuY2VUb1NxdWFyZWQodikge1xuICAgIGNvbnN0IGR4ID0gdGhpcy54IC0gdi54O1xuICAgIGNvbnN0IGR5ID0gdGhpcy55IC0gdi55O1xuXG4gICAgcmV0dXJuIGR4ICogZHggKyBkeSAqIGR5O1xuICB9XG5cbiAgbGVycCh2LCBhbHBoYSkge1xuICAgIHRoaXMueCArPSAodi54IC0gdGhpcy54KSAqIGFscGhhO1xuICAgIHRoaXMueSArPSAodi55IC0gdGhpcy55KSAqIGFscGhhO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBlcXVhbHModikge1xuICAgIHJldHVybiB2LnggPT09IHRoaXMueCAmJiB2LnkgPT09IHRoaXMueTtcbiAgfVxuXG4gIGNsZWFyKCkge1xuICAgIHRoaXMueCA9IDAuMDtcbiAgICB0aGlzLnkgPSAwLjA7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICByZXR1cm4gbmV3IFZlY3RvcjJEKHRoaXMueCwgdGhpcy55KTtcbiAgfVxufVxuIiwiLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL2JlaGF2aW91ci9CZWhhdmlvdXInKX0gQmVoYXZpb3VyICovXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi4vbWF0aC9WZWN0b3IyRCcpfSBWZWN0b3IyRCAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL3V0aWxzL1JnYicpfSBSZ2IgKi9cbmltcG9ydCBSZ2IgZnJvbSBcIi4uL3V0aWxzL1JnYlwiO1xuaW1wb3J0IFB1aWQgZnJvbSBcIi4uL3V0aWxzL1B1aWRcIjtcbmltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgUHJvcFV0aWwgZnJvbSBcIi4uL3V0aWxzL1Byb3BVdGlsXCI7XG5pbXBvcnQgZWFzZSBmcm9tIFwiLi4vbWF0aC9lYXNlXCI7XG5pbXBvcnQgVmVjdG9yMkQgZnJvbSBcIi4uL21hdGgvVmVjdG9yMkRcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJ0aWNsZSB7XG4gIC8qKiBAdHlwZSBzdHJpbmcgKi9cbiAgaWQgPSBcIlwiO1xuXG4gIC8qKiBAdHlwZSB7e3A6VmVjdG9yMkQsdjpWZWN0b3IyRCxhOlZlY3RvcjJEfX0gKi9cbiAgb2xkID0gbnVsbDtcblxuICAvKiogQHR5cGUge29iamVjdH0gKi9cbiAgZGF0YSA9IG51bGw7XG5cbiAgLyoqIEB0eXBlIHtCZWhhdmlvdXJbXX0gKi9cbiAgYmVoYXZpb3VycyA9IG51bGw7XG5cbiAgLyoqIEB0eXBlIHtWZWN0b3IyRH0gKi9cbiAgcCA9IG51bGw7XG5cbiAgLyoqIEB0eXBlIHtWZWN0b3IyRH0gKi9cbiAgdiA9IG51bGw7XG5cbiAgLyoqIEB0eXBlIHtWZWN0b3IyRH0gKi9cbiAgYSA9IG51bGw7XG5cbiAgLyoqIEB0eXBlIHtSZ2J9ICovXG4gIHJnYiA9IG51bGw7XG5cbiAgLyoqXG4gICAqIHRoZSBQYXJ0aWNsZSBjbGFzc1xuICAgKlxuICAgKiBAY2xhc3MgUHJvdG9uLlBhcnRpY2xlXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge09iamVjdH0gcE9iaiB0aGUgcGFyYW1ldGVycyBvYmplY3Q7XG4gICAqIGZvciBleGFtcGxlIHtsaWZlOjMsZGVhZDpmYWxzZX1cbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmYpIHtcbiAgICAvKipcbiAgICAgKiBUaGUgcGFydGljbGUncyBpZDtcbiAgICAgKiBAcHJvcGVydHkgaWRcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMubmFtZSA9IFwiUGFydGljbGVcIjtcbiAgICB0aGlzLmlkID0gUHVpZC5pZCh0aGlzLm5hbWUpO1xuICAgIHRoaXMub2xkID0ge307XG4gICAgdGhpcy5kYXRhID0ge307XG4gICAgdGhpcy5iZWhhdmlvdXJzID0gW107XG5cbiAgICB0aGlzLnAgPSBuZXcgVmVjdG9yMkQoKTtcbiAgICB0aGlzLnYgPSBuZXcgVmVjdG9yMkQoKTtcbiAgICB0aGlzLmEgPSBuZXcgVmVjdG9yMkQoKTtcbiAgICB0aGlzLm9sZC5wID0gbmV3IFZlY3RvcjJEKCk7XG4gICAgdGhpcy5vbGQudiA9IG5ldyBWZWN0b3IyRCgpO1xuICAgIHRoaXMub2xkLmEgPSBuZXcgVmVjdG9yMkQoKTtcblxuICAgIHRoaXMucmdiID0gbmV3IFJnYigpO1xuICAgIHRoaXMucmVzZXQoKTtcbiAgICBjb25mICYmIFByb3BVdGlsLnNldFByb3AodGhpcywgY29uZik7XG4gIH1cblxuICBnZXREaXJlY3Rpb24oKSB7XG4gICAgcmV0dXJuIE1hdGguYXRhbjIodGhpcy52LngsIC10aGlzLnYueSkgKiBNYXRoVXRpbC5OMTgwX1BJO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5saWZlID0gSW5maW5pdHk7XG4gICAgdGhpcy5hZ2UgPSAwO1xuXG4gICAgdGhpcy5kZWFkID0gZmFsc2U7XG4gICAgdGhpcy5zbGVlcCA9IGZhbHNlO1xuICAgIHRoaXMuYm9keSA9IG51bGw7XG4gICAgdGhpcy5zcHJpdGUgPSBudWxsO1xuICAgIHRoaXMucGFyZW50ID0gbnVsbDtcblxuICAgIHRoaXMuZW5lcmd5ID0gMTsgLy8gRW5lcmd5IExvc3NcbiAgICB0aGlzLm1hc3MgPSAxO1xuICAgIHRoaXMucmFkaXVzID0gMTA7XG4gICAgdGhpcy5hbHBoYSA9IDE7XG4gICAgdGhpcy5zY2FsZSA9IDE7XG4gICAgdGhpcy5yb3RhdGlvbiA9IDA7XG4gICAgdGhpcy5jb2xvciA9IG51bGw7XG5cbiAgICB0aGlzLnAuc2V0KDAsIDApO1xuICAgIHRoaXMudi5zZXQoMCwgMCk7XG4gICAgdGhpcy5hLnNldCgwLCAwKTtcbiAgICB0aGlzLm9sZC5wLnNldCgwLCAwKTtcbiAgICB0aGlzLm9sZC52LnNldCgwLCAwKTtcbiAgICB0aGlzLm9sZC5hLnNldCgwLCAwKTtcbiAgICB0aGlzLmVhc2luZyA9IGVhc2UuZWFzZUxpbmVhcjtcblxuICAgIHRoaXMucmdiLnJlc2V0KCk7XG4gICAgVXRpbC5lbXB0eU9iamVjdCh0aGlzLmRhdGEpO1xuICAgIHRoaXMucmVtb3ZlQWxsQmVoYXZpb3VycygpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB1cGRhdGUodGltZSwgaW5kZXgpIHtcbiAgICBpZiAoIXRoaXMuc2xlZXApIHtcbiAgICAgIHRoaXMuYWdlICs9IHRpbWU7XG4gICAgICB0aGlzLmFwcGx5QmVoYXZpb3Vycyh0aW1lLCBpbmRleCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYWdlIDwgdGhpcy5saWZlKSB7XG4gICAgICBjb25zdCBzY2FsZSA9IHRoaXMuZWFzaW5nKHRoaXMuYWdlIC8gdGhpcy5saWZlKTtcbiAgICAgIHRoaXMuZW5lcmd5ID0gTWF0aC5tYXgoMSAtIHNjYWxlLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlCZWhhdmlvdXJzKHRpbWUsIGluZGV4KSB7XG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5iZWhhdmlvdXJzLmxlbmd0aDtcbiAgICBsZXQgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5iZWhhdmlvdXJzW2ldICYmIHRoaXMuYmVoYXZpb3Vyc1tpXS5hcHBseUJlaGF2aW91cih0aGlzLCB0aW1lLCBpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7QmVoYXZpb3VyfSBiZWhhdmlvdXJcbiAgICovXG4gIGFkZEJlaGF2aW91cihiZWhhdmlvdXIpIHtcbiAgICB0aGlzLmJlaGF2aW91cnMucHVzaChiZWhhdmlvdXIpO1xuXG4gICAgaWYgKGJlaGF2aW91ci5oYXNPd25Qcm9wZXJ0eShcInBhcmVudHNcIikpIGJlaGF2aW91ci5wYXJlbnRzLnB1c2godGhpcyk7XG4gICAgYmVoYXZpb3VyLmluaXRpYWxpemUodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtCZWhhdmlvdXJbXX0gYmVoYXZpb3Vyc1xuICAgKi9cbiAgYWRkQmVoYXZpb3VycyhiZWhhdmlvdXJzKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gYmVoYXZpb3Vycy5sZW5ndGg7XG4gICAgbGV0IGk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuYWRkQmVoYXZpb3VyKGJlaGF2aW91cnNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUJlaGF2aW91cihiZWhhdmlvdXIpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYmVoYXZpb3Vycy5pbmRleE9mKGJlaGF2aW91cik7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgY29uc3QgYmVoYXZpb3VyID0gdGhpcy5iZWhhdmlvdXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICBiZWhhdmlvdXIucGFyZW50cyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlQWxsQmVoYXZpb3VycygpIHtcbiAgICBVdGlsLmVtcHR5QXJyYXkodGhpcy5iZWhhdmlvdXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0b3J5IHRoaXMgcGFydGljbGVcbiAgICogQG1ldGhvZCBkZXN0cm95XG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlQWxsQmVoYXZpb3VycygpO1xuICAgIHRoaXMuZW5lcmd5ID0gMDtcbiAgICB0aGlzLmRlYWQgPSB0cnVlO1xuICAgIHRoaXMucGFyZW50ID0gbnVsbDtcbiAgfVxufVxuIiwiZXhwb3J0IGRlZmF1bHQge1xuICAvKipcbiAgICogQHR5cGVkZWYgIHtPYmplY3R9IHJnYk9iamVjdFxuICAgKiBAcHJvcGVydHkge051bWJlcn0gciByZWQgdmFsdWVcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IGcgZ3JlZW4gdmFsdWVcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IGIgYmx1ZSB2YWx1ZVxuICAgKi9cbiAgLyoqXG4gICAqIGNvbnZlcnRzIGEgaGV4IHZhbHVlIHRvIGEgcmdiIG9iamVjdFxuICAgKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5VdGlsXG4gICAqIEBtZXRob2QgaGV4VG9SZ2JcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IGggYW55IGhleCB2YWx1ZSwgZS5nLiAjMDAwMDAwIG9yIDAwMDAwMCBmb3IgYmxhY2tcbiAgICpcbiAgICogQHJldHVybiB7cmdiT2JqZWN0fVxuICAgKi9cbiAgaGV4VG9SZ2IoaCkge1xuICAgIGNvbnN0IGhleDE2ID0gaC5jaGFyQXQoMCkgPT09IFwiI1wiID8gaC5zdWJzdHJpbmcoMSwgNykgOiBoO1xuICAgIGNvbnN0IHIgPSBwYXJzZUludChoZXgxNi5zdWJzdHJpbmcoMCwgMiksIDE2KTtcbiAgICBjb25zdCBnID0gcGFyc2VJbnQoaGV4MTYuc3Vic3RyaW5nKDIsIDQpLCAxNik7XG4gICAgY29uc3QgYiA9IHBhcnNlSW50KGhleDE2LnN1YnN0cmluZyg0LCA2KSwgMTYpO1xuXG4gICAgcmV0dXJuIHsgciwgZywgYiB9O1xuICB9LFxuXG4gIC8qKlxuICAgKiBjb252ZXJ0cyBhIHJnYiB2YWx1ZSB0byBhIHJnYiBzdHJpbmdcbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIHJnYlRvSGV4XG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0IHwgUHJvdG9uLmhleFRvUmdifSByZ2IgYSByZ2Igb2JqZWN0IGxpa2UgaW4ge0BsaW5rIFByb3RvbiNQcm90b24ufVxuICAgKlxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IHJnYigpXG4gICAqL1xuICByZ2JUb0hleChyYmcpIHtcbiAgICByZXR1cm4gYHJnYigke3JiZy5yfSwgJHtyYmcuZ30sICR7cmJnLmJ9KWA7XG4gIH0sXG5cbiAgZ2V0SGV4MTZGcm9tUGFydGljbGUocCkge1xuICAgIHJldHVybiBOdW1iZXIocC5yZ2IucikgKiA2NTUzNiArIE51bWJlcihwLnJnYi5nKSAqIDI1NiArIE51bWJlcihwLnJnYi5iKTtcbiAgfVxufTtcbiIsImltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi9WZWN0b3IyRFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb2xhcjJEIHtcbiAgY29uc3RydWN0b3IociwgdGhhKSB7XG4gICAgdGhpcy5yID0gTWF0aC5hYnMocikgfHwgMDtcbiAgICB0aGlzLnRoYSA9IHRoYSB8fCAwO1xuICB9XG5cbiAgc2V0KHIsIHRoYSkge1xuICAgIHRoaXMuciA9IHI7XG4gICAgdGhpcy50aGEgPSB0aGE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRSKHIpIHtcbiAgICB0aGlzLnIgPSByO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2V0VGhhKHRoYSkge1xuICAgIHRoaXMudGhhID0gdGhhO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgY29weShwKSB7XG4gICAgdGhpcy5yID0gcC5yO1xuICAgIHRoaXMudGhhID0gcC50aGE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0b1ZlY3RvcigpIHtcbiAgICByZXR1cm4gbmV3IFZlY3RvcjJEKHRoaXMuZ2V0WCgpLCB0aGlzLmdldFkoKSk7XG4gIH1cblxuICBnZXRYKCkge1xuICAgIHJldHVybiB0aGlzLnIgKiBNYXRoLnNpbih0aGlzLnRoYSk7XG4gIH1cblxuICBnZXRZKCkge1xuICAgIHJldHVybiAtdGhpcy5yICogTWF0aC5jb3ModGhpcy50aGEpO1xuICB9XG5cbiAgbm9ybWFsaXplKCkge1xuICAgIHRoaXMuciA9IDE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBlcXVhbHModikge1xuICAgIHJldHVybiB2LnIgPT09IHRoaXMuciAmJiB2LnRoYSA9PT0gdGhpcy50aGE7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLnIgPSAwLjA7XG4gICAgdGhpcy50aGEgPSAwLjA7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICByZXR1cm4gbmV3IFBvbGFyMkQodGhpcy5yLCB0aGlzLnRoYSk7XG4gIH1cbn1cbiIsImNvbnN0IE1hdDMgPSB7XG4gIGNyZWF0ZShtYXQzKSB7XG4gICAgY29uc3QgbWF0ID0gbmV3IEZsb2F0MzJBcnJheSg5KTtcbiAgICBpZiAobWF0MykgdGhpcy5zZXQobWF0MywgbWF0KTtcblxuICAgIHJldHVybiBtYXQ7XG4gIH0sXG5cbiAgc2V0KG1hdDEsIG1hdDIpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDk7IGkrKykgbWF0MltpXSA9IG1hdDFbaV07XG5cbiAgICByZXR1cm4gbWF0MjtcbiAgfSxcblxuICBtdWx0aXBseShtYXQsIG1hdDIsIG1hdDMpIHtcbiAgICBsZXQgYTAwID0gbWF0WzBdLFxuICAgICAgYTAxID0gbWF0WzFdLFxuICAgICAgYTAyID0gbWF0WzJdLFxuICAgICAgYTEwID0gbWF0WzNdLFxuICAgICAgYTExID0gbWF0WzRdLFxuICAgICAgYTIwID0gbWF0WzZdLFxuICAgICAgYTIxID0gbWF0WzddLFxuICAgICAgYjAwID0gbWF0MlswXSxcbiAgICAgIGIwMSA9IG1hdDJbMV0sXG4gICAgICBiMDIgPSBtYXQyWzJdLFxuICAgICAgYjEwID0gbWF0MlszXSxcbiAgICAgIGIxMSA9IG1hdDJbNF0sXG4gICAgICBiMjAgPSBtYXQyWzZdLFxuICAgICAgYjIxID0gbWF0Mls3XTtcblxuICAgIG1hdDNbMF0gPSBiMDAgKiBhMDAgKyBiMDEgKiBhMTA7XG4gICAgbWF0M1sxXSA9IGIwMCAqIGEwMSArIGIwMSAqIGExMTtcbiAgICBtYXQzWzJdID0gYTAyICogYjAyO1xuICAgIG1hdDNbM10gPSBiMTAgKiBhMDAgKyBiMTEgKiBhMTA7XG4gICAgbWF0M1s0XSA9IGIxMCAqIGEwMSArIGIxMSAqIGExMTtcbiAgICBtYXQzWzZdID0gYjIwICogYTAwICsgYjIxICogYTEwICsgYTIwO1xuICAgIG1hdDNbN10gPSBiMjAgKiBhMDEgKyBiMjEgKiBhMTEgKyBhMjE7XG5cbiAgICByZXR1cm4gbWF0MztcbiAgfSxcblxuICBpbnZlcnNlKG1hdCwgbWF0Mykge1xuICAgIGxldCBhMDAgPSBtYXRbMF0sXG4gICAgICBhMDEgPSBtYXRbMV0sXG4gICAgICBhMTAgPSBtYXRbM10sXG4gICAgICBhMTEgPSBtYXRbNF0sXG4gICAgICBhMjAgPSBtYXRbNl0sXG4gICAgICBhMjEgPSBtYXRbN10sXG4gICAgICBiMDEgPSBhMTEsXG4gICAgICBiMTEgPSAtYTEwLFxuICAgICAgYjIxID0gYTIxICogYTEwIC0gYTExICogYTIwLFxuICAgICAgZCA9IGEwMCAqIGIwMSArIGEwMSAqIGIxMSxcbiAgICAgIGlkO1xuXG4gICAgaWQgPSAxIC8gZDtcbiAgICBtYXQzWzBdID0gYjAxICogaWQ7XG4gICAgbWF0M1sxXSA9IC1hMDEgKiBpZDtcbiAgICBtYXQzWzNdID0gYjExICogaWQ7XG4gICAgbWF0M1s0XSA9IGEwMCAqIGlkO1xuICAgIG1hdDNbNl0gPSBiMjEgKiBpZDtcbiAgICBtYXQzWzddID0gKC1hMjEgKiBhMDAgKyBhMDEgKiBhMjApICogaWQ7XG5cbiAgICByZXR1cm4gbWF0MztcbiAgfSxcblxuICBtdWx0aXBseVZlYzIobSwgdmVjLCBtYXQzKSB7XG4gICAgbGV0IHggPSB2ZWNbMF0sXG4gICAgICB5ID0gdmVjWzFdO1xuXG4gICAgbWF0M1swXSA9IHggKiBtWzBdICsgeSAqIG1bM10gKyBtWzZdO1xuICAgIG1hdDNbMV0gPSB4ICogbVsxXSArIHkgKiBtWzRdICsgbVs3XTtcblxuICAgIHJldHVybiBtYXQzO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNYXQzO1xuIiwiaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTcGFuIHtcbiAgY29uc3RydWN0b3IoYSwgYiwgY2VudGVyKSB7XG4gICAgaWYgKFV0aWwuaXNBcnJheShhKSkge1xuICAgICAgdGhpcy5pc0FycmF5ID0gdHJ1ZTtcbiAgICAgIHRoaXMuYSA9IGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNBcnJheSA9IGZhbHNlO1xuICAgICAgdGhpcy5hID0gVXRpbC5pbml0VmFsdWUoYSwgMSk7XG4gICAgICB0aGlzLmIgPSBVdGlsLmluaXRWYWx1ZShiLCB0aGlzLmEpO1xuICAgICAgdGhpcy5jZW50ZXIgPSBVdGlsLmluaXRWYWx1ZShjZW50ZXIsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBnZXRWYWx1ZShpc0ludCA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuaXNBcnJheSkge1xuICAgICAgcmV0dXJuIFV0aWwuZ2V0UmFuZEZyb21BcnJheSh0aGlzLmEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuY2VudGVyKSB7XG4gICAgICAgIHJldHVybiBNYXRoVXRpbC5yYW5kb21BVG9CKHRoaXMuYSwgdGhpcy5iLCBpc0ludCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gTWF0aFV0aWwucmFuZG9tRmxvYXRpbmcodGhpcy5hLCB0aGlzLmIsIGlzSW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIG5ldyBTcGFuIG9iamVjdFxuICAgKlxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5VdGlsXG4gICAqIEBtZXRob2Qgc2V0U3BhblZhbHVlXG4gICAqXG4gICAqIEB0b2RvIGEsIGIgYW5kIGMgc2hvdWxkIGJlICdNaXhlZCcgb3IgJ051bWJlcic/XG4gICAqXG4gICAqIEBwYXJhbSB7TWl4ZWQgfCBTcGFufSBhXG4gICAqIEBwYXJhbSB7TWl4ZWR9ICAgICAgICAgICAgICAgYlxuICAgKiBAcGFyYW0ge01peGVkfSAgICAgICAgICAgICAgIGNcbiAgICpcbiAgICogQHJldHVybiB7U3Bhbn1cbiAgICovXG4gIHN0YXRpYyBzZXRTcGFuVmFsdWUoYSwgYiwgYykge1xuICAgIGlmIChhIGluc3RhbmNlb2YgU3Bhbikge1xuICAgICAgcmV0dXJuIGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChiID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTcGFuKGEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIG5ldyBTcGFuKGEsIGIpO1xuICAgICAgICBlbHNlIHJldHVybiBuZXcgU3BhbihhLCBiLCBjKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdmFsdWUgZnJvbSBhIFNwYW4sIGlmIHRoZSBwYXJhbSBpcyBub3QgYSBTcGFuIGl0IHdpbGwgcmV0dXJuIHRoZSBnaXZlbiBwYXJhbWV0ZXJcbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uVXRpbFxuICAgKiBAbWV0aG9kIGdldFZhbHVlXG4gICAqXG4gICAqIEBwYXJhbSB7TWl4ZWQgfCBTcGFufSBwYW5cbiAgICpcbiAgICogQHJldHVybiB7TWl4ZWR9IHRoZSB2YWx1ZSBvZiBTcGFuIE9SIHRoZSBwYXJhbWV0ZXIgaWYgaXQgaXMgbm90IGEgU3BhblxuICAgKi9cbiAgc3RhdGljIGdldFNwYW5WYWx1ZShwYW4pIHtcbiAgICByZXR1cm4gcGFuIGluc3RhbmNlb2YgU3BhbiA/IHBhbi5nZXRWYWx1ZSgpIDogcGFuO1xuICB9XG59XG4iLCJpbXBvcnQgU3BhbiBmcm9tIFwiLi9TcGFuXCI7XG5pbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuL01hdGhVdGlsXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFycmF5U3BhbiBleHRlbmRzIFNwYW4ge1xuICBjb25zdHJ1Y3Rvcihjb2xvcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fYXJyID0gVXRpbC50b0FycmF5KGNvbG9yKTtcbiAgfVxuXG4gIGdldFZhbHVlKCkge1xuICAgIGNvbnN0IHZhbCA9IFV0aWwuZ2V0UmFuZEZyb21BcnJheSh0aGlzLl9hcnIpO1xuICAgIHJldHVybiB2YWwgPT09IFwicmFuZG9tXCIgfHwgdmFsID09PSBcIlJhbmRvbVwiID8gTWF0aFV0aWwucmFuZG9tQ29sb3IoKSA6IHZhbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIHN1cmUgdGhhdCB0aGUgY29sb3IgaXMgYW4gaW5zdGFuY2Ugb2YgUHJvdG9uLkFycmF5U3BhbiwgaWYgbm90IGl0IG1ha2VzIGEgbmV3IGluc3RhbmNlXG4gICAqXG4gICAqIEBtZXRob2Qgc2V0U3BhblZhbHVlXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkNvbG9yXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHRoZSBpbnRlZ3JhdGUgdGltZSAxL21zXG4gICAqIEBwYXJhbSB7SW50fSB0aGUgcGFydGljbGUgaW5kZXhcbiAgICovXG4gIHN0YXRpYyBjcmVhdGVBcnJheVNwYW4oYXJyKSB7XG4gICAgaWYgKCFhcnIpIHJldHVybiBudWxsO1xuXG4gICAgaWYgKGFyciBpbnN0YW5jZW9mIEFycmF5U3BhbikgcmV0dXJuIGFycjtcbiAgICBlbHNlIHJldHVybiBuZXcgQXJyYXlTcGFuKGFycik7XG4gIH1cbn1cbiIsImV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlY3RhbmdsZSB7XG4gIGNvbnN0cnVjdG9yKHgsIHksIHcsIGgpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG5cbiAgICB0aGlzLndpZHRoID0gdztcbiAgICB0aGlzLmhlaWdodCA9IGg7XG5cbiAgICB0aGlzLmJvdHRvbSA9IHRoaXMueSArIHRoaXMuaGVpZ2h0O1xuICAgIHRoaXMucmlnaHQgPSB0aGlzLnggKyB0aGlzLndpZHRoO1xuICB9XG5cbiAgY29udGFpbnMoeCwgeSkge1xuICAgIGlmICh4IDw9IHRoaXMucmlnaHQgJiYgeCA+PSB0aGlzLnggJiYgeSA8PSB0aGlzLmJvdHRvbSAmJiB5ID49IHRoaXMueSkgcmV0dXJuIHRydWU7XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsImltcG9ydCBTcGFuIGZyb20gXCIuLi9tYXRoL1NwYW5cIjtcbmltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhdGUge1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBwYXJ0aWNsZXMgcGVyIHNlY29uZCBlbWlzc2lvbiAoYSBbcGFydGljbGVdL2IgW3NdKTtcbiAgICogQG5hbWVzcGFjZVxuICAgKiBAbWVtYmVyb2YhIFByb3RvbiNcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhbGlhcyBSYXRlXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXkgfCBOdW1iZXIgfCBTcGFufSBudW1wYW4gdGhlIG51bWJlciBvZiBlYWNoIGVtaXNzaW9uO1xuICAgKiBAcGFyYW0ge0FycmF5IHwgTnVtYmVyIHwgU3Bhbn0gdGltZXBhbiB0aGUgdGltZSBvZiBlYWNoIGVtaXNzaW9uO1xuICAgKiBmb3IgZXhhbXBsZTogbmV3IFJhdGUobmV3IFNwYW4oMTAsIDIwKSwgbmV3IFNwYW4oLjEsIC4yNSkpO1xuICAgKi9cbiAgY29uc3RydWN0b3IobnVtcGFuLCB0aW1lcGFuKSB7XG4gICAgdGhpcy5udW1QYW4gPSBTcGFuLnNldFNwYW5WYWx1ZShVdGlsLmluaXRWYWx1ZShudW1wYW4sIDEpKTtcbiAgICB0aGlzLnRpbWVQYW4gPSBTcGFuLnNldFNwYW5WYWx1ZShVdGlsLmluaXRWYWx1ZSh0aW1lcGFuLCAxKSk7XG5cbiAgICB0aGlzLnN0YXJ0VGltZSA9IDA7XG4gICAgdGhpcy5uZXh0VGltZSA9IDA7XG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBpbml0KCkge1xuICAgIHRoaXMuc3RhcnRUaW1lID0gMDtcbiAgICB0aGlzLm5leHRUaW1lID0gdGhpcy50aW1lUGFuLmdldFZhbHVlKCk7XG4gIH1cblxuICBnZXRWYWx1ZSh0aW1lKSB7XG4gICAgdGhpcy5zdGFydFRpbWUgKz0gdGltZTtcblxuICAgIGlmICh0aGlzLnN0YXJ0VGltZSA+PSB0aGlzLm5leHRUaW1lKSB7XG4gICAgICB0aGlzLnN0YXJ0VGltZSA9IDA7XG4gICAgICB0aGlzLm5leHRUaW1lID0gdGhpcy50aW1lUGFuLmdldFZhbHVlKCk7XG5cbiAgICAgIGlmICh0aGlzLm51bVBhbi5iID09PSAxKSB7XG4gICAgICAgIGlmICh0aGlzLm51bVBhbi5nZXRWYWx1ZShmYWxzZSkgPiAwLjUpIHJldHVybiAxO1xuICAgICAgICBlbHNlIHJldHVybiAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubnVtUGFuLmdldFZhbHVlKHRydWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9XG59XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBJbml0aWFsaXplIHtcbiAgcmVzZXQoKSB7fVxuXG4gIGluaXQoZW1pdHRlciwgcGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZShwYXJ0aWNsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZShlbWl0dGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzdWIgY2xhc3MgaW5pdFxuICBpbml0aWFsaXplKHRhcmdldCkge31cbn1cbiIsImltcG9ydCBTcGFuIGZyb20gXCIuLi9tYXRoL1NwYW5cIjtcbmltcG9ydCBJbml0aWFsaXplIGZyb20gXCIuL0luaXRpYWxpemVcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGlmZSBleHRlbmRzIEluaXRpYWxpemUge1xuICBjb25zdHJ1Y3RvcihhLCBiLCBjKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMubGlmZVBhbiA9IFNwYW4uc2V0U3BhblZhbHVlKGEsIGIsIGMpO1xuICAgIHRoaXMubmFtZSA9IFwiTGlmZVwiO1xuICB9XG5cbiAgaW5pdGlhbGl6ZSh0YXJnZXQpIHtcbiAgICBpZiAodGhpcy5saWZlUGFuLmEgPT09IEluZmluaXR5KSB0YXJnZXQubGlmZSA9IEluZmluaXR5O1xuICAgIGVsc2UgdGFyZ2V0LmxpZmUgPSB0aGlzLmxpZmVQYW4uZ2V0VmFsdWUoKTtcbiAgfVxufVxuIiwiaW1wb3J0IFZlY3RvcjJEIGZyb20gXCIuLi9tYXRoL1ZlY3RvcjJEXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFpvbmUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnZlY3RvciA9IG5ldyBWZWN0b3IyRCgwLCAwKTtcbiAgICB0aGlzLnJhbmRvbSA9IDA7XG4gICAgdGhpcy5jcm9zc1R5cGUgPSBcImRlYWRcIjtcbiAgICB0aGlzLmFsZXJ0ID0gdHJ1ZTtcbiAgfVxuXG4gIGdldFBvc2l0aW9uKCkge31cblxuICBjcm9zc2luZyhwYXJ0aWNsZSkge31cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMudmVjdG9yID0gbnVsbDtcbiAgfVxufVxuIiwiaW1wb3J0IFpvbmUgZnJvbSBcIi4vWm9uZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb2ludFpvbmUgZXh0ZW5kcyBab25lIHtcbiAgY29uc3RydWN0b3IoeCwgeSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBnZXRQb3NpdGlvbigpIHtcbiAgICB0aGlzLnZlY3Rvci54ID0gdGhpcy54O1xuICAgIHRoaXMudmVjdG9yLnkgPSB0aGlzLnk7XG5cbiAgICByZXR1cm4gdGhpcy52ZWN0b3I7XG4gIH1cblxuICBjcm9zc2luZyhwYXJ0aWNsZSkge1xuICAgIGlmICh0aGlzLmFsZXJ0KSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiU29ycnksIFBvaW50Wm9uZSBkb2VzIG5vdCBzdXBwb3J0IGNyb3NzaW5nIG1ldGhvZCFcIik7XG4gICAgICB0aGlzLmFsZXJ0ID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IFBvaW50Wm9uZSBmcm9tIFwiLi4vem9uZS9Qb2ludFpvbmVcIjtcbmltcG9ydCBJbml0aWFsaXplIGZyb20gXCIuL0luaXRpYWxpemVcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUG9zaXRpb24gZXh0ZW5kcyBJbml0aWFsaXplIHtcbiAgY29uc3RydWN0b3Ioem9uZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy56b25lID0gVXRpbC5pbml0VmFsdWUoem9uZSwgbmV3IFBvaW50Wm9uZSgpKTtcbiAgICB0aGlzLm5hbWUgPSBcIlBvc2l0aW9uXCI7XG4gIH1cblxuICByZXNldCh6b25lKSB7XG4gICAgdGhpcy56b25lID0gVXRpbC5pbml0VmFsdWUoem9uZSwgbmV3IFBvaW50Wm9uZSgpKTtcbiAgfVxuXG4gIGluaXRpYWxpemUodGFyZ2V0KSB7XG4gICAgdGhpcy56b25lLmdldFBvc2l0aW9uKCk7XG5cbiAgICB0YXJnZXQucC54ID0gdGhpcy56b25lLnZlY3Rvci54O1xuICAgIHRhcmdldC5wLnkgPSB0aGlzLnpvbmUudmVjdG9yLnk7XG4gIH1cbn1cbiIsImltcG9ydCBQcm90b24gZnJvbSBcIi4uL2NvcmUvUHJvdG9uXCI7XG5pbXBvcnQgU3BhbiBmcm9tIFwiLi4vbWF0aC9TcGFuXCI7XG5pbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IEluaXRpYWxpemUgZnJvbSBcIi4vSW5pdGlhbGl6ZVwiO1xuaW1wb3J0IFBvbGFyMkQgZnJvbSBcIi4uL21hdGgvUG9sYXIyRFwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuLi9tYXRoL01hdGhVdGlsXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaXR5IGV4dGVuZHMgSW5pdGlhbGl6ZSB7XG4gIGNvbnN0cnVjdG9yKHJwYW4sIHRoYXBhbiwgdHlwZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnJQYW4gPSBTcGFuLnNldFNwYW5WYWx1ZShycGFuKTtcbiAgICB0aGlzLnRoYVBhbiA9IFNwYW4uc2V0U3BhblZhbHVlKHRoYXBhbik7XG4gICAgdGhpcy50eXBlID0gVXRpbC5pbml0VmFsdWUodHlwZSwgXCJ2ZWN0b3JcIik7XG5cbiAgICB0aGlzLm5hbWUgPSBcIlZlbG9jaXR5XCI7XG4gIH1cblxuICByZXNldChycGFuLCB0aGFwYW4sIHR5cGUpIHtcbiAgICB0aGlzLnJQYW4gPSBTcGFuLnNldFNwYW5WYWx1ZShycGFuKTtcbiAgICB0aGlzLnRoYVBhbiA9IFNwYW4uc2V0U3BhblZhbHVlKHRoYXBhbik7XG4gICAgdGhpcy50eXBlID0gVXRpbC5pbml0VmFsdWUodHlwZSwgXCJ2ZWN0b3JcIik7XG4gIH1cblxuICBub3JtYWxpemVWZWxvY2l0eSh2cikge1xuICAgIHJldHVybiB2ciAqIFByb3Rvbi5NRUFTVVJFO1xuICB9XG5cbiAgaW5pdGlhbGl6ZSh0YXJnZXQpIHtcbiAgICBpZiAodGhpcy50eXBlID09PSBcInBcIiB8fCB0aGlzLnR5cGUgPT09IFwiUFwiIHx8IHRoaXMudHlwZSA9PT0gXCJwb2xhclwiKSB7XG4gICAgICBjb25zdCBwb2xhcjJkID0gbmV3IFBvbGFyMkQoXG4gICAgICAgIHRoaXMubm9ybWFsaXplVmVsb2NpdHkodGhpcy5yUGFuLmdldFZhbHVlKCkpLFxuICAgICAgICB0aGlzLnRoYVBhbi5nZXRWYWx1ZSgpICogTWF0aFV0aWwuUElfMTgwXG4gICAgICApO1xuXG4gICAgICB0YXJnZXQudi54ID0gcG9sYXIyZC5nZXRYKCk7XG4gICAgICB0YXJnZXQudi55ID0gcG9sYXIyZC5nZXRZKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldC52LnggPSB0aGlzLm5vcm1hbGl6ZVZlbG9jaXR5KHRoaXMuclBhbi5nZXRWYWx1ZSgpKTtcbiAgICAgIHRhcmdldC52LnkgPSB0aGlzLm5vcm1hbGl6ZVZlbG9jaXR5KHRoaXMudGhhUGFuLmdldFZhbHVlKCkpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IFNwYW4gZnJvbSBcIi4uL21hdGgvU3BhblwiO1xuaW1wb3J0IEluaXRpYWxpemUgZnJvbSBcIi4vSW5pdGlhbGl6ZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYXNzIGV4dGVuZHMgSW5pdGlhbGl6ZSB7XG4gIGNvbnN0cnVjdG9yKGEsIGIsIGMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubWFzc1BhbiA9IFNwYW4uc2V0U3BhblZhbHVlKGEsIGIsIGMpO1xuICAgIHRoaXMubmFtZSA9IFwiTWFzc1wiO1xuICB9XG5cbiAgaW5pdGlhbGl6ZSh0YXJnZXQpIHtcbiAgICB0YXJnZXQubWFzcyA9IHRoaXMubWFzc1Bhbi5nZXRWYWx1ZSgpO1xuICB9XG59XG4iLCJpbXBvcnQgU3BhbiBmcm9tIFwiLi4vbWF0aC9TcGFuXCI7XG5pbXBvcnQgSW5pdGlhbGl6ZSBmcm9tIFwiLi9Jbml0aWFsaXplXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhZGl1cyBleHRlbmRzIEluaXRpYWxpemUge1xuICBjb25zdHJ1Y3RvcihhLCBiLCBjKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJhZGl1cyA9IFNwYW4uc2V0U3BhblZhbHVlKGEsIGIsIGMpO1xuXG4gICAgdGhpcy5uYW1lID0gXCJSYWRpdXNcIjtcbiAgfVxuXG4gIHJlc2V0KGEsIGIsIGMpIHtcbiAgICB0aGlzLnJhZGl1cyA9IFNwYW4uc2V0U3BhblZhbHVlKGEsIGIsIGMpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLnJhZGl1cyA9IHRoaXMucmFkaXVzLmdldFZhbHVlKCk7XG4gICAgcGFydGljbGUuZGF0YS5vbGRSYWRpdXMgPSBwYXJ0aWNsZS5yYWRpdXM7XG4gIH1cbn1cbiIsImltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgQXJyYXlTcGFuIGZyb20gXCIuLi9tYXRoL0FycmF5U3BhblwiO1xuaW1wb3J0IEluaXRpYWxpemUgZnJvbSBcIi4vSW5pdGlhbGl6ZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5IGV4dGVuZHMgSW5pdGlhbGl6ZSB7XG4gIGNvbnN0cnVjdG9yKGltYWdlLCB3LCBoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuaW1hZ2UgPSB0aGlzLnNldFNwYW5WYWx1ZShpbWFnZSk7XG4gICAgdGhpcy53ID0gVXRpbC5pbml0VmFsdWUodywgMjApO1xuICAgIHRoaXMuaCA9IFV0aWwuaW5pdFZhbHVlKGgsIHRoaXMudyk7XG4gICAgdGhpcy5uYW1lID0gXCJCb2R5XCI7XG4gIH1cblxuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgaW1hZ2VUYXJnZXQgPSB0aGlzLmltYWdlLmdldFZhbHVlKCk7XG5cbiAgICBpZiAodHlwZW9mIGltYWdlVGFyZ2V0ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBwYXJ0aWNsZS5ib2R5ID0ge1xuICAgICAgICB3aWR0aDogdGhpcy53LFxuICAgICAgICBoZWlnaHQ6IHRoaXMuaCxcbiAgICAgICAgc3JjOiBpbWFnZVRhcmdldCxcbiAgICAgICAgaXNJbm5lcjogdHJ1ZSxcbiAgICAgICAgaW5uZXI6IHRydWVcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRpY2xlLmJvZHkgPSBpbWFnZVRhcmdldDtcbiAgICB9XG4gIH1cblxuICBzZXRTcGFuVmFsdWUoaW1hZ2UpIHtcbiAgICByZXR1cm4gaW1hZ2UgaW5zdGFuY2VvZiBBcnJheVNwYW4gPyBpbWFnZSA6IG5ldyBBcnJheVNwYW4oaW1hZ2UpO1xuICB9XG59XG4iLCJpbXBvcnQgUHJvdG9uIGZyb20gXCIuLi9jb3JlL1Byb3RvblwiO1xuaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBlYXNlIGZyb20gXCIuLi9tYXRoL2Vhc2VcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmVoYXZpb3VyIHtcbiAgc3RhdGljIGlkID0gMDtcblxuICAvKipcbiAgICogVGhlIEJlaGF2aW91ciBjbGFzcyBpcyB0aGUgYmFzZSBmb3IgdGhlIG90aGVyIEJlaGF2aW91clxuICAgKlxuICAgKiBAbWVtYmVyb2YhIC1cbiAgICogQGludGVyZmFjZVxuICAgKiBAYWxpYXMgUHJvdG9uLkJlaGF2aW91clxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gbGlmZSBcdHRoZSBiZWhhdmlvdXJzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IGVhc2luZyBcdFRoZSBiZWhhdmlvdXIncyBkZWNheWluZyB0cmVuZCwgZm9yIGV4YW1wbGUgZWFzZS5lYXNlT3V0UXVhcnRcbiAgICpcbiAgICogQHByb3BlcnR5IHtTdHJpbmd9ICBpZCBcdFx0VGhlIGJlaGF2aW91cnMgaWRcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9ICBhZ2U9MCBcdEhvdyBsb25nIHRoZSBwYXJ0aWNsZSBzaG91bGQgYmUgJ2FsaWZlJ1xuICAgKiBAcHJvcGVydHkge051bWJlcn0gIGVuZXJneT0xXG4gICAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZGVhZD1mYWxzZSBUaGUgcGFydGljbGUgaXMgZGVhZCBhdCBmaXJzdFxuICAgKiBAcHJvcGVydHkge0FycmF5fSAgIHBhcmVudHMgXHRUaGUgYmVoYXZpb3VyJ3MgcGFyZW50cyBhcnJheVxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gIG5hbWUgXHRUaGUgYmVoYXZpb3VyIG5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGxpZmUsIGVhc2luZykge1xuICAgIHRoaXMubGlmZSA9IFV0aWwuaW5pdFZhbHVlKGxpZmUsIEluZmluaXR5KTtcbiAgICB0aGlzLmVhc2luZyA9IGVhc2UuZ2V0RWFzaW5nKGVhc2luZyk7XG5cbiAgICB0aGlzLmFnZSA9IDA7XG4gICAgdGhpcy5lbmVyZ3kgPSAxO1xuICAgIHRoaXMuZGVhZCA9IGZhbHNlO1xuICAgIHRoaXMucGFyZW50cyA9IFtdO1xuXG4gICAgdGhpcy5pZCA9IGBCZWhhdmlvdXJfJHtCZWhhdmlvdXIuaWQrK31gO1xuICAgIHRoaXMubmFtZSA9IFwiQmVoYXZpb3VyXCI7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhpcyBiZWhhdmlvdXIncyBwYXJhbWV0ZXJzXG4gICAqXG4gICAqIEBtZXRob2QgcmVzZXRcbiAgICogQG1lbWJlcm9mIFByb3Rvbi5CZWhhdmlvdXJcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gXHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqL1xuICByZXNldChsaWZlLCBlYXNpbmcpIHtcbiAgICB0aGlzLmxpZmUgPSBVdGlsLmluaXRWYWx1ZShsaWZlLCBJbmZpbml0eSk7XG4gICAgdGhpcy5lYXNpbmcgPSBlYXNlLmdldEVhc2luZyhlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZSBhIGZvcmNlIGJ5IDE6MTAwO1xuICAgKlxuICAgKiBAbWV0aG9kIG5vcm1hbGl6ZUZvcmNlXG4gICAqIEBtZW1iZXJvZiBQcm90b24uQmVoYXZpb3VyXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5WZWN0b3IyRH0gZm9yY2VcbiAgICovXG4gIG5vcm1hbGl6ZUZvcmNlKGZvcmNlKSB7XG4gICAgcmV0dXJuIGZvcmNlLm11bHRpcGx5U2NhbGFyKFByb3Rvbi5NRUFTVVJFKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemUgYSB2YWx1ZSBieSAxOjEwMDtcbiAgICpcbiAgICogQG1ldGhvZCBub3JtYWxpemVWYWx1ZVxuICAgKiBAbWVtYmVyb2YgUHJvdG9uLkJlaGF2aW91clxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHZhbHVlXG4gICAqL1xuICBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAqIFByb3Rvbi5NRUFTVVJFO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGJlaGF2aW91cidzIHBhcmFtZXRlcnMgZm9yIGFsbCBwYXJ0aWNsZXNcbiAgICpcbiAgICogQG1ldGhvZCBpbml0aWFsaXplXG4gICAqIEBtZW1iZXJvZiBQcm90b24uQmVoYXZpb3VyXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICovXG4gIGluaXRpYWxpemUocGFydGljbGUpIHt9XG5cbiAgLyoqXG4gICAqIGNvbXB1dGluZyBsaWZlIGN5Y2xlXG4gICAqXG4gICAqIEBtZXRob2QgY2FsY3VsYXRlXG4gICAqIEBtZW1iZXJvZiBQcm90b24uQmVoYXZpb3VyXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFx0XHRcdHRpbWUgdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IFx0XHRcdGluZGV4IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgY2FsY3VsYXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuYWdlICs9IHRpbWU7XG5cbiAgICBpZiAodGhpcy5hZ2UgPj0gdGhpcy5saWZlIHx8IHRoaXMuZGVhZCkge1xuICAgICAgdGhpcy5lbmVyZ3kgPSAwO1xuICAgICAgdGhpcy5kZWFkID0gdHJ1ZTtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzY2FsZSA9IHRoaXMuZWFzaW5nKHBhcnRpY2xlLmFnZSAvIHBhcnRpY2xlLmxpZmUpO1xuICAgICAgdGhpcy5lbmVyZ3kgPSBNYXRoLm1heCgxIC0gc2NhbGUsIDApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGlzIGJlaGF2aW91ciBmb3IgYWxsIHBhcnRpY2xlcyBldmVyeSB0aW1lXG4gICAqXG4gICAqIEBtZXRob2QgYXBwbHlCZWhhdmlvdXJcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uQ29sb3JcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLlBhcnRpY2xlfSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge051bWJlcn0gdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5jYWxjdWxhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0b3J5IHRoaXMgYmVoYXZpb3VyXG4gICAqXG4gICAqIEBtZXRob2QgZGVzdHJveVxuICAgKiBAbWVtYmVyb2YgUHJvdG9uLkJlaGF2aW91clxuICAgKiBAaW5zdGFuY2VcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgbGV0IGkgPSB0aGlzLnBhcmVudHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHRoaXMucGFyZW50c1tpXS5yZW1vdmVCZWhhdmlvdXIodGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5wYXJlbnRzLmxlbmd0aCA9IDA7XG4gIH1cbn1cbiIsImltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi4vbWF0aC9WZWN0b3IyRFwiO1xuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9CZWhhdmlvdXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRm9yY2UgZXh0ZW5kcyBCZWhhdmlvdXIge1xuICAvKipcbiAgICogQG1lbWJlcm9mISBQcm90b24jXG4gICAqIEBhdWdtZW50cyBQcm90b24uQmVoYXZpb3VyXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWxpYXMgUHJvdG9uLkZvcmNlXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBmeFxuICAgKiBAcGFyYW0ge051bWJlcn0gZnlcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0XHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZS5lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqXG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lIFRoZSBCZWhhdmlvdXIgbmFtZVxuICAgKi9cbiAgY29uc3RydWN0b3IoZngsIGZ5LCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcpO1xuXG4gICAgdGhpcy5mb3JjZSA9IHRoaXMubm9ybWFsaXplRm9yY2UobmV3IFZlY3RvcjJEKGZ4LCBmeSkpO1xuICAgIHRoaXMubmFtZSA9IFwiRm9yY2VcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQG1ldGhvZCByZXNldFxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Gb3JjZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGZ4XG4gICAqIEBwYXJhbSB7TnVtYmVyfSBmeVxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICovXG4gIHJlc2V0KGZ4LCBmeSwgbGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy5mb3JjZSA9IHRoaXMubm9ybWFsaXplRm9yY2UobmV3IFZlY3RvcjJEKGZ4LCBmeSkpO1xuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoaXMgYmVoYXZpb3VyIGZvciBhbGwgcGFydGljbGVzIGV2ZXJ5IHRpbWVcbiAgICpcbiAgICogQG1ldGhvZCBhcHBseUJlaGF2aW91clxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Gb3JjZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uUGFydGljbGV9IHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB0aGUgaW50ZWdyYXRlIHRpbWUgMS9tc1xuICAgKiBAcGFyYW0ge0ludH0gdGhlIHBhcnRpY2xlIGluZGV4XG4gICAqL1xuICBhcHBseUJlaGF2aW91cihwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuICAgIHBhcnRpY2xlLmEuYWRkKHRoaXMuZm9yY2UpO1xuICB9XG59XG4iLCJpbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IFZlY3RvcjJEIGZyb20gXCIuLi9tYXRoL1ZlY3RvcjJEXCI7XG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gXCIuL0JlaGF2aW91clwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdHRyYWN0aW9uIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIFRoaXMgYmVoYXZpb3VyIGxldCB0aGUgcGFydGljbGVzIGZvbGxvdyBvbmUgc3BlY2lmaWMgUHJvdG9uLlZlY3RvcjJEXG4gICAqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAYXVnbWVudHMgUHJvdG9uLkJlaGF2aW91clxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFsaWFzIFByb3Rvbi5BdHRyYWN0aW9uXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvbiBmb3IgJ2ZvcmNlJyBhbmQgJ3JhZGl1cydcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uVmVjdG9yMkR9IHRhcmdldFBvc2l0aW9uIHRoZSBhdHRyYWN0aW9uIHBvaW50IGNvb3JkaW5hdGVzXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbZm9yY2U9MTAwXVxuICAgKiBAcGFyYW0ge051bWJlcn0gW3JhZGl1cz0xMDAwXVxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKlxuICAgKiBAcHJvcGVydHkge1Byb3Rvbi5WZWN0b3IyRH0gdGFyZ2V0UG9zaXRpb25cbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IHJhZGl1c1xuICAgKiBAcHJvcGVydHkge051bWJlcn0gZm9yY2VcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IHJhZGl1c1NxXG4gICAqIEBwcm9wZXJ0eSB7UHJvdG9uLlZlY3RvcjJEfSBhdHRyYWN0aW9uRm9yY2VcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IGxlbmd0aFNxXG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lIFRoZSBCZWhhdmlvdXIgbmFtZVxuICAgKi9cbiAgY29uc3RydWN0b3IodGFyZ2V0UG9zaXRpb24sIGZvcmNlLCByYWRpdXMsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZyk7XG5cbiAgICB0aGlzLnRhcmdldFBvc2l0aW9uID0gVXRpbC5pbml0VmFsdWUodGFyZ2V0UG9zaXRpb24sIG5ldyBWZWN0b3IyRCgpKTtcbiAgICB0aGlzLnJhZGl1cyA9IFV0aWwuaW5pdFZhbHVlKHJhZGl1cywgMTAwMCk7XG4gICAgdGhpcy5mb3JjZSA9IFV0aWwuaW5pdFZhbHVlKHRoaXMubm9ybWFsaXplVmFsdWUoZm9yY2UpLCAxMDApO1xuXG4gICAgdGhpcy5yYWRpdXNTcSA9IHRoaXMucmFkaXVzICogdGhpcy5yYWRpdXM7XG4gICAgdGhpcy5hdHRyYWN0aW9uRm9yY2UgPSBuZXcgVmVjdG9yMkQoKTtcbiAgICB0aGlzLmxlbmd0aFNxID0gMDtcblxuICAgIHRoaXMubmFtZSA9IFwiQXR0cmFjdGlvblwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkF0dHJhY3Rpb25cbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvbiBmb3IgJ2ZvcmNlJyBhbmQgJ3JhZGl1cydcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uVmVjdG9yMkR9IHRhcmdldFBvc2l0aW9uIHRoZSBhdHRyYWN0aW9uIHBvaW50IGNvb3JkaW5hdGVzXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbZm9yY2U9MTAwXVxuICAgKiBAcGFyYW0ge051bWJlcn0gW3JhZGl1cz0xMDAwXVxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKi9cbiAgcmVzZXQodGFyZ2V0UG9zaXRpb24sIGZvcmNlLCByYWRpdXMsIGxpZmUsIGVhc2luZykge1xuICAgIHRoaXMudGFyZ2V0UG9zaXRpb24gPSBVdGlsLmluaXRWYWx1ZSh0YXJnZXRQb3NpdGlvbiwgbmV3IFZlY3RvcjJEKCkpO1xuICAgIHRoaXMucmFkaXVzID0gVXRpbC5pbml0VmFsdWUocmFkaXVzLCAxMDAwKTtcbiAgICB0aGlzLmZvcmNlID0gVXRpbC5pbml0VmFsdWUodGhpcy5ub3JtYWxpemVWYWx1ZShmb3JjZSksIDEwMCk7XG5cbiAgICB0aGlzLnJhZGl1c1NxID0gdGhpcy5yYWRpdXMgKiB0aGlzLnJhZGl1cztcbiAgICB0aGlzLmF0dHJhY3Rpb25Gb3JjZSA9IG5ldyBWZWN0b3IyRCgpO1xuICAgIHRoaXMubGVuZ3RoU3EgPSAwO1xuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoaXMgYmVoYXZpb3VyIGZvciBhbGwgcGFydGljbGVzIGV2ZXJ5IHRpbWVcbiAgICpcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uQXR0cmFjdGlvblxuICAgKiBAbWV0aG9kIGFwcGx5QmVoYXZpb3VyXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFx0XHRcdHRpbWUgdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IFx0XHRcdGluZGV4IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5jYWxjdWxhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcblxuICAgIHRoaXMuYXR0cmFjdGlvbkZvcmNlLmNvcHkodGhpcy50YXJnZXRQb3NpdGlvbik7XG4gICAgdGhpcy5hdHRyYWN0aW9uRm9yY2Uuc3ViKHBhcnRpY2xlLnApO1xuICAgIHRoaXMubGVuZ3RoU3EgPSB0aGlzLmF0dHJhY3Rpb25Gb3JjZS5sZW5ndGhTcSgpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoU3EgPiAwLjAwMDA0ICYmIHRoaXMubGVuZ3RoU3EgPCB0aGlzLnJhZGl1c1NxKSB7XG4gICAgICB0aGlzLmF0dHJhY3Rpb25Gb3JjZS5ub3JtYWxpemUoKTtcbiAgICAgIHRoaXMuYXR0cmFjdGlvbkZvcmNlLm11bHRpcGx5U2NhbGFyKDEgLSB0aGlzLmxlbmd0aFNxIC8gdGhpcy5yYWRpdXNTcSk7XG4gICAgICB0aGlzLmF0dHJhY3Rpb25Gb3JjZS5tdWx0aXBseVNjYWxhcih0aGlzLmZvcmNlKTtcblxuICAgICAgcGFydGljbGUuYS5hZGQodGhpcy5hdHRyYWN0aW9uRm9yY2UpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IFZlY3RvcjJEIGZyb20gXCIuLi9tYXRoL1ZlY3RvcjJEXCI7XG5pbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcbmltcG9ydCBCZWhhdmlvdXIgZnJvbSBcIi4vQmVoYXZpb3VyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhbmRvbURyaWZ0IGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAYXVnbWVudHMgQmVoYXZpb3VyXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWxpYXMgUmFuZG9tRHJpZnRcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGRyaWZ0WCBcdFx0XHRcdFggdmFsdWUgb2YgdGhlIG5ldyBWZWN0b3IyRFxuICAgKiBAcGFyYW0ge051bWJlcn0gZHJpZnRZICBcdFx0XHRcdFkgdmFsdWUgb2YgdGhlIG5ldyBWZWN0b3IyRFxuICAgKiBAcGFyYW0ge051bWJlcn0gZGVsYXkgXHRcdFx0XHRIb3cgbXVjaCBkZWxheSB0aGUgZHJpZnQgc2hvdWxkIGhhdmVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICpcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IHRpbWUgVGhlIHRpbWUgb2YgdGhlIGRyaWZ0XG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lIFRoZSBCZWhhdmlvdXIgbmFtZVxuICAgKi9cbiAgY29uc3RydWN0b3IoZHJpZnRYLCBkcmlmdFksIGRlbGF5LCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcpO1xuXG4gICAgdGhpcy5yZXNldChkcmlmdFgsIGRyaWZ0WSwgZGVsYXkpO1xuICAgIHRoaXMudGltZSA9IDA7XG4gICAgdGhpcy5uYW1lID0gXCJSYW5kb21EcmlmdFwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUmFuZG9tRHJpZnRcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBkcmlmdFggXHRcdFx0XHRYIHZhbHVlIG9mIHRoZSBuZXcgVmVjdG9yMkRcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGRyaWZ0WSAgXHRcdFx0XHRZIHZhbHVlIG9mIHRoZSBuZXcgVmVjdG9yMkRcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGRlbGF5IFx0XHRcdFx0SG93IG11Y2ggZGVsYXkgdGhlIGRyaWZ0IHNob3VsZCBoYXZlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gXHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqL1xuICByZXNldChkcmlmdFgsIGRyaWZ0WSwgZGVsYXksIGxpZmUsIGVhc2luZykge1xuICAgIHRoaXMucGFuRm9jZSA9IG5ldyBWZWN0b3IyRChkcmlmdFgsIGRyaWZ0WSk7XG4gICAgdGhpcy5wYW5Gb2NlID0gdGhpcy5ub3JtYWxpemVGb3JjZSh0aGlzLnBhbkZvY2UpO1xuICAgIHRoaXMuZGVsYXkgPSBkZWxheTtcblxuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIGluaXRpYWxpemUocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS5kYXRhLnRpbWUgPSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoaXMgYmVoYXZpb3VyIGZvciBhbGwgcGFydGljbGVzIGV2ZXJ5IHRpbWVcbiAgICpcbiAgICogQG1ldGhvZCBhcHBseUJlaGF2aW91clxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1JhbmRvbURyaWZ0XG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpY2xlfSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge051bWJlcn0gXHRcdFx0dGltZSB0aGUgaW50ZWdyYXRlIHRpbWUgMS9tc1xuICAgKiBAcGFyYW0ge0ludH0gXHRcdFx0aW5kZXggdGhlIHBhcnRpY2xlIGluZGV4XG4gICAqL1xuICBhcHBseUJlaGF2aW91cihwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuICAgIHBhcnRpY2xlLmRhdGEudGltZSArPSB0aW1lO1xuXG4gICAgaWYgKHBhcnRpY2xlLmRhdGEudGltZSA+PSB0aGlzLmRlbGF5KSB7XG4gICAgICBwYXJ0aWNsZS5hLmFkZFhZKFxuICAgICAgICBNYXRoVXRpbC5yYW5kb21BVG9CKC10aGlzLnBhbkZvY2UueCwgdGhpcy5wYW5Gb2NlLngpLFxuICAgICAgICBNYXRoVXRpbC5yYW5kb21BVG9CKC10aGlzLnBhbkZvY2UueSwgdGhpcy5wYW5Gb2NlLnkpXG4gICAgICApO1xuXG4gICAgICBwYXJ0aWNsZS5kYXRhLnRpbWUgPSAwO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IEZvcmNlIGZyb20gXCIuL0ZvcmNlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdyYXZpdHkgZXh0ZW5kcyBGb3JjZSB7XG4gIC8qKlxuICAgKiBAbWVtYmVyb2YhIFByb3RvbiNcbiAgICogQGF1Z21lbnRzIFByb3RvbiNQcm90b24uRm9yY2VcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhbGlhcyBQcm90b24uR3Jhdml0eVxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gZyBcdFx0XHRcdFx0XHRcdEdyYXZpdHlcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICpcbiAgICogQHByb3BlcnR5IHtTdHJpbmd9IG5hbWUgVGhlIEJlaGF2aW91ciBuYW1lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihnLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcigwLCBnLCBsaWZlLCBlYXNpbmcpO1xuICAgIHRoaXMubmFtZSA9IFwiR3Jhdml0eVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkdyYXZpdHlcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBnIFx0XHRcdFx0XHRcdFx0R3Jhdml0eVxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKi9cbiAgcmVzZXQoZywgbGlmZSwgZWFzaW5nKSB7XG4gICAgc3VwZXIucmVzZXQoMCwgZywgbGlmZSwgZWFzaW5nKTtcbiAgfVxufVxuIiwiaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi4vbWF0aC9WZWN0b3IyRFwiO1xuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9CZWhhdmlvdXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGlzaW9uIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayBhZnRlciBjb2xsaXNpb25cbiAgICpcbiAgICogQGNhbGxiYWNrIENhbGxiYWNrXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLlBhcnRpY2xlfSBwYXJ0aWNsZVxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJpdGNsZX0gb3RoZXJQYXJ0aWNsZVxuICAgKi9cbiAgLyoqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAYXVnbWVudHMgUHJvdG9uLkJlaGF2aW91clxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFsaWFzIFByb3Rvbi5Db2xsaXNpb25cbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIHRvIG1hc3NcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uRW1pdHRlcn0gXHRbZW1pdHRlcj1udWxsXSBcdFx0dGhlIGF0dHJhY3Rpb24gcG9pbnQgY29vcmRpbmF0ZXNcbiAgICogQHBhcmFtIHtCb29sZWFufSBcdFx0W21hc3M9dHJ1ZV1cbiAgICogQHBhcmFtIHtDYWxsYmFja31cdCBcdFtjYWxsYmFjaz1udWxsXVx0XHR0aGUgY2FsbGJhY2sgYWZ0ZXIgdGhlIGNvbGxpc2lvblxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKlxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gbmFtZSBUaGUgQmVoYXZpb3VyIG5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGVtaXR0ZXIsIG1hc3MsIGNhbGxiYWNrLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcpO1xuICAgIHRoaXMucmVzZXQoZW1pdHRlciwgbWFzcywgY2FsbGJhY2spO1xuICAgIHRoaXMubmV3UG9vbCA9IFtdO1xuICAgIHRoaXMucG9vbCA9IFtdO1xuICAgIHRoaXMubmFtZSA9IFwiQ29sbGlzaW9uXCI7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhpcyBiZWhhdmlvdXIncyBwYXJhbWV0ZXJzXG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkNvbGxpc2lvblxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb24gdG8gbWFzc1xuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5FbWl0dGVyfSBcdFtlbWl0dGVyPW51bGxdIFx0XHR0aGUgYXR0cmFjdGlvbiBwb2ludCBjb29yZGluYXRlc1xuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFx0XHRbbWFzcz10cnVlXVxuICAgKiBAcGFyYW0ge0NhbGxiYWNrfVx0IFx0W2NhbGxiYWNrPW51bGxdXHRcdHRoZSBjYWxsYmFjayBhZnRlciB0aGUgY29sbGlzaW9uXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBcdFx0XHRbbGlmZT1JbmZpbml0eV0gXHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZS5lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqL1xuICByZXNldChlbWl0dGVyLCBtYXNzLCBjYWxsYmFjaywgbGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy5lbWl0dGVyID0gVXRpbC5pbml0VmFsdWUoZW1pdHRlciwgbnVsbCk7XG4gICAgdGhpcy5tYXNzID0gVXRpbC5pbml0VmFsdWUobWFzcywgdHJ1ZSk7XG4gICAgdGhpcy5jYWxsYmFjayA9IFV0aWwuaW5pdFZhbHVlKGNhbGxiYWNrLCBudWxsKTtcblxuICAgIHRoaXMuY29sbGlzaW9uUG9vbCA9IFtdO1xuICAgIHRoaXMuZGVsdGEgPSBuZXcgVmVjdG9yMkQoKTtcblxuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGlzIGJlaGF2aW91ciBmb3IgYWxsIHBhcnRpY2xlcyBldmVyeSB0aW1lXG4gICAqXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkNvbGxpc2lvblxuICAgKiBAbWV0aG9kIGFwcGx5QmVoYXZpb3VyXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFx0XHRcdHRpbWUgdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IFx0XHRcdGluZGV4IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgaWYgKHRoaXMuZW1pdHRlcikge1xuICAgICAgVXRpbC5zbGljZUFycmF5KHRoaXMuZW1pdHRlci5wYXJ0aWNsZXMsIGluZGV4LCB0aGlzLm5ld1Bvb2wpO1xuICAgIH0gZWxzZSB7XG4gICAgICBVdGlsLnNsaWNlQXJyYXkodGhpcy5wb29sLCBpbmRleCwgdGhpcy5uZXdQb29sKTtcbiAgICB9XG5cbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLm5ld1Bvb2wubGVuZ3RoO1xuICAgIGxldCBvdGhlclBhcnRpY2xlO1xuICAgIGxldCBsZW5ndGhTcTtcbiAgICBsZXQgb3ZlcmxhcDtcbiAgICBsZXQgdG90YWxNYXNzO1xuICAgIGxldCBhdmVyYWdlTWFzczEsIGF2ZXJhZ2VNYXNzMjtcbiAgICBsZXQgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgb3RoZXJQYXJ0aWNsZSA9IHRoaXMubmV3UG9vbFtpXTtcblxuICAgICAgaWYgKG90aGVyUGFydGljbGUgIT09IHBhcnRpY2xlKSB7XG4gICAgICAgIHRoaXMuZGVsdGEuY29weShvdGhlclBhcnRpY2xlLnApO1xuICAgICAgICB0aGlzLmRlbHRhLnN1YihwYXJ0aWNsZS5wKTtcblxuICAgICAgICBsZW5ndGhTcSA9IHRoaXMuZGVsdGEubGVuZ3RoU3EoKTtcbiAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBwYXJ0aWNsZS5yYWRpdXMgKyBvdGhlclBhcnRpY2xlLnJhZGl1cztcblxuICAgICAgICBpZiAobGVuZ3RoU3EgPD0gZGlzdGFuY2UgKiBkaXN0YW5jZSkge1xuICAgICAgICAgIG92ZXJsYXAgPSBkaXN0YW5jZSAtIE1hdGguc3FydChsZW5ndGhTcSk7XG4gICAgICAgICAgb3ZlcmxhcCArPSAwLjU7XG5cbiAgICAgICAgICB0b3RhbE1hc3MgPSBwYXJ0aWNsZS5tYXNzICsgb3RoZXJQYXJ0aWNsZS5tYXNzO1xuICAgICAgICAgIGF2ZXJhZ2VNYXNzMSA9IHRoaXMubWFzcyA/IG90aGVyUGFydGljbGUubWFzcyAvIHRvdGFsTWFzcyA6IDAuNTtcbiAgICAgICAgICBhdmVyYWdlTWFzczIgPSB0aGlzLm1hc3MgPyBwYXJ0aWNsZS5tYXNzIC8gdG90YWxNYXNzIDogMC41O1xuXG4gICAgICAgICAgcGFydGljbGUucC5hZGQoXG4gICAgICAgICAgICB0aGlzLmRlbHRhXG4gICAgICAgICAgICAgIC5jbG9uZSgpXG4gICAgICAgICAgICAgIC5ub3JtYWxpemUoKVxuICAgICAgICAgICAgICAubXVsdGlwbHlTY2FsYXIob3ZlcmxhcCAqIC1hdmVyYWdlTWFzczEpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBvdGhlclBhcnRpY2xlLnAuYWRkKHRoaXMuZGVsdGEubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIob3ZlcmxhcCAqIGF2ZXJhZ2VNYXNzMikpO1xuXG4gICAgICAgICAgdGhpcy5jYWxsYmFjayAmJiB0aGlzLmNhbGxiYWNrKHBhcnRpY2xlLCBvdGhlclBhcnRpY2xlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBCZWhhdmlvdXIgZnJvbSBcIi4vQmVoYXZpb3VyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENyb3NzWm9uZSBleHRlbmRzIEJlaGF2aW91ciB7XG4gIC8qKlxuICAgKiBEZWZpbmVzIHdoYXQgaGFwcGVucyBpZiB0aGUgcGFydGljbGVzIGNvbWUgdG8gdGhlIGVuZCBvZiB0aGUgc3BlY2lmaWVkIHpvbmVcbiAgICpcbiAgICogQG1lbWJlcm9mISBQcm90b24jXG4gICAqIEBhdWdtZW50cyBQcm90b24uQmVoYXZpb3VyXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWxpYXMgUHJvdG9uLkNyb3NzWm9uZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5ab25lfSB6b25lIFx0XHRcdFx0XHRcdGNhbiBiZSBhbnkgUHJvdG9uLlpvbmUgLSBlLmcuIFByb3Rvbi5SZWN0Wm9uZSgpXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBcdFx0W2Nyb3NzVHlwZT1kZWFkXSBcdFx0XHR3aGF0IGhhcHBlbnMgaWYgdGhlIHBhcnRpY2xlcyBwYXNzIHRoZSB6b25lIC0gYWxsb3dlZCBzdHJpbmdzOiBkZWFkIHwgYm91bmQgfCBjcm9zc1xuICAgKiBAcGFyYW0ge051bWJlcn0gXHRcdFtsaWZlPUluZmluaXR5XSBcdFx0XHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFx0XHRbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKlxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gbmFtZSBUaGUgQmVoYXZpb3VyIG5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKHpvbmUsIGNyb3NzVHlwZSwgbGlmZSwgZWFzaW5nKSB7XG4gICAgc3VwZXIobGlmZSwgZWFzaW5nKTtcblxuICAgIHRoaXMucmVzZXQoem9uZSwgY3Jvc3NUeXBlKTtcbiAgICB0aGlzLm5hbWUgPSBcIkNyb3NzWm9uZVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkNyb3NzWm9uZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uWm9uZX0gem9uZSBcdFx0XHRcdGNhbiBiZSBhbnkgUHJvdG9uLlpvbmUgLSBlLmcuIFByb3Rvbi5SZWN0Wm9uZSgpXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBcdFx0W2Nyb3NzVHlwZT1kZWFkXSBcdHdoYXQgaGFwcGVucyBpZiB0aGUgcGFydGljbGVzIHBhc3MgdGhlIHpvbmUgLSBhbGxvd2VkIHN0cmluZ3M6IGRlYWQgfCBib3VuZCB8IGNyb3NzXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBcdFx0W2xpZmU9SW5maW5pdHldIFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBcdFx0W2Vhc2luZz1lYXNlTGluZWFyXVx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICovXG4gIHJlc2V0KHpvbmUsIGNyb3NzVHlwZSwgbGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy56b25lID0gem9uZTtcbiAgICB0aGlzLnpvbmUuY3Jvc3NUeXBlID0gVXRpbC5pbml0VmFsdWUoY3Jvc3NUeXBlLCBcImRlYWRcIik7XG5cbiAgICBsaWZlICYmIHN1cGVyLnJlc2V0KGxpZmUsIGVhc2luZyk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgdGhpcyBiZWhhdmlvdXIgZm9yIGFsbCBwYXJ0aWNsZXMgZXZlcnkgdGltZVxuICAgKlxuICAgKiBAbWV0aG9kIGFwcGx5QmVoYXZpb3VyXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkNyb3NzWm9uZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uUGFydGljbGV9IHBhcnRpY2xlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB0aGUgaW50ZWdyYXRlIHRpbWUgMS9tc1xuICAgKiBAcGFyYW0ge0ludH0gdGhlIHBhcnRpY2xlIGluZGV4XG4gICAqL1xuICBhcHBseUJlaGF2aW91cihwYXJ0aWNsZSwgdGltZSwgaW5kZXgpIHtcbiAgICB0aGlzLmNhbGN1bGF0ZShwYXJ0aWNsZSwgdGltZSwgaW5kZXgpO1xuICAgIHRoaXMuem9uZS5jcm9zc2luZyhwYXJ0aWNsZSk7XG4gIH1cbn1cbiIsImltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgU3BhbiBmcm9tIFwiLi4vbWF0aC9TcGFuXCI7XG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gXCIuL0JlaGF2aW91clwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBbHBoYSBleHRlbmRzIEJlaGF2aW91ciB7XG4gIC8qKlxuICAgKiBAbWVtYmVyb2YhIFByb3RvbiNcbiAgICogQGF1Z21lbnRzIFByb3Rvbi5CZWhhdmlvdXJcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhbGlhcyBQcm90b24uQWxwaGFcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciAnYScgYW5kICdiJ1xuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gYVxuICAgKiBAcGFyYW0ge1N0cmluZ30gYlxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKlxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gbmFtZSBUaGUgQmVoYXZpb3VyIG5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGEsIGIsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZyk7XG5cbiAgICB0aGlzLnJlc2V0KGEsIGIpO1xuICAgIHRoaXMubmFtZSA9IFwiQWxwaGFcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQG1ldGhvZCByZXNldFxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5BbHBoYVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciAnYScgYW5kICdiJ1xuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gYVxuICAgKiBAcGFyYW0ge1N0cmluZ30gYlxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKi9cbiAgcmVzZXQoYSwgYiwgbGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy5zYW1lID0gYiA9PT0gbnVsbCB8fCBiID09PSB1bmRlZmluZWQgPyB0cnVlIDogZmFsc2U7XG4gICAgdGhpcy5hID0gU3Bhbi5zZXRTcGFuVmFsdWUoVXRpbC5pbml0VmFsdWUoYSwgMSkpO1xuICAgIHRoaXMuYiA9IFNwYW4uc2V0U3BhblZhbHVlKGIpO1xuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG5ldyBhbHBoYSB2YWx1ZSBvZiB0aGUgcGFydGljbGVcbiAgICpcbiAgICogQG1ldGhvZCBpbml0aWFsaXplXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkFscGhhXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGUgQSBzaW5nbGUgUHJvdG9uIGdlbmVyYXRlZCBwYXJ0aWNsZVxuICAgKi9cbiAgaW5pdGlhbGl6ZShwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLmRhdGEuYWxwaGFBID0gdGhpcy5hLmdldFZhbHVlKCk7XG5cbiAgICBpZiAodGhpcy5zYW1lKSBwYXJ0aWNsZS5kYXRhLmFscGhhQiA9IHBhcnRpY2xlLmRhdGEuYWxwaGFBO1xuICAgIGVsc2UgcGFydGljbGUuZGF0YS5hbHBoYUIgPSB0aGlzLmIuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAbWV0aG9kIGFwcGx5QmVoYXZpb3VyXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkFscGhhXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFx0XHRcdHRpbWUgdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IFx0XHRcdGluZGV4IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5jYWxjdWxhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcblxuICAgIHBhcnRpY2xlLmFscGhhID0gcGFydGljbGUuZGF0YS5hbHBoYUIgKyAocGFydGljbGUuZGF0YS5hbHBoYUEgLSBwYXJ0aWNsZS5kYXRhLmFscGhhQikgKiB0aGlzLmVuZXJneTtcblxuICAgIGlmIChwYXJ0aWNsZS5hbHBoYSA8IDAuMDAxKSBwYXJ0aWNsZS5hbHBoYSA9IDA7XG4gIH1cbn1cbiIsImltcG9ydCBTcGFuIGZyb20gXCIuLi9tYXRoL1NwYW5cIjtcbmltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgQmVoYXZpb3VyIGZyb20gXCIuL0JlaGF2aW91clwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2FsZSBleHRlbmRzIEJlaGF2aW91ciB7XG4gIC8qKlxuICAgKiBAbWVtYmVyb2YhIFByb3RvbiNcbiAgICogQGF1Z21lbnRzIFByb3Rvbi5CZWhhdmlvdXJcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhbGlhcyBQcm90b24uU2NhbGVcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciAnYScgYW5kICdiJ1xuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gYVxuICAgKiBAcGFyYW0ge1N0cmluZ30gYlxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKlxuICAgKiBAcHJvcGVydHkge1N0cmluZ30gbmFtZSBUaGUgQmVoYXZpb3VyIG5hbWVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGEsIGIsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZyk7XG5cbiAgICB0aGlzLnJlc2V0KGEsIGIpO1xuICAgIHRoaXMubmFtZSA9IFwiU2NhbGVcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQG1ldGhvZCByZXNldFxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5TY2FsZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGFcbiAgICogQHBhcmFtIHtTdHJpbmd9IGJcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICovXG4gIHJlc2V0KGEsIGIsIGxpZmUsIGVhc2luZykge1xuICAgIHRoaXMuc2FtZSA9IGIgPT09IG51bGwgfHwgYiA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGZhbHNlO1xuICAgIHRoaXMuYSA9IFNwYW4uc2V0U3BhblZhbHVlKFV0aWwuaW5pdFZhbHVlKGEsIDEpKTtcbiAgICB0aGlzLmIgPSBTcGFuLnNldFNwYW5WYWx1ZShiKTtcblxuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBiZWhhdmlvdXIncyBwYXJhbWV0ZXJzIGZvciBhbGwgcGFydGljbGVzXG4gICAqXG4gICAqIEBtZXRob2QgaW5pdGlhbGl6ZVxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5TY2FsZVxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uUGFydGljbGV9IHBhcnRpY2xlXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7XG4gICAgcGFydGljbGUuZGF0YS5zY2FsZUEgPSB0aGlzLmEuZ2V0VmFsdWUoKTtcbiAgICBwYXJ0aWNsZS5kYXRhLm9sZFJhZGl1cyA9IHBhcnRpY2xlLnJhZGl1cztcbiAgICBwYXJ0aWNsZS5kYXRhLnNjYWxlQiA9IHRoaXMuc2FtZSA/IHBhcnRpY2xlLmRhdGEuc2NhbGVBIDogdGhpcy5iLmdldFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgdGhpcyBiZWhhdmlvdXIgZm9yIGFsbCBwYXJ0aWNsZXMgZXZlcnkgdGltZVxuICAgKlxuICAgKiBAbWV0aG9kIGFwcGx5QmVoYXZpb3VyXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlNjYWxlXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFx0XHRcdHRpbWUgdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IFx0XHRcdGluZGV4IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5jYWxjdWxhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcbiAgICBwYXJ0aWNsZS5zY2FsZSA9IHBhcnRpY2xlLmRhdGEuc2NhbGVCICsgKHBhcnRpY2xlLmRhdGEuc2NhbGVBIC0gcGFydGljbGUuZGF0YS5zY2FsZUIpICogdGhpcy5lbmVyZ3k7XG5cbiAgICBpZiAocGFydGljbGUuc2NhbGUgPCAwLjAwMDEpIHBhcnRpY2xlLnNjYWxlID0gMDtcbiAgICBwYXJ0aWNsZS5yYWRpdXMgPSBwYXJ0aWNsZS5kYXRhLm9sZFJhZGl1cyAqIHBhcnRpY2xlLnNjYWxlO1xuICB9XG59XG4iLCJpbXBvcnQgU3BhbiBmcm9tIFwiLi4vbWF0aC9TcGFuXCI7XG5pbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9CZWhhdmlvdXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm90YXRlIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAYXVnbWVudHMgUHJvdG9uLkJlaGF2aW91clxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFsaWFzIFByb3Rvbi5Sb3RhdGVcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciAnYScsICdiJyBhbmQgJ3N0eWxlJ1xuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2luZmx1ZW5jZT1WZWxvY2l0eV0gVGhlIHJvdGF0aW9uJ3MgaW5mbHVlbmNlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBiXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbc3R5bGU9dG9dXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gXHRcdFx0XHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZS5lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqXG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lIFRoZSBCZWhhdmlvdXIgbmFtZVxuICAgKi9cbiAgY29uc3RydWN0b3IoaW5mbHVlbmNlLCBiLCBzdHlsZSwgbGlmZSwgZWFzaW5nKSB7XG4gICAgc3VwZXIobGlmZSwgZWFzaW5nKTtcblxuICAgIHRoaXMucmVzZXQoaW5mbHVlbmNlLCBiLCBzdHlsZSk7XG4gICAgdGhpcy5uYW1lID0gXCJSb3RhdGVcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQG1ldGhvZCByZXNldFxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Sb3RhdGVcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEB0b2RvIGFkZCBkZXNjcmlwdGlvbiBmb3IgJ2EnLCAnYicgYW5kICdzdHlsZSdcbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IGFcbiAgICogQHBhcmFtIHtTdHJpbmd9IGJcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtzdHlsZT10b11cbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICovXG4gIHJlc2V0KGEsIGIsIHN0eWxlLCBsaWZlLCBlYXNpbmcpIHtcbiAgICB0aGlzLnNhbWUgPSBiID09PSBudWxsIHx8IGIgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBmYWxzZTtcblxuICAgIHRoaXMuYSA9IFNwYW4uc2V0U3BhblZhbHVlKFV0aWwuaW5pdFZhbHVlKGEsIFwiVmVsb2NpdHlcIikpO1xuICAgIHRoaXMuYiA9IFNwYW4uc2V0U3BhblZhbHVlKFV0aWwuaW5pdFZhbHVlKGIsIDApKTtcbiAgICB0aGlzLnN0eWxlID0gVXRpbC5pbml0VmFsdWUoc3R5bGUsIFwidG9cIik7XG5cbiAgICBsaWZlICYmIHN1cGVyLnJlc2V0KGxpZmUsIGVhc2luZyk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYmVoYXZpb3VyJ3MgcGFyYW1ldGVycyBmb3IgYWxsIHBhcnRpY2xlc1xuICAgKlxuICAgKiBAbWV0aG9kIGluaXRpYWxpemVcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uUm90YXRlXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICovXG4gIGluaXRpYWxpemUocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS5yb3RhdGlvbiA9IHRoaXMuYS5nZXRWYWx1ZSgpO1xuICAgIHBhcnRpY2xlLmRhdGEucm90YXRpb25BID0gdGhpcy5hLmdldFZhbHVlKCk7XG5cbiAgICBpZiAoIXRoaXMuc2FtZSkgcGFydGljbGUuZGF0YS5yb3RhdGlvbkIgPSB0aGlzLmIuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGlzIGJlaGF2aW91ciBmb3IgYWxsIHBhcnRpY2xlcyBldmVyeSB0aW1lXG4gICAqXG4gICAqIEBtZXRob2QgYXBwbHlCZWhhdmlvdXJcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uUm90YXRlXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFx0XHRcdHRpbWUgdGhlIGludGVncmF0ZSB0aW1lIDEvbXNcbiAgICogQHBhcmFtIHtJbnR9IFx0XHRcdGluZGV4IHRoZSBwYXJ0aWNsZSBpbmRleFxuICAgKi9cbiAgYXBwbHlCZWhhdmlvdXIocGFydGljbGUsIHRpbWUsIGluZGV4KSB7XG4gICAgdGhpcy5jYWxjdWxhdGUocGFydGljbGUsIHRpbWUsIGluZGV4KTtcblxuICAgIGlmICghdGhpcy5zYW1lKSB7XG4gICAgICBpZiAodGhpcy5zdHlsZSA9PT0gXCJ0b1wiIHx8IHRoaXMuc3R5bGUgPT09IFwiVE9cIiB8fCB0aGlzLnN0eWxlID09PSBcIl9cIikge1xuICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbiArPVxuICAgICAgICAgIHBhcnRpY2xlLmRhdGEucm90YXRpb25CICsgKHBhcnRpY2xlLmRhdGEucm90YXRpb25BIC0gcGFydGljbGUuZGF0YS5yb3RhdGlvbkIpICogdGhpcy5lbmVyZ3k7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0aWNsZS5yb3RhdGlvbiArPSBwYXJ0aWNsZS5kYXRhLnJvdGF0aW9uQjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuYS5hID09PSBcIlZcIiB8fCB0aGlzLmEuYSA9PT0gXCJWZWxvY2l0eVwiIHx8IHRoaXMuYS5hID09PSBcInZcIikge1xuICAgICAgLy8gYmV0YS4uLlxuICAgICAgcGFydGljbGUucm90YXRpb24gPSBwYXJ0aWNsZS5nZXREaXJlY3Rpb24oKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBDb2xvclV0aWwgZnJvbSBcIi4uL3V0aWxzL0NvbG9yVXRpbFwiO1xuaW1wb3J0IEFycmF5U3BhbiBmcm9tIFwiLi4vbWF0aC9BcnJheVNwYW5cIjtcbmltcG9ydCBCZWhhdmlvdXIgZnJvbSBcIi4vQmVoYXZpb3VyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbG9yIGV4dGVuZHMgQmVoYXZpb3VyIHtcbiAgLyoqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAYXVnbWVudHMgUHJvdG9uLkJlaGF2aW91clxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGFsaWFzIFByb3Rvbi5Db2xvclxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5BcnJheVNwYW4gfCBTdHJpbmd9IGEgdGhlIHN0cmluZyBzaG91bGQgYmUgYSBoZXggZS5nLiAjMDAwMDAwIGZvciBibGFja1xuICAgKiBAcGFyYW0ge1Byb3Rvbi5BcnJheVNwYW4gfCBTdHJpbmd9IGIgdGhlIHN0cmluZyBzaG91bGQgYmUgYSBoZXggZS5nLiAjMDAwMDAwIGZvciBibGFja1xuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICpcbiAgICogQHByb3BlcnR5IHtTdHJpbmd9IG5hbWUgVGhlIEJlaGF2aW91ciBuYW1lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhLCBiLCBsaWZlLCBlYXNpbmcpIHtcbiAgICBzdXBlcihsaWZlLCBlYXNpbmcpO1xuXG4gICAgdGhpcy5yZXNldChhLCBiKTtcbiAgICB0aGlzLm5hbWUgPSBcIkNvbG9yXCI7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhpcyBiZWhhdmlvdXIncyBwYXJhbWV0ZXJzXG4gICAqXG4gICAqIEBtZXRob2QgcmVzZXRcbiAgICogQG1lbWJlcm9mIFByb3RvbiNQcm90b24uQ29sb3JcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLkFycmF5U3BhbiB8IFN0cmluZ30gYSB0aGUgc3RyaW5nIHNob3VsZCBiZSBhIGhleCBlLmcuICMwMDAwMDAgZm9yIGJsYWNrXG4gICAqIEBwYXJhbSB7UHJvdG9uLkFycmF5U3BhbiB8IFN0cmluZ30gYiB0aGUgc3RyaW5nIHNob3VsZCBiZSBhIGhleCBlLmcuICMwMDAwMDAgZm9yIGJsYWNrXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gXHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKi9cbiAgcmVzZXQoYSwgYiwgbGlmZSwgZWFzaW5nKSB7XG4gICAgdGhpcy5hID0gQXJyYXlTcGFuLmNyZWF0ZUFycmF5U3BhbihhKTtcbiAgICB0aGlzLmIgPSBBcnJheVNwYW4uY3JlYXRlQXJyYXlTcGFuKGIpO1xuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBiZWhhdmlvdXIncyBwYXJhbWV0ZXJzIGZvciBhbGwgcGFydGljbGVzXG4gICAqXG4gICAqIEBtZXRob2QgaW5pdGlhbGl6ZVxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5Db2xvclxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQcm90b24uUGFydGljbGV9IHBhcnRpY2xlXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7XG4gICAgcGFydGljbGUuY29sb3IgPSB0aGlzLmEuZ2V0VmFsdWUoKTtcbiAgICBwYXJ0aWNsZS5kYXRhLmNvbG9yQSA9IENvbG9yVXRpbC5oZXhUb1JnYihwYXJ0aWNsZS5jb2xvcik7XG5cbiAgICBpZiAodGhpcy5iKSBwYXJ0aWNsZS5kYXRhLmNvbG9yQiA9IENvbG9yVXRpbC5oZXhUb1JnYih0aGlzLmIuZ2V0VmFsdWUoKSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbHkgdGhpcyBiZWhhdmlvdXIgZm9yIGFsbCBwYXJ0aWNsZXMgZXZlcnkgdGltZVxuICAgKlxuICAgKiBAbWV0aG9kIGFwcGx5QmVoYXZpb3VyXG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLkNvbG9yXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHRoZSBpbnRlZ3JhdGUgdGltZSAxL21zXG4gICAqIEBwYXJhbSB7SW50fSB0aGUgcGFydGljbGUgaW5kZXhcbiAgICovXG4gIGFwcGx5QmVoYXZpb3VyKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIGlmICh0aGlzLmIpIHtcbiAgICAgIHRoaXMuY2FsY3VsYXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCk7XG5cbiAgICAgIHBhcnRpY2xlLnJnYi5yID0gcGFydGljbGUuZGF0YS5jb2xvckIuciArIChwYXJ0aWNsZS5kYXRhLmNvbG9yQS5yIC0gcGFydGljbGUuZGF0YS5jb2xvckIucikgKiB0aGlzLmVuZXJneTtcbiAgICAgIHBhcnRpY2xlLnJnYi5nID0gcGFydGljbGUuZGF0YS5jb2xvckIuZyArIChwYXJ0aWNsZS5kYXRhLmNvbG9yQS5nIC0gcGFydGljbGUuZGF0YS5jb2xvckIuZykgKiB0aGlzLmVuZXJneTtcbiAgICAgIHBhcnRpY2xlLnJnYi5iID0gcGFydGljbGUuZGF0YS5jb2xvckIuYiArIChwYXJ0aWNsZS5kYXRhLmNvbG9yQS5iIC0gcGFydGljbGUuZGF0YS5jb2xvckIuYikgKiB0aGlzLmVuZXJneTtcblxuICAgICAgcGFydGljbGUucmdiLnIgPSBwYXJ0aWNsZS5yZ2IuciA8PCAwO1xuICAgICAgcGFydGljbGUucmdiLmcgPSBwYXJ0aWNsZS5yZ2IuZyA8PCAwO1xuICAgICAgcGFydGljbGUucmdiLmIgPSBwYXJ0aWNsZS5yZ2IuYiA8PCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0aWNsZS5yZ2IuciA9IHBhcnRpY2xlLmRhdGEuY29sb3JBLnI7XG4gICAgICBwYXJ0aWNsZS5yZ2IuZyA9IHBhcnRpY2xlLmRhdGEuY29sb3JBLmc7XG4gICAgICBwYXJ0aWNsZS5yZ2IuYiA9IHBhcnRpY2xlLmRhdGEuY29sb3JBLmI7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcbmltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi4vbWF0aC9WZWN0b3IyRFwiO1xuaW1wb3J0IFNwYW4gZnJvbSBcIi4uL21hdGgvU3BhblwiO1xuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9CZWhhdmlvdXJcIjtcblxuY29uc3QgQ0hBTkdJTkcgPSBcImNoYW5naW5nXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEN5Y2xvbmUgZXh0ZW5kcyBCZWhhdmlvdXIge1xuICAvKipcbiAgICogQG1lbWJlcm9mISBQcm90b24jXG4gICAqIEBhdWdtZW50cyBQcm90b24uQmVoYXZpb3VyXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWxpYXMgUHJvdG9uLkN5Y2xvbmVcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGFuZ2xlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBmb3JjZVxuICAgKiBAcGFyYW0ge051bWJlcn0gW2xpZmU9SW5maW5pdHldIFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICpcbiAgICogQHByb3BlcnR5IHtTdHJpbmd9IG5hbWUgVGhlIEJlaGF2aW91ciBuYW1lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhbmdsZSwgZm9yY2UsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZyk7XG4gICAgdGhpcy5zZXRBbmdsZUFuZEZvcmNlKGFuZ2xlLCBmb3JjZSk7XG4gICAgdGhpcy5uYW1lID0gXCJDeWNsb25lXCI7XG4gIH1cblxuICBzZXRBbmdsZUFuZEZvcmNlKGFuZ2xlLCBmb3JjZSkge1xuICAgIHRoaXMuZm9yY2UgPSBDSEFOR0lORztcbiAgICB0aGlzLmFuZ2xlID0gTWF0aFV0aWwuUEkgLyAyO1xuXG4gICAgaWYgKGFuZ2xlID09PSBcInJpZ2h0XCIpIHtcbiAgICAgIHRoaXMuYW5nbGUgPSBNYXRoVXRpbC5QSSAvIDI7XG4gICAgfSBlbHNlIGlmIChhbmdsZSA9PT0gXCJsZWZ0XCIpIHtcbiAgICAgIHRoaXMuYW5nbGUgPSAtTWF0aFV0aWwuUEkgLyAyO1xuICAgIH0gZWxzZSBpZiAoYW5nbGUgPT09IFwicmFuZG9tXCIpIHtcbiAgICAgIHRoaXMuYW5nbGUgPSBcInJhbmRvbVwiO1xuICAgIH0gZWxzZSBpZiAoYW5nbGUgaW5zdGFuY2VvZiBTcGFuKSB7XG4gICAgICB0aGlzLmFuZ2xlID0gXCJzcGFuXCI7XG4gICAgICB0aGlzLnNwYW4gPSBhbmdsZTtcbiAgICB9IGVsc2UgaWYgKGFuZ2xlKSB7XG4gICAgICB0aGlzLmFuZ2xlID0gYW5nbGU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgU3RyaW5nKGZvcmNlKS50b0xvd2VyQ2FzZSgpID09PSBcImNoYW5naW5nXCIgfHxcbiAgICAgIFN0cmluZyhmb3JjZSkudG9Mb3dlckNhc2UoKSA9PT0gXCJjaGFuZ1wiIHx8XG4gICAgICBTdHJpbmcoZm9yY2UpLnRvTG93ZXJDYXNlKCkgPT09IFwiYXV0b1wiXG4gICAgKSB7XG4gICAgICB0aGlzLmZvcmNlID0gQ0hBTkdJTkc7XG4gICAgfSBlbHNlIGlmIChmb3JjZSkge1xuICAgICAgdGhpcy5mb3JjZSA9IGZvcmNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGlzIGJlaGF2aW91cidzIHBhcmFtZXRlcnNcbiAgICpcbiAgICogQG1ldGhvZCByZXNldFxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5DeWNsb25lXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gYW5nbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGZvcmNlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gXHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2UuZWFzZUxpbmVhcl0gXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKi9cbiAgcmVzZXQoYW5nbGUsIGZvcmNlLCBsaWZlLCBlYXNpbmcpIHtcbiAgICB0aGlzLmFuZ2xlID0gTWF0aFV0aWwuUEkgLyAyO1xuICAgIHRoaXMuc2V0QW5nbGVBbmRGb3JjZShhbmdsZSwgZm9yY2UpO1xuICAgIGxpZmUgJiYgc3VwZXIucmVzZXQobGlmZSwgZWFzaW5nKTtcbiAgfVxuXG4gIGluaXRpYWxpemUocGFydGljbGUpIHtcbiAgICBpZiAodGhpcy5hbmdsZSA9PT0gXCJyYW5kb21cIikge1xuICAgICAgcGFydGljbGUuZGF0YS5jYW5nbGUgPSBNYXRoVXRpbC5yYW5kb21BVG9CKC1NYXRoVXRpbC5QSSwgTWF0aFV0aWwuUEkpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hbmdsZSA9PT0gXCJzcGFuXCIpIHtcbiAgICAgIHBhcnRpY2xlLmRhdGEuY2FuZ2xlID0gdGhpcy5zcGFuLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcGFydGljbGUuZGF0YS5jeWNsb25lID0gbmV3IFZlY3RvcjJEKDAsIDApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoaXMgYmVoYXZpb3VyIGZvciBhbGwgcGFydGljbGVzIGV2ZXJ5IHRpbWVcbiAgICpcbiAgICogQG1ldGhvZCBhcHBseUJlaGF2aW91clxuICAgKiBAbWVtYmVyb2YgUHJvdG9uI1Byb3Rvbi5DeWNsb25lXG4gICAqIEBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5QYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHRoZSBpbnRlZ3JhdGUgdGltZSAxL21zXG4gICAqIEBwYXJhbSB7SW50fSB0aGUgcGFydGljbGUgaW5kZXhcbiAgICovXG4gIGFwcGx5QmVoYXZpb3VyKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuY2FsY3VsYXRlKHBhcnRpY2xlLCB0aW1lLCBpbmRleCk7XG5cbiAgICBsZXQgbGVuZ3RoO1xuICAgIGxldCBncmFkaWVudCA9IHBhcnRpY2xlLnYuZ2V0R3JhZGllbnQoKTtcbiAgICBpZiAodGhpcy5hbmdsZSA9PT0gXCJyYW5kb21cIiB8fCB0aGlzLmFuZ2xlID09PSBcInNwYW5cIikge1xuICAgICAgZ3JhZGllbnQgKz0gcGFydGljbGUuZGF0YS5jYW5nbGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyYWRpZW50ICs9IHRoaXMuYW5nbGU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9yY2UgPT09IENIQU5HSU5HKSB7XG4gICAgICBsZW5ndGggPSBwYXJ0aWNsZS52Lmxlbmd0aCgpIC8gMTAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZW5ndGggPSB0aGlzLmZvcmNlO1xuICAgIH1cblxuICAgIHBhcnRpY2xlLmRhdGEuY3ljbG9uZS54ID0gbGVuZ3RoICogTWF0aC5jb3MoZ3JhZGllbnQpO1xuICAgIHBhcnRpY2xlLmRhdGEuY3ljbG9uZS55ID0gbGVuZ3RoICogTWF0aC5zaW4oZ3JhZGllbnQpO1xuICAgIHBhcnRpY2xlLmRhdGEuY3ljbG9uZSA9IHRoaXMubm9ybWFsaXplRm9yY2UocGFydGljbGUuZGF0YS5jeWNsb25lKTtcbiAgICBwYXJ0aWNsZS5hLmFkZChwYXJ0aWNsZS5kYXRhLmN5Y2xvbmUpO1xuICB9XG59XG4iLCJpbXBvcnQgQXR0cmFjdGlvbiBmcm9tIFwiLi9BdHRyYWN0aW9uXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlcHVsc2lvbiBleHRlbmRzIEF0dHJhY3Rpb24ge1xuICAvKipcbiAgICogVGhlIG9wcGlzaXRlIG9mIFByb3Rvbi5BdHRyYWN0aW9uIC0gdHVybnMgdGhlIGZvcmNlXG4gICAqXG4gICAqIEBtZW1iZXJvZiEgUHJvdG9uI1xuICAgKiBAYXVnbWVudHMgUHJvdG9uI1Byb3Rvbi5BdHRyYWN0aW9uXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAYWxpYXMgUHJvdG9uLlJlcHVsc2lvblxuICAgKlxuICAgKiBAdG9kbyBhZGQgZGVzY3JpcHRpb24gZm9yICdmb3JjZScgYW5kICdyYWRpdXMnXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvdG9uLlZlY3RvcjJEfSB0YXJnZXRQb3NpdGlvbiB0aGUgYXR0cmFjdGlvbiBwb2ludCBjb29yZGluYXRlc1xuICAgKiBAcGFyYW0ge051bWJlcn0gW2ZvcmNlPTEwMF1cbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtyYWRpdXM9MTAwMF1cbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XSBcdFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlLmVhc2VMaW5lYXJdIFx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICpcbiAgICogQHByb3BlcnR5IHtOdW1iZXJ9IGZvcmNlXG4gICAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBuYW1lIFRoZSBCZWhhdmlvdXIgbmFtZVxuICAgKi9cbiAgY29uc3RydWN0b3IodGFyZ2V0UG9zaXRpb24sIGZvcmNlLCByYWRpdXMsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKHRhcmdldFBvc2l0aW9uLCBmb3JjZSwgcmFkaXVzLCBsaWZlLCBlYXNpbmcpO1xuXG4gICAgdGhpcy5mb3JjZSAqPSAtMTtcbiAgICB0aGlzLm5hbWUgPSBcIlJlcHVsc2lvblwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jUHJvdG9uLlJlcHVsc2lvblxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHRvZG8gYWRkIGRlc2NyaXB0aW9uIGZvciAnZm9yY2UnIGFuZCAncmFkaXVzJ1xuICAgKlxuICAgKiBAcGFyYW0ge1Byb3Rvbi5WZWN0b3IyRH0gdGFyZ2V0UG9zaXRpb24gdGhlIGF0dHJhY3Rpb24gcG9pbnQgY29vcmRpbmF0ZXNcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtmb3JjZT0xMDBdXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbcmFkaXVzPTEwMDBdXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV0gXHRcdFx0XHR0aGlzIGJlaGF2aW91cidzIGxpZmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IFtlYXNpbmc9ZWFzZS5lYXNlTGluZWFyXSBcdHRoaXMgYmVoYXZpb3VyJ3MgZWFzaW5nXG4gICAqL1xuICByZXNldCh0YXJnZXRQb3NpdGlvbiwgZm9yY2UsIHJhZGl1cywgbGlmZSwgZWFzaW5nKSB7XG4gICAgc3VwZXIucmVzZXQodGFyZ2V0UG9zaXRpb24sIGZvcmNlLCByYWRpdXMsIGxpZmUsIGVhc2luZyk7XG4gICAgdGhpcy5mb3JjZSAqPSAtMTtcbiAgfVxufVxuIiwiaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBWZWN0b3IyRCBmcm9tIFwiLi4vbWF0aC9WZWN0b3IyRFwiO1xuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9CZWhhdmlvdXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR3Jhdml0eVdlbGwgZXh0ZW5kcyBCZWhhdmlvdXIge1xuICAvKipcbiAgICogQG1lbWJlcm9mISBQcm90b24jXG4gICAqIEBhdWdtZW50cyBCZWhhdmlvdXJcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBhbGlhcyBHcmF2aXR5V2VsbFxuICAgKlxuICAgKiBAcGFyYW0ge1ZlY3RvcjJEfSBbY2VudGVyUG9pbnQ9bmV3IFZlY3RvcjJEXSBUaGUgcG9pbnQgaW4gdGhlIGNlbnRlclxuICAgKiBAcGFyYW0ge051bWJlcn0gW2ZvcmNlPTEwMF1cdFx0XHRcdFx0VGhlIGZvcmNlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbGlmZT1JbmZpbml0eV1cdFx0XHRcdHRoaXMgYmVoYXZpb3VyJ3MgbGlmZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gW2Vhc2luZz1lYXNlTGluZWFyXVx0dGhpcyBiZWhhdmlvdXIncyBlYXNpbmdcbiAgICpcbiAgICogQHByb3BlcnR5IHtTdHJpbmd9IG5hbWUgVGhlIEJlaGF2aW91ciBuYW1lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjZW50ZXJQb2ludCwgZm9yY2UsIGxpZmUsIGVhc2luZykge1xuICAgIHN1cGVyKGxpZmUsIGVhc2luZyk7XG5cbiAgICB0aGlzLmRpc3RhbmNlVmVjID0gbmV3IFZlY3RvcjJEKCk7XG4gICAgdGhpcy5jZW50ZXJQb2ludCA9IFV0aWwuaW5pdFZhbHVlKGNlbnRlclBvaW50LCBuZXcgVmVjdG9yMkQoKSk7XG4gICAgdGhpcy5mb3JjZSA9IFV0aWwuaW5pdFZhbHVlKHRoaXMubm9ybWFsaXplVmFsdWUoZm9yY2UpLCAxMDApO1xuXG4gICAgdGhpcy5uYW1lID0gXCJHcmF2aXR5V2VsbFwiO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoaXMgYmVoYXZpb3VyJ3MgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAbWV0aG9kIHJlc2V0XG4gICAqIEBtZW1iZXJvZiBQcm90b24jR3Jhdml0eVdlbGxcbiAgICogQGluc3RhbmNlXG4gICAqXG4gICAqIEBwYXJhbSB7VmVjdG9yMkR9IFtjZW50ZXJQb2ludD1uZXcgVmVjdG9yMkRdIFRoZSBwb2ludCBpbiB0aGUgY2VudGVyXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbZm9yY2U9MTAwXVx0XHRcdFx0XHRUaGUgZm9yY2VcbiAgICogQHBhcmFtIHtOdW1iZXJ9IFtsaWZlPUluZmluaXR5XVx0XHRcdFx0dGhpcyBiZWhhdmlvdXIncyBsaWZlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBbZWFzaW5nPWVhc2VMaW5lYXJdXHR0aGlzIGJlaGF2aW91cidzIGVhc2luZ1xuICAgKi9cbiAgcmVzZXQoY2VudGVyUG9pbnQsIGZvcmNlLCBsaWZlLCBlYXNpbmcpIHtcbiAgICB0aGlzLmRpc3RhbmNlVmVjID0gbmV3IFZlY3RvcjJEKCk7XG4gICAgdGhpcy5jZW50ZXJQb2ludCA9IFV0aWwuaW5pdFZhbHVlKGNlbnRlclBvaW50LCBuZXcgVmVjdG9yMkQoKSk7XG4gICAgdGhpcy5mb3JjZSA9IFV0aWwuaW5pdFZhbHVlKHRoaXMubm9ybWFsaXplVmFsdWUoZm9yY2UpLCAxMDApO1xuXG4gICAgbGlmZSAmJiBzdXBlci5yZXNldChsaWZlLCBlYXNpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBpbml0aWFsaXplKHBhcnRpY2xlKSB7fVxuXG4gIC8qKlxuICAgKiBBcHBseSB0aGlzIGJlaGF2aW91ciBmb3IgYWxsIHBhcnRpY2xlcyBldmVyeSB0aW1lXG4gICAqXG4gICAqIEBtZXRob2QgYXBwbHlCZWhhdmlvdXJcbiAgICogQG1lbWJlcm9mIFByb3RvbiNHcmF2aXR5V2VsbFxuICAgKiBAaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtQYXJ0aWNsZX0gcGFydGljbGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHRoZSBpbnRlZ3JhdGUgdGltZSAxL21zXG4gICAqIEBwYXJhbSB7SW50fSB0aGUgcGFydGljbGUgaW5kZXhcbiAgICovXG4gIGFwcGx5QmVoYXZpb3VyKHBhcnRpY2xlLCB0aW1lLCBpbmRleCkge1xuICAgIHRoaXMuZGlzdGFuY2VWZWMuc2V0KHRoaXMuY2VudGVyUG9pbnQueCAtIHBhcnRpY2xlLnAueCwgdGhpcy5jZW50ZXJQb2ludC55IC0gcGFydGljbGUucC55KTtcbiAgICBjb25zdCBkaXN0YW5jZVNxID0gdGhpcy5kaXN0YW5jZVZlYy5sZW5ndGhTcSgpO1xuXG4gICAgaWYgKGRpc3RhbmNlU3EgIT09IDApIHtcbiAgICAgIGNvbnN0IGRpc3RhbmNlID0gdGhpcy5kaXN0YW5jZVZlYy5sZW5ndGgoKTtcbiAgICAgIGNvbnN0IGZhY3RvciA9ICh0aGlzLmZvcmNlICogdGltZSkgLyAoZGlzdGFuY2VTcSAqIGRpc3RhbmNlKTtcblxuICAgICAgcGFydGljbGUudi54ICs9IGZhY3RvciAqIHRoaXMuZGlzdGFuY2VWZWMueDtcbiAgICAgIHBhcnRpY2xlLnYueSArPSBmYWN0b3IgKiB0aGlzLmRpc3RhbmNlVmVjLnk7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgUHJvcFV0aWwgZnJvbSBcIi4uL3V0aWxzL1Byb3BVdGlsXCI7XG5pbXBvcnQgSW5pdGlhbGl6ZSBmcm9tIFwiLi9Jbml0aWFsaXplXCI7XG5pbXBvcnQgTWF0aFV0aWwgZnJvbSBcIi4uL21hdGgvTWF0aFV0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBpbml0aWFsaXplKGVtaXR0ZXIsIHBhcnRpY2xlLCBpbml0aWFsaXplcykge1xuICAgIGNvbnN0IGxlbmd0aCA9IGluaXRpYWxpemVzLmxlbmd0aDtcbiAgICBsZXQgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGluaXRpYWxpemVzW2ldIGluc3RhbmNlb2YgSW5pdGlhbGl6ZSkge1xuICAgICAgICBpbml0aWFsaXplc1tpXS5pbml0KGVtaXR0ZXIsIHBhcnRpY2xlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5pdChlbWl0dGVyLCBwYXJ0aWNsZSwgaW5pdGlhbGl6ZXNbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYmluZEVtaXR0ZXIoZW1pdHRlciwgcGFydGljbGUpO1xuICB9LFxuXG4gIC8vIGluaXRcbiAgaW5pdChlbWl0dGVyLCBwYXJ0aWNsZSwgaW5pdGlhbGl6ZSkge1xuICAgIFByb3BVdGlsLnNldFByb3AocGFydGljbGUsIGluaXRpYWxpemUpO1xuICAgIFByb3BVdGlsLnNldFZlY3RvclZhbChwYXJ0aWNsZSwgaW5pdGlhbGl6ZSk7XG4gIH0sXG5cbiAgYmluZEVtaXR0ZXIoZW1pdHRlciwgcGFydGljbGUpIHtcbiAgICBpZiAoZW1pdHRlci5iaW5kRW1pdHRlcikge1xuICAgICAgcGFydGljbGUucC5hZGQoZW1pdHRlci5wKTtcbiAgICAgIHBhcnRpY2xlLnYuYWRkKGVtaXR0ZXIudik7XG4gICAgICBwYXJ0aWNsZS5hLmFkZChlbWl0dGVyLmEpO1xuICAgICAgcGFydGljbGUudi5yb3RhdGUoTWF0aFV0aWwuZGVncmVlVHJhbnNmb3JtKGVtaXR0ZXIucm90YXRpb24pKTtcbiAgICB9XG4gIH1cbn07XG4iLCJpbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IFB1aWQgZnJvbSBcIi4uL3V0aWxzL1B1aWRcIjtcbmltcG9ydCBQYXJ0aWNsZSBmcm9tIFwiLi4vY29yZS9QYXJ0aWNsZVwiO1xuaW1wb3J0IEV2ZW50RGlzcGF0Y2hlciBmcm9tIFwiLi4vZXZlbnRzL0V2ZW50RGlzcGF0Y2hlclwiO1xuXG5pbXBvcnQgUmF0ZSBmcm9tIFwiLi4vaW5pdGlhbGl6ZS9SYXRlXCI7XG5pbXBvcnQgSW5pdGlhbGl6ZVV0aWwgZnJvbSBcIi4uL2luaXRpYWxpemUvSW5pdGlhbGl6ZVV0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW1pdHRlciBleHRlbmRzIFBhcnRpY2xlIHtcbiAgLyoqXG4gICAqIFlvdSBjYW4gdXNlIHRoaXMgZW1pdCBwYXJ0aWNsZXMuXG4gICAqXG4gICAqIEl0IHdpbGwgZGlzcGF0Y2ggZm9sbG93IGV2ZW50czpcbiAgICogUEFSVElDTEVfQ1JFQVRFRFxuICAgKiBQQVJUSUNMRV9VUERBVEFcbiAgICogUEFSVElDTEVfREVBRFxuICAgKlxuICAgKiBAY2xhc3MgRW1pdHRlclxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmYgdGhlIHBhcmFtZXRlcnMgb2JqZWN0O1xuICAgKiBmb3IgZXhhbXBsZSB7ZGFtcGluZzowLjAxLGJpbmRFbWl0dGVyOmZhbHNlfVxuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZiA9IHt9KSB7XG4gICAgc3VwZXIoY29uZik7XG5cbiAgICB0aGlzLnBhcnRpY2xlcyA9IFtdO1xuICAgIHRoaXMuYmVoYXZpb3VycyA9IFtdO1xuICAgIHRoaXMuaW5pdGlhbGl6ZXMgPSBbXTtcblxuICAgIHRoaXMuZW1pdFRpbWUgPSAwO1xuICAgIHRoaXMuZW1pdFNwZWVkID0gMDtcbiAgICB0aGlzLnRvdGFsVGltZSA9IC0xO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGZyaWN0aW9uIGNvZWZmaWNpZW50IGZvciBhbGwgcGFydGljbGUgZW1pdCBieSBUaGlzO1xuICAgICAqIEBwcm9wZXJ0eSBkYW1waW5nXG4gICAgICogQHR5cGUge051bWJlcn1cbiAgICAgKiBAZGVmYXVsdCAwLjAwNlxuICAgICAqL1xuICAgIHRoaXMuZGFtcGluZyA9IDAuMDA2O1xuXG4gICAgLyoqXG4gICAgICogSWYgYmluZEVtaXR0ZXIgdGhlIHBhcnRpY2xlcyBjYW4gYmluZCB0aGlzIGVtaXR0ZXIncyBwcm9wZXJ0eTtcbiAgICAgKiBAcHJvcGVydHkgYmluZEVtaXR0ZXJcbiAgICAgKiBAdHlwZSB7Qm9vbGVhbn1cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgdGhpcy5iaW5kRW1pdHRlciA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbnVtYmVyIG9mIHBhcnRpY2xlcyBwZXIgc2Vjb25kIGVtaXQgKGEgW3BhcnRpY2xlXS9iIFtzXSk7XG4gICAgICogQHByb3BlcnR5IHJhdGVcbiAgICAgKiBAdHlwZSB7UmF0ZX1cbiAgICAgKiBAZGVmYXVsdCBSYXRlKDEsIC4xKVxuICAgICAqL1xuICAgIHRoaXMucmF0ZSA9IG5ldyBSYXRlKDEsIDAuMSk7XG5cbiAgICB0aGlzLm5hbWUgPSBcIkVtaXR0ZXJcIjtcbiAgICB0aGlzLmlkID0gUHVpZC5pZCh0aGlzLm5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHN0YXJ0IGVtaXQgcGFydGljbGVcbiAgICogQG1ldGhvZCBlbWl0XG4gICAqIEBwYXJhbSB7TnVtYmVyfSBlbWl0VGltZSBiZWdpbiBlbWl0IHRpbWU7XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBsaWZlIHRoZSBsaWZlIG9mIHRoaXMgZW1pdHRlclxuICAgKi9cbiAgZW1pdCh0b3RhbFRpbWUsIGxpZmUpIHtcbiAgICB0aGlzLnN0b3BlZCA9IGZhbHNlO1xuICAgIHRoaXMuZW1pdFRpbWUgPSAwO1xuICAgIHRoaXMudG90YWxUaW1lID0gVXRpbC5pbml0VmFsdWUodG90YWxUaW1lLCBJbmZpbml0eSk7XG5cbiAgICBpZiAobGlmZSA9PT0gdHJ1ZSB8fCBsaWZlID09PSBcImxpZmVcIiB8fCBsaWZlID09PSBcImRlc3Ryb3lcIikge1xuICAgICAgdGhpcy5saWZlID0gdG90YWxUaW1lID09PSBcIm9uY2VcIiA/IDEgOiB0aGlzLnRvdGFsVGltZTtcbiAgICB9IGVsc2UgaWYgKCFpc05hTihsaWZlKSkge1xuICAgICAgdGhpcy5saWZlID0gbGlmZTtcbiAgICB9XG5cbiAgICB0aGlzLnJhdGUuaW5pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHN0b3AgZW1pdGluZ1xuICAgKiBAbWV0aG9kIHN0b3BcbiAgICovXG4gIHN0b3AoKSB7XG4gICAgdGhpcy50b3RhbFRpbWUgPSAtMTtcbiAgICB0aGlzLmVtaXRUaW1lID0gMDtcbiAgICB0aGlzLnN0b3BlZCA9IHRydWU7XG4gIH1cblxuICBwcmVFbWl0KHRpbWUpIHtcbiAgICBsZXQgb2xkU3RvcGVkID0gdGhpcy5zdG9wZWQ7XG4gICAgbGV0IG9sZEVtaXRUaW1lID0gdGhpcy5lbWl0VGltZTtcbiAgICBsZXQgb2xkVG90YWxUaW1lID0gdGhpcy50b3RhbFRpbWU7XG5cbiAgICB0aGlzLnN0b3BlZCA9IGZhbHNlO1xuICAgIHRoaXMuZW1pdFRpbWUgPSAwO1xuICAgIHRoaXMudG90YWxUaW1lID0gdGltZTtcbiAgICB0aGlzLnJhdGUuaW5pdCgpO1xuXG4gICAgY29uc3Qgc3RlcCA9IDAuMDE2NztcbiAgICB3aGlsZSAodGltZSA+IHN0ZXApIHtcbiAgICAgIHRpbWUgLT0gc3RlcDtcbiAgICAgIHRoaXMudXBkYXRlKHN0ZXApO1xuICAgIH1cblxuICAgIHRoaXMuc3RvcGVkID0gb2xkU3RvcGVkO1xuICAgIHRoaXMuZW1pdFRpbWUgPSBvbGRFbWl0VGltZSArIE1hdGgubWF4KHRpbWUsIDApO1xuICAgIHRoaXMudG90YWxUaW1lID0gb2xkVG90YWxUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIHJlbW92ZSBjdXJyZW50IGFsbCBwYXJ0aWNsZXNcbiAgICogQG1ldGhvZCByZW1vdmVBbGxQYXJ0aWNsZXNcbiAgICovXG4gIHJlbW92ZUFsbFBhcnRpY2xlcygpIHtcbiAgICBsZXQgaSA9IHRoaXMucGFydGljbGVzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB0aGlzLnBhcnRpY2xlc1tpXS5kZWFkID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGQgaW5pdGlhbGl6ZSB0byB0aGlzIGVtaXR0ZXJcbiAgICogQG1ldGhvZCBhZGRTZWxmSW5pdGlhbGl6ZVxuICAgKi9cbiAgYWRkU2VsZkluaXRpYWxpemUoaW5pdGlhbGl6ZSkge1xuICAgIGlmIChpbml0aWFsaXplW1wiaW5pdFwiXSkge1xuICAgICAgaW5pdGlhbGl6ZS5pbml0KHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0aGlzLmluaXRBbGwoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogYWRkIHRoZSBJbml0aWFsaXplIHRvIHBhcnRpY2xlcztcbiAgICpcbiAgICogeW91IGNhbiB1c2UgaW5pdGlhbGl6ZXMgYXJyYXk6Zm9yIGV4YW1wbGUgZW1pdHRlci5hZGRJbml0aWFsaXplKGluaXRpYWxpemUxLGluaXRpYWxpemUyLGluaXRpYWxpemUzKTtcbiAgICogQG1ldGhvZCBhZGRJbml0aWFsaXplXG4gICAqIEBwYXJhbSB7SW5pdGlhbGl6ZX0gaW5pdGlhbGl6ZSBsaWtlIHRoaXMgbmV3IFJhZGl1cygxLCAxMilcbiAgICovXG4gIGFkZEluaXRpYWxpemUoLi4ucmVzdCkge1xuICAgIGxldCBpID0gcmVzdC5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkgdGhpcy5pbml0aWFsaXplcy5wdXNoKHJlc3RbaV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIHJlbW92ZSB0aGUgSW5pdGlhbGl6ZVxuICAgKiBAbWV0aG9kIHJlbW92ZUluaXRpYWxpemVcbiAgICogQHBhcmFtIHtJbml0aWFsaXplfSBpbml0aWFsaXplIGEgaW5pdGlhbGl6ZVxuICAgKi9cbiAgcmVtb3ZlSW5pdGlhbGl6ZShpbml0aWFsaXplcikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbml0aWFsaXplcy5pbmRleE9mKGluaXRpYWxpemVyKTtcbiAgICBpZiAoaW5kZXggPiAtMSkgdGhpcy5pbml0aWFsaXplcy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIHJlbW92ZSBhbGwgSW5pdGlhbGl6ZXNcbiAgICogQG1ldGhvZCByZW1vdmVJbml0aWFsaXplcnNcbiAgICovXG4gIHJlbW92ZUFsbEluaXRpYWxpemVycygpIHtcbiAgICBVdGlsLmVtcHR5QXJyYXkodGhpcy5pbml0aWFsaXplcyk7XG4gIH1cblxuICAvKipcbiAgICogYWRkIHRoZSBCZWhhdmlvdXIgdG8gcGFydGljbGVzO1xuICAgKlxuICAgKiB5b3UgY2FuIHVzZSBCZWhhdmlvdXJzIGFycmF5OmVtaXR0ZXIuYWRkQmVoYXZpb3VyKEJlaGF2aW91cjEsQmVoYXZpb3VyMixCZWhhdmlvdXIzKTtcbiAgICogQG1ldGhvZCBhZGRCZWhhdmlvdXJcbiAgICogQHBhcmFtIHtCZWhhdmlvdXJ9IGJlaGF2aW91ciBsaWtlIHRoaXMgbmV3IENvbG9yKCdyYW5kb20nKVxuICAgKi9cbiAgYWRkQmVoYXZpb3VyKC4uLnJlc3QpIHtcbiAgICBsZXQgaSA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgbGV0IGJlaGF2aW91ciA9IHJlc3RbaV07XG4gICAgICB0aGlzLmJlaGF2aW91cnMucHVzaChiZWhhdmlvdXIpO1xuICAgICAgaWYgKGJlaGF2aW91ci5wYXJlbnRzKSBiZWhhdmlvdXIucGFyZW50cy5wdXNoKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiByZW1vdmUgdGhlIEJlaGF2aW91clxuICAgKiBAbWV0aG9kIHJlbW92ZUJlaGF2aW91clxuICAgKiBAcGFyYW0ge0JlaGF2aW91cn0gYmVoYXZpb3VyIGEgYmVoYXZpb3VyXG4gICAqL1xuICByZW1vdmVCZWhhdmlvdXIoYmVoYXZpb3VyKSB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy5iZWhhdmlvdXJzLmluZGV4T2YoYmVoYXZpb3VyKTtcbiAgICB0aGlzLmJlaGF2aW91cnMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIGlmIChiZWhhdmlvdXIucGFyZW50cykge1xuICAgICAgaW5kZXggPSBiZWhhdmlvdXIucGFyZW50cy5pbmRleE9mKGJlaGF2aW91cik7XG4gICAgICBiZWhhdmlvdXIucGFyZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiByZW1vdmUgYWxsIGJlaGF2aW91cnNcbiAgICogQG1ldGhvZCByZW1vdmVBbGxCZWhhdmlvdXJzXG4gICAqL1xuICByZW1vdmVBbGxCZWhhdmlvdXJzKCkge1xuICAgIFV0aWwuZW1wdHlBcnJheSh0aGlzLmJlaGF2aW91cnMpO1xuICB9XG5cbiAgLy8gZW1pdHRlciB1cGRhdGVcbiAgdXBkYXRlKHRpbWUpIHtcbiAgICB0aGlzLmFnZSArPSB0aW1lO1xuICAgIGlmICh0aGlzLmFnZSA+PSB0aGlzLmxpZmUgfHwgdGhpcy5kZWFkKSB0aGlzLmRlc3Ryb3koKTtcblxuICAgIHRoaXMuZW1pdHRpbmcodGltZSk7XG4gICAgdGhpcy5pbnRlZ3JhdGUodGltZSk7XG4gIH1cblxuICBpbnRlZ3JhdGUodGltZSkge1xuICAgIGlmICghdGhpcy5wYXJlbnQpIHJldHVybjtcblxuICAgIGNvbnN0IGRhbXBpbmcgPSAxIC0gdGhpcy5kYW1waW5nO1xuICAgIHRoaXMucGFyZW50LmludGVncmF0b3IuY2FsY3VsYXRlKHRoaXMsIHRpbWUsIGRhbXBpbmcpO1xuXG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5wYXJ0aWNsZXMubGVuZ3RoO1xuICAgIGxldCBpLCBwYXJ0aWNsZTtcblxuICAgIGZvciAoaSA9IGxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBwYXJ0aWNsZSA9IHRoaXMucGFydGljbGVzW2ldO1xuXG4gICAgICAvLyBwYXJ0aWNsZSB1cGRhdGVcbiAgICAgIHBhcnRpY2xlLnVwZGF0ZSh0aW1lLCBpKTtcbiAgICAgIHRoaXMucGFyZW50LmludGVncmF0b3IuY2FsY3VsYXRlKHBhcnRpY2xlLCB0aW1lLCBkYW1waW5nKTtcbiAgICAgIHRoaXMuZGlzcGF0Y2goXCJQQVJUSUNMRV9VUERBVEVcIiwgcGFydGljbGUpO1xuXG4gICAgICAvLyBjaGVjayBkZWFkXG4gICAgICBpZiAocGFydGljbGUuZGVhZCkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKFwiUEFSVElDTEVfREVBRFwiLCBwYXJ0aWNsZSk7XG5cbiAgICAgICAgdGhpcy5wYXJlbnQucG9vbC5leHBpcmUocGFydGljbGUpO1xuICAgICAgICB0aGlzLnBhcnRpY2xlcy5zcGxpY2UoaSwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZGlzcGF0Y2goZXZlbnQsIHRhcmdldCkge1xuICAgIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQsIHRhcmdldCk7XG4gICAgdGhpcy5iaW5kRXZlbnQgJiYgdGhpcy5kaXNwYXRjaEV2ZW50KGV2ZW50LCB0YXJnZXQpO1xuICB9XG5cbiAgZW1pdHRpbmcodGltZSkge1xuICAgIGlmICh0aGlzLnRvdGFsVGltZSA9PT0gXCJvbmNlXCIpIHtcbiAgICAgIGxldCBpO1xuICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5yYXRlLmdldFZhbHVlKDk5OTk5KTtcblxuICAgICAgaWYgKGxlbmd0aCA+IDApIHRoaXMuZW1pdFNwZWVkID0gbGVuZ3RoO1xuICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB0aGlzLmNyZWF0ZVBhcnRpY2xlKCk7XG4gICAgICB0aGlzLnRvdGFsVGltZSA9IFwibm9uZVwiO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVtaXRUaW1lICs9IHRpbWU7XG5cbiAgICAgIGlmICh0aGlzLmVtaXRUaW1lIDwgdGhpcy50b3RhbFRpbWUpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdGhpcy5yYXRlLmdldFZhbHVlKHRpbWUpO1xuICAgICAgICBsZXQgaTtcblxuICAgICAgICBpZiAobGVuZ3RoID4gMCkgdGhpcy5lbWl0U3BlZWQgPSBsZW5ndGg7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgdGhpcy5jcmVhdGVQYXJ0aWNsZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBjcmVhdGUgc2luZ2xlIHBhcnRpY2xlO1xuICAgKlxuICAgKiBjYW4gdXNlIGVtaXQoe3g6MTB9LG5ldyBHcmF2aXR5KDEwKSx7J3BhcnRpY2xlVXBkYXRlJyxmdW59KSBvciBlbWl0KFt7eDoxMH0sbmV3IEluaXRpYWxpemVdLG5ldyBHcmF2aXR5KDEwKSx7J3BhcnRpY2xlVXBkYXRlJyxmdW59KVxuICAgKiBAbWV0aG9kIHJlbW92ZUFsbFBhcnRpY2xlc1xuICAgKi9cbiAgY3JlYXRlUGFydGljbGUoaW5pdGlhbGl6ZSwgYmVoYXZpb3VyKSB7XG4gICAgY29uc3QgcGFydGljbGUgPSB0aGlzLnBhcmVudC5wb29sLmdldChQYXJ0aWNsZSk7XG4gICAgdGhpcy5zZXR1cFBhcnRpY2xlKHBhcnRpY2xlLCBpbml0aWFsaXplLCBiZWhhdmlvdXIpO1xuICAgIHRoaXMuZGlzcGF0Y2goXCJQQVJUSUNMRV9DUkVBVEVEXCIsIHBhcnRpY2xlKTtcblxuICAgIHJldHVybiBwYXJ0aWNsZTtcbiAgfVxuXG4gIHNldHVwUGFydGljbGUocGFydGljbGUsIGluaXRpYWxpemUsIGJlaGF2aW91cikge1xuICAgIGxldCBpbml0aWFsaXplcyA9IHRoaXMuaW5pdGlhbGl6ZXM7XG4gICAgbGV0IGJlaGF2aW91cnMgPSB0aGlzLmJlaGF2aW91cnM7XG5cbiAgICBpZiAoaW5pdGlhbGl6ZSkgaW5pdGlhbGl6ZXMgPSBVdGlsLnRvQXJyYXkoaW5pdGlhbGl6ZSk7XG4gICAgaWYgKGJlaGF2aW91cikgYmVoYXZpb3VycyA9IFV0aWwudG9BcnJheShiZWhhdmlvdXIpO1xuXG4gICAgcGFydGljbGUucmVzZXQoKTtcbiAgICBJbml0aWFsaXplVXRpbC5pbml0aWFsaXplKHRoaXMsIHBhcnRpY2xlLCBpbml0aWFsaXplcyk7XG4gICAgcGFydGljbGUuYWRkQmVoYXZpb3VycyhiZWhhdmlvdXJzKTtcbiAgICBwYXJ0aWNsZS5wYXJlbnQgPSB0aGlzO1xuXG4gICAgdGhpcy5wYXJ0aWNsZXMucHVzaChwYXJ0aWNsZSk7XG4gIH1cblxuICByZW1vdmUoKSB7XG4gICAgdGhpcy5zdG9wKCk7XG4gICAgVXRpbC5kZXN0cm95QWxsKHRoaXMucGFydGljbGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0b3J5IHRoaXMgRW1pdHRlclxuICAgKiBAbWV0aG9kIGRlc3Ryb3lcbiAgICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZWFkID0gdHJ1ZTtcbiAgICB0aGlzLnJlbW92ZSgpO1xuICAgIHRoaXMucmVtb3ZlQWxsSW5pdGlhbGl6ZXJzKCk7XG4gICAgdGhpcy5yZW1vdmVBbGxCZWhhdmlvdXJzKCk7XG4gICAgdGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQucmVtb3ZlRW1pdHRlcih0aGlzKTtcblxuICAgIHRoaXMucmF0ZSA9IG51bGw7XG4gICAgdGhpcy5vbGQgPSBudWxsO1xuICAgIHRoaXMucmdiID0gbnVsbDtcbiAgICB0aGlzLnYgPSBudWxsO1xuICAgIHRoaXMuYSA9IG51bGw7XG4gICAgdGhpcy5wID0gbnVsbDtcbiAgfVxufVxuXG5FdmVudERpc3BhdGNoZXIuYmluZChFbWl0dGVyKTtcbiIsImltcG9ydCBFbWl0dGVyIGZyb20gXCIuL0VtaXR0ZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmVoYXZpb3VyRW1pdHRlciBleHRlbmRzIEVtaXR0ZXIge1xuICAvKipcbiAgICogVGhlIEJlaGF2aW91ckVtaXR0ZXIgY2xhc3MgaW5oZXJpdHMgZnJvbSBQcm90b24uRW1pdHRlclxuICAgKlxuICAgKiB1c2UgdGhlIEJlaGF2aW91ckVtaXR0ZXIgeW91IGNhbiBhZGQgYmVoYXZpb3VycyB0byBzZWxmO1xuICAgKiBAY2xhc3MgUHJvdG9uLkJlaGF2aW91ckVtaXR0ZXJcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25mIHRoZSBwYXJhbWV0ZXJzIG9iamVjdDtcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmYpIHtcbiAgICBzdXBlcihjb25mKTtcblxuICAgIHRoaXMuc2VsZkJlaGF2aW91cnMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGQgdGhlIEJlaGF2aW91ciB0byBlbWl0dGVyO1xuICAgKlxuICAgKiB5b3UgY2FuIHVzZSBCZWhhdmlvdXJzIGFycmF5OmVtaXR0ZXIuYWRkU2VsZkJlaGF2aW91cihCZWhhdmlvdXIxLEJlaGF2aW91cjIsQmVoYXZpb3VyMyk7XG4gICAqIEBtZXRob2QgYWRkU2VsZkJlaGF2aW91clxuICAgKiBAcGFyYW0ge1Byb3Rvbi5CZWhhdmlvdXJ9IGJlaGF2aW91ciBsaWtlIHRoaXMgbmV3IFByb3Rvbi5Db2xvcigncmFuZG9tJylcbiAgICovXG4gIGFkZFNlbGZCZWhhdmlvdXIoLi4ucmVzdCkge1xuICAgIGxldCBpLFxuICAgICAgbGVuZ3RoID0gcmVzdC5sZW5ndGg7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBiZWhhdmlvdXIgPSByZXN0W2ldO1xuICAgICAgdGhpcy5zZWxmQmVoYXZpb3Vycy5wdXNoKGJlaGF2aW91cik7XG4gICAgICBiZWhhdmlvdXIuaW5pdGlhbGl6ZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogcmVtb3ZlIHRoZSBCZWhhdmlvdXIgZm9yIHNlbGZcbiAgICogQG1ldGhvZCByZW1vdmVTZWxmQmVoYXZpb3VyXG4gICAqIEBwYXJhbSB7UHJvdG9uLkJlaGF2aW91cn0gYmVoYXZpb3VyIGEgYmVoYXZpb3VyXG4gICAqL1xuICByZW1vdmVTZWxmQmVoYXZpb3VyKGJlaGF2aW91cikge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxmQmVoYXZpb3Vycy5pbmRleE9mKGJlaGF2aW91cik7XG4gICAgaWYgKGluZGV4ID4gLTEpIHRoaXMuc2VsZkJlaGF2aW91cnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIHVwZGF0ZSh0aW1lKSB7XG4gICAgc3VwZXIudXBkYXRlKHRpbWUpO1xuXG4gICAgaWYgKCF0aGlzLnNsZWVwKSB7XG4gICAgICBjb25zdCBsZW5ndGggPSB0aGlzLnNlbGZCZWhhdmlvdXJzLmxlbmd0aDtcbiAgICAgIGxldCBpO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy5zZWxmQmVoYXZpb3Vyc1tpXS5hcHBseUJlaGF2aW91cih0aGlzLCB0aW1lLCBpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBVdGlsIGZyb20gXCIuLi91dGlscy9VdGlsXCI7XG5pbXBvcnQgRW1pdHRlciBmcm9tIFwiLi9FbWl0dGVyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZvbGxvd0VtaXR0ZXIgZXh0ZW5kcyBFbWl0dGVyIHtcbiAgLyoqXG4gICAqIFRoZSBGb2xsb3dFbWl0dGVyIGNsYXNzIGluaGVyaXRzIGZyb20gUHJvdG9uLkVtaXR0ZXJcbiAgICpcbiAgICogdXNlIHRoZSBGb2xsb3dFbWl0dGVyIHdpbGwgZW1pdCBwYXJ0aWNsZSB3aGVuIG1vdXNlbW92aW5nXG4gICAqXG4gICAqIEBjbGFzcyBQcm90b24uRm9sbG93RW1pdHRlclxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtFbGVtZW50fSBtb3VzZVRhcmdldCBtb3VzZWV2ZW50J3MgdGFyZ2V0O1xuICAgKiBAcGFyYW0ge051bWJlcn0gZWFzZSB0aGUgZWFzaW5nIG9mIGZvbGxvd2luZyBzcGVlZDtcbiAgICogQGRlZmF1bHQgMC43XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25mIHRoZSBwYXJhbWV0ZXJzIG9iamVjdDtcbiAgICovXG4gIGNvbnN0cnVjdG9yKG1vdXNlVGFyZ2V0LCBlYXNlLCBjb25mKSB7XG4gICAgc3VwZXIoY29uZik7XG5cbiAgICB0aGlzLm1vdXNlVGFyZ2V0ID0gVXRpbC5pbml0VmFsdWUobW91c2VUYXJnZXQsIHdpbmRvdyk7XG4gICAgdGhpcy5lYXNlID0gVXRpbC5pbml0VmFsdWUoZWFzZSwgMC43KTtcblxuICAgIHRoaXMuX2FsbG93RW1pdHRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmluaXRFdmVudEhhbmRsZXIoKTtcbiAgfVxuXG4gIGluaXRFdmVudEhhbmRsZXIoKSB7XG4gICAgdGhpcy5tb3VzZW1vdmVIYW5kbGVyID0gZSA9PiB0aGlzLm1vdXNlbW92ZS5jYWxsKHRoaXMsIGUpO1xuICAgIHRoaXMubW91c2Vkb3duSGFuZGxlciA9IGUgPT4gdGhpcy5tb3VzZWRvd24uY2FsbCh0aGlzLCBlKTtcbiAgICB0aGlzLm1vdXNldXBIYW5kbGVyID0gZSA9PiB0aGlzLm1vdXNldXAuY2FsbCh0aGlzLCBlKTtcbiAgICB0aGlzLm1vdXNlVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIiwgdGhpcy5tb3VzZW1vdmVIYW5kbGVyLCBmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogc3RhcnQgZW1pdCBwYXJ0aWNsZVxuICAgKiBAbWV0aG9kIGVtaXRcbiAgICovXG4gIGVtaXQoKSB7XG4gICAgdGhpcy5fYWxsb3dFbWl0dGluZyA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogc3RvcCBlbWl0aW5nXG4gICAqIEBtZXRob2Qgc3RvcFxuICAgKi9cbiAgc3RvcCgpIHtcbiAgICB0aGlzLl9hbGxvd0VtaXR0aW5nID0gZmFsc2U7XG4gIH1cblxuICBtb3VzZW1vdmUoZSkge1xuICAgIGlmIChlLmxheWVyWCB8fCBlLmxheWVyWCA9PT0gMCkge1xuICAgICAgdGhpcy5wLnggKz0gKGUubGF5ZXJYIC0gdGhpcy5wLngpICogdGhpcy5lYXNlO1xuICAgICAgdGhpcy5wLnkgKz0gKGUubGF5ZXJZIC0gdGhpcy5wLnkpICogdGhpcy5lYXNlO1xuICAgIH0gZWxzZSBpZiAoZS5vZmZzZXRYIHx8IGUub2Zmc2V0WCA9PT0gMCkge1xuICAgICAgdGhpcy5wLnggKz0gKGUub2Zmc2V0WCAtIHRoaXMucC54KSAqIHRoaXMuZWFzZTtcbiAgICAgIHRoaXMucC55ICs9IChlLm9mZnNldFkgLSB0aGlzLnAueSkgKiB0aGlzLmVhc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2FsbG93RW1pdHRpbmcpIHN1cGVyLmVtaXQoXCJvbmNlXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3RvcnkgdGhpcyBFbWl0dGVyXG4gICAqIEBtZXRob2QgZGVzdHJveVxuICAgKi9cbiAgZGVzdHJveSgpIHtcbiAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgdGhpcy5tb3VzZVRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRoaXMubW91c2Vtb3ZlSGFuZGxlciwgZmFsc2UpO1xuICB9XG59XG4iLCJleHBvcnQgZGVmYXVsdCB7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciBpdCBpcyBhIHBpY3R1cmUgb2JqZWN0XG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IGlzIG9yIG5vXG4gICAqL1xuICBpc0ltYWdlKG9iaikge1xuICAgIGlmICghb2JqKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKG9iai5fX2lzSW1hZ2UpIHJldHVybiB0cnVlO1xuXG4gICAgY29uc3QgdGFnTmFtZSA9IGAke29iai50YWdOYW1lfWAudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBub2RlTmFtZSA9IGAke29iai5ub2RlTmFtZX1gLnRvVXBwZXJDYXNlKCk7XG4gICAgaWYgKG5vZGVOYW1lID09PSBcIklNR1wiIHx8IHRhZ05hbWUgPT09IFwiSU1HXCIpIHtcbiAgICAgIG9iai5fX2lzSW1hZ2UgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgd2hldGhlciBpdCBpcyBhIHN0cmluZyBvYmplY3RcbiAgICpcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gaXMgb3Igbm9cbiAgICovXG4gIGlzU3RyaW5nKG9iaikge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiO1xuICB9XG59O1xuIiwiaW1wb3J0IFBvb2wgZnJvbSBcIi4uL2NvcmUvUG9vbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYXNlUmVuZGVyZXIge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBzdHJva2UpIHtcbiAgICB0aGlzLnBvb2wgPSBuZXcgUG9vbCgpO1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5zdHJva2UgPSBzdHJva2U7XG4gICAgdGhpcy5jaXJjbGVDb25mID0geyBpc0NpcmNsZTogdHJ1ZSB9O1xuXG4gICAgdGhpcy5pbml0RXZlbnRIYW5kbGVyKCk7XG4gICAgdGhpcy5uYW1lID0gXCJCYXNlUmVuZGVyZXJcIjtcbiAgfVxuXG4gIHNldFN0cm9rZShjb2xvciA9IFwiIzAwMDAwMFwiLCB0aGlua25lc3MgPSAxKSB7XG4gICAgdGhpcy5zdHJva2UgPSB7IGNvbG9yLCB0aGlua25lc3MgfTtcbiAgfVxuXG4gIGluaXRFdmVudEhhbmRsZXIoKSB7XG4gICAgdGhpcy5fcHJvdG9uVXBkYXRlSGFuZGxlciA9ICgpID0+IHtcbiAgICAgIHRoaXMub25Qcm90b25VcGRhdGUuY2FsbCh0aGlzKTtcbiAgICB9O1xuXG4gICAgdGhpcy5fcHJvdG9uVXBkYXRlQWZ0ZXJIYW5kbGVyID0gKCkgPT4ge1xuICAgICAgdGhpcy5vblByb3RvblVwZGF0ZUFmdGVyLmNhbGwodGhpcyk7XG4gICAgfTtcblxuICAgIHRoaXMuX2VtaXR0ZXJBZGRlZEhhbmRsZXIgPSBlbWl0dGVyID0+IHtcbiAgICAgIHRoaXMub25FbWl0dGVyQWRkZWQuY2FsbCh0aGlzLCBlbWl0dGVyKTtcbiAgICB9O1xuXG4gICAgdGhpcy5fZW1pdHRlclJlbW92ZWRIYW5kbGVyID0gZW1pdHRlciA9PiB7XG4gICAgICB0aGlzLm9uRW1pdHRlclJlbW92ZWQuY2FsbCh0aGlzLCBlbWl0dGVyKTtcbiAgICB9O1xuXG4gICAgdGhpcy5fcGFydGljbGVDcmVhdGVkSGFuZGxlciA9IHBhcnRpY2xlID0+IHtcbiAgICAgIHRoaXMub25QYXJ0aWNsZUNyZWF0ZWQuY2FsbCh0aGlzLCBwYXJ0aWNsZSk7XG4gICAgfTtcblxuICAgIHRoaXMuX3BhcnRpY2xlVXBkYXRlSGFuZGxlciA9IHBhcnRpY2xlID0+IHtcbiAgICAgIHRoaXMub25QYXJ0aWNsZVVwZGF0ZS5jYWxsKHRoaXMsIHBhcnRpY2xlKTtcbiAgICB9O1xuXG4gICAgdGhpcy5fcGFydGljbGVEZWFkSGFuZGxlciA9IHBhcnRpY2xlID0+IHtcbiAgICAgIHRoaXMub25QYXJ0aWNsZURlYWQuY2FsbCh0aGlzLCBwYXJ0aWNsZSk7XG4gICAgfTtcbiAgfVxuXG4gIGluaXQocHJvdG9uKSB7XG4gICAgdGhpcy5wYXJlbnQgPSBwcm90b247XG5cbiAgICBwcm90b24uYWRkRXZlbnRMaXN0ZW5lcihcIlBST1RPTl9VUERBVEVcIiwgdGhpcy5fcHJvdG9uVXBkYXRlSGFuZGxlcik7XG4gICAgcHJvdG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJQUk9UT05fVVBEQVRFX0FGVEVSXCIsIHRoaXMuX3Byb3RvblVwZGF0ZUFmdGVySGFuZGxlcik7XG5cbiAgICBwcm90b24uYWRkRXZlbnRMaXN0ZW5lcihcIkVNSVRURVJfQURERURcIiwgdGhpcy5fZW1pdHRlckFkZGVkSGFuZGxlcik7XG4gICAgcHJvdG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJFTUlUVEVSX1JFTU9WRURcIiwgdGhpcy5fZW1pdHRlclJlbW92ZWRIYW5kbGVyKTtcblxuICAgIHByb3Rvbi5hZGRFdmVudExpc3RlbmVyKFwiUEFSVElDTEVfQ1JFQVRFRFwiLCB0aGlzLl9wYXJ0aWNsZUNyZWF0ZWRIYW5kbGVyKTtcbiAgICBwcm90b24uYWRkRXZlbnRMaXN0ZW5lcihcIlBBUlRJQ0xFX1VQREFURVwiLCB0aGlzLl9wYXJ0aWNsZVVwZGF0ZUhhbmRsZXIpO1xuICAgIHByb3Rvbi5hZGRFdmVudExpc3RlbmVyKFwiUEFSVElDTEVfREVBRFwiLCB0aGlzLl9wYXJ0aWNsZURlYWRIYW5kbGVyKTtcbiAgfVxuXG4gIHJlc2l6ZSh3aWR0aCwgaGVpZ2h0KSB7fVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZW1vdmUoKTtcbiAgICB0aGlzLnBvb2wuZGVzdHJveSgpO1xuICAgIHRoaXMucG9vbCA9IG51bGw7XG4gICAgdGhpcy5lbGVtZW50ID0gbnVsbDtcbiAgICB0aGlzLnN0cm9rZSA9IG51bGw7XG4gIH1cblxuICByZW1vdmUocHJvdG9uKSB7XG4gICAgdGhpcy5wYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIlBST1RPTl9VUERBVEVcIiwgdGhpcy5fcHJvdG9uVXBkYXRlSGFuZGxlcik7XG4gICAgdGhpcy5wYXJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIlBST1RPTl9VUERBVEVfQUZURVJcIiwgdGhpcy5fcHJvdG9uVXBkYXRlQWZ0ZXJIYW5kbGVyKTtcblxuICAgIHRoaXMucGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJFTUlUVEVSX0FEREVEXCIsIHRoaXMuX2VtaXR0ZXJBZGRlZEhhbmRsZXIpO1xuICAgIHRoaXMucGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJFTUlUVEVSX1JFTU9WRURcIiwgdGhpcy5fZW1pdHRlclJlbW92ZWRIYW5kbGVyKTtcblxuICAgIHRoaXMucGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJQQVJUSUNMRV9DUkVBVEVEXCIsIHRoaXMuX3BhcnRpY2xlQ3JlYXRlZEhhbmRsZXIpO1xuICAgIHRoaXMucGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJQQVJUSUNMRV9VUERBVEVcIiwgdGhpcy5fcGFydGljbGVVcGRhdGVIYW5kbGVyKTtcbiAgICB0aGlzLnBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiUEFSVElDTEVfREVBRFwiLCB0aGlzLl9wYXJ0aWNsZURlYWRIYW5kbGVyKTtcblxuICAgIHRoaXMucGFyZW50ID0gbnVsbDtcbiAgfVxuXG4gIG9uUHJvdG9uVXBkYXRlKCkge31cbiAgb25Qcm90b25VcGRhdGVBZnRlcigpIHt9XG5cbiAgb25FbWl0dGVyQWRkZWQoZW1pdHRlcikge31cbiAgb25FbWl0dGVyUmVtb3ZlZChlbWl0dGVyKSB7fVxuXG4gIG9uUGFydGljbGVDcmVhdGVkKHBhcnRpY2xlKSB7fVxuICBvblBhcnRpY2xlVXBkYXRlKHBhcnRpY2xlKSB7fVxuICBvblBhcnRpY2xlRGVhZChwYXJ0aWNsZSkge31cbn1cbiIsImltcG9ydCBUeXBlcyBmcm9tIFwiLi4vdXRpbHMvVHlwZXNcIjtcbmltcG9ydCBJbWdVdGlsIGZyb20gXCIuLi91dGlscy9JbWdVdGlsXCI7XG5pbXBvcnQgQ29sb3JVdGlsIGZyb20gXCIuLi91dGlscy9Db2xvclV0aWxcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuaW1wb3J0IEJhc2VSZW5kZXJlciBmcm9tIFwiLi9CYXNlUmVuZGVyZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FudmFzUmVuZGVyZXIgZXh0ZW5kcyBCYXNlUmVuZGVyZXIge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50KSB7XG4gICAgc3VwZXIoZWxlbWVudCk7XG5cbiAgICB0aGlzLnN0cm9rZSA9IG51bGw7XG4gICAgdGhpcy5jb250ZXh0ID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoXCIyZFwiKTtcbiAgICB0aGlzLmJ1ZmZlckNhY2hlID0ge307XG4gICAgdGhpcy5uYW1lID0gXCJDYW52YXNSZW5kZXJlclwiO1xuICB9XG5cbiAgcmVzaXplKHdpZHRoLCBoZWlnaHQpIHtcbiAgICB0aGlzLmVsZW1lbnQud2lkdGggPSB3aWR0aDtcbiAgICB0aGlzLmVsZW1lbnQuaGVpZ2h0ID0gaGVpZ2h0O1xuICB9XG5cbiAgb25Qcm90b25VcGRhdGUoKSB7XG4gICAgdGhpcy5jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLmVsZW1lbnQud2lkdGgsIHRoaXMuZWxlbWVudC5oZWlnaHQpO1xuICB9XG5cbiAgb25QYXJ0aWNsZUNyZWF0ZWQocGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUuYm9keSkge1xuICAgICAgSW1nVXRpbC5nZXRJbWdGcm9tQ2FjaGUocGFydGljbGUuYm9keSwgdGhpcy5hZGRJbWcyQm9keSwgcGFydGljbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0aWNsZS5jb2xvciA9IHBhcnRpY2xlLmNvbG9yIHx8IFwiI2ZmMDAwMFwiO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFydGljbGVVcGRhdGUocGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUuYm9keSkge1xuICAgICAgaWYgKFR5cGVzLmlzSW1hZ2UocGFydGljbGUuYm9keSkpIHtcbiAgICAgICAgdGhpcy5kcmF3SW1hZ2UocGFydGljbGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRyYXdDaXJjbGUocGFydGljbGUpO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7XG4gICAgcGFydGljbGUuYm9keSA9IG51bGw7XG4gIH1cblxuICAvLyBwcml2YXRlIG1ldGhvZFxuICBhZGRJbWcyQm9keShpbWcsIHBhcnRpY2xlKSB7XG4gICAgcGFydGljbGUuYm9keSA9IGltZztcbiAgfVxuXG4gIC8vIHByaXZhdGUgZHJhd0ltYWdlIG1ldGhvZFxuICBkcmF3SW1hZ2UocGFydGljbGUpIHtcbiAgICBjb25zdCB3ID0gKHBhcnRpY2xlLmJvZHkud2lkdGggKiBwYXJ0aWNsZS5zY2FsZSkgfCAwO1xuICAgIGNvbnN0IGggPSAocGFydGljbGUuYm9keS5oZWlnaHQgKiBwYXJ0aWNsZS5zY2FsZSkgfCAwO1xuICAgIGNvbnN0IHggPSBwYXJ0aWNsZS5wLnggLSB3IC8gMjtcbiAgICBjb25zdCB5ID0gcGFydGljbGUucC55IC0gaCAvIDI7XG5cbiAgICBpZiAoISFwYXJ0aWNsZS5jb2xvcikge1xuICAgICAgaWYgKCFwYXJ0aWNsZS5kYXRhW1wiYnVmZmVyXCJdKSBwYXJ0aWNsZS5kYXRhLmJ1ZmZlciA9IHRoaXMuY3JlYXRlQnVmZmVyKHBhcnRpY2xlLmJvZHkpO1xuXG4gICAgICBjb25zdCBidWZDb250ZXh0ID0gcGFydGljbGUuZGF0YS5idWZmZXIuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgICAgYnVmQ29udGV4dC5jbGVhclJlY3QoMCwgMCwgcGFydGljbGUuZGF0YS5idWZmZXIud2lkdGgsIHBhcnRpY2xlLmRhdGEuYnVmZmVyLmhlaWdodCk7XG4gICAgICBidWZDb250ZXh0Lmdsb2JhbEFscGhhID0gcGFydGljbGUuYWxwaGE7XG4gICAgICBidWZDb250ZXh0LmRyYXdJbWFnZShwYXJ0aWNsZS5ib2R5LCAwLCAwKTtcblxuICAgICAgYnVmQ29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBcInNvdXJjZS1hdG9wXCI7XG4gICAgICBidWZDb250ZXh0LmZpbGxTdHlsZSA9IENvbG9yVXRpbC5yZ2JUb0hleChwYXJ0aWNsZS5yZ2IpO1xuICAgICAgYnVmQ29udGV4dC5maWxsUmVjdCgwLCAwLCBwYXJ0aWNsZS5kYXRhLmJ1ZmZlci53aWR0aCwgcGFydGljbGUuZGF0YS5idWZmZXIuaGVpZ2h0KTtcbiAgICAgIGJ1ZkNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gXCJzb3VyY2Utb3ZlclwiO1xuICAgICAgYnVmQ29udGV4dC5nbG9iYWxBbHBoYSA9IDE7XG5cbiAgICAgIHRoaXMuY29udGV4dC5kcmF3SW1hZ2UoXG4gICAgICAgIHBhcnRpY2xlLmRhdGEuYnVmZmVyLFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICBwYXJ0aWNsZS5kYXRhLmJ1ZmZlci53aWR0aCxcbiAgICAgICAgcGFydGljbGUuZGF0YS5idWZmZXIuaGVpZ2h0LFxuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB3LFxuICAgICAgICBoXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbnRleHQuc2F2ZSgpO1xuXG4gICAgICB0aGlzLmNvbnRleHQuZ2xvYmFsQWxwaGEgPSBwYXJ0aWNsZS5hbHBoYTtcbiAgICAgIHRoaXMuY29udGV4dC50cmFuc2xhdGUocGFydGljbGUucC54LCBwYXJ0aWNsZS5wLnkpO1xuICAgICAgdGhpcy5jb250ZXh0LnJvdGF0ZShNYXRoVXRpbC5kZWdyZWVUcmFuc2Zvcm0ocGFydGljbGUucm90YXRpb24pKTtcbiAgICAgIHRoaXMuY29udGV4dC50cmFuc2xhdGUoLXBhcnRpY2xlLnAueCwgLXBhcnRpY2xlLnAueSk7XG4gICAgICB0aGlzLmNvbnRleHQuZHJhd0ltYWdlKHBhcnRpY2xlLmJvZHksIDAsIDAsIHBhcnRpY2xlLmJvZHkud2lkdGgsIHBhcnRpY2xlLmJvZHkuaGVpZ2h0LCB4LCB5LCB3LCBoKTtcblxuICAgICAgdGhpcy5jb250ZXh0Lmdsb2JhbEFscGhhID0gMTtcbiAgICAgIHRoaXMuY29udGV4dC5yZXN0b3JlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gcHJpdmF0ZSBkcmF3Q2lyY2xlIC0tXG4gIGRyYXdDaXJjbGUocGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUucmdiKSB7XG4gICAgICB0aGlzLmNvbnRleHQuZmlsbFN0eWxlID0gYHJnYmEoJHtwYXJ0aWNsZS5yZ2Iucn0sJHtwYXJ0aWNsZS5yZ2IuZ30sJHtwYXJ0aWNsZS5yZ2IuYn0sJHtwYXJ0aWNsZS5hbHBoYX0pYDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250ZXh0LmZpbGxTdHlsZSA9IHBhcnRpY2xlLmNvbG9yO1xuICAgIH1cblxuICAgIC8vIGRyYXcgY2lyY2xlXG4gICAgdGhpcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgIHRoaXMuY29udGV4dC5hcmMocGFydGljbGUucC54LCBwYXJ0aWNsZS5wLnksIHBhcnRpY2xlLnJhZGl1cywgMCwgTWF0aC5QSSAqIDIsIHRydWUpO1xuXG4gICAgaWYgKHRoaXMuc3Ryb2tlKSB7XG4gICAgICB0aGlzLmNvbnRleHQuc3Ryb2tlU3R5bGUgPSB0aGlzLnN0cm9rZS5jb2xvcjtcbiAgICAgIHRoaXMuY29udGV4dC5saW5lV2lkdGggPSB0aGlzLnN0cm9rZS50aGlua25lc3M7XG4gICAgICB0aGlzLmNvbnRleHQuc3Ryb2tlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIHRoaXMuY29udGV4dC5maWxsKCk7XG4gIH1cblxuICAvLyBwcml2YXRlIGNyZWF0ZUJ1ZmZlclxuICBjcmVhdGVCdWZmZXIoaW1hZ2UpIHtcbiAgICBpZiAoVHlwZXMuaXNJbWFnZShpbWFnZSkpIHtcbiAgICAgIGNvbnN0IHNpemUgPSBpbWFnZS53aWR0aCArIFwiX1wiICsgaW1hZ2UuaGVpZ2h0O1xuICAgICAgbGV0IGNhbnZhcyA9IHRoaXMuYnVmZmVyQ2FjaGVbc2l6ZV07XG5cbiAgICAgIGlmICghY2FudmFzKSB7XG4gICAgICAgIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgICAgIGNhbnZhcy53aWR0aCA9IGltYWdlLndpZHRoO1xuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaW1hZ2UuaGVpZ2h0O1xuICAgICAgICB0aGlzLmJ1ZmZlckNhY2hlW3NpemVdID0gY2FudmFzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2FudmFzO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgc3VwZXIuZGVzdHJveSgpO1xuICAgIHRoaXMuc3Ryb2tlID0gbnVsbDtcbiAgICB0aGlzLmNvbnRleHQgPSBudWxsO1xuICAgIHRoaXMuYnVmZmVyQ2FjaGUgPSBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQgRG9tVXRpbCBmcm9tIFwiLi4vdXRpbHMvRG9tVXRpbFwiO1xuaW1wb3J0IEltZ1V0aWwgZnJvbSBcIi4uL3V0aWxzL0ltZ1V0aWxcIjtcbmltcG9ydCBCYXNlUmVuZGVyZXIgZnJvbSBcIi4vQmFzZVJlbmRlcmVyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERvbVJlbmRlcmVyIGV4dGVuZHMgQmFzZVJlbmRlcmVyIHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCkge1xuICAgIHN1cGVyKGVsZW1lbnQpO1xuXG4gICAgdGhpcy5zdHJva2UgPSBudWxsO1xuICAgIHRoaXMudHJhbnNmb3JtM2QgPSBmYWxzZTtcbiAgICB0aGlzLnBvb2wuY3JlYXRlID0gKGJvZHksIHBhcnRpY2xlKSA9PiB0aGlzLmNyZWF0ZUJvZHkoYm9keSwgcGFydGljbGUpO1xuICAgIHRoaXMuYWRkSW1nMkJvZHkgPSB0aGlzLmFkZEltZzJCb2R5LmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLm5hbWUgPSBcIkRvbVJlbmRlcmVyXCI7XG4gIH1cblxuICBvblBhcnRpY2xlQ3JlYXRlZChwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZS5ib2R5KSB7XG4gICAgICBJbWdVdGlsLmdldEltZ0Zyb21DYWNoZShwYXJ0aWNsZS5ib2R5LCB0aGlzLmFkZEltZzJCb2R5LCBwYXJ0aWNsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRpY2xlLmJvZHkgPSB0aGlzLnBvb2wuZ2V0KHRoaXMuY2lyY2xlQ29uZiwgcGFydGljbGUpO1xuICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHBhcnRpY2xlLmJvZHkpO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFydGljbGVVcGRhdGUocGFydGljbGUpIHtcbiAgICBpZiAodGhpcy5ib2R5UmVhZHkocGFydGljbGUpKSB7XG4gICAgICBpZiAodGhpcy50cmFuc2Zvcm0zZCkge1xuICAgICAgICBEb21VdGlsLnRyYW5zZm9ybTNkKHBhcnRpY2xlLmJvZHksIHBhcnRpY2xlLnAueCwgcGFydGljbGUucC55LCBwYXJ0aWNsZS5zY2FsZSwgcGFydGljbGUucm90YXRpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgRG9tVXRpbC50cmFuc2Zvcm0ocGFydGljbGUuYm9keSwgcGFydGljbGUucC54LCBwYXJ0aWNsZS5wLnksIHBhcnRpY2xlLnNjYWxlLCBwYXJ0aWNsZS5yb3RhdGlvbik7XG4gICAgICB9XG5cbiAgICAgIHBhcnRpY2xlLmJvZHkuc3R5bGUub3BhY2l0eSA9IHBhcnRpY2xlLmFscGhhO1xuXG4gICAgICBpZiAocGFydGljbGUuYm9keS5pc0NpcmNsZSkge1xuICAgICAgICBwYXJ0aWNsZS5ib2R5LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHBhcnRpY2xlLmNvbG9yIHx8IFwiI2ZmMDAwMFwiO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7XG4gICAgaWYgKHRoaXMuYm9keVJlYWR5KHBhcnRpY2xlKSkge1xuICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHBhcnRpY2xlLmJvZHkpO1xuICAgICAgdGhpcy5wb29sLmV4cGlyZShwYXJ0aWNsZS5ib2R5KTtcbiAgICAgIHBhcnRpY2xlLmJvZHkgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGJvZHlSZWFkeShwYXJ0aWNsZSkge1xuICAgIHJldHVybiB0eXBlb2YgcGFydGljbGUuYm9keSA9PT0gXCJvYmplY3RcIiAmJiBwYXJ0aWNsZS5ib2R5ICYmICFwYXJ0aWNsZS5ib2R5LmlzSW5uZXI7XG4gIH1cblxuICAvLyBwcml2YXRlIG1ldGhvZFxuICBhZGRJbWcyQm9keShpbWcsIHBhcnRpY2xlKSB7XG4gICAgaWYgKHBhcnRpY2xlLmRlYWQpIHJldHVybjtcbiAgICBwYXJ0aWNsZS5ib2R5ID0gdGhpcy5wb29sLmdldChpbWcsIHBhcnRpY2xlKTtcbiAgICBEb21VdGlsLnJlc2l6ZShwYXJ0aWNsZS5ib2R5LCBpbWcud2lkdGgsIGltZy5oZWlnaHQpO1xuXG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHBhcnRpY2xlLmJvZHkpO1xuICB9XG5cbiAgY3JlYXRlQm9keShib2R5LCBwYXJ0aWNsZSkge1xuICAgIGlmIChib2R5LmlzQ2lyY2xlKSByZXR1cm4gdGhpcy5jcmVhdGVDaXJjbGUocGFydGljbGUpO1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZVNwcml0ZShib2R5LCBwYXJ0aWNsZSk7XG4gIH1cblxuICAvLyBwcml2YXRlIG1ldGhvZHNcbiAgY3JlYXRlQ2lyY2xlKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgZG9tID0gRG9tVXRpbC5jcmVhdGVEaXYoYCR7cGFydGljbGUuaWR9X2RvbWAsIDIgKiBwYXJ0aWNsZS5yYWRpdXMsIDIgKiBwYXJ0aWNsZS5yYWRpdXMpO1xuICAgIGRvbS5zdHlsZS5ib3JkZXJSYWRpdXMgPSBgJHtwYXJ0aWNsZS5yYWRpdXN9cHhgO1xuXG4gICAgaWYgKHRoaXMuc3Ryb2tlKSB7XG4gICAgICBkb20uc3R5bGUuYm9yZGVyQ29sb3IgPSB0aGlzLnN0cm9rZS5jb2xvcjtcbiAgICAgIGRvbS5zdHlsZS5ib3JkZXJXaWR0aCA9IGAke3RoaXMuc3Ryb2tlLnRoaW5rbmVzc31weGA7XG4gICAgfVxuICAgIGRvbS5pc0NpcmNsZSA9IHRydWU7XG5cbiAgICByZXR1cm4gZG9tO1xuICB9XG5cbiAgY3JlYXRlU3ByaXRlKGJvZHksIHBhcnRpY2xlKSB7XG4gICAgY29uc3QgdXJsID0gdHlwZW9mIGJvZHkgPT09IFwic3RyaW5nXCIgPyBib2R5IDogYm9keS5zcmM7XG4gICAgY29uc3QgZG9tID0gRG9tVXRpbC5jcmVhdGVEaXYoYCR7cGFydGljbGUuaWR9X2RvbWAsIGJvZHkud2lkdGgsIGJvZHkuaGVpZ2h0KTtcbiAgICBkb20uc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYHVybCgke3VybH0pYDtcblxuICAgIHJldHVybiBkb207XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICB0aGlzLnN0cm9rZSA9IG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCBUeXBlcyBmcm9tIFwiLi4vdXRpbHMvVHlwZXNcIjtcbmltcG9ydCBCYXNlUmVuZGVyZXIgZnJvbSBcIi4vQmFzZVJlbmRlcmVyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc2VsUmVuZGVyZXIgZXh0ZW5kcyBCYXNlUmVuZGVyZXIge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBzdHJva2UpIHtcbiAgICBzdXBlcihlbGVtZW50KTtcblxuICAgIHRoaXMuc3Ryb2tlID0gc3Ryb2tlO1xuICAgIHRoaXMubmFtZSA9IFwiRWFzZWxSZW5kZXJlclwiO1xuICB9XG5cbiAgb25QYXJ0aWNsZUNyZWF0ZWQocGFydGljbGUpIHtcbiAgICBpZiAocGFydGljbGUuYm9keSkge1xuICAgICAgdGhpcy5jcmVhdGVTcHJpdGUocGFydGljbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNyZWF0ZUNpcmNsZShwYXJ0aWNsZSk7XG4gICAgfVxuXG4gICAgdGhpcy5lbGVtZW50LmFkZENoaWxkKHBhcnRpY2xlLmJvZHkpO1xuICB9XG5cbiAgb25QYXJ0aWNsZVVwZGF0ZShwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZS5ib2R5KSB7XG4gICAgICBwYXJ0aWNsZS5ib2R5LnggPSBwYXJ0aWNsZS5wLng7XG4gICAgICBwYXJ0aWNsZS5ib2R5LnkgPSBwYXJ0aWNsZS5wLnk7XG5cbiAgICAgIHBhcnRpY2xlLmJvZHkuYWxwaGEgPSBwYXJ0aWNsZS5hbHBoYTtcbiAgICAgIHBhcnRpY2xlLmJvZHkuc2NhbGVYID0gcGFydGljbGUuYm9keS5zY2FsZVkgPSBwYXJ0aWNsZS5zY2FsZTtcbiAgICAgIHBhcnRpY2xlLmJvZHkucm90YXRpb24gPSBwYXJ0aWNsZS5yb3RhdGlvbjtcbiAgICB9XG4gIH1cblxuICBvblBhcnRpY2xlRGVhZChwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZS5ib2R5KSB7XG4gICAgICBwYXJ0aWNsZS5ib2R5LnBhcmVudCAmJiBwYXJ0aWNsZS5ib2R5LnBhcmVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5ib2R5KTtcbiAgICAgIHRoaXMucG9vbC5leHBpcmUocGFydGljbGUuYm9keSk7XG4gICAgICBwYXJ0aWNsZS5ib2R5ID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAocGFydGljbGUuZ3JhcGhpY3MpIHRoaXMucG9vbC5leHBpcmUocGFydGljbGUuZ3JhcGhpY3MpO1xuICB9XG5cbiAgLy8gcHJpdmF0ZVxuICBjcmVhdGVTcHJpdGUocGFydGljbGUpIHtcbiAgICBwYXJ0aWNsZS5ib2R5ID0gdGhpcy5wb29sLmdldChwYXJ0aWNsZS5ib2R5KTtcblxuICAgIGlmIChwYXJ0aWNsZS5ib2R5LnBhcmVudCkgcmV0dXJuO1xuICAgIGlmIChwYXJ0aWNsZS5ib2R5W1wiaW1hZ2VcIl0pIHtcbiAgICAgIHBhcnRpY2xlLmJvZHkucmVnWCA9IHBhcnRpY2xlLmJvZHkuaW1hZ2Uud2lkdGggLyAyO1xuICAgICAgcGFydGljbGUuYm9keS5yZWdZID0gcGFydGljbGUuYm9keS5pbWFnZS5oZWlnaHQgLyAyO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUNpcmNsZShwYXJ0aWNsZSkge1xuICAgIGNvbnN0IGdyYXBoaWNzID0gdGhpcy5wb29sLmdldChjcmVhdGVqcy5HcmFwaGljcyk7XG5cbiAgICBpZiAodGhpcy5zdHJva2UpIHtcbiAgICAgIGlmIChUeXBlcy5pc1N0cmluZyh0aGlzLnN0cm9rZSkpIHtcbiAgICAgICAgZ3JhcGhpY3MuYmVnaW5TdHJva2UodGhpcy5zdHJva2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JhcGhpY3MuYmVnaW5TdHJva2UoXCIjMDAwMDAwXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBncmFwaGljcy5iZWdpbkZpbGwocGFydGljbGUuY29sb3IgfHwgXCIjZmYwMDAwXCIpLmRyYXdDaXJjbGUoMCwgMCwgcGFydGljbGUucmFkaXVzKTtcbiAgICBjb25zdCBzaGFwZSA9IHRoaXMucG9vbC5nZXQoY3JlYXRlanMuU2hhcGUsIFtncmFwaGljc10pO1xuXG4gICAgcGFydGljbGUuYm9keSA9IHNoYXBlO1xuICAgIHBhcnRpY2xlLmdyYXBoaWNzID0gZ3JhcGhpY3M7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICB0aGlzLnN0cm9rZSA9IG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCBSZWN0YW5nbGUgZnJvbSBcIi4uL21hdGgvUmVjdGFuZ2xlXCI7XG5pbXBvcnQgQmFzZVJlbmRlcmVyIGZyb20gXCIuL0Jhc2VSZW5kZXJlclwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQaXhlbFJlbmRlcmVyIGV4dGVuZHMgQmFzZVJlbmRlcmVyIHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgcmVjdGFuZ2xlKSB7XG4gICAgc3VwZXIoZWxlbWVudCk7XG5cbiAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmVsZW1lbnQuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgIHRoaXMuaW1hZ2VEYXRhID0gbnVsbDtcbiAgICB0aGlzLnJlY3RhbmdsZSA9IHJlY3RhbmdsZTtcbiAgICB0aGlzLmNyZWF0ZUltYWdlRGF0YShyZWN0YW5nbGUpO1xuXG4gICAgdGhpcy5uYW1lID0gXCJQaXhlbFJlbmRlcmVyXCI7XG4gIH1cblxuICByZXNpemUod2lkdGgsIGhlaWdodCkge1xuICAgIHRoaXMuZWxlbWVudC53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuZWxlbWVudC5oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cblxuICBjcmVhdGVJbWFnZURhdGEocmVjdGFuZ2xlKSB7XG4gICAgdGhpcy5yZWN0YW5nbGUgPSByZWN0YW5nbGUgPyByZWN0YW5nbGUgOiBuZXcgUmVjdGFuZ2xlKDAsIDAsIHRoaXMuZWxlbWVudC53aWR0aCwgdGhpcy5lbGVtZW50LmhlaWdodCk7XG4gICAgdGhpcy5pbWFnZURhdGEgPSB0aGlzLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHRoaXMucmVjdGFuZ2xlLndpZHRoLCB0aGlzLnJlY3RhbmdsZS5oZWlnaHQpO1xuICAgIHRoaXMuY29udGV4dC5wdXRJbWFnZURhdGEodGhpcy5pbWFnZURhdGEsIHRoaXMucmVjdGFuZ2xlLngsIHRoaXMucmVjdGFuZ2xlLnkpO1xuICB9XG5cbiAgb25Qcm90b25VcGRhdGUoKSB7XG4gICAgdGhpcy5jb250ZXh0LmNsZWFyUmVjdCh0aGlzLnJlY3RhbmdsZS54LCB0aGlzLnJlY3RhbmdsZS55LCB0aGlzLnJlY3RhbmdsZS53aWR0aCwgdGhpcy5yZWN0YW5nbGUuaGVpZ2h0KTtcbiAgICB0aGlzLmltYWdlRGF0YSA9IHRoaXMuY29udGV4dC5nZXRJbWFnZURhdGEoXG4gICAgICB0aGlzLnJlY3RhbmdsZS54LFxuICAgICAgdGhpcy5yZWN0YW5nbGUueSxcbiAgICAgIHRoaXMucmVjdGFuZ2xlLndpZHRoLFxuICAgICAgdGhpcy5yZWN0YW5nbGUuaGVpZ2h0XG4gICAgKTtcbiAgfVxuXG4gIG9uUHJvdG9uVXBkYXRlQWZ0ZXIoKSB7XG4gICAgdGhpcy5jb250ZXh0LnB1dEltYWdlRGF0YSh0aGlzLmltYWdlRGF0YSwgdGhpcy5yZWN0YW5nbGUueCwgdGhpcy5yZWN0YW5nbGUueSk7XG4gIH1cblxuICBvblBhcnRpY2xlQ3JlYXRlZChwYXJ0aWNsZSkge31cblxuICBvblBhcnRpY2xlVXBkYXRlKHBhcnRpY2xlKSB7XG4gICAgaWYgKHRoaXMuaW1hZ2VEYXRhKSB7XG4gICAgICB0aGlzLnNldFBpeGVsKFxuICAgICAgICB0aGlzLmltYWdlRGF0YSxcbiAgICAgICAgKHBhcnRpY2xlLnAueCAtIHRoaXMucmVjdGFuZ2xlLngpID4+IDAsXG4gICAgICAgIChwYXJ0aWNsZS5wLnkgLSB0aGlzLnJlY3RhbmdsZS55KSA+PiAwLFxuICAgICAgICBwYXJ0aWNsZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBzZXRQaXhlbChpbWFnZWRhdGEsIHgsIHksIHBhcnRpY2xlKSB7XG4gICAgY29uc3QgcmdiID0gcGFydGljbGUucmdiO1xuICAgIGlmICh4IDwgMCB8fCB4ID4gdGhpcy5lbGVtZW50LndpZHRoIHx8IHkgPCAwIHx8IHkgPiB0aGlzLmVsZW1lbnR3aWR0aCkgcmV0dXJuO1xuXG4gICAgY29uc3QgaSA9ICgoeSA+PiAwKSAqIGltYWdlZGF0YS53aWR0aCArICh4ID4+IDApKSAqIDQ7XG4gICAgaW1hZ2VkYXRhLmRhdGFbaV0gPSByZ2IucjtcbiAgICBpbWFnZWRhdGEuZGF0YVtpICsgMV0gPSByZ2IuZztcbiAgICBpbWFnZWRhdGEuZGF0YVtpICsgMl0gPSByZ2IuYjtcbiAgICBpbWFnZWRhdGEuZGF0YVtpICsgM10gPSBwYXJ0aWNsZS5hbHBoYSAqIDI1NTtcbiAgfVxuXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7fVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgc3VwZXIuZGVzdHJveSgpO1xuICAgIHRoaXMuc3Ryb2tlID0gbnVsbDtcbiAgICB0aGlzLmNvbnRleHQgPSBudWxsO1xuICAgIHRoaXMuaW1hZ2VEYXRhID0gbnVsbDtcbiAgICB0aGlzLnJlY3RhbmdsZSA9IG51bGw7XG4gIH1cbn1cbiIsImltcG9ydCBUeXBlcyBmcm9tIFwiLi4vdXRpbHMvVHlwZXNcIjtcbmltcG9ydCBDb2xvclV0aWwgZnJvbSBcIi4uL3V0aWxzL0NvbG9yVXRpbFwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuLi9tYXRoL01hdGhVdGlsXCI7XG5pbXBvcnQgQmFzZVJlbmRlcmVyIGZyb20gXCIuL0Jhc2VSZW5kZXJlclwiO1xuXG5sZXQgUElYSUNsYXNzO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGl4aVJlbmRlcmVyIGV4dGVuZHMgQmFzZVJlbmRlcmVyIHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgc3Ryb2tlKSB7XG4gICAgc3VwZXIoZWxlbWVudCk7XG5cbiAgICB0aGlzLnN0cm9rZSA9IHN0cm9rZTtcbiAgICB0aGlzLmNvbG9yID0gZmFsc2U7XG4gICAgdGhpcy5zZXRDb2xvciA9IGZhbHNlO1xuICAgIHRoaXMuYmxlbmRNb2RlID0gbnVsbDtcbiAgICB0aGlzLnBvb2wuY3JlYXRlID0gKGJvZHksIHBhcnRpY2xlKSA9PiB0aGlzLmNyZWF0ZUJvZHkoYm9keSwgcGFydGljbGUpO1xuICAgIHRoaXMuc2V0UElYSSh3aW5kb3cuUElYSSk7XG5cbiAgICB0aGlzLm5hbWUgPSBcIlBpeGlSZW5kZXJlclwiO1xuICB9XG5cbiAgc2V0UElYSShQSVhJKSB7XG4gICAgdHJ5IHtcbiAgICAgIFBJWElDbGFzcyA9IFBJWEkgfHwgeyBTcHJpdGU6IHt9IH07XG4gICAgICB0aGlzLmNyZWF0ZUZyb21JbWFnZSA9IFBJWElDbGFzcy5TcHJpdGUuZnJvbSB8fCBQSVhJQ2xhc3MuU3ByaXRlLmZyb21JbWFnZTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG5cbiAgb25Qcm90b25VcGRhdGUoKSB7fVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcGFydGljbGVcbiAgICovXG4gIG9uUGFydGljbGVDcmVhdGVkKHBhcnRpY2xlKSB7XG4gICAgaWYgKHBhcnRpY2xlLmJvZHkpIHtcbiAgICAgIHBhcnRpY2xlLmJvZHkgPSB0aGlzLnBvb2wuZ2V0KHBhcnRpY2xlLmJvZHksIHBhcnRpY2xlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydGljbGUuYm9keSA9IHRoaXMucG9vbC5nZXQodGhpcy5jaXJjbGVDb25mLCBwYXJ0aWNsZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYmxlbmRNb2RlKSB7XG4gICAgICBwYXJ0aWNsZS5ib2R5LmJsZW5kTW9kZSA9IHRoaXMuYmxlbmRNb2RlO1xuICAgIH1cblxuICAgIHRoaXMuZWxlbWVudC5hZGRDaGlsZChwYXJ0aWNsZS5ib2R5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcGFydGljbGVcbiAgICovXG4gIG9uUGFydGljbGVVcGRhdGUocGFydGljbGUpIHtcbiAgICB0aGlzLnRyYW5zZm9ybShwYXJ0aWNsZSwgcGFydGljbGUuYm9keSk7XG5cbiAgICBpZiAodGhpcy5zZXRDb2xvciA9PT0gdHJ1ZSB8fCB0aGlzLmNvbG9yID09PSB0cnVlKSB7XG4gICAgICBwYXJ0aWNsZS5ib2R5LnRpbnQgPSBDb2xvclV0aWwuZ2V0SGV4MTZGcm9tUGFydGljbGUocGFydGljbGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcGFydGljbGVcbiAgICovXG4gIG9uUGFydGljbGVEZWFkKHBhcnRpY2xlKSB7XG4gICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkKHBhcnRpY2xlLmJvZHkpO1xuICAgIHRoaXMucG9vbC5leHBpcmUocGFydGljbGUuYm9keSk7XG4gICAgcGFydGljbGUuYm9keSA9IG51bGw7XG4gIH1cblxuICB0cmFuc2Zvcm0ocGFydGljbGUsIHRhcmdldCkge1xuICAgIHRhcmdldC54ID0gcGFydGljbGUucC54O1xuICAgIHRhcmdldC55ID0gcGFydGljbGUucC55O1xuXG4gICAgdGFyZ2V0LmFscGhhID0gcGFydGljbGUuYWxwaGE7XG5cbiAgICB0YXJnZXQuc2NhbGUueCA9IHBhcnRpY2xlLnNjYWxlO1xuICAgIHRhcmdldC5zY2FsZS55ID0gcGFydGljbGUuc2NhbGU7XG5cbiAgICAvLyB1c2luZyBjYWNoZWQgdmVyc2lvbiBvZiBNYXRoVXRpbC5QSV8xODAgZm9yIHNsaWdodCBwZXJmb3JtYW5jZSBpbmNyZWFzZS5cbiAgICB0YXJnZXQucm90YXRpb24gPSBwYXJ0aWNsZS5yb3RhdGlvbiAqIE1hdGhVdGlsLlBJXzE4MDsgLy8gTWF0aFV0aWwuUElfMTgwO1xuICB9XG5cbiAgY3JlYXRlQm9keShib2R5LCBwYXJ0aWNsZSkge1xuICAgIGlmIChib2R5LmlzQ2lyY2xlKSByZXR1cm4gdGhpcy5jcmVhdGVDaXJjbGUocGFydGljbGUpO1xuICAgIGVsc2UgcmV0dXJuIHRoaXMuY3JlYXRlU3ByaXRlKGJvZHkpO1xuICB9XG5cbiAgY3JlYXRlU3ByaXRlKGJvZHkpIHtcbiAgICBjb25zdCBzcHJpdGUgPSBib2R5LmlzSW5uZXIgPyB0aGlzLmNyZWF0ZUZyb21JbWFnZShib2R5LnNyYykgOiBuZXcgUElYSUNsYXNzLlNwcml0ZShib2R5KTtcblxuICAgIHNwcml0ZS5hbmNob3IueCA9IDAuNTtcbiAgICBzcHJpdGUuYW5jaG9yLnkgPSAwLjU7XG5cbiAgICByZXR1cm4gc3ByaXRlO1xuICB9XG5cbiAgY3JlYXRlQ2lyY2xlKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgZ3JhcGhpY3MgPSBuZXcgUElYSUNsYXNzLkdyYXBoaWNzKCk7XG5cbiAgICBpZiAodGhpcy5zdHJva2UpIHtcbiAgICAgIGNvbnN0IHN0cm9rZSA9IFR5cGVzLmlzU3RyaW5nKHRoaXMuc3Ryb2tlKSA/IHRoaXMuc3Ryb2tlIDogMHgwMDAwMDA7XG4gICAgICBncmFwaGljcy5iZWdpblN0cm9rZShzdHJva2UpO1xuICAgIH1cblxuICAgIGdyYXBoaWNzLmJlZ2luRmlsbChwYXJ0aWNsZS5jb2xvciB8fCAweDAwOGNlZCk7XG4gICAgZ3JhcGhpY3MuZHJhd0NpcmNsZSgwLCAwLCBwYXJ0aWNsZS5yYWRpdXMpO1xuICAgIGdyYXBoaWNzLmVuZEZpbGwoKTtcblxuICAgIHJldHVybiBncmFwaGljcztcbiAgfVxuXG4gIGRlc3Ryb3kocGFydGljbGVzKSB7XG4gICAgc3VwZXIuZGVzdHJveSgpO1xuXG4gICAgbGV0IGkgPSBwYXJ0aWNsZXMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIGxldCBwYXJ0aWNsZSA9IHBhcnRpY2xlc1tpXTtcbiAgICAgIGlmIChwYXJ0aWNsZS5ib2R5KSB7XG4gICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZChwYXJ0aWNsZS5ib2R5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCBNYXQzIGZyb20gXCIuLi9tYXRoL01hdDNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTVN0YWNrIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5tYXRzID0gW107XG4gICAgdGhpcy5zaXplID0gMDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykgdGhpcy5tYXRzLnB1c2goTWF0My5jcmVhdGUoWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdKSk7XG4gIH1cblxuICBzZXQobSwgaSkge1xuICAgIGlmIChpID09PSAwKSBNYXQzLnNldChtLCB0aGlzLm1hdHNbMF0pO1xuICAgIGVsc2UgTWF0My5tdWx0aXBseSh0aGlzLm1hdHNbaSAtIDFdLCBtLCB0aGlzLm1hdHNbaV0pO1xuXG4gICAgdGhpcy5zaXplID0gTWF0aC5tYXgodGhpcy5zaXplLCBpICsgMSk7XG4gIH1cblxuICBwdXNoKG0pIHtcbiAgICBpZiAodGhpcy5zaXplID09PSAwKSBNYXQzLnNldChtLCB0aGlzLm1hdHNbMF0pO1xuICAgIGVsc2UgTWF0My5tdWx0aXBseSh0aGlzLm1hdHNbdGhpcy5zaXplIC0gMV0sIG0sIHRoaXMubWF0c1t0aGlzLnNpemVdKTtcblxuICAgIHRoaXMuc2l6ZSsrO1xuICB9XG5cbiAgcG9wKCkge1xuICAgIGlmICh0aGlzLnNpemUgPiAwKSB0aGlzLnNpemUtLTtcbiAgfVxuXG4gIHRvcCgpIHtcbiAgICByZXR1cm4gdGhpcy5tYXRzW3RoaXMuc2l6ZSAtIDFdO1xuICB9XG59XG4iLCJpbXBvcnQgTWF0MyBmcm9tIFwiLi4vbWF0aC9NYXQzXCI7XG5pbXBvcnQgQmFzZVJlbmRlcmVyIGZyb20gXCIuL0Jhc2VSZW5kZXJlclwiO1xuXG5pbXBvcnQgVXRpbCBmcm9tIFwiLi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IEltZ1V0aWwgZnJvbSBcIi4uL3V0aWxzL0ltZ1V0aWxcIjtcbmltcG9ydCBNU3RhY2sgZnJvbSBcIi4uL3V0aWxzL01TdGFja1wiO1xuaW1wb3J0IERvbVV0aWwgZnJvbSBcIi4uL3V0aWxzL0RvbVV0aWxcIjtcbmltcG9ydCBXZWJHTFV0aWwgZnJvbSBcIi4uL3V0aWxzL1dlYkdMVXRpbFwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuLi9tYXRoL01hdGhVdGlsXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdlYkdMUmVuZGVyZXIgZXh0ZW5kcyBCYXNlUmVuZGVyZXIge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50KSB7XG4gICAgc3VwZXIoZWxlbWVudCk7XG5cbiAgICB0aGlzLmdsID0gdGhpcy5lbGVtZW50LmdldENvbnRleHQoXCJleHBlcmltZW50YWwtd2ViZ2xcIiwgeyBhbnRpYWxpYXM6IHRydWUsIHN0ZW5jaWw6IGZhbHNlLCBkZXB0aDogZmFsc2UgfSk7XG4gICAgaWYgKCF0aGlzLmdsKSBhbGVydChcIlNvcnJ5IHlvdXIgYnJvd3NlciBkbyBub3Qgc3VwcGVzdCBXZWJHTCFcIik7XG5cbiAgICB0aGlzLmluaXRWYXIoKTtcbiAgICB0aGlzLnNldE1heFJhZGl1cygpO1xuICAgIHRoaXMuaW5pdFNoYWRlcnMoKTtcbiAgICB0aGlzLmluaXRCdWZmZXJzKCk7XG5cbiAgICB0aGlzLmdsLmJsZW5kRXF1YXRpb24odGhpcy5nbC5GVU5DX0FERCk7XG4gICAgdGhpcy5nbC5ibGVuZEZ1bmModGhpcy5nbC5TUkNfQUxQSEEsIHRoaXMuZ2wuT05FX01JTlVTX1NSQ19BTFBIQSk7XG4gICAgdGhpcy5nbC5lbmFibGUodGhpcy5nbC5CTEVORCk7XG4gICAgdGhpcy5hZGRJbWcyQm9keSA9IHRoaXMuYWRkSW1nMkJvZHkuYmluZCh0aGlzKTtcblxuICAgIHRoaXMubmFtZSA9IFwiV2ViR0xSZW5kZXJlclwiO1xuICB9XG5cbiAgaW5pdChwcm90b24pIHtcbiAgICBzdXBlci5pbml0KHByb3Rvbik7XG4gICAgdGhpcy5yZXNpemUodGhpcy5lbGVtZW50LndpZHRoLCB0aGlzLmVsZW1lbnQuaGVpZ2h0KTtcbiAgfVxuXG4gIHJlc2l6ZSh3aWR0aCwgaGVpZ2h0KSB7XG4gICAgdGhpcy51bWF0WzRdID0gLTI7XG4gICAgdGhpcy51bWF0WzddID0gMTtcblxuICAgIHRoaXMuc21hdFswXSA9IDEgLyB3aWR0aDtcbiAgICB0aGlzLnNtYXRbNF0gPSAxIC8gaGVpZ2h0O1xuXG4gICAgdGhpcy5tc3RhY2suc2V0KHRoaXMudW1hdCwgMCk7XG4gICAgdGhpcy5tc3RhY2suc2V0KHRoaXMuc21hdCwgMSk7XG5cbiAgICB0aGlzLmdsLnZpZXdwb3J0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgIHRoaXMuZWxlbWVudC53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuZWxlbWVudC5oZWlnaHQgPSBoZWlnaHQ7XG4gIH1cblxuICBzZXRNYXhSYWRpdXMocmFkaXVzKSB7XG4gICAgdGhpcy5jaXJjbGVDYW52YXNVUkwgPSB0aGlzLmNyZWF0ZUNpcmNsZShyYWRpdXMpO1xuICB9XG5cbiAgZ2V0VmVydGV4U2hhZGVyKCkge1xuICAgIGNvbnN0IHZzU291cmNlID0gW1xuICAgICAgXCJ1bmlmb3JtIHZlYzIgdmlld3BvcnQ7XCIsXG4gICAgICBcImF0dHJpYnV0ZSB2ZWMyIGFWZXJ0ZXhQb3NpdGlvbjtcIixcbiAgICAgIFwiYXR0cmlidXRlIHZlYzIgYVRleHR1cmVDb29yZDtcIixcbiAgICAgIFwidW5pZm9ybSBtYXQzIHRNYXQ7XCIsXG4gICAgICBcInZhcnlpbmcgdmVjMiB2VGV4dHVyZUNvb3JkO1wiLFxuICAgICAgXCJ2YXJ5aW5nIGZsb2F0IGFscGhhO1wiLFxuICAgICAgXCJ2b2lkIG1haW4oKSB7XCIsXG4gICAgICBcInZlYzMgdiA9IHRNYXQgKiB2ZWMzKGFWZXJ0ZXhQb3NpdGlvbiwgMS4wKTtcIixcbiAgICAgIFwiZ2xfUG9zaXRpb24gPSB2ZWM0KHYueCwgdi55LCAwLCAxKTtcIixcbiAgICAgIFwidlRleHR1cmVDb29yZCA9IGFUZXh0dXJlQ29vcmQ7XCIsXG4gICAgICBcImFscGhhID0gdE1hdFswXVsyXTtcIixcbiAgICAgIFwifVwiXG4gICAgXS5qb2luKFwiXFxuXCIpO1xuICAgIHJldHVybiB2c1NvdXJjZTtcbiAgfVxuXG4gIGdldEZyYWdtZW50U2hhZGVyKCkge1xuICAgIGNvbnN0IGZzU291cmNlID0gW1xuICAgICAgXCJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcIixcbiAgICAgIFwidmFyeWluZyB2ZWMyIHZUZXh0dXJlQ29vcmQ7XCIsXG4gICAgICBcInZhcnlpbmcgZmxvYXQgYWxwaGE7XCIsXG4gICAgICBcInVuaWZvcm0gc2FtcGxlcjJEIHVTYW1wbGVyO1wiLFxuICAgICAgXCJ1bmlmb3JtIHZlYzQgY29sb3I7XCIsXG4gICAgICBcInVuaWZvcm0gYm9vbCB1c2VUZXh0dXJlO1wiLFxuICAgICAgXCJ1bmlmb3JtIHZlYzMgdUNvbG9yO1wiLFxuICAgICAgXCJ2b2lkIG1haW4oKSB7XCIsXG4gICAgICBcInZlYzQgdGV4dHVyZUNvbG9yID0gdGV4dHVyZTJEKHVTYW1wbGVyLCB2VGV4dHVyZUNvb3JkKTtcIixcbiAgICAgIFwiZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZUNvbG9yICogdmVjNCh1Q29sb3IsIDEuMCk7XCIsXG4gICAgICBcImdsX0ZyYWdDb2xvci53ICo9IGFscGhhO1wiLFxuICAgICAgXCJ9XCJcbiAgICBdLmpvaW4oXCJcXG5cIik7XG4gICAgcmV0dXJuIGZzU291cmNlO1xuICB9XG5cbiAgaW5pdFZhcigpIHtcbiAgICB0aGlzLm1zdGFjayA9IG5ldyBNU3RhY2soKTtcbiAgICB0aGlzLnVtYXQgPSBNYXQzLmNyZWF0ZShbMiwgMCwgMSwgMCwgLTIsIDAsIC0xLCAxLCAxXSk7XG4gICAgdGhpcy5zbWF0ID0gTWF0My5jcmVhdGUoWzEgLyAxMDAsIDAsIDEsIDAsIDEgLyAxMDAsIDAsIDAsIDAsIDFdKTtcbiAgICB0aGlzLnRleHR1cmVidWZmZXJzID0ge307XG4gIH1cblxuICBibGVuZEVxdWF0aW9uKEEpIHtcbiAgICB0aGlzLmdsLmJsZW5kRXF1YXRpb24odGhpcy5nbFtBXSk7XG4gIH1cblxuICBibGVuZEZ1bmMoQSwgQikge1xuICAgIHRoaXMuZ2wuYmxlbmRGdW5jKHRoaXMuZ2xbQV0sIHRoaXMuZ2xbQl0pO1xuICB9XG5cbiAgZ2V0U2hhZGVyKGdsLCBzdHIsIGZzKSB7XG4gICAgY29uc3Qgc2hhZGVyID0gZnMgPyBnbC5jcmVhdGVTaGFkZXIoZ2wuRlJBR01FTlRfU0hBREVSKSA6IGdsLmNyZWF0ZVNoYWRlcihnbC5WRVJURVhfU0hBREVSKTtcblxuICAgIGdsLnNoYWRlclNvdXJjZShzaGFkZXIsIHN0cik7XG4gICAgZ2wuY29tcGlsZVNoYWRlcihzaGFkZXIpO1xuXG4gICAgaWYgKCFnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBnbC5DT01QSUxFX1NUQVRVUykpIHtcbiAgICAgIGFsZXJ0KGdsLmdldFNoYWRlckluZm9Mb2coc2hhZGVyKSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gc2hhZGVyO1xuICB9XG5cbiAgaW5pdFNoYWRlcnMoKSB7XG4gICAgY29uc3QgZnJhZ21lbnRTaGFkZXIgPSB0aGlzLmdldFNoYWRlcih0aGlzLmdsLCB0aGlzLmdldEZyYWdtZW50U2hhZGVyKCksIHRydWUpO1xuICAgIGNvbnN0IHZlcnRleFNoYWRlciA9IHRoaXMuZ2V0U2hhZGVyKHRoaXMuZ2wsIHRoaXMuZ2V0VmVydGV4U2hhZGVyKCksIGZhbHNlKTtcblxuICAgIHRoaXMuc3Byb2dyYW0gPSB0aGlzLmdsLmNyZWF0ZVByb2dyYW0oKTtcbiAgICB0aGlzLmdsLmF0dGFjaFNoYWRlcih0aGlzLnNwcm9ncmFtLCB2ZXJ0ZXhTaGFkZXIpO1xuICAgIHRoaXMuZ2wuYXR0YWNoU2hhZGVyKHRoaXMuc3Byb2dyYW0sIGZyYWdtZW50U2hhZGVyKTtcbiAgICB0aGlzLmdsLmxpbmtQcm9ncmFtKHRoaXMuc3Byb2dyYW0pO1xuXG4gICAgaWYgKCF0aGlzLmdsLmdldFByb2dyYW1QYXJhbWV0ZXIodGhpcy5zcHJvZ3JhbSwgdGhpcy5nbC5MSU5LX1NUQVRVUykpIGFsZXJ0KFwiQ291bGQgbm90IGluaXRpYWxpc2Ugc2hhZGVyc1wiKTtcblxuICAgIHRoaXMuZ2wudXNlUHJvZ3JhbSh0aGlzLnNwcm9ncmFtKTtcbiAgICB0aGlzLnNwcm9ncmFtLnZwYSA9IHRoaXMuZ2wuZ2V0QXR0cmliTG9jYXRpb24odGhpcy5zcHJvZ3JhbSwgXCJhVmVydGV4UG9zaXRpb25cIik7XG4gICAgdGhpcy5zcHJvZ3JhbS50Y2EgPSB0aGlzLmdsLmdldEF0dHJpYkxvY2F0aW9uKHRoaXMuc3Byb2dyYW0sIFwiYVRleHR1cmVDb29yZFwiKTtcbiAgICB0aGlzLmdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHRoaXMuc3Byb2dyYW0udGNhKTtcbiAgICB0aGlzLmdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHRoaXMuc3Byb2dyYW0udnBhKTtcblxuICAgIHRoaXMuc3Byb2dyYW0udE1hdFVuaWZvcm0gPSB0aGlzLmdsLmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnNwcm9ncmFtLCBcInRNYXRcIik7XG4gICAgdGhpcy5zcHJvZ3JhbS5zYW1wbGVyVW5pZm9ybSA9IHRoaXMuZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMuc3Byb2dyYW0sIFwidVNhbXBsZXJcIik7XG4gICAgdGhpcy5zcHJvZ3JhbS51c2VUZXggPSB0aGlzLmdsLmdldFVuaWZvcm1Mb2NhdGlvbih0aGlzLnNwcm9ncmFtLCBcInVzZVRleHR1cmVcIik7XG4gICAgdGhpcy5zcHJvZ3JhbS5jb2xvciA9IHRoaXMuZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKHRoaXMuc3Byb2dyYW0sIFwidUNvbG9yXCIpO1xuICAgIHRoaXMuZ2wudW5pZm9ybTFpKHRoaXMuc3Byb2dyYW0udXNlVGV4LCAxKTtcbiAgfVxuXG4gIGluaXRCdWZmZXJzKCkge1xuICAgIGNvbnN0IHZzID0gWzAsIDMsIDEsIDAsIDIsIDNdO1xuICAgIGxldCBpZHg7XG5cbiAgICB0aGlzLnVuaXRJQnVmZmVyID0gdGhpcy5nbC5jcmVhdGVCdWZmZXIoKTtcbiAgICB0aGlzLmdsLmJpbmRCdWZmZXIodGhpcy5nbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgdGhpcy51bml0SUJ1ZmZlcik7XG4gICAgdGhpcy5nbC5idWZmZXJEYXRhKHRoaXMuZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50MTZBcnJheSh2cyksIHRoaXMuZ2wuU1RBVElDX0RSQVcpO1xuXG4gICAgbGV0IGk7XG4gICAgbGV0IGlkcyA9IFtdO1xuICAgIGZvciAoaSA9IDA7IGkgPCAxMDA7IGkrKykgaWRzLnB1c2goaSk7XG4gICAgaWR4ID0gbmV3IFVpbnQxNkFycmF5KGlkcyk7XG5cbiAgICB0aGlzLnVuaXRJMzMgPSB0aGlzLmdsLmNyZWF0ZUJ1ZmZlcigpO1xuICAgIHRoaXMuZ2wuYmluZEJ1ZmZlcih0aGlzLmdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCB0aGlzLnVuaXRJMzMpO1xuICAgIHRoaXMuZ2wuYnVmZmVyRGF0YSh0aGlzLmdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpZHgsIHRoaXMuZ2wuU1RBVElDX0RSQVcpO1xuXG4gICAgaWRzID0gW107XG4gICAgZm9yIChpID0gMDsgaSA8IDEwMDsgaSsrKSBpZHMucHVzaChpLCBpICsgMSwgaSArIDIpO1xuICAgIGlkeCA9IG5ldyBVaW50MTZBcnJheShpZHMpO1xuXG4gICAgdGhpcy5zdHJpcEJ1ZmZlciA9IHRoaXMuZ2wuY3JlYXRlQnVmZmVyKCk7XG4gICAgdGhpcy5nbC5iaW5kQnVmZmVyKHRoaXMuZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHRoaXMuc3RyaXBCdWZmZXIpO1xuICAgIHRoaXMuZ2wuYnVmZmVyRGF0YSh0aGlzLmdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpZHgsIHRoaXMuZ2wuU1RBVElDX0RSQVcpO1xuICB9XG5cbiAgY3JlYXRlQ2lyY2xlKHJhaWR1cykge1xuICAgIHRoaXMuY2lyY2xlQ2FudmFzUmFkaXVzID0gV2ViR0xVdGlsLm5ocG90KFV0aWwuaW5pdFZhbHVlKHJhaWR1cywgMzIpKTtcbiAgICBjb25zdCBjYW52YXMgPSBEb21VdGlsLmNyZWF0ZUNhbnZhcyhcImNpcmNsZV9jYW52YXNcIiwgdGhpcy5jaXJjbGVDYW52YXNSYWRpdXMgKiAyLCB0aGlzLmNpcmNsZUNhbnZhc1JhZGl1cyAqIDIpO1xuICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcbiAgICBjb250ZXh0LmFyYyh0aGlzLmNpcmNsZUNhbnZhc1JhZGl1cywgdGhpcy5jaXJjbGVDYW52YXNSYWRpdXMsIHRoaXMuY2lyY2xlQ2FudmFzUmFkaXVzLCAwLCBNYXRoLlBJICogMiwgdHJ1ZSk7XG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICBjb250ZXh0LmZpbGxTdHlsZSA9IFwiI0ZGRlwiO1xuICAgIGNvbnRleHQuZmlsbCgpO1xuXG4gICAgcmV0dXJuIGNhbnZhcy50b0RhdGFVUkwoKTtcbiAgfVxuXG4gIGRyYXdJbWcyQ2FudmFzKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgX3cgPSBwYXJ0aWNsZS5ib2R5LndpZHRoO1xuICAgIGNvbnN0IF9oID0gcGFydGljbGUuYm9keS5oZWlnaHQ7XG5cbiAgICBjb25zdCBfd2lkdGggPSBXZWJHTFV0aWwubmhwb3QocGFydGljbGUuYm9keS53aWR0aCk7XG4gICAgY29uc3QgX2hlaWdodCA9IFdlYkdMVXRpbC5uaHBvdChwYXJ0aWNsZS5ib2R5LmhlaWdodCk7XG5cbiAgICBjb25zdCBfc2NhbGVYID0gcGFydGljbGUuYm9keS53aWR0aCAvIF93aWR0aDtcbiAgICBjb25zdCBfc2NhbGVZID0gcGFydGljbGUuYm9keS5oZWlnaHQgLyBfaGVpZ2h0O1xuXG4gICAgaWYgKCF0aGlzLnRleHR1cmVidWZmZXJzW3BhcnRpY2xlLmRhdGEuc3JjXSlcbiAgICAgIHRoaXMudGV4dHVyZWJ1ZmZlcnNbcGFydGljbGUuZGF0YS5zcmNdID0gW1xuICAgICAgICB0aGlzLmdsLmNyZWF0ZVRleHR1cmUoKSxcbiAgICAgICAgdGhpcy5nbC5jcmVhdGVCdWZmZXIoKSxcbiAgICAgICAgdGhpcy5nbC5jcmVhdGVCdWZmZXIoKVxuICAgICAgXTtcblxuICAgIHBhcnRpY2xlLmRhdGEudGV4dHVyZSA9IHRoaXMudGV4dHVyZWJ1ZmZlcnNbcGFydGljbGUuZGF0YS5zcmNdWzBdO1xuICAgIHBhcnRpY2xlLmRhdGEudmNCdWZmZXIgPSB0aGlzLnRleHR1cmVidWZmZXJzW3BhcnRpY2xlLmRhdGEuc3JjXVsxXTtcbiAgICBwYXJ0aWNsZS5kYXRhLnRjQnVmZmVyID0gdGhpcy50ZXh0dXJlYnVmZmVyc1twYXJ0aWNsZS5kYXRhLnNyY11bMl07XG5cbiAgICB0aGlzLmdsLmJpbmRCdWZmZXIodGhpcy5nbC5BUlJBWV9CVUZGRVIsIHBhcnRpY2xlLmRhdGEudGNCdWZmZXIpO1xuICAgIHRoaXMuZ2wuYnVmZmVyRGF0YShcbiAgICAgIHRoaXMuZ2wuQVJSQVlfQlVGRkVSLFxuICAgICAgbmV3IEZsb2F0MzJBcnJheShbMC4wLCAwLjAsIF9zY2FsZVgsIDAuMCwgMC4wLCBfc2NhbGVZLCBfc2NhbGVZLCBfc2NhbGVZXSksXG4gICAgICB0aGlzLmdsLlNUQVRJQ19EUkFXXG4gICAgKTtcbiAgICB0aGlzLmdsLmJpbmRCdWZmZXIodGhpcy5nbC5BUlJBWV9CVUZGRVIsIHBhcnRpY2xlLmRhdGEudmNCdWZmZXIpO1xuICAgIHRoaXMuZ2wuYnVmZmVyRGF0YShcbiAgICAgIHRoaXMuZ2wuQVJSQVlfQlVGRkVSLFxuICAgICAgbmV3IEZsb2F0MzJBcnJheShbMC4wLCAwLjAsIF93LCAwLjAsIDAuMCwgX2gsIF93LCBfaF0pLFxuICAgICAgdGhpcy5nbC5TVEFUSUNfRFJBV1xuICAgICk7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gcGFydGljbGUuZGF0YS5jYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgIGNvbnN0IGRhdGEgPSBjb250ZXh0LmdldEltYWdlRGF0YSgwLCAwLCBfd2lkdGgsIF9oZWlnaHQpO1xuXG4gICAgdGhpcy5nbC5iaW5kVGV4dHVyZSh0aGlzLmdsLlRFWFRVUkVfMkQsIHBhcnRpY2xlLmRhdGEudGV4dHVyZSk7XG4gICAgdGhpcy5nbC50ZXhJbWFnZTJEKHRoaXMuZ2wuVEVYVFVSRV8yRCwgMCwgdGhpcy5nbC5SR0JBLCB0aGlzLmdsLlJHQkEsIHRoaXMuZ2wuVU5TSUdORURfQllURSwgZGF0YSk7XG4gICAgdGhpcy5nbC50ZXhQYXJhbWV0ZXJpKHRoaXMuZ2wuVEVYVFVSRV8yRCwgdGhpcy5nbC5URVhUVVJFX01BR19GSUxURVIsIHRoaXMuZ2wuTElORUFSKTtcbiAgICB0aGlzLmdsLnRleFBhcmFtZXRlcmkodGhpcy5nbC5URVhUVVJFXzJELCB0aGlzLmdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgdGhpcy5nbC5MSU5FQVJfTUlQTUFQX05FQVJFU1QpO1xuICAgIHRoaXMuZ2wuZ2VuZXJhdGVNaXBtYXAodGhpcy5nbC5URVhUVVJFXzJEKTtcblxuICAgIHBhcnRpY2xlLmRhdGEudGV4dHVyZUxvYWRlZCA9IHRydWU7XG4gICAgcGFydGljbGUuZGF0YS50ZXh0dXJlV2lkdGggPSBfdztcbiAgICBwYXJ0aWNsZS5kYXRhLnRleHR1cmVIZWlnaHQgPSBfaDtcbiAgfVxuXG4gIG9uUHJvdG9uVXBkYXRlKCkge1xuICAgIC8vIHRoaXMuZ2wuY2xlYXJDb2xvcigwLCAwLCAwLCAxKTtcbiAgICAvLyB0aGlzLmdsLmNsZWFyKHRoaXMuZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IHRoaXMuZ2wuREVQVEhfQlVGRkVSX0JJVCk7XG4gIH1cblxuICBvblBhcnRpY2xlQ3JlYXRlZChwYXJ0aWNsZSkge1xuICAgIHBhcnRpY2xlLmRhdGEudGV4dHVyZUxvYWRlZCA9IGZhbHNlO1xuICAgIHBhcnRpY2xlLmRhdGEudG1hdCA9IE1hdDMuY3JlYXRlKCk7XG4gICAgcGFydGljbGUuZGF0YS50bWF0WzhdID0gMTtcbiAgICBwYXJ0aWNsZS5kYXRhLmltYXQgPSBNYXQzLmNyZWF0ZSgpO1xuICAgIHBhcnRpY2xlLmRhdGEuaW1hdFs4XSA9IDE7XG5cbiAgICBpZiAocGFydGljbGUuYm9keSkge1xuICAgICAgSW1nVXRpbC5nZXRJbWdGcm9tQ2FjaGUocGFydGljbGUuYm9keSwgdGhpcy5hZGRJbWcyQm9keSwgcGFydGljbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBJbWdVdGlsLmdldEltZ0Zyb21DYWNoZSh0aGlzLmNpcmNsZUNhbnZhc1VSTCwgdGhpcy5hZGRJbWcyQm9keSwgcGFydGljbGUpO1xuICAgICAgcGFydGljbGUuZGF0YS5vbGRTY2FsZSA9IHBhcnRpY2xlLnJhZGl1cyAvIHRoaXMuY2lyY2xlQ2FudmFzUmFkaXVzO1xuICAgIH1cbiAgfVxuXG4gIC8vIHByaXZhdGVcbiAgYWRkSW1nMkJvZHkoaW1nLCBwYXJ0aWNsZSkge1xuICAgIGlmIChwYXJ0aWNsZS5kZWFkKSByZXR1cm47XG4gICAgcGFydGljbGUuYm9keSA9IGltZztcbiAgICBwYXJ0aWNsZS5kYXRhLnNyYyA9IGltZy5zcmM7XG4gICAgcGFydGljbGUuZGF0YS5jYW52YXMgPSBJbWdVdGlsLmdldENhbnZhc0Zyb21DYWNoZShpbWcpO1xuICAgIHBhcnRpY2xlLmRhdGEub2xkU2NhbGUgPSAxO1xuXG4gICAgdGhpcy5kcmF3SW1nMkNhbnZhcyhwYXJ0aWNsZSk7XG4gIH1cblxuICBvblBhcnRpY2xlVXBkYXRlKHBhcnRpY2xlKSB7XG4gICAgaWYgKHBhcnRpY2xlLmRhdGEudGV4dHVyZUxvYWRlZCkge1xuICAgICAgdGhpcy51cGRhdGVNYXRyaXgocGFydGljbGUpO1xuXG4gICAgICB0aGlzLmdsLnVuaWZvcm0zZih0aGlzLnNwcm9ncmFtLmNvbG9yLCBwYXJ0aWNsZS5yZ2IuciAvIDI1NSwgcGFydGljbGUucmdiLmcgLyAyNTUsIHBhcnRpY2xlLnJnYi5iIC8gMjU1KTtcbiAgICAgIHRoaXMuZ2wudW5pZm9ybU1hdHJpeDNmdih0aGlzLnNwcm9ncmFtLnRNYXRVbmlmb3JtLCBmYWxzZSwgdGhpcy5tc3RhY2sudG9wKCkpO1xuXG4gICAgICB0aGlzLmdsLmJpbmRCdWZmZXIodGhpcy5nbC5BUlJBWV9CVUZGRVIsIHBhcnRpY2xlLmRhdGEudmNCdWZmZXIpO1xuICAgICAgdGhpcy5nbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHRoaXMuc3Byb2dyYW0udnBhLCAyLCB0aGlzLmdsLkZMT0FULCBmYWxzZSwgMCwgMCk7XG4gICAgICB0aGlzLmdsLmJpbmRCdWZmZXIodGhpcy5nbC5BUlJBWV9CVUZGRVIsIHBhcnRpY2xlLmRhdGEudGNCdWZmZXIpO1xuICAgICAgdGhpcy5nbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKHRoaXMuc3Byb2dyYW0udGNhLCAyLCB0aGlzLmdsLkZMT0FULCBmYWxzZSwgMCwgMCk7XG4gICAgICB0aGlzLmdsLmJpbmRUZXh0dXJlKHRoaXMuZ2wuVEVYVFVSRV8yRCwgcGFydGljbGUuZGF0YS50ZXh0dXJlKTtcbiAgICAgIHRoaXMuZ2wudW5pZm9ybTFpKHRoaXMuc3Byb2dyYW0uc2FtcGxlclVuaWZvcm0sIDApO1xuICAgICAgdGhpcy5nbC5iaW5kQnVmZmVyKHRoaXMuZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHRoaXMudW5pdElCdWZmZXIpO1xuXG4gICAgICB0aGlzLmdsLmRyYXdFbGVtZW50cyh0aGlzLmdsLlRSSUFOR0xFUywgNiwgdGhpcy5nbC5VTlNJR05FRF9TSE9SVCwgMCk7XG4gICAgICB0aGlzLm1zdGFjay5wb3AoKTtcbiAgICB9XG4gIH1cblxuICBvblBhcnRpY2xlRGVhZChwYXJ0aWNsZSkge31cblxuICB1cGRhdGVNYXRyaXgocGFydGljbGUpIHtcbiAgICBjb25zdCBtb3ZlT3JpZ2luTWF0cml4ID0gV2ViR0xVdGlsLm1ha2VUcmFuc2xhdGlvbihcbiAgICAgIC1wYXJ0aWNsZS5kYXRhLnRleHR1cmVXaWR0aCAvIDIsXG4gICAgICAtcGFydGljbGUuZGF0YS50ZXh0dXJlSGVpZ2h0IC8gMlxuICAgICk7XG4gICAgY29uc3QgdHJhbnNsYXRpb25NYXRyaXggPSBXZWJHTFV0aWwubWFrZVRyYW5zbGF0aW9uKHBhcnRpY2xlLnAueCwgcGFydGljbGUucC55KTtcblxuICAgIGNvbnN0IGFuZ2VsID0gcGFydGljbGUucm90YXRpb24gKiBNYXRoVXRpbC5QSV8xODA7XG4gICAgY29uc3Qgcm90YXRpb25NYXRyaXggPSBXZWJHTFV0aWwubWFrZVJvdGF0aW9uKGFuZ2VsKTtcblxuICAgIGNvbnN0IHNjYWxlID0gcGFydGljbGUuc2NhbGUgKiBwYXJ0aWNsZS5kYXRhLm9sZFNjYWxlO1xuICAgIGNvbnN0IHNjYWxlTWF0cml4ID0gV2ViR0xVdGlsLm1ha2VTY2FsZShzY2FsZSwgc2NhbGUpO1xuICAgIGxldCBtYXRyaXggPSBXZWJHTFV0aWwubWF0cml4TXVsdGlwbHkobW92ZU9yaWdpbk1hdHJpeCwgc2NhbGVNYXRyaXgpO1xuXG4gICAgbWF0cml4ID0gV2ViR0xVdGlsLm1hdHJpeE11bHRpcGx5KG1hdHJpeCwgcm90YXRpb25NYXRyaXgpO1xuICAgIG1hdHJpeCA9IFdlYkdMVXRpbC5tYXRyaXhNdWx0aXBseShtYXRyaXgsIHRyYW5zbGF0aW9uTWF0cml4KTtcblxuICAgIE1hdDMuaW52ZXJzZShtYXRyaXgsIHBhcnRpY2xlLmRhdGEuaW1hdCk7XG4gICAgbWF0cml4WzJdID0gcGFydGljbGUuYWxwaGE7XG5cbiAgICB0aGlzLm1zdGFjay5wdXNoKG1hdHJpeCk7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICB0aGlzLmdsID0gbnVsbDtcbiAgICB0aGlzLm1zdGFjayA9IG51bGw7XG4gICAgdGhpcy51bWF0ID0gbnVsbDtcbiAgICB0aGlzLnNtYXQgPSBudWxsO1xuICAgIHRoaXMudGV4dHVyZWJ1ZmZlcnMgPSBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQgQmFzZVJlbmRlcmVyIGZyb20gXCIuL0Jhc2VSZW5kZXJlclwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDdXN0b21SZW5kZXJlciBleHRlbmRzIEJhc2VSZW5kZXJlciB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQpIHtcbiAgICBzdXBlcihlbGVtZW50KTtcblxuICAgIHRoaXMubmFtZSA9IFwiQ3VzdG9tUmVuZGVyZXJcIjtcbiAgfVxufVxuIiwiaW1wb3J0IFpvbmUgZnJvbSBcIi4vWm9uZVwiO1xuaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi4vbWF0aC9NYXRoVXRpbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaW5lWm9uZSBleHRlbmRzIFpvbmUge1xuICBjb25zdHJ1Y3Rvcih4MSwgeTEsIHgyLCB5MiwgZGlyZWN0aW9uKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmICh4MiAtIHgxID49IDApIHtcbiAgICAgIHRoaXMueDEgPSB4MTtcbiAgICAgIHRoaXMueTEgPSB5MTtcbiAgICAgIHRoaXMueDIgPSB4MjtcbiAgICAgIHRoaXMueTIgPSB5MjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy54MSA9IHgyO1xuICAgICAgdGhpcy55MSA9IHkyO1xuICAgICAgdGhpcy54MiA9IHgxO1xuICAgICAgdGhpcy55MiA9IHkxO1xuICAgIH1cblxuICAgIHRoaXMuZHggPSB0aGlzLngyIC0gdGhpcy54MTtcbiAgICB0aGlzLmR5ID0gdGhpcy55MiAtIHRoaXMueTE7XG5cbiAgICB0aGlzLm1pbnggPSBNYXRoLm1pbih0aGlzLngxLCB0aGlzLngyKTtcbiAgICB0aGlzLm1pbnkgPSBNYXRoLm1pbih0aGlzLnkxLCB0aGlzLnkyKTtcbiAgICB0aGlzLm1heHggPSBNYXRoLm1heCh0aGlzLngxLCB0aGlzLngyKTtcbiAgICB0aGlzLm1heHkgPSBNYXRoLm1heCh0aGlzLnkxLCB0aGlzLnkyKTtcblxuICAgIHRoaXMuZG90ID0gdGhpcy54MiAqIHRoaXMueTEgLSB0aGlzLngxICogdGhpcy55MjtcbiAgICB0aGlzLnh4eXkgPSB0aGlzLmR4ICogdGhpcy5keCArIHRoaXMuZHkgKiB0aGlzLmR5O1xuXG4gICAgdGhpcy5ncmFkaWVudCA9IHRoaXMuZ2V0R3JhZGllbnQoKTtcbiAgICB0aGlzLmxlbmd0aCA9IHRoaXMuZ2V0TGVuZ3RoKCk7XG4gICAgdGhpcy5kaXJlY3Rpb24gPSBVdGlsLmluaXRWYWx1ZShkaXJlY3Rpb24sIFwiPlwiKTtcbiAgfVxuXG4gIGdldFBvc2l0aW9uKCkge1xuICAgIHRoaXMucmFuZG9tID0gTWF0aC5yYW5kb20oKTtcbiAgICB0aGlzLnZlY3Rvci54ID0gdGhpcy54MSArIHRoaXMucmFuZG9tICogdGhpcy5sZW5ndGggKiBNYXRoLmNvcyh0aGlzLmdyYWRpZW50KTtcbiAgICB0aGlzLnZlY3Rvci55ID0gdGhpcy55MSArIHRoaXMucmFuZG9tICogdGhpcy5sZW5ndGggKiBNYXRoLnNpbih0aGlzLmdyYWRpZW50KTtcblxuICAgIHJldHVybiB0aGlzLnZlY3RvcjtcbiAgfVxuXG4gIGdldERpcmVjdGlvbih4LCB5KSB7XG4gICAgY29uc3QgQSA9IHRoaXMuZHk7XG4gICAgY29uc3QgQiA9IC10aGlzLmR4O1xuICAgIGNvbnN0IEMgPSB0aGlzLmRvdDtcbiAgICBjb25zdCBEID0gQiA9PT0gMCA/IDEgOiBCO1xuXG4gICAgaWYgKChBICogeCArIEIgKiB5ICsgQykgKiBEID4gMCkgcmV0dXJuIHRydWU7XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXREaXN0YW5jZSh4LCB5KSB7XG4gICAgY29uc3QgQSA9IHRoaXMuZHk7XG4gICAgY29uc3QgQiA9IC10aGlzLmR4O1xuICAgIGNvbnN0IEMgPSB0aGlzLmRvdDtcbiAgICBjb25zdCBEID0gQSAqIHggKyBCICogeSArIEM7XG5cbiAgICByZXR1cm4gRCAvIE1hdGguc3FydCh0aGlzLnh4eXkpO1xuICB9XG5cbiAgZ2V0U3ltbWV0cmljKHYpIHtcbiAgICBjb25zdCB0aGEyID0gdi5nZXRHcmFkaWVudCgpO1xuICAgIGNvbnN0IHRoYTEgPSB0aGlzLmdldEdyYWRpZW50KCk7XG4gICAgY29uc3QgdGhhID0gMiAqICh0aGExIC0gdGhhMik7XG5cbiAgICBjb25zdCBvbGR4ID0gdi54O1xuICAgIGNvbnN0IG9sZHkgPSB2Lnk7XG5cbiAgICB2LnggPSBvbGR4ICogTWF0aC5jb3ModGhhKSAtIG9sZHkgKiBNYXRoLnNpbih0aGEpO1xuICAgIHYueSA9IG9sZHggKiBNYXRoLnNpbih0aGEpICsgb2xkeSAqIE1hdGguY29zKHRoYSk7XG5cbiAgICByZXR1cm4gdjtcbiAgfVxuXG4gIGdldEdyYWRpZW50KCkge1xuICAgIHJldHVybiBNYXRoLmF0YW4yKHRoaXMuZHksIHRoaXMuZHgpO1xuICB9XG5cbiAgcmFuZ2VPdXQocGFydGljbGUpIHtcbiAgICBjb25zdCBhbmdsZSA9IE1hdGguYWJzKHRoaXMuZ2V0R3JhZGllbnQoKSk7XG5cbiAgICBpZiAoYW5nbGUgPD0gTWF0aFV0aWwuUEkgLyA0KSB7XG4gICAgICBpZiAocGFydGljbGUucC54IDw9IHRoaXMubWF4eCAmJiBwYXJ0aWNsZS5wLnggPj0gdGhpcy5taW54KSByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHBhcnRpY2xlLnAueSA8PSB0aGlzLm1heHkgJiYgcGFydGljbGUucC55ID49IHRoaXMubWlueSkgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0TGVuZ3RoKCkge1xuICAgIHJldHVybiBNYXRoLnNxcnQodGhpcy5keCAqIHRoaXMuZHggKyB0aGlzLmR5ICogdGhpcy5keSk7XG4gIH1cblxuICBjcm9zc2luZyhwYXJ0aWNsZSkge1xuICAgIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJkZWFkXCIpIHtcbiAgICAgIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gXCI+XCIgfHwgdGhpcy5kaXJlY3Rpb24gPT09IFwiUlwiIHx8IHRoaXMuZGlyZWN0aW9uID09PSBcInJpZ2h0XCIgfHwgdGhpcy5kaXJlY3Rpb24gPT09IFwiZG93blwiKSB7XG4gICAgICAgIGlmICghdGhpcy5yYW5nZU91dChwYXJ0aWNsZSkpIHJldHVybjtcbiAgICAgICAgaWYgKHRoaXMuZ2V0RGlyZWN0aW9uKHBhcnRpY2xlLnAueCwgcGFydGljbGUucC55KSkgcGFydGljbGUuZGVhZCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXRoaXMucmFuZ2VPdXQocGFydGljbGUpKSByZXR1cm47XG4gICAgICAgIGlmICghdGhpcy5nZXREaXJlY3Rpb24ocGFydGljbGUucC54LCBwYXJ0aWNsZS5wLnkpKSBwYXJ0aWNsZS5kZWFkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuY3Jvc3NUeXBlID09PSBcImJvdW5kXCIpIHtcbiAgICAgIGlmICghdGhpcy5yYW5nZU91dChwYXJ0aWNsZSkpIHJldHVybjtcblxuICAgICAgaWYgKHRoaXMuZ2V0RGlzdGFuY2UocGFydGljbGUucC54LCBwYXJ0aWNsZS5wLnkpIDw9IHBhcnRpY2xlLnJhZGl1cykge1xuICAgICAgICBpZiAodGhpcy5keCA9PT0gMCkge1xuICAgICAgICAgIHBhcnRpY2xlLnYueCAqPSAtMTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmR5ID09PSAwKSB7XG4gICAgICAgICAgcGFydGljbGUudi55ICo9IC0xO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZ2V0U3ltbWV0cmljKHBhcnRpY2xlLnYpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJjcm9zc1wiKSB7XG4gICAgICBpZiAodGhpcy5hbGVydCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiU29ycnksIExpbmVab25lIGRvZXMgbm90IHN1cHBvcnQgY3Jvc3MgbWV0aG9kIVwiKTtcbiAgICAgICAgdGhpcy5hbGVydCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IFpvbmUgZnJvbSBcIi4vWm9uZVwiO1xuaW1wb3J0IE1hdGhVdGlsIGZyb20gXCIuLi9tYXRoL01hdGhVdGlsXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENpcmNsZVpvbmUgZXh0ZW5kcyBab25lIHtcbiAgY29uc3RydWN0b3IoeCwgeSwgcmFkaXVzKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgICB0aGlzLnJhZGl1cyA9IHJhZGl1cztcbiAgICB0aGlzLmFuZ2xlID0gMDtcbiAgICB0aGlzLmNlbnRlciA9IHsgeCwgeSB9O1xuICB9XG5cbiAgZ2V0UG9zaXRpb24oKSB7XG4gICAgdGhpcy5hbmdsZSA9IE1hdGhVdGlsLlBJeDIgKiBNYXRoLnJhbmRvbSgpO1xuICAgIHRoaXMucmFuZG9tUmFkaXVzID0gTWF0aC5yYW5kb20oKSAqIHRoaXMucmFkaXVzO1xuICAgIHRoaXMudmVjdG9yLnggPSB0aGlzLnggKyB0aGlzLnJhbmRvbVJhZGl1cyAqIE1hdGguY29zKHRoaXMuYW5nbGUpO1xuICAgIHRoaXMudmVjdG9yLnkgPSB0aGlzLnkgKyB0aGlzLnJhbmRvbVJhZGl1cyAqIE1hdGguc2luKHRoaXMuYW5nbGUpO1xuXG4gICAgcmV0dXJuIHRoaXMudmVjdG9yO1xuICB9XG5cbiAgc2V0Q2VudGVyKHgsIHkpIHtcbiAgICB0aGlzLmNlbnRlci54ID0geDtcbiAgICB0aGlzLmNlbnRlci55ID0geTtcbiAgfVxuXG4gIGNyb3NzaW5nKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgZCA9IHBhcnRpY2xlLnAuZGlzdGFuY2VUbyh0aGlzLmNlbnRlcik7XG5cbiAgICBpZiAodGhpcy5jcm9zc1R5cGUgPT09IFwiZGVhZFwiKSB7XG4gICAgICBpZiAoZCAtIHBhcnRpY2xlLnJhZGl1cyA+IHRoaXMucmFkaXVzKSBwYXJ0aWNsZS5kZWFkID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3Jvc3NUeXBlID09PSBcImJvdW5kXCIpIHtcbiAgICAgIGlmIChkICsgcGFydGljbGUucmFkaXVzID49IHRoaXMucmFkaXVzKSB0aGlzLmdldFN5bW1ldHJpYyhwYXJ0aWNsZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJjcm9zc1wiKSB7XG4gICAgICBpZiAodGhpcy5hbGVydCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiU29ycnksIENpcmNsZVpvbmUgZG9lcyBub3Qgc3VwcG9ydCBjcm9zcyBtZXRob2QhXCIpO1xuICAgICAgICB0aGlzLmFsZXJ0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0U3ltbWV0cmljKHBhcnRpY2xlKSB7XG4gICAgY29uc3QgdGhhMiA9IHBhcnRpY2xlLnYuZ2V0R3JhZGllbnQoKTtcbiAgICBjb25zdCB0aGExID0gdGhpcy5nZXRHcmFkaWVudChwYXJ0aWNsZSk7XG5cbiAgICBjb25zdCB0aGEgPSAyICogKHRoYTEgLSB0aGEyKTtcbiAgICBjb25zdCBvbGR4ID0gcGFydGljbGUudi54O1xuICAgIGNvbnN0IG9sZHkgPSBwYXJ0aWNsZS52Lnk7XG5cbiAgICBwYXJ0aWNsZS52LnggPSBvbGR4ICogTWF0aC5jb3ModGhhKSAtIG9sZHkgKiBNYXRoLnNpbih0aGEpO1xuICAgIHBhcnRpY2xlLnYueSA9IG9sZHggKiBNYXRoLnNpbih0aGEpICsgb2xkeSAqIE1hdGguY29zKHRoYSk7XG4gIH1cblxuICBnZXRHcmFkaWVudChwYXJ0aWNsZSkge1xuICAgIHJldHVybiAtTWF0aFV0aWwuUElfMiArIE1hdGguYXRhbjIocGFydGljbGUucC55IC0gdGhpcy5jZW50ZXIueSwgcGFydGljbGUucC54IC0gdGhpcy5jZW50ZXIueCk7XG4gIH1cbn1cbiIsImltcG9ydCBab25lIGZyb20gXCIuL1pvbmVcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVjdFpvbmUgZXh0ZW5kcyBab25lIHtcbiAgY29uc3RydWN0b3IoeCwgeSwgd2lkdGgsIGhlaWdodCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICB9XG5cbiAgZ2V0UG9zaXRpb24oKSB7XG4gICAgdGhpcy52ZWN0b3IueCA9IHRoaXMueCArIE1hdGgucmFuZG9tKCkgKiB0aGlzLndpZHRoO1xuICAgIHRoaXMudmVjdG9yLnkgPSB0aGlzLnkgKyBNYXRoLnJhbmRvbSgpICogdGhpcy5oZWlnaHQ7XG5cbiAgICByZXR1cm4gdGhpcy52ZWN0b3I7XG4gIH1cblxuICBjcm9zc2luZyhwYXJ0aWNsZSkge1xuICAgIC8vIHBhcnRpY2xlIGRlYWQgem9uZVxuICAgIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJkZWFkXCIpIHtcbiAgICAgIGlmIChwYXJ0aWNsZS5wLnggKyBwYXJ0aWNsZS5yYWRpdXMgPCB0aGlzLngpIHBhcnRpY2xlLmRlYWQgPSB0cnVlO1xuICAgICAgZWxzZSBpZiAocGFydGljbGUucC54IC0gcGFydGljbGUucmFkaXVzID4gdGhpcy54ICsgdGhpcy53aWR0aCkgcGFydGljbGUuZGVhZCA9IHRydWU7XG5cbiAgICAgIGlmIChwYXJ0aWNsZS5wLnkgKyBwYXJ0aWNsZS5yYWRpdXMgPCB0aGlzLnkpIHBhcnRpY2xlLmRlYWQgPSB0cnVlO1xuICAgICAgZWxzZSBpZiAocGFydGljbGUucC55IC0gcGFydGljbGUucmFkaXVzID4gdGhpcy55ICsgdGhpcy5oZWlnaHQpIHBhcnRpY2xlLmRlYWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIHBhcnRpY2xlIGJvdW5kIHpvbmVcbiAgICBlbHNlIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJib3VuZFwiKSB7XG4gICAgICBpZiAocGFydGljbGUucC54IC0gcGFydGljbGUucmFkaXVzIDwgdGhpcy54KSB7XG4gICAgICAgIHBhcnRpY2xlLnAueCA9IHRoaXMueCArIHBhcnRpY2xlLnJhZGl1cztcbiAgICAgICAgcGFydGljbGUudi54ICo9IC0xO1xuICAgICAgfSBlbHNlIGlmIChwYXJ0aWNsZS5wLnggKyBwYXJ0aWNsZS5yYWRpdXMgPiB0aGlzLnggKyB0aGlzLndpZHRoKSB7XG4gICAgICAgIHBhcnRpY2xlLnAueCA9IHRoaXMueCArIHRoaXMud2lkdGggLSBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgICAgIHBhcnRpY2xlLnYueCAqPSAtMTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcnRpY2xlLnAueSAtIHBhcnRpY2xlLnJhZGl1cyA8IHRoaXMueSkge1xuICAgICAgICBwYXJ0aWNsZS5wLnkgPSB0aGlzLnkgKyBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgICAgIHBhcnRpY2xlLnYueSAqPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAocGFydGljbGUucC55ICsgcGFydGljbGUucmFkaXVzID4gdGhpcy55ICsgdGhpcy5oZWlnaHQpIHtcbiAgICAgICAgcGFydGljbGUucC55ID0gdGhpcy55ICsgdGhpcy5oZWlnaHQgLSBwYXJ0aWNsZS5yYWRpdXM7XG4gICAgICAgIHBhcnRpY2xlLnYueSAqPSAtMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBwYXJ0aWNsZSBjcm9zcyB6b25lXG4gICAgZWxzZSBpZiAodGhpcy5jcm9zc1R5cGUgPT09IFwiY3Jvc3NcIikge1xuICAgICAgaWYgKHBhcnRpY2xlLnAueCArIHBhcnRpY2xlLnJhZGl1cyA8IHRoaXMueCAmJiBwYXJ0aWNsZS52LnggPD0gMCkge1xuICAgICAgICBwYXJ0aWNsZS5wLnggPSB0aGlzLnggKyB0aGlzLndpZHRoICsgcGFydGljbGUucmFkaXVzO1xuICAgICAgfSBlbHNlIGlmIChwYXJ0aWNsZS5wLnggLSBwYXJ0aWNsZS5yYWRpdXMgPiB0aGlzLnggKyB0aGlzLndpZHRoICYmIHBhcnRpY2xlLnYueCA+PSAwKSB7XG4gICAgICAgIHBhcnRpY2xlLnAueCA9IHRoaXMueCAtIHBhcnRpY2xlLnJhZGl1cztcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcnRpY2xlLnAueSArIHBhcnRpY2xlLnJhZGl1cyA8IHRoaXMueSAmJiBwYXJ0aWNsZS52LnkgPD0gMCkge1xuICAgICAgICBwYXJ0aWNsZS5wLnkgPSB0aGlzLnkgKyB0aGlzLmhlaWdodCArIHBhcnRpY2xlLnJhZGl1cztcbiAgICAgIH0gZWxzZSBpZiAocGFydGljbGUucC55IC0gcGFydGljbGUucmFkaXVzID4gdGhpcy55ICsgdGhpcy5oZWlnaHQgJiYgcGFydGljbGUudi55ID49IDApIHtcbiAgICAgICAgcGFydGljbGUucC55ID0gdGhpcy55IC0gcGFydGljbGUucmFkaXVzO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IFpvbmUgZnJvbSBcIi4vWm9uZVwiO1xuaW1wb3J0IFV0aWwgZnJvbSBcIi4uL3V0aWxzL1V0aWxcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW1hZ2Vab25lIGV4dGVuZHMgWm9uZSB7XG4gIGNvbnN0cnVjdG9yKGltYWdlRGF0YSwgeCwgeSwgZCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yZXNldChpbWFnZURhdGEsIHgsIHksIGQpO1xuICB9XG5cbiAgcmVzZXQoaW1hZ2VEYXRhLCB4LCB5LCBkKSB7XG4gICAgdGhpcy5pbWFnZURhdGEgPSBpbWFnZURhdGE7XG4gICAgdGhpcy54ID0gVXRpbC5pbml0VmFsdWUoeCwgMCk7XG4gICAgdGhpcy55ID0gVXRpbC5pbml0VmFsdWUoeSwgMCk7XG4gICAgdGhpcy5kID0gVXRpbC5pbml0VmFsdWUoZCwgMik7XG5cbiAgICB0aGlzLnZlY3RvcnMgPSBbXTtcbiAgICB0aGlzLnNldFZlY3RvcnMoKTtcbiAgfVxuXG4gIHNldFZlY3RvcnMoKSB7XG4gICAgbGV0IGksIGo7XG4gICAgY29uc3QgbGVuZ3RoMSA9IHRoaXMuaW1hZ2VEYXRhLndpZHRoO1xuICAgIGNvbnN0IGxlbmd0aDIgPSB0aGlzLmltYWdlRGF0YS5oZWlnaHQ7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoMTsgaSArPSB0aGlzLmQpIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCBsZW5ndGgyOyBqICs9IHRoaXMuZCkge1xuICAgICAgICBsZXQgaW5kZXggPSAoKGogPj4gMCkgKiBsZW5ndGgxICsgKGkgPj4gMCkpICogNDtcblxuICAgICAgICBpZiAodGhpcy5pbWFnZURhdGEuZGF0YVtpbmRleCArIDNdID4gMCkge1xuICAgICAgICAgIHRoaXMudmVjdG9ycy5wdXNoKHsgeDogaSArIHRoaXMueCwgeTogaiArIHRoaXMueSB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnZlY3RvcjtcbiAgfVxuXG4gIGdldEJvdW5kKHgsIHkpIHtcbiAgICBjb25zdCBpbmRleCA9ICgoeSA+PiAwKSAqIHRoaXMuaW1hZ2VEYXRhLndpZHRoICsgKHggPj4gMCkpICogNDtcbiAgICBpZiAodGhpcy5pbWFnZURhdGEuZGF0YVtpbmRleCArIDNdID4gMCkgcmV0dXJuIHRydWU7XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRQb3NpdGlvbigpIHtcbiAgICBjb25zdCB2ZWN0b3IgPSBVdGlsLmdldFJhbmRGcm9tQXJyYXkodGhpcy52ZWN0b3JzKTtcbiAgICByZXR1cm4gdGhpcy52ZWN0b3IuY29weSh2ZWN0b3IpO1xuICB9XG5cbiAgZ2V0Q29sb3IoeCwgeSkge1xuICAgIHggLT0gdGhpcy54O1xuICAgIHkgLT0gdGhpcy55O1xuICAgIGNvbnN0IGkgPSAoKHkgPj4gMCkgKiB0aGlzLmltYWdlRGF0YS53aWR0aCArICh4ID4+IDApKSAqIDQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcjogdGhpcy5pbWFnZURhdGEuZGF0YVtpXSxcbiAgICAgIGc6IHRoaXMuaW1hZ2VEYXRhLmRhdGFbaSArIDFdLFxuICAgICAgYjogdGhpcy5pbWFnZURhdGEuZGF0YVtpICsgMl0sXG4gICAgICBhOiB0aGlzLmltYWdlRGF0YS5kYXRhW2kgKyAzXVxuICAgIH07XG4gIH1cblxuICBjcm9zc2luZyhwYXJ0aWNsZSkge1xuICAgIGlmICh0aGlzLmNyb3NzVHlwZSA9PT0gXCJkZWFkXCIpIHtcbiAgICAgIGlmICh0aGlzLmdldEJvdW5kKHBhcnRpY2xlLnAueCAtIHRoaXMueCwgcGFydGljbGUucC55IC0gdGhpcy55KSkgcGFydGljbGUuZGVhZCA9IHRydWU7XG4gICAgICBlbHNlIHBhcnRpY2xlLmRlYWQgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY3Jvc3NUeXBlID09PSBcImJvdW5kXCIpIHtcbiAgICAgIGlmICghdGhpcy5nZXRCb3VuZChwYXJ0aWNsZS5wLnggLSB0aGlzLngsIHBhcnRpY2xlLnAueSAtIHRoaXMueSkpIHBhcnRpY2xlLnYubmVnYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgdGhpcy5pbWFnZURhdGEgPSBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQgQ29sb3JVdGlsIGZyb20gXCIuLi91dGlscy9Db2xvclV0aWxcIjtcbmltcG9ydCBDaXJjbGVab25lIGZyb20gXCIuLi96b25lL0NpcmNsZVpvbmVcIjtcbmltcG9ydCBQb2ludFpvbmUgZnJvbSBcIi4uL3pvbmUvUG9pbnRab25lXCI7XG5pbXBvcnQgTGluZVpvbmUgZnJvbSBcIi4uL3pvbmUvTGluZVpvbmVcIjtcbmltcG9ydCBSZWN0Wm9uZSBmcm9tIFwiLi4vem9uZS9SZWN0Wm9uZVwiO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGFkZEV2ZW50TGlzdGVuZXIocHJvdG9uLCBmdW5jKSB7XG4gICAgcHJvdG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJQUk9UT05fVVBEQVRFX0FGVEVSXCIsICgpID0+IGZ1bmMoKSk7XG4gIH0sXG5cbiAgZ2V0U3R5bGUoY29sb3IgPSBcIiNmZjAwMDBcIikge1xuICAgIGNvbnN0IHJnYiA9IENvbG9yVXRpbC5oZXhUb1JnYihjb2xvcik7XG4gICAgcmV0dXJuIGByZ2JhKCR7cmdiLnJ9LCAke3JnYi5nfSwgJHtyZ2IuYn0sIDAuNSlgO1xuICB9LFxuXG4gIGRyYXdab25lKHByb3RvbiwgY2FudmFzLCB6b25lLCBjbGVhcikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgIGNvbnN0IHN0eWxlID0gdGhpcy5nZXRTdHlsZSgpO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKHByb3RvbiwgKCkgPT4ge1xuICAgICAgaWYgKGNsZWFyKSBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuXG4gICAgICBpZiAoem9uZSBpbnN0YW5jZW9mIFBvaW50Wm9uZSkge1xuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IHN0eWxlO1xuICAgICAgICBjb250ZXh0LmFyYyh6b25lLngsIHpvbmUueSwgMTAsIDAsIE1hdGguUEkgKiAyLCB0cnVlKTtcbiAgICAgICAgY29udGV4dC5maWxsKCk7XG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgICB9IGVsc2UgaWYgKHpvbmUgaW5zdGFuY2VvZiBMaW5lWm9uZSkge1xuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gc3R5bGU7XG4gICAgICAgIGNvbnRleHQubW92ZVRvKHpvbmUueDEsIHpvbmUueTEpO1xuICAgICAgICBjb250ZXh0LmxpbmVUbyh6b25lLngyLCB6b25lLnkyKTtcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgIH0gZWxzZSBpZiAoem9uZSBpbnN0YW5jZW9mIFJlY3Rab25lKSB7XG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSBzdHlsZTtcbiAgICAgICAgY29udGV4dC5kcmF3UmVjdCh6b25lLngsIHpvbmUueSwgem9uZS53aWR0aCwgem9uZS5oZWlnaHQpO1xuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgfSBlbHNlIGlmICh6b25lIGluc3RhbmNlb2YgQ2lyY2xlWm9uZSkge1xuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gc3R5bGU7XG4gICAgICAgIGNvbnRleHQuYXJjKHpvbmUueCwgem9uZS55LCB6b25lLnJhZGl1cywgMCwgTWF0aC5QSSAqIDIsIHRydWUpO1xuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIGRyYXdFbWl0dGVyKHByb3RvbiwgY2FudmFzLCBlbWl0dGVyLCBjbGVhcikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICAgIGNvbnN0IHN0eWxlID0gdGhpcy5nZXRTdHlsZSgpO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKHByb3RvbiwgKCkgPT4ge1xuICAgICAgaWYgKGNsZWFyKSBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBzdHlsZTtcbiAgICAgIGNvbnRleHQuYXJjKGVtaXR0ZXIucC54LCBlbWl0dGVyLnAueSwgMTAsIDAsIE1hdGguUEkgKiAyLCB0cnVlKTtcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB9KTtcbiAgfVxufTtcbiIsImltcG9ydCBQcm90b24gZnJvbSBcIi4vY29yZS9Qcm90b25cIjtcbmltcG9ydCBQYXJ0aWNsZSBmcm9tIFwiLi9jb3JlL1BhcnRpY2xlXCI7XG5pbXBvcnQgUG9vbCBmcm9tIFwiLi9jb3JlL1Bvb2xcIjtcblxuaW1wb3J0IFV0aWwgZnJvbSBcIi4vdXRpbHMvVXRpbFwiO1xuaW1wb3J0IENvbG9yVXRpbCBmcm9tIFwiLi91dGlscy9Db2xvclV0aWxcIjtcbmltcG9ydCBNYXRoVXRpbCBmcm9tIFwiLi9tYXRoL01hdGhVdGlsXCI7XG5pbXBvcnQgVmVjdG9yMkQgZnJvbSBcIi4vbWF0aC9WZWN0b3IyRFwiO1xuaW1wb3J0IFBvbGFyMkQgZnJvbSBcIi4vbWF0aC9Qb2xhcjJEXCI7XG5pbXBvcnQgTWF0MyBmcm9tIFwiLi9tYXRoL01hdDNcIjtcbmltcG9ydCBTcGFuIGZyb20gXCIuL21hdGgvU3BhblwiO1xuaW1wb3J0IEFycmF5U3BhbiBmcm9tIFwiLi9tYXRoL0FycmF5U3BhblwiO1xuaW1wb3J0IFJlY3RhbmdsZSBmcm9tIFwiLi9tYXRoL1JlY3RhbmdsZVwiO1xuaW1wb3J0IGVhc2UgZnJvbSBcIi4vbWF0aC9lYXNlXCI7XG5cbmltcG9ydCBSYXRlIGZyb20gXCIuL2luaXRpYWxpemUvUmF0ZVwiO1xuaW1wb3J0IEluaXRpYWxpemUgZnJvbSBcIi4vaW5pdGlhbGl6ZS9Jbml0aWFsaXplXCI7XG5pbXBvcnQgTGlmZSBmcm9tIFwiLi9pbml0aWFsaXplL0xpZmVcIjtcbmltcG9ydCBQb3NpdGlvbiBmcm9tIFwiLi9pbml0aWFsaXplL1Bvc2l0aW9uXCI7XG5pbXBvcnQgVmVsb2NpdHkgZnJvbSBcIi4vaW5pdGlhbGl6ZS9WZWxvY2l0eVwiO1xuaW1wb3J0IE1hc3MgZnJvbSBcIi4vaW5pdGlhbGl6ZS9NYXNzXCI7XG5pbXBvcnQgUmFkaXVzIGZyb20gXCIuL2luaXRpYWxpemUvUmFkaXVzXCI7XG5pbXBvcnQgQm9keSBmcm9tIFwiLi9pbml0aWFsaXplL0JvZHlcIjtcblxuaW1wb3J0IEJlaGF2aW91ciBmcm9tIFwiLi9iZWhhdmlvdXIvQmVoYXZpb3VyXCI7XG5pbXBvcnQgRm9yY2UgZnJvbSBcIi4vYmVoYXZpb3VyL0ZvcmNlXCI7XG5pbXBvcnQgQXR0cmFjdGlvbiBmcm9tIFwiLi9iZWhhdmlvdXIvQXR0cmFjdGlvblwiO1xuaW1wb3J0IFJhbmRvbURyaWZ0IGZyb20gXCIuL2JlaGF2aW91ci9SYW5kb21EcmlmdFwiO1xuaW1wb3J0IEdyYXZpdHkgZnJvbSBcIi4vYmVoYXZpb3VyL0dyYXZpdHlcIjtcbmltcG9ydCBDb2xsaXNpb24gZnJvbSBcIi4vYmVoYXZpb3VyL0NvbGxpc2lvblwiO1xuaW1wb3J0IENyb3NzWm9uZSBmcm9tIFwiLi9iZWhhdmlvdXIvQ3Jvc3Nab25lXCI7XG5pbXBvcnQgQWxwaGEgZnJvbSBcIi4vYmVoYXZpb3VyL0FscGhhXCI7XG5pbXBvcnQgU2NhbGUgZnJvbSBcIi4vYmVoYXZpb3VyL1NjYWxlXCI7XG5pbXBvcnQgUm90YXRlIGZyb20gXCIuL2JlaGF2aW91ci9Sb3RhdGVcIjtcbmltcG9ydCBDb2xvciBmcm9tIFwiLi9iZWhhdmlvdXIvQ29sb3JcIjtcbmltcG9ydCBDeWNsb25lIGZyb20gXCIuL2JlaGF2aW91ci9DeWNsb25lXCI7XG5pbXBvcnQgUmVwdWxzaW9uIGZyb20gXCIuL2JlaGF2aW91ci9SZXB1bHNpb25cIjtcbmltcG9ydCBHcmF2aXR5V2VsbCBmcm9tIFwiLi9iZWhhdmlvdXIvR3Jhdml0eVdlbGxcIjtcblxuaW1wb3J0IEVtaXR0ZXIgZnJvbSBcIi4vZW1pdHRlci9FbWl0dGVyXCI7XG5pbXBvcnQgQmVoYXZpb3VyRW1pdHRlciBmcm9tIFwiLi9lbWl0dGVyL0JlaGF2aW91ckVtaXR0ZXJcIjtcbmltcG9ydCBGb2xsb3dFbWl0dGVyIGZyb20gXCIuL2VtaXR0ZXIvRm9sbG93RW1pdHRlclwiO1xuXG5pbXBvcnQgQ2FudmFzUmVuZGVyZXIgZnJvbSBcIi4vcmVuZGVyL0NhbnZhc1JlbmRlcmVyXCI7XG5pbXBvcnQgRG9tUmVuZGVyZXIgZnJvbSBcIi4vcmVuZGVyL0RvbVJlbmRlcmVyXCI7XG5pbXBvcnQgRWFzZWxSZW5kZXJlciBmcm9tIFwiLi9yZW5kZXIvRWFzZWxSZW5kZXJlclwiO1xuaW1wb3J0IFBpeGVsUmVuZGVyZXIgZnJvbSBcIi4vcmVuZGVyL1BpeGVsUmVuZGVyZXJcIjtcbmltcG9ydCBQaXhpUmVuZGVyZXIgZnJvbSBcIi4vcmVuZGVyL1BpeGlSZW5kZXJlclwiO1xuaW1wb3J0IFdlYkdMUmVuZGVyZXIgZnJvbSBcIi4vcmVuZGVyL1dlYkdMUmVuZGVyZXJcIjtcbmltcG9ydCBDdXN0b21SZW5kZXJlciBmcm9tIFwiLi9yZW5kZXIvQ3VzdG9tUmVuZGVyZXJcIjtcblxuaW1wb3J0IFpvbmUgZnJvbSBcIi4vem9uZS9ab25lXCI7XG5pbXBvcnQgTGluZVpvbmUgZnJvbSBcIi4vem9uZS9MaW5lWm9uZVwiO1xuaW1wb3J0IENpcmNsZVpvbmUgZnJvbSBcIi4vem9uZS9DaXJjbGVab25lXCI7XG5pbXBvcnQgUG9pbnRab25lIGZyb20gXCIuL3pvbmUvUG9pbnRab25lXCI7XG5pbXBvcnQgUmVjdFpvbmUgZnJvbSBcIi4vem9uZS9SZWN0Wm9uZVwiO1xuaW1wb3J0IEltYWdlWm9uZSBmcm9tIFwiLi96b25lL0ltYWdlWm9uZVwiO1xuXG5pbXBvcnQgRGVidWcgZnJvbSBcIi4vZGVidWcvRGVidWdcIjtcblxuLy8gbmFtZXNwYWNlXG5Qcm90b24uUGFydGljbGUgPSBQYXJ0aWNsZTtcblByb3Rvbi5Qb29sID0gUG9vbDtcblxuUHJvdG9uLlV0aWwgPSBVdGlsO1xuUHJvdG9uLkNvbG9yVXRpbCA9IENvbG9yVXRpbDtcblByb3Rvbi5NYXRoVXRpbCA9IE1hdGhVdGlsO1xuUHJvdG9uLlZlY3RvcjJEID0gUHJvdG9uLlZlY3RvciA9IFZlY3RvcjJEO1xuUHJvdG9uLlBvbGFyMkQgPSBQcm90b24uUG9sYXIgPSBQb2xhcjJEO1xuUHJvdG9uLkFycmF5U3BhbiA9IEFycmF5U3BhbjtcblByb3Rvbi5SZWN0YW5nbGUgPSBSZWN0YW5nbGU7XG5Qcm90b24uUmF0ZSA9IFJhdGU7XG5Qcm90b24uZWFzZSA9IGVhc2U7XG5Qcm90b24uU3BhbiA9IFNwYW47XG5Qcm90b24uTWF0MyA9IE1hdDM7XG5Qcm90b24uZ2V0U3BhbiA9IChhLCBiLCBjZW50ZXIpID0+IG5ldyBTcGFuKGEsIGIsIGNlbnRlcik7XG5Qcm90b24uY3JlYXRlQXJyYXlTcGFuID0gQXJyYXlTcGFuLmNyZWF0ZUFycmF5U3BhbjtcblxuUHJvdG9uLkluaXRpYWxpemUgPSBQcm90b24uSW5pdCA9IEluaXRpYWxpemU7XG5Qcm90b24uTGlmZSA9IFByb3Rvbi5MID0gTGlmZTtcblByb3Rvbi5Qb3NpdGlvbiA9IFByb3Rvbi5QID0gUG9zaXRpb247XG5Qcm90b24uVmVsb2NpdHkgPSBQcm90b24uViA9IFZlbG9jaXR5O1xuUHJvdG9uLk1hc3MgPSBQcm90b24uTSA9IE1hc3M7XG5Qcm90b24uUmFkaXVzID0gUHJvdG9uLlIgPSBSYWRpdXM7XG5Qcm90b24uQm9keSA9IFByb3Rvbi5CID0gQm9keTtcblxuUHJvdG9uLkJlaGF2aW91ciA9IEJlaGF2aW91cjtcblByb3Rvbi5Gb3JjZSA9IFByb3Rvbi5GID0gRm9yY2U7XG5Qcm90b24uQXR0cmFjdGlvbiA9IFByb3Rvbi5BID0gQXR0cmFjdGlvbjtcblByb3Rvbi5SYW5kb21EcmlmdCA9IFByb3Rvbi5SRCA9IFJhbmRvbURyaWZ0O1xuUHJvdG9uLkdyYXZpdHkgPSBQcm90b24uRyA9IEdyYXZpdHk7XG5Qcm90b24uQ29sbGlzaW9uID0gQ29sbGlzaW9uO1xuUHJvdG9uLkNyb3NzWm9uZSA9IENyb3NzWm9uZTtcblByb3Rvbi5BbHBoYSA9IEFscGhhO1xuUHJvdG9uLlNjYWxlID0gUHJvdG9uLlMgPSBTY2FsZTtcblByb3Rvbi5Sb3RhdGUgPSBSb3RhdGU7XG5Qcm90b24uQ29sb3IgPSBDb2xvcjtcblByb3Rvbi5SZXB1bHNpb24gPSBSZXB1bHNpb247XG5Qcm90b24uQ3ljbG9uZSA9IEN5Y2xvbmU7XG5Qcm90b24uR3Jhdml0eVdlbGwgPSBHcmF2aXR5V2VsbDtcblxuUHJvdG9uLkVtaXR0ZXIgPSBFbWl0dGVyO1xuUHJvdG9uLkJlaGF2aW91ckVtaXR0ZXIgPSBCZWhhdmlvdXJFbWl0dGVyO1xuUHJvdG9uLkZvbGxvd0VtaXR0ZXIgPSBGb2xsb3dFbWl0dGVyO1xuXG5Qcm90b24uWm9uZSA9IFpvbmU7XG5Qcm90b24uTGluZVpvbmUgPSBMaW5lWm9uZTtcblByb3Rvbi5DaXJjbGVab25lID0gQ2lyY2xlWm9uZTtcblByb3Rvbi5Qb2ludFpvbmUgPSBQb2ludFpvbmU7XG5Qcm90b24uUmVjdFpvbmUgPSBSZWN0Wm9uZTtcblByb3Rvbi5JbWFnZVpvbmUgPSBJbWFnZVpvbmU7XG5cblByb3Rvbi5DYW52YXNSZW5kZXJlciA9IENhbnZhc1JlbmRlcmVyO1xuUHJvdG9uLkRvbVJlbmRlcmVyID0gRG9tUmVuZGVyZXI7XG5Qcm90b24uRWFzZWxSZW5kZXJlciA9IEVhc2VsUmVuZGVyZXI7XG5Qcm90b24uUGl4aVJlbmRlcmVyID0gUGl4aVJlbmRlcmVyO1xuUHJvdG9uLlBpeGVsUmVuZGVyZXIgPSBQaXhlbFJlbmRlcmVyO1xuUHJvdG9uLldlYkdMUmVuZGVyZXIgPSBQcm90b24uV2ViR2xSZW5kZXJlciA9IFdlYkdMUmVuZGVyZXI7XG5Qcm90b24uQ3VzdG9tUmVuZGVyZXIgPSBDdXN0b21SZW5kZXJlcjtcblxuUHJvdG9uLkRlYnVnID0gRGVidWc7XG5VdGlsLmFzc2lnbihQcm90b24sIGVhc2UpO1xuXG4vLyBleHBvcnRcbmV4cG9ydCBkZWZhdWx0IFByb3RvbjtcbiJdLCJuYW1lcyI6WyJpcG90IiwibGVuZ3RoIiwibmhwb3QiLCJpIiwibWFrZVRyYW5zbGF0aW9uIiwidHgiLCJ0eSIsIm1ha2VSb3RhdGlvbiIsImFuZ2xlSW5SYWRpYW5zIiwiYyIsIk1hdGgiLCJjb3MiLCJzIiwic2luIiwibWFrZVNjYWxlIiwic3giLCJzeSIsIm1hdHJpeE11bHRpcGx5IiwiYSIsImIiLCJhMDAiLCJhMDEiLCJhMDIiLCJhMTAiLCJhMTEiLCJhMTIiLCJhMjAiLCJhMjEiLCJhMjIiLCJiMDAiLCJiMDEiLCJiMDIiLCJiMTAiLCJiMTEiLCJiMTIiLCJiMjAiLCJiMjEiLCJiMjIiLCJjcmVhdGVDYW52YXMiLCJpZCIsIndpZHRoIiwiaGVpZ2h0IiwicG9zaXRpb24iLCJkb20iLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsIm9wYWNpdHkiLCJ0cmFuc2Zvcm0iLCJjcmVhdGVEaXYiLCJyZXNpemUiLCJtYXJnaW5MZWZ0IiwibWFyZ2luVG9wIiwiZGl2IiwieCIsInkiLCJzY2FsZSIsInJvdGF0ZSIsIndpbGxDaGFuZ2UiLCJjc3MzIiwidHJhbnNmb3JtM2QiLCJrZXkiLCJ2YWwiLCJia2V5IiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzdWJzdHIiLCJpbWdzQ2FjaGUiLCJjYW52YXNDYWNoZSIsImNhbnZhc0lkIiwiZ2V0SW1hZ2VEYXRhIiwiY29udGV4dCIsImltYWdlIiwicmVjdCIsImRyYXdJbWFnZSIsImltYWdlZGF0YSIsImNsZWFyUmVjdCIsImdldEltZ0Zyb21DYWNoZSIsImltZyIsImNhbGxiYWNrIiwicGFyYW0iLCJzcmMiLCJJbWFnZSIsIm9ubG9hZCIsImUiLCJ0YXJnZXQiLCJnZXRDYW52YXNGcm9tQ2FjaGUiLCJXZWJHTFV0aWwiLCJjYW52YXMiLCJEb21VdGlsIiwiZ2V0Q29udGV4dCIsImluaXRWYWx1ZSIsInZhbHVlIiwiZGVmYXVsdHMiLCJ1bmRlZmluZWQiLCJpc0FycmF5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwiZW1wdHlBcnJheSIsImFyciIsInRvQXJyYXkiLCJzbGljZUFycmF5IiwiYXJyMSIsImluZGV4IiwiYXJyMiIsInB1c2giLCJnZXRSYW5kRnJvbUFycmF5IiwiZmxvb3IiLCJyYW5kb20iLCJlbXB0eU9iamVjdCIsIm9iaiIsImlnbm9yZSIsImluZGV4T2YiLCJjbGFzc0FwcGx5IiwiY29uc3RydWN0b3IiLCJhcmdzIiwiRmFjdG9yeUZ1bmMiLCJiaW5kIiwiYXBwbHkiLCJjb25jYXQiLCJJbWdVdGlsIiwiZGVzdHJveUFsbCIsImRlc3Ryb3kiLCJhc3NpZ24iLCJzb3VyY2UiLCJoYXNPd25Qcm9wZXJ0eSIsImlkc01hcCIsIlB1aWQiLCJfaW5kZXgiLCJfY2FjaGUiLCJ0eXBlIiwiZ2V0SWQiLCJ1aWQiLCJnZXRJZEZyb21DYWNoZSIsImlzQm9keSIsImlzSW5uZXIiLCJnZXRUYXJnZXQiLCJQb29sIiwibnVtIiwidG90YWwiLCJjYWNoZSIsImdldCIsInBhcmFtcyIsInAiLCJfX3B1aWQiLCJwb3AiLCJjcmVhdGVPckNsb25lIiwiZXhwaXJlIiwiZ2V0Q2FjaGUiLCJjcmVhdGUiLCJVdGlsIiwiY2xvbmUiLCJnZXRDb3VudCIsImNvdW50IiwiU3RhdHMiLCJwcm90b24iLCJjb250YWluZXIiLCJlbWl0dGVySW5kZXgiLCJyZW5kZXJlckluZGV4IiwidXBkYXRlIiwiYm9keSIsImFkZCIsImVtaXR0ZXIiLCJnZXRFbWl0dGVyIiwicmVuZGVyZXIiLCJnZXRSZW5kZXJlciIsInN0ciIsImVtaXR0ZXJzIiwiZW1pdFNwZWVkIiwiZ2V0RW1pdHRlclBvcyIsImluaXRpYWxpemVzIiwiY29uY2F0QXJyIiwiYmVoYXZpb3VycyIsIm5hbWUiLCJnZXRDcmVhdGVkTnVtYmVyIiwicG9vbCIsImlubmVySFRNTCIsImNzc1RleHQiLCJqb2luIiwiYWRkRXZlbnRMaXN0ZW5lciIsImJnIiwiY29sb3IiLCJwYXJlbnROb2RlIiwiYXBwZW5kQ2hpbGQiLCJyZW5kZXJlcnMiLCJyZXN1bHQiLCJjcG9vbCIsInJvdW5kIiwicmVtb3ZlQ2hpbGQiLCJFdmVudERpc3BhdGNoZXIiLCJfbGlzdGVuZXJzIiwiZGlzcGF0Y2hFdmVudCIsImhhc0V2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMiLCJsaXN0ZW5lciIsInNwbGljZSIsImxpc3RlbmVycyIsImhhbmRsZXIiLCJQSSIsIklORklOSVRZIiwiSW5maW5pdHkiLCJNYXRoVXRpbCIsIlBJeDIiLCJQSV8yIiwiUElfMTgwIiwiTjE4MF9QSSIsImlzSW5maW5pdHkiLCJyYW5kb21BVG9CIiwiaXNJbnQiLCJyYW5kb21GbG9hdGluZyIsImNlbnRlciIsImYiLCJyYW5kb21Db2xvciIsInNsaWNlIiwicmFuZG9tWm9uZSIsImRpc3BsYXkiLCJrIiwiZGlnaXRzIiwicG93IiwiZGVncmVlVHJhbnNmb3JtIiwidG9Db2xvcjE2IiwiSW50ZWdyYXRpb24iLCJjYWxjdWxhdGUiLCJwYXJ0aWNsZXMiLCJ0aW1lIiwiZGFtcGluZyIsImV1bGVySW50ZWdyYXRlIiwicGFydGljbGUiLCJzbGVlcCIsIm9sZCIsImNvcHkiLCJ2IiwibXVsdGlwbHlTY2FsYXIiLCJtYXNzIiwiY2xlYXIiLCJQcm90b24iLCJpbnRlZ3JhdGlvblR5cGUiLCJub3ciLCJ0aGVuIiwiZWxhcHNlZCIsInN0YXRzIiwiRVVMRVIiLCJpbnRlZ3JhdG9yIiwiX2ZwcyIsIl9pbnRlcnZhbCIsIkRFRkFVTFRfSU5URVJWQUwiLCJhZGRSZW5kZXJlciIsInJlbmRlciIsImluaXQiLCJyZW1vdmVSZW5kZXJlciIsInJlbW92ZSIsImFkZEVtaXR0ZXIiLCJwYXJlbnQiLCJFTUlUVEVSX0FEREVEIiwicmVtb3ZlRW1pdHRlciIsIkVNSVRURVJfUkVNT1ZFRCIsIlBST1RPTl9VUERBVEUiLCJVU0VfQ0xPQ0siLCJEYXRlIiwiZ2V0VGltZSIsImFtZW5kQ2hhbmdlVGFic0J1ZyIsImVtaXR0ZXJzVXBkYXRlIiwiUFJPVE9OX1VQREFURV9BRlRFUiIsImdldEFsbFBhcnRpY2xlcyIsImRlc3Ryb3lBbGxFbWl0dGVycyIsImRlc3Ryb3lPdGhlciIsInNldFRpbWVvdXQiLCJmcHMiLCJNRUFTVVJFIiwiUksyIiwiUEFSVElDTEVfQ1JFQVRFRCIsIlBBUlRJQ0xFX1VQREFURSIsIlBBUlRJQ0xFX1NMRUVQIiwiUEFSVElDTEVfREVBRCIsIlJnYiIsInIiLCJnIiwicmVzZXQiLCJoYXNQcm9wIiwic2V0UHJvcCIsInByb3BzIiwicHJvcCIsIlNwYW4iLCJnZXRTcGFuVmFsdWUiLCJzZXRWZWN0b3JWYWwiLCJjb25mIiwiZWFzZUxpbmVhciIsImVhc2VJblF1YWQiLCJlYXNlT3V0UXVhZCIsImVhc2VJbk91dFF1YWQiLCJlYXNlSW5DdWJpYyIsImVhc2VPdXRDdWJpYyIsImVhc2VJbk91dEN1YmljIiwiZWFzZUluUXVhcnQiLCJlYXNlT3V0UXVhcnQiLCJlYXNlSW5PdXRRdWFydCIsImVhc2VJblNpbmUiLCJlYXNlT3V0U2luZSIsImVhc2VJbk91dFNpbmUiLCJlYXNlSW5FeHBvIiwiZWFzZU91dEV4cG8iLCJlYXNlSW5PdXRFeHBvIiwiZWFzZUluQ2lyYyIsInNxcnQiLCJlYXNlT3V0Q2lyYyIsImVhc2VJbk91dENpcmMiLCJlYXNlSW5CYWNrIiwiZWFzZU91dEJhY2siLCJlYXNlSW5PdXRCYWNrIiwiZ2V0RWFzaW5nIiwiZWFzZSIsIlZlY3RvcjJEIiwic2V0Iiwic2V0WCIsInNldFkiLCJnZXRHcmFkaWVudCIsImF0YW4yIiwidyIsImFkZFZlY3RvcnMiLCJhZGRYWSIsInN1YiIsInN1YlZlY3RvcnMiLCJkaXZpZGVTY2FsYXIiLCJuZWdhdGUiLCJkb3QiLCJsZW5ndGhTcSIsIm5vcm1hbGl6ZSIsImRpc3RhbmNlVG8iLCJkaXN0YW5jZVRvU3F1YXJlZCIsInRoYSIsImR4IiwiZHkiLCJsZXJwIiwiYWxwaGEiLCJlcXVhbHMiLCJQYXJ0aWNsZSIsImRhdGEiLCJyZ2IiLCJQcm9wVXRpbCIsImdldERpcmVjdGlvbiIsImxpZmUiLCJhZ2UiLCJkZWFkIiwic3ByaXRlIiwiZW5lcmd5IiwicmFkaXVzIiwicm90YXRpb24iLCJlYXNpbmciLCJyZW1vdmVBbGxCZWhhdmlvdXJzIiwiYXBwbHlCZWhhdmlvdXJzIiwibWF4IiwiYXBwbHlCZWhhdmlvdXIiLCJhZGRCZWhhdmlvdXIiLCJiZWhhdmlvdXIiLCJwYXJlbnRzIiwiaW5pdGlhbGl6ZSIsImFkZEJlaGF2aW91cnMiLCJyZW1vdmVCZWhhdmlvdXIiLCJoZXhUb1JnYiIsImgiLCJoZXgxNiIsInN1YnN0cmluZyIsInBhcnNlSW50IiwicmdiVG9IZXgiLCJyYmciLCJnZXRIZXgxNkZyb21QYXJ0aWNsZSIsIk51bWJlciIsIlBvbGFyMkQiLCJhYnMiLCJzZXRSIiwic2V0VGhhIiwidG9WZWN0b3IiLCJnZXRYIiwiZ2V0WSIsIk1hdDMiLCJtYXQzIiwibWF0IiwiRmxvYXQzMkFycmF5IiwibWF0MSIsIm1hdDIiLCJtdWx0aXBseSIsImludmVyc2UiLCJkIiwibXVsdGlwbHlWZWMyIiwibSIsInZlYyIsImdldFZhbHVlIiwic2V0U3BhblZhbHVlIiwicGFuIiwiQXJyYXlTcGFuIiwiX2FyciIsImNyZWF0ZUFycmF5U3BhbiIsIlJlY3RhbmdsZSIsImJvdHRvbSIsInJpZ2h0IiwiY29udGFpbnMiLCJSYXRlIiwibnVtcGFuIiwidGltZXBhbiIsIm51bVBhbiIsInRpbWVQYW4iLCJzdGFydFRpbWUiLCJuZXh0VGltZSIsIkluaXRpYWxpemUiLCJMaWZlIiwibGlmZVBhbiIsIlpvbmUiLCJ2ZWN0b3IiLCJjcm9zc1R5cGUiLCJhbGVydCIsImdldFBvc2l0aW9uIiwiY3Jvc3NpbmciLCJQb2ludFpvbmUiLCJjb25zb2xlIiwiZXJyb3IiLCJQb3NpdGlvbiIsInpvbmUiLCJWZWxvY2l0eSIsInJwYW4iLCJ0aGFwYW4iLCJyUGFuIiwidGhhUGFuIiwibm9ybWFsaXplVmVsb2NpdHkiLCJ2ciIsInBvbGFyMmQiLCJNYXNzIiwibWFzc1BhbiIsIlJhZGl1cyIsIm9sZFJhZGl1cyIsIkJvZHkiLCJpbWFnZVRhcmdldCIsImlubmVyIiwiQmVoYXZpb3VyIiwibm9ybWFsaXplRm9yY2UiLCJmb3JjZSIsIm5vcm1hbGl6ZVZhbHVlIiwiRm9yY2UiLCJmeCIsImZ5IiwiQXR0cmFjdGlvbiIsInRhcmdldFBvc2l0aW9uIiwicmFkaXVzU3EiLCJhdHRyYWN0aW9uRm9yY2UiLCJSYW5kb21EcmlmdCIsImRyaWZ0WCIsImRyaWZ0WSIsImRlbGF5IiwicGFuRm9jZSIsIkdyYXZpdHkiLCJDb2xsaXNpb24iLCJuZXdQb29sIiwiY29sbGlzaW9uUG9vbCIsImRlbHRhIiwib3RoZXJQYXJ0aWNsZSIsIm92ZXJsYXAiLCJ0b3RhbE1hc3MiLCJhdmVyYWdlTWFzczEiLCJhdmVyYWdlTWFzczIiLCJkaXN0YW5jZSIsIkNyb3NzWm9uZSIsIkFscGhhIiwic2FtZSIsImFscGhhQSIsImFscGhhQiIsIlNjYWxlIiwic2NhbGVBIiwic2NhbGVCIiwiUm90YXRlIiwiaW5mbHVlbmNlIiwicm90YXRpb25BIiwicm90YXRpb25CIiwiQ29sb3IiLCJjb2xvckEiLCJDb2xvclV0aWwiLCJjb2xvckIiLCJDSEFOR0lORyIsIkN5Y2xvbmUiLCJhbmdsZSIsInNldEFuZ2xlQW5kRm9yY2UiLCJzcGFuIiwiU3RyaW5nIiwidG9Mb3dlckNhc2UiLCJjYW5nbGUiLCJjeWNsb25lIiwiZ3JhZGllbnQiLCJSZXB1bHNpb24iLCJHcmF2aXR5V2VsbCIsImNlbnRlclBvaW50IiwiZGlzdGFuY2VWZWMiLCJkaXN0YW5jZVNxIiwiZmFjdG9yIiwiYmluZEVtaXR0ZXIiLCJFbWl0dGVyIiwiZW1pdFRpbWUiLCJ0b3RhbFRpbWUiLCJyYXRlIiwiZW1pdCIsInN0b3BlZCIsImlzTmFOIiwic3RvcCIsInByZUVtaXQiLCJvbGRTdG9wZWQiLCJvbGRFbWl0VGltZSIsIm9sZFRvdGFsVGltZSIsInN0ZXAiLCJyZW1vdmVBbGxQYXJ0aWNsZXMiLCJhZGRTZWxmSW5pdGlhbGl6ZSIsImFkZEluaXRpYWxpemUiLCJyZXN0IiwicmVtb3ZlSW5pdGlhbGl6ZSIsImluaXRpYWxpemVyIiwicmVtb3ZlQWxsSW5pdGlhbGl6ZXJzIiwiYXJndW1lbnRzIiwiZW1pdHRpbmciLCJpbnRlZ3JhdGUiLCJkaXNwYXRjaCIsImV2ZW50IiwiYmluZEV2ZW50IiwiY3JlYXRlUGFydGljbGUiLCJzZXR1cFBhcnRpY2xlIiwiSW5pdGlhbGl6ZVV0aWwiLCJCZWhhdmlvdXJFbWl0dGVyIiwic2VsZkJlaGF2aW91cnMiLCJhZGRTZWxmQmVoYXZpb3VyIiwicmVtb3ZlU2VsZkJlaGF2aW91ciIsIkZvbGxvd0VtaXR0ZXIiLCJtb3VzZVRhcmdldCIsIndpbmRvdyIsIl9hbGxvd0VtaXR0aW5nIiwiaW5pdEV2ZW50SGFuZGxlciIsIm1vdXNlbW92ZUhhbmRsZXIiLCJtb3VzZW1vdmUiLCJtb3VzZWRvd25IYW5kbGVyIiwibW91c2Vkb3duIiwibW91c2V1cEhhbmRsZXIiLCJtb3VzZXVwIiwibGF5ZXJYIiwibGF5ZXJZIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJpc0ltYWdlIiwiX19pc0ltYWdlIiwidGFnTmFtZSIsIm5vZGVOYW1lIiwiaXNTdHJpbmciLCJCYXNlUmVuZGVyZXIiLCJlbGVtZW50Iiwic3Ryb2tlIiwiY2lyY2xlQ29uZiIsImlzQ2lyY2xlIiwic2V0U3Ryb2tlIiwidGhpbmtuZXNzIiwiX3Byb3RvblVwZGF0ZUhhbmRsZXIiLCJvblByb3RvblVwZGF0ZSIsIl9wcm90b25VcGRhdGVBZnRlckhhbmRsZXIiLCJvblByb3RvblVwZGF0ZUFmdGVyIiwiX2VtaXR0ZXJBZGRlZEhhbmRsZXIiLCJvbkVtaXR0ZXJBZGRlZCIsIl9lbWl0dGVyUmVtb3ZlZEhhbmRsZXIiLCJvbkVtaXR0ZXJSZW1vdmVkIiwiX3BhcnRpY2xlQ3JlYXRlZEhhbmRsZXIiLCJvblBhcnRpY2xlQ3JlYXRlZCIsIl9wYXJ0aWNsZVVwZGF0ZUhhbmRsZXIiLCJvblBhcnRpY2xlVXBkYXRlIiwiX3BhcnRpY2xlRGVhZEhhbmRsZXIiLCJvblBhcnRpY2xlRGVhZCIsIkNhbnZhc1JlbmRlcmVyIiwiYnVmZmVyQ2FjaGUiLCJhZGRJbWcyQm9keSIsIlR5cGVzIiwiZHJhd0NpcmNsZSIsImJ1ZmZlciIsImNyZWF0ZUJ1ZmZlciIsImJ1ZkNvbnRleHQiLCJnbG9iYWxBbHBoYSIsImdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiIsImZpbGxTdHlsZSIsImZpbGxSZWN0Iiwic2F2ZSIsInRyYW5zbGF0ZSIsInJlc3RvcmUiLCJiZWdpblBhdGgiLCJhcmMiLCJzdHJva2VTdHlsZSIsImxpbmVXaWR0aCIsImNsb3NlUGF0aCIsImZpbGwiLCJzaXplIiwiRG9tUmVuZGVyZXIiLCJjcmVhdGVCb2R5IiwiYm9keVJlYWR5IiwiYmFja2dyb3VuZENvbG9yIiwiY3JlYXRlQ2lyY2xlIiwiY3JlYXRlU3ByaXRlIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyQ29sb3IiLCJib3JkZXJXaWR0aCIsInVybCIsImJhY2tncm91bmRJbWFnZSIsIkVhc2VsUmVuZGVyZXIiLCJhZGRDaGlsZCIsInNjYWxlWCIsInNjYWxlWSIsImdyYXBoaWNzIiwicmVnWCIsInJlZ1kiLCJjcmVhdGVqcyIsIkdyYXBoaWNzIiwiYmVnaW5TdHJva2UiLCJiZWdpbkZpbGwiLCJzaGFwZSIsIlNoYXBlIiwiUGl4ZWxSZW5kZXJlciIsInJlY3RhbmdsZSIsImltYWdlRGF0YSIsImNyZWF0ZUltYWdlRGF0YSIsInB1dEltYWdlRGF0YSIsInNldFBpeGVsIiwiZWxlbWVudHdpZHRoIiwiUElYSUNsYXNzIiwiUGl4aVJlbmRlcmVyIiwic2V0Q29sb3IiLCJibGVuZE1vZGUiLCJzZXRQSVhJIiwiUElYSSIsIlNwcml0ZSIsImNyZWF0ZUZyb21JbWFnZSIsImZyb20iLCJmcm9tSW1hZ2UiLCJ0aW50IiwiYW5jaG9yIiwiZW5kRmlsbCIsIk1TdGFjayIsIm1hdHMiLCJ0b3AiLCJXZWJHTFJlbmRlcmVyIiwiZ2wiLCJhbnRpYWxpYXMiLCJzdGVuY2lsIiwiZGVwdGgiLCJpbml0VmFyIiwic2V0TWF4UmFkaXVzIiwiaW5pdFNoYWRlcnMiLCJpbml0QnVmZmVycyIsImJsZW5kRXF1YXRpb24iLCJGVU5DX0FERCIsImJsZW5kRnVuYyIsIlNSQ19BTFBIQSIsIk9ORV9NSU5VU19TUkNfQUxQSEEiLCJlbmFibGUiLCJCTEVORCIsInVtYXQiLCJzbWF0IiwibXN0YWNrIiwidmlld3BvcnQiLCJjaXJjbGVDYW52YXNVUkwiLCJnZXRWZXJ0ZXhTaGFkZXIiLCJ2c1NvdXJjZSIsImdldEZyYWdtZW50U2hhZGVyIiwiZnNTb3VyY2UiLCJ0ZXh0dXJlYnVmZmVycyIsIkEiLCJCIiwiZ2V0U2hhZGVyIiwiZnMiLCJzaGFkZXIiLCJjcmVhdGVTaGFkZXIiLCJGUkFHTUVOVF9TSEFERVIiLCJWRVJURVhfU0hBREVSIiwic2hhZGVyU291cmNlIiwiY29tcGlsZVNoYWRlciIsImdldFNoYWRlclBhcmFtZXRlciIsIkNPTVBJTEVfU1RBVFVTIiwiZ2V0U2hhZGVySW5mb0xvZyIsImZyYWdtZW50U2hhZGVyIiwidmVydGV4U2hhZGVyIiwic3Byb2dyYW0iLCJjcmVhdGVQcm9ncmFtIiwiYXR0YWNoU2hhZGVyIiwibGlua1Byb2dyYW0iLCJnZXRQcm9ncmFtUGFyYW1ldGVyIiwiTElOS19TVEFUVVMiLCJ1c2VQcm9ncmFtIiwidnBhIiwiZ2V0QXR0cmliTG9jYXRpb24iLCJ0Y2EiLCJlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSIsInRNYXRVbmlmb3JtIiwiZ2V0VW5pZm9ybUxvY2F0aW9uIiwic2FtcGxlclVuaWZvcm0iLCJ1c2VUZXgiLCJ1bmlmb3JtMWkiLCJ2cyIsImlkeCIsInVuaXRJQnVmZmVyIiwiYmluZEJ1ZmZlciIsIkVMRU1FTlRfQVJSQVlfQlVGRkVSIiwiYnVmZmVyRGF0YSIsIlVpbnQxNkFycmF5IiwiU1RBVElDX0RSQVciLCJpZHMiLCJ1bml0STMzIiwic3RyaXBCdWZmZXIiLCJyYWlkdXMiLCJjaXJjbGVDYW52YXNSYWRpdXMiLCJ0b0RhdGFVUkwiLCJkcmF3SW1nMkNhbnZhcyIsIl93IiwiX2giLCJfd2lkdGgiLCJfaGVpZ2h0IiwiX3NjYWxlWCIsIl9zY2FsZVkiLCJjcmVhdGVUZXh0dXJlIiwidGV4dHVyZSIsInZjQnVmZmVyIiwidGNCdWZmZXIiLCJBUlJBWV9CVUZGRVIiLCJiaW5kVGV4dHVyZSIsIlRFWFRVUkVfMkQiLCJ0ZXhJbWFnZTJEIiwiUkdCQSIsIlVOU0lHTkVEX0JZVEUiLCJ0ZXhQYXJhbWV0ZXJpIiwiVEVYVFVSRV9NQUdfRklMVEVSIiwiTElORUFSIiwiVEVYVFVSRV9NSU5fRklMVEVSIiwiTElORUFSX01JUE1BUF9ORUFSRVNUIiwiZ2VuZXJhdGVNaXBtYXAiLCJ0ZXh0dXJlTG9hZGVkIiwidGV4dHVyZVdpZHRoIiwidGV4dHVyZUhlaWdodCIsInRtYXQiLCJpbWF0Iiwib2xkU2NhbGUiLCJ1cGRhdGVNYXRyaXgiLCJ1bmlmb3JtM2YiLCJ1bmlmb3JtTWF0cml4M2Z2IiwidmVydGV4QXR0cmliUG9pbnRlciIsIkZMT0FUIiwiZHJhd0VsZW1lbnRzIiwiVFJJQU5HTEVTIiwiVU5TSUdORURfU0hPUlQiLCJtb3ZlT3JpZ2luTWF0cml4IiwidHJhbnNsYXRpb25NYXRyaXgiLCJhbmdlbCIsInJvdGF0aW9uTWF0cml4Iiwic2NhbGVNYXRyaXgiLCJtYXRyaXgiLCJDdXN0b21SZW5kZXJlciIsIkxpbmVab25lIiwieDEiLCJ5MSIsIngyIiwieTIiLCJkaXJlY3Rpb24iLCJtaW54IiwibWluIiwibWlueSIsIm1heHgiLCJtYXh5IiwieHh5eSIsImdldExlbmd0aCIsIkMiLCJEIiwiZ2V0RGlzdGFuY2UiLCJnZXRTeW1tZXRyaWMiLCJ0aGEyIiwidGhhMSIsIm9sZHgiLCJvbGR5IiwicmFuZ2VPdXQiLCJDaXJjbGVab25lIiwicmFuZG9tUmFkaXVzIiwic2V0Q2VudGVyIiwiUmVjdFpvbmUiLCJJbWFnZVpvbmUiLCJ2ZWN0b3JzIiwic2V0VmVjdG9ycyIsImoiLCJsZW5ndGgxIiwibGVuZ3RoMiIsImdldEJvdW5kIiwiZ2V0Q29sb3IiLCJmdW5jIiwiZ2V0U3R5bGUiLCJkcmF3Wm9uZSIsIm1vdmVUbyIsImxpbmVUbyIsImRyYXdSZWN0IiwiZHJhd0VtaXR0ZXIiLCJWZWN0b3IiLCJQb2xhciIsImdldFNwYW4iLCJJbml0IiwiTCIsIlAiLCJWIiwiTSIsIlIiLCJGIiwiUkQiLCJHIiwiUyIsIldlYkdsUmVuZGVyZXIiLCJEZWJ1ZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtCQUFlO0VBQ2I7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFQSxFQUFBQSxJQVphLEVBWVJDLFNBQUFBLElBQUFBLENBQUFBLE1BWlEsRUFZQTtFQUNYLElBQUEsT0FBTyxDQUFDQSxNQUFNLEdBQUlBLE1BQU0sR0FBRyxDQUFwQixNQUE0QixDQUFuQyxDQUFBO0VBQ0QsR0FkWTs7RUFnQmI7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFQyxFQUFBQSxLQTNCYSxFQTJCUEQsU0FBQUEsS0FBQUEsQ0FBQUEsTUEzQk8sRUEyQkM7RUFDWixJQUFBLEVBQUVBLE1BQUYsQ0FBQTs7RUFDQSxJQUFBLEtBQUssSUFBSUUsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxFQUFwQixFQUF3QkEsQ0FBQyxL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 diff --git a/build/proton.min.js b/build/proton.min.js index a8a41d1..e81b562 100755 --- a/build/proton.min.js +++ b/build/proton.min.js @@ -1,5 +1,5 @@ /*! -* Proton v5.4.1 +* Proton v5.4.3 * https://github.com/drawcall/Proton * * Copyright 2013-2022, drawcall @@ -7,5 +7,5 @@ * http://www.opensource.org/licenses/mit-license * */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Proton=e()}(this,(function(){"use strict";function t(t,e){for(var i=0;i>e;return t+1},a=function(t,e){return[1,0,0,0,1,0,t,e,1]},s=function(t){var e=Math.cos(t),i=Math.sin(t);return[e,-i,0,i,e,0,0,0,1]},o=function(t,e){return[t,0,0,0,e,0,0,0,1]},h=function(t,e){var i=t[0],n=t[1],r=t[2],a=t[3],s=t[4],o=t[5],h=t[6],l=t[7],c=t[8],u=e[0],d=e[1],p=e[2],f=e[3],g=e[4],y=e[5],m=e[6],v=e[7],b=e[8];return[i*u+n*f+r*m,i*d+n*g+r*v,i*p+n*y+r*b,a*u+s*f+o*m,a*d+s*g+o*v,a*p+s*y+o*b,h*u+l*f+c*m,h*d+l*g+c*v,h*p+l*y+c*b]},l={createCanvas:function(t,e,i,n){void 0===n&&(n="absolute");var r=document.createElement("canvas");return r.id=t,r.width=e,r.height=i,r.style.opacity=0,r.style.position=n,this.transform(r,-500,-500,0,0),r},createDiv:function(t,e,i){var n=document.createElement("div");return n.id=t,n.style.position="absolute",this.resize(n,e,i),n},resize:function(t,e,i){t.style.width=e+"px",t.style.height=i+"px",t.style.marginLeft=-e/2+"px",t.style.marginTop=-i/2+"px"},transform:function(t,e,i,n,r){t.style.willChange="transform";var a="translate("+e+"px, "+i+"px) scale("+n+") rotate("+r+"deg)";this.css3(t,"transform",a)},transform3d:function(t,e,i,n,r){t.style.willChange="transform";var a="translate3d("+e+"px, "+i+"px, 0) scale("+n+") rotate("+r+"deg)";this.css3(t,"backfaceVisibility","hidden"),this.css3(t,"transform",a)},css3:function(t,e,i){var n=e.charAt(0).toUpperCase()+e.substr(1);t.style["Webkit"+n]=i,t.style["Moz"+n]=i,t.style["O"+n]=i,t.style["ms"+n]=i,t.style[""+e]=i}},c={},u={},d=0,p=function(t,e,i){t.drawImage(e,i.x,i.y);var n=t.getImageData(i.x,i.y,i.width,i.height);return t.clearRect(i.x,i.y,i.width,i.height),n},f=function(t,e,i){var n="string"==typeof t?t:t.src;if(c[n])e(c[n],i);else{var r=new Image;r.onload=function(t){c[n]=t.target,e(c[n],i)},r.src=n}},g=function(t,e,i){var n=t.src;if(!u[n]){var a=r(t.width),s=r(t.height),o=l.createCanvas("proton_canvas_cache_"+ ++d,a,s);o.getContext("2d").drawImage(t,0,0,t.width,t.height),u[n]=o}return e&&e(u[n],i),u[n]},y={initValue:function(t,e){return t=null!=t?t:e},isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},emptyArray:function(t){t&&(t.length=0)},toArray:function(t){return this.isArray(t)?t:[t]},getRandFromArray:function(t){return t?t[Math.floor(t.length*Math.random())]:null},emptyObject:function(t,e){for(var i in void 0===e&&(e=null),t)e&&e.indexOf(i)>-1||delete t[i]},classApply:function(t,e){return void 0===e&&(e=null),e?new(t.bind.apply(t,[null].concat(e))):new t},getImageData:function(t,e,i){return p(t,e,i)},destroyAll:function(t,e){void 0===e&&(e=null);for(var i=t.length;i--;){try{t[i].destroy(e)}catch(t){}delete t[i]}t.length=0},assign:function(t,e){if("function"!=typeof Object.assign){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}return Object.assign(t,e)}},m={},v={_index:0,_cache:{},id:function(t){return void 0!==m[t]&&null!==m[t]||(m[t]=0),t+"_"+m[t]++},getId:function(t){var e=this.getIdFromCache(t);return e||(e="PUID_"+this._index++,this._cache[e]=t,e)},getIdFromCache:function(t){var e,i;for(i in this._cache){if((e=this._cache[i])===t)return i;if(this.isBody(e,t)&&e.src===t.src)return i}return null},isBody:function(t,e){return"object"==typeof t&&"object"==typeof e&&t.isInner&&e.isInner},getTarget:function(t){return this._cache[t]}},b=function(){function t(t){this.total=0,this.cache={}}var e=t.prototype;return e.get=function(t,e,i){var n;return i=i||t.__puid||v.getId(t),(n=this.cache[i]&&this.cache[i].length>0?this.cache[i].pop():this.createOrClone(t,e)).__puid=t.__puid||i,n},e.expire=function(t){return this.getCache(t.__puid).push(t)},e.createOrClone=function(t,e){return this.total++,this.create?this.create(t,e):"function"==typeof t?y.classApply(t,e):t.clone()},e.getCount=function(){var t=0;for(var e in this.cache)t+=this.cache[e].length;return t++},e.destroy=function(){for(var t in this.cache)this.cache[t].length=0,delete this.cache[t]},e.getCache=function(t){return void 0===t&&(t="default"),this.cache[t]||(this.cache[t]=[]),this.cache[t]},t}(),x=function(){function t(t){this.proton=t,this.container=null,this.type=1,this.emitterIndex=0,this.rendererIndex=0}var e=t.prototype;return e.update=function(t,e){this.add(t,e);var i=this.getEmitter(),n=this.getRenderer(),r="";switch(this.type){case 2:r+="emitter:"+this.proton.emitters.length+"
",i&&(r+="em speed:"+i.emitSpeed+"
"),i&&(r+="pos:"+this.getEmitterPos(i));break;case 3:i&&(r+="initializes:"+i.initializes.length+"
"),i&&(r+=''+this.concatArr(i.initializes)+"
"),i&&(r+="behaviours:"+i.behaviours.length+"
"),i&&(r+=''+this.concatArr(i.behaviours)+"
");break;case 4:n&&(r+=n.name+"
"),n&&(r+="body:"+this.getCreatedNumber(n)+"
");break;default:r+="particles:"+this.proton.getCount()+"
",r+="pool:"+this.proton.pool.getCount()+"
",r+="total:"+this.proton.pool.total}this.container.innerHTML=r},e.add=function(t,e){var i=this;if(!this.container){var n,r;switch(this.type=1,this.container=document.createElement("div"),this.container.style.cssText=["position:absolute;bottom:0px;left:0;cursor:pointer;","opacity:0.9;z-index:10000;padding:10px;font-size:12px;font-family:Helvetica,Arial,sans-serif;","width:120px;height:50px;background-color:#002;color:#0ff;"].join(""),this.container.addEventListener("click",(function(t){i.type++,i.type>4&&(i.type=1)}),!1),t){case 2:n="#201",r="#f08";break;case 3:n="#020",r="#0f0";break;default:n="#002",r="#0ff"}this.container.style["background-color"]=n,this.container.style.color=r}this.container.parentNode||(e=e||this.body||document.body).appendChild(this.container)},e.getEmitter=function(){return this.proton.emitters[this.emitterIndex]},e.getRenderer=function(){return this.proton.renderers[this.rendererIndex]},e.concatArr=function(t){var e="";if(!t||!t.length)return e;for(var i=0;i>0)+t:t+Math.random()*(e-t)},randomFloating:function(t,e,i){return this.randomAToB(t-e,t+e,i)},randomColor:function(){return"#"+("00000"+(16777216*Math.random()<<0).toString(16)).slice(-6)},randomZone:function(t){},floor:function(t,e){void 0===e&&(e=4);var i=Math.pow(10,e);return Math.floor(t*i)/i},degreeTransform:function(t){return t*A/180},toColor16:function(t){return"#"+t.toString(16)}},T=function(){function t(t){this.type=t}var e=t.prototype;return e.calculate=function(t,e,i){this.eulerIntegrate(t,e,i)},e.eulerIntegrate=function(t,e,i){t.sleep||(t.old.p.copy(t.p),t.old.v.copy(t.v),t.a.multiplyScalar(1/t.mass),t.v.add(t.a.multiplyScalar(e)),t.p.add(t.old.v.multiplyScalar(e)),i&&t.v.multiplyScalar(i),t.a.clear())},t}(),R=function(){function e(t){this.emitters=[],this.renderers=[],this.time=0,this.now=0,this.then=0,this.elapsed=0,this.stats=new x(this),this.pool=new b(80),this.integrationType=y.initValue(t,e.EULER),this.integrator=new T(this.integrationType),this._fps="auto",this._interval=e.DEFAULT_INTERVAL}var i,n,r,a=e.prototype;return a.addRenderer=function(t){t.init(this),this.renderers.push(t)},a.removeRenderer=function(t){var e=this.renderers.indexOf(t);this.renderers.splice(e,1),t.remove(this)},a.addEmitter=function(t){this.emitters.push(t),t.parent=this,this.dispatchEvent(e.EMITTER_ADDED,t)},a.removeEmitter=function(t){var i=this.emitters.indexOf(t);this.emitters.splice(i,1),t.parent=null,this.dispatchEvent(e.EMITTER_REMOVED,t)},a.update=function(){"auto"===this._fps?(this.dispatchEvent(e.PROTON_UPDATE),e.USE_CLOCK?(this.then||(this.then=(new Date).getTime()),this.now=(new Date).getTime(),this.elapsed=.001*(this.now-this.then),this.amendChangeTabsBug(),this.elapsed>0&&this.emittersUpdate(this.elapsed),this.then=this.now):this.emittersUpdate(e.DEFAULT_INTERVAL),this.dispatchEvent(e.PROTON_UPDATE_AFTER)):(this.then||(this.then=(new Date).getTime()),this.now=(new Date).getTime(),this.elapsed=.001*(this.now-this.then),this.elapsed>this._interval&&(this.dispatchEvent(e.PROTON_UPDATE),this.emittersUpdate(this._interval),this.then=this.now-this.elapsed%this._interval*1e3,this.dispatchEvent(e.PROTON_UPDATE_AFTER)))},a.emittersUpdate=function(t){for(var e=this.emitters.length;e--;)this.emitters[e].update(t)},a.amendChangeTabsBug=function(){e.amendChangeTabsBug&&this.elapsed>.5&&(this.then=(new Date).getTime(),this.elapsed=0)},a.getCount=function(){for(var t=0,e=this.emitters.length;e--;)t+=this.emitters[e].particles.length;return t},a.getAllParticles=function(){for(var t=[],e=this.emitters.length;e--;)t=t.concat(this.emitters[e].particles);return t},a.destroyAllEmitters=function(){y.destroyAll(this.emitters)},a.destroy=function(t){var e=this;void 0===t&&(t=!1);var i=function(){e.time=0,e.then=0,e.pool.destroy(),e.stats.destroy(),y.destroyAll(e.emitters),y.destroyAll(e.renderers,e.getAllParticles()),e.integrator=null,e.renderers=null,e.emitters=null,e.stats=null,e.pool=null};t?setTimeout(i,200):i()},i=e,(n=[{key:"fps",get:function(){return this._fps},set:function(t){this._fps=t,this._interval="auto"===t?e.DEFAULT_INTERVAL:P.floor(1/t,7)}}])&&t(i.prototype,n),r&&t(i,r),Object.defineProperty(i,"prototype",{writable:!1}),e}();R.USE_CLOCK=!1,R.MEASURE=100,R.EULER="euler",R.RK2="runge-kutta2",R.PARTICLE_CREATED="PARTICLE_CREATED",R.PARTICLE_UPDATE="PARTICLE_UPDATE",R.PARTICLE_SLEEP="PARTICLE_SLEEP",R.PARTICLE_DEAD="PARTICLE_DEAD",R.EMITTER_ADDED="EMITTER_ADDED",R.EMITTER_REMOVED="EMITTER_REMOVED",R.PROTON_UPDATE="PROTON_UPDATE",R.PROTON_UPDATE_AFTER="PROTON_UPDATE_AFTER",R.DEFAULT_INTERVAL=.0167,R.amendChangeTabsBug=!0,E.bind(R);var _=function(){function t(t,e,i){void 0===t&&(t=255),void 0===e&&(e=255),void 0===i&&(i=255),this.r=t,this.g=e,this.b=i}return t.prototype.reset=function(){this.r=255,this.g=255,this.b=255},t}(),w={hasProp:function(t,e){return!!t&&void 0!==t[e]},setProp:function(t,e){for(var i in e)t.hasOwnProperty(i)&&(t[i]=Span.getSpanValue(e[i]));return t},setVectorVal:function(t,e){void 0===e&&(e=null),e&&(this.hasProp(e,"x")&&(t.p.x=e.x),this.hasProp(e,"y")&&(t.p.y=e.y),this.hasProp(e,"vx")&&(t.v.x=e.vx),this.hasProp(e,"vy")&&(t.v.y=e.vy),this.hasProp(e,"ax")&&(t.a.x=e.ax),this.hasProp(e,"ay")&&(t.a.y=e.ay),this.hasProp(e,"p")&&t.p.copy(e.p),this.hasProp(e,"v")&&t.v.copy(e.v),this.hasProp(e,"a")&&t.a.copy(e.a),this.hasProp(e,"position")&&t.p.copy(e.position),this.hasProp(e,"velocity")&&t.v.copy(e.velocity),this.hasProp(e,"accelerate")&&t.a.copy(e.accelerate))}},C={easeLinear:function(t){return t},easeInQuad:function(t){return Math.pow(t,2)},easeOutQuad:function(t){return-(Math.pow(t-1,2)-1)},easeInOutQuad:function(t){return(t/=.5)<1?.5*Math.pow(t,2):-.5*((t-=2)*t-2)},easeInCubic:function(t){return Math.pow(t,3)},easeOutCubic:function(t){return Math.pow(t-1,3)+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*Math.pow(t,3):.5*(Math.pow(t-2,3)+2)},easeInQuart:function(t){return Math.pow(t,4)},easeOutQuart:function(t){return-(Math.pow(t-1,4)-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*Math.pow(t,4):-.5*((t-=2)*Math.pow(t,3)-2)},easeInSine:function(t){return 1-Math.cos(t*P.PI_2)},easeOutSine:function(t){return Math.sin(t*P.PI_2)},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-Math.pow(t-1,2))},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},getEasing:function(t){return"function"==typeof t?t:this[t]||this.easeLinear}},I=function(){function t(t,e){this.x=t||0,this.y=e||0}var e=t.prototype;return e.set=function(t,e){return this.x=t,this.y=e,this},e.setX=function(t){return this.x=t,this},e.setY=function(t){return this.y=t,this},e.getGradient=function(){return 0!==this.x?Math.atan2(this.y,this.x):this.y>0?P.PI_2:this.y<0?-P.PI_2:void 0},e.copy=function(t){return this.x=t.x,this.y=t.y,this},e.add=function(t,e){return void 0!==e?this.addVectors(t,e):(this.x+=t.x,this.y+=t.y,this)},e.addXY=function(t,e){return this.x+=t,this.y+=e,this},e.addVectors=function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this},e.sub=function(t,e){return void 0!==e?this.subVectors(t,e):(this.x-=t.x,this.y-=t.y,this)},e.subVectors=function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this},e.divideScalar=function(t){return 0!==t?(this.x/=t,this.y/=t):this.set(0,0),this},e.multiplyScalar=function(t){return this.x*=t,this.y*=t,this},e.negate=function(){return this.multiplyScalar(-1)},e.dot=function(t){return this.x*t.x+this.y*t.y},e.lengthSq=function(){return this.x*this.x+this.y*this.y},e.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},e.normalize=function(){return this.divideScalar(this.length())},e.distanceTo=function(t){return Math.sqrt(this.distanceToSquared(t))},e.rotate=function(t){var e=this.x,i=this.y;return this.x=e*Math.cos(t)+i*Math.sin(t),this.y=-e*Math.sin(t)+i*Math.cos(t),this},e.distanceToSquared=function(t){var e=this.x-t.x,i=this.y-t.y;return e*e+i*i},e.lerp=function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this},e.equals=function(t){return t.x===this.x&&t.y===this.y},e.clear=function(){return this.x=0,this.y=0,this},e.clone=function(){return new t(this.x,this.y)},t}(),S=function(){function t(t){this.id="",this.old=null,this.data=null,this.behaviours=null,this.p=null,this.v=null,this.a=null,this.rgb=null,this.name="Particle",this.id=v.id(this.name),this.old={},this.data={},this.behaviours=[],this.p=new I,this.v=new I,this.a=new I,this.old.p=new I,this.old.v=new I,this.old.a=new I,this.rgb=new _,this.reset(),t&&w.setProp(this,t)}var e=t.prototype;return e.getDirection=function(){return Math.atan2(this.v.x,-this.v.y)*P.N180_PI},e.reset=function(){return this.life=1/0,this.age=0,this.dead=!1,this.sleep=!1,this.body=null,this.sprite=null,this.parent=null,this.energy=1,this.mass=1,this.radius=10,this.alpha=1,this.scale=1,this.rotation=0,this.color=null,this.p.set(0,0),this.v.set(0,0),this.a.set(0,0),this.old.p.set(0,0),this.old.v.set(0,0),this.old.a.set(0,0),this.easing=C.easeLinear,this.rgb.reset(),y.emptyObject(this.data),this.removeAllBehaviours(),this},e.update=function(t,e){if(this.sleep||(this.age+=t,this.applyBehaviours(t,e)),this.age-1&&(this.behaviours.splice(e,1).parents=null)},e.removeAllBehaviours=function(){y.emptyArray(this.behaviours)},e.destroy=function(){this.removeAllBehaviours(),this.energy=0,this.dead=!0,this.parent=null},t}(),D={hexToRgb:function(t){var e="#"===t.charAt(0)?t.substring(1,7):t;return{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16)}},rgbToHex:function(t){return"rgb("+t.r+", "+t.g+", "+t.b+")"},getHex16FromParticle:function(t){return 65536*Number(t.rgb.r)+256*Number(t.rgb.g)+Number(t.rgb.b)}},V=function(){function t(t,e){this.r=Math.abs(t)||0,this.tha=e||0}var e=t.prototype;return e.set=function(t,e){return this.r=t,this.tha=e,this},e.setR=function(t){return this.r=t,this},e.setTha=function(t){return this.tha=t,this},e.copy=function(t){return this.r=t.r,this.tha=t.tha,this},e.toVector=function(){return new I(this.getX(),this.getY())},e.getX=function(){return this.r*Math.sin(this.tha)},e.getY=function(){return-this.r*Math.cos(this.tha)},e.normalize=function(){return this.r=1,this},e.equals=function(t){return t.r===this.r&&t.tha===this.tha},e.clear=function(){return this.r=0,this.tha=0,this},e.clone=function(){return new t(this.r,this.tha)},t}(),M={create:function(t){var e=new Float32Array(9);return t&&this.set(t,e),e},set:function(t,e){for(var i=0;i<9;i++)e[i]=t[i];return e},multiply:function(t,e,i){var n=t[0],r=t[1],a=t[2],s=t[3],o=t[4],h=t[6],l=t[7],c=e[0],u=e[1],d=e[2],p=e[3],f=e[4],g=e[6],y=e[7];return i[0]=c*n+u*s,i[1]=c*r+u*o,i[2]=a*d,i[3]=p*n+f*s,i[4]=p*r+f*o,i[6]=g*n+y*s+h,i[7]=g*r+y*o+l,i},inverse:function(t,e){var i,n=t[0],r=t[1],a=t[3],s=t[4],o=t[6],h=t[7],l=s,c=-a,u=h*a-s*o;return i=1/(n*l+r*c),e[0]=l*i,e[1]=-r*i,e[3]=c*i,e[4]=n*i,e[6]=u*i,e[7]=(-h*n+r*o)*i,e},multiplyVec2:function(t,e,i){var n=e[0],r=e[1];return i[0]=n*t[0]+r*t[3]+t[6],i[1]=n*t[1]+r*t[4]+t[7],i}},B=function(){function t(t,e,i){y.isArray(t)?(this.isArray=!0,this.a=t):(this.isArray=!1,this.a=y.initValue(t,1),this.b=y.initValue(e,this.a),this.center=y.initValue(i,!1))}return t.prototype.getValue=function(t){return void 0===t&&(t=!1),this.isArray?y.getRandFromArray(this.a):this.center?P.randomFloating(this.a,this.b,t):P.randomAToB(this.a,this.b,t)},t.setSpanValue=function(e,i,n){return e instanceof t?e:void 0===i?new t(e):void 0===n?new t(e,i):new t(e,i,n)},t.getSpanValue=function(e){return e instanceof t?e.getValue():e},t}(),L=function(t){function i(e){var i;return(i=t.call(this)||this)._arr=y.toArray(e),i}return e(i,t),i.prototype.getValue=function(){var t=y.getRandFromArray(this._arr);return"random"===t||"Random"===t?P.randomColor():t},i.createArraySpan=function(t){return t?t instanceof i?t:new i(t):null},i}(B),U=function(){function t(t,e,i,n){this.x=t,this.y=e,this.width=i,this.height=n,this.bottom=this.y+this.height,this.right=this.x+this.width}return t.prototype.contains=function(t,e){return t<=this.right&&t>=this.x&&e<=this.bottom&&e>=this.y},t}(),F=function(){function t(t,e){this.numPan=B.setSpanValue(y.initValue(t,1)),this.timePan=B.setSpanValue(y.initValue(e,1)),this.startTime=0,this.nextTime=0,this.init()}var e=t.prototype;return e.init=function(){this.startTime=0,this.nextTime=this.timePan.getValue()},e.getValue=function(t){return this.startTime+=t,this.startTime>=this.nextTime?(this.startTime=0,this.nextTime=this.timePan.getValue(),1===this.numPan.b?this.numPan.getValue(!1)>.5?1:0:this.numPan.getValue(!0)):0},t}(),z=function(){function t(){}var e=t.prototype;return e.reset=function(){},e.init=function(t,e){e?this.initialize(e):this.initialize(t)},e.initialize=function(t){},t}(),O=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).lifePan=B.setSpanValue(e,i,n),r.name="Life",r}return e(i,t),i.prototype.initialize=function(t){this.lifePan.a===1/0?t.life=1/0:t.life=this.lifePan.getValue()},i}(z),k=function(){function t(){this.vector=new I(0,0),this.random=0,this.crossType="dead",this.alert=!0}var e=t.prototype;return e.getPosition=function(){},e.crossing=function(t){},e.destroy=function(){this.vector=null},t}(),N=function(t){function i(e,i){var n;return(n=t.call(this)||this).x=e,n.y=i,n}e(i,t);var n=i.prototype;return n.getPosition=function(){return this.vector.x=this.x,this.vector.y=this.y,this.vector},n.crossing=function(t){this.alert&&(console.error("Sorry, PointZone does not support crossing method!"),this.alert=!1)},i}(k),H=function(t){function i(e){var i;return(i=t.call(this)||this).zone=y.initValue(e,new N),i.name="Position",i}e(i,t);var n=i.prototype;return n.reset=function(t){this.zone=y.initValue(t,new N)},n.initialize=function(t){this.zone.getPosition(),t.p.x=this.zone.vector.x,t.p.y=this.zone.vector.y},i}(z),q=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).rPan=B.setSpanValue(e),r.thaPan=B.setSpanValue(i),r.type=y.initValue(n,"vector"),r.name="Velocity",r}e(i,t);var n=i.prototype;return n.reset=function(t,e,i){this.rPan=B.setSpanValue(t),this.thaPan=B.setSpanValue(e),this.type=y.initValue(i,"vector")},n.normalizeVelocity=function(t){return t*R.MEASURE},n.initialize=function(t){if("p"===this.type||"P"===this.type||"polar"===this.type){var e=new V(this.normalizeVelocity(this.rPan.getValue()),this.thaPan.getValue()*P.PI_180);t.v.x=e.getX(),t.v.y=e.getY()}else t.v.x=this.normalizeVelocity(this.rPan.getValue()),t.v.y=this.normalizeVelocity(this.thaPan.getValue())},i}(z),G=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).massPan=B.setSpanValue(e,i,n),r.name="Mass",r}return e(i,t),i.prototype.initialize=function(t){t.mass=this.massPan.getValue()},i}(z),X=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).radius=B.setSpanValue(e,i,n),r.name="Radius",r}e(i,t);var n=i.prototype;return n.reset=function(t,e,i){this.radius=B.setSpanValue(t,e,i)},n.initialize=function(t){t.radius=this.radius.getValue(),t.data.oldRadius=t.radius},i}(z),Y=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).image=r.setSpanValue(e),r.w=y.initValue(i,20),r.h=y.initValue(n,r.w),r.name="Body",r}e(i,t);var n=i.prototype;return n.initialize=function(t){var e=this.image.getValue();t.body="string"==typeof e?{width:this.w,height:this.h,src:e,isInner:!0,inner:!0}:e},n.setSpanValue=function(t){return t instanceof L?t:new L(t)},i}(z),j=function(){function t(e,i){this.life=y.initValue(e,1/0),this.easing=C.getEasing(i),this.age=0,this.energy=1,this.dead=!1,this.parents=[],this.id="Behaviour_"+t.id++,this.name="Behaviour"}var e=t.prototype;return e.reset=function(t,e){this.life=y.initValue(t,1/0),this.easing=C.getEasing(e)},e.normalizeForce=function(t){return t.multiplyScalar(R.MEASURE)},e.normalizeValue=function(t){return t*R.MEASURE},e.initialize=function(t){},e.calculate=function(t,e,i){if(this.age+=e,this.age>=this.life||this.dead)this.energy=0,this.dead=!0,this.destroy();else{var n=this.easing(t.age/t.life);this.energy=Math.max(1-n,0)}},e.applyBehaviour=function(t,e,i){this.calculate(t,e,i)},e.destroy=function(){for(var t=this.parents.length;t--;)this.parents[t].removeBehaviour(this);this.parents.length=0},t}();j.id=0;var W=function(t){function i(e,i,n,r){var a;return(a=t.call(this,n,r)||this).force=a.normalizeForce(new I(e,i)),a.name="Force",a}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r){this.force=this.normalizeForce(new I(e,i)),n&&t.prototype.reset.call(this,n,r)},n.applyBehaviour=function(t,e,i){this.calculate(t,e,i),t.a.add(this.force)},i}(j),Z=function(t){function i(e,i,n,r,a){var s;return(s=t.call(this,r,a)||this).targetPosition=y.initValue(e,new I),s.radius=y.initValue(n,1e3),s.force=y.initValue(s.normalizeValue(i),100),s.radiusSq=s.radius*s.radius,s.attractionForce=new I,s.lengthSq=0,s.name="Attraction",s}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r,a){this.targetPosition=y.initValue(e,new I),this.radius=y.initValue(n,1e3),this.force=y.initValue(this.normalizeValue(i),100),this.radiusSq=this.radius*this.radius,this.attractionForce=new I,this.lengthSq=0,r&&t.prototype.reset.call(this,r,a)},n.applyBehaviour=function(t,e,i){this.calculate(t,e,i),this.attractionForce.copy(this.targetPosition),this.attractionForce.sub(t.p),this.lengthSq=this.attractionForce.lengthSq(),this.lengthSq>4e-5&&this.lengthSq=this.delay&&(t.a.addXY(P.randomAToB(-this.panFoce.x,this.panFoce.x),P.randomAToB(-this.panFoce.y,this.panFoce.y)),t.data.time=0)},i}(j),K=function(t){function i(e,i,n){var r;return(r=t.call(this,0,e,i,n)||this).name="Gravity",r}return e(i,t),i.prototype.reset=function(e,i,n){t.prototype.reset.call(this,0,e,i,n)},i}(W),J=function(t){function i(e,i,n,r,a){var s;return(s=t.call(this,r,a)||this).reset(e,i,n),s.name="Collision",s}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r,a){this.emitter=y.initValue(e,null),this.mass=y.initValue(i,!0),this.callback=y.initValue(n,null),this.collisionPool=[],this.delta=new I,r&&t.prototype.reset.call(this,r,a)},n.applyBehaviour=function(t,e,i){var n,r,a,s,o,h,l,c=this.emitter?this.emitter.particles.slice(i):this.pool.slice(i),u=c.length;for(l=0;lr;)t-=r,this.update(r);this.stoped=e,this.emitTime=i+Math.max(t,0),this.totalTime=n},n.removeAllParticles=function(){for(var t=this.particles.length;t--;)this.particles[t].dead=!0},n.addSelfInitialize=function(t){t.init&&t.init(this)},n.addInitialize=function(){for(var t=arguments.length,e=new Array(t),i=0;i-1&&this.initializes.splice(e,1)},n.removeAllInitializers=function(){y.emptyArray(this.initializes)},n.addBehaviour=function(){for(var t=arguments.length,e=new Array(t),i=0;i=this.life||this.dead)&&this.destroy(),this.emitting(t),this.integrate(t)},n.integrate=function(t){if(this.parent){var e,i,n=1-this.damping;for(this.parent.integrator.calculate(this,t,n),e=this.particles.length-1;e>=0;e--)(i=this.particles[e]).update(t,e),this.parent.integrator.calculate(i,t,n),this.dispatch("PARTICLE_UPDATE",i),i.dead&&(this.dispatch("PARTICLE_DEAD",i),this.parent.pool.expire(i),this.particles.splice(e,1))}},n.dispatch=function(t,e){this.parent&&this.parent.dispatchEvent(t,e),this.bindEvent&&this.dispatchEvent(t,e)},n.emitting=function(t){if("once"===this.totalTime){var e,i=this.rate.getValue(99999);for(i>0&&(this.emitSpeed=i),e=0;e0&&(this.emitSpeed=r),n=0;n-1&&this.selfBehaviours.splice(e,1)},n.update=function(e){if(t.prototype.update.call(this,e),!this.sleep){var i,n=this.selfBehaviours.length;for(i=0;i>0,t.p.y-this.rectangle.y>>0,t)},n.setPixel=function(t,e,i,n){var r=n.rgb;if(!(e<0||e>this.element.width||i<0||i>this.elementwidth)){var a=4*((i>>0)*t.width+(e>>0));t.data[a]=r.r,t.data[a+1]=r.g,t.data[a+2]=r.b,t.data[a+3]=255*n.alpha}},n.onParticleDead=function(t){},n.destroy=function(){t.prototype.destroy.call(this),this.stroke=null,this.context=null,this.imageData=null,this.rectangle=null},i}(gt),xt=function(t){function i(e,i){var n;return(n=t.call(this,e)||this).stroke=i,n.color=!1,n.setColor=!1,n.blendMode=null,n.pool.create=function(t,e){return n.createBody(t,e)},n.setPIXI(window.PIXI),n.name="PixiRenderer",n}e(i,t);var n=i.prototype;return n.setPIXI=function(t){try{ct=t||{Sprite:{}},this.createFromImage=ct.Sprite.from||ct.Sprite.fromImage}catch(t){}},n.onProtonUpdate=function(){},n.onParticleCreated=function(t){t.body?t.body=this.pool.get(t.body,t):t.body=this.pool.get(this.circleConf,t),this.blendMode&&(t.body.blendMode=this.blendMode),this.element.addChild(t.body)},n.onParticleUpdate=function(t){this.transform(t,t.body),!0!==this.setColor&&!0!==this.color||(t.body.tint=D.getHex16FromParticle(t))},n.onParticleDead=function(t){this.element.removeChild(t.body),this.pool.expire(t.body),t.body=null},n.transform=function(t,e){e.x=t.p.x,e.y=t.p.y,e.alpha=t.alpha,e.scale.x=t.scale,e.scale.y=t.scale,e.rotation=t.rotation*P.PI_180},n.createBody=function(t,e){return t.isCircle?this.createCircle(e):this.createSprite(t)},n.createSprite=function(t){var e=t.isInner?this.createFromImage(t.src):new ct.Sprite(t);return e.anchor.x=.5,e.anchor.y=.5,e},n.createCircle=function(t){var e=new ct.Graphics;if(this.stroke){var i=ft(this.stroke)?this.stroke:0;e.beginStroke(i)}return e.beginFill(t.color||36077),e.drawCircle(0,0,t.radius),e.endFill(),e},n.destroy=function(e){t.prototype.destroy.call(this);for(var i=e.length;i--;){var n=e[i];n.body&&this.element.removeChild(n.body)}},i}(gt),Et=function(){function t(){this.mats=[],this.size=0;for(var t=0;t<20;t++)this.mats.push(M.create([0,0,0,0,0,0,0,0,0]))}var e=t.prototype;return e.set=function(t,e){0===e?M.set(t,this.mats[0]):M.multiply(this.mats[e-1],t,this.mats[e]),this.size=Math.max(this.size,e+1)},e.push=function(t){0===this.size?M.set(t,this.mats[0]):M.multiply(this.mats[this.size-1],t,this.mats[this.size]),this.size++},e.pop=function(){this.size>0&&this.size--},e.top=function(){return this.mats[this.size-1]},t}(),At=function(t){function i(e){var i;return(i=t.call(this,e)||this).gl=i.element.getContext("experimental-webgl",{antialias:!0,stencil:!1,depth:!1}),i.gl||alert("Sorry your browser do not suppest WebGL!"),i.initVar(),i.setMaxRadius(),i.initShaders(),i.initBuffers(),i.gl.blendEquation(i.gl.FUNC_ADD),i.gl.blendFunc(i.gl.SRC_ALPHA,i.gl.ONE_MINUS_SRC_ALPHA),i.gl.enable(i.gl.BLEND),i.addImg2Body=i.addImg2Body.bind(n(i)),i.name="WebGLRenderer",i}e(i,t);var c=i.prototype;return c.init=function(e){t.prototype.init.call(this,e),this.resize(this.element.width,this.element.height)},c.resize=function(t,e){this.umat[4]=-2,this.umat[7]=1,this.smat[0]=1/t,this.smat[4]=1/e,this.mstack.set(this.umat,0),this.mstack.set(this.smat,1),this.gl.viewport(0,0,t,e),this.element.width=t,this.element.height=e},c.setMaxRadius=function(t){this.circleCanvasURL=this.createCircle(t)},c.getVertexShader=function(){return["uniform vec2 viewport;","attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 tMat;","varying vec2 vTextureCoord;","varying float alpha;","void main() {","vec3 v = tMat * vec3(aVertexPosition, 1.0);","gl_Position = vec4(v.x, v.y, 0, 1);","vTextureCoord = aTextureCoord;","alpha = tMat[0][2];","}"].join("\n")},c.getFragmentShader=function(){return["precision mediump float;","varying vec2 vTextureCoord;","varying float alpha;","uniform sampler2D uSampler;","uniform vec4 color;","uniform bool useTexture;","uniform vec3 uColor;","void main() {","vec4 textureColor = texture2D(uSampler, vTextureCoord);","gl_FragColor = textureColor * vec4(uColor, 1.0);","gl_FragColor.w *= alpha;","}"].join("\n")},c.initVar=function(){this.mstack=new Et,this.umat=M.create([2,0,1,0,-2,0,-1,1,1]),this.smat=M.create([.01,0,1,0,.01,0,0,0,1]),this.texturebuffers={}},c.blendEquation=function(t){this.gl.blendEquation(this.gl[t])},c.blendFunc=function(t,e){this.gl.blendFunc(this.gl[t],this.gl[e])},c.getShader=function(t,e,i){var n=i?t.createShader(t.FRAGMENT_SHADER):t.createShader(t.VERTEX_SHADER);return t.shaderSource(n,e),t.compileShader(n),t.getShaderParameter(n,t.COMPILE_STATUS)?n:(alert(t.getShaderInfoLog(n)),null)},c.initShaders=function(){var t=this.getShader(this.gl,this.getFragmentShader(),!0),e=this.getShader(this.gl,this.getVertexShader(),!1);this.sprogram=this.gl.createProgram(),this.gl.attachShader(this.sprogram,e),this.gl.attachShader(this.sprogram,t),this.gl.linkProgram(this.sprogram),this.gl.getProgramParameter(this.sprogram,this.gl.LINK_STATUS)||alert("Could not initialise shaders"),this.gl.useProgram(this.sprogram),this.sprogram.vpa=this.gl.getAttribLocation(this.sprogram,"aVertexPosition"),this.sprogram.tca=this.gl.getAttribLocation(this.sprogram,"aTextureCoord"),this.gl.enableVertexAttribArray(this.sprogram.tca),this.gl.enableVertexAttribArray(this.sprogram.vpa),this.sprogram.tMatUniform=this.gl.getUniformLocation(this.sprogram,"tMat"),this.sprogram.samplerUniform=this.gl.getUniformLocation(this.sprogram,"uSampler"),this.sprogram.useTex=this.gl.getUniformLocation(this.sprogram,"useTexture"),this.sprogram.color=this.gl.getUniformLocation(this.sprogram,"uColor"),this.gl.uniform1i(this.sprogram.useTex,1)},c.initBuffers=function(){var t,e;this.unitIBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitIBuffer),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,3,1,0,2,3]),this.gl.STATIC_DRAW);var i=[];for(e=0;e<100;e++)i.push(e);for(t=new Uint16Array(i),this.unitI33=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitI33),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,t,this.gl.STATIC_DRAW),i=[],e=0;e<100;e++)i.push(e,e+1,e+2);t=new Uint16Array(i),this.stripBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.stripBuffer),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,t,this.gl.STATIC_DRAW)},c.createCircle=function(t){this.circleCanvasRadius=r(y.initValue(t,32));var e=l.createCanvas("circle_canvas",2*this.circleCanvasRadius,2*this.circleCanvasRadius),i=e.getContext("2d");return i.beginPath(),i.arc(this.circleCanvasRadius,this.circleCanvasRadius,this.circleCanvasRadius,0,2*Math.PI,!0),i.closePath(),i.fillStyle="#FFF",i.fill(),e.toDataURL()},c.drawImg2Canvas=function(t){var e=t.body.width,i=t.body.height,n=r(t.body.width),a=r(t.body.height),s=t.body.width/n,o=t.body.height/a;this.texturebuffers[t.data.src]||(this.texturebuffers[t.data.src]=[this.gl.createTexture(),this.gl.createBuffer(),this.gl.createBuffer()]),t.data.texture=this.texturebuffers[t.data.src][0],t.data.vcBuffer=this.texturebuffers[t.data.src][1],t.data.tcBuffer=this.texturebuffers[t.data.src][2],this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.tcBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,s,0,0,o,o,o]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.vcBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,e,0,0,i,e,i]),this.gl.STATIC_DRAW);var h=t.data.canvas.getContext("2d").getImageData(0,0,n,a);this.gl.bindTexture(this.gl.TEXTURE_2D,t.data.texture),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,h),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR_MIPMAP_NEAREST),this.gl.generateMipmap(this.gl.TEXTURE_2D),t.data.textureLoaded=!0,t.data.textureWidth=e,t.data.textureHeight=i},c.onProtonUpdate=function(){},c.onParticleCreated=function(t){t.data.textureLoaded=!1,t.data.tmat=M.create(),t.data.tmat[8]=1,t.data.imat=M.create(),t.data.imat[8]=1,t.body?f(t.body,this.addImg2Body,t):(f(this.circleCanvasURL,this.addImg2Body,t),t.data.oldScale=t.radius/this.circleCanvasRadius)},c.addImg2Body=function(t,e){e.dead||(e.body=t,e.data.src=t.src,e.data.canvas=g(t),e.data.oldScale=1,this.drawImg2Canvas(e))},c.onParticleUpdate=function(t){t.data.textureLoaded&&(this.updateMatrix(t),this.gl.uniform3f(this.sprogram.color,t.rgb.r/255,t.rgb.g/255,t.rgb.b/255),this.gl.uniformMatrix3fv(this.sprogram.tMatUniform,!1,this.mstack.top()),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.vcBuffer),this.gl.vertexAttribPointer(this.sprogram.vpa,2,this.gl.FLOAT,!1,0,0),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.tcBuffer),this.gl.vertexAttribPointer(this.sprogram.tca,2,this.gl.FLOAT,!1,0,0),this.gl.bindTexture(this.gl.TEXTURE_2D,t.data.texture),this.gl.uniform1i(this.sprogram.samplerUniform,0),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitIBuffer),this.gl.drawElements(this.gl.TRIANGLES,6,this.gl.UNSIGNED_SHORT,0),this.mstack.pop())},c.onParticleDead=function(t){},c.updateMatrix=function(t){var e=a(-t.data.textureWidth/2,-t.data.textureHeight/2),i=a(t.p.x,t.p.y),n=t.rotation*P.PI_180,r=s(n),l=t.scale*t.data.oldScale,c=o(l,l),u=h(e,c);u=h(u,r),u=h(u,i),M.inverse(u,t.data.imat),u[2]=t.alpha,this.mstack.push(u)},c.destroy=function(){t.prototype.destroy.call(this),this.gl=null,this.mstack=null,this.umat=null,this.smat=null,this.texturebuffers=null},i}(gt),Pt=function(t){function i(e){var i;return(i=t.call(this,e)||this).name="CustomRenderer",i}return e(i,t),i}(gt),Tt=function(t){function i(e,i,n,r,a){var s;return s=t.call(this)||this,n-e>=0?(s.x1=e,s.y1=i,s.x2=n,s.y2=r):(s.x1=n,s.y1=r,s.x2=e,s.y2=i),s.dx=s.x2-s.x1,s.dy=s.y2-s.y1,s.minx=Math.min(s.x1,s.x2),s.miny=Math.min(s.y1,s.y2),s.maxx=Math.max(s.x1,s.x2),s.maxy=Math.max(s.y1,s.y2),s.dot=s.x2*s.y1-s.x1*s.y2,s.xxyy=s.dx*s.dx+s.dy*s.dy,s.gradient=s.getGradient(),s.length=s.getLength(),s.direction=y.initValue(a,">"),s}e(i,t);var n=i.prototype;return n.getPosition=function(){return this.random=Math.random(),this.vector.x=this.x1+this.random*this.length*Math.cos(this.gradient),this.vector.y=this.y1+this.random*this.length*Math.sin(this.gradient),this.vector},n.getDirection=function(t,e){var i=this.dy,n=-this.dx;return(i*t+n*e+this.dot)*(0===n?1:n)>0},n.getDistance=function(t,e){return(this.dy*t+-this.dx*e+this.dot)/Math.sqrt(this.xxyy)},n.getSymmetric=function(t){var e=t.getGradient(),i=2*(this.getGradient()-e),n=t.x,r=t.y;return t.x=n*Math.cos(i)-r*Math.sin(i),t.y=n*Math.sin(i)+r*Math.cos(i),t},n.getGradient=function(){return Math.atan2(this.dy,this.dx)},n.rangeOut=function(t){if(Math.abs(this.getGradient())<=P.PI/4){if(t.p.x<=this.maxx&&t.p.x>=this.minx)return!0}else if(t.p.y<=this.maxy&&t.p.y>=this.miny)return!0;return!1},n.getLength=function(){return Math.sqrt(this.dx*this.dx+this.dy*this.dy)},n.crossing=function(t){if("dead"===this.crossType)if(">"===this.direction||"R"===this.direction||"right"===this.direction||"down"===this.direction){if(!this.rangeOut(t))return;this.getDirection(t.p.x,t.p.y)&&(t.dead=!0)}else{if(!this.rangeOut(t))return;this.getDirection(t.p.x,t.p.y)||(t.dead=!0)}else if("bound"===this.crossType){if(!this.rangeOut(t))return;this.getDistance(t.p.x,t.p.y)<=t.radius&&(0===this.dx?t.v.x*=-1:0===this.dy?t.v.y*=-1:this.getSymmetric(t.v))}else"cross"===this.crossType&&this.alert&&(console.error("Sorry, LineZone does not support cross method!"),this.alert=!1)},i}(k),Rt=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).x=e,r.y=i,r.radius=n,r.angle=0,r.center={x:e,y:i},r}e(i,t);var n=i.prototype;return n.getPosition=function(){return this.angle=P.PIx2*Math.random(),this.randomRadius=Math.random()*this.radius,this.vector.x=this.x+this.randomRadius*Math.cos(this.angle),this.vector.y=this.y+this.randomRadius*Math.sin(this.angle),this.vector},n.setCenter=function(t,e){this.center.x=t,this.center.y=e},n.crossing=function(t){var e=t.p.distanceTo(this.center);"dead"===this.crossType?e-t.radius>this.radius&&(t.dead=!0):"bound"===this.crossType?e+t.radius>=this.radius&&this.getSymmetric(t):"cross"===this.crossType&&this.alert&&(console.error("Sorry, CircleZone does not support cross method!"),this.alert=!1)},n.getSymmetric=function(t){var e=t.v.getGradient(),i=2*(this.getGradient(t)-e),n=t.v.x,r=t.v.y;t.v.x=n*Math.cos(i)-r*Math.sin(i),t.v.y=n*Math.sin(i)+r*Math.cos(i)},n.getGradient=function(t){return-P.PI_2+Math.atan2(t.p.y-this.center.y,t.p.x-this.center.x)},i}(k),_t=function(t){function i(e,i,n,r){var a;return(a=t.call(this)||this).x=e,a.y=i,a.width=n,a.height=r,a}e(i,t);var n=i.prototype;return n.getPosition=function(){return this.vector.x=this.x+Math.random()*this.width,this.vector.y=this.y+Math.random()*this.height,this.vector},n.crossing=function(t){"dead"===this.crossType?((t.p.x+t.radiusthis.x+this.width)&&(t.dead=!0),(t.p.y+t.radiusthis.y+this.height)&&(t.dead=!0)):"bound"===this.crossType?(t.p.x-t.radiusthis.x+this.width&&(t.p.x=this.x+this.width-t.radius,t.v.x*=-1),t.p.y-t.radiusthis.y+this.height&&(t.p.y=this.y+this.height-t.radius,t.v.y*=-1)):"cross"===this.crossType&&(t.p.x+t.radiusthis.x+this.width&&t.v.x>=0&&(t.p.x=this.x-t.radius),t.p.y+t.radiusthis.y+this.height&&t.v.y>=0&&(t.p.y=this.y-t.radius))},i}(k),wt=function(t){function i(e,i,n,r){var a;return(a=t.call(this)||this).reset(e,i,n,r),a}e(i,t);var n=i.prototype;return n.reset=function(t,e,i,n){this.imageData=t,this.x=y.initValue(e,0),this.y=y.initValue(i,0),this.d=y.initValue(n,2),this.vectors=[],this.setVectors()},n.setVectors=function(){var t,e,i=this.imageData.width,n=this.imageData.height;for(t=0;t>0)*i+(t>>0));this.imageData.data[r+3]>0&&this.vectors.push({x:t+this.x,y:e+this.y})}return this.vector},n.getBound=function(t,e){var i=4*((e>>0)*this.imageData.width+(t>>0));return this.imageData.data[i+3]>0},n.getPosition=function(){var t=y.getRandFromArray(this.vectors);return this.vector.copy(t)},n.getColor=function(t,e){t-=this.x;var i=4*(((e-=this.y)>>0)*this.imageData.width+(t>>0));return{r:this.imageData.data[i],g:this.imageData.data[i+1],b:this.imageData.data[i+2],a:this.imageData.data[i+3]}},n.crossing=function(t){"dead"===this.crossType?this.getBound(t.p.x-this.x,t.p.y-this.y)?t.dead=!0:t.dead=!1:"bound"===this.crossType&&(this.getBound(t.p.x-this.x,t.p.y-this.y)||t.v.negate())},n.destroy=function(){t.prototype.destroy.call(this),this.imageData=null},i}(k),Ct={addEventListener:function(t,e){t.addEventListener("PROTON_UPDATE_AFTER",(function(){return e()}))},getStyle:function(t){void 0===t&&(t="#ff0000");var e=D.hexToRgb(t);return"rgba("+e.r+", "+e.g+", "+e.b+", 0.5)"},drawZone:function(t,e,i,n){var r=e.getContext("2d"),a=this.getStyle();this.addEventListener(t,(function(){n&&r.clearRect(0,0,e.width,e.height),i instanceof N?(r.beginPath(),r.fillStyle=a,r.arc(i.x,i.y,10,0,2*Math.PI,!0),r.fill(),r.closePath()):i instanceof Tt?(r.beginPath(),r.strokeStyle=a,r.moveTo(i.x1,i.y1),r.lineTo(i.x2,i.y2),r.stroke(),r.closePath()):i instanceof _t?(r.beginPath(),r.strokeStyle=a,r.drawRect(i.x,i.y,i.width,i.height),r.stroke(),r.closePath()):i instanceof Rt&&(r.beginPath(),r.strokeStyle=a,r.arc(i.x,i.y,i.radius,0,2*Math.PI,!0),r.stroke(),r.closePath())}))},drawEmitter:function(t,e,i,n){var r=e.getContext("2d"),a=this.getStyle();this.addEventListener(t,(function(){n&&r.clearRect(0,0,e.width,e.height),r.beginPath(),r.fillStyle=a,r.arc(i.p.x,i.p.y,10,0,2*Math.PI,!0),r.fill(),r.closePath()}))}};return R.Particle=S,R.Pool=b,R.Util=y,R.ColorUtil=D,R.MathUtil=P,R.Vector2D=R.Vector=I,R.Polar2D=R.Polar=V,R.ArraySpan=L,R.Rectangle=U,R.Rate=F,R.ease=C,R.Span=B,R.Mat3=M,R.getSpan=function(t,e,i){return new B(t,e,i)},R.createArraySpan=L.createArraySpan,R.Initialize=R.Init=z,R.Life=R.L=O,R.Position=R.P=H,R.Velocity=R.V=q,R.Mass=R.M=G,R.Radius=R.R=X,R.Body=R.B=Y,R.Behaviour=j,R.Force=R.F=W,R.Attraction=R.A=Z,R.RandomDrift=R.RD=Q,R.Gravity=R.G=K,R.Collision=J,R.CrossZone=$,R.Alpha=tt,R.Scale=R.S=et,R.Rotate=it,R.Color=nt,R.Repulsion=st,R.Cyclone=at,R.GravityWell=ot,R.Emitter=lt,R.BehaviourEmitter=ut,R.FollowEmitter=dt,R.Zone=k,R.LineZone=Tt,R.CircleZone=Rt,R.PointZone=N,R.RectZone=_t,R.ImageZone=wt,R.CanvasRenderer=yt,R.DomRenderer=mt,R.EaselRenderer=vt,R.PixiRenderer=xt,R.PixelRenderer=bt,R.WebGLRenderer=R.WebGlRenderer=At,R.CustomRenderer=Pt,R.Debug=Ct,y.assign(R,C),R})); +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Proton=e()}(this,(function(){"use strict";function t(t,e){for(var i=0;i>e;return t+1},a=function(t,e){return[1,0,0,0,1,0,t,e,1]},s=function(t){var e=Math.cos(t),i=Math.sin(t);return[e,-i,0,i,e,0,0,0,1]},o=function(t,e){return[t,0,0,0,e,0,0,0,1]},h=function(t,e){var i=t[0],n=t[1],r=t[2],a=t[3],s=t[4],o=t[5],h=t[6],l=t[7],c=t[8],u=e[0],d=e[1],p=e[2],f=e[3],g=e[4],y=e[5],m=e[6],v=e[7],b=e[8];return[i*u+n*f+r*m,i*d+n*g+r*v,i*p+n*y+r*b,a*u+s*f+o*m,a*d+s*g+o*v,a*p+s*y+o*b,h*u+l*f+c*m,h*d+l*g+c*v,h*p+l*y+c*b]},l={createCanvas:function(t,e,i,n){void 0===n&&(n="absolute");var r=document.createElement("canvas");return r.id=t,r.width=e,r.height=i,r.style.opacity=0,r.style.position=n,this.transform(r,-500,-500,0,0),r},createDiv:function(t,e,i){var n=document.createElement("div");return n.id=t,n.style.position="absolute",this.resize(n,e,i),n},resize:function(t,e,i){t.style.width=e+"px",t.style.height=i+"px",t.style.marginLeft=-e/2+"px",t.style.marginTop=-i/2+"px"},transform:function(t,e,i,n,r){t.style.willChange="transform";var a="translate("+e+"px, "+i+"px) scale("+n+") rotate("+r+"deg)";this.css3(t,"transform",a)},transform3d:function(t,e,i,n,r){t.style.willChange="transform";var a="translate3d("+e+"px, "+i+"px, 0) scale("+n+") rotate("+r+"deg)";this.css3(t,"backfaceVisibility","hidden"),this.css3(t,"transform",a)},css3:function(t,e,i){var n=e.charAt(0).toUpperCase()+e.substr(1);t.style["Webkit"+n]=i,t.style["Moz"+n]=i,t.style["O"+n]=i,t.style["ms"+n]=i,t.style[""+e]=i}},c={},u={},d=0,p=function(t,e,i){t.drawImage(e,i.x,i.y);var n=t.getImageData(i.x,i.y,i.width,i.height);return t.clearRect(i.x,i.y,i.width,i.height),n},f=function(t,e,i){var n="string"==typeof t?t:t.src;if(c[n])e(c[n],i);else{var r=new Image;r.onload=function(t){c[n]=t.target,e(c[n],i)},r.src=n}},g=function(t,e,i){var n=t.src;if(!u[n]){var a=r(t.width),s=r(t.height),o=l.createCanvas("proton_canvas_cache_"+ ++d,a,s);o.getContext("2d").drawImage(t,0,0,t.width,t.height),u[n]=o}return e&&e(u[n],i),u[n]},y={initValue:function(t,e){return t=null!=t?t:e},isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},emptyArray:function(t){t&&(t.length=0)},toArray:function(t){return this.isArray(t)?t:[t]},sliceArray:function(t,e,i){this.emptyArray(i);for(var n=e;n-1||delete t[i]},classApply:function(t,e){return void 0===e&&(e=null),e?new(t.bind.apply(t,[null].concat(e))):new t},getImageData:function(t,e,i){return p(t,e,i)},destroyAll:function(t,e){void 0===e&&(e=null);for(var i=t.length;i--;){try{t[i].destroy(e)}catch(t){}delete t[i]}t.length=0},assign:function(t,e){if("function"!=typeof Object.assign){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}return Object.assign(t,e)}},m={},v={_index:0,_cache:{},id:function(t){return void 0!==m[t]&&null!==m[t]||(m[t]=0),t+"_"+m[t]++},getId:function(t){var e=this.getIdFromCache(t);return e||(e="PUID_"+this._index++,this._cache[e]=t,e)},getIdFromCache:function(t){var e,i;for(i in this._cache){if((e=this._cache[i])===t)return i;if(this.isBody(e,t)&&e.src===t.src)return i}return null},isBody:function(t,e){return"object"==typeof t&&"object"==typeof e&&t.isInner&&e.isInner},getTarget:function(t){return this._cache[t]}},b=function(){function t(t){this.total=0,this.cache={}}var e=t.prototype;return e.get=function(t,e,i){var n;return i=i||t.__puid||v.getId(t),(n=this.cache[i]&&this.cache[i].length>0?this.cache[i].pop():this.createOrClone(t,e)).__puid=t.__puid||i,n},e.expire=function(t){return this.getCache(t.__puid).push(t)},e.createOrClone=function(t,e){return this.total++,this.create?this.create(t,e):"function"==typeof t?y.classApply(t,e):t.clone()},e.getCount=function(){var t=0;for(var e in this.cache)t+=this.cache[e].length;return t++},e.destroy=function(){for(var t in this.cache)this.cache[t].length=0,delete this.cache[t]},e.getCache=function(t){return void 0===t&&(t="default"),this.cache[t]||(this.cache[t]=[]),this.cache[t]},t}(),x=function(){function t(t){this.proton=t,this.container=null,this.type=1,this.emitterIndex=0,this.rendererIndex=0}var e=t.prototype;return e.update=function(t,e){this.add(t,e);var i=this.getEmitter(),n=this.getRenderer(),r="";switch(this.type){case 2:r+="emitter:"+this.proton.emitters.length+"
",i&&(r+="em speed:"+i.emitSpeed+"
"),i&&(r+="pos:"+this.getEmitterPos(i));break;case 3:i&&(r+="initializes:"+i.initializes.length+"
"),i&&(r+=''+this.concatArr(i.initializes)+"
"),i&&(r+="behaviours:"+i.behaviours.length+"
"),i&&(r+=''+this.concatArr(i.behaviours)+"
");break;case 4:n&&(r+=n.name+"
"),n&&(r+="body:"+this.getCreatedNumber(n)+"
");break;default:r+="particles:"+this.proton.getCount()+"
",r+="pool:"+this.proton.pool.getCount()+"
",r+="total:"+this.proton.pool.total}this.container.innerHTML=r},e.add=function(t,e){var i=this;if(!this.container){var n,r;switch(this.type=1,this.container=document.createElement("div"),this.container.style.cssText=["position:absolute;bottom:0px;left:0;cursor:pointer;","opacity:0.9;z-index:10000;padding:10px;font-size:12px;font-family:Helvetica,Arial,sans-serif;","width:120px;height:50px;background-color:#002;color:#0ff;"].join(""),this.container.addEventListener("click",(function(t){i.type++,i.type>4&&(i.type=1)}),!1),t){case 2:n="#201",r="#f08";break;case 3:n="#020",r="#0f0";break;default:n="#002",r="#0ff"}this.container.style["background-color"]=n,this.container.style.color=r}this.container.parentNode||(e=e||this.body||document.body).appendChild(this.container)},e.getEmitter=function(){return this.proton.emitters[this.emitterIndex]},e.getRenderer=function(){return this.proton.renderers[this.rendererIndex]},e.concatArr=function(t){var e="";if(!t||!t.length)return e;for(var i=0;i>0)+t:t+Math.random()*(e-t)},randomFloating:function(t,e,i){return this.randomAToB(t-e,t+e,i)},randomColor:function(){return"#"+("00000"+(16777216*Math.random()<<0).toString(16)).slice(-6)},randomZone:function(t){},floor:function(t,e){void 0===e&&(e=4);var i=Math.pow(10,e);return Math.floor(t*i)/i},degreeTransform:function(t){return t*A/180},toColor16:function(t){return"#"+t.toString(16)}},T=function(){function t(t){this.type=t}var e=t.prototype;return e.calculate=function(t,e,i){this.eulerIntegrate(t,e,i)},e.eulerIntegrate=function(t,e,i){t.sleep||(t.old.p.copy(t.p),t.old.v.copy(t.v),t.a.multiplyScalar(1/t.mass),t.v.add(t.a.multiplyScalar(e)),t.p.add(t.old.v.multiplyScalar(e)),i&&t.v.multiplyScalar(i),t.a.clear())},t}(),R=function(){function e(t){this.emitters=[],this.renderers=[],this.time=0,this.now=0,this.then=0,this.elapsed=0,this.stats=new x(this),this.pool=new b(80),this.integrationType=y.initValue(t,e.EULER),this.integrator=new T(this.integrationType),this._fps="auto",this._interval=e.DEFAULT_INTERVAL}var i,n,r,a=e.prototype;return a.addRenderer=function(t){t.init(this),this.renderers.push(t)},a.removeRenderer=function(t){var e=this.renderers.indexOf(t);this.renderers.splice(e,1),t.remove(this)},a.addEmitter=function(t){this.emitters.push(t),t.parent=this,this.dispatchEvent(e.EMITTER_ADDED,t)},a.removeEmitter=function(t){var i=this.emitters.indexOf(t);this.emitters.splice(i,1),t.parent=null,this.dispatchEvent(e.EMITTER_REMOVED,t)},a.update=function(){"auto"===this._fps?(this.dispatchEvent(e.PROTON_UPDATE),e.USE_CLOCK?(this.then||(this.then=(new Date).getTime()),this.now=(new Date).getTime(),this.elapsed=.001*(this.now-this.then),this.amendChangeTabsBug(),this.elapsed>0&&this.emittersUpdate(this.elapsed),this.then=this.now):this.emittersUpdate(e.DEFAULT_INTERVAL),this.dispatchEvent(e.PROTON_UPDATE_AFTER)):(this.then||(this.then=(new Date).getTime()),this.now=(new Date).getTime(),this.elapsed=.001*(this.now-this.then),this.elapsed>this._interval&&(this.dispatchEvent(e.PROTON_UPDATE),this.emittersUpdate(this._interval),this.then=this.now-this.elapsed%this._interval*1e3,this.dispatchEvent(e.PROTON_UPDATE_AFTER)))},a.emittersUpdate=function(t){for(var e=this.emitters.length;e--;)this.emitters[e].update(t)},a.amendChangeTabsBug=function(){e.amendChangeTabsBug&&this.elapsed>.5&&(this.then=(new Date).getTime(),this.elapsed=0)},a.getCount=function(){for(var t=0,e=this.emitters.length;e--;)t+=this.emitters[e].particles.length;return t},a.getAllParticles=function(){for(var t=[],e=this.emitters.length;e--;)t=t.concat(this.emitters[e].particles);return t},a.destroyAllEmitters=function(){y.destroyAll(this.emitters)},a.destroy=function(t){var e=this;void 0===t&&(t=!1);var i=function(){e.time=0,e.then=0,e.pool.destroy(),e.stats.destroy(),y.destroyAll(e.emitters),y.destroyAll(e.renderers,e.getAllParticles()),e.integrator=null,e.renderers=null,e.emitters=null,e.stats=null,e.pool=null};t?setTimeout(i,200):i()},i=e,(n=[{key:"fps",get:function(){return this._fps},set:function(t){this._fps=t,this._interval="auto"===t?e.DEFAULT_INTERVAL:P.floor(1/t,7)}}])&&t(i.prototype,n),r&&t(i,r),Object.defineProperty(i,"prototype",{writable:!1}),e}();R.USE_CLOCK=!1,R.MEASURE=100,R.EULER="euler",R.RK2="runge-kutta2",R.PARTICLE_CREATED="PARTICLE_CREATED",R.PARTICLE_UPDATE="PARTICLE_UPDATE",R.PARTICLE_SLEEP="PARTICLE_SLEEP",R.PARTICLE_DEAD="PARTICLE_DEAD",R.EMITTER_ADDED="EMITTER_ADDED",R.EMITTER_REMOVED="EMITTER_REMOVED",R.PROTON_UPDATE="PROTON_UPDATE",R.PROTON_UPDATE_AFTER="PROTON_UPDATE_AFTER",R.DEFAULT_INTERVAL=.0167,R.amendChangeTabsBug=!0,E.bind(R);var _=function(){function t(t,e,i){void 0===t&&(t=255),void 0===e&&(e=255),void 0===i&&(i=255),this.r=t,this.g=e,this.b=i}return t.prototype.reset=function(){this.r=255,this.g=255,this.b=255},t}(),w={hasProp:function(t,e){return!!t&&void 0!==t[e]},setProp:function(t,e){for(var i in e)t.hasOwnProperty(i)&&(t[i]=Span.getSpanValue(e[i]));return t},setVectorVal:function(t,e){void 0===e&&(e=null),e&&(this.hasProp(e,"x")&&(t.p.x=e.x),this.hasProp(e,"y")&&(t.p.y=e.y),this.hasProp(e,"vx")&&(t.v.x=e.vx),this.hasProp(e,"vy")&&(t.v.y=e.vy),this.hasProp(e,"ax")&&(t.a.x=e.ax),this.hasProp(e,"ay")&&(t.a.y=e.ay),this.hasProp(e,"p")&&t.p.copy(e.p),this.hasProp(e,"v")&&t.v.copy(e.v),this.hasProp(e,"a")&&t.a.copy(e.a),this.hasProp(e,"position")&&t.p.copy(e.position),this.hasProp(e,"velocity")&&t.v.copy(e.velocity),this.hasProp(e,"accelerate")&&t.a.copy(e.accelerate))}},C={easeLinear:function(t){return t},easeInQuad:function(t){return Math.pow(t,2)},easeOutQuad:function(t){return-(Math.pow(t-1,2)-1)},easeInOutQuad:function(t){return(t/=.5)<1?.5*Math.pow(t,2):-.5*((t-=2)*t-2)},easeInCubic:function(t){return Math.pow(t,3)},easeOutCubic:function(t){return Math.pow(t-1,3)+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*Math.pow(t,3):.5*(Math.pow(t-2,3)+2)},easeInQuart:function(t){return Math.pow(t,4)},easeOutQuart:function(t){return-(Math.pow(t-1,4)-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*Math.pow(t,4):-.5*((t-=2)*Math.pow(t,3)-2)},easeInSine:function(t){return 1-Math.cos(t*P.PI_2)},easeOutSine:function(t){return Math.sin(t*P.PI_2)},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-Math.pow(t-1,2))},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},getEasing:function(t){return"function"==typeof t?t:this[t]||this.easeLinear}},I=function(){function t(t,e){this.x=t||0,this.y=e||0}var e=t.prototype;return e.set=function(t,e){return this.x=t,this.y=e,this},e.setX=function(t){return this.x=t,this},e.setY=function(t){return this.y=t,this},e.getGradient=function(){return 0!==this.x?Math.atan2(this.y,this.x):this.y>0?P.PI_2:this.y<0?-P.PI_2:void 0},e.copy=function(t){return this.x=t.x,this.y=t.y,this},e.add=function(t,e){return void 0!==e?this.addVectors(t,e):(this.x+=t.x,this.y+=t.y,this)},e.addXY=function(t,e){return this.x+=t,this.y+=e,this},e.addVectors=function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this},e.sub=function(t,e){return void 0!==e?this.subVectors(t,e):(this.x-=t.x,this.y-=t.y,this)},e.subVectors=function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this},e.divideScalar=function(t){return 0!==t?(this.x/=t,this.y/=t):this.set(0,0),this},e.multiplyScalar=function(t){return this.x*=t,this.y*=t,this},e.negate=function(){return this.multiplyScalar(-1)},e.dot=function(t){return this.x*t.x+this.y*t.y},e.lengthSq=function(){return this.x*this.x+this.y*this.y},e.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},e.normalize=function(){return this.divideScalar(this.length())},e.distanceTo=function(t){return Math.sqrt(this.distanceToSquared(t))},e.rotate=function(t){var e=this.x,i=this.y;return this.x=e*Math.cos(t)+i*Math.sin(t),this.y=-e*Math.sin(t)+i*Math.cos(t),this},e.distanceToSquared=function(t){var e=this.x-t.x,i=this.y-t.y;return e*e+i*i},e.lerp=function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this},e.equals=function(t){return t.x===this.x&&t.y===this.y},e.clear=function(){return this.x=0,this.y=0,this},e.clone=function(){return new t(this.x,this.y)},t}(),S=function(){function t(t){this.id="",this.old=null,this.data=null,this.behaviours=null,this.p=null,this.v=null,this.a=null,this.rgb=null,this.name="Particle",this.id=v.id(this.name),this.old={},this.data={},this.behaviours=[],this.p=new I,this.v=new I,this.a=new I,this.old.p=new I,this.old.v=new I,this.old.a=new I,this.rgb=new _,this.reset(),t&&w.setProp(this,t)}var e=t.prototype;return e.getDirection=function(){return Math.atan2(this.v.x,-this.v.y)*P.N180_PI},e.reset=function(){return this.life=1/0,this.age=0,this.dead=!1,this.sleep=!1,this.body=null,this.sprite=null,this.parent=null,this.energy=1,this.mass=1,this.radius=10,this.alpha=1,this.scale=1,this.rotation=0,this.color=null,this.p.set(0,0),this.v.set(0,0),this.a.set(0,0),this.old.p.set(0,0),this.old.v.set(0,0),this.old.a.set(0,0),this.easing=C.easeLinear,this.rgb.reset(),y.emptyObject(this.data),this.removeAllBehaviours(),this},e.update=function(t,e){if(this.sleep||(this.age+=t,this.applyBehaviours(t,e)),this.age-1&&(this.behaviours.splice(e,1).parents=null)},e.removeAllBehaviours=function(){y.emptyArray(this.behaviours)},e.destroy=function(){this.removeAllBehaviours(),this.energy=0,this.dead=!0,this.parent=null},t}(),D={hexToRgb:function(t){var e="#"===t.charAt(0)?t.substring(1,7):t;return{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16)}},rgbToHex:function(t){return"rgb("+t.r+", "+t.g+", "+t.b+")"},getHex16FromParticle:function(t){return 65536*Number(t.rgb.r)+256*Number(t.rgb.g)+Number(t.rgb.b)}},V=function(){function t(t,e){this.r=Math.abs(t)||0,this.tha=e||0}var e=t.prototype;return e.set=function(t,e){return this.r=t,this.tha=e,this},e.setR=function(t){return this.r=t,this},e.setTha=function(t){return this.tha=t,this},e.copy=function(t){return this.r=t.r,this.tha=t.tha,this},e.toVector=function(){return new I(this.getX(),this.getY())},e.getX=function(){return this.r*Math.sin(this.tha)},e.getY=function(){return-this.r*Math.cos(this.tha)},e.normalize=function(){return this.r=1,this},e.equals=function(t){return t.r===this.r&&t.tha===this.tha},e.clear=function(){return this.r=0,this.tha=0,this},e.clone=function(){return new t(this.r,this.tha)},t}(),M={create:function(t){var e=new Float32Array(9);return t&&this.set(t,e),e},set:function(t,e){for(var i=0;i<9;i++)e[i]=t[i];return e},multiply:function(t,e,i){var n=t[0],r=t[1],a=t[2],s=t[3],o=t[4],h=t[6],l=t[7],c=e[0],u=e[1],d=e[2],p=e[3],f=e[4],g=e[6],y=e[7];return i[0]=c*n+u*s,i[1]=c*r+u*o,i[2]=a*d,i[3]=p*n+f*s,i[4]=p*r+f*o,i[6]=g*n+y*s+h,i[7]=g*r+y*o+l,i},inverse:function(t,e){var i,n=t[0],r=t[1],a=t[3],s=t[4],o=t[6],h=t[7],l=s,c=-a,u=h*a-s*o;return i=1/(n*l+r*c),e[0]=l*i,e[1]=-r*i,e[3]=c*i,e[4]=n*i,e[6]=u*i,e[7]=(-h*n+r*o)*i,e},multiplyVec2:function(t,e,i){var n=e[0],r=e[1];return i[0]=n*t[0]+r*t[3]+t[6],i[1]=n*t[1]+r*t[4]+t[7],i}},B=function(){function t(t,e,i){y.isArray(t)?(this.isArray=!0,this.a=t):(this.isArray=!1,this.a=y.initValue(t,1),this.b=y.initValue(e,this.a),this.center=y.initValue(i,!1))}return t.prototype.getValue=function(t){return void 0===t&&(t=!1),this.isArray?y.getRandFromArray(this.a):this.center?P.randomFloating(this.a,this.b,t):P.randomAToB(this.a,this.b,t)},t.setSpanValue=function(e,i,n){return e instanceof t?e:void 0===i?new t(e):void 0===n?new t(e,i):new t(e,i,n)},t.getSpanValue=function(e){return e instanceof t?e.getValue():e},t}(),L=function(t){function i(e){var i;return(i=t.call(this)||this)._arr=y.toArray(e),i}return e(i,t),i.prototype.getValue=function(){var t=y.getRandFromArray(this._arr);return"random"===t||"Random"===t?P.randomColor():t},i.createArraySpan=function(t){return t?t instanceof i?t:new i(t):null},i}(B),U=function(){function t(t,e,i,n){this.x=t,this.y=e,this.width=i,this.height=n,this.bottom=this.y+this.height,this.right=this.x+this.width}return t.prototype.contains=function(t,e){return t<=this.right&&t>=this.x&&e<=this.bottom&&e>=this.y},t}(),F=function(){function t(t,e){this.numPan=B.setSpanValue(y.initValue(t,1)),this.timePan=B.setSpanValue(y.initValue(e,1)),this.startTime=0,this.nextTime=0,this.init()}var e=t.prototype;return e.init=function(){this.startTime=0,this.nextTime=this.timePan.getValue()},e.getValue=function(t){return this.startTime+=t,this.startTime>=this.nextTime?(this.startTime=0,this.nextTime=this.timePan.getValue(),1===this.numPan.b?this.numPan.getValue(!1)>.5?1:0:this.numPan.getValue(!0)):0},t}(),z=function(){function t(){}var e=t.prototype;return e.reset=function(){},e.init=function(t,e){e?this.initialize(e):this.initialize(t)},e.initialize=function(t){},t}(),O=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).lifePan=B.setSpanValue(e,i,n),r.name="Life",r}return e(i,t),i.prototype.initialize=function(t){this.lifePan.a===1/0?t.life=1/0:t.life=this.lifePan.getValue()},i}(z),k=function(){function t(){this.vector=new I(0,0),this.random=0,this.crossType="dead",this.alert=!0}var e=t.prototype;return e.getPosition=function(){},e.crossing=function(t){},e.destroy=function(){this.vector=null},t}(),N=function(t){function i(e,i){var n;return(n=t.call(this)||this).x=e,n.y=i,n}e(i,t);var n=i.prototype;return n.getPosition=function(){return this.vector.x=this.x,this.vector.y=this.y,this.vector},n.crossing=function(t){this.alert&&(console.error("Sorry, PointZone does not support crossing method!"),this.alert=!1)},i}(k),H=function(t){function i(e){var i;return(i=t.call(this)||this).zone=y.initValue(e,new N),i.name="Position",i}e(i,t);var n=i.prototype;return n.reset=function(t){this.zone=y.initValue(t,new N)},n.initialize=function(t){this.zone.getPosition(),t.p.x=this.zone.vector.x,t.p.y=this.zone.vector.y},i}(z),q=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).rPan=B.setSpanValue(e),r.thaPan=B.setSpanValue(i),r.type=y.initValue(n,"vector"),r.name="Velocity",r}e(i,t);var n=i.prototype;return n.reset=function(t,e,i){this.rPan=B.setSpanValue(t),this.thaPan=B.setSpanValue(e),this.type=y.initValue(i,"vector")},n.normalizeVelocity=function(t){return t*R.MEASURE},n.initialize=function(t){if("p"===this.type||"P"===this.type||"polar"===this.type){var e=new V(this.normalizeVelocity(this.rPan.getValue()),this.thaPan.getValue()*P.PI_180);t.v.x=e.getX(),t.v.y=e.getY()}else t.v.x=this.normalizeVelocity(this.rPan.getValue()),t.v.y=this.normalizeVelocity(this.thaPan.getValue())},i}(z),G=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).massPan=B.setSpanValue(e,i,n),r.name="Mass",r}return e(i,t),i.prototype.initialize=function(t){t.mass=this.massPan.getValue()},i}(z),X=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).radius=B.setSpanValue(e,i,n),r.name="Radius",r}e(i,t);var n=i.prototype;return n.reset=function(t,e,i){this.radius=B.setSpanValue(t,e,i)},n.initialize=function(t){t.radius=this.radius.getValue(),t.data.oldRadius=t.radius},i}(z),Y=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).image=r.setSpanValue(e),r.w=y.initValue(i,20),r.h=y.initValue(n,r.w),r.name="Body",r}e(i,t);var n=i.prototype;return n.initialize=function(t){var e=this.image.getValue();t.body="string"==typeof e?{width:this.w,height:this.h,src:e,isInner:!0,inner:!0}:e},n.setSpanValue=function(t){return t instanceof L?t:new L(t)},i}(z),j=function(){function t(e,i){this.life=y.initValue(e,1/0),this.easing=C.getEasing(i),this.age=0,this.energy=1,this.dead=!1,this.parents=[],this.id="Behaviour_"+t.id++,this.name="Behaviour"}var e=t.prototype;return e.reset=function(t,e){this.life=y.initValue(t,1/0),this.easing=C.getEasing(e)},e.normalizeForce=function(t){return t.multiplyScalar(R.MEASURE)},e.normalizeValue=function(t){return t*R.MEASURE},e.initialize=function(t){},e.calculate=function(t,e,i){if(this.age+=e,this.age>=this.life||this.dead)this.energy=0,this.dead=!0,this.destroy();else{var n=this.easing(t.age/t.life);this.energy=Math.max(1-n,0)}},e.applyBehaviour=function(t,e,i){this.calculate(t,e,i)},e.destroy=function(){for(var t=this.parents.length;t--;)this.parents[t].removeBehaviour(this);this.parents.length=0},t}();j.id=0;var W=function(t){function i(e,i,n,r){var a;return(a=t.call(this,n,r)||this).force=a.normalizeForce(new I(e,i)),a.name="Force",a}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r){this.force=this.normalizeForce(new I(e,i)),n&&t.prototype.reset.call(this,n,r)},n.applyBehaviour=function(t,e,i){this.calculate(t,e,i),t.a.add(this.force)},i}(j),Z=function(t){function i(e,i,n,r,a){var s;return(s=t.call(this,r,a)||this).targetPosition=y.initValue(e,new I),s.radius=y.initValue(n,1e3),s.force=y.initValue(s.normalizeValue(i),100),s.radiusSq=s.radius*s.radius,s.attractionForce=new I,s.lengthSq=0,s.name="Attraction",s}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r,a){this.targetPosition=y.initValue(e,new I),this.radius=y.initValue(n,1e3),this.force=y.initValue(this.normalizeValue(i),100),this.radiusSq=this.radius*this.radius,this.attractionForce=new I,this.lengthSq=0,r&&t.prototype.reset.call(this,r,a)},n.applyBehaviour=function(t,e,i){this.calculate(t,e,i),this.attractionForce.copy(this.targetPosition),this.attractionForce.sub(t.p),this.lengthSq=this.attractionForce.lengthSq(),this.lengthSq>4e-5&&this.lengthSq=this.delay&&(t.a.addXY(P.randomAToB(-this.panFoce.x,this.panFoce.x),P.randomAToB(-this.panFoce.y,this.panFoce.y)),t.data.time=0)},i}(j),K=function(t){function i(e,i,n){var r;return(r=t.call(this,0,e,i,n)||this).name="Gravity",r}return e(i,t),i.prototype.reset=function(e,i,n){t.prototype.reset.call(this,0,e,i,n)},i}(W),J=function(t){function i(e,i,n,r,a){var s;return(s=t.call(this,r,a)||this).reset(e,i,n),s.newPool=[],s.pool=[],s.name="Collision",s}e(i,t);var n=i.prototype;return n.reset=function(e,i,n,r,a){this.emitter=y.initValue(e,null),this.mass=y.initValue(i,!0),this.callback=y.initValue(n,null),this.collisionPool=[],this.delta=new I,r&&t.prototype.reset.call(this,r,a)},n.applyBehaviour=function(t,e,i){this.emitter?y.sliceArray(this.emitter.particles,i,this.newPool):y.sliceArray(this.pool,i,this.newPool);var n,r,a,s,o,h,l,c=this.newPool.length;for(l=0;lr;)t-=r,this.update(r);this.stoped=e,this.emitTime=i+Math.max(t,0),this.totalTime=n},n.removeAllParticles=function(){for(var t=this.particles.length;t--;)this.particles[t].dead=!0},n.addSelfInitialize=function(t){t.init&&t.init(this)},n.addInitialize=function(){for(var t=arguments.length,e=new Array(t),i=0;i-1&&this.initializes.splice(e,1)},n.removeAllInitializers=function(){y.emptyArray(this.initializes)},n.addBehaviour=function(){for(var t=arguments.length,e=new Array(t),i=0;i=this.life||this.dead)&&this.destroy(),this.emitting(t),this.integrate(t)},n.integrate=function(t){if(this.parent){var e,i,n=1-this.damping;for(this.parent.integrator.calculate(this,t,n),e=this.particles.length-1;e>=0;e--)(i=this.particles[e]).update(t,e),this.parent.integrator.calculate(i,t,n),this.dispatch("PARTICLE_UPDATE",i),i.dead&&(this.dispatch("PARTICLE_DEAD",i),this.parent.pool.expire(i),this.particles.splice(e,1))}},n.dispatch=function(t,e){this.parent&&this.parent.dispatchEvent(t,e),this.bindEvent&&this.dispatchEvent(t,e)},n.emitting=function(t){if("once"===this.totalTime){var e,i=this.rate.getValue(99999);for(i>0&&(this.emitSpeed=i),e=0;e0&&(this.emitSpeed=r),n=0;n-1&&this.selfBehaviours.splice(e,1)},n.update=function(e){if(t.prototype.update.call(this,e),!this.sleep){var i,n=this.selfBehaviours.length;for(i=0;i>0,t.p.y-this.rectangle.y>>0,t)},n.setPixel=function(t,e,i,n){var r=n.rgb;if(!(e<0||e>this.element.width||i<0||i>this.elementwidth)){var a=4*((i>>0)*t.width+(e>>0));t.data[a]=r.r,t.data[a+1]=r.g,t.data[a+2]=r.b,t.data[a+3]=255*n.alpha}},n.onParticleDead=function(t){},n.destroy=function(){t.prototype.destroy.call(this),this.stroke=null,this.context=null,this.imageData=null,this.rectangle=null},i}(gt),xt=function(t){function i(e,i){var n;return(n=t.call(this,e)||this).stroke=i,n.color=!1,n.setColor=!1,n.blendMode=null,n.pool.create=function(t,e){return n.createBody(t,e)},n.setPIXI(window.PIXI),n.name="PixiRenderer",n}e(i,t);var n=i.prototype;return n.setPIXI=function(t){try{ct=t||{Sprite:{}},this.createFromImage=ct.Sprite.from||ct.Sprite.fromImage}catch(t){}},n.onProtonUpdate=function(){},n.onParticleCreated=function(t){t.body?t.body=this.pool.get(t.body,t):t.body=this.pool.get(this.circleConf,t),this.blendMode&&(t.body.blendMode=this.blendMode),this.element.addChild(t.body)},n.onParticleUpdate=function(t){this.transform(t,t.body),!0!==this.setColor&&!0!==this.color||(t.body.tint=D.getHex16FromParticle(t))},n.onParticleDead=function(t){this.element.removeChild(t.body),this.pool.expire(t.body),t.body=null},n.transform=function(t,e){e.x=t.p.x,e.y=t.p.y,e.alpha=t.alpha,e.scale.x=t.scale,e.scale.y=t.scale,e.rotation=t.rotation*P.PI_180},n.createBody=function(t,e){return t.isCircle?this.createCircle(e):this.createSprite(t)},n.createSprite=function(t){var e=t.isInner?this.createFromImage(t.src):new ct.Sprite(t);return e.anchor.x=.5,e.anchor.y=.5,e},n.createCircle=function(t){var e=new ct.Graphics;if(this.stroke){var i=ft(this.stroke)?this.stroke:0;e.beginStroke(i)}return e.beginFill(t.color||36077),e.drawCircle(0,0,t.radius),e.endFill(),e},n.destroy=function(e){t.prototype.destroy.call(this);for(var i=e.length;i--;){var n=e[i];n.body&&this.element.removeChild(n.body)}},i}(gt),Et=function(){function t(){this.mats=[],this.size=0;for(var t=0;t<20;t++)this.mats.push(M.create([0,0,0,0,0,0,0,0,0]))}var e=t.prototype;return e.set=function(t,e){0===e?M.set(t,this.mats[0]):M.multiply(this.mats[e-1],t,this.mats[e]),this.size=Math.max(this.size,e+1)},e.push=function(t){0===this.size?M.set(t,this.mats[0]):M.multiply(this.mats[this.size-1],t,this.mats[this.size]),this.size++},e.pop=function(){this.size>0&&this.size--},e.top=function(){return this.mats[this.size-1]},t}(),At=function(t){function i(e){var i;return(i=t.call(this,e)||this).gl=i.element.getContext("experimental-webgl",{antialias:!0,stencil:!1,depth:!1}),i.gl||alert("Sorry your browser do not suppest WebGL!"),i.initVar(),i.setMaxRadius(),i.initShaders(),i.initBuffers(),i.gl.blendEquation(i.gl.FUNC_ADD),i.gl.blendFunc(i.gl.SRC_ALPHA,i.gl.ONE_MINUS_SRC_ALPHA),i.gl.enable(i.gl.BLEND),i.addImg2Body=i.addImg2Body.bind(n(i)),i.name="WebGLRenderer",i}e(i,t);var c=i.prototype;return c.init=function(e){t.prototype.init.call(this,e),this.resize(this.element.width,this.element.height)},c.resize=function(t,e){this.umat[4]=-2,this.umat[7]=1,this.smat[0]=1/t,this.smat[4]=1/e,this.mstack.set(this.umat,0),this.mstack.set(this.smat,1),this.gl.viewport(0,0,t,e),this.element.width=t,this.element.height=e},c.setMaxRadius=function(t){this.circleCanvasURL=this.createCircle(t)},c.getVertexShader=function(){return["uniform vec2 viewport;","attribute vec2 aVertexPosition;","attribute vec2 aTextureCoord;","uniform mat3 tMat;","varying vec2 vTextureCoord;","varying float alpha;","void main() {","vec3 v = tMat * vec3(aVertexPosition, 1.0);","gl_Position = vec4(v.x, v.y, 0, 1);","vTextureCoord = aTextureCoord;","alpha = tMat[0][2];","}"].join("\n")},c.getFragmentShader=function(){return["precision mediump float;","varying vec2 vTextureCoord;","varying float alpha;","uniform sampler2D uSampler;","uniform vec4 color;","uniform bool useTexture;","uniform vec3 uColor;","void main() {","vec4 textureColor = texture2D(uSampler, vTextureCoord);","gl_FragColor = textureColor * vec4(uColor, 1.0);","gl_FragColor.w *= alpha;","}"].join("\n")},c.initVar=function(){this.mstack=new Et,this.umat=M.create([2,0,1,0,-2,0,-1,1,1]),this.smat=M.create([.01,0,1,0,.01,0,0,0,1]),this.texturebuffers={}},c.blendEquation=function(t){this.gl.blendEquation(this.gl[t])},c.blendFunc=function(t,e){this.gl.blendFunc(this.gl[t],this.gl[e])},c.getShader=function(t,e,i){var n=i?t.createShader(t.FRAGMENT_SHADER):t.createShader(t.VERTEX_SHADER);return t.shaderSource(n,e),t.compileShader(n),t.getShaderParameter(n,t.COMPILE_STATUS)?n:(alert(t.getShaderInfoLog(n)),null)},c.initShaders=function(){var t=this.getShader(this.gl,this.getFragmentShader(),!0),e=this.getShader(this.gl,this.getVertexShader(),!1);this.sprogram=this.gl.createProgram(),this.gl.attachShader(this.sprogram,e),this.gl.attachShader(this.sprogram,t),this.gl.linkProgram(this.sprogram),this.gl.getProgramParameter(this.sprogram,this.gl.LINK_STATUS)||alert("Could not initialise shaders"),this.gl.useProgram(this.sprogram),this.sprogram.vpa=this.gl.getAttribLocation(this.sprogram,"aVertexPosition"),this.sprogram.tca=this.gl.getAttribLocation(this.sprogram,"aTextureCoord"),this.gl.enableVertexAttribArray(this.sprogram.tca),this.gl.enableVertexAttribArray(this.sprogram.vpa),this.sprogram.tMatUniform=this.gl.getUniformLocation(this.sprogram,"tMat"),this.sprogram.samplerUniform=this.gl.getUniformLocation(this.sprogram,"uSampler"),this.sprogram.useTex=this.gl.getUniformLocation(this.sprogram,"useTexture"),this.sprogram.color=this.gl.getUniformLocation(this.sprogram,"uColor"),this.gl.uniform1i(this.sprogram.useTex,1)},c.initBuffers=function(){var t,e;this.unitIBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitIBuffer),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,3,1,0,2,3]),this.gl.STATIC_DRAW);var i=[];for(e=0;e<100;e++)i.push(e);for(t=new Uint16Array(i),this.unitI33=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitI33),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,t,this.gl.STATIC_DRAW),i=[],e=0;e<100;e++)i.push(e,e+1,e+2);t=new Uint16Array(i),this.stripBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.stripBuffer),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,t,this.gl.STATIC_DRAW)},c.createCircle=function(t){this.circleCanvasRadius=r(y.initValue(t,32));var e=l.createCanvas("circle_canvas",2*this.circleCanvasRadius,2*this.circleCanvasRadius),i=e.getContext("2d");return i.beginPath(),i.arc(this.circleCanvasRadius,this.circleCanvasRadius,this.circleCanvasRadius,0,2*Math.PI,!0),i.closePath(),i.fillStyle="#FFF",i.fill(),e.toDataURL()},c.drawImg2Canvas=function(t){var e=t.body.width,i=t.body.height,n=r(t.body.width),a=r(t.body.height),s=t.body.width/n,o=t.body.height/a;this.texturebuffers[t.data.src]||(this.texturebuffers[t.data.src]=[this.gl.createTexture(),this.gl.createBuffer(),this.gl.createBuffer()]),t.data.texture=this.texturebuffers[t.data.src][0],t.data.vcBuffer=this.texturebuffers[t.data.src][1],t.data.tcBuffer=this.texturebuffers[t.data.src][2],this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.tcBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,s,0,0,o,o,o]),this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.vcBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,e,0,0,i,e,i]),this.gl.STATIC_DRAW);var h=t.data.canvas.getContext("2d").getImageData(0,0,n,a);this.gl.bindTexture(this.gl.TEXTURE_2D,t.data.texture),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,h),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR_MIPMAP_NEAREST),this.gl.generateMipmap(this.gl.TEXTURE_2D),t.data.textureLoaded=!0,t.data.textureWidth=e,t.data.textureHeight=i},c.onProtonUpdate=function(){},c.onParticleCreated=function(t){t.data.textureLoaded=!1,t.data.tmat=M.create(),t.data.tmat[8]=1,t.data.imat=M.create(),t.data.imat[8]=1,t.body?f(t.body,this.addImg2Body,t):(f(this.circleCanvasURL,this.addImg2Body,t),t.data.oldScale=t.radius/this.circleCanvasRadius)},c.addImg2Body=function(t,e){e.dead||(e.body=t,e.data.src=t.src,e.data.canvas=g(t),e.data.oldScale=1,this.drawImg2Canvas(e))},c.onParticleUpdate=function(t){t.data.textureLoaded&&(this.updateMatrix(t),this.gl.uniform3f(this.sprogram.color,t.rgb.r/255,t.rgb.g/255,t.rgb.b/255),this.gl.uniformMatrix3fv(this.sprogram.tMatUniform,!1,this.mstack.top()),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.vcBuffer),this.gl.vertexAttribPointer(this.sprogram.vpa,2,this.gl.FLOAT,!1,0,0),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t.data.tcBuffer),this.gl.vertexAttribPointer(this.sprogram.tca,2,this.gl.FLOAT,!1,0,0),this.gl.bindTexture(this.gl.TEXTURE_2D,t.data.texture),this.gl.uniform1i(this.sprogram.samplerUniform,0),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.unitIBuffer),this.gl.drawElements(this.gl.TRIANGLES,6,this.gl.UNSIGNED_SHORT,0),this.mstack.pop())},c.onParticleDead=function(t){},c.updateMatrix=function(t){var e=a(-t.data.textureWidth/2,-t.data.textureHeight/2),i=a(t.p.x,t.p.y),n=t.rotation*P.PI_180,r=s(n),l=t.scale*t.data.oldScale,c=o(l,l),u=h(e,c);u=h(u,r),u=h(u,i),M.inverse(u,t.data.imat),u[2]=t.alpha,this.mstack.push(u)},c.destroy=function(){t.prototype.destroy.call(this),this.gl=null,this.mstack=null,this.umat=null,this.smat=null,this.texturebuffers=null},i}(gt),Pt=function(t){function i(e){var i;return(i=t.call(this,e)||this).name="CustomRenderer",i}return e(i,t),i}(gt),Tt=function(t){function i(e,i,n,r,a){var s;return s=t.call(this)||this,n-e>=0?(s.x1=e,s.y1=i,s.x2=n,s.y2=r):(s.x1=n,s.y1=r,s.x2=e,s.y2=i),s.dx=s.x2-s.x1,s.dy=s.y2-s.y1,s.minx=Math.min(s.x1,s.x2),s.miny=Math.min(s.y1,s.y2),s.maxx=Math.max(s.x1,s.x2),s.maxy=Math.max(s.y1,s.y2),s.dot=s.x2*s.y1-s.x1*s.y2,s.xxyy=s.dx*s.dx+s.dy*s.dy,s.gradient=s.getGradient(),s.length=s.getLength(),s.direction=y.initValue(a,">"),s}e(i,t);var n=i.prototype;return n.getPosition=function(){return this.random=Math.random(),this.vector.x=this.x1+this.random*this.length*Math.cos(this.gradient),this.vector.y=this.y1+this.random*this.length*Math.sin(this.gradient),this.vector},n.getDirection=function(t,e){var i=this.dy,n=-this.dx;return(i*t+n*e+this.dot)*(0===n?1:n)>0},n.getDistance=function(t,e){return(this.dy*t+-this.dx*e+this.dot)/Math.sqrt(this.xxyy)},n.getSymmetric=function(t){var e=t.getGradient(),i=2*(this.getGradient()-e),n=t.x,r=t.y;return t.x=n*Math.cos(i)-r*Math.sin(i),t.y=n*Math.sin(i)+r*Math.cos(i),t},n.getGradient=function(){return Math.atan2(this.dy,this.dx)},n.rangeOut=function(t){if(Math.abs(this.getGradient())<=P.PI/4){if(t.p.x<=this.maxx&&t.p.x>=this.minx)return!0}else if(t.p.y<=this.maxy&&t.p.y>=this.miny)return!0;return!1},n.getLength=function(){return Math.sqrt(this.dx*this.dx+this.dy*this.dy)},n.crossing=function(t){if("dead"===this.crossType)if(">"===this.direction||"R"===this.direction||"right"===this.direction||"down"===this.direction){if(!this.rangeOut(t))return;this.getDirection(t.p.x,t.p.y)&&(t.dead=!0)}else{if(!this.rangeOut(t))return;this.getDirection(t.p.x,t.p.y)||(t.dead=!0)}else if("bound"===this.crossType){if(!this.rangeOut(t))return;this.getDistance(t.p.x,t.p.y)<=t.radius&&(0===this.dx?t.v.x*=-1:0===this.dy?t.v.y*=-1:this.getSymmetric(t.v))}else"cross"===this.crossType&&this.alert&&(console.error("Sorry, LineZone does not support cross method!"),this.alert=!1)},i}(k),Rt=function(t){function i(e,i,n){var r;return(r=t.call(this)||this).x=e,r.y=i,r.radius=n,r.angle=0,r.center={x:e,y:i},r}e(i,t);var n=i.prototype;return n.getPosition=function(){return this.angle=P.PIx2*Math.random(),this.randomRadius=Math.random()*this.radius,this.vector.x=this.x+this.randomRadius*Math.cos(this.angle),this.vector.y=this.y+this.randomRadius*Math.sin(this.angle),this.vector},n.setCenter=function(t,e){this.center.x=t,this.center.y=e},n.crossing=function(t){var e=t.p.distanceTo(this.center);"dead"===this.crossType?e-t.radius>this.radius&&(t.dead=!0):"bound"===this.crossType?e+t.radius>=this.radius&&this.getSymmetric(t):"cross"===this.crossType&&this.alert&&(console.error("Sorry, CircleZone does not support cross method!"),this.alert=!1)},n.getSymmetric=function(t){var e=t.v.getGradient(),i=2*(this.getGradient(t)-e),n=t.v.x,r=t.v.y;t.v.x=n*Math.cos(i)-r*Math.sin(i),t.v.y=n*Math.sin(i)+r*Math.cos(i)},n.getGradient=function(t){return-P.PI_2+Math.atan2(t.p.y-this.center.y,t.p.x-this.center.x)},i}(k),_t=function(t){function i(e,i,n,r){var a;return(a=t.call(this)||this).x=e,a.y=i,a.width=n,a.height=r,a}e(i,t);var n=i.prototype;return n.getPosition=function(){return this.vector.x=this.x+Math.random()*this.width,this.vector.y=this.y+Math.random()*this.height,this.vector},n.crossing=function(t){"dead"===this.crossType?((t.p.x+t.radiusthis.x+this.width)&&(t.dead=!0),(t.p.y+t.radiusthis.y+this.height)&&(t.dead=!0)):"bound"===this.crossType?(t.p.x-t.radiusthis.x+this.width&&(t.p.x=this.x+this.width-t.radius,t.v.x*=-1),t.p.y-t.radiusthis.y+this.height&&(t.p.y=this.y+this.height-t.radius,t.v.y*=-1)):"cross"===this.crossType&&(t.p.x+t.radiusthis.x+this.width&&t.v.x>=0&&(t.p.x=this.x-t.radius),t.p.y+t.radiusthis.y+this.height&&t.v.y>=0&&(t.p.y=this.y-t.radius))},i}(k),wt=function(t){function i(e,i,n,r){var a;return(a=t.call(this)||this).reset(e,i,n,r),a}e(i,t);var n=i.prototype;return n.reset=function(t,e,i,n){this.imageData=t,this.x=y.initValue(e,0),this.y=y.initValue(i,0),this.d=y.initValue(n,2),this.vectors=[],this.setVectors()},n.setVectors=function(){var t,e,i=this.imageData.width,n=this.imageData.height;for(t=0;t>0)*i+(t>>0));this.imageData.data[r+3]>0&&this.vectors.push({x:t+this.x,y:e+this.y})}return this.vector},n.getBound=function(t,e){var i=4*((e>>0)*this.imageData.width+(t>>0));return this.imageData.data[i+3]>0},n.getPosition=function(){var t=y.getRandFromArray(this.vectors);return this.vector.copy(t)},n.getColor=function(t,e){t-=this.x;var i=4*(((e-=this.y)>>0)*this.imageData.width+(t>>0));return{r:this.imageData.data[i],g:this.imageData.data[i+1],b:this.imageData.data[i+2],a:this.imageData.data[i+3]}},n.crossing=function(t){"dead"===this.crossType?this.getBound(t.p.x-this.x,t.p.y-this.y)?t.dead=!0:t.dead=!1:"bound"===this.crossType&&(this.getBound(t.p.x-this.x,t.p.y-this.y)||t.v.negate())},n.destroy=function(){t.prototype.destroy.call(this),this.imageData=null},i}(k),Ct={addEventListener:function(t,e){t.addEventListener("PROTON_UPDATE_AFTER",(function(){return e()}))},getStyle:function(t){void 0===t&&(t="#ff0000");var e=D.hexToRgb(t);return"rgba("+e.r+", "+e.g+", "+e.b+", 0.5)"},drawZone:function(t,e,i,n){var r=e.getContext("2d"),a=this.getStyle();this.addEventListener(t,(function(){n&&r.clearRect(0,0,e.width,e.height),i instanceof N?(r.beginPath(),r.fillStyle=a,r.arc(i.x,i.y,10,0,2*Math.PI,!0),r.fill(),r.closePath()):i instanceof Tt?(r.beginPath(),r.strokeStyle=a,r.moveTo(i.x1,i.y1),r.lineTo(i.x2,i.y2),r.stroke(),r.closePath()):i instanceof _t?(r.beginPath(),r.strokeStyle=a,r.drawRect(i.x,i.y,i.width,i.height),r.stroke(),r.closePath()):i instanceof Rt&&(r.beginPath(),r.strokeStyle=a,r.arc(i.x,i.y,i.radius,0,2*Math.PI,!0),r.stroke(),r.closePath())}))},drawEmitter:function(t,e,i,n){var r=e.getContext("2d"),a=this.getStyle();this.addEventListener(t,(function(){n&&r.clearRect(0,0,e.width,e.height),r.beginPath(),r.fillStyle=a,r.arc(i.p.x,i.p.y,10,0,2*Math.PI,!0),r.fill(),r.closePath()}))}};return R.Particle=S,R.Pool=b,R.Util=y,R.ColorUtil=D,R.MathUtil=P,R.Vector2D=R.Vector=I,R.Polar2D=R.Polar=V,R.ArraySpan=L,R.Rectangle=U,R.Rate=F,R.ease=C,R.Span=B,R.Mat3=M,R.getSpan=function(t,e,i){return new B(t,e,i)},R.createArraySpan=L.createArraySpan,R.Initialize=R.Init=z,R.Life=R.L=O,R.Position=R.P=H,R.Velocity=R.V=q,R.Mass=R.M=G,R.Radius=R.R=X,R.Body=R.B=Y,R.Behaviour=j,R.Force=R.F=W,R.Attraction=R.A=Z,R.RandomDrift=R.RD=Q,R.Gravity=R.G=K,R.Collision=J,R.CrossZone=$,R.Alpha=tt,R.Scale=R.S=et,R.Rotate=it,R.Color=nt,R.Repulsion=st,R.Cyclone=at,R.GravityWell=ot,R.Emitter=lt,R.BehaviourEmitter=ut,R.FollowEmitter=dt,R.Zone=k,R.LineZone=Tt,R.CircleZone=Rt,R.PointZone=N,R.RectZone=_t,R.ImageZone=wt,R.CanvasRenderer=yt,R.DomRenderer=mt,R.EaselRenderer=vt,R.PixiRenderer=xt,R.PixelRenderer=bt,R.WebGLRenderer=R.WebGlRenderer=At,R.CustomRenderer=Pt,R.Debug=Ct,y.assign(R,C),R})); //# sourceMappingURL=proton.min.js.map diff --git a/build/proton.min.js.map b/build/proton.min.js.map index d2ac67f..0bfa303 100755 --- a/build/proton.min.js.map +++ b/build/proton.min.js.map @@ -1 +1 @@ -{"version":3,"file":"proton.min.js","sources":["../src/utils/WebGLUtil.js","../src/utils/DomUtil.js","../src/utils/ImgUtil.js","../src/utils/Util.js","../src/utils/Puid.js","../src/core/Pool.js","../src/debug/Stats.js","../src/events/EventDispatcher.js","../src/math/MathUtil.js","../src/math/Integration.js","../src/core/Proton.js","../src/utils/Rgb.js","../src/utils/PropUtil.js","../src/math/ease.js","../src/math/Vector2D.js","../src/core/Particle.js","../src/utils/ColorUtil.js","../src/math/Polar2D.js","../src/math/Mat3.js","../src/math/Span.js","../src/math/ArraySpan.js","../src/math/Rectangle.js","../src/initialize/Rate.js","../src/initialize/Initialize.js","../src/initialize/Life.js","../src/zone/Zone.js","../src/zone/PointZone.js","../src/initialize/Position.js","../src/initialize/Velocity.js","../src/initialize/Mass.js","../src/initialize/Radius.js","../src/initialize/Body.js","../src/behaviour/Behaviour.js","../src/behaviour/Force.js","../src/behaviour/Attraction.js","../src/behaviour/RandomDrift.js","../src/behaviour/Gravity.js","../src/behaviour/Collision.js","../src/behaviour/CrossZone.js","../src/behaviour/Alpha.js","../src/behaviour/Scale.js","../src/behaviour/Rotate.js","../src/behaviour/Color.js","../src/behaviour/Cyclone.js","../src/behaviour/Repulsion.js","../src/behaviour/GravityWell.js","../src/initialize/InitializeUtil.js","../src/emitter/Emitter.js","../src/render/PixiRenderer.js","../src/emitter/BehaviourEmitter.js","../src/emitter/FollowEmitter.js","../src/utils/Types.js","../src/render/BaseRenderer.js","../src/render/CanvasRenderer.js","../src/render/DomRenderer.js","../src/render/EaselRenderer.js","../src/render/PixelRenderer.js","../src/utils/MStack.js","../src/render/WebGLRenderer.js","../src/render/CustomRenderer.js","../src/zone/LineZone.js","../src/zone/CircleZone.js","../src/zone/RectZone.js","../src/zone/ImageZone.js","../src/debug/Debug.js","../src/index.js"],"sourcesContent":["export default {\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method ipot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Boolean}\n */\n ipot(length) {\n return (length & (length - 1)) === 0;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method nhpot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Number}\n */\n nhpot(length) {\n --length;\n for (let i = 1; i < 32; i <<= 1) {\n length = length | (length >> i);\n }\n\n return length + 1;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeTranslation\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} tx either 0 or 1\n * @param {Number} ty either 0 or 1\n *\n * @return {Object}\n */\n makeTranslation(tx, ty) {\n return [1, 0, 0, 0, 1, 0, tx, ty, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeRotation\n *\n * @todo add description\n * @todo add return description\n *\n * @param {Number} angleInRadians\n *\n * @return {Object}\n */\n makeRotation(angleInRadians) {\n let c = Math.cos(angleInRadians);\n let s = Math.sin(angleInRadians);\n\n return [c, -s, 0, s, c, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeScale\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} sx either 0 or 1\n * @param {Number} sy either 0 or 1\n *\n * @return {Object}\n */\n makeScale(sx, sy) {\n return [sx, 0, 0, 0, sy, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method matrixMultiply\n *\n * @todo add description\n * @todo add a, b description\n * @todo add return description\n *\n * @param {Object} a\n * @param {Object} b\n *\n * @return {Object}\n */\n matrixMultiply(a, b) {\n let a00 = a[0 * 3 + 0];\n let a01 = a[0 * 3 + 1];\n let a02 = a[0 * 3 + 2];\n let a10 = a[1 * 3 + 0];\n let a11 = a[1 * 3 + 1];\n let a12 = a[1 * 3 + 2];\n let a20 = a[2 * 3 + 0];\n let a21 = a[2 * 3 + 1];\n let a22 = a[2 * 3 + 2];\n let b00 = b[0 * 3 + 0];\n let b01 = b[0 * 3 + 1];\n let b02 = b[0 * 3 + 2];\n let b10 = b[1 * 3 + 0];\n let b11 = b[1 * 3 + 1];\n let b12 = b[1 * 3 + 2];\n let b20 = b[2 * 3 + 0];\n let b21 = b[2 * 3 + 1];\n let b22 = b[2 * 3 + 2];\n\n return [\n a00 * b00 + a01 * b10 + a02 * b20,\n a00 * b01 + a01 * b11 + a02 * b21,\n a00 * b02 + a01 * b12 + a02 * b22,\n a10 * b00 + a11 * b10 + a12 * b20,\n a10 * b01 + a11 * b11 + a12 * b21,\n a10 * b02 + a11 * b12 + a12 * b22,\n a20 * b00 + a21 * b10 + a22 * b20,\n a20 * b01 + a21 * b11 + a22 * b21,\n a20 * b02 + a21 * b12 + a22 * b22\n ];\n }\n};\n","export default {\n /**\n * Creates and returns a new canvas. The opacity is by default set to 0\n *\n * @memberof Proton#Proton.DomUtil\n * @method createCanvas\n *\n * @param {String} $id the canvas' id\n * @param {Number} $width the canvas' width\n * @param {Number} $height the canvas' height\n * @param {String} [$position=absolute] the canvas' position, default is 'absolute'\n *\n * @return {Object}\n */\n createCanvas(id, width, height, position = \"absolute\") {\n const dom = document.createElement(\"canvas\");\n\n dom.id = id;\n dom.width = width;\n dom.height = height;\n dom.style.opacity = 0;\n dom.style.position = position;\n this.transform(dom, -500, -500, 0, 0);\n\n return dom;\n },\n\n createDiv(id, width, height) {\n const dom = document.createElement(\"div\");\n\n dom.id = id;\n dom.style.position = \"absolute\";\n this.resize(dom, width, height);\n\n return dom;\n },\n\n resize(dom, width, height) {\n dom.style.width = width + \"px\";\n dom.style.height = height + \"px\";\n dom.style.marginLeft = -width / 2 + \"px\";\n dom.style.marginTop = -height / 2 + \"px\";\n },\n\n /**\n * Adds a transform: translate(), scale(), rotate() to a given div dom for all browsers\n *\n * @memberof Proton#Proton.DomUtil\n * @method transform\n *\n * @param {HTMLDivElement} div\n * @param {Number} $x\n * @param {Number} $y\n * @param {Number} $scale\n * @param {Number} $rotate\n */\n transform(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate(${x}px, ${y}px) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"transform\", transform);\n },\n\n transform3d(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate3d(${x}px, ${y}px, 0) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"backfaceVisibility\", \"hidden\");\n this.css3(div, \"transform\", transform);\n },\n\n css3(div, key, val) {\n const bkey = key.charAt(0).toUpperCase() + key.substr(1);\n\n div.style[`Webkit${bkey}`] = val;\n div.style[`Moz${bkey}`] = val;\n div.style[`O${bkey}`] = val;\n div.style[`ms${bkey}`] = val;\n div.style[`${key}`] = val;\n }\n};\n","import WebGLUtil from \"./WebGLUtil\";\nimport DomUtil from \"./DomUtil\";\n\nconst imgsCache = {};\nconst canvasCache = {};\nlet canvasId = 0;\n\nexport default {\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n context.drawImage(image, rect.x, rect.y);\n const imagedata = context.getImageData(rect.x, rect.y, rect.width, rect.height);\n context.clearRect(rect.x, rect.y, rect.width, rect.height);\n\n return imagedata;\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method getImgFromCache\n *\n * @todo add description\n * @todo describe func\n *\n * @param {Mixed} img\n * @param {Proton.Particle} particle\n * @param {Boolean} drawCanvas set to true if a canvas should be saved into particle.data.canvas\n * @param {Boolean} func\n */\n getImgFromCache(img, callback, param) {\n const src = typeof img === \"string\" ? img : img.src;\n\n if (imgsCache[src]) {\n callback(imgsCache[src], param);\n } else {\n const image = new Image();\n image.onload = e => {\n imgsCache[src] = e.target;\n callback(imgsCache[src], param);\n };\n\n image.src = src;\n }\n },\n\n getCanvasFromCache(img, callback, param) {\n const src = img.src;\n\n if (!canvasCache[src]) {\n const width = WebGLUtil.nhpot(img.width);\n const height = WebGLUtil.nhpot(img.height);\n\n const canvas = DomUtil.createCanvas(`proton_canvas_cache_${++canvasId}`, width, height);\n const context = canvas.getContext(\"2d\");\n context.drawImage(img, 0, 0, img.width, img.height);\n\n canvasCache[src] = canvas;\n }\n\n callback && callback(canvasCache[src], param);\n\n return canvasCache[src];\n }\n};\n","import ImgUtil from \"./ImgUtil\";\n\nexport default {\n /**\n * Returns the default if the value is null or undefined\n *\n * @memberof Proton#Proton.Util\n * @method initValue\n *\n * @param {Mixed} value a specific value, could be everything but null or undefined\n * @param {Mixed} defaults the default if the value is null or undefined\n */\n initValue(value, defaults) {\n value = value !== null && value !== undefined ? value : defaults;\n return value;\n },\n\n /**\n * Checks if the value is a valid array\n *\n * @memberof Proton#Proton.Util\n * @method isArray\n *\n * @param {Array} value Any array\n *\n * @returns {Boolean}\n */\n isArray(value) {\n return Object.prototype.toString.call(value) === \"[object Array]\";\n },\n\n /**\n * Destroyes the given array\n *\n * @memberof Proton#Proton.Util\n * @method emptyArray\n *\n * @param {Array} array Any array\n */\n emptyArray(arr) {\n if (arr) arr.length = 0;\n },\n\n toArray(arr) {\n return this.isArray(arr) ? arr : [arr];\n },\n\n getRandFromArray(arr) {\n if (!arr) return null;\n return arr[Math.floor(arr.length * Math.random())];\n },\n\n /**\n * Destroyes the given object\n *\n * @memberof Proton#Proton.Util\n * @method emptyObject\n *\n * @param {Object} obj Any object\n */\n emptyObject(obj, ignore = null) {\n for (let key in obj) {\n if (ignore && ignore.indexOf(key) > -1) continue;\n delete obj[key];\n }\n },\n\n /**\n * Makes an instance of a class and binds the given array\n *\n * @memberof Proton#Proton.Util\n * @method classApply\n *\n * @param {Function} constructor A class to make an instance from\n * @param {Array} [args] Any array to bind it to the constructor\n *\n * @return {Object} The instance of constructor, optionally bind with args\n */\n classApply(constructor, args = null) {\n if (!args) {\n return new constructor();\n } else {\n const FactoryFunc = constructor.bind.apply(constructor, [null].concat(args));\n return new FactoryFunc();\n }\n },\n\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n return ImgUtil.getImageData(context, image, rect);\n },\n\n destroyAll(arr, param = null) {\n let i = arr.length;\n\n while (i--) {\n try {\n arr[i].destroy(param);\n } catch (e) {}\n\n delete arr[i];\n }\n\n arr.length = 0;\n },\n\n assign(target, source) {\n if (typeof Object.assign !== \"function\") {\n for (let key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n\n return target;\n } else {\n return Object.assign(target, source);\n }\n }\n};\n","const idsMap = {};\n\nconst Puid = {\n _index: 0,\n _cache: {},\n\n id(type) {\n if (idsMap[type] === undefined || idsMap[type] === null) idsMap[type] = 0;\n return `${type}_${idsMap[type]++}`;\n },\n\n getId(target) {\n let uid = this.getIdFromCache(target);\n if (uid) return uid;\n\n uid = `PUID_${this._index++}`;\n this._cache[uid] = target;\n return uid;\n },\n\n getIdFromCache(target) {\n let obj, id;\n\n for (id in this._cache) {\n obj = this._cache[id];\n\n if (obj === target) return id;\n if (this.isBody(obj, target) && obj.src === target.src) return id;\n }\n\n return null;\n },\n\n isBody(obj, target) {\n return typeof obj === \"object\" && typeof target === \"object\" && obj.isInner && target.isInner;\n },\n\n getTarget(uid) {\n return this._cache[uid];\n }\n};\n\nexport default Puid;\n","/**\n * Pool is the cache pool of the proton engine, it is very important.\n *\n * get(target, params, uid)\n * Class\n * uid = Puid.getId -> Puid save target cache\n * target.__puid = uid\n *\n * body\n * uid = Puid.getId -> Puid save target cache\n *\n *\n * expire(target)\n * cache[target.__puid] push target\n *\n */\nimport Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\n\nexport default class Pool {\n /**\n * @memberof! Proton#\n * @constructor\n * @alias Proton.Pool\n *\n * @todo add description\n * @todo add description of properties\n *\n * @property {Number} total\n * @property {Object} cache\n */\n constructor(num) {\n this.total = 0;\n this.cache = {};\n }\n\n /**\n * @todo add description\n *\n * @method get\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n get(target, params, uid) {\n let p;\n uid = uid || target.__puid || Puid.getId(target);\n\n if (this.cache[uid] && this.cache[uid].length > 0) {\n p = this.cache[uid].pop();\n } else {\n p = this.createOrClone(target, params);\n }\n\n p.__puid = target.__puid || uid;\n return p;\n }\n\n /**\n * @todo add description\n *\n * @method set\n * @memberof Proton#Proton.Pool\n *\n * @param {Object} target\n *\n * @return {Object}\n */\n expire(target) {\n return this.getCache(target.__puid).push(target);\n }\n\n /**\n * Creates a new class instance\n *\n * @todo add more documentation\n *\n * @method create\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target any Object or Function\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n createOrClone(target, params) {\n this.total++;\n\n if (this.create) {\n return this.create(target, params);\n } else if (typeof target === \"function\") {\n return Util.classApply(target, params);\n } else {\n return target.clone();\n }\n }\n\n /**\n * @todo add description - what is in the cache?\n *\n * @method getCount\n * @memberof Proton#Proton.Pool\n *\n * @return {Number}\n */\n getCount() {\n let count = 0;\n for (let id in this.cache) count += this.cache[id].length;\n return count++;\n }\n\n /**\n * Destroyes all items from Pool.cache\n *\n * @method destroy\n * @memberof Proton#Proton.Pool\n */\n destroy() {\n for (let id in this.cache) {\n this.cache[id].length = 0;\n delete this.cache[id];\n }\n }\n\n /**\n * Returns Pool.cache\n *\n * @method getCache\n * @memberof Proton#Proton.Pool\n * @private\n *\n * @param {Number} uid the unique id\n *\n * @return {Object}\n */\n getCache(uid = \"default\") {\n if (!this.cache[uid]) this.cache[uid] = [];\n return this.cache[uid];\n }\n}\n","export default class Stats {\n constructor(proton) {\n this.proton = proton;\n this.container = null;\n this.type = 1;\n\n this.emitterIndex = 0;\n this.rendererIndex = 0;\n }\n\n update(style, body) {\n this.add(style, body);\n\n const emitter = this.getEmitter();\n const renderer = this.getRenderer();\n let str = \"\";\n\n switch (this.type) {\n case 2:\n str += \"emitter:\" + this.proton.emitters.length + \"
\";\n if (emitter) str += \"em speed:\" + emitter.emitSpeed + \"
\";\n if (emitter) str += \"pos:\" + this.getEmitterPos(emitter);\n break;\n\n case 3:\n if (emitter) str += \"initializes:\" + emitter.initializes.length + \"
\";\n if (emitter)\n str += '' + this.concatArr(emitter.initializes) + \"
\";\n if (emitter) str += \"behaviours:\" + emitter.behaviours.length + \"
\";\n if (emitter) str += '' + this.concatArr(emitter.behaviours) + \"
\";\n break;\n\n case 4:\n if (renderer) str += renderer.name + \"
\";\n if (renderer) str += \"body:\" + this.getCreatedNumber(renderer) + \"
\";\n break;\n\n default:\n str += \"particles:\" + this.proton.getCount() + \"
\";\n str += \"pool:\" + this.proton.pool.getCount() + \"
\";\n str += \"total:\" + this.proton.pool.total;\n }\n\n this.container.innerHTML = str;\n }\n\n add(style, body) {\n if (!this.container) {\n this.type = 1;\n\n this.container = document.createElement(\"div\");\n this.container.style.cssText = [\n \"position:absolute;bottom:0px;left:0;cursor:pointer;\",\n \"opacity:0.9;z-index:10000;padding:10px;font-size:12px;font-family:Helvetica,Arial,sans-serif;\",\n \"width:120px;height:50px;background-color:#002;color:#0ff;\"\n ].join(\"\");\n\n this.container.addEventListener(\n \"click\",\n e => {\n this.type++;\n if (this.type > 4) this.type = 1;\n },\n false\n );\n\n let bg, color;\n switch (style) {\n case 2:\n bg = \"#201\";\n color = \"#f08\";\n break;\n\n case 3:\n bg = \"#020\";\n color = \"#0f0\";\n break;\n\n default:\n bg = \"#002\";\n color = \"#0ff\";\n }\n\n this.container.style[\"background-color\"] = bg;\n this.container.style[\"color\"] = color;\n }\n\n if (!this.container.parentNode) {\n body = body || this.body || document.body;\n body.appendChild(this.container);\n }\n }\n\n getEmitter() {\n return this.proton.emitters[this.emitterIndex];\n }\n\n getRenderer() {\n return this.proton.renderers[this.rendererIndex];\n }\n\n concatArr(arr) {\n let result = \"\";\n if (!arr || !arr.length) return result;\n\n for (let i = 0; i < arr.length; i++) {\n result += (arr[i].name || \"\").substr(0, 1) + \".\";\n }\n\n return result;\n }\n\n getCreatedNumber(renderer) {\n return renderer.pool.total || (renderer.cpool && renderer.cpool.total) || 0;\n }\n\n getEmitterPos(e) {\n return Math.round(e.p.x) + \",\" + Math.round(e.p.y);\n }\n\n destroy() {\n if (this.container && this.container.parentNode) {\n const body = this.body || document.body;\n body.removeChild(this.container);\n }\n\n this.proton = null;\n this.container = null;\n }\n}\n","/*\n * EventDispatcher\n * This code reference since http://createjs.com/.\n *\n **/\n\nexport default class EventDispatcher {\n constructor() {\n this._listeners = null;\n }\n\n static bind(target) {\n target.prototype.dispatchEvent = EventDispatcher.prototype.dispatchEvent;\n target.prototype.hasEventListener = EventDispatcher.prototype.hasEventListener;\n target.prototype.addEventListener = EventDispatcher.prototype.addEventListener;\n target.prototype.removeEventListener = EventDispatcher.prototype.removeEventListener;\n target.prototype.removeAllEventListeners = EventDispatcher.prototype.removeAllEventListeners;\n }\n\n addEventListener(type, listener) {\n if (!this._listeners) {\n this._listeners = {};\n } else {\n this.removeEventListener(type, listener);\n }\n\n if (!this._listeners[type]) this._listeners[type] = [];\n this._listeners[type].push(listener);\n\n return listener;\n }\n\n removeEventListener(type, listener) {\n if (!this._listeners) return;\n if (!this._listeners[type]) return;\n\n const arr = this._listeners[type];\n const length = arr.length;\n\n for (let i = 0; i < length; i++) {\n if (arr[i] === listener) {\n if (length === 1) {\n delete this._listeners[type];\n }\n\n // allows for faster checks.\n else {\n arr.splice(i, 1);\n }\n\n break;\n }\n }\n }\n\n removeAllEventListeners(type) {\n if (!type) this._listeners = null;\n else if (this._listeners) delete this._listeners[type];\n }\n\n dispatchEvent(type, args) {\n let result = false;\n const listeners = this._listeners;\n\n if (type && listeners) {\n let arr = listeners[type];\n if (!arr) return result;\n\n // arr = arr.slice();\n // to avoid issues with items being removed or added during the dispatch\n\n let handler;\n let i = arr.length;\n while (i--) {\n handler = arr[i];\n result = result || handler(args);\n }\n }\n\n return !!result;\n }\n\n hasEventListener(type) {\n const listeners = this._listeners;\n return !!(listeners && listeners[type]);\n }\n}\n","const PI = 3.1415926;\nconst INFINITY = Infinity;\n\nconst MathUtil = {\n PI: PI,\n PIx2: PI * 2,\n PI_2: PI / 2,\n PI_180: PI / 180,\n N180_PI: 180 / PI,\n Infinity: -999,\n\n isInfinity(num) {\n return num === this.Infinity || num === INFINITY;\n },\n\n randomAToB(a, b, isInt = false) {\n if (!isInt) return a + Math.random() * (b - a);\n else return ((Math.random() * (b - a)) >> 0) + a;\n },\n\n randomFloating(center, f, isInt) {\n return this.randomAToB(center - f, center + f, isInt);\n },\n\n randomColor() {\n return \"#\" + (\"00000\" + ((Math.random() * 0x1000000) << 0).toString(16)).slice(-6);\n },\n\n randomZone(display) {},\n\n floor(num, k = 4) {\n const digits = Math.pow(10, k);\n return Math.floor(num * digits) / digits;\n },\n\n degreeTransform(a) {\n return (a * PI) / 180;\n },\n\n toColor16(num) {\n return `#${num.toString(16)}`;\n }\n};\n\nexport default MathUtil;\n","export default class Integration {\n constructor(type) {\n this.type = type;\n }\n\n calculate(particles, time, damping) {\n this.eulerIntegrate(particles, time, damping);\n }\n\n // Euler Integrate\n // https://rosettacode.org/wiki/Euler_method\n eulerIntegrate(particle, time, damping) {\n if (!particle.sleep) {\n particle.old.p.copy(particle.p);\n particle.old.v.copy(particle.v);\n\n particle.a.multiplyScalar(1 / particle.mass);\n particle.v.add(particle.a.multiplyScalar(time));\n particle.p.add(particle.old.v.multiplyScalar(time));\n\n if (damping) particle.v.multiplyScalar(damping);\n\n particle.a.clear();\n }\n }\n}\n","import Pool from \"./Pool\";\nimport Util from \"../utils/Util\";\nimport Stats from \"../debug/Stats\";\nimport EventDispatcher from \"../events/EventDispatcher\";\nimport MathUtil from \"../math/MathUtil\";\nimport Integration from \"../math/Integration\";\n\nexport default class Proton {\n static USE_CLOCK = false;\n\n // measure 1:100\n static MEASURE = 100;\n static EULER = \"euler\";\n static RK2 = \"runge-kutta2\";\n\n // event name\n static PARTICLE_CREATED = \"PARTICLE_CREATED\";\n static PARTICLE_UPDATE = \"PARTICLE_UPDATE\";\n static PARTICLE_SLEEP = \"PARTICLE_SLEEP\";\n static PARTICLE_DEAD = \"PARTICLE_DEAD\";\n\n static EMITTER_ADDED = \"EMITTER_ADDED\";\n static EMITTER_REMOVED = \"EMITTER_REMOVED\";\n\n static PROTON_UPDATE = \"PROTON_UPDATE\";\n static PROTON_UPDATE_AFTER = \"PROTON_UPDATE_AFTER\";\n static DEFAULT_INTERVAL = 0.0167;\n\n static amendChangeTabsBug = true;\n\n /**\n * The constructor to add emitters\n *\n * @constructor Proton\n *\n * @todo proParticleCount is not in use\n * @todo add more documentation of the single properties and parameters\n *\n * @param {Number} [proParticleCount] not in use?\n * @param {Number} [integrationType=Proton.EULER]\n *\n * @property {String} [integrationType=Proton.EULER]\n * @property {Array} emitters All added emitter\n * @property {Array} renderers All added renderer\n * @property {Number} time The active time\n * @property {Number} oldtime The old time\n */\n constructor(integrationType) {\n this.emitters = [];\n this.renderers = [];\n\n this.time = 0;\n this.now = 0;\n this.then = 0;\n this.elapsed = 0;\n\n this.stats = new Stats(this);\n this.pool = new Pool(80);\n\n this.integrationType = Util.initValue(integrationType, Proton.EULER);\n this.integrator = new Integration(this.integrationType);\n\n this._fps = \"auto\";\n this._interval = Proton.DEFAULT_INTERVAL;\n }\n\n set fps(fps) {\n this._fps = fps;\n this._interval = fps === \"auto\" ? Proton.DEFAULT_INTERVAL : MathUtil.floor(1 / fps, 7);\n }\n\n get fps() {\n return this._fps;\n }\n\n /**\n * add a type of Renderer\n *\n * @method addRenderer\n * @memberof Proton\n * @instance\n *\n * @param {Renderer} render\n */\n addRenderer(render) {\n render.init(this);\n this.renderers.push(render);\n }\n\n /**\n * @name add a type of Renderer\n *\n * @method addRenderer\n * @param {Renderer} render\n */\n removeRenderer(render) {\n const index = this.renderers.indexOf(render);\n this.renderers.splice(index, 1);\n render.remove(this);\n }\n\n /**\n * add the Emitter\n *\n * @method addEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Emitter} emitter\n */\n addEmitter(emitter) {\n this.emitters.push(emitter);\n emitter.parent = this;\n\n this.dispatchEvent(Proton.EMITTER_ADDED, emitter);\n }\n\n /**\n * Removes an Emitter\n *\n * @method removeEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Proton.Emitter} emitter\n */\n removeEmitter(emitter) {\n const index = this.emitters.indexOf(emitter);\n this.emitters.splice(index, 1);\n emitter.parent = null;\n\n this.dispatchEvent(Proton.EMITTER_REMOVED, emitter);\n }\n\n /**\n * Updates all added emitters\n *\n * @method update\n * @memberof Proton\n * @instance\n */\n update() {\n // 'auto' is the default browser refresh rate, the vast majority is 60fps\n if (this._fps === \"auto\") {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n\n if (Proton.USE_CLOCK) {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n // Fix bugs such as chrome browser switching tabs causing excessive time difference\n this.amendChangeTabsBug();\n\n if (this.elapsed > 0) this.emittersUpdate(this.elapsed);\n this.then = this.now;\n } else {\n this.emittersUpdate(Proton.DEFAULT_INTERVAL);\n }\n\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n\n // If the fps frame rate is set\n else {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n\n if (this.elapsed > this._interval) {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n this.emittersUpdate(this._interval);\n // https://stackoverflow.com/questions/19764018/controlling-fps-with-requestanimationframe\n this.then = this.now - (this.elapsed % this._interval) * 1000;\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n }\n }\n\n emittersUpdate(elapsed) {\n let i = this.emitters.length;\n while (i--) this.emitters[i].update(elapsed);\n }\n\n /**\n * @todo add description\n *\n * @method amendChangeTabsBug\n * @memberof Proton\n * @instance\n */\n amendChangeTabsBug() {\n if (!Proton.amendChangeTabsBug) return;\n if (this.elapsed > 0.5) {\n this.then = new Date().getTime();\n this.elapsed = 0;\n }\n }\n\n /**\n * Counts all particles from all emitters\n *\n * @method getCount\n * @memberof Proton\n * @instance\n */\n getCount() {\n let total = 0;\n let i = this.emitters.length;\n\n while (i--) total += this.emitters[i].particles.length;\n return total;\n }\n\n getAllParticles() {\n let particles = [];\n let i = this.emitters.length;\n\n while (i--) particles = particles.concat(this.emitters[i].particles);\n return particles;\n }\n\n destroyAllEmitters() {\n Util.destroyAll(this.emitters);\n }\n\n /**\n * Destroys everything related to this Proton instance. This includes all emitters, and all properties\n *\n * @method destroy\n * @memberof Proton\n * @instance\n */\n destroy(remove = false) {\n const destroyOther = () => {\n this.time = 0;\n this.then = 0;\n this.pool.destroy();\n this.stats.destroy();\n\n Util.destroyAll(this.emitters);\n Util.destroyAll(this.renderers, this.getAllParticles());\n\n this.integrator = null;\n this.renderers = null;\n this.emitters = null;\n this.stats = null;\n this.pool = null;\n };\n\n if (remove) {\n setTimeout(destroyOther, 200);\n } else {\n destroyOther();\n }\n }\n}\n\nEventDispatcher.bind(Proton);\n","export default class Rgb {\n constructor(r = 255, g = 255, b = 255) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n\n reset() {\n this.r = 255;\n this.g = 255;\n this.b = 255;\n }\n}\n","export default {\n hasProp(target, key) {\n if (!target) return false;\n return target[key] !== undefined;\n // return obj.hasOwnProperty(key);\n },\n\n /**\n * set the prototype in a given prototypeObject\n *\n * @memberof Proton#Proton.Util\n * @method setProp\n *\n * @todo add description for param `target`\n * @todo translate desription from chinese to english\n *\n * @param {Object} target\n * @param {Object} prototypeObject An object of single prototypes\n *\n * @return {Object} target\n */\n setProp(target, props) {\n for (let prop in props) {\n if (target.hasOwnProperty(prop)) {\n target[prop] = Span.getSpanValue(props[prop]);\n }\n }\n\n return target;\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method setVectorVal\n *\n * @todo add description for param `target`\n * @todo add description for param `conf`\n * @todo add description for function\n *\n * @param {Object} target\n * @param {Object} conf\n */\n setVectorVal(particle, conf = null) {\n if (!conf) return;\n\n if (this.hasProp(conf, \"x\")) particle.p.x = conf[\"x\"];\n if (this.hasProp(conf, \"y\")) particle.p.y = conf[\"y\"];\n\n if (this.hasProp(conf, \"vx\")) particle.v.x = conf[\"vx\"];\n if (this.hasProp(conf, \"vy\")) particle.v.y = conf[\"vy\"];\n\n if (this.hasProp(conf, \"ax\")) particle.a.x = conf[\"ax\"];\n if (this.hasProp(conf, \"ay\")) particle.a.y = conf[\"ay\"];\n\n if (this.hasProp(conf, \"p\")) particle.p.copy(conf[\"p\"]);\n if (this.hasProp(conf, \"v\")) particle.v.copy(conf[\"v\"]);\n if (this.hasProp(conf, \"a\")) particle.a.copy(conf[\"a\"]);\n\n if (this.hasProp(conf, \"position\")) particle.p.copy(conf[\"position\"]);\n if (this.hasProp(conf, \"velocity\")) particle.v.copy(conf[\"velocity\"]);\n if (this.hasProp(conf, \"accelerate\")) particle.a.copy(conf[\"accelerate\"]);\n }\n};\n","import MathUtil from \"./MathUtil\";\n\nexport default {\n easeLinear(value) {\n return value;\n },\n\n easeInQuad(value) {\n return Math.pow(value, 2);\n },\n\n easeOutQuad(value) {\n return -(Math.pow(value - 1, 2) - 1);\n },\n\n easeInOutQuad(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 2);\n\n return -0.5 * ((value -= 2) * value - 2);\n },\n\n easeInCubic(value) {\n return Math.pow(value, 3);\n },\n\n easeOutCubic(value) {\n return Math.pow(value - 1, 3) + 1;\n },\n\n easeInOutCubic(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 3);\n\n return 0.5 * (Math.pow(value - 2, 3) + 2);\n },\n\n easeInQuart(value) {\n return Math.pow(value, 4);\n },\n\n easeOutQuart(value) {\n return -(Math.pow(value - 1, 4) - 1);\n },\n\n easeInOutQuart(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 4);\n\n return -0.5 * ((value -= 2) * Math.pow(value, 3) - 2);\n },\n\n easeInSine(value) {\n return -Math.cos(value * MathUtil.PI_2) + 1;\n },\n\n easeOutSine(value) {\n return Math.sin(value * MathUtil.PI_2);\n },\n\n easeInOutSine(value) {\n return -0.5 * (Math.cos(Math.PI * value) - 1);\n },\n\n easeInExpo(value) {\n return value === 0 ? 0 : Math.pow(2, 10 * (value - 1));\n },\n\n easeOutExpo(value) {\n return value === 1 ? 1 : -Math.pow(2, -10 * value) + 1;\n },\n\n easeInOutExpo(value) {\n if (value === 0) return 0;\n\n if (value === 1) return 1;\n\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(2, 10 * (value - 1));\n\n return 0.5 * (-Math.pow(2, -10 * --value) + 2);\n },\n\n easeInCirc(value) {\n return -(Math.sqrt(1 - value * value) - 1);\n },\n\n easeOutCirc(value) {\n return Math.sqrt(1 - Math.pow(value - 1, 2));\n },\n\n easeInOutCirc(value) {\n if ((value /= 0.5) < 1) return -0.5 * (Math.sqrt(1 - value * value) - 1);\n return 0.5 * (Math.sqrt(1 - (value -= 2) * value) + 1);\n },\n\n easeInBack(value) {\n let s = 1.70158;\n return value * value * ((s + 1) * value - s);\n },\n\n easeOutBack(value) {\n let s = 1.70158;\n return (value = value - 1) * value * ((s + 1) * value + s) + 1;\n },\n\n easeInOutBack(value) {\n let s = 1.70158;\n if ((value /= 0.5) < 1) return 0.5 * (value * value * (((s *= 1.525) + 1) * value - s));\n return 0.5 * ((value -= 2) * value * (((s *= 1.525) + 1) * value + s) + 2);\n },\n\n getEasing(ease) {\n if (typeof ease === \"function\") return ease;\n else return this[ease] || this.easeLinear;\n }\n};\n","import MathUtil from \"../math/MathUtil\";\n\nexport default class Vector2D {\n constructor(x, y) {\n this.x = x || 0;\n this.y = y || 0;\n }\n\n set(x, y) {\n this.x = x;\n this.y = y;\n return this;\n }\n\n setX(x) {\n this.x = x;\n return this;\n }\n\n setY(y) {\n this.y = y;\n return this;\n }\n\n getGradient() {\n if (this.x !== 0) return Math.atan2(this.y, this.x);\n else if (this.y > 0) return MathUtil.PI_2;\n else if (this.y < 0) return -MathUtil.PI_2;\n }\n\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n\n return this;\n }\n\n add(v, w) {\n if (w !== undefined) {\n return this.addVectors(v, w);\n }\n\n this.x += v.x;\n this.y += v.y;\n\n return this;\n }\n\n addXY(a, b) {\n this.x += a;\n this.y += b;\n\n return this;\n }\n\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n\n return this;\n }\n\n sub(v, w) {\n if (w !== undefined) {\n return this.subVectors(v, w);\n }\n\n this.x -= v.x;\n this.y -= v.y;\n\n return this;\n }\n\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n\n return this;\n }\n\n divideScalar(s) {\n if (s !== 0) {\n this.x /= s;\n this.y /= s;\n } else {\n this.set(0, 0);\n }\n\n return this;\n }\n\n multiplyScalar(s) {\n this.x *= s;\n this.y *= s;\n\n return this;\n }\n\n negate() {\n return this.multiplyScalar(-1);\n }\n\n dot(v) {\n return this.x * v.x + this.y * v.y;\n }\n\n lengthSq() {\n return this.x * this.x + this.y * this.y;\n }\n\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n }\n\n normalize() {\n return this.divideScalar(this.length());\n }\n\n distanceTo(v) {\n return Math.sqrt(this.distanceToSquared(v));\n }\n\n rotate(tha) {\n const x = this.x;\n const y = this.y;\n\n this.x = x * Math.cos(tha) + y * Math.sin(tha);\n this.y = -x * Math.sin(tha) + y * Math.cos(tha);\n\n return this;\n }\n\n distanceToSquared(v) {\n const dx = this.x - v.x;\n const dy = this.y - v.y;\n\n return dx * dx + dy * dy;\n }\n\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n\n return this;\n }\n\n equals(v) {\n return v.x === this.x && v.y === this.y;\n }\n\n clear() {\n this.x = 0.0;\n this.y = 0.0;\n return this;\n }\n\n clone() {\n return new Vector2D(this.x, this.y);\n }\n}\n","/** @typedef {import('../behaviour/Behaviour')} Behaviour */\n/** @typedef {import('../math/Vector2D')} Vector2D */\n/** @typedef {import('../utils/Rgb')} Rgb */\nimport Rgb from \"../utils/Rgb\";\nimport Puid from \"../utils/Puid\";\nimport Util from \"../utils/Util\";\nimport PropUtil from \"../utils/PropUtil\";\nimport ease from \"../math/ease\";\nimport Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default class Particle {\n /** @type string */\n id = \"\";\n\n /** @type {{p:Vector2D,v:Vector2D,a:Vector2D}} */\n old = null;\n\n /** @type {object} */\n data = null;\n\n /** @type {Behaviour[]} */\n behaviours = null;\n\n /** @type {Vector2D} */\n p = null;\n\n /** @type {Vector2D} */\n v = null;\n\n /** @type {Vector2D} */\n a = null;\n\n /** @type {Rgb} */\n rgb = null;\n\n /**\n * the Particle class\n *\n * @class Proton.Particle\n * @constructor\n * @param {Object} pObj the parameters object;\n * for example {life:3,dead:false}\n */\n constructor(conf) {\n /**\n * The particle's id;\n * @property id\n * @type {string}\n */\n this.name = \"Particle\";\n this.id = Puid.id(this.name);\n this.old = {};\n this.data = {};\n this.behaviours = [];\n\n this.p = new Vector2D();\n this.v = new Vector2D();\n this.a = new Vector2D();\n this.old.p = new Vector2D();\n this.old.v = new Vector2D();\n this.old.a = new Vector2D();\n\n this.rgb = new Rgb();\n this.reset();\n conf && PropUtil.setProp(this, conf);\n }\n\n getDirection() {\n return Math.atan2(this.v.x, -this.v.y) * MathUtil.N180_PI;\n }\n\n reset() {\n this.life = Infinity;\n this.age = 0;\n\n this.dead = false;\n this.sleep = false;\n this.body = null;\n this.sprite = null;\n this.parent = null;\n\n this.energy = 1; // Energy Loss\n this.mass = 1;\n this.radius = 10;\n this.alpha = 1;\n this.scale = 1;\n this.rotation = 0;\n this.color = null;\n\n this.p.set(0, 0);\n this.v.set(0, 0);\n this.a.set(0, 0);\n this.old.p.set(0, 0);\n this.old.v.set(0, 0);\n this.old.a.set(0, 0);\n this.easing = ease.easeLinear;\n\n this.rgb.reset();\n Util.emptyObject(this.data);\n this.removeAllBehaviours();\n\n return this;\n }\n\n update(time, index) {\n if (!this.sleep) {\n this.age += time;\n this.applyBehaviours(time, index);\n }\n\n if (this.age < this.life) {\n const scale = this.easing(this.age / this.life);\n this.energy = Math.max(1 - scale, 0);\n } else {\n this.destroy();\n }\n }\n\n applyBehaviours(time, index) {\n const length = this.behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.behaviours[i] && this.behaviours[i].applyBehaviour(this, time, index);\n }\n }\n\n /**\n * @param {Behaviour} behaviour\n */\n addBehaviour(behaviour) {\n this.behaviours.push(behaviour);\n\n if (behaviour.hasOwnProperty(\"parents\")) behaviour.parents.push(this);\n behaviour.initialize(this);\n }\n\n /**\n * @param {Behaviour[]} behaviours\n */\n addBehaviours(behaviours) {\n const length = behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.addBehaviour(behaviours[i]);\n }\n }\n\n removeBehaviour(behaviour) {\n const index = this.behaviours.indexOf(behaviour);\n\n if (index > -1) {\n const behaviour = this.behaviours.splice(index, 1);\n behaviour.parents = null;\n }\n }\n\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n /**\n * Destory this particle\n * @method destroy\n */\n destroy() {\n this.removeAllBehaviours();\n this.energy = 0;\n this.dead = true;\n this.parent = null;\n }\n}\n","export default {\n /**\n * @typedef {Object} rgbObject\n * @property {Number} r red value\n * @property {Number} g green value\n * @property {Number} b blue value\n */\n /**\n * converts a hex value to a rgb object\n *\n * @memberof Proton#Proton.Util\n * @method hexToRgb\n *\n * @param {String} h any hex value, e.g. #000000 or 000000 for black\n *\n * @return {rgbObject}\n */\n hexToRgb(h) {\n const hex16 = h.charAt(0) === \"#\" ? h.substring(1, 7) : h;\n const r = parseInt(hex16.substring(0, 2), 16);\n const g = parseInt(hex16.substring(2, 4), 16);\n const b = parseInt(hex16.substring(4, 6), 16);\n\n return { r, g, b };\n },\n\n /**\n * converts a rgb value to a rgb string\n *\n * @memberof Proton#Proton.Util\n * @method rgbToHex\n *\n * @param {Object | Proton.hexToRgb} rgb a rgb object like in {@link Proton#Proton.}\n *\n * @return {String} rgb()\n */\n rgbToHex(rbg) {\n return `rgb(${rbg.r}, ${rbg.g}, ${rbg.b})`;\n },\n\n getHex16FromParticle(p) {\n return Number(p.rgb.r) * 65536 + Number(p.rgb.g) * 256 + Number(p.rgb.b);\n }\n};\n","import Vector2D from \"./Vector2D\";\n\nexport default class Polar2D {\n constructor(r, tha) {\n this.r = Math.abs(r) || 0;\n this.tha = tha || 0;\n }\n\n set(r, tha) {\n this.r = r;\n this.tha = tha;\n return this;\n }\n\n setR(r) {\n this.r = r;\n return this;\n }\n\n setTha(tha) {\n this.tha = tha;\n return this;\n }\n\n copy(p) {\n this.r = p.r;\n this.tha = p.tha;\n return this;\n }\n\n toVector() {\n return new Vector2D(this.getX(), this.getY());\n }\n\n getX() {\n return this.r * Math.sin(this.tha);\n }\n\n getY() {\n return -this.r * Math.cos(this.tha);\n }\n\n normalize() {\n this.r = 1;\n return this;\n }\n\n equals(v) {\n return v.r === this.r && v.tha === this.tha;\n }\n\n clear() {\n this.r = 0.0;\n this.tha = 0.0;\n return this;\n }\n\n clone() {\n return new Polar2D(this.r, this.tha);\n }\n}\n","const Mat3 = {\n create(mat3) {\n const mat = new Float32Array(9);\n if (mat3) this.set(mat3, mat);\n\n return mat;\n },\n\n set(mat1, mat2) {\n for (let i = 0; i < 9; i++) mat2[i] = mat1[i];\n\n return mat2;\n },\n\n multiply(mat, mat2, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b00 = mat2[0],\n b01 = mat2[1],\n b02 = mat2[2],\n b10 = mat2[3],\n b11 = mat2[4],\n b20 = mat2[6],\n b21 = mat2[7];\n\n mat3[0] = b00 * a00 + b01 * a10;\n mat3[1] = b00 * a01 + b01 * a11;\n mat3[2] = a02 * b02;\n mat3[3] = b10 * a00 + b11 * a10;\n mat3[4] = b10 * a01 + b11 * a11;\n mat3[6] = b20 * a00 + b21 * a10 + a20;\n mat3[7] = b20 * a01 + b21 * a11 + a21;\n\n return mat3;\n },\n\n inverse(mat, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b01 = a11,\n b11 = -a10,\n b21 = a21 * a10 - a11 * a20,\n d = a00 * b01 + a01 * b11,\n id;\n\n id = 1 / d;\n mat3[0] = b01 * id;\n mat3[1] = -a01 * id;\n mat3[3] = b11 * id;\n mat3[4] = a00 * id;\n mat3[6] = b21 * id;\n mat3[7] = (-a21 * a00 + a01 * a20) * id;\n\n return mat3;\n },\n\n multiplyVec2(m, vec, mat3) {\n let x = vec[0],\n y = vec[1];\n\n mat3[0] = x * m[0] + y * m[3] + m[6];\n mat3[1] = x * m[1] + y * m[4] + m[7];\n\n return mat3;\n }\n};\n\nexport default Mat3;\n","import Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default class Span {\n constructor(a, b, center) {\n if (Util.isArray(a)) {\n this.isArray = true;\n this.a = a;\n } else {\n this.isArray = false;\n this.a = Util.initValue(a, 1);\n this.b = Util.initValue(b, this.a);\n this.center = Util.initValue(center, false);\n }\n }\n\n getValue(isInt = false) {\n if (this.isArray) {\n return Util.getRandFromArray(this.a);\n } else {\n if (!this.center) {\n return MathUtil.randomAToB(this.a, this.b, isInt);\n } else {\n return MathUtil.randomFloating(this.a, this.b, isInt);\n }\n }\n }\n\n /**\n * Returns a new Span object\n *\n * @memberof Proton#Proton.Util\n * @method setSpanValue\n *\n * @todo a, b and c should be 'Mixed' or 'Number'?\n *\n * @param {Mixed | Span} a\n * @param {Mixed} b\n * @param {Mixed} c\n *\n * @return {Span}\n */\n static setSpanValue(a, b, c) {\n if (a instanceof Span) {\n return a;\n } else {\n if (b === undefined) {\n return new Span(a);\n } else {\n if (c === undefined) return new Span(a, b);\n else return new Span(a, b, c);\n }\n }\n }\n\n /**\n * Returns the value from a Span, if the param is not a Span it will return the given parameter\n *\n * @memberof Proton#Proton.Util\n * @method getValue\n *\n * @param {Mixed | Span} pan\n *\n * @return {Mixed} the value of Span OR the parameter if it is not a Span\n */\n static getSpanValue(pan) {\n return pan instanceof Span ? pan.getValue() : pan;\n }\n}\n","import Span from \"./Span\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"./MathUtil\";\n\nexport default class ArraySpan extends Span {\n constructor(color) {\n super();\n this._arr = Util.toArray(color);\n }\n\n getValue() {\n const val = Util.getRandFromArray(this._arr);\n return val === \"random\" || val === \"Random\" ? MathUtil.randomColor() : val;\n }\n\n /**\n * Make sure that the color is an instance of Proton.ArraySpan, if not it makes a new instance\n *\n * @method setSpanValue\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n static createArraySpan(arr) {\n if (!arr) return null;\n\n if (arr instanceof ArraySpan) return arr;\n else return new ArraySpan(arr);\n }\n}\n","export default class Rectangle {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n\n this.width = w;\n this.height = h;\n\n this.bottom = this.y + this.height;\n this.right = this.x + this.width;\n }\n\n contains(x, y) {\n if (x <= this.right && x >= this.x && y <= this.bottom && y >= this.y) return true;\n else return false;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\n\nexport default class Rate {\n /**\n * The number of particles per second emission (a [particle]/b [s]);\n * @namespace\n * @memberof! Proton#\n * @constructor\n * @alias Rate\n *\n * @param {Array | Number | Span} numpan the number of each emission;\n * @param {Array | Number | Span} timepan the time of each emission;\n * for example: new Rate(new Span(10, 20), new Span(.1, .25));\n */\n constructor(numpan, timepan) {\n this.numPan = Span.setSpanValue(Util.initValue(numpan, 1));\n this.timePan = Span.setSpanValue(Util.initValue(timepan, 1));\n\n this.startTime = 0;\n this.nextTime = 0;\n this.init();\n }\n\n init() {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n }\n\n getValue(time) {\n this.startTime += time;\n\n if (this.startTime >= this.nextTime) {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n\n if (this.numPan.b === 1) {\n if (this.numPan.getValue(false) > 0.5) return 1;\n else return 0;\n } else {\n return this.numPan.getValue(true);\n }\n }\n\n return 0;\n }\n}\n","export default class Initialize {\n reset() {}\n\n init(emitter, particle) {\n if (particle) {\n this.initialize(particle);\n } else {\n this.initialize(emitter);\n }\n }\n\n // sub class init\n initialize(target) {}\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\nexport default class Life extends Initialize {\n constructor(a, b, c) {\n super();\n\n this.lifePan = Span.setSpanValue(a, b, c);\n this.name = \"Life\";\n }\n\n initialize(target) {\n if (this.lifePan.a === Infinity) target.life = Infinity;\n else target.life = this.lifePan.getValue();\n }\n}\n","import Vector2D from \"../math/Vector2D\";\n\nexport default class Zone {\n constructor() {\n this.vector = new Vector2D(0, 0);\n this.random = 0;\n this.crossType = \"dead\";\n this.alert = true;\n }\n\n getPosition() {}\n\n crossing(particle) {}\n\n destroy() {\n this.vector = null;\n }\n}\n","import Zone from \"./Zone\";\n\nexport default class PointZone extends Zone {\n constructor(x, y) {\n super();\n\n this.x = x;\n this.y = y;\n }\n\n getPosition() {\n this.vector.x = this.x;\n this.vector.y = this.y;\n\n return this.vector;\n }\n\n crossing(particle) {\n if (this.alert) {\n console.error(\"Sorry, PointZone does not support crossing method!\");\n this.alert = false;\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport PointZone from \"../zone/PointZone\";\nimport Initialize from \"./Initialize\";\n\nexport default class Position extends Initialize {\n constructor(zone) {\n super();\n this.zone = Util.initValue(zone, new PointZone());\n this.name = \"Position\";\n }\n\n reset(zone) {\n this.zone = Util.initValue(zone, new PointZone());\n }\n\n initialize(target) {\n this.zone.getPosition();\n\n target.p.x = this.zone.vector.x;\n target.p.y = this.zone.vector.y;\n }\n}\n","import Proton from \"../core/Proton\";\nimport Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Initialize from \"./Initialize\";\nimport Polar2D from \"../math/Polar2D\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default class Velocity extends Initialize {\n constructor(rpan, thapan, type) {\n super();\n\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n\n this.name = \"Velocity\";\n }\n\n reset(rpan, thapan, type) {\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n }\n\n normalizeVelocity(vr) {\n return vr * Proton.MEASURE;\n }\n\n initialize(target) {\n if (this.type === \"p\" || this.type === \"P\" || this.type === \"polar\") {\n const polar2d = new Polar2D(\n this.normalizeVelocity(this.rPan.getValue()),\n this.thaPan.getValue() * MathUtil.PI_180\n );\n\n target.v.x = polar2d.getX();\n target.v.y = polar2d.getY();\n } else {\n target.v.x = this.normalizeVelocity(this.rPan.getValue());\n target.v.y = this.normalizeVelocity(this.thaPan.getValue());\n }\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\nexport default class Mass extends Initialize {\n constructor(a, b, c) {\n super();\n this.massPan = Span.setSpanValue(a, b, c);\n this.name = \"Mass\";\n }\n\n initialize(target) {\n target.mass = this.massPan.getValue();\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\nexport default class Radius extends Initialize {\n constructor(a, b, c) {\n super();\n this.radius = Span.setSpanValue(a, b, c);\n\n this.name = \"Radius\";\n }\n\n reset(a, b, c) {\n this.radius = Span.setSpanValue(a, b, c);\n }\n\n initialize(particle) {\n particle.radius = this.radius.getValue();\n particle.data.oldRadius = particle.radius;\n }\n}\n","import Util from \"../utils/Util\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Initialize from \"./Initialize\";\n\nexport default class Body extends Initialize {\n constructor(image, w, h) {\n super();\n\n this.image = this.setSpanValue(image);\n this.w = Util.initValue(w, 20);\n this.h = Util.initValue(h, this.w);\n this.name = \"Body\";\n }\n\n initialize(particle) {\n const imageTarget = this.image.getValue();\n\n if (typeof imageTarget === \"string\") {\n particle.body = {\n width: this.w,\n height: this.h,\n src: imageTarget,\n isInner: true,\n inner: true\n };\n } else {\n particle.body = imageTarget;\n }\n }\n\n setSpanValue(image) {\n return image instanceof ArraySpan ? image : new ArraySpan(image);\n }\n}\n","import Proton from \"../core/Proton\";\nimport Util from \"../utils/Util\";\nimport ease from \"../math/ease\";\n\nexport default class Behaviour {\n static id = 0;\n\n /**\n * The Behaviour class is the base for the other Behaviour\n *\n * @memberof! -\n * @interface\n * @alias Proton.Behaviour\n *\n * @param {Number} life \tthe behaviours life\n * @param {String} easing \tThe behaviour's decaying trend, for example ease.easeOutQuart\n *\n * @property {String} id \t\tThe behaviours id\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n * @property {Number} age=0 \tHow long the particle should be 'alife'\n * @property {Number} energy=1\n * @property {Boolean} dead=false The particle is dead at first\n * @property {Array} parents \tThe behaviour's parents array\n * @property {String} name \tThe behaviour name\n */\n constructor(life, easing) {\n this.life = Util.initValue(life, Infinity);\n this.easing = ease.getEasing(easing);\n\n this.age = 0;\n this.energy = 1;\n this.dead = false;\n this.parents = [];\n\n this.id = `Behaviour_${Behaviour.id++}`;\n this.name = \"Behaviour\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton.Behaviour\n * @instance\n *\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(life, easing) {\n this.life = Util.initValue(life, Infinity);\n this.easing = ease.getEasing(easing);\n }\n\n /**\n * Normalize a force by 1:100;\n *\n * @method normalizeForce\n * @memberof Proton.Behaviour\n * @instance\n *\n * @param {Proton.Vector2D} force\n */\n normalizeForce(force) {\n return force.multiplyScalar(Proton.MEASURE);\n }\n\n /**\n * Normalize a value by 1:100;\n *\n * @method normalizeValue\n * @memberof Proton.Behaviour\n * @instance\n *\n * @param {Number} value\n */\n normalizeValue(value) {\n return value * Proton.MEASURE;\n }\n\n /**\n * Initialize the behaviour's parameters for all particles\n *\n * @method initialize\n * @memberof Proton.Behaviour\n * @instance\n *\n * @param {Proton.Particle} particle\n */\n initialize(particle) {}\n\n /**\n * computing life cycle\n *\n * @method calculate\n * @memberof Proton.Behaviour\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n calculate(particle, time, index) {\n this.age += time;\n\n if (this.age >= this.life || this.dead) {\n this.energy = 0;\n this.dead = true;\n this.destroy();\n } else {\n const scale = this.easing(particle.age / particle.life);\n this.energy = Math.max(1 - scale, 0);\n }\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n }\n\n /**\n * Destory this behaviour\n *\n * @method destroy\n * @memberof Proton.Behaviour\n * @instance\n */\n destroy() {\n let i = this.parents.length;\n while (i--) {\n this.parents[i].removeBehaviour(this);\n }\n\n this.parents.length = 0;\n }\n}\n","import Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Force extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Force\n *\n * @param {Number} fx\n * @param {Number} fy\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(fx, fy, life, easing) {\n super(life, easing);\n\n this.force = this.normalizeForce(new Vector2D(fx, fy));\n this.name = \"Force\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Force\n * @instance\n *\n * @param {Number} fx\n * @param {Number} fy\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(fx, fy, life, easing) {\n this.force = this.normalizeForce(new Vector2D(fx, fy));\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Force\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.a.add(this.force);\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Attraction extends Behaviour {\n /**\n * This behaviour let the particles follow one specific Proton.Vector2D\n *\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Attraction\n *\n * @todo add description for 'force' and 'radius'\n *\n * @param {Proton.Vector2D} targetPosition the attraction point coordinates\n * @param {Number} [force=100]\n * @param {Number} [radius=1000]\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {Proton.Vector2D} targetPosition\n * @property {Number} radius\n * @property {Number} force\n * @property {Number} radiusSq\n * @property {Proton.Vector2D} attractionForce\n * @property {Number} lengthSq\n * @property {String} name The Behaviour name\n */\n constructor(targetPosition, force, radius, life, easing) {\n super(life, easing);\n\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n this.radius = Util.initValue(radius, 1000);\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n this.radiusSq = this.radius * this.radius;\n this.attractionForce = new Vector2D();\n this.lengthSq = 0;\n\n this.name = \"Attraction\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Attraction\n * @instance\n *\n * @todo add description for 'force' and 'radius'\n *\n * @param {Proton.Vector2D} targetPosition the attraction point coordinates\n * @param {Number} [force=100]\n * @param {Number} [radius=1000]\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(targetPosition, force, radius, life, easing) {\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n this.radius = Util.initValue(radius, 1000);\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n this.radiusSq = this.radius * this.radius;\n this.attractionForce = new Vector2D();\n this.lengthSq = 0;\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @memberof Proton#Proton.Attraction\n * @method applyBehaviour\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n this.attractionForce.copy(this.targetPosition);\n this.attractionForce.sub(particle.p);\n this.lengthSq = this.attractionForce.lengthSq();\n\n if (this.lengthSq > 0.00004 && this.lengthSq < this.radiusSq) {\n this.attractionForce.normalize();\n this.attractionForce.multiplyScalar(1 - this.lengthSq / this.radiusSq);\n this.attractionForce.multiplyScalar(this.force);\n\n particle.a.add(this.attractionForce);\n }\n }\n}\n","import Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class RandomDrift extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Behaviour\n * @constructor\n * @alias RandomDrift\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {Number} time The time of the drift\n * @property {String} name The Behaviour name\n */\n constructor(driftX, driftY, delay, life, easing) {\n super(life, easing);\n\n this.reset(driftX, driftY, delay);\n this.time = 0;\n this.name = \"RandomDrift\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(driftX, driftY, delay, life, easing) {\n this.panFoce = new Vector2D(driftX, driftY);\n this.panFoce = this.normalizeForce(this.panFoce);\n this.delay = delay;\n\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n particle.data.time = 0;\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.data.time += time;\n\n if (particle.data.time >= this.delay) {\n particle.a.addXY(\n MathUtil.randomAToB(-this.panFoce.x, this.panFoce.x),\n MathUtil.randomAToB(-this.panFoce.y, this.panFoce.y)\n );\n\n particle.data.time = 0;\n }\n }\n}\n","import Force from \"./Force\";\n\nexport default class Gravity extends Force {\n /**\n * @memberof! Proton#\n * @augments Proton#Proton.Force\n * @constructor\n * @alias Proton.Gravity\n *\n * @param {Number} g \t\t\t\t\t\t\tGravity\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(g, life, easing) {\n super(0, g, life, easing);\n this.name = \"Gravity\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Gravity\n * @instance\n *\n * @param {Number} g \t\t\t\t\t\t\tGravity\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(g, life, easing) {\n super.reset(0, g, life, easing);\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Collision extends Behaviour {\n /**\n * The callback after collision\n *\n * @callback Callback\n *\n * @param {Proton.Particle} particle\n * @param {Proton.Paritcle} otherParticle\n */\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Collision\n *\n * @todo add description to mass\n *\n * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n * @param {Boolean} \t\t[mass=true]\n * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(emitter, mass, callback, life, easing) {\n super(life, easing);\n\n this.reset(emitter, mass, callback);\n this.name = \"Collision\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @memberof Proton#Proton.Collision\n * @method reset\n * @instance\n *\n * @todo add description to mass\n *\n * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n * @param {Boolean} \t\t[mass=true]\n * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n * @param {Number} \t\t\t[life=Infinity] \tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(emitter, mass, callback, life, easing) {\n this.emitter = Util.initValue(emitter, null);\n this.mass = Util.initValue(mass, true);\n this.callback = Util.initValue(callback, null);\n\n this.collisionPool = [];\n this.delta = new Vector2D();\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @memberof Proton#Proton.Collision\n * @method applyBehaviour\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n const newPool = this.emitter ? this.emitter.particles.slice(index) : this.pool.slice(index);\n const length = newPool.length;\n\n let otherParticle;\n let lengthSq;\n let overlap;\n let totalMass;\n let averageMass1, averageMass2;\n let i;\n\n for (i = 0; i < length; i++) {\n otherParticle = newPool[i];\n\n if (otherParticle !== particle) {\n this.delta.copy(otherParticle.p);\n this.delta.sub(particle.p);\n\n lengthSq = this.delta.lengthSq();\n const distance = particle.radius + otherParticle.radius;\n\n if (lengthSq <= distance * distance) {\n overlap = distance - Math.sqrt(lengthSq);\n overlap += 0.5;\n\n totalMass = particle.mass + otherParticle.mass;\n averageMass1 = this.mass ? otherParticle.mass / totalMass : 0.5;\n averageMass2 = this.mass ? particle.mass / totalMass : 0.5;\n\n particle.p.add(\n this.delta\n .clone()\n .normalize()\n .multiplyScalar(overlap * -averageMass1)\n );\n otherParticle.p.add(this.delta.normalize().multiplyScalar(overlap * averageMass2));\n\n this.callback && this.callback(particle, otherParticle);\n }\n }\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class CrossZone extends Behaviour {\n /**\n * Defines what happens if the particles come to the end of the specified zone\n *\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.CrossZone\n *\n * @param {Proton.Zone} zone \t\t\t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \t\t\twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \t\t\tthis behaviour's life\n * @param {String} \t\t[easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(zone, crossType, life, easing) {\n super(life, easing);\n\n this.reset(zone, crossType);\n this.name = \"CrossZone\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Zone} zone \t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \tthis behaviour's life\n * @param {String} \t\t[easing=easeLinear]\tthis behaviour's easing\n */\n reset(zone, crossType, life, easing) {\n this.zone = zone;\n this.zone.crossType = Util.initValue(crossType, \"dead\");\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n this.zone.crossing(particle);\n }\n}\n","import Util from \"../utils/Util\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Alpha extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Alpha\n *\n * @todo add description for 'a' and 'b'\n *\n * @param {Number} a\n * @param {String} b\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Alpha\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Alpha\n * @instance\n *\n * @todo add description for 'a' and 'b'\n *\n * @param {Number} a\n * @param {String} b\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(a, b, life, easing) {\n this.same = b === null || b === undefined ? true : false;\n this.a = Span.setSpanValue(Util.initValue(a, 1));\n this.b = Span.setSpanValue(b);\n\n life && super.reset(life, easing);\n }\n\n /**\n * Sets the new alpha value of the particle\n *\n * @method initialize\n * @memberof Proton#Proton.Alpha\n * @instance\n *\n * @param {Proton.Particle} particle A single Proton generated particle\n */\n initialize(particle) {\n particle.data.alphaA = this.a.getValue();\n\n if (this.same) particle.data.alphaB = particle.data.alphaA;\n else particle.data.alphaB = this.b.getValue();\n }\n\n /**\n * @method applyBehaviour\n * @memberof Proton#Proton.Alpha\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n particle.alpha = particle.data.alphaB + (particle.data.alphaA - particle.data.alphaB) * this.energy;\n\n if (particle.alpha < 0.001) particle.alpha = 0;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Scale extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Scale\n *\n * @todo add description for 'a' and 'b'\n *\n * @param {Number} a\n * @param {String} b\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Scale\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Scale\n * @instance\n *\n * @param {Number} a\n * @param {String} b\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(a, b, life, easing) {\n this.same = b === null || b === undefined ? true : false;\n this.a = Span.setSpanValue(Util.initValue(a, 1));\n this.b = Span.setSpanValue(b);\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initialize the behaviour's parameters for all particles\n *\n * @method initialize\n * @memberof Proton#Proton.Scale\n * @instance\n *\n * @param {Proton.Particle} particle\n */\n initialize(particle) {\n particle.data.scaleA = this.a.getValue();\n particle.data.oldRadius = particle.radius;\n particle.data.scaleB = this.same ? particle.data.scaleA : this.b.getValue();\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Scale\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.scale = particle.data.scaleB + (particle.data.scaleA - particle.data.scaleB) * this.energy;\n\n if (particle.scale < 0.0001) particle.scale = 0;\n particle.radius = particle.data.oldRadius * particle.scale;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Rotate extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Rotate\n *\n * @todo add description for 'a', 'b' and 'style'\n *\n * @param {String} [influence=Velocity] The rotation's influence\n * @param {String} b\n * @param {String} [style=to]\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(influence, b, style, life, easing) {\n super(life, easing);\n\n this.reset(influence, b, style);\n this.name = \"Rotate\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Rotate\n * @instance\n *\n * @todo add description for 'a', 'b' and 'style'\n *\n * @param {String} a\n * @param {String} b\n * @param {String} [style=to]\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(a, b, style, life, easing) {\n this.same = b === null || b === undefined ? true : false;\n\n this.a = Span.setSpanValue(Util.initValue(a, \"Velocity\"));\n this.b = Span.setSpanValue(Util.initValue(b, 0));\n this.style = Util.initValue(style, \"to\");\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initialize the behaviour's parameters for all particles\n *\n * @method initialize\n * @memberof Proton#Proton.Rotate\n * @instance\n *\n * @param {Proton.Particle} particle\n */\n initialize(particle) {\n particle.rotation = this.a.getValue();\n particle.data.rotationA = this.a.getValue();\n\n if (!this.same) particle.data.rotationB = this.b.getValue();\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Rotate\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n if (!this.same) {\n if (this.style === \"to\" || this.style === \"TO\" || this.style === \"_\") {\n particle.rotation +=\n particle.data.rotationB + (particle.data.rotationA - particle.data.rotationB) * this.energy;\n } else {\n particle.rotation += particle.data.rotationB;\n }\n } else if (this.a.a === \"V\" || this.a.a === \"Velocity\" || this.a.a === \"v\") {\n // beta...\n particle.rotation = particle.getDirection();\n }\n }\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Color extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Color\n *\n * @param {Proton.ArraySpan | String} a the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} b the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Color\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.ArraySpan | String} a the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} b the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(a, b, life, easing) {\n this.a = ArraySpan.createArraySpan(a);\n this.b = ArraySpan.createArraySpan(b);\n life && super.reset(life, easing);\n }\n\n /**\n * Initialize the behaviour's parameters for all particles\n *\n * @method initialize\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n */\n initialize(particle) {\n particle.color = this.a.getValue();\n particle.data.colorA = ColorUtil.hexToRgb(particle.color);\n\n if (this.b) particle.data.colorB = ColorUtil.hexToRgb(this.b.getValue());\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n if (this.b) {\n this.calculate(particle, time, index);\n\n particle.rgb.r = particle.data.colorB.r + (particle.data.colorA.r - particle.data.colorB.r) * this.energy;\n particle.rgb.g = particle.data.colorB.g + (particle.data.colorA.g - particle.data.colorB.g) * this.energy;\n particle.rgb.b = particle.data.colorB.b + (particle.data.colorA.b - particle.data.colorB.b) * this.energy;\n\n particle.rgb.r = particle.rgb.r << 0;\n particle.rgb.g = particle.rgb.g << 0;\n particle.rgb.b = particle.rgb.b << 0;\n } else {\n particle.rgb.r = particle.data.colorA.r;\n particle.rgb.g = particle.data.colorA.g;\n particle.rgb.b = particle.data.colorA.b;\n }\n }\n}\n","import MathUtil from \"../math/MathUtil\";\nimport Vector2D from \"../math/Vector2D\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\nconst CHANGING = \"changing\";\n\nexport default class Cyclone extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Cyclone\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(angle, force, life, easing) {\n super(life, easing);\n this.setAngleAndForce(angle, force);\n this.name = \"Cyclone\";\n }\n\n setAngleAndForce(angle, force) {\n this.force = CHANGING;\n this.angle = MathUtil.PI / 2;\n\n if (angle === \"right\") {\n this.angle = MathUtil.PI / 2;\n } else if (angle === \"left\") {\n this.angle = -MathUtil.PI / 2;\n } else if (angle === \"random\") {\n this.angle = \"random\";\n } else if (angle instanceof Span) {\n this.angle = \"span\";\n this.span = angle;\n } else if (angle) {\n this.angle = angle;\n }\n\n if (\n String(force).toLowerCase() === \"changing\" ||\n String(force).toLowerCase() === \"chang\" ||\n String(force).toLowerCase() === \"auto\"\n ) {\n this.force = CHANGING;\n } else if (force) {\n this.force = force;\n }\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(angle, force, life, easing) {\n this.angle = MathUtil.PI / 2;\n this.setAngleAndForce(angle, force);\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n if (this.angle === \"random\") {\n particle.data.cangle = MathUtil.randomAToB(-MathUtil.PI, MathUtil.PI);\n } else if (this.angle === \"span\") {\n particle.data.cangle = this.span.getValue();\n }\n\n particle.data.cyclone = new Vector2D(0, 0);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n let length;\n let gradient = particle.v.getGradient();\n if (this.angle === \"random\" || this.angle === \"span\") {\n gradient += particle.data.cangle;\n } else {\n gradient += this.angle;\n }\n\n if (this.force === CHANGING) {\n length = particle.v.length() / 100;\n } else {\n length = this.force;\n }\n\n particle.data.cyclone.x = length * Math.cos(gradient);\n particle.data.cyclone.y = length * Math.sin(gradient);\n particle.data.cyclone = this.normalizeForce(particle.data.cyclone);\n particle.a.add(particle.data.cyclone);\n }\n}\n","import Attraction from \"./Attraction\";\n\nexport default class Repulsion extends Attraction {\n /**\n * The oppisite of Proton.Attraction - turns the force\n *\n * @memberof! Proton#\n * @augments Proton#Proton.Attraction\n * @constructor\n * @alias Proton.Repulsion\n *\n * @todo add description for 'force' and 'radius'\n *\n * @param {Proton.Vector2D} targetPosition the attraction point coordinates\n * @param {Number} [force=100]\n * @param {Number} [radius=1000]\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {Number} force\n * @property {String} name The Behaviour name\n */\n constructor(targetPosition, force, radius, life, easing) {\n super(targetPosition, force, radius, life, easing);\n\n this.force *= -1;\n this.name = \"Repulsion\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Repulsion\n * @instance\n *\n * @todo add description for 'force' and 'radius'\n *\n * @param {Proton.Vector2D} targetPosition the attraction point coordinates\n * @param {Number} [force=100]\n * @param {Number} [radius=1000]\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(targetPosition, force, radius, life, easing) {\n super.reset(targetPosition, force, radius, life, easing);\n this.force *= -1;\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class GravityWell extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Behaviour\n * @constructor\n * @alias GravityWell\n *\n * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n * @param {Number} [force=100]\t\t\t\t\tThe force\n * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n * @param {String} [easing=easeLinear]\tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(centerPoint, force, life, easing) {\n super(life, easing);\n\n this.distanceVec = new Vector2D();\n this.centerPoint = Util.initValue(centerPoint, new Vector2D());\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n this.name = \"GravityWell\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#GravityWell\n * @instance\n *\n * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n * @param {Number} [force=100]\t\t\t\t\tThe force\n * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n * @param {String} [easing=easeLinear]\tthis behaviour's easing\n */\n reset(centerPoint, force, life, easing) {\n this.distanceVec = new Vector2D();\n this.centerPoint = Util.initValue(centerPoint, new Vector2D());\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n life && super.reset(life, easing);\n }\n\n /**\n * @inheritdoc\n */\n initialize(particle) {}\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#GravityWell\n * @instance\n *\n * @param {Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.distanceVec.set(this.centerPoint.x - particle.p.x, this.centerPoint.y - particle.p.y);\n const distanceSq = this.distanceVec.lengthSq();\n\n if (distanceSq !== 0) {\n const distance = this.distanceVec.length();\n const factor = (this.force * time) / (distanceSq * distance);\n\n particle.v.x += factor * this.distanceVec.x;\n particle.v.y += factor * this.distanceVec.y;\n }\n }\n}\n","import PropUtil from \"../utils/PropUtil\";\nimport Initialize from \"./Initialize\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default {\n initialize(emitter, particle, initializes) {\n const length = initializes.length;\n let i;\n\n for (i = 0; i < length; i++) {\n if (initializes[i] instanceof Initialize) {\n initializes[i].init(emitter, particle);\n } else {\n this.init(emitter, particle, initializes[i]);\n }\n }\n\n this.bindEmitter(emitter, particle);\n },\n\n // init\n init(emitter, particle, initialize) {\n PropUtil.setProp(particle, initialize);\n PropUtil.setVectorVal(particle, initialize);\n },\n\n bindEmitter(emitter, particle) {\n if (emitter.bindEmitter) {\n particle.p.add(emitter.p);\n particle.v.add(emitter.v);\n particle.a.add(emitter.a);\n particle.v.rotate(MathUtil.degreeTransform(emitter.rotation));\n }\n }\n};\n","import Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\nimport Particle from \"../core/Particle\";\nimport EventDispatcher from \"../events/EventDispatcher\";\n\nimport Rate from \"../initialize/Rate\";\nimport InitializeUtil from \"../initialize/InitializeUtil\";\n\nexport default class Emitter extends Particle {\n /**\n * You can use this emit particles.\n *\n * It will dispatch follow events:\n * PARTICLE_CREATED\n * PARTICLE_UPDATA\n * PARTICLE_DEAD\n *\n * @class Emitter\n * @constructor\n * @param {Object} conf the parameters object;\n * for example {damping:0.01,bindEmitter:false}\n */\n constructor(conf = {}) {\n super(conf);\n\n this.particles = [];\n this.behaviours = [];\n this.initializes = [];\n\n this.emitTime = 0;\n this.emitSpeed = 0;\n this.totalTime = -1;\n\n /**\n * The friction coefficient for all particle emit by This;\n * @property damping\n * @type {Number}\n * @default 0.006\n */\n this.damping = 0.006;\n\n /**\n * If bindEmitter the particles can bind this emitter's property;\n * @property bindEmitter\n * @type {Boolean}\n * @default true\n */\n this.bindEmitter = true;\n\n /**\n * The number of particles per second emit (a [particle]/b [s]);\n * @property rate\n * @type {Rate}\n * @default Rate(1, .1)\n */\n this.rate = new Rate(1, 0.1);\n\n this.name = \"Emitter\";\n this.id = Puid.id(this.name);\n }\n\n /**\n * start emit particle\n * @method emit\n * @param {Number} emitTime begin emit time;\n * @param {String} life the life of this emitter\n */\n emit(totalTime, life) {\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = Util.initValue(totalTime, Infinity);\n\n if (life === true || life === \"life\" || life === \"destroy\") {\n this.life = totalTime === \"once\" ? 1 : this.totalTime;\n } else if (!isNaN(life)) {\n this.life = life;\n }\n\n this.rate.init();\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this.totalTime = -1;\n this.emitTime = 0;\n this.stoped = true;\n }\n\n preEmit(time) {\n let oldStoped = this.stoped;\n let oldEmitTime = this.emitTime;\n let oldTotalTime = this.totalTime;\n\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = time;\n this.rate.init();\n\n const step = 0.0167;\n while (time > step) {\n time -= step;\n this.update(step);\n }\n\n this.stoped = oldStoped;\n this.emitTime = oldEmitTime + Math.max(time, 0);\n this.totalTime = oldTotalTime;\n }\n\n /**\n * remove current all particles\n * @method removeAllParticles\n */\n removeAllParticles() {\n let i = this.particles.length;\n while (i--) this.particles[i].dead = true;\n }\n\n /**\n * add initialize to this emitter\n * @method addSelfInitialize\n */\n addSelfInitialize(initialize) {\n if (initialize[\"init\"]) {\n initialize.init(this);\n } else {\n // this.initAll();\n }\n }\n\n /**\n * add the Initialize to particles;\n *\n * you can use initializes array:for example emitter.addInitialize(initialize1,initialize2,initialize3);\n * @method addInitialize\n * @param {Initialize} initialize like this new Radius(1, 12)\n */\n addInitialize(...rest) {\n let i = rest.length;\n while (i--) this.initializes.push(rest[i]);\n }\n\n /**\n * remove the Initialize\n * @method removeInitialize\n * @param {Initialize} initialize a initialize\n */\n removeInitialize(initializer) {\n const index = this.initializes.indexOf(initializer);\n if (index > -1) this.initializes.splice(index, 1);\n }\n\n /**\n * remove all Initializes\n * @method removeInitializers\n */\n removeAllInitializers() {\n Util.emptyArray(this.initializes);\n }\n\n /**\n * add the Behaviour to particles;\n *\n * you can use Behaviours array:emitter.addBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addBehaviour\n * @param {Behaviour} behaviour like this new Color('random')\n */\n addBehaviour(...rest) {\n let i = arguments.length;\n while (i--) {\n let behaviour = rest[i];\n this.behaviours.push(behaviour);\n if (behaviour.parents) behaviour.parents.push(this);\n }\n }\n\n /**\n * remove the Behaviour\n * @method removeBehaviour\n * @param {Behaviour} behaviour a behaviour\n */\n removeBehaviour(behaviour) {\n let index = this.behaviours.indexOf(behaviour);\n this.behaviours.splice(index, 1);\n\n if (behaviour.parents) {\n index = behaviour.parents.indexOf(behaviour);\n behaviour.parents.splice(index, 1);\n }\n\n return index;\n }\n\n /**\n * remove all behaviours\n * @method removeAllBehaviours\n */\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n // emitter update\n update(time) {\n this.age += time;\n if (this.age >= this.life || this.dead) this.destroy();\n\n this.emitting(time);\n this.integrate(time);\n }\n\n integrate(time) {\n if (!this.parent) return;\n\n const damping = 1 - this.damping;\n this.parent.integrator.calculate(this, time, damping);\n\n const length = this.particles.length;\n let i, particle;\n\n for (i = length - 1; i >= 0; i--) {\n particle = this.particles[i];\n\n // particle update\n particle.update(time, i);\n this.parent.integrator.calculate(particle, time, damping);\n this.dispatch(\"PARTICLE_UPDATE\", particle);\n\n // check dead\n if (particle.dead) {\n this.dispatch(\"PARTICLE_DEAD\", particle);\n\n this.parent.pool.expire(particle);\n this.particles.splice(i, 1);\n }\n }\n }\n\n dispatch(event, target) {\n this.parent && this.parent.dispatchEvent(event, target);\n this.bindEvent && this.dispatchEvent(event, target);\n }\n\n emitting(time) {\n if (this.totalTime === \"once\") {\n let i;\n const length = this.rate.getValue(99999);\n\n if (length > 0) this.emitSpeed = length;\n for (i = 0; i < length; i++) this.createParticle();\n this.totalTime = \"none\";\n } else {\n this.emitTime += time;\n\n if (this.emitTime < this.totalTime) {\n const length = this.rate.getValue(time);\n let i;\n\n if (length > 0) this.emitSpeed = length;\n for (i = 0; i < length; i++) this.createParticle();\n }\n }\n }\n\n /**\n * create single particle;\n *\n * can use emit({x:10},new Gravity(10),{'particleUpdate',fun}) or emit([{x:10},new Initialize],new Gravity(10),{'particleUpdate',fun})\n * @method removeAllParticles\n */\n createParticle(initialize, behaviour) {\n const particle = this.parent.pool.get(Particle);\n this.setupParticle(particle, initialize, behaviour);\n this.dispatch(\"PARTICLE_CREATED\", particle);\n\n return particle;\n }\n\n setupParticle(particle, initialize, behaviour) {\n let initializes = this.initializes;\n let behaviours = this.behaviours;\n\n if (initialize) initializes = Util.toArray(initialize);\n if (behaviour) behaviours = Util.toArray(behaviour);\n\n particle.reset();\n InitializeUtil.initialize(this, particle, initializes);\n particle.addBehaviours(behaviours);\n particle.parent = this;\n\n this.particles.push(particle);\n }\n\n remove() {\n this.stop();\n Util.destroyAll(this.particles);\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n this.dead = true;\n this.remove();\n this.removeAllInitializers();\n this.removeAllBehaviours();\n this.parent && this.parent.removeEmitter(this);\n\n this.rate = null;\n this.old = null;\n this.rgb = null;\n this.v = null;\n this.a = null;\n this.p = null;\n }\n}\n\nEventDispatcher.bind(Emitter);\n","import Types from \"../utils/Types\";\nimport ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nlet PIXIClass;\nexport default class PixiRenderer extends BaseRenderer {\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.color = false;\n this.setColor = false;\n this.blendMode = null;\n this.pool.create = (body, particle) => this.createBody(body, particle);\n this.setPIXI(window.PIXI);\n\n this.name = \"PixiRenderer\";\n }\n\n setPIXI(PIXI) {\n try {\n PIXIClass = PIXI || { Sprite: {} };\n this.createFromImage = PIXIClass.Sprite.from || PIXIClass.Sprite.fromImage;\n } catch (e) {}\n }\n\n onProtonUpdate() {}\n\n /**\n * @param particle\n */\n onParticleCreated(particle) {\n if (particle.body) {\n particle.body = this.pool.get(particle.body, particle);\n } else {\n particle.body = this.pool.get(this.circleConf, particle);\n }\n\n if (this.blendMode) {\n particle.body.blendMode = this.blendMode;\n }\n\n this.element.addChild(particle.body);\n }\n\n /**\n * @param particle\n */\n onParticleUpdate(particle) {\n this.transform(particle, particle.body);\n\n if (this.setColor === true || this.color === true) {\n particle.body.tint = ColorUtil.getHex16FromParticle(particle);\n }\n }\n\n /**\n * @param particle\n */\n onParticleDead(particle) {\n this.element.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n\n transform(particle, target) {\n target.x = particle.p.x;\n target.y = particle.p.y;\n\n target.alpha = particle.alpha;\n\n target.scale.x = particle.scale;\n target.scale.y = particle.scale;\n\n // using cached version of MathUtil.PI_180 for slight performance increase.\n target.rotation = particle.rotation * MathUtil.PI_180; // MathUtil.PI_180;\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n else return this.createSprite(body);\n }\n\n createSprite(body) {\n const sprite = body.isInner ? this.createFromImage(body.src) : new PIXIClass.Sprite(body);\n\n sprite.anchor.x = 0.5;\n sprite.anchor.y = 0.5;\n\n return sprite;\n }\n\n createCircle(particle) {\n const graphics = new PIXIClass.Graphics();\n\n if (this.stroke) {\n const stroke = Types.isString(this.stroke) ? this.stroke : 0x000000;\n graphics.beginStroke(stroke);\n }\n\n graphics.beginFill(particle.color || 0x008ced);\n graphics.drawCircle(0, 0, particle.radius);\n graphics.endFill();\n\n return graphics;\n }\n\n destroy(particles) {\n super.destroy();\n\n let i = particles.length;\n while (i--) {\n let particle = particles[i];\n if (particle.body) {\n this.element.removeChild(particle.body);\n }\n }\n }\n}\n","import Emitter from \"./Emitter\";\n\nexport default class BehaviourEmitter extends Emitter {\n /**\n * The BehaviourEmitter class inherits from Proton.Emitter\n *\n * use the BehaviourEmitter you can add behaviours to self;\n * @class Proton.BehaviourEmitter\n * @constructor\n * @param {Object} conf the parameters object;\n */\n constructor(conf) {\n super(conf);\n\n this.selfBehaviours = [];\n }\n\n /**\n * add the Behaviour to emitter;\n *\n * you can use Behaviours array:emitter.addSelfBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addSelfBehaviour\n * @param {Proton.Behaviour} behaviour like this new Proton.Color('random')\n */\n addSelfBehaviour(...rest) {\n let i,\n length = rest.length;\n\n for (i = 0; i < length; i++) {\n let behaviour = rest[i];\n this.selfBehaviours.push(behaviour);\n behaviour.initialize(this);\n }\n }\n\n /**\n * remove the Behaviour for self\n * @method removeSelfBehaviour\n * @param {Proton.Behaviour} behaviour a behaviour\n */\n removeSelfBehaviour(behaviour) {\n const index = this.selfBehaviours.indexOf(behaviour);\n if (index > -1) this.selfBehaviours.splice(index, 1);\n }\n\n update(time) {\n super.update(time);\n\n if (!this.sleep) {\n const length = this.selfBehaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.selfBehaviours[i].applyBehaviour(this, time, i);\n }\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport Emitter from \"./Emitter\";\n\nexport default class FollowEmitter extends Emitter {\n /**\n * The FollowEmitter class inherits from Proton.Emitter\n *\n * use the FollowEmitter will emit particle when mousemoving\n *\n * @class Proton.FollowEmitter\n * @constructor\n * @param {Element} mouseTarget mouseevent's target;\n * @param {Number} ease the easing of following speed;\n * @default 0.7\n * @param {Object} conf the parameters object;\n */\n constructor(mouseTarget, ease, conf) {\n super(conf);\n\n this.mouseTarget = Util.initValue(mouseTarget, window);\n this.ease = Util.initValue(ease, 0.7);\n\n this._allowEmitting = false;\n this.initEventHandler();\n }\n\n initEventHandler() {\n this.mousemoveHandler = e => this.mousemove.call(this, e);\n this.mousedownHandler = e => this.mousedown.call(this, e);\n this.mouseupHandler = e => this.mouseup.call(this, e);\n this.mouseTarget.addEventListener(\"mousemove\", this.mousemoveHandler, false);\n }\n\n /**\n * start emit particle\n * @method emit\n */\n emit() {\n this._allowEmitting = true;\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this._allowEmitting = false;\n }\n\n mousemove(e) {\n if (e.layerX || e.layerX === 0) {\n this.p.x += (e.layerX - this.p.x) * this.ease;\n this.p.y += (e.layerY - this.p.y) * this.ease;\n } else if (e.offsetX || e.offsetX === 0) {\n this.p.x += (e.offsetX - this.p.x) * this.ease;\n this.p.y += (e.offsetY - this.p.y) * this.ease;\n }\n\n if (this._allowEmitting) super.emit(\"once\");\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n super.destroy();\n this.mouseTarget.removeEventListener(\"mousemove\", this.mousemoveHandler, false);\n }\n}\n","export default {\n /**\n * Determine whether it is a picture object\n *\n * @return {boolean} is or no\n */\n isImage(obj) {\n if (!obj) return false;\n if (obj.__isImage) return true;\n\n const tagName = `${obj.tagName}`.toUpperCase();\n const nodeName = `${obj.nodeName}`.toUpperCase();\n if (nodeName === \"IMG\" || tagName === \"IMG\") {\n obj.__isImage = true;\n return true;\n }\n\n return false;\n },\n\n /**\n * Determine whether it is a string object\n *\n * @return {boolean} is or no\n */\n isString(obj) {\n return typeof obj === \"string\";\n }\n};\n","import Pool from \"../core/Pool\";\n\nexport default class BaseRenderer {\n constructor(element, stroke) {\n this.pool = new Pool();\n this.element = element;\n this.stroke = stroke;\n this.circleConf = { isCircle: true };\n\n this.initEventHandler();\n this.name = \"BaseRenderer\";\n }\n\n setStroke(color = \"#000000\", thinkness = 1) {\n this.stroke = { color, thinkness };\n }\n\n initEventHandler() {\n this._protonUpdateHandler = () => {\n this.onProtonUpdate.call(this);\n };\n\n this._protonUpdateAfterHandler = () => {\n this.onProtonUpdateAfter.call(this);\n };\n\n this._emitterAddedHandler = emitter => {\n this.onEmitterAdded.call(this, emitter);\n };\n\n this._emitterRemovedHandler = emitter => {\n this.onEmitterRemoved.call(this, emitter);\n };\n\n this._particleCreatedHandler = particle => {\n this.onParticleCreated.call(this, particle);\n };\n\n this._particleUpdateHandler = particle => {\n this.onParticleUpdate.call(this, particle);\n };\n\n this._particleDeadHandler = particle => {\n this.onParticleDead.call(this, particle);\n };\n }\n\n init(proton) {\n this.parent = proton;\n\n proton.addEventListener(\"PROTON_UPDATE\", this._protonUpdateHandler);\n proton.addEventListener(\"PROTON_UPDATE_AFTER\", this._protonUpdateAfterHandler);\n\n proton.addEventListener(\"EMITTER_ADDED\", this._emitterAddedHandler);\n proton.addEventListener(\"EMITTER_REMOVED\", this._emitterRemovedHandler);\n\n proton.addEventListener(\"PARTICLE_CREATED\", this._particleCreatedHandler);\n proton.addEventListener(\"PARTICLE_UPDATE\", this._particleUpdateHandler);\n proton.addEventListener(\"PARTICLE_DEAD\", this._particleDeadHandler);\n }\n\n resize(width, height) {}\n\n destroy() {\n this.remove();\n this.pool.destroy();\n this.pool = null;\n this.element = null;\n this.stroke = null;\n }\n\n remove(proton) {\n this.parent.removeEventListener(\"PROTON_UPDATE\", this._protonUpdateHandler);\n this.parent.removeEventListener(\"PROTON_UPDATE_AFTER\", this._protonUpdateAfterHandler);\n\n this.parent.removeEventListener(\"EMITTER_ADDED\", this._emitterAddedHandler);\n this.parent.removeEventListener(\"EMITTER_REMOVED\", this._emitterRemovedHandler);\n\n this.parent.removeEventListener(\"PARTICLE_CREATED\", this._particleCreatedHandler);\n this.parent.removeEventListener(\"PARTICLE_UPDATE\", this._particleUpdateHandler);\n this.parent.removeEventListener(\"PARTICLE_DEAD\", this._particleDeadHandler);\n\n this.parent = null;\n }\n\n onProtonUpdate() {}\n onProtonUpdateAfter() {}\n\n onEmitterAdded(emitter) {}\n onEmitterRemoved(emitter) {}\n\n onParticleCreated(particle) {}\n onParticleUpdate(particle) {}\n onParticleDead(particle) {}\n}\n","import Types from \"../utils/Types\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nexport default class CanvasRenderer extends BaseRenderer {\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.context = this.element.getContext(\"2d\");\n this.bufferCache = {};\n this.name = \"CanvasRenderer\";\n }\n\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n onProtonUpdate() {\n this.context.clearRect(0, 0, this.element.width, this.element.height);\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.color = particle.color || \"#ff0000\";\n }\n }\n\n onParticleUpdate(particle) {\n if (particle.body) {\n if (Types.isImage(particle.body)) {\n this.drawImage(particle);\n }\n } else {\n this.drawCircle(particle);\n }\n }\n\n onParticleDead(particle) {\n particle.body = null;\n }\n\n // private method\n addImg2Body(img, particle) {\n particle.body = img;\n }\n\n // private drawImage method\n drawImage(particle) {\n const w = (particle.body.width * particle.scale) | 0;\n const h = (particle.body.height * particle.scale) | 0;\n const x = particle.p.x - w / 2;\n const y = particle.p.y - h / 2;\n\n if (!!particle.color) {\n if (!particle.data[\"buffer\"]) particle.data.buffer = this.createBuffer(particle.body);\n\n const bufContext = particle.data.buffer.getContext(\"2d\");\n bufContext.clearRect(0, 0, particle.data.buffer.width, particle.data.buffer.height);\n bufContext.globalAlpha = particle.alpha;\n bufContext.drawImage(particle.body, 0, 0);\n\n bufContext.globalCompositeOperation = \"source-atop\";\n bufContext.fillStyle = ColorUtil.rgbToHex(particle.rgb);\n bufContext.fillRect(0, 0, particle.data.buffer.width, particle.data.buffer.height);\n bufContext.globalCompositeOperation = \"source-over\";\n bufContext.globalAlpha = 1;\n\n this.context.drawImage(\n particle.data.buffer,\n 0,\n 0,\n particle.data.buffer.width,\n particle.data.buffer.height,\n x,\n y,\n w,\n h\n );\n } else {\n this.context.save();\n\n this.context.globalAlpha = particle.alpha;\n this.context.translate(particle.p.x, particle.p.y);\n this.context.rotate(MathUtil.degreeTransform(particle.rotation));\n this.context.translate(-particle.p.x, -particle.p.y);\n this.context.drawImage(particle.body, 0, 0, particle.body.width, particle.body.height, x, y, w, h);\n\n this.context.globalAlpha = 1;\n this.context.restore();\n }\n }\n\n // private drawCircle --\n drawCircle(particle) {\n if (particle.rgb) {\n this.context.fillStyle = `rgba(${particle.rgb.r},${particle.rgb.g},${particle.rgb.b},${particle.alpha})`;\n } else {\n this.context.fillStyle = particle.color;\n }\n\n // draw circle\n this.context.beginPath();\n this.context.arc(particle.p.x, particle.p.y, particle.radius, 0, Math.PI * 2, true);\n\n if (this.stroke) {\n this.context.strokeStyle = this.stroke.color;\n this.context.lineWidth = this.stroke.thinkness;\n this.context.stroke();\n }\n\n this.context.closePath();\n this.context.fill();\n }\n\n // private createBuffer\n createBuffer(image) {\n if (Types.isImage(image)) {\n const size = image.width + \"_\" + image.height;\n let canvas = this.bufferCache[size];\n\n if (!canvas) {\n canvas = document.createElement(\"canvas\");\n canvas.width = image.width;\n canvas.height = image.height;\n this.bufferCache[size] = canvas;\n }\n\n return canvas;\n }\n }\n\n destroy() {\n super.destroy();\n this.stroke = null;\n this.context = null;\n this.bufferCache = null;\n }\n}\n","import DomUtil from \"../utils/DomUtil\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nexport default class DomRenderer extends BaseRenderer {\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.transform3d = false;\n this.pool.create = (body, particle) => this.createBody(body, particle);\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.name = \"DomRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.body = this.pool.get(this.circleConf, particle);\n this.element.appendChild(particle.body);\n }\n }\n\n onParticleUpdate(particle) {\n if (this.bodyReady(particle)) {\n if (this.transform3d) {\n DomUtil.transform3d(particle.body, particle.p.x, particle.p.y, particle.scale, particle.rotation);\n } else {\n DomUtil.transform(particle.body, particle.p.x, particle.p.y, particle.scale, particle.rotation);\n }\n\n particle.body.style.opacity = particle.alpha;\n\n if (particle.body.isCircle) {\n particle.body.style.backgroundColor = particle.color || \"#ff0000\";\n }\n }\n }\n\n onParticleDead(particle) {\n if (this.bodyReady(particle)) {\n this.element.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n }\n\n bodyReady(particle) {\n return typeof particle.body === \"object\" && particle.body && !particle.body.isInner;\n }\n\n // private method\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = this.pool.get(img, particle);\n DomUtil.resize(particle.body, img.width, img.height);\n\n this.element.appendChild(particle.body);\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n return this.createSprite(body, particle);\n }\n\n // private methods\n createCircle(particle) {\n const dom = DomUtil.createDiv(`${particle.id}_dom`, 2 * particle.radius, 2 * particle.radius);\n dom.style.borderRadius = `${particle.radius}px`;\n\n if (this.stroke) {\n dom.style.borderColor = this.stroke.color;\n dom.style.borderWidth = `${this.stroke.thinkness}px`;\n }\n dom.isCircle = true;\n\n return dom;\n }\n\n createSprite(body, particle) {\n const url = typeof body === \"string\" ? body : body.src;\n const dom = DomUtil.createDiv(`${particle.id}_dom`, body.width, body.height);\n dom.style.backgroundImage = `url(${url})`;\n\n return dom;\n }\n\n destroy() {\n super.destroy();\n this.stroke = null;\n }\n}\n","import Types from \"../utils/Types\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nexport default class EaselRenderer extends BaseRenderer {\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.name = \"EaselRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n this.createSprite(particle);\n } else {\n this.createCircle(particle);\n }\n\n this.element.addChild(particle.body);\n }\n\n onParticleUpdate(particle) {\n if (particle.body) {\n particle.body.x = particle.p.x;\n particle.body.y = particle.p.y;\n\n particle.body.alpha = particle.alpha;\n particle.body.scaleX = particle.body.scaleY = particle.scale;\n particle.body.rotation = particle.rotation;\n }\n }\n\n onParticleDead(particle) {\n if (particle.body) {\n particle.body.parent && particle.body.parent.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n\n if (particle.graphics) this.pool.expire(particle.graphics);\n }\n\n // private\n createSprite(particle) {\n particle.body = this.pool.get(particle.body);\n\n if (particle.body.parent) return;\n if (particle.body[\"image\"]) {\n particle.body.regX = particle.body.image.width / 2;\n particle.body.regY = particle.body.image.height / 2;\n }\n }\n\n createCircle(particle) {\n const graphics = this.pool.get(createjs.Graphics);\n\n if (this.stroke) {\n if (Types.isString(this.stroke)) {\n graphics.beginStroke(this.stroke);\n } else {\n graphics.beginStroke(\"#000000\");\n }\n }\n graphics.beginFill(particle.color || \"#ff0000\").drawCircle(0, 0, particle.radius);\n const shape = this.pool.get(createjs.Shape, [graphics]);\n\n particle.body = shape;\n particle.graphics = graphics;\n }\n\n destroy() {\n super.destroy();\n this.stroke = null;\n }\n}\n","import Rectangle from \"../math/Rectangle\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nexport default class PixelRenderer extends BaseRenderer {\n constructor(element, rectangle) {\n super(element);\n\n this.context = this.element.getContext(\"2d\");\n this.imageData = null;\n this.rectangle = rectangle;\n this.createImageData(rectangle);\n\n this.name = \"PixelRenderer\";\n }\n\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n createImageData(rectangle) {\n this.rectangle = rectangle ? rectangle : new Rectangle(0, 0, this.element.width, this.element.height);\n this.imageData = this.context.createImageData(this.rectangle.width, this.rectangle.height);\n this.context.putImageData(this.imageData, this.rectangle.x, this.rectangle.y);\n }\n\n onProtonUpdate() {\n this.context.clearRect(this.rectangle.x, this.rectangle.y, this.rectangle.width, this.rectangle.height);\n this.imageData = this.context.getImageData(\n this.rectangle.x,\n this.rectangle.y,\n this.rectangle.width,\n this.rectangle.height\n );\n }\n\n onProtonUpdateAfter() {\n this.context.putImageData(this.imageData, this.rectangle.x, this.rectangle.y);\n }\n\n onParticleCreated(particle) {}\n\n onParticleUpdate(particle) {\n if (this.imageData) {\n this.setPixel(\n this.imageData,\n (particle.p.x - this.rectangle.x) >> 0,\n (particle.p.y - this.rectangle.y) >> 0,\n particle\n );\n }\n }\n\n setPixel(imagedata, x, y, particle) {\n const rgb = particle.rgb;\n if (x < 0 || x > this.element.width || y < 0 || y > this.elementwidth) return;\n\n const i = ((y >> 0) * imagedata.width + (x >> 0)) * 4;\n imagedata.data[i] = rgb.r;\n imagedata.data[i + 1] = rgb.g;\n imagedata.data[i + 2] = rgb.b;\n imagedata.data[i + 3] = particle.alpha * 255;\n }\n\n onParticleDead(particle) {}\n\n destroy() {\n super.destroy();\n this.stroke = null;\n this.context = null;\n this.imageData = null;\n this.rectangle = null;\n }\n}\n","import Mat3 from \"../math/Mat3\";\n\nexport default class MStack {\n constructor() {\n this.mats = [];\n this.size = 0;\n\n for (let i = 0; i < 20; i++) this.mats.push(Mat3.create([0, 0, 0, 0, 0, 0, 0, 0, 0]));\n }\n\n set(m, i) {\n if (i === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[i - 1], m, this.mats[i]);\n\n this.size = Math.max(this.size, i + 1);\n }\n\n push(m) {\n if (this.size === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[this.size - 1], m, this.mats[this.size]);\n\n this.size++;\n }\n\n pop() {\n if (this.size > 0) this.size--;\n }\n\n top() {\n return this.mats[this.size - 1];\n }\n}\n","import Mat3 from \"../math/Mat3\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nimport Util from \"../utils/Util\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport MStack from \"../utils/MStack\";\nimport DomUtil from \"../utils/DomUtil\";\nimport WebGLUtil from \"../utils/WebGLUtil\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default class WebGLRenderer extends BaseRenderer {\n constructor(element) {\n super(element);\n\n this.gl = this.element.getContext(\"experimental-webgl\", { antialias: true, stencil: false, depth: false });\n if (!this.gl) alert(\"Sorry your browser do not suppest WebGL!\");\n\n this.initVar();\n this.setMaxRadius();\n this.initShaders();\n this.initBuffers();\n\n this.gl.blendEquation(this.gl.FUNC_ADD);\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n this.gl.enable(this.gl.BLEND);\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.name = \"WebGLRenderer\";\n }\n\n init(proton) {\n super.init(proton);\n this.resize(this.element.width, this.element.height);\n }\n\n resize(width, height) {\n this.umat[4] = -2;\n this.umat[7] = 1;\n\n this.smat[0] = 1 / width;\n this.smat[4] = 1 / height;\n\n this.mstack.set(this.umat, 0);\n this.mstack.set(this.smat, 1);\n\n this.gl.viewport(0, 0, width, height);\n this.element.width = width;\n this.element.height = height;\n }\n\n setMaxRadius(radius) {\n this.circleCanvasURL = this.createCircle(radius);\n }\n\n getVertexShader() {\n const vsSource = [\n \"uniform vec2 viewport;\",\n \"attribute vec2 aVertexPosition;\",\n \"attribute vec2 aTextureCoord;\",\n \"uniform mat3 tMat;\",\n \"varying vec2 vTextureCoord;\",\n \"varying float alpha;\",\n \"void main() {\",\n \"vec3 v = tMat * vec3(aVertexPosition, 1.0);\",\n \"gl_Position = vec4(v.x, v.y, 0, 1);\",\n \"vTextureCoord = aTextureCoord;\",\n \"alpha = tMat[0][2];\",\n \"}\"\n ].join(\"\\n\");\n return vsSource;\n }\n\n getFragmentShader() {\n const fsSource = [\n \"precision mediump float;\",\n \"varying vec2 vTextureCoord;\",\n \"varying float alpha;\",\n \"uniform sampler2D uSampler;\",\n \"uniform vec4 color;\",\n \"uniform bool useTexture;\",\n \"uniform vec3 uColor;\",\n \"void main() {\",\n \"vec4 textureColor = texture2D(uSampler, vTextureCoord);\",\n \"gl_FragColor = textureColor * vec4(uColor, 1.0);\",\n \"gl_FragColor.w *= alpha;\",\n \"}\"\n ].join(\"\\n\");\n return fsSource;\n }\n\n initVar() {\n this.mstack = new MStack();\n this.umat = Mat3.create([2, 0, 1, 0, -2, 0, -1, 1, 1]);\n this.smat = Mat3.create([1 / 100, 0, 1, 0, 1 / 100, 0, 0, 0, 1]);\n this.texturebuffers = {};\n }\n\n blendEquation(A) {\n this.gl.blendEquation(this.gl[A]);\n }\n\n blendFunc(A, B) {\n this.gl.blendFunc(this.gl[A], this.gl[B]);\n }\n\n getShader(gl, str, fs) {\n const shader = fs ? gl.createShader(gl.FRAGMENT_SHADER) : gl.createShader(gl.VERTEX_SHADER);\n\n gl.shaderSource(shader, str);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n alert(gl.getShaderInfoLog(shader));\n return null;\n }\n\n return shader;\n }\n\n initShaders() {\n const fragmentShader = this.getShader(this.gl, this.getFragmentShader(), true);\n const vertexShader = this.getShader(this.gl, this.getVertexShader(), false);\n\n this.sprogram = this.gl.createProgram();\n this.gl.attachShader(this.sprogram, vertexShader);\n this.gl.attachShader(this.sprogram, fragmentShader);\n this.gl.linkProgram(this.sprogram);\n\n if (!this.gl.getProgramParameter(this.sprogram, this.gl.LINK_STATUS)) alert(\"Could not initialise shaders\");\n\n this.gl.useProgram(this.sprogram);\n this.sprogram.vpa = this.gl.getAttribLocation(this.sprogram, \"aVertexPosition\");\n this.sprogram.tca = this.gl.getAttribLocation(this.sprogram, \"aTextureCoord\");\n this.gl.enableVertexAttribArray(this.sprogram.tca);\n this.gl.enableVertexAttribArray(this.sprogram.vpa);\n\n this.sprogram.tMatUniform = this.gl.getUniformLocation(this.sprogram, \"tMat\");\n this.sprogram.samplerUniform = this.gl.getUniformLocation(this.sprogram, \"uSampler\");\n this.sprogram.useTex = this.gl.getUniformLocation(this.sprogram, \"useTexture\");\n this.sprogram.color = this.gl.getUniformLocation(this.sprogram, \"uColor\");\n this.gl.uniform1i(this.sprogram.useTex, 1);\n }\n\n initBuffers() {\n const vs = [0, 3, 1, 0, 2, 3];\n let idx;\n\n this.unitIBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(vs), this.gl.STATIC_DRAW);\n\n let i;\n let ids = [];\n for (i = 0; i < 100; i++) ids.push(i);\n idx = new Uint16Array(ids);\n\n this.unitI33 = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitI33);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n\n ids = [];\n for (i = 0; i < 100; i++) ids.push(i, i + 1, i + 2);\n idx = new Uint16Array(ids);\n\n this.stripBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.stripBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n }\n\n createCircle(raidus) {\n this.circleCanvasRadius = WebGLUtil.nhpot(Util.initValue(raidus, 32));\n const canvas = DomUtil.createCanvas(\"circle_canvas\", this.circleCanvasRadius * 2, this.circleCanvasRadius * 2);\n const context = canvas.getContext(\"2d\");\n\n context.beginPath();\n context.arc(this.circleCanvasRadius, this.circleCanvasRadius, this.circleCanvasRadius, 0, Math.PI * 2, true);\n context.closePath();\n context.fillStyle = \"#FFF\";\n context.fill();\n\n return canvas.toDataURL();\n }\n\n drawImg2Canvas(particle) {\n const _w = particle.body.width;\n const _h = particle.body.height;\n\n const _width = WebGLUtil.nhpot(particle.body.width);\n const _height = WebGLUtil.nhpot(particle.body.height);\n\n const _scaleX = particle.body.width / _width;\n const _scaleY = particle.body.height / _height;\n\n if (!this.texturebuffers[particle.data.src])\n this.texturebuffers[particle.data.src] = [\n this.gl.createTexture(),\n this.gl.createBuffer(),\n this.gl.createBuffer()\n ];\n\n particle.data.texture = this.texturebuffers[particle.data.src][0];\n particle.data.vcBuffer = this.texturebuffers[particle.data.src][1];\n particle.data.tcBuffer = this.texturebuffers[particle.data.src][2];\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n new Float32Array([0.0, 0.0, _scaleX, 0.0, 0.0, _scaleY, _scaleY, _scaleY]),\n this.gl.STATIC_DRAW\n );\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n new Float32Array([0.0, 0.0, _w, 0.0, 0.0, _h, _w, _h]),\n this.gl.STATIC_DRAW\n );\n\n const context = particle.data.canvas.getContext(\"2d\");\n const data = context.getImageData(0, 0, _width, _height);\n\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, data);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR_MIPMAP_NEAREST);\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n particle.data.textureLoaded = true;\n particle.data.textureWidth = _w;\n particle.data.textureHeight = _h;\n }\n\n onProtonUpdate() {\n // this.gl.clearColor(0, 0, 0, 1);\n // this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT);\n }\n\n onParticleCreated(particle) {\n particle.data.textureLoaded = false;\n particle.data.tmat = Mat3.create();\n particle.data.tmat[8] = 1;\n particle.data.imat = Mat3.create();\n particle.data.imat[8] = 1;\n\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n ImgUtil.getImgFromCache(this.circleCanvasURL, this.addImg2Body, particle);\n particle.data.oldScale = particle.radius / this.circleCanvasRadius;\n }\n }\n\n // private\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = img;\n particle.data.src = img.src;\n particle.data.canvas = ImgUtil.getCanvasFromCache(img);\n particle.data.oldScale = 1;\n\n this.drawImg2Canvas(particle);\n }\n\n onParticleUpdate(particle) {\n if (particle.data.textureLoaded) {\n this.updateMatrix(particle);\n\n this.gl.uniform3f(this.sprogram.color, particle.rgb.r / 255, particle.rgb.g / 255, particle.rgb.b / 255);\n this.gl.uniformMatrix3fv(this.sprogram.tMatUniform, false, this.mstack.top());\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.vpa, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.tca, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.uniform1i(this.sprogram.samplerUniform, 0);\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n\n this.gl.drawElements(this.gl.TRIANGLES, 6, this.gl.UNSIGNED_SHORT, 0);\n this.mstack.pop();\n }\n }\n\n onParticleDead(particle) {}\n\n updateMatrix(particle) {\n const moveOriginMatrix = WebGLUtil.makeTranslation(\n -particle.data.textureWidth / 2,\n -particle.data.textureHeight / 2\n );\n const translationMatrix = WebGLUtil.makeTranslation(particle.p.x, particle.p.y);\n\n const angel = particle.rotation * MathUtil.PI_180;\n const rotationMatrix = WebGLUtil.makeRotation(angel);\n\n const scale = particle.scale * particle.data.oldScale;\n const scaleMatrix = WebGLUtil.makeScale(scale, scale);\n let matrix = WebGLUtil.matrixMultiply(moveOriginMatrix, scaleMatrix);\n\n matrix = WebGLUtil.matrixMultiply(matrix, rotationMatrix);\n matrix = WebGLUtil.matrixMultiply(matrix, translationMatrix);\n\n Mat3.inverse(matrix, particle.data.imat);\n matrix[2] = particle.alpha;\n\n this.mstack.push(matrix);\n }\n\n destroy() {\n super.destroy();\n this.gl = null;\n this.mstack = null;\n this.umat = null;\n this.smat = null;\n this.texturebuffers = null;\n }\n}\n","import BaseRenderer from \"./BaseRenderer\";\n\nexport default class CustomRenderer extends BaseRenderer {\n constructor(element) {\n super(element);\n\n this.name = \"CustomRenderer\";\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default class LineZone extends Zone {\n constructor(x1, y1, x2, y2, direction) {\n super();\n\n if (x2 - x1 >= 0) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n } else {\n this.x1 = x2;\n this.y1 = y2;\n this.x2 = x1;\n this.y2 = y1;\n }\n\n this.dx = this.x2 - this.x1;\n this.dy = this.y2 - this.y1;\n\n this.minx = Math.min(this.x1, this.x2);\n this.miny = Math.min(this.y1, this.y2);\n this.maxx = Math.max(this.x1, this.x2);\n this.maxy = Math.max(this.y1, this.y2);\n\n this.dot = this.x2 * this.y1 - this.x1 * this.y2;\n this.xxyy = this.dx * this.dx + this.dy * this.dy;\n\n this.gradient = this.getGradient();\n this.length = this.getLength();\n this.direction = Util.initValue(direction, \">\");\n }\n\n getPosition() {\n this.random = Math.random();\n this.vector.x = this.x1 + this.random * this.length * Math.cos(this.gradient);\n this.vector.y = this.y1 + this.random * this.length * Math.sin(this.gradient);\n\n return this.vector;\n }\n\n getDirection(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = B === 0 ? 1 : B;\n\n if ((A * x + B * y + C) * D > 0) return true;\n else return false;\n }\n\n getDistance(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = A * x + B * y + C;\n\n return D / Math.sqrt(this.xxyy);\n }\n\n getSymmetric(v) {\n const tha2 = v.getGradient();\n const tha1 = this.getGradient();\n const tha = 2 * (tha1 - tha2);\n\n const oldx = v.x;\n const oldy = v.y;\n\n v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n\n return v;\n }\n\n getGradient() {\n return Math.atan2(this.dy, this.dx);\n }\n\n rangeOut(particle) {\n const angle = Math.abs(this.getGradient());\n\n if (angle <= MathUtil.PI / 4) {\n if (particle.p.x <= this.maxx && particle.p.x >= this.minx) return true;\n } else {\n if (particle.p.y <= this.maxy && particle.p.y >= this.miny) return true;\n }\n\n return false;\n }\n\n getLength() {\n return Math.sqrt(this.dx * this.dx + this.dy * this.dy);\n }\n\n crossing(particle) {\n if (this.crossType === \"dead\") {\n if (this.direction === \">\" || this.direction === \"R\" || this.direction === \"right\" || this.direction === \"down\") {\n if (!this.rangeOut(particle)) return;\n if (this.getDirection(particle.p.x, particle.p.y)) particle.dead = true;\n } else {\n if (!this.rangeOut(particle)) return;\n if (!this.getDirection(particle.p.x, particle.p.y)) particle.dead = true;\n }\n } else if (this.crossType === \"bound\") {\n if (!this.rangeOut(particle)) return;\n\n if (this.getDistance(particle.p.x, particle.p.y) <= particle.radius) {\n if (this.dx === 0) {\n particle.v.x *= -1;\n } else if (this.dy === 0) {\n particle.v.y *= -1;\n } else {\n this.getSymmetric(particle.v);\n }\n }\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, LineZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n}\n","import Zone from \"./Zone\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default class CircleZone extends Zone {\n constructor(x, y, radius) {\n super();\n\n this.x = x;\n this.y = y;\n this.radius = radius;\n this.angle = 0;\n this.center = { x, y };\n }\n\n getPosition() {\n this.angle = MathUtil.PIx2 * Math.random();\n this.randomRadius = Math.random() * this.radius;\n this.vector.x = this.x + this.randomRadius * Math.cos(this.angle);\n this.vector.y = this.y + this.randomRadius * Math.sin(this.angle);\n\n return this.vector;\n }\n\n setCenter(x, y) {\n this.center.x = x;\n this.center.y = y;\n }\n\n crossing(particle) {\n const d = particle.p.distanceTo(this.center);\n\n if (this.crossType === \"dead\") {\n if (d - particle.radius > this.radius) particle.dead = true;\n } else if (this.crossType === \"bound\") {\n if (d + particle.radius >= this.radius) this.getSymmetric(particle);\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, CircleZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n\n getSymmetric(particle) {\n const tha2 = particle.v.getGradient();\n const tha1 = this.getGradient(particle);\n\n const tha = 2 * (tha1 - tha2);\n const oldx = particle.v.x;\n const oldy = particle.v.y;\n\n particle.v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n particle.v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n }\n\n getGradient(particle) {\n return -MathUtil.PI_2 + Math.atan2(particle.p.y - this.center.y, particle.p.x - this.center.x);\n }\n}\n","import Zone from \"./Zone\";\n\nexport default class RectZone extends Zone {\n constructor(x, y, width, height) {\n super();\n\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n\n getPosition() {\n this.vector.x = this.x + Math.random() * this.width;\n this.vector.y = this.y + Math.random() * this.height;\n\n return this.vector;\n }\n\n crossing(particle) {\n // particle dead zone\n if (this.crossType === \"dead\") {\n if (particle.p.x + particle.radius < this.x) particle.dead = true;\n else if (particle.p.x - particle.radius > this.x + this.width) particle.dead = true;\n\n if (particle.p.y + particle.radius < this.y) particle.dead = true;\n else if (particle.p.y - particle.radius > this.y + this.height) particle.dead = true;\n }\n\n // particle bound zone\n else if (this.crossType === \"bound\") {\n if (particle.p.x - particle.radius < this.x) {\n particle.p.x = this.x + particle.radius;\n particle.v.x *= -1;\n } else if (particle.p.x + particle.radius > this.x + this.width) {\n particle.p.x = this.x + this.width - particle.radius;\n particle.v.x *= -1;\n }\n\n if (particle.p.y - particle.radius < this.y) {\n particle.p.y = this.y + particle.radius;\n particle.v.y *= -1;\n } else if (particle.p.y + particle.radius > this.y + this.height) {\n particle.p.y = this.y + this.height - particle.radius;\n particle.v.y *= -1;\n }\n }\n\n // particle cross zone\n else if (this.crossType === \"cross\") {\n if (particle.p.x + particle.radius < this.x && particle.v.x <= 0) {\n particle.p.x = this.x + this.width + particle.radius;\n } else if (particle.p.x - particle.radius > this.x + this.width && particle.v.x >= 0) {\n particle.p.x = this.x - particle.radius;\n }\n\n if (particle.p.y + particle.radius < this.y && particle.v.y <= 0) {\n particle.p.y = this.y + this.height + particle.radius;\n } else if (particle.p.y - particle.radius > this.y + this.height && particle.v.y >= 0) {\n particle.p.y = this.y - particle.radius;\n }\n }\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\n\nexport default class ImageZone extends Zone {\n constructor(imageData, x, y, d) {\n super();\n this.reset(imageData, x, y, d);\n }\n\n reset(imageData, x, y, d) {\n this.imageData = imageData;\n this.x = Util.initValue(x, 0);\n this.y = Util.initValue(y, 0);\n this.d = Util.initValue(d, 2);\n\n this.vectors = [];\n this.setVectors();\n }\n\n setVectors() {\n let i, j;\n const length1 = this.imageData.width;\n const length2 = this.imageData.height;\n\n for (i = 0; i < length1; i += this.d) {\n for (j = 0; j < length2; j += this.d) {\n let index = ((j >> 0) * length1 + (i >> 0)) * 4;\n\n if (this.imageData.data[index + 3] > 0) {\n this.vectors.push({ x: i + this.x, y: j + this.y });\n }\n }\n }\n\n return this.vector;\n }\n\n getBound(x, y) {\n const index = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n if (this.imageData.data[index + 3] > 0) return true;\n else return false;\n }\n\n getPosition() {\n const vector = Util.getRandFromArray(this.vectors);\n return this.vector.copy(vector);\n }\n\n getColor(x, y) {\n x -= this.x;\n y -= this.y;\n const i = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n\n return {\n r: this.imageData.data[i],\n g: this.imageData.data[i + 1],\n b: this.imageData.data[i + 2],\n a: this.imageData.data[i + 3]\n };\n }\n\n crossing(particle) {\n if (this.crossType === \"dead\") {\n if (this.getBound(particle.p.x - this.x, particle.p.y - this.y)) particle.dead = true;\n else particle.dead = false;\n } else if (this.crossType === \"bound\") {\n if (!this.getBound(particle.p.x - this.x, particle.p.y - this.y)) particle.v.negate();\n }\n }\n\n destroy() {\n super.destroy();\n this.imageData = null;\n }\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport CircleZone from \"../zone/CircleZone\";\nimport PointZone from \"../zone/PointZone\";\nimport LineZone from \"../zone/LineZone\";\nimport RectZone from \"../zone/RectZone\";\n\nexport default {\n addEventListener(proton, func) {\n proton.addEventListener(\"PROTON_UPDATE_AFTER\", () => func());\n },\n\n getStyle(color = \"#ff0000\") {\n const rgb = ColorUtil.hexToRgb(color);\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.5)`;\n },\n\n drawZone(proton, canvas, zone, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n if (zone instanceof PointZone) {\n context.beginPath();\n context.fillStyle = style;\n context.arc(zone.x, zone.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n } else if (zone instanceof LineZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.moveTo(zone.x1, zone.y1);\n context.lineTo(zone.x2, zone.y2);\n context.stroke();\n context.closePath();\n } else if (zone instanceof RectZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.drawRect(zone.x, zone.y, zone.width, zone.height);\n context.stroke();\n context.closePath();\n } else if (zone instanceof CircleZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.arc(zone.x, zone.y, zone.radius, 0, Math.PI * 2, true);\n context.stroke();\n context.closePath();\n }\n });\n },\n\n drawEmitter(proton, canvas, emitter, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n context.beginPath();\n context.fillStyle = style;\n context.arc(emitter.p.x, emitter.p.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n });\n }\n};\n","import Proton from \"./core/Proton\";\nimport Particle from \"./core/Particle\";\nimport Pool from \"./core/Pool\";\n\nimport Util from \"./utils/Util\";\nimport ColorUtil from \"./utils/ColorUtil\";\nimport MathUtil from \"./math/MathUtil\";\nimport Vector2D from \"./math/Vector2D\";\nimport Polar2D from \"./math/Polar2D\";\nimport Mat3 from \"./math/Mat3\";\nimport Span from \"./math/Span\";\nimport ArraySpan from \"./math/ArraySpan\";\nimport Rectangle from \"./math/Rectangle\";\nimport ease from \"./math/ease\";\n\nimport Rate from \"./initialize/Rate\";\nimport Initialize from \"./initialize/Initialize\";\nimport Life from \"./initialize/Life\";\nimport Position from \"./initialize/Position\";\nimport Velocity from \"./initialize/Velocity\";\nimport Mass from \"./initialize/Mass\";\nimport Radius from \"./initialize/Radius\";\nimport Body from \"./initialize/Body\";\n\nimport Behaviour from \"./behaviour/Behaviour\";\nimport Force from \"./behaviour/Force\";\nimport Attraction from \"./behaviour/Attraction\";\nimport RandomDrift from \"./behaviour/RandomDrift\";\nimport Gravity from \"./behaviour/Gravity\";\nimport Collision from \"./behaviour/Collision\";\nimport CrossZone from \"./behaviour/CrossZone\";\nimport Alpha from \"./behaviour/Alpha\";\nimport Scale from \"./behaviour/Scale\";\nimport Rotate from \"./behaviour/Rotate\";\nimport Color from \"./behaviour/Color\";\nimport Cyclone from \"./behaviour/Cyclone\";\nimport Repulsion from \"./behaviour/Repulsion\";\nimport GravityWell from \"./behaviour/GravityWell\";\n\nimport Emitter from \"./emitter/Emitter\";\nimport BehaviourEmitter from \"./emitter/BehaviourEmitter\";\nimport FollowEmitter from \"./emitter/FollowEmitter\";\n\nimport CanvasRenderer from \"./render/CanvasRenderer\";\nimport DomRenderer from \"./render/DomRenderer\";\nimport EaselRenderer from \"./render/EaselRenderer\";\nimport PixelRenderer from \"./render/PixelRenderer\";\nimport PixiRenderer from \"./render/PixiRenderer\";\nimport WebGLRenderer from \"./render/WebGLRenderer\";\nimport CustomRenderer from \"./render/CustomRenderer\";\n\nimport Zone from \"./zone/Zone\";\nimport LineZone from \"./zone/LineZone\";\nimport CircleZone from \"./zone/CircleZone\";\nimport PointZone from \"./zone/PointZone\";\nimport RectZone from \"./zone/RectZone\";\nimport ImageZone from \"./zone/ImageZone\";\n\nimport Debug from \"./debug/Debug\";\n\n// namespace\nProton.Particle = Particle;\nProton.Pool = Pool;\n\nProton.Util = Util;\nProton.ColorUtil = ColorUtil;\nProton.MathUtil = MathUtil;\nProton.Vector2D = Proton.Vector = Vector2D;\nProton.Polar2D = Proton.Polar = Polar2D;\nProton.ArraySpan = ArraySpan;\nProton.Rectangle = Rectangle;\nProton.Rate = Rate;\nProton.ease = ease;\nProton.Span = Span;\nProton.Mat3 = Mat3;\nProton.getSpan = (a, b, center) => new Span(a, b, center);\nProton.createArraySpan = ArraySpan.createArraySpan;\n\nProton.Initialize = Proton.Init = Initialize;\nProton.Life = Proton.L = Life;\nProton.Position = Proton.P = Position;\nProton.Velocity = Proton.V = Velocity;\nProton.Mass = Proton.M = Mass;\nProton.Radius = Proton.R = Radius;\nProton.Body = Proton.B = Body;\n\nProton.Behaviour = Behaviour;\nProton.Force = Proton.F = Force;\nProton.Attraction = Proton.A = Attraction;\nProton.RandomDrift = Proton.RD = RandomDrift;\nProton.Gravity = Proton.G = Gravity;\nProton.Collision = Collision;\nProton.CrossZone = CrossZone;\nProton.Alpha = Alpha;\nProton.Scale = Proton.S = Scale;\nProton.Rotate = Rotate;\nProton.Color = Color;\nProton.Repulsion = Repulsion;\nProton.Cyclone = Cyclone;\nProton.GravityWell = GravityWell;\n\nProton.Emitter = Emitter;\nProton.BehaviourEmitter = BehaviourEmitter;\nProton.FollowEmitter = FollowEmitter;\n\nProton.Zone = Zone;\nProton.LineZone = LineZone;\nProton.CircleZone = CircleZone;\nProton.PointZone = PointZone;\nProton.RectZone = RectZone;\nProton.ImageZone = ImageZone;\n\nProton.CanvasRenderer = CanvasRenderer;\nProton.DomRenderer = DomRenderer;\nProton.EaselRenderer = EaselRenderer;\nProton.PixiRenderer = PixiRenderer;\nProton.PixelRenderer = PixelRenderer;\nProton.WebGLRenderer = Proton.WebGlRenderer = WebGLRenderer;\nProton.CustomRenderer = CustomRenderer;\n\nProton.Debug = Debug;\nUtil.assign(Proton, ease);\n\n// export\nexport default Proton;\n"],"names":["WebGLUtil","length","i","tx","ty","angleInRadians","c","Math","cos","s","sin","sx","sy","a","b","a00","a01","a02","a10","a11","a12","a20","a21","a22","b00","b01","b02","b10","b11","b12","b20","b21","b22","DomUtil","createCanvas","id","width","height","position","dom","document","createElement","style","opacity","this","transform","createDiv","resize","marginLeft","marginTop","div","x","y","scale","rotate","willChange","css3","transform3d","key","val","bkey","charAt","toUpperCase","substr","imgsCache","canvasCache","canvasId","ImgUtil","context","image","rect","drawImage","imagedata","getImageData","clearRect","img","callback","param","src","Image","onload","e","target","canvas","getContext","Util","initValue","value","defaults","isArray","Object","prototype","toString","call","emptyArray","arr","toArray","getRandFromArray","floor","random","emptyObject","obj","ignore","indexOf","classApply","constructor","args","bind","apply","concat","destroyAll","destroy","assign","source","hasOwnProperty","idsMap","Puid","_index","_cache","type","undefined","getId","uid","getIdFromCache","isBody","isInner","getTarget","Pool","num","total","cache","get","params","p","__puid","pop","createOrClone","expire","getCache","push","create","clone","getCount","count","Stats","proton","container","emitterIndex","rendererIndex","update","body","add","emitter","getEmitter","renderer","getRenderer","str","emitters","emitSpeed","getEmitterPos","initializes","concatArr","behaviours","name","getCreatedNumber","pool","innerHTML","_this","bg","color","cssText","join","addEventListener","parentNode","appendChild","renderers","result","cpool","round","removeChild","EventDispatcher","_listeners","dispatchEvent","hasEventListener","removeEventListener","removeAllEventListeners","listener","splice","listeners","handler","PI","MathUtil","PIx2","PI_2","PI_180","N180_PI","Infinity","isInfinity","randomAToB","isInt","randomFloating","center","f","randomColor","slice","randomZone","display","k","digits","pow","degreeTransform","toColor16","Integration","calculate","particles","time","damping","eulerIntegrate","particle","sleep","old","copy","v","multiplyScalar","mass","clear","Proton","integrationType","now","then","elapsed","stats","EULER","integrator","_fps","_interval","DEFAULT_INTERVAL","addRenderer","render","init","removeRenderer","index","remove","addEmitter","parent","EMITTER_ADDED","removeEmitter","EMITTER_REMOVED","PROTON_UPDATE","USE_CLOCK","Date","getTime","amendChangeTabsBug","emittersUpdate","PROTON_UPDATE_AFTER","getAllParticles","destroyAllEmitters","destroyOther","setTimeout","set","fps","MEASURE","RK2","PARTICLE_CREATED","PARTICLE_UPDATE","PARTICLE_SLEEP","PARTICLE_DEAD","Rgb","r","g","reset","PropUtil","hasProp","setProp","props","prop","Span","getSpanValue","setVectorVal","conf","ease","easeLinear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","sqrt","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","getEasing","Vector2D","setX","setY","getGradient","atan2","w","addVectors","addXY","sub","subVectors","divideScalar","negate","dot","lengthSq","normalize","distanceTo","distanceToSquared","tha","dx","dy","lerp","alpha","equals","Particle","data","rgb","getDirection","life","age","dead","sprite","energy","radius","rotation","easing","removeAllBehaviours","applyBehaviours","max","applyBehaviour","addBehaviour","behaviour","parents","initialize","addBehaviours","removeBehaviour","ColorUtil","hexToRgb","h","hex16","substring","parseInt","rgbToHex","rbg","getHex16FromParticle","Number","Polar2D","abs","setR","setTha","toVector","getX","getY","Mat3","mat3","mat","Float32Array","mat1","mat2","multiply","inverse","multiplyVec2","m","vec","getValue","setSpanValue","pan","ArraySpan","_Span","_arr","createArraySpan","Rectangle","bottom","right","contains","Rate","numpan","timepan","numPan","timePan","startTime","nextTime","Initialize","Life","_Initialize","lifePan","Zone","vector","crossType","alert","getPosition","crossing","PointZone","_Zone","console","error","Position","zone","Velocity","rpan","thapan","rPan","thaPan","normalizeVelocity","vr","polar2d","Mass","massPan","Radius","oldRadius","Body","imageTarget","inner","Behaviour","normalizeForce","force","normalizeValue","Force","fx","fy","Attraction","targetPosition","radiusSq","attractionForce","RandomDrift","driftX","driftY","delay","panFoce","Gravity","_Force","Collision","collisionPool","delta","newPool","otherParticle","overlap","totalMass","averageMass1","averageMass2","distance","CrossZone","Alpha","same","alphaA","alphaB","Scale","scaleA","scaleB","Rotate","influence","rotationA","rotationB","Color","colorA","colorB","CHANGING","Cyclone","angle","setAngleAndForce","span","String","toLowerCase","cangle","cyclone","gradient","Repulsion","GravityWell","centerPoint","distanceVec","distanceSq","factor","InitializeUtil","bindEmitter","Emitter","_Particle","emitTime","totalTime","rate","emit","stoped","isNaN","stop","preEmit","oldStoped","oldEmitTime","oldTotalTime","step","removeAllParticles","addSelfInitialize","addInitialize","_len","arguments","rest","Array","_key","removeInitialize","initializer","removeAllInitializers","_len2","_key2","emitting","integrate","dispatch","event","bindEvent","createParticle","setupParticle","PIXIClass","BehaviourEmitter","_Emitter","selfBehaviours","addSelfBehaviour","removeSelfBehaviour","FollowEmitter","mouseTarget","window","_allowEmitting","initEventHandler","_this2","mousemoveHandler","mousemove","mousedownHandler","mousedown","mouseupHandler","mouseup","layerX","layerY","offsetX","offsetY","Types","__isImage","tagName","nodeName","BaseRenderer","element","stroke","circleConf","isCircle","setStroke","thinkness","_protonUpdateHandler","onProtonUpdate","_protonUpdateAfterHandler","onProtonUpdateAfter","_emitterAddedHandler","onEmitterAdded","_emitterRemovedHandler","onEmitterRemoved","_particleCreatedHandler","onParticleCreated","_particleUpdateHandler","onParticleUpdate","_particleDeadHandler","onParticleDead","CanvasRenderer","_BaseRenderer","bufferCache","addImg2Body","drawCircle","buffer","createBuffer","bufContext","globalAlpha","globalCompositeOperation","fillStyle","fillRect","save","translate","restore","beginPath","arc","strokeStyle","lineWidth","closePath","fill","size","DomRenderer","createBody","_assertThisInitialized","bodyReady","backgroundColor","createCircle","createSprite","borderRadius","borderColor","borderWidth","url","backgroundImage","EaselRenderer","addChild","scaleX","scaleY","graphics","regX","regY","createjs","Graphics","beginStroke","beginFill","shape","Shape","PixelRenderer","rectangle","imageData","createImageData","putImageData","setPixel","elementwidth","PixiRenderer","setColor","blendMode","setPIXI","PIXI","Sprite","createFromImage","from","fromImage","tint","anchor","endFill","MStack","mats","top","WebGLRenderer","gl","antialias","stencil","depth","initVar","setMaxRadius","initShaders","initBuffers","blendEquation","FUNC_ADD","blendFunc","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","enable","BLEND","umat","smat","mstack","viewport","circleCanvasURL","getVertexShader","getFragmentShader","texturebuffers","A","B","getShader","fs","shader","createShader","FRAGMENT_SHADER","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","vertexShader","sprogram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","useProgram","vpa","getAttribLocation","tca","enableVertexAttribArray","tMatUniform","getUniformLocation","samplerUniform","useTex","uniform1i","idx","unitIBuffer","bindBuffer","ELEMENT_ARRAY_BUFFER","bufferData","Uint16Array","STATIC_DRAW","ids","unitI33","stripBuffer","raidus","circleCanvasRadius","toDataURL","drawImg2Canvas","_w","_h","_width","_height","_scaleX","_scaleY","createTexture","texture","vcBuffer","tcBuffer","ARRAY_BUFFER","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_NEAREST","generateMipmap","textureLoaded","textureWidth","textureHeight","tmat","imat","oldScale","updateMatrix","uniform3f","uniformMatrix3fv","vertexAttribPointer","FLOAT","drawElements","TRIANGLES","UNSIGNED_SHORT","moveOriginMatrix","translationMatrix","angel","rotationMatrix","scaleMatrix","matrix","CustomRenderer","LineZone","x1","y1","x2","y2","direction","minx","min","miny","maxx","maxy","xxyy","getLength","getDistance","D","getSymmetric","tha2","oldx","oldy","rangeOut","CircleZone","randomRadius","setCenter","d","RectZone","ImageZone","vectors","setVectors","j","length1","length2","getBound","getColor","Debug","func","getStyle","drawZone","moveTo","lineTo","drawRect","drawEmitter","Vector","Polar","getSpan","Init","L","P","V","M","R","F","RD","G","S","WebGlRenderer"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"proton.min.js","sources":["../src/utils/WebGLUtil.js","../src/utils/DomUtil.js","../src/utils/ImgUtil.js","../src/utils/Util.js","../src/utils/Puid.js","../src/core/Pool.js","../src/debug/Stats.js","../src/events/EventDispatcher.js","../src/math/MathUtil.js","../src/math/Integration.js","../src/core/Proton.js","../src/utils/Rgb.js","../src/utils/PropUtil.js","../src/math/ease.js","../src/math/Vector2D.js","../src/core/Particle.js","../src/utils/ColorUtil.js","../src/math/Polar2D.js","../src/math/Mat3.js","../src/math/Span.js","../src/math/ArraySpan.js","../src/math/Rectangle.js","../src/initialize/Rate.js","../src/initialize/Initialize.js","../src/initialize/Life.js","../src/zone/Zone.js","../src/zone/PointZone.js","../src/initialize/Position.js","../src/initialize/Velocity.js","../src/initialize/Mass.js","../src/initialize/Radius.js","../src/initialize/Body.js","../src/behaviour/Behaviour.js","../src/behaviour/Force.js","../src/behaviour/Attraction.js","../src/behaviour/RandomDrift.js","../src/behaviour/Gravity.js","../src/behaviour/Collision.js","../src/behaviour/CrossZone.js","../src/behaviour/Alpha.js","../src/behaviour/Scale.js","../src/behaviour/Rotate.js","../src/behaviour/Color.js","../src/behaviour/Cyclone.js","../src/behaviour/Repulsion.js","../src/behaviour/GravityWell.js","../src/initialize/InitializeUtil.js","../src/emitter/Emitter.js","../src/render/PixiRenderer.js","../src/emitter/BehaviourEmitter.js","../src/emitter/FollowEmitter.js","../src/utils/Types.js","../src/render/BaseRenderer.js","../src/render/CanvasRenderer.js","../src/render/DomRenderer.js","../src/render/EaselRenderer.js","../src/render/PixelRenderer.js","../src/utils/MStack.js","../src/render/WebGLRenderer.js","../src/render/CustomRenderer.js","../src/zone/LineZone.js","../src/zone/CircleZone.js","../src/zone/RectZone.js","../src/zone/ImageZone.js","../src/debug/Debug.js","../src/index.js"],"sourcesContent":["export default {\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method ipot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Boolean}\n */\n ipot(length) {\n return (length & (length - 1)) === 0;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method nhpot\n *\n * @todo add description\n * @todo add length description\n *\n * @param {Number} length\n *\n * @return {Number}\n */\n nhpot(length) {\n --length;\n for (let i = 1; i < 32; i <<= 1) {\n length = length | (length >> i);\n }\n\n return length + 1;\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeTranslation\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} tx either 0 or 1\n * @param {Number} ty either 0 or 1\n *\n * @return {Object}\n */\n makeTranslation(tx, ty) {\n return [1, 0, 0, 0, 1, 0, tx, ty, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeRotation\n *\n * @todo add description\n * @todo add return description\n *\n * @param {Number} angleInRadians\n *\n * @return {Object}\n */\n makeRotation(angleInRadians) {\n let c = Math.cos(angleInRadians);\n let s = Math.sin(angleInRadians);\n\n return [c, -s, 0, s, c, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method makeScale\n *\n * @todo add description\n * @todo add tx, ty description\n * @todo add return description\n *\n * @param {Number} sx either 0 or 1\n * @param {Number} sy either 0 or 1\n *\n * @return {Object}\n */\n makeScale(sx, sy) {\n return [sx, 0, 0, 0, sy, 0, 0, 0, 1];\n },\n\n /**\n * @memberof Proton#Proton.WebGLUtil\n * @method matrixMultiply\n *\n * @todo add description\n * @todo add a, b description\n * @todo add return description\n *\n * @param {Object} a\n * @param {Object} b\n *\n * @return {Object}\n */\n matrixMultiply(a, b) {\n let a00 = a[0 * 3 + 0];\n let a01 = a[0 * 3 + 1];\n let a02 = a[0 * 3 + 2];\n let a10 = a[1 * 3 + 0];\n let a11 = a[1 * 3 + 1];\n let a12 = a[1 * 3 + 2];\n let a20 = a[2 * 3 + 0];\n let a21 = a[2 * 3 + 1];\n let a22 = a[2 * 3 + 2];\n let b00 = b[0 * 3 + 0];\n let b01 = b[0 * 3 + 1];\n let b02 = b[0 * 3 + 2];\n let b10 = b[1 * 3 + 0];\n let b11 = b[1 * 3 + 1];\n let b12 = b[1 * 3 + 2];\n let b20 = b[2 * 3 + 0];\n let b21 = b[2 * 3 + 1];\n let b22 = b[2 * 3 + 2];\n\n return [\n a00 * b00 + a01 * b10 + a02 * b20,\n a00 * b01 + a01 * b11 + a02 * b21,\n a00 * b02 + a01 * b12 + a02 * b22,\n a10 * b00 + a11 * b10 + a12 * b20,\n a10 * b01 + a11 * b11 + a12 * b21,\n a10 * b02 + a11 * b12 + a12 * b22,\n a20 * b00 + a21 * b10 + a22 * b20,\n a20 * b01 + a21 * b11 + a22 * b21,\n a20 * b02 + a21 * b12 + a22 * b22\n ];\n }\n};\n","export default {\n /**\n * Creates and returns a new canvas. The opacity is by default set to 0\n *\n * @memberof Proton#Proton.DomUtil\n * @method createCanvas\n *\n * @param {String} $id the canvas' id\n * @param {Number} $width the canvas' width\n * @param {Number} $height the canvas' height\n * @param {String} [$position=absolute] the canvas' position, default is 'absolute'\n *\n * @return {Object}\n */\n createCanvas(id, width, height, position = \"absolute\") {\n const dom = document.createElement(\"canvas\");\n\n dom.id = id;\n dom.width = width;\n dom.height = height;\n dom.style.opacity = 0;\n dom.style.position = position;\n this.transform(dom, -500, -500, 0, 0);\n\n return dom;\n },\n\n createDiv(id, width, height) {\n const dom = document.createElement(\"div\");\n\n dom.id = id;\n dom.style.position = \"absolute\";\n this.resize(dom, width, height);\n\n return dom;\n },\n\n resize(dom, width, height) {\n dom.style.width = width + \"px\";\n dom.style.height = height + \"px\";\n dom.style.marginLeft = -width / 2 + \"px\";\n dom.style.marginTop = -height / 2 + \"px\";\n },\n\n /**\n * Adds a transform: translate(), scale(), rotate() to a given div dom for all browsers\n *\n * @memberof Proton#Proton.DomUtil\n * @method transform\n *\n * @param {HTMLDivElement} div\n * @param {Number} $x\n * @param {Number} $y\n * @param {Number} $scale\n * @param {Number} $rotate\n */\n transform(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate(${x}px, ${y}px) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"transform\", transform);\n },\n\n transform3d(div, x, y, scale, rotate) {\n div.style.willChange = \"transform\";\n const transform = `translate3d(${x}px, ${y}px, 0) scale(${scale}) rotate(${rotate}deg)`;\n this.css3(div, \"backfaceVisibility\", \"hidden\");\n this.css3(div, \"transform\", transform);\n },\n\n css3(div, key, val) {\n const bkey = key.charAt(0).toUpperCase() + key.substr(1);\n\n div.style[`Webkit${bkey}`] = val;\n div.style[`Moz${bkey}`] = val;\n div.style[`O${bkey}`] = val;\n div.style[`ms${bkey}`] = val;\n div.style[`${key}`] = val;\n }\n};\n","import WebGLUtil from \"./WebGLUtil\";\nimport DomUtil from \"./DomUtil\";\n\nconst imgsCache = {};\nconst canvasCache = {};\nlet canvasId = 0;\n\nexport default {\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n context.drawImage(image, rect.x, rect.y);\n const imagedata = context.getImageData(rect.x, rect.y, rect.width, rect.height);\n context.clearRect(rect.x, rect.y, rect.width, rect.height);\n\n return imagedata;\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method getImgFromCache\n *\n * @todo add description\n * @todo describe func\n *\n * @param {Mixed} img\n * @param {Proton.Particle} particle\n * @param {Boolean} drawCanvas set to true if a canvas should be saved into particle.data.canvas\n * @param {Boolean} func\n */\n getImgFromCache(img, callback, param) {\n const src = typeof img === \"string\" ? img : img.src;\n\n if (imgsCache[src]) {\n callback(imgsCache[src], param);\n } else {\n const image = new Image();\n image.onload = e => {\n imgsCache[src] = e.target;\n callback(imgsCache[src], param);\n };\n\n image.src = src;\n }\n },\n\n getCanvasFromCache(img, callback, param) {\n const src = img.src;\n\n if (!canvasCache[src]) {\n const width = WebGLUtil.nhpot(img.width);\n const height = WebGLUtil.nhpot(img.height);\n\n const canvas = DomUtil.createCanvas(`proton_canvas_cache_${++canvasId}`, width, height);\n const context = canvas.getContext(\"2d\");\n context.drawImage(img, 0, 0, img.width, img.height);\n\n canvasCache[src] = canvas;\n }\n\n callback && callback(canvasCache[src], param);\n\n return canvasCache[src];\n }\n};\n","import ImgUtil from \"./ImgUtil\";\n\nexport default {\n /**\n * Returns the default if the value is null or undefined\n *\n * @memberof Proton#Proton.Util\n * @method initValue\n *\n * @param {Mixed} value a specific value, could be everything but null or undefined\n * @param {Mixed} defaults the default if the value is null or undefined\n */\n initValue(value, defaults) {\n value = value !== null && value !== undefined ? value : defaults;\n return value;\n },\n\n /**\n * Checks if the value is a valid array\n *\n * @memberof Proton#Proton.Util\n * @method isArray\n *\n * @param {Array} value Any array\n *\n * @returns {Boolean}\n */\n isArray(value) {\n return Object.prototype.toString.call(value) === \"[object Array]\";\n },\n\n /**\n * Destroyes the given array\n *\n * @memberof Proton#Proton.Util\n * @method emptyArray\n *\n * @param {Array} array Any array\n */\n emptyArray(arr) {\n if (arr) arr.length = 0;\n },\n\n toArray(arr) {\n return this.isArray(arr) ? arr : [arr];\n },\n\n sliceArray(arr1, index, arr2) {\n this.emptyArray(arr2);\n for (let i = index; i < arr1.length; i++) {\n arr2.push(arr1[i]);\n }\n },\n\n getRandFromArray(arr) {\n if (!arr) return null;\n return arr[Math.floor(arr.length * Math.random())];\n },\n\n /**\n * Destroyes the given object\n *\n * @memberof Proton#Proton.Util\n * @method emptyObject\n *\n * @param {Object} obj Any object\n */\n emptyObject(obj, ignore = null) {\n for (let key in obj) {\n if (ignore && ignore.indexOf(key) > -1) continue;\n delete obj[key];\n }\n },\n\n /**\n * Makes an instance of a class and binds the given array\n *\n * @memberof Proton#Proton.Util\n * @method classApply\n *\n * @param {Function} constructor A class to make an instance from\n * @param {Array} [args] Any array to bind it to the constructor\n *\n * @return {Object} The instance of constructor, optionally bind with args\n */\n classApply(constructor, args = null) {\n if (!args) {\n return new constructor();\n } else {\n const FactoryFunc = constructor.bind.apply(constructor, [null].concat(args));\n return new FactoryFunc();\n }\n },\n\n /**\n * This will get the image data. It could be necessary to create a Proton.Zone.\n *\n * @memberof Proton#Proton.Util\n * @method getImageData\n *\n * @param {HTMLCanvasElement} context any canvas, must be a 2dContext 'canvas.getContext('2d')'\n * @param {Object} image could be any dom image, e.g. document.getElementById('thisIsAnImgTag');\n * @param {Proton.Rectangle} rect\n */\n getImageData(context, image, rect) {\n return ImgUtil.getImageData(context, image, rect);\n },\n\n destroyAll(arr, param = null) {\n let i = arr.length;\n\n while (i--) {\n try {\n arr[i].destroy(param);\n } catch (e) {}\n\n delete arr[i];\n }\n\n arr.length = 0;\n },\n\n assign(target, source) {\n if (typeof Object.assign !== \"function\") {\n for (let key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n\n return target;\n } else {\n return Object.assign(target, source);\n }\n }\n};\n","const idsMap = {};\n\nconst Puid = {\n _index: 0,\n _cache: {},\n\n id(type) {\n if (idsMap[type] === undefined || idsMap[type] === null) idsMap[type] = 0;\n return `${type}_${idsMap[type]++}`;\n },\n\n getId(target) {\n let uid = this.getIdFromCache(target);\n if (uid) return uid;\n\n uid = `PUID_${this._index++}`;\n this._cache[uid] = target;\n return uid;\n },\n\n getIdFromCache(target) {\n let obj, id;\n\n for (id in this._cache) {\n obj = this._cache[id];\n\n if (obj === target) return id;\n if (this.isBody(obj, target) && obj.src === target.src) return id;\n }\n\n return null;\n },\n\n isBody(obj, target) {\n return typeof obj === \"object\" && typeof target === \"object\" && obj.isInner && target.isInner;\n },\n\n getTarget(uid) {\n return this._cache[uid];\n }\n};\n\nexport default Puid;\n","/**\n * Pool is the cache pool of the proton engine, it is very important.\n *\n * get(target, params, uid)\n * Class\n * uid = Puid.getId -> Puid save target cache\n * target.__puid = uid\n *\n * body\n * uid = Puid.getId -> Puid save target cache\n *\n *\n * expire(target)\n * cache[target.__puid] push target\n *\n */\nimport Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\n\nexport default class Pool {\n /**\n * @memberof! Proton#\n * @constructor\n * @alias Proton.Pool\n *\n * @todo add description\n * @todo add description of properties\n *\n * @property {Number} total\n * @property {Object} cache\n */\n constructor(num) {\n this.total = 0;\n this.cache = {};\n }\n\n /**\n * @todo add description\n *\n * @method get\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n get(target, params, uid) {\n let p;\n uid = uid || target.__puid || Puid.getId(target);\n\n if (this.cache[uid] && this.cache[uid].length > 0) {\n p = this.cache[uid].pop();\n } else {\n p = this.createOrClone(target, params);\n }\n\n p.__puid = target.__puid || uid;\n return p;\n }\n\n /**\n * @todo add description\n *\n * @method set\n * @memberof Proton#Proton.Pool\n *\n * @param {Object} target\n *\n * @return {Object}\n */\n expire(target) {\n return this.getCache(target.__puid).push(target);\n }\n\n /**\n * Creates a new class instance\n *\n * @todo add more documentation\n *\n * @method create\n * @memberof Proton#Proton.Pool\n *\n * @param {Object|Function} target any Object or Function\n * @param {Object} [params] just add if `target` is a function\n *\n * @return {Object}\n */\n createOrClone(target, params) {\n this.total++;\n\n if (this.create) {\n return this.create(target, params);\n } else if (typeof target === \"function\") {\n return Util.classApply(target, params);\n } else {\n return target.clone();\n }\n }\n\n /**\n * @todo add description - what is in the cache?\n *\n * @method getCount\n * @memberof Proton#Proton.Pool\n *\n * @return {Number}\n */\n getCount() {\n let count = 0;\n for (let id in this.cache) count += this.cache[id].length;\n return count++;\n }\n\n /**\n * Destroyes all items from Pool.cache\n *\n * @method destroy\n * @memberof Proton#Proton.Pool\n */\n destroy() {\n for (let id in this.cache) {\n this.cache[id].length = 0;\n delete this.cache[id];\n }\n }\n\n /**\n * Returns Pool.cache\n *\n * @method getCache\n * @memberof Proton#Proton.Pool\n * @private\n *\n * @param {Number} uid the unique id\n *\n * @return {Object}\n */\n getCache(uid = \"default\") {\n if (!this.cache[uid]) this.cache[uid] = [];\n return this.cache[uid];\n }\n}\n","export default class Stats {\n constructor(proton) {\n this.proton = proton;\n this.container = null;\n this.type = 1;\n\n this.emitterIndex = 0;\n this.rendererIndex = 0;\n }\n\n update(style, body) {\n this.add(style, body);\n\n const emitter = this.getEmitter();\n const renderer = this.getRenderer();\n let str = \"\";\n\n switch (this.type) {\n case 2:\n str += \"emitter:\" + this.proton.emitters.length + \"
\";\n if (emitter) str += \"em speed:\" + emitter.emitSpeed + \"
\";\n if (emitter) str += \"pos:\" + this.getEmitterPos(emitter);\n break;\n\n case 3:\n if (emitter) str += \"initializes:\" + emitter.initializes.length + \"
\";\n if (emitter)\n str += '' + this.concatArr(emitter.initializes) + \"
\";\n if (emitter) str += \"behaviours:\" + emitter.behaviours.length + \"
\";\n if (emitter) str += '' + this.concatArr(emitter.behaviours) + \"
\";\n break;\n\n case 4:\n if (renderer) str += renderer.name + \"
\";\n if (renderer) str += \"body:\" + this.getCreatedNumber(renderer) + \"
\";\n break;\n\n default:\n str += \"particles:\" + this.proton.getCount() + \"
\";\n str += \"pool:\" + this.proton.pool.getCount() + \"
\";\n str += \"total:\" + this.proton.pool.total;\n }\n\n this.container.innerHTML = str;\n }\n\n add(style, body) {\n if (!this.container) {\n this.type = 1;\n\n this.container = document.createElement(\"div\");\n this.container.style.cssText = [\n \"position:absolute;bottom:0px;left:0;cursor:pointer;\",\n \"opacity:0.9;z-index:10000;padding:10px;font-size:12px;font-family:Helvetica,Arial,sans-serif;\",\n \"width:120px;height:50px;background-color:#002;color:#0ff;\"\n ].join(\"\");\n\n this.container.addEventListener(\n \"click\",\n e => {\n this.type++;\n if (this.type > 4) this.type = 1;\n },\n false\n );\n\n let bg, color;\n switch (style) {\n case 2:\n bg = \"#201\";\n color = \"#f08\";\n break;\n\n case 3:\n bg = \"#020\";\n color = \"#0f0\";\n break;\n\n default:\n bg = \"#002\";\n color = \"#0ff\";\n }\n\n this.container.style[\"background-color\"] = bg;\n this.container.style[\"color\"] = color;\n }\n\n if (!this.container.parentNode) {\n body = body || this.body || document.body;\n body.appendChild(this.container);\n }\n }\n\n getEmitter() {\n return this.proton.emitters[this.emitterIndex];\n }\n\n getRenderer() {\n return this.proton.renderers[this.rendererIndex];\n }\n\n concatArr(arr) {\n let result = \"\";\n if (!arr || !arr.length) return result;\n\n for (let i = 0; i < arr.length; i++) {\n result += (arr[i].name || \"\").substr(0, 1) + \".\";\n }\n\n return result;\n }\n\n getCreatedNumber(renderer) {\n return renderer.pool.total || (renderer.cpool && renderer.cpool.total) || 0;\n }\n\n getEmitterPos(e) {\n return Math.round(e.p.x) + \",\" + Math.round(e.p.y);\n }\n\n destroy() {\n if (this.container && this.container.parentNode) {\n const body = this.body || document.body;\n body.removeChild(this.container);\n }\n\n this.proton = null;\n this.container = null;\n }\n}\n","/*\n * EventDispatcher\n * This code reference since http://createjs.com/.\n *\n **/\n\nexport default class EventDispatcher {\n constructor() {\n this._listeners = null;\n }\n\n static bind(target) {\n target.prototype.dispatchEvent = EventDispatcher.prototype.dispatchEvent;\n target.prototype.hasEventListener = EventDispatcher.prototype.hasEventListener;\n target.prototype.addEventListener = EventDispatcher.prototype.addEventListener;\n target.prototype.removeEventListener = EventDispatcher.prototype.removeEventListener;\n target.prototype.removeAllEventListeners = EventDispatcher.prototype.removeAllEventListeners;\n }\n\n addEventListener(type, listener) {\n if (!this._listeners) {\n this._listeners = {};\n } else {\n this.removeEventListener(type, listener);\n }\n\n if (!this._listeners[type]) this._listeners[type] = [];\n this._listeners[type].push(listener);\n\n return listener;\n }\n\n removeEventListener(type, listener) {\n if (!this._listeners) return;\n if (!this._listeners[type]) return;\n\n const arr = this._listeners[type];\n const length = arr.length;\n\n for (let i = 0; i < length; i++) {\n if (arr[i] === listener) {\n if (length === 1) {\n delete this._listeners[type];\n }\n\n // allows for faster checks.\n else {\n arr.splice(i, 1);\n }\n\n break;\n }\n }\n }\n\n removeAllEventListeners(type) {\n if (!type) this._listeners = null;\n else if (this._listeners) delete this._listeners[type];\n }\n\n dispatchEvent(type, args) {\n let result = false;\n const listeners = this._listeners;\n\n if (type && listeners) {\n let arr = listeners[type];\n if (!arr) return result;\n\n // arr = arr.slice();\n // to avoid issues with items being removed or added during the dispatch\n\n let handler;\n let i = arr.length;\n while (i--) {\n handler = arr[i];\n result = result || handler(args);\n }\n }\n\n return !!result;\n }\n\n hasEventListener(type) {\n const listeners = this._listeners;\n return !!(listeners && listeners[type]);\n }\n}\n","const PI = 3.1415926;\nconst INFINITY = Infinity;\n\nconst MathUtil = {\n PI: PI,\n PIx2: PI * 2,\n PI_2: PI / 2,\n PI_180: PI / 180,\n N180_PI: 180 / PI,\n Infinity: -999,\n\n isInfinity(num) {\n return num === this.Infinity || num === INFINITY;\n },\n\n randomAToB(a, b, isInt = false) {\n if (!isInt) return a + Math.random() * (b - a);\n else return ((Math.random() * (b - a)) >> 0) + a;\n },\n\n randomFloating(center, f, isInt) {\n return this.randomAToB(center - f, center + f, isInt);\n },\n\n randomColor() {\n return \"#\" + (\"00000\" + ((Math.random() * 0x1000000) << 0).toString(16)).slice(-6);\n },\n\n randomZone(display) {},\n\n floor(num, k = 4) {\n const digits = Math.pow(10, k);\n return Math.floor(num * digits) / digits;\n },\n\n degreeTransform(a) {\n return (a * PI) / 180;\n },\n\n toColor16(num) {\n return `#${num.toString(16)}`;\n }\n};\n\nexport default MathUtil;\n","export default class Integration {\n constructor(type) {\n this.type = type;\n }\n\n calculate(particles, time, damping) {\n this.eulerIntegrate(particles, time, damping);\n }\n\n // Euler Integrate\n // https://rosettacode.org/wiki/Euler_method\n eulerIntegrate(particle, time, damping) {\n if (!particle.sleep) {\n particle.old.p.copy(particle.p);\n particle.old.v.copy(particle.v);\n\n particle.a.multiplyScalar(1 / particle.mass);\n particle.v.add(particle.a.multiplyScalar(time));\n particle.p.add(particle.old.v.multiplyScalar(time));\n\n if (damping) particle.v.multiplyScalar(damping);\n\n particle.a.clear();\n }\n }\n}\n","import Pool from \"./Pool\";\nimport Util from \"../utils/Util\";\nimport Stats from \"../debug/Stats\";\nimport EventDispatcher from \"../events/EventDispatcher\";\nimport MathUtil from \"../math/MathUtil\";\nimport Integration from \"../math/Integration\";\n\nexport default class Proton {\n static USE_CLOCK = false;\n\n // measure 1:100\n static MEASURE = 100;\n static EULER = \"euler\";\n static RK2 = \"runge-kutta2\";\n\n // event name\n static PARTICLE_CREATED = \"PARTICLE_CREATED\";\n static PARTICLE_UPDATE = \"PARTICLE_UPDATE\";\n static PARTICLE_SLEEP = \"PARTICLE_SLEEP\";\n static PARTICLE_DEAD = \"PARTICLE_DEAD\";\n\n static EMITTER_ADDED = \"EMITTER_ADDED\";\n static EMITTER_REMOVED = \"EMITTER_REMOVED\";\n\n static PROTON_UPDATE = \"PROTON_UPDATE\";\n static PROTON_UPDATE_AFTER = \"PROTON_UPDATE_AFTER\";\n static DEFAULT_INTERVAL = 0.0167;\n\n static amendChangeTabsBug = true;\n\n /**\n * The constructor to add emitters\n *\n * @constructor Proton\n *\n * @todo proParticleCount is not in use\n * @todo add more documentation of the single properties and parameters\n *\n * @param {Number} [proParticleCount] not in use?\n * @param {Number} [integrationType=Proton.EULER]\n *\n * @property {String} [integrationType=Proton.EULER]\n * @property {Array} emitters All added emitter\n * @property {Array} renderers All added renderer\n * @property {Number} time The active time\n * @property {Number} oldtime The old time\n */\n constructor(integrationType) {\n this.emitters = [];\n this.renderers = [];\n\n this.time = 0;\n this.now = 0;\n this.then = 0;\n this.elapsed = 0;\n\n this.stats = new Stats(this);\n this.pool = new Pool(80);\n\n this.integrationType = Util.initValue(integrationType, Proton.EULER);\n this.integrator = new Integration(this.integrationType);\n\n this._fps = \"auto\";\n this._interval = Proton.DEFAULT_INTERVAL;\n }\n\n set fps(fps) {\n this._fps = fps;\n this._interval = fps === \"auto\" ? Proton.DEFAULT_INTERVAL : MathUtil.floor(1 / fps, 7);\n }\n\n get fps() {\n return this._fps;\n }\n\n /**\n * add a type of Renderer\n *\n * @method addRenderer\n * @memberof Proton\n * @instance\n *\n * @param {Renderer} render\n */\n addRenderer(render) {\n render.init(this);\n this.renderers.push(render);\n }\n\n /**\n * @name add a type of Renderer\n *\n * @method addRenderer\n * @param {Renderer} render\n */\n removeRenderer(render) {\n const index = this.renderers.indexOf(render);\n this.renderers.splice(index, 1);\n render.remove(this);\n }\n\n /**\n * add the Emitter\n *\n * @method addEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Emitter} emitter\n */\n addEmitter(emitter) {\n this.emitters.push(emitter);\n emitter.parent = this;\n\n this.dispatchEvent(Proton.EMITTER_ADDED, emitter);\n }\n\n /**\n * Removes an Emitter\n *\n * @method removeEmitter\n * @memberof Proton\n * @instance\n *\n * @param {Proton.Emitter} emitter\n */\n removeEmitter(emitter) {\n const index = this.emitters.indexOf(emitter);\n this.emitters.splice(index, 1);\n emitter.parent = null;\n\n this.dispatchEvent(Proton.EMITTER_REMOVED, emitter);\n }\n\n /**\n * Updates all added emitters\n *\n * @method update\n * @memberof Proton\n * @instance\n */\n update() {\n // 'auto' is the default browser refresh rate, the vast majority is 60fps\n if (this._fps === \"auto\") {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n\n if (Proton.USE_CLOCK) {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n // Fix bugs such as chrome browser switching tabs causing excessive time difference\n this.amendChangeTabsBug();\n\n if (this.elapsed > 0) this.emittersUpdate(this.elapsed);\n this.then = this.now;\n } else {\n this.emittersUpdate(Proton.DEFAULT_INTERVAL);\n }\n\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n\n // If the fps frame rate is set\n else {\n if (!this.then) this.then = new Date().getTime();\n this.now = new Date().getTime();\n this.elapsed = (this.now - this.then) * 0.001;\n\n if (this.elapsed > this._interval) {\n this.dispatchEvent(Proton.PROTON_UPDATE);\n this.emittersUpdate(this._interval);\n // https://stackoverflow.com/questions/19764018/controlling-fps-with-requestanimationframe\n this.then = this.now - (this.elapsed % this._interval) * 1000;\n this.dispatchEvent(Proton.PROTON_UPDATE_AFTER);\n }\n }\n }\n\n emittersUpdate(elapsed) {\n let i = this.emitters.length;\n while (i--) this.emitters[i].update(elapsed);\n }\n\n /**\n * @todo add description\n *\n * @method amendChangeTabsBug\n * @memberof Proton\n * @instance\n */\n amendChangeTabsBug() {\n if (!Proton.amendChangeTabsBug) return;\n if (this.elapsed > 0.5) {\n this.then = new Date().getTime();\n this.elapsed = 0;\n }\n }\n\n /**\n * Counts all particles from all emitters\n *\n * @method getCount\n * @memberof Proton\n * @instance\n */\n getCount() {\n let total = 0;\n let i = this.emitters.length;\n\n while (i--) total += this.emitters[i].particles.length;\n return total;\n }\n\n getAllParticles() {\n let particles = [];\n let i = this.emitters.length;\n\n while (i--) particles = particles.concat(this.emitters[i].particles);\n return particles;\n }\n\n destroyAllEmitters() {\n Util.destroyAll(this.emitters);\n }\n\n /**\n * Destroys everything related to this Proton instance. This includes all emitters, and all properties\n *\n * @method destroy\n * @memberof Proton\n * @instance\n */\n destroy(remove = false) {\n const destroyOther = () => {\n this.time = 0;\n this.then = 0;\n this.pool.destroy();\n this.stats.destroy();\n\n Util.destroyAll(this.emitters);\n Util.destroyAll(this.renderers, this.getAllParticles());\n\n this.integrator = null;\n this.renderers = null;\n this.emitters = null;\n this.stats = null;\n this.pool = null;\n };\n\n if (remove) {\n setTimeout(destroyOther, 200);\n } else {\n destroyOther();\n }\n }\n}\n\nEventDispatcher.bind(Proton);\n","export default class Rgb {\n constructor(r = 255, g = 255, b = 255) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n\n reset() {\n this.r = 255;\n this.g = 255;\n this.b = 255;\n }\n}\n","export default {\n hasProp(target, key) {\n if (!target) return false;\n return target[key] !== undefined;\n // return obj.hasOwnProperty(key);\n },\n\n /**\n * set the prototype in a given prototypeObject\n *\n * @memberof Proton#Proton.Util\n * @method setProp\n *\n * @todo add description for param `target`\n * @todo translate desription from chinese to english\n *\n * @param {Object} target\n * @param {Object} prototypeObject An object of single prototypes\n *\n * @return {Object} target\n */\n setProp(target, props) {\n for (let prop in props) {\n if (target.hasOwnProperty(prop)) {\n target[prop] = Span.getSpanValue(props[prop]);\n }\n }\n\n return target;\n },\n\n /**\n * @memberof Proton#Proton.Util\n * @method setVectorVal\n *\n * @todo add description for param `target`\n * @todo add description for param `conf`\n * @todo add description for function\n *\n * @param {Object} target\n * @param {Object} conf\n */\n setVectorVal(particle, conf = null) {\n if (!conf) return;\n\n if (this.hasProp(conf, \"x\")) particle.p.x = conf[\"x\"];\n if (this.hasProp(conf, \"y\")) particle.p.y = conf[\"y\"];\n\n if (this.hasProp(conf, \"vx\")) particle.v.x = conf[\"vx\"];\n if (this.hasProp(conf, \"vy\")) particle.v.y = conf[\"vy\"];\n\n if (this.hasProp(conf, \"ax\")) particle.a.x = conf[\"ax\"];\n if (this.hasProp(conf, \"ay\")) particle.a.y = conf[\"ay\"];\n\n if (this.hasProp(conf, \"p\")) particle.p.copy(conf[\"p\"]);\n if (this.hasProp(conf, \"v\")) particle.v.copy(conf[\"v\"]);\n if (this.hasProp(conf, \"a\")) particle.a.copy(conf[\"a\"]);\n\n if (this.hasProp(conf, \"position\")) particle.p.copy(conf[\"position\"]);\n if (this.hasProp(conf, \"velocity\")) particle.v.copy(conf[\"velocity\"]);\n if (this.hasProp(conf, \"accelerate\")) particle.a.copy(conf[\"accelerate\"]);\n }\n};\n","import MathUtil from \"./MathUtil\";\n\nexport default {\n easeLinear(value) {\n return value;\n },\n\n easeInQuad(value) {\n return Math.pow(value, 2);\n },\n\n easeOutQuad(value) {\n return -(Math.pow(value - 1, 2) - 1);\n },\n\n easeInOutQuad(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 2);\n\n return -0.5 * ((value -= 2) * value - 2);\n },\n\n easeInCubic(value) {\n return Math.pow(value, 3);\n },\n\n easeOutCubic(value) {\n return Math.pow(value - 1, 3) + 1;\n },\n\n easeInOutCubic(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 3);\n\n return 0.5 * (Math.pow(value - 2, 3) + 2);\n },\n\n easeInQuart(value) {\n return Math.pow(value, 4);\n },\n\n easeOutQuart(value) {\n return -(Math.pow(value - 1, 4) - 1);\n },\n\n easeInOutQuart(value) {\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(value, 4);\n\n return -0.5 * ((value -= 2) * Math.pow(value, 3) - 2);\n },\n\n easeInSine(value) {\n return -Math.cos(value * MathUtil.PI_2) + 1;\n },\n\n easeOutSine(value) {\n return Math.sin(value * MathUtil.PI_2);\n },\n\n easeInOutSine(value) {\n return -0.5 * (Math.cos(Math.PI * value) - 1);\n },\n\n easeInExpo(value) {\n return value === 0 ? 0 : Math.pow(2, 10 * (value - 1));\n },\n\n easeOutExpo(value) {\n return value === 1 ? 1 : -Math.pow(2, -10 * value) + 1;\n },\n\n easeInOutExpo(value) {\n if (value === 0) return 0;\n\n if (value === 1) return 1;\n\n if ((value /= 0.5) < 1) return 0.5 * Math.pow(2, 10 * (value - 1));\n\n return 0.5 * (-Math.pow(2, -10 * --value) + 2);\n },\n\n easeInCirc(value) {\n return -(Math.sqrt(1 - value * value) - 1);\n },\n\n easeOutCirc(value) {\n return Math.sqrt(1 - Math.pow(value - 1, 2));\n },\n\n easeInOutCirc(value) {\n if ((value /= 0.5) < 1) return -0.5 * (Math.sqrt(1 - value * value) - 1);\n return 0.5 * (Math.sqrt(1 - (value -= 2) * value) + 1);\n },\n\n easeInBack(value) {\n let s = 1.70158;\n return value * value * ((s + 1) * value - s);\n },\n\n easeOutBack(value) {\n let s = 1.70158;\n return (value = value - 1) * value * ((s + 1) * value + s) + 1;\n },\n\n easeInOutBack(value) {\n let s = 1.70158;\n if ((value /= 0.5) < 1) return 0.5 * (value * value * (((s *= 1.525) + 1) * value - s));\n return 0.5 * ((value -= 2) * value * (((s *= 1.525) + 1) * value + s) + 2);\n },\n\n getEasing(ease) {\n if (typeof ease === \"function\") return ease;\n else return this[ease] || this.easeLinear;\n }\n};\n","import MathUtil from \"../math/MathUtil\";\n\nexport default class Vector2D {\n constructor(x, y) {\n this.x = x || 0;\n this.y = y || 0;\n }\n\n set(x, y) {\n this.x = x;\n this.y = y;\n return this;\n }\n\n setX(x) {\n this.x = x;\n return this;\n }\n\n setY(y) {\n this.y = y;\n return this;\n }\n\n getGradient() {\n if (this.x !== 0) return Math.atan2(this.y, this.x);\n else if (this.y > 0) return MathUtil.PI_2;\n else if (this.y < 0) return -MathUtil.PI_2;\n }\n\n copy(v) {\n this.x = v.x;\n this.y = v.y;\n\n return this;\n }\n\n add(v, w) {\n if (w !== undefined) {\n return this.addVectors(v, w);\n }\n\n this.x += v.x;\n this.y += v.y;\n\n return this;\n }\n\n addXY(a, b) {\n this.x += a;\n this.y += b;\n\n return this;\n }\n\n addVectors(a, b) {\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n\n return this;\n }\n\n sub(v, w) {\n if (w !== undefined) {\n return this.subVectors(v, w);\n }\n\n this.x -= v.x;\n this.y -= v.y;\n\n return this;\n }\n\n subVectors(a, b) {\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n\n return this;\n }\n\n divideScalar(s) {\n if (s !== 0) {\n this.x /= s;\n this.y /= s;\n } else {\n this.set(0, 0);\n }\n\n return this;\n }\n\n multiplyScalar(s) {\n this.x *= s;\n this.y *= s;\n\n return this;\n }\n\n negate() {\n return this.multiplyScalar(-1);\n }\n\n dot(v) {\n return this.x * v.x + this.y * v.y;\n }\n\n lengthSq() {\n return this.x * this.x + this.y * this.y;\n }\n\n length() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n }\n\n normalize() {\n return this.divideScalar(this.length());\n }\n\n distanceTo(v) {\n return Math.sqrt(this.distanceToSquared(v));\n }\n\n rotate(tha) {\n const x = this.x;\n const y = this.y;\n\n this.x = x * Math.cos(tha) + y * Math.sin(tha);\n this.y = -x * Math.sin(tha) + y * Math.cos(tha);\n\n return this;\n }\n\n distanceToSquared(v) {\n const dx = this.x - v.x;\n const dy = this.y - v.y;\n\n return dx * dx + dy * dy;\n }\n\n lerp(v, alpha) {\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n\n return this;\n }\n\n equals(v) {\n return v.x === this.x && v.y === this.y;\n }\n\n clear() {\n this.x = 0.0;\n this.y = 0.0;\n return this;\n }\n\n clone() {\n return new Vector2D(this.x, this.y);\n }\n}\n","/** @typedef {import('../behaviour/Behaviour')} Behaviour */\n/** @typedef {import('../math/Vector2D')} Vector2D */\n/** @typedef {import('../utils/Rgb')} Rgb */\nimport Rgb from \"../utils/Rgb\";\nimport Puid from \"../utils/Puid\";\nimport Util from \"../utils/Util\";\nimport PropUtil from \"../utils/PropUtil\";\nimport ease from \"../math/ease\";\nimport Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default class Particle {\n /** @type string */\n id = \"\";\n\n /** @type {{p:Vector2D,v:Vector2D,a:Vector2D}} */\n old = null;\n\n /** @type {object} */\n data = null;\n\n /** @type {Behaviour[]} */\n behaviours = null;\n\n /** @type {Vector2D} */\n p = null;\n\n /** @type {Vector2D} */\n v = null;\n\n /** @type {Vector2D} */\n a = null;\n\n /** @type {Rgb} */\n rgb = null;\n\n /**\n * the Particle class\n *\n * @class Proton.Particle\n * @constructor\n * @param {Object} pObj the parameters object;\n * for example {life:3,dead:false}\n */\n constructor(conf) {\n /**\n * The particle's id;\n * @property id\n * @type {string}\n */\n this.name = \"Particle\";\n this.id = Puid.id(this.name);\n this.old = {};\n this.data = {};\n this.behaviours = [];\n\n this.p = new Vector2D();\n this.v = new Vector2D();\n this.a = new Vector2D();\n this.old.p = new Vector2D();\n this.old.v = new Vector2D();\n this.old.a = new Vector2D();\n\n this.rgb = new Rgb();\n this.reset();\n conf && PropUtil.setProp(this, conf);\n }\n\n getDirection() {\n return Math.atan2(this.v.x, -this.v.y) * MathUtil.N180_PI;\n }\n\n reset() {\n this.life = Infinity;\n this.age = 0;\n\n this.dead = false;\n this.sleep = false;\n this.body = null;\n this.sprite = null;\n this.parent = null;\n\n this.energy = 1; // Energy Loss\n this.mass = 1;\n this.radius = 10;\n this.alpha = 1;\n this.scale = 1;\n this.rotation = 0;\n this.color = null;\n\n this.p.set(0, 0);\n this.v.set(0, 0);\n this.a.set(0, 0);\n this.old.p.set(0, 0);\n this.old.v.set(0, 0);\n this.old.a.set(0, 0);\n this.easing = ease.easeLinear;\n\n this.rgb.reset();\n Util.emptyObject(this.data);\n this.removeAllBehaviours();\n\n return this;\n }\n\n update(time, index) {\n if (!this.sleep) {\n this.age += time;\n this.applyBehaviours(time, index);\n }\n\n if (this.age < this.life) {\n const scale = this.easing(this.age / this.life);\n this.energy = Math.max(1 - scale, 0);\n } else {\n this.destroy();\n }\n }\n\n applyBehaviours(time, index) {\n const length = this.behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.behaviours[i] && this.behaviours[i].applyBehaviour(this, time, index);\n }\n }\n\n /**\n * @param {Behaviour} behaviour\n */\n addBehaviour(behaviour) {\n this.behaviours.push(behaviour);\n\n if (behaviour.hasOwnProperty(\"parents\")) behaviour.parents.push(this);\n behaviour.initialize(this);\n }\n\n /**\n * @param {Behaviour[]} behaviours\n */\n addBehaviours(behaviours) {\n const length = behaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.addBehaviour(behaviours[i]);\n }\n }\n\n removeBehaviour(behaviour) {\n const index = this.behaviours.indexOf(behaviour);\n\n if (index > -1) {\n const behaviour = this.behaviours.splice(index, 1);\n behaviour.parents = null;\n }\n }\n\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n /**\n * Destory this particle\n * @method destroy\n */\n destroy() {\n this.removeAllBehaviours();\n this.energy = 0;\n this.dead = true;\n this.parent = null;\n }\n}\n","export default {\n /**\n * @typedef {Object} rgbObject\n * @property {Number} r red value\n * @property {Number} g green value\n * @property {Number} b blue value\n */\n /**\n * converts a hex value to a rgb object\n *\n * @memberof Proton#Proton.Util\n * @method hexToRgb\n *\n * @param {String} h any hex value, e.g. #000000 or 000000 for black\n *\n * @return {rgbObject}\n */\n hexToRgb(h) {\n const hex16 = h.charAt(0) === \"#\" ? h.substring(1, 7) : h;\n const r = parseInt(hex16.substring(0, 2), 16);\n const g = parseInt(hex16.substring(2, 4), 16);\n const b = parseInt(hex16.substring(4, 6), 16);\n\n return { r, g, b };\n },\n\n /**\n * converts a rgb value to a rgb string\n *\n * @memberof Proton#Proton.Util\n * @method rgbToHex\n *\n * @param {Object | Proton.hexToRgb} rgb a rgb object like in {@link Proton#Proton.}\n *\n * @return {String} rgb()\n */\n rgbToHex(rbg) {\n return `rgb(${rbg.r}, ${rbg.g}, ${rbg.b})`;\n },\n\n getHex16FromParticle(p) {\n return Number(p.rgb.r) * 65536 + Number(p.rgb.g) * 256 + Number(p.rgb.b);\n }\n};\n","import Vector2D from \"./Vector2D\";\n\nexport default class Polar2D {\n constructor(r, tha) {\n this.r = Math.abs(r) || 0;\n this.tha = tha || 0;\n }\n\n set(r, tha) {\n this.r = r;\n this.tha = tha;\n return this;\n }\n\n setR(r) {\n this.r = r;\n return this;\n }\n\n setTha(tha) {\n this.tha = tha;\n return this;\n }\n\n copy(p) {\n this.r = p.r;\n this.tha = p.tha;\n return this;\n }\n\n toVector() {\n return new Vector2D(this.getX(), this.getY());\n }\n\n getX() {\n return this.r * Math.sin(this.tha);\n }\n\n getY() {\n return -this.r * Math.cos(this.tha);\n }\n\n normalize() {\n this.r = 1;\n return this;\n }\n\n equals(v) {\n return v.r === this.r && v.tha === this.tha;\n }\n\n clear() {\n this.r = 0.0;\n this.tha = 0.0;\n return this;\n }\n\n clone() {\n return new Polar2D(this.r, this.tha);\n }\n}\n","const Mat3 = {\n create(mat3) {\n const mat = new Float32Array(9);\n if (mat3) this.set(mat3, mat);\n\n return mat;\n },\n\n set(mat1, mat2) {\n for (let i = 0; i < 9; i++) mat2[i] = mat1[i];\n\n return mat2;\n },\n\n multiply(mat, mat2, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a02 = mat[2],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b00 = mat2[0],\n b01 = mat2[1],\n b02 = mat2[2],\n b10 = mat2[3],\n b11 = mat2[4],\n b20 = mat2[6],\n b21 = mat2[7];\n\n mat3[0] = b00 * a00 + b01 * a10;\n mat3[1] = b00 * a01 + b01 * a11;\n mat3[2] = a02 * b02;\n mat3[3] = b10 * a00 + b11 * a10;\n mat3[4] = b10 * a01 + b11 * a11;\n mat3[6] = b20 * a00 + b21 * a10 + a20;\n mat3[7] = b20 * a01 + b21 * a11 + a21;\n\n return mat3;\n },\n\n inverse(mat, mat3) {\n let a00 = mat[0],\n a01 = mat[1],\n a10 = mat[3],\n a11 = mat[4],\n a20 = mat[6],\n a21 = mat[7],\n b01 = a11,\n b11 = -a10,\n b21 = a21 * a10 - a11 * a20,\n d = a00 * b01 + a01 * b11,\n id;\n\n id = 1 / d;\n mat3[0] = b01 * id;\n mat3[1] = -a01 * id;\n mat3[3] = b11 * id;\n mat3[4] = a00 * id;\n mat3[6] = b21 * id;\n mat3[7] = (-a21 * a00 + a01 * a20) * id;\n\n return mat3;\n },\n\n multiplyVec2(m, vec, mat3) {\n let x = vec[0],\n y = vec[1];\n\n mat3[0] = x * m[0] + y * m[3] + m[6];\n mat3[1] = x * m[1] + y * m[4] + m[7];\n\n return mat3;\n }\n};\n\nexport default Mat3;\n","import Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default class Span {\n constructor(a, b, center) {\n if (Util.isArray(a)) {\n this.isArray = true;\n this.a = a;\n } else {\n this.isArray = false;\n this.a = Util.initValue(a, 1);\n this.b = Util.initValue(b, this.a);\n this.center = Util.initValue(center, false);\n }\n }\n\n getValue(isInt = false) {\n if (this.isArray) {\n return Util.getRandFromArray(this.a);\n } else {\n if (!this.center) {\n return MathUtil.randomAToB(this.a, this.b, isInt);\n } else {\n return MathUtil.randomFloating(this.a, this.b, isInt);\n }\n }\n }\n\n /**\n * Returns a new Span object\n *\n * @memberof Proton#Proton.Util\n * @method setSpanValue\n *\n * @todo a, b and c should be 'Mixed' or 'Number'?\n *\n * @param {Mixed | Span} a\n * @param {Mixed} b\n * @param {Mixed} c\n *\n * @return {Span}\n */\n static setSpanValue(a, b, c) {\n if (a instanceof Span) {\n return a;\n } else {\n if (b === undefined) {\n return new Span(a);\n } else {\n if (c === undefined) return new Span(a, b);\n else return new Span(a, b, c);\n }\n }\n }\n\n /**\n * Returns the value from a Span, if the param is not a Span it will return the given parameter\n *\n * @memberof Proton#Proton.Util\n * @method getValue\n *\n * @param {Mixed | Span} pan\n *\n * @return {Mixed} the value of Span OR the parameter if it is not a Span\n */\n static getSpanValue(pan) {\n return pan instanceof Span ? pan.getValue() : pan;\n }\n}\n","import Span from \"./Span\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"./MathUtil\";\n\nexport default class ArraySpan extends Span {\n constructor(color) {\n super();\n this._arr = Util.toArray(color);\n }\n\n getValue() {\n const val = Util.getRandFromArray(this._arr);\n return val === \"random\" || val === \"Random\" ? MathUtil.randomColor() : val;\n }\n\n /**\n * Make sure that the color is an instance of Proton.ArraySpan, if not it makes a new instance\n *\n * @method setSpanValue\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n static createArraySpan(arr) {\n if (!arr) return null;\n\n if (arr instanceof ArraySpan) return arr;\n else return new ArraySpan(arr);\n }\n}\n","export default class Rectangle {\n constructor(x, y, w, h) {\n this.x = x;\n this.y = y;\n\n this.width = w;\n this.height = h;\n\n this.bottom = this.y + this.height;\n this.right = this.x + this.width;\n }\n\n contains(x, y) {\n if (x <= this.right && x >= this.x && y <= this.bottom && y >= this.y) return true;\n else return false;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\n\nexport default class Rate {\n /**\n * The number of particles per second emission (a [particle]/b [s]);\n * @namespace\n * @memberof! Proton#\n * @constructor\n * @alias Rate\n *\n * @param {Array | Number | Span} numpan the number of each emission;\n * @param {Array | Number | Span} timepan the time of each emission;\n * for example: new Rate(new Span(10, 20), new Span(.1, .25));\n */\n constructor(numpan, timepan) {\n this.numPan = Span.setSpanValue(Util.initValue(numpan, 1));\n this.timePan = Span.setSpanValue(Util.initValue(timepan, 1));\n\n this.startTime = 0;\n this.nextTime = 0;\n this.init();\n }\n\n init() {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n }\n\n getValue(time) {\n this.startTime += time;\n\n if (this.startTime >= this.nextTime) {\n this.startTime = 0;\n this.nextTime = this.timePan.getValue();\n\n if (this.numPan.b === 1) {\n if (this.numPan.getValue(false) > 0.5) return 1;\n else return 0;\n } else {\n return this.numPan.getValue(true);\n }\n }\n\n return 0;\n }\n}\n","export default class Initialize {\n reset() {}\n\n init(emitter, particle) {\n if (particle) {\n this.initialize(particle);\n } else {\n this.initialize(emitter);\n }\n }\n\n // sub class init\n initialize(target) {}\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\nexport default class Life extends Initialize {\n constructor(a, b, c) {\n super();\n\n this.lifePan = Span.setSpanValue(a, b, c);\n this.name = \"Life\";\n }\n\n initialize(target) {\n if (this.lifePan.a === Infinity) target.life = Infinity;\n else target.life = this.lifePan.getValue();\n }\n}\n","import Vector2D from \"../math/Vector2D\";\n\nexport default class Zone {\n constructor() {\n this.vector = new Vector2D(0, 0);\n this.random = 0;\n this.crossType = \"dead\";\n this.alert = true;\n }\n\n getPosition() {}\n\n crossing(particle) {}\n\n destroy() {\n this.vector = null;\n }\n}\n","import Zone from \"./Zone\";\n\nexport default class PointZone extends Zone {\n constructor(x, y) {\n super();\n\n this.x = x;\n this.y = y;\n }\n\n getPosition() {\n this.vector.x = this.x;\n this.vector.y = this.y;\n\n return this.vector;\n }\n\n crossing(particle) {\n if (this.alert) {\n console.error(\"Sorry, PointZone does not support crossing method!\");\n this.alert = false;\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport PointZone from \"../zone/PointZone\";\nimport Initialize from \"./Initialize\";\n\nexport default class Position extends Initialize {\n constructor(zone) {\n super();\n this.zone = Util.initValue(zone, new PointZone());\n this.name = \"Position\";\n }\n\n reset(zone) {\n this.zone = Util.initValue(zone, new PointZone());\n }\n\n initialize(target) {\n this.zone.getPosition();\n\n target.p.x = this.zone.vector.x;\n target.p.y = this.zone.vector.y;\n }\n}\n","import Proton from \"../core/Proton\";\nimport Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Initialize from \"./Initialize\";\nimport Polar2D from \"../math/Polar2D\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default class Velocity extends Initialize {\n constructor(rpan, thapan, type) {\n super();\n\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n\n this.name = \"Velocity\";\n }\n\n reset(rpan, thapan, type) {\n this.rPan = Span.setSpanValue(rpan);\n this.thaPan = Span.setSpanValue(thapan);\n this.type = Util.initValue(type, \"vector\");\n }\n\n normalizeVelocity(vr) {\n return vr * Proton.MEASURE;\n }\n\n initialize(target) {\n if (this.type === \"p\" || this.type === \"P\" || this.type === \"polar\") {\n const polar2d = new Polar2D(\n this.normalizeVelocity(this.rPan.getValue()),\n this.thaPan.getValue() * MathUtil.PI_180\n );\n\n target.v.x = polar2d.getX();\n target.v.y = polar2d.getY();\n } else {\n target.v.x = this.normalizeVelocity(this.rPan.getValue());\n target.v.y = this.normalizeVelocity(this.thaPan.getValue());\n }\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\nexport default class Mass extends Initialize {\n constructor(a, b, c) {\n super();\n this.massPan = Span.setSpanValue(a, b, c);\n this.name = \"Mass\";\n }\n\n initialize(target) {\n target.mass = this.massPan.getValue();\n }\n}\n","import Span from \"../math/Span\";\nimport Initialize from \"./Initialize\";\n\nexport default class Radius extends Initialize {\n constructor(a, b, c) {\n super();\n this.radius = Span.setSpanValue(a, b, c);\n\n this.name = \"Radius\";\n }\n\n reset(a, b, c) {\n this.radius = Span.setSpanValue(a, b, c);\n }\n\n initialize(particle) {\n particle.radius = this.radius.getValue();\n particle.data.oldRadius = particle.radius;\n }\n}\n","import Util from \"../utils/Util\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Initialize from \"./Initialize\";\n\nexport default class Body extends Initialize {\n constructor(image, w, h) {\n super();\n\n this.image = this.setSpanValue(image);\n this.w = Util.initValue(w, 20);\n this.h = Util.initValue(h, this.w);\n this.name = \"Body\";\n }\n\n initialize(particle) {\n const imageTarget = this.image.getValue();\n\n if (typeof imageTarget === \"string\") {\n particle.body = {\n width: this.w,\n height: this.h,\n src: imageTarget,\n isInner: true,\n inner: true\n };\n } else {\n particle.body = imageTarget;\n }\n }\n\n setSpanValue(image) {\n return image instanceof ArraySpan ? image : new ArraySpan(image);\n }\n}\n","import Proton from \"../core/Proton\";\nimport Util from \"../utils/Util\";\nimport ease from \"../math/ease\";\n\nexport default class Behaviour {\n static id = 0;\n\n /**\n * The Behaviour class is the base for the other Behaviour\n *\n * @memberof! -\n * @interface\n * @alias Proton.Behaviour\n *\n * @param {Number} life \tthe behaviours life\n * @param {String} easing \tThe behaviour's decaying trend, for example ease.easeOutQuart\n *\n * @property {String} id \t\tThe behaviours id\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n * @property {Number} age=0 \tHow long the particle should be 'alife'\n * @property {Number} energy=1\n * @property {Boolean} dead=false The particle is dead at first\n * @property {Array} parents \tThe behaviour's parents array\n * @property {String} name \tThe behaviour name\n */\n constructor(life, easing) {\n this.life = Util.initValue(life, Infinity);\n this.easing = ease.getEasing(easing);\n\n this.age = 0;\n this.energy = 1;\n this.dead = false;\n this.parents = [];\n\n this.id = `Behaviour_${Behaviour.id++}`;\n this.name = \"Behaviour\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton.Behaviour\n * @instance\n *\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(life, easing) {\n this.life = Util.initValue(life, Infinity);\n this.easing = ease.getEasing(easing);\n }\n\n /**\n * Normalize a force by 1:100;\n *\n * @method normalizeForce\n * @memberof Proton.Behaviour\n * @instance\n *\n * @param {Proton.Vector2D} force\n */\n normalizeForce(force) {\n return force.multiplyScalar(Proton.MEASURE);\n }\n\n /**\n * Normalize a value by 1:100;\n *\n * @method normalizeValue\n * @memberof Proton.Behaviour\n * @instance\n *\n * @param {Number} value\n */\n normalizeValue(value) {\n return value * Proton.MEASURE;\n }\n\n /**\n * Initialize the behaviour's parameters for all particles\n *\n * @method initialize\n * @memberof Proton.Behaviour\n * @instance\n *\n * @param {Proton.Particle} particle\n */\n initialize(particle) {}\n\n /**\n * computing life cycle\n *\n * @method calculate\n * @memberof Proton.Behaviour\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n calculate(particle, time, index) {\n this.age += time;\n\n if (this.age >= this.life || this.dead) {\n this.energy = 0;\n this.dead = true;\n this.destroy();\n } else {\n const scale = this.easing(particle.age / particle.life);\n this.energy = Math.max(1 - scale, 0);\n }\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n }\n\n /**\n * Destory this behaviour\n *\n * @method destroy\n * @memberof Proton.Behaviour\n * @instance\n */\n destroy() {\n let i = this.parents.length;\n while (i--) {\n this.parents[i].removeBehaviour(this);\n }\n\n this.parents.length = 0;\n }\n}\n","import Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Force extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Force\n *\n * @param {Number} fx\n * @param {Number} fy\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(fx, fy, life, easing) {\n super(life, easing);\n\n this.force = this.normalizeForce(new Vector2D(fx, fy));\n this.name = \"Force\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Force\n * @instance\n *\n * @param {Number} fx\n * @param {Number} fy\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(fx, fy, life, easing) {\n this.force = this.normalizeForce(new Vector2D(fx, fy));\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Force\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.a.add(this.force);\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Attraction extends Behaviour {\n /**\n * This behaviour let the particles follow one specific Proton.Vector2D\n *\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Attraction\n *\n * @todo add description for 'force' and 'radius'\n *\n * @param {Proton.Vector2D} targetPosition the attraction point coordinates\n * @param {Number} [force=100]\n * @param {Number} [radius=1000]\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {Proton.Vector2D} targetPosition\n * @property {Number} radius\n * @property {Number} force\n * @property {Number} radiusSq\n * @property {Proton.Vector2D} attractionForce\n * @property {Number} lengthSq\n * @property {String} name The Behaviour name\n */\n constructor(targetPosition, force, radius, life, easing) {\n super(life, easing);\n\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n this.radius = Util.initValue(radius, 1000);\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n this.radiusSq = this.radius * this.radius;\n this.attractionForce = new Vector2D();\n this.lengthSq = 0;\n\n this.name = \"Attraction\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Attraction\n * @instance\n *\n * @todo add description for 'force' and 'radius'\n *\n * @param {Proton.Vector2D} targetPosition the attraction point coordinates\n * @param {Number} [force=100]\n * @param {Number} [radius=1000]\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(targetPosition, force, radius, life, easing) {\n this.targetPosition = Util.initValue(targetPosition, new Vector2D());\n this.radius = Util.initValue(radius, 1000);\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n this.radiusSq = this.radius * this.radius;\n this.attractionForce = new Vector2D();\n this.lengthSq = 0;\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @memberof Proton#Proton.Attraction\n * @method applyBehaviour\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n this.attractionForce.copy(this.targetPosition);\n this.attractionForce.sub(particle.p);\n this.lengthSq = this.attractionForce.lengthSq();\n\n if (this.lengthSq > 0.00004 && this.lengthSq < this.radiusSq) {\n this.attractionForce.normalize();\n this.attractionForce.multiplyScalar(1 - this.lengthSq / this.radiusSq);\n this.attractionForce.multiplyScalar(this.force);\n\n particle.a.add(this.attractionForce);\n }\n }\n}\n","import Vector2D from \"../math/Vector2D\";\nimport MathUtil from \"../math/MathUtil\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class RandomDrift extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Behaviour\n * @constructor\n * @alias RandomDrift\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {Number} time The time of the drift\n * @property {String} name The Behaviour name\n */\n constructor(driftX, driftY, delay, life, easing) {\n super(life, easing);\n\n this.reset(driftX, driftY, delay);\n this.time = 0;\n this.name = \"RandomDrift\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Number} driftX \t\t\t\tX value of the new Vector2D\n * @param {Number} driftY \t\t\t\tY value of the new Vector2D\n * @param {Number} delay \t\t\t\tHow much delay the drift should have\n * @param {Number} [life=Infinity] \t\tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(driftX, driftY, delay, life, easing) {\n this.panFoce = new Vector2D(driftX, driftY);\n this.panFoce = this.normalizeForce(this.panFoce);\n this.delay = delay;\n\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n particle.data.time = 0;\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#RandomDrift\n * @instance\n *\n * @param {Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.data.time += time;\n\n if (particle.data.time >= this.delay) {\n particle.a.addXY(\n MathUtil.randomAToB(-this.panFoce.x, this.panFoce.x),\n MathUtil.randomAToB(-this.panFoce.y, this.panFoce.y)\n );\n\n particle.data.time = 0;\n }\n }\n}\n","import Force from \"./Force\";\n\nexport default class Gravity extends Force {\n /**\n * @memberof! Proton#\n * @augments Proton#Proton.Force\n * @constructor\n * @alias Proton.Gravity\n *\n * @param {Number} g \t\t\t\t\t\t\tGravity\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(g, life, easing) {\n super(0, g, life, easing);\n this.name = \"Gravity\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Gravity\n * @instance\n *\n * @param {Number} g \t\t\t\t\t\t\tGravity\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(g, life, easing) {\n super.reset(0, g, life, easing);\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Collision extends Behaviour {\n /**\n * The callback after collision\n *\n * @callback Callback\n *\n * @param {Proton.Particle} particle\n * @param {Proton.Paritcle} otherParticle\n */\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Collision\n *\n * @todo add description to mass\n *\n * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n * @param {Boolean} \t\t[mass=true]\n * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(emitter, mass, callback, life, easing) {\n super(life, easing);\n this.reset(emitter, mass, callback);\n this.newPool = [];\n this.pool = [];\n this.name = \"Collision\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @memberof Proton#Proton.Collision\n * @method reset\n * @instance\n *\n * @todo add description to mass\n *\n * @param {Proton.Emitter} \t[emitter=null] \t\tthe attraction point coordinates\n * @param {Boolean} \t\t[mass=true]\n * @param {Callback}\t \t[callback=null]\t\tthe callback after the collision\n * @param {Number} \t\t\t[life=Infinity] \tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(emitter, mass, callback, life, easing) {\n this.emitter = Util.initValue(emitter, null);\n this.mass = Util.initValue(mass, true);\n this.callback = Util.initValue(callback, null);\n\n this.collisionPool = [];\n this.delta = new Vector2D();\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @memberof Proton#Proton.Collision\n * @method applyBehaviour\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n if (this.emitter) {\n Util.sliceArray(this.emitter.particles, index, this.newPool);\n } else {\n Util.sliceArray(this.pool, index, this.newPool);\n }\n\n const length = this.newPool.length;\n let otherParticle;\n let lengthSq;\n let overlap;\n let totalMass;\n let averageMass1, averageMass2;\n let i;\n\n for (i = 0; i < length; i++) {\n otherParticle = this.newPool[i];\n\n if (otherParticle !== particle) {\n this.delta.copy(otherParticle.p);\n this.delta.sub(particle.p);\n\n lengthSq = this.delta.lengthSq();\n const distance = particle.radius + otherParticle.radius;\n\n if (lengthSq <= distance * distance) {\n overlap = distance - Math.sqrt(lengthSq);\n overlap += 0.5;\n\n totalMass = particle.mass + otherParticle.mass;\n averageMass1 = this.mass ? otherParticle.mass / totalMass : 0.5;\n averageMass2 = this.mass ? particle.mass / totalMass : 0.5;\n\n particle.p.add(\n this.delta\n .clone()\n .normalize()\n .multiplyScalar(overlap * -averageMass1)\n );\n otherParticle.p.add(this.delta.normalize().multiplyScalar(overlap * averageMass2));\n\n this.callback && this.callback(particle, otherParticle);\n }\n }\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class CrossZone extends Behaviour {\n /**\n * Defines what happens if the particles come to the end of the specified zone\n *\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.CrossZone\n *\n * @param {Proton.Zone} zone \t\t\t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \t\t\twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \t\t\tthis behaviour's life\n * @param {String} \t\t[easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(zone, crossType, life, easing) {\n super(life, easing);\n\n this.reset(zone, crossType);\n this.name = \"CrossZone\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Zone} zone \t\t\t\tcan be any Proton.Zone - e.g. Proton.RectZone()\n * @param {String} \t\t[crossType=dead] \twhat happens if the particles pass the zone - allowed strings: dead | bound | cross\n * @param {Number} \t\t[life=Infinity] \tthis behaviour's life\n * @param {String} \t\t[easing=easeLinear]\tthis behaviour's easing\n */\n reset(zone, crossType, life, easing) {\n this.zone = zone;\n this.zone.crossType = Util.initValue(crossType, \"dead\");\n\n life && super.reset(life, easing);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.CrossZone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n this.zone.crossing(particle);\n }\n}\n","import Util from \"../utils/Util\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Alpha extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Alpha\n *\n * @todo add description for 'a' and 'b'\n *\n * @param {Number} a\n * @param {String} b\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Alpha\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Alpha\n * @instance\n *\n * @todo add description for 'a' and 'b'\n *\n * @param {Number} a\n * @param {String} b\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(a, b, life, easing) {\n this.same = b === null || b === undefined ? true : false;\n this.a = Span.setSpanValue(Util.initValue(a, 1));\n this.b = Span.setSpanValue(b);\n\n life && super.reset(life, easing);\n }\n\n /**\n * Sets the new alpha value of the particle\n *\n * @method initialize\n * @memberof Proton#Proton.Alpha\n * @instance\n *\n * @param {Proton.Particle} particle A single Proton generated particle\n */\n initialize(particle) {\n particle.data.alphaA = this.a.getValue();\n\n if (this.same) particle.data.alphaB = particle.data.alphaA;\n else particle.data.alphaB = this.b.getValue();\n }\n\n /**\n * @method applyBehaviour\n * @memberof Proton#Proton.Alpha\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n particle.alpha = particle.data.alphaB + (particle.data.alphaA - particle.data.alphaB) * this.energy;\n\n if (particle.alpha < 0.001) particle.alpha = 0;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Scale extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Scale\n *\n * @todo add description for 'a' and 'b'\n *\n * @param {Number} a\n * @param {String} b\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Scale\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Scale\n * @instance\n *\n * @param {Number} a\n * @param {String} b\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(a, b, life, easing) {\n this.same = b === null || b === undefined ? true : false;\n this.a = Span.setSpanValue(Util.initValue(a, 1));\n this.b = Span.setSpanValue(b);\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initialize the behaviour's parameters for all particles\n *\n * @method initialize\n * @memberof Proton#Proton.Scale\n * @instance\n *\n * @param {Proton.Particle} particle\n */\n initialize(particle) {\n particle.data.scaleA = this.a.getValue();\n particle.data.oldRadius = particle.radius;\n particle.data.scaleB = this.same ? particle.data.scaleA : this.b.getValue();\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Scale\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n particle.scale = particle.data.scaleB + (particle.data.scaleA - particle.data.scaleB) * this.energy;\n\n if (particle.scale < 0.0001) particle.scale = 0;\n particle.radius = particle.data.oldRadius * particle.scale;\n }\n}\n","import Span from \"../math/Span\";\nimport Util from \"../utils/Util\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Rotate extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Rotate\n *\n * @todo add description for 'a', 'b' and 'style'\n *\n * @param {String} [influence=Velocity] The rotation's influence\n * @param {String} b\n * @param {String} [style=to]\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(influence, b, style, life, easing) {\n super(life, easing);\n\n this.reset(influence, b, style);\n this.name = \"Rotate\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Rotate\n * @instance\n *\n * @todo add description for 'a', 'b' and 'style'\n *\n * @param {String} a\n * @param {String} b\n * @param {String} [style=to]\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(a, b, style, life, easing) {\n this.same = b === null || b === undefined ? true : false;\n\n this.a = Span.setSpanValue(Util.initValue(a, \"Velocity\"));\n this.b = Span.setSpanValue(Util.initValue(b, 0));\n this.style = Util.initValue(style, \"to\");\n\n life && super.reset(life, easing);\n }\n\n /**\n * Initialize the behaviour's parameters for all particles\n *\n * @method initialize\n * @memberof Proton#Proton.Rotate\n * @instance\n *\n * @param {Proton.Particle} particle\n */\n initialize(particle) {\n particle.rotation = this.a.getValue();\n particle.data.rotationA = this.a.getValue();\n\n if (!this.same) particle.data.rotationB = this.b.getValue();\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Rotate\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} \t\t\ttime the integrate time 1/ms\n * @param {Int} \t\t\tindex the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n if (!this.same) {\n if (this.style === \"to\" || this.style === \"TO\" || this.style === \"_\") {\n particle.rotation +=\n particle.data.rotationB + (particle.data.rotationA - particle.data.rotationB) * this.energy;\n } else {\n particle.rotation += particle.data.rotationB;\n }\n } else if (this.a.a === \"V\" || this.a.a === \"Velocity\" || this.a.a === \"v\") {\n // beta...\n particle.rotation = particle.getDirection();\n }\n }\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport ArraySpan from \"../math/ArraySpan\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class Color extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Color\n *\n * @param {Proton.ArraySpan | String} a the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} b the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(a, b, life, easing) {\n super(life, easing);\n\n this.reset(a, b);\n this.name = \"Color\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.ArraySpan | String} a the string should be a hex e.g. #000000 for black\n * @param {Proton.ArraySpan | String} b the string should be a hex e.g. #000000 for black\n * @param {Number} [life=Infinity] \tthis behaviour's life\n * @param {String} [easing=easeLinear] \tthis behaviour's easing\n */\n reset(a, b, life, easing) {\n this.a = ArraySpan.createArraySpan(a);\n this.b = ArraySpan.createArraySpan(b);\n life && super.reset(life, easing);\n }\n\n /**\n * Initialize the behaviour's parameters for all particles\n *\n * @method initialize\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n */\n initialize(particle) {\n particle.color = this.a.getValue();\n particle.data.colorA = ColorUtil.hexToRgb(particle.color);\n\n if (this.b) particle.data.colorB = ColorUtil.hexToRgb(this.b.getValue());\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Color\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n if (this.b) {\n this.calculate(particle, time, index);\n\n particle.rgb.r = particle.data.colorB.r + (particle.data.colorA.r - particle.data.colorB.r) * this.energy;\n particle.rgb.g = particle.data.colorB.g + (particle.data.colorA.g - particle.data.colorB.g) * this.energy;\n particle.rgb.b = particle.data.colorB.b + (particle.data.colorA.b - particle.data.colorB.b) * this.energy;\n\n particle.rgb.r = particle.rgb.r << 0;\n particle.rgb.g = particle.rgb.g << 0;\n particle.rgb.b = particle.rgb.b << 0;\n } else {\n particle.rgb.r = particle.data.colorA.r;\n particle.rgb.g = particle.data.colorA.g;\n particle.rgb.b = particle.data.colorA.b;\n }\n }\n}\n","import MathUtil from \"../math/MathUtil\";\nimport Vector2D from \"../math/Vector2D\";\nimport Span from \"../math/Span\";\nimport Behaviour from \"./Behaviour\";\n\nconst CHANGING = \"changing\";\n\nexport default class Cyclone extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Proton.Behaviour\n * @constructor\n * @alias Proton.Cyclone\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(angle, force, life, easing) {\n super(life, easing);\n this.setAngleAndForce(angle, force);\n this.name = \"Cyclone\";\n }\n\n setAngleAndForce(angle, force) {\n this.force = CHANGING;\n this.angle = MathUtil.PI / 2;\n\n if (angle === \"right\") {\n this.angle = MathUtil.PI / 2;\n } else if (angle === \"left\") {\n this.angle = -MathUtil.PI / 2;\n } else if (angle === \"random\") {\n this.angle = \"random\";\n } else if (angle instanceof Span) {\n this.angle = \"span\";\n this.span = angle;\n } else if (angle) {\n this.angle = angle;\n }\n\n if (\n String(force).toLowerCase() === \"changing\" ||\n String(force).toLowerCase() === \"chang\" ||\n String(force).toLowerCase() === \"auto\"\n ) {\n this.force = CHANGING;\n } else if (force) {\n this.force = force;\n }\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Number} angle\n * @param {Number} force\n * @param {Number} [life=Infinity] \t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(angle, force, life, easing) {\n this.angle = MathUtil.PI / 2;\n this.setAngleAndForce(angle, force);\n life && super.reset(life, easing);\n }\n\n initialize(particle) {\n if (this.angle === \"random\") {\n particle.data.cangle = MathUtil.randomAToB(-MathUtil.PI, MathUtil.PI);\n } else if (this.angle === \"span\") {\n particle.data.cangle = this.span.getValue();\n }\n\n particle.data.cyclone = new Vector2D(0, 0);\n }\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#Proton.Cyclone\n * @instance\n *\n * @param {Proton.Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.calculate(particle, time, index);\n\n let length;\n let gradient = particle.v.getGradient();\n if (this.angle === \"random\" || this.angle === \"span\") {\n gradient += particle.data.cangle;\n } else {\n gradient += this.angle;\n }\n\n if (this.force === CHANGING) {\n length = particle.v.length() / 100;\n } else {\n length = this.force;\n }\n\n particle.data.cyclone.x = length * Math.cos(gradient);\n particle.data.cyclone.y = length * Math.sin(gradient);\n particle.data.cyclone = this.normalizeForce(particle.data.cyclone);\n particle.a.add(particle.data.cyclone);\n }\n}\n","import Attraction from \"./Attraction\";\n\nexport default class Repulsion extends Attraction {\n /**\n * The oppisite of Proton.Attraction - turns the force\n *\n * @memberof! Proton#\n * @augments Proton#Proton.Attraction\n * @constructor\n * @alias Proton.Repulsion\n *\n * @todo add description for 'force' and 'radius'\n *\n * @param {Proton.Vector2D} targetPosition the attraction point coordinates\n * @param {Number} [force=100]\n * @param {Number} [radius=1000]\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n *\n * @property {Number} force\n * @property {String} name The Behaviour name\n */\n constructor(targetPosition, force, radius, life, easing) {\n super(targetPosition, force, radius, life, easing);\n\n this.force *= -1;\n this.name = \"Repulsion\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#Proton.Repulsion\n * @instance\n *\n * @todo add description for 'force' and 'radius'\n *\n * @param {Proton.Vector2D} targetPosition the attraction point coordinates\n * @param {Number} [force=100]\n * @param {Number} [radius=1000]\n * @param {Number} [life=Infinity] \t\t\t\tthis behaviour's life\n * @param {String} [easing=ease.easeLinear] \tthis behaviour's easing\n */\n reset(targetPosition, force, radius, life, easing) {\n super.reset(targetPosition, force, radius, life, easing);\n this.force *= -1;\n }\n}\n","import Util from \"../utils/Util\";\nimport Vector2D from \"../math/Vector2D\";\nimport Behaviour from \"./Behaviour\";\n\nexport default class GravityWell extends Behaviour {\n /**\n * @memberof! Proton#\n * @augments Behaviour\n * @constructor\n * @alias GravityWell\n *\n * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n * @param {Number} [force=100]\t\t\t\t\tThe force\n * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n * @param {String} [easing=easeLinear]\tthis behaviour's easing\n *\n * @property {String} name The Behaviour name\n */\n constructor(centerPoint, force, life, easing) {\n super(life, easing);\n\n this.distanceVec = new Vector2D();\n this.centerPoint = Util.initValue(centerPoint, new Vector2D());\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n this.name = \"GravityWell\";\n }\n\n /**\n * Reset this behaviour's parameters\n *\n * @method reset\n * @memberof Proton#GravityWell\n * @instance\n *\n * @param {Vector2D} [centerPoint=new Vector2D] The point in the center\n * @param {Number} [force=100]\t\t\t\t\tThe force\n * @param {Number} [life=Infinity]\t\t\t\tthis behaviour's life\n * @param {String} [easing=easeLinear]\tthis behaviour's easing\n */\n reset(centerPoint, force, life, easing) {\n this.distanceVec = new Vector2D();\n this.centerPoint = Util.initValue(centerPoint, new Vector2D());\n this.force = Util.initValue(this.normalizeValue(force), 100);\n\n life && super.reset(life, easing);\n }\n\n /**\n * @inheritdoc\n */\n initialize(particle) {}\n\n /**\n * Apply this behaviour for all particles every time\n *\n * @method applyBehaviour\n * @memberof Proton#GravityWell\n * @instance\n *\n * @param {Particle} particle\n * @param {Number} the integrate time 1/ms\n * @param {Int} the particle index\n */\n applyBehaviour(particle, time, index) {\n this.distanceVec.set(this.centerPoint.x - particle.p.x, this.centerPoint.y - particle.p.y);\n const distanceSq = this.distanceVec.lengthSq();\n\n if (distanceSq !== 0) {\n const distance = this.distanceVec.length();\n const factor = (this.force * time) / (distanceSq * distance);\n\n particle.v.x += factor * this.distanceVec.x;\n particle.v.y += factor * this.distanceVec.y;\n }\n }\n}\n","import PropUtil from \"../utils/PropUtil\";\nimport Initialize from \"./Initialize\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default {\n initialize(emitter, particle, initializes) {\n const length = initializes.length;\n let i;\n\n for (i = 0; i < length; i++) {\n if (initializes[i] instanceof Initialize) {\n initializes[i].init(emitter, particle);\n } else {\n this.init(emitter, particle, initializes[i]);\n }\n }\n\n this.bindEmitter(emitter, particle);\n },\n\n // init\n init(emitter, particle, initialize) {\n PropUtil.setProp(particle, initialize);\n PropUtil.setVectorVal(particle, initialize);\n },\n\n bindEmitter(emitter, particle) {\n if (emitter.bindEmitter) {\n particle.p.add(emitter.p);\n particle.v.add(emitter.v);\n particle.a.add(emitter.a);\n particle.v.rotate(MathUtil.degreeTransform(emitter.rotation));\n }\n }\n};\n","import Util from \"../utils/Util\";\nimport Puid from \"../utils/Puid\";\nimport Particle from \"../core/Particle\";\nimport EventDispatcher from \"../events/EventDispatcher\";\n\nimport Rate from \"../initialize/Rate\";\nimport InitializeUtil from \"../initialize/InitializeUtil\";\n\nexport default class Emitter extends Particle {\n /**\n * You can use this emit particles.\n *\n * It will dispatch follow events:\n * PARTICLE_CREATED\n * PARTICLE_UPDATA\n * PARTICLE_DEAD\n *\n * @class Emitter\n * @constructor\n * @param {Object} conf the parameters object;\n * for example {damping:0.01,bindEmitter:false}\n */\n constructor(conf = {}) {\n super(conf);\n\n this.particles = [];\n this.behaviours = [];\n this.initializes = [];\n\n this.emitTime = 0;\n this.emitSpeed = 0;\n this.totalTime = -1;\n\n /**\n * The friction coefficient for all particle emit by This;\n * @property damping\n * @type {Number}\n * @default 0.006\n */\n this.damping = 0.006;\n\n /**\n * If bindEmitter the particles can bind this emitter's property;\n * @property bindEmitter\n * @type {Boolean}\n * @default true\n */\n this.bindEmitter = true;\n\n /**\n * The number of particles per second emit (a [particle]/b [s]);\n * @property rate\n * @type {Rate}\n * @default Rate(1, .1)\n */\n this.rate = new Rate(1, 0.1);\n\n this.name = \"Emitter\";\n this.id = Puid.id(this.name);\n }\n\n /**\n * start emit particle\n * @method emit\n * @param {Number} emitTime begin emit time;\n * @param {String} life the life of this emitter\n */\n emit(totalTime, life) {\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = Util.initValue(totalTime, Infinity);\n\n if (life === true || life === \"life\" || life === \"destroy\") {\n this.life = totalTime === \"once\" ? 1 : this.totalTime;\n } else if (!isNaN(life)) {\n this.life = life;\n }\n\n this.rate.init();\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this.totalTime = -1;\n this.emitTime = 0;\n this.stoped = true;\n }\n\n preEmit(time) {\n let oldStoped = this.stoped;\n let oldEmitTime = this.emitTime;\n let oldTotalTime = this.totalTime;\n\n this.stoped = false;\n this.emitTime = 0;\n this.totalTime = time;\n this.rate.init();\n\n const step = 0.0167;\n while (time > step) {\n time -= step;\n this.update(step);\n }\n\n this.stoped = oldStoped;\n this.emitTime = oldEmitTime + Math.max(time, 0);\n this.totalTime = oldTotalTime;\n }\n\n /**\n * remove current all particles\n * @method removeAllParticles\n */\n removeAllParticles() {\n let i = this.particles.length;\n while (i--) this.particles[i].dead = true;\n }\n\n /**\n * add initialize to this emitter\n * @method addSelfInitialize\n */\n addSelfInitialize(initialize) {\n if (initialize[\"init\"]) {\n initialize.init(this);\n } else {\n // this.initAll();\n }\n }\n\n /**\n * add the Initialize to particles;\n *\n * you can use initializes array:for example emitter.addInitialize(initialize1,initialize2,initialize3);\n * @method addInitialize\n * @param {Initialize} initialize like this new Radius(1, 12)\n */\n addInitialize(...rest) {\n let i = rest.length;\n while (i--) this.initializes.push(rest[i]);\n }\n\n /**\n * remove the Initialize\n * @method removeInitialize\n * @param {Initialize} initialize a initialize\n */\n removeInitialize(initializer) {\n const index = this.initializes.indexOf(initializer);\n if (index > -1) this.initializes.splice(index, 1);\n }\n\n /**\n * remove all Initializes\n * @method removeInitializers\n */\n removeAllInitializers() {\n Util.emptyArray(this.initializes);\n }\n\n /**\n * add the Behaviour to particles;\n *\n * you can use Behaviours array:emitter.addBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addBehaviour\n * @param {Behaviour} behaviour like this new Color('random')\n */\n addBehaviour(...rest) {\n let i = arguments.length;\n while (i--) {\n let behaviour = rest[i];\n this.behaviours.push(behaviour);\n if (behaviour.parents) behaviour.parents.push(this);\n }\n }\n\n /**\n * remove the Behaviour\n * @method removeBehaviour\n * @param {Behaviour} behaviour a behaviour\n */\n removeBehaviour(behaviour) {\n let index = this.behaviours.indexOf(behaviour);\n this.behaviours.splice(index, 1);\n\n if (behaviour.parents) {\n index = behaviour.parents.indexOf(behaviour);\n behaviour.parents.splice(index, 1);\n }\n\n return index;\n }\n\n /**\n * remove all behaviours\n * @method removeAllBehaviours\n */\n removeAllBehaviours() {\n Util.emptyArray(this.behaviours);\n }\n\n // emitter update\n update(time) {\n this.age += time;\n if (this.age >= this.life || this.dead) this.destroy();\n\n this.emitting(time);\n this.integrate(time);\n }\n\n integrate(time) {\n if (!this.parent) return;\n\n const damping = 1 - this.damping;\n this.parent.integrator.calculate(this, time, damping);\n\n const length = this.particles.length;\n let i, particle;\n\n for (i = length - 1; i >= 0; i--) {\n particle = this.particles[i];\n\n // particle update\n particle.update(time, i);\n this.parent.integrator.calculate(particle, time, damping);\n this.dispatch(\"PARTICLE_UPDATE\", particle);\n\n // check dead\n if (particle.dead) {\n this.dispatch(\"PARTICLE_DEAD\", particle);\n\n this.parent.pool.expire(particle);\n this.particles.splice(i, 1);\n }\n }\n }\n\n dispatch(event, target) {\n this.parent && this.parent.dispatchEvent(event, target);\n this.bindEvent && this.dispatchEvent(event, target);\n }\n\n emitting(time) {\n if (this.totalTime === \"once\") {\n let i;\n const length = this.rate.getValue(99999);\n\n if (length > 0) this.emitSpeed = length;\n for (i = 0; i < length; i++) this.createParticle();\n this.totalTime = \"none\";\n } else {\n this.emitTime += time;\n\n if (this.emitTime < this.totalTime) {\n const length = this.rate.getValue(time);\n let i;\n\n if (length > 0) this.emitSpeed = length;\n for (i = 0; i < length; i++) this.createParticle();\n }\n }\n }\n\n /**\n * create single particle;\n *\n * can use emit({x:10},new Gravity(10),{'particleUpdate',fun}) or emit([{x:10},new Initialize],new Gravity(10),{'particleUpdate',fun})\n * @method removeAllParticles\n */\n createParticle(initialize, behaviour) {\n const particle = this.parent.pool.get(Particle);\n this.setupParticle(particle, initialize, behaviour);\n this.dispatch(\"PARTICLE_CREATED\", particle);\n\n return particle;\n }\n\n setupParticle(particle, initialize, behaviour) {\n let initializes = this.initializes;\n let behaviours = this.behaviours;\n\n if (initialize) initializes = Util.toArray(initialize);\n if (behaviour) behaviours = Util.toArray(behaviour);\n\n particle.reset();\n InitializeUtil.initialize(this, particle, initializes);\n particle.addBehaviours(behaviours);\n particle.parent = this;\n\n this.particles.push(particle);\n }\n\n remove() {\n this.stop();\n Util.destroyAll(this.particles);\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n this.dead = true;\n this.remove();\n this.removeAllInitializers();\n this.removeAllBehaviours();\n this.parent && this.parent.removeEmitter(this);\n\n this.rate = null;\n this.old = null;\n this.rgb = null;\n this.v = null;\n this.a = null;\n this.p = null;\n }\n}\n\nEventDispatcher.bind(Emitter);\n","import Types from \"../utils/Types\";\nimport ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nlet PIXIClass;\nexport default class PixiRenderer extends BaseRenderer {\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.color = false;\n this.setColor = false;\n this.blendMode = null;\n this.pool.create = (body, particle) => this.createBody(body, particle);\n this.setPIXI(window.PIXI);\n\n this.name = \"PixiRenderer\";\n }\n\n setPIXI(PIXI) {\n try {\n PIXIClass = PIXI || { Sprite: {} };\n this.createFromImage = PIXIClass.Sprite.from || PIXIClass.Sprite.fromImage;\n } catch (e) {}\n }\n\n onProtonUpdate() {}\n\n /**\n * @param particle\n */\n onParticleCreated(particle) {\n if (particle.body) {\n particle.body = this.pool.get(particle.body, particle);\n } else {\n particle.body = this.pool.get(this.circleConf, particle);\n }\n\n if (this.blendMode) {\n particle.body.blendMode = this.blendMode;\n }\n\n this.element.addChild(particle.body);\n }\n\n /**\n * @param particle\n */\n onParticleUpdate(particle) {\n this.transform(particle, particle.body);\n\n if (this.setColor === true || this.color === true) {\n particle.body.tint = ColorUtil.getHex16FromParticle(particle);\n }\n }\n\n /**\n * @param particle\n */\n onParticleDead(particle) {\n this.element.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n\n transform(particle, target) {\n target.x = particle.p.x;\n target.y = particle.p.y;\n\n target.alpha = particle.alpha;\n\n target.scale.x = particle.scale;\n target.scale.y = particle.scale;\n\n // using cached version of MathUtil.PI_180 for slight performance increase.\n target.rotation = particle.rotation * MathUtil.PI_180; // MathUtil.PI_180;\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n else return this.createSprite(body);\n }\n\n createSprite(body) {\n const sprite = body.isInner ? this.createFromImage(body.src) : new PIXIClass.Sprite(body);\n\n sprite.anchor.x = 0.5;\n sprite.anchor.y = 0.5;\n\n return sprite;\n }\n\n createCircle(particle) {\n const graphics = new PIXIClass.Graphics();\n\n if (this.stroke) {\n const stroke = Types.isString(this.stroke) ? this.stroke : 0x000000;\n graphics.beginStroke(stroke);\n }\n\n graphics.beginFill(particle.color || 0x008ced);\n graphics.drawCircle(0, 0, particle.radius);\n graphics.endFill();\n\n return graphics;\n }\n\n destroy(particles) {\n super.destroy();\n\n let i = particles.length;\n while (i--) {\n let particle = particles[i];\n if (particle.body) {\n this.element.removeChild(particle.body);\n }\n }\n }\n}\n","import Emitter from \"./Emitter\";\n\nexport default class BehaviourEmitter extends Emitter {\n /**\n * The BehaviourEmitter class inherits from Proton.Emitter\n *\n * use the BehaviourEmitter you can add behaviours to self;\n * @class Proton.BehaviourEmitter\n * @constructor\n * @param {Object} conf the parameters object;\n */\n constructor(conf) {\n super(conf);\n\n this.selfBehaviours = [];\n }\n\n /**\n * add the Behaviour to emitter;\n *\n * you can use Behaviours array:emitter.addSelfBehaviour(Behaviour1,Behaviour2,Behaviour3);\n * @method addSelfBehaviour\n * @param {Proton.Behaviour} behaviour like this new Proton.Color('random')\n */\n addSelfBehaviour(...rest) {\n let i,\n length = rest.length;\n\n for (i = 0; i < length; i++) {\n let behaviour = rest[i];\n this.selfBehaviours.push(behaviour);\n behaviour.initialize(this);\n }\n }\n\n /**\n * remove the Behaviour for self\n * @method removeSelfBehaviour\n * @param {Proton.Behaviour} behaviour a behaviour\n */\n removeSelfBehaviour(behaviour) {\n const index = this.selfBehaviours.indexOf(behaviour);\n if (index > -1) this.selfBehaviours.splice(index, 1);\n }\n\n update(time) {\n super.update(time);\n\n if (!this.sleep) {\n const length = this.selfBehaviours.length;\n let i;\n\n for (i = 0; i < length; i++) {\n this.selfBehaviours[i].applyBehaviour(this, time, i);\n }\n }\n }\n}\n","import Util from \"../utils/Util\";\nimport Emitter from \"./Emitter\";\n\nexport default class FollowEmitter extends Emitter {\n /**\n * The FollowEmitter class inherits from Proton.Emitter\n *\n * use the FollowEmitter will emit particle when mousemoving\n *\n * @class Proton.FollowEmitter\n * @constructor\n * @param {Element} mouseTarget mouseevent's target;\n * @param {Number} ease the easing of following speed;\n * @default 0.7\n * @param {Object} conf the parameters object;\n */\n constructor(mouseTarget, ease, conf) {\n super(conf);\n\n this.mouseTarget = Util.initValue(mouseTarget, window);\n this.ease = Util.initValue(ease, 0.7);\n\n this._allowEmitting = false;\n this.initEventHandler();\n }\n\n initEventHandler() {\n this.mousemoveHandler = e => this.mousemove.call(this, e);\n this.mousedownHandler = e => this.mousedown.call(this, e);\n this.mouseupHandler = e => this.mouseup.call(this, e);\n this.mouseTarget.addEventListener(\"mousemove\", this.mousemoveHandler, false);\n }\n\n /**\n * start emit particle\n * @method emit\n */\n emit() {\n this._allowEmitting = true;\n }\n\n /**\n * stop emiting\n * @method stop\n */\n stop() {\n this._allowEmitting = false;\n }\n\n mousemove(e) {\n if (e.layerX || e.layerX === 0) {\n this.p.x += (e.layerX - this.p.x) * this.ease;\n this.p.y += (e.layerY - this.p.y) * this.ease;\n } else if (e.offsetX || e.offsetX === 0) {\n this.p.x += (e.offsetX - this.p.x) * this.ease;\n this.p.y += (e.offsetY - this.p.y) * this.ease;\n }\n\n if (this._allowEmitting) super.emit(\"once\");\n }\n\n /**\n * Destory this Emitter\n * @method destroy\n */\n destroy() {\n super.destroy();\n this.mouseTarget.removeEventListener(\"mousemove\", this.mousemoveHandler, false);\n }\n}\n","export default {\n /**\n * Determine whether it is a picture object\n *\n * @return {boolean} is or no\n */\n isImage(obj) {\n if (!obj) return false;\n if (obj.__isImage) return true;\n\n const tagName = `${obj.tagName}`.toUpperCase();\n const nodeName = `${obj.nodeName}`.toUpperCase();\n if (nodeName === \"IMG\" || tagName === \"IMG\") {\n obj.__isImage = true;\n return true;\n }\n\n return false;\n },\n\n /**\n * Determine whether it is a string object\n *\n * @return {boolean} is or no\n */\n isString(obj) {\n return typeof obj === \"string\";\n }\n};\n","import Pool from \"../core/Pool\";\n\nexport default class BaseRenderer {\n constructor(element, stroke) {\n this.pool = new Pool();\n this.element = element;\n this.stroke = stroke;\n this.circleConf = { isCircle: true };\n\n this.initEventHandler();\n this.name = \"BaseRenderer\";\n }\n\n setStroke(color = \"#000000\", thinkness = 1) {\n this.stroke = { color, thinkness };\n }\n\n initEventHandler() {\n this._protonUpdateHandler = () => {\n this.onProtonUpdate.call(this);\n };\n\n this._protonUpdateAfterHandler = () => {\n this.onProtonUpdateAfter.call(this);\n };\n\n this._emitterAddedHandler = emitter => {\n this.onEmitterAdded.call(this, emitter);\n };\n\n this._emitterRemovedHandler = emitter => {\n this.onEmitterRemoved.call(this, emitter);\n };\n\n this._particleCreatedHandler = particle => {\n this.onParticleCreated.call(this, particle);\n };\n\n this._particleUpdateHandler = particle => {\n this.onParticleUpdate.call(this, particle);\n };\n\n this._particleDeadHandler = particle => {\n this.onParticleDead.call(this, particle);\n };\n }\n\n init(proton) {\n this.parent = proton;\n\n proton.addEventListener(\"PROTON_UPDATE\", this._protonUpdateHandler);\n proton.addEventListener(\"PROTON_UPDATE_AFTER\", this._protonUpdateAfterHandler);\n\n proton.addEventListener(\"EMITTER_ADDED\", this._emitterAddedHandler);\n proton.addEventListener(\"EMITTER_REMOVED\", this._emitterRemovedHandler);\n\n proton.addEventListener(\"PARTICLE_CREATED\", this._particleCreatedHandler);\n proton.addEventListener(\"PARTICLE_UPDATE\", this._particleUpdateHandler);\n proton.addEventListener(\"PARTICLE_DEAD\", this._particleDeadHandler);\n }\n\n resize(width, height) {}\n\n destroy() {\n this.remove();\n this.pool.destroy();\n this.pool = null;\n this.element = null;\n this.stroke = null;\n }\n\n remove(proton) {\n this.parent.removeEventListener(\"PROTON_UPDATE\", this._protonUpdateHandler);\n this.parent.removeEventListener(\"PROTON_UPDATE_AFTER\", this._protonUpdateAfterHandler);\n\n this.parent.removeEventListener(\"EMITTER_ADDED\", this._emitterAddedHandler);\n this.parent.removeEventListener(\"EMITTER_REMOVED\", this._emitterRemovedHandler);\n\n this.parent.removeEventListener(\"PARTICLE_CREATED\", this._particleCreatedHandler);\n this.parent.removeEventListener(\"PARTICLE_UPDATE\", this._particleUpdateHandler);\n this.parent.removeEventListener(\"PARTICLE_DEAD\", this._particleDeadHandler);\n\n this.parent = null;\n }\n\n onProtonUpdate() {}\n onProtonUpdateAfter() {}\n\n onEmitterAdded(emitter) {}\n onEmitterRemoved(emitter) {}\n\n onParticleCreated(particle) {}\n onParticleUpdate(particle) {}\n onParticleDead(particle) {}\n}\n","import Types from \"../utils/Types\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport ColorUtil from \"../utils/ColorUtil\";\nimport MathUtil from \"../math/MathUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nexport default class CanvasRenderer extends BaseRenderer {\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.context = this.element.getContext(\"2d\");\n this.bufferCache = {};\n this.name = \"CanvasRenderer\";\n }\n\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n onProtonUpdate() {\n this.context.clearRect(0, 0, this.element.width, this.element.height);\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.color = particle.color || \"#ff0000\";\n }\n }\n\n onParticleUpdate(particle) {\n if (particle.body) {\n if (Types.isImage(particle.body)) {\n this.drawImage(particle);\n }\n } else {\n this.drawCircle(particle);\n }\n }\n\n onParticleDead(particle) {\n particle.body = null;\n }\n\n // private method\n addImg2Body(img, particle) {\n particle.body = img;\n }\n\n // private drawImage method\n drawImage(particle) {\n const w = (particle.body.width * particle.scale) | 0;\n const h = (particle.body.height * particle.scale) | 0;\n const x = particle.p.x - w / 2;\n const y = particle.p.y - h / 2;\n\n if (!!particle.color) {\n if (!particle.data[\"buffer\"]) particle.data.buffer = this.createBuffer(particle.body);\n\n const bufContext = particle.data.buffer.getContext(\"2d\");\n bufContext.clearRect(0, 0, particle.data.buffer.width, particle.data.buffer.height);\n bufContext.globalAlpha = particle.alpha;\n bufContext.drawImage(particle.body, 0, 0);\n\n bufContext.globalCompositeOperation = \"source-atop\";\n bufContext.fillStyle = ColorUtil.rgbToHex(particle.rgb);\n bufContext.fillRect(0, 0, particle.data.buffer.width, particle.data.buffer.height);\n bufContext.globalCompositeOperation = \"source-over\";\n bufContext.globalAlpha = 1;\n\n this.context.drawImage(\n particle.data.buffer,\n 0,\n 0,\n particle.data.buffer.width,\n particle.data.buffer.height,\n x,\n y,\n w,\n h\n );\n } else {\n this.context.save();\n\n this.context.globalAlpha = particle.alpha;\n this.context.translate(particle.p.x, particle.p.y);\n this.context.rotate(MathUtil.degreeTransform(particle.rotation));\n this.context.translate(-particle.p.x, -particle.p.y);\n this.context.drawImage(particle.body, 0, 0, particle.body.width, particle.body.height, x, y, w, h);\n\n this.context.globalAlpha = 1;\n this.context.restore();\n }\n }\n\n // private drawCircle --\n drawCircle(particle) {\n if (particle.rgb) {\n this.context.fillStyle = `rgba(${particle.rgb.r},${particle.rgb.g},${particle.rgb.b},${particle.alpha})`;\n } else {\n this.context.fillStyle = particle.color;\n }\n\n // draw circle\n this.context.beginPath();\n this.context.arc(particle.p.x, particle.p.y, particle.radius, 0, Math.PI * 2, true);\n\n if (this.stroke) {\n this.context.strokeStyle = this.stroke.color;\n this.context.lineWidth = this.stroke.thinkness;\n this.context.stroke();\n }\n\n this.context.closePath();\n this.context.fill();\n }\n\n // private createBuffer\n createBuffer(image) {\n if (Types.isImage(image)) {\n const size = image.width + \"_\" + image.height;\n let canvas = this.bufferCache[size];\n\n if (!canvas) {\n canvas = document.createElement(\"canvas\");\n canvas.width = image.width;\n canvas.height = image.height;\n this.bufferCache[size] = canvas;\n }\n\n return canvas;\n }\n }\n\n destroy() {\n super.destroy();\n this.stroke = null;\n this.context = null;\n this.bufferCache = null;\n }\n}\n","import DomUtil from \"../utils/DomUtil\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nexport default class DomRenderer extends BaseRenderer {\n constructor(element) {\n super(element);\n\n this.stroke = null;\n this.transform3d = false;\n this.pool.create = (body, particle) => this.createBody(body, particle);\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.name = \"DomRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n particle.body = this.pool.get(this.circleConf, particle);\n this.element.appendChild(particle.body);\n }\n }\n\n onParticleUpdate(particle) {\n if (this.bodyReady(particle)) {\n if (this.transform3d) {\n DomUtil.transform3d(particle.body, particle.p.x, particle.p.y, particle.scale, particle.rotation);\n } else {\n DomUtil.transform(particle.body, particle.p.x, particle.p.y, particle.scale, particle.rotation);\n }\n\n particle.body.style.opacity = particle.alpha;\n\n if (particle.body.isCircle) {\n particle.body.style.backgroundColor = particle.color || \"#ff0000\";\n }\n }\n }\n\n onParticleDead(particle) {\n if (this.bodyReady(particle)) {\n this.element.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n }\n\n bodyReady(particle) {\n return typeof particle.body === \"object\" && particle.body && !particle.body.isInner;\n }\n\n // private method\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = this.pool.get(img, particle);\n DomUtil.resize(particle.body, img.width, img.height);\n\n this.element.appendChild(particle.body);\n }\n\n createBody(body, particle) {\n if (body.isCircle) return this.createCircle(particle);\n return this.createSprite(body, particle);\n }\n\n // private methods\n createCircle(particle) {\n const dom = DomUtil.createDiv(`${particle.id}_dom`, 2 * particle.radius, 2 * particle.radius);\n dom.style.borderRadius = `${particle.radius}px`;\n\n if (this.stroke) {\n dom.style.borderColor = this.stroke.color;\n dom.style.borderWidth = `${this.stroke.thinkness}px`;\n }\n dom.isCircle = true;\n\n return dom;\n }\n\n createSprite(body, particle) {\n const url = typeof body === \"string\" ? body : body.src;\n const dom = DomUtil.createDiv(`${particle.id}_dom`, body.width, body.height);\n dom.style.backgroundImage = `url(${url})`;\n\n return dom;\n }\n\n destroy() {\n super.destroy();\n this.stroke = null;\n }\n}\n","import Types from \"../utils/Types\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nexport default class EaselRenderer extends BaseRenderer {\n constructor(element, stroke) {\n super(element);\n\n this.stroke = stroke;\n this.name = \"EaselRenderer\";\n }\n\n onParticleCreated(particle) {\n if (particle.body) {\n this.createSprite(particle);\n } else {\n this.createCircle(particle);\n }\n\n this.element.addChild(particle.body);\n }\n\n onParticleUpdate(particle) {\n if (particle.body) {\n particle.body.x = particle.p.x;\n particle.body.y = particle.p.y;\n\n particle.body.alpha = particle.alpha;\n particle.body.scaleX = particle.body.scaleY = particle.scale;\n particle.body.rotation = particle.rotation;\n }\n }\n\n onParticleDead(particle) {\n if (particle.body) {\n particle.body.parent && particle.body.parent.removeChild(particle.body);\n this.pool.expire(particle.body);\n particle.body = null;\n }\n\n if (particle.graphics) this.pool.expire(particle.graphics);\n }\n\n // private\n createSprite(particle) {\n particle.body = this.pool.get(particle.body);\n\n if (particle.body.parent) return;\n if (particle.body[\"image\"]) {\n particle.body.regX = particle.body.image.width / 2;\n particle.body.regY = particle.body.image.height / 2;\n }\n }\n\n createCircle(particle) {\n const graphics = this.pool.get(createjs.Graphics);\n\n if (this.stroke) {\n if (Types.isString(this.stroke)) {\n graphics.beginStroke(this.stroke);\n } else {\n graphics.beginStroke(\"#000000\");\n }\n }\n graphics.beginFill(particle.color || \"#ff0000\").drawCircle(0, 0, particle.radius);\n const shape = this.pool.get(createjs.Shape, [graphics]);\n\n particle.body = shape;\n particle.graphics = graphics;\n }\n\n destroy() {\n super.destroy();\n this.stroke = null;\n }\n}\n","import Rectangle from \"../math/Rectangle\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nexport default class PixelRenderer extends BaseRenderer {\n constructor(element, rectangle) {\n super(element);\n\n this.context = this.element.getContext(\"2d\");\n this.imageData = null;\n this.rectangle = rectangle;\n this.createImageData(rectangle);\n\n this.name = \"PixelRenderer\";\n }\n\n resize(width, height) {\n this.element.width = width;\n this.element.height = height;\n }\n\n createImageData(rectangle) {\n this.rectangle = rectangle ? rectangle : new Rectangle(0, 0, this.element.width, this.element.height);\n this.imageData = this.context.createImageData(this.rectangle.width, this.rectangle.height);\n this.context.putImageData(this.imageData, this.rectangle.x, this.rectangle.y);\n }\n\n onProtonUpdate() {\n this.context.clearRect(this.rectangle.x, this.rectangle.y, this.rectangle.width, this.rectangle.height);\n this.imageData = this.context.getImageData(\n this.rectangle.x,\n this.rectangle.y,\n this.rectangle.width,\n this.rectangle.height\n );\n }\n\n onProtonUpdateAfter() {\n this.context.putImageData(this.imageData, this.rectangle.x, this.rectangle.y);\n }\n\n onParticleCreated(particle) {}\n\n onParticleUpdate(particle) {\n if (this.imageData) {\n this.setPixel(\n this.imageData,\n (particle.p.x - this.rectangle.x) >> 0,\n (particle.p.y - this.rectangle.y) >> 0,\n particle\n );\n }\n }\n\n setPixel(imagedata, x, y, particle) {\n const rgb = particle.rgb;\n if (x < 0 || x > this.element.width || y < 0 || y > this.elementwidth) return;\n\n const i = ((y >> 0) * imagedata.width + (x >> 0)) * 4;\n imagedata.data[i] = rgb.r;\n imagedata.data[i + 1] = rgb.g;\n imagedata.data[i + 2] = rgb.b;\n imagedata.data[i + 3] = particle.alpha * 255;\n }\n\n onParticleDead(particle) {}\n\n destroy() {\n super.destroy();\n this.stroke = null;\n this.context = null;\n this.imageData = null;\n this.rectangle = null;\n }\n}\n","import Mat3 from \"../math/Mat3\";\n\nexport default class MStack {\n constructor() {\n this.mats = [];\n this.size = 0;\n\n for (let i = 0; i < 20; i++) this.mats.push(Mat3.create([0, 0, 0, 0, 0, 0, 0, 0, 0]));\n }\n\n set(m, i) {\n if (i === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[i - 1], m, this.mats[i]);\n\n this.size = Math.max(this.size, i + 1);\n }\n\n push(m) {\n if (this.size === 0) Mat3.set(m, this.mats[0]);\n else Mat3.multiply(this.mats[this.size - 1], m, this.mats[this.size]);\n\n this.size++;\n }\n\n pop() {\n if (this.size > 0) this.size--;\n }\n\n top() {\n return this.mats[this.size - 1];\n }\n}\n","import Mat3 from \"../math/Mat3\";\nimport BaseRenderer from \"./BaseRenderer\";\n\nimport Util from \"../utils/Util\";\nimport ImgUtil from \"../utils/ImgUtil\";\nimport MStack from \"../utils/MStack\";\nimport DomUtil from \"../utils/DomUtil\";\nimport WebGLUtil from \"../utils/WebGLUtil\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default class WebGLRenderer extends BaseRenderer {\n constructor(element) {\n super(element);\n\n this.gl = this.element.getContext(\"experimental-webgl\", { antialias: true, stencil: false, depth: false });\n if (!this.gl) alert(\"Sorry your browser do not suppest WebGL!\");\n\n this.initVar();\n this.setMaxRadius();\n this.initShaders();\n this.initBuffers();\n\n this.gl.blendEquation(this.gl.FUNC_ADD);\n this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);\n this.gl.enable(this.gl.BLEND);\n this.addImg2Body = this.addImg2Body.bind(this);\n\n this.name = \"WebGLRenderer\";\n }\n\n init(proton) {\n super.init(proton);\n this.resize(this.element.width, this.element.height);\n }\n\n resize(width, height) {\n this.umat[4] = -2;\n this.umat[7] = 1;\n\n this.smat[0] = 1 / width;\n this.smat[4] = 1 / height;\n\n this.mstack.set(this.umat, 0);\n this.mstack.set(this.smat, 1);\n\n this.gl.viewport(0, 0, width, height);\n this.element.width = width;\n this.element.height = height;\n }\n\n setMaxRadius(radius) {\n this.circleCanvasURL = this.createCircle(radius);\n }\n\n getVertexShader() {\n const vsSource = [\n \"uniform vec2 viewport;\",\n \"attribute vec2 aVertexPosition;\",\n \"attribute vec2 aTextureCoord;\",\n \"uniform mat3 tMat;\",\n \"varying vec2 vTextureCoord;\",\n \"varying float alpha;\",\n \"void main() {\",\n \"vec3 v = tMat * vec3(aVertexPosition, 1.0);\",\n \"gl_Position = vec4(v.x, v.y, 0, 1);\",\n \"vTextureCoord = aTextureCoord;\",\n \"alpha = tMat[0][2];\",\n \"}\"\n ].join(\"\\n\");\n return vsSource;\n }\n\n getFragmentShader() {\n const fsSource = [\n \"precision mediump float;\",\n \"varying vec2 vTextureCoord;\",\n \"varying float alpha;\",\n \"uniform sampler2D uSampler;\",\n \"uniform vec4 color;\",\n \"uniform bool useTexture;\",\n \"uniform vec3 uColor;\",\n \"void main() {\",\n \"vec4 textureColor = texture2D(uSampler, vTextureCoord);\",\n \"gl_FragColor = textureColor * vec4(uColor, 1.0);\",\n \"gl_FragColor.w *= alpha;\",\n \"}\"\n ].join(\"\\n\");\n return fsSource;\n }\n\n initVar() {\n this.mstack = new MStack();\n this.umat = Mat3.create([2, 0, 1, 0, -2, 0, -1, 1, 1]);\n this.smat = Mat3.create([1 / 100, 0, 1, 0, 1 / 100, 0, 0, 0, 1]);\n this.texturebuffers = {};\n }\n\n blendEquation(A) {\n this.gl.blendEquation(this.gl[A]);\n }\n\n blendFunc(A, B) {\n this.gl.blendFunc(this.gl[A], this.gl[B]);\n }\n\n getShader(gl, str, fs) {\n const shader = fs ? gl.createShader(gl.FRAGMENT_SHADER) : gl.createShader(gl.VERTEX_SHADER);\n\n gl.shaderSource(shader, str);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n alert(gl.getShaderInfoLog(shader));\n return null;\n }\n\n return shader;\n }\n\n initShaders() {\n const fragmentShader = this.getShader(this.gl, this.getFragmentShader(), true);\n const vertexShader = this.getShader(this.gl, this.getVertexShader(), false);\n\n this.sprogram = this.gl.createProgram();\n this.gl.attachShader(this.sprogram, vertexShader);\n this.gl.attachShader(this.sprogram, fragmentShader);\n this.gl.linkProgram(this.sprogram);\n\n if (!this.gl.getProgramParameter(this.sprogram, this.gl.LINK_STATUS)) alert(\"Could not initialise shaders\");\n\n this.gl.useProgram(this.sprogram);\n this.sprogram.vpa = this.gl.getAttribLocation(this.sprogram, \"aVertexPosition\");\n this.sprogram.tca = this.gl.getAttribLocation(this.sprogram, \"aTextureCoord\");\n this.gl.enableVertexAttribArray(this.sprogram.tca);\n this.gl.enableVertexAttribArray(this.sprogram.vpa);\n\n this.sprogram.tMatUniform = this.gl.getUniformLocation(this.sprogram, \"tMat\");\n this.sprogram.samplerUniform = this.gl.getUniformLocation(this.sprogram, \"uSampler\");\n this.sprogram.useTex = this.gl.getUniformLocation(this.sprogram, \"useTexture\");\n this.sprogram.color = this.gl.getUniformLocation(this.sprogram, \"uColor\");\n this.gl.uniform1i(this.sprogram.useTex, 1);\n }\n\n initBuffers() {\n const vs = [0, 3, 1, 0, 2, 3];\n let idx;\n\n this.unitIBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(vs), this.gl.STATIC_DRAW);\n\n let i;\n let ids = [];\n for (i = 0; i < 100; i++) ids.push(i);\n idx = new Uint16Array(ids);\n\n this.unitI33 = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitI33);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n\n ids = [];\n for (i = 0; i < 100; i++) ids.push(i, i + 1, i + 2);\n idx = new Uint16Array(ids);\n\n this.stripBuffer = this.gl.createBuffer();\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.stripBuffer);\n this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, idx, this.gl.STATIC_DRAW);\n }\n\n createCircle(raidus) {\n this.circleCanvasRadius = WebGLUtil.nhpot(Util.initValue(raidus, 32));\n const canvas = DomUtil.createCanvas(\"circle_canvas\", this.circleCanvasRadius * 2, this.circleCanvasRadius * 2);\n const context = canvas.getContext(\"2d\");\n\n context.beginPath();\n context.arc(this.circleCanvasRadius, this.circleCanvasRadius, this.circleCanvasRadius, 0, Math.PI * 2, true);\n context.closePath();\n context.fillStyle = \"#FFF\";\n context.fill();\n\n return canvas.toDataURL();\n }\n\n drawImg2Canvas(particle) {\n const _w = particle.body.width;\n const _h = particle.body.height;\n\n const _width = WebGLUtil.nhpot(particle.body.width);\n const _height = WebGLUtil.nhpot(particle.body.height);\n\n const _scaleX = particle.body.width / _width;\n const _scaleY = particle.body.height / _height;\n\n if (!this.texturebuffers[particle.data.src])\n this.texturebuffers[particle.data.src] = [\n this.gl.createTexture(),\n this.gl.createBuffer(),\n this.gl.createBuffer()\n ];\n\n particle.data.texture = this.texturebuffers[particle.data.src][0];\n particle.data.vcBuffer = this.texturebuffers[particle.data.src][1];\n particle.data.tcBuffer = this.texturebuffers[particle.data.src][2];\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n new Float32Array([0.0, 0.0, _scaleX, 0.0, 0.0, _scaleY, _scaleY, _scaleY]),\n this.gl.STATIC_DRAW\n );\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.bufferData(\n this.gl.ARRAY_BUFFER,\n new Float32Array([0.0, 0.0, _w, 0.0, 0.0, _h, _w, _h]),\n this.gl.STATIC_DRAW\n );\n\n const context = particle.data.canvas.getContext(\"2d\");\n const data = context.getImageData(0, 0, _width, _height);\n\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, data);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);\n this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR_MIPMAP_NEAREST);\n this.gl.generateMipmap(this.gl.TEXTURE_2D);\n\n particle.data.textureLoaded = true;\n particle.data.textureWidth = _w;\n particle.data.textureHeight = _h;\n }\n\n onProtonUpdate() {\n // this.gl.clearColor(0, 0, 0, 1);\n // this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT);\n }\n\n onParticleCreated(particle) {\n particle.data.textureLoaded = false;\n particle.data.tmat = Mat3.create();\n particle.data.tmat[8] = 1;\n particle.data.imat = Mat3.create();\n particle.data.imat[8] = 1;\n\n if (particle.body) {\n ImgUtil.getImgFromCache(particle.body, this.addImg2Body, particle);\n } else {\n ImgUtil.getImgFromCache(this.circleCanvasURL, this.addImg2Body, particle);\n particle.data.oldScale = particle.radius / this.circleCanvasRadius;\n }\n }\n\n // private\n addImg2Body(img, particle) {\n if (particle.dead) return;\n particle.body = img;\n particle.data.src = img.src;\n particle.data.canvas = ImgUtil.getCanvasFromCache(img);\n particle.data.oldScale = 1;\n\n this.drawImg2Canvas(particle);\n }\n\n onParticleUpdate(particle) {\n if (particle.data.textureLoaded) {\n this.updateMatrix(particle);\n\n this.gl.uniform3f(this.sprogram.color, particle.rgb.r / 255, particle.rgb.g / 255, particle.rgb.b / 255);\n this.gl.uniformMatrix3fv(this.sprogram.tMatUniform, false, this.mstack.top());\n\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.vcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.vpa, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindBuffer(this.gl.ARRAY_BUFFER, particle.data.tcBuffer);\n this.gl.vertexAttribPointer(this.sprogram.tca, 2, this.gl.FLOAT, false, 0, 0);\n this.gl.bindTexture(this.gl.TEXTURE_2D, particle.data.texture);\n this.gl.uniform1i(this.sprogram.samplerUniform, 0);\n this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this.unitIBuffer);\n\n this.gl.drawElements(this.gl.TRIANGLES, 6, this.gl.UNSIGNED_SHORT, 0);\n this.mstack.pop();\n }\n }\n\n onParticleDead(particle) {}\n\n updateMatrix(particle) {\n const moveOriginMatrix = WebGLUtil.makeTranslation(\n -particle.data.textureWidth / 2,\n -particle.data.textureHeight / 2\n );\n const translationMatrix = WebGLUtil.makeTranslation(particle.p.x, particle.p.y);\n\n const angel = particle.rotation * MathUtil.PI_180;\n const rotationMatrix = WebGLUtil.makeRotation(angel);\n\n const scale = particle.scale * particle.data.oldScale;\n const scaleMatrix = WebGLUtil.makeScale(scale, scale);\n let matrix = WebGLUtil.matrixMultiply(moveOriginMatrix, scaleMatrix);\n\n matrix = WebGLUtil.matrixMultiply(matrix, rotationMatrix);\n matrix = WebGLUtil.matrixMultiply(matrix, translationMatrix);\n\n Mat3.inverse(matrix, particle.data.imat);\n matrix[2] = particle.alpha;\n\n this.mstack.push(matrix);\n }\n\n destroy() {\n super.destroy();\n this.gl = null;\n this.mstack = null;\n this.umat = null;\n this.smat = null;\n this.texturebuffers = null;\n }\n}\n","import BaseRenderer from \"./BaseRenderer\";\n\nexport default class CustomRenderer extends BaseRenderer {\n constructor(element) {\n super(element);\n\n this.name = \"CustomRenderer\";\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default class LineZone extends Zone {\n constructor(x1, y1, x2, y2, direction) {\n super();\n\n if (x2 - x1 >= 0) {\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n } else {\n this.x1 = x2;\n this.y1 = y2;\n this.x2 = x1;\n this.y2 = y1;\n }\n\n this.dx = this.x2 - this.x1;\n this.dy = this.y2 - this.y1;\n\n this.minx = Math.min(this.x1, this.x2);\n this.miny = Math.min(this.y1, this.y2);\n this.maxx = Math.max(this.x1, this.x2);\n this.maxy = Math.max(this.y1, this.y2);\n\n this.dot = this.x2 * this.y1 - this.x1 * this.y2;\n this.xxyy = this.dx * this.dx + this.dy * this.dy;\n\n this.gradient = this.getGradient();\n this.length = this.getLength();\n this.direction = Util.initValue(direction, \">\");\n }\n\n getPosition() {\n this.random = Math.random();\n this.vector.x = this.x1 + this.random * this.length * Math.cos(this.gradient);\n this.vector.y = this.y1 + this.random * this.length * Math.sin(this.gradient);\n\n return this.vector;\n }\n\n getDirection(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = B === 0 ? 1 : B;\n\n if ((A * x + B * y + C) * D > 0) return true;\n else return false;\n }\n\n getDistance(x, y) {\n const A = this.dy;\n const B = -this.dx;\n const C = this.dot;\n const D = A * x + B * y + C;\n\n return D / Math.sqrt(this.xxyy);\n }\n\n getSymmetric(v) {\n const tha2 = v.getGradient();\n const tha1 = this.getGradient();\n const tha = 2 * (tha1 - tha2);\n\n const oldx = v.x;\n const oldy = v.y;\n\n v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n\n return v;\n }\n\n getGradient() {\n return Math.atan2(this.dy, this.dx);\n }\n\n rangeOut(particle) {\n const angle = Math.abs(this.getGradient());\n\n if (angle <= MathUtil.PI / 4) {\n if (particle.p.x <= this.maxx && particle.p.x >= this.minx) return true;\n } else {\n if (particle.p.y <= this.maxy && particle.p.y >= this.miny) return true;\n }\n\n return false;\n }\n\n getLength() {\n return Math.sqrt(this.dx * this.dx + this.dy * this.dy);\n }\n\n crossing(particle) {\n if (this.crossType === \"dead\") {\n if (this.direction === \">\" || this.direction === \"R\" || this.direction === \"right\" || this.direction === \"down\") {\n if (!this.rangeOut(particle)) return;\n if (this.getDirection(particle.p.x, particle.p.y)) particle.dead = true;\n } else {\n if (!this.rangeOut(particle)) return;\n if (!this.getDirection(particle.p.x, particle.p.y)) particle.dead = true;\n }\n } else if (this.crossType === \"bound\") {\n if (!this.rangeOut(particle)) return;\n\n if (this.getDistance(particle.p.x, particle.p.y) <= particle.radius) {\n if (this.dx === 0) {\n particle.v.x *= -1;\n } else if (this.dy === 0) {\n particle.v.y *= -1;\n } else {\n this.getSymmetric(particle.v);\n }\n }\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, LineZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n}\n","import Zone from \"./Zone\";\nimport MathUtil from \"../math/MathUtil\";\n\nexport default class CircleZone extends Zone {\n constructor(x, y, radius) {\n super();\n\n this.x = x;\n this.y = y;\n this.radius = radius;\n this.angle = 0;\n this.center = { x, y };\n }\n\n getPosition() {\n this.angle = MathUtil.PIx2 * Math.random();\n this.randomRadius = Math.random() * this.radius;\n this.vector.x = this.x + this.randomRadius * Math.cos(this.angle);\n this.vector.y = this.y + this.randomRadius * Math.sin(this.angle);\n\n return this.vector;\n }\n\n setCenter(x, y) {\n this.center.x = x;\n this.center.y = y;\n }\n\n crossing(particle) {\n const d = particle.p.distanceTo(this.center);\n\n if (this.crossType === \"dead\") {\n if (d - particle.radius > this.radius) particle.dead = true;\n } else if (this.crossType === \"bound\") {\n if (d + particle.radius >= this.radius) this.getSymmetric(particle);\n } else if (this.crossType === \"cross\") {\n if (this.alert) {\n console.error(\"Sorry, CircleZone does not support cross method!\");\n this.alert = false;\n }\n }\n }\n\n getSymmetric(particle) {\n const tha2 = particle.v.getGradient();\n const tha1 = this.getGradient(particle);\n\n const tha = 2 * (tha1 - tha2);\n const oldx = particle.v.x;\n const oldy = particle.v.y;\n\n particle.v.x = oldx * Math.cos(tha) - oldy * Math.sin(tha);\n particle.v.y = oldx * Math.sin(tha) + oldy * Math.cos(tha);\n }\n\n getGradient(particle) {\n return -MathUtil.PI_2 + Math.atan2(particle.p.y - this.center.y, particle.p.x - this.center.x);\n }\n}\n","import Zone from \"./Zone\";\n\nexport default class RectZone extends Zone {\n constructor(x, y, width, height) {\n super();\n\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n\n getPosition() {\n this.vector.x = this.x + Math.random() * this.width;\n this.vector.y = this.y + Math.random() * this.height;\n\n return this.vector;\n }\n\n crossing(particle) {\n // particle dead zone\n if (this.crossType === \"dead\") {\n if (particle.p.x + particle.radius < this.x) particle.dead = true;\n else if (particle.p.x - particle.radius > this.x + this.width) particle.dead = true;\n\n if (particle.p.y + particle.radius < this.y) particle.dead = true;\n else if (particle.p.y - particle.radius > this.y + this.height) particle.dead = true;\n }\n\n // particle bound zone\n else if (this.crossType === \"bound\") {\n if (particle.p.x - particle.radius < this.x) {\n particle.p.x = this.x + particle.radius;\n particle.v.x *= -1;\n } else if (particle.p.x + particle.radius > this.x + this.width) {\n particle.p.x = this.x + this.width - particle.radius;\n particle.v.x *= -1;\n }\n\n if (particle.p.y - particle.radius < this.y) {\n particle.p.y = this.y + particle.radius;\n particle.v.y *= -1;\n } else if (particle.p.y + particle.radius > this.y + this.height) {\n particle.p.y = this.y + this.height - particle.radius;\n particle.v.y *= -1;\n }\n }\n\n // particle cross zone\n else if (this.crossType === \"cross\") {\n if (particle.p.x + particle.radius < this.x && particle.v.x <= 0) {\n particle.p.x = this.x + this.width + particle.radius;\n } else if (particle.p.x - particle.radius > this.x + this.width && particle.v.x >= 0) {\n particle.p.x = this.x - particle.radius;\n }\n\n if (particle.p.y + particle.radius < this.y && particle.v.y <= 0) {\n particle.p.y = this.y + this.height + particle.radius;\n } else if (particle.p.y - particle.radius > this.y + this.height && particle.v.y >= 0) {\n particle.p.y = this.y - particle.radius;\n }\n }\n }\n}\n","import Zone from \"./Zone\";\nimport Util from \"../utils/Util\";\n\nexport default class ImageZone extends Zone {\n constructor(imageData, x, y, d) {\n super();\n this.reset(imageData, x, y, d);\n }\n\n reset(imageData, x, y, d) {\n this.imageData = imageData;\n this.x = Util.initValue(x, 0);\n this.y = Util.initValue(y, 0);\n this.d = Util.initValue(d, 2);\n\n this.vectors = [];\n this.setVectors();\n }\n\n setVectors() {\n let i, j;\n const length1 = this.imageData.width;\n const length2 = this.imageData.height;\n\n for (i = 0; i < length1; i += this.d) {\n for (j = 0; j < length2; j += this.d) {\n let index = ((j >> 0) * length1 + (i >> 0)) * 4;\n\n if (this.imageData.data[index + 3] > 0) {\n this.vectors.push({ x: i + this.x, y: j + this.y });\n }\n }\n }\n\n return this.vector;\n }\n\n getBound(x, y) {\n const index = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n if (this.imageData.data[index + 3] > 0) return true;\n else return false;\n }\n\n getPosition() {\n const vector = Util.getRandFromArray(this.vectors);\n return this.vector.copy(vector);\n }\n\n getColor(x, y) {\n x -= this.x;\n y -= this.y;\n const i = ((y >> 0) * this.imageData.width + (x >> 0)) * 4;\n\n return {\n r: this.imageData.data[i],\n g: this.imageData.data[i + 1],\n b: this.imageData.data[i + 2],\n a: this.imageData.data[i + 3]\n };\n }\n\n crossing(particle) {\n if (this.crossType === \"dead\") {\n if (this.getBound(particle.p.x - this.x, particle.p.y - this.y)) particle.dead = true;\n else particle.dead = false;\n } else if (this.crossType === \"bound\") {\n if (!this.getBound(particle.p.x - this.x, particle.p.y - this.y)) particle.v.negate();\n }\n }\n\n destroy() {\n super.destroy();\n this.imageData = null;\n }\n}\n","import ColorUtil from \"../utils/ColorUtil\";\nimport CircleZone from \"../zone/CircleZone\";\nimport PointZone from \"../zone/PointZone\";\nimport LineZone from \"../zone/LineZone\";\nimport RectZone from \"../zone/RectZone\";\n\nexport default {\n addEventListener(proton, func) {\n proton.addEventListener(\"PROTON_UPDATE_AFTER\", () => func());\n },\n\n getStyle(color = \"#ff0000\") {\n const rgb = ColorUtil.hexToRgb(color);\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0.5)`;\n },\n\n drawZone(proton, canvas, zone, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n if (zone instanceof PointZone) {\n context.beginPath();\n context.fillStyle = style;\n context.arc(zone.x, zone.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n } else if (zone instanceof LineZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.moveTo(zone.x1, zone.y1);\n context.lineTo(zone.x2, zone.y2);\n context.stroke();\n context.closePath();\n } else if (zone instanceof RectZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.drawRect(zone.x, zone.y, zone.width, zone.height);\n context.stroke();\n context.closePath();\n } else if (zone instanceof CircleZone) {\n context.beginPath();\n context.strokeStyle = style;\n context.arc(zone.x, zone.y, zone.radius, 0, Math.PI * 2, true);\n context.stroke();\n context.closePath();\n }\n });\n },\n\n drawEmitter(proton, canvas, emitter, clear) {\n const context = canvas.getContext(\"2d\");\n const style = this.getStyle();\n\n this.addEventListener(proton, () => {\n if (clear) context.clearRect(0, 0, canvas.width, canvas.height);\n\n context.beginPath();\n context.fillStyle = style;\n context.arc(emitter.p.x, emitter.p.y, 10, 0, Math.PI * 2, true);\n context.fill();\n context.closePath();\n });\n }\n};\n","import Proton from \"./core/Proton\";\nimport Particle from \"./core/Particle\";\nimport Pool from \"./core/Pool\";\n\nimport Util from \"./utils/Util\";\nimport ColorUtil from \"./utils/ColorUtil\";\nimport MathUtil from \"./math/MathUtil\";\nimport Vector2D from \"./math/Vector2D\";\nimport Polar2D from \"./math/Polar2D\";\nimport Mat3 from \"./math/Mat3\";\nimport Span from \"./math/Span\";\nimport ArraySpan from \"./math/ArraySpan\";\nimport Rectangle from \"./math/Rectangle\";\nimport ease from \"./math/ease\";\n\nimport Rate from \"./initialize/Rate\";\nimport Initialize from \"./initialize/Initialize\";\nimport Life from \"./initialize/Life\";\nimport Position from \"./initialize/Position\";\nimport Velocity from \"./initialize/Velocity\";\nimport Mass from \"./initialize/Mass\";\nimport Radius from \"./initialize/Radius\";\nimport Body from \"./initialize/Body\";\n\nimport Behaviour from \"./behaviour/Behaviour\";\nimport Force from \"./behaviour/Force\";\nimport Attraction from \"./behaviour/Attraction\";\nimport RandomDrift from \"./behaviour/RandomDrift\";\nimport Gravity from \"./behaviour/Gravity\";\nimport Collision from \"./behaviour/Collision\";\nimport CrossZone from \"./behaviour/CrossZone\";\nimport Alpha from \"./behaviour/Alpha\";\nimport Scale from \"./behaviour/Scale\";\nimport Rotate from \"./behaviour/Rotate\";\nimport Color from \"./behaviour/Color\";\nimport Cyclone from \"./behaviour/Cyclone\";\nimport Repulsion from \"./behaviour/Repulsion\";\nimport GravityWell from \"./behaviour/GravityWell\";\n\nimport Emitter from \"./emitter/Emitter\";\nimport BehaviourEmitter from \"./emitter/BehaviourEmitter\";\nimport FollowEmitter from \"./emitter/FollowEmitter\";\n\nimport CanvasRenderer from \"./render/CanvasRenderer\";\nimport DomRenderer from \"./render/DomRenderer\";\nimport EaselRenderer from \"./render/EaselRenderer\";\nimport PixelRenderer from \"./render/PixelRenderer\";\nimport PixiRenderer from \"./render/PixiRenderer\";\nimport WebGLRenderer from \"./render/WebGLRenderer\";\nimport CustomRenderer from \"./render/CustomRenderer\";\n\nimport Zone from \"./zone/Zone\";\nimport LineZone from \"./zone/LineZone\";\nimport CircleZone from \"./zone/CircleZone\";\nimport PointZone from \"./zone/PointZone\";\nimport RectZone from \"./zone/RectZone\";\nimport ImageZone from \"./zone/ImageZone\";\n\nimport Debug from \"./debug/Debug\";\n\n// namespace\nProton.Particle = Particle;\nProton.Pool = Pool;\n\nProton.Util = Util;\nProton.ColorUtil = ColorUtil;\nProton.MathUtil = MathUtil;\nProton.Vector2D = Proton.Vector = Vector2D;\nProton.Polar2D = Proton.Polar = Polar2D;\nProton.ArraySpan = ArraySpan;\nProton.Rectangle = Rectangle;\nProton.Rate = Rate;\nProton.ease = ease;\nProton.Span = Span;\nProton.Mat3 = Mat3;\nProton.getSpan = (a, b, center) => new Span(a, b, center);\nProton.createArraySpan = ArraySpan.createArraySpan;\n\nProton.Initialize = Proton.Init = Initialize;\nProton.Life = Proton.L = Life;\nProton.Position = Proton.P = Position;\nProton.Velocity = Proton.V = Velocity;\nProton.Mass = Proton.M = Mass;\nProton.Radius = Proton.R = Radius;\nProton.Body = Proton.B = Body;\n\nProton.Behaviour = Behaviour;\nProton.Force = Proton.F = Force;\nProton.Attraction = Proton.A = Attraction;\nProton.RandomDrift = Proton.RD = RandomDrift;\nProton.Gravity = Proton.G = Gravity;\nProton.Collision = Collision;\nProton.CrossZone = CrossZone;\nProton.Alpha = Alpha;\nProton.Scale = Proton.S = Scale;\nProton.Rotate = Rotate;\nProton.Color = Color;\nProton.Repulsion = Repulsion;\nProton.Cyclone = Cyclone;\nProton.GravityWell = GravityWell;\n\nProton.Emitter = Emitter;\nProton.BehaviourEmitter = BehaviourEmitter;\nProton.FollowEmitter = FollowEmitter;\n\nProton.Zone = Zone;\nProton.LineZone = LineZone;\nProton.CircleZone = CircleZone;\nProton.PointZone = PointZone;\nProton.RectZone = RectZone;\nProton.ImageZone = ImageZone;\n\nProton.CanvasRenderer = CanvasRenderer;\nProton.DomRenderer = DomRenderer;\nProton.EaselRenderer = EaselRenderer;\nProton.PixiRenderer = PixiRenderer;\nProton.PixelRenderer = PixelRenderer;\nProton.WebGLRenderer = Proton.WebGlRenderer = WebGLRenderer;\nProton.CustomRenderer = CustomRenderer;\n\nProton.Debug = Debug;\nUtil.assign(Proton, ease);\n\n// export\nexport default Proton;\n"],"names":["WebGLUtil","length","i","tx","ty","angleInRadians","c","Math","cos","s","sin","sx","sy","a","b","a00","a01","a02","a10","a11","a12","a20","a21","a22","b00","b01","b02","b10","b11","b12","b20","b21","b22","DomUtil","createCanvas","id","width","height","position","dom","document","createElement","style","opacity","this","transform","createDiv","resize","marginLeft","marginTop","div","x","y","scale","rotate","willChange","css3","transform3d","key","val","bkey","charAt","toUpperCase","substr","imgsCache","canvasCache","canvasId","ImgUtil","context","image","rect","drawImage","imagedata","getImageData","clearRect","img","callback","param","src","Image","onload","e","target","canvas","getContext","Util","initValue","value","defaults","isArray","Object","prototype","toString","call","emptyArray","arr","toArray","sliceArray","arr1","index","arr2","push","getRandFromArray","floor","random","emptyObject","obj","ignore","indexOf","classApply","constructor","args","bind","apply","concat","destroyAll","destroy","assign","source","hasOwnProperty","idsMap","Puid","_index","_cache","type","undefined","getId","uid","getIdFromCache","isBody","isInner","getTarget","Pool","num","total","cache","get","params","p","__puid","pop","createOrClone","expire","getCache","create","clone","getCount","count","Stats","proton","container","emitterIndex","rendererIndex","update","body","add","emitter","getEmitter","renderer","getRenderer","str","emitters","emitSpeed","getEmitterPos","initializes","concatArr","behaviours","name","getCreatedNumber","pool","innerHTML","_this","bg","color","cssText","join","addEventListener","parentNode","appendChild","renderers","result","cpool","round","removeChild","EventDispatcher","_listeners","dispatchEvent","hasEventListener","removeEventListener","removeAllEventListeners","listener","splice","listeners","handler","PI","MathUtil","PIx2","PI_2","PI_180","N180_PI","Infinity","isInfinity","randomAToB","isInt","randomFloating","center","f","randomColor","slice","randomZone","display","k","digits","pow","degreeTransform","toColor16","Integration","calculate","particles","time","damping","eulerIntegrate","particle","sleep","old","copy","v","multiplyScalar","mass","clear","Proton","integrationType","now","then","elapsed","stats","EULER","integrator","_fps","_interval","DEFAULT_INTERVAL","addRenderer","render","init","removeRenderer","remove","addEmitter","parent","EMITTER_ADDED","removeEmitter","EMITTER_REMOVED","PROTON_UPDATE","USE_CLOCK","Date","getTime","amendChangeTabsBug","emittersUpdate","PROTON_UPDATE_AFTER","getAllParticles","destroyAllEmitters","destroyOther","setTimeout","set","fps","MEASURE","RK2","PARTICLE_CREATED","PARTICLE_UPDATE","PARTICLE_SLEEP","PARTICLE_DEAD","Rgb","r","g","reset","PropUtil","hasProp","setProp","props","prop","Span","getSpanValue","setVectorVal","conf","ease","easeLinear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","sqrt","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","getEasing","Vector2D","setX","setY","getGradient","atan2","w","addVectors","addXY","sub","subVectors","divideScalar","negate","dot","lengthSq","normalize","distanceTo","distanceToSquared","tha","dx","dy","lerp","alpha","equals","Particle","data","rgb","getDirection","life","age","dead","sprite","energy","radius","rotation","easing","removeAllBehaviours","applyBehaviours","max","applyBehaviour","addBehaviour","behaviour","parents","initialize","addBehaviours","removeBehaviour","ColorUtil","hexToRgb","h","hex16","substring","parseInt","rgbToHex","rbg","getHex16FromParticle","Number","Polar2D","abs","setR","setTha","toVector","getX","getY","Mat3","mat3","mat","Float32Array","mat1","mat2","multiply","inverse","multiplyVec2","m","vec","getValue","setSpanValue","pan","ArraySpan","_Span","_arr","createArraySpan","Rectangle","bottom","right","contains","Rate","numpan","timepan","numPan","timePan","startTime","nextTime","Initialize","Life","_Initialize","lifePan","Zone","vector","crossType","alert","getPosition","crossing","PointZone","_Zone","console","error","Position","zone","Velocity","rpan","thapan","rPan","thaPan","normalizeVelocity","vr","polar2d","Mass","massPan","Radius","oldRadius","Body","imageTarget","inner","Behaviour","normalizeForce","force","normalizeValue","Force","fx","fy","Attraction","targetPosition","radiusSq","attractionForce","RandomDrift","driftX","driftY","delay","panFoce","Gravity","_Force","Collision","newPool","collisionPool","delta","otherParticle","overlap","totalMass","averageMass1","averageMass2","distance","CrossZone","Alpha","same","alphaA","alphaB","Scale","scaleA","scaleB","Rotate","influence","rotationA","rotationB","Color","colorA","colorB","CHANGING","Cyclone","angle","setAngleAndForce","span","String","toLowerCase","cangle","cyclone","gradient","Repulsion","GravityWell","centerPoint","distanceVec","distanceSq","factor","InitializeUtil","bindEmitter","Emitter","_Particle","emitTime","totalTime","rate","emit","stoped","isNaN","stop","preEmit","oldStoped","oldEmitTime","oldTotalTime","step","removeAllParticles","addSelfInitialize","addInitialize","_len","arguments","rest","Array","_key","removeInitialize","initializer","removeAllInitializers","_len2","_key2","emitting","integrate","dispatch","event","bindEvent","createParticle","setupParticle","PIXIClass","BehaviourEmitter","_Emitter","selfBehaviours","addSelfBehaviour","removeSelfBehaviour","FollowEmitter","mouseTarget","window","_allowEmitting","initEventHandler","_this2","mousemoveHandler","mousemove","mousedownHandler","mousedown","mouseupHandler","mouseup","layerX","layerY","offsetX","offsetY","Types","__isImage","tagName","nodeName","BaseRenderer","element","stroke","circleConf","isCircle","setStroke","thinkness","_protonUpdateHandler","onProtonUpdate","_protonUpdateAfterHandler","onProtonUpdateAfter","_emitterAddedHandler","onEmitterAdded","_emitterRemovedHandler","onEmitterRemoved","_particleCreatedHandler","onParticleCreated","_particleUpdateHandler","onParticleUpdate","_particleDeadHandler","onParticleDead","CanvasRenderer","_BaseRenderer","bufferCache","addImg2Body","drawCircle","buffer","createBuffer","bufContext","globalAlpha","globalCompositeOperation","fillStyle","fillRect","save","translate","restore","beginPath","arc","strokeStyle","lineWidth","closePath","fill","size","DomRenderer","createBody","_assertThisInitialized","bodyReady","backgroundColor","createCircle","createSprite","borderRadius","borderColor","borderWidth","url","backgroundImage","EaselRenderer","addChild","scaleX","scaleY","graphics","regX","regY","createjs","Graphics","beginStroke","beginFill","shape","Shape","PixelRenderer","rectangle","imageData","createImageData","putImageData","setPixel","elementwidth","PixiRenderer","setColor","blendMode","setPIXI","PIXI","Sprite","createFromImage","from","fromImage","tint","anchor","endFill","MStack","mats","top","WebGLRenderer","gl","antialias","stencil","depth","initVar","setMaxRadius","initShaders","initBuffers","blendEquation","FUNC_ADD","blendFunc","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","enable","BLEND","umat","smat","mstack","viewport","circleCanvasURL","getVertexShader","getFragmentShader","texturebuffers","A","B","getShader","fs","shader","createShader","FRAGMENT_SHADER","VERTEX_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","getShaderInfoLog","fragmentShader","vertexShader","sprogram","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","useProgram","vpa","getAttribLocation","tca","enableVertexAttribArray","tMatUniform","getUniformLocation","samplerUniform","useTex","uniform1i","idx","unitIBuffer","bindBuffer","ELEMENT_ARRAY_BUFFER","bufferData","Uint16Array","STATIC_DRAW","ids","unitI33","stripBuffer","raidus","circleCanvasRadius","toDataURL","drawImg2Canvas","_w","_h","_width","_height","_scaleX","_scaleY","createTexture","texture","vcBuffer","tcBuffer","ARRAY_BUFFER","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_NEAREST","generateMipmap","textureLoaded","textureWidth","textureHeight","tmat","imat","oldScale","updateMatrix","uniform3f","uniformMatrix3fv","vertexAttribPointer","FLOAT","drawElements","TRIANGLES","UNSIGNED_SHORT","moveOriginMatrix","translationMatrix","angel","rotationMatrix","scaleMatrix","matrix","CustomRenderer","LineZone","x1","y1","x2","y2","direction","minx","min","miny","maxx","maxy","xxyy","getLength","getDistance","D","getSymmetric","tha2","oldx","oldy","rangeOut","CircleZone","randomRadius","setCenter","d","RectZone","ImageZone","vectors","setVectors","j","length1","length2","getBound","getColor","Debug","func","getStyle","drawZone","moveTo","lineTo","drawRect","drawEmitter","Vector","Polar","getSpan","Init","L","P","V","M","R","F","RD","G","S","WebGlRenderer"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index f4d3a99..8766610 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "proton-engine", - "version": "5.4.1", + "version": "5.4.3", "description": "Proton is a simple and powerful javascript particle animation engine.", "keywords": [ "particle", diff --git a/src/behaviour/Collision.js b/src/behaviour/Collision.js index 0525220..0ba3a56 100755 --- a/src/behaviour/Collision.js +++ b/src/behaviour/Collision.js @@ -29,8 +29,9 @@ export default class Collision extends Behaviour { */ constructor(emitter, mass, callback, life, easing) { super(life, easing); - this.reset(emitter, mass, callback); + this.newPool = []; + this.pool = []; this.name = "Collision"; } @@ -72,9 +73,13 @@ export default class Collision extends Behaviour { * @param {Int} index the particle index */ applyBehaviour(particle, time, index) { - const newPool = this.emitter ? this.emitter.particles.slice(index) : this.pool.slice(index); - const length = newPool.length; + if (this.emitter) { + Util.sliceArray(this.emitter.particles, index, this.newPool); + } else { + Util.sliceArray(this.pool, index, this.newPool); + } + const length = this.newPool.length; let otherParticle; let lengthSq; let overlap; @@ -83,7 +88,7 @@ export default class Collision extends Behaviour { let i; for (i = 0; i < length; i++) { - otherParticle = newPool[i]; + otherParticle = this.newPool[i]; if (otherParticle !== particle) { this.delta.copy(otherParticle.p); diff --git a/src/utils/Util.js b/src/utils/Util.js index 0c60fa8..abeb965 100755 --- a/src/utils/Util.js +++ b/src/utils/Util.js @@ -45,6 +45,13 @@ export default { return this.isArray(arr) ? arr : [arr]; }, + sliceArray(arr1, index, arr2) { + this.emptyArray(arr2); + for (let i = index; i < arr1.length; i++) { + arr2.push(arr1[i]); + } + }, + getRandFromArray(arr) { if (!arr) return null; return arr[Math.floor(arr.length * Math.random())];