dgeoutils 2.4.52 → 2.5.0

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.
@@ -1119,6 +1119,13 @@
1119
1119
  enumerable: false,
1120
1120
  configurable: true
1121
1121
  });
1122
+ Object.defineProperty(DPolygon.prototype, "fullLengthLatLon", {
1123
+ get: function () {
1124
+ return this.clone().open().perimeterLatLon;
1125
+ },
1126
+ enumerable: false,
1127
+ configurable: true
1128
+ });
1122
1129
  Object.defineProperty(DPolygon.prototype, "perimeter", {
1123
1130
  get: function () {
1124
1131
  var e_4, _a;
@@ -1141,9 +1148,31 @@
1141
1148
  enumerable: false,
1142
1149
  configurable: true
1143
1150
  });
1144
- Object.defineProperty(DPolygon.prototype, "area", {
1151
+ Object.defineProperty(DPolygon.prototype, "perimeterLatLon", {
1145
1152
  get: function () {
1146
1153
  var e_5, _a;
1154
+ var p = 0;
1155
+ try {
1156
+ for (var _b = __values$2(this.loopPointsGenerator()()), _c = _b.next(); !_c.done; _c = _b.next()) {
1157
+ var _d = __read$4(_c.value, 2), p1 = _d[0], p2 = _d[1];
1158
+ p += p1.distanceLatLon(p2);
1159
+ }
1160
+ }
1161
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
1162
+ finally {
1163
+ try {
1164
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1165
+ }
1166
+ finally { if (e_5) throw e_5.error; }
1167
+ }
1168
+ return p;
1169
+ },
1170
+ enumerable: false,
1171
+ configurable: true
1172
+ });
1173
+ Object.defineProperty(DPolygon.prototype, "area", {
1174
+ get: function () {
1175
+ var e_6, _a;
1147
1176
  var sum = 0;
1148
1177
  try {
1149
1178
  for (var _b = __values$2(this.deintersection.loopPointsGenerator()()), _c = _b.next(); !_c.done; _c = _b.next()) {
@@ -1151,12 +1180,12 @@
1151
1180
  sum += x * b - y * a;
1152
1181
  }
1153
1182
  }
1154
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
1183
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
1155
1184
  finally {
1156
1185
  try {
1157
1186
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1158
1187
  }
1159
- finally { if (e_5) throw e_5.error; }
1188
+ finally { if (e_6) throw e_6.error; }
1160
1189
  }
1161
1190
  return Math.abs(sum / 2) - this.holes.reduce(function (a, hole) { return a + hole.area; }, 0);
1162
1191
  },
@@ -1199,7 +1228,7 @@
1199
1228
  });
1200
1229
  Object.defineProperty(DPolygon.prototype, "deintersection", {
1201
1230
  get: function () {
1202
- var e_6, _a;
1231
+ var e_7, _a;
1203
1232
  var p = this.clone().close();
1204
1233
  var store = {};
1205
1234
  for (var i = 0; i < p.length - 1; i++) {
@@ -1245,12 +1274,12 @@
1245
1274
  }
1246
1275
  }
1247
1276
  }
1248
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
1277
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
1249
1278
  finally {
1250
1279
  try {
1251
1280
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1252
1281
  }
1253
- finally { if (e_6) throw e_6.error; }
1282
+ finally { if (e_7) throw e_7.error; }
1254
1283
  }
1255
1284
  return p;
1256
1285
  },
@@ -1287,7 +1316,7 @@
1287
1316
  });
1288
1317
  Object.defineProperty(DPolygon.prototype, "minAreaRectangle", {
1289
1318
  get: function () {
1290
- var e_7, _a, e_8, _b;
1319
+ var e_8, _a, e_9, _b;
1291
1320
  var p = this.convex;
1292
1321
  var resultPolygon = new DPolygon();
1293
1322
  var resultArea = Infinity;
@@ -1300,7 +1329,7 @@
1300
1329
  var maxHeight = 0;
1301
1330
  var maxHeightPoint = null;
1302
1331
  try {
1303
- for (var _f = (e_8 = void 0, __values$2(p.loopPointsGenerator()())), _g = _f.next(); !_g.done; _g = _f.next()) {
1332
+ for (var _f = (e_9 = void 0, __values$2(p.loopPointsGenerator()())), _g = _f.next(); !_g.done; _g = _f.next()) {
1304
1333
  var _h = __read$4(_g.value, 4), z = _h[0], i = _h[3];
1305
1334
  var p1 = l.findPoint(l.findPerpendicular(z));
1306
1335
  var h = p1.distance(z);
@@ -1319,12 +1348,12 @@
1319
1348
  }
1320
1349
  }
1321
1350
  }
1322
- catch (e_8_1) { e_8 = { error: e_8_1 }; }
1351
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
1323
1352
  finally {
1324
1353
  try {
1325
1354
  if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
1326
1355
  }
1327
- finally { if (e_8) throw e_8.error; }
1356
+ finally { if (e_9) throw e_9.error; }
1328
1357
  }
1329
1358
  if (!maxWidthPoint1 || !maxWidthPoint2 || !maxHeightPoint) {
1330
1359
  continue;
@@ -1344,12 +1373,12 @@
1344
1373
  }
1345
1374
  }
1346
1375
  }
1347
- catch (e_7_1) { e_7 = { error: e_7_1 }; }
1376
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
1348
1377
  finally {
1349
1378
  try {
1350
1379
  if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
1351
1380
  }
1352
- finally { if (e_7) throw e_7.error; }
1381
+ finally { if (e_8) throw e_8.error; }
1353
1382
  }
1354
1383
  return resultPolygon;
1355
1384
  },
@@ -1402,7 +1431,7 @@
1402
1431
  });
1403
1432
  Object.defineProperty(DPolygon.prototype, "isClockwise", {
1404
1433
  get: function () {
1405
- var e_9, _a;
1434
+ var e_10, _a;
1406
1435
  var sum = 0;
1407
1436
  try {
1408
1437
  for (var _b = __values$2(this.clone().close()
@@ -1411,12 +1440,12 @@
1411
1440
  sum += (a - x) * (b + y);
1412
1441
  }
1413
1442
  }
1414
- catch (e_9_1) { e_9 = { error: e_9_1 }; }
1443
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
1415
1444
  finally {
1416
1445
  try {
1417
1446
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1418
1447
  }
1419
- finally { if (e_9) throw e_9.error; }
1448
+ finally { if (e_10) throw e_10.error; }
1420
1449
  }
1421
1450
  return sum < 0;
1422
1451
  },
@@ -1446,7 +1475,7 @@
1446
1475
  return this.pPoints.reduce(f, v);
1447
1476
  };
1448
1477
  DPolygon.prototype.intersection = function (l, includeOnly) {
1449
- var e_10, _a;
1478
+ var e_11, _a;
1450
1479
  if (includeOnly === void 0) { includeOnly = false; }
1451
1480
  var res = [];
1452
1481
  try {
@@ -1458,12 +1487,12 @@
1458
1487
  }
1459
1488
  }
1460
1489
  }
1461
- catch (e_10_1) { e_10 = { error: e_10_1 }; }
1490
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
1462
1491
  finally {
1463
1492
  try {
1464
1493
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1465
1494
  }
1466
- finally { if (e_10) throw e_10.error; }
1495
+ finally { if (e_11) throw e_11.error; }
1467
1496
  }
1468
1497
  return res;
1469
1498
  };
@@ -1669,7 +1698,7 @@
1669
1698
  ctx.globalCompositeOperation = old;
1670
1699
  };
1671
1700
  DPolygon.prototype.contain = function (p, isBorderInside) {
1672
- var e_11, _a;
1701
+ var e_12, _a;
1673
1702
  if (isBorderInside === void 0) { isBorderInside = false; }
1674
1703
  var simpleInclude = this.simpleInclude(p);
1675
1704
  if (!simpleInclude) {
@@ -1695,12 +1724,12 @@
1695
1724
  }
1696
1725
  }
1697
1726
  }
1698
- catch (e_11_1) { e_11 = { error: e_11_1 }; }
1727
+ catch (e_12_1) { e_12 = { error: e_12_1 }; }
1699
1728
  finally {
1700
1729
  try {
1701
1730
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1702
1731
  }
1703
- finally { if (e_11) throw e_11.error; }
1732
+ finally { if (e_12) throw e_12.error; }
1704
1733
  }
1705
1734
  var eps = Math.PI / 10000;
1706
1735
  var absTotalFi = Math.abs(totalFi);
@@ -1713,7 +1742,7 @@
1713
1742
  throw new Error('contains2 faild');
1714
1743
  };
1715
1744
  DPolygon.prototype.onBorder = function (p) {
1716
- var e_12, _a;
1745
+ var e_13, _a;
1717
1746
  var simpleInclude = this.simpleInclude(p);
1718
1747
  if (simpleInclude) {
1719
1748
  var poly = this.deintersection;
@@ -1730,12 +1759,12 @@
1730
1759
  }
1731
1760
  }
1732
1761
  }
1733
- catch (e_12_1) { e_12 = { error: e_12_1 }; }
1762
+ catch (e_13_1) { e_13 = { error: e_13_1 }; }
1734
1763
  finally {
1735
1764
  try {
1736
1765
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1737
1766
  }
1738
- finally { if (e_12) throw e_12.error; }
1767
+ finally { if (e_13) throw e_13.error; }
1739
1768
  }
1740
1769
  }
1741
1770
  return false;
@@ -1858,7 +1887,7 @@
1858
1887
  };
1859
1888
  };
1860
1889
  DPolygon.prototype.divideToPieces = function (piecesCount, withAltitude) {
1861
- var e_13, _a;
1890
+ var e_14, _a;
1862
1891
  if (withAltitude === void 0) { withAltitude = false; }
1863
1892
  var fullLength = this.fullLength;
1864
1893
  var pieceLength = fullLength / piecesCount;
@@ -1893,17 +1922,17 @@
1893
1922
  _loop_3(p1, p2, i);
1894
1923
  }
1895
1924
  }
1896
- catch (e_13_1) { e_13 = { error: e_13_1 }; }
1925
+ catch (e_14_1) { e_14 = { error: e_14_1 }; }
1897
1926
  finally {
1898
1927
  try {
1899
1928
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1900
1929
  }
1901
- finally { if (e_13) throw e_13.error; }
1930
+ finally { if (e_14) throw e_14.error; }
1902
1931
  }
1903
1932
  return this;
1904
1933
  };
1905
1934
  DPolygon.prototype.prepareToFastSearch = function () {
1906
- var e_14, _a;
1935
+ var e_15, _a;
1907
1936
  this.searchStore = {};
1908
1937
  try {
1909
1938
  for (var _b = __values$2(this.points), _c = _b.next(); !_c.done; _c = _b.next()) {
@@ -1917,12 +1946,12 @@
1917
1946
  this.searchStore[x][y][z || 'undefined'] = true;
1918
1947
  }
1919
1948
  }
1920
- catch (e_14_1) { e_14 = { error: e_14_1 }; }
1949
+ catch (e_15_1) { e_15 = { error: e_15_1 }; }
1921
1950
  finally {
1922
1951
  try {
1923
1952
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
1924
1953
  }
1925
- finally { if (e_14) throw e_14.error; }
1954
+ finally { if (e_15) throw e_15.error; }
1926
1955
  }
1927
1956
  };
1928
1957
  DPolygon.prototype.fastHas = function (_a) {
@@ -1942,8 +1971,8 @@
1942
1971
  get: function () {
1943
1972
  var polygon = this;
1944
1973
  return function () {
1945
- var r, _a, _b, p, e_15_1;
1946
- var e_15, _c;
1974
+ var r, _a, _b, p, e_16_1;
1975
+ var e_16, _c;
1947
1976
  return __generator(this, function (_d) {
1948
1977
  switch (_d.label) {
1949
1978
  case 0:
@@ -1967,14 +1996,14 @@
1967
1996
  return [3, 2];
1968
1997
  case 5: return [3, 8];
1969
1998
  case 6:
1970
- e_15_1 = _d.sent();
1971
- e_15 = { error: e_15_1 };
1999
+ e_16_1 = _d.sent();
2000
+ e_16 = { error: e_16_1 };
1972
2001
  return [3, 8];
1973
2002
  case 7:
1974
2003
  try {
1975
2004
  if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
1976
2005
  }
1977
- finally { if (e_15) throw e_15.error; }
2006
+ finally { if (e_16) throw e_16.error; }
1978
2007
  return [7];
1979
2008
  case 8: return [2, r.clone()];
1980
2009
  }
@@ -2006,12 +2035,12 @@
2006
2035
  return this.simpleLogicFunction(p, true, false);
2007
2036
  };
2008
2037
  DPolygon.prototype.smartUnion = function (p) {
2009
- var e_16, _a;
2038
+ var e_17, _a;
2010
2039
  var res = this.clone().simpleUnion(p);
2011
2040
  if (res) {
2012
2041
  var allHoles = __spreadArray$1(__spreadArray$1(__spreadArray$1([], __read$4(this.holes), false), __read$4(p.holes), false), __read$4(res.holes), false).map(function (h) { return h.clone(); });
2013
2042
  var _loop_4 = function (a) {
2014
- var e_17, _b;
2043
+ var e_18, _b;
2015
2044
  var _loop_5 = function (b) {
2016
2045
  if (a.equal(b)) {
2017
2046
  return "continue";
@@ -2023,17 +2052,17 @@
2023
2052
  }
2024
2053
  };
2025
2054
  try {
2026
- for (var allHoles_2 = (e_17 = void 0, __values$2(allHoles)), allHoles_2_1 = allHoles_2.next(); !allHoles_2_1.done; allHoles_2_1 = allHoles_2.next()) {
2055
+ for (var allHoles_2 = (e_18 = void 0, __values$2(allHoles)), allHoles_2_1 = allHoles_2.next(); !allHoles_2_1.done; allHoles_2_1 = allHoles_2.next()) {
2027
2056
  var b = allHoles_2_1.value;
2028
2057
  _loop_5(b);
2029
2058
  }
2030
2059
  }
2031
- catch (e_17_1) { e_17 = { error: e_17_1 }; }
2060
+ catch (e_18_1) { e_18 = { error: e_18_1 }; }
2032
2061
  finally {
2033
2062
  try {
2034
2063
  if (allHoles_2_1 && !allHoles_2_1.done && (_b = allHoles_2.return)) _b.call(allHoles_2);
2035
2064
  }
2036
- finally { if (e_17) throw e_17.error; }
2065
+ finally { if (e_18) throw e_18.error; }
2037
2066
  }
2038
2067
  };
2039
2068
  try {
@@ -2042,12 +2071,12 @@
2042
2071
  _loop_4(a);
2043
2072
  }
2044
2073
  }
2045
- catch (e_16_1) { e_16 = { error: e_16_1 }; }
2074
+ catch (e_17_1) { e_17 = { error: e_17_1 }; }
2046
2075
  finally {
2047
2076
  try {
2048
2077
  if (allHoles_1_1 && !allHoles_1_1.done && (_a = allHoles_1.return)) _a.call(allHoles_1);
2049
2078
  }
2050
- finally { if (e_16) throw e_16.error; }
2079
+ finally { if (e_17) throw e_17.error; }
2051
2080
  }
2052
2081
  res.holes = allHoles;
2053
2082
  }
@@ -2263,7 +2292,7 @@
2263
2292
  };
2264
2293
  };
2265
2294
  DPolygon.prototype.getBezierPoint = function (v) {
2266
- var e_18, _a;
2295
+ var e_19, _a;
2267
2296
  if (this.length === 1) {
2268
2297
  return this.first;
2269
2298
  }
@@ -2274,12 +2303,12 @@
2274
2303
  .scale(v));
2275
2304
  }
2276
2305
  }
2277
- catch (e_18_1) { e_18 = { error: e_18_1 }; }
2306
+ catch (e_19_1) { e_19 = { error: e_19_1 }; }
2278
2307
  finally {
2279
2308
  try {
2280
2309
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
2281
2310
  }
2282
- finally { if (e_18) throw e_18.error; }
2311
+ finally { if (e_19) throw e_19.error; }
2283
2312
  }
2284
2313
  this.pop();
2285
2314
  return this.getBezierPoint(v);
@@ -2338,7 +2367,7 @@
2338
2367
  return undefined;
2339
2368
  };
2340
2369
  DPolygon.prototype.simpleLogicFunction = function (p, unionThis, unionThat) {
2341
- var e_19, _a, e_20, _b, e_21, _c, e_22, _d;
2370
+ var e_20, _a, e_21, _b, e_22, _c, e_23, _d;
2342
2371
  var c = this.getJSTSGeometry(p, unionThis, unionThat);
2343
2372
  if (c) {
2344
2373
  var coordinates_1 = c.getCoordinates();
@@ -2378,31 +2407,31 @@
2378
2407
  }
2379
2408
  };
2380
2409
  try {
2381
- for (var result_2 = (e_20 = void 0, __values$2(result)), result_2_1 = result_2.next(); !result_2_1.done; result_2_1 = result_2.next()) {
2410
+ for (var result_2 = (e_21 = void 0, __values$2(result)), result_2_1 = result_2.next(); !result_2_1.done; result_2_1 = result_2.next()) {
2382
2411
  var r = result_2_1.value;
2383
2412
  var state_1 = _loop_6(r);
2384
2413
  if (state_1 === "break")
2385
2414
  break;
2386
2415
  }
2387
2416
  }
2388
- catch (e_20_1) { e_20 = { error: e_20_1 }; }
2417
+ catch (e_21_1) { e_21 = { error: e_21_1 }; }
2389
2418
  finally {
2390
2419
  try {
2391
2420
  if (result_2_1 && !result_2_1.done && (_b = result_2.return)) _b.call(result_2);
2392
2421
  }
2393
- finally { if (e_20) throw e_20.error; }
2422
+ finally { if (e_21) throw e_21.error; }
2394
2423
  }
2395
2424
  if (result.length < 2) {
2396
2425
  break;
2397
2426
  }
2398
2427
  }
2399
2428
  }
2400
- catch (e_19_1) { e_19 = { error: e_19_1 }; }
2429
+ catch (e_20_1) { e_20 = { error: e_20_1 }; }
2401
2430
  finally {
2402
2431
  try {
2403
2432
  if (result_1_1 && !result_1_1.done && (_a = result_1.return)) _a.call(result_1);
2404
2433
  }
2405
- finally { if (e_19) throw e_19.error; }
2434
+ finally { if (e_20) throw e_20.error; }
2406
2435
  }
2407
2436
  }
2408
2437
  result = result.filter(function (h) { return h.length > 2; }).map(function (h) { return h.close(); });
@@ -2421,31 +2450,31 @@
2421
2450
  }
2422
2451
  };
2423
2452
  try {
2424
- for (var result_4 = (e_22 = void 0, __values$2(result)), result_4_1 = result_4.next(); !result_4_1.done; result_4_1 = result_4.next()) {
2453
+ for (var result_4 = (e_23 = void 0, __values$2(result)), result_4_1 = result_4.next(); !result_4_1.done; result_4_1 = result_4.next()) {
2425
2454
  var r = result_4_1.value;
2426
2455
  var state_2 = _loop_7(r);
2427
2456
  if (state_2 === "break")
2428
2457
  break;
2429
2458
  }
2430
2459
  }
2431
- catch (e_22_1) { e_22 = { error: e_22_1 }; }
2460
+ catch (e_23_1) { e_23 = { error: e_23_1 }; }
2432
2461
  finally {
2433
2462
  try {
2434
2463
  if (result_4_1 && !result_4_1.done && (_d = result_4.return)) _d.call(result_4);
2435
2464
  }
2436
- finally { if (e_22) throw e_22.error; }
2465
+ finally { if (e_23) throw e_23.error; }
2437
2466
  }
2438
2467
  if (result.length < 2) {
2439
2468
  break;
2440
2469
  }
2441
2470
  }
2442
2471
  }
2443
- catch (e_21_1) { e_21 = { error: e_21_1 }; }
2472
+ catch (e_22_1) { e_22 = { error: e_22_1 }; }
2444
2473
  finally {
2445
2474
  try {
2446
2475
  if (result_3_1 && !result_3_1.done && (_c = result_3.return)) _c.call(result_3);
2447
2476
  }
2448
- finally { if (e_21) throw e_21.error; }
2477
+ finally { if (e_22) throw e_22.error; }
2449
2478
  }
2450
2479
  if (result.length === 0) {
2451
2480
  return null;
@@ -3063,6 +3092,23 @@
3063
3092
  var dy = p.y - this.y;
3064
3093
  return Math.sqrt(dx * dx + dy * dy);
3065
3094
  };
3095
+ DPoint.prototype.distanceLatLon = function (p) {
3096
+ checkFunction('distance')
3097
+ .checkArgument('this')
3098
+ .shouldBeDegree(this)
3099
+ .checkArgument('p')
3100
+ .shouldBeDegree(p);
3101
+ var d = p.clone().move(this.clone().minus())
3102
+ .degreeToRadians();
3103
+ var t1 = this.clone().degreeToRadians();
3104
+ var t2 = p.clone().degreeToRadians();
3105
+ var a = Math.pow(Math.sin(d.lat / 2), 2) +
3106
+ Math.cos(t1.lat) *
3107
+ Math.cos(t2.lat) *
3108
+ (Math.pow((Math.sin(d.lon / 2)), 2));
3109
+ var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
3110
+ return EARTH_RADIUS_IN_METERS * c;
3111
+ };
3066
3112
  DPoint.prototype.distance3d = function (p) {
3067
3113
  checkFunction('distance3d')
3068
3114
  .checkArgument('this')
@@ -4345,4 +4391,4 @@
4345
4391
  Object.defineProperty(exports, '__esModule', { value: true });
4346
4392
 
4347
4393
  }));
4348
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGdlb3V0aWxzLmpzIiwic291cmNlcyI6WyIuLi9lc20vdXRpbHMuanMiLCIuLi9lc20vRE51bWJlcnMuanMiLCIuLi9lc20vRFBvbHlnb25Mb29wLmpzIiwiLi4vZXNtL0RQb2x5Z29uLmpzIiwiLi4vZXNtL0RMaW5lLmpzIiwiLi4vZXNtL0RQb2ludC5qcyIsIi4uL2VzbS9EQ2lyY2xlLmpzIiwiLi4vZXNtL0Zhc3RTZWFyY2guanMiLCIuLi9lc20vVHJhY2VNYXRyaXguanMiLCIuLi9lc20vSW50ZXJwb2xhdGlvbk1hdHJpeC5qcyIsIi4uL2VzbS9EUGxhbmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fc3ByZWFkQXJyYXkgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSwgcGFjaykge1xuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59O1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xuaW1wb3J0IHsgRFBvaW50IH0gZnJvbSAnLi9EUG9pbnQnO1xuZXhwb3J0IHZhciBER2VvID0ge1xuICAgIERFQlVHOiBmYWxzZSxcbiAgICBwYXJzZUZvcm1hdDogJ3h5eidcbn07XG5leHBvcnQgdmFyIHdhcm4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIGlmIChER2VvLkRFQlVHKSB7XG4gICAgICAgIGNvbnNvbGUud2Fybi5hcHBseShjb25zb2xlLCBfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoYXJncyksIGZhbHNlKSk7XG4gICAgfVxufTtcbmV4cG9ydCB2YXIgaXNEZWZBbmROb3ROdWxsID0gZnVuY3Rpb24gKGEpIHsgcmV0dXJuIGEgIT0gdW5kZWZpbmVkOyB9O1xudmFyIGhvb2sgPSBmdW5jdGlvbiAoc2NvcGUpIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNjb3BlOyB9OyB9O1xudmFyIHNob3VsZEJlSW50ID0gZnVuY3Rpb24gKHNjb3BlLCBmdW5jTmFtZSwgYXJnTmFtZSkgeyByZXR1cm4gZnVuY3Rpb24gKHApIHtcbiAgICBpZiAoIXAuY2xvbmUoKS5yb3VuZCgpXG4gICAgICAgIC5lcXVhbChwKSkge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgYmUgSW50IVwiKSk7XG4gICAgfVxuICAgIHJldHVybiBzY29wZTtcbn07IH07XG52YXIgc2hvdWxkQmVVSW50ID0gZnVuY3Rpb24gKHNjb3BlLCBmdW5jTmFtZSwgYXJnTmFtZSkgeyByZXR1cm4gZnVuY3Rpb24gKHApIHtcbiAgICBpZiAoIXAuY2xvbmUoKS5yb3VuZCgpXG4gICAgICAgIC5lcXVhbChwKSB8fCAhcC5ndE9yRXF1YWwoRFBvaW50Lnplcm8oKSkpIHtcbiAgICAgICAgd2FybihcIlxcXCJcIi5jb25jYXQoZnVuY05hbWUsIFwiXFxcIiAtPiBcXFwiXCIpLmNvbmNhdChhcmdOYW1lLCBcIlxcXCIgc2hvdWxkIGJlIFVJbnQhXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlO1xufTsgfTtcbnZhciBzaG91bGRCZURlZ3JlZSA9IGZ1bmN0aW9uIChzY29wZSwgZnVuY05hbWUsIGFyZ05hbWUpIHsgcmV0dXJuIGZ1bmN0aW9uIChwKSB7XG4gICAgaWYgKCFwLmxpa2VXb3JsZEdlb2RldGljU3lzdGVtKSB7XG4gICAgICAgIHdhcm4oXCJcXFwiXCIuY29uY2F0KGZ1bmNOYW1lLCBcIlxcXCIgLT4gXFxcIlwiKS5jb25jYXQoYXJnTmFtZSwgXCJcXFwiIHNob3VsZCBiZSBkZWdyZWUhXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlO1xufTsgfTtcbnZhciBzaG91bGRCZVJhZGlhbnMgPSBmdW5jdGlvbiAoc2NvcGUsIGZ1bmNOYW1lLCBhcmdOYW1lKSB7IHJldHVybiBmdW5jdGlvbiAocCkge1xuICAgIGlmICghcC5saWtlUmFkaWFucykge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgYmUgcmFkaWFucyFcIikpO1xuICAgIH1cbiAgICByZXR1cm4gc2NvcGU7XG59OyB9O1xudmFyIHNob3VsZEV4aXN0ID0gZnVuY3Rpb24gKHNjb3BlLCBmdW5jTmFtZSwgYXJnTmFtZSkgeyByZXR1cm4gZnVuY3Rpb24gKHApIHtcbiAgICBpZiAoIWlzRGVmQW5kTm90TnVsbChwKSkge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgZXhpc3QhXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlO1xufTsgfTtcbnZhciBzaG91bGRCZU1ldGVycyA9IGZ1bmN0aW9uIChzY29wZSwgZnVuY05hbWUsIGFyZ05hbWUpIHsgcmV0dXJuIGZ1bmN0aW9uIChwKSB7XG4gICAgaWYgKCFwLmxpa2VQc2V1ZG9NZXJjYXRvcikge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgYmUgbWV0ZXJzIVwiKSk7XG4gICAgfVxuICAgIHJldHVybiBzY29wZTtcbn07IH07XG5leHBvcnQgdmFyIGNoZWNrRnVuY3Rpb24gPSBmdW5jdGlvbiAoZnVuY05hbWUpIHsgcmV0dXJuICh7XG4gICAgY2hlY2tBcmd1bWVudDogZnVuY3Rpb24gKGFyZ05hbWUpIHtcbiAgICAgICAgaWYgKCFER2VvLkRFQlVHKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNob3VsZEJlRGVncmVlOiBob29rKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNob3VsZEJlTWV0ZXJzOiBob29rKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNob3VsZEJlSW50OiBob29rKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNob3VsZEJlVUludDogaG9vayh0aGlzKSxcbiAgICAgICAgICAgICAgICBzaG91bGRCZVJhZGlhbnM6IGhvb2sodGhpcyksXG4gICAgICAgICAgICAgICAgc2hvdWxkRXhpc3Q6IGhvb2sodGhpcylcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNob3VsZEJlRGVncmVlOiBzaG91bGRCZURlZ3JlZSh0aGlzLCBmdW5jTmFtZSwgYXJnTmFtZSksXG4gICAgICAgICAgICBzaG91bGRCZU1ldGVyczogc2hvdWxkQmVNZXRlcnModGhpcywgZnVuY05hbWUsIGFyZ05hbWUpLFxuICAgICAgICAgICAgc2hvdWxkQmVJbnQ6IHNob3VsZEJlSW50KHRoaXMsIGZ1bmNOYW1lLCBhcmdOYW1lKSxcbiAgICAgICAgICAgIHNob3VsZEJlVUludDogc2hvdWxkQmVVSW50KHRoaXMsIGZ1bmNOYW1lLCBhcmdOYW1lKSxcbiAgICAgICAgICAgIHNob3VsZEJlUmFkaWFuczogc2hvdWxkQmVSYWRpYW5zKHRoaXMsIGZ1bmNOYW1lLCBhcmdOYW1lKSxcbiAgICAgICAgICAgIHNob3VsZEV4aXN0OiBzaG91bGRFeGlzdCh0aGlzLCBmdW5jTmFtZSwgYXJnTmFtZSlcbiAgICAgICAgfTtcbiAgICB9XG59KTsgfTtcbmV4cG9ydCB2YXIgY3JlYXRlQXJyYXkgPSBmdW5jdGlvbiAodiwgZmlsbFN5bWJvbCkge1xuICAgIGlmICh0eXBlb2YgZmlsbFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IEFycmF5KHYpLmZpbGwoZmFsc2UpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChfLCBpKSB7IHJldHVybiBmaWxsU3ltYm9sKGkpOyB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBBcnJheSh2KS5maWxsKGZpbGxTeW1ib2wgIT09IG51bGwgJiYgZmlsbFN5bWJvbCAhPT0gdm9pZCAwID8gZmlsbFN5bWJvbCA6IDApO1xufTtcbmV4cG9ydCB2YXIgY3JlYXRlTWF0cml4ID0gZnVuY3Rpb24gKF9hLCBmaWxsU3ltYm9sKSB7XG4gICAgdmFyIGggPSBfYS5oLCB3ID0gX2EudztcbiAgICBpZiAodHlwZW9mIGZpbGxTeW1ib2wgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFycmF5KGgpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChfLCB5KSB7IHJldHVybiBjcmVhdGVBcnJheSh3LCBmdW5jdGlvbiAoeCkgeyByZXR1cm4gZmlsbFN5bWJvbCh4LCB5KTsgfSk7IH0pO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQXJyYXkoaClcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiBjcmVhdGVBcnJheSh3LCBmaWxsU3ltYm9sKTsgfSk7XG59O1xuZXhwb3J0IHZhciBnYXVzc2lhbkVsaW1pbmF0aW9uID0gZnVuY3Rpb24gKG1hdHJpeCkge1xuICAgIHZhciBuID0gbWF0cml4Lmxlbmd0aDtcbiAgICB2YXIgbWF0cml4Q2xvbmUgPSBjcmVhdGVNYXRyaXgobmV3IERQb2ludChuICsgMSwgbikpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbiArIDE7IGorKykge1xuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gbWF0cml4W2ldW2pdID09PSAwID8gZ2F1c3NpYW5FbGltaW5hdGlvbi5NSU4gOiBtYXRyaXhbaV1bal07XG4gICAgICAgICAgICBtYXRyaXhDbG9uZVtpXVtqXSA9IG1hdHJpeFtpXVtqXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG47IGsrKykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKyAxOyBpKyspIHtcbiAgICAgICAgICAgIG1hdHJpeENsb25lW2tdW2ldIC89IG1hdHJpeFtrXVtrXTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gayArIDE7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBLID0gbWF0cml4Q2xvbmVbaV1ba10gLyBtYXRyaXhDbG9uZVtrXVtrXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbiArIDE7IGorKykge1xuICAgICAgICAgICAgICAgIG1hdHJpeENsb25lW2ldW2pdIC09IG1hdHJpeENsb25lW2tdW2pdICogSztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuICsgMTsgaisrKSB7XG4gICAgICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gbWF0cml4Q2xvbmVbaV1bal07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgayA9IG4gLSAxOyBrID4gLTE7IGstLSkge1xuICAgICAgICBmb3IgKHZhciBpID0gbjsgaSA+IC0xOyBpLS0pIHtcbiAgICAgICAgICAgIG1hdHJpeENsb25lW2tdW2ldIC89IG1hdHJpeFtrXVtrXTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gayAtIDE7IGkgPiAtMTsgaS0tKSB7XG4gICAgICAgICAgICB2YXIgSyA9IG1hdHJpeENsb25lW2ldW2tdIC8gbWF0cml4Q2xvbmVba11ba107XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gbjsgaiA+IC0xOyBqLS0pIHtcbiAgICAgICAgICAgICAgICBtYXRyaXhDbG9uZVtpXVtqXSAtPSBtYXRyaXhDbG9uZVtrXVtqXSAqIEs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGFuc3dlciA9IGNyZWF0ZUFycmF5KG4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGFuc3dlcltpXSA9IG1hdHJpeENsb25lW2ldW25dO1xuICAgIH1cbiAgICByZXR1cm4gYW5zd2VyO1xufTtcbmdhdXNzaWFuRWxpbWluYXRpb24uTUlOID0gMWUtMTA7XG5leHBvcnQgdmFyIGNyZWF0ZUNhbnZhcyA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciB3ID0gMDtcbiAgICB2YXIgaCA9IDA7XG4gICAgdmFyIG9mZnNjcmVlbiA9IGZhbHNlO1xuICAgIGlmIChhIGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgIHZhciB4ID0gYS54LCB5ID0gYS55O1xuICAgICAgICB3ID0geDtcbiAgICAgICAgaCA9IHk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB3ID0gYTtcbiAgICAgICAgaCA9IGE7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYiA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIG9mZnNjcmVlbiA9IGI7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBiID09PSAnbnVtYmVyJykge1xuICAgICAgICBoID0gYjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgb2Zmc2NyZWVuID0gYztcbiAgICB9XG4gICAgdmFyIGNhbnZhcyA9IG9mZnNjcmVlbiA/IG5ldyBPZmZzY3JlZW5DYW52YXModywgaCkgOiAoKF9hID0gY3JlYXRlQ2FudmFzLmRvY3VtZW50KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBkb2N1bWVudCkuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgaWYgKCFvZmZzY3JlZW4pIHtcbiAgICAgICAgY2FudmFzLndpZHRoID0gdztcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IGg7XG4gICAgfVxuICAgIHJldHVybiBbY2FudmFzLCBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKV07XG59O1xudmFyIGYgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gW10uY29uY2F0LmFwcGx5KFtdLCBfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoYS5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGIubWFwKGZ1bmN0aW9uIChkKSB7IHJldHVybiBbXS5jb25jYXQoYywgZCk7IH0pOyB9KSksIGZhbHNlKSk7IH07XG5leHBvcnQgdmFyIGNhcnRlc2lhblByb2R1Y3QgPSBmdW5jdGlvbiAoYSwgYikge1xuICAgIHZhciBjID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgY1tfaSAtIDJdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgcmV0dXJuIGIgPyBjYXJ0ZXNpYW5Qcm9kdWN0LmFwcGx5KHZvaWQgMCwgX19zcHJlYWRBcnJheShbZihhLCBiKV0sIF9fcmVhZChjKSwgZmFsc2UpKSA6IGE7XG59O1xuZXhwb3J0IHZhciBnZXRDb21iaW5hdGlvbnMgPSBmdW5jdGlvbiAoYXJyKSB7XG4gICAgaWYgKGFyci5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIGFyclswXTtcbiAgICB9XG4gICAgdmFyIGFucyA9IFtdO1xuICAgIHZhciBvdGhlckNhc2VzID0gZ2V0Q29tYmluYXRpb25zKGFyci5zbGljZSgxKSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdGhlckNhc2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXJyWzBdLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBhbnMucHVzaChfX3NwcmVhZEFycmF5KFthcnJbMF1bal1dLCBfX3JlYWQob3RoZXJDYXNlc1tpXSksIGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFucztcbn07XG5leHBvcnQgdmFyIGRpdiA9IGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBNYXRoLmZsb29yKGEgLyBiKTsgfTtcbmV4cG9ydCB2YXIgdG9EZWdyZWVzTWludXRlc1NlY29uZHMgPSBmdW5jdGlvbiAodikge1xuICAgIHZhciBtID0gdiA8IDA7XG4gICAgdmFyIGRlZ3JlZXMgPSBNYXRoLmZsb29yKE1hdGguYWJzKHYpKTtcbiAgICB2YXIgdCA9IChNYXRoLmFicyh2KSAlIDEpICogNjA7XG4gICAgdmFyIG1pbnV0ZXMgPSBNYXRoLmZsb29yKHQpO1xuICAgIHZhciB0MiA9ICh0ICUgMSkgKiA2MDtcbiAgICB2YXIgc2Vjb25kcyA9IHQyLnRvRml4ZWQoMik7XG4gICAgcmV0dXJuIFwiXCIuY29uY2F0KG0gPyAnLScgOiAnJykuY29uY2F0KGRlZ3JlZXMsIFwiXFx1MDBCMCBcIikuY29uY2F0KG1pbnV0ZXMsIFwiJyBcIikuY29uY2F0KHNlY29uZHMsIFwiXFxcIlwiKTtcbn07XG5leHBvcnQgdmFyIHBhcnNlRGVncmVlc01pbnV0ZXNTZWNvbmRzID0gZnVuY3Rpb24gKGkpIHtcbiAgICB2YXIgZV8xLCBfYTtcbiAgICB2YXIgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2g7XG4gICAgdmFyIHBhcnRzID0gaS5tYXRjaEFsbCgvKD88dmFsdWU+LT9cXGQrKD88dGFpbD5cXC5cXGR7MSx9KT8pKD88dHlwZT7CsHwnfFwiKS9nbWl1KTtcbiAgICB2YXIgZCA9IDA7XG4gICAgdmFyIG0gPSAwO1xuICAgIHZhciBzID0gMDtcbiAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBwYXJ0c18xID0gX192YWx1ZXMocGFydHMpLCBwYXJ0c18xXzEgPSBwYXJ0c18xLm5leHQoKTsgIXBhcnRzXzFfMS5kb25lOyBwYXJ0c18xXzEgPSBwYXJ0c18xLm5leHQoKSkge1xuICAgICAgICAgICAgdmFyIHBhcnQgPSBwYXJ0c18xXzEudmFsdWU7XG4gICAgICAgICAgICBzd2l0Y2ggKChfYiA9IHBhcnQgPT09IG51bGwgfHwgcGFydCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFydC5ncm91cHMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnwrAnOlxuICAgICAgICAgICAgICAgICAgICBkID0gTnVtYmVyKChfZCA9IChfYyA9IHBhcnQgPT09IG51bGwgfHwgcGFydCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFydC5ncm91cHMpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy52YWx1ZSkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogJzAnKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnXFwnJzpcbiAgICAgICAgICAgICAgICAgICAgbSA9IE51bWJlcigoX2YgPSAoX2UgPSBwYXJ0ID09PSBudWxsIHx8IHBhcnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhcnQuZ3JvdXBzKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UudmFsdWUpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6ICcwJyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1wiJzpcbiAgICAgICAgICAgICAgICAgICAgcyA9IE51bWJlcigoX2ggPSAoX2cgPSBwYXJ0ID09PSBudWxsIHx8IHBhcnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhcnQuZ3JvdXBzKSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cudmFsdWUpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6ICcwJyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChwYXJ0c18xXzEgJiYgIXBhcnRzXzFfMS5kb25lICYmIChfYSA9IHBhcnRzXzEucmV0dXJuKSkgX2EuY2FsbChwYXJ0c18xKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgfVxuICAgIHZhciBoID0gZCA8IDAgPyAtMSA6IDE7XG4gICAgcmV0dXJuIGQgKyBoICogbSAvIDYwICsgaCAqIHMgLyAzNjAwO1xufTtcbiIsImltcG9ydCB7IERFR1JFRV9UT19QSSwgRE9VQkxFX1BJX0lOX0RFR1JFRSwgUElfSU5fREVHUkVFLCBQSV9UT19ERUdSRUUgfSBmcm9tICcuL0RQb2ludCc7XG52YXIgZGVsdGEgPSAwLjAwMTtcbnZhciBETnVtYmVycyA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRE51bWJlcnMoKSB7XG4gICAgfVxuICAgIEROdW1iZXJzLmxpa2UgPSBmdW5jdGlvbiAodiwgcywgZCkge1xuICAgICAgICBpZiAoZCA9PT0gdm9pZCAwKSB7IGQgPSBkZWx0YTsgfVxuICAgICAgICByZXR1cm4gTWF0aC5hYnModiAtIHMpIDwgZDtcbiAgICB9O1xuICAgIEROdW1iZXJzLmxpa2VaZXJvID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIEROdW1iZXJzLmxpa2UodiwgMCk7XG4gICAgfTtcbiAgICBETnVtYmVycy5saWtlMlBJID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIEROdW1iZXJzLmxpa2UoRE51bWJlcnMucmFkMkRlZyh2KSwgRE9VQkxFX1BJX0lOX0RFR1JFRSk7XG4gICAgfTtcbiAgICBETnVtYmVycy5saWtlUEkgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gRE51bWJlcnMubGlrZShETnVtYmVycy5yYWQyRGVnKHYpLCBQSV9JTl9ERUdSRUUpO1xuICAgIH07XG4gICAgRE51bWJlcnMucmFkMkRlZyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB2ICogREVHUkVFX1RPX1BJO1xuICAgIH07XG4gICAgRE51bWJlcnMuZGVnMlJhZCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB2ICogUElfVE9fREVHUkVFO1xuICAgIH07XG4gICAgcmV0dXJuIEROdW1iZXJzO1xufSgpKTtcbmV4cG9ydCB7IEROdW1iZXJzIH07XG4iLCJ2YXIgTG9vcEZ1bmN0aW9ucztcbihmdW5jdGlvbiAoTG9vcEZ1bmN0aW9ucykge1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImdldFRpbGVGcm9tQ29vcmRzXCJdID0gMF0gPSBcImdldFRpbGVGcm9tQ29vcmRzXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZ2V0Q29vcmRzRnJvbVRpbGVcIl0gPSAxXSA9IFwiZ2V0Q29vcmRzRnJvbVRpbGVcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJoZWlnaHRcIl0gPSAyXSA9IFwiaGVpZ2h0XCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wic2V0WFwiXSA9IDNdID0gXCJzZXRYXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wic2V0WVwiXSA9IDRdID0gXCJzZXRZXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wic2V0WlwiXSA9IDVdID0gXCJzZXRaXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wicm90YXRlXCJdID0gNl0gPSBcInJvdGF0ZVwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInJvdGF0ZTNkWFwiXSA9IDddID0gXCJyb3RhdGUzZFhcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJyb3RhdGUzZFlcIl0gPSA4XSA9IFwicm90YXRlM2RZXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wicm90YXRlM2RaXCJdID0gOV0gPSBcInJvdGF0ZTNkWlwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcIm1vdmVcIl0gPSAxMF0gPSBcIm1vdmVcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJyb3VuZFwiXSA9IDExXSA9IFwicm91bmRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJjZWlsXCJdID0gMTJdID0gXCJjZWlsXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZmxvb3JcIl0gPSAxM10gPSBcImZsb29yXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1widG9GaXhlZFwiXSA9IDE0XSA9IFwidG9GaXhlZFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImFic1wiXSA9IDE1XSA9IFwiYWJzXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wic2NhbGVcIl0gPSAxNl0gPSBcInNjYWxlXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZGl2aWRlXCJdID0gMTddID0gXCJkaXZpZGVcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJkZWdyZWVUb1JhZGlhbnNcIl0gPSAxOF0gPSBcImRlZ3JlZVRvUmFkaWFuc1wiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInJhZGlhbnNUb0RlZ3JlZXNcIl0gPSAxOV0gPSBcInJhZGlhbnNUb0RlZ3JlZXNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJyYWRpYW5zVG9NZXRlcnNcIl0gPSAyMF0gPSBcInJhZGlhbnNUb01ldGVyc1wiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcIm1ldGVyc1RvUmFkaWFuc1wiXSA9IDIxXSA9IFwibWV0ZXJzVG9SYWRpYW5zXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiaGlwUG9pbnRcIl0gPSAyMl0gPSBcImhpcFBvaW50XCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wieFBvaW50XCJdID0gMjNdID0gXCJ4UG9pbnRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJ5UG9pbnRcIl0gPSAyNF0gPSBcInlQb2ludFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcIndQb2ludFwiXSA9IDI1XSA9IFwid1BvaW50XCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiaFBvaW50XCJdID0gMjZdID0gXCJoUG9pbnRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRJZkxlc3NUaGFuXCJdID0gMjddID0gXCJzZXRJZkxlc3NUaGFuXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wibWludXNcIl0gPSAyOF0gPSBcIm1pbnVzXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZGVncmVlVG9NZXRlcnNcIl0gPSAyOV0gPSBcImRlZ3JlZVRvTWV0ZXJzXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wibWV0ZXJzVG9EZWdyZWVcIl0gPSAzMF0gPSBcIm1ldGVyc1RvRGVncmVlXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZmxpcFZlcnRpY2FsbHlcIl0gPSAzMV0gPSBcImZsaXBWZXJ0aWNhbGx5XCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wic2V0UHJvcGVydGllc1wiXSA9IDMyXSA9IFwic2V0UHJvcGVydGllc1wiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImRpdlwiXSA9IDMzXSA9IFwiZGl2XCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wibW9kXCJdID0gMzRdID0gXCJtb2RcIjtcbn0pKExvb3BGdW5jdGlvbnMgfHwgKExvb3BGdW5jdGlvbnMgPSB7fSkpO1xudmFyIGRlY29kZVBvb2xSZWNvcmQgPSBmdW5jdGlvbiAoYSwgX2EpIHtcbiAgICB2YXIgZnVuY3Rpb25OYW1lID0gX2EuZnVuY3Rpb25OYW1lLCBwb2ludEFyZyA9IF9hLnBvaW50QXJnLCBudW1iZXJQb2ludEFyZyA9IF9hLm51bWJlclBvaW50QXJnLCBudW1iZXJBcmcgPSBfYS5udW1iZXJBcmcsIHNldHRlckFyZyA9IF9hLnNldHRlckFyZywgc2V0dGVyQXJnQnlPYmplY3QgPSBfYS5zZXR0ZXJBcmdCeU9iamVjdDtcbiAgICB2YXIgcmVzID0gYTtcbiAgICBzd2l0Y2ggKGZ1bmN0aW9uTmFtZSkge1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZ2V0VGlsZUZyb21Db29yZHM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmdldFRpbGVGcm9tQ29vcmRzKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmdldENvb3Jkc0Zyb21UaWxlOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5nZXRDb29yZHNGcm9tVGlsZShudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5oZWlnaHQ6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmhlaWdodChudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5zZXRYOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiB0eXBlb2Ygc2V0dGVyQXJnID09PSAnbnVtYmVyJyA/IGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnNldFgoc2V0dGVyQXJnKSA6IGEoaywgaW5kZXgpLnNldFgoZnVuY3Rpb24gKHApIHsgcmV0dXJuIHNldHRlckFyZyhwLCBpbmRleCk7IH0pOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5zZXRZOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiB0eXBlb2Ygc2V0dGVyQXJnID09PSAnbnVtYmVyJyA/IGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnNldFkoc2V0dGVyQXJnKSA6IGEoaywgaW5kZXgpLnNldFkoZnVuY3Rpb24gKHApIHsgcmV0dXJuIHNldHRlckFyZyhwLCBpbmRleCk7IH0pOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5zZXRaOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiB0eXBlb2Ygc2V0dGVyQXJnID09PSAnbnVtYmVyJyA/IGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnNldFooc2V0dGVyQXJnKSA6IGEoaywgaW5kZXgpLnNldFooZnVuY3Rpb24gKHApIHsgcmV0dXJuIHNldHRlckFyZyhwLCBpbmRleCk7IH0pOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5yb3RhdGU6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnJvdGF0ZShudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5yb3RhdGUzZFg6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnJvdGF0ZTNkWChudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5yb3RhdGUzZFk6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnJvdGF0ZTNkWShudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5yb3RhdGUzZFo6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnJvdGF0ZTNkWihudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5tb3ZlOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5tb3ZlKG51bWJlclBvaW50QXJnLCBudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5yb3VuZDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm91bmQoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuY2VpbDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuY2VpbCgpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5mbG9vcjpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZmxvb3IoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMudG9GaXhlZDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAudG9GaXhlZChudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5hYnM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmFicygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5zY2FsZTpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuc2NhbGUobnVtYmVyUG9pbnRBcmcsIG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmRpdmlkZTpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZGl2aWRlKG51bWJlclBvaW50QXJnLCBudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5kaXY6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmRpdihudW1iZXJQb2ludEFyZywgbnVtYmVyQXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMubW9kOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5tb2QobnVtYmVyUG9pbnRBcmcsIG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmRlZ3JlZVRvUmFkaWFuczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZGVncmVlVG9SYWRpYW5zKCk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJhZGlhbnNUb0RlZ3JlZXM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnJhZGlhbnNUb0RlZ3JlZXMoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMucmFkaWFuc1RvTWV0ZXJzOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5yYWRpYW5zVG9NZXRlcnMoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMubWV0ZXJzVG9SYWRpYW5zOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5tZXRlcnNUb1JhZGlhbnMoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuaGlwUG9pbnQ6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmhpcFBvaW50OyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy54UG9pbnQ6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnhQb2ludDsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMueVBvaW50OlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC55UG9pbnQ7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLndQb2ludDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAud1BvaW50OyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5oUG9pbnQ6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmhQb2ludDsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuc2V0SWZMZXNzVGhhbjpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuc2V0SWZMZXNzVGhhbihwb2ludEFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLm1pbnVzOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5taW51cygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5kZWdyZWVUb01ldGVyczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZGVncmVlVG9NZXRlcnMoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMubWV0ZXJzVG9EZWdyZWU6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1ldGVyc1RvRGVncmVlKCk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmZsaXBWZXJ0aWNhbGx5OlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5mbGlwVmVydGljYWxseShudW1iZXJQb2ludEFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNldFByb3BlcnRpZXM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIHR5cGVvZiBzZXR0ZXJBcmdCeU9iamVjdCA9PT0gJ29iamVjdCcgPyBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5zZXRQcm9wZXJ0aWVzKHNldHRlckFyZ0J5T2JqZWN0KSA6IGEoaywgaW5kZXgpLnNldFByb3BlcnRpZXMoZnVuY3Rpb24gKHApIHsgcmV0dXJuIHNldHRlckFyZ0J5T2JqZWN0KHAsIGluZGV4KTsgfSk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn07XG52YXIgRFBvbHlnb25Mb29wID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEUG9seWdvbkxvb3AocGFyZW50KSB7XG4gICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgICAgICB0aGlzLnBvb2wgPSBbXTtcbiAgICB9XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5nZXRMb29wRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvb2wucmVkdWNlKGRlY29kZVBvb2xSZWNvcmQsIGZ1bmN0aW9uIChrKSB7IHJldHVybiBrOyB9KTtcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQubWFwKHRoaXMuZ2V0TG9vcEZ1bmN0aW9uKCkpO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5nZXRUaWxlRnJvbUNvb3JkcyA9IGZ1bmN0aW9uICh6b29tKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5nZXRUaWxlRnJvbUNvb3JkcyxcbiAgICAgICAgICAgIG51bWJlckFyZzogem9vbVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldENvb3Jkc0Zyb21UaWxlID0gZnVuY3Rpb24gKHpvb20pIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmdldENvb3Jkc0Zyb21UaWxlLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB6b29tXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuaGVpZ2h0ID0gZnVuY3Rpb24gKHopIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmhlaWdodCxcbiAgICAgICAgICAgIG51bWJlckFyZzogelxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnNldFggPSBmdW5jdGlvbiAoeCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2V0WCxcbiAgICAgICAgICAgIHNldHRlckFyZzogeFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnNldFByb3BlcnRpZXMgPSBmdW5jdGlvbiAoc2V0dGVyQXJnQnlPYmplY3QpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnNldFByb3BlcnRpZXMsXG4gICAgICAgICAgICBzZXR0ZXJBcmdCeU9iamVjdDogc2V0dGVyQXJnQnlPYmplY3RcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5zZXRZID0gZnVuY3Rpb24gKHkpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnNldFksXG4gICAgICAgICAgICBzZXR0ZXJBcmc6IHlcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5zZXRaID0gZnVuY3Rpb24gKHopIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnNldFosXG4gICAgICAgICAgICBzZXR0ZXJBcmc6IHpcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5yb3RhdGUgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMucm90YXRlLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiBhXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucm90YXRlM2RYID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWCxcbiAgICAgICAgICAgIG51bWJlckFyZzogYVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnJvdGF0ZTNkWSA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yb3RhdGUzZFksXG4gICAgICAgICAgICBudW1iZXJBcmc6IGFcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5yb3RhdGUzZFogPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMucm90YXRlM2RaLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiBhXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUubW92ZSA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgICAgIGlmICh5ID09PSB2b2lkIDApIHsgeSA9IHg7IH1cbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLm1vdmUsXG4gICAgICAgICAgICBudW1iZXJQb2ludEFyZzogeCxcbiAgICAgICAgICAgIG51bWJlckFyZzogeVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnJvdW5kID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMucm91bmRcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5jZWlsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuY2VpbFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmZsb29yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuZmxvb3JcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS50b0ZpeGVkID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgaWYgKG4gPT09IHZvaWQgMCkgeyBuID0gMjsgfVxuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMudG9GaXhlZCxcbiAgICAgICAgICAgIG51bWJlckFyZzogblxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmFic1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnNjYWxlID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0geDsgfVxuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2NhbGUsXG4gICAgICAgICAgICBudW1iZXJQb2ludEFyZzogeCxcbiAgICAgICAgICAgIG51bWJlckFyZzogeVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmRpdmlkZSA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5kaXZpZGUsXG4gICAgICAgICAgICBudW1iZXJQb2ludEFyZzogeCxcbiAgICAgICAgICAgIG51bWJlckFyZzogeVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5kaXYsXG4gICAgICAgICAgICBudW1iZXJQb2ludEFyZzogeCxcbiAgICAgICAgICAgIG51bWJlckFyZzogeVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5tb2QsXG4gICAgICAgICAgICBudW1iZXJQb2ludEFyZzogeCxcbiAgICAgICAgICAgIG51bWJlckFyZzogeVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmRlZ3JlZVRvUmFkaWFucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmRlZ3JlZVRvUmFkaWFuc1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnJhZGlhbnNUb0RlZ3JlZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yYWRpYW5zVG9EZWdyZWVzXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucmFkaWFuc1RvTWV0ZXJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMucmFkaWFuc1RvTWV0ZXJzXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUubWV0ZXJzVG9SYWRpYW5zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMubWV0ZXJzVG9SYWRpYW5zXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0SGlwUG9pbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5oaXBQb2ludFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldFhQb2ludCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnhQb2ludFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldFlQb2ludCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnlQb2ludFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldFdQb2ludCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLndQb2ludFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldEhQb2ludCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmhQb2ludFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnNldElmTGVzc1RoYW4gPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2V0SWZMZXNzVGhhbixcbiAgICAgICAgICAgIHBvaW50QXJnOiBwXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUubWludXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5taW51c1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmRlZ3JlZVRvTWV0ZXJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuZGVncmVlVG9NZXRlcnNcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5tZXRlcnNUb0RlZ3JlZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLm1ldGVyc1RvRGVncmVlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZmxpcFZlcnRpY2FsbHkgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuZmxpcFZlcnRpY2FsbHksXG4gICAgICAgICAgICBudW1iZXJQb2ludEFyZzogc2l6ZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICByZXR1cm4gRFBvbHlnb25Mb29wO1xufSgpKTtcbmV4cG9ydCB7IERQb2x5Z29uTG9vcCB9O1xuIiwidmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xudmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fc3ByZWFkQXJyYXkgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSwgcGFjaykge1xuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59O1xuaW1wb3J0IHsgRFBvaW50IH0gZnJvbSAnLi9EUG9pbnQnO1xuaW1wb3J0IHsgRExpbmUgfSBmcm9tICcuL0RMaW5lJztcbmltcG9ydCB7IERDaXJjbGUgfSBmcm9tICcuL0RDaXJjbGUnO1xuaW1wb3J0IHsgRE51bWJlcnMgfSBmcm9tICcuL0ROdW1iZXJzJztcbmltcG9ydCB7IGlvIGFzIGpzdHNJbywgb3BlcmF0aW9uIH0gZnJvbSAnanN0cyc7XG5pbXBvcnQgeyBEUG9seWdvbkxvb3AgfSBmcm9tICcuL0RQb2x5Z29uTG9vcCc7XG5pbXBvcnQgeyBER2VvLCBpc0RlZkFuZE5vdE51bGwgfSBmcm9tICcuL3V0aWxzJztcbnZhciBfYSA9IG9wZXJhdGlvbi5idWZmZXIuQnVmZmVyUGFyYW1ldGVycywgQ0FQX1JPVU5EID0gX2EuQ0FQX1JPVU5ELCBDQVBfRkxBVCA9IF9hLkNBUF9GTEFULCBDQVBfU1FVQVJFID0gX2EuQ0FQX1NRVUFSRTtcbmV4cG9ydCB2YXIgTUlOX1BPSU5UU19JTl9WQUxJRF9QT0xZR09OID0gMztcbnZhciBBUFBST1hJTUFUSU9OX1ZBTFVFID0gMC4xO1xudmFyIE1BWF9DT05WRVhfSVRFUkFUSU9OUyA9IDEwMDtcbnZhciBDTE9TRV9UT19JTlRFUlNFQ1RJT05fRElTVEFOQ0UgPSAwLjAwMTtcbnZhciB0cmlhbmdsZUNlbnRlciA9IGZ1bmN0aW9uICh0cmlhbmdsZSkge1xuICAgIHZhciBwMCA9IHRyaWFuZ2xlLmF0KDApO1xuICAgIHZhciBwMSA9IHRyaWFuZ2xlLmF0KDEpO1xuICAgIHZhciBwMiA9IHRyaWFuZ2xlLmF0KDIpO1xuICAgIHJldHVybiBuZXcgRFBvaW50KChwMC54ICsgcDEueCArIHAyLngpIC8gMywgKHAwLnkgKyBwMS55ICsgcDIueSkgLyAzKTtcbn07XG52YXIgY29udGFpbkNhbGN1bGF0b3IgPSBmdW5jdGlvbiAocG9seSwgcCkge1xuICAgIHZhciBlXzEsIF9hLCBlXzIsIF9iO1xuICAgIHZhciBoYXNTYW1lUG9pbnQgPSBwb2x5LnBvaW50cy5zb21lKGZ1bmN0aW9uIChwb2ludCkgeyByZXR1cm4gcG9pbnQuZXF1YWwocCk7IH0pO1xuICAgIGlmIChoYXNTYW1lUG9pbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIF9jID0gX192YWx1ZXMocG9seS5sb29wUG9pbnRzR2VuZXJhdG9yKHRydWUpKCkpLCBfZCA9IF9jLm5leHQoKTsgIV9kLmRvbmU7IF9kID0gX2MubmV4dCgpKSB7XG4gICAgICAgICAgICB2YXIgX2UgPSBfX3JlYWQoX2QudmFsdWUsIDMpLCBwb2x5Z29uTGluZSA9IF9lWzJdO1xuICAgICAgICAgICAgdmFyIG9uQm9yZGVyID0gcG9seWdvbkxpbmUueChwKS5lcXVhbChwKSAmJiBwb2x5Z29uTGluZS5pblJhbmdlKHApO1xuICAgICAgICAgICAgaWYgKG9uQm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChfZCAmJiAhX2QuZG9uZSAmJiAoX2EgPSBfYy5yZXR1cm4pKSBfYS5jYWxsKF9jKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgfVxuICAgIHZhciB0b3RhbEZpID0gMDtcbiAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBfZiA9IF9fdmFsdWVzKHBvbHkubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpLCBfZyA9IF9mLm5leHQoKTsgIV9nLmRvbmU7IF9nID0gX2YubmV4dCgpKSB7XG4gICAgICAgICAgICB2YXIgX2ggPSBfX3JlYWQoX2cudmFsdWUsIDIpLCBfaiA9IF9oWzBdLCB4ID0gX2oueCwgeSA9IF9qLnksIF9rID0gX2hbMV0sIGEgPSBfay54LCBiID0gX2sueTtcbiAgICAgICAgICAgIHZhciBsaW5lMSA9IG5ldyBETGluZSh4IC0gcC54LCB5IC0gcC55LCAwKTtcbiAgICAgICAgICAgIHZhciBsaW5lMiA9IG5ldyBETGluZShhIC0gcC54LCBiIC0gcC55LCAwKTtcbiAgICAgICAgICAgIHZhciBmaURpZiA9IGxpbmUxLmZpbmRGaShsaW5lMik7XG4gICAgICAgICAgICBpZiAobGluZTEudmVjdG9yUHJvZHVjdChsaW5lMikuYyA+IDApIHtcbiAgICAgICAgICAgICAgICB0b3RhbEZpICs9IGZpRGlmO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdG90YWxGaSAtPSBmaURpZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKF9nICYmICFfZy5kb25lICYmIChfYiA9IF9mLnJldHVybikpIF9iLmNhbGwoX2YpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH1cbiAgICB9XG4gICAgdmFyIGVwcyA9IE1hdGguUEkgLyAxMDAwMDtcbiAgICB2YXIgcmVzdWx0ID0gZmFsc2U7XG4gICAgdmFyIGFic1RvdGFsRmkgPSBNYXRoLmFicyh0b3RhbEZpKTtcbiAgICBpZiAoYWJzVG90YWxGaSA8IGVwcykge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoTWF0aC5hYnMoMiAqIE1hdGguUEkgLSBhYnNUb3RhbEZpKSA8IGVwcykge1xuICAgICAgICByZXN1bHQgPSB0cnVlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb250YWluczIgZmFpbGQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG52YXIgRFBvbHlnb24gPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERQb2x5Z29uKHBQb2ludHMpIHtcbiAgICAgICAgaWYgKHBQb2ludHMgPT09IHZvaWQgMCkgeyBwUG9pbnRzID0gW107IH1cbiAgICAgICAgdGhpcy5wUG9pbnRzID0gcFBvaW50cztcbiAgICAgICAgdGhpcy5wcm9wZXJ0aWVzID0ge307XG4gICAgICAgIHRoaXMuaG9sZXMgPSBbXTtcbiAgICAgICAgdGhpcy5zZWFyY2hTdG9yZSA9IHt9O1xuICAgIH1cbiAgICBEUG9seWdvbi5hcnJheU9mVHJpYW5nbGVzVG9WZXJ0aWNlcyA9IGZ1bmN0aW9uICh0cmlhbmdsZXMsIGhlaWdodCkge1xuICAgICAgICByZXR1cm4gdHJpYW5nbGVzLm1hcChmdW5jdGlvbiAodikgeyByZXR1cm4gKGlzRGVmQW5kTm90TnVsbChoZWlnaHQpID8gdlxuICAgICAgICAgICAgLmxvb3AoKVxuICAgICAgICAgICAgLmhlaWdodChoZWlnaHQpXG4gICAgICAgICAgICAucnVuKCkgOiB2KVxuICAgICAgICAgICAgLnRvQXJyYXlPZkNvb3JkcygpOyB9KVxuICAgICAgICAgICAgLmZsYXQoMik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5taW5BcmVhUmVjdGFuZ2xlU2l6ZSA9IGZ1bmN0aW9uIChwb2x5KSB7XG4gICAgICAgIHZhciBfYSA9IHBvbHkuY2xvbmUoKS5vcGVuKCksIGZpcnN0ID0gX2EuZmlyc3QsIHNlY29uZCA9IF9hLnNlY29uZCwgbGFzdCA9IF9hLmxhc3Q7XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KGZpcnN0LmRpc3RhbmNlKHNlY29uZCksIGZpcnN0LmRpc3RhbmNlKGxhc3QpKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnRvRGFzaCA9IGZ1bmN0aW9uIChwb2x5KSB7XG4gICAgICAgIHZhciBlXzMsIF9hO1xuICAgICAgICB2YXIgcCA9IG5ldyBEUG9seWdvbigpO1xuICAgICAgICB2YXIgcmVzdWx0ID0gW3BdO1xuICAgICAgICB2YXIgdHJpZ2dlciA9IHRydWU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHBvbHkucG9pbnRzKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBwb2ludCA9IF9jLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh0cmlnZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHAucHVzaChwb2ludC5jbG9uZSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBvaW50LnByb3BlcnRpZXMucGllY2VCb3JkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlciA9ICF0cmlnZ2VyO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHJpZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG5ldyBEUG9seWdvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwLnB1c2gocG9pbnQuY2xvbmUoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfM18xKSB7IGVfMyA9IHsgZXJyb3I6IGVfM18xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8zKSB0aHJvdyBlXzMuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgRFBvbHlnb24ubWluQXJlYVJlY3RhbmdsZURpcmVjdGlvbiA9IGZ1bmN0aW9uIChwb2x5KSB7XG4gICAgICAgIHZhciBfYSA9IHBvbHkuY2xvbmUoKS5vcGVuKCksIGZpcnN0ID0gX2EuZmlyc3QsIHNlY29uZCA9IF9hLnNlY29uZCwgbGFzdCA9IF9hLmxhc3Q7XG4gICAgICAgIGlmICghZmlyc3QgfHwgIXNlY29uZCB8fCAhbGFzdCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpcnN0LmRpc3RhbmNlKHNlY29uZCkgPiBmaXJzdC5kaXN0YW5jZShsYXN0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZpcnN0LmZpbmRMaW5lKHNlY29uZCkuZ2V0RmkoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlyc3QuZmluZExpbmUobGFzdCkuZ2V0RmkoKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnBhcnNlRnJvbVdLVCA9IGZ1bmN0aW9uICh3a3QpIHtcbiAgICAgICAgdmFyIGRhdGEgPSB3a3QudHJpbSgpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIHZhciByZXMgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgaWYgKGRhdGEuaW5kZXhPZignUE9MWUdPTicpID09PSAwKSB7XG4gICAgICAgICAgICB2YXIgcmVnZXhwID0gL1BPTFlHT04gXFwoXFwoKD88ZGF0YT4oPzooPyFcXClcXCkkKS4pKj8pXFwpXFwpJC9taXU7XG4gICAgICAgICAgICB2YXIgcmVnID0gcmVnZXhwLmV4ZWMoZGF0YSk7XG4gICAgICAgICAgICB2YXIgX2EgPSBfX3JlYWQocmVnLmdyb3Vwcy5kYXRhXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcpLCAoJylcbiAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChwKSB7IHJldHVybiBuZXcgRFBvbHlnb24ocC5zcGxpdCgnLCAnKVxuICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHBhcmVzKSB7IHJldHVybiBEUG9pbnQucGFyc2UocGFyZXMuc3BsaXQoJyAnKS5tYXAoTnVtYmVyKSk7IH0pKTsgfSkpLCBwYXRoID0gX2FbMF0sIGhvbGVzID0gX2Euc2xpY2UoMSk7XG4gICAgICAgICAgICBpZiAoaG9sZXMgJiYgaG9sZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcGF0aC5ob2xlcyA9IGhvbGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzID0gcGF0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5pbmRleE9mKCdMSU5FU1RSSU5HJykgPT09IDApIHtcbiAgICAgICAgICAgIHZhciByZWdleHAgPSAvTElORVNUUklORyBcXCgoPzxkYXRhPig/Oig/IVxcKSQpLikqPylcXCkkL21pdTtcbiAgICAgICAgICAgIHZhciByZWcgPSByZWdleHAuZXhlYyhkYXRhKTtcbiAgICAgICAgICAgIHJlcyA9IG5ldyBEUG9seWdvbihyZWcuZ3JvdXBzLmRhdGFcbiAgICAgICAgICAgICAgICAuc3BsaXQoJywgJykubWFwKGZ1bmN0aW9uICh0KSB7IHJldHVybiBEUG9pbnQucGFyc2UodC5zcGxpdCgnICcpLm1hcChOdW1iZXIpKTsgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLmluZGV4T2YoJ1BPSU5UJykgPT09IDApIHtcbiAgICAgICAgICAgIHJlcyA9IG5ldyBEUG9seWdvbihbRFBvaW50LnBhcnNlRnJvbVdLVChkYXRhKV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5jcmVhdGVTcXVhcmVCeVNpemUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKFtEUG9pbnQuemVybygpLCBzaXplLmNsb25lKCkuc2V0WCgwKSwgc2l6ZS5jbG9uZSgpLCBzaXplLmNsb25lKCkuc2V0WSgwKV0pLmNsb3NlKCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUubG9vcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbkxvb3AodGhpcyk7XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcInBvaW50c1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cztcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAocCkge1xuICAgICAgICAgICAgdGhpcy5wUG9pbnRzID0gcDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibWF4WFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKGZ1bmN0aW9uIChhLCByKSB7IHJldHVybiBNYXRoLm1heChhLCByLngpOyB9LCAtSW5maW5pdHkpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJtaW5YXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIHIpIHsgcmV0dXJuIE1hdGgubWluKGEsIHIueCk7IH0sIEluZmluaXR5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibWF4WVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKGZ1bmN0aW9uIChhLCByKSB7IHJldHVybiBNYXRoLm1heChhLCByLnkpOyB9LCAtSW5maW5pdHkpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJtaW5ZXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIHIpIHsgcmV0dXJuIE1hdGgubWluKGEsIHIueSk7IH0sIEluZmluaXR5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiaW5uZXJDZW50ZXJcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjZW50ZXIgPSB0aGlzLmNlbnRlcjtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvVHJpYW5nbGVzKCkubWFwKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGMgPSB0cmlhbmdsZUNlbnRlcih0KTtcbiAgICAgICAgICAgICAgICBjLnByb3BlcnRpZXMuc2NvcmUgPSBNYXRoLm1pbihjLmRpc3RhbmNlKHQuYXQoMCkpLCBjLmRpc3RhbmNlKHQuYXQoMSkpLCBjLmRpc3RhbmNlKHQuYXQoMikpKSArIGMuZGlzdGFuY2UoY2VudGVyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEucHJvcGVydGllcy5zY29yZSAtIGIucHJvcGVydGllcy5zY29yZTsgfSlbMF07XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImNlbnRlclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVmdFRvcC5tb3ZlKHRoaXMuc2l6ZS5kaXZpZGUoMikpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJoXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXhZIC0gdGhpcy5taW5ZO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJ3XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXhYIC0gdGhpcy5taW5YO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJkWVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiZFhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnc7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImV4dGVuZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgbWluWCA9IF9hLm1pblgsIG1pblkgPSBfYS5taW5ZLCBtYXhYID0gX2EubWF4WCwgbWF4WSA9IF9hLm1heFk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKFtcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KG1pblgsIG1pblkpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQobWF4WCwgbWluWSksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludChtYXhYLCBtYXhZKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KG1pblgsIG1heFkpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQobWluWCwgbWluWSlcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJzaXplXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLCB3ID0gX2EudywgaCA9IF9hLmg7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCh3LCBoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibGVmdFRvcFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgbWluWCA9IF9hLm1pblgsIG1pblkgPSBfYS5taW5ZO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQobWluWCwgbWluWSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm1pblBvaW50XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sZWZ0VG9wO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJyaWdodEJvdHRvbVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgbWF4WCA9IF9hLm1heFgsIG1heFkgPSBfYS5tYXhZO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQobWF4WCwgbWF4WSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm1heFBvaW50XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yaWdodEJvdHRvbTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibGVuZ3RoXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzLmxlbmd0aDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiZnVsbExlbmd0aFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5vcGVuKCkucGVyaW1ldGVyO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJwZXJpbWV0ZXJcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBlXzQsIF9hO1xuICAgICAgICAgICAgdmFyIHAgPSAwO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMiksIHAxID0gX2RbMF0sIHAyID0gX2RbMV07XG4gICAgICAgICAgICAgICAgICAgIHAgKz0gcDEuZGlzdGFuY2UocDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzRfMSkgeyBlXzQgPSB7IGVycm9yOiBlXzRfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV80KSB0aHJvdyBlXzQuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJhcmVhXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZV81LCBfYTtcbiAgICAgICAgICAgIHZhciBzdW0gPSAwO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMuZGVpbnRlcnNlY3Rpb24ubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMiksIF9lID0gX2RbMF0sIHggPSBfZS54LCB5ID0gX2UueSwgX2YgPSBfZFsxXSwgYSA9IF9mLngsIGIgPSBfZi55O1xuICAgICAgICAgICAgICAgICAgICBzdW0gKz0geCAqIGIgLSB5ICogYTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV81XzEpIHsgZV81ID0geyBlcnJvcjogZV81XzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfNSkgdGhyb3cgZV81LmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnMoc3VtIC8gMikgLSB0aGlzLmhvbGVzLnJlZHVjZShmdW5jdGlvbiAoYSwgaG9sZSkgeyByZXR1cm4gYSArIGhvbGUuYXJlYTsgfSwgMCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImZpbGxlZERlaW50ZXJzZWN0aW9uXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcCA9IHRoaXMuY2xvbmUoKS5kZWludGVyc2VjdGlvbi5yZW1vdmVEdXBsaWNhdGVzKCkuY2xvY2tXaXNlLm9wZW4oKTtcbiAgICAgICAgICAgIHZhciBmaW5kU2FtZUNvcm5lcnMgPSBmdW5jdGlvbiAoc3RhcnRJbmRleCkge1xuICAgICAgICAgICAgICAgIGlmIChzdGFydEluZGV4ID09PSB2b2lkIDApIHsgc3RhcnRJbmRleCA9IDA7IH1cbiAgICAgICAgICAgICAgICB2YXIgc3RvcmUgPSB7fTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRleDsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9IHAuYXQoaSkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzdG9yZVtrZXldID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtzdG9yZVtrZXldLCBpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzdG9yZVtrZXldID0gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB2YXIgaW5kZXhlcyA9IGZpbmRTYW1lQ29ybmVycygpO1xuICAgICAgICAgICAgdmFyIGhvbGVzID0gW107XG4gICAgICAgICAgICB3aGlsZSAoaW5kZXhlcykge1xuICAgICAgICAgICAgICAgIHZhciBhID0gbmV3IERQb2x5Z29uKHAuY2xvbmUoKS5yZW1vdmVQYXJ0KGluZGV4ZXNbMF0sIGluZGV4ZXNbMV0gLSBpbmRleGVzWzBdKSk7XG4gICAgICAgICAgICAgICAgaWYgKGEuaXNDbG9ja3dpc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXhlcyA9IGZpbmRTYW1lQ29ybmVycyhpbmRleGVzWzBdICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBob2xlcy5wdXNoKGEuY2xvc2UoKSk7XG4gICAgICAgICAgICAgICAgICAgIHAucmVtb3ZlUGFydChpbmRleGVzWzBdLCBpbmRleGVzWzFdIC0gaW5kZXhlc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ZXMgPSBmaW5kU2FtZUNvcm5lcnMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwLmhvbGVzID0gaG9sZXM7XG4gICAgICAgICAgICByZXR1cm4gcC5jbG9zZSgpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJkZWludGVyc2VjdGlvblwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVfNiwgX2E7XG4gICAgICAgICAgICB2YXIgcCA9IHRoaXMuY2xvbmUoKS5jbG9zZSgpO1xuICAgICAgICAgICAgdmFyIHN0b3JlID0ge307XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHAubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGsgPSBwLmF0KGkpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgc3RvcmVba10gPSBzdG9yZVtrXSB8fCBbXTtcbiAgICAgICAgICAgICAgICBzdG9yZVtrXS5wdXNoKGkpO1xuICAgICAgICAgICAgICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gKGopIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZpcnN0TGluZSA9IHAuYXQoaSkuZmluZExpbmUocC5hdChpICsgMSkpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2Vjb25kTGluZSA9IHAuYXQoaikuZmluZExpbmUocC5hdChqICsgMSkpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW50ZXJzZWN0aW9uUG9pbnQgPSBmaXJzdExpbmUuaW50ZXJzZWN0aW9uKHNlY29uZExpbmUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJzZWN0aW9uUG9pbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZChmaXJzdExpbmUucG9pbnRzKSwgZmFsc2UpLCBfX3JlYWQoc2Vjb25kTGluZS5wb2ludHMpLCBmYWxzZSkuc29tZShmdW5jdGlvbiAodCkgeyByZXR1cm4gdC5saWtlKGludGVyc2VjdGlvblBvaW50KTsgfSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJ0ID0gcC5yZW1vdmVQYXJ0KGksIGogLSBpKS5yZXZlcnNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwLmluc2VydEFmdGVyLmFwcGx5KHAsIF9fc3ByZWFkQXJyYXkoW2ldLCBfX3JlYWQocGFydCksIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwLmluc2VydEFmdGVyKGosIGludGVyc2VjdGlvblBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAuaW5zZXJ0QWZ0ZXIoaSwgaW50ZXJzZWN0aW9uUG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gaSArIDI7IGogPCBwLmxlbmd0aCAtIDE7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBfbG9vcF8xKGopO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyhPYmplY3Qua2V5cyhzdG9yZSkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSBfYy52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlY29yZCA9IHN0b3JlW2tleV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWNvcmQubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9sb29wXzIgPSBmdW5jdGlvbiAoaikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvcmlnaW5fMSA9IHAuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IHJlY29yZFtqXSAtIHJlY29yZFtqIC0gMV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJ0ID0gbmV3IERQb2x5Z29uKG9yaWdpbl8xLnJlbW92ZVBhcnQocmVjb3JkW2ogLSAxXSwgZCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWxsSW5zaWRlID0gcGFydC5yZWR1Y2UoZnVuY3Rpb24gKGEsIGUpIHsgcmV0dXJuIGEgJiYgY29udGFpbkNhbGN1bGF0b3Iob3JpZ2luXzEsIGUpOyB9LCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsbEluc2lkZSAmJiBvcmlnaW5fMS5pc0Nsb2Nrd2lzZSA9PT0gcGFydC5pc0Nsb2Nrd2lzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luXzEuaW5zZXJ0QWZ0ZXIuYXBwbHkob3JpZ2luXzEsIF9fc3ByZWFkQXJyYXkoW3JlY29yZFtqIC0gMV0gLSAxXSwgX19yZWFkKHBhcnQucmV2ZXJzZSgpLnBvaW50cyksIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gb3JpZ2luXzE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IHJlY29yZC5sZW5ndGggLSAxOyBqID4gMDsgai0tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2xvb3BfMihqKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzZfMSkgeyBlXzYgPSB7IGVycm9yOiBlXzZfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV82KSB0aHJvdyBlXzYuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJ2YWxpZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoID4gTUlOX1BPSU5UU19JTl9WQUxJRF9QT0xZR09OO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJmaXJzdFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXQoMCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcInNlY29uZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXQoMSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImxhc3RcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmF0KHRoaXMubGVuZ3RoIC0gMSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm1pbkFyZWFSZWN0YW5nbGVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBlXzcsIF9hLCBlXzgsIF9iO1xuICAgICAgICAgICAgdmFyIHAgPSB0aGlzLmNvbnZleDtcbiAgICAgICAgICAgIHZhciByZXN1bHRQb2x5Z29uID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgICAgICB2YXIgcmVzdWx0QXJlYSA9IEluZmluaXR5O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYyA9IF9fdmFsdWVzKHAubG9vcFBvaW50c0dlbmVyYXRvcih0cnVlKSgpKSwgX2QgPSBfYy5uZXh0KCk7ICFfZC5kb25lOyBfZCA9IF9jLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2UgPSBfX3JlYWQoX2QudmFsdWUsIDMpLCBsID0gX2VbMl07XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXhXaWR0aCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXhXaWR0aFBvaW50MSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXhXaWR0aFBvaW50MiA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXhIZWlnaHQgPSAwO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbWF4SGVpZ2h0UG9pbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2YgPSAoZV84ID0gdm9pZCAwLCBfX3ZhbHVlcyhwLmxvb3BQb2ludHNHZW5lcmF0b3IoKSgpKSksIF9nID0gX2YubmV4dCgpOyAhX2cuZG9uZTsgX2cgPSBfZi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2ggPSBfX3JlYWQoX2cudmFsdWUsIDQpLCB6ID0gX2hbMF0sIGkgPSBfaFszXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcDEgPSBsLmZpbmRQb2ludChsLmZpbmRQZXJwZW5kaWN1bGFyKHopKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IHAxLmRpc3RhbmNlKHopO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID49IG1heEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQgPSBoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHRQb2ludCA9IHo7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSBpOyBqIDwgcC5sZW5ndGggLSAxOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAyID0gbC5maW5kUG9pbnQobC5maW5kUGVycGVuZGljdWxhcihwLmF0KGopKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3ID0gcDEuZGlzdGFuY2UocDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA+PSBtYXhXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGggPSB3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGhQb2ludDEgPSBwMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoUG9pbnQyID0gcDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVfOF8xKSB7IGVfOCA9IHsgZXJyb3I6IGVfOF8xIH07IH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfZyAmJiAhX2cuZG9uZSAmJiAoX2IgPSBfZi5yZXR1cm4pKSBfYi5jYWxsKF9mKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV84KSB0aHJvdyBlXzguZXJyb3I7IH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIW1heFdpZHRoUG9pbnQxIHx8ICFtYXhXaWR0aFBvaW50MiB8fCAhbWF4SGVpZ2h0UG9pbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciB3aWR0aExpbmUgPSBtYXhXaWR0aFBvaW50MS5maW5kTGluZShtYXhXaWR0aFBvaW50Mik7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwZXJwZW5kaWN1bGFyMSA9IHdpZHRoTGluZS5maW5kUGVycGVuZGljdWxhcihtYXhXaWR0aFBvaW50MSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwZXJwZW5kaWN1bGFyMiA9IHdpZHRoTGluZS5maW5kUGVycGVuZGljdWxhcihtYXhXaWR0aFBvaW50Mik7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wUG9seWdvbiA9IG5ldyBEUG9seWdvbihbXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aFBvaW50MSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoUG9pbnQyLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGVycGVuZGljdWxhcjIuZmluZFBvaW50KHBlcnBlbmRpY3VsYXIyLmZpbmRQZXJwZW5kaWN1bGFyKG1heEhlaWdodFBvaW50KSksXG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJwZW5kaWN1bGFyMS5maW5kUG9pbnQocGVycGVuZGljdWxhcjEuZmluZFBlcnBlbmRpY3VsYXIobWF4SGVpZ2h0UG9pbnQpKVxuICAgICAgICAgICAgICAgICAgICBdKS5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGVtcFBvbHlnb24uYXJlYSA8IHJlc3VsdEFyZWEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFBvbHlnb24gPSB0ZW1wUG9seWdvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFyZWEgPSB0ZW1wUG9seWdvbi5hcmVhO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfN18xKSB7IGVfNyA9IHsgZXJyb3I6IGVfN18xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfZCAmJiAhX2QuZG9uZSAmJiAoX2EgPSBfYy5yZXR1cm4pKSBfYS5jYWxsKF9jKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzcpIHRocm93IGVfNy5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFBvbHlnb247XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImNvbnZleFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHAgPSB0aGlzLmNsb25lKCkub3BlbigpO1xuICAgICAgICAgICAgdmFyIGlzQ2xvY2t3aXNlID0gcC5pc0Nsb2Nrd2lzZTtcbiAgICAgICAgICAgIGlmICghaXNDbG9ja3dpc2UpIHtcbiAgICAgICAgICAgICAgICBwLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBsID0gMDtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICB2YXIgcDEgPSBwLmxhc3Q7XG4gICAgICAgICAgICAgICAgdmFyIHAyID0gcC5maXJzdDtcbiAgICAgICAgICAgICAgICB2YXIgcDMgPSBwLnNlY29uZDtcbiAgICAgICAgICAgICAgICB2YXIgZCA9IHAyLmZpbmRJbm5lckFuZ2xlKHAxLCBwMyk7XG4gICAgICAgICAgICAgICAgaWYgKGQgPiBNYXRoLlBJIHx8IEROdW1iZXJzLmxpa2VaZXJvKEROdW1iZXJzLnJhZDJEZWcoZCkpIHx8IEROdW1iZXJzLmxpa2VQSShkKSB8fCBETnVtYmVycy5saWtlMlBJKGQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHAucmVtb3ZlUGFydCgtMSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IHdoaWxlIChwLmxlbmd0aCk7XG4gICAgICAgICAgICBwLmNsb3NlKCk7XG4gICAgICAgICAgICB2YXIgaXRlcmF0aW9uID0gMDtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBwID0gcC5kZWludGVyc2VjdGlvbjtcbiAgICAgICAgICAgICAgICBsID0gcC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBwLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcDEgPSBwLmF0KGkgLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHAyID0gcC5hdChpKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHAzID0gcC5hdChpICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkID0gcDIuZmluZElubmVyQW5nbGUocDEsIHAzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGQgPiBNYXRoLlBJIHx8IEROdW1iZXJzLmxpa2VaZXJvKEROdW1iZXJzLnJhZDJEZWcoZCkpIHx8IEROdW1iZXJzLmxpa2VQSShkKSB8fCBETnVtYmVycy5saWtlMlBJKGQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwLnJlbW92ZVBhcnQoLS1pLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpdGVyYXRpb24rKztcbiAgICAgICAgICAgIH0gd2hpbGUgKHAubGVuZ3RoICE9PSBsICYmIGl0ZXJhdGlvbiA8IE1BWF9DT05WRVhfSVRFUkFUSU9OUyk7XG4gICAgICAgICAgICBpZiAoIWlzQ2xvY2t3aXNlKSB7XG4gICAgICAgICAgICAgICAgcC5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiaXNDbG9ja3dpc2VcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBlXzksIF9hO1xuICAgICAgICAgICAgdmFyIHN1bSA9IDA7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5jbG9uZSgpLmNsb3NlKClcbiAgICAgICAgICAgICAgICAgICAgLmxvb3BQb2ludHNHZW5lcmF0b3IoKSgpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2QgPSBfX3JlYWQoX2MudmFsdWUsIDIpLCBfZSA9IF9kWzBdLCB4ID0gX2UueCwgeSA9IF9lLnksIF9mID0gX2RbMV0sIGEgPSBfZi54LCBiID0gX2YueTtcbiAgICAgICAgICAgICAgICAgICAgc3VtICs9IChhIC0geCkgKiAoYiArIHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzlfMSkgeyBlXzkgPSB7IGVycm9yOiBlXzlfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV85KSB0aHJvdyBlXzkuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdW0gPCAwO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJjbG9ja1dpc2VcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ2xvY2t3aXNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb25lKCkucmV2ZXJzZSgpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJub0hvbGVzXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcmVzID0gdGhpcy5jbG9uZSgpO1xuICAgICAgICAgICAgcmVzLmhvbGVzID0gW107XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnJlZHVjZSA9IGZ1bmN0aW9uIChmLCB2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBQb2ludHMucmVkdWNlKGYsIHYpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChsLCBpbmNsdWRlT25seSkge1xuICAgICAgICB2YXIgZV8xMCwgX2E7XG4gICAgICAgIGlmIChpbmNsdWRlT25seSA9PT0gdm9pZCAwKSB7IGluY2x1ZGVPbmx5ID0gZmFsc2U7IH1cbiAgICAgICAgdmFyIHJlcyA9IFtdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLmxvb3BQb2ludHNHZW5lcmF0b3IodHJ1ZSkoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2QgPSBfX3JlYWQoX2MudmFsdWUsIDMpLCBsaW5lID0gX2RbMl07XG4gICAgICAgICAgICAgICAgdmFyIGludGVyc2VjdCA9IGxpbmUuaW50ZXJzZWN0aW9uKGwsIDAsIGluY2x1ZGVPbmx5KTtcbiAgICAgICAgICAgICAgICBpZiAoaW50ZXJzZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKGludGVyc2VjdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzEwXzEpIHsgZV8xMCA9IHsgZXJyb3I6IGVfMTBfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTApIHRocm93IGVfMTAuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNldENlbnRlciA9IGZ1bmN0aW9uIChuZXdDZW50ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9vcCgpXG4gICAgICAgICAgICAubW92ZShuZXdDZW50ZXIuY2xvbmUoKS5tb3ZlKHRoaXMuY2VudGVyLm1pbnVzKCkpKVxuICAgICAgICAgICAgLnJ1bigpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnRvV0tUID0gZnVuY3Rpb24gKHR5cGUsIHdpdGhaKSB7XG4gICAgICAgIGlmICh0eXBlID09PSB2b2lkIDApIHsgdHlwZSA9IERQb2x5Z29uLldLVF9QT0xZR09OOyB9XG4gICAgICAgIGlmICh3aXRoWiA9PT0gdm9pZCAwKSB7IHdpdGhaID0gZmFsc2U7IH1cbiAgICAgICAgaWYgKHR5cGUgPT09IERQb2x5Z29uLldLVF9QT0xZR09OKSB7XG4gICAgICAgICAgICB2YXIgaCA9ICcnO1xuICAgICAgICAgICAgaWYgKHRoaXMuaG9sZXMgJiYgdGhpcy5ob2xlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBoID0gXCIsIFwiLmNvbmNhdCh0aGlzLmhvbGVzLm1hcChmdW5jdGlvbiAoaG9sZSkgeyByZXR1cm4gaG9sZS50b1N0cmluZygpOyB9KVxuICAgICAgICAgICAgICAgICAgICAuam9pbignLCAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gXCJQT0xZR09OICgoXCIuY29uY2F0KHRoaXMuZGVpbnRlcnNlY3Rpb24ubWFwQXJyYXkoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIFwiXCIuY29uY2F0KHIueCwgXCIgXCIpLmNvbmNhdChyLnkpLmNvbmNhdCh3aXRoWiA/IFwiIFwiLmNvbmNhdChyLnopIDogJycpOyB9KVxuICAgICAgICAgICAgICAgIC5qb2luKCcsICcpLCBcIilcIikuY29uY2F0KGgsIFwiKVwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCJMSU5FU1RSSU5HIChcIi5jb25jYXQodGhpcy5tYXBBcnJheShmdW5jdGlvbiAocikgeyByZXR1cm4gXCJcIi5jb25jYXQoci54LCBcIiBcIikuY29uY2F0KHIueSkuY29uY2F0KHdpdGhaID8gXCIgXCIuY29uY2F0KHIueikgOiAnJyk7IH0pXG4gICAgICAgICAgICAuam9pbignLCAnKSwgXCIpXCIpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmZpbHRlciA9IGZ1bmN0aW9uIChmKSB7XG4gICAgICAgIHRoaXMucFBvaW50cyA9IHRoaXMucFBvaW50cy5maWx0ZXIoZik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLm1hcCA9IGZ1bmN0aW9uIChmKSB7XG4gICAgICAgIHRoaXMucFBvaW50cyA9IHRoaXMubWFwQXJyYXkoZik7XG4gICAgICAgIHRoaXMuaG9sZXMgPSB0aGlzLmhvbGVzLm1hcChmdW5jdGlvbiAoaCkgeyByZXR1cm4gaC5tYXAoZik7IH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5tYXBBcnJheSA9IGZ1bmN0aW9uIChmKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBQb2ludHMubWFwKGYpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNvcnQgPSBmdW5jdGlvbiAoZikge1xuICAgICAgICB0aGlzLnBvaW50cy5zb3J0KGYpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgICAgIHJldHVybiB0aGlzLnBvaW50c1soaW5kZXggJSBsZW5ndGggKyBsZW5ndGgpICUgbGVuZ3RoXTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5wb3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBQb2ludHMucG9wKCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoX2EgPSB0aGlzLnBQb2ludHMpLnB1c2guYXBwbHkoX2EsIF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZChhcmdzKSwgZmFsc2UpKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zaGlmdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cy5zaGlmdCgpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKF9hID0gdGhpcy5wUG9pbnRzKS51bnNoaWZ0LmFwcGx5KF9hLCBfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoYXJncyksIGZhbHNlKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUucmV2ZXJzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wUG9pbnRzID0gdGhpcy5wUG9pbnRzLnJldmVyc2UoKTtcbiAgICAgICAgdGhpcy5ob2xlcyA9IHRoaXMuaG9sZXMubWFwKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLnJldmVyc2UoKTsgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMucFBvaW50cy5tYXAoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIuZ2V0VmFsdWUoKTsgfSkgKyB0aGlzLmhvbGVzXG4gICAgICAgICAgICAucmVkdWNlKGZ1bmN0aW9uIChhLCBoKSB7IHJldHVybiBhICsgaC5nZXRWYWx1ZSgpOyB9LCAnJykpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gXCIoXCIuY29uY2F0KHRoaXMubWFwQXJyYXkoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIudG9TdHJpbmcoKTsgfSkuam9pbignLCAnKSwgXCIpXCIpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcDAgPSB0aGlzLmZpcnN0O1xuICAgICAgICBpZiAocDAgJiYgIXRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aGlzLnB1c2gocDAuY2xvbmUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHAgPSB0aGlzLmZpcnN0O1xuICAgICAgICBpZiAodGhpcy5sZW5ndGggPiAyICYmIHAgJiYgdGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHBvbHkpIHtcbiAgICAgICAgdmFyIHJlcyA9IG5ldyBEUG9seWdvbihfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZCh0aGlzLnBvaW50cyksIGZhbHNlKSwgX19yZWFkKHBvbHkucG9pbnRzKSwgZmFsc2UpKS5jbG9zZSgpO1xuICAgICAgICByZXMuaG9sZXMgPSBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZCh0aGlzLmhvbGVzKSwgZmFsc2UpLCBfX3JlYWQocG9seS5ob2xlcyksIGZhbHNlKS5tYXAoZnVuY3Rpb24gKGgpIHsgcmV0dXJuIGguY2xvbmUoKTsgfSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cy5zb21lKGZ1bmN0aW9uIChxKSB7IHJldHVybiBxLmVxdWFsKHApOyB9KTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHJlcyA9IG5ldyBEUG9seWdvbih0aGlzLnBvaW50cy5tYXAoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIuY2xvbmUoKTsgfSkpO1xuICAgICAgICByZXMuaG9sZXMgPSB0aGlzLmhvbGVzLm1hcChmdW5jdGlvbiAoaCkgeyByZXR1cm4gaC5jbG9uZSgpOyB9KTtcbiAgICAgICAgcmVzLnByb3BlcnRpZXMgPSBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wZXJ0aWVzKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5lcXVhbCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGlmICghKHAgaW5zdGFuY2VvZiBEUG9seWdvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5sZW5ndGggIT09IHAubGVuZ3RoIHx8IHRoaXMuaG9sZXMubGVuZ3RoICE9PSBwLmhvbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodGhpcy5zYW1lKHApICYmXG4gICAgICAgICAgICB0aGlzLmhvbGVzLnJlZHVjZShmdW5jdGlvbiAoYSwgaG9sZSkgeyByZXR1cm4gYSAmJiBwLmhvbGVzLnNvbWUoZnVuY3Rpb24gKHBIb2xlcykgeyByZXR1cm4gcEhvbGVzLnNhbWUoaG9sZSk7IH0pOyB9LCB0cnVlKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2FtZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBwQ2xvbmUgPSBwLmNsb25lKCkuY2xvc2UoKTtcbiAgICAgICAgdmFyIHRoaXNBc1N0cmluZyA9IHRoaXMuY2xvbmUoKVxuICAgICAgICAgICAgLmNsb3NlKClcbiAgICAgICAgICAgIC50b1N0cmluZygpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBDbG9uZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXNBc1N0cmluZyA9PT0gcENsb25lLnRvU3RyaW5nKCkgfHwgdGhpc0FzU3RyaW5nID09PSBwQ2xvbmUuY2xvbmUoKS5yZXZlcnNlKClcbiAgICAgICAgICAgICAgICAudG9TdHJpbmcoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcENsb25lLm5leHRTdGFydCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5maW5kSW5kZXggPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9pbnRzLmZpbmRJbmRleChmdW5jdGlvbiAodCkgeyByZXR1cm4gdC5lcXVhbChhKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucG9pbnRzLmZpbmRJbmRleChhKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5hcHByb3hpbWF0aW9uID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgaWYgKGUgPT09IHZvaWQgMCkgeyBlID0gTWF0aC5zcXJ0KHRoaXMucGVyaW1ldGVyKSAqIEFQUFJPWElNQVRJT05fVkFMVUU7IH1cbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbih0aGlzLmNsb25lKCkuZG91Z2xhc1BldWNrZXIodGhpcy5wUG9pbnRzLCBlKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuaW5zZXJ0QWZ0ZXIgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgcG9pbnRzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBwb2ludHNbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgKF9hID0gdGhpcy5wUG9pbnRzKS5zcGxpY2UuYXBwbHkoX2EsIF9fc3ByZWFkQXJyYXkoW2luZGV4ICsgMSwgMF0sIF9fcmVhZChwb2ludHMpLCBmYWxzZSkpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnJlbW92ZVBhcnQgPSBmdW5jdGlvbiAoaW5kZXgsIGNvdW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBQb2ludHMuc3BsaWNlKGluZGV4ICsgMSwgY291bnQpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmhhc1NpbXBsZUludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBleHRlbmQxID0gdGhpcy5leHRlbmQ7XG4gICAgICAgIHZhciBleHRlbmQyID0gcC5leHRlbmQ7XG4gICAgICAgIHZhciBleHRlbmQxcG9pbnRzID0gZXh0ZW5kMS5wb2ludHM7XG4gICAgICAgIHZhciBleHRlbmQycG9pbnRzID0gZXh0ZW5kMi5wb2ludHM7XG4gICAgICAgIHZhciBpbjEgPSBleHRlbmQxcG9pbnRzLnNvbWUoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIGV4dGVuZDIuc2ltcGxlSW5jbHVkZSh0KTsgfSk7XG4gICAgICAgIHZhciBpbjIgPSBleHRlbmQycG9pbnRzLnNvbWUoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIGV4dGVuZDEuc2ltcGxlSW5jbHVkZSh0KTsgfSk7XG4gICAgICAgIHJldHVybiBpbjEgfHwgaW4yO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpbXBsZUluY2x1ZGUgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zaW1wbGVJbmNsdWRlWChwKSAmJiB0aGlzLnNpbXBsZUluY2x1ZGVZKHApO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmRyYXdQb2x5Z29uT25DYW52YXMgPSBmdW5jdGlvbiAoY2FudmFzLCBmaWxsQ29sb3IsIHN0cm9rZUNvbG9yLCBzaGFkb3dDb2xvciwgbGluZVdpZHRoLCBzdGVwcykge1xuICAgICAgICBpZiAobGluZVdpZHRoID09PSB2b2lkIDApIHsgbGluZVdpZHRoID0gMTsgfVxuICAgICAgICBpZiAoc3RlcHMgPT09IHZvaWQgMCkgeyBzdGVwcyA9IHRoaXMubGVuZ3RoIC0gMTsgfVxuICAgICAgICBpZiAodGhpcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgICBpZiAoZmlsbENvbG9yKSB7XG4gICAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGZpbGxDb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdHJva2VDb2xvcikge1xuICAgICAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IHN0cm9rZUNvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxpbmVXaWR0aCkge1xuICAgICAgICAgICAgICAgIGN0eC5saW5lV2lkdGggPSBsaW5lV2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlsbENvbG9yIHx8IHN0cm9rZUNvbG9yKSB7XG4gICAgICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5nb0J5UGF0aChjdHgsIHN0ZXBzICUgdGhpcy5sZW5ndGgpO1xuICAgICAgICAgICAgaWYgKHNoYWRvd0NvbG9yKSB7XG4gICAgICAgICAgICAgICAgY3R4LnNoYWRvd0NvbG9yID0gc2hhZG93Q29sb3I7XG4gICAgICAgICAgICAgICAgY3R4LnNoYWRvd0JsdXIgPSAwO1xuICAgICAgICAgICAgICAgIGN0eC5zaGFkb3dPZmZzZXRYID0gMTtcbiAgICAgICAgICAgICAgICBjdHguc2hhZG93T2Zmc2V0WSA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlsbENvbG9yKSB7XG4gICAgICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpO1xuICAgICAgICAgICAgICAgIGN0eC5maWxsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3Ryb2tlQ29sb3IpIHtcbiAgICAgICAgICAgICAgICBjdHguc3Ryb2tlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuY2xlYXJQb2x5Z29uT25DYW52YXMgPSBmdW5jdGlvbiAoY2FudmFzKSB7XG4gICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgdmFyIG9sZCA9IGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb247XG4gICAgICAgIGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnZGVzdGluYXRpb24tb3V0JztcbiAgICAgICAgdGhpcy5nb0J5UGF0aChjdHgpO1xuICAgICAgICBjdHguZmlsbCgpO1xuICAgICAgICBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gb2xkO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmNvbnRhaW4gPSBmdW5jdGlvbiAocCwgaXNCb3JkZXJJbnNpZGUpIHtcbiAgICAgICAgdmFyIGVfMTEsIF9hO1xuICAgICAgICBpZiAoaXNCb3JkZXJJbnNpZGUgPT09IHZvaWQgMCkgeyBpc0JvcmRlckluc2lkZSA9IGZhbHNlOyB9XG4gICAgICAgIHZhciBzaW1wbGVJbmNsdWRlID0gdGhpcy5zaW1wbGVJbmNsdWRlKHApO1xuICAgICAgICBpZiAoIXNpbXBsZUluY2x1ZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb25Cb3JkZXIgPSB0aGlzLm9uQm9yZGVyKHApO1xuICAgICAgICBpZiAob25Cb3JkZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBpc0JvcmRlckluc2lkZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcG9seSA9IHRoaXMuZGVpbnRlcnNlY3Rpb247XG4gICAgICAgIHZhciB0b3RhbEZpID0gMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXMocG9seS5sb29wUG9pbnRzR2VuZXJhdG9yKCkoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2QgPSBfX3JlYWQoX2MudmFsdWUsIDIpLCBfZSA9IF9kWzBdLCB4ID0gX2UueCwgeSA9IF9lLnksIF9mID0gX2RbMV0sIGEgPSBfZi54LCBiID0gX2YueTtcbiAgICAgICAgICAgICAgICB2YXIgbGluZTEgPSBuZXcgRExpbmUoeCAtIHAueCwgeSAtIHAueSwgMCk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmUyID0gbmV3IERMaW5lKGEgLSBwLngsIGIgLSBwLnksIDApO1xuICAgICAgICAgICAgICAgIHZhciBmaURpZiA9IGxpbmUxLmZpbmRGaShsaW5lMik7XG4gICAgICAgICAgICAgICAgaWYgKGxpbmUxLnZlY3RvclByb2R1Y3QobGluZTIpLmMgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvdGFsRmkgKz0gZmlEaWY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0b3RhbEZpIC09IGZpRGlmO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xMV8xKSB7IGVfMTEgPSB7IGVycm9yOiBlXzExXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzExKSB0aHJvdyBlXzExLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVwcyA9IE1hdGguUEkgLyAxMDAwMDtcbiAgICAgICAgdmFyIGFic1RvdGFsRmkgPSBNYXRoLmFicyh0b3RhbEZpKTtcbiAgICAgICAgaWYgKGFic1RvdGFsRmkgPCBlcHMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChNYXRoLmFicygyICogTWF0aC5QSSAtIGFic1RvdGFsRmkpIDwgZXBzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbnRhaW5zMiBmYWlsZCcpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLm9uQm9yZGVyID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIGVfMTIsIF9hO1xuICAgICAgICB2YXIgc2ltcGxlSW5jbHVkZSA9IHRoaXMuc2ltcGxlSW5jbHVkZShwKTtcbiAgICAgICAgaWYgKHNpbXBsZUluY2x1ZGUpIHtcbiAgICAgICAgICAgIHZhciBwb2x5ID0gdGhpcy5kZWludGVyc2VjdGlvbjtcbiAgICAgICAgICAgIHZhciBoYXNTYW1lUG9pbnQgPSB0aGlzLnBvaW50cy5zb21lKGZ1bmN0aW9uIChwb2ludCkgeyByZXR1cm4gcG9pbnQuZXF1YWwocCk7IH0pO1xuICAgICAgICAgICAgaWYgKGhhc1NhbWVQb2ludCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHBvbHkubG9vcFBvaW50c0dlbmVyYXRvcih0cnVlKSgpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2QgPSBfX3JlYWQoX2MudmFsdWUsIDMpLCBwb2x5Z29uTGluZSA9IF9kWzJdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgb25Cb3JkZXIgPSBwb2x5Z29uTGluZS54KHApLmVxdWFsKHApICYmIHBvbHlnb25MaW5lLmluUmFuZ2UocCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvbkJvcmRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV8xMl8xKSB7IGVfMTIgPSB7IGVycm9yOiBlXzEyXzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTIpIHRocm93IGVfMTIuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUubmV4dFN0YXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgdGhpcy5wdXNoKHRoaXMuc2hpZnQoKSk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUucmVtb3ZlRHVwbGljYXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgdmFyIHAxID0gdGhpcy5hdChpKTtcbiAgICAgICAgICAgIHZhciBwMiA9IHRoaXMuYXQoaSArIDEpO1xuICAgICAgICAgICAgaWYgKHAxLmVxdWFsKHAyKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlUGFydChpLCAxKTtcbiAgICAgICAgICAgICAgICBpLS07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi50b0dlb0pTT05GZWF0dXJlQ29sbGVjdGlvbiA9IGZ1bmN0aW9uIChwb2x5Z29ucywgZm9ybWF0KSB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSBER2VvLnBhcnNlRm9ybWF0OyB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgICAgICAgZmVhdHVyZXM6IHBvbHlnb25zLm1hcChmdW5jdGlvbiAocG9seWdvbikgeyByZXR1cm4gcG9seWdvbi50b0dlb0pTT05GZWF0dXJlKGZvcm1hdCk7IH0pXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBEUG9seWdvbi5wYXJzZSA9IGZ1bmN0aW9uIChhLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgaWYgKGEudHlwZSkge1xuICAgICAgICAgICAgc3dpdGNoIChhLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdGZWF0dXJlQ29sbGVjdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmZlYXR1cmVzLnJlZHVjZShmdW5jdGlvbiAoYWssIGYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gRFBvbHlnb24ucGFyc2UoZiwgZm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWsucHVzaC5hcHBseShhaywgX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHQpLCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWsucHVzaCh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhaztcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0ZlYXR1cmUnOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0ID0gRFBvbHlnb24ucGFyc2UoYS5nZW9tZXRyeSwgZm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByb3BzXzEgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYS5wcm9wZXJ0aWVzKSwgKGEuaWQgPyAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGEuaWRcbiAgICAgICAgICAgICAgICAgICAgfSkgOiAoe30pKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0LmZvckVhY2goZnVuY3Rpb24gKHJlY29yZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5wcm9wZXJ0aWVzID0gX19hc3NpZ24oe30sIHByb3BzXzEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0LnByb3BlcnRpZXMgPSBfX2Fzc2lnbih7fSwgcHJvcHNfMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ0xpbmVTdHJpbmcnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ011bHRpUG9pbnQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKGEuY29vcmRpbmF0ZXMubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiBEUG9pbnQucGFyc2UoYywgZm9ybWF0KTsgfSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1BvbHlnb24nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5jb29yZGluYXRlcy5yZWR1Y2UoZnVuY3Rpb24gKGFrLCBsaW5lLCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWsucG9pbnRzID0gbGluZS5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIERQb2ludC5wYXJzZShjLCBmb3JtYXQpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFrLmhvbGVzLnB1c2gobmV3IERQb2x5Z29uKGxpbmUubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiBEUG9pbnQucGFyc2UoYywgZm9ybWF0KTsgfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhaztcbiAgICAgICAgICAgICAgICAgICAgfSwgbmV3IERQb2x5Z29uKCkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJ011bHRpTGluZVN0cmluZyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmNvb3JkaW5hdGVzLnJlZHVjZShmdW5jdGlvbiAoYWssIGxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFrLnB1c2gobmV3IERQb2x5Z29uKGxpbmUubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiBEUG9pbnQucGFyc2UoYywgZm9ybWF0KTsgfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhaztcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgICAgIGNhc2UgJ011bHRpUG9seWdvbic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmNvb3JkaW5hdGVzLnJlZHVjZShmdW5jdGlvbiAoYWssIGNvb3JkaW5hdGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhay5wdXNoKERQb2x5Z29uLnBhcnNlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IGNvb3JkaW5hdGVzXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBmb3JtYXQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhaztcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0dlb21ldHJ5Q29sbGVjdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmdlb21ldHJpZXMucmVkdWNlKGZ1bmN0aW9uIChhaywgbGluZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWsucHVzaChEUG9seWdvbi5wYXJzZShsaW5lLCBmb3JtYXQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhaztcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbihhXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiBEUG9pbnQucGFyc2UociwgZm9ybWF0KTsgfSkpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnRvQXJyYXlPZkNvb3JkcyA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgcmV0dXJuIHRoaXMubWFwQXJyYXkoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIudG9Db29yZHMoZm9ybWF0KTsgfSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudG9HZW9KU09ORmVhdHVyZSA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IF9fYXNzaWduKHt9LCB0aGlzLnByb3BlcnRpZXMpLFxuICAgICAgICAgICAgZ2VvbWV0cnk6IHRoaXMudG9HZW9KU09OKGZvcm1hdClcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS50b0dlb0pTT04gPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSBER2VvLnBhcnNlRm9ybWF0OyB9XG4gICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IF9fc3ByZWFkQXJyYXkoW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvQXJyYXlPZkNvb3Jkcyhmb3JtYXQpXG4gICAgICAgICAgICAgICAgXSwgX19yZWFkKHRoaXMuaG9sZXMubWFwKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLnRvQXJyYXlPZkNvb3Jkcyhmb3JtYXQpOyB9KSksIGZhbHNlKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHRoaXMudG9BcnJheU9mQ29vcmRzKGZvcm1hdClcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5kaXZpZGVUb1BpZWNlcyA9IGZ1bmN0aW9uIChwaWVjZXNDb3VudCwgd2l0aEFsdGl0dWRlKSB7XG4gICAgICAgIHZhciBlXzEzLCBfYTtcbiAgICAgICAgaWYgKHdpdGhBbHRpdHVkZSA9PT0gdm9pZCAwKSB7IHdpdGhBbHRpdHVkZSA9IGZhbHNlOyB9XG4gICAgICAgIHZhciBmdWxsTGVuZ3RoID0gdGhpcy5mdWxsTGVuZ3RoO1xuICAgICAgICB2YXIgcGllY2VMZW5ndGggPSBmdWxsTGVuZ3RoIC8gcGllY2VzQ291bnQ7XG4gICAgICAgIHZhciBjdXJyZW50UGllY2VMZW5ndGggPSBwaWVjZUxlbmd0aDtcbiAgICAgICAgdmFyIF9sb29wXzMgPSBmdW5jdGlvbiAocDEsIHAyLCBpKSB7XG4gICAgICAgICAgICB2YXIgZCA9IHAxLmRpc3RhbmNlKHAyKTtcbiAgICAgICAgICAgIGlmIChkID09PSBjdXJyZW50UGllY2VMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBwMi5wcm9wZXJ0aWVzLnBpZWNlQm9yZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGllY2VMZW5ndGggPSBwaWVjZUxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGQgLSBjdXJyZW50UGllY2VMZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNpcmNsZSA9IG5ldyBEQ2lyY2xlKHAxLCBjdXJyZW50UGllY2VMZW5ndGgpO1xuICAgICAgICAgICAgICAgIHZhciBsaW5lXzEgPSBwMS5maW5kTGluZShwMik7XG4gICAgICAgICAgICAgICAgdmFyIGludGVyc2VjdGlvblBvaW50ID0gbGluZV8xLmludGVyc2VjdGlvbldpdGhDaXJjbGUoY2lyY2xlKVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChwKSB7IHJldHVybiBsaW5lXzEuaW5SYW5nZShwLCBDTE9TRV9UT19JTlRFUlNFQ1RJT05fRElTVEFOQ0UpOyB9KVswXTtcbiAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25Qb2ludC5wcm9wZXJ0aWVzLnBpZWNlQm9yZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzXzEuaW5zZXJ0QWZ0ZXIoaSwgaW50ZXJzZWN0aW9uUG9pbnQpO1xuICAgICAgICAgICAgICAgIGlmICh3aXRoQWx0aXR1ZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHAxeiA9IHAxLno7XG4gICAgICAgICAgICAgICAgICAgIGludGVyc2VjdGlvblBvaW50LnogPSBwMXogLSAocDF6IC0gcDIueikgKiAocDEuZGlzdGFuY2UoaW50ZXJzZWN0aW9uUG9pbnQpIC8gZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRQaWVjZUxlbmd0aCA9IHBpZWNlTGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFBpZWNlTGVuZ3RoIC09IGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciB0aGlzXzEgPSB0aGlzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLmxvb3BQb2ludHNHZW5lcmF0b3IoKSgpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgNCksIHAxID0gX2RbMF0sIHAyID0gX2RbMV0sIGkgPSBfZFszXTtcbiAgICAgICAgICAgICAgICBfbG9vcF8zKHAxLCBwMiwgaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMTNfMSkgeyBlXzEzID0geyBlcnJvcjogZV8xM18xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xMykgdGhyb3cgZV8xMy5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnByZXBhcmVUb0Zhc3RTZWFyY2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlXzE0LCBfYTtcbiAgICAgICAgdGhpcy5zZWFyY2hTdG9yZSA9IHt9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLnBvaW50cyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2QgPSBfYy52YWx1ZSwgeCA9IF9kLngsIHkgPSBfZC55LCB6ID0gX2QuejtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdG9yZVt4XSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF1beV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdG9yZVt4XVt5XSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0b3JlW3hdW3ldW3ogfHwgJ3VuZGVmaW5lZCddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xNF8xKSB7IGVfMTQgPSB7IGVycm9yOiBlXzE0XzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzE0KSB0aHJvdyBlXzE0LmVycm9yOyB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5mYXN0SGFzID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciB4ID0gX2EueCwgeSA9IF9hLnksIHogPSBfYS56O1xuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF0pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF1beV0pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF1beV1beiB8fCAndW5kZWZpbmVkJ10pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hTdG9yZVt4XVt5XVt6IHx8ICd1bmRlZmluZWQnXTtcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiZ3Jvd2luZ1BpZWNlc0dlbmVyYXRvclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHBvbHlnb24gPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgciwgX2EsIF9iLCBwLCBlXzE1XzE7XG4gICAgICAgICAgICAgICAgdmFyIGVfMTUsIF9jO1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2QpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfZC5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZC5sYWJlbCA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2QudHJ5cy5wdXNoKFsxLCA2LCA3LCA4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EgPSBfX3ZhbHVlcyhwb2x5Z29uLnBQb2ludHMpLCBfYiA9IF9hLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZC5sYWJlbCA9IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhX2IuZG9uZSkgcmV0dXJuIFszLCA1XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gX2IudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgci5wdXNoKHApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcC5wcm9wZXJ0aWVzLnBpZWNlQm9yZGVyKSByZXR1cm4gWzMsIDRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCwgci5jbG9uZSgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZC5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2QubGFiZWwgPSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9iID0gX2EubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgMl07XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IHJldHVybiBbMywgOF07XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZV8xNV8xID0gX2Quc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVfMTUgPSB7IGVycm9yOiBlXzE1XzEgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMsIDhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfYiAmJiAhX2IuZG9uZSAmJiAoX2MgPSBfYS5yZXR1cm4pKSBfYy5jYWxsKF9hKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzE1KSB0aHJvdyBlXzE1LmVycm9yOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs3XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODogcmV0dXJuIFsyLCByLmNsb25lKCldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpbXBsZVVuaW9uID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZXMgPSB0aGlzLnNpbXBsZUxvZ2ljRnVuY3Rpb24ocCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAocmVzID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzIGluc3RhbmNlb2YgRFBvbHlnb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpbXBsZUludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpbXBsZUxvZ2ljRnVuY3Rpb24ocCwgZmFsc2UsIGZhbHNlKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zaW1wbGVEaWZmZXJlbmNlID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2ltcGxlTG9naWNGdW5jdGlvbihwLCB0cnVlLCBmYWxzZSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc21hcnRVbmlvbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBlXzE2LCBfYTtcbiAgICAgICAgdmFyIHJlcyA9IHRoaXMuY2xvbmUoKS5zaW1wbGVVbmlvbihwKTtcbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgdmFyIGFsbEhvbGVzID0gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZCh0aGlzLmhvbGVzKSwgZmFsc2UpLCBfX3JlYWQocC5ob2xlcyksIGZhbHNlKSwgX19yZWFkKHJlcy5ob2xlcyksIGZhbHNlKS5tYXAoZnVuY3Rpb24gKGgpIHsgcmV0dXJuIGguY2xvbmUoKTsgfSk7XG4gICAgICAgICAgICB2YXIgX2xvb3BfNCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVfMTcsIF9iO1xuICAgICAgICAgICAgICAgIHZhciBfbG9vcF81ID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGEuZXF1YWwoYikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBhLnNpbXBsZVVuaW9uKGIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWxsSG9sZXMgPSBhbGxIb2xlcy5maWx0ZXIoZnVuY3Rpb24gKHYpIHsgcmV0dXJuICF2LmVxdWFsKGEpICYmICF2LmVxdWFsKGIpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbEhvbGVzLnB1c2gocik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGFsbEhvbGVzXzIgPSAoZV8xNyA9IHZvaWQgMCwgX192YWx1ZXMoYWxsSG9sZXMpKSwgYWxsSG9sZXNfMl8xID0gYWxsSG9sZXNfMi5uZXh0KCk7ICFhbGxIb2xlc18yXzEuZG9uZTsgYWxsSG9sZXNfMl8xID0gYWxsSG9sZXNfMi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gYWxsSG9sZXNfMl8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgX2xvb3BfNShiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV8xN18xKSB7IGVfMTcgPSB7IGVycm9yOiBlXzE3XzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsbEhvbGVzXzJfMSAmJiAhYWxsSG9sZXNfMl8xLmRvbmUgJiYgKF9iID0gYWxsSG9sZXNfMi5yZXR1cm4pKSBfYi5jYWxsKGFsbEhvbGVzXzIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xNykgdGhyb3cgZV8xNy5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGFsbEhvbGVzXzEgPSBfX3ZhbHVlcyhhbGxIb2xlcyksIGFsbEhvbGVzXzFfMSA9IGFsbEhvbGVzXzEubmV4dCgpOyAhYWxsSG9sZXNfMV8xLmRvbmU7IGFsbEhvbGVzXzFfMSA9IGFsbEhvbGVzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBhID0gYWxsSG9sZXNfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBfbG9vcF80KGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzE2XzEpIHsgZV8xNiA9IHsgZXJyb3I6IGVfMTZfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsSG9sZXNfMV8xICYmICFhbGxIb2xlc18xXzEuZG9uZSAmJiAoX2EgPSBhbGxIb2xlc18xLnJldHVybikpIF9hLmNhbGwoYWxsSG9sZXNfMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xNikgdGhyb3cgZV8xNi5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzLmhvbGVzID0gYWxsSG9sZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS50b1RyaWFuZ2xlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHEgPSB0aGlzLmNsb25lKCkucmVtb3ZlRHVwbGljYXRlcygpXG4gICAgICAgICAgICAub3BlbigpO1xuICAgICAgICBpZiAocS5sZW5ndGggPCAzKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHEubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICByZXR1cm4gW3FdO1xuICAgICAgICB9XG4gICAgICAgIHZhciBpbm5lckFuZE5vdEludGVyc2VjdCA9IGZ1bmN0aW9uIChwb2x5LCBwMSwgcDIpIHtcbiAgICAgICAgICAgIHZhciBsID0gcDEuZmluZExpbmUocDIpO1xuICAgICAgICAgICAgdmFyIGNlbnRlciA9IGwuY2VudGVyO1xuICAgICAgICAgICAgdmFyIGludGVyc2VjdGlvbnMgPSBwb2x5LmhvbGVzLnJlZHVjZShmdW5jdGlvbiAoYSwgaG9sZSkgeyByZXR1cm4gYSAmJiBCb29sZWFuKGhvbGUuY2xvbmUoKS5jbG9zZSgpXG4gICAgICAgICAgICAgICAgLmludGVyc2VjdGlvbihsLCB0cnVlKS5sZW5ndGgpOyB9LCBCb29sZWFuKHBvbHkuY2xvbmUoKS5jbG9zZSgpXG4gICAgICAgICAgICAgICAgLmludGVyc2VjdGlvbihsLCB0cnVlKS5sZW5ndGgpKTtcbiAgICAgICAgICAgIHZhciBjb250YWluID0gcG9seS5ob2xlcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIGhvbGUpIHsgcmV0dXJuIGEgJiYgIWhvbGVcbiAgICAgICAgICAgICAgICAuY29udGFpbihjZW50ZXIpOyB9LCBwb2x5LmNvbnRhaW4oY2VudGVyKSk7XG4gICAgICAgICAgICByZXR1cm4gIWludGVyc2VjdGlvbnMgJiYgY29udGFpbjtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGdldFRyaWFuZ2xlID0gZnVuY3Rpb24gKHBvbHkpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9seS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBwMCA9IHBvbHkuYXQoMCk7XG4gICAgICAgICAgICAgICAgdmFyIHAxID0gcG9seS5hdCgxKTtcbiAgICAgICAgICAgICAgICB2YXIgcDIgPSBwb2x5LmF0KDIpO1xuICAgICAgICAgICAgICAgIGlmIChpbm5lckFuZE5vdEludGVyc2VjdChwb2x5LCBwMCwgcDIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvbHkucmVtb3ZlUGFydCgwLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbihbXG4gICAgICAgICAgICAgICAgICAgICAgICBwMC5jbG9uZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcDEuY2xvbmUoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHAyLmNsb25lKClcbiAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBvbHkucHVzaChwb2x5LnNoaWZ0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHAgPSB0aGlzLmNsb25lKCkucmVtb3ZlRHVwbGljYXRlcygpLmNsb2NrV2lzZS5vcGVuKCk7XG4gICAgICAgIHdoaWxlIChwLmhvbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdmFyIGggPSBwLmhvbGVzLnNoaWZ0KClcbiAgICAgICAgICAgICAgICAuY2xvbmUoKVxuICAgICAgICAgICAgICAgIC5jbG9ja1dpc2VcbiAgICAgICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgLmNsb3NlKCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5uZXJBbmROb3RJbnRlcnNlY3QocCwgcC5maXJzdCwgaC5maXJzdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcC5pbnNlcnRBZnRlci5hcHBseShwLCBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoWzBdLCBfX3JlYWQoaC5wb2ludHMpLCBmYWxzZSksIFtwLmZpcnN0XSwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHAucHVzaChwLnNoaWZ0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciByZXMgPSBbXTtcbiAgICAgICAgd2hpbGUgKHAubGVuZ3RoID4gMykge1xuICAgICAgICAgICAgdmFyIHRyaWFuZ2xlID0gZ2V0VHJpYW5nbGUocCk7XG4gICAgICAgICAgICBpZiAodHJpYW5nbGUpIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaCh0cmlhbmdsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnB1c2gocCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZ2V0VHJpYW5nbGVzUG9pbnRJbmRleGVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaW5uZXJBbmROb3RJbnRlcnNlY3QgPSBmdW5jdGlvbiAocG9seSwgcDEsIHAyKSB7XG4gICAgICAgICAgICB2YXIgbCA9IHAxLmZpbmRMaW5lKHAyKTtcbiAgICAgICAgICAgIHZhciBjZW50ZXIgPSBsLmNlbnRlcjtcbiAgICAgICAgICAgIHZhciBpbnRlcnNlY3Rpb25zID0gcG9seS5ob2xlcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIGhvbGUpIHsgcmV0dXJuIGEgJiYgQm9vbGVhbihob2xlLmNsb25lKCkuY2xvc2UoKVxuICAgICAgICAgICAgICAgIC5pbnRlcnNlY3Rpb24obCwgdHJ1ZSkubGVuZ3RoKTsgfSwgQm9vbGVhbihwb2x5LmNsb25lKCkuY2xvc2UoKVxuICAgICAgICAgICAgICAgIC5pbnRlcnNlY3Rpb24obCwgdHJ1ZSkubGVuZ3RoKSk7XG4gICAgICAgICAgICB2YXIgY29udGFpbiA9IHBvbHkuaG9sZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBob2xlKSB7IHJldHVybiBhICYmICFob2xlXG4gICAgICAgICAgICAgICAgLmNvbnRhaW4oY2VudGVyKTsgfSwgcG9seS5jb250YWluKGNlbnRlcikpO1xuICAgICAgICAgICAgcmV0dXJuICFpbnRlcnNlY3Rpb25zICYmIGNvbnRhaW47XG4gICAgICAgIH07XG4gICAgICAgIHZhciBnZXRUcmlhbmdsZSA9IGZ1bmN0aW9uIChwb2x5KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvbHkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgcDAgPSBwb2x5LmF0KDApO1xuICAgICAgICAgICAgICAgIHZhciBwMSA9IHBvbHkuYXQoMSk7XG4gICAgICAgICAgICAgICAgdmFyIHAyID0gcG9seS5hdCgyKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5uZXJBbmROb3RJbnRlcnNlY3QocG9seSwgcDAsIHAyKSkge1xuICAgICAgICAgICAgICAgICAgICBwb2x5LnJlbW92ZVBhcnQoMCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBwMC5wcm9wZXJ0aWVzLmluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgcDEucHJvcGVydGllcy5pbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHAyLnByb3BlcnRpZXMuaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcG9seS5wdXNoKHBvbHkuc2hpZnQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcCA9IHRoaXMuY2xvbmUoKTtcbiAgICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgICAgcC5wb2ludHMuZm9yRWFjaChmdW5jdGlvbiAoZikge1xuICAgICAgICAgICAgZi5wcm9wZXJ0aWVzLmluZGV4ID0gaW5kZXgrKztcbiAgICAgICAgfSk7XG4gICAgICAgIHAuaG9sZXMuZm9yRWFjaChmdW5jdGlvbiAoaCkge1xuICAgICAgICAgICAgaC5wUG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgICAgICAgICBmLnByb3BlcnRpZXMuaW5kZXggPSBpbmRleCsrO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBwID0gcC5jbG9ja1dpc2Uub3BlbigpO1xuICAgICAgICB3aGlsZSAocC5ob2xlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHZhciBoID0gcC5ob2xlcy5zaGlmdCgpXG4gICAgICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgICAgICAuY2xvY2tXaXNlXG4gICAgICAgICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgIC5jbG9zZSgpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlubmVyQW5kTm90SW50ZXJzZWN0KHAsIHAuZmlyc3QsIGguZmlyc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgIHAuaW5zZXJ0QWZ0ZXIuYXBwbHkocCwgX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFswXSwgX19yZWFkKGgucG9pbnRzKSwgZmFsc2UpLCBbcC5maXJzdF0sIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwLnB1c2gocC5zaGlmdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVzID0gW107XG4gICAgICAgIHdoaWxlIChwLmxlbmd0aCA+IDMpIHtcbiAgICAgICAgICAgIHZhciB0cmlhbmdsZSA9IGdldFRyaWFuZ2xlKHApO1xuICAgICAgICAgICAgaWYgKHRyaWFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2guYXBwbHkocmVzLCBfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQodHJpYW5nbGUpLCBmYWxzZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlcy5wdXNoLmFwcGx5KHJlcywgX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHAucG9pbnRzLm1hcChmdW5jdGlvbiAoZikgeyByZXR1cm4gZi5wcm9wZXJ0aWVzLmluZGV4OyB9KSksIGZhbHNlKSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImNsb3NlZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3QuZXF1YWwodGhpcy5sYXN0KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5idWZmZXIgPSBmdW5jdGlvbiAodiwgcXVhZHJhbnRTZWdtZW50cywgdHlwZSkge1xuICAgICAgICBpZiAocXVhZHJhbnRTZWdtZW50cyA9PT0gdm9pZCAwKSB7IHF1YWRyYW50U2VnbWVudHMgPSA2NDsgfVxuICAgICAgICBpZiAodHlwZSA9PT0gdm9pZCAwKSB7IHR5cGUgPSBEUG9seWdvbi5DQVBfUk9VTkQ7IH1cbiAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBqc3RzSW8uV0tUUmVhZGVyKCk7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIG5vSG9sZXMgPSBfYS5ub0hvbGVzLCBjbG9zZWQgPSBfYS5jbG9zZWQ7XG4gICAgICAgIHZhciBwb2ludHMgPSByZWFkZXJcbiAgICAgICAgICAgIC5yZWFkKG5vSG9sZXMudG9XS1QoY2xvc2VkID8gRFBvbHlnb24uV0tUX1BPTFlHT04gOiBEUG9seWdvbi5XS1RfTElORVNUUklORykpXG4gICAgICAgICAgICAuYnVmZmVyKHYsIHF1YWRyYW50U2VnbWVudHMsIHR5cGUpXG4gICAgICAgICAgICAuZ2V0Q29vcmRpbmF0ZXMoKTtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbihwb2ludHMubWFwKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgdmFyIHggPSBfYS54LCB5ID0gX2EueTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KHgsIHkpO1xuICAgICAgICB9KSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2lkZUJ1ZmZlcnMgPSBmdW5jdGlvbiAodiwgcXVhZHJhbnRTZWdtZW50cykge1xuICAgICAgICBpZiAocXVhZHJhbnRTZWdtZW50cyA9PT0gdm9pZCAwKSB7IHF1YWRyYW50U2VnbWVudHMgPSA2NDsgfVxuICAgICAgICB2YXIgX2EgPSB0aGlzLCBmaXJzdCA9IF9hLmZpcnN0LCBsYXN0ID0gX2EubGFzdDtcbiAgICAgICAgdmFyIGJ1ZmZlciA9IHRoaXMuYnVmZmVyKHYsIHF1YWRyYW50U2VnbWVudHMsIERQb2x5Z29uLkNBUF9GTEFUKS5vcGVuKCk7XG4gICAgICAgIHZhciBfYiA9IF9fcmVhZChmaXJzdC5zb3J0QnlEaXN0YW5jZShidWZmZXIpLnBvaW50cy5tYXAoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIucHJvcGVydGllcy5pbmRleDsgfSksIDIpLCBzdGFydDAgPSBfYlswXSwgc3RhcnQxID0gX2JbMV07XG4gICAgICAgIHZhciBfYyA9IF9fcmVhZChsYXN0LnNvcnRCeURpc3RhbmNlKGJ1ZmZlcikucG9pbnRzLm1hcChmdW5jdGlvbiAocikgeyByZXR1cm4gci5wcm9wZXJ0aWVzLmluZGV4OyB9KSwgMiksIGVuZDAgPSBfY1swXSwgZW5kMSA9IF9jWzFdO1xuICAgICAgICB2YXIgZnJvbVBvaW50ID0gTWF0aC5taW4oTWF0aC5tYXgoc3RhcnQwLCBzdGFydDEpLCBNYXRoLm1heChlbmQwLCBlbmQxKSk7XG4gICAgICAgIHZhciB0b1BvaW50ID0gTWF0aC5tYXgoTWF0aC5taW4oc3RhcnQwLCBzdGFydDEpLCBNYXRoLm1pbihlbmQwLCBlbmQxKSk7XG4gICAgICAgIHZhciBsaW5lUGFydCA9IG5ldyBEUG9seWdvbihidWZmZXIucmVtb3ZlUGFydChmcm9tUG9pbnQgLSAxLCB0b1BvaW50IC0gZnJvbVBvaW50ICsgMSkpO1xuICAgICAgICBidWZmZXIudW5zaGlmdChidWZmZXIucG9wKCkpO1xuICAgICAgICByZXR1cm4gW2xpbmVQYXJ0LnJldmVyc2UoKSwgYnVmZmVyXTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zZXRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0aWVzID0gdHlwZW9mIHYgPT09ICdvYmplY3QnID8gdiA6IHYodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmJlemllciA9IGZ1bmN0aW9uIChzdGVwKSB7XG4gICAgICAgIGlmIChzdGVwID09PSB2b2lkIDApIHsgc3RlcCA9IDAuMTsgfVxuICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTsgaSArPSBzdGVwKSB7XG4gICAgICAgICAgICByZXMucHVzaCh0aGlzLmNsb25lKCkuZ2V0QmV6aWVyUG9pbnQoaSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2V0R3Jvd2luZ0hlaWdodCA9IGZ1bmN0aW9uIChmcm9tLCB0bykge1xuICAgICAgICB2YXIgZnVsbExlbmd0aCA9IHRoaXMuZnVsbExlbmd0aDtcbiAgICAgICAgdmFyIHByZXZQb2ludCA9IHRoaXMuZmlyc3Q7XG4gICAgICAgIHZhciBkID0gdG8gLSBmcm9tO1xuICAgICAgICB2YXIgY3VycmVudERpc3RhbmNlID0gMDtcbiAgICAgICAgdGhpcy5sb29wKClcbiAgICAgICAgICAgIC5zZXRaKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgICAgICBjdXJyZW50RGlzdGFuY2UgKz0gcHJldlBvaW50LmRpc3RhbmNlKHApO1xuICAgICAgICAgICAgcHJldlBvaW50ID0gcDtcbiAgICAgICAgICAgIHJldHVybiBmcm9tICsgY3VycmVudERpc3RhbmNlIC8gZnVsbExlbmd0aCAqIGQ7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAucnVuKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmxvb3BQb2ludHNHZW5lcmF0b3IgPSBmdW5jdGlvbiAod2l0aExpbmUpIHtcbiAgICAgICAgaWYgKHdpdGhMaW5lID09PSB2b2lkIDApIHsgd2l0aExpbmUgPSBmYWxzZTsgfVxuICAgICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgaSwgcDEsIHAyO1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5sYWJlbCA9IDE7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGkgPCB0aGF0Lmxlbmd0aCAtIDEpKSByZXR1cm4gWzMsIDRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgcDEgPSB0aGF0LmF0KGkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcDIgPSB0aGF0LmF0KGkgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCwgW3AxLCBwMiwgd2l0aExpbmUgPyBwMS5maW5kTGluZShwMikgOiB1bmRlZmluZWQsIGldXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgX2EubGFiZWwgPSAzO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMsIDFdO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBbMl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZ2V0QmV6aWVyUG9pbnQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB2YXIgZV8xOCwgX2E7XG4gICAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3Q7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5sb29wUG9pbnRzR2VuZXJhdG9yKCkoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2QgPSBfX3JlYWQoX2MudmFsdWUsIDIpLCBwMSA9IF9kWzBdLCBwMiA9IF9kWzFdO1xuICAgICAgICAgICAgICAgIHAxLm1vdmUocDIuY2xvbmUoKS5tb3ZlKHAxLmNsb25lKCkubWludXMoKSlcbiAgICAgICAgICAgICAgICAgICAgLnNjYWxlKHYpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xOF8xKSB7IGVfMTggPSB7IGVycm9yOiBlXzE4XzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzE4KSB0aHJvdyBlXzE4LmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QmV6aWVyUG9pbnQodik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2ltcGxlSW5jbHVkZVggPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgeCA9IHAueDtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluWCA8PSB4ICYmIHRoaXMubWF4WCA+PSB4O1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpbXBsZUluY2x1ZGVZID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIHkgPSBwLnk7XG4gICAgICAgIHJldHVybiB0aGlzLm1pblkgPD0geSAmJiB0aGlzLm1heFkgPj0geTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5kb3VnbGFzUGV1Y2tlciA9IGZ1bmN0aW9uIChwb2ludHMsIGUpIHtcbiAgICAgICAgdmFyIGRNYXggPSAwO1xuICAgICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgICB2YXIgZW5kID0gcG9pbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHZhciBsaW5lID0gcG9pbnRzWzBdLmZpbmRMaW5lKHBvaW50c1tlbmRdKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBlbmQ7IGkrKykge1xuICAgICAgICAgICAgdmFyIGQgPSBsaW5lLnBlcnBlbmRpY3VsYXJEaXN0YW5jZShwb2ludHNbaV0pO1xuICAgICAgICAgICAgaWYgKGQgPiBkTWF4KSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgIGRNYXggPSBkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChkTWF4ID49IGUpIHtcbiAgICAgICAgICAgIHZhciByZWNSZXN1bHQxID0gdGhpcy5kb3VnbGFzUGV1Y2tlcihwb2ludHMuc2xpY2UoMCwgaW5kZXggKyAxKSwgZSk7XG4gICAgICAgICAgICB2YXIgcmVjUmVzdWx0MiA9IHRoaXMuZG91Z2xhc1BldWNrZXIocG9pbnRzLnNsaWNlKGluZGV4KSwgZSk7XG4gICAgICAgICAgICByZWNSZXN1bHQxLnBvcCgpO1xuICAgICAgICAgICAgcmV0dXJuIF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHJlY1Jlc3VsdDEpLCBmYWxzZSksIF9fcmVhZChyZWNSZXN1bHQyKSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbcG9pbnRzWzBdLCBwb2ludHNbZW5kXV07XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZ29CeVBhdGggPSBmdW5jdGlvbiAoY3R4LCBzdGVwcykge1xuICAgICAgICBpZiAoc3RlcHMgPT09IHZvaWQgMCkgeyBzdGVwcyA9IHRoaXMubGVuZ3RoIC0gMTsgfVxuICAgICAgICB2YXIgc3RhcnQgPSB0aGlzLmZpcnN0O1xuICAgICAgICBjdHgubW92ZVRvKHN0YXJ0LngsIHN0YXJ0LnkpO1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8PSAoc3RlcHMgJSB0aGlzLmxlbmd0aCk7IGkrKykge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcy5hdChpKSwgeCA9IF9hLngsIHkgPSBfYS55O1xuICAgICAgICAgICAgY3R4LmxpbmVUbyh4LCB5KTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmdldEpTVFNHZW9tZXRyeSA9IGZ1bmN0aW9uIChwLCB1bmlvblRoaXMsIHVuaW9uVGhhdCkge1xuICAgICAgICB2YXIgdW5pb25PckludGVyc2VjdGlvbiA9IHVuaW9uVGhhdCA9PT0gdW5pb25UaGlzO1xuICAgICAgICB2YXIgcmVhZGVyID0gbmV3IGpzdHNJby5XS1RSZWFkZXIoKTtcbiAgICAgICAgdmFyIGEgPSByZWFkZXIucmVhZCh0aGlzLm5vSG9sZXMudG9XS1QoKSk7XG4gICAgICAgIHZhciBiID0gcmVhZGVyLnJlYWQocC5ub0hvbGVzLnRvV0tUKCkpO1xuICAgICAgICBpZiAoIXVuaW9uT3JJbnRlcnNlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBhLmRpZmZlcmVuY2UoYik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodW5pb25UaGlzKSB7XG4gICAgICAgICAgICByZXR1cm4gYS51bmlvbihiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghdW5pb25UaGlzKSB7XG4gICAgICAgICAgICByZXR1cm4gYS5pbnRlcnNlY3Rpb24oYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zaW1wbGVMb2dpY0Z1bmN0aW9uID0gZnVuY3Rpb24gKHAsIHVuaW9uVGhpcywgdW5pb25UaGF0KSB7XG4gICAgICAgIHZhciBlXzE5LCBfYSwgZV8yMCwgX2IsIGVfMjEsIF9jLCBlXzIyLCBfZDtcbiAgICAgICAgdmFyIGMgPSB0aGlzLmdldEpTVFNHZW9tZXRyeShwLCB1bmlvblRoaXMsIHVuaW9uVGhhdCk7XG4gICAgICAgIGlmIChjKSB7XG4gICAgICAgICAgICB2YXIgY29vcmRpbmF0ZXNfMSA9IGMuZ2V0Q29vcmRpbmF0ZXMoKTtcbiAgICAgICAgICAgIGlmIChjb29yZGluYXRlc18xLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBjb29yZGluYXRlc18xLnJlZHVjZShmdW5jdGlvbiAoYWssIF9hLCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgeCA9IF9hLngsIHkgPSBfYS55O1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGFzdEluZGV4ID0gYWsubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBuZXcgRFBvaW50KHgsIHkpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZmlyc3QgPSBha1tsYXN0SW5kZXhdLmZpcnN0O1xuICAgICAgICAgICAgICAgICAgICBpZiAodC5lcXVhbChmaXJzdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb29yZGluYXRlc18xW2luZGV4ICsgMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dFBvaW50ID0gbmV3IERQb2ludChjb29yZGluYXRlc18xW2luZGV4ICsgMV0ueCwgY29vcmRpbmF0ZXNfMVtpbmRleCArIDFdLnkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChha1tsYXN0SW5kZXhdLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWsucHVzaChuZXcgRFBvbHlnb24oW25leHRQb2ludF0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBha1tsYXN0SW5kZXhdLnB1c2godCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFrO1xuICAgICAgICAgICAgICAgIH0sIFtuZXcgRFBvbHlnb24oW25ldyBEUG9pbnQoY29vcmRpbmF0ZXNfMVswXS54LCBjb29yZGluYXRlc18xWzBdLnkpXSldKTtcbiAgICAgICAgICAgICAgICBpZiAodW5pb25UaGF0ICYmIHVuaW9uVGhpcyAmJiByZXN1bHQubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcmVzdWx0XzEgPSBfX3ZhbHVlcyhyZXN1bHQpLCByZXN1bHRfMV8xID0gcmVzdWx0XzEubmV4dCgpOyAhcmVzdWx0XzFfMS5kb25lOyByZXN1bHRfMV8xID0gcmVzdWx0XzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHEgPSByZXN1bHRfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfbG9vcF82ID0gZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocS5oYXMoci5maXJzdCkgJiYgIXEuZXF1YWwocikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHEuZmluZEluZGV4KHIuZmlyc3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9lID0gcS5wb2ludHMpLnNwbGljZS5hcHBseShfZSwgX19zcHJlYWRBcnJheShbaW5kZXgsIDBdLCBfX3JlYWQoci5wb2ludHMpLCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihmdW5jdGlvbiAoaCkgeyByZXR1cm4gIWguZXF1YWwocik7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHJlc3VsdF8yID0gKGVfMjAgPSB2b2lkIDAsIF9fdmFsdWVzKHJlc3VsdCkpLCByZXN1bHRfMl8xID0gcmVzdWx0XzIubmV4dCgpOyAhcmVzdWx0XzJfMS5kb25lOyByZXN1bHRfMl8xID0gcmVzdWx0XzIubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHJlc3VsdF8yXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdGVfMSA9IF9sb29wXzYocik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVfMSA9PT0gXCJicmVha1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlXzIwXzEpIHsgZV8yMCA9IHsgZXJyb3I6IGVfMjBfMSB9OyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0XzJfMSAmJiAhcmVzdWx0XzJfMS5kb25lICYmIChfYiA9IHJlc3VsdF8yLnJldHVybikpIF9iLmNhbGwocmVzdWx0XzIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yMCkgdGhyb3cgZV8yMC5lcnJvcjsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlXzE5XzEpIHsgZV8xOSA9IHsgZXJyb3I6IGVfMTlfMSB9OyB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0XzFfMSAmJiAhcmVzdWx0XzFfMS5kb25lICYmIChfYSA9IHJlc3VsdF8xLnJldHVybikpIF9hLmNhbGwocmVzdWx0XzEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzE5KSB0aHJvdyBlXzE5LmVycm9yOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihmdW5jdGlvbiAoaCkgeyByZXR1cm4gaC5sZW5ndGggPiAyOyB9KS5tYXAoZnVuY3Rpb24gKGgpIHsgcmV0dXJuIGguY2xvc2UoKTsgfSk7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcmVzdWx0XzMgPSBfX3ZhbHVlcyhyZXN1bHQpLCByZXN1bHRfM18xID0gcmVzdWx0XzMubmV4dCgpOyAhcmVzdWx0XzNfMS5kb25lOyByZXN1bHRfM18xID0gcmVzdWx0XzMubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcSA9IHJlc3VsdF8zXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2xvb3BfNyA9IGZ1bmN0aW9uIChyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcImJyZWFrXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcS5lcXVhbChyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocS5jb250YWluKHIuZmlyc3QsIHRydWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxLmhvbGVzLnB1c2gocik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKGZ1bmN0aW9uIChoKSB7IHJldHVybiAhaC5lcXVhbChyKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByZXN1bHRfNCA9IChlXzIyID0gdm9pZCAwLCBfX3ZhbHVlcyhyZXN1bHQpKSwgcmVzdWx0XzRfMSA9IHJlc3VsdF80Lm5leHQoKTsgIXJlc3VsdF80XzEuZG9uZTsgcmVzdWx0XzRfMSA9IHJlc3VsdF80Lm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHJlc3VsdF80XzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZV8yID0gX2xvb3BfNyhyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlXzIgPT09IFwiYnJlYWtcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChlXzIyXzEpIHsgZV8yMiA9IHsgZXJyb3I6IGVfMjJfMSB9OyB9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0XzRfMSAmJiAhcmVzdWx0XzRfMS5kb25lICYmIChfZCA9IHJlc3VsdF80LnJldHVybikpIF9kLmNhbGwocmVzdWx0XzQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMjIpIHRocm93IGVfMjIuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlXzIxXzEpIHsgZV8yMSA9IHsgZXJyb3I6IGVfMjFfMSB9OyB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0XzNfMSAmJiAhcmVzdWx0XzNfMS5kb25lICYmIChfYyA9IHJlc3VsdF8zLnJldHVybikpIF9jLmNhbGwocmVzdWx0XzMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yMSkgdGhyb3cgZV8yMS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFswXS5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Lm1hcChmdW5jdGlvbiAoZykgeyByZXR1cm4gZy5jbG9zZSgpOyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIERQb2x5Z29uLkNBUF9ST1VORCA9IENBUF9ST1VORDtcbiAgICBEUG9seWdvbi5DQVBfRkxBVCA9IENBUF9GTEFUO1xuICAgIERQb2x5Z29uLkNBUF9TUVVBUkUgPSBDQVBfU1FVQVJFO1xuICAgIERQb2x5Z29uLldLVF9MSU5FU1RSSU5HID0gJ0xJTkVTVFJJTkcnO1xuICAgIERQb2x5Z29uLldLVF9QT0xZR09OID0gJ1BPTFlHT04nO1xuICAgIHJldHVybiBEUG9seWdvbjtcbn0oKSk7XG5leHBvcnQgeyBEUG9seWdvbiB9O1xuIiwiaW1wb3J0IHsgRFBvaW50IH0gZnJvbSAnLi9EUG9pbnQnO1xuaW1wb3J0IHsgY2hlY2tGdW5jdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgRE51bWJlcnMgfSBmcm9tICcuL0ROdW1iZXJzJztcbmltcG9ydCB7IERQb2x5Z29uIH0gZnJvbSAnLi9EUG9seWdvbic7XG52YXIgRExpbmUgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERMaW5lKGEsIGIsIGMsIGJlZ2luLCBlbmQpIHtcbiAgICAgICAgaWYgKGJlZ2luID09PSB2b2lkIDApIHsgYmVnaW4gPSBEUG9pbnQuemVybygpOyB9XG4gICAgICAgIGlmIChlbmQgPT09IHZvaWQgMCkgeyBlbmQgPSBEUG9pbnQuemVybygpOyB9XG4gICAgICAgIHRoaXMuYSA9IGE7XG4gICAgICAgIHRoaXMuYiA9IGI7XG4gICAgICAgIHRoaXMuYyA9IGM7XG4gICAgICAgIHRoaXMuYmVnaW4gPSBiZWdpbjtcbiAgICAgICAgdGhpcy5lbmQgPSBlbmQ7XG4gICAgfVxuICAgIERMaW5lLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBETGluZSh0aGlzLmEsIHRoaXMuYiwgdGhpcy5jLCB0aGlzLmJlZ2luLmNsb25lKCksIHRoaXMuZW5kLmNsb25lKCkpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmZpbmRQZXJwZW5kaWN1bGFyID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZmluZFBlcnBlbmRpY3VsYXInKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMuYmVnaW4nKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMuYmVnaW4pXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcy5lbmQnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMuZW5kKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3AnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHApO1xuICAgICAgICByZXR1cm4gbmV3IERMaW5lKC10aGlzLmIsIHRoaXMuYSwgdGhpcy5iICogcC54IC0gdGhpcy5hICogcC55KTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS5wZXJwZW5kaWN1bGFyRGlzdGFuY2UgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdwZXJwZW5kaWN1bGFyRGlzdGFuY2UnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMuYmVnaW4nKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMuYmVnaW4pXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcy5lbmQnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMuZW5kKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3AnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHApO1xuICAgICAgICB2YXIgcGVycGVuZGljdWxhckxpbmUgPSB0aGlzLmZpbmRQZXJwZW5kaWN1bGFyKHApO1xuICAgICAgICB2YXIgdGFyZ2V0UG9pbnQgPSBwZXJwZW5kaWN1bGFyTGluZS5maW5kUG9pbnQodGhpcyk7XG4gICAgICAgIHJldHVybiB0YXJnZXRQb2ludC5kaXN0YW5jZShwKTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS5pbnRlcnNlY3Rpb24gPSBmdW5jdGlvbiAobCwgZCwgaW5jbHVkZU9ubHkpIHtcbiAgICAgICAgaWYgKGQgPT09IHZvaWQgMCkgeyBkID0gMDsgfVxuICAgICAgICBpZiAoaW5jbHVkZU9ubHkgPT09IHZvaWQgMCkgeyBpbmNsdWRlT25seSA9IGZhbHNlOyB9XG4gICAgICAgIHZhciBwID0gdGhpcy5maW5kUG9pbnQobCk7XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgICBpZiAoaW5jbHVkZU9ubHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbnNpZGVSYW5nZShwLCBkKSAmJiBsLmluc2lkZVJhbmdlKHAsIGQpID8gcCA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pblJhbmdlKHAsIGQpICYmIGwuaW5SYW5nZShwLCBkKSA/IHAgOiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmludGVyc2VjdGlvbldpdGhDaXJjbGUgPSBmdW5jdGlvbiAoY2lyY2xlKSB7XG4gICAgICAgIHZhciBjZW50ZXIgPSBjaXJjbGUuY2VudGVyLCByID0gY2lyY2xlLnI7XG4gICAgICAgIHZhciBwZXIgPSB0aGlzLmZpbmRQZXJwZW5kaWN1bGFyKGNlbnRlcik7XG4gICAgICAgIHZhciB0ID0gdGhpcy5maW5kUG9pbnQocGVyKTtcbiAgICAgICAgdmFyIGRpc3RhbmNlID0gdC5kaXN0YW5jZShjZW50ZXIpO1xuICAgICAgICBpZiAodGhpcy5iZWdpbi5lcXVhbChjZW50ZXIpKSB7XG4gICAgICAgICAgICBkaXN0YW5jZSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZW5kLmVxdWFsKGNlbnRlcikpIHtcbiAgICAgICAgICAgIGRpc3RhbmNlID0gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlzdGFuY2UgPCByKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLCBhID0gX2EuYSwgYiA9IF9hLmIsIGMgPSBfYS5jO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbCkge1xuICAgICAgICAgICAgICAgIHZhciBjdCA9IGNlbnRlci5kaXN0YW5jZSh0KTtcbiAgICAgICAgICAgICAgICB2YXIgbW92ZSA9IE1hdGguc3FydChyICogciAtIGN0ICogY3QpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxZKSB7XG4gICAgICAgICAgICAgICAgICAgIHQueCA9IHRoaXMuYmVnaW4ueDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHIxXzEgPSB0LmNsb25lKCkubW92ZSgwLCAtbW92ZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciByMl8xID0gdC5jbG9uZSgpLm1vdmUoMCwgbW92ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbcjFfMSwgcjJfMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxYKSB7XG4gICAgICAgICAgICAgICAgICAgIHQueSA9IHRoaXMuYmVnaW4ueTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHIxXzIgPSB0LmNsb25lKCkubW92ZShtb3ZlLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHIyXzIgPSB0LmNsb25lKCkubW92ZSgtbW92ZSwgMCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbcjFfMiwgcjJfMl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuYmVnaW4ubGlrZShjZW50ZXIpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHAgPSB0aGlzLmJlZ2luLmNsb25lKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt0aGlzLm1vdmVQb2ludChwLCByKSwgdGhpcy5tb3ZlUG9pbnQocCwgLXIpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmVuZC5saWtlKGNlbnRlcikpIHtcbiAgICAgICAgICAgICAgICB2YXIgcCA9IHRoaXMuZW5kLmNsb25lKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt0aGlzLm1vdmVQb2ludChwLCByKSwgdGhpcy5tb3ZlUG9pbnQocCwgLXIpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzID0gYSAqIGEgKyBiICogYjtcbiAgICAgICAgICAgIHZhciBkID0gciAqIHIgLSBjICogYyAvIHM7XG4gICAgICAgICAgICB2YXIgbXVsdCA9IE1hdGguc3FydChkIC8gcyk7XG4gICAgICAgICAgICB2YXIgcjEgPSB0LmNsb25lKCkubW92ZShiICogbXVsdCwgLWEgKiBtdWx0KTtcbiAgICAgICAgICAgIHZhciByMiA9IHQuY2xvbmUoKS5tb3ZlKC1iICogbXVsdCwgYSAqIG11bHQpO1xuICAgICAgICAgICAgcmV0dXJuIFtyMSwgcjJdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaXN0YW5jZSA9PT0gcikge1xuICAgICAgICAgICAgcmV0dXJuIHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuaW5SYW5nZSA9IGZ1bmN0aW9uIChwLCBkKSB7XG4gICAgICAgIGlmIChkID09PSB2b2lkIDApIHsgZCA9IDA7IH1cbiAgICAgICAgdmFyIF9hID0gdGhpcywgbWluWCA9IF9hLm1pblgsIG1pblkgPSBfYS5taW5ZLCBtYXhYID0gX2EubWF4WCwgbWF4WSA9IF9hLm1heFk7XG4gICAgICAgIHZhciB4ID0gcC54LCB5ID0gcC55O1xuICAgICAgICB2YXIgaXNJblggPSB4ID49IG1pblggLSBkICYmIHggPD0gbWF4WCArIGQ7XG4gICAgICAgIHZhciBpc0luWSA9IHkgPj0gbWluWSAtIGQgJiYgeSA8PSBtYXhZICsgZDtcbiAgICAgICAgcmV0dXJuIGlzSW5YICYmIGlzSW5ZO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmluc2lkZVJhbmdlID0gZnVuY3Rpb24gKHAsIGQpIHtcbiAgICAgICAgaWYgKGQgPT09IHZvaWQgMCkgeyBkID0gMDsgfVxuICAgICAgICB2YXIgX2EgPSB0aGlzLCBiZWdpbiA9IF9hLmJlZ2luLCBlbmQgPSBfYS5lbmQ7XG4gICAgICAgIHJldHVybiB0aGlzLmluUmFuZ2UocCwgZCkgJiYgIWJlZ2luLmxpa2UocCwgMC4wMDAwMSkgJiYgIWVuZC5saWtlKHAsIDAuMDAwMDEpO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJjZW50ZXJcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJlZ2luXG4gICAgICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgICAgICAuc2V0SWZMZXNzVGhhbih0aGlzLmVuZClcbiAgICAgICAgICAgICAgICAubW92ZSh0aGlzLmVuZFxuICAgICAgICAgICAgICAgIC5jbG9uZSgpXG4gICAgICAgICAgICAgICAgLm1vdmUodGhpcy5iZWdpblxuICAgICAgICAgICAgICAgIC5jbG9uZSgpXG4gICAgICAgICAgICAgICAgLm1pbnVzKCkpXG4gICAgICAgICAgICAgICAgLmFicygpXG4gICAgICAgICAgICAgICAgLm1pbnVzKClcbiAgICAgICAgICAgICAgICAuZGl2aWRlKDIpKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwibWluWFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWluKHRoaXMuYmVnaW4ueCwgdGhpcy5lbmQueCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcIm1pbllcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLm1pbih0aGlzLmJlZ2luLnksIHRoaXMuZW5kLnkpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJtYXhYXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgodGhpcy5iZWdpbi54LCB0aGlzLmVuZC54KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwibWF4WVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KHRoaXMuYmVnaW4ueSwgdGhpcy5lbmQueSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBETGluZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBcIihcIi5jb25jYXQodGhpcy5hLCBcIiwgXCIpLmNvbmNhdCh0aGlzLmIsIFwiLCBcIikuY29uY2F0KHRoaXMuYywgXCIpXCIpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gW3RoaXMuYSwgdGhpcy5iLCB0aGlzLmNdO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLnggPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsWSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoLXRoaXMuYyAvIHRoaXMuYSwgcC55KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsWCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQocC54LCAtdGhpcy5jIC8gdGhpcy5iKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IERQb2ludCgtdGhpcy5iIC8gdGhpcy5hICogcC55IC0gdGhpcy5jIC8gdGhpcy5hLCBwLnkpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLnkgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsWSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoLXRoaXMuYyAvIHRoaXMuYSwgcC55KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsWCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQocC54LCAtdGhpcy5jIC8gdGhpcy5iKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IERQb2ludChwLngsIC10aGlzLmEgLyB0aGlzLmIgKiBwLnggLSB0aGlzLmMgLyB0aGlzLmIpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmZpbmRQb2ludCA9IGZ1bmN0aW9uIChsKSB7XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxZICYmIGwuaXNQYXJhbGxlbFkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxYICYmIGwuaXNQYXJhbGxlbFgpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxYICYmIGwuaXNQYXJhbGxlbFkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KC1sLmMgLyBsLmEsIC10aGlzLmMgLyB0aGlzLmIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxZICYmIGwuaXNQYXJhbGxlbFgpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KC10aGlzLmMgLyB0aGlzLmEsIC1sLmMgLyBsLmIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxZKSB7XG4gICAgICAgICAgICB2YXIgeCA9IC10aGlzLmMgLyB0aGlzLmE7XG4gICAgICAgICAgICByZXR1cm4gbC55KG5ldyBEUG9pbnQoeCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxYKSB7XG4gICAgICAgICAgICB2YXIgeSA9IC10aGlzLmMgLyB0aGlzLmI7XG4gICAgICAgICAgICByZXR1cm4gbC54KG5ldyBEUG9pbnQoMCwgeSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsLmlzUGFyYWxsZWxZKSB7XG4gICAgICAgICAgICB2YXIgeCA9IC1sLmMgLyBsLmE7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy55KG5ldyBEUG9pbnQoeCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsLmlzUGFyYWxsZWxYKSB7XG4gICAgICAgICAgICB2YXIgeSA9IC1sLmMgLyBsLmI7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy54KG5ldyBEUG9pbnQoMCwgeSkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXMgPSB0aGlzLnkobmV3IERQb2ludCgobC5jIC8gbC5iIC0gdGhpcy5jIC8gdGhpcy5iKSAvICh0aGlzLmEgLyB0aGlzLmIgLSBsLmEgLyBsLmIpKSk7XG4gICAgICAgIGlmICghaXNGaW5pdGUocmVzLngpICYmICFpc0Zpbml0ZShyZXMueSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcImlzUGFyYWxsZWxcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzUGFyYWxsZWxYIHx8IHRoaXMuaXNQYXJhbGxlbFk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcImlzUGFyYWxsZWxZXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnModGhpcy5iKSA8IDAuMDAxO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJpc1BhcmFsbGVsWFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKHRoaXMuYSkgPCAwLjAwMTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwicG9pbnRzXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gW3RoaXMuYmVnaW4sIHRoaXMuZW5kXTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIERMaW5lLnByb3RvdHlwZS5nZXRGaSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZ2V0RmknKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMuYmVnaW4nKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMuYmVnaW4pXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcy5lbmQnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMuZW5kKTtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5lbmQuY2xvbmUoKS5tb3ZlKHRoaXMuYmVnaW4uY2xvbmUoKS5taW51cygpKSwgeCA9IF9hLngsIHkgPSBfYS55O1xuICAgICAgICB2YXIgdiA9IE1hdGguYXRhbjIoeSwgeCkgLSBNYXRoLlBJO1xuICAgICAgICBpZiAodiA+IDApIHtcbiAgICAgICAgICAgIHYgPSBNYXRoLlBJIC0gdjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKE1hdGguUEkgLSB2KSAlIChNYXRoLlBJICogMik7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUudG9XS1QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIF9iID0gX2EuYmVnaW4sIHgxID0gX2IueCwgeTEgPSBfYi55LCBfYyA9IF9hLmVuZCwgeDIgPSBfYy54LCB5MiA9IF9jLnk7XG4gICAgICAgIHJldHVybiBcIkxJTkVTVFJJTkcgKFwiLmNvbmNhdCh4MSwgXCIgXCIpLmNvbmNhdCh5MSwgXCIsIFwiKS5jb25jYXQoeDIsIFwiIFwiKS5jb25jYXQoeTIsIFwiKVwiKTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS5tb3ZlUG9pbnQgPSBmdW5jdGlvbiAoaSwgaykge1xuICAgICAgICB2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoaSk7XG4gICAgICAgIHZhciBwID0gaXNBcnJheSA/IGkgOiBbaV07XG4gICAgICAgIHZhciBkID0gKGlzQXJyYXkgPyBrIDogW2tdKTtcbiAgICAgICAgdmFyIGZpID0gdGhpcy5maW5kRmkobmV3IERMaW5lKDEsIDAsIDApKTtcbiAgICAgICAgdmFyIHRkID0gdGhpcy54KG5ldyBEUG9pbnQoMSwgMSkpLmRpc3RhbmNlKHRoaXMueChuZXcgRFBvaW50KDIsIDIpKSkgLyAyO1xuICAgICAgICB2YXIgc2luQ29zID0gbmV3IERQb2ludChNYXRoLnNpbihmaSksIE1hdGguY29zKGZpKSk7XG4gICAgICAgIHZhciBkdCA9IHNpbkNvcy5jbG9uZSgpLnNjYWxlKHRkKTtcbiAgICAgICAgdmFyIHAxVCA9IHBbMF0uY2xvbmUoKS5tb3ZlKGR0LmNsb25lKCkubWludXMoKSk7XG4gICAgICAgIHZhciBwMlQgPSBwWzBdLmNsb25lKCkubW92ZShkdCk7XG4gICAgICAgIHZhciByZXMgPSBbXTtcbiAgICAgICAgaWYgKEROdW1iZXJzLmxpa2UodGhpcy55KHAxVCkueSwgcDFULnkpIHx8IEROdW1iZXJzLmxpa2UodGhpcy55KHAyVCkueSwgcDJULnkpKSB7XG4gICAgICAgICAgICByZXMgPSBwLm1hcChmdW5jdGlvbiAodCwgaW5kZXgpIHsgcmV0dXJuIHQuY2xvbmUoKVxuICAgICAgICAgICAgICAgIC5tb3ZlKHNpbkNvcy5jbG9uZSgpLnNjYWxlKGRbaW5kZXhdKSk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzID0gcC5tYXAoZnVuY3Rpb24gKHQsIGluZGV4KSB7IHJldHVybiB0LmNsb25lKClcbiAgICAgICAgICAgICAgICAubW92ZShzaW5Db3MuY2xvbmUoKS5zY2FsZShkW2luZGV4XSlcbiAgICAgICAgICAgICAgICAuc2V0WChmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICB2YXIgeCA9IF9hLng7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC14O1xuICAgICAgICAgICAgfSkpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBcnJheSA/IHJlcyA6IHJlc1swXTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS5maW5kRmkgPSBmdW5jdGlvbiAoX2EsIGRlbHRhKSB7XG4gICAgICAgIHZhciBhID0gX2EuYSwgYiA9IF9hLmI7XG4gICAgICAgIGlmIChkZWx0YSA9PT0gdm9pZCAwKSB7IGRlbHRhID0gMS4wMDAxOyB9XG4gICAgICAgIHZhciBfYiA9IHRoaXMsIHEgPSBfYi5hLCB3ID0gX2IuYjtcbiAgICAgICAgdmFyIHZhbCA9IChxICogYSArIHcgKiBiKSAvIChNYXRoLnNxcnQocSAqIHEgKyB3ICogdykgKiBNYXRoLnNxcnQoYSAqIGEgKyBiICogYikpO1xuICAgICAgICBpZiAodmFsID4gMSAmJiB2YWwgPCBkZWx0YSkge1xuICAgICAgICAgICAgdmFsID0gMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgPCAtMSAmJiB2YWwgPiAtZGVsdGEpIHtcbiAgICAgICAgICAgIHZhbCA9IC0xO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBNYXRoLmFjb3ModmFsKTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS52ZWN0b3JQcm9kdWN0ID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciBhID0gX2EuYSwgYiA9IF9hLmIsIGMgPSBfYS5jO1xuICAgICAgICB2YXIgX2IgPSB0aGlzLCBxID0gX2IuYSwgdyA9IF9iLmIsIGUgPSBfYi5jO1xuICAgICAgICByZXR1cm4gbmV3IERMaW5lKHcgKiBjIC0gZSAqIGIsIGUgKiBhIC0gcSAqIGMsIHEgKiBiIC0gdyAqIGEpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmJyZXNlbmhhbXNMaW5lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmJlZ2luLCB4MCA9IF9hLngsIHkwID0gX2EueTtcbiAgICAgICAgdmFyIF9iID0gdGhpcy5lbmQsIHgxID0gX2IueCwgeTEgPSBfYi55O1xuICAgICAgICB2YXIgZHggPSBNYXRoLmFicyh4MSAtIHgwKTtcbiAgICAgICAgdmFyIHN4ID0geDAgPCB4MSA/IDEgOiAtMTtcbiAgICAgICAgdmFyIGR5ID0gLU1hdGguYWJzKHkxIC0geTApO1xuICAgICAgICB2YXIgc3kgPSB5MCA8IHkxID8gMSA6IC0xO1xuICAgICAgICB2YXIgZXJyb3IgPSBkeCArIGR5O1xuICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICByZXMucHVzaChuZXcgRFBvaW50KHgwLCB5MCkpO1xuICAgICAgICAgICAgaWYgKHgwID09PSB4MSAmJiB5MCA9PT0geTEpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBlMiA9IDIgKiBlcnJvcjtcbiAgICAgICAgICAgIGlmIChlMiA+PSBkeSkge1xuICAgICAgICAgICAgICAgIGlmICh4MCA9PT0geDEpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVycm9yICs9IGR5O1xuICAgICAgICAgICAgICAgIHgwICs9IHN4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUyIDw9IGR4KSB7XG4gICAgICAgICAgICAgICAgaWYgKHkwID09PSB5MSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZXJyb3IgKz0gZHg7XG4gICAgICAgICAgICAgICAgeTAgKz0gc3k7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIHJldHVybiBETGluZTtcbn0oKSk7XG5leHBvcnQgeyBETGluZSB9O1xuIiwidmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbnZhciBfX3JlYWQgPSAodGhpcyAmJiB0aGlzLl9fcmVhZCkgfHwgZnVuY3Rpb24gKG8sIG4pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gICAgaWYgKCFtKSByZXR1cm4gbztcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgICB0cnkge1xuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGFyO1xufTtcbmltcG9ydCB7IERMaW5lIH0gZnJvbSAnLi9ETGluZSc7XG5pbXBvcnQgeyBEUG9seWdvbiB9IGZyb20gJy4vRFBvbHlnb24nO1xuaW1wb3J0IHsgY2hlY2tGdW5jdGlvbiwgY3JlYXRlQXJyYXksIERHZW8sIGRpdiwgaXNEZWZBbmROb3ROdWxsLCB0b0RlZ3JlZXNNaW51dGVzU2Vjb25kcyB9IGZyb20gJy4vdXRpbHMnO1xudmFyIGRpZmYgPSAwO1xudmFyIHJhZGlhbnNQb2x5Z29uID0gbmV3IERQb2x5Z29uKCk7XG52YXIgcHNldWRvTWVyY2F0b3JQb2x5Z29uID0gbmV3IERQb2x5Z29uKCk7XG52YXIgd29ybGRHZW9kZXRpY1BvbHlnb24gPSBuZXcgRFBvbHlnb24oKTtcbmV4cG9ydCB2YXIgRUFSVEhfUkFESVVTX0lOX01FVEVSUyA9IDYzNzgxMzc7XG52YXIgRUFSVEhfSU5fTUVURVJTID0gMjAwMzc1MDguMzQ7XG52YXIgREVHUkVFU19JTl9FQVJUSCA9IDE4MDtcbnZhciBNRVRFUlNfSU5fT05FX0RFR1JFRSA9IEVBUlRIX0lOX01FVEVSUyAvIERFR1JFRVNfSU5fRUFSVEg7XG52YXIgREVHUkVFU19JTl9PTkVfTUVURVIgPSBERUdSRUVTX0lOX0VBUlRIIC8gRUFSVEhfSU5fTUVURVJTO1xuZXhwb3J0IHZhciBIQUxGX1BJX0lOX0RFR1JFRSA9IDkwO1xuZXhwb3J0IHZhciBQSV9JTl9ERUdSRUUgPSAxODA7XG5leHBvcnQgdmFyIERPVUJMRV9QSV9JTl9ERUdSRUUgPSAzNjA7XG5leHBvcnQgdmFyIFBJX1RPX0RFR1JFRSA9IE1hdGguUEkgLyBQSV9JTl9ERUdSRUU7XG5leHBvcnQgdmFyIERFR1JFRV9UT19QSSA9IFBJX0lOX0RFR1JFRSAvIE1hdGguUEk7XG52YXIgRFBvaW50ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEUG9pbnQoeCwgeSwgeikge1xuICAgICAgICBpZiAoeCA9PT0gdm9pZCAwKSB7IHggPSAwOyB9XG4gICAgICAgIGlmICh5ID09PSB2b2lkIDApIHsgeSA9IHg7IH1cbiAgICAgICAgdGhpcy54ID0geDtcbiAgICAgICAgdGhpcy55ID0geTtcbiAgICAgICAgdGhpcy56ID0gejtcbiAgICAgICAgdGhpcy5wcm9wZXJ0aWVzID0ge307XG4gICAgfVxuICAgIERQb2ludC56ZXJvID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IERQb2ludCgpO1xuICAgIH07XG4gICAgRFBvaW50LnBhcnNlID0gZnVuY3Rpb24gKGMsIGZvcm1hdCkge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSB2b2lkIDApIHsgZm9ybWF0ID0gREdlby5wYXJzZUZvcm1hdDsgfVxuICAgICAgICB2YXIgX2EgPSBjLCBsYXQgPSBfYS5sYXQsIGxvbiA9IF9hLmxvbiwgX2IgPSBfYS5sbmcsIGxuZyA9IF9iID09PSB2b2lkIDAgPyBsb24gOiBfYiwgYWx0ID0gX2EuYWx0O1xuICAgICAgICBpZiAobGF0ICYmIGxuZykge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQobG5nLCBsYXQsIGFsdCAhPT0gbnVsbCAmJiBhbHQgIT09IHZvaWQgMCA/IGFsdCA6IDApO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfYyA9IGMsIHggPSBfYy54LCB5ID0gX2MueSwgeiA9IF9jLnosIHByb3BlcnRpZXMgPSBfX3Jlc3QoX2MsIFtcInhcIiwgXCJ5XCIsIFwielwiXSk7XG4gICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwoeCkgJiYgaXNEZWZBbmROb3ROdWxsKHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCh4LCB5LCB6KS5zZXRQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0ID0gYztcbiAgICAgICAgaWYgKGMudHlwZSA9PT0gJ1BvaW50Jykge1xuICAgICAgICAgICAgdCA9IGMuY29vcmRpbmF0ZXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGMudHlwZSA9PT0gJ0ZlYXR1cmUnKSB7XG4gICAgICAgICAgICB2YXIgZiA9IERQb2ludC5wYXJzZShjLmdlb21ldHJ5LCBmb3JtYXQpO1xuICAgICAgICAgICAgZi5wcm9wZXJ0aWVzID0gX19hc3NpZ24oe30sIGMucHJvcGVydGllcyk7XG4gICAgICAgICAgICByZXR1cm4gZjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybWF0LnJlcGxhY2UoL1teeC16XS9nbWl1LCAnJylcbiAgICAgICAgICAgIC5zcGxpdCgnJylcbiAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKGEsIGssIGluZGV4KSB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgc3dpdGNoIChrKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAneCc6XG4gICAgICAgICAgICAgICAgICAgIGEueCA9IChfYSA9IHRbaW5kZXhdKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICAgICAgYS55ID0gKF9iID0gdFtpbmRleF0pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3onOlxuICAgICAgICAgICAgICAgICAgICBhLnogPSB0W2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9LCBuZXcgRFBvaW50KCkpO1xuICAgIH07XG4gICAgRFBvaW50LnBhcnNlRnJvbVdLVCA9IGZ1bmN0aW9uICh3a3QpIHtcbiAgICAgICAgdmFyIHJlZ2V4cCA9IC9QT0lOVCBcXCgoPzxkYXRhPig/Oig/IVxcKSkuKSo/KVxcKSQvbWl1O1xuICAgICAgICB2YXIgZGF0YSA9IHdrdC50cmltKCkudG9VcHBlckNhc2UoKTtcbiAgICAgICAgdmFyIHJlcyA9IHJlZ2V4cC5leGVjKGRhdGEpO1xuICAgICAgICB2YXIgX2EgPSBfX3JlYWQocmVzLmdyb3Vwcy5kYXRhLnNwbGl0KCcgJykubWFwKE51bWJlciksIDMpLCB4ID0gX2FbMF0sIHkgPSBfYVsxXSwgeiA9IF9hWzJdO1xuICAgICAgICByZXR1cm4gbmV3IERQb2ludCh4LCB5LCB6KTtcbiAgICB9O1xuICAgIERQb2ludC5yYW5kb20gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KE1hdGgucmFuZG9tKCksIE1hdGgucmFuZG9tKCkpO1xuICAgIH07XG4gICAgRFBvaW50LmdldFRpbGVGcm9tUXVhZEtleSA9IGZ1bmN0aW9uIChxdWFkS2V5KSB7XG4gICAgICAgIHZhciBwID0gbmV3IERQb2ludCgwLCAwLCBxdWFkS2V5Lmxlbmd0aCk7XG4gICAgICAgIGZvciAodmFyIGkgPSBwLno7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgICAgIHZhciBtYXNrID0gMSA8PCAoaSAtIDEpO1xuICAgICAgICAgICAgc3dpdGNoIChxdWFkS2V5W3AueiAtIGldKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnMCc6XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJzEnOlxuICAgICAgICAgICAgICAgICAgICBwLnggfD0gbWFzaztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnMic6XG4gICAgICAgICAgICAgICAgICAgIHAueSB8PSBtYXNrO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICczJzpcbiAgICAgICAgICAgICAgICAgICAgcC54IHw9IG1hc2s7XG4gICAgICAgICAgICAgICAgICAgIHAueSB8PSBtYXNrO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUXVhZEtleSBkaWdpdCBzZXF1ZW5jZS4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcDtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUudG9EZWdyZWVzTWludXRlc1NlY29uZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB0b0RlZ3JlZXNNaW51dGVzU2Vjb25kcyh0aGlzLngpLFxuICAgICAgICAgICAgeTogdG9EZWdyZWVzTWludXRlc1NlY29uZHModGhpcy55KVxuICAgICAgICB9O1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5nZXRUaWxlRnJvbUNvb3JkcyA9IGZ1bmN0aW9uICh6b29tKSB7XG4gICAgICAgIGlmICh6b29tID09PSB2b2lkIDApIHsgem9vbSA9IHRoaXMuejsgfVxuICAgICAgICBjaGVja0Z1bmN0aW9uKCdnZXRUaWxlRnJvbUNvb3JkcycpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVEZWdyZWUodGhpcyk7XG4gICAgICAgIHZhciB4ID0gTWF0aC5mbG9vcigodGhpcy54ICsgUElfSU5fREVHUkVFKSAvIERPVUJMRV9QSV9JTl9ERUdSRUUgKiAoTWF0aC5wb3coMiwgem9vbSkpKTtcbiAgICAgICAgdmFyIHkgPSBNYXRoLmZsb29yKCgxIC0gTWF0aC5sb2coTWF0aC50YW4odGhpcy55ICogUElfVE9fREVHUkVFKSArIDEgLyBNYXRoLmNvcyh0aGlzLnkgKiBQSV9UT19ERUdSRUUpKSAvIE1hdGguUEkpIC8gMiAqIChNYXRoLnBvdygyLCB6b29tKSkpO1xuICAgICAgICByZXR1cm4gbmV3IERQb2ludCh4LCB5LCB6b29tKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZ2V0UXVhZEtleUZyb21UaWxlID0gZnVuY3Rpb24gKHpvb20pIHtcbiAgICAgICAgaWYgKHpvb20gPT09IHZvaWQgMCkgeyB6b29tID0gdGhpcy56OyB9XG4gICAgICAgIHZhciBxdWFkS2V5ID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSB6b29tOyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICB2YXIgZGlnaXQgPSAwO1xuICAgICAgICAgICAgdmFyIG1hc2sgPSAxIDw8IChpIC0gMSk7XG4gICAgICAgICAgICBpZiAoKHRoaXMueCAmIG1hc2spICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgZGlnaXQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodGhpcy55ICYgbWFzaykgIT09IDApIHtcbiAgICAgICAgICAgICAgICBkaWdpdCsrO1xuICAgICAgICAgICAgICAgIGRpZ2l0Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBxdWFkS2V5LnB1c2goZGlnaXQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBxdWFkS2V5LmpvaW4oJycpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5nZXRDb29yZHNGcm9tVGlsZSA9IGZ1bmN0aW9uICh6b29tKSB7XG4gICAgICAgIGlmICh6b29tID09PSB2b2lkIDApIHsgem9vbSA9IHRoaXMuejsgfVxuICAgICAgICBjaGVja0Z1bmN0aW9uKCdnZXRDb29yZHNGcm9tVGlsZScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVVSW50KHRoaXMpO1xuICAgICAgICB2YXIgbiA9IE1hdGguUEkgLSAyICogTWF0aC5QSSAqIHRoaXMueSAvIChNYXRoLnBvdygyLCB6b29tKSk7XG4gICAgICAgIHZhciB4ID0gdGhpcy54IC8gKE1hdGgucG93KDIsIHpvb20pKSAqIERPVUJMRV9QSV9JTl9ERUdSRUUgLSBQSV9JTl9ERUdSRUU7XG4gICAgICAgIHZhciB5ID0gUElfSU5fREVHUkVFIC8gTWF0aC5QSSAqIE1hdGguYXRhbigoTWF0aC5leHAobikgLSBNYXRoLmV4cCgtbikpIC8gMik7XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KHgsIHksIHpvb20pO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS50b0Nvb3JkcyA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgcmV0dXJuIGZvcm1hdC5yZXBsYWNlKC9bXngtel0vZ21pdSwgJycpLnNwbGl0KCcnKVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoaykgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIHg6IF90aGlzLngsXG4gICAgICAgICAgICB5OiBfdGhpcy55LFxuICAgICAgICAgICAgejogX3RoaXMuelxuICAgICAgICB9KVtrXTsgfSlcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIgIT09IHVuZGVmaW5lZDsgfSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnRvR2VvSlNPTiA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgICBjb29yZGluYXRlczogdGhpcy50b0Nvb3Jkcyhmb3JtYXQpXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnRvR2VvSlNPTkZlYXR1cmUgPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSBER2VvLnBhcnNlRm9ybWF0OyB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wZXJ0aWVzKSxcbiAgICAgICAgICAgIGdlb21ldHJ5OiB0aGlzLnRvR2VvSlNPTihmb3JtYXQpXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmZpbmRMaW5lID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZmluZExpbmUnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnMocCk7XG4gICAgICAgIGlmICh0aGlzLmVxdWFsKHApKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kTGluZShwLmNsb25lKCkubW92ZSgwLCAxKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGEgPSB0aGlzLnkgLSBwLnkgLSBkaWZmO1xuICAgICAgICB2YXIgYiA9IHAueCAtIHRoaXMueCAtIGRpZmY7XG4gICAgICAgIHZhciBjID0gdGhpcy54ICogcC55IC0gcC54ICogdGhpcy55IC0gZGlmZjtcbiAgICAgICAgaWYgKGEgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRExpbmUoMCwgMSwgYyAvIGIsIHRoaXMsIHApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERMaW5lKDEsIDAsIGMgLyBhLCB0aGlzLCBwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IERMaW5lKGEsIGIsIGMsIHRoaXMsIHApO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5maW5kSW5uZXJBbmdsZSA9IGZ1bmN0aW9uIChwMSwgcDMpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZmluZElubmVyQW5nbGUnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncDEnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHAxKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3AzJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyhwMyk7XG4gICAgICAgIHZhciBhMSA9IHRoaXMuZmluZExpbmUocDEpLmdldEZpKCk7XG4gICAgICAgIHZhciBhMiA9IHRoaXMuZmluZExpbmUocDMpLmdldEZpKCk7XG4gICAgICAgIGlmIChhMiA+PSBhMSkge1xuICAgICAgICAgICAgcmV0dXJuIGEyIC0gYTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGEyICsgTWF0aC5QSSAqIDIgLSBhMTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBcIlwiLmNvbmNhdCh0aGlzLngsIFwiIFwiKS5jb25jYXQodGhpcy55KTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy54LCB0aGlzLnldO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5oZWlnaHQgPSBmdW5jdGlvbiAoeikge1xuICAgICAgICB0aGlzLnogPSB6O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUudG9XS1QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIHggPSBfYS54LCB5ID0gX2EueTtcbiAgICAgICAgcmV0dXJuIFwiUE9JTlQgKFwiLmNvbmNhdCh4LCBcIiBcIikuY29uY2F0KHksIFwiKVwiKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZGlzdGFuY2UgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdkaXN0YW5jZScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdwJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyhwKTtcbiAgICAgICAgdmFyIGR4ID0gcC54IC0gdGhpcy54O1xuICAgICAgICB2YXIgZHkgPSBwLnkgLSB0aGlzLnk7XG4gICAgICAgIHJldHVybiBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5kaXN0YW5jZTNkID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZGlzdGFuY2UzZCcpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdwJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyhwKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMueicpXG4gICAgICAgICAgICAuc2hvdWxkRXhpc3QodGhpcy56KVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3AueicpXG4gICAgICAgICAgICAuc2hvdWxkRXhpc3QocC56KTtcbiAgICAgICAgdmFyIGR4ID0gcC54IC0gdGhpcy54O1xuICAgICAgICB2YXIgZHkgPSBwLnkgLSB0aGlzLnk7XG4gICAgICAgIHZhciBkeiA9IHAueiAtIHRoaXMuejtcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSArIGR6ICogZHopO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zZXRYID0gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgdGhpcy54ID0gdHlwZW9mIHggPT09ICdudW1iZXInID8geCA6IHgodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zZXRaID0gZnVuY3Rpb24gKHopIHtcbiAgICAgICAgdGhpcy56ID0gdHlwZW9mIHogPT09ICdudW1iZXInID8geiA6IHoodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zZXRZID0gZnVuY3Rpb24gKHkpIHtcbiAgICAgICAgdGhpcy55ID0gdHlwZW9mIHkgPT09ICdudW1iZXInID8geSA6IHkodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zZXRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0aWVzID0gdHlwZW9mIHYgPT09ICdvYmplY3QnID8gdiA6IHYodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHAgPSBuZXcgRFBvaW50KHRoaXMueCwgdGhpcy55LCB0aGlzLnopO1xuICAgICAgICBwLnByb3BlcnRpZXMgPSBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wZXJ0aWVzKTtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmd0ID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueCA+IHAueCAmJiB0aGlzLnkgPiBwLnk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueCA8IHAueCAmJiB0aGlzLnkgPCBwLnk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmd0T3JFcXVhbCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmd0KHApIHx8IHRoaXMuZXF1YWwocCk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmx0T3JFcXVhbCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmx0KHApIHx8IHRoaXMuZXF1YWwocCk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnJvdGF0ZSA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHZhciB4ID0gdGhpcy54ICogTWF0aC5jb3MoYSkgLSB0aGlzLnkgKiBNYXRoLnNpbihhKTtcbiAgICAgICAgdmFyIHkgPSB0aGlzLnggKiBNYXRoLnNpbihhKSArIHRoaXMueSAqIE1hdGguY29zKGEpO1xuICAgICAgICB0aGlzLnggPSB4O1xuICAgICAgICB0aGlzLnkgPSB5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUucm90YXRlM2RYID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgeSA9IF9hLnksIHogPSBfYS56O1xuICAgICAgICB0aGlzLnkgPSB5ICogTWF0aC5jb3MoYSkgKyB6ICogTWF0aC5zaW4oYSk7XG4gICAgICAgIHRoaXMueiA9IC15ICogTWF0aC5zaW4oYSkgKyB6ICogTWF0aC5jb3MoYSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5yb3RhdGUzZFkgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCB4ID0gX2EueCwgeiA9IF9hLno7XG4gICAgICAgIHRoaXMueCA9IHggKiBNYXRoLmNvcyhhKSArIHogKiBNYXRoLnNpbihhKTtcbiAgICAgICAgdGhpcy56ID0gLXggKiBNYXRoLnNpbihhKSArIHogKiBNYXRoLmNvcyhhKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnJvdGF0ZTNkWiA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIHggPSBfYS54LCB5ID0gX2EueTtcbiAgICAgICAgdGhpcy54ID0geCAqIE1hdGguY29zKGEpIC0geSAqIE1hdGguc2luKGEpO1xuICAgICAgICB0aGlzLnkgPSAteCAqIE1hdGguc2luKGEpICsgeSAqIE1hdGguY29zKGEpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubW92ZSA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIGlmICh5ID09PSB2b2lkIDApIHsgeSA9IHg7IH1cbiAgICAgICAgdmFyIHhWID0gMDtcbiAgICAgICAgdmFyIHlWID0gMDtcbiAgICAgICAgdmFyIHpWID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoeCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggKyB4Lng7XG4gICAgICAgICAgICB5ViA9IHRoaXMueSArIHgueTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeC56KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56ICsgeC56O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggKyB4O1xuICAgICAgICAgICAgeVYgPSB0aGlzLnkgKyB5O1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh6KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56ICsgejtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnggPSB4VjtcbiAgICAgICAgdGhpcy55ID0geVY7XG4gICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwoelYpKSB7XG4gICAgICAgICAgICB0aGlzLnogPSB6VjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZGVncmVlVG9NZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ2RlZ3JlZVRvTWV0ZXJzJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZURlZ3JlZSh0aGlzKTtcbiAgICAgICAgdmFyIHggPSAoKHRoaXMueCArIFBJX0lOX0RFR1JFRSkgJSBET1VCTEVfUElfSU5fREVHUkVFIC0gUElfSU5fREVHUkVFKSAqIE1FVEVSU19JTl9PTkVfREVHUkVFO1xuICAgICAgICB2YXIgeSA9IChNYXRoLmxvZyhNYXRoLnRhbigoKHRoaXMueSArIEhBTEZfUElfSU5fREVHUkVFKSAlIFBJX0lOX0RFR1JFRSkgKlxuICAgICAgICAgICAgKE1hdGguUEkgLyBET1VCTEVfUElfSU5fREVHUkVFKSkpIC8gUElfVE9fREVHUkVFKSAqIE1FVEVSU19JTl9PTkVfREVHUkVFO1xuICAgICAgICB0aGlzLnggPSB4O1xuICAgICAgICB0aGlzLnkgPSB5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubWV0ZXJzVG9EZWdyZWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ21ldGVyc1RvRGVncmVlJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzKTtcbiAgICAgICAgdmFyIGxvbiA9IHRoaXMueCAqIERFR1JFRVNfSU5fT05FX01FVEVSO1xuICAgICAgICB2YXIgbGF0ID0gTWF0aC5hdGFuKE1hdGgucG93KE1hdGguRSwgKCh0aGlzLnkgLyBNRVRFUlNfSU5fT05FX0RFR1JFRSkgKiBQSV9UT19ERUdSRUUpKSkgKlxuICAgICAgICAgICAgKERPVUJMRV9QSV9JTl9ERUdSRUUgLyBNYXRoLlBJKSAtIEhBTEZfUElfSU5fREVHUkVFO1xuICAgICAgICB0aGlzLnggPSBsb247XG4gICAgICAgIHRoaXMueSA9IGxhdDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmRlZ3JlZVRvUmFkaWFucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZGVncmVlVG9SYWRpYW5zJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZURlZ3JlZSh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbGUoUElfVE9fREVHUkVFKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUucmFkaWFuc1RvRGVncmVlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbigncmFkaWFuc1RvRGVncmVlcycpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVSYWRpYW5zKHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5zY2FsZShERUdSRUVfVE9fUEkpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5yYWRpYW5zVG9NZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ3JhZGlhbnNUb01ldGVycycpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVSYWRpYW5zKHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5yYWRpYW5zVG9EZWdyZWVzKCkuZGVncmVlVG9NZXRlcnMoKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubWV0ZXJzVG9SYWRpYW5zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdtZXRlcnNUb1JhZGlhbnMnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5tZXRlcnNUb0RlZ3JlZSgpLmRlZ3JlZVRvUmFkaWFucygpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5yb3VuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy54ID0gTWF0aC5yb3VuZCh0aGlzLngpO1xuICAgICAgICB0aGlzLnkgPSBNYXRoLnJvdW5kKHRoaXMueSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5jZWlsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnggPSBNYXRoLmNlaWwodGhpcy54KTtcbiAgICAgICAgdGhpcy55ID0gTWF0aC5jZWlsKHRoaXMueSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5mbG9vciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy54ID0gTWF0aC5mbG9vcih0aGlzLngpO1xuICAgICAgICB0aGlzLnkgPSBNYXRoLmZsb29yKHRoaXMueSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS50b0ZpeGVkID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgaWYgKG4gPT09IHZvaWQgMCkgeyBuID0gMjsgfVxuICAgICAgICB0aGlzLnggPSBwYXJzZUZsb2F0KHRoaXMueC50b0ZpeGVkKG4pKTtcbiAgICAgICAgdGhpcy55ID0gcGFyc2VGbG9hdCh0aGlzLnkudG9GaXhlZChuKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMueCA9IE1hdGguYWJzKHRoaXMueCk7XG4gICAgICAgIHRoaXMueSA9IE1hdGguYWJzKHRoaXMueSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zY2FsZSA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIGlmICh5ID09PSB2b2lkIDApIHsgeSA9IHg7IH1cbiAgICAgICAgdmFyIHhWID0gMDtcbiAgICAgICAgdmFyIHlWID0gMDtcbiAgICAgICAgdmFyIHpWID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoeCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggKiB4Lng7XG4gICAgICAgICAgICB5ViA9IHRoaXMueSAqIHgueTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeC56KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56ICogeC56O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggKiB4O1xuICAgICAgICAgICAgeVYgPSB0aGlzLnkgKiB5O1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh6KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56ICogejtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnggPSB4VjtcbiAgICAgICAgdGhpcy55ID0geVY7XG4gICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwoelYpKSB7XG4gICAgICAgICAgICB0aGlzLnogPSB6VjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKHgsIHksIHopIHtcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0geDsgfVxuICAgICAgICB2YXIgeFYgPSAwO1xuICAgICAgICB2YXIgeVYgPSAwO1xuICAgICAgICB2YXIgelYgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh4IGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB4ViA9IHRoaXMueCAvIHgueDtcbiAgICAgICAgICAgIHlWID0gdGhpcy55IC8geC55O1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh4LnopKSB7XG4gICAgICAgICAgICAgICAgelYgPSB0aGlzLnogLyB4Lno7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB4ViA9IHRoaXMueCAvIHg7XG4gICAgICAgICAgICB5ViA9IHRoaXMueSAvIHk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHopKSB7XG4gICAgICAgICAgICAgICAgelYgPSB0aGlzLnogLyB6O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMueCA9IHhWO1xuICAgICAgICB0aGlzLnkgPSB5VjtcbiAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh6VikpIHtcbiAgICAgICAgICAgIHRoaXMueiA9IHpWO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiAoeCwgeSwgeikge1xuICAgICAgICBpZiAoeSA9PT0gdm9pZCAwKSB7IHkgPSB4OyB9XG4gICAgICAgIHZhciB4ViA9IDA7XG4gICAgICAgIHZhciB5ViA9IDA7XG4gICAgICAgIHZhciB6ViA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHggaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHhWID0gdGhpcy54ICUgeC54O1xuICAgICAgICAgICAgeVYgPSB0aGlzLnkgJSB4Lnk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHgueikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IHRoaXMueiAlIHguejtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHhWID0gdGhpcy54ICUgeDtcbiAgICAgICAgICAgIHlWID0gdGhpcy55ICUgeTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IHRoaXMueiAlIHo7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy54ID0geFY7XG4gICAgICAgIHRoaXMueSA9IHlWO1xuICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHpWKSkge1xuICAgICAgICAgICAgdGhpcy56ID0gelY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIGlmICh5ID09PSB2b2lkIDApIHsgeSA9IHg7IH1cbiAgICAgICAgdmFyIHhWID0gMDtcbiAgICAgICAgdmFyIHlWID0gMDtcbiAgICAgICAgdmFyIHpWID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoeCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgeFYgPSBkaXYodGhpcy54LCB4LngpO1xuICAgICAgICAgICAgeVYgPSBkaXYodGhpcy55LCB4LnkpO1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh4LnopKSB7XG4gICAgICAgICAgICAgICAgelYgPSBkaXYodGhpcy56LCB4LnopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgeFYgPSBkaXYodGhpcy54LCB4KTtcbiAgICAgICAgICAgIHlWID0gZGl2KHRoaXMueSwgeSk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHopKSB7XG4gICAgICAgICAgICAgICAgelYgPSBkaXYodGhpcy56LCB6KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnggPSB4VjtcbiAgICAgICAgdGhpcy55ID0geVY7XG4gICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwoelYpKSB7XG4gICAgICAgICAgICB0aGlzLnogPSB6VjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZXF1YWwgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy54ID09PSBwLnggJiYgdGhpcy55ID09PSBwLnkgJiYgdGhpcy56ID09PSBwLno7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmxpa2UgPSBmdW5jdGlvbiAocCwgZCkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgIGlmIChkID09PSB2b2lkIDApIHsgZCA9IDAuMDAxOyB9XG4gICAgICAgIGlmICh0aGlzLmVxdWFsKHApKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGlrZVggPSBNYXRoLmFicyh0aGlzLnggLSBwLngpIDwgZDtcbiAgICAgICAgdmFyIGxpa2VZID0gTWF0aC5hYnModGhpcy55IC0gcC55KSA8IGQ7XG4gICAgICAgIHZhciBsaWtlWiA9IE1hdGguYWJzKCgoX2IgPSAoX2EgPSB0aGlzLnopICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHAueikgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMCkgLSAoKF9kID0gKF9jID0gcC56KSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiB0aGlzLnopICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDApKSA8IGQ7XG4gICAgICAgIHJldHVybiBsaWtlWCAmJiBsaWtlWSAmJiBsaWtlWjtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZmxpcFZlcnRpY2FsbHkgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICB2YXIgdiA9IHNpemU7XG4gICAgICAgIGlmIChzaXplIGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB2ID0gc2l6ZS55O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMueSA9IHYgLSB0aGlzLnk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibGlrZVJhZGlhbnNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChyYWRpYW5zUG9seWdvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByYWRpYW5zUG9seWdvbi5wdXNoKG5ldyBEUG9pbnQoLU1hdGguUEksIC1NYXRoLlBJIC8gMiksIG5ldyBEUG9pbnQoTWF0aC5QSSwgTWF0aC5QSSAvIDIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByYWRpYW5zUG9seWdvbi5zaW1wbGVJbmNsdWRlKHRoaXMpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibGlrZVdvcmxkR2VvZGV0aWNTeXN0ZW1cIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICh3b3JsZEdlb2RldGljUG9seWdvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICB3b3JsZEdlb2RldGljUG9seWdvbi5wdXNoKG5ldyBEUG9pbnQoLTE4MCwgLTkwKSwgbmV3IERQb2ludCgxODAsIDkwKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMubGlrZVJhZGlhbnMgJiYgd29ybGRHZW9kZXRpY1BvbHlnb24uc2ltcGxlSW5jbHVkZSh0aGlzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImxpa2VQc2V1ZG9NZXJjYXRvclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHBzZXVkb01lcmNhdG9yUG9seWdvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBwc2V1ZG9NZXJjYXRvclBvbHlnb24ucHVzaChuZXcgRFBvaW50KC0yMDAyNjM3Ni4zOSwgLTIwMDQ4OTY2LjEwKSwgbmV3IERQb2ludCgyMDAyNjM3Ni4zOSwgMjAwNDg5NjYuMTApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5saWtlUmFkaWFucyAmJiAhdGhpcy5saWtlV29ybGRHZW9kZXRpY1N5c3RlbSAmJiBwc2V1ZG9NZXJjYXRvclBvbHlnb24uc2ltcGxlSW5jbHVkZSh0aGlzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcIndcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLng7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgIHRoaXMueCA9IHg7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJoXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy55O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh5KSB7XG4gICAgICAgICAgICB0aGlzLnkgPSB5O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwiYXJlYVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2hlY2tGdW5jdGlvbignYXJlYScpXG4gICAgICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLncgKiB0aGlzLmg7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJoaXBcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNoZWNrRnVuY3Rpb24oJ2hpcCcpXG4gICAgICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzKTtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQodGhpcy53ICogdGhpcy53ICsgdGhpcy5oICogdGhpcy5oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcIm1pblwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWluKHRoaXMueCwgdGhpcy55KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcIm1heFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KHRoaXMueCwgdGhpcy55KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImhpcFBvaW50XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgaGlwID0gdGhpcy5oaXA7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludChoaXAsIGhpcCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJ4UG9pbnRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB4ID0gdGhpcy54O1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoeCwgeCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJ5UG9pbnRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB5ID0gdGhpcy55O1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoeSwgeSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJ3UG9pbnRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnhQb2ludDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImhQb2ludFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMueVBvaW50O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibGF0XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy55O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICB0aGlzLnkgPSB2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibG5nXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy54O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICB0aGlzLnggPSB2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibG9uXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy54O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICB0aGlzLnggPSB2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwiYWx0XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy56O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICB0aGlzLnogPSB2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgRFBvaW50LnByb3RvdHlwZS5zaW1wbGUgPSBmdW5jdGlvbiAoeEtleSwgeUtleSwgektleSkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAoeEtleSA9PT0gdm9pZCAwKSB7IHhLZXkgPSAneCc7IH1cbiAgICAgICAgaWYgKHlLZXkgPT09IHZvaWQgMCkgeyB5S2V5ID0gJ3knOyB9XG4gICAgICAgIGlmICh6S2V5ID09PSB2b2lkIDApIHsgektleSA9ICd6JzsgfVxuICAgICAgICByZXR1cm4gX19hc3NpZ24oKF9hID0ge30sIF9hW3hLZXldID0gdGhpcy54LCBfYVt5S2V5XSA9IHRoaXMueSwgX2EpLCAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgPyAoX2IgPSB7fSxcbiAgICAgICAgICAgIF9iW3pLZXldID0gdGhpcy56LFxuICAgICAgICAgICAgX2IpIDoge30pKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuc2V0SWZMZXNzVGhhbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHRoaXMueCA9IE1hdGgubWF4KHRoaXMueCwgcC54KTtcbiAgICAgICAgdGhpcy55ID0gTWF0aC5tYXgodGhpcy55LCBwLnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuc2V0SWZNb3JlVGhhbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHRoaXMueCA9IE1hdGgubWluKHRoaXMueCwgcC54KTtcbiAgICAgICAgdGhpcy55ID0gTWF0aC5taW4odGhpcy55LCBwLnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubWludXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjYWxlKC0xKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUub3J0aG9kcm9taWNQYXRoID0gZnVuY3Rpb24gKHBvaW50LCBwb2ludHNDb3VudCkge1xuICAgICAgICBpZiAocG9pbnRzQ291bnQgPT09IHZvaWQgMCkgeyBwb2ludHNDb3VudCA9IDM2MDsgfVxuICAgICAgICBjaGVja0Z1bmN0aW9uKCdvcnRob2Ryb21pY1BhdGgnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlRGVncmVlKHRoaXMpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncG9pbnQnKVxuICAgICAgICAgICAgLnNob3VsZEJlRGVncmVlKHBvaW50KTtcbiAgICAgICAgdmFyIHQgPSB0aGlzLmNsb25lKCkuZGVncmVlVG9SYWRpYW5zKCk7XG4gICAgICAgIHZhciBwID0gcG9pbnQuY2xvbmUoKS5kZWdyZWVUb1JhZGlhbnMoKTtcbiAgICAgICAgdmFyIGQgPSBNYXRoLnNpbihwLnggLSB0LngpO1xuICAgICAgICB2YXIgc3RlcCA9IChwLnggLSB0LngpIC8gKHBvaW50c0NvdW50IC0gMSk7XG4gICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24oY3JlYXRlQXJyYXkocG9pbnRzQ291bnQpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uICh2LCBpKSB7XG4gICAgICAgICAgICB2YXIgeCA9IHQueCArIHN0ZXAgKiBpO1xuICAgICAgICAgICAgdmFyIHkgPSBNYXRoLmF0YW4oKE1hdGgudGFuKHQueSkgKiBNYXRoLnNpbihwLnggLSB4KSkgLyBkICtcbiAgICAgICAgICAgICAgICAoTWF0aC50YW4ocC55KSAqIE1hdGguc2luKHggLSB0LngpKSAvIGQpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoeCwgeSkucmFkaWFuc1RvRGVncmVlcygpO1xuICAgICAgICB9KSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnNvcnRCeURpc3RhbmNlID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHBcbiAgICAgICAgICAgIC5jbG9uZSgpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChkLCBpbmRleCkge1xuICAgICAgICAgICAgZC5wcm9wZXJ0aWVzLmRpc3RhbmNlID0gZC5kaXN0YW5jZShfdGhpcyk7XG4gICAgICAgICAgICBkLnByb3BlcnRpZXMuaW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIHJldHVybiBkO1xuICAgICAgICB9KVxuICAgICAgICAgICAgLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEucHJvcGVydGllcy5kaXN0YW5jZSAtIGIucHJvcGVydGllcy5kaXN0YW5jZTsgfSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmNhbGN1bGF0ZUFsdGl0dWRlQnlEaXN0YW5jZUJldHdlZW5Qb2ludHMgPSBmdW5jdGlvbiAocDEsIHAyKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgICAgIGlmIChwMS5hbHQgPT09IHAyLmFsdCkge1xuICAgICAgICAgICAgdGhpcy5hbHQgPSBwMS5hbHQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgbWluQWx0ID0gTWF0aC5taW4oKF9hID0gcDEuYWx0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwLCAoX2IgPSBwMi5hbHQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDApO1xuICAgICAgICAgICAgdmFyIG1heEFsdCA9IE1hdGgubWF4KChfYyA9IHAxLmFsdCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMCwgKF9kID0gcDIuYWx0KSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwKTtcbiAgICAgICAgICAgIHZhciBkQWx0ID0gbWF4QWx0IC0gbWluQWx0O1xuICAgICAgICAgICAgdmFyIGRpc3RhbmNlMSA9IHRoaXMuZGlzdGFuY2UocDEpO1xuICAgICAgICAgICAgdmFyIGRpc3RhbmNlMiA9IHRoaXMuZGlzdGFuY2UocDIpO1xuICAgICAgICAgICAgdmFyIHRvdGFsRGlzdGFuY2UgPSBkaXN0YW5jZTEgKyBkaXN0YW5jZTI7XG4gICAgICAgICAgICBpZiAoKChfZSA9IHAxLmFsdCkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogMCkgPT09IG1pbkFsdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWx0ID0gbWluQWx0ICsgZGlzdGFuY2UxIC8gdG90YWxEaXN0YW5jZSAqIGRBbHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFsdCA9IG1pbkFsdCArIGRpc3RhbmNlMiAvIHRvdGFsRGlzdGFuY2UgKiBkQWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgcmV0dXJuIERQb2ludDtcbn0oKSk7XG5leHBvcnQgeyBEUG9pbnQgfTtcbiIsImltcG9ydCB7IERQb2ludCwgRUFSVEhfUkFESVVTX0lOX01FVEVSUyB9IGZyb20gJy4vRFBvaW50JztcbmltcG9ydCB7IERQb2x5Z29uIH0gZnJvbSAnLi9EUG9seWdvbic7XG5pbXBvcnQgeyBjaGVja0Z1bmN0aW9uIH0gZnJvbSAnLi91dGlscyc7XG52YXIgRENpcmNsZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRENpcmNsZShjZW50ZXIsIHIpIHtcbiAgICAgICAgaWYgKGNlbnRlciA9PT0gdm9pZCAwKSB7IGNlbnRlciA9IERQb2ludC56ZXJvKCk7IH1cbiAgICAgICAgaWYgKHIgPT09IHZvaWQgMCkgeyByID0gMDsgfVxuICAgICAgICB0aGlzLmNlbnRlciA9IGNlbnRlcjtcbiAgICAgICAgdGhpcy5yID0gcjtcbiAgICB9XG4gICAgRENpcmNsZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBcIihcIi5jb25jYXQodGhpcy5jZW50ZXIudG9TdHJpbmcoKSwgXCIsIFwiKS5jb25jYXQodGhpcy5yLCBcIilcIik7XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHsgY2VudGVyOiB0aGlzLmNlbnRlciwgcjogdGhpcy5yIH07XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEQ2lyY2xlKHRoaXMuY2VudGVyLCB0aGlzLnIpO1xuICAgIH07XG4gICAgRENpcmNsZS5wcm90b3R5cGUuZmluZFBvaW50cyA9IGZ1bmN0aW9uIChjKSB7XG4gICAgICAgIGlmICh0aGlzLmVxdWFsKGMpKSB7XG4gICAgICAgICAgICByZXR1cm4gSW5maW5pdHk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9hID0gdGhpcywgX2IgPSBfYS5jZW50ZXIsIHgwID0gX2IueCwgeTAgPSBfYi55LCByMCA9IF9hLnI7XG4gICAgICAgIHZhciBfYyA9IGMuY2VudGVyLCB4MSA9IF9jLngsIHkxID0gX2MueSwgcjEgPSBjLnI7XG4gICAgICAgIHZhciByMDIgPSByMCAqIHIwO1xuICAgICAgICB2YXIgZCA9IHRoaXMuY2VudGVyLmRpc3RhbmNlKGMuY2VudGVyKTtcbiAgICAgICAgdmFyIGEgPSAocjAyIC0gcjEgKiByMSArIGQgKiBkKSAvICgyICogZCk7XG4gICAgICAgIHZhciBoID0gTWF0aC5zcXJ0KHIwMiAtIGEgKiBhKTtcbiAgICAgICAgdmFyIGFkID0gYSAvIGQ7XG4gICAgICAgIHZhciBkeSA9IHkxIC0geTA7XG4gICAgICAgIHZhciBkeCA9IHgxIC0geDA7XG4gICAgICAgIHZhciBoZCA9IGggLyBkO1xuICAgICAgICB2YXIgeDIgPSB4MCArIGFkICogKHgxIC0geDApO1xuICAgICAgICB2YXIgeTIgPSB5MCArIGFkICogKHkxIC0geTApO1xuICAgICAgICB2YXIgeDMxID0geDIgKyBoZCAqIGR5O1xuICAgICAgICB2YXIgeTMxID0geTIgLSBoZCAqIGR4O1xuICAgICAgICB2YXIgeDMyID0geDIgLSBoZCAqIGR5O1xuICAgICAgICB2YXIgeTMyID0geTIgKyBoZCAqIGR4O1xuICAgICAgICB2YXIgcmVzID0gW107XG4gICAgICAgIGlmICghaXNOYU4oeDMxKSAmJiAhaXNOYU4oeTMxKSkge1xuICAgICAgICAgICAgcmVzLnB1c2gobmV3IERQb2ludCh4MzEsIHkzMSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNOYU4oeDMyKSAmJiAhaXNOYU4oeTMyKSAmJiAhKHgzMSA9PT0geDMyICYmIHkzMSA9PT0geTMyKSkge1xuICAgICAgICAgICAgcmVzLnB1c2gobmV3IERQb2ludCh4MzIsIHkzMikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5lcXVhbCA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgY2VudGVyID0gX2EuY2VudGVyLCByID0gX2EucjtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2VudGVyLmVxdWFsKGNlbnRlcikgJiYgdGhpcy5yID09PSByO1xuICAgIH07XG4gICAgRENpcmNsZS5wcm90b3R5cGUuZmluZFBvbHlnb25JbnNpZGUgPSBmdW5jdGlvbiAocG9pbnRDb3VudCwgc3RhcnRBbmdsZSwgc3RvcEFuZ2xlKSB7XG4gICAgICAgIGlmIChwb2ludENvdW50ID09PSB2b2lkIDApIHsgcG9pbnRDb3VudCA9IDY0OyB9XG4gICAgICAgIGlmIChzdGFydEFuZ2xlID09PSB2b2lkIDApIHsgc3RhcnRBbmdsZSA9IDA7IH1cbiAgICAgICAgaWYgKHN0b3BBbmdsZSA9PT0gdm9pZCAwKSB7IHN0b3BBbmdsZSA9IDIgKiBNYXRoLlBJOyB9XG4gICAgICAgIHZhciBzdGVwID0gMiAqIE1hdGguUEkgLyBwb2ludENvdW50O1xuICAgICAgICB2YXIgcG9pbnRzID0gW107XG4gICAgICAgIHZhciBhbmdsZSA9IHN0YXJ0QW5nbGU7XG4gICAgICAgIHdoaWxlIChhbmdsZSA8IHN0b3BBbmdsZSAtIHN0ZXApIHtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKG5ldyBEUG9pbnQodGhpcy5yKS5zY2FsZShNYXRoLmNvcyhhbmdsZSksIE1hdGguc2luKGFuZ2xlKSlcbiAgICAgICAgICAgICAgICAubW92ZSh0aGlzLmNlbnRlcikpO1xuICAgICAgICAgICAgYW5nbGUgKz0gc3RlcDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgeCA9IHRoaXMuciAqIE1hdGguY29zKHN0b3BBbmdsZSkgKyB0aGlzLmNlbnRlci54O1xuICAgICAgICB2YXIgeSA9IHRoaXMuciAqIE1hdGguc2luKHN0b3BBbmdsZSkgKyB0aGlzLmNlbnRlci55O1xuICAgICAgICBwb2ludHMucHVzaChuZXcgRFBvaW50KHgsIHkpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbihwb2ludHMpO1xuICAgIH07XG4gICAgRENpcmNsZS5wcm90b3R5cGUuZmluZFBvbHlnb25JbnNpZGVPblNwaGVyZSA9IGZ1bmN0aW9uIChwb2ludENvdW50LCBzdGFydEFuZ2xlLCBzdG9wQW5nbGUpIHtcbiAgICAgICAgaWYgKHBvaW50Q291bnQgPT09IHZvaWQgMCkgeyBwb2ludENvdW50ID0gNjQ7IH1cbiAgICAgICAgaWYgKHN0YXJ0QW5nbGUgPT09IHZvaWQgMCkgeyBzdGFydEFuZ2xlID0gMDsgfVxuICAgICAgICBpZiAoc3RvcEFuZ2xlID09PSB2b2lkIDApIHsgc3RvcEFuZ2xlID0gMiAqIE1hdGguUEk7IH1cbiAgICAgICAgY2hlY2tGdW5jdGlvbignZmluZFBvbHlnb25JbnNpZGVPblNwaGVyZScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgnY2VudGVyJylcbiAgICAgICAgICAgIC5zaG91bGRCZURlZ3JlZSh0aGlzLmNlbnRlcik7XG4gICAgICAgIHZhciBzdGVwID0gMiAqIE1hdGguUEkgLyBwb2ludENvdW50O1xuICAgICAgICB2YXIgcG9pbnRzID0gW107XG4gICAgICAgIHZhciBhbmdsZSA9IHN0YXJ0QW5nbGU7XG4gICAgICAgIHdoaWxlIChhbmdsZSA8IHN0b3BBbmdsZSAtIHN0ZXApIHtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKHRoaXMuc3BoZXJlT2Zmc2V0KGFuZ2xlKSk7XG4gICAgICAgICAgICBhbmdsZSArPSBzdGVwO1xuICAgICAgICB9XG4gICAgICAgIHBvaW50cy5wdXNoKHRoaXMuc3BoZXJlT2Zmc2V0KHN0b3BBbmdsZSkpO1xuICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKHBvaW50cyk7XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5zcGhlcmVPZmZzZXQgPSBmdW5jdGlvbiAoYmVhcmluZywgZWFydGhSYWRpdXMpIHtcbiAgICAgICAgaWYgKGVhcnRoUmFkaXVzID09PSB2b2lkIDApIHsgZWFydGhSYWRpdXMgPSBFQVJUSF9SQURJVVNfSU5fTUVURVJTOyB9XG4gICAgICAgIHZhciBfYSA9IHRoaXMuY2VudGVyLmNsb25lKCkuZGVncmVlVG9SYWRpYW5zKCksIGxvbjEgPSBfYS54LCBsYXQxID0gX2EueTtcbiAgICAgICAgdmFyIGRCeVIgPSB0aGlzLnIgLyBlYXJ0aFJhZGl1cztcbiAgICAgICAgdmFyIGxhdCA9IE1hdGguYXNpbihNYXRoLnNpbihsYXQxKSAqIE1hdGguY29zKGRCeVIpICtcbiAgICAgICAgICAgIE1hdGguY29zKGxhdDEpICogTWF0aC5zaW4oZEJ5UikgKiBNYXRoLmNvcyhiZWFyaW5nKSk7XG4gICAgICAgIHZhciBsb24gPSBsb24xICtcbiAgICAgICAgICAgIE1hdGguYXRhbjIoTWF0aC5zaW4oYmVhcmluZykgKiBNYXRoLnNpbihkQnlSKSAqIE1hdGguY29zKGxhdDEpLCBNYXRoLmNvcyhkQnlSKSAtIE1hdGguc2luKGxhdDEpICogTWF0aC5zaW4obGF0KSk7XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KGxvbiwgbGF0KS5yYWRpYW5zVG9EZWdyZWVzKCk7XG4gICAgfTtcbiAgICByZXR1cm4gRENpcmNsZTtcbn0oKSk7XG5leHBvcnQgeyBEQ2lyY2xlIH07XG4iLCJ2YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG52YXIgRmFzdFNlYXJjaCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRmFzdFNlYXJjaCgpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hTdG9yZSA9IHt9O1xuICAgIH1cbiAgICBGYXN0U2VhcmNoLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAocG9pbnRzKSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgcG9pbnRzXzEgPSBfX3ZhbHVlcyhwb2ludHMpLCBwb2ludHNfMV8xID0gcG9pbnRzXzEubmV4dCgpOyAhcG9pbnRzXzFfMS5kb25lOyBwb2ludHNfMV8xID0gcG9pbnRzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9iID0gcG9pbnRzXzFfMS52YWx1ZSwgeCA9IF9iLngsIHkgPSBfYi55LCB6ID0gX2IuejtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdG9yZVt4XSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF1beV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdG9yZVt4XVt5XSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0b3JlW3hdW3ldW3ogfHwgJ3VuZGVmaW5lZCddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHBvaW50c18xXzEgJiYgIXBvaW50c18xXzEuZG9uZSAmJiAoX2EgPSBwb2ludHNfMS5yZXR1cm4pKSBfYS5jYWxsKHBvaW50c18xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgRmFzdFNlYXJjaC5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgeCA9IF9hLngsIHkgPSBfYS55LCB6ID0gX2EuejtcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaFN0b3JlW3hdKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaFN0b3JlW3hdW3ldKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoU3RvcmVbeF1beV1beiB8fCAndW5kZWZpbmVkJ107XG4gICAgfTtcbiAgICByZXR1cm4gRmFzdFNlYXJjaDtcbn0oKSk7XG5leHBvcnQgeyBGYXN0U2VhcmNoIH07XG4iLCJ2YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn07XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5pbXBvcnQgeyBEUG9pbnQgfSBmcm9tICcuL0RQb2ludCc7XG5pbXBvcnQgeyBEUG9seWdvbiwgTUlOX1BPSU5UU19JTl9WQUxJRF9QT0xZR09OIH0gZnJvbSAnLi9EUG9seWdvbic7XG5pbXBvcnQgeyBGYXN0U2VhcmNoIH0gZnJvbSAnLi9GYXN0U2VhcmNoJztcbmltcG9ydCB7IGNyZWF0ZUFycmF5IH0gZnJvbSAnLi91dGlscyc7XG5leHBvcnQgdmFyIFRyYWNlTWF0cml4VmFsdWVzO1xuKGZ1bmN0aW9uIChUcmFjZU1hdHJpeFZhbHVlcykge1xuICAgIFRyYWNlTWF0cml4VmFsdWVzW1RyYWNlTWF0cml4VmFsdWVzW1wiZlwiXSA9IDBdID0gXCJmXCI7XG4gICAgVHJhY2VNYXRyaXhWYWx1ZXNbVHJhY2VNYXRyaXhWYWx1ZXNbXCJ0XCJdID0gMV0gPSBcInRcIjtcbn0pKFRyYWNlTWF0cml4VmFsdWVzIHx8IChUcmFjZU1hdHJpeFZhbHVlcyA9IHt9KSk7XG52YXIgZ2V0QnlQb3NpdGlvbiA9IGZ1bmN0aW9uIChtLCBwLCBkZWZhdWx0VmFsdWUpIHtcbiAgICBpZiAoZGVmYXVsdFZhbHVlID09PSB2b2lkIDApIHsgZGVmYXVsdFZhbHVlID0gVHJhY2VNYXRyaXhWYWx1ZXMuZjsgfVxuICAgIGlmIChtW3AueV0gPT09IHVuZGVmaW5lZCB8fCBtW3AueV1bcC54XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBtW3AueV1bcC54XTtcbn07XG52YXIgc2V0QnlQb3NpdGlvbiA9IGZ1bmN0aW9uIChtLCBwLCB2YWx1ZSkge1xuICAgIGlmIChtW3AueV0gPT09IHVuZGVmaW5lZCB8fCBtW3AueV1bcC54XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgbVtwLnldW3AueF0gPSB2YWx1ZTtcbiAgICByZXR1cm4gbVtwLnldW3AueF07XG59O1xudmFyIFRyYWNlTWF0cml4ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBUcmFjZU1hdHJpeChzLCBmKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHRoaXMuYXBwcm94aW1hdGlvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuZmluZEdyb3VwQnlJbmRleCA9IGZ1bmN0aW9uIChtLCBzKSB7XG4gICAgICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgICAgICBpZiAocyAmJiBnZXRCeVBvc2l0aW9uKG0sIHMpID09PSBUcmFjZU1hdHJpeFZhbHVlcy50KSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2gocyk7XG4gICAgICAgICAgICAgICAgdmFyIHN0YXJ0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIHZhciBtYXJrZWQgPSBUcmFjZU1hdHJpeC5jcmVhdGVNYXRyaXgoX3RoaXMuc2l6ZSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gVHJhY2VNYXRyaXhWYWx1ZXMuZjsgfSk7XG4gICAgICAgICAgICAgICAgc2V0QnlQb3NpdGlvbihtYXJrZWQsIHMsIFRyYWNlTWF0cml4VmFsdWVzLnQpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChzdGFydEluZGV4IDwgcmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHJlcy5hdChzdGFydEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IC0xOyBpIDwgMjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gLTE7IGogPCAyOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG5ldyBEUG9pbnQoci54ICsgaSwgci55ICsgaik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldEJ5UG9zaXRpb24obWFya2VkLCB0LCBUcmFjZU1hdHJpeFZhbHVlcy50KSA9PT0gVHJhY2VNYXRyaXhWYWx1ZXMuZiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRCeVBvc2l0aW9uKG0sIHQsIFRyYWNlTWF0cml4VmFsdWVzLmYpID09PSBUcmFjZU1hdHJpeFZhbHVlcy50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCeVBvc2l0aW9uKG1hcmtlZCwgdCwgVHJhY2VNYXRyaXhWYWx1ZXMudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZpbmRBbGxHcm91cHNJbk1hdHJpeCA9IGZ1bmN0aW9uIChtKSB7XG4gICAgICAgICAgICB2YXIgZmlyc3RNYXJrID0gX3RoaXMuZmluZE1hcmtlZChtKTtcbiAgICAgICAgICAgIGlmICghZmlyc3RNYXJrKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGdyb3VwID0gX3RoaXMuZmluZEdyb3VwQnlJbmRleChtLCBmaXJzdE1hcmspO1xuICAgICAgICAgICAgdmFyIGdyb3VwcyA9IFtncm91cF07XG4gICAgICAgICAgICB2YXIgZ3JvdXBTdW0gPSBncm91cC5sZW5ndGg7XG4gICAgICAgICAgICB2YXIgYWxsR3JvdXBzID0gX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGdyb3VwLnBvaW50cyksIGZhbHNlKTtcbiAgICAgICAgICAgIHZhciBmcyA9IG5ldyBGYXN0U2VhcmNoKCk7XG4gICAgICAgICAgICBmcy5hZGQoYWxsR3JvdXBzKTtcbiAgICAgICAgICAgIHdoaWxlIChncm91cFN1bSA8IF90aGlzLnRvdGFsQ291bnRJbk1hdHJpeChtKSkge1xuICAgICAgICAgICAgICAgIHZhciBtYXJrID0gX3RoaXMuZmluZE1hcmtlZChtKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAobWFyayAmJiBmcy5maW5kKG1hcmspKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmsgPSBfdGhpcy5maW5kTWFya2VkKG0sIG1hcmspO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgbmV4dEdyb3VwID0gX3RoaXMuZmluZEdyb3VwQnlJbmRleChtLCBtYXJrKTtcbiAgICAgICAgICAgICAgICBncm91cFN1bSArPSBuZXh0R3JvdXAubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGFsbEdyb3VwcyA9IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGFsbEdyb3VwcyksIGZhbHNlKSwgX19yZWFkKG5leHRHcm91cC5wb2ludHMpLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgZnMuYWRkKG5leHRHcm91cC5wb2ludHMpO1xuICAgICAgICAgICAgICAgIGdyb3Vwcy5wdXNoKG5leHRHcm91cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZ3JvdXBzLmZpbHRlcihmdW5jdGlvbiAoZykgeyByZXR1cm4gZy5sZW5ndGggPiAyOyB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50cmFjZUdyb3VwID0gZnVuY3Rpb24gKG0sIGdyb3VwKSB7XG4gICAgICAgICAgICB2YXIgdHJhY2VEaXJlY3Rpb25zID0gW1xuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoLTEsIC0xKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KC0xLCAwKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KC0xLCAxKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDAsIDEpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoMSwgMSksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgxLCAwKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDEsIC0xKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDAsIC0xKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHZhciBsZWZ0ID0gZnVuY3Rpb24gKGQpIHsgcmV0dXJuIChkICsgdHJhY2VEaXJlY3Rpb25zLmxlbmd0aCArIDEpICUgdHJhY2VEaXJlY3Rpb25zLmxlbmd0aDsgfTtcbiAgICAgICAgICAgIHZhciByaWdodCA9IGZ1bmN0aW9uIChkKSB7IHJldHVybiAoZCArIHRyYWNlRGlyZWN0aW9ucy5sZW5ndGggLSAxKSAlIHRyYWNlRGlyZWN0aW9ucy5sZW5ndGg7IH07XG4gICAgICAgICAgICBpZiAoZ3JvdXAubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgIHZhciB0ID0gZ3JvdXAuYXQoMCkuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKFt0LCB0LCB0XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcG9pbnRzID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgICAgICB2YXIgZGlyZWN0aW9uID0gMDtcbiAgICAgICAgICAgIHZhciBwcmV2RGlyZWN0aW9uID0gSW5maW5pdHk7XG4gICAgICAgICAgICB2YXIgcCA9IGdyb3VwLmF0KDApO1xuICAgICAgICAgICAgd2hpbGUgKCFwLmVxdWFsKGdyb3VwLmF0KDApKSB8fCBwb2ludHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXh0VmFsdWUgPSBnZXRCeVBvc2l0aW9uKG0sIHAuY2xvbmUoKS5tb3ZlKHRyYWNlRGlyZWN0aW9uc1tkaXJlY3Rpb25dKSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXh0TmVpZ2hib3VyVmFsdWUgPSBnZXRCeVBvc2l0aW9uKG0sIHAuY2xvbmUoKS5tb3ZlKHRyYWNlRGlyZWN0aW9uc1tsZWZ0KGRpcmVjdGlvbildKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0VmFsdWUgPT09IFRyYWNlTWF0cml4VmFsdWVzLnQgJiYgbmV4dE5laWdoYm91clZhbHVlID09PSBUcmFjZU1hdHJpeFZhbHVlcy5mKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSByaWdodChkaXJlY3Rpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocHJldkRpcmVjdGlvbiAhPT0gZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cy5wdXNoKHApO1xuICAgICAgICAgICAgICAgICAgICBwcmV2RGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwID0gcC5jbG9uZSgpLm1vdmUodHJhY2VEaXJlY3Rpb25zW2RpcmVjdGlvbl0pO1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IGxlZnQobGVmdChkaXJlY3Rpb24pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChfdGhpcy5hcHByb3hpbWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBvaW50cy5hcHByb3hpbWF0aW9uKCkuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwb2ludHMuY2xvbmUoKS5jbG9zZSgpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNyZWF0ZUhvbGVNYXRyaXggPSBmdW5jdGlvbiAoZ3JvdXApIHtcbiAgICAgICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICAgICAgdmFyIGZ1bGxUcmFjZURpcmVjdGlvbnMgPSBbXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgtMSwgMCksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgwLCAxKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDEsIDApLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoMCwgLTEpXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgZ3JvdXAucHJlcGFyZVRvRmFzdFNlYXJjaCgpO1xuICAgICAgICAgICAgdmFyIHRtcE1hdHJpeCA9IFRyYWNlTWF0cml4XG4gICAgICAgICAgICAgICAgLmNyZWF0ZU1hdHJpeChfdGhpcy5zaXplLCBmdW5jdGlvbiAocCkgeyByZXR1cm4gZ3JvdXAuZmFzdEhhcyhwKSA/IFRyYWNlTWF0cml4VmFsdWVzLnQgOiBUcmFjZU1hdHJpeFZhbHVlcy5mOyB9KTtcbiAgICAgICAgICAgIHZhciBzdGFydENvb3JkcyA9IG5ldyBEUG9seWdvbigpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfdGhpcy5zaXplLnc7IGkrKykge1xuICAgICAgICAgICAgICAgIHN0YXJ0Q29vcmRzLnB1c2gobmV3IERQb2ludChpLCAtMSkpO1xuICAgICAgICAgICAgICAgIHN0YXJ0Q29vcmRzLnB1c2gobmV3IERQb2ludChpLCBfdGhpcy5zaXplLmgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX3RoaXMuc2l6ZS5oOyBpKyspIHtcbiAgICAgICAgICAgICAgICBzdGFydENvb3Jkcy5wdXNoKG5ldyBEUG9pbnQoLTEsIGkpKTtcbiAgICAgICAgICAgICAgICBzdGFydENvb3Jkcy5wdXNoKG5ldyBEUG9pbnQoX3RoaXMuc2l6ZS53LCBpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoc3RhcnRDb29yZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBvaW50ID0gc3RhcnRDb29yZHMucG9wKCk7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZnVsbFRyYWNlRGlyZWN0aW9uc18xID0gKGVfMSA9IHZvaWQgMCwgX192YWx1ZXMoZnVsbFRyYWNlRGlyZWN0aW9ucykpLCBmdWxsVHJhY2VEaXJlY3Rpb25zXzFfMSA9IGZ1bGxUcmFjZURpcmVjdGlvbnNfMS5uZXh0KCk7ICFmdWxsVHJhY2VEaXJlY3Rpb25zXzFfMS5kb25lOyBmdWxsVHJhY2VEaXJlY3Rpb25zXzFfMSA9IGZ1bGxUcmFjZURpcmVjdGlvbnNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkaXJlY3Rpb24gPSBmdWxsVHJhY2VEaXJlY3Rpb25zXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0bXBQb2ludCA9IHBvaW50LmNsb25lKCkubW92ZShkaXJlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gZ2V0QnlQb3NpdGlvbih0bXBNYXRyaXgsIHRtcFBvaW50LCBUcmFjZU1hdHJpeFZhbHVlcy50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gVHJhY2VNYXRyaXhWYWx1ZXMuZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJ5UG9zaXRpb24odG1wTWF0cml4LCB0bXBQb2ludCwgVHJhY2VNYXRyaXhWYWx1ZXMudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRDb29yZHMucHVzaCh0bXBQb2ludCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmdWxsVHJhY2VEaXJlY3Rpb25zXzFfMSAmJiAhZnVsbFRyYWNlRGlyZWN0aW9uc18xXzEuZG9uZSAmJiAoX2EgPSBmdWxsVHJhY2VEaXJlY3Rpb25zXzEucmV0dXJuKSkgX2EuY2FsbChmdWxsVHJhY2VEaXJlY3Rpb25zXzEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdCA9IF90aGlzLnJldmVyc2VNYXRyaXgodG1wTWF0cml4KTtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy50b3RhbENvdW50SW5NYXRyaXgodCkgPyB0IDogbnVsbDtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zaXplID0gcy5jbG9uZSgpLnNjYWxlKDQpO1xuICAgICAgICB2YXIgdCA9IFRyYWNlTWF0cml4LmNyZWF0ZU1hdHJpeCh0aGlzLnNpemUsIGZ1bmN0aW9uIChwKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBwLmNsb25lKCkubW9kKDQpLCB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgICAgICBpZiAoWzEsIDJdLmluY2x1ZGVzKHgpICYmIFsxLCAyXS5pbmNsdWRlcyh5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmKHAuY2xvbmUoKS5kaXYoNCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIFRyYWNlTWF0cml4VmFsdWVzLmY7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm0gPSBUcmFjZU1hdHJpeC5jcmVhdGVNYXRyaXgodGhpcy5zaXplKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB0aGlzLnNpemUueSAtIDE7IGkrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDE7IGogPCB0aGlzLnNpemUueCAtIDE7IGorKykge1xuICAgICAgICAgICAgICAgIGlmICh0W2ldW2pdID09PSBUcmFjZU1hdHJpeFZhbHVlcy50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubVtpIC0gMV1baiAtIDFdID0gVHJhY2VNYXRyaXhWYWx1ZXMudDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tW2kgLSAxXVtqXSA9IFRyYWNlTWF0cml4VmFsdWVzLnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubVtpIC0gMV1baiArIDFdID0gVHJhY2VNYXRyaXhWYWx1ZXMudDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tW2ldW2ogLSAxXSA9IFRyYWNlTWF0cml4VmFsdWVzLnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubVtpXVtqXSA9IFRyYWNlTWF0cml4VmFsdWVzLnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubVtpXVtqICsgMV0gPSBUcmFjZU1hdHJpeFZhbHVlcy50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1baSArIDFdW2ogLSAxXSA9IFRyYWNlTWF0cml4VmFsdWVzLnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubVtpICsgMV1bal0gPSBUcmFjZU1hdHJpeFZhbHVlcy50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1baSArIDFdW2ogKyAxXSA9IFRyYWNlTWF0cml4VmFsdWVzLnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIFRyYWNlTWF0cml4LnByb3RvdHlwZS5mdWxsTWF0cml4VHJhY2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBncm91cHMgPSB0aGlzLmZpbmRBbGxHcm91cHNJbk1hdHJpeCh0aGlzLm0pO1xuICAgICAgICB2YXIgcGF0aHMgPSBncm91cHMubWFwKGZ1bmN0aW9uIChnKSB7IHJldHVybiBfdGhpcy50cmFjZUdyb3VwKF90aGlzLm0sIGcpOyB9KTtcbiAgICAgICAgdmFyIGhvbGVNYXRyaXhzID0gZ3JvdXBzLm1hcCh0aGlzLmNyZWF0ZUhvbGVNYXRyaXgpO1xuICAgICAgICB2YXIgaG9sZXNHcm91cHMgPSBob2xlTWF0cml4cy5tYXAoZnVuY3Rpb24gKG0pIHsgcmV0dXJuIG0gJiYgX3RoaXMuZmluZEFsbEdyb3Vwc0luTWF0cml4KG0pOyB9KTtcbiAgICAgICAgdmFyIGhvbGVzUGF0aHMgPSBob2xlc0dyb3Vwcy5tYXAoZnVuY3Rpb24gKGhnLCBpbmRleCkgeyByZXR1cm4gaGcgJiYgaGcubWFwKGZ1bmN0aW9uIChnKSB7IHJldHVybiBfdGhpc1xuICAgICAgICAgICAgLnRyYWNlR3JvdXAoaG9sZU1hdHJpeHNbaW5kZXhdLCBnKTsgfSkuZmlsdGVyKGZ1bmN0aW9uIChyKSB7IHJldHVybiByLmxlbmd0aCA+IE1JTl9QT0lOVFNfSU5fVkFMSURfUE9MWUdPTjsgfSk7IH0pO1xuICAgICAgICByZXR1cm4gZ3JvdXBzLm1hcChmdW5jdGlvbiAoZywgaW5kZXgpIHtcbiAgICAgICAgICAgIHZhciByZXMgPSBwYXRoc1tpbmRleF07XG4gICAgICAgICAgICBpZiAoaG9sZXNHcm91cHNbaW5kZXhdICYmIGhvbGVzR3JvdXBzW2luZGV4XS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXMuaG9sZXMgPSBob2xlc1BhdGhzW2luZGV4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXMubG9vcCgpXG4gICAgICAgICAgICAgICAgLmRpdmlkZSg0KVxuICAgICAgICAgICAgICAgIC5yb3VuZCgpXG4gICAgICAgICAgICAgICAgLnJ1bigpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFRyYWNlTWF0cml4LnByb3RvdHlwZS5yZXZlcnNlTWF0cml4ID0gZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgcmV0dXJuIFRyYWNlTWF0cml4LmNyZWF0ZU1hdHJpeCh0aGlzLnNpemUsIGZ1bmN0aW9uIChwKSB7IHJldHVybiBnZXRCeVBvc2l0aW9uKG0sIHApID09PSBUcmFjZU1hdHJpeFZhbHVlcy5mID8gVHJhY2VNYXRyaXhWYWx1ZXMudCA6IFRyYWNlTWF0cml4VmFsdWVzLmY7IH0pO1xuICAgIH07XG4gICAgVHJhY2VNYXRyaXgucHJvdG90eXBlLmZpbmRNYXJrZWQgPSBmdW5jdGlvbiAobSwgaW5pdCkge1xuICAgICAgICB2YXIgcyA9IHRoaXMuc2l6ZTtcbiAgICAgICAgdmFyIGluaSA9IGZhbHNlO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMudzsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHMuaDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpbmkgJiYgaW5pdCkge1xuICAgICAgICAgICAgICAgICAgICBpID0gaW5pdC54O1xuICAgICAgICAgICAgICAgICAgICBqID0gaW5pdC55O1xuICAgICAgICAgICAgICAgICAgICBpbmkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGdldEJ5UG9zaXRpb24obSwgbmV3IERQb2ludChpLCBqKSkgPT09IFRyYWNlTWF0cml4VmFsdWVzLnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoaSwgaik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgVHJhY2VNYXRyaXgucHJvdG90eXBlLnRvdGFsQ291bnRJbk1hdHJpeCA9IGZ1bmN0aW9uIChtKSB7XG4gICAgICAgIHZhciByZXMgPSAwO1xuICAgICAgICB2YXIgcyA9IHRoaXMuc2l6ZTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLnc7IGkrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzLmg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChnZXRCeVBvc2l0aW9uKG0sIG5ldyBEUG9pbnQoaSwgaikpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgVHJhY2VNYXRyaXguY3JlYXRlTWF0cml4ID0gZnVuY3Rpb24gKHNpemUsIGYpIHtcbiAgICAgICAgaWYgKGYgPT09IHZvaWQgMCkgeyBmID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gVHJhY2VNYXRyaXhWYWx1ZXMuZjsgfTsgfVxuICAgICAgICByZXR1cm4gY3JlYXRlQXJyYXkoc2l6ZS5oKVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAodiwgaSkgeyByZXR1cm4gY3JlYXRlQXJyYXkoc2l6ZS53KS5tYXAoZnVuY3Rpb24gKHYyLCBqKSB7IHJldHVybiBmKG5ldyBEUG9pbnQoaiwgaSkpOyB9KTsgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gVHJhY2VNYXRyaXg7XG59KCkpO1xuZXhwb3J0IHsgVHJhY2VNYXRyaXggfTtcbiIsInZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG52YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG5pbXBvcnQgeyBEUG9seWdvbiB9IGZyb20gJy4vRFBvbHlnb24nO1xuaW1wb3J0IHsgRFBvaW50IH0gZnJvbSAnLi9EUG9pbnQnO1xuaW1wb3J0IHsgaXNEZWZBbmROb3ROdWxsIH0gZnJvbSAnLi91dGlscyc7XG52YXIgSW50ZXJwb2xhdGlvbk1hdHJpeCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gSW50ZXJwb2xhdGlvbk1hdHJpeChiYm94TGlrZSwgc3RlcFNpemUsIGtleXMsIHApIHtcbiAgICAgICAgaWYgKHAgPT09IHZvaWQgMCkgeyBwID0gMjsgfVxuICAgICAgICB0aGlzLnN0ZXBTaXplID0gc3RlcFNpemU7XG4gICAgICAgIHRoaXMucCA9IHA7XG4gICAgICAgIHRoaXMucG9pbnRzID0gW107XG4gICAgICAgIHRoaXMuY2VsbHMgPSB7fTtcbiAgICAgICAgdGhpcy5hbGxDZWxscyA9IFtdO1xuICAgICAgICB0aGlzLm1pblBvaW50ID0gYmJveExpa2UubWluUG9pbnQ7XG4gICAgICAgIHRoaXMubWF4UG9pbnQgPSBiYm94TGlrZS5tYXhQb2ludDtcbiAgICAgICAgdGhpcy5zaXplUG9seSA9IERQb2x5Z29uLmNyZWF0ZVNxdWFyZUJ5U2l6ZShuZXcgRFBvaW50KHRoaXMuc3RlcFNpemUpKTtcbiAgICAgICAgdGhpcy5zaXplID0gdGhpcy5tYXhQb2ludC5jbG9uZSgpLm1vdmUodGhpcy5taW5Qb2ludC5jbG9uZSgpLm1pbnVzKCkpXG4gICAgICAgICAgICAuZGl2aWRlKHRoaXMuc3RlcFNpemUpXG4gICAgICAgICAgICAuY2VpbCgpO1xuICAgICAgICB0aGlzLmtleXMgPSBBcnJheS5pc0FycmF5KGtleXMpID8ga2V5cyA6IFtrZXlzXTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUNlbGxzKCk7XG4gICAgfVxuICAgIEludGVycG9sYXRpb25NYXRyaXgucHJvdG90eXBlLnNldEtub3duUG9pbnRzID0gZnVuY3Rpb24gKHBvaW50cykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLnBvaW50cyA9IHBvaW50cyBpbnN0YW5jZW9mIERQb2x5Z29uID8gcG9pbnRzLnBvaW50cyA6IHBvaW50cztcbiAgICAgICAgdGhpcy5taW5Qb2ludC5zZXRQcm9wZXJ0aWVzKHRoaXMucG9pbnRzLnJlZHVjZShmdW5jdGlvbiAoYSwgdikgeyByZXR1cm4gX3RoaXMua2V5c1xuICAgICAgICAgICAgLnJlZHVjZShmdW5jdGlvbiAoYWEsIGspIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGFhW2tdID0gTWF0aC5taW4oKF9hID0gYVtrXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogSW5maW5pdHksIHYucHJvcGVydGllc1trXSk7XG4gICAgICAgICAgICByZXR1cm4gYWE7XG4gICAgICAgIH0sIGEpOyB9LCB7fSkpO1xuICAgICAgICB0aGlzLm1heFBvaW50LnNldFByb3BlcnRpZXModGhpcy5wb2ludHMucmVkdWNlKGZ1bmN0aW9uIChhLCB2KSB7IHJldHVybiBfdGhpcy5rZXlzXG4gICAgICAgICAgICAucmVkdWNlKGZ1bmN0aW9uIChhYSwgaykge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgYWFba10gPSBNYXRoLm1heCgoX2EgPSBhW2tdKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAtSW5maW5pdHksIHYucHJvcGVydGllc1trXSk7XG4gICAgICAgICAgICByZXR1cm4gYWE7XG4gICAgICAgIH0sIGEpOyB9LCB7fSkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIEludGVycG9sYXRpb25NYXRyaXgucHJvdG90eXBlLnBvc2l0aW9uVG9DZWxsQ29vcmRzID0gZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgcmV0dXJuIGQuY2xvbmUoKVxuICAgICAgICAgICAgLm1vdmUodGhpcy5taW5Qb2ludC5jbG9uZSgpLm1pbnVzKCkpXG4gICAgICAgICAgICAuZGl2aWRlKHRoaXMuc3RlcFNpemUpXG4gICAgICAgICAgICAuZmxvb3IoKTtcbiAgICB9O1xuICAgIEludGVycG9sYXRpb25NYXRyaXgucHJvdG90eXBlLmNhbGN1bGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXRLbm93blZhbHVlcygpO1xuICAgICAgICB0aGlzLmludGVycG9sYXRlVmFsdWVzKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgSW50ZXJwb2xhdGlvbk1hdHJpeC5wcm90b3R5cGUuZ2V0Q2VsbFZhbHVlID0gZnVuY3Rpb24gKF9hLCBrZXkpIHtcbiAgICAgICAgdmFyIHggPSBfYS54LCB5ID0gX2EueTtcbiAgICAgICAgdmFyIGNlbGwgPSB0aGlzLmNlbGxzW3hdW3ldO1xuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShrZXkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGtleS5yZWR1Y2UoZnVuY3Rpb24gKGEsIGspIHtcbiAgICAgICAgICAgICAgICAgICAgYVtrXSA9IGNlbGwucHJvcGVydGllc1trXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgICAgICAgICAgfSwge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNlbGwucHJvcGVydGllc1trZXldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7fSwgY2VsbC5wcm9wZXJ0aWVzKTtcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShJbnRlcnBvbGF0aW9uTWF0cml4LnByb3RvdHlwZSwgXCJnZXRDZWxsRGF0YVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWxsQ2VsbHMucmVkdWNlKGZ1bmN0aW9uIChhLCBjKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9hID0gYy5wcm9wZXJ0aWVzLCB4ID0gX2EueCwgeSA9IF9hLnksIHByb3BzID0gX19yZXN0KF9hLCBbXCJ4XCIsIFwieVwiXSk7XG4gICAgICAgICAgICAgICAgYVt4XSA9IGFbeF0gfHwge307XG4gICAgICAgICAgICAgICAgYVt4XVt5XSA9IF9fYXNzaWduKHt9LCBwcm9wcyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSW50ZXJwb2xhdGlvbk1hdHJpeC5wcm90b3R5cGUsIFwiYWxsQ2VsbHNDbG9uZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWxsQ2VsbHMubWFwKGZ1bmN0aW9uIChwKSB7IHJldHVybiBwLmNsb25lKCk7IH0pO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgSW50ZXJwb2xhdGlvbk1hdHJpeC5wcm90b3R5cGUuaW50ZXJwb2xhdGVWYWx1ZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBwb2ludHMgPSB0aGlzLnBvaW50cy5tYXAoZnVuY3Rpb24gKHApIHsgcmV0dXJuIF90aGlzLnBvc2l0aW9uVG9DZWxsQ29vcmRzKHApOyB9KTtcbiAgICAgICAgdGhpcy5hbGxDZWxscy5mb3JFYWNoKGZ1bmN0aW9uIChjZWxsKSB7XG4gICAgICAgICAgICB2YXIgdCA9IG5ldyBEUG9pbnQoY2VsbC5wcm9wZXJ0aWVzLngsIGNlbGwucHJvcGVydGllcy55KTtcbiAgICAgICAgICAgIHZhciBkaXN0YW5jZXMgPSBwb2ludHMubWFwKGZ1bmN0aW9uIChwKSB7IHJldHVybiBNYXRoLnBvdyh0LmRpc3RhbmNlKHApLCBfdGhpcy5wKTsgfSk7XG4gICAgICAgICAgICBfdGhpcy5rZXlzLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKGNlbGwucHJvcGVydGllc1trXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgX2EgPSBfX3JlYWQoZGlzdGFuY2VzLnJlZHVjZShmdW5jdGlvbiAoYSwgZCwgaSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKF90aGlzLnBvaW50c1tpXS5wcm9wZXJ0aWVzW2tdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYVswXSArPSBfdGhpcy5wb2ludHNbaV0ucHJvcGVydGllc1trXSAvIGQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBhWzFdICs9IDEgLyBkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICAgICAgICAgIH0sIFswLCAwXSksIDIpLCB2YWx1ZVN1bSA9IF9hWzBdLCBvbmVTdW0gPSBfYVsxXTtcbiAgICAgICAgICAgICAgICBjZWxsLnByb3BlcnRpZXNba10gPSB2YWx1ZVN1bSAvIG9uZVN1bTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIEludGVycG9sYXRpb25NYXRyaXgucHJvdG90eXBlLnNldEtub3duVmFsdWVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChwKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBfdGhpcy5wb3NpdGlvblRvQ2VsbENvb3JkcyhwKSwgeCA9IF9hLngsIHkgPSBfYS55O1xuICAgICAgICAgICAgX3RoaXMua2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMuY2VsbHNbeF1beV0ucHJvcGVydGllc1trXSA9IHAucHJvcGVydGllc1trXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIEludGVycG9sYXRpb25NYXRyaXgucHJvdG90eXBlLmdlbmVyYXRlQ2VsbHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSB0aGlzLm1pblBvaW50LngsIHggPSAwOyBpIDwgdGhpcy5tYXhQb2ludC54OyBpICs9IHRoaXMuc3RlcFNpemUsIHgrKykge1xuICAgICAgICAgICAgdGhpcy5jZWxsc1t4XSA9IHRoaXMuY2VsbHNbeF0gfHwge307XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gdGhpcy5taW5Qb2ludC55LCB5ID0gMDsgaiA8IHRoaXMubWF4UG9pbnQueTsgaiArPSB0aGlzLnN0ZXBTaXplLCB5KyspIHtcbiAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuc2l6ZVBvbHlcbiAgICAgICAgICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgICAgICAgICAgLmxvb3AoKVxuICAgICAgICAgICAgICAgICAgICAubW92ZShpLCBqKVxuICAgICAgICAgICAgICAgICAgICAucnVuKClcbiAgICAgICAgICAgICAgICAgICAgLnNldFByb3BlcnRpZXMoe1xuICAgICAgICAgICAgICAgICAgICB4OiB4LFxuICAgICAgICAgICAgICAgICAgICB5OiB5XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZWxsc1t4XVt5XSA9IHQ7XG4gICAgICAgICAgICAgICAgdGhpcy5hbGxDZWxscy5wdXNoKHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gSW50ZXJwb2xhdGlvbk1hdHJpeDtcbn0oKSk7XG5leHBvcnQgeyBJbnRlcnBvbGF0aW9uTWF0cml4IH07XG4iLCJ2YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG5pbXBvcnQgeyBEUG9pbnQgfSBmcm9tICcuL0RQb2ludCc7XG5pbXBvcnQgeyBnYXVzc2lhbkVsaW1pbmF0aW9uIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBETnVtYmVycyB9IGZyb20gJy4vRE51bWJlcnMnO1xudmFyIERQbGFuZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRFBsYW5lKGEsIGIsIGMsIGQsIHAxLCBwMiwgcDMpIHtcbiAgICAgICAgaWYgKHAxID09PSB2b2lkIDApIHsgcDEgPSBEUG9pbnQuemVybygpOyB9XG4gICAgICAgIGlmIChwMiA9PT0gdm9pZCAwKSB7IHAyID0gRFBvaW50Lnplcm8oKTsgfVxuICAgICAgICBpZiAocDMgPT09IHZvaWQgMCkgeyBwMyA9IERQb2ludC56ZXJvKCk7IH1cbiAgICAgICAgdGhpcy5hID0gYTtcbiAgICAgICAgdGhpcy5iID0gYjtcbiAgICAgICAgdGhpcy5jID0gYztcbiAgICAgICAgdGhpcy5kID0gZDtcbiAgICAgICAgdGhpcy5wMSA9IHAxO1xuICAgICAgICB0aGlzLnAyID0gcDI7XG4gICAgICAgIHRoaXMucDMgPSBwMztcbiAgICB9XG4gICAgRFBsYW5lLmZpbmQgPSBmdW5jdGlvbiAocDEsIHAyLCBwMykge1xuICAgICAgICBpZiAocDEueCA9PT0gcDIueCAmJiBwMi54ID09PSBwMy54KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQbGFuZSgxLCAwLCAwLCAtcDEueCwgcDEsIHAyLCBwMyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHAxLnkgPT09IHAyLnkgJiYgcDIueSA9PT0gcDMueSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUGxhbmUoMCwgMSwgMCwgLXAxLnksIHAxLCBwMiwgcDMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwMS56ID09PSBwMi56ICYmIHAyLnogPT09IHAzLnopIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBsYW5lKDAsIDAsIDEsIC1wMS56LCBwMSwgcDIsIHAzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZCA9IDE7XG4gICAgICAgIHZhciBfYSA9IF9fcmVhZChnYXVzc2lhbkVsaW1pbmF0aW9uKFtcbiAgICAgICAgICAgIFtwMS54LCBwMS55LCBwMS56LCAtZF0sXG4gICAgICAgICAgICBbcDIueCwgcDIueSwgcDIueiwgLWRdLFxuICAgICAgICAgICAgW3AzLngsIHAzLnksIHAzLnosIC1kXVxuICAgICAgICBdKSwgMyksIGEgPSBfYVswXSwgYiA9IF9hWzFdLCBjID0gX2FbMl07XG4gICAgICAgIHJldHVybiBuZXcgRFBsYW5lKGEsIGIsIGMsIGQsIHAxLCBwMiwgcDMpO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS54ID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHAgaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGEgPSBfYS5hLCBiID0gX2EuYiwgYyA9IF9hLmMsIGQgPSBfYS5kO1xuICAgICAgICAgICAgdmFyIHkgPSBwLnksIHogPSBwLno7XG4gICAgICAgICAgICBwLnggPSAtKGIgKiB5ICsgYyAqIHogKyBkKSAvIGE7XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcC5tYXAoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIF90aGlzLngodCk7IH0pO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS55ID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHAgaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGEgPSBfYS5hLCBiID0gX2EuYiwgYyA9IF9hLmMsIGQgPSBfYS5kO1xuICAgICAgICAgICAgdmFyIHggPSBwLngsIHogPSBwLno7XG4gICAgICAgICAgICBwLnkgPSAtKGEgKiB4ICsgYyAqIHogKyBkKSAvIGI7XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcC5tYXAoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIF90aGlzLnkodCk7IH0pO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS56ID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHAgaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGEgPSBfYS5hLCBiID0gX2EuYiwgYyA9IF9hLmMsIGQgPSBfYS5kO1xuICAgICAgICAgICAgdmFyIHggPSBwLngsIHkgPSBwLnk7XG4gICAgICAgICAgICBwLnogPSAtKGEgKiB4ICsgYiAqIHkgKyBkKSAvIGM7XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcC5tYXAoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIF90aGlzLnoodCk7IH0pO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgYSA9IF9hLmEsIGIgPSBfYS5iLCBjID0gX2EuYywgZCA9IF9hLmQsIHAxID0gX2EucDEsIHAyID0gX2EucDIsIHAzID0gX2EucDM7XG4gICAgICAgIHJldHVybiBuZXcgRFBsYW5lKGEsIGIsIGMsIGQsIHAxLCBwMiwgcDMpO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS5kaXN0YW5jZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGlmIChwIGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB2YXIgeCA9IHAueCwgeSA9IHAueSwgeiA9IHAuejtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGFfMSA9IF9hLmEsIGJfMSA9IF9hLmIsIGNfMSA9IF9hLmMsIGRfMSA9IF9hLmQ7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnMoYV8xICogeCArIGJfMSAqIHkgKyBjXzEgKiB6ICsgZF8xKSAvIE1hdGguc3FydChhXzEgKiBhXzEgKyBiXzEgKiBiXzEgKyBjXzEgKiBjXzEpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfYiA9IHAsIGEgPSBfYi5hLCBiID0gX2IuYiwgYyA9IF9iLmMsIGQgPSBfYi5kO1xuICAgICAgICB2YXIgciA9IHRoaXMuZDtcbiAgICAgICAgcmV0dXJuIE1hdGguYWJzKGQgLSByKSAvIE1hdGguc3FydChhICogYSArIGIgKiBiICsgYyAqIGMpO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS5lcXVhbCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBhID0gcC5hLCBiID0gcC5iLCBjID0gcC5jLCBkID0gcC5kO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBxID0gX2EuYSwgdyA9IF9hLmIsIGUgPSBfYS5jLCByID0gX2EuZDtcbiAgICAgICAgcmV0dXJuIEROdW1iZXJzLmxpa2UoYSwgcSkgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UoYiwgdykgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UoYywgZSkgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UoZCwgcik7XG4gICAgfTtcbiAgICBEUGxhbmUucHJvdG90eXBlLnNhbWUgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgYSA9IHAuYSwgYiA9IHAuYiwgYyA9IHAuYywgZCA9IHAuZDtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgcSA9IF9hLmEsIHcgPSBfYS5iLCBlID0gX2EuYywgciA9IF9hLmQ7XG4gICAgICAgIHZhciB0ID0gYSAvIHE7XG4gICAgICAgIHZhciB5ID0gYiAvIHc7XG4gICAgICAgIHZhciB1ID0gYyAvIGU7XG4gICAgICAgIHZhciBpID0gZCAvIHI7XG4gICAgICAgIHJldHVybiBETnVtYmVycy5saWtlKHQsIHkpICYmXG4gICAgICAgICAgICBETnVtYmVycy5saWtlKHQsIHUpICYmXG4gICAgICAgICAgICBETnVtYmVycy5saWtlKHQsIGMpICYmXG4gICAgICAgICAgICBETnVtYmVycy5saWtlKHQsIGkpO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS5wYXJhbGxlbCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBhID0gcC5hLCBiID0gcC5iLCBjID0gcC5jLCBkID0gcC5kO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBxID0gX2EuYSwgdyA9IF9hLmIsIGUgPSBfYS5jLCByID0gX2EuZDtcbiAgICAgICAgdmFyIHQgPSBhIC8gcTtcbiAgICAgICAgdmFyIHkgPSBiIC8gdztcbiAgICAgICAgdmFyIHUgPSBjIC8gZTtcbiAgICAgICAgdmFyIGkgPSBkIC8gcjtcbiAgICAgICAgcmV0dXJuIEROdW1iZXJzLmxpa2UodCwgeSkgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UodCwgdSkgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UodCwgYykgJiZcbiAgICAgICAgICAgICFETnVtYmVycy5saWtlKHQsIGkpO1xuICAgIH07XG4gICAgcmV0dXJuIERQbGFuZTtcbn0oKSk7XG5leHBvcnQgeyBEUGxhbmUgfTtcbiJdLCJuYW1lcyI6WyJfX3JlYWQiLCJ0aGlzIiwiX19zcHJlYWRBcnJheSIsIl9fdmFsdWVzIiwiX19hc3NpZ24iLCJvcGVyYXRpb24iLCJqc3RzSW8iLCJfX3Jlc3QiLCJUcmFjZU1hdHJpeFZhbHVlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0lBQUEsSUFBSUEsUUFBTSxHQUFHLENBQUNDLFNBQUksSUFBSUEsU0FBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDdEQsSUFBSSxJQUFJLENBQUMsR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvRCxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyQyxJQUFJLElBQUk7SUFDUixRQUFRLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRixLQUFLO0lBQ0wsSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQzNDLFlBQVk7SUFDWixRQUFRLElBQUk7SUFDWixZQUFZLElBQUksQ0FBQyxJQUFJ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QyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JILElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sTUFBTSxLQUFLLFVBQVUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFdBQVcsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0osSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN0RSxJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUUsRUFBRTtJQUN0QixRQUFRLElBQUksQ0FBQyxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUN0RSxRQUFRLE9BQU8sQ0FBQyxFQUFFLElBQUk7SUFDdEIsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMs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QUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqSixRQUFRLElBQUksRUFBRSxHQUFHQSxRQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUksUUFBUSxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakYsUUFBUSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0UsUUFBUSxJQUFJLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9GLFFBQVEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMs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UUFBUSxHQUFHLEVBQUUsWUFBWTtJQUN6QixZQUFZLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkQsUUFBUSxHQUFHLEVBQUUsWUFBWTtJQUN6QixZQUFZLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkQsUUFBUSxHQUFHLEVBQUUsWUFBWTtJQUN6QixZQUFZLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkQsUUFBUSxHQUFHLEVBQUUsWUFBWTtJQUN6QixZQUFZLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVk7SUFDM0MsUUFBUSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRixLQUFLLENBQUM7SUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVk7SUFDM0MsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxLQUFLLENBQUM7SUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3JDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO0lBQzlCLFlBQVksT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsU0FBUztJQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO0lBQzlCLFlBQVksT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsU0FBUztJQUNULFFBQVEsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsS0FBSyxDQUFDO0lBQ04sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUNyQyxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtJQUM5QixZQUFZLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFNBQVM7SUFDVCxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtJQUM5QixZQUFZLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFNBQVM7SUFDVCxRQUFRLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLEtBQUssQ0FBQztJQUNOLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDN0MsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRTtJQUMvQyxZQUFZLE9BQU8sSUFBSSxDQUFDO0lBQ3hCLFNBQVM7SUFDVCxRQUFRLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFO0lBQy9DLFlBQVksT0FBTyxJQUFJLENBQUM7SUFDeEIsU0FBUztJQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUU7SUFDL0MsWUFBWSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsU0FBUztJQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUU7SUFDL0MsWUFBWSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsU0FBUztJQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO0lBQzlCLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckMsWUFBWSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxTQUFTO0lBQ1QsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7SUFDOUIsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyQyxZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUU7SUFDM0IsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixZQUFZLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FB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Q0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtJQUNuQixZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM1QixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3QyxLQUFLLENBQUM7SUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFlBQVk7SUFDeEMsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUYsUUFBUSxPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9GLEtBQUssQ0FBQztJQUNOLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2hELFFBQVEsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxRQUFRLElBQUksQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxRQUFRLElBQUksQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pGLFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4RCxRQUFRLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsUUFBUSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDckIsUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3hGLFlBQVksR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFO0lBQzlELGlCQUFpQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFELFNBQVM7SUFDVCxhQUFhO0lBQ2IsWUFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUU7SUFDOUQsaUJBQWlCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxpQkFBaUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO0lBQ3BDLGdCQUFnQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdCLGdCQUFnQixPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFCLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEIsU0FBUztJQUNULFFBQVEsT0FBTyxPQUFPLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxLQUFLLENBQUM7SUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRTtJQUNsRCxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0IsUUFBUSxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssR0FBRyxNQUFNLENBQUMsRUFBRTtJQUNqRCxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxLQUFLLEVBQUU7SUFDcEMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLFNBQVM7SUFDVCxhQUFhLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRTtJQUMzQyxZQUFZLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyQixTQUFTO0lBQ1QsUUFBUSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsS0FBSyxDQUFDO0lBQ04sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxVQUFVLEVBQUUsRUFBRTtJQUNsRCxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxPQUFPLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEUsS0FBSyxDQUFDO0lBQ04sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLGNBQWMsR0FBRyxZQUFZO0lBQ2pELFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRCxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNuQyxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNwQyxRQUFRLElBQUks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QUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsRUFBRTtJQUMzQyxRQUFRLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDOUMsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUM5QyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzlDLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMs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LElBQUksQ0FBQyxZQUFZLE1BQU0sRUFBRTtJQUNqQyxZQUFZLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRSxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxZQUFZLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLFNBQVM7SUFDVCxRQUFRLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRCxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3RDLFFBQVEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLFFBQVEsSUFBSSxDQUFDLFlBQVksTUFBTSxFQUFFO0lBQ2pDLFlBQVksSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLFlBQVksT0FBTyxDQUFDLENBQUM7SUFDckIsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFELEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDdEMsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDekIsUUFBUSxJQUFJLENBQUMsWUFBWSxNQUFNLEVBQUU7SUFDakMsWUFBWSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEUsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsWUFBWSxPQUFPLENBQUMsQ0FBQztJQUNyQixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUQsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxZQUFZO0lBQ3pDLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xHLFFBQVEsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRCxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzdDLFFBQVEsSUFBSSxDQUFDLFlBQVksTUFBTSxFQUFFO0lBQ2pDLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxZQUFZLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRSxZQUFZLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDOUcsU0FBUztJQUNULFFBQVEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2QixRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDMUMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELFFBQVEsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3pDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDN0MsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFlBQVksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFlBQVksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxLQUFLLENBQUM7SUFDTixJQUFJLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=
4394
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGdlb3V0aWxzLmpzIiwic291cmNlcyI6WyIuLi9lc20vdXRpbHMuanMiLCIuLi9lc20vRE51bWJlcnMuanMiLCIuLi9lc20vRFBvbHlnb25Mb29wLmpzIiwiLi4vZXNtL0RQb2x5Z29uLmpzIiwiLi4vZXNtL0RMaW5lLmpzIiwiLi4vZXNtL0RQb2ludC5qcyIsIi4uL2VzbS9EQ2lyY2xlLmpzIiwiLi4vZXNtL0Zhc3RTZWFyY2guanMiLCIuLi9lc20vVHJhY2VNYXRyaXguanMiLCIuLi9lc20vSW50ZXJwb2xhdGlvbk1hdHJpeC5qcyIsIi4uL2VzbS9EUGxhbmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fc3ByZWFkQXJyYXkgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSwgcGFjaykge1xuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59O1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xuaW1wb3J0IHsgRFBvaW50IH0gZnJvbSAnLi9EUG9pbnQnO1xuZXhwb3J0IHZhciBER2VvID0ge1xuICAgIERFQlVHOiBmYWxzZSxcbiAgICBwYXJzZUZvcm1hdDogJ3h5eidcbn07XG5leHBvcnQgdmFyIHdhcm4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIGlmIChER2VvLkRFQlVHKSB7XG4gICAgICAgIGNvbnNvbGUud2Fybi5hcHBseShjb25zb2xlLCBfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoYXJncyksIGZhbHNlKSk7XG4gICAgfVxufTtcbmV4cG9ydCB2YXIgaXNEZWZBbmROb3ROdWxsID0gZnVuY3Rpb24gKGEpIHsgcmV0dXJuIGEgIT0gdW5kZWZpbmVkOyB9O1xudmFyIGhvb2sgPSBmdW5jdGlvbiAoc2NvcGUpIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNjb3BlOyB9OyB9O1xudmFyIHNob3VsZEJlSW50ID0gZnVuY3Rpb24gKHNjb3BlLCBmdW5jTmFtZSwgYXJnTmFtZSkgeyByZXR1cm4gZnVuY3Rpb24gKHApIHtcbiAgICBpZiAoIXAuY2xvbmUoKS5yb3VuZCgpXG4gICAgICAgIC5lcXVhbChwKSkge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgYmUgSW50IVwiKSk7XG4gICAgfVxuICAgIHJldHVybiBzY29wZTtcbn07IH07XG52YXIgc2hvdWxkQmVVSW50ID0gZnVuY3Rpb24gKHNjb3BlLCBmdW5jTmFtZSwgYXJnTmFtZSkgeyByZXR1cm4gZnVuY3Rpb24gKHApIHtcbiAgICBpZiAoIXAuY2xvbmUoKS5yb3VuZCgpXG4gICAgICAgIC5lcXVhbChwKSB8fCAhcC5ndE9yRXF1YWwoRFBvaW50Lnplcm8oKSkpIHtcbiAgICAgICAgd2FybihcIlxcXCJcIi5jb25jYXQoZnVuY05hbWUsIFwiXFxcIiAtPiBcXFwiXCIpLmNvbmNhdChhcmdOYW1lLCBcIlxcXCIgc2hvdWxkIGJlIFVJbnQhXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlO1xufTsgfTtcbnZhciBzaG91bGRCZURlZ3JlZSA9IGZ1bmN0aW9uIChzY29wZSwgZnVuY05hbWUsIGFyZ05hbWUpIHsgcmV0dXJuIGZ1bmN0aW9uIChwKSB7XG4gICAgaWYgKCFwLmxpa2VXb3JsZEdlb2RldGljU3lzdGVtKSB7XG4gICAgICAgIHdhcm4oXCJcXFwiXCIuY29uY2F0KGZ1bmNOYW1lLCBcIlxcXCIgLT4gXFxcIlwiKS5jb25jYXQoYXJnTmFtZSwgXCJcXFwiIHNob3VsZCBiZSBkZWdyZWUhXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlO1xufTsgfTtcbnZhciBzaG91bGRCZVJhZGlhbnMgPSBmdW5jdGlvbiAoc2NvcGUsIGZ1bmNOYW1lLCBhcmdOYW1lKSB7IHJldHVybiBmdW5jdGlvbiAocCkge1xuICAgIGlmICghcC5saWtlUmFkaWFucykge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgYmUgcmFkaWFucyFcIikpO1xuICAgIH1cbiAgICByZXR1cm4gc2NvcGU7XG59OyB9O1xudmFyIHNob3VsZEV4aXN0ID0gZnVuY3Rpb24gKHNjb3BlLCBmdW5jTmFtZSwgYXJnTmFtZSkgeyByZXR1cm4gZnVuY3Rpb24gKHApIHtcbiAgICBpZiAoIWlzRGVmQW5kTm90TnVsbChwKSkge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgZXhpc3QhXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlO1xufTsgfTtcbnZhciBzaG91bGRCZU1ldGVycyA9IGZ1bmN0aW9uIChzY29wZSwgZnVuY05hbWUsIGFyZ05hbWUpIHsgcmV0dXJuIGZ1bmN0aW9uIChwKSB7XG4gICAgaWYgKCFwLmxpa2VQc2V1ZG9NZXJjYXRvcikge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgYmUgbWV0ZXJzIVwiKSk7XG4gICAgfVxuICAgIHJldHVybiBzY29wZTtcbn07IH07XG5leHBvcnQgdmFyIGNoZWNrRnVuY3Rpb24gPSBmdW5jdGlvbiAoZnVuY05hbWUpIHsgcmV0dXJuICh7XG4gICAgY2hlY2tBcmd1bWVudDogZnVuY3Rpb24gKGFyZ05hbWUpIHtcbiAgICAgICAgaWYgKCFER2VvLkRFQlVHKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNob3VsZEJlRGVncmVlOiBob29rKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNob3VsZEJlTWV0ZXJzOiBob29rKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNob3VsZEJlSW50OiBob29rKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNob3VsZEJlVUludDogaG9vayh0aGlzKSxcbiAgICAgICAgICAgICAgICBzaG91bGRCZVJhZGlhbnM6IGhvb2sodGhpcyksXG4gICAgICAgICAgICAgICAgc2hvdWxkRXhpc3Q6IGhvb2sodGhpcylcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNob3VsZEJlRGVncmVlOiBzaG91bGRCZURlZ3JlZSh0aGlzLCBmdW5jTmFtZSwgYXJnTmFtZSksXG4gICAgICAgICAgICBzaG91bGRCZU1ldGVyczogc2hvdWxkQmVNZXRlcnModGhpcywgZnVuY05hbWUsIGFyZ05hbWUpLFxuICAgICAgICAgICAgc2hvdWxkQmVJbnQ6IHNob3VsZEJlSW50KHRoaXMsIGZ1bmNOYW1lLCBhcmdOYW1lKSxcbiAgICAgICAgICAgIHNob3VsZEJlVUludDogc2hvdWxkQmVVSW50KHRoaXMsIGZ1bmNOYW1lLCBhcmdOYW1lKSxcbiAgICAgICAgICAgIHNob3VsZEJlUmFkaWFuczogc2hvdWxkQmVSYWRpYW5zKHRoaXMsIGZ1bmNOYW1lLCBhcmdOYW1lKSxcbiAgICAgICAgICAgIHNob3VsZEV4aXN0OiBzaG91bGRFeGlzdCh0aGlzLCBmdW5jTmFtZSwgYXJnTmFtZSlcbiAgICAgICAgfTtcbiAgICB9XG59KTsgfTtcbmV4cG9ydCB2YXIgY3JlYXRlQXJyYXkgPSBmdW5jdGlvbiAodiwgZmlsbFN5bWJvbCkge1xuICAgIGlmICh0eXBlb2YgZmlsbFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IEFycmF5KHYpLmZpbGwoZmFsc2UpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChfLCBpKSB7IHJldHVybiBmaWxsU3ltYm9sKGkpOyB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBBcnJheSh2KS5maWxsKGZpbGxTeW1ib2wgIT09IG51bGwgJiYgZmlsbFN5bWJvbCAhPT0gdm9pZCAwID8gZmlsbFN5bWJvbCA6IDApO1xufTtcbmV4cG9ydCB2YXIgY3JlYXRlTWF0cml4ID0gZnVuY3Rpb24gKF9hLCBmaWxsU3ltYm9sKSB7XG4gICAgdmFyIGggPSBfYS5oLCB3ID0gX2EudztcbiAgICBpZiAodHlwZW9mIGZpbGxTeW1ib2wgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFycmF5KGgpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChfLCB5KSB7IHJldHVybiBjcmVhdGVBcnJheSh3LCBmdW5jdGlvbiAoeCkgeyByZXR1cm4gZmlsbFN5bWJvbCh4LCB5KTsgfSk7IH0pO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQXJyYXkoaClcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiBjcmVhdGVBcnJheSh3LCBmaWxsU3ltYm9sKTsgfSk7XG59O1xuZXhwb3J0IHZhciBnYXVzc2lhbkVsaW1pbmF0aW9uID0gZnVuY3Rpb24gKG1hdHJpeCkge1xuICAgIHZhciBuID0gbWF0cml4Lmxlbmd0aDtcbiAgICB2YXIgbWF0cml4Q2xvbmUgPSBjcmVhdGVNYXRyaXgobmV3IERQb2ludChuICsgMSwgbikpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbiArIDE7IGorKykge1xuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gbWF0cml4W2ldW2pdID09PSAwID8gZ2F1c3NpYW5FbGltaW5hdGlvbi5NSU4gOiBtYXRyaXhbaV1bal07XG4gICAgICAgICAgICBtYXRyaXhDbG9uZVtpXVtqXSA9IG1hdHJpeFtpXVtqXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG47IGsrKykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG4gKyAxOyBpKyspIHtcbiAgICAgICAgICAgIG1hdHJpeENsb25lW2tdW2ldIC89IG1hdHJpeFtrXVtrXTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gayArIDE7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBLID0gbWF0cml4Q2xvbmVbaV1ba10gLyBtYXRyaXhDbG9uZVtrXVtrXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbiArIDE7IGorKykge1xuICAgICAgICAgICAgICAgIG1hdHJpeENsb25lW2ldW2pdIC09IG1hdHJpeENsb25lW2tdW2pdICogSztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuICsgMTsgaisrKSB7XG4gICAgICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gbWF0cml4Q2xvbmVbaV1bal07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgayA9IG4gLSAxOyBrID4gLTE7IGstLSkge1xuICAgICAgICBmb3IgKHZhciBpID0gbjsgaSA+IC0xOyBpLS0pIHtcbiAgICAgICAgICAgIG1hdHJpeENsb25lW2tdW2ldIC89IG1hdHJpeFtrXVtrXTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gayAtIDE7IGkgPiAtMTsgaS0tKSB7XG4gICAgICAgICAgICB2YXIgSyA9IG1hdHJpeENsb25lW2ldW2tdIC8gbWF0cml4Q2xvbmVba11ba107XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gbjsgaiA+IC0xOyBqLS0pIHtcbiAgICAgICAgICAgICAgICBtYXRyaXhDbG9uZVtpXVtqXSAtPSBtYXRyaXhDbG9uZVtrXVtqXSAqIEs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGFuc3dlciA9IGNyZWF0ZUFycmF5KG4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGFuc3dlcltpXSA9IG1hdHJpeENsb25lW2ldW25dO1xuICAgIH1cbiAgICByZXR1cm4gYW5zd2VyO1xufTtcbmdhdXNzaWFuRWxpbWluYXRpb24uTUlOID0gMWUtMTA7XG5leHBvcnQgdmFyIGNyZWF0ZUNhbnZhcyA9IGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciB3ID0gMDtcbiAgICB2YXIgaCA9IDA7XG4gICAgdmFyIG9mZnNjcmVlbiA9IGZhbHNlO1xuICAgIGlmIChhIGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgIHZhciB4ID0gYS54LCB5ID0gYS55O1xuICAgICAgICB3ID0geDtcbiAgICAgICAgaCA9IHk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB3ID0gYTtcbiAgICAgICAgaCA9IGE7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYiA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIG9mZnNjcmVlbiA9IGI7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGVvZiBiID09PSAnbnVtYmVyJykge1xuICAgICAgICBoID0gYjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgb2Zmc2NyZWVuID0gYztcbiAgICB9XG4gICAgdmFyIGNhbnZhcyA9IG9mZnNjcmVlbiA/IG5ldyBPZmZzY3JlZW5DYW52YXModywgaCkgOiAoKF9hID0gY3JlYXRlQ2FudmFzLmRvY3VtZW50KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBkb2N1bWVudCkuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgaWYgKCFvZmZzY3JlZW4pIHtcbiAgICAgICAgY2FudmFzLndpZHRoID0gdztcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IGg7XG4gICAgfVxuICAgIHJldHVybiBbY2FudmFzLCBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKV07XG59O1xudmFyIGYgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gW10uY29uY2F0LmFwcGx5KFtdLCBfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoYS5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGIubWFwKGZ1bmN0aW9uIChkKSB7IHJldHVybiBbXS5jb25jYXQoYywgZCk7IH0pOyB9KSksIGZhbHNlKSk7IH07XG5leHBvcnQgdmFyIGNhcnRlc2lhblByb2R1Y3QgPSBmdW5jdGlvbiAoYSwgYikge1xuICAgIHZhciBjID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgY1tfaSAtIDJdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgcmV0dXJuIGIgPyBjYXJ0ZXNpYW5Qcm9kdWN0LmFwcGx5KHZvaWQgMCwgX19zcHJlYWRBcnJheShbZihhLCBiKV0sIF9fcmVhZChjKSwgZmFsc2UpKSA6IGE7XG59O1xuZXhwb3J0IHZhciBnZXRDb21iaW5hdGlvbnMgPSBmdW5jdGlvbiAoYXJyKSB7XG4gICAgaWYgKGFyci5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIGFyclswXTtcbiAgICB9XG4gICAgdmFyIGFucyA9IFtdO1xuICAgIHZhciBvdGhlckNhc2VzID0gZ2V0Q29tYmluYXRpb25zKGFyci5zbGljZSgxKSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdGhlckNhc2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYXJyWzBdLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBhbnMucHVzaChfX3NwcmVhZEFycmF5KFthcnJbMF1bal1dLCBfX3JlYWQob3RoZXJDYXNlc1tpXSksIGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFucztcbn07XG5leHBvcnQgdmFyIGRpdiA9IGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBNYXRoLmZsb29yKGEgLyBiKTsgfTtcbmV4cG9ydCB2YXIgdG9EZWdyZWVzTWludXRlc1NlY29uZHMgPSBmdW5jdGlvbiAodikge1xuICAgIHZhciBtID0gdiA8IDA7XG4gICAgdmFyIGRlZ3JlZXMgPSBNYXRoLmZsb29yKE1hdGguYWJzKHYpKTtcbiAgICB2YXIgdCA9IChNYXRoLmFicyh2KSAlIDEpICogNjA7XG4gICAgdmFyIG1pbnV0ZXMgPSBNYXRoLmZsb29yKHQpO1xuICAgIHZhciB0MiA9ICh0ICUgMSkgKiA2MDtcbiAgICB2YXIgc2Vjb25kcyA9IHQyLnRvRml4ZWQoMik7XG4gICAgcmV0dXJuIFwiXCIuY29uY2F0KG0gPyAnLScgOiAnJykuY29uY2F0KGRlZ3JlZXMsIFwiXFx1MDBCMCBcIikuY29uY2F0KG1pbnV0ZXMsIFwiJyBcIikuY29uY2F0KHNlY29uZHMsIFwiXFxcIlwiKTtcbn07XG5leHBvcnQgdmFyIHBhcnNlRGVncmVlc01pbnV0ZXNTZWNvbmRzID0gZnVuY3Rpb24gKGkpIHtcbiAgICB2YXIgZV8xLCBfYTtcbiAgICB2YXIgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2g7XG4gICAgdmFyIHBhcnRzID0gaS5tYXRjaEFsbCgvKD88dmFsdWU+LT9cXGQrKD88dGFpbD5cXC5cXGR7MSx9KT8pKD88dHlwZT7CsHwnfFwiKS9nbWl1KTtcbiAgICB2YXIgZCA9IDA7XG4gICAgdmFyIG0gPSAwO1xuICAgIHZhciBzID0gMDtcbiAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBwYXJ0c18xID0gX192YWx1ZXMocGFydHMpLCBwYXJ0c18xXzEgPSBwYXJ0c18xLm5leHQoKTsgIXBhcnRzXzFfMS5kb25lOyBwYXJ0c18xXzEgPSBwYXJ0c18xLm5leHQoKSkge1xuICAgICAgICAgICAgdmFyIHBhcnQgPSBwYXJ0c18xXzEudmFsdWU7XG4gICAgICAgICAgICBzd2l0Y2ggKChfYiA9IHBhcnQgPT09IG51bGwgfHwgcGFydCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFydC5ncm91cHMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnwrAnOlxuICAgICAgICAgICAgICAgICAgICBkID0gTnVtYmVyKChfZCA9IChfYyA9IHBhcnQgPT09IG51bGwgfHwgcGFydCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcGFydC5ncm91cHMpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy52YWx1ZSkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogJzAnKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnXFwnJzpcbiAgICAgICAgICAgICAgICAgICAgbSA9IE51bWJlcigoX2YgPSAoX2UgPSBwYXJ0ID09PSBudWxsIHx8IHBhcnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhcnQuZ3JvdXBzKSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2UudmFsdWUpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6ICcwJyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1wiJzpcbiAgICAgICAgICAgICAgICAgICAgcyA9IE51bWJlcigoX2ggPSAoX2cgPSBwYXJ0ID09PSBudWxsIHx8IHBhcnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHBhcnQuZ3JvdXBzKSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cudmFsdWUpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6ICcwJyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChwYXJ0c18xXzEgJiYgIXBhcnRzXzFfMS5kb25lICYmIChfYSA9IHBhcnRzXzEucmV0dXJuKSkgX2EuY2FsbChwYXJ0c18xKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgfVxuICAgIHZhciBoID0gZCA8IDAgPyAtMSA6IDE7XG4gICAgcmV0dXJuIGQgKyBoICogbSAvIDYwICsgaCAqIHMgLyAzNjAwO1xufTtcbiIsImltcG9ydCB7IERFR1JFRV9UT19QSSwgRE9VQkxFX1BJX0lOX0RFR1JFRSwgUElfSU5fREVHUkVFLCBQSV9UT19ERUdSRUUgfSBmcm9tICcuL0RQb2ludCc7XG52YXIgZGVsdGEgPSAwLjAwMTtcbnZhciBETnVtYmVycyA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRE51bWJlcnMoKSB7XG4gICAgfVxuICAgIEROdW1iZXJzLmxpa2UgPSBmdW5jdGlvbiAodiwgcywgZCkge1xuICAgICAgICBpZiAoZCA9PT0gdm9pZCAwKSB7IGQgPSBkZWx0YTsgfVxuICAgICAgICByZXR1cm4gTWF0aC5hYnModiAtIHMpIDwgZDtcbiAgICB9O1xuICAgIEROdW1iZXJzLmxpa2VaZXJvID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIEROdW1iZXJzLmxpa2UodiwgMCk7XG4gICAgfTtcbiAgICBETnVtYmVycy5saWtlMlBJID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIEROdW1iZXJzLmxpa2UoRE51bWJlcnMucmFkMkRlZyh2KSwgRE9VQkxFX1BJX0lOX0RFR1JFRSk7XG4gICAgfTtcbiAgICBETnVtYmVycy5saWtlUEkgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gRE51bWJlcnMubGlrZShETnVtYmVycy5yYWQyRGVnKHYpLCBQSV9JTl9ERUdSRUUpO1xuICAgIH07XG4gICAgRE51bWJlcnMucmFkMkRlZyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB2ICogREVHUkVFX1RPX1BJO1xuICAgIH07XG4gICAgRE51bWJlcnMuZGVnMlJhZCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiB2ICogUElfVE9fREVHUkVFO1xuICAgIH07XG4gICAgcmV0dXJuIEROdW1iZXJzO1xufSgpKTtcbmV4cG9ydCB7IEROdW1iZXJzIH07XG4iLCJ2YXIgTG9vcEZ1bmN0aW9ucztcbihmdW5jdGlvbiAoTG9vcEZ1bmN0aW9ucykge1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImdldFRpbGVGcm9tQ29vcmRzXCJdID0gMF0gPSBcImdldFRpbGVGcm9tQ29vcmRzXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZ2V0Q29vcmRzRnJvbVRpbGVcIl0gPSAxXSA9IFwiZ2V0Q29vcmRzRnJvbVRpbGVcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJoZWlnaHRcIl0gPSAyXSA9IFwiaGVpZ2h0XCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wic2V0WFwiXSA9IDNdID0gXCJzZXRYXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wic2V0WVwiXSA9IDRdID0gXCJzZXRZXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wic2V0WlwiXSA9IDVdID0gXCJzZXRaXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wicm90YXRlXCJdID0gNl0gPSBcInJvdGF0ZVwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInJvdGF0ZTNkWFwiXSA9IDddID0gXCJyb3RhdGUzZFhcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJyb3RhdGUzZFlcIl0gPSA4XSA9IFwicm90YXRlM2RZXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wicm90YXRlM2RaXCJdID0gOV0gPSBcInJvdGF0ZTNkWlwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcIm1vdmVcIl0gPSAxMF0gPSBcIm1vdmVcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJyb3VuZFwiXSA9IDExXSA9IFwicm91bmRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJjZWlsXCJdID0gMTJdID0gXCJjZWlsXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZmxvb3JcIl0gPSAxM10gPSBcImZsb29yXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1widG9GaXhlZFwiXSA9IDE0XSA9IFwidG9GaXhlZFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImFic1wiXSA9IDE1XSA9IFwiYWJzXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wic2NhbGVcIl0gPSAxNl0gPSBcInNjYWxlXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZGl2aWRlXCJdID0gMTddID0gXCJkaXZpZGVcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJkZWdyZWVUb1JhZGlhbnNcIl0gPSAxOF0gPSBcImRlZ3JlZVRvUmFkaWFuc1wiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInJhZGlhbnNUb0RlZ3JlZXNcIl0gPSAxOV0gPSBcInJhZGlhbnNUb0RlZ3JlZXNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJyYWRpYW5zVG9NZXRlcnNcIl0gPSAyMF0gPSBcInJhZGlhbnNUb01ldGVyc1wiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcIm1ldGVyc1RvUmFkaWFuc1wiXSA9IDIxXSA9IFwibWV0ZXJzVG9SYWRpYW5zXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiaGlwUG9pbnRcIl0gPSAyMl0gPSBcImhpcFBvaW50XCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wieFBvaW50XCJdID0gMjNdID0gXCJ4UG9pbnRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJ5UG9pbnRcIl0gPSAyNF0gPSBcInlQb2ludFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcIndQb2ludFwiXSA9IDI1XSA9IFwid1BvaW50XCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiaFBvaW50XCJdID0gMjZdID0gXCJoUG9pbnRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRJZkxlc3NUaGFuXCJdID0gMjddID0gXCJzZXRJZkxlc3NUaGFuXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wibWludXNcIl0gPSAyOF0gPSBcIm1pbnVzXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZGVncmVlVG9NZXRlcnNcIl0gPSAyOV0gPSBcImRlZ3JlZVRvTWV0ZXJzXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wibWV0ZXJzVG9EZWdyZWVcIl0gPSAzMF0gPSBcIm1ldGVyc1RvRGVncmVlXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZmxpcFZlcnRpY2FsbHlcIl0gPSAzMV0gPSBcImZsaXBWZXJ0aWNhbGx5XCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wic2V0UHJvcGVydGllc1wiXSA9IDMyXSA9IFwic2V0UHJvcGVydGllc1wiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImRpdlwiXSA9IDMzXSA9IFwiZGl2XCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wibW9kXCJdID0gMzRdID0gXCJtb2RcIjtcbn0pKExvb3BGdW5jdGlvbnMgfHwgKExvb3BGdW5jdGlvbnMgPSB7fSkpO1xudmFyIGRlY29kZVBvb2xSZWNvcmQgPSBmdW5jdGlvbiAoYSwgX2EpIHtcbiAgICB2YXIgZnVuY3Rpb25OYW1lID0gX2EuZnVuY3Rpb25OYW1lLCBwb2ludEFyZyA9IF9hLnBvaW50QXJnLCBudW1iZXJQb2ludEFyZyA9IF9hLm51bWJlclBvaW50QXJnLCBudW1iZXJBcmcgPSBfYS5udW1iZXJBcmcsIHNldHRlckFyZyA9IF9hLnNldHRlckFyZywgc2V0dGVyQXJnQnlPYmplY3QgPSBfYS5zZXR0ZXJBcmdCeU9iamVjdDtcbiAgICB2YXIgcmVzID0gYTtcbiAgICBzd2l0Y2ggKGZ1bmN0aW9uTmFtZSkge1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZ2V0VGlsZUZyb21Db29yZHM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmdldFRpbGVGcm9tQ29vcmRzKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmdldENvb3Jkc0Zyb21UaWxlOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5nZXRDb29yZHNGcm9tVGlsZShudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5oZWlnaHQ6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmhlaWdodChudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5zZXRYOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiB0eXBlb2Ygc2V0dGVyQXJnID09PSAnbnVtYmVyJyA/IGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnNldFgoc2V0dGVyQXJnKSA6IGEoaywgaW5kZXgpLnNldFgoZnVuY3Rpb24gKHApIHsgcmV0dXJuIHNldHRlckFyZyhwLCBpbmRleCk7IH0pOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5zZXRZOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiB0eXBlb2Ygc2V0dGVyQXJnID09PSAnbnVtYmVyJyA/IGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnNldFkoc2V0dGVyQXJnKSA6IGEoaywgaW5kZXgpLnNldFkoZnVuY3Rpb24gKHApIHsgcmV0dXJuIHNldHRlckFyZyhwLCBpbmRleCk7IH0pOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5zZXRaOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiB0eXBlb2Ygc2V0dGVyQXJnID09PSAnbnVtYmVyJyA/IGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnNldFooc2V0dGVyQXJnKSA6IGEoaywgaW5kZXgpLnNldFooZnVuY3Rpb24gKHApIHsgcmV0dXJuIHNldHRlckFyZyhwLCBpbmRleCk7IH0pOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5yb3RhdGU6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnJvdGF0ZShudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5yb3RhdGUzZFg6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnJvdGF0ZTNkWChudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5yb3RhdGUzZFk6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnJvdGF0ZTNkWShudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5yb3RhdGUzZFo6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnJvdGF0ZTNkWihudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5tb3ZlOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5tb3ZlKG51bWJlclBvaW50QXJnLCBudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5yb3VuZDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm91bmQoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuY2VpbDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuY2VpbCgpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5mbG9vcjpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZmxvb3IoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMudG9GaXhlZDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAudG9GaXhlZChudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5hYnM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmFicygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5zY2FsZTpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuc2NhbGUobnVtYmVyUG9pbnRBcmcsIG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmRpdmlkZTpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZGl2aWRlKG51bWJlclBvaW50QXJnLCBudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5kaXY6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmRpdihudW1iZXJQb2ludEFyZywgbnVtYmVyQXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMubW9kOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5tb2QobnVtYmVyUG9pbnRBcmcsIG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmRlZ3JlZVRvUmFkaWFuczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZGVncmVlVG9SYWRpYW5zKCk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJhZGlhbnNUb0RlZ3JlZXM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnJhZGlhbnNUb0RlZ3JlZXMoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMucmFkaWFuc1RvTWV0ZXJzOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5yYWRpYW5zVG9NZXRlcnMoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMubWV0ZXJzVG9SYWRpYW5zOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5tZXRlcnNUb1JhZGlhbnMoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuaGlwUG9pbnQ6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmhpcFBvaW50OyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy54UG9pbnQ6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnhQb2ludDsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMueVBvaW50OlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC55UG9pbnQ7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLndQb2ludDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAud1BvaW50OyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5oUG9pbnQ6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmhQb2ludDsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuc2V0SWZMZXNzVGhhbjpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuc2V0SWZMZXNzVGhhbihwb2ludEFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLm1pbnVzOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5taW51cygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5kZWdyZWVUb01ldGVyczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZGVncmVlVG9NZXRlcnMoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMubWV0ZXJzVG9EZWdyZWU6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1ldGVyc1RvRGVncmVlKCk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmZsaXBWZXJ0aWNhbGx5OlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5mbGlwVmVydGljYWxseShudW1iZXJQb2ludEFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNldFByb3BlcnRpZXM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIHR5cGVvZiBzZXR0ZXJBcmdCeU9iamVjdCA9PT0gJ29iamVjdCcgPyBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5zZXRQcm9wZXJ0aWVzKHNldHRlckFyZ0J5T2JqZWN0KSA6IGEoaywgaW5kZXgpLnNldFByb3BlcnRpZXMoZnVuY3Rpb24gKHApIHsgcmV0dXJuIHNldHRlckFyZ0J5T2JqZWN0KHAsIGluZGV4KTsgfSk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn07XG52YXIgRFBvbHlnb25Mb29wID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEUG9seWdvbkxvb3AocGFyZW50KSB7XG4gICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgICAgICB0aGlzLnBvb2wgPSBbXTtcbiAgICB9XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5nZXRMb29wRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvb2wucmVkdWNlKGRlY29kZVBvb2xSZWNvcmQsIGZ1bmN0aW9uIChrKSB7IHJldHVybiBrOyB9KTtcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQubWFwKHRoaXMuZ2V0TG9vcEZ1bmN0aW9uKCkpO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5nZXRUaWxlRnJvbUNvb3JkcyA9IGZ1bmN0aW9uICh6b29tKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5nZXRUaWxlRnJvbUNvb3JkcyxcbiAgICAgICAgICAgIG51bWJlckFyZzogem9vbVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldENvb3Jkc0Zyb21UaWxlID0gZnVuY3Rpb24gKHpvb20pIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmdldENvb3Jkc0Zyb21UaWxlLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB6b29tXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuaGVpZ2h0ID0gZnVuY3Rpb24gKHopIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmhlaWdodCxcbiAgICAgICAgICAgIG51bWJlckFyZzogelxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnNldFggPSBmdW5jdGlvbiAoeCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2V0WCxcbiAgICAgICAgICAgIHNldHRlckFyZzogeFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnNldFByb3BlcnRpZXMgPSBmdW5jdGlvbiAoc2V0dGVyQXJnQnlPYmplY3QpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnNldFByb3BlcnRpZXMsXG4gICAgICAgICAgICBzZXR0ZXJBcmdCeU9iamVjdDogc2V0dGVyQXJnQnlPYmplY3RcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5zZXRZID0gZnVuY3Rpb24gKHkpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnNldFksXG4gICAgICAgICAgICBzZXR0ZXJBcmc6IHlcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5zZXRaID0gZnVuY3Rpb24gKHopIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnNldFosXG4gICAgICAgICAgICBzZXR0ZXJBcmc6IHpcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5yb3RhdGUgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMucm90YXRlLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiBhXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucm90YXRlM2RYID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWCxcbiAgICAgICAgICAgIG51bWJlckFyZzogYVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnJvdGF0ZTNkWSA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yb3RhdGUzZFksXG4gICAgICAgICAgICBudW1iZXJBcmc6IGFcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5yb3RhdGUzZFogPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMucm90YXRlM2RaLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiBhXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUubW92ZSA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgICAgIGlmICh5ID09PSB2b2lkIDApIHsgeSA9IHg7IH1cbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLm1vdmUsXG4gICAgICAgICAgICBudW1iZXJQb2ludEFyZzogeCxcbiAgICAgICAgICAgIG51bWJlckFyZzogeVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnJvdW5kID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMucm91bmRcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5jZWlsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuY2VpbFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmZsb29yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuZmxvb3JcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS50b0ZpeGVkID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgaWYgKG4gPT09IHZvaWQgMCkgeyBuID0gMjsgfVxuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMudG9GaXhlZCxcbiAgICAgICAgICAgIG51bWJlckFyZzogblxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmFic1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnNjYWxlID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0geDsgfVxuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2NhbGUsXG4gICAgICAgICAgICBudW1iZXJQb2ludEFyZzogeCxcbiAgICAgICAgICAgIG51bWJlckFyZzogeVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmRpdmlkZSA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5kaXZpZGUsXG4gICAgICAgICAgICBudW1iZXJQb2ludEFyZzogeCxcbiAgICAgICAgICAgIG51bWJlckFyZzogeVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5kaXYsXG4gICAgICAgICAgICBudW1iZXJQb2ludEFyZzogeCxcbiAgICAgICAgICAgIG51bWJlckFyZzogeVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh4LCB5KSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5tb2QsXG4gICAgICAgICAgICBudW1iZXJQb2ludEFyZzogeCxcbiAgICAgICAgICAgIG51bWJlckFyZzogeVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmRlZ3JlZVRvUmFkaWFucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmRlZ3JlZVRvUmFkaWFuc1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnJhZGlhbnNUb0RlZ3JlZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yYWRpYW5zVG9EZWdyZWVzXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucmFkaWFuc1RvTWV0ZXJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMucmFkaWFuc1RvTWV0ZXJzXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUubWV0ZXJzVG9SYWRpYW5zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMubWV0ZXJzVG9SYWRpYW5zXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0SGlwUG9pbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5oaXBQb2ludFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldFhQb2ludCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnhQb2ludFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldFlQb2ludCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnlQb2ludFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldFdQb2ludCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLndQb2ludFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldEhQb2ludCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmhQb2ludFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnNldElmTGVzc1RoYW4gPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2V0SWZMZXNzVGhhbixcbiAgICAgICAgICAgIHBvaW50QXJnOiBwXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUubWludXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5taW51c1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmRlZ3JlZVRvTWV0ZXJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuZGVncmVlVG9NZXRlcnNcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5tZXRlcnNUb0RlZ3JlZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLm1ldGVyc1RvRGVncmVlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZmxpcFZlcnRpY2FsbHkgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuZmxpcFZlcnRpY2FsbHksXG4gICAgICAgICAgICBudW1iZXJQb2ludEFyZzogc2l6ZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICByZXR1cm4gRFBvbHlnb25Mb29wO1xufSgpKTtcbmV4cG9ydCB7IERQb2x5Z29uTG9vcCB9O1xuIiwidmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24obykge1xuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59O1xudmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fc3ByZWFkQXJyYXkgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkQXJyYXkpIHx8IGZ1bmN0aW9uICh0bywgZnJvbSwgcGFjaykge1xuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XG59O1xuaW1wb3J0IHsgRFBvaW50IH0gZnJvbSAnLi9EUG9pbnQnO1xuaW1wb3J0IHsgRExpbmUgfSBmcm9tICcuL0RMaW5lJztcbmltcG9ydCB7IERDaXJjbGUgfSBmcm9tICcuL0RDaXJjbGUnO1xuaW1wb3J0IHsgRE51bWJlcnMgfSBmcm9tICcuL0ROdW1iZXJzJztcbmltcG9ydCB7IGlvIGFzIGpzdHNJbywgb3BlcmF0aW9uIH0gZnJvbSAnanN0cyc7XG5pbXBvcnQgeyBEUG9seWdvbkxvb3AgfSBmcm9tICcuL0RQb2x5Z29uTG9vcCc7XG5pbXBvcnQgeyBER2VvLCBpc0RlZkFuZE5vdE51bGwgfSBmcm9tICcuL3V0aWxzJztcbnZhciBfYSA9IG9wZXJhdGlvbi5idWZmZXIuQnVmZmVyUGFyYW1ldGVycywgQ0FQX1JPVU5EID0gX2EuQ0FQX1JPVU5ELCBDQVBfRkxBVCA9IF9hLkNBUF9GTEFULCBDQVBfU1FVQVJFID0gX2EuQ0FQX1NRVUFSRTtcbmV4cG9ydCB2YXIgTUlOX1BPSU5UU19JTl9WQUxJRF9QT0xZR09OID0gMztcbnZhciBBUFBST1hJTUFUSU9OX1ZBTFVFID0gMC4xO1xudmFyIE1BWF9DT05WRVhfSVRFUkFUSU9OUyA9IDEwMDtcbnZhciBDTE9TRV9UT19JTlRFUlNFQ1RJT05fRElTVEFOQ0UgPSAwLjAwMTtcbnZhciB0cmlhbmdsZUNlbnRlciA9IGZ1bmN0aW9uICh0cmlhbmdsZSkge1xuICAgIHZhciBwMCA9IHRyaWFuZ2xlLmF0KDApO1xuICAgIHZhciBwMSA9IHRyaWFuZ2xlLmF0KDEpO1xuICAgIHZhciBwMiA9IHRyaWFuZ2xlLmF0KDIpO1xuICAgIHJldHVybiBuZXcgRFBvaW50KChwMC54ICsgcDEueCArIHAyLngpIC8gMywgKHAwLnkgKyBwMS55ICsgcDIueSkgLyAzKTtcbn07XG52YXIgY29udGFpbkNhbGN1bGF0b3IgPSBmdW5jdGlvbiAocG9seSwgcCkge1xuICAgIHZhciBlXzEsIF9hLCBlXzIsIF9iO1xuICAgIHZhciBoYXNTYW1lUG9pbnQgPSBwb2x5LnBvaW50cy5zb21lKGZ1bmN0aW9uIChwb2ludCkgeyByZXR1cm4gcG9pbnQuZXF1YWwocCk7IH0pO1xuICAgIGlmIChoYXNTYW1lUG9pbnQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIF9jID0gX192YWx1ZXMocG9seS5sb29wUG9pbnRzR2VuZXJhdG9yKHRydWUpKCkpLCBfZCA9IF9jLm5leHQoKTsgIV9kLmRvbmU7IF9kID0gX2MubmV4dCgpKSB7XG4gICAgICAgICAgICB2YXIgX2UgPSBfX3JlYWQoX2QudmFsdWUsIDMpLCBwb2x5Z29uTGluZSA9IF9lWzJdO1xuICAgICAgICAgICAgdmFyIG9uQm9yZGVyID0gcG9seWdvbkxpbmUueChwKS5lcXVhbChwKSAmJiBwb2x5Z29uTGluZS5pblJhbmdlKHApO1xuICAgICAgICAgICAgaWYgKG9uQm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChfZCAmJiAhX2QuZG9uZSAmJiAoX2EgPSBfYy5yZXR1cm4pKSBfYS5jYWxsKF9jKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgfVxuICAgIHZhciB0b3RhbEZpID0gMDtcbiAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBfZiA9IF9fdmFsdWVzKHBvbHkubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpLCBfZyA9IF9mLm5leHQoKTsgIV9nLmRvbmU7IF9nID0gX2YubmV4dCgpKSB7XG4gICAgICAgICAgICB2YXIgX2ggPSBfX3JlYWQoX2cudmFsdWUsIDIpLCBfaiA9IF9oWzBdLCB4ID0gX2oueCwgeSA9IF9qLnksIF9rID0gX2hbMV0sIGEgPSBfay54LCBiID0gX2sueTtcbiAgICAgICAgICAgIHZhciBsaW5lMSA9IG5ldyBETGluZSh4IC0gcC54LCB5IC0gcC55LCAwKTtcbiAgICAgICAgICAgIHZhciBsaW5lMiA9IG5ldyBETGluZShhIC0gcC54LCBiIC0gcC55LCAwKTtcbiAgICAgICAgICAgIHZhciBmaURpZiA9IGxpbmUxLmZpbmRGaShsaW5lMik7XG4gICAgICAgICAgICBpZiAobGluZTEudmVjdG9yUHJvZHVjdChsaW5lMikuYyA+IDApIHtcbiAgICAgICAgICAgICAgICB0b3RhbEZpICs9IGZpRGlmO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdG90YWxGaSAtPSBmaURpZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKF9nICYmICFfZy5kb25lICYmIChfYiA9IF9mLnJldHVybikpIF9iLmNhbGwoX2YpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH1cbiAgICB9XG4gICAgdmFyIGVwcyA9IE1hdGguUEkgLyAxMDAwMDtcbiAgICB2YXIgcmVzdWx0ID0gZmFsc2U7XG4gICAgdmFyIGFic1RvdGFsRmkgPSBNYXRoLmFicyh0b3RhbEZpKTtcbiAgICBpZiAoYWJzVG90YWxGaSA8IGVwcykge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoTWF0aC5hYnMoMiAqIE1hdGguUEkgLSBhYnNUb3RhbEZpKSA8IGVwcykge1xuICAgICAgICByZXN1bHQgPSB0cnVlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb250YWluczIgZmFpbGQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG52YXIgRFBvbHlnb24gPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERQb2x5Z29uKHBQb2ludHMpIHtcbiAgICAgICAgaWYgKHBQb2ludHMgPT09IHZvaWQgMCkgeyBwUG9pbnRzID0gW107IH1cbiAgICAgICAgdGhpcy5wUG9pbnRzID0gcFBvaW50cztcbiAgICAgICAgdGhpcy5wcm9wZXJ0aWVzID0ge307XG4gICAgICAgIHRoaXMuaG9sZXMgPSBbXTtcbiAgICAgICAgdGhpcy5zZWFyY2hTdG9yZSA9IHt9O1xuICAgIH1cbiAgICBEUG9seWdvbi5hcnJheU9mVHJpYW5nbGVzVG9WZXJ0aWNlcyA9IGZ1bmN0aW9uICh0cmlhbmdsZXMsIGhlaWdodCkge1xuICAgICAgICByZXR1cm4gdHJpYW5nbGVzLm1hcChmdW5jdGlvbiAodikgeyByZXR1cm4gKGlzRGVmQW5kTm90TnVsbChoZWlnaHQpID8gdlxuICAgICAgICAgICAgLmxvb3AoKVxuICAgICAgICAgICAgLmhlaWdodChoZWlnaHQpXG4gICAgICAgICAgICAucnVuKCkgOiB2KVxuICAgICAgICAgICAgLnRvQXJyYXlPZkNvb3JkcygpOyB9KVxuICAgICAgICAgICAgLmZsYXQoMik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5taW5BcmVhUmVjdGFuZ2xlU2l6ZSA9IGZ1bmN0aW9uIChwb2x5KSB7XG4gICAgICAgIHZhciBfYSA9IHBvbHkuY2xvbmUoKS5vcGVuKCksIGZpcnN0ID0gX2EuZmlyc3QsIHNlY29uZCA9IF9hLnNlY29uZCwgbGFzdCA9IF9hLmxhc3Q7XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KGZpcnN0LmRpc3RhbmNlKHNlY29uZCksIGZpcnN0LmRpc3RhbmNlKGxhc3QpKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnRvRGFzaCA9IGZ1bmN0aW9uIChwb2x5KSB7XG4gICAgICAgIHZhciBlXzMsIF9hO1xuICAgICAgICB2YXIgcCA9IG5ldyBEUG9seWdvbigpO1xuICAgICAgICB2YXIgcmVzdWx0ID0gW3BdO1xuICAgICAgICB2YXIgdHJpZ2dlciA9IHRydWU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHBvbHkucG9pbnRzKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBwb2ludCA9IF9jLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh0cmlnZ2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHAucHVzaChwb2ludC5jbG9uZSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBvaW50LnByb3BlcnRpZXMucGllY2VCb3JkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlciA9ICF0cmlnZ2VyO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHJpZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG5ldyBEUG9seWdvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwLnB1c2gocG9pbnQuY2xvbmUoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfM18xKSB7IGVfMyA9IHsgZXJyb3I6IGVfM18xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8zKSB0aHJvdyBlXzMuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgRFBvbHlnb24ubWluQXJlYVJlY3RhbmdsZURpcmVjdGlvbiA9IGZ1bmN0aW9uIChwb2x5KSB7XG4gICAgICAgIHZhciBfYSA9IHBvbHkuY2xvbmUoKS5vcGVuKCksIGZpcnN0ID0gX2EuZmlyc3QsIHNlY29uZCA9IF9hLnNlY29uZCwgbGFzdCA9IF9hLmxhc3Q7XG4gICAgICAgIGlmICghZmlyc3QgfHwgIXNlY29uZCB8fCAhbGFzdCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpcnN0LmRpc3RhbmNlKHNlY29uZCkgPiBmaXJzdC5kaXN0YW5jZShsYXN0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZpcnN0LmZpbmRMaW5lKHNlY29uZCkuZ2V0RmkoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlyc3QuZmluZExpbmUobGFzdCkuZ2V0RmkoKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnBhcnNlRnJvbVdLVCA9IGZ1bmN0aW9uICh3a3QpIHtcbiAgICAgICAgdmFyIGRhdGEgPSB3a3QudHJpbSgpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIHZhciByZXMgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgaWYgKGRhdGEuaW5kZXhPZignUE9MWUdPTicpID09PSAwKSB7XG4gICAgICAgICAgICB2YXIgcmVnZXhwID0gL1BPTFlHT04gXFwoXFwoKD88ZGF0YT4oPzooPyFcXClcXCkkKS4pKj8pXFwpXFwpJC9taXU7XG4gICAgICAgICAgICB2YXIgcmVnID0gcmVnZXhwLmV4ZWMoZGF0YSk7XG4gICAgICAgICAgICB2YXIgX2EgPSBfX3JlYWQocmVnLmdyb3Vwcy5kYXRhXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcpLCAoJylcbiAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChwKSB7IHJldHVybiBuZXcgRFBvbHlnb24ocC5zcGxpdCgnLCAnKVxuICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHBhcmVzKSB7IHJldHVybiBEUG9pbnQucGFyc2UocGFyZXMuc3BsaXQoJyAnKS5tYXAoTnVtYmVyKSk7IH0pKTsgfSkpLCBwYXRoID0gX2FbMF0sIGhvbGVzID0gX2Euc2xpY2UoMSk7XG4gICAgICAgICAgICBpZiAoaG9sZXMgJiYgaG9sZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcGF0aC5ob2xlcyA9IGhvbGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzID0gcGF0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5pbmRleE9mKCdMSU5FU1RSSU5HJykgPT09IDApIHtcbiAgICAgICAgICAgIHZhciByZWdleHAgPSAvTElORVNUUklORyBcXCgoPzxkYXRhPig/Oig/IVxcKSQpLikqPylcXCkkL21pdTtcbiAgICAgICAgICAgIHZhciByZWcgPSByZWdleHAuZXhlYyhkYXRhKTtcbiAgICAgICAgICAgIHJlcyA9IG5ldyBEUG9seWdvbihyZWcuZ3JvdXBzLmRhdGFcbiAgICAgICAgICAgICAgICAuc3BsaXQoJywgJykubWFwKGZ1bmN0aW9uICh0KSB7IHJldHVybiBEUG9pbnQucGFyc2UodC5zcGxpdCgnICcpLm1hcChOdW1iZXIpKTsgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLmluZGV4T2YoJ1BPSU5UJykgPT09IDApIHtcbiAgICAgICAgICAgIHJlcyA9IG5ldyBEUG9seWdvbihbRFBvaW50LnBhcnNlRnJvbVdLVChkYXRhKV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5jcmVhdGVTcXVhcmVCeVNpemUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKFtEUG9pbnQuemVybygpLCBzaXplLmNsb25lKCkuc2V0WCgwKSwgc2l6ZS5jbG9uZSgpLCBzaXplLmNsb25lKCkuc2V0WSgwKV0pLmNsb3NlKCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUubG9vcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbkxvb3AodGhpcyk7XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcInBvaW50c1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cztcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAocCkge1xuICAgICAgICAgICAgdGhpcy5wUG9pbnRzID0gcDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibWF4WFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKGZ1bmN0aW9uIChhLCByKSB7IHJldHVybiBNYXRoLm1heChhLCByLngpOyB9LCAtSW5maW5pdHkpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJtaW5YXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIHIpIHsgcmV0dXJuIE1hdGgubWluKGEsIHIueCk7IH0sIEluZmluaXR5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibWF4WVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKGZ1bmN0aW9uIChhLCByKSB7IHJldHVybiBNYXRoLm1heChhLCByLnkpOyB9LCAtSW5maW5pdHkpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJtaW5ZXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIHIpIHsgcmV0dXJuIE1hdGgubWluKGEsIHIueSk7IH0sIEluZmluaXR5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiaW5uZXJDZW50ZXJcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBjZW50ZXIgPSB0aGlzLmNlbnRlcjtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvVHJpYW5nbGVzKCkubWFwKGZ1bmN0aW9uICh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGMgPSB0cmlhbmdsZUNlbnRlcih0KTtcbiAgICAgICAgICAgICAgICBjLnByb3BlcnRpZXMuc2NvcmUgPSBNYXRoLm1pbihjLmRpc3RhbmNlKHQuYXQoMCkpLCBjLmRpc3RhbmNlKHQuYXQoMSkpLCBjLmRpc3RhbmNlKHQuYXQoMikpKSArIGMuZGlzdGFuY2UoY2VudGVyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEucHJvcGVydGllcy5zY29yZSAtIGIucHJvcGVydGllcy5zY29yZTsgfSlbMF07XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImNlbnRlclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVmdFRvcC5tb3ZlKHRoaXMuc2l6ZS5kaXZpZGUoMikpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJoXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXhZIC0gdGhpcy5taW5ZO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJ3XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXhYIC0gdGhpcy5taW5YO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJkWVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiZFhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnc7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImV4dGVuZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgbWluWCA9IF9hLm1pblgsIG1pblkgPSBfYS5taW5ZLCBtYXhYID0gX2EubWF4WCwgbWF4WSA9IF9hLm1heFk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKFtcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KG1pblgsIG1pblkpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQobWF4WCwgbWluWSksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludChtYXhYLCBtYXhZKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KG1pblgsIG1heFkpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQobWluWCwgbWluWSlcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJzaXplXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLCB3ID0gX2EudywgaCA9IF9hLmg7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCh3LCBoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibGVmdFRvcFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgbWluWCA9IF9hLm1pblgsIG1pblkgPSBfYS5taW5ZO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQobWluWCwgbWluWSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm1pblBvaW50XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sZWZ0VG9wO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJyaWdodEJvdHRvbVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgbWF4WCA9IF9hLm1heFgsIG1heFkgPSBfYS5tYXhZO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQobWF4WCwgbWF4WSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm1heFBvaW50XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yaWdodEJvdHRvbTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibGVuZ3RoXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzLmxlbmd0aDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiZnVsbExlbmd0aFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5vcGVuKCkucGVyaW1ldGVyO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJmdWxsTGVuZ3RoTGF0TG9uXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLm9wZW4oKS5wZXJpbWV0ZXJMYXRMb247XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcInBlcmltZXRlclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVfNCwgX2E7XG4gICAgICAgICAgICB2YXIgcCA9IDA7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5sb29wUG9pbnRzR2VuZXJhdG9yKCkoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9kID0gX19yZWFkKF9jLnZhbHVlLCAyKSwgcDEgPSBfZFswXSwgcDIgPSBfZFsxXTtcbiAgICAgICAgICAgICAgICAgICAgcCArPSBwMS5kaXN0YW5jZShwMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfNF8xKSB7IGVfNCA9IHsgZXJyb3I6IGVfNF8xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzQpIHRocm93IGVfNC5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcInBlcmltZXRlckxhdExvblwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVfNSwgX2E7XG4gICAgICAgICAgICB2YXIgcCA9IDA7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5sb29wUG9pbnRzR2VuZXJhdG9yKCkoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9kID0gX19yZWFkKF9jLnZhbHVlLCAyKSwgcDEgPSBfZFswXSwgcDIgPSBfZFsxXTtcbiAgICAgICAgICAgICAgICAgICAgcCArPSBwMS5kaXN0YW5jZUxhdExvbihwMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfNV8xKSB7IGVfNSA9IHsgZXJyb3I6IGVfNV8xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzUpIHRocm93IGVfNS5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImFyZWFcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBlXzYsIF9hO1xuICAgICAgICAgICAgdmFyIHN1bSA9IDA7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5kZWludGVyc2VjdGlvbi5sb29wUG9pbnRzR2VuZXJhdG9yKCkoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9kID0gX19yZWFkKF9jLnZhbHVlLCAyKSwgX2UgPSBfZFswXSwgeCA9IF9lLngsIHkgPSBfZS55LCBfZiA9IF9kWzFdLCBhID0gX2YueCwgYiA9IF9mLnk7XG4gICAgICAgICAgICAgICAgICAgIHN1bSArPSB4ICogYiAtIHkgKiBhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzZfMSkgeyBlXzYgPSB7IGVycm9yOiBlXzZfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV82KSB0aHJvdyBlXzYuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyhzdW0gLyAyKSAtIHRoaXMuaG9sZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBob2xlKSB7IHJldHVybiBhICsgaG9sZS5hcmVhOyB9LCAwKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiZmlsbGVkRGVpbnRlcnNlY3Rpb25cIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBwID0gdGhpcy5jbG9uZSgpLmRlaW50ZXJzZWN0aW9uLnJlbW92ZUR1cGxpY2F0ZXMoKS5jbG9ja1dpc2Uub3BlbigpO1xuICAgICAgICAgICAgdmFyIGZpbmRTYW1lQ29ybmVycyA9IGZ1bmN0aW9uIChzdGFydEluZGV4KSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0SW5kZXggPT09IHZvaWQgMCkgeyBzdGFydEluZGV4ID0gMDsgfVxuICAgICAgICAgICAgICAgIHZhciBzdG9yZSA9IHt9O1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBzdGFydEluZGV4OyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gcC5hdChpKS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHN0b3JlW2tleV0gPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3N0b3JlW2tleV0sIGldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0b3JlW2tleV0gPSBpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciBpbmRleGVzID0gZmluZFNhbWVDb3JuZXJzKCk7XG4gICAgICAgICAgICB2YXIgaG9sZXMgPSBbXTtcbiAgICAgICAgICAgIHdoaWxlIChpbmRleGVzKSB7XG4gICAgICAgICAgICAgICAgdmFyIGEgPSBuZXcgRFBvbHlnb24ocC5jbG9uZSgpLnJlbW92ZVBhcnQoaW5kZXhlc1swXSwgaW5kZXhlc1sxXSAtIGluZGV4ZXNbMF0pKTtcbiAgICAgICAgICAgICAgICBpZiAoYS5pc0Nsb2Nrd2lzZSkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleGVzID0gZmluZFNhbWVDb3JuZXJzKGluZGV4ZXNbMF0gKyAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGhvbGVzLnB1c2goYS5jbG9zZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgcC5yZW1vdmVQYXJ0KGluZGV4ZXNbMF0sIGluZGV4ZXNbMV0gLSBpbmRleGVzWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXhlcyA9IGZpbmRTYW1lQ29ybmVycygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAuaG9sZXMgPSBob2xlcztcbiAgICAgICAgICAgIHJldHVybiBwLmNsb3NlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImRlaW50ZXJzZWN0aW9uXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZV83LCBfYTtcbiAgICAgICAgICAgIHZhciBwID0gdGhpcy5jbG9uZSgpLmNsb3NlKCk7XG4gICAgICAgICAgICB2YXIgc3RvcmUgPSB7fTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcC5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgayA9IHAuYXQoaSkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICBzdG9yZVtrXSA9IHN0b3JlW2tdIHx8IFtdO1xuICAgICAgICAgICAgICAgIHN0b3JlW2tdLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAoaikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZmlyc3RMaW5lID0gcC5hdChpKS5maW5kTGluZShwLmF0KGkgKyAxKSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWNvbmRMaW5lID0gcC5hdChqKS5maW5kTGluZShwLmF0KGogKyAxKSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbnRlcnNlY3Rpb25Qb2ludCA9IGZpcnN0TGluZS5pbnRlcnNlY3Rpb24oc2Vjb25kTGluZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcnNlY3Rpb25Qb2ludCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIV9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGZpcnN0TGluZS5wb2ludHMpLCBmYWxzZSksIF9fcmVhZChzZWNvbmRMaW5lLnBvaW50cyksIGZhbHNlKS5zb21lKGZ1bmN0aW9uICh0KSB7IHJldHVybiB0Lmxpa2UoaW50ZXJzZWN0aW9uUG9pbnQpOyB9KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnQgPSBwLnJlbW92ZVBhcnQoaSwgaiAtIGkpLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAuaW5zZXJ0QWZ0ZXIuYXBwbHkocCwgX19zcHJlYWRBcnJheShbaV0sIF9fcmVhZChwYXJ0KSwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAuaW5zZXJ0QWZ0ZXIoaiwgaW50ZXJzZWN0aW9uUG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5pbnNlcnRBZnRlcihpLCBpbnRlcnNlY3Rpb25Qb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSBpICsgMjsgaiA8IHAubGVuZ3RoIC0gMTsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIF9sb29wXzEoaik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKE9iamVjdC5rZXlzKHN0b3JlKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9IF9jLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVjb3JkID0gc3RvcmVba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlY29yZC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIChqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9yaWdpbl8xID0gcC5jbG9uZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gcmVjb3JkW2pdIC0gcmVjb3JkW2ogLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnQgPSBuZXcgRFBvbHlnb24ob3JpZ2luXzEucmVtb3ZlUGFydChyZWNvcmRbaiAtIDFdLCBkKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhbGxJbnNpZGUgPSBwYXJ0LnJlZHVjZShmdW5jdGlvbiAoYSwgZSkgeyByZXR1cm4gYSAmJiBjb250YWluQ2FsY3VsYXRvcihvcmlnaW5fMSwgZSk7IH0sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxsSW5zaWRlICYmIG9yaWdpbl8xLmlzQ2xvY2t3aXNlID09PSBwYXJ0LmlzQ2xvY2t3aXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5fMS5pbnNlcnRBZnRlci5hcHBseShvcmlnaW5fMSwgX19zcHJlYWRBcnJheShbcmVjb3JkW2ogLSAxXSAtIDFdLCBfX3JlYWQocGFydC5yZXZlcnNlKCkucG9pbnRzKSwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBvcmlnaW5fMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gcmVjb3JkLmxlbmd0aCAtIDE7IGogPiAwOyBqLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9vcF8yKGopO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfN18xKSB7IGVfNyA9IHsgZXJyb3I6IGVfN18xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzcpIHRocm93IGVfNy5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcInZhbGlkXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sZW5ndGggPiBNSU5fUE9JTlRTX0lOX1ZBTElEX1BPTFlHT047XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImZpcnN0XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdCgwKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwic2Vjb25kXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdCgxKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibGFzdFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXQodGhpcy5sZW5ndGggLSAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibWluQXJlYVJlY3RhbmdsZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVfOCwgX2EsIGVfOSwgX2I7XG4gICAgICAgICAgICB2YXIgcCA9IHRoaXMuY29udmV4O1xuICAgICAgICAgICAgdmFyIHJlc3VsdFBvbHlnb24gPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgICAgIHZhciByZXN1bHRBcmVhID0gSW5maW5pdHk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9jID0gX192YWx1ZXMocC5sb29wUG9pbnRzR2VuZXJhdG9yKHRydWUpKCkpLCBfZCA9IF9jLm5leHQoKTsgIV9kLmRvbmU7IF9kID0gX2MubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZSA9IF9fcmVhZChfZC52YWx1ZSwgMyksIGwgPSBfZVsyXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heFdpZHRoID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heFdpZHRoUG9pbnQxID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heFdpZHRoUG9pbnQyID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heEhlaWdodCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXhIZWlnaHRQb2ludCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBfZiA9IChlXzkgPSB2b2lkIDAsIF9fdmFsdWVzKHAubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpKSwgX2cgPSBfZi5uZXh0KCk7ICFfZy5kb25lOyBfZyA9IF9mLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfaCA9IF9fcmVhZChfZy52YWx1ZSwgNCksIHogPSBfaFswXSwgaSA9IF9oWzNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwMSA9IGwuZmluZFBvaW50KGwuZmluZFBlcnBlbmRpY3VsYXIoeikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gcDEuZGlzdGFuY2Uoeik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gbWF4SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodCA9IGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodFBvaW50ID0gejtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IGk7IGogPCBwLmxlbmd0aCAtIDE7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcDIgPSBsLmZpbmRQb2ludChsLmZpbmRQZXJwZW5kaWN1bGFyKHAuYXQoaikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSBwMS5kaXN0YW5jZShwMik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID49IG1heFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aCA9IHc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aFBvaW50MSA9IHAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGhQb2ludDIgPSBwMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZV85XzEpIHsgZV85ID0geyBlcnJvcjogZV85XzEgfTsgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9nICYmICFfZy5kb25lICYmIChfYiA9IF9mLnJldHVybikpIF9iLmNhbGwoX2YpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzkpIHRocm93IGVfOS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghbWF4V2lkdGhQb2ludDEgfHwgIW1heFdpZHRoUG9pbnQyIHx8ICFtYXhIZWlnaHRQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoTGluZSA9IG1heFdpZHRoUG9pbnQxLmZpbmRMaW5lKG1heFdpZHRoUG9pbnQyKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcnBlbmRpY3VsYXIxID0gd2lkdGhMaW5lLmZpbmRQZXJwZW5kaWN1bGFyKG1heFdpZHRoUG9pbnQxKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcnBlbmRpY3VsYXIyID0gd2lkdGhMaW5lLmZpbmRQZXJwZW5kaWN1bGFyKG1heFdpZHRoUG9pbnQyKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXBQb2x5Z29uID0gbmV3IERQb2x5Z29uKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoUG9pbnQxLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGhQb2ludDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJwZW5kaWN1bGFyMi5maW5kUG9pbnQocGVycGVuZGljdWxhcjIuZmluZFBlcnBlbmRpY3VsYXIobWF4SGVpZ2h0UG9pbnQpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnBlbmRpY3VsYXIxLmZpbmRQb2ludChwZXJwZW5kaWN1bGFyMS5maW5kUGVycGVuZGljdWxhcihtYXhIZWlnaHRQb2ludCkpXG4gICAgICAgICAgICAgICAgICAgIF0pLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wUG9seWdvbi5hcmVhIDwgcmVzdWx0QXJlYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0UG9seWdvbiA9IHRlbXBQb2x5Z29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJlYSA9IHRlbXBQb2x5Z29uLmFyZWE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV84XzEpIHsgZV84ID0geyBlcnJvcjogZV84XzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9kICYmICFfZC5kb25lICYmIChfYSA9IF9jLnJldHVybikpIF9hLmNhbGwoX2MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfOCkgdGhyb3cgZV84LmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0UG9seWdvbjtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiY29udmV4XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcCA9IHRoaXMuY2xvbmUoKS5vcGVuKCk7XG4gICAgICAgICAgICB2YXIgaXNDbG9ja3dpc2UgPSBwLmlzQ2xvY2t3aXNlO1xuICAgICAgICAgICAgaWYgKCFpc0Nsb2Nrd2lzZSkge1xuICAgICAgICAgICAgICAgIHAucmV2ZXJzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGwgPSAwO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHZhciBwMSA9IHAubGFzdDtcbiAgICAgICAgICAgICAgICB2YXIgcDIgPSBwLmZpcnN0O1xuICAgICAgICAgICAgICAgIHZhciBwMyA9IHAuc2Vjb25kO1xuICAgICAgICAgICAgICAgIHZhciBkID0gcDIuZmluZElubmVyQW5nbGUocDEsIHAzKTtcbiAgICAgICAgICAgICAgICBpZiAoZCA+IE1hdGguUEkgfHwgRE51bWJlcnMubGlrZVplcm8oRE51bWJlcnMucmFkMkRlZyhkKSkgfHwgRE51bWJlcnMubGlrZVBJKGQpIHx8IEROdW1iZXJzLmxpa2UyUEkoZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcC5yZW1vdmVQYXJ0KC0xLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gd2hpbGUgKHAubGVuZ3RoKTtcbiAgICAgICAgICAgIHAuY2xvc2UoKTtcbiAgICAgICAgICAgIHZhciBpdGVyYXRpb24gPSAwO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHAgPSBwLmRlaW50ZXJzZWN0aW9uO1xuICAgICAgICAgICAgICAgIGwgPSBwLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHAubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwMSA9IHAuYXQoaSAtIDEpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcDIgPSBwLmF0KGkpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcDMgPSBwLmF0KGkgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBwMi5maW5kSW5uZXJBbmdsZShwMSwgcDMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZCA+IE1hdGguUEkgfHwgRE51bWJlcnMubGlrZVplcm8oRE51bWJlcnMucmFkMkRlZyhkKSkgfHwgRE51bWJlcnMubGlrZVBJKGQpIHx8IEROdW1iZXJzLmxpa2UyUEkoZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAucmVtb3ZlUGFydCgtLWksIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGl0ZXJhdGlvbisrO1xuICAgICAgICAgICAgfSB3aGlsZSAocC5sZW5ndGggIT09IGwgJiYgaXRlcmF0aW9uIDwgTUFYX0NPTlZFWF9JVEVSQVRJT05TKTtcbiAgICAgICAgICAgIGlmICghaXNDbG9ja3dpc2UpIHtcbiAgICAgICAgICAgICAgICBwLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJpc0Nsb2Nrd2lzZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVfMTAsIF9hO1xuICAgICAgICAgICAgdmFyIHN1bSA9IDA7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXModGhpcy5jbG9uZSgpLmNsb3NlKClcbiAgICAgICAgICAgICAgICAgICAgLmxvb3BQb2ludHNHZW5lcmF0b3IoKSgpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2QgPSBfX3JlYWQoX2MudmFsdWUsIDIpLCBfZSA9IF9kWzBdLCB4ID0gX2UueCwgeSA9IF9lLnksIF9mID0gX2RbMV0sIGEgPSBfZi54LCBiID0gX2YueTtcbiAgICAgICAgICAgICAgICAgICAgc3VtICs9IChhIC0geCkgKiAoYiArIHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzEwXzEpIHsgZV8xMCA9IHsgZXJyb3I6IGVfMTBfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xMCkgdGhyb3cgZV8xMC5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1bSA8IDA7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImNsb2NrV2lzZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNDbG9ja3dpc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5yZXZlcnNlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm5vSG9sZXNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciByZXMgPSB0aGlzLmNsb25lKCk7XG4gICAgICAgICAgICByZXMuaG9sZXMgPSBbXTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUucmVkdWNlID0gZnVuY3Rpb24gKGYsIHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cy5yZWR1Y2UoZiwgdik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuaW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKGwsIGluY2x1ZGVPbmx5KSB7XG4gICAgICAgIHZhciBlXzExLCBfYTtcbiAgICAgICAgaWYgKGluY2x1ZGVPbmx5ID09PSB2b2lkIDApIHsgaW5jbHVkZU9ubHkgPSBmYWxzZTsgfVxuICAgICAgICB2YXIgcmVzID0gW107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMubG9vcFBvaW50c0dlbmVyYXRvcih0cnVlKSgpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMyksIGxpbmUgPSBfZFsyXTtcbiAgICAgICAgICAgICAgICB2YXIgaW50ZXJzZWN0ID0gbGluZS5pbnRlcnNlY3Rpb24obCwgMCwgaW5jbHVkZU9ubHkpO1xuICAgICAgICAgICAgICAgIGlmIChpbnRlcnNlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goaW50ZXJzZWN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMTFfMSkgeyBlXzExID0geyBlcnJvcjogZV8xMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xMSkgdGhyb3cgZV8xMS5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2V0Q2VudGVyID0gZnVuY3Rpb24gKG5ld0NlbnRlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5sb29wKClcbiAgICAgICAgICAgIC5tb3ZlKG5ld0NlbnRlci5jbG9uZSgpLm1vdmUodGhpcy5jZW50ZXIubWludXMoKSkpXG4gICAgICAgICAgICAucnVuKCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudG9XS1QgPSBmdW5jdGlvbiAodHlwZSwgd2l0aFopIHtcbiAgICAgICAgaWYgKHR5cGUgPT09IHZvaWQgMCkgeyB0eXBlID0gRFBvbHlnb24uV0tUX1BPTFlHT047IH1cbiAgICAgICAgaWYgKHdpdGhaID09PSB2b2lkIDApIHsgd2l0aFogPSBmYWxzZTsgfVxuICAgICAgICBpZiAodHlwZSA9PT0gRFBvbHlnb24uV0tUX1BPTFlHT04pIHtcbiAgICAgICAgICAgIHZhciBoID0gJyc7XG4gICAgICAgICAgICBpZiAodGhpcy5ob2xlcyAmJiB0aGlzLmhvbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGggPSBcIiwgXCIuY29uY2F0KHRoaXMuaG9sZXMubWFwKGZ1bmN0aW9uIChob2xlKSB7IHJldHVybiBob2xlLnRvU3RyaW5nKCk7IH0pXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBcIlBPTFlHT04gKChcIi5jb25jYXQodGhpcy5kZWludGVyc2VjdGlvbi5tYXBBcnJheShmdW5jdGlvbiAocikgeyByZXR1cm4gXCJcIi5jb25jYXQoci54LCBcIiBcIikuY29uY2F0KHIueSkuY29uY2F0KHdpdGhaID8gXCIgXCIuY29uY2F0KHIueikgOiAnJyk7IH0pXG4gICAgICAgICAgICAgICAgLmpvaW4oJywgJyksIFwiKVwiKS5jb25jYXQoaCwgXCIpXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcIkxJTkVTVFJJTkcgKFwiLmNvbmNhdCh0aGlzLm1hcEFycmF5KGZ1bmN0aW9uIChyKSB7IHJldHVybiBcIlwiLmNvbmNhdChyLngsIFwiIFwiKS5jb25jYXQoci55KS5jb25jYXQod2l0aFogPyBcIiBcIi5jb25jYXQoci56KSA6ICcnKTsgfSlcbiAgICAgICAgICAgIC5qb2luKCcsICcpLCBcIilcIik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZmlsdGVyID0gZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgdGhpcy5wUG9pbnRzID0gdGhpcy5wUG9pbnRzLmZpbHRlcihmKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUubWFwID0gZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgdGhpcy5wUG9pbnRzID0gdGhpcy5tYXBBcnJheShmKTtcbiAgICAgICAgdGhpcy5ob2xlcyA9IHRoaXMuaG9sZXMubWFwKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLm1hcChmKTsgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLm1hcEFycmF5ID0gZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cy5tYXAoZik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc29ydCA9IGZ1bmN0aW9uIChmKSB7XG4gICAgICAgIHRoaXMucG9pbnRzLnNvcnQoZik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9pbnRzWyhpbmRleCAlIGxlbmd0aCArIGxlbmd0aCkgJSBsZW5ndGhdO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnBvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cy5wb3AoKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMucFBvaW50cykucHVzaC5hcHBseShfYSwgX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGFyZ3MpLCBmYWxzZSkpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNoaWZ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzLnNoaWZ0KCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudW5zaGlmdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoX2EgPSB0aGlzLnBQb2ludHMpLnVuc2hpZnQuYXBwbHkoX2EsIF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZChhcmdzKSwgZmFsc2UpKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5yZXZlcnNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBQb2ludHMgPSB0aGlzLnBQb2ludHMucmV2ZXJzZSgpO1xuICAgICAgICB0aGlzLmhvbGVzID0gdGhpcy5ob2xlcy5tYXAoZnVuY3Rpb24gKGgpIHsgcmV0dXJuIGgucmV2ZXJzZSgpOyB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5wUG9pbnRzLm1hcChmdW5jdGlvbiAocikgeyByZXR1cm4gci5nZXRWYWx1ZSgpOyB9KSArIHRoaXMuaG9sZXNcbiAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKGEsIGgpIHsgcmV0dXJuIGEgKyBoLmdldFZhbHVlKCk7IH0sICcnKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBcIihcIi5jb25jYXQodGhpcy5tYXBBcnJheShmdW5jdGlvbiAocikgeyByZXR1cm4gci50b1N0cmluZygpOyB9KS5qb2luKCcsICcpLCBcIilcIik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwMCA9IHRoaXMuZmlyc3Q7XG4gICAgICAgIGlmIChwMCAmJiAhdGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMucHVzaChwMC5jbG9uZSgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcCA9IHRoaXMuZmlyc3Q7XG4gICAgICAgIGlmICh0aGlzLmxlbmd0aCA+IDIgJiYgcCAmJiB0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHRoaXMucG9pbnRzKSwgZmFsc2UpLCBfX3JlYWQocG9seS5wb2ludHMpLCBmYWxzZSkpLmNsb3NlKCk7XG4gICAgICAgIHJlcy5ob2xlcyA9IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHRoaXMuaG9sZXMpLCBmYWxzZSksIF9fcmVhZChwb2x5LmhvbGVzKSwgZmFsc2UpLm1hcChmdW5jdGlvbiAoaCkgeyByZXR1cm4gaC5jbG9uZSgpOyB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzLnNvbWUoZnVuY3Rpb24gKHEpIHsgcmV0dXJuIHEuZXF1YWwocCk7IH0pO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKHRoaXMucG9pbnRzLm1hcChmdW5jdGlvbiAocikgeyByZXR1cm4gci5jbG9uZSgpOyB9KSk7XG4gICAgICAgIHJlcy5ob2xlcyA9IHRoaXMuaG9sZXMubWFwKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLmNsb25lKCk7IH0pO1xuICAgICAgICByZXMucHJvcGVydGllcyA9IF9fYXNzaWduKHt9LCB0aGlzLnByb3BlcnRpZXMpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmVxdWFsID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgaWYgKCEocCBpbnN0YW5jZW9mIERQb2x5Z29uKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmxlbmd0aCAhPT0gcC5sZW5ndGggfHwgdGhpcy5ob2xlcy5sZW5ndGggIT09IHAuaG9sZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh0aGlzLnNhbWUocCkgJiZcbiAgICAgICAgICAgIHRoaXMuaG9sZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBob2xlKSB7IHJldHVybiBhICYmIHAuaG9sZXMuc29tZShmdW5jdGlvbiAocEhvbGVzKSB7IHJldHVybiBwSG9sZXMuc2FtZShob2xlKTsgfSk7IH0sIHRydWUpKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zYW1lID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIHBDbG9uZSA9IHAuY2xvbmUoKS5jbG9zZSgpO1xuICAgICAgICB2YXIgdGhpc0FzU3RyaW5nID0gdGhpcy5jbG9uZSgpXG4gICAgICAgICAgICAuY2xvc2UoKVxuICAgICAgICAgICAgLnRvU3RyaW5nKCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcENsb25lLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpc0FzU3RyaW5nID09PSBwQ2xvbmUudG9TdHJpbmcoKSB8fCB0aGlzQXNTdHJpbmcgPT09IHBDbG9uZS5jbG9uZSgpLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgIC50b1N0cmluZygpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwQ2xvbmUubmV4dFN0YXJ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmZpbmRJbmRleCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wb2ludHMuZmluZEluZGV4KGZ1bmN0aW9uICh0KSB7IHJldHVybiB0LmVxdWFsKGEpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wb2ludHMuZmluZEluZGV4KGEpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmFwcHJveGltYXRpb24gPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAoZSA9PT0gdm9pZCAwKSB7IGUgPSBNYXRoLnNxcnQodGhpcy5wZXJpbWV0ZXIpICogQVBQUk9YSU1BVElPTl9WQUxVRTsgfVxuICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKHRoaXMuY2xvbmUoKS5kb3VnbGFzUGV1Y2tlcih0aGlzLnBQb2ludHMsIGUpKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5pbnNlcnRBZnRlciA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBwb2ludHMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIHBvaW50c1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICAoX2EgPSB0aGlzLnBQb2ludHMpLnNwbGljZS5hcHBseShfYSwgX19zcHJlYWRBcnJheShbaW5kZXggKyAxLCAwXSwgX19yZWFkKHBvaW50cyksIGZhbHNlKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUucmVtb3ZlUGFydCA9IGZ1bmN0aW9uIChpbmRleCwgY291bnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cy5zcGxpY2UoaW5kZXggKyAxLCBjb3VudCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuaGFzU2ltcGxlSW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIGV4dGVuZDEgPSB0aGlzLmV4dGVuZDtcbiAgICAgICAgdmFyIGV4dGVuZDIgPSBwLmV4dGVuZDtcbiAgICAgICAgdmFyIGV4dGVuZDFwb2ludHMgPSBleHRlbmQxLnBvaW50cztcbiAgICAgICAgdmFyIGV4dGVuZDJwb2ludHMgPSBleHRlbmQyLnBvaW50cztcbiAgICAgICAgdmFyIGluMSA9IGV4dGVuZDFwb2ludHMuc29tZShmdW5jdGlvbiAodCkgeyByZXR1cm4gZXh0ZW5kMi5zaW1wbGVJbmNsdWRlKHQpOyB9KTtcbiAgICAgICAgdmFyIGluMiA9IGV4dGVuZDJwb2ludHMuc29tZShmdW5jdGlvbiAodCkgeyByZXR1cm4gZXh0ZW5kMS5zaW1wbGVJbmNsdWRlKHQpOyB9KTtcbiAgICAgICAgcmV0dXJuIGluMSB8fCBpbjI7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2ltcGxlSW5jbHVkZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpbXBsZUluY2x1ZGVYKHApICYmIHRoaXMuc2ltcGxlSW5jbHVkZVkocCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZHJhd1BvbHlnb25PbkNhbnZhcyA9IGZ1bmN0aW9uIChjYW52YXMsIGZpbGxDb2xvciwgc3Ryb2tlQ29sb3IsIHNoYWRvd0NvbG9yLCBsaW5lV2lkdGgsIHN0ZXBzKSB7XG4gICAgICAgIGlmIChsaW5lV2lkdGggPT09IHZvaWQgMCkgeyBsaW5lV2lkdGggPSAxOyB9XG4gICAgICAgIGlmIChzdGVwcyA9PT0gdm9pZCAwKSB7IHN0ZXBzID0gdGhpcy5sZW5ndGggLSAxOyB9XG4gICAgICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgICAgIGlmIChmaWxsQ29sb3IpIHtcbiAgICAgICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gZmlsbENvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0cm9rZUNvbG9yKSB7XG4gICAgICAgICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gc3Ryb2tlQ29sb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGluZVdpZHRoKSB7XG4gICAgICAgICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IGxpbmVXaWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaWxsQ29sb3IgfHwgc3Ryb2tlQ29sb3IpIHtcbiAgICAgICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmdvQnlQYXRoKGN0eCwgc3RlcHMgJSB0aGlzLmxlbmd0aCk7XG4gICAgICAgICAgICBpZiAoc2hhZG93Q29sb3IpIHtcbiAgICAgICAgICAgICAgICBjdHguc2hhZG93Q29sb3IgPSBzaGFkb3dDb2xvcjtcbiAgICAgICAgICAgICAgICBjdHguc2hhZG93Qmx1ciA9IDA7XG4gICAgICAgICAgICAgICAgY3R4LnNoYWRvd09mZnNldFggPSAxO1xuICAgICAgICAgICAgICAgIGN0eC5zaGFkb3dPZmZzZXRZID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmaWxsQ29sb3IpIHtcbiAgICAgICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7XG4gICAgICAgICAgICAgICAgY3R4LmZpbGwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdHJva2VDb2xvcikge1xuICAgICAgICAgICAgICAgIGN0eC5zdHJva2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5jbGVhclBvbHlnb25PbkNhbnZhcyA9IGZ1bmN0aW9uIChjYW52YXMpIHtcbiAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICB2YXIgb2xkID0gY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbjtcbiAgICAgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdkZXN0aW5hdGlvbi1vdXQnO1xuICAgICAgICB0aGlzLmdvQnlQYXRoKGN0eCk7XG4gICAgICAgIGN0eC5maWxsKCk7XG4gICAgICAgIGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSBvbGQ7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuY29udGFpbiA9IGZ1bmN0aW9uIChwLCBpc0JvcmRlckluc2lkZSkge1xuICAgICAgICB2YXIgZV8xMiwgX2E7XG4gICAgICAgIGlmIChpc0JvcmRlckluc2lkZSA9PT0gdm9pZCAwKSB7IGlzQm9yZGVySW5zaWRlID0gZmFsc2U7IH1cbiAgICAgICAgdmFyIHNpbXBsZUluY2x1ZGUgPSB0aGlzLnNpbXBsZUluY2x1ZGUocCk7XG4gICAgICAgIGlmICghc2ltcGxlSW5jbHVkZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBvbkJvcmRlciA9IHRoaXMub25Cb3JkZXIocCk7XG4gICAgICAgIGlmIChvbkJvcmRlcikge1xuICAgICAgICAgICAgcmV0dXJuIGlzQm9yZGVySW5zaWRlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwb2x5ID0gdGhpcy5kZWludGVyc2VjdGlvbjtcbiAgICAgICAgdmFyIHRvdGFsRmkgPSAwO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyhwb2x5Lmxvb3BQb2ludHNHZW5lcmF0b3IoKSgpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMiksIF9lID0gX2RbMF0sIHggPSBfZS54LCB5ID0gX2UueSwgX2YgPSBfZFsxXSwgYSA9IF9mLngsIGIgPSBfZi55O1xuICAgICAgICAgICAgICAgIHZhciBsaW5lMSA9IG5ldyBETGluZSh4IC0gcC54LCB5IC0gcC55LCAwKTtcbiAgICAgICAgICAgICAgICB2YXIgbGluZTIgPSBuZXcgRExpbmUoYSAtIHAueCwgYiAtIHAueSwgMCk7XG4gICAgICAgICAgICAgICAgdmFyIGZpRGlmID0gbGluZTEuZmluZEZpKGxpbmUyKTtcbiAgICAgICAgICAgICAgICBpZiAobGluZTEudmVjdG9yUHJvZHVjdChsaW5lMikuYyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdG90YWxGaSArPSBmaURpZjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRvdGFsRmkgLT0gZmlEaWY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzEyXzEpIHsgZV8xMiA9IHsgZXJyb3I6IGVfMTJfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTIpIHRocm93IGVfMTIuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgZXBzID0gTWF0aC5QSSAvIDEwMDAwO1xuICAgICAgICB2YXIgYWJzVG90YWxGaSA9IE1hdGguYWJzKHRvdGFsRmkpO1xuICAgICAgICBpZiAoYWJzVG90YWxGaSA8IGVwcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKE1hdGguYWJzKDIgKiBNYXRoLlBJIC0gYWJzVG90YWxGaSkgPCBlcHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY29udGFpbnMyIGZhaWxkJyk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUub25Cb3JkZXIgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgZV8xMywgX2E7XG4gICAgICAgIHZhciBzaW1wbGVJbmNsdWRlID0gdGhpcy5zaW1wbGVJbmNsdWRlKHApO1xuICAgICAgICBpZiAoc2ltcGxlSW5jbHVkZSkge1xuICAgICAgICAgICAgdmFyIHBvbHkgPSB0aGlzLmRlaW50ZXJzZWN0aW9uO1xuICAgICAgICAgICAgdmFyIGhhc1NhbWVQb2ludCA9IHRoaXMucG9pbnRzLnNvbWUoZnVuY3Rpb24gKHBvaW50KSB7IHJldHVybiBwb2ludC5lcXVhbChwKTsgfSk7XG4gICAgICAgICAgICBpZiAoaGFzU2FtZVBvaW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXMocG9seS5sb29wUG9pbnRzR2VuZXJhdG9yKHRydWUpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMyksIHBvbHlnb25MaW5lID0gX2RbMl07XG4gICAgICAgICAgICAgICAgICAgIHZhciBvbkJvcmRlciA9IHBvbHlnb25MaW5lLngocCkuZXF1YWwocCkgJiYgcG9seWdvbkxpbmUuaW5SYW5nZShwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9uQm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzEzXzEpIHsgZV8xMyA9IHsgZXJyb3I6IGVfMTNfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xMykgdGhyb3cgZV8xMy5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5uZXh0U3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICB0aGlzLnB1c2godGhpcy5zaGlmdCgpKTtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5yZW1vdmVEdXBsaWNhdGVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgcDEgPSB0aGlzLmF0KGkpO1xuICAgICAgICAgICAgdmFyIHAyID0gdGhpcy5hdChpICsgMSk7XG4gICAgICAgICAgICBpZiAocDEuZXF1YWwocDIpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVQYXJ0KGksIDEpO1xuICAgICAgICAgICAgICAgIGktLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnRvR2VvSlNPTkZlYXR1cmVDb2xsZWN0aW9uID0gZnVuY3Rpb24gKHBvbHlnb25zLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICAgICAgICBmZWF0dXJlczogcG9seWdvbnMubWFwKGZ1bmN0aW9uIChwb2x5Z29uKSB7IHJldHVybiBwb2x5Z29uLnRvR2VvSlNPTkZlYXR1cmUoZm9ybWF0KTsgfSlcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnBhcnNlID0gZnVuY3Rpb24gKGEsIGZvcm1hdCkge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSB2b2lkIDApIHsgZm9ybWF0ID0gREdlby5wYXJzZUZvcm1hdDsgfVxuICAgICAgICBpZiAoYS50eXBlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGEudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ0ZlYXR1cmVDb2xsZWN0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuZmVhdHVyZXMucmVkdWNlKGZ1bmN0aW9uIChhaywgZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBEUG9seWdvbi5wYXJzZShmLCBmb3JtYXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhay5wdXNoLmFwcGx5KGFrLCBfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQodCksIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhay5wdXNoKHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFrO1xuICAgICAgICAgICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICAgICAgY2FzZSAnRmVhdHVyZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBEUG9seWdvbi5wYXJzZShhLmdlb21ldHJ5LCBmb3JtYXQpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcHJvcHNfMSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBhLnByb3BlcnRpZXMpLCAoYS5pZCA/ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogYS5pZFxuICAgICAgICAgICAgICAgICAgICB9KSA6ICh7fSkpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQuZm9yRWFjaChmdW5jdGlvbiAocmVjb3JkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnByb3BlcnRpZXMgPSBfX2Fzc2lnbih7fSwgcHJvcHNfMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQucHJvcGVydGllcyA9IF9fYXNzaWduKHt9LCBwcm9wc18xKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAnTGluZVN0cmluZyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnTXVsdGlQb2ludCc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24oYS5jb29yZGluYXRlcy5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIERQb2ludC5wYXJzZShjLCBmb3JtYXQpOyB9KSk7XG4gICAgICAgICAgICAgICAgY2FzZSAnUG9seWdvbic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmNvb3JkaW5hdGVzLnJlZHVjZShmdW5jdGlvbiAoYWssIGxpbmUsIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhay5wb2ludHMgPSBsaW5lLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gRFBvaW50LnBhcnNlKGMsIGZvcm1hdCk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWsuaG9sZXMucHVzaChuZXcgRFBvbHlnb24obGluZS5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIERQb2ludC5wYXJzZShjLCBmb3JtYXQpOyB9KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFrO1xuICAgICAgICAgICAgICAgICAgICB9LCBuZXcgRFBvbHlnb24oKSk7XG4gICAgICAgICAgICAgICAgY2FzZSAnTXVsdGlMaW5lU3RyaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuY29vcmRpbmF0ZXMucmVkdWNlKGZ1bmN0aW9uIChhaywgbGluZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWsucHVzaChuZXcgRFBvbHlnb24obGluZS5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIERQb2ludC5wYXJzZShjLCBmb3JtYXQpOyB9KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFrO1xuICAgICAgICAgICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICAgICAgY2FzZSAnTXVsdGlQb2x5Z29uJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuY29vcmRpbmF0ZXMucmVkdWNlKGZ1bmN0aW9uIChhaywgY29vcmRpbmF0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFrLnB1c2goRFBvbHlnb24ucGFyc2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlczogY29vcmRpbmF0ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGZvcm1hdCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFrO1xuICAgICAgICAgICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICAgICAgY2FzZSAnR2VvbWV0cnlDb2xsZWN0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuZ2VvbWV0cmllcy5yZWR1Y2UoZnVuY3Rpb24gKGFrLCBsaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhay5wdXNoKERQb2x5Z29uLnBhcnNlKGxpbmUsIGZvcm1hdCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFrO1xuICAgICAgICAgICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKGFcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIERQb2ludC5wYXJzZShyLCBmb3JtYXQpOyB9KSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudG9BcnJheU9mQ29vcmRzID0gZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSB2b2lkIDApIHsgZm9ybWF0ID0gREdlby5wYXJzZUZvcm1hdDsgfVxuICAgICAgICByZXR1cm4gdGhpcy5tYXBBcnJheShmdW5jdGlvbiAocikgeyByZXR1cm4gci50b0Nvb3Jkcyhmb3JtYXQpOyB9KTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS50b0dlb0pTT05GZWF0dXJlID0gZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSB2b2lkIDApIHsgZm9ybWF0ID0gREdlby5wYXJzZUZvcm1hdDsgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICAgICAgcHJvcGVydGllczogX19hc3NpZ24oe30sIHRoaXMucHJvcGVydGllcyksXG4gICAgICAgICAgICBnZW9tZXRyeTogdGhpcy50b0dlb0pTT04oZm9ybWF0KVxuICAgICAgICB9O1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnRvR2VvSlNPTiA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgICAgICAgICBjb29yZGluYXRlczogX19zcHJlYWRBcnJheShbXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9BcnJheU9mQ29vcmRzKGZvcm1hdClcbiAgICAgICAgICAgICAgICBdLCBfX3JlYWQodGhpcy5ob2xlcy5tYXAoZnVuY3Rpb24gKGgpIHsgcmV0dXJuIGgudG9BcnJheU9mQ29vcmRzKGZvcm1hdCk7IH0pKSwgZmFsc2UpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnTGluZVN0cmluZycsXG4gICAgICAgICAgICBjb29yZGluYXRlczogdGhpcy50b0FycmF5T2ZDb29yZHMoZm9ybWF0KVxuICAgICAgICB9O1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmRpdmlkZVRvUGllY2VzID0gZnVuY3Rpb24gKHBpZWNlc0NvdW50LCB3aXRoQWx0aXR1ZGUpIHtcbiAgICAgICAgdmFyIGVfMTQsIF9hO1xuICAgICAgICBpZiAod2l0aEFsdGl0dWRlID09PSB2b2lkIDApIHsgd2l0aEFsdGl0dWRlID0gZmFsc2U7IH1cbiAgICAgICAgdmFyIGZ1bGxMZW5ndGggPSB0aGlzLmZ1bGxMZW5ndGg7XG4gICAgICAgIHZhciBwaWVjZUxlbmd0aCA9IGZ1bGxMZW5ndGggLyBwaWVjZXNDb3VudDtcbiAgICAgICAgdmFyIGN1cnJlbnRQaWVjZUxlbmd0aCA9IHBpZWNlTGVuZ3RoO1xuICAgICAgICB2YXIgX2xvb3BfMyA9IGZ1bmN0aW9uIChwMSwgcDIsIGkpIHtcbiAgICAgICAgICAgIHZhciBkID0gcDEuZGlzdGFuY2UocDIpO1xuICAgICAgICAgICAgaWYgKGQgPT09IGN1cnJlbnRQaWVjZUxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHAyLnByb3BlcnRpZXMucGllY2VCb3JkZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQaWVjZUxlbmd0aCA9IHBpZWNlTGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZCAtIGN1cnJlbnRQaWVjZUxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB2YXIgY2lyY2xlID0gbmV3IERDaXJjbGUocDEsIGN1cnJlbnRQaWVjZUxlbmd0aCk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmVfMSA9IHAxLmZpbmRMaW5lKHAyKTtcbiAgICAgICAgICAgICAgICB2YXIgaW50ZXJzZWN0aW9uUG9pbnQgPSBsaW5lXzEuaW50ZXJzZWN0aW9uV2l0aENpcmNsZShjaXJjbGUpXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHApIHsgcmV0dXJuIGxpbmVfMS5pblJhbmdlKHAsIENMT1NFX1RPX0lOVEVSU0VDVElPTl9ESVNUQU5DRSk7IH0pWzBdO1xuICAgICAgICAgICAgICAgIGludGVyc2VjdGlvblBvaW50LnByb3BlcnRpZXMucGllY2VCb3JkZXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXNfMS5pbnNlcnRBZnRlcihpLCBpbnRlcnNlY3Rpb25Qb2ludCk7XG4gICAgICAgICAgICAgICAgaWYgKHdpdGhBbHRpdHVkZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcDF6ID0gcDEuejtcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJzZWN0aW9uUG9pbnQueiA9IHAxeiAtIChwMXogLSBwMi56KSAqIChwMS5kaXN0YW5jZShpbnRlcnNlY3Rpb25Qb2ludCkgLyBkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudFBpZWNlTGVuZ3RoID0gcGllY2VMZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGllY2VMZW5ndGggLT0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHRoaXNfMSA9IHRoaXM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9kID0gX19yZWFkKF9jLnZhbHVlLCA0KSwgcDEgPSBfZFswXSwgcDIgPSBfZFsxXSwgaSA9IF9kWzNdO1xuICAgICAgICAgICAgICAgIF9sb29wXzMocDEsIHAyLCBpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xNF8xKSB7IGVfMTQgPSB7IGVycm9yOiBlXzE0XzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzE0KSB0aHJvdyBlXzE0LmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUucHJlcGFyZVRvRmFzdFNlYXJjaCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGVfMTUsIF9hO1xuICAgICAgICB0aGlzLnNlYXJjaFN0b3JlID0ge307XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMucG9pbnRzKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfZCA9IF9jLnZhbHVlLCB4ID0gX2QueCwgeSA9IF9kLnksIHogPSBfZC56O1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWFyY2hTdG9yZVt4XSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0b3JlW3hdID0ge307XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWFyY2hTdG9yZVt4XVt5XSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0b3JlW3hdW3ldID0ge307XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU3RvcmVbeF1beV1beiB8fCAndW5kZWZpbmVkJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzE1XzEpIHsgZV8xNSA9IHsgZXJyb3I6IGVfMTVfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTUpIHRocm93IGVfMTUuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmZhc3RIYXMgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIHggPSBfYS54LCB5ID0gX2EueSwgeiA9IF9hLno7XG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hTdG9yZVt4XSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hTdG9yZVt4XVt5XSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hTdG9yZVt4XVt5XVt6IHx8ICd1bmRlZmluZWQnXSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaFN0b3JlW3hdW3ldW3ogfHwgJ3VuZGVmaW5lZCddO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJncm93aW5nUGllY2VzR2VuZXJhdG9yXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcG9seWdvbiA9IHRoaXM7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciByLCBfYSwgX2IsIHAsIGVfMTZfMTtcbiAgICAgICAgICAgICAgICB2YXIgZV8xNiwgX2M7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfZCkge1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9kLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5ldyBEUG9seWdvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kLmxhYmVsID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZC50cnlzLnB1c2goWzEsIDYsIDcsIDhdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYSA9IF9fdmFsdWVzKHBvbHlnb24ucFBvaW50cyksIF9iID0gX2EubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kLmxhYmVsID0gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFfYi5kb25lKSByZXR1cm4gWzMsIDVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBfYi52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnB1c2gocCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwLnByb3BlcnRpZXMucGllY2VCb3JkZXIpIHJldHVybiBbMywgNF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0LCByLmNsb25lKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZC5sYWJlbCA9IDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2IgPSBfYS5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszLCAyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTogcmV0dXJuIFszLCA4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlXzE2XzEgPSBfZC5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZV8xNiA9IHsgZXJyb3I6IGVfMTZfMSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgOF07XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9iICYmICFfYi5kb25lICYmIChfYyA9IF9hLnJldHVybikpIF9jLmNhbGwoX2EpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTYpIHRocm93IGVfMTYuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzddO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4OiByZXR1cm4gWzIsIHIuY2xvbmUoKV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2ltcGxlVW5pb24gPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIHJlcyA9IHRoaXMuc2ltcGxlTG9naWNGdW5jdGlvbihwLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChyZXMgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXMgaW5zdGFuY2VvZiBEUG9seWdvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2ltcGxlSW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2ltcGxlTG9naWNGdW5jdGlvbihwLCBmYWxzZSwgZmFsc2UpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpbXBsZURpZmZlcmVuY2UgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zaW1wbGVMb2dpY0Z1bmN0aW9uKHAsIHRydWUsIGZhbHNlKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zbWFydFVuaW9uID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIGVfMTcsIF9hO1xuICAgICAgICB2YXIgcmVzID0gdGhpcy5jbG9uZSgpLnNpbXBsZVVuaW9uKHApO1xuICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICB2YXIgYWxsSG9sZXMgPSBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHRoaXMuaG9sZXMpLCBmYWxzZSksIF9fcmVhZChwLmhvbGVzKSwgZmFsc2UpLCBfX3JlYWQocmVzLmhvbGVzKSwgZmFsc2UpLm1hcChmdW5jdGlvbiAoaCkgeyByZXR1cm4gaC5jbG9uZSgpOyB9KTtcbiAgICAgICAgICAgIHZhciBfbG9vcF80ID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICB2YXIgZV8xOCwgX2I7XG4gICAgICAgICAgICAgICAgdmFyIF9sb29wXzUgPSBmdW5jdGlvbiAoYikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYS5lcXVhbChiKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiY29udGludWVcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgciA9IGEuc2ltcGxlVW5pb24oYik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxIb2xlcyA9IGFsbEhvbGVzLmZpbHRlcihmdW5jdGlvbiAodikgeyByZXR1cm4gIXYuZXF1YWwoYSkgJiYgIXYuZXF1YWwoYik7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWxsSG9sZXMucHVzaChyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYWxsSG9sZXNfMiA9IChlXzE4ID0gdm9pZCAwLCBfX3ZhbHVlcyhhbGxIb2xlcykpLCBhbGxIb2xlc18yXzEgPSBhbGxIb2xlc18yLm5leHQoKTsgIWFsbEhvbGVzXzJfMS5kb25lOyBhbGxIb2xlc18yXzEgPSBhbGxIb2xlc18yLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBhbGxIb2xlc18yXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBfbG9vcF81KGIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlXzE4XzEpIHsgZV8xOCA9IHsgZXJyb3I6IGVfMThfMSB9OyB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxsSG9sZXNfMl8xICYmICFhbGxIb2xlc18yXzEuZG9uZSAmJiAoX2IgPSBhbGxIb2xlc18yLnJldHVybikpIF9iLmNhbGwoYWxsSG9sZXNfMik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzE4KSB0aHJvdyBlXzE4LmVycm9yOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgYWxsSG9sZXNfMSA9IF9fdmFsdWVzKGFsbEhvbGVzKSwgYWxsSG9sZXNfMV8xID0gYWxsSG9sZXNfMS5uZXh0KCk7ICFhbGxIb2xlc18xXzEuZG9uZTsgYWxsSG9sZXNfMV8xID0gYWxsSG9sZXNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBhbGxIb2xlc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIF9sb29wXzQoYSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfMTdfMSkgeyBlXzE3ID0geyBlcnJvcjogZV8xN18xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhbGxIb2xlc18xXzEgJiYgIWFsbEhvbGVzXzFfMS5kb25lICYmIChfYSA9IGFsbEhvbGVzXzEucmV0dXJuKSkgX2EuY2FsbChhbGxIb2xlc18xKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzE3KSB0aHJvdyBlXzE3LmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXMuaG9sZXMgPSBhbGxIb2xlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnRvVHJpYW5nbGVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcSA9IHRoaXMuY2xvbmUoKS5yZW1vdmVEdXBsaWNhdGVzKClcbiAgICAgICAgICAgIC5vcGVuKCk7XG4gICAgICAgIGlmIChxLmxlbmd0aCA8IDMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocS5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgIHJldHVybiBbcV07XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGlubmVyQW5kTm90SW50ZXJzZWN0ID0gZnVuY3Rpb24gKHBvbHksIHAxLCBwMikge1xuICAgICAgICAgICAgdmFyIGwgPSBwMS5maW5kTGluZShwMik7XG4gICAgICAgICAgICB2YXIgY2VudGVyID0gbC5jZW50ZXI7XG4gICAgICAgICAgICB2YXIgaW50ZXJzZWN0aW9ucyA9IHBvbHkuaG9sZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBob2xlKSB7IHJldHVybiBhICYmIEJvb2xlYW4oaG9sZS5jbG9uZSgpLmNsb3NlKClcbiAgICAgICAgICAgICAgICAuaW50ZXJzZWN0aW9uKGwsIHRydWUpLmxlbmd0aCk7IH0sIEJvb2xlYW4ocG9seS5jbG9uZSgpLmNsb3NlKClcbiAgICAgICAgICAgICAgICAuaW50ZXJzZWN0aW9uKGwsIHRydWUpLmxlbmd0aCkpO1xuICAgICAgICAgICAgdmFyIGNvbnRhaW4gPSBwb2x5LmhvbGVzLnJlZHVjZShmdW5jdGlvbiAoYSwgaG9sZSkgeyByZXR1cm4gYSAmJiAhaG9sZVxuICAgICAgICAgICAgICAgIC5jb250YWluKGNlbnRlcik7IH0sIHBvbHkuY29udGFpbihjZW50ZXIpKTtcbiAgICAgICAgICAgIHJldHVybiAhaW50ZXJzZWN0aW9ucyAmJiBjb250YWluO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZ2V0VHJpYW5nbGUgPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2x5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHAwID0gcG9seS5hdCgwKTtcbiAgICAgICAgICAgICAgICB2YXIgcDEgPSBwb2x5LmF0KDEpO1xuICAgICAgICAgICAgICAgIHZhciBwMiA9IHBvbHkuYXQoMik7XG4gICAgICAgICAgICAgICAgaWYgKGlubmVyQW5kTm90SW50ZXJzZWN0KHBvbHksIHAwLCBwMikpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9seS5yZW1vdmVQYXJ0KDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAwLmNsb25lKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBwMS5jbG9uZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcDIuY2xvbmUoKVxuICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcG9seS5wdXNoKHBvbHkuc2hpZnQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcCA9IHRoaXMuY2xvbmUoKS5yZW1vdmVEdXBsaWNhdGVzKCkuY2xvY2tXaXNlLm9wZW4oKTtcbiAgICAgICAgd2hpbGUgKHAuaG9sZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB2YXIgaCA9IHAuaG9sZXMuc2hpZnQoKVxuICAgICAgICAgICAgICAgIC5jbG9uZSgpXG4gICAgICAgICAgICAgICAgLmNsb2NrV2lzZVxuICAgICAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgICAgICAuY2xvc2UoKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpbm5lckFuZE5vdEludGVyc2VjdChwLCBwLmZpcnN0LCBoLmZpcnN0KSkge1xuICAgICAgICAgICAgICAgICAgICBwLmluc2VydEFmdGVyLmFwcGx5KHAsIF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbMF0sIF9fcmVhZChoLnBvaW50cyksIGZhbHNlKSwgW3AuZmlyc3RdLCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcC5wdXNoKHAuc2hpZnQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlcyA9IFtdO1xuICAgICAgICB3aGlsZSAocC5sZW5ndGggPiAzKSB7XG4gICAgICAgICAgICB2YXIgdHJpYW5nbGUgPSBnZXRUcmlhbmdsZShwKTtcbiAgICAgICAgICAgIGlmICh0cmlhbmdsZSkge1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKHRyaWFuZ2xlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXMucHVzaChwKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5nZXRUcmlhbmdsZXNQb2ludEluZGV4ZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBpbm5lckFuZE5vdEludGVyc2VjdCA9IGZ1bmN0aW9uIChwb2x5LCBwMSwgcDIpIHtcbiAgICAgICAgICAgIHZhciBsID0gcDEuZmluZExpbmUocDIpO1xuICAgICAgICAgICAgdmFyIGNlbnRlciA9IGwuY2VudGVyO1xuICAgICAgICAgICAgdmFyIGludGVyc2VjdGlvbnMgPSBwb2x5LmhvbGVzLnJlZHVjZShmdW5jdGlvbiAoYSwgaG9sZSkgeyByZXR1cm4gYSAmJiBCb29sZWFuKGhvbGUuY2xvbmUoKS5jbG9zZSgpXG4gICAgICAgICAgICAgICAgLmludGVyc2VjdGlvbihsLCB0cnVlKS5sZW5ndGgpOyB9LCBCb29sZWFuKHBvbHkuY2xvbmUoKS5jbG9zZSgpXG4gICAgICAgICAgICAgICAgLmludGVyc2VjdGlvbihsLCB0cnVlKS5sZW5ndGgpKTtcbiAgICAgICAgICAgIHZhciBjb250YWluID0gcG9seS5ob2xlcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIGhvbGUpIHsgcmV0dXJuIGEgJiYgIWhvbGVcbiAgICAgICAgICAgICAgICAuY29udGFpbihjZW50ZXIpOyB9LCBwb2x5LmNvbnRhaW4oY2VudGVyKSk7XG4gICAgICAgICAgICByZXR1cm4gIWludGVyc2VjdGlvbnMgJiYgY29udGFpbjtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIGdldFRyaWFuZ2xlID0gZnVuY3Rpb24gKHBvbHkpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9seS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBwMCA9IHBvbHkuYXQoMCk7XG4gICAgICAgICAgICAgICAgdmFyIHAxID0gcG9seS5hdCgxKTtcbiAgICAgICAgICAgICAgICB2YXIgcDIgPSBwb2x5LmF0KDIpO1xuICAgICAgICAgICAgICAgIGlmIChpbm5lckFuZE5vdEludGVyc2VjdChwb2x5LCBwMCwgcDIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvbHkucmVtb3ZlUGFydCgwLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAwLnByb3BlcnRpZXMuaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBwMS5wcm9wZXJ0aWVzLmluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgcDIucHJvcGVydGllcy5pbmRleFxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwb2x5LnB1c2gocG9seS5zaGlmdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH07XG4gICAgICAgIHZhciBwID0gdGhpcy5jbG9uZSgpO1xuICAgICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgICBwLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChmKSB7XG4gICAgICAgICAgICBmLnByb3BlcnRpZXMuaW5kZXggPSBpbmRleCsrO1xuICAgICAgICB9KTtcbiAgICAgICAgcC5ob2xlcy5mb3JFYWNoKGZ1bmN0aW9uIChoKSB7XG4gICAgICAgICAgICBoLnBQb2ludHMuZm9yRWFjaChmdW5jdGlvbiAoZikge1xuICAgICAgICAgICAgICAgIGYucHJvcGVydGllcy5pbmRleCA9IGluZGV4Kys7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHAgPSBwLmNsb2NrV2lzZS5vcGVuKCk7XG4gICAgICAgIHdoaWxlIChwLmhvbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdmFyIGggPSBwLmhvbGVzLnNoaWZ0KClcbiAgICAgICAgICAgICAgICAuY2xvbmUoKVxuICAgICAgICAgICAgICAgIC5jbG9ja1dpc2VcbiAgICAgICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgLmNsb3NlKCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5uZXJBbmROb3RJbnRlcnNlY3QocCwgcC5maXJzdCwgaC5maXJzdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcC5pbnNlcnRBZnRlci5hcHBseShwLCBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoWzBdLCBfX3JlYWQoaC5wb2ludHMpLCBmYWxzZSksIFtwLmZpcnN0XSwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHAucHVzaChwLnNoaWZ0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciByZXMgPSBbXTtcbiAgICAgICAgd2hpbGUgKHAubGVuZ3RoID4gMykge1xuICAgICAgICAgICAgdmFyIHRyaWFuZ2xlID0gZ2V0VHJpYW5nbGUocCk7XG4gICAgICAgICAgICBpZiAodHJpYW5nbGUpIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaC5hcHBseShyZXMsIF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZCh0cmlhbmdsZSksIGZhbHNlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnB1c2guYXBwbHkocmVzLCBfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQocC5wb2ludHMubWFwKGZ1bmN0aW9uIChmKSB7IHJldHVybiBmLnByb3BlcnRpZXMuaW5kZXg7IH0pKSwgZmFsc2UpKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiY2xvc2VkXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maXJzdC5lcXVhbCh0aGlzLmxhc3QpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmJ1ZmZlciA9IGZ1bmN0aW9uICh2LCBxdWFkcmFudFNlZ21lbnRzLCB0eXBlKSB7XG4gICAgICAgIGlmIChxdWFkcmFudFNlZ21lbnRzID09PSB2b2lkIDApIHsgcXVhZHJhbnRTZWdtZW50cyA9IDY0OyB9XG4gICAgICAgIGlmICh0eXBlID09PSB2b2lkIDApIHsgdHlwZSA9IERQb2x5Z29uLkNBUF9ST1VORDsgfVxuICAgICAgICB2YXIgcmVhZGVyID0gbmV3IGpzdHNJby5XS1RSZWFkZXIoKTtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgbm9Ib2xlcyA9IF9hLm5vSG9sZXMsIGNsb3NlZCA9IF9hLmNsb3NlZDtcbiAgICAgICAgdmFyIHBvaW50cyA9IHJlYWRlclxuICAgICAgICAgICAgLnJlYWQobm9Ib2xlcy50b1dLVChjbG9zZWQgPyBEUG9seWdvbi5XS1RfUE9MWUdPTiA6IERQb2x5Z29uLldLVF9MSU5FU1RSSU5HKSlcbiAgICAgICAgICAgIC5idWZmZXIodiwgcXVhZHJhbnRTZWdtZW50cywgdHlwZSlcbiAgICAgICAgICAgIC5nZXRDb29yZGluYXRlcygpO1xuICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKHBvaW50cy5tYXAoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICB2YXIgeCA9IF9hLngsIHkgPSBfYS55O1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoeCwgeSk7XG4gICAgICAgIH0pKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zaWRlQnVmZmVycyA9IGZ1bmN0aW9uICh2LCBxdWFkcmFudFNlZ21lbnRzKSB7XG4gICAgICAgIGlmIChxdWFkcmFudFNlZ21lbnRzID09PSB2b2lkIDApIHsgcXVhZHJhbnRTZWdtZW50cyA9IDY0OyB9XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIGZpcnN0ID0gX2EuZmlyc3QsIGxhc3QgPSBfYS5sYXN0O1xuICAgICAgICB2YXIgYnVmZmVyID0gdGhpcy5idWZmZXIodiwgcXVhZHJhbnRTZWdtZW50cywgRFBvbHlnb24uQ0FQX0ZMQVQpLm9wZW4oKTtcbiAgICAgICAgdmFyIF9iID0gX19yZWFkKGZpcnN0LnNvcnRCeURpc3RhbmNlKGJ1ZmZlcikucG9pbnRzLm1hcChmdW5jdGlvbiAocikgeyByZXR1cm4gci5wcm9wZXJ0aWVzLmluZGV4OyB9KSwgMiksIHN0YXJ0MCA9IF9iWzBdLCBzdGFydDEgPSBfYlsxXTtcbiAgICAgICAgdmFyIF9jID0gX19yZWFkKGxhc3Quc29ydEJ5RGlzdGFuY2UoYnVmZmVyKS5wb2ludHMubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiByLnByb3BlcnRpZXMuaW5kZXg7IH0pLCAyKSwgZW5kMCA9IF9jWzBdLCBlbmQxID0gX2NbMV07XG4gICAgICAgIHZhciBmcm9tUG9pbnQgPSBNYXRoLm1pbihNYXRoLm1heChzdGFydDAsIHN0YXJ0MSksIE1hdGgubWF4KGVuZDAsIGVuZDEpKTtcbiAgICAgICAgdmFyIHRvUG9pbnQgPSBNYXRoLm1heChNYXRoLm1pbihzdGFydDAsIHN0YXJ0MSksIE1hdGgubWluKGVuZDAsIGVuZDEpKTtcbiAgICAgICAgdmFyIGxpbmVQYXJ0ID0gbmV3IERQb2x5Z29uKGJ1ZmZlci5yZW1vdmVQYXJ0KGZyb21Qb2ludCAtIDEsIHRvUG9pbnQgLSBmcm9tUG9pbnQgKyAxKSk7XG4gICAgICAgIGJ1ZmZlci51bnNoaWZ0KGJ1ZmZlci5wb3AoKSk7XG4gICAgICAgIHJldHVybiBbbGluZVBhcnQucmV2ZXJzZSgpLCBidWZmZXJdO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNldFByb3BlcnRpZXMgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB0aGlzLnByb3BlcnRpZXMgPSB0eXBlb2YgdiA9PT0gJ29iamVjdCcgPyB2IDogdih0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuYmV6aWVyID0gZnVuY3Rpb24gKHN0ZXApIHtcbiAgICAgICAgaWYgKHN0ZXAgPT09IHZvaWQgMCkgeyBzdGVwID0gMC4xOyB9XG4gICAgICAgIHZhciByZXMgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxOyBpICs9IHN0ZXApIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKHRoaXMuY2xvbmUoKS5nZXRCZXppZXJQb2ludChpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zZXRHcm93aW5nSGVpZ2h0ID0gZnVuY3Rpb24gKGZyb20sIHRvKSB7XG4gICAgICAgIHZhciBmdWxsTGVuZ3RoID0gdGhpcy5mdWxsTGVuZ3RoO1xuICAgICAgICB2YXIgcHJldlBvaW50ID0gdGhpcy5maXJzdDtcbiAgICAgICAgdmFyIGQgPSB0byAtIGZyb207XG4gICAgICAgIHZhciBjdXJyZW50RGlzdGFuY2UgPSAwO1xuICAgICAgICB0aGlzLmxvb3AoKVxuICAgICAgICAgICAgLnNldFooZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICAgIGN1cnJlbnREaXN0YW5jZSArPSBwcmV2UG9pbnQuZGlzdGFuY2UocCk7XG4gICAgICAgICAgICBwcmV2UG9pbnQgPSBwO1xuICAgICAgICAgICAgcmV0dXJuIGZyb20gKyBjdXJyZW50RGlzdGFuY2UgLyBmdWxsTGVuZ3RoICogZDtcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5ydW4oKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUubG9vcFBvaW50c0dlbmVyYXRvciA9IGZ1bmN0aW9uICh3aXRoTGluZSkge1xuICAgICAgICBpZiAod2l0aExpbmUgPT09IHZvaWQgMCkgeyB3aXRoTGluZSA9IGZhbHNlOyB9XG4gICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBpLCBwMSwgcDI7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBpID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLmxhYmVsID0gMTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSA8IHRoYXQubGVuZ3RoIC0gMSkpIHJldHVybiBbMywgNF07XG4gICAgICAgICAgICAgICAgICAgICAgICBwMSA9IHRoYXQuYXQoaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwMiA9IHRoYXQuYXQoaSArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0LCBbcDEsIHAyLCB3aXRoTGluZSA/IHAxLmZpbmRMaW5lKHAyKSA6IHVuZGVmaW5lZCwgaV1dO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5sYWJlbCA9IDM7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgMV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIFsyXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5nZXRCZXppZXJQb2ludCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBlXzE5LCBfYTtcbiAgICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maXJzdDtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLmxvb3BQb2ludHNHZW5lcmF0b3IoKSgpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMiksIHAxID0gX2RbMF0sIHAyID0gX2RbMV07XG4gICAgICAgICAgICAgICAgcDEubW92ZShwMi5jbG9uZSgpLm1vdmUocDEuY2xvbmUoKS5taW51cygpKVxuICAgICAgICAgICAgICAgICAgICAuc2NhbGUodikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzE5XzEpIHsgZV8xOSA9IHsgZXJyb3I6IGVfMTlfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTkpIHRocm93IGVfMTkuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCZXppZXJQb2ludCh2KTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zaW1wbGVJbmNsdWRlWCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciB4ID0gcC54O1xuICAgICAgICByZXR1cm4gdGhpcy5taW5YIDw9IHggJiYgdGhpcy5tYXhYID49IHg7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2ltcGxlSW5jbHVkZVkgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgeSA9IHAueTtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluWSA8PSB5ICYmIHRoaXMubWF4WSA+PSB5O1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmRvdWdsYXNQZXVja2VyID0gZnVuY3Rpb24gKHBvaW50cywgZSkge1xuICAgICAgICB2YXIgZE1heCA9IDA7XG4gICAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICAgIHZhciBlbmQgPSBwb2ludHMubGVuZ3RoIC0gMTtcbiAgICAgICAgdmFyIGxpbmUgPSBwb2ludHNbMF0uZmluZExpbmUocG9pbnRzW2VuZF0pO1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGVuZDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgZCA9IGxpbmUucGVycGVuZGljdWxhckRpc3RhbmNlKHBvaW50c1tpXSk7XG4gICAgICAgICAgICBpZiAoZCA+IGRNYXgpIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgZE1heCA9IGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRNYXggPj0gZSkge1xuICAgICAgICAgICAgdmFyIHJlY1Jlc3VsdDEgPSB0aGlzLmRvdWdsYXNQZXVja2VyKHBvaW50cy5zbGljZSgwLCBpbmRleCArIDEpLCBlKTtcbiAgICAgICAgICAgIHZhciByZWNSZXN1bHQyID0gdGhpcy5kb3VnbGFzUGV1Y2tlcihwb2ludHMuc2xpY2UoaW5kZXgpLCBlKTtcbiAgICAgICAgICAgIHJlY1Jlc3VsdDEucG9wKCk7XG4gICAgICAgICAgICByZXR1cm4gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQocmVjUmVzdWx0MSksIGZhbHNlKSwgX19yZWFkKHJlY1Jlc3VsdDIpLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtwb2ludHNbMF0sIHBvaW50c1tlbmRdXTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5nb0J5UGF0aCA9IGZ1bmN0aW9uIChjdHgsIHN0ZXBzKSB7XG4gICAgICAgIGlmIChzdGVwcyA9PT0gdm9pZCAwKSB7IHN0ZXBzID0gdGhpcy5sZW5ndGggLSAxOyB9XG4gICAgICAgIHZhciBzdGFydCA9IHRoaXMuZmlyc3Q7XG4gICAgICAgIGN0eC5tb3ZlVG8oc3RhcnQueCwgc3RhcnQueSk7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IChzdGVwcyAlIHRoaXMubGVuZ3RoKTsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLmF0KGkpLCB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgICAgICBjdHgubGluZVRvKHgsIHkpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZ2V0SlNUU0dlb21ldHJ5ID0gZnVuY3Rpb24gKHAsIHVuaW9uVGhpcywgdW5pb25UaGF0KSB7XG4gICAgICAgIHZhciB1bmlvbk9ySW50ZXJzZWN0aW9uID0gdW5pb25UaGF0ID09PSB1bmlvblRoaXM7XG4gICAgICAgIHZhciByZWFkZXIgPSBuZXcganN0c0lvLldLVFJlYWRlcigpO1xuICAgICAgICB2YXIgYSA9IHJlYWRlci5yZWFkKHRoaXMubm9Ib2xlcy50b1dLVCgpKTtcbiAgICAgICAgdmFyIGIgPSByZWFkZXIucmVhZChwLm5vSG9sZXMudG9XS1QoKSk7XG4gICAgICAgIGlmICghdW5pb25PckludGVyc2VjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGEuZGlmZmVyZW5jZShiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh1bmlvblRoaXMpIHtcbiAgICAgICAgICAgIHJldHVybiBhLnVuaW9uKGIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCF1bmlvblRoaXMpIHtcbiAgICAgICAgICAgIHJldHVybiBhLmludGVyc2VjdGlvbihiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpbXBsZUxvZ2ljRnVuY3Rpb24gPSBmdW5jdGlvbiAocCwgdW5pb25UaGlzLCB1bmlvblRoYXQpIHtcbiAgICAgICAgdmFyIGVfMjAsIF9hLCBlXzIxLCBfYiwgZV8yMiwgX2MsIGVfMjMsIF9kO1xuICAgICAgICB2YXIgYyA9IHRoaXMuZ2V0SlNUU0dlb21ldHJ5KHAsIHVuaW9uVGhpcywgdW5pb25UaGF0KTtcbiAgICAgICAgaWYgKGMpIHtcbiAgICAgICAgICAgIHZhciBjb29yZGluYXRlc18xID0gYy5nZXRDb29yZGluYXRlcygpO1xuICAgICAgICAgICAgaWYgKGNvb3JkaW5hdGVzXzEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGNvb3JkaW5hdGVzXzEucmVkdWNlKGZ1bmN0aW9uIChhaywgX2EsIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsYXN0SW5kZXggPSBhay5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG5ldyBEUG9pbnQoeCwgeSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmaXJzdCA9IGFrW2xhc3RJbmRleF0uZmlyc3Q7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0LmVxdWFsKGZpcnN0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvb3JkaW5hdGVzXzFbaW5kZXggKyAxXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXh0UG9pbnQgPSBuZXcgRFBvaW50KGNvb3JkaW5hdGVzXzFbaW5kZXggKyAxXS54LCBjb29yZGluYXRlc18xW2luZGV4ICsgMV0ueSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFrW2xhc3RJbmRleF0ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhay5wdXNoKG5ldyBEUG9seWdvbihbbmV4dFBvaW50XSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFrW2xhc3RJbmRleF0ucHVzaCh0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWs7XG4gICAgICAgICAgICAgICAgfSwgW25ldyBEUG9seWdvbihbbmV3IERQb2ludChjb29yZGluYXRlc18xWzBdLngsIGNvb3JkaW5hdGVzXzFbMF0ueSldKV0pO1xuICAgICAgICAgICAgICAgIGlmICh1bmlvblRoYXQgJiYgdW5pb25UaGlzICYmIHJlc3VsdC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByZXN1bHRfMSA9IF9fdmFsdWVzKHJlc3VsdCksIHJlc3VsdF8xXzEgPSByZXN1bHRfMS5uZXh0KCk7ICFyZXN1bHRfMV8xLmRvbmU7IHJlc3VsdF8xXzEgPSByZXN1bHRfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcSA9IHJlc3VsdF8xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9sb29wXzYgPSBmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxLmhhcyhyLmZpcnN0KSAmJiAhcS5lcXVhbChyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gcS5maW5kSW5kZXgoci5maXJzdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX2UgPSBxLnBvaW50cykuc3BsaWNlLmFwcGx5KF9lLCBfX3NwcmVhZEFycmF5KFtpbmRleCwgMF0sIF9fcmVhZChyLnBvaW50cyksIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKGZ1bmN0aW9uIChoKSB7IHJldHVybiAhaC5lcXVhbChyKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcmVzdWx0XzIgPSAoZV8yMSA9IHZvaWQgMCwgX192YWx1ZXMocmVzdWx0KSksIHJlc3VsdF8yXzEgPSByZXN1bHRfMi5uZXh0KCk7ICFyZXN1bHRfMl8xLmRvbmU7IHJlc3VsdF8yXzEgPSByZXN1bHRfMi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gcmVzdWx0XzJfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZV8xID0gX2xvb3BfNihyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZV8xID09PSBcImJyZWFrXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVfMjFfMSkgeyBlXzIxID0geyBlcnJvcjogZV8yMV8xIH07IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRfMl8xICYmICFyZXN1bHRfMl8xLmRvbmUgJiYgKF9iID0gcmVzdWx0XzIucmV0dXJuKSkgX2IuY2FsbChyZXN1bHRfMik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIxKSB0aHJvdyBlXzIxLmVycm9yOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVfMjBfMSkgeyBlXzIwID0geyBlcnJvcjogZV8yMF8xIH07IH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRfMV8xICYmICFyZXN1bHRfMV8xLmRvbmUgJiYgKF9hID0gcmVzdWx0XzEucmV0dXJuKSkgX2EuY2FsbChyZXN1bHRfMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMjApIHRocm93IGVfMjAuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLmxlbmd0aCA+IDI7IH0pLm1hcChmdW5jdGlvbiAoaCkgeyByZXR1cm4gaC5jbG9zZSgpOyB9KTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByZXN1bHRfMyA9IF9fdmFsdWVzKHJlc3VsdCksIHJlc3VsdF8zXzEgPSByZXN1bHRfMy5uZXh0KCk7ICFyZXN1bHRfM18xLmRvbmU7IHJlc3VsdF8zXzEgPSByZXN1bHRfMy5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxID0gcmVzdWx0XzNfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfbG9vcF83ID0gZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFxLmVxdWFsKHIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxLmNvbnRhaW4oci5maXJzdCwgdHJ1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHEuaG9sZXMucHVzaChyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoZnVuY3Rpb24gKGgpIHsgcmV0dXJuICFoLmVxdWFsKHIpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHJlc3VsdF80ID0gKGVfMjMgPSB2b2lkIDAsIF9fdmFsdWVzKHJlc3VsdCkpLCByZXN1bHRfNF8xID0gcmVzdWx0XzQubmV4dCgpOyAhcmVzdWx0XzRfMS5kb25lOyByZXN1bHRfNF8xID0gcmVzdWx0XzQubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gcmVzdWx0XzRfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlXzIgPSBfbG9vcF83KHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVfMiA9PT0gXCJicmVha1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVfMjNfMSkgeyBlXzIzID0geyBlcnJvcjogZV8yM18xIH07IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRfNF8xICYmICFyZXN1bHRfNF8xLmRvbmUgJiYgKF9kID0gcmVzdWx0XzQucmV0dXJuKSkgX2QuY2FsbChyZXN1bHRfNCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yMykgdGhyb3cgZV8yMy5lcnJvcjsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVfMjJfMSkgeyBlXzIyID0geyBlcnJvcjogZV8yMl8xIH07IH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRfM18xICYmICFyZXN1bHRfM18xLmRvbmUgJiYgKF9jID0gcmVzdWx0XzMucmV0dXJuKSkgX2MuY2FsbChyZXN1bHRfMyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIyKSB0aHJvdyBlXzIyLmVycm9yOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0WzBdLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQubWFwKGZ1bmN0aW9uIChnKSB7IHJldHVybiBnLmNsb3NlKCk7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgRFBvbHlnb24uQ0FQX1JPVU5EID0gQ0FQX1JPVU5EO1xuICAgIERQb2x5Z29uLkNBUF9GTEFUID0gQ0FQX0ZMQVQ7XG4gICAgRFBvbHlnb24uQ0FQX1NRVUFSRSA9IENBUF9TUVVBUkU7XG4gICAgRFBvbHlnb24uV0tUX0xJTkVTVFJJTkcgPSAnTElORVNUUklORyc7XG4gICAgRFBvbHlnb24uV0tUX1BPTFlHT04gPSAnUE9MWUdPTic7XG4gICAgcmV0dXJuIERQb2x5Z29uO1xufSgpKTtcbmV4cG9ydCB7IERQb2x5Z29uIH07XG4iLCJpbXBvcnQgeyBEUG9pbnQgfSBmcm9tICcuL0RQb2ludCc7XG5pbXBvcnQgeyBjaGVja0Z1bmN0aW9uIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBETnVtYmVycyB9IGZyb20gJy4vRE51bWJlcnMnO1xuaW1wb3J0IHsgRFBvbHlnb24gfSBmcm9tICcuL0RQb2x5Z29uJztcbnZhciBETGluZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRExpbmUoYSwgYiwgYywgYmVnaW4sIGVuZCkge1xuICAgICAgICBpZiAoYmVnaW4gPT09IHZvaWQgMCkgeyBiZWdpbiA9IERQb2ludC56ZXJvKCk7IH1cbiAgICAgICAgaWYgKGVuZCA9PT0gdm9pZCAwKSB7IGVuZCA9IERQb2ludC56ZXJvKCk7IH1cbiAgICAgICAgdGhpcy5hID0gYTtcbiAgICAgICAgdGhpcy5iID0gYjtcbiAgICAgICAgdGhpcy5jID0gYztcbiAgICAgICAgdGhpcy5iZWdpbiA9IGJlZ2luO1xuICAgICAgICB0aGlzLmVuZCA9IGVuZDtcbiAgICB9XG4gICAgRExpbmUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IERMaW5lKHRoaXMuYSwgdGhpcy5iLCB0aGlzLmMsIHRoaXMuYmVnaW4uY2xvbmUoKSwgdGhpcy5lbmQuY2xvbmUoKSk7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuZmluZFBlcnBlbmRpY3VsYXIgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdmaW5kUGVycGVuZGljdWxhcicpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcy5iZWdpbicpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5iZWdpbilcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzLmVuZCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5lbmQpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnMocCk7XG4gICAgICAgIHJldHVybiBuZXcgRExpbmUoLXRoaXMuYiwgdGhpcy5hLCB0aGlzLmIgKiBwLnggLSB0aGlzLmEgKiBwLnkpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLnBlcnBlbmRpY3VsYXJEaXN0YW5jZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ3BlcnBlbmRpY3VsYXJEaXN0YW5jZScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcy5iZWdpbicpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5iZWdpbilcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzLmVuZCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5lbmQpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnMocCk7XG4gICAgICAgIHZhciBwZXJwZW5kaWN1bGFyTGluZSA9IHRoaXMuZmluZFBlcnBlbmRpY3VsYXIocCk7XG4gICAgICAgIHZhciB0YXJnZXRQb2ludCA9IHBlcnBlbmRpY3VsYXJMaW5lLmZpbmRQb2ludCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRhcmdldFBvaW50LmRpc3RhbmNlKHApO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChsLCBkLCBpbmNsdWRlT25seSkge1xuICAgICAgICBpZiAoZCA9PT0gdm9pZCAwKSB7IGQgPSAwOyB9XG4gICAgICAgIGlmIChpbmNsdWRlT25seSA9PT0gdm9pZCAwKSB7IGluY2x1ZGVPbmx5ID0gZmFsc2U7IH1cbiAgICAgICAgdmFyIHAgPSB0aGlzLmZpbmRQb2ludChsKTtcbiAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAgIGlmIChpbmNsdWRlT25seSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluc2lkZVJhbmdlKHAsIGQpICYmIGwuaW5zaWRlUmFuZ2UocCwgZCkgPyBwIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluUmFuZ2UocCwgZCkgJiYgbC5pblJhbmdlKHAsIGQpID8gcCA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuaW50ZXJzZWN0aW9uV2l0aENpcmNsZSA9IGZ1bmN0aW9uIChjaXJjbGUpIHtcbiAgICAgICAgdmFyIGNlbnRlciA9IGNpcmNsZS5jZW50ZXIsIHIgPSBjaXJjbGUucjtcbiAgICAgICAgdmFyIHBlciA9IHRoaXMuZmluZFBlcnBlbmRpY3VsYXIoY2VudGVyKTtcbiAgICAgICAgdmFyIHQgPSB0aGlzLmZpbmRQb2ludChwZXIpO1xuICAgICAgICB2YXIgZGlzdGFuY2UgPSB0LmRpc3RhbmNlKGNlbnRlcik7XG4gICAgICAgIGlmICh0aGlzLmJlZ2luLmVxdWFsKGNlbnRlcikpIHtcbiAgICAgICAgICAgIGRpc3RhbmNlID0gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5lbmQuZXF1YWwoY2VudGVyKSkge1xuICAgICAgICAgICAgZGlzdGFuY2UgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaXN0YW5jZSA8IHIpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGEgPSBfYS5hLCBiID0gX2EuYiwgYyA9IF9hLmM7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGN0ID0gY2VudGVyLmRpc3RhbmNlKHQpO1xuICAgICAgICAgICAgICAgIHZhciBtb3ZlID0gTWF0aC5zcXJ0KHIgKiByIC0gY3QgKiBjdCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFkpIHtcbiAgICAgICAgICAgICAgICAgICAgdC54ID0gdGhpcy5iZWdpbi54O1xuICAgICAgICAgICAgICAgICAgICB2YXIgcjFfMSA9IHQuY2xvbmUoKS5tb3ZlKDAsIC1tb3ZlKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHIyXzEgPSB0LmNsb25lKCkubW92ZSgwLCBtb3ZlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtyMV8xLCByMl8xXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFgpIHtcbiAgICAgICAgICAgICAgICAgICAgdC55ID0gdGhpcy5iZWdpbi55O1xuICAgICAgICAgICAgICAgICAgICB2YXIgcjFfMiA9IHQuY2xvbmUoKS5tb3ZlKG1vdmUsIDApO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcjJfMiA9IHQuY2xvbmUoKS5tb3ZlKC1tb3ZlLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtyMV8yLCByMl8yXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5iZWdpbi5saWtlKGNlbnRlcikpIHtcbiAgICAgICAgICAgICAgICB2YXIgcCA9IHRoaXMuYmVnaW4uY2xvbmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMubW92ZVBvaW50KHAsIHIpLCB0aGlzLm1vdmVQb2ludChwLCAtcildO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuZW5kLmxpa2UoY2VudGVyKSkge1xuICAgICAgICAgICAgICAgIHZhciBwID0gdGhpcy5lbmQuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMubW92ZVBvaW50KHAsIHIpLCB0aGlzLm1vdmVQb2ludChwLCAtcildO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHMgPSBhICogYSArIGIgKiBiO1xuICAgICAgICAgICAgdmFyIGQgPSByICogciAtIGMgKiBjIC8gcztcbiAgICAgICAgICAgIHZhciBtdWx0ID0gTWF0aC5zcXJ0KGQgLyBzKTtcbiAgICAgICAgICAgIHZhciByMSA9IHQuY2xvbmUoKS5tb3ZlKGIgKiBtdWx0LCAtYSAqIG11bHQpO1xuICAgICAgICAgICAgdmFyIHIyID0gdC5jbG9uZSgpLm1vdmUoLWIgKiBtdWx0LCBhICogbXVsdCk7XG4gICAgICAgICAgICByZXR1cm4gW3IxLCByMl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRpc3RhbmNlID09PSByKSB7XG4gICAgICAgICAgICByZXR1cm4gdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS5pblJhbmdlID0gZnVuY3Rpb24gKHAsIGQpIHtcbiAgICAgICAgaWYgKGQgPT09IHZvaWQgMCkgeyBkID0gMDsgfVxuICAgICAgICB2YXIgX2EgPSB0aGlzLCBtaW5YID0gX2EubWluWCwgbWluWSA9IF9hLm1pblksIG1heFggPSBfYS5tYXhYLCBtYXhZID0gX2EubWF4WTtcbiAgICAgICAgdmFyIHggPSBwLngsIHkgPSBwLnk7XG4gICAgICAgIHZhciBpc0luWCA9IHggPj0gbWluWCAtIGQgJiYgeCA8PSBtYXhYICsgZDtcbiAgICAgICAgdmFyIGlzSW5ZID0geSA+PSBtaW5ZIC0gZCAmJiB5IDw9IG1heFkgKyBkO1xuICAgICAgICByZXR1cm4gaXNJblggJiYgaXNJblk7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuaW5zaWRlUmFuZ2UgPSBmdW5jdGlvbiAocCwgZCkge1xuICAgICAgICBpZiAoZCA9PT0gdm9pZCAwKSB7IGQgPSAwOyB9XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIGJlZ2luID0gX2EuYmVnaW4sIGVuZCA9IF9hLmVuZDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5SYW5nZShwLCBkKSAmJiAhYmVnaW4ubGlrZShwLCAwLjAwMDAxKSAmJiAhZW5kLmxpa2UocCwgMC4wMDAwMSk7XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcImNlbnRlclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmVnaW5cbiAgICAgICAgICAgICAgICAuY2xvbmUoKVxuICAgICAgICAgICAgICAgIC5zZXRJZkxlc3NUaGFuKHRoaXMuZW5kKVxuICAgICAgICAgICAgICAgIC5tb3ZlKHRoaXMuZW5kXG4gICAgICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgICAgICAubW92ZSh0aGlzLmJlZ2luXG4gICAgICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgICAgICAubWludXMoKSlcbiAgICAgICAgICAgICAgICAuYWJzKClcbiAgICAgICAgICAgICAgICAubWludXMoKVxuICAgICAgICAgICAgICAgIC5kaXZpZGUoMikpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJtaW5YXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5taW4odGhpcy5iZWdpbi54LCB0aGlzLmVuZC54KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwibWluWVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWluKHRoaXMuYmVnaW4ueSwgdGhpcy5lbmQueSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcIm1heFhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLm1heCh0aGlzLmJlZ2luLngsIHRoaXMuZW5kLngpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJtYXhZXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgodGhpcy5iZWdpbi55LCB0aGlzLmVuZC55KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIERMaW5lLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFwiKFwiLmNvbmNhdCh0aGlzLmEsIFwiLCBcIikuY29uY2F0KHRoaXMuYiwgXCIsIFwiKS5jb25jYXQodGhpcy5jLCBcIilcIik7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5hLCB0aGlzLmIsIHRoaXMuY107XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUueCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxZKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCgtdGhpcy5jIC8gdGhpcy5hLCBwLnkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxYKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludChwLngsIC10aGlzLmMgLyB0aGlzLmIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KC10aGlzLmIgLyB0aGlzLmEgKiBwLnkgLSB0aGlzLmMgLyB0aGlzLmEsIHAueSk7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUueSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxZKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCgtdGhpcy5jIC8gdGhpcy5hLCBwLnkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxYKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludChwLngsIC10aGlzLmMgLyB0aGlzLmIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KHAueCwgLXRoaXMuYSAvIHRoaXMuYiAqIHAueCAtIHRoaXMuYyAvIHRoaXMuYik7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuZmluZFBvaW50ID0gZnVuY3Rpb24gKGwpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFkgJiYgbC5pc1BhcmFsbGVsWSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFggJiYgbC5pc1BhcmFsbGVsWCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFggJiYgbC5pc1BhcmFsbGVsWSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoLWwuYyAvIGwuYSwgLXRoaXMuYyAvIHRoaXMuYik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFkgJiYgbC5pc1BhcmFsbGVsWCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoLXRoaXMuYyAvIHRoaXMuYSwgLWwuYyAvIGwuYik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFkpIHtcbiAgICAgICAgICAgIHZhciB4ID0gLXRoaXMuYyAvIHRoaXMuYTtcbiAgICAgICAgICAgIHJldHVybiBsLnkobmV3IERQb2ludCh4KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFgpIHtcbiAgICAgICAgICAgIHZhciB5ID0gLXRoaXMuYyAvIHRoaXMuYjtcbiAgICAgICAgICAgIHJldHVybiBsLngobmV3IERQb2ludCgwLCB5KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGwuaXNQYXJhbGxlbFkpIHtcbiAgICAgICAgICAgIHZhciB4ID0gLWwuYyAvIGwuYTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnkobmV3IERQb2ludCh4KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGwuaXNQYXJhbGxlbFgpIHtcbiAgICAgICAgICAgIHZhciB5ID0gLWwuYyAvIGwuYjtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLngobmV3IERQb2ludCgwLCB5KSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlcyA9IHRoaXMueShuZXcgRFBvaW50KChsLmMgLyBsLmIgLSB0aGlzLmMgLyB0aGlzLmIpIC8gKHRoaXMuYSAvIHRoaXMuYiAtIGwuYSAvIGwuYikpKTtcbiAgICAgICAgaWYgKCFpc0Zpbml0ZShyZXMueCkgJiYgIWlzRmluaXRlKHJlcy55KSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwiaXNQYXJhbGxlbFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNQYXJhbGxlbFggfHwgdGhpcy5pc1BhcmFsbGVsWTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwiaXNQYXJhbGxlbFlcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyh0aGlzLmIpIDwgMC4wMDE7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcImlzUGFyYWxsZWxYXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnModGhpcy5hKSA8IDAuMDAxO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJwb2ludHNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBbdGhpcy5iZWdpbiwgdGhpcy5lbmRdO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgRExpbmUucHJvdG90eXBlLmdldEZpID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdnZXRGaScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcy5iZWdpbicpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5iZWdpbilcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzLmVuZCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5lbmQpO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmVuZC5jbG9uZSgpLm1vdmUodGhpcy5iZWdpbi5jbG9uZSgpLm1pbnVzKCkpLCB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgIHZhciB2ID0gTWF0aC5hdGFuMih5LCB4KSAtIE1hdGguUEk7XG4gICAgICAgIGlmICh2ID4gMCkge1xuICAgICAgICAgICAgdiA9IE1hdGguUEkgLSB2O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoTWF0aC5QSSAtIHYpICUgKE1hdGguUEkgKiAyKTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS50b1dLVCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgX2IgPSBfYS5iZWdpbiwgeDEgPSBfYi54LCB5MSA9IF9iLnksIF9jID0gX2EuZW5kLCB4MiA9IF9jLngsIHkyID0gX2MueTtcbiAgICAgICAgcmV0dXJuIFwiTElORVNUUklORyAoXCIuY29uY2F0KHgxLCBcIiBcIikuY29uY2F0KHkxLCBcIiwgXCIpLmNvbmNhdCh4MiwgXCIgXCIpLmNvbmNhdCh5MiwgXCIpXCIpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLm1vdmVQb2ludCA9IGZ1bmN0aW9uIChpLCBrKSB7XG4gICAgICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShpKTtcbiAgICAgICAgdmFyIHAgPSBpc0FycmF5ID8gaSA6IFtpXTtcbiAgICAgICAgdmFyIGQgPSAoaXNBcnJheSA/IGsgOiBba10pO1xuICAgICAgICB2YXIgZmkgPSB0aGlzLmZpbmRGaShuZXcgRExpbmUoMSwgMCwgMCkpO1xuICAgICAgICB2YXIgdGQgPSB0aGlzLngobmV3IERQb2ludCgxLCAxKSkuZGlzdGFuY2UodGhpcy54KG5ldyBEUG9pbnQoMiwgMikpKSAvIDI7XG4gICAgICAgIHZhciBzaW5Db3MgPSBuZXcgRFBvaW50KE1hdGguc2luKGZpKSwgTWF0aC5jb3MoZmkpKTtcbiAgICAgICAgdmFyIGR0ID0gc2luQ29zLmNsb25lKCkuc2NhbGUodGQpO1xuICAgICAgICB2YXIgcDFUID0gcFswXS5jbG9uZSgpLm1vdmUoZHQuY2xvbmUoKS5taW51cygpKTtcbiAgICAgICAgdmFyIHAyVCA9IHBbMF0uY2xvbmUoKS5tb3ZlKGR0KTtcbiAgICAgICAgdmFyIHJlcyA9IFtdO1xuICAgICAgICBpZiAoRE51bWJlcnMubGlrZSh0aGlzLnkocDFUKS55LCBwMVQueSkgfHwgRE51bWJlcnMubGlrZSh0aGlzLnkocDJUKS55LCBwMlQueSkpIHtcbiAgICAgICAgICAgIHJlcyA9IHAubWFwKGZ1bmN0aW9uICh0LCBpbmRleCkgeyByZXR1cm4gdC5jbG9uZSgpXG4gICAgICAgICAgICAgICAgLm1vdmUoc2luQ29zLmNsb25lKCkuc2NhbGUoZFtpbmRleF0pKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXMgPSBwLm1hcChmdW5jdGlvbiAodCwgaW5kZXgpIHsgcmV0dXJuIHQuY2xvbmUoKVxuICAgICAgICAgICAgICAgIC5tb3ZlKHNpbkNvcy5jbG9uZSgpLnNjYWxlKGRbaW5kZXhdKVxuICAgICAgICAgICAgICAgIC5zZXRYKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHZhciB4ID0gX2EueDtcbiAgICAgICAgICAgICAgICByZXR1cm4gLXg7XG4gICAgICAgICAgICB9KSk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FycmF5ID8gcmVzIDogcmVzWzBdO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmZpbmRGaSA9IGZ1bmN0aW9uIChfYSwgZGVsdGEpIHtcbiAgICAgICAgdmFyIGEgPSBfYS5hLCBiID0gX2EuYjtcbiAgICAgICAgaWYgKGRlbHRhID09PSB2b2lkIDApIHsgZGVsdGEgPSAxLjAwMDE7IH1cbiAgICAgICAgdmFyIF9iID0gdGhpcywgcSA9IF9iLmEsIHcgPSBfYi5iO1xuICAgICAgICB2YXIgdmFsID0gKHEgKiBhICsgdyAqIGIpIC8gKE1hdGguc3FydChxICogcSArIHcgKiB3KSAqIE1hdGguc3FydChhICogYSArIGIgKiBiKSk7XG4gICAgICAgIGlmICh2YWwgPiAxICYmIHZhbCA8IGRlbHRhKSB7XG4gICAgICAgICAgICB2YWwgPSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbCA8IC0xICYmIHZhbCA+IC1kZWx0YSkge1xuICAgICAgICAgICAgdmFsID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE1hdGguYWNvcyh2YWwpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLnZlY3RvclByb2R1Y3QgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIGEgPSBfYS5hLCBiID0gX2EuYiwgYyA9IF9hLmM7XG4gICAgICAgIHZhciBfYiA9IHRoaXMsIHEgPSBfYi5hLCB3ID0gX2IuYiwgZSA9IF9iLmM7XG4gICAgICAgIHJldHVybiBuZXcgRExpbmUodyAqIGMgLSBlICogYiwgZSAqIGEgLSBxICogYywgcSAqIGIgLSB3ICogYSk7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuYnJlc2VuaGFtc0xpbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMuYmVnaW4sIHgwID0gX2EueCwgeTAgPSBfYS55O1xuICAgICAgICB2YXIgX2IgPSB0aGlzLmVuZCwgeDEgPSBfYi54LCB5MSA9IF9iLnk7XG4gICAgICAgIHZhciBkeCA9IE1hdGguYWJzKHgxIC0geDApO1xuICAgICAgICB2YXIgc3ggPSB4MCA8IHgxID8gMSA6IC0xO1xuICAgICAgICB2YXIgZHkgPSAtTWF0aC5hYnMoeTEgLSB5MCk7XG4gICAgICAgIHZhciBzeSA9IHkwIDwgeTEgPyAxIDogLTE7XG4gICAgICAgIHZhciBlcnJvciA9IGR4ICsgZHk7XG4gICAgICAgIHZhciByZXMgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKG5ldyBEUG9pbnQoeDAsIHkwKSk7XG4gICAgICAgICAgICBpZiAoeDAgPT09IHgxICYmIHkwID09PSB5MSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGUyID0gMiAqIGVycm9yO1xuICAgICAgICAgICAgaWYgKGUyID49IGR5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHgwID09PSB4MSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZXJyb3IgKz0gZHk7XG4gICAgICAgICAgICAgICAgeDAgKz0gc3g7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZTIgPD0gZHgpIHtcbiAgICAgICAgICAgICAgICBpZiAoeTAgPT09IHkxKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlcnJvciArPSBkeDtcbiAgICAgICAgICAgICAgICB5MCArPSBzeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgcmV0dXJuIERMaW5lO1xufSgpKTtcbmV4cG9ydCB7IERMaW5lIH07XG4iLCJ2YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xudmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xuaW1wb3J0IHsgRExpbmUgfSBmcm9tICcuL0RMaW5lJztcbmltcG9ydCB7IERQb2x5Z29uIH0gZnJvbSAnLi9EUG9seWdvbic7XG5pbXBvcnQgeyBjaGVja0Z1bmN0aW9uLCBjcmVhdGVBcnJheSwgREdlbywgZGl2LCBpc0RlZkFuZE5vdE51bGwsIHRvRGVncmVlc01pbnV0ZXNTZWNvbmRzIH0gZnJvbSAnLi91dGlscyc7XG52YXIgZGlmZiA9IDA7XG52YXIgcmFkaWFuc1BvbHlnb24gPSBuZXcgRFBvbHlnb24oKTtcbnZhciBwc2V1ZG9NZXJjYXRvclBvbHlnb24gPSBuZXcgRFBvbHlnb24oKTtcbnZhciB3b3JsZEdlb2RldGljUG9seWdvbiA9IG5ldyBEUG9seWdvbigpO1xuZXhwb3J0IHZhciBFQVJUSF9SQURJVVNfSU5fTUVURVJTID0gNjM3ODEzNztcbnZhciBFQVJUSF9JTl9NRVRFUlMgPSAyMDAzNzUwOC4zNDtcbnZhciBERUdSRUVTX0lOX0VBUlRIID0gMTgwO1xudmFyIE1FVEVSU19JTl9PTkVfREVHUkVFID0gRUFSVEhfSU5fTUVURVJTIC8gREVHUkVFU19JTl9FQVJUSDtcbnZhciBERUdSRUVTX0lOX09ORV9NRVRFUiA9IERFR1JFRVNfSU5fRUFSVEggLyBFQVJUSF9JTl9NRVRFUlM7XG5leHBvcnQgdmFyIEhBTEZfUElfSU5fREVHUkVFID0gOTA7XG5leHBvcnQgdmFyIFBJX0lOX0RFR1JFRSA9IDE4MDtcbmV4cG9ydCB2YXIgRE9VQkxFX1BJX0lOX0RFR1JFRSA9IDM2MDtcbmV4cG9ydCB2YXIgUElfVE9fREVHUkVFID0gTWF0aC5QSSAvIFBJX0lOX0RFR1JFRTtcbmV4cG9ydCB2YXIgREVHUkVFX1RPX1BJID0gUElfSU5fREVHUkVFIC8gTWF0aC5QSTtcbnZhciBEUG9pbnQgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERQb2ludCh4LCB5LCB6KSB7XG4gICAgICAgIGlmICh4ID09PSB2b2lkIDApIHsgeCA9IDA7IH1cbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0geDsgfVxuICAgICAgICB0aGlzLnggPSB4O1xuICAgICAgICB0aGlzLnkgPSB5O1xuICAgICAgICB0aGlzLnogPSB6O1xuICAgICAgICB0aGlzLnByb3BlcnRpZXMgPSB7fTtcbiAgICB9XG4gICAgRFBvaW50Lnplcm8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KCk7XG4gICAgfTtcbiAgICBEUG9pbnQucGFyc2UgPSBmdW5jdGlvbiAoYywgZm9ybWF0KSB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSBER2VvLnBhcnNlRm9ybWF0OyB9XG4gICAgICAgIHZhciBfYSA9IGMsIGxhdCA9IF9hLmxhdCwgbG9uID0gX2EubG9uLCBfYiA9IF9hLmxuZywgbG5nID0gX2IgPT09IHZvaWQgMCA/IGxvbiA6IF9iLCBhbHQgPSBfYS5hbHQ7XG4gICAgICAgIGlmIChsYXQgJiYgbG5nKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludChsbmcsIGxhdCwgYWx0ICE9PSBudWxsICYmIGFsdCAhPT0gdm9pZCAwID8gYWx0IDogMCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9jID0gYywgeCA9IF9jLngsIHkgPSBfYy55LCB6ID0gX2MueiwgcHJvcGVydGllcyA9IF9fcmVzdChfYywgW1wieFwiLCBcInlcIiwgXCJ6XCJdKTtcbiAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh4KSAmJiBpc0RlZkFuZE5vdE51bGwoeSkpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KHgsIHksIHopLnNldFByb3BlcnRpZXMocHJvcGVydGllcyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHQgPSBjO1xuICAgICAgICBpZiAoYy50eXBlID09PSAnUG9pbnQnKSB7XG4gICAgICAgICAgICB0ID0gYy5jb29yZGluYXRlcztcbiAgICAgICAgfVxuICAgICAgICBpZiAoYy50eXBlID09PSAnRmVhdHVyZScpIHtcbiAgICAgICAgICAgIHZhciBmID0gRFBvaW50LnBhcnNlKGMuZ2VvbWV0cnksIGZvcm1hdCk7XG4gICAgICAgICAgICBmLnByb3BlcnRpZXMgPSBfX2Fzc2lnbih7fSwgYy5wcm9wZXJ0aWVzKTtcbiAgICAgICAgICAgIHJldHVybiBmO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXQucmVwbGFjZSgvW154LXpdL2dtaXUsICcnKVxuICAgICAgICAgICAgLnNwbGl0KCcnKVxuICAgICAgICAgICAgLnJlZHVjZShmdW5jdGlvbiAoYSwgaywgaW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBzd2l0Y2ggKGspIHtcbiAgICAgICAgICAgICAgICBjYXNlICd4JzpcbiAgICAgICAgICAgICAgICAgICAgYS54ID0gKF9hID0gdFtpbmRleF0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgICAgICBhLnkgPSAoX2IgPSB0W2luZGV4XSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneic6XG4gICAgICAgICAgICAgICAgICAgIGEueiA9IHRbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgIH0sIG5ldyBEUG9pbnQoKSk7XG4gICAgfTtcbiAgICBEUG9pbnQucGFyc2VGcm9tV0tUID0gZnVuY3Rpb24gKHdrdCkge1xuICAgICAgICB2YXIgcmVnZXhwID0gL1BPSU5UIFxcKCg/PGRhdGE+KD86KD8hXFwpKS4pKj8pXFwpJC9taXU7XG4gICAgICAgIHZhciBkYXRhID0gd2t0LnRyaW0oKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB2YXIgcmVzID0gcmVnZXhwLmV4ZWMoZGF0YSk7XG4gICAgICAgIHZhciBfYSA9IF9fcmVhZChyZXMuZ3JvdXBzLmRhdGEuc3BsaXQoJyAnKS5tYXAoTnVtYmVyKSwgMyksIHggPSBfYVswXSwgeSA9IF9hWzFdLCB6ID0gX2FbMl07XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KHgsIHksIHopO1xuICAgIH07XG4gICAgRFBvaW50LnJhbmRvbSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoTWF0aC5yYW5kb20oKSwgTWF0aC5yYW5kb20oKSk7XG4gICAgfTtcbiAgICBEUG9pbnQuZ2V0VGlsZUZyb21RdWFkS2V5ID0gZnVuY3Rpb24gKHF1YWRLZXkpIHtcbiAgICAgICAgdmFyIHAgPSBuZXcgRFBvaW50KDAsIDAsIHF1YWRLZXkubGVuZ3RoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IHAuejsgaSA+IDA7IGktLSkge1xuICAgICAgICAgICAgdmFyIG1hc2sgPSAxIDw8IChpIC0gMSk7XG4gICAgICAgICAgICBzd2l0Y2ggKHF1YWRLZXlbcC56IC0gaV0pIHtcbiAgICAgICAgICAgICAgICBjYXNlICcwJzpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnMSc6XG4gICAgICAgICAgICAgICAgICAgIHAueCB8PSBtYXNrO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICcyJzpcbiAgICAgICAgICAgICAgICAgICAgcC55IHw9IG1hc2s7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJzMnOlxuICAgICAgICAgICAgICAgICAgICBwLnggfD0gbWFzaztcbiAgICAgICAgICAgICAgICAgICAgcC55IHw9IG1hc2s7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBRdWFkS2V5IGRpZ2l0IHNlcXVlbmNlLicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS50b0RlZ3JlZXNNaW51dGVzU2Vjb25kcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHRvRGVncmVlc01pbnV0ZXNTZWNvbmRzKHRoaXMueCksXG4gICAgICAgICAgICB5OiB0b0RlZ3JlZXNNaW51dGVzU2Vjb25kcyh0aGlzLnkpXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmdldFRpbGVGcm9tQ29vcmRzID0gZnVuY3Rpb24gKHpvb20pIHtcbiAgICAgICAgaWYgKHpvb20gPT09IHZvaWQgMCkgeyB6b29tID0gdGhpcy56OyB9XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ2dldFRpbGVGcm9tQ29vcmRzJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZURlZ3JlZSh0aGlzKTtcbiAgICAgICAgdmFyIHggPSBNYXRoLmZsb29yKCh0aGlzLnggKyBQSV9JTl9ERUdSRUUpIC8gRE9VQkxFX1BJX0lOX0RFR1JFRSAqIChNYXRoLnBvdygyLCB6b29tKSkpO1xuICAgICAgICB2YXIgeSA9IE1hdGguZmxvb3IoKDEgLSBNYXRoLmxvZyhNYXRoLnRhbih0aGlzLnkgKiBQSV9UT19ERUdSRUUpICsgMSAvIE1hdGguY29zKHRoaXMueSAqIFBJX1RPX0RFR1JFRSkpIC8gTWF0aC5QSSkgLyAyICogKE1hdGgucG93KDIsIHpvb20pKSk7XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KHgsIHksIHpvb20pO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5nZXRRdWFkS2V5RnJvbVRpbGUgPSBmdW5jdGlvbiAoem9vbSkge1xuICAgICAgICBpZiAoem9vbSA9PT0gdm9pZCAwKSB7IHpvb20gPSB0aGlzLno7IH1cbiAgICAgICAgdmFyIHF1YWRLZXkgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IHpvb207IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgICAgIHZhciBkaWdpdCA9IDA7XG4gICAgICAgICAgICB2YXIgbWFzayA9IDEgPDwgKGkgLSAxKTtcbiAgICAgICAgICAgIGlmICgodGhpcy54ICYgbWFzaykgIT09IDApIHtcbiAgICAgICAgICAgICAgICBkaWdpdCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCh0aGlzLnkgJiBtYXNrKSAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGRpZ2l0Kys7XG4gICAgICAgICAgICAgICAgZGlnaXQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHF1YWRLZXkucHVzaChkaWdpdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHF1YWRLZXkuam9pbignJyk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmdldENvb3Jkc0Zyb21UaWxlID0gZnVuY3Rpb24gKHpvb20pIHtcbiAgICAgICAgaWYgKHpvb20gPT09IHZvaWQgMCkgeyB6b29tID0gdGhpcy56OyB9XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ2dldENvb3Jkc0Zyb21UaWxlJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZVVJbnQodGhpcyk7XG4gICAgICAgIHZhciBuID0gTWF0aC5QSSAtIDIgKiBNYXRoLlBJICogdGhpcy55IC8gKE1hdGgucG93KDIsIHpvb20pKTtcbiAgICAgICAgdmFyIHggPSB0aGlzLnggLyAoTWF0aC5wb3coMiwgem9vbSkpICogRE9VQkxFX1BJX0lOX0RFR1JFRSAtIFBJX0lOX0RFR1JFRTtcbiAgICAgICAgdmFyIHkgPSBQSV9JTl9ERUdSRUUgLyBNYXRoLlBJICogTWF0aC5hdGFuKChNYXRoLmV4cChuKSAtIE1hdGguZXhwKC1uKSkgLyAyKTtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoeCwgeSwgem9vbSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnRvQ29vcmRzID0gZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAoZm9ybWF0ID09PSB2b2lkIDApIHsgZm9ybWF0ID0gREdlby5wYXJzZUZvcm1hdDsgfVxuICAgICAgICByZXR1cm4gZm9ybWF0LnJlcGxhY2UoL1teeC16XS9nbWl1LCAnJykuc3BsaXQoJycpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChrKSB7IHJldHVybiAoe1xuICAgICAgICAgICAgeDogX3RoaXMueCxcbiAgICAgICAgICAgIHk6IF90aGlzLnksXG4gICAgICAgICAgICB6OiBfdGhpcy56XG4gICAgICAgIH0pW2tdOyB9KVxuICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gciAhPT0gdW5kZWZpbmVkOyB9KTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUudG9HZW9KU09OID0gZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSB2b2lkIDApIHsgZm9ybWF0ID0gREdlby5wYXJzZUZvcm1hdDsgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzOiB0aGlzLnRvQ29vcmRzKGZvcm1hdClcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUudG9HZW9KU09ORmVhdHVyZSA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IF9fYXNzaWduKHt9LCB0aGlzLnByb3BlcnRpZXMpLFxuICAgICAgICAgICAgZ2VvbWV0cnk6IHRoaXMudG9HZW9KU09OKGZvcm1hdClcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZmluZExpbmUgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdmaW5kTGluZScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdwJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyhwKTtcbiAgICAgICAgaWYgKHRoaXMuZXF1YWwocCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRMaW5lKHAuY2xvbmUoKS5tb3ZlKDAsIDEpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYSA9IHRoaXMueSAtIHAueSAtIGRpZmY7XG4gICAgICAgIHZhciBiID0gcC54IC0gdGhpcy54IC0gZGlmZjtcbiAgICAgICAgdmFyIGMgPSB0aGlzLnggKiBwLnkgLSBwLnggKiB0aGlzLnkgLSBkaWZmO1xuICAgICAgICBpZiAoYSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBETGluZSgwLCAxLCBjIC8gYiwgdGhpcywgcCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGIgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRExpbmUoMSwgMCwgYyAvIGEsIHRoaXMsIHApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRExpbmUoYSwgYiwgYywgdGhpcywgcCk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmZpbmRJbm5lckFuZ2xlID0gZnVuY3Rpb24gKHAxLCBwMykge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdmaW5kSW5uZXJBbmdsZScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdwMScpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnMocDEpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncDMnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHAzKTtcbiAgICAgICAgdmFyIGExID0gdGhpcy5maW5kTGluZShwMSkuZ2V0RmkoKTtcbiAgICAgICAgdmFyIGEyID0gdGhpcy5maW5kTGluZShwMykuZ2V0RmkoKTtcbiAgICAgICAgaWYgKGEyID49IGExKSB7XG4gICAgICAgICAgICByZXR1cm4gYTIgLSBhMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYTIgKyBNYXRoLlBJICogMiAtIGExO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KHRoaXMueCwgXCIgXCIpLmNvbmNhdCh0aGlzLnkpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLngsIHRoaXMueV07XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmhlaWdodCA9IGZ1bmN0aW9uICh6KSB7XG4gICAgICAgIHRoaXMueiA9IHo7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS50b1dLVCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgeCA9IF9hLngsIHkgPSBfYS55O1xuICAgICAgICByZXR1cm4gXCJQT0lOVCAoXCIuY29uY2F0KHgsIFwiIFwiKS5jb25jYXQoeSwgXCIpXCIpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5kaXN0YW5jZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ2Rpc3RhbmNlJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3AnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHApO1xuICAgICAgICB2YXIgZHggPSBwLnggLSB0aGlzLng7XG4gICAgICAgIHZhciBkeSA9IHAueSAtIHRoaXMueTtcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmRpc3RhbmNlTGF0TG9uID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZGlzdGFuY2UnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlRGVncmVlKHRoaXMpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVEZWdyZWUocCk7XG4gICAgICAgIHZhciBkID0gcC5jbG9uZSgpLm1vdmUodGhpcy5jbG9uZSgpLm1pbnVzKCkpXG4gICAgICAgICAgICAuZGVncmVlVG9SYWRpYW5zKCk7XG4gICAgICAgIHZhciB0MSA9IHRoaXMuY2xvbmUoKS5kZWdyZWVUb1JhZGlhbnMoKTtcbiAgICAgICAgdmFyIHQyID0gcC5jbG9uZSgpLmRlZ3JlZVRvUmFkaWFucygpO1xuICAgICAgICB2YXIgYSA9IE1hdGgucG93KE1hdGguc2luKGQubGF0IC8gMiksIDIpICtcbiAgICAgICAgICAgIE1hdGguY29zKHQxLmxhdCkgKlxuICAgICAgICAgICAgICAgIE1hdGguY29zKHQyLmxhdCkgKlxuICAgICAgICAgICAgICAgIChNYXRoLnBvdygoTWF0aC5zaW4oZC5sb24gLyAyKSksIDIpKTtcbiAgICAgICAgdmFyIGMgPSAyICogTWF0aC5hdGFuMihNYXRoLnNxcnQoYSksIE1hdGguc3FydCgxIC0gYSkpO1xuICAgICAgICByZXR1cm4gRUFSVEhfUkFESVVTX0lOX01FVEVSUyAqIGM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmRpc3RhbmNlM2QgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdkaXN0YW5jZTNkJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3AnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHApXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcy56JylcbiAgICAgICAgICAgIC5zaG91bGRFeGlzdCh0aGlzLnopXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncC56JylcbiAgICAgICAgICAgIC5zaG91bGRFeGlzdChwLnopO1xuICAgICAgICB2YXIgZHggPSBwLnggLSB0aGlzLng7XG4gICAgICAgIHZhciBkeSA9IHAueSAtIHRoaXMueTtcbiAgICAgICAgdmFyIGR6ID0gcC56IC0gdGhpcy56O1xuICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5ICsgZHogKiBkeik7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnNldFggPSBmdW5jdGlvbiAoeCkge1xuICAgICAgICB0aGlzLnggPSB0eXBlb2YgeCA9PT0gJ251bWJlcicgPyB4IDogeCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnNldFogPSBmdW5jdGlvbiAoeikge1xuICAgICAgICB0aGlzLnogPSB0eXBlb2YgeiA9PT0gJ251bWJlcicgPyB6IDogeih0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnNldFkgPSBmdW5jdGlvbiAoeSkge1xuICAgICAgICB0aGlzLnkgPSB0eXBlb2YgeSA9PT0gJ251bWJlcicgPyB5IDogeSh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnNldFByb3BlcnRpZXMgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB0aGlzLnByb3BlcnRpZXMgPSB0eXBlb2YgdiA9PT0gJ29iamVjdCcgPyB2IDogdih0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcCA9IG5ldyBEUG9pbnQodGhpcy54LCB0aGlzLnksIHRoaXMueik7XG4gICAgICAgIHAucHJvcGVydGllcyA9IF9fYXNzaWduKHt9LCB0aGlzLnByb3BlcnRpZXMpO1xuICAgICAgICByZXR1cm4gcDtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy54ID4gcC54ICYmIHRoaXMueSA+IHAueTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubHQgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy54IDwgcC54ICYmIHRoaXMueSA8IHAueTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZ3RPckVxdWFsID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3QocCkgfHwgdGhpcy5lcXVhbChwKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubHRPckVxdWFsID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubHQocCkgfHwgdGhpcy5lcXVhbChwKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUucm90YXRlID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgdmFyIHggPSB0aGlzLnggKiBNYXRoLmNvcyhhKSAtIHRoaXMueSAqIE1hdGguc2luKGEpO1xuICAgICAgICB2YXIgeSA9IHRoaXMueCAqIE1hdGguc2luKGEpICsgdGhpcy55ICogTWF0aC5jb3MoYSk7XG4gICAgICAgIHRoaXMueCA9IHg7XG4gICAgICAgIHRoaXMueSA9IHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5yb3RhdGUzZFggPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCB5ID0gX2EueSwgeiA9IF9hLno7XG4gICAgICAgIHRoaXMueSA9IHkgKiBNYXRoLmNvcyhhKSArIHogKiBNYXRoLnNpbihhKTtcbiAgICAgICAgdGhpcy56ID0gLXkgKiBNYXRoLnNpbihhKSArIHogKiBNYXRoLmNvcyhhKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnJvdGF0ZTNkWSA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIHggPSBfYS54LCB6ID0gX2EuejtcbiAgICAgICAgdGhpcy54ID0geCAqIE1hdGguY29zKGEpICsgeiAqIE1hdGguc2luKGEpO1xuICAgICAgICB0aGlzLnogPSAteCAqIE1hdGguc2luKGEpICsgeiAqIE1hdGguY29zKGEpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUucm90YXRlM2RaID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgeCA9IF9hLngsIHkgPSBfYS55O1xuICAgICAgICB0aGlzLnggPSB4ICogTWF0aC5jb3MoYSkgLSB5ICogTWF0aC5zaW4oYSk7XG4gICAgICAgIHRoaXMueSA9IC14ICogTWF0aC5zaW4oYSkgKyB5ICogTWF0aC5jb3MoYSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5tb3ZlID0gZnVuY3Rpb24gKHgsIHksIHopIHtcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0geDsgfVxuICAgICAgICB2YXIgeFYgPSAwO1xuICAgICAgICB2YXIgeVYgPSAwO1xuICAgICAgICB2YXIgelYgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh4IGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB4ViA9IHRoaXMueCArIHgueDtcbiAgICAgICAgICAgIHlWID0gdGhpcy55ICsgeC55O1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh4LnopKSB7XG4gICAgICAgICAgICAgICAgelYgPSB0aGlzLnogKyB4Lno7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB4ViA9IHRoaXMueCArIHg7XG4gICAgICAgICAgICB5ViA9IHRoaXMueSArIHk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHopKSB7XG4gICAgICAgICAgICAgICAgelYgPSB0aGlzLnogKyB6O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMueCA9IHhWO1xuICAgICAgICB0aGlzLnkgPSB5VjtcbiAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh6VikpIHtcbiAgICAgICAgICAgIHRoaXMueiA9IHpWO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5kZWdyZWVUb01ldGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZGVncmVlVG9NZXRlcnMnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlRGVncmVlKHRoaXMpO1xuICAgICAgICB2YXIgeCA9ICgodGhpcy54ICsgUElfSU5fREVHUkVFKSAlIERPVUJMRV9QSV9JTl9ERUdSRUUgLSBQSV9JTl9ERUdSRUUpICogTUVURVJTX0lOX09ORV9ERUdSRUU7XG4gICAgICAgIHZhciB5ID0gKE1hdGgubG9nKE1hdGgudGFuKCgodGhpcy55ICsgSEFMRl9QSV9JTl9ERUdSRUUpICUgUElfSU5fREVHUkVFKSAqXG4gICAgICAgICAgICAoTWF0aC5QSSAvIERPVUJMRV9QSV9JTl9ERUdSRUUpKSkgLyBQSV9UT19ERUdSRUUpICogTUVURVJTX0lOX09ORV9ERUdSRUU7XG4gICAgICAgIHRoaXMueCA9IHg7XG4gICAgICAgIHRoaXMueSA9IHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5tZXRlcnNUb0RlZ3JlZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignbWV0ZXJzVG9EZWdyZWUnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMpO1xuICAgICAgICB2YXIgbG9uID0gdGhpcy54ICogREVHUkVFU19JTl9PTkVfTUVURVI7XG4gICAgICAgIHZhciBsYXQgPSBNYXRoLmF0YW4oTWF0aC5wb3coTWF0aC5FLCAoKHRoaXMueSAvIE1FVEVSU19JTl9PTkVfREVHUkVFKSAqIFBJX1RPX0RFR1JFRSkpKSAqXG4gICAgICAgICAgICAoRE9VQkxFX1BJX0lOX0RFR1JFRSAvIE1hdGguUEkpIC0gSEFMRl9QSV9JTl9ERUdSRUU7XG4gICAgICAgIHRoaXMueCA9IGxvbjtcbiAgICAgICAgdGhpcy55ID0gbGF0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZGVncmVlVG9SYWRpYW5zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdkZWdyZWVUb1JhZGlhbnMnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlRGVncmVlKHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5zY2FsZShQSV9UT19ERUdSRUUpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5yYWRpYW5zVG9EZWdyZWVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdyYWRpYW5zVG9EZWdyZWVzJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZVJhZGlhbnModGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzLnNjYWxlKERFR1JFRV9UT19QSSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnJhZGlhbnNUb01ldGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbigncmFkaWFuc1RvTWV0ZXJzJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZVJhZGlhbnModGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzLnJhZGlhbnNUb0RlZ3JlZXMoKS5kZWdyZWVUb01ldGVycygpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5tZXRlcnNUb1JhZGlhbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ21ldGVyc1RvUmFkaWFucycpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzLm1ldGVyc1RvRGVncmVlKCkuZGVncmVlVG9SYWRpYW5zKCk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnJvdW5kID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnggPSBNYXRoLnJvdW5kKHRoaXMueCk7XG4gICAgICAgIHRoaXMueSA9IE1hdGgucm91bmQodGhpcy55KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmNlaWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMueCA9IE1hdGguY2VpbCh0aGlzLngpO1xuICAgICAgICB0aGlzLnkgPSBNYXRoLmNlaWwodGhpcy55KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmZsb29yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnggPSBNYXRoLmZsb29yKHRoaXMueCk7XG4gICAgICAgIHRoaXMueSA9IE1hdGguZmxvb3IodGhpcy55KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnRvRml4ZWQgPSBmdW5jdGlvbiAobikge1xuICAgICAgICBpZiAobiA9PT0gdm9pZCAwKSB7IG4gPSAyOyB9XG4gICAgICAgIHRoaXMueCA9IHBhcnNlRmxvYXQodGhpcy54LnRvRml4ZWQobikpO1xuICAgICAgICB0aGlzLnkgPSBwYXJzZUZsb2F0KHRoaXMueS50b0ZpeGVkKG4pKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy54ID0gTWF0aC5hYnModGhpcy54KTtcbiAgICAgICAgdGhpcy55ID0gTWF0aC5hYnModGhpcy55KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnNjYWxlID0gZnVuY3Rpb24gKHgsIHksIHopIHtcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0geDsgfVxuICAgICAgICB2YXIgeFYgPSAwO1xuICAgICAgICB2YXIgeVYgPSAwO1xuICAgICAgICB2YXIgelYgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh4IGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB4ViA9IHRoaXMueCAqIHgueDtcbiAgICAgICAgICAgIHlWID0gdGhpcy55ICogeC55O1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh4LnopKSB7XG4gICAgICAgICAgICAgICAgelYgPSB0aGlzLnogKiB4Lno7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB4ViA9IHRoaXMueCAqIHg7XG4gICAgICAgICAgICB5ViA9IHRoaXMueSAqIHk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHopKSB7XG4gICAgICAgICAgICAgICAgelYgPSB0aGlzLnogKiB6O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMueCA9IHhWO1xuICAgICAgICB0aGlzLnkgPSB5VjtcbiAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh6VikpIHtcbiAgICAgICAgICAgIHRoaXMueiA9IHpWO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5kaXZpZGUgPSBmdW5jdGlvbiAoeCwgeSwgeikge1xuICAgICAgICBpZiAoeSA9PT0gdm9pZCAwKSB7IHkgPSB4OyB9XG4gICAgICAgIHZhciB4ViA9IDA7XG4gICAgICAgIHZhciB5ViA9IDA7XG4gICAgICAgIHZhciB6ViA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHggaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHhWID0gdGhpcy54IC8geC54O1xuICAgICAgICAgICAgeVYgPSB0aGlzLnkgLyB4Lnk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHgueikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IHRoaXMueiAvIHguejtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHhWID0gdGhpcy54IC8geDtcbiAgICAgICAgICAgIHlWID0gdGhpcy55IC8geTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IHRoaXMueiAvIHo7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy54ID0geFY7XG4gICAgICAgIHRoaXMueSA9IHlWO1xuICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHpWKSkge1xuICAgICAgICAgICAgdGhpcy56ID0gelY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIGlmICh5ID09PSB2b2lkIDApIHsgeSA9IHg7IH1cbiAgICAgICAgdmFyIHhWID0gMDtcbiAgICAgICAgdmFyIHlWID0gMDtcbiAgICAgICAgdmFyIHpWID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoeCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggJSB4Lng7XG4gICAgICAgICAgICB5ViA9IHRoaXMueSAlIHgueTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeC56KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56ICUgeC56O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggJSB4O1xuICAgICAgICAgICAgeVYgPSB0aGlzLnkgJSB5O1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh6KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56ICUgejtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnggPSB4VjtcbiAgICAgICAgdGhpcy55ID0geVY7XG4gICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwoelYpKSB7XG4gICAgICAgICAgICB0aGlzLnogPSB6VjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gKHgsIHksIHopIHtcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0geDsgfVxuICAgICAgICB2YXIgeFYgPSAwO1xuICAgICAgICB2YXIgeVYgPSAwO1xuICAgICAgICB2YXIgelYgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh4IGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB4ViA9IGRpdih0aGlzLngsIHgueCk7XG4gICAgICAgICAgICB5ViA9IGRpdih0aGlzLnksIHgueSk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHgueikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IGRpdih0aGlzLnosIHgueik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB4ViA9IGRpdih0aGlzLngsIHgpO1xuICAgICAgICAgICAgeVYgPSBkaXYodGhpcy55LCB5KTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IGRpdih0aGlzLnosIHopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMueCA9IHhWO1xuICAgICAgICB0aGlzLnkgPSB5VjtcbiAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh6VikpIHtcbiAgICAgICAgICAgIHRoaXMueiA9IHpWO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5lcXVhbCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnggPT09IHAueCAmJiB0aGlzLnkgPT09IHAueSAmJiB0aGlzLnogPT09IHAuejtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubGlrZSA9IGZ1bmN0aW9uIChwLCBkKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgaWYgKGQgPT09IHZvaWQgMCkgeyBkID0gMC4wMDE7IH1cbiAgICAgICAgaWYgKHRoaXMuZXF1YWwocCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsaWtlWCA9IE1hdGguYWJzKHRoaXMueCAtIHAueCkgPCBkO1xuICAgICAgICB2YXIgbGlrZVkgPSBNYXRoLmFicyh0aGlzLnkgLSBwLnkpIDwgZDtcbiAgICAgICAgdmFyIGxpa2VaID0gTWF0aC5hYnMoKChfYiA9IChfYSA9IHRoaXMueikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogcC56KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwKSAtICgoX2QgPSAoX2MgPSBwLnopICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IHRoaXMueikgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMCkpIDwgZDtcbiAgICAgICAgcmV0dXJuIGxpa2VYICYmIGxpa2VZICYmIGxpa2VaO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5mbGlwVmVydGljYWxseSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHZhciB2ID0gc2l6ZTtcbiAgICAgICAgaWYgKHNpemUgaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHYgPSBzaXplLnk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55ID0gdiAtIHRoaXMueTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJsaWtlUmFkaWFuc1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHJhZGlhbnNQb2x5Z29uLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJhZGlhbnNQb2x5Z29uLnB1c2gobmV3IERQb2ludCgtTWF0aC5QSSwgLU1hdGguUEkgLyAyKSwgbmV3IERQb2ludChNYXRoLlBJLCBNYXRoLlBJIC8gMikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJhZGlhbnNQb2x5Z29uLnNpbXBsZUluY2x1ZGUodGhpcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJsaWtlV29ybGRHZW9kZXRpY1N5c3RlbVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHdvcmxkR2VvZGV0aWNQb2x5Z29uLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHdvcmxkR2VvZGV0aWNQb2x5Z29uLnB1c2gobmV3IERQb2ludCgtMTgwLCAtOTApLCBuZXcgRFBvaW50KDE4MCwgOTApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5saWtlUmFkaWFucyAmJiB3b3JsZEdlb2RldGljUG9seWdvbi5zaW1wbGVJbmNsdWRlKHRoaXMpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibGlrZVBzZXVkb01lcmNhdG9yXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocHNldWRvTWVyY2F0b3JQb2x5Z29uLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBzZXVkb01lcmNhdG9yUG9seWdvbi5wdXNoKG5ldyBEUG9pbnQoLTIwMDI2Mzc2LjM5LCAtMjAwNDg5NjYuMTApLCBuZXcgRFBvaW50KDIwMDI2Mzc2LjM5LCAyMDA0ODk2Ni4xMCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmxpa2VSYWRpYW5zICYmICF0aGlzLmxpa2VXb3JsZEdlb2RldGljU3lzdGVtICYmIHBzZXVkb01lcmNhdG9yUG9seWdvbi5zaW1wbGVJbmNsdWRlKHRoaXMpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwid1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMueDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgdGhpcy54ID0geDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHkpIHtcbiAgICAgICAgICAgIHRoaXMueSA9IHk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJhcmVhXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjaGVja0Z1bmN0aW9uKCdhcmVhJylcbiAgICAgICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudyAqIHRoaXMuaDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImhpcFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2hlY2tGdW5jdGlvbignaGlwJylcbiAgICAgICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMpO1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguc3FydCh0aGlzLncgKiB0aGlzLncgKyB0aGlzLmggKiB0aGlzLmgpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibWluXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5taW4odGhpcy54LCB0aGlzLnkpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibWF4XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgodGhpcy54LCB0aGlzLnkpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwiaGlwUG9pbnRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBoaXAgPSB0aGlzLmhpcDtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KGhpcCwgaGlwKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcInhQb2ludFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHggPSB0aGlzLng7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCh4LCB4KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcInlQb2ludFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHkgPSB0aGlzLnk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCh5LCB5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcIndQb2ludFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMueFBvaW50O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwiaFBvaW50XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy55UG9pbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJsYXRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgIHRoaXMueSA9IHY7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJsbmdcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLng7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgIHRoaXMueCA9IHY7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJsb25cIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLng7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgIHRoaXMueCA9IHY7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJhbHRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLno7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgIHRoaXMueiA9IHY7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnNpbXBsZSA9IGZ1bmN0aW9uICh4S2V5LCB5S2V5LCB6S2V5KSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmICh4S2V5ID09PSB2b2lkIDApIHsgeEtleSA9ICd4JzsgfVxuICAgICAgICBpZiAoeUtleSA9PT0gdm9pZCAwKSB7IHlLZXkgPSAneSc7IH1cbiAgICAgICAgaWYgKHpLZXkgPT09IHZvaWQgMCkgeyB6S2V5ID0gJ3onOyB9XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbigoX2EgPSB7fSwgX2FbeEtleV0gPSB0aGlzLngsIF9hW3lLZXldID0gdGhpcy55LCBfYSksIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSA/IChfYiA9IHt9LFxuICAgICAgICAgICAgX2JbektleV0gPSB0aGlzLnosXG4gICAgICAgICAgICBfYikgOiB7fSkpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zZXRJZkxlc3NUaGFuID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdGhpcy54ID0gTWF0aC5tYXgodGhpcy54LCBwLngpO1xuICAgICAgICB0aGlzLnkgPSBNYXRoLm1heCh0aGlzLnksIHAueSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zZXRJZk1vcmVUaGFuID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdGhpcy54ID0gTWF0aC5taW4odGhpcy54LCBwLngpO1xuICAgICAgICB0aGlzLnkgPSBNYXRoLm1pbih0aGlzLnksIHAueSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5taW51cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbGUoLTEpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5vcnRob2Ryb21pY1BhdGggPSBmdW5jdGlvbiAocG9pbnQsIHBvaW50c0NvdW50KSB7XG4gICAgICAgIGlmIChwb2ludHNDb3VudCA9PT0gdm9pZCAwKSB7IHBvaW50c0NvdW50ID0gMzYwOyB9XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ29ydGhvZHJvbWljUGF0aCcpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVEZWdyZWUodGhpcylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdwb2ludCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVEZWdyZWUocG9pbnQpO1xuICAgICAgICB2YXIgdCA9IHRoaXMuY2xvbmUoKS5kZWdyZWVUb1JhZGlhbnMoKTtcbiAgICAgICAgdmFyIHAgPSBwb2ludC5jbG9uZSgpLmRlZ3JlZVRvUmFkaWFucygpO1xuICAgICAgICB2YXIgZCA9IE1hdGguc2luKHAueCAtIHQueCk7XG4gICAgICAgIHZhciBzdGVwID0gKHAueCAtIHQueCkgLyAocG9pbnRzQ291bnQgLSAxKTtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbihjcmVhdGVBcnJheShwb2ludHNDb3VudClcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHYsIGkpIHtcbiAgICAgICAgICAgIHZhciB4ID0gdC54ICsgc3RlcCAqIGk7XG4gICAgICAgICAgICB2YXIgeSA9IE1hdGguYXRhbigoTWF0aC50YW4odC55KSAqIE1hdGguc2luKHAueCAtIHgpKSAvIGQgK1xuICAgICAgICAgICAgICAgIChNYXRoLnRhbihwLnkpICogTWF0aC5zaW4oeCAtIHQueCkpIC8gZCk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCh4LCB5KS5yYWRpYW5zVG9EZWdyZWVzKCk7XG4gICAgICAgIH0pKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuc29ydEJ5RGlzdGFuY2UgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gcFxuICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKGQsIGluZGV4KSB7XG4gICAgICAgICAgICBkLnByb3BlcnRpZXMuZGlzdGFuY2UgPSBkLmRpc3RhbmNlKF90aGlzKTtcbiAgICAgICAgICAgIGQucHJvcGVydGllcy5pbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgcmV0dXJuIGQ7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5wcm9wZXJ0aWVzLmRpc3RhbmNlIC0gYi5wcm9wZXJ0aWVzLmRpc3RhbmNlOyB9KTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuY2FsY3VsYXRlQWx0aXR1ZGVCeURpc3RhbmNlQmV0d2VlblBvaW50cyA9IGZ1bmN0aW9uIChwMSwgcDIpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgICAgaWYgKHAxLmFsdCA9PT0gcDIuYWx0KSB7XG4gICAgICAgICAgICB0aGlzLmFsdCA9IHAxLmFsdDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBtaW5BbHQgPSBNYXRoLm1pbigoX2EgPSBwMS5hbHQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDAsIChfYiA9IHAyLmFsdCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMCk7XG4gICAgICAgICAgICB2YXIgbWF4QWx0ID0gTWF0aC5tYXgoKF9jID0gcDEuYWx0KSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwLCAoX2QgPSBwMi5hbHQpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDApO1xuICAgICAgICAgICAgdmFyIGRBbHQgPSBtYXhBbHQgLSBtaW5BbHQ7XG4gICAgICAgICAgICB2YXIgZGlzdGFuY2UxID0gdGhpcy5kaXN0YW5jZShwMSk7XG4gICAgICAgICAgICB2YXIgZGlzdGFuY2UyID0gdGhpcy5kaXN0YW5jZShwMik7XG4gICAgICAgICAgICB2YXIgdG90YWxEaXN0YW5jZSA9IGRpc3RhbmNlMSArIGRpc3RhbmNlMjtcbiAgICAgICAgICAgIGlmICgoKF9lID0gcDEuYWx0KSAhPT0gbnVsbCAmJiBfZSAhPT0gdm9pZCAwID8gX2UgOiAwKSA9PT0gbWluQWx0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hbHQgPSBtaW5BbHQgKyBkaXN0YW5jZTEgLyB0b3RhbERpc3RhbmNlICogZEFsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYWx0ID0gbWluQWx0ICsgZGlzdGFuY2UyIC8gdG90YWxEaXN0YW5jZSAqIGRBbHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICByZXR1cm4gRFBvaW50O1xufSgpKTtcbmV4cG9ydCB7IERQb2ludCB9O1xuIiwiaW1wb3J0IHsgRFBvaW50LCBFQVJUSF9SQURJVVNfSU5fTUVURVJTIH0gZnJvbSAnLi9EUG9pbnQnO1xuaW1wb3J0IHsgRFBvbHlnb24gfSBmcm9tICcuL0RQb2x5Z29uJztcbmltcG9ydCB7IGNoZWNrRnVuY3Rpb24gfSBmcm9tICcuL3V0aWxzJztcbnZhciBEQ2lyY2xlID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEQ2lyY2xlKGNlbnRlciwgcikge1xuICAgICAgICBpZiAoY2VudGVyID09PSB2b2lkIDApIHsgY2VudGVyID0gRFBvaW50Lnplcm8oKTsgfVxuICAgICAgICBpZiAociA9PT0gdm9pZCAwKSB7IHIgPSAwOyB9XG4gICAgICAgIHRoaXMuY2VudGVyID0gY2VudGVyO1xuICAgICAgICB0aGlzLnIgPSByO1xuICAgIH1cbiAgICBEQ2lyY2xlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFwiKFwiLmNvbmNhdCh0aGlzLmNlbnRlci50b1N0cmluZygpLCBcIiwgXCIpLmNvbmNhdCh0aGlzLnIsIFwiKVwiKTtcbiAgICB9O1xuICAgIERDaXJjbGUucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4geyBjZW50ZXI6IHRoaXMuY2VudGVyLCByOiB0aGlzLnIgfTtcbiAgICB9O1xuICAgIERDaXJjbGUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IERDaXJjbGUodGhpcy5jZW50ZXIsIHRoaXMucik7XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5maW5kUG9pbnRzID0gZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgaWYgKHRoaXMuZXF1YWwoYykpIHtcbiAgICAgICAgICAgIHJldHVybiBJbmZpbml0eTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX2EgPSB0aGlzLCBfYiA9IF9hLmNlbnRlciwgeDAgPSBfYi54LCB5MCA9IF9iLnksIHIwID0gX2EucjtcbiAgICAgICAgdmFyIF9jID0gYy5jZW50ZXIsIHgxID0gX2MueCwgeTEgPSBfYy55LCByMSA9IGMucjtcbiAgICAgICAgdmFyIHIwMiA9IHIwICogcjA7XG4gICAgICAgIHZhciBkID0gdGhpcy5jZW50ZXIuZGlzdGFuY2UoYy5jZW50ZXIpO1xuICAgICAgICB2YXIgYSA9IChyMDIgLSByMSAqIHIxICsgZCAqIGQpIC8gKDIgKiBkKTtcbiAgICAgICAgdmFyIGggPSBNYXRoLnNxcnQocjAyIC0gYSAqIGEpO1xuICAgICAgICB2YXIgYWQgPSBhIC8gZDtcbiAgICAgICAgdmFyIGR5ID0geTEgLSB5MDtcbiAgICAgICAgdmFyIGR4ID0geDEgLSB4MDtcbiAgICAgICAgdmFyIGhkID0gaCAvIGQ7XG4gICAgICAgIHZhciB4MiA9IHgwICsgYWQgKiAoeDEgLSB4MCk7XG4gICAgICAgIHZhciB5MiA9IHkwICsgYWQgKiAoeTEgLSB5MCk7XG4gICAgICAgIHZhciB4MzEgPSB4MiArIGhkICogZHk7XG4gICAgICAgIHZhciB5MzEgPSB5MiAtIGhkICogZHg7XG4gICAgICAgIHZhciB4MzIgPSB4MiAtIGhkICogZHk7XG4gICAgICAgIHZhciB5MzIgPSB5MiArIGhkICogZHg7XG4gICAgICAgIHZhciByZXMgPSBbXTtcbiAgICAgICAgaWYgKCFpc05hTih4MzEpICYmICFpc05hTih5MzEpKSB7XG4gICAgICAgICAgICByZXMucHVzaChuZXcgRFBvaW50KHgzMSwgeTMxKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc05hTih4MzIpICYmICFpc05hTih5MzIpICYmICEoeDMxID09PSB4MzIgJiYgeTMxID09PSB5MzIpKSB7XG4gICAgICAgICAgICByZXMucHVzaChuZXcgRFBvaW50KHgzMiwgeTMyKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERDaXJjbGUucHJvdG90eXBlLmVxdWFsID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciBjZW50ZXIgPSBfYS5jZW50ZXIsIHIgPSBfYS5yO1xuICAgICAgICByZXR1cm4gdGhpcy5jZW50ZXIuZXF1YWwoY2VudGVyKSAmJiB0aGlzLnIgPT09IHI7XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5maW5kUG9seWdvbkluc2lkZSA9IGZ1bmN0aW9uIChwb2ludENvdW50LCBzdGFydEFuZ2xlLCBzdG9wQW5nbGUpIHtcbiAgICAgICAgaWYgKHBvaW50Q291bnQgPT09IHZvaWQgMCkgeyBwb2ludENvdW50ID0gNjQ7IH1cbiAgICAgICAgaWYgKHN0YXJ0QW5nbGUgPT09IHZvaWQgMCkgeyBzdGFydEFuZ2xlID0gMDsgfVxuICAgICAgICBpZiAoc3RvcEFuZ2xlID09PSB2b2lkIDApIHsgc3RvcEFuZ2xlID0gMiAqIE1hdGguUEk7IH1cbiAgICAgICAgdmFyIHN0ZXAgPSAyICogTWF0aC5QSSAvIHBvaW50Q291bnQ7XG4gICAgICAgIHZhciBwb2ludHMgPSBbXTtcbiAgICAgICAgdmFyIGFuZ2xlID0gc3RhcnRBbmdsZTtcbiAgICAgICAgd2hpbGUgKGFuZ2xlIDwgc3RvcEFuZ2xlIC0gc3RlcCkge1xuICAgICAgICAgICAgcG9pbnRzLnB1c2gobmV3IERQb2ludCh0aGlzLnIpLnNjYWxlKE1hdGguY29zKGFuZ2xlKSwgTWF0aC5zaW4oYW5nbGUpKVxuICAgICAgICAgICAgICAgIC5tb3ZlKHRoaXMuY2VudGVyKSk7XG4gICAgICAgICAgICBhbmdsZSArPSBzdGVwO1xuICAgICAgICB9XG4gICAgICAgIHZhciB4ID0gdGhpcy5yICogTWF0aC5jb3Moc3RvcEFuZ2xlKSArIHRoaXMuY2VudGVyLng7XG4gICAgICAgIHZhciB5ID0gdGhpcy5yICogTWF0aC5zaW4oc3RvcEFuZ2xlKSArIHRoaXMuY2VudGVyLnk7XG4gICAgICAgIHBvaW50cy5wdXNoKG5ldyBEUG9pbnQoeCwgeSkpO1xuICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKHBvaW50cyk7XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5maW5kUG9seWdvbkluc2lkZU9uU3BoZXJlID0gZnVuY3Rpb24gKHBvaW50Q291bnQsIHN0YXJ0QW5nbGUsIHN0b3BBbmdsZSkge1xuICAgICAgICBpZiAocG9pbnRDb3VudCA9PT0gdm9pZCAwKSB7IHBvaW50Q291bnQgPSA2NDsgfVxuICAgICAgICBpZiAoc3RhcnRBbmdsZSA9PT0gdm9pZCAwKSB7IHN0YXJ0QW5nbGUgPSAwOyB9XG4gICAgICAgIGlmIChzdG9wQW5nbGUgPT09IHZvaWQgMCkgeyBzdG9wQW5nbGUgPSAyICogTWF0aC5QSTsgfVxuICAgICAgICBjaGVja0Z1bmN0aW9uKCdmaW5kUG9seWdvbkluc2lkZU9uU3BoZXJlJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdjZW50ZXInKVxuICAgICAgICAgICAgLnNob3VsZEJlRGVncmVlKHRoaXMuY2VudGVyKTtcbiAgICAgICAgdmFyIHN0ZXAgPSAyICogTWF0aC5QSSAvIHBvaW50Q291bnQ7XG4gICAgICAgIHZhciBwb2ludHMgPSBbXTtcbiAgICAgICAgdmFyIGFuZ2xlID0gc3RhcnRBbmdsZTtcbiAgICAgICAgd2hpbGUgKGFuZ2xlIDwgc3RvcEFuZ2xlIC0gc3RlcCkge1xuICAgICAgICAgICAgcG9pbnRzLnB1c2godGhpcy5zcGhlcmVPZmZzZXQoYW5nbGUpKTtcbiAgICAgICAgICAgIGFuZ2xlICs9IHN0ZXA7XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRzLnB1c2godGhpcy5zcGhlcmVPZmZzZXQoc3RvcEFuZ2xlKSk7XG4gICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24ocG9pbnRzKTtcbiAgICB9O1xuICAgIERDaXJjbGUucHJvdG90eXBlLnNwaGVyZU9mZnNldCA9IGZ1bmN0aW9uIChiZWFyaW5nLCBlYXJ0aFJhZGl1cykge1xuICAgICAgICBpZiAoZWFydGhSYWRpdXMgPT09IHZvaWQgMCkgeyBlYXJ0aFJhZGl1cyA9IEVBUlRIX1JBRElVU19JTl9NRVRFUlM7IH1cbiAgICAgICAgdmFyIF9hID0gdGhpcy5jZW50ZXIuY2xvbmUoKS5kZWdyZWVUb1JhZGlhbnMoKSwgbG9uMSA9IF9hLngsIGxhdDEgPSBfYS55O1xuICAgICAgICB2YXIgZEJ5UiA9IHRoaXMuciAvIGVhcnRoUmFkaXVzO1xuICAgICAgICB2YXIgbGF0ID0gTWF0aC5hc2luKE1hdGguc2luKGxhdDEpICogTWF0aC5jb3MoZEJ5UikgK1xuICAgICAgICAgICAgTWF0aC5jb3MobGF0MSkgKiBNYXRoLnNpbihkQnlSKSAqIE1hdGguY29zKGJlYXJpbmcpKTtcbiAgICAgICAgdmFyIGxvbiA9IGxvbjEgK1xuICAgICAgICAgICAgTWF0aC5hdGFuMihNYXRoLnNpbihiZWFyaW5nKSAqIE1hdGguc2luKGRCeVIpICogTWF0aC5jb3MobGF0MSksIE1hdGguY29zKGRCeVIpIC0gTWF0aC5zaW4obGF0MSkgKiBNYXRoLnNpbihsYXQpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQobG9uLCBsYXQpLnJhZGlhbnNUb0RlZ3JlZXMoKTtcbiAgICB9O1xuICAgIHJldHVybiBEQ2lyY2xlO1xufSgpKTtcbmV4cG9ydCB7IERDaXJjbGUgfTtcbiIsInZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbnZhciBGYXN0U2VhcmNoID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBGYXN0U2VhcmNoKCkge1xuICAgICAgICB0aGlzLnNlYXJjaFN0b3JlID0ge307XG4gICAgfVxuICAgIEZhc3RTZWFyY2gucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChwb2ludHMpIHtcbiAgICAgICAgdmFyIGVfMSwgX2E7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBwb2ludHNfMSA9IF9fdmFsdWVzKHBvaW50cyksIHBvaW50c18xXzEgPSBwb2ludHNfMS5uZXh0KCk7ICFwb2ludHNfMV8xLmRvbmU7IHBvaW50c18xXzEgPSBwb2ludHNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2IgPSBwb2ludHNfMV8xLnZhbHVlLCB4ID0gX2IueCwgeSA9IF9iLnksIHogPSBfYi56O1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWFyY2hTdG9yZVt4XSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0b3JlW3hdID0ge307XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWFyY2hTdG9yZVt4XVt5XSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0b3JlW3hdW3ldID0ge307XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU3RvcmVbeF1beV1beiB8fCAndW5kZWZpbmVkJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAocG9pbnRzXzFfMSAmJiAhcG9pbnRzXzFfMS5kb25lICYmIChfYSA9IHBvaW50c18xLnJldHVybikpIF9hLmNhbGwocG9pbnRzXzEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBGYXN0U2VhcmNoLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciB4ID0gX2EueCwgeSA9IF9hLnksIHogPSBfYS56O1xuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF0pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF1beV0pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hTdG9yZVt4XVt5XVt6IHx8ICd1bmRlZmluZWQnXTtcbiAgICB9O1xuICAgIHJldHVybiBGYXN0U2VhcmNoO1xufSgpKTtcbmV4cG9ydCB7IEZhc3RTZWFyY2ggfTtcbiIsInZhciBfX3JlYWQgPSAodGhpcyAmJiB0aGlzLl9fcmVhZCkgfHwgZnVuY3Rpb24gKG8sIG4pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gICAgaWYgKCFtKSByZXR1cm4gbztcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgICB0cnkge1xuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGFyO1xufTtcbnZhciBfX3NwcmVhZEFycmF5ID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5KSB8fCBmdW5jdGlvbiAodG8sIGZyb20sIHBhY2spIHtcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xufTtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbmltcG9ydCB7IERQb2ludCB9IGZyb20gJy4vRFBvaW50JztcbmltcG9ydCB7IERQb2x5Z29uLCBNSU5fUE9JTlRTX0lOX1ZBTElEX1BPTFlHT04gfSBmcm9tICcuL0RQb2x5Z29uJztcbmltcG9ydCB7IEZhc3RTZWFyY2ggfSBmcm9tICcuL0Zhc3RTZWFyY2gnO1xuaW1wb3J0IHsgY3JlYXRlQXJyYXkgfSBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCB2YXIgVHJhY2VNYXRyaXhWYWx1ZXM7XG4oZnVuY3Rpb24gKFRyYWNlTWF0cml4VmFsdWVzKSB7XG4gICAgVHJhY2VNYXRyaXhWYWx1ZXNbVHJhY2VNYXRyaXhWYWx1ZXNbXCJmXCJdID0gMF0gPSBcImZcIjtcbiAgICBUcmFjZU1hdHJpeFZhbHVlc1tUcmFjZU1hdHJpeFZhbHVlc1tcInRcIl0gPSAxXSA9IFwidFwiO1xufSkoVHJhY2VNYXRyaXhWYWx1ZXMgfHwgKFRyYWNlTWF0cml4VmFsdWVzID0ge30pKTtcbnZhciBnZXRCeVBvc2l0aW9uID0gZnVuY3Rpb24gKG0sIHAsIGRlZmF1bHRWYWx1ZSkge1xuICAgIGlmIChkZWZhdWx0VmFsdWUgPT09IHZvaWQgMCkgeyBkZWZhdWx0VmFsdWUgPSBUcmFjZU1hdHJpeFZhbHVlcy5mOyB9XG4gICAgaWYgKG1bcC55XSA9PT0gdW5kZWZpbmVkIHx8IG1bcC55XVtwLnhdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIG1bcC55XVtwLnhdO1xufTtcbnZhciBzZXRCeVBvc2l0aW9uID0gZnVuY3Rpb24gKG0sIHAsIHZhbHVlKSB7XG4gICAgaWYgKG1bcC55XSA9PT0gdW5kZWZpbmVkIHx8IG1bcC55XVtwLnhdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBtW3AueV1bcC54XSA9IHZhbHVlO1xuICAgIHJldHVybiBtW3AueV1bcC54XTtcbn07XG52YXIgVHJhY2VNYXRyaXggPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFRyYWNlTWF0cml4KHMsIGYpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdGhpcy5hcHByb3hpbWF0aW9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5maW5kR3JvdXBCeUluZGV4ID0gZnVuY3Rpb24gKG0sIHMpIHtcbiAgICAgICAgICAgIHZhciByZXMgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgICAgIGlmIChzICYmIGdldEJ5UG9zaXRpb24obSwgcykgPT09IFRyYWNlTWF0cml4VmFsdWVzLnQpIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaChzKTtcbiAgICAgICAgICAgICAgICB2YXIgc3RhcnRJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgdmFyIG1hcmtlZCA9IFRyYWNlTWF0cml4LmNyZWF0ZU1hdHJpeChfdGhpcy5zaXplLCBmdW5jdGlvbiAoKSB7IHJldHVybiBUcmFjZU1hdHJpeFZhbHVlcy5mOyB9KTtcbiAgICAgICAgICAgICAgICBzZXRCeVBvc2l0aW9uKG1hcmtlZCwgcywgVHJhY2VNYXRyaXhWYWx1ZXMudCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHN0YXJ0SW5kZXggPCByZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByID0gcmVzLmF0KHN0YXJ0SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gLTE7IGkgPCAyOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAtMTsgaiA8IDI7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IERQb2ludChyLnggKyBpLCByLnkgKyBqKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0QnlQb3NpdGlvbihtYXJrZWQsIHQsIFRyYWNlTWF0cml4VmFsdWVzLnQpID09PSBUcmFjZU1hdHJpeFZhbHVlcy5mICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEJ5UG9zaXRpb24obSwgdCwgVHJhY2VNYXRyaXhWYWx1ZXMuZikgPT09IFRyYWNlTWF0cml4VmFsdWVzLnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2godCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJ5UG9zaXRpb24obWFya2VkLCB0LCBUcmFjZU1hdHJpeFZhbHVlcy50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3RhcnRJbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZmluZEFsbEdyb3Vwc0luTWF0cml4ID0gZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgICAgIHZhciBmaXJzdE1hcmsgPSBfdGhpcy5maW5kTWFya2VkKG0pO1xuICAgICAgICAgICAgaWYgKCFmaXJzdE1hcmspIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZ3JvdXAgPSBfdGhpcy5maW5kR3JvdXBCeUluZGV4KG0sIGZpcnN0TWFyayk7XG4gICAgICAgICAgICB2YXIgZ3JvdXBzID0gW2dyb3VwXTtcbiAgICAgICAgICAgIHZhciBncm91cFN1bSA9IGdyb3VwLmxlbmd0aDtcbiAgICAgICAgICAgIHZhciBhbGxHcm91cHMgPSBfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoZ3JvdXAucG9pbnRzKSwgZmFsc2UpO1xuICAgICAgICAgICAgdmFyIGZzID0gbmV3IEZhc3RTZWFyY2goKTtcbiAgICAgICAgICAgIGZzLmFkZChhbGxHcm91cHMpO1xuICAgICAgICAgICAgd2hpbGUgKGdyb3VwU3VtIDwgX3RoaXMudG90YWxDb3VudEluTWF0cml4KG0pKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1hcmsgPSBfdGhpcy5maW5kTWFya2VkKG0pO1xuICAgICAgICAgICAgICAgIHdoaWxlIChtYXJrICYmIGZzLmZpbmQobWFyaykpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyayA9IF90aGlzLmZpbmRNYXJrZWQobSwgbWFyayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBuZXh0R3JvdXAgPSBfdGhpcy5maW5kR3JvdXBCeUluZGV4KG0sIG1hcmspO1xuICAgICAgICAgICAgICAgIGdyb3VwU3VtICs9IG5leHRHcm91cC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgYWxsR3JvdXBzID0gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoYWxsR3JvdXBzKSwgZmFsc2UpLCBfX3JlYWQobmV4dEdyb3VwLnBvaW50cyksIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBmcy5hZGQobmV4dEdyb3VwLnBvaW50cyk7XG4gICAgICAgICAgICAgICAgZ3JvdXBzLnB1c2gobmV4dEdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBncm91cHMuZmlsdGVyKGZ1bmN0aW9uIChnKSB7IHJldHVybiBnLmxlbmd0aCA+IDI7IH0pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRyYWNlR3JvdXAgPSBmdW5jdGlvbiAobSwgZ3JvdXApIHtcbiAgICAgICAgICAgIHZhciB0cmFjZURpcmVjdGlvbnMgPSBbXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgtMSwgLTEpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoLTEsIDApLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoLTEsIDEpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoMCwgMSksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgxLCAxKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDEsIDApLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoMSwgLTEpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoMCwgLTEpXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgdmFyIGxlZnQgPSBmdW5jdGlvbiAoZCkgeyByZXR1cm4gKGQgKyB0cmFjZURpcmVjdGlvbnMubGVuZ3RoICsgMSkgJSB0cmFjZURpcmVjdGlvbnMubGVuZ3RoOyB9O1xuICAgICAgICAgICAgdmFyIHJpZ2h0ID0gZnVuY3Rpb24gKGQpIHsgcmV0dXJuIChkICsgdHJhY2VEaXJlY3Rpb25zLmxlbmd0aCAtIDEpICUgdHJhY2VEaXJlY3Rpb25zLmxlbmd0aDsgfTtcbiAgICAgICAgICAgIGlmIChncm91cC5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgdmFyIHQgPSBncm91cC5hdCgwKS5jbG9uZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24oW3QsIHQsIHRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBwb2ludHMgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgICAgIHZhciBkaXJlY3Rpb24gPSAwO1xuICAgICAgICAgICAgdmFyIHByZXZEaXJlY3Rpb24gPSBJbmZpbml0eTtcbiAgICAgICAgICAgIHZhciBwID0gZ3JvdXAuYXQoMCk7XG4gICAgICAgICAgICB3aGlsZSAoIXAuZXF1YWwoZ3JvdXAuYXQoMCkpIHx8IHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5leHRWYWx1ZSA9IGdldEJ5UG9zaXRpb24obSwgcC5jbG9uZSgpLm1vdmUodHJhY2VEaXJlY3Rpb25zW2RpcmVjdGlvbl0pKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5leHROZWlnaGJvdXJWYWx1ZSA9IGdldEJ5UG9zaXRpb24obSwgcC5jbG9uZSgpLm1vdmUodHJhY2VEaXJlY3Rpb25zW2xlZnQoZGlyZWN0aW9uKV0pKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRWYWx1ZSA9PT0gVHJhY2VNYXRyaXhWYWx1ZXMudCAmJiBuZXh0TmVpZ2hib3VyVmFsdWUgPT09IFRyYWNlTWF0cml4VmFsdWVzLmYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IHJpZ2h0KGRpcmVjdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwcmV2RGlyZWN0aW9uICE9PSBkaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnB1c2gocCk7XG4gICAgICAgICAgICAgICAgICAgIHByZXZEaXJlY3Rpb24gPSBkaXJlY3Rpb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHAgPSBwLmNsb25lKCkubW92ZSh0cmFjZURpcmVjdGlvbnNbZGlyZWN0aW9uXSk7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gbGVmdChsZWZ0KGRpcmVjdGlvbikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF90aGlzLmFwcHJveGltYXRpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcG9pbnRzLmFwcHJveGltYXRpb24oKS5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBvaW50cy5jbG9uZSgpLmNsb3NlKCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY3JlYXRlSG9sZU1hdHJpeCA9IGZ1bmN0aW9uIChncm91cCkge1xuICAgICAgICAgICAgdmFyIGVfMSwgX2E7XG4gICAgICAgICAgICB2YXIgZnVsbFRyYWNlRGlyZWN0aW9ucyA9IFtcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KC0xLCAwKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDAsIDEpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoMSwgMCksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgwLCAtMSlcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBncm91cC5wcmVwYXJlVG9GYXN0U2VhcmNoKCk7XG4gICAgICAgICAgICB2YXIgdG1wTWF0cml4ID0gVHJhY2VNYXRyaXhcbiAgICAgICAgICAgICAgICAuY3JlYXRlTWF0cml4KF90aGlzLnNpemUsIGZ1bmN0aW9uIChwKSB7IHJldHVybiBncm91cC5mYXN0SGFzKHApID8gVHJhY2VNYXRyaXhWYWx1ZXMudCA6IFRyYWNlTWF0cml4VmFsdWVzLmY7IH0pO1xuICAgICAgICAgICAgdmFyIHN0YXJ0Q29vcmRzID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF90aGlzLnNpemUudzsgaSsrKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRDb29yZHMucHVzaChuZXcgRFBvaW50KGksIC0xKSk7XG4gICAgICAgICAgICAgICAgc3RhcnRDb29yZHMucHVzaChuZXcgRFBvaW50KGksIF90aGlzLnNpemUuaCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfdGhpcy5zaXplLmg7IGkrKykge1xuICAgICAgICAgICAgICAgIHN0YXJ0Q29vcmRzLnB1c2gobmV3IERQb2ludCgtMSwgaSkpO1xuICAgICAgICAgICAgICAgIHN0YXJ0Q29vcmRzLnB1c2gobmV3IERQb2ludChfdGhpcy5zaXplLncsIGkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChzdGFydENvb3Jkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB2YXIgcG9pbnQgPSBzdGFydENvb3Jkcy5wb3AoKTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBmdWxsVHJhY2VEaXJlY3Rpb25zXzEgPSAoZV8xID0gdm9pZCAwLCBfX3ZhbHVlcyhmdWxsVHJhY2VEaXJlY3Rpb25zKSksIGZ1bGxUcmFjZURpcmVjdGlvbnNfMV8xID0gZnVsbFRyYWNlRGlyZWN0aW9uc18xLm5leHQoKTsgIWZ1bGxUcmFjZURpcmVjdGlvbnNfMV8xLmRvbmU7IGZ1bGxUcmFjZURpcmVjdGlvbnNfMV8xID0gZnVsbFRyYWNlRGlyZWN0aW9uc18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRpcmVjdGlvbiA9IGZ1bGxUcmFjZURpcmVjdGlvbnNfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRtcFBvaW50ID0gcG9pbnQuY2xvbmUoKS5tb3ZlKGRpcmVjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBnZXRCeVBvc2l0aW9uKHRtcE1hdHJpeCwgdG1wUG9pbnQsIFRyYWNlTWF0cml4VmFsdWVzLnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBUcmFjZU1hdHJpeFZhbHVlcy5mKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QnlQb3NpdGlvbih0bXBNYXRyaXgsIHRtcFBvaW50LCBUcmFjZU1hdHJpeFZhbHVlcy50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENvb3Jkcy5wdXNoKHRtcFBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZ1bGxUcmFjZURpcmVjdGlvbnNfMV8xICYmICFmdWxsVHJhY2VEaXJlY3Rpb25zXzFfMS5kb25lICYmIChfYSA9IGZ1bGxUcmFjZURpcmVjdGlvbnNfMS5yZXR1cm4pKSBfYS5jYWxsKGZ1bGxUcmFjZURpcmVjdGlvbnNfMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciB0ID0gX3RoaXMucmV2ZXJzZU1hdHJpeCh0bXBNYXRyaXgpO1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzLnRvdGFsQ291bnRJbk1hdHJpeCh0KSA/IHQgOiBudWxsO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNpemUgPSBzLmNsb25lKCkuc2NhbGUoNCk7XG4gICAgICAgIHZhciB0ID0gVHJhY2VNYXRyaXguY3JlYXRlTWF0cml4KHRoaXMuc2l6ZSwgZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHAuY2xvbmUoKS5tb2QoNCksIHggPSBfYS54LCB5ID0gX2EueTtcbiAgICAgICAgICAgIGlmIChbMSwgMl0uaW5jbHVkZXMoeCkgJiYgWzEsIDJdLmluY2x1ZGVzKHkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGYocC5jbG9uZSgpLmRpdig0KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gVHJhY2VNYXRyaXhWYWx1ZXMuZjtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubSA9IFRyYWNlTWF0cml4LmNyZWF0ZU1hdHJpeCh0aGlzLnNpemUpO1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHRoaXMuc2l6ZS55IC0gMTsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8IHRoaXMuc2l6ZS54IC0gMTsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRbaV1bal0gPT09IFRyYWNlTWF0cml4VmFsdWVzLnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tW2kgLSAxXVtqIC0gMV0gPSBUcmFjZU1hdHJpeFZhbHVlcy50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1baSAtIDFdW2pdID0gVHJhY2VNYXRyaXhWYWx1ZXMudDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tW2kgLSAxXVtqICsgMV0gPSBUcmFjZU1hdHJpeFZhbHVlcy50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1baV1baiAtIDFdID0gVHJhY2VNYXRyaXhWYWx1ZXMudDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tW2ldW2pdID0gVHJhY2VNYXRyaXhWYWx1ZXMudDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tW2ldW2ogKyAxXSA9IFRyYWNlTWF0cml4VmFsdWVzLnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubVtpICsgMV1baiAtIDFdID0gVHJhY2VNYXRyaXhWYWx1ZXMudDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tW2kgKyAxXVtqXSA9IFRyYWNlTWF0cml4VmFsdWVzLnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubVtpICsgMV1baiArIDFdID0gVHJhY2VNYXRyaXhWYWx1ZXMudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgVHJhY2VNYXRyaXgucHJvdG90eXBlLmZ1bGxNYXRyaXhUcmFjZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGdyb3VwcyA9IHRoaXMuZmluZEFsbEdyb3Vwc0luTWF0cml4KHRoaXMubSk7XG4gICAgICAgIHZhciBwYXRocyA9IGdyb3Vwcy5tYXAoZnVuY3Rpb24gKGcpIHsgcmV0dXJuIF90aGlzLnRyYWNlR3JvdXAoX3RoaXMubSwgZyk7IH0pO1xuICAgICAgICB2YXIgaG9sZU1hdHJpeHMgPSBncm91cHMubWFwKHRoaXMuY3JlYXRlSG9sZU1hdHJpeCk7XG4gICAgICAgIHZhciBob2xlc0dyb3VwcyA9IGhvbGVNYXRyaXhzLm1hcChmdW5jdGlvbiAobSkgeyByZXR1cm4gbSAmJiBfdGhpcy5maW5kQWxsR3JvdXBzSW5NYXRyaXgobSk7IH0pO1xuICAgICAgICB2YXIgaG9sZXNQYXRocyA9IGhvbGVzR3JvdXBzLm1hcChmdW5jdGlvbiAoaGcsIGluZGV4KSB7IHJldHVybiBoZyAmJiBoZy5tYXAoZnVuY3Rpb24gKGcpIHsgcmV0dXJuIF90aGlzXG4gICAgICAgICAgICAudHJhY2VHcm91cChob2xlTWF0cml4c1tpbmRleF0sIGcpOyB9KS5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIubGVuZ3RoID4gTUlOX1BPSU5UU19JTl9WQUxJRF9QT0xZR09OOyB9KTsgfSk7XG4gICAgICAgIHJldHVybiBncm91cHMubWFwKGZ1bmN0aW9uIChnLCBpbmRleCkge1xuICAgICAgICAgICAgdmFyIHJlcyA9IHBhdGhzW2luZGV4XTtcbiAgICAgICAgICAgIGlmIChob2xlc0dyb3Vwc1tpbmRleF0gJiYgaG9sZXNHcm91cHNbaW5kZXhdLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlcy5ob2xlcyA9IGhvbGVzUGF0aHNbaW5kZXhdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlcy5sb29wKClcbiAgICAgICAgICAgICAgICAuZGl2aWRlKDQpXG4gICAgICAgICAgICAgICAgLnJvdW5kKClcbiAgICAgICAgICAgICAgICAucnVuKCk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgVHJhY2VNYXRyaXgucHJvdG90eXBlLnJldmVyc2VNYXRyaXggPSBmdW5jdGlvbiAobSkge1xuICAgICAgICByZXR1cm4gVHJhY2VNYXRyaXguY3JlYXRlTWF0cml4KHRoaXMuc2l6ZSwgZnVuY3Rpb24gKHApIHsgcmV0dXJuIGdldEJ5UG9zaXRpb24obSwgcCkgPT09IFRyYWNlTWF0cml4VmFsdWVzLmYgPyBUcmFjZU1hdHJpeFZhbHVlcy50IDogVHJhY2VNYXRyaXhWYWx1ZXMuZjsgfSk7XG4gICAgfTtcbiAgICBUcmFjZU1hdHJpeC5wcm90b3R5cGUuZmluZE1hcmtlZCA9IGZ1bmN0aW9uIChtLCBpbml0KSB7XG4gICAgICAgIHZhciBzID0gdGhpcy5zaXplO1xuICAgICAgICB2YXIgaW5pID0gZmFsc2U7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy53OyBpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcy5oOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoIWluaSAmJiBpbml0KSB7XG4gICAgICAgICAgICAgICAgICAgIGkgPSBpbml0Lng7XG4gICAgICAgICAgICAgICAgICAgIGogPSBpbml0Lnk7XG4gICAgICAgICAgICAgICAgICAgIGluaSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZ2V0QnlQb3NpdGlvbihtLCBuZXcgRFBvaW50KGksIGopKSA9PT0gVHJhY2VNYXRyaXhWYWx1ZXMudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludChpLCBqKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICBUcmFjZU1hdHJpeC5wcm90b3R5cGUudG90YWxDb3VudEluTWF0cml4ID0gZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgdmFyIHJlcyA9IDA7XG4gICAgICAgIHZhciBzID0gdGhpcy5zaXplO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMudzsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHMuaDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGdldEJ5UG9zaXRpb24obSwgbmV3IERQb2ludChpLCBqKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBUcmFjZU1hdHJpeC5jcmVhdGVNYXRyaXggPSBmdW5jdGlvbiAoc2l6ZSwgZikge1xuICAgICAgICBpZiAoZiA9PT0gdm9pZCAwKSB7IGYgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBUcmFjZU1hdHJpeFZhbHVlcy5mOyB9OyB9XG4gICAgICAgIHJldHVybiBjcmVhdGVBcnJheShzaXplLmgpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uICh2LCBpKSB7IHJldHVybiBjcmVhdGVBcnJheShzaXplLncpLm1hcChmdW5jdGlvbiAodjIsIGopIHsgcmV0dXJuIGYobmV3IERQb2ludChqLCBpKSk7IH0pOyB9KTtcbiAgICB9O1xuICAgIHJldHVybiBUcmFjZU1hdHJpeDtcbn0oKSk7XG5leHBvcnQgeyBUcmFjZU1hdHJpeCB9O1xuIiwidmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbnZhciBfX3JlYWQgPSAodGhpcyAmJiB0aGlzLl9fcmVhZCkgfHwgZnVuY3Rpb24gKG8sIG4pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gICAgaWYgKCFtKSByZXR1cm4gbztcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgICB0cnkge1xuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGFyO1xufTtcbmltcG9ydCB7IERQb2x5Z29uIH0gZnJvbSAnLi9EUG9seWdvbic7XG5pbXBvcnQgeyBEUG9pbnQgfSBmcm9tICcuL0RQb2ludCc7XG5pbXBvcnQgeyBpc0RlZkFuZE5vdE51bGwgfSBmcm9tICcuL3V0aWxzJztcbnZhciBJbnRlcnBvbGF0aW9uTWF0cml4ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBJbnRlcnBvbGF0aW9uTWF0cml4KGJib3hMaWtlLCBzdGVwU2l6ZSwga2V5cywgcCkge1xuICAgICAgICBpZiAocCA9PT0gdm9pZCAwKSB7IHAgPSAyOyB9XG4gICAgICAgIHRoaXMuc3RlcFNpemUgPSBzdGVwU2l6ZTtcbiAgICAgICAgdGhpcy5wID0gcDtcbiAgICAgICAgdGhpcy5wb2ludHMgPSBbXTtcbiAgICAgICAgdGhpcy5jZWxscyA9IHt9O1xuICAgICAgICB0aGlzLmFsbENlbGxzID0gW107XG4gICAgICAgIHRoaXMubWluUG9pbnQgPSBiYm94TGlrZS5taW5Qb2ludDtcbiAgICAgICAgdGhpcy5tYXhQb2ludCA9IGJib3hMaWtlLm1heFBvaW50O1xuICAgICAgICB0aGlzLnNpemVQb2x5ID0gRFBvbHlnb24uY3JlYXRlU3F1YXJlQnlTaXplKG5ldyBEUG9pbnQodGhpcy5zdGVwU2l6ZSkpO1xuICAgICAgICB0aGlzLnNpemUgPSB0aGlzLm1heFBvaW50LmNsb25lKCkubW92ZSh0aGlzLm1pblBvaW50LmNsb25lKCkubWludXMoKSlcbiAgICAgICAgICAgIC5kaXZpZGUodGhpcy5zdGVwU2l6ZSlcbiAgICAgICAgICAgIC5jZWlsKCk7XG4gICAgICAgIHRoaXMua2V5cyA9IEFycmF5LmlzQXJyYXkoa2V5cykgPyBrZXlzIDogW2tleXNdO1xuICAgICAgICB0aGlzLmdlbmVyYXRlQ2VsbHMoKTtcbiAgICB9XG4gICAgSW50ZXJwb2xhdGlvbk1hdHJpeC5wcm90b3R5cGUuc2V0S25vd25Qb2ludHMgPSBmdW5jdGlvbiAocG9pbnRzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHRoaXMucG9pbnRzID0gcG9pbnRzIGluc3RhbmNlb2YgRFBvbHlnb24gPyBwb2ludHMucG9pbnRzIDogcG9pbnRzO1xuICAgICAgICB0aGlzLm1pblBvaW50LnNldFByb3BlcnRpZXModGhpcy5wb2ludHMucmVkdWNlKGZ1bmN0aW9uIChhLCB2KSB7IHJldHVybiBfdGhpcy5rZXlzXG4gICAgICAgICAgICAucmVkdWNlKGZ1bmN0aW9uIChhYSwgaykge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgYWFba10gPSBNYXRoLm1pbigoX2EgPSBhW2tdKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBJbmZpbml0eSwgdi5wcm9wZXJ0aWVzW2tdKTtcbiAgICAgICAgICAgIHJldHVybiBhYTtcbiAgICAgICAgfSwgYSk7IH0sIHt9KSk7XG4gICAgICAgIHRoaXMubWF4UG9pbnQuc2V0UHJvcGVydGllcyh0aGlzLnBvaW50cy5yZWR1Y2UoZnVuY3Rpb24gKGEsIHYpIHsgcmV0dXJuIF90aGlzLmtleXNcbiAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKGFhLCBrKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBhYVtrXSA9IE1hdGgubWF4KChfYSA9IGFba10pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IC1JbmZpbml0eSwgdi5wcm9wZXJ0aWVzW2tdKTtcbiAgICAgICAgICAgIHJldHVybiBhYTtcbiAgICAgICAgfSwgYSk7IH0sIHt9KSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgSW50ZXJwb2xhdGlvbk1hdHJpeC5wcm90b3R5cGUucG9zaXRpb25Ub0NlbGxDb29yZHMgPSBmdW5jdGlvbiAoZCkge1xuICAgICAgICByZXR1cm4gZC5jbG9uZSgpXG4gICAgICAgICAgICAubW92ZSh0aGlzLm1pblBvaW50LmNsb25lKCkubWludXMoKSlcbiAgICAgICAgICAgIC5kaXZpZGUodGhpcy5zdGVwU2l6ZSlcbiAgICAgICAgICAgIC5mbG9vcigpO1xuICAgIH07XG4gICAgSW50ZXJwb2xhdGlvbk1hdHJpeC5wcm90b3R5cGUuY2FsY3VsYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnNldEtub3duVmFsdWVzKCk7XG4gICAgICAgIHRoaXMuaW50ZXJwb2xhdGVWYWx1ZXMoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBJbnRlcnBvbGF0aW9uTWF0cml4LnByb3RvdHlwZS5nZXRDZWxsVmFsdWUgPSBmdW5jdGlvbiAoX2EsIGtleSkge1xuICAgICAgICB2YXIgeCA9IF9hLngsIHkgPSBfYS55O1xuICAgICAgICB2YXIgY2VsbCA9IHRoaXMuY2VsbHNbeF1beV07XG4gICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGtleSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ga2V5LnJlZHVjZShmdW5jdGlvbiAoYSwgaykge1xuICAgICAgICAgICAgICAgICAgICBhW2tdID0gY2VsbC5wcm9wZXJ0aWVzW2tdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY2VsbC5wcm9wZXJ0aWVzW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHt9LCBjZWxsLnByb3BlcnRpZXMpO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEludGVycG9sYXRpb25NYXRyaXgucHJvdG90eXBlLCBcImdldENlbGxEYXRhXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hbGxDZWxscy5yZWR1Y2UoZnVuY3Rpb24gKGEsIGMpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EgPSBjLnByb3BlcnRpZXMsIHggPSBfYS54LCB5ID0gX2EueSwgcHJvcHMgPSBfX3Jlc3QoX2EsIFtcInhcIiwgXCJ5XCJdKTtcbiAgICAgICAgICAgICAgICBhW3hdID0gYVt4XSB8fCB7fTtcbiAgICAgICAgICAgICAgICBhW3hdW3ldID0gX19hc3NpZ24oe30sIHByb3BzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShJbnRlcnBvbGF0aW9uTWF0cml4LnByb3RvdHlwZSwgXCJhbGxDZWxsc0Nsb25lXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hbGxDZWxscy5tYXAoZnVuY3Rpb24gKHApIHsgcmV0dXJuIHAuY2xvbmUoKTsgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBJbnRlcnBvbGF0aW9uTWF0cml4LnByb3RvdHlwZS5pbnRlcnBvbGF0ZVZhbHVlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHBvaW50cyA9IHRoaXMucG9pbnRzLm1hcChmdW5jdGlvbiAocCkgeyByZXR1cm4gX3RoaXMucG9zaXRpb25Ub0NlbGxDb29yZHMocCk7IH0pO1xuICAgICAgICB0aGlzLmFsbENlbGxzLmZvckVhY2goZnVuY3Rpb24gKGNlbGwpIHtcbiAgICAgICAgICAgIHZhciB0ID0gbmV3IERQb2ludChjZWxsLnByb3BlcnRpZXMueCwgY2VsbC5wcm9wZXJ0aWVzLnkpO1xuICAgICAgICAgICAgdmFyIGRpc3RhbmNlcyA9IHBvaW50cy5tYXAoZnVuY3Rpb24gKHApIHsgcmV0dXJuIE1hdGgucG93KHQuZGlzdGFuY2UocCksIF90aGlzLnApOyB9KTtcbiAgICAgICAgICAgIF90aGlzLmtleXMuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwoY2VsbC5wcm9wZXJ0aWVzW2tdKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBfYSA9IF9fcmVhZChkaXN0YW5jZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBkLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwoX3RoaXMucG9pbnRzW2ldLnByb3BlcnRpZXNba10pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhWzBdICs9IF90aGlzLnBvaW50c1tpXS5wcm9wZXJ0aWVzW2tdIC8gZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFbMV0gKz0gMSAvIGQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgICAgICAgICAgfSwgWzAsIDBdKSwgMiksIHZhbHVlU3VtID0gX2FbMF0sIG9uZVN1bSA9IF9hWzFdO1xuICAgICAgICAgICAgICAgIGNlbGwucHJvcGVydGllc1trXSA9IHZhbHVlU3VtIC8gb25lU3VtO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgSW50ZXJwb2xhdGlvbk1hdHJpeC5wcm90b3R5cGUuc2V0S25vd25WYWx1ZXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHRoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICAgIHZhciBfYSA9IF90aGlzLnBvc2l0aW9uVG9DZWxsQ29vcmRzKHApLCB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgICAgICBfdGhpcy5rZXlzLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5jZWxsc1t4XVt5XS5wcm9wZXJ0aWVzW2tdID0gcC5wcm9wZXJ0aWVzW2tdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgSW50ZXJwb2xhdGlvbk1hdHJpeC5wcm90b3R5cGUuZ2VuZXJhdGVDZWxscyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMubWluUG9pbnQueCwgeCA9IDA7IGkgPCB0aGlzLm1heFBvaW50Lng7IGkgKz0gdGhpcy5zdGVwU2l6ZSwgeCsrKSB7XG4gICAgICAgICAgICB0aGlzLmNlbGxzW3hdID0gdGhpcy5jZWxsc1t4XSB8fCB7fTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSB0aGlzLm1pblBvaW50LnksIHkgPSAwOyBqIDwgdGhpcy5tYXhQb2ludC55OyBqICs9IHRoaXMuc3RlcFNpemUsIHkrKykge1xuICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy5zaXplUG9seVxuICAgICAgICAgICAgICAgICAgICAuY2xvbmUoKVxuICAgICAgICAgICAgICAgICAgICAubG9vcCgpXG4gICAgICAgICAgICAgICAgICAgIC5tb3ZlKGksIGopXG4gICAgICAgICAgICAgICAgICAgIC5ydW4oKVxuICAgICAgICAgICAgICAgICAgICAuc2V0UHJvcGVydGllcyh7XG4gICAgICAgICAgICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgICAgICAgICAgIHk6IHlcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmNlbGxzW3hdW3ldID0gdDtcbiAgICAgICAgICAgICAgICB0aGlzLmFsbENlbGxzLnB1c2godCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBJbnRlcnBvbGF0aW9uTWF0cml4O1xufSgpKTtcbmV4cG9ydCB7IEludGVycG9sYXRpb25NYXRyaXggfTtcbiIsInZhciBfX3JlYWQgPSAodGhpcyAmJiB0aGlzLl9fcmVhZCkgfHwgZnVuY3Rpb24gKG8sIG4pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gICAgaWYgKCFtKSByZXR1cm4gbztcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgICB0cnkge1xuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGFyO1xufTtcbmltcG9ydCB7IERQb2ludCB9IGZyb20gJy4vRFBvaW50JztcbmltcG9ydCB7IGdhdXNzaWFuRWxpbWluYXRpb24gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEROdW1iZXJzIH0gZnJvbSAnLi9ETnVtYmVycyc7XG52YXIgRFBsYW5lID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEUGxhbmUoYSwgYiwgYywgZCwgcDEsIHAyLCBwMykge1xuICAgICAgICBpZiAocDEgPT09IHZvaWQgMCkgeyBwMSA9IERQb2ludC56ZXJvKCk7IH1cbiAgICAgICAgaWYgKHAyID09PSB2b2lkIDApIHsgcDIgPSBEUG9pbnQuemVybygpOyB9XG4gICAgICAgIGlmIChwMyA9PT0gdm9pZCAwKSB7IHAzID0gRFBvaW50Lnplcm8oKTsgfVxuICAgICAgICB0aGlzLmEgPSBhO1xuICAgICAgICB0aGlzLmIgPSBiO1xuICAgICAgICB0aGlzLmMgPSBjO1xuICAgICAgICB0aGlzLmQgPSBkO1xuICAgICAgICB0aGlzLnAxID0gcDE7XG4gICAgICAgIHRoaXMucDIgPSBwMjtcbiAgICAgICAgdGhpcy5wMyA9IHAzO1xuICAgIH1cbiAgICBEUGxhbmUuZmluZCA9IGZ1bmN0aW9uIChwMSwgcDIsIHAzKSB7XG4gICAgICAgIGlmIChwMS54ID09PSBwMi54ICYmIHAyLnggPT09IHAzLngpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBsYW5lKDEsIDAsIDAsIC1wMS54LCBwMSwgcDIsIHAzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocDEueSA9PT0gcDIueSAmJiBwMi55ID09PSBwMy55KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQbGFuZSgwLCAxLCAwLCAtcDEueSwgcDEsIHAyLCBwMyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHAxLnogPT09IHAyLnogJiYgcDIueiA9PT0gcDMueikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUGxhbmUoMCwgMCwgMSwgLXAxLnosIHAxLCBwMiwgcDMpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkID0gMTtcbiAgICAgICAgdmFyIF9hID0gX19yZWFkKGdhdXNzaWFuRWxpbWluYXRpb24oW1xuICAgICAgICAgICAgW3AxLngsIHAxLnksIHAxLnosIC1kXSxcbiAgICAgICAgICAgIFtwMi54LCBwMi55LCBwMi56LCAtZF0sXG4gICAgICAgICAgICBbcDMueCwgcDMueSwgcDMueiwgLWRdXG4gICAgICAgIF0pLCAzKSwgYSA9IF9hWzBdLCBiID0gX2FbMV0sIGMgPSBfYVsyXTtcbiAgICAgICAgcmV0dXJuIG5ldyBEUGxhbmUoYSwgYiwgYywgZCwgcDEsIHAyLCBwMyk7XG4gICAgfTtcbiAgICBEUGxhbmUucHJvdG90eXBlLnggPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAocCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgYSA9IF9hLmEsIGIgPSBfYS5iLCBjID0gX2EuYywgZCA9IF9hLmQ7XG4gICAgICAgICAgICB2YXIgeSA9IHAueSwgeiA9IHAuejtcbiAgICAgICAgICAgIHAueCA9IC0oYiAqIHkgKyBjICogeiArIGQpIC8gYTtcbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwLm1hcChmdW5jdGlvbiAodCkgeyByZXR1cm4gX3RoaXMueCh0KTsgfSk7XG4gICAgfTtcbiAgICBEUGxhbmUucHJvdG90eXBlLnkgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAocCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgYSA9IF9hLmEsIGIgPSBfYS5iLCBjID0gX2EuYywgZCA9IF9hLmQ7XG4gICAgICAgICAgICB2YXIgeCA9IHAueCwgeiA9IHAuejtcbiAgICAgICAgICAgIHAueSA9IC0oYSAqIHggKyBjICogeiArIGQpIC8gYjtcbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwLm1hcChmdW5jdGlvbiAodCkgeyByZXR1cm4gX3RoaXMueSh0KTsgfSk7XG4gICAgfTtcbiAgICBEUGxhbmUucHJvdG90eXBlLnogPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAocCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgYSA9IF9hLmEsIGIgPSBfYS5iLCBjID0gX2EuYywgZCA9IF9hLmQ7XG4gICAgICAgICAgICB2YXIgeCA9IHAueCwgeSA9IHAueTtcbiAgICAgICAgICAgIHAueiA9IC0oYSAqIHggKyBiICogeSArIGQpIC8gYztcbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwLm1hcChmdW5jdGlvbiAodCkgeyByZXR1cm4gX3RoaXMueih0KTsgfSk7XG4gICAgfTtcbiAgICBEUGxhbmUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBhID0gX2EuYSwgYiA9IF9hLmIsIGMgPSBfYS5jLCBkID0gX2EuZCwgcDEgPSBfYS5wMSwgcDIgPSBfYS5wMiwgcDMgPSBfYS5wMztcbiAgICAgICAgcmV0dXJuIG5ldyBEUGxhbmUoYSwgYiwgYywgZCwgcDEsIHAyLCBwMyk7XG4gICAgfTtcbiAgICBEUGxhbmUucHJvdG90eXBlLmRpc3RhbmNlID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgaWYgKHAgaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHZhciB4ID0gcC54LCB5ID0gcC55LCB6ID0gcC56O1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgYV8xID0gX2EuYSwgYl8xID0gX2EuYiwgY18xID0gX2EuYywgZF8xID0gX2EuZDtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyhhXzEgKiB4ICsgYl8xICogeSArIGNfMSAqIHogKyBkXzEpIC8gTWF0aC5zcXJ0KGFfMSAqIGFfMSArIGJfMSAqIGJfMSArIGNfMSAqIGNfMSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9iID0gcCwgYSA9IF9iLmEsIGIgPSBfYi5iLCBjID0gX2IuYywgZCA9IF9iLmQ7XG4gICAgICAgIHZhciByID0gdGhpcy5kO1xuICAgICAgICByZXR1cm4gTWF0aC5hYnMoZCAtIHIpIC8gTWF0aC5zcXJ0KGEgKiBhICsgYiAqIGIgKyBjICogYyk7XG4gICAgfTtcbiAgICBEUGxhbmUucHJvdG90eXBlLmVxdWFsID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIGEgPSBwLmEsIGIgPSBwLmIsIGMgPSBwLmMsIGQgPSBwLmQ7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIHEgPSBfYS5hLCB3ID0gX2EuYiwgZSA9IF9hLmMsIHIgPSBfYS5kO1xuICAgICAgICByZXR1cm4gRE51bWJlcnMubGlrZShhLCBxKSAmJlxuICAgICAgICAgICAgRE51bWJlcnMubGlrZShiLCB3KSAmJlxuICAgICAgICAgICAgRE51bWJlcnMubGlrZShjLCBlKSAmJlxuICAgICAgICAgICAgRE51bWJlcnMubGlrZShkLCByKTtcbiAgICB9O1xuICAgIERQbGFuZS5wcm90b3R5cGUuc2FtZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBhID0gcC5hLCBiID0gcC5iLCBjID0gcC5jLCBkID0gcC5kO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBxID0gX2EuYSwgdyA9IF9hLmIsIGUgPSBfYS5jLCByID0gX2EuZDtcbiAgICAgICAgdmFyIHQgPSBhIC8gcTtcbiAgICAgICAgdmFyIHkgPSBiIC8gdztcbiAgICAgICAgdmFyIHUgPSBjIC8gZTtcbiAgICAgICAgdmFyIGkgPSBkIC8gcjtcbiAgICAgICAgcmV0dXJuIEROdW1iZXJzLmxpa2UodCwgeSkgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UodCwgdSkgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UodCwgYykgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UodCwgaSk7XG4gICAgfTtcbiAgICBEUGxhbmUucHJvdG90eXBlLnBhcmFsbGVsID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIGEgPSBwLmEsIGIgPSBwLmIsIGMgPSBwLmMsIGQgPSBwLmQ7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIHEgPSBfYS5hLCB3ID0gX2EuYiwgZSA9IF9hLmMsIHIgPSBfYS5kO1xuICAgICAgICB2YXIgdCA9IGEgLyBxO1xuICAgICAgICB2YXIgeSA9IGIgLyB3O1xuICAgICAgICB2YXIgdSA9IGMgLyBlO1xuICAgICAgICB2YXIgaSA9IGQgLyByO1xuICAgICAgICByZXR1cm4gRE51bWJlcnMubGlrZSh0LCB5KSAmJlxuICAgICAgICAgICAgRE51bWJlcnMubGlrZSh0LCB1KSAmJlxuICAgICAgICAgICAgRE51bWJlcnMubGlrZSh0LCBjKSAmJlxuICAgICAgICAgICAgIUROdW1iZXJzLmxpa2UodCwgaSk7XG4gICAgfTtcbiAgICByZXR1cm4gRFBsYW5lO1xufSgpKTtcbmV4cG9ydCB7IERQbGFuZSB9O1xuIl0sIm5hbWVzIjpbIl9fcmVhZCIsInRoaXMiLCJfX3NwcmVhZEFycmF5IiwiX192YWx1ZXMiLCJfX2Fzc2lnbiIsIm9wZXJhdGlvbiIsImpzdHNJbyIsIl9fcmVzdCIsIlRyYWNlTWF0cml4VmFsdWVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7SUFBQSxJQUFJQSxRQUFNLEdBQUcsQ0FBQ0MsU0FBSSxJQUFJQSxTQUFJLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN0RCxJQUFJLElBQUksQ0FBQyxHQUFHLE9BQU8sTUFBTSxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLElBQUksSUFBSTtJQUNSLFFBQVEsT0FBTyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25GLEtBQUs7SUFDTCxJQUFJLE9BQU8sS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7SUFDM0MsWUFBWTtJQUNaLFFBQVEsSUFBSTtJQUNaLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFD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QyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckgsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxNQUFNLEtBQUssVUFBVSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3SixJQUFJLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3RFLElBQUksU0FBUyxJQUFJLENBQUMsRUFBRSxFQUFFO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEVBQUUsTUFBTSxJQUFJLFNBQVMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3RFLFFBQVEsT0FBTyxDQUFDLEVBQUUsSUFBSTtJQUN0QixZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pLLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxZQUFZLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QixnQkFBZ0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTTtJQUM5QyxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3hFLGdCQUFnQixLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO0lBQ2pFLGdCQUFnQixLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTO0lBQ2pFLGdCQUFnQjtJQUNoQixvQkFBb0IsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRTtJQUNoSSxvQkFBb0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUMxRyxvQkFBb0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ3pGLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDdkYsb0JBQW9CLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDMUMsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTO0lBQzNDLGFBQWE7SUFDYixZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDbEUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3pGLEtBQUs7SUFDTCxDQUFDLENBQUM7SUFDRixJQUFJRSxVQUFRLEdBQUcsQ0FBQ0YsU0FBSSxJQUFJQSxTQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxFQUFFO0lBQ3RELElBQUksSUFBSSxDQUFDLEdBQUcsT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRixJQUFJLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsT0FBTztJQUNsRCxRQUFRLElBQUksRUFBRSxZQUFZO0lBQzFCLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQy9DLFlBQVksT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEQsU0FBUztJQUNULEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcseUJBQXlCLEdBQUcsaUNBQWlDLENBQUMsQ0FBQztJQUMzRixDQUFDLENBQUM7SUFDRixJQUFJRCxRQUFNLEdBQUcsQ0FBQ0MsU0FBSSxJQUFJQSxTQUFJLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN0RCxJQUFJLElBQUksQ0FBQyxHQUFHLE9BQU8sTUFBTSxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLElBQUksSUFBSTtJQUNSLFFBQVEsT0FBTyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25GLEtBQUs7SUFDTCxJQUFJLE9BQU8sS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7SUFDM0MsWUFBWTtJQUNaLFFBQVEsSUFBSTtJQUNaLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdELFNBQVM7SUFDVCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUN6QyxLQUFLO0lBQ0wsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUMsQ0FBQztJQUNGLElBQUlDLGVBQWEsR0FBRyxDQUFDRCxTQUFJLElBQUlBLFNBQUksQ0FBQyxhQUFhLEtBQUssVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtJQUM5RSxJQUFJLElBQUksSUFBSSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3pGLFFBQVEsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUU7SUFDaEMsWUFBWSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsU0FBUztJQUNULEtBQUs7SUFDTCxJQUFJLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQyxDQUFDO0lBUUYsSUFBSSxFQUFFLEdBQUdJLGNBQVMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsUUFBUSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUM7QUFDL0csUUFBQywyQkFBMkIsR0FBRyxFQUFFO0lBQzNDLElBQUksbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0lBQzlCLElBQUkscUJBQXFCLEdBQUcsR0FBRyxDQUFDO0lBQ2hDLElBQUksOEJBQThCLEdBQUcsS0FBSyxDQUFDO0lBQzNDLElBQUksY0FBYyxHQUFHLFVBQVUsUUFBUSxFQUFFO0lBQ3pDLElBQUksSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixJQUFJLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsSUFBSSxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLElBQUksT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUMsQ0FBQztJQUNGLElBQUksaUJBQWlCLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQzNDLElBQUksSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDekIsSUFBSSxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssRUFBRSxFQUFFLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyRixJQUFJLElBQUksWUFBWSxFQUFFO0lBQ3RCLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSztJQUNMLElBQUksSUFBSTtJQUNSLFFBQVEsS0FBSyxJQUFJLEVBQUUsR0FBR0YsVUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtJQUM1RyxZQUFZLElBQUksRUFBRSxHQUFHSCxRQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELFlBQVksSUFBSSxRQUFRLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRSxZQUFZLElBQUksUUFBUSxFQUFFO0lBQzFCLGdCQUFnQixPQUFPLElBQUksQ0FBQztJQUM1QixhQUFhO0lBQ2IsU0FBUztJQUNULEtBQUs7SUFDTCxJQUFJLE9BQU8sS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7SUFDN0MsWUFBWTtJQUNaLFFBQVEsSUFBSTtJQUNaLFlBQVksSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRSxTQUFTO0lBQ1QsZ0JBQWdCLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDN0MsS0FBSztJQUNMLElBQUksSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLElBQUksSUFBSTtJQUNSLFFBQVEsS0FBSyxJQUFJLEVBQUUsR0FBR0csVUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO0lBQ3hHLFlBQVksSUFBSSxFQUFFLEdBQUdILFFBQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RyxZQUFZLElBQUksS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFlBQVksSUFBSSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkQsWUFBWSxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLFlBQVksSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDbEQsZ0JBQWdCLE9BQU8sSUFBSSxLQUFLLENBQUM7SUFDakMsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixnQkFBZ0IsT0FBTyxJQUFJLEtBQUssQ0FBQztJQUNqQyxhQUFhO0lBQ2IsU0FBUztJQUNULEtBQUs7SUFDTCxJQUFJLE9BQU8sS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7SUFDN0MsWUFBWTtJQUNaLFFBQVEsSUFBSTtJQUNaLFlBQVksSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRSxTQUFTO0lBQ1QsZ0JBQWdCLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDN0MsS0FBSztJQUNMLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDOUIsSUFBSSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdkIsSUFBSSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLElBQUksSUFBSSxVQUFVLEdBQUcsR0FBRyxFQUFFO0lBQzFCLFFBQVEsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN2QixLQUFLO0lBQ0wsU0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLEdBQUcsR0FBRyxFQUFFO0lBQ3ZELFFBQVEsTUFBTSxHQUFHLElBQUksQ0FBQztJQUN0QixLQUFLO0lBQ0wsU0FBUztJQUNULFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNDLEtBQUs7SUFDTCxJQUFJLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUMsQ0FBQztBQUNDLFFBQUMsUUFBUSxJQUFJLFlBQVk7SUFDNUIsSUFBSSxTQUFTLFFBQVEsQ0FBQyxPQUFPLEVBQUU7SUFDL0IsUUFBUSxJQUFJLE9BQU8sS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRTtJQUNqRCxRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQy9CLFFBQVEsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDN0IsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUN4QixRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQzlCLEtBQUs7SUFDTCxJQUFJLFFBQVEsQ0FBQywwQkFBMEIsR0FBRyxVQUFVLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDdkUsUUFBUSxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDL0UsYUFBYSxJQUFJLEVBQUU7SUFDbkIsYUFBYSxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzNCLGFBQWEsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUN0QixhQUFhLGVBQWUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNsQyxhQUFhLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxvQkFBb0IsR0FBRyxVQUFVLElBQUksRUFBRTtJQUNwRCxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztJQUMzRixRQUFRLE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDeEUsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLFVBQVUsSUFBSSxFQUFFO0lBQ3RDLFFBQVEsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3BCLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUMvQixRQUFRLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsUUFBUSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDM0IsUUFBUSxJQUFJO0lBQ1osWUFBWSxLQUFLLElBQUksRUFBRSxHQUFHRyxVQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDM0YsZ0JBQWdCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDckMsZ0JBQWdCLElBQUksT0FBTyxFQUFFO0lBQzdCLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLGlCQUFpQjtJQUNqQixnQkFBZ0IsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRTtJQUNsRCxvQkFBb0IsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDO0lBQ3ZDLG9CQUFvQixJQUFJLE9BQU8sRUFBRTtJQUNqQyx3QkFBd0IsQ0FBQyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7SUFDM0Msd0JBQXdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDOUMscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsU0FBUztJQUNULFFBQVEsT0FBTyxLQUFLLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtJQUNqRCxnQkFBZ0I7SUFDaEIsWUFBWSxJQUFJO0lBQ2hCLGdCQUFnQixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLGFBQWE7SUFDYixvQkFBb0IsRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUNqRCxTQUFTO0lBQ1QsUUFBUSxPQUFPLE1BQU0sQ0FBQztJQUN0QixLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyx5QkFBeUIsR0FBRyxVQUFVLElBQUksRUFBRTtJQUN6RCxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztJQUMzRixRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUU7SUFDeEMsWUFBWSxPQUFPLENBQUMsQ0FBQztJQUNyQixTQUFTO0lBQ1QsUUFBUSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUMzRCxZQUFZLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsRCxTQUFTO0lBQ1QsUUFBUSxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUMsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsWUFBWSxHQUFHLFVBQVUsR0FBRyxFQUFFO0lBQzNDLFFBQVEsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVDLFFBQVEsSUFBSSxHQUFHLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUNqQyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDM0MsWUFBWSxJQUFJLE1BQU0sR0FBRywrQ0FBK0MsQ0FBQztJQUN6RSxZQUFZLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsWUFBWSxJQUFJLEVBQUUsR0FBR0gsUUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSTtJQUMzQyxpQkFBaUIsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM5QixpQkFBaUIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztJQUNyRSxpQkFBaUIsR0FBRyxDQUFDLFVBQVUsS0FBSyxFQUFFLEVBQUUsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkksWUFBWSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO0lBQ3ZDLGdCQUFnQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNuQyxhQUFhO0lBQ2IsWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLFNBQVM7SUFDVCxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDOUMsWUFBWSxJQUFJLE1BQU0sR0FBRyw0Q0FBNEMsQ0FBQztJQUN0RSxZQUFZLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsWUFBWSxHQUFHLEdBQUcsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJO0lBQzlDLGlCQUFpQixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRyxTQUFTO0lBQ1QsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ3pDLFlBQVksR0FBRyxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsU0FBUztJQUNULFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxJQUFJLEVBQUU7SUFDbEQsUUFBUSxPQUFPLElBQUksUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQy9HLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsWUFBWTtJQUMxQyxRQUFRLE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFO0lBQ3hELFFBQVEsR0FBRyxFQUFFLFlBQVk7SUFDekIsWUFBWSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDaEMsU0FBUztJQUNULFFBQVEsR0FBRyxFQUFFLFVBQVUsQ0FBQyxFQUFFO0lBQzFCLFlBQVksSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDN0IsU0FBUztJQUNULFFBQVEsVUFBVSxFQUFFLEtBQUs7SUFDekIsUUFBUSxZQUFZLEVBQUUsSUFBSTtJQUMxQixLQUFLLENBQUMsQ0FBQztJQUNQLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRTtJQUN0RCxRQUFRLEdBQUcsRUFBRSxZQUFZO0lBQ3pCLFlBQVksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hGLFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDdEQsUUFBUSxHQUFHLEVBQUUsWUFBWTtJQUN6QixZQUFZLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkYsU0FBUztJQUNULFFBQVEsVUFBVSxFQUFFLEtBQUs7SUFDekIsUUFBUSxZQUFZLEVBQUUsSUFBSTtJQUMxQixLQUFLLENBQUMsQ0FBQztJQUNQLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRTtJQUN0RCxRQUFRLEdBQUcsRUFBRSxZQUFZO0lBQ3pCLFlBQVksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hGLFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDdEQsUUFBUSxHQUFHLEVBQUUsWUFBWTtJQUN6QixZQUFZLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkYsU0FBUztJQUNULFFBQVEsVUFBVSxFQUFFLEtBQUs7SUFDekIsUUFBUSxZQUFZLEVBQUUsSUFBSTtJQUMxQixLQUFLLENBQUMsQ0FBQztJQUNQLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRTtJQUM3RCxRQUFRLEdBQUcsRUFBRSxZQUFZO0lBQ3pCLFlBQVksSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQyxZQUFZLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtJQUN2RCxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLGdCQUFnQixDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsSSxnQkFBZ0IsT0FBTyxDQUFDLENBQUM7SUFDekIsYUFBYSxDQUFDO0lBQ2QsaUJBQWlCLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlGLFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUU7SUFDeEQsUUFBUSxHQUFHLEVBQUUsWUFBWTtJQUN6QixZQUFZLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxTQUFTO0lBQ1QsUUFBUSxVQUFVLEVBQUUsS0FBSztJQUN6QixRQUFRLFlBQVksRUFBRSxJQUFJO0lBQzFCLEtBQUssQ0FBQyxDQUFDO0lBQ1AsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO0lBQ25ELFFBQVEsR0FBRyxFQUFFLFlBQVk7SUFDekIsWUFBWSxPQUFPLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN6QyxTQUFTO0lBQ1QsUUFBUSxVQUFVLEVBQUUsS0FBSztJQUN6QixRQUFRLFlBQVksRUFBRSxJQUFJO0lBQzFCLEtBQUssQ0FBQyxDQUFDO0lBQ1AsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO0lBQ25ELFFBQVEsR0FBRyxFQUFFLFlBQVk7SUFDekIsWUFBWSxPQUFPLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN6QyxTQUFTO0lBQ1QsUUFBUSxVQUFVLEVBQUUsS0FBSztJQUN6QixRQUFRLFlBQVksRUFBRSxJQUFJO0lBQzFCLEtBQUssQ0FBQyxDQUFDO0lBQ1AsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFO0lBQ3BELFFBQVEsR0FBRyxFQUFFLFlBQVk7SUFDekIsWUFBWSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUIsU0FBUztJQUNULFFBQVEsVUFBVSxFQUFFLEtBQUs7SUFDekIsUUFBUSxZQUFZLEVBQUUsSUFBSTtJQUMxQixLQUFLLENBQUMsQ0FBQztJQUNQLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRTtJQUNwRCxRQUFRLEdBQUcsRUFBRSxZQUFZO0lBQ3pCLFlBQVksT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzFCLFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUU7SUFDeEQsUUFBUSxHQUFHLEVBQUUsWUFBWTtJQUN6QixZQUFZLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztJQUMxRixZQUFZLE9BQU8sSUFBSSxRQUFRLENBQUM7SUFDaEMsZ0JBQWdCLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7SUFDdEMsZ0JBQWdCLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7SUFDdEMsZ0JBQWdCLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7SUFDdEMsZ0JBQWdCLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7SUFDdEMsZ0JBQWdCLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7SUFDdEMsYUFBYSxDQUFDLENBQUM7SUFDZixTQUFTO0lBQ1QsUUFBUSxVQUFVLEVBQUUsS0FBSztJQUN6QixRQUFRLFlBQVksRUFBRSxJQUFJO0lBQzFCLEtBQUssQ0FBQyxDQUFDO0lBQ1AsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFO0lBQ3RELFFBQVEsR0FBRyxFQUFFLFlBQVk7SUFDekIsWUFBWSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUMsWUFBWSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwQyxTQUFTO0lBQ1QsUUFBUSxVQUFVLEVBQUUsS0FBSztJQUN6QixRQUFRLFlBQVksRUFBRSxJQUFJO0lBQzFCLEtBQUssQ0FBQyxDQUFDO0lBQ1AsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFO0lBQ3pELFFBQVEsR0FBRyxFQUFFLFlBQVk7SUFDekIsWUFBWSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDMUQsWUFBWSxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxQyxTQUFTO0lBQ1QsUUFBUSxVQUFVLEVBQUUsS0FBSztJQUN6QixRQUFRLFlBQVksRUFBRSxJQUFJO0lBQzFCLEtBQUssQ0FBQyxDQUFDO0lBQ1AsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFO0lBQzFELFFBQVEsR0FBRyxFQUFFLFlBQVk7SUFDekIsWUFBWSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDaEMsU0FBUztJQUNULFFBQVEsVUFBVSxFQUFFLEtBQUs7SUFDekIsUUFBUSxZQUFZLEVBQUUsSUFBSTtJQUMxQixLQUFLLENBQUMsQ0FBQztJQUNQLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRTtJQUM3RCxRQUFRLEdBQUcsRUFBRSxZQUFZO0lBQ3pCLFlBQVksSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQzFELFlBQVksT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUMsU0FBUztJQUNULFFBQVEsVUFBVSxFQUFFLEtBQUs7SUFDekIsUUFBUSxZQUFZLEVBQUUsSUFBSTtJQUMxQixLQUFLLENBQUMsQ0FBQztJQUNQLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRTtJQUMxRCxRQUFRLEdBQUcsRUFBRSxZQUFZO0lBQ3pCLFlBQVksT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3BDLFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUU7SUFDeEQsUUFBUSxHQUFHLEVBQUUsWUFBWTtJQUN6QixZQUFZLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDdkMsU0FBUztJQUNULFFBQVEsVUFBVSxFQUFFLEtBQUs7SUFDekIsUUFBUSxZQUFZLEVBQUUsSUFBSTtJQUMxQixLQUFLLENBQUMsQ0FBQztJQUNQLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRTtJQUM1RCxRQUFRLEdBQUcsRUFBRSxZQUFZO0lBQ3pCLFlBQVksT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDO0lBQ2pELFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBRTtJQUNsRSxRQUFRLEdBQUcsRUFBRSxZQUFZO0lBQ3pCLFlBQVksT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDO0lBQ3ZELFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUU7SUFDM0QsUUFBUSxHQUFHLEVBQUUsWUFBWTtJQUN6QixZQUFZLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUN4QixZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixZQUFZLElBQUk7SUFDaEIsZ0JBQWdCLEtBQUssSUFBSSxFQUFFLEdBQUdHLFVBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtJQUNoSCxvQkFBb0IsSUFBSSxFQUFFLEdBQUdILFFBQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekMsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixZQUFZLE9BQU8sS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7SUFDckQsb0JBQW9CO0lBQ3BCLGdCQUFnQixJQUFJO0lBQ3BCLG9CQUFvQixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLGlCQUFpQjtJQUNqQix3QkFBd0IsRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUNyRCxhQUFhO0lBQ2IsWUFBWSxPQUFPLENBQUMsQ0FBQztJQUNyQixTQUFTO0lBQ1QsUUFBUSxVQUFVLEVBQUUsS0FBSztJQUN6QixRQUFRLFlBQVksRUFBRSxJQUFJO0lBQzFCLEtBQUssQ0FBQyxDQUFDO0lBQ1AsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUU7SUFDakUsUUFBUSxHQUFHLEVBQUUsWUFBWTtJQUN6QixZQUFZLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUN4QixZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixZQUFZLElBQUk7SUFDaEIsZ0JBQWdCLEtBQUssSUFBSSxFQUFFLEdBQUdHLFVBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtJQUNoSCxvQkFBb0IsSUFBSSxFQUFFLEdBQUdILFFBQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixZQUFZLE9BQU8sS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7SUFDckQsb0JBQW9CO0lBQ3BCLGdCQUFnQixJQUFJO0lBQ3BCLG9CQUFvQixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLGlCQUFpQjtJQUNqQix3QkFBd0IsRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUNyRCxhQUFhO0lBQ2IsWUFBWSxPQUFPLENBQUMsQ0FBQztJQUNyQixTQUFTO0lBQ1QsUUFBUSxVQUFVLEVBQUUsS0FBSztJQUN6QixRQUFRLFlBQVksRUFBRSxJQUFJO0lBQzFCLEtBQUssQ0FBQyxDQUFDO0lBQ1AsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFO0lBQ3RELFFBQVEsR0FBRyxFQUFFLFlBQVk7SUFDekIsWUFBWSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDeEIsWUFBWSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDeEIsWUFBWSxJQUFJO0lBQ2hCLGdCQUFnQixLQUFLLElBQUksRUFBRSxHQUFHRyxVQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO0lBQy9ILG9CQUFvQixJQUFJLEVBQUUsR0FBR0gsUUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pILG9CQUFvQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxPQUFPLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQ3JELG9CQUFvQjtJQUNwQixnQkFBZ0IsSUFBSTtJQUNwQixvQkFBb0IsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RSxpQkFBaUI7SUFDakIsd0JBQXdCLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDckQsYUFBYTtJQUNiLFlBQVksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRyxTQUFTO0lBQ1QsUUFBUSxVQUFVLEVBQUUsS0FBSztJQUN6QixRQUFRLFlBQVksRUFBRSxJQUFJO0lBQzFCLEtBQUssQ0FBQyxDQUFDO0lBQ1AsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLEVBQUU7SUFDdEUsUUFBUSxHQUFHLEVBQUUsWUFBWTtJQUN6QixZQUFZLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEYsWUFBWSxJQUFJLGVBQWUsR0FBRyxVQUFVLFVBQVUsRUFBRTtJQUN4RCxnQkFBZ0IsSUFBSSxVQUFVLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDOUQsZ0JBQWdCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUMvQixnQkFBZ0IsS0FBSyxJQUFJLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDNUQsb0JBQW9CLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakQsb0JBQW9CLElBQUksT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxFQUFFO0lBQ3hELHdCQUF3QixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLHFCQUFxQjtJQUNyQixvQkFBb0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxpQkFBaUI7SUFDakIsZ0JBQWdCLE9BQU8sU0FBUyxDQUFDO0lBQ2pDLGFBQWEsQ0FBQztJQUNkLFlBQVksSUFBSSxPQUFPLEdBQUcsZUFBZSxFQUFFLENBQUM7SUFDNUMsWUFBWSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDM0IsWUFBWSxPQUFPLE9BQU8sRUFBRTtJQUM1QixnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRTtJQUNuQyxvQkFBb0IsT0FBTyxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUQsaUJBQWlCO0lBQ2pCLHFCQUFxQjtJQUNyQixvQkFBb0IsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxvQkFBb0IsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLG9CQUFvQixPQUFPLEdBQUcsZUFBZSxFQUFFLENBQUM7SUFDaEQsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzVCLFlBQVksT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsU0FBUztJQUNULFFBQVEsVUFBVSxFQUFFLEtBQUs7SUFDekIsUUFBUSxZQUFZLEVBQUUsSUFBSTtJQUMxQixLQUFLLENBQUMsQ0FBQztJQUNQLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFFO0lBQ2hFLFFBQVEsR0FBRyxFQUFFLFlBQVk7SUFDekIsWUFBWSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDeEIsWUFBWSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekMsWUFBWSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDM0IsWUFBWSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbkQsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0MsZ0JBQWdCLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFDLGdCQUFnQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLGdCQUFnQixJQUFJLE9BQU8sR0FBRyxVQUFVLENBQUMsRUFBRTtJQUMzQyxvQkFBb0IsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxvQkFBb0IsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxvQkFBb0IsSUFBSSxpQkFBaUIsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9FLG9CQUFvQixJQUFJLGlCQUFpQjtJQUN6Qyx3QkFBd0IsQ0FBQ0UsZUFBYSxDQUFDQSxlQUFhLENBQUMsRUFBRSxFQUFFRixRQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFQSxRQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3ZMLHdCQUF3QixJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEUsd0JBQXdCLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRUUsZUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVGLFFBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLHdCQUF3QixDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzVELHdCQUF3QixDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzVELHFCQUFxQjtJQUNyQixpQkFBaUIsQ0FBQztJQUNsQixnQkFBZ0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMzRCxvQkFBb0IsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxJQUFJO0lBQ2hCLGdCQUFnQixLQUFLLElBQUksRUFBRSxHQUFHRyxVQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDdEcsb0JBQW9CLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDdkMsb0JBQW9CLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QyxvQkFBb0IsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtJQUMzQyx3QkFBd0IsSUFBSSxPQUFPLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDbkQsNEJBQTRCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyRCw0QkFBNEIsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUQsNEJBQTRCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtJQUN2QyxnQ0FBZ0MsSUFBSSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0YsZ0NBQWdDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuSSxnQ0FBZ0MsSUFBSSxTQUFTLElBQUksUUFBUSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFO0lBQzVGLG9DQUFvQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUVELGVBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUVGLFFBQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuSixvQ0FBb0MsQ0FBQyxHQUFHLFFBQVEsQ0FBQztJQUNqRCxpQ0FBaUM7SUFDakMsNkJBQTZCO0lBQzdCLHlCQUF5QixDQUFDO0lBQzFCLHdCQUF3QixLQUFLLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDcEUsNEJBQTRCLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2Qyx5QkFBeUI7SUFDekIscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxPQUFPLEtBQUssRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQ3JELG9CQUFvQjtJQUNwQixnQkFBZ0IsSUFBSTtJQUNwQixvQkFBb0IsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RSxpQkFBaUI7SUFDakIsd0JBQXdCLEVBQUUsSUFBSSxHQUFHLEVBQUUsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDckQsYUFBYTtJQUNiLFlBQVksT0FBTyxDQUFDLENBQUM7SUFDckIsU0FBUztJQUNULFFBQVEsVUFBVSxFQUFFLEtBQUs7SUFDekIsUUFBUSxZQUFZLEVBQUUsSUFBSTtJQUMxQixLQUFLLENBQUMsQ0FBQztJQUNQLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRTtJQUN2RCxRQUFRLEdBQUcsRUFBRSxZQUFZO0lBQ3pCLFlBQVksT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLDJCQUEyQixDQUFDO0lBQzdELFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUU7SUFDdkQsUUFBUSxHQUFHLEVBQUUsWUFBWTtJQUN6QixZQUFZLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixTQUFTO0lBQ1QsUUFBUSxVQUFVLEVBQUUsS0FBSztJQUN6QixRQUFRLFlBQVksRUFBRSxJQUFJO0lBQzFCLEtBQUssQ0FBQyxDQUFDO0lBQ1AsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFO0lBQ3hELFFBQVEsR0FBRyxFQUFFLFlBQVk7SUFDekIsWUFBWSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsU0FBUztJQUNULFFBQVEsVUFBVSxFQUFFLEtBQUs7SUFDekIsUUFBUSxZQUFZLEVBQUUsSUFBSTtJQUMxQixLQUFLLENBQUMsQ0FBQztJQUNQLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRTtJQUN0RCxRQUFRLEdBQUcsRUFBRSxZQUFZO0lBQ3pCLFlBQVksT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUMsU0FBUztJQUNULFFBQVEsVUFBVSxFQUFFLEtBQUs7SUFDekIsUUFBUSxZQUFZLEVBQUUsSUFBSTtJQUMxQixLQUFLLENBQUMsQ0FBQztJQUNQLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFFO0lBQ2xFLFFBQVEsR0FBRyxFQUFFLFlBQVk7SUFDekIsWUFBWSxJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNqQyxZQUFZLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDaEMsWUFBWSxJQUFJLGFBQWEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQy9DLFlBQVksSUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDO0lBQ3RDLFlBQVksSUFBSTtJQUNoQixnQkFBZ0IsS0FBSyxJQUFJLEVBQUUsR0FBR0csVUFBUSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtJQUNqSCxvQkFBb0IsSUFBSSxFQUFFLEdBQUdILFFBQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsb0JBQW9CLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNyQyxvQkFBb0IsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzlDLG9CQUFvQixJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDOUMsb0JBQW9CLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztJQUN0QyxvQkFBb0IsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQzlDLG9CQUFvQixJQUFJO0lBQ3hCLHdCQUF3QixLQUFLLElBQUksRUFBRSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRUcsVUFBUSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDckksNEJBQTRCLElBQUksRUFBRSxHQUFHSCxRQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0UsNEJBQTRCLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsNEJBQTRCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsNEJBQTRCLElBQUksQ0FBQyxJQUFJLFNBQVMsRUFBRTtJQUNoRCxnQ0FBZ0MsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUM5QyxnQ0FBZ0MsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUNuRCw2QkFBNkI7SUFDN0IsNEJBQTRCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNuRSxnQ0FBZ0MsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkYsZ0NBQWdDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEQsZ0NBQWdDLElBQUksQ0FBQyxJQUFJLFFBQVEsRUFBRTtJQUNuRCxvQ0FBb0MsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNqRCxvQ0FBb0MsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUN4RCxvQ0FBb0MsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUN4RCxpQ0FBaUM7SUFDakMsNkJBQTZCO0lBQzdCLHlCQUF5QjtJQUN6QixxQkFBcUI7SUFDckIsb0JBQW9CLE9BQU8sS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7SUFDN0QsNEJBQTRCO0lBQzVCLHdCQUF3QixJQUFJO0lBQzVCLDRCQUE0QixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLHlCQUF5QjtJQUN6QixnQ0FBZ0MsRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUM3RCxxQkFBcUI7SUFDckIsb0JBQW9CLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxjQUFjLEVBQUU7SUFDL0Usd0JBQXdCLFNBQVM7SUFDakMscUJBQXFCO0lBQ3JCLG9CQUFvQixJQUFJLFNBQVMsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzVFLG9CQUFvQixJQUFJLGNBQWMsR0FBRyxTQUFTLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckYsb0JBQW9CLElBQUksY0FBYyxHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNyRixvQkFBb0IsSUFBSSxXQUFXLEdBQUcsSUFBSSxRQUFRLENBQUM7SUFDbkQsd0JBQXdCLGNBQWM7SUFDdEMsd0JBQXdCLGNBQWM7SUFDdEMsd0JBQXdCLGNBQWMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xHLHdCQUF3QixjQUFjLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNsRyxxQkFBcUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQy9CLG9CQUFvQixJQUFJLFdBQVcsQ0FBQyxJQUFJLEdBQUcsVUFBVSxFQUFFO0lBQ3ZELHdCQUF3QixhQUFhLEdBQUcsV0FBVyxDQUFDO0lBQ3BELHdCQUF3QixVQUFVLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztJQUN0RCxxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixZQUFZLE9BQU8sS0FBSyxFQUFFLEVBQUUsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7SUFDckQsb0JBQW9CO0lBQ3BCLGdCQUFnQixJQUFJO0lBQ3BCLG9CQUFvQixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLGlCQUFpQjtJQUNqQix3QkFBd0IsRUFBRSxJQUFJLEdBQUcsRUFBRSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUNyRCxhQUFhO0lBQ2IsWUFBWSxPQUFPLGFBQWEsQ0FBQztJQUNqQyxTQUFTO0lBQ1QsUUFBUSxVQUFVLEVBQUUsS0FBSztJQUN6QixRQUFRLFlBQVksRUFBRSxJQUFJO0lBQzFCLEtBQUssQ0FBQyxDQUFDO0lBQ1AsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFO0lBQ3hELFFBQVEsR0FBRyxFQUFFLFlBQVk7SUFDekIsWUFBWSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEMsWUFBWSxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQzVDLFlBQVksSUFBSSxDQUFDLFdBQVcsRUFBRTtJQUM5QixnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzVCLGFBQWE7SUFDYixZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixZQUFZLEdBQUc7SUFDZixnQkFBZ0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNoQyxnQkFBZ0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNqQyxnQkFBZ0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNsQyxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEQsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3hILG9CQUFvQixDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLGlCQUFpQjtJQUNqQixxQkFBcUI7SUFDckIsb0JBQW9CLE1BQU07SUFDMUIsaUJBQWlCO0lBQ2pCLGFBQWEsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQy9CLFlBQVksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLFlBQVksSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLFlBQVksR0FBRztJQUNmLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQztJQUNyQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0IsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN2RCxvQkFBb0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekMsb0JBQW9CLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsb0JBQW9CLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLG9CQUFvQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RCxvQkFBb0IsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDNUgsd0JBQXdCLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0MscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixnQkFBZ0IsU0FBUyxFQUFFLENBQUM7SUFDNUIsYUFBYSxRQUFRLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFNBQVMsR0FBRyxxQkFBcUIsRUFBRTtJQUMxRSxZQUFZLElBQUksQ0FBQyxXQUFXLEVBQUU7SUFDOUIsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QixhQUFhO0lBQ2IsWUFBWSxPQUFPLENBQUMsQ0FBQztJQUNyQixTQUFTO0lBQ1QsUUFBUSxVQUFVLEVBQUUsS0FBSztJQUN6QixRQUFRLFlBQVksRUFBRSxJQUFJO0lBQzFCLEtBQUssQ0FBQyxDQUFDO0lBQ1AsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFO0lBQzdELFFBQVEsR0FBRyxFQUFFLFlBQVk7SUFDekIsWUFBWSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7SUFDekIsWUFBWSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDeEIsWUFBWSxJQUFJO0lBQ2hCLGdCQUFnQixLQUFLLElBQUksRUFBRSxHQUFHRyxVQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRTtJQUMzRCxxQkFBcUIsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtJQUN6RixvQkFBb0IsSUFBSSxFQUFFLEdBQUdILFFBQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqSCxvQkFBb0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0MsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixZQUFZLE9BQU8sTUFBTSxFQUFFLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDeEQsb0JBQW9CO0lBQ3BCLGdCQUFnQixJQUFJO0lBQ3BCLG9CQUFvQixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLGlCQUFpQjtJQUNqQix3QkFBd0IsRUFBRSxJQUFJLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUN2RCxhQUFhO0lBQ2IsWUFBWSxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDM0IsU0FBUztJQUNULFFBQVEsVUFBVSxFQUFFLEtBQUs7SUFDekIsUUFBUSxZQUFZLEVBQUUsSUFBSTtJQUMxQixLQUFLLENBQUMsQ0FBQztJQUNQLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRTtJQUMzRCxRQUFRLEdBQUcsRUFBRSxZQUFZO0lBQ3pCLFlBQVksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO0lBQ2xDLGdCQUFnQixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQyxhQUFhO0lBQ2IsWUFBWSxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQyxTQUFTO0lBQ1QsUUFBUSxVQUFVLEVBQUUsS0FBSztJQUN6QixRQUFRLFlBQVksRUFBRSxJQUFJO0lBQzFCLEtBQUssQ0FBQyxDQUFDO0lBQ1AsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFO0lBQ3pELFFBQVEsR0FBRyxFQUFFLFlBQVk7SUFDekIsWUFBWSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbkMsWUFBWSxHQUFHLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUMzQixZQUFZLE9BQU8sR0FBRyxDQUFDO0lBQ3ZCLFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNoRCxRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLEVBQUUsV0FBVyxFQUFFO0lBQ2hFLFFBQVEsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3JCLFFBQVEsSUFBSSxXQUFXLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxXQUFXLEdBQUcsS0FBSyxDQUFDLEVBQUU7SUFDNUQsUUFBUSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDckIsUUFBUSxJQUFJO0lBQ1osWUFBWSxLQUFLLElBQUksRUFBRSxHQUFHRyxVQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO0lBQ2hILGdCQUFnQixJQUFJLEVBQUUsR0FBR0gsUUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxnQkFBZ0IsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3JFLGdCQUFnQixJQUFJLFNBQVMsRUFBRTtJQUMvQixvQkFBb0IsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4QyxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFNBQVM7SUFDVCxRQUFRLE9BQU8sTUFBTSxFQUFFLEVBQUUsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDcEQsZ0JBQWdCO0lBQ2hCLFlBQVksSUFBSTtJQUNoQixnQkFBZ0IsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRSxhQUFhO0lBQ2Isb0JBQW9CLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDbkQsU0FBUztJQUNULFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLFNBQVMsRUFBRTtJQUN4RCxRQUFRLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRTtJQUMxQixhQUFhLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM5RCxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ25CLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxJQUFJLEVBQUUsS0FBSyxFQUFFO0lBQ3RELFFBQVEsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO0lBQzdELFFBQVEsSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEVBQUU7SUFDaEQsUUFBUSxJQUFJLElBQUksS0FBSyxRQUFRLENBQUMsV0FBVyxFQUFFO0lBQzNDLFlBQVksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO0lBQ2pELGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxFQUFFLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzRixxQkFBcUIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakMsYUFBYTtJQUNiLFlBQVksT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNsSyxpQkFBaUIsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakQsU0FBUztJQUNULFFBQVEsT0FBTyxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2pKLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDN0MsUUFBUSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUMxQyxRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkUsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQy9DLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzNDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLFVBQVUsS0FBSyxFQUFFO0lBQzdDLFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNqQyxRQUFRLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssR0FBRyxNQUFNLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxDQUFDO0lBQy9ELEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsWUFBWTtJQUN6QyxRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNsQyxLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFlBQVk7SUFDMUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUNmLFFBQVEsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLFFBQVEsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDdEQsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLFNBQVM7SUFDVCxRQUFRLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRUUsZUFBYSxDQUFDLEVBQUUsRUFBRUYsUUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUYsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxZQUFZO0lBQzNDLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BDLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsWUFBWTtJQUM3QyxRQUFRLElBQUksRUFBRSxDQUFDO0lBQ2YsUUFBUSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7SUFDdEIsUUFBUSxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUN0RCxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFRSxlQUFhLENBQUMsRUFBRSxFQUFFRixRQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3RixLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLFlBQVk7SUFDN0MsUUFBUSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDOUMsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUUsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVk7SUFDOUMsUUFBUSxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUs7SUFDcEYsYUFBYSxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtJQUN2RSxLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFlBQVk7SUFDOUMsUUFBUSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUs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QUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLFlBQVksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEMsWUFBWSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDekQsWUFBWSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDekQsWUFBWSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLFNBQVM7SUFDVCxRQUFRLElBQUksUUFBUSxLQUFLLENBQUMsRUFBRTtJQUM1QixZQUFZLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLFNBQVM7SUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzlDLFFBQVEsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDcEMsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDdEYsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFFBQVEsSUFBSSxLQUFL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QUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxTQUFTO0lBQ1QsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7SUFDOUIsWUFBWSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxTQUFTO0lBQ1QsUUFBUSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RSxLQUFLLENBQUM7SUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3JDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO0lBQzlCLFlBQVksT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsU0FBUztJQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO0lBQzlCLFlBQVksT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsU0FBUztJQUNULFFBQVEsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENB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Q0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzlDLFFBQVEsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUM5QyxRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDM0MsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzlDLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDOUMsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUM5QyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFB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LE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzFDLFFBQVEsT0FBTyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUM1QyxRQUFRLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzNCLFFBQVEsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUU7SUFDeEMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDM0IsWUFBWSxPQUFPLElBQUksQ0FBQztJQUN4QixTQUFTO0lBQ1QsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQyxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEtBQUss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MUIsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0MsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xELFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QixRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDekIsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLFFBQVEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QixRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUMvQixRQUFRLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQy9CLFFBQVEsSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDL0IsUUFBUSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUMvQixRQUFRLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNyQixRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FB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LENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFELFNBQVM7SUFDVCxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRTtJQUM1QyxZQUFZLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUQsU0FBUztJQUNULFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQzVDLFlBQVksT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRCxTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEIsUUFBUSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUM7SUFDNUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDdEMsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDekIsUUFBUSxJQUFJLENBQUMsWUFBWSxNQUFNLEVBQUU7SUFDakMsWUFBWSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEUsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsWUFBWSxPQUFPLENBQUMsQ0FBQztJQUNyQixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUQsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUN0QyxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztJQUN6QixRQUFRLElBQUksQ0FBQyxZQUFZLE1BQU0sRUFBRTtJQUNqQyxZQUFZLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRSxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxZQUFZLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLFNBQVM7SUFDVCxRQUFRLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRCxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3RDLFFBQVEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLFFBQVEsSUFBSSxDQUFDLFlBQVksTUFBTSxFQUFFO0lBQ2pDLFlBQVksSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLFlBQVksT0FBTyxDQUFDLENBQUM7SUFDckIsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFELEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsWUFBWTtJQUN6QyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNsRyxRQUFRLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEQsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUM3QyxRQUFRLElBQUksQ0FBQyxZQUFZLE1BQU0sRUFBRTtJQUNqQyxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsWUFBWSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUUsWUFBWSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQzlHLFNBQVM7SUFDVCxRQUFRLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxRQUFRLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkIsUUFBUSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRSxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzFDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxRQUFRLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFlBQVksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFlBQVksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFlBQVksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEMsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsRUFBRTtJQUN6QyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFFBQVEsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzdDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakMsS0FBSyxDQUFDO0lBQ04sSUFBSSxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9