@getopenpay/openpay-js 0.5.13 → 0.5.15
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-B-YLKMaU.js → ExportResult-BacsqwKA.js} +1 -1
- package/dist/{Resource-BZeevyoh.js → Resource-Ds5bbQ3b.js} +4 -4
- package/dist/SimpleSpanProcessor-0bSccE1S.js +910 -0
- package/dist/_commonjsHelpers-CdLE1o9f.js +30 -0
- package/dist/detect-resources-UwRkF4Xd.js +862 -0
- package/dist/{diag-api-CHLb_Weo.js → diag-api-CMlZXyyv.js} +2 -2
- package/dist/index-1jECpTsg.js +147 -0
- package/dist/index-BZEpD-f0.js +6718 -0
- package/dist/index-BhZy-TW3.js +430 -0
- package/dist/index-BmKZeOoc.js +1619 -0
- package/dist/index-CDdbDQxQ.js +6 -0
- package/dist/index-CWTkU3J-.js +18 -0
- package/dist/index-DFO-DCsT.js +127 -0
- package/dist/index-DsxDp11a.js +28 -0
- package/dist/index-JNJd_YS1.js +1012 -0
- package/dist/index-j7i6AeZa.js +7005 -0
- package/dist/index.d.ts +29 -4
- package/dist/index.es.js +2 -2
- package/dist/index.umd.js +45 -45
- package/dist/lifecycle-D1BdEbZs.js +119 -0
- package/dist/{metrics-api-ClKmMX3Y.js → metrics-api-C9pRFfr-.js} +2 -2
- package/dist/sdk-info-ChuKu8zW.js +285 -0
- package/dist/suppress-tracing-B94rObkn.js +17 -0
- package/dist/url-CdPstDG9.js +798 -0
- package/dist/utils--M6ihaNw.js +101 -0
- package/dist/utils-De78ey-v.js +12 -0
- package/dist/utils-VJ-0MC7c.js +270 -0
- package/package.json +4 -4
- package/dist/SimpleSpanProcessor-CwJD-GjM.js +0 -957
- package/dist/_commonjsHelpers-f76XedMs.js +0 -25
- package/dist/detect-resources-BatabDmW.js +0 -854
- package/dist/index-ByaN1AdQ.js +0 -6685
- package/dist/index-CU4AI3HW.js +0 -52
- package/dist/index-Cb34s3AM.js +0 -1599
- package/dist/index-CmtkHZgE.js +0 -330
- package/dist/index-CtZ-xuHu.js +0 -7041
- package/dist/index-D5OCmVN-.js +0 -19
- package/dist/index-DLJd6nUV.js +0 -150
- package/dist/index-DjekHBls.js +0 -431
- package/dist/index-DoKHV9rR.js +0 -130
- package/dist/index-_ZTp3kCj.js +0 -830
- package/dist/lifecycle-BjQ-7GLm.js +0 -119
- package/dist/sdk-info-DYuuxEVK.js +0 -484
- package/dist/url-BAeEv8aD.js +0 -797
- package/dist/utils--qqdHZ_b.js +0 -142
- package/dist/utils-Bf8wDuNo.js +0 -381
- package/dist/utils-CX5YT7yI.js +0 -14
|
@@ -0,0 +1,798 @@
|
|
|
1
|
+
import { D as P, c as O_, C as s_, r as P_, u as R_, g as D_ } from "./index-j7i6AeZa.js";
|
|
2
|
+
import { c as A } from "./utils-De78ey-v.js";
|
|
3
|
+
var C_ = function(S, E) {
|
|
4
|
+
var T = typeof Symbol == "function" && S[Symbol.iterator];
|
|
5
|
+
if (!T) return S;
|
|
6
|
+
var a = T.call(S), _, r = [], N;
|
|
7
|
+
try {
|
|
8
|
+
for (; (E === void 0 || E-- > 0) && !(_ = a.next()).done; ) r.push(_.value);
|
|
9
|
+
} catch (M) {
|
|
10
|
+
N = { error: M };
|
|
11
|
+
} finally {
|
|
12
|
+
try {
|
|
13
|
+
_ && !_.done && (T = a.return) && T.call(a);
|
|
14
|
+
} finally {
|
|
15
|
+
if (N) throw N.error;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return r;
|
|
19
|
+
}, v_ = function(S) {
|
|
20
|
+
var E = typeof Symbol == "function" && Symbol.iterator, T = E && S[E], a = 0;
|
|
21
|
+
if (T) return T.call(S);
|
|
22
|
+
if (S && typeof S.length == "number") return {
|
|
23
|
+
next: function() {
|
|
24
|
+
return S && a >= S.length && (S = void 0), { value: S && S[a++], done: !S };
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
throw new TypeError(E ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
28
|
+
}, t_ = (
|
|
29
|
+
/** @class */
|
|
30
|
+
function() {
|
|
31
|
+
function S(E) {
|
|
32
|
+
this._entries = E ? new Map(E) : /* @__PURE__ */ new Map();
|
|
33
|
+
}
|
|
34
|
+
return S.prototype.getEntry = function(E) {
|
|
35
|
+
var T = this._entries.get(E);
|
|
36
|
+
if (T)
|
|
37
|
+
return Object.assign({}, T);
|
|
38
|
+
}, S.prototype.getAllEntries = function() {
|
|
39
|
+
return Array.from(this._entries.entries()).map(function(E) {
|
|
40
|
+
var T = C_(E, 2), a = T[0], _ = T[1];
|
|
41
|
+
return [a, _];
|
|
42
|
+
});
|
|
43
|
+
}, S.prototype.setEntry = function(E, T) {
|
|
44
|
+
var a = new S(this._entries);
|
|
45
|
+
return a._entries.set(E, T), a;
|
|
46
|
+
}, S.prototype.removeEntry = function(E) {
|
|
47
|
+
var T = new S(this._entries);
|
|
48
|
+
return T._entries.delete(E), T;
|
|
49
|
+
}, S.prototype.removeEntries = function() {
|
|
50
|
+
for (var E, T, a = [], _ = 0; _ < arguments.length; _++)
|
|
51
|
+
a[_] = arguments[_];
|
|
52
|
+
var r = new S(this._entries);
|
|
53
|
+
try {
|
|
54
|
+
for (var N = v_(a), M = N.next(); !M.done; M = N.next()) {
|
|
55
|
+
var M_ = M.value;
|
|
56
|
+
r._entries.delete(M_);
|
|
57
|
+
}
|
|
58
|
+
} catch (e_) {
|
|
59
|
+
E = { error: e_ };
|
|
60
|
+
} finally {
|
|
61
|
+
try {
|
|
62
|
+
M && !M.done && (T = N.return) && T.call(N);
|
|
63
|
+
} finally {
|
|
64
|
+
if (E) throw E.error;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return r;
|
|
68
|
+
}, S.prototype.clear = function() {
|
|
69
|
+
return new S();
|
|
70
|
+
}, S;
|
|
71
|
+
}()
|
|
72
|
+
), n_ = Symbol("BaggageEntryMetadata"), I_ = P.instance();
|
|
73
|
+
function L_(S) {
|
|
74
|
+
return S === void 0 && (S = {}), new t_(new Map(Object.entries(S)));
|
|
75
|
+
}
|
|
76
|
+
function f_(S) {
|
|
77
|
+
return typeof S != "string" && (I_.error("Cannot create baggage metadata from unknown type: " + typeof S), S = ""), {
|
|
78
|
+
__TYPE__: n_,
|
|
79
|
+
toString: function() {
|
|
80
|
+
return S;
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
var U_ = {
|
|
85
|
+
get: function(S, E) {
|
|
86
|
+
if (S != null)
|
|
87
|
+
return S[E];
|
|
88
|
+
},
|
|
89
|
+
keys: function(S) {
|
|
90
|
+
return S == null ? [] : Object.keys(S);
|
|
91
|
+
}
|
|
92
|
+
}, o_ = {
|
|
93
|
+
set: function(S, E, T) {
|
|
94
|
+
S != null && (S[E] = T);
|
|
95
|
+
}
|
|
96
|
+
}, V_ = (
|
|
97
|
+
/** @class */
|
|
98
|
+
function() {
|
|
99
|
+
function S() {
|
|
100
|
+
}
|
|
101
|
+
return S.prototype.inject = function(E, T) {
|
|
102
|
+
}, S.prototype.extract = function(E, T) {
|
|
103
|
+
return E;
|
|
104
|
+
}, S.prototype.fields = function() {
|
|
105
|
+
return [];
|
|
106
|
+
}, S;
|
|
107
|
+
}()
|
|
108
|
+
), D = O_("OpenTelemetry Baggage Key");
|
|
109
|
+
function C(S) {
|
|
110
|
+
return S.getValue(D) || void 0;
|
|
111
|
+
}
|
|
112
|
+
function i_() {
|
|
113
|
+
return C(s_.getInstance().active());
|
|
114
|
+
}
|
|
115
|
+
function B_(S, E) {
|
|
116
|
+
return S.setValue(D, E);
|
|
117
|
+
}
|
|
118
|
+
function c_(S) {
|
|
119
|
+
return S.deleteValue(D);
|
|
120
|
+
}
|
|
121
|
+
var s = "propagation", d_ = new V_(), Y_ = (
|
|
122
|
+
/** @class */
|
|
123
|
+
function() {
|
|
124
|
+
function S() {
|
|
125
|
+
this.createBaggage = L_, this.getBaggage = C, this.getActiveBaggage = i_, this.setBaggage = B_, this.deleteBaggage = c_;
|
|
126
|
+
}
|
|
127
|
+
return S.getInstance = function() {
|
|
128
|
+
return this._instance || (this._instance = new S()), this._instance;
|
|
129
|
+
}, S.prototype.setGlobalPropagator = function(E) {
|
|
130
|
+
return P_(s, E, P.instance());
|
|
131
|
+
}, S.prototype.inject = function(E, T, a) {
|
|
132
|
+
return a === void 0 && (a = o_), this._getGlobalPropagator().inject(E, T, a);
|
|
133
|
+
}, S.prototype.extract = function(E, T, a) {
|
|
134
|
+
return a === void 0 && (a = U_), this._getGlobalPropagator().extract(E, T, a);
|
|
135
|
+
}, S.prototype.fields = function() {
|
|
136
|
+
return this._getGlobalPropagator().fields();
|
|
137
|
+
}, S.prototype.disable = function() {
|
|
138
|
+
R_(s, P.instance());
|
|
139
|
+
}, S.prototype._getGlobalPropagator = function() {
|
|
140
|
+
return D_(s) || d_;
|
|
141
|
+
}, S;
|
|
142
|
+
}()
|
|
143
|
+
), y_ = Y_.getInstance(), h_ = typeof globalThis == "object" ? globalThis : typeof self == "object" ? self : typeof window == "object" ? window : typeof global == "object" ? global : {}, R = performance, v = "aws.lambda.invoked_arn", t = "db.system", n = "db.connection_string", I = "db.user", L = "db.jdbc.driver_classname", U = "db.name", o = "db.statement", V = "db.operation", i = "db.mssql.instance_name", B = "db.cassandra.keyspace", c = "db.cassandra.page_size", d = "db.cassandra.consistency_level", Y = "db.cassandra.table", G = "db.cassandra.idempotence", u = "db.cassandra.speculative_execution_count", p = "db.cassandra.coordinator.id", b = "db.cassandra.coordinator.dc", H = "db.hbase.namespace", g = "db.redis.database_index", l = "db.mongodb.collection", m = "db.sql.table", f = "exception.type", y = "exception.message", h = "exception.stacktrace", F = "exception.escaped", K = "faas.trigger", W = "faas.execution", w = "faas.document.collection", X = "faas.document.operation", Q = "faas.document.time", x = "faas.document.name", k = "faas.time", j = "faas.cron", q = "faas.coldstart", Z = "faas.invoked_name", J = "faas.invoked_provider", z = "faas.invoked_region", $ = "net.transport", SS = "net.peer.ip", ES = "net.peer.port", TS = "net.peer.name", aS = "net.host.ip", _S = "net.host.port", AS = "net.host.name", rS = "net.host.connection.type", NS = "net.host.connection.subtype", MS = "net.host.carrier.name", eS = "net.host.carrier.mcc", OS = "net.host.carrier.mnc", sS = "net.host.carrier.icc", PS = "peer.service", RS = "enduser.id", DS = "enduser.role", CS = "enduser.scope", vS = "thread.id", tS = "thread.name", nS = "code.function", IS = "code.namespace", LS = "code.filepath", US = "code.lineno", oS = "http.method", VS = "http.url", iS = "http.target", BS = "http.host", cS = "http.scheme", dS = "http.status_code", YS = "http.flavor", GS = "http.user_agent", uS = "http.request_content_length", pS = "http.request_content_length_uncompressed", bS = "http.response_content_length", HS = "http.response_content_length_uncompressed", gS = "http.server_name", lS = "http.route", mS = "http.client_ip", fS = "aws.dynamodb.table_names", yS = "aws.dynamodb.consumed_capacity", hS = "aws.dynamodb.item_collection_metrics", FS = "aws.dynamodb.provisioned_read_capacity", KS = "aws.dynamodb.provisioned_write_capacity", WS = "aws.dynamodb.consistent_read", wS = "aws.dynamodb.projection", XS = "aws.dynamodb.limit", QS = "aws.dynamodb.attributes_to_get", xS = "aws.dynamodb.index_name", kS = "aws.dynamodb.select", jS = "aws.dynamodb.global_secondary_indexes", qS = "aws.dynamodb.local_secondary_indexes", ZS = "aws.dynamodb.exclusive_start_table", JS = "aws.dynamodb.table_count", zS = "aws.dynamodb.scan_forward", $S = "aws.dynamodb.segment", SE = "aws.dynamodb.total_segments", EE = "aws.dynamodb.count", TE = "aws.dynamodb.scanned_count", aE = "aws.dynamodb.attribute_definitions", _E = "aws.dynamodb.global_secondary_index_updates", AE = "messaging.system", rE = "messaging.destination", NE = "messaging.destination_kind", ME = "messaging.temp_destination", eE = "messaging.protocol", OE = "messaging.protocol_version", sE = "messaging.url", PE = "messaging.message_id", RE = "messaging.conversation_id", DE = "messaging.message_payload_size_bytes", CE = "messaging.message_payload_compressed_size_bytes", vE = "messaging.operation", tE = "messaging.consumer_id", nE = "messaging.rabbitmq.routing_key", IE = "messaging.kafka.message_key", LE = "messaging.kafka.consumer_group", UE = "messaging.kafka.client_id", oE = "messaging.kafka.partition", VE = "messaging.kafka.tombstone", iE = "rpc.system", BE = "rpc.service", cE = "rpc.method", dE = "rpc.grpc.status_code", YE = "rpc.jsonrpc.version", GE = "rpc.jsonrpc.request_id", uE = "rpc.jsonrpc.error_code", pE = "rpc.jsonrpc.error_message", bE = "message.type", HE = "message.id", gE = "message.compressed_size", lE = "message.uncompressed_size", F_ = v, K_ = t, W_ = n, w_ = I, X_ = L, Q_ = U, x_ = o, k_ = V, j_ = i, q_ = B, Z_ = c, J_ = d, z_ = Y, $_ = G, SA = u, EA = p, TA = b, aA = H, _A = g, AA = l, rA = m, NA = f, MA = y, eA = h, OA = F, sA = K, PA = W, RA = w, DA = X, CA = Q, vA = x, tA = k, nA = j, IA = q, LA = Z, UA = J, oA = z, VA = $, iA = SS, BA = ES, cA = TS, dA = aS, YA = _S, GA = AS, uA = rS, pA = NS, bA = MS, HA = eS, gA = OS, lA = sS, mA = PS, fA = RS, yA = DS, hA = CS, FA = vS, KA = tS, WA = nS, wA = IS, XA = LS, QA = US, xA = oS, kA = VS, jA = iS, qA = BS, ZA = cS, JA = dS, zA = YS, $A = GS, Sr = uS, Er = pS, Tr = bS, ar = HS, _r = gS, Ar = lS, rr = mS, Nr = fS, Mr = yS, er = hS, Or = FS, sr = KS, Pr = WS, Rr = wS, Dr = XS, Cr = QS, vr = xS, tr = kS, nr = jS, Ir = qS, Lr = ZS, Ur = JS, or = zS, Vr = $S, ir = SE, Br = EE, cr = TE, dr = aE, Yr = _E, Gr = AE, ur = rE, pr = NE, br = ME, Hr = eE, gr = OE, lr = sE, mr = PE, fr = RE, yr = DE, hr = CE, Fr = vE, Kr = tE, Wr = nE, wr = IE, Xr = LE, Qr = UE, xr = oE, kr = VE, jr = iE, qr = BE, Zr = cE, Jr = dE, zr = YE, $r = GE, SN = uE, EN = pE, TN = bE, aN = HE, _N = gE, AN = lE, rN = /* @__PURE__ */ A([
|
|
144
|
+
v,
|
|
145
|
+
t,
|
|
146
|
+
n,
|
|
147
|
+
I,
|
|
148
|
+
L,
|
|
149
|
+
U,
|
|
150
|
+
o,
|
|
151
|
+
V,
|
|
152
|
+
i,
|
|
153
|
+
B,
|
|
154
|
+
c,
|
|
155
|
+
d,
|
|
156
|
+
Y,
|
|
157
|
+
G,
|
|
158
|
+
u,
|
|
159
|
+
p,
|
|
160
|
+
b,
|
|
161
|
+
H,
|
|
162
|
+
g,
|
|
163
|
+
l,
|
|
164
|
+
m,
|
|
165
|
+
f,
|
|
166
|
+
y,
|
|
167
|
+
h,
|
|
168
|
+
F,
|
|
169
|
+
K,
|
|
170
|
+
W,
|
|
171
|
+
w,
|
|
172
|
+
X,
|
|
173
|
+
Q,
|
|
174
|
+
x,
|
|
175
|
+
k,
|
|
176
|
+
j,
|
|
177
|
+
q,
|
|
178
|
+
Z,
|
|
179
|
+
J,
|
|
180
|
+
z,
|
|
181
|
+
$,
|
|
182
|
+
SS,
|
|
183
|
+
ES,
|
|
184
|
+
TS,
|
|
185
|
+
aS,
|
|
186
|
+
_S,
|
|
187
|
+
AS,
|
|
188
|
+
rS,
|
|
189
|
+
NS,
|
|
190
|
+
MS,
|
|
191
|
+
eS,
|
|
192
|
+
OS,
|
|
193
|
+
sS,
|
|
194
|
+
PS,
|
|
195
|
+
RS,
|
|
196
|
+
DS,
|
|
197
|
+
CS,
|
|
198
|
+
vS,
|
|
199
|
+
tS,
|
|
200
|
+
nS,
|
|
201
|
+
IS,
|
|
202
|
+
LS,
|
|
203
|
+
US,
|
|
204
|
+
oS,
|
|
205
|
+
VS,
|
|
206
|
+
iS,
|
|
207
|
+
BS,
|
|
208
|
+
cS,
|
|
209
|
+
dS,
|
|
210
|
+
YS,
|
|
211
|
+
GS,
|
|
212
|
+
uS,
|
|
213
|
+
pS,
|
|
214
|
+
bS,
|
|
215
|
+
HS,
|
|
216
|
+
gS,
|
|
217
|
+
lS,
|
|
218
|
+
mS,
|
|
219
|
+
fS,
|
|
220
|
+
yS,
|
|
221
|
+
hS,
|
|
222
|
+
FS,
|
|
223
|
+
KS,
|
|
224
|
+
WS,
|
|
225
|
+
wS,
|
|
226
|
+
XS,
|
|
227
|
+
QS,
|
|
228
|
+
xS,
|
|
229
|
+
kS,
|
|
230
|
+
jS,
|
|
231
|
+
qS,
|
|
232
|
+
ZS,
|
|
233
|
+
JS,
|
|
234
|
+
zS,
|
|
235
|
+
$S,
|
|
236
|
+
SE,
|
|
237
|
+
EE,
|
|
238
|
+
TE,
|
|
239
|
+
aE,
|
|
240
|
+
_E,
|
|
241
|
+
AE,
|
|
242
|
+
rE,
|
|
243
|
+
NE,
|
|
244
|
+
ME,
|
|
245
|
+
eE,
|
|
246
|
+
OE,
|
|
247
|
+
sE,
|
|
248
|
+
PE,
|
|
249
|
+
RE,
|
|
250
|
+
DE,
|
|
251
|
+
CE,
|
|
252
|
+
vE,
|
|
253
|
+
tE,
|
|
254
|
+
nE,
|
|
255
|
+
IE,
|
|
256
|
+
LE,
|
|
257
|
+
UE,
|
|
258
|
+
oE,
|
|
259
|
+
VE,
|
|
260
|
+
iE,
|
|
261
|
+
BE,
|
|
262
|
+
cE,
|
|
263
|
+
dE,
|
|
264
|
+
YE,
|
|
265
|
+
GE,
|
|
266
|
+
uE,
|
|
267
|
+
pE,
|
|
268
|
+
bE,
|
|
269
|
+
HE,
|
|
270
|
+
gE,
|
|
271
|
+
lE
|
|
272
|
+
]), mE = "other_sql", fE = "mssql", yE = "mysql", hE = "oracle", FE = "db2", KE = "postgresql", WE = "redshift", wE = "hive", XE = "cloudscape", QE = "hsqldb", xE = "progress", kE = "maxdb", jE = "hanadb", qE = "ingres", ZE = "firstsql", JE = "edb", zE = "cache", $E = "adabas", ST = "firebird", ET = "derby", TT = "filemaker", aT = "informix", _T = "instantdb", AT = "interbase", rT = "mariadb", NT = "netezza", MT = "pervasive", eT = "pointbase", OT = "sqlite", sT = "sybase", PT = "teradata", RT = "vertica", DT = "h2", CT = "coldfusion", vT = "cassandra", tT = "hbase", nT = "mongodb", IT = "redis", LT = "couchbase", UT = "couchdb", oT = "cosmosdb", VT = "dynamodb", iT = "neo4j", BT = "geode", cT = "elasticsearch", dT = "memcached", YT = "cockroachdb", NN = mE, MN = fE, eN = yE, ON = hE, sN = FE, PN = KE, RN = WE, DN = wE, CN = XE, vN = QE, tN = xE, nN = kE, IN = jE, LN = qE, UN = ZE, oN = JE, VN = zE, iN = $E, BN = ST, cN = ET, dN = TT, YN = aT, GN = _T, uN = AT, pN = rT, bN = NT, HN = MT, gN = eT, lN = OT, mN = sT, fN = PT, yN = RT, hN = DT, FN = CT, KN = vT, WN = tT, wN = nT, XN = IT, QN = LT, xN = UT, kN = oT, jN = VT, qN = iT, ZN = BT, JN = cT, zN = dT, $N = YT, SM = /* @__PURE__ */ A([
|
|
273
|
+
mE,
|
|
274
|
+
fE,
|
|
275
|
+
yE,
|
|
276
|
+
hE,
|
|
277
|
+
FE,
|
|
278
|
+
KE,
|
|
279
|
+
WE,
|
|
280
|
+
wE,
|
|
281
|
+
XE,
|
|
282
|
+
QE,
|
|
283
|
+
xE,
|
|
284
|
+
kE,
|
|
285
|
+
jE,
|
|
286
|
+
qE,
|
|
287
|
+
ZE,
|
|
288
|
+
JE,
|
|
289
|
+
zE,
|
|
290
|
+
$E,
|
|
291
|
+
ST,
|
|
292
|
+
ET,
|
|
293
|
+
TT,
|
|
294
|
+
aT,
|
|
295
|
+
_T,
|
|
296
|
+
AT,
|
|
297
|
+
rT,
|
|
298
|
+
NT,
|
|
299
|
+
MT,
|
|
300
|
+
eT,
|
|
301
|
+
OT,
|
|
302
|
+
sT,
|
|
303
|
+
PT,
|
|
304
|
+
RT,
|
|
305
|
+
DT,
|
|
306
|
+
CT,
|
|
307
|
+
vT,
|
|
308
|
+
tT,
|
|
309
|
+
nT,
|
|
310
|
+
IT,
|
|
311
|
+
LT,
|
|
312
|
+
UT,
|
|
313
|
+
oT,
|
|
314
|
+
VT,
|
|
315
|
+
iT,
|
|
316
|
+
BT,
|
|
317
|
+
cT,
|
|
318
|
+
dT,
|
|
319
|
+
YT
|
|
320
|
+
]), GT = "all", uT = "each_quorum", pT = "quorum", bT = "local_quorum", HT = "one", gT = "two", lT = "three", mT = "local_one", fT = "any", yT = "serial", hT = "local_serial", EM = GT, TM = uT, aM = pT, _M = bT, AM = HT, rM = gT, NM = lT, MM = mT, eM = fT, OM = yT, sM = hT, PM = /* @__PURE__ */ A([
|
|
321
|
+
GT,
|
|
322
|
+
uT,
|
|
323
|
+
pT,
|
|
324
|
+
bT,
|
|
325
|
+
HT,
|
|
326
|
+
gT,
|
|
327
|
+
lT,
|
|
328
|
+
mT,
|
|
329
|
+
fT,
|
|
330
|
+
yT,
|
|
331
|
+
hT
|
|
332
|
+
]), FT = "datasource", KT = "http", WT = "pubsub", wT = "timer", XT = "other", RM = FT, DM = KT, CM = WT, vM = wT, tM = XT, nM = /* @__PURE__ */ A([
|
|
333
|
+
FT,
|
|
334
|
+
KT,
|
|
335
|
+
WT,
|
|
336
|
+
wT,
|
|
337
|
+
XT
|
|
338
|
+
]), QT = "insert", xT = "edit", kT = "delete", IM = QT, LM = xT, UM = kT, oM = /* @__PURE__ */ A([
|
|
339
|
+
QT,
|
|
340
|
+
xT,
|
|
341
|
+
kT
|
|
342
|
+
]), jT = "alibaba_cloud", qT = "aws", ZT = "azure", JT = "gcp", VM = jT, iM = qT, BM = ZT, cM = JT, dM = /* @__PURE__ */ A([
|
|
343
|
+
jT,
|
|
344
|
+
qT,
|
|
345
|
+
ZT,
|
|
346
|
+
JT
|
|
347
|
+
]), zT = "ip_tcp", $T = "ip_udp", Sa = "ip", Ea = "unix", Ta = "pipe", aa = "inproc", _a = "other", YM = zT, GM = $T, uM = Sa, pM = Ea, bM = Ta, HM = aa, gM = _a, lM = /* @__PURE__ */ A([
|
|
348
|
+
zT,
|
|
349
|
+
$T,
|
|
350
|
+
Sa,
|
|
351
|
+
Ea,
|
|
352
|
+
Ta,
|
|
353
|
+
aa,
|
|
354
|
+
_a
|
|
355
|
+
]), Aa = "wifi", ra = "wired", Na = "cell", Ma = "unavailable", ea = "unknown", mM = Aa, fM = ra, yM = Na, hM = Ma, FM = ea, KM = /* @__PURE__ */ A([
|
|
356
|
+
Aa,
|
|
357
|
+
ra,
|
|
358
|
+
Na,
|
|
359
|
+
Ma,
|
|
360
|
+
ea
|
|
361
|
+
]), Oa = "gprs", sa = "edge", Pa = "umts", Ra = "cdma", Da = "evdo_0", Ca = "evdo_a", va = "cdma2000_1xrtt", ta = "hsdpa", na = "hsupa", Ia = "hspa", La = "iden", Ua = "evdo_b", oa = "lte", Va = "ehrpd", ia = "hspap", Ba = "gsm", ca = "td_scdma", da = "iwlan", Ya = "nr", Ga = "nrnsa", ua = "lte_ca", WM = Oa, wM = sa, XM = Pa, QM = Ra, xM = Da, kM = Ca, jM = va, qM = ta, ZM = na, JM = Ia, zM = La, $M = Ua, Se = oa, Ee = Va, Te = ia, ae = Ba, _e = ca, Ae = da, re = Ya, Ne = Ga, Me = ua, ee = /* @__PURE__ */ A([
|
|
362
|
+
Oa,
|
|
363
|
+
sa,
|
|
364
|
+
Pa,
|
|
365
|
+
Ra,
|
|
366
|
+
Da,
|
|
367
|
+
Ca,
|
|
368
|
+
va,
|
|
369
|
+
ta,
|
|
370
|
+
na,
|
|
371
|
+
Ia,
|
|
372
|
+
La,
|
|
373
|
+
Ua,
|
|
374
|
+
oa,
|
|
375
|
+
Va,
|
|
376
|
+
ia,
|
|
377
|
+
Ba,
|
|
378
|
+
ca,
|
|
379
|
+
da,
|
|
380
|
+
Ya,
|
|
381
|
+
Ga,
|
|
382
|
+
ua
|
|
383
|
+
]), pa = "1.0", ba = "1.1", Ha = "2.0", ga = "SPDY", la = "QUIC", Oe = pa, se = ba, Pe = Ha, Re = ga, De = la, Ce = {
|
|
384
|
+
HTTP_1_0: pa,
|
|
385
|
+
HTTP_1_1: ba,
|
|
386
|
+
HTTP_2_0: Ha,
|
|
387
|
+
SPDY: ga,
|
|
388
|
+
QUIC: la
|
|
389
|
+
}, ma = "queue", fa = "topic", ve = ma, te = fa, ne = /* @__PURE__ */ A([
|
|
390
|
+
ma,
|
|
391
|
+
fa
|
|
392
|
+
]), ya = "receive", ha = "process", Ie = ya, Le = ha, Ue = /* @__PURE__ */ A([
|
|
393
|
+
ya,
|
|
394
|
+
ha
|
|
395
|
+
]), Fa = 0, Ka = 1, Wa = 2, wa = 3, Xa = 4, Qa = 5, xa = 6, ka = 7, ja = 8, qa = 9, Za = 10, Ja = 11, za = 12, $a = 13, S_ = 14, E_ = 15, T_ = 16, oe = Fa, Ve = Ka, ie = Wa, Be = wa, ce = Xa, de = Qa, Ye = xa, Ge = ka, ue = ja, pe = qa, be = Za, He = Ja, ge = za, le = $a, me = S_, fe = E_, ye = T_, he = {
|
|
396
|
+
OK: Fa,
|
|
397
|
+
CANCELLED: Ka,
|
|
398
|
+
UNKNOWN: Wa,
|
|
399
|
+
INVALID_ARGUMENT: wa,
|
|
400
|
+
DEADLINE_EXCEEDED: Xa,
|
|
401
|
+
NOT_FOUND: Qa,
|
|
402
|
+
ALREADY_EXISTS: xa,
|
|
403
|
+
PERMISSION_DENIED: ka,
|
|
404
|
+
RESOURCE_EXHAUSTED: ja,
|
|
405
|
+
FAILED_PRECONDITION: qa,
|
|
406
|
+
ABORTED: Za,
|
|
407
|
+
OUT_OF_RANGE: Ja,
|
|
408
|
+
UNIMPLEMENTED: za,
|
|
409
|
+
INTERNAL: $a,
|
|
410
|
+
UNAVAILABLE: S_,
|
|
411
|
+
DATA_LOSS: E_,
|
|
412
|
+
UNAUTHENTICATED: T_
|
|
413
|
+
}, a_ = "SENT", __ = "RECEIVED", Fe = a_, Ke = __, We = /* @__PURE__ */ A([
|
|
414
|
+
a_,
|
|
415
|
+
__
|
|
416
|
+
]), A_ = 9, G_ = 6, u_ = Math.pow(10, G_), e = Math.pow(10, A_);
|
|
417
|
+
function O(S) {
|
|
418
|
+
var E = S / 1e3, T = Math.trunc(E), a = Math.round(S % 1e3 * u_);
|
|
419
|
+
return [T, a];
|
|
420
|
+
}
|
|
421
|
+
function r_() {
|
|
422
|
+
var S = R.timeOrigin;
|
|
423
|
+
if (typeof S != "number") {
|
|
424
|
+
var E = R;
|
|
425
|
+
S = E.timing && E.timing.fetchStart;
|
|
426
|
+
}
|
|
427
|
+
return S;
|
|
428
|
+
}
|
|
429
|
+
function p_(S) {
|
|
430
|
+
var E = O(r_()), T = O(typeof S == "number" ? S : R.now());
|
|
431
|
+
return b_(E, T);
|
|
432
|
+
}
|
|
433
|
+
function we(S) {
|
|
434
|
+
if (N_(S))
|
|
435
|
+
return S;
|
|
436
|
+
if (typeof S == "number")
|
|
437
|
+
return S < r_() ? p_(S) : O(S);
|
|
438
|
+
if (S instanceof Date)
|
|
439
|
+
return O(S.getTime());
|
|
440
|
+
throw TypeError("Invalid input type");
|
|
441
|
+
}
|
|
442
|
+
function Xe(S, E) {
|
|
443
|
+
var T = E[0] - S[0], a = E[1] - S[1];
|
|
444
|
+
return a < 0 && (T -= 1, a += e), [T, a];
|
|
445
|
+
}
|
|
446
|
+
function Qe(S) {
|
|
447
|
+
var E = A_, T = "" + "0".repeat(E) + S[1] + "Z", a = T.substring(T.length - E - 1), _ = new Date(S[0] * 1e3).toISOString();
|
|
448
|
+
return _.replace("000Z", a);
|
|
449
|
+
}
|
|
450
|
+
function xe(S) {
|
|
451
|
+
return S[0] * e + S[1];
|
|
452
|
+
}
|
|
453
|
+
function ke(S) {
|
|
454
|
+
return S[0] * 1e3 + S[1] / 1e6;
|
|
455
|
+
}
|
|
456
|
+
function je(S) {
|
|
457
|
+
return S[0] * 1e6 + S[1] / 1e3;
|
|
458
|
+
}
|
|
459
|
+
function N_(S) {
|
|
460
|
+
return Array.isArray(S) && S.length === 2 && typeof S[0] == "number" && typeof S[1] == "number";
|
|
461
|
+
}
|
|
462
|
+
function qe(S) {
|
|
463
|
+
return N_(S) || typeof S == "number" || S instanceof Date;
|
|
464
|
+
}
|
|
465
|
+
function b_(S, E) {
|
|
466
|
+
var T = [S[0] + E[0], S[1] + E[1]];
|
|
467
|
+
return T[1] >= e && (T[1] -= e, T[0] += 1), T;
|
|
468
|
+
}
|
|
469
|
+
var H_ = function(S) {
|
|
470
|
+
var E = typeof Symbol == "function" && Symbol.iterator, T = E && S[E], a = 0;
|
|
471
|
+
if (T) return T.call(S);
|
|
472
|
+
if (S && typeof S.length == "number") return {
|
|
473
|
+
next: function() {
|
|
474
|
+
return S && a >= S.length && (S = void 0), { value: S && S[a++], done: !S };
|
|
475
|
+
}
|
|
476
|
+
};
|
|
477
|
+
throw new TypeError(E ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
478
|
+
};
|
|
479
|
+
function g_(S, E) {
|
|
480
|
+
return typeof E == "string" ? S === E : !!S.match(E);
|
|
481
|
+
}
|
|
482
|
+
function Ze(S, E) {
|
|
483
|
+
var T, a;
|
|
484
|
+
if (!E)
|
|
485
|
+
return !1;
|
|
486
|
+
try {
|
|
487
|
+
for (var _ = H_(E), r = _.next(); !r.done; r = _.next()) {
|
|
488
|
+
var N = r.value;
|
|
489
|
+
if (g_(S, N))
|
|
490
|
+
return !0;
|
|
491
|
+
}
|
|
492
|
+
} catch (M) {
|
|
493
|
+
T = { error: M };
|
|
494
|
+
} finally {
|
|
495
|
+
try {
|
|
496
|
+
r && !r.done && (a = _.return) && a.call(_);
|
|
497
|
+
} finally {
|
|
498
|
+
if (T) throw T.error;
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
return !1;
|
|
502
|
+
}
|
|
503
|
+
export {
|
|
504
|
+
oN as $,
|
|
505
|
+
U_ as A,
|
|
506
|
+
o_ as B,
|
|
507
|
+
eM as C,
|
|
508
|
+
EM as D,
|
|
509
|
+
TM as E,
|
|
510
|
+
MM as F,
|
|
511
|
+
_M as G,
|
|
512
|
+
sM as H,
|
|
513
|
+
AM as I,
|
|
514
|
+
aM as J,
|
|
515
|
+
OM as K,
|
|
516
|
+
NM as L,
|
|
517
|
+
rM as M,
|
|
518
|
+
iN as N,
|
|
519
|
+
VN as O,
|
|
520
|
+
KN as P,
|
|
521
|
+
CN as Q,
|
|
522
|
+
$N as R,
|
|
523
|
+
Tr as S,
|
|
524
|
+
FN as T,
|
|
525
|
+
kN as U,
|
|
526
|
+
QN as V,
|
|
527
|
+
xN as W,
|
|
528
|
+
sN as X,
|
|
529
|
+
cN as Y,
|
|
530
|
+
jN as Z,
|
|
531
|
+
h_ as _,
|
|
532
|
+
ar as a,
|
|
533
|
+
We as a$,
|
|
534
|
+
JN as a0,
|
|
535
|
+
dN as a1,
|
|
536
|
+
BN as a2,
|
|
537
|
+
UN as a3,
|
|
538
|
+
ZN as a4,
|
|
539
|
+
hN as a5,
|
|
540
|
+
IN as a6,
|
|
541
|
+
WN as a7,
|
|
542
|
+
DN as a8,
|
|
543
|
+
vN as a9,
|
|
544
|
+
UM as aA,
|
|
545
|
+
LM as aB,
|
|
546
|
+
IM as aC,
|
|
547
|
+
VM as aD,
|
|
548
|
+
iM as aE,
|
|
549
|
+
BM as aF,
|
|
550
|
+
cM as aG,
|
|
551
|
+
RM as aH,
|
|
552
|
+
DM as aI,
|
|
553
|
+
tM as aJ,
|
|
554
|
+
CM as aK,
|
|
555
|
+
vM as aL,
|
|
556
|
+
oM as aM,
|
|
557
|
+
dM as aN,
|
|
558
|
+
nM as aO,
|
|
559
|
+
Oe as aP,
|
|
560
|
+
se as aQ,
|
|
561
|
+
Pe as aR,
|
|
562
|
+
De as aS,
|
|
563
|
+
Re as aT,
|
|
564
|
+
Ce as aU,
|
|
565
|
+
Ke as aV,
|
|
566
|
+
Fe as aW,
|
|
567
|
+
ve as aX,
|
|
568
|
+
te as aY,
|
|
569
|
+
Le as aZ,
|
|
570
|
+
Ie as a_,
|
|
571
|
+
YN as aa,
|
|
572
|
+
LN as ab,
|
|
573
|
+
GN as ac,
|
|
574
|
+
uN as ad,
|
|
575
|
+
pN as ae,
|
|
576
|
+
nN as af,
|
|
577
|
+
zN as ag,
|
|
578
|
+
wN as ah,
|
|
579
|
+
MN as ai,
|
|
580
|
+
eN as aj,
|
|
581
|
+
qN as ak,
|
|
582
|
+
bN as al,
|
|
583
|
+
ON as am,
|
|
584
|
+
NN as an,
|
|
585
|
+
HN as ao,
|
|
586
|
+
gN as ap,
|
|
587
|
+
PN as aq,
|
|
588
|
+
tN as ar,
|
|
589
|
+
XN as as,
|
|
590
|
+
RN as at,
|
|
591
|
+
lN as au,
|
|
592
|
+
mN as av,
|
|
593
|
+
fN as aw,
|
|
594
|
+
yN as ax,
|
|
595
|
+
PM as ay,
|
|
596
|
+
SM as az,
|
|
597
|
+
JA as b,
|
|
598
|
+
Yr as b$,
|
|
599
|
+
ne as b0,
|
|
600
|
+
Ue as b1,
|
|
601
|
+
QM as b2,
|
|
602
|
+
jM as b3,
|
|
603
|
+
wM as b4,
|
|
604
|
+
Ee as b5,
|
|
605
|
+
xM as b6,
|
|
606
|
+
kM as b7,
|
|
607
|
+
$M as b8,
|
|
608
|
+
WM as b9,
|
|
609
|
+
KM as bA,
|
|
610
|
+
lM as bB,
|
|
611
|
+
be as bC,
|
|
612
|
+
Ye as bD,
|
|
613
|
+
Ve as bE,
|
|
614
|
+
fe as bF,
|
|
615
|
+
ce as bG,
|
|
616
|
+
pe as bH,
|
|
617
|
+
le as bI,
|
|
618
|
+
Be as bJ,
|
|
619
|
+
de as bK,
|
|
620
|
+
oe as bL,
|
|
621
|
+
He as bM,
|
|
622
|
+
Ge as bN,
|
|
623
|
+
ue as bO,
|
|
624
|
+
ye as bP,
|
|
625
|
+
me as bQ,
|
|
626
|
+
ge as bR,
|
|
627
|
+
ie as bS,
|
|
628
|
+
he as bT,
|
|
629
|
+
Cr as bU,
|
|
630
|
+
dr as bV,
|
|
631
|
+
Pr as bW,
|
|
632
|
+
Mr as bX,
|
|
633
|
+
Br as bY,
|
|
634
|
+
Lr as bZ,
|
|
635
|
+
nr as b_,
|
|
636
|
+
ae as ba,
|
|
637
|
+
qM as bb,
|
|
638
|
+
JM as bc,
|
|
639
|
+
Te as bd,
|
|
640
|
+
ZM as be,
|
|
641
|
+
zM as bf,
|
|
642
|
+
Ae as bg,
|
|
643
|
+
Se as bh,
|
|
644
|
+
Me as bi,
|
|
645
|
+
re as bj,
|
|
646
|
+
Ne as bk,
|
|
647
|
+
_e as bl,
|
|
648
|
+
XM as bm,
|
|
649
|
+
yM as bn,
|
|
650
|
+
hM as bo,
|
|
651
|
+
FM as bp,
|
|
652
|
+
mM as bq,
|
|
653
|
+
fM as br,
|
|
654
|
+
HM as bs,
|
|
655
|
+
uM as bt,
|
|
656
|
+
YM as bu,
|
|
657
|
+
GM as bv,
|
|
658
|
+
gM as bw,
|
|
659
|
+
bM as bx,
|
|
660
|
+
pM as by,
|
|
661
|
+
ee as bz,
|
|
662
|
+
qA as c,
|
|
663
|
+
TN as c$,
|
|
664
|
+
vr as c0,
|
|
665
|
+
er as c1,
|
|
666
|
+
Dr as c2,
|
|
667
|
+
Ir as c3,
|
|
668
|
+
Rr as c4,
|
|
669
|
+
Or as c5,
|
|
670
|
+
sr as c6,
|
|
671
|
+
cr as c7,
|
|
672
|
+
or as c8,
|
|
673
|
+
Vr as c9,
|
|
674
|
+
x_ as cA,
|
|
675
|
+
K_ as cB,
|
|
676
|
+
w_ as cC,
|
|
677
|
+
fA as cD,
|
|
678
|
+
yA as cE,
|
|
679
|
+
hA as cF,
|
|
680
|
+
OA as cG,
|
|
681
|
+
IA as cH,
|
|
682
|
+
nA as cI,
|
|
683
|
+
RA as cJ,
|
|
684
|
+
vA as cK,
|
|
685
|
+
DA as cL,
|
|
686
|
+
CA as cM,
|
|
687
|
+
PA as cN,
|
|
688
|
+
LA as cO,
|
|
689
|
+
UA as cP,
|
|
690
|
+
oA as cQ,
|
|
691
|
+
tA as cR,
|
|
692
|
+
sA as cS,
|
|
693
|
+
rr as cT,
|
|
694
|
+
zA as cU,
|
|
695
|
+
Sr as cV,
|
|
696
|
+
Ar as cW,
|
|
697
|
+
_r as cX,
|
|
698
|
+
jA as cY,
|
|
699
|
+
_N as cZ,
|
|
700
|
+
aN as c_,
|
|
701
|
+
tr as ca,
|
|
702
|
+
Ur as cb,
|
|
703
|
+
Nr as cc,
|
|
704
|
+
ir as cd,
|
|
705
|
+
F_ as ce,
|
|
706
|
+
XA as cf,
|
|
707
|
+
WA as cg,
|
|
708
|
+
QA as ch,
|
|
709
|
+
wA as ci,
|
|
710
|
+
J_ as cj,
|
|
711
|
+
TA as ck,
|
|
712
|
+
EA as cl,
|
|
713
|
+
$_ as cm,
|
|
714
|
+
q_ as cn,
|
|
715
|
+
Z_ as co,
|
|
716
|
+
SA as cp,
|
|
717
|
+
z_ as cq,
|
|
718
|
+
W_ as cr,
|
|
719
|
+
aA as cs,
|
|
720
|
+
X_ as ct,
|
|
721
|
+
AA as cu,
|
|
722
|
+
j_ as cv,
|
|
723
|
+
Q_ as cw,
|
|
724
|
+
k_ as cx,
|
|
725
|
+
_A as cy,
|
|
726
|
+
rA as cz,
|
|
727
|
+
ZA as d,
|
|
728
|
+
AN as d0,
|
|
729
|
+
Kr as d1,
|
|
730
|
+
fr as d2,
|
|
731
|
+
ur as d3,
|
|
732
|
+
pr as d4,
|
|
733
|
+
Qr as d5,
|
|
734
|
+
Xr as d6,
|
|
735
|
+
wr as d7,
|
|
736
|
+
xr as d8,
|
|
737
|
+
kr as d9,
|
|
738
|
+
SN as dA,
|
|
739
|
+
EN as dB,
|
|
740
|
+
$r as dC,
|
|
741
|
+
zr as dD,
|
|
742
|
+
Zr as dE,
|
|
743
|
+
qr as dF,
|
|
744
|
+
jr as dG,
|
|
745
|
+
FA as dH,
|
|
746
|
+
KA as dI,
|
|
747
|
+
rN as dJ,
|
|
748
|
+
ke as dK,
|
|
749
|
+
Qe as dL,
|
|
750
|
+
mr as da,
|
|
751
|
+
hr as db,
|
|
752
|
+
yr as dc,
|
|
753
|
+
Fr as dd,
|
|
754
|
+
Hr as de,
|
|
755
|
+
gr as df,
|
|
756
|
+
Wr as dg,
|
|
757
|
+
Gr as dh,
|
|
758
|
+
br as di,
|
|
759
|
+
lr as dj,
|
|
760
|
+
lA as dk,
|
|
761
|
+
HA as dl,
|
|
762
|
+
gA as dm,
|
|
763
|
+
bA as dn,
|
|
764
|
+
pA as dp,
|
|
765
|
+
uA as dq,
|
|
766
|
+
dA as dr,
|
|
767
|
+
GA as ds,
|
|
768
|
+
YA as dt,
|
|
769
|
+
iA as du,
|
|
770
|
+
cA as dv,
|
|
771
|
+
BA as dw,
|
|
772
|
+
VA as dx,
|
|
773
|
+
mA as dy,
|
|
774
|
+
Jr as dz,
|
|
775
|
+
$A as e,
|
|
776
|
+
xA as f,
|
|
777
|
+
kA as g,
|
|
778
|
+
xe as h,
|
|
779
|
+
Ze as i,
|
|
780
|
+
p_ as j,
|
|
781
|
+
Er as k,
|
|
782
|
+
r_ as l,
|
|
783
|
+
O as m,
|
|
784
|
+
qe as n,
|
|
785
|
+
R as o,
|
|
786
|
+
y_ as p,
|
|
787
|
+
Xe as q,
|
|
788
|
+
N_ as r,
|
|
789
|
+
b_ as s,
|
|
790
|
+
we as t,
|
|
791
|
+
g_ as u,
|
|
792
|
+
NA as v,
|
|
793
|
+
MA as w,
|
|
794
|
+
eA as x,
|
|
795
|
+
je as y,
|
|
796
|
+
f_ as z
|
|
797
|
+
};
|
|
798
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidXJsLSF+ezAwZH1+LmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBEIGFzIERpYWdBUEksIGMgYXMgY3JlYXRlQ29udGV4dEtleSwgQyBhcyBDb250ZXh0QVBJLCByIGFzIHJlZ2lzdGVyR2xvYmFsLCB1IGFzIHVucmVnaXN0ZXJHbG9iYWwsIGcgYXMgZ2V0R2xvYmFsIH0gZnJvbSAnLi9pbmRleC0hfnswMDl9fi5qcyc7XG5pbXBvcnQgeyBjIGFzIGNyZWF0ZUNvbnN0TWFwIH0gZnJvbSAnLi91dGlscy0hfnswMDd9fi5qcyc7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgX19yZWFkID0gKHVuZGVmaW5lZCAmJiB1bmRlZmluZWQuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fdmFsdWVzJDEgPSAodW5kZWZpbmVkICYmIHVuZGVmaW5lZC5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xudmFyIEJhZ2dhZ2VJbXBsID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEJhZ2dhZ2VJbXBsKGVudHJpZXMpIHtcbiAgICAgICAgdGhpcy5fZW50cmllcyA9IGVudHJpZXMgPyBuZXcgTWFwKGVudHJpZXMpIDogbmV3IE1hcCgpO1xuICAgIH1cbiAgICBCYWdnYWdlSW1wbC5wcm90b3R5cGUuZ2V0RW50cnkgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMuX2VudHJpZXMuZ2V0KGtleSk7XG4gICAgICAgIGlmICghZW50cnkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGVudHJ5KTtcbiAgICB9O1xuICAgIEJhZ2dhZ2VJbXBsLnByb3RvdHlwZS5nZXRBbGxFbnRyaWVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9lbnRyaWVzLmVudHJpZXMoKSkubWFwKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgdmFyIF9iID0gX19yZWFkKF9hLCAyKSwgayA9IF9iWzBdLCB2ID0gX2JbMV07XG4gICAgICAgICAgICByZXR1cm4gW2ssIHZdO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIEJhZ2dhZ2VJbXBsLnByb3RvdHlwZS5zZXRFbnRyeSA9IGZ1bmN0aW9uIChrZXksIGVudHJ5KSB7XG4gICAgICAgIHZhciBuZXdCYWdnYWdlID0gbmV3IEJhZ2dhZ2VJbXBsKHRoaXMuX2VudHJpZXMpO1xuICAgICAgICBuZXdCYWdnYWdlLl9lbnRyaWVzLnNldChrZXksIGVudHJ5KTtcbiAgICAgICAgcmV0dXJuIG5ld0JhZ2dhZ2U7XG4gICAgfTtcbiAgICBCYWdnYWdlSW1wbC5wcm90b3R5cGUucmVtb3ZlRW50cnkgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciBuZXdCYWdnYWdlID0gbmV3IEJhZ2dhZ2VJbXBsKHRoaXMuX2VudHJpZXMpO1xuICAgICAgICBuZXdCYWdnYWdlLl9lbnRyaWVzLmRlbGV0ZShrZXkpO1xuICAgICAgICByZXR1cm4gbmV3QmFnZ2FnZTtcbiAgICB9O1xuICAgIEJhZ2dhZ2VJbXBsLnByb3RvdHlwZS5yZW1vdmVFbnRyaWVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgdmFyIGtleXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGtleXNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbmV3QmFnZ2FnZSA9IG5ldyBCYWdnYWdlSW1wbCh0aGlzLl9lbnRyaWVzKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIGtleXNfMSA9IF9fdmFsdWVzJDEoa2V5cyksIGtleXNfMV8xID0ga2V5c18xLm5leHQoKTsgIWtleXNfMV8xLmRvbmU7IGtleXNfMV8xID0ga2V5c18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICBuZXdCYWdnYWdlLl9lbnRyaWVzLmRlbGV0ZShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5c18xXzEgJiYgIWtleXNfMV8xLmRvbmUgJiYgKF9hID0ga2V5c18xLnJldHVybikpIF9hLmNhbGwoa2V5c18xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3QmFnZ2FnZTtcbiAgICB9O1xuICAgIEJhZ2dhZ2VJbXBsLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBCYWdnYWdlSW1wbCgpO1xuICAgIH07XG4gICAgcmV0dXJuIEJhZ2dhZ2VJbXBsO1xufSgpKTtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogU3ltYm9sIHVzZWQgdG8gbWFrZSBCYWdnYWdlRW50cnlNZXRhZGF0YSBhbiBvcGFxdWUgdHlwZVxuICovXG52YXIgYmFnZ2FnZUVudHJ5TWV0YWRhdGFTeW1ib2wgPSBTeW1ib2woJ0JhZ2dhZ2VFbnRyeU1ldGFkYXRhJyk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgZGlhZyA9IERpYWdBUEkuaW5zdGFuY2UoKTtcbi8qKlxuICogQ3JlYXRlIGEgbmV3IEJhZ2dhZ2Ugd2l0aCBvcHRpb25hbCBlbnRyaWVzXG4gKlxuICogQHBhcmFtIGVudHJpZXMgQW4gYXJyYXkgb2YgYmFnZ2FnZSBlbnRyaWVzIHRoZSBuZXcgYmFnZ2FnZSBzaG91bGQgY29udGFpblxuICovXG5mdW5jdGlvbiBjcmVhdGVCYWdnYWdlKGVudHJpZXMpIHtcbiAgICBpZiAoZW50cmllcyA9PT0gdm9pZCAwKSB7IGVudHJpZXMgPSB7fTsgfVxuICAgIHJldHVybiBuZXcgQmFnZ2FnZUltcGwobmV3IE1hcChPYmplY3QuZW50cmllcyhlbnRyaWVzKSkpO1xufVxuLyoqXG4gKiBDcmVhdGUgYSBzZXJpYWxpemFibGUgQmFnZ2FnZUVudHJ5TWV0YWRhdGEgb2JqZWN0IGZyb20gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciBzdHJpbmcgbWV0YWRhdGEuIEZvcm1hdCBpcyBjdXJyZW50bHkgbm90IGRlZmluZWQgYnkgdGhlIHNwZWMgYW5kIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcuXG4gKlxuICovXG5mdW5jdGlvbiBiYWdnYWdlRW50cnlNZXRhZGF0YUZyb21TdHJpbmcoc3RyKSB7XG4gICAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRpYWcuZXJyb3IoXCJDYW5ub3QgY3JlYXRlIGJhZ2dhZ2UgbWV0YWRhdGEgZnJvbSB1bmtub3duIHR5cGU6IFwiICsgdHlwZW9mIHN0cik7XG4gICAgICAgIHN0ciA9ICcnO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBfX1RZUEVfXzogYmFnZ2FnZUVudHJ5TWV0YWRhdGFTeW1ib2wsXG4gICAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyO1xuICAgICAgICB9LFxuICAgIH07XG59XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgZGVmYXVsdFRleHRNYXBHZXR0ZXIgPSB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoY2Fycmllciwga2V5KSB7XG4gICAgICAgIGlmIChjYXJyaWVyID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhcnJpZXJba2V5XTtcbiAgICB9LFxuICAgIGtleXM6IGZ1bmN0aW9uIChjYXJyaWVyKSB7XG4gICAgICAgIGlmIChjYXJyaWVyID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoY2Fycmllcik7XG4gICAgfSxcbn07XG52YXIgZGVmYXVsdFRleHRNYXBTZXR0ZXIgPSB7XG4gICAgc2V0OiBmdW5jdGlvbiAoY2Fycmllciwga2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAoY2FycmllciA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY2FycmllcltrZXldID0gdmFsdWU7XG4gICAgfSxcbn07XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIE5vLW9wIGltcGxlbWVudGF0aW9ucyBvZiB7QGxpbmsgVGV4dE1hcFByb3BhZ2F0b3J9LlxuICovXG52YXIgTm9vcFRleHRNYXBQcm9wYWdhdG9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE5vb3BUZXh0TWFwUHJvcGFnYXRvcigpIHtcbiAgICB9XG4gICAgLyoqIE5vb3AgaW5qZWN0IGZ1bmN0aW9uIGRvZXMgbm90aGluZyAqL1xuICAgIE5vb3BUZXh0TWFwUHJvcGFnYXRvci5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24gKF9jb250ZXh0LCBfY2FycmllcikgeyB9O1xuICAgIC8qKiBOb29wIGV4dHJhY3QgZnVuY3Rpb24gZG9lcyBub3RoaW5nIGFuZCByZXR1cm5zIHRoZSBpbnB1dCBjb250ZXh0ICovXG4gICAgTm9vcFRleHRNYXBQcm9wYWdhdG9yLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24gKGNvbnRleHQsIF9jYXJyaWVyKSB7XG4gICAgICAgIHJldHVybiBjb250ZXh0O1xuICAgIH07XG4gICAgTm9vcFRleHRNYXBQcm9wYWdhdG9yLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9O1xuICAgIHJldHVybiBOb29wVGV4dE1hcFByb3BhZ2F0b3I7XG59KCkpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBCYWdnYWdlIGtleVxuICovXG52YXIgQkFHR0FHRV9LRVkgPSBjcmVhdGVDb250ZXh0S2V5KCdPcGVuVGVsZW1ldHJ5IEJhZ2dhZ2UgS2V5Jyk7XG4vKipcbiAqIFJldHJpZXZlIHRoZSBjdXJyZW50IGJhZ2dhZ2UgZnJvbSB0aGUgZ2l2ZW4gY29udGV4dFxuICpcbiAqIEBwYXJhbSB7Q29udGV4dH0gQ29udGV4dCB0aGF0IG1hbmFnZSBhbGwgY29udGV4dCB2YWx1ZXNcbiAqIEByZXR1cm5zIHtCYWdnYWdlfSBFeHRyYWN0ZWQgYmFnZ2FnZSBmcm9tIHRoZSBjb250ZXh0XG4gKi9cbmZ1bmN0aW9uIGdldEJhZ2dhZ2UoY29udGV4dCkge1xuICAgIHJldHVybiBjb250ZXh0LmdldFZhbHVlKEJBR0dBR0VfS0VZKSB8fCB1bmRlZmluZWQ7XG59XG4vKipcbiAqIFJldHJpZXZlIHRoZSBjdXJyZW50IGJhZ2dhZ2UgZnJvbSB0aGUgYWN0aXZlL2N1cnJlbnQgY29udGV4dFxuICpcbiAqIEByZXR1cm5zIHtCYWdnYWdlfSBFeHRyYWN0ZWQgYmFnZ2FnZSBmcm9tIHRoZSBjb250ZXh0XG4gKi9cbmZ1bmN0aW9uIGdldEFjdGl2ZUJhZ2dhZ2UoKSB7XG4gICAgcmV0dXJuIGdldEJhZ2dhZ2UoQ29udGV4dEFQSS5nZXRJbnN0YW5jZSgpLmFjdGl2ZSgpKTtcbn1cbi8qKlxuICogU3RvcmUgYSBiYWdnYWdlIGluIHRoZSBnaXZlbiBjb250ZXh0XG4gKlxuICogQHBhcmFtIHtDb250ZXh0fSBDb250ZXh0IHRoYXQgbWFuYWdlIGFsbCBjb250ZXh0IHZhbHVlc1xuICogQHBhcmFtIHtCYWdnYWdlfSBiYWdnYWdlIHRoYXQgd2lsbCBiZSBzZXQgaW4gdGhlIGFjdHVhbCBjb250ZXh0XG4gKi9cbmZ1bmN0aW9uIHNldEJhZ2dhZ2UoY29udGV4dCwgYmFnZ2FnZSkge1xuICAgIHJldHVybiBjb250ZXh0LnNldFZhbHVlKEJBR0dBR0VfS0VZLCBiYWdnYWdlKTtcbn1cbi8qKlxuICogRGVsZXRlIHRoZSBiYWdnYWdlIHN0b3JlZCBpbiB0aGUgZ2l2ZW4gY29udGV4dFxuICpcbiAqIEBwYXJhbSB7Q29udGV4dH0gQ29udGV4dCB0aGF0IG1hbmFnZSBhbGwgY29udGV4dCB2YWx1ZXNcbiAqL1xuZnVuY3Rpb24gZGVsZXRlQmFnZ2FnZShjb250ZXh0KSB7XG4gICAgcmV0dXJuIGNvbnRleHQuZGVsZXRlVmFsdWUoQkFHR0FHRV9LRVkpO1xufVxuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIEFQSV9OQU1FID0gJ3Byb3BhZ2F0aW9uJztcbnZhciBOT09QX1RFWFRfTUFQX1BST1BBR0FUT1IgPSBuZXcgTm9vcFRleHRNYXBQcm9wYWdhdG9yKCk7XG4vKipcbiAqIFNpbmdsZXRvbiBvYmplY3Qgd2hpY2ggcmVwcmVzZW50cyB0aGUgZW50cnkgcG9pbnQgdG8gdGhlIE9wZW5UZWxlbWV0cnkgUHJvcGFnYXRpb24gQVBJXG4gKi9cbnZhciBQcm9wYWdhdGlvbkFQSSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAvKiogRW1wdHkgcHJpdmF0ZSBjb25zdHJ1Y3RvciBwcmV2ZW50cyBlbmQgdXNlcnMgZnJvbSBjb25zdHJ1Y3RpbmcgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIEFQSSAqL1xuICAgIGZ1bmN0aW9uIFByb3BhZ2F0aW9uQVBJKCkge1xuICAgICAgICB0aGlzLmNyZWF0ZUJhZ2dhZ2UgPSBjcmVhdGVCYWdnYWdlO1xuICAgICAgICB0aGlzLmdldEJhZ2dhZ2UgPSBnZXRCYWdnYWdlO1xuICAgICAgICB0aGlzLmdldEFjdGl2ZUJhZ2dhZ2UgPSBnZXRBY3RpdmVCYWdnYWdlO1xuICAgICAgICB0aGlzLnNldEJhZ2dhZ2UgPSBzZXRCYWdnYWdlO1xuICAgICAgICB0aGlzLmRlbGV0ZUJhZ2dhZ2UgPSBkZWxldGVCYWdnYWdlO1xuICAgIH1cbiAgICAvKiogR2V0IHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIFByb3BhZ2F0b3IgQVBJICovXG4gICAgUHJvcGFnYXRpb25BUEkuZ2V0SW5zdGFuY2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gbmV3IFByb3BhZ2F0aW9uQVBJKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBjdXJyZW50IHByb3BhZ2F0b3IuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBwcm9wYWdhdG9yIHdhcyBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCwgZWxzZSBmYWxzZVxuICAgICAqL1xuICAgIFByb3BhZ2F0aW9uQVBJLnByb3RvdHlwZS5zZXRHbG9iYWxQcm9wYWdhdG9yID0gZnVuY3Rpb24gKHByb3BhZ2F0b3IpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2lzdGVyR2xvYmFsKEFQSV9OQU1FLCBwcm9wYWdhdG9yLCBEaWFnQVBJLmluc3RhbmNlKCkpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogSW5qZWN0IGNvbnRleHQgaW50byBhIGNhcnJpZXIgdG8gYmUgcHJvcGFnYXRlZCBpbnRlci1wcm9jZXNzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGV4dCBDb250ZXh0IGNhcnJ5aW5nIHRyYWNpbmcgZGF0YSB0byBpbmplY3RcbiAgICAgKiBAcGFyYW0gY2FycmllciBjYXJyaWVyIHRvIGluamVjdCBjb250ZXh0IGludG9cbiAgICAgKiBAcGFyYW0gc2V0dGVyIEZ1bmN0aW9uIHVzZWQgdG8gc2V0IHZhbHVlcyBvbiB0aGUgY2FycmllclxuICAgICAqL1xuICAgIFByb3BhZ2F0aW9uQVBJLnByb3RvdHlwZS5pbmplY3QgPSBmdW5jdGlvbiAoY29udGV4dCwgY2Fycmllciwgc2V0dGVyKSB7XG4gICAgICAgIGlmIChzZXR0ZXIgPT09IHZvaWQgMCkgeyBzZXR0ZXIgPSBkZWZhdWx0VGV4dE1hcFNldHRlcjsgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0R2xvYmFsUHJvcGFnYXRvcigpLmluamVjdChjb250ZXh0LCBjYXJyaWVyLCBzZXR0ZXIpO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogRXh0cmFjdCBjb250ZXh0IGZyb20gYSBjYXJyaWVyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29udGV4dCBDb250ZXh0IHdoaWNoIHRoZSBuZXdseSBjcmVhdGVkIGNvbnRleHQgd2lsbCBpbmhlcml0IGZyb21cbiAgICAgKiBAcGFyYW0gY2FycmllciBDYXJyaWVyIHRvIGV4dHJhY3QgY29udGV4dCBmcm9tXG4gICAgICogQHBhcmFtIGdldHRlciBGdW5jdGlvbiB1c2VkIHRvIGV4dHJhY3Qga2V5cyBmcm9tIGEgY2FycmllclxuICAgICAqL1xuICAgIFByb3BhZ2F0aW9uQVBJLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24gKGNvbnRleHQsIGNhcnJpZXIsIGdldHRlcikge1xuICAgICAgICBpZiAoZ2V0dGVyID09PSB2b2lkIDApIHsgZ2V0dGVyID0gZGVmYXVsdFRleHRNYXBHZXR0ZXI7IH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEdsb2JhbFByb3BhZ2F0b3IoKS5leHRyYWN0KGNvbnRleHQsIGNhcnJpZXIsIGdldHRlcik7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYSBsaXN0IG9mIGFsbCBmaWVsZHMgd2hpY2ggbWF5IGJlIHVzZWQgYnkgdGhlIHByb3BhZ2F0b3IuXG4gICAgICovXG4gICAgUHJvcGFnYXRpb25BUEkucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEdsb2JhbFByb3BhZ2F0b3IoKS5maWVsZHMoKTtcbiAgICB9O1xuICAgIC8qKiBSZW1vdmUgdGhlIGdsb2JhbCBwcm9wYWdhdG9yICovXG4gICAgUHJvcGFnYXRpb25BUEkucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHVucmVnaXN0ZXJHbG9iYWwoQVBJX05BTUUsIERpYWdBUEkuaW5zdGFuY2UoKSk7XG4gICAgfTtcbiAgICBQcm9wYWdhdGlvbkFQSS5wcm90b3R5cGUuX2dldEdsb2JhbFByb3BhZ2F0b3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBnZXRHbG9iYWwoQVBJX05BTUUpIHx8IE5PT1BfVEVYVF9NQVBfUFJPUEFHQVRPUjtcbiAgICB9O1xuICAgIHJldHVybiBQcm9wYWdhdGlvbkFQSTtcbn0oKSk7XG5cbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyBTcGxpdCBtb2R1bGUtbGV2ZWwgdmFyaWFibGUgZGVmaW5pdGlvbiBpbnRvIHNlcGFyYXRlIGZpbGVzIHRvIGFsbG93XG4vLyB0cmVlLXNoYWtpbmcgb24gZWFjaCBhcGkgaW5zdGFuY2UuXG4vKiogRW50cnlwb2ludCBmb3IgcHJvcGFnYXRpb24gQVBJICovXG52YXIgcHJvcGFnYXRpb24gPSBQcm9wYWdhdGlvbkFQSS5nZXRJbnN0YW5jZSgpO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8gVXBkYXRlcyB0byB0aGlzIGZpbGUgc2hvdWxkIGFsc28gYmUgcmVwbGljYXRlZCB0byBAb3BlbnRlbGVtZXRyeS9hcGkgdG9vLlxuLyoqXG4gKiAtIGdsb2JhbFRoaXMgKE5ldyBzdGFuZGFyZClcbiAqIC0gc2VsZiAoV2lsbCByZXR1cm4gdGhlIGN1cnJlbnQgd2luZG93IGluc3RhbmNlIGZvciBzdXBwb3J0ZWQgYnJvd3NlcnMpXG4gKiAtIHdpbmRvdyAoZmFsbGJhY2sgZm9yIG9sZGVyIGJyb3dzZXIgaW1wbGVtZW50YXRpb25zKVxuICogLSBnbG9iYWwgKE5vZGVKUyBpbXBsZW1lbnRhdGlvbilcbiAqIC0gPG9iamVjdD4gKFdoZW4gYWxsIGVsc2UgZmFpbHMpXG4gKi9cbi8qKiBvbmx5IGdsb2JhbHMgdGhhdCBjb21tb24gdG8gbm9kZSBhbmQgYnJvd3NlcnMgYXJlIGFsbG93ZWQgKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBub2RlL25vLXVuc3VwcG9ydGVkLWZlYXR1cmVzL2VzLWJ1aWx0aW5zLCBuby11bmRlZlxudmFyIF9nbG9iYWxUaGlzID0gdHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnXG4gICAgPyBnbG9iYWxUaGlzXG4gICAgOiB0eXBlb2Ygc2VsZiA9PT0gJ29iamVjdCdcbiAgICAgICAgPyBzZWxmXG4gICAgICAgIDogdHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgID8gd2luZG93XG4gICAgICAgICAgICA6IHR5cGVvZiBnbG9iYWwgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgPyBnbG9iYWxcbiAgICAgICAgICAgICAgICA6IHt9O1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIG90cGVyZm9ybWFuY2UgPSBwZXJmb3JtYW5jZTtcblxuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRE8gTk9UIEVESVQsIHRoaXMgaXMgYW4gQXV0by1nZW5lcmF0ZWQgZmlsZSBmcm9tIHNjcmlwdHMvc2VtY29udi90ZW1wbGF0ZXMvL3RlbXBsYXRlcy9TZW1hbnRpY0F0dHJpYnV0ZXMudHMuajJcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb25zdGFudCB2YWx1ZXMgZm9yIFNlbWFudGljQXR0cmlidXRlc1xuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUZW1wb3JhcnkgbG9jYWwgY29uc3RhbnRzIHRvIGFzc2lnbiB0byB0aGUgaW5kaXZpZHVhbCBleHBvcnRzIGFuZCB0aGUgbmFtZXNwYWNlZCB2ZXJzaW9uXG4vLyBSZXF1aXJlZCB0byBhdm9pZCB0aGUgbmFtZXNwYWNlIGV4cG9ydHMgdXNpbmcgdGhlIHVubWluaWZpYWJsZSBleHBvcnQgbmFtZXMgZm9yIHNvbWUgcGFja2FnZSB0eXBlc1xudmFyIFRNUF9BV1NfTEFNQkRBX0lOVk9LRURfQVJOID0gJ2F3cy5sYW1iZGEuaW52b2tlZF9hcm4nO1xudmFyIFRNUF9EQl9TWVNURU0gPSAnZGIuc3lzdGVtJztcbnZhciBUTVBfREJfQ09OTkVDVElPTl9TVFJJTkcgPSAnZGIuY29ubmVjdGlvbl9zdHJpbmcnO1xudmFyIFRNUF9EQl9VU0VSID0gJ2RiLnVzZXInO1xudmFyIFRNUF9EQl9KREJDX0RSSVZFUl9DTEFTU05BTUUgPSAnZGIuamRiYy5kcml2ZXJfY2xhc3NuYW1lJztcbnZhciBUTVBfREJfTkFNRSA9ICdkYi5uYW1lJztcbnZhciBUTVBfREJfU1RBVEVNRU5UID0gJ2RiLnN0YXRlbWVudCc7XG52YXIgVE1QX0RCX09QRVJBVElPTiA9ICdkYi5vcGVyYXRpb24nO1xudmFyIFRNUF9EQl9NU1NRTF9JTlNUQU5DRV9OQU1FID0gJ2RiLm1zc3FsLmluc3RhbmNlX25hbWUnO1xudmFyIFRNUF9EQl9DQVNTQU5EUkFfS0VZU1BBQ0UgPSAnZGIuY2Fzc2FuZHJhLmtleXNwYWNlJztcbnZhciBUTVBfREJfQ0FTU0FORFJBX1BBR0VfU0laRSA9ICdkYi5jYXNzYW5kcmEucGFnZV9zaXplJztcbnZhciBUTVBfREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMID0gJ2RiLmNhc3NhbmRyYS5jb25zaXN0ZW5jeV9sZXZlbCc7XG52YXIgVE1QX0RCX0NBU1NBTkRSQV9UQUJMRSA9ICdkYi5jYXNzYW5kcmEudGFibGUnO1xudmFyIFRNUF9EQl9DQVNTQU5EUkFfSURFTVBPVEVOQ0UgPSAnZGIuY2Fzc2FuZHJhLmlkZW1wb3RlbmNlJztcbnZhciBUTVBfREJfQ0FTU0FORFJBX1NQRUNVTEFUSVZFX0VYRUNVVElPTl9DT1VOVCA9ICdkYi5jYXNzYW5kcmEuc3BlY3VsYXRpdmVfZXhlY3V0aW9uX2NvdW50JztcbnZhciBUTVBfREJfQ0FTU0FORFJBX0NPT1JESU5BVE9SX0lEID0gJ2RiLmNhc3NhbmRyYS5jb29yZGluYXRvci5pZCc7XG52YXIgVE1QX0RCX0NBU1NBTkRSQV9DT09SRElOQVRPUl9EQyA9ICdkYi5jYXNzYW5kcmEuY29vcmRpbmF0b3IuZGMnO1xudmFyIFRNUF9EQl9IQkFTRV9OQU1FU1BBQ0UgPSAnZGIuaGJhc2UubmFtZXNwYWNlJztcbnZhciBUTVBfREJfUkVESVNfREFUQUJBU0VfSU5ERVggPSAnZGIucmVkaXMuZGF0YWJhc2VfaW5kZXgnO1xudmFyIFRNUF9EQl9NT05HT0RCX0NPTExFQ1RJT04gPSAnZGIubW9uZ29kYi5jb2xsZWN0aW9uJztcbnZhciBUTVBfREJfU1FMX1RBQkxFID0gJ2RiLnNxbC50YWJsZSc7XG52YXIgVE1QX0VYQ0VQVElPTl9UWVBFID0gJ2V4Y2VwdGlvbi50eXBlJztcbnZhciBUTVBfRVhDRVBUSU9OX01FU1NBR0UgPSAnZXhjZXB0aW9uLm1lc3NhZ2UnO1xudmFyIFRNUF9FWENFUFRJT05fU1RBQ0tUUkFDRSA9ICdleGNlcHRpb24uc3RhY2t0cmFjZSc7XG52YXIgVE1QX0VYQ0VQVElPTl9FU0NBUEVEID0gJ2V4Y2VwdGlvbi5lc2NhcGVkJztcbnZhciBUTVBfRkFBU19UUklHR0VSID0gJ2ZhYXMudHJpZ2dlcic7XG52YXIgVE1QX0ZBQVNfRVhFQ1VUSU9OID0gJ2ZhYXMuZXhlY3V0aW9uJztcbnZhciBUTVBfRkFBU19ET0NVTUVOVF9DT0xMRUNUSU9OID0gJ2ZhYXMuZG9jdW1lbnQuY29sbGVjdGlvbic7XG52YXIgVE1QX0ZBQVNfRE9DVU1FTlRfT1BFUkFUSU9OID0gJ2ZhYXMuZG9jdW1lbnQub3BlcmF0aW9uJztcbnZhciBUTVBfRkFBU19ET0NVTUVOVF9USU1FID0gJ2ZhYXMuZG9jdW1lbnQudGltZSc7XG52YXIgVE1QX0ZBQVNfRE9DVU1FTlRfTkFNRSA9ICdmYWFzLmRvY3VtZW50Lm5hbWUnO1xudmFyIFRNUF9GQUFTX1RJTUUgPSAnZmFhcy50aW1lJztcbnZhciBUTVBfRkFBU19DUk9OID0gJ2ZhYXMuY3Jvbic7XG52YXIgVE1QX0ZBQVNfQ09MRFNUQVJUID0gJ2ZhYXMuY29sZHN0YXJ0JztcbnZhciBUTVBfRkFBU19JTlZPS0VEX05BTUUgPSAnZmFhcy5pbnZva2VkX25hbWUnO1xudmFyIFRNUF9GQUFTX0lOVk9LRURfUFJPVklERVIgPSAnZmFhcy5pbnZva2VkX3Byb3ZpZGVyJztcbnZhciBUTVBfRkFBU19JTlZPS0VEX1JFR0lPTiA9ICdmYWFzLmludm9rZWRfcmVnaW9uJztcbnZhciBUTVBfTkVUX1RSQU5TUE9SVCA9ICduZXQudHJhbnNwb3J0JztcbnZhciBUTVBfTkVUX1BFRVJfSVAgPSAnbmV0LnBlZXIuaXAnO1xudmFyIFRNUF9ORVRfUEVFUl9QT1JUID0gJ25ldC5wZWVyLnBvcnQnO1xudmFyIFRNUF9ORVRfUEVFUl9OQU1FID0gJ25ldC5wZWVyLm5hbWUnO1xudmFyIFRNUF9ORVRfSE9TVF9JUCA9ICduZXQuaG9zdC5pcCc7XG52YXIgVE1QX05FVF9IT1NUX1BPUlQgPSAnbmV0Lmhvc3QucG9ydCc7XG52YXIgVE1QX05FVF9IT1NUX05BTUUgPSAnbmV0Lmhvc3QubmFtZSc7XG52YXIgVE1QX05FVF9IT1NUX0NPTk5FQ1RJT05fVFlQRSA9ICduZXQuaG9zdC5jb25uZWN0aW9uLnR5cGUnO1xudmFyIFRNUF9ORVRfSE9TVF9DT05ORUNUSU9OX1NVQlRZUEUgPSAnbmV0Lmhvc3QuY29ubmVjdGlvbi5zdWJ0eXBlJztcbnZhciBUTVBfTkVUX0hPU1RfQ0FSUklFUl9OQU1FID0gJ25ldC5ob3N0LmNhcnJpZXIubmFtZSc7XG52YXIgVE1QX05FVF9IT1NUX0NBUlJJRVJfTUNDID0gJ25ldC5ob3N0LmNhcnJpZXIubWNjJztcbnZhciBUTVBfTkVUX0hPU1RfQ0FSUklFUl9NTkMgPSAnbmV0Lmhvc3QuY2Fycmllci5tbmMnO1xudmFyIFRNUF9ORVRfSE9TVF9DQVJSSUVSX0lDQyA9ICduZXQuaG9zdC5jYXJyaWVyLmljYyc7XG52YXIgVE1QX1BFRVJfU0VSVklDRSA9ICdwZWVyLnNlcnZpY2UnO1xudmFyIFRNUF9FTkRVU0VSX0lEID0gJ2VuZHVzZXIuaWQnO1xudmFyIFRNUF9FTkRVU0VSX1JPTEUgPSAnZW5kdXNlci5yb2xlJztcbnZhciBUTVBfRU5EVVNFUl9TQ09QRSA9ICdlbmR1c2VyLnNjb3BlJztcbnZhciBUTVBfVEhSRUFEX0lEID0gJ3RocmVhZC5pZCc7XG52YXIgVE1QX1RIUkVBRF9OQU1FID0gJ3RocmVhZC5uYW1lJztcbnZhciBUTVBfQ09ERV9GVU5DVElPTiA9ICdjb2RlLmZ1bmN0aW9uJztcbnZhciBUTVBfQ09ERV9OQU1FU1BBQ0UgPSAnY29kZS5uYW1lc3BhY2UnO1xudmFyIFRNUF9DT0RFX0ZJTEVQQVRIID0gJ2NvZGUuZmlsZXBhdGgnO1xudmFyIFRNUF9DT0RFX0xJTkVOTyA9ICdjb2RlLmxpbmVubyc7XG52YXIgVE1QX0hUVFBfTUVUSE9EID0gJ2h0dHAubWV0aG9kJztcbnZhciBUTVBfSFRUUF9VUkwgPSAnaHR0cC51cmwnO1xudmFyIFRNUF9IVFRQX1RBUkdFVCA9ICdodHRwLnRhcmdldCc7XG52YXIgVE1QX0hUVFBfSE9TVCA9ICdodHRwLmhvc3QnO1xudmFyIFRNUF9IVFRQX1NDSEVNRSA9ICdodHRwLnNjaGVtZSc7XG52YXIgVE1QX0hUVFBfU1RBVFVTX0NPREUgPSAnaHR0cC5zdGF0dXNfY29kZSc7XG52YXIgVE1QX0hUVFBfRkxBVk9SID0gJ2h0dHAuZmxhdm9yJztcbnZhciBUTVBfSFRUUF9VU0VSX0FHRU5UID0gJ2h0dHAudXNlcl9hZ2VudCc7XG52YXIgVE1QX0hUVFBfUkVRVUVTVF9DT05URU5UX0xFTkdUSCA9ICdodHRwLnJlcXVlc3RfY29udGVudF9sZW5ndGgnO1xudmFyIFRNUF9IVFRQX1JFUVVFU1RfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEID0gJ2h0dHAucmVxdWVzdF9jb250ZW50X2xlbmd0aF91bmNvbXByZXNzZWQnO1xudmFyIFRNUF9IVFRQX1JFU1BPTlNFX0NPTlRFTlRfTEVOR1RIID0gJ2h0dHAucmVzcG9uc2VfY29udGVudF9sZW5ndGgnO1xudmFyIFRNUF9IVFRQX1JFU1BPTlNFX0NPTlRFTlRfTEVOR1RIX1VOQ09NUFJFU1NFRCA9ICdodHRwLnJlc3BvbnNlX2NvbnRlbnRfbGVuZ3RoX3VuY29tcHJlc3NlZCc7XG52YXIgVE1QX0hUVFBfU0VSVkVSX05BTUUgPSAnaHR0cC5zZXJ2ZXJfbmFtZSc7XG52YXIgVE1QX0hUVFBfUk9VVEUgPSAnaHR0cC5yb3V0ZSc7XG52YXIgVE1QX0hUVFBfQ0xJRU5UX0lQID0gJ2h0dHAuY2xpZW50X2lwJztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX1RBQkxFX05BTUVTID0gJ2F3cy5keW5hbW9kYi50YWJsZV9uYW1lcyc7XG52YXIgVE1QX0FXU19EWU5BTU9EQl9DT05TVU1FRF9DQVBBQ0lUWSA9ICdhd3MuZHluYW1vZGIuY29uc3VtZWRfY2FwYWNpdHknO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfSVRFTV9DT0xMRUNUSU9OX01FVFJJQ1MgPSAnYXdzLmR5bmFtb2RiLml0ZW1fY29sbGVjdGlvbl9tZXRyaWNzJztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX1BST1ZJU0lPTkVEX1JFQURfQ0FQQUNJVFkgPSAnYXdzLmR5bmFtb2RiLnByb3Zpc2lvbmVkX3JlYWRfY2FwYWNpdHknO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfUFJPVklTSU9ORURfV1JJVEVfQ0FQQUNJVFkgPSAnYXdzLmR5bmFtb2RiLnByb3Zpc2lvbmVkX3dyaXRlX2NhcGFjaXR5JztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX0NPTlNJU1RFTlRfUkVBRCA9ICdhd3MuZHluYW1vZGIuY29uc2lzdGVudF9yZWFkJztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX1BST0pFQ1RJT04gPSAnYXdzLmR5bmFtb2RiLnByb2plY3Rpb24nO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfTElNSVQgPSAnYXdzLmR5bmFtb2RiLmxpbWl0JztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX0FUVFJJQlVURVNfVE9fR0VUID0gJ2F3cy5keW5hbW9kYi5hdHRyaWJ1dGVzX3RvX2dldCc7XG52YXIgVE1QX0FXU19EWU5BTU9EQl9JTkRFWF9OQU1FID0gJ2F3cy5keW5hbW9kYi5pbmRleF9uYW1lJztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX1NFTEVDVCA9ICdhd3MuZHluYW1vZGIuc2VsZWN0JztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX0dMT0JBTF9TRUNPTkRBUllfSU5ERVhFUyA9ICdhd3MuZHluYW1vZGIuZ2xvYmFsX3NlY29uZGFyeV9pbmRleGVzJztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX0xPQ0FMX1NFQ09OREFSWV9JTkRFWEVTID0gJ2F3cy5keW5hbW9kYi5sb2NhbF9zZWNvbmRhcnlfaW5kZXhlcyc7XG52YXIgVE1QX0FXU19EWU5BTU9EQl9FWENMVVNJVkVfU1RBUlRfVEFCTEUgPSAnYXdzLmR5bmFtb2RiLmV4Y2x1c2l2ZV9zdGFydF90YWJsZSc7XG52YXIgVE1QX0FXU19EWU5BTU9EQl9UQUJMRV9DT1VOVCA9ICdhd3MuZHluYW1vZGIudGFibGVfY291bnQnO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfU0NBTl9GT1JXQVJEID0gJ2F3cy5keW5hbW9kYi5zY2FuX2ZvcndhcmQnO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfU0VHTUVOVCA9ICdhd3MuZHluYW1vZGIuc2VnbWVudCc7XG52YXIgVE1QX0FXU19EWU5BTU9EQl9UT1RBTF9TRUdNRU5UUyA9ICdhd3MuZHluYW1vZGIudG90YWxfc2VnbWVudHMnO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfQ09VTlQgPSAnYXdzLmR5bmFtb2RiLmNvdW50JztcbnZhciBUTVBfQVdTX0RZTkFNT0RCX1NDQU5ORURfQ09VTlQgPSAnYXdzLmR5bmFtb2RiLnNjYW5uZWRfY291bnQnO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfQVRUUklCVVRFX0RFRklOSVRJT05TID0gJ2F3cy5keW5hbW9kYi5hdHRyaWJ1dGVfZGVmaW5pdGlvbnMnO1xudmFyIFRNUF9BV1NfRFlOQU1PREJfR0xPQkFMX1NFQ09OREFSWV9JTkRFWF9VUERBVEVTID0gJ2F3cy5keW5hbW9kYi5nbG9iYWxfc2Vjb25kYXJ5X2luZGV4X3VwZGF0ZXMnO1xudmFyIFRNUF9NRVNTQUdJTkdfU1lTVEVNID0gJ21lc3NhZ2luZy5zeXN0ZW0nO1xudmFyIFRNUF9NRVNTQUdJTkdfREVTVElOQVRJT04gPSAnbWVzc2FnaW5nLmRlc3RpbmF0aW9uJztcbnZhciBUTVBfTUVTU0FHSU5HX0RFU1RJTkFUSU9OX0tJTkQgPSAnbWVzc2FnaW5nLmRlc3RpbmF0aW9uX2tpbmQnO1xudmFyIFRNUF9NRVNTQUdJTkdfVEVNUF9ERVNUSU5BVElPTiA9ICdtZXNzYWdpbmcudGVtcF9kZXN0aW5hdGlvbic7XG52YXIgVE1QX01FU1NBR0lOR19QUk9UT0NPTCA9ICdtZXNzYWdpbmcucHJvdG9jb2wnO1xudmFyIFRNUF9NRVNTQUdJTkdfUFJPVE9DT0xfVkVSU0lPTiA9ICdtZXNzYWdpbmcucHJvdG9jb2xfdmVyc2lvbic7XG52YXIgVE1QX01FU1NBR0lOR19VUkwgPSAnbWVzc2FnaW5nLnVybCc7XG52YXIgVE1QX01FU1NBR0lOR19NRVNTQUdFX0lEID0gJ21lc3NhZ2luZy5tZXNzYWdlX2lkJztcbnZhciBUTVBfTUVTU0FHSU5HX0NPTlZFUlNBVElPTl9JRCA9ICdtZXNzYWdpbmcuY29udmVyc2F0aW9uX2lkJztcbnZhciBUTVBfTUVTU0FHSU5HX01FU1NBR0VfUEFZTE9BRF9TSVpFX0JZVEVTID0gJ21lc3NhZ2luZy5tZXNzYWdlX3BheWxvYWRfc2l6ZV9ieXRlcyc7XG52YXIgVE1QX01FU1NBR0lOR19NRVNTQUdFX1BBWUxPQURfQ09NUFJFU1NFRF9TSVpFX0JZVEVTID0gJ21lc3NhZ2luZy5tZXNzYWdlX3BheWxvYWRfY29tcHJlc3NlZF9zaXplX2J5dGVzJztcbnZhciBUTVBfTUVTU0FHSU5HX09QRVJBVElPTiA9ICdtZXNzYWdpbmcub3BlcmF0aW9uJztcbnZhciBUTVBfTUVTU0FHSU5HX0NPTlNVTUVSX0lEID0gJ21lc3NhZ2luZy5jb25zdW1lcl9pZCc7XG52YXIgVE1QX01FU1NBR0lOR19SQUJCSVRNUV9ST1VUSU5HX0tFWSA9ICdtZXNzYWdpbmcucmFiYml0bXEucm91dGluZ19rZXknO1xudmFyIFRNUF9NRVNTQUdJTkdfS0FGS0FfTUVTU0FHRV9LRVkgPSAnbWVzc2FnaW5nLmthZmthLm1lc3NhZ2Vfa2V5JztcbnZhciBUTVBfTUVTU0FHSU5HX0tBRktBX0NPTlNVTUVSX0dST1VQID0gJ21lc3NhZ2luZy5rYWZrYS5jb25zdW1lcl9ncm91cCc7XG52YXIgVE1QX01FU1NBR0lOR19LQUZLQV9DTElFTlRfSUQgPSAnbWVzc2FnaW5nLmthZmthLmNsaWVudF9pZCc7XG52YXIgVE1QX01FU1NBR0lOR19LQUZLQV9QQVJUSVRJT04gPSAnbWVzc2FnaW5nLmthZmthLnBhcnRpdGlvbic7XG52YXIgVE1QX01FU1NBR0lOR19LQUZLQV9UT01CU1RPTkUgPSAnbWVzc2FnaW5nLmthZmthLnRvbWJzdG9uZSc7XG52YXIgVE1QX1JQQ19TWVNURU0gPSAncnBjLnN5c3RlbSc7XG52YXIgVE1QX1JQQ19TRVJWSUNFID0gJ3JwYy5zZXJ2aWNlJztcbnZhciBUTVBfUlBDX01FVEhPRCA9ICdycGMubWV0aG9kJztcbnZhciBUTVBfUlBDX0dSUENfU1RBVFVTX0NPREUgPSAncnBjLmdycGMuc3RhdHVzX2NvZGUnO1xudmFyIFRNUF9SUENfSlNPTlJQQ19WRVJTSU9OID0gJ3JwYy5qc29ucnBjLnZlcnNpb24nO1xudmFyIFRNUF9SUENfSlNPTlJQQ19SRVFVRVNUX0lEID0gJ3JwYy5qc29ucnBjLnJlcXVlc3RfaWQnO1xudmFyIFRNUF9SUENfSlNPTlJQQ19FUlJPUl9DT0RFID0gJ3JwYy5qc29ucnBjLmVycm9yX2NvZGUnO1xudmFyIFRNUF9SUENfSlNPTlJQQ19FUlJPUl9NRVNTQUdFID0gJ3JwYy5qc29ucnBjLmVycm9yX21lc3NhZ2UnO1xudmFyIFRNUF9NRVNTQUdFX1RZUEUgPSAnbWVzc2FnZS50eXBlJztcbnZhciBUTVBfTUVTU0FHRV9JRCA9ICdtZXNzYWdlLmlkJztcbnZhciBUTVBfTUVTU0FHRV9DT01QUkVTU0VEX1NJWkUgPSAnbWVzc2FnZS5jb21wcmVzc2VkX3NpemUnO1xudmFyIFRNUF9NRVNTQUdFX1VOQ09NUFJFU1NFRF9TSVpFID0gJ21lc3NhZ2UudW5jb21wcmVzc2VkX3NpemUnO1xuLyoqXG4gKiBUaGUgZnVsbCBpbnZva2VkIEFSTiBhcyBwcm92aWRlZCBvbiB0aGUgYENvbnRleHRgIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gKGBMYW1iZGEtUnVudGltZS1JbnZva2VkLUZ1bmN0aW9uLUFybmAgaGVhZGVyIG9uIHRoZSBgL3J1bnRpbWUvaW52b2NhdGlvbi9uZXh0YCBhcHBsaWNhYmxlKS5cbiAqXG4gKiBOb3RlOiBUaGlzIG1heSBiZSBkaWZmZXJlbnQgZnJvbSBgZmFhcy5pZGAgaWYgYW4gYWxpYXMgaXMgaW52b2x2ZWQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfQVdTX0xBTUJEQV9JTlZPS0VEX0FSTiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfQVdTX0xBTUJEQV9JTlZPS0VEX0FSTiA9IFRNUF9BV1NfTEFNQkRBX0lOVk9LRURfQVJOO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9EQl9TWVNURU0gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX1NZU1RFTSA9IFRNUF9EQl9TWVNURU07XG4vKipcbiAqIFRoZSBjb25uZWN0aW9uIHN0cmluZyB1c2VkIHRvIGNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlLiBJdCBpcyByZWNvbW1lbmRlZCB0byByZW1vdmUgZW1iZWRkZWQgY3JlZGVudGlhbHMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfREJfQ09OTkVDVElPTl9TVFJJTkcgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX0NPTk5FQ1RJT05fU1RSSU5HID0gVE1QX0RCX0NPTk5FQ1RJT05fU1RSSU5HO1xuLyoqXG4gKiBVc2VybmFtZSBmb3IgYWNjZXNzaW5nIHRoZSBkYXRhYmFzZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9EQl9VU0VSIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19EQl9VU0VSID0gVE1QX0RCX1VTRVI7XG4vKipcbiAqIFRoZSBmdWxseS1xdWFsaWZpZWQgY2xhc3MgbmFtZSBvZiB0aGUgW0phdmEgRGF0YWJhc2UgQ29ubmVjdGl2aXR5IChKREJDKV0oaHR0cHM6Ly9kb2NzLm9yYWNsZS5jb20vamF2YXNlLzgvZG9jcy90ZWNobm90ZXMvZ3VpZGVzL2pkYmMvKSBkcml2ZXIgdXNlZCB0byBjb25uZWN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0RCX0pEQkNfRFJJVkVSX0NMQVNTTkFNRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfREJfSkRCQ19EUklWRVJfQ0xBU1NOQU1FID0gVE1QX0RCX0pEQkNfRFJJVkVSX0NMQVNTTkFNRTtcbi8qKlxuICogSWYgbm8gW3RlY2gtc3BlY2lmaWMgYXR0cmlidXRlXSgjY2FsbC1sZXZlbC1hdHRyaWJ1dGVzLWZvci1zcGVjaWZpYy10ZWNobm9sb2dpZXMpIGlzIGRlZmluZWQsIHRoaXMgYXR0cmlidXRlIGlzIHVzZWQgdG8gcmVwb3J0IHRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSBiZWluZyBhY2Nlc3NlZC4gRm9yIGNvbW1hbmRzIHRoYXQgc3dpdGNoIHRoZSBkYXRhYmFzZSwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIHRoZSB0YXJnZXQgZGF0YWJhc2UgKGV2ZW4gaWYgdGhlIGNvbW1hbmQgZmFpbHMpLlxuICpcbiAqIE5vdGU6IEluIHNvbWUgU1FMIGRhdGFiYXNlcywgdGhlIGRhdGFiYXNlIG5hbWUgdG8gYmUgdXNlZCBpcyBjYWxsZWQgJiMzNDtzY2hlbWEgbmFtZSYjMzQ7LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0RCX05BTUUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX05BTUUgPSBUTVBfREJfTkFNRTtcbi8qKlxuICogVGhlIGRhdGFiYXNlIHN0YXRlbWVudCBiZWluZyBleGVjdXRlZC5cbiAqXG4gKiBOb3RlOiBUaGUgdmFsdWUgbWF5IGJlIHNhbml0aXplZCB0byBleGNsdWRlIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9EQl9TVEFURU1FTlQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX1NUQVRFTUVOVCA9IFRNUF9EQl9TVEFURU1FTlQ7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpb24gYmVpbmcgZXhlY3V0ZWQsIGUuZy4gdGhlIFtNb25nb0RCIGNvbW1hbmQgbmFtZV0oaHR0cHM6Ly9kb2NzLm1vbmdvZGIuY29tL21hbnVhbC9yZWZlcmVuY2UvY29tbWFuZC8jZGF0YWJhc2Utb3BlcmF0aW9ucykgc3VjaCBhcyBgZmluZEFuZE1vZGlmeWAsIG9yIHRoZSBTUUwga2V5d29yZC5cbiAqXG4gKiBOb3RlOiBXaGVuIHNldHRpbmcgdGhpcyB0byBhbiBTUUwga2V5d29yZCwgaXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIGF0dGVtcHQgYW55IGNsaWVudC1zaWRlIHBhcnNpbmcgb2YgYGRiLnN0YXRlbWVudGAganVzdCB0byBnZXQgdGhpcyBwcm9wZXJ0eSwgYnV0IGl0IHNob3VsZCBiZSBzZXQgaWYgdGhlIG9wZXJhdGlvbiBuYW1lIGlzIHByb3ZpZGVkIGJ5IHRoZSBsaWJyYXJ5IGJlaW5nIGluc3RydW1lbnRlZC4gSWYgdGhlIFNRTCBzdGF0ZW1lbnQgaGFzIGFuIGFtYmlndW91cyBvcGVyYXRpb24sIG9yIHBlcmZvcm1zIG1vcmUgdGhhbiBvbmUgb3BlcmF0aW9uLCB0aGlzIHZhbHVlIG1heSBiZSBvbWl0dGVkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0RCX09QRVJBVElPTiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfREJfT1BFUkFUSU9OID0gVE1QX0RCX09QRVJBVElPTjtcbi8qKlxuICogVGhlIE1pY3Jvc29mdCBTUUwgU2VydmVyIFtpbnN0YW5jZSBuYW1lXShodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi11cy9zcWwvY29ubmVjdC9qZGJjL2J1aWxkaW5nLXRoZS1jb25uZWN0aW9uLXVybD92aWV3PXNxbC1zZXJ2ZXItdmVyMTUpIGNvbm5lY3RpbmcgdG8uIFRoaXMgbmFtZSBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgcG9ydCBvZiBhIG5hbWVkIGluc3RhbmNlLlxuICpcbiAqIE5vdGU6IElmIHNldHRpbmcgYSBgZGIubXNzcWwuaW5zdGFuY2VfbmFtZWAsIGBuZXQucGVlci5wb3J0YCBpcyBubyBsb25nZXIgcmVxdWlyZWQgKGJ1dCBzdGlsbCByZWNvbW1lbmRlZCBpZiBub24tc3RhbmRhcmQpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0RCX01TU1FMX0lOU1RBTkNFX05BTUUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX01TU1FMX0lOU1RBTkNFX05BTUUgPSBUTVBfREJfTVNTUUxfSU5TVEFOQ0VfTkFNRTtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGtleXNwYWNlIGJlaW5nIGFjY2Vzc2VkLiBUbyBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGdlbmVyaWMgYGRiLm5hbWVgIGF0dHJpYnV0ZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9EQl9OQU1FIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19EQl9DQVNTQU5EUkFfS0VZU1BBQ0UgPSBUTVBfREJfQ0FTU0FORFJBX0tFWVNQQUNFO1xuLyoqXG4gKiBUaGUgZmV0Y2ggc2l6ZSB1c2VkIGZvciBwYWdpbmcsIGkuZS4gaG93IG1hbnkgcm93cyB3aWxsIGJlIHJldHVybmVkIGF0IG9uY2UuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfREJfQ0FTU0FORFJBX1BBR0VfU0laRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfREJfQ0FTU0FORFJBX1BBR0VfU0laRSA9IFRNUF9EQl9DQVNTQU5EUkFfUEFHRV9TSVpFO1xuLyoqXG4gKiBUaGUgY29uc2lzdGVuY3kgbGV2ZWwgb2YgdGhlIHF1ZXJ5LiBCYXNlZCBvbiBjb25zaXN0ZW5jeSB2YWx1ZXMgZnJvbSBbQ1FMXShodHRwczovL2RvY3MuZGF0YXN0YXguY29tL2VuL2Nhc3NhbmRyYS1vc3MvMy4wL2Nhc3NhbmRyYS9kbWwvZG1sQ29uZmlnQ29uc2lzdGVuY3kuaHRtbCkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19EQl9DQVNTQU5EUkFfQ09OU0lTVEVOQ1lfTEVWRUwgPSBUTVBfREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMO1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgcHJpbWFyeSB0YWJsZSB0aGF0IHRoZSBvcGVyYXRpb24gaXMgYWN0aW5nIHVwb24sIGluY2x1ZGluZyB0aGUgc2NoZW1hIG5hbWUgKGlmIGFwcGxpY2FibGUpLlxuICpcbiAqIE5vdGU6IFRoaXMgbWlycm9ycyB0aGUgZGIuc3FsLnRhYmxlIGF0dHJpYnV0ZSBidXQgcmVmZXJlbmNlcyBjYXNzYW5kcmEgcmF0aGVyIHRoYW4gc3FsLiBJdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gYXR0ZW1wdCBhbnkgY2xpZW50LXNpZGUgcGFyc2luZyBvZiBgZGIuc3RhdGVtZW50YCBqdXN0IHRvIGdldCB0aGlzIHByb3BlcnR5LCBidXQgaXQgc2hvdWxkIGJlIHNldCBpZiBpdCBpcyBwcm92aWRlZCBieSB0aGUgbGlicmFyeSBiZWluZyBpbnN0cnVtZW50ZWQuIElmIHRoZSBvcGVyYXRpb24gaXMgYWN0aW5nIHVwb24gYW4gYW5vbnltb3VzIHRhYmxlLCBvciBtb3JlIHRoYW4gb25lIHRhYmxlLCB0aGlzIHZhbHVlIE1VU1QgTk9UIGJlIHNldC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9EQl9DQVNTQU5EUkFfVEFCTEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX0NBU1NBTkRSQV9UQUJMRSA9IFRNUF9EQl9DQVNTQU5EUkFfVEFCTEU7XG4vKipcbiAqIFdoZXRoZXIgb3Igbm90IHRoZSBxdWVyeSBpcyBpZGVtcG90ZW50LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0RCX0NBU1NBTkRSQV9JREVNUE9URU5DRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfREJfQ0FTU0FORFJBX0lERU1QT1RFTkNFID0gVE1QX0RCX0NBU1NBTkRSQV9JREVNUE9URU5DRTtcbi8qKlxuICogVGhlIG51bWJlciBvZiB0aW1lcyBhIHF1ZXJ5IHdhcyBzcGVjdWxhdGl2ZWx5IGV4ZWN1dGVkLiBOb3Qgc2V0IG9yIGAwYCBpZiB0aGUgcXVlcnkgd2FzIG5vdCBleGVjdXRlZCBzcGVjdWxhdGl2ZWx5LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0RCX0NBU1NBTkRSQV9TUEVDVUxBVElWRV9FWEVDVVRJT05fQ09VTlQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX0NBU1NBTkRSQV9TUEVDVUxBVElWRV9FWEVDVVRJT05fQ09VTlQgPSBUTVBfREJfQ0FTU0FORFJBX1NQRUNVTEFUSVZFX0VYRUNVVElPTl9DT1VOVDtcbi8qKlxuICogVGhlIElEIG9mIHRoZSBjb29yZGluYXRpbmcgbm9kZSBmb3IgYSBxdWVyeS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9EQl9DQVNTQU5EUkFfQ09PUkRJTkFUT1JfSUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX0NBU1NBTkRSQV9DT09SRElOQVRPUl9JRCA9IFRNUF9EQl9DQVNTQU5EUkFfQ09PUkRJTkFUT1JfSUQ7XG4vKipcbiAqIFRoZSBkYXRhIGNlbnRlciBvZiB0aGUgY29vcmRpbmF0aW5nIG5vZGUgZm9yIGEgcXVlcnkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfREJfQ0FTU0FORFJBX0NPT1JESU5BVE9SX0RDIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19EQl9DQVNTQU5EUkFfQ09PUkRJTkFUT1JfREMgPSBUTVBfREJfQ0FTU0FORFJBX0NPT1JESU5BVE9SX0RDO1xuLyoqXG4gKiBUaGUgW0hCYXNlIG5hbWVzcGFjZV0oaHR0cHM6Ly9oYmFzZS5hcGFjaGUub3JnL2Jvb2suaHRtbCNfbmFtZXNwYWNlKSBiZWluZyBhY2Nlc3NlZC4gVG8gYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljIGBkYi5uYW1lYCBhdHRyaWJ1dGUuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfREJfTkFNRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfREJfSEJBU0VfTkFNRVNQQUNFID0gVE1QX0RCX0hCQVNFX05BTUVTUEFDRTtcbi8qKlxuICogVGhlIGluZGV4IG9mIHRoZSBkYXRhYmFzZSBiZWluZyBhY2Nlc3NlZCBhcyB1c2VkIGluIHRoZSBbYFNFTEVDVGAgY29tbWFuZF0oaHR0cHM6Ly9yZWRpcy5pby9jb21tYW5kcy9zZWxlY3QpLCBwcm92aWRlZCBhcyBhbiBpbnRlZ2VyLiBUbyBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGdlbmVyaWMgYGRiLm5hbWVgIGF0dHJpYnV0ZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9EQl9SRURJU19EQVRBQkFTRV9JTkRFWCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfREJfUkVESVNfREFUQUJBU0VfSU5ERVggPSBUTVBfREJfUkVESVNfREFUQUJBU0VfSU5ERVg7XG4vKipcbiAqIFRoZSBjb2xsZWN0aW9uIGJlaW5nIGFjY2Vzc2VkIHdpdGhpbiB0aGUgZGF0YWJhc2Ugc3RhdGVkIGluIGBkYi5uYW1lYC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9EQl9NT05HT0RCX0NPTExFQ1RJT04gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0RCX01PTkdPREJfQ09MTEVDVElPTiA9IFRNUF9EQl9NT05HT0RCX0NPTExFQ1RJT047XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBwcmltYXJ5IHRhYmxlIHRoYXQgdGhlIG9wZXJhdGlvbiBpcyBhY3RpbmcgdXBvbiwgaW5jbHVkaW5nIHRoZSBzY2hlbWEgbmFtZSAoaWYgYXBwbGljYWJsZSkuXG4gKlxuICogTm90ZTogSXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIGF0dGVtcHQgYW55IGNsaWVudC1zaWRlIHBhcnNpbmcgb2YgYGRiLnN0YXRlbWVudGAganVzdCB0byBnZXQgdGhpcyBwcm9wZXJ0eSwgYnV0IGl0IHNob3VsZCBiZSBzZXQgaWYgaXQgaXMgcHJvdmlkZWQgYnkgdGhlIGxpYnJhcnkgYmVpbmcgaW5zdHJ1bWVudGVkLiBJZiB0aGUgb3BlcmF0aW9uIGlzIGFjdGluZyB1cG9uIGFuIGFub255bW91cyB0YWJsZSwgb3IgbW9yZSB0aGFuIG9uZSB0YWJsZSwgdGhpcyB2YWx1ZSBNVVNUIE5PVCBiZSBzZXQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfREJfU1FMX1RBQkxFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19EQl9TUUxfVEFCTEUgPSBUTVBfREJfU1FMX1RBQkxFO1xuLyoqXG4gKiBUaGUgdHlwZSBvZiB0aGUgZXhjZXB0aW9uIChpdHMgZnVsbHktcXVhbGlmaWVkIGNsYXNzIG5hbWUsIGlmIGFwcGxpY2FibGUpLiBUaGUgZHluYW1pYyB0eXBlIG9mIHRoZSBleGNlcHRpb24gc2hvdWxkIGJlIHByZWZlcnJlZCBvdmVyIHRoZSBzdGF0aWMgdHlwZSBpbiBsYW5ndWFnZXMgdGhhdCBzdXBwb3J0IGl0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0VYQ0VQVElPTl9UWVBFLlxuICovXG52YXIgU0VNQVRUUlNfRVhDRVBUSU9OX1RZUEUgPSBUTVBfRVhDRVBUSU9OX1RZUEU7XG4vKipcbiAqIFRoZSBleGNlcHRpb24gbWVzc2FnZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9FWENFUFRJT05fTUVTU0FHRS5cbiAqL1xudmFyIFNFTUFUVFJTX0VYQ0VQVElPTl9NRVNTQUdFID0gVE1QX0VYQ0VQVElPTl9NRVNTQUdFO1xuLyoqXG4gKiBBIHN0YWNrdHJhY2UgYXMgYSBzdHJpbmcgaW4gdGhlIG5hdHVyYWwgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBsYW5ndWFnZSBydW50aW1lLiBUaGUgcmVwcmVzZW50YXRpb24gaXMgdG8gYmUgZGV0ZXJtaW5lZCBhbmQgZG9jdW1lbnRlZCBieSBlYWNoIGxhbmd1YWdlIFNJRy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9FWENFUFRJT05fU1RBQ0tUUkFDRS5cbiAqL1xudmFyIFNFTUFUVFJTX0VYQ0VQVElPTl9TVEFDS1RSQUNFID0gVE1QX0VYQ0VQVElPTl9TVEFDS1RSQUNFO1xuLyoqXG4qIFNIT1VMRCBiZSBzZXQgdG8gdHJ1ZSBpZiB0aGUgZXhjZXB0aW9uIGV2ZW50IGlzIHJlY29yZGVkIGF0IGEgcG9pbnQgd2hlcmUgaXQgaXMga25vd24gdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGVzY2FwaW5nIHRoZSBzY29wZSBvZiB0aGUgc3Bhbi5cbipcbiogTm90ZTogQW4gZXhjZXB0aW9uIGlzIGNvbnNpZGVyZWQgdG8gaGF2ZSBlc2NhcGVkIChvciBsZWZ0KSB0aGUgc2NvcGUgb2YgYSBzcGFuLFxuaWYgdGhhdCBzcGFuIGlzIGVuZGVkIHdoaWxlIHRoZSBleGNlcHRpb24gaXMgc3RpbGwgbG9naWNhbGx5ICYjMzQ7aW4gZmxpZ2h0JiMzNDsuXG5UaGlzIG1heSBiZSBhY3R1YWxseSAmIzM0O2luIGZsaWdodCYjMzQ7IGluIHNvbWUgbGFuZ3VhZ2VzIChlLmcuIGlmIHRoZSBleGNlcHRpb25cbmlzIHBhc3NlZCB0byBhIENvbnRleHQgbWFuYWdlciYjMzk7cyBgX19leGl0X19gIG1ldGhvZCBpbiBQeXRob24pIGJ1dCB3aWxsXG51c3VhbGx5IGJlIGNhdWdodCBhdCB0aGUgcG9pbnQgb2YgcmVjb3JkaW5nIHRoZSBleGNlcHRpb24gaW4gbW9zdCBsYW5ndWFnZXMuXG5cbkl0IGlzIHVzdWFsbHkgbm90IHBvc3NpYmxlIHRvIGRldGVybWluZSBhdCB0aGUgcG9pbnQgd2hlcmUgYW4gZXhjZXB0aW9uIGlzIHRocm93blxud2hldGhlciBpdCB3aWxsIGVzY2FwZSB0aGUgc2NvcGUgb2YgYSBzcGFuLlxuSG93ZXZlciwgaXQgaXMgdHJpdmlhbCB0byBrbm93IHRoYXQgYW4gZXhjZXB0aW9uXG53aWxsIGVzY2FwZSwgaWYgb25lIGNoZWNrcyBmb3IgYW4gYWN0aXZlIGV4Y2VwdGlvbiBqdXN0IGJlZm9yZSBlbmRpbmcgdGhlIHNwYW4sXG5hcyBkb25lIGluIHRoZSBbZXhhbXBsZSBhYm92ZV0oI2V4Y2VwdGlvbi1lbmQtZXhhbXBsZSkuXG5cbkl0IGZvbGxvd3MgdGhhdCBhbiBleGNlcHRpb24gbWF5IHN0aWxsIGVzY2FwZSB0aGUgc2NvcGUgb2YgdGhlIHNwYW5cbmV2ZW4gaWYgdGhlIGBleGNlcHRpb24uZXNjYXBlZGAgYXR0cmlidXRlIHdhcyBub3Qgc2V0IG9yIHNldCB0byBmYWxzZSxcbnNpbmNlIHRoZSBldmVudCBtaWdodCBoYXZlIGJlZW4gcmVjb3JkZWQgYXQgYSB0aW1lIHdoZXJlIGl0IHdhcyBub3RcbmNsZWFyIHdoZXRoZXIgdGhlIGV4Y2VwdGlvbiB3aWxsIGVzY2FwZS5cbipcbiogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfRVhDRVBUSU9OX0VTQ0FQRUQuXG4qL1xudmFyIFNFTUFUVFJTX0VYQ0VQVElPTl9FU0NBUEVEID0gVE1QX0VYQ0VQVElPTl9FU0NBUEVEO1xuLyoqXG4gKiBUeXBlIG9mIHRoZSB0cmlnZ2VyIG9uIHdoaWNoIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9GQUFTX1RSSUdHRVIgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0ZBQVNfVFJJR0dFUiA9IFRNUF9GQUFTX1RSSUdHRVI7XG4vKipcbiAqIFRoZSBleGVjdXRpb24gSUQgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24gZXhlY3V0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0ZBQVNfSU5WT0NBVElPTl9JRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfRkFBU19FWEVDVVRJT04gPSBUTVBfRkFBU19FWEVDVVRJT047XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBzb3VyY2Ugb24gd2hpY2ggdGhlIHRyaWdnZXJpbmcgb3BlcmF0aW9uIHdhcyBwZXJmb3JtZWQuIEZvciBleGFtcGxlLCBpbiBDbG91ZCBTdG9yYWdlIG9yIFMzIGNvcnJlc3BvbmRzIHRvIHRoZSBidWNrZXQgbmFtZSwgYW5kIGluIENvc21vcyBEQiB0byB0aGUgZGF0YWJhc2UgbmFtZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9GQUFTX0RPQ1VNRU5UX0NPTExFQ1RJT04gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0ZBQVNfRE9DVU1FTlRfQ09MTEVDVElPTiA9IFRNUF9GQUFTX0RPQ1VNRU5UX0NPTExFQ1RJT047XG4vKipcbiAqIERlc2NyaWJlcyB0aGUgdHlwZSBvZiB0aGUgb3BlcmF0aW9uIHRoYXQgd2FzIHBlcmZvcm1lZCBvbiB0aGUgZGF0YS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9GQUFTX0RPQ1VNRU5UX09QRVJBVElPTiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfRkFBU19ET0NVTUVOVF9PUEVSQVRJT04gPSBUTVBfRkFBU19ET0NVTUVOVF9PUEVSQVRJT047XG4vKipcbiAqIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHRpbWUgd2hlbiB0aGUgZGF0YSB3YXMgYWNjZXNzZWQgaW4gdGhlIFtJU08gODYwMV0oaHR0cHM6Ly93d3cuaXNvLm9yZy9pc28tODYwMS1kYXRlLWFuZC10aW1lLWZvcm1hdC5odG1sKSBmb3JtYXQgZXhwcmVzc2VkIGluIFtVVENdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi9OT1RFLWRhdGV0aW1lKS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9GQUFTX0RPQ1VNRU5UX1RJTUUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0ZBQVNfRE9DVU1FTlRfVElNRSA9IFRNUF9GQUFTX0RPQ1VNRU5UX1RJTUU7XG4vKipcbiAqIFRoZSBkb2N1bWVudCBuYW1lL3RhYmxlIHN1YmplY3RlZCB0byB0aGUgb3BlcmF0aW9uLiBGb3IgZXhhbXBsZSwgaW4gQ2xvdWQgU3RvcmFnZSBvciBTMyBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSwgYW5kIGluIENvc21vcyBEQiB0aGUgdGFibGUgbmFtZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9GQUFTX0RPQ1VNRU5UX05BTUUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0ZBQVNfRE9DVU1FTlRfTkFNRSA9IFRNUF9GQUFTX0RPQ1VNRU5UX05BTUU7XG4vKipcbiAqIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZ1bmN0aW9uIGludm9jYXRpb24gdGltZSBpbiB0aGUgW0lTTyA4NjAxXShodHRwczovL3d3dy5pc28ub3JnL2lzby04NjAxLWRhdGUtYW5kLXRpbWUtZm9ybWF0Lmh0bWwpIGZvcm1hdCBleHByZXNzZWQgaW4gW1VUQ10oaHR0cHM6Ly93d3cudzMub3JnL1RSL05PVEUtZGF0ZXRpbWUpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0ZBQVNfVElNRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfRkFBU19USU1FID0gVE1QX0ZBQVNfVElNRTtcbi8qKlxuICogQSBzdHJpbmcgY29udGFpbmluZyB0aGUgc2NoZWR1bGUgcGVyaW9kIGFzIFtDcm9uIEV4cHJlc3Npb25dKGh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2NkL0UxMjA1OF8wMS9kb2MvZG9jLjEwMTQvZTEyMDMwL2Nyb25fZXhwcmVzc2lvbnMuaHRtKS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9GQUFTX0NST04gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0ZBQVNfQ1JPTiA9IFRNUF9GQUFTX0NST047XG4vKipcbiAqIEEgYm9vbGVhbiB0aGF0IGlzIHRydWUgaWYgdGhlIHNlcnZlcmxlc3MgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgZm9yIHRoZSBmaXJzdCB0aW1lIChha2EgY29sZC1zdGFydCkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfRkFBU19DT0xEU1RBUlQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0ZBQVNfQ09MRFNUQVJUID0gVE1QX0ZBQVNfQ09MRFNUQVJUO1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqXG4gKiBOb3RlOiBTSE9VTEQgYmUgZXF1YWwgdG8gdGhlIGBmYWFzLm5hbWVgIHJlc291cmNlIGF0dHJpYnV0ZSBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9GQUFTX0lOVk9LRURfTkFNRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfRkFBU19JTlZPS0VEX05BTUUgPSBUTVBfRkFBU19JTlZPS0VEX05BTUU7XG4vKipcbiAqIFRoZSBjbG91ZCBwcm92aWRlciBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqXG4gKiBOb3RlOiBTSE9VTEQgYmUgZXF1YWwgdG8gdGhlIGBjbG91ZC5wcm92aWRlcmAgcmVzb3VyY2UgYXR0cmlidXRlIG9mIHRoZSBpbnZva2VkIGZ1bmN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0ZBQVNfSU5WT0tFRF9QUk9WSURFUiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfRkFBU19JTlZPS0VEX1BST1ZJREVSID0gVE1QX0ZBQVNfSU5WT0tFRF9QUk9WSURFUjtcbi8qKlxuICogVGhlIGNsb3VkIHJlZ2lvbiBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqXG4gKiBOb3RlOiBTSE9VTEQgYmUgZXF1YWwgdG8gdGhlIGBjbG91ZC5yZWdpb25gIHJlc291cmNlIGF0dHJpYnV0ZSBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9GQUFTX0lOVk9LRURfUkVHSU9OIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19GQUFTX0lOVk9LRURfUkVHSU9OID0gVE1QX0ZBQVNfSU5WT0tFRF9SRUdJT047XG4vKipcbiAqIFRyYW5zcG9ydCBwcm90b2NvbCB1c2VkLiBTZWUgbm90ZSBiZWxvdy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRfVFJBTlNQT1JUIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19ORVRfVFJBTlNQT1JUID0gVE1QX05FVF9UUkFOU1BPUlQ7XG4vKipcbiAqIFJlbW90ZSBhZGRyZXNzIG9mIHRoZSBwZWVyIChkb3R0ZWQgZGVjaW1hbCBmb3IgSVB2NCBvciBbUkZDNTk1Ml0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzU5NTIpIGZvciBJUHY2KS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRfUEVFUl9JUCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTkVUX1BFRVJfSVAgPSBUTVBfTkVUX1BFRVJfSVA7XG4vKipcbiAqIFJlbW90ZSBwb3J0IG51bWJlci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRfUEVFUl9QT1JUIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19ORVRfUEVFUl9QT1JUID0gVE1QX05FVF9QRUVSX1BPUlQ7XG4vKipcbiAqIFJlbW90ZSBob3N0bmFtZSBvciBzaW1pbGFyLCBzZWUgbm90ZSBiZWxvdy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRfUEVFUl9OQU1FIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19ORVRfUEVFUl9OQU1FID0gVE1QX05FVF9QRUVSX05BTUU7XG4vKipcbiAqIExpa2UgYG5ldC5wZWVyLmlwYCBidXQgZm9yIHRoZSBob3N0IElQLiBVc2VmdWwgaW4gY2FzZSBvZiBhIG11bHRpLUlQIGhvc3QuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTkVUX0hPU1RfSVAgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX05FVF9IT1NUX0lQID0gVE1QX05FVF9IT1NUX0lQO1xuLyoqXG4gKiBMaWtlIGBuZXQucGVlci5wb3J0YCBidXQgZm9yIHRoZSBob3N0IHBvcnQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTkVUX0hPU1RfUE9SVCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTkVUX0hPU1RfUE9SVCA9IFRNUF9ORVRfSE9TVF9QT1JUO1xuLyoqXG4gKiBMb2NhbCBob3N0bmFtZSBvciBzaW1pbGFyLCBzZWUgbm90ZSBiZWxvdy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRfSE9TVF9OQU1FIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19ORVRfSE9TVF9OQU1FID0gVE1QX05FVF9IT1NUX05BTUU7XG4vKipcbiAqIFRoZSBpbnRlcm5ldCBjb25uZWN0aW9uIHR5cGUgY3VycmVudGx5IGJlaW5nIHVzZWQgYnkgdGhlIGhvc3QuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTkVUV09SS19DT05ORUNUSU9OX1RZUEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX05FVF9IT1NUX0NPTk5FQ1RJT05fVFlQRSA9IFRNUF9ORVRfSE9TVF9DT05ORUNUSU9OX1RZUEU7XG4vKipcbiAqIFRoaXMgZGVzY3JpYmVzIG1vcmUgZGV0YWlscyByZWdhcmRpbmcgdGhlIGNvbm5lY3Rpb24udHlwZS4gSXQgbWF5IGJlIHRoZSB0eXBlIG9mIGNlbGwgdGVjaG5vbG9neSBjb25uZWN0aW9uLCBidXQgaXQgY291bGQgYmUgdXNlZCBmb3IgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGEgd2lmaSBjb25uZWN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX05FVFdPUktfQ09OTkVDVElPTl9TVUJUWVBFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19ORVRfSE9TVF9DT05ORUNUSU9OX1NVQlRZUEUgPSBUTVBfTkVUX0hPU1RfQ09OTkVDVElPTl9TVUJUWVBFO1xuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgbW9iaWxlIGNhcnJpZXIuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTkVUV09SS19DQVJSSUVSX05BTUUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX05FVF9IT1NUX0NBUlJJRVJfTkFNRSA9IFRNUF9ORVRfSE9TVF9DQVJSSUVSX05BTUU7XG4vKipcbiAqIFRoZSBtb2JpbGUgY2FycmllciBjb3VudHJ5IGNvZGUuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTkVUV09SS19DQVJSSUVSX01DQyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTkVUX0hPU1RfQ0FSUklFUl9NQ0MgPSBUTVBfTkVUX0hPU1RfQ0FSUklFUl9NQ0M7XG4vKipcbiAqIFRoZSBtb2JpbGUgY2FycmllciBuZXR3b3JrIGNvZGUuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTkVUV09SS19DQVJSSUVSX01OQyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTkVUX0hPU1RfQ0FSUklFUl9NTkMgPSBUTVBfTkVUX0hPU1RfQ0FSUklFUl9NTkM7XG4vKipcbiAqIFRoZSBJU08gMzE2Ni0xIGFscGhhLTIgMi1jaGFyYWN0ZXIgY291bnRyeSBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgbW9iaWxlIGNhcnJpZXIgbmV0d29yay5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRXT1JLX0NBUlJJRVJfSUNDIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19ORVRfSE9TVF9DQVJSSUVSX0lDQyA9IFRNUF9ORVRfSE9TVF9DQVJSSUVSX0lDQztcbi8qKlxuICogVGhlIFtgc2VydmljZS5uYW1lYF0oLi4vLi4vcmVzb3VyY2Uvc2VtYW50aWNfY29udmVudGlvbnMvUkVBRE1FLm1kI3NlcnZpY2UpIG9mIHRoZSByZW1vdGUgc2VydmljZS4gU0hPVUxEIGJlIGVxdWFsIHRvIHRoZSBhY3R1YWwgYHNlcnZpY2UubmFtZWAgcmVzb3VyY2UgYXR0cmlidXRlIG9mIHRoZSByZW1vdGUgc2VydmljZSBpZiBhbnkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfUEVFUl9TRVJWSUNFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19QRUVSX1NFUlZJQ0UgPSBUTVBfUEVFUl9TRVJWSUNFO1xuLyoqXG4gKiBVc2VybmFtZSBvciBjbGllbnRfaWQgZXh0cmFjdGVkIGZyb20gdGhlIGFjY2VzcyB0b2tlbiBvciBbQXV0aG9yaXphdGlvbl0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzUjc2VjdGlvbi00LjIpIGhlYWRlciBpbiB0aGUgaW5ib3VuZCByZXF1ZXN0IGZyb20gb3V0c2lkZSB0aGUgc3lzdGVtLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0VORFVTRVJfSUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0VORFVTRVJfSUQgPSBUTVBfRU5EVVNFUl9JRDtcbi8qKlxuICogQWN0dWFsL2Fzc3VtZWQgcm9sZSB0aGUgY2xpZW50IGlzIG1ha2luZyB0aGUgcmVxdWVzdCB1bmRlciBleHRyYWN0ZWQgZnJvbSB0b2tlbiBvciBhcHBsaWNhdGlvbiBzZWN1cml0eSBjb250ZXh0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0VORFVTRVJfUk9MRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfRU5EVVNFUl9ST0xFID0gVE1QX0VORFVTRVJfUk9MRTtcbi8qKlxuICogU2NvcGVzIG9yIGdyYW50ZWQgYXV0aG9yaXRpZXMgdGhlIGNsaWVudCBjdXJyZW50bHkgcG9zc2Vzc2VzIGV4dHJhY3RlZCBmcm9tIHRva2VuIG9yIGFwcGxpY2F0aW9uIHNlY3VyaXR5IGNvbnRleHQuIFRoZSB2YWx1ZSB3b3VsZCBjb21lIGZyb20gdGhlIHNjb3BlIGFzc29jaWF0ZWQgd2l0aCBhbiBbT0F1dGggMi4wIEFjY2VzcyBUb2tlbl0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY3NDkjc2VjdGlvbi0zLjMpIG9yIGFuIGF0dHJpYnV0ZSB2YWx1ZSBpbiBhIFtTQU1MIDIuMCBBc3NlcnRpb25dKGh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3NlY3VyaXR5L3NhbWwvUG9zdDIuMC9zc3RjLXNhbWwtdGVjaC1vdmVydmlldy0yLjAuaHRtbCkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfRU5EVVNFUl9TQ09QRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfRU5EVVNFUl9TQ09QRSA9IFRNUF9FTkRVU0VSX1NDT1BFO1xuLyoqXG4gKiBDdXJyZW50ICYjMzQ7bWFuYWdlZCYjMzQ7IHRocmVhZCBJRCAoYXMgb3Bwb3NlZCB0byBPUyB0aHJlYWQgSUQpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX1RIUkVBRF9JRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfVEhSRUFEX0lEID0gVE1QX1RIUkVBRF9JRDtcbi8qKlxuICogQ3VycmVudCB0aHJlYWQgbmFtZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9USFJFQURfTkFNRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfVEhSRUFEX05BTUUgPSBUTVBfVEhSRUFEX05BTUU7XG4vKipcbiAqIFRoZSBtZXRob2Qgb3IgZnVuY3Rpb24gbmFtZSwgb3IgZXF1aXZhbGVudCAodXN1YWxseSByaWdodG1vc3QgcGFydCBvZiB0aGUgY29kZSB1bml0JiMzOTtzIG5hbWUpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0NPREVfRlVOQ1RJT04gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0NPREVfRlVOQ1RJT04gPSBUTVBfQ09ERV9GVU5DVElPTjtcbi8qKlxuICogVGhlICYjMzQ7bmFtZXNwYWNlJiMzNDsgd2l0aGluIHdoaWNoIGBjb2RlLmZ1bmN0aW9uYCBpcyBkZWZpbmVkLiBVc3VhbGx5IHRoZSBxdWFsaWZpZWQgY2xhc3Mgb3IgbW9kdWxlIG5hbWUsIHN1Y2ggdGhhdCBgY29kZS5uYW1lc3BhY2VgICsgc29tZSBzZXBhcmF0b3IgKyBgY29kZS5mdW5jdGlvbmAgZm9ybSBhIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29kZSB1bml0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0NPREVfTkFNRVNQQUNFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19DT0RFX05BTUVTUEFDRSA9IFRNUF9DT0RFX05BTUVTUEFDRTtcbi8qKlxuICogVGhlIHNvdXJjZSBjb2RlIGZpbGUgbmFtZSB0aGF0IGlkZW50aWZpZXMgdGhlIGNvZGUgdW5pdCBhcyB1bmlxdWVseSBhcyBwb3NzaWJsZSAocHJlZmVyYWJseSBhbiBhYnNvbHV0ZSBmaWxlIHBhdGgpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0NPREVfRklMRVBBVEggaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0NPREVfRklMRVBBVEggPSBUTVBfQ09ERV9GSUxFUEFUSDtcbi8qKlxuICogVGhlIGxpbmUgbnVtYmVyIGluIGBjb2RlLmZpbGVwYXRoYCBiZXN0IHJlcHJlc2VudGluZyB0aGUgb3BlcmF0aW9uLiBJdCBTSE9VTEQgcG9pbnQgd2l0aGluIHRoZSBjb2RlIHVuaXQgbmFtZWQgaW4gYGNvZGUuZnVuY3Rpb25gLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0NPREVfTElORU5PIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19DT0RFX0xJTkVOTyA9IFRNUF9DT0RFX0xJTkVOTztcbi8qKlxuICogSFRUUCByZXF1ZXN0IG1ldGhvZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9IVFRQX01FVEhPRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfSFRUUF9NRVRIT0QgPSBUTVBfSFRUUF9NRVRIT0Q7XG4vKipcbiAqIEZ1bGwgSFRUUCByZXF1ZXN0IFVSTCBpbiB0aGUgZm9ybSBgc2NoZW1lOi8vaG9zdFs6cG9ydF0vcGF0aD9xdWVyeVsjZnJhZ21lbnRdYC4gVXN1YWxseSB0aGUgZnJhZ21lbnQgaXMgbm90IHRyYW5zbWl0dGVkIG92ZXIgSFRUUCwgYnV0IGlmIGl0IGlzIGtub3duLCBpdCBzaG91bGQgYmUgaW5jbHVkZWQgbmV2ZXJ0aGVsZXNzLlxuICpcbiAqIE5vdGU6IGBodHRwLnVybGAgTVVTVCBOT1QgY29udGFpbiBjcmVkZW50aWFscyBwYXNzZWQgdmlhIFVSTCBpbiBmb3JtIG9mIGBodHRwczovL3VzZXJuYW1lOnBhc3N3b3JkQHd3dy5leGFtcGxlLmNvbS9gLiBJbiBzdWNoIGNhc2UgdGhlIGF0dHJpYnV0ZSYjMzk7cyB2YWx1ZSBzaG91bGQgYmUgYGh0dHBzOi8vd3d3LmV4YW1wbGUuY29tL2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfSFRUUF9VUkwgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0hUVFBfVVJMID0gVE1QX0hUVFBfVVJMO1xuLyoqXG4gKiBUaGUgZnVsbCByZXF1ZXN0IHRhcmdldCBhcyBwYXNzZWQgaW4gYSBIVFRQIHJlcXVlc3QgbGluZSBvciBlcXVpdmFsZW50LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0hUVFBfVEFSR0VUIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19IVFRQX1RBUkdFVCA9IFRNUF9IVFRQX1RBUkdFVDtcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSBbSFRUUCBob3N0IGhlYWRlcl0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi01LjQpLiBBbiBlbXB0eSBIb3N0IGhlYWRlciBzaG91bGQgYWxzbyBiZSByZXBvcnRlZCwgc2VlIG5vdGUuXG4gKlxuICogTm90ZTogV2hlbiB0aGUgaGVhZGVyIGlzIHByZXNlbnQgYnV0IGVtcHR5IHRoZSBhdHRyaWJ1dGUgU0hPVUxEIGJlIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nLiBOb3RlIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHNpdHVhdGlvbiB0aGF0IGlzIGV4cGVjdGVkIGluIGNlcnRhaW4gY2FzZXMsIGFjY29yZGluZyB0aGUgYWZvcmVtZW50aW9uZWQgW3NlY3Rpb24gb2YgUkZDIDcyMzBdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tNS40KS4gV2hlbiB0aGUgaGVhZGVyIGlzIG5vdCBzZXQgdGhlIGF0dHJpYnV0ZSBNVVNUIE5PVCBiZSBzZXQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfSFRUUF9IT1NUIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19IVFRQX0hPU1QgPSBUTVBfSFRUUF9IT1NUO1xuLyoqXG4gKiBUaGUgVVJJIHNjaGVtZSBpZGVudGlmeWluZyB0aGUgdXNlZCBwcm90b2NvbC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9IVFRQX1NDSEVNRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfSFRUUF9TQ0hFTUUgPSBUTVBfSFRUUF9TQ0hFTUU7XG4vKipcbiAqIFtIVFRQIHJlc3BvbnNlIHN0YXR1cyBjb2RlXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0hUVFBfU1RBVFVTX0NPREUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0hUVFBfU1RBVFVTX0NPREUgPSBUTVBfSFRUUF9TVEFUVVNfQ09ERTtcbi8qKlxuICogS2luZCBvZiBIVFRQIHByb3RvY29sIHVzZWQuXG4gKlxuICogTm90ZTogSWYgYG5ldC50cmFuc3BvcnRgIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGNhbiBiZSBhc3N1bWVkIHRvIGJlIGBJUC5UQ1BgIGV4Y2VwdCBpZiBgaHR0cC5mbGF2b3JgIGlzIGBRVUlDYCwgaW4gd2hpY2ggY2FzZSBgSVAuVURQYCBpcyBhc3N1bWVkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0hUVFBfRkxBVk9SIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19IVFRQX0ZMQVZPUiA9IFRNUF9IVFRQX0ZMQVZPUjtcbi8qKlxuICogVmFsdWUgb2YgdGhlIFtIVFRQIFVzZXItQWdlbnRdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNS41LjMpIGhlYWRlciBzZW50IGJ5IHRoZSBjbGllbnQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfSFRUUF9VU0VSX0FHRU5UIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19IVFRQX1VTRVJfQUdFTlQgPSBUTVBfSFRUUF9VU0VSX0FHRU5UO1xuLyoqXG4gKiBUaGUgc2l6ZSBvZiB0aGUgcmVxdWVzdCBwYXlsb2FkIGJvZHkgaW4gYnl0ZXMuIFRoaXMgaXMgdGhlIG51bWJlciBvZiBieXRlcyB0cmFuc2ZlcnJlZCBleGNsdWRpbmcgaGVhZGVycyBhbmQgaXMgb2Z0ZW4sIGJ1dCBub3QgYWx3YXlzLCBwcmVzZW50IGFzIHRoZSBbQ29udGVudC1MZW5ndGhdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4zLjIpIGhlYWRlci4gRm9yIHJlcXVlc3RzIHVzaW5nIHRyYW5zcG9ydCBlbmNvZGluZywgdGhpcyBzaG91bGQgYmUgdGhlIGNvbXByZXNzZWQgc2l6ZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9IVFRQX1JFUVVFU1RfQ09OVEVOVF9MRU5HVEggaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0hUVFBfUkVRVUVTVF9DT05URU5UX0xFTkdUSCA9IFRNUF9IVFRQX1JFUVVFU1RfQ09OVEVOVF9MRU5HVEg7XG4vKipcbiAqIFRoZSBzaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgcmVxdWVzdCBwYXlsb2FkIGJvZHkgYWZ0ZXIgdHJhbnNwb3J0IGRlY29kaW5nLiBOb3Qgc2V0IGlmIHRyYW5zcG9ydCBlbmNvZGluZyBub3QgdXNlZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9IVFRQX1JFUVVFU1RfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19IVFRQX1JFUVVFU1RfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEID0gVE1QX0hUVFBfUkVRVUVTVF9DT05URU5UX0xFTkdUSF9VTkNPTVBSRVNTRUQ7XG4vKipcbiAqIFRoZSBzaXplIG9mIHRoZSByZXNwb25zZSBwYXlsb2FkIGJvZHkgaW4gYnl0ZXMuIFRoaXMgaXMgdGhlIG51bWJlciBvZiBieXRlcyB0cmFuc2ZlcnJlZCBleGNsdWRpbmcgaGVhZGVycyBhbmQgaXMgb2Z0ZW4sIGJ1dCBub3QgYWx3YXlzLCBwcmVzZW50IGFzIHRoZSBbQ29udGVudC1MZW5ndGhdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4zLjIpIGhlYWRlci4gRm9yIHJlcXVlc3RzIHVzaW5nIHRyYW5zcG9ydCBlbmNvZGluZywgdGhpcyBzaG91bGQgYmUgdGhlIGNvbXByZXNzZWQgc2l6ZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9IVFRQX1JFU1BPTlNFX0NPTlRFTlRfTEVOR1RIIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19IVFRQX1JFU1BPTlNFX0NPTlRFTlRfTEVOR1RIID0gVE1QX0hUVFBfUkVTUE9OU0VfQ09OVEVOVF9MRU5HVEg7XG4vKipcbiAqIFRoZSBzaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgcmVzcG9uc2UgcGF5bG9hZCBib2R5IGFmdGVyIHRyYW5zcG9ydCBkZWNvZGluZy4gTm90IHNldCBpZiB0cmFuc3BvcnQgZW5jb2Rpbmcgbm90IHVzZWQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfSFRUUF9SRVNQT05TRV9DT05URU5UX0xFTkdUSF9VTkNPTVBSRVNTRUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0hUVFBfUkVTUE9OU0VfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEID0gVE1QX0hUVFBfUkVTUE9OU0VfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEO1xuLyoqXG4gKiBUaGUgcHJpbWFyeSBzZXJ2ZXIgbmFtZSBvZiB0aGUgbWF0Y2hlZCB2aXJ0dWFsIGhvc3QuIFRoaXMgc2hvdWxkIGJlIG9idGFpbmVkIHZpYSBjb25maWd1cmF0aW9uLiBJZiBubyBzdWNoIGNvbmZpZ3VyYXRpb24gY2FuIGJlIG9idGFpbmVkLCB0aGlzIGF0dHJpYnV0ZSBNVVNUIE5PVCBiZSBzZXQgKCBgbmV0Lmhvc3QubmFtZWAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCkuXG4gKlxuICogTm90ZTogYGh0dHAudXJsYCBpcyB1c3VhbGx5IG5vdCByZWFkaWx5IGF2YWlsYWJsZSBvbiB0aGUgc2VydmVyIHNpZGUgYnV0IHdvdWxkIGhhdmUgdG8gYmUgYXNzZW1ibGVkIGluIGEgY3VtYmVyc29tZSBhbmQgc29tZXRpbWVzIGxvc3N5IHByb2Nlc3MgZnJvbSBvdGhlciBpbmZvcm1hdGlvbiAoc2VlIGUuZy4gb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1weXRob24vcHVsbC8xNDgpLiBJdCBpcyB0aHVzIHByZWZlcnJlZCB0byBzdXBwbHkgdGhlIHJhdyBkYXRhIHRoYXQgaXMgYXZhaWxhYmxlLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0hUVFBfU0VSVkVSX05BTUUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0hUVFBfU0VSVkVSX05BTUUgPSBUTVBfSFRUUF9TRVJWRVJfTkFNRTtcbi8qKlxuICogVGhlIG1hdGNoZWQgcm91dGUgKHBhdGggdGVtcGxhdGUpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0hUVFBfUk9VVEUuXG4gKi9cbnZhciBTRU1BVFRSU19IVFRQX1JPVVRFID0gVE1QX0hUVFBfUk9VVEU7XG4vKipcbiogVGhlIElQIGFkZHJlc3Mgb2YgdGhlIG9yaWdpbmFsIGNsaWVudCBiZWhpbmQgYWxsIHByb3hpZXMsIGlmIGtub3duIChlLmcuIGZyb20gW1gtRm9yd2FyZGVkLUZvcl0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRUUC9IZWFkZXJzL1gtRm9yd2FyZGVkLUZvcikpLlxuKlxuKiBOb3RlOiBUaGlzIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyBgbmV0LnBlZXIuaXBgLCB3aGljaCB3b3VsZFxuaWRlbnRpZnkgdGhlIG5ldHdvcmstbGV2ZWwgcGVlciwgd2hpY2ggbWF5IGJlIGEgcHJveHkuXG5cblRoaXMgYXR0cmlidXRlIHNob3VsZCBiZSBzZXQgd2hlbiBhIHNvdXJjZSBvZiBpbmZvcm1hdGlvbiBkaWZmZXJlbnRcbmZyb20gdGhlIG9uZSB1c2VkIGZvciBgbmV0LnBlZXIuaXBgLCBpcyBhdmFpbGFibGUgZXZlbiBpZiB0aGF0IG90aGVyXG5zb3VyY2UganVzdCBjb25maXJtcyB0aGUgc2FtZSB2YWx1ZSBhcyBgbmV0LnBlZXIuaXBgLlxuUmF0aW9uYWxlOiBGb3IgYG5ldC5wZWVyLmlwYCwgb25lIHR5cGljYWxseSBkb2VzIG5vdCBrbm93IGlmIGl0XG5jb21lcyBmcm9tIGEgcHJveHksIHJldmVyc2UgcHJveHksIG9yIHRoZSBhY3R1YWwgY2xpZW50LiBTZXR0aW5nXG5gaHR0cC5jbGllbnRfaXBgIHdoZW4gaXQmIzM5O3MgdGhlIHNhbWUgYXMgYG5ldC5wZWVyLmlwYCBtZWFucyB0aGF0XG5vbmUgaXMgYXQgbGVhc3Qgc29tZXdoYXQgY29uZmlkZW50IHRoYXQgdGhlIGFkZHJlc3MgaXMgbm90IHRoYXQgb2ZcbnRoZSBjbG9zZXN0IHByb3h5LlxuKlxuKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9IVFRQX0NMSUVOVF9JUCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuKi9cbnZhciBTRU1BVFRSU19IVFRQX0NMSUVOVF9JUCA9IFRNUF9IVFRQX0NMSUVOVF9JUDtcbi8qKlxuICogVGhlIGtleXMgaW4gdGhlIGBSZXF1ZXN0SXRlbXNgIG9iamVjdCBmaWVsZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfVEFCTEVfTkFNRVMgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9UQUJMRV9OQU1FUyA9IFRNUF9BV1NfRFlOQU1PREJfVEFCTEVfTkFNRVM7XG4vKipcbiAqIFRoZSBKU09OLXNlcmlhbGl6ZWQgdmFsdWUgb2YgZWFjaCBpdGVtIGluIHRoZSBgQ29uc3VtZWRDYXBhY2l0eWAgcmVzcG9uc2UgZmllbGQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfQVdTX0RZTkFNT0RCX0NPTlNVTUVEX0NBUEFDSVRZIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfQ09OU1VNRURfQ0FQQUNJVFkgPSBUTVBfQVdTX0RZTkFNT0RCX0NPTlNVTUVEX0NBUEFDSVRZO1xuLyoqXG4gKiBUaGUgSlNPTi1zZXJpYWxpemVkIHZhbHVlIG9mIHRoZSBgSXRlbUNvbGxlY3Rpb25NZXRyaWNzYCByZXNwb25zZSBmaWVsZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfSVRFTV9DT0xMRUNUSU9OX01FVFJJQ1MgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9JVEVNX0NPTExFQ1RJT05fTUVUUklDUyA9IFRNUF9BV1NfRFlOQU1PREJfSVRFTV9DT0xMRUNUSU9OX01FVFJJQ1M7XG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgYFByb3Zpc2lvbmVkVGhyb3VnaHB1dC5SZWFkQ2FwYWNpdHlVbml0c2AgcmVxdWVzdCBwYXJhbWV0ZXIuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfQVdTX0RZTkFNT0RCX1BST1ZJU0lPTkVEX1JFQURfQ0FQQUNJVFkgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9QUk9WSVNJT05FRF9SRUFEX0NBUEFDSVRZID0gVE1QX0FXU19EWU5BTU9EQl9QUk9WSVNJT05FRF9SRUFEX0NBUEFDSVRZO1xuLyoqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIGBQcm92aXNpb25lZFRocm91Z2hwdXQuV3JpdGVDYXBhY2l0eVVuaXRzYCByZXF1ZXN0IHBhcmFtZXRlci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfUFJPVklTSU9ORURfV1JJVEVfQ0FQQUNJVFkgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9QUk9WSVNJT05FRF9XUklURV9DQVBBQ0lUWSA9IFRNUF9BV1NfRFlOQU1PREJfUFJPVklTSU9ORURfV1JJVEVfQ0FQQUNJVFk7XG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgYENvbnNpc3RlbnRSZWFkYCByZXF1ZXN0IHBhcmFtZXRlci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfQ09OU0lTVEVOVF9SRUFEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfQ09OU0lTVEVOVF9SRUFEID0gVE1QX0FXU19EWU5BTU9EQl9DT05TSVNURU5UX1JFQUQ7XG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgYFByb2plY3Rpb25FeHByZXNzaW9uYCByZXF1ZXN0IHBhcmFtZXRlci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfUFJPSkVDVElPTiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX1BST0pFQ1RJT04gPSBUTVBfQVdTX0RZTkFNT0RCX1BST0pFQ1RJT047XG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgYExpbWl0YCByZXF1ZXN0IHBhcmFtZXRlci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfTElNSVQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9MSU1JVCA9IFRNUF9BV1NfRFlOQU1PREJfTElNSVQ7XG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgYEF0dHJpYnV0ZXNUb0dldGAgcmVxdWVzdCBwYXJhbWV0ZXIuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfQVdTX0RZTkFNT0RCX0FUVFJJQlVURVNfVE9fR0VUIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfQVRUUklCVVRFU19UT19HRVQgPSBUTVBfQVdTX0RZTkFNT0RCX0FUVFJJQlVURVNfVE9fR0VUO1xuLyoqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIGBJbmRleE5hbWVgIHJlcXVlc3QgcGFyYW1ldGVyLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0FXU19EWU5BTU9EQl9JTkRFWF9OQU1FIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfSU5ERVhfTkFNRSA9IFRNUF9BV1NfRFlOQU1PREJfSU5ERVhfTkFNRTtcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSBgU2VsZWN0YCByZXF1ZXN0IHBhcmFtZXRlci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfU0VMRUNUIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfU0VMRUNUID0gVE1QX0FXU19EWU5BTU9EQl9TRUxFQ1Q7XG4vKipcbiAqIFRoZSBKU09OLXNlcmlhbGl6ZWQgdmFsdWUgb2YgZWFjaCBpdGVtIG9mIHRoZSBgR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc2AgcmVxdWVzdCBmaWVsZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfR0xPQkFMX1NFQ09OREFSWV9JTkRFWEVTIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfR0xPQkFMX1NFQ09OREFSWV9JTkRFWEVTID0gVE1QX0FXU19EWU5BTU9EQl9HTE9CQUxfU0VDT05EQVJZX0lOREVYRVM7XG4vKipcbiAqIFRoZSBKU09OLXNlcmlhbGl6ZWQgdmFsdWUgb2YgZWFjaCBpdGVtIG9mIHRoZSBgTG9jYWxTZWNvbmRhcnlJbmRleGVzYCByZXF1ZXN0IGZpZWxkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0FXU19EWU5BTU9EQl9MT0NBTF9TRUNPTkRBUllfSU5ERVhFUyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0xPQ0FMX1NFQ09OREFSWV9JTkRFWEVTID0gVE1QX0FXU19EWU5BTU9EQl9MT0NBTF9TRUNPTkRBUllfSU5ERVhFUztcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSBgRXhjbHVzaXZlU3RhcnRUYWJsZU5hbWVgIHJlcXVlc3QgcGFyYW1ldGVyLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0FXU19EWU5BTU9EQl9FWENMVVNJVkVfU1RBUlRfVEFCTEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9FWENMVVNJVkVfU1RBUlRfVEFCTEUgPSBUTVBfQVdTX0RZTkFNT0RCX0VYQ0xVU0lWRV9TVEFSVF9UQUJMRTtcbi8qKlxuICogVGhlIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGBUYWJsZU5hbWVzYCByZXNwb25zZSBwYXJhbWV0ZXIuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfQVdTX0RZTkFNT0RCX1RBQkxFX0NPVU5UIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfVEFCTEVfQ09VTlQgPSBUTVBfQVdTX0RZTkFNT0RCX1RBQkxFX0NPVU5UO1xuLyoqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIGBTY2FuSW5kZXhGb3J3YXJkYCByZXF1ZXN0IHBhcmFtZXRlci5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9BV1NfRFlOQU1PREJfU0NBTl9GT1JXQVJEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfU0NBTl9GT1JXQVJEID0gVE1QX0FXU19EWU5BTU9EQl9TQ0FOX0ZPUldBUkQ7XG4vKipcbiAqIFRoZSB2YWx1ZSBvZiB0aGUgYFNlZ21lbnRgIHJlcXVlc3QgcGFyYW1ldGVyLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0FXU19EWU5BTU9EQl9TRUdNRU5UIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfU0VHTUVOVCA9IFRNUF9BV1NfRFlOQU1PREJfU0VHTUVOVDtcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSBgVG90YWxTZWdtZW50c2AgcmVxdWVzdCBwYXJhbWV0ZXIuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfQVdTX0RZTkFNT0RCX1RPVEFMX1NFR01FTlRTIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19BV1NfRFlOQU1PREJfVE9UQUxfU0VHTUVOVFMgPSBUTVBfQVdTX0RZTkFNT0RCX1RPVEFMX1NFR01FTlRTO1xuLyoqXG4gKiBUaGUgdmFsdWUgb2YgdGhlIGBDb3VudGAgcmVzcG9uc2UgcGFyYW1ldGVyLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0FXU19EWU5BTU9EQl9DT1VOVCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0NPVU5UID0gVE1QX0FXU19EWU5BTU9EQl9DT1VOVDtcbi8qKlxuICogVGhlIHZhbHVlIG9mIHRoZSBgU2Nhbm5lZENvdW50YCByZXNwb25zZSBwYXJhbWV0ZXIuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfQVdTX0RZTkFNT0RCX1NDQU5ORURfQ09VTlQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9TQ0FOTkVEX0NPVU5UID0gVE1QX0FXU19EWU5BTU9EQl9TQ0FOTkVEX0NPVU5UO1xuLyoqXG4gKiBUaGUgSlNPTi1zZXJpYWxpemVkIHZhbHVlIG9mIGVhY2ggaXRlbSBpbiB0aGUgYEF0dHJpYnV0ZURlZmluaXRpb25zYCByZXF1ZXN0IGZpZWxkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0FXU19EWU5BTU9EQl9BVFRSSUJVVEVfREVGSU5JVElPTlMgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9BVFRSSUJVVEVfREVGSU5JVElPTlMgPSBUTVBfQVdTX0RZTkFNT0RCX0FUVFJJQlVURV9ERUZJTklUSU9OUztcbi8qKlxuICogVGhlIEpTT04tc2VyaWFsaXplZCB2YWx1ZSBvZiBlYWNoIGl0ZW0gaW4gdGhlIHRoZSBgR2xvYmFsU2Vjb25kYXJ5SW5kZXhVcGRhdGVzYCByZXF1ZXN0IGZpZWxkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX0FXU19EWU5BTU9EQl9HTE9CQUxfU0VDT05EQVJZX0lOREVYX1VQREFURVMgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9HTE9CQUxfU0VDT05EQVJZX0lOREVYX1VQREFURVMgPSBUTVBfQVdTX0RZTkFNT0RCX0dMT0JBTF9TRUNPTkRBUllfSU5ERVhfVVBEQVRFUztcbi8qKlxuICogQSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIG1lc3NhZ2luZyBzeXN0ZW0uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTUVTU0FHSU5HX1NZU1RFTSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTUVTU0FHSU5HX1NZU1RFTSA9IFRNUF9NRVNTQUdJTkdfU1lTVEVNO1xuLyoqXG4gKiBUaGUgbWVzc2FnZSBkZXN0aW5hdGlvbiBuYW1lLiBUaGlzIG1pZ2h0IGJlIGVxdWFsIHRvIHRoZSBzcGFuIG5hbWUgYnV0IGlzIHJlcXVpcmVkIG5ldmVydGhlbGVzcy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9NRVNTQUdJTkdfREVTVElOQVRJT05fTkFNRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTUVTU0FHSU5HX0RFU1RJTkFUSU9OID0gVE1QX01FU1NBR0lOR19ERVNUSU5BVElPTjtcbi8qKlxuICogVGhlIGtpbmQgb2YgbWVzc2FnZSBkZXN0aW5hdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZW1vdmVkIGluIHNlbWNvbnYgdjEuMjAuMC5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0lOR19ERVNUSU5BVElPTl9LSU5EID0gVE1QX01FU1NBR0lOR19ERVNUSU5BVElPTl9LSU5EO1xuLyoqXG4gKiBBIGJvb2xlYW4gdGhhdCBpcyB0cnVlIGlmIHRoZSBtZXNzYWdlIGRlc3RpbmF0aW9uIGlzIHRlbXBvcmFyeS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9NRVNTQUdJTkdfREVTVElOQVRJT05fVEVNUE9SQVJZIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19NRVNTQUdJTkdfVEVNUF9ERVNUSU5BVElPTiA9IFRNUF9NRVNTQUdJTkdfVEVNUF9ERVNUSU5BVElPTjtcbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIHRyYW5zcG9ydCBwcm90b2NvbC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9ORVRXT1JLX1BST1RPQ09MX05BTUUuXG4gKi9cbnZhciBTRU1BVFRSU19NRVNTQUdJTkdfUFJPVE9DT0wgPSBUTVBfTUVTU0FHSU5HX1BST1RPQ09MO1xuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgdHJhbnNwb3J0IHByb3RvY29sLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX05FVFdPUktfUFJPVE9DT0xfVkVSU0lPTi5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0lOR19QUk9UT0NPTF9WRVJTSU9OID0gVE1QX01FU1NBR0lOR19QUk9UT0NPTF9WRVJTSU9OO1xuLyoqXG4gKiBDb25uZWN0aW9uIHN0cmluZy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZW1vdmVkIGluIHNlbWNvbnYgdjEuMTcuMC5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0lOR19VUkwgPSBUTVBfTUVTU0FHSU5HX1VSTDtcbi8qKlxuICogQSB2YWx1ZSB1c2VkIGJ5IHRoZSBtZXNzYWdpbmcgc3lzdGVtIGFzIGFuIGlkZW50aWZpZXIgZm9yIHRoZSBtZXNzYWdlLCByZXByZXNlbnRlZCBhcyBhIHN0cmluZy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9NRVNTQUdJTkdfTUVTU0FHRV9JRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTUVTU0FHSU5HX01FU1NBR0VfSUQgPSBUTVBfTUVTU0FHSU5HX01FU1NBR0VfSUQ7XG4vKipcbiAqIFRoZSBbY29udmVyc2F0aW9uIElEXSgjY29udmVyc2F0aW9ucykgaWRlbnRpZnlpbmcgdGhlIGNvbnZlcnNhdGlvbiB0byB3aGljaCB0aGUgbWVzc2FnZSBiZWxvbmdzLCByZXByZXNlbnRlZCBhcyBhIHN0cmluZy4gU29tZXRpbWVzIGNhbGxlZCAmIzM0O0NvcnJlbGF0aW9uIElEJiMzNDsuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTUVTU0FHSU5HX01FU1NBR0VfQ09OVkVSU0FUSU9OX0lEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19NRVNTQUdJTkdfQ09OVkVSU0FUSU9OX0lEID0gVE1QX01FU1NBR0lOR19DT05WRVJTQVRJT05fSUQ7XG4vKipcbiAqIFRoZSAodW5jb21wcmVzc2VkKSBzaXplIG9mIHRoZSBtZXNzYWdlIHBheWxvYWQgaW4gYnl0ZXMuIEFsc28gdXNlIHRoaXMgYXR0cmlidXRlIGlmIGl0IGlzIHVua25vd24gd2hldGhlciB0aGUgY29tcHJlc3NlZCBvciB1bmNvbXByZXNzZWQgcGF5bG9hZCBzaXplIGlzIHJlcG9ydGVkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX01FU1NBR0lOR19NRVNTQUdFX0JPRFlfU0laRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTUVTU0FHSU5HX01FU1NBR0VfUEFZTE9BRF9TSVpFX0JZVEVTID0gVE1QX01FU1NBR0lOR19NRVNTQUdFX1BBWUxPQURfU0laRV9CWVRFUztcbi8qKlxuICogVGhlIGNvbXByZXNzZWQgc2l6ZSBvZiB0aGUgbWVzc2FnZSBwYXlsb2FkIGluIGJ5dGVzLlxuICpcbiAqIEBkZXByZWNhdGVkIFJlbW92ZWQgaW4gc2VtY29udiB2MS4yMi4wLlxuICovXG52YXIgU0VNQVRUUlNfTUVTU0FHSU5HX01FU1NBR0VfUEFZTE9BRF9DT01QUkVTU0VEX1NJWkVfQllURVMgPSBUTVBfTUVTU0FHSU5HX01FU1NBR0VfUEFZTE9BRF9DT01QUkVTU0VEX1NJWkVfQllURVM7XG4vKipcbiAqIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBraW5kIG9mIG1lc3NhZ2UgY29uc3VtcHRpb24gYXMgZGVmaW5lZCBpbiB0aGUgW09wZXJhdGlvbiBuYW1lc10oI29wZXJhdGlvbi1uYW1lcykgc2VjdGlvbiBhYm92ZS4gSWYgdGhlIG9wZXJhdGlvbiBpcyAmIzM0O3NlbmQmIzM0OywgdGhpcyBhdHRyaWJ1dGUgTVVTVCBOT1QgYmUgc2V0LCBzaW5jZSB0aGUgb3BlcmF0aW9uIGNhbiBiZSBpbmZlcnJlZCBmcm9tIHRoZSBzcGFuIGtpbmQgaW4gdGhhdCBjYXNlLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX01FU1NBR0lOR19PUEVSQVRJT04gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0lOR19PUEVSQVRJT04gPSBUTVBfTUVTU0FHSU5HX09QRVJBVElPTjtcbi8qKlxuICogVGhlIGlkZW50aWZpZXIgZm9yIHRoZSBjb25zdW1lciByZWNlaXZpbmcgYSBtZXNzYWdlLiBGb3IgS2Fma2EsIHNldCBpdCB0byBge21lc3NhZ2luZy5rYWZrYS5jb25zdW1lcl9ncm91cH0gLSB7bWVzc2FnaW5nLmthZmthLmNsaWVudF9pZH1gLCBpZiBib3RoIGFyZSBwcmVzZW50LCBvciBvbmx5IGBtZXNzYWdpbmcua2Fma2EuY29uc3VtZXJfZ3JvdXBgLiBGb3IgYnJva2Vycywgc3VjaCBhcyBSYWJiaXRNUSBhbmQgQXJ0ZW1pcywgc2V0IGl0IHRvIHRoZSBgY2xpZW50X2lkYCBvZiB0aGUgY2xpZW50IGNvbnN1bWluZyB0aGUgbWVzc2FnZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZW1vdmVkIGluIHNlbWNvbnYgdjEuMjEuMC5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0lOR19DT05TVU1FUl9JRCA9IFRNUF9NRVNTQUdJTkdfQ09OU1VNRVJfSUQ7XG4vKipcbiAqIFJhYmJpdE1RIG1lc3NhZ2Ugcm91dGluZyBrZXkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTUVTU0FHSU5HX1JBQkJJVE1RX0RFU1RJTkFUSU9OX1JPVVRJTkdfS0VZIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19NRVNTQUdJTkdfUkFCQklUTVFfUk9VVElOR19LRVkgPSBUTVBfTUVTU0FHSU5HX1JBQkJJVE1RX1JPVVRJTkdfS0VZO1xuLyoqXG4gKiBNZXNzYWdlIGtleXMgaW4gS2Fma2EgYXJlIHVzZWQgZm9yIGdyb3VwaW5nIGFsaWtlIG1lc3NhZ2VzIHRvIGVuc3VyZSB0aGV5JiMzOTtyZSBwcm9jZXNzZWQgb24gdGhlIHNhbWUgcGFydGl0aW9uLiBUaGV5IGRpZmZlciBmcm9tIGBtZXNzYWdpbmcubWVzc2FnZV9pZGAgaW4gdGhhdCB0aGV5JiMzOTtyZSBub3QgdW5pcXVlLiBJZiB0aGUga2V5IGlzIGBudWxsYCwgdGhlIGF0dHJpYnV0ZSBNVVNUIE5PVCBiZSBzZXQuXG4gKlxuICogTm90ZTogSWYgdGhlIGtleSB0eXBlIGlzIG5vdCBzdHJpbmcsIGl0JiMzOTtzIHN0cmluZyByZXByZXNlbnRhdGlvbiBoYXMgdG8gYmUgc3VwcGxpZWQgZm9yIHRoZSBhdHRyaWJ1dGUuIElmIHRoZSBrZXkgaGFzIG5vIHVuYW1iaWd1b3VzLCBjYW5vbmljYWwgc3RyaW5nIGZvcm0sIGRvbiYjMzk7dCBpbmNsdWRlIGl0cyB2YWx1ZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9NRVNTQUdJTkdfS0FGS0FfTUVTU0FHRV9LRVkgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0lOR19LQUZLQV9NRVNTQUdFX0tFWSA9IFRNUF9NRVNTQUdJTkdfS0FGS0FfTUVTU0FHRV9LRVk7XG4vKipcbiAqIE5hbWUgb2YgdGhlIEthZmthIENvbnN1bWVyIEdyb3VwIHRoYXQgaXMgaGFuZGxpbmcgdGhlIG1lc3NhZ2UuIE9ubHkgYXBwbGllcyB0byBjb25zdW1lcnMsIG5vdCBwcm9kdWNlcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTUVTU0FHSU5HX0tBRktBX0NPTlNVTUVSX0dST1VQIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19NRVNTQUdJTkdfS0FGS0FfQ09OU1VNRVJfR1JPVVAgPSBUTVBfTUVTU0FHSU5HX0tBRktBX0NPTlNVTUVSX0dST1VQO1xuLyoqXG4gKiBDbGllbnQgSWQgZm9yIHRoZSBDb25zdW1lciBvciBQcm9kdWNlciB0aGF0IGlzIGhhbmRsaW5nIHRoZSBtZXNzYWdlLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX01FU1NBR0lOR19DTElFTlRfSUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0lOR19LQUZLQV9DTElFTlRfSUQgPSBUTVBfTUVTU0FHSU5HX0tBRktBX0NMSUVOVF9JRDtcbi8qKlxuICogUGFydGl0aW9uIHRoZSBtZXNzYWdlIGlzIHNlbnQgdG8uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfTUVTU0FHSU5HX0tBRktBX0RFU1RJTkFUSU9OX1BBUlRJVElPTiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTUVTU0FHSU5HX0tBRktBX1BBUlRJVElPTiA9IFRNUF9NRVNTQUdJTkdfS0FGS0FfUEFSVElUSU9OO1xuLyoqXG4gKiBBIGJvb2xlYW4gdGhhdCBpcyB0cnVlIGlmIHRoZSBtZXNzYWdlIGlzIGEgdG9tYnN0b25lLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX01FU1NBR0lOR19LQUZLQV9NRVNTQUdFX1RPTUJTVE9ORSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTUVTU0FHSU5HX0tBRktBX1RPTUJTVE9ORSA9IFRNUF9NRVNTQUdJTkdfS0FGS0FfVE9NQlNUT05FO1xuLyoqXG4gKiBBIHN0cmluZyBpZGVudGlmeWluZyB0aGUgcmVtb3Rpbmcgc3lzdGVtLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX1JQQ19TWVNURU0gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX1JQQ19TWVNURU0gPSBUTVBfUlBDX1NZU1RFTTtcbi8qKlxuICogVGhlIGZ1bGwgKGxvZ2ljYWwpIG5hbWUgb2YgdGhlIHNlcnZpY2UgYmVpbmcgY2FsbGVkLCBpbmNsdWRpbmcgaXRzIHBhY2thZ2UgbmFtZSwgaWYgYXBwbGljYWJsZS5cbiAqXG4gKiBOb3RlOiBUaGlzIGlzIHRoZSBsb2dpY2FsIG5hbWUgb2YgdGhlIHNlcnZpY2UgZnJvbSB0aGUgUlBDIGludGVyZmFjZSBwZXJzcGVjdGl2ZSwgd2hpY2ggY2FuIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBuYW1lIG9mIGFueSBpbXBsZW1lbnRpbmcgY2xhc3MuIFRoZSBgY29kZS5uYW1lc3BhY2VgIGF0dHJpYnV0ZSBtYXkgYmUgdXNlZCB0byBzdG9yZSB0aGUgbGF0dGVyIChkZXNwaXRlIHRoZSBhdHRyaWJ1dGUgbmFtZSwgaXQgbWF5IGluY2x1ZGUgYSBjbGFzcyBuYW1lOyBlLmcuLCBjbGFzcyB3aXRoIG1ldGhvZCBhY3R1YWxseSBleGVjdXRpbmcgdGhlIGNhbGwgb24gdGhlIHNlcnZlciBzaWRlLCBSUEMgY2xpZW50IHN0dWIgY2xhc3Mgb24gdGhlIGNsaWVudCBzaWRlKS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9SUENfU0VSVklDRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfUlBDX1NFUlZJQ0UgPSBUTVBfUlBDX1NFUlZJQ0U7XG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSAobG9naWNhbCkgbWV0aG9kIGJlaW5nIGNhbGxlZCwgbXVzdCBiZSBlcXVhbCB0byB0aGUgJG1ldGhvZCBwYXJ0IGluIHRoZSBzcGFuIG5hbWUuXG4gKlxuICogTm90ZTogVGhpcyBpcyB0aGUgbG9naWNhbCBuYW1lIG9mIHRoZSBtZXRob2QgZnJvbSB0aGUgUlBDIGludGVyZmFjZSBwZXJzcGVjdGl2ZSwgd2hpY2ggY2FuIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBuYW1lIG9mIGFueSBpbXBsZW1lbnRpbmcgbWV0aG9kL2Z1bmN0aW9uLiBUaGUgYGNvZGUuZnVuY3Rpb25gIGF0dHJpYnV0ZSBtYXkgYmUgdXNlZCB0byBzdG9yZSB0aGUgbGF0dGVyIChlLmcuLCBtZXRob2QgYWN0dWFsbHkgZXhlY3V0aW5nIHRoZSBjYWxsIG9uIHRoZSBzZXJ2ZXIgc2lkZSwgUlBDIGNsaWVudCBzdHViIG1ldGhvZCBvbiB0aGUgY2xpZW50IHNpZGUpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX1JQQ19NRVRIT0QgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX1JQQ19NRVRIT0QgPSBUTVBfUlBDX01FVEhPRDtcbi8qKlxuICogVGhlIFtudW1lcmljIHN0YXR1cyBjb2RlXShodHRwczovL2dpdGh1Yi5jb20vZ3JwYy9ncnBjL2Jsb2IvdjEuMzMuMi9kb2Mvc3RhdHVzY29kZXMubWQpIG9mIHRoZSBnUlBDIHJlcXVlc3QuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfUlBDX0dSUENfU1RBVFVTX0NPREUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX1JQQ19HUlBDX1NUQVRVU19DT0RFID0gVE1QX1JQQ19HUlBDX1NUQVRVU19DT0RFO1xuLyoqXG4gKiBQcm90b2NvbCB2ZXJzaW9uIGFzIGluIGBqc29ucnBjYCBwcm9wZXJ0eSBvZiByZXF1ZXN0L3Jlc3BvbnNlLiBTaW5jZSBKU09OLVJQQyAxLjAgZG9lcyBub3Qgc3BlY2lmeSB0aGlzLCB0aGUgdmFsdWUgY2FuIGJlIG9taXR0ZWQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEFUVFJfUlBDX0pTT05SUENfVkVSU0lPTiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfUlBDX0pTT05SUENfVkVSU0lPTiA9IFRNUF9SUENfSlNPTlJQQ19WRVJTSU9OO1xuLyoqXG4gKiBgaWRgIHByb3BlcnR5IG9mIHJlcXVlc3Qgb3IgcmVzcG9uc2UuIFNpbmNlIHByb3RvY29sIGFsbG93cyBpZCB0byBiZSBpbnQsIHN0cmluZywgYG51bGxgIG9yIG1pc3NpbmcgKGZvciBub3RpZmljYXRpb25zKSwgdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgY2FzdCB0byBzdHJpbmcgZm9yIHNpbXBsaWNpdHkuIFVzZSBlbXB0eSBzdHJpbmcgaW4gY2FzZSBvZiBgbnVsbGAgdmFsdWUuIE9taXQgZW50aXJlbHkgaWYgdGhpcyBpcyBhIG5vdGlmaWNhdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9SUENfSlNPTlJQQ19SRVFVRVNUX0lEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19SUENfSlNPTlJQQ19SRVFVRVNUX0lEID0gVE1QX1JQQ19KU09OUlBDX1JFUVVFU1RfSUQ7XG4vKipcbiAqIGBlcnJvci5jb2RlYCBwcm9wZXJ0eSBvZiByZXNwb25zZSBpZiBpdCBpcyBhbiBlcnJvciByZXNwb25zZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9SUENfSlNPTlJQQ19FUlJPUl9DT0RFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19SUENfSlNPTlJQQ19FUlJPUl9DT0RFID0gVE1QX1JQQ19KU09OUlBDX0VSUk9SX0NPREU7XG4vKipcbiAqIGBlcnJvci5tZXNzYWdlYCBwcm9wZXJ0eSBvZiByZXNwb25zZSBpZiBpdCBpcyBhbiBlcnJvciByZXNwb25zZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9SUENfSlNPTlJQQ19FUlJPUl9NRVNTQUdFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19SUENfSlNPTlJQQ19FUlJPUl9NRVNTQUdFID0gVE1QX1JQQ19KU09OUlBDX0VSUk9SX01FU1NBR0U7XG4vKipcbiAqIFdoZXRoZXIgdGhpcyBpcyBhIHJlY2VpdmVkIG9yIHNlbnQgbWVzc2FnZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9NRVNTQUdFX1RZUEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0VfVFlQRSA9IFRNUF9NRVNTQUdFX1RZUEU7XG4vKipcbiAqIE1VU1QgYmUgY2FsY3VsYXRlZCBhcyB0d28gZGlmZmVyZW50IGNvdW50ZXJzIHN0YXJ0aW5nIGZyb20gYDFgIG9uZSBmb3Igc2VudCBtZXNzYWdlcyBhbmQgb25lIGZvciByZWNlaXZlZCBtZXNzYWdlLlxuICpcbiAqIE5vdGU6IFRoaXMgd2F5IHdlIGd1YXJhbnRlZSB0aGF0IHRoZSB2YWx1ZXMgd2lsbCBiZSBjb25zaXN0ZW50IGJldHdlZW4gZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9NRVNTQUdFX0lEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBTRU1BVFRSU19NRVNTQUdFX0lEID0gVE1QX01FU1NBR0VfSUQ7XG4vKipcbiAqIENvbXByZXNzZWQgc2l6ZSBvZiB0aGUgbWVzc2FnZSBpbiBieXRlcy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVRUUl9NRVNTQUdFX0NPTVBSRVNTRURfU0laRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgU0VNQVRUUlNfTUVTU0FHRV9DT01QUkVTU0VEX1NJWkUgPSBUTVBfTUVTU0FHRV9DT01QUkVTU0VEX1NJWkU7XG4vKipcbiAqIFVuY29tcHJlc3NlZCBzaXplIG9mIHRoZSBtZXNzYWdlIGluIGJ5dGVzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBBVFRSX01FU1NBR0VfVU5DT01QUkVTU0VEX1NJWkUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFNFTUFUVFJTX01FU1NBR0VfVU5DT01QUkVTU0VEX1NJWkUgPSBUTVBfTUVTU0FHRV9VTkNPTVBSRVNTRURfU0laRTtcbi8qKlxuICogQ3JlYXRlIGV4cG9ydGVkIFZhbHVlIE1hcCBmb3IgU2VtYW50aWNBdHRyaWJ1dGVzIHZhbHVlc1xuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBTRU1BVFRSU19YWFhYWCBjb25zdGFudHMgcmF0aGVyIHRoYW4gdGhlIFNlbWFudGljQXR0cmlidXRlcy5YWFhYWCBmb3IgYnVuZGxlIG1pbmlmaWNhdGlvblxuICovXG52YXIgU2VtYW50aWNBdHRyaWJ1dGVzID0gXG4vKiNfX1BVUkVfXyovIGNyZWF0ZUNvbnN0TWFwKFtcbiAgICBUTVBfQVdTX0xBTUJEQV9JTlZPS0VEX0FSTixcbiAgICBUTVBfREJfU1lTVEVNLFxuICAgIFRNUF9EQl9DT05ORUNUSU9OX1NUUklORyxcbiAgICBUTVBfREJfVVNFUixcbiAgICBUTVBfREJfSkRCQ19EUklWRVJfQ0xBU1NOQU1FLFxuICAgIFRNUF9EQl9OQU1FLFxuICAgIFRNUF9EQl9TVEFURU1FTlQsXG4gICAgVE1QX0RCX09QRVJBVElPTixcbiAgICBUTVBfREJfTVNTUUxfSU5TVEFOQ0VfTkFNRSxcbiAgICBUTVBfREJfQ0FTU0FORFJBX0tFWVNQQUNFLFxuICAgIFRNUF9EQl9DQVNTQU5EUkFfUEFHRV9TSVpFLFxuICAgIFRNUF9EQl9DQVNTQU5EUkFfQ09OU0lTVEVOQ1lfTEVWRUwsXG4gICAgVE1QX0RCX0NBU1NBTkRSQV9UQUJMRSxcbiAgICBUTVBfREJfQ0FTU0FORFJBX0lERU1QT1RFTkNFLFxuICAgIFRNUF9EQl9DQVNTQU5EUkFfU1BFQ1VMQVRJVkVfRVhFQ1VUSU9OX0NPVU5ULFxuICAgIFRNUF9EQl9DQVNTQU5EUkFfQ09PUkRJTkFUT1JfSUQsXG4gICAgVE1QX0RCX0NBU1NBTkRSQV9DT09SRElOQVRPUl9EQyxcbiAgICBUTVBfREJfSEJBU0VfTkFNRVNQQUNFLFxuICAgIFRNUF9EQl9SRURJU19EQVRBQkFTRV9JTkRFWCxcbiAgICBUTVBfREJfTU9OR09EQl9DT0xMRUNUSU9OLFxuICAgIFRNUF9EQl9TUUxfVEFCTEUsXG4gICAgVE1QX0VYQ0VQVElPTl9UWVBFLFxuICAgIFRNUF9FWENFUFRJT05fTUVTU0FHRSxcbiAgICBUTVBfRVhDRVBUSU9OX1NUQUNLVFJBQ0UsXG4gICAgVE1QX0VYQ0VQVElPTl9FU0NBUEVELFxuICAgIFRNUF9GQUFTX1RSSUdHRVIsXG4gICAgVE1QX0ZBQVNfRVhFQ1VUSU9OLFxuICAgIFRNUF9GQUFTX0RPQ1VNRU5UX0NPTExFQ1RJT04sXG4gICAgVE1QX0ZBQVNfRE9DVU1FTlRfT1BFUkFUSU9OLFxuICAgIFRNUF9GQUFTX0RPQ1VNRU5UX1RJTUUsXG4gICAgVE1QX0ZBQVNfRE9DVU1FTlRfTkFNRSxcbiAgICBUTVBfRkFBU19USU1FLFxuICAgIFRNUF9GQUFTX0NST04sXG4gICAgVE1QX0ZBQVNfQ09MRFNUQVJULFxuICAgIFRNUF9GQUFTX0lOVk9LRURfTkFNRSxcbiAgICBUTVBfRkFBU19JTlZPS0VEX1BST1ZJREVSLFxuICAgIFRNUF9GQUFTX0lOVk9LRURfUkVHSU9OLFxuICAgIFRNUF9ORVRfVFJBTlNQT1JULFxuICAgIFRNUF9ORVRfUEVFUl9JUCxcbiAgICBUTVBfTkVUX1BFRVJfUE9SVCxcbiAgICBUTVBfTkVUX1BFRVJfTkFNRSxcbiAgICBUTVBfTkVUX0hPU1RfSVAsXG4gICAgVE1QX05FVF9IT1NUX1BPUlQsXG4gICAgVE1QX05FVF9IT1NUX05BTUUsXG4gICAgVE1QX05FVF9IT1NUX0NPTk5FQ1RJT05fVFlQRSxcbiAgICBUTVBfTkVUX0hPU1RfQ09OTkVDVElPTl9TVUJUWVBFLFxuICAgIFRNUF9ORVRfSE9TVF9DQVJSSUVSX05BTUUsXG4gICAgVE1QX05FVF9IT1NUX0NBUlJJRVJfTUNDLFxuICAgIFRNUF9ORVRfSE9TVF9DQVJSSUVSX01OQyxcbiAgICBUTVBfTkVUX0hPU1RfQ0FSUklFUl9JQ0MsXG4gICAgVE1QX1BFRVJfU0VSVklDRSxcbiAgICBUTVBfRU5EVVNFUl9JRCxcbiAgICBUTVBfRU5EVVNFUl9ST0xFLFxuICAgIFRNUF9FTkRVU0VSX1NDT1BFLFxuICAgIFRNUF9USFJFQURfSUQsXG4gICAgVE1QX1RIUkVBRF9OQU1FLFxuICAgIFRNUF9DT0RFX0ZVTkNUSU9OLFxuICAgIFRNUF9DT0RFX05BTUVTUEFDRSxcbiAgICBUTVBfQ09ERV9GSUxFUEFUSCxcbiAgICBUTVBfQ09ERV9MSU5FTk8sXG4gICAgVE1QX0hUVFBfTUVUSE9ELFxuICAgIFRNUF9IVFRQX1VSTCxcbiAgICBUTVBfSFRUUF9UQVJHRVQsXG4gICAgVE1QX0hUVFBfSE9TVCxcbiAgICBUTVBfSFRUUF9TQ0hFTUUsXG4gICAgVE1QX0hUVFBfU1RBVFVTX0NPREUsXG4gICAgVE1QX0hUVFBfRkxBVk9SLFxuICAgIFRNUF9IVFRQX1VTRVJfQUdFTlQsXG4gICAgVE1QX0hUVFBfUkVRVUVTVF9DT05URU5UX0xFTkdUSCxcbiAgICBUTVBfSFRUUF9SRVFVRVNUX0NPTlRFTlRfTEVOR1RIX1VOQ09NUFJFU1NFRCxcbiAgICBUTVBfSFRUUF9SRVNQT05TRV9DT05URU5UX0xFTkdUSCxcbiAgICBUTVBfSFRUUF9SRVNQT05TRV9DT05URU5UX0xFTkdUSF9VTkNPTVBSRVNTRUQsXG4gICAgVE1QX0hUVFBfU0VSVkVSX05BTUUsXG4gICAgVE1QX0hUVFBfUk9VVEUsXG4gICAgVE1QX0hUVFBfQ0xJRU5UX0lQLFxuICAgIFRNUF9BV1NfRFlOQU1PREJfVEFCTEVfTkFNRVMsXG4gICAgVE1QX0FXU19EWU5BTU9EQl9DT05TVU1FRF9DQVBBQ0lUWSxcbiAgICBUTVBfQVdTX0RZTkFNT0RCX0lURU1fQ09MTEVDVElPTl9NRVRSSUNTLFxuICAgIFRNUF9BV1NfRFlOQU1PREJfUFJPVklTSU9ORURfUkVBRF9DQVBBQ0lUWSxcbiAgICBUTVBfQVdTX0RZTkFNT0RCX1BST1ZJU0lPTkVEX1dSSVRFX0NBUEFDSVRZLFxuICAgIFRNUF9BV1NfRFlOQU1PREJfQ09OU0lTVEVOVF9SRUFELFxuICAgIFRNUF9BV1NfRFlOQU1PREJfUFJPSkVDVElPTixcbiAgICBUTVBfQVdTX0RZTkFNT0RCX0xJTUlULFxuICAgIFRNUF9BV1NfRFlOQU1PREJfQVRUUklCVVRFU19UT19HRVQsXG4gICAgVE1QX0FXU19EWU5BTU9EQl9JTkRFWF9OQU1FLFxuICAgIFRNUF9BV1NfRFlOQU1PREJfU0VMRUNULFxuICAgIFRNUF9BV1NfRFlOQU1PREJfR0xPQkFMX1NFQ09OREFSWV9JTkRFWEVTLFxuICAgIFRNUF9BV1NfRFlOQU1PREJfTE9DQUxfU0VDT05EQVJZX0lOREVYRVMsXG4gICAgVE1QX0FXU19EWU5BTU9EQl9FWENMVVNJVkVfU1RBUlRfVEFCTEUsXG4gICAgVE1QX0FXU19EWU5BTU9EQl9UQUJMRV9DT1VOVCxcbiAgICBUTVBfQVdTX0RZTkFNT0RCX1NDQU5fRk9SV0FSRCxcbiAgICBUTVBfQVdTX0RZTkFNT0RCX1NFR01FTlQsXG4gICAgVE1QX0FXU19EWU5BTU9EQl9UT1RBTF9TRUdNRU5UUyxcbiAgICBUTVBfQVdTX0RZTkFNT0RCX0NPVU5ULFxuICAgIFRNUF9BV1NfRFlOQU1PREJfU0NBTk5FRF9DT1VOVCxcbiAgICBUTVBfQVdTX0RZTkFNT0RCX0FUVFJJQlVURV9ERUZJTklUSU9OUyxcbiAgICBUTVBfQVdTX0RZTkFNT0RCX0dMT0JBTF9TRUNPTkRBUllfSU5ERVhfVVBEQVRFUyxcbiAgICBUTVBfTUVTU0FHSU5HX1NZU1RFTSxcbiAgICBUTVBfTUVTU0FHSU5HX0RFU1RJTkFUSU9OLFxuICAgIFRNUF9NRVNTQUdJTkdfREVTVElOQVRJT05fS0lORCxcbiAgICBUTVBfTUVTU0FHSU5HX1RFTVBfREVTVElOQVRJT04sXG4gICAgVE1QX01FU1NBR0lOR19QUk9UT0NPTCxcbiAgICBUTVBfTUVTU0FHSU5HX1BST1RPQ09MX1ZFUlNJT04sXG4gICAgVE1QX01FU1NBR0lOR19VUkwsXG4gICAgVE1QX01FU1NBR0lOR19NRVNTQUdFX0lELFxuICAgIFRNUF9NRVNTQUdJTkdfQ09OVkVSU0FUSU9OX0lELFxuICAgIFRNUF9NRVNTQUdJTkdfTUVTU0FHRV9QQVlMT0FEX1NJWkVfQllURVMsXG4gICAgVE1QX01FU1NBR0lOR19NRVNTQUdFX1BBWUxPQURfQ09NUFJFU1NFRF9TSVpFX0JZVEVTLFxuICAgIFRNUF9NRVNTQUdJTkdfT1BFUkFUSU9OLFxuICAgIFRNUF9NRVNTQUdJTkdfQ09OU1VNRVJfSUQsXG4gICAgVE1QX01FU1NBR0lOR19SQUJCSVRNUV9ST1VUSU5HX0tFWSxcbiAgICBUTVBfTUVTU0FHSU5HX0tBRktBX01FU1NBR0VfS0VZLFxuICAgIFRNUF9NRVNTQUdJTkdfS0FGS0FfQ09OU1VNRVJfR1JPVVAsXG4gICAgVE1QX01FU1NBR0lOR19LQUZLQV9DTElFTlRfSUQsXG4gICAgVE1QX01FU1NBR0lOR19LQUZLQV9QQVJUSVRJT04sXG4gICAgVE1QX01FU1NBR0lOR19LQUZLQV9UT01CU1RPTkUsXG4gICAgVE1QX1JQQ19TWVNURU0sXG4gICAgVE1QX1JQQ19TRVJWSUNFLFxuICAgIFRNUF9SUENfTUVUSE9ELFxuICAgIFRNUF9SUENfR1JQQ19TVEFUVVNfQ09ERSxcbiAgICBUTVBfUlBDX0pTT05SUENfVkVSU0lPTixcbiAgICBUTVBfUlBDX0pTT05SUENfUkVRVUVTVF9JRCxcbiAgICBUTVBfUlBDX0pTT05SUENfRVJST1JfQ09ERSxcbiAgICBUTVBfUlBDX0pTT05SUENfRVJST1JfTUVTU0FHRSxcbiAgICBUTVBfTUVTU0FHRV9UWVBFLFxuICAgIFRNUF9NRVNTQUdFX0lELFxuICAgIFRNUF9NRVNTQUdFX0NPTVBSRVNTRURfU0laRSxcbiAgICBUTVBfTUVTU0FHRV9VTkNPTVBSRVNTRURfU0laRSxcbl0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQ29uc3RhbnQgdmFsdWVzIGZvciBEYlN5c3RlbVZhbHVlcyBlbnVtIGRlZmluaXRpb25cbiAqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8vIFRlbXBvcmFyeSBsb2NhbCBjb25zdGFudHMgdG8gYXNzaWduIHRvIHRoZSBpbmRpdmlkdWFsIGV4cG9ydHMgYW5kIHRoZSBuYW1lc3BhY2VkIHZlcnNpb25cbi8vIFJlcXVpcmVkIHRvIGF2b2lkIHRoZSBuYW1lc3BhY2UgZXhwb3J0cyB1c2luZyB0aGUgdW5taW5pZmlhYmxlIGV4cG9ydCBuYW1lcyBmb3Igc29tZSBwYWNrYWdlIHR5cGVzXG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX09USEVSX1NRTCA9ICdvdGhlcl9zcWwnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19NU1NRTCA9ICdtc3NxbCc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX01ZU1FMID0gJ215c3FsJztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfT1JBQ0xFID0gJ29yYWNsZSc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0RCMiA9ICdkYjInO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19QT1NUR1JFU1FMID0gJ3Bvc3RncmVzcWwnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19SRURTSElGVCA9ICdyZWRzaGlmdCc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0hJVkUgPSAnaGl2ZSc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0NMT1VEU0NBUEUgPSAnY2xvdWRzY2FwZSc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0hTUUxEQiA9ICdoc3FsZGInO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19QUk9HUkVTUyA9ICdwcm9ncmVzcyc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX01BWERCID0gJ21heGRiJztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfSEFOQURCID0gJ2hhbmFkYic7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0lOR1JFUyA9ICdpbmdyZXMnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19GSVJTVFNRTCA9ICdmaXJzdHNxbCc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0VEQiA9ICdlZGInO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19DQUNIRSA9ICdjYWNoZSc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0FEQUJBUyA9ICdhZGFiYXMnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19GSVJFQklSRCA9ICdmaXJlYmlyZCc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0RFUkJZID0gJ2RlcmJ5JztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfRklMRU1BS0VSID0gJ2ZpbGVtYWtlcic7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0lORk9STUlYID0gJ2luZm9ybWl4JztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfSU5TVEFOVERCID0gJ2luc3RhbnRkYic7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0lOVEVSQkFTRSA9ICdpbnRlcmJhc2UnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19NQVJJQURCID0gJ21hcmlhZGInO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19ORVRFWlpBID0gJ25ldGV6emEnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19QRVJWQVNJVkUgPSAncGVydmFzaXZlJztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfUE9JTlRCQVNFID0gJ3BvaW50YmFzZSc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX1NRTElURSA9ICdzcWxpdGUnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19TWUJBU0UgPSAnc3liYXNlJztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfVEVSQURBVEEgPSAndGVyYWRhdGEnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19WRVJUSUNBID0gJ3ZlcnRpY2EnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19IMiA9ICdoMic7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0NPTERGVVNJT04gPSAnY29sZGZ1c2lvbic7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0NBU1NBTkRSQSA9ICdjYXNzYW5kcmEnO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19IQkFTRSA9ICdoYmFzZSc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX01PTkdPREIgPSAnbW9uZ29kYic7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX1JFRElTID0gJ3JlZGlzJztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfQ09VQ0hCQVNFID0gJ2NvdWNoYmFzZSc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0NPVUNIREIgPSAnY291Y2hkYic7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0NPU01PU0RCID0gJ2Nvc21vc2RiJztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfRFlOQU1PREIgPSAnZHluYW1vZGInO1xudmFyIFRNUF9EQlNZU1RFTVZBTFVFU19ORU80SiA9ICduZW80aic7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0dFT0RFID0gJ2dlb2RlJztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfRUxBU1RJQ1NFQVJDSCA9ICdlbGFzdGljc2VhcmNoJztcbnZhciBUTVBfREJTWVNURU1WQUxVRVNfTUVNQ0FDSEVEID0gJ21lbWNhY2hlZCc7XG52YXIgVE1QX0RCU1lTVEVNVkFMVUVTX0NPQ0tST0FDSERCID0gJ2NvY2tyb2FjaGRiJztcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9PVEhFUl9TUUwgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX09USEVSX1NRTCA9IFRNUF9EQlNZU1RFTVZBTFVFU19PVEhFUl9TUUw7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfTVNTUUwgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX01TU1FMID0gVE1QX0RCU1lTVEVNVkFMVUVTX01TU1FMO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX01ZU1FMIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19NWVNRTCA9IFRNUF9EQlNZU1RFTVZBTFVFU19NWVNRTDtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9PUkFDTEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX09SQUNMRSA9IFRNUF9EQlNZU1RFTVZBTFVFU19PUkFDTEU7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfREIyIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19EQjIgPSBUTVBfREJTWVNURU1WQUxVRVNfREIyO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX1BPU1RHUkVTUUwgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX1BPU1RHUkVTUUwgPSBUTVBfREJTWVNURU1WQUxVRVNfUE9TVEdSRVNRTDtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9SRURTSElGVCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfUkVEU0hJRlQgPSBUTVBfREJTWVNURU1WQUxVRVNfUkVEU0hJRlQ7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfSElWRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfSElWRSA9IFRNUF9EQlNZU1RFTVZBTFVFU19ISVZFO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0NMT1VEU0NBUEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0NMT1VEU0NBUEUgPSBUTVBfREJTWVNURU1WQUxVRVNfQ0xPVURTQ0FQRTtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9IU1FMREIgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0hTUUxEQiA9IFRNUF9EQlNZU1RFTVZBTFVFU19IU1FMREI7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfUFJPR1JFU1MgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX1BST0dSRVNTID0gVE1QX0RCU1lTVEVNVkFMVUVTX1BST0dSRVNTO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX01BWERCIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19NQVhEQiA9IFRNUF9EQlNZU1RFTVZBTFVFU19NQVhEQjtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9IQU5BREIgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0hBTkFEQiA9IFRNUF9EQlNZU1RFTVZBTFVFU19IQU5BREI7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfSU5HUkVTIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19JTkdSRVMgPSBUTVBfREJTWVNURU1WQUxVRVNfSU5HUkVTO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0ZJUlNUU1FMIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19GSVJTVFNRTCA9IFRNUF9EQlNZU1RFTVZBTFVFU19GSVJTVFNRTDtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9FREIgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0VEQiA9IFRNUF9EQlNZU1RFTVZBTFVFU19FREI7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfQ0FDSEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0NBQ0hFID0gVE1QX0RCU1lTVEVNVkFMVUVTX0NBQ0hFO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0FEQUJBUyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfQURBQkFTID0gVE1QX0RCU1lTVEVNVkFMVUVTX0FEQUJBUztcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9GSVJFQklSRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfRklSRUJJUkQgPSBUTVBfREJTWVNURU1WQUxVRVNfRklSRUJJUkQ7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfREVSQlkgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0RFUkJZID0gVE1QX0RCU1lTVEVNVkFMVUVTX0RFUkJZO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0ZJTEVNQUtFUiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfRklMRU1BS0VSID0gVE1QX0RCU1lTVEVNVkFMVUVTX0ZJTEVNQUtFUjtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9JTkZPUk1JWCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfSU5GT1JNSVggPSBUTVBfREJTWVNURU1WQUxVRVNfSU5GT1JNSVg7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfSU5TVEFOVERCIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19JTlNUQU5UREIgPSBUTVBfREJTWVNURU1WQUxVRVNfSU5TVEFOVERCO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0lOVEVSQkFTRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfSU5URVJCQVNFID0gVE1QX0RCU1lTVEVNVkFMVUVTX0lOVEVSQkFTRTtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9NQVJJQURCIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19NQVJJQURCID0gVE1QX0RCU1lTVEVNVkFMVUVTX01BUklBREI7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfTkVURVpaQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfTkVURVpaQSA9IFRNUF9EQlNZU1RFTVZBTFVFU19ORVRFWlpBO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX1BFUlZBU0lWRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfUEVSVkFTSVZFID0gVE1QX0RCU1lTVEVNVkFMVUVTX1BFUlZBU0lWRTtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9QT0lOVEJBU0UgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX1BPSU5UQkFTRSA9IFRNUF9EQlNZU1RFTVZBTFVFU19QT0lOVEJBU0U7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfU1FMSVRFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19TUUxJVEUgPSBUTVBfREJTWVNURU1WQUxVRVNfU1FMSVRFO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX1NZQkFTRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfU1lCQVNFID0gVE1QX0RCU1lTVEVNVkFMVUVTX1NZQkFTRTtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9URVJBREFUQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfVEVSQURBVEEgPSBUTVBfREJTWVNURU1WQUxVRVNfVEVSQURBVEE7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfVkVSVElDQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfVkVSVElDQSA9IFRNUF9EQlNZU1RFTVZBTFVFU19WRVJUSUNBO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0gyIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19IMiA9IFRNUF9EQlNZU1RFTVZBTFVFU19IMjtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9DT0xERlVTSU9OIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19DT0xERlVTSU9OID0gVE1QX0RCU1lTVEVNVkFMVUVTX0NPTERGVVNJT047XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfQ0FTU0FORFJBIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19DQVNTQU5EUkEgPSBUTVBfREJTWVNURU1WQUxVRVNfQ0FTU0FORFJBO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0hCQVNFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19IQkFTRSA9IFRNUF9EQlNZU1RFTVZBTFVFU19IQkFTRTtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9NT05HT0RCIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19NT05HT0RCID0gVE1QX0RCU1lTVEVNVkFMVUVTX01PTkdPREI7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfUkVESVMgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX1JFRElTID0gVE1QX0RCU1lTVEVNVkFMVUVTX1JFRElTO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0NPVUNIQkFTRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfQ09VQ0hCQVNFID0gVE1QX0RCU1lTVEVNVkFMVUVTX0NPVUNIQkFTRTtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9DT1VDSERCIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19DT1VDSERCID0gVE1QX0RCU1lTVEVNVkFMVUVTX0NPVUNIREI7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfQ09TTU9TREIgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0NPU01PU0RCID0gVE1QX0RCU1lTVEVNVkFMVUVTX0NPU01PU0RCO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0RZTkFNT0RCIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQlNZU1RFTVZBTFVFU19EWU5BTU9EQiA9IFRNUF9EQlNZU1RFTVZBTFVFU19EWU5BTU9EQjtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9ORU80SiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJTWVNURU1WQUxVRVNfTkVPNEogPSBUTVBfREJTWVNURU1WQUxVRVNfTkVPNEo7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfR0VPREUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0dFT0RFID0gVE1QX0RCU1lTVEVNVkFMVUVTX0dFT0RFO1xuLyoqXG4gKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0gKERCTVMpIHByb2R1Y3QgYmVpbmcgdXNlZC4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2Ygd2VsbC1rbm93biBpZGVudGlmaWVycy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfU1lTVEVNX1ZBTFVFX0VMQVNUSUNTRUFSQ0ggaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0VMQVNUSUNTRUFSQ0ggPSBUTVBfREJTWVNURU1WQUxVRVNfRUxBU1RJQ1NFQVJDSDtcbi8qKlxuICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtIChEQk1TKSBwcm9kdWN0IGJlaW5nIHVzZWQuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mIHdlbGwta25vd24gaWRlbnRpZmllcnMuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX1NZU1RFTV9WQUxVRV9NRU1DQUNIRUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX01FTUNBQ0hFRCA9IFRNUF9EQlNZU1RFTVZBTFVFU19NRU1DQUNIRUQ7XG4vKipcbiAqIEFuIGlkZW50aWZpZXIgZm9yIHRoZSBkYXRhYmFzZSBtYW5hZ2VtZW50IHN5c3RlbSAoREJNUykgcHJvZHVjdCBiZWluZyB1c2VkLiBTZWUgYmVsb3cgZm9yIGEgbGlzdCBvZiB3ZWxsLWtub3duIGlkZW50aWZpZXJzLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9TWVNURU1fVkFMVUVfQ09DS1JPQUNIREIgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCU1lTVEVNVkFMVUVTX0NPQ0tST0FDSERCID0gVE1QX0RCU1lTVEVNVkFMVUVTX0NPQ0tST0FDSERCO1xuLyoqXG4gKiBUaGUgY29uc3RhbnQgbWFwIG9mIHZhbHVlcyBmb3IgRGJTeXN0ZW1WYWx1ZXMuXG4gKiBAZGVwcmVjYXRlZCBVc2UgdGhlIERCU1lTVEVNVkFMVUVTX1hYWFhYIGNvbnN0YW50cyByYXRoZXIgdGhhbiB0aGUgRGJTeXN0ZW1WYWx1ZXMuWFhYWFggZm9yIGJ1bmRsZSBtaW5pZmljYXRpb24uXG4gKi9cbnZhciBEYlN5c3RlbVZhbHVlcyA9IFxuLyojX19QVVJFX18qLyBjcmVhdGVDb25zdE1hcChbXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX09USEVSX1NRTCxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfTVNTUUwsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX01ZU1FMLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19PUkFDTEUsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0RCMixcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfUE9TVEdSRVNRTCxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfUkVEU0hJRlQsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0hJVkUsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0NMT1VEU0NBUEUsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0hTUUxEQixcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfUFJPR1JFU1MsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX01BWERCLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19IQU5BREIsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0lOR1JFUyxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfRklSU1RTUUwsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0VEQixcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfQ0FDSEUsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0FEQUJBUyxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfRklSRUJJUkQsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0RFUkJZLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19GSUxFTUFLRVIsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0lORk9STUlYLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19JTlNUQU5UREIsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0lOVEVSQkFTRSxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfTUFSSUFEQixcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfTkVURVpaQSxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfUEVSVkFTSVZFLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19QT0lOVEJBU0UsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX1NRTElURSxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfU1lCQVNFLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19URVJBREFUQSxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfVkVSVElDQSxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfSDIsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0NPTERGVVNJT04sXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0NBU1NBTkRSQSxcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfSEJBU0UsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX01PTkdPREIsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX1JFRElTLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19DT1VDSEJBU0UsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0NPVUNIREIsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0NPU01PU0RCLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19EWU5BTU9EQixcbiAgICBUTVBfREJTWVNURU1WQUxVRVNfTkVPNEosXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0dFT0RFLFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19FTEFTVElDU0VBUkNILFxuICAgIFRNUF9EQlNZU1RFTVZBTFVFU19NRU1DQUNIRUQsXG4gICAgVE1QX0RCU1lTVEVNVkFMVUVTX0NPQ0tST0FDSERCLFxuXSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBDb25zdGFudCB2YWx1ZXMgZm9yIERiQ2Fzc2FuZHJhQ29uc2lzdGVuY3lMZXZlbFZhbHVlcyBlbnVtIGRlZmluaXRpb25cbiAqXG4gKiBUaGUgY29uc2lzdGVuY3kgbGV2ZWwgb2YgdGhlIHF1ZXJ5LiBCYXNlZCBvbiBjb25zaXN0ZW5jeSB2YWx1ZXMgZnJvbSBbQ1FMXShodHRwczovL2RvY3MuZGF0YXN0YXguY29tL2VuL2Nhc3NhbmRyYS1vc3MvMy4wL2Nhc3NhbmRyYS9kbWwvZG1sQ29uZmlnQ29uc2lzdGVuY3kuaHRtbCkuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vLyBUZW1wb3JhcnkgbG9jYWwgY29uc3RhbnRzIHRvIGFzc2lnbiB0byB0aGUgaW5kaXZpZHVhbCBleHBvcnRzIGFuZCB0aGUgbmFtZXNwYWNlZCB2ZXJzaW9uXG4vLyBSZXF1aXJlZCB0byBhdm9pZCB0aGUgbmFtZXNwYWNlIGV4cG9ydHMgdXNpbmcgdGhlIHVubWluaWZpYWJsZSBleHBvcnQgbmFtZXMgZm9yIHNvbWUgcGFja2FnZSB0eXBlc1xudmFyIFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfQUxMID0gJ2FsbCc7XG52YXIgVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19FQUNIX1FVT1JVTSA9ICdlYWNoX3F1b3J1bSc7XG52YXIgVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19RVU9SVU0gPSAncXVvcnVtJztcbnZhciBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0xPQ0FMX1FVT1JVTSA9ICdsb2NhbF9xdW9ydW0nO1xudmFyIFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfT05FID0gJ29uZSc7XG52YXIgVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19UV08gPSAndHdvJztcbnZhciBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1RIUkVFID0gJ3RocmVlJztcbnZhciBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0xPQ0FMX09ORSA9ICdsb2NhbF9vbmUnO1xudmFyIFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfQU5ZID0gJ2FueSc7XG52YXIgVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19TRVJJQUwgPSAnc2VyaWFsJztcbnZhciBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0xPQ0FMX1NFUklBTCA9ICdsb2NhbF9zZXJpYWwnO1xuLyoqXG4gKiBUaGUgY29uc2lzdGVuY3kgbGV2ZWwgb2YgdGhlIHF1ZXJ5LiBCYXNlZCBvbiBjb25zaXN0ZW5jeSB2YWx1ZXMgZnJvbSBbQ1FMXShodHRwczovL2RvY3MuZGF0YXN0YXguY29tL2VuL2Nhc3NhbmRyYS1vc3MvMy4wL2Nhc3NhbmRyYS9kbWwvZG1sQ29uZmlnQ29uc2lzdGVuY3kuaHRtbCkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX0NBU1NBTkRSQV9DT05TSVNURU5DWV9MRVZFTF9WQUxVRV9BTEwgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19BTEwgPSBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0FMTDtcbi8qKlxuICogVGhlIGNvbnNpc3RlbmN5IGxldmVsIG9mIHRoZSBxdWVyeS4gQmFzZWQgb24gY29uc2lzdGVuY3kgdmFsdWVzIGZyb20gW0NRTF0oaHR0cHM6Ly9kb2NzLmRhdGFzdGF4LmNvbS9lbi9jYXNzYW5kcmEtb3NzLzMuMC9jYXNzYW5kcmEvZG1sL2RtbENvbmZpZ0NvbnNpc3RlbmN5Lmh0bWwpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9DQVNTQU5EUkFfQ09OU0lTVEVOQ1lfTEVWRUxfVkFMVUVfRUFDSF9RVU9SVU0gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19FQUNIX1FVT1JVTSA9IFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfRUFDSF9RVU9SVU07XG4vKipcbiAqIFRoZSBjb25zaXN0ZW5jeSBsZXZlbCBvZiB0aGUgcXVlcnkuIEJhc2VkIG9uIGNvbnNpc3RlbmN5IHZhbHVlcyBmcm9tIFtDUUxdKGh0dHBzOi8vZG9jcy5kYXRhc3RheC5jb20vZW4vY2Fzc2FuZHJhLW9zcy8zLjAvY2Fzc2FuZHJhL2RtbC9kbWxDb25maWdDb25zaXN0ZW5jeS5odG1sKS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMX1ZBTFVFX1FVT1JVTSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1FVT1JVTSA9IFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfUVVPUlVNO1xuLyoqXG4gKiBUaGUgY29uc2lzdGVuY3kgbGV2ZWwgb2YgdGhlIHF1ZXJ5LiBCYXNlZCBvbiBjb25zaXN0ZW5jeSB2YWx1ZXMgZnJvbSBbQ1FMXShodHRwczovL2RvY3MuZGF0YXN0YXguY29tL2VuL2Nhc3NhbmRyYS1vc3MvMy4wL2Nhc3NhbmRyYS9kbWwvZG1sQ29uZmlnQ29uc2lzdGVuY3kuaHRtbCkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX0NBU1NBTkRSQV9DT05TSVNURU5DWV9MRVZFTF9WQUxVRV9MT0NBTF9RVU9SVU0gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19MT0NBTF9RVU9SVU0gPSBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0xPQ0FMX1FVT1JVTTtcbi8qKlxuICogVGhlIGNvbnNpc3RlbmN5IGxldmVsIG9mIHRoZSBxdWVyeS4gQmFzZWQgb24gY29uc2lzdGVuY3kgdmFsdWVzIGZyb20gW0NRTF0oaHR0cHM6Ly9kb2NzLmRhdGFzdGF4LmNvbS9lbi9jYXNzYW5kcmEtb3NzLzMuMC9jYXNzYW5kcmEvZG1sL2RtbENvbmZpZ0NvbnNpc3RlbmN5Lmh0bWwpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9DQVNTQU5EUkFfQ09OU0lTVEVOQ1lfTEVWRUxfVkFMVUVfT05FIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfT05FID0gVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19PTkU7XG4vKipcbiAqIFRoZSBjb25zaXN0ZW5jeSBsZXZlbCBvZiB0aGUgcXVlcnkuIEJhc2VkIG9uIGNvbnNpc3RlbmN5IHZhbHVlcyBmcm9tIFtDUUxdKGh0dHBzOi8vZG9jcy5kYXRhc3RheC5jb20vZW4vY2Fzc2FuZHJhLW9zcy8zLjAvY2Fzc2FuZHJhL2RtbC9kbWxDb25maWdDb25zaXN0ZW5jeS5odG1sKS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMX1ZBTFVFX1RXTyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1RXTyA9IFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfVFdPO1xuLyoqXG4gKiBUaGUgY29uc2lzdGVuY3kgbGV2ZWwgb2YgdGhlIHF1ZXJ5LiBCYXNlZCBvbiBjb25zaXN0ZW5jeSB2YWx1ZXMgZnJvbSBbQ1FMXShodHRwczovL2RvY3MuZGF0YXN0YXguY29tL2VuL2Nhc3NhbmRyYS1vc3MvMy4wL2Nhc3NhbmRyYS9kbWwvZG1sQ29uZmlnQ29uc2lzdGVuY3kuaHRtbCkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX0NBU1NBTkRSQV9DT05TSVNURU5DWV9MRVZFTF9WQUxVRV9USFJFRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1RIUkVFID0gVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19USFJFRTtcbi8qKlxuICogVGhlIGNvbnNpc3RlbmN5IGxldmVsIG9mIHRoZSBxdWVyeS4gQmFzZWQgb24gY29uc2lzdGVuY3kgdmFsdWVzIGZyb20gW0NRTF0oaHR0cHM6Ly9kb2NzLmRhdGFzdGF4LmNvbS9lbi9jYXNzYW5kcmEtb3NzLzMuMC9jYXNzYW5kcmEvZG1sL2RtbENvbmZpZ0NvbnNpc3RlbmN5Lmh0bWwpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9DQVNTQU5EUkFfQ09OU0lTVEVOQ1lfTEVWRUxfVkFMVUVfTE9DQUxfT05FIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfTE9DQUxfT05FID0gVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19MT0NBTF9PTkU7XG4vKipcbiAqIFRoZSBjb25zaXN0ZW5jeSBsZXZlbCBvZiB0aGUgcXVlcnkuIEJhc2VkIG9uIGNvbnNpc3RlbmN5IHZhbHVlcyBmcm9tIFtDUUxdKGh0dHBzOi8vZG9jcy5kYXRhc3RheC5jb20vZW4vY2Fzc2FuZHJhLW9zcy8zLjAvY2Fzc2FuZHJhL2RtbC9kbWxDb25maWdDb25zaXN0ZW5jeS5odG1sKS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMX1ZBTFVFX0FOWSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0FOWSA9IFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfQU5ZO1xuLyoqXG4gKiBUaGUgY29uc2lzdGVuY3kgbGV2ZWwgb2YgdGhlIHF1ZXJ5LiBCYXNlZCBvbiBjb25zaXN0ZW5jeSB2YWx1ZXMgZnJvbSBbQ1FMXShodHRwczovL2RvY3MuZGF0YXN0YXguY29tL2VuL2Nhc3NhbmRyYS1vc3MvMy4wL2Nhc3NhbmRyYS9kbWwvZG1sQ29uZmlnQ29uc2lzdGVuY3kuaHRtbCkuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIERCX0NBU1NBTkRSQV9DT05TSVNURU5DWV9MRVZFTF9WQUxVRV9TRVJJQUwgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIERCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19TRVJJQUwgPSBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1NFUklBTDtcbi8qKlxuICogVGhlIGNvbnNpc3RlbmN5IGxldmVsIG9mIHRoZSBxdWVyeS4gQmFzZWQgb24gY29uc2lzdGVuY3kgdmFsdWVzIGZyb20gW0NRTF0oaHR0cHM6Ly9kb2NzLmRhdGFzdGF4LmNvbS9lbi9jYXNzYW5kcmEtb3NzLzMuMC9jYXNzYW5kcmEvZG1sL2RtbENvbmZpZ0NvbnNpc3RlbmN5Lmh0bWwpLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBEQl9DQVNTQU5EUkFfQ09OU0lTVEVOQ1lfTEVWRUxfVkFMVUVfTE9DQUxfU0VSSUFMIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfTE9DQUxfU0VSSUFMID0gVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19MT0NBTF9TRVJJQUw7XG4vKipcbiAqIFRoZSBjb25zdGFudCBtYXAgb2YgdmFsdWVzIGZvciBEYkNhc3NhbmRyYUNvbnNpc3RlbmN5TGV2ZWxWYWx1ZXMuXG4gKiBAZGVwcmVjYXRlZCBVc2UgdGhlIERCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19YWFhYWCBjb25zdGFudHMgcmF0aGVyIHRoYW4gdGhlIERiQ2Fzc2FuZHJhQ29uc2lzdGVuY3lMZXZlbFZhbHVlcy5YWFhYWCBmb3IgYnVuZGxlIG1pbmlmaWNhdGlvbi5cbiAqL1xudmFyIERiQ2Fzc2FuZHJhQ29uc2lzdGVuY3lMZXZlbFZhbHVlcyA9IFxuLyojX19QVVJFX18qLyBjcmVhdGVDb25zdE1hcChbXG4gICAgVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19BTEwsXG4gICAgVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19FQUNIX1FVT1JVTSxcbiAgICBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1FVT1JVTSxcbiAgICBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0xPQ0FMX1FVT1JVTSxcbiAgICBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX09ORSxcbiAgICBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1RXTyxcbiAgICBUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1RIUkVFLFxuICAgIFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfTE9DQUxfT05FLFxuICAgIFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfQU5ZLFxuICAgIFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfU0VSSUFMLFxuICAgIFRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfTE9DQUxfU0VSSUFMLFxuXSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBDb25zdGFudCB2YWx1ZXMgZm9yIEZhYXNUcmlnZ2VyVmFsdWVzIGVudW0gZGVmaW5pdGlvblxuICpcbiAqIFR5cGUgb2YgdGhlIHRyaWdnZXIgb24gd2hpY2ggdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLy8gVGVtcG9yYXJ5IGxvY2FsIGNvbnN0YW50cyB0byBhc3NpZ24gdG8gdGhlIGluZGl2aWR1YWwgZXhwb3J0cyBhbmQgdGhlIG5hbWVzcGFjZWQgdmVyc2lvblxuLy8gUmVxdWlyZWQgdG8gYXZvaWQgdGhlIG5hbWVzcGFjZSBleHBvcnRzIHVzaW5nIHRoZSB1bm1pbmlmaWFibGUgZXhwb3J0IG5hbWVzIGZvciBzb21lIHBhY2thZ2UgdHlwZXNcbnZhciBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfREFUQVNPVVJDRSA9ICdkYXRhc291cmNlJztcbnZhciBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfSFRUUCA9ICdodHRwJztcbnZhciBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfUFVCU1VCID0gJ3B1YnN1Yic7XG52YXIgVE1QX0ZBQVNUUklHR0VSVkFMVUVTX1RJTUVSID0gJ3RpbWVyJztcbnZhciBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfT1RIRVIgPSAnb3RoZXInO1xuLyoqXG4gKiBUeXBlIG9mIHRoZSB0cmlnZ2VyIG9uIHdoaWNoIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgRkFBU19UUklHR0VSX1ZBTFVFX0RBVEFTT1VSQ0UgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIEZBQVNUUklHR0VSVkFMVUVTX0RBVEFTT1VSQ0UgPSBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfREFUQVNPVVJDRTtcbi8qKlxuICogVHlwZSBvZiB0aGUgdHJpZ2dlciBvbiB3aGljaCB0aGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEZBQVNfVFJJR0dFUl9WQUxVRV9IVFRQIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBGQUFTVFJJR0dFUlZBTFVFU19IVFRQID0gVE1QX0ZBQVNUUklHR0VSVkFMVUVTX0hUVFA7XG4vKipcbiAqIFR5cGUgb2YgdGhlIHRyaWdnZXIgb24gd2hpY2ggdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBGQUFTX1RSSUdHRVJfVkFMVUVfUFVCU1VCIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBGQUFTVFJJR0dFUlZBTFVFU19QVUJTVUIgPSBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfUFVCU1VCO1xuLyoqXG4gKiBUeXBlIG9mIHRoZSB0cmlnZ2VyIG9uIHdoaWNoIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgRkFBU19UUklHR0VSX1ZBTFVFX1RJTUVSIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBGQUFTVFJJR0dFUlZBTFVFU19USU1FUiA9IFRNUF9GQUFTVFJJR0dFUlZBTFVFU19USU1FUjtcbi8qKlxuICogVHlwZSBvZiB0aGUgdHJpZ2dlciBvbiB3aGljaCB0aGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEZBQVNfVFJJR0dFUl9WQUxVRV9PVEhFUiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgRkFBU1RSSUdHRVJWQUxVRVNfT1RIRVIgPSBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfT1RIRVI7XG4vKipcbiAqIFRoZSBjb25zdGFudCBtYXAgb2YgdmFsdWVzIGZvciBGYWFzVHJpZ2dlclZhbHVlcy5cbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgRkFBU1RSSUdHRVJWQUxVRVNfWFhYWFggY29uc3RhbnRzIHJhdGhlciB0aGFuIHRoZSBGYWFzVHJpZ2dlclZhbHVlcy5YWFhYWCBmb3IgYnVuZGxlIG1pbmlmaWNhdGlvbi5cbiAqL1xudmFyIEZhYXNUcmlnZ2VyVmFsdWVzID0gXG4vKiNfX1BVUkVfXyovIGNyZWF0ZUNvbnN0TWFwKFtcbiAgICBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfREFUQVNPVVJDRSxcbiAgICBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfSFRUUCxcbiAgICBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfUFVCU1VCLFxuICAgIFRNUF9GQUFTVFJJR0dFUlZBTFVFU19USU1FUixcbiAgICBUTVBfRkFBU1RSSUdHRVJWQUxVRVNfT1RIRVIsXG5dKTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIENvbnN0YW50IHZhbHVlcyBmb3IgRmFhc0RvY3VtZW50T3BlcmF0aW9uVmFsdWVzIGVudW0gZGVmaW5pdGlvblxuICpcbiAqIERlc2NyaWJlcyB0aGUgdHlwZSBvZiB0aGUgb3BlcmF0aW9uIHRoYXQgd2FzIHBlcmZvcm1lZCBvbiB0aGUgZGF0YS5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8vIFRlbXBvcmFyeSBsb2NhbCBjb25zdGFudHMgdG8gYXNzaWduIHRvIHRoZSBpbmRpdmlkdWFsIGV4cG9ydHMgYW5kIHRoZSBuYW1lc3BhY2VkIHZlcnNpb25cbi8vIFJlcXVpcmVkIHRvIGF2b2lkIHRoZSBuYW1lc3BhY2UgZXhwb3J0cyB1c2luZyB0aGUgdW5taW5pZmlhYmxlIGV4cG9ydCBuYW1lcyBmb3Igc29tZSBwYWNrYWdlIHR5cGVzXG52YXIgVE1QX0ZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19JTlNFUlQgPSAnaW5zZXJ0JztcbnZhciBUTVBfRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX0VESVQgPSAnZWRpdCc7XG52YXIgVE1QX0ZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19ERUxFVEUgPSAnZGVsZXRlJztcbi8qKlxuICogRGVzY3JpYmVzIHRoZSB0eXBlIG9mIHRoZSBvcGVyYXRpb24gdGhhdCB3YXMgcGVyZm9ybWVkIG9uIHRoZSBkYXRhLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBGQUFTX0RPQ1VNRU5UX09QRVJBVElPTl9WQUxVRV9JTlNFUlQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIEZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19JTlNFUlQgPSBUTVBfRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX0lOU0VSVDtcbi8qKlxuICogRGVzY3JpYmVzIHRoZSB0eXBlIG9mIHRoZSBvcGVyYXRpb24gdGhhdCB3YXMgcGVyZm9ybWVkIG9uIHRoZSBkYXRhLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBGQUFTX0RPQ1VNRU5UX09QRVJBVElPTl9WQUxVRV9FRElUIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBGQUFTRE9DVU1FTlRPUEVSQVRJT05WQUxVRVNfRURJVCA9IFRNUF9GQUFTRE9DVU1FTlRPUEVSQVRJT05WQUxVRVNfRURJVDtcbi8qKlxuICogRGVzY3JpYmVzIHRoZSB0eXBlIG9mIHRoZSBvcGVyYXRpb24gdGhhdCB3YXMgcGVyZm9ybWVkIG9uIHRoZSBkYXRhLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBGQUFTX0RPQ1VNRU5UX09QRVJBVElPTl9WQUxVRV9ERUxFVEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIEZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19ERUxFVEUgPSBUTVBfRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX0RFTEVURTtcbi8qKlxuICogVGhlIGNvbnN0YW50IG1hcCBvZiB2YWx1ZXMgZm9yIEZhYXNEb2N1bWVudE9wZXJhdGlvblZhbHVlcy5cbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX1hYWFhYIGNvbnN0YW50cyByYXRoZXIgdGhhbiB0aGUgRmFhc0RvY3VtZW50T3BlcmF0aW9uVmFsdWVzLlhYWFhYIGZvciBidW5kbGUgbWluaWZpY2F0aW9uLlxuICovXG52YXIgRmFhc0RvY3VtZW50T3BlcmF0aW9uVmFsdWVzID0gXG4vKiNfX1BVUkVfXyovIGNyZWF0ZUNvbnN0TWFwKFtcbiAgICBUTVBfRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX0lOU0VSVCxcbiAgICBUTVBfRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX0VESVQsXG4gICAgVE1QX0ZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19ERUxFVEUsXG5dKTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIENvbnN0YW50IHZhbHVlcyBmb3IgRmFhc0ludm9rZWRQcm92aWRlclZhbHVlcyBlbnVtIGRlZmluaXRpb25cbiAqXG4gKiBUaGUgY2xvdWQgcHJvdmlkZXIgb2YgdGhlIGludm9rZWQgZnVuY3Rpb24uXG4gKlxuICogTm90ZTogU0hPVUxEIGJlIGVxdWFsIHRvIHRoZSBgY2xvdWQucHJvdmlkZXJgIHJlc291cmNlIGF0dHJpYnV0ZSBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8vIFRlbXBvcmFyeSBsb2NhbCBjb25zdGFudHMgdG8gYXNzaWduIHRvIHRoZSBpbmRpdmlkdWFsIGV4cG9ydHMgYW5kIHRoZSBuYW1lc3BhY2VkIHZlcnNpb25cbi8vIFJlcXVpcmVkIHRvIGF2b2lkIHRoZSBuYW1lc3BhY2UgZXhwb3J0cyB1c2luZyB0aGUgdW5taW5pZmlhYmxlIGV4cG9ydCBuYW1lcyBmb3Igc29tZSBwYWNrYWdlIHR5cGVzXG52YXIgVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQUxJQkFCQV9DTE9VRCA9ICdhbGliYWJhX2Nsb3VkJztcbnZhciBUTVBfRkFBU0lOVk9LRURQUk9WSURFUlZBTFVFU19BV1MgPSAnYXdzJztcbnZhciBUTVBfRkFBU0lOVk9LRURQUk9WSURFUlZBTFVFU19BWlVSRSA9ICdhenVyZSc7XG52YXIgVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfR0NQID0gJ2djcCc7XG4vKipcbiAqIFRoZSBjbG91ZCBwcm92aWRlciBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqXG4gKiBOb3RlOiBTSE9VTEQgYmUgZXF1YWwgdG8gdGhlIGBjbG91ZC5wcm92aWRlcmAgcmVzb3VyY2UgYXR0cmlidXRlIG9mIHRoZSBpbnZva2VkIGZ1bmN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBGQUFTX0lOVk9LRURfUFJPVklERVJfVkFMVUVfQUxJQkFCQV9DTE9VRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgRkFBU0lOVk9LRURQUk9WSURFUlZBTFVFU19BTElCQUJBX0NMT1VEID0gVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQUxJQkFCQV9DTE9VRDtcbi8qKlxuICogVGhlIGNsb3VkIHByb3ZpZGVyIG9mIHRoZSBpbnZva2VkIGZ1bmN0aW9uLlxuICpcbiAqIE5vdGU6IFNIT1VMRCBiZSBlcXVhbCB0byB0aGUgYGNsb3VkLnByb3ZpZGVyYCByZXNvdXJjZSBhdHRyaWJ1dGUgb2YgdGhlIGludm9rZWQgZnVuY3Rpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEZBQVNfSU5WT0tFRF9QUk9WSURFUl9WQUxVRV9BV1MgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIEZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQVdTID0gVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQVdTO1xuLyoqXG4gKiBUaGUgY2xvdWQgcHJvdmlkZXIgb2YgdGhlIGludm9rZWQgZnVuY3Rpb24uXG4gKlxuICogTm90ZTogU0hPVUxEIGJlIGVxdWFsIHRvIHRoZSBgY2xvdWQucHJvdmlkZXJgIHJlc291cmNlIGF0dHJpYnV0ZSBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgRkFBU19JTlZPS0VEX1BST1ZJREVSX1ZBTFVFX0FaVVJFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBGQUFTSU5WT0tFRFBST1ZJREVSVkFMVUVTX0FaVVJFID0gVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQVpVUkU7XG4vKipcbiAqIFRoZSBjbG91ZCBwcm92aWRlciBvZiB0aGUgaW52b2tlZCBmdW5jdGlvbi5cbiAqXG4gKiBOb3RlOiBTSE9VTEQgYmUgZXF1YWwgdG8gdGhlIGBjbG91ZC5wcm92aWRlcmAgcmVzb3VyY2UgYXR0cmlidXRlIG9mIHRoZSBpbnZva2VkIGZ1bmN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBGQUFTX0lOVk9LRURfUFJPVklERVJfVkFMVUVfR0NQIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBGQUFTSU5WT0tFRFBST1ZJREVSVkFMVUVTX0dDUCA9IFRNUF9GQUFTSU5WT0tFRFBST1ZJREVSVkFMVUVTX0dDUDtcbi8qKlxuICogVGhlIGNvbnN0YW50IG1hcCBvZiB2YWx1ZXMgZm9yIEZhYXNJbnZva2VkUHJvdmlkZXJWYWx1ZXMuXG4gKiBAZGVwcmVjYXRlZCBVc2UgdGhlIEZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfWFhYWFggY29uc3RhbnRzIHJhdGhlciB0aGFuIHRoZSBGYWFzSW52b2tlZFByb3ZpZGVyVmFsdWVzLlhYWFhYIGZvciBidW5kbGUgbWluaWZpY2F0aW9uLlxuICovXG52YXIgRmFhc0ludm9rZWRQcm92aWRlclZhbHVlcyA9IFxuLyojX19QVVJFX18qLyBjcmVhdGVDb25zdE1hcChbXG4gICAgVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQUxJQkFCQV9DTE9VRCxcbiAgICBUTVBfRkFBU0lOVk9LRURQUk9WSURFUlZBTFVFU19BV1MsXG4gICAgVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQVpVUkUsXG4gICAgVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfR0NQLFxuXSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBDb25zdGFudCB2YWx1ZXMgZm9yIE5ldFRyYW5zcG9ydFZhbHVlcyBlbnVtIGRlZmluaXRpb25cbiAqXG4gKiBUcmFuc3BvcnQgcHJvdG9jb2wgdXNlZC4gU2VlIG5vdGUgYmVsb3cuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vLyBUZW1wb3JhcnkgbG9jYWwgY29uc3RhbnRzIHRvIGFzc2lnbiB0byB0aGUgaW5kaXZpZHVhbCBleHBvcnRzIGFuZCB0aGUgbmFtZXNwYWNlZCB2ZXJzaW9uXG4vLyBSZXF1aXJlZCB0byBhdm9pZCB0aGUgbmFtZXNwYWNlIGV4cG9ydHMgdXNpbmcgdGhlIHVubWluaWZpYWJsZSBleHBvcnQgbmFtZXMgZm9yIHNvbWUgcGFja2FnZSB0eXBlc1xudmFyIFRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfSVBfVENQID0gJ2lwX3RjcCc7XG52YXIgVE1QX05FVFRSQU5TUE9SVFZBTFVFU19JUF9VRFAgPSAnaXBfdWRwJztcbnZhciBUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX0lQID0gJ2lwJztcbnZhciBUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX1VOSVggPSAndW5peCc7XG52YXIgVE1QX05FVFRSQU5TUE9SVFZBTFVFU19QSVBFID0gJ3BpcGUnO1xudmFyIFRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfSU5QUk9DID0gJ2lucHJvYyc7XG52YXIgVE1QX05FVFRSQU5TUE9SVFZBTFVFU19PVEhFUiA9ICdvdGhlcic7XG4vKipcbiAqIFRyYW5zcG9ydCBwcm90b2NvbCB1c2VkLiBTZWUgbm90ZSBiZWxvdy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUX1RSQU5TUE9SVF9WQUxVRV9JUF9UQ1AgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIE5FVFRSQU5TUE9SVFZBTFVFU19JUF9UQ1AgPSBUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX0lQX1RDUDtcbi8qKlxuICogVHJhbnNwb3J0IHByb3RvY29sIHVzZWQuIFNlZSBub3RlIGJlbG93LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRfVFJBTlNQT1JUX1ZBTFVFX0lQX1VEUCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUVFJBTlNQT1JUVkFMVUVTX0lQX1VEUCA9IFRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfSVBfVURQO1xuLyoqXG4gKiBUcmFuc3BvcnQgcHJvdG9jb2wgdXNlZC4gU2VlIG5vdGUgYmVsb3cuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVtb3ZlZCBpbiB2MS4yMS4wLlxuICovXG52YXIgTkVUVFJBTlNQT1JUVkFMVUVTX0lQID0gVE1QX05FVFRSQU5TUE9SVFZBTFVFU19JUDtcbi8qKlxuICogVHJhbnNwb3J0IHByb3RvY29sIHVzZWQuIFNlZSBub3RlIGJlbG93LlxuICpcbiAqIEBkZXByZWNhdGVkIFJlbW92ZWQgaW4gdjEuMjEuMC5cbiAqL1xudmFyIE5FVFRSQU5TUE9SVFZBTFVFU19VTklYID0gVE1QX05FVFRSQU5TUE9SVFZBTFVFU19VTklYO1xuLyoqXG4gKiBUcmFuc3BvcnQgcHJvdG9jb2wgdXNlZC4gU2VlIG5vdGUgYmVsb3cuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVF9UUkFOU1BPUlRfVkFMVUVfUElQRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUVFJBTlNQT1JUVkFMVUVTX1BJUEUgPSBUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX1BJUEU7XG4vKipcbiAqIFRyYW5zcG9ydCBwcm90b2NvbCB1c2VkLiBTZWUgbm90ZSBiZWxvdy5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUX1RSQU5TUE9SVF9WQUxVRV9JTlBST0MgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIE5FVFRSQU5TUE9SVFZBTFVFU19JTlBST0MgPSBUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX0lOUFJPQztcbi8qKlxuICogVHJhbnNwb3J0IHByb3RvY29sIHVzZWQuIFNlZSBub3RlIGJlbG93LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRfVFJBTlNQT1JUX1ZBTFVFX09USEVSIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRUUkFOU1BPUlRWQUxVRVNfT1RIRVIgPSBUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX09USEVSO1xuLyoqXG4gKiBUaGUgY29uc3RhbnQgbWFwIG9mIHZhbHVlcyBmb3IgTmV0VHJhbnNwb3J0VmFsdWVzLlxuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBORVRUUkFOU1BPUlRWQUxVRVNfWFhYWFggY29uc3RhbnRzIHJhdGhlciB0aGFuIHRoZSBOZXRUcmFuc3BvcnRWYWx1ZXMuWFhYWFggZm9yIGJ1bmRsZSBtaW5pZmljYXRpb24uXG4gKi9cbnZhciBOZXRUcmFuc3BvcnRWYWx1ZXMgPSBcbi8qI19fUFVSRV9fKi8gY3JlYXRlQ29uc3RNYXAoW1xuICAgIFRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfSVBfVENQLFxuICAgIFRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfSVBfVURQLFxuICAgIFRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfSVAsXG4gICAgVE1QX05FVFRSQU5TUE9SVFZBTFVFU19VTklYLFxuICAgIFRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfUElQRSxcbiAgICBUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX0lOUFJPQyxcbiAgICBUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX09USEVSLFxuXSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBDb25zdGFudCB2YWx1ZXMgZm9yIE5ldEhvc3RDb25uZWN0aW9uVHlwZVZhbHVlcyBlbnVtIGRlZmluaXRpb25cbiAqXG4gKiBUaGUgaW50ZXJuZXQgY29ubmVjdGlvbiB0eXBlIGN1cnJlbnRseSBiZWluZyB1c2VkIGJ5IHRoZSBob3N0LlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLy8gVGVtcG9yYXJ5IGxvY2FsIGNvbnN0YW50cyB0byBhc3NpZ24gdG8gdGhlIGluZGl2aWR1YWwgZXhwb3J0cyBhbmQgdGhlIG5hbWVzcGFjZWQgdmVyc2lvblxuLy8gUmVxdWlyZWQgdG8gYXZvaWQgdGhlIG5hbWVzcGFjZSBleHBvcnRzIHVzaW5nIHRoZSB1bm1pbmlmaWFibGUgZXhwb3J0IG5hbWVzIGZvciBzb21lIHBhY2thZ2UgdHlwZXNcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX1dJRkkgPSAnd2lmaSc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19XSVJFRCA9ICd3aXJlZCc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19DRUxMID0gJ2NlbGwnO1xudmFyIFRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfVU5BVkFJTEFCTEUgPSAndW5hdmFpbGFibGUnO1xudmFyIFRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfVU5LTk9XTiA9ICd1bmtub3duJztcbi8qKlxuICogVGhlIGludGVybmV0IGNvbm5lY3Rpb24gdHlwZSBjdXJyZW50bHkgYmVpbmcgdXNlZCBieSB0aGUgaG9zdC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1RZUEVfVkFMVUVfV0lGSSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX1dJRkkgPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX1dJRkk7XG4vKipcbiAqIFRoZSBpbnRlcm5ldCBjb25uZWN0aW9uIHR5cGUgY3VycmVudGx5IGJlaW5nIHVzZWQgYnkgdGhlIGhvc3QuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9UWVBFX1ZBTFVFX1dJUkVEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfV0lSRUQgPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX1dJUkVEO1xuLyoqXG4gKiBUaGUgaW50ZXJuZXQgY29ubmVjdGlvbiB0eXBlIGN1cnJlbnRseSBiZWluZyB1c2VkIGJ5IHRoZSBob3N0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRXT1JLX0NPTk5FQ1RJT05fVFlQRV9WQUxVRV9DRUxMIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfQ0VMTCA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfQ0VMTDtcbi8qKlxuICogVGhlIGludGVybmV0IGNvbm5lY3Rpb24gdHlwZSBjdXJyZW50bHkgYmVpbmcgdXNlZCBieSB0aGUgaG9zdC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1RZUEVfVkFMVUVfVU5BVkFJTEFCTEUgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIE5FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19VTkFWQUlMQUJMRSA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfVU5BVkFJTEFCTEU7XG4vKipcbiAqIFRoZSBpbnRlcm5ldCBjb25uZWN0aW9uIHR5cGUgY3VycmVudGx5IGJlaW5nIHVzZWQgYnkgdGhlIGhvc3QuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9UWVBFX1ZBTFVFX1VOS05PV04gaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIE5FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19VTktOT1dOID0gVE1QX05FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19VTktOT1dOO1xuLyoqXG4gKiBUaGUgY29uc3RhbnQgbWFwIG9mIHZhbHVlcyBmb3IgTmV0SG9zdENvbm5lY3Rpb25UeXBlVmFsdWVzLlxuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfWFhYWFggY29uc3RhbnRzIHJhdGhlciB0aGFuIHRoZSBOZXRIb3N0Q29ubmVjdGlvblR5cGVWYWx1ZXMuWFhYWFggZm9yIGJ1bmRsZSBtaW5pZmljYXRpb24uXG4gKi9cbnZhciBOZXRIb3N0Q29ubmVjdGlvblR5cGVWYWx1ZXMgPSBcbi8qI19fUFVSRV9fKi8gY3JlYXRlQ29uc3RNYXAoW1xuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfV0lGSSxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX1dJUkVELFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfQ0VMTCxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX1VOQVZBSUxBQkxFLFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfVU5LTk9XTixcbl0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQ29uc3RhbnQgdmFsdWVzIGZvciBOZXRIb3N0Q29ubmVjdGlvblN1YnR5cGVWYWx1ZXMgZW51bSBkZWZpbml0aW9uXG4gKlxuICogVGhpcyBkZXNjcmliZXMgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgY29ubmVjdGlvbi50eXBlLiBJdCBtYXkgYmUgdGhlIHR5cGUgb2YgY2VsbCB0ZWNobm9sb2d5IGNvbm5lY3Rpb24sIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGZvciBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgYSB3aWZpIGNvbm5lY3Rpb24uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vLyBUZW1wb3JhcnkgbG9jYWwgY29uc3RhbnRzIHRvIGFzc2lnbiB0byB0aGUgaW5kaXZpZHVhbCBleHBvcnRzIGFuZCB0aGUgbmFtZXNwYWNlZCB2ZXJzaW9uXG4vLyBSZXF1aXJlZCB0byBhdm9pZCB0aGUgbmFtZXNwYWNlIGV4cG9ydHMgdXNpbmcgdGhlIHVubWluaWZpYWJsZSBleHBvcnQgbmFtZXMgZm9yIHNvbWUgcGFja2FnZSB0eXBlc1xudmFyIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfR1BSUyA9ICdncHJzJztcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VER0UgPSAnZWRnZSc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19VTVRTID0gJ3VtdHMnO1xudmFyIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfQ0RNQSA9ICdjZG1hJztcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fMCA9ICdldmRvXzAnO1xudmFyIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRVZET19BID0gJ2V2ZG9fYSc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19DRE1BMjAwMF8xWFJUVCA9ICdjZG1hMjAwMF8xeHJ0dCc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU0RQQSA9ICdoc2RwYSc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1VQQSA9ICdoc3VwYSc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1BBID0gJ2hzcGEnO1xudmFyIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSURFTiA9ICdpZGVuJztcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fQiA9ICdldmRvX2InO1xudmFyIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFID0gJ2x0ZSc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19FSFJQRCA9ICdlaHJwZCc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1BBUCA9ICdoc3BhcCc7XG52YXIgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19HU00gPSAnZ3NtJztcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX1REX1NDRE1BID0gJ3RkX3NjZG1hJztcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0lXTEFOID0gJ2l3bGFuJztcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX05SID0gJ25yJztcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX05STlNBID0gJ25ybnNhJztcbnZhciBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0xURV9DQSA9ICdsdGVfY2EnO1xuLyoqXG4gKiBUaGlzIGRlc2NyaWJlcyBtb3JlIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBjb25uZWN0aW9uLnR5cGUuIEl0IG1heSBiZSB0aGUgdHlwZSBvZiBjZWxsIHRlY2hub2xvZ3kgY29ubmVjdGlvbiwgYnV0IGl0IGNvdWxkIGJlIHVzZWQgZm9yIGRlc2NyaWJpbmcgZGV0YWlscyBhYm91dCBhIHdpZmkgY29ubmVjdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1NVQlRZUEVfVkFMVUVfR1BSUyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0dQUlMgPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0dQUlM7XG4vKipcbiAqIFRoaXMgZGVzY3JpYmVzIG1vcmUgZGV0YWlscyByZWdhcmRpbmcgdGhlIGNvbm5lY3Rpb24udHlwZS4gSXQgbWF5IGJlIHRoZSB0eXBlIG9mIGNlbGwgdGVjaG5vbG9neSBjb25uZWN0aW9uLCBidXQgaXQgY291bGQgYmUgdXNlZCBmb3IgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGEgd2lmaSBjb25uZWN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRXT1JLX0NPTk5FQ1RJT05fU1VCVFlQRV9WQUxVRV9FREdFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRURHRSA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRURHRTtcbi8qKlxuICogVGhpcyBkZXNjcmliZXMgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgY29ubmVjdGlvbi50eXBlLiBJdCBtYXkgYmUgdGhlIHR5cGUgb2YgY2VsbCB0ZWNobm9sb2d5IGNvbm5lY3Rpb24sIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGZvciBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgYSB3aWZpIGNvbm5lY3Rpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9TVUJUWVBFX1ZBTFVFX1VNVFMgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19VTVRTID0gVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19VTVRTO1xuLyoqXG4gKiBUaGlzIGRlc2NyaWJlcyBtb3JlIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBjb25uZWN0aW9uLnR5cGUuIEl0IG1heSBiZSB0aGUgdHlwZSBvZiBjZWxsIHRlY2hub2xvZ3kgY29ubmVjdGlvbiwgYnV0IGl0IGNvdWxkIGJlIHVzZWQgZm9yIGRlc2NyaWJpbmcgZGV0YWlscyBhYm91dCBhIHdpZmkgY29ubmVjdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1NVQlRZUEVfVkFMVUVfQ0RNQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0NETUEgPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0NETUE7XG4vKipcbiAqIFRoaXMgZGVzY3JpYmVzIG1vcmUgZGV0YWlscyByZWdhcmRpbmcgdGhlIGNvbm5lY3Rpb24udHlwZS4gSXQgbWF5IGJlIHRoZSB0eXBlIG9mIGNlbGwgdGVjaG5vbG9neSBjb25uZWN0aW9uLCBidXQgaXQgY291bGQgYmUgdXNlZCBmb3IgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGEgd2lmaSBjb25uZWN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRXT1JLX0NPTk5FQ1RJT05fU1VCVFlQRV9WQUxVRV9FVkRPXzAgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19FVkRPXzAgPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fMDtcbi8qKlxuICogVGhpcyBkZXNjcmliZXMgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgY29ubmVjdGlvbi50eXBlLiBJdCBtYXkgYmUgdGhlIHR5cGUgb2YgY2VsbCB0ZWNobm9sb2d5IGNvbm5lY3Rpb24sIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGZvciBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgYSB3aWZpIGNvbm5lY3Rpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9TVUJUWVBFX1ZBTFVFX0VWRE9fQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fQSA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRVZET19BO1xuLyoqXG4gKiBUaGlzIGRlc2NyaWJlcyBtb3JlIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBjb25uZWN0aW9uLnR5cGUuIEl0IG1heSBiZSB0aGUgdHlwZSBvZiBjZWxsIHRlY2hub2xvZ3kgY29ubmVjdGlvbiwgYnV0IGl0IGNvdWxkIGJlIHVzZWQgZm9yIGRlc2NyaWJpbmcgZGV0YWlscyBhYm91dCBhIHdpZmkgY29ubmVjdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1NVQlRZUEVfVkFMVUVfQ0RNQTIwMDBfMVhSVFQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19DRE1BMjAwMF8xWFJUVCA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfQ0RNQTIwMDBfMVhSVFQ7XG4vKipcbiAqIFRoaXMgZGVzY3JpYmVzIG1vcmUgZGV0YWlscyByZWdhcmRpbmcgdGhlIGNvbm5lY3Rpb24udHlwZS4gSXQgbWF5IGJlIHRoZSB0eXBlIG9mIGNlbGwgdGVjaG5vbG9neSBjb25uZWN0aW9uLCBidXQgaXQgY291bGQgYmUgdXNlZCBmb3IgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGEgd2lmaSBjb25uZWN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRXT1JLX0NPTk5FQ1RJT05fU1VCVFlQRV9WQUxVRV9IU0RQQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTRFBBID0gVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU0RQQTtcbi8qKlxuICogVGhpcyBkZXNjcmliZXMgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgY29ubmVjdGlvbi50eXBlLiBJdCBtYXkgYmUgdGhlIHR5cGUgb2YgY2VsbCB0ZWNobm9sb2d5IGNvbm5lY3Rpb24sIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGZvciBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgYSB3aWZpIGNvbm5lY3Rpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9TVUJUWVBFX1ZBTFVFX0hTVVBBIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSFNVUEEgPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTVVBBO1xuLyoqXG4gKiBUaGlzIGRlc2NyaWJlcyBtb3JlIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBjb25uZWN0aW9uLnR5cGUuIEl0IG1heSBiZSB0aGUgdHlwZSBvZiBjZWxsIHRlY2hub2xvZ3kgY29ubmVjdGlvbiwgYnV0IGl0IGNvdWxkIGJlIHVzZWQgZm9yIGRlc2NyaWJpbmcgZGV0YWlscyBhYm91dCBhIHdpZmkgY29ubmVjdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1NVQlRZUEVfVkFMVUVfSFNQQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTUEEgPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTUEE7XG4vKipcbiAqIFRoaXMgZGVzY3JpYmVzIG1vcmUgZGV0YWlscyByZWdhcmRpbmcgdGhlIGNvbm5lY3Rpb24udHlwZS4gSXQgbWF5IGJlIHRoZSB0eXBlIG9mIGNlbGwgdGVjaG5vbG9neSBjb25uZWN0aW9uLCBidXQgaXQgY291bGQgYmUgdXNlZCBmb3IgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGEgd2lmaSBjb25uZWN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRXT1JLX0NPTk5FQ1RJT05fU1VCVFlQRV9WQUxVRV9JREVOIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSURFTiA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSURFTjtcbi8qKlxuICogVGhpcyBkZXNjcmliZXMgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgY29ubmVjdGlvbi50eXBlLiBJdCBtYXkgYmUgdGhlIHR5cGUgb2YgY2VsbCB0ZWNobm9sb2d5IGNvbm5lY3Rpb24sIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGZvciBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgYSB3aWZpIGNvbm5lY3Rpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9TVUJUWVBFX1ZBTFVFX0VWRE9fQiBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fQiA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRVZET19CO1xuLyoqXG4gKiBUaGlzIGRlc2NyaWJlcyBtb3JlIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBjb25uZWN0aW9uLnR5cGUuIEl0IG1heSBiZSB0aGUgdHlwZSBvZiBjZWxsIHRlY2hub2xvZ3kgY29ubmVjdGlvbiwgYnV0IGl0IGNvdWxkIGJlIHVzZWQgZm9yIGRlc2NyaWJpbmcgZGV0YWlscyBhYm91dCBhIHdpZmkgY29ubmVjdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1NVQlRZUEVfVkFMVUVfTFRFIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFID0gVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19MVEU7XG4vKipcbiAqIFRoaXMgZGVzY3JpYmVzIG1vcmUgZGV0YWlscyByZWdhcmRpbmcgdGhlIGNvbm5lY3Rpb24udHlwZS4gSXQgbWF5IGJlIHRoZSB0eXBlIG9mIGNlbGwgdGVjaG5vbG9neSBjb25uZWN0aW9uLCBidXQgaXQgY291bGQgYmUgdXNlZCBmb3IgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGEgd2lmaSBjb25uZWN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRXT1JLX0NPTk5FQ1RJT05fU1VCVFlQRV9WQUxVRV9FSFJQRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VIUlBEID0gVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19FSFJQRDtcbi8qKlxuICogVGhpcyBkZXNjcmliZXMgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgY29ubmVjdGlvbi50eXBlLiBJdCBtYXkgYmUgdGhlIHR5cGUgb2YgY2VsbCB0ZWNobm9sb2d5IGNvbm5lY3Rpb24sIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGZvciBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgYSB3aWZpIGNvbm5lY3Rpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9TVUJUWVBFX1ZBTFVFX0hTUEFQIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSFNQQVAgPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTUEFQO1xuLyoqXG4gKiBUaGlzIGRlc2NyaWJlcyBtb3JlIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBjb25uZWN0aW9uLnR5cGUuIEl0IG1heSBiZSB0aGUgdHlwZSBvZiBjZWxsIHRlY2hub2xvZ3kgY29ubmVjdGlvbiwgYnV0IGl0IGNvdWxkIGJlIHVzZWQgZm9yIGRlc2NyaWJpbmcgZGV0YWlscyBhYm91dCBhIHdpZmkgY29ubmVjdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1NVQlRZUEVfVkFMVUVfR1NNIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfR1NNID0gVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19HU007XG4vKipcbiAqIFRoaXMgZGVzY3JpYmVzIG1vcmUgZGV0YWlscyByZWdhcmRpbmcgdGhlIGNvbm5lY3Rpb24udHlwZS4gSXQgbWF5IGJlIHRoZSB0eXBlIG9mIGNlbGwgdGVjaG5vbG9neSBjb25uZWN0aW9uLCBidXQgaXQgY291bGQgYmUgdXNlZCBmb3IgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGEgd2lmaSBjb25uZWN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRXT1JLX0NPTk5FQ1RJT05fU1VCVFlQRV9WQUxVRV9URF9TQ0RNQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX1REX1NDRE1BID0gVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19URF9TQ0RNQTtcbi8qKlxuICogVGhpcyBkZXNjcmliZXMgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgY29ubmVjdGlvbi50eXBlLiBJdCBtYXkgYmUgdGhlIHR5cGUgb2YgY2VsbCB0ZWNobm9sb2d5IGNvbm5lY3Rpb24sIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGZvciBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgYSB3aWZpIGNvbm5lY3Rpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9TVUJUWVBFX1ZBTFVFX0lXTEFOIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSVdMQU4gPSBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0lXTEFOO1xuLyoqXG4gKiBUaGlzIGRlc2NyaWJlcyBtb3JlIGRldGFpbHMgcmVnYXJkaW5nIHRoZSBjb25uZWN0aW9uLnR5cGUuIEl0IG1heSBiZSB0aGUgdHlwZSBvZiBjZWxsIHRlY2hub2xvZ3kgY29ubmVjdGlvbiwgYnV0IGl0IGNvdWxkIGJlIHVzZWQgZm9yIGRlc2NyaWJpbmcgZGV0YWlscyBhYm91dCBhIHdpZmkgY29ubmVjdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTkVUV09SS19DT05ORUNUSU9OX1NVQlRZUEVfVkFMVUVfTlIgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19OUiA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTlI7XG4vKipcbiAqIFRoaXMgZGVzY3JpYmVzIG1vcmUgZGV0YWlscyByZWdhcmRpbmcgdGhlIGNvbm5lY3Rpb24udHlwZS4gSXQgbWF5IGJlIHRoZSB0eXBlIG9mIGNlbGwgdGVjaG5vbG9neSBjb25uZWN0aW9uLCBidXQgaXQgY291bGQgYmUgdXNlZCBmb3IgZGVzY3JpYmluZyBkZXRhaWxzIGFib3V0IGEgd2lmaSBjb25uZWN0aW9uLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBORVRXT1JLX0NPTk5FQ1RJT05fU1VCVFlQRV9WQUxVRV9OUk5TQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX05STlNBID0gVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19OUk5TQTtcbi8qKlxuICogVGhpcyBkZXNjcmliZXMgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgY29ubmVjdGlvbi50eXBlLiBJdCBtYXkgYmUgdGhlIHR5cGUgb2YgY2VsbCB0ZWNobm9sb2d5IGNvbm5lY3Rpb24sIGJ1dCBpdCBjb3VsZCBiZSB1c2VkIGZvciBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgYSB3aWZpIGNvbm5lY3Rpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE5FVFdPUktfQ09OTkVDVElPTl9TVUJUWVBFX1ZBTFVFX0xURV9DQSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0xURV9DQSA9IFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFX0NBO1xuLyoqXG4gKiBUaGUgY29uc3RhbnQgbWFwIG9mIHZhbHVlcyBmb3IgTmV0SG9zdENvbm5lY3Rpb25TdWJ0eXBlVmFsdWVzLlxuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfWFhYWFggY29uc3RhbnRzIHJhdGhlciB0aGFuIHRoZSBOZXRIb3N0Q29ubmVjdGlvblN1YnR5cGVWYWx1ZXMuWFhYWFggZm9yIGJ1bmRsZSBtaW5pZmljYXRpb24uXG4gKi9cbnZhciBOZXRIb3N0Q29ubmVjdGlvblN1YnR5cGVWYWx1ZXMgPSBcbi8qI19fUFVSRV9fKi8gY3JlYXRlQ29uc3RNYXAoW1xuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfR1BSUyxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VER0UsXG4gICAgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19VTVRTLFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfQ0RNQSxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fMCxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fQSxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0NETUEyMDAwXzFYUlRULFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSFNEUEEsXG4gICAgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1VQQSxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTUEEsXG4gICAgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19JREVOLFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRVZET19CLFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFLFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRUhSUEQsXG4gICAgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1BBUCxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0dTTSxcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX1REX1NDRE1BLFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSVdMQU4sXG4gICAgVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19OUixcbiAgICBUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX05STlNBLFxuICAgIFRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFX0NBLFxuXSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBDb25zdGFudCB2YWx1ZXMgZm9yIEh0dHBGbGF2b3JWYWx1ZXMgZW51bSBkZWZpbml0aW9uXG4gKlxuICogS2luZCBvZiBIVFRQIHByb3RvY29sIHVzZWQuXG4gKlxuICogTm90ZTogSWYgYG5ldC50cmFuc3BvcnRgIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGNhbiBiZSBhc3N1bWVkIHRvIGJlIGBJUC5UQ1BgIGV4Y2VwdCBpZiBgaHR0cC5mbGF2b3JgIGlzIGBRVUlDYCwgaW4gd2hpY2ggY2FzZSBgSVAuVURQYCBpcyBhc3N1bWVkLlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLy8gVGVtcG9yYXJ5IGxvY2FsIGNvbnN0YW50cyB0byBhc3NpZ24gdG8gdGhlIGluZGl2aWR1YWwgZXhwb3J0cyBhbmQgdGhlIG5hbWVzcGFjZWQgdmVyc2lvblxuLy8gUmVxdWlyZWQgdG8gYXZvaWQgdGhlIG5hbWVzcGFjZSBleHBvcnRzIHVzaW5nIHRoZSB1bm1pbmlmaWFibGUgZXhwb3J0IG5hbWVzIGZvciBzb21lIHBhY2thZ2UgdHlwZXNcbnZhciBUTVBfSFRUUEZMQVZPUlZBTFVFU19IVFRQXzFfMCA9ICcxLjAnO1xudmFyIFRNUF9IVFRQRkxBVk9SVkFMVUVTX0hUVFBfMV8xID0gJzEuMSc7XG52YXIgVE1QX0hUVFBGTEFWT1JWQUxVRVNfSFRUUF8yXzAgPSAnMi4wJztcbnZhciBUTVBfSFRUUEZMQVZPUlZBTFVFU19TUERZID0gJ1NQRFknO1xudmFyIFRNUF9IVFRQRkxBVk9SVkFMVUVTX1FVSUMgPSAnUVVJQyc7XG4vKipcbiAqIEtpbmQgb2YgSFRUUCBwcm90b2NvbCB1c2VkLlxuICpcbiAqIE5vdGU6IElmIGBuZXQudHJhbnNwb3J0YCBpcyBub3Qgc3BlY2lmaWVkLCBpdCBjYW4gYmUgYXNzdW1lZCB0byBiZSBgSVAuVENQYCBleGNlcHQgaWYgYGh0dHAuZmxhdm9yYCBpcyBgUVVJQ2AsIGluIHdoaWNoIGNhc2UgYElQLlVEUGAgaXMgYXNzdW1lZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgSFRUUF9GTEFWT1JfVkFMVUVfSFRUUF8xXzAgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIEhUVFBGTEFWT1JWQUxVRVNfSFRUUF8xXzAgPSBUTVBfSFRUUEZMQVZPUlZBTFVFU19IVFRQXzFfMDtcbi8qKlxuICogS2luZCBvZiBIVFRQIHByb3RvY29sIHVzZWQuXG4gKlxuICogTm90ZTogSWYgYG5ldC50cmFuc3BvcnRgIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGNhbiBiZSBhc3N1bWVkIHRvIGJlIGBJUC5UQ1BgIGV4Y2VwdCBpZiBgaHR0cC5mbGF2b3JgIGlzIGBRVUlDYCwgaW4gd2hpY2ggY2FzZSBgSVAuVURQYCBpcyBhc3N1bWVkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBIVFRQX0ZMQVZPUl9WQUxVRV9IVFRQXzFfMSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgSFRUUEZMQVZPUlZBTFVFU19IVFRQXzFfMSA9IFRNUF9IVFRQRkxBVk9SVkFMVUVTX0hUVFBfMV8xO1xuLyoqXG4gKiBLaW5kIG9mIEhUVFAgcHJvdG9jb2wgdXNlZC5cbiAqXG4gKiBOb3RlOiBJZiBgbmV0LnRyYW5zcG9ydGAgaXMgbm90IHNwZWNpZmllZCwgaXQgY2FuIGJlIGFzc3VtZWQgdG8gYmUgYElQLlRDUGAgZXhjZXB0IGlmIGBodHRwLmZsYXZvcmAgaXMgYFFVSUNgLCBpbiB3aGljaCBjYXNlIGBJUC5VRFBgIGlzIGFzc3VtZWQuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIEhUVFBfRkxBVk9SX1ZBTFVFX0hUVFBfMl8wIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBIVFRQRkxBVk9SVkFMVUVTX0hUVFBfMl8wID0gVE1QX0hUVFBGTEFWT1JWQUxVRVNfSFRUUF8yXzA7XG4vKipcbiAqIEtpbmQgb2YgSFRUUCBwcm90b2NvbCB1c2VkLlxuICpcbiAqIE5vdGU6IElmIGBuZXQudHJhbnNwb3J0YCBpcyBub3Qgc3BlY2lmaWVkLCBpdCBjYW4gYmUgYXNzdW1lZCB0byBiZSBgSVAuVENQYCBleGNlcHQgaWYgYGh0dHAuZmxhdm9yYCBpcyBgUVVJQ2AsIGluIHdoaWNoIGNhc2UgYElQLlVEUGAgaXMgYXNzdW1lZC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgSFRUUF9GTEFWT1JfVkFMVUVfU1BEWSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgSFRUUEZMQVZPUlZBTFVFU19TUERZID0gVE1QX0hUVFBGTEFWT1JWQUxVRVNfU1BEWTtcbi8qKlxuICogS2luZCBvZiBIVFRQIHByb3RvY29sIHVzZWQuXG4gKlxuICogTm90ZTogSWYgYG5ldC50cmFuc3BvcnRgIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGNhbiBiZSBhc3N1bWVkIHRvIGJlIGBJUC5UQ1BgIGV4Y2VwdCBpZiBgaHR0cC5mbGF2b3JgIGlzIGBRVUlDYCwgaW4gd2hpY2ggY2FzZSBgSVAuVURQYCBpcyBhc3N1bWVkLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBIVFRQX0ZMQVZPUl9WQUxVRV9RVUlDIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBIVFRQRkxBVk9SVkFMVUVTX1FVSUMgPSBUTVBfSFRUUEZMQVZPUlZBTFVFU19RVUlDO1xuLyoqXG4gKiBUaGUgY29uc3RhbnQgbWFwIG9mIHZhbHVlcyBmb3IgSHR0cEZsYXZvclZhbHVlcy5cbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgSFRUUEZMQVZPUlZBTFVFU19YWFhYWCBjb25zdGFudHMgcmF0aGVyIHRoYW4gdGhlIEh0dHBGbGF2b3JWYWx1ZXMuWFhYWFggZm9yIGJ1bmRsZSBtaW5pZmljYXRpb24uXG4gKi9cbnZhciBIdHRwRmxhdm9yVmFsdWVzID0ge1xuICAgIEhUVFBfMV8wOiBUTVBfSFRUUEZMQVZPUlZBTFVFU19IVFRQXzFfMCxcbiAgICBIVFRQXzFfMTogVE1QX0hUVFBGTEFWT1JWQUxVRVNfSFRUUF8xXzEsXG4gICAgSFRUUF8yXzA6IFRNUF9IVFRQRkxBVk9SVkFMVUVTX0hUVFBfMl8wLFxuICAgIFNQRFk6IFRNUF9IVFRQRkxBVk9SVkFMVUVTX1NQRFksXG4gICAgUVVJQzogVE1QX0hUVFBGTEFWT1JWQUxVRVNfUVVJQyxcbn07XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBDb25zdGFudCB2YWx1ZXMgZm9yIE1lc3NhZ2luZ0Rlc3RpbmF0aW9uS2luZFZhbHVlcyBlbnVtIGRlZmluaXRpb25cbiAqXG4gKiBUaGUga2luZCBvZiBtZXNzYWdlIGRlc3RpbmF0aW9uLlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLy8gVGVtcG9yYXJ5IGxvY2FsIGNvbnN0YW50cyB0byBhc3NpZ24gdG8gdGhlIGluZGl2aWR1YWwgZXhwb3J0cyBhbmQgdGhlIG5hbWVzcGFjZWQgdmVyc2lvblxuLy8gUmVxdWlyZWQgdG8gYXZvaWQgdGhlIG5hbWVzcGFjZSBleHBvcnRzIHVzaW5nIHRoZSB1bm1pbmlmaWFibGUgZXhwb3J0IG5hbWVzIGZvciBzb21lIHBhY2thZ2UgdHlwZXNcbnZhciBUTVBfTUVTU0FHSU5HREVTVElOQVRJT05LSU5EVkFMVUVTX1FVRVVFID0gJ3F1ZXVlJztcbnZhciBUTVBfTUVTU0FHSU5HREVTVElOQVRJT05LSU5EVkFMVUVTX1RPUElDID0gJ3RvcGljJztcbi8qKlxuICogVGhlIGtpbmQgb2YgbWVzc2FnZSBkZXN0aW5hdGlvbi5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZW1vdmVkIGluIHNlbWNvbnYgdjEuMjAuMC5cbiAqL1xudmFyIE1FU1NBR0lOR0RFU1RJTkFUSU9OS0lORFZBTFVFU19RVUVVRSA9IFRNUF9NRVNTQUdJTkdERVNUSU5BVElPTktJTkRWQUxVRVNfUVVFVUU7XG4vKipcbiAqIFRoZSBraW5kIG9mIG1lc3NhZ2UgZGVzdGluYXRpb24uXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVtb3ZlZCBpbiBzZW1jb252IHYxLjIwLjAuXG4gKi9cbnZhciBNRVNTQUdJTkdERVNUSU5BVElPTktJTkRWQUxVRVNfVE9QSUMgPSBUTVBfTUVTU0FHSU5HREVTVElOQVRJT05LSU5EVkFMVUVTX1RPUElDO1xuLyoqXG4gKiBUaGUgY29uc3RhbnQgbWFwIG9mIHZhbHVlcyBmb3IgTWVzc2FnaW5nRGVzdGluYXRpb25LaW5kVmFsdWVzLlxuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBNRVNTQUdJTkdERVNUSU5BVElPTktJTkRWQUxVRVNfWFhYWFggY29uc3RhbnRzIHJhdGhlciB0aGFuIHRoZSBNZXNzYWdpbmdEZXN0aW5hdGlvbktpbmRWYWx1ZXMuWFhYWFggZm9yIGJ1bmRsZSBtaW5pZmljYXRpb24uXG4gKi9cbnZhciBNZXNzYWdpbmdEZXN0aW5hdGlvbktpbmRWYWx1ZXMgPSBcbi8qI19fUFVSRV9fKi8gY3JlYXRlQ29uc3RNYXAoW1xuICAgIFRNUF9NRVNTQUdJTkdERVNUSU5BVElPTktJTkRWQUxVRVNfUVVFVUUsXG4gICAgVE1QX01FU1NBR0lOR0RFU1RJTkFUSU9OS0lORFZBTFVFU19UT1BJQyxcbl0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQ29uc3RhbnQgdmFsdWVzIGZvciBNZXNzYWdpbmdPcGVyYXRpb25WYWx1ZXMgZW51bSBkZWZpbml0aW9uXG4gKlxuICogQSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIGtpbmQgb2YgbWVzc2FnZSBjb25zdW1wdGlvbiBhcyBkZWZpbmVkIGluIHRoZSBbT3BlcmF0aW9uIG5hbWVzXSgjb3BlcmF0aW9uLW5hbWVzKSBzZWN0aW9uIGFib3ZlLiBJZiB0aGUgb3BlcmF0aW9uIGlzICYjMzQ7c2VuZCYjMzQ7LCB0aGlzIGF0dHJpYnV0ZSBNVVNUIE5PVCBiZSBzZXQsIHNpbmNlIHRoZSBvcGVyYXRpb24gY2FuIGJlIGluZmVycmVkIGZyb20gdGhlIHNwYW4ga2luZCBpbiB0aGF0IGNhc2UuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vLyBUZW1wb3JhcnkgbG9jYWwgY29uc3RhbnRzIHRvIGFzc2lnbiB0byB0aGUgaW5kaXZpZHVhbCBleHBvcnRzIGFuZCB0aGUgbmFtZXNwYWNlZCB2ZXJzaW9uXG4vLyBSZXF1aXJlZCB0byBhdm9pZCB0aGUgbmFtZXNwYWNlIGV4cG9ydHMgdXNpbmcgdGhlIHVubWluaWZpYWJsZSBleHBvcnQgbmFtZXMgZm9yIHNvbWUgcGFja2FnZSB0eXBlc1xudmFyIFRNUF9NRVNTQUdJTkdPUEVSQVRJT05WQUxVRVNfUkVDRUlWRSA9ICdyZWNlaXZlJztcbnZhciBUTVBfTUVTU0FHSU5HT1BFUkFUSU9OVkFMVUVTX1BST0NFU1MgPSAncHJvY2Vzcyc7XG4vKipcbiAqIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBraW5kIG9mIG1lc3NhZ2UgY29uc3VtcHRpb24gYXMgZGVmaW5lZCBpbiB0aGUgW09wZXJhdGlvbiBuYW1lc10oI29wZXJhdGlvbi1uYW1lcykgc2VjdGlvbiBhYm92ZS4gSWYgdGhlIG9wZXJhdGlvbiBpcyAmIzM0O3NlbmQmIzM0OywgdGhpcyBhdHRyaWJ1dGUgTVVTVCBOT1QgYmUgc2V0LCBzaW5jZSB0aGUgb3BlcmF0aW9uIGNhbiBiZSBpbmZlcnJlZCBmcm9tIHRoZSBzcGFuIGtpbmQgaW4gdGhhdCBjYXNlLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBNRVNTQUdJTkdfT1BFUkFUSU9OX1RZUEVfVkFMVUVfUkVDRUlWRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTUVTU0FHSU5HT1BFUkFUSU9OVkFMVUVTX1JFQ0VJVkUgPSBUTVBfTUVTU0FHSU5HT1BFUkFUSU9OVkFMVUVTX1JFQ0VJVkU7XG4vKipcbiAqIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBraW5kIG9mIG1lc3NhZ2UgY29uc3VtcHRpb24gYXMgZGVmaW5lZCBpbiB0aGUgW09wZXJhdGlvbiBuYW1lc10oI29wZXJhdGlvbi1uYW1lcykgc2VjdGlvbiBhYm92ZS4gSWYgdGhlIG9wZXJhdGlvbiBpcyAmIzM0O3NlbmQmIzM0OywgdGhpcyBhdHRyaWJ1dGUgTVVTVCBOT1QgYmUgc2V0LCBzaW5jZSB0aGUgb3BlcmF0aW9uIGNhbiBiZSBpbmZlcnJlZCBmcm9tIHRoZSBzcGFuIGtpbmQgaW4gdGhhdCBjYXNlLlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBNRVNTQUdJTkdfT1BFUkFUSU9OX1RZUEVfVkFMVUVfUFJPQ0VTUyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgTUVTU0FHSU5HT1BFUkFUSU9OVkFMVUVTX1BST0NFU1MgPSBUTVBfTUVTU0FHSU5HT1BFUkFUSU9OVkFMVUVTX1BST0NFU1M7XG4vKipcbiAqIFRoZSBjb25zdGFudCBtYXAgb2YgdmFsdWVzIGZvciBNZXNzYWdpbmdPcGVyYXRpb25WYWx1ZXMuXG4gKiBAZGVwcmVjYXRlZCBVc2UgdGhlIE1FU1NBR0lOR09QRVJBVElPTlZBTFVFU19YWFhYWCBjb25zdGFudHMgcmF0aGVyIHRoYW4gdGhlIE1lc3NhZ2luZ09wZXJhdGlvblZhbHVlcy5YWFhYWCBmb3IgYnVuZGxlIG1pbmlmaWNhdGlvbi5cbiAqL1xudmFyIE1lc3NhZ2luZ09wZXJhdGlvblZhbHVlcyA9IFxuLyojX19QVVJFX18qLyBjcmVhdGVDb25zdE1hcChbXG4gICAgVE1QX01FU1NBR0lOR09QRVJBVElPTlZBTFVFU19SRUNFSVZFLFxuICAgIFRNUF9NRVNTQUdJTkdPUEVSQVRJT05WQUxVRVNfUFJPQ0VTUyxcbl0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQ29uc3RhbnQgdmFsdWVzIGZvciBScGNHcnBjU3RhdHVzQ29kZVZhbHVlcyBlbnVtIGRlZmluaXRpb25cbiAqXG4gKiBUaGUgW251bWVyaWMgc3RhdHVzIGNvZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ncnBjL2dycGMvYmxvYi92MS4zMy4yL2RvYy9zdGF0dXNjb2Rlcy5tZCkgb2YgdGhlIGdSUEMgcmVxdWVzdC5cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbi8vIFRlbXBvcmFyeSBsb2NhbCBjb25zdGFudHMgdG8gYXNzaWduIHRvIHRoZSBpbmRpdmlkdWFsIGV4cG9ydHMgYW5kIHRoZSBuYW1lc3BhY2VkIHZlcnNpb25cbi8vIFJlcXVpcmVkIHRvIGF2b2lkIHRoZSBuYW1lc3BhY2UgZXhwb3J0cyB1c2luZyB0aGUgdW5taW5pZmlhYmxlIGV4cG9ydCBuYW1lcyBmb3Igc29tZSBwYWNrYWdlIHR5cGVzXG52YXIgVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX09LID0gMDtcbnZhciBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfQ0FOQ0VMTEVEID0gMTtcbnZhciBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5LTk9XTiA9IDI7XG52YXIgVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0lOVkFMSURfQVJHVU1FTlQgPSAzO1xudmFyIFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19ERUFETElORV9FWENFRURFRCA9IDQ7XG52YXIgVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX05PVF9GT1VORCA9IDU7XG52YXIgVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0FMUkVBRFlfRVhJU1RTID0gNjtcbnZhciBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfUEVSTUlTU0lPTl9ERU5JRUQgPSA3O1xudmFyIFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19SRVNPVVJDRV9FWEhBVVNURUQgPSA4O1xudmFyIFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19GQUlMRURfUFJFQ09ORElUSU9OID0gOTtcbnZhciBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfQUJPUlRFRCA9IDEwO1xudmFyIFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19PVVRfT0ZfUkFOR0UgPSAxMTtcbnZhciBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5JTVBMRU1FTlRFRCA9IDEyO1xudmFyIFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19JTlRFUk5BTCA9IDEzO1xudmFyIFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTkFWQUlMQUJMRSA9IDE0O1xudmFyIFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19EQVRBX0xPU1MgPSAxNTtcbnZhciBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5BVVRIRU5USUNBVEVEID0gMTY7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9PSyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfT0sgPSBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfT0s7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9DQU5DRUxMRUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0NBTkNFTExFRCA9IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19DQU5DRUxMRUQ7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9VTktOT1dOIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTktOT1dOID0gVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1VOS05PV047XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9JTlZBTElEX0FSR1VNRU5UIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19JTlZBTElEX0FSR1VNRU5UID0gVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0lOVkFMSURfQVJHVU1FTlQ7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9ERUFETElORV9FWENFRURFRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfREVBRExJTkVfRVhDRUVERUQgPSBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfREVBRExJTkVfRVhDRUVERUQ7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9OT1RfRk9VTkQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX05PVF9GT1VORCA9IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19OT1RfRk9VTkQ7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9BTFJFQURZX0VYSVNUUyBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfQUxSRUFEWV9FWElTVFMgPSBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfQUxSRUFEWV9FWElTVFM7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9QRVJNSVNTSU9OX0RFTklFRCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfUEVSTUlTU0lPTl9ERU5JRUQgPSBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfUEVSTUlTU0lPTl9ERU5JRUQ7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9SRVNPVVJDRV9FWEhBVVNURUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1JFU09VUkNFX0VYSEFVU1RFRCA9IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19SRVNPVVJDRV9FWEhBVVNURUQ7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9GQUlMRURfUFJFQ09ORElUSU9OIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19GQUlMRURfUFJFQ09ORElUSU9OID0gVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0ZBSUxFRF9QUkVDT05ESVRJT047XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9BQk9SVEVEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19BQk9SVEVEID0gVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0FCT1JURUQ7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9PVVRfT0ZfUkFOR0UgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX09VVF9PRl9SQU5HRSA9IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19PVVRfT0ZfUkFOR0U7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9VTklNUExFTUVOVEVEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTklNUExFTUVOVEVEID0gVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1VOSU1QTEVNRU5URUQ7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9JTlRFUk5BTCBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfSU5URVJOQUwgPSBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfSU5URVJOQUw7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9VTkFWQUlMQUJMRSBpbiBbaW5jdWJhdGluZyBlbnRyeS1wb2ludF0oe0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL2Jsb2IvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucy9SRUFETUUubWQjdW5zdGFibGUtc2VtY29udn0pLlxuICovXG52YXIgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5BVkFJTEFCTEUgPSBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5BVkFJTEFCTEU7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9EQVRBX0xPU1MgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0RBVEFfTE9TUyA9IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19EQVRBX0xPU1M7XG4vKipcbiAqIFRoZSBbbnVtZXJpYyBzdGF0dXMgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYy9ibG9iL3YxLjMzLjIvZG9jL3N0YXR1c2NvZGVzLm1kKSBvZiB0aGUgZ1JQQyByZXF1ZXN0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBSUENfR1JQQ19TVEFUVVNfQ09ERV9WQUxVRV9VTkFVVEhFTlRJQ0FURUQgaW4gW2luY3ViYXRpbmcgZW50cnktcG9pbnRdKHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy9ibG9iL21haW4vc2VtYW50aWMtY29udmVudGlvbnMvUkVBRE1FLm1kI3Vuc3RhYmxlLXNlbWNvbnZ9KS5cbiAqL1xudmFyIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1VOQVVUSEVOVElDQVRFRCA9IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTkFVVEhFTlRJQ0FURUQ7XG4vKipcbiAqIFRoZSBjb25zdGFudCBtYXAgb2YgdmFsdWVzIGZvciBScGNHcnBjU3RhdHVzQ29kZVZhbHVlcy5cbiAqIEBkZXByZWNhdGVkIFVzZSB0aGUgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfWFhYWFggY29uc3RhbnRzIHJhdGhlciB0aGFuIHRoZSBScGNHcnBjU3RhdHVzQ29kZVZhbHVlcy5YWFhYWCBmb3IgYnVuZGxlIG1pbmlmaWNhdGlvbi5cbiAqL1xudmFyIFJwY0dycGNTdGF0dXNDb2RlVmFsdWVzID0ge1xuICAgIE9LOiBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfT0ssXG4gICAgQ0FOQ0VMTEVEOiBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfQ0FOQ0VMTEVELFxuICAgIFVOS05PV046IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTktOT1dOLFxuICAgIElOVkFMSURfQVJHVU1FTlQ6IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19JTlZBTElEX0FSR1VNRU5ULFxuICAgIERFQURMSU5FX0VYQ0VFREVEOiBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfREVBRExJTkVfRVhDRUVERUQsXG4gICAgTk9UX0ZPVU5EOiBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfTk9UX0ZPVU5ELFxuICAgIEFMUkVBRFlfRVhJU1RTOiBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfQUxSRUFEWV9FWElTVFMsXG4gICAgUEVSTUlTU0lPTl9ERU5JRUQ6IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19QRVJNSVNTSU9OX0RFTklFRCxcbiAgICBSRVNPVVJDRV9FWEhBVVNURUQ6IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19SRVNPVVJDRV9FWEhBVVNURUQsXG4gICAgRkFJTEVEX1BSRUNPTkRJVElPTjogVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0ZBSUxFRF9QUkVDT05ESVRJT04sXG4gICAgQUJPUlRFRDogVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0FCT1JURUQsXG4gICAgT1VUX09GX1JBTkdFOiBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfT1VUX09GX1JBTkdFLFxuICAgIFVOSU1QTEVNRU5URUQ6IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTklNUExFTUVOVEVELFxuICAgIElOVEVSTkFMOiBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfSU5URVJOQUwsXG4gICAgVU5BVkFJTEFCTEU6IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTkFWQUlMQUJMRSxcbiAgICBEQVRBX0xPU1M6IFRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19EQVRBX0xPU1MsXG4gICAgVU5BVVRIRU5USUNBVEVEOiBUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5BVVRIRU5USUNBVEVELFxufTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIENvbnN0YW50IHZhbHVlcyBmb3IgTWVzc2FnZVR5cGVWYWx1ZXMgZW51bSBkZWZpbml0aW9uXG4gKlxuICogV2hldGhlciB0aGlzIGlzIGEgcmVjZWl2ZWQgb3Igc2VudCBtZXNzYWdlLlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuLy8gVGVtcG9yYXJ5IGxvY2FsIGNvbnN0YW50cyB0byBhc3NpZ24gdG8gdGhlIGluZGl2aWR1YWwgZXhwb3J0cyBhbmQgdGhlIG5hbWVzcGFjZWQgdmVyc2lvblxuLy8gUmVxdWlyZWQgdG8gYXZvaWQgdGhlIG5hbWVzcGFjZSBleHBvcnRzIHVzaW5nIHRoZSB1bm1pbmlmaWFibGUgZXhwb3J0IG5hbWVzIGZvciBzb21lIHBhY2thZ2UgdHlwZXNcbnZhciBUTVBfTUVTU0FHRVRZUEVWQUxVRVNfU0VOVCA9ICdTRU5UJztcbnZhciBUTVBfTUVTU0FHRVRZUEVWQUxVRVNfUkVDRUlWRUQgPSAnUkVDRUlWRUQnO1xuLyoqXG4gKiBXaGV0aGVyIHRoaXMgaXMgYSByZWNlaXZlZCBvciBzZW50IG1lc3NhZ2UuXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIE1FU1NBR0VfVFlQRV9WQUxVRV9TRU5UIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBNRVNTQUdFVFlQRVZBTFVFU19TRU5UID0gVE1QX01FU1NBR0VUWVBFVkFMVUVTX1NFTlQ7XG4vKipcbiAqIFdoZXRoZXIgdGhpcyBpcyBhIHJlY2VpdmVkIG9yIHNlbnQgbWVzc2FnZS5cbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTUVTU0FHRV9UWVBFX1ZBTFVFX1JFQ0VJVkVEIGluIFtpbmN1YmF0aW5nIGVudHJ5LXBvaW50XSh7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvYmxvYi9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zL1JFQURNRS5tZCN1bnN0YWJsZS1zZW1jb252fSkuXG4gKi9cbnZhciBNRVNTQUdFVFlQRVZBTFVFU19SRUNFSVZFRCA9IFRNUF9NRVNTQUdFVFlQRVZBTFVFU19SRUNFSVZFRDtcbi8qKlxuICogVGhlIGNvbnN0YW50IG1hcCBvZiB2YWx1ZXMgZm9yIE1lc3NhZ2VUeXBlVmFsdWVzLlxuICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBNRVNTQUdFVFlQRVZBTFVFU19YWFhYWCBjb25zdGFudHMgcmF0aGVyIHRoYW4gdGhlIE1lc3NhZ2VUeXBlVmFsdWVzLlhYWFhYIGZvciBidW5kbGUgbWluaWZpY2F0aW9uLlxuICovXG52YXIgTWVzc2FnZVR5cGVWYWx1ZXMgPSBcbi8qI19fUFVSRV9fKi8gY3JlYXRlQ29uc3RNYXAoW1xuICAgIFRNUF9NRVNTQUdFVFlQRVZBTFVFU19TRU5ULFxuICAgIFRNUF9NRVNTQUdFVFlQRVZBTFVFU19SRUNFSVZFRCxcbl0pO1xuXG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIE5BTk9TRUNPTkRfRElHSVRTID0gOTtcbnZhciBOQU5PU0VDT05EX0RJR0lUU19JTl9NSUxMSVMgPSA2O1xudmFyIE1JTExJU0VDT05EU19UT19OQU5PU0VDT05EUyA9IE1hdGgucG93KDEwLCBOQU5PU0VDT05EX0RJR0lUU19JTl9NSUxMSVMpO1xudmFyIFNFQ09ORF9UT19OQU5PU0VDT05EUyA9IE1hdGgucG93KDEwLCBOQU5PU0VDT05EX0RJR0lUUyk7XG4vKipcbiAqIENvbnZlcnRzIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBmcm9tIGVwb2NoIHRvIEhyVGltZShbc2Vjb25kcywgcmVtYWluZGVyIGluIG5hbm9zZWNvbmRzXSkuXG4gKiBAcGFyYW0gZXBvY2hNaWxsaXNcbiAqL1xuZnVuY3Rpb24gbWlsbGlzVG9IclRpbWUoZXBvY2hNaWxsaXMpIHtcbiAgICB2YXIgZXBvY2hTZWNvbmRzID0gZXBvY2hNaWxsaXMgLyAxMDAwO1xuICAgIC8vIERlY2ltYWxzIG9ubHkuXG4gICAgdmFyIHNlY29uZHMgPSBNYXRoLnRydW5jKGVwb2NoU2Vjb25kcyk7XG4gICAgLy8gUm91bmQgc3ViLW5hbm9zZWNvbmQgYWNjdXJhY3kgdG8gbmFub3NlY29uZC5cbiAgICB2YXIgbmFub3MgPSBNYXRoLnJvdW5kKChlcG9jaE1pbGxpcyAlIDEwMDApICogTUlMTElTRUNPTkRTX1RPX05BTk9TRUNPTkRTKTtcbiAgICByZXR1cm4gW3NlY29uZHMsIG5hbm9zXTtcbn1cbmZ1bmN0aW9uIGdldFRpbWVPcmlnaW4oKSB7XG4gICAgdmFyIHRpbWVPcmlnaW4gPSBvdHBlcmZvcm1hbmNlLnRpbWVPcmlnaW47XG4gICAgaWYgKHR5cGVvZiB0aW1lT3JpZ2luICE9PSAnbnVtYmVyJykge1xuICAgICAgICB2YXIgcGVyZiA9IG90cGVyZm9ybWFuY2U7XG4gICAgICAgIHRpbWVPcmlnaW4gPSBwZXJmLnRpbWluZyAmJiBwZXJmLnRpbWluZy5mZXRjaFN0YXJ0O1xuICAgIH1cbiAgICByZXR1cm4gdGltZU9yaWdpbjtcbn1cbi8qKlxuICogUmV0dXJucyBhbiBocnRpbWUgY2FsY3VsYXRlZCB2aWEgcGVyZm9ybWFuY2UgY29tcG9uZW50LlxuICogQHBhcmFtIHBlcmZvcm1hbmNlTm93XG4gKi9cbmZ1bmN0aW9uIGhyVGltZShwZXJmb3JtYW5jZU5vdykge1xuICAgIHZhciB0aW1lT3JpZ2luID0gbWlsbGlzVG9IclRpbWUoZ2V0VGltZU9yaWdpbigpKTtcbiAgICB2YXIgbm93ID0gbWlsbGlzVG9IclRpbWUodHlwZW9mIHBlcmZvcm1hbmNlTm93ID09PSAnbnVtYmVyJyA/IHBlcmZvcm1hbmNlTm93IDogb3RwZXJmb3JtYW5jZS5ub3coKSk7XG4gICAgcmV0dXJuIGFkZEhyVGltZXModGltZU9yaWdpbiwgbm93KTtcbn1cbi8qKlxuICpcbiAqIENvbnZlcnRzIGEgVGltZUlucHV0IHRvIGFuIEhyVGltZSwgZGVmYXVsdHMgdG8gX2hydGltZSgpLlxuICogQHBhcmFtIHRpbWVcbiAqL1xuZnVuY3Rpb24gdGltZUlucHV0VG9IclRpbWUodGltZSkge1xuICAgIC8vIHByb2Nlc3MuaHJ0aW1lXG4gICAgaWYgKGlzVGltZUlucHV0SHJUaW1lKHRpbWUpKSB7XG4gICAgICAgIHJldHVybiB0aW1lO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgdGltZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgLy8gTXVzdCBiZSBhIHBlcmZvcm1hbmNlLm5vdygpIGlmIGl0J3Mgc21hbGxlciB0aGFuIHByb2Nlc3Mgc3RhcnQgdGltZS5cbiAgICAgICAgaWYgKHRpbWUgPCBnZXRUaW1lT3JpZ2luKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBoclRpbWUodGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBlcG9jaCBtaWxsaXNlY29uZHMgb3IgcGVyZm9ybWFuY2UudGltZU9yaWdpblxuICAgICAgICAgICAgcmV0dXJuIG1pbGxpc1RvSHJUaW1lKHRpbWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHRpbWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHJldHVybiBtaWxsaXNUb0hyVGltZSh0aW1lLmdldFRpbWUoKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoJ0ludmFsaWQgaW5wdXQgdHlwZScpO1xuICAgIH1cbn1cbi8qKlxuICogUmV0dXJucyBhIGR1cmF0aW9uIG9mIHR3byBoclRpbWUuXG4gKiBAcGFyYW0gc3RhcnRUaW1lXG4gKiBAcGFyYW0gZW5kVGltZVxuICovXG5mdW5jdGlvbiBoclRpbWVEdXJhdGlvbihzdGFydFRpbWUsIGVuZFRpbWUpIHtcbiAgICB2YXIgc2Vjb25kcyA9IGVuZFRpbWVbMF0gLSBzdGFydFRpbWVbMF07XG4gICAgdmFyIG5hbm9zID0gZW5kVGltZVsxXSAtIHN0YXJ0VGltZVsxXTtcbiAgICAvLyBvdmVyZmxvd1xuICAgIGlmIChuYW5vcyA8IDApIHtcbiAgICAgICAgc2Vjb25kcyAtPSAxO1xuICAgICAgICAvLyBuZWdhdGVcbiAgICAgICAgbmFub3MgKz0gU0VDT05EX1RPX05BTk9TRUNPTkRTO1xuICAgIH1cbiAgICByZXR1cm4gW3NlY29uZHMsIG5hbm9zXTtcbn1cbi8qKlxuICogQ29udmVydCBoclRpbWUgdG8gdGltZXN0YW1wLCBmb3IgZXhhbXBsZSBcIjIwMTktMDUtMTRUMTc6MDA6MDAuMDAwMTIzNDU2WlwiXG4gKiBAcGFyYW0gdGltZVxuICovXG5mdW5jdGlvbiBoclRpbWVUb1RpbWVTdGFtcCh0aW1lKSB7XG4gICAgdmFyIHByZWNpc2lvbiA9IE5BTk9TRUNPTkRfRElHSVRTO1xuICAgIHZhciB0bXAgPSBcIlwiICsgJzAnLnJlcGVhdChwcmVjaXNpb24pICsgdGltZVsxXSArIFwiWlwiO1xuICAgIHZhciBuYW5vU3RyaW5nID0gdG1wLnN1YnN0cmluZyh0bXAubGVuZ3RoIC0gcHJlY2lzaW9uIC0gMSk7XG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSh0aW1lWzBdICogMTAwMCkudG9JU09TdHJpbmcoKTtcbiAgICByZXR1cm4gZGF0ZS5yZXBsYWNlKCcwMDBaJywgbmFub1N0cmluZyk7XG59XG4vKipcbiAqIENvbnZlcnQgaHJUaW1lIHRvIG5hbm9zZWNvbmRzLlxuICogQHBhcmFtIHRpbWVcbiAqL1xuZnVuY3Rpb24gaHJUaW1lVG9OYW5vc2Vjb25kcyh0aW1lKSB7XG4gICAgcmV0dXJuIHRpbWVbMF0gKiBTRUNPTkRfVE9fTkFOT1NFQ09ORFMgKyB0aW1lWzFdO1xufVxuLyoqXG4gKiBDb252ZXJ0IGhyVGltZSB0byBtaWxsaXNlY29uZHMuXG4gKiBAcGFyYW0gdGltZVxuICovXG5mdW5jdGlvbiBoclRpbWVUb01pbGxpc2Vjb25kcyh0aW1lKSB7XG4gICAgcmV0dXJuIHRpbWVbMF0gKiAxZTMgKyB0aW1lWzFdIC8gMWU2O1xufVxuLyoqXG4gKiBDb252ZXJ0IGhyVGltZSB0byBtaWNyb3NlY29uZHMuXG4gKiBAcGFyYW0gdGltZVxuICovXG5mdW5jdGlvbiBoclRpbWVUb01pY3Jvc2Vjb25kcyh0aW1lKSB7XG4gICAgcmV0dXJuIHRpbWVbMF0gKiAxZTYgKyB0aW1lWzFdIC8gMWUzO1xufVxuLyoqXG4gKiBjaGVjayBpZiB0aW1lIGlzIEhyVGltZVxuICogQHBhcmFtIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIGlzVGltZUlucHV0SHJUaW1lKHZhbHVlKSB7XG4gICAgcmV0dXJuIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJlxuICAgICAgICB2YWx1ZS5sZW5ndGggPT09IDIgJiZcbiAgICAgICAgdHlwZW9mIHZhbHVlWzBdID09PSAnbnVtYmVyJyAmJlxuICAgICAgICB0eXBlb2YgdmFsdWVbMV0gPT09ICdudW1iZXInKTtcbn1cbi8qKlxuICogY2hlY2sgaWYgaW5wdXQgdmFsdWUgaXMgYSBjb3JyZWN0IHR5cGVzLlRpbWVJbnB1dFxuICogQHBhcmFtIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIGlzVGltZUlucHV0KHZhbHVlKSB7XG4gICAgcmV0dXJuIChpc1RpbWVJbnB1dEhyVGltZSh2YWx1ZSkgfHxcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fFxuICAgICAgICB2YWx1ZSBpbnN0YW5jZW9mIERhdGUpO1xufVxuLyoqXG4gKiBHaXZlbiAyIEhyVGltZSBmb3JtYXR0ZWQgdGltZXMsIHJldHVybiB0aGVpciBzdW0gYXMgYW4gSHJUaW1lLlxuICovXG5mdW5jdGlvbiBhZGRIclRpbWVzKHRpbWUxLCB0aW1lMikge1xuICAgIHZhciBvdXQgPSBbdGltZTFbMF0gKyB0aW1lMlswXSwgdGltZTFbMV0gKyB0aW1lMlsxXV07XG4gICAgLy8gTmFub3NlY29uZHNcbiAgICBpZiAob3V0WzFdID49IFNFQ09ORF9UT19OQU5PU0VDT05EUykge1xuICAgICAgICBvdXRbMV0gLT0gU0VDT05EX1RPX05BTk9TRUNPTkRTO1xuICAgICAgICBvdXRbMF0gKz0gMTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbn1cblxudmFyIF9fdmFsdWVzID0gKHVuZGVmaW5lZCAmJiB1bmRlZmluZWQuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5mdW5jdGlvbiB1cmxNYXRjaGVzKHVybCwgdXJsVG9NYXRjaCkge1xuICAgIGlmICh0eXBlb2YgdXJsVG9NYXRjaCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHVybCA9PT0gdXJsVG9NYXRjaDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiAhIXVybC5tYXRjaCh1cmxUb01hdGNoKTtcbiAgICB9XG59XG4vKipcbiAqIENoZWNrIGlmIHtAcGFyYW0gdXJsfSBzaG91bGQgYmUgaWdub3JlZCB3aGVuIGNvbXBhcmluZyBhZ2FpbnN0IHtAcGFyYW0gaWdub3JlZFVybHN9XG4gKiBAcGFyYW0gdXJsXG4gKiBAcGFyYW0gaWdub3JlZFVybHNcbiAqL1xuZnVuY3Rpb24gaXNVcmxJZ25vcmVkKHVybCwgaWdub3JlZFVybHMpIHtcbiAgICB2YXIgZV8xLCBfYTtcbiAgICBpZiAoIWlnbm9yZWRVcmxzKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgaWdub3JlZFVybHNfMSA9IF9fdmFsdWVzKGlnbm9yZWRVcmxzKSwgaWdub3JlZFVybHNfMV8xID0gaWdub3JlZFVybHNfMS5uZXh0KCk7ICFpZ25vcmVkVXJsc18xXzEuZG9uZTsgaWdub3JlZFVybHNfMV8xID0gaWdub3JlZFVybHNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgIHZhciBpZ25vcmVVcmwgPSBpZ25vcmVkVXJsc18xXzEudmFsdWU7XG4gICAgICAgICAgICBpZiAodXJsTWF0Y2hlcyh1cmwsIGlnbm9yZVVybCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGlnbm9yZWRVcmxzXzFfMSAmJiAhaWdub3JlZFVybHNfMV8xLmRvbmUgJiYgKF9hID0gaWdub3JlZFVybHNfMS5yZXR1cm4pKSBfYS5jYWxsKGlnbm9yZWRVcmxzXzEpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgeyBEQlNZU1RFTVZBTFVFU19FREIgYXMgJCwgZGVmYXVsdFRleHRNYXBHZXR0ZXIgYXMgQSwgZGVmYXVsdFRleHRNYXBTZXR0ZXIgYXMgQiwgREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0FOWSBhcyBDLCBEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfQUxMIGFzIEQsIERCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19FQUNIX1FVT1JVTSBhcyBFLCBEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfTE9DQUxfT05FIGFzIEYsIERCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19MT0NBTF9RVU9SVU0gYXMgRywgREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0xPQ0FMX1NFUklBTCBhcyBILCBEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfT05FIGFzIEksIERCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19RVU9SVU0gYXMgSiwgREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1NFUklBTCBhcyBLLCBEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfVEhSRUUgYXMgTCwgREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1RXTyBhcyBNLCBEQlNZU1RFTVZBTFVFU19BREFCQVMgYXMgTiwgREJTWVNURU1WQUxVRVNfQ0FDSEUgYXMgTywgREJTWVNURU1WQUxVRVNfQ0FTU0FORFJBIGFzIFAsIERCU1lTVEVNVkFMVUVTX0NMT1VEU0NBUEUgYXMgUSwgREJTWVNURU1WQUxVRVNfQ09DS1JPQUNIREIgYXMgUiwgU0VNQVRUUlNfSFRUUF9SRVNQT05TRV9DT05URU5UX0xFTkdUSCBhcyBTLCBEQlNZU1RFTVZBTFVFU19DT0xERlVTSU9OIGFzIFQsIERCU1lTVEVNVkFMVUVTX0NPU01PU0RCIGFzIFUsIERCU1lTVEVNVkFMVUVTX0NPVUNIQkFTRSBhcyBWLCBEQlNZU1RFTVZBTFVFU19DT1VDSERCIGFzIFcsIERCU1lTVEVNVkFMVUVTX0RCMiBhcyBYLCBEQlNZU1RFTVZBTFVFU19ERVJCWSBhcyBZLCBEQlNZU1RFTVZBTFVFU19EWU5BTU9EQiBhcyBaLCBfZ2xvYmFsVGhpcyBhcyBfLCBTRU1BVFRSU19IVFRQX1JFU1BPTlNFX0NPTlRFTlRfTEVOR1RIX1VOQ09NUFJFU1NFRCBhcyBhLCBNZXNzYWdlVHlwZVZhbHVlcyBhcyBhJCwgREJTWVNURU1WQUxVRVNfRUxBU1RJQ1NFQVJDSCBhcyBhMCwgREJTWVNURU1WQUxVRVNfRklMRU1BS0VSIGFzIGExLCBEQlNZU1RFTVZBTFVFU19GSVJFQklSRCBhcyBhMiwgREJTWVNURU1WQUxVRVNfRklSU1RTUUwgYXMgYTMsIERCU1lTVEVNVkFMVUVTX0dFT0RFIGFzIGE0LCBEQlNZU1RFTVZBTFVFU19IMiBhcyBhNSwgREJTWVNURU1WQUxVRVNfSEFOQURCIGFzIGE2LCBEQlNZU1RFTVZBTFVFU19IQkFTRSBhcyBhNywgREJTWVNURU1WQUxVRVNfSElWRSBhcyBhOCwgREJTWVNURU1WQUxVRVNfSFNRTERCIGFzIGE5LCBGQUFTRE9DVU1FTlRPUEVSQVRJT05WQUxVRVNfREVMRVRFIGFzIGFBLCBGQUFTRE9DVU1FTlRPUEVSQVRJT05WQUxVRVNfRURJVCBhcyBhQiwgRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX0lOU0VSVCBhcyBhQywgRkFBU0lOVk9LRURQUk9WSURFUlZBTFVFU19BTElCQUJBX0NMT1VEIGFzIGFELCBGQUFTSU5WT0tFRFBST1ZJREVSVkFMVUVTX0FXUyBhcyBhRSwgRkFBU0lOVk9LRURQUk9WSURFUlZBTFVFU19BWlVSRSBhcyBhRiwgRkFBU0lOVk9LRURQUk9WSURFUlZBTFVFU19HQ1AgYXMgYUcsIEZBQVNUUklHR0VSVkFMVUVTX0RBVEFTT1VSQ0UgYXMgYUgsIEZBQVNUUklHR0VSVkFMVUVTX0hUVFAgYXMgYUksIEZBQVNUUklHR0VSVkFMVUVTX09USEVSIGFzIGFKLCBGQUFTVFJJR0dFUlZBTFVFU19QVUJTVUIgYXMgYUssIEZBQVNUUklHR0VSVkFMVUVTX1RJTUVSIGFzIGFMLCBGYWFzRG9jdW1lbnRPcGVyYXRpb25WYWx1ZXMgYXMgYU0sIEZhYXNJbnZva2VkUHJvdmlkZXJWYWx1ZXMgYXMgYU4sIEZhYXNUcmlnZ2VyVmFsdWVzIGFzIGFPLCBIVFRQRkxBVk9SVkFMVUVTX0hUVFBfMV8wIGFzIGFQLCBIVFRQRkxBVk9SVkFMVUVTX0hUVFBfMV8xIGFzIGFRLCBIVFRQRkxBVk9SVkFMVUVTX0hUVFBfMl8wIGFzIGFSLCBIVFRQRkxBVk9SVkFMVUVTX1FVSUMgYXMgYVMsIEhUVFBGTEFWT1JWQUxVRVNfU1BEWSBhcyBhVCwgSHR0cEZsYXZvclZhbHVlcyBhcyBhVSwgTUVTU0FHRVRZUEVWQUxVRVNfUkVDRUlWRUQgYXMgYVYsIE1FU1NBR0VUWVBFVkFMVUVTX1NFTlQgYXMgYVcsIE1FU1NBR0lOR0RFU1RJTkFUSU9OS0lORFZBTFVFU19RVUVVRSBhcyBhWCwgTUVTU0FHSU5HREVTVElOQVRJT05LSU5EVkFMVUVTX1RPUElDIGFzIGFZLCBNRVNTQUdJTkdPUEVSQVRJT05WQUxVRVNfUFJPQ0VTUyBhcyBhWiwgTUVTU0FHSU5HT1BFUkFUSU9OVkFMVUVTX1JFQ0VJVkUgYXMgYV8sIERCU1lTVEVNVkFMVUVTX0lORk9STUlYIGFzIGFhLCBEQlNZU1RFTVZBTFVFU19JTkdSRVMgYXMgYWIsIERCU1lTVEVNVkFMVUVTX0lOU1RBTlREQiBhcyBhYywgREJTWVNURU1WQUxVRVNfSU5URVJCQVNFIGFzIGFkLCBEQlNZU1RFTVZBTFVFU19NQVJJQURCIGFzIGFlLCBEQlNZU1RFTVZBTFVFU19NQVhEQiBhcyBhZiwgREJTWVNURU1WQUxVRVNfTUVNQ0FDSEVEIGFzIGFnLCBEQlNZU1RFTVZBTFVFU19NT05HT0RCIGFzIGFoLCBEQlNZU1RFTVZBTFVFU19NU1NRTCBhcyBhaSwgREJTWVNURU1WQUxVRVNfTVlTUUwgYXMgYWosIERCU1lTVEVNVkFMVUVTX05FTzRKIGFzIGFrLCBEQlNZU1RFTVZBTFVFU19ORVRFWlpBIGFzIGFsLCBEQlNZU1RFTVZBTFVFU19PUkFDTEUgYXMgYW0sIERCU1lTVEVNVkFMVUVTX09USEVSX1NRTCBhcyBhbiwgREJTWVNURU1WQUxVRVNfUEVSVkFTSVZFIGFzIGFvLCBEQlNZU1RFTVZBTFVFU19QT0lOVEJBU0UgYXMgYXAsIERCU1lTVEVNVkFMVUVTX1BPU1RHUkVTUUwgYXMgYXEsIERCU1lTVEVNVkFMVUVTX1BST0dSRVNTIGFzIGFyLCBEQlNZU1RFTVZBTFVFU19SRURJUyBhcyBhcywgREJTWVNURU1WQUxVRVNfUkVEU0hJRlQgYXMgYXQsIERCU1lTVEVNVkFMVUVTX1NRTElURSBhcyBhdSwgREJTWVNURU1WQUxVRVNfU1lCQVNFIGFzIGF2LCBEQlNZU1RFTVZBTFVFU19URVJBREFUQSBhcyBhdywgREJTWVNURU1WQUxVRVNfVkVSVElDQSBhcyBheCwgRGJDYXNzYW5kcmFDb25zaXN0ZW5jeUxldmVsVmFsdWVzIGFzIGF5LCBEYlN5c3RlbVZhbHVlcyBhcyBheiwgU0VNQVRUUlNfSFRUUF9TVEFUVVNfQ09ERSBhcyBiLCBTRU1BVFRSU19BV1NfRFlOQU1PREJfR0xPQkFMX1NFQ09OREFSWV9JTkRFWF9VUERBVEVTIGFzIGIkLCBNZXNzYWdpbmdEZXN0aW5hdGlvbktpbmRWYWx1ZXMgYXMgYjAsIE1lc3NhZ2luZ09wZXJhdGlvblZhbHVlcyBhcyBiMSwgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0NETUEgYXMgYjIsIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19DRE1BMjAwMF8xWFJUVCBhcyBiMywgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VER0UgYXMgYjQsIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19FSFJQRCBhcyBiNSwgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fMCBhcyBiNiwgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fQSBhcyBiNywgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fQiBhcyBiOCwgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0dQUlMgYXMgYjksIE5ldEhvc3RDb25uZWN0aW9uVHlwZVZhbHVlcyBhcyBiQSwgTmV0VHJhbnNwb3J0VmFsdWVzIGFzIGJCLCBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19BQk9SVEVEIGFzIGJDLCBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19BTFJFQURZX0VYSVNUUyBhcyBiRCwgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfQ0FOQ0VMTEVEIGFzIGJFLCBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19EQVRBX0xPU1MgYXMgYkYsIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0RFQURMSU5FX0VYQ0VFREVEIGFzIGJHLCBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19GQUlMRURfUFJFQ09ORElUSU9OIGFzIGJILCBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19JTlRFUk5BTCBhcyBiSSwgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfSU5WQUxJRF9BUkdVTUVOVCBhcyBiSiwgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfTk9UX0ZPVU5EIGFzIGJLLCBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19PSyBhcyBiTCwgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfT1VUX09GX1JBTkdFIGFzIGJNLCBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19QRVJNSVNTSU9OX0RFTklFRCBhcyBiTiwgUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfUkVTT1VSQ0VfRVhIQVVTVEVEIGFzIGJPLCBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTkFVVEhFTlRJQ0FURUQgYXMgYlAsIFJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1VOQVZBSUxBQkxFIGFzIGJRLCBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTklNUExFTUVOVEVEIGFzIGJSLCBSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTktOT1dOIGFzIGJTLCBScGNHcnBjU3RhdHVzQ29kZVZhbHVlcyBhcyBiVCwgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0FUVFJJQlVURVNfVE9fR0VUIGFzIGJVLCBTRU1BVFRSU19BV1NfRFlOQU1PREJfQVRUUklCVVRFX0RFRklOSVRJT05TIGFzIGJWLCBTRU1BVFRSU19BV1NfRFlOQU1PREJfQ09OU0lTVEVOVF9SRUFEIGFzIGJXLCBTRU1BVFRSU19BV1NfRFlOQU1PREJfQ09OU1VNRURfQ0FQQUNJVFkgYXMgYlgsIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9DT1VOVCBhcyBiWSwgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0VYQ0xVU0lWRV9TVEFSVF9UQUJMRSBhcyBiWiwgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0dMT0JBTF9TRUNPTkRBUllfSU5ERVhFUyBhcyBiXywgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0dTTSBhcyBiYSwgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTRFBBIGFzIGJiLCBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSFNQQSBhcyBiYywgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTUEFQIGFzIGJkLCBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSFNVUEEgYXMgYmUsIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19JREVOIGFzIGJmLCBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSVdMQU4gYXMgYmcsIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19MVEUgYXMgYmgsIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19MVEVfQ0EgYXMgYmksIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19OUiBhcyBiaiwgTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX05STlNBIGFzIGJrLCBORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfVERfU0NETUEgYXMgYmwsIE5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19VTVRTIGFzIGJtLCBORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfQ0VMTCBhcyBibiwgTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX1VOQVZBSUxBQkxFIGFzIGJvLCBORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfVU5LTk9XTiBhcyBicCwgTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX1dJRkkgYXMgYnEsIE5FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19XSVJFRCBhcyBiciwgTkVUVFJBTlNQT1JUVkFMVUVTX0lOUFJPQyBhcyBicywgTkVUVFJBTlNQT1JUVkFMVUVTX0lQIGFzIGJ0LCBORVRUUkFOU1BPUlRWQUxVRVNfSVBfVENQIGFzIGJ1LCBORVRUUkFOU1BPUlRWQUxVRVNfSVBfVURQIGFzIGJ2LCBORVRUUkFOU1BPUlRWQUxVRVNfT1RIRVIgYXMgYncsIE5FVFRSQU5TUE9SVFZBTFVFU19QSVBFIGFzIGJ4LCBORVRUUkFOU1BPUlRWQUxVRVNfVU5JWCBhcyBieSwgTmV0SG9zdENvbm5lY3Rpb25TdWJ0eXBlVmFsdWVzIGFzIGJ6LCBTRU1BVFRSU19IVFRQX0hPU1QgYXMgYywgU0VNQVRUUlNfTUVTU0FHRV9UWVBFIGFzIGMkLCBTRU1BVFRSU19BV1NfRFlOQU1PREJfSU5ERVhfTkFNRSBhcyBjMCwgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0lURU1fQ09MTEVDVElPTl9NRVRSSUNTIGFzIGMxLCBTRU1BVFRSU19BV1NfRFlOQU1PREJfTElNSVQgYXMgYzIsIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9MT0NBTF9TRUNPTkRBUllfSU5ERVhFUyBhcyBjMywgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX1BST0pFQ1RJT04gYXMgYzQsIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9QUk9WSVNJT05FRF9SRUFEX0NBUEFDSVRZIGFzIGM1LCBTRU1BVFRSU19BV1NfRFlOQU1PREJfUFJPVklTSU9ORURfV1JJVEVfQ0FQQUNJVFkgYXMgYzYsIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9TQ0FOTkVEX0NPVU5UIGFzIGM3LCBTRU1BVFRSU19BV1NfRFlOQU1PREJfU0NBTl9GT1JXQVJEIGFzIGM4LCBTRU1BVFRSU19BV1NfRFlOQU1PREJfU0VHTUVOVCBhcyBjOSwgU0VNQVRUUlNfREJfU1RBVEVNRU5UIGFzIGNBLCBTRU1BVFRSU19EQl9TWVNURU0gYXMgY0IsIFNFTUFUVFJTX0RCX1VTRVIgYXMgY0MsIFNFTUFUVFJTX0VORFVTRVJfSUQgYXMgY0QsIFNFTUFUVFJTX0VORFVTRVJfUk9MRSBhcyBjRSwgU0VNQVRUUlNfRU5EVVNFUl9TQ09QRSBhcyBjRiwgU0VNQVRUUlNfRVhDRVBUSU9OX0VTQ0FQRUQgYXMgY0csIFNFTUFUVFJTX0ZBQVNfQ09MRFNUQVJUIGFzIGNILCBTRU1BVFRSU19GQUFTX0NST04gYXMgY0ksIFNFTUFUVFJTX0ZBQVNfRE9DVU1FTlRfQ09MTEVDVElPTiBhcyBjSiwgU0VNQVRUUlNfRkFBU19ET0NVTUVOVF9OQU1FIGFzIGNLLCBTRU1BVFRSU19GQUFTX0RPQ1VNRU5UX09QRVJBVElPTiBhcyBjTCwgU0VNQVRUUlNfRkFBU19ET0NVTUVOVF9USU1FIGFzIGNNLCBTRU1BVFRSU19GQUFTX0VYRUNVVElPTiBhcyBjTiwgU0VNQVRUUlNfRkFBU19JTlZPS0VEX05BTUUgYXMgY08sIFNFTUFUVFJTX0ZBQVNfSU5WT0tFRF9QUk9WSURFUiBhcyBjUCwgU0VNQVRUUlNfRkFBU19JTlZPS0VEX1JFR0lPTiBhcyBjUSwgU0VNQVRUUlNfRkFBU19USU1FIGFzIGNSLCBTRU1BVFRSU19GQUFTX1RSSUdHRVIgYXMgY1MsIFNFTUFUVFJTX0hUVFBfQ0xJRU5UX0lQIGFzIGNULCBTRU1BVFRSU19IVFRQX0ZMQVZPUiBhcyBjVSwgU0VNQVRUUlNfSFRUUF9SRVFVRVNUX0NPTlRFTlRfTEVOR1RIIGFzIGNWLCBTRU1BVFRSU19IVFRQX1JPVVRFIGFzIGNXLCBTRU1BVFRSU19IVFRQX1NFUlZFUl9OQU1FIGFzIGNYLCBTRU1BVFRSU19IVFRQX1RBUkdFVCBhcyBjWSwgU0VNQVRUUlNfTUVTU0FHRV9DT01QUkVTU0VEX1NJWkUgYXMgY1osIFNFTUFUVFJTX01FU1NBR0VfSUQgYXMgY18sIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9TRUxFQ1QgYXMgY2EsIFNFTUFUVFJTX0FXU19EWU5BTU9EQl9UQUJMRV9DT1VOVCBhcyBjYiwgU0VNQVRUUlNfQVdTX0RZTkFNT0RCX1RBQkxFX05BTUVTIGFzIGNjLCBTRU1BVFRSU19BV1NfRFlOQU1PREJfVE9UQUxfU0VHTUVOVFMgYXMgY2QsIFNFTUFUVFJTX0FXU19MQU1CREFfSU5WT0tFRF9BUk4gYXMgY2UsIFNFTUFUVFJTX0NPREVfRklMRVBBVEggYXMgY2YsIFNFTUFUVFJTX0NPREVfRlVOQ1RJT04gYXMgY2csIFNFTUFUVFJTX0NPREVfTElORU5PIGFzIGNoLCBTRU1BVFRSU19DT0RFX05BTUVTUEFDRSBhcyBjaSwgU0VNQVRUUlNfREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMIGFzIGNqLCBTRU1BVFRSU19EQl9DQVNTQU5EUkFfQ09PUkRJTkFUT1JfREMgYXMgY2ssIFNFTUFUVFJTX0RCX0NBU1NBTkRSQV9DT09SRElOQVRPUl9JRCBhcyBjbCwgU0VNQVRUUlNfREJfQ0FTU0FORFJBX0lERU1QT1RFTkNFIGFzIGNtLCBTRU1BVFRSU19EQl9DQVNTQU5EUkFfS0VZU1BBQ0UgYXMgY24sIFNFTUFUVFJTX0RCX0NBU1NBTkRSQV9QQUdFX1NJWkUgYXMgY28sIFNFTUFUVFJTX0RCX0NBU1NBTkRSQV9TUEVDVUxBVElWRV9FWEVDVVRJT05fQ09VTlQgYXMgY3AsIFNFTUFUVFJTX0RCX0NBU1NBTkRSQV9UQUJMRSBhcyBjcSwgU0VNQVRUUlNfREJfQ09OTkVDVElPTl9TVFJJTkcgYXMgY3IsIFNFTUFUVFJTX0RCX0hCQVNFX05BTUVTUEFDRSBhcyBjcywgU0VNQVRUUlNfREJfSkRCQ19EUklWRVJfQ0xBU1NOQU1FIGFzIGN0LCBTRU1BVFRSU19EQl9NT05HT0RCX0NPTExFQ1RJT04gYXMgY3UsIFNFTUFUVFJTX0RCX01TU1FMX0lOU1RBTkNFX05BTUUgYXMgY3YsIFNFTUFUVFJTX0RCX05BTUUgYXMgY3csIFNFTUFUVFJTX0RCX09QRVJBVElPTiBhcyBjeCwgU0VNQVRUUlNfREJfUkVESVNfREFUQUJBU0VfSU5ERVggYXMgY3ksIFNFTUFUVFJTX0RCX1NRTF9UQUJMRSBhcyBjeiwgU0VNQVRUUlNfSFRUUF9TQ0hFTUUgYXMgZCwgU0VNQVRUUlNfTUVTU0FHRV9VTkNPTVBSRVNTRURfU0laRSBhcyBkMCwgU0VNQVRUUlNfTUVTU0FHSU5HX0NPTlNVTUVSX0lEIGFzIGQxLCBTRU1BVFRSU19NRVNTQUdJTkdfQ09OVkVSU0FUSU9OX0lEIGFzIGQyLCBTRU1BVFRSU19NRVNTQUdJTkdfREVTVElOQVRJT04gYXMgZDMsIFNFTUFUVFJTX01FU1NBR0lOR19ERVNUSU5BVElPTl9LSU5EIGFzIGQ0LCBTRU1BVFRSU19NRVNTQUdJTkdfS0FGS0FfQ0xJRU5UX0lEIGFzIGQ1LCBTRU1BVFRSU19NRVNTQUdJTkdfS0FGS0FfQ09OU1VNRVJfR1JPVVAgYXMgZDYsIFNFTUFUVFJTX01FU1NBR0lOR19LQUZLQV9NRVNTQUdFX0tFWSBhcyBkNywgU0VNQVRUUlNfTUVTU0FHSU5HX0tBRktBX1BBUlRJVElPTiBhcyBkOCwgU0VNQVRUUlNfTUVTU0FHSU5HX0tBRktBX1RPTUJTVE9ORSBhcyBkOSwgU0VNQVRUUlNfUlBDX0pTT05SUENfRVJST1JfQ09ERSBhcyBkQSwgU0VNQVRUUlNfUlBDX0pTT05SUENfRVJST1JfTUVTU0FHRSBhcyBkQiwgU0VNQVRUUlNfUlBDX0pTT05SUENfUkVRVUVTVF9JRCBhcyBkQywgU0VNQVRUUlNfUlBDX0pTT05SUENfVkVSU0lPTiBhcyBkRCwgU0VNQVRUUlNfUlBDX01FVEhPRCBhcyBkRSwgU0VNQVRUUlNfUlBDX1NFUlZJQ0UgYXMgZEYsIFNFTUFUVFJTX1JQQ19TWVNURU0gYXMgZEcsIFNFTUFUVFJTX1RIUkVBRF9JRCBhcyBkSCwgU0VNQVRUUlNfVEhSRUFEX05BTUUgYXMgZEksIFNlbWFudGljQXR0cmlidXRlcyBhcyBkSiwgaHJUaW1lVG9NaWxsaXNlY29uZHMgYXMgZEssIGhyVGltZVRvVGltZVN0YW1wIGFzIGRMLCBTRU1BVFRSU19NRVNTQUdJTkdfTUVTU0FHRV9JRCBhcyBkYSwgU0VNQVRUUlNfTUVTU0FHSU5HX01FU1NBR0VfUEFZTE9BRF9DT01QUkVTU0VEX1NJWkVfQllURVMgYXMgZGIsIFNFTUFUVFJTX01FU1NBR0lOR19NRVNTQUdFX1BBWUxPQURfU0laRV9CWVRFUyBhcyBkYywgU0VNQVRUUlNfTUVTU0FHSU5HX09QRVJBVElPTiBhcyBkZCwgU0VNQVRUUlNfTUVTU0FHSU5HX1BST1RPQ09MIGFzIGRlLCBTRU1BVFRSU19NRVNTQUdJTkdfUFJPVE9DT0xfVkVSU0lPTiBhcyBkZiwgU0VNQVRUUlNfTUVTU0FHSU5HX1JBQkJJVE1RX1JPVVRJTkdfS0VZIGFzIGRnLCBTRU1BVFRSU19NRVNTQUdJTkdfU1lTVEVNIGFzIGRoLCBTRU1BVFRSU19NRVNTQUdJTkdfVEVNUF9ERVNUSU5BVElPTiBhcyBkaSwgU0VNQVRUUlNfTUVTU0FHSU5HX1VSTCBhcyBkaiwgU0VNQVRUUlNfTkVUX0hPU1RfQ0FSUklFUl9JQ0MgYXMgZGssIFNFTUFUVFJTX05FVF9IT1NUX0NBUlJJRVJfTUNDIGFzIGRsLCBTRU1BVFRSU19ORVRfSE9TVF9DQVJSSUVSX01OQyBhcyBkbSwgU0VNQVRUUlNfTkVUX0hPU1RfQ0FSUklFUl9OQU1FIGFzIGRuLCBTRU1BVFRSU19ORVRfSE9TVF9DT05ORUNUSU9OX1NVQlRZUEUgYXMgZHAsIFNFTUFUVFJTX05FVF9IT1NUX0NPTk5FQ1RJT05fVFlQRSBhcyBkcSwgU0VNQVRUUlNfTkVUX0hPU1RfSVAgYXMgZHIsIFNFTUFUVFJTX05FVF9IT1NUX05BTUUgYXMgZHMsIFNFTUFUVFJTX05FVF9IT1NUX1BPUlQgYXMgZHQsIFNFTUFUVFJTX05FVF9QRUVSX0lQIGFzIGR1LCBTRU1BVFRSU19ORVRfUEVFUl9OQU1FIGFzIGR2LCBTRU1BVFRSU19ORVRfUEVFUl9QT1JUIGFzIGR3LCBTRU1BVFRSU19ORVRfVFJBTlNQT1JUIGFzIGR4LCBTRU1BVFRSU19QRUVSX1NFUlZJQ0UgYXMgZHksIFNFTUFUVFJTX1JQQ19HUlBDX1NUQVRVU19DT0RFIGFzIGR6LCBTRU1BVFRSU19IVFRQX1VTRVJfQUdFTlQgYXMgZSwgU0VNQVRUUlNfSFRUUF9NRVRIT0QgYXMgZiwgU0VNQVRUUlNfSFRUUF9VUkwgYXMgZywgaHJUaW1lVG9OYW5vc2Vjb25kcyBhcyBoLCBpc1VybElnbm9yZWQgYXMgaSwgaHJUaW1lIGFzIGosIFNFTUFUVFJTX0hUVFBfUkVRVUVTVF9DT05URU5UX0xFTkdUSF9VTkNPTVBSRVNTRUQgYXMgaywgZ2V0VGltZU9yaWdpbiBhcyBsLCBtaWxsaXNUb0hyVGltZSBhcyBtLCBpc1RpbWVJbnB1dCBhcyBuLCBvdHBlcmZvcm1hbmNlIGFzIG8sIHByb3BhZ2F0aW9uIGFzIHAsIGhyVGltZUR1cmF0aW9uIGFzIHEsIGlzVGltZUlucHV0SHJUaW1lIGFzIHIsIGFkZEhyVGltZXMgYXMgcywgdGltZUlucHV0VG9IclRpbWUgYXMgdCwgdXJsTWF0Y2hlcyBhcyB1LCBTRU1BVFRSU19FWENFUFRJT05fVFlQRSBhcyB2LCBTRU1BVFRSU19FWENFUFRJT05fTUVTU0FHRSBhcyB3LCBTRU1BVFRSU19FWENFUFRJT05fU1RBQ0tUUkFDRSBhcyB4LCBoclRpbWVUb01pY3Jvc2Vjb25kcyBhcyB5LCBiYWdnYWdlRW50cnlNZXRhZGF0YUZyb21TdHJpbmcgYXMgeiB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBS0EsR0FBUyxLQUFLQyxJQUFrQixLQUFLQyxJQUFZLEtBQUtDLElBQWdCLEtBQUtDLElBQWtCLEtBQUtDLFVBQWlCO0FBQ2pJLFNBQVMsS0FBS0MsU0FBc0I7QUFpQnBDLElBQUlDLEtBQTRDLFNBQVVDLEdBQUdDLEdBQUc7QUFDNUQsTUFBSUMsSUFBSSxPQUFPLFVBQVcsY0FBY0YsRUFBRSxPQUFPLFFBQVE7QUFDekQsTUFBSSxDQUFDRSxFQUFHLFFBQU9GO0FBQ2YsTUFBSUcsSUFBSUQsRUFBRSxLQUFLRixDQUFDLEdBQUdJLEdBQUdDLElBQUssQ0FBQyxHQUFHQztBQUMvQixNQUFJO0FBQ0EsWUFBUUwsTUFBTSxVQUFVQSxNQUFNLE1BQU0sRUFBRUcsSUFBSUQsRUFBRSxLQUFLLEdBQUcsT0FBTSxDQUFBRSxFQUFHLEtBQUtELEVBQUUsS0FBSztBQUFBLEVBQzdFLFNBQ09HLEdBQU87QUFBRSxJQUFBRCxJQUFJLEVBQUUsT0FBT0MsRUFBTTtBQUFBLEVBQUcsVUFDdEM7QUFDSSxRQUFJO0FBQ0EsTUFBSUgsS0FBSyxDQUFDQSxFQUFFLFNBQVNGLElBQUlDLEVBQUUsV0FBWUQsRUFBRSxLQUFLQyxDQUFDO0FBQUEsSUFDbkQsVUFDQTtBQUFVLFVBQUlHLEVBQUcsT0FBTUEsRUFBRTtBQUFBLElBQU87QUFBQSxFQUNwQztBQUNBLFNBQU9E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QztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVBQ0FDO0FBQUEsRUFDQUM7QUFBQSxFQUNBQztBQUFBLEVB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QUFDQSxRQUFNLElBQUksVUFBVVMsSUFBSSw0QkFBNEIsaUNBQWlDO0FBQ3pGO0FBZ0JBLFNBQVNtbUIsR0FBV0MsR0FBS0MsR0FBWTtBQUNqQyxTQUFJLE9BQU9BLEtBQWUsV0FDZkQsTUFBUUMsSUFHUixDQUFDLENBQUNELEVBQUksTUFBTUMsQ0FBVTtBQUVyQztBQU1BLFNBQVNDLEdBQWFGLEdBQUtHLEdBQWE7QUFDcEMsTUFBSTdsQixHQUFLTDtBQUNULE1BQUksQ0FBQ2ttQjtBQUNELFdBQU87QUFFWCxNQUFJO0FBQ0EsYUFBU0MsSUFBZ0JOLEdBQVNLLENBQVcsR0FBR0UsSUFBa0JELEVBQWMsS0FBSyxHQUFHLENBQUNDLEVBQWdCLE1BQU1BLElBQWtCRCxFQUFjLEtBQUssR0FBRztBQUNuSixVQUFJRSxJQUFZRCxFQUFnQjtBQUNoQyxVQUFJTixHQUFXQyxHQUFLTSxDQUFTO0FBQ3pCLGVBQU87QUFBQSxJQUVmO0FBQUEsRUFDSixTQUNPM2xCLEdBQU87QUFBRSxJQUFBTCxJQUFNLEVBQUUsT0FBT0ssRUFBTTtBQUFBLEVBQUcsVUFDeEM7QUFDSSxRQUFJO0FBQ0EsTUFBSTBsQixLQUFtQixDQUFDQSxFQUFnQixTQUFTcG1CLElBQUttbUIsRUFBYyxXQUFTbm1CLEVBQUcsS0FBS21tQixDQUFhO0FBQUEsSUFDdEcsVUFDQTtBQUFVLFVBQUk5bEIsRUFBSyxPQUFNQSxFQUFJO0FBQUEsSUFBTztBQUFBLEVBQ3hDO0FBQ0EsU0FBTztBQUNYOyIsCiAgIm5hbWVzIjogWyJEaWFnQVBJIiwgImNyZWF0ZUNvbnRleHRLZXkiLCAiQ29udGV4dEFQSSIsICJyZWdpc3Rlckdsb2JhbCIsICJ1bnJlZ2lzdGVyR2xvYmFsIiwgImdldEdsb2JhbCIsICJjcmVhdGVDb25zdE1hcCIsICJfX3JlYWQiLCAibyIsICJuIiwgIm0iLCAiaSIsICJyIiwgImFyIiwgImUiLCAiZXJyb3IiLCAiX192YWx1ZXMkMSIsICJzIiwgIkJhZ2dhZ2VJbXBsIiwgImVudHJpZXMiLCAia2V5IiwgImVudHJ5IiwgIl9hIiwgIl9iIiwgImsiLCAidiIsICJuZXdCYWdnYWdlIiwgImVfMSIsICJrZXlzIiwgIl9pIiwgImtleXNfMSIsICJrZXlzXzFfMSIsICJlXzFfMSIsICJiYWdnYWdlRW50cnlNZXRhZGF0YVN5bWJvbCIsICJkaWFnIiwgImNyZWF0ZUJhZ2dhZ2UiLCAiYmFnZ2FnZUVudHJ5TWV0YWRhdGFGcm9tU3RyaW5nIiwgInN0ciIsICJkZWZhdWx0VGV4dE1hcEdldHRlciIsICJjYXJyaWVyIiwgImRlZmF1bHRUZXh0TWFwU2V0dGVyIiwgInZhbHVlIiwgIk5vb3BUZXh0TWFwUHJvcGFnYXRvciIsICJfY29udGV4dCIsICJfY2FycmllciIsICJjb250ZXh0IiwgIkJBR0dBR0VfS0VZIiwgImdldEJhZ2dhZ2UiLCAiZ2V0QWN0aXZlQmFnZ2FnZSIsICJzZXRCYWdnYWdlIiwgImJhZ2dhZ2UiLCAiZGVsZXRlQmFnZ2FnZSIsICJBUElfTkFNRSIsICJOT09QX1RFWFRfTUFQX1BST1BBR0FUT1IiLCAiUHJvcGFnYXRpb25BUEkiLCAicHJvcGFnYXRvciIsICJzZXR0ZXIiLCAiZ2V0dGVyIiwgInByb3BhZ2F0aW9uIiwgIl9nbG9iYWxUaGlzIiwgIm90cGVyZm9ybWFuY2UiLCAiVE1QX0FXU19MQU1CREFfSU5WT0tFRF9BUk4iLCAiVE1QX0RCX1NZU1RFTSIsICJUTVBfREJfQ09OTkVDVElPTl9TVFJJTkciLCAiVE1QX0RCX1VTRVIiLCAiVE1QX0RCX0pEQkNfRFJJVkVSX0NMQVNTTkFNRSIsICJUTVBfREJfTkFNRSIsICJUTVBfREJfU1RBVEVNRU5UIiwgIlRNUF9EQl9PUEVSQVRJT04iLCAiVE1QX0RCX01TU1FMX0lOU1RBTkNFX05BTUUiLCAiVE1QX0RCX0NBU1NBTkRSQV9LRVlTUEFDRSIsICJUTVBfREJfQ0FTU0FORFJBX1BBR0VfU0laRSIsICJUTVBfREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMIiwgIlRNUF9EQl9DQVNTQU5EUkFfVEFCTEUiLCAiVE1QX0RCX0NBU1NBTkRSQV9JREVNUE9URU5DRSIsICJUTVBfREJfQ0FTU0FORFJBX1NQRUNVTEFUSVZFX0VYRUNVVElPTl9DT1VOVCIsICJUTVBfREJfQ0FTU0FORFJBX0NPT1JESU5BVE9SX0lEIiwgIlRNUF9EQl9DQVNTQU5EUkFfQ09PUkRJTkFUT1JfREMiLCAiVE1QX0RCX0hCQVNFX05BTUVTUEFDRSIsICJUTVBfREJfUkVESVNfREFUQUJBU0VfSU5ERVgiLCAiVE1QX0RCX01PTkdPREJfQ09MTEVDVElPTiIsICJUTVBfREJfU1FMX1RBQkxFIiwgIlRNUF9FWENFUFRJT05fVFlQRSIsICJUTVBfRVhDRVBUSU9OX01FU1NBR0UiLCAiVE1QX0VYQ0VQVElPTl9TVEFDS1RSQUNFIiwgIlRNUF9FWENFUFRJT05fRVNDQVBFRCIsICJUTVBfRkFBU19UUklHR0VSIiwgIlRNUF9GQUFTX0VYRUNVVElPTiIsICJUTVBfRkFBU19ET0NVTUVOVF9DT0xMRUNUSU9OIiwgIlRNUF9GQUFTX0RPQ1VNRU5UX09QRVJBVElPTiIsICJUTVBfRkFBU19ET0NVTUVOVF9USU1FIiwgIlRNUF9GQUFTX0RPQ1VNRU5UX05BTUUiLCAiVE1QX0ZBQVNfVElNRSIsICJUTVBfRkFBU19DUk9OIiwgIlRNUF9GQUFTX0NPTERTVEFSVCIsICJUTVBfRkFBU19JTlZPS0VEX05BTUUiLCAiVE1QX0ZBQVNfSU5WT0tFRF9QUk9WSURFUiIsICJUTVBfRkFBU19JTlZPS0VEX1JFR0lPTiIsICJUTVBfTkVUX1RSQU5TUE9SVCIsICJUTVBfTkVUX1BFRVJfSVAiLCAiVE1QX05FVF9QRUVSX1BPUlQiLCAiVE1QX05FVF9QRUVSX05BTUUiLCAiVE1QX05FVF9IT1NUX0lQIiwgIlRNUF9ORVRfSE9TVF9QT1JUIiwgIlRNUF9ORVRfSE9TVF9OQU1FIiwgIlRNUF9ORVRfSE9TVF9DT05ORUNUSU9OX1RZUEUiLCAiVE1QX05FVF9IT1NUX0NPTk5FQ1RJT05fU1VCVFlQRSIsICJUTVBfTkVUX0hPU1RfQ0FSUklFUl9OQU1FIiwgIlRNUF9ORVRfSE9TVF9DQVJSSUVSX01DQyIsICJUTVBfTkVUX0hPU1RfQ0FSUklFUl9NTkMiLCAiVE1QX05FVF9IT1NUX0NBUlJJRVJfSUNDIiwgIlRNUF9QRUVSX1NFUlZJQ0UiLCAiVE1QX0VORFVTRVJfSUQiLCAiVE1QX0VORFVTRVJfUk9MRSIsICJUTVBfRU5EVVNFUl9TQ09QRSIsICJUTVBfVEhSRUFEX0lEIiwgIlRNUF9USFJFQURfTkFNRSIsICJUTVBfQ09ERV9GVU5DVElPTiIsICJUTVBfQ09ERV9OQU1FU1BBQ0UiLCAiVE1QX0NPREVfRklMRVBBVEgiLCAiVE1QX0NPREVfTElORU5PIiwgIlRNUF9IVFRQX01FVEhPRCIsICJUTVBfSFRUUF9VUkwiLCAiVE1QX0hUVFBfVEFSR0VUIiwgIlRNUF9IVFRQX0hPU1QiLCAiVE1QX0hUVFBfU0NIRU1FIiwgIlRNUF9IVFRQX1NUQVRVU19DT0RFIiwgIlRNUF9IVFRQX0ZMQVZPUiIsICJUTVBfSFRUUF9VU0VSX0FHRU5UIiwgIlRNUF9IVFRQX1JFUVVFU1RfQ09OVEVOVF9MRU5HVEgiLCAiVE1QX0hUVFBfUkVRVUVTVF9DT05URU5UX0xFTkdUSF9VTkNPTVBSRVNTRUQiLCAiVE1QX0hUVFBfUkVTUE9OU0VfQ09OVEVOVF9MRU5HVEgiLCAiVE1QX0hUVFBfUkVTUE9OU0VfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEIiwgIlRNUF9IVFRQX1NFUlZFUl9OQU1FIiwgIlRNUF9IVFRQX1JPVVRFIiwgIlRNUF9IVFRQX0NMSUVOVF9JUCIsICJUTVBfQVdTX0RZTkFNT0RCX1RBQkxFX05BTUVTIiwgIlRNUF9BV1NfRFlOQU1PREJfQ09OU1VNRURfQ0FQQUNJVFkiLCAiVE1QX0FXU19EWU5BTU9EQl9JVEVNX0NPTExFQ1RJT05fTUVUUklDUyIsICJUTVBfQVdTX0RZTkFNT0RCX1BST1ZJU0lPTkVEX1JFQURfQ0FQQUNJVFkiLCAiVE1QX0FXU19EWU5BTU9EQl9QUk9WSVNJT05FRF9XUklURV9DQVBBQ0lUWSIsICJUTVBfQVdTX0RZTkFNT0RCX0NPTlNJU1RFTlRfUkVBRCIsICJUTVBfQVdTX0RZTkFNT0RCX1BST0pFQ1RJT04iLCAiVE1QX0FXU19EWU5BTU9EQl9MSU1JVCIsICJUTVBfQVdTX0RZTkFNT0RCX0FUVFJJQlVURVNfVE9fR0VUIiwgIlRNUF9BV1NfRFlOQU1PREJfSU5ERVhfTkFNRSIsICJUTVBfQVdTX0RZTkFNT0RCX1NFTEVDVCIsICJUTVBfQVdTX0RZTkFNT0RCX0dMT0JBTF9TRUNPTkRBUllfSU5ERVhFUyIsICJUTVBfQVdTX0RZTkFNT0RCX0xPQ0FMX1NFQ09OREFSWV9JTkRFWEVTIiwgIlRNUF9BV1NfRFlOQU1PREJfRVhDTFVTSVZFX1NUQVJUX1RBQkxFIiwgIlRNUF9BV1NfRFlOQU1PREJfVEFCTEVfQ09VTlQiLCAiVE1QX0FXU19EWU5BTU9EQl9TQ0FOX0ZPUldBUkQiLCAiVE1QX0FXU19EWU5BTU9EQl9TRUdNRU5UIiwgIlRNUF9BV1NfRFlOQU1PREJfVE9UQUxfU0VHTUVOVFMiLCAiVE1QX0FXU19EWU5BTU9EQl9DT1VOVCIsICJUTVBfQVdTX0RZTkFNT0RCX1NDQU5ORURfQ09VTlQiLCAiVE1QX0FXU19EWU5BTU9EQl9BVFRSSUJVVEVfREVGSU5JVElPTlMiLCAiVE1QX0FXU19EWU5BTU9EQl9HTE9CQUxfU0VDT05EQVJZX0lOREVYX1VQREFURVMiLCAiVE1QX01FU1NBR0lOR19TWVNURU0iLCAiVE1QX01FU1NBR0lOR19ERVNUSU5BVElPTiIsICJUTVBfTUVTU0FHSU5HX0RFU1RJTkFUSU9OX0tJTkQiLCAiVE1QX01FU1NBR0lOR19URU1QX0RFU1RJTkFUSU9OIiwgIlRNUF9NRVNTQUdJTkdfUFJPVE9DT0wiLCAiVE1QX01FU1NBR0lOR19QUk9UT0NPTF9WRVJTSU9OIiwgIlRNUF9NRVNTQUdJTkdfVVJMIiwgIlRNUF9NRVNTQUdJTkdfTUVTU0FHRV9JRCIsICJUTVBfTUVTU0FHSU5HX0NPTlZFUlNBVElPTl9JRCIsICJUTVBfTUVTU0FHSU5HX01FU1NBR0VfUEFZTE9BRF9TSVpFX0JZVEVTIiwgIlRNUF9NRVNTQUdJTkdfTUVTU0FHRV9QQVlMT0FEX0NPTVBSRVNTRURfU0laRV9CWVRFUyIsICJUTVBfTUVTU0FHSU5HX09QRVJBVElPTiIsICJUTVBfTUVTU0FHSU5HX0NPTlNVTUVSX0lEIiwgIlRNUF9NRVNTQUdJTkdfUkFCQklUTVFfUk9VVElOR19LRVkiLCAiVE1QX01FU1NBR0lOR19LQUZLQV9NRVNTQUdFX0tFWSIsICJUTVBfTUVTU0FHSU5HX0tBRktBX0NPTlNVTUVSX0dST1VQIiwgIlRNUF9NRVNTQUdJTkdfS0FGS0FfQ0xJRU5UX0lEIiwgIlRNUF9NRVNTQUdJTkdfS0FGS0FfUEFSVElUSU9OIiwgIlRNUF9NRVNTQUdJTkdfS0FGS0FfVE9NQlNUT05FIiwgIlRNUF9SUENfU1lTVEVNIiwgIlRNUF9SUENfU0VSVklDRSIsICJUTVBfUlBDX01FVEhPRCIsICJUTVBfUlBDX0dSUENfU1RBVFVTX0NPREUiLCAiVE1QX1JQQ19KU09OUlBDX1ZFUlNJT04iLCAiVE1QX1JQQ19KU09OUlBDX1JFUVVFU1RfSUQiLCAiVE1QX1JQQ19KU09OUlBDX0VSUk9SX0NPREUiLCAiVE1QX1JQQ19KU09OUlBDX0VSUk9SX01FU1NBR0UiLCAiVE1QX01FU1NBR0VfVFlQRSIsICJUTVBfTUVTU0FHRV9JRCIsICJUTVBfTUVTU0FHRV9DT01QUkVTU0VEX1NJWkUiLCAiVE1QX01FU1NBR0VfVU5DT01QUkVTU0VEX1NJWkUiLCAiU0VNQVRUUlNfQVdTX0xBTUJEQV9JTlZPS0VEX0FSTiIsICJTRU1BVFRSU19EQl9TWVNURU0iLCAiU0VNQVRUUlNfREJfQ09OTkVDVElPTl9TVFJJTkciLCAiU0VNQVRUUlNfREJfVVNFUiIsICJTRU1BVFRSU19EQl9KREJDX0RSSVZFUl9DTEFTU05BTUUiLCAiU0VNQVRUUlNfREJfTkFNRSIsICJTRU1BVFRSU19EQl9TVEFURU1FTlQiLCAiU0VNQVRUUlNfREJfT1BFUkFUSU9OIiwgIlNFTUFUVFJTX0RCX01TU1FMX0lOU1RBTkNFX05BTUUiLCAiU0VNQVRUUlNfREJfQ0FTU0FORFJBX0tFWVNQQUNFIiwgIlNFTUFUVFJTX0RCX0NBU1NBTkRSQV9QQUdFX1NJWkUiLCAiU0VNQVRUUlNfREJfQ0FTU0FORFJBX0NPTlNJU1RFTkNZX0xFVkVMIiwgIlNFTUFUVFJTX0RCX0NBU1NBTkRSQV9UQUJMRSIsICJTRU1BVFRSU19EQl9DQVNTQU5EUkFfSURFTVBPVEVOQ0UiLCAiU0VNQVRUUlNfREJfQ0FTU0FORFJBX1NQRUNVTEFUSVZFX0VYRUNVVElPTl9DT1VOVCIsICJTRU1BVFRSU19EQl9DQVNTQU5EUkFfQ09PUkRJTkFUT1JfSUQiLCAiU0VNQVRUUlNfREJfQ0FTU0FORFJBX0NPT1JESU5BVE9SX0RDIiwgIlNFTUFUVFJTX0RCX0hCQVNFX05BTUVTUEFDRSIsICJTRU1BVFRSU19EQl9SRURJU19EQVRBQkFTRV9JTkRFWCIsICJTRU1BVFRSU19EQl9NT05HT0RCX0NPTExFQ1RJT04iLCAiU0VNQVRUUlNfREJfU1FMX1RBQkxFIiwgIlNFTUFUVFJTX0VYQ0VQVElPTl9UWVBFIiwgIlNFTUFUVFJTX0VYQ0VQVElPTl9NRVNTQUdFIiwgIlNFTUFUVFJTX0VYQ0VQVElPTl9TVEFDS1RSQUNFIiwgIlNFTUFUVFJTX0VYQ0VQVElPTl9FU0NBUEVEIiwgIlNFTUFUVFJTX0ZBQVNfVFJJR0dFUiIsICJTRU1BVFRSU19GQUFTX0VYRUNVVElPTiIsICJTRU1BVFRSU19GQUFTX0RPQ1VNRU5UX0NPTExFQ1RJT04iLCAiU0VNQVRUUlNfRkFBU19ET0NVTUVOVF9PUEVSQVRJT04iLCAiU0VNQVRUUlNfRkFBU19ET0NVTUVOVF9USU1FIiwgIlNFTUFUVFJTX0ZBQVNfRE9DVU1FTlRfTkFNRSIsICJTRU1BVFRSU19GQUFTX1RJTUUiLCAiU0VNQVRUUlNfRkFBU19DUk9OIiwgIlNFTUFUVFJTX0ZBQVNfQ09MRFNUQVJUIiwgIlNFTUFUVFJTX0ZBQVNfSU5WT0tFRF9OQU1FIiwgIlNFTUFUVFJTX0ZBQVNfSU5WT0tFRF9QUk9WSURFUiIsICJTRU1BVFRSU19GQUFTX0lOVk9LRURfUkVHSU9OIiwgIlNFTUFUVFJTX05FVF9UUkFOU1BPUlQiLCAiU0VNQVRUUlNfTkVUX1BFRVJfSVAiLCAiU0VNQVRUUlNfTkVUX1BFRVJfUE9SVCIsICJTRU1BVFRSU19ORVRfUEVFUl9OQU1FIiwgIlNFTUFUVFJTX05FVF9IT1NUX0lQIiwgIlNFTUFUVFJTX05FVF9IT1NUX1BPUlQiLCAiU0VNQVRUUlNfTkVUX0hPU1RfTkFNRSIsICJTRU1BVFRSU19ORVRfSE9TVF9DT05ORUNUSU9OX1RZUEUiLCAiU0VNQVRUUlNfTkVUX0hPU1RfQ09OTkVDVElPTl9TVUJUWVBFIiwgIlNFTUFUVFJTX05FVF9IT1NUX0NBUlJJRVJfTkFNRSIsICJTRU1BVFRSU19ORVRfSE9TVF9DQVJSSUVSX01DQyIsICJTRU1BVFRSU19ORVRfSE9TVF9DQVJSSUVSX01OQyIsICJTRU1BVFRSU19ORVRfSE9TVF9DQVJSSUVSX0lDQyIsICJTRU1BVFRSU19QRUVSX1NFUlZJQ0UiLCAiU0VNQVRUUlNfRU5EVVNFUl9JRCIsICJTRU1BVFRSU19FTkRVU0VSX1JPTEUiLCAiU0VNQVRUUlNfRU5EVVNFUl9TQ09QRSIsICJTRU1BVFRSU19USFJFQURfSUQiLCAiU0VNQVRUUlNfVEhSRUFEX05BTUUiLCAiU0VNQVRUUlNfQ09ERV9GVU5DVElPTiIsICJTRU1BVFRSU19DT0RFX05BTUVTUEFDRSIsICJTRU1BVFRSU19DT0RFX0ZJTEVQQVRIIiwgIlNFTUFUVFJTX0NPREVfTElORU5PIiwgIlNFTUFUVFJTX0hUVFBfTUVUSE9EIiwgIlNFTUFUVFJTX0hUVFBfVVJMIiwgIlNFTUFUVFJTX0hUVFBfVEFSR0VUIiwgIlNFTUFUVFJTX0hUVFBfSE9TVCIsICJTRU1BVFRSU19IVFRQX1NDSEVNRSIsICJTRU1BVFRSU19IVFRQX1NUQVRVU19DT0RFIiwgIlNFTUFUVFJTX0hUVFBfRkxBVk9SIiwgIlNFTUFUVFJTX0hUVFBfVVNFUl9BR0VOVCIsICJTRU1BVFRSU19IVFRQX1JFUVVFU1RfQ09OVEVOVF9MRU5HVEgiLCAiU0VNQVRUUlNfSFRUUF9SRVFVRVNUX0NPTlRFTlRfTEVOR1RIX1VOQ09NUFJFU1NFRCIsICJTRU1BVFRSU19IVFRQX1JFU1BPTlNFX0NPTlRFTlRfTEVOR1RIIiwgIlNFTUFUVFJTX0hUVFBfUkVTUE9OU0VfQ09OVEVOVF9MRU5HVEhfVU5DT01QUkVTU0VEIiwgIlNFTUFUVFJTX0hUVFBfU0VSVkVSX05BTUUiLCAiU0VNQVRUUlNfSFRUUF9ST1VURSIsICJTRU1BVFRSU19IVFRQX0NMSUVOVF9JUCIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfVEFCTEVfTkFNRVMiLCAiU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0NPTlNVTUVEX0NBUEFDSVRZIiwgIlNFTUFUVFJTX0FXU19EWU5BTU9EQl9JVEVNX0NPTExFQ1RJT05fTUVUUklDUyIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfUFJPVklTSU9ORURfUkVBRF9DQVBBQ0lUWSIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfUFJPVklTSU9ORURfV1JJVEVfQ0FQQUNJVFkiLCAiU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0NPTlNJU1RFTlRfUkVBRCIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfUFJPSkVDVElPTiIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfTElNSVQiLCAiU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0FUVFJJQlVURVNfVE9fR0VUIiwgIlNFTUFUVFJTX0FXU19EWU5BTU9EQl9JTkRFWF9OQU1FIiwgIlNFTUFUVFJTX0FXU19EWU5BTU9EQl9TRUxFQ1QiLCAiU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0dMT0JBTF9TRUNPTkRBUllfSU5ERVhFUyIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfTE9DQUxfU0VDT05EQVJZX0lOREVYRVMiLCAiU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0VYQ0xVU0lWRV9TVEFSVF9UQUJMRSIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfVEFCTEVfQ09VTlQiLCAiU0VNQVRUUlNfQVdTX0RZTkFNT0RCX1NDQU5fRk9SV0FSRCIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfU0VHTUVOVCIsICJTRU1BVFRSU19BV1NfRFlOQU1PREJfVE9UQUxfU0VHTUVOVFMiLCAiU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0NPVU5UIiwgIlNFTUFUVFJTX0FXU19EWU5BTU9EQl9TQ0FOTkVEX0NPVU5UIiwgIlNFTUFUVFJTX0FXU19EWU5BTU9EQl9BVFRSSUJVVEVfREVGSU5JVElPTlMiLCAiU0VNQVRUUlNfQVdTX0RZTkFNT0RCX0dMT0JBTF9TRUNPTkRBUllfSU5ERVhfVVBEQVRFUyIsICJTRU1BVFRSU19NRVNTQUdJTkdfU1lTVEVNIiwgIlNFTUFUVFJTX01FU1NBR0lOR19ERVNUSU5BVElPTiIsICJTRU1BVFRSU19NRVNTQUdJTkdfREVTVElOQVRJT05fS0lORCIsICJTRU1BVFRSU19NRVNTQUdJTkdfVEVNUF9ERVNUSU5BVElPTiIsICJTRU1BVFRSU19NRVNTQUdJTkdfUFJPVE9DT0wiLCAiU0VNQVRUUlNfTUVTU0FHSU5HX1BST1RPQ09MX1ZFUlNJT04iLCAiU0VNQVRUUlNfTUVTU0FHSU5HX1VSTCIsICJTRU1BVFRSU19NRVNTQUdJTkdfTUVTU0FHRV9JRCIsICJTRU1BVFRSU19NRVNTQUdJTkdfQ09OVkVSU0FUSU9OX0lEIiwgIlNFTUFUVFJTX01FU1NBR0lOR19NRVNTQUdFX1BBWUxPQURfU0laRV9CWVRFUyIsICJTRU1BVFRSU19NRVNTQUdJTkdfTUVTU0FHRV9QQVlMT0FEX0NPTVBSRVNTRURfU0laRV9CWVRFUyIsICJTRU1BVFRSU19NRVNTQUdJTkdfT1BFUkFUSU9OIiwgIlNFTUFUVFJTX01FU1NBR0lOR19DT05TVU1FUl9JRCIsICJTRU1BVFRSU19NRVNTQUdJTkdfUkFCQklUTVFfUk9VVElOR19LRVkiLCAiU0VNQVRUUlNfTUVTU0FHSU5HX0tBRktBX01FU1NBR0VfS0VZIiwgIlNFTUFUVFJTX01FU1NBR0lOR19LQUZLQV9DT05TVU1FUl9HUk9VUCIsICJTRU1BVFRSU19NRVNTQUdJTkdfS0FGS0FfQ0xJRU5UX0lEIiwgIlNFTUFUVFJTX01FU1NBR0lOR19LQUZLQV9QQVJUSVRJT04iLCAiU0VNQVRUUlNfTUVTU0FHSU5HX0tBRktBX1RPTUJTVE9ORSIsICJTRU1BVFRSU19SUENfU1lTVEVNIiwgIlNFTUFUVFJTX1JQQ19TRVJWSUNFIiwgIlNFTUFUVFJTX1JQQ19NRVRIT0QiLCAiU0VNQVRUUlNfUlBDX0dSUENfU1RBVFVTX0NPREUiLCAiU0VNQVRUUlNfUlBDX0pTT05SUENfVkVSU0lPTiIsICJTRU1BVFRSU19SUENfSlNPTlJQQ19SRVFVRVNUX0lEIiwgIlNFTUFUVFJTX1JQQ19KU09OUlBDX0VSUk9SX0NPREUiLCAiU0VNQVRUUlNfUlBDX0pTT05SUENfRVJST1JfTUVTU0FHRSIsICJTRU1BVFRSU19NRVNTQUdFX1RZUEUiLCAiU0VNQVRUUlNfTUVTU0FHRV9JRCIsICJTRU1BVFRSU19NRVNTQUdFX0NPTVBSRVNTRURfU0laRSIsICJTRU1BVFRSU19NRVNTQUdFX1VOQ09NUFJFU1NFRF9TSVpFIiwgIlNlbWFudGljQXR0cmlidXRlcyIsICJUTVBfREJTWVNURU1WQUxVRVNfT1RIRVJfU1FMIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19NU1NRTCIsICJUTVBfREJTWVNURU1WQUxVRVNfTVlTUUwiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX09SQUNMRSIsICJUTVBfREJTWVNURU1WQUxVRVNfREIyIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19QT1NUR1JFU1FMIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19SRURTSElGVCIsICJUTVBfREJTWVNURU1WQUxVRVNfSElWRSIsICJUTVBfREJTWVNURU1WQUxVRVNfQ0xPVURTQ0FQRSIsICJUTVBfREJTWVNURU1WQUxVRVNfSFNRTERCIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19QUk9HUkVTUyIsICJUTVBfREJTWVNURU1WQUxVRVNfTUFYREIiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX0hBTkFEQiIsICJUTVBfREJTWVNURU1WQUxVRVNfSU5HUkVTIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19GSVJTVFNRTCIsICJUTVBfREJTWVNURU1WQUxVRVNfRURCIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19DQUNIRSIsICJUTVBfREJTWVNURU1WQUxVRVNfQURBQkFTIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19GSVJFQklSRCIsICJUTVBfREJTWVNURU1WQUxVRVNfREVSQlkiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX0ZJTEVNQUtFUiIsICJUTVBfREJTWVNURU1WQUxVRVNfSU5GT1JNSVgiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX0lOU1RBTlREQiIsICJUTVBfREJTWVNURU1WQUxVRVNfSU5URVJCQVNFIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19NQVJJQURCIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19ORVRFWlpBIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19QRVJWQVNJVkUiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX1BPSU5UQkFTRSIsICJUTVBfREJTWVNURU1WQUxVRVNfU1FMSVRFIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19TWUJBU0UiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX1RFUkFEQVRBIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19WRVJUSUNBIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19IMiIsICJUTVBfREJTWVNURU1WQUxVRVNfQ09MREZVU0lPTiIsICJUTVBfREJTWVNURU1WQUxVRVNfQ0FTU0FORFJBIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19IQkFTRSIsICJUTVBfREJTWVNURU1WQUxVRVNfTU9OR09EQiIsICJUTVBfREJTWVNURU1WQUxVRVNfUkVESVMiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX0NPVUNIQkFTRSIsICJUTVBfREJTWVNURU1WQUxVRVNfQ09VQ0hEQiIsICJUTVBfREJTWVNURU1WQUxVRVNfQ09TTU9TREIiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX0RZTkFNT0RCIiwgIlRNUF9EQlNZU1RFTVZBTFVFU19ORU80SiIsICJUTVBfREJTWVNURU1WQUxVRVNfR0VPREUiLCAiVE1QX0RCU1lTVEVNVkFMVUVTX0VMQVNUSUNTRUFSQ0giLCAiVE1QX0RCU1lTVEVNVkFMVUVTX01FTUNBQ0hFRCIsICJUTVBfREJTWVNURU1WQUxVRVNfQ09DS1JPQUNIREIiLCAiREJTWVNURU1WQUxVRVNfT1RIRVJfU1FMIiwgIkRCU1lTVEVNVkFMVUVTX01TU1FMIiwgIkRCU1lTVEVNVkFMVUVTX01ZU1FMIiwgIkRCU1lTVEVNVkFMVUVTX09SQUNMRSIsICJEQlNZU1RFTVZBTFVFU19EQjIiLCAiREJTWVNURU1WQUxVRVNfUE9TVEdSRVNRTCIsICJEQlNZU1RFTVZBTFVFU19SRURTSElGVCIsICJEQlNZU1RFTVZBTFVFU19ISVZFIiwgIkRCU1lTVEVNVkFMVUVTX0NMT1VEU0NBUEUiLCAiREJTWVNURU1WQUxVRVNfSFNRTERCIiwgIkRCU1lTVEVNVkFMVUVTX1BST0dSRVNTIiwgIkRCU1lTVEVNVkFMVUVTX01BWERCIiwgIkRCU1lTVEVNVkFMVUVTX0hBTkFEQiIsICJEQlNZU1RFTVZBTFVFU19JTkdSRVMiLCAiREJTWVNURU1WQUxVRVNfRklSU1RTUUwiLCAiREJTWVNURU1WQUxVRVNfRURCIiwgIkRCU1lTVEVNVkFMVUVTX0NBQ0hFIiwgIkRCU1lTVEVNVkFMVUVTX0FEQUJBUyIsICJEQlNZU1RFTVZBTFVFU19GSVJFQklSRCIsICJEQlNZU1RFTVZBTFVFU19ERVJCWSIsICJEQlNZU1RFTVZBTFVFU19GSUxFTUFLRVIiLCAiREJTWVNURU1WQUxVRVNfSU5GT1JNSVgiLCAiREJTWVNURU1WQUxVRVNfSU5TVEFOVERCIiwgIkRCU1lTVEVNVkFMVUVTX0lOVEVSQkFTRSIsICJEQlNZU1RFTVZBTFVFU19NQVJJQURCIiwgIkRCU1lTVEVNVkFMVUVTX05FVEVaWkEiLCAiREJTWVNURU1WQUxVRVNfUEVSVkFTSVZFIiwgIkRCU1lTVEVNVkFMVUVTX1BPSU5UQkFTRSIsICJEQlNZU1RFTVZBTFVFU19TUUxJVEUiLCAiREJTWVNURU1WQUxVRVNfU1lCQVNFIiwgIkRCU1lTVEVNVkFMVUVTX1RFUkFEQVRBIiwgIkRCU1lTVEVNVkFMVUVTX1ZFUlRJQ0EiLCAiREJTWVNURU1WQUxVRVNfSDIiLCAiREJTWVNURU1WQUxVRVNfQ09MREZVU0lPTiIsICJEQlNZU1RFTVZBTFVFU19DQVNTQU5EUkEiLCAiREJTWVNURU1WQUxVRVNfSEJBU0UiLCAiREJTWVNURU1WQUxVRVNfTU9OR09EQiIsICJEQlNZU1RFTVZBTFVFU19SRURJUyIsICJEQlNZU1RFTVZBTFVFU19DT1VDSEJBU0UiLCAiREJTWVNURU1WQUxVRVNfQ09VQ0hEQiIsICJEQlNZU1RFTVZBTFVFU19DT1NNT1NEQiIsICJEQlNZU1RFTVZBTFVFU19EWU5BTU9EQiIsICJEQlNZU1RFTVZBTFVFU19ORU80SiIsICJEQlNZU1RFTVZBTFVFU19HRU9ERSIsICJEQlNZU1RFTVZBTFVFU19FTEFTVElDU0VBUkNIIiwgIkRCU1lTVEVNVkFMVUVTX01FTUNBQ0hFRCIsICJEQlNZU1RFTVZBTFVFU19DT0NLUk9BQ0hEQiIsICJEYlN5c3RlbVZhbHVlcyIsICJUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0FMTCIsICJUTVBfREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0VBQ0hfUVVPUlVNIiwgIlRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfUVVPUlVNIiwgIlRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfTE9DQUxfUVVPUlVNIiwgIlRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfT05FIiwgIlRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfVFdPIiwgIlRNUF9EQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfVEhSRUUiLCAiVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19MT0NBTF9PTkUiLCAiVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19BTlkiLCAiVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19TRVJJQUwiLCAiVE1QX0RCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19MT0NBTF9TRVJJQUwiLCAiREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0FMTCIsICJEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfRUFDSF9RVU9SVU0iLCAiREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1FVT1JVTSIsICJEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfTE9DQUxfUVVPUlVNIiwgIkRCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19PTkUiLCAiREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX1RXTyIsICJEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfVEhSRUUiLCAiREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0xPQ0FMX09ORSIsICJEQkNBU1NBTkRSQUNPTlNJU1RFTkNZTEVWRUxWQUxVRVNfQU5ZIiwgIkRCQ0FTU0FORFJBQ09OU0lTVEVOQ1lMRVZFTFZBTFVFU19TRVJJQUwiLCAiREJDQVNTQU5EUkFDT05TSVNURU5DWUxFVkVMVkFMVUVTX0xPQ0FMX1NFUklBTCIsICJEYkNhc3NhbmRyYUNvbnNpc3RlbmN5TGV2ZWxWYWx1ZXMiLCAiVE1QX0ZBQVNUUklHR0VSVkFMVUVTX0RBVEFTT1VSQ0UiLCAiVE1QX0ZBQVNUUklHR0VSVkFMVUVTX0hUVFAiLCAiVE1QX0ZBQVNUUklHR0VSVkFMVUVTX1BVQlNVQiIsICJUTVBfRkFBU1RSSUdHRVJWQUxVRVNfVElNRVIiLCAiVE1QX0ZBQVNUUklHR0VSVkFMVUVTX09USEVSIiwgIkZBQVNUUklHR0VSVkFMVUVTX0RBVEFTT1VSQ0UiLCAiRkFBU1RSSUdHRVJWQUxVRVNfSFRUUCIsICJGQUFTVFJJR0dFUlZBTFVFU19QVUJTVUIiLCAiRkFBU1RSSUdHRVJWQUxVRVNfVElNRVIiLCAiRkFBU1RSSUdHRVJWQUxVRVNfT1RIRVIiLCAiRmFhc1RyaWdnZXJWYWx1ZXMiLCAiVE1QX0ZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19JTlNFUlQiLCAiVE1QX0ZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19FRElUIiwgIlRNUF9GQUFTRE9DVU1FTlRPUEVSQVRJT05WQUxVRVNfREVMRVRFIiwgIkZBQVNET0NVTUVOVE9QRVJBVElPTlZBTFVFU19JTlNFUlQiLCAiRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX0VESVQiLCAiRkFBU0RPQ1VNRU5UT1BFUkFUSU9OVkFMVUVTX0RFTEVURSIsICJGYWFzRG9jdW1lbnRPcGVyYXRpb25WYWx1ZXMiLCAiVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQUxJQkFCQV9DTE9VRCIsICJUTVBfRkFBU0lOVk9LRURQUk9WSURFUlZBTFVFU19BV1MiLCAiVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQVpVUkUiLCAiVE1QX0ZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfR0NQIiwgIkZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfQUxJQkFCQV9DTE9VRCIsICJGQUFTSU5WT0tFRFBST1ZJREVSVkFMVUVTX0FXUyIsICJGQUFTSU5WT0tFRFBST1ZJREVSVkFMVUVTX0FaVVJFIiwgIkZBQVNJTlZPS0VEUFJPVklERVJWQUxVRVNfR0NQIiwgIkZhYXNJbnZva2VkUHJvdmlkZXJWYWx1ZXMiLCAiVE1QX05FVFRSQU5TUE9SVFZBTFVFU19JUF9UQ1AiLCAiVE1QX05FVFRSQU5TUE9SVFZBTFVFU19JUF9VRFAiLCAiVE1QX05FVFRSQU5TUE9SVFZBTFVFU19JUCIsICJUTVBfTkVUVFJBTlNQT1JUVkFMVUVTX1VOSVgiLCAiVE1QX05FVFRSQU5TUE9SVFZBTFVFU19QSVBFIiwgIlRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfSU5QUk9DIiwgIlRNUF9ORVRUUkFOU1BPUlRWQUxVRVNfT1RIRVIiLCAiTkVUVFJBTlNQT1JUVkFMVUVTX0lQX1RDUCIsICJORVRUUkFOU1BPUlRWQUxVRVNfSVBfVURQIiwgIk5FVFRSQU5TUE9SVFZBTFVFU19JUCIsICJORVRUUkFOU1BPUlRWQUxVRVNfVU5JWCIsICJORVRUUkFOU1BPUlRWQUxVRVNfUElQRSIsICJORVRUUkFOU1BPUlRWQUxVRVNfSU5QUk9DIiwgIk5FVFRSQU5TUE9SVFZBTFVFU19PVEhFUiIsICJOZXRUcmFuc3BvcnRWYWx1ZXMiLCAiVE1QX05FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19XSUZJIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfV0lSRUQiLCAiVE1QX05FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19DRUxMIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfVU5BVkFJTEFCTEUiLCAiVE1QX05FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19VTktOT1dOIiwgIk5FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19XSUZJIiwgIk5FVEhPU1RDT05ORUNUSU9OVFlQRVZBTFVFU19XSVJFRCIsICJORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfQ0VMTCIsICJORVRIT1NUQ09OTkVDVElPTlRZUEVWQUxVRVNfVU5BVkFJTEFCTEUiLCAiTkVUSE9TVENPTk5FQ1RJT05UWVBFVkFMVUVTX1VOS05PV04iLCAiTmV0SG9zdENvbm5lY3Rpb25UeXBlVmFsdWVzIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfR1BSUyIsICJUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VER0UiLCAiVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19VTVRTIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfQ0RNQSIsICJUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fMCIsICJUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fQSIsICJUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0NETUEyMDAwXzFYUlRUIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSFNEUEEiLCAiVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1VQQSIsICJUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTUEEiLCAiVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19JREVOIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRVZET19CIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRUhSUEQiLCAiVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1BBUCIsICJUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0dTTSIsICJUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX1REX1NDRE1BIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSVdMQU4iLCAiVE1QX05FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19OUiIsICJUTVBfTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX05STlNBIiwgIlRNUF9ORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFX0NBIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19HUFJTIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19FREdFIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19VTVRTIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19DRE1BIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19FVkRPXzAiLCAiTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VWRE9fQSIsICJORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfQ0RNQTIwMDBfMVhSVFQiLCAiTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0hTRFBBIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1VQQSIsICJORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSFNQQSIsICJORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSURFTiIsICJORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfRVZET19CIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19MVEUiLCAiTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX0VIUlBEIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19IU1BBUCIsICJORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfR1NNIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19URF9TQ0RNQSIsICJORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfSVdMQU4iLCAiTkVUSE9TVENPTk5FQ1RJT05TVUJUWVBFVkFMVUVTX05SIiwgIk5FVEhPU1RDT05ORUNUSU9OU1VCVFlQRVZBTFVFU19OUk5TQSIsICJORVRIT1NUQ09OTkVDVElPTlNVQlRZUEVWQUxVRVNfTFRFX0NBIiwgIk5ldEhvc3RDb25uZWN0aW9uU3VidHlwZVZhbHVlcyIsICJUTVBfSFRUUEZMQVZPUlZBTFVFU19IVFRQXzFfMCIsICJUTVBfSFRUUEZMQVZPUlZBTFVFU19IVFRQXzFfMSIsICJUTVBfSFRUUEZMQVZPUlZBTFVFU19IVFRQXzJfMCIsICJUTVBfSFRUUEZMQVZPUlZBTFVFU19TUERZIiwgIlRNUF9IVFRQRkxBVk9SVkFMVUVTX1FVSUMiLCAiSFRUUEZMQVZPUlZBTFVFU19IVFRQXzFfMCIsICJIVFRQRkxBVk9SVkFMVUVTX0hUVFBfMV8xIiwgIkhUVFBGTEFWT1JWQUxVRVNfSFRUUF8yXzAiLCAiSFRUUEZMQVZPUlZBTFVFU19TUERZIiwgIkhUVFBGTEFWT1JWQUxVRVNfUVVJQyIsICJIdHRwRmxhdm9yVmFsdWVzIiwgIlRNUF9NRVNTQUdJTkdERVNUSU5BVElPTktJTkRWQUxVRVNfUVVFVUUiLCAiVE1QX01FU1NBR0lOR0RFU1RJTkFUSU9OS0lORFZBTFVFU19UT1BJQyIsICJNRVNTQUdJTkdERVNUSU5BVElPTktJTkRWQUxVRVNfUVVFVUUiLCAiTUVTU0FHSU5HREVTVElOQVRJT05LSU5EVkFMVUVTX1RPUElDIiwgIk1lc3NhZ2luZ0Rlc3RpbmF0aW9uS2luZFZhbHVlcyIsICJUTVBfTUVTU0FHSU5HT1BFUkFUSU9OVkFMVUVTX1JFQ0VJVkUiLCAiVE1QX01FU1NBR0lOR09QRVJBVElPTlZBTFVFU19QUk9DRVNTIiwgIk1FU1NBR0lOR09QRVJBVElPTlZBTFVFU19SRUNFSVZFIiwgIk1FU1NBR0lOR09QRVJBVElPTlZBTFVFU19QUk9DRVNTIiwgIk1lc3NhZ2luZ09wZXJhdGlvblZhbHVlcyIsICJUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfT0siLCAiVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0NBTkNFTExFRCIsICJUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5LTk9XTiIsICJUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfSU5WQUxJRF9BUkdVTUVOVCIsICJUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfREVBRExJTkVfRVhDRUVERUQiLCAiVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX05PVF9GT1VORCIsICJUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfQUxSRUFEWV9FWElTVFMiLCAiVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1BFUk1JU1NJT05fREVOSUVEIiwgIlRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19SRVNPVVJDRV9FWEhBVVNURUQiLCAiVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0ZBSUxFRF9QUkVDT05ESVRJT04iLCAiVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0FCT1JURUQiLCAiVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX09VVF9PRl9SQU5HRSIsICJUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5JTVBMRU1FTlRFRCIsICJUTVBfUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfSU5URVJOQUwiLCAiVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1VOQVZBSUxBQkxFIiwgIlRNUF9SUENHUlBDU1RBVFVTQ09ERVZBTFVFU19EQVRBX0xPU1MiLCAiVE1QX1JQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1VOQVVUSEVOVElDQVRFRCIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19PSyIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19DQU5DRUxMRUQiLCAiUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfVU5LTk9XTiIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19JTlZBTElEX0FSR1VNRU5UIiwgIlJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0RFQURMSU5FX0VYQ0VFREVEIiwgIlJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX05PVF9GT1VORCIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19BTFJFQURZX0VYSVNUUyIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19QRVJNSVNTSU9OX0RFTklFRCIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19SRVNPVVJDRV9FWEhBVVNURUQiLCAiUlBDR1JQQ1NUQVRVU0NPREVWQUxVRVNfRkFJTEVEX1BSRUNPTkRJVElPTiIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19BQk9SVEVEIiwgIlJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX09VVF9PRl9SQU5HRSIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTklNUExFTUVOVEVEIiwgIlJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0lOVEVSTkFMIiwgIlJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX1VOQVZBSUxBQkxFIiwgIlJQQ0dSUENTVEFUVVNDT0RFVkFMVUVTX0RBVEFfTE9TUyIsICJSUENHUlBDU1RBVFVTQ09ERVZBTFVFU19VTkFVVEhFTlRJQ0FURUQiLCAiUnBjR3JwY1N0YXR1c0NvZGVWYWx1ZXMiLCAiVE1QX01FU1NBR0VUWVBFVkFMVUVTX1NFTlQiLCAiVE1QX01FU1NBR0VUWVBFVkFMVUVTX1JFQ0VJVkVEIiwgIk1FU1NBR0VUWVBFVkFMVUVTX1NFTlQiLCAiTUVTU0FHRVRZUEVWQUxVRVNfUkVDRUlWRUQiLCAiTWVzc2FnZVR5cGVWYWx1ZXMiLCAiTkFOT1NFQ09ORF9ESUdJVFMiLCAiTkFOT1NFQ09ORF9ESUdJVFNfSU5fTUlMTElTIiwgIk1JTExJU0VDT05EU19UT19OQU5PU0VDT05EUyIsICJTRUNPTkRfVE9fTkFOT1NFQ09ORFMiLCAibWlsbGlzVG9IclRpbWUiLCAiZXBvY2hNaWxsaXMiLCAiZXBvY2hTZWNvbmRzIiwgInNlY29uZHMiLCAibmFub3MiLCAiZ2V0VGltZU9yaWdpbiIsICJ0aW1lT3JpZ2luIiwgInBlcmYiLCAiaHJUaW1lIiwgInBlcmZvcm1hbmNlTm93IiwgIm5vdyIsICJhZGRIclRpbWVzIiwgInRpbWVJbnB1dFRvSHJUaW1lIiwgInRpbWUiLCAiaXNUaW1lSW5wdXRIclRpbWUiLCAiaHJUaW1lRHVyYXRpb24iLCAic3RhcnRUaW1lIiwgImVuZFRpbWUiLCAiaHJUaW1lVG9UaW1lU3RhbXAiLCAicHJlY2lzaW9uIiwgInRtcCIsICJuYW5vU3RyaW5nIiwgImRhdGUiLCAiaHJUaW1lVG9OYW5vc2Vjb25kcyIsICJoclRpbWVUb01pbGxpc2Vjb25kcyIsICJoclRpbWVUb01pY3Jvc2Vjb25kcyIsICJpc1RpbWVJbnB1dCIsICJ0aW1lMSIsICJ0aW1lMiIsICJvdXQiLCAiX192YWx1ZXMiLCAidXJsTWF0Y2hlcyIsICJ1cmwiLCAidXJsVG9NYXRjaCIsICJpc1VybElnbm9yZWQiLCAiaWdub3JlZFVybHMiLCAiaWdub3JlZFVybHNfMSIsICJpZ25vcmVkVXJsc18xXzEiLCAiaWdub3JlVXJsIl0KfQo=
|