@getopenpay/openpay-js-react 0.5.17 → 0.5.18
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/.tsbuildinfo +1 -1
- package/dist/{Resource-Ci2cMsNJ-r_pjpkns.js → Resource-HFr7ikKe-BkkXR00c.js} +2 -2
- package/dist/SimpleSpanProcessor-CXkHxvZK-CtgJXZxx.js +910 -0
- package/dist/detect-resources-CrwG-OzH-B3ZitYTN.js +862 -0
- package/dist/diag-api-CjpUap0H-CHa67IYb.js +6 -0
- package/dist/{index-BE9m_H38-DZJya01O.js → index-B6cgwvwx-DMnT8m0d.js} +2 -2
- package/dist/index-BBPNNneM-kIn-dVHD.js +1012 -0
- package/dist/{index-1sGeF-S8-Cf5_9V8Q.js → index-BZ0BoexZ-CUX_5xZE.js} +2 -2
- package/dist/{index-925BJ6Jo-FMJz60P8.js → index-BbMdoJGB-BBMW7CtA.js} +6 -6
- package/dist/{index-BXyoTbrS-DGGjVY6j.js → index-D8qGXAcL-4qcWCIXD.js} +10 -10
- package/dist/{index-C3N5jtkQ-BnMnAIzy.js → index-DAjwRG06-CTho4gsn.js} +2 -2
- package/dist/{index-DHKyZPe5-DB9begqh.js → index-DHMgbwEW-n9BBoeYI.js} +23 -23
- package/dist/{index-CfmI3mSs-kdYEhELt.js → index-DSODCre4-DXZ7TtVV.js} +2 -2
- package/dist/{index-CD5ZzJ0E-BNo61tUq.js → index-DfiR_U2V-CFfpYe6F.js} +15 -15
- package/dist/index-Du2j-1vJ.js +9660 -0
- package/dist/index.d.ts +59 -0
- package/dist/index.js +7 -7
- package/dist/{metrics-api-B-98-wmH-CgGZj7qs.js → metrics-api-C4CAQNbw-C50jWnQn.js} +10 -10
- package/dist/suppress-tracing-BiiEFr8F-BsLEY_uR.js +17 -0
- package/dist/url-C62Jr65Y-DvJVmGJM.js +798 -0
- package/dist/{utils-DCVGrgLr-DxhyWIXT.js → utils-CBe9LQu0-rzqmNwAr.js} +9 -9
- package/dist/{utils-CKW-Vl9c-CCUGWG5V.js → utils-OFrrLDTb-BD_ZQVMg.js} +2 -2
- package/package.json +1 -1
- package/dist/SimpleSpanProcessor-B0eU7C8A-CjPgIH6s.js +0 -910
- package/dist/detect-resources-ChhXDAxq-Btymf6C7.js +0 -862
- package/dist/diag-api-DC4dxlqZ-DOFCnxry.js +0 -6
- package/dist/index-BRlq-xUA.js +0 -9354
- package/dist/index-v1SRbPSI-Ck3VxOS9.js +0 -1012
- package/dist/suppress-tracing-BuitcWA2-BFsdq8P_.js +0 -17
- package/dist/url-CTAMV9Fr-n8hDYbJZ.js +0 -798
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as Xe } from "./index-Du2j-1vJ.js";
|
|
2
2
|
function At(I) {
|
|
3
3
|
return I === void 0 && (I = {}), typeof I.addEventListener == "function" && typeof I.removeEventListener == "function";
|
|
4
4
|
}
|
|
@@ -1610,4 +1610,4 @@ xt();
|
|
|
1610
1610
|
export {
|
|
1611
1611
|
Gt as ZoneContextManager
|
|
1612
1612
|
};
|
|
1613
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtMXNHZUYtUzgtIX57MDBkfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFEgYXMgUWkgfSBmcm9tICcuL2luZGV4LSF+ezAwN31+LmpzJztcblxuZnVuY3Rpb24geHQoaikge1xuICByZXR1cm4gaiA9PT0gdm9pZCAwICYmIChqID0ge30pLCB0eXBlb2Ygai5hZGRFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygai5yZW1vdmVFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIjtcbn1cbnZhciBFdCA9IFwiT1RfWk9ORV9DT05URVhUXCIsIHp0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBqKCkge1xuICAgICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNlLCB0aGlzLl96b25lQ291bnRlciA9IDA7XG4gICAgfVxuICAgIHJldHVybiBqLnByb3RvdHlwZS5fYWN0aXZlQ29udGV4dEZyb21ab25lID0gZnVuY3Rpb24oUykge1xuICAgICAgcmV0dXJuIFMgJiYgUy5nZXQoRXQpIHx8IFFpO1xuICAgIH0sIGoucHJvdG90eXBlLl9iaW5kRnVuY3Rpb24gPSBmdW5jdGlvbihTLCBCKSB7XG4gICAgICB2YXIgeiA9IHRoaXMsIGVlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGZvciAodmFyIHRlID0gdGhpcywgaWUgPSBbXSwgZmUgPSAwOyBmZSA8IGFyZ3VtZW50cy5sZW5ndGg7IGZlKyspXG4gICAgICAgICAgaWVbZmVdID0gYXJndW1lbnRzW2ZlXTtcbiAgICAgICAgcmV0dXJuIHoud2l0aChTLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gQi5hcHBseSh0ZSwgaWUpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGVlLCBcImxlbmd0aFwiLCB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IEIubGVuZ3RoXG4gICAgICB9KSwgZWU7XG4gICAgfSwgai5wcm90b3R5cGUuX2JpbmRMaXN0ZW5lciA9IGZ1bmN0aW9uKFMsIEIpIHtcbiAgICAgIHZhciB6ID0gQjtcbiAgICAgIHJldHVybiB6Ll9fb3RfbGlzdGVuZXJzICE9PSB2b2lkIDAgfHwgKHouX19vdF9saXN0ZW5lcnMgPSB7fSwgdHlwZW9mIHouYWRkRXZlbnRMaXN0ZW5lciA9PSBcImZ1bmN0aW9uXCIgJiYgKHouYWRkRXZlbnRMaXN0ZW5lciA9IHRoaXMuX3BhdGNoQWRkRXZlbnRMaXN0ZW5lcih6LCB6LmFkZEV2ZW50TGlzdGVuZXIsIFMpKSwgdHlwZW9mIHoucmVtb3ZlRXZlbnRMaXN0ZW5lciA9PSBcImZ1bmN0aW9uXCIgJiYgKHoucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHRoaXMuX3BhdGNoUmVtb3ZlRXZlbnRMaXN0ZW5lcih6LCB6LnJlbW92ZUV2ZW50TGlzdGVuZXIpKSksIEI7XG4gICAgfSwgai5wcm90b3R5cGUuX2NyZWF0ZVpvbmVOYW1lID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLl96b25lQ291bnRlcisrO1xuICAgICAgdmFyIFMgPSBNYXRoLnJhbmRvbSgpO1xuICAgICAgcmV0dXJuIHRoaXMuX3pvbmVDb3VudGVyICsgXCItXCIgKyBTO1xuICAgIH0sIGoucHJvdG90eXBlLl9jcmVhdGVab25lID0gZnVuY3Rpb24oUywgQikge1xuICAgICAgdmFyIHo7XG4gICAgICByZXR1cm4gWm9uZS5jdXJyZW50LmZvcmsoe1xuICAgICAgICBuYW1lOiBTLFxuICAgICAgICBwcm9wZXJ0aWVzOiAoeiA9IHt9LCB6W0V0XSA9IEIsIHopXG4gICAgICB9KTtcbiAgICB9LCBqLnByb3RvdHlwZS5fZ2V0QWN0aXZlWm9uZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFpvbmUuY3VycmVudDtcbiAgICB9LCBqLnByb3RvdHlwZS5fcGF0Y2hBZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24oUywgQiwgeikge1xuICAgICAgdmFyIGVlID0gdGhpcztcbiAgICAgIHJldHVybiBmdW5jdGlvbih0ZSwgaWUsIGZlKSB7XG4gICAgICAgIFMuX19vdF9saXN0ZW5lcnMgPT09IHZvaWQgMCAmJiAoUy5fX290X2xpc3RlbmVycyA9IHt9KTtcbiAgICAgICAgdmFyIGtlID0gUy5fX290X2xpc3RlbmVyc1t0ZV07XG4gICAgICAgIGtlID09PSB2b2lkIDAgJiYgKGtlID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCksIFMuX19vdF9saXN0ZW5lcnNbdGVdID0ga2UpO1xuICAgICAgICB2YXIgdmUgPSBlZS5iaW5kKHosIGllKTtcbiAgICAgICAgcmV0dXJuIGtlLnNldChpZSwgdmUpLCBCLmNhbGwodGhpcywgdGUsIHZlLCBmZSk7XG4gICAgICB9O1xuICAgIH0sIGoucHJvdG90eXBlLl9wYXRjaFJlbW92ZUV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihTLCBCKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oeiwgZWUpIHtcbiAgICAgICAgaWYgKFMuX19vdF9saXN0ZW5lcnMgPT09IHZvaWQgMCB8fCBTLl9fb3RfbGlzdGVuZXJzW3pdID09PSB2b2lkIDApXG4gICAgICAgICAgcmV0dXJuIEIuY2FsbCh0aGlzLCB6LCBlZSk7XG4gICAgICAgIHZhciB0ZSA9IFMuX19vdF9saXN0ZW5lcnNbel0sIGllID0gdGUuZ2V0KGVlKTtcbiAgICAgICAgcmV0dXJuIHRlLmRlbGV0ZShlZSksIEIuY2FsbCh0aGlzLCB6LCBpZSB8fCBlZSk7XG4gICAgICB9O1xuICAgIH0sIGoucHJvdG90eXBlLmFjdGl2ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKVxuICAgICAgICByZXR1cm4gUWk7XG4gICAgICB2YXIgUyA9IHRoaXMuX2dldEFjdGl2ZVpvbmUoKSwgQiA9IHRoaXMuX2FjdGl2ZUNvbnRleHRGcm9tWm9uZShTKTtcbiAgICAgIHJldHVybiBCIHx8IFFpO1xuICAgIH0sIGoucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihTLCBCKSB7XG4gICAgICByZXR1cm4gUyA9PT0gdm9pZCAwICYmIChTID0gdGhpcy5hY3RpdmUoKSksIHR5cGVvZiBCID09IFwiZnVuY3Rpb25cIiA/IHRoaXMuX2JpbmRGdW5jdGlvbihTLCBCKSA6ICh4dChCKSAmJiB0aGlzLl9iaW5kTGlzdGVuZXIoUywgQiksIEIpO1xuICAgIH0sIGoucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9lbmFibGVkID0gZmFsc2UsIHRoaXM7XG4gICAgfSwgai5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCA9IHRydWUsIHRoaXM7XG4gICAgfSwgai5wcm90b3R5cGUud2l0aCA9IGZ1bmN0aW9uKFMsIEIsIHopIHtcbiAgICAgIGZvciAodmFyIGVlID0gW10sIHRlID0gMzsgdGUgPCBhcmd1bWVudHMubGVuZ3RoOyB0ZSsrKVxuICAgICAgICBlZVt0ZSAtIDNdID0gYXJndW1lbnRzW3RlXTtcbiAgICAgIHZhciBpZSA9IHRoaXMuX2NyZWF0ZVpvbmVOYW1lKCksIGZlID0gdGhpcy5fY3JlYXRlWm9uZShpZSwgUyk7XG4gICAgICByZXR1cm4gZmUucnVuKEIsIHosIGVlKTtcbiAgICB9LCBqO1xuICB9KSgpXG4pLCBwdCA9IHt9LCBndDtcbmZ1bmN0aW9uIEZ0KCkge1xuICBpZiAoZ3QpIHJldHVybiBwdDtcbiAgZ3QgPSAxO1xuICAvKipcbiAgICogQGxpY2Vuc2UgQW5ndWxhciB2PHVua25vd24+XG4gICAqIChjKSAyMDEwLTIwMjUgR29vZ2xlIExMQy4gaHR0cHM6Ly9hbmd1bGFyLmlvL1xuICAgKiBMaWNlbnNlOiBNSVRcbiAgICovXG4gIGNvbnN0IGogPSBnbG9iYWxUaGlzO1xuICBmdW5jdGlvbiBTKHQpIHtcbiAgICByZXR1cm4gKGouX19ab25lX3N5bWJvbF9wcmVmaXggfHwgXCJfX3pvbmVfc3ltYm9sX19cIikgKyB0O1xuICB9XG4gIGZ1bmN0aW9uIEIoKSB7XG4gICAgY29uc3QgdCA9IGoucGVyZm9ybWFuY2U7XG4gICAgZnVuY3Rpb24gbihJKSB7XG4gICAgICB0ICYmIHQubWFyayAmJiB0Lm1hcmsoSSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGEoSSwgcykge1xuICAgICAgdCAmJiB0Lm1lYXN1cmUgJiYgdC5tZWFzdXJlKEksIHMpO1xuICAgIH1cbiAgICBuKFwiWm9uZVwiKTtcbiAgICBjbGFzcyBlIHtcbiAgICAgIHN0YXRpYyBfX3N5bWJvbF9fID0gUztcbiAgICAgIHN0YXRpYyBhc3NlcnRab25lUGF0Y2hlZCgpIHtcbiAgICAgICAgaWYgKGouUHJvbWlzZSAhPT0gTy5ab25lQXdhcmVQcm9taXNlKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlpvbmUuanMgaGFzIGRldGVjdGVkIHRoYXQgWm9uZUF3YXJlUHJvbWlzZSBgKHdpbmRvd3xnbG9iYWwpLlByb21pc2VgIGhhcyBiZWVuIG92ZXJ3cml0dGVuLlxcbk1vc3QgbGlrZWx5IGNhdXNlIGlzIHRoYXQgYSBQcm9taXNlIHBvbHlmaWxsIGhhcyBiZWVuIGxvYWRlZCBhZnRlciBab25lLmpzIChQb2x5ZmlsbGluZyBQcm9taXNlIGFwaSBpcyBub3QgbmVjZXNzYXJ5IHdoZW4gem9uZS5qcyBpcyBsb2FkZWQuIElmIHlvdSBtdXN0IGxvYWQgb25lLCBkbyBzbyBiZWZvcmUgbG9hZGluZyB6b25lLmpzLilcIik7XG4gICAgICB9XG4gICAgICBzdGF0aWMgZ2V0IHJvb3QoKSB7XG4gICAgICAgIGxldCBzID0gZS5jdXJyZW50O1xuICAgICAgICBmb3IgKDsgcy5wYXJlbnQ7IClcbiAgICAgICAgICBzID0gcy5wYXJlbnQ7XG4gICAgICAgIHJldHVybiBzO1xuICAgICAgfVxuICAgICAgc3RhdGljIGdldCBjdXJyZW50KCkge1xuICAgICAgICByZXR1cm4gYi56b25lO1xuICAgICAgfVxuICAgICAgc3RhdGljIGdldCBjdXJyZW50VGFzaygpIHtcbiAgICAgICAgcmV0dXJuIEQ7XG4gICAgICB9XG4gICAgICBzdGF0aWMgX19sb2FkX3BhdGNoKHMsIGksIHIgPSBmYWxzZSkge1xuICAgICAgICBpZiAoTy5oYXNPd25Qcm9wZXJ0eShzKSkge1xuICAgICAgICAgIGNvbnN0IEUgPSBqW1MoXCJmb3JjZUR1cGxpY2F0ZVpvbmVDaGVja1wiKV0gPT09IHRydWU7XG4gICAgICAgICAgaWYgKCFyICYmIEUpXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcIkFscmVhZHkgbG9hZGVkIHBhdGNoOiBcIiArIHMpO1xuICAgICAgICB9IGVsc2UgaWYgKCFqW1wiX19ab25lX2Rpc2FibGVfXCIgKyBzXSkge1xuICAgICAgICAgIGNvbnN0IEUgPSBcIlpvbmU6XCIgKyBzO1xuICAgICAgICAgIG4oRSksIE9bc10gPSBpKGosIGUsIFApLCBhKEUsIEUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBnZXQgcGFyZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50O1xuICAgICAgfVxuICAgICAgZ2V0IG5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICAgICAgfVxuICAgICAgX3BhcmVudDtcbiAgICAgIF9uYW1lO1xuICAgICAgX3Byb3BlcnRpZXM7XG4gICAgICBfem9uZURlbGVnYXRlO1xuICAgICAgY29uc3RydWN0b3IocywgaSkge1xuICAgICAgICB0aGlzLl9wYXJlbnQgPSBzLCB0aGlzLl9uYW1lID0gaSA/IGkubmFtZSB8fCBcInVubmFtZWRcIiA6IFwiPHJvb3Q+XCIsIHRoaXMuX3Byb3BlcnRpZXMgPSBpICYmIGkucHJvcGVydGllcyB8fCB7fSwgdGhpcy5fem9uZURlbGVnYXRlID0gbmV3IGYodGhpcywgdGhpcy5fcGFyZW50ICYmIHRoaXMuX3BhcmVudC5fem9uZURlbGVnYXRlLCBpKTtcbiAgICAgIH1cbiAgICAgIGdldChzKSB7XG4gICAgICAgIGNvbnN0IGkgPSB0aGlzLmdldFpvbmVXaXRoKHMpO1xuICAgICAgICBpZiAoaSlcbiAgICAgICAgICByZXR1cm4gaS5fcHJvcGVydGllc1tzXTtcbiAgICAgIH1cbiAgICAgIGdldFpvbmVXaXRoKHMpIHtcbiAgICAgICAgbGV0IGkgPSB0aGlzO1xuICAgICAgICBmb3IgKDsgaTsgKSB7XG4gICAgICAgICAgaWYgKGkuX3Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocykpXG4gICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICBpID0gaS5fcGFyZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgZm9yayhzKSB7XG4gICAgICAgIGlmICghcylcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJab25lU3BlYyByZXF1aXJlZCFcIik7XG4gICAgICAgIHJldHVybiB0aGlzLl96b25lRGVsZWdhdGUuZm9yayh0aGlzLCBzKTtcbiAgICAgIH1cbiAgICAgIHdyYXAocywgaSkge1xuICAgICAgICBpZiAodHlwZW9mIHMgIT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGluZyBmdW5jdGlvbiBnb3Q6IFwiICsgcyk7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLl96b25lRGVsZWdhdGUuaW50ZXJjZXB0KHRoaXMsIHMsIGkpLCBFID0gdGhpcztcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBFLnJ1bkd1YXJkZWQociwgdGhpcywgYXJndW1lbnRzLCBpKTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJ1bihzLCBpLCByLCBFKSB7XG4gICAgICAgIGIgPSB7IHBhcmVudDogYiwgem9uZTogdGhpcyB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsIHMsIGksIHIsIEUpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGIgPSBiLnBhcmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcnVuR3VhcmRlZChzLCBpID0gbnVsbCwgciwgRSkge1xuICAgICAgICBiID0geyBwYXJlbnQ6IGIsIHpvbmU6IHRoaXMgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcywgcywgaSwgciwgRSk7XG4gICAgICAgICAgfSBjYXRjaCAoRykge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLCBHKSlcbiAgICAgICAgICAgICAgdGhyb3cgRztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgYiA9IGIucGFyZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBydW5UYXNrKHMsIGksIHIpIHtcbiAgICAgICAgaWYgKHMuem9uZSAhPSB0aGlzKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgdGFzayBjYW4gb25seSBiZSBydW4gaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVhdGlvbjogXCIgKyAocy56b25lIHx8IHJlKS5uYW1lICsgXCI7IEV4ZWN1dGlvbjogXCIgKyB0aGlzLm5hbWUgKyBcIilcIik7XG4gICAgICAgIGNvbnN0IEUgPSBzLCB7IHR5cGU6IEcsIGRhdGE6IHsgaXNQZXJpb2RpYzogY2UgPSBmYWxzZSwgaXNSZWZyZXNoYWJsZTogQSA9IGZhbHNlIH0gPSB7fSB9ID0gcztcbiAgICAgICAgaWYgKHMuc3RhdGUgPT09IEogJiYgKEcgPT09IFkgfHwgRyA9PT0gZykpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBnZSA9IHMuc3RhdGUgIT0geDtcbiAgICAgICAgZ2UgJiYgRS5fdHJhbnNpdGlvblRvKHgsIGQpO1xuICAgICAgICBjb25zdCB5ZSA9IEQ7XG4gICAgICAgIEQgPSBFLCBiID0geyBwYXJlbnQ6IGIsIHpvbmU6IHRoaXMgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBHID09IGcgJiYgcy5kYXRhICYmICFjZSAmJiAhQSAmJiAocy5jYW5jZWxGbiA9IHZvaWQgMCk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlVGFzayh0aGlzLCBFLCBpLCByKTtcbiAgICAgICAgICB9IGNhdGNoIChzZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLCBzZSkpXG4gICAgICAgICAgICAgIHRocm93IHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBjb25zdCBzZSA9IHMuc3RhdGU7XG4gICAgICAgICAgaWYgKHNlICE9PSBKICYmIHNlICE9PSBLKVxuICAgICAgICAgICAgaWYgKEcgPT0gWSB8fCBjZSB8fCBBICYmIHNlID09PSBrKVxuICAgICAgICAgICAgICBnZSAmJiBFLl90cmFuc2l0aW9uVG8oZCwgeCwgayk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgQ2UgPSBFLl96b25lRGVsZWdhdGVzO1xuICAgICAgICAgICAgICB0aGlzLl91cGRhdGVUYXNrQ291bnQoRSwgLTEpLCBnZSAmJiBFLl90cmFuc2l0aW9uVG8oSiwgeCwgSiksIEEgJiYgKEUuX3pvbmVEZWxlZ2F0ZXMgPSBDZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgYiA9IGIucGFyZW50LCBEID0geWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNjaGVkdWxlVGFzayhzKSB7XG4gICAgICAgIGlmIChzLnpvbmUgJiYgcy56b25lICE9PSB0aGlzKSB7XG4gICAgICAgICAgbGV0IHIgPSB0aGlzO1xuICAgICAgICAgIGZvciAoOyByOyApIHtcbiAgICAgICAgICAgIGlmIChyID09PSBzLnpvbmUpXG4gICAgICAgICAgICAgIHRocm93IEVycm9yKGBjYW4gbm90IHJlc2NoZWR1bGUgdGFzayB0byAke3RoaXMubmFtZX0gd2hpY2ggaXMgZGVzY2VuZGFudHMgb2YgdGhlIG9yaWdpbmFsIHpvbmUgJHtzLnpvbmUubmFtZX1gKTtcbiAgICAgICAgICAgIHIgPSByLnBhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcy5fdHJhbnNpdGlvblRvKGssIEopO1xuICAgICAgICBjb25zdCBpID0gW107XG4gICAgICAgIHMuX3pvbmVEZWxlZ2F0ZXMgPSBpLCBzLl96b25lID0gdGhpcztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzID0gdGhpcy5fem9uZURlbGVnYXRlLnNjaGVkdWxlVGFzayh0aGlzLCBzKTtcbiAgICAgICAgfSBjYXRjaCAocikge1xuICAgICAgICAgIHRocm93IHMuX3RyYW5zaXRpb25UbyhLLCBrLCBKKSwgdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsIHIpLCByO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzLl96b25lRGVsZWdhdGVzID09PSBpICYmIHRoaXMuX3VwZGF0ZVRhc2tDb3VudChzLCAxKSwgcy5zdGF0ZSA9PSBrICYmIHMuX3RyYW5zaXRpb25UbyhkLCBrKSwgcztcbiAgICAgIH1cbiAgICAgIHNjaGVkdWxlTWljcm9UYXNrKHMsIGksIHIsIEUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBwKFUsIHMsIGksIHIsIEUsIHZvaWQgMCkpO1xuICAgICAgfVxuICAgICAgc2NoZWR1bGVNYWNyb1Rhc2socywgaSwgciwgRSwgRykge1xuICAgICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IHAoZywgcywgaSwgciwgRSwgRykpO1xuICAgICAgfVxuICAgICAgc2NoZWR1bGVFdmVudFRhc2socywgaSwgciwgRSwgRykge1xuICAgICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IHAoWSwgcywgaSwgciwgRSwgRykpO1xuICAgICAgfVxuICAgICAgY2FuY2VsVGFzayhzKSB7XG4gICAgICAgIGlmIChzLnpvbmUgIT0gdGhpcylcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIHRhc2sgY2FuIG9ubHkgYmUgY2FuY2VsbGVkIGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246IFwiICsgKHMuem9uZSB8fCByZSkubmFtZSArIFwiOyBFeGVjdXRpb246IFwiICsgdGhpcy5uYW1lICsgXCIpXCIpO1xuICAgICAgICBpZiAoIShzLnN0YXRlICE9PSBkICYmIHMuc3RhdGUgIT09IHgpKSB7XG4gICAgICAgICAgcy5fdHJhbnNpdGlvblRvKFYsIGQsIHgpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLl96b25lRGVsZWdhdGUuY2FuY2VsVGFzayh0aGlzLCBzKTtcbiAgICAgICAgICB9IGNhdGNoIChpKSB7XG4gICAgICAgICAgICB0aHJvdyBzLl90cmFuc2l0aW9uVG8oSywgViksIHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLCBpKSwgaTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZVRhc2tDb3VudChzLCAtMSksIHMuX3RyYW5zaXRpb25UbyhKLCBWKSwgcy5ydW5Db3VudCA9IC0xLCBzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfdXBkYXRlVGFza0NvdW50KHMsIGkpIHtcbiAgICAgICAgY29uc3QgciA9IHMuX3pvbmVEZWxlZ2F0ZXM7XG4gICAgICAgIGkgPT0gLTEgJiYgKHMuX3pvbmVEZWxlZ2F0ZXMgPSBudWxsKTtcbiAgICAgICAgZm9yIChsZXQgRSA9IDA7IEUgPCByLmxlbmd0aDsgRSsrKVxuICAgICAgICAgIHJbRV0uX3VwZGF0ZVRhc2tDb3VudChzLnR5cGUsIGkpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBjID0ge1xuICAgICAgbmFtZTogXCJcIixcbiAgICAgIG9uSGFzVGFzazogKEksIHMsIGksIHIpID0+IEkuaGFzVGFzayhpLCByKSxcbiAgICAgIG9uU2NoZWR1bGVUYXNrOiAoSSwgcywgaSwgcikgPT4gSS5zY2hlZHVsZVRhc2soaSwgciksXG4gICAgICBvbkludm9rZVRhc2s6IChJLCBzLCBpLCByLCBFLCBHKSA9PiBJLmludm9rZVRhc2soaSwgciwgRSwgRyksXG4gICAgICBvbkNhbmNlbFRhc2s6IChJLCBzLCBpLCByKSA9PiBJLmNhbmNlbFRhc2soaSwgcilcbiAgICB9O1xuICAgIGNsYXNzIGYge1xuICAgICAgZ2V0IHpvbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl96b25lO1xuICAgICAgfVxuICAgICAgX3pvbmU7XG4gICAgICBfdGFza0NvdW50cyA9IHtcbiAgICAgICAgbWljcm9UYXNrOiAwLFxuICAgICAgICBtYWNyb1Rhc2s6IDAsXG4gICAgICAgIGV2ZW50VGFzazogMFxuICAgICAgfTtcbiAgICAgIF9wYXJlbnREZWxlZ2F0ZTtcbiAgICAgIF9mb3JrRGxndDtcbiAgICAgIF9mb3JrWlM7XG4gICAgICBfZm9ya0N1cnJab25lO1xuICAgICAgX2ludGVyY2VwdERsZ3Q7XG4gICAgICBfaW50ZXJjZXB0WlM7XG4gICAgICBfaW50ZXJjZXB0Q3VyclpvbmU7XG4gICAgICBfaW52b2tlRGxndDtcbiAgICAgIF9pbnZva2VaUztcbiAgICAgIF9pbnZva2VDdXJyWm9uZTtcbiAgICAgIF9oYW5kbGVFcnJvckRsZ3Q7XG4gICAgICBfaGFuZGxlRXJyb3JaUztcbiAgICAgIF9oYW5kbGVFcnJvckN1cnJab25lO1xuICAgICAgX3NjaGVkdWxlVGFza0RsZ3Q7XG4gICAgICBfc2NoZWR1bGVUYXNrWlM7XG4gICAgICBfc2NoZWR1bGVUYXNrQ3VyclpvbmU7XG4gICAgICBfaW52b2tlVGFza0RsZ3Q7XG4gICAgICBfaW52b2tlVGFza1pTO1xuICAgICAgX2ludm9rZVRhc2tDdXJyWm9uZTtcbiAgICAgIF9jYW5jZWxUYXNrRGxndDtcbiAgICAgIF9jYW5jZWxUYXNrWlM7XG4gICAgICBfY2FuY2VsVGFza0N1cnJab25lO1xuICAgICAgX2hhc1Rhc2tEbGd0O1xuICAgICAgX2hhc1Rhc2tEbGd0T3duZXI7XG4gICAgICBfaGFzVGFza1pTO1xuICAgICAgX2hhc1Rhc2tDdXJyWm9uZTtcbiAgICAgIGNvbnN0cnVjdG9yKHMsIGksIHIpIHtcbiAgICAgICAgdGhpcy5fem9uZSA9IHMsIHRoaXMuX3BhcmVudERlbGVnYXRlID0gaSwgdGhpcy5fZm9ya1pTID0gciAmJiAociAmJiByLm9uRm9yayA/IHIgOiBpLl9mb3JrWlMpLCB0aGlzLl9mb3JrRGxndCA9IHIgJiYgKHIub25Gb3JrID8gaSA6IGkuX2ZvcmtEbGd0KSwgdGhpcy5fZm9ya0N1cnJab25lID0gciAmJiAoci5vbkZvcmsgPyB0aGlzLl96b25lIDogaS5fZm9ya0N1cnJab25lKSwgdGhpcy5faW50ZXJjZXB0WlMgPSByICYmIChyLm9uSW50ZXJjZXB0ID8gciA6IGkuX2ludGVyY2VwdFpTKSwgdGhpcy5faW50ZXJjZXB0RGxndCA9IHIgJiYgKHIub25JbnRlcmNlcHQgPyBpIDogaS5faW50ZXJjZXB0RGxndCksIHRoaXMuX2ludGVyY2VwdEN1cnJab25lID0gciAmJiAoci5vbkludGVyY2VwdCA/IHRoaXMuX3pvbmUgOiBpLl9pbnRlcmNlcHRDdXJyWm9uZSksIHRoaXMuX2ludm9rZVpTID0gciAmJiAoci5vbkludm9rZSA/IHIgOiBpLl9pbnZva2VaUyksIHRoaXMuX2ludm9rZURsZ3QgPSByICYmIChyLm9uSW52b2tlID8gaSA6IGkuX2ludm9rZURsZ3QpLCB0aGlzLl9pbnZva2VDdXJyWm9uZSA9IHIgJiYgKHIub25JbnZva2UgPyB0aGlzLl96b25lIDogaS5faW52b2tlQ3VyclpvbmUpLCB0aGlzLl9oYW5kbGVFcnJvclpTID0gciAmJiAoci5vbkhhbmRsZUVycm9yID8gciA6IGkuX2hhbmRsZUVycm9yWlMpLCB0aGlzLl9oYW5kbGVFcnJvckRsZ3QgPSByICYmIChyLm9uSGFuZGxlRXJyb3IgPyBpIDogaS5faGFuZGxlRXJyb3JEbGd0KSwgdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZSA9IHIgJiYgKHIub25IYW5kbGVFcnJvciA/IHRoaXMuX3pvbmUgOiBpLl9oYW5kbGVFcnJvckN1cnJab25lKSwgdGhpcy5fc2NoZWR1bGVUYXNrWlMgPSByICYmIChyLm9uU2NoZWR1bGVUYXNrID8gciA6IGkuX3NjaGVkdWxlVGFza1pTKSwgdGhpcy5fc2NoZWR1bGVUYXNrRGxndCA9IHIgJiYgKHIub25TY2hlZHVsZVRhc2sgPyBpIDogaS5fc2NoZWR1bGVUYXNrRGxndCksIHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lID0gciAmJiAoci5vblNjaGVkdWxlVGFzayA/IHRoaXMuX3pvbmUgOiBpLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSksIHRoaXMuX2ludm9rZVRhc2taUyA9IHIgJiYgKHIub25JbnZva2VUYXNrID8gciA6IGkuX2ludm9rZVRhc2taUyksIHRoaXMuX2ludm9rZVRhc2tEbGd0ID0gciAmJiAoci5vbkludm9rZVRhc2sgPyBpIDogaS5faW52b2tlVGFza0RsZ3QpLCB0aGlzLl9pbnZva2VUYXNrQ3VyclpvbmUgPSByICYmIChyLm9uSW52b2tlVGFzayA/IHRoaXMuX3pvbmUgOiBpLl9pbnZva2VUYXNrQ3VyclpvbmUpLCB0aGlzLl9jYW5jZWxUYXNrWlMgPSByICYmIChyLm9uQ2FuY2VsVGFzayA/IHIgOiBpLl9jYW5jZWxUYXNrWlMpLCB0aGlzLl9jYW5jZWxUYXNrRGxndCA9IHIgJiYgKHIub25DYW5jZWxUYXNrID8gaSA6IGkuX2NhbmNlbFRhc2tEbGd0KSwgdGhpcy5fY2FuY2VsVGFza0N1cnJab25lID0gciAmJiAoci5vbkNhbmNlbFRhc2sgPyB0aGlzLl96b25lIDogaS5fY2FuY2VsVGFza0N1cnJab25lKSwgdGhpcy5faGFzVGFza1pTID0gbnVsbCwgdGhpcy5faGFzVGFza0RsZ3QgPSBudWxsLCB0aGlzLl9oYXNUYXNrRGxndE93bmVyID0gbnVsbCwgdGhpcy5faGFzVGFza0N1cnJab25lID0gbnVsbDtcbiAgICAgICAgY29uc3QgRSA9IHIgJiYgci5vbkhhc1Rhc2ssIEcgPSBpICYmIGkuX2hhc1Rhc2taUztcbiAgICAgICAgKEUgfHwgRykgJiYgKHRoaXMuX2hhc1Rhc2taUyA9IEUgPyByIDogYywgdGhpcy5faGFzVGFza0RsZ3QgPSBpLCB0aGlzLl9oYXNUYXNrRGxndE93bmVyID0gdGhpcywgdGhpcy5faGFzVGFza0N1cnJab25lID0gdGhpcy5fem9uZSwgci5vblNjaGVkdWxlVGFzayB8fCAodGhpcy5fc2NoZWR1bGVUYXNrWlMgPSBjLCB0aGlzLl9zY2hlZHVsZVRhc2tEbGd0ID0gaSwgdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmUgPSB0aGlzLl96b25lKSwgci5vbkludm9rZVRhc2sgfHwgKHRoaXMuX2ludm9rZVRhc2taUyA9IGMsIHRoaXMuX2ludm9rZVRhc2tEbGd0ID0gaSwgdGhpcy5faW52b2tlVGFza0N1cnJab25lID0gdGhpcy5fem9uZSksIHIub25DYW5jZWxUYXNrIHx8ICh0aGlzLl9jYW5jZWxUYXNrWlMgPSBjLCB0aGlzLl9jYW5jZWxUYXNrRGxndCA9IGksIHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSA9IHRoaXMuX3pvbmUpKTtcbiAgICAgIH1cbiAgICAgIGZvcmsocywgaSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ya1pTID8gdGhpcy5fZm9ya1pTLm9uRm9yayh0aGlzLl9mb3JrRGxndCwgdGhpcy56b25lLCBzLCBpKSA6IG5ldyBlKHMsIGkpO1xuICAgICAgfVxuICAgICAgaW50ZXJjZXB0KHMsIGksIHIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludGVyY2VwdFpTID8gdGhpcy5faW50ZXJjZXB0WlMub25JbnRlcmNlcHQodGhpcy5faW50ZXJjZXB0RGxndCwgdGhpcy5faW50ZXJjZXB0Q3VyclpvbmUsIHMsIGksIHIpIDogaTtcbiAgICAgIH1cbiAgICAgIGludm9rZShzLCBpLCByLCBFLCBHKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VaUyA/IHRoaXMuX2ludm9rZVpTLm9uSW52b2tlKHRoaXMuX2ludm9rZURsZ3QsIHRoaXMuX2ludm9rZUN1cnJab25lLCBzLCBpLCByLCBFLCBHKSA6IGkuYXBwbHkociwgRSk7XG4gICAgICB9XG4gICAgICBoYW5kbGVFcnJvcihzLCBpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYW5kbGVFcnJvclpTID8gdGhpcy5faGFuZGxlRXJyb3JaUy5vbkhhbmRsZUVycm9yKHRoaXMuX2hhbmRsZUVycm9yRGxndCwgdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZSwgcywgaSkgOiB0cnVlO1xuICAgICAgfVxuICAgICAgc2NoZWR1bGVUYXNrKHMsIGkpIHtcbiAgICAgICAgbGV0IHIgPSBpO1xuICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVUYXNrWlMpXG4gICAgICAgICAgdGhpcy5faGFzVGFza1pTICYmIHIuX3pvbmVEZWxlZ2F0ZXMucHVzaCh0aGlzLl9oYXNUYXNrRGxndE93bmVyKSwgciA9IHRoaXMuX3NjaGVkdWxlVGFza1pTLm9uU2NoZWR1bGVUYXNrKHRoaXMuX3NjaGVkdWxlVGFza0RsZ3QsIHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lLCBzLCBpKSwgciB8fCAociA9IGkpO1xuICAgICAgICBlbHNlIGlmIChpLnNjaGVkdWxlRm4pXG4gICAgICAgICAgaS5zY2hlZHVsZUZuKGkpO1xuICAgICAgICBlbHNlIGlmIChpLnR5cGUgPT0gVSlcbiAgICAgICAgICBYKGkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGFzayBpcyBtaXNzaW5nIHNjaGVkdWxlRm4uXCIpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH1cbiAgICAgIGludm9rZVRhc2socywgaSwgciwgRSkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlVGFza1pTID8gdGhpcy5faW52b2tlVGFza1pTLm9uSW52b2tlVGFzayh0aGlzLl9pbnZva2VUYXNrRGxndCwgdGhpcy5faW52b2tlVGFza0N1cnJab25lLCBzLCBpLCByLCBFKSA6IGkuY2FsbGJhY2suYXBwbHkociwgRSk7XG4gICAgICB9XG4gICAgICBjYW5jZWxUYXNrKHMsIGkpIHtcbiAgICAgICAgbGV0IHI7XG4gICAgICAgIGlmICh0aGlzLl9jYW5jZWxUYXNrWlMpXG4gICAgICAgICAgciA9IHRoaXMuX2NhbmNlbFRhc2taUy5vbkNhbmNlbFRhc2sodGhpcy5fY2FuY2VsVGFza0RsZ3QsIHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSwgcywgaSk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmICghaS5jYW5jZWxGbilcbiAgICAgICAgICAgIHRocm93IEVycm9yKFwiVGFzayBpcyBub3QgY2FuY2VsYWJsZVwiKTtcbiAgICAgICAgICByID0gaS5jYW5jZWxGbihpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH1cbiAgICAgIGhhc1Rhc2socywgaSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuX2hhc1Rhc2taUyAmJiB0aGlzLl9oYXNUYXNrWlMub25IYXNUYXNrKHRoaXMuX2hhc1Rhc2tEbGd0LCB0aGlzLl9oYXNUYXNrQ3VyclpvbmUsIHMsIGkpO1xuICAgICAgICB9IGNhdGNoIChyKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihzLCByKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX3VwZGF0ZVRhc2tDb3VudChzLCBpKSB7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLl90YXNrQ291bnRzLCBFID0gcltzXSwgRyA9IHJbc10gPSBFICsgaTtcbiAgICAgICAgaWYgKEcgPCAwKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1vcmUgdGFza3MgZXhlY3V0ZWQgdGhlbiB3ZXJlIHNjaGVkdWxlZC5cIik7XG4gICAgICAgIGlmIChFID09IDAgfHwgRyA9PSAwKSB7XG4gICAgICAgICAgY29uc3QgY2UgPSB7XG4gICAgICAgICAgICBtaWNyb1Rhc2s6IHIubWljcm9UYXNrID4gMCxcbiAgICAgICAgICAgIG1hY3JvVGFzazogci5tYWNyb1Rhc2sgPiAwLFxuICAgICAgICAgICAgZXZlbnRUYXNrOiByLmV2ZW50VGFzayA+IDAsXG4gICAgICAgICAgICBjaGFuZ2U6IHNcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuaGFzVGFzayh0aGlzLl96b25lLCBjZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY2xhc3MgcCB7XG4gICAgICB0eXBlO1xuICAgICAgc291cmNlO1xuICAgICAgaW52b2tlO1xuICAgICAgY2FsbGJhY2s7XG4gICAgICBkYXRhO1xuICAgICAgc2NoZWR1bGVGbjtcbiAgICAgIGNhbmNlbEZuO1xuICAgICAgX3pvbmUgPSBudWxsO1xuICAgICAgcnVuQ291bnQgPSAwO1xuICAgICAgX3pvbmVEZWxlZ2F0ZXMgPSBudWxsO1xuICAgICAgX3N0YXRlID0gXCJub3RTY2hlZHVsZWRcIjtcbiAgICAgIGNvbnN0cnVjdG9yKHMsIGksIHIsIEUsIEcsIGNlKSB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPSBzLCB0aGlzLnNvdXJjZSA9IGksIHRoaXMuZGF0YSA9IEUsIHRoaXMuc2NoZWR1bGVGbiA9IEcsIHRoaXMuY2FuY2VsRm4gPSBjZSwgIXIpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiY2FsbGJhY2sgaXMgbm90IGRlZmluZWRcIik7XG4gICAgICAgIHRoaXMuY2FsbGJhY2sgPSByO1xuICAgICAgICBjb25zdCBBID0gdGhpcztcbiAgICAgICAgcyA9PT0gWSAmJiBFICYmIEUudXNlRyA/IHRoaXMuaW52b2tlID0gcC5pbnZva2VUYXNrIDogdGhpcy5pbnZva2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gcC5pbnZva2VUYXNrLmNhbGwoaiwgQSwgdGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHN0YXRpYyBpbnZva2VUYXNrKHMsIGksIHIpIHtcbiAgICAgICAgcyB8fCAocyA9IHRoaXMpLCBvZSsrO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBzLnJ1bkNvdW50KyssIHMuem9uZS5ydW5UYXNrKHMsIGksIHIpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIG9lID09IDEgJiYgbmUoKSwgb2UtLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZ2V0IHpvbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl96b25lO1xuICAgICAgfVxuICAgICAgZ2V0IHN0YXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gICAgICB9XG4gICAgICBjYW5jZWxTY2hlZHVsZVJlcXVlc3QoKSB7XG4gICAgICAgIHRoaXMuX3RyYW5zaXRpb25UbyhKLCBrKTtcbiAgICAgIH1cbiAgICAgIF90cmFuc2l0aW9uVG8ocywgaSwgcikge1xuICAgICAgICBpZiAodGhpcy5fc3RhdGUgPT09IGkgfHwgdGhpcy5fc3RhdGUgPT09IHIpXG4gICAgICAgICAgdGhpcy5fc3RhdGUgPSBzLCBzID09IEogJiYgKHRoaXMuX3pvbmVEZWxlZ2F0ZXMgPSBudWxsKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLnR5cGV9ICcke3RoaXMuc291cmNlfSc6IGNhbiBub3QgdHJhbnNpdGlvbiB0byAnJHtzfScsIGV4cGVjdGluZyBzdGF0ZSAnJHtpfScke3IgPyBcIiBvciAnXCIgKyByICsgXCInXCIgOiBcIlwifSwgd2FzICcke3RoaXMuX3N0YXRlfScuYCk7XG4gICAgICB9XG4gICAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YSAmJiB0eXBlb2YgdGhpcy5kYXRhLmhhbmRsZUlkIDwgXCJ1XCIgPyB0aGlzLmRhdGEuaGFuZGxlSWQudG9TdHJpbmcoKSA6IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0aGlzKTtcbiAgICAgIH1cbiAgICAgIC8vIGFkZCB0b0pTT04gbWV0aG9kIHRvIHByZXZlbnQgY3ljbGljIGVycm9yIHdoZW5cbiAgICAgIC8vIGNhbGwgSlNPTi5zdHJpbmdpZnkoem9uZVRhc2spXG4gICAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICAgICAgem9uZTogdGhpcy56b25lLm5hbWUsXG4gICAgICAgICAgcnVuQ291bnQ6IHRoaXMucnVuQ291bnRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgVCA9IFMoXCJzZXRUaW1lb3V0XCIpLCB5ID0gUyhcIlByb21pc2VcIiksIHcgPSBTKFwidGhlblwiKTtcbiAgICBsZXQgXyA9IFtdLCBDID0gZmFsc2UsIE07XG4gICAgZnVuY3Rpb24gRihJKSB7XG4gICAgICBpZiAoTSB8fCBqW3ldICYmIChNID0galt5XS5yZXNvbHZlKDApKSwgTSkge1xuICAgICAgICBsZXQgcyA9IE1bd107XG4gICAgICAgIHMgfHwgKHMgPSBNLnRoZW4pLCBzLmNhbGwoTSwgSSk7XG4gICAgICB9IGVsc2VcbiAgICAgICAgaltUXShJLCAwKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gWChJKSB7XG4gICAgICBvZSA9PT0gMCAmJiBfLmxlbmd0aCA9PT0gMCAmJiBGKG5lKSwgSSAmJiBfLnB1c2goSSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG5lKCkge1xuICAgICAgaWYgKCFDKSB7XG4gICAgICAgIGZvciAoQyA9IHRydWU7IF8ubGVuZ3RoOyApIHtcbiAgICAgICAgICBjb25zdCBJID0gXztcbiAgICAgICAgICBfID0gW107XG4gICAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPCBJLmxlbmd0aDsgcysrKSB7XG4gICAgICAgICAgICBjb25zdCBpID0gSVtzXTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGkuem9uZS5ydW5UYXNrKGksIG51bGwsIG51bGwpO1xuICAgICAgICAgICAgfSBjYXRjaCAocikge1xuICAgICAgICAgICAgICBQLm9uVW5oYW5kbGVkRXJyb3Iocik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFAubWljcm90YXNrRHJhaW5Eb25lKCksIEMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmUgPSB7IG5hbWU6IFwiTk8gWk9ORVwiIH0sIEogPSBcIm5vdFNjaGVkdWxlZFwiLCBrID0gXCJzY2hlZHVsaW5nXCIsIGQgPSBcInNjaGVkdWxlZFwiLCB4ID0gXCJydW5uaW5nXCIsIFYgPSBcImNhbmNlbGluZ1wiLCBLID0gXCJ1bmtub3duXCIsIFUgPSBcIm1pY3JvVGFza1wiLCBnID0gXCJtYWNyb1Rhc2tcIiwgWSA9IFwiZXZlbnRUYXNrXCIsIE8gPSB7fSwgUCA9IHtcbiAgICAgIHN5bWJvbDogUyxcbiAgICAgIGN1cnJlbnRab25lRnJhbWU6ICgpID0+IGIsXG4gICAgICBvblVuaGFuZGxlZEVycm9yOiAkLFxuICAgICAgbWljcm90YXNrRHJhaW5Eb25lOiAkLFxuICAgICAgc2NoZWR1bGVNaWNyb1Rhc2s6IFgsXG4gICAgICBzaG93VW5jYXVnaHRFcnJvcjogKCkgPT4gIWVbUyhcImlnbm9yZUNvbnNvbGVFcnJvclVuY2F1Z2h0RXJyb3JcIildLFxuICAgICAgcGF0Y2hFdmVudFRhcmdldDogKCkgPT4gW10sXG4gICAgICBwYXRjaE9uUHJvcGVydGllczogJCxcbiAgICAgIHBhdGNoTWV0aG9kOiAoKSA9PiAkLFxuICAgICAgYmluZEFyZ3VtZW50czogKCkgPT4gW10sXG4gICAgICBwYXRjaFRoZW46ICgpID0+ICQsXG4gICAgICBwYXRjaE1hY3JvVGFzazogKCkgPT4gJCxcbiAgICAgIHBhdGNoRXZlbnRQcm90b3R5cGU6ICgpID0+ICQsXG4gICAgICBpc0lFT3JFZGdlOiAoKSA9PiBmYWxzZSxcbiAgICAgIGdldEdsb2JhbE9iamVjdHM6ICgpID0+IHtcbiAgICAgIH0sXG4gICAgICBPYmplY3REZWZpbmVQcm9wZXJ0eTogKCkgPT4gJCxcbiAgICAgIE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKCkgPT4ge1xuICAgICAgfSxcbiAgICAgIE9iamVjdENyZWF0ZTogKCkgPT4ge1xuICAgICAgfSxcbiAgICAgIEFycmF5U2xpY2U6ICgpID0+IFtdLFxuICAgICAgcGF0Y2hDbGFzczogKCkgPT4gJCxcbiAgICAgIHdyYXBXaXRoQ3VycmVudFpvbmU6ICgpID0+ICQsXG4gICAgICBmaWx0ZXJQcm9wZXJ0aWVzOiAoKSA9PiBbXSxcbiAgICAgIGF0dGFjaE9yaWdpblRvUGF0Y2hlZDogKCkgPT4gJCxcbiAgICAgIF9yZWRlZmluZVByb3BlcnR5OiAoKSA9PiAkLFxuICAgICAgcGF0Y2hDYWxsYmFja3M6ICgpID0+ICQsXG4gICAgICBuYXRpdmVTY2hlZHVsZU1pY3JvVGFzazogRlxuICAgIH07XG4gICAgbGV0IGIgPSB7IHBhcmVudDogbnVsbCwgem9uZTogbmV3IGUobnVsbCwgbnVsbCkgfSwgRCA9IG51bGwsIG9lID0gMDtcbiAgICBmdW5jdGlvbiAkKCkge1xuICAgIH1cbiAgICByZXR1cm4gYShcIlpvbmVcIiwgXCJab25lXCIpLCBlO1xuICB9XG4gIGZ1bmN0aW9uIHooKSB7XG4gICAgY29uc3QgdCA9IGdsb2JhbFRoaXMsIG4gPSB0W1MoXCJmb3JjZUR1cGxpY2F0ZVpvbmVDaGVja1wiKV0gPT09IHRydWU7XG4gICAgaWYgKHQuWm9uZSAmJiAobiB8fCB0eXBlb2YgdC5ab25lLl9fc3ltYm9sX18gIT0gXCJmdW5jdGlvblwiKSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlpvbmUgYWxyZWFkeSBsb2FkZWQuXCIpO1xuICAgIHJldHVybiB0LlpvbmUgPz89IEIoKSwgdC5ab25lO1xuICB9XG4gIGNvbnN0IGVlID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciwgdGUgPSBPYmplY3QuZGVmaW5lUHJvcGVydHksIGllID0gT2JqZWN0LmdldFByb3RvdHlwZU9mLCBmZSA9IE9iamVjdC5jcmVhdGUsIGtlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLCB2ZSA9IFwiYWRkRXZlbnRMaXN0ZW5lclwiLCBBZSA9IFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLCBqZSA9IFModmUpLCBIZSA9IFMoQWUpLCBfZSA9IFwidHJ1ZVwiLCBUZSA9IFwiZmFsc2VcIiwgd2UgPSBTKFwiXCIpO1xuICBmdW5jdGlvbiB4ZSh0LCBuKSB7XG4gICAgcmV0dXJuIFpvbmUuY3VycmVudC53cmFwKHQsIG4pO1xuICB9XG4gIGZ1bmN0aW9uIEZlKHQsIG4sIGEsIGUsIGMpIHtcbiAgICByZXR1cm4gWm9uZS5jdXJyZW50LnNjaGVkdWxlTWFjcm9UYXNrKHQsIG4sIGEsIGUsIGMpO1xuICB9XG4gIGNvbnN0IEggPSBTLCBOZSA9IHR5cGVvZiB3aW5kb3cgPCBcInVcIiwgRGUgPSBOZSA/IHdpbmRvdyA6IHZvaWQgMCwgUSA9IE5lICYmIERlIHx8IGdsb2JhbFRoaXMsIG10ID0gXCJyZW1vdmVBdHRyaWJ1dGVcIjtcbiAgZnVuY3Rpb24gVmUodCwgbikge1xuICAgIGZvciAobGV0IGEgPSB0Lmxlbmd0aCAtIDE7IGEgPj0gMDsgYS0tKVxuICAgICAgdHlwZW9mIHRbYV0gPT0gXCJmdW5jdGlvblwiICYmICh0W2FdID0geGUodFthXSwgbiArIFwiX1wiICsgYSkpO1xuICAgIHJldHVybiB0O1xuICB9XG4gIGZ1bmN0aW9uIHl0KHQsIG4pIHtcbiAgICBjb25zdCBhID0gdC5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIGZvciAobGV0IGUgPSAwOyBlIDwgbi5sZW5ndGg7IGUrKykge1xuICAgICAgY29uc3QgYyA9IG5bZV0sIGYgPSB0W2NdO1xuICAgICAgaWYgKGYpIHtcbiAgICAgICAgY29uc3QgcCA9IGVlKHQsIGMpO1xuICAgICAgICBpZiAoIVhlKHApKVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB0W2NdID0gKChUKSA9PiB7XG4gICAgICAgICAgY29uc3QgeSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIFQuYXBwbHkodGhpcywgVmUoYXJndW1lbnRzLCBhICsgXCIuXCIgKyBjKSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gcGUoeSwgVCksIHk7XG4gICAgICAgIH0pKGYpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBYZSh0KSB7XG4gICAgcmV0dXJuIHQgPyB0LndyaXRhYmxlID09PSBmYWxzZSA/IGZhbHNlIDogISh0eXBlb2YgdC5nZXQgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiB0LnNldCA+IFwidVwiKSA6IHRydWU7XG4gIH1cbiAgY29uc3QgWWUgPSB0eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUgPCBcInVcIiAmJiBzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUsIFplID0gIShcIm53XCIgaW4gUSkgJiYgdHlwZW9mIFEucHJvY2VzcyA8IFwidVwiICYmIFEucHJvY2Vzcy50b1N0cmluZygpID09PSBcIltvYmplY3QgcHJvY2Vzc11cIiwgemUgPSAhWmUgJiYgIVllICYmICEhKE5lICYmIERlLkhUTUxFbGVtZW50KSwgJGUgPSB0eXBlb2YgUS5wcm9jZXNzIDwgXCJ1XCIgJiYgUS5wcm9jZXNzLnRvU3RyaW5nKCkgPT09IFwiW29iamVjdCBwcm9jZXNzXVwiICYmICFZZSAmJiAhIShOZSAmJiBEZS5IVE1MRWxlbWVudCksIExlID0ge30sIGt0ID0gSChcImVuYWJsZV9iZWZvcmV1bmxvYWRcIiksIEplID0gZnVuY3Rpb24odCkge1xuICAgIGlmICh0ID0gdCB8fCBRLmV2ZW50LCAhdClcbiAgICAgIHJldHVybjtcbiAgICBsZXQgbiA9IExlW3QudHlwZV07XG4gICAgbiB8fCAobiA9IExlW3QudHlwZV0gPSBIKFwiT05fUFJPUEVSVFlcIiArIHQudHlwZSkpO1xuICAgIGNvbnN0IGEgPSB0aGlzIHx8IHQudGFyZ2V0IHx8IFEsIGUgPSBhW25dO1xuICAgIGxldCBjO1xuICAgIGlmICh6ZSAmJiBhID09PSBEZSAmJiB0LnR5cGUgPT09IFwiZXJyb3JcIikge1xuICAgICAgY29uc3QgZiA9IHQ7XG4gICAgICBjID0gZSAmJiBlLmNhbGwodGhpcywgZi5tZXNzYWdlLCBmLmZpbGVuYW1lLCBmLmxpbmVubywgZi5jb2xubywgZi5lcnJvciksIGMgPT09IHRydWUgJiYgdC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gZWxzZVxuICAgICAgYyA9IGUgJiYgZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy80NzU3OVxuICAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMTEvV0QtaHRtbDUtMjAxMTA1MjUvaGlzdG9yeS5odG1sI2JlZm9yZXVubG9hZGV2ZW50XG4gICAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IHNwZWNpZmljIGNhc2Ugd2Ugc2hvdWxkIGNoZWNrIGZvci4gVGhlIHNwZWMgZGVmaW5lcyB0aGF0IHRoZVxuICAgICAgLy8gYHJldHVyblZhbHVlYCBhdHRyaWJ1dGUgcmVwcmVzZW50cyB0aGUgbWVzc2FnZSB0byBzaG93IHRoZSB1c2VyLiBXaGVuIHRoZSBldmVudFxuICAgICAgLy8gaXMgY3JlYXRlZCwgdGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZy5cbiAgICAgIHQudHlwZSA9PT0gXCJiZWZvcmV1bmxvYWRcIiAmJiAvLyBUbyBwcmV2ZW50IGFueSBicmVha2luZyBjaGFuZ2VzIHJlc3VsdGluZyBmcm9tIHRoaXMgY2hhbmdlLCBnaXZlbiB0aGF0XG4gICAgICAvLyBpdCB3YXMgYWxyZWFkeSBjYXVzaW5nIGEgc2lnbmlmaWNhbnQgbnVtYmVyIG9mIGZhaWx1cmVzIGluIEczLCB3ZSBoYXZlIGhpZGRlblxuICAgICAgLy8gdGhhdCBiZWhhdmlvciBiZWhpbmQgYSBnbG9iYWwgY29uZmlndXJhdGlvbiBmbGFnLiBDb25zdW1lcnMgY2FuIGVuYWJsZSB0aGlzXG4gICAgICAvLyBmbGFnIGV4cGxpY2l0bHkgaWYgdGhleSB3YW50IHRoZSBgYmVmb3JldW5sb2FkYCBldmVudCB0byBiZSBoYW5kbGVkIGFzIGRlZmluZWRcbiAgICAgIC8vIGluIHRoZSBzcGVjaWZpY2F0aW9uLlxuICAgICAgUVtrdF0gJiYgLy8gVGhlIElETCBldmVudCBkZWZpbml0aW9uIGlzIGBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJldHVyblZhbHVlYCwgc28gd2UgY2hlY2sgd2hldGhlclxuICAgICAgLy8gYHR5cGVvZiByZXN1bHRgIGlzIGEgc3RyaW5nLlxuICAgICAgdHlwZW9mIGMgPT0gXCJzdHJpbmdcIiA/IHQucmV0dXJuVmFsdWUgPSBjIDogYyAhPSBudWxsICYmICFjICYmIHQucHJldmVudERlZmF1bHQoKTtcbiAgICByZXR1cm4gYztcbiAgfTtcbiAgZnVuY3Rpb24gS2UodCwgbiwgYSkge1xuICAgIGxldCBlID0gZWUodCwgbik7XG4gICAgaWYgKCFlICYmIGEgJiYgZWUoYSwgbikgJiYgKGUgPSB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KSwgIWUgfHwgIWUuY29uZmlndXJhYmxlKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGMgPSBIKFwib25cIiArIG4gKyBcInBhdGNoZWRcIik7XG4gICAgaWYgKHQuaGFzT3duUHJvcGVydHkoYykgJiYgdFtjXSlcbiAgICAgIHJldHVybjtcbiAgICBkZWxldGUgZS53cml0YWJsZSwgZGVsZXRlIGUudmFsdWU7XG4gICAgY29uc3QgZiA9IGUuZ2V0LCBwID0gZS5zZXQsIFQgPSBuLnNsaWNlKDIpO1xuICAgIGxldCB5ID0gTGVbVF07XG4gICAgeSB8fCAoeSA9IExlW1RdID0gSChcIk9OX1BST1BFUlRZXCIgKyBUKSksIGUuc2V0ID0gZnVuY3Rpb24odykge1xuICAgICAgbGV0IF8gPSB0aGlzO1xuICAgICAgaWYgKCFfICYmIHQgPT09IFEgJiYgKF8gPSBRKSwgIV8pXG4gICAgICAgIHJldHVybjtcbiAgICAgIHR5cGVvZiBfW3ldID09IFwiZnVuY3Rpb25cIiAmJiBfLnJlbW92ZUV2ZW50TGlzdGVuZXIoVCwgSmUpLCBwPy5jYWxsKF8sIG51bGwpLCBfW3ldID0gdywgdHlwZW9mIHcgPT0gXCJmdW5jdGlvblwiICYmIF8uYWRkRXZlbnRMaXN0ZW5lcihULCBKZSwgZmFsc2UpO1xuICAgIH0sIGUuZ2V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBsZXQgdyA9IHRoaXM7XG4gICAgICBpZiAoIXcgJiYgdCA9PT0gUSAmJiAodyA9IFEpLCAhdylcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBjb25zdCBfID0gd1t5XTtcbiAgICAgIGlmIChfKVxuICAgICAgICByZXR1cm4gXztcbiAgICAgIGlmIChmKSB7XG4gICAgICAgIGxldCBDID0gZi5jYWxsKHRoaXMpO1xuICAgICAgICBpZiAoQylcbiAgICAgICAgICByZXR1cm4gZS5zZXQuY2FsbCh0aGlzLCBDKSwgdHlwZW9mIHdbbXRdID09IFwiZnVuY3Rpb25cIiAmJiB3LnJlbW92ZUF0dHJpYnV0ZShuKSwgQztcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sIHRlKHQsIG4sIGUpLCB0W2NdID0gdHJ1ZTtcbiAgfVxuICBmdW5jdGlvbiBRZSh0LCBuLCBhKSB7XG4gICAgaWYgKG4pXG4gICAgICBmb3IgKGxldCBlID0gMDsgZSA8IG4ubGVuZ3RoOyBlKyspXG4gICAgICAgIEtlKHQsIFwib25cIiArIG5bZV0sIGEpO1xuICAgIGVsc2Uge1xuICAgICAgY29uc3QgZSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBjIGluIHQpXG4gICAgICAgIGMuc2xpY2UoMCwgMikgPT0gXCJvblwiICYmIGUucHVzaChjKTtcbiAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgZS5sZW5ndGg7IGMrKylcbiAgICAgICAgS2UodCwgZVtjXSwgYSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGxlID0gSChcIm9yaWdpbmFsSW5zdGFuY2VcIik7XG4gIGZ1bmN0aW9uIFNlKHQpIHtcbiAgICBjb25zdCBuID0gUVt0XTtcbiAgICBpZiAoIW4pXG4gICAgICByZXR1cm47XG4gICAgUVtIKHQpXSA9IG4sIFFbdF0gPSBmdW5jdGlvbigpIHtcbiAgICAgIGNvbnN0IGMgPSBWZShhcmd1bWVudHMsIHQpO1xuICAgICAgc3dpdGNoIChjLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgdGhpc1tsZV0gPSBuZXcgbigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgdGhpc1tsZV0gPSBuZXcgbihjWzBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHRoaXNbbGVdID0gbmV3IG4oY1swXSwgY1sxXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICB0aGlzW2xlXSA9IG5ldyBuKGNbMF0sIGNbMV0sIGNbMl0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgdGhpc1tsZV0gPSBuZXcgbihjWzBdLCBjWzFdLCBjWzJdLCBjWzNdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBcmcgbGlzdCB0b28gbG9uZy5cIik7XG4gICAgICB9XG4gICAgfSwgcGUoUVt0XSwgbik7XG4gICAgY29uc3QgYSA9IG5ldyBuKGZ1bmN0aW9uKCkge1xuICAgIH0pO1xuICAgIGxldCBlO1xuICAgIGZvciAoZSBpbiBhKVxuICAgICAgdCA9PT0gXCJYTUxIdHRwUmVxdWVzdFwiICYmIGUgPT09IFwicmVzcG9uc2VCbG9iXCIgfHwgKGZ1bmN0aW9uKGMpIHtcbiAgICAgICAgdHlwZW9mIGFbY10gPT0gXCJmdW5jdGlvblwiID8gUVt0XS5wcm90b3R5cGVbY10gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gdGhpc1tsZV1bY10uYXBwbHkodGhpc1tsZV0sIGFyZ3VtZW50cyk7XG4gICAgICAgIH0gOiB0ZShRW3RdLnByb3RvdHlwZSwgYywge1xuICAgICAgICAgIHNldDogZnVuY3Rpb24oZikge1xuICAgICAgICAgICAgdHlwZW9mIGYgPT0gXCJmdW5jdGlvblwiID8gKHRoaXNbbGVdW2NdID0geGUoZiwgdCArIFwiLlwiICsgYyksIHBlKHRoaXNbbGVdW2NdLCBmKSkgOiB0aGlzW2xlXVtjXSA9IGY7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXNbbGVdW2NdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KShlKTtcbiAgICBmb3IgKGUgaW4gbilcbiAgICAgIGUgIT09IFwicHJvdG90eXBlXCIgJiYgbi5oYXNPd25Qcm9wZXJ0eShlKSAmJiAoUVt0XVtlXSA9IG5bZV0pO1xuICB9XG4gIGZ1bmN0aW9uIEVlKHQsIG4sIGEpIHtcbiAgICBsZXQgZSA9IHQ7XG4gICAgZm9yICg7IGUgJiYgIWUuaGFzT3duUHJvcGVydHkobik7IClcbiAgICAgIGUgPSBpZShlKTtcbiAgICAhZSAmJiB0W25dICYmIChlID0gdCk7XG4gICAgY29uc3QgYyA9IEgobik7XG4gICAgbGV0IGYgPSBudWxsO1xuICAgIGlmIChlICYmICghKGYgPSBlW2NdKSB8fCAhZS5oYXNPd25Qcm9wZXJ0eShjKSkpIHtcbiAgICAgIGYgPSBlW2NdID0gZVtuXTtcbiAgICAgIGNvbnN0IHAgPSBlICYmIGVlKGUsIG4pO1xuICAgICAgaWYgKFhlKHApKSB7XG4gICAgICAgIGNvbnN0IFQgPSBhKGYsIGMsIG4pO1xuICAgICAgICBlW25dID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIFQodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfSwgcGUoZVtuXSwgZik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmO1xuICB9XG4gIGZ1bmN0aW9uIHZ0KHQsIG4sIGEpIHtcbiAgICBsZXQgZSA9IG51bGw7XG4gICAgZnVuY3Rpb24gYyhmKSB7XG4gICAgICBjb25zdCBwID0gZi5kYXRhO1xuICAgICAgcmV0dXJuIHAuYXJnc1twLmNiSWR4XSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBmLmludm9rZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfSwgZS5hcHBseShwLnRhcmdldCwgcC5hcmdzKSwgZjtcbiAgICB9XG4gICAgZSA9IEVlKHQsIG4sIChmKSA9PiBmdW5jdGlvbihwLCBUKSB7XG4gICAgICBjb25zdCB5ID0gYShwLCBUKTtcbiAgICAgIHJldHVybiB5LmNiSWR4ID49IDAgJiYgdHlwZW9mIFRbeS5jYklkeF0gPT0gXCJmdW5jdGlvblwiID8gRmUoeS5uYW1lLCBUW3kuY2JJZHhdLCB5LCBjKSA6IGYuYXBwbHkocCwgVCk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gcGUodCwgbikge1xuICAgIHRbSChcIk9yaWdpbmFsRGVsZWdhdGVcIildID0gbjtcbiAgfVxuICBsZXQgZXQgPSBmYWxzZSwgR2UgPSBmYWxzZTtcbiAgZnVuY3Rpb24gYnQoKSB7XG4gICAgaWYgKGV0KVxuICAgICAgcmV0dXJuIEdlO1xuICAgIGV0ID0gdHJ1ZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdCA9IERlLm5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgICAodC5pbmRleE9mKFwiTVNJRSBcIikgIT09IC0xIHx8IHQuaW5kZXhPZihcIlRyaWRlbnQvXCIpICE9PSAtMSB8fCB0LmluZGV4T2YoXCJFZGdlL1wiKSAhPT0gLTEpICYmIChHZSA9ICEwKTtcbiAgICB9IGNhdGNoIHtcbiAgICB9XG4gICAgcmV0dXJuIEdlO1xuICB9XG4gIGZ1bmN0aW9uIHR0KHQpIHtcbiAgICByZXR1cm4gdHlwZW9mIHQgPT0gXCJmdW5jdGlvblwiO1xuICB9XG4gIGZ1bmN0aW9uIG50KHQpIHtcbiAgICByZXR1cm4gdHlwZW9mIHQgPT0gXCJudW1iZXJcIjtcbiAgfVxuICBjb25zdCBDdCA9IHtcbiAgICB1c2VHOiB0cnVlXG4gIH0sIGFlID0ge30sIHJ0ID0ge30sIG90ID0gbmV3IFJlZ0V4cChcIl5cIiArIHdlICsgXCIoXFxcXHcrKSh0cnVlfGZhbHNlKSRcIiksIHN0ID0gSChcInByb3BhZ2F0aW9uU3RvcHBlZFwiKTtcbiAgZnVuY3Rpb24gaXQodCwgbikge1xuICAgIGNvbnN0IGEgPSAobiA/IG4odCkgOiB0KSArIFRlLCBlID0gKG4gPyBuKHQpIDogdCkgKyBfZSwgYyA9IHdlICsgYSwgZiA9IHdlICsgZTtcbiAgICBhZVt0XSA9IHt9LCBhZVt0XVtUZV0gPSBjLCBhZVt0XVtfZV0gPSBmO1xuICB9XG4gIGZ1bmN0aW9uIFB0KHQsIG4sIGEsIGUpIHtcbiAgICBjb25zdCBjID0gZSAmJiBlLmFkZCB8fCB2ZSwgZiA9IGUgJiYgZS5ybSB8fCBBZSwgcCA9IGUgJiYgZS5saXN0ZW5lcnMgfHwgXCJldmVudExpc3RlbmVyc1wiLCBUID0gZSAmJiBlLnJtQWxsIHx8IFwicmVtb3ZlQWxsTGlzdGVuZXJzXCIsIHkgPSBIKGMpLCB3ID0gXCIuXCIgKyBjICsgXCI6XCIsIF8gPSBcInByZXBlbmRMaXN0ZW5lclwiLCBDID0gXCIuXCIgKyBfICsgXCI6XCIsIE0gPSBmdW5jdGlvbihrLCBkLCB4KSB7XG4gICAgICBpZiAoay5pc1JlbW92ZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNvbnN0IFYgPSBrLmNhbGxiYWNrO1xuICAgICAgdHlwZW9mIFYgPT0gXCJvYmplY3RcIiAmJiBWLmhhbmRsZUV2ZW50ICYmIChrLmNhbGxiYWNrID0gKGcpID0+IFYuaGFuZGxlRXZlbnQoZyksIGsub3JpZ2luYWxEZWxlZ2F0ZSA9IFYpO1xuICAgICAgbGV0IEs7XG4gICAgICB0cnkge1xuICAgICAgICBrLmludm9rZShrLCBkLCBbeF0pO1xuICAgICAgfSBjYXRjaCAoZykge1xuICAgICAgICBLID0gZztcbiAgICAgIH1cbiAgICAgIGNvbnN0IFUgPSBrLm9wdGlvbnM7XG4gICAgICBpZiAoVSAmJiB0eXBlb2YgVSA9PSBcIm9iamVjdFwiICYmIFUub25jZSkge1xuICAgICAgICBjb25zdCBnID0gay5vcmlnaW5hbERlbGVnYXRlID8gay5vcmlnaW5hbERlbGVnYXRlIDogay5jYWxsYmFjaztcbiAgICAgICAgZFtmXS5jYWxsKGQsIHgudHlwZSwgZywgVSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gSztcbiAgICB9O1xuICAgIGZ1bmN0aW9uIEYoaywgZCwgeCkge1xuICAgICAgaWYgKGQgPSBkIHx8IHQuZXZlbnQsICFkKVxuICAgICAgICByZXR1cm47XG4gICAgICBjb25zdCBWID0gayB8fCBkLnRhcmdldCB8fCB0LCBLID0gVlthZVtkLnR5cGVdW3ggPyBfZSA6IFRlXV07XG4gICAgICBpZiAoSykge1xuICAgICAgICBjb25zdCBVID0gW107XG4gICAgICAgIGlmIChLLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIGNvbnN0IGcgPSBNKEtbMF0sIFYsIGQpO1xuICAgICAgICAgIGcgJiYgVS5wdXNoKGcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGcgPSBLLnNsaWNlKCk7XG4gICAgICAgICAgZm9yIChsZXQgWSA9IDA7IFkgPCBnLmxlbmd0aCAmJiAhKGQgJiYgZFtzdF0gPT09IHRydWUpOyBZKyspIHtcbiAgICAgICAgICAgIGNvbnN0IE8gPSBNKGdbWV0sIFYsIGQpO1xuICAgICAgICAgICAgTyAmJiBVLnB1c2goTyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChVLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICB0aHJvdyBVWzBdO1xuICAgICAgICBmb3IgKGxldCBnID0gMDsgZyA8IFUubGVuZ3RoOyBnKyspIHtcbiAgICAgICAgICBjb25zdCBZID0gVVtnXTtcbiAgICAgICAgICBuLm5hdGl2ZVNjaGVkdWxlTWljcm9UYXNrKCgpID0+IHtcbiAgICAgICAgICAgIHRocm93IFk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgWCA9IGZ1bmN0aW9uKGspIHtcbiAgICAgIHJldHVybiBGKHRoaXMsIGssIGZhbHNlKTtcbiAgICB9LCBuZSA9IGZ1bmN0aW9uKGspIHtcbiAgICAgIHJldHVybiBGKHRoaXMsIGssIHRydWUpO1xuICAgIH07XG4gICAgZnVuY3Rpb24gcmUoaywgZCkge1xuICAgICAgaWYgKCFrKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBsZXQgeCA9IHRydWU7XG4gICAgICBkICYmIGQudXNlRyAhPT0gdm9pZCAwICYmICh4ID0gZC51c2VHKTtcbiAgICAgIGNvbnN0IFYgPSBkICYmIGQudmg7XG4gICAgICBsZXQgSyA9IHRydWU7XG4gICAgICBkICYmIGQuY2hrRHVwICE9PSB2b2lkIDAgJiYgKEsgPSBkLmNoa0R1cCk7XG4gICAgICBsZXQgVSA9IGZhbHNlO1xuICAgICAgZCAmJiBkLnJ0ICE9PSB2b2lkIDAgJiYgKFUgPSBkLnJ0KTtcbiAgICAgIGxldCBnID0gaztcbiAgICAgIGZvciAoOyBnICYmICFnLmhhc093blByb3BlcnR5KGMpOyApXG4gICAgICAgIGcgPSBpZShnKTtcbiAgICAgIGlmICghZyAmJiBrW2NdICYmIChnID0gayksICFnIHx8IGdbeV0pXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IFkgPSBkICYmIGQuZXZlbnROYW1lVG9TdHJpbmcsIE8gPSB7fSwgUCA9IGdbeV0gPSBnW2NdLCBiID0gZ1tIKGYpXSA9IGdbZl0sIEQgPSBnW0gocCldID0gZ1twXSwgb2UgPSBnW0goVCldID0gZ1tUXTtcbiAgICAgIGxldCAkO1xuICAgICAgZCAmJiBkLnByZXBlbmQgJiYgKCQgPSBnW0goZC5wcmVwZW5kKV0gPSBnW2QucHJlcGVuZF0pO1xuICAgICAgZnVuY3Rpb24gSShvLCB1KSB7XG4gICAgICAgIHJldHVybiB1ID8gdHlwZW9mIG8gPT0gXCJib29sZWFuXCIgPyB7IGNhcHR1cmU6IG8sIHBhc3NpdmU6IHRydWUgfSA6IG8gPyB0eXBlb2YgbyA9PSBcIm9iamVjdFwiICYmIG8ucGFzc2l2ZSAhPT0gZmFsc2UgPyB7IC4uLm8sIHBhc3NpdmU6IHRydWUgfSA6IG8gOiB7IHBhc3NpdmU6IHRydWUgfSA6IG87XG4gICAgICB9XG4gICAgICBjb25zdCBzID0gZnVuY3Rpb24obykge1xuICAgICAgICBpZiAoIU8uaXNFeGlzdGluZylcbiAgICAgICAgICByZXR1cm4gUC5jYWxsKE8udGFyZ2V0LCBPLmV2ZW50TmFtZSwgTy5jYXB0dXJlID8gbmUgOiBYLCBPLm9wdGlvbnMpO1xuICAgICAgfSwgaSA9IGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgaWYgKCFvLmlzUmVtb3ZlZCkge1xuICAgICAgICAgIGNvbnN0IHUgPSBhZVtvLmV2ZW50TmFtZV07XG4gICAgICAgICAgbGV0IHY7XG4gICAgICAgICAgdSAmJiAodiA9IHVbby5jYXB0dXJlID8gX2UgOiBUZV0pO1xuICAgICAgICAgIGNvbnN0IFIgPSB2ICYmIG8udGFyZ2V0W3ZdO1xuICAgICAgICAgIGlmIChSKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IFIubGVuZ3RoOyBtKyspXG4gICAgICAgICAgICAgIGlmIChSW21dID09PSBvKSB7XG4gICAgICAgICAgICAgICAgUi5zcGxpY2UobSwgMSksIG8uaXNSZW1vdmVkID0gdHJ1ZSwgby5yZW1vdmVBYm9ydExpc3RlbmVyICYmIChvLnJlbW92ZUFib3J0TGlzdGVuZXIoKSwgby5yZW1vdmVBYm9ydExpc3RlbmVyID0gbnVsbCksIFIubGVuZ3RoID09PSAwICYmIChvLmFsbFJlbW92ZWQgPSB0cnVlLCBvLnRhcmdldFt2XSA9IG51bGwpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvLmFsbFJlbW92ZWQpXG4gICAgICAgICAgcmV0dXJuIGIuY2FsbChvLnRhcmdldCwgby5ldmVudE5hbWUsIG8uY2FwdHVyZSA/IG5lIDogWCwgby5vcHRpb25zKTtcbiAgICAgIH0sIHIgPSBmdW5jdGlvbihvKSB7XG4gICAgICAgIHJldHVybiBQLmNhbGwoTy50YXJnZXQsIE8uZXZlbnROYW1lLCBvLmludm9rZSwgTy5vcHRpb25zKTtcbiAgICAgIH0sIEUgPSBmdW5jdGlvbihvKSB7XG4gICAgICAgIHJldHVybiAkLmNhbGwoTy50YXJnZXQsIE8uZXZlbnROYW1lLCBvLmludm9rZSwgTy5vcHRpb25zKTtcbiAgICAgIH0sIEcgPSBmdW5jdGlvbihvKSB7XG4gICAgICAgIHJldHVybiBiLmNhbGwoby50YXJnZXQsIG8uZXZlbnROYW1lLCBvLmludm9rZSwgby5vcHRpb25zKTtcbiAgICAgIH0sIGNlID0geCA/IHMgOiByLCBBID0geCA/IGkgOiBHLCBnZSA9IGZ1bmN0aW9uKG8sIHUpIHtcbiAgICAgICAgY29uc3QgdiA9IHR5cGVvZiB1O1xuICAgICAgICByZXR1cm4gdiA9PT0gXCJmdW5jdGlvblwiICYmIG8uY2FsbGJhY2sgPT09IHUgfHwgdiA9PT0gXCJvYmplY3RcIiAmJiBvLm9yaWdpbmFsRGVsZWdhdGUgPT09IHU7XG4gICAgICB9LCB5ZSA9IGQ/LmRpZmYgfHwgZ2UsIHNlID0gWm9uZVtIKFwiVU5QQVRDSEVEX0VWRU5UU1wiKV0sIENlID0gdFtIKFwiUEFTU0lWRV9FVkVOVFNcIildO1xuICAgICAgZnVuY3Rpb24gaChvKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiICYmIG8gIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCB1ID0geyAuLi5vIH07XG4gICAgICAgICAgcmV0dXJuIG8uc2lnbmFsICYmICh1LnNpZ25hbCA9IG8uc2lnbmFsKSwgdTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGwgPSBmdW5jdGlvbihvLCB1LCB2LCBSLCBtID0gZmFsc2UsIE4gPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgY29uc3QgWiA9IHRoaXMgfHwgdDtcbiAgICAgICAgICBsZXQgTCA9IGFyZ3VtZW50c1swXTtcbiAgICAgICAgICBkICYmIGQudHJhbnNmZXJFdmVudE5hbWUgJiYgKEwgPSBkLnRyYW5zZmVyRXZlbnROYW1lKEwpKTtcbiAgICAgICAgICBsZXQgVyA9IGFyZ3VtZW50c1sxXTtcbiAgICAgICAgICBpZiAoIVcpXG4gICAgICAgICAgICByZXR1cm4gby5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgIGlmIChaZSAmJiBMID09PSBcInVuY2F1Z2h0RXhjZXB0aW9uXCIpXG4gICAgICAgICAgICByZXR1cm4gby5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgIGxldCBxID0gZmFsc2U7XG4gICAgICAgICAgaWYgKHR5cGVvZiBXICE9IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgaWYgKCFXLmhhbmRsZUV2ZW50KVxuICAgICAgICAgICAgICByZXR1cm4gby5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgcSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChWICYmICFWKG8sIFcsIFosIGFyZ3VtZW50cykpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY29uc3QgbWUgPSAhIUNlICYmIENlLmluZGV4T2YoTCkgIT09IC0xLCBoZSA9IGgoSShhcmd1bWVudHNbMl0sIG1lKSksIFBlID0gaGU/LnNpZ25hbDtcbiAgICAgICAgICBpZiAoUGU/LmFib3J0ZWQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgaWYgKHNlKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBkZSA9IDA7IGRlIDwgc2UubGVuZ3RoOyBkZSsrKVxuICAgICAgICAgICAgICBpZiAoTCA9PT0gc2VbZGVdKVxuICAgICAgICAgICAgICAgIHJldHVybiBtZSA/IG8uY2FsbChaLCBMLCBXLCBoZSkgOiBvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IFVlID0gaGUgPyB0eXBlb2YgaGUgPT0gXCJib29sZWFuXCIgPyB0cnVlIDogaGUuY2FwdHVyZSA6IGZhbHNlLCBmdCA9IGhlICYmIHR5cGVvZiBoZSA9PSBcIm9iamVjdFwiID8gaGUub25jZSA6IGZhbHNlLCBIdCA9IFpvbmUuY3VycmVudDtcbiAgICAgICAgICBsZXQgV2UgPSBhZVtMXTtcbiAgICAgICAgICBXZSB8fCAoaXQoTCwgWSksIFdlID0gYWVbTF0pO1xuICAgICAgICAgIGNvbnN0IGh0ID0gV2VbVWUgPyBfZSA6IFRlXTtcbiAgICAgICAgICBsZXQgUmUgPSBaW2h0XSwgZHQgPSBmYWxzZTtcbiAgICAgICAgICBpZiAoUmUpIHtcbiAgICAgICAgICAgIGlmIChkdCA9IHRydWUsIEspIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgZGUgPSAwOyBkZSA8IFJlLmxlbmd0aDsgZGUrKylcbiAgICAgICAgICAgICAgICBpZiAoeWUoUmVbZGVdLCBXKSlcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgIFJlID0gWltodF0gPSBbXTtcbiAgICAgICAgICBsZXQgSWU7XG4gICAgICAgICAgY29uc3QgX3QgPSBaLmNvbnN0cnVjdG9yLm5hbWUsIFR0ID0gcnRbX3RdO1xuICAgICAgICAgIFR0ICYmIChJZSA9IFR0W0xdKSwgSWUgfHwgKEllID0gX3QgKyB1ICsgKFkgPyBZKEwpIDogTCkpLCBPLm9wdGlvbnMgPSBoZSwgZnQgJiYgKE8ub3B0aW9ucy5vbmNlID0gZmFsc2UpLCBPLnRhcmdldCA9IFosIE8uY2FwdHVyZSA9IFVlLCBPLmV2ZW50TmFtZSA9IEwsIE8uaXNFeGlzdGluZyA9IGR0O1xuICAgICAgICAgIGNvbnN0IE9lID0geCA/IEN0IDogdm9pZCAwO1xuICAgICAgICAgIE9lICYmIChPZS50YXNrRGF0YSA9IE8pLCBQZSAmJiAoTy5vcHRpb25zLnNpZ25hbCA9IHZvaWQgMCk7XG4gICAgICAgICAgY29uc3QgdWUgPSBIdC5zY2hlZHVsZUV2ZW50VGFzayhJZSwgVywgT2UsIHYsIFIpO1xuICAgICAgICAgIGlmIChQZSkge1xuICAgICAgICAgICAgTy5vcHRpb25zLnNpZ25hbCA9IFBlO1xuICAgICAgICAgICAgY29uc3QgZGUgPSAoKSA9PiB1ZS56b25lLmNhbmNlbFRhc2sodWUpO1xuICAgICAgICAgICAgby5jYWxsKFBlLCBcImFib3J0XCIsIGRlLCB7IG9uY2U6IHRydWUgfSksIHVlLnJlbW92ZUFib3J0TGlzdGVuZXIgPSAoKSA9PiBQZS5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoTy50YXJnZXQgPSBudWxsLCBPZSAmJiAoT2UudGFza0RhdGEgPSBudWxsKSwgZnQgJiYgKE8ub3B0aW9ucy5vbmNlID0gdHJ1ZSksIHR5cGVvZiB1ZS5vcHRpb25zICE9IFwiYm9vbGVhblwiICYmICh1ZS5vcHRpb25zID0gaGUpLCB1ZS50YXJnZXQgPSBaLCB1ZS5jYXB0dXJlID0gVWUsIHVlLmV2ZW50TmFtZSA9IEwsIHEgJiYgKHVlLm9yaWdpbmFsRGVsZWdhdGUgPSBXKSwgTiA/IFJlLnVuc2hpZnQodWUpIDogUmUucHVzaCh1ZSksIG0pXG4gICAgICAgICAgICByZXR1cm4gWjtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gZ1tjXSA9IGwoUCwgdywgY2UsIEEsIFUpLCAkICYmIChnW19dID0gbCgkLCBDLCBFLCBBLCBVLCB0cnVlKSksIGdbZl0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgY29uc3QgbyA9IHRoaXMgfHwgdDtcbiAgICAgICAgbGV0IHUgPSBhcmd1bWVudHNbMF07XG4gICAgICAgIGQgJiYgZC50cmFuc2ZlckV2ZW50TmFtZSAmJiAodSA9IGQudHJhbnNmZXJFdmVudE5hbWUodSkpO1xuICAgICAgICBjb25zdCB2ID0gYXJndW1lbnRzWzJdLCBSID0gdiA/IHR5cGVvZiB2ID09IFwiYm9vbGVhblwiID8gdHJ1ZSA6IHYuY2FwdHVyZSA6IGZhbHNlLCBtID0gYXJndW1lbnRzWzFdO1xuICAgICAgICBpZiAoIW0pXG4gICAgICAgICAgcmV0dXJuIGIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgaWYgKFYgJiYgIVYoYiwgbSwgbywgYXJndW1lbnRzKSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IE4gPSBhZVt1XTtcbiAgICAgICAgbGV0IFo7XG4gICAgICAgIE4gJiYgKFogPSBOW1IgPyBfZSA6IFRlXSk7XG4gICAgICAgIGNvbnN0IEwgPSBaICYmIG9bWl07XG4gICAgICAgIGlmIChMKVxuICAgICAgICAgIGZvciAobGV0IFcgPSAwOyBXIDwgTC5sZW5ndGg7IFcrKykge1xuICAgICAgICAgICAgY29uc3QgcSA9IExbV107XG4gICAgICAgICAgICBpZiAoeWUocSwgbSkpIHtcbiAgICAgICAgICAgICAgaWYgKEwuc3BsaWNlKFcsIDEpLCBxLmlzUmVtb3ZlZCA9IHRydWUsIEwubGVuZ3RoID09PSAwICYmIChxLmFsbFJlbW92ZWQgPSB0cnVlLCBvW1pdID0gbnVsbCwgIVIgJiYgdHlwZW9mIHUgPT0gXCJzdHJpbmdcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZSA9IHdlICsgXCJPTl9QUk9QRVJUWVwiICsgdTtcbiAgICAgICAgICAgICAgICBvW21lXSA9IG51bGw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHEuem9uZS5jYW5jZWxUYXNrKHEpLCBVID8gbyA6IHZvaWQgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIHJldHVybiBiLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9LCBnW3BdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0IG8gPSB0aGlzIHx8IHQ7XG4gICAgICAgIGxldCB1ID0gYXJndW1lbnRzWzBdO1xuICAgICAgICBkICYmIGQudHJhbnNmZXJFdmVudE5hbWUgJiYgKHUgPSBkLnRyYW5zZmVyRXZlbnROYW1lKHUpKTtcbiAgICAgICAgY29uc3QgdiA9IFtdLCBSID0gY3QobywgWSA/IFkodSkgOiB1KTtcbiAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBSLmxlbmd0aDsgbSsrKSB7XG4gICAgICAgICAgY29uc3QgTiA9IFJbbV07XG4gICAgICAgICAgbGV0IFogPSBOLm9yaWdpbmFsRGVsZWdhdGUgPyBOLm9yaWdpbmFsRGVsZWdhdGUgOiBOLmNhbGxiYWNrO1xuICAgICAgICAgIHYucHVzaChaKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0sIGdbVF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgY29uc3QgbyA9IHRoaXMgfHwgdDtcbiAgICAgICAgbGV0IHUgPSBhcmd1bWVudHNbMF07XG4gICAgICAgIGlmICh1KSB7XG4gICAgICAgICAgZCAmJiBkLnRyYW5zZmVyRXZlbnROYW1lICYmICh1ID0gZC50cmFuc2ZlckV2ZW50TmFtZSh1KSk7XG4gICAgICAgICAgY29uc3QgdiA9IGFlW3VdO1xuICAgICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgICBjb25zdCBSID0gdltUZV0sIG0gPSB2W19lXSwgTiA9IG9bUl0sIFogPSBvW21dO1xuICAgICAgICAgICAgaWYgKE4pIHtcbiAgICAgICAgICAgICAgY29uc3QgTCA9IE4uc2xpY2UoKTtcbiAgICAgICAgICAgICAgZm9yIChsZXQgVyA9IDA7IFcgPCBMLmxlbmd0aDsgVysrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcSA9IExbV107XG4gICAgICAgICAgICAgICAgbGV0IG1lID0gcS5vcmlnaW5hbERlbGVnYXRlID8gcS5vcmlnaW5hbERlbGVnYXRlIDogcS5jYWxsYmFjaztcbiAgICAgICAgICAgICAgICB0aGlzW2ZdLmNhbGwodGhpcywgdSwgbWUsIHEub3B0aW9ucyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChaKSB7XG4gICAgICAgICAgICAgIGNvbnN0IEwgPSBaLnNsaWNlKCk7XG4gICAgICAgICAgICAgIGZvciAobGV0IFcgPSAwOyBXIDwgTC5sZW5ndGg7IFcrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHEgPSBMW1ddO1xuICAgICAgICAgICAgICAgIGxldCBtZSA9IHEub3JpZ2luYWxEZWxlZ2F0ZSA/IHEub3JpZ2luYWxEZWxlZ2F0ZSA6IHEuY2FsbGJhY2s7XG4gICAgICAgICAgICAgICAgdGhpc1tmXS5jYWxsKHRoaXMsIHUsIG1lLCBxLm9wdGlvbnMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHYgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAgICBmb3IgKGxldCBSID0gMDsgUiA8IHYubGVuZ3RoOyBSKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG0gPSB2W1JdLCBOID0gb3QuZXhlYyhtKTtcbiAgICAgICAgICAgIGxldCBaID0gTiAmJiBOWzFdO1xuICAgICAgICAgICAgWiAmJiBaICE9PSBcInJlbW92ZUxpc3RlbmVyXCIgJiYgdGhpc1tUXS5jYWxsKHRoaXMsIFopO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzW1RdLmNhbGwodGhpcywgXCJyZW1vdmVMaXN0ZW5lclwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoVSlcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sIHBlKGdbY10sIFApLCBwZShnW2ZdLCBiKSwgb2UgJiYgcGUoZ1tUXSwgb2UpLCBEICYmIHBlKGdbcF0sIEQpLCB0cnVlO1xuICAgIH1cbiAgICBsZXQgSiA9IFtdO1xuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgYS5sZW5ndGg7IGsrKylcbiAgICAgIEpba10gPSByZShhW2tdLCBlKTtcbiAgICByZXR1cm4gSjtcbiAgfVxuICBmdW5jdGlvbiBjdCh0LCBuKSB7XG4gICAgaWYgKCFuKSB7XG4gICAgICBjb25zdCBmID0gW107XG4gICAgICBmb3IgKGxldCBwIGluIHQpIHtcbiAgICAgICAgY29uc3QgVCA9IG90LmV4ZWMocCk7XG4gICAgICAgIGxldCB5ID0gVCAmJiBUWzFdO1xuICAgICAgICBpZiAoeSAmJiAoIW4gfHwgeSA9PT0gbikpIHtcbiAgICAgICAgICBjb25zdCB3ID0gdFtwXTtcbiAgICAgICAgICBpZiAodylcbiAgICAgICAgICAgIGZvciAobGV0IF8gPSAwOyBfIDwgdy5sZW5ndGg7IF8rKylcbiAgICAgICAgICAgICAgZi5wdXNoKHdbX10pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZjtcbiAgICB9XG4gICAgbGV0IGEgPSBhZVtuXTtcbiAgICBhIHx8IChpdChuKSwgYSA9IGFlW25dKTtcbiAgICBjb25zdCBlID0gdFthW1RlXV0sIGMgPSB0W2FbX2VdXTtcbiAgICByZXR1cm4gZSA/IGMgPyBlLmNvbmNhdChjKSA6IGUuc2xpY2UoKSA6IGMgPyBjLnNsaWNlKCkgOiBbXTtcbiAgfVxuICBmdW5jdGlvbiBSdCh0LCBuKSB7XG4gICAgY29uc3QgYSA9IHQuRXZlbnQ7XG4gICAgYSAmJiBhLnByb3RvdHlwZSAmJiBuLnBhdGNoTWV0aG9kKGEucHJvdG90eXBlLCBcInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvblwiLCAoZSkgPT4gZnVuY3Rpb24oYywgZikge1xuICAgICAgY1tzdF0gPSB0cnVlLCBlICYmIGUuYXBwbHkoYywgZik7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gd3QodCwgbikge1xuICAgIG4ucGF0Y2hNZXRob2QodCwgXCJxdWV1ZU1pY3JvdGFza1wiLCAoYSkgPT4gZnVuY3Rpb24oZSwgYykge1xuICAgICAgWm9uZS5jdXJyZW50LnNjaGVkdWxlTWljcm9UYXNrKFwicXVldWVNaWNyb3Rhc2tcIiwgY1swXSk7XG4gICAgfSk7XG4gIH1cbiAgY29uc3QgTWUgPSBIKFwiem9uZVRhc2tcIik7XG4gIGZ1bmN0aW9uIGJlKHQsIG4sIGEsIGUpIHtcbiAgICBsZXQgYyA9IG51bGwsIGYgPSBudWxsO1xuICAgIG4gKz0gZSwgYSArPSBlO1xuICAgIGNvbnN0IHAgPSB7fTtcbiAgICBmdW5jdGlvbiBUKHcpIHtcbiAgICAgIGNvbnN0IF8gPSB3LmRhdGE7XG4gICAgICBfLmFyZ3NbMF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHcuaW52b2tlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgY29uc3QgQyA9IGMuYXBwbHkodCwgXy5hcmdzKTtcbiAgICAgIHJldHVybiBudChDKSA/IF8uaGFuZGxlSWQgPSBDIDogKF8uaGFuZGxlID0gQywgXy5pc1JlZnJlc2hhYmxlID0gdHQoQy5yZWZyZXNoKSksIHc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHkodykge1xuICAgICAgY29uc3QgeyBoYW5kbGU6IF8sIGhhbmRsZUlkOiBDIH0gPSB3LmRhdGE7XG4gICAgICByZXR1cm4gZi5jYWxsKHQsIF8gPz8gQyk7XG4gICAgfVxuICAgIGMgPSBFZSh0LCBuLCAodykgPT4gZnVuY3Rpb24oXywgQykge1xuICAgICAgaWYgKHR0KENbMF0pKSB7XG4gICAgICAgIGNvbnN0IE0gPSB7XG4gICAgICAgICAgaXNSZWZyZXNoYWJsZTogZmFsc2UsXG4gICAgICAgICAgaXNQZXJpb2RpYzogZSA9PT0gXCJJbnRlcnZhbFwiLFxuICAgICAgICAgIGRlbGF5OiBlID09PSBcIlRpbWVvdXRcIiB8fCBlID09PSBcIkludGVydmFsXCIgPyBDWzFdIHx8IDAgOiB2b2lkIDAsXG4gICAgICAgICAgYXJnczogQ1xuICAgICAgICB9LCBGID0gQ1swXTtcbiAgICAgICAgQ1swXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gRi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBjb25zdCB7IGhhbmRsZTogeCwgaGFuZGxlSWQ6IFYsIGlzUGVyaW9kaWM6IEssIGlzUmVmcmVzaGFibGU6IFUgfSA9IE07XG4gICAgICAgICAgICAhSyAmJiAhVSAmJiAoViA/IGRlbGV0ZSBwW1ZdIDogeCAmJiAoeFtNZV0gPSBudWxsKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBYID0gRmUobiwgQ1swXSwgTSwgVCwgeSk7XG4gICAgICAgIGlmICghWClcbiAgICAgICAgICByZXR1cm4gWDtcbiAgICAgICAgY29uc3QgeyBoYW5kbGVJZDogbmUsIGhhbmRsZTogcmUsIGlzUmVmcmVzaGFibGU6IEosIGlzUGVyaW9kaWM6IGsgfSA9IFguZGF0YTtcbiAgICAgICAgaWYgKG5lKVxuICAgICAgICAgIHBbbmVdID0gWDtcbiAgICAgICAgZWxzZSBpZiAocmUgJiYgKHJlW01lXSA9IFgsIEogJiYgIWspKSB7XG4gICAgICAgICAgY29uc3QgZCA9IHJlLnJlZnJlc2g7XG4gICAgICAgICAgcmUucmVmcmVzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY29uc3QgeyB6b25lOiB4LCBzdGF0ZTogViB9ID0gWDtcbiAgICAgICAgICAgIHJldHVybiBWID09PSBcIm5vdFNjaGVkdWxlZFwiID8gKFguX3N0YXRlID0gXCJzY2hlZHVsZWRcIiwgeC5fdXBkYXRlVGFza0NvdW50KFgsIDEpKSA6IFYgPT09IFwicnVubmluZ1wiICYmIChYLl9zdGF0ZSA9IFwic2NoZWR1bGluZ1wiKSwgZC5jYWxsKHRoaXMpO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlID8/IG5lID8/IFg7XG4gICAgICB9IGVsc2VcbiAgICAgICAgcmV0dXJuIHcuYXBwbHkodCwgQyk7XG4gICAgfSksIGYgPSBFZSh0LCBhLCAodykgPT4gZnVuY3Rpb24oXywgQykge1xuICAgICAgY29uc3QgTSA9IENbMF07XG4gICAgICBsZXQgRjtcbiAgICAgIG50KE0pID8gKEYgPSBwW01dLCBkZWxldGUgcFtNXSkgOiAoRiA9IE0/LltNZV0sIEYgPyBNW01lXSA9IG51bGwgOiBGID0gTSksIEY/LnR5cGUgPyBGLmNhbmNlbEZuICYmIEYuem9uZS5jYW5jZWxUYXNrKEYpIDogdy5hcHBseSh0LCBDKTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBEdCh0LCBuKSB7XG4gICAgY29uc3QgeyBpc0Jyb3dzZXI6IGEsIGlzTWl4OiBlIH0gPSBuLmdldEdsb2JhbE9iamVjdHMoKTtcbiAgICBpZiAoIWEgJiYgIWUgfHwgIXQuY3VzdG9tRWxlbWVudHMgfHwgIShcImN1c3RvbUVsZW1lbnRzXCIgaW4gdCkpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgYyA9IFtcbiAgICAgIFwiY29ubmVjdGVkQ2FsbGJhY2tcIixcbiAgICAgIFwiZGlzY29ubmVjdGVkQ2FsbGJhY2tcIixcbiAgICAgIFwiYWRvcHRlZENhbGxiYWNrXCIsXG4gICAgICBcImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFja1wiLFxuICAgICAgXCJmb3JtQXNzb2NpYXRlZENhbGxiYWNrXCIsXG4gICAgICBcImZvcm1EaXNhYmxlZENhbGxiYWNrXCIsXG4gICAgICBcImZvcm1SZXNldENhbGxiYWNrXCIsXG4gICAgICBcImZvcm1TdGF0ZVJlc3RvcmVDYWxsYmFja1wiXG4gICAgXTtcbiAgICBuLnBhdGNoQ2FsbGJhY2tzKG4sIHQuY3VzdG9tRWxlbWVudHMsIFwiY3VzdG9tRWxlbWVudHNcIiwgXCJkZWZpbmVcIiwgYyk7XG4gIH1cbiAgZnVuY3Rpb24gU3QodCwgbikge1xuICAgIGlmIChab25lW24uc3ltYm9sKFwicGF0Y2hFdmVudFRhcmdldFwiKV0pXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgeyBldmVudE5hbWVzOiBhLCB6b25lU3ltYm9sRXZlbnROYW1lczogZSwgVFJVRV9TVFI6IGMsIEZBTFNFX1NUUjogZiwgWk9ORV9TWU1CT0xfUFJFRklYOiBwIH0gPSBuLmdldEdsb2JhbE9iamVjdHMoKTtcbiAgICBmb3IgKGxldCB5ID0gMDsgeSA8IGEubGVuZ3RoOyB5KyspIHtcbiAgICAgIGNvbnN0IHcgPSBhW3ldLCBfID0gdyArIGYsIEMgPSB3ICsgYywgTSA9IHAgKyBfLCBGID0gcCArIEM7XG4gICAgICBlW3ddID0ge30sIGVbd11bZl0gPSBNLCBlW3ddW2NdID0gRjtcbiAgICB9XG4gICAgY29uc3QgVCA9IHQuRXZlbnRUYXJnZXQ7XG4gICAgaWYgKCEoIVQgfHwgIVQucHJvdG90eXBlKSlcbiAgICAgIHJldHVybiBuLnBhdGNoRXZlbnRUYXJnZXQodCwgbiwgW1QgJiYgVC5wcm90b3R5cGVdKSwgdHJ1ZTtcbiAgfVxuICBmdW5jdGlvbiBPdCh0LCBuKSB7XG4gICAgbi5wYXRjaEV2ZW50UHJvdG90eXBlKHQsIG4pO1xuICB9XG4gIGZ1bmN0aW9uIGF0KHQsIG4sIGEpIHtcbiAgICBpZiAoIWEgfHwgYS5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gbjtcbiAgICBjb25zdCBlID0gYS5maWx0ZXIoKGYpID0+IGYudGFyZ2V0ID09PSB0KTtcbiAgICBpZiAoZS5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gbjtcbiAgICBjb25zdCBjID0gZVswXS5pZ25vcmVQcm9wZXJ0aWVzO1xuICAgIHJldHVybiBuLmZpbHRlcigoZikgPT4gYy5pbmRleE9mKGYpID09PSAtMSk7XG4gIH1cbiAgZnVuY3Rpb24gbHQodCwgbiwgYSwgZSkge1xuICAgIGlmICghdClcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBjID0gYXQodCwgbiwgYSk7XG4gICAgUWUodCwgYywgZSk7XG4gIH1cbiAgZnVuY3Rpb24gQmUodCkge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5maWx0ZXIoKG4pID0+IG4uc3RhcnRzV2l0aChcIm9uXCIpICYmIG4ubGVuZ3RoID4gMikubWFwKChuKSA9PiBuLnN1YnN0cmluZygyKSk7XG4gIH1cbiAgZnVuY3Rpb24gTnQodCwgbikge1xuICAgIGlmIChaZSAmJiAhJGUgfHwgWm9uZVt0LnN5bWJvbChcInBhdGNoRXZlbnRzXCIpXSlcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBhID0gbi5fX1pvbmVfaWdub3JlX29uX3Byb3BlcnRpZXM7XG4gICAgbGV0IGUgPSBbXTtcbiAgICBpZiAoemUpIHtcbiAgICAgIGNvbnN0IGMgPSB3aW5kb3c7XG4gICAgICBlID0gZS5jb25jYXQoW1xuICAgICAgICBcIkRvY3VtZW50XCIsXG4gICAgICAgIFwiU1ZHRWxlbWVudFwiLFxuICAgICAgICBcIkVsZW1lbnRcIixcbiAgICAgICAgXCJIVE1MRWxlbWVudFwiLFxuICAgICAgICBcIkhUTUxCb2R5RWxlbWVudFwiLFxuICAgICAgICBcIkhUTUxNZWRpYUVsZW1lbnRcIixcbiAgICAgICAgXCJIVE1MRnJhbWVTZXRFbGVtZW50XCIsXG4gICAgICAgIFwiSFRNTEZyYW1lRWxlbWVudFwiLFxuICAgICAgICBcIkhUTUxJRnJhbWVFbGVtZW50XCIsXG4gICAgICAgIFwiSFRNTE1hcnF1ZWVFbGVtZW50XCIsXG4gICAgICAgIFwiV29ya2VyXCJcbiAgICAgIF0pO1xuICAgICAgY29uc3QgZiA9IFtdO1xuICAgICAgbHQoYywgQmUoYyksIGEgJiYgYS5jb25jYXQoZiksIGllKGMpKTtcbiAgICB9XG4gICAgZSA9IGUuY29uY2F0KFtcbiAgICAgIFwiWE1MSHR0cFJlcXVlc3RcIixcbiAgICAgIFwiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldFwiLFxuICAgICAgXCJJREJJbmRleFwiLFxuICAgICAgXCJJREJSZXF1ZXN0XCIsXG4gICAgICBcIklEQk9wZW5EQlJlcXVlc3RcIixcbiAgICAgIFwiSURCRGF0YWJhc2VcIixcbiAgICAgIFwiSURCVHJhbnNhY3Rpb25cIixcbiAgICAgIFwiSURCQ3Vyc29yXCIsXG4gICAgICBcIldlYlNvY2tldFwiXG4gICAgXSk7XG4gICAgZm9yIChsZXQgYyA9IDA7IGMgPCBlLmxlbmd0aDsgYysrKSB7XG4gICAgICBjb25zdCBmID0gbltlW2NdXTtcbiAgICAgIGY/LnByb3RvdHlwZSAmJiBsdChmLnByb3RvdHlwZSwgQmUoZi5wcm90b3R5cGUpLCBhKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gWnQodCkge1xuICAgIHQuX19sb2FkX3BhdGNoKFwibGVnYWN5XCIsIChuKSA9PiB7XG4gICAgICBjb25zdCBhID0gblt0Ll9fc3ltYm9sX18oXCJsZWdhY3lQYXRjaFwiKV07XG4gICAgICBhICYmIGEoKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJ0aW1lcnNcIiwgKG4pID0+IHtcbiAgICAgIGNvbnN0IGUgPSBcImNsZWFyXCI7XG4gICAgICBiZShuLCBcInNldFwiLCBlLCBcIlRpbWVvdXRcIiksIGJlKG4sIFwic2V0XCIsIGUsIFwiSW50ZXJ2YWxcIiksIGJlKG4sIFwic2V0XCIsIGUsIFwiSW1tZWRpYXRlXCIpO1xuICAgIH0pLCB0Ll9fbG9hZF9wYXRjaChcInJlcXVlc3RBbmltYXRpb25GcmFtZVwiLCAobikgPT4ge1xuICAgICAgYmUobiwgXCJyZXF1ZXN0XCIsIFwiY2FuY2VsXCIsIFwiQW5pbWF0aW9uRnJhbWVcIiksIGJlKG4sIFwibW96UmVxdWVzdFwiLCBcIm1vekNhbmNlbFwiLCBcIkFuaW1hdGlvbkZyYW1lXCIpLCBiZShuLCBcIndlYmtpdFJlcXVlc3RcIiwgXCJ3ZWJraXRDYW5jZWxcIiwgXCJBbmltYXRpb25GcmFtZVwiKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJibG9ja2luZ1wiLCAobiwgYSkgPT4ge1xuICAgICAgY29uc3QgZSA9IFtcImFsZXJ0XCIsIFwicHJvbXB0XCIsIFwiY29uZmlybVwiXTtcbiAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgZS5sZW5ndGg7IGMrKykge1xuICAgICAgICBjb25zdCBmID0gZVtjXTtcbiAgICAgICAgRWUobiwgZiwgKHAsIFQsIHkpID0+IGZ1bmN0aW9uKHcsIF8pIHtcbiAgICAgICAgICByZXR1cm4gYS5jdXJyZW50LnJ1bihwLCBuLCBfLCB5KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSksIHQuX19sb2FkX3BhdGNoKFwiRXZlbnRUYXJnZXRcIiwgKG4sIGEsIGUpID0+IHtcbiAgICAgIE90KG4sIGUpLCBTdChuLCBlKTtcbiAgICAgIGNvbnN0IGMgPSBuLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7XG4gICAgICBjICYmIGMucHJvdG90eXBlICYmIGUucGF0Y2hFdmVudFRhcmdldChuLCBlLCBbYy5wcm90b3R5cGVdKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJNdXRhdGlvbk9ic2VydmVyXCIsIChuLCBhLCBlKSA9PiB7XG4gICAgICBTZShcIk11dGF0aW9uT2JzZXJ2ZXJcIiksIFNlKFwiV2ViS2l0TXV0YXRpb25PYnNlcnZlclwiKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJJbnRlcnNlY3Rpb25PYnNlcnZlclwiLCAobiwgYSwgZSkgPT4ge1xuICAgICAgU2UoXCJJbnRlcnNlY3Rpb25PYnNlcnZlclwiKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJGaWxlUmVhZGVyXCIsIChuLCBhLCBlKSA9PiB7XG4gICAgICBTZShcIkZpbGVSZWFkZXJcIik7XG4gICAgfSksIHQuX19sb2FkX3BhdGNoKFwib25fcHJvcGVydHlcIiwgKG4sIGEsIGUpID0+IHtcbiAgICAgIE50KGUsIG4pO1xuICAgIH0pLCB0Ll9fbG9hZF9wYXRjaChcImN1c3RvbUVsZW1lbnRzXCIsIChuLCBhLCBlKSA9PiB7XG4gICAgICBEdChuLCBlKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJYSFJcIiwgKG4sIGEpID0+IHtcbiAgICAgIHcobik7XG4gICAgICBjb25zdCBlID0gSChcInhoclRhc2tcIiksIGMgPSBIKFwieGhyU3luY1wiKSwgZiA9IEgoXCJ4aHJMaXN0ZW5lclwiKSwgcCA9IEgoXCJ4aHJTY2hlZHVsZWRcIiksIFQgPSBIKFwieGhyVVJMXCIpLCB5ID0gSChcInhockVycm9yQmVmb3JlU2NoZWR1bGVkXCIpO1xuICAgICAgZnVuY3Rpb24gdyhfKSB7XG4gICAgICAgIGNvbnN0IEMgPSBfLlhNTEh0dHBSZXF1ZXN0O1xuICAgICAgICBpZiAoIUMpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBNID0gQy5wcm90b3R5cGU7XG4gICAgICAgIGZ1bmN0aW9uIEYoUCkge1xuICAgICAgICAgIHJldHVybiBQW2VdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBYID0gTVtqZV0sIG5lID0gTVtIZV07XG4gICAgICAgIGlmICghWCkge1xuICAgICAgICAgIGNvbnN0IFAgPSBfLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7XG4gICAgICAgICAgaWYgKFApIHtcbiAgICAgICAgICAgIGNvbnN0IGIgPSBQLnByb3RvdHlwZTtcbiAgICAgICAgICAgIFggPSBiW2plXSwgbmUgPSBiW0hlXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmUgPSBcInJlYWR5c3RhdGVjaGFuZ2VcIiwgSiA9IFwic2NoZWR1bGVkXCI7XG4gICAgICAgIGZ1bmN0aW9uIGsoUCkge1xuICAgICAgICAgIGNvbnN0IGIgPSBQLmRhdGEsIEQgPSBiLnRhcmdldDtcbiAgICAgICAgICBEW3BdID0gZmFsc2UsIERbeV0gPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBvZSA9IERbZl07XG4gICAgICAgICAgWCB8fCAoWCA9IERbamVdLCBuZSA9IERbSGVdKSwgb2UgJiYgbmUuY2FsbChELCByZSwgb2UpO1xuICAgICAgICAgIGNvbnN0ICQgPSBEW2ZdID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKEQucmVhZHlTdGF0ZSA9PT0gRC5ET05FKVxuICAgICAgICAgICAgICBpZiAoIWIuYWJvcnRlZCAmJiBEW3BdICYmIFAuc3RhdGUgPT09IEopIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzID0gRFthLl9fc3ltYm9sX18oXCJsb2FkZmFsc2VcIildO1xuICAgICAgICAgICAgICAgIGlmIChELnN0YXR1cyAhPT0gMCAmJiBzICYmIHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IFAuaW52b2tlO1xuICAgICAgICAgICAgICAgICAgUC5pbnZva2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IERbYS5fX3N5bWJvbF9fKFwibG9hZGZhbHNlXCIpXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgRSA9IDA7IEUgPCByLmxlbmd0aDsgRSsrKVxuICAgICAgICAgICAgICAgICAgICAgIHJbRV0gPT09IFAgJiYgci5zcGxpY2UoRSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICFiLmFib3J0ZWQgJiYgUC5zdGF0ZSA9PT0gSiAmJiBpLmNhbGwoUCk7XG4gICAgICAgICAgICAgICAgICB9LCBzLnB1c2goUCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICAgICAgICBQLmludm9rZSgpO1xuICAgICAgICAgICAgICB9IGVsc2UgIWIuYWJvcnRlZCAmJiBEW3BdID09PSBmYWxzZSAmJiAoRFt5XSA9IHRydWUpO1xuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIFguY2FsbChELCByZSwgJCksIERbZV0gfHwgKERbZV0gPSBQKSwgWS5hcHBseShELCBiLmFyZ3MpLCBEW3BdID0gdHJ1ZSwgUDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBkKCkge1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHgoUCkge1xuICAgICAgICAgIGNvbnN0IGIgPSBQLmRhdGE7XG4gICAgICAgICAgcmV0dXJuIGIuYWJvcnRlZCA9IHRydWUsIE8uYXBwbHkoYi50YXJnZXQsIGIuYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgViA9IEVlKE0sIFwib3BlblwiLCAoKSA9PiBmdW5jdGlvbihQLCBiKSB7XG4gICAgICAgICAgcmV0dXJuIFBbY10gPSBiWzJdID09IGZhbHNlLCBQW1RdID0gYlsxXSwgVi5hcHBseShQLCBiKTtcbiAgICAgICAgfSksIEsgPSBcIlhNTEh0dHBSZXF1ZXN0LnNlbmRcIiwgVSA9IEgoXCJmZXRjaFRhc2tBYm9ydGluZ1wiKSwgZyA9IEgoXCJmZXRjaFRhc2tTY2hlZHVsaW5nXCIpLCBZID0gRWUoTSwgXCJzZW5kXCIsICgpID0+IGZ1bmN0aW9uKFAsIGIpIHtcbiAgICAgICAgICBpZiAoYS5jdXJyZW50W2ddID09PSB0cnVlIHx8IFBbY10pXG4gICAgICAgICAgICByZXR1cm4gWS5hcHBseShQLCBiKTtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBEID0ge1xuICAgICAgICAgICAgICB0YXJnZXQ6IFAsXG4gICAgICAgICAgICAgIHVybDogUFtUXSxcbiAgICAgICAgICAgICAgaXNQZXJpb2RpYzogZmFsc2UsXG4gICAgICAgICAgICAgIGFyZ3M6IGIsXG4gICAgICAgICAgICAgIGFib3J0ZWQ6IGZhbHNlXG4gICAgICAgICAgICB9LCBvZSA9IEZlKEssIGQsIEQsIGssIHgpO1xuICAgICAgICAgICAgUCAmJiBQW3ldID09PSB0cnVlICYmICFELmFib3J0ZWQgJiYgb2Uuc3RhdGUgPT09IEogJiYgb2UuaW52b2tlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSwgTyA9IEVlKE0sIFwiYWJvcnRcIiwgKCkgPT4gZnVuY3Rpb24oUCwgYikge1xuICAgICAgICAgIGNvbnN0IEQgPSBGKFApO1xuICAgICAgICAgIGlmIChEICYmIHR5cGVvZiBELnR5cGUgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgaWYgKEQuY2FuY2VsRm4gPT0gbnVsbCB8fCBELmRhdGEgJiYgRC5kYXRhLmFib3J0ZWQpXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIEQuem9uZS5jYW5jZWxUYXNrKEQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoYS5jdXJyZW50W1VdID09PSB0cnVlKVxuICAgICAgICAgICAgcmV0dXJuIE8uYXBwbHkoUCwgYik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pLCB0Ll9fbG9hZF9wYXRjaChcImdlb2xvY2F0aW9uXCIsIChuKSA9PiB7XG4gICAgICBuLm5hdmlnYXRvciAmJiBuLm5hdmlnYXRvci5nZW9sb2NhdGlvbiAmJiB5dChuLm5hdmlnYXRvci5nZW9sb2NhdGlvbiwgW1wiZ2V0Q3VycmVudFBvc2l0aW9uXCIsIFwid2F0Y2hQb3NpdGlvblwiXSk7XG4gICAgfSksIHQuX19sb2FkX3BhdGNoKFwiUHJvbWlzZVJlamVjdGlvbkV2ZW50XCIsIChuLCBhKSA9PiB7XG4gICAgICBmdW5jdGlvbiBlKGMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGYpIHtcbiAgICAgICAgICBjdChuLCBjKS5mb3JFYWNoKChUKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB5ID0gbi5Qcm9taXNlUmVqZWN0aW9uRXZlbnQ7XG4gICAgICAgICAgICBpZiAoeSkge1xuICAgICAgICAgICAgICBjb25zdCB3ID0gbmV3IHkoYywge1xuICAgICAgICAgICAgICAgIHByb21pc2U6IGYucHJvbWlzZSxcbiAgICAgICAgICAgICAgICByZWFzb246IGYucmVqZWN0aW9uXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBULmludm9rZSh3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIG4uUHJvbWlzZVJlamVjdGlvbkV2ZW50ICYmIChhW0goXCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlclwiKV0gPSBlKFwidW5oYW5kbGVkcmVqZWN0aW9uXCIpLCBhW0goXCJyZWplY3Rpb25IYW5kbGVkSGFuZGxlclwiKV0gPSBlKFwicmVqZWN0aW9uaGFuZGxlZFwiKSk7XG4gICAgfSksIHQuX19sb2FkX3BhdGNoKFwicXVldWVNaWNyb3Rhc2tcIiwgKG4sIGEsIGUpID0+IHtcbiAgICAgIHd0KG4sIGUpO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIEx0KHQpIHtcbiAgICB0Ll9fbG9hZF9wYXRjaChcIlpvbmVBd2FyZVByb21pc2VcIiwgKG4sIGEsIGUpID0+IHtcbiAgICAgIGNvbnN0IGMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBmID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuICAgICAgZnVuY3Rpb24gcChoKSB7XG4gICAgICAgIGlmIChoICYmIGgudG9TdHJpbmcgPT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpIHtcbiAgICAgICAgICBjb25zdCBsID0gaC5jb25zdHJ1Y3RvciAmJiBoLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgICAgcmV0dXJuIChsIHx8IFwiXCIpICsgXCI6IFwiICsgSlNPTi5zdHJpbmdpZnkoaCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGggPyBoLnRvU3RyaW5nKCkgOiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaCk7XG4gICAgICB9XG4gICAgICBjb25zdCBUID0gZS5zeW1ib2wsIHkgPSBbXSwgdyA9IG5bVChcIkRJU0FCTEVfV1JBUFBJTkdfVU5DQVVHSFRfUFJPTUlTRV9SRUpFQ1RJT05cIildICE9PSBmYWxzZSwgXyA9IFQoXCJQcm9taXNlXCIpLCBDID0gVChcInRoZW5cIiksIE0gPSBcIl9fY3JlYXRpb25UcmFjZV9fXCI7XG4gICAgICBlLm9uVW5oYW5kbGVkRXJyb3IgPSAoaCkgPT4ge1xuICAgICAgICBpZiAoZS5zaG93VW5jYXVnaHRFcnJvcigpKSB7XG4gICAgICAgICAgY29uc3QgbCA9IGggJiYgaC5yZWplY3Rpb247XG4gICAgICAgICAgbCA/IGNvbnNvbGUuZXJyb3IoXCJVbmhhbmRsZWQgUHJvbWlzZSByZWplY3Rpb246XCIsIGwgaW5zdGFuY2VvZiBFcnJvciA/IGwubWVzc2FnZSA6IGwsIFwiOyBab25lOlwiLCBoLnpvbmUubmFtZSwgXCI7IFRhc2s6XCIsIGgudGFzayAmJiBoLnRhc2suc291cmNlLCBcIjsgVmFsdWU6XCIsIGwsIGwgaW5zdGFuY2VvZiBFcnJvciA/IGwuc3RhY2sgOiB2b2lkIDApIDogY29uc29sZS5lcnJvcihoKTtcbiAgICAgICAgfVxuICAgICAgfSwgZS5taWNyb3Rhc2tEcmFpbkRvbmUgPSAoKSA9PiB7XG4gICAgICAgIGZvciAoOyB5Lmxlbmd0aDsgKSB7XG4gICAgICAgICAgY29uc3QgaCA9IHkuc2hpZnQoKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaC56b25lLnJ1bkd1YXJkZWQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyBoLnRocm93T3JpZ2luYWwgPyBoLnJlamVjdGlvbiA6IGg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIChsKSB7XG4gICAgICAgICAgICBYKGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IEYgPSBUKFwidW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkhhbmRsZXJcIik7XG4gICAgICBmdW5jdGlvbiBYKGgpIHtcbiAgICAgICAgZS5vblVuaGFuZGxlZEVycm9yKGgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGwgPSBhW0ZdO1xuICAgICAgICAgIHR5cGVvZiBsID09IFwiZnVuY3Rpb25cIiAmJiBsLmNhbGwodGhpcywgaCk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBuZShoKSB7XG4gICAgICAgIHJldHVybiBoICYmIHR5cGVvZiBoLnRoZW4gPT0gXCJmdW5jdGlvblwiO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcmUoaCkge1xuICAgICAgICByZXR1cm4gaDtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIEooaCkge1xuICAgICAgICByZXR1cm4gQS5yZWplY3QoaCk7XG4gICAgICB9XG4gICAgICBjb25zdCBrID0gVChcInN0YXRlXCIpLCBkID0gVChcInZhbHVlXCIpLCB4ID0gVChcImZpbmFsbHlcIiksIFYgPSBUKFwicGFyZW50UHJvbWlzZVZhbHVlXCIpLCBLID0gVChcInBhcmVudFByb21pc2VTdGF0ZVwiKSwgVSA9IFwiUHJvbWlzZS50aGVuXCIsIGcgPSBudWxsLCBZID0gdHJ1ZSwgTyA9IGZhbHNlLCBQID0gMDtcbiAgICAgIGZ1bmN0aW9uIGIoaCwgbCkge1xuICAgICAgICByZXR1cm4gKG8pID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgSShoLCBsLCBvKTtcbiAgICAgICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgICAgICBJKGgsIGZhbHNlLCB1KTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBEID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGxldCBoID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihvKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaCB8fCAoaCA9IHRydWUsIG8uYXBwbHkobnVsbCwgYXJndW1lbnRzKSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgIH0sIG9lID0gXCJQcm9taXNlIHJlc29sdmVkIHdpdGggaXRzZWxmXCIsICQgPSBUKFwiY3VycmVudFRhc2tUcmFjZVwiKTtcbiAgICAgIGZ1bmN0aW9uIEkoaCwgbCwgbykge1xuICAgICAgICBjb25zdCB1ID0gRCgpO1xuICAgICAgICBpZiAoaCA9PT0gbylcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKG9lKTtcbiAgICAgICAgaWYgKGhba10gPT09IGcpIHtcbiAgICAgICAgICBsZXQgdiA9IG51bGw7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBvID09IFwiZnVuY3Rpb25cIikgJiYgKHYgPSBvICYmIG8udGhlbik7XG4gICAgICAgICAgfSBjYXRjaCAoUikge1xuICAgICAgICAgICAgcmV0dXJuIHUoKCkgPT4ge1xuICAgICAgICAgICAgICBJKGgsIGZhbHNlLCBSKTtcbiAgICAgICAgICAgIH0pKCksIGg7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChsICE9PSBPICYmIG8gaW5zdGFuY2VvZiBBICYmIG8uaGFzT3duUHJvcGVydHkoaykgJiYgby5oYXNPd25Qcm9wZXJ0eShkKSAmJiBvW2tdICE9PSBnKVxuICAgICAgICAgICAgaShvKSwgSShoLCBvW2tdLCBvW2RdKTtcbiAgICAgICAgICBlbHNlIGlmIChsICE9PSBPICYmIHR5cGVvZiB2ID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHYuY2FsbChvLCB1KGIoaCwgbCkpLCB1KGIoaCwgITEpKSk7XG4gICAgICAgICAgICB9IGNhdGNoIChSKSB7XG4gICAgICAgICAgICAgIHUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIEkoaCwgZmFsc2UsIFIpO1xuICAgICAgICAgICAgICB9KSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaFtrXSA9IGw7XG4gICAgICAgICAgICBjb25zdCBSID0gaFtkXTtcbiAgICAgICAgICAgIGlmIChoW2RdID0gbywgaFt4XSA9PT0geCAmJiBsID09PSBZICYmIChoW2tdID0gaFtLXSwgaFtkXSA9IGhbVl0pLCBsID09PSBPICYmIG8gaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgICBjb25zdCBtID0gYS5jdXJyZW50VGFzayAmJiBhLmN1cnJlbnRUYXNrLmRhdGEgJiYgYS5jdXJyZW50VGFzay5kYXRhW01dO1xuICAgICAgICAgICAgICBtICYmIGYobywgJCwge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgUi5sZW5ndGg7IClcbiAgICAgICAgICAgICAgcihoLCBSW20rK10sIFJbbSsrXSwgUlttKytdLCBSW20rK10pO1xuICAgICAgICAgICAgaWYgKFIubGVuZ3RoID09IDAgJiYgbCA9PSBPKSB7XG4gICAgICAgICAgICAgIGhba10gPSBQO1xuICAgICAgICAgICAgICBsZXQgbSA9IG87XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5jYXVnaHQgKGluIHByb21pc2UpOiBcIiArIHAobykgKyAobyAmJiBvLnN0YWNrID8gYFxuYCArIG8uc3RhY2sgOiBcIlwiKSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKE4pIHtcbiAgICAgICAgICAgICAgICBtID0gTjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB3ICYmIChtLnRocm93T3JpZ2luYWwgPSB0cnVlKSwgbS5yZWplY3Rpb24gPSBvLCBtLnByb21pc2UgPSBoLCBtLnpvbmUgPSBhLmN1cnJlbnQsIG0udGFzayA9IGEuY3VycmVudFRhc2ssIHkucHVzaChtKSwgZS5zY2hlZHVsZU1pY3JvVGFzaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHMgPSBUKFwicmVqZWN0aW9uSGFuZGxlZEhhbmRsZXJcIik7XG4gICAgICBmdW5jdGlvbiBpKGgpIHtcbiAgICAgICAgaWYgKGhba10gPT09IFApIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbCA9IGFbc107XG4gICAgICAgICAgICBsICYmIHR5cGVvZiBsID09IFwiZnVuY3Rpb25cIiAmJiBsLmNhbGwodGhpcywgeyByZWplY3Rpb246IGhbZF0sIHByb21pc2U6IGggfSk7XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgfVxuICAgICAgICAgIGhba10gPSBPO1xuICAgICAgICAgIGZvciAobGV0IGwgPSAwOyBsIDwgeS5sZW5ndGg7IGwrKylcbiAgICAgICAgICAgIGggPT09IHlbbF0ucHJvbWlzZSAmJiB5LnNwbGljZShsLCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcihoLCBsLCBvLCB1LCB2KSB7XG4gICAgICAgIGkoaCk7XG4gICAgICAgIGNvbnN0IFIgPSBoW2tdLCBtID0gUiA/IHR5cGVvZiB1ID09IFwiZnVuY3Rpb25cIiA/IHUgOiByZSA6IHR5cGVvZiB2ID09IFwiZnVuY3Rpb25cIiA/IHYgOiBKO1xuICAgICAgICBsLnNjaGVkdWxlTWljcm9UYXNrKFUsICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgTiA9IGhbZF0sIFogPSAhIW8gJiYgeCA9PT0gb1t4XTtcbiAgICAgICAgICAgIFogJiYgKG9bVl0gPSBOLCBvW0tdID0gUik7XG4gICAgICAgICAgICBjb25zdCBMID0gbC5ydW4obSwgdm9pZCAwLCBaICYmIG0gIT09IEogJiYgbSAhPT0gcmUgPyBbXSA6IFtOXSk7XG4gICAgICAgICAgICBJKG8sICEwLCBMKTtcbiAgICAgICAgICB9IGNhdGNoIChOKSB7XG4gICAgICAgICAgICBJKG8sIGZhbHNlLCBOKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIG8pO1xuICAgICAgfVxuICAgICAgY29uc3QgRSA9IFwiZnVuY3Rpb24gWm9uZUF3YXJlUHJvbWlzZSgpIHsgW25hdGl2ZSBjb2RlXSB9XCIsIEcgPSBmdW5jdGlvbigpIHtcbiAgICAgIH0sIGNlID0gbi5BZ2dyZWdhdGVFcnJvcjtcbiAgICAgIGNsYXNzIEEge1xuICAgICAgICBzdGF0aWMgdG9TdHJpbmcoKSB7XG4gICAgICAgICAgcmV0dXJuIEU7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIHJlc29sdmUobCkge1xuICAgICAgICAgIHJldHVybiBsIGluc3RhbmNlb2YgQSA/IGwgOiBJKG5ldyB0aGlzKG51bGwpLCBZLCBsKTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgcmVqZWN0KGwpIHtcbiAgICAgICAgICByZXR1cm4gSShuZXcgdGhpcyhudWxsKSwgTywgbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIHdpdGhSZXNvbHZlcnMoKSB7XG4gICAgICAgICAgY29uc3QgbCA9IHt9O1xuICAgICAgICAgIHJldHVybiBsLnByb21pc2UgPSBuZXcgQSgobywgdSkgPT4ge1xuICAgICAgICAgICAgbC5yZXNvbHZlID0gbywgbC5yZWplY3QgPSB1O1xuICAgICAgICAgIH0pLCBsO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBhbnkobCkge1xuICAgICAgICAgIGlmICghbCB8fCB0eXBlb2YgbFtTeW1ib2wuaXRlcmF0b3JdICE9IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgY2UoW10sIFwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWRcIikpO1xuICAgICAgICAgIGNvbnN0IG8gPSBbXTtcbiAgICAgICAgICBsZXQgdSA9IDA7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAobGV0IG0gb2YgbClcbiAgICAgICAgICAgICAgdSsrLCBvLnB1c2goQS5yZXNvbHZlKG0pKTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgY2UoW10sIFwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWRcIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodSA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgY2UoW10sIFwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWRcIikpO1xuICAgICAgICAgIGxldCB2ID0gZmFsc2U7XG4gICAgICAgICAgY29uc3QgUiA9IFtdO1xuICAgICAgICAgIHJldHVybiBuZXcgQSgobSwgTikgPT4ge1xuICAgICAgICAgICAgZm9yIChsZXQgWiA9IDA7IFogPCBvLmxlbmd0aDsgWisrKVxuICAgICAgICAgICAgICBvW1pdLnRoZW4oKEwpID0+IHtcbiAgICAgICAgICAgICAgICB2IHx8ICh2ID0gdHJ1ZSwgbShMKSk7XG4gICAgICAgICAgICAgIH0sIChMKSA9PiB7XG4gICAgICAgICAgICAgICAgUi5wdXNoKEwpLCB1LS0sIHUgPT09IDAgJiYgKHYgPSB0cnVlLCBOKG5ldyBjZShSLCBcIkFsbCBwcm9taXNlcyB3ZXJlIHJlamVjdGVkXCIpKSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyByYWNlKGwpIHtcbiAgICAgICAgICBsZXQgbywgdSwgdiA9IG5ldyB0aGlzKChOLCBaKSA9PiB7XG4gICAgICAgICAgICBvID0gTiwgdSA9IFo7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZnVuY3Rpb24gUihOKSB7XG4gICAgICAgICAgICBvKE4pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiBtKE4pIHtcbiAgICAgICAgICAgIHUoTik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IE4gb2YgbClcbiAgICAgICAgICAgIG5lKE4pIHx8IChOID0gdGhpcy5yZXNvbHZlKE4pKSwgTi50aGVuKFIsIG0pO1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBhbGwobCkge1xuICAgICAgICAgIHJldHVybiBBLmFsbFdpdGhDYWxsYmFjayhsKTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgYWxsU2V0dGxlZChsKSB7XG4gICAgICAgICAgcmV0dXJuICh0aGlzICYmIHRoaXMucHJvdG90eXBlIGluc3RhbmNlb2YgQSA/IHRoaXMgOiBBKS5hbGxXaXRoQ2FsbGJhY2sobCwge1xuICAgICAgICAgICAgdGhlbkNhbGxiYWNrOiAodSkgPT4gKHsgc3RhdHVzOiBcImZ1bGZpbGxlZFwiLCB2YWx1ZTogdSB9KSxcbiAgICAgICAgICAgIGVycm9yQ2FsbGJhY2s6ICh1KSA9PiAoeyBzdGF0dXM6IFwicmVqZWN0ZWRcIiwgcmVhc29uOiB1IH0pXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIGFsbFdpdGhDYWxsYmFjayhsLCBvKSB7XG4gICAgICAgICAgbGV0IHUsIHYsIFIgPSBuZXcgdGhpcygoTCwgVykgPT4ge1xuICAgICAgICAgICAgdSA9IEwsIHYgPSBXO1xuICAgICAgICAgIH0pLCBtID0gMiwgTiA9IDA7XG4gICAgICAgICAgY29uc3QgWiA9IFtdO1xuICAgICAgICAgIGZvciAobGV0IEwgb2YgbCkge1xuICAgICAgICAgICAgbmUoTCkgfHwgKEwgPSB0aGlzLnJlc29sdmUoTCkpO1xuICAgICAgICAgICAgY29uc3QgVyA9IE47XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBMLnRoZW4oKHEpID0+IHtcbiAgICAgICAgICAgICAgICBaW1ddID0gbyA/IG8udGhlbkNhbGxiYWNrKHEpIDogcSwgbS0tLCBtID09PSAwICYmIHUoWik7XG4gICAgICAgICAgICAgIH0sIChxKSA9PiB7XG4gICAgICAgICAgICAgICAgbyA/IChaW1ddID0gby5lcnJvckNhbGxiYWNrKHEpLCBtLS0sIG0gPT09IDAgJiYgdShaKSkgOiB2KHEpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKHEpIHtcbiAgICAgICAgICAgICAgdihxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG0rKywgTisrO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbSAtPSAyLCBtID09PSAwICYmIHUoWiksIFI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3RydWN0b3IobCkge1xuICAgICAgICAgIGNvbnN0IG8gPSB0aGlzO1xuICAgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBBKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk11c3QgYmUgYW4gaW5zdGFuY2VvZiBQcm9taXNlLlwiKTtcbiAgICAgICAgICBvW2tdID0gZywgb1tkXSA9IFtdO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB1ID0gRCgpO1xuICAgICAgICAgICAgbCAmJiBsKHUoYihvLCBZKSksIHUoYihvLCBPKSkpO1xuICAgICAgICAgIH0gY2F0Y2ggKHUpIHtcbiAgICAgICAgICAgIEkobywgZmFsc2UsIHUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgICAgICAgcmV0dXJuIFwiUHJvbWlzZVwiO1xuICAgICAgICB9XG4gICAgICAgIGdldCBbU3ltYm9sLnNwZWNpZXNdKCkge1xuICAgICAgICAgIHJldHVybiBBO1xuICAgICAgICB9XG4gICAgICAgIHRoZW4obCwgbykge1xuICAgICAgICAgIGxldCB1ID0gdGhpcy5jb25zdHJ1Y3Rvcj8uW1N5bWJvbC5zcGVjaWVzXTtcbiAgICAgICAgICAoIXUgfHwgdHlwZW9mIHUgIT0gXCJmdW5jdGlvblwiKSAmJiAodSA9IHRoaXMuY29uc3RydWN0b3IgfHwgQSk7XG4gICAgICAgICAgY29uc3QgdiA9IG5ldyB1KEcpLCBSID0gYS5jdXJyZW50O1xuICAgICAgICAgIHJldHVybiB0aGlzW2tdID09IGcgPyB0aGlzW2RdLnB1c2goUiwgdiwgbCwgbykgOiByKHRoaXMsIFIsIHYsIGwsIG8pLCB2O1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoKGwpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy50aGVuKG51bGwsIGwpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkobCkge1xuICAgICAgICAgIGxldCBvID0gdGhpcy5jb25zdHJ1Y3Rvcj8uW1N5bWJvbC5zcGVjaWVzXTtcbiAgICAgICAgICAoIW8gfHwgdHlwZW9mIG8gIT0gXCJmdW5jdGlvblwiKSAmJiAobyA9IEEpO1xuICAgICAgICAgIGNvbnN0IHUgPSBuZXcgbyhHKTtcbiAgICAgICAgICB1W3hdID0geDtcbiAgICAgICAgICBjb25zdCB2ID0gYS5jdXJyZW50O1xuICAgICAgICAgIHJldHVybiB0aGlzW2tdID09IGcgPyB0aGlzW2RdLnB1c2godiwgdSwgbCwgbCkgOiByKHRoaXMsIHYsIHUsIGwsIGwpLCB1O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBBLnJlc29sdmUgPSBBLnJlc29sdmUsIEEucmVqZWN0ID0gQS5yZWplY3QsIEEucmFjZSA9IEEucmFjZSwgQS5hbGwgPSBBLmFsbDtcbiAgICAgIGNvbnN0IGdlID0gbltfXSA9IG4uUHJvbWlzZTtcbiAgICAgIG4uUHJvbWlzZSA9IEE7XG4gICAgICBjb25zdCB5ZSA9IFQoXCJ0aGVuUGF0Y2hlZFwiKTtcbiAgICAgIGZ1bmN0aW9uIHNlKGgpIHtcbiAgICAgICAgY29uc3QgbCA9IGgucHJvdG90eXBlLCBvID0gYyhsLCBcInRoZW5cIik7XG4gICAgICAgIGlmIChvICYmIChvLndyaXRhYmxlID09PSBmYWxzZSB8fCAhby5jb25maWd1cmFibGUpKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdSA9IGwudGhlbjtcbiAgICAgICAgbFtDXSA9IHUsIGgucHJvdG90eXBlLnRoZW4gPSBmdW5jdGlvbih2LCBSKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBBKChOLCBaKSA9PiB7XG4gICAgICAgICAgICB1LmNhbGwodGhpcywgTiwgWik7XG4gICAgICAgICAgfSkudGhlbih2LCBSKTtcbiAgICAgICAgfSwgaFt5ZV0gPSB0cnVlO1xuICAgICAgfVxuICAgICAgZS5wYXRjaFRoZW4gPSBzZTtcbiAgICAgIGZ1bmN0aW9uIENlKGgpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGwsIG8pIHtcbiAgICAgICAgICBsZXQgdSA9IGguYXBwbHkobCwgbyk7XG4gICAgICAgICAgaWYgKHUgaW5zdGFuY2VvZiBBKVxuICAgICAgICAgICAgcmV0dXJuIHU7XG4gICAgICAgICAgbGV0IHYgPSB1LmNvbnN0cnVjdG9yO1xuICAgICAgICAgIHJldHVybiB2W3llXSB8fCBzZSh2KSwgdTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBnZSAmJiAoc2UoZ2UpLCBFZShuLCBcImZldGNoXCIsIChoKSA9PiBDZShoKSkpLCBQcm9taXNlW2EuX19zeW1ib2xfXyhcInVuY2F1Z2h0UHJvbWlzZUVycm9yc1wiKV0gPSB5LCBBO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIE10KHQpIHtcbiAgICB0Ll9fbG9hZF9wYXRjaChcInRvU3RyaW5nXCIsIChuKSA9PiB7XG4gICAgICBjb25zdCBhID0gRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLCBlID0gSChcIk9yaWdpbmFsRGVsZWdhdGVcIiksIGMgPSBIKFwiUHJvbWlzZVwiKSwgZiA9IEgoXCJFcnJvclwiKSwgcCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgY29uc3QgXyA9IHRoaXNbZV07XG4gICAgICAgICAgaWYgKF8pXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIF8gPT0gXCJmdW5jdGlvblwiID8gYS5jYWxsKF8pIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKF8pO1xuICAgICAgICAgIGlmICh0aGlzID09PSBQcm9taXNlKSB7XG4gICAgICAgICAgICBjb25zdCBDID0gbltjXTtcbiAgICAgICAgICAgIGlmIChDKVxuICAgICAgICAgICAgICByZXR1cm4gYS5jYWxsKEMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcyA9PT0gRXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnN0IEMgPSBuW2ZdO1xuICAgICAgICAgICAgaWYgKEMpXG4gICAgICAgICAgICAgIHJldHVybiBhLmNhbGwoQyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhLmNhbGwodGhpcyk7XG4gICAgICB9O1xuICAgICAgcFtlXSA9IGEsIEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IHA7XG4gICAgICBjb25zdCBUID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZywgeSA9IFwiW29iamVjdCBQcm9taXNlXVwiO1xuICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIFByb21pc2UgPT0gXCJmdW5jdGlvblwiICYmIHRoaXMgaW5zdGFuY2VvZiBQcm9taXNlID8geSA6IFQuY2FsbCh0aGlzKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gSXQodCwgbiwgYSwgZSwgYykge1xuICAgIGNvbnN0IGYgPSBab25lLl9fc3ltYm9sX18oZSk7XG4gICAgaWYgKG5bZl0pXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgcCA9IG5bZl0gPSBuW2VdO1xuICAgIG5bZV0gPSBmdW5jdGlvbihULCB5LCB3KSB7XG4gICAgICByZXR1cm4geSAmJiB5LnByb3RvdHlwZSAmJiBjLmZvckVhY2goZnVuY3Rpb24oXykge1xuICAgICAgICBjb25zdCBDID0gYCR7YX0uJHtlfTo6YCArIF8sIE0gPSB5LnByb3RvdHlwZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoTS5oYXNPd25Qcm9wZXJ0eShfKSkge1xuICAgICAgICAgICAgY29uc3QgRiA9IHQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE0sIF8pO1xuICAgICAgICAgICAgRiAmJiBGLnZhbHVlID8gKEYudmFsdWUgPSB0LndyYXBXaXRoQ3VycmVudFpvbmUoRi52YWx1ZSwgQyksIHQuX3JlZGVmaW5lUHJvcGVydHkoeS5wcm90b3R5cGUsIF8sIEYpKSA6IE1bX10gJiYgKE1bX10gPSB0LndyYXBXaXRoQ3VycmVudFpvbmUoTVtfXSwgQykpO1xuICAgICAgICAgIH0gZWxzZSBNW19dICYmIChNW19dID0gdC53cmFwV2l0aEN1cnJlbnRab25lKE1bX10sIEMpKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgIH1cbiAgICAgIH0pLCBwLmNhbGwobiwgVCwgeSwgdyk7XG4gICAgfSwgdC5hdHRhY2hPcmlnaW5Ub1BhdGNoZWQobltlXSwgcCk7XG4gIH1cbiAgZnVuY3Rpb24gQXQodCkge1xuICAgIHQuX19sb2FkX3BhdGNoKFwidXRpbFwiLCAobiwgYSwgZSkgPT4ge1xuICAgICAgY29uc3QgYyA9IEJlKG4pO1xuICAgICAgZS5wYXRjaE9uUHJvcGVydGllcyA9IFFlLCBlLnBhdGNoTWV0aG9kID0gRWUsIGUuYmluZEFyZ3VtZW50cyA9IFZlLCBlLnBhdGNoTWFjcm9UYXNrID0gdnQ7XG4gICAgICBjb25zdCBmID0gYS5fX3N5bWJvbF9fKFwiQkxBQ0tfTElTVEVEX0VWRU5UU1wiKSwgcCA9IGEuX19zeW1ib2xfXyhcIlVOUEFUQ0hFRF9FVkVOVFNcIik7XG4gICAgICBuW3BdICYmIChuW2ZdID0gbltwXSksIG5bZl0gJiYgKGFbZl0gPSBhW3BdID0gbltmXSksIGUucGF0Y2hFdmVudFByb3RvdHlwZSA9IFJ0LCBlLnBhdGNoRXZlbnRUYXJnZXQgPSBQdCwgZS5pc0lFT3JFZGdlID0gYnQsIGUuT2JqZWN0RGVmaW5lUHJvcGVydHkgPSB0ZSwgZS5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBlZSwgZS5PYmplY3RDcmVhdGUgPSBmZSwgZS5BcnJheVNsaWNlID0ga2UsIGUucGF0Y2hDbGFzcyA9IFNlLCBlLndyYXBXaXRoQ3VycmVudFpvbmUgPSB4ZSwgZS5maWx0ZXJQcm9wZXJ0aWVzID0gYXQsIGUuYXR0YWNoT3JpZ2luVG9QYXRjaGVkID0gcGUsIGUuX3JlZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHksIGUucGF0Y2hDYWxsYmFja3MgPSBJdCwgZS5nZXRHbG9iYWxPYmplY3RzID0gKCkgPT4gKHtcbiAgICAgICAgZ2xvYmFsU291cmNlczogcnQsXG4gICAgICAgIHpvbmVTeW1ib2xFdmVudE5hbWVzOiBhZSxcbiAgICAgICAgZXZlbnROYW1lczogYyxcbiAgICAgICAgaXNCcm93c2VyOiB6ZSxcbiAgICAgICAgaXNNaXg6ICRlLFxuICAgICAgICBpc05vZGU6IFplLFxuICAgICAgICBUUlVFX1NUUjogX2UsXG4gICAgICAgIEZBTFNFX1NUUjogVGUsXG4gICAgICAgIFpPTkVfU1lNQk9MX1BSRUZJWDogd2UsXG4gICAgICAgIEFERF9FVkVOVF9MSVNURU5FUl9TVFI6IHZlLFxuICAgICAgICBSRU1PVkVfRVZFTlRfTElTVEVORVJfU1RSOiBBZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24ganQodCkge1xuICAgIEx0KHQpLCBNdCh0KSwgQXQodCk7XG4gIH1cbiAgY29uc3QgdXQgPSB6KCk7XG4gIHJldHVybiBqdCh1dCksIFp0KHV0KSwgcHQ7XG59XG5GdCgpO1xuXG5leHBvcnQgeyB6dCBhcyBab25lQ29udGV4dE1hbmFnZXIgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLFVBQVU7QUFFeEIsU0FBU0MsR0FBR0MsR0FBRztBQUNiLFNBQU9BLE1BQU0sV0FBV0EsSUFBSSxDQUFDLElBQUksT0FBT0EsRUFBRSxvQkFBb0IsY0FBYyxPQUFPQSxFQUFFLHVCQUF1QjtBQUM5RztBQUNBLElBQUlDLEtBQUssbUJBQW1CQztBQUFBO0FBQUEsR0FFekIsV0FBVztBQUNWLGFBQVNGLElBQUk7QUFDWCxXQUFLLFdBQVcsSUFBTyxLQUFLLGVBQWU7QUFBQSxJQUM3QztBQUNBLFdBQU9BLEVBQUUsVUFBVSx5QkFBeUIsU0FBU0csR0FBRztBQUN0RCxhQUFPQSxLQUFLQSxFQUFFLElBQUlGLEVBQUUsS0FBS0g7QUFBQSxJQUMzQixHQUFHRSxFQUFFLFVBQVUsZ0JBQWdCLFNBQVNHLEdBQUdDLEdBQUc7QUFDNUMsVUFBSUMsSUFBSSxNQUFNLEtBQUssV0FBVztBQUM1QixpQkFBUyxLQUFLLE1BQU1DLEtBQUssQ0FBQyxHQUFHQyxLQUFLLEdB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LG9CQUFvQixPQUFPLGdCQUFnQkEsRUFBRSxpQkFBaUJxRyxJQUFJckcsRUFBRSxtQkFBbUIsT0FBTztBQUFBLFFBQzdhLGVBQWU7QUFBQSxRQUNmLHNCQUFzQjBEO0FBQUEsUUFDdEIsWUFBWW5DO0FBQUEsUUFDWixXQUFXdUI7QUFBQSxRQUNYLE9BQU9DO0FBQUEsUUFDUCxRQUFRRjtBQUFBLFFBQ1IsVUFBVTtBQUFBLFFBQ1YsV0FBV2I7QUFBQSxRQUNYLG9CQUFvQkM7QUFBQSxRQUNwQix3QkFBd0J6QztBQUFBLFFBQ3hCLDJCQUEyQnFDO0FBQUEsTUFDN0I7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNIO0FBQ0EsV0FBUzBFLEdBQUczRyxHQUFHO0FBQ2IsSUFBQXFHLEdBQUdyRyxDQUFDLEdBQUd1RyxHQUFHdkcsQ0FBQyxHQUFHMEcsR0FBRzFHLENBQUM7QUFBQSxFQUNwQjtBQUNBLFFBQU0sS0FBS1IsRUFBRTtBQUNiLFNBQU9tSCxHQUFHLEVBQUUsR0FBR1YsR0FBRyxFQUFFLEdBQUdwRztBQUN6QjtBQUNBRSxHQUFHOyIsCiAgIm5hbWVzIjogWyJRaSIsICJ4dCIsICJqIiwgIkV0IiwgInp0IiwgIlMiLCAiQiIsICJ6IiwgImllIiwgImZlIiwgImtlIiwgInZlIiwgInB0IiwgImd0IiwgIkZ0IiwgInQiLCAiSSIsICJhIiwgInMiLCAiZSIsICJiIiwgIkQiLCAiaSIsICJFIiwgIlAiLCAiZiIsICJHIiwgImNlIiwgIkEiLCAiSiIsICJZIiwgImciLCAiZ2UiLCAieCIsICJkIiwgInllIiwgIksiLCAiayIsICJDZSIsICJwIiwgIlUiLCAiViIsICJjIiwgIlQiLCAiQyIsICJNIiwgIkYiLCAiJCIsICJBZSIsICJqZSIsICJIZSIsICJUZSIsICJ3ZSIsICJ4ZSIsICJGZSIsICJIIiwgIk5lIiwgIkRlIiwgIm10IiwgIlZlIiwgInl0IiwgIlhlIiwgInBlIiwgIlllIiwgIlplIiwgInplIiwgIiRlIiwgIkxlIiwgImt0IiwgIkplIiwgIktlIiwgIlNlIiwgIkVlIiwgInZ0IiwgIkdlIiwgImJ0IiwgIkN0IiwgImFlIiwgIml0IiwgIlB0IiwgInUiLCAidiIsICJSIiwgImgiLCAiTiIsICJaIiwgIkwiLCAibWUiLCAiaGUiLCAiUGUiLCAiZGUiLCAiVWUiLCAiZnQiLCAiSHQiLCAiV2UiLCAiaHQiLCAiUmUiLCAiZHQiLCAiSWUiLCAiVHQiLCAiT2UiLCAiY3QiLCAiUnQiLCAid3QiLCAiTWUiLCAiYmUiLCAiRHQiLCAiU3QiLCAiT3QiLCAiYXQiLCAiQmUiLCAiTnQiLCAiWnQiLCAiciIsICJ5IiwgInciLCAiTHQiLCAibyIsICJNdCIsICJfIiwgIkl0IiwgIkF0IiwgImp0Il0KfQo=
|
|
1613
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtQlowQm9leFotIX57MDBkfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGEgYXMgYXMgfSBmcm9tICcuL2luZGV4LSF+ezAwN31+LmpzJztcblxuZnVuY3Rpb24geHQoaikge1xuICByZXR1cm4gaiA9PT0gdm9pZCAwICYmIChqID0ge30pLCB0eXBlb2Ygai5hZGRFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygai5yZW1vdmVFdmVudExpc3RlbmVyID09IFwiZnVuY3Rpb25cIjtcbn1cbnZhciBFdCA9IFwiT1RfWk9ORV9DT05URVhUXCIsIHp0ID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBqKCkge1xuICAgICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNlLCB0aGlzLl96b25lQ291bnRlciA9IDA7XG4gICAgfVxuICAgIHJldHVybiBqLnByb3RvdHlwZS5fYWN0aXZlQ29udGV4dEZyb21ab25lID0gZnVuY3Rpb24oUykge1xuICAgICAgcmV0dXJuIFMgJiYgUy5nZXQoRXQpIHx8IGFzO1xuICAgIH0sIGoucHJvdG90eXBlLl9iaW5kRnVuY3Rpb24gPSBmdW5jdGlvbihTLCBCKSB7XG4gICAgICB2YXIgeiA9IHRoaXMsIGVlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGZvciAodmFyIHRlID0gdGhpcywgaWUgPSBbXSwgZmUgPSAwOyBmZSA8IGFyZ3VtZW50cy5sZW5ndGg7IGZlKyspXG4gICAgICAgICAgaWVbZmVdID0gYXJndW1lbnRzW2ZlXTtcbiAgICAgICAgcmV0dXJuIHoud2l0aChTLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gQi5hcHBseSh0ZSwgaWUpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGVlLCBcImxlbmd0aFwiLCB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IEIubGVuZ3RoXG4gICAgICB9KSwgZWU7XG4gICAgfSwgai5wcm90b3R5cGUuX2JpbmRMaXN0ZW5lciA9IGZ1bmN0aW9uKFMsIEIpIHtcbiAgICAgIHZhciB6ID0gQjtcbiAgICAgIHJldHVybiB6Ll9fb3RfbGlzdGVuZXJzICE9PSB2b2lkIDAgfHwgKHouX19vdF9saXN0ZW5lcnMgPSB7fSwgdHlwZW9mIHouYWRkRXZlbnRMaXN0ZW5lciA9PSBcImZ1bmN0aW9uXCIgJiYgKHouYWRkRXZlbnRMaXN0ZW5lciA9IHRoaXMuX3BhdGNoQWRkRXZlbnRMaXN0ZW5lcih6LCB6LmFkZEV2ZW50TGlzdGVuZXIsIFMpKSwgdHlwZW9mIHoucmVtb3ZlRXZlbnRMaXN0ZW5lciA9PSBcImZ1bmN0aW9uXCIgJiYgKHoucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHRoaXMuX3BhdGNoUmVtb3ZlRXZlbnRMaXN0ZW5lcih6LCB6LnJlbW92ZUV2ZW50TGlzdGVuZXIpKSksIEI7XG4gICAgfSwgai5wcm90b3R5cGUuX2NyZWF0ZVpvbmVOYW1lID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLl96b25lQ291bnRlcisrO1xuICAgICAgdmFyIFMgPSBNYXRoLnJhbmRvbSgpO1xuICAgICAgcmV0dXJuIHRoaXMuX3pvbmVDb3VudGVyICsgXCItXCIgKyBTO1xuICAgIH0sIGoucHJvdG90eXBlLl9jcmVhdGVab25lID0gZnVuY3Rpb24oUywgQikge1xuICAgICAgdmFyIHo7XG4gICAgICByZXR1cm4gWm9uZS5jdXJyZW50LmZvcmsoe1xuICAgICAgICBuYW1lOiBTLFxuICAgICAgICBwcm9wZXJ0aWVzOiAoeiA9IHt9LCB6W0V0XSA9IEIsIHopXG4gICAgICB9KTtcbiAgICB9LCBqLnByb3RvdHlwZS5fZ2V0QWN0aXZlWm9uZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFpvbmUuY3VycmVudDtcbiAgICB9LCBqLnByb3RvdHlwZS5fcGF0Y2hBZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24oUywgQiwgeikge1xuICAgICAgdmFyIGVlID0gdGhpcztcbiAgICAgIHJldHVybiBmdW5jdGlvbih0ZSwgaWUsIGZlKSB7XG4gICAgICAgIFMuX19vdF9saXN0ZW5lcnMgPT09IHZvaWQgMCAmJiAoUy5fX290X2xpc3RlbmVycyA9IHt9KTtcbiAgICAgICAgdmFyIGtlID0gUy5fX290X2xpc3RlbmVyc1t0ZV07XG4gICAgICAgIGtlID09PSB2b2lkIDAgJiYgKGtlID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCksIFMuX19vdF9saXN0ZW5lcnNbdGVdID0ga2UpO1xuICAgICAgICB2YXIgdmUgPSBlZS5iaW5kKHosIGllKTtcbiAgICAgICAgcmV0dXJuIGtlLnNldChpZSwgdmUpLCBCLmNhbGwodGhpcywgdGUsIHZlLCBmZSk7XG4gICAgICB9O1xuICAgIH0sIGoucHJvdG90eXBlLl9wYXRjaFJlbW92ZUV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihTLCBCKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oeiwgZWUpIHtcbiAgICAgICAgaWYgKFMuX19vdF9saXN0ZW5lcnMgPT09IHZvaWQgMCB8fCBTLl9fb3RfbGlzdGVuZXJzW3pdID09PSB2b2lkIDApXG4gICAgICAgICAgcmV0dXJuIEIuY2FsbCh0aGlzLCB6LCBlZSk7XG4gICAgICAgIHZhciB0ZSA9IFMuX19vdF9saXN0ZW5lcnNbel0sIGllID0gdGUuZ2V0KGVlKTtcbiAgICAgICAgcmV0dXJuIHRlLmRlbGV0ZShlZSksIEIuY2FsbCh0aGlzLCB6LCBpZSB8fCBlZSk7XG4gICAgICB9O1xuICAgIH0sIGoucHJvdG90eXBlLmFjdGl2ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKVxuICAgICAgICByZXR1cm4gYXM7XG4gICAgICB2YXIgUyA9IHRoaXMuX2dldEFjdGl2ZVpvbmUoKSwgQiA9IHRoaXMuX2FjdGl2ZUNvbnRleHRGcm9tWm9uZShTKTtcbiAgICAgIHJldHVybiBCIHx8IGFzO1xuICAgIH0sIGoucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbihTLCBCKSB7XG4gICAgICByZXR1cm4gUyA9PT0gdm9pZCAwICYmIChTID0gdGhpcy5hY3RpdmUoKSksIHR5cGVvZiBCID09IFwiZnVuY3Rpb25cIiA/IHRoaXMuX2JpbmRGdW5jdGlvbihTLCBCKSA6ICh4dChCKSAmJiB0aGlzLl9iaW5kTGlzdGVuZXIoUywgQiksIEIpO1xuICAgIH0sIGoucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9lbmFibGVkID0gZmFsc2UsIHRoaXM7XG4gICAgfSwgai5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZW5hYmxlZCA9IHRydWUsIHRoaXM7XG4gICAgfSwgai5wcm90b3R5cGUud2l0aCA9IGZ1bmN0aW9uKFMsIEIsIHopIHtcbiAgICAgIGZvciAodmFyIGVlID0gW10sIHRlID0gMzsgdGUgPCBhcmd1bWVudHMubGVuZ3RoOyB0ZSsrKVxuICAgICAgICBlZVt0ZSAtIDNdID0gYXJndW1lbnRzW3RlXTtcbiAgICAgIHZhciBpZSA9IHRoaXMuX2NyZWF0ZVpvbmVOYW1lKCksIGZlID0gdGhpcy5fY3JlYXRlWm9uZShpZSwgUyk7XG4gICAgICByZXR1cm4gZmUucnVuKEIsIHosIGVlKTtcbiAgICB9LCBqO1xuICB9KSgpXG4pLCBwdCA9IHt9LCBndDtcbmZ1bmN0aW9uIEZ0KCkge1xuICBpZiAoZ3QpIHJldHVybiBwdDtcbiAgZ3QgPSAxO1xuICAvKipcbiAgICogQGxpY2Vuc2UgQW5ndWxhciB2PHVua25vd24+XG4gICAqIChjKSAyMDEwLTIwMjUgR29vZ2xlIExMQy4gaHR0cHM6Ly9hbmd1bGFyLmlvL1xuICAgKiBMaWNlbnNlOiBNSVRcbiAgICovXG4gIGNvbnN0IGogPSBnbG9iYWxUaGlzO1xuICBmdW5jdGlvbiBTKHQpIHtcbiAgICByZXR1cm4gKGouX19ab25lX3N5bWJvbF9wcmVmaXggfHwgXCJfX3pvbmVfc3ltYm9sX19cIikgKyB0O1xuICB9XG4gIGZ1bmN0aW9uIEIoKSB7XG4gICAgY29uc3QgdCA9IGoucGVyZm9ybWFuY2U7XG4gICAgZnVuY3Rpb24gbihJKSB7XG4gICAgICB0ICYmIHQubWFyayAmJiB0Lm1hcmsoSSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGEoSSwgcykge1xuICAgICAgdCAmJiB0Lm1lYXN1cmUgJiYgdC5tZWFzdXJlKEksIHMpO1xuICAgIH1cbiAgICBuKFwiWm9uZVwiKTtcbiAgICBjbGFzcyBlIHtcbiAgICAgIHN0YXRpYyBfX3N5bWJvbF9fID0gUztcbiAgICAgIHN0YXRpYyBhc3NlcnRab25lUGF0Y2hlZCgpIHtcbiAgICAgICAgaWYgKGouUHJvbWlzZSAhPT0gTy5ab25lQXdhcmVQcm9taXNlKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlpvbmUuanMgaGFzIGRldGVjdGVkIHRoYXQgWm9uZUF3YXJlUHJvbWlzZSBgKHdpbmRvd3xnbG9iYWwpLlByb21pc2VgIGhhcyBiZWVuIG92ZXJ3cml0dGVuLlxcbk1vc3QgbGlrZWx5IGNhdXNlIGlzIHRoYXQgYSBQcm9taXNlIHBvbHlmaWxsIGhhcyBiZWVuIGxvYWRlZCBhZnRlciBab25lLmpzIChQb2x5ZmlsbGluZyBQcm9taXNlIGFwaSBpcyBub3QgbmVjZXNzYXJ5IHdoZW4gem9uZS5qcyBpcyBsb2FkZWQuIElmIHlvdSBtdXN0IGxvYWQgb25lLCBkbyBzbyBiZWZvcmUgbG9hZGluZyB6b25lLmpzLilcIik7XG4gICAgICB9XG4gICAgICBzdGF0aWMgZ2V0IHJvb3QoKSB7XG4gICAgICAgIGxldCBzID0gZS5jdXJyZW50O1xuICAgICAgICBmb3IgKDsgcy5wYXJlbnQ7IClcbiAgICAgICAgICBzID0gcy5wYXJlbnQ7XG4gICAgICAgIHJldHVybiBzO1xuICAgICAgfVxuICAgICAgc3RhdGljIGdldCBjdXJyZW50KCkge1xuICAgICAgICByZXR1cm4gYi56b25lO1xuICAgICAgfVxuICAgICAgc3RhdGljIGdldCBjdXJyZW50VGFzaygpIHtcbiAgICAgICAgcmV0dXJuIEQ7XG4gICAgICB9XG4gICAgICBzdGF0aWMgX19sb2FkX3BhdGNoKHMsIGksIHIgPSBmYWxzZSkge1xuICAgICAgICBpZiAoTy5oYXNPd25Qcm9wZXJ0eShzKSkge1xuICAgICAgICAgIGNvbnN0IEUgPSBqW1MoXCJmb3JjZUR1cGxpY2F0ZVpvbmVDaGVja1wiKV0gPT09IHRydWU7XG4gICAgICAgICAgaWYgKCFyICYmIEUpXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcIkFscmVhZHkgbG9hZGVkIHBhdGNoOiBcIiArIHMpO1xuICAgICAgICB9IGVsc2UgaWYgKCFqW1wiX19ab25lX2Rpc2FibGVfXCIgKyBzXSkge1xuICAgICAgICAgIGNvbnN0IEUgPSBcIlpvbmU6XCIgKyBzO1xuICAgICAgICAgIG4oRSksIE9bc10gPSBpKGosIGUsIFApLCBhKEUsIEUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBnZXQgcGFyZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50O1xuICAgICAgfVxuICAgICAgZ2V0IG5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICAgICAgfVxuICAgICAgX3BhcmVudDtcbiAgICAgIF9uYW1lO1xuICAgICAgX3Byb3BlcnRpZXM7XG4gICAgICBfem9uZURlbGVnYXRlO1xuICAgICAgY29uc3RydWN0b3IocywgaSkge1xuICAgICAgICB0aGlzLl9wYXJlbnQgPSBzLCB0aGlzLl9uYW1lID0gaSA/IGkubmFtZSB8fCBcInVubmFtZWRcIiA6IFwiPHJvb3Q+XCIsIHRoaXMuX3Byb3BlcnRpZXMgPSBpICYmIGkucHJvcGVydGllcyB8fCB7fSwgdGhpcy5fem9uZURlbGVnYXRlID0gbmV3IGYodGhpcywgdGhpcy5fcGFyZW50ICYmIHRoaXMuX3BhcmVudC5fem9uZURlbGVnYXRlLCBpKTtcbiAgICAgIH1cbiAgICAgIGdldChzKSB7XG4gICAgICAgIGNvbnN0IGkgPSB0aGlzLmdldFpvbmVXaXRoKHMpO1xuICAgICAgICBpZiAoaSlcbiAgICAgICAgICByZXR1cm4gaS5fcHJvcGVydGllc1tzXTtcbiAgICAgIH1cbiAgICAgIGdldFpvbmVXaXRoKHMpIHtcbiAgICAgICAgbGV0IGkgPSB0aGlzO1xuICAgICAgICBmb3IgKDsgaTsgKSB7XG4gICAgICAgICAgaWYgKGkuX3Byb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocykpXG4gICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICBpID0gaS5fcGFyZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgZm9yayhzKSB7XG4gICAgICAgIGlmICghcylcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJab25lU3BlYyByZXF1aXJlZCFcIik7XG4gICAgICAgIHJldHVybiB0aGlzLl96b25lRGVsZWdhdGUuZm9yayh0aGlzLCBzKTtcbiAgICAgIH1cbiAgICAgIHdyYXAocywgaSkge1xuICAgICAgICBpZiAodHlwZW9mIHMgIT0gXCJmdW5jdGlvblwiKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGluZyBmdW5jdGlvbiBnb3Q6IFwiICsgcyk7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLl96b25lRGVsZWdhdGUuaW50ZXJjZXB0KHRoaXMsIHMsIGkpLCBFID0gdGhpcztcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBFLnJ1bkd1YXJkZWQociwgdGhpcywgYXJndW1lbnRzLCBpKTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJ1bihzLCBpLCByLCBFKSB7XG4gICAgICAgIGIgPSB7IHBhcmVudDogYiwgem9uZTogdGhpcyB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsIHMsIGksIHIsIEUpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGIgPSBiLnBhcmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcnVuR3VhcmRlZChzLCBpID0gbnVsbCwgciwgRSkge1xuICAgICAgICBiID0geyBwYXJlbnQ6IGIsIHpvbmU6IHRoaXMgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcywgcywgaSwgciwgRSk7XG4gICAgICAgICAgfSBjYXRjaCAoRykge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLCBHKSlcbiAgICAgICAgICAgICAgdGhyb3cgRztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgYiA9IGIucGFyZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBydW5UYXNrKHMsIGksIHIpIHtcbiAgICAgICAgaWYgKHMuem9uZSAhPSB0aGlzKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgdGFzayBjYW4gb25seSBiZSBydW4gaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVhdGlvbjogXCIgKyAocy56b25lIHx8IHJlKS5uYW1lICsgXCI7IEV4ZWN1dGlvbjogXCIgKyB0aGlzLm5hbWUgKyBcIilcIik7XG4gICAgICAgIGNvbnN0IEUgPSBzLCB7IHR5cGU6IEcsIGRhdGE6IHsgaXNQZXJpb2RpYzogY2UgPSBmYWxzZSwgaXNSZWZyZXNoYWJsZTogQSA9IGZhbHNlIH0gPSB7fSB9ID0gcztcbiAgICAgICAgaWYgKHMuc3RhdGUgPT09IEogJiYgKEcgPT09IFkgfHwgRyA9PT0gZykpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBnZSA9IHMuc3RhdGUgIT0geDtcbiAgICAgICAgZ2UgJiYgRS5fdHJhbnNpdGlvblRvKHgsIGQpO1xuICAgICAgICBjb25zdCB5ZSA9IEQ7XG4gICAgICAgIEQgPSBFLCBiID0geyBwYXJlbnQ6IGIsIHpvbmU6IHRoaXMgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBHID09IGcgJiYgcy5kYXRhICYmICFjZSAmJiAhQSAmJiAocy5jYW5jZWxGbiA9IHZvaWQgMCk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlVGFzayh0aGlzLCBFLCBpLCByKTtcbiAgICAgICAgICB9IGNhdGNoIChzZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLCBzZSkpXG4gICAgICAgICAgICAgIHRocm93IHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBjb25zdCBzZSA9IHMuc3RhdGU7XG4gICAgICAgICAgaWYgKHNlICE9PSBKICYmIHNlICE9PSBLKVxuICAgICAgICAgICAgaWYgKEcgPT0gWSB8fCBjZSB8fCBBICYmIHNlID09PSBrKVxuICAgICAgICAgICAgICBnZSAmJiBFLl90cmFuc2l0aW9uVG8oZCwgeCwgayk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgQ2UgPSBFLl96b25lRGVsZWdhdGVzO1xuICAgICAgICAgICAgICB0aGlzLl91cGRhdGVUYXNrQ291bnQoRSwgLTEpLCBnZSAmJiBFLl90cmFuc2l0aW9uVG8oSiwgeCwgSiksIEEgJiYgKEUuX3pvbmVEZWxlZ2F0ZXMgPSBDZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgYiA9IGIucGFyZW50LCBEID0geWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNjaGVkdWxlVGFzayhzKSB7XG4gICAgICAgIGlmIChzLnpvbmUgJiYgcy56b25lICE9PSB0aGlzKSB7XG4gICAgICAgICAgbGV0IHIgPSB0aGlzO1xuICAgICAgICAgIGZvciAoOyByOyApIHtcbiAgICAgICAgICAgIGlmIChyID09PSBzLnpvbmUpXG4gICAgICAgICAgICAgIHRocm93IEVycm9yKGBjYW4gbm90IHJlc2NoZWR1bGUgdGFzayB0byAke3RoaXMubmFtZX0gd2hpY2ggaXMgZGVzY2VuZGFudHMgb2YgdGhlIG9yaWdpbmFsIHpvbmUgJHtzLnpvbmUubmFtZX1gKTtcbiAgICAgICAgICAgIHIgPSByLnBhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcy5fdHJhbnNpdGlvblRvKGssIEopO1xuICAgICAgICBjb25zdCBpID0gW107XG4gICAgICAgIHMuX3pvbmVEZWxlZ2F0ZXMgPSBpLCBzLl96b25lID0gdGhpcztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzID0gdGhpcy5fem9uZURlbGVnYXRlLnNjaGVkdWxlVGFzayh0aGlzLCBzKTtcbiAgICAgICAgfSBjYXRjaCAocikge1xuICAgICAgICAgIHRocm93IHMuX3RyYW5zaXRpb25UbyhLLCBrLCBKKSwgdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsIHIpLCByO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzLl96b25lRGVsZWdhdGVzID09PSBpICYmIHRoaXMuX3VwZGF0ZVRhc2tDb3VudChzLCAxKSwgcy5zdGF0ZSA9PSBrICYmIHMuX3RyYW5zaXRpb25UbyhkLCBrKSwgcztcbiAgICAgIH1cbiAgICAgIHNjaGVkdWxlTWljcm9UYXNrKHMsIGksIHIsIEUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVUYXNrKG5ldyBwKFUsIHMsIGksIHIsIEUsIHZvaWQgMCkpO1xuICAgICAgfVxuICAgICAgc2NoZWR1bGVNYWNyb1Rhc2socywgaSwgciwgRSwgRykge1xuICAgICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IHAoZywgcywgaSwgciwgRSwgRykpO1xuICAgICAgfVxuICAgICAgc2NoZWR1bGVFdmVudFRhc2socywgaSwgciwgRSwgRykge1xuICAgICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IHAoWSwgcywgaSwgciwgRSwgRykpO1xuICAgICAgfVxuICAgICAgY2FuY2VsVGFzayhzKSB7XG4gICAgICAgIGlmIChzLnpvbmUgIT0gdGhpcylcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIHRhc2sgY2FuIG9ubHkgYmUgY2FuY2VsbGVkIGluIHRoZSB6b25lIG9mIGNyZWF0aW9uISAoQ3JlYXRpb246IFwiICsgKHMuem9uZSB8fCByZSkubmFtZSArIFwiOyBFeGVjdXRpb246IFwiICsgdGhpcy5uYW1lICsgXCIpXCIpO1xuICAgICAgICBpZiAoIShzLnN0YXRlICE9PSBkICYmIHMuc3RhdGUgIT09IHgpKSB7XG4gICAgICAgICAgcy5fdHJhbnNpdGlvblRvKFYsIGQsIHgpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLl96b25lRGVsZWdhdGUuY2FuY2VsVGFzayh0aGlzLCBzKTtcbiAgICAgICAgICB9IGNhdGNoIChpKSB7XG4gICAgICAgICAgICB0aHJvdyBzLl90cmFuc2l0aW9uVG8oSywgViksIHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLCBpKSwgaTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZVRhc2tDb3VudChzLCAtMSksIHMuX3RyYW5zaXRpb25UbyhKLCBWKSwgcy5ydW5Db3VudCA9IC0xLCBzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfdXBkYXRlVGFza0NvdW50KHMsIGkpIHtcbiAgICAgICAgY29uc3QgciA9IHMuX3pvbmVEZWxlZ2F0ZXM7XG4gICAgICAgIGkgPT0gLTEgJiYgKHMuX3pvbmVEZWxlZ2F0ZXMgPSBudWxsKTtcbiAgICAgICAgZm9yIChsZXQgRSA9IDA7IEUgPCByLmxlbmd0aDsgRSsrKVxuICAgICAgICAgIHJbRV0uX3VwZGF0ZVRhc2tDb3VudChzLnR5cGUsIGkpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBjID0ge1xuICAgICAgbmFtZTogXCJcIixcbiAgICAgIG9uSGFzVGFzazogKEksIHMsIGksIHIpID0+IEkuaGFzVGFzayhpLCByKSxcbiAgICAgIG9uU2NoZWR1bGVUYXNrOiAoSSwgcywgaSwgcikgPT4gSS5zY2hlZHVsZVRhc2soaSwgciksXG4gICAgICBvbkludm9rZVRhc2s6IChJLCBzLCBpLCByLCBFLCBHKSA9PiBJLmludm9rZVRhc2soaSwgciwgRSwgRyksXG4gICAgICBvbkNhbmNlbFRhc2s6IChJLCBzLCBpLCByKSA9PiBJLmNhbmNlbFRhc2soaSwgcilcbiAgICB9O1xuICAgIGNsYXNzIGYge1xuICAgICAgZ2V0IHpvbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl96b25lO1xuICAgICAgfVxuICAgICAgX3pvbmU7XG4gICAgICBfdGFza0NvdW50cyA9IHtcbiAgICAgICAgbWljcm9UYXNrOiAwLFxuICAgICAgICBtYWNyb1Rhc2s6IDAsXG4gICAgICAgIGV2ZW50VGFzazogMFxuICAgICAgfTtcbiAgICAgIF9wYXJlbnREZWxlZ2F0ZTtcbiAgICAgIF9mb3JrRGxndDtcbiAgICAgIF9mb3JrWlM7XG4gICAgICBfZm9ya0N1cnJab25lO1xuICAgICAgX2ludGVyY2VwdERsZ3Q7XG4gICAgICBfaW50ZXJjZXB0WlM7XG4gICAgICBfaW50ZXJjZXB0Q3VyclpvbmU7XG4gICAgICBfaW52b2tlRGxndDtcbiAgICAgIF9pbnZva2VaUztcbiAgICAgIF9pbnZva2VDdXJyWm9uZTtcbiAgICAgIF9oYW5kbGVFcnJvckRsZ3Q7XG4gICAgICBfaGFuZGxlRXJyb3JaUztcbiAgICAgIF9oYW5kbGVFcnJvckN1cnJab25lO1xuICAgICAgX3NjaGVkdWxlVGFza0RsZ3Q7XG4gICAgICBfc2NoZWR1bGVUYXNrWlM7XG4gICAgICBfc2NoZWR1bGVUYXNrQ3VyclpvbmU7XG4gICAgICBfaW52b2tlVGFza0RsZ3Q7XG4gICAgICBfaW52b2tlVGFza1pTO1xuICAgICAgX2ludm9rZVRhc2tDdXJyWm9uZTtcbiAgICAgIF9jYW5jZWxUYXNrRGxndDtcbiAgICAgIF9jYW5jZWxUYXNrWlM7XG4gICAgICBfY2FuY2VsVGFza0N1cnJab25lO1xuICAgICAgX2hhc1Rhc2tEbGd0O1xuICAgICAgX2hhc1Rhc2tEbGd0T3duZXI7XG4gICAgICBfaGFzVGFza1pTO1xuICAgICAgX2hhc1Rhc2tDdXJyWm9uZTtcbiAgICAgIGNvbnN0cnVjdG9yKHMsIGksIHIpIHtcbiAgICAgICAgdGhpcy5fem9uZSA9IHMsIHRoaXMuX3BhcmVudERlbGVnYXRlID0gaSwgdGhpcy5fZm9ya1pTID0gciAmJiAociAmJiByLm9uRm9yayA/IHIgOiBpLl9mb3JrWlMpLCB0aGlzLl9mb3JrRGxndCA9IHIgJiYgKHIub25Gb3JrID8gaSA6IGkuX2ZvcmtEbGd0KSwgdGhpcy5fZm9ya0N1cnJab25lID0gciAmJiAoci5vbkZvcmsgPyB0aGlzLl96b25lIDogaS5fZm9ya0N1cnJab25lKSwgdGhpcy5faW50ZXJjZXB0WlMgPSByICYmIChyLm9uSW50ZXJjZXB0ID8gciA6IGkuX2ludGVyY2VwdFpTKSwgdGhpcy5faW50ZXJjZXB0RGxndCA9IHIgJiYgKHIub25JbnRlcmNlcHQgPyBpIDogaS5faW50ZXJjZXB0RGxndCksIHRoaXMuX2ludGVyY2VwdEN1cnJab25lID0gciAmJiAoci5vbkludGVyY2VwdCA/IHRoaXMuX3pvbmUgOiBpLl9pbnRlcmNlcHRDdXJyWm9uZSksIHRoaXMuX2ludm9rZVpTID0gciAmJiAoci5vbkludm9rZSA/IHIgOiBpLl9pbnZva2VaUyksIHRoaXMuX2ludm9rZURsZ3QgPSByICYmIChyLm9uSW52b2tlID8gaSA6IGkuX2ludm9rZURsZ3QpLCB0aGlzLl9pbnZva2VDdXJyWm9uZSA9IHIgJiYgKHIub25JbnZva2UgPyB0aGlzLl96b25lIDogaS5faW52b2tlQ3VyclpvbmUpLCB0aGlzLl9oYW5kbGVFcnJvclpTID0gciAmJiAoci5vbkhhbmRsZUVycm9yID8gciA6IGkuX2hhbmRsZUVycm9yWlMpLCB0aGlzLl9oYW5kbGVFcnJvckRsZ3QgPSByICYmIChyLm9uSGFuZGxlRXJyb3IgPyBpIDogaS5faGFuZGxlRXJyb3JEbGd0KSwgdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZSA9IHIgJiYgKHIub25IYW5kbGVFcnJvciA/IHRoaXMuX3pvbmUgOiBpLl9oYW5kbGVFcnJvckN1cnJab25lKSwgdGhpcy5fc2NoZWR1bGVUYXNrWlMgPSByICYmIChyLm9uU2NoZWR1bGVUYXNrID8gciA6IGkuX3NjaGVkdWxlVGFza1pTKSwgdGhpcy5fc2NoZWR1bGVUYXNrRGxndCA9IHIgJiYgKHIub25TY2hlZHVsZVRhc2sgPyBpIDogaS5fc2NoZWR1bGVUYXNrRGxndCksIHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lID0gciAmJiAoci5vblNjaGVkdWxlVGFzayA/IHRoaXMuX3pvbmUgOiBpLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSksIHRoaXMuX2ludm9rZVRhc2taUyA9IHIgJiYgKHIub25JbnZva2VUYXNrID8gciA6IGkuX2ludm9rZVRhc2taUyksIHRoaXMuX2ludm9rZVRhc2tEbGd0ID0gciAmJiAoci5vbkludm9rZVRhc2sgPyBpIDogaS5faW52b2tlVGFza0RsZ3QpLCB0aGlzLl9pbnZva2VUYXNrQ3VyclpvbmUgPSByICYmIChyLm9uSW52b2tlVGFzayA/IHRoaXMuX3pvbmUgOiBpLl9pbnZva2VUYXNrQ3VyclpvbmUpLCB0aGlzLl9jYW5jZWxUYXNrWlMgPSByICYmIChyLm9uQ2FuY2VsVGFzayA/IHIgOiBpLl9jYW5jZWxUYXNrWlMpLCB0aGlzLl9jYW5jZWxUYXNrRGxndCA9IHIgJiYgKHIub25DYW5jZWxUYXNrID8gaSA6IGkuX2NhbmNlbFRhc2tEbGd0KSwgdGhpcy5fY2FuY2VsVGFza0N1cnJab25lID0gciAmJiAoci5vbkNhbmNlbFRhc2sgPyB0aGlzLl96b25lIDogaS5fY2FuY2VsVGFza0N1cnJab25lKSwgdGhpcy5faGFzVGFza1pTID0gbnVsbCwgdGhpcy5faGFzVGFza0RsZ3QgPSBudWxsLCB0aGlzLl9oYXNUYXNrRGxndE93bmVyID0gbnVsbCwgdGhpcy5faGFzVGFza0N1cnJab25lID0gbnVsbDtcbiAgICAgICAgY29uc3QgRSA9IHIgJiYgci5vbkhhc1Rhc2ssIEcgPSBpICYmIGkuX2hhc1Rhc2taUztcbiAgICAgICAgKEUgfHwgRykgJiYgKHRoaXMuX2hhc1Rhc2taUyA9IEUgPyByIDogYywgdGhpcy5faGFzVGFza0RsZ3QgPSBpLCB0aGlzLl9oYXNUYXNrRGxndE93bmVyID0gdGhpcywgdGhpcy5faGFzVGFza0N1cnJab25lID0gdGhpcy5fem9uZSwgci5vblNjaGVkdWxlVGFzayB8fCAodGhpcy5fc2NoZWR1bGVUYXNrWlMgPSBjLCB0aGlzLl9zY2hlZHVsZVRhc2tEbGd0ID0gaSwgdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmUgPSB0aGlzLl96b25lKSwgci5vbkludm9rZVRhc2sgfHwgKHRoaXMuX2ludm9rZVRhc2taUyA9IGMsIHRoaXMuX2ludm9rZVRhc2tEbGd0ID0gaSwgdGhpcy5faW52b2tlVGFza0N1cnJab25lID0gdGhpcy5fem9uZSksIHIub25DYW5jZWxUYXNrIHx8ICh0aGlzLl9jYW5jZWxUYXNrWlMgPSBjLCB0aGlzLl9jYW5jZWxUYXNrRGxndCA9IGksIHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSA9IHRoaXMuX3pvbmUpKTtcbiAgICAgIH1cbiAgICAgIGZvcmsocywgaSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZm9ya1pTID8gdGhpcy5fZm9ya1pTLm9uRm9yayh0aGlzLl9mb3JrRGxndCwgdGhpcy56b25lLCBzLCBpKSA6IG5ldyBlKHMsIGkpO1xuICAgICAgfVxuICAgICAgaW50ZXJjZXB0KHMsIGksIHIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludGVyY2VwdFpTID8gdGhpcy5faW50ZXJjZXB0WlMub25JbnRlcmNlcHQodGhpcy5faW50ZXJjZXB0RGxndCwgdGhpcy5faW50ZXJjZXB0Q3VyclpvbmUsIHMsIGksIHIpIDogaTtcbiAgICAgIH1cbiAgICAgIGludm9rZShzLCBpLCByLCBFLCBHKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZva2VaUyA/IHRoaXMuX2ludm9rZVpTLm9uSW52b2tlKHRoaXMuX2ludm9rZURsZ3QsIHRoaXMuX2ludm9rZUN1cnJab25lLCBzLCBpLCByLCBFLCBHKSA6IGkuYXBwbHkociwgRSk7XG4gICAgICB9XG4gICAgICBoYW5kbGVFcnJvcihzLCBpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYW5kbGVFcnJvclpTID8gdGhpcy5faGFuZGxlRXJyb3JaUy5vbkhhbmRsZUVycm9yKHRoaXMuX2hhbmRsZUVycm9yRGxndCwgdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZSwgcywgaSkgOiB0cnVlO1xuICAgICAgfVxuICAgICAgc2NoZWR1bGVUYXNrKHMsIGkpIHtcbiAgICAgICAgbGV0IHIgPSBpO1xuICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVUYXNrWlMpXG4gICAgICAgICAgdGhpcy5faGFzVGFza1pTICYmIHIuX3pvbmVEZWxlZ2F0ZXMucHVzaCh0aGlzLl9oYXNUYXNrRGxndE93bmVyKSwgciA9IHRoaXMuX3NjaGVkdWxlVGFza1pTLm9uU2NoZWR1bGVUYXNrKHRoaXMuX3NjaGVkdWxlVGFza0RsZ3QsIHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lLCBzLCBpKSwgciB8fCAociA9IGkpO1xuICAgICAgICBlbHNlIGlmIChpLnNjaGVkdWxlRm4pXG4gICAgICAgICAgaS5zY2hlZHVsZUZuKGkpO1xuICAgICAgICBlbHNlIGlmIChpLnR5cGUgPT0gVSlcbiAgICAgICAgICBYKGkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGFzayBpcyBtaXNzaW5nIHNjaGVkdWxlRm4uXCIpO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH1cbiAgICAgIGludm9rZVRhc2socywgaSwgciwgRSkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlVGFza1pTID8gdGhpcy5faW52b2tlVGFza1pTLm9uSW52b2tlVGFzayh0aGlzLl9pbnZva2VUYXNrRGxndCwgdGhpcy5faW52b2tlVGFza0N1cnJab25lLCBzLCBpLCByLCBFKSA6IGkuY2FsbGJhY2suYXBwbHkociwgRSk7XG4gICAgICB9XG4gICAgICBjYW5jZWxUYXNrKHMsIGkpIHtcbiAgICAgICAgbGV0IHI7XG4gICAgICAgIGlmICh0aGlzLl9jYW5jZWxUYXNrWlMpXG4gICAgICAgICAgciA9IHRoaXMuX2NhbmNlbFRhc2taUy5vbkNhbmNlbFRhc2sodGhpcy5fY2FuY2VsVGFza0RsZ3QsIHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSwgcywgaSk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmICghaS5jYW5jZWxGbilcbiAgICAgICAgICAgIHRocm93IEVycm9yKFwiVGFzayBpcyBub3QgY2FuY2VsYWJsZVwiKTtcbiAgICAgICAgICByID0gaS5jYW5jZWxGbihpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH1cbiAgICAgIGhhc1Rhc2socywgaSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuX2hhc1Rhc2taUyAmJiB0aGlzLl9oYXNUYXNrWlMub25IYXNUYXNrKHRoaXMuX2hhc1Rhc2tEbGd0LCB0aGlzLl9oYXNUYXNrQ3VyclpvbmUsIHMsIGkpO1xuICAgICAgICB9IGNhdGNoIChyKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihzLCByKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgX3VwZGF0ZVRhc2tDb3VudChzLCBpKSB7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLl90YXNrQ291bnRzLCBFID0gcltzXSwgRyA9IHJbc10gPSBFICsgaTtcbiAgICAgICAgaWYgKEcgPCAwKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1vcmUgdGFza3MgZXhlY3V0ZWQgdGhlbiB3ZXJlIHNjaGVkdWxlZC5cIik7XG4gICAgICAgIGlmIChFID09IDAgfHwgRyA9PSAwKSB7XG4gICAgICAgICAgY29uc3QgY2UgPSB7XG4gICAgICAgICAgICBtaWNyb1Rhc2s6IHIubWljcm9UYXNrID4gMCxcbiAgICAgICAgICAgIG1hY3JvVGFzazogci5tYWNyb1Rhc2sgPiAwLFxuICAgICAgICAgICAgZXZlbnRUYXNrOiByLmV2ZW50VGFzayA+IDAsXG4gICAgICAgICAgICBjaGFuZ2U6IHNcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuaGFzVGFzayh0aGlzLl96b25lLCBjZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY2xhc3MgcCB7XG4gICAgICB0eXBlO1xuICAgICAgc291cmNlO1xuICAgICAgaW52b2tlO1xuICAgICAgY2FsbGJhY2s7XG4gICAgICBkYXRhO1xuICAgICAgc2NoZWR1bGVGbjtcbiAgICAgIGNhbmNlbEZuO1xuICAgICAgX3pvbmUgPSBudWxsO1xuICAgICAgcnVuQ291bnQgPSAwO1xuICAgICAgX3pvbmVEZWxlZ2F0ZXMgPSBudWxsO1xuICAgICAgX3N0YXRlID0gXCJub3RTY2hlZHVsZWRcIjtcbiAgICAgIGNvbnN0cnVjdG9yKHMsIGksIHIsIEUsIEcsIGNlKSB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPSBzLCB0aGlzLnNvdXJjZSA9IGksIHRoaXMuZGF0YSA9IEUsIHRoaXMuc2NoZWR1bGVGbiA9IEcsIHRoaXMuY2FuY2VsRm4gPSBjZSwgIXIpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiY2FsbGJhY2sgaXMgbm90IGRlZmluZWRcIik7XG4gICAgICAgIHRoaXMuY2FsbGJhY2sgPSByO1xuICAgICAgICBjb25zdCBBID0gdGhpcztcbiAgICAgICAgcyA9PT0gWSAmJiBFICYmIEUudXNlRyA/IHRoaXMuaW52b2tlID0gcC5pbnZva2VUYXNrIDogdGhpcy5pbnZva2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gcC5pbnZva2VUYXNrLmNhbGwoaiwgQSwgdGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHN0YXRpYyBpbnZva2VUYXNrKHMsIGksIHIpIHtcbiAgICAgICAgcyB8fCAocyA9IHRoaXMpLCBvZSsrO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBzLnJ1bkNvdW50KyssIHMuem9uZS5ydW5UYXNrKHMsIGksIHIpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIG9lID09IDEgJiYgbmUoKSwgb2UtLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZ2V0IHpvbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl96b25lO1xuICAgICAgfVxuICAgICAgZ2V0IHN0YXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gICAgICB9XG4gICAgICBjYW5jZWxTY2hlZHVsZVJlcXVlc3QoKSB7XG4gICAgICAgIHRoaXMuX3RyYW5zaXRpb25UbyhKLCBrKTtcbiAgICAgIH1cbiAgICAgIF90cmFuc2l0aW9uVG8ocywgaSwgcikge1xuICAgICAgICBpZiAodGhpcy5fc3RhdGUgPT09IGkgfHwgdGhpcy5fc3RhdGUgPT09IHIpXG4gICAgICAgICAgdGhpcy5fc3RhdGUgPSBzLCBzID09IEogJiYgKHRoaXMuX3pvbmVEZWxlZ2F0ZXMgPSBudWxsKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLnR5cGV9ICcke3RoaXMuc291cmNlfSc6IGNhbiBub3QgdHJhbnNpdGlvbiB0byAnJHtzfScsIGV4cGVjdGluZyBzdGF0ZSAnJHtpfScke3IgPyBcIiBvciAnXCIgKyByICsgXCInXCIgOiBcIlwifSwgd2FzICcke3RoaXMuX3N0YXRlfScuYCk7XG4gICAgICB9XG4gICAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YSAmJiB0eXBlb2YgdGhpcy5kYXRhLmhhbmRsZUlkIDwgXCJ1XCIgPyB0aGlzLmRhdGEuaGFuZGxlSWQudG9TdHJpbmcoKSA6IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0aGlzKTtcbiAgICAgIH1cbiAgICAgIC8vIGFkZCB0b0pTT04gbWV0aG9kIHRvIHByZXZlbnQgY3ljbGljIGVycm9yIHdoZW5cbiAgICAgIC8vIGNhbGwgSlNPTi5zdHJpbmdpZnkoem9uZVRhc2spXG4gICAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICAgICAgem9uZTogdGhpcy56b25lLm5hbWUsXG4gICAgICAgICAgcnVuQ291bnQ6IHRoaXMucnVuQ291bnRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgVCA9IFMoXCJzZXRUaW1lb3V0XCIpLCB5ID0gUyhcIlByb21pc2VcIiksIHcgPSBTKFwidGhlblwiKTtcbiAgICBsZXQgXyA9IFtdLCBDID0gZmFsc2UsIE07XG4gICAgZnVuY3Rpb24gRihJKSB7XG4gICAgICBpZiAoTSB8fCBqW3ldICYmIChNID0galt5XS5yZXNvbHZlKDApKSwgTSkge1xuICAgICAgICBsZXQgcyA9IE1bd107XG4gICAgICAgIHMgfHwgKHMgPSBNLnRoZW4pLCBzLmNhbGwoTSwgSSk7XG4gICAgICB9IGVsc2VcbiAgICAgICAgaltUXShJLCAwKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gWChJKSB7XG4gICAgICBvZSA9PT0gMCAmJiBfLmxlbmd0aCA9PT0gMCAmJiBGKG5lKSwgSSAmJiBfLnB1c2goSSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG5lKCkge1xuICAgICAgaWYgKCFDKSB7XG4gICAgICAgIGZvciAoQyA9IHRydWU7IF8ubGVuZ3RoOyApIHtcbiAgICAgICAgICBjb25zdCBJID0gXztcbiAgICAgICAgICBfID0gW107XG4gICAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPCBJLmxlbmd0aDsgcysrKSB7XG4gICAgICAgICAgICBjb25zdCBpID0gSVtzXTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGkuem9uZS5ydW5UYXNrKGksIG51bGwsIG51bGwpO1xuICAgICAgICAgICAgfSBjYXRjaCAocikge1xuICAgICAgICAgICAgICBQLm9uVW5oYW5kbGVkRXJyb3Iocik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFAubWljcm90YXNrRHJhaW5Eb25lKCksIEMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcmUgPSB7IG5hbWU6IFwiTk8gWk9ORVwiIH0sIEogPSBcIm5vdFNjaGVkdWxlZFwiLCBrID0gXCJzY2hlZHVsaW5nXCIsIGQgPSBcInNjaGVkdWxlZFwiLCB4ID0gXCJydW5uaW5nXCIsIFYgPSBcImNhbmNlbGluZ1wiLCBLID0gXCJ1bmtub3duXCIsIFUgPSBcIm1pY3JvVGFza1wiLCBnID0gXCJtYWNyb1Rhc2tcIiwgWSA9IFwiZXZlbnRUYXNrXCIsIE8gPSB7fSwgUCA9IHtcbiAgICAgIHN5bWJvbDogUyxcbiAgICAgIGN1cnJlbnRab25lRnJhbWU6ICgpID0+IGIsXG4gICAgICBvblVuaGFuZGxlZEVycm9yOiAkLFxuICAgICAgbWljcm90YXNrRHJhaW5Eb25lOiAkLFxuICAgICAgc2NoZWR1bGVNaWNyb1Rhc2s6IFgsXG4gICAgICBzaG93VW5jYXVnaHRFcnJvcjogKCkgPT4gIWVbUyhcImlnbm9yZUNvbnNvbGVFcnJvclVuY2F1Z2h0RXJyb3JcIildLFxuICAgICAgcGF0Y2hFdmVudFRhcmdldDogKCkgPT4gW10sXG4gICAgICBwYXRjaE9uUHJvcGVydGllczogJCxcbiAgICAgIHBhdGNoTWV0aG9kOiAoKSA9PiAkLFxuICAgICAgYmluZEFyZ3VtZW50czogKCkgPT4gW10sXG4gICAgICBwYXRjaFRoZW46ICgpID0+ICQsXG4gICAgICBwYXRjaE1hY3JvVGFzazogKCkgPT4gJCxcbiAgICAgIHBhdGNoRXZlbnRQcm90b3R5cGU6ICgpID0+ICQsXG4gICAgICBpc0lFT3JFZGdlOiAoKSA9PiBmYWxzZSxcbiAgICAgIGdldEdsb2JhbE9iamVjdHM6ICgpID0+IHtcbiAgICAgIH0sXG4gICAgICBPYmplY3REZWZpbmVQcm9wZXJ0eTogKCkgPT4gJCxcbiAgICAgIE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcjogKCkgPT4ge1xuICAgICAgfSxcbiAgICAgIE9iamVjdENyZWF0ZTogKCkgPT4ge1xuICAgICAgfSxcbiAgICAgIEFycmF5U2xpY2U6ICgpID0+IFtdLFxuICAgICAgcGF0Y2hDbGFzczogKCkgPT4gJCxcbiAgICAgIHdyYXBXaXRoQ3VycmVudFpvbmU6ICgpID0+ICQsXG4gICAgICBmaWx0ZXJQcm9wZXJ0aWVzOiAoKSA9PiBbXSxcbiAgICAgIGF0dGFjaE9yaWdpblRvUGF0Y2hlZDogKCkgPT4gJCxcbiAgICAgIF9yZWRlZmluZVByb3BlcnR5OiAoKSA9PiAkLFxuICAgICAgcGF0Y2hDYWxsYmFja3M6ICgpID0+ICQsXG4gICAgICBuYXRpdmVTY2hlZHVsZU1pY3JvVGFzazogRlxuICAgIH07XG4gICAgbGV0IGIgPSB7IHBhcmVudDogbnVsbCwgem9uZTogbmV3IGUobnVsbCwgbnVsbCkgfSwgRCA9IG51bGwsIG9lID0gMDtcbiAgICBmdW5jdGlvbiAkKCkge1xuICAgIH1cbiAgICByZXR1cm4gYShcIlpvbmVcIiwgXCJab25lXCIpLCBlO1xuICB9XG4gIGZ1bmN0aW9uIHooKSB7XG4gICAgY29uc3QgdCA9IGdsb2JhbFRoaXMsIG4gPSB0W1MoXCJmb3JjZUR1cGxpY2F0ZVpvbmVDaGVja1wiKV0gPT09IHRydWU7XG4gICAgaWYgKHQuWm9uZSAmJiAobiB8fCB0eXBlb2YgdC5ab25lLl9fc3ltYm9sX18gIT0gXCJmdW5jdGlvblwiKSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlpvbmUgYWxyZWFkeSBsb2FkZWQuXCIpO1xuICAgIHJldHVybiB0LlpvbmUgPz89IEIoKSwgdC5ab25lO1xuICB9XG4gIGNvbnN0IGVlID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciwgdGUgPSBPYmplY3QuZGVmaW5lUHJvcGVydHksIGllID0gT2JqZWN0LmdldFByb3RvdHlwZU9mLCBmZSA9IE9iamVjdC5jcmVhdGUsIGtlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLCB2ZSA9IFwiYWRkRXZlbnRMaXN0ZW5lclwiLCBBZSA9IFwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiLCBqZSA9IFModmUpLCBIZSA9IFMoQWUpLCBfZSA9IFwidHJ1ZVwiLCBUZSA9IFwiZmFsc2VcIiwgd2UgPSBTKFwiXCIpO1xuICBmdW5jdGlvbiB4ZSh0LCBuKSB7XG4gICAgcmV0dXJuIFpvbmUuY3VycmVudC53cmFwKHQsIG4pO1xuICB9XG4gIGZ1bmN0aW9uIEZlKHQsIG4sIGEsIGUsIGMpIHtcbiAgICByZXR1cm4gWm9uZS5jdXJyZW50LnNjaGVkdWxlTWFjcm9UYXNrKHQsIG4sIGEsIGUsIGMpO1xuICB9XG4gIGNvbnN0IEggPSBTLCBOZSA9IHR5cGVvZiB3aW5kb3cgPCBcInVcIiwgRGUgPSBOZSA/IHdpbmRvdyA6IHZvaWQgMCwgUSA9IE5lICYmIERlIHx8IGdsb2JhbFRoaXMsIG10ID0gXCJyZW1vdmVBdHRyaWJ1dGVcIjtcbiAgZnVuY3Rpb24gVmUodCwgbikge1xuICAgIGZvciAobGV0IGEgPSB0Lmxlbmd0aCAtIDE7IGEgPj0gMDsgYS0tKVxuICAgICAgdHlwZW9mIHRbYV0gPT0gXCJmdW5jdGlvblwiICYmICh0W2FdID0geGUodFthXSwgbiArIFwiX1wiICsgYSkpO1xuICAgIHJldHVybiB0O1xuICB9XG4gIGZ1bmN0aW9uIHl0KHQsIG4pIHtcbiAgICBjb25zdCBhID0gdC5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIGZvciAobGV0IGUgPSAwOyBlIDwgbi5sZW5ndGg7IGUrKykge1xuICAgICAgY29uc3QgYyA9IG5bZV0sIGYgPSB0W2NdO1xuICAgICAgaWYgKGYpIHtcbiAgICAgICAgY29uc3QgcCA9IGVlKHQsIGMpO1xuICAgICAgICBpZiAoIVhlKHApKVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB0W2NdID0gKChUKSA9PiB7XG4gICAgICAgICAgY29uc3QgeSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIFQuYXBwbHkodGhpcywgVmUoYXJndW1lbnRzLCBhICsgXCIuXCIgKyBjKSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gcGUoeSwgVCksIHk7XG4gICAgICAgIH0pKGYpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBYZSh0KSB7XG4gICAgcmV0dXJuIHQgPyB0LndyaXRhYmxlID09PSBmYWxzZSA/IGZhbHNlIDogISh0eXBlb2YgdC5nZXQgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiB0LnNldCA+IFwidVwiKSA6IHRydWU7XG4gIH1cbiAgY29uc3QgWWUgPSB0eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUgPCBcInVcIiAmJiBzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUsIFplID0gIShcIm53XCIgaW4gUSkgJiYgdHlwZW9mIFEucHJvY2VzcyA8IFwidVwiICYmIFEucHJvY2Vzcy50b1N0cmluZygpID09PSBcIltvYmplY3QgcHJvY2Vzc11cIiwgemUgPSAhWmUgJiYgIVllICYmICEhKE5lICYmIERlLkhUTUxFbGVtZW50KSwgJGUgPSB0eXBlb2YgUS5wcm9jZXNzIDwgXCJ1XCIgJiYgUS5wcm9jZXNzLnRvU3RyaW5nKCkgPT09IFwiW29iamVjdCBwcm9jZXNzXVwiICYmICFZZSAmJiAhIShOZSAmJiBEZS5IVE1MRWxlbWVudCksIExlID0ge30sIGt0ID0gSChcImVuYWJsZV9iZWZvcmV1bmxvYWRcIiksIEplID0gZnVuY3Rpb24odCkge1xuICAgIGlmICh0ID0gdCB8fCBRLmV2ZW50LCAhdClcbiAgICAgIHJldHVybjtcbiAgICBsZXQgbiA9IExlW3QudHlwZV07XG4gICAgbiB8fCAobiA9IExlW3QudHlwZV0gPSBIKFwiT05fUFJPUEVSVFlcIiArIHQudHlwZSkpO1xuICAgIGNvbnN0IGEgPSB0aGlzIHx8IHQudGFyZ2V0IHx8IFEsIGUgPSBhW25dO1xuICAgIGxldCBjO1xuICAgIGlmICh6ZSAmJiBhID09PSBEZSAmJiB0LnR5cGUgPT09IFwiZXJyb3JcIikge1xuICAgICAgY29uc3QgZiA9IHQ7XG4gICAgICBjID0gZSAmJiBlLmNhbGwodGhpcywgZi5tZXNzYWdlLCBmLmZpbGVuYW1lLCBmLmxpbmVubywgZi5jb2xubywgZi5lcnJvciksIGMgPT09IHRydWUgJiYgdC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gZWxzZVxuICAgICAgYyA9IGUgJiYgZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy80NzU3OVxuICAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMTEvV0QtaHRtbDUtMjAxMTA1MjUvaGlzdG9yeS5odG1sI2JlZm9yZXVubG9hZGV2ZW50XG4gICAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IHNwZWNpZmljIGNhc2Ugd2Ugc2hvdWxkIGNoZWNrIGZvci4gVGhlIHNwZWMgZGVmaW5lcyB0aGF0IHRoZVxuICAgICAgLy8gYHJldHVyblZhbHVlYCBhdHRyaWJ1dGUgcmVwcmVzZW50cyB0aGUgbWVzc2FnZSB0byBzaG93IHRoZSB1c2VyLiBXaGVuIHRoZSBldmVudFxuICAgICAgLy8gaXMgY3JlYXRlZCwgdGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZy5cbiAgICAgIHQudHlwZSA9PT0gXCJiZWZvcmV1bmxvYWRcIiAmJiAvLyBUbyBwcmV2ZW50IGFueSBicmVha2luZyBjaGFuZ2VzIHJlc3VsdGluZyBmcm9tIHRoaXMgY2hhbmdlLCBnaXZlbiB0aGF0XG4gICAgICAvLyBpdCB3YXMgYWxyZWFkeSBjYXVzaW5nIGEgc2lnbmlmaWNhbnQgbnVtYmVyIG9mIGZhaWx1cmVzIGluIEczLCB3ZSBoYXZlIGhpZGRlblxuICAgICAgLy8gdGhhdCBiZWhhdmlvciBiZWhpbmQgYSBnbG9iYWwgY29uZmlndXJhdGlvbiBmbGFnLiBDb25zdW1lcnMgY2FuIGVuYWJsZSB0aGlzXG4gICAgICAvLyBmbGFnIGV4cGxpY2l0bHkgaWYgdGhleSB3YW50IHRoZSBgYmVmb3JldW5sb2FkYCBldmVudCB0byBiZSBoYW5kbGVkIGFzIGRlZmluZWRcbiAgICAgIC8vIGluIHRoZSBzcGVjaWZpY2F0aW9uLlxuICAgICAgUVtrdF0gJiYgLy8gVGhlIElETCBldmVudCBkZWZpbml0aW9uIGlzIGBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJldHVyblZhbHVlYCwgc28gd2UgY2hlY2sgd2hldGhlclxuICAgICAgLy8gYHR5cGVvZiByZXN1bHRgIGlzIGEgc3RyaW5nLlxuICAgICAgdHlwZW9mIGMgPT0gXCJzdHJpbmdcIiA/IHQucmV0dXJuVmFsdWUgPSBjIDogYyAhPSBudWxsICYmICFjICYmIHQucHJldmVudERlZmF1bHQoKTtcbiAgICByZXR1cm4gYztcbiAgfTtcbiAgZnVuY3Rpb24gS2UodCwgbiwgYSkge1xuICAgIGxldCBlID0gZWUodCwgbik7XG4gICAgaWYgKCFlICYmIGEgJiYgZWUoYSwgbikgJiYgKGUgPSB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KSwgIWUgfHwgIWUuY29uZmlndXJhYmxlKVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IGMgPSBIKFwib25cIiArIG4gKyBcInBhdGNoZWRcIik7XG4gICAgaWYgKHQuaGFzT3duUHJvcGVydHkoYykgJiYgdFtjXSlcbiAgICAgIHJldHVybjtcbiAgICBkZWxldGUgZS53cml0YWJsZSwgZGVsZXRlIGUudmFsdWU7XG4gICAgY29uc3QgZiA9IGUuZ2V0LCBwID0gZS5zZXQsIFQgPSBuLnNsaWNlKDIpO1xuICAgIGxldCB5ID0gTGVbVF07XG4gICAgeSB8fCAoeSA9IExlW1RdID0gSChcIk9OX1BST1BFUlRZXCIgKyBUKSksIGUuc2V0ID0gZnVuY3Rpb24odykge1xuICAgICAgbGV0IF8gPSB0aGlzO1xuICAgICAgaWYgKCFfICYmIHQgPT09IFEgJiYgKF8gPSBRKSwgIV8pXG4gICAgICAgIHJldHVybjtcbiAgICAgIHR5cGVvZiBfW3ldID09IFwiZnVuY3Rpb25cIiAmJiBfLnJlbW92ZUV2ZW50TGlzdGVuZXIoVCwgSmUpLCBwPy5jYWxsKF8sIG51bGwpLCBfW3ldID0gdywgdHlwZW9mIHcgPT0gXCJmdW5jdGlvblwiICYmIF8uYWRkRXZlbnRMaXN0ZW5lcihULCBKZSwgZmFsc2UpO1xuICAgIH0sIGUuZ2V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBsZXQgdyA9IHRoaXM7XG4gICAgICBpZiAoIXcgJiYgdCA9PT0gUSAmJiAodyA9IFEpLCAhdylcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICBjb25zdCBfID0gd1t5XTtcbiAgICAgIGlmIChfKVxuICAgICAgICByZXR1cm4gXztcbiAgICAgIGlmIChmKSB7XG4gICAgICAgIGxldCBDID0gZi5jYWxsKHRoaXMpO1xuICAgICAgICBpZiAoQylcbiAgICAgICAgICByZXR1cm4gZS5zZXQuY2FsbCh0aGlzLCBDKSwgdHlwZW9mIHdbbXRdID09IFwiZnVuY3Rpb25cIiAmJiB3LnJlbW92ZUF0dHJpYnV0ZShuKSwgQztcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sIHRlKHQsIG4sIGUpLCB0W2NdID0gdHJ1ZTtcbiAgfVxuICBmdW5jdGlvbiBRZSh0LCBuLCBhKSB7XG4gICAgaWYgKG4pXG4gICAgICBmb3IgKGxldCBlID0gMDsgZSA8IG4ubGVuZ3RoOyBlKyspXG4gICAgICAgIEtlKHQsIFwib25cIiArIG5bZV0sIGEpO1xuICAgIGVsc2Uge1xuICAgICAgY29uc3QgZSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBjIGluIHQpXG4gICAgICAgIGMuc2xpY2UoMCwgMikgPT0gXCJvblwiICYmIGUucHVzaChjKTtcbiAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgZS5sZW5ndGg7IGMrKylcbiAgICAgICAgS2UodCwgZVtjXSwgYSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGxlID0gSChcIm9yaWdpbmFsSW5zdGFuY2VcIik7XG4gIGZ1bmN0aW9uIFNlKHQpIHtcbiAgICBjb25zdCBuID0gUVt0XTtcbiAgICBpZiAoIW4pXG4gICAgICByZXR1cm47XG4gICAgUVtIKHQpXSA9IG4sIFFbdF0gPSBmdW5jdGlvbigpIHtcbiAgICAgIGNvbnN0IGMgPSBWZShhcmd1bWVudHMsIHQpO1xuICAgICAgc3dpdGNoIChjLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgdGhpc1tsZV0gPSBuZXcgbigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgdGhpc1tsZV0gPSBuZXcgbihjWzBdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHRoaXNbbGVdID0gbmV3IG4oY1swXSwgY1sxXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICB0aGlzW2xlXSA9IG5ldyBuKGNbMF0sIGNbMV0sIGNbMl0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgdGhpc1tsZV0gPSBuZXcgbihjWzBdLCBjWzFdLCBjWzJdLCBjWzNdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBcmcgbGlzdCB0b28gbG9uZy5cIik7XG4gICAgICB9XG4gICAgfSwgcGUoUVt0XSwgbik7XG4gICAgY29uc3QgYSA9IG5ldyBuKGZ1bmN0aW9uKCkge1xuICAgIH0pO1xuICAgIGxldCBlO1xuICAgIGZvciAoZSBpbiBhKVxuICAgICAgdCA9PT0gXCJYTUxIdHRwUmVxdWVzdFwiICYmIGUgPT09IFwicmVzcG9uc2VCbG9iXCIgfHwgKGZ1bmN0aW9uKGMpIHtcbiAgICAgICAgdHlwZW9mIGFbY10gPT0gXCJmdW5jdGlvblwiID8gUVt0XS5wcm90b3R5cGVbY10gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gdGhpc1tsZV1bY10uYXBwbHkodGhpc1tsZV0sIGFyZ3VtZW50cyk7XG4gICAgICAgIH0gOiB0ZShRW3RdLnByb3RvdHlwZSwgYywge1xuICAgICAgICAgIHNldDogZnVuY3Rpb24oZikge1xuICAgICAgICAgICAgdHlwZW9mIGYgPT0gXCJmdW5jdGlvblwiID8gKHRoaXNbbGVdW2NdID0geGUoZiwgdCArIFwiLlwiICsgYyksIHBlKHRoaXNbbGVdW2NdLCBmKSkgOiB0aGlzW2xlXVtjXSA9IGY7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXNbbGVdW2NdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KShlKTtcbiAgICBmb3IgKGUgaW4gbilcbiAgICAgIGUgIT09IFwicHJvdG90eXBlXCIgJiYgbi5oYXNPd25Qcm9wZXJ0eShlKSAmJiAoUVt0XVtlXSA9IG5bZV0pO1xuICB9XG4gIGZ1bmN0aW9uIEVlKHQsIG4sIGEpIHtcbiAgICBsZXQgZSA9IHQ7XG4gICAgZm9yICg7IGUgJiYgIWUuaGFzT3duUHJvcGVydHkobik7IClcbiAgICAgIGUgPSBpZShlKTtcbiAgICAhZSAmJiB0W25dICYmIChlID0gdCk7XG4gICAgY29uc3QgYyA9IEgobik7XG4gICAgbGV0IGYgPSBudWxsO1xuICAgIGlmIChlICYmICghKGYgPSBlW2NdKSB8fCAhZS5oYXNPd25Qcm9wZXJ0eShjKSkpIHtcbiAgICAgIGYgPSBlW2NdID0gZVtuXTtcbiAgICAgIGNvbnN0IHAgPSBlICYmIGVlKGUsIG4pO1xuICAgICAgaWYgKFhlKHApKSB7XG4gICAgICAgIGNvbnN0IFQgPSBhKGYsIGMsIG4pO1xuICAgICAgICBlW25dID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIFQodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfSwgcGUoZVtuXSwgZik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmO1xuICB9XG4gIGZ1bmN0aW9uIHZ0KHQsIG4sIGEpIHtcbiAgICBsZXQgZSA9IG51bGw7XG4gICAgZnVuY3Rpb24gYyhmKSB7XG4gICAgICBjb25zdCBwID0gZi5kYXRhO1xuICAgICAgcmV0dXJuIHAuYXJnc1twLmNiSWR4XSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBmLmludm9rZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfSwgZS5hcHBseShwLnRhcmdldCwgcC5hcmdzKSwgZjtcbiAgICB9XG4gICAgZSA9IEVlKHQsIG4sIChmKSA9PiBmdW5jdGlvbihwLCBUKSB7XG4gICAgICBjb25zdCB5ID0gYShwLCBUKTtcbiAgICAgIHJldHVybiB5LmNiSWR4ID49IDAgJiYgdHlwZW9mIFRbeS5jYklkeF0gPT0gXCJmdW5jdGlvblwiID8gRmUoeS5uYW1lLCBUW3kuY2JJZHhdLCB5LCBjKSA6IGYuYXBwbHkocCwgVCk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gcGUodCwgbikge1xuICAgIHRbSChcIk9yaWdpbmFsRGVsZWdhdGVcIildID0gbjtcbiAgfVxuICBsZXQgZXQgPSBmYWxzZSwgR2UgPSBmYWxzZTtcbiAgZnVuY3Rpb24gYnQoKSB7XG4gICAgaWYgKGV0KVxuICAgICAgcmV0dXJuIEdlO1xuICAgIGV0ID0gdHJ1ZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdCA9IERlLm5hdmlnYXRvci51c2VyQWdlbnQ7XG4gICAgICAodC5pbmRleE9mKFwiTVNJRSBcIikgIT09IC0xIHx8IHQuaW5kZXhPZihcIlRyaWRlbnQvXCIpICE9PSAtMSB8fCB0LmluZGV4T2YoXCJFZGdlL1wiKSAhPT0gLTEpICYmIChHZSA9ICEwKTtcbiAgICB9IGNhdGNoIHtcbiAgICB9XG4gICAgcmV0dXJuIEdlO1xuICB9XG4gIGZ1bmN0aW9uIHR0KHQpIHtcbiAgICByZXR1cm4gdHlwZW9mIHQgPT0gXCJmdW5jdGlvblwiO1xuICB9XG4gIGZ1bmN0aW9uIG50KHQpIHtcbiAgICByZXR1cm4gdHlwZW9mIHQgPT0gXCJudW1iZXJcIjtcbiAgfVxuICBjb25zdCBDdCA9IHtcbiAgICB1c2VHOiB0cnVlXG4gIH0sIGFlID0ge30sIHJ0ID0ge30sIG90ID0gbmV3IFJlZ0V4cChcIl5cIiArIHdlICsgXCIoXFxcXHcrKSh0cnVlfGZhbHNlKSRcIiksIHN0ID0gSChcInByb3BhZ2F0aW9uU3RvcHBlZFwiKTtcbiAgZnVuY3Rpb24gaXQodCwgbikge1xuICAgIGNvbnN0IGEgPSAobiA/IG4odCkgOiB0KSArIFRlLCBlID0gKG4gPyBuKHQpIDogdCkgKyBfZSwgYyA9IHdlICsgYSwgZiA9IHdlICsgZTtcbiAgICBhZVt0XSA9IHt9LCBhZVt0XVtUZV0gPSBjLCBhZVt0XVtfZV0gPSBmO1xuICB9XG4gIGZ1bmN0aW9uIFB0KHQsIG4sIGEsIGUpIHtcbiAgICBjb25zdCBjID0gZSAmJiBlLmFkZCB8fCB2ZSwgZiA9IGUgJiYgZS5ybSB8fCBBZSwgcCA9IGUgJiYgZS5saXN0ZW5lcnMgfHwgXCJldmVudExpc3RlbmVyc1wiLCBUID0gZSAmJiBlLnJtQWxsIHx8IFwicmVtb3ZlQWxsTGlzdGVuZXJzXCIsIHkgPSBIKGMpLCB3ID0gXCIuXCIgKyBjICsgXCI6XCIsIF8gPSBcInByZXBlbmRMaXN0ZW5lclwiLCBDID0gXCIuXCIgKyBfICsgXCI6XCIsIE0gPSBmdW5jdGlvbihrLCBkLCB4KSB7XG4gICAgICBpZiAoay5pc1JlbW92ZWQpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNvbnN0IFYgPSBrLmNhbGxiYWNrO1xuICAgICAgdHlwZW9mIFYgPT0gXCJvYmplY3RcIiAmJiBWLmhhbmRsZUV2ZW50ICYmIChrLmNhbGxiYWNrID0gKGcpID0+IFYuaGFuZGxlRXZlbnQoZyksIGsub3JpZ2luYWxEZWxlZ2F0ZSA9IFYpO1xuICAgICAgbGV0IEs7XG4gICAgICB0cnkge1xuICAgICAgICBrLmludm9rZShrLCBkLCBbeF0pO1xuICAgICAgfSBjYXRjaCAoZykge1xuICAgICAgICBLID0gZztcbiAgICAgIH1cbiAgICAgIGNvbnN0IFUgPSBrLm9wdGlvbnM7XG4gICAgICBpZiAoVSAmJiB0eXBlb2YgVSA9PSBcIm9iamVjdFwiICYmIFUub25jZSkge1xuICAgICAgICBjb25zdCBnID0gay5vcmlnaW5hbERlbGVnYXRlID8gay5vcmlnaW5hbERlbGVnYXRlIDogay5jYWxsYmFjaztcbiAgICAgICAgZFtmXS5jYWxsKGQsIHgudHlwZSwgZywgVSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gSztcbiAgICB9O1xuICAgIGZ1bmN0aW9uIEYoaywgZCwgeCkge1xuICAgICAgaWYgKGQgPSBkIHx8IHQuZXZlbnQsICFkKVxuICAgICAgICByZXR1cm47XG4gICAgICBjb25zdCBWID0gayB8fCBkLnRhcmdldCB8fCB0LCBLID0gVlthZVtkLnR5cGVdW3ggPyBfZSA6IFRlXV07XG4gICAgICBpZiAoSykge1xuICAgICAgICBjb25zdCBVID0gW107XG4gICAgICAgIGlmIChLLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIGNvbnN0IGcgPSBNKEtbMF0sIFYsIGQpO1xuICAgICAgICAgIGcgJiYgVS5wdXNoKGcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGcgPSBLLnNsaWNlKCk7XG4gICAgICAgICAgZm9yIChsZXQgWSA9IDA7IFkgPCBnLmxlbmd0aCAmJiAhKGQgJiYgZFtzdF0gPT09IHRydWUpOyBZKyspIHtcbiAgICAgICAgICAgIGNvbnN0IE8gPSBNKGdbWV0sIFYsIGQpO1xuICAgICAgICAgICAgTyAmJiBVLnB1c2goTyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChVLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICB0aHJvdyBVWzBdO1xuICAgICAgICBmb3IgKGxldCBnID0gMDsgZyA8IFUubGVuZ3RoOyBnKyspIHtcbiAgICAgICAgICBjb25zdCBZID0gVVtnXTtcbiAgICAgICAgICBuLm5hdGl2ZVNjaGVkdWxlTWljcm9UYXNrKCgpID0+IHtcbiAgICAgICAgICAgIHRocm93IFk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgWCA9IGZ1bmN0aW9uKGspIHtcbiAgICAgIHJldHVybiBGKHRoaXMsIGssIGZhbHNlKTtcbiAgICB9LCBuZSA9IGZ1bmN0aW9uKGspIHtcbiAgICAgIHJldHVybiBGKHRoaXMsIGssIHRydWUpO1xuICAgIH07XG4gICAgZnVuY3Rpb24gcmUoaywgZCkge1xuICAgICAgaWYgKCFrKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBsZXQgeCA9IHRydWU7XG4gICAgICBkICYmIGQudXNlRyAhPT0gdm9pZCAwICYmICh4ID0gZC51c2VHKTtcbiAgICAgIGNvbnN0IFYgPSBkICYmIGQudmg7XG4gICAgICBsZXQgSyA9IHRydWU7XG4gICAgICBkICYmIGQuY2hrRHVwICE9PSB2b2lkIDAgJiYgKEsgPSBkLmNoa0R1cCk7XG4gICAgICBsZXQgVSA9IGZhbHNlO1xuICAgICAgZCAmJiBkLnJ0ICE9PSB2b2lkIDAgJiYgKFUgPSBkLnJ0KTtcbiAgICAgIGxldCBnID0gaztcbiAgICAgIGZvciAoOyBnICYmICFnLmhhc093blByb3BlcnR5KGMpOyApXG4gICAgICAgIGcgPSBpZShnKTtcbiAgICAgIGlmICghZyAmJiBrW2NdICYmIChnID0gayksICFnIHx8IGdbeV0pXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IFkgPSBkICYmIGQuZXZlbnROYW1lVG9TdHJpbmcsIE8gPSB7fSwgUCA9IGdbeV0gPSBnW2NdLCBiID0gZ1tIKGYpXSA9IGdbZl0sIEQgPSBnW0gocCldID0gZ1twXSwgb2UgPSBnW0goVCldID0gZ1tUXTtcbiAgICAgIGxldCAkO1xuICAgICAgZCAmJiBkLnByZXBlbmQgJiYgKCQgPSBnW0goZC5wcmVwZW5kKV0gPSBnW2QucHJlcGVuZF0pO1xuICAgICAgZnVuY3Rpb24gSShvLCB1KSB7XG4gICAgICAgIHJldHVybiB1ID8gdHlwZW9mIG8gPT0gXCJib29sZWFuXCIgPyB7IGNhcHR1cmU6IG8sIHBhc3NpdmU6IHRydWUgfSA6IG8gPyB0eXBlb2YgbyA9PSBcIm9iamVjdFwiICYmIG8ucGFzc2l2ZSAhPT0gZmFsc2UgPyB7IC4uLm8sIHBhc3NpdmU6IHRydWUgfSA6IG8gOiB7IHBhc3NpdmU6IHRydWUgfSA6IG87XG4gICAgICB9XG4gICAgICBjb25zdCBzID0gZnVuY3Rpb24obykge1xuICAgICAgICBpZiAoIU8uaXNFeGlzdGluZylcbiAgICAgICAgICByZXR1cm4gUC5jYWxsKE8udGFyZ2V0LCBPLmV2ZW50TmFtZSwgTy5jYXB0dXJlID8gbmUgOiBYLCBPLm9wdGlvbnMpO1xuICAgICAgfSwgaSA9IGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgaWYgKCFvLmlzUmVtb3ZlZCkge1xuICAgICAgICAgIGNvbnN0IHUgPSBhZVtvLmV2ZW50TmFtZV07XG4gICAgICAgICAgbGV0IHY7XG4gICAgICAgICAgdSAmJiAodiA9IHVbby5jYXB0dXJlID8gX2UgOiBUZV0pO1xuICAgICAgICAgIGNvbnN0IFIgPSB2ICYmIG8udGFyZ2V0W3ZdO1xuICAgICAgICAgIGlmIChSKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBtID0gMDsgbSA8IFIubGVuZ3RoOyBtKyspXG4gICAgICAgICAgICAgIGlmIChSW21dID09PSBvKSB7XG4gICAgICAgICAgICAgICAgUi5zcGxpY2UobSwgMSksIG8uaXNSZW1vdmVkID0gdHJ1ZSwgby5yZW1vdmVBYm9ydExpc3RlbmVyICYmIChvLnJlbW92ZUFib3J0TGlzdGVuZXIoKSwgby5yZW1vdmVBYm9ydExpc3RlbmVyID0gbnVsbCksIFIubGVuZ3RoID09PSAwICYmIChvLmFsbFJlbW92ZWQgPSB0cnVlLCBvLnRhcmdldFt2XSA9IG51bGwpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvLmFsbFJlbW92ZWQpXG4gICAgICAgICAgcmV0dXJuIGIuY2FsbChvLnRhcmdldCwgby5ldmVudE5hbWUsIG8uY2FwdHVyZSA/IG5lIDogWCwgby5vcHRpb25zKTtcbiAgICAgIH0sIHIgPSBmdW5jdGlvbihvKSB7XG4gICAgICAgIHJldHVybiBQLmNhbGwoTy50YXJnZXQsIE8uZXZlbnROYW1lLCBvLmludm9rZSwgTy5vcHRpb25zKTtcbiAgICAgIH0sIEUgPSBmdW5jdGlvbihvKSB7XG4gICAgICAgIHJldHVybiAkLmNhbGwoTy50YXJnZXQsIE8uZXZlbnROYW1lLCBvLmludm9rZSwgTy5vcHRpb25zKTtcbiAgICAgIH0sIEcgPSBmdW5jdGlvbihvKSB7XG4gICAgICAgIHJldHVybiBiLmNhbGwoby50YXJnZXQsIG8uZXZlbnROYW1lLCBvLmludm9rZSwgby5vcHRpb25zKTtcbiAgICAgIH0sIGNlID0geCA/IHMgOiByLCBBID0geCA/IGkgOiBHLCBnZSA9IGZ1bmN0aW9uKG8sIHUpIHtcbiAgICAgICAgY29uc3QgdiA9IHR5cGVvZiB1O1xuICAgICAgICByZXR1cm4gdiA9PT0gXCJmdW5jdGlvblwiICYmIG8uY2FsbGJhY2sgPT09IHUgfHwgdiA9PT0gXCJvYmplY3RcIiAmJiBvLm9yaWdpbmFsRGVsZWdhdGUgPT09IHU7XG4gICAgICB9LCB5ZSA9IGQ/LmRpZmYgfHwgZ2UsIHNlID0gWm9uZVtIKFwiVU5QQVRDSEVEX0VWRU5UU1wiKV0sIENlID0gdFtIKFwiUEFTU0lWRV9FVkVOVFNcIildO1xuICAgICAgZnVuY3Rpb24gaChvKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiICYmIG8gIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCB1ID0geyAuLi5vIH07XG4gICAgICAgICAgcmV0dXJuIG8uc2lnbmFsICYmICh1LnNpZ25hbCA9IG8uc2lnbmFsKSwgdTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbztcbiAgICAgIH1cbiAgICAgIGNvbnN0IGwgPSBmdW5jdGlvbihvLCB1LCB2LCBSLCBtID0gZmFsc2UsIE4gPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgY29uc3QgWiA9IHRoaXMgfHwgdDtcbiAgICAgICAgICBsZXQgTCA9IGFyZ3VtZW50c1swXTtcbiAgICAgICAgICBkICYmIGQudHJhbnNmZXJFdmVudE5hbWUgJiYgKEwgPSBkLnRyYW5zZmVyRXZlbnROYW1lKEwpKTtcbiAgICAgICAgICBsZXQgVyA9IGFyZ3VtZW50c1sxXTtcbiAgICAgICAgICBpZiAoIVcpXG4gICAgICAgICAgICByZXR1cm4gby5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgIGlmIChaZSAmJiBMID09PSBcInVuY2F1Z2h0RXhjZXB0aW9uXCIpXG4gICAgICAgICAgICByZXR1cm4gby5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgIGxldCBxID0gZmFsc2U7XG4gICAgICAgICAgaWYgKHR5cGVvZiBXICE9IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgaWYgKCFXLmhhbmRsZUV2ZW50KVxuICAgICAgICAgICAgICByZXR1cm4gby5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgcSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChWICYmICFWKG8sIFcsIFosIGFyZ3VtZW50cykpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgY29uc3QgbWUgPSAhIUNlICYmIENlLmluZGV4T2YoTCkgIT09IC0xLCBoZSA9IGgoSShhcmd1bWVudHNbMl0sIG1lKSksIFBlID0gaGU/LnNpZ25hbDtcbiAgICAgICAgICBpZiAoUGU/LmFib3J0ZWQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgaWYgKHNlKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBkZSA9IDA7IGRlIDwgc2UubGVuZ3RoOyBkZSsrKVxuICAgICAgICAgICAgICBpZiAoTCA9PT0gc2VbZGVdKVxuICAgICAgICAgICAgICAgIHJldHVybiBtZSA/IG8uY2FsbChaLCBMLCBXLCBoZSkgOiBvLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IFVlID0gaGUgPyB0eXBlb2YgaGUgPT0gXCJib29sZWFuXCIgPyB0cnVlIDogaGUuY2FwdHVyZSA6IGZhbHNlLCBmdCA9IGhlICYmIHR5cGVvZiBoZSA9PSBcIm9iamVjdFwiID8gaGUub25jZSA6IGZhbHNlLCBIdCA9IFpvbmUuY3VycmVudDtcbiAgICAgICAgICBsZXQgV2UgPSBhZVtMXTtcbiAgICAgICAgICBXZSB8fCAoaXQoTCwgWSksIFdlID0gYWVbTF0pO1xuICAgICAgICAgIGNvbnN0IGh0ID0gV2VbVWUgPyBfZSA6IFRlXTtcbiAgICAgICAgICBsZXQgUmUgPSBaW2h0XSwgZHQgPSBmYWxzZTtcbiAgICAgICAgICBpZiAoUmUpIHtcbiAgICAgICAgICAgIGlmIChkdCA9IHRydWUsIEspIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgZGUgPSAwOyBkZSA8IFJlLmxlbmd0aDsgZGUrKylcbiAgICAgICAgICAgICAgICBpZiAoeWUoUmVbZGVdLCBXKSlcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgIFJlID0gWltodF0gPSBbXTtcbiAgICAgICAgICBsZXQgSWU7XG4gICAgICAgICAgY29uc3QgX3QgPSBaLmNvbnN0cnVjdG9yLm5hbWUsIFR0ID0gcnRbX3RdO1xuICAgICAgICAgIFR0ICYmIChJZSA9IFR0W0xdKSwgSWUgfHwgKEllID0gX3QgKyB1ICsgKFkgPyBZKEwpIDogTCkpLCBPLm9wdGlvbnMgPSBoZSwgZnQgJiYgKE8ub3B0aW9ucy5vbmNlID0gZmFsc2UpLCBPLnRhcmdldCA9IFosIE8uY2FwdHVyZSA9IFVlLCBPLmV2ZW50TmFtZSA9IEwsIE8uaXNFeGlzdGluZyA9IGR0O1xuICAgICAgICAgIGNvbnN0IE9lID0geCA/IEN0IDogdm9pZCAwO1xuICAgICAgICAgIE9lICYmIChPZS50YXNrRGF0YSA9IE8pLCBQZSAmJiAoTy5vcHRpb25zLnNpZ25hbCA9IHZvaWQgMCk7XG4gICAgICAgICAgY29uc3QgdWUgPSBIdC5zY2hlZHVsZUV2ZW50VGFzayhJZSwgVywgT2UsIHYsIFIpO1xuICAgICAgICAgIGlmIChQZSkge1xuICAgICAgICAgICAgTy5vcHRpb25zLnNpZ25hbCA9IFBlO1xuICAgICAgICAgICAgY29uc3QgZGUgPSAoKSA9PiB1ZS56b25lLmNhbmNlbFRhc2sodWUpO1xuICAgICAgICAgICAgby5jYWxsKFBlLCBcImFib3J0XCIsIGRlLCB7IG9uY2U6IHRydWUgfSksIHVlLnJlbW92ZUFib3J0TGlzdGVuZXIgPSAoKSA9PiBQZS5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoTy50YXJnZXQgPSBudWxsLCBPZSAmJiAoT2UudGFza0RhdGEgPSBudWxsKSwgZnQgJiYgKE8ub3B0aW9ucy5vbmNlID0gdHJ1ZSksIHR5cGVvZiB1ZS5vcHRpb25zICE9IFwiYm9vbGVhblwiICYmICh1ZS5vcHRpb25zID0gaGUpLCB1ZS50YXJnZXQgPSBaLCB1ZS5jYXB0dXJlID0gVWUsIHVlLmV2ZW50TmFtZSA9IEwsIHEgJiYgKHVlLm9yaWdpbmFsRGVsZWdhdGUgPSBXKSwgTiA/IFJlLnVuc2hpZnQodWUpIDogUmUucHVzaCh1ZSksIG0pXG4gICAgICAgICAgICByZXR1cm4gWjtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICByZXR1cm4gZ1tjXSA9IGwoUCwgdywgY2UsIEEsIFUpLCAkICYmIChnW19dID0gbCgkLCBDLCBFLCBBLCBVLCB0cnVlKSksIGdbZl0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgY29uc3QgbyA9IHRoaXMgfHwgdDtcbiAgICAgICAgbGV0IHUgPSBhcmd1bWVudHNbMF07XG4gICAgICAgIGQgJiYgZC50cmFuc2ZlckV2ZW50TmFtZSAmJiAodSA9IGQudHJhbnNmZXJFdmVudE5hbWUodSkpO1xuICAgICAgICBjb25zdCB2ID0gYXJndW1lbnRzWzJdLCBSID0gdiA/IHR5cGVvZiB2ID09IFwiYm9vbGVhblwiID8gdHJ1ZSA6IHYuY2FwdHVyZSA6IGZhbHNlLCBtID0gYXJndW1lbnRzWzFdO1xuICAgICAgICBpZiAoIW0pXG4gICAgICAgICAgcmV0dXJuIGIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgaWYgKFYgJiYgIVYoYiwgbSwgbywgYXJndW1lbnRzKSlcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IE4gPSBhZVt1XTtcbiAgICAgICAgbGV0IFo7XG4gICAgICAgIE4gJiYgKFogPSBOW1IgPyBfZSA6IFRlXSk7XG4gICAgICAgIGNvbnN0IEwgPSBaICYmIG9bWl07XG4gICAgICAgIGlmIChMKVxuICAgICAgICAgIGZvciAobGV0IFcgPSAwOyBXIDwgTC5sZW5ndGg7IFcrKykge1xuICAgICAgICAgICAgY29uc3QgcSA9IExbV107XG4gICAgICAgICAgICBpZiAoeWUocSwgbSkpIHtcbiAgICAgICAgICAgICAgaWYgKEwuc3BsaWNlKFcsIDEpLCBxLmlzUmVtb3ZlZCA9IHRydWUsIEwubGVuZ3RoID09PSAwICYmIChxLmFsbFJlbW92ZWQgPSB0cnVlLCBvW1pdID0gbnVsbCwgIVIgJiYgdHlwZW9mIHUgPT0gXCJzdHJpbmdcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZSA9IHdlICsgXCJPTl9QUk9QRVJUWVwiICsgdTtcbiAgICAgICAgICAgICAgICBvW21lXSA9IG51bGw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHEuem9uZS5jYW5jZWxUYXNrKHEpLCBVID8gbyA6IHZvaWQgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIHJldHVybiBiLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9LCBnW3BdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0IG8gPSB0aGlzIHx8IHQ7XG4gICAgICAgIGxldCB1ID0gYXJndW1lbnRzWzBdO1xuICAgICAgICBkICYmIGQudHJhbnNmZXJFdmVudE5hbWUgJiYgKHUgPSBkLnRyYW5zZmVyRXZlbnROYW1lKHUpKTtcbiAgICAgICAgY29uc3QgdiA9IFtdLCBSID0gY3QobywgWSA/IFkodSkgOiB1KTtcbiAgICAgICAgZm9yIChsZXQgbSA9IDA7IG0gPCBSLmxlbmd0aDsgbSsrKSB7XG4gICAgICAgICAgY29uc3QgTiA9IFJbbV07XG4gICAgICAgICAgbGV0IFogPSBOLm9yaWdpbmFsRGVsZWdhdGUgPyBOLm9yaWdpbmFsRGVsZWdhdGUgOiBOLmNhbGxiYWNrO1xuICAgICAgICAgIHYucHVzaChaKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0sIGdbVF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgY29uc3QgbyA9IHRoaXMgfHwgdDtcbiAgICAgICAgbGV0IHUgPSBhcmd1bWVudHNbMF07XG4gICAgICAgIGlmICh1KSB7XG4gICAgICAgICAgZCAmJiBkLnRyYW5zZmVyRXZlbnROYW1lICYmICh1ID0gZC50cmFuc2ZlckV2ZW50TmFtZSh1KSk7XG4gICAgICAgICAgY29uc3QgdiA9IGFlW3VdO1xuICAgICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgICBjb25zdCBSID0gdltUZV0sIG0gPSB2W19lXSwgTiA9IG9bUl0sIFogPSBvW21dO1xuICAgICAgICAgICAgaWYgKE4pIHtcbiAgICAgICAgICAgICAgY29uc3QgTCA9IE4uc2xpY2UoKTtcbiAgICAgICAgICAgICAgZm9yIChsZXQgVyA9IDA7IFcgPCBMLmxlbmd0aDsgVysrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcSA9IExbV107XG4gICAgICAgICAgICAgICAgbGV0IG1lID0gcS5vcmlnaW5hbERlbGVnYXRlID8gcS5vcmlnaW5hbERlbGVnYXRlIDogcS5jYWxsYmFjaztcbiAgICAgICAgICAgICAgICB0aGlzW2ZdLmNhbGwodGhpcywgdSwgbWUsIHEub3B0aW9ucyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChaKSB7XG4gICAgICAgICAgICAgIGNvbnN0IEwgPSBaLnNsaWNlKCk7XG4gICAgICAgICAgICAgIGZvciAobGV0IFcgPSAwOyBXIDwgTC5sZW5ndGg7IFcrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHEgPSBMW1ddO1xuICAgICAgICAgICAgICAgIGxldCBtZSA9IHEub3JpZ2luYWxEZWxlZ2F0ZSA/IHEub3JpZ2luYWxEZWxlZ2F0ZSA6IHEuY2FsbGJhY2s7XG4gICAgICAgICAgICAgICAgdGhpc1tmXS5jYWxsKHRoaXMsIHUsIG1lLCBxLm9wdGlvbnMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHYgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAgICBmb3IgKGxldCBSID0gMDsgUiA8IHYubGVuZ3RoOyBSKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG0gPSB2W1JdLCBOID0gb3QuZXhlYyhtKTtcbiAgICAgICAgICAgIGxldCBaID0gTiAmJiBOWzFdO1xuICAgICAgICAgICAgWiAmJiBaICE9PSBcInJlbW92ZUxpc3RlbmVyXCIgJiYgdGhpc1tUXS5jYWxsKHRoaXMsIFopO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzW1RdLmNhbGwodGhpcywgXCJyZW1vdmVMaXN0ZW5lclwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoVSlcbiAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH0sIHBlKGdbY10sIFApLCBwZShnW2ZdLCBiKSwgb2UgJiYgcGUoZ1tUXSwgb2UpLCBEICYmIHBlKGdbcF0sIEQpLCB0cnVlO1xuICAgIH1cbiAgICBsZXQgSiA9IFtdO1xuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgYS5sZW5ndGg7IGsrKylcbiAgICAgIEpba10gPSByZShhW2tdLCBlKTtcbiAgICByZXR1cm4gSjtcbiAgfVxuICBmdW5jdGlvbiBjdCh0LCBuKSB7XG4gICAgaWYgKCFuKSB7XG4gICAgICBjb25zdCBmID0gW107XG4gICAgICBmb3IgKGxldCBwIGluIHQpIHtcbiAgICAgICAgY29uc3QgVCA9IG90LmV4ZWMocCk7XG4gICAgICAgIGxldCB5ID0gVCAmJiBUWzFdO1xuICAgICAgICBpZiAoeSAmJiAoIW4gfHwgeSA9PT0gbikpIHtcbiAgICAgICAgICBjb25zdCB3ID0gdFtwXTtcbiAgICAgICAgICBpZiAodylcbiAgICAgICAgICAgIGZvciAobGV0IF8gPSAwOyBfIDwgdy5sZW5ndGg7IF8rKylcbiAgICAgICAgICAgICAgZi5wdXNoKHdbX10pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZjtcbiAgICB9XG4gICAgbGV0IGEgPSBhZVtuXTtcbiAgICBhIHx8IChpdChuKSwgYSA9IGFlW25dKTtcbiAgICBjb25zdCBlID0gdFthW1RlXV0sIGMgPSB0W2FbX2VdXTtcbiAgICByZXR1cm4gZSA/IGMgPyBlLmNvbmNhdChjKSA6IGUuc2xpY2UoKSA6IGMgPyBjLnNsaWNlKCkgOiBbXTtcbiAgfVxuICBmdW5jdGlvbiBSdCh0LCBuKSB7XG4gICAgY29uc3QgYSA9IHQuRXZlbnQ7XG4gICAgYSAmJiBhLnByb3RvdHlwZSAmJiBuLnBhdGNoTWV0aG9kKGEucHJvdG90eXBlLCBcInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvblwiLCAoZSkgPT4gZnVuY3Rpb24oYywgZikge1xuICAgICAgY1tzdF0gPSB0cnVlLCBlICYmIGUuYXBwbHkoYywgZik7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gd3QodCwgbikge1xuICAgIG4ucGF0Y2hNZXRob2QodCwgXCJxdWV1ZU1pY3JvdGFza1wiLCAoYSkgPT4gZnVuY3Rpb24oZSwgYykge1xuICAgICAgWm9uZS5jdXJyZW50LnNjaGVkdWxlTWljcm9UYXNrKFwicXVldWVNaWNyb3Rhc2tcIiwgY1swXSk7XG4gICAgfSk7XG4gIH1cbiAgY29uc3QgTWUgPSBIKFwiem9uZVRhc2tcIik7XG4gIGZ1bmN0aW9uIGJlKHQsIG4sIGEsIGUpIHtcbiAgICBsZXQgYyA9IG51bGwsIGYgPSBudWxsO1xuICAgIG4gKz0gZSwgYSArPSBlO1xuICAgIGNvbnN0IHAgPSB7fTtcbiAgICBmdW5jdGlvbiBUKHcpIHtcbiAgICAgIGNvbnN0IF8gPSB3LmRhdGE7XG4gICAgICBfLmFyZ3NbMF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHcuaW52b2tlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgY29uc3QgQyA9IGMuYXBwbHkodCwgXy5hcmdzKTtcbiAgICAgIHJldHVybiBudChDKSA/IF8uaGFuZGxlSWQgPSBDIDogKF8uaGFuZGxlID0gQywgXy5pc1JlZnJlc2hhYmxlID0gdHQoQy5yZWZyZXNoKSksIHc7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHkodykge1xuICAgICAgY29uc3QgeyBoYW5kbGU6IF8sIGhhbmRsZUlkOiBDIH0gPSB3LmRhdGE7XG4gICAgICByZXR1cm4gZi5jYWxsKHQsIF8gPz8gQyk7XG4gICAgfVxuICAgIGMgPSBFZSh0LCBuLCAodykgPT4gZnVuY3Rpb24oXywgQykge1xuICAgICAgaWYgKHR0KENbMF0pKSB7XG4gICAgICAgIGNvbnN0IE0gPSB7XG4gICAgICAgICAgaXNSZWZyZXNoYWJsZTogZmFsc2UsXG4gICAgICAgICAgaXNQZXJpb2RpYzogZSA9PT0gXCJJbnRlcnZhbFwiLFxuICAgICAgICAgIGRlbGF5OiBlID09PSBcIlRpbWVvdXRcIiB8fCBlID09PSBcIkludGVydmFsXCIgPyBDWzFdIHx8IDAgOiB2b2lkIDAsXG4gICAgICAgICAgYXJnczogQ1xuICAgICAgICB9LCBGID0gQ1swXTtcbiAgICAgICAgQ1swXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gRi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBjb25zdCB7IGhhbmRsZTogeCwgaGFuZGxlSWQ6IFYsIGlzUGVyaW9kaWM6IEssIGlzUmVmcmVzaGFibGU6IFUgfSA9IE07XG4gICAgICAgICAgICAhSyAmJiAhVSAmJiAoViA/IGRlbGV0ZSBwW1ZdIDogeCAmJiAoeFtNZV0gPSBudWxsKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBYID0gRmUobiwgQ1swXSwgTSwgVCwgeSk7XG4gICAgICAgIGlmICghWClcbiAgICAgICAgICByZXR1cm4gWDtcbiAgICAgICAgY29uc3QgeyBoYW5kbGVJZDogbmUsIGhhbmRsZTogcmUsIGlzUmVmcmVzaGFibGU6IEosIGlzUGVyaW9kaWM6IGsgfSA9IFguZGF0YTtcbiAgICAgICAgaWYgKG5lKVxuICAgICAgICAgIHBbbmVdID0gWDtcbiAgICAgICAgZWxzZSBpZiAocmUgJiYgKHJlW01lXSA9IFgsIEogJiYgIWspKSB7XG4gICAgICAgICAgY29uc3QgZCA9IHJlLnJlZnJlc2g7XG4gICAgICAgICAgcmUucmVmcmVzaCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY29uc3QgeyB6b25lOiB4LCBzdGF0ZTogViB9ID0gWDtcbiAgICAgICAgICAgIHJldHVybiBWID09PSBcIm5vdFNjaGVkdWxlZFwiID8gKFguX3N0YXRlID0gXCJzY2hlZHVsZWRcIiwgeC5fdXBkYXRlVGFza0NvdW50KFgsIDEpKSA6IFYgPT09IFwicnVubmluZ1wiICYmIChYLl9zdGF0ZSA9IFwic2NoZWR1bGluZ1wiKSwgZC5jYWxsKHRoaXMpO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlID8/IG5lID8/IFg7XG4gICAgICB9IGVsc2VcbiAgICAgICAgcmV0dXJuIHcuYXBwbHkodCwgQyk7XG4gICAgfSksIGYgPSBFZSh0LCBhLCAodykgPT4gZnVuY3Rpb24oXywgQykge1xuICAgICAgY29uc3QgTSA9IENbMF07XG4gICAgICBsZXQgRjtcbiAgICAgIG50KE0pID8gKEYgPSBwW01dLCBkZWxldGUgcFtNXSkgOiAoRiA9IE0/LltNZV0sIEYgPyBNW01lXSA9IG51bGwgOiBGID0gTSksIEY/LnR5cGUgPyBGLmNhbmNlbEZuICYmIEYuem9uZS5jYW5jZWxUYXNrKEYpIDogdy5hcHBseSh0LCBDKTtcbiAgICB9KTtcbiAgfVxuICBmdW5jdGlvbiBEdCh0LCBuKSB7XG4gICAgY29uc3QgeyBpc0Jyb3dzZXI6IGEsIGlzTWl4OiBlIH0gPSBuLmdldEdsb2JhbE9iamVjdHMoKTtcbiAgICBpZiAoIWEgJiYgIWUgfHwgIXQuY3VzdG9tRWxlbWVudHMgfHwgIShcImN1c3RvbUVsZW1lbnRzXCIgaW4gdCkpXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgYyA9IFtcbiAgICAgIFwiY29ubmVjdGVkQ2FsbGJhY2tcIixcbiAgICAgIFwiZGlzY29ubmVjdGVkQ2FsbGJhY2tcIixcbiAgICAgIFwiYWRvcHRlZENhbGxiYWNrXCIsXG4gICAgICBcImF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFja1wiLFxuICAgICAgXCJmb3JtQXNzb2NpYXRlZENhbGxiYWNrXCIsXG4gICAgICBcImZvcm1EaXNhYmxlZENhbGxiYWNrXCIsXG4gICAgICBcImZvcm1SZXNldENhbGxiYWNrXCIsXG4gICAgICBcImZvcm1TdGF0ZVJlc3RvcmVDYWxsYmFja1wiXG4gICAgXTtcbiAgICBuLnBhdGNoQ2FsbGJhY2tzKG4sIHQuY3VzdG9tRWxlbWVudHMsIFwiY3VzdG9tRWxlbWVudHNcIiwgXCJkZWZpbmVcIiwgYyk7XG4gIH1cbiAgZnVuY3Rpb24gU3QodCwgbikge1xuICAgIGlmIChab25lW24uc3ltYm9sKFwicGF0Y2hFdmVudFRhcmdldFwiKV0pXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgeyBldmVudE5hbWVzOiBhLCB6b25lU3ltYm9sRXZlbnROYW1lczogZSwgVFJVRV9TVFI6IGMsIEZBTFNFX1NUUjogZiwgWk9ORV9TWU1CT0xfUFJFRklYOiBwIH0gPSBuLmdldEdsb2JhbE9iamVjdHMoKTtcbiAgICBmb3IgKGxldCB5ID0gMDsgeSA8IGEubGVuZ3RoOyB5KyspIHtcbiAgICAgIGNvbnN0IHcgPSBhW3ldLCBfID0gdyArIGYsIEMgPSB3ICsgYywgTSA9IHAgKyBfLCBGID0gcCArIEM7XG4gICAgICBlW3ddID0ge30sIGVbd11bZl0gPSBNLCBlW3ddW2NdID0gRjtcbiAgICB9XG4gICAgY29uc3QgVCA9IHQuRXZlbnRUYXJnZXQ7XG4gICAgaWYgKCEoIVQgfHwgIVQucHJvdG90eXBlKSlcbiAgICAgIHJldHVybiBuLnBhdGNoRXZlbnRUYXJnZXQodCwgbiwgW1QgJiYgVC5wcm90b3R5cGVdKSwgdHJ1ZTtcbiAgfVxuICBmdW5jdGlvbiBPdCh0LCBuKSB7XG4gICAgbi5wYXRjaEV2ZW50UHJvdG90eXBlKHQsIG4pO1xuICB9XG4gIGZ1bmN0aW9uIGF0KHQsIG4sIGEpIHtcbiAgICBpZiAoIWEgfHwgYS5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gbjtcbiAgICBjb25zdCBlID0gYS5maWx0ZXIoKGYpID0+IGYudGFyZ2V0ID09PSB0KTtcbiAgICBpZiAoZS5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gbjtcbiAgICBjb25zdCBjID0gZVswXS5pZ25vcmVQcm9wZXJ0aWVzO1xuICAgIHJldHVybiBuLmZpbHRlcigoZikgPT4gYy5pbmRleE9mKGYpID09PSAtMSk7XG4gIH1cbiAgZnVuY3Rpb24gbHQodCwgbiwgYSwgZSkge1xuICAgIGlmICghdClcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBjID0gYXQodCwgbiwgYSk7XG4gICAgUWUodCwgYywgZSk7XG4gIH1cbiAgZnVuY3Rpb24gQmUodCkge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5maWx0ZXIoKG4pID0+IG4uc3RhcnRzV2l0aChcIm9uXCIpICYmIG4ubGVuZ3RoID4gMikubWFwKChuKSA9PiBuLnN1YnN0cmluZygyKSk7XG4gIH1cbiAgZnVuY3Rpb24gTnQodCwgbikge1xuICAgIGlmIChaZSAmJiAhJGUgfHwgWm9uZVt0LnN5bWJvbChcInBhdGNoRXZlbnRzXCIpXSlcbiAgICAgIHJldHVybjtcbiAgICBjb25zdCBhID0gbi5fX1pvbmVfaWdub3JlX29uX3Byb3BlcnRpZXM7XG4gICAgbGV0IGUgPSBbXTtcbiAgICBpZiAoemUpIHtcbiAgICAgIGNvbnN0IGMgPSB3aW5kb3c7XG4gICAgICBlID0gZS5jb25jYXQoW1xuICAgICAgICBcIkRvY3VtZW50XCIsXG4gICAgICAgIFwiU1ZHRWxlbWVudFwiLFxuICAgICAgICBcIkVsZW1lbnRcIixcbiAgICAgICAgXCJIVE1MRWxlbWVudFwiLFxuICAgICAgICBcIkhUTUxCb2R5RWxlbWVudFwiLFxuICAgICAgICBcIkhUTUxNZWRpYUVsZW1lbnRcIixcbiAgICAgICAgXCJIVE1MRnJhbWVTZXRFbGVtZW50XCIsXG4gICAgICAgIFwiSFRNTEZyYW1lRWxlbWVudFwiLFxuICAgICAgICBcIkhUTUxJRnJhbWVFbGVtZW50XCIsXG4gICAgICAgIFwiSFRNTE1hcnF1ZWVFbGVtZW50XCIsXG4gICAgICAgIFwiV29ya2VyXCJcbiAgICAgIF0pO1xuICAgICAgY29uc3QgZiA9IFtdO1xuICAgICAgbHQoYywgQmUoYyksIGEgJiYgYS5jb25jYXQoZiksIGllKGMpKTtcbiAgICB9XG4gICAgZSA9IGUuY29uY2F0KFtcbiAgICAgIFwiWE1MSHR0cFJlcXVlc3RcIixcbiAgICAgIFwiWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldFwiLFxuICAgICAgXCJJREJJbmRleFwiLFxuICAgICAgXCJJREJSZXF1ZXN0XCIsXG4gICAgICBcIklEQk9wZW5EQlJlcXVlc3RcIixcbiAgICAgIFwiSURCRGF0YWJhc2VcIixcbiAgICAgIFwiSURCVHJhbnNhY3Rpb25cIixcbiAgICAgIFwiSURCQ3Vyc29yXCIsXG4gICAgICBcIldlYlNvY2tldFwiXG4gICAgXSk7XG4gICAgZm9yIChsZXQgYyA9IDA7IGMgPCBlLmxlbmd0aDsgYysrKSB7XG4gICAgICBjb25zdCBmID0gbltlW2NdXTtcbiAgICAgIGY/LnByb3RvdHlwZSAmJiBsdChmLnByb3RvdHlwZSwgQmUoZi5wcm90b3R5cGUpLCBhKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gWnQodCkge1xuICAgIHQuX19sb2FkX3BhdGNoKFwibGVnYWN5XCIsIChuKSA9PiB7XG4gICAgICBjb25zdCBhID0gblt0Ll9fc3ltYm9sX18oXCJsZWdhY3lQYXRjaFwiKV07XG4gICAgICBhICYmIGEoKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJ0aW1lcnNcIiwgKG4pID0+IHtcbiAgICAgIGNvbnN0IGUgPSBcImNsZWFyXCI7XG4gICAgICBiZShuLCBcInNldFwiLCBlLCBcIlRpbWVvdXRcIiksIGJlKG4sIFwic2V0XCIsIGUsIFwiSW50ZXJ2YWxcIiksIGJlKG4sIFwic2V0XCIsIGUsIFwiSW1tZWRpYXRlXCIpO1xuICAgIH0pLCB0Ll9fbG9hZF9wYXRjaChcInJlcXVlc3RBbmltYXRpb25GcmFtZVwiLCAobikgPT4ge1xuICAgICAgYmUobiwgXCJyZXF1ZXN0XCIsIFwiY2FuY2VsXCIsIFwiQW5pbWF0aW9uRnJhbWVcIiksIGJlKG4sIFwibW96UmVxdWVzdFwiLCBcIm1vekNhbmNlbFwiLCBcIkFuaW1hdGlvbkZyYW1lXCIpLCBiZShuLCBcIndlYmtpdFJlcXVlc3RcIiwgXCJ3ZWJraXRDYW5jZWxcIiwgXCJBbmltYXRpb25GcmFtZVwiKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJibG9ja2luZ1wiLCAobiwgYSkgPT4ge1xuICAgICAgY29uc3QgZSA9IFtcImFsZXJ0XCIsIFwicHJvbXB0XCIsIFwiY29uZmlybVwiXTtcbiAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgZS5sZW5ndGg7IGMrKykge1xuICAgICAgICBjb25zdCBmID0gZVtjXTtcbiAgICAgICAgRWUobiwgZiwgKHAsIFQsIHkpID0+IGZ1bmN0aW9uKHcsIF8pIHtcbiAgICAgICAgICByZXR1cm4gYS5jdXJyZW50LnJ1bihwLCBuLCBfLCB5KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSksIHQuX19sb2FkX3BhdGNoKFwiRXZlbnRUYXJnZXRcIiwgKG4sIGEsIGUpID0+IHtcbiAgICAgIE90KG4sIGUpLCBTdChuLCBlKTtcbiAgICAgIGNvbnN0IGMgPSBuLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7XG4gICAgICBjICYmIGMucHJvdG90eXBlICYmIGUucGF0Y2hFdmVudFRhcmdldChuLCBlLCBbYy5wcm90b3R5cGVdKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJNdXRhdGlvbk9ic2VydmVyXCIsIChuLCBhLCBlKSA9PiB7XG4gICAgICBTZShcIk11dGF0aW9uT2JzZXJ2ZXJcIiksIFNlKFwiV2ViS2l0TXV0YXRpb25PYnNlcnZlclwiKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJJbnRlcnNlY3Rpb25PYnNlcnZlclwiLCAobiwgYSwgZSkgPT4ge1xuICAgICAgU2UoXCJJbnRlcnNlY3Rpb25PYnNlcnZlclwiKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJGaWxlUmVhZGVyXCIsIChuLCBhLCBlKSA9PiB7XG4gICAgICBTZShcIkZpbGVSZWFkZXJcIik7XG4gICAgfSksIHQuX19sb2FkX3BhdGNoKFwib25fcHJvcGVydHlcIiwgKG4sIGEsIGUpID0+IHtcbiAgICAgIE50KGUsIG4pO1xuICAgIH0pLCB0Ll9fbG9hZF9wYXRjaChcImN1c3RvbUVsZW1lbnRzXCIsIChuLCBhLCBlKSA9PiB7XG4gICAgICBEdChuLCBlKTtcbiAgICB9KSwgdC5fX2xvYWRfcGF0Y2goXCJYSFJcIiwgKG4sIGEpID0+IHtcbiAgICAgIHcobik7XG4gICAgICBjb25zdCBlID0gSChcInhoclRhc2tcIiksIGMgPSBIKFwieGhyU3luY1wiKSwgZiA9IEgoXCJ4aHJMaXN0ZW5lclwiKSwgcCA9IEgoXCJ4aHJTY2hlZHVsZWRcIiksIFQgPSBIKFwieGhyVVJMXCIpLCB5ID0gSChcInhockVycm9yQmVmb3JlU2NoZWR1bGVkXCIpO1xuICAgICAgZnVuY3Rpb24gdyhfKSB7XG4gICAgICAgIGNvbnN0IEMgPSBfLlhNTEh0dHBSZXF1ZXN0O1xuICAgICAgICBpZiAoIUMpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBNID0gQy5wcm90b3R5cGU7XG4gICAgICAgIGZ1bmN0aW9uIEYoUCkge1xuICAgICAgICAgIHJldHVybiBQW2VdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBYID0gTVtqZV0sIG5lID0gTVtIZV07XG4gICAgICAgIGlmICghWCkge1xuICAgICAgICAgIGNvbnN0IFAgPSBfLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7XG4gICAgICAgICAgaWYgKFApIHtcbiAgICAgICAgICAgIGNvbnN0IGIgPSBQLnByb3RvdHlwZTtcbiAgICAgICAgICAgIFggPSBiW2plXSwgbmUgPSBiW0hlXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmUgPSBcInJlYWR5c3RhdGVjaGFuZ2VcIiwgSiA9IFwic2NoZWR1bGVkXCI7XG4gICAgICAgIGZ1bmN0aW9uIGsoUCkge1xuICAgICAgICAgIGNvbnN0IGIgPSBQLmRhdGEsIEQgPSBiLnRhcmdldDtcbiAgICAgICAgICBEW3BdID0gZmFsc2UsIERbeV0gPSBmYWxzZTtcbiAgICAgICAgICBjb25zdCBvZSA9IERbZl07XG4gICAgICAgICAgWCB8fCAoWCA9IERbamVdLCBuZSA9IERbSGVdKSwgb2UgJiYgbmUuY2FsbChELCByZSwgb2UpO1xuICAgICAgICAgIGNvbnN0ICQgPSBEW2ZdID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKEQucmVhZHlTdGF0ZSA9PT0gRC5ET05FKVxuICAgICAgICAgICAgICBpZiAoIWIuYWJvcnRlZCAmJiBEW3BdICYmIFAuc3RhdGUgPT09IEopIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzID0gRFthLl9fc3ltYm9sX18oXCJsb2FkZmFsc2VcIildO1xuICAgICAgICAgICAgICAgIGlmIChELnN0YXR1cyAhPT0gMCAmJiBzICYmIHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgaSA9IFAuaW52b2tlO1xuICAgICAgICAgICAgICAgICAgUC5pbnZva2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgciA9IERbYS5fX3N5bWJvbF9fKFwibG9hZGZhbHNlXCIpXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgRSA9IDA7IEUgPCByLmxlbmd0aDsgRSsrKVxuICAgICAgICAgICAgICAgICAgICAgIHJbRV0gPT09IFAgJiYgci5zcGxpY2UoRSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICFiLmFib3J0ZWQgJiYgUC5zdGF0ZSA9PT0gSiAmJiBpLmNhbGwoUCk7XG4gICAgICAgICAgICAgICAgICB9LCBzLnB1c2goUCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICAgICAgICBQLmludm9rZSgpO1xuICAgICAgICAgICAgICB9IGVsc2UgIWIuYWJvcnRlZCAmJiBEW3BdID09PSBmYWxzZSAmJiAoRFt5XSA9IHRydWUpO1xuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIFguY2FsbChELCByZSwgJCksIERbZV0gfHwgKERbZV0gPSBQKSwgWS5hcHBseShELCBiLmFyZ3MpLCBEW3BdID0gdHJ1ZSwgUDtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBkKCkge1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHgoUCkge1xuICAgICAgICAgIGNvbnN0IGIgPSBQLmRhdGE7XG4gICAgICAgICAgcmV0dXJuIGIuYWJvcnRlZCA9IHRydWUsIE8uYXBwbHkoYi50YXJnZXQsIGIuYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgViA9IEVlKE0sIFwib3BlblwiLCAoKSA9PiBmdW5jdGlvbihQLCBiKSB7XG4gICAgICAgICAgcmV0dXJuIFBbY10gPSBiWzJdID09IGZhbHNlLCBQW1RdID0gYlsxXSwgVi5hcHBseShQLCBiKTtcbiAgICAgICAgfSksIEsgPSBcIlhNTEh0dHBSZXF1ZXN0LnNlbmRcIiwgVSA9IEgoXCJmZXRjaFRhc2tBYm9ydGluZ1wiKSwgZyA9IEgoXCJmZXRjaFRhc2tTY2hlZHVsaW5nXCIpLCBZID0gRWUoTSwgXCJzZW5kXCIsICgpID0+IGZ1bmN0aW9uKFAsIGIpIHtcbiAgICAgICAgICBpZiAoYS5jdXJyZW50W2ddID09PSB0cnVlIHx8IFBbY10pXG4gICAgICAgICAgICByZXR1cm4gWS5hcHBseShQLCBiKTtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBEID0ge1xuICAgICAgICAgICAgICB0YXJnZXQ6IFAsXG4gICAgICAgICAgICAgIHVybDogUFtUXSxcbiAgICAgICAgICAgICAgaXNQZXJpb2RpYzogZmFsc2UsXG4gICAgICAgICAgICAgIGFyZ3M6IGIsXG4gICAgICAgICAgICAgIGFib3J0ZWQ6IGZhbHNlXG4gICAgICAgICAgICB9LCBvZSA9IEZlKEssIGQsIEQsIGssIHgpO1xuICAgICAgICAgICAgUCAmJiBQW3ldID09PSB0cnVlICYmICFELmFib3J0ZWQgJiYgb2Uuc3RhdGUgPT09IEogJiYgb2UuaW52b2tlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSwgTyA9IEVlKE0sIFwiYWJvcnRcIiwgKCkgPT4gZnVuY3Rpb24oUCwgYikge1xuICAgICAgICAgIGNvbnN0IEQgPSBGKFApO1xuICAgICAgICAgIGlmIChEICYmIHR5cGVvZiBELnR5cGUgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgaWYgKEQuY2FuY2VsRm4gPT0gbnVsbCB8fCBELmRhdGEgJiYgRC5kYXRhLmFib3J0ZWQpXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIEQuem9uZS5jYW5jZWxUYXNrKEQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoYS5jdXJyZW50W1VdID09PSB0cnVlKVxuICAgICAgICAgICAgcmV0dXJuIE8uYXBwbHkoUCwgYik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pLCB0Ll9fbG9hZF9wYXRjaChcImdlb2xvY2F0aW9uXCIsIChuKSA9PiB7XG4gICAgICBuLm5hdmlnYXRvciAmJiBuLm5hdmlnYXRvci5nZW9sb2NhdGlvbiAmJiB5dChuLm5hdmlnYXRvci5nZW9sb2NhdGlvbiwgW1wiZ2V0Q3VycmVudFBvc2l0aW9uXCIsIFwid2F0Y2hQb3NpdGlvblwiXSk7XG4gICAgfSksIHQuX19sb2FkX3BhdGNoKFwiUHJvbWlzZVJlamVjdGlvbkV2ZW50XCIsIChuLCBhKSA9PiB7XG4gICAgICBmdW5jdGlvbiBlKGMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGYpIHtcbiAgICAgICAgICBjdChuLCBjKS5mb3JFYWNoKChUKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB5ID0gbi5Qcm9taXNlUmVqZWN0aW9uRXZlbnQ7XG4gICAgICAgICAgICBpZiAoeSkge1xuICAgICAgICAgICAgICBjb25zdCB3ID0gbmV3IHkoYywge1xuICAgICAgICAgICAgICAgIHByb21pc2U6IGYucHJvbWlzZSxcbiAgICAgICAgICAgICAgICByZWFzb246IGYucmVqZWN0aW9uXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBULmludm9rZSh3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIG4uUHJvbWlzZVJlamVjdGlvbkV2ZW50ICYmIChhW0goXCJ1bmhhbmRsZWRQcm9taXNlUmVqZWN0aW9uSGFuZGxlclwiKV0gPSBlKFwidW5oYW5kbGVkcmVqZWN0aW9uXCIpLCBhW0goXCJyZWplY3Rpb25IYW5kbGVkSGFuZGxlclwiKV0gPSBlKFwicmVqZWN0aW9uaGFuZGxlZFwiKSk7XG4gICAgfSksIHQuX19sb2FkX3BhdGNoKFwicXVldWVNaWNyb3Rhc2tcIiwgKG4sIGEsIGUpID0+IHtcbiAgICAgIHd0KG4sIGUpO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIEx0KHQpIHtcbiAgICB0Ll9fbG9hZF9wYXRjaChcIlpvbmVBd2FyZVByb21pc2VcIiwgKG4sIGEsIGUpID0+IHtcbiAgICAgIGNvbnN0IGMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBmID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuICAgICAgZnVuY3Rpb24gcChoKSB7XG4gICAgICAgIGlmIChoICYmIGgudG9TdHJpbmcgPT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpIHtcbiAgICAgICAgICBjb25zdCBsID0gaC5jb25zdHJ1Y3RvciAmJiBoLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgICAgcmV0dXJuIChsIHx8IFwiXCIpICsgXCI6IFwiICsgSlNPTi5zdHJpbmdpZnkoaCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGggPyBoLnRvU3RyaW5nKCkgOiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaCk7XG4gICAgICB9XG4gICAgICBjb25zdCBUID0gZS5zeW1ib2wsIHkgPSBbXSwgdyA9IG5bVChcIkRJU0FCTEVfV1JBUFBJTkdfVU5DQVVHSFRfUFJPTUlTRV9SRUpFQ1RJT05cIildICE9PSBmYWxzZSwgXyA9IFQoXCJQcm9taXNlXCIpLCBDID0gVChcInRoZW5cIiksIE0gPSBcIl9fY3JlYXRpb25UcmFjZV9fXCI7XG4gICAgICBlLm9uVW5oYW5kbGVkRXJyb3IgPSAoaCkgPT4ge1xuICAgICAgICBpZiAoZS5zaG93VW5jYXVnaHRFcnJvcigpKSB7XG4gICAgICAgICAgY29uc3QgbCA9IGggJiYgaC5yZWplY3Rpb247XG4gICAgICAgICAgbCA/IGNvbnNvbGUuZXJyb3IoXCJVbmhhbmRsZWQgUHJvbWlzZSByZWplY3Rpb246XCIsIGwgaW5zdGFuY2VvZiBFcnJvciA/IGwubWVzc2FnZSA6IGwsIFwiOyBab25lOlwiLCBoLnpvbmUubmFtZSwgXCI7IFRhc2s6XCIsIGgudGFzayAmJiBoLnRhc2suc291cmNlLCBcIjsgVmFsdWU6XCIsIGwsIGwgaW5zdGFuY2VvZiBFcnJvciA/IGwuc3RhY2sgOiB2b2lkIDApIDogY29uc29sZS5lcnJvcihoKTtcbiAgICAgICAgfVxuICAgICAgfSwgZS5taWNyb3Rhc2tEcmFpbkRvbmUgPSAoKSA9PiB7XG4gICAgICAgIGZvciAoOyB5Lmxlbmd0aDsgKSB7XG4gICAgICAgICAgY29uc3QgaCA9IHkuc2hpZnQoKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaC56b25lLnJ1bkd1YXJkZWQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyBoLnRocm93T3JpZ2luYWwgPyBoLnJlamVjdGlvbiA6IGg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGNhdGNoIChsKSB7XG4gICAgICAgICAgICBYKGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IEYgPSBUKFwidW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkhhbmRsZXJcIik7XG4gICAgICBmdW5jdGlvbiBYKGgpIHtcbiAgICAgICAgZS5vblVuaGFuZGxlZEVycm9yKGgpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGwgPSBhW0ZdO1xuICAgICAgICAgIHR5cGVvZiBsID09IFwiZnVuY3Rpb25cIiAmJiBsLmNhbGwodGhpcywgaCk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBuZShoKSB7XG4gICAgICAgIHJldHVybiBoICYmIHR5cGVvZiBoLnRoZW4gPT0gXCJmdW5jdGlvblwiO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcmUoaCkge1xuICAgICAgICByZXR1cm4gaDtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIEooaCkge1xuICAgICAgICByZXR1cm4gQS5yZWplY3QoaCk7XG4gICAgICB9XG4gICAgICBjb25zdCBrID0gVChcInN0YXRlXCIpLCBkID0gVChcInZhbHVlXCIpLCB4ID0gVChcImZpbmFsbHlcIiksIFYgPSBUKFwicGFyZW50UHJvbWlzZVZhbHVlXCIpLCBLID0gVChcInBhcmVudFByb21pc2VTdGF0ZVwiKSwgVSA9IFwiUHJvbWlzZS50aGVuXCIsIGcgPSBudWxsLCBZID0gdHJ1ZSwgTyA9IGZhbHNlLCBQID0gMDtcbiAgICAgIGZ1bmN0aW9uIGIoaCwgbCkge1xuICAgICAgICByZXR1cm4gKG8pID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgSShoLCBsLCBvKTtcbiAgICAgICAgICB9IGNhdGNoICh1KSB7XG4gICAgICAgICAgICBJKGgsIGZhbHNlLCB1KTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBEID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGxldCBoID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihvKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaCB8fCAoaCA9IHRydWUsIG8uYXBwbHkobnVsbCwgYXJndW1lbnRzKSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgIH0sIG9lID0gXCJQcm9taXNlIHJlc29sdmVkIHdpdGggaXRzZWxmXCIsICQgPSBUKFwiY3VycmVudFRhc2tUcmFjZVwiKTtcbiAgICAgIGZ1bmN0aW9uIEkoaCwgbCwgbykge1xuICAgICAgICBjb25zdCB1ID0gRCgpO1xuICAgICAgICBpZiAoaCA9PT0gbylcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKG9lKTtcbiAgICAgICAgaWYgKGhba10gPT09IGcpIHtcbiAgICAgICAgICBsZXQgdiA9IG51bGw7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBvID09IFwiZnVuY3Rpb25cIikgJiYgKHYgPSBvICYmIG8udGhlbik7XG4gICAgICAgICAgfSBjYXRjaCAoUikge1xuICAgICAgICAgICAgcmV0dXJuIHUoKCkgPT4ge1xuICAgICAgICAgICAgICBJKGgsIGZhbHNlLCBSKTtcbiAgICAgICAgICAgIH0pKCksIGg7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChsICE9PSBPICYmIG8gaW5zdGFuY2VvZiBBICYmIG8uaGFzT3duUHJvcGVydHkoaykgJiYgby5oYXNPd25Qcm9wZXJ0eShkKSAmJiBvW2tdICE9PSBnKVxuICAgICAgICAgICAgaShvKSwgSShoLCBvW2tdLCBvW2RdKTtcbiAgICAgICAgICBlbHNlIGlmIChsICE9PSBPICYmIHR5cGVvZiB2ID09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHYuY2FsbChvLCB1KGIoaCwgbCkpLCB1KGIoaCwgITEpKSk7XG4gICAgICAgICAgICB9IGNhdGNoIChSKSB7XG4gICAgICAgICAgICAgIHUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIEkoaCwgZmFsc2UsIFIpO1xuICAgICAgICAgICAgICB9KSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaFtrXSA9IGw7XG4gICAgICAgICAgICBjb25zdCBSID0gaFtkXTtcbiAgICAgICAgICAgIGlmIChoW2RdID0gbywgaFt4XSA9PT0geCAmJiBsID09PSBZICYmIChoW2tdID0gaFtLXSwgaFtkXSA9IGhbVl0pLCBsID09PSBPICYmIG8gaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgICBjb25zdCBtID0gYS5jdXJyZW50VGFzayAmJiBhLmN1cnJlbnRUYXNrLmRhdGEgJiYgYS5jdXJyZW50VGFzay5kYXRhW01dO1xuICAgICAgICAgICAgICBtICYmIGYobywgJCwge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IG0gPSAwOyBtIDwgUi5sZW5ndGg7IClcbiAgICAgICAgICAgICAgcihoLCBSW20rK10sIFJbbSsrXSwgUlttKytdLCBSW20rK10pO1xuICAgICAgICAgICAgaWYgKFIubGVuZ3RoID09IDAgJiYgbCA9PSBPKSB7XG4gICAgICAgICAgICAgIGhba10gPSBQO1xuICAgICAgICAgICAgICBsZXQgbSA9IG87XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5jYXVnaHQgKGluIHByb21pc2UpOiBcIiArIHAobykgKyAobyAmJiBvLnN0YWNrID8gYFxuYCArIG8uc3RhY2sgOiBcIlwiKSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKE4pIHtcbiAgICAgICAgICAgICAgICBtID0gTjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB3ICYmIChtLnRocm93T3JpZ2luYWwgPSB0cnVlKSwgbS5yZWplY3Rpb24gPSBvLCBtLnByb21pc2UgPSBoLCBtLnpvbmUgPSBhLmN1cnJlbnQsIG0udGFzayA9IGEuY3VycmVudFRhc2ssIHkucHVzaChtKSwgZS5zY2hlZHVsZU1pY3JvVGFzaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHMgPSBUKFwicmVqZWN0aW9uSGFuZGxlZEhhbmRsZXJcIik7XG4gICAgICBmdW5jdGlvbiBpKGgpIHtcbiAgICAgICAgaWYgKGhba10gPT09IFApIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbCA9IGFbc107XG4gICAgICAgICAgICBsICYmIHR5cGVvZiBsID09IFwiZnVuY3Rpb25cIiAmJiBsLmNhbGwodGhpcywgeyByZWplY3Rpb246IGhbZF0sIHByb21pc2U6IGggfSk7XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgfVxuICAgICAgICAgIGhba10gPSBPO1xuICAgICAgICAgIGZvciAobGV0IGwgPSAwOyBsIDwgeS5sZW5ndGg7IGwrKylcbiAgICAgICAgICAgIGggPT09IHlbbF0ucHJvbWlzZSAmJiB5LnNwbGljZShsLCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcihoLCBsLCBvLCB1LCB2KSB7XG4gICAgICAgIGkoaCk7XG4gICAgICAgIGNvbnN0IFIgPSBoW2tdLCBtID0gUiA/IHR5cGVvZiB1ID09IFwiZnVuY3Rpb25cIiA/IHUgOiByZSA6IHR5cGVvZiB2ID09IFwiZnVuY3Rpb25cIiA/IHYgOiBKO1xuICAgICAgICBsLnNjaGVkdWxlTWljcm9UYXNrKFUsICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgTiA9IGhbZF0sIFogPSAhIW8gJiYgeCA9PT0gb1t4XTtcbiAgICAgICAgICAgIFogJiYgKG9bVl0gPSBOLCBvW0tdID0gUik7XG4gICAgICAgICAgICBjb25zdCBMID0gbC5ydW4obSwgdm9pZCAwLCBaICYmIG0gIT09IEogJiYgbSAhPT0gcmUgPyBbXSA6IFtOXSk7XG4gICAgICAgICAgICBJKG8sICEwLCBMKTtcbiAgICAgICAgICB9IGNhdGNoIChOKSB7XG4gICAgICAgICAgICBJKG8sIGZhbHNlLCBOKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIG8pO1xuICAgICAgfVxuICAgICAgY29uc3QgRSA9IFwiZnVuY3Rpb24gWm9uZUF3YXJlUHJvbWlzZSgpIHsgW25hdGl2ZSBjb2RlXSB9XCIsIEcgPSBmdW5jdGlvbigpIHtcbiAgICAgIH0sIGNlID0gbi5BZ2dyZWdhdGVFcnJvcjtcbiAgICAgIGNsYXNzIEEge1xuICAgICAgICBzdGF0aWMgdG9TdHJpbmcoKSB7XG4gICAgICAgICAgcmV0dXJuIEU7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIHJlc29sdmUobCkge1xuICAgICAgICAgIHJldHVybiBsIGluc3RhbmNlb2YgQSA/IGwgOiBJKG5ldyB0aGlzKG51bGwpLCBZLCBsKTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgcmVqZWN0KGwpIHtcbiAgICAgICAgICByZXR1cm4gSShuZXcgdGhpcyhudWxsKSwgTywgbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIHdpdGhSZXNvbHZlcnMoKSB7XG4gICAgICAgICAgY29uc3QgbCA9IHt9O1xuICAgICAgICAgIHJldHVybiBsLnByb21pc2UgPSBuZXcgQSgobywgdSkgPT4ge1xuICAgICAgICAgICAgbC5yZXNvbHZlID0gbywgbC5yZWplY3QgPSB1O1xuICAgICAgICAgIH0pLCBsO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBhbnkobCkge1xuICAgICAgICAgIGlmICghbCB8fCB0eXBlb2YgbFtTeW1ib2wuaXRlcmF0b3JdICE9IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgY2UoW10sIFwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWRcIikpO1xuICAgICAgICAgIGNvbnN0IG8gPSBbXTtcbiAgICAgICAgICBsZXQgdSA9IDA7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAobGV0IG0gb2YgbClcbiAgICAgICAgICAgICAgdSsrLCBvLnB1c2goQS5yZXNvbHZlKG0pKTtcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgY2UoW10sIFwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWRcIikpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodSA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgY2UoW10sIFwiQWxsIHByb21pc2VzIHdlcmUgcmVqZWN0ZWRcIikpO1xuICAgICAgICAgIGxldCB2ID0gZmFsc2U7XG4gICAgICAgICAgY29uc3QgUiA9IFtdO1xuICAgICAgICAgIHJldHVybiBuZXcgQSgobSwgTikgPT4ge1xuICAgICAgICAgICAgZm9yIChsZXQgWiA9IDA7IFogPCBvLmxlbmd0aDsgWisrKVxuICAgICAgICAgICAgICBvW1pdLnRoZW4oKEwpID0+IHtcbiAgICAgICAgICAgICAgICB2IHx8ICh2ID0gdHJ1ZSwgbShMKSk7XG4gICAgICAgICAgICAgIH0sIChMKSA9PiB7XG4gICAgICAgICAgICAgICAgUi5wdXNoKEwpLCB1LS0sIHUgPT09IDAgJiYgKHYgPSB0cnVlLCBOKG5ldyBjZShSLCBcIkFsbCBwcm9taXNlcyB3ZXJlIHJlamVjdGVkXCIpKSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyByYWNlKGwpIHtcbiAgICAgICAgICBsZXQgbywgdSwgdiA9IG5ldyB0aGlzKChOLCBaKSA9PiB7XG4gICAgICAgICAgICBvID0gTiwgdSA9IFo7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZnVuY3Rpb24gUihOKSB7XG4gICAgICAgICAgICBvKE4pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmdW5jdGlvbiBtKE4pIHtcbiAgICAgICAgICAgIHUoTik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IE4gb2YgbClcbiAgICAgICAgICAgIG5lKE4pIHx8IChOID0gdGhpcy5yZXNvbHZlKE4pKSwgTi50aGVuKFIsIG0pO1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBhbGwobCkge1xuICAgICAgICAgIHJldHVybiBBLmFsbFdpdGhDYWxsYmFjayhsKTtcbiAgICAgICAgfVxuICAgICAgICBzdGF0aWMgYWxsU2V0dGxlZChsKSB7XG4gICAgICAgICAgcmV0dXJuICh0aGlzICYmIHRoaXMucHJvdG90eXBlIGluc3RhbmNlb2YgQSA/IHRoaXMgOiBBKS5hbGxXaXRoQ2FsbGJhY2sobCwge1xuICAgICAgICAgICAgdGhlbkNhbGxiYWNrOiAodSkgPT4gKHsgc3RhdHVzOiBcImZ1bGZpbGxlZFwiLCB2YWx1ZTogdSB9KSxcbiAgICAgICAgICAgIGVycm9yQ2FsbGJhY2s6ICh1KSA9PiAoeyBzdGF0dXM6IFwicmVqZWN0ZWRcIiwgcmVhc29uOiB1IH0pXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGljIGFsbFdpdGhDYWxsYmFjayhsLCBvKSB7XG4gICAgICAgICAgbGV0IHUsIHYsIFIgPSBuZXcgdGhpcygoTCwgVykgPT4ge1xuICAgICAgICAgICAgdSA9IEwsIHYgPSBXO1xuICAgICAgICAgIH0pLCBtID0gMiwgTiA9IDA7XG4gICAgICAgICAgY29uc3QgWiA9IFtdO1xuICAgICAgICAgIGZvciAobGV0IEwgb2YgbCkge1xuICAgICAgICAgICAgbmUoTCkgfHwgKEwgPSB0aGlzLnJlc29sdmUoTCkpO1xuICAgICAgICAgICAgY29uc3QgVyA9IE47XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBMLnRoZW4oKHEpID0+IHtcbiAgICAgICAgICAgICAgICBaW1ddID0gbyA/IG8udGhlbkNhbGxiYWNrKHEpIDogcSwgbS0tLCBtID09PSAwICYmIHUoWik7XG4gICAgICAgICAgICAgIH0sIChxKSA9PiB7XG4gICAgICAgICAgICAgICAgbyA/IChaW1ddID0gby5lcnJvckNhbGxiYWNrKHEpLCBtLS0sIG0gPT09IDAgJiYgdShaKSkgOiB2KHEpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKHEpIHtcbiAgICAgICAgICAgICAgdihxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG0rKywgTisrO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbSAtPSAyLCBtID09PSAwICYmIHUoWiksIFI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3RydWN0b3IobCkge1xuICAgICAgICAgIGNvbnN0IG8gPSB0aGlzO1xuICAgICAgICAgIGlmICghKG8gaW5zdGFuY2VvZiBBKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk11c3QgYmUgYW4gaW5zdGFuY2VvZiBQcm9taXNlLlwiKTtcbiAgICAgICAgICBvW2tdID0gZywgb1tkXSA9IFtdO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB1ID0gRCgpO1xuICAgICAgICAgICAgbCAmJiBsKHUoYihvLCBZKSksIHUoYihvLCBPKSkpO1xuICAgICAgICAgIH0gY2F0Y2ggKHUpIHtcbiAgICAgICAgICAgIEkobywgZmFsc2UsIHUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgICAgICAgcmV0dXJuIFwiUHJvbWlzZVwiO1xuICAgICAgICB9XG4gICAgICAgIGdldCBbU3ltYm9sLnNwZWNpZXNdKCkge1xuICAgICAgICAgIHJldHVybiBBO1xuICAgICAgICB9XG4gICAgICAgIHRoZW4obCwgbykge1xuICAgICAgICAgIGxldCB1ID0gdGhpcy5jb25zdHJ1Y3Rvcj8uW1N5bWJvbC5zcGVjaWVzXTtcbiAgICAgICAgICAoIXUgfHwgdHlwZW9mIHUgIT0gXCJmdW5jdGlvblwiKSAmJiAodSA9IHRoaXMuY29uc3RydWN0b3IgfHwgQSk7XG4gICAgICAgICAgY29uc3QgdiA9IG5ldyB1KEcpLCBSID0gYS5jdXJyZW50O1xuICAgICAgICAgIHJldHVybiB0aGlzW2tdID09IGcgPyB0aGlzW2RdLnB1c2goUiwgdiwgbCwgbykgOiByKHRoaXMsIFIsIHYsIGwsIG8pLCB2O1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoKGwpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy50aGVuKG51bGwsIGwpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkobCkge1xuICAgICAgICAgIGxldCBvID0gdGhpcy5jb25zdHJ1Y3Rvcj8uW1N5bWJvbC5zcGVjaWVzXTtcbiAgICAgICAgICAoIW8gfHwgdHlwZW9mIG8gIT0gXCJmdW5jdGlvblwiKSAmJiAobyA9IEEpO1xuICAgICAgICAgIGNvbnN0IHUgPSBuZXcgbyhHKTtcbiAgICAgICAgICB1W3hdID0geDtcbiAgICAgICAgICBjb25zdCB2ID0gYS5jdXJyZW50O1xuICAgICAgICAgIHJldHVybiB0aGlzW2tdID09IGcgPyB0aGlzW2RdLnB1c2godiwgdSwgbCwgbCkgOiByKHRoaXMsIHYsIHUsIGwsIGwpLCB1O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBBLnJlc29sdmUgPSBBLnJlc29sdmUsIEEucmVqZWN0ID0gQS5yZWplY3QsIEEucmFjZSA9IEEucmFjZSwgQS5hbGwgPSBBLmFsbDtcbiAgICAgIGNvbnN0IGdlID0gbltfXSA9IG4uUHJvbWlzZTtcbiAgICAgIG4uUHJvbWlzZSA9IEE7XG4gICAgICBjb25zdCB5ZSA9IFQoXCJ0aGVuUGF0Y2hlZFwiKTtcbiAgICAgIGZ1bmN0aW9uIHNlKGgpIHtcbiAgICAgICAgY29uc3QgbCA9IGgucHJvdG90eXBlLCBvID0gYyhsLCBcInRoZW5cIik7XG4gICAgICAgIGlmIChvICYmIChvLndyaXRhYmxlID09PSBmYWxzZSB8fCAhby5jb25maWd1cmFibGUpKVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdSA9IGwudGhlbjtcbiAgICAgICAgbFtDXSA9IHUsIGgucHJvdG90eXBlLnRoZW4gPSBmdW5jdGlvbih2LCBSKSB7XG4gICAgICAgICAgcmV0dXJuIG5ldyBBKChOLCBaKSA9PiB7XG4gICAgICAgICAgICB1LmNhbGwodGhpcywgTiwgWik7XG4gICAgICAgICAgfSkudGhlbih2LCBSKTtcbiAgICAgICAgfSwgaFt5ZV0gPSB0cnVlO1xuICAgICAgfVxuICAgICAgZS5wYXRjaFRoZW4gPSBzZTtcbiAgICAgIGZ1bmN0aW9uIENlKGgpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGwsIG8pIHtcbiAgICAgICAgICBsZXQgdSA9IGguYXBwbHkobCwgbyk7XG4gICAgICAgICAgaWYgKHUgaW5zdGFuY2VvZiBBKVxuICAgICAgICAgICAgcmV0dXJuIHU7XG4gICAgICAgICAgbGV0IHYgPSB1LmNvbnN0cnVjdG9yO1xuICAgICAgICAgIHJldHVybiB2W3llXSB8fCBzZSh2KSwgdTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBnZSAmJiAoc2UoZ2UpLCBFZShuLCBcImZldGNoXCIsIChoKSA9PiBDZShoKSkpLCBQcm9taXNlW2EuX19zeW1ib2xfXyhcInVuY2F1Z2h0UHJvbWlzZUVycm9yc1wiKV0gPSB5LCBBO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIE10KHQpIHtcbiAgICB0Ll9fbG9hZF9wYXRjaChcInRvU3RyaW5nXCIsIChuKSA9PiB7XG4gICAgICBjb25zdCBhID0gRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLCBlID0gSChcIk9yaWdpbmFsRGVsZWdhdGVcIiksIGMgPSBIKFwiUHJvbWlzZVwiKSwgZiA9IEgoXCJFcnJvclwiKSwgcCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgY29uc3QgXyA9IHRoaXNbZV07XG4gICAgICAgICAgaWYgKF8pXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIF8gPT0gXCJmdW5jdGlvblwiID8gYS5jYWxsKF8pIDogT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKF8pO1xuICAgICAgICAgIGlmICh0aGlzID09PSBQcm9taXNlKSB7XG4gICAgICAgICAgICBjb25zdCBDID0gbltjXTtcbiAgICAgICAgICAgIGlmIChDKVxuICAgICAgICAgICAgICByZXR1cm4gYS5jYWxsKEMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcyA9PT0gRXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnN0IEMgPSBuW2ZdO1xuICAgICAgICAgICAgaWYgKEMpXG4gICAgICAgICAgICAgIHJldHVybiBhLmNhbGwoQyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhLmNhbGwodGhpcyk7XG4gICAgICB9O1xuICAgICAgcFtlXSA9IGEsIEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IHA7XG4gICAgICBjb25zdCBUID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZywgeSA9IFwiW29iamVjdCBQcm9taXNlXVwiO1xuICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIFByb21pc2UgPT0gXCJmdW5jdGlvblwiICYmIHRoaXMgaW5zdGFuY2VvZiBQcm9taXNlID8geSA6IFQuY2FsbCh0aGlzKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gSXQodCwgbiwgYSwgZSwgYykge1xuICAgIGNvbnN0IGYgPSBab25lLl9fc3ltYm9sX18oZSk7XG4gICAgaWYgKG5bZl0pXG4gICAgICByZXR1cm47XG4gICAgY29uc3QgcCA9IG5bZl0gPSBuW2VdO1xuICAgIG5bZV0gPSBmdW5jdGlvbihULCB5LCB3KSB7XG4gICAgICByZXR1cm4geSAmJiB5LnByb3RvdHlwZSAmJiBjLmZvckVhY2goZnVuY3Rpb24oXykge1xuICAgICAgICBjb25zdCBDID0gYCR7YX0uJHtlfTo6YCArIF8sIE0gPSB5LnByb3RvdHlwZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoTS5oYXNPd25Qcm9wZXJ0eShfKSkge1xuICAgICAgICAgICAgY29uc3QgRiA9IHQuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE0sIF8pO1xuICAgICAgICAgICAgRiAmJiBGLnZhbHVlID8gKEYudmFsdWUgPSB0LndyYXBXaXRoQ3VycmVudFpvbmUoRi52YWx1ZSwgQyksIHQuX3JlZGVmaW5lUHJvcGVydHkoeS5wcm90b3R5cGUsIF8sIEYpKSA6IE1bX10gJiYgKE1bX10gPSB0LndyYXBXaXRoQ3VycmVudFpvbmUoTVtfXSwgQykpO1xuICAgICAgICAgIH0gZWxzZSBNW19dICYmIChNW19dID0gdC53cmFwV2l0aEN1cnJlbnRab25lKE1bX10sIEMpKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgIH1cbiAgICAgIH0pLCBwLmNhbGwobiwgVCwgeSwgdyk7XG4gICAgfSwgdC5hdHRhY2hPcmlnaW5Ub1BhdGNoZWQobltlXSwgcCk7XG4gIH1cbiAgZnVuY3Rpb24gQXQodCkge1xuICAgIHQuX19sb2FkX3BhdGNoKFwidXRpbFwiLCAobiwgYSwgZSkgPT4ge1xuICAgICAgY29uc3QgYyA9IEJlKG4pO1xuICAgICAgZS5wYXRjaE9uUHJvcGVydGllcyA9IFFlLCBlLnBhdGNoTWV0aG9kID0gRWUsIGUuYmluZEFyZ3VtZW50cyA9IFZlLCBlLnBhdGNoTWFjcm9UYXNrID0gdnQ7XG4gICAgICBjb25zdCBmID0gYS5fX3N5bWJvbF9fKFwiQkxBQ0tfTElTVEVEX0VWRU5UU1wiKSwgcCA9IGEuX19zeW1ib2xfXyhcIlVOUEFUQ0hFRF9FVkVOVFNcIik7XG4gICAgICBuW3BdICYmIChuW2ZdID0gbltwXSksIG5bZl0gJiYgKGFbZl0gPSBhW3BdID0gbltmXSksIGUucGF0Y2hFdmVudFByb3RvdHlwZSA9IFJ0LCBlLnBhdGNoRXZlbnRUYXJnZXQgPSBQdCwgZS5pc0lFT3JFZGdlID0gYnQsIGUuT2JqZWN0RGVmaW5lUHJvcGVydHkgPSB0ZSwgZS5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBlZSwgZS5PYmplY3RDcmVhdGUgPSBmZSwgZS5BcnJheVNsaWNlID0ga2UsIGUucGF0Y2hDbGFzcyA9IFNlLCBlLndyYXBXaXRoQ3VycmVudFpvbmUgPSB4ZSwgZS5maWx0ZXJQcm9wZXJ0aWVzID0gYXQsIGUuYXR0YWNoT3JpZ2luVG9QYXRjaGVkID0gcGUsIGUuX3JlZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHksIGUucGF0Y2hDYWxsYmFja3MgPSBJdCwgZS5nZXRHbG9iYWxPYmplY3RzID0gKCkgPT4gKHtcbiAgICAgICAgZ2xvYmFsU291cmNlczogcnQsXG4gICAgICAgIHpvbmVTeW1ib2xFdmVudE5hbWVzOiBhZSxcbiAgICAgICAgZXZlbnROYW1lczogYyxcbiAgICAgICAgaXNCcm93c2VyOiB6ZSxcbiAgICAgICAgaXNNaXg6ICRlLFxuICAgICAgICBpc05vZGU6IFplLFxuICAgICAgICBUUlVFX1NUUjogX2UsXG4gICAgICAgIEZBTFNFX1NUUjogVGUsXG4gICAgICAgIFpPTkVfU1lNQk9MX1BSRUZJWDogd2UsXG4gICAgICAgIEFERF9FVkVOVF9MSVNURU5FUl9TVFI6IHZlLFxuICAgICAgICBSRU1PVkVfRVZFTlRfTElTVEVORVJfU1RSOiBBZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24ganQodCkge1xuICAgIEx0KHQpLCBNdCh0KSwgQXQodCk7XG4gIH1cbiAgY29uc3QgdXQgPSB6KCk7XG4gIHJldHVybiBqdCh1dCksIFp0KHV0KSwgcHQ7XG59XG5GdCgpO1xuXG5leHBvcnQgeyB6dCBhcyBab25lQ29udGV4dE1hbmFnZXIgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLFVBQVU7QUFFeEIsU0FBU0MsR0FBR0MsR0FBRztBQUNiLFNBQU9BLE1BQU0sV0FBV0EsSUFBSSxDQUFDLElBQUksT0FBT0EsRUFBRSxvQkFBb0IsY0FBYyxPQUFPQSxFQUFFLHVCQUF1QjtBQUM5RztBQUNBLElBQUlDLEtBQUssbUJBQW1CQztBQUFBO0FBQUEsR0FFekIsV0FBVztBQUNWLGFBQVNGLElBQUk7QUFDWCxXQUFLLFdBQVcsSUFBTyxLQUFLLGVBQWU7QUFBQSxJQUM3QztBQUNBLFdBQU9BLEVBQUUsVUFBVSx5QkFBeUIsU0FBU0csR0FBRztBQUN0RCxhQUFPQSxLQUFLQSxFQUFFLElBQUlGLEVBQUUsS0FBS0g7QUFBQSxJQUMzQixHQUFHRSxFQUFFLFVBQVUsZ0JBQWdCLFNBQVNHLEdBQUdDLEdBQUc7QUFDNUMsVUFBSUMsSUFBSSxNQUFNLEtBQUssV0FBVztBQUM1QixpQkFBUyxLQUFLLE1BQU1DLEtBQUssQ0FBQyxHQUFHQyxLQUFLLEdB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LG9CQUFvQixPQUFPLGdCQUFnQkEsRUFBRSxpQkFBaUJxRyxJQUFJckcsRUFBRSxtQkFBbUIsT0FBTztBQUFBLFFBQzdhLGVBQWU7QUFBQSxRQUNmLHNCQUFzQjBEO0FBQUEsUUFDdEIsWUFBWW5DO0FBQUEsUUFDWixXQUFXdUI7QUFBQSxRQUNYLE9BQU9DO0FBQUEsUUFDUCxRQUFRRjtBQUFBLFFBQ1IsVUFBVTtBQUFBLFFBQ1YsV0FBV2I7QUFBQSxRQUNYLG9CQUFvQkM7QUFBQSxRQUNwQix3QkFBd0J6QztBQUFBLFFBQ3hCLDJCQUEyQnFDO0FBQUEsTUFDN0I7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNIO0FBQ0EsV0FBUzBFLEdBQUczRyxHQUFHO0FBQ2IsSUFBQXFHLEdBQUdyRyxDQUFDLEdBQUd1RyxHQUFHdkcsQ0FBQyxHQUFHMEcsR0FBRzFHLENBQUM7QUFBQSxFQUNwQjtBQUNBLFFBQU0sS0FBS1IsRUFBRTtBQUNiLFNBQU9tSCxHQUFHLEVBQUUsR0FBR1YsR0FBRyxFQUFFLEdBQUdwRztBQUN6QjtBQUNBRSxHQUFHOyIsCiAgIm5hbWVzIjogWyJhcyIsICJ4dCIsICJqIiwgIkV0IiwgInp0IiwgIlMiLCAiQiIsICJ6IiwgImllIiwgImZlIiwgImtlIiwgInZlIiwgInB0IiwgImd0IiwgIkZ0IiwgInQiLCAiSSIsICJhIiwgInMiLCAiZSIsICJiIiwgIkQiLCAiaSIsICJFIiwgIlAiLCAiZiIsICJHIiwgImNlIiwgIkEiLCAiSiIsICJZIiwgImciLCAiZ2UiLCAieCIsICJkIiwgInllIiwgIksiLCAiayIsICJDZSIsICJwIiwgIlUiLCAiViIsICJjIiwgIlQiLCAiQyIsICJNIiwgIkYiLCAiJCIsICJBZSIsICJqZSIsICJIZSIsICJUZSIsICJ3ZSIsICJ4ZSIsICJGZSIsICJIIiwgIk5lIiwgIkRlIiwgIm10IiwgIlZlIiwgInl0IiwgIlhlIiwgInBlIiwgIlllIiwgIlplIiwgInplIiwgIiRlIiwgIkxlIiwgImt0IiwgIkplIiwgIktlIiwgIlNlIiwgIkVlIiwgInZ0IiwgIkdlIiwgImJ0IiwgIkN0IiwgImFlIiwgIml0IiwgIlB0IiwgInUiLCAidiIsICJSIiwgImgiLCAiTiIsICJaIiwgIkwiLCAibWUiLCAiaGUiLCAiUGUiLCAiZGUiLCAiVWUiLCAiZnQiLCAiSHQiLCAiV2UiLCAiaHQiLCAiUmUiLCAiZHQiLCAiSWUiLCAiVHQiLCAiT2UiLCAiY3QiLCAiUnQiLCAid3QiLCAiTWUiLCAiYmUiLCAiRHQiLCAiU3QiLCAiT3QiLCAiYXQiLCAiQmUiLCAiTnQiLCAiWnQiLCAiciIsICJ5IiwgInciLCAiTHQiLCAibyIsICJNdCIsICJfIiwgIkl0IiwgIkF0IiwgImp0Il0KfQo=
|