@getopenpay/openpay-js 0.5.7-alpha.589ead1 → 0.5.7
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/{ExportResult-Bo1QOwfo.js → ExportResult-B-YLKMaU.js} +1 -1
- package/dist/{Resource-ByOJ8tkj.js → Resource-Bx_VuhUk.js} +3 -3
- package/dist/{SimpleSpanProcessor-D_sHKsSn.js → SimpleSpanProcessor-Bh5q0GmE.js} +8 -8
- package/dist/{_commonjsHelpers-DnMzE-71.js → _commonjsHelpers-f76XedMs.js} +1 -1
- package/dist/{detect-resources-CaWtElZr.js → detect-resources-DNU1_3GE.js} +8 -8
- package/dist/{diag-api-DAsRXs3b.js → diag-api-D9IWSUsW.js} +2 -2
- package/dist/{index-DLb2g5Bf.js → index-30ZlhcLu.js} +5 -5
- package/dist/{index-DLeOxeWp.js → index-B5mFO64c.js} +5 -5
- package/dist/{index-CF-DSTKu.js → index-BEPYQb8x.js} +2 -2
- package/dist/{index-Die4Lhdg.js → index-C3xfmnuK.js} +7 -7
- package/dist/{index-Bih9tP98.js → index-DQ3qlDEd.js} +7 -7
- package/dist/{index-CAXewtIL.js → index-DsU78E0F.js} +1 -1
- package/dist/{index-BVePm1pB.js → index-DyyV4YDA.js} +4 -4
- package/dist/index-Xxndn7Y1.js +6823 -0
- package/dist/{index-BValH8xN.js → index-upVsoy_P.js} +6 -6
- package/dist/{index-OfX0TVSj.js → index-zbYl1-1s.js} +2 -2
- package/dist/index.es.js +2 -2
- package/dist/index.umd.js +56 -43
- package/dist/lifecycle-BjQ-7GLm.js +119 -0
- package/dist/{metrics-api-_5uS60q1.js → metrics-api-DMMrpfD3.js} +2 -2
- package/dist/{sdk-info-CKnpG_QI.js → sdk-info-DiazhyI_.js} +3 -3
- package/dist/{url-CwONqRT7.js → url-Cnrlns-i.js} +3 -3
- package/dist/{utils-BGeftTvk.js → utils-CX5YT7yI.js} +1 -1
- package/dist/{utils-DDk98YyS.js → utils-DAwtFC1B.js} +2 -2
- package/dist/{utils-CzFaFOLd.js → utils-DWQb1oMe.js} +4 -4
- package/package.json +2 -1
- package/dist/index-DlrGfmQY.js +0 -6800
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { D as a } from "./index-
|
|
1
|
+
import { D as a } from "./index-Xxndn7Y1.js";
|
|
2
2
|
var r = a.instance();
|
|
3
3
|
export {
|
|
4
4
|
r as d
|
|
5
5
|
};
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiZGlhZy1hcGktIX57MDA1fX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IEQgYXMgRGlhZ0FQSSB9IGZyb20gJy4vaW5kZXgtIX57MDA2fX4uanMnO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8gU3BsaXQgbW9kdWxlLWxldmVsIHZhcmlhYmxlIGRlZmluaXRpb24gaW50byBzZXBhcmF0ZSBmaWxlcyB0byBhbGxvd1xuLy8gdHJlZS1zaGFraW5nIG9uIGVhY2ggYXBpIGluc3RhbmNlLlxuLyoqXG4gKiBFbnRyeXBvaW50IGZvciBEaWFnIEFQSS5cbiAqIERlZmluZXMgRGlhZ25vc3RpYyBoYW5kbGVyIHVzZWQgZm9yIGludGVybmFsIGRpYWdub3N0aWMgbG9nZ2luZyBvcGVyYXRpb25zLlxuICogVGhlIGRlZmF1bHQgcHJvdmlkZXMgYSBOb29wIERpYWdMb2dnZXIgaW1wbGVtZW50YXRpb24gd2hpY2ggbWF5IGJlIGNoYW5nZWQgdmlhIHRoZVxuICogZGlhZy5zZXRMb2dnZXIobG9nZ2VyOiBEaWFnTG9nZ2VyKSBmdW5jdGlvbi5cbiAqL1xudmFyIGRpYWcgPSBEaWFnQVBJLmluc3RhbmNlKCk7XG5cbmV4cG9ydCB7IGRpYWcgYXMgZCB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBS0EsU0FBZTtBQXlCN0IsSUFBSUMsSUFBT0QsRUFBUSxTQUFTOyIsCiAgIm5hbWVzIjogWyJEaWFnQVBJIiwgImRpYWciXQp9Cg==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { R as u } from "./index-
|
|
2
|
-
import { B as c } from "./SimpleSpanProcessor-
|
|
3
|
-
import { A as g, b as x, a as S, C as b, F as w, I as P, N as C, P as T, R as O, d as M, S as A, e as E, c as R, T as N } from "./SimpleSpanProcessor-
|
|
4
|
-
import { P as F, a as j, b as k, g as I, c as W, h as U, n as X, p as z, s as D, d as G } from "./utils-
|
|
1
|
+
import { R as u } from "./index-Xxndn7Y1.js";
|
|
2
|
+
import { B as c } from "./SimpleSpanProcessor-Bh5q0GmE.js";
|
|
3
|
+
import { A as g, b as x, a as S, C as b, F as w, I as P, N as C, P as T, R as O, d as M, S as A, e as E, c as R, T as N } from "./SimpleSpanProcessor-Bh5q0GmE.js";
|
|
4
|
+
import { P as F, a as j, b as k, g as I, c as W, h as U, n as X, p as z, s as D, d as G } from "./utils-DAwtFC1B.js";
|
|
5
5
|
var l = function(n, r) {
|
|
6
6
|
var e = typeof Symbol == "function" && n[Symbol.iterator];
|
|
7
7
|
if (!e) return n;
|
|
@@ -127,4 +127,4 @@ export {
|
|
|
127
127
|
D as shouldPropagateTraceHeaders,
|
|
128
128
|
G as sortResources
|
|
129
129
|
};
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtIX57MDA2fX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFIgYXMgUk9PVF9DT05URVhUIH0gZnJvbSAnLi9pbmRleC0hfnswMDV9fi5qcyc7XG5pbXBvcnQgeyBCIGFzIEJhc2ljVHJhY2VyUHJvdmlkZXIgfSBmcm9tICcuL1NpbXBsZVNwYW5Qcm9jZXNzb3ItIX57MDAyfX4uanMnO1xuZXhwb3J0IHsgQSBhcyBBbHdheXNPZmZTYW1wbGVyLCBiIGFzIEFsd2F5c09uU2FtcGxlciwgYSBhcyBCYXRjaFNwYW5Qcm9jZXNzb3IsIEMgYXMgQ29uc29sZVNwYW5FeHBvcnRlciwgRiBhcyBGb3JjZUZsdXNoU3RhdGUsIEkgYXMgSW5NZW1vcnlTcGFuRXhwb3J0ZXIsIE4gYXMgTm9vcFNwYW5Qcm9jZXNzb3IsIFAgYXMgUGFyZW50QmFzZWRTYW1wbGVyLCBSIGFzIFJhbmRvbUlkR2VuZXJhdG9yLCBkIGFzIFNhbXBsaW5nRGVjaXNpb24sIFMgYXMgU2ltcGxlU3BhblByb2Nlc3NvciwgZSBhcyBTcGFuLCBjIGFzIFRyYWNlSWRSYXRpb0Jhc2VkU2FtcGxlciwgVCBhcyBUcmFjZXIgfSBmcm9tICcuL1NpbXBsZVNwYW5Qcm9jZXNzb3ItIX57MDAyfX4uanMnO1xuZXhwb3J0IHsgUCBhcyBQZXJmb3JtYW5jZVRpbWluZ05hbWVzLCBhIGFzIGFkZFNwYW5OZXR3b3JrRXZlbnQsIGIgYXMgYWRkU3Bhbk5ldHdvcmtFdmVudHMsIGcgYXMgZ2V0RWxlbWVudFhQYXRoLCBjIGFzIGdldFJlc291cmNlLCBoIGFzIGhhc0tleSwgbiBhcyBub3JtYWxpemVVcmwsIHAgYXMgcGFyc2VVcmwsIHMgYXMgc2hvdWxkUHJvcGFnYXRlVHJhY2VIZWFkZXJzLCBkIGFzIHNvcnRSZXNvdXJjZXMgfSBmcm9tICcuL3V0aWxzLSF+ezAwN31+LmpzJztcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfX3JlYWQgPSAodW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX19zcHJlYWRBcnJheSA9ICh1bmRlZmluZWQgJiYgdW5kZWZpbmVkLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSwgcGFjaykge1xuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59O1xuLyoqXG4gKiBTdGFjayBDb250ZXh0IE1hbmFnZXIgZm9yIG1hbmFnaW5nIHRoZSBzdGF0ZSBpbiB3ZWJcbiAqIGl0IGRvZXNuJ3QgZnVsbHkgc3VwcG9ydCB0aGUgYXN5bmMgY2FsbHMgdGhvdWdoXG4gKi9cbnZhciBTdGFja0NvbnRleHRNYW5hZ2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFN0YWNrQ29udGV4dE1hbmFnZXIoKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB3aGV0aGVyIHRoZSBjb250ZXh0IG1hbmFnZXIgaXMgZW5hYmxlZCBvciBub3RcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEtlZXBzIHRoZSByZWZlcmVuY2UgdG8gY3VycmVudCBjb250ZXh0XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9jdXJyZW50Q29udGV4dCA9IFJPT1RfQ09OVEVYVDtcbiAgICB9XG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGV4dFxuICAgICAqIEBwYXJhbSB0YXJnZXQgRnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgd2l0aGluIHRoZSBjb250ZXh0XG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbiAgICBTdGFja0NvbnRleHRNYW5hZ2VyLnByb3RvdHlwZS5fYmluZEZ1bmN0aW9uID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldCkge1xuICAgICAgICBpZiAoY29udGV4dCA9PT0gdm9pZCAwKSB7IGNvbnRleHQgPSBST09UX0NPTlRFWFQ7IH1cbiAgICAgICAgdmFyIG1hbmFnZXIgPSB0aGlzO1xuICAgICAgICB2YXIgY29udGV4dFdyYXBwZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1hbmFnZXIud2l0aChjb250ZXh0LCBmdW5jdGlvbiAoKSB7IHJldHVybiB0YXJnZXQuYXBwbHkoX3RoaXMsIGFyZ3MpOyB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnRleHRXcmFwcGVyLCAnbGVuZ3RoJywge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICB2YWx1ZTogdGFyZ2V0Lmxlbmd0aCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjb250ZXh0V3JhcHBlcjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGFjdGl2ZSBjb250ZXh0XG4gICAgICovXG4gICAgU3RhY2tDb250ZXh0TWFuYWdlci5wcm90b3R5cGUuYWN0aXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudENvbnRleHQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBCaW5kcyBhIHRoZSBjZXJ0YWluIGNvbnRleHQgb3IgdGhlIGFjdGl2ZSBvbmUgdG8gdGhlIHRhcmdldCBmdW5jdGlvbiBhbmQgdGhlbiByZXR1cm5zIHRoZSB0YXJnZXRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBBIGNvbnRleHQgKHNwYW4pIHRvIGJlIGJpbmQgdG8gdGFyZ2V0XG4gICAgICogQHBhcmFtIHRhcmdldCBhIGZ1bmN0aW9uIG9yIGV2ZW50IGVtaXR0ZXIuIFdoZW4gdGFyZ2V0IG9yIG9uZSBvZiBpdHMgY2FsbGJhY2tzIGlzIGNhbGxlZCxcbiAgICAgKiAgdGhlIHByb3ZpZGVkIGNvbnRleHQgd2lsbCBiZSB1c2VkIGFzIHRoZSBhY3RpdmUgY29udGV4dCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBjYWxsLlxuICAgICAqL1xuICAgIFN0YWNrQ29udGV4dE1hbmFnZXIucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0KSB7XG4gICAgICAgIC8vIGlmIG5vIHNwZWNpZmljIGNvbnRleHQgdG8gcHJvcGFnYXRlIGlzIGdpdmVuLCB3ZSB1c2UgdGhlIGN1cnJlbnQgb25lXG4gICAgICAgIGlmIChjb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnRleHQgPSB0aGlzLmFjdGl2ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYmluZEZ1bmN0aW9uKGNvbnRleHQsIHRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIERpc2FibGUgdGhlIGNvbnRleHQgbWFuYWdlciAoY2xlYXJzIHRoZSBjdXJyZW50IGNvbnRleHQpXG4gICAgICovXG4gICAgU3RhY2tDb250ZXh0TWFuYWdlci5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudENvbnRleHQgPSBST09UX0NPTlRFWFQ7XG4gICAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBFbmFibGVzIHRoZSBjb250ZXh0IG1hbmFnZXIgYW5kIGNyZWF0ZXMgYSBkZWZhdWx0KHJvb3QpIGNvbnRleHRcbiAgICAgKi9cbiAgICBTdGFja0NvbnRleHRNYW5hZ2VyLnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLl9lbmFibGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9lbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY3VycmVudENvbnRleHQgPSBST09UX0NPTlRFWFQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ2FsbHMgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIFtmbl0gd2l0aCB0aGUgcHJvdmlkZWQgW2NvbnRleHRdLiBJZiBbY29udGV4dF0gaXMgdW5kZWZpbmVkIHRoZW4gaXQgd2lsbCB1c2UgdGhlIHdpbmRvdy5cbiAgICAgKiBUaGUgY29udGV4dCB3aWxsIGJlIHNldCBhcyBhY3RpdmVcbiAgICAgKiBAcGFyYW0gY29udGV4dFxuICAgICAqIEBwYXJhbSBmbiBDYWxsYmFjayBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB0aGlzQXJnIG9wdGlvbmFsIHJlY2VpdmVyIHRvIGJlIHVzZWQgZm9yIGNhbGxpbmcgZm5cbiAgICAgKiBAcGFyYW0gYXJncyBvcHRpb25hbCBhcmd1bWVudHMgZm9yd2FyZGVkIHRvIGZuXG4gICAgICovXG4gICAgU3RhY2tDb250ZXh0TWFuYWdlci5wcm90b3R5cGUud2l0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCBmbiwgdGhpc0FyZykge1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDM7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYXJnc1tfaSAtIDNdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJldmlvdXNDb250ZXh0ID0gdGhpcy5fY3VycmVudENvbnRleHQ7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRDb250ZXh0ID0gY29udGV4dCB8fCBST09UX0NPTlRFWFQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gZm4uY2FsbC5hcHBseShmbiwgX19zcHJlYWRBcnJheShbdGhpc0FyZ10sIF9fcmVhZChhcmdzKSwgZmFsc2UpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRDb250ZXh0ID0gcHJldmlvdXNDb250ZXh0O1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gU3RhY2tDb250ZXh0TWFuYWdlcjtcbn0oKSk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19leHRlbmRzID0gKHVuZGVmaW5lZCAmJiB1bmRlZmluZWQuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbi8qKlxuICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgd2ViIHRyYWNlciB3aXRoIHtAbGluayBTdGFja0NvbnRleHRNYW5hZ2VyfVxuICovXG52YXIgV2ViVHJhY2VyUHJvdmlkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFdlYlRyYWNlclByb3ZpZGVyLCBfc3VwZXIpO1xuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgVHJhY2VyIGluc3RhbmNlLlxuICAgICAqIEBwYXJhbSBjb25maWcgV2ViIFRyYWNlciBjb25maWdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBXZWJUcmFjZXJQcm92aWRlcihjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyA9PT0gdm9pZCAwKSB7IGNvbmZpZyA9IHt9OyB9XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIGNvbmZpZykgfHwgdGhpcztcbiAgICAgICAgaWYgKGNvbmZpZy5jb250ZXh0TWFuYWdlcikge1xuICAgICAgICAgICAgdGhyb3cgKCdjb250ZXh0TWFuYWdlciBzaG91bGQgYmUgZGVmaW5lZCBpbiByZWdpc3RlciBtZXRob2Qgbm90IGluJyArXG4gICAgICAgICAgICAgICAgJyBjb25zdHJ1Y3RvcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWcucHJvcGFnYXRvcikge1xuICAgICAgICAgICAgdGhyb3cgJ3Byb3BhZ2F0b3Igc2hvdWxkIGJlIGRlZmluZWQgaW4gcmVnaXN0ZXIgbWV0aG9kIG5vdCBpbiBjb25zdHJ1Y3Rvcic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciB0aGlzIFRyYWNlclByb3ZpZGVyIGZvciB1c2Ugd2l0aCB0aGUgT3BlblRlbGVtZXRyeSBBUEkuXG4gICAgICogVW5kZWZpbmVkIHZhbHVlcyBtYXkgYmUgcmVwbGFjZWQgd2l0aCBkZWZhdWx0cywgYW5kXG4gICAgICogbnVsbCB2YWx1ZXMgd2lsbCBiZSBza2lwcGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIG9iamVjdCBmb3IgU0RLIHJlZ2lzdHJhdGlvblxuICAgICAqL1xuICAgIFdlYlRyYWNlclByb3ZpZGVyLnByb3RvdHlwZS5yZWdpc3RlciA9IGZ1bmN0aW9uIChjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyA9PT0gdm9pZCAwKSB7IGNvbmZpZyA9IHt9OyB9XG4gICAgICAgIGlmIChjb25maWcuY29udGV4dE1hbmFnZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uZmlnLmNvbnRleHRNYW5hZ2VyID0gbmV3IFN0YWNrQ29udGV4dE1hbmFnZXIoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlnLmNvbnRleHRNYW5hZ2VyKSB7XG4gICAgICAgICAgICBjb25maWcuY29udGV4dE1hbmFnZXIuZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5yZWdpc3Rlci5jYWxsKHRoaXMsIGNvbmZpZyk7XG4gICAgfTtcbiAgICByZXR1cm4gV2ViVHJhY2VyUHJvdmlkZXI7XG59KEJhc2ljVHJhY2VyUHJvdmlkZXIpKTtcblxuZXhwb3J0IHsgQmFzaWNUcmFjZXJQcm92aWRlciwgU3RhY2tDb250ZXh0TWFuYWdlciwgV2ViVHJhY2VyUHJvdmlkZXIgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLFNBQW9CO0FBQ2xDLFNBQVMsS0FBS0MsU0FBMkI7QUFDekMsU0FBYyxLQUFMQyxHQUE0QixLQUFMQyxHQUEyQixLQUFMQyxHQUE4QixLQUFMQyxHQUErQixLQUFMQyxHQUEyQixLQUFMQyxHQUFnQyxLQUFMQyxHQUE2QixLQUFMQyxHQUE4QixLQUFMQyxHQUE2QixLQUFMQyxHQUE0QixLQUFMQyxHQUErQixLQUFMQyxHQUFnQixLQUFMQyxHQUFvQyxLQUFMQyxTQUFtQjtBQUNqVixTQUFjLEtBQUxOLEdBQWtDLEtBQUxMLEdBQStCLEtBQUxELEdBQWdDLEtBQUxhLEdBQTJCLEtBQUxGLEdBQXVCLEtBQUxHLEdBQWtCLEtBQUxDLEdBQXdCLEtBQUxDLEdBQW9CLEtBQUxDLEdBQXVDLEtBQUxULFNBQTBCO0FBaUI5TyxJQUFJVSxJQUE0QyxTQUFVQyxHQUFHSixHQUFHO0FBQzVELE1BQUlLLElBQUksT0FBTyxVQUFXLGNBQWNELEVBQUUsT0FBTyxRQUFRO0FBQ3pELE1BQUksQ0FBQ0MsRUFBRyxRQUFPRDtBQUNmLE1BQUlFLElBQUlELEVBQUUsS0FBS0QsQ0FBQyxHQUFHRyxHQUFHQyxJQUFLLENBQUMsR0FBR2I7QUFDL0IsTUFBSTtBQUNBLFlBQVFLLE1BQU0sVUFBVUEsTUFBTSxNQUFNLEVBQUVPLElBQUlELEVBQUUsS0FBSyxHQUFHLE9BQU0sQ0FBQUUsRUFBRyxLQUFLRCxFQUFFLEtBQUs7QUFBQSxFQUM3RSxTQUNPRSxHQUFPO0FBQUUsSUFBQWQsSUFBSSxFQUFFLE9BQU9jLEVBQU07QUFBQSxFQUFHLFVBQ3RDO0FBQ0ksUUFBSTtBQUNBLE1BQUlG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LElBRWhEZ0IsRUFBTyxrQkFDUEEsRUFBTyxlQUFlLE9BQU8sR0FFakNELEVBQU8sVUFBVSxTQUFTLEtBQUssTUFBTUMsQ0FBTTtBQUFBLElBQy9DLEdBQ09GO0FBQUEsRUFDWCxFQUFFOUMsQ0FBbUI7QUFBQTsiLAogICJuYW1lcyI6IFsiUk9PVF9DT05URVhUIiwgIkJhc2ljVHJhY2VyUHJvdmlkZXIiLCAiQSIsICJiIiwgImEiLCAiQyIsICJGIiwgIkkiLCAiTiIsICJQIiwgIlIiLCAiZCIsICJTIiwgImUiLCAiYyIsICJUIiwgImciLCAiaCIsICJuIiwgInAiLCAicyIsICJfX3JlYWQiLCAibyIsICJtIiwgImkiLCAiciIsICJhciIsICJlcnJvciIsICJfX3NwcmVhZEFycmF5IiwgInRvIiwgImZyb20iLCAicGFjayIsICJsIiwgIlN0YWNrQ29udGV4dE1hbmFnZXIiLCAiY29udGV4dCIsICJ0YXJnZXQiLCAibWFuYWdlciIsICJjb250ZXh0V3JhcHBlciIsICJfdGhpcyIsICJhcmdzIiwgIl9pIiwgImZuIiwgInRoaXNBcmciLCAicHJldmlvdXNDb250ZXh0IiwgIl9fZXh0ZW5kcyIsICJleHRlbmRTdGF0aWNzIiwgIl9fIiwgIldlYlRyYWNlclByb3ZpZGVyIiwgIl9zdXBlciIsICJjb25maWciXQp9Cg==
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtIX57MDA3fX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFIgYXMgUk9PVF9DT05URVhUIH0gZnJvbSAnLi9pbmRleC0hfnswMDZ9fi5qcyc7XG5pbXBvcnQgeyBCIGFzIEJhc2ljVHJhY2VyUHJvdmlkZXIgfSBmcm9tICcuL1NpbXBsZVNwYW5Qcm9jZXNzb3ItIX57MDAyfX4uanMnO1xuZXhwb3J0IHsgQSBhcyBBbHdheXNPZmZTYW1wbGVyLCBiIGFzIEFsd2F5c09uU2FtcGxlciwgYSBhcyBCYXRjaFNwYW5Qcm9jZXNzb3IsIEMgYXMgQ29uc29sZVNwYW5FeHBvcnRlciwgRiBhcyBGb3JjZUZsdXNoU3RhdGUsIEkgYXMgSW5NZW1vcnlTcGFuRXhwb3J0ZXIsIE4gYXMgTm9vcFNwYW5Qcm9jZXNzb3IsIFAgYXMgUGFyZW50QmFzZWRTYW1wbGVyLCBSIGFzIFJhbmRvbUlkR2VuZXJhdG9yLCBkIGFzIFNhbXBsaW5nRGVjaXNpb24sIFMgYXMgU2ltcGxlU3BhblByb2Nlc3NvciwgZSBhcyBTcGFuLCBjIGFzIFRyYWNlSWRSYXRpb0Jhc2VkU2FtcGxlciwgVCBhcyBUcmFjZXIgfSBmcm9tICcuL1NpbXBsZVNwYW5Qcm9jZXNzb3ItIX57MDAyfX4uanMnO1xuZXhwb3J0IHsgUCBhcyBQZXJmb3JtYW5jZVRpbWluZ05hbWVzLCBhIGFzIGFkZFNwYW5OZXR3b3JrRXZlbnQsIGIgYXMgYWRkU3Bhbk5ldHdvcmtFdmVudHMsIGcgYXMgZ2V0RWxlbWVudFhQYXRoLCBjIGFzIGdldFJlc291cmNlLCBoIGFzIGhhc0tleSwgbiBhcyBub3JtYWxpemVVcmwsIHAgYXMgcGFyc2VVcmwsIHMgYXMgc2hvdWxkUHJvcGFnYXRlVHJhY2VIZWFkZXJzLCBkIGFzIHNvcnRSZXNvdXJjZXMgfSBmcm9tICcuL3V0aWxzLSF+ezAwOH1+LmpzJztcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBfX3JlYWQgPSAodW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX19zcHJlYWRBcnJheSA9ICh1bmRlZmluZWQgJiYgdW5kZWZpbmVkLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSwgcGFjaykge1xuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59O1xuLyoqXG4gKiBTdGFjayBDb250ZXh0IE1hbmFnZXIgZm9yIG1hbmFnaW5nIHRoZSBzdGF0ZSBpbiB3ZWJcbiAqIGl0IGRvZXNuJ3QgZnVsbHkgc3VwcG9ydCB0aGUgYXN5bmMgY2FsbHMgdGhvdWdoXG4gKi9cbnZhciBTdGFja0NvbnRleHRNYW5hZ2VyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFN0YWNrQ29udGV4dE1hbmFnZXIoKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB3aGV0aGVyIHRoZSBjb250ZXh0IG1hbmFnZXIgaXMgZW5hYmxlZCBvciBub3RcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEtlZXBzIHRoZSByZWZlcmVuY2UgdG8gY3VycmVudCBjb250ZXh0XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl9jdXJyZW50Q29udGV4dCA9IFJPT1RfQ09OVEVYVDtcbiAgICB9XG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGV4dFxuICAgICAqIEBwYXJhbSB0YXJnZXQgRnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgd2l0aGluIHRoZSBjb250ZXh0XG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbiAgICBTdGFja0NvbnRleHRNYW5hZ2VyLnByb3RvdHlwZS5fYmluZEZ1bmN0aW9uID0gZnVuY3Rpb24gKGNvbnRleHQsIHRhcmdldCkge1xuICAgICAgICBpZiAoY29udGV4dCA9PT0gdm9pZCAwKSB7IGNvbnRleHQgPSBST09UX0NPTlRFWFQ7IH1cbiAgICAgICAgdmFyIG1hbmFnZXIgPSB0aGlzO1xuICAgICAgICB2YXIgY29udGV4dFdyYXBwZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1hbmFnZXIud2l0aChjb250ZXh0LCBmdW5jdGlvbiAoKSB7IHJldHVybiB0YXJnZXQuYXBwbHkoX3RoaXMsIGFyZ3MpOyB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnRleHRXcmFwcGVyLCAnbGVuZ3RoJywge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICB2YWx1ZTogdGFyZ2V0Lmxlbmd0aCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjb250ZXh0V3JhcHBlcjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGFjdGl2ZSBjb250ZXh0XG4gICAgICovXG4gICAgU3RhY2tDb250ZXh0TWFuYWdlci5wcm90b3R5cGUuYWN0aXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudENvbnRleHQ7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBCaW5kcyBhIHRoZSBjZXJ0YWluIGNvbnRleHQgb3IgdGhlIGFjdGl2ZSBvbmUgdG8gdGhlIHRhcmdldCBmdW5jdGlvbiBhbmQgdGhlbiByZXR1cm5zIHRoZSB0YXJnZXRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBBIGNvbnRleHQgKHNwYW4pIHRvIGJlIGJpbmQgdG8gdGFyZ2V0XG4gICAgICogQHBhcmFtIHRhcmdldCBhIGZ1bmN0aW9uIG9yIGV2ZW50IGVtaXR0ZXIuIFdoZW4gdGFyZ2V0IG9yIG9uZSBvZiBpdHMgY2FsbGJhY2tzIGlzIGNhbGxlZCxcbiAgICAgKiAgdGhlIHByb3ZpZGVkIGNvbnRleHQgd2lsbCBiZSB1c2VkIGFzIHRoZSBhY3RpdmUgY29udGV4dCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBjYWxsLlxuICAgICAqL1xuICAgIFN0YWNrQ29udGV4dE1hbmFnZXIucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoY29udGV4dCwgdGFyZ2V0KSB7XG4gICAgICAgIC8vIGlmIG5vIHNwZWNpZmljIGNvbnRleHQgdG8gcHJvcGFnYXRlIGlzIGdpdmVuLCB3ZSB1c2UgdGhlIGN1cnJlbnQgb25lXG4gICAgICAgIGlmIChjb250ZXh0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnRleHQgPSB0aGlzLmFjdGl2ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYmluZEZ1bmN0aW9uKGNvbnRleHQsIHRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIERpc2FibGUgdGhlIGNvbnRleHQgbWFuYWdlciAoY2xlYXJzIHRoZSBjdXJyZW50IGNvbnRleHQpXG4gICAgICovXG4gICAgU3RhY2tDb250ZXh0TWFuYWdlci5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudENvbnRleHQgPSBST09UX0NPTlRFWFQ7XG4gICAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBFbmFibGVzIHRoZSBjb250ZXh0IG1hbmFnZXIgYW5kIGNyZWF0ZXMgYSBkZWZhdWx0KHJvb3QpIGNvbnRleHRcbiAgICAgKi9cbiAgICBTdGFja0NvbnRleHRNYW5hZ2VyLnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLl9lbmFibGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9lbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY3VycmVudENvbnRleHQgPSBST09UX0NPTlRFWFQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ2FsbHMgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIFtmbl0gd2l0aCB0aGUgcHJvdmlkZWQgW2NvbnRleHRdLiBJZiBbY29udGV4dF0gaXMgdW5kZWZpbmVkIHRoZW4gaXQgd2lsbCB1c2UgdGhlIHdpbmRvdy5cbiAgICAgKiBUaGUgY29udGV4dCB3aWxsIGJlIHNldCBhcyBhY3RpdmVcbiAgICAgKiBAcGFyYW0gY29udGV4dFxuICAgICAqIEBwYXJhbSBmbiBDYWxsYmFjayBmdW5jdGlvblxuICAgICAqIEBwYXJhbSB0aGlzQXJnIG9wdGlvbmFsIHJlY2VpdmVyIHRvIGJlIHVzZWQgZm9yIGNhbGxpbmcgZm5cbiAgICAgKiBAcGFyYW0gYXJncyBvcHRpb25hbCBhcmd1bWVudHMgZm9yd2FyZGVkIHRvIGZuXG4gICAgICovXG4gICAgU3RhY2tDb250ZXh0TWFuYWdlci5wcm90b3R5cGUud2l0aCA9IGZ1bmN0aW9uIChjb250ZXh0LCBmbiwgdGhpc0FyZykge1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDM7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYXJnc1tfaSAtIDNdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJldmlvdXNDb250ZXh0ID0gdGhpcy5fY3VycmVudENvbnRleHQ7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRDb250ZXh0ID0gY29udGV4dCB8fCBST09UX0NPTlRFWFQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gZm4uY2FsbC5hcHBseShmbiwgX19zcHJlYWRBcnJheShbdGhpc0FyZ10sIF9fcmVhZChhcmdzKSwgZmFsc2UpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRDb250ZXh0ID0gcHJldmlvdXNDb250ZXh0O1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gU3RhY2tDb250ZXh0TWFuYWdlcjtcbn0oKSk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19leHRlbmRzID0gKHVuZGVmaW5lZCAmJiB1bmRlZmluZWQuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbi8qKlxuICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgd2ViIHRyYWNlciB3aXRoIHtAbGluayBTdGFja0NvbnRleHRNYW5hZ2VyfVxuICovXG52YXIgV2ViVHJhY2VyUHJvdmlkZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKFdlYlRyYWNlclByb3ZpZGVyLCBfc3VwZXIpO1xuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgVHJhY2VyIGluc3RhbmNlLlxuICAgICAqIEBwYXJhbSBjb25maWcgV2ViIFRyYWNlciBjb25maWdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBXZWJUcmFjZXJQcm92aWRlcihjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyA9PT0gdm9pZCAwKSB7IGNvbmZpZyA9IHt9OyB9XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIGNvbmZpZykgfHwgdGhpcztcbiAgICAgICAgaWYgKGNvbmZpZy5jb250ZXh0TWFuYWdlcikge1xuICAgICAgICAgICAgdGhyb3cgKCdjb250ZXh0TWFuYWdlciBzaG91bGQgYmUgZGVmaW5lZCBpbiByZWdpc3RlciBtZXRob2Qgbm90IGluJyArXG4gICAgICAgICAgICAgICAgJyBjb25zdHJ1Y3RvcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWcucHJvcGFnYXRvcikge1xuICAgICAgICAgICAgdGhyb3cgJ3Byb3BhZ2F0b3Igc2hvdWxkIGJlIGRlZmluZWQgaW4gcmVnaXN0ZXIgbWV0aG9kIG5vdCBpbiBjb25zdHJ1Y3Rvcic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciB0aGlzIFRyYWNlclByb3ZpZGVyIGZvciB1c2Ugd2l0aCB0aGUgT3BlblRlbGVtZXRyeSBBUEkuXG4gICAgICogVW5kZWZpbmVkIHZhbHVlcyBtYXkgYmUgcmVwbGFjZWQgd2l0aCBkZWZhdWx0cywgYW5kXG4gICAgICogbnVsbCB2YWx1ZXMgd2lsbCBiZSBza2lwcGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmF0aW9uIG9iamVjdCBmb3IgU0RLIHJlZ2lzdHJhdGlvblxuICAgICAqL1xuICAgIFdlYlRyYWNlclByb3ZpZGVyLnByb3RvdHlwZS5yZWdpc3RlciA9IGZ1bmN0aW9uIChjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyA9PT0gdm9pZCAwKSB7IGNvbmZpZyA9IHt9OyB9XG4gICAgICAgIGlmIChjb25maWcuY29udGV4dE1hbmFnZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uZmlnLmNvbnRleHRNYW5hZ2VyID0gbmV3IFN0YWNrQ29udGV4dE1hbmFnZXIoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29uZmlnLmNvbnRleHRNYW5hZ2VyKSB7XG4gICAgICAgICAgICBjb25maWcuY29udGV4dE1hbmFnZXIuZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgX3N1cGVyLnByb3RvdHlwZS5yZWdpc3Rlci5jYWxsKHRoaXMsIGNvbmZpZyk7XG4gICAgfTtcbiAgICByZXR1cm4gV2ViVHJhY2VyUHJvdmlkZXI7XG59KEJhc2ljVHJhY2VyUHJvdmlkZXIpKTtcblxuZXhwb3J0IHsgQmFzaWNUcmFjZXJQcm92aWRlciwgU3RhY2tDb250ZXh0TWFuYWdlciwgV2ViVHJhY2VyUHJvdmlkZXIgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLFNBQW9CO0FBQ2xDLFNBQVMsS0FBS0MsU0FBMkI7QUFDekMsU0FBYyxLQUFMQyxHQUE0QixLQUFMQyxHQUEyQixLQUFMQyxHQUE4QixLQUFMQyxHQUErQixLQUFMQyxHQUEyQixLQUFMQyxHQUFnQyxLQUFMQyxHQUE2QixLQUFMQyxHQUE4QixLQUFMQyxHQUE2QixLQUFMQyxHQUE0QixLQUFMQyxHQUErQixLQUFMQyxHQUFnQixLQUFMQyxHQUFvQyxLQUFMQyxTQUFtQjtBQUNqVixTQUFjLEtBQUxOLEdBQWtDLEtBQUxMLEdBQStCLEtBQUxELEdBQWdDLEtBQUxhLEdBQTJCLEtBQUxGLEdBQXVCLEtBQUxHLEdBQWtCLEtBQUxDLEdBQXdCLEtBQUxDLEdBQW9CLEtBQUxDLEdBQXVDLEtBQUxULFNBQTBCO0FBaUI5TyxJQUFJVSxJQUE0QyxTQUFVQyxHQUFHSixHQUFHO0FBQzVELE1BQUlLLElBQUksT0FBTyxVQUFXLGNBQWNELEVBQUUsT0FBTyxRQUFRO0FBQ3pELE1BQUksQ0FBQ0MsRUFBRyxRQUFPRDtBQUNmLE1BQUlFLElBQUlELEVBQUUsS0FBS0QsQ0FBQyxHQUFHRyxHQUFHQyxJQUFLLENBQUMsR0FBR2I7QUFDL0IsTUFBSTtBQUNBLFlBQVFLLE1BQU0sVUFBVUEsTUFBTSxNQUFNLEVBQUVPLElBQUlELEVBQUUsS0FBSyxHQUFHLE9BQU0sQ0FBQUUsRUFBRyxLQUFLRCxFQUFFLEtBQUs7QUFBQSxFQUM3RSxTQUNPRSxHQUFPO0FBQUUsSUFBQWQsSUFBSSxFQUFFLE9BQU9jLEVBQU07QUFBQSxFQUFHLFVBQ3RDO0FBQ0ksUUFBSTtBQUNBLE1BQUlG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LElBRWhEZ0IsRUFBTyxrQkFDUEEsRUFBTyxlQUFlLE9BQU8sR0FFakNELEVBQU8sVUFBVSxTQUFTLEtBQUssTUFBTUMsQ0FBTTtBQUFBLElBQy9DLEdBQ09GO0FBQUEsRUFDWCxFQUFFOUMsQ0FBbUI7QUFBQTsiLAogICJuYW1lcyI6IFsiUk9PVF9DT05URVhUIiwgIkJhc2ljVHJhY2VyUHJvdmlkZXIiLCAiQSIsICJiIiwgImEiLCAiQyIsICJGIiwgIkkiLCAiTiIsICJQIiwgIlIiLCAiZCIsICJTIiwgImUiLCAiYyIsICJUIiwgImciLCAiaCIsICJuIiwgInAiLCAicyIsICJfX3JlYWQiLCAibyIsICJtIiwgImkiLCAiciIsICJhciIsICJlcnJvciIsICJfX3NwcmVhZEFycmF5IiwgInRvIiwgImZyb20iLCAicGFjayIsICJsIiwgIlN0YWNrQ29udGV4dE1hbmFnZXIiLCAiY29udGV4dCIsICJ0YXJnZXQiLCAibWFuYWdlciIsICJjb250ZXh0V3JhcHBlciIsICJfdGhpcyIsICJhcmdzIiwgIl9pIiwgImZuIiwgInRoaXNBcmciLCAicHJldmlvdXNDb250ZXh0IiwgIl9fZXh0ZW5kcyIsICJleHRlbmRTdGF0aWNzIiwgIl9fIiwgIldlYlRyYWNlclByb3ZpZGVyIiwgIl9zdXBlciIsICJjb25maWciXQp9Cg==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { R as l } from "./Resource-
|
|
2
|
-
import { d as ee } from "./Resource-
|
|
3
|
-
import { d as v } from "./diag-api-
|
|
4
|
-
import { e as A, f as m, g as b, h as w, S as D } from "./sdk-info-
|
|
1
|
+
import { R as l } from "./Resource-Bx_VuhUk.js";
|
|
2
|
+
import { d as ee } from "./Resource-Bx_VuhUk.js";
|
|
3
|
+
import { d as v } from "./diag-api-D9IWSUsW.js";
|
|
4
|
+
import { e as A, f as m, g as b, h as w, S as D } from "./sdk-info-DiazhyI_.js";
|
|
5
5
|
var T = (
|
|
6
6
|
/** @class */
|
|
7
7
|
function() {
|
|
@@ -327,4 +327,4 @@ export {
|
|
|
327
327
|
Y as processDetectorSync,
|
|
328
328
|
q as serviceInstanceIdDetectorSync
|
|
329
329
|
};
|
|
330
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtIX57MDBqfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFIgYXMgUmVzb3VyY2UgfSBmcm9tICcuL1Jlc291cmNlLSF+ezAwOX1+LmpzJztcbmV4cG9ydCB7IGQgYXMgZGVmYXVsdFNlcnZpY2VOYW1lIH0gZnJvbSAnLi9SZXNvdXJjZS0hfnswMDl9fi5qcyc7XG5pbXBvcnQgeyBkIGFzIGRpYWcgfSBmcm9tICcuL2RpYWctYXBpLSF+ezAwNH1+LmpzJztcbmltcG9ydCB7IGUgYXMgU0VNUkVTQVRUUlNfUFJPQ0VTU19SVU5USU1FX05BTUUsIGYgYXMgU0VNUkVTQVRUUlNfUFJPQ0VTU19SVU5USU1FX0RFU0NSSVBUSU9OLCBnIGFzIFNFTVJFU0FUVFJTX1BST0NFU1NfUlVOVElNRV9WRVJTSU9OLCBoIGFzIGdldEVudiwgUyBhcyBTRU1SRVNBVFRSU19TRVJWSUNFX05BTUUgfSBmcm9tICcuL3Nkay1pbmZvLSF+ezAwYX1+LmpzJztcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBOb29wRGV0ZWN0b3JTeW5jID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE5vb3BEZXRlY3RvclN5bmMoKSB7XG4gICAgfVxuICAgIE5vb3BEZXRlY3RvclN5bmMucHJvdG90eXBlLmRldGVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXNvdXJjZSh7fSk7XG4gICAgfTtcbiAgICByZXR1cm4gTm9vcERldGVjdG9yU3luYztcbn0oKSk7XG52YXIgbm9vcERldGVjdG9yU3luYyA9IG5ldyBOb29wRGV0ZWN0b3JTeW5jKCk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgTm9vcERldGVjdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE5vb3BEZXRlY3RvcigpIHtcbiAgICB9XG4gICAgTm9vcERldGVjdG9yLnByb3RvdHlwZS5kZXRlY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobm9vcERldGVjdG9yU3luYy5kZXRlY3QoKSk7XG4gICAgfTtcbiAgICByZXR1cm4gTm9vcERldGVjdG9yO1xufSgpKTtcbnZhciBub29wRGV0ZWN0b3IgPSBuZXcgTm9vcERldGVjdG9yKCk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgaG9zdERldGVjdG9yID0gbm9vcERldGVjdG9yO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIGhvc3REZXRlY3RvclN5bmMgPSBub29wRGV0ZWN0b3JTeW5jO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIG9zRGV0ZWN0b3IgPSBub29wRGV0ZWN0b3I7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgb3NEZXRlY3RvclN5bmMgPSBub29wRGV0ZWN0b3JTeW5jO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIHByb2Nlc3NEZXRlY3RvciA9IG5vb3BEZXRlY3RvcjtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBwcm9jZXNzRGV0ZWN0b3JTeW5jID0gbm9vcERldGVjdG9yO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbnZhciBzZXJ2aWNlSW5zdGFuY2VJZERldGVjdG9yU3luYyA9IG5vb3BEZXRlY3RvclN5bmM7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19hc3NpZ24gPSAodW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbi8qKlxuICogQnJvd3NlckRldGVjdG9yU3luYyB3aWxsIGJlIHVzZWQgdG8gZGV0ZWN0IHRoZSByZXNvdXJjZXMgcmVsYXRlZCB0byBicm93c2VyLlxuICovXG52YXIgQnJvd3NlckRldGVjdG9yU3luYyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCcm93c2VyRGV0ZWN0b3JTeW5jKCkge1xuICAgIH1cbiAgICBCcm93c2VyRGV0ZWN0b3JTeW5jLnByb3RvdHlwZS5kZXRlY3QgPSBmdW5jdGlvbiAoY29uZmlnKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIF9iLCBfYywgX2Q7XG4gICAgICAgIHZhciBpc0Jyb3dzZXIgPSB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgKChfYyA9IChfYiA9IGdsb2JhbC5wcm9jZXNzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudmVyc2lvbnMpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5ub2RlKSA9PT0gdW5kZWZpbmVkICYmIC8vIE5vZGUuanMgdjIxIGFkZHMgYG5hdmlnYXRvcmBcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgZG9uJ3QgaGF2ZSBCdW4gdHlwZXNcbiAgICAgICAgICAgICgoX2QgPSBnbG9iYWwuQnVuKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QudmVyc2lvbikgPT09IHVuZGVmaW5lZDsgLy8gQnVuIChidW4uc2gpIGRlZmluZXMgYG5hdmlnYXRvcmBcbiAgICAgICAgaWYgKCFpc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZS5lbXB0eSgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBicm93c2VyUmVzb3VyY2UgPSAoX2EgPSB7fSxcbiAgICAgICAgICAgIF9hW1NFTVJFU0FUVFJTX1BST0NFU1NfUlVOVElNRV9OQU1FXSA9ICdicm93c2VyJyxcbiAgICAgICAgICAgIF9hW1NFTVJFU0FUVFJTX1BST0NFU1NfUlVOVElNRV9ERVNDUklQVElPTl0gPSAnV2ViIEJyb3dzZXInLFxuICAgICAgICAgICAgX2FbU0VNUkVTQVRUUlNfUFJPQ0VTU19SVU5USU1FX1ZFUlNJT05dID0gbmF2aWdhdG9yLnVzZXJBZ2VudCxcbiAgICAgICAgICAgIF9hKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFJlc291cmNlQXR0cmlidXRlcyhicm93c2VyUmVzb3VyY2UsIGNvbmZpZyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBWYWxpZGF0ZXMgcHJvY2VzcyByZXNvdXJjZSBhdHRyaWJ1dGUgbWFwIGZyb20gcHJvY2VzcyB2YXJpYWJsZXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBicm93c2VyUmVzb3VyY2UgVGhlIHVuLXNhbml0aXplZCByZXNvdXJjZSBhdHRyaWJ1dGVzIGZyb20gcHJvY2VzcyBhcyBrZXkvdmFsdWUgcGFpcnMuXG4gICAgICogQHBhcmFtIGNvbmZpZzogQ29uZmlnXG4gICAgICogQHJldHVybnMgVGhlIHNhbml0aXplZCByZXNvdXJjZSBhdHRyaWJ1dGVzLlxuICAgICAqL1xuICAgIEJyb3dzZXJEZXRlY3RvclN5bmMucHJvdG90eXBlLl9nZXRSZXNvdXJjZUF0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoYnJvd3NlclJlc291cmNlLCBfY29uZmlnKSB7XG4gICAgICAgIGlmIChicm93c2VyUmVzb3VyY2VbU0VNUkVTQVRUUlNfUFJPQ0VTU19SVU5USU1FX1ZFUlNJT05dID09PSAnJykge1xuICAgICAgICAgICAgZGlhZy5kZWJ1ZygnQnJvd3NlckRldGVjdG9yIGZhaWxlZDogVW5hYmxlIHRvIGZpbmQgcmVxdWlyZWQgYnJvd3NlciByZXNvdXJjZXMuICcpO1xuICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlLmVtcHR5KCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlc291cmNlKF9fYXNzaWduKHt9LCBicm93c2VyUmVzb3VyY2UpKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3RvclN5bmM7XG59KCkpO1xudmFyIGJyb3dzZXJEZXRlY3RvclN5bmMgPSBuZXcgQnJvd3NlckRldGVjdG9yU3luYygpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBCcm93c2VyRGV0ZWN0b3Igd2lsbCBiZSB1c2VkIHRvIGRldGVjdCB0aGUgcmVzb3VyY2VzIHJlbGF0ZWQgdG8gYnJvd3Nlci5cbiAqL1xudmFyIEJyb3dzZXJEZXRlY3RvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCcm93c2VyRGV0ZWN0b3IoKSB7XG4gICAgfVxuICAgIEJyb3dzZXJEZXRlY3Rvci5wcm90b3R5cGUuZGV0ZWN0ID0gZnVuY3Rpb24gKGNvbmZpZykge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGJyb3dzZXJEZXRlY3RvclN5bmMuZGV0ZWN0KGNvbmZpZykpO1xuICAgIH07XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvcjtcbn0oKSk7XG52YXIgYnJvd3NlckRldGVjdG9yID0gbmV3IEJyb3dzZXJEZXRlY3RvcigpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIF9fdmFsdWVzID0gKHVuZGVmaW5lZCAmJiB1bmRlZmluZWQuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbnZhciBfX3JlYWQgPSAodW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG4vKipcbiAqIEVudkRldGVjdG9yU3luYyBjYW4gYmUgdXNlZCB0byBkZXRlY3QgdGhlIHByZXNlbmNlIG9mIGFuZCBjcmVhdGUgYSBSZXNvdXJjZVxuICogZnJvbSB0aGUgT1RFTF9SRVNPVVJDRV9BVFRSSUJVVEVTIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICovXG52YXIgRW52RGV0ZWN0b3JTeW5jID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEVudkRldGVjdG9yU3luYygpIHtcbiAgICAgICAgLy8gVHlwZSwgYXR0cmlidXRlIGtleXMsIGFuZCBhdHRyaWJ1dGUgdmFsdWVzIHNob3VsZCBub3QgZXhjZWVkIDI1NiBjaGFyYWN0ZXJzLlxuICAgICAgICB0aGlzLl9NQVhfTEVOR1RIID0gMjU1O1xuICAgICAgICAvLyBPVEVMX1JFU09VUkNFX0FUVFJJQlVURVMgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhdHRyaWJ1dGVzLlxuICAgICAgICB0aGlzLl9DT01NQV9TRVBBUkFUT1IgPSAnLCc7XG4gICAgICAgIC8vIE9URUxfUkVTT1VSQ0VfQVRUUklCVVRFUyBjb250YWlucyBrZXkgdmFsdWUgcGFpciBzZXBhcmF0ZWQgYnkgJz0nLlxuICAgICAgICB0aGlzLl9MQUJFTF9LRVlfVkFMVUVfU1BMSVRURVIgPSAnPSc7XG4gICAgICAgIHRoaXMuX0VSUk9SX01FU1NBR0VfSU5WQUxJRF9DSEFSUyA9ICdzaG91bGQgYmUgYSBBU0NJSSBzdHJpbmcgd2l0aCBhIGxlbmd0aCBncmVhdGVyIHRoYW4gMCBhbmQgbm90IGV4Y2VlZCAnICtcbiAgICAgICAgICAgIHRoaXMuX01BWF9MRU5HVEggK1xuICAgICAgICAgICAgJyBjaGFyYWN0ZXJzLic7XG4gICAgICAgIHRoaXMuX0VSUk9SX01FU1NBR0VfSU5WQUxJRF9WQUxVRSA9ICdzaG91bGQgYmUgYSBBU0NJSSBzdHJpbmcgd2l0aCBhIGxlbmd0aCBub3QgZXhjZWVkICcgK1xuICAgICAgICAgICAgdGhpcy5fTUFYX0xFTkdUSCArXG4gICAgICAgICAgICAnIGNoYXJhY3RlcnMuJztcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHtAbGluayBSZXNvdXJjZX0gcG9wdWxhdGVkIHdpdGggYXR0cmlidXRlcyBmcm9tIHRoZVxuICAgICAqIE9URUxfUkVTT1VSQ0VfQVRUUklCVVRFUyBlbnZpcm9ubWVudCB2YXJpYWJsZS4gTm90ZSB0aGlzIGlzIGFuIGFzeW5jXG4gICAgICogZnVuY3Rpb24gdG8gY29uZm9ybSB0byB0aGUgRGV0ZWN0b3IgaW50ZXJmYWNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgcmVzb3VyY2UgZGV0ZWN0aW9uIGNvbmZpZ1xuICAgICAqL1xuICAgIEVudkRldGVjdG9yU3luYy5wcm90b3R5cGUuZGV0ZWN0ID0gZnVuY3Rpb24gKF9jb25maWcpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB7fTtcbiAgICAgICAgdmFyIGVudiA9IGdldEVudigpO1xuICAgICAgICB2YXIgcmF3QXR0cmlidXRlcyA9IGVudi5PVEVMX1JFU09VUkNFX0FUVFJJQlVURVM7XG4gICAgICAgIHZhciBzZXJ2aWNlTmFtZSA9IGVudi5PVEVMX1NFUlZJQ0VfTkFNRTtcbiAgICAgICAgaWYgKHJhd0F0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFyIHBhcnNlZEF0dHJpYnV0ZXMgPSB0aGlzLl9wYXJzZVJlc291cmNlQXR0cmlidXRlcyhyYXdBdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGF0dHJpYnV0ZXMsIHBhcnNlZEF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBkaWFnLmRlYnVnKFwiRW52RGV0ZWN0b3IgZmFpbGVkOiBcIiArIGUubWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlcnZpY2VOYW1lKSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzW1NFTVJFU0FUVFJTX1NFUlZJQ0VfTkFNRV0gPSBzZXJ2aWNlTmFtZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFJlc291cmNlKGF0dHJpYnV0ZXMpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhdHRyaWJ1dGUgbWFwIGZyb20gdGhlIE9URUxfUkVTT1VSQ0VfQVRUUklCVVRFUyBlbnZpcm9ubWVudFxuICAgICAqIHZhcmlhYmxlLlxuICAgICAqXG4gICAgICogT1RFTF9SRVNPVVJDRV9BVFRSSUJVVEVTOiBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGF0dHJpYnV0ZXMgZGVzY3JpYmluZ1xuICAgICAqIHRoZSBzb3VyY2UgaW4gbW9yZSBkZXRhaWwsIGUuZy4g4oCca2V5MT12YWwxLGtleTI9dmFsMuKAnS4gRG9tYWluIG5hbWVzIGFuZFxuICAgICAqIHBhdGhzIGFyZSBhY2NlcHRlZCBhcyBhdHRyaWJ1dGUga2V5cy4gVmFsdWVzIG1heSBiZSBxdW90ZWQgb3IgdW5xdW90ZWQgaW5cbiAgICAgKiBnZW5lcmFsLiBJZiBhIHZhbHVlIGNvbnRhaW5zIHdoaXRlc3BhY2UsID0sIG9yIFwiIGNoYXJhY3RlcnMsIGl0IG11c3RcbiAgICAgKiBhbHdheXMgYmUgcXVvdGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJhd0VudkF0dHJpYnV0ZXMgVGhlIHJlc291cmNlIGF0dHJpYnV0ZXMgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdFxuICAgICAqIG9mIGtleS92YWx1ZSBwYWlycy5cbiAgICAgKiBAcmV0dXJucyBUaGUgc2FuaXRpemVkIHJlc291cmNlIGF0dHJpYnV0ZXMuXG4gICAgICovXG4gICAgRW52RGV0ZWN0b3JTeW5jLnByb3RvdHlwZS5fcGFyc2VSZXNvdXJjZUF0dHJpYnV0ZXMgPSBmdW5jdGlvbiAocmF3RW52QXR0cmlidXRlcykge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgaWYgKCFyYXdFbnZBdHRyaWJ1dGVzKVxuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHt9O1xuICAgICAgICB2YXIgcmF3QXR0cmlidXRlcyA9IHJhd0VudkF0dHJpYnV0ZXMuc3BsaXQodGhpcy5fQ09NTUFfU0VQQVJBVE9SLCAtMSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciByYXdBdHRyaWJ1dGVzXzEgPSBfX3ZhbHVlcyhyYXdBdHRyaWJ1dGVzKSwgcmF3QXR0cmlidXRlc18xXzEgPSByYXdBdHRyaWJ1dGVzXzEubmV4dCgpOyAhcmF3QXR0cmlidXRlc18xXzEuZG9uZTsgcmF3QXR0cmlidXRlc18xXzEgPSByYXdBdHRyaWJ1dGVzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJhd0F0dHJpYnV0ZSA9IHJhd0F0dHJpYnV0ZXNfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgIHZhciBrZXlWYWx1ZVBhaXIgPSByYXdBdHRyaWJ1dGUuc3BsaXQodGhpcy5fTEFCRUxfS0VZX1ZBTFVFX1NQTElUVEVSLCAtMSk7XG4gICAgICAgICAgICAgICAgaWYgKGtleVZhbHVlUGFpci5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBfYiA9IF9fcmVhZChrZXlWYWx1ZVBhaXIsIDIpLCBrZXkgPSBfYlswXSwgdmFsdWUgPSBfYlsxXTtcbiAgICAgICAgICAgICAgICAvLyBMZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlcyBhcmUgdHJpbW1lZC5cbiAgICAgICAgICAgICAgICBrZXkgPSBrZXkudHJpbSgpO1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudHJpbSgpLnNwbGl0KC9eXCJ8XCIkLykuam9pbignJyk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1ZhbGlkQW5kTm90RW1wdHkoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdHRyaWJ1dGUga2V5IFwiICsgdGhpcy5fRVJST1JfTUVTU0FHRV9JTlZBTElEX0NIQVJTKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1ZhbGlkKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdHRyaWJ1dGUgdmFsdWUgXCIgKyB0aGlzLl9FUlJPUl9NRVNTQUdFX0lOVkFMSURfVkFMVUUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW2tleV0gPSBkZWNvZGVVUklDb21wb25lbnQodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAocmF3QXR0cmlidXRlc18xXzEgJiYgIXJhd0F0dHJpYnV0ZXNfMV8xLmRvbmUgJiYgKF9hID0gcmF3QXR0cmlidXRlc18xLnJldHVybikpIF9hLmNhbGwocmF3QXR0cmlidXRlc18xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gU3RyaW5nIGlzIGEgdmFsaWQgcHJpbnRhYmxlIEFTQ0lJIHN0cmluZyB3aXRoXG4gICAgICogYSBsZW5ndGggbm90IGV4Y2VlZCBfTUFYX0xFTkdUSCBjaGFyYWN0ZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0ciBUaGUgU3RyaW5nIHRvIGJlIHZhbGlkYXRlZC5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBTdHJpbmcgaXMgdmFsaWQuXG4gICAgICovXG4gICAgRW52RGV0ZWN0b3JTeW5jLnByb3RvdHlwZS5faXNWYWxpZCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJldHVybiBuYW1lLmxlbmd0aCA8PSB0aGlzLl9NQVhfTEVOR1RIICYmIHRoaXMuX2lzQmFnZ2FnZU9jdGV0U3RyaW5nKG5hbWUpO1xuICAgIH07XG4gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2JhZ2dhZ2UvI2RlZmluaXRpb25cbiAgICBFbnZEZXRlY3RvclN5bmMucHJvdG90eXBlLl9pc0JhZ2dhZ2VPY3RldFN0cmluZyA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBjaCA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAgICAgaWYgKGNoIDwgMHgyMSB8fCBjaCA9PT0gMHgyYyB8fCBjaCA9PT0gMHgzYiB8fCBjaCA9PT0gMHg1YyB8fCBjaCA+IDB4N2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIFN0cmluZyBpcyBhIHZhbGlkIHByaW50YWJsZSBBU0NJSSBzdHJpbmcgd2l0aFxuICAgICAqIGEgbGVuZ3RoIGdyZWF0ZXIgdGhhbiAwIGFuZCBub3QgZXhjZWVkIF9NQVhfTEVOR1RIIGNoYXJhY3RlcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RyIFRoZSBTdHJpbmcgdG8gYmUgdmFsaWRhdGVkLlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIFN0cmluZyBpcyB2YWxpZCBhbmQgbm90IGVtcHR5LlxuICAgICAqL1xuICAgIEVudkRldGVjdG9yU3luYy5wcm90b3R5cGUuX2lzVmFsaWRBbmROb3RFbXB0eSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5sZW5ndGggPiAwICYmIHRoaXMuX2lzVmFsaWQoc3RyKTtcbiAgICB9O1xuICAgIHJldHVybiBFbnZEZXRlY3RvclN5bmM7XG59KCkpO1xudmFyIGVudkRldGVjdG9yU3luYyA9IG5ldyBFbnZEZXRlY3RvclN5bmMoKTtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogRW52RGV0ZWN0b3IgY2FuIGJlIHVzZWQgdG8gZGV0ZWN0IHRoZSBwcmVzZW5jZSBvZiBhbmQgY3JlYXRlIGEgUmVzb3VyY2VcbiAqIGZyb20gdGhlIE9URUxfUkVTT1VSQ0VfQVRUUklCVVRFUyBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqL1xudmFyIEVudkRldGVjdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEVudkRldGVjdG9yKCkge1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEge0BsaW5rIFJlc291cmNlfSBwb3B1bGF0ZWQgd2l0aCBhdHRyaWJ1dGVzIGZyb20gdGhlXG4gICAgICogT1RFTF9SRVNPVVJDRV9BVFRSSUJVVEVTIGVudmlyb25tZW50IHZhcmlhYmxlLiBOb3RlIHRoaXMgaXMgYW4gYXN5bmNcbiAgICAgKiBmdW5jdGlvbiB0byBjb25mb3JtIHRvIHRoZSBEZXRlY3RvciBpbnRlcmZhY2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29uZmlnIFRoZSByZXNvdXJjZSBkZXRlY3Rpb24gY29uZmlnXG4gICAgICovXG4gICAgRW52RGV0ZWN0b3IucHJvdG90eXBlLmRldGVjdCA9IGZ1bmN0aW9uIChjb25maWcpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlbnZEZXRlY3RvclN5bmMuZGV0ZWN0KGNvbmZpZykpO1xuICAgIH07XG4gICAgcmV0dXJuIEVudkRldGVjdG9yO1xufSgpKTtcbnZhciBlbnZEZXRlY3RvciA9IG5ldyBFbnZEZXRlY3RvcigpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIGlzUHJvbWlzZUxpa2UgPSBmdW5jdGlvbiAodmFsKSB7XG4gICAgcmV0dXJuICh2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbC50aGVuID09PSAnZnVuY3Rpb24nKTtcbn07XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19hd2FpdGVyID0gKHVuZGVmaW5lZCAmJiB1bmRlZmluZWQuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG4vKipcbiAqIFJ1bnMgYWxsIHJlc291cmNlIGRldGVjdG9ycyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0cyBtZXJnZWQgaW50byBhIHNpbmdsZSBSZXNvdXJjZS4gUHJvbWlzZVxuICogZG9lcyBub3QgcmVzb2x2ZSB1bnRpbCBhbGwgdGhlIHVuZGVybHlpbmcgZGV0ZWN0b3JzIGhhdmUgcmVzb2x2ZWQsIHVubGlrZVxuICogZGV0ZWN0UmVzb3VyY2VzU3luYy5cbiAqXG4gKiBAZGVwcmVjYXRlZCB1c2UgZGV0ZWN0UmVzb3VyY2VzU3luYygpIGluc3RlYWQuXG4gKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYXRpb24gZm9yIHJlc291cmNlIGRldGVjdGlvblxuICovXG52YXIgZGV0ZWN0UmVzb3VyY2VzID0gZnVuY3Rpb24gKGNvbmZpZykge1xuICAgIGlmIChjb25maWcgPT09IHZvaWQgMCkgeyBjb25maWcgPSB7fTsgfVxuICAgIHJldHVybiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcmVzb3VyY2VzO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCBQcm9taXNlLmFsbCgoY29uZmlnLmRldGVjdG9ycyB8fCBbXSkubWFwKGZ1bmN0aW9uIChkKSB7IHJldHVybiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc291cmNlLCBlXzE7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS50cnlzLnB1c2goWzAsIDIsICwgM10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgZC5kZXRlY3QoY29uZmlnKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhZy5kZWJ1ZyhkLmNvbnN0cnVjdG9yLm5hbWUgKyBcIiBmb3VuZCByZXNvdXJjZS5cIiwgcmVzb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIHJlc291cmNlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZV8xID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhZy5kZWJ1ZyhkLmNvbnN0cnVjdG9yLm5hbWUgKyBcIiBmYWlsZWQ6IFwiICsgZV8xLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIFJlc291cmNlLmVtcHR5KCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7IH0pKV07XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXMgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIEZ1dHVyZSBjaGVjayBpZiB2ZXJib3NlIGxvZ2dpbmcgaXMgZW5hYmxlZCBpc3N1ZSAjMTkwM1xuICAgICAgICAgICAgICAgICAgICBsb2dSZXNvdXJjZXMocmVzb3VyY2VzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIHJlc291cmNlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcmVzb3VyY2UpIHsgcmV0dXJuIGFjYy5tZXJnZShyZXNvdXJjZSk7IH0sIFJlc291cmNlLmVtcHR5KCkpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuLyoqXG4gKiBSdW5zIGFsbCByZXNvdXJjZSBkZXRlY3RvcnMgc3luY2hyb25vdXNseSwgbWVyZ2luZyB0aGVpciByZXN1bHRzLiBJbiBjYXNlIG9mIGF0dHJpYnV0ZSBjb2xsaXNpb24gbGF0ZXIgcmVzb3VyY2VzIHdpbGwgdGFrZSBwcmVjZWRlbmNlLlxuICpcbiAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhdGlvbiBmb3IgcmVzb3VyY2UgZGV0ZWN0aW9uXG4gKi9cbnZhciBkZXRlY3RSZXNvdXJjZXNTeW5jID0gZnVuY3Rpb24gKGNvbmZpZykge1xuICAgIHZhciBfYTtcbiAgICBpZiAoY29uZmlnID09PSB2b2lkIDApIHsgY29uZmlnID0ge307IH1cbiAgICB2YXIgcmVzb3VyY2VzID0gKChfYSA9IGNvbmZpZy5kZXRlY3RvcnMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IFtdKS5tYXAoZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZXNvdXJjZU9yUHJvbWlzZV8xID0gZC5kZXRlY3QoY29uZmlnKTtcbiAgICAgICAgICAgIHZhciByZXNvdXJjZV8xO1xuICAgICAgICAgICAgaWYgKGlzUHJvbWlzZUxpa2UocmVzb3VyY2VPclByb21pc2VfMSkpIHtcbiAgICAgICAgICAgICAgICB2YXIgY3JlYXRlUHJvbWlzZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNvbHZlZFJlc291cmNlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2IubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sIHJlc291cmNlT3JQcm9taXNlXzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRSZXNvdXJjZSA9IF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgKChfYSA9IHJlc29sdmVkUmVzb3VyY2Uud2FpdEZvckFzeW5jQXR0cmlidXRlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwocmVzb2x2ZWRSZXNvdXJjZSkpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIHJlc29sdmVkUmVzb3VyY2UuYXR0cmlidXRlc107XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pOyB9O1xuICAgICAgICAgICAgICAgIHJlc291cmNlXzEgPSBuZXcgUmVzb3VyY2Uoe30sIGNyZWF0ZVByb21pc2UoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNvdXJjZV8xID0gcmVzb3VyY2VPclByb21pc2VfMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXNvdXJjZV8xLndhaXRGb3JBc3luY0F0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICB2b2lkIHJlc291cmNlXzFcbiAgICAgICAgICAgICAgICAgICAgLndhaXRGb3JBc3luY0F0dHJpYnV0ZXMoKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkaWFnLmRlYnVnKGQuY29uc3RydWN0b3IubmFtZSArIFwiIGZvdW5kIHJlc291cmNlLlwiLCByZXNvdXJjZV8xKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpYWcuZGVidWcoZC5jb25zdHJ1Y3Rvci5uYW1lICsgXCIgZm91bmQgcmVzb3VyY2UuXCIsIHJlc291cmNlXzEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlXzE7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGRpYWcuZXJyb3IoZC5jb25zdHJ1Y3Rvci5uYW1lICsgXCIgZmFpbGVkOiBcIiArIGUubWVzc2FnZSk7XG4gICAgICAgICAgICByZXR1cm4gUmVzb3VyY2UuZW1wdHkoKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBtZXJnZWRSZXNvdXJjZXMgPSByZXNvdXJjZXMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHJlc291cmNlKSB7IHJldHVybiBhY2MubWVyZ2UocmVzb3VyY2UpOyB9LCBSZXNvdXJjZS5lbXB0eSgpKTtcbiAgICBpZiAobWVyZ2VkUmVzb3VyY2VzLndhaXRGb3JBc3luY0F0dHJpYnV0ZXMpIHtcbiAgICAgICAgdm9pZCBtZXJnZWRSZXNvdXJjZXMud2FpdEZvckFzeW5jQXR0cmlidXRlcygpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy8gRnV0dXJlIGNoZWNrIGlmIHZlcmJvc2UgbG9nZ2luZyBpcyBlbmFibGVkIGlzc3VlICMxOTAzXG4gICAgICAgICAgICBsb2dSZXNvdXJjZXMocmVzb3VyY2VzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBtZXJnZWRSZXNvdXJjZXM7XG59O1xuLyoqXG4gKiBXcml0ZXMgZGVidWcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldGVjdGVkIHJlc291cmNlcyB0byB0aGUgbG9nZ2VyIGRlZmluZWQgaW4gdGhlIHJlc291cmNlIGRldGVjdGlvbiBjb25maWcsIGlmIG9uZSBpcyBwcm92aWRlZC5cbiAqXG4gKiBAcGFyYW0gcmVzb3VyY2VzIFRoZSBhcnJheSBvZiB7QGxpbmsgUmVzb3VyY2V9IHRoYXQgc2hvdWxkIGJlIGxvZ2dlZC4gRW1wdHkgZW50cmllcyB3aWxsIGJlIGlnbm9yZWQuXG4gKi9cbnZhciBsb2dSZXNvdXJjZXMgPSBmdW5jdGlvbiAocmVzb3VyY2VzKSB7XG4gICAgcmVzb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHJlc291cmNlKSB7XG4gICAgICAgIC8vIFByaW50IG9ubHkgcG9wdWxhdGVkIHJlc291cmNlc1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocmVzb3VyY2UuYXR0cmlidXRlcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFyIHJlc291cmNlRGVidWdTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShyZXNvdXJjZS5hdHRyaWJ1dGVzLCBudWxsLCA0KTtcbiAgICAgICAgICAgIGRpYWcudmVyYm9zZShyZXNvdXJjZURlYnVnU3RyaW5nKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxuZXhwb3J0IHsgUmVzb3VyY2UsIGJyb3dzZXJEZXRlY3RvciwgYnJvd3NlckRldGVjdG9yU3luYywgZGV0ZWN0UmVzb3VyY2VzLCBkZXRlY3RSZXNvdXJjZXNTeW5jLCBlbnZEZXRlY3RvciwgZW52RGV0ZWN0b3JTeW5jLCBob3N0RGV0ZWN0b3IsIGhvc3REZXRlY3RvclN5bmMsIG9zRGV0ZWN0b3IsIG9zRGV0ZWN0b3JTeW5jLCBwcm9jZXNzRGV0ZWN0b3IsIHByb2Nlc3NEZXRlY3RvclN5bmMsIHNlcnZpY2VJbnN0YW5jZUlkRGV0ZWN0b3JTeW5jIH07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxLQUFLQSxTQUFnQjtBQUM5QixTQUFjLEtBQUxDLFVBQStCO0FBQ3hDLFNBQVMsS0FBS0MsU0FBWTtBQUMxQixTQUFTLEtBQUtDLEdBQWtDLEtBQUtDLEdBQXlDLEtBQUtDLEdBQXFDLEtBQUtDLEdBQVEsS0FBS0MsU0FBZ0M7QUFpQjFMLElBQUlDO0FBQUE7QUFBQSxFQUFrQyxXQUFZO0FBQzlDLGFBQVNBLElBQW1CO0FBQUEsSUFDNUI7QUFDQSxXQUFBQSxFQUFpQixVQUFVLFNBQVMsV0FBWTtBQUM1QyxhQUFPLElBQUlSLEVBQVMsQ0FBQyxDQUFDO0FBQUEsSUFDMUIsR0FDT1E7QUFBQSxFQUNYLEVBQUU7QUFBQSxHQUNFQyxJQUFtQixJQUFJRCxFQUFpQixHQWlCeENFO0FBQUE7QUFBQSxFQUE4QixXQUFZO0FBQzFDLGFBQVNBLElBQWU7QUFBQSxJQUN4QjtBQUNBLFdBQUFBLEVBQWEsVUFBVSxTQUFTLFdBQVk7QUFDeEMsYUFBTyxRQUFRLFFBQVFELEVBQWlCLE9BQU8sQ0FBQztBQUFBLElBQ3BELEdBQ09DO0FBQUEsRUFDWCxFQUFFO0FBQUEsR0FD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RyxFQUFTLENBQUMsR0FBR2lHLEVBQWMsQ0FBQztBQUFBLE1BQ2pEO0FBRUksUUFBQUQsSUFBYUQ7QUFFakIsYUFBSUMsRUFBVyx5QkFDTkEsRUFDQSx1QkFBdUIsRUFDdkIsS0FBSyxXQUFZO0FBQ2xCLGVBQU85RixFQUFLLE1BQU1ELEVBQUUsWUFBWSxPQUFPLG9CQUFvQitGLENBQVU7QUFBQSxNQUN6RSxDQUFDLElBR0Q5RixFQUFLLE1BQU1ELEVBQUUsWUFBWSxPQUFPLG9CQUFvQitGLENBQVUsR0FFM0RBO0FBQUEsSUFDWCxTQUNPckQsR0FBRztBQUNOLGFBQUF6QyxFQUFLLE1BQU1ELEVBQUUsWUFBWSxPQUFPLGNBQWMwQyxFQUFFLE9BQU8sR0FDaEQzQyxFQUFTLE1BQU07QUFBQSxJQUMxQjtBQUFBLEVBQ0osQ0FBQyxHQUNHbUcsSUFBa0JULEVBQVUsT0FBTyxTQUFVRyxHQUFLRixHQUFVO0FBQUUsV0FBT0UsRUFBSSxNQUFNRixDQUFRO0FBQUEsRUFBRyxHQUFHM0YsRUFBUyxNQUFNLENBQUM7QUFDakgsU0FBSW1HLEVBQWdCLDBCQUNYQSxFQUFnQix1QkFBdUIsRUFBRSxLQUFLLFdBQVk7QUFFM0QsSUFBQVAsRUFBYUYsQ0FBUztBQUFBLEVBQzFCLENBQUMsR0FFRVM7QUFDWCxHQU1JUCxJQUFlLFNBQVVGLEdBQVc7QUFDcEMsRUFBQUEsRUFBVSxRQUFRLFNBQVVDLEdBQVU7QUFFbEMsUUFBSSxPQUFPLEtBQUtBLEVBQVMsVUFBVSxFQUFFLFNBQVMsR0FBRztBQUM3QyxVQUFJUyxJQUFzQixLQUFLLFVBQVVULEVBQVMsWUFBWSxNQUFNLENBQUM7QUFDckUsTUFBQXpGLEVBQUssUUFBUWtHLENBQW1CO0FBQUEsSUFDcEM7QUFBQSxFQUNKLENBQUM7QUFDTDsiLAogICJuYW1lcyI6IFsiUmVzb3VyY2UiLCAiZCIsICJkaWFnIiwgIlNFTVJFU0FUVFJTX1BST0NFU1NfUlVOVElNRV9OQU1FIiwgIlNFTVJFU0FUVFJTX1BST0NFU1NfUlVOVElNRV9ERVNDUklQVElPTiIsICJTRU1SRVNBVFRSU19QUk9DRVNTX1JVTlRJTUVfVkVSU0lPTiIsICJnZXRFbnYiLCAiU0VNUkVTQVRUUlNfU0VSVklDRV9OQU1FIiwgIk5vb3BEZXRlY3RvclN5bmMiLCAibm9vcERldGVjdG9yU3luYyIsICJOb29wRGV0ZWN0b3IiLCAibm9vcERldGVjdG9yIiwgImhvc3REZXRlY3RvciIsICJob3N0RGV0ZWN0b3JTeW5jIiwgIm9zRGV0ZWN0b3IiLCAib3NEZXRlY3RvclN5bmMiLCAicHJvY2Vzc0RldGVjdG9yIiwgInByb2Nlc3NEZXRlY3RvclN5bmMiLCAic2VydmljZUluc3RhbmNlSWREZXRlY3RvclN5bmMiLCAiX19hc3NpZ24iLCAidCIsICJzIiwgImkiLCAibiIsICJwIiwgIkJyb3dzZXJEZXRlY3RvclN5bmMiLCAiY29uZmlnIiwgIl9hIiwgIl9iIiwgIl9jIiwgIl9kIiwgImlzQnJvd3NlciIsICJicm93c2VyUmVzb3VyY2UiLCAiX2NvbmZpZyIsICJicm93c2VyRGV0ZWN0b3JTeW5jIiwgIkJyb3dzZXJEZXRlY3RvciIsICJicm93c2VyRGV0ZWN0b3IiLCAiX192YWx1ZXMiLCAibyIsICJtIiwgIl9fcmVhZCIsICJyIiwgImFyIiwgImUiLCAiZXJyb3IiLCAiRW52RGV0ZWN0b3JTeW5jIiwgImF0dHJpYnV0ZXMiLCAiZW52IiwgInJhd0F0dHJpYnV0ZXMiLCAic2VydmljZU5hbWUiLCAicGFyc2VkQXR0cmlidXRlcyIsICJyYXdFbnZBdHRyaWJ1dGVzIiwgImVfMSIsICJyYXdBdHRyaWJ1dGVzXzEiLCAicmF3QXR0cmlidXRlc18xXzEiLCAicmF3QXR0cmlidXRlIiwgImtleVZhbHVlUGFpciIsICJrZXkiLCAidmFsdWUiLCAiZV8xXzEiLCAibmFtZSIsICJzdHIiLCAiY2giLCAiZW52RGV0ZWN0b3JTeW5jIiwgIkVudkRldGVjdG9yIiwgImVudkRldGVjdG9yIiwgImlzUHJvbWlzZUxpa2UiLCAidmFsIiwgIl9fYXdhaXRlciIsICJ0aGlzQXJnIiwgIl9hcmd1bWVudHMiLCAiUCIsICJnZW5lcmF0b3IiLCAiYWRvcHQiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAiZnVsZmlsbGVkIiwgInN0ZXAiLCAicmVqZWN0ZWQiLCAicmVzdWx0IiwgIl9fZ2VuZXJhdG9yIiwgImJvZHkiLCAiXyIsICJmIiwgInkiLCAiZyIsICJ2ZXJiIiwgInYiLCAib3AiLCAiZGV0ZWN0UmVzb3VyY2VzIiwgInJlc291cmNlcyIsICJyZXNvdXJjZSIsICJsb2dSZXNvdXJjZXMiLCAiYWNjIiwgImRldGVjdFJlc291cmNlc1N5bmMiLCAicmVzb3VyY2VPclByb21pc2VfMSIsICJyZXNvdXJjZV8xIiwgImNyZWF0ZVByb21pc2UiLCAicmVzb2x2ZWRSZXNvdXJjZSIsICJtZXJnZWRSZXNvdXJjZXMiLCAicmVzb3VyY2VEZWJ1Z1N0cmluZyJdCn0K
|
|
330
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtIX57MDBrfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IFIgYXMgUmVzb3VyY2UgfSBmcm9tICcuL1Jlc291cmNlLSF+ezAwYX1+LmpzJztcbmV4cG9ydCB7IGQgYXMgZGVmYXVsdFNlcnZpY2VOYW1lIH0gZnJvbSAnLi9SZXNvdXJjZS0hfnswMGF9fi5qcyc7XG5pbXBvcnQgeyBkIGFzIGRpYWcgfSBmcm9tICcuL2RpYWctYXBpLSF+ezAwNX1+LmpzJztcbmltcG9ydCB7IGUgYXMgU0VNUkVTQVRUUlNfUFJPQ0VTU19SVU5USU1FX05BTUUsIGYgYXMgU0VNUkVTQVRUUlNfUFJPQ0VTU19SVU5USU1FX0RFU0NSSVBUSU9OLCBnIGFzIFNFTVJFU0FUVFJTX1BST0NFU1NfUlVOVElNRV9WRVJTSU9OLCBoIGFzIGdldEVudiwgUyBhcyBTRU1SRVNBVFRSU19TRVJWSUNFX05BTUUgfSBmcm9tICcuL3Nkay1pbmZvLSF+ezAwYn1+LmpzJztcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBOb29wRGV0ZWN0b3JTeW5jID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE5vb3BEZXRlY3RvclN5bmMoKSB7XG4gICAgfVxuICAgIE5vb3BEZXRlY3RvclN5bmMucHJvdG90eXBlLmRldGVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXNvdXJjZSh7fSk7XG4gICAgfTtcbiAgICByZXR1cm4gTm9vcERldGVjdG9yU3luYztcbn0oKSk7XG52YXIgbm9vcERldGVjdG9yU3luYyA9IG5ldyBOb29wRGV0ZWN0b3JTeW5jKCk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgTm9vcERldGVjdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE5vb3BEZXRlY3RvcigpIHtcbiAgICB9XG4gICAgTm9vcERldGVjdG9yLnByb3RvdHlwZS5kZXRlY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobm9vcERldGVjdG9yU3luYy5kZXRlY3QoKSk7XG4gICAgfTtcbiAgICByZXR1cm4gTm9vcERldGVjdG9yO1xufSgpKTtcbnZhciBub29wRGV0ZWN0b3IgPSBuZXcgTm9vcERldGVjdG9yKCk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgaG9zdERldGVjdG9yID0gbm9vcERldGVjdG9yO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIGhvc3REZXRlY3RvclN5bmMgPSBub29wRGV0ZWN0b3JTeW5jO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIG9zRGV0ZWN0b3IgPSBub29wRGV0ZWN0b3I7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgb3NEZXRlY3RvclN5bmMgPSBub29wRGV0ZWN0b3JTeW5jO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIHByb2Nlc3NEZXRlY3RvciA9IG5vb3BEZXRlY3RvcjtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBwcm9jZXNzRGV0ZWN0b3JTeW5jID0gbm9vcERldGVjdG9yO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbnZhciBzZXJ2aWNlSW5zdGFuY2VJZERldGVjdG9yU3luYyA9IG5vb3BEZXRlY3RvclN5bmM7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19hc3NpZ24gPSAodW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbi8qKlxuICogQnJvd3NlckRldGVjdG9yU3luYyB3aWxsIGJlIHVzZWQgdG8gZGV0ZWN0IHRoZSByZXNvdXJjZXMgcmVsYXRlZCB0byBicm93c2VyLlxuICovXG52YXIgQnJvd3NlckRldGVjdG9yU3luYyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCcm93c2VyRGV0ZWN0b3JTeW5jKCkge1xuICAgIH1cbiAgICBCcm93c2VyRGV0ZWN0b3JTeW5jLnByb3RvdHlwZS5kZXRlY3QgPSBmdW5jdGlvbiAoY29uZmlnKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIF9iLCBfYywgX2Q7XG4gICAgICAgIHZhciBpc0Jyb3dzZXIgPSB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgKChfYyA9IChfYiA9IGdsb2JhbC5wcm9jZXNzKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IudmVyc2lvbnMpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5ub2RlKSA9PT0gdW5kZWZpbmVkICYmIC8vIE5vZGUuanMgdjIxIGFkZHMgYG5hdmlnYXRvcmBcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgZG9uJ3QgaGF2ZSBCdW4gdHlwZXNcbiAgICAgICAgICAgICgoX2QgPSBnbG9iYWwuQnVuKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QudmVyc2lvbikgPT09IHVuZGVmaW5lZDsgLy8gQnVuIChidW4uc2gpIGRlZmluZXMgYG5hdmlnYXRvcmBcbiAgICAgICAgaWYgKCFpc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZS5lbXB0eSgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBicm93c2VyUmVzb3VyY2UgPSAoX2EgPSB7fSxcbiAgICAgICAgICAgIF9hW1NFTVJFU0FUVFJTX1BST0NFU1NfUlVOVElNRV9OQU1FXSA9ICdicm93c2VyJyxcbiAgICAgICAgICAgIF9hW1NFTVJFU0FUVFJTX1BST0NFU1NfUlVOVElNRV9ERVNDUklQVElPTl0gPSAnV2ViIEJyb3dzZXInLFxuICAgICAgICAgICAgX2FbU0VNUkVTQVRUUlNfUFJPQ0VTU19SVU5USU1FX1ZFUlNJT05dID0gbmF2aWdhdG9yLnVzZXJBZ2VudCxcbiAgICAgICAgICAgIF9hKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFJlc291cmNlQXR0cmlidXRlcyhicm93c2VyUmVzb3VyY2UsIGNvbmZpZyk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBWYWxpZGF0ZXMgcHJvY2VzcyByZXNvdXJjZSBhdHRyaWJ1dGUgbWFwIGZyb20gcHJvY2VzcyB2YXJpYWJsZXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBicm93c2VyUmVzb3VyY2UgVGhlIHVuLXNhbml0aXplZCByZXNvdXJjZSBhdHRyaWJ1dGVzIGZyb20gcHJvY2VzcyBhcyBrZXkvdmFsdWUgcGFpcnMuXG4gICAgICogQHBhcmFtIGNvbmZpZzogQ29uZmlnXG4gICAgICogQHJldHVybnMgVGhlIHNhbml0aXplZCByZXNvdXJjZSBhdHRyaWJ1dGVzLlxuICAgICAqL1xuICAgIEJyb3dzZXJEZXRlY3RvclN5bmMucHJvdG90eXBlLl9nZXRSZXNvdXJjZUF0dHJpYnV0ZXMgPSBmdW5jdGlvbiAoYnJvd3NlclJlc291cmNlLCBfY29uZmlnKSB7XG4gICAgICAgIGlmIChicm93c2VyUmVzb3VyY2VbU0VNUkVTQVRUUlNfUFJPQ0VTU19SVU5USU1FX1ZFUlNJT05dID09PSAnJykge1xuICAgICAgICAgICAgZGlhZy5kZWJ1ZygnQnJvd3NlckRldGVjdG9yIGZhaWxlZDogVW5hYmxlIHRvIGZpbmQgcmVxdWlyZWQgYnJvd3NlciByZXNvdXJjZXMuICcpO1xuICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlLmVtcHR5KCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlc291cmNlKF9fYXNzaWduKHt9LCBicm93c2VyUmVzb3VyY2UpKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3RvclN5bmM7XG59KCkpO1xudmFyIGJyb3dzZXJEZXRlY3RvclN5bmMgPSBuZXcgQnJvd3NlckRldGVjdG9yU3luYygpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBCcm93c2VyRGV0ZWN0b3Igd2lsbCBiZSB1c2VkIHRvIGRldGVjdCB0aGUgcmVzb3VyY2VzIHJlbGF0ZWQgdG8gYnJvd3Nlci5cbiAqL1xudmFyIEJyb3dzZXJEZXRlY3RvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBCcm93c2VyRGV0ZWN0b3IoKSB7XG4gICAgfVxuICAgIEJyb3dzZXJEZXRlY3Rvci5wcm90b3R5cGUuZGV0ZWN0ID0gZnVuY3Rpb24gKGNvbmZpZykge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGJyb3dzZXJEZXRlY3RvclN5bmMuZGV0ZWN0KGNvbmZpZykpO1xuICAgIH07XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvcjtcbn0oKSk7XG52YXIgYnJvd3NlckRldGVjdG9yID0gbmV3IEJyb3dzZXJEZXRlY3RvcigpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIF9fdmFsdWVzID0gKHVuZGVmaW5lZCAmJiB1bmRlZmluZWQuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbnZhciBfX3JlYWQgPSAodW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG4vKipcbiAqIEVudkRldGVjdG9yU3luYyBjYW4gYmUgdXNlZCB0byBkZXRlY3QgdGhlIHByZXNlbmNlIG9mIGFuZCBjcmVhdGUgYSBSZXNvdXJjZVxuICogZnJvbSB0aGUgT1RFTF9SRVNPVVJDRV9BVFRSSUJVVEVTIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICovXG52YXIgRW52RGV0ZWN0b3JTeW5jID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEVudkRldGVjdG9yU3luYygpIHtcbiAgICAgICAgLy8gVHlwZSwgYXR0cmlidXRlIGtleXMsIGFuZCBhdHRyaWJ1dGUgdmFsdWVzIHNob3VsZCBub3QgZXhjZWVkIDI1NiBjaGFyYWN0ZXJzLlxuICAgICAgICB0aGlzLl9NQVhfTEVOR1RIID0gMjU1O1xuICAgICAgICAvLyBPVEVMX1JFU09VUkNFX0FUVFJJQlVURVMgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhdHRyaWJ1dGVzLlxuICAgICAgICB0aGlzLl9DT01NQV9TRVBBUkFUT1IgPSAnLCc7XG4gICAgICAgIC8vIE9URUxfUkVTT1VSQ0VfQVRUUklCVVRFUyBjb250YWlucyBrZXkgdmFsdWUgcGFpciBzZXBhcmF0ZWQgYnkgJz0nLlxuICAgICAgICB0aGlzLl9MQUJFTF9LRVlfVkFMVUVfU1BMSVRURVIgPSAnPSc7XG4gICAgICAgIHRoaXMuX0VSUk9SX01FU1NBR0VfSU5WQUxJRF9DSEFSUyA9ICdzaG91bGQgYmUgYSBBU0NJSSBzdHJpbmcgd2l0aCBhIGxlbmd0aCBncmVhdGVyIHRoYW4gMCBhbmQgbm90IGV4Y2VlZCAnICtcbiAgICAgICAgICAgIHRoaXMuX01BWF9MRU5HVEggK1xuICAgICAgICAgICAgJyBjaGFyYWN0ZXJzLic7XG4gICAgICAgIHRoaXMuX0VSUk9SX01FU1NBR0VfSU5WQUxJRF9WQUxVRSA9ICdzaG91bGQgYmUgYSBBU0NJSSBzdHJpbmcgd2l0aCBhIGxlbmd0aCBub3QgZXhjZWVkICcgK1xuICAgICAgICAgICAgdGhpcy5fTUFYX0xFTkdUSCArXG4gICAgICAgICAgICAnIGNoYXJhY3RlcnMuJztcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHtAbGluayBSZXNvdXJjZX0gcG9wdWxhdGVkIHdpdGggYXR0cmlidXRlcyBmcm9tIHRoZVxuICAgICAqIE9URUxfUkVTT1VSQ0VfQVRUUklCVVRFUyBlbnZpcm9ubWVudCB2YXJpYWJsZS4gTm90ZSB0aGlzIGlzIGFuIGFzeW5jXG4gICAgICogZnVuY3Rpb24gdG8gY29uZm9ybSB0byB0aGUgRGV0ZWN0b3IgaW50ZXJmYWNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbmZpZyBUaGUgcmVzb3VyY2UgZGV0ZWN0aW9uIGNvbmZpZ1xuICAgICAqL1xuICAgIEVudkRldGVjdG9yU3luYy5wcm90b3R5cGUuZGV0ZWN0ID0gZnVuY3Rpb24gKF9jb25maWcpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB7fTtcbiAgICAgICAgdmFyIGVudiA9IGdldEVudigpO1xuICAgICAgICB2YXIgcmF3QXR0cmlidXRlcyA9IGVudi5PVEVMX1JFU09VUkNFX0FUVFJJQlVURVM7XG4gICAgICAgIHZhciBzZXJ2aWNlTmFtZSA9IGVudi5PVEVMX1NFUlZJQ0VfTkFNRTtcbiAgICAgICAgaWYgKHJhd0F0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFyIHBhcnNlZEF0dHJpYnV0ZXMgPSB0aGlzLl9wYXJzZVJlc291cmNlQXR0cmlidXRlcyhyYXdBdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGF0dHJpYnV0ZXMsIHBhcnNlZEF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBkaWFnLmRlYnVnKFwiRW52RGV0ZWN0b3IgZmFpbGVkOiBcIiArIGUubWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlcnZpY2VOYW1lKSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzW1NFTVJFU0FUVFJTX1NFUlZJQ0VfTkFNRV0gPSBzZXJ2aWNlTmFtZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFJlc291cmNlKGF0dHJpYnV0ZXMpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhdHRyaWJ1dGUgbWFwIGZyb20gdGhlIE9URUxfUkVTT1VSQ0VfQVRUUklCVVRFUyBlbnZpcm9ubWVudFxuICAgICAqIHZhcmlhYmxlLlxuICAgICAqXG4gICAgICogT1RFTF9SRVNPVVJDRV9BVFRSSUJVVEVTOiBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGF0dHJpYnV0ZXMgZGVzY3JpYmluZ1xuICAgICAqIHRoZSBzb3VyY2UgaW4gbW9yZSBkZXRhaWwsIGUuZy4g4oCca2V5MT12YWwxLGtleTI9dmFsMuKAnS4gRG9tYWluIG5hbWVzIGFuZFxuICAgICAqIHBhdGhzIGFyZSBhY2NlcHRlZCBhcyBhdHRyaWJ1dGUga2V5cy4gVmFsdWVzIG1heSBiZSBxdW90ZWQgb3IgdW5xdW90ZWQgaW5cbiAgICAgKiBnZW5lcmFsLiBJZiBhIHZhbHVlIGNvbnRhaW5zIHdoaXRlc3BhY2UsID0sIG9yIFwiIGNoYXJhY3RlcnMsIGl0IG11c3RcbiAgICAgKiBhbHdheXMgYmUgcXVvdGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJhd0VudkF0dHJpYnV0ZXMgVGhlIHJlc291cmNlIGF0dHJpYnV0ZXMgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdFxuICAgICAqIG9mIGtleS92YWx1ZSBwYWlycy5cbiAgICAgKiBAcmV0dXJucyBUaGUgc2FuaXRpemVkIHJlc291cmNlIGF0dHJpYnV0ZXMuXG4gICAgICovXG4gICAgRW52RGV0ZWN0b3JTeW5jLnByb3RvdHlwZS5fcGFyc2VSZXNvdXJjZUF0dHJpYnV0ZXMgPSBmdW5jdGlvbiAocmF3RW52QXR0cmlidXRlcykge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgaWYgKCFyYXdFbnZBdHRyaWJ1dGVzKVxuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHt9O1xuICAgICAgICB2YXIgcmF3QXR0cmlidXRlcyA9IHJhd0VudkF0dHJpYnV0ZXMuc3BsaXQodGhpcy5fQ09NTUFfU0VQQVJBVE9SLCAtMSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciByYXdBdHRyaWJ1dGVzXzEgPSBfX3ZhbHVlcyhyYXdBdHRyaWJ1dGVzKSwgcmF3QXR0cmlidXRlc18xXzEgPSByYXdBdHRyaWJ1dGVzXzEubmV4dCgpOyAhcmF3QXR0cmlidXRlc18xXzEuZG9uZTsgcmF3QXR0cmlidXRlc18xXzEgPSByYXdBdHRyaWJ1dGVzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJhd0F0dHJpYnV0ZSA9IHJhd0F0dHJpYnV0ZXNfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgIHZhciBrZXlWYWx1ZVBhaXIgPSByYXdBdHRyaWJ1dGUuc3BsaXQodGhpcy5fTEFCRUxfS0VZX1ZBTFVFX1NQTElUVEVSLCAtMSk7XG4gICAgICAgICAgICAgICAgaWYgKGtleVZhbHVlUGFpci5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBfYiA9IF9fcmVhZChrZXlWYWx1ZVBhaXIsIDIpLCBrZXkgPSBfYlswXSwgdmFsdWUgPSBfYlsxXTtcbiAgICAgICAgICAgICAgICAvLyBMZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlcyBhcmUgdHJpbW1lZC5cbiAgICAgICAgICAgICAgICBrZXkgPSBrZXkudHJpbSgpO1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudHJpbSgpLnNwbGl0KC9eXCJ8XCIkLykuam9pbignJyk7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1ZhbGlkQW5kTm90RW1wdHkoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdHRyaWJ1dGUga2V5IFwiICsgdGhpcy5fRVJST1JfTUVTU0FHRV9JTlZBTElEX0NIQVJTKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1ZhbGlkKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdHRyaWJ1dGUgdmFsdWUgXCIgKyB0aGlzLl9FUlJPUl9NRVNTQUdFX0lOVkFMSURfVkFMVUUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW2tleV0gPSBkZWNvZGVVUklDb21wb25lbnQodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAocmF3QXR0cmlidXRlc18xXzEgJiYgIXJhd0F0dHJpYnV0ZXNfMV8xLmRvbmUgJiYgKF9hID0gcmF3QXR0cmlidXRlc18xLnJldHVybikpIF9hLmNhbGwocmF3QXR0cmlidXRlc18xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gU3RyaW5nIGlzIGEgdmFsaWQgcHJpbnRhYmxlIEFTQ0lJIHN0cmluZyB3aXRoXG4gICAgICogYSBsZW5ndGggbm90IGV4Y2VlZCBfTUFYX0xFTkdUSCBjaGFyYWN0ZXJzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHN0ciBUaGUgU3RyaW5nIHRvIGJlIHZhbGlkYXRlZC5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBTdHJpbmcgaXMgdmFsaWQuXG4gICAgICovXG4gICAgRW52RGV0ZWN0b3JTeW5jLnByb3RvdHlwZS5faXNWYWxpZCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgIHJldHVybiBuYW1lLmxlbmd0aCA8PSB0aGlzLl9NQVhfTEVOR1RIICYmIHRoaXMuX2lzQmFnZ2FnZU9jdGV0U3RyaW5nKG5hbWUpO1xuICAgIH07XG4gICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2JhZ2dhZ2UvI2RlZmluaXRpb25cbiAgICBFbnZEZXRlY3RvclN5bmMucHJvdG90eXBlLl9pc0JhZ2dhZ2VPY3RldFN0cmluZyA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBjaCA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAgICAgaWYgKGNoIDwgMHgyMSB8fCBjaCA9PT0gMHgyYyB8fCBjaCA9PT0gMHgzYiB8fCBjaCA9PT0gMHg1YyB8fCBjaCA+IDB4N2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIFN0cmluZyBpcyBhIHZhbGlkIHByaW50YWJsZSBBU0NJSSBzdHJpbmcgd2l0aFxuICAgICAqIGEgbGVuZ3RoIGdyZWF0ZXIgdGhhbiAwIGFuZCBub3QgZXhjZWVkIF9NQVhfTEVOR1RIIGNoYXJhY3RlcnMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RyIFRoZSBTdHJpbmcgdG8gYmUgdmFsaWRhdGVkLlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIFN0cmluZyBpcyB2YWxpZCBhbmQgbm90IGVtcHR5LlxuICAgICAqL1xuICAgIEVudkRldGVjdG9yU3luYy5wcm90b3R5cGUuX2lzVmFsaWRBbmROb3RFbXB0eSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5sZW5ndGggPiAwICYmIHRoaXMuX2lzVmFsaWQoc3RyKTtcbiAgICB9O1xuICAgIHJldHVybiBFbnZEZXRlY3RvclN5bmM7XG59KCkpO1xudmFyIGVudkRldGVjdG9yU3luYyA9IG5ldyBFbnZEZXRlY3RvclN5bmMoKTtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogRW52RGV0ZWN0b3IgY2FuIGJlIHVzZWQgdG8gZGV0ZWN0IHRoZSBwcmVzZW5jZSBvZiBhbmQgY3JlYXRlIGEgUmVzb3VyY2VcbiAqIGZyb20gdGhlIE9URUxfUkVTT1VSQ0VfQVRUUklCVVRFUyBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqL1xudmFyIEVudkRldGVjdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEVudkRldGVjdG9yKCkge1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEge0BsaW5rIFJlc291cmNlfSBwb3B1bGF0ZWQgd2l0aCBhdHRyaWJ1dGVzIGZyb20gdGhlXG4gICAgICogT1RFTF9SRVNPVVJDRV9BVFRSSUJVVEVTIGVudmlyb25tZW50IHZhcmlhYmxlLiBOb3RlIHRoaXMgaXMgYW4gYXN5bmNcbiAgICAgKiBmdW5jdGlvbiB0byBjb25mb3JtIHRvIHRoZSBEZXRlY3RvciBpbnRlcmZhY2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29uZmlnIFRoZSByZXNvdXJjZSBkZXRlY3Rpb24gY29uZmlnXG4gICAgICovXG4gICAgRW52RGV0ZWN0b3IucHJvdG90eXBlLmRldGVjdCA9IGZ1bmN0aW9uIChjb25maWcpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShlbnZEZXRlY3RvclN5bmMuZGV0ZWN0KGNvbmZpZykpO1xuICAgIH07XG4gICAgcmV0dXJuIEVudkRldGVjdG9yO1xufSgpKTtcbnZhciBlbnZEZXRlY3RvciA9IG5ldyBFbnZEZXRlY3RvcigpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIGlzUHJvbWlzZUxpa2UgPSBmdW5jdGlvbiAodmFsKSB7XG4gICAgcmV0dXJuICh2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbC50aGVuID09PSAnZnVuY3Rpb24nKTtcbn07XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19hd2FpdGVyID0gKHVuZGVmaW5lZCAmJiB1bmRlZmluZWQuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19nZW5lcmF0b3IgPSAodW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG4vKipcbiAqIFJ1bnMgYWxsIHJlc291cmNlIGRldGVjdG9ycyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0cyBtZXJnZWQgaW50byBhIHNpbmdsZSBSZXNvdXJjZS4gUHJvbWlzZVxuICogZG9lcyBub3QgcmVzb2x2ZSB1bnRpbCBhbGwgdGhlIHVuZGVybHlpbmcgZGV0ZWN0b3JzIGhhdmUgcmVzb2x2ZWQsIHVubGlrZVxuICogZGV0ZWN0UmVzb3VyY2VzU3luYy5cbiAqXG4gKiBAZGVwcmVjYXRlZCB1c2UgZGV0ZWN0UmVzb3VyY2VzU3luYygpIGluc3RlYWQuXG4gKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYXRpb24gZm9yIHJlc291cmNlIGRldGVjdGlvblxuICovXG52YXIgZGV0ZWN0UmVzb3VyY2VzID0gZnVuY3Rpb24gKGNvbmZpZykge1xuICAgIGlmIChjb25maWcgPT09IHZvaWQgMCkgeyBjb25maWcgPSB7fTsgfVxuICAgIHJldHVybiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcmVzb3VyY2VzO1xuICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gWzQgLyp5aWVsZCovLCBQcm9taXNlLmFsbCgoY29uZmlnLmRldGVjdG9ycyB8fCBbXSkubWFwKGZ1bmN0aW9uIChkKSB7IHJldHVybiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc291cmNlLCBlXzE7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYS50cnlzLnB1c2goWzAsIDIsICwgM10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgZC5kZXRlY3QoY29uZmlnKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhZy5kZWJ1ZyhkLmNvbnN0cnVjdG9yLm5hbWUgKyBcIiBmb3VuZCByZXNvdXJjZS5cIiwgcmVzb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIHJlc291cmNlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZV8xID0gX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhZy5kZWJ1ZyhkLmNvbnN0cnVjdG9yLm5hbWUgKyBcIiBmYWlsZWQ6IFwiICsgZV8xLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIFJlc291cmNlLmVtcHR5KCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiBbMiAvKnJldHVybiovXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7IH0pKV07XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXMgPSBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIEZ1dHVyZSBjaGVjayBpZiB2ZXJib3NlIGxvZ2dpbmcgaXMgZW5hYmxlZCBpc3N1ZSAjMTkwM1xuICAgICAgICAgICAgICAgICAgICBsb2dSZXNvdXJjZXMocmVzb3VyY2VzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIHJlc291cmNlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcmVzb3VyY2UpIHsgcmV0dXJuIGFjYy5tZXJnZShyZXNvdXJjZSk7IH0sIFJlc291cmNlLmVtcHR5KCkpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuLyoqXG4gKiBSdW5zIGFsbCByZXNvdXJjZSBkZXRlY3RvcnMgc3luY2hyb25vdXNseSwgbWVyZ2luZyB0aGVpciByZXN1bHRzLiBJbiBjYXNlIG9mIGF0dHJpYnV0ZSBjb2xsaXNpb24gbGF0ZXIgcmVzb3VyY2VzIHdpbGwgdGFrZSBwcmVjZWRlbmNlLlxuICpcbiAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhdGlvbiBmb3IgcmVzb3VyY2UgZGV0ZWN0aW9uXG4gKi9cbnZhciBkZXRlY3RSZXNvdXJjZXNTeW5jID0gZnVuY3Rpb24gKGNvbmZpZykge1xuICAgIHZhciBfYTtcbiAgICBpZiAoY29uZmlnID09PSB2b2lkIDApIHsgY29uZmlnID0ge307IH1cbiAgICB2YXIgcmVzb3VyY2VzID0gKChfYSA9IGNvbmZpZy5kZXRlY3RvcnMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IFtdKS5tYXAoZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZXNvdXJjZU9yUHJvbWlzZV8xID0gZC5kZXRlY3QoY29uZmlnKTtcbiAgICAgICAgICAgIHZhciByZXNvdXJjZV8xO1xuICAgICAgICAgICAgaWYgKGlzUHJvbWlzZUxpa2UocmVzb3VyY2VPclByb21pc2VfMSkpIHtcbiAgICAgICAgICAgICAgICB2YXIgY3JlYXRlUHJvbWlzZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXNvbHZlZFJlc291cmNlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2IubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHJldHVybiBbNCAvKnlpZWxkKi8sIHJlc291cmNlT3JQcm9taXNlXzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRSZXNvdXJjZSA9IF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgKChfYSA9IHJlc29sdmVkUmVzb3VyY2Uud2FpdEZvckFzeW5jQXR0cmlidXRlcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwocmVzb2x2ZWRSZXNvdXJjZSkpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9iLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIHJlc29sdmVkUmVzb3VyY2UuYXR0cmlidXRlc107XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pOyB9O1xuICAgICAgICAgICAgICAgIHJlc291cmNlXzEgPSBuZXcgUmVzb3VyY2Uoe30sIGNyZWF0ZVByb21pc2UoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNvdXJjZV8xID0gcmVzb3VyY2VPclByb21pc2VfMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXNvdXJjZV8xLndhaXRGb3JBc3luY0F0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgICAgICB2b2lkIHJlc291cmNlXzFcbiAgICAgICAgICAgICAgICAgICAgLndhaXRGb3JBc3luY0F0dHJpYnV0ZXMoKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkaWFnLmRlYnVnKGQuY29uc3RydWN0b3IubmFtZSArIFwiIGZvdW5kIHJlc291cmNlLlwiLCByZXNvdXJjZV8xKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpYWcuZGVidWcoZC5jb25zdHJ1Y3Rvci5uYW1lICsgXCIgZm91bmQgcmVzb3VyY2UuXCIsIHJlc291cmNlXzEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlXzE7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGRpYWcuZXJyb3IoZC5jb25zdHJ1Y3Rvci5uYW1lICsgXCIgZmFpbGVkOiBcIiArIGUubWVzc2FnZSk7XG4gICAgICAgICAgICByZXR1cm4gUmVzb3VyY2UuZW1wdHkoKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBtZXJnZWRSZXNvdXJjZXMgPSByZXNvdXJjZXMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHJlc291cmNlKSB7IHJldHVybiBhY2MubWVyZ2UocmVzb3VyY2UpOyB9LCBSZXNvdXJjZS5lbXB0eSgpKTtcbiAgICBpZiAobWVyZ2VkUmVzb3VyY2VzLndhaXRGb3JBc3luY0F0dHJpYnV0ZXMpIHtcbiAgICAgICAgdm9pZCBtZXJnZWRSZXNvdXJjZXMud2FpdEZvckFzeW5jQXR0cmlidXRlcygpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy8gRnV0dXJlIGNoZWNrIGlmIHZlcmJvc2UgbG9nZ2luZyBpcyBlbmFibGVkIGlzc3VlICMxOTAzXG4gICAgICAgICAgICBsb2dSZXNvdXJjZXMocmVzb3VyY2VzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBtZXJnZWRSZXNvdXJjZXM7XG59O1xuLyoqXG4gKiBXcml0ZXMgZGVidWcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldGVjdGVkIHJlc291cmNlcyB0byB0aGUgbG9nZ2VyIGRlZmluZWQgaW4gdGhlIHJlc291cmNlIGRldGVjdGlvbiBjb25maWcsIGlmIG9uZSBpcyBwcm92aWRlZC5cbiAqXG4gKiBAcGFyYW0gcmVzb3VyY2VzIFRoZSBhcnJheSBvZiB7QGxpbmsgUmVzb3VyY2V9IHRoYXQgc2hvdWxkIGJlIGxvZ2dlZC4gRW1wdHkgZW50cmllcyB3aWxsIGJlIGlnbm9yZWQuXG4gKi9cbnZhciBsb2dSZXNvdXJjZXMgPSBmdW5jdGlvbiAocmVzb3VyY2VzKSB7XG4gICAgcmVzb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHJlc291cmNlKSB7XG4gICAgICAgIC8vIFByaW50IG9ubHkgcG9wdWxhdGVkIHJlc291cmNlc1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMocmVzb3VyY2UuYXR0cmlidXRlcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFyIHJlc291cmNlRGVidWdTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShyZXNvdXJjZS5hdHRyaWJ1dGVzLCBudWxsLCA0KTtcbiAgICAgICAgICAgIGRpYWcudmVyYm9zZShyZXNvdXJjZURlYnVnU3RyaW5nKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxuZXhwb3J0IHsgUmVzb3VyY2UsIGJyb3dzZXJEZXRlY3RvciwgYnJvd3NlckRldGVjdG9yU3luYywgZGV0ZWN0UmVzb3VyY2VzLCBkZXRlY3RSZXNvdXJjZXNTeW5jLCBlbnZEZXRlY3RvciwgZW52RGV0ZWN0b3JTeW5jLCBob3N0RGV0ZWN0b3IsIGhvc3REZXRlY3RvclN5bmMsIG9zRGV0ZWN0b3IsIG9zRGV0ZWN0b3JTeW5jLCBwcm9jZXNzRGV0ZWN0b3IsIHByb2Nlc3NEZXRlY3RvclN5bmMsIHNlcnZpY2VJbnN0YW5jZUlkRGV0ZWN0b3JTeW5jIH07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsU0FBUyxLQUFLQSxTQUFnQjtBQUM5QixTQUFjLEtBQUxDLFVBQStCO0FBQ3hDLFNBQVMsS0FBS0MsU0FBWTtBQUMxQixTQUFTLEtBQUtDLEdBQWtDLEtBQUtDLEdBQXlDLEtBQUtDLEdBQXFDLEtBQUtDLEdBQVEsS0FBS0MsU0FBZ0M7QUFpQjFMLElBQUlDO0FBQUE7QUFBQSxFQUFrQyxXQUFZO0FBQzlDLGFBQVNBLElBQW1CO0FBQUEsSUFDNUI7QUFDQSxXQUFBQSxFQUFpQixVQUFVLFNBQVMsV0FBWTtBQUM1QyxhQUFPLElBQUlSLEVBQVMsQ0FBQyxDQUFDO0FBQUEsSUFDMUIsR0FDT1E7QUFBQSxFQUNYLEVBQUU7QUFBQSxHQUNFQyxJQUFtQixJQUFJRCxFQUFpQixHQWlCeENFO0FBQUE7QUFBQSxFQUE4QixXQUFZO0FBQzFDLGFBQVNBLElBQWU7QUFBQSxJQUN4QjtBQUNBLFdBQUFBLEVBQWEsVUFBVSxTQUFTLFdBQVk7QUFDeEMsYUFBTyxRQUFRLFFBQVFELEVBQWlCLE9BQU8sQ0FBQztBQUFBLElBQ3BELEdBQ09DO0FBQUEsRUFDWCxFQUFFO0FBQUEsR0FD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RyxFQUFTLENBQUMsR0FBR2lHLEVBQWMsQ0FBQztBQUFBLE1BQ2pEO0FBRUksUUFBQUQsSUFBYUQ7QUFFakIsYUFBSUMsRUFBVyx5QkFDTkEsRUFDQSx1QkFBdUIsRUFDdkIsS0FBSyxXQUFZO0FBQ2xCLGVBQU85RixFQUFLLE1BQU1ELEVBQUUsWUFBWSxPQUFPLG9CQUFvQitGLENBQVU7QUFBQSxNQUN6RSxDQUFDLElBR0Q5RixFQUFLLE1BQU1ELEVBQUUsWUFBWSxPQUFPLG9CQUFvQitGLENBQVUsR0FFM0RBO0FBQUEsSUFDWCxTQUNPckQsR0FBRztBQUNOLGFBQUF6QyxFQUFLLE1BQU1ELEVBQUUsWUFBWSxPQUFPLGNBQWMwQyxFQUFFLE9BQU8sR0FDaEQzQyxFQUFTLE1BQU07QUFBQSxJQUMxQjtBQUFBLEVBQ0osQ0FBQyxHQUNHbUcsSUFBa0JULEVBQVUsT0FBTyxTQUFVRyxHQUFLRixHQUFVO0FBQUUsV0FBT0UsRUFBSSxNQUFNRixDQUFRO0FBQUEsRUFBRyxHQUFHM0YsRUFBUyxNQUFNLENBQUM7QUFDakgsU0FBSW1HLEVBQWdCLDBCQUNYQSxFQUFnQix1QkFBdUIsRUFBRSxLQUFLLFdBQVk7QUFFM0QsSUFBQVAsRUFBYUYsQ0FBUztBQUFBLEVBQzFCLENBQUMsR0FFRVM7QUFDWCxHQU1JUCxJQUFlLFNBQVVGLEdBQVc7QUFDcEMsRUFBQUEsRUFBVSxRQUFRLFNBQVVDLEdBQVU7QUFFbEMsUUFBSSxPQUFPLEtBQUtBLEVBQVMsVUFBVSxFQUFFLFNBQVMsR0FBRztBQUM3QyxVQUFJUyxJQUFzQixLQUFLLFVBQVVULEVBQVMsWUFBWSxNQUFNLENBQUM7QUFDckUsTUFBQXpGLEVBQUssUUFBUWtHLENBQW1CO0FBQUEsSUFDcEM7QUFBQSxFQUNKLENBQUM7QUFDTDsiLAogICJuYW1lcyI6IFsiUmVzb3VyY2UiLCAiZCIsICJkaWFnIiwgIlNFTVJFU0FUVFJTX1BST0NFU1NfUlVOVElNRV9OQU1FIiwgIlNFTVJFU0FUVFJTX1BST0NFU1NfUlVOVElNRV9ERVNDUklQVElPTiIsICJTRU1SRVNBVFRSU19QUk9DRVNTX1JVTlRJTUVfVkVSU0lPTiIsICJnZXRFbnYiLCAiU0VNUkVTQVRUUlNfU0VSVklDRV9OQU1FIiwgIk5vb3BEZXRlY3RvclN5bmMiLCAibm9vcERldGVjdG9yU3luYyIsICJOb29wRGV0ZWN0b3IiLCAibm9vcERldGVjdG9yIiwgImhvc3REZXRlY3RvciIsICJob3N0RGV0ZWN0b3JTeW5jIiwgIm9zRGV0ZWN0b3IiLCAib3NEZXRlY3RvclN5bmMiLCAicHJvY2Vzc0RldGVjdG9yIiwgInByb2Nlc3NEZXRlY3RvclN5bmMiLCAic2VydmljZUluc3RhbmNlSWREZXRlY3RvclN5bmMiLCAiX19hc3NpZ24iLCAidCIsICJzIiwgImkiLCAibiIsICJwIiwgIkJyb3dzZXJEZXRlY3RvclN5bmMiLCAiY29uZmlnIiwgIl9hIiwgIl9iIiwgIl9jIiwgIl9kIiwgImlzQnJvd3NlciIsICJicm93c2VyUmVzb3VyY2UiLCAiX2NvbmZpZyIsICJicm93c2VyRGV0ZWN0b3JTeW5jIiwgIkJyb3dzZXJEZXRlY3RvciIsICJicm93c2VyRGV0ZWN0b3IiLCAiX192YWx1ZXMiLCAibyIsICJtIiwgIl9fcmVhZCIsICJyIiwgImFyIiwgImUiLCAiZXJyb3IiLCAiRW52RGV0ZWN0b3JTeW5jIiwgImF0dHJpYnV0ZXMiLCAiZW52IiwgInJhd0F0dHJpYnV0ZXMiLCAic2VydmljZU5hbWUiLCAicGFyc2VkQXR0cmlidXRlcyIsICJyYXdFbnZBdHRyaWJ1dGVzIiwgImVfMSIsICJyYXdBdHRyaWJ1dGVzXzEiLCAicmF3QXR0cmlidXRlc18xXzEiLCAicmF3QXR0cmlidXRlIiwgImtleVZhbHVlUGFpciIsICJrZXkiLCAidmFsdWUiLCAiZV8xXzEiLCAibmFtZSIsICJzdHIiLCAiY2giLCAiZW52RGV0ZWN0b3JTeW5jIiwgIkVudkRldGVjdG9yIiwgImVudkRldGVjdG9yIiwgImlzUHJvbWlzZUxpa2UiLCAidmFsIiwgIl9fYXdhaXRlciIsICJ0aGlzQXJnIiwgIl9hcmd1bWVudHMiLCAiUCIsICJnZW5lcmF0b3IiLCAiYWRvcHQiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAiZnVsZmlsbGVkIiwgInN0ZXAiLCAicmVqZWN0ZWQiLCAicmVzdWx0IiwgIl9fZ2VuZXJhdG9yIiwgImJvZHkiLCAiXyIsICJmIiwgInkiLCAiZyIsICJ2ZXJiIiwgInYiLCAib3AiLCAiZGV0ZWN0UmVzb3VyY2VzIiwgInJlc291cmNlcyIsICJyZXNvdXJjZSIsICJsb2dSZXNvdXJjZXMiLCAiYWNjIiwgImRldGVjdFJlc291cmNlc1N5bmMiLCAicmVzb3VyY2VPclByb21pc2VfMSIsICJyZXNvdXJjZV8xIiwgImNyZWF0ZVByb21pc2UiLCAicmVzb2x2ZWRSZXNvdXJjZSIsICJtZXJnZWRSZXNvdXJjZXMiLCAicmVzb3VyY2VEZWJ1Z1N0cmluZyJdCn0K
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { b as I, t as l, i as D, T as o, d as T, e as b } from "./index-
|
|
1
|
+
import { b as I, t as l, i as D, T as o, d as T, e as b } from "./index-Xxndn7Y1.js";
|
|
2
2
|
var C = I("OpenTelemetry SDK Context Key SUPPRESS_TRACING");
|
|
3
3
|
function A(r) {
|
|
4
4
|
return r.getValue(C) === !0;
|
|
@@ -147,4 +147,4 @@ export {
|
|
|
147
147
|
g as X_B3_SPAN_ID,
|
|
148
148
|
v as X_B3_TRACE_ID
|
|
149
149
|
};
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtIX57MDBpfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGIgYXMgY3JlYXRlQ29udGV4dEtleSwgdCBhcyB0cmFjZSwgaSBhcyBpc1NwYW5Db250ZXh0VmFsaWQsIFQgYXMgVHJhY2VGbGFncywgZCBhcyBpc1ZhbGlkVHJhY2VJZCwgZSBhcyBpc1ZhbGlkU3BhbklkIH0gZnJvbSAnLi9pbmRleC0hfnswMDV9fi5qcyc7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgU1VQUFJFU1NfVFJBQ0lOR19LRVkgPSBjcmVhdGVDb250ZXh0S2V5KCdPcGVuVGVsZW1ldHJ5IFNESyBDb250ZXh0IEtleSBTVVBQUkVTU19UUkFDSU5HJyk7XG5mdW5jdGlvbiBpc1RyYWNpbmdTdXBwcmVzc2VkKGNvbnRleHQpIHtcbiAgICByZXR1cm4gY29udGV4dC5nZXRWYWx1ZShTVVBQUkVTU19UUkFDSU5HX0tFWSkgPT09IHRydWU7XG59XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiogc2hhcmVkIGNvbnRleHQgZm9yIHN0b3JpbmcgYW4gZXh0cmFjdGVkIGIzIGRlYnVnIGZsYWcgKi9cbnZhciBCM19ERUJVR19GTEFHX0tFWSA9IGNyZWF0ZUNvbnRleHRLZXkoJ09wZW5UZWxlbWV0cnkgQ29udGV4dCBLZXkgQjMgRGVidWcgRmxhZycpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqIEIzIHNpbmdsZS1oZWFkZXIga2V5ICovXG52YXIgQjNfQ09OVEVYVF9IRUFERVIgPSAnYjMnO1xuLyogYjMgbXVsdGktaGVhZGVyIGtleXMgKi9cbnZhciBYX0IzX1RSQUNFX0lEID0gJ3gtYjMtdHJhY2VpZCc7XG52YXIgWF9CM19TUEFOX0lEID0gJ3gtYjMtc3BhbmlkJztcbnZhciBYX0IzX1NBTVBMRUQgPSAneC1iMy1zYW1wbGVkJztcbnZhciBYX0IzX1BBUkVOVF9TUEFOX0lEID0gJ3gtYjMtcGFyZW50c3BhbmlkJztcbnZhciBYX0IzX0ZMQUdTID0gJ3gtYjMtZmxhZ3MnO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIFZBTElEX1NBTVBMRURfVkFMVUVTID0gbmV3IFNldChbdHJ1ZSwgJ3RydWUnLCAnVHJ1ZScsICcxJywgMV0pO1xudmFyIFZBTElEX1VOU0FNUExFRF9WQUxVRVMgPSBuZXcgU2V0KFtmYWxzZSwgJ2ZhbHNlJywgJ0ZhbHNlJywgJzAnLCAwXSk7XG5mdW5jdGlvbiBpc1ZhbGlkU2FtcGxlZFZhbHVlKHNhbXBsZWQpIHtcbiAgICByZXR1cm4gc2FtcGxlZCA9PT0gVHJhY2VGbGFncy5TQU1QTEVEIHx8IHNhbXBsZWQgPT09IFRyYWNlRmxhZ3MuTk9ORTtcbn1cbmZ1bmN0aW9uIHBhcnNlSGVhZGVyKGhlYWRlcikge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGhlYWRlcikgPyBoZWFkZXJbMF0gOiBoZWFkZXI7XG59XG5mdW5jdGlvbiBnZXRIZWFkZXJWYWx1ZShjYXJyaWVyLCBnZXR0ZXIsIGtleSkge1xuICAgIHZhciBoZWFkZXIgPSBnZXR0ZXIuZ2V0KGNhcnJpZXIsIGtleSk7XG4gICAgcmV0dXJuIHBhcnNlSGVhZGVyKGhlYWRlcik7XG59XG5mdW5jdGlvbiBnZXRUcmFjZUlkKGNhcnJpZXIsIGdldHRlcikge1xuICAgIHZhciB0cmFjZUlkID0gZ2V0SGVhZGVyVmFsdWUoY2FycmllciwgZ2V0dGVyLCBYX0IzX1RSQUNFX0lEKTtcbiAgICBpZiAodHlwZW9mIHRyYWNlSWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB0cmFjZUlkLnBhZFN0YXJ0KDMyLCAnMCcpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG59XG5mdW5jdGlvbiBnZXRTcGFuSWQoY2FycmllciwgZ2V0dGVyKSB7XG4gICAgdmFyIHNwYW5JZCA9IGdldEhlYWRlclZhbHVlKGNhcnJpZXIsIGdldHRlciwgWF9CM19TUEFOX0lEKTtcbiAgICBpZiAodHlwZW9mIHNwYW5JZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHNwYW5JZDtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xufVxuZnVuY3Rpb24gZ2V0RGVidWcoY2FycmllciwgZ2V0dGVyKSB7XG4gICAgdmFyIGRlYnVnID0gZ2V0SGVhZGVyVmFsdWUoY2FycmllciwgZ2V0dGVyLCBYX0IzX0ZMQUdTKTtcbiAgICByZXR1cm4gZGVidWcgPT09ICcxJyA/ICcxJyA6IHVuZGVmaW5lZDtcbn1cbmZ1bmN0aW9uIGdldFRyYWNlRmxhZ3MoY2FycmllciwgZ2V0dGVyKSB7XG4gICAgdmFyIHRyYWNlRmxhZ3MgPSBnZXRIZWFkZXJWYWx1ZShjYXJyaWVyLCBnZXR0ZXIsIFhfQjNfU0FNUExFRCk7XG4gICAgdmFyIGRlYnVnID0gZ2V0RGVidWcoY2FycmllciwgZ2V0dGVyKTtcbiAgICBpZiAoZGVidWcgPT09ICcxJyB8fCBWQUxJRF9TQU1QTEVEX1ZBTFVFUy5oYXModHJhY2VGbGFncykpIHtcbiAgICAgICAgcmV0dXJuIFRyYWNlRmxhZ3MuU0FNUExFRDtcbiAgICB9XG4gICAgaWYgKHRyYWNlRmxhZ3MgPT09IHVuZGVmaW5lZCB8fCBWQUxJRF9VTlNBTVBMRURfVkFMVUVTLmhhcyh0cmFjZUZsYWdzKSkge1xuICAgICAgICByZXR1cm4gVHJhY2VGbGFncy5OT05FO1xuICAgIH1cbiAgICAvLyBUaGlzIGluZGljYXRlcyB0byBpc1ZhbGlkU2FtcGxlZFZhbHVlIHRoYXQgdGhpcyBpcyBub3QgdmFsaWRcbiAgICByZXR1cm47XG59XG4vKipcbiAqIFByb3BhZ2F0b3IgZm9yIHRoZSBCMyBtdWx0aXBsZS1oZWFkZXIgSFRUUCBmb3JtYXQuXG4gKiBCYXNlZCBvbjogaHR0cHM6Ly9naXRodWIuY29tL29wZW56aXBraW4vYjMtcHJvcGFnYXRpb25cbiAqL1xudmFyIEIzTXVsdGlQcm9wYWdhdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEIzTXVsdGlQcm9wYWdhdG9yKCkge1xuICAgIH1cbiAgICBCM011bHRpUHJvcGFnYXRvci5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24gKGNvbnRleHQsIGNhcnJpZXIsIHNldHRlcikge1xuICAgICAgICB2YXIgc3BhbkNvbnRleHQgPSB0cmFjZS5nZXRTcGFuQ29udGV4dChjb250ZXh0KTtcbiAgICAgICAgaWYgKCFzcGFuQ29udGV4dCB8fFxuICAgICAgICAgICAgIWlzU3BhbkNvbnRleHRWYWxpZChzcGFuQ29udGV4dCkgfHxcbiAgICAgICAgICAgIGlzVHJhY2luZ1N1cHByZXNzZWQoY29udGV4dCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHZhciBkZWJ1ZyA9IGNvbnRleHQuZ2V0VmFsdWUoQjNfREVCVUdfRkxBR19LRVkpO1xuICAgICAgICBzZXR0ZXIuc2V0KGNhcnJpZXIsIFhfQjNfVFJBQ0VfSUQsIHNwYW5Db250ZXh0LnRyYWNlSWQpO1xuICAgICAgICBzZXR0ZXIuc2V0KGNhcnJpZXIsIFhfQjNfU1BBTl9JRCwgc3BhbkNvbnRleHQuc3BhbklkKTtcbiAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBCMyBzcGVjLCBpZiB0aGUgZGVidWcgZmxhZyBpcyBzZXQsXG4gICAgICAgIC8vIHRoZSBzYW1wbGVkIGZsYWcgc2hvdWxkbid0IGJlIHByb3BhZ2F0ZWQgYXMgd2VsbC5cbiAgICAgICAgaWYgKGRlYnVnID09PSAnMScpIHtcbiAgICAgICAgICAgIHNldHRlci5zZXQoY2FycmllciwgWF9CM19GTEFHUywgZGVidWcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHNwYW5Db250ZXh0LnRyYWNlRmxhZ3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gV2Ugc2V0IHRoZSBoZWFkZXIgb25seSBpZiB0aGVyZSBpcyBhbiBleGlzdGluZyBzYW1wbGluZyBkZWNpc2lvbi5cbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSB3aWxsIG9taXQgaXQgPT4gQWJzZW50LlxuICAgICAgICAgICAgc2V0dGVyLnNldChjYXJyaWVyLCBYX0IzX1NBTVBMRUQsIChUcmFjZUZsYWdzLlNBTVBMRUQgJiBzcGFuQ29udGV4dC50cmFjZUZsYWdzKSA9PT0gVHJhY2VGbGFncy5TQU1QTEVEXG4gICAgICAgICAgICAgICAgPyAnMSdcbiAgICAgICAgICAgICAgICA6ICcwJyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEIzTXVsdGlQcm9wYWdhdG9yLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24gKGNvbnRleHQsIGNhcnJpZXIsIGdldHRlcikge1xuICAgICAgICB2YXIgdHJhY2VJZCA9IGdldFRyYWNlSWQoY2FycmllciwgZ2V0dGVyKTtcbiAgICAgICAgdmFyIHNwYW5JZCA9IGdldFNwYW5JZChjYXJyaWVyLCBnZXR0ZXIpO1xuICAgICAgICB2YXIgdHJhY2VGbGFncyA9IGdldFRyYWNlRmxhZ3MoY2FycmllciwgZ2V0dGVyKTtcbiAgICAgICAgdmFyIGRlYnVnID0gZ2V0RGVidWcoY2FycmllciwgZ2V0dGVyKTtcbiAgICAgICAgaWYgKGlzVmFsaWRUcmFjZUlkKHRyYWNlSWQpICYmXG4gICAgICAgICAgICBpc1ZhbGlkU3BhbklkKHNwYW5JZCkgJiZcbiAgICAgICAgICAgIGlzVmFsaWRTYW1wbGVkVmFsdWUodHJhY2VGbGFncykpIHtcbiAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LnNldFZhbHVlKEIzX0RFQlVHX0ZMQUdfS0VZLCBkZWJ1Zyk7XG4gICAgICAgICAgICByZXR1cm4gdHJhY2Uuc2V0U3BhbkNvbnRleHQoY29udGV4dCwge1xuICAgICAgICAgICAgICAgIHRyYWNlSWQ6IHRyYWNlSWQsXG4gICAgICAgICAgICAgICAgc3BhbklkOiBzcGFuSWQsXG4gICAgICAgICAgICAgICAgaXNSZW1vdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgdHJhY2VGbGFnczogdHJhY2VGbGFncyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgIH07XG4gICAgQjNNdWx0aVByb3BhZ2F0b3IucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFhfQjNfVFJBQ0VfSUQsXG4gICAgICAgICAgICBYX0IzX1NQQU5fSUQsXG4gICAgICAgICAgICBYX0IzX0ZMQUdTLFxuICAgICAgICAgICAgWF9CM19TQU1QTEVELFxuICAgICAgICAgICAgWF9CM19QQVJFTlRfU1BBTl9JRCxcbiAgICAgICAgXTtcbiAgICB9O1xuICAgIHJldHVybiBCM011bHRpUHJvcGFnYXRvcjtcbn0oKSk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19yZWFkID0gKHVuZGVmaW5lZCAmJiB1bmRlZmluZWQuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIEIzX0NPTlRFWFRfUkVHRVggPSAvKCg/OlswLTlhLWZdezE2fSl7MSwyfSktKFswLTlhLWZdezE2fSkoPzotKFswMWRdKD8hWzAtOWEtZl0pKSk/KD86LShbMC05YS1mXXsxNn0pKT8vO1xudmFyIFBBRERJTkcgPSAnMCcucmVwZWF0KDE2KTtcbnZhciBTQU1QTEVEX1ZBTFVFUyA9IG5ldyBTZXQoWydkJywgJzEnXSk7XG52YXIgREVCVUdfU1RBVEUgPSAnZCc7XG5mdW5jdGlvbiBjb252ZXJ0VG9UcmFjZUlkMTI4KHRyYWNlSWQpIHtcbiAgICByZXR1cm4gdHJhY2VJZC5sZW5ndGggPT09IDMyID8gdHJhY2VJZCA6IFwiXCIgKyBQQURESU5HICsgdHJhY2VJZDtcbn1cbmZ1bmN0aW9uIGNvbnZlcnRUb1RyYWNlRmxhZ3Moc2FtcGxpbmdTdGF0ZSkge1xuICAgIGlmIChzYW1wbGluZ1N0YXRlICYmIFNBTVBMRURfVkFMVUVTLmhhcyhzYW1wbGluZ1N0YXRlKSkge1xuICAgICAgICByZXR1cm4gVHJhY2VGbGFncy5TQU1QTEVEO1xuICAgIH1cbiAgICByZXR1cm4gVHJhY2VGbGFncy5OT05FO1xufVxuLyoqXG4gKiBQcm9wYWdhdG9yIGZvciB0aGUgQjMgc2luZ2xlLWhlYWRlciBIVFRQIGZvcm1hdC5cbiAqIEJhc2VkIG9uOiBodHRwczovL2dpdGh1Yi5jb20vb3BlbnppcGtpbi9iMy1wcm9wYWdhdGlvblxuICovXG52YXIgQjNTaW5nbGVQcm9wYWdhdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEIzU2luZ2xlUHJvcGFnYXRvcigpIHtcbiAgICB9XG4gICAgQjNTaW5nbGVQcm9wYWdhdG9yLnByb3RvdHlwZS5pbmplY3QgPSBmdW5jdGlvbiAoY29udGV4dCwgY2Fycmllciwgc2V0dGVyKSB7XG4gICAgICAgIHZhciBzcGFuQ29udGV4dCA9IHRyYWNlLmdldFNwYW5Db250ZXh0KGNvbnRleHQpO1xuICAgICAgICBpZiAoIXNwYW5Db250ZXh0IHx8XG4gICAgICAgICAgICAhaXNTcGFuQ29udGV4dFZhbGlkKHNwYW5Db250ZXh0KSB8fFxuICAgICAgICAgICAgaXNUcmFjaW5nU3VwcHJlc3NlZChjb250ZXh0KSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdmFyIHNhbXBsaW5nU3RhdGUgPSBjb250ZXh0LmdldFZhbHVlKEIzX0RFQlVHX0ZMQUdfS0VZKSB8fCBzcGFuQ29udGV4dC50cmFjZUZsYWdzICYgMHgxO1xuICAgICAgICB2YXIgdmFsdWUgPSBzcGFuQ29udGV4dC50cmFjZUlkICsgXCItXCIgKyBzcGFuQ29udGV4dC5zcGFuSWQgKyBcIi1cIiArIHNhbXBsaW5nU3RhdGU7XG4gICAgICAgIHNldHRlci5zZXQoY2FycmllciwgQjNfQ09OVEVYVF9IRUFERVIsIHZhbHVlKTtcbiAgICB9O1xuICAgIEIzU2luZ2xlUHJvcGFnYXRvci5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBnZXR0ZXIpIHtcbiAgICAgICAgdmFyIGhlYWRlciA9IGdldHRlci5nZXQoY2FycmllciwgQjNfQ09OVEVYVF9IRUFERVIpO1xuICAgICAgICB2YXIgYjNDb250ZXh0ID0gQXJyYXkuaXNBcnJheShoZWFkZXIpID8gaGVhZGVyWzBdIDogaGVhZGVyO1xuICAgICAgICBpZiAodHlwZW9mIGIzQ29udGV4dCAhPT0gJ3N0cmluZycpXG4gICAgICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICAgICAgdmFyIG1hdGNoID0gYjNDb250ZXh0Lm1hdGNoKEIzX0NPTlRFWFRfUkVHRVgpO1xuICAgICAgICBpZiAoIW1hdGNoKVxuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgICAgIHZhciBfYSA9IF9fcmVhZChtYXRjaCwgNCksIGV4dHJhY3RlZFRyYWNlSWQgPSBfYVsxXSwgc3BhbklkID0gX2FbMl0sIHNhbXBsaW5nU3RhdGUgPSBfYVszXTtcbiAgICAgICAgdmFyIHRyYWNlSWQgPSBjb252ZXJ0VG9UcmFjZUlkMTI4KGV4dHJhY3RlZFRyYWNlSWQpO1xuICAgICAgICBpZiAoIWlzVmFsaWRUcmFjZUlkKHRyYWNlSWQpIHx8ICFpc1ZhbGlkU3BhbklkKHNwYW5JZCkpXG4gICAgICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICAgICAgdmFyIHRyYWNlRmxhZ3MgPSBjb252ZXJ0VG9UcmFjZUZsYWdzKHNhbXBsaW5nU3RhdGUpO1xuICAgICAgICBpZiAoc2FtcGxpbmdTdGF0ZSA9PT0gREVCVUdfU1RBVEUpIHtcbiAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LnNldFZhbHVlKEIzX0RFQlVHX0ZMQUdfS0VZLCBzYW1wbGluZ1N0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJhY2Uuc2V0U3BhbkNvbnRleHQoY29udGV4dCwge1xuICAgICAgICAgICAgdHJhY2VJZDogdHJhY2VJZCxcbiAgICAgICAgICAgIHNwYW5JZDogc3BhbklkLFxuICAgICAgICAgICAgaXNSZW1vdGU6IHRydWUsXG4gICAgICAgICAgICB0cmFjZUZsYWdzOiB0cmFjZUZsYWdzLFxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIEIzU2luZ2xlUHJvcGFnYXRvci5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gW0IzX0NPTlRFWFRfSEVBREVSXTtcbiAgICB9O1xuICAgIHJldHVybiBCM1NpbmdsZVByb3BhZ2F0b3I7XG59KCkpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqIEVudW1lcmF0aW9uIG9mIEIzIGluamVjdCBlbmNvZGluZ3MgKi9cbnZhciBCM0luamVjdEVuY29kaW5nO1xuKGZ1bmN0aW9uIChCM0luamVjdEVuY29kaW5nKSB7XG4gICAgQjNJbmplY3RFbmNvZGluZ1tCM0luamVjdEVuY29kaW5nW1wiU0lOR0xFX0hFQURFUlwiXSA9IDBdID0gXCJTSU5HTEVfSEVBREVSXCI7XG4gICAgQjNJbmplY3RFbmNvZGluZ1tCM0luamVjdEVuY29kaW5nW1wiTVVMVElfSEVBREVSXCJdID0gMV0gPSBcIk1VTFRJX0hFQURFUlwiO1xufSkoQjNJbmplY3RFbmNvZGluZyB8fCAoQjNJbmplY3RFbmNvZGluZyA9IHt9KSk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIFByb3BhZ2F0b3IgdGhhdCBleHRyYWN0cyBCMyBjb250ZXh0IGluIGJvdGggc2luZ2xlIGFuZCBtdWx0aS1oZWFkZXIgdmFyaWFudHMsXG4gKiB3aXRoIGNvbmZpZ3VyYWJsZSBpbmplY3Rpb24gZm9ybWF0IGRlZmF1bHRpbmcgdG8gQjMgc2luZ2xlLWhlYWRlci4gRHVlIHRvXG4gKiB0aGUgYXN5bW1ldHJ5IGluIGluamVjdGlvbiBhbmQgZXh0cmFjdGlvbiBmb3JtYXRzIHRoaXMgaXMgbm90IHN1aXRhYmxlIHRvXG4gKiBiZSBpbXBsZW1lbnRlZCBhcyBhIGNvbXBvc2l0ZSBwcm9wYWdhdG9yLlxuICogQmFzZWQgb246IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuemlwa2luL2IzLXByb3BhZ2F0aW9uXG4gKi9cbnZhciBCM1Byb3BhZ2F0b3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQjNQcm9wYWdhdG9yKGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnID09PSB2b2lkIDApIHsgY29uZmlnID0ge307IH1cbiAgICAgICAgdGhpcy5fYjNNdWx0aVByb3BhZ2F0b3IgPSBuZXcgQjNNdWx0aVByb3BhZ2F0b3IoKTtcbiAgICAgICAgdGhpcy5fYjNTaW5nbGVQcm9wYWdhdG9yID0gbmV3IEIzU2luZ2xlUHJvcGFnYXRvcigpO1xuICAgICAgICBpZiAoY29uZmlnLmluamVjdEVuY29kaW5nID09PSBCM0luamVjdEVuY29kaW5nLk1VTFRJX0hFQURFUikge1xuICAgICAgICAgICAgdGhpcy5faW5qZWN0ID0gdGhpcy5fYjNNdWx0aVByb3BhZ2F0b3IuaW5qZWN0O1xuICAgICAgICAgICAgdGhpcy5fZmllbGRzID0gdGhpcy5fYjNNdWx0aVByb3BhZ2F0b3IuZmllbGRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pbmplY3QgPSB0aGlzLl9iM1NpbmdsZVByb3BhZ2F0b3IuaW5qZWN0O1xuICAgICAgICAgICAgdGhpcy5fZmllbGRzID0gdGhpcy5fYjNTaW5nbGVQcm9wYWdhdG9yLmZpZWxkcygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIEIzUHJvcGFnYXRvci5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24gKGNvbnRleHQsIGNhcnJpZXIsIHNldHRlcikge1xuICAgICAgICBpZiAoaXNUcmFjaW5nU3VwcHJlc3NlZChjb250ZXh0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2luamVjdChjb250ZXh0LCBjYXJyaWVyLCBzZXR0ZXIpO1xuICAgIH07XG4gICAgQjNQcm9wYWdhdG9yLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24gKGNvbnRleHQsIGNhcnJpZXIsIGdldHRlcikge1xuICAgICAgICB2YXIgaGVhZGVyID0gZ2V0dGVyLmdldChjYXJyaWVyLCBCM19DT05URVhUX0hFQURFUik7XG4gICAgICAgIHZhciBiM0NvbnRleHQgPSBBcnJheS5pc0FycmF5KGhlYWRlcikgPyBoZWFkZXJbMF0gOiBoZWFkZXI7XG4gICAgICAgIGlmIChiM0NvbnRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9iM1NpbmdsZVByb3BhZ2F0b3IuZXh0cmFjdChjb250ZXh0LCBjYXJyaWVyLCBnZXR0ZXIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2IzTXVsdGlQcm9wYWdhdG9yLmV4dHJhY3QoY29udGV4dCwgY2FycmllciwgZ2V0dGVyKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQjNQcm9wYWdhdG9yLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZHM7XG4gICAgfTtcbiAgICByZXR1cm4gQjNQcm9wYWdhdG9yO1xufSgpKTtcblxuZXhwb3J0IHsgQjNJbmplY3RFbmNvZGluZywgQjNQcm9wYWdhdG9yLCBCM19DT05URVhUX0hFQURFUiwgWF9CM19GTEFHUywgWF9CM19QQVJFTlRfU1BBTl9JRCwgWF9CM19TQU1QTEVELCBYX0IzX1NQQU5fSUQsIFhfQjNfVFJBQ0VfSUQgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLEdBQWtCLEtBQUtDLEdBQU8sS0FBS0MsR0FBb0IsS0FBS0MsR0FBWSxLQUFLQyxHQUFnQixLQUFLQyxTQUFxQjtBQWlCckksSUFBSUMsSUFBdUJOLEVBQWlCLGdEQUFnRDtBQUM1RixTQUFTTyxFQUFvQkMsR0FBUztBQUNsQyxTQUFPQSxFQUFRLFNBQVNGLENBQW9CLE1BQU07QUFDdEQ7QUFrQkEsSUFBSUcsSUFBb0JULEVBQWlCLHlDQUF5QyxHQWtCOUVVLElBQW9CLE1BRXBCQyxJQUFnQixnQkFDaEJDLElBQWUsZUFDZkMsSUFBZSxnQkFDZkMsSUFBc0IscUJBQ3RCQyxJQUFhLGNBaUJiQyxJQUF1QixvQkFBSSxJQUFJLENBQUMsSUFBTSxRQUFRLFFBQVEsS0FBSyxDQUFDLENBQUMsR0FDN0RDLElBQXlCLG9CQUFJLElBQUksQ0FBQyxJQUFPLFNBQVMsU0FBUyxLQUFLLENBQUMsQ0FBQztBQUN0RSxTQUFTQyxFQUFvQkMsR0FBUztBQUNsQyxTQUFPQSxNQUFZaEIsRUFBVyxXQUFXZ0IsTUFBWWhCLEVBQVc7QUFDcEU7QUFDQSxTQUFTaUIsRUFBWUMsR0FBUTtBQUN6QixTQUFPLE1BQU0sUUFBUUEsQ0FBTSxJQUFJQSxFQUFPLENBQUMsSUFBSUE7QUFDL0M7QUFDQSxTQUFTQyxFQUFlQyxHQUFTQyxHQUFRQyxHQUFLO0FBQzFDLE1BQUlKLElBQVNHLEVBQU8sSUFBSUQsR0FBU0UsQ0FBRztBQUNwQyxTQUFPTCxFQUFZQyxDQUFNO0FBQzdCO0FBQ0EsU0FBU0ssRUFBV0gsR0FBU0MsR0FBUTtBQUNqQyxNQUFJRyxJQUFVTCxFQUFlQyxHQUFTQyxHQUFRYixDQUFhO0FBQzNELFNBQUksT0FBT2dCLEtBQVksV0FDWkEsRUFBUSxTQUFTLElBQUksR0FBRyxJQUU1QjtBQUNYO0FBQ0EsU0FBU0MsRUFBVUwsR0FBU0MsR0FBUTtBQUNoQyxNQUFJSyxJQUFTUCxFQUFlQyxHQUFTQyxHQUFRWixDQUFZO0FBQ3pELFNBQUksT0FBT2lCLEtBQVcsV0FDWEEsSUFFSjtBQUNYO0FBQ0EsU0FBU0MsRUFBU1AsR0FBU0MsR0FBUTtBQUMvQixNQUFJTyxJQUFRVCxFQUFlQyxHQUFTQyxHQUFRVCxDQUFVO0FBQ3RELFNBQU9nQixNQUFVLE1BQU0sTUFBTTtBQUNqQztBQUNBLFNBQVNDLEVBQWNULEdBQVNDLEdBQVE7QUFDcEMsTUFBSVMsSUFBYVgsRUFBZUMsR0FBU0MsR0FBUVgsQ0FBWSxHQUN6RGtCLElBQVFELEVBQVNQLEdBQVNDLENBQU07QUFDcEMsTUFBSU8sTUFBVSxPQUFPZixFQUFxQixJQUFJaUIsQ0FBVTtBQUNwRCxXQUFPOUIsRUFBVztBQUV0QixNQUFJOEIsTUFBZSxVQUFhaEIsRUFBdUIsSUFBSWdCLENBQVU7QUFDakUsV0FBTzlCLEVBQVc7QUFJMUI7QUFLQSxJQUFJK0I7QUFBQTtBQUFBLEVBQW1DLFdBQVk7QUFDL0MsYUFBU0EsSUFBb0I7QUFBQSxJQUM3QjtBQUNBLFdBQUFBLEVBQWtCLFVBQVUsU0FBUyxTQUFVMUIsR0FBU2UsR0FBU1ksR0FBUTtBQUNyRSxVQUFJQyxJQUFjbkMsRUFBTSxlQUFlTyxDQUFPO0FBQzlDLFVBQUksR0FBQzRCLEtBQ0QsQ0FBQ2xDLEVBQW1Ca0MsQ0FBVyxLQUMvQjdCLEVBQW9CQyxDQUFPLElBRS9CO0FBQUEsWUFBSXVCLElBQVF2QixFQUFRLFNBQVNDLENBQWlCO0FBQzlDLFFBQUEwQixFQUFPLElBQUlaLEdBQVNaLEdBQWV5QixFQUFZLE9BQU8sR0FDdERELEVBQU8sSUFBSVosR0FBU1gsR0FBY3dCLEVBQVksTUFBTSxHQUdoREwsTUFBVSxNQUNWSSxFQUFPLElBQUlaLEdBQVNSLEdBQVlnQixDQUFLLElBRWhDSyxFQUFZLGVBQWUsVUFHaENELEVBQU8sSUFBSVosR0FBU1YsSUFBZVYsRUFBVyxVQUFVaUMsRUFBWSxnQkFBZ0JqQyxFQUFXLFVBQ3pGLE1BQ0EsR0FBRztBQUFBO0FBQUEsSUFFakIsR0FDQStCLEVBQWtCLFVBQVUsVUFBVSxTQUFVMUIsR0FBU2UsR0FBU0MsR0FBUTtBQUN0RSxVQUFJRyxJQUFVRCxFQUFXSCxHQUFTQyxDQUFNLEdBQ3BDSyxJQUFTRCxFQUFVTCxHQUFTQyxDQUFNLEdBQ2xDUyxJQUFhRCxFQUFjVCxHQUFTQyxDQUFNLEdBQzFDTyxJQUFRRCxFQUFTUCxHQUFTQyxDQUFNO0FBQ3BDLGFBQUlwQixFQUFldUIsQ0FBTyxLQUN0QnRCLEVBQWN3QixDQUFNLEtBQ3BCWCxFQUFvQmUsQ0FBVSxLQUM5QnpCLElBQVVBLEVBQVEsU0FBU0MsR0FBbUJzQixDQUFLLEdBQzVDOUIsRUFBTSxlQUFlTyxHQUFTO0FBQUEsUUFDakMsU0FBU21CO0FBQUEsUUFDVCxRQUFRRTtBQUFBLFFBQ1IsVUFBVTtBQUFBLFFBQ1YsWUFBWUk7QUFBQSxNQUNoQixDQUFDLEtBRUV6QjtBQUFBLElBQ1gsR0FDQTBCLEVBQWtCLFVBQVUsU0FBUyxXQUFZO0FBQzdDLGFBQU87QUFBQSxRQUNIdkI7QUFBQSxRQUNBQztBQUFBLFFBQ0FHO0FBQUEsUUFDQUY7QUFBQSxRQUNBQztBQUFBLE1BQ0o7QUFBQSxJQUNKLEdBQ09vQjtBQUFBLEVBQ1gsRUFBRTtBQUFBLEdBaUJFRyxJQUE0QyxTQUFVQyxHQUFHQyxHQUFHO0FBQzVELE1BQUlDLElBQUksT0FBTyxVQUFXLGNBQWNGLEVBQUUsT0FBTyxRQUFRO0FBQ3pELE1BQUksQ0FBQ0UsRUFBRyxRQUFPRjtBQUNmLE1BQUlHLElBQUlELEVBQUUsS0FBS0YsQ0FBQyxHQUFHSSxHQUFHQyxJQUFLLENBQUMsR0FBR0M7QUFDL0IsTUFBSTtBQUNBLFlBQVFMLE1BQU0sVUFBVUEsTUFBTSxNQUFNLEVBQUVHLElBQUlELEVBQUUsS0FBSyxHQUFHLE9BQU0sQ0FBQUUsRUFBRyxLQUFLRCxFQUFFLEtBQUs7QUFBQSxFQUM3RSxTQUNPRyxHQUFPO0FBQUUsSUFBQUQsSUFBSSxFQUFFLE9BQU9DLEVBQU07QUFBQSxFQUFHLFVBQ3RDO0FBQ0ksUUFBSTtBQUNBLE1BQUlILEtBQUssQ0FBQ0EsRUFBRSxTQUFTRixJQUFJQyxFQUFFLFdBQVlELEVBQUUsS0FBS0MsQ0FBQztBQUFBLElBQ25ELFVBQ0E7QUFBVSxVQUFJRyxFQUFHLE9BQU1BLEVBQUU7QUFBQSxJQUFPO0FBQUEsRUFDcEM7QUFDQSxTQUFPRDtBQUNYLEdBQ0lHLElBQW1CLHVGQUNuQkMsSUFBVSxJQUFJLE9BQU8sRUFBRSxHQUN2QkMsSUFBaUIsb0JBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQ25DQyxJQUFjO0FBQ2xCLFNBQVNDLEVBQW9CdkIsR0FBUztBQUNsQyxTQUFPQSxFQUFRLFdBQVcsS0FBS0EsSUFBVSxLQUFLb0IsSUFBVXBCO0FBQzVEO0FBQ0EsU0FBU3dCLEVBQW9CQyxHQUFlO0FBQ3hDLFNBQUlBLEtBQWlCSixFQUFlLElBQUlJLENBQWEsSUFDMUNqRCxFQUFXLFVBRWZBLEVBQVc7QUFDdEI7QUFLQSxJQUFJa0Q7QUFBQTtBQUFBLEVBQW9DLFdBQVk7QUFDaEQsYUFBU0EsSUFBcUI7QUFBQSxJQUM5QjtBQUNBLFdBQUFBLEVBQW1CLFVBQVUsU0FBUyxTQUFVN0MsR0FBU2UsR0FBU1ksR0FBUTtBQUN0RSxVQUFJQyxJQUFjbkMsRUFBTSxlQUFlTyxDQUFPO0FBQzlDLFVBQUksR0FBQzRCLEtBQ0QsQ0FBQ2xDLEVBQW1Ca0MsQ0FBVyxLQUMvQjdCLEVBQW9CQyxDQUFPLElBRS9CO0FBQUEsWUFBSTRDLElBQWdCNUMsRUFBUSxTQUFTQyxDQUFpQixLQUFLMkIsRUFBWSxhQUFhLEdBQ2hGa0IsSUFBUWxCLEVBQVksVUFBVSxNQUFNQSxFQUFZLFNBQVMsTUFBTWdCO0FBQ25FLFFBQUFqQixFQUFPLElBQUlaLEdBQVNiLEdBQW1CNEMsQ0FBSztBQUFBO0FBQUEsSUFDaEQsR0FDQUQsRUFBbUIsVUFBVSxVQUFVLFNBQVU3QyxHQUFTZSxHQUFTQyxHQUFRO0FBQ3ZFLFVBQUlILElBQVNHLEVBQU8sSUFBSUQsR0FBU2IsQ0FBaUIsR0FDOUM2QyxJQUFZLE1BQU0sUUFBUWxDLENBQU0sSUFBSUEsRUFBTyxDQUFDLElBQUlBO0FBQ3BELFVBQUksT0FBT2tDLEtBQWM7QUFDckIsZUFBTy9DO0FBQ1gsVUFBSWdELElBQVFELEVBQVUsTUFBTVQsQ0FBZ0I7QUFDNUMsVUFBSSxDQUFDVTtBQUNELGVBQU9oRDtBQUNYLFVBQUlpRCxJQUFLcEIsRUFBT21CLEdBQU8sQ0FBQyxHQUFHRSxJQUFtQkQsRUFBRyxDQUFDLEdBQUc1QixJQUFTNEIsRUFBRyxDQUFDLEdBQUdMLElBQWdCSyxFQUFHLENBQUMsR0FDckY5QixJQUFVdUIsRUFBb0JRLENBQWdCO0FBQ2xELFVBQUksQ0FBQ3RELEVBQWV1QixDQUFPLEtBQUssQ0FBQ3RCLEVBQWN3QixDQUFNO0FBQ2pELGVBQU9yQjtBQUNYLFVBQUl5QixJQUFha0IsRUFBb0JDLENBQWE7QUFDbEQsYUFBSUEsTUFBa0JILE1BQ2xCekMsSUFBVUEsRUFBUSxTQUFTQyxHQUFtQjJDLENBQWEsSUFFeERuRCxFQUFNLGVBQWVPLEdBQVM7QUFBQSxRQUNqQyxTQUFTbUI7QUFBQSxRQUNULFFBQVFFO0FBQUEsUUFDUixVQUFVO0FBQUEsUUFDVixZQUFZSTtBQUFBLE1BQ2hCLENBQUM7QUFBQSxJQUNMLEdBQ0FvQixFQUFtQixVQUFVLFNBQVMsV0FBWTtBQUM5QyxhQUFPLENBQUMzQyxDQUFpQjtBQUFBLElBQzdCLEdBQ08yQztBQUFBLEVBQ1gsRUFBRTtBQUFBLEdBa0JFTTtBQUFBLENBQ0gsU0FBVUEsR0FBa0I7QUFDekIsRUFBQUEsRUFBaUJBLEVBQWlCLGdCQUFtQixDQUFDLElBQUksaUJBQzFEQSxFQUFpQkEsRUFBaUIsZUFBa0IsQ0FBQyxJQUFJO0FBQzdELEdBQUdBLE1BQXFCQSxJQUFtQixDQUFDLEVBQUU7QUF3QjlDLElBQUlDO0FBQUE7QUFBQSxFQUE4QixXQUFZO0FBQzFDLGFBQVNBLEVBQWFDLEdBQVE7QUFDMUIsTUFBSUEsTUFBVyxXQUFVQSxJQUFTLENBQUMsSUFDbkMsS0FBSyxxQkFBcUIsSUFBSTNCLEVBQWtCLEdBQ2hELEtBQUssc0JBQXNCLElBQUltQixFQUFtQixHQUM5Q1EsRUFBTyxtQkFBbUJGLEVBQWlCLGdCQUMzQyxLQUFLLFVBQVUsS0FBSyxtQkFBbUIsUUFDdkMsS0FBSyxVQUFVLEtBQUssbUJBQW1CLE9BQU8sTUFHOUMsS0FBSyxVQUFVLEtBQUssb0JBQW9CLFFBQ3hDLEtBQUssVUFBVSxLQUFLLG9CQUFvQixPQUFPO0FBQUEsSUFFdkQ7QUFDQSxXQUFBQyxFQUFhLFVBQVUsU0FBUyxTQUFVcEQsR0FBU2UsR0FBU1ksR0FBUTtBQUNoRSxNQUFJNUIsRUFBb0JDLENBQU8sS0FHL0IsS0FBSyxRQUFRQSxHQUFTZSxHQUFTWSxDQUFNO0FBQUEsSUFDekMsR0FDQXlCLEVBQWEsVUFBVSxVQUFVLFNBQVVwRCxHQUFTZSxHQUFTQyxHQUFRO0FBQ2pFLFVBQUlILElBQVNHLEVBQU8sSUFBSUQsR0FBU2IsQ0FBaUIsR0FDOUM2QyxJQUFZLE1BQU0sUUFBUWxDLENBQU0sSUFBSUEsRUFBTyxDQUFDLElBQUlBO0FBQ3BELGFBQUlrQyxJQUNPLEtBQUssb0JBQW9CLFFBQVEvQyxHQUFTZSxHQUFTQyxDQUFNLElBR3pELEtBQUssbUJBQW1CLFFBQVFoQixHQUFTZSxHQUFTQyxDQUFNO0FBQUEsSUFFdkUsR0FDQW9DLEVBQWEsVUFBVSxTQUFTLFdBQVk7QUFDeEMsYUFBTyxLQUFLO0FBQUEsSUFDaEIsR0FDT0E7QUFBQSxFQUNYLEVBQUU7QUFBQTsiLAogICJuYW1lcyI6IFsiY3JlYXRlQ29udGV4dEtleSIsICJ0cmFjZSIsICJpc1NwYW5Db250ZXh0VmFsaWQiLCAiVHJhY2VGbGFncyIsICJpc1ZhbGlkVHJhY2VJZCIsICJpc1ZhbGlkU3BhbklkIiwgIlNVUFBSRVNTX1RSQUNJTkdfS0VZIiwgImlzVHJhY2luZ1N1cHByZXNzZWQiLCAiY29udGV4dCIsICJCM19ERUJVR19GTEFHX0tFWSIsICJCM19DT05URVhUX0hFQURFUiIsICJYX0IzX1RSQUNFX0lEIiwgIlhfQjNfU1BBTl9JRCIsICJYX0IzX1NBTVBMRUQiLCAiWF9CM19QQVJFTlRfU1BBTl9JRCIsICJYX0IzX0ZMQUdTIiwgIlZBTElEX1NBTVBMRURfVkFMVUVTIiwgIlZBTElEX1VOU0FNUExFRF9WQUxVRVMiLCAiaXNWYWxpZFNhbXBsZWRWYWx1ZSIsICJzYW1wbGVkIiwgInBhcnNlSGVhZGVyIiwgImhlYWRlciIsICJnZXRIZWFkZXJWYWx1ZSIsICJjYXJyaWVyIiwgImdldHRlciIsICJrZXkiLCAiZ2V0VHJhY2VJZCIsICJ0cmFjZUlkIiwgImdldFNwYW5JZCIsICJzcGFuSWQiLCAiZ2V0RGVidWciLCAiZGVidWciLCAiZ2V0VHJhY2VGbGFncyIsICJ0cmFjZUZsYWdzIiwgIkIzTXVsdGlQcm9wYWdhdG9yIiwgInNldHRlciIsICJzcGFuQ29udGV4dCIsICJfX3JlYWQiLCAibyIsICJuIiwgIm0iLCAiaSIsICJyIiwgImFyIiwgImUiLCAiZXJyb3IiLCAiQjNfQ09OVEVYVF9SRUdFWCIsICJQQURESU5HIiwgIlNBTVBMRURfVkFMVUVTIiwgIkRFQlVHX1NUQVRFIiwgImNvbnZlcnRUb1RyYWNlSWQxMjgiLCAiY29udmVydFRvVHJhY2VGbGFncyIsICJzYW1wbGluZ1N0YXRlIiwgIkIzU2luZ2xlUHJvcGFnYXRvciIsICJ2YWx1ZSIsICJiM0NvbnRleHQiLCAibWF0Y2giLCAiX2EiLCAiZXh0cmFjdGVkVHJhY2VJZCIsICJCM0luamVjdEVuY29kaW5nIiwgIkIzUHJvcGFnYXRvciIsICJjb25maWciXQp9Cg==
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtIX57MDBqfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGIgYXMgY3JlYXRlQ29udGV4dEtleSwgdCBhcyB0cmFjZSwgaSBhcyBpc1NwYW5Db250ZXh0VmFsaWQsIFQgYXMgVHJhY2VGbGFncywgZCBhcyBpc1ZhbGlkVHJhY2VJZCwgZSBhcyBpc1ZhbGlkU3BhbklkIH0gZnJvbSAnLi9pbmRleC0hfnswMDZ9fi5qcyc7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgU1VQUFJFU1NfVFJBQ0lOR19LRVkgPSBjcmVhdGVDb250ZXh0S2V5KCdPcGVuVGVsZW1ldHJ5IFNESyBDb250ZXh0IEtleSBTVVBQUkVTU19UUkFDSU5HJyk7XG5mdW5jdGlvbiBpc1RyYWNpbmdTdXBwcmVzc2VkKGNvbnRleHQpIHtcbiAgICByZXR1cm4gY29udGV4dC5nZXRWYWx1ZShTVVBQUkVTU19UUkFDSU5HX0tFWSkgPT09IHRydWU7XG59XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiogc2hhcmVkIGNvbnRleHQgZm9yIHN0b3JpbmcgYW4gZXh0cmFjdGVkIGIzIGRlYnVnIGZsYWcgKi9cbnZhciBCM19ERUJVR19GTEFHX0tFWSA9IGNyZWF0ZUNvbnRleHRLZXkoJ09wZW5UZWxlbWV0cnkgQ29udGV4dCBLZXkgQjMgRGVidWcgRmxhZycpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqIEIzIHNpbmdsZS1oZWFkZXIga2V5ICovXG52YXIgQjNfQ09OVEVYVF9IRUFERVIgPSAnYjMnO1xuLyogYjMgbXVsdGktaGVhZGVyIGtleXMgKi9cbnZhciBYX0IzX1RSQUNFX0lEID0gJ3gtYjMtdHJhY2VpZCc7XG52YXIgWF9CM19TUEFOX0lEID0gJ3gtYjMtc3BhbmlkJztcbnZhciBYX0IzX1NBTVBMRUQgPSAneC1iMy1zYW1wbGVkJztcbnZhciBYX0IzX1BBUkVOVF9TUEFOX0lEID0gJ3gtYjMtcGFyZW50c3BhbmlkJztcbnZhciBYX0IzX0ZMQUdTID0gJ3gtYjMtZmxhZ3MnO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIFZBTElEX1NBTVBMRURfVkFMVUVTID0gbmV3IFNldChbdHJ1ZSwgJ3RydWUnLCAnVHJ1ZScsICcxJywgMV0pO1xudmFyIFZBTElEX1VOU0FNUExFRF9WQUxVRVMgPSBuZXcgU2V0KFtmYWxzZSwgJ2ZhbHNlJywgJ0ZhbHNlJywgJzAnLCAwXSk7XG5mdW5jdGlvbiBpc1ZhbGlkU2FtcGxlZFZhbHVlKHNhbXBsZWQpIHtcbiAgICByZXR1cm4gc2FtcGxlZCA9PT0gVHJhY2VGbGFncy5TQU1QTEVEIHx8IHNhbXBsZWQgPT09IFRyYWNlRmxhZ3MuTk9ORTtcbn1cbmZ1bmN0aW9uIHBhcnNlSGVhZGVyKGhlYWRlcikge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGhlYWRlcikgPyBoZWFkZXJbMF0gOiBoZWFkZXI7XG59XG5mdW5jdGlvbiBnZXRIZWFkZXJWYWx1ZShjYXJyaWVyLCBnZXR0ZXIsIGtleSkge1xuICAgIHZhciBoZWFkZXIgPSBnZXR0ZXIuZ2V0KGNhcnJpZXIsIGtleSk7XG4gICAgcmV0dXJuIHBhcnNlSGVhZGVyKGhlYWRlcik7XG59XG5mdW5jdGlvbiBnZXRUcmFjZUlkKGNhcnJpZXIsIGdldHRlcikge1xuICAgIHZhciB0cmFjZUlkID0gZ2V0SGVhZGVyVmFsdWUoY2FycmllciwgZ2V0dGVyLCBYX0IzX1RSQUNFX0lEKTtcbiAgICBpZiAodHlwZW9mIHRyYWNlSWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB0cmFjZUlkLnBhZFN0YXJ0KDMyLCAnMCcpO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG59XG5mdW5jdGlvbiBnZXRTcGFuSWQoY2FycmllciwgZ2V0dGVyKSB7XG4gICAgdmFyIHNwYW5JZCA9IGdldEhlYWRlclZhbHVlKGNhcnJpZXIsIGdldHRlciwgWF9CM19TUEFOX0lEKTtcbiAgICBpZiAodHlwZW9mIHNwYW5JZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHNwYW5JZDtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xufVxuZnVuY3Rpb24gZ2V0RGVidWcoY2FycmllciwgZ2V0dGVyKSB7XG4gICAgdmFyIGRlYnVnID0gZ2V0SGVhZGVyVmFsdWUoY2FycmllciwgZ2V0dGVyLCBYX0IzX0ZMQUdTKTtcbiAgICByZXR1cm4gZGVidWcgPT09ICcxJyA/ICcxJyA6IHVuZGVmaW5lZDtcbn1cbmZ1bmN0aW9uIGdldFRyYWNlRmxhZ3MoY2FycmllciwgZ2V0dGVyKSB7XG4gICAgdmFyIHRyYWNlRmxhZ3MgPSBnZXRIZWFkZXJWYWx1ZShjYXJyaWVyLCBnZXR0ZXIsIFhfQjNfU0FNUExFRCk7XG4gICAgdmFyIGRlYnVnID0gZ2V0RGVidWcoY2FycmllciwgZ2V0dGVyKTtcbiAgICBpZiAoZGVidWcgPT09ICcxJyB8fCBWQUxJRF9TQU1QTEVEX1ZBTFVFUy5oYXModHJhY2VGbGFncykpIHtcbiAgICAgICAgcmV0dXJuIFRyYWNlRmxhZ3MuU0FNUExFRDtcbiAgICB9XG4gICAgaWYgKHRyYWNlRmxhZ3MgPT09IHVuZGVmaW5lZCB8fCBWQUxJRF9VTlNBTVBMRURfVkFMVUVTLmhhcyh0cmFjZUZsYWdzKSkge1xuICAgICAgICByZXR1cm4gVHJhY2VGbGFncy5OT05FO1xuICAgIH1cbiAgICAvLyBUaGlzIGluZGljYXRlcyB0byBpc1ZhbGlkU2FtcGxlZFZhbHVlIHRoYXQgdGhpcyBpcyBub3QgdmFsaWRcbiAgICByZXR1cm47XG59XG4vKipcbiAqIFByb3BhZ2F0b3IgZm9yIHRoZSBCMyBtdWx0aXBsZS1oZWFkZXIgSFRUUCBmb3JtYXQuXG4gKiBCYXNlZCBvbjogaHR0cHM6Ly9naXRodWIuY29tL29wZW56aXBraW4vYjMtcHJvcGFnYXRpb25cbiAqL1xudmFyIEIzTXVsdGlQcm9wYWdhdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEIzTXVsdGlQcm9wYWdhdG9yKCkge1xuICAgIH1cbiAgICBCM011bHRpUHJvcGFnYXRvci5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24gKGNvbnRleHQsIGNhcnJpZXIsIHNldHRlcikge1xuICAgICAgICB2YXIgc3BhbkNvbnRleHQgPSB0cmFjZS5nZXRTcGFuQ29udGV4dChjb250ZXh0KTtcbiAgICAgICAgaWYgKCFzcGFuQ29udGV4dCB8fFxuICAgICAgICAgICAgIWlzU3BhbkNvbnRleHRWYWxpZChzcGFuQ29udGV4dCkgfHxcbiAgICAgICAgICAgIGlzVHJhY2luZ1N1cHByZXNzZWQoY29udGV4dCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHZhciBkZWJ1ZyA9IGNvbnRleHQuZ2V0VmFsdWUoQjNfREVCVUdfRkxBR19LRVkpO1xuICAgICAgICBzZXR0ZXIuc2V0KGNhcnJpZXIsIFhfQjNfVFJBQ0VfSUQsIHNwYW5Db250ZXh0LnRyYWNlSWQpO1xuICAgICAgICBzZXR0ZXIuc2V0KGNhcnJpZXIsIFhfQjNfU1BBTl9JRCwgc3BhbkNvbnRleHQuc3BhbklkKTtcbiAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBCMyBzcGVjLCBpZiB0aGUgZGVidWcgZmxhZyBpcyBzZXQsXG4gICAgICAgIC8vIHRoZSBzYW1wbGVkIGZsYWcgc2hvdWxkbid0IGJlIHByb3BhZ2F0ZWQgYXMgd2VsbC5cbiAgICAgICAgaWYgKGRlYnVnID09PSAnMScpIHtcbiAgICAgICAgICAgIHNldHRlci5zZXQoY2FycmllciwgWF9CM19GTEFHUywgZGVidWcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHNwYW5Db250ZXh0LnRyYWNlRmxhZ3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gV2Ugc2V0IHRoZSBoZWFkZXIgb25seSBpZiB0aGVyZSBpcyBhbiBleGlzdGluZyBzYW1wbGluZyBkZWNpc2lvbi5cbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSB3aWxsIG9taXQgaXQgPT4gQWJzZW50LlxuICAgICAgICAgICAgc2V0dGVyLnNldChjYXJyaWVyLCBYX0IzX1NBTVBMRUQsIChUcmFjZUZsYWdzLlNBTVBMRUQgJiBzcGFuQ29udGV4dC50cmFjZUZsYWdzKSA9PT0gVHJhY2VGbGFncy5TQU1QTEVEXG4gICAgICAgICAgICAgICAgPyAnMSdcbiAgICAgICAgICAgICAgICA6ICcwJyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIEIzTXVsdGlQcm9wYWdhdG9yLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24gKGNvbnRleHQsIGNhcnJpZXIsIGdldHRlcikge1xuICAgICAgICB2YXIgdHJhY2VJZCA9IGdldFRyYWNlSWQoY2FycmllciwgZ2V0dGVyKTtcbiAgICAgICAgdmFyIHNwYW5JZCA9IGdldFNwYW5JZChjYXJyaWVyLCBnZXR0ZXIpO1xuICAgICAgICB2YXIgdHJhY2VGbGFncyA9IGdldFRyYWNlRmxhZ3MoY2FycmllciwgZ2V0dGVyKTtcbiAgICAgICAgdmFyIGRlYnVnID0gZ2V0RGVidWcoY2FycmllciwgZ2V0dGVyKTtcbiAgICAgICAgaWYgKGlzVmFsaWRUcmFjZUlkKHRyYWNlSWQpICYmXG4gICAgICAgICAgICBpc1ZhbGlkU3BhbklkKHNwYW5JZCkgJiZcbiAgICAgICAgICAgIGlzVmFsaWRTYW1wbGVkVmFsdWUodHJhY2VGbGFncykpIHtcbiAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LnNldFZhbHVlKEIzX0RFQlVHX0ZMQUdfS0VZLCBkZWJ1Zyk7XG4gICAgICAgICAgICByZXR1cm4gdHJhY2Uuc2V0U3BhbkNvbnRleHQoY29udGV4dCwge1xuICAgICAgICAgICAgICAgIHRyYWNlSWQ6IHRyYWNlSWQsXG4gICAgICAgICAgICAgICAgc3BhbklkOiBzcGFuSWQsXG4gICAgICAgICAgICAgICAgaXNSZW1vdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgdHJhY2VGbGFnczogdHJhY2VGbGFncyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgIH07XG4gICAgQjNNdWx0aVByb3BhZ2F0b3IucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFhfQjNfVFJBQ0VfSUQsXG4gICAgICAgICAgICBYX0IzX1NQQU5fSUQsXG4gICAgICAgICAgICBYX0IzX0ZMQUdTLFxuICAgICAgICAgICAgWF9CM19TQU1QTEVELFxuICAgICAgICAgICAgWF9CM19QQVJFTlRfU1BBTl9JRCxcbiAgICAgICAgXTtcbiAgICB9O1xuICAgIHJldHVybiBCM011bHRpUHJvcGFnYXRvcjtcbn0oKSk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19yZWFkID0gKHVuZGVmaW5lZCAmJiB1bmRlZmluZWQuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIEIzX0NPTlRFWFRfUkVHRVggPSAvKCg/OlswLTlhLWZdezE2fSl7MSwyfSktKFswLTlhLWZdezE2fSkoPzotKFswMWRdKD8hWzAtOWEtZl0pKSk/KD86LShbMC05YS1mXXsxNn0pKT8vO1xudmFyIFBBRERJTkcgPSAnMCcucmVwZWF0KDE2KTtcbnZhciBTQU1QTEVEX1ZBTFVFUyA9IG5ldyBTZXQoWydkJywgJzEnXSk7XG52YXIgREVCVUdfU1RBVEUgPSAnZCc7XG5mdW5jdGlvbiBjb252ZXJ0VG9UcmFjZUlkMTI4KHRyYWNlSWQpIHtcbiAgICByZXR1cm4gdHJhY2VJZC5sZW5ndGggPT09IDMyID8gdHJhY2VJZCA6IFwiXCIgKyBQQURESU5HICsgdHJhY2VJZDtcbn1cbmZ1bmN0aW9uIGNvbnZlcnRUb1RyYWNlRmxhZ3Moc2FtcGxpbmdTdGF0ZSkge1xuICAgIGlmIChzYW1wbGluZ1N0YXRlICYmIFNBTVBMRURfVkFMVUVTLmhhcyhzYW1wbGluZ1N0YXRlKSkge1xuICAgICAgICByZXR1cm4gVHJhY2VGbGFncy5TQU1QTEVEO1xuICAgIH1cbiAgICByZXR1cm4gVHJhY2VGbGFncy5OT05FO1xufVxuLyoqXG4gKiBQcm9wYWdhdG9yIGZvciB0aGUgQjMgc2luZ2xlLWhlYWRlciBIVFRQIGZvcm1hdC5cbiAqIEJhc2VkIG9uOiBodHRwczovL2dpdGh1Yi5jb20vb3BlbnppcGtpbi9iMy1wcm9wYWdhdGlvblxuICovXG52YXIgQjNTaW5nbGVQcm9wYWdhdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEIzU2luZ2xlUHJvcGFnYXRvcigpIHtcbiAgICB9XG4gICAgQjNTaW5nbGVQcm9wYWdhdG9yLnByb3RvdHlwZS5pbmplY3QgPSBmdW5jdGlvbiAoY29udGV4dCwgY2Fycmllciwgc2V0dGVyKSB7XG4gICAgICAgIHZhciBzcGFuQ29udGV4dCA9IHRyYWNlLmdldFNwYW5Db250ZXh0KGNvbnRleHQpO1xuICAgICAgICBpZiAoIXNwYW5Db250ZXh0IHx8XG4gICAgICAgICAgICAhaXNTcGFuQ29udGV4dFZhbGlkKHNwYW5Db250ZXh0KSB8fFxuICAgICAgICAgICAgaXNUcmFjaW5nU3VwcHJlc3NlZChjb250ZXh0KSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdmFyIHNhbXBsaW5nU3RhdGUgPSBjb250ZXh0LmdldFZhbHVlKEIzX0RFQlVHX0ZMQUdfS0VZKSB8fCBzcGFuQ29udGV4dC50cmFjZUZsYWdzICYgMHgxO1xuICAgICAgICB2YXIgdmFsdWUgPSBzcGFuQ29udGV4dC50cmFjZUlkICsgXCItXCIgKyBzcGFuQ29udGV4dC5zcGFuSWQgKyBcIi1cIiArIHNhbXBsaW5nU3RhdGU7XG4gICAgICAgIHNldHRlci5zZXQoY2FycmllciwgQjNfQ09OVEVYVF9IRUFERVIsIHZhbHVlKTtcbiAgICB9O1xuICAgIEIzU2luZ2xlUHJvcGFnYXRvci5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBnZXR0ZXIpIHtcbiAgICAgICAgdmFyIGhlYWRlciA9IGdldHRlci5nZXQoY2FycmllciwgQjNfQ09OVEVYVF9IRUFERVIpO1xuICAgICAgICB2YXIgYjNDb250ZXh0ID0gQXJyYXkuaXNBcnJheShoZWFkZXIpID8gaGVhZGVyWzBdIDogaGVhZGVyO1xuICAgICAgICBpZiAodHlwZW9mIGIzQ29udGV4dCAhPT0gJ3N0cmluZycpXG4gICAgICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICAgICAgdmFyIG1hdGNoID0gYjNDb250ZXh0Lm1hdGNoKEIzX0NPTlRFWFRfUkVHRVgpO1xuICAgICAgICBpZiAoIW1hdGNoKVxuICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgICAgIHZhciBfYSA9IF9fcmVhZChtYXRjaCwgNCksIGV4dHJhY3RlZFRyYWNlSWQgPSBfYVsxXSwgc3BhbklkID0gX2FbMl0sIHNhbXBsaW5nU3RhdGUgPSBfYVszXTtcbiAgICAgICAgdmFyIHRyYWNlSWQgPSBjb252ZXJ0VG9UcmFjZUlkMTI4KGV4dHJhY3RlZFRyYWNlSWQpO1xuICAgICAgICBpZiAoIWlzVmFsaWRUcmFjZUlkKHRyYWNlSWQpIHx8ICFpc1ZhbGlkU3BhbklkKHNwYW5JZCkpXG4gICAgICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICAgICAgdmFyIHRyYWNlRmxhZ3MgPSBjb252ZXJ0VG9UcmFjZUZsYWdzKHNhbXBsaW5nU3RhdGUpO1xuICAgICAgICBpZiAoc2FtcGxpbmdTdGF0ZSA9PT0gREVCVUdfU1RBVEUpIHtcbiAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LnNldFZhbHVlKEIzX0RFQlVHX0ZMQUdfS0VZLCBzYW1wbGluZ1N0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJhY2Uuc2V0U3BhbkNvbnRleHQoY29udGV4dCwge1xuICAgICAgICAgICAgdHJhY2VJZDogdHJhY2VJZCxcbiAgICAgICAgICAgIHNwYW5JZDogc3BhbklkLFxuICAgICAgICAgICAgaXNSZW1vdGU6IHRydWUsXG4gICAgICAgICAgICB0cmFjZUZsYWdzOiB0cmFjZUZsYWdzLFxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIEIzU2luZ2xlUHJvcGFnYXRvci5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gW0IzX0NPTlRFWFRfSEVBREVSXTtcbiAgICB9O1xuICAgIHJldHVybiBCM1NpbmdsZVByb3BhZ2F0b3I7XG59KCkpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqIEVudW1lcmF0aW9uIG9mIEIzIGluamVjdCBlbmNvZGluZ3MgKi9cbnZhciBCM0luamVjdEVuY29kaW5nO1xuKGZ1bmN0aW9uIChCM0luamVjdEVuY29kaW5nKSB7XG4gICAgQjNJbmplY3RFbmNvZGluZ1tCM0luamVjdEVuY29kaW5nW1wiU0lOR0xFX0hFQURFUlwiXSA9IDBdID0gXCJTSU5HTEVfSEVBREVSXCI7XG4gICAgQjNJbmplY3RFbmNvZGluZ1tCM0luamVjdEVuY29kaW5nW1wiTVVMVElfSEVBREVSXCJdID0gMV0gPSBcIk1VTFRJX0hFQURFUlwiO1xufSkoQjNJbmplY3RFbmNvZGluZyB8fCAoQjNJbmplY3RFbmNvZGluZyA9IHt9KSk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIFByb3BhZ2F0b3IgdGhhdCBleHRyYWN0cyBCMyBjb250ZXh0IGluIGJvdGggc2luZ2xlIGFuZCBtdWx0aS1oZWFkZXIgdmFyaWFudHMsXG4gKiB3aXRoIGNvbmZpZ3VyYWJsZSBpbmplY3Rpb24gZm9ybWF0IGRlZmF1bHRpbmcgdG8gQjMgc2luZ2xlLWhlYWRlci4gRHVlIHRvXG4gKiB0aGUgYXN5bW1ldHJ5IGluIGluamVjdGlvbiBhbmQgZXh0cmFjdGlvbiBmb3JtYXRzIHRoaXMgaXMgbm90IHN1aXRhYmxlIHRvXG4gKiBiZSBpbXBsZW1lbnRlZCBhcyBhIGNvbXBvc2l0ZSBwcm9wYWdhdG9yLlxuICogQmFzZWQgb246IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuemlwa2luL2IzLXByb3BhZ2F0aW9uXG4gKi9cbnZhciBCM1Byb3BhZ2F0b3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gQjNQcm9wYWdhdG9yKGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnID09PSB2b2lkIDApIHsgY29uZmlnID0ge307IH1cbiAgICAgICAgdGhpcy5fYjNNdWx0aVByb3BhZ2F0b3IgPSBuZXcgQjNNdWx0aVByb3BhZ2F0b3IoKTtcbiAgICAgICAgdGhpcy5fYjNTaW5nbGVQcm9wYWdhdG9yID0gbmV3IEIzU2luZ2xlUHJvcGFnYXRvcigpO1xuICAgICAgICBpZiAoY29uZmlnLmluamVjdEVuY29kaW5nID09PSBCM0luamVjdEVuY29kaW5nLk1VTFRJX0hFQURFUikge1xuICAgICAgICAgICAgdGhpcy5faW5qZWN0ID0gdGhpcy5fYjNNdWx0aVByb3BhZ2F0b3IuaW5qZWN0O1xuICAgICAgICAgICAgdGhpcy5fZmllbGRzID0gdGhpcy5fYjNNdWx0aVByb3BhZ2F0b3IuZmllbGRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9pbmplY3QgPSB0aGlzLl9iM1NpbmdsZVByb3BhZ2F0b3IuaW5qZWN0O1xuICAgICAgICAgICAgdGhpcy5fZmllbGRzID0gdGhpcy5fYjNTaW5nbGVQcm9wYWdhdG9yLmZpZWxkcygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIEIzUHJvcGFnYXRvci5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24gKGNvbnRleHQsIGNhcnJpZXIsIHNldHRlcikge1xuICAgICAgICBpZiAoaXNUcmFjaW5nU3VwcHJlc3NlZChjb250ZXh0KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2luamVjdChjb250ZXh0LCBjYXJyaWVyLCBzZXR0ZXIpO1xuICAgIH07XG4gICAgQjNQcm9wYWdhdG9yLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24gKGNvbnRleHQsIGNhcnJpZXIsIGdldHRlcikge1xuICAgICAgICB2YXIgaGVhZGVyID0gZ2V0dGVyLmdldChjYXJyaWVyLCBCM19DT05URVhUX0hFQURFUik7XG4gICAgICAgIHZhciBiM0NvbnRleHQgPSBBcnJheS5pc0FycmF5KGhlYWRlcikgPyBoZWFkZXJbMF0gOiBoZWFkZXI7XG4gICAgICAgIGlmIChiM0NvbnRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9iM1NpbmdsZVByb3BhZ2F0b3IuZXh0cmFjdChjb250ZXh0LCBjYXJyaWVyLCBnZXR0ZXIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2IzTXVsdGlQcm9wYWdhdG9yLmV4dHJhY3QoY29udGV4dCwgY2FycmllciwgZ2V0dGVyKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgQjNQcm9wYWdhdG9yLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWVsZHM7XG4gICAgfTtcbiAgICByZXR1cm4gQjNQcm9wYWdhdG9yO1xufSgpKTtcblxuZXhwb3J0IHsgQjNJbmplY3RFbmNvZGluZywgQjNQcm9wYWdhdG9yLCBCM19DT05URVhUX0hFQURFUiwgWF9CM19GTEFHUywgWF9CM19QQVJFTlRfU1BBTl9JRCwgWF9CM19TQU1QTEVELCBYX0IzX1NQQU5fSUQsIFhfQjNfVFJBQ0VfSUQgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLEdBQWtCLEtBQUtDLEdBQU8sS0FBS0MsR0FBb0IsS0FBS0MsR0FBWSxLQUFLQyxHQUFnQixLQUFLQyxTQUFxQjtBQWlCckksSUFBSUMsSUFBdUJOLEVBQWlCLGdEQUFnRDtBQUM1RixTQUFTTyxFQUFvQkMsR0FBUztBQUNsQyxTQUFPQSxFQUFRLFNBQVNGLENBQW9CLE1BQU07QUFDdEQ7QUFrQkEsSUFBSUcsSUFBb0JULEVBQWlCLHlDQUF5QyxHQWtCOUVVLElBQW9CLE1BRXBCQyxJQUFnQixnQkFDaEJDLElBQWUsZUFDZkMsSUFBZSxnQkFDZkMsSUFBc0IscUJBQ3RCQyxJQUFhLGNBaUJiQyxJQUF1QixvQkFBSSxJQUFJLENBQUMsSUFBTSxRQUFRLFFBQVEsS0FBSyxDQUFDLENBQUMsR0FDN0RDLElBQXlCLG9CQUFJLElBQUksQ0FBQyxJQUFPLFNBQVMsU0FBUyxLQUFLLENBQUMsQ0FBQztBQUN0RSxTQUFTQyxFQUFvQkMsR0FBUztBQUNsQyxTQUFPQSxNQUFZaEIsRUFBVyxXQUFXZ0IsTUFBWWhCLEVBQVc7QUFDcEU7QUFDQSxTQUFTaUIsRUFBWUMsR0FBUTtBQUN6QixTQUFPLE1BQU0sUUFBUUEsQ0FBTSxJQUFJQSxFQUFPLENBQUMsSUFBSUE7QUFDL0M7QUFDQSxTQUFTQyxFQUFlQyxHQUFTQyxHQUFRQyxHQUFLO0FBQzFDLE1BQUlKLElBQVNHLEVBQU8sSUFBSUQsR0FBU0UsQ0FBRztBQUNwQyxTQUFPTCxFQUFZQyxDQUFNO0FBQzdCO0FBQ0EsU0FBU0ssRUFBV0gsR0FBU0MsR0FBUTtBQUNqQyxNQUFJRyxJQUFVTCxFQUFlQyxHQUFTQyxHQUFRYixDQUFhO0FBQzNELFNBQUksT0FBT2dCLEtBQVksV0FDWkEsRUFBUSxTQUFTLElBQUksR0FBRyxJQUU1QjtBQUNYO0FBQ0EsU0FBU0MsRUFBVUwsR0FBU0MsR0FBUTtBQUNoQyxNQUFJSyxJQUFTUCxFQUFlQyxHQUFTQyxHQUFRWixDQUFZO0FBQ3pELFNBQUksT0FBT2lCLEtBQVcsV0FDWEEsSUFFSjtBQUNYO0FBQ0EsU0FBU0MsRUFBU1AsR0FBU0MsR0FBUTtBQUMvQixNQUFJTyxJQUFRVCxFQUFlQyxHQUFTQyxHQUFRVCxDQUFVO0FBQ3RELFNBQU9nQixNQUFVLE1BQU0sTUFBTTtBQUNqQztBQUNBLFNBQVNDLEVBQWNULEdBQVNDLEdBQVE7QUFDcEMsTUFBSVMsSUFBYVgsRUFBZUMsR0FBU0MsR0FBUVgsQ0FBWSxHQUN6RGtCLElBQVFELEVBQVNQLEdBQVNDLENBQU07QUFDcEMsTUFBSU8sTUFBVSxPQUFPZixFQUFxQixJQUFJaUIsQ0FBVTtBQUNwRCxXQUFPOUIsRUFBVztBQUV0QixNQUFJOEIsTUFBZSxVQUFhaEIsRUFBdUIsSUFBSWdCLENBQVU7QUFDakUsV0FBTzlCLEVBQVc7QUFJMUI7QUFLQSxJQUFJK0I7QUFBQTtBQUFBLEVBQW1DLFdBQVk7QUFDL0MsYUFBU0EsSUFBb0I7QUFBQSxJQUM3QjtBQUNBLFdBQUFBLEVBQWtCLFVBQVUsU0FBUyxTQUFVMUIsR0FBU2UsR0FBU1ksR0FBUTtBQUNyRSxVQUFJQyxJQUFjbkMsRUFBTSxlQUFlTyxDQUFPO0FBQzlDLFVBQUksR0FBQzRCLEtBQ0QsQ0FBQ2xDLEVBQW1Ca0MsQ0FBVyxLQUMvQjdCLEVBQW9CQyxDQUFPLElBRS9CO0FBQUEsWUFBSXVCLElBQVF2QixFQUFRLFNBQVNDLENBQWlCO0FBQzlDLFFBQUEwQixFQUFPLElBQUlaLEdBQVNaLEdBQWV5QixFQUFZLE9BQU8sR0FDdERELEVBQU8sSUFBSVosR0FBU1gsR0FBY3dCLEVBQVksTUFBTSxHQUdoREwsTUFBVSxNQUNWSSxFQUFPLElBQUlaLEdBQVNSLEdBQVlnQixDQUFLLElBRWhDSyxFQUFZLGVBQWUsVUFHaENELEVBQU8sSUFBSVosR0FBU1YsSUFBZVYsRUFBVyxVQUFVaUMsRUFBWSxnQkFBZ0JqQyxFQUFXLFVBQ3pGLE1BQ0EsR0FBRztBQUFBO0FBQUEsSUFFakIsR0FDQStCLEVBQWtCLFVBQVUsVUFBVSxTQUFVMUIsR0FBU2UsR0FBU0MsR0FBUTtBQUN0RSxVQUFJRyxJQUFVRCxFQUFXSCxHQUFTQyxDQUFNLEdBQ3BDSyxJQUFTRCxFQUFVTCxHQUFTQyxDQUFNLEdBQ2xDUyxJQUFhRCxFQUFjVCxHQUFTQyxDQUFNLEdBQzFDTyxJQUFRRCxFQUFTUCxHQUFTQyxDQUFNO0FBQ3BDLGFBQUlwQixFQUFldUIsQ0FBTyxLQUN0QnRCLEVBQWN3QixDQUFNLEtBQ3BCWCxFQUFvQmUsQ0FBVSxLQUM5QnpCLElBQVVBLEVBQVEsU0FBU0MsR0FBbUJzQixDQUFLLEdBQzVDOUIsRUFBTSxlQUFlTyxHQUFTO0FBQUEsUUFDakMsU0FBU21CO0FBQUEsUUFDVCxRQUFRRTtBQUFBLFFBQ1IsVUFBVTtBQUFBLFFBQ1YsWUFBWUk7QUFBQSxNQUNoQixDQUFDLEtBRUV6QjtBQUFBLElBQ1gsR0FDQTBCLEVBQWtCLFVBQVUsU0FBUyxXQUFZO0FBQzdDLGFBQU87QUFBQSxRQUNIdkI7QUFBQSxRQUNBQztBQUFBLFFBQ0FHO0FBQUEsUUFDQUY7QUFBQSxRQUNBQztBQUFBLE1BQ0o7QUFBQSxJQUNKLEdBQ09vQjtBQUFBLEVBQ1gsRUFBRTtBQUFBLEdBaUJFRyxJQUE0QyxTQUFVQyxHQUFHQyxHQUFHO0FBQzVELE1BQUlDLElBQUksT0FBTyxVQUFXLGNBQWNGLEVBQUUsT0FBTyxRQUFRO0FBQ3pELE1BQUksQ0FBQ0UsRUFBRyxRQUFPRjtBQUNmLE1BQUlHLElBQUlELEVBQUUsS0FBS0YsQ0FBQyxHQUFHSSxHQUFHQyxJQUFLLENBQUMsR0FBR0M7QUFDL0IsTUFBSTtBQUNBLFlBQVFMLE1BQU0sVUFBVUEsTUFBTSxNQUFNLEVBQUVHLElBQUlELEVBQUUsS0FBSyxHQUFHLE9BQU0sQ0FBQUUsRUFBRyxLQUFLRCxFQUFFLEtBQUs7QUFBQSxFQUM3RSxTQUNPRyxHQUFPO0FBQUUsSUFBQUQsSUFBSSxFQUFFLE9BQU9DLEVBQU07QUFBQSxFQUFHLFVBQ3RDO0FBQ0ksUUFBSTtBQUNBLE1BQUlILEtBQUssQ0FBQ0EsRUFBRSxTQUFTRixJQUFJQyxFQUFFLFdBQVlELEVBQUUsS0FBS0MsQ0FBQztBQUFBLElBQ25ELFVBQ0E7QUFBVSxVQUFJRyxFQUFHLE9BQU1BLEVBQUU7QUFBQSxJQUFPO0FBQUEsRUFDcEM7QUFDQSxTQUFPRDtBQUNYLEdBQ0lHLElBQW1CLHVGQUNuQkMsSUFBVSxJQUFJLE9BQU8sRUFBRSxHQUN2QkMsSUFBaUIsb0JBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQ25DQyxJQUFjO0FBQ2xCLFNBQVNDLEVBQW9CdkIsR0FBUztBQUNsQyxTQUFPQSxFQUFRLFdBQVcsS0FBS0EsSUFBVSxLQUFLb0IsSUFBVXBCO0FBQzVEO0FBQ0EsU0FBU3dCLEVBQW9CQyxHQUFlO0FBQ3hDLFNBQUlBLEtBQWlCSixFQUFlLElBQUlJLENBQWEsSUFDMUNqRCxFQUFXLFVBRWZBLEVBQVc7QUFDdEI7QUFLQSxJQUFJa0Q7QUFBQTtBQUFBLEVBQW9DLFdBQVk7QUFDaEQsYUFBU0EsSUFBcUI7QUFBQSxJQUM5QjtBQUNBLFdBQUFBLEVBQW1CLFVBQVUsU0FBUyxTQUFVN0MsR0FBU2UsR0FBU1ksR0FBUTtBQUN0RSxVQUFJQyxJQUFjbkMsRUFBTSxlQUFlTyxDQUFPO0FBQzlDLFVBQUksR0FBQzRCLEtBQ0QsQ0FBQ2xDLEVBQW1Ca0MsQ0FBVyxLQUMvQjdCLEVBQW9CQyxDQUFPLElBRS9CO0FBQUEsWUFBSTRDLElBQWdCNUMsRUFBUSxTQUFTQyxDQUFpQixLQUFLMkIsRUFBWSxhQUFhLEdBQ2hGa0IsSUFBUWxCLEVBQVksVUFBVSxNQUFNQSxFQUFZLFNBQVMsTUFBTWdCO0FBQ25FLFFBQUFqQixFQUFPLElBQUlaLEdBQVNiLEdBQW1CNEMsQ0FBSztBQUFBO0FBQUEsSUFDaEQsR0FDQUQsRUFBbUIsVUFBVSxVQUFVLFNBQVU3QyxHQUFTZSxHQUFTQyxHQUFRO0FBQ3ZFLFVBQUlILElBQVNHLEVBQU8sSUFBSUQsR0FBU2IsQ0FBaUIsR0FDOUM2QyxJQUFZLE1BQU0sUUFBUWxDLENBQU0sSUFBSUEsRUFBTyxDQUFDLElBQUlBO0FBQ3BELFVBQUksT0FBT2tDLEtBQWM7QUFDckIsZUFBTy9DO0FBQ1gsVUFBSWdELElBQVFELEVBQVUsTUFBTVQsQ0FBZ0I7QUFDNUMsVUFBSSxDQUFDVTtBQUNELGVBQU9oRDtBQUNYLFVBQUlpRCxJQUFLcEIsRUFBT21CLEdBQU8sQ0FBQyxHQUFHRSxJQUFtQkQsRUFBRyxDQUFDLEdBQUc1QixJQUFTNEIsRUFBRyxDQUFDLEdBQUdMLElBQWdCSyxFQUFHLENBQUMsR0FDckY5QixJQUFVdUIsRUFBb0JRLENBQWdCO0FBQ2xELFVBQUksQ0FBQ3RELEVBQWV1QixDQUFPLEtBQUssQ0FBQ3RCLEVBQWN3QixDQUFNO0FBQ2pELGVBQU9yQjtBQUNYLFVBQUl5QixJQUFha0IsRUFBb0JDLENBQWE7QUFDbEQsYUFBSUEsTUFBa0JILE1BQ2xCekMsSUFBVUEsRUFBUSxTQUFTQyxHQUFtQjJDLENBQWEsSUFFeERuRCxFQUFNLGVBQWVPLEdBQVM7QUFBQSxRQUNqQyxTQUFTbUI7QUFBQSxRQUNULFFBQVFFO0FBQUEsUUFDUixVQUFVO0FBQUEsUUFDVixZQUFZSTtBQUFBLE1BQ2hCLENBQUM7QUFBQSxJQUNMLEdBQ0FvQixFQUFtQixVQUFVLFNBQVMsV0FBWTtBQUM5QyxhQUFPLENBQUMzQyxDQUFpQjtBQUFBLElBQzdCLEdBQ08yQztBQUFBLEVBQ1gsRUFBRTtBQUFBLEdBa0JFTTtBQUFBLENBQ0gsU0FBVUEsR0FBa0I7QUFDekIsRUFBQUEsRUFBaUJBLEVBQWlCLGdCQUFtQixDQUFDLElBQUksaUJBQzFEQSxFQUFpQkEsRUFBaUIsZUFBa0IsQ0FBQyxJQUFJO0FBQzdELEdBQUdBLE1BQXFCQSxJQUFtQixDQUFDLEVBQUU7QUF3QjlDLElBQUlDO0FBQUE7QUFBQSxFQUE4QixXQUFZO0FBQzFDLGFBQVNBLEVBQWFDLEdBQVE7QUFDMUIsTUFBSUEsTUFBVyxXQUFVQSxJQUFTLENBQUMsSUFDbkMsS0FBSyxxQkFBcUIsSUFBSTNCLEVBQWtCLEdBQ2hELEtBQUssc0JBQXNCLElBQUltQixFQUFtQixHQUM5Q1EsRUFBTyxtQkFBbUJGLEVBQWlCLGdCQUMzQyxLQUFLLFVBQVUsS0FBSyxtQkFBbUIsUUFDdkMsS0FBSyxVQUFVLEtBQUssbUJBQW1CLE9BQU8sTUFHOUMsS0FBSyxVQUFVLEtBQUssb0JBQW9CLFFBQ3hDLEtBQUssVUFBVSxLQUFLLG9CQUFvQixPQUFPO0FBQUEsSUFFdkQ7QUFDQSxXQUFBQyxFQUFhLFVBQVUsU0FBUyxTQUFVcEQsR0FBU2UsR0FBU1ksR0FBUTtBQUNoRSxNQUFJNUIsRUFBb0JDLENBQU8sS0FHL0IsS0FBSyxRQUFRQSxHQUFTZSxHQUFTWSxDQUFNO0FBQUEsSUFDekMsR0FDQXlCLEVBQWEsVUFBVSxVQUFVLFNBQVVwRCxHQUFTZSxHQUFTQyxHQUFRO0FBQ2pFLFVBQUlILElBQVNHLEVBQU8sSUFBSUQsR0FBU2IsQ0FBaUIsR0FDOUM2QyxJQUFZLE1BQU0sUUFBUWxDLENBQU0sSUFBSUEsRUFBTyxDQUFDLElBQUlBO0FBQ3BELGFBQUlrQyxJQUNPLEtBQUssb0JBQW9CLFFBQVEvQyxHQUFTZSxHQUFTQyxDQUFNLElBR3pELEtBQUssbUJBQW1CLFFBQVFoQixHQUFTZSxHQUFTQyxDQUFNO0FBQUEsSUFFdkUsR0FDQW9DLEVBQWEsVUFBVSxTQUFTLFdBQVk7QUFDeEMsYUFBTyxLQUFLO0FBQUEsSUFDaEIsR0FDT0E7QUFBQSxFQUNYLEVBQUU7QUFBQTsiLAogICJuYW1lcyI6IFsiY3JlYXRlQ29udGV4dEtleSIsICJ0cmFjZSIsICJpc1NwYW5Db250ZXh0VmFsaWQiLCAiVHJhY2VGbGFncyIsICJpc1ZhbGlkVHJhY2VJZCIsICJpc1ZhbGlkU3BhbklkIiwgIlNVUFBSRVNTX1RSQUNJTkdfS0VZIiwgImlzVHJhY2luZ1N1cHByZXNzZWQiLCAiY29udGV4dCIsICJCM19ERUJVR19GTEFHX0tFWSIsICJCM19DT05URVhUX0hFQURFUiIsICJYX0IzX1RSQUNFX0lEIiwgIlhfQjNfU1BBTl9JRCIsICJYX0IzX1NBTVBMRUQiLCAiWF9CM19QQVJFTlRfU1BBTl9JRCIsICJYX0IzX0ZMQUdTIiwgIlZBTElEX1NBTVBMRURfVkFMVUVTIiwgIlZBTElEX1VOU0FNUExFRF9WQUxVRVMiLCAiaXNWYWxpZFNhbXBsZWRWYWx1ZSIsICJzYW1wbGVkIiwgInBhcnNlSGVhZGVyIiwgImhlYWRlciIsICJnZXRIZWFkZXJWYWx1ZSIsICJjYXJyaWVyIiwgImdldHRlciIsICJrZXkiLCAiZ2V0VHJhY2VJZCIsICJ0cmFjZUlkIiwgImdldFNwYW5JZCIsICJzcGFuSWQiLCAiZ2V0RGVidWciLCAiZGVidWciLCAiZ2V0VHJhY2VGbGFncyIsICJ0cmFjZUZsYWdzIiwgIkIzTXVsdGlQcm9wYWdhdG9yIiwgInNldHRlciIsICJzcGFuQ29udGV4dCIsICJfX3JlYWQiLCAibyIsICJuIiwgIm0iLCAiaSIsICJyIiwgImFyIiwgImUiLCAiZXJyb3IiLCAiQjNfQ09OVEVYVF9SRUdFWCIsICJQQURESU5HIiwgIlNBTVBMRURfVkFMVUVTIiwgIkRFQlVHX1NUQVRFIiwgImNvbnZlcnRUb1RyYWNlSWQxMjgiLCAiY29udmVydFRvVHJhY2VGbGFncyIsICJzYW1wbGluZ1N0YXRlIiwgIkIzU2luZ2xlUHJvcGFnYXRvciIsICJ2YWx1ZSIsICJiM0NvbnRleHQiLCAibWF0Y2giLCAiX2EiLCAiZXh0cmFjdGVkVHJhY2VJZCIsICJCM0luamVjdEVuY29kaW5nIiwgIkIzUHJvcGFnYXRvciIsICJjb25maWciXQp9Cg==
|