@galacean/engine-physics-physx 1.0.0-alpha.7 → 1.0.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.js +4 -4
- package/dist/module.js +4 -4
- package/libs/physx.release.js +1 -1
- package/package.json +1 -1
package/dist/main.js
CHANGED
|
@@ -339,7 +339,7 @@ var ShapeFlag;
|
|
|
339
339
|
}
|
|
340
340
|
var controllers = this._controllers;
|
|
341
341
|
for(var i = 0, n = controllers.length; i < n; i++){
|
|
342
|
-
controllers.get(i).
|
|
342
|
+
controllers.get(i)._setLocalPosition(this._position, this._scale);
|
|
343
343
|
}
|
|
344
344
|
this._setLocalPose();
|
|
345
345
|
};
|
|
@@ -691,7 +691,7 @@ var /**
|
|
|
691
691
|
* @internal
|
|
692
692
|
*/ _proto._setLocalPosition = function _setLocalPosition(position, scale) {
|
|
693
693
|
engine.Vector3.multiply(position, scale, this._scaledOffset);
|
|
694
|
-
this.setWorldPosition(
|
|
694
|
+
this.setWorldPosition(position);
|
|
695
695
|
};
|
|
696
696
|
return PhysXCharacterController;
|
|
697
697
|
}();
|
|
@@ -1296,7 +1296,7 @@ var /**
|
|
|
1296
1296
|
if (runtimeMode == exports.PhysXRuntimeMode.JavaScript) {
|
|
1297
1297
|
script.src = "https://gw.alipayobjects.com/os/lib/oasis-engine/physics-physx/" + engine.version + "/libs/physx.release.js.js";
|
|
1298
1298
|
} else if (runtimeMode == exports.PhysXRuntimeMode.WebAssembly) {
|
|
1299
|
-
script.src = "https://gw.alipayobjects.com/os/lib/galacean/engine-physics-physx/
|
|
1299
|
+
script.src = "https://gw.alipayobjects.com/os/lib/galacean/engine-physics-physx/1.0.0-alpha.8/libs/physx.release.js";
|
|
1300
1300
|
}
|
|
1301
1301
|
});
|
|
1302
1302
|
var initializePromise = new Promise(function(resolve, reject) {
|
|
@@ -1405,4 +1405,4 @@ var InitializeState;
|
|
|
1405
1405
|
})(InitializeState || (InitializeState = {}));
|
|
1406
1406
|
|
|
1407
1407
|
exports.PhysXPhysics = PhysXPhysics;
|
|
1408
|
-
//# sourceMappingURL=main.js.map
|
|
1408
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bzd2MraGVscGVyc0AwLjUuMC9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9faW5zdGFuY2VvZi5qcyIsIi4uL3NyYy9lbnVtL1BoeXNYUnVudGltZU1vZGUudHMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHN3YytoZWxwZXJzQDAuNS4wL25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19zZXRfcHJvdG90eXBlX29mLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0Bzd2MraGVscGVyc0AwLjUuMC9ub2RlX21vZHVsZXMvQHN3Yy9oZWxwZXJzL2VzbS9faW5oZXJpdHMuanMiLCIuLi9zcmMvam9pbnQvUGh5c1hKb2ludC50cyIsIi4uL3NyYy9qb2ludC9QaHlzWEZpeGVkSm9pbnQudHMiLCIuLi9zcmMvam9pbnQvUGh5c1hIaW5nZUpvaW50LnRzIiwiLi4vc3JjL2pvaW50L1BoeXNYU3ByaW5nSm9pbnQudHMiLCIuLi9zcmMvRGlzb3JkZXJlZEFycmF5LnRzIiwiLi4vc3JjL3NoYXBlL1BoeXNYQ29sbGlkZXJTaGFwZS50cyIsIi4uL3NyYy9zaGFwZS9QaHlzWEJveENvbGxpZGVyU2hhcGUudHMiLCIuLi9zcmMvc2hhcGUvUGh5c1hDYXBzdWxlQ29sbGlkZXJTaGFwZS50cyIsIi4uL3NyYy9QaHlzWENoYXJhY3RlckNvbnRyb2xsZXIudHMiLCIuLi9zcmMvUGh5c1hDb2xsaWRlci50cyIsIi4uL3NyYy9QaHlzWER5bmFtaWNDb2xsaWRlci50cyIsIi4uL3NyYy9QaHlzWFBoeXNpY3NNYW5hZ2VyLnRzIiwiLi4vc3JjL1BoeXNYUGh5c2ljc01hdGVyaWFsLnRzIiwiLi4vc3JjL1BoeXNYU3RhdGljQ29sbGlkZXIudHMiLCIuLi9zcmMvc2hhcGUvUGh5c1hQbGFuZUNvbGxpZGVyU2hhcGUudHMiLCIuLi9zcmMvc2hhcGUvUGh5c1hTcGhlcmVDb2xsaWRlclNoYXBlLnRzIiwiLi4vc3JjL1BoeXNYUGh5c2ljcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gX2luc3RhbmNlb2YobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAocmlnaHQgIT0gbnVsbCAmJiB0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIHJpZ2h0W1N5bWJvbC5oYXNJbnN0YW5jZV0pIHtcbiAgICAgICAgcmV0dXJuICEhcmlnaHRbU3ltYm9sLmhhc0luc3RhbmNlXShsZWZ0KTtcbiAgICB9IGVsc2UgcmV0dXJuIGxlZnQgaW5zdGFuY2VvZiByaWdodDtcbn1cbmV4cG9ydCB7IF9pbnN0YW5jZW9mIGFzIF8gfTtcbiIsIi8qKlxuICogUGh5c1ggcnVudGltZSBtb2RlLlxuICovXG5leHBvcnQgZW51bSBQaHlzWFJ1bnRpbWVNb2RlIHtcbiAgLyoqIFVzZSB3ZWJBc3NlbWJseSBtb2RlIGZpcnN0LCBpZiBXZWJBc3NlbWJseSBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQsIHJvbGwgYmFjayB0byBKYXZhU2NyaXB0IG1vZGUuICAqL1xuICBBdXRvLFxuICAvKiogV2ViQXNzZW1ibHkgbW9kZS4gKi9cbiAgV2ViQXNzZW1ibHksXG4gIC8qKiBKYXZhU2NyaXB0IG1vZGUuICovXG4gIEphdmFTY3JpcHRcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBfc2V0X3Byb3RvdHlwZV9vZihvLCBwKSB7XG4gICAgX3NldF9wcm90b3R5cGVfb2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YobywgcCkge1xuICAgICAgICBvLl9fcHJvdG9fXyA9IHA7XG5cbiAgICAgICAgcmV0dXJuIG87XG4gICAgfTtcblxuICAgIHJldHVybiBfc2V0X3Byb3RvdHlwZV9vZihvLCBwKTtcbn1cbmV4cG9ydCB7IF9zZXRfcHJvdG90eXBlX29mIGFzIF8gfTtcbiIsImltcG9ydCB7IF9zZXRfcHJvdG90eXBlX29mIH0gZnJvbSBcIi4vX3NldF9wcm90b3R5cGVfb2YuanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykge1xuICAgIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICAgIH1cblxuICAgIHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTtcblxuICAgIGlmIChzdXBlckNsYXNzKSBfc2V0X3Byb3RvdHlwZV9vZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7XG59XG5leHBvcnQgeyBfaW5oZXJpdHMgYXMgXyB9O1xuIiwiaW1wb3J0IHsgSUpvaW50IH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtZGVzaWduXCI7XG5pbXBvcnQgeyBRdWF0ZXJuaW9uLCBWZWN0b3IzIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmVcIjtcbmltcG9ydCB7IFBoeXNYQ29sbGlkZXIgfSBmcm9tIFwiLi4vUGh5c1hDb2xsaWRlclwiO1xuaW1wb3J0IHsgUGh5c1hQaHlzaWNzIH0gZnJvbSBcIi4uL1BoeXNYUGh5c2ljc1wiO1xuXG4vKipcbiAqIGEgYmFzZSBpbnRlcmZhY2UgcHJvdmlkaW5nIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciBQaHlzWCBqb2ludHNcbiAqL1xuZXhwb3J0IGNsYXNzIFBoeXNYSm9pbnQgaW1wbGVtZW50cyBJSm9pbnQge1xuICBwcm90ZWN0ZWQgc3RhdGljIF94QXhpcyA9IG5ldyBWZWN0b3IzKDEsIDAsIDApO1xuICBwcm90ZWN0ZWQgc3RhdGljIF9kZWZhdWx0VmVjID0gbmV3IFZlY3RvcjMoKTtcbiAgcHJvdGVjdGVkIHN0YXRpYyBfZGVmYXVsdFF1YXQgPSBuZXcgUXVhdGVybmlvbigpO1xuXG4gIHByb3RlY3RlZCBfcHhKb2ludDogYW55O1xuICBwcm90ZWN0ZWQgX2NvbGxpZGVyOiBQaHlzWENvbGxpZGVyO1xuICBwcml2YXRlIF9jb25uZWN0ZWRBbmNob3IgPSBuZXcgVmVjdG9yMygpO1xuICBwcml2YXRlIF9icmVha0ZvcmNlOiBudW1iZXIgPSBOdW1iZXIuTUFYX1ZBTFVFO1xuICBwcml2YXRlIF9icmVha1RvcnF1ZTogbnVtYmVyID0gTnVtYmVyLk1BWF9WQUxVRTtcblxuICBwcm90ZWN0ZWQgX3BoeXNYUGh5c2ljczogUGh5c1hQaHlzaWNzO1xuXG4gIGNvbnN0cnVjdG9yKHBoeXNYUGh5c2ljczogUGh5c1hQaHlzaWNzKSB7XG4gICAgdGhpcy5fcGh5c1hQaHlzaWNzID0gcGh5c1hQaHlzaWNzO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJSm9pbnQuc2V0Q29ubmVjdGVkQ29sbGlkZXIgfVxuICAgKi9cbiAgc2V0Q29ubmVjdGVkQ29sbGlkZXIodmFsdWU6IFBoeXNYQ29sbGlkZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weEpvaW50LnNldEFjdG9ycyh2YWx1ZT8uX3B4QWN0b3IgfHwgbnVsbCwgdGhpcy5fY29sbGlkZXI/Ll9weEFjdG9yIHx8IG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJSm9pbnQuc2V0Q29ubmVjdGVkQW5jaG9yIH1cbiAgICovXG4gIHNldENvbm5lY3RlZEFuY2hvcih2YWx1ZTogVmVjdG9yMyk6IHZvaWQge1xuICAgIHRoaXMuX2Nvbm5lY3RlZEFuY2hvci5jb3B5RnJvbSh2YWx1ZSk7XG4gICAgdGhpcy5fc2V0TG9jYWxQb3NlKDAsIHZhbHVlLCBQaHlzWEpvaW50Ll9kZWZhdWx0UXVhdCk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElKb2ludC5zZXRDb25uZWN0ZWRNYXNzU2NhbGUgfVxuICAgKi9cbiAgc2V0Q29ubmVjdGVkTWFzc1NjYWxlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weEpvaW50LnNldEludk1hc3NTY2FsZTAoMSAvIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUpvaW50LnNldENvbm5lY3RlZEluZXJ0aWFTY2FsZSB9XG4gICAqL1xuICBzZXRDb25uZWN0ZWRJbmVydGlhU2NhbGUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0SW52SW5lcnRpYVNjYWxlMCgxIC8gdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJSm9pbnQuc2V0TWFzc1NjYWxlIH1cbiAgICovXG4gIHNldE1hc3NTY2FsZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhKb2ludC5zZXRJbnZNYXNzU2NhbGUxKDEgLyB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElKb2ludC5zZXRJbmVydGlhU2NhbGUgfVxuICAgKi9cbiAgc2V0SW5lcnRpYVNjYWxlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weEpvaW50LnNldEludkluZXJ0aWFTY2FsZTEoMSAvIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUpvaW50LnNldEJyZWFrRm9yY2UgfVxuICAgKi9cbiAgc2V0QnJlYWtGb3JjZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fYnJlYWtGb3JjZSA9IHZhbHVlO1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0QnJlYWtGb3JjZSh0aGlzLl9icmVha0ZvcmNlLCB0aGlzLl9icmVha1RvcnF1ZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElKb2ludC5zZXRCcmVha1RvcnF1ZSB9XG4gICAqL1xuICBzZXRCcmVha1RvcnF1ZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fYnJlYWtUb3JxdWUgPSB2YWx1ZTtcbiAgICB0aGlzLl9weEpvaW50LnNldEJyZWFrRm9yY2UodGhpcy5fYnJlYWtGb3JjZSwgdGhpcy5fYnJlYWtUb3JxdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgam9pbnQgbG9jYWwgcG9zZSBmb3IgYW4gYWN0b3IuXG4gICAqIEBwYXJhbSBhY3RvciAwIGZvciB0aGUgZmlyc3QgYWN0b3IsIDEgZm9yIHRoZSBzZWNvbmQgYWN0b3IuXG4gICAqIEBwYXJhbSBwb3NpdGlvbiB0aGUgbG9jYWwgcG9zaXRpb24gZm9yIHRoZSBhY3RvciB0aGlzIGpvaW50XG4gICAqIEBwYXJhbSByb3RhdGlvbiB0aGUgbG9jYWwgcm90YXRpb24gZm9yIHRoZSBhY3RvciB0aGlzIGpvaW50XG4gICAqL1xuICBwcm90ZWN0ZWQgX3NldExvY2FsUG9zZShhY3RvcjogbnVtYmVyLCBwb3NpdGlvbjogVmVjdG9yMywgcm90YXRpb246IFF1YXRlcm5pb24pOiB2b2lkIHtcbiAgICB0aGlzLl9weEpvaW50LnNldExvY2FsUG9zZShhY3RvciwgcG9zaXRpb24sIHJvdGF0aW9uKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgSUZpeGVkSm9pbnQgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1kZXNpZ25cIjtcbmltcG9ydCB7IFBoeXNYQ29sbGlkZXIgfSBmcm9tIFwiLi4vUGh5c1hDb2xsaWRlclwiO1xuaW1wb3J0IHsgUGh5c1hQaHlzaWNzIH0gZnJvbSBcIi4uL1BoeXNYUGh5c2ljc1wiO1xuaW1wb3J0IHsgUGh5c1hKb2ludCB9IGZyb20gXCIuL1BoeXNYSm9pbnRcIjtcblxuLyoqXG4gKiBBIGZpeGVkIGpvaW50IHBlcm1pdHMgbm8gcmVsYXRpdmUgbW92ZW1lbnQgYmV0d2VlbiB0d28gY29sbGlkZXJzLiBpZSB0aGUgYm9kaWVzIGFyZSBnbHVlZCB0b2dldGhlci5cbiAqL1xuZXhwb3J0IGNsYXNzIFBoeXNYRml4ZWRKb2ludCBleHRlbmRzIFBoeXNYSm9pbnQgaW1wbGVtZW50cyBJRml4ZWRKb2ludCB7XG4gIGNvbnN0cnVjdG9yKHBoeXNYUGh5c2ljczogUGh5c1hQaHlzaWNzLCBjb2xsaWRlcjogUGh5c1hDb2xsaWRlcikge1xuICAgIHN1cGVyKHBoeXNYUGh5c2ljcyk7XG4gICAgdGhpcy5fY29sbGlkZXIgPSBjb2xsaWRlcjtcbiAgICB0aGlzLl9weEpvaW50ID0gcGh5c1hQaHlzaWNzLl9weFBoeXNpY3MuY3JlYXRlRml4ZWRKb2ludChcbiAgICAgIG51bGwsXG4gICAgICBQaHlzWEpvaW50Ll9kZWZhdWx0VmVjLFxuICAgICAgUGh5c1hKb2ludC5fZGVmYXVsdFF1YXQsXG4gICAgICBjb2xsaWRlci5fcHhBY3RvcixcbiAgICAgIFBoeXNYSm9pbnQuX2RlZmF1bHRWZWMsXG4gICAgICBQaHlzWEpvaW50Ll9kZWZhdWx0UXVhdFxuICAgICk7XG4gIH1cbn1cbiIsImltcG9ydCB7IElIaW5nZUpvaW50IH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtZGVzaWduXCI7XG5pbXBvcnQgeyBRdWF0ZXJuaW9uLCBWZWN0b3IzIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmVcIjtcbmltcG9ydCB7IFBoeXNYQ29sbGlkZXIgfSBmcm9tIFwiLi4vUGh5c1hDb2xsaWRlclwiO1xuaW1wb3J0IHsgUGh5c1hQaHlzaWNzIH0gZnJvbSBcIi4uL1BoeXNYUGh5c2ljc1wiO1xuaW1wb3J0IHsgUGh5c1hKb2ludCB9IGZyb20gXCIuL1BoeXNYSm9pbnRcIjtcblxuLyoqXG4gKiBBIGpvaW50IHdoaWNoIGJlaGF2ZXMgaW4gYSBzaW1pbGFyIHdheSB0byBhIGhpbmdlIG9yIGF4bGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzWEhpbmdlSm9pbnQgZXh0ZW5kcyBQaHlzWEpvaW50IGltcGxlbWVudHMgSUhpbmdlSm9pbnQge1xuICBwcml2YXRlIF9heGlzUm90YXRpb25RdWF0ZXJuaW9uID0gbmV3IFF1YXRlcm5pb24oKTtcbiAgcHJpdmF0ZSBfc3dpbmdPZmZzZXQgPSBuZXcgVmVjdG9yMygpO1xuICBwcml2YXRlIF92ZWxvY2l0eSA9IG5ldyBWZWN0b3IzKCk7XG5cbiAgY29uc3RydWN0b3IocGh5c1hQaHlzaWNzOiBQaHlzWFBoeXNpY3MsIGNvbGxpZGVyOiBQaHlzWENvbGxpZGVyKSB7XG4gICAgc3VwZXIocGh5c1hQaHlzaWNzKTtcbiAgICB0aGlzLl9jb2xsaWRlciA9IGNvbGxpZGVyO1xuICAgIHRoaXMuX3B4Sm9pbnQgPSBwaHlzWFBoeXNpY3MuX3B4UGh5c2ljcy5jcmVhdGVSZXZvbHV0ZUpvaW50KFxuICAgICAgbnVsbCxcbiAgICAgIFBoeXNYSm9pbnQuX2RlZmF1bHRWZWMsXG4gICAgICBQaHlzWEpvaW50Ll9kZWZhdWx0UXVhdCxcbiAgICAgIGNvbGxpZGVyLl9weEFjdG9yLFxuICAgICAgUGh5c1hKb2ludC5fZGVmYXVsdFZlYyxcbiAgICAgIFBoeXNYSm9pbnQuX2RlZmF1bHRRdWF0XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUhpbmdlSm9pbnQuc2V0QXhpcyB9XG4gICAqL1xuICBzZXRBeGlzKHZhbHVlOiBWZWN0b3IzKTogdm9pZCB7XG4gICAgY29uc3QgeEF4aXMgPSBQaHlzWEpvaW50Ll94QXhpcztcbiAgICBjb25zdCBheGlzUm90YXRpb25RdWF0ZXJuaW9uID0gdGhpcy5fYXhpc1JvdGF0aW9uUXVhdGVybmlvbjtcbiAgICB4QXhpcy5zZXQoMSwgMCwgMCk7XG4gICAgdmFsdWUubm9ybWFsaXplKCk7XG4gICAgY29uc3QgYW5nbGUgPSBNYXRoLmFjb3MoVmVjdG9yMy5kb3QoeEF4aXMsIHZhbHVlKSk7XG4gICAgVmVjdG9yMy5jcm9zcyh4QXhpcywgdmFsdWUsIHhBeGlzKTtcbiAgICBRdWF0ZXJuaW9uLnJvdGF0aW9uQXhpc0FuZ2xlKHhBeGlzLCBhbmdsZSwgYXhpc1JvdGF0aW9uUXVhdGVybmlvbik7XG5cbiAgICB0aGlzLl9zZXRMb2NhbFBvc2UoMCwgdGhpcy5fc3dpbmdPZmZzZXQsIGF4aXNSb3RhdGlvblF1YXRlcm5pb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJSGluZ2VKb2ludC5zZXRTd2luZ09mZnNldCB9XG4gICAqL1xuICBzZXRTd2luZ09mZnNldCh2YWx1ZTogVmVjdG9yMyk6IHZvaWQge1xuICAgIHRoaXMuX3N3aW5nT2Zmc2V0LmNvcHlGcm9tKHZhbHVlKTtcbiAgICB0aGlzLl9zZXRMb2NhbFBvc2UoMSwgdGhpcy5fc3dpbmdPZmZzZXQsIHRoaXMuX2F4aXNSb3RhdGlvblF1YXRlcm5pb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJSGluZ2VKb2ludC5nZXRBbmdsZSB9XG4gICAqL1xuICBnZXRBbmdsZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9weEpvaW50LmdldEFuZ2xlKCk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElIaW5nZUpvaW50LmdldFZlbG9jaXR5IH1cbiAgICovXG4gIGdldFZlbG9jaXR5KCk6IFJlYWRvbmx5PFZlY3RvcjM+IHtcbiAgICBjb25zdCB2ZWxvY2l0eSA9IHRoaXMuX3ZlbG9jaXR5O1xuICAgIHZlbG9jaXR5LmNvcHlGcm9tKHRoaXMuX3B4Sm9pbnQuZ2V0VmVsb2NpdHkoKSk7XG4gICAgcmV0dXJuIHZlbG9jaXR5O1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJSGluZ2VKb2ludC5zZXRIYXJkTGltaXRDb25lIH1cbiAgICovXG4gIHNldEhhcmRMaW1pdChsb3dlckxpbWl0OiBudW1iZXIsIHVwcGVyTGltaXQ6IG51bWJlciwgY29udGFjdERpc3Q6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0SGFyZExpbWl0KGxvd2VyTGltaXQsIHVwcGVyTGltaXQsIGNvbnRhY3REaXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUhpbmdlSm9pbnQuc2V0SGFyZExpbWl0Q29uZSB9XG4gICAqL1xuICBzZXRTb2Z0TGltaXQobG93ZXJMaW1pdDogbnVtYmVyLCB1cHBlckxpbWl0OiBudW1iZXIsIHN0aWZmbmVzczogbnVtYmVyLCBkYW1waW5nOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weEpvaW50LnNldFNvZnRMaW1pdChsb3dlckxpbWl0LCB1cHBlckxpbWl0LCBzdGlmZm5lc3MsIGRhbXBpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJSGluZ2VKb2ludC5zZXREcml2ZVZlbG9jaXR5IH1cbiAgICovXG4gIHNldERyaXZlVmVsb2NpdHkodmVsb2NpdHk6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0RHJpdmVWZWxvY2l0eSh2ZWxvY2l0eSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElIaW5nZUpvaW50LnNldERyaXZlRm9yY2VMaW1pdCB9XG4gICAqL1xuICBzZXREcml2ZUZvcmNlTGltaXQobGltaXQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0RHJpdmVGb3JjZUxpbWl0KGxpbWl0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUhpbmdlSm9pbnQuc2V0RHJpdmVHZWFyUmF0aW8gfVxuICAgKi9cbiAgc2V0RHJpdmVHZWFyUmF0aW8ocmF0aW86IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0RHJpdmVHZWFyUmF0aW8ocmF0aW8pO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJSGluZ2VKb2ludC5zZXRIaW5nZUpvaW50RmxhZyB9XG4gICAqL1xuICBzZXRIaW5nZUpvaW50RmxhZyhmbGFnOiBudW1iZXIsIHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fcHhKb2ludC5zZXRSZXZvbHV0ZUpvaW50RmxhZyhmbGFnLCB2YWx1ZSk7XG4gIH1cbn1cbiIsImltcG9ydCB7IFBoeXNYUGh5c2ljcyB9IGZyb20gXCIuLi9QaHlzWFBoeXNpY3NcIjtcbmltcG9ydCB7IFBoeXNYSm9pbnQgfSBmcm9tIFwiLi9QaHlzWEpvaW50XCI7XG5pbXBvcnQgeyBJU3ByaW5nSm9pbnQgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1kZXNpZ25cIjtcbmltcG9ydCB7IFBoeXNYQ29sbGlkZXIgfSBmcm9tIFwiLi4vUGh5c1hDb2xsaWRlclwiO1xuaW1wb3J0IHsgVmVjdG9yMyB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lXCI7XG5cbi8qKlxuICogYSBqb2ludCB0aGF0IG1haW50YWlucyBhbiB1cHBlciBvciBsb3dlciBib3VuZCAob3IgYm90aCkgb24gdGhlIGRpc3RhbmNlIGJldHdlZW4gdHdvIHBvaW50cyBvbiBkaWZmZXJlbnQgb2JqZWN0c1xuICovXG5leHBvcnQgY2xhc3MgUGh5c1hTcHJpbmdKb2ludCBleHRlbmRzIFBoeXNYSm9pbnQgaW1wbGVtZW50cyBJU3ByaW5nSm9pbnQge1xuICBwcml2YXRlIF9zd2luZ09mZnNldCA9IG5ldyBWZWN0b3IzKCk7XG5cbiAgY29uc3RydWN0b3IocGh5c1hQaHlzaWNzOiBQaHlzWFBoeXNpY3MsIGNvbGxpZGVyOiBQaHlzWENvbGxpZGVyKSB7XG4gICAgc3VwZXIocGh5c1hQaHlzaWNzKTtcbiAgICB0aGlzLl9jb2xsaWRlciA9IGNvbGxpZGVyO1xuICAgIHRoaXMuX3B4Sm9pbnQgPSBwaHlzWFBoeXNpY3MuX3B4UGh5c2ljcy5jcmVhdGVEaXN0YW5jZUpvaW50KFxuICAgICAgbnVsbCxcbiAgICAgIFBoeXNYSm9pbnQuX2RlZmF1bHRWZWMsXG4gICAgICBQaHlzWEpvaW50Ll9kZWZhdWx0UXVhdCxcbiAgICAgIGNvbGxpZGVyLl9weEFjdG9yLFxuICAgICAgUGh5c1hKb2ludC5fZGVmYXVsdFZlYyxcbiAgICAgIFBoeXNYSm9pbnQuX2RlZmF1bHRRdWF0XG4gICAgKTtcbiAgICB0aGlzLl9weEpvaW50LnNldERpc3RhbmNlSm9pbnRGbGFnKDIsIHRydWUpOyAvLyBlbmFibGUgbWF4IGRpc3RhbmNlO1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0RGlzdGFuY2VKb2ludEZsYWcoNCwgdHJ1ZSk7IC8vIGVuYWJsZSBtaW4gZGlzdGFuY2U7XG4gICAgdGhpcy5fcHhKb2ludC5zZXREaXN0YW5jZUpvaW50RmxhZyg4LCB0cnVlKTsgLy8gZW5hYmxlIHNwcmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVNwcmluZ0pvaW50LnNldFN3aW5nT2Zmc2V0IH1cbiAgICovXG4gIHNldFN3aW5nT2Zmc2V0KHZhbHVlOiBWZWN0b3IzKTogdm9pZCB7XG4gICAgdGhpcy5fc3dpbmdPZmZzZXQuY29weUZyb20odmFsdWUpO1xuICAgIHRoaXMuX3NldExvY2FsUG9zZSgxLCB2YWx1ZSwgUGh5c1hKb2ludC5fZGVmYXVsdFF1YXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJU3ByaW5nSm9pbnQuc2V0TWluRGlzdGFuY2UgfVxuICAgKi9cbiAgc2V0TWluRGlzdGFuY2UoZGlzdGFuY2U6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0TWluRGlzdGFuY2UoZGlzdGFuY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJU3ByaW5nSm9pbnQuc2V0TWF4RGlzdGFuY2UgfVxuICAgKi9cbiAgc2V0TWF4RGlzdGFuY2UoZGlzdGFuY2U6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0TWF4RGlzdGFuY2UoZGlzdGFuY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJU3ByaW5nSm9pbnQuc2V0VG9sZXJhbmNlIH1cbiAgICovXG4gIHNldFRvbGVyYW5jZSh0b2xlcmFuY2U6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4Sm9pbnQuc2V0VG9sZXJhbmNlKHRvbGVyYW5jZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElTcHJpbmdKb2ludC5zZXRTdGlmZm5lc3MgfVxuICAgKi9cbiAgc2V0U3RpZmZuZXNzKHN0aWZmbmVzczogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhKb2ludC5zZXRTdGlmZm5lc3Moc3RpZmZuZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVNwcmluZ0pvaW50LnNldERhbXBpbmcgfVxuICAgKi9cbiAgc2V0RGFtcGluZyhkYW1waW5nOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weEpvaW50LnNldERhbXBpbmcoZGFtcGluZyk7XG4gIH1cbn1cbiIsIi8qKlxuICogSGlnaC1wZXJmb3JtYW5jZSB1bm9yZGVyZWQgYXJyYXksIGRlbGV0ZSB1c2VzIGV4Y2hhbmdlIG1ldGhvZCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLCBpbnRlcm5hbCBjYXBhY2l0eSBvbmx5IGluY3JlYXNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIERpc29yZGVyZWRBcnJheTxUPiB7XG4gIF9lbGVtZW50czogVFtdO1xuXG4gIGxlbmd0aDogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3Rvcihjb3VudDogbnVtYmVyID0gMCkge1xuICAgIHRoaXMuX2VsZW1lbnRzID0gbmV3IEFycmF5PFQ+KGNvdW50KTtcbiAgfVxuXG4gIGFkZChlbGVtZW50OiBUKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSB0aGlzLl9lbGVtZW50cy5sZW5ndGgpIHRoaXMuX2VsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgZWxzZSB0aGlzLl9lbGVtZW50c1t0aGlzLmxlbmd0aF0gPSBlbGVtZW50O1xuICAgIHRoaXMubGVuZ3RoKys7XG4gIH1cblxuICBkZWxldGUoZWxlbWVudDogVCk6IHZvaWQge1xuICAgIC8vVE9ETzogSXQgY2FuIGJlIG9wdGltaXplZCBmb3IgY3VzdG9tIGJpbmFyeSBzZWFyY2ggYW5kIG90aGVyIGFsZ29yaXRobXMsIGN1cnJlbnRseSB0aGlzLl9lbGVtZW50cz49dGhpcy5sZW5ndGggd2FzdGVzIHBlcmZvcm1hbmNlLlxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fZWxlbWVudHMuaW5kZXhPZihlbGVtZW50KTtcbiAgICB0aGlzLmRlbGV0ZUJ5SW5kZXgoaW5kZXgpO1xuICB9XG5cbiAgZ2V0KGluZGV4OiBudW1iZXIpOiBUIHtcbiAgICBpZiAoaW5kZXggPj0gdGhpcy5sZW5ndGgpIHtcbiAgICAgIHRocm93IFwiSW5kZXggaXMgb3V0IG9mIHJhbmdlLlwiO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudHNbaW5kZXhdO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKiBAcmV0dXJucyBUaGUgcmVwbGFjZWQgaXRlbSBpcyB1c2VkIHRvIHJlc2V0IGl0cyBpbmRleC5cbiAgICovXG4gIGRlbGV0ZUJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IFQge1xuICAgIHZhciBlbGVtZW50czogVFtdID0gdGhpcy5fZWxlbWVudHM7XG4gICAgbGV0IGVuZDogVCA9IG51bGw7XG4gICAgY29uc3QgbGFzdEluZGV4ID0gdGhpcy5sZW5ndGggLSAxO1xuICAgIGlmIChpbmRleCAhPT0gbGFzdEluZGV4KSB7XG4gICAgICBlbmQgPSBlbGVtZW50c1tsYXN0SW5kZXhdO1xuICAgICAgZWxlbWVudHNbaW5kZXhdID0gZW5kO1xuICAgIH1cbiAgICB0aGlzLmxlbmd0aC0tO1xuICAgIHJldHVybiBlbmQ7XG4gIH1cblxuICBnYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9lbGVtZW50cy5sZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgfVxufVxuIiwiaW1wb3J0IHsgSUNvbGxpZGVyU2hhcGUgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1kZXNpZ25cIjtcbmltcG9ydCB7IFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZVwiO1xuaW1wb3J0IHsgRGlzb3JkZXJlZEFycmF5IH0gZnJvbSBcIi4uL0Rpc29yZGVyZWRBcnJheVwiO1xuaW1wb3J0IHsgUGh5c1hDaGFyYWN0ZXJDb250cm9sbGVyIH0gZnJvbSBcIi4uL1BoeXNYQ2hhcmFjdGVyQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgUGh5c1hQaHlzaWNzIH0gZnJvbSBcIi4uL1BoeXNYUGh5c2ljc1wiO1xuaW1wb3J0IHsgUGh5c1hQaHlzaWNzTWF0ZXJpYWwgfSBmcm9tIFwiLi4vUGh5c1hQaHlzaWNzTWF0ZXJpYWxcIjtcblxuLyoqXG4gKiBGbGFncyB3aGljaCBhZmZlY3QgdGhlIGJlaGF2aW9yIG9mIFNoYXBlcy5cbiAqL1xuZXhwb3J0IGVudW0gU2hhcGVGbGFnIHtcbiAgLyoqIFRoZSBzaGFwZSB3aWxsIHBhcnRha2UgaW4gY29sbGlzaW9uIGluIHRoZSBwaHlzaWNhbCBzaW11bGF0aW9uLiAqL1xuICBTSU1VTEFUSU9OX1NIQVBFID0gMSA8PCAwLFxuICAvKiogVGhlIHNoYXBlIHdpbGwgcGFydGFrZSBpbiBzY2VuZSBxdWVyaWVzIChyYXkgY2FzdHMsIG92ZXJsYXAgdGVzdHMsIHN3ZWVwcywgLi4uKS4gKi9cbiAgU0NFTkVfUVVFUllfU0hBUEUgPSAxIDw8IDEsXG4gIC8qKiBUaGUgc2hhcGUgaXMgYSB0cmlnZ2VyIHdoaWNoIGNhbiBzZW5kIHJlcG9ydHMgd2hlbmV2ZXIgb3RoZXIgc2hhcGVzIGVudGVyL2xlYXZlIGl0cyB2b2x1bWUuICovXG4gIFRSSUdHRVJfU0hBUEUgPSAxIDw8IDJcbn1cblxuLyoqXG4gKiBBYnN0cmFjdCBjbGFzcyBmb3IgY29sbGlkZXIgc2hhcGVzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGh5c1hDb2xsaWRlclNoYXBlIGltcGxlbWVudHMgSUNvbGxpZGVyU2hhcGUge1xuICBzdGF0aWMgcmVhZG9ubHkgaGFsZlNxcnQ6IG51bWJlciA9IDAuNzA3MTA2NzgxMTg2NTU7XG4gIHN0YXRpYyB0cmFuc2Zvcm0gPSB7XG4gICAgdHJhbnNsYXRpb246IG5ldyBWZWN0b3IzKCksXG4gICAgcm90YXRpb246IG51bGxcbiAgfTtcblxuICAvKiogQGludGVybmFsICovXG4gIF9jb250cm9sbGVyczogRGlzb3JkZXJlZEFycmF5PFBoeXNYQ2hhcmFjdGVyQ29udHJvbGxlcj4gPSBuZXcgRGlzb3JkZXJlZEFycmF5PFBoeXNYQ2hhcmFjdGVyQ29udHJvbGxlcj4oKTtcblxuICBwcm90ZWN0ZWQgX3BoeXNYUGh5c2ljczogUGh5c1hQaHlzaWNzO1xuICBwcm90ZWN0ZWQgX3NjYWxlOiBWZWN0b3IzID0gbmV3IFZlY3RvcjMoMSwgMSwgMSk7XG4gIHByb3RlY3RlZCBfcG9zaXRpb246IFZlY3RvcjMgPSBuZXcgVmVjdG9yMygpO1xuICBwcm90ZWN0ZWQgX3JvdGF0aW9uOiBWZWN0b3IzID0gbnVsbDtcbiAgcHJvdGVjdGVkIF9heGlzOiBRdWF0ZXJuaW9uID0gbnVsbDtcbiAgcHJvdGVjdGVkIF9waHlzWFJvdGF0aW9uOiBRdWF0ZXJuaW9uID0gbmV3IFF1YXRlcm5pb24oKTtcblxuICBwcml2YXRlIF9zaGFwZUZsYWdzOiBTaGFwZUZsYWcgPSBTaGFwZUZsYWcuU0NFTkVfUVVFUllfU0hBUEUgfCBTaGFwZUZsYWcuU0lNVUxBVElPTl9TSEFQRTtcblxuICAvKiogQGludGVybmFsICovXG4gIF9weE1hdGVyaWFsczogYW55W10gPSBuZXcgQXJyYXkoMSk7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3B4U2hhcGU6IGFueTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcHhHZW9tZXRyeTogYW55O1xuICAvKiogQGludGVybmFsICovXG4gIF9pZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHBoeXNYUGh5c2ljczogUGh5c1hQaHlzaWNzKSB7XG4gICAgdGhpcy5fcGh5c1hQaHlzaWNzID0gcGh5c1hQaHlzaWNzO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ29sbGlkZXJTaGFwZS5zZXRSb3RhdGlvbiB9XG4gICAqL1xuICBzZXRSb3RhdGlvbih2YWx1ZTogVmVjdG9yMyk6IHZvaWQge1xuICAgIHRoaXMuX3JvdGF0aW9uID0gdmFsdWU7XG4gICAgUXVhdGVybmlvbi5yb3RhdGlvbllhd1BpdGNoUm9sbCh2YWx1ZS54LCB2YWx1ZS55LCB2YWx1ZS56LCB0aGlzLl9waHlzWFJvdGF0aW9uKTtcbiAgICB0aGlzLl9heGlzICYmIFF1YXRlcm5pb24ubXVsdGlwbHkodGhpcy5fcGh5c1hSb3RhdGlvbiwgdGhpcy5fYXhpcywgdGhpcy5fcGh5c1hSb3RhdGlvbik7XG4gICAgdGhpcy5fcGh5c1hSb3RhdGlvbi5ub3JtYWxpemUoKTtcbiAgICB0aGlzLl9zZXRMb2NhbFBvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNvbGxpZGVyU2hhcGUuc2V0UG9zaXRpb24gfVxuICAgKi9cbiAgc2V0UG9zaXRpb24odmFsdWU6IFZlY3RvcjMpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuX3Bvc2l0aW9uKSB7XG4gICAgICB0aGlzLl9wb3NpdGlvbi5jb3B5RnJvbSh2YWx1ZSk7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRyb2xsZXJzID0gdGhpcy5fY29udHJvbGxlcnM7XG4gICAgZm9yIChsZXQgaSA9IDAsIG4gPSBjb250cm9sbGVycy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgIGNvbnRyb2xsZXJzLmdldChpKS5fc2V0TG9jYWxQb3NpdGlvbih0aGlzLl9wb3NpdGlvbiwgdGhpcy5fc2NhbGUpO1xuICAgIH1cblxuICAgIHRoaXMuX3NldExvY2FsUG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ29sbGlkZXJTaGFwZS5zZXRXb3JsZFNjYWxlIH1cbiAgICovXG4gIHNldFdvcmxkU2NhbGUoc2NhbGU6IFZlY3RvcjMpOiB2b2lkIHtcbiAgICB0aGlzLl9zY2FsZS5jb3B5RnJvbShzY2FsZSk7XG4gICAgdGhpcy5fc2V0TG9jYWxQb3NlKCk7XG5cbiAgICBjb25zdCBjb250cm9sbGVycyA9IHRoaXMuX2NvbnRyb2xsZXJzO1xuICAgIGZvciAobGV0IGkgPSAwLCBuID0gY29udHJvbGxlcnMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBjb250cm9sbGVycy5nZXQoaSkuX3NldExvY2FsUG9zaXRpb24odGhpcy5fcG9zaXRpb24sIHRoaXMuX3NjYWxlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElDb2xsaWRlclNoYXBlLnNldENvbnRhY3RPZmZzZXQgfVxuICAgKiBAZGVmYXVsdCAwLjAyZiAqIFB4VG9sZXJhbmNlc1NjYWxlOjpsZW5ndGhcbiAgICovXG4gIHNldENvbnRhY3RPZmZzZXQob2Zmc2V0OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weFNoYXBlLnNldENvbnRhY3RPZmZzZXQob2Zmc2V0KTtcblxuICAgIGNvbnN0IGNvbnRyb2xsZXJzID0gdGhpcy5fY29udHJvbGxlcnM7XG4gICAgZm9yIChsZXQgaSA9IDAsIG4gPSBjb250cm9sbGVycy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgIGNvbnRyb2xsZXJzLmdldChpKS5fcHhDb250cm9sbGVyLnNldENvbnRhY3RPZmZzZXQob2Zmc2V0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElDb2xsaWRlclNoYXBlLnNldE1hdGVyaWFsIH1cbiAgICovXG4gIHNldE1hdGVyaWFsKHZhbHVlOiBQaHlzWFBoeXNpY3NNYXRlcmlhbCk6IHZvaWQge1xuICAgIHRoaXMuX3B4TWF0ZXJpYWxzWzBdID0gdmFsdWUuX3B4TWF0ZXJpYWw7XG4gICAgdGhpcy5fcHhTaGFwZS5zZXRNYXRlcmlhbHModGhpcy5fcHhNYXRlcmlhbHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ29sbGlkZXJTaGFwZS5zZXRJc1RyaWdnZXIgfVxuICAgKi9cbiAgc2V0SXNUcmlnZ2VyKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kaWZ5RmxhZyhTaGFwZUZsYWcuU0lNVUxBVElPTl9TSEFQRSwgIXZhbHVlKTtcbiAgICB0aGlzLl9tb2RpZnlGbGFnKFNoYXBlRmxhZy5UUklHR0VSX1NIQVBFLCB2YWx1ZSk7XG4gICAgdGhpcy5fc2V0U2hhcGVGbGFncyh0aGlzLl9zaGFwZUZsYWdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNvbGxpZGVyU2hhcGUuZGVzdHJveSB9XG4gICAqL1xuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3B4U2hhcGUucmVsZWFzZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqICBAaW50ZXJuYWxcbiAgICovXG4gIF9zZXRTaGFwZUZsYWdzKGZsYWdzOiBTaGFwZUZsYWcpIHtcbiAgICB0aGlzLl9zaGFwZUZsYWdzID0gZmxhZ3M7XG4gICAgdGhpcy5fcHhTaGFwZS5zZXRGbGFncyhuZXcgdGhpcy5fcGh5c1hQaHlzaWNzLl9waHlzWC5QeFNoYXBlRmxhZ3ModGhpcy5fc2hhcGVGbGFncykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9zZXRMb2NhbFBvc2UoKTogdm9pZCB7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gUGh5c1hDb2xsaWRlclNoYXBlLnRyYW5zZm9ybTtcbiAgICBWZWN0b3IzLm11bHRpcGx5KHRoaXMuX3Bvc2l0aW9uLCB0aGlzLl9zY2FsZSwgdHJhbnNmb3JtLnRyYW5zbGF0aW9uKTtcbiAgICB0cmFuc2Zvcm0ucm90YXRpb24gPSB0aGlzLl9waHlzWFJvdGF0aW9uO1xuICAgIHRoaXMuX3B4U2hhcGUuc2V0TG9jYWxQb3NlKHRyYW5zZm9ybSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2luaXRpYWxpemUobWF0ZXJpYWw6IFBoeXNYUGh5c2ljc01hdGVyaWFsLCBpZDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5faWQgPSBpZDtcbiAgICB0aGlzLl9weE1hdGVyaWFsc1swXSA9IG1hdGVyaWFsLl9weE1hdGVyaWFsO1xuICAgIHRoaXMuX3B4U2hhcGUgPSB0aGlzLl9waHlzWFBoeXNpY3MuX3B4UGh5c2ljcy5jcmVhdGVTaGFwZShcbiAgICAgIHRoaXMuX3B4R2VvbWV0cnksXG4gICAgICBtYXRlcmlhbC5fcHhNYXRlcmlhbCxcbiAgICAgIHRydWUsXG4gICAgICBuZXcgdGhpcy5fcGh5c1hQaHlzaWNzLl9waHlzWC5QeFNoYXBlRmxhZ3ModGhpcy5fc2hhcGVGbGFncylcbiAgICApO1xuICAgIHRoaXMuX3B4U2hhcGUuc2V0VVVJRChpZCk7XG4gIH1cblxuICBwcml2YXRlIF9tb2RpZnlGbGFnKGZsYWc6IFNoYXBlRmxhZywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9zaGFwZUZsYWdzID0gdmFsdWUgPyB0aGlzLl9zaGFwZUZsYWdzIHwgZmxhZyA6IHRoaXMuX3NoYXBlRmxhZ3MgJiB+ZmxhZztcbiAgfVxufVxuIiwiaW1wb3J0IHsgVmVjdG9yMyB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lXCI7XG5pbXBvcnQgeyBJQm94Q29sbGlkZXJTaGFwZSB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWRlc2lnblwiO1xuaW1wb3J0IHsgUGh5c1hQaHlzaWNzIH0gZnJvbSBcIi4uL1BoeXNYUGh5c2ljc1wiO1xuaW1wb3J0IHsgUGh5c1hQaHlzaWNzTWF0ZXJpYWwgfSBmcm9tIFwiLi4vUGh5c1hQaHlzaWNzTWF0ZXJpYWxcIjtcbmltcG9ydCB7IFBoeXNYQ29sbGlkZXJTaGFwZSB9IGZyb20gXCIuL1BoeXNYQ29sbGlkZXJTaGFwZVwiO1xuXG4vKipcbiAqIEJveCBjb2xsaWRlciBzaGFwZSBpbiBQaHlzWC5cbiAqL1xuZXhwb3J0IGNsYXNzIFBoeXNYQm94Q29sbGlkZXJTaGFwZSBleHRlbmRzIFBoeXNYQ29sbGlkZXJTaGFwZSBpbXBsZW1lbnRzIElCb3hDb2xsaWRlclNoYXBlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbXBIYWxmRXh0ZW50cyA9IG5ldyBWZWN0b3IzKCk7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2hhbGZTaXplOiBWZWN0b3IzID0gbmV3IFZlY3RvcjMoKTtcblxuICBjb25zdHJ1Y3RvcihwaHlzWFBoeXNpY3M6IFBoeXNYUGh5c2ljcywgdW5pcXVlSUQ6IG51bWJlciwgc2l6ZTogVmVjdG9yMywgbWF0ZXJpYWw6IFBoeXNYUGh5c2ljc01hdGVyaWFsKSB7XG4gICAgc3VwZXIocGh5c1hQaHlzaWNzKTtcblxuICAgIHRoaXMuX2hhbGZTaXplLnNldChzaXplLnggKiAwLjUsIHNpemUueSAqIDAuNSwgc2l6ZS56ICogMC41KTtcblxuICAgIHRoaXMuX3B4R2VvbWV0cnkgPSBuZXcgcGh5c1hQaHlzaWNzLl9waHlzWC5QeEJveEdlb21ldHJ5KFxuICAgICAgdGhpcy5faGFsZlNpemUueCAqIHRoaXMuX3NjYWxlLngsXG4gICAgICB0aGlzLl9oYWxmU2l6ZS55ICogdGhpcy5fc2NhbGUueSxcbiAgICAgIHRoaXMuX2hhbGZTaXplLnogKiB0aGlzLl9zY2FsZS56XG4gICAgKTtcbiAgICB0aGlzLl9pbml0aWFsaXplKG1hdGVyaWFsLCB1bmlxdWVJRCk7XG4gICAgdGhpcy5fc2V0TG9jYWxQb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElCb3hDb2xsaWRlclNoYXBlLnNldFNpemUgfVxuICAgKi9cbiAgc2V0U2l6ZSh2YWx1ZTogVmVjdG9yMyk6IHZvaWQge1xuICAgIGNvbnN0IHRlbXBFeHRlbnRzID0gUGh5c1hCb3hDb2xsaWRlclNoYXBlLl90ZW1wSGFsZkV4dGVudHM7XG4gICAgdGhpcy5faGFsZlNpemUuc2V0KHZhbHVlLnggKiAwLjUsIHZhbHVlLnkgKiAwLjUsIHZhbHVlLnogKiAwLjUpO1xuICAgIFZlY3RvcjMubXVsdGlwbHkodGhpcy5faGFsZlNpemUsIHRoaXMuX3NjYWxlLCB0ZW1wRXh0ZW50cyk7XG4gICAgdGhpcy5fcHhHZW9tZXRyeS5oYWxmRXh0ZW50cyA9IHRlbXBFeHRlbnRzO1xuICAgIHRoaXMuX3B4U2hhcGUuc2V0R2VvbWV0cnkodGhpcy5fcHhHZW9tZXRyeSk7XG5cbiAgICB0aGlzLl91cGRhdGVDb250cm9sbGVyKHRlbXBFeHRlbnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNvbGxpZGVyU2hhcGUuc2V0V29ybGRTY2FsZSB9XG4gICAqL1xuICBvdmVycmlkZSBzZXRXb3JsZFNjYWxlKHNjYWxlOiBWZWN0b3IzKTogdm9pZCB7XG4gICAgc3VwZXIuc2V0V29ybGRTY2FsZShzY2FsZSk7XG5cbiAgICBjb25zdCB0ZW1wRXh0ZW50cyA9IFBoeXNYQm94Q29sbGlkZXJTaGFwZS5fdGVtcEhhbGZFeHRlbnRzO1xuICAgIFZlY3RvcjMubXVsdGlwbHkodGhpcy5faGFsZlNpemUsIHRoaXMuX3NjYWxlLCB0ZW1wRXh0ZW50cyk7XG4gICAgdGhpcy5fcHhHZW9tZXRyeS5oYWxmRXh0ZW50cyA9IHRlbXBFeHRlbnRzO1xuICAgIHRoaXMuX3B4U2hhcGUuc2V0R2VvbWV0cnkodGhpcy5fcHhHZW9tZXRyeSk7XG5cbiAgICB0aGlzLl91cGRhdGVDb250cm9sbGVyKHRlbXBFeHRlbnRzKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUNvbnRyb2xsZXIoZXh0ZW50czogVmVjdG9yMykge1xuICAgIGNvbnN0IGNvbnRyb2xsZXJzID0gdGhpcy5fY29udHJvbGxlcnM7XG4gICAgZm9yIChsZXQgaSA9IDAsIG4gPSBjb250cm9sbGVycy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgIGNvbnN0IHB4Q29udHJvbGxlciA9IGNvbnRyb2xsZXJzLmdldChpKS5fcHhDb250cm9sbGVyO1xuICAgICAgcHhDb250cm9sbGVyLnNldEhhbGZIZWlnaHQoZXh0ZW50cy54KTtcbiAgICAgIHB4Q29udHJvbGxlci5zZXRIYWxmU2lkZUV4dGVudChleHRlbnRzLnkpO1xuICAgICAgcHhDb250cm9sbGVyLnNldEhhbGZGb3J3YXJkRXh0ZW50KGV4dGVudHMueik7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBJQ2Fwc3VsZUNvbGxpZGVyU2hhcGUgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1kZXNpZ25cIjtcbmltcG9ydCB7IFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZVwiO1xuaW1wb3J0IHsgUGh5c1hQaHlzaWNzIH0gZnJvbSBcIi4uL1BoeXNYUGh5c2ljc1wiO1xuaW1wb3J0IHsgUGh5c1hQaHlzaWNzTWF0ZXJpYWwgfSBmcm9tIFwiLi4vUGh5c1hQaHlzaWNzTWF0ZXJpYWxcIjtcbmltcG9ydCB7IFBoeXNYQ29sbGlkZXJTaGFwZSB9IGZyb20gXCIuL1BoeXNYQ29sbGlkZXJTaGFwZVwiO1xuXG4vKipcbiAqIENhcHN1bGUgY29sbGlkZXIgc2hhcGUgaW4gUGh5c1guXG4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzWENhcHN1bGVDb2xsaWRlclNoYXBlIGV4dGVuZHMgUGh5c1hDb2xsaWRlclNoYXBlIGltcGxlbWVudHMgSUNhcHN1bGVDb2xsaWRlclNoYXBlIHtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcmFkaXVzOiBudW1iZXI7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX2hhbGZIZWlnaHQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdXBBeGlzOiBDb2xsaWRlclNoYXBlVXBBeGlzID0gQ29sbGlkZXJTaGFwZVVwQXhpcy5ZO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHBoeXNYUGh5c2ljczogUGh5c1hQaHlzaWNzLFxuICAgIHVuaXF1ZUlEOiBudW1iZXIsXG4gICAgcmFkaXVzOiBudW1iZXIsXG4gICAgaGVpZ2h0OiBudW1iZXIsXG4gICAgbWF0ZXJpYWw6IFBoeXNYUGh5c2ljc01hdGVyaWFsXG4gICkge1xuICAgIHN1cGVyKHBoeXNYUGh5c2ljcyk7XG5cbiAgICB0aGlzLl9yYWRpdXMgPSByYWRpdXM7XG4gICAgdGhpcy5faGFsZkhlaWdodCA9IGhlaWdodCAqIDAuNTtcbiAgICB0aGlzLl9heGlzID0gbmV3IFF1YXRlcm5pb24oMCwgMCwgUGh5c1hDb2xsaWRlclNoYXBlLmhhbGZTcXJ0LCBQaHlzWENvbGxpZGVyU2hhcGUuaGFsZlNxcnQpO1xuICAgIHRoaXMuX3BoeXNYUm90YXRpb24uY29weUZyb20odGhpcy5fYXhpcyk7XG5cbiAgICB0aGlzLl9weEdlb21ldHJ5ID0gbmV3IHBoeXNYUGh5c2ljcy5fcGh5c1guUHhDYXBzdWxlR2VvbWV0cnkodGhpcy5fcmFkaXVzLCB0aGlzLl9oYWxmSGVpZ2h0KTtcbiAgICB0aGlzLl9pbml0aWFsaXplKG1hdGVyaWFsLCB1bmlxdWVJRCk7XG4gICAgdGhpcy5fc2V0TG9jYWxQb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElDYXBzdWxlQ29sbGlkZXJTaGFwZS5zZXRSYWRpdXMgfVxuICAgKi9cbiAgc2V0UmFkaXVzKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9yYWRpdXMgPSB2YWx1ZTtcbiAgICBzd2l0Y2ggKHRoaXMuX3VwQXhpcykge1xuICAgICAgY2FzZSBDb2xsaWRlclNoYXBlVXBBeGlzLlg6XG4gICAgICAgIHRoaXMuX3B4R2VvbWV0cnkucmFkaXVzID0gdGhpcy5fcmFkaXVzICogTWF0aC5tYXgodGhpcy5fc2NhbGUueSwgdGhpcy5fc2NhbGUueik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDb2xsaWRlclNoYXBlVXBBeGlzLlk6XG4gICAgICAgIHRoaXMuX3B4R2VvbWV0cnkucmFkaXVzID0gdGhpcy5fcmFkaXVzICogTWF0aC5tYXgodGhpcy5fc2NhbGUueCwgdGhpcy5fc2NhbGUueik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDb2xsaWRlclNoYXBlVXBBeGlzLlo6XG4gICAgICAgIHRoaXMuX3B4R2VvbWV0cnkucmFkaXVzID0gdGhpcy5fcmFkaXVzICogTWF0aC5tYXgodGhpcy5fc2NhbGUueCwgdGhpcy5fc2NhbGUueSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLl9weFNoYXBlLnNldEdlb21ldHJ5KHRoaXMuX3B4R2VvbWV0cnkpO1xuXG4gICAgY29uc3QgcmFkaXVzID0gdGhpcy5fcHhHZW9tZXRyeS5yYWRpdXM7XG4gICAgY29uc3QgY29udHJvbGxlcnMgPSB0aGlzLl9jb250cm9sbGVycztcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGNvbnRyb2xsZXJzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgY29udHJvbGxlcnMuZ2V0KGkpLl9weENvbnRyb2xsZXIuc2V0UmFkaXVzKHJhZGl1cyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ2Fwc3VsZUNvbGxpZGVyU2hhcGUuc2V0SGVpZ2h0IH1cbiAgICovXG4gIHNldEhlaWdodCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5faGFsZkhlaWdodCA9IHZhbHVlICogMC41O1xuICAgIHN3aXRjaCAodGhpcy5fdXBBeGlzKSB7XG4gICAgICBjYXNlIENvbGxpZGVyU2hhcGVVcEF4aXMuWDpcbiAgICAgICAgdGhpcy5fcHhHZW9tZXRyeS5oYWxmSGVpZ2h0ID0gdGhpcy5faGFsZkhlaWdodCAqIHRoaXMuX3NjYWxlLng7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDb2xsaWRlclNoYXBlVXBBeGlzLlk6XG4gICAgICAgIHRoaXMuX3B4R2VvbWV0cnkuaGFsZkhlaWdodCA9IHRoaXMuX2hhbGZIZWlnaHQgKiB0aGlzLl9zY2FsZS55O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ29sbGlkZXJTaGFwZVVwQXhpcy5aOlxuICAgICAgICB0aGlzLl9weEdlb21ldHJ5LmhhbGZIZWlnaHQgPSB0aGlzLl9oYWxmSGVpZ2h0ICogdGhpcy5fc2NhbGUuejtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuX3B4U2hhcGUuc2V0R2VvbWV0cnkodGhpcy5fcHhHZW9tZXRyeSk7XG5cbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLl9weEdlb21ldHJ5LmhhbGZIZWlnaHQgKiAyO1xuICAgIGNvbnN0IGNvbnRyb2xsZXJzID0gdGhpcy5fY29udHJvbGxlcnM7XG4gICAgZm9yIChsZXQgaSA9IDAsIG4gPSBjb250cm9sbGVycy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgIGNvbnRyb2xsZXJzLmdldChpKS5fcHhDb250cm9sbGVyLnNldEhlaWdodChoZWlnaHQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNhcHN1bGVDb2xsaWRlclNoYXBlLnNldFVwQXhpcyB9XG4gICAqL1xuICBzZXRVcEF4aXModXBBeGlzOiBDb2xsaWRlclNoYXBlVXBBeGlzKTogdm9pZCB7XG4gICAgY29uc3QgeyBfcm90YXRpb246IHJvdGF0aW9uLCBfYXhpczogYXhpcywgX3BoeXNYUm90YXRpb246IHBoeXNYUm90YXRpb24gfSA9IHRoaXM7XG5cbiAgICB0aGlzLl91cEF4aXMgPSB1cEF4aXM7XG4gICAgc3dpdGNoICh0aGlzLl91cEF4aXMpIHtcbiAgICAgIGNhc2UgQ29sbGlkZXJTaGFwZVVwQXhpcy5YOlxuICAgICAgICBheGlzLnNldCgwLCAwLCAwLCAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENvbGxpZGVyU2hhcGVVcEF4aXMuWTpcbiAgICAgICAgYXhpcy5zZXQoMCwgMCwgUGh5c1hDb2xsaWRlclNoYXBlLmhhbGZTcXJ0LCBQaHlzWENvbGxpZGVyU2hhcGUuaGFsZlNxcnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ29sbGlkZXJTaGFwZVVwQXhpcy5aOlxuICAgICAgICBheGlzLnNldCgwLCBQaHlzWENvbGxpZGVyU2hhcGUuaGFsZlNxcnQsIDAsIFBoeXNYQ29sbGlkZXJTaGFwZS5oYWxmU3FydCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAocm90YXRpb24pIHtcbiAgICAgIFF1YXRlcm5pb24ucm90YXRpb25ZYXdQaXRjaFJvbGwocm90YXRpb24ueCwgcm90YXRpb24ueSwgcm90YXRpb24ueiwgcGh5c1hSb3RhdGlvbik7XG4gICAgICBRdWF0ZXJuaW9uLm11bHRpcGx5KHBoeXNYUm90YXRpb24sIGF4aXMsIHBoeXNYUm90YXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwaHlzWFJvdGF0aW9uLmNvcHlGcm9tKGF4aXMpO1xuICAgIH1cbiAgICB0aGlzLl9zZXRMb2NhbFBvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNvbGxpZGVyU2hhcGUuc2V0V29ybGRTY2FsZSB9XG4gICAqL1xuICBvdmVycmlkZSBzZXRXb3JsZFNjYWxlKHNjYWxlOiBWZWN0b3IzKTogdm9pZCB7XG4gICAgc3VwZXIuc2V0V29ybGRTY2FsZShzY2FsZSk7XG5cbiAgICBjb25zdCBnZW9tZXRyeSA9IHRoaXMuX3B4R2VvbWV0cnk7XG4gICAgc3dpdGNoICh0aGlzLl91cEF4aXMpIHtcbiAgICAgIGNhc2UgQ29sbGlkZXJTaGFwZVVwQXhpcy5YOlxuICAgICAgICBnZW9tZXRyeS5yYWRpdXMgPSB0aGlzLl9yYWRpdXMgKiBNYXRoLm1heChzY2FsZS55LCBzY2FsZS56KTtcbiAgICAgICAgZ2VvbWV0cnkuaGFsZkhlaWdodCA9IHRoaXMuX2hhbGZIZWlnaHQgKiBzY2FsZS54O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ29sbGlkZXJTaGFwZVVwQXhpcy5ZOlxuICAgICAgICBnZW9tZXRyeS5yYWRpdXMgPSB0aGlzLl9yYWRpdXMgKiBNYXRoLm1heChzY2FsZS54LCBzY2FsZS56KTtcbiAgICAgICAgZ2VvbWV0cnkuaGFsZkhlaWdodCA9IHRoaXMuX2hhbGZIZWlnaHQgKiBzY2FsZS55O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ29sbGlkZXJTaGFwZVVwQXhpcy5aOlxuICAgICAgICBnZW9tZXRyeS5yYWRpdXMgPSB0aGlzLl9yYWRpdXMgKiBNYXRoLm1heChzY2FsZS54LCBzY2FsZS55KTtcbiAgICAgICAgZ2VvbWV0cnkuaGFsZkhlaWdodCA9IHRoaXMuX2hhbGZIZWlnaHQgKiBzY2FsZS56O1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5fcHhTaGFwZS5zZXRHZW9tZXRyeShnZW9tZXRyeSk7XG5cbiAgICBjb25zdCByYWRpdXMgPSBnZW9tZXRyeS5yYWRpdXM7XG4gICAgY29uc3QgaGVpZ2h0ID0gZ2VvbWV0cnkuaGFsZkhlaWdodCAqIDI7XG4gICAgY29uc3QgY29udHJvbGxlcnMgPSB0aGlzLl9jb250cm9sbGVycztcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGNvbnRyb2xsZXJzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgY29uc3QgcHhDb250cm9sbGVyID0gY29udHJvbGxlcnMuZ2V0KGkpLl9weENvbnRyb2xsZXI7XG4gICAgICBweENvbnRyb2xsZXIuc2V0UmFkaXVzKHJhZGl1cyk7XG4gICAgICBweENvbnRyb2xsZXIuc2V0SGVpZ2h0KGhlaWdodCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVGhlIHVwIGF4aXMgb2YgdGhlIGNvbGxpZGVyIHNoYXBlLlxuICovXG5lbnVtIENvbGxpZGVyU2hhcGVVcEF4aXMge1xuICAvKiogVXAgYXhpcyBpcyBYLiAqL1xuICBYLFxuICAvKiogVXAgYXhpcyBpcyBZLiAqL1xuICBZLFxuICAvKiogVXAgYXhpcyBpcyBaLiAqL1xuICBaXG59XG4iLCJpbXBvcnQgeyBJQ2hhcmFjdGVyQ29udHJvbGxlciB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWRlc2lnblwiO1xuaW1wb3J0IHsgVmVjdG9yMyB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3MgfSBmcm9tIFwiLi9QaHlzWFBoeXNpY3NcIjtcbmltcG9ydCB7IFBoeXNYUGh5c2ljc01hbmFnZXIgfSBmcm9tIFwiLi9QaHlzWFBoeXNpY3NNYW5hZ2VyXCI7XG5pbXBvcnQgeyBQaHlzWEJveENvbGxpZGVyU2hhcGUgfSBmcm9tIFwiLi9zaGFwZS9QaHlzWEJveENvbGxpZGVyU2hhcGVcIjtcbmltcG9ydCB7IFBoeXNYQ2Fwc3VsZUNvbGxpZGVyU2hhcGUgfSBmcm9tIFwiLi9zaGFwZS9QaHlzWENhcHN1bGVDb2xsaWRlclNoYXBlXCI7XG5pbXBvcnQgeyBQaHlzWENvbGxpZGVyU2hhcGUgfSBmcm9tIFwiLi9zaGFwZS9QaHlzWENvbGxpZGVyU2hhcGVcIjtcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBjaGFyYWN0ZXIgY29udHJvbGxlcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzWENoYXJhY3RlckNvbnRyb2xsZXIgaW1wbGVtZW50cyBJQ2hhcmFjdGVyQ29udHJvbGxlciB7XG4gIHByaXZhdGUgc3RhdGljIF90ZW1wVmVjID0gbmV3IFZlY3RvcjMoKTtcblxuICAvKiogQGludGVybmFsICovXG4gIF9pZDogbnVtYmVyO1xuICAvKiogQGludGVybmFsICovXG4gIF9weENvbnRyb2xsZXI6IGFueTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcHhNYW5hZ2VyOiBQaHlzWFBoeXNpY3NNYW5hZ2VyO1xuICAvKiogQGludGVybmFsICovXG4gIF9zaGFwZTogUGh5c1hDb2xsaWRlclNoYXBlO1xuICBwcml2YXRlIF9zY2FsZWRPZmZzZXQgPSBuZXcgVmVjdG9yMygpO1xuICBwcml2YXRlIF9wb3NpdGlvbjogVmVjdG9yMyA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfcGh5c1hQaHlzaWNzOiBQaHlzWFBoeXNpY3M7XG5cbiAgY29uc3RydWN0b3IocGh5c1hQaHlzaWNzOiBQaHlzWFBoeXNpY3MpIHtcbiAgICB0aGlzLl9waHlzWFBoeXNpY3MgPSBwaHlzWFBoeXNpY3M7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElDaGFyYWN0ZXJDb250cm9sbGVyLm1vdmUgfVxuICAgKi9cbiAgbW92ZShkaXNwOiBWZWN0b3IzLCBtaW5EaXN0OiBudW1iZXIsIGVsYXBzZWRUaW1lOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9weENvbnRyb2xsZXIubW92ZShkaXNwLCBtaW5EaXN0LCBlbGFwc2VkVGltZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElDaGFyYWN0ZXJDb250cm9sbGVyLnNldFdvcmxkUG9zaXRpb24gfVxuICAgKi9cbiAgc2V0V29ybGRQb3NpdGlvbihwb3NpdGlvbjogVmVjdG9yMyk6IHZvaWQge1xuICAgIHRoaXMuX3Bvc2l0aW9uID0gcG9zaXRpb247XG4gICAgaWYgKHRoaXMuX3B4Q29udHJvbGxlcikge1xuICAgICAgVmVjdG9yMy5hZGQocG9zaXRpb24sIHRoaXMuX3NjYWxlZE9mZnNldCwgUGh5c1hDaGFyYWN0ZXJDb250cm9sbGVyLl90ZW1wVmVjKTtcbiAgICAgIHRoaXMuX3B4Q29udHJvbGxlci5zZXRQb3NpdGlvbihQaHlzWENoYXJhY3RlckNvbnRyb2xsZXIuX3RlbXBWZWMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNoYXJhY3RlckNvbnRyb2xsZXIuZ2V0V29ybGRQb3NpdGlvbiB9XG4gICAqL1xuICBnZXRXb3JsZFBvc2l0aW9uKHBvc2l0aW9uOiBWZWN0b3IzKTogdm9pZCB7XG4gICAgcG9zaXRpb24uY29weUZyb20odGhpcy5fcHhDb250cm9sbGVyLmdldFBvc2l0aW9uKCkpO1xuICAgIHBvc2l0aW9uLnN1YnRyYWN0KHRoaXMuX3NjYWxlZE9mZnNldCk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElDaGFyYWN0ZXJDb250cm9sbGVyLnNldFN0ZXBPZmZzZXQgfVxuICAgKi9cbiAgc2V0U3RlcE9mZnNldChvZmZzZXQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4Q29udHJvbGxlci5zZXRTdGVwT2Zmc2V0KG9mZnNldCk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElDaGFyYWN0ZXJDb250cm9sbGVyLnNldE5vbldhbGthYmxlTW9kZSB9XG4gICAqL1xuICBzZXROb25XYWxrYWJsZU1vZGUoZmxhZzogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhDb250cm9sbGVyLnNldE5vbldhbGthYmxlTW9kZShmbGFnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNoYXJhY3RlckNvbnRyb2xsZXIuc2V0VXBEaXJlY3Rpb24gfVxuICAgKi9cbiAgc2V0VXBEaXJlY3Rpb24odXA6IFZlY3RvcjMpOiB2b2lkIHtcbiAgICB0aGlzLl9weENvbnRyb2xsZXIuc2V0VXBEaXJlY3Rpb24odXApO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJQ2hhcmFjdGVyQ29udHJvbGxlci5zZXRTbG9wZUxpbWl0IH1cbiAgICovXG4gIHNldFNsb3BlTGltaXQoc2xvcGVMaW1pdDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhDb250cm9sbGVyLnNldFNsb3BlTGltaXQoc2xvcGVMaW1pdCk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElDaGFyYWN0ZXJDb250cm9sbGVyLmFkZFNoYXBlIH1cbiAgICovXG4gIGFkZFNoYXBlKHNoYXBlOiBQaHlzWENvbGxpZGVyU2hhcGUpOiB2b2lkIHtcbiAgICB0aGlzLl9weE1hbmFnZXIgJiYgdGhpcy5fY3JlYXRlUFhDb250cm9sbGVyKHRoaXMuX3B4TWFuYWdlciwgc2hhcGUpO1xuICAgIHRoaXMuX3NoYXBlID0gc2hhcGU7XG4gICAgc2hhcGUuX2NvbnRyb2xsZXJzLmFkZCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNoYXJhY3RlckNvbnRyb2xsZXIucmVtb3ZlU2hhcGUgfVxuICAgKi9cbiAgcmVtb3ZlU2hhcGUoc2hhcGU6IFBoeXNYQ29sbGlkZXJTaGFwZSk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3lQWENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLl9zaGFwZSA9IG51bGw7XG4gICAgc2hhcGUuX2NvbnRyb2xsZXJzLmRlbGV0ZSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNoYXJhY3RlckNvbnRyb2xsZXIuZGVzdHJveSB9XG4gICAqL1xuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3lQWENvbnRyb2xsZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9jcmVhdGVQWENvbnRyb2xsZXIocHhNYW5hZ2VyOiBQaHlzWFBoeXNpY3NNYW5hZ2VyLCBzaGFwZTogUGh5c1hDb2xsaWRlclNoYXBlKTogdm9pZCB7XG4gICAgbGV0IGRlc2M6IGFueTtcbiAgICBpZiAoc2hhcGUgaW5zdGFuY2VvZiBQaHlzWEJveENvbGxpZGVyU2hhcGUpIHtcbiAgICAgIGRlc2MgPSBuZXcgdGhpcy5fcGh5c1hQaHlzaWNzLl9waHlzWC5QeEJveENvbnRyb2xsZXJEZXNjKCk7XG4gICAgICBkZXNjLmhhbGZIZWlnaHQgPSBzaGFwZS5faGFsZlNpemUueDtcbiAgICAgIGRlc2MuaGFsZlNpZGVFeHRlbnQgPSBzaGFwZS5faGFsZlNpemUueTtcbiAgICAgIGRlc2MuaGFsZkZvcndhcmRFeHRlbnQgPSBzaGFwZS5faGFsZlNpemUuejtcbiAgICB9IGVsc2UgaWYgKHNoYXBlIGluc3RhbmNlb2YgUGh5c1hDYXBzdWxlQ29sbGlkZXJTaGFwZSkge1xuICAgICAgZGVzYyA9IG5ldyB0aGlzLl9waHlzWFBoeXNpY3MuX3BoeXNYLlB4Q2Fwc3VsZUNvbnRyb2xsZXJEZXNjKCk7XG4gICAgICBkZXNjLnJhZGl1cyA9IHNoYXBlLl9yYWRpdXM7XG4gICAgICBkZXNjLmhlaWdodCA9IHNoYXBlLl9oYWxmSGVpZ2h0ICogMjtcbiAgICAgIGRlc2MuY2xpbWJpbmdNb2RlID0gMTsgLy8gY29uc3RyYWludCBtb2RlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IFwidW5zdXBwb3J0ZWQgc2hhcGUgdHlwZVwiO1xuICAgIH1cblxuICAgIGRlc2Muc2V0TWF0ZXJpYWwoc2hhcGUuX3B4TWF0ZXJpYWxzWzBdKTtcblxuICAgIHRoaXMuX3B4Q29udHJvbGxlciA9IHB4TWFuYWdlci5fZ2V0Q29udHJvbGxlck1hbmFnZXIoKS5jcmVhdGVDb250cm9sbGVyKGRlc2MpO1xuICAgIHRoaXMuX3B4Q29udHJvbGxlci5zZXRVVUlEKHNoYXBlLl9pZCk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfZGVzdHJveVBYQ29udHJvbGxlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcHhDb250cm9sbGVyKSB7XG4gICAgICB0aGlzLl9weENvbnRyb2xsZXIucmVsZWFzZSgpO1xuICAgICAgdGhpcy5fcHhDb250cm9sbGVyID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfc2V0TG9jYWxQb3NpdGlvbihwb3NpdGlvbjogVmVjdG9yMywgc2NhbGU6IFZlY3RvcjMpOiB2b2lkIHtcbiAgICBWZWN0b3IzLm11bHRpcGx5KHBvc2l0aW9uLCBzY2FsZSwgdGhpcy5fc2NhbGVkT2Zmc2V0KTtcbiAgICB0aGlzLnNldFdvcmxkUG9zaXRpb24ocG9zaXRpb24pO1xuICB9XG59XG4iLCJpbXBvcnQgeyBJQ29sbGlkZXIgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1kZXNpZ25cIjtcbmltcG9ydCB7IFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZVwiO1xuaW1wb3J0IHsgUGh5c1hQaHlzaWNzIH0gZnJvbSBcIi4vUGh5c1hQaHlzaWNzXCI7XG5pbXBvcnQgeyBQaHlzWENvbGxpZGVyU2hhcGUgfSBmcm9tIFwiLi9zaGFwZS9QaHlzWENvbGxpZGVyU2hhcGVcIjtcblxuLyoqXG4gKiBBYnN0cmFjdCBjbGFzcyBvZiBwaHlzaWNhbCBjb2xsaWRlci5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBoeXNYQ29sbGlkZXIgaW1wbGVtZW50cyBJQ29sbGlkZXIge1xuICBwcml2YXRlIHN0YXRpYyBfdGVtcFRyYW5zZm9ybToge1xuICAgIHRyYW5zbGF0aW9uOiBWZWN0b3IzO1xuICAgIHJvdGF0aW9uOiBRdWF0ZXJuaW9uO1xuICB9ID0geyB0cmFuc2xhdGlvbjogbnVsbCwgcm90YXRpb246IG51bGwgfTtcblxuICAvKiogQGludGVybmFsICovXG4gIF9weEFjdG9yOiBhbnk7XG5cbiAgcHJvdGVjdGVkIF9waHlzWFBoeXNpY3M6IFBoeXNYUGh5c2ljcztcblxuICBjb25zdHJ1Y3RvcihwaHlzWFBoeXNpY3M6IFBoeXNYUGh5c2ljcykge1xuICAgIHRoaXMuX3BoeXNYUGh5c2ljcyA9IHBoeXNYUGh5c2ljcztcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNvbGxpZGVyLmFkZFNoYXBlIH1cbiAgICovXG4gIGFkZFNoYXBlKHNoYXBlOiBQaHlzWENvbGxpZGVyU2hhcGUpOiB2b2lkIHtcbiAgICB0aGlzLl9weEFjdG9yLmF0dGFjaFNoYXBlKHNoYXBlLl9weFNoYXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNvbGxpZGVyLnJlbW92ZVNoYXBlIH1cbiAgICovXG4gIHJlbW92ZVNoYXBlKHNoYXBlOiBQaHlzWENvbGxpZGVyU2hhcGUpOiB2b2lkIHtcbiAgICB0aGlzLl9weEFjdG9yLmRldGFjaFNoYXBlKHNoYXBlLl9weFNoYXBlLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNvbGxpZGVyLnNldFdvcmxkVHJhbnNmb3JtIH1cbiAgICovXG4gIHNldFdvcmxkVHJhbnNmb3JtKHBvc2l0aW9uOiBWZWN0b3IzLCByb3RhdGlvbjogUXVhdGVybmlvbik6IHZvaWQge1xuICAgIHRoaXMuX3B4QWN0b3Iuc2V0R2xvYmFsUG9zZSh0aGlzLl90cmFuc2Zvcm0ocG9zaXRpb24sIHJvdGF0aW9uKSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElDb2xsaWRlci5nZXRXb3JsZFRyYW5zZm9ybSB9XG4gICAqL1xuICBnZXRXb3JsZFRyYW5zZm9ybShvdXRQb3NpdGlvbjogVmVjdG9yMywgb3V0Um90YXRpb246IFF1YXRlcm5pb24pOiB2b2lkIHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSB0aGlzLl9weEFjdG9yLmdldEdsb2JhbFBvc2UoKTtcbiAgICBvdXRQb3NpdGlvbi5zZXQodHJhbnNmb3JtLnRyYW5zbGF0aW9uLngsIHRyYW5zZm9ybS50cmFuc2xhdGlvbi55LCB0cmFuc2Zvcm0udHJhbnNsYXRpb24ueik7XG4gICAgb3V0Um90YXRpb24uc2V0KHRyYW5zZm9ybS5yb3RhdGlvbi54LCB0cmFuc2Zvcm0ucm90YXRpb24ueSwgdHJhbnNmb3JtLnJvdGF0aW9uLnosIHRyYW5zZm9ybS5yb3RhdGlvbi53KTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUNvbGxpZGVyLmRlc3Ryb3kgfVxuICAgKi9cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9weEFjdG9yLnJlbGVhc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF90cmFuc2Zvcm0ocG9zOiBWZWN0b3IzLCByb3Q6IFF1YXRlcm5pb24pOiB7IHRyYW5zbGF0aW9uOiBWZWN0b3IzOyByb3RhdGlvbjogUXVhdGVybmlvbiB9IHtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSBQaHlzWENvbGxpZGVyLl90ZW1wVHJhbnNmb3JtO1xuICAgIHRyYW5zZm9ybS50cmFuc2xhdGlvbiA9IHBvcztcbiAgICB0cmFuc2Zvcm0ucm90YXRpb24gPSByb3Qubm9ybWFsaXplKCk7XG4gICAgcmV0dXJuIHRyYW5zZm9ybTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgSUR5bmFtaWNDb2xsaWRlciB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWRlc2lnblwiO1xuaW1wb3J0IHsgUXVhdGVybmlvbiwgVmVjdG9yMyB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lXCI7XG5pbXBvcnQgeyBQaHlzWENvbGxpZGVyIH0gZnJvbSBcIi4vUGh5c1hDb2xsaWRlclwiO1xuaW1wb3J0IHsgUGh5c1hQaHlzaWNzIH0gZnJvbSBcIi4vUGh5c1hQaHlzaWNzXCI7XG5cbi8qKlxuICogVGhlIGNvbGxpc2lvbiBkZXRlY3Rpb24gbW9kZSBjb25zdGFudHMgdXNlZCBmb3IgUGh5c1hEeW5hbWljQ29sbGlkZXIuY29sbGlzaW9uRGV0ZWN0aW9uTW9kZS5cbiAqICovXG5leHBvcnQgZW51bSBDb2xsaXNpb25EZXRlY3Rpb25Nb2RlIHtcbiAgLyoqIENvbnRpbnVvdXMgY29sbGlzaW9uIGRldGVjdGlvbiBpcyBvZmYgZm9yIHRoaXMgZHluYW1pYyBjb2xsaWRlci4gKi9cbiAgRGlzY3JldGUsXG4gIC8qKiBDb250aW51b3VzIGNvbGxpc2lvbiBkZXRlY3Rpb24gaXMgb24gZm9yIGNvbGxpZGluZyB3aXRoIHN0YXRpYyBtZXNoIGdlb21ldHJ5LiAqL1xuICBDb250aW51b3VzLFxuICAvKiogQ29udGludW91cyBjb2xsaXNpb24gZGV0ZWN0aW9uIGlzIG9uIGZvciBjb2xsaWRpbmcgd2l0aCBzdGF0aWMgYW5kIGR5bmFtaWMgZ2VvbWV0cnkuICovXG4gIENvbnRpbnVvdXNEeW5hbWljLFxuICAvKiogU3BlY3VsYXRpdmUgY29udGludW91cyBjb2xsaXNpb24gZGV0ZWN0aW9uIGlzIG9uIGZvciBzdGF0aWMgYW5kIGR5bmFtaWMgZ2VvbWV0cmllcyAqL1xuICBDb250aW51b3VzU3BlY3VsYXRpdmVcbn1cblxuLyoqXG4gKiBBIGR5bmFtaWMgY29sbGlkZXIgY2FuIGFjdCB3aXRoIHNlbGYtZGVmaW5lZCBtb3ZlbWVudCBvciBwaHlzaWNhbCBmb3JjZVxuICovXG5leHBvcnQgY2xhc3MgUGh5c1hEeW5hbWljQ29sbGlkZXIgZXh0ZW5kcyBQaHlzWENvbGxpZGVyIGltcGxlbWVudHMgSUR5bmFtaWNDb2xsaWRlciB7XG4gIHByaXZhdGUgc3RhdGljIF90ZW1wVHJhbnNsYXRpb24gPSBuZXcgVmVjdG9yMygpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVtcFJvdGF0aW9uID0gbmV3IFF1YXRlcm5pb24oKTtcblxuICBjb25zdHJ1Y3RvcihwaHlzWFBoeXNpY3M6IFBoeXNYUGh5c2ljcywgcG9zaXRpb246IFZlY3RvcjMsIHJvdGF0aW9uOiBRdWF0ZXJuaW9uKSB7XG4gICAgc3VwZXIocGh5c1hQaHlzaWNzKTtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSB0aGlzLl90cmFuc2Zvcm0ocG9zaXRpb24sIHJvdGF0aW9uKTtcbiAgICB0aGlzLl9weEFjdG9yID0gcGh5c1hQaHlzaWNzLl9weFBoeXNpY3MuY3JlYXRlUmlnaWREeW5hbWljKHRyYW5zZm9ybSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElEeW5hbWljQ29sbGlkZXIuc2V0TGluZWFyRGFtcGluZyB9XG4gICAqL1xuICBzZXRMaW5lYXJEYW1waW5nKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weEFjdG9yLnNldExpbmVhckRhbXBpbmcodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJRHluYW1pY0NvbGxpZGVyLnNldEFuZ3VsYXJEYW1waW5nIH1cbiAgICovXG4gIHNldEFuZ3VsYXJEYW1waW5nKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weEFjdG9yLnNldEFuZ3VsYXJEYW1waW5nKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUR5bmFtaWNDb2xsaWRlci5zZXRMaW5lYXJWZWxvY2l0eSB9XG4gICAqL1xuICBzZXRMaW5lYXJWZWxvY2l0eSh2YWx1ZTogVmVjdG9yMyk6IHZvaWQge1xuICAgIHRoaXMuX3B4QWN0b3Iuc2V0TGluZWFyVmVsb2NpdHkodmFsdWUsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJRHluYW1pY0NvbGxpZGVyLnNldEFuZ3VsYXJWZWxvY2l0eSB9XG4gICAqL1xuICBzZXRBbmd1bGFyVmVsb2NpdHkodmFsdWU6IFZlY3RvcjMpOiB2b2lkIHtcbiAgICB0aGlzLl9weEFjdG9yLnNldEFuZ3VsYXJWZWxvY2l0eSh2YWx1ZSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElEeW5hbWljQ29sbGlkZXIuc2V0TWFzcyB9XG4gICAqL1xuICBzZXRNYXNzKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weEFjdG9yLnNldE1hc3ModmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJRHluYW1pY0NvbGxpZGVyLnNldENlbnRlck9mTWFzcyB9XG4gICAqL1xuICBzZXRDZW50ZXJPZk1hc3MocG9zaXRpb246IFZlY3RvcjMpOiB2b2lkIHtcbiAgICB0aGlzLl9weEFjdG9yLnNldENNYXNzTG9jYWxQb3NlKHBvc2l0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUR5bmFtaWNDb2xsaWRlci5zZXRJbmVydGlhVGVuc29yIH1cbiAgICovXG4gIHNldEluZXJ0aWFUZW5zb3IodmFsdWU6IFZlY3RvcjMpOiB2b2lkIHtcbiAgICB0aGlzLl9weEFjdG9yLnNldE1hc3NTcGFjZUluZXJ0aWFUZW5zb3IodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJRHluYW1pY0NvbGxpZGVyLnNldE1heEFuZ3VsYXJWZWxvY2l0eSB9XG4gICAqL1xuICBzZXRNYXhBbmd1bGFyVmVsb2NpdHkodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4QWN0b3Iuc2V0TWF4QW5ndWxhclZlbG9jaXR5KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUR5bmFtaWNDb2xsaWRlci5zZXRNYXhEZXBlbmV0cmF0aW9uVmVsb2NpdHkgfVxuICAgKi9cbiAgc2V0TWF4RGVwZW5ldHJhdGlvblZlbG9jaXR5KHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weEFjdG9yLnNldE1heERlcGVuZXRyYXRpb25WZWxvY2l0eSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElEeW5hbWljQ29sbGlkZXIuc2V0U2xlZXBUaHJlc2hvbGQgfVxuICAgKiBAZGVmYXVsdCAxZS01ZiAqIFB4VG9sZXJhbmNlc1NjYWxlOjpzcGVlZCAqIFB4VG9sZXJhbmNlc1NjYWxlOjpzcGVlZFxuICAgKi9cbiAgc2V0U2xlZXBUaHJlc2hvbGQodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3B4QWN0b3Iuc2V0U2xlZXBUaHJlc2hvbGQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJRHluYW1pY0NvbGxpZGVyLnNldFNvbHZlckl0ZXJhdGlvbnMgfVxuICAgKi9cbiAgc2V0U29sdmVySXRlcmF0aW9ucyh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhBY3Rvci5zZXRTb2x2ZXJJdGVyYXRpb25Db3VudHModmFsdWUsIDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJRHluYW1pY0NvbGxpZGVyLnNldENvbGxpc2lvbkRldGVjdGlvbk1vZGUgfVxuICAgKi9cbiAgc2V0Q29sbGlzaW9uRGV0ZWN0aW9uTW9kZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgY2FzZSBDb2xsaXNpb25EZXRlY3Rpb25Nb2RlLkNvbnRpbnVvdXM6XG4gICAgICAgIHRoaXMuX3B4QWN0b3Iuc2V0UmlnaWRCb2R5RmxhZyh0aGlzLl9waHlzWFBoeXNpY3MuX3BoeXNYLlB4UmlnaWRCb2R5RmxhZy5lRU5BQkxFX0NDRCwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDb2xsaXNpb25EZXRlY3Rpb25Nb2RlLkNvbnRpbnVvdXNEeW5hbWljOlxuICAgICAgICB0aGlzLl9weEFjdG9yLnNldFJpZ2lkQm9keUZsYWcodGhpcy5fcGh5c1hQaHlzaWNzLl9waHlzWC5QeFJpZ2lkQm9keUZsYWcuZUVOQUJMRV9DQ0RfRlJJQ1RJT04sIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ29sbGlzaW9uRGV0ZWN0aW9uTW9kZS5Db250aW51b3VzU3BlY3VsYXRpdmU6XG4gICAgICAgIHRoaXMuX3B4QWN0b3Iuc2V0UmlnaWRCb2R5RmxhZyh0aGlzLl9waHlzWFBoeXNpY3MuX3BoeXNYLlB4UmlnaWRCb2R5RmxhZy5lRU5BQkxFX1NQRUNVTEFUSVZFX0NDRCwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDb2xsaXNpb25EZXRlY3Rpb25Nb2RlLkRpc2NyZXRlOlxuICAgICAgICBjb25zdCBwaHlzWCA9IHRoaXMuX3BoeXNYUGh5c2ljcy5fcGh5c1g7XG4gICAgICAgIHRoaXMuX3B4QWN0b3Iuc2V0UmlnaWRCb2R5RmxhZyhwaHlzWC5QeFJpZ2lkQm9keUZsYWcuZUVOQUJMRV9DQ0QsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5fcHhBY3Rvci5zZXRSaWdpZEJvZHlGbGFnKHBoeXNYLlB4UmlnaWRCb2R5RmxhZy5lRU5BQkxFX0NDRF9GUklDVElPTiwgZmFsc2UpO1xuICAgICAgICB0aGlzLl9weEFjdG9yLnNldFJpZ2lkQm9keUZsYWcocGh5c1guUHhSaWdpZEJvZHlGbGFnLmVFTkFCTEVfU1BFQ1VMQVRJVkVfQ0NELCBmYWxzZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUR5bmFtaWNDb2xsaWRlci5zZXRJc0tpbmVtYXRpYyB9XG4gICAqL1xuICBzZXRJc0tpbmVtYXRpYyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fcHhBY3Rvci5zZXRSaWdpZEJvZHlGbGFnKHRoaXMuX3BoeXNYUGh5c2ljcy5fcGh5c1guUHhSaWdpZEJvZHlGbGFnLmVLSU5FTUFUSUMsIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9weEFjdG9yLnNldFJpZ2lkQm9keUZsYWcodGhpcy5fcGh5c1hQaHlzaWNzLl9waHlzWC5QeFJpZ2lkQm9keUZsYWcuZUtJTkVNQVRJQywgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSUR5bmFtaWNDb2xsaWRlci5zZXRDb25zdHJhaW50cyB9XG4gICAqL1xuICBzZXRDb25zdHJhaW50cyhmbGFnczogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhBY3Rvci5zZXRSaWdpZER5bmFtaWNMb2NrRmxhZ3MoZmxhZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJRHluYW1pY0NvbGxpZGVyLmFkZEZvcmNlIH1cbiAgICovXG4gIGFkZEZvcmNlKGZvcmNlOiBWZWN0b3IzKSB7XG4gICAgdGhpcy5fcHhBY3Rvci5hZGRGb3JjZSh7IHg6IGZvcmNlLngsIHk6IGZvcmNlLnksIHo6IGZvcmNlLnogfSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElEeW5hbWljQ29sbGlkZXIuYWRkVG9ycXVlIH1cbiAgICovXG4gIGFkZFRvcnF1ZSh0b3JxdWU6IFZlY3RvcjMpIHtcbiAgICB0aGlzLl9weEFjdG9yLmFkZFRvcnF1ZSh7IHg6IHRvcnF1ZS54LCB5OiB0b3JxdWUueSwgejogdG9ycXVlLnogfSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElEeW5hbWljQ29sbGlkZXIubW92ZSB9XG4gICAqL1xuICBtb3ZlKHBvc2l0aW9uT3JSb3RhdGlvbjogVmVjdG9yMyB8IFF1YXRlcm5pb24sIHJvdGF0aW9uPzogUXVhdGVybmlvbik6IHZvaWQge1xuICAgIGlmIChyb3RhdGlvbikge1xuICAgICAgdGhpcy5fcHhBY3Rvci5zZXRLaW5lbWF0aWNUYXJnZXQocG9zaXRpb25PclJvdGF0aW9uLCByb3RhdGlvbik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGVtcFRyYW5zbGF0aW9uID0gUGh5c1hEeW5hbWljQ29sbGlkZXIuX3RlbXBUcmFuc2xhdGlvbjtcbiAgICBjb25zdCB0ZW1wUm90YXRpb24gPSBQaHlzWER5bmFtaWNDb2xsaWRlci5fdGVtcFJvdGF0aW9uO1xuICAgIHRoaXMuZ2V0V29ybGRUcmFuc2Zvcm0odGVtcFRyYW5zbGF0aW9uLCB0ZW1wUm90YXRpb24pO1xuICAgIGlmIChwb3NpdGlvbk9yUm90YXRpb24gaW5zdGFuY2VvZiBWZWN0b3IzKSB7XG4gICAgICB0aGlzLl9weEFjdG9yLnNldEtpbmVtYXRpY1RhcmdldChwb3NpdGlvbk9yUm90YXRpb24sIHRlbXBSb3RhdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3B4QWN0b3Iuc2V0S2luZW1hdGljVGFyZ2V0KHRlbXBUcmFuc2xhdGlvbiwgcG9zaXRpb25PclJvdGF0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElEeW5hbWljQ29sbGlkZXIuc2xlZXAgfVxuICAgKi9cbiAgc2xlZXAoKTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3B4QWN0b3IucHV0VG9TbGVlcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJRHluYW1pY0NvbGxpZGVyLndha2VVcCB9XG4gICAqL1xuICB3YWtlVXAoKTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3B4QWN0b3Iud2FrZVVwKCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IElQaHlzaWNzTWFuYWdlciB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWRlc2lnblwiO1xuaW1wb3J0IHsgUmF5LCBWZWN0b3IzIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmVcIjtcbmltcG9ydCB7IERpc29yZGVyZWRBcnJheSB9IGZyb20gXCIuL0Rpc29yZGVyZWRBcnJheVwiO1xuaW1wb3J0IHsgUGh5c1hDaGFyYWN0ZXJDb250cm9sbGVyIH0gZnJvbSBcIi4vUGh5c1hDaGFyYWN0ZXJDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBQaHlzWENvbGxpZGVyIH0gZnJvbSBcIi4vUGh5c1hDb2xsaWRlclwiO1xuaW1wb3J0IHsgUGh5c1hQaHlzaWNzIH0gZnJvbSBcIi4vUGh5c1hQaHlzaWNzXCI7XG5pbXBvcnQgeyBQaHlzWENvbGxpZGVyU2hhcGUgfSBmcm9tIFwiLi9zaGFwZS9QaHlzWENvbGxpZGVyU2hhcGVcIjtcblxuLyoqXG4gKiBBIG1hbmFnZXIgaXMgYSBjb2xsZWN0aW9uIG9mIGNvbGxpZGVycyBhbmQgY29uc3RyYWludHMgd2hpY2ggY2FuIGludGVyYWN0LlxuICovXG5leHBvcnQgY2xhc3MgUGh5c1hQaHlzaWNzTWFuYWdlciBpbXBsZW1lbnRzIElQaHlzaWNzTWFuYWdlciB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgX3B4Q29udHJvbGxlck1hbmFnZXI6IGFueSA9IG51bGw7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbXBQb3NpdGlvbjogVmVjdG9yMyA9IG5ldyBWZWN0b3IzKCk7XG4gIHByaXZhdGUgc3RhdGljIF90ZW1wTm9ybWFsOiBWZWN0b3IzID0gbmV3IFZlY3RvcjMoKTtcblxuICBwcml2YXRlIF9waHlzWFBoeXNpY3M6IFBoeXNYUGh5c2ljcztcbiAgcHJpdmF0ZSBfcHhSYXljYXN0SGl0OiBhbnk7XG4gIHByaXZhdGUgX3B4RmlsdGVyRGF0YTogYW55O1xuXG4gIHByaXZhdGUgX3B4U2NlbmU6IGFueTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vbkNvbnRhY3RFbnRlcj86IChvYmoxOiBudW1iZXIsIG9iajI6IG51bWJlcikgPT4gdm9pZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfb25Db250YWN0RXhpdD86IChvYmoxOiBudW1iZXIsIG9iajI6IG51bWJlcikgPT4gdm9pZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfb25Db250YWN0U3RheT86IChvYmoxOiBudW1iZXIsIG9iajI6IG51bWJlcikgPT4gdm9pZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfb25UcmlnZ2VyRW50ZXI/OiAob2JqMTogbnVtYmVyLCBvYmoyOiBudW1iZXIpID0+IHZvaWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX29uVHJpZ2dlckV4aXQ/OiAob2JqMTogbnVtYmVyLCBvYmoyOiBudW1iZXIpID0+IHZvaWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX29uVHJpZ2dlclN0YXk/OiAob2JqMTogbnVtYmVyLCBvYmoyOiBudW1iZXIpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfY3VycmVudEV2ZW50czogRGlzb3JkZXJlZEFycmF5PFRyaWdnZXJFdmVudD4gPSBuZXcgRGlzb3JkZXJlZEFycmF5PFRyaWdnZXJFdmVudD4oKTtcbiAgcHJpdmF0ZSBfZXZlbnRNYXA6IFJlY29yZDxudW1iZXIsIFJlY29yZDxudW1iZXIsIFRyaWdnZXJFdmVudD4+ID0ge307XG4gIHByaXZhdGUgX2V2ZW50UG9vbDogVHJpZ2dlckV2ZW50W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwaHlzWFBoeXNpY3M6IFBoeXNYUGh5c2ljcyxcbiAgICBvbkNvbnRhY3RFbnRlcj86IChvYmoxOiBudW1iZXIsIG9iajI6IG51bWJlcikgPT4gdm9pZCxcbiAgICBvbkNvbnRhY3RFeGl0PzogKG9iajE6IG51bWJlciwgb2JqMjogbnVtYmVyKSA9PiB2b2lkLFxuICAgIG9uQ29udGFjdFN0YXk/OiAob2JqMTogbnVtYmVyLCBvYmoyOiBudW1iZXIpID0+IHZvaWQsXG4gICAgb25UcmlnZ2VyRW50ZXI/OiAob2JqMTogbnVtYmVyLCBvYmoyOiBudW1iZXIpID0+IHZvaWQsXG4gICAgb25UcmlnZ2VyRXhpdD86IChvYmoxOiBudW1iZXIsIG9iajI6IG51bWJlcikgPT4gdm9pZCxcbiAgICBvblRyaWdnZXJTdGF5PzogKG9iajE6IG51bWJlciwgb2JqMjogbnVtYmVyKSA9PiB2b2lkXG4gICkge1xuICAgIHRoaXMuX3BoeXNYUGh5c2ljcyA9IHBoeXNYUGh5c2ljcztcblxuICAgIGNvbnN0IHBoeXNYID0gcGh5c1hQaHlzaWNzLl9waHlzWDtcblxuICAgIHRoaXMuX3B4UmF5Y2FzdEhpdCA9IG5ldyBwaHlzWC5QeFJheWNhc3RIaXQoKTtcbiAgICB0aGlzLl9weEZpbHRlckRhdGEgPSBuZXcgcGh5c1guUHhRdWVyeUZpbHRlckRhdGEoKTtcbiAgICB0aGlzLl9weEZpbHRlckRhdGEuZmxhZ3MgPSBuZXcgcGh5c1guUHhRdWVyeUZsYWdzKFF1ZXJ5RmxhZy5TVEFUSUMgfCBRdWVyeUZsYWcuRFlOQU1JQyB8IFF1ZXJ5RmxhZy5QUkVfRklMVEVSKTtcblxuICAgIHRoaXMuX29uQ29udGFjdEVudGVyID0gb25Db250YWN0RW50ZXI7XG4gICAgdGhpcy5fb25Db250YWN0RXhpdCA9IG9uQ29udGFjdEV4aXQ7XG4gICAgdGhpcy5fb25Db250YWN0U3RheSA9IG9uQ29udGFjdFN0YXk7XG4gICAgdGhpcy5fb25UcmlnZ2VyRW50ZXIgPSBvblRyaWdnZXJFbnRlcjtcbiAgICB0aGlzLl9vblRyaWdnZXJFeGl0ID0gb25UcmlnZ2VyRXhpdDtcbiAgICB0aGlzLl9vblRyaWdnZXJTdGF5ID0gb25UcmlnZ2VyU3RheTtcblxuICAgIGNvbnN0IHRyaWdnZXJDYWxsYmFjayA9IHtcbiAgICAgIG9uQ29udGFjdEJlZ2luOiAoaW5kZXgxLCBpbmRleDIpID0+IHtcbiAgICAgICAgdGhpcy5fb25Db250YWN0RW50ZXIoaW5kZXgxLCBpbmRleDIpO1xuICAgICAgfSxcbiAgICAgIG9uQ29udGFjdEVuZDogKGluZGV4MSwgaW5kZXgyKSA9PiB7XG4gICAgICAgIHRoaXMuX29uQ29udGFjdEV4aXQoaW5kZXgxLCBpbmRleDIpO1xuICAgICAgfSxcbiAgICAgIG9uQ29udGFjdFBlcnNpc3Q6IChpbmRleDEsIGluZGV4MikgPT4ge1xuICAgICAgICB0aGlzLl9vbkNvbnRhY3RTdGF5KGluZGV4MSwgaW5kZXgyKTtcbiAgICAgIH0sXG4gICAgICBvblRyaWdnZXJCZWdpbjogKGluZGV4MSwgaW5kZXgyKSA9PiB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gaW5kZXgxIDwgaW5kZXgyID8gdGhpcy5fZ2V0VHJpZ2dlcihpbmRleDEsIGluZGV4MikgOiB0aGlzLl9nZXRUcmlnZ2VyKGluZGV4MiwgaW5kZXgxKTtcbiAgICAgICAgZXZlbnQuc3RhdGUgPSBUcmlnZ2VyRXZlbnRTdGF0ZS5FbnRlcjtcbiAgICAgICAgdGhpcy5fY3VycmVudEV2ZW50cy5hZGQoZXZlbnQpO1xuICAgICAgfSxcbiAgICAgIG9uVHJpZ2dlckVuZDogKGluZGV4MSwgaW5kZXgyKSA9PiB7XG4gICAgICAgIGxldCBldmVudDogVHJpZ2dlckV2ZW50O1xuICAgICAgICBpZiAoaW5kZXgxIDwgaW5kZXgyKSB7XG4gICAgICAgICAgY29uc3Qgc3ViTWFwID0gdGhpcy5fZXZlbnRNYXBbaW5kZXgxXTtcbiAgICAgICAgICBldmVudCA9IHN1Yk1hcFtpbmRleDJdO1xuICAgICAgICAgIHN1Yk1hcFtpbmRleDJdID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHN1Yk1hcCA9IHRoaXMuX2V2ZW50TWFwW2luZGV4Ml07XG4gICAgICAgICAgZXZlbnQgPSBzdWJNYXBbaW5kZXgxXTtcbiAgICAgICAgICBzdWJNYXBbaW5kZXgxXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5zdGF0ZSA9IFRyaWdnZXJFdmVudFN0YXRlLkV4aXQ7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHB4UGh5c2ljcyA9IHBoeXNYUGh5c2ljcy5fcHhQaHlzaWNzO1xuICAgIGNvbnN0IHBoeXNYU2ltdWxhdGlvbkNhbGxiYWNrSW5zdGFuY2UgPSBwaHlzWC5QeFNpbXVsYXRpb25FdmVudENhbGxiYWNrLmltcGxlbWVudCh0cmlnZ2VyQ2FsbGJhY2spO1xuICAgIGNvbnN0IHNjZW5lRGVzYyA9IHBoeXNYLmdldERlZmF1bHRTY2VuZURlc2MocHhQaHlzaWNzLmdldFRvbGVyYW5jZXNTY2FsZSgpLCAwLCBwaHlzWFNpbXVsYXRpb25DYWxsYmFja0luc3RhbmNlKTtcbiAgICB0aGlzLl9weFNjZW5lID0gcHhQaHlzaWNzLmNyZWF0ZVNjZW5lKHNjZW5lRGVzYyk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElQaHlzaWNzTWFuYWdlci5zZXRHcmF2aXR5IH1cbiAgICovXG4gIHNldEdyYXZpdHkodmFsdWU6IFZlY3RvcjMpIHtcbiAgICB0aGlzLl9weFNjZW5lLnNldEdyYXZpdHkodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljc01hbmFnZXIuYWRkQ29sbGlkZXJTaGFwZSB9XG4gICAqL1xuICBhZGRDb2xsaWRlclNoYXBlKGNvbGxpZGVyU2hhcGU6IFBoeXNYQ29sbGlkZXJTaGFwZSkge1xuICAgIHRoaXMuX2V2ZW50TWFwW2NvbGxpZGVyU2hhcGUuX2lkXSA9IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljc01hbmFnZXIucmVtb3ZlQ29sbGlkZXJTaGFwZSB9XG4gICAqL1xuICByZW1vdmVDb2xsaWRlclNoYXBlKGNvbGxpZGVyU2hhcGU6IFBoeXNYQ29sbGlkZXJTaGFwZSkge1xuICAgIGNvbnN0IHsgX2V2ZW50UG9vbDogZXZlbnRQb29sLCBfY3VycmVudEV2ZW50czogY3VycmVudEV2ZW50cyB9ID0gdGhpcztcbiAgICBjb25zdCB7IF9pZDogc2hhcGVJRCB9ID0gY29sbGlkZXJTaGFwZTtcbiAgICBmb3IgKGxldCBpID0gY3VycmVudEV2ZW50cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgZXZlbnQgPSBjdXJyZW50RXZlbnRzLmdldChpKTtcbiAgICAgIGlmIChldmVudC5pbmRleDEgPT0gc2hhcGVJRCB8fCBldmVudC5pbmRleDIgPT0gc2hhcGVJRCkge1xuICAgICAgICBjdXJyZW50RXZlbnRzLmRlbGV0ZUJ5SW5kZXgoaSk7XG4gICAgICAgIGV2ZW50UG9vbC5wdXNoKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZGVsZXRlIHRoaXMuX2V2ZW50TWFwW3NoYXBlSURdO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljc01hbmFnZXIuYWRkQ29sbGlkZXIgfVxuICAgKi9cbiAgYWRkQ29sbGlkZXIoY29sbGlkZXI6IFBoeXNYQ29sbGlkZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weFNjZW5lLmFkZEFjdG9yKGNvbGxpZGVyLl9weEFjdG9yLCBudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3NNYW5hZ2VyLnJlbW92ZUNvbGxpZGVyIH1cbiAgICovXG4gIHJlbW92ZUNvbGxpZGVyKGNvbGxpZGVyOiBQaHlzWENvbGxpZGVyKTogdm9pZCB7XG4gICAgdGhpcy5fcHhTY2VuZS5yZW1vdmVBY3Rvcihjb2xsaWRlci5fcHhBY3RvciwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElQaHlzaWNzTWFuYWdlci5hZGRDaGFyYWN0ZXJDb250cm9sbGVyIH1cbiAgICovXG4gIGFkZENoYXJhY3RlckNvbnRyb2xsZXIoY2hhcmFjdGVyQ29udHJvbGxlcjogUGh5c1hDaGFyYWN0ZXJDb250cm9sbGVyKTogdm9pZCB7XG4gICAgLy8gUGh5c3ggaGF2ZSBubyBBUEkgdG8gcmVtb3ZlL3JlYWRkIGNjdCBpbnRvIHNjZW5lLlxuICAgIGlmICghY2hhcmFjdGVyQ29udHJvbGxlci5fcHhDb250cm9sbGVyKSB7XG4gICAgICBjb25zdCBzaGFwZSA9IGNoYXJhY3RlckNvbnRyb2xsZXIuX3NoYXBlO1xuICAgICAgaWYgKHNoYXBlKSB7XG4gICAgICAgIGNvbnN0IGxhc3RQWE1hbmFnZXIgPSBjaGFyYWN0ZXJDb250cm9sbGVyLl9weE1hbmFnZXI7XG4gICAgICAgIGlmIChsYXN0UFhNYW5hZ2VyICE9PSB0aGlzKSB7XG4gICAgICAgICAgbGFzdFBYTWFuYWdlciAmJiBjaGFyYWN0ZXJDb250cm9sbGVyLl9kZXN0cm95UFhDb250cm9sbGVyKCk7XG4gICAgICAgICAgY2hhcmFjdGVyQ29udHJvbGxlci5fY3JlYXRlUFhDb250cm9sbGVyKHRoaXMsIHNoYXBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBjaGFyYWN0ZXJDb250cm9sbGVyLl9weE1hbmFnZXIgPSB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljc01hbmFnZXIucmVtb3ZlQ2hhcmFjdGVyQ29udHJvbGxlciB9XG4gICAqL1xuICByZW1vdmVDaGFyYWN0ZXJDb250cm9sbGVyKGNoYXJhY3RlckNvbnRyb2xsZXI6IFBoeXNYQ2hhcmFjdGVyQ29udHJvbGxlcik6IHZvaWQge1xuICAgIGNoYXJhY3RlckNvbnRyb2xsZXIuX3B4TWFuYWdlciA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElQaHlzaWNzTWFuYWdlci51cGRhdGUgfVxuICAgKi9cbiAgdXBkYXRlKGVsYXBzZWRUaW1lOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9zaW11bGF0ZShlbGFwc2VkVGltZSk7XG4gICAgdGhpcy5fZmV0Y2hSZXN1bHRzKCk7XG4gICAgdGhpcy5fZmlyZUV2ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElQaHlzaWNzTWFuYWdlci5yYXljYXN0IH1cbiAgICovXG4gIHJheWNhc3QoXG4gICAgcmF5OiBSYXksXG4gICAgZGlzdGFuY2U6IG51bWJlcixcbiAgICBvblJheWNhc3Q6IChvYmo6IG51bWJlcikgPT4gYm9vbGVhbixcbiAgICBoaXQ/OiAoc2hhcGVVbmlxdWVJRDogbnVtYmVyLCBkaXN0YW5jZTogbnVtYmVyLCBwb3NpdGlvbjogVmVjdG9yMywgbm9ybWFsOiBWZWN0b3IzKSA9PiB2b2lkXG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHsgX3B4UmF5Y2FzdEhpdDogcHhIaXRSZXN1bHQgfSA9IHRoaXM7XG4gICAgZGlzdGFuY2UgPSBNYXRoLm1pbihkaXN0YW5jZSwgMy40ZTM4KTsgLy8gZmxvYXQzMiBtYXggdmFsdWUgbGltaXQgaW4gcGh5c3ggcmF5Y2FzdC5cblxuICAgIGNvbnN0IHJheWNhc3RDYWxsYmFjayA9IHtcbiAgICAgIHByZUZpbHRlcjogKGZpbHRlckRhdGEsIGluZGV4LCBhY3RvcikgPT4ge1xuICAgICAgICBpZiAob25SYXljYXN0KGluZGV4KSkge1xuICAgICAgICAgIHJldHVybiAyOyAvLyBlQkxPQ0tcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gMDsgLy8gZU5PTkVcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHBvc3RGaWx0ZXI6IChmaWx0ZXJEYXRhLCBoaXQpID0+IHt9XG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX3B4U2NlbmUucmF5Y2FzdFNpbmdsZShcbiAgICAgIHJheS5vcmlnaW4sXG4gICAgICByYXkuZGlyZWN0aW9uLFxuICAgICAgZGlzdGFuY2UsXG4gICAgICBweEhpdFJlc3VsdCxcbiAgICAgIHRoaXMuX3B4RmlsdGVyRGF0YSxcbiAgICAgIHRoaXMuX3BoeXNYUGh5c2ljcy5fcGh5c1guUHhRdWVyeUZpbHRlckNhbGxiYWNrLmltcGxlbWVudChyYXljYXN0Q2FsbGJhY2spXG4gICAgKTtcblxuICAgIGlmIChyZXN1bHQgJiYgaGl0ICE9IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgeyBfdGVtcFBvc2l0aW9uOiBwb3NpdGlvbiwgX3RlbXBOb3JtYWw6IG5vcm1hbCB9ID0gUGh5c1hQaHlzaWNzTWFuYWdlcjtcbiAgICAgIGNvbnN0IHsgcG9zaXRpb246IHB4UG9zaXRpb24sIG5vcm1hbDogcHhOb3JtYWwgfSA9IHB4SGl0UmVzdWx0O1xuICAgICAgcG9zaXRpb24uc2V0KHB4UG9zaXRpb24ueCwgcHhQb3NpdGlvbi55LCBweFBvc2l0aW9uLnopO1xuICAgICAgbm9ybWFsLnNldChweE5vcm1hbC54LCBweE5vcm1hbC55LCBweE5vcm1hbC56KTtcblxuICAgICAgaGl0KHB4SGl0UmVzdWx0LmdldFNoYXBlKCkuZ2V0VVVJRCgpLCBweEhpdFJlc3VsdC5kaXN0YW5jZSwgcG9zaXRpb24sIG5vcm1hbCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfZ2V0Q29udHJvbGxlck1hbmFnZXIoKTogYW55IHtcbiAgICBsZXQgcHhDb250cm9sbGVyTWFuYWdlciA9IHRoaXMuX3B4Q29udHJvbGxlck1hbmFnZXI7XG4gICAgaWYgKHB4Q29udHJvbGxlck1hbmFnZXIgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuX3B4Q29udHJvbGxlck1hbmFnZXIgPSBweENvbnRyb2xsZXJNYW5hZ2VyID0gdGhpcy5fcHhTY2VuZS5jcmVhdGVDb250cm9sbGVyTWFuYWdlcigpO1xuICAgIH1cbiAgICByZXR1cm4gcHhDb250cm9sbGVyTWFuYWdlcjtcbiAgfVxuXG4gIHByaXZhdGUgX3NpbXVsYXRlKGVsYXBzZWRUaW1lOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9weFNjZW5lLnNpbXVsYXRlKGVsYXBzZWRUaW1lLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZldGNoUmVzdWx0cyhibG9jazogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLl9weFNjZW5lLmZldGNoUmVzdWx0cyhibG9jayk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRUcmlnZ2VyKGluZGV4MTogbnVtYmVyLCBpbmRleDI6IG51bWJlcik6IFRyaWdnZXJFdmVudCB7XG4gICAgbGV0IGV2ZW50OiBUcmlnZ2VyRXZlbnQ7XG4gICAgaWYgKHRoaXMuX2V2ZW50UG9vbC5sZW5ndGgpIHtcbiAgICAgIGV2ZW50ID0gdGhpcy5fZXZlbnRQb29sLnBvcCgpO1xuICAgICAgZXZlbnQuaW5kZXgxID0gaW5kZXgxO1xuICAgICAgZXZlbnQuaW5kZXgyID0gaW5kZXgyO1xuICAgIH0gZWxzZSB7XG4gICAgICBldmVudCA9IG5ldyBUcmlnZ2VyRXZlbnQoaW5kZXgxLCBpbmRleDIpO1xuICAgIH1cbiAgICB0aGlzLl9ldmVudE1hcFtpbmRleDFdW2luZGV4Ml0gPSBldmVudDtcbiAgICByZXR1cm4gZXZlbnQ7XG4gIH1cblxuICBwcml2YXRlIF9maXJlRXZlbnQoKTogdm9pZCB7XG4gICAgY29uc3QgeyBfZXZlbnRQb29sOiBldmVudFBvb2wsIF9jdXJyZW50RXZlbnRzOiBjdXJyZW50RXZlbnRzIH0gPSB0aGlzO1xuICAgIGZvciAobGV0IGkgPSBjdXJyZW50RXZlbnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBldmVudCA9IGN1cnJlbnRFdmVudHMuZ2V0KGkpO1xuICAgICAgaWYgKGV2ZW50LnN0YXRlID09IFRyaWdnZXJFdmVudFN0YXRlLkVudGVyKSB7XG4gICAgICAgIHRoaXMuX29uVHJpZ2dlckVudGVyKGV2ZW50LmluZGV4MSwgZXZlbnQuaW5kZXgyKTtcbiAgICAgICAgZXZlbnQuc3RhdGUgPSBUcmlnZ2VyRXZlbnRTdGF0ZS5TdGF5O1xuICAgICAgfSBlbHNlIGlmIChldmVudC5zdGF0ZSA9PSBUcmlnZ2VyRXZlbnRTdGF0ZS5TdGF5KSB7XG4gICAgICAgIHRoaXMuX29uVHJpZ2dlclN0YXkoZXZlbnQuaW5kZXgxLCBldmVudC5pbmRleDIpO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5zdGF0ZSA9PSBUcmlnZ2VyRXZlbnRTdGF0ZS5FeGl0KSB7XG4gICAgICAgIHRoaXMuX29uVHJpZ2dlckV4aXQoZXZlbnQuaW5kZXgxLCBldmVudC5pbmRleDIpO1xuICAgICAgICBjdXJyZW50RXZlbnRzLmRlbGV0ZUJ5SW5kZXgoaSk7XG4gICAgICAgIGV2ZW50UG9vbC5wdXNoKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBGaWx0ZXJpbmcgZmxhZ3MgZm9yIHNjZW5lIHF1ZXJpZXMuXG4gKi9cbmVudW0gUXVlcnlGbGFnIHtcbiAgU1RBVElDID0gMSA8PCAwLFxuICBEWU5BTUlDID0gMSA8PCAxLFxuICBQUkVfRklMVEVSID0gMSA8PCAyLFxuICBQT1NUX0ZJTFRFUiA9IDEgPDwgMyxcbiAgQU5ZX0hJVCA9IDEgPDwgNCxcbiAgTk9fQkxPQ0sgPSAxIDw8IDVcbn1cblxuLyoqXG4gKiBQaHlzaWNzIHN0YXRlXG4gKi9cbmVudW0gVHJpZ2dlckV2ZW50U3RhdGUge1xuICBFbnRlcixcbiAgU3RheSxcbiAgRXhpdFxufVxuXG4vKipcbiAqIFRyaWdnZXIgZXZlbnQgdG8gc3RvcmUgaW50ZXJhY3RpdmUgb2JqZWN0IGlkcyBhbmQgc3RhdGUuXG4gKi9cbmNsYXNzIFRyaWdnZXJFdmVudCB7XG4gIHN0YXRlOiBUcmlnZ2VyRXZlbnRTdGF0ZTtcbiAgaW5kZXgxOiBudW1iZXI7XG4gIGluZGV4MjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGluZGV4MTogbnVtYmVyLCBpbmRleDI6IG51bWJlcikge1xuICAgIHRoaXMuaW5kZXgxID0gaW5kZXgxO1xuICAgIHRoaXMuaW5kZXgyID0gaW5kZXgyO1xuICB9XG59XG4iLCJpbXBvcnQgeyBJUGh5c2ljc01hdGVyaWFsIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtZGVzaWduXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3MgfSBmcm9tIFwiLi9QaHlzWFBoeXNpY3NcIjtcblxuLyoqXG4gKiBQaHlzaWNzIG1hdGVyaWFsIGRlc2NyaWJlcyBob3cgdG8gaGFuZGxlIGNvbGxpZGluZyBvYmplY3RzIChmcmljdGlvbiwgYm91bmNpbmVzcykuXG4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzWFBoeXNpY3NNYXRlcmlhbCBpbXBsZW1lbnRzIElQaHlzaWNzTWF0ZXJpYWwge1xuICAvKiogQGludGVybmFsICovXG4gIF9weE1hdGVyaWFsOiBhbnk7XG5cbiAgcHJvdGVjdGVkIF9waHlzWFBoeXNpY3M6IFBoeXNYUGh5c2ljcztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwaHlzWFBoeXNpY3M6IFBoeXNYUGh5c2ljcyxcbiAgICBzdGF0aWNGcmljdGlvbjogbnVtYmVyLFxuICAgIGR5bmFtaWNGcmljdGlvbjogbnVtYmVyLFxuICAgIGJvdW5jaW5lc3M6IG51bWJlcixcbiAgICBmcmljdGlvbkNvbWJpbmU6IENvbWJpbmVNb2RlLFxuICAgIGJvdW5jZUNvbWJpbmU6IENvbWJpbmVNb2RlXG4gICkge1xuICAgIHRoaXMuX3BoeXNYUGh5c2ljcyA9IHBoeXNYUGh5c2ljcztcbiAgICBjb25zdCBweE1hdGVyaWFsID0gcGh5c1hQaHlzaWNzLl9weFBoeXNpY3MuY3JlYXRlTWF0ZXJpYWwoc3RhdGljRnJpY3Rpb24sIGR5bmFtaWNGcmljdGlvbiwgYm91bmNpbmVzcyk7XG4gICAgcHhNYXRlcmlhbC5zZXRGcmljdGlvbkNvbWJpbmVNb2RlKGZyaWN0aW9uQ29tYmluZSk7XG4gICAgcHhNYXRlcmlhbC5zZXRSZXN0aXR1dGlvbkNvbWJpbmVNb2RlKGJvdW5jZUNvbWJpbmUpO1xuICAgIHRoaXMuX3B4TWF0ZXJpYWwgPSBweE1hdGVyaWFsO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljc01hdGVyaWFsLnNldEJvdW5jaW5lc3MgfVxuICAgKi9cbiAgc2V0Qm91bmNpbmVzcyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fcHhNYXRlcmlhbC5zZXRSZXN0aXR1dGlvbih2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElQaHlzaWNzTWF0ZXJpYWwuc2V0RHluYW1pY0ZyaWN0aW9uIH1cbiAgICovXG4gIHNldER5bmFtaWNGcmljdGlvbih2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fcHhNYXRlcmlhbC5zZXREeW5hbWljRnJpY3Rpb24odmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljc01hdGVyaWFsLnNldFN0YXRpY0ZyaWN0aW9uIH1cbiAgICovXG4gIHNldFN0YXRpY0ZyaWN0aW9uKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9weE1hdGVyaWFsLnNldFN0YXRpY0ZyaWN0aW9uKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3NNYXRlcmlhbC5zZXRCb3VuY2VDb21iaW5lIH1cbiAgICovXG4gIHNldEJvdW5jZUNvbWJpbmUodmFsdWU6IENvbWJpbmVNb2RlKSB7XG4gICAgdGhpcy5fcHhNYXRlcmlhbC5zZXRSZXN0aXR1dGlvbkNvbWJpbmVNb2RlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3NNYXRlcmlhbC5zZXRGcmljdGlvbkNvbWJpbmUgfVxuICAgKi9cbiAgc2V0RnJpY3Rpb25Db21iaW5lKHZhbHVlOiBDb21iaW5lTW9kZSkge1xuICAgIHRoaXMuX3B4TWF0ZXJpYWwuc2V0RnJpY3Rpb25Db21iaW5lTW9kZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElQaHlzaWNzTWF0ZXJpYWwuZGVzdHJveSB9XG4gICAqL1xuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3B4TWF0ZXJpYWwucmVsZWFzZSgpO1xuICB9XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGhvdyBwaHlzaWNzIG1hdGVyaWFscyBvZiB0aGUgY29sbGlkaW5nIG9iamVjdHMgYXJlIGNvbWJpbmVkLlxuICovXG5lbnVtIENvbWJpbmVNb2RlIHtcbiAgLyoqIEF2ZXJhZ2VzIHRoZSBmcmljdGlvbi9ib3VuY2Ugb2YgdGhlIHR3byBjb2xsaWRpbmcgbWF0ZXJpYWxzLiAqL1xuICBBdmVyYWdlLFxuICAvKiogVXNlcyB0aGUgc21hbGxlciBmcmljdGlvbi9ib3VuY2Ugb2YgdGhlIHR3byBjb2xsaWRpbmcgbWF0ZXJpYWxzLiAqL1xuICBNaW5pbXVtLFxuICAvKiogTXVsdGlwbGllcyB0aGUgZnJpY3Rpb24vYm91bmNlIG9mIHRoZSB0d28gY29sbGlkaW5nIG1hdGVyaWFscy4gKi9cbiAgTXVsdGlwbHksXG4gIC8qKiBVc2VzIHRoZSBsYXJnZXIgZnJpY3Rpb24vYm91bmNlIG9mIHRoZSB0d28gY29sbGlkaW5nIG1hdGVyaWFscy4gKi9cbiAgTWF4aW11bVxufVxuIiwiaW1wb3J0IHsgSVN0YXRpY0NvbGxpZGVyIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtZGVzaWduXCI7XG5pbXBvcnQgeyBRdWF0ZXJuaW9uLCBWZWN0b3IzIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmVcIjtcbmltcG9ydCB7IFBoeXNYQ29sbGlkZXIgfSBmcm9tIFwiLi9QaHlzWENvbGxpZGVyXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3MgfSBmcm9tIFwiLi9QaHlzWFBoeXNpY3NcIjtcblxuLyoqXG4gKiBBIHN0YXRpYyBjb2xsaWRlciBjb21wb25lbnQgdGhhdCB3aWxsIG5vdCBtb3ZlLlxuICogQHJlbWFya3MgTW9zdGx5IHVzZWQgZm9yIG9iamVjdCB3aGljaCBhbHdheXMgc3RheXMgYXQgdGhlIHNhbWUgcGxhY2UgYW5kIG5ldmVyIG1vdmVzIGFyb3VuZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFBoeXNYU3RhdGljQ29sbGlkZXIgZXh0ZW5kcyBQaHlzWENvbGxpZGVyIGltcGxlbWVudHMgSVN0YXRpY0NvbGxpZGVyIHtcbiAgY29uc3RydWN0b3IocGh5c1hQaHlzaWNzOiBQaHlzWFBoeXNpY3MsIHBvc2l0aW9uOiBWZWN0b3IzLCByb3RhdGlvbjogUXVhdGVybmlvbikge1xuICAgIHN1cGVyKHBoeXNYUGh5c2ljcyk7XG4gICAgdGhpcy5fcHhBY3RvciA9IHBoeXNYUGh5c2ljcy5fcHhQaHlzaWNzLmNyZWF0ZVJpZ2lkU3RhdGljKHRoaXMuX3RyYW5zZm9ybShwb3NpdGlvbiwgcm90YXRpb24pKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgSVBsYW5lQ29sbGlkZXJTaGFwZSB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lLWRlc2lnblwiO1xuaW1wb3J0IHsgUXVhdGVybmlvbiwgVmVjdG9yMyB9IGZyb20gXCJAZ2FsYWNlYW4vZW5naW5lXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3MgfSBmcm9tIFwiLi4vUGh5c1hQaHlzaWNzXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3NNYXRlcmlhbCB9IGZyb20gXCIuLi9QaHlzWFBoeXNpY3NNYXRlcmlhbFwiO1xuaW1wb3J0IHsgUGh5c1hDb2xsaWRlclNoYXBlIH0gZnJvbSBcIi4vUGh5c1hDb2xsaWRlclNoYXBlXCI7XG5cbi8qKlxuICogUGxhbmUgY29sbGlkZXIgc2hhcGUgaW4gUGh5c1guXG4gKi9cbmV4cG9ydCBjbGFzcyBQaHlzWFBsYW5lQ29sbGlkZXJTaGFwZSBleHRlbmRzIFBoeXNYQ29sbGlkZXJTaGFwZSBpbXBsZW1lbnRzIElQbGFuZUNvbGxpZGVyU2hhcGUge1xuICBjb25zdHJ1Y3RvcihwaHlzWFBoeXNpY3M6IFBoeXNYUGh5c2ljcywgdW5pcXVlSUQ6IG51bWJlciwgbWF0ZXJpYWw6IFBoeXNYUGh5c2ljc01hdGVyaWFsKSB7XG4gICAgc3VwZXIocGh5c1hQaHlzaWNzKTtcbiAgICB0aGlzLl9heGlzID0gbmV3IFF1YXRlcm5pb24oMCwgMCwgUGh5c1hDb2xsaWRlclNoYXBlLmhhbGZTcXJ0LCBQaHlzWENvbGxpZGVyU2hhcGUuaGFsZlNxcnQpO1xuICAgIHRoaXMuX3BoeXNYUm90YXRpb24uY29weUZyb20odGhpcy5fYXhpcyk7XG5cbiAgICB0aGlzLl9weEdlb21ldHJ5ID0gbmV3IHBoeXNYUGh5c2ljcy5fcGh5c1guUHhQbGFuZUdlb21ldHJ5KCk7XG4gICAgdGhpcy5faW5pdGlhbGl6ZShtYXRlcmlhbCwgdW5pcXVlSUQpO1xuICAgIHRoaXMuX3NldExvY2FsUG9zZSgpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBWZWN0b3IzIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmVcIjtcbmltcG9ydCB7IElTcGhlcmVDb2xsaWRlclNoYXBlIH0gZnJvbSBcIkBnYWxhY2Vhbi9lbmdpbmUtZGVzaWduXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3MgfSBmcm9tIFwiLi4vUGh5c1hQaHlzaWNzXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3NNYXRlcmlhbCB9IGZyb20gXCIuLi9QaHlzWFBoeXNpY3NNYXRlcmlhbFwiO1xuaW1wb3J0IHsgUGh5c1hDb2xsaWRlclNoYXBlIH0gZnJvbSBcIi4vUGh5c1hDb2xsaWRlclNoYXBlXCI7XG5cbi8qKlxuICogU3BoZXJlIGNvbGxpZGVyIHNoYXBlIGluIFBoeXNYLlxuICovXG5leHBvcnQgY2xhc3MgUGh5c1hTcGhlcmVDb2xsaWRlclNoYXBlIGV4dGVuZHMgUGh5c1hDb2xsaWRlclNoYXBlIGltcGxlbWVudHMgSVNwaGVyZUNvbGxpZGVyU2hhcGUge1xuICBwcml2YXRlIF9yYWRpdXM6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWF4U2NhbGU6IG51bWJlciA9IDE7XG5cbiAgY29uc3RydWN0b3IocGh5c1hQaHlzaWNzOiBQaHlzWFBoeXNpY3MsIHVuaXF1ZUlEOiBudW1iZXIsIHJhZGl1czogbnVtYmVyLCBtYXRlcmlhbDogUGh5c1hQaHlzaWNzTWF0ZXJpYWwpIHtcbiAgICBzdXBlcihwaHlzWFBoeXNpY3MpO1xuXG4gICAgdGhpcy5fcmFkaXVzID0gcmFkaXVzO1xuXG4gICAgdGhpcy5fcHhHZW9tZXRyeSA9IG5ldyBwaHlzWFBoeXNpY3MuX3BoeXNYLlB4U3BoZXJlR2VvbWV0cnkodGhpcy5fcmFkaXVzICogdGhpcy5fbWF4U2NhbGUpO1xuICAgIHRoaXMuX2luaXRpYWxpemUobWF0ZXJpYWwsIHVuaXF1ZUlEKTtcbiAgICB0aGlzLl9zZXRMb2NhbFBvc2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVNwaGVyZUNvbGxpZGVyU2hhcGUuc2V0UmFkaXVzIH1cbiAgICovXG4gIHNldFJhZGl1cyh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcmFkaXVzID0gdmFsdWU7XG4gICAgdGhpcy5fcHhHZW9tZXRyeS5yYWRpdXMgPSB2YWx1ZSAqIHRoaXMuX21heFNjYWxlO1xuICAgIHRoaXMuX3B4U2hhcGUuc2V0R2VvbWV0cnkodGhpcy5fcHhHZW9tZXRyeSk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElDb2xsaWRlclNoYXBlLnNldFdvcmxkU2NhbGUgfVxuICAgKi9cbiAgb3ZlcnJpZGUgc2V0V29ybGRTY2FsZShzY2FsZTogVmVjdG9yMyk6IHZvaWQge1xuICAgIHN1cGVyLnNldFdvcmxkU2NhbGUoc2NhbGUpO1xuXG4gICAgdGhpcy5fbWF4U2NhbGUgPSBNYXRoLm1heChzY2FsZS54LCBzY2FsZS55KTtcbiAgICB0aGlzLl9weEdlb21ldHJ5LnJhZGl1cyA9IHRoaXMuX3JhZGl1cyAqIHRoaXMuX21heFNjYWxlO1xuICAgIHRoaXMuX3B4U2hhcGUuc2V0R2VvbWV0cnkodGhpcy5fcHhHZW9tZXRyeSk7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIElCb3hDb2xsaWRlclNoYXBlLFxuICBJQ2Fwc3VsZUNvbGxpZGVyU2hhcGUsXG4gIElDaGFyYWN0ZXJDb250cm9sbGVyLFxuICBJRHluYW1pY0NvbGxpZGVyLFxuICBJRml4ZWRKb2ludCxcbiAgSUhpbmdlSm9pbnQsXG4gIElQaHlzaWNzLFxuICBJUGh5c2ljc01hbmFnZXIsXG4gIElQaHlzaWNzTWF0ZXJpYWwsXG4gIElQbGFuZUNvbGxpZGVyU2hhcGUsXG4gIElTcGhlcmVDb2xsaWRlclNoYXBlLFxuICBJU3ByaW5nSm9pbnQsXG4gIElTdGF0aWNDb2xsaWRlclxufSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZS1kZXNpZ25cIjtcbmltcG9ydCB7IFF1YXRlcm5pb24sIFZlY3RvcjMsIHZlcnNpb24gfSBmcm9tIFwiQGdhbGFjZWFuL2VuZ2luZVwiO1xuaW1wb3J0IHsgUGh5c1hSdW50aW1lTW9kZSB9IGZyb20gXCIuL2VudW0vUGh5c1hSdW50aW1lTW9kZVwiO1xuaW1wb3J0IHsgUGh5c1hGaXhlZEpvaW50IH0gZnJvbSBcIi4vam9pbnQvUGh5c1hGaXhlZEpvaW50XCI7XG5pbXBvcnQgeyBQaHlzWEhpbmdlSm9pbnQgfSBmcm9tIFwiLi9qb2ludC9QaHlzWEhpbmdlSm9pbnRcIjtcbmltcG9ydCB7IFBoeXNYU3ByaW5nSm9pbnQgfSBmcm9tIFwiLi9qb2ludC9QaHlzWFNwcmluZ0pvaW50XCI7XG5pbXBvcnQgeyBQaHlzWENoYXJhY3RlckNvbnRyb2xsZXIgfSBmcm9tIFwiLi9QaHlzWENoYXJhY3RlckNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IFBoeXNYQ29sbGlkZXIgfSBmcm9tIFwiLi9QaHlzWENvbGxpZGVyXCI7XG5pbXBvcnQgeyBQaHlzWER5bmFtaWNDb2xsaWRlciB9IGZyb20gXCIuL1BoeXNYRHluYW1pY0NvbGxpZGVyXCI7XG5pbXBvcnQgeyBQaHlzWFBoeXNpY3NNYW5hZ2VyIH0gZnJvbSBcIi4vUGh5c1hQaHlzaWNzTWFuYWdlclwiO1xuaW1wb3J0IHsgUGh5c1hQaHlzaWNzTWF0ZXJpYWwgfSBmcm9tIFwiLi9QaHlzWFBoeXNpY3NNYXRlcmlhbFwiO1xuaW1wb3J0IHsgUGh5c1hTdGF0aWNDb2xsaWRlciB9IGZyb20gXCIuL1BoeXNYU3RhdGljQ29sbGlkZXJcIjtcbmltcG9ydCB7IFBoeXNYQm94Q29sbGlkZXJTaGFwZSB9IGZyb20gXCIuL3NoYXBlL1BoeXNYQm94Q29sbGlkZXJTaGFwZVwiO1xuaW1wb3J0IHsgUGh5c1hDYXBzdWxlQ29sbGlkZXJTaGFwZSB9IGZyb20gXCIuL3NoYXBlL1BoeXNYQ2Fwc3VsZUNvbGxpZGVyU2hhcGVcIjtcbmltcG9ydCB7IFBoeXNYUGxhbmVDb2xsaWRlclNoYXBlIH0gZnJvbSBcIi4vc2hhcGUvUGh5c1hQbGFuZUNvbGxpZGVyU2hhcGVcIjtcbmltcG9ydCB7IFBoeXNYU3BoZXJlQ29sbGlkZXJTaGFwZSB9IGZyb20gXCIuL3NoYXBlL1BoeXNYU3BoZXJlQ29sbGlkZXJTaGFwZVwiO1xuXG4vKipcbiAqIFBoeXNYIG9iamVjdCBjcmVhdGlvbi5cbiAqL1xuXG5leHBvcnQgY2xhc3MgUGh5c1hQaHlzaWNzIGltcGxlbWVudHMgSVBoeXNpY3Mge1xuICAvKiogQGludGVybmFsIFBoeXNYIHdhc20gb2JqZWN0ICovXG4gIF9waHlzWDogYW55O1xuICAvKiogQGludGVybmFsIFBoeXNYIEZvdW5kYXRpb24gU0RLIHNpbmdsZXRvbiBjbGFzcyAqL1xuICBfcHhGb3VuZGF0aW9uOiBhbnk7XG4gIC8qKiBAaW50ZXJuYWwgUGh5c1ggcGh5c2ljcyBvYmplY3QgKi9cbiAgX3B4UGh5c2ljczogYW55O1xuXG4gIHByaXZhdGUgX3J1blRpbWVNb2RlOiBQaHlzWFJ1bnRpbWVNb2RlO1xuICBwcml2YXRlIF9pbml0aWFsaXplU3RhdGU6IEluaXRpYWxpemVTdGF0ZSA9IEluaXRpYWxpemVTdGF0ZS5VbmluaXRpYWxpemVkO1xuICBwcml2YXRlIF9pbml0aWFsaXplUHJvbWlzZTogUHJvbWlzZTx2b2lkPjtcblxuICBjb25zdHJ1Y3RvcihydW50aW1lTW9kZTogUGh5c1hSdW50aW1lTW9kZSA9IFBoeXNYUnVudGltZU1vZGUuQXV0bykge1xuICAgIHRoaXMuX3J1blRpbWVNb2RlID0gcnVudGltZU1vZGU7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBQaHlzWFBoeXNpY3MuXG4gICAqIEBwYXJhbSBydW50aW1lTW9kZSAtIFJ1bnRpbWUgbW9kZVxuICAgKiBAcmV0dXJucyBQcm9taXNlIG9iamVjdFxuICAgKi9cbiAgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5faW5pdGlhbGl6ZVN0YXRlID09PSBJbml0aWFsaXplU3RhdGUuSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2luaXRpYWxpemVTdGF0ZSA9PT0gSW5pdGlhbGl6ZVN0YXRlLkluaXRpYWxpemluZykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXRpYWxpemVQcm9taXNlO1xuICAgIH1cblxuICAgIGxldCBydW50aW1lTW9kZSA9IHRoaXMuX3J1blRpbWVNb2RlO1xuICAgIGNvbnN0IHNjcmlwdFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICAgIHNjcmlwdC5vbmxvYWQgPSByZXNvbHZlO1xuICAgICAgc2NyaXB0Lm9uZXJyb3IgPSByZWplY3Q7XG4gICAgICBpZiAocnVudGltZU1vZGUgPT0gUGh5c1hSdW50aW1lTW9kZS5BdXRvKSB7XG4gICAgICAgIGNvbnN0IHN1cHBvcnRlZCA9ICgoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgV2ViQXNzZW1ibHkgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShVaW50OEFycmF5Lm9mKDB4MCwgMHg2MSwgMHg3MywgMHg2ZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCkpO1xuICAgICAgICAgICAgICBpZiAobW9kdWxlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuTW9kdWxlKVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5Lkluc3RhbmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KSgpO1xuICAgICAgICBpZiAoc3VwcG9ydGVkKSB7XG4gICAgICAgICAgcnVudGltZU1vZGUgPSBQaHlzWFJ1bnRpbWVNb2RlLldlYkFzc2VtYmx5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJ1bnRpbWVNb2RlID0gUGh5c1hSdW50aW1lTW9kZS5KYXZhU2NyaXB0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChydW50aW1lTW9kZSA9PSBQaHlzWFJ1bnRpbWVNb2RlLkphdmFTY3JpcHQpIHtcbiAgICAgICAgc2NyaXB0LnNyYyA9IGBodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL29zL2xpYi9vYXNpcy1lbmdpbmUvcGh5c2ljcy1waHlzeC8ke3ZlcnNpb259L2xpYnMvcGh5c3gucmVsZWFzZS5qcy5qc2A7XG4gICAgICB9IGVsc2UgaWYgKHJ1bnRpbWVNb2RlID09IFBoeXNYUnVudGltZU1vZGUuV2ViQXNzZW1ibHkpIHtcbiAgICAgICAgc2NyaXB0LnNyYyA9IGBodHRwczovL2d3LmFsaXBheW9iamVjdHMuY29tL29zL2xpYi9nYWxhY2Vhbi9lbmdpbmUtcGh5c2ljcy1waHlzeC8xLjAuMC1hbHBoYS44L2xpYnMvcGh5c3gucmVsZWFzZS5qc2A7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbml0aWFsaXplUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHNjcmlwdFByb21pc2VcbiAgICAgICAgLnRoZW4oXG4gICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICg8YW55PndpbmRvdykuUEhZU1goKS50aGVuKChQSFlTWCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9pbml0KFBIWVNYKTtcbiAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVN0YXRlID0gSW5pdGlhbGl6ZVN0YXRlLkluaXRpYWxpemVkO1xuICAgICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplUHJvbWlzZSA9IG51bGw7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUGh5c1ggbG9hZGVkLlwiKTtcbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSwgcmVqZWN0KSxcbiAgICAgICAgICByZWplY3RcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gocmVqZWN0KTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2luaXRpYWxpemVQcm9taXNlID0gaW5pdGlhbGl6ZVByb21pc2U7XG4gICAgcmV0dXJuIGluaXRpYWxpemVQcm9taXNlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3kgUGh5c1hQaHlzaWNzLlxuICAgKi9cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fcGh5c1guUHhDbG9zZUV4dGVuc2lvbnMoKTtcbiAgICB0aGlzLl9weFBoeXNpY3MucmVsZWFzZSgpO1xuICAgIHRoaXMuX3B4Rm91bmRhdGlvbi5yZWxlYXNlKCk7XG4gICAgdGhpcy5fcGh5c1ggPSBudWxsO1xuICAgIHRoaXMuX3B4Rm91bmRhdGlvbiA9IG51bGw7XG4gICAgdGhpcy5fcHhQaHlzaWNzID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3MuY3JlYXRlUGh5c2ljc01hbmFnZXIgfVxuICAgKi9cbiAgY3JlYXRlUGh5c2ljc01hbmFnZXIoXG4gICAgb25Db250YWN0QmVnaW4/OiAob2JqMTogbnVtYmVyLCBvYmoyOiBudW1iZXIpID0+IHZvaWQsXG4gICAgb25Db250YWN0RW5kPzogKG9iajE6IG51bWJlciwgb2JqMjogbnVtYmVyKSA9PiB2b2lkLFxuICAgIG9uQ29udGFjdFN0YXk/OiAob2JqMTogbnVtYmVyLCBvYmoyOiBudW1iZXIpID0+IHZvaWQsXG4gICAgb25UcmlnZ2VyQmVnaW4/OiAob2JqMTogbnVtYmVyLCBvYmoyOiBudW1iZXIpID0+IHZvaWQsXG4gICAgb25UcmlnZ2VyRW5kPzogKG9iajE6IG51bWJlciwgb2JqMjogbnVtYmVyKSA9PiB2b2lkLFxuICAgIG9uVHJpZ2dlclN0YXk/OiAob2JqMTogbnVtYmVyLCBvYmoyOiBudW1iZXIpID0+IHZvaWRcbiAgKTogSVBoeXNpY3NNYW5hZ2VyIHtcbiAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFBoeXNYUGh5c2ljc01hbmFnZXIoXG4gICAgICB0aGlzLFxuICAgICAgb25Db250YWN0QmVnaW4sXG4gICAgICBvbkNvbnRhY3RFbmQsXG4gICAgICBvbkNvbnRhY3RTdGF5LFxuICAgICAgb25UcmlnZ2VyQmVnaW4sXG4gICAgICBvblRyaWdnZXJFbmQsXG4gICAgICBvblRyaWdnZXJTdGF5XG4gICAgKTtcbiAgICByZXR1cm4gbWFuYWdlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3MuY3JlYXRlU3RhdGljQ29sbGlkZXIgfVxuICAgKi9cbiAgY3JlYXRlU3RhdGljQ29sbGlkZXIocG9zaXRpb246IFZlY3RvcjMsIHJvdGF0aW9uOiBRdWF0ZXJuaW9uKTogSVN0YXRpY0NvbGxpZGVyIHtcbiAgICByZXR1cm4gbmV3IFBoeXNYU3RhdGljQ29sbGlkZXIodGhpcywgcG9zaXRpb24sIHJvdGF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3MuY3JlYXRlRHluYW1pY0NvbGxpZGVyIH1cbiAgICovXG4gIGNyZWF0ZUR5bmFtaWNDb2xsaWRlcihwb3NpdGlvbjogVmVjdG9yMywgcm90YXRpb246IFF1YXRlcm5pb24pOiBJRHluYW1pY0NvbGxpZGVyIHtcbiAgICByZXR1cm4gbmV3IFBoeXNYRHluYW1pY0NvbGxpZGVyKHRoaXMsIHBvc2l0aW9uLCByb3RhdGlvbik7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElQaHlzaWNzLmNyZWF0ZUNoYXJhY3RlckNvbnRyb2xsZXIgfVxuICAgKi9cbiAgY3JlYXRlQ2hhcmFjdGVyQ29udHJvbGxlcigpOiBJQ2hhcmFjdGVyQ29udHJvbGxlciB7XG4gICAgcmV0dXJuIG5ldyBQaHlzWENoYXJhY3RlckNvbnRyb2xsZXIodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElQaHlzaWNzLmNyZWF0ZVBoeXNpY3NNYXRlcmlhbCB9XG4gICAqL1xuICBjcmVhdGVQaHlzaWNzTWF0ZXJpYWwoXG4gICAgc3RhdGljRnJpY3Rpb246IG51bWJlcixcbiAgICBkeW5hbWljRnJpY3Rpb246IG51bWJlcixcbiAgICBib3VuY2luZXNzOiBudW1iZXIsXG4gICAgZnJpY3Rpb25Db21iaW5lOiBudW1iZXIsXG4gICAgYm91bmNlQ29tYmluZTogbnVtYmVyXG4gICk6IElQaHlzaWNzTWF0ZXJpYWwge1xuICAgIHJldHVybiBuZXcgUGh5c1hQaHlzaWNzTWF0ZXJpYWwodGhpcywgc3RhdGljRnJpY3Rpb24sIGR5bmFtaWNGcmljdGlvbiwgYm91bmNpbmVzcywgZnJpY3Rpb25Db21iaW5lLCBib3VuY2VDb21iaW5lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3MuY3JlYXRlQm94Q29sbGlkZXJTaGFwZSB9XG4gICAqL1xuICBjcmVhdGVCb3hDb2xsaWRlclNoYXBlKHVuaXF1ZUlEOiBudW1iZXIsIHNpemU6IFZlY3RvcjMsIG1hdGVyaWFsOiBQaHlzWFBoeXNpY3NNYXRlcmlhbCk6IElCb3hDb2xsaWRlclNoYXBlIHtcbiAgICByZXR1cm4gbmV3IFBoeXNYQm94Q29sbGlkZXJTaGFwZSh0aGlzLCB1bmlxdWVJRCwgc2l6ZSwgbWF0ZXJpYWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljcy5jcmVhdGVTcGhlcmVDb2xsaWRlclNoYXBlIH1cbiAgICovXG4gIGNyZWF0ZVNwaGVyZUNvbGxpZGVyU2hhcGUodW5pcXVlSUQ6IG51bWJlciwgcmFkaXVzOiBudW1iZXIsIG1hdGVyaWFsOiBQaHlzWFBoeXNpY3NNYXRlcmlhbCk6IElTcGhlcmVDb2xsaWRlclNoYXBlIHtcbiAgICByZXR1cm4gbmV3IFBoeXNYU3BoZXJlQ29sbGlkZXJTaGFwZSh0aGlzLCB1bmlxdWVJRCwgcmFkaXVzLCBtYXRlcmlhbCk7XG4gIH1cblxuICAvKipcbiAgICoge0Bpbmhlcml0RG9jIElQaHlzaWNzLmNyZWF0ZVBsYW5lQ29sbGlkZXJTaGFwZSB9XG4gICAqL1xuICBjcmVhdGVQbGFuZUNvbGxpZGVyU2hhcGUodW5pcXVlSUQ6IG51bWJlciwgbWF0ZXJpYWw6IFBoeXNYUGh5c2ljc01hdGVyaWFsKTogSVBsYW5lQ29sbGlkZXJTaGFwZSB7XG4gICAgcmV0dXJuIG5ldyBQaHlzWFBsYW5lQ29sbGlkZXJTaGFwZSh0aGlzLCB1bmlxdWVJRCwgbWF0ZXJpYWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIHtAaW5oZXJpdERvYyBJUGh5c2ljcy5jcmVhdGVDYXBzdWxlQ29sbGlkZXJTaGFwZSB9XG4gICAqL1xuICBjcmVhdGVDYXBzdWxlQ29sbGlkZXJTaGFwZShcbiAgICB1bmlxdWVJRDogbnVtYmVyLFxuICAgIHJhZGl1czogbnVtYmVyLFxuICAgIGhlaWdodDogbnVtYmVyLFxuICAgIG1hdGVyaWFsOiBQaHlzWFBoeXNpY3NNYXRlcmlhbFxuICApOiBJQ2Fwc3VsZUNvbGxpZGVyU2hhcGUge1xuICAgIHJldHVybiBuZXcgUGh5c1hDYXBzdWxlQ29sbGlkZXJTaGFwZSh0aGlzLCB1bmlxdWVJRCwgcmFkaXVzLCBoZWlnaHQsIG1hdGVyaWFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3MuY3JlYXRlRml4ZWRKb2ludCB9XG4gICAqL1xuICBjcmVhdGVGaXhlZEpvaW50KGNvbGxpZGVyOiBQaHlzWENvbGxpZGVyKTogSUZpeGVkSm9pbnQge1xuICAgIHJldHVybiBuZXcgUGh5c1hGaXhlZEpvaW50KHRoaXMsIGNvbGxpZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3MuY3JlYXRlSGluZ2VKb2ludCB9XG4gICAqL1xuICBjcmVhdGVIaW5nZUpvaW50KGNvbGxpZGVyOiBQaHlzWENvbGxpZGVyKTogSUhpbmdlSm9pbnQge1xuICAgIHJldHVybiBuZXcgUGh5c1hIaW5nZUpvaW50KHRoaXMsIGNvbGxpZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB7QGluaGVyaXREb2MgSVBoeXNpY3MuY3JlYXRlU3ByaW5nSm9pbnQgfVxuICAgKi9cbiAgY3JlYXRlU3ByaW5nSm9pbnQoY29sbGlkZXI6IFBoeXNYQ29sbGlkZXIpOiBJU3ByaW5nSm9pbnQge1xuICAgIHJldHVybiBuZXcgUGh5c1hTcHJpbmdKb2ludCh0aGlzLCBjb2xsaWRlcik7XG4gIH1cblxuICBwcml2YXRlIF9pbml0KHBoeXNYOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCB2ZXJzaW9uID0gcGh5c1guUFhfUEhZU0lDU19WRVJTSU9OO1xuICAgIGNvbnN0IGRlZmF1bHRFcnJvckNhbGxiYWNrID0gbmV3IHBoeXNYLlB4RGVmYXVsdEVycm9yQ2FsbGJhY2soKTtcbiAgICBjb25zdCBhbGxvY2F0b3IgPSBuZXcgcGh5c1guUHhEZWZhdWx0QWxsb2NhdG9yKCk7XG4gICAgY29uc3QgcHhGb3VuZGF0aW9uID0gcGh5c1guUHhDcmVhdGVGb3VuZGF0aW9uKHZlcnNpb24sIGFsbG9jYXRvciwgZGVmYXVsdEVycm9yQ2FsbGJhY2spO1xuICAgIGNvbnN0IHB4UGh5c2ljcyA9IHBoeXNYLlB4Q3JlYXRlUGh5c2ljcyh2ZXJzaW9uLCBweEZvdW5kYXRpb24sIG5ldyBwaHlzWC5QeFRvbGVyYW5jZXNTY2FsZSgpLCBmYWxzZSwgbnVsbCk7XG5cbiAgICBwaHlzWC5QeEluaXRFeHRlbnNpb25zKHB4UGh5c2ljcywgbnVsbCk7XG4gICAgdGhpcy5fcGh5c1ggPSBwaHlzWDtcbiAgICB0aGlzLl9weEZvdW5kYXRpb24gPSBweEZvdW5kYXRpb247XG4gICAgdGhpcy5fcHhQaHlzaWNzID0gcHhQaHlzaWNzO1xuICB9XG59XG5cbmVudW0gSW5pdGlhbGl6ZVN0YXRlIHtcbiAgVW5pbml0aWFsaXplZCxcbiAgSW5pdGlhbGl6aW5nLFxuICBJbml0aWFsaXplZFxufVxuIl0sIm5hbWVzIjpbIlBoeXNYUnVudGltZU1vZGUiLCJBdXRvIiwiV2ViQXNzZW1ibHkiLCJKYXZhU2NyaXB0IiwiUGh5c1hKb2ludCIsInBoeXNYUGh5c2ljcyIsIl9jb25uZWN0ZWRBbmNob3IiLCJWZWN0b3IzIiwiX2JyZWFrRm9yY2UiLCJOdW1iZXIiLCJNQVhfVkFMVUUiLCJfYnJlYWtUb3JxdWUiLCJfcGh5c1hQaHlzaWNzIiwic2V0Q29ubmVjdGVkQ29sbGlkZXIiLCJ2YWx1ZSIsIl9weEpvaW50Iiwic2V0QWN0b3JzIiwiX3B4QWN0b3IiLCJfY29sbGlkZXIiLCJzZXRDb25uZWN0ZWRBbmNob3IiLCJjb3B5RnJvbSIsIl9zZXRMb2NhbFBvc2UiLCJfZGVmYXVsdFF1YXQiLCJzZXRDb25uZWN0ZWRNYXNzU2NhbGUiLCJzZXRJbnZNYXNzU2NhbGUwIiwic2V0Q29ubmVjdGVkSW5lcnRpYVNjYWxlIiwic2V0SW52SW5lcnRpYVNjYWxlMCIsInNldE1hc3NTY2FsZSIsInNldEludk1hc3NTY2FsZTEiLCJzZXRJbmVydGlhU2NhbGUiLCJzZXRJbnZJbmVydGlhU2NhbGUxIiwic2V0QnJlYWtGb3JjZSIsInNldEJyZWFrVG9ycXVlIiwiYWN0b3IiLCJwb3NpdGlvbiIsInJvdGF0aW9uIiwic2V0TG9jYWxQb3NlIiwiX3hBeGlzIiwiX2RlZmF1bHRWZWMiLCJRdWF0ZXJuaW9uIiwiUGh5c1hGaXhlZEpvaW50IiwiY29sbGlkZXIiLCJfcHhQaHlzaWNzIiwiY3JlYXRlRml4ZWRKb2ludCIsIlBoeXNYSGluZ2VKb2ludCIsIl9heGlzUm90YXRpb25RdWF0ZXJuaW9uIiwiX3N3aW5nT2Zmc2V0IiwiX3ZlbG9jaXR5IiwiY3JlYXRlUmV2b2x1dGVKb2ludCIsInNldEF4aXMiLCJ4QXhpcyIsImF4aXNSb3RhdGlvblF1YXRlcm5pb24iLCJzZXQiLCJub3JtYWxpemUiLCJhbmdsZSIsIk1hdGgiLCJhY29zIiwiZG90IiwiY3Jvc3MiLCJyb3RhdGlvbkF4aXNBbmdsZSIsInNldFN3aW5nT2Zmc2V0IiwiZ2V0QW5nbGUiLCJnZXRWZWxvY2l0eSIsInZlbG9jaXR5Iiwic2V0SGFyZExpbWl0IiwibG93ZXJMaW1pdCIsInVwcGVyTGltaXQiLCJjb250YWN0RGlzdCIsInNldFNvZnRMaW1pdCIsInN0aWZmbmVzcyIsImRhbXBpbmciLCJzZXREcml2ZVZlbG9jaXR5Iiwic2V0RHJpdmVGb3JjZUxpbWl0IiwibGltaXQiLCJzZXREcml2ZUdlYXJSYXRpbyIsInJhdGlvIiwic2V0SGluZ2VKb2ludEZsYWciLCJmbGFnIiwic2V0UmV2b2x1dGVKb2ludEZsYWciLCJQaHlzWFNwcmluZ0pvaW50IiwiY3JlYXRlRGlzdGFuY2VKb2ludCIsInNldERpc3RhbmNlSm9pbnRGbGFnIiwic2V0TWluRGlzdGFuY2UiLCJkaXN0YW5jZSIsInNldE1heERpc3RhbmNlIiwic2V0VG9sZXJhbmNlIiwidG9sZXJhbmNlIiwic2V0U3RpZmZuZXNzIiwic2V0RGFtcGluZyIsIkRpc29yZGVyZWRBcnJheSIsImNvdW50IiwibGVuZ3RoIiwiX2VsZW1lbnRzIiwiQXJyYXkiLCJhZGQiLCJlbGVtZW50IiwicHVzaCIsImRlbGV0ZSIsImluZGV4IiwiaW5kZXhPZiIsImRlbGV0ZUJ5SW5kZXgiLCJnZXQiLCJlbGVtZW50cyIsImVuZCIsImxhc3RJbmRleCIsImdhcmJhZ2VDb2xsZWN0aW9uIiwiU2hhcGVGbGFnIiwiU0lNVUxBVElPTl9TSEFQRSIsIlNDRU5FX1FVRVJZX1NIQVBFIiwiVFJJR0dFUl9TSEFQRSIsIlBoeXNYQ29sbGlkZXJTaGFwZSIsIl9jb250cm9sbGVycyIsIl9zY2FsZSIsIl9wb3NpdGlvbiIsIl9yb3RhdGlvbiIsIl9heGlzIiwiX3BoeXNYUm90YXRpb24iLCJfc2hhcGVGbGFncyIsIl9weE1hdGVyaWFscyIsInNldFJvdGF0aW9uIiwicm90YXRpb25ZYXdQaXRjaFJvbGwiLCJ4IiwieSIsInoiLCJtdWx0aXBseSIsInNldFBvc2l0aW9uIiwiY29udHJvbGxlcnMiLCJpIiwibiIsIl9zZXRMb2NhbFBvc2l0aW9uIiwic2V0V29ybGRTY2FsZSIsInNjYWxlIiwic2V0Q29udGFjdE9mZnNldCIsIm9mZnNldCIsIl9weFNoYXBlIiwiX3B4Q29udHJvbGxlciIsInNldE1hdGVyaWFsIiwiX3B4TWF0ZXJpYWwiLCJzZXRNYXRlcmlhbHMiLCJzZXRJc1RyaWdnZXIiLCJfbW9kaWZ5RmxhZyIsIl9zZXRTaGFwZUZsYWdzIiwiZGVzdHJveSIsInJlbGVhc2UiLCJmbGFncyIsInNldEZsYWdzIiwiX3BoeXNYIiwiUHhTaGFwZUZsYWdzIiwidHJhbnNmb3JtIiwidHJhbnNsYXRpb24iLCJfaW5pdGlhbGl6ZSIsIm1hdGVyaWFsIiwiaWQiLCJfaWQiLCJjcmVhdGVTaGFwZSIsIl9weEdlb21ldHJ5Iiwic2V0VVVJRCIsImhhbGZTcXJ0IiwiUGh5c1hCb3hDb2xsaWRlclNoYXBlIiwidW5pcXVlSUQiLCJzaXplIiwiX2hhbGZTaXplIiwiUHhCb3hHZW9tZXRyeSIsInNldFNpemUiLCJ0ZW1wRXh0ZW50cyIsIl90ZW1wSGFsZkV4dGVudHMiLCJoYWxmRXh0ZW50cyIsInNldEdlb21ldHJ5IiwiX3VwZGF0ZUNvbnRyb2xsZXIiLCJleHRlbnRzIiwicHhDb250cm9sbGVyIiwic2V0SGFsZkhlaWdodCIsInNldEhhbGZTaWRlRXh0ZW50Iiwic2V0SGFsZkZvcndhcmRFeHRlbnQiLCJQaHlzWENhcHN1bGVDb2xsaWRlclNoYXBlIiwicmFkaXVzIiwiaGVpZ2h0IiwiX3VwQXhpcyIsIlkiLCJfcmFkaXVzIiwiX2hhbGZIZWlnaHQiLCJQeENhcHN1bGVHZW9tZXRyeSIsInNldFJhZGl1cyIsIlgiLCJtYXgiLCJaIiwic2V0SGVpZ2h0IiwiaGFsZkhlaWdodCIsInNldFVwQXhpcyIsInVwQXhpcyIsImF4aXMiLCJwaHlzWFJvdGF0aW9uIiwiZ2VvbWV0cnkiLCJDb2xsaWRlclNoYXBlVXBBeGlzIiwiUGh5c1hDaGFyYWN0ZXJDb250cm9sbGVyIiwiX3NjYWxlZE9mZnNldCIsIm1vdmUiLCJkaXNwIiwibWluRGlzdCIsImVsYXBzZWRUaW1lIiwic2V0V29ybGRQb3NpdGlvbiIsIl90ZW1wVmVjIiwiZ2V0V29ybGRQb3NpdGlvbiIsImdldFBvc2l0aW9uIiwic3VidHJhY3QiLCJzZXRTdGVwT2Zmc2V0Iiwic2V0Tm9uV2Fsa2FibGVNb2RlIiwic2V0VXBEaXJlY3Rpb24iLCJ1cCIsInNldFNsb3BlTGltaXQiLCJzbG9wZUxpbWl0IiwiYWRkU2hhcGUiLCJzaGFwZSIsIl9weE1hbmFnZXIiLCJfY3JlYXRlUFhDb250cm9sbGVyIiwiX3NoYXBlIiwicmVtb3ZlU2hhcGUiLCJfZGVzdHJveVBYQ29udHJvbGxlciIsInB4TWFuYWdlciIsImRlc2MiLCJQeEJveENvbnRyb2xsZXJEZXNjIiwiaGFsZlNpZGVFeHRlbnQiLCJoYWxmRm9yd2FyZEV4dGVudCIsIlB4Q2Fwc3VsZUNvbnRyb2xsZXJEZXNjIiwiY2xpbWJpbmdNb2RlIiwiX2dldENvbnRyb2xsZXJNYW5hZ2VyIiwiY3JlYXRlQ29udHJvbGxlciIsIlBoeXNYQ29sbGlkZXIiLCJhdHRhY2hTaGFwZSIsImRldGFjaFNoYXBlIiwic2V0V29ybGRUcmFuc2Zvcm0iLCJzZXRHbG9iYWxQb3NlIiwiX3RyYW5zZm9ybSIsImdldFdvcmxkVHJhbnNmb3JtIiwib3V0UG9zaXRpb24iLCJvdXRSb3RhdGlvbiIsImdldEdsb2JhbFBvc2UiLCJ3IiwicG9zIiwicm90IiwiX3RlbXBUcmFuc2Zvcm0iLCJDb2xsaXNpb25EZXRlY3Rpb25Nb2RlIiwiRGlzY3JldGUiLCJDb250aW51b3VzIiwiQ29udGludW91c0R5bmFtaWMiLCJDb250aW51b3VzU3BlY3VsYXRpdmUiLCJQaHlzWER5bmFtaWNDb2xsaWRlciIsImNyZWF0ZVJpZ2lkRHluYW1pYyIsInNldExpbmVhckRhbXBpbmciLCJzZXRBbmd1bGFyRGFtcGluZyIsInNldExpbmVhclZlbG9jaXR5Iiwic2V0QW5ndWxhclZlbG9jaXR5Iiwic2V0TWFzcyIsInNldENlbnRlck9mTWFzcyIsInNldENNYXNzTG9jYWxQb3NlIiwic2V0SW5lcnRpYVRlbnNvciIsInNldE1hc3NTcGFjZUluZXJ0aWFUZW5zb3IiLCJzZXRNYXhBbmd1bGFyVmVsb2NpdHkiLCJzZXRNYXhEZXBlbmV0cmF0aW9uVmVsb2NpdHkiLCJzZXRTbGVlcFRocmVzaG9sZCIsInNldFNvbHZlckl0ZXJhdGlvbnMiLCJzZXRTb2x2ZXJJdGVyYXRpb25Db3VudHMiLCJzZXRDb2xsaXNpb25EZXRlY3Rpb25Nb2RlIiwic2V0UmlnaWRCb2R5RmxhZyIsIlB4UmlnaWRCb2R5RmxhZyIsImVFTkFCTEVfQ0NEIiwiZUVOQUJMRV9DQ0RfRlJJQ1RJT04iLCJlRU5BQkxFX1NQRUNVTEFUSVZFX0NDRCIsInBoeXNYIiwic2V0SXNLaW5lbWF0aWMiLCJlS0lORU1BVElDIiwic2V0Q29uc3RyYWludHMiLCJzZXRSaWdpZER5bmFtaWNMb2NrRmxhZ3MiLCJhZGRGb3JjZSIsImZvcmNlIiwiYWRkVG9ycXVlIiwidG9ycXVlIiwicG9zaXRpb25PclJvdGF0aW9uIiwic2V0S2luZW1hdGljVGFyZ2V0IiwidGVtcFRyYW5zbGF0aW9uIiwiX3RlbXBUcmFuc2xhdGlvbiIsInRlbXBSb3RhdGlvbiIsIl90ZW1wUm90YXRpb24iLCJzbGVlcCIsInB1dFRvU2xlZXAiLCJ3YWtlVXAiLCJQaHlzWFBoeXNpY3NNYW5hZ2VyIiwib25Db250YWN0RW50ZXIiLCJvbkNvbnRhY3RFeGl0Iiwib25Db250YWN0U3RheSIsIm9uVHJpZ2dlckVudGVyIiwib25UcmlnZ2VyRXhpdCIsIm9uVHJpZ2dlclN0YXkiLCJfcHhDb250cm9sbGVyTWFuYWdlciIsIl9jdXJyZW50RXZlbnRzIiwiX2V2ZW50TWFwIiwiX2V2ZW50UG9vbCIsIl9weFJheWNhc3RIaXQiLCJQeFJheWNhc3RIaXQiLCJfcHhGaWx0ZXJEYXRhIiwiUHhRdWVyeUZpbHRlckRhdGEiLCJQeFF1ZXJ5RmxhZ3MiLCJRdWVyeUZsYWciLCJTVEFUSUMiLCJEWU5BTUlDIiwiUFJFX0ZJTFRFUiIsIl9vbkNvbnRhY3RFbnRlciIsIl9vbkNvbnRhY3RFeGl0IiwiX29uQ29udGFjdFN0YXkiLCJfb25UcmlnZ2VyRW50ZXIiLCJfb25UcmlnZ2VyRXhpdCIsIl9vblRyaWdnZXJTdGF5IiwidHJpZ2dlckNhbGxiYWNrIiwib25Db250YWN0QmVnaW4iLCJpbmRleDEiLCJpbmRleDIiLCJvbkNvbnRhY3RFbmQiLCJvbkNvbnRhY3RQZXJzaXN0Iiwib25UcmlnZ2VyQmVnaW4iLCJldmVudCIsIl9nZXRUcmlnZ2VyIiwic3RhdGUiLCJFbnRlciIsIm9uVHJpZ2dlckVuZCIsInN1Yk1hcCIsInVuZGVmaW5lZCIsIkV4aXQiLCJweFBoeXNpY3MiLCJwaHlzWFNpbXVsYXRpb25DYWxsYmFja0luc3RhbmNlIiwiUHhTaW11bGF0aW9uRXZlbnRDYWxsYmFjayIsImltcGxlbWVudCIsInNjZW5lRGVzYyIsImdldERlZmF1bHRTY2VuZURlc2MiLCJnZXRUb2xlcmFuY2VzU2NhbGUiLCJfcHhTY2VuZSIsImNyZWF0ZVNjZW5lIiwic2V0R3Jhdml0eSIsImFkZENvbGxpZGVyU2hhcGUiLCJjb2xsaWRlclNoYXBlIiwicmVtb3ZlQ29sbGlkZXJTaGFwZSIsImV2ZW50UG9vbCIsImN1cnJlbnRFdmVudHMiLCJzaGFwZUlEIiwiYWRkQ29sbGlkZXIiLCJhZGRBY3RvciIsInJlbW92ZUNvbGxpZGVyIiwicmVtb3ZlQWN0b3IiLCJhZGRDaGFyYWN0ZXJDb250cm9sbGVyIiwiY2hhcmFjdGVyQ29udHJvbGxlciIsImxhc3RQWE1hbmFnZXIiLCJyZW1vdmVDaGFyYWN0ZXJDb250cm9sbGVyIiwidXBkYXRlIiwiX3NpbXVsYXRlIiwiX2ZldGNoUmVzdWx0cyIsIl9maXJlRXZlbnQiLCJyYXljYXN0IiwicmF5Iiwib25SYXljYXN0IiwiaGl0IiwicHhIaXRSZXN1bHQiLCJtaW4iLCJyYXljYXN0Q2FsbGJhY2siLCJwcmVGaWx0ZXIiLCJmaWx0ZXJEYXRhIiwicG9zdEZpbHRlciIsInJlc3VsdCIsInJheWNhc3RTaW5nbGUiLCJvcmlnaW4iLCJkaXJlY3Rpb24iLCJQeFF1ZXJ5RmlsdGVyQ2FsbGJhY2siLCJfdGVtcFBvc2l0aW9uIiwiX3RlbXBOb3JtYWwiLCJub3JtYWwiLCJweE5vcm1hbCIsInB4UG9zaXRpb24iLCJnZXRTaGFwZSIsImdldFVVSUQiLCJweENvbnRyb2xsZXJNYW5hZ2VyIiwiY3JlYXRlQ29udHJvbGxlck1hbmFnZXIiLCJzaW11bGF0ZSIsImJsb2NrIiwiZmV0Y2hSZXN1bHRzIiwicG9wIiwiVHJpZ2dlckV2ZW50IiwiU3RheSIsIlBPU1RfRklMVEVSIiwiQU5ZX0hJVCIsIk5PX0JMT0NLIiwiVHJpZ2dlckV2ZW50U3RhdGUiLCJQaHlzWFBoeXNpY3NNYXRlcmlhbCIsInN0YXRpY0ZyaWN0aW9uIiwiZHluYW1pY0ZyaWN0aW9uIiwiYm91bmNpbmVzcyIsImZyaWN0aW9uQ29tYmluZSIsImJvdW5jZUNvbWJpbmUiLCJweE1hdGVyaWFsIiwiY3JlYXRlTWF0ZXJpYWwiLCJzZXRGcmljdGlvbkNvbWJpbmVNb2RlIiwic2V0UmVzdGl0dXRpb25Db21iaW5lTW9kZSIsInNldEJvdW5jaW5lc3MiLCJzZXRSZXN0aXR1dGlvbiIsInNldER5bmFtaWNGcmljdGlvbiIsInNldFN0YXRpY0ZyaWN0aW9uIiwic2V0Qm91bmNlQ29tYmluZSIsInNldEZyaWN0aW9uQ29tYmluZSIsIkNvbWJpbmVNb2RlIiwiQXZlcmFnZSIsIk1pbmltdW0iLCJNdWx0aXBseSIsIk1heGltdW0iLCJQaHlzWFN0YXRpY0NvbGxpZGVyIiwiY3JlYXRlUmlnaWRTdGF0aWMiLCJQaHlzWFBsYW5lQ29sbGlkZXJTaGFwZSIsIlB4UGxhbmVHZW9tZXRyeSIsIlBoeXNYU3BoZXJlQ29sbGlkZXJTaGFwZSIsIl9tYXhTY2FsZSIsIlB4U3BoZXJlR2VvbWV0cnkiLCJQaHlzWFBoeXNpY3MiLCJydW50aW1lTW9kZSIsIl9pbml0aWFsaXplU3RhdGUiLCJVbmluaXRpYWxpemVkIiwiX3J1blRpbWVNb2RlIiwiaW5pdGlhbGl6ZSIsIkluaXRpYWxpemVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJJbml0aWFsaXppbmciLCJfaW5pdGlhbGl6ZVByb21pc2UiLCJzY3JpcHRQcm9taXNlIiwicmVqZWN0Iiwic2NyaXB0IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiYm9keSIsImFwcGVuZENoaWxkIiwiYXN5bmMiLCJvbmxvYWQiLCJvbmVycm9yIiwic3VwcG9ydGVkIiwiaW5zdGFudGlhdGUiLCJtb2R1bGUiLCJNb2R1bGUiLCJVaW50OEFycmF5Iiwib2YiLCJJbnN0YW5jZSIsImUiLCJzcmMiLCJ2ZXJzaW9uIiwiaW5pdGlhbGl6ZVByb21pc2UiLCJ0aGVuIiwid2luZG93IiwiUEhZU1giLCJfaW5pdCIsImNvbnNvbGUiLCJsb2ciLCJjYXRjaCIsIlB4Q2xvc2VFeHRlbnNpb25zIiwiX3B4Rm91bmRhdGlvbiIsImNyZWF0ZVBoeXNpY3NNYW5hZ2VyIiwibWFuYWdlciIsImNyZWF0ZVN0YXRpY0NvbGxpZGVyIiwiY3JlYXRlRHluYW1pY0NvbGxpZGVyIiwiY3JlYXRlQ2hhcmFjdGVyQ29udHJvbGxlciIsImNyZWF0ZVBoeXNpY3NNYXRlcmlhbCIsImNyZWF0ZUJveENvbGxpZGVyU2hhcGUiLCJjcmVhdGVTcGhlcmVDb2xsaWRlclNoYXBlIiwiY3JlYXRlUGxhbmVDb2xsaWRlclNoYXBlIiwiY3JlYXRlQ2Fwc3VsZUNvbGxpZGVyU2hhcGUiLCJjcmVhdGVIaW5nZUpvaW50IiwiY3JlYXRlU3ByaW5nSm9pbnQiLCJQWF9QSFlTSUNTX1ZFUlNJT04iLCJkZWZhdWx0RXJyb3JDYWxsYmFjayIsIlB4RGVmYXVsdEVycm9yQ2FsbGJhY2siLCJhbGxvY2F0b3IiLCJQeERlZmF1bHRBbGxvY2F0b3IiLCJweEZvdW5kYXRpb24iLCJQeENyZWF0ZUZvdW5kYXRpb24iLCJQeENyZWF0ZVBoeXNpY3MiLCJQeFRvbGVyYW5jZXNTY2FsZSIsIlB4SW5pdEV4dGVuc2lvbnMiLCJJbml0aWFsaXplU3RhdGUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFPLFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7QUFDekMsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUU7QUFDckYsUUFBUSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pELEtBQUssTUFBTSxPQUFPLElBQUksWUFBWSxLQUFLLENBQUM7QUFDeEM7O0FDSkE7O0lBR09BLGtDQUFBO1VBQUtBLGdCQUFnQixFQUFBO0FBQWhCQSxJQUFBQSxnQkFBQUEsQ0FBQUEsZ0JBQ1YseUdBQ0FDLE1BQUFBLENBQUFBLEdBQUFBLENBQUFBLENBQUFBLEdBQUFBLE1BQUFBLENBQUFBO0FBRlVELElBQUFBLGdCQUFBQSxDQUFBQSxnQkFHViwwQkFDQUUsYUFBQUEsQ0FBQUEsR0FBQUEsQ0FBQUEsQ0FBQUEsR0FBQUEsYUFBQUEsQ0FBQUE7QUFKVUYsSUFBQUEsZ0JBQUFB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
|