@getopenpay/openpay-js
Version:
Accept payments through OpenPay, right on your site
1,012 lines • 182 kB
JavaScript
import { z as Ar, p as g, _ as X, s as Pr, l as Sr, j as Ir, q as vr, y as yr, dK as hr, h as gr, dL as mr, n as Cr, r as Nr, i as Mr, m as Ur, o as Br, t as br, u as Dr } from "./url-c5k5Yl5P.js";
import { i as G, s as Q, u as Xr } from "./suppress-tracing-QycbVyJL.js";
import { d as c } from "./diag-api-iTj0t8NN.js";
import { h as q, E as Gr } from "./ExportResult-BacsqwKA.js";
import { f as u, t as N, i as k, T as M, c as wr, b as Vr, a as K } from "./index-BmfwKlzi.js";
import { a as jr, bm as Hr } from "./sdk-info-ChuKu8zW.js";
var l;
(function(r) {
r[r.NOT_RECORD = 0] = "NOT_RECORD", r[r.RECORD = 1] = "RECORD", r[r.RECORD_AND_SAMPLED = 2] = "RECORD_AND_SAMPLED";
})(l || (l = {}));
var xr = "=", U = ";", I = ",", m = "baggage", Fr = 180, Kr = 4096, Yr = 8192, zr = function(r, e) {
var t = typeof Symbol == "function" && r[Symbol.iterator];
if (!t) return r;
var n = t.call(r), a, i = [], o;
try {
for (; (e === void 0 || e-- > 0) && !(a = n.next()).done; ) i.push(a.value);
} catch (_) {
o = { error: _ };
} finally {
try {
a && !a.done && (t = n.return) && t.call(n);
} finally {
if (o) throw o.error;
}
}
return i;
};
function rr(r) {
return r.reduce(function(e, t) {
var n = "" + e + (e !== "" ? I : "") + t;
return n.length > Yr ? e : n;
}, "");
}
function er(r) {
return r.getAllEntries().map(function(e) {
var t = zr(e, 2), n = t[0], a = t[1], i = encodeURIComponent(n) + "=" + encodeURIComponent(a.value);
return a.metadata !== void 0 && (i += U + a.metadata.toString()), i;
});
}
function w(r) {
var e = r.split(U);
if (!(e.length <= 0)) {
var t = e.shift();
if (t) {
var n = t.indexOf(xr);
if (!(n <= 0)) {
var a = decodeURIComponent(t.substring(0, n).trim()), i = decodeURIComponent(t.substring(n + 1).trim()), o;
return e.length > 0 && (o = Ar(e.join(U))), { key: a, value: i, metadata: o };
}
}
}
}
function Wr(r) {
return typeof r != "string" || r.length === 0 ? {} : r.split(I).map(function(e) {
return w(e);
}).filter(function(e) {
return e !== void 0 && e.value.length > 0;
}).reduce(function(e, t) {
return e[t.key] = t.value, e;
}, {});
}
var Zr = (
/** @class */
(function() {
function r() {
}
return r.prototype.inject = function(e, t, n) {
var a = g.getBaggage(e);
if (!(!a || G(e))) {
var i = er(a).filter(function(_) {
return _.length <= Kr;
}).slice(0, Fr), o = rr(i);
o.length > 0 && n.set(t, m, o);
}
}, r.prototype.extract = function(e, t, n) {
var a = n.get(t, m), i = Array.isArray(a) ? a.join(I) : a;
if (!i)
return e;
var o = {};
if (i.length === 0)
return e;
var _ = i.split(I);
return _.forEach(function(E) {
var T = w(E);
if (T) {
var s = { value: T.value };
T.metadata && (s.metadata = T.metadata), o[T.key] = s;
}
}), Object.entries(o).length === 0 ? e : g.setBaggage(e, g.createBaggage(o));
}, r.prototype.fields = function() {
return [m];
}, r;
})()
), $r = (
/** @class */
(function() {
function r(e, t) {
this._monotonicClock = t, this._epochMillis = e.now(), this._performanceMillis = t.now();
}
return r.prototype.now = function() {
var e = this._monotonicClock.now() - this._performanceMillis;
return this._epochMillis + e;
}, r;
})()
), tr = function(r) {
var e = typeof Symbol == "function" && Symbol.iterator, t = e && r[e], n = 0;
if (t) return t.call(r);
if (r && typeof r.length == "number") return {
next: function() {
return r && n >= r.length && (r = void 0), { value: r && r[n++], done: !r };
}
};
throw new TypeError(e ? "Object is not iterable." : "Symbol.iterator is not defined.");
}, Jr = function(r, e) {
var t = typeof Symbol == "function" && r[Symbol.iterator];
if (!t) return r;
var n = t.call(r), a, i = [], o;
try {
for (; (e === void 0 || e-- > 0) && !(a = n.next()).done; ) i.push(a.value);
} catch (_) {
o = { error: _ };
} finally {
try {
a && !a.done && (t = n.return) && t.call(n);
} finally {
if (o) throw o.error;
}
}
return i;
};
function Qr(r) {
var e, t, n = {};
if (typeof r != "object" || r == null)
return n;
try {
for (var a = tr(Object.entries(r)), i = a.next(); !i.done; i = a.next()) {
var o = Jr(i.value, 2), _ = o[0], E = o[1];
if (!nr(_)) {
c.warn("Invalid attribute key: " + _);
continue;
}
if (!ar(E)) {
c.warn("Invalid attribute value set for key: " + _);
continue;
}
Array.isArray(E) ? n[_] = E.slice() : n[_] = E;
}
} catch (T) {
e = { error: T };
} finally {
try {
i && !i.done && (t = a.return) && t.call(a);
} finally {
if (e) throw e.error;
}
}
return n;
}
function nr(r) {
return typeof r == "string" && r.length > 0;
}
function ar(r) {
return r == null ? !0 : Array.isArray(r) ? qr(r) : ir(r);
}
function qr(r) {
var e, t, n;
try {
for (var a = tr(r), i = a.next(); !i.done; i = a.next()) {
var o = i.value;
if (o != null) {
if (!n) {
if (ir(o)) {
n = typeof o;
continue;
}
return !1;
}
if (typeof o !== n)
return !1;
}
}
} catch (_) {
e = { error: _ };
} finally {
try {
i && !i.done && (t = a.return) && t.call(a);
} finally {
if (e) throw e.error;
}
}
return !0;
}
function ir(r) {
switch (typeof r) {
case "number":
case "boolean":
case "string":
return !0;
}
return !1;
}
function or() {
return function(r) {
c.error(kr(r));
};
}
function kr(r) {
return typeof r == "string" ? r : JSON.stringify(re(r));
}
function re(r) {
for (var e = {}, t = r; t !== null; )
Object.getOwnPropertyNames(t).forEach(function(n) {
if (!e[n]) {
var a = t[n];
a && (e[n] = String(a));
}
}), t = Object.getPrototypeOf(t);
return e;
}
var _r = or();
function ee(r) {
_r = r;
}
function Er(r) {
try {
_r(r);
} catch {
}
}
var v;
(function(r) {
r.AlwaysOff = "always_off", r.AlwaysOn = "always_on", r.ParentBasedAlwaysOff = "parentbased_always_off", r.ParentBasedAlwaysOn = "parentbased_always_on", r.ParentBasedTraceIdRatio = "parentbased_traceidratio", r.TraceIdRatio = "traceidratio";
})(v || (v = {}));
var te = ",", ne = ["OTEL_SDK_DISABLED"];
function ae(r) {
return ne.indexOf(r) > -1;
}
var ie = [
"OTEL_BSP_EXPORT_TIMEOUT",
"OTEL_BSP_MAX_EXPORT_BATCH_SIZE",
"OTEL_BSP_MAX_QUEUE_SIZE",
"OTEL_BSP_SCHEDULE_DELAY",
"OTEL_BLRP_EXPORT_TIMEOUT",
"OTEL_BLRP_MAX_EXPORT_BATCH_SIZE",
"OTEL_BLRP_MAX_QUEUE_SIZE",
"OTEL_BLRP_SCHEDULE_DELAY",
"OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT",
"OTEL_ATTRIBUTE_COUNT_LIMIT",
"OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT",
"OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT",
"OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT",
"OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT",
"OTEL_SPAN_EVENT_COUNT_LIMIT",
"OTEL_SPAN_LINK_COUNT_LIMIT",
"OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT",
"OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT",
"OTEL_EXPORTER_OTLP_TIMEOUT",
"OTEL_EXPORTER_OTLP_TRACES_TIMEOUT",
"OTEL_EXPORTER_OTLP_METRICS_TIMEOUT",
"OTEL_EXPORTER_OTLP_LOGS_TIMEOUT",
"OTEL_EXPORTER_JAEGER_AGENT_PORT"
];
function oe(r) {
return ie.indexOf(r) > -1;
}
var _e = [
"OTEL_NO_PATCH_MODULES",
"OTEL_PROPAGATORS",
"OTEL_SEMCONV_STABILITY_OPT_IN"
];
function Ee(r) {
return _e.indexOf(r) > -1;
}
var p = 1 / 0, d = 128, Tr = 128, ur = 128, V = {
OTEL_SDK_DISABLED: !1,
CONTAINER_NAME: "",
ECS_CONTAINER_METADATA_URI_V4: "",
ECS_CONTAINER_METADATA_URI: "",
HOSTNAME: "",
KUBERNETES_SERVICE_HOST: "",
NAMESPACE: "",
OTEL_BSP_EXPORT_TIMEOUT: 3e4,
OTEL_BSP_MAX_EXPORT_BATCH_SIZE: 512,
OTEL_BSP_MAX_QUEUE_SIZE: 2048,
OTEL_BSP_SCHEDULE_DELAY: 5e3,
OTEL_BLRP_EXPORT_TIMEOUT: 3e4,
OTEL_BLRP_MAX_EXPORT_BATCH_SIZE: 512,
OTEL_BLRP_MAX_QUEUE_SIZE: 2048,
OTEL_BLRP_SCHEDULE_DELAY: 5e3,
OTEL_EXPORTER_JAEGER_AGENT_HOST: "",
OTEL_EXPORTER_JAEGER_AGENT_PORT: 6832,
OTEL_EXPORTER_JAEGER_ENDPOINT: "",
OTEL_EXPORTER_JAEGER_PASSWORD: "",
OTEL_EXPORTER_JAEGER_USER: "",
OTEL_EXPORTER_OTLP_ENDPOINT: "",
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: "",
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: "",
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT: "",
OTEL_EXPORTER_OTLP_HEADERS: "",
OTEL_EXPORTER_OTLP_TRACES_HEADERS: "",
OTEL_EXPORTER_OTLP_METRICS_HEADERS: "",
OTEL_EXPORTER_OTLP_LOGS_HEADERS: "",
OTEL_EXPORTER_OTLP_TIMEOUT: 1e4,
OTEL_EXPORTER_OTLP_TRACES_TIMEOUT: 1e4,
OTEL_EXPORTER_OTLP_METRICS_TIMEOUT: 1e4,
OTEL_EXPORTER_OTLP_LOGS_TIMEOUT: 1e4,
OTEL_EXPORTER_ZIPKIN_ENDPOINT: "http://localhost:9411/api/v2/spans",
OTEL_LOG_LEVEL: u.INFO,
OTEL_NO_PATCH_MODULES: [],
OTEL_PROPAGATORS: ["tracecontext", "baggage"],
OTEL_RESOURCE_ATTRIBUTES: "",
OTEL_SERVICE_NAME: "",
OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT: p,
OTEL_ATTRIBUTE_COUNT_LIMIT: d,
OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT: p,
OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT: d,
OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT: p,
OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT: d,
OTEL_SPAN_EVENT_COUNT_LIMIT: 128,
OTEL_SPAN_LINK_COUNT_LIMIT: 128,
OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT: Tr,
OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT: ur,
OTEL_TRACES_EXPORTER: "",
OTEL_TRACES_SAMPLER: v.ParentBasedAlwaysOn,
OTEL_TRACES_SAMPLER_ARG: "",
OTEL_LOGS_EXPORTER: "",
OTEL_EXPORTER_OTLP_INSECURE: "",
OTEL_EXPORTER_OTLP_TRACES_INSECURE: "",
OTEL_EXPORTER_OTLP_METRICS_INSECURE: "",
OTEL_EXPORTER_OTLP_LOGS_INSECURE: "",
OTEL_EXPORTER_OTLP_CERTIFICATE: "",
OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE: "",
OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE: "",
OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE: "",
OTEL_EXPORTER_OTLP_COMPRESSION: "",
OTEL_EXPORTER_OTLP_TRACES_COMPRESSION: "",
OTEL_EXPORTER_OTLP_METRICS_COMPRESSION: "",
OTEL_EXPORTER_OTLP_LOGS_COMPRESSION: "",
OTEL_EXPORTER_OTLP_CLIENT_KEY: "",
OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY: "",
OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY: "",
OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY: "",
OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE: "",
OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE: "",
OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE: "",
OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE: "",
OTEL_EXPORTER_OTLP_PROTOCOL: "http/protobuf",
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: "http/protobuf",
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL: "http/protobuf",
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL: "http/protobuf",
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "cumulative",
OTEL_SEMCONV_STABILITY_OPT_IN: []
};
function Te(r, e, t) {
if (!(typeof t[r] > "u")) {
var n = String(t[r]);
e[r] = n.toLowerCase() === "true";
}
}
function ue(r, e, t, n, a) {
if (n === void 0 && (n = -1 / 0), a === void 0 && (a = 1 / 0), typeof t[r] < "u") {
var i = Number(t[r]);
isNaN(i) || (i < n ? e[r] = n : i > a ? e[r] = a : e[r] = i);
}
}
function fe(r, e, t, n) {
n === void 0 && (n = te);
var a = t[r];
typeof a == "string" && (e[r] = a.split(n).map(function(i) {
return i.trim();
}));
}
var se = {
ALL: u.ALL,
VERBOSE: u.VERBOSE,
DEBUG: u.DEBUG,
INFO: u.INFO,
WARN: u.WARN,
ERROR: u.ERROR,
NONE: u.NONE
};
function le(r, e, t) {
var n = t[r];
if (typeof n == "string") {
var a = se[n.toUpperCase()];
a != null && (e[r] = a);
}
}
function j(r) {
var e = {};
for (var t in V) {
var n = t;
switch (n) {
case "OTEL_LOG_LEVEL":
le(n, e, r);
break;
default:
if (ae(n))
Te(n, e, r);
else if (oe(n))
ue(n, e, r);
else if (Ee(n))
fe(n, e, r);
else {
var a = r[n];
typeof a < "u" && a !== null && (e[n] = String(a));
}
}
}
return e;
}
function Oe() {
var r = j(X);
return Object.assign({}, V, r);
}
function ce() {
return j(X);
}
var Re = function(r, e) {
var t = typeof Symbol == "function" && r[Symbol.iterator];
if (!t) return r;
var n = t.call(r), a, i = [], o;
try {
for (; (e === void 0 || e-- > 0) && !(a = n.next()).done; ) i.push(a.value);
} catch (_) {
o = { error: _ };
} finally {
try {
a && !a.done && (t = n.return) && t.call(n);
} finally {
if (o) throw o.error;
}
}
return i;
}, pe = function(r, e, t) {
if (t || arguments.length === 2) for (var n = 0, a = e.length, i; n < a; n++)
(i || !(n in e)) && (i || (i = Array.prototype.slice.call(e, 0, n)), i[n] = e[n]);
return r.concat(i || Array.prototype.slice.call(e));
};
function de(r) {
return btoa(String.fromCharCode.apply(String, pe([], Re(q(r)), !1)));
}
var Le = 8, Ae = 16, Pe = (
/** @class */
/* @__PURE__ */ (function() {
function r() {
this.generateTraceId = Y(Ae), this.generateSpanId = Y(Le);
}
return r;
})()
), R = Array(32);
function Y(r) {
return function() {
for (var t = 0; t < r * 2; t++)
R[t] = Math.floor(Math.random() * 16) + 48, R[t] >= 58 && (R[t] += 39);
return String.fromCharCode.apply(null, R.slice(0, r * 2));
};
}
function Se(r) {
}
var Ie = function(r) {
var e = typeof Symbol == "function" && Symbol.iterator, t = e && r[e], n = 0;
if (t) return t.call(r);
if (r && typeof r.length == "number") return {
next: function() {
return r && n >= r.length && (r = void 0), { value: r && r[n++], done: !r };
}
};
throw new TypeError(e ? "Object is not iterable." : "Symbol.iterator is not defined.");
}, ve = (
/** @class */
(function() {
function r(e) {
e === void 0 && (e = {});
var t;
this._propagators = (t = e.propagators) !== null && t !== void 0 ? t : [], this._fields = Array.from(new Set(this._propagators.map(function(n) {
return typeof n.fields == "function" ? n.fields() : [];
}).reduce(function(n, a) {
return n.concat(a);
}, [])));
}
return r.prototype.inject = function(e, t, n) {
var a, i;
try {
for (var o = Ie(this._propagators), _ = o.next(); !_.done; _ = o.next()) {
var E = _.value;
try {
E.inject(e, t, n);
} catch (T) {
c.warn("Failed to inject with " + E.constructor.name + ". Err: " + T.message);
}
}
} catch (T) {
a = { error: T };
} finally {
try {
_ && !_.done && (i = o.return) && i.call(o);
} finally {
if (a) throw a.error;
}
}
}, r.prototype.extract = function(e, t, n) {
return this._propagators.reduce(function(a, i) {
try {
return i.extract(a, t, n);
} catch (o) {
c.warn("Failed to extract with " + i.constructor.name + ". Err: " + o.message);
}
return a;
}, e);
}, r.prototype.fields = function() {
return this._fields.slice();
}, r;
})()
), B = "[_0-9a-z-*/]", ye = "[a-z]" + B + "{0,255}", he = "[a-z0-9]" + B + "{0,240}@[a-z]" + B + "{0,13}", ge = new RegExp("^(?:" + ye + "|" + he + ")$"), me = /^[ -~]{0,255}[!-~]$/, Ce = /,|=/;
function Ne(r) {
return ge.test(r);
}
function Me(r) {
return me.test(r) && !Ce.test(r);
}
var z = 32, Ue = 512, W = ",", Z = "=", fr = (
/** @class */
(function() {
function r(e) {
this._internalState = /* @__PURE__ */ new Map(), e && this._parse(e);
}
return r.prototype.set = function(e, t) {
var n = this._clone();
return n._internalState.has(e) && n._internalState.delete(e), n._internalState.set(e, t), n;
}, r.prototype.unset = function(e) {
var t = this._clone();
return t._internalState.delete(e), t;
}, r.prototype.get = function(e) {
return this._internalState.get(e);
}, r.prototype.serialize = function() {
var e = this;
return this._keys().reduce(function(t, n) {
return t.push(n + Z + e.get(n)), t;
}, []).join(W);
}, r.prototype._parse = function(e) {
e.length > Ue || (this._internalState = e.split(W).reverse().reduce(function(t, n) {
var a = n.trim(), i = a.indexOf(Z);
if (i !== -1) {
var o = a.slice(0, i), _ = a.slice(i + 1, n.length);
Ne(o) && Me(_) && t.set(o, _);
}
return t;
}, /* @__PURE__ */ new Map()), this._internalState.size > z && (this._internalState = new Map(Array.from(this._internalState.entries()).reverse().slice(0, z))));
}, r.prototype._keys = function() {
return Array.from(this._internalState.keys()).reverse();
}, r.prototype._clone = function() {
var e = new r();
return e._internalState = new Map(this._internalState), e;
}, r;
})()
), L = "traceparent", A = "tracestate", Be = "00", be = "(?!ff)[\\da-f]{2}", De = "(?![0]{32})[\\da-f]{32}", Xe = "(?![0]{16})[\\da-f]{16}", Ge = "[\\da-f]{2}", we = new RegExp("^\\s?(" + be + ")-(" + De + ")-(" + Xe + ")-(" + Ge + ")(-.*)?\\s?$");
function sr(r) {
var e = we.exec(r);
return !e || e[1] === "00" && e[5] ? null : {
traceId: e[2],
spanId: e[3],
traceFlags: parseInt(e[4], 16)
};
}
var Ve = (
/** @class */
(function() {
function r() {
}
return r.prototype.inject = function(e, t, n) {
var a = N.getSpanContext(e);
if (!(!a || G(e) || !k(a))) {
var i = Be + "-" + a.traceId + "-" + a.spanId + "-0" + Number(a.traceFlags || M.NONE).toString(16);
n.set(t, L, i), a.traceState && n.set(t, A, a.traceState.serialize());
}
}, r.prototype.extract = function(e, t, n) {
var a = n.get(t, L);
if (!a)
return e;
var i = Array.isArray(a) ? a[0] : a;
if (typeof i != "string")
return e;
var o = sr(i);
if (!o)
return e;
o.isRemote = !0;
var _ = n.get(t, A);
if (_) {
var E = Array.isArray(_) ? _.join(",") : _;
o.traceState = new fr(typeof E == "string" ? E : void 0);
}
return N.setSpanContext(e, o);
}, r.prototype.fields = function() {
return [L, A];
}, r;
})()
), H = wr("OpenTelemetry SDK Context Key RPC_METADATA"), b;
(function(r) {
r.HTTP = "http";
})(b || (b = {}));
function je(r, e) {
return r.setValue(H, e);
}
function He(r) {
return r.deleteValue(H);
}
function xe(r) {
return r.getValue(H);
}
var D = (
/** @class */
(function() {
function r() {
}
return r.prototype.shouldSample = function() {
return {
decision: l.NOT_RECORD
};
}, r.prototype.toString = function() {
return "AlwaysOffSampler";
}, r;
})()
), P = (
/** @class */
(function() {
function r() {
}
return r.prototype.shouldSample = function() {
return {
decision: l.RECORD_AND_SAMPLED
};
}, r.prototype.toString = function() {
return "AlwaysOnSampler";
}, r;
})()
), Fe = (
/** @class */
(function() {
function r(e) {
var t, n, a, i;
this._root = e.root, this._root || (Er(new Error("ParentBasedSampler must have a root sampler configured")), this._root = new P()), this._remoteParentSampled = (t = e.remoteParentSampled) !== null && t !== void 0 ? t : new P(), this._remoteParentNotSampled = (n = e.remoteParentNotSampled) !== null && n !== void 0 ? n : new D(), this._localParentSampled = (a = e.localParentSampled) !== null && a !== void 0 ? a : new P(), this._localParentNotSampled = (i = e.localParentNotSampled) !== null && i !== void 0 ? i : new D();
}
return r.prototype.shouldSample = function(e, t, n, a, i, o) {
var _ = N.getSpanContext(e);
return !_ || !k(_) ? this._root.shouldSample(e, t, n, a, i, o) : _.isRemote ? _.traceFlags & M.SAMPLED ? this._remoteParentSampled.shouldSample(e, t, n, a, i, o) : this._remoteParentNotSampled.shouldSample(e, t, n, a, i, o) : _.traceFlags & M.SAMPLED ? this._localParentSampled.shouldSample(e, t, n, a, i, o) : this._localParentNotSampled.shouldSample(e, t, n, a, i, o);
}, r.prototype.toString = function() {
return "ParentBased{root=" + this._root.toString() + ", remoteParentSampled=" + this._remoteParentSampled.toString() + ", remoteParentNotSampled=" + this._remoteParentNotSampled.toString() + ", localParentSampled=" + this._localParentSampled.toString() + ", localParentNotSampled=" + this._localParentNotSampled.toString() + "}";
}, r;
})()
), Ke = (
/** @class */
(function() {
function r(e) {
e === void 0 && (e = 0), this._ratio = e, this._ratio = this._normalize(e), this._upperBound = Math.floor(this._ratio * 4294967295);
}
return r.prototype.shouldSample = function(e, t) {
return {
decision: Vr(t) && this._accumulate(t) < this._upperBound ? l.RECORD_AND_SAMPLED : l.NOT_RECORD
};
}, r.prototype.toString = function() {
return "TraceIdRatioBased{" + this._ratio + "}";
}, r.prototype._normalize = function(e) {
return typeof e != "number" || isNaN(e) ? 0 : e >= 1 ? 1 : e <= 0 ? 0 : e;
}, r.prototype._accumulate = function(e) {
for (var t = 0, n = 0; n < e.length / 8; n++) {
var a = n * 8, i = parseInt(e.slice(a, a + 8), 16);
t = (t ^ i) >>> 0;
}
return t;
}, r;
})()
), Ye = "[object Object]", ze = "[object Null]", We = "[object Undefined]", Ze = Function.prototype, lr = Ze.toString, $e = lr.call(Object), Je = Qe(Object.getPrototypeOf, Object), Or = Object.prototype, cr = Or.hasOwnProperty, f = Symbol ? Symbol.toStringTag : void 0, Rr = Or.toString;
function Qe(r, e) {
return function(t) {
return r(e(t));
};
}
function $(r) {
if (!qe(r) || ke(r) !== Ye)
return !1;
var e = Je(r);
if (e === null)
return !0;
var t = cr.call(e, "constructor") && e.constructor;
return typeof t == "function" && t instanceof t && lr.call(t) === $e;
}
function qe(r) {
return r != null && typeof r == "object";
}
function ke(r) {
return r == null ? r === void 0 ? We : ze : f && f in Object(r) ? rt(r) : et(r);
}
function rt(r) {
var e = cr.call(r, f), t = r[f], n = !1;
try {
r[f] = void 0, n = !0;
} catch {
}
var a = Rr.call(r);
return n && (e ? r[f] = t : delete r[f]), a;
}
function et(r) {
return Rr.call(r);
}
var tt = 20;
function nt() {
for (var r = [], e = 0; e < arguments.length; e++)
r[e] = arguments[e];
for (var t = r.shift(), n = /* @__PURE__ */ new WeakMap(); r.length > 0; )
t = pr(t, r.shift(), 0, n);
return t;
}
function C(r) {
return y(r) ? r.slice() : r;
}
function pr(r, e, t, n) {
t === void 0 && (t = 0);
var a;
if (!(t > tt)) {
if (t++, S(r) || S(e) || dr(e))
a = C(e);
else if (y(r)) {
if (a = r.slice(), y(e))
for (var i = 0, o = e.length; i < o; i++)
a.push(C(e[i]));
else if (O(e))
for (var _ = Object.keys(e), i = 0, o = _.length; i < o; i++) {
var E = _[i];
a[E] = C(e[E]);
}
} else if (O(r))
if (O(e)) {
if (!at(r, e))
return e;
a = Object.assign({}, r);
for (var _ = Object.keys(e), i = 0, o = _.length; i < o; i++) {
var E = _[i], T = e[E];
if (S(T))
typeof T > "u" ? delete a[E] : a[E] = T;
else {
var s = a[E], h = T;
if (J(r, E, n) || J(e, E, n))
delete a[E];
else {
if (O(s) && O(h)) {
var x = n.get(s) || [], F = n.get(h) || [];
x.push({ obj: r, key: E }), F.push({ obj: e, key: E }), n.set(s, x), n.set(h, F);
}
a[E] = pr(a[E], T, t, n);
}
}
}
} else
a = e;
return a;
}
}
function J(r, e, t) {
for (var n = t.get(r[e]) || [], a = 0, i = n.length; a < i; a++) {
var o = n[a];
if (o.key === e && o.obj === r)
return !0;
}
return !1;
}
function y(r) {
return Array.isArray(r);
}
function dr(r) {
return typeof r == "function";
}
function O(r) {
return !S(r) && !y(r) && !dr(r) && typeof r == "object";
}
function S(r) {
return typeof r == "string" || typeof r == "number" || typeof r == "boolean" || typeof r > "u" || r instanceof Date || r instanceof RegExp || r === null;
}
function at(r, e) {
return !(!$(r) || !$(e));
}
var it = /* @__PURE__ */ (function() {
var r = function(e, t) {
return r = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n, a) {
n.__proto__ = a;
} || function(n, a) {
for (var i in a) Object.prototype.hasOwnProperty.call(a, i) && (n[i] = a[i]);
}, r(e, t);
};
return function(e, t) {
if (typeof t != "function" && t !== null)
throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
r(e, t);
function n() {
this.constructor = e;
}
e.prototype = t === null ? Object.create(t) : (n.prototype = t.prototype, new n());
};
})(), Lr = (
/** @class */
(function(r) {
it(e, r);
function e(t) {
var n = r.call(this, t) || this;
return Object.setPrototypeOf(n, e.prototype), n;
}
return e;
})(Error)
);
function ot(r, e) {
var t, n = new Promise(function(i, o) {
t = setTimeout(function() {
o(new Lr("Operation timed out."));
}, e);
});
return Promise.race([r, n]).then(function(a) {
return clearTimeout(t), a;
}, function(a) {
throw clearTimeout(t), a;
});
}
function _t(r) {
return typeof r == "function" && typeof r.__original == "function" && typeof r.__unwrap == "function" && r.__wrapped === !0;
}
var Et = (
/** @class */
(function() {
function r() {
var e = this;
this._promise = new Promise(function(t, n) {
e._resolve = t, e._reject = n;
});
}
return Object.defineProperty(r.prototype, "promise", {
get: function() {
return this._promise;
},
enumerable: !1,
configurable: !0
}), r.prototype.resolve = function(e) {
this._resolve(e);
}, r.prototype.reject = function(e) {
this._reject(e);
}, r;
})()
), Tt = function(r, e) {
var t = typeof Symbol == "function" && r[Symbol.iterator];
if (!t) return r;
var n = t.call(r), a, i = [], o;
try {
for (; (e === void 0 || e-- > 0) && !(a = n.next()).done; ) i.push(a.value);
} catch (_) {
o = { error: _ };
} finally {
try {
a && !a.done && (t = n.return) && t.call(n);
} finally {
if (o) throw o.error;
}
}
return i;
}, ut = function(r, e, t) {
if (t || arguments.length === 2) for (var n = 0, a = e.length, i; n < a; n++)
(i || !(n in e)) && (i || (i = Array.prototype.slice.call(e, 0, n)), i[n] = e[n]);
return r.concat(i || Array.prototype.slice.call(e));
}, ft = (
/** @class */
(function() {
function r(e, t) {
this._callback = e, this._that = t, this._isCalled = !1, this._deferred = new Et();
}
return Object.defineProperty(r.prototype, "isCalled", {
get: function() {
return this._isCalled;
},
enumerable: !1,
configurable: !0
}), Object.defineProperty(r.prototype, "promise", {
get: function() {
return this._deferred.promise;
},
enumerable: !1,
configurable: !0
}), r.prototype.call = function() {
for (var e, t = this, n = [], a = 0; a < arguments.length; a++)
n[a] = arguments[a];
if (!this._isCalled) {
this._isCalled = !0;
try {
Promise.resolve((e = this._callback).call.apply(e, ut([this._that], Tt(n), !1))).then(function(i) {
return t._deferred.resolve(i);
}, function(i) {
return t._deferred.reject(i);
});
} catch (i) {
this._deferred.reject(i);
}
}
return this._deferred.promise;
}, r;
})()
);
function st(r, e) {
return new Promise(function(t) {
K.with(Q(K.active()), function() {
r.export(e, function(n) {
t(n);
});
});
});
}
var lt = {
getKeyPairs: er,
serializeKeyPairs: rr,
parseKeyPairsIntoRecord: Wr,
parsePairKeyValue: w
}, Ot = {
_export: st
};
const Pt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
AlwaysOffSampler: D,
AlwaysOnSampler: P,
AnchoredClock: $r,
BindOnceFuture: ft,
CompositePropagator: ve,
DEFAULT_ATTRIBUTE_COUNT_LIMIT: d,
DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT: p,
DEFAULT_ENVIRONMENT: V,
DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT: Tr,
DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT: ur,
get ExportResultCode() {
return Gr;
},
ParentBasedSampler: Fe,
get RPCType() {
return b;
},
RandomIdGenerator: Pe,
SDK_INFO: jr,
TRACE_PARENT_HEADER: L,
TRACE_STATE_HEADER: A,
TimeoutError: Lr,
TraceIdRatioBasedSampler: Ke,
TraceState: fr,
get TracesSamplerValues() {
return v;
},
VERSION: Hr,
W3CBaggagePropagator: Zr,
W3CTraceContextPropagator: Ve,
_globalThis: X,
addHrTimes: Pr,
baggageUtils: lt,
callWithTimeout: ot,
deleteRPCMetadata: He,
getEnv: Oe,
getEnvWithoutDefaults: ce,
getRPCMetadata: xe,
getTimeOrigin: Sr,
globalErrorHandler: Er,
hexToBase64: de,
hexToBinary: q,
hrTime: Ir,
hrTimeDuration: vr,
hrTimeToMicroseconds: yr,
hrTimeToMilliseconds: hr,
hrTimeToNanoseconds: gr,
hrTimeToTimeStamp: mr,
internal: Ot,
isAttributeKey: nr,
isAttributeValue: ar,
isTimeInput: Cr,
isTimeInputHrTime: Nr,
isTracingSuppressed: G,
isUrlIgnored: Mr,
isWrapped: _t,
loggingErrorHandler: or,
merge: nt,
millisToHrTime: Ur,
otperformance: Br,
parseEnvironment: j,
parseTraceParent: sr,
sanitizeAttributes: Qr,
setGlobalErrorHandler: ee,
setRPCMetadata: je,
suppressTracing: Q,
timeInputToHrTime: br,
unrefTimer: Se,
unsuppressTracing: Xr,
urlMatches: Dr
}, Symbol.toStringTag, { value: "Module" }));
export {
ft as B,
ve as C,
d as D,
l as S,
v as T,
Ve as W,
Oe as a,
ce as b,
p as c,
Zr as d,
Ot as e,
Pt as f,
Er as g,
ar as i,
nt as m,
Qr as s,
Se as u
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtIX57MDBtfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHogYXMgYmFnZ2FnZUVudHJ5TWV0YWRhdGFGcm9tU3RyaW5nLCBwIGFzIHByb3BhZ2F0aW9uLCBfIGFzIF9nbG9iYWxUaGlzLCBzIGFzIGFkZEhyVGltZXMsIGwgYXMgZ2V0VGltZU9yaWdpbiwgaiBhcyBoclRpbWUsIHEgYXMgaHJUaW1lRHVyYXRpb24sIHkgYXMgaHJUaW1lVG9NaWNyb3NlY29uZHMsIGRLIGFzIGhyVGltZVRvTWlsbGlzZWNvbmRzLCBoIGFzIGhyVGltZVRvTmFub3NlY29uZHMsIGRMIGFzIGhyVGltZVRvVGltZVN0YW1wLCBuIGFzIGlzVGltZUlucHV0LCByIGFzIGlzVGltZUlucHV0SHJUaW1lLCBpIGFzIGlzVXJsSWdub3JlZCwgbSBhcyBtaWxsaXNUb0hyVGltZSwgbyBhcyBvdHBlcmZvcm1hbmNlLCB0IGFzIHRpbWVJbnB1dFRvSHJUaW1lLCB1IGFzIHVybE1hdGNoZXMgfSBmcm9tICcuL3VybC0hfnswMGR9fi5qcyc7XG5pbXBvcnQgeyBpIGFzIGlzVHJhY2luZ1N1cHByZXNzZWQsIHMgYXMgc3VwcHJlc3NUcmFjaW5nLCB1IGFzIHVuc3VwcHJlc3NUcmFjaW5nIH0gZnJvbSAnLi9zdXBwcmVzcy10cmFjaW5nLSF+ezAwYX1+LmpzJztcbmltcG9ydCB7IGQgYXMgZGlhZyB9IGZyb20gJy4vZGlhZy1hcGktIX57MDA4fX4uanMnO1xuaW1wb3J0IHsgaCBhcyBoZXhUb0JpbmFyeSwgRSBhcyBFeHBvcnRSZXN1bHRDb2RlIH0gZnJvbSAnLi9FeHBvcnRSZXN1bHQtIX57MDBpfX4uanMnO1xuaW1wb3J0IHsgZiBhcyBEaWFnTG9nTGV2ZWwsIHQgYXMgdHJhY2UsIGkgYXMgaXNTcGFuQ29udGV4dFZhbGlkLCBUIGFzIFRyYWNlRmxhZ3MsIGMgYXMgY3JlYXRlQ29udGV4dEtleSwgYiBhcyBpc1ZhbGlkVHJhY2VJZCwgYSBhcyBjb250ZXh0IH0gZnJvbSAnLi9pbmRleC0hfnswMDl9fi5qcyc7XG5pbXBvcnQgeyBhIGFzIFNES19JTkZPLCBibSBhcyBWRVJTSU9OJDEgfSBmcm9tICcuL3Nkay1pbmZvLSF+ezAwaH1+LmpzJztcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIHRoZSBvbmUgZGVjbGFyZWQgaW4gQG9wZW50ZWxlbWV0cnkvc2RrLXRyYWNlLWJhc2UgaW5zdGVhZC5cbiAqIEEgc2FtcGxpbmcgZGVjaXNpb24gdGhhdCBkZXRlcm1pbmVzIGhvdyBhIHtAbGluayBTcGFufSB3aWxsIGJlIHJlY29yZGVkXG4gKiBhbmQgY29sbGVjdGVkLlxuICovXG52YXIgU2FtcGxpbmdEZWNpc2lvbjtcbihmdW5jdGlvbiAoU2FtcGxpbmdEZWNpc2lvbikge1xuICAgIC8qKlxuICAgICAqIGBTcGFuLmlzUmVjb3JkaW5nKCkgPT09IGZhbHNlYCwgc3BhbiB3aWxsIG5vdCBiZSByZWNvcmRlZCBhbmQgYWxsIGV2ZW50c1xuICAgICAqIGFuZCBhdHRyaWJ1dGVzIHdpbGwgYmUgZHJvcHBlZC5cbiAgICAgKi9cbiAgICBTYW1wbGluZ0RlY2lzaW9uW1NhbXBsaW5nRGVjaXNpb25bXCJOT1RfUkVDT1JEXCJdID0gMF0gPSBcIk5PVF9SRUNPUkRcIjtcbiAgICAvKipcbiAgICAgKiBgU3Bhbi5pc1JlY29yZGluZygpID09PSB0cnVlYCwgYnV0IGBTYW1wbGVkYCBmbGFnIGluIHtAbGluayBUcmFjZUZsYWdzfVxuICAgICAqIE1VU1QgTk9UIGJlIHNldC5cbiAgICAgKi9cbiAgICBTYW1wbGluZ0RlY2lzaW9uW1NhbXBsaW5nRGVjaXNpb25bXCJSRUNPUkRcIl0gPSAxXSA9IFwiUkVDT1JEXCI7XG4gICAgLyoqXG4gICAgICogYFNwYW4uaXNSZWNvcmRpbmcoKSA9PT0gdHJ1ZWAgQU5EIGBTYW1wbGVkYCBmbGFnIGluIHtAbGluayBUcmFjZUZsYWdzfVxuICAgICAqIE1VU1QgYmUgc2V0LlxuICAgICAqL1xuICAgIFNhbXBsaW5nRGVjaXNpb25bU2FtcGxpbmdEZWNpc2lvbltcIlJFQ09SRF9BTkRfU0FNUExFRFwiXSA9IDJdID0gXCJSRUNPUkRfQU5EX1NBTVBMRURcIjtcbn0pKFNhbXBsaW5nRGVjaXNpb24gfHwgKFNhbXBsaW5nRGVjaXNpb24gPSB7fSkpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIEJBR0dBR0VfS0VZX1BBSVJfU0VQQVJBVE9SID0gJz0nO1xudmFyIEJBR0dBR0VfUFJPUEVSVElFU19TRVBBUkFUT1IgPSAnOyc7XG52YXIgQkFHR0FHRV9JVEVNU19TRVBBUkFUT1IgPSAnLCc7XG4vLyBOYW1lIG9mIHRoZSBodHRwIGhlYWRlciB1c2VkIHRvIHByb3BhZ2F0ZSB0aGUgYmFnZ2FnZVxudmFyIEJBR0dBR0VfSEVBREVSID0gJ2JhZ2dhZ2UnO1xuLy8gTWF4aW11bSBudW1iZXIgb2YgbmFtZS12YWx1ZSBwYWlycyBhbGxvd2VkIGJ5IHczYyBzcGVjXG52YXIgQkFHR0FHRV9NQVhfTkFNRV9WQUxVRV9QQUlSUyA9IDE4MDtcbi8vIE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHBlciBhIHNpbmdsZSBuYW1lLXZhbHVlIHBhaXIgYWxsb3dlZCBieSB3M2Mgc3BlY1xudmFyIEJBR0dBR0VfTUFYX1BFUl9OQU1FX1ZBTFVFX1BBSVJTID0gNDA5Njtcbi8vIE1heGltdW0gdG90YWwgbGVuZ3RoIG9mIGFsbCBuYW1lLXZhbHVlIHBhaXJzIGFsbG93ZWQgYnkgdzNjIHNwZWNcbnZhciBCQUdHQUdFX01BWF9UT1RBTF9MRU5HVEggPSA4MTkyO1xuXG52YXIgX19yZWFkJDMgPSAodW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG5mdW5jdGlvbiBzZXJpYWxpemVLZXlQYWlycyhrZXlQYWlycykge1xuICAgIHJldHVybiBrZXlQYWlycy5yZWR1Y2UoZnVuY3Rpb24gKGhWYWx1ZSwgY3VycmVudCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBcIlwiICsgaFZhbHVlICsgKGhWYWx1ZSAhPT0gJycgPyBCQUdHQUdFX0lURU1TX1NFUEFSQVRPUiA6ICcnKSArIGN1cnJlbnQ7XG4gICAgICAgIHJldHVybiB2YWx1ZS5sZW5ndGggPiBCQUdHQUdFX01BWF9UT1RBTF9MRU5HVEggPyBoVmFsdWUgOiB2YWx1ZTtcbiAgICB9LCAnJyk7XG59XG5mdW5jdGlvbiBnZXRLZXlQYWlycyhiYWdnYWdlKSB7XG4gICAgcmV0dXJuIGJhZ2dhZ2UuZ2V0QWxsRW50cmllcygpLm1hcChmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIF9iID0gX19yZWFkJDMoX2EsIDIpLCBrZXkgPSBfYlswXSwgdmFsdWUgPSBfYlsxXTtcbiAgICAgICAgdmFyIGVudHJ5ID0gZW5jb2RlVVJJQ29tcG9uZW50KGtleSkgKyBcIj1cIiArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZS52YWx1ZSk7XG4gICAgICAgIC8vIGluY2x1ZGUgb3BhcXVlIG1ldGFkYXRhIGlmIHByb3ZpZGVkXG4gICAgICAgIC8vIE5PVEU6IHdlIGludGVudGlvbmFsbHkgZG9uJ3QgVVJJLWVuY29kZSB0aGUgbWV0YWRhdGEgLSB0aGF0IHJlc3BvbnNpYmlsaXR5IGZhbGxzIG9uIHRoZSBtZXRhZGF0YSBpbXBsZW1lbnRhdGlvblxuICAgICAgICBpZiAodmFsdWUubWV0YWRhdGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZW50cnkgKz0gQkFHR0FHRV9QUk9QRVJUSUVTX1NFUEFSQVRPUiArIHZhbHVlLm1ldGFkYXRhLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgIH0pO1xufVxuZnVuY3Rpb24gcGFyc2VQYWlyS2V5VmFsdWUoZW50cnkpIHtcbiAgICB2YXIgdmFsdWVQcm9wcyA9IGVudHJ5LnNwbGl0KEJBR0dBR0VfUFJPUEVSVElFU19TRVBBUkFUT1IpO1xuICAgIGlmICh2YWx1ZVByb3BzLmxlbmd0aCA8PSAwKVxuICAgICAgICByZXR1cm47XG4gICAgdmFyIGtleVBhaXJQYXJ0ID0gdmFsdWVQcm9wcy5zaGlmdCgpO1xuICAgIGlmICgha2V5UGFpclBhcnQpXG4gICAgICAgIHJldHVybjtcbiAgICB2YXIgc2VwYXJhdG9ySW5kZXggPSBrZXlQYWlyUGFydC5pbmRleE9mKEJBR0dBR0VfS0VZX1BBSVJfU0VQQVJBVE9SKTtcbiAgICBpZiAoc2VwYXJhdG9ySW5kZXggPD0gMClcbiAgICAgICAgcmV0dXJuO1xuICAgIHZhciBrZXkgPSBkZWNvZGVVUklDb21wb25lbnQoa2V5UGFpclBhcnQuc3Vic3RyaW5nKDAsIHNlcGFyYXRvckluZGV4KS50cmltKCkpO1xuICAgIHZhciB2YWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudChrZXlQYWlyUGFydC5zdWJzdHJpbmcoc2VwYXJhdG9ySW5kZXggKyAxKS50cmltKCkpO1xuICAgIHZhciBtZXRhZGF0YTtcbiAgICBpZiAodmFsdWVQcm9wcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIG1ldGFkYXRhID0gYmFnZ2FnZUVudHJ5TWV0YWRhdGFGcm9tU3RyaW5nKHZhbHVlUHJvcHMuam9pbihCQUdHQUdFX1BST1BFUlRJRVNfU0VQQVJBVE9SKSk7XG4gICAgfVxuICAgIHJldHVybiB7IGtleToga2V5LCB2YWx1ZTogdmFsdWUsIG1ldGFkYXRhOiBtZXRhZGF0YSB9O1xufVxuLyoqXG4gKiBQYXJzZSBhIHN0cmluZyBzZXJpYWxpemVkIGluIHRoZSBiYWdnYWdlIEhUVFAgRm9ybWF0ICh3aXRob3V0IG1ldGFkYXRhKTpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS93M2MvYmFnZ2FnZS9ibG9iL21hc3Rlci9iYWdnYWdlL0hUVFBfSEVBREVSX0ZPUk1BVC5tZFxuICovXG5mdW5jdGlvbiBwYXJzZUtleVBhaXJzSW50b1JlY29yZCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnIHx8IHZhbHVlLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAuc3BsaXQoQkFHR0FHRV9JVEVNU19TRVBBUkFUT1IpXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiBwYXJzZVBhaXJLZXlWYWx1ZShlbnRyeSk7XG4gICAgfSlcbiAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoa2V5UGFpcikgeyByZXR1cm4ga2V5UGFpciAhPT0gdW5kZWZpbmVkICYmIGtleVBhaXIudmFsdWUubGVuZ3RoID4gMDsgfSlcbiAgICAgICAgLnJlZHVjZShmdW5jdGlvbiAoaGVhZGVycywga2V5UGFpcikge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgICBoZWFkZXJzW2tleVBhaXIua2V5XSA9IGtleVBhaXIudmFsdWU7XG4gICAgICAgIHJldHVybiBoZWFkZXJzO1xuICAgIH0sIHt9KTtcbn1cblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogUHJvcGFnYXRlcyB7QGxpbmsgQmFnZ2FnZX0gdGhyb3VnaCBDb250ZXh0IGZvcm1hdCBwcm9wYWdhdGlvbi5cbiAqXG4gKiBCYXNlZCBvbiB0aGUgQmFnZ2FnZSBzcGVjaWZpY2F0aW9uOlxuICogaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2JhZ2dhZ2UvXG4gKi9cbnZhciBXM0NCYWdnYWdlUHJvcGFnYXRvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBXM0NCYWdnYWdlUHJvcGFnYXRvcigpIHtcbiAgICB9XG4gICAgVzNDQmFnZ2FnZVByb3BhZ2F0b3IucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBzZXR0ZXIpIHtcbiAgICAgICAgdmFyIGJhZ2dhZ2UgPSBwcm9wYWdhdGlvbi5nZXRCYWdnYWdlKGNvbnRleHQpO1xuICAgICAgICBpZiAoIWJhZ2dhZ2UgfHwgaXNUcmFjaW5nU3VwcHJlc3NlZChjb250ZXh0KSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdmFyIGtleVBhaXJzID0gZ2V0S2V5UGFpcnMoYmFnZ2FnZSlcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHBhaXIpIHtcbiAgICAgICAgICAgIHJldHVybiBwYWlyLmxlbmd0aCA8PSBCQUdHQUdFX01BWF9QRVJfTkFNRV9WQUxVRV9QQUlSUztcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5zbGljZSgwLCBCQUdHQUdFX01BWF9OQU1FX1ZBTFVFX1BBSVJTKTtcbiAgICAgICAgdmFyIGhlYWRlclZhbHVlID0gc2VyaWFsaXplS2V5UGFpcnMoa2V5UGFpcnMpO1xuICAgICAgICBpZiAoaGVhZGVyVmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2V0dGVyLnNldChjYXJyaWVyLCBCQUdHQUdFX0hFQURFUiwgaGVhZGVyVmFsdWUpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBXM0NCYWdnYWdlUHJvcGFnYXRvci5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uIChjb250ZXh0LCBjYXJyaWVyLCBnZXR0ZXIpIHtcbiAgICAgICAgdmFyIGhlYWRlclZhbHVlID0gZ2V0dGVyLmdldChjYXJyaWVyLCBCQUdHQUdFX0hFQURFUik7XG4gICAgICAgIHZhciBiYWdnYWdlU3RyaW5nID0gQXJyYXkuaXNBcnJheShoZWFkZXJWYWx1ZSlcbiAgICAgICAgICAgID8gaGVhZGVyVmFsdWUuam9pbihCQUdHQUdFX0lURU1TX1NFUEFSQVRPUilcbiAgICAgICAgICAgIDogaGVhZGVyVmFsdWU7XG4gICAgICAgIGlmICghYmFnZ2FnZVN0cmluZylcbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgICAgICB2YXIgYmFnZ2FnZSA9IHt9O1xuICAgICAgICBpZiAoYmFnZ2FnZVN0cmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBwYWlycyA9IGJhZ2dhZ2VTdHJpbmcuc3BsaXQoQkFHR0FHRV9JVEVNU19TRVBBUkFUT1IpO1xuICAgICAgICBwYWlycy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSkge1xuICAgICAgICAgICAgdmFyIGtleVBhaXIgPSBwYXJzZVBhaXJLZXlWYWx1ZShlbnRyeSk7XG4gICAgICAgICAgICBpZiAoa2V5UGFpcikge1xuICAgICAgICAgICAgICAgIHZhciBiYWdnYWdlRW50cnkgPSB7IHZhbHVlOiBrZXlQYWlyLnZhbHVlIH07XG4gICAgICAgICAgICAgICAgaWYgKGtleVBhaXIubWV0YWRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgYmFnZ2FnZUVudHJ5Lm1ldGFkYXRhID0ga2V5UGFpci5tZXRhZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYmFnZ2FnZVtrZXlQYWlyLmtleV0gPSBiYWdnYWdlRW50cnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoT2JqZWN0LmVudHJpZXMoYmFnZ2FnZSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udGV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcGFnYXRpb24uc2V0QmFnZ2FnZShjb250ZXh0LCBwcm9wYWdhdGlvbi5jcmVhdGVCYWdnYWdlKGJhZ2dhZ2UpKTtcbiAgICB9O1xuICAgIFczQ0JhZ2dhZ2VQcm9wYWdhdG9yLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbQkFHR0FHRV9IRUFERVJdO1xuICAgIH07XG4gICAgcmV0dXJuIFczQ0JhZ2dhZ2VQcm9wYWdhdG9yO1xufSgpKTtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQSB1dGlsaXR5IGZvciByZXR1cm5pbmcgd2FsbCB0aW1lcyBhbmNob3JlZCB0byBhIGdpdmVuIHBvaW50IGluIHRpbWUuIFdhbGwgdGltZSBtZWFzdXJlbWVudHMgd2lsbFxuICogbm90IGJlIHRha2VuIGZyb20gdGhlIHN5c3RlbSwgYnV0IGluc3RlYWQgYXJlIGNvbXB1dGVkIGJ5IGFkZGluZyBhIG1vbm90b25pYyBjbG9jayB0aW1lXG4gKiB0byB0aGUgYW5jaG9yIHBvaW50LlxuICpcbiAqIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgdGhlIHN5c3RlbSB0aW1lIGNhbiBjaGFuZ2UgYW5kIHJlc3VsdCBpbiB1bmV4cGVjdGVkIHNpdHVhdGlvbnMgbGlrZVxuICogc3BhbnMgZW5kaW5nIGJlZm9yZSB0aGV5IGFyZSBzdGFydGVkLiBDcmVhdGluZyBhbiBhbmNob3JlZCBjbG9jayBmb3IgZWFjaCBsb2NhbCByb290IHNwYW5cbiAqIGVuc3VyZXMgdGhhdCBzcGFuIHRpbWluZ3MgYW5kIGR1cmF0aW9ucyBhcmUgYWNjdXJhdGUgd2hpbGUgcHJldmVudGluZyBzcGFuIHRpbWVzIGZyb20gZHJpZnRpbmdcbiAqIHRvbyBmYXIgZnJvbSB0aGUgc3lzdGVtIGNsb2NrLlxuICpcbiAqIE9ubHkgY3JlYXRpbmcgYW4gYW5jaG9yZWQgY2xvY2sgb25jZSBwZXIgbG9jYWwgdHJhY2UgZW5zdXJlcyBzcGFuIHRpbWVzIGFyZSBjb3JyZWN0IHJlbGF0aXZlXG4gKiB0byBlYWNoIG90aGVyLiBGb3IgZXhhbXBsZSwgYSBjaGlsZCBzcGFuIHdpbGwgbmV2ZXIgaGF2ZSBhIHN0YXJ0IHRpbWUgYmVmb3JlIGl0cyBwYXJlbnQgZXZlblxuICogaWYgdGhlIHN5c3RlbSBjbG9jayBpcyBjb3JyZWN0ZWQgZHVyaW5nIHRoZSBsb2NhbCB0cmFjZS5cbiAqXG4gKiBIZWF2aWx5IGluc3BpcmVkIGJ5IHRoZSBPVGVsIEphdmEgYW5jaG9yZWQgY2xvY2tcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWphdmEvYmxvYi9tYWluL3Nkay90cmFjZS9zcmMvbWFpbi9qYXZhL2lvL29wZW50ZWxlbWV0cnkvc2RrL3RyYWNlL0FuY2hvcmVkQ2xvY2suamF2YVxuICovXG52YXIgQW5jaG9yZWRDbG9jayA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgQW5jaG9yZWRDbG9jayBhbmNob3JlZCB0byB0aGUgY3VycmVudCB0aW1lIHJldHVybmVkIGJ5IHN5c3RlbUNsb2NrLlxuICAgICAqXG4gICAgICogQHBhcmFtIHN5c3RlbUNsb2NrIHNob3VsZCBiZSBhIGNsb2NrIHRoYXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZSBKYW51YXJ5IDEgMTk3MCBzdWNoIGFzIERhdGVcbiAgICAgKiBAcGFyYW0gbW9ub3RvbmljQ2xvY2sgc2hvdWxkIGJlIGEgY2xvY2sgdGhhdCBjb3VudHMgbWlsbGlzZWNvbmRzIG1vbm90b25pY2FsbHkgc3VjaCBhcyB3aW5kb3cucGVyZm9ybWFuY2Ugb3IgcGVyZl9ob29rcy5wZXJmb3JtYW5jZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIEFuY2hvcmVkQ2xvY2soc3lzdGVtQ2xvY2ssIG1vbm90b25pY0Nsb2NrKSB7XG4gICAgICAgIHRoaXMuX21vbm90b25pY0Nsb2NrID0gbW9ub3RvbmljQ2xvY2s7XG4gICAgICAgIHRoaXMuX2Vwb2NoTWlsbGlzID0gc3lzdGVtQ2xvY2subm93KCk7XG4gICAgICAgIHRoaXMuX3BlcmZvcm1hbmNlTWlsbGlzID0gbW9ub3RvbmljQ2xvY2subm93KCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgdGltZSBieSBhZGRpbmcgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgdGhlXG4gICAgICogQW5jaG9yZWRDbG9jayB3YXMgY3JlYXRlZCB0byB0aGUgY3JlYXRpb24gZXBvY2ggdGltZVxuICAgICAqL1xuICAgIEFuY2hvcmVkQ2xvY2sucHJvdG90eXBlLm5vdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGRlbHRhID0gdGhpcy5fbW9ub3RvbmljQ2xvY2subm93KCkgLSB0aGlzLl9wZXJmb3JtYW5jZU1pbGxpcztcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Vwb2NoTWlsbGlzICsgZGVsdGE7XG4gICAgfTtcbiAgICByZXR1cm4gQW5jaG9yZWRDbG9jaztcbn0oKSk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX192YWx1ZXMkMSA9ICh1bmRlZmluZWQgJiYgdW5kZWZpbmVkLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG52YXIgX19yZWFkJDIgPSAodW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG5mdW5jdGlvbiBzYW5pdGl6ZUF0dHJpYnV0ZXMoYXR0cmlidXRlcykge1xuICAgIHZhciBlXzEsIF9hO1xuICAgIHZhciBvdXQgPSB7fTtcbiAgICBpZiAodHlwZW9mIGF0dHJpYnV0ZXMgIT09ICdvYmplY3QnIHx8IGF0dHJpYnV0ZXMgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzJDEoT2JqZWN0LmVudHJpZXMoYXR0cmlidXRlcykpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICB2YXIgX2QgPSBfX3JlYWQkMihfYy52YWx1ZSwgMiksIGtleSA9IF9kWzBdLCB2YWwgPSBfZFsxXTtcbiAgICAgICAgICAgIGlmICghaXNBdHRyaWJ1dGVLZXkoa2V5KSkge1xuICAgICAgICAgICAgICAgIGRpYWcud2FybihcIkludmFsaWQgYXR0cmlidXRlIGtleTogXCIgKyBrZXkpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc0F0dHJpYnV0ZVZhbHVlKHZhbCkpIHtcbiAgICAgICAgICAgICAgICBkaWFnLndhcm4oXCJJbnZhbGlkIGF0dHJpYnV0ZSB2YWx1ZSBzZXQgZm9yIGtleTogXCIgKyBrZXkpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgICAgICAgICAgICAgIG91dFtrZXldID0gdmFsLnNsaWNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBvdXRba2V5XSA9IHZhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIGlzQXR0cmlidXRlS2V5KGtleSkge1xuICAgIHJldHVybiB0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyAmJiBrZXkubGVuZ3RoID4gMDtcbn1cbmZ1bmN0aW9uIGlzQXR0cmlidXRlVmFsdWUodmFsKSB7XG4gICAgaWYgKHZhbCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH