appium-ios-device 2.4.0 → 2.4.3

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.
Files changed (38) hide show
  1. package/build/index.js +1 -1
  2. package/build/lib/afc/index.js +1 -1
  3. package/build/lib/afc/protocol.js +1 -1
  4. package/build/lib/afc/streams.js +1 -1
  5. package/build/lib/afc/transformer/afcdecoder.js +1 -1
  6. package/build/lib/afc/transformer/afcencoder.js +1 -1
  7. package/build/lib/base-service.js +1 -1
  8. package/build/lib/constants.js +1 -1
  9. package/build/lib/house-arrest/index.js +1 -1
  10. package/build/lib/installation-proxy/index.js +1 -1
  11. package/build/lib/instrument/headers.js +34 -21
  12. package/build/lib/instrument/index.js +1 -1
  13. package/build/lib/instrument/transformer/dtx-decode.js +1 -1
  14. package/build/lib/instrument/transformer/dtx-encode.js +1 -1
  15. package/build/lib/instrument/transformer/nskeyed.js +1 -1
  16. package/build/lib/lockdown/index.js +1 -1
  17. package/build/lib/logger.js +1 -1
  18. package/build/lib/mcinstall/index.js +1 -1
  19. package/build/lib/notification-proxy/index.js +1 -1
  20. package/build/lib/plist-service/index.js +1 -1
  21. package/build/lib/plist-service/transformer/plist-service-decoder.js +1 -1
  22. package/build/lib/plist-service/transformer/plist-service-encoder.js +1 -1
  23. package/build/lib/services.js +1 -1
  24. package/build/lib/simulatelocation/index.js +1 -1
  25. package/build/lib/ssl-helper.js +1 -1
  26. package/build/lib/syslog/index.js +1 -1
  27. package/build/lib/syslog/transformer/syslog-decoder.js +1 -1
  28. package/build/lib/usbmux/index.js +1 -1
  29. package/build/lib/usbmux/transformer/usbmux-decoder.js +1 -1
  30. package/build/lib/usbmux/transformer/usbmux-encoder.js +1 -1
  31. package/build/lib/util/transformer/length-based-splitter.js +1 -1
  32. package/build/lib/util/transformer/stream-logger.js +1 -1
  33. package/build/lib/utilities.js +1 -1
  34. package/build/lib/webinspector/index.js +1 -1
  35. package/build/lib/webinspector/transformer/webinspector-decoder.js +1 -1
  36. package/build/lib/webinspector/transformer/webinspector-encoder.js +1 -1
  37. package/lib/instrument/headers.js +35 -19
  38. package/package.json +4 -3
@@ -26,12 +26,14 @@ exports.DTX_MESSAGE_HEADER_MAGIC_LEN = DTX_MESSAGE_HEADER_MAGIC_LEN;
26
26
  const DTX_MESSAGE_AUX_HEADER = 0x01F0;
27
27
  const DTX_AUXILIARY_MAGIC = 0xa;
28
28
  const FLAG_TYPES = Object.freeze({
29
+ push: 0,
29
30
  recv: 1,
30
31
  send: 2,
31
32
  reply: 3
32
33
  });
33
34
  exports.FLAG_TYPES = FLAG_TYPES;
34
35
  const AUX_TYPES = Object.freeze({
36
+ Text: 1,
35
37
  NSKeyed: 2,
36
38
  UInt32LE: 3,
37
39
  BigUInt64LE: 4,
@@ -120,23 +122,35 @@ class DTXMessageAux {
120
122
  return Buffer.concat([buf, messageAux.getBytes()]);
121
123
  }
122
124
 
123
- static parse(headerBuffer) {
125
+ static parse(headerBuffer, payloadHeader) {
124
126
  let cursor = 0;
125
127
  const data = [];
126
128
  const length = headerBuffer.readBigInt64LE(8);
127
129
  cursor += 16;
128
130
 
129
131
  while (cursor <= length) {
130
- const m = headerBuffer.readUInt32LE(cursor);
132
+ if (payloadHeader.flags !== FLAG_TYPES.push) {
133
+ const m = headerBuffer.readUInt32LE(cursor);
134
+ cursor += 4;
131
135
 
132
- if (m !== DTX_AUXILIARY_MAGIC) {
133
- throw new Error(`incorrect auxiliary magic: ${m}`);
136
+ if (m !== DTX_AUXILIARY_MAGIC) {
137
+ throw new Error(`incorrect auxiliary magic: ${m}`);
138
+ }
134
139
  }
135
140
 
136
- const type = headerBuffer.readUInt32LE(cursor + 4);
137
- cursor += 8;
141
+ const type = headerBuffer.readUInt32LE(cursor);
142
+ cursor += 4;
138
143
 
139
144
  switch (type) {
145
+ case AUX_TYPES.Text:
146
+ {
147
+ const strLen = headerBuffer.readUInt32LE(cursor);
148
+ cursor += 4;
149
+ data.push(headerBuffer.slice(cursor, cursor + strLen));
150
+ cursor += strLen;
151
+ break;
152
+ }
153
+
140
154
  case AUX_TYPES.NSKeyed:
141
155
  {
142
156
  const strLen = headerBuffer.readUInt32LE(cursor);
@@ -212,13 +226,9 @@ class DTXMessageAuxBuffer {
212
226
 
213
227
  appendSignedLong(value) {
214
228
  const buf = Buffer.alloc(16);
215
-
216
- this._buf.writeUInt32LE(DTX_AUXILIARY_MAGIC, 0);
217
-
218
- this._buf.writeUInt32LE(6, 4);
219
-
220
- this._buf.writeBigInt64LE(value, 8);
221
-
229
+ buf.writeUInt32LE(DTX_AUXILIARY_MAGIC, 0);
230
+ buf.writeUInt32LE(6, 4);
231
+ buf.writeBigInt64LE(value, 8);
222
232
  this._buf = Buffer.concat([this._buf, buf]);
223
233
  }
224
234
 
@@ -330,18 +340,21 @@ class DTXMessage {
330
340
  }
331
341
 
332
342
  if (ret._payloadHeader.auxLength > 0) {
333
- ret.auxiliaries = DTXMessageAux.parse(payloadBuf.slice(cursor, cursor + ret._payloadHeader.auxLength));
343
+ ret.auxiliaries = DTXMessageAux.parse(payloadBuf.slice(cursor, cursor + ret._payloadHeader.auxLength), ret._payloadHeader);
334
344
  cursor += ret._payloadHeader.auxLength;
335
345
  }
336
346
 
337
347
  const data = payloadBuf.slice(cursor, cursor + payloadBuf.length);
348
+ ret.selector = data;
338
349
 
339
- for (const fun of [_nskeyed.unarchive, _bplistParser.default.parseBuffer]) {
340
- try {
341
- ret.selector = fun(data);
342
- break;
343
- } catch (e) {
344
- ret.selector = new InstrumentRPCParseError(data);
350
+ if (data.length > 0) {
351
+ for (const fun of [_nskeyed.unarchive, _bplistParser.default.parseBuffer]) {
352
+ try {
353
+ ret.selector = fun(data);
354
+ break;
355
+ } catch (e) {
356
+ ret.selector = new InstrumentRPCParseError(data);
357
+ }
345
358
  }
346
359
  }
347
360
 
@@ -353,4 +366,4 @@ class DTXMessage {
353
366
  exports.DTXMessage = DTXMessage;require('source-map-support').install();
354
367
 
355
368
 
356
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9pbnN0cnVtZW50L2hlYWRlcnMuanMiXSwibmFtZXMiOlsiRFRYX01FU1NBR0VfUEFZTE9BRF9IRUFERVJfTEVOR1RIIiwiRFRYX01FU1NBR0VfSEVBREVSX0xFTkdUSCIsIkRUWF9NRVNTQUdFX0hFQURFUl9NQUdJQyIsIkRUWF9NRVNTQUdFX0hFQURFUl9NQUdJQ19MRU4iLCJEVFhfTUVTU0FHRV9BVVhfSEVBREVSIiwiRFRYX0FVWElMSUFSWV9NQUdJQyIsIkZMQUdfVFlQRVMiLCJPYmplY3QiLCJmcmVlemUiLCJyZWN2Iiwic2VuZCIsInJlcGx5IiwiQVVYX1RZUEVTIiwiTlNLZXllZCIsIlVJbnQzMkxFIiwiQmlnVUludDY0TEUiLCJCaWdJbnQ2NExFIiwiRFRYTWVzc2FnZUhlYWRlciIsImJ1aWxkIiwiZGF0YSIsIm1lc3NhZ2VIZWFkZXIiLCJCdWZmZXIiLCJhbGxvYyIsIndyaXRlVUludDMyTEUiLCJ3cml0ZVVJbnQxNkxFIiwicGF5bG9hZExlbmd0aCIsImlkZW50aWZpZXIiLCJjb252ZXJzYXRpb25JbmRleCIsImNoYW5uZWxDb2RlIiwiZXhwZWN0c1JlcGx5IiwicGFyc2UiLCJoZWFkZXJCdWZmZXIiLCJtYWdpYyIsInJlYWRVSW50MzJMRSIsImhlYWRlckxlbmd0aCIsImZyYWdtZW50SWQiLCJyZWFkVUludDE2TEUiLCJmcmFnbWVudENvdW50IiwiY2hhbm5lbCIsIkRUWE1lc3NhZ2VQYXlsb2FkSGVhZGVyIiwiZmxhZ3MiLCJhdXhMZW5ndGgiLCJ3cml0ZUJpZ1VJbnQ2NExFIiwidG90YWxMZW5ndGgiLCJyZWFkQmlnSW50NjRMRSIsIkRUWE1lc3NhZ2VBdXgiLCJjb25zdHJ1Y3RvciIsIm1lc3NhZ2VBdXgiLCJEVFhNZXNzYWdlQXV4QnVmZmVyIiwiYnVmIiwibGVuZ3RoIiwiYXJnIiwiY29uY2F0IiwiZ2V0Qnl0ZXMiLCJfIiwiaXNOdW1iZXIiLCJhcHBlbmRJbnQiLCJhcHBlbmRMb25nIiwiYXBwZW5kT2JqZWN0IiwiY3Vyc29yIiwibSIsIkVycm9yIiwidHlwZSIsInN0ckxlbiIsImFyY2hpdmVkX2RhdGEiLCJzbGljZSIsInB1c2giLCJyZWFkQmlnVUludDY0TEUiLCJJbnN0cnVtZW50UlBDUGFyc2VFcnJvciIsIl9idWYiLCJ2YWx1ZSIsImFwcGVuZFNpZ25lZEludCIsIndyaXRlSW50MzJMRSIsImFwcGVuZFNpZ25lZExvbmciLCJ3cml0ZUJpZ0ludDY0TEUiLCJidWYyIiwib3V0IiwiRFRYTWVzc2FnZSIsIm9wdHMiLCJzZWxlY3RvciIsIl9tZXNzYWdlSGVhZGVyIiwidW5kZWZpbmVkIiwiX3BheWxvYWRIZWFkZXIiLCJfaWRlbnRpZmllciIsIl9jaGFubmVsQ29kZSIsIl9leHBlY3RzUmVwbHkiLCJfc2VsZWN0b3IiLCJfY29udmVyc2F0aW9uSW5kZXgiLCJfZmxhZ3MiLCJhdXhpbGlhcmllcyIsInNlbCIsImF1eCIsInBheWxvYWRIZWFkZXIiLCJCaWdJbnQiLCJoZWFkZXJCdWYiLCJwYXlsb2FkQnVmIiwicmV0IiwiZnVuIiwidW5hcmNoaXZlIiwicGxpc3RsaWIiLCJwYXJzZUJ1ZmZlciIsImUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsaUNBQWlDLEdBQUcsRUFBMUM7O0FBQ0EsTUFBTUMseUJBQXlCLEdBQUcsRUFBbEM7O0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUcsVUFBakM7O0FBQ0EsTUFBTUMsNEJBQTRCLEdBQUcsQ0FBckM7O0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsTUFBL0I7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxHQUE1QjtBQUVBLE1BQU1DLFVBQVUsR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQWM7QUFDL0JDLEVBQUFBLElBQUksRUFBRSxDQUR5QjtBQUUvQkMsRUFBQUEsSUFBSSxFQUFFLENBRnlCO0FBRy9CQyxFQUFBQSxLQUFLLEVBQUU7QUFId0IsQ0FBZCxDQUFuQjs7QUFNQSxNQUFNQyxTQUFTLEdBQUdMLE1BQU0sQ0FBQ0MsTUFBUCxDQUFj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QUFDQyxrQkFBRCxFQUFZQyxzQkFBU0MsV0FBckIsQ0FBbEIsRUFBcUQ7QUFDbkQsVUFBSTtBQUNGSixRQUFBQSxHQUFHLENBQUNqQixRQUFKLEdBQWVrQixHQUFHLENBQUM5RSxJQUFELENBQWxCO0FBQ0E7QUFDRCxPQUhELENBR0UsT0FBT2tGLENBQVAsRUFBVTtBQUNWTCxRQUFBQSxHQUFHLENBQUNqQixRQUFKLEdBQWUsSUFBSVgsdUJBQUosQ0FBNEJqRCxJQUE1QixDQUFmO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPNkUsR0FBUDtBQUNEOztBQXJJYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXJjaGl2ZSwgdW5hcmNoaXZlfSBmcm9tICcuL3RyYW5zZm9ybWVyL25za2V5ZWQnO1xuaW1wb3J0IHBsaXN0bGliIGZyb20gJ2JwbGlzdC1wYXJzZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgRFRYX01FU1NBR0VfUEFZTE9BRF9IRUFERVJfTEVOR1RIID0gMTY7XG5jb25zdCBEVFhfTUVTU0FHRV9IRUFERVJfTEVOR1RIID0gMzI7XG5jb25zdCBEVFhfTUVTU0FHRV9IRUFERVJfTUFHSUMgPSAweDFGM0Q1Qjc5O1xuY29uc3QgRFRYX01FU1NBR0VfSEVBREVSX01BR0lDX0xFTiA9IDQ7XG5jb25zdCBEVFhfTUVTU0FHRV9BVVhfSEVBREVSID0gMHgwMUYwO1xuY29uc3QgRFRYX0FVWElMSUFSWV9NQUdJQyA9IDB4YTtcblxuY29uc3QgRkxBR19UWVBFUyA9IE9iamVjdC5mcmVlemUoe1xuICByZWN2OiAxLFxuICBzZW5kOiAyLFxuICByZXBseTogM1xufSk7XG5cbmNvbnN0IEFVWF9UWVBFUyA9IE9iamVjdC5mcmVlemUoe1xuICBOU0tleWVkOiAyLFxuICBVSW50MzJMRTogMyxcbiAgQmlnVUludDY0TEU6IDQsXG4gIEJpZ0ludDY0TEU6IDZcbn0pO1xuXG4vKipcbiAqIERUWE1lc3NhZ2VIZWFkZXIgbGVuZ3RoIDMyXG4gKiBzdHJ1Y3QgRFRYTWVzc2FnZUhlYWRlciB7XG4gKiAgICAgdTMyIG1hZ2ljIERUWF9NRVNTQUdFX0hFQURFUl9NQUdJQ1xuICogICAgIHUzMiBoZWFkZXJMZW5ndGhcbiAqICAgICB1MTYgZnJhZ21lbnRJZCAgIHBhY2tldCBudW1iZXJcbiAqICAgICB1MTYgZnJhZ21lbnRDb3VudCAgcGFja2V0cyB0b3RhbCBudW1iZXJcbiAqICAgICB1MzIgcGF5bG9hZExlbmd0aFxuICogICAgIHUzMiBpZGVudGlmaWVyXG4gKiAgICAgdTMyIGNvbnZlcnNhdGlvbkluZGV4XG4gKiAgICAgdTMyIGNoYW5uZWxcbiAqICAgICB1MzIgZXhwZWN0c1JlcGx5XG4gKiAgICAgfVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRFRYTWVzc2FnZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBpZGVudGlmaWVyIHBhY2tldCB0cmFuc21pc3Npb24gc2VxdWVuY2UsIHRoaXMgdmFsdWUgaXMgaW5jcmVtZW50ZWQgZm9yIGVhY2ggcmVxdWVzdFxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNoYW5uZWxDb2RlIHRoZSBkYXRhIHRyYW5zbWlzc2lvbiBvZiB0aGUgc2VydmljZSB3aWxsIHVzZSB0aGlzIGNoYW5uZWwgY29kZS5cbiAqIEVhY2ggc2VydmljZSBoYXMgYSBzZXBhcmF0ZSBjaGFubmVsXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHBheWxvYWRMZW5ndGggRFRYTWVzc2FnZUF1eEJ1ZmZlci5sZW5ndGgobnVsbGFibGUpICsgc2VsZWN0b3JCdWZmZXIubGVuZ3RoKG51bGxhYmxlKVxuICogQHByb3BlcnR5IHtib29sZWFufSBleHBlY3RzUmVwbHkgaWYgdHJ1ZSByZXBseSBhIGFjayBtZXNzYWdlXG4gKiBAcHJvcGVydHkge251bWJlcn0gY29udmVyc2F0aW9uSW5kZXggIHJhdyBkYXRhICsxIGluZGljYXRlIGEgcmVwbHkgbWVzc2FnZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IGZsYWdzIG1lc3NhZ2Ugc3RhdHVzXG4gKi9cblxuY2xhc3MgRFRYTWVzc2FnZUhlYWRlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0RUWE1lc3NhZ2VPcHRpb25zfSBkYXRhXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IERUWE1lc3NhZ2VIZWFkZXJCdWZmZXJcbiAgICovXG4gIHN0YXRpYyBidWlsZCAoZGF0YSkge1xuICAgIGNvbnN0IG1lc3NhZ2VIZWFkZXIgPSBCdWZmZXIuYWxsb2MoRFRYX01FU1NBR0VfSEVBREVSX0xFTkdUSCk7XG4gICAgbWVzc2FnZUhlYWRlci53cml0ZVVJbnQzMkxFKERUWF9NRVNTQUdFX0hFQURFUl9NQUdJQywgMCk7XG4gICAgbWVzc2FnZUhlYWRlci53cml0ZVVJbnQzMkxFKERUWF9NRVNTQUdFX0hFQURFUl9MRU5HVEgsIDQpO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVVSW50MTZMRSgwLCA4KTtcbiAgICBtZXNzYWdlSGVhZGVyLndyaXRlVUludDE2TEUoMSwgMTApO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVVSW50MzJMRShkYXRhLnBheWxvYWRMZW5ndGgsIDEyKTtcbiAgICBtZXNzYWdlSGVhZGVyLndyaXRlVUludDMyTEUoZGF0YS5pZGVudGlmaWVyLCAxNik7XG4gICAgbWVzc2FnZUhlYWRlci53cml0ZVVJbnQzMkxFKGRhdGEuY29udmVyc2F0aW9uSW5kZXgsIDIwKTtcbiAgICBtZXNzYWdlSGVhZGVyLndyaXRlVUludDMyTEUoZGF0YS5jaGFubmVsQ29kZSwgMjQpO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVVSW50MzJMRShkYXRhLmV4cGVjdHNSZXBseSwgMjgpO1xuICAgIHJldHVybiBtZXNzYWdlSGVhZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBoZWFkZXJCdWZmZXIgRFRYTWVzc2FnZUhlYWRlckJ1ZmZlclxuICAgKiBAcmV0dXJucyB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIHBhcnNlIChoZWFkZXJCdWZmZXIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWFnaWM6IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoMCksXG4gICAgICBoZWFkZXJMZW5ndGg6IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoNCksXG4gICAgICBmcmFnbWVudElkOiBoZWFkZXJCdWZmZXIucmVhZFVJbnQxNkxFKDgpLFxuICAgICAgZnJhZ21lbnRDb3VudDogaGVhZGVyQnVmZmVyLnJlYWRVSW50MTZMRSgxMCksXG4gICAgICBwYXlsb2FkTGVuZ3RoOiBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKDEyKSxcbiAgICAgIGlkZW50aWZpZXI6IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoMTYpLFxuICAgICAgY29udmVyc2F0aW9uSW5kZXg6IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoMjApLFxuICAgICAgY2hhbm5lbDogaGVhZGVyQnVmZmVyLnJlYWRVSW50MzJMRSgyNCksXG4gICAgICBleHBlY3RzUmVwbHk6IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoMjgpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBEVFhNZXNzYWdlUGF5bG9hZEhlYWRlciBsZW5ndGggMTZcbiAqIHN0cnVjdCBEVFhNZXNzYWdlSGVhZGVyIHtcbiAqICAgICB1MzIgZmxhZ3MgRkxBR19UWVBFU1xuICogICAgIHUzMiBhdXhMZW5ndGhcbiAqICAgICB1NjQgdG90YWxMZW5ndGhcbiAqICAgICB9XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEVFhNZXNzYWdlUGF5bG9hZEhlYWRlck9iamVjdFxuICogQHByb3BlcnR5IHtudW1iZXJ9IGZsYWdzIG1lc3NhZ2Ugc3RhdHVzXG4gKiBAcHJvcGVydHkge251bWJlcn0gYXV4TGVuZ3RoIERUWE1lc3NhZ2VBdXhCdWZmZXIubGVuZ3RoKG51bGxhYmxlKVxuICogQHByb3BlcnR5IHtiaWdpbnR9IHRvdGFsTGVuZ3RoIERUWE1lc3NhZ2VBdXhCdWZmZXIubGVuZ3RoKG51bGxhYmxlKSArIHNlbGVjdG9yQnVmZmVyLmxlbmd0aFxuICovXG5jbGFzcyBEVFhNZXNzYWdlUGF5bG9hZEhlYWRlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0gZGF0YSB7RFRYTWVzc2FnZVBheWxvYWRIZWFkZXJPYmplY3R9XG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IERUWE1lc3NhZ2VQYXlsb2FkSGVhZGVyQnVmZmVyXG4gICAqL1xuICBzdGF0aWMgYnVpbGQgKGRhdGEpIHtcbiAgICBjb25zdCBtZXNzYWdlSGVhZGVyID0gQnVmZmVyLmFsbG9jKERUWF9NRVNTQUdFX1BBWUxPQURfSEVBREVSX0xFTkdUSCk7XG4gICAgbWVzc2FnZUhlYWRlci53cml0ZVVJbnQzMkxFKGRhdGEuZmxhZ3MsIDApO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVVSW50MzJMRShkYXRhLmF1eExlbmd0aCwgNCk7XG4gICAgbWVzc2FnZUhlYWRlci53cml0ZUJpZ1VJbnQ2NExFKGRhdGEudG90YWxMZW5ndGgsIDgpO1xuICAgIHJldHVybiBtZXNzYWdlSGVhZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBoZWFkZXJCdWZmZXJcbiAgICogQHJldHVybnMge3tmbGFnczogbnVtYmVyLCB0b3RhbExlbmd0aDogYmlnaW50LCBhdXhMZW5ndGg6IG51bWJlcn19XG4gICAqL1xuICBzdGF0aWMgcGFyc2UgKGhlYWRlckJ1ZmZlcikge1xuICAgIHJldHVybiB7XG4gICAgICBmbGFnczogaGVhZGVyQnVmZmVyLnJlYWRVSW50MzJMRSgwKSxcbiAgICAgIGF1eExlbmd0aDogaGVhZGVyQnVmZmVyLnJlYWRVSW50MzJMRSg0KSxcbiAgICAgIHRvdGFsTGVuZ3RoOiBoZWFkZXJCdWZmZXIucmVhZEJpZ0ludDY0TEUoOClcbiAgICB9O1xuICB9XG59XG5cblxuY2xhc3MgRFRYTWVzc2FnZUF1eCB7XG4gIGNvbnN0cnVjdG9yIChkYXRhID0gW10pIHtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEpTIEFycmF5IHRvIEFwcGxlIE5TS2V5ZWQgQnVmZmVyXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9XG4gICAqL1xuICBidWlsZCAoKSB7XG4gICAgY29uc3QgbWVzc2FnZUF1eCA9IG5ldyBEVFhNZXNzYWdlQXV4QnVmZmVyKCk7XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5hbGxvYygwKTtcbiAgICBpZiAodGhpcy5kYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG4gICAgZm9yIChjb25zdCBhcmcgb2YgdGhpcy5kYXRhKSB7XG4gICAgICBpZiAoYXJnIGluc3RhbmNlb2YgRFRYTWVzc2FnZUF1eEJ1ZmZlcikge1xuICAgICAgICBidWYgPSBCdWZmZXIuY29uY2F0KFtidWYsIGFyZy5nZXRCeXRlcygpXSk7XG4gICAgICB9IGVsc2UgaWYgKF8uaXNOdW1iZXIoYXJnKSkge1xuICAgICAgICBtZXNzYWdlQXV4LmFwcGVuZEludChhcmcpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYXJnID09ICdiaWdpbnQnKSB7XG4gICAgICAgIG1lc3NhZ2VBdXguYXBwZW5kTG9uZyhhcmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZUF1eC5hcHBlbmRPYmplY3QoYXJnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW2J1ZiwgbWVzc2FnZUF1eC5nZXRCeXRlcygpXSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2VzIG5za2V5ZWQgQnVmZmVyIGludG8ganMgYXJyYXlcbiAgICogQHBhcmFtIGhlYWRlckJ1ZmZlclxuICAgKiBAcmV0dXJucyB7QXJyYXl9XG4gICAqL1xuICBzdGF0aWMgcGFyc2UgKGhlYWRlckJ1ZmZlcikge1xuICAgIGxldCBjdXJzb3IgPSAwO1xuICAgIGNvbnN0IGRhdGEgPSBbXTtcbiAgICBjb25zdCBsZW5ndGggPSBoZWFkZXJCdWZmZXIucmVhZEJpZ0ludDY0TEUoOCk7XG4gICAgY3Vyc29yICs9IDE2O1xuICAgIHdoaWxlIChjdXJzb3IgPD0gbGVuZ3RoKSB7XG4gICAgICBjb25zdCBtID0gaGVhZGVyQnVmZmVyLnJlYWRVSW50MzJMRShjdXJzb3IpO1xuICAgICAgaWYgKG0gIT09IERUWF9BVVhJTElBUllfTUFHSUMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbmNvcnJlY3QgYXV4aWxpYXJ5IG1hZ2ljOiAke219YCk7XG4gICAgICB9XG4gICAgICBjb25zdCB0eXBlID0gaGVhZGVyQnVmZmVyLnJlYWRVSW50MzJMRShjdXJzb3IgKyA0KTtcbiAgICAgIGN1cnNvciArPSA4O1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgQVVYX1RZUEVTLk5TS2V5ZWQ6IHtcbiAgICAgICAgICBjb25zdCBzdHJMZW4gPSBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKGN1cnNvcik7XG4gICAgICAgICAgY3Vyc29yICs9IDQ7XG4gICAgICAgICAgY29uc3QgYXJjaGl2ZWRfZGF0YSA9IGhlYWRlckJ1ZmZlci5zbGljZShjdXJzb3IsIGN1cnNvciArIHN0ckxlbik7XG4gICAgICAgICAgZGF0YS5wdXNoKHVuYXJjaGl2ZShhcmNoaXZlZF9kYXRhKSk7XG4gICAgICAgICAgY3Vyc29yICs9IHN0ckxlbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFVWF9UWVBFUy5VSW50MzJMRTpcbiAgICAgICAgICBkYXRhLnB1c2goaGVhZGVyQnVmZmVyLnJlYWRVSW50MzJMRShjdXJzb3IpKTtcbiAgICAgICAgICBjdXJzb3IgKz0gNDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBBVVhfVFlQRVMuQmlnVUludDY0TEU6XG4gICAgICAgICAgZGF0YS5wdXNoKGhlYWRlckJ1ZmZlci5yZWFkQmlnVUludDY0TEUoY3Vyc29yKSk7XG4gICAgICAgICAgY3Vyc29yICs9IDg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQVVYX1RZUEVTLkJpZ0ludDY0TEU6XG4gICAgICAgICAgZGF0YS5wdXNoKGhlYWRlckJ1ZmZlci5yZWFkQmlnSW50NjRMRShjdXJzb3IpKTtcbiAgICAgICAgICBjdXJzb3IgKz0gODtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdHlwZSAke3R5cGV9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG5cbmNsYXNzIEluc3RydW1lbnRSUENQYXJzZUVycm9yIHtcbiAgY29uc3RydWN0b3IgKGRhdGEpIHtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICB9XG59XG5cbmNsYXNzIERUWE1lc3NhZ2VBdXhCdWZmZXIge1xuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgdGhpcy5fYnVmID0gQnVmZmVyLmFsbG9jKDApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICAgKi9cbiAgYXBwZW5kSW50ICh2YWx1ZSkge1xuICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5hbGxvYygxMik7XG4gICAgYnVmLndyaXRlVUludDMyTEUoRFRYX0FVWElMSUFSWV9NQUdJQywgMCk7XG4gICAgYnVmLndyaXRlVUludDMyTEUoMywgNCk7XG4gICAgYnVmLndyaXRlVUludDMyTEUodmFsdWUsIDgpO1xuICAgIHRoaXMuX2J1ZiA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuX2J1ZiwgYnVmXSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtiaWdpbnR9IHZhbHVlXG4gICAqL1xuICBhcHBlbmRMb25nICh2YWx1ZSkge1xuICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5hbGxvYygxNik7XG4gICAgYnVmLndyaXRlVUludDMyTEUoRFRYX0FVWElMSUFSWV9NQUdJQywgMCk7XG4gICAgYnVmLndyaXRlVUludDMyTEUoNCwgNCk7XG4gICAgYnVmLndyaXRlQmlnVUludDY0TEUodmFsdWUsIDgpO1xuICAgIHRoaXMuX2J1ZiA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuX2J1ZiwgYnVmXSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gICAqL1xuICBhcHBlbmRTaWduZWRJbnQgKHZhbHVlKSB7XG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jKDEyKTtcbiAgICBidWYud3JpdGVVSW50MzJMRShEVFhfQVVYSUxJQVJZX01BR0lDLCAwKTtcbiAgICBidWYud3JpdGVVSW50MzJMRSgzLCA0KTtcbiAgICBidWYud3JpdGVJbnQzMkxFKHZhbHVlLCA4KTtcbiAgICB0aGlzLl9idWYgPSBCdWZmZXIuY29uY2F0KFt0aGlzLl9idWYsIGJ1Zl0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7YmlnaW50fSB2YWx1ZVxuICAgKi9cbiAgYXBwZW5kU2lnbmVkTG9uZyAodmFsdWUpIHtcbiAgICBjb25zdCBidWYgPSBCdWZmZXIuYWxsb2MoMTYpO1xuICAgIHRoaXMuX2J1Zi53cml0ZVVJbnQzMkxFKERUWF9BVVhJTElBUllfTUFHSUMsIDApO1xuICAgIHRoaXMuX2J1Zi53cml0ZVVJbnQzMkxFKDYsIDQpO1xuICAgIHRoaXMuX2J1Zi53cml0ZUJpZ0ludDY0TEUodmFsdWUsIDgpO1xuICAgIHRoaXMuX2J1ZiA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuX2J1ZiwgYnVmXSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtPYmplY3R9IHZhbHVlXG4gICAqL1xuICBhcHBlbmRPYmplY3QgKHZhbHVlKSB7XG4gICAgY29uc3QgYnVmID0gYXJjaGl2ZSh2YWx1ZSk7XG4gICAgY29uc3QgYnVmMiA9IEJ1ZmZlci5hbGxvYygxMik7XG4gICAgYnVmMi53cml0ZVVJbnQzMkxFKERUWF9BVVhJTElBUllfTUFHSUMsIDApO1xuICAgIGJ1ZjIud3JpdGVVSW50MzJMRSgyLCA0KTtcbiAgICBidWYyLndyaXRlVUludDMyTEUoYnVmLmxlbmd0aCwgOCk7XG4gICAgdGhpcy5fYnVmID0gQnVmZmVyLmNvbmNhdChbdGhpcy5fYnVmLCBidWYyLCBidWZdKTtcbiAgfVxuXG4gIGdldEJ5dGVzICgpIHtcbiAgICBjb25zdCBvdXQgPSBCdWZmZXIuYWxsb2MoMTYpO1xuICAgIG91dC53cml0ZVVJbnQzMkxFKERUWF9NRVNTQUdFX0FVWF9IRUFERVIsIDApO1xuICAgIG91dC53cml0ZVVJbnQzMkxFKHRoaXMuX2J1Zi5sZW5ndGgsIDgpO1xuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFtvdXQsIHRoaXMuX2J1Zl0pO1xuICB9XG59XG5cblxuXG5jbGFzcyBEVFhNZXNzYWdlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7RFRYTWVzc2FnZU9wdGlvbnN9IG9wdHNcbiAgICovXG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBjb25zdCB7XG4gICAgICBpZGVudGlmaWVyLFxuICAgICAgY2hhbm5lbENvZGUsXG4gICAgICBzZWxlY3RvcixcbiAgICAgIGV4cGVjdHNSZXBseSxcbiAgICAgIGNvbnZlcnNhdGlvbkluZGV4ID0gMCxcbiAgICAgIGZsYWdzID0gRkxBR19UWVBFUy5zZW5kXG4gICAgfSA9IG9wdHM7XG4gICAgdGhpcy5fbWVzc2FnZUhlYWRlciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9wYXlsb2FkSGVhZGVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyO1xuICAgIHRoaXMuX2NoYW5uZWxDb2RlID0gY2hhbm5lbENvZGU7XG4gICAgdGhpcy5fZXhwZWN0c1JlcGx5ID0gZXhwZWN0c1JlcGx5O1xuICAgIHRoaXMuX3NlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgdGhpcy5fY29udmVyc2F0aW9uSW5kZXggPSBjb252ZXJzYXRpb25JbmRleDtcbiAgICB0aGlzLl9mbGFncyA9IGZsYWdzO1xuICAgIHRoaXMuYXV4aWxpYXJpZXMgPSBuZXcgRFRYTWVzc2FnZUF1eCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBEVFhNZXNzYWdlSGVhZGVyIGlkZW50aWZpZXIuIFBhY2tldCB0cmFuc21pc3Npb24gc2VxdWVuY2VcbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICovXG4gIGdldCBpZGVudGlmaWVyICgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVzc2FnZUhlYWRlcj8uaWRlbnRpZmllcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgRFRYTWVzc2FnZUhlYWRlciBjaGFubmVsQ29kZS5cbiAgICogUGFja2V0IHRyYW5zbWlzc2lvbiBjaGFubmVsQ29kZS4gVXNlIHRoaXMgdmFsdWUgdG8gZGlzdGluZ3Vpc2ggd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgY2hhbm5lbHNcbiAgICogY2FsbCB0aGlzIG1ldGhvZCBgSW5zdHJ1bWVudFNlcnZpY2UucmVnaXN0ZXJDaGFubmVsQ2FsbGJhY2tgIGdldCB0aGUgY2hhbm5lbCBtZXNzYWdlXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgY2hhbm5lbENvZGUgKCkge1xuICAgIHJldHVybiB0aGlzLl9tZXNzYWdlSGVhZGVyPy5jaGFubmVsO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBEVFhNZXNzYWdlSGVhZGVyIGV4cGVjdHNSZXBseS4gV2hldGhlciB0byBuZWVkIGFjayBtZXNzYWdlXG4gICAqIGlmIGV4cGVjdHNSZXBseSBpcyB0cnVlIG11c3QgcmVwbHkgYWNrIG1lc3NhZ2VcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBnZXQgZXhwZWN0c1JlcGx5ICgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVzc2FnZUhlYWRlcj8uZXhwZWN0c1JlcGx5O1xuICB9XG5cbiAgLyoqXG4gICAqIGNhbGwgdGhpcyBtZXRob2QgYEluc3RydW1lbnRTZXJ2aWNlLnJlZ2lzdGVyU2VsZWN0b3JDYWxsYmFja2AgZ2V0IHRoZSBzZWxlY3RvciBtZXNzYWdlXG4gICAqIEByZXR1cm5zIHsqfSBVbmtub3duIGRhdGFcbiAgICovXG4gIGdldCBzZWxlY3RvciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqL1xuICBzZXQgc2VsZWN0b3IgKGRhdGEpIHtcbiAgICB0aGlzLl9zZWxlY3RvciA9IGRhdGE7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IERUWE1lc3NhZ2VIZWFkZXIgY29udmVyc2F0aW9uSW5kZXhcbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICovXG4gIGdldCBjb252ZXJzYXRpb25JbmRleCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21lc3NhZ2VIZWFkZXI/LmNvbnZlcnNhdGlvbkluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIERUWE1lc3NhZ2UgQnVmZmVyOiBEVFhNZXNzYWdlSGVhZGVyICsgUGF5bG9hZEhlYWRlciArIERUWE1lc3NhZ2VBdXhCdWZmZXIobnVsbGFibGUpICsgc2VsZWN0b3IobnVsbGFibGUpXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9XG4gICAqL1xuICBidWlsZCAoKSB7XG4gICAgY29uc3Qgc2VsID0gdGhpcy5fc2VsZWN0b3IgPyBhcmNoaXZlKHRoaXMuX3NlbGVjdG9yKSA6IEJ1ZmZlci5hbGxvYygwKTtcbiAgICBjb25zdCBhdXggPSB0aGlzLmF1eGlsaWFyaWVzLmJ1aWxkKCk7XG4gICAgY29uc3QgcGF5bG9hZEhlYWRlciA9IERUWE1lc3NhZ2VQYXlsb2FkSGVhZGVyLmJ1aWxkKHtcbiAgICAgIGZsYWdzOiB0aGlzLl9mbGFncyxcbiAgICAgIGF1eExlbmd0aDogYXV4Lmxlbmd0aCxcbiAgICAgIC8vIG5lZWQgdG8gY29udmVydCB0byBiaWdpbnQgaW4gYW55IGNhc2VcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgICAgdG90YWxMZW5ndGg6IEJpZ0ludChhdXgubGVuZ3RoICsgc2VsLmxlbmd0aCksXG4gICAgfSk7XG5cbiAgICBjb25zdCBtZXNzYWdlSGVhZGVyID0gRFRYTWVzc2FnZUhlYWRlci5idWlsZCh7XG4gICAgICBwYXlsb2FkTGVuZ3RoOiBEVFhfTUVTU0FHRV9QQVlMT0FEX0hFQURFUl9MRU5HVEggKyBhdXgubGVuZ3RoICsgc2VsLmxlbmd0aCxcbiAgICAgIGlkZW50aWZpZXI6IHRoaXMuX2lkZW50aWZpZXIsXG4gICAgICBjb252ZXJzYXRpb25JbmRleDogdGhpcy5fY29udmVyc2F0aW9uSW5kZXgsXG4gICAgICBjaGFubmVsQ29kZTogdGhpcy5fY2hhbm5lbENvZGUsXG4gICAgICBleHBlY3RzUmVwbHk6IHRoaXMuX2V4cGVjdHNSZXBseVxuICAgIH0pO1xuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFttZXNzYWdlSGVhZGVyLCBwYXlsb2FkSGVhZGVyLCBhdXgsIHNlbF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcyBEVFggYnVmZmVyIGludG8gYW4ganMgb2JqZWN0LiBSZXR1cm5lZCBpbiBEVFhEZWNvZGVyIFN0cmVhbS5UcmFuc2Zvcm1cbiAgICogQHBhcmFtIHtCdWZmZXJ9IGhlYWRlckJ1ZiAgRFRYTWVzc2FnZUhlYWRlciBidWZmZXJcbiAgICogQHBhcmFtIHtCdWZmZXJ9IHBheWxvYWRCdWYgIFBheWxvYWRIZWFkZXJCdWZmZXIgKyBEVFhNZXNzYWdlQXV4QnVmZmVyKG51bGxhYmxlKSArIHNlbGVjdG9yQnVmZmVyKG51bGxhYmxlKVxuICAgKiBAcmV0dXJucyB7RFRYTWVzc2FnZX1cbiAgICovXG4gIHN0YXRpYyBwYXJzZSAoaGVhZGVyQnVmLCBwYXlsb2FkQnVmKSB7XG4gICAgbGV0IGN1cnNvciA9IDA7XG4gICAgY29uc3QgcmV0ID0gbmV3IERUWE1lc3NhZ2UoKTtcbiAgICByZXQuX21lc3NhZ2VIZWFkZXIgPSBEVFhNZXNzYWdlSGVhZGVyLnBhcnNlKGhlYWRlckJ1Zik7XG4gICAgaWYgKHJldC5fbWVzc2FnZUhlYWRlci5wYXlsb2FkTGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgICByZXQuX3BheWxvYWRIZWFkZXIgPSBEVFhNZXNzYWdlUGF5bG9hZEhlYWRlci5wYXJzZShwYXlsb2FkQnVmLnNsaWNlKGN1cnNvciwgRFRYX01FU1NBR0VfUEFZTE9BRF9IRUFERVJfTEVOR1RIKSk7XG4gICAgY3Vyc29yICs9IERUWF9NRVNTQUdFX1BBWUxPQURfSEVBREVSX0xFTkdUSDtcbiAgICAvLyB0b3RhbExlbmd0aCBpcyBiaWdpbnQgdXNlIDBuXG4gICAgaWYgKHJldC5fcGF5bG9hZEhlYWRlci50b3RhbExlbmd0aCA9PT0gMG4pIHtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICAgIGlmIChyZXQuX3BheWxvYWRIZWFkZXIuYXV4TGVuZ3RoID4gMCkge1xuICAgICAgcmV0LmF1eGlsaWFyaWVzID0gRFRYTWVzc2FnZUF1eC5wYXJzZShwYXlsb2FkQnVmLnNsaWNlKGN1cnNvciwgY3Vyc29yICsgcmV0Ll9wYXlsb2FkSGVhZGVyLmF1eExlbmd0aCkpO1xuICAgICAgY3Vyc29yICs9IHJldC5fcGF5bG9hZEhlYWRlci5hdXhMZW5ndGg7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHBheWxvYWRCdWYuc2xpY2UoY3Vyc29yLCBjdXJzb3IgKyBwYXlsb2FkQnVmLmxlbmd0aCk7XG4gICAgZm9yIChjb25zdCBmdW4gb2YgW3VuYXJjaGl2ZSwgcGxpc3RsaWIucGFyc2VCdWZmZXJdKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXQuc2VsZWN0b3IgPSBmdW4oZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXQuc2VsZWN0b3IgPSBuZXcgSW5zdHJ1bWVudFJQQ1BhcnNlRXJyb3IoZGF0YSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cbn1cblxuZXhwb3J0IHsgRFRYTWVzc2FnZUhlYWRlciwgRFRYTWVzc2FnZVBheWxvYWRIZWFkZXIsIERUWE1lc3NhZ2VBdXhCdWZmZXIsIERUWE1lc3NhZ2VBdXgsIERUWE1lc3NhZ2UsXG4gIERUWF9NRVNTQUdFX1BBWUxPQURfSEVBREVSX0xFTkdUSCwgRFRYX01FU1NBR0VfSEVBREVSX0xFTkdUSCwgRFRYX01FU1NBR0VfSEVBREVSX01BR0lDLCBEVFhfTUVTU0FHRV9IRUFERVJfTUFHSUNfTEVOLFxuICBGTEFHX1RZUEVTfTsiXSwiZmlsZSI6ImxpYi9pbnN0cnVtZW50L2hlYWRlcnMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
369
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2luc3RydW1lbnQvaGVhZGVycy5qcyIsIm5hbWVzIjpbIkRUWF9NRVNTQUdFX1BBWUxPQURfSEVBREVSX0xFTkdUSCIsIkRUWF9NRVNTQUdFX0hFQURFUl9MRU5HVEgiLCJEVFhfTUVTU0FHRV9IRUFERVJfTUFHSUMiLCJEVFhfTUVTU0FHRV9IRUFERVJfTUFHSUNfTEVOIiwiRFRYX01FU1NBR0VfQVVYX0hFQURFUiIsIkRUWF9BVVhJTElBUllfTUFHSUMiLCJGTEFHX1RZUEVTIiwiT2JqZWN0IiwiZnJlZXplIiwicHVzaCIsInJlY3YiLCJzZW5kIiwicmVwbHkiLCJBVVhfVFlQRVMiLCJUZXh0IiwiTlNLZXllZCIsIlVJbnQzMkxFIiwiQmlnVUludDY0TEUiLCJCaWdJbnQ2NExFIiwiRFRYTWVzc2FnZUhlYWRlciIsImJ1aWxkIiwiZGF0YSIsIm1lc3NhZ2VIZWFkZXIiLCJCdWZmZXIiLCJhbGxvYyIsIndyaXRlVUludDMyTEUiLCJ3cml0ZVVJbnQxNkxFIiwicGF5bG9hZExlbmd0aCIsImlkZW50aWZpZXIiLCJjb252ZXJzYXRpb25JbmRleCIsImNoYW5uZWxDb2RlIiwiZXhwZWN0c1JlcGx5IiwicGFyc2UiLCJoZWFkZXJCdWZmZXIiLCJtYWdpYyIsInJlYWRVSW50MzJMRSIsImhlYWRlckxlbmd0aCIsImZyYWdtZW50SWQiLCJyZWFkVUludDE2TEUiLCJmcmFnbWVudENvdW50IiwiY2hhbm5lbCIsIkRUWE1lc3NhZ2VQYXlsb2FkSGVhZGVyIiwiZmxhZ3MiLCJhdXhMZW5ndGgiLCJ3cml0ZUJpZ1VJbnQ2NExFIiwidG90YWxMZW5ndGgiLCJyZWFkQmlnSW50NjRMRSIsIkRUWE1lc3NhZ2VBdXgiLCJjb25zdHJ1Y3RvciIsIm1lc3NhZ2VBdXgiLCJEVFhNZXNzYWdlQXV4QnVmZmVyIiwiYnVmIiwibGVuZ3RoIiwiYXJnIiwiY29uY2F0IiwiZ2V0Qnl0ZXMiLCJfIiwiaXNOdW1iZXIiLCJhcHBlbmRJbnQiLCJhcHBlbmRMb25nIiwiYXBwZW5kT2JqZWN0IiwicGF5bG9hZEhlYWRlciIsImN1cnNvciIsIm0iLCJFcnJvciIsInR5cGUiLCJzdHJMZW4iLCJzbGljZSIsImFyY2hpdmVkX2RhdGEiLCJ1bmFyY2hpdmUiLCJyZWFkQmlnVUludDY0TEUiLCJJbnN0cnVtZW50UlBDUGFyc2VFcnJvciIsIl9idWYiLCJ2YWx1ZSIsImFwcGVuZFNpZ25lZEludCIsIndyaXRlSW50MzJMRSIsImFwcGVuZFNpZ25lZExvbmciLCJ3cml0ZUJpZ0ludDY0TEUiLCJhcmNoaXZlIiwiYnVmMiIsIm91dCIsIkRUWE1lc3NhZ2UiLCJvcHRzIiwic2VsZWN0b3IiLCJfbWVzc2FnZUhlYWRlciIsInVuZGVmaW5lZCIsIl9wYXlsb2FkSGVhZGVyIiwiX2lkZW50aWZpZXIiLCJfY2hhbm5lbENvZGUiLCJfZXhwZWN0c1JlcGx5IiwiX3NlbGVjdG9yIiwiX2NvbnZlcnNhdGlvbkluZGV4IiwiX2ZsYWdzIiwiYXV4aWxpYXJpZXMiLCJzZWwiLCJhdXgiLCJCaWdJbnQiLCJoZWFkZXJCdWYiLCJwYXlsb2FkQnVmIiwicmV0IiwiZnVuIiwicGxpc3RsaWIiLCJwYXJzZUJ1ZmZlciIsImUiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvaW5zdHJ1bWVudC9oZWFkZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7YXJjaGl2ZSwgdW5hcmNoaXZlfSBmcm9tICcuL3RyYW5zZm9ybWVyL25za2V5ZWQnO1xuaW1wb3J0IHBsaXN0bGliIGZyb20gJ2JwbGlzdC1wYXJzZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgRFRYX01FU1NBR0VfUEFZTE9BRF9IRUFERVJfTEVOR1RIID0gMTY7XG5jb25zdCBEVFhfTUVTU0FHRV9IRUFERVJfTEVOR1RIID0gMzI7XG5jb25zdCBEVFhfTUVTU0FHRV9IRUFERVJfTUFHSUMgPSAweDFGM0Q1Qjc5O1xuY29uc3QgRFRYX01FU1NBR0VfSEVBREVSX01BR0lDX0xFTiA9IDQ7XG5jb25zdCBEVFhfTUVTU0FHRV9BVVhfSEVBREVSID0gMHgwMUYwO1xuY29uc3QgRFRYX0FVWElMSUFSWV9NQUdJQyA9IDB4YTtcblxuY29uc3QgRkxBR19UWVBFUyA9IE9iamVjdC5mcmVlemUoe1xuICBwdXNoOiAwLFxuICByZWN2OiAxLFxuICBzZW5kOiAyLFxuICByZXBseTogM1xufSk7XG5cbmNvbnN0IEFVWF9UWVBFUyA9IE9iamVjdC5mcmVlemUoe1xuICBUZXh0OiAxLFxuICBOU0tleWVkOiAyLFxuICBVSW50MzJMRTogMyxcbiAgQmlnVUludDY0TEU6IDQsXG4gIEJpZ0ludDY0TEU6IDZcbn0pO1xuXG4vKipcbiAqIERUWE1lc3NhZ2VIZWFkZXIgbGVuZ3RoIDMyXG4gKiBzdHJ1Y3QgRFRYTWVzc2FnZUhlYWRlciB7XG4gKiAgICAgdTMyIG1hZ2ljIERUWF9NRVNTQUdFX0hFQURFUl9NQUdJQ1xuICogICAgIHUzMiBoZWFkZXJMZW5ndGhcbiAqICAgICB1MTYgZnJhZ21lbnRJZCAgIHBhY2tldCBudW1iZXJcbiAqICAgICB1MTYgZnJhZ21lbnRDb3VudCAgcGFja2V0cyB0b3RhbCBudW1iZXJcbiAqICAgICB1MzIgcGF5bG9hZExlbmd0aFxuICogICAgIHUzMiBpZGVudGlmaWVyXG4gKiAgICAgdTMyIGNvbnZlcnNhdGlvbkluZGV4XG4gKiAgICAgdTMyIGNoYW5uZWxcbiAqICAgICB1MzIgZXhwZWN0c1JlcGx5XG4gKiAgICAgfVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRFRYTWVzc2FnZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBpZGVudGlmaWVyIHBhY2tldCB0cmFuc21pc3Npb24gc2VxdWVuY2UsIHRoaXMgdmFsdWUgaXMgaW5jcmVtZW50ZWQgZm9yIGVhY2ggcmVxdWVzdFxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNoYW5uZWxDb2RlIHRoZSBkYXRhIHRyYW5zbWlzc2lvbiBvZiB0aGUgc2VydmljZSB3aWxsIHVzZSB0aGlzIGNoYW5uZWwgY29kZS5cbiAqIEVhY2ggc2VydmljZSBoYXMgYSBzZXBhcmF0ZSBjaGFubmVsXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHBheWxvYWRMZW5ndGggRFRYTWVzc2FnZUF1eEJ1ZmZlci5sZW5ndGgobnVsbGFibGUpICsgc2VsZWN0b3JCdWZmZXIubGVuZ3RoKG51bGxhYmxlKVxuICogQHByb3BlcnR5IHtib29sZWFufSBleHBlY3RzUmVwbHkgaWYgdHJ1ZSByZXBseSBhIGFjayBtZXNzYWdlXG4gKiBAcHJvcGVydHkge251bWJlcn0gY29udmVyc2F0aW9uSW5kZXggIHJhdyBkYXRhICsxIGluZGljYXRlIGEgcmVwbHkgbWVzc2FnZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IGZsYWdzIG1lc3NhZ2Ugc3RhdHVzXG4gKi9cblxuY2xhc3MgRFRYTWVzc2FnZUhlYWRlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0RUWE1lc3NhZ2VPcHRpb25zfSBkYXRhXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IERUWE1lc3NhZ2VIZWFkZXJCdWZmZXJcbiAgICovXG4gIHN0YXRpYyBidWlsZCAoZGF0YSkge1xuICAgIGNvbnN0IG1lc3NhZ2VIZWFkZXIgPSBCdWZmZXIuYWxsb2MoRFRYX01FU1NBR0VfSEVBREVSX0xFTkdUSCk7XG4gICAgbWVzc2FnZUhlYWRlci53cml0ZVVJbnQzMkxFKERUWF9NRVNTQUdFX0hFQURFUl9NQUdJQywgMCk7XG4gICAgbWVzc2FnZUhlYWRlci53cml0ZVVJbnQzMkxFKERUWF9NRVNTQUdFX0hFQURFUl9MRU5HVEgsIDQpO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVVSW50MTZMRSgwLCA4KTtcbiAgICBtZXNzYWdlSGVhZGVyLndyaXRlVUludDE2TEUoMSwgMTApO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVVSW50MzJMRShkYXRhLnBheWxvYWRMZW5ndGgsIDEyKTtcbiAgICBtZXNzYWdlSGVhZGVyLndyaXRlVUludDMyTEUoZGF0YS5pZGVudGlmaWVyLCAxNik7XG4gICAgbWVzc2FnZUhlYWRlci53cml0ZVVJbnQzMkxFKGRhdGEuY29udmVyc2F0aW9uSW5kZXgsIDIwKTtcbiAgICBtZXNzYWdlSGVhZGVyLndyaXRlVUludDMyTEUoZGF0YS5jaGFubmVsQ29kZSwgMjQpO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVVSW50MzJMRShkYXRhLmV4cGVjdHNSZXBseSwgMjgpO1xuICAgIHJldHVybiBtZXNzYWdlSGVhZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBoZWFkZXJCdWZmZXIgRFRYTWVzc2FnZUhlYWRlckJ1ZmZlclxuICAgKiBAcmV0dXJucyB7T2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIHBhcnNlIChoZWFkZXJCdWZmZXIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWFnaWM6IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoMCksXG4gICAgICBoZWFkZXJMZW5ndGg6IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoNCksXG4gICAgICBmcmFnbWVudElkOiBoZWFkZXJCdWZmZXIucmVhZFVJbnQxNkxFKDgpLFxuICAgICAgZnJhZ21lbnRDb3VudDogaGVhZGVyQnVmZmVyLnJlYWRVSW50MTZMRSgxMCksXG4gICAgICBwYXlsb2FkTGVuZ3RoOiBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKDEyKSxcbiAgICAgIGlkZW50aWZpZXI6IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoMTYpLFxuICAgICAgY29udmVyc2F0aW9uSW5kZXg6IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoMjApLFxuICAgICAgY2hhbm5lbDogaGVhZGVyQnVmZmVyLnJlYWRVSW50MzJMRSgyNCksXG4gICAgICBleHBlY3RzUmVwbHk6IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoMjgpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBEVFhNZXNzYWdlUGF5bG9hZEhlYWRlciBsZW5ndGggMTZcbiAqIHN0cnVjdCBEVFhNZXNzYWdlSGVhZGVyIHtcbiAqICAgICB1MzIgZmxhZ3MgRkxBR19UWVBFU1xuICogICAgIHUzMiBhdXhMZW5ndGhcbiAqICAgICB1NjQgdG90YWxMZW5ndGhcbiAqICAgICB9XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEVFhNZXNzYWdlUGF5bG9hZEhlYWRlck9iamVjdFxuICogQHByb3BlcnR5IHtudW1iZXJ9IGZsYWdzIG1lc3NhZ2Ugc3RhdHVzXG4gKiBAcHJvcGVydHkge251bWJlcn0gYXV4TGVuZ3RoIERUWE1lc3NhZ2VBdXhCdWZmZXIubGVuZ3RoKG51bGxhYmxlKVxuICogQHByb3BlcnR5IHtiaWdpbnR9IHRvdGFsTGVuZ3RoIERUWE1lc3NhZ2VBdXhCdWZmZXIubGVuZ3RoKG51bGxhYmxlKSArIHNlbGVjdG9yQnVmZmVyLmxlbmd0aFxuICovXG5jbGFzcyBEVFhNZXNzYWdlUGF5bG9hZEhlYWRlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0gZGF0YSB7RFRYTWVzc2FnZVBheWxvYWRIZWFkZXJPYmplY3R9XG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IERUWE1lc3NhZ2VQYXlsb2FkSGVhZGVyQnVmZmVyXG4gICAqL1xuICBzdGF0aWMgYnVpbGQgKGRhdGEpIHtcbiAgICBjb25zdCBtZXNzYWdlSGVhZGVyID0gQnVmZmVyLmFsbG9jKERUWF9NRVNTQUdFX1BBWUxPQURfSEVBREVSX0xFTkdUSCk7XG4gICAgbWVzc2FnZUhlYWRlci53cml0ZVVJbnQzMkxFKGRhdGEuZmxhZ3MsIDApO1xuICAgIG1lc3NhZ2VIZWFkZXIud3JpdGVVSW50MzJMRShkYXRhLmF1eExlbmd0aCwgNCk7XG4gICAgbWVzc2FnZUhlYWRlci53cml0ZUJpZ1VJbnQ2NExFKGRhdGEudG90YWxMZW5ndGgsIDgpO1xuICAgIHJldHVybiBtZXNzYWdlSGVhZGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBoZWFkZXJCdWZmZXJcbiAgICogQHJldHVybnMge0RUWE1lc3NhZ2VQYXlsb2FkSGVhZGVyT2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIHBhcnNlIChoZWFkZXJCdWZmZXIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmxhZ3M6IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoMCksXG4gICAgICBhdXhMZW5ndGg6IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoNCksXG4gICAgICB0b3RhbExlbmd0aDogaGVhZGVyQnVmZmVyLnJlYWRCaWdJbnQ2NExFKDgpXG4gICAgfTtcbiAgfVxufVxuXG5cbmNsYXNzIERUWE1lc3NhZ2VBdXgge1xuICBjb25zdHJ1Y3RvciAoZGF0YSA9IFtdKSB7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBKUyBBcnJheSB0byBBcHBsZSBOU0tleWVkIEJ1ZmZlclxuICAgKiBAcmV0dXJucyB7QnVmZmVyfVxuICAgKi9cbiAgYnVpbGQgKCkge1xuICAgIGNvbnN0IG1lc3NhZ2VBdXggPSBuZXcgRFRYTWVzc2FnZUF1eEJ1ZmZlcigpO1xuICAgIGxldCBidWYgPSBCdWZmZXIuYWxsb2MoMCk7XG4gICAgaWYgKHRoaXMuZGF0YS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBidWY7XG4gICAgfVxuICAgIGZvciAoY29uc3QgYXJnIG9mIHRoaXMuZGF0YSkge1xuICAgICAgaWYgKGFyZyBpbnN0YW5jZW9mIERUWE1lc3NhZ2VBdXhCdWZmZXIpIHtcbiAgICAgICAgYnVmID0gQnVmZmVyLmNvbmNhdChbYnVmLCBhcmcuZ2V0Qnl0ZXMoKV0pO1xuICAgICAgfSBlbHNlIGlmIChfLmlzTnVtYmVyKGFyZykpIHtcbiAgICAgICAgbWVzc2FnZUF1eC5hcHBlbmRJbnQoYXJnKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGFyZyA9PSAnYmlnaW50Jykge1xuICAgICAgICBtZXNzYWdlQXV4LmFwcGVuZExvbmcoYXJnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2VBdXguYXBwZW5kT2JqZWN0KGFyZyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFtidWYsIG1lc3NhZ2VBdXguZ2V0Qnl0ZXMoKV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlcyBuc2tleWVkIEJ1ZmZlciBpbnRvIGpzIGFycmF5XG4gICAqIEBwYXJhbSB7QnVmZmVyfSBoZWFkZXJCdWZmZXJcbiAgICogQHBhcmFtIHtEVFhNZXNzYWdlUGF5bG9hZEhlYWRlck9iamVjdH0gcGF5bG9hZEhlYWRlclxuICAgKiBAcmV0dXJucyB7QXJyYXl9XG4gICAqL1xuICBzdGF0aWMgcGFyc2UgKGhlYWRlckJ1ZmZlciwgcGF5bG9hZEhlYWRlcikge1xuICAgIGxldCBjdXJzb3IgPSAwO1xuICAgIGNvbnN0IGRhdGEgPSBbXTtcbiAgICBjb25zdCBsZW5ndGggPSBoZWFkZXJCdWZmZXIucmVhZEJpZ0ludDY0TEUoOCk7XG4gICAgY3Vyc29yICs9IDE2O1xuICAgIHdoaWxlIChjdXJzb3IgPD0gbGVuZ3RoKSB7XG4gICAgICBpZiAocGF5bG9hZEhlYWRlci5mbGFncyAhPT0gRkxBR19UWVBFUy5wdXNoKSB7XG4gICAgICAgIGNvbnN0IG0gPSBoZWFkZXJCdWZmZXIucmVhZFVJbnQzMkxFKGN1cnNvcik7XG4gICAgICAgIGN1cnNvciArPSA0O1xuICAgICAgICBpZiAobSAhPT0gRFRYX0FVWElMSUFSWV9NQUdJQykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgaW5jb3JyZWN0IGF1eGlsaWFyeSBtYWdpYzogJHttfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCB0eXBlID0gaGVhZGVyQnVmZmVyLnJlYWRVSW50MzJMRShjdXJzb3IpO1xuICAgICAgY3Vyc29yICs9IDQ7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBBVVhfVFlQRVMuVGV4dDoge1xuICAgICAgICAgIGNvbnN0IHN0ckxlbiA9IGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoY3Vyc29yKTtcbiAgICAgICAgICBjdXJzb3IgKz0gNDtcbiAgICAgICAgICBkYXRhLnB1c2goaGVhZGVyQnVmZmVyLnNsaWNlKGN1cnNvciwgY3Vyc29yICsgc3RyTGVuKSk7XG4gICAgICAgICAgY3Vyc29yICs9IHN0ckxlbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIEFVWF9UWVBFUy5OU0tleWVkOiB7XG4gICAgICAgICAgY29uc3Qgc3RyTGVuID0gaGVhZGVyQnVmZmVyLnJlYWRVSW50MzJMRShjdXJzb3IpO1xuICAgICAgICAgIGN1cnNvciArPSA0O1xuICAgICAgICAgIGNvbnN0IGFyY2hpdmVkX2RhdGEgPSBoZWFkZXJCdWZmZXIuc2xpY2UoY3Vyc29yLCBjdXJzb3IgKyBzdHJMZW4pO1xuICAgICAgICAgIGRhdGEucHVzaCh1bmFyY2hpdmUoYXJjaGl2ZWRfZGF0YSkpO1xuICAgICAgICAgIGN1cnNvciArPSBzdHJMZW47XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBBVVhfVFlQRVMuVUludDMyTEU6XG4gICAgICAgICAgZGF0YS5wdXNoKGhlYWRlckJ1ZmZlci5yZWFkVUludDMyTEUoY3Vyc29yKSk7XG4gICAgICAgICAgY3Vyc29yICs9IDQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgQVVYX1RZUEVTLkJpZ1VJbnQ2NExFOlxuICAgICAgICAgIGRhdGEucHVzaChoZWFkZXJCdWZmZXIucmVhZEJpZ1VJbnQ2NExFKGN1cnNvcikpO1xuICAgICAgICAgIGN1cnNvciArPSA4O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEFVWF9UWVBFUy5CaWdJbnQ2NExFOlxuICAgICAgICAgIGRhdGEucHVzaChoZWFkZXJCdWZmZXIucmVhZEJpZ0ludDY0TEUoY3Vyc29yKSk7XG4gICAgICAgICAgY3Vyc29yICs9IDg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHR5cGUgJHt0eXBlfWApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxufVxuXG5jbGFzcyBJbnN0cnVtZW50UlBDUGFyc2VFcnJvciB7XG4gIGNvbnN0cnVjdG9yIChkYXRhKSB7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgfVxufVxuXG5jbGFzcyBEVFhNZXNzYWdlQXV4QnVmZmVyIHtcbiAgY29uc3RydWN0b3IgKCkge1xuICAgIHRoaXMuX2J1ZiA9IEJ1ZmZlci5hbGxvYygwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAgICovXG4gIGFwcGVuZEludCAodmFsdWUpIHtcbiAgICBjb25zdCBidWYgPSBCdWZmZXIuYWxsb2MoMTIpO1xuICAgIGJ1Zi53cml0ZVVJbnQzMkxFKERUWF9BVVhJTElBUllfTUFHSUMsIDApO1xuICAgIGJ1Zi53cml0ZVVJbnQzMkxFKDMsIDQpO1xuICAgIGJ1Zi53cml0ZVVJbnQzMkxFKHZhbHVlLCA4KTtcbiAgICB0aGlzLl9idWYgPSBCdWZmZXIuY29uY2F0KFt0aGlzLl9idWYsIGJ1Zl0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7YmlnaW50fSB2YWx1ZVxuICAgKi9cbiAgYXBwZW5kTG9uZyAodmFsdWUpIHtcbiAgICBjb25zdCBidWYgPSBCdWZmZXIuYWxsb2MoMTYpO1xuICAgIGJ1Zi53cml0ZVVJbnQzMkxFKERUWF9BVVhJTElBUllfTUFHSUMsIDApO1xuICAgIGJ1Zi53cml0ZVVJbnQzMkxFKDQsIDQpO1xuICAgIGJ1Zi53cml0ZUJpZ1VJbnQ2NExFKHZhbHVlLCA4KTtcbiAgICB0aGlzLl9idWYgPSBCdWZmZXIuY29uY2F0KFt0aGlzLl9idWYsIGJ1Zl0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICAgKi9cbiAgYXBwZW5kU2lnbmVkSW50ICh2YWx1ZSkge1xuICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5hbGxvYygxMik7XG4gICAgYnVmLndyaXRlVUludDMyTEUoRFRYX0FVWElMSUFSWV9NQUdJQywgMCk7XG4gICAgYnVmLndyaXRlVUludDMyTEUoMywgNCk7XG4gICAgYnVmLndyaXRlSW50MzJMRSh2YWx1ZSwgOCk7XG4gICAgdGhpcy5fYnVmID0gQnVmZmVyLmNvbmNhdChbdGhpcy5fYnVmLCBidWZdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2JpZ2ludH0gdmFsdWVcbiAgICovXG4gIGFwcGVuZFNpZ25lZExvbmcgKHZhbHVlKSB7XG4gICAgY29uc3QgYnVmID0gQnVmZmVyLmFsbG9jKDE2KTtcbiAgICBidWYud3JpdGVVSW50MzJMRShEVFhfQVVYSUxJQVJZX01BR0lDLCAwKTtcbiAgICBidWYud3JpdGVVSW50MzJMRSg2LCA0KTtcbiAgICBidWYud3JpdGVCaWdJbnQ2NExFKHZhbHVlLCA4KTtcbiAgICB0aGlzLl9idWYgPSBCdWZmZXIuY29uY2F0KFt0aGlzLl9idWYsIGJ1Zl0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZVxuICAgKi9cbiAgYXBwZW5kT2JqZWN0ICh2YWx1ZSkge1xuICAgIGNvbnN0IGJ1ZiA9IGFyY2hpdmUodmFsdWUpO1xuICAgIGNvbnN0IGJ1ZjIgPSBCdWZmZXIuYWxsb2MoMTIpO1xuICAgIGJ1ZjIud3JpdGVVSW50MzJMRShEVFhfQVVYSUxJQVJZX01BR0lDLCAwKTtcbiAgICBidWYyLndyaXRlVUludDMyTEUoMiwgNCk7XG4gICAgYnVmMi53cml0ZVVJbnQzMkxFKGJ1Zi5sZW5ndGgsIDgpO1xuICAgIHRoaXMuX2J1ZiA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuX2J1ZiwgYnVmMiwgYnVmXSk7XG4gIH1cblxuICBnZXRCeXRlcyAoKSB7XG4gICAgY29uc3Qgb3V0ID0gQnVmZmVyLmFsbG9jKDE2KTtcbiAgICBvdXQud3JpdGVVSW50MzJMRShEVFhfTUVTU0FHRV9BVVhfSEVBREVSLCAwKTtcbiAgICBvdXQud3JpdGVVSW50MzJMRSh0aGlzLl9idWYubGVuZ3RoLCA4KTtcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbb3V0LCB0aGlzLl9idWZdKTtcbiAgfVxufVxuXG5cblxuY2xhc3MgRFRYTWVzc2FnZSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0RUWE1lc3NhZ2VPcHRpb25zfSBvcHRzXG4gICAqL1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7XG4gICAgY29uc3Qge1xuICAgICAgaWRlbnRpZmllcixcbiAgICAgIGNoYW5uZWxDb2RlLFxuICAgICAgc2VsZWN0b3IsXG4gICAgICBleHBlY3RzUmVwbHksXG4gICAgICBjb252ZXJzYXRpb25JbmRleCA9IDAsXG4gICAgICBmbGFncyA9IEZMQUdfVFlQRVMuc2VuZFxuICAgIH0gPSBvcHRzO1xuICAgIHRoaXMuX21lc3NhZ2VIZWFkZXIgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fcGF5bG9hZEhlYWRlciA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9pZGVudGlmaWVyID0gaWRlbnRpZmllcjtcbiAgICB0aGlzLl9jaGFubmVsQ29kZSA9IGNoYW5uZWxDb2RlO1xuICAgIHRoaXMuX2V4cGVjdHNSZXBseSA9IGV4cGVjdHNSZXBseTtcbiAgICB0aGlzLl9zZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIHRoaXMuX2NvbnZlcnNhdGlvbkluZGV4ID0gY29udmVyc2F0aW9uSW5kZXg7XG4gICAgdGhpcy5fZmxhZ3MgPSBmbGFncztcbiAgICB0aGlzLmF1eGlsaWFyaWVzID0gbmV3IERUWE1lc3NhZ2VBdXgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgRFRYTWVzc2FnZUhlYWRlciBpZGVudGlmaWVyLiBQYWNrZXQgdHJhbnNtaXNzaW9uIHNlcXVlbmNlXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgaWRlbnRpZmllciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21lc3NhZ2VIZWFkZXI/LmlkZW50aWZpZXI7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IERUWE1lc3NhZ2VIZWFkZXIgY2hhbm5lbENvZGUuXG4gICAqIFBhY2tldCB0cmFuc21pc3Npb24gY2hhbm5lbENvZGUuIFVzZSB0aGlzIHZhbHVlIHRvIGRpc3Rpbmd1aXNoIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGNoYW5uZWxzXG4gICAqIGNhbGwgdGhpcyBtZXRob2QgYEluc3RydW1lbnRTZXJ2aWNlLnJlZ2lzdGVyQ2hhbm5lbENhbGxiYWNrYCBnZXQgdGhlIGNoYW5uZWwgbWVzc2FnZVxuICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgKi9cbiAgZ2V0IGNoYW5uZWxDb2RlICgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVzc2FnZUhlYWRlcj8uY2hhbm5lbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgRFRYTWVzc2FnZUhlYWRlciBleHBlY3RzUmVwbHkuIFdoZXRoZXIgdG8gbmVlZCBhY2sgbWVzc2FnZVxuICAgKiBpZiBleHBlY3RzUmVwbHkgaXMgdHJ1ZSBtdXN0IHJlcGx5IGFjayBtZXNzYWdlXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgZ2V0IGV4cGVjdHNSZXBseSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21lc3NhZ2VIZWFkZXI/LmV4cGVjdHNSZXBseTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsIHRoaXMgbWV0aG9kIGBJbnN0cnVtZW50U2VydmljZS5yZWdpc3RlclNlbGVjdG9yQ2FsbGJhY2tgIGdldCB0aGUgc2VsZWN0b3IgbWVzc2FnZVxuICAgKiBAcmV0dXJucyB7Kn0gVW5rbm93biBkYXRhXG4gICAqL1xuICBnZXQgc2VsZWN0b3IgKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gZGF0YVxuICAgKi9cbiAgc2V0IHNlbGVjdG9yIChkYXRhKSB7XG4gICAgdGhpcy5fc2VsZWN0b3IgPSBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBEVFhNZXNzYWdlSGVhZGVyIGNvbnZlcnNhdGlvbkluZGV4XG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAqL1xuICBnZXQgY29udmVyc2F0aW9uSW5kZXggKCkge1xuICAgIHJldHVybiB0aGlzLl9tZXNzYWdlSGVhZGVyPy5jb252ZXJzYXRpb25JbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEVFhNZXNzYWdlIEJ1ZmZlcjogRFRYTWVzc2FnZUhlYWRlciArIFBheWxvYWRIZWFkZXIgKyBEVFhNZXNzYWdlQXV4QnVmZmVyKG51bGxhYmxlKSArIHNlbGVjdG9yKG51bGxhYmxlKVxuICAgKiBAcmV0dXJucyB7QnVmZmVyfVxuICAgKi9cbiAgYnVpbGQgKCkge1xuICAgIGNvbnN0IHNlbCA9IHRoaXMuX3NlbGVjdG9yID8gYXJjaGl2ZSh0aGlzLl9zZWxlY3RvcikgOiBCdWZmZXIuYWxsb2MoMCk7XG4gICAgY29uc3QgYXV4ID0gdGhpcy5hdXhpbGlhcmllcy5idWlsZCgpO1xuICAgIGNvbnN0IHBheWxvYWRIZWFkZXIgPSBEVFhNZXNzYWdlUGF5bG9hZEhlYWRlci5idWlsZCh7XG4gICAgICBmbGFnczogdGhpcy5fZmxhZ3MsXG4gICAgICBhdXhMZW5ndGg6IGF1eC5sZW5ndGgsXG4gICAgICAvLyBuZWVkIHRvIGNvbnZlcnQgdG8gYmlnaW50IGluIGFueSBjYXNlXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgICAgIHRvdGFsTGVuZ3RoOiBCaWdJbnQoYXV4Lmxlbmd0aCArIHNlbC5sZW5ndGgpLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbWVzc2FnZUhlYWRlciA9IERUWE1lc3NhZ2VIZWFkZXIuYnVpbGQoe1xuICAgICAgcGF5bG9hZExlbmd0aDogRFRYX01FU1NBR0VfUEFZTE9BRF9IRUFERVJfTEVOR1RIICsgYXV4Lmxlbmd0aCArIHNlbC5sZW5ndGgsXG4gICAgICBpZGVudGlmaWVyOiB0aGlzLl9pZGVudGlmaWVyLFxuICAgICAgY29udmVyc2F0aW9uSW5kZXg6IHRoaXMuX2NvbnZlcnNhdGlvbkluZGV4LFxuICAgICAgY2hhbm5lbENvZGU6IHRoaXMuX2NoYW5uZWxDb2RlLFxuICAgICAgZXhwZWN0c1JlcGx5OiB0aGlzLl9leHBlY3RzUmVwbHlcbiAgICB9KTtcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbbWVzc2FnZUhlYWRlciwgcGF5bG9hZEhlYWRlciwgYXV4LCBzZWxdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgRFRYIGJ1ZmZlciBpbnRvIGFuIGpzIG9iamVjdC4gUmV0dXJuZWQgaW4gRFRYRGVjb2RlciBTdHJlYW0uVHJhbnNmb3JtXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBoZWFkZXJCdWYgIERUWE1lc3NhZ2VIZWFkZXIgYnVmZmVyXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBwYXlsb2FkQnVmICBQYXlsb2FkSGVhZGVyQnVmZmVyICsgRFRYTWVzc2FnZUF1eEJ1ZmZlcihudWxsYWJsZSkgKyBzZWxlY3RvckJ1ZmZlcihudWxsYWJsZSlcbiAgICogQHJldHVybnMge0RUWE1lc3NhZ2V9XG4gICAqL1xuICBzdGF0aWMgcGFyc2UgKGhlYWRlckJ1ZiwgcGF5bG9hZEJ1Zikge1xuICAgIGxldCBjdXJzb3IgPSAwO1xuICAgIGNvbnN0IHJldCA9IG5ldyBEVFhNZXNzYWdlKCk7XG4gICAgcmV0Ll9tZXNzYWdlSGVhZGVyID0gRFRYTWVzc2FnZUhlYWRlci5wYXJzZShoZWFkZXJCdWYpO1xuICAgIGlmIChyZXQuX21lc3NhZ2VIZWFkZXIucGF5bG9hZExlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gICAgcmV0Ll9wYXlsb2FkSGVhZGVyID0gRFRYTWVzc2FnZVBheWxvYWRIZWFkZXIucGFyc2UocGF5bG9hZEJ1Zi5zbGljZShjdXJzb3IsIERUWF9NRVNTQUdFX1BBWUxPQURfSEVBREVSX0xFTkdUSCkpO1xuICAgIGN1cnNvciArPSBEVFhfTUVTU0FHRV9QQVlMT0FEX0hFQURFUl9MRU5HVEg7XG4gICAgLy8gdG90YWxMZW5ndGggaXMgYmlnaW50IHVzZSAwblxuICAgIGlmIChyZXQuX3BheWxvYWRIZWFkZXIudG90YWxMZW5ndGggPT09IDBuKSB7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgICBpZiAocmV0Ll9wYXlsb2FkSGVhZGVyLmF1eExlbmd0aCA+IDApIHtcbiAgICAgIHJldC5hdXhpbGlhcmllcyA9IERUWE1lc3NhZ2VBdXgucGFyc2UocGF5bG9hZEJ1Zi5zbGljZShjdXJzb3IsIGN1cnNvciArIHJldC5fcGF5bG9hZEhlYWRlci5hdXhMZW5ndGgpLCByZXQuX3BheWxvYWRIZWFkZXIpO1xuICAgICAgY3Vyc29yICs9IHJldC5fcGF5bG9hZEhlYWRlci5hdXhMZW5ndGg7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHBheWxvYWRCdWYuc2xpY2UoY3Vyc29yLCBjdXJzb3IgKyBwYXlsb2FkQnVmLmxlbmd0aCk7XG4gICAgcmV0LnNlbGVjdG9yID0gZGF0YTtcbiAgICBpZiAoZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGZ1biBvZiBbdW5hcmNoaXZlLCBwbGlzdGxpYi5wYXJzZUJ1ZmZlcl0pIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXQuc2VsZWN0b3IgPSBmdW4oZGF0YSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICByZXQuc2VsZWN0b3IgPSBuZXcgSW5zdHJ1bWVudFJQQ1BhcnNlRXJyb3IoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxufVxuXG5leHBvcnQgeyBEVFhNZXNzYWdlSGVhZGVyLCBEVFhNZXNzYWdlUGF5bG9hZEhlYWRlciwgRFRYTWVzc2FnZUF1eEJ1ZmZlciwgRFRYTWVzc2FnZUF1eCwgRFRYTWVzc2FnZSxcbiAgRFRYX01FU1NBR0VfUEFZTE9BRF9IRUFERVJfTEVOR1RILCBEVFhfTUVTU0FHRV9IRUFERVJfTEVOR1RILCBEVFhfTUVTU0FHRV9IRUFERVJfTUFHSUMsIERUWF9NRVNTQUdFX0hFQURFUl9NQUdJQ19MRU4sXG4gIEZMQUdfVFlQRVN9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLGlDQUFpQyxHQUFHLEVBQTFDOztBQUNBLE1BQU1DLHlCQUF5QixHQUFHLEVBQWxDOztBQUNBLE1BQU1DLHdCQUF3QixHQUFHLFVBQWpDOztBQUNBLE1BQU1DLDRCQUE0QixHQUFHLENBQXJDOztBQUNBLE1BQU1DLHNCQUFzQixHQUFHLE1BQS9CO0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsR0FBNUI7QUFFQSxNQUFNQyxVQUFVLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjO0VBQy9CQyxJQUFJLEVBQUUsQ0FEeUI7RUFFL0JDLElBQUksRUFBRSxDQUZ5QjtFQUcvQkMsSUFBSSxFQUFFLENBSHlCO0VBSS9CQyxLQUFLLEVBQUU7QUFKd0IsQ0FBZCxDQUFuQjs7QUFPQSxNQUFNQyxTQUFTLEdBQUdOLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjO0VBQzlCTSxJQUFJLEVBQUUsQ0FEd0I7RUFFOUJDLE9BQU8sRUFBRSxDQUZxQjtFQUc5QkMsUUFBUSxFQUFFLENBSG9CO0VBSTlCQyxXQUFXLEVBQUUsQ0FKaUI7RUFLOUJDLFVBQVUsRUFBRTtBQUxrQixDQUFkLENBQWxCOztBQWtDQSxNQUFNQyxnQkFBTixDQUF1QjtFQUtULE9BQUxDLEtBQUssQ0FBRUMsSUFBRixFQUFRO0lBQ2xCLE1BQU1DLGFBQWEsR0FBR0MsTUFBTSxDQUFDQyxLQUFQLENBQWF2Qix5QkFBYixDQUF0QjtJQUNBcUIsYUFBYSxDQUFDRyxhQUFkLENBQTRCdkIsd0JBQTVCLEVBQXNELENBQXREO0lBQ0FvQixhQUFhLENBQUNHLGFBQWQsQ0FBNEJ4Qix5QkFBNUIsRUFBdUQsQ0FBdkQ7SUFDQXFCLGFBQWEsQ0FBQ0ksYUFBZCxDQUE0QixDQUE1QixFQUErQixDQUEvQjtJQUNBSixhQUFhLENBQUNJLGFBQWQsQ0FBNEIsQ0FBNUIsRUFBK0IsRUFBL0I7SUFDQUosYUFBYSxDQUFDRyxhQUFkLENBQTRCSixJQUFJLENBQUNNLGFBQWpDLEVBQWdELEVBQWhEO0lBQ0FMLGFBQWEsQ0FBQ0csYUFBZCxDQUE0QkosSUFBSSxDQUFDTyxVQUFqQyxFQUE2QyxFQUE3QztJQUNBTixhQUFhLENBQUNHLGFBQWQsQ0FBNEJKLElBQUksQ0FBQ1EsaUJBQWpDLEVBQW9ELEVBQXBEO0lBQ0FQLGFBQWEsQ0FBQ0csYUFBZCxDQUE0QkosSUFBSSxDQUFDUyxXQUFqQyxFQUE4QyxFQUE5QztJQUNBUixhQUFhLENBQUNHLGFBQWQsQ0FBNEJKLElBQUksQ0FBQ1UsWUFBakMsRUFBK0MsRUFBL0M7SUFDQSxPQUFPVCxhQUFQO0VBQ0Q7O0VBTVcsT0FBTFUsS0FBSyxDQUFFQyxZQUFGLEVBQWdCO0lBQzFCLE9BQU87TUFDTEMsS0FBSyxFQUFFRCxZQUFZLENBQUNFLFlBQWIsQ0FBMEIsQ0FBMUIsQ0FERjtNQUVMQyxZQUFZLEVBQUVILFlBQVksQ0FBQ0UsWUFBYixDQUEwQixDQUExQixDQUZUO01BR0xFLFVBQVUsRUFBRUosWUFBWSxDQUFDSyxZQUFiLENBQTBCLENBQTFCLENBSFA7TUFJTEMsYUFBYSxFQUFFTixZQUFZLENBQUNLLFlBQWIsQ0FBMEIsRUFBMUIsQ0FKVjtNQUtMWCxhQUFhLEVBQUVNLFlBQVksQ0FBQ0UsWUFBYixDQUEwQixFQUExQixDQUxWO01BTUxQLFVBQVUsRUFBRUssWUFBWSxDQUFDRSxZQUFiLENBQTBCLEVBQTFCLENBTlA7TUFPTE4saUJBQWlCLEVBQUVJLFlBQVksQ0FBQ0UsWUFBYixDQUEwQixFQUExQixDQVBkO01BUUxLLE9BQU8sRUFBRVAsWUFBWSxDQUFDRSxZQUFiLENBQTBCLEVBQTFCLENBUko7TUFTTEosWUFBWSxFQUFFRSxZQUFZLENBQUNFLFlBQWIsQ0FBMEIsRUFBMUI7SUFUVCxDQUFQO0VBV0Q7O0FBbkNvQjs7OztBQXFEdkIsTUFBTU0sdUJBQU4sQ0FBOEI7RUFLaEIsT0FBTHJCLEtBQUssQ0FBRUMsSUFBRixFQUFRO0lBQ2xCLE1BQU1DLGFBQWEsR0FBR0MsTUFBTSxDQUFDQyxLQUFQLENBQWF4QixpQ0FBYixDQUF0QjtJQUNBc0IsYUFBYSxDQUFDRyxhQUFkLENBQTRCSixJQUFJLENBQUNxQixLQUFqQyxFQUF3QyxDQUF4QztJQUNBcEIsYUFBYSxDQUFDRyxhQUFkLENBQTRCSixJQUFJLENBQUNzQixTQUFqQyxFQUE0QyxDQUE1QztJQUNBckIsYUFBYSxDQUFDc0IsZ0JBQWQsQ0FBK0J2QixJQUFJLENBQUN3QixXQUFwQyxFQUFpRCxDQUFqRDtJQUNBLE9BQU92QixhQUFQO0VBQ0Q7O0VBTVcsT0FBTFUsS0FBSyxDQUFFQyxZQUFGLEVBQWdCO0lBQzFCLE9BQU87TUFDTFMsS0FBSyxFQUFFVCxZQUFZLENBQUNFLFlBQWIsQ0FBMEIsQ0FBMUIsQ0FERjtNQUVMUSxTQUFTLEVBQUVWLFlBQVksQ0FBQ0UsWUFBYixDQUEwQixDQUExQixDQUZOO01BR0xVLFdBQVcsRUFBRVosWUFBWSxDQUFDYSxjQUFiLENBQTRCLENBQTVCO0lBSFIsQ0FBUDtFQUtEOztBQXZCMkI7Ozs7QUEyQjlCLE1BQU1DLGFBQU4sQ0FBb0I7RUFDbEJDLFdBQVcsQ0FBRTNCLElBQUksR0FBRyxFQUFULEVBQWE7SUFDdEIsS0FBS0EsSUFBTCxHQUFZQSxJQUFaO0VBQ0Q7O0VBTURELEtBQUssR0FBSTtJQUNQLE1BQU02QixVQUFVLEdBQUcsSUFBSUMsbUJBQUosRUFBbkI7SUFDQSxJQUFJQyxHQUFHLEdBQUc1QixNQUFNLENBQUNDLEtBQVAsQ0FBYSxDQUFiLENBQVY7O0lBQ0EsSUFBSSxLQUFLSCxJQUFMLENBQVUrQixNQUFWLEtBQXFCLENBQXpCLEVBQTRCO01BQzFCLE9BQU9ELEdBQVA7SUFDRDs7SUFDRCxLQUFLLE1BQU1FLEdBQVgsSUFBa0IsS0FBS2hDLElBQXZCLEVBQTZCO01BQzNCLElBQUlnQyxHQUFHLFlBQVlILG1CQUFuQixFQUF3QztRQUN0Q0MsR0FBRyxHQUFHNUIsTUFBTSxDQUFDK0IsTUFBUCxDQUFjLENBQUNILEdBQUQsRUFBTUUsR0FBRyxDQUFDRSxRQUFKLEVBQU4sQ0FBZCxDQUFOO01BQ0QsQ0FGRCxNQUVPLElBQUlDLGVBQUEsQ0FBRUMsUUFBRixDQUFXSixHQUFYLENBQUosRUFBcUI7UUFDMUJKLFVBQVUsQ0FBQ1MsU0FBWCxDQUFxQkwsR0FBckI7TUFDRCxDQUZNLE1BRUEsSUFBSSxPQUFPQSxHQUFQLElBQWMsUUFBbEIsRUFBNEI7UUFDakNKLFVBQVUsQ0FBQ1UsVUFBWCxDQUFzQk4sR0FBdEI7TUFDRCxDQUZNLE1BRUE7UUFDTEosVUFBVSxDQUFDVyxZQUFYLENBQXdCUCxHQUF4QjtNQUNEO0lBQ0Y7O0lBQ0QsT0FBTzlCLE1BQU0sQ0FBQytCLE1BQVAsQ0FBYyxDQUFDSCxHQUFELEVBQU1GLFVBQVUsQ0FBQ00sUUFBWCxFQUFOLENBQWQsQ0FBUDtFQUNEOztFQVFXLE9BQUx2QixLQUFLLENBQUVDLFlBQUYsRUFBZ0I0QixhQUFoQixFQUErQjtJQUN6QyxJQUFJQyxNQUFNLEdBQUcsQ0FBYjtJQUNBLE1BQU16QyxJQUFJLEdBQUcsRUFBYjtJQUNBLE1BQU0rQixNQUFNLEdBQUduQixZQUFZLENBQUNhLGNBQWIsQ0FBNEIsQ0FBNUIsQ0FBZjtJQUNBZ0IsTUFBTSxJQUFJLEVBQVY7O0lBQ0EsT0FBT0EsTUFBTSxJQUFJVixNQUFqQixFQUF5QjtNQUN2QixJQUFJUyxhQUFhLENBQUNuQixLQUFkLEtBQXdCcEMsVUFBVSxDQUFDRyxJQUF2QyxFQUE2QztRQUMzQyxNQUFNc0QsQ0FBQyxHQUFHOUIsWUFBWSxDQUFDRSxZQUFiLENBQTBCMkIsTUFBMUIsQ0FBVjtRQUNBQSxNQUFNLElBQUksQ0FBVjs7UUFDQSxJQUFJQyxDQUFDLEtBQUsxRCxtQkFBVixFQUErQjtVQUM3QixNQUFNLElBQUkyRCxLQUFKLENBQVcsOEJBQTZCRCxDQUFFLEVBQTFDLENBQU47UUFDRDtNQUNGOztNQUNELE1BQU1FLElBQUksR0FBR2hDLFlBQVksQ0FBQ0UsWUFBYixDQUEwQjJCLE1BQTFCLENBQWI7TUFDQUEsTUFBTSxJQUFJLENBQVY7O01BQ0EsUUFBUUcsSUFBUjtRQUNFLEtBQUtwRCxTQUFTLENBQUNDLElBQWY7VUFBcUI7WUFDbkIsTUFBTW9ELE1BQU0sR0FBR2pDLFlBQVksQ0FBQ0UsWUFBYixDQUEwQjJCLE1BQTFCLENBQWY7WUFDQUEsTUFBTSxJQUFJLENBQVY7WUFDQXpDLElBQUksQ0FBQ1osSUFBTCxDQUFVd0IsWUFBWSxDQUFDa0MsS0FBYixDQUFtQkwsTUFBbkIsRUFBMkJBLE1BQU0sR0FBR0ksTUFBcEMsQ0FBVjtZQUNBSixNQUFNLElBQUlJLE1BQVY7WUFDQTtVQUNEOztRQUNELEtBQUtyRCxTQUFTLENBQUNFLE9BQWY7VUFBd0I7WUFDdEIsTUFBTW1ELE1BQU0sR0FBR2pDLFlBQVksQ0FBQ0UsWUFBYixDQUEwQjJCLE1BQTFCLENBQWY7WUFDQUEsTUFBTSxJQUFJLENBQVY7WUFDQSxNQUFNTSxhQUFhLEdBQUduQyxZQUFZLENBQUNrQyxLQUFiLENBQW1CTCxNQUFuQixFQUEyQkEsTUFBTSxHQUFHSSxNQUFwQyxDQUF0QjtZQUNBN0MsSUFBSSxDQUFDWixJQUFMLENBQVUsSUFBQTRELGtCQUFBLEVBQVVELGFBQVYsQ0FBVjtZQUNBTixNQUFNLElBQUlJLE1BQVY7WUFDQTtVQUNEOztRQUNELEtBQUtyRCxTQUFTLENBQUNHLFFBQWY7VUFDRUssSUFBSSxDQUFDWixJQUFMLENBQVV3QixZQUFZLENBQUNFLFlBQWIsQ0FBMEIyQixNQUExQixDQUFWO1VBQ0FBLE1BQU0sSUFBSSxDQUFWO1VBQ0E7O1FBQ0YsS0FBS2pELFNBQVMsQ0FBQ0ksV0FBZjtVQUNFSSxJQUFJLENBQUNaLElBQUwsQ0FBVXdCLFlBQVksQ0FBQ3FDLGVBQWIsQ0FBNkJSLE1BQTdCLENBQVY7VUFDQUEsTUFBTSxJQUFJLENBQVY7VUFDQTs7UUFDRixLQUFLakQsU0FBUyxDQUFDSyxVQUFmO1VBQ0VHLElBQUksQ0FBQ1osSUFBTCxDQUFVd0IsWUFBWSxDQUFDYSxjQUFiLENBQTRCZ0IsTUFBNUIsQ0FBVjtVQUNBQSxNQUFNLElBQUksQ0FBVjtVQUNBOztRQUNGO1VBQ0UsTUFBTSxJQUFJRSxLQUFKLENBQVcsZ0JBQWVDLElBQUssRUFBL0IsQ0FBTjtNQTdCSjtJQStCRDs7SUFDRCxPQUFPNUMsSUFBUDtFQUNEOztBQW5GaUI7Ozs7QUFzRnBCLE1BQU1rRCx1QkFBTixDQUE4QjtFQUM1QnZCLFdBQVcsQ0FBRTNCLElBQUYsRUFBUTtJQUNqQixLQUFLQSxJQUFMLEdBQVlBLElBQVo7RUFDRDs7QUFIMkI7O0FBTTlCLE1BQU02QixtQkFBTixDQUEwQjtFQUN4QkYsV0FBVyxHQUFJO0lBQ2IsS0FBS3dCLElBQUwsR0FBWWpELE1BQU0sQ0FBQ0MsS0FBUCxDQUFhLENBQWIsQ0FBWjtFQUNEOztFQUtEa0MsU0FBUyxDQUFFZSxLQUFGLEVBQVM7SUFDaEIsTUFBTXRCLEdBQUcsR0FBRzVCLE1BQU0sQ0FBQ0MsS0FBUCxDQUFhLEVBQWIsQ0FBWjtJQUNBMkIsR0FBRyxDQUFDMUIsYUFBSixDQUFrQnBCLG1CQUFsQixFQUF1QyxDQUF2QztJQUNBOEMsR0FBRyxDQUFDMUIsYUFBSixDQUFrQixDQUFsQixFQUFxQixDQUFyQjtJQUNBMEIsR0FBRyxDQUFDMUIsYUFBSixDQUFrQmdELEtBQWxCLEVBQXlCLENBQXpCO0lBQ0EsS0FBS0QsSUFBTCxHQUFZakQsTUFBTSxDQUFDK0IsTUFBUCxDQUFjLENBQUMsS0FBS2tCLElBQU4sRUFBWXJCLEdBQVosQ0FBZCxDQUFaO0VBQ0Q7O0VBS0RRLFVBQVUsQ0FBRWMsS0FBRixFQUFTO0lBQ2pCLE1BQU10QixHQUFHLEdBQUc1QixNQUFNLENBQUNDLEtBQVAsQ0FBYSxFQUFiLENBQVo7SUFDQTJCLEdBQUcsQ0FBQzFCLGFBQUosQ0FBa0JwQixtQkFBbEIsRUFBdUMsQ0FBdkM7SUFDQThDLEdBQUcsQ0FBQzFCLGFBQUosQ0FBa0IsQ0FBbEIsRUFBcUIsQ0FBckI7SUFDQTBCLEdBQUcsQ0FBQ1AsZ0JBQUosQ0FBcUI2QixLQUFyQixFQUE0QixDQUE1QjtJQUNBLEtBQUtELElBQUwsR0FBWWpELE1BQU0sQ0FBQytCLE1BQVAsQ0FBYyxDQUFDLEtBQUtrQixJQUFOLEVBQVlyQixHQUFaLENBQWQsQ0FBWjtFQUNEOztFQUtEdUIsZUFBZSxDQUFFRCxLQUFGLEVBQVM7SUFDdEIsTUFBTXRCLEdBQUcsR0FBRzVCLE1BQU0sQ0FBQ0MsS0FBUCxDQUFhLEVBQWIsQ0FBWjtJQUNBMkIsR0FBRyxDQUFDMUIsYUFBSixDQUFrQnBCLG1CQUFsQixFQUF1QyxDQUF2QztJQUNBOEMsR0FBRyxDQUFDMUIsYUFBSixDQUFrQixDQUFsQixFQUFxQixDQUFyQjtJQUNBMEIsR0FBRyxDQUFDd0IsWUFBSixDQUFpQkYsS0FBakIsRUFBd0IsQ0FBeEI7SUFDQSxLQUFLRCxJQUFMLEdBQVlqRCxNQUFNLENBQUMrQixNQUFQLENBQWMsQ0FBQyxLQUFLa0IsSUFBTixFQUFZckIsR0FBWixDQUFkLENBQVo7RUFDRDs7RUFLRHlCLGdCQUFnQixDQUFFSCxLQUFGLEVBQVM7SUFDdkIsTUFBTXRCLEdBQUcsR0FBRzVCLE1BQU0sQ0FBQ0MsS0FBUCxDQUFhLEVBQWIsQ0FBWjtJQUNBMkIsR0FBRyxDQUFDMUIsYUFBSixDQUFrQnBCLG1CQUFsQixFQUF1QyxDQUF2QztJQUNBOEMsR0FBRyxDQUFDMUIsYUFBSixDQUFrQixDQUFsQixFQUFxQixDQUFyQjtJQUNBMEIsR0FBRyxDQUFDMEIsZUFBSixDQUFvQkosS0FBcEIsRUFBMkIsQ0FBM0I7SUFDQSxLQUFLRCxJQUFMLEdBQVlqRCxNQUFNLENBQUMrQixNQUFQLENBQWMsQ0FBQyxLQUFLa0IsSUFBTixFQUFZckIsR0FBWixDQUFkLENBQVo7RUFDRDs7RUFLRFMsWUFBWSxDQUFFYSxLQUFGLEVBQVM7SUFDbkIsTUFBTXRCLEdBQUcsR0FBRyxJQUFBMkIsZ0JBQUEsRUFBUUwsS0FBUixDQUFaO0lBQ0EsTUFBTU0sSUFBSSxHQUFHeEQsTUFBTSxDQUFDQyxLQUFQLENBQWEsRUFBYixDQUFiO0lBQ0F1RCxJQUFJLENBQUN0RCxhQUFMLENBQW1CcEIsbUJBQW5CLEVBQXdDLENBQXhDO0lBQ0EwRSxJQUFJLENBQUN0RCxhQUFMLENBQW1CLENBQW5CLEVBQXNCLENBQXRCO0lBQ0FzRCxJQUFJLENBQUN0RCxhQUFMLENBQW1CMEIsR0FBRyxDQUFDQyxNQUF2QixFQUErQixDQUEvQjtJQUNBLEtBQUtvQixJQUFMLEdBQVlqRCxNQUFNLENBQUMrQixNQUFQLENBQWMsQ0FBQyxLQUFLa0IsSUFBTixFQUFZTyxJQUFaLEVBQWtCNUIsR0FBbEIsQ0FBZCxDQUFaO0VBQ0Q7O0VBRURJLFFBQVEsR0FBSTtJQUNWLE1BQU15QixHQUFHLEdBQUd6RCxNQUFNLENBQUNDLEtBQVAsQ0FBYSxFQUFiLENBQVo7SUFDQXdELEdBQUcsQ0FBQ3ZELGFBQUosQ0FBa0JyQixzQkFBbEIsRUFBMEMsQ0FBMUM7SUFDQTRFLEdBQUcsQ0FBQ3ZELGFBQUosQ0FBa0IsS0FBSytDLElBQUwsQ0FBVXBCLE1BQTVCLEVBQW9DLENBQXBDO0lBQ0EsT0FBTzdCLE1BQU0sQ0FBQytCLE1BQVAsQ0FBYyxDQUFDMEIsR0FBRCxFQUFNLEtBQUtSLElBQVgsQ0FBZCxDQUFQO0VBQ0Q7O0FBbEV1Qjs7OztBQXVFMUIsTUFBTVMsVUFBTixDQUFpQjtFQUlmakMsV0FBVyxDQUFFa0MsSUFBSSxHQUFHLEVBQVQsRUFBYTtJQUN0QixNQUFNO01BQ0p0RCxVQURJO01BRUpFLFdBRkk7TUFHSnFELFFBSEk7TUFJSnBELFlBSkk7TUFLSkYsaUJBQWlCLEdBQUcsQ0FMaEI7TUFNSmEsS0FBSyxHQUFHcEMsVUFBVSxDQUFDSztJQU5mLElBT0Z1RSxJQVBKO0lBUUEsS0FBS0UsY0FBTCxHQUFzQkMsU0FBdEI7SUFDQSxLQUFLQyxjQUFMLEdBQXNCRCxTQUF0QjtJQUNBLEtBQUtFLFdBQUwsR0FBbUIzRCxVQUFuQjtJQUNBLEtBQUs0RCxZQUFMLEdBQW9CMUQsV0FBcEI7SUFDQSxLQUFLMkQsYUFBTCxHQUFxQjFELFlBQXJCO0lBQ0EsS0FBSzJELFNBQUwsR0FBaUJQLFFBQWpCO0lBQ0EsS0FBS1Esa0JBQUwsR0FBMEI5RCxpQkFBMUI7SUFDQSxLQUFLK0QsTUFBTCxHQUFjbEQsS0FBZDtJQUNBLEtBQUttRCxXQUFMLEdBQW1CLElBQUk5QyxhQUFKLEVBQW5CO0VBQ0Q7O0VBTWEsSUFBVm5CLFVBQVUsR0FBSTtJQUFBOztJQUNoQiwrQkFBTyxLQUFLd0QsY0FBWix5REFBTyxxQkFBcUJ4RCxVQUE1QjtFQUNEOztFQVFjLElBQVhFLFdBQVcsR0FBSTtJQUFBOztJQUNqQixnQ0FBTyxLQUFLc0QsY0FBWiwwREFBTyxzQkFBcUI1QyxPQUE1QjtFQUNEOztFQU9lLElBQVpULFlBQVksR0FBSTtJQUFBOztJQUNsQixnQ0FBTyxLQUFLcUQsY0FBWiwwREFBTyxzQkFBcUJyRCxZQUE1QjtFQUNEOztFQU1XLElBQVJvRCxRQUFRLEdBQUk7SUFDZCxPQUFPLEtBQUtPLFNBQVo7RUFDRDs7RUFLVyxJQUFSUCxRQUFRLENBQUU5RCxJQUFGLEVBQVE7SUFDbEIsS0FBS3FFLFNBQUwsR0FBaUJyRSxJQUFqQjtFQUNEOztFQU1vQixJQUFqQlEsaUJBQWlCLEdBQUk7SUFBQTs7SUFDdkIsZ0NBQU8sS0FBS3VELGNBQVosMERBQU8sc0JBQXFCdkQsaUJBQTVCO0VBQ0Q7O0VBTURULEtBQUssR0FBSTtJQUNQLE1BQU0wRSxHQUFHLEdBQUcsS0FBS0osU0FBTCxHQUFpQixJQUFBWixnQkFBQSxFQUFRLEtBQUtZLFNBQWIsQ0FBakIsR0FBMkNuRSxNQUFNLENBQUNDLEtBQVAsQ0FBYSxDQUFiLENBQXZEO0lBQ0EsTUFBTXVFLEdBQUcsR0FBRyxLQUFLRixXQUFMLENBQWlCekUsS0FBakIsRUFBWjtJQUNBLE1BQU15QyxhQUFhLEdBQUdwQix1QkFBdUIsQ0FBQ3JCLEtBQXhCLENBQThCO01BQ2xEc0IsS0FBSyxFQUFFLEtBQUtrRCxNQURzQztNQUVsRGpELFNBQVMsRUFBRW9ELEdBQUcsQ0FBQzNDLE1BRm1DO01BS2xEUCxXQUFXLEVBQUVtRCxNQUFNLENBQUNELEdBQUcsQ0FBQzNDLE1BQUosR0FBYTBDLEdBQUcsQ0FBQzFDLE1BQWxCO0lBTCtCLENBQTlCLENBQXRCO0lBUUEsTUFBTTlCLGFBQWEsR0FBR0gsZ0JBQWdCLENBQUNDLEtBQWpCLENBQXVCO01BQzNDTyxhQUFhLEVBQUUzQixpQ0FBaUMsR0FBRytGLEdBQUcsQ0FBQzNDLE1BQXhDLEdBQWlEMEMsR0FBRyxDQUFDMUMsTUFEekI7TUFFM0N4QixVQUFVLEVBQUUsS0FBSzJELFdBRjBCO01BRzNDMUQsaUJBQWlCLEVBQUUsS0FBSzhELGtCQUhtQjtNQUkzQzdELFdBQVcsRUFBRSxLQUFLMEQsWUFKeUI7TUFLM0N6RCxZQUFZLEVBQUUsS0FBSzBEO0lBTHdCLENBQXZCLENBQXRCO0lBT0EsT0FBT2xFLE1BQU0sQ0FBQytCLE1BQVAsQ0FBYyxDQUFDaEMsYUFBRCxFQUFnQnVDLGFBQWhCLEVBQStCa0MsR0FBL0IsRUFBb0NELEdBQXBDLENBQWQsQ0FBUDtFQUNEOztFQVFXLE9BQUw5RCxLQUFLLENBQUVpRSxTQUFGLEVBQWFDLFVBQWIsRUFBeUI7SUFDbkMsSUFBSXBDLE1BQU0sR0FBRyxDQUFiO0lBQ0EsTUFBTXFDLEdBQUcsR0FBRyxJQUFJbEIsVUFBSixFQUFaO0lBQ0FrQixHQUFHLENBQUNmLGNBQUosR0FBcUJqRSxnQkFBZ0IsQ0FBQ2EsS0FBakIsQ0FBdUJpRSxTQUF2QixDQUFyQjs7SUFDQSxJQUFJRSxHQUFHLENBQUNmLGNBQUosQ0FBbUJ6RCxhQUFuQixLQUFxQyxDQUF6QyxFQUE0QztNQUMxQyxPQUFPd0UsR0FBUDtJQUNEOztJQUNEQSxHQUFHLENBQUNiLGNBQUosR0FBcUI3Qyx1QkFBdUIsQ0FBQ1QsS0FBeEIsQ0FBOEJrRSxVQUFVLENBQUMvQixLQUFYLENBQWlCTCxNQUFqQixFQUF5QjlELGlDQUF6QixDQUE5QixDQUFyQjtJQUNBOEQsTUFBTSxJQUFJOUQsaUNBQVY7O0lBRUEsSUFBSW1HLEdBQUcsQ0FBQ2IsY0FBSixDQUFtQnpDLFdBQW5CLEtBQW1DLEVBQXZDLEVBQTJDO01BQ3pDLE9BQU9zRCxHQUFQO0lBQ0Q7O0lBQ0QsSUFBSUEsR0FBRyxDQUFDYixjQUFKLENBQW1CM0MsU0FBbkIsR0FBK0IsQ0FBbkMsRUFBc0M7TUFDcEN3RCxHQUFHLENBQUNOLFdBQUosR0FBa0I5QyxhQUFhLENBQUNmLEtBQWQsQ0FBb0JrRSxVQUFVLENBQUMvQixLQUFYLENBQWlCTCxNQUFqQixFQUF5QkEsTUFBTSxHQUFHcUMsR0FBRyxDQUFDYixjQUFKLENBQW1CM0MsU0FBckQsQ0FBcEIsRUFBcUZ3RCxHQUFHLENBQUNiLGNBQXpGLENBQWxCO01BQ0F4QixNQUFNLElBQUlxQyxHQUFHLENBQUNiLGNBQUosQ0FBbUIzQyxTQUE3QjtJQUNEOztJQUVELE1BQU10QixJQUFJLEdBQUc2RSxVQUFVLENBQUMvQixLQUFYLENBQWlCTCxNQUFqQixFQUF5QkEsTUFBTSxHQUFHb0MsVUFBVSxDQUFDOUMsTUFBN0MsQ0FBYjtJQUNBK0MsR0FBRyxDQUFDaEIsUUFBSixHQUFlOUQsSUFBZjs7SUFDQSxJQUFJQSxJQUFJLENBQUMrQixNQUFMLEdBQWMsQ0FBbEIsRUFBcUI7TUFDbkIsS0FBSyxNQUFNZ0QsR0FBWCxJQUFrQixDQUFDL0Isa0JBQUQsRUFBWWdDLHFCQUFBLENBQVNDLFdBQXJCLENBQWxCLEVBQXFEO1FBQ25ELElBQUk7VUFDRkgsR0FBRyxDQUFDaEIsUUFBSixHQUFlaUIsR0FBRyxDQUFDL0UsSUFBRCxDQUFsQjtVQUNBO1FBQ0QsQ0FIRCxDQUdFLE9BQU9rRixDQUFQLEVBQVU7VUFDVkosR0FBRyxDQUFDaEIsUUFBSixHQUFlLElBQUlaLHVCQUFKLENBQTRCbEQsSUFBNUIsQ0FBZjtRQUNEO01BQ0Y7SUFDRjs7SUFDRCxPQUFPOEUsR0FBUDtFQUNEOztBQXhJYyJ9
@@ -184,4 +184,4 @@ class InstrumentService extends _baseService.BaseServiceSocket {
184
184
  exports.InstrumentService = InstrumentService;require('source-map-support').install();
185
185
 
186
186
 
187
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9pbnN0cnVtZW50L2luZGV4LmpzIl0sIm5hbWVzIjpbIkNIRUNLX0ZSRVFfTVMiLCJXQUlUX1JFUExZX1RJTUVfTVMiLCJFTVBUWV9NRVNTQUdFX1NJWkUiLCJDSEFOTkVMX0NBTkNFTEVEIiwiQ0hBTk5FTF9PRkZTRVQiLCJJTlNUUlVNRU5UX1NFUlZJQ0VfTkFNRV9WRVJTSU9OXzE0IiwiSU5TVFJVTUVOVF9TRVJWSUNFX05BTUUiLCJJTlNUUlVNRU5UX0NIQU5ORUwiLCJPYmplY3QiLCJmcmVlemUiLCJERVZJQ0VfSU5GTyIsIlBST0NFU1NfQ09OVFJPTCIsIlNZU01PTlRBUCIsIk5FVFdPUktJTkciLCJNT0JJTEVfTk9USUZJQ0FUSU9OUyIsIkdSQVBISUNTX09QRU5HTCIsIkFQUExJQ0FUSU9OX0xJU1RJTkciLCJDT05ESVRJT05fSU5EVUNFUiIsImRlZmF1bHREaWN0IiwiY3JlYXRlVmFsdWUiLCJQcm94eSIsImNyZWF0ZSIsImdldCIsInN0b3JhZ2UiLCJwcm9wZXJ0eSIsIkluc3RydW1lbnRTZXJ2aWNlIiwiQmFzZVNlcnZpY2VTb2NrZXQiLCJjb25zdHJ1Y3RvciIsInNvY2tldENsaWVudCIsImV2ZW50IiwiX3VuZGVmaW5lZENhbGxiYWNrIiwiX2NhbGxiYWNrcyIsImV2ZW50cyIsIkV2ZW50RW1pdHRlciIsIl9jaGFubmVsQ2FsbGJhY2tzIiwiX3JlcGx5UXVldWVzIiwiX2NoYW5uZWxzIiwiX25leHRJZGVudGlmaWVyIiwiX2VuY29kZXIiLCJEVFhFbmNvZGVyIiwicGlwZSIsIl9zb2NrZXRDbGllbnQiLCJfYXNzaWduQ2xpZW50RmFpbHVyZUhhbmRsZXJzIiwiX2RlY29kZXIiLCJEVFhEZWNvZGVyIiwib24iLCJfaGFuZGxlRGF0YSIsImJpbmQiLCJyZWdpc3RlclNlbGVjdG9yQ2FsbGJhY2siLCJzZWxlY3RvciIsImFkZExpc3RlbmVyIiwicmVnaXN0ZXJVbmRlZmluZWRDYWxsYmFjayIsInJlZ2lzdGVyQ2hhbm5lbENhbGxiYWNrIiwiY2hhbm5lbCIsImNoYW5uZWxJZCIsIm1ha2VDaGFubmVsIiwiY2hhbm5lbENvZGUiLCJrZXlzIiwibGVuZ3RoIiwiX2NhbGxDaGFubmVsIiwiY2FsbENoYW5uZWwiLCJhdXhpbGlhcmllcyIsInN5bmMiLCJpZGVudGlmaWVyIiwid3JpdGUiLCJxdWV1ZSIsImRhdGEiLCJzaGlmdCIsIl8iLCJpc1VuZGVmaW5lZCIsIndhaXRNcyIsImludGVydmFsTXMiLCJlcnJvciIsImVyciIsImNsb3NlIiwiRXJyb3IiLCJpbmNsdWRlcyIsImNvbnZlcnNhdGlvbkluZGV4IiwicHVzaCIsImxpc3RlbmVyQ291bnQiLCJlbWl0IiwiaXNTdHJpbmciLCJleHBlY3RzUmVwbHkiLCJfcmVwbHlBY2siLCJyZXBseSIsIkRUWE1lc3NhZ2UiLCJCdWZmZXIiLCJhbGxvYyIsImZsYWdzIiwiRkxBR19UWVBFUyIsImJ1aWxkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLGFBQWEsR0FBRyxHQUF0QjtBQUNBLE1BQU1DLGtCQUFrQixHQUFHLEtBQTNCO0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUcsRUFBM0I7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyxrQkFBekI7QUFDQSxNQUFNQyxjQUFjLEdBQUcsS0FBSyxFQUE1QjtBQUVBLE1BQU1DLGtDQUFrQyxHQUFHLHlEQUEzQzs7QUFDQSxNQUFNQyx1QkFBdUIsR0FBRyxvQ0FBaEM7O0FBRU8sTUFBTUMsa0JBQWtCLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjO0FBQzlDQyxFQUFBQSxXQUFXLEVBQUUsa0RBRGlDO0FBRTlDQyxFQUFBQSxlQUFlLEVBQUUsc0RBRjZCO0FBRzlDQyxFQUFBQSxTQUFTLEVBQUUsaURBSG1DO0FBSTlDQyxFQUFBQSxVQUFVLEVBQUUsa0RBSmtDO0FBSzlDQyxFQUFBQSxvQkFBb0IsRUFBRSwyREFMd0I7QUFNOUNDLEVBQUFBLGVBQWUsRUFBRSx1REFONkI7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QUFFM0JQLE1BQUFBLFdBQVcsRUFBRVUsSUFBSSxDQUFDVixXQUZTO0FBRzNCUCxNQUFBQSxRQUFRLEVBQUVxQyxNQUFNLENBQUNDLEtBQVAsQ0FBYXJGLGtCQUFiLENBSGlCO0FBSTNCMkUsTUFBQUEsaUJBQWlCLEVBQUVYLElBQUksQ0FBQ1csaUJBQUwsR0FBeUIsQ0FKakI7QUFLM0JXLE1BQUFBLEtBQUssRUFBRUMsb0JBQVdMO0FBTFMsS0FBZixDQUFkOztBQU9BLFNBQUszQyxhQUFMLENBQW1CdUIsS0FBbkIsQ0FBeUJvQixLQUFLLENBQUNNLEtBQU4sRUFBekI7QUFDRDs7QUF2SStDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9ZdWVDaGVuLUMvcHktaW9zLWRldmljZVxuXG5pbXBvcnQge0Jhc2VTZXJ2aWNlU29ja2V0fSBmcm9tICcuLi9iYXNlLXNlcnZpY2UnO1xuaW1wb3J0IHtEVFhNZXNzYWdlLCBGTEFHX1RZUEVTfSBmcm9tICcuL2hlYWRlcnMnO1xuaW1wb3J0IHtEVFhFbmNvZGVyfSBmcm9tICcuL3RyYW5zZm9ybWVyL2R0eC1lbmNvZGUnO1xuaW1wb3J0IHtEVFhEZWNvZGVyfSBmcm9tICcuL3RyYW5zZm9ybWVyL2R0eC1kZWNvZGUnO1xuaW1wb3J0IGV2ZW50cyBmcm9tICdldmVudHMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7d2FpdEZvckNvbmRpdGlvbn0gZnJvbSAnYXN5bmNib3gnO1xuXG5jb25zdCBDSEVDS19GUkVRX01TID0gNTAwO1xuY29uc3QgV0FJVF9SRVBMWV9USU1FX01TID0gMTAwMDA7XG5jb25zdCBFTVBUWV9NRVNTQUdFX1NJWkUgPSAxNjtcbmNvbnN0IENIQU5ORUxfQ0FOQ0VMRUQgPSAnX2NoYW5uZWxDYW5jZWxlZCc7XG5jb25zdCBDSEFOTkVMX09GRlNFVCA9IDIgKiogMzI7XG5cbmNvbnN0IElOU1RSVU1FTlRfU0VSVklDRV9OQU1FX1ZFUlNJT05fMTQgPSAnY29tLmFwcGxlLmluc3RydW1lbnRzLnJlbW90ZXNlcnZlci5EVlRTZWN1cmVTb2NrZXRQcm94eSc7XG5jb25zdCBJTlNUUlVNRU5UX1NFUlZJQ0VfTkFNRSA9ICdjb20uYXBwbGUuaW5zdHJ1bWVudHMucmVtb3Rlc2VydmVyJztcblxuZXhwb3J0IGNvbnN0IElOU1RSVU1FTlRfQ0hBTk5FTCA9IE9iamVjdC5mcmVlemUoe1xuICBERVZJQ0VfSU5GTzogJ2NvbS5hcHBsZS5pbnN0cnVtZW50cy5zZXJ2ZXIuc2VydmljZXMuZGV2aWNlaW5mbycsXG4gIFBST0NFU1NfQ09OVFJPTDogJ2NvbS5hcHBsZS5pbnN0cnVtZW50cy5zZXJ2ZXIuc2VydmljZXMucHJvY2Vzc2NvbnRyb2wnLFxuICBTWVNNT05UQVA6ICdjb20uYXBwbGUuaW5zdHJ1bWVudHMuc2VydmVyLnNlcnZpY2VzLnN5c21vbnRhcCcsXG4gIE5FVFdPUktJTkc6ICdjb20uYXBwbGUuaW5zdHJ1bWVudHMuc2VydmVyLnNlcnZpY2VzLm5ldHdvcmtpbmcnLFxuICBNT0JJTEVfTk9USUZJQ0FUSU9OUzogJ2NvbS5hcHBsZS5pbnN0cnVtZW50cy5zZXJ2ZXIuc2VydmljZXMubW9iaWxlbm90aWZpY2F0aW9ucycsXG4gIEdSQVBISUNTX09QRU5HTDogJ2NvbS5hcHBsZS5pbnN0cnVtZW50cy5zZXJ2ZXIuc2VydmljZXMuZ3JhcGhpY3Mub3BlbmdsJyxcbiAgQVBQTElDQVRJT05fTElTVElORzogJ2NvbS5hcHBsZS5pbnN0cnVtZW50cy5zZXJ2ZXIuc2VydmljZXMuZGV2aWNlLmFwcGxpY3Rpb25MaXN0aW5nJyxcbiAgQ09ORElUSU9OX0lORFVDRVI6ICdjb20uYXBwbGUuaW5zdHJ1bWVudHMuc2VydmVyLnNlcnZpY2VzLkNvbmRpdGlvbkluZHVjZXInXG59KTtcblxuZnVuY3Rpb24gZGVmYXVsdERpY3QgKGNyZWF0ZVZhbHVlKSB7XG4gIHJldHVybiBuZXcgUHJveHkoT2JqZWN0LmNyZWF0ZShudWxsKSwge1xuICAgIGdldCAoc3RvcmFnZSwgcHJvcGVydHkpIHtcbiAgICAgIGlmICghKHByb3BlcnR5IGluIHN0b3JhZ2UpKSB7XG4gICAgICAgIHN0b3JhZ2VbcHJvcGVydHldID0gY3JlYXRlVmFsdWUocHJvcGVydHkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0b3JhZ2VbcHJvcGVydHldO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBjYWxsZWQgZHVyaW5nIHRoZSBkYXRhIHRyYW5zbWlzc2lvbiBpbiBpbnN0cnVtZW50IHNlcnZlXG4gKiBAbmFtZSBEVFhDYWxsYmFja1xuICogQGZ1bmN0aW9uXG4gKiBAcGFyYW0ge0RUWE1lc3NhZ2V9IG9iamVjdFxuKi9cblxuLyoqXG4gKiBAcGFyYW0ge1NvY2tldH0gc29ja2V0Q2xpZW50ICBEVFhNZXNzYWdlLnNlbGVjdG9yXG4gKiBAcGFyYW0gez9EVFhDYWxsYmFja30gZXZlbnQgaWYgZW1wdHkgd2lsbCBpZ25vcmUgYW55IG1lc3NhZ2VzXG4gKi9cbmNsYXNzIEluc3RydW1lbnRTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2VTb2NrZXQge1xuICBjb25zdHJ1Y3RvciAoc29ja2V0Q2xpZW50LCBldmVudCkge1xuICAgIHN1cGVyKHNvY2tldENsaWVudCk7XG4gICAgdGhpcy5fdW5kZWZpbmVkQ2FsbGJhY2sgPSBldmVudDtcbiAgICB0aGlzLl9jYWxsYmFja3MgPSBuZXcgZXZlbnRzLkV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMuX2NoYW5uZWxDYWxsYmFja3MgPSBuZXcgZXZlbnRzLkV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMuX3JlcGx5UXVldWVzID0gZGVmYXVsdERpY3QoKCkgPT4gW10pO1xuICAgIHRoaXMuX2NoYW5uZWxzID0ge307XG4gICAgdGhpcy5fbmV4dElkZW50aWZpZXIgPSAxO1xuICAgIHRoaXMuX2VuY29kZXIgPSBuZXcgRFRYRW5jb2RlcigpO1xuICAgIHRoaXMuX2VuY29kZXIucGlwZSh0aGlzLl9zb2NrZXRDbGllbnQpO1xuICAgIHRoaXMuX2Fzc2lnbkNsaWVudEZhaWx1cmVIYW5kbGVycyh0aGlzLl9lbmNvZGVyKTtcbiAgICB0aGlzLl9kZWNvZGVyID0gbmV3IERUWERlY29kZXIoKTtcbiAgICB0aGlzLl9zb2NrZXRDbGllbnQucGlwZSh0aGlzLl9kZWNvZGVyKTtcbiAgICB0aGlzLl9kZWNvZGVyLm9uKCdkYXRhJywgdGhpcy5faGFuZGxlRGF0YS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgc2VsZWN0b3IgaXMgcmVnaXN0ZXJlZCwgVGhlIG1lc3NhZ2Ugb2YgdGhlIHNlbGVjdG9yIGV2ZW50IHdpbGwgYmUgcmV0dXJuZWQuIHJlZmVyIHRvIHRoaXMuX2hhbmRsZURhdGFcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yICBMaXN0ZW4gZm9yIHJldHVybiBEVFhNZXNzYWdlLnNlbGVjdG9yIGRhdGFcbiAgICogQHBhcmFtIHtEVFhDYWxsYmFja30gZXZlbnRcbiAgICovXG4gIHJlZ2lzdGVyU2VsZWN0b3JDYWxsYmFjayAoc2VsZWN0b3IsIGV2ZW50KSB7XG4gICAgdGhpcy5fY2FsbGJhY2tzLmFkZExpc3RlbmVyKHNlbGVjdG9yLCBldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGV2ZW50IGlzIHJlZ2lzdGVyZWQsIGFsbCB1bnJlZ2lzdGVyZWQgbWVzc2FnZXMgd2lsbCBiZSByZXR1cm5lZCB0byBldmVudC4gcmVmZXIgdG8gdGhpcy5faGFuZGxlRGF0YVxuICAgKiBAcGFyYW0ge0RUWENhbGxiYWNrfSBldmVudFxuICAgKi9cbiAgcmVnaXN0ZXJVbmRlZmluZWRDYWxsYmFjayAoZXZlbnQpIHtcbiAgICB0aGlzLl91bmRlZmluZWRDYWxsYmFjayA9IGV2ZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBldmVudCBpcyByZWdpc3RlcmVkLCB0aGlzIGNoYW5uZWwge0NIQU5ORUx9IG1lc3NhZ2VzIHdpbGwgYmUgcmV0dXJuZWQgdG8gZXZlbnQuIHJlZmVyIHRvIHRoaXMuX2hhbmRsZURhdGFcbiAgICogSXQncyBhY3R1YWxseSBsaXN0ZW5pbmcgZm9yIGludCBjaGFubmVsQ29kZS4gSW4gdGhpcy5fY2hhbm5lbCBvYmplY3QgdG8gcmVjb3JkIGNoYW5uZWwga2V5IGFuZCBpbnQgdmFsdWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYW5uZWwgaW5zdHJ1bWVudHMgc2VydmljZSBjaGFubmVsIGUuZzogSU5TVFJVTUVOVF9DSEFOTkVMLkRFVklDRV9JTkZPLlxuICAgKiBAcGFyYW0ge0RUWENhbGxiYWNrfSBldmVudFxuICAgKi9cbiAgYXN5bmMgcmVnaXN0ZXJDaGFubmVsQ2FsbGJhY2sgKGNoYW5uZWwsIGV2ZW50KSB7XG4gICAgY29uc3QgY2hhbm5lbElkID0gYXdhaXQgdGhpcy5tYWtlQ2hhbm5lbChjaGFubmVsKTtcbiAgICB0aGlzLl9jaGFubmVsQ2FsbGJhY2tzLmFkZExpc3RlbmVyKGNoYW5uZWxJZCwgZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHNlcnZpY2UgY2hhbm5lbCwgZGF0YSB0cmFuc21pc3Npb24gb2YgdGhlIHNlcnZpY2Ugd2lsbCB1c2UgdGhpcyBjaGFubmVsQ29kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhbm5lbCAgaW5zdHJ1bWVudHMgc2VydmljZSBjaGFubmVsIGUuZzogSU5TVFJVTUVOVF9DSEFOTkVMLkRFVklDRV9JTkZPXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPG51bWJlcnwqPn0gaW5zdHJ1bWVudHMgc2VydmljZSBjaGFubmVsIGNvZGUgZm9yIGRhdGEgdHJhbnNtaXNzaW9uXG4gICAqL1xuICBhc3luYyBtYWtlQ2hhbm5lbCAoY2hhbm5lbCkge1xuICAgIGlmIChjaGFubmVsIGluIHRoaXMuX2NoYW5uZWxzKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY2hhbm5lbHNbY2hhbm5lbF07XG4gICAgfVxuICAgIGNvbnN0IGNoYW5uZWxDb2RlID0gT2JqZWN0LmtleXModGhpcy5fY2hhbm5lbHMpLmxlbmd0aCArIDE7XG4gICAgYXdhaXQgdGhpcy5fY2FsbENoYW5uZWwodHJ1ZSwgMCwgJ19yZXF1ZXN0Q2hhbm5lbFdpdGhDb2RlOmlkZW50aWZpZXI6JywgY2hhbm5lbENvZGUsIGNoYW5uZWwpO1xuICAgIHRoaXMuX2NoYW5uZWxzW2NoYW5uZWxdID0gY2hhbm5lbENvZGU7XG4gICAgcmV0dXJuIGNoYW5uZWxDb2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIEluIGdlbmVyYWwsIHdlIGNhbGwgdGhpcyBtZXRob2QgdG8gc3RhcnQgdGhlIGluc3RydW1lbnQgZHR4IHNlcnZpY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYW5uZWwgaW5zdHJ1bWVudCBkdHggc2VydmljZSBlLmc6IElOU1RSVU1FTlRfQ0hBTk5FTC5ERVZJQ0VfSU5GT1xuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0b3IgaW5zdHJ1bWVudCBzZXJ2aWNlIG1ldGhvZCBuYW1lIChyZWZsZWN0aW9uIGNhbGxzKVxuICAgKiBAcGFyYW0gey4uLmFueX0gYXV4aWxpYXJpZXMgcGFyYW1ldGVycyByZXF1aXJlZCBieSBzZWxlY3RvclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxEVFhNZXNzYWdlPn1cbiAgICogZXhhbXBsZe+8mlxuICAgKiBpbnN0cnVtZW50U2VydmljZS5jYWxsQ2hhbm5lbChJTlNUUlVNRU5UX0NIQU5ORUwuUFJPQ0VTU19DT05UUk9MLFxuICAgICAgICAnbGF1bmNoU3VzcGVuZGVkUHJvY2Vzc1dpdGhEZXZpY2VQYXRoOmJ1bmRsZUlkZW50aWZpZXI6ZW52aXJvbm1lbnQ6YXJndW1lbnRzOm9wdGlvbnM6JywgJycsXG4gICAgICAgIGJ1bmRsZUlELCB7fSwgW10sIHsnU3RhcnRTdXNwZW5kZWRLZXknOiAwLCAnS2lsbEV4aXN0aW5nJzogMX1cbiAgICovXG4gIGFzeW5jIGNhbGxDaGFubmVsIChjaGFubmVsLCBzZWxlY3RvciwgLi4uYXV4aWxpYXJpZXMpIHtcbiAgICBjb25zdCBjaGFubmVsQ29kZSA9IGF3YWl0IHRoaXMubWFrZUNoYW5uZWwoY2hhbm5lbCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2NhbGxDaGFubmVsKHRydWUsIGNoYW5uZWxDb2RlLCBzZWxlY3RvciwgLi4uYXV4aWxpYXJpZXMpO1xuICB9XG5cbiAgYXN5bmMgX2NhbGxDaGFubmVsIChzeW5jLCBjaGFubmVsQ29kZSwgc2VsZWN0b3IsIC4uLmF1eGlsaWFyaWVzKSB7XG4gICAgY29uc3QgaWRlbnRpZmllciA9IHRoaXMuX25leHRJZGVudGlmaWVyO1xuICAgIHRoaXMuX2VuY29kZXIud3JpdGUoe3N5bmMsIGNoYW5uZWxDb2RlLCBzZWxlY3RvciwgYXV4aWxpYXJpZXMsIGlkZW50aWZpZXJ9KTtcbiAgICArK3RoaXMuX25leHRJZGVudGlmaWVyO1xuICAgIGlmIChzeW5jKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgd2FpdEZvckNvbmRpdGlvbigoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcXVldWUgPSB0aGlzLl9yZXBseVF1ZXVlc1tpZGVudGlmaWVyXTtcbiAgICAgICAgICBjb25zdCBkYXRhID0gcXVldWUuc2hpZnQoKTtcbiAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoZGF0YSkpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwge3dhaXRNczogV0FJVF9SRVBMWV9USU1FX01TLCBpbnRlcnZhbE1zOiBDSEVDS19GUkVRX01TLCBlcnJvcjogJ3JlcGx5IGNoYW5uZWwgZGF0YSB0aW1lb3V0J30pO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsaW5nIHJlZ2lzdGVyZWQgYXN5bmNocm9ub3VzIG1lc3NhZ2UgY2FsbGJhY2tzXG4gICAqIEBwYXJhbSB7RFRYTWVzc2FnZX0gZGF0YVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2hhbmRsZURhdGEgKGRhdGEpIHtcbiAgICBpZiAoXy5pbmNsdWRlcyhkYXRhLnNlbGVjdG9yLCBDSEFOTkVMX0NBTkNFTEVEKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgICBpZiAoZGF0YS5jb252ZXJzYXRpb25JbmRleCA9PT0gMSkge1xuICAgICAgdGhpcy5fcmVwbHlRdWV1ZXNbZGF0YS5pZGVudGlmaWVyXS5wdXNoKGRhdGEpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fY2hhbm5lbENhbGxiYWNrcy5saXN0ZW5lckNvdW50KENIQU5ORUxfT0ZGU0VUIC0gZGF0YS5jaGFubmVsQ29kZSkgPiAwKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ2FsbGJhY2tzLmVtaXQoQ0hBTk5FTF9PRkZTRVQgLSBkYXRhLmNoYW5uZWxDb2RlLCBkYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VsZWN0b3IgPSBkYXRhLnNlbGVjdG9yO1xuICAgICAgaWYgKF8uaXNTdHJpbmcoc2VsZWN0b3IpICYmIHRoaXMuX2NhbGxiYWNrcy5saXN0ZW5lckNvdW50KHNlbGVjdG9yKSA+IDApIHtcbiAgICAgICAgdGhpcy5fY2FsbGJhY2tzLmVtaXQoc2VsZWN0b3IsIGRhdGEpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLl91bmRlZmluZWRDYWxsYmFjaykge1xuICAgICAgICB0aGlzLl91bmRlZmluZWRDYWxsYmFjayhkYXRhKTtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLmV4cGVjdHNSZXBseSkge1xuICAgICAgICB0aGlzLl9yZXBseUFjayhkYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogcmV0dXJuIGEgZW1wdHkgYWNrIG1lc3NhZ2VcbiAgICogQHBhcmFtIHtEVFhNZXNzYWdlfSBkYXRhXG4gICAqL1xuICBfcmVwbHlBY2sgKGRhdGEpIHtcbiAgICBjb25zdCByZXBseSA9IG5ldyBEVFhNZXNzYWdlKHtcbiAgICAgIGlkZW50aWZpZXI6IGRhdGEuaWRlbnRpZmllcixcbiAgICAgIGNoYW5uZWxDb2RlOiBkYXRhLmNoYW5uZWxDb2RlLFxuICAgICAgc2VsZWN0b3I6IEJ1ZmZlci5hbGxvYyhFTVBUWV9NRVNTQUdFX1NJWkUpLFxuICAgICAgY29udmVyc2F0aW9uSW5kZXg6IGRhdGEuY29udmVyc2F0aW9uSW5kZXggKyAxLFxuICAgICAgZmxhZ3M6IEZMQUdfVFlQRVMucmVwbHlcbiAgICB9KTtcbiAgICB0aGlzLl9zb2NrZXRDbGllbnQud3JpdGUocmVwbHkuYnVpbGQoKSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgSW5zdHJ1bWVudFNlcnZpY2UsIElOU1RSVU1FTlRfU0VSVklDRV9OQU1FX1ZFUlNJT05fMTQsIElOU1RSVU1FTlRfU0VSVklDRV9OQU1FIH07XG4iXSwiZmlsZSI6ImxpYi9pbnN0cnVtZW50L2luZGV4LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
187
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2luc3RydW1lbnQvaW5kZXguanMiLCJuYW1lcyI6WyJDSEVDS19GUkVRX01TIiwiV0FJVF9SRVBMWV9USU1FX01TIiwiRU1QVFlfTUVTU0FHRV9TSVpFIiwiQ0hBTk5FTF9DQU5DRUxFRCIsIkNIQU5ORUxfT0ZGU0VUIiwiSU5TVFJVTUVOVF9TRVJWSUNFX05BTUVfVkVSU0lPTl8xNCIsIklOU1RSVU1FTlRfU0VSVklDRV9OQU1FIiwiSU5TVFJVTUVOVF9DSEFOTkVMIiwiT2JqZWN0IiwiZnJlZXplIiwiREVWSUNFX0lORk8iLCJQUk9DRVNTX0NPTlRST0wiLCJTWVNNT05UQVAiLCJORVRXT1JLSU5HIiwiTU9CSUxFX05PVElGSUNBVElPTlMiLCJHUkFQSElDU19PUEVOR0wiLCJBUFBMSUNBVElPTl9MSVNUSU5HIiwiQ09ORElUSU9OX0lORFVDRVIiLCJkZWZhdWx0RGljdCIsImNyZWF0ZVZhbHVlIiwiUHJveHkiLCJjcmVhdGUiLCJnZXQiLCJzdG9yYWdlIiwicHJvcGVydHkiLCJJbnN0cnVtZW50U2VydmljZSIsIkJhc2VTZXJ2aWNlU29ja2V0IiwiY29uc3RydWN0b3IiLCJzb2NrZXRDbGllbnQiLCJldmVudCIsIl91bmRlZmluZWRDYWxsYmFjayIsIl9jYWxsYmFja3MiLCJldmVudHMiLCJFdmVudEVtaXR0ZXIiLCJfY2hhbm5lbENhbGxiYWNrcyIsIl9yZXBseVF1ZXVlcyIsIl9jaGFubmVscyIsIl9uZXh0SWRlbnRpZmllciIsIl9lbmNvZGVyIiwiRFRYRW5jb2RlciIsInBpcGUiLCJfc29ja2V0Q2xpZW50IiwiX2Fzc2lnbkNsaWVudEZhaWx1cmVIYW5kbGVycyIsIl9kZWNvZGVyIiwiRFRYRGVjb2RlciIsIm9uIiwiX2hhbmRsZURhdGEiLCJiaW5kIiwicmVnaXN0ZXJTZWxlY3RvckNhbGxiYWNrIiwic2VsZWN0b3IiLCJhZGRMaXN0ZW5lciIsInJlZ2lzdGVyVW5kZWZpbmVkQ2FsbGJhY2siLCJyZWdpc3RlckNoYW5uZWxDYWxsYmFjayIsImNoYW5uZWwiLCJjaGFubmVsSWQiLCJtYWtlQ2hhbm5lbCIsImNoYW5uZWxDb2RlIiwia2V5cyIsImxlbmd0aCIsIl9jYWxsQ2hhbm5lbCIsImNhbGxDaGFubmVsIiwiYXV4aWxpYXJpZXMiLCJzeW5jIiwiaWRlbnRpZmllciIsIndyaXRlIiwid2FpdEZvckNvbmRpdGlvbiIsInF1ZXVlIiwiZGF0YSIsInNoaWZ0IiwiXyIsImlzVW5kZWZpbmVkIiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsImVycm9yIiwiZXJyIiwiY2xvc2UiLCJFcnJvciIsImluY2x1ZGVzIiwiY29udmVyc2F0aW9uSW5kZXgiLCJwdXNoIiwibGlzdGVuZXJDb3VudCIsImVtaXQiLCJpc1N0cmluZyIsImV4cGVjdHNSZXBseSIsIl9yZXBseUFjayIsInJlcGx5IiwiRFRYTWVzc2FnZSIsIkJ1ZmZlciIsImFsbG9jIiwiZmxhZ3MiLCJGTEFHX1RZUEVTIiwiYnVpbGQiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvaW5zdHJ1bWVudC9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL1l1ZUNoZW4tQy9weS1pb3MtZGV2aWNlXG5cbmltcG9ydCB7QmFzZVNlcnZpY2VTb2NrZXR9IGZyb20gJy4uL2Jhc2Utc2VydmljZSc7XG5pbXBvcnQge0RUWE1lc3NhZ2UsIEZMQUdfVFlQRVN9IGZyb20gJy4vaGVhZGVycyc7XG5pbXBvcnQge0RUWEVuY29kZXJ9IGZyb20gJy4vdHJhbnNmb3JtZXIvZHR4LWVuY29kZSc7XG5pbXBvcnQge0RUWERlY29kZXJ9IGZyb20gJy4vdHJhbnNmb3JtZXIvZHR4LWRlY29kZSc7XG5pbXBvcnQgZXZlbnRzIGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHt3YWl0Rm9yQ29uZGl0aW9ufSBmcm9tICdhc3luY2JveCc7XG5cbmNvbnN0IENIRUNLX0ZSRVFfTVMgPSA1MDA7XG5jb25zdCBXQUlUX1JFUExZX1RJTUVfTVMgPSAxMDAwMDtcbmNvbnN0IEVNUFRZX01FU1NBR0VfU0laRSA9IDE2O1xuY29uc3QgQ0hBTk5FTF9DQU5DRUxFRCA9ICdfY2hhbm5lbENhbmNlbGVkJztcbmNvbnN0IENIQU5ORUxfT0ZGU0VUID0gMiAqKiAzMjtcblxuY29uc3QgSU5TVFJVTUVOVF9TRVJWSUNFX05BTUVfVkVSU0lPTl8xNCA9ICdjb20uYXBwbGUuaW5zdHJ1bWVudHMucmVtb3Rlc2VydmVyLkRWVFNlY3VyZVNvY2tldFByb3h5JztcbmNvbnN0IElOU1RSVU1FTlRfU0VSVklDRV9OQU1FID0gJ2NvbS5hcHBsZS5pbnN0cnVtZW50cy5yZW1vdGVzZXJ2ZXInO1xuXG5leHBvcnQgY29uc3QgSU5TVFJVTUVOVF9DSEFOTkVMID0gT2JqZWN0LmZyZWV6ZSh7XG4gIERFVklDRV9JTkZPOiAnY29tLmFwcGxlLmluc3RydW1lbnRzLnNlcnZlci5zZXJ2aWNlcy5kZXZpY2VpbmZvJyxcbiAgUFJPQ0VTU19DT05UUk9MOiAnY29tLmFwcGxlLmluc3RydW1lbnRzLnNlcnZlci5zZXJ2aWNlcy5wcm9jZXNzY29udHJvbCcsXG4gIFNZU01PTlRBUDogJ2NvbS5hcHBsZS5pbnN0cnVtZW50cy5zZXJ2ZXIuc2VydmljZXMuc3lzbW9udGFwJyxcbiAgTkVUV09SS0lORzogJ2NvbS5hcHBsZS5pbnN0cnVtZW50cy5zZXJ2ZXIuc2VydmljZXMubmV0d29ya2luZycsXG4gIE1PQklMRV9OT1RJRklDQVRJT05TOiAnY29tLmFwcGxlLmluc3RydW1lbnRzLnNlcnZlci5zZXJ2aWNlcy5tb2JpbGVub3RpZmljYXRpb25zJyxcbiAgR1JBUEhJQ1NfT1BFTkdMOiAnY29tLmFwcGxlLmluc3RydW1lbnRzLnNlcnZlci5zZXJ2aWNlcy5ncmFwaGljcy5vcGVuZ2wnLFxuICBBUFBMSUNBVElPTl9MSVNUSU5HOiAnY29tLmFwcGxlLmluc3RydW1lbnRzLnNlcnZlci5zZXJ2aWNlcy5kZXZpY2UuYXBwbGljdGlvbkxpc3RpbmcnLFxuICBDT05ESVRJT05fSU5EVUNFUjogJ2NvbS5hcHBsZS5pbnN0cnVtZW50cy5zZXJ2ZXIuc2VydmljZXMuQ29uZGl0aW9uSW5kdWNlcidcbn0pO1xuXG5mdW5jdGlvbiBkZWZhdWx0RGljdCAoY3JlYXRlVmFsdWUpIHtcbiAgcmV0dXJuIG5ldyBQcm94eShPYmplY3QuY3JlYXRlKG51bGwpLCB7XG4gICAgZ2V0IChzdG9yYWdlLCBwcm9wZXJ0eSkge1xuICAgICAgaWYgKCEocHJvcGVydHkgaW4gc3RvcmFnZSkpIHtcbiAgICAgICAgc3RvcmFnZVtwcm9wZXJ0eV0gPSBjcmVhdGVWYWx1ZShwcm9wZXJ0eSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RvcmFnZVtwcm9wZXJ0eV07XG4gICAgfVxuICB9KTtcbn1cblxuLyoqIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGNhbGxlZCBkdXJpbmcgdGhlIGRhdGEgdHJhbnNtaXNzaW9uIGluIGluc3RydW1lbnQgc2VydmVcbiAqIEBuYW1lIERUWENhbGxiYWNrXG4gKiBAZnVuY3Rpb25cbiAqIEBwYXJhbSB7RFRYTWVzc2FnZX0gb2JqZWN0XG4qL1xuXG4vKipcbiAqIEBwYXJhbSB7U29ja2V0fSBzb2NrZXRDbGllbnQgIERUWE1lc3NhZ2Uuc2VsZWN0b3JcbiAqIEBwYXJhbSB7P0RUWENhbGxiYWNrfSBldmVudCBpZiBlbXB0eSB3aWxsIGlnbm9yZSBhbnkgbWVzc2FnZXNcbiAqL1xuY2xhc3MgSW5zdHJ1bWVudFNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZVNvY2tldCB7XG4gIGNvbnN0cnVjdG9yIChzb2NrZXRDbGllbnQsIGV2ZW50KSB7XG4gICAgc3VwZXIoc29ja2V0Q2xpZW50KTtcbiAgICB0aGlzLl91bmRlZmluZWRDYWxsYmFjayA9IGV2ZW50O1xuICAgIHRoaXMuX2NhbGxiYWNrcyA9IG5ldyBldmVudHMuRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5fY2hhbm5lbENhbGxiYWNrcyA9IG5ldyBldmVudHMuRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5fcmVwbHlRdWV1ZXMgPSBkZWZhdWx0RGljdCgoKSA9PiBbXSk7XG4gICAgdGhpcy5fY2hhbm5lbHMgPSB7fTtcbiAgICB0aGlzLl9uZXh0SWRlbnRpZmllciA9IDE7XG4gICAgdGhpcy5fZW5jb2RlciA9IG5ldyBEVFhFbmNvZGVyKCk7XG4gICAgdGhpcy5fZW5jb2Rlci5waXBlKHRoaXMuX3NvY2tldENsaWVudCk7XG4gICAgdGhpcy5fYXNzaWduQ2xpZW50RmFpbHVyZUhhbmRsZXJzKHRoaXMuX2VuY29kZXIpO1xuICAgIHRoaXMuX2RlY29kZXIgPSBuZXcgRFRYRGVjb2RlcigpO1xuICAgIHRoaXMuX3NvY2tldENsaWVudC5waXBlKHRoaXMuX2RlY29kZXIpO1xuICAgIHRoaXMuX2RlY29kZXIub24oJ2RhdGEnLCB0aGlzLl9oYW5kbGVEYXRhLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBzZWxlY3RvciBpcyByZWdpc3RlcmVkLCBUaGUgbWVzc2FnZSBvZiB0aGUgc2VsZWN0b3IgZXZlbnQgd2lsbCBiZSByZXR1cm5lZC4gcmVmZXIgdG8gdGhpcy5faGFuZGxlRGF0YVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0b3IgIExpc3RlbiBmb3IgcmV0dXJuIERUWE1lc3NhZ2Uuc2VsZWN0b3IgZGF0YVxuICAgKiBAcGFyYW0ge0RUWENhbGxiYWNrfSBldmVudFxuICAgKi9cbiAgcmVnaXN0ZXJTZWxlY3RvckNhbGxiYWNrIChzZWxlY3RvciwgZXZlbnQpIHtcbiAgICB0aGlzLl9jYWxsYmFja3MuYWRkTGlzdGVuZXIoc2VsZWN0b3IsIGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgZXZlbnQgaXMgcmVnaXN0ZXJlZCwgYWxsIHVucmVnaXN0ZXJlZCBtZXNzYWdlcyB3aWxsIGJlIHJldHVybmVkIHRvIGV2ZW50LiByZWZlciB0byB0aGlzLl9oYW5kbGVEYXRhXG4gICAqIEBwYXJhbSB7RFRYQ2FsbGJhY2t9IGV2ZW50XG4gICAqL1xuICByZWdpc3RlclVuZGVmaW5lZENhbGxiYWNrIChldmVudCkge1xuICAgIHRoaXMuX3VuZGVmaW5lZENhbGxiYWNrID0gZXZlbnQ7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGV2ZW50IGlzIHJlZ2lzdGVyZWQsIHRoaXMgY2hhbm5lbCB7Q0hBTk5FTH0gbWVzc2FnZXMgd2lsbCBiZSByZXR1cm5lZCB0byBldmVudC4gcmVmZXIgdG8gdGhpcy5faGFuZGxlRGF0YVxuICAgKiBJdCdzIGFjdHVhbGx5IGxpc3RlbmluZyBmb3IgaW50IGNoYW5uZWxDb2RlLiBJbiB0aGlzLl9jaGFubmVsIG9iamVjdCB0byByZWNvcmQgY2hhbm5lbCBrZXkgYW5kIGludCB2YWx1ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhbm5lbCBpbnN0cnVtZW50cyBzZXJ2aWNlIGNoYW5uZWwgZS5nOiBJTlNUUlVNRU5UX0NIQU5ORUwuREVWSUNFX0lORk8uXG4gICAqIEBwYXJhbSB7RFRYQ2FsbGJhY2t9IGV2ZW50XG4gICAqL1xuICBhc3luYyByZWdpc3RlckNoYW5uZWxDYWxsYmFjayAoY2hhbm5lbCwgZXZlbnQpIHtcbiAgICBjb25zdCBjaGFubmVsSWQgPSBhd2FpdCB0aGlzLm1ha2VDaGFubmVsKGNoYW5uZWwpO1xuICAgIHRoaXMuX2NoYW5uZWxDYWxsYmFja3MuYWRkTGlzdGVuZXIoY2hhbm5lbElkLCBldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgc2VydmljZSBjaGFubmVsLCBkYXRhIHRyYW5zbWlzc2lvbiBvZiB0aGUgc2VydmljZSB3aWxsIHVzZSB0aGlzIGNoYW5uZWxDb2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFubmVsICBpbnN0cnVtZW50cyBzZXJ2aWNlIGNoYW5uZWwgZS5nOiBJTlNUUlVNRU5UX0NIQU5ORUwuREVWSUNFX0lORk9cbiAgICogQHJldHVybnMge1Byb21pc2U8bnVtYmVyfCo+fSBpbnN0cnVtZW50cyBzZXJ2aWNlIGNoYW5uZWwgY29kZSBmb3IgZGF0YSB0cmFuc21pc3Npb25cbiAgICovXG4gIGFzeW5jIG1ha2VDaGFubmVsIChjaGFubmVsKSB7XG4gICAgaWYgKGNoYW5uZWwgaW4gdGhpcy5fY2hhbm5lbHMpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jaGFubmVsc1tjaGFubmVsXTtcbiAgICB9XG4gICAgY29uc3QgY2hhbm5lbENvZGUgPSBPYmplY3Qua2V5cyh0aGlzLl9jaGFubmVscykubGVuZ3RoICsgMTtcbiAgICBhd2FpdCB0aGlzLl9jYWxsQ2hhbm5lbCh0cnVlLCAwLCAnX3JlcXVlc3RDaGFubmVsV2l0aENvZGU6aWRlbnRpZmllcjonLCBjaGFubmVsQ29kZSwgY2hhbm5lbCk7XG4gICAgdGhpcy5fY2hhbm5lbHNbY2hhbm5lbF0gPSBjaGFubmVsQ29kZTtcbiAgICByZXR1cm4gY2hhbm5lbENvZGU7XG4gIH1cblxuICAvKipcbiAgICogSW4gZ2VuZXJhbCwgd2UgY2FsbCB0aGlzIG1ldGhvZCB0byBzdGFydCB0aGUgaW5zdHJ1bWVudCBkdHggc2VydmljZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhbm5lbCBpbnN0cnVtZW50IGR0eCBzZXJ2aWNlIGUuZzogSU5TVFJVTUVOVF9DSEFOTkVMLkRFVklDRV9JTkZPXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvciBpbnN0cnVtZW50IHNlcnZpY2UgbWV0aG9kIG5hbWUgKHJlZmxlY3Rpb24gY2FsbHMpXG4gICAqIEBwYXJhbSB7Li4uYW55fSBhdXhpbGlhcmllcyBwYXJhbWV0ZXJzIHJlcXVpcmVkIGJ5IHNlbGVjdG9yXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPERUWE1lc3NhZ2U+fVxuICAgKiBleGFtcGxl77yaXG4gICAqIGluc3RydW1lbnRTZXJ2aWNlLmNhbGxDaGFubmVsKElOU1RSVU1FTlRfQ0hBTk5FTC5QUk9DRVNTX0NPTlRST0wsXG4gICAgICAgICdsYXVuY2hTdXNwZW5kZWRQcm9jZXNzV2l0aERldmljZVBhdGg6YnVuZGxlSWRlbnRpZmllcjplbnZpcm9ubWVudDphcmd1bWVudHM6b3B0aW9uczonLCAnJyxcbiAgICAgICAgYnVuZGxlSUQsIHt9LCBbXSwgeydTdGFydFN1c3BlbmRlZEtleSc6IDAsICdLaWxsRXhpc3RpbmcnOiAxfVxuICAgKi9cbiAgYXN5bmMgY2FsbENoYW5uZWwgKGNoYW5uZWwsIHNlbGVjdG9yLCAuLi5hdXhpbGlhcmllcykge1xuICAgIGNvbnN0IGNoYW5uZWxDb2RlID0gYXdhaXQgdGhpcy5tYWtlQ2hhbm5lbChjaGFubmVsKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fY2FsbENoYW5uZWwodHJ1ZSwgY2hhbm5lbENvZGUsIHNlbGVjdG9yLCAuLi5hdXhpbGlhcmllcyk7XG4gIH1cblxuICBhc3luYyBfY2FsbENoYW5uZWwgKHN5bmMsIGNoYW5uZWxDb2RlLCBzZWxlY3RvciwgLi4uYXV4aWxpYXJpZXMpIHtcbiAgICBjb25zdCBpZGVudGlmaWVyID0gdGhpcy5fbmV4dElkZW50aWZpZXI7XG4gICAgdGhpcy5fZW5jb2Rlci53cml0ZSh7c3luYywgY2hhbm5lbENvZGUsIHNlbGVjdG9yLCBhdXhpbGlhcmllcywgaWRlbnRpZmllcn0pO1xuICAgICsrdGhpcy5fbmV4dElkZW50aWZpZXI7XG4gICAgaWYgKHN5bmMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBxdWV1ZSA9IHRoaXMuX3JlcGx5UXVldWVzW2lkZW50aWZpZXJdO1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBxdWV1ZS5zaGlmdCgpO1xuICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChkYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgICAgfVxuICAgICAgICB9LCB7d2FpdE1zOiBXQUlUX1JFUExZX1RJTUVfTVMsIGludGVydmFsTXM6IENIRUNLX0ZSRVFfTVMsIGVycm9yOiAncmVwbHkgY2hhbm5lbCBkYXRhIHRpbWVvdXQnfSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxpbmcgcmVnaXN0ZXJlZCBhc3luY2hyb25vdXMgbWVzc2FnZSBjYWxsYmFja3NcbiAgICogQHBhcmFtIHtEVFhNZXNzYWdlfSBkYXRhXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfaGFuZGxlRGF0YSAoZGF0YSkge1xuICAgIGlmIChfLmluY2x1ZGVzKGRhdGEuc2VsZWN0b3IsIENIQU5ORUxfQ0FOQ0VMRUQpKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICAgIGlmIChkYXRhLmNvbnZlcnNhdGlvbkluZGV4ID09PSAxKSB7XG4gICAgICB0aGlzLl9yZXBseVF1ZXVlc1tkYXRhLmlkZW50aWZpZXJdLnB1c2goZGF0YSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9jaGFubmVsQ2FsbGJhY2tzLmxpc3RlbmVyQ291bnQoQ0hBTk5FTF9PRkZTRVQgLSBkYXRhLmNoYW5uZWxDb2RlKSA+IDApIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDYWxsYmFja3MuZW1pdChDSEFOTkVMX09GRlNFVCAtIGRhdGEuY2hhbm5lbENvZGUsIGRhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZWxlY3RvciA9IGRhdGEuc2VsZWN0b3I7XG4gICAgICBpZiAoXy5pc1N0cmluZyhzZWxlY3RvcikgJiYgdGhpcy5fY2FsbGJhY2tzLmxpc3RlbmVyQ291bnQoc2VsZWN0b3IpID4gMCkge1xuICAgICAgICB0aGlzLl9jYWxsYmFja3MuZW1pdChzZWxlY3RvciwgZGF0YSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX3VuZGVmaW5lZENhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuX3VuZGVmaW5lZENhbGxiYWNrKGRhdGEpO1xuICAgICAgfVxuICAgICAgaWYgKGRhdGEuZXhwZWN0c1JlcGx5KSB7XG4gICAgICAgIHRoaXMuX3JlcGx5QWNrKGRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm4gYSBlbXB0eSBhY2sgbWVzc2FnZVxuICAgKiBAcGFyYW0ge0RUWE1lc3NhZ2V9IGRhdGFcbiAgICovXG4gIF9yZXBseUFjayAoZGF0YSkge1xuICAgIGNvbnN0IHJlcGx5ID0gbmV3IERUWE1lc3NhZ2Uoe1xuICAgICAgaWRlbnRpZmllcjogZGF0YS5pZGVudGlmaWVyLFxuICAgICAgY2hhbm5lbENvZGU6IGRhdGEuY2hhbm5lbENvZGUsXG4gICAgICBzZWxlY3RvcjogQnVmZmVyLmFsbG9jKEVNUFRZX01FU1NBR0VfU0laRSksXG4gICAgICBjb252ZXJzYXRpb25JbmRleDogZGF0YS5jb252ZXJzYXRpb25JbmRleCArIDEsXG4gICAgICBmbGFnczogRkxBR19UWVBFUy5yZXBseVxuICAgIH0pO1xuICAgIHRoaXMuX3NvY2tldENsaWVudC53cml0ZShyZXBseS5idWlsZCgpKTtcbiAgfVxufVxuXG5leHBvcnQgeyBJbnN0cnVtZW50U2VydmljZSwgSU5TVFJVTUVOVF9TRVJWSUNFX05BTUVfVkVSU0lPTl8xNCwgSU5TVFJVTUVOVF9TRVJWSUNFX05BTUUgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxhQUFhLEdBQUcsR0FBdEI7QUFDQSxNQUFNQyxrQkFBa0IsR0FBRyxLQUEzQjtBQUNBLE1BQU1DLGtCQUFrQixHQUFHLEVBQTNCO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUcsa0JBQXpCO0FBQ0EsTUFBTUMsY0FBYyxHQUFHLEtBQUssRUFBNUI7QUFFQSxNQUFNQyxrQ0FBa0MsR0FBRyx5REFBM0M7O0FBQ0EsTUFBTUMsdUJBQXVCLEdBQUcsb0NBQWhDOztBQUVPLE1BQU1DLGtCQUFrQixHQUFHQyxNQUFNLENBQUNDLE1BQVAsQ0FBYztFQUM5Q0MsV0FBVyxFQUFFLGtEQURp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
@@ -105,4 +105,4 @@ class DTXDecoder extends _stream.default.Transform {
105
105
  exports.DTXDecoder = DTXDecoder;require('source-map-support').install();
106
106
 
107
107
 
108
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9pbnN0cnVtZW50L3RyYW5zZm9ybWVyL2R0eC1kZWNvZGUuanMiXSwibmFtZXMiOlsiRFRYRGVjb2RlciIsIlN0cmVhbSIsIlRyYW5zZm9ybSIsImNvbnN0cnVjdG9yIiwib2JqZWN0TW9kZSIsIl9kdHhNYW5hZ2VyIiwiYnVmZmVyIiwiQnVmZmVyIiwiYWxsb2NVbnNhZmUiLCJjdXJzb3IiLCJoZWFkZXIiLCJ1bmRlZmluZWQiLCJfdHJhbnNmb3JtIiwiZGF0YSIsImVuY29kaW5nIiwib25EYXRhIiwiX2RlY29kZSIsImNvbmNhdCIsInNsaWNlIiwibGVuZ3RoIiwibWFnaWMiLCJfcmVjdiIsIkRUWF9NRVNTQUdFX0hFQURFUl9NQUdJQ19MRU4iLCJyZWFkVUludDMyTEUiLCJEVFhfTUVTU0FHRV9IRUFERVJfTUFHSUMiLCJoZWFkZXJCdWZmZXIiLCJEVFhfTUVTU0FHRV9IRUFERVJfTEVOR1RIIiwiRFRYTWVzc2FnZUhlYWRlciIsInBhcnNlIiwiZnJhZ21lbnRJZCIsImNoYW5uZWwiLCJwYXlsb2FkQnVmZmVyIiwiZnJhZ21lbnRDb3VudCIsImJvZHlCdWZmZXIiLCJwYXlsb2FkTGVuZ3RoIiwicHVzaCIsIkRUWE1lc3NhZ2UiLCJidWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0EsTUFBTUEsVUFBTixTQUF5QkMsZ0JBQU9DLFNBQWhDLENBQTBDO0FBRXhDQyxFQUFBQSxXQUFXLEdBQUk7QUFDYixVQUFNO0FBQUVDLE1BQUFBLFVBQVUsRUFBRTtBQUFkLEtBQU47QUFDQSxTQUFLQyxXQUFMLEdBQW1CLEVBQW5CO0FBQ0EsU0FBS0MsTUFBTCxHQUFjQyxNQUFNLENBQUNDLFdBQVAsQ0FBbUIsQ0FBbkIsQ0FBZDtBQUNBLFNBQUtDLE1BQUwsR0FBYyxDQUFkO0FBQ0EsU0FBS0MsTUFBTCxHQUFjQyxTQUFkO0FBQ0Q7O0FBRURDLEVBQUFBLFVBQVUsQ0FBRUMsSUFBRixFQUFRQyxRQUFSLEVBQWtCQyxNQUFsQixFQUEw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LFFBQUksS0FBS2IsTUFBTCxDQUFZYSxNQUFaLEdBQXFCLEtBQUtWLE1BQUwsR0FBY1UsTUFBdkMsRUFBK0M7QUFDN0MsYUFBTyxJQUFQO0FBQ0Q7O0FBQ0QsVUFBTWtCLEdBQUcsR0FBRyxLQUFLL0IsTUFBTCxDQUFZWSxLQUFaLENBQWtCLEtBQUtULE1BQXZCLEVBQStCLEtBQUtBLE1BQUwsR0FBY1UsTUFBN0MsQ0FBWjtBQUNBLFNBQUtWLE1BQUwsSUFBZVUsTUFBZjtBQUNBLFdBQU9rQixHQUFQO0FBQ0Q7O0FBOUR1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTdHJlYW0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCB7IERUWF9NRVNTQUdFX0hFQURFUl9MRU5HVEgsIERUWF9NRVNTQUdFX0hFQURFUl9NQUdJQywgRFRYX01FU1NBR0VfSEVBREVSX01BR0lDX0xFTixcbiAgICAgICAgIERUWE1lc3NhZ2VIZWFkZXIsIERUWE1lc3NhZ2V9IGZyb20gJy4uL2hlYWRlcnMnO1xuXG5jbGFzcyBEVFhEZWNvZGVyIGV4dGVuZHMgU3RyZWFtLlRyYW5zZm9ybSB7XG5cbiAgY29uc3RydWN0b3IgKCkge1xuICAgIHN1cGVyKHsgb2JqZWN0TW9kZTogdHJ1ZSB9KTtcbiAgICB0aGlzLl9kdHhNYW5hZ2VyID0ge307XG4gICAgdGhpcy5idWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMCk7XG4gICAgdGhpcy5jdXJzb3IgPSAwO1xuICAgIHRoaXMuaGVhZGVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgX3RyYW5zZm9ybSAoZGF0YSwgZW5jb2RpbmcsIG9uRGF0YSkge1xuICAgIHRoaXMuX2RlY29kZShkYXRhKTtcbiAgICBvbkRhdGEoKTtcbiAgfVxuXG4gIF9kZWNvZGUgKGRhdGEpIHtcbiAgICAvLyBNZXJnZSBwYWNrZXRzXG4gICAgdGhpcy5idWZmZXIgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmJ1ZmZlci5zbGljZSh0aGlzLmN1cnNvciwgdGhpcy5idWZmZXIubGVuZ3RoKSwgZGF0YV0pO1xuICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICB3aGlsZSAodGhpcy5jdXJzb3IgPCB0aGlzLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG1hZ2ljID0gdGhpcy5fcmVjdihEVFhfTUVTU0FHRV9IRUFERVJfTUFHSUNfTEVOKTtcbiAgICAgIGlmICghbWFnaWMpIHsgcmV0dXJuOyB9XG4gICAgICB0aGlzLmN1cnNvciAtPSBEVFhfTUVTU0FHRV9IRUFERVJfTUFHSUNfTEVOO1xuICAgICAgaWYgKG1hZ2ljICYmIG1hZ2ljLnJlYWRVSW50MzJMRSgwKSA9PT0gRFRYX01FU1NBR0VfSEVBREVSX01BR0lDKSB7XG4gICAgICAgIGNvbnN0IGhlYWRlckJ1ZmZlciA9IHRoaXMuX3JlY3YoRFRYX01FU1NBR0VfSEVBREVSX0xFTkdUSCk7XG4gICAgICAgIGlmICghaGVhZGVyQnVmZmVyKSB7IHJldHVybjsgfVxuICAgICAgICB0aGlzLmhlYWRlciA9IERUWE1lc3NhZ2VIZWFkZXIucGFyc2UoaGVhZGVyQnVmZmVyKTtcbiAgICAgICAgaWYgKHRoaXMuaGVhZGVyLmZyYWdtZW50SWQgPT09IDApIHtcbiAgICAgICAgICAvLyBvbmx5IHRoZSAwdGggZnJhZ21lbnQgY29udGFpbnMgYSBtZXNzYWdlIGhlYWRlclxuICAgICAgICAgIGlmICghKHRoaXMuaGVhZGVyLmNoYW5uZWwgaW4gdGhpcy5fZHR4TWFuYWdlcikpIHtcbiAgICAgICAgICAgIHRoaXMuX2R0eE1hbmFnZXJbdGhpcy5oZWFkZXIuY2hhbm5lbF0gPSB7aGVhZGVyQnVmZmVyLCBwYXlsb2FkQnVmZmVyOiBuZXcgQnVmZmVyLmFsbG9jVW5zYWZlKDApfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMuaGVhZGVyLmZyYWdtZW50Q291bnQgPiAxKSB7XG4gICAgICAgICAgICAvLyBDb250aW51ZSB0byBnZXQgdGhlIG5leHQgbWVzc2FnZSBmcmFnbWVudHNcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgYm9keUJ1ZmZlciA9IHRoaXMuX3JlY3YodGhpcy5oZWFkZXIucGF5bG9hZExlbmd0aCk7XG4gICAgICBpZiAoIWJvZHlCdWZmZXIpIHsgcmV0dXJuOyB9XG4gICAgICBpZiAodGhpcy5fZHR4TWFuYWdlclt0aGlzLmhlYWRlci5jaGFubmVsXSkge1xuICAgICAgICB0aGlzLl9kdHhNYW5hZ2VyW3RoaXMuaGVhZGVyLmNoYW5uZWxdLnBheWxvYWRCdWZmZXIgPSBCdWZmZXIuY29uY2F0KFt0aGlzLl9kdHhNYW5hZ2VyW3RoaXMuaGVhZGVyLmNoYW5uZWxdLnBheWxvYWRCdWZmZXIsIGJvZHlCdWZmZXJdKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmhlYWRlci5mcmFnbWVudElkID09PSAodGhpcy5oZWFkZXIuZnJhZ21lbnRDb3VudCAtIDEpKSB7XG4gICAgICAgIGRhdGEgPSB0aGlzLl9kdHhNYW5hZ2VyW3RoaXMuaGVhZGVyLmNoYW5uZWxdO1xuICAgICAgICBkZWxldGUgdGhpcy5fZHR4TWFuYWdlclt0aGlzLmhlYWRlci5jaGFubmVsXTtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICB0aGlzLnB1c2goRFRYTWVzc2FnZS5wYXJzZShkYXRhLmhlYWRlckJ1ZmZlciwgZGF0YS5wYXlsb2FkQnVmZmVyKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jdXJzb3IgPSAwO1xuICAgIHRoaXMuYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKDApO1xuICB9XG5cbiAgX3JlY3YgKGxlbmd0aCkge1xuICAgIGlmICh0aGlzLmJ1ZmZlci5sZW5ndGggPCB0aGlzLmN1cnNvciArIGxlbmd0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGJ1ZiA9IHRoaXMuYnVmZmVyLnNsaWNlKHRoaXMuY3Vyc29yLCB0aGlzLmN1cnNvciArIGxlbmd0aCk7XG4gICAgdGhpcy5jdXJzb3IgKz0gbGVuZ3RoO1xuICAgIHJldHVybiBidWY7XG4gIH1cbn1cblxuZXhwb3J0IHsgRFRYRGVjb2RlciB9O1xuIl0sImZpbGUiOiJsaWIvaW5zdHJ1bWVudC90cmFuc2Zvcm1lci9kdHgtZGVjb2RlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uIn0=
108
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2luc3RydW1lbnQvdHJhbnNmb3JtZXIvZHR4LWRlY29kZS5qcyIsIm5hbWVzIjpbIkRUWERlY29kZXIiLCJTdHJlYW0iLCJUcmFuc2Zvcm0iLCJjb25zdHJ1Y3RvciIsIm9iamVjdE1vZGUiLCJfZHR4TWFuYWdlciIsImJ1ZmZlciIsIkJ1ZmZlciIsImFsbG9jVW5zYWZlIiwiY3Vyc29yIiwiaGVhZGVyIiwidW5kZWZpbmVkIiwiX3RyYW5zZm9ybSIsImRhdGEiLCJlbmNvZGluZyIsIm9uRGF0YSIsIl9kZWNvZGUiLCJjb25jYXQiLCJzbGljZSIsImxlbmd0aCIsIm1hZ2ljIiwiX3JlY3YiLCJEVFhfTUVTU0FHRV9IRUFERVJfTUFHSUNfTEVOIiwicmVhZFVJbnQzMkxFIiwiRFRYX01FU1NBR0VfSEVBREVSX01BR0lDIiwiaGVhZGVyQnVmZmVyIiwiRFRYX01FU1NBR0VfSEVBREVSX0xFTkdUSCIsIkRUWE1lc3NhZ2VIZWFkZXIiLCJwYXJzZSIsImZyYWdtZW50SWQiLCJjaGFubmVsIiwicGF5bG9hZEJ1ZmZlciIsImZyYWdtZW50Q291bnQiLCJib2R5QnVmZmVyIiwicGF5bG9hZExlbmd0aCIsInB1c2giLCJEVFhNZXNzYWdlIiwiYnVmIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2luc3RydW1lbnQvdHJhbnNmb3JtZXIvZHR4LWRlY29kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU3RyZWFtIGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgeyBEVFhfTUVTU0FHRV9IRUFERVJfTEVOR1RILCBEVFhfTUVTU0FHRV9IRUFERVJfTUFHSUMsIERUWF9NRVNTQUdFX0hFQURFUl9NQUdJQ19MRU4sXG4gICAgICAgICBEVFhNZXNzYWdlSGVhZGVyLCBEVFhNZXNzYWdlfSBmcm9tICcuLi9oZWFkZXJzJztcblxuY2xhc3MgRFRYRGVjb2RlciBleHRlbmRzIFN0cmVhbS5UcmFuc2Zvcm0ge1xuXG4gIGNvbnN0cnVjdG9yICgpIHtcbiAgICBzdXBlcih7IG9iamVjdE1vZGU6IHRydWUgfSk7XG4gICAgdGhpcy5fZHR4TWFuYWdlciA9IHt9O1xuICAgIHRoaXMuYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKDApO1xuICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICB0aGlzLmhlYWRlciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIF90cmFuc2Zvcm0gKGRhdGEsIGVuY29kaW5nLCBvbkRhdGEpIHtcbiAgICB0aGlzLl9kZWNvZGUoZGF0YSk7XG4gICAgb25EYXRhKCk7XG4gIH1cblxuICBfZGVjb2RlIChkYXRhKSB7XG4gICAgLy8gTWVyZ2UgcGFja2V0c1xuICAgIHRoaXMuYnVmZmVyID0gQnVmZmVyLmNvbmNhdChbdGhpcy5idWZmZXIuc2xpY2UodGhpcy5jdXJzb3IsIHRoaXMuYnVmZmVyLmxlbmd0aCksIGRhdGFdKTtcbiAgICB0aGlzLmN1cnNvciA9IDA7XG4gICAgd2hpbGUgKHRoaXMuY3Vyc29yIDwgdGhpcy5idWZmZXIubGVuZ3RoKSB7XG4gICAgICBjb25zdCBtYWdpYyA9IHRoaXMuX3JlY3YoRFRYX01FU1NBR0VfSEVBREVSX01BR0lDX0xFTik7XG4gICAgICBpZiAoIW1hZ2ljKSB7IHJldHVybjsgfVxuICAgICAgdGhpcy5jdXJzb3IgLT0gRFRYX01FU1NBR0VfSEVBREVSX01BR0lDX0xFTjtcbiAgICAgIGlmIChtYWdpYyAmJiBtYWdpYy5yZWFkVUludDMyTEUoMCkgPT09IERUWF9NRVNTQUdFX0hFQURFUl9NQUdJQykge1xuICAgICAgICBjb25zdCBoZWFkZXJCdWZmZXIgPSB0aGlzLl9yZWN2KERUWF9NRVNTQUdFX0hFQURFUl9MRU5HVEgpO1xuICAgICAgICBpZiAoIWhlYWRlckJ1ZmZlcikgeyByZXR1cm47IH1cbiAgICAgICAgdGhpcy5oZWFkZXIgPSBEVFhNZXNzYWdlSGVhZGVyLnBhcnNlKGhlYWRlckJ1ZmZlcik7XG4gICAgICAgIGlmICh0aGlzLmhlYWRlci5mcmFnbWVudElkID09PSAwKSB7XG4gICAgICAgICAgLy8gb25seSB0aGUgMHRoIGZyYWdtZW50IGNvbnRhaW5zIGEgbWVzc2FnZSBoZWFkZXJcbiAgICAgICAgICBpZiAoISh0aGlzLmhlYWRlci5jaGFubmVsIGluIHRoaXMuX2R0eE1hbmFnZXIpKSB7XG4gICAgICAgICAgICB0aGlzLl9kdHhNYW5hZ2VyW3RoaXMuaGVhZGVyLmNoYW5uZWxdID0ge2hlYWRlckJ1ZmZlciwgcGF5bG9hZEJ1ZmZlcjogbmV3IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKX07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLmhlYWRlci5mcmFnbWVudENvdW50ID4gMSkge1xuICAgICAgICAgICAgLy8gQ29udGludWUgdG8gZ2V0IHRoZSBuZXh0IG1lc3NhZ2UgZnJhZ21lbnRzXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGJvZHlCdWZmZXIgPSB0aGlzLl9yZWN2KHRoaXMuaGVhZGVyLnBheWxvYWRMZW5ndGgpO1xuICAgICAgaWYgKCFib2R5QnVmZmVyKSB7IHJldHVybjsgfVxuICAgICAgaWYgKHRoaXMuX2R0eE1hbmFnZXJbdGhpcy5oZWFkZXIuY2hhbm5lbF0pIHtcbiAgICAgICAgdGhpcy5fZHR4TWFuYWdlclt0aGlzLmhlYWRlci5jaGFubmVsXS5wYXlsb2FkQnVmZmVyID0gQnVmZmVyLmNvbmNhdChbdGhpcy5fZHR4TWFuYWdlclt0aGlzLmhlYWRlci5jaGFubmVsXS5wYXlsb2FkQnVmZmVyLCBib2R5QnVmZmVyXSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5oZWFkZXIuZnJhZ21lbnRJZCA9PT0gKHRoaXMuaGVhZGVyLmZyYWdtZW50Q291bnQgLSAxKSkge1xuICAgICAgICBkYXRhID0gdGhpcy5fZHR4TWFuYWdlclt0aGlzLmhlYWRlci5jaGFubmVsXTtcbiAgICAgICAgZGVsZXRlIHRoaXMuX2R0eE1hbmFnZXJbdGhpcy5oZWFkZXIuY2hhbm5lbF07XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgdGhpcy5wdXNoKERUWE1lc3NhZ2UucGFyc2UoZGF0YS5oZWFkZXJCdWZmZXIsIGRhdGEucGF5bG9hZEJ1ZmZlcikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKTtcbiAgfVxuXG4gIF9yZWN2IChsZW5ndGgpIHtcbiAgICBpZiAodGhpcy5idWZmZXIubGVuZ3RoIDwgdGhpcy5jdXJzb3IgKyBsZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBidWYgPSB0aGlzLmJ1ZmZlci5zbGljZSh0aGlzLmN1cnNvciwgdGhpcy5jdXJzb3IgKyBsZW5ndGgpO1xuICAgIHRoaXMuY3Vyc29yICs9IGxlbmd0aDtcbiAgICByZXR1cm4gYnVmO1xuICB9XG59XG5cbmV4cG9ydCB7IERUWERlY29kZXIgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQSxNQUFNQSxVQUFOLFNBQXlCQyxlQUFBLENBQU9DLFNBQWhDLENBQTBDO0VBRXhDQyxXQUFXLEdBQUk7SUFDYixNQUFNO01BQUVDLFVBQVUsRUFBRTtJQUFkLENBQU47SUFDQSxLQUFLQyxXQUFMLEdBQW1CLEVBQW5CO0lBQ0EsS0FBS0MsTUFBTCxHQUFjQyxNQUFNLENBQUNDLFdBQVAsQ0FBbUIsQ0FBbkIsQ0FBZDtJQUNBLEtBQUtDLE1BQUwsR0FBYyxDQUFkO0lBQ0EsS0FBS0MsTUFBTCxHQUFjQyxTQUFkO0VBQ0Q7O0VBRURDLFVBQVUsQ0FBRUMsSUFBRixFQUFRQyxRQUFSLEVBQWtCQyxNQUFsQixFQUEwQjtJQUNsQyxLQUFLQyxPQUFMLENBQWFILElBQWI7O0lBQ0FFLE1BQU07RUFDUDs7RUFFREMsT0FBTyxDQUFFSCxJQUFGLEVBQVE7SUFFYixLQUFLUCxNQUFMLEdBQWNDLE1BQU0sQ0FBQ1UsTUFBUCxDQUFjLENBQUMs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
@@ -54,4 +54,4 @@ class DTXEncoder extends _stream.default.Transform {
54
54
  exports.DTXEncoder = DTXEncoder;require('source-map-support').install();
55
55
 
56
56
 
57
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9pbnN0cnVtZW50L3RyYW5zZm9ybWVyL2R0eC1lbmNvZGUuanMiXSwibmFtZXMiOlsiRFRYRW5jb2RlciIsIlN0cmVhbSIsIlRyYW5zZm9ybSIsImNvbnN0cnVjdG9yIiwib2JqZWN0TW9kZSIsIl90cmFuc2Zvcm0iLCJkYXRhIiwiZW5jb2RpbmciLCJvbkRhdGEiLCJwdXNoIiwiX2VuY29kZSIsInN5bmMiLCJjaGFubmVsQ29kZSIsInNlbGVjdG9yIiwiYXV4aWxpYXJpZXMiLCJpZGVudGlmaWVyIiwiZHR4IiwiRFRYTWVzc2FnZSIsImV4cGVjdHNSZXBseSIsIkRUWE1lc3NhZ2VBdXhCdWZmZXIiLCJidWlsZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQSxNQUFNQSxVQUFOLFNBQXlCQyxnQkFBT0MsU0FBaEMsQ0FBMEM7QUFFeENDLEVBQUFBLFdBQVcsR0FBSTtBQUNiLFVBQU07QUFBRUMsTUFBQUEsVUFBVSxFQUFFO0FBQWQsS0FBTjtBQUNEOztBQUVEQyxFQUFBQSxVQUFVLENBQUVDLElBQUYsRUFBUUMsUUFBUixFQUFrQkMsTUFBbEIsRUFBMEI7QUFDbEMsU0FBS0MsSUFBTCxDQUFVLEtBQUtDLE9BQUwsQ0FBYUosSUFBYixDQUFWLEVBQThCLFFBQTlCO0FBQ0FFLElBQUFBLE1BQU07QUFDUDs7QUFFREUsRUFBQUEsT0FBTyxDQUFFSixJQUFGLEVBQVE7QUFDYixVQUFNO0FBQUNLLE1BQUFBLElBQUQ7QUFBT0MsTUFBQUEsV0FBUDtBQUFvQkMsTUFBQUEsUUFBcEI7QUFBOEJDLE1BQUFBLFdBQTlCO0FBQTJDQyxNQUFBQTtBQUEzQyxRQUF5RFQsSUFBL0Q7QUFDQSxVQUFNVSxHQUFHLEdBQUcsSUFBSUMsbUJBQUosQ0FBZTtBQUN6QkYsTUFBQUEsVUFEeUI7QUFFekJILE1BQUFBLFdBRnlCO0FBR3pCQyxNQUFBQSxRQUh5QjtBQUl6QkssTUFBQUEsWUFBWSxFQUFFUDtBQUpXLEtBQWYsQ0FBWjs7QUFNQSxRQUFJRyxXQUFXLFlBQVlLLDRCQUEzQixFQUFnRDtBQUM5Q0gsTUFBQUEsR0FBRyxDQUFDRixXQUFKLEdBQWtCQSxXQUFsQjtBQUNELEtBRkQsTUFFTztBQUNMRSxNQUFBQSxHQUFHLENBQUNGLFdBQUosQ0FBZ0JSLElBQWhCLEdBQXVCUSxXQUF2QjtBQUNEOztBQUNELFdBQU9FLEdBQUcsQ0FBQ0ksS0FBSixFQUFQO0FBQ0Q7O0FBekJ1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTdHJlYW0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCB7RFRYTWVzc2FnZSwgRFRYTWVzc2FnZUF1eEJ1ZmZlcn0gZnJvbSAnLi4vaGVhZGVycyc7XG5cblxuY2xhc3MgRFRYRW5jb2RlciBleHRlbmRzIFN0cmVhbS5UcmFuc2Zvcm0ge1xuXG4gIGNvbnN0cnVjdG9yICgpIHtcbiAgICBzdXBlcih7IG9iamVjdE1vZGU6IHRydWUgfSk7XG4gIH1cblxuICBfdHJhbnNmb3JtIChkYXRhLCBlbmNvZGluZywgb25EYXRhKSB7XG4gICAgdGhpcy5wdXNoKHRoaXMuX2VuY29kZShkYXRhKSwgJ2J1ZmZlcicpO1xuICAgIG9uRGF0YSgpO1xuICB9XG5cbiAgX2VuY29kZSAoZGF0YSkge1xuICAgIGNvbnN0IHtzeW5jLCBjaGFubmVsQ29kZSwgc2VsZWN0b3IsIGF1eGlsaWFyaWVzLCBpZGVudGlmaWVyfSA9IGRhdGE7XG4gICAgY29uc3QgZHR4ID0gbmV3IERUWE1lc3NhZ2Uoe1xuICAgICAgaWRlbnRpZmllcixcbiAgICAgIGNoYW5uZWxDb2RlLFxuICAgICAgc2VsZWN0b3IsXG4gICAgICBleHBlY3RzUmVwbHk6IHN5bmNcbiAgICB9KTtcbiAgICBpZiAoYXV4aWxpYXJpZXMgaW5zdGFuY2VvZiBEVFhNZXNzYWdlQXV4QnVmZmVyKSB7XG4gICAgICBkdHguYXV4aWxpYXJpZXMgPSBhdXhpbGlhcmllcztcbiAgICB9IGVsc2Uge1xuICAgICAgZHR4LmF1eGlsaWFyaWVzLmRhdGEgPSBhdXhpbGlhcmllcztcbiAgICB9XG4gICAgcmV0dXJuIGR0eC5idWlsZCgpO1xuICB9XG59XG5cbmV4cG9ydCB7IERUWEVuY29kZXIgfTtcbiJdLCJmaWxlIjoibGliL2luc3RydW1lbnQvdHJhbnNmb3JtZXIvZHR4LWVuY29kZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLiJ9
57
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2luc3RydW1lbnQvdHJhbnNmb3JtZXIvZHR4LWVuY29kZS5qcyIsIm5hbWVzIjpbIkRUWEVuY29kZXIiLCJTdHJlYW0iLCJUcmFuc2Zvcm0iLCJjb25zdHJ1Y3RvciIsIm9iamVjdE1vZGUiLCJfdHJhbnNmb3JtIiwiZGF0YSIsImVuY29kaW5nIiwib25EYXRhIiwicHVzaCIsIl9lbmNvZGUiLCJzeW5jIiwiY2hhbm5lbENvZGUiLCJzZWxlY3RvciIsImF1eGlsaWFyaWVzIiwiaWRlbnRpZmllciIsImR0eCIsIkRUWE1lc3NhZ2UiLCJleHBlY3RzUmVwbHkiLCJEVFhNZXNzYWdlQXV4QnVmZmVyIiwiYnVpbGQiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvaW5zdHJ1bWVudC90cmFuc2Zvcm1lci9kdHgtZW5jb2RlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTdHJlYW0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCB7RFRYTWVzc2FnZSwgRFRYTWVzc2FnZUF1eEJ1ZmZlcn0gZnJvbSAnLi4vaGVhZGVycyc7XG5cblxuY2xhc3MgRFRYRW5jb2RlciBleHRlbmRzIFN0cmVhbS5UcmFuc2Zvcm0ge1xuXG4gIGNvbnN0cnVjdG9yICgpIHtcbiAgICBzdXBlcih7IG9iamVjdE1vZGU6IHRydWUgfSk7XG4gIH1cblxuICBfdHJhbnNmb3JtIChkYXRhLCBlbmNvZGluZywgb25EYXRhKSB7XG4gICAgdGhpcy5wdXNoKHRoaXMuX2VuY29kZShkYXRhKSwgJ2J1ZmZlcicpO1xuICAgIG9uRGF0YSgpO1xuICB9XG5cbiAgX2VuY29kZSAoZGF0YSkge1xuICAgIGNvbnN0IHtzeW5jLCBjaGFubmVsQ29kZSwgc2VsZWN0b3IsIGF1eGlsaWFyaWVzLCBpZGVudGlmaWVyfSA9IGRhdGE7XG4gICAgY29uc3QgZHR4ID0gbmV3IERUWE1lc3NhZ2Uoe1xuICAgICAgaWRlbnRpZmllcixcbiAgICAgIGNoYW5uZWxDb2RlLFxuICAgICAgc2VsZWN0b3IsXG4gICAgICBleHBlY3RzUmVwbHk6IHN5bmNcbiAgICB9KTtcbiAgICBpZiAoYXV4aWxpYXJpZXMgaW5zdGFuY2VvZiBEVFhNZXNzYWdlQXV4QnVmZmVyKSB7XG4gICAgICBkdHguYXV4aWxpYXJpZXMgPSBhdXhpbGlhcmllcztcbiAgICB9IGVsc2Uge1xuICAgICAgZHR4LmF1eGlsaWFyaWVzLmRhdGEgPSBhdXhpbGlhcmllcztcbiAgICB9XG4gICAgcmV0dXJuIGR0eC5idWlsZCgpO1xuICB9XG59XG5cbmV4cG9ydCB7IERUWEVuY29kZXIgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQSxNQUFNQSxVQUFOLFNBQXlCQyxlQUFBLENBQU9DLFNBQWhDLENBQTBDO0VBRXhDQyxXQUFXLEdBQUk7SUFDYixNQUFNO01BQUVDLFVBQVUsRUFBRTtJQUFkLENBQU47RUFDRDs7RUFFREMsVUFBVSxDQUFFQyxJQUFGLEVBQVFDLFFBQVIsRUFBa0JDLE1BQWxCLEVBQTBCO0lBQ2xDLEtBQUtDLElBQUwsQ0FBVSxLQUFLQyxPQUFMLENBQWFKLElBQWIsQ0FBVixFQUE4QixRQUE5QjtJQUNBRSxNQUFNO0VBQ1A7O0VBRURFLE9BQU8sQ0FBRUosSUFBRixFQUFRO0lBQ2IsTUFBTTtNQUFDSyxJQUFEO01BQU9DLFdBQVA7TUFBb0JDLFFBQXBCO01BQThCQyxXQUE5QjtNQUEyQ0M7SUFBM0MsSUFBeURULElBQS9EO0lBQ0EsTUFBTVUsR0FBRyxHQUFHLElBQUlDLG1CQUFKLENBQWU7TUFDekJGLFVBRHlCO01BRXpCSCxXQUZ5QjtNQUd6QkMsUUFIeUI7TUFJekJLLFlBQVksRUFBRVA7SUFKVyxDQUFmLENBQVo7O0lBTUEsSUFBSUcsV0FBVyxZQUFZSyw0QkFBM0IsRUFBZ0Q7TUFDOUNILEdBQUcsQ0FBQ0YsV0FBSixHQUFrQkEsV0FBbEI7SUFDRCxDQUZELE1BRU87TUFDTEUsR0FBRyxDQUFDRixXQUFKLENBQWdCUixJQUFoQixHQUF1QlEsV0FBdkI7SUFDRDs7SUFDRCxPQUFPRSxHQUFHLENBQUNJLEtBQUosRUFBUDtFQUNEOztBQXpCdUMifQ==
@@ -443,4 +443,4 @@ function updateNSKeyedArchiveClass(name, subClass) {
443
443
  }require('source-map-support').install();
444
444
 
445
445
 
446
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9pbnN0cnVtZW50L3RyYW5zZm9ybWVyL25za2V5ZWQuanMiXSwibmFtZXMiOlsiTlNLRVlFRF9BUkNISVZFX1ZFUlNJT04iLCJOVUxMX1VJRCIsInBsaXN0bGliIiwiVUlEIiwiQ1lDTEVfVE9LRU4iLCJQUklNSVRJVkVfVFlQRVMiLCJOT05fRU5DT0RBQkxFX1RZUEVTIiwiTlNLRVlFREFSQ0hJVkVSIiwiVU5JWDJBUFBMRV9USU1FU1RBTVBfU0VDT05EIiwiQXJjaGl2ZWRPYmplY3QiLCJjb25zdHJ1Y3RvciIsIm9iamVjdCIsInVuYXJjaGl2ZXIiLCJfdW5hcmNoaXZlciIsImRlY29kZUluZGV4IiwiaW5kZXgiLCJkZWNvZGVPYmplY3QiLCJkZWNvZGUiLCJrZXkiLCJkZWNvZGVLZXkiLCJBcmNoaXZpbmdPYmplY3QiLCJhcmNoaXZlciIsIl9hcmNoaXZlT2JqIiwiX2FyY2hpdmVyIiwiZW5jb2RlIiwidmFsIiwiQmFzZUFyY2hpdmVIYW5kbGVyIiwiZGVjb2RlQXJjaGl2ZSIsImFyY2hpdmUiLCJFcnJvciIsImVuY29kZUFyY2hpdmUiLCJvYmoiLCJEaWN0QXJjaGl2ZSIsImtleVVpZHMiLCJ2YWxVaWRzIiwiZCIsImkiLCJsZW5ndGgiLCJMaXN0QXJjaGl2ZSIsInVpZHMiLCJtYXAiLCJiaW5kIiwiRFRUYXBNZXNzYWdlUGxpc3QiLCJOU0Vycm9yIiwiTlNFeGNlcHRpb24iLCJOU1VSTCIsImJhc2UiLCJyZWxhdGl2ZSIsIl9iYXNlIiwiX3JlbGF0aXZlIiwiJGNsYXNzIiwiTlNEYXRlIiwiZGF0YSIsIl9kYXRhIiwiTlNNdXRhYmxlU3RyaW5nIiwiTlNNdXRhYmxlRGF0YSIsIk5TVVVJRCIsIkJ1ZmZlciIsImZyb20iLCJidWZmZXIiLCJYQ1RDYXBhYmlsaXRpZXMiLCJOU051bGwiLCJVTkFSQ0hJVkVfQ0xBU1NfTUFQIiwiRFRTeXNtb25UYXBNZXNzYWdlIiwiRFRUYXBIZWFydGJlYXRNZXNzYWdlIiwiRFRUYXBNZXNzYWdlQXJjaGl2ZSIsIkRUS1RyYWNlVGFwTWVzc2FnZSIsIkVycm9yQXJjaGl2ZSIsIkV4Y2VwdGlvbkFyY2hpdmUiLCJOU0RpY3Rpb25hcnkiLCJOU011dGFibGVEaWN0aW9uYXJ5IiwiTlNBcnJheSIsIk5TTXV0YWJsZUFycmF5IiwiTlNNdXRhYmxlU2V0IiwiTlNTZXQiLCJVbmFyY2hpdmUiLCJpbnB1dEJ5dGVzIiwiaW5wdXQiLCJ1bnBhY2tlZFVpZHMiLCJ0b3BVSUQiLCJvYmplY3RzIiwidW5wYWNrQXJjaGl2ZUhlYWRlciIsInBsaXN0IiwicGFyc2VCdWZmZXIiLCIkYXJjaGl2ZXIiLCIkdmVyc2lvbiIsInRvcCIsIiR0b3AiLCJyb290IiwiSlNPTiIsInN0cmluZ2lmeSIsIiRvYmplY3RzIiwiY2xhc3NGb3JVaWQiLCJtZXRhIiwibmFtZSIsIiRjbGFzc25hbWUiLCJrbGFzcyIsIl8iLCJpc05pbCIsImlzVW5kZWZpbmVkIiwicmF3T2JqIiwia2xhc3NPYmoiLCJ0b09iamVjdCIsIkFyY2hpdmUiLCJpbnB1dE9iamVjdCIsImNsYXNzTWFwIiwidWlkRm9yQXJjaGl2ZXIiLCJwdXNoIiwiaXNOdWxsIiwiaW5jbHVkZXMiLCJhcmNoaXZlT2JqIiwiZW5jb2RlVG9wTGV2ZWwiLCJBcnJheSIsImVuY29kZUFycmF5IiwiU2V0IiwiZW5jb2RlU2V0IiwiT2JqZWN0Iiwib2JqTmFtZSIsImVuY29kZURpY3QiLCJvYmpzIiwia2V5cyIsInZhbHVlcyIsInRvQnl0ZXMiLCJ1bmFyY2hpdmUiLCJ1cGRhdGVOU0tleWVkQXJjaGl2ZUNsYXNzIiwic3ViQ2xhc3MiLCJpc0Z1bmN0aW9uIiwicHJvdG90eXBlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLHVCQUF1QixHQUFHLE1BQWhDO0FBQ0EsTUFBTUMsUUFBUSxHQUFHLElBQUlDLHNCQUFTQyxHQUFiLENBQWlCLENBQWpCLENBQWpCO0FBQ0EsTUFBTUMsV0FBVyxHQUFHLFlBQXBCO0FBQ0EsTUFBTUMsZUFBZSxHQUFHLENBQUMsUUFBRCxFQUFXLFFBQVgsRUFBcUIsU0FBckIsRUFBZ0MsS0FBaEMsRUFBdUMsUUFBdkMsQ0FBeEI7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxDQUFDLFFBQUQsRUFBVyxTQUFYLENBQTVCO0FBQ0EsTUFBTUMsZUFBZSxHQUFHLGlCQUF4QjtBQUNBLE1BQU1DLDJCQUEyQixHQUFHLFNBQXBDOztBQUdBLE1BQU1DLGNBQU4sQ0FBcUI7QUFPbkJDLEVBQUFBLFdBQVcsQ0FBRUMsTUFBRixFQUFVQyxVQUFWLEVBQXNCO0FBQy9CLFNBQUtELE1BQUwsR0FBY0EsTUFBZDtBQUNBLFNBQUtFLFdBQUwsR0FBbUJELFVBQW5CO0FBQ0Q7O0FBRURFLEVBQUFBLFdBQVcsQ0FBRUMsS0FBRixFQUFTO0FBQ2xCLFdBQU8sS0FBS0YsV0FBTCxDQUFpQkcsWUFBakIsQ0FBOEJELEtBQTlCLENBQVA7QUFDRDs7QUFFREUsRUFBQUEsTUFBTSxDQUFFQyxHQUFGLEVBQU87QUFDWCxXQUFPLEtBQUtMLFdBQUwsQ0FBaUJNLFNBQWpCLENBQTJCLEtBQUtSLE1BQWhDLEVBQXdDTyxHQUF4QyxDQUFQO0FBQ0Q7O0FBbEJrQjs7QUFxQnJCLE1BQU1FLGVBQU4sQ0FBc0I7QUFPcEJWLEVBQUFBLFdBQVcsQ0FBRUMsTUFBRixFQUFVVSxRQUFWLEVBQW9CO0FBQzdCLFNBQUtDLFdBQUwsR0FBbUJYLE1BQW5CO0FBQ0EsU0FBS1ksU0FBTCxHQUFpQkYsUUFBakI7QUFDRDs7QUFFREcsRUFBQUEsTUFBTSxDQUFFTixHQUFGLEVBQU9PLEdBQVAsRUFBWTtBQUNoQixTQUFLSCxXQUFMLENBQWlCSixHQUFqQixJQUF3QixLQUFLSyxTQUFMLENBQWVDLE1BQWYsQ0FBc0JDLEdBQXRCLENBQXhCO0FBQ0Q7O0FBZG1COztBQXFCdEIsTUFBTUMsa0JBQU4sQ0FBeUI7QUFLdkJDLEVBQUFBLGFBQWEsQ0FBRUMsT0FBRixFQUFXO0FBQ3RCLFVBQU0sSUFBSUMsS0FBSixDQUFXLHVDQUFYLENBQU47QUFDRDs7QUFPREMsRUFBQUEsYUFBYSxDQUFFQyxHQUFGLEVBQU9ILE9BQVAsRUFBZ0I7QUFDM0IsVUFBTSxJQUFJQyxLQUFKLENBQVcsdUNBQVgsQ0FBTjtBQUNEOztBQWhCc0I7Ozs7QUFzQnpCLE1BQU1HLFdBQU4sU0FBMEJOLGtCQUExQixDQUE2QztBQUMzQ0MsRUFBQUEsYUFBYSxDQUFFQyxPQUFGLEVBQVc7QUFDdEIsVUFBTUssT0FBTyxHQUFHTCxPQUFPLENBQUNYLE1BQVIsQ0FBZSxTQUFmLENBQWhCO0FBQ0EsVUFBTWlCLE9BQU8sR0FBR04sT0FBTyxDQUFDWCxNQUFSLENBQWUsWUFBZixDQUFoQjtBQUNBLFVBQU1rQixDQUFDLEdBQUcsRUFBVjs7QUFDQSxTQUFLLElBQUlDLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdILE9BQU8sQ0FBQ0ksTUFBNUIsRUFBcUNELENBQUMsRUFBdEMsRUFBMEM7QUFDeEMsWUFBTWxCLEdBQUcsR0FBR1UsT0FBTyxDQUFDZCxXQUFSLENBQW9CbUIsT0FBTyxDQUFDRyxDQUFELENBQTNCLENBQVo7QUFDQUQsTUFBQUEsQ0FBQyxDQUFDakIsR0FBRCxDQUFELEdBQVNVLE9BQU8sQ0FBQ2QsV0FBUixDQUFvQm9CLE9BQU8sQ0FBQ0UsQ0FBRCxDQUEzQixDQUFUO0FBQ0Q7O0FBQ0QsV0FBT0QsQ0FBUDtBQUNEOztBQVYwQzs7QUFnQjdDLE1BQU1HLFdBQU4sU0FBMEJaLGtCQUExQixDQUE2QztBQUMzQ0MsRUFBQUEsYUFBYSxDQUFFQyxPQUFGLEVBQVc7QUFDdEIsVUFBTVcsSUFBSSxHQUFHWCxPQUFPLENBQUNYLE1BQVIsQ0FBZSxZQUFmLENBQWI7QUFDQSxXQUFPc0IsSUFBSSxDQUFDQyxHQUFMLENBQVNaLE9BQU8sQ0FBQ2QsV0FBUixDQUFvQjJCLElBQXBCLENBQXlCYixPQUF6QixDQUFULENBQVA7QUFDRDs7QUFKMEM7O0FBTzdDLE1BQU1jLGlCQUFOLFNBQWdDaEIsa0JBQWhDLENBQW1EO0FBQ2pEQyxFQUFBQSxhQUFhLENBQUVDLE9BQUYsRUFBVztBQUN0QixXQUFPQSxPQUFPLENBQUNYLE1BQVIsQ0FBZSxtQkFBZixDQUFQO0FBQ0Q7O0FBSGdEOztBQU1uRCxNQUFNMEIsT0FBTixTQUFzQmpCLGtCQUF0QixDQUF5QztBQUN2Q0MsRUFBQUEsYUFBYSxDQUFFQyxPQUFGLEVBQVc7QUFDdEIsV0FBTztBQUNMLGdCQUFVLFNBREw7QUFFTCxnQkFBVUEsT0FBTyxDQUFDWCxNQUFSLENBQWUsVUFBZixDQUZMO0FBR0wsa0JBQVlXLE9BQU8sQ0FBQ1gsTUFBUixDQUFlLFlBQWYsQ0FIUDtBQUlMLGNBQVFXLE9BQU8sQ0FBQ1gsTUFBUixDQUFlLFFBQWY7QUFKSCxLQUFQO0FBTUQ7O0FBUnNDOztBQVd6QyxNQUFNMkIsV0FBTixTQUEwQmxCLGtCQUExQixDQUE2QztBQUMzQ0MsRUFBQUEsYUFBYSxDQUFFQyxPQUFGLEVBQVc7QUFDdEIsV0FBTztBQUNMLGdCQUFVLGFBREw7QUFFTCxnQkFBVUEsT0FBTyxDQUFDWCxNQUFSLENBQWUsV0FBZixDQUZMO0FBR0wsa0JBQVlXLE9BQU8sQ0FBQ1gsTUFBUixDQUFlLFVBQWYsQ0FIUDtBQUlMLGNBQVFXLE9BQU8sQ0FBQ1gsTUFBUixDQUFlLFNBQWY7QUFKSCxLQUFQO0FBTUQ7O0FBUjBDOztBQVc3QyxNQUFNNEIsS0FBTixTQUFvQm5CLGtCQUFwQixDQUF1QztBQUtyQ2hCLEVBQUFBLFdBQVcsQ0FBRW9DLElBQUYsRUFBUUMsUUFBUixFQUFrQjtBQUMzQjtBQUNBLFNBQUtDLEtBQUwsR0FBYUYsSUFBYjtBQUNBLFNBQUtHLFNBQUwsR0FBaUJGLFFBQWpCO0FBQ0Q7O0FBRURwQixFQUFBQSxhQUFhLENBQUVDLE9BQUYsRUFBVztBQUN0QixXQUFPO0FBQUNzQixNQUFBQSxNQUFNLEVBQUUsT0FBVDtBQUFrQkosTUFBQUEsSUFBSSxFQUFFbEIsT0FBTyxDQUFDWCxNQUFSLENBQWUsU0FBZixDQUF4QjtBQUFtRDhCLE1BQUFBLFFBQVEsRUFBRW5CLE9BQU8sQ0FBQ1gsTUFBUixDQUFlLGFBQWY7QUFBN0QsS0FBUDtBQUNEOztBQUVEYSxFQUFBQSxhQUFhLENBQUVDLEdBQUYsRUFBT0gsT0FBUCxFQUFnQjtBQUMzQkEsSUFBQUEsT0FBTyxDQUFDSixNQUFSLENBQWUsU0FBZixFQUEwQk8sR0FBRyxDQUFDaUIsS0FBOUI7QUFDQXBCLElBQUFBLE9BQU8sQ0FBQ0osTUFBUixDQUFlLGFBQWYsRUFBOEJPLEdBQUcsQ0FBQ2tCLFNBQWxDO0FBQ0Q7O0FBbEJvQzs7OztBQXFCdkMsTUFBTUUsTUFBTixTQUFxQnpCLGtCQUFyQixDQUF3QztBQUl0Q2hCLEVBQUFBLFdBQVcsQ0FBRTBDLElBQUYsRUFBUTtBQUNqQjtBQUNBLFNBQUtDLEtBQUwsR0FBYUQsSUFBYjtBQUNEOztBQUVEekIsRUFBQUEsYUFBYSxDQUFFQyxPQUFGLEVBQVc7QUFDdEIsV0FBT3BCLDJCQUEyQixHQUFHb0IsT0FBTyxDQUFDWCxNQUFSLENBQWUsU0FBZixDQUFyQztBQUNEOztBQUVEYSxFQUFBQSxhQUFhLENBQUVDLEdBQUYsRUFBT0gsT0FBUCxFQUFnQjtBQUMzQkEsSUFBQUEsT0FBTyxDQUFDSixNQUFSLENBQWUsU0FBZixFQUEwQk8sR0FBRyxDQUFDc0IsS0FBSixHQUFZN0MsMkJBQXRDO0FBQ0Q7O0FBZnFDOzs7O0FBa0J4QyxNQUFNOEMsZUFBTixTQUE4QjVCLGtCQUE5QixDQUFpRDtBQUMvQ0MsRUFBQUEsYUFBYSxDQUFFQyxPQUFGLEVBQVc7QUFDdEIsV0FBT0EsT0FBTyxDQUFDWCxNQUFSLENBQWUsV0FBZixDQUFQO0FBQ0Q7O0FBSDhDOztBQU1qRCxNQUFNc0MsYUFBTixTQUE0QjdCLGtCQUE1QixDQUErQztBQUM3Q0MsRUFBQUEsYUFBYSxDQUFFQyxPQUFGLEVBQVc7QUFDdEIsV0FBT0EsT0FBTyxDQUFDWCxNQUFSLENBQWUsU0FBZixDQUFQO0FBQ0Q7O0FBSDRDOztBQU0vQyxNQUFNdUMsTUFBTixTQUFxQjlCLGtCQUFyQixDQUF3QztBQUl0Q2hCLEVBQUFBLFdBQVcsQ0FBRTBDLElBQUYsRUFBUTtBQUNqQjtBQUNBLFNBQUtDLEtBQUwsR0FBYUQsSUFBYjtBQUNEOztBQUVEekIsRUFBQUEsYUFBYSxDQUFFQyxPQUFGLEVBQVc7QUFDdEIsV0FBTyxxQkFBY0EsT0FBTyxDQUFDWCxNQUFSLENBQWUsY0FBZixDQUFkLENBQVA7QUFDRDs7QUFFRGEsRUFBQUEsYUFBYSxDQUFFQyxHQUFGLEVBQU9ILE9BQVAsRUFBZ0I7QUFDM0JBLElBQUFBLE9BQU8sQ0FBQ04sV0FBUixDQUFvQixjQUFwQixJQUFzQ21DLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZLGlCQUFVM0IsR0FBRyxDQUFDc0IsS0FBZCxFQUFxQk0sTUFBakMsQ0FBdEM7QUFDRDs7QUFmcUM7Ozs7QUFrQnhDLE1BQU1DLGVBQU4sU0FBOEJsQyxrQkFBOUIsQ0FBaUQ7QUFDL0NDLEVBQUFBLGFBQWEsQ0FBRUMsT0FBRixFQUFXO0FBQ3RCLFdBQU9BLE9BQU8sQ0FBQ1gsTUFBUixDQUFlLHlCQUFmLENBQVA7QUFDRDs7QUFIOEM7O0FBTWpELE1BQU00QyxNQUFOLFNBQXFCbkMsa0JBQXJCLENBQXdDO0FBQ3RDQyxFQUFBQSxhQUFhLEdBQUk7QUFDZixXQUFPLElBQVA7QUFDRDs7QUFIcUM7O0FBU3hDLE1BQU1tQyxtQkFBbUIsR0FBRztBQUMxQnBCLEVBQUFBLGlCQUQwQjtBQUUxQnFCLEVBQUFBLGtCQUFrQixFQUFFckIsaUJBRk07QUFHMUJzQixFQUFBQSxxQkFBcUIsRUFBRXRCLGlCQUhHO0FBSTFCdUIsRUFBQUEsbUJBQW1CLEVBQUV2QixpQkFKSztBQUsxQndCLEVBQUFBLGtCQUFrQixFQUFFeEIsaUJBTE07QUFNMUJ5QixFQUFBQSxZQUFZLEVBQUV4QixPQU5ZO0FBTzFCeUIsRUFBQUEsZ0JBQWdCLEVBQUV4QixXQVBRO0FBUTFCeUIsRUFBQUEsWUFBWSxFQUFFckMsV0FSWTtBQVMxQnNDLEVBQUFBLG1CQUFtQixFQUFFdEMsV0FUSztBQVUxQnVDLEVBQUFBLE9BQU8sRUFBRWpDLFdBVmlCO0FBVzFCa0MsRUFBQUEsY0FBYyxFQUFFbEMsV0FYVTtBQVkxQm1DLEVBQUFBLFlBQVksRUFBRW5DLFdBWlk7QUFhMUJvQyxFQUFBQSxLQUFLLEVBQUVwQyxXQWJtQjtBQWMxQmEsRUFBQUEsTUFkMEI7QUFlMUJSLEVBQUFBLE9BZjBCO0FBZ0IxQkMsRUFBQUEsV0FoQjBCO0FBaUIxQlUsRUFBQUEsZUFqQjBCO0FBa0IxQkMsRUFBQUEsYUFsQjBCO0FBbUIxQk0sRUFBQUEsTUFuQjBCO0FBb0IxQkwsRUFBQUEsTUFwQjBCO0FBcUIxQlgsRUFBQUEsS0FyQjBCO0FBc0IxQmUsRUFBQUE7QUF0QjBCLENBQTVCOztBQThCQSxNQUFNZSxTQUFOLENBQWdCO0FBQ2RqRSxFQUFBQSxXQUFXLENBQUVrRSxVQUFGLEVBQWM7QUFDdkIsU0FBS0MsS0FBTCxHQUFhRCxVQUFiO0FBQ0EsU0FBS0UsWUFBTCxHQUFvQixFQUFwQjtBQUNBLFNBQUtDLE1BQUwsR0FBYzlFLFFBQWQ7QUFDQSxTQUFLK0UsT0FBTCxHQUFlLEVBQWY7QUFDRDs7QUFFREMsRUFBQUEsbUJBQW1CLEdBQUk7QUFDckIsVUFBTUMsS0FBSyxHQUFHaEYsc0JBQVNpRixXQUFULENBQXFCLEtBQUtOLEtBQTFCLEVBQWlDLENBQWpDLENBQWQ7O0FBQ0EsUUFBSUssS0FBSyxDQUFDRSxTQUFOLEtBQW9CN0UsZUFBeEIsRUFBeUM7QUFDdkMsWUFBTSxJQUFJc0IsS0FBSixDQUFXLHdCQUF1QnFELEtBQUssQ0FBQ0UsU0FBVSxFQUFsRCxDQUFOO0FBQ0Q7O0FBQ0QsUUFBSUYsS0FBSyxDQUFDRyxRQUFOLEtBQW1CckYsdUJBQXZCLEVBQWdEO0FBQzlDLFlBQU0sSUFBSTZCLEtBQUosQ0FBVyxZQUFXN0IsdUJBQXdCLFNBQVFrRixLQUFLLENBQUNHLFFBQVUsRUFBdEUsQ0FBTjtBQUNEOztBQUNELFVBQU1DLEdBQUcsR0FBR0osS0FBSyxDQUFDSyxJQUFsQjtBQUNBLFVBQU1SLE1BQU0sR0FBR08sR0FBRyxDQUFDRSxJQUFuQjs7QUFDQSxRQUFJLENBQUNULE1BQUwsRUFBYTtBQUNYLFlBQU0sSUFBSWxELEtBQUosQ0FBVyx3Q0FBdUM0RCxJQUFJLENBQUNDLFNBQUwsQ0FBZUosR0FBZixDQUFvQixFQUF0RSxDQUFOO0FBQ0Q7O0FBQ0QsU0FBS1AsTUFBTCxHQUFjQSxNQUFkO0FBQ0EsU0FBS0MsT0FBTCxHQUFlRSxLQUFLLENBQUNTLFFBQXJCO0FBQ0Q7O0FBS0RDLEVBQUFBLFdBQVcsQ0FBRTdFLEtBQUYsRUFBUztBQUNsQixVQUFNOEUsSUFBSSxHQUFHLEtBQUtiLE9BQUwsQ0FBYWpFLEtBQUssQ0FBQ1osR0FBbkIsQ0FBYjtBQUNBLFVBQU0yRixJQUFJLEdBQUdELElBQUksQ0FBQ0UsVUFBbEI7QUFDQSxVQUFNQyxLQUFLLEdBQUdsQyxtQkFBbUIsQ0FBQ2dDLElBQUQsQ0FBakM7O0FBQ0EsUUFBSSxDQUFDRSxLQUFMLEVBQVk7QUFDVixZQUFNLElBQUluRSxLQUFKLENBQVcsa0JBQWlCaUUsSUFBSyx5QkFBakMsQ0FBTjtBQUNEOztBQUNELFdBQU9FLEtBQVA7QUFDRDs7QUFFRDdFLEVBQUFBLFNBQVMsQ0FBRVksR0FBRixFQUFPYixHQUFQLEVBQVk7QUFDbkIsVUFBTU8sR0FBRyxHQUFHTSxHQUFHLENBQUNiLEdBQUQsQ0FBZjtBQUNBLFdBQU8rRSxnQkFBRUMsS0FBRixDQUFRekUsR0FBUixhQUFRQSxHQUFSLHVCQUFRQSxHQUFHLENBQUV0QixHQUFiLElBQW9Cc0IsR0FBcEIsR0FBMEIsS0FBS1QsWUFBTCxDQUFrQlMsR0FBbEIsQ0FBakM7QUFDRDs7QUFFRFQsRUFBQUEsWUFBWSxDQUFFRCxLQUFGLEVBQVM7QUFDbkIsUUFBSUEsS0FBSyxLQUFLZCxRQUFkLEVBQXdCO0FBQ3RCLGFBQU8sSUFBUDtBQUNEOztBQUNELFVBQU04QixHQUFHLEdBQUcsS0FBSytDLFlBQUwsQ0FBa0IvRCxLQUFsQixDQUFaOztBQUNBLFFBQUlnQixHQUFHLEtBQUszQixXQUFaLEVBQXlCO0FBQ3ZCLFlBQU0sSUFBSXlCLEtBQUosQ0FBVyw0QkFBMkJkLEtBQU0sRUFBNUMsQ0FBTjtBQUNEOztBQUNELFFBQUksQ0FBQ2tGLGdCQUFFRSxXQUFGLENBQWNwRSxHQUFkLENBQUwsRUFBeUI7QUFDdkIsYUFBT0EsR0FBUDtBQUNEOztBQUNELFVBQU1xRSxNQUFNLEdBQUcsS0FBS3BCLE9BQUwsQ0FBYWpFLEtBQUssQ0FBQ1osR0FBbkIsQ0FBZjtBQUNBLFNBQUsyRSxZQUFMLENBQWtCL0QsS0FBSyxDQUFDWixHQUF4QixJQUErQkMsV0FBL0I7O0FBRUEsUUFBSSxFQUFDZ0csTUFBRCxhQUFDQSxNQUFELGVBQUNBLE1BQU0sQ0FBRWxELE1BQVQsQ0FBSixFQUFxQjtBQUNuQixXQUFLNEIsWUFBTCxDQUFrQi9ELEtBQUssQ0FBQ1osR0FBeEIsSUFBK0I0QixHQUEvQjtBQUNBLGFBQU9xRSxNQUFQO0FBQ0Q7O0FBQ0QsVUFBTUosS0FBSyxHQUFHLEtBQUtKLFdBQUwsQ0FBaUJRLE1BQU0sQ0FBQ2xELE1BQXhCLENBQWQ7QUFDQSxVQUFNbUQsUUFBUSxHQUFHLElBQUlMLEtBQUosR0FBWXJFLGFBQVosQ0FBMEIsSUFBSWxCLGNBQUosQ0FBbUIyRixNQUFuQixFQUEyQixJQUEzQixDQUExQixDQUFqQjtBQUNBLFNBQUt0QixZQUFMLENBQWtCL0QsS0FBSyxDQUFDWixHQUF4QixJQUErQmtHLFFBQS9CO0FBQ0EsV0FBT0EsUUFBUDtBQUNEOztBQUVEQyxFQUFBQSxRQUFRLEdBQUk7QUFDVixTQUFLckIsbUJBQUw7QUFDQSxXQUFPLEtBQUtqRSxZQUFMLENBQWtCLEtBQUsrRCxNQUF2QixDQUFQO0FBQ0Q7O0FBdEVhOztBQThFaEIsTUFBTXdCLE9BQU4sQ0FBYztBQUNaN0YsRUFBQUEsV0FBVyxDQUFFOEYsV0FBRixFQUFlO0FBQ3hCLFNBQUszQixLQUFMLEdBQWEyQixXQUFiO0FBQ0EsU0FBS0MsUUFBTCxHQUFnQixFQUFoQjtBQUNBLFNBQUt6QixPQUFMLEdBQWUsQ0FBQyxPQUFELENBQWY7QUFDRDs7QUFFRDBCLEVBQUFBLGNBQWMsQ0FBRXJGLFFBQUYsRUFBWTtBQUN4QixRQUFJSSxHQUFHLEdBQUcsS0FBS2dGLFFBQUwsQ0FBY3BGLFFBQWQsQ0FBVjs7QUFDQSxRQUFJSSxHQUFKLEVBQVM7QUFDUCxhQUFPLElBQUl2QixzQkFBU0MsR0FBYixDQUFpQnNCLEdBQWpCLENBQVA7QUFDRDs7QUFDRCxTQUFLZ0YsUUFBTCxDQUFjcEYsUUFBZCxJQUEwQixLQUFLMkQsT0FBTCxDQUFhM0MsTUFBdkM7QUFDQVosSUFBQUEsR0FBRyxHQUFHLElBQUl2QixzQkFBU0MsR0FBYixDQUFpQixLQUFLNkUsT0FBTCxDQUFhM0MsTUFBOUIsQ0FBTjtBQUNBLFNBQUsyQyxPQUFMLENBQWEyQixJQUFiLENBQWtCO0FBQ2hCLGtCQUFZLENBQUN0RixRQUFELENBREk7QUFFaEIsb0JBQWNBO0FBRkUsS0FBbEI7QUFJQSxXQUFPSSxHQUFQO0FBQ0Q7O0FBRURHLEVBQUFBLE9BQU8sQ0FBRUcsR0FBRixFQUFPO0FBQ1osUUFBSWtFLGdCQUFFRSxXQUFGLENBQWNwRSxHQUFkLEtBQXNCa0UsZ0JBQUVXLE1BQUYsQ0FBUzdFLEdBQVQsQ0FBMUIsRUFBeUM7QUFDdkMsYUFBTzlCLFFBQVA7QUFDRDs7QUFDRCxVQUFNYyxLQUFLLEdBQUcsSUFBSWIsc0JBQVNDLEdBQWIsQ0FBaUIsS0FBSzZFLE9BQUwsQ0FBYTNDLE1BQTlCLENBQWQ7O0FBQ0EsUUFBSWhDLGVBQWUsQ0FBQ3dHLFFBQWhCLENBQXlCOUUsR0FBRyxDQUFDckIsV0FBSixDQUFnQm9GLElBQXpDLENBQUosRUFBb0Q7QUFDbEQsV0FBS2QsT0FBTCxDQUFhMkIsSUFBYixDQUFrQjVFLEdBQWxCO0FBQ0EsYUFBT2hCLEtBQVA7QUFDRDs7QUFDRCxVQUFNK0YsVUFBVSxHQUFHLEVBQW5CO0FBQ0EsU0FBSzlCLE9BQUwsQ0FBYTJCLElBQWIsQ0FBa0JHLFVBQWxCO0FBQ0EsU0FBS0MsY0FBTCxDQUFvQmhGLEdBQXBCLEVBQXlCK0UsVUFBekI7QUFDQSxXQUFPL0YsS0FBUDtBQUNEOztBQUVEUyxFQUFBQSxNQUFNLENBQUVDLEdBQUYsRUFBTztBQUNYLFFBQUluQixtQkFBbUIsQ0FBQ3VHLFFBQXBCLENBQTZCLE9BQU9wRixHQUFwQyxDQUFKLEVBQThDO0FBQzVDLGFBQU9BLEdBQVA7QUFDRDs7QUFDRCxXQUFPLEtBQUtHLE9BQUwsQ0FBYUgsR0FBYixDQUFQO0FBQ0Q7O0FBRURzRixFQUFBQSxjQUFjLENBQUVoRixHQUFGLEVBQU8rRSxVQUFQLEVBQW1CO0FBQy9CLFFBQUkvRSxHQUFHLFlBQVlpRixLQUFuQixFQUEwQjtBQUN4QixhQUFPLEtBQUtDLFdBQUwsQ0FBaUJsRixHQUFqQixFQUFzQitFLFVBQXRCLENBQVA7QUFDRCxLQUZELE1BRU8sSUFBSS9FLEdBQUcsWUFBWW1GLEdBQW5CLEVBQXdCO0FBQzdCLGFBQU8sS0FBS0MsU0FBTCxDQUFlcEYsR0FBZixFQUFvQitFLFVBQXBCLENBQVA7QUFDRCxLQUZNLE1BRUEsSUFBSS9FLEdBQUcsWUFBWXFGLE1BQW5CLEVBQTJCO0FBQ2hDLFlBQU1DLE9BQU8sR0FBR3RGLEdBQUcsQ0FBQ3JCLFdBQUosQ0FBZ0JvRixJQUFoQzs7QUFHQSxVQUFJdUIsT0FBTyxJQUFJdkQsbUJBQWYsRUFBb0M7QUFDbENnRCxRQUFBQSxVQUFVLENBQUM1RCxNQUFYLEdBQW9CLEtBQUt3RCxjQUFMLENBQW9CVyxPQUFwQixDQUFwQjtBQUNBdEYsUUFBQUEsR0FBRyxDQUFDRCxhQUFKLENBQWtCQyxHQUFsQixFQUF1QixJQUFJWCxlQUFKLENBQW9CMEYsVUFBcEIsRUFBZ0MsSUFBaEMsQ0FBdkI7QUFDRCxPQUhELE1BR087QUFDTCxlQUFPLEtBQUtRLFVBQUwsQ0FBZ0J2RixHQUFoQixFQUFxQitFLFVBQXJCLENBQVA7QUFDRDtBQUNGLEtBVk0sTUFVQTtBQUNMLFlBQU1qRixLQUFLLENBQUUsMkJBQTBCLE9BQU9FLEdBQUksRUFBdkMsQ0FBWDtBQUNEO0FBQ0Y7O0FBRURrRixFQUFBQSxXQUFXLENBQUVNLElBQUYsRUFBUVQsVUFBUixFQUFvQjtBQUM3QkEsSUFBQUEsVUFBVSxDQUFDNUQsTUFBWCxHQUFvQixLQUFLd0QsY0FBTCxDQUFvQixTQUFwQixDQUFwQjtBQUNBSSxJQUFBQSxVQUFVLENBQUMsWUFBRCxDQUFWLEdBQTJCUyxJQUFJLENBQUMvRSxHQUFMLENBQVMsS0FBS1osT0FBTCxDQUFhYSxJQUFiLENBQWtCLElBQWxCLENBQVQsQ0FBM0I7QUFDRDs7QUFFRDBFLEVBQUFBLFNBQVMsQ0FBRUksSUFBRixFQUFRVCxVQUFSLEVBQW9CO0FBQzNCQSxJQUFBQSxVQUFVLENBQUM1RCxNQUFYLEdBQW9CLEtBQUt3RCxjQUFMLENBQW9CLE9BQXBCLENBQXBCO0FBQ0FJLElBQUFBLFVBQVUsQ0FBQyxZQUFELENBQVYsR0FBMkJTLElBQUksQ0FBQy9FLEdBQUwsQ0FBUyxLQUFLWixPQUFMLENBQWFhLElBQWIsQ0FBa0IsSUFBbEIsQ0FBVCxDQUEzQjtBQUNEOztBQUVENkUsRUFBQUEsVUFBVSxDQUFFdkYsR0FBRixFQUFPK0UsVUFBUCxFQUFtQjtBQUMzQkEsSUFBQUEsVUFBVSxDQUFDNUQsTUFBWCxHQUFvQixLQUFLd0QsY0FBTCxDQUFvQixjQUFwQixDQUFwQjtBQUNBSSxJQUFBQSxVQUFVLENBQUMsU0FBRCxDQUFWLEdBQXdCYixnQkFBRXVCLElBQUYsQ0FBT3pGLEdBQVAsRUFBWVMsR0FBWixDQUFnQixLQUFLWixPQUFMLENBQWFhLElBQWIsQ0FBa0IsSUFBbEIsQ0FBaEIsQ0FBeEI7QUFDQXFFLElBQUFBLFVBQVUsQ0FBQyxZQUFELENBQVYsR0FBMkJiLGdCQUFFd0IsTUFBRixDQUFTMUYsR0FBVCxFQUFjUyxHQUFkLENBQWtCLEtBQUtaLE9BQUwsQ0FBYWEsSUFBYixDQUFrQixJQUFsQixDQUFsQixDQUEzQjtBQUNEOztBQUVEaUYsRUFBQUEsT0FBTyxHQUFJO0FBQ1QsUUFBSSxLQUFLMUMsT0FBTCxDQUFhM0MsTUFBYixLQUF3QixDQUE1QixFQUErQjtBQUM3QixXQUFLVCxPQUFMLENBQWEsS0FBS2lELEtBQWxCO0FBQ0Q7O0FBQ0QsVUFBTTFDLENBQUMsR0FBRztBQUNSLGtCQUFZbkMsdUJBREo7QUFFUixtQkFBYU8sZUFGTDtBQUdSLGNBQVE7QUFBQyxnQkFBUSxJQUFJTCxzQkFBU0MsR0FBYixDQUFpQixDQUFqQjtBQUFULE9BSEE7QUFJUixrQkFBWSxLQUFLNkU7QUFKVCxLQUFWO0FBTUEsV0FBTyw0QkFBYTdDLENBQWIsQ0FBUDtBQUNEOztBQTFGVzs7QUFrR2QsU0FBU1AsT0FBVCxDQUFrQjRFLFdBQWxCLEVBQStCO0FBQzdCLFNBQU8sSUFBSUQsT0FBSixDQUFZQyxXQUFaLEVBQXlCa0IsT0FBekIsRUFBUDtBQUNEOztBQU9ELFNBQVNDLFNBQVQsQ0FBb0IvQyxVQUFwQixFQUFnQztBQUM5QixTQUFPLElBQUlELFNBQUosQ0FBY0MsVUFBZCxFQUEwQjBCLFFBQTFCLEVBQVA7QUFDRDs7QUFPRCxTQUFTc0IseUJBQVQsQ0FBb0M5QixJQUFwQyxFQUEwQytCLFFBQTFDLEVBQW9EO0FBQUE7O0FBQ2xELE1BQUksQ0FBQzVCLGdCQUFFNkIsVUFBRix3QkFBYUQsUUFBUSxDQUFDRSxTQUF0Qix3REFBYSxvQkFBb0JwRyxhQUFqQyxDQUFELElBQW9ELENBQUNzRSxnQkFBRTZCLFVBQUYseUJBQWFELFFBQVEsQ0FBQ0UsU0FBdEIseURBQWEscUJBQW9CakcsYUFBakMsQ0FBekQsRUFBMEc7QUFDeEcsVUFBTUQsS0FBSyxDQUFDLDJEQUFELENBQVg7QUFDRDs7QUFDRCxNQUFJLEVBQUVpRSxJQUFJLElBQUloQyxtQkFBVixDQUFKLEVBQW9DO0FBQ2xDQSxJQUFBQSxtQkFBbUIsQ0FBQ2dDLElBQUQsQ0FBbkIsR0FBNEIrQixRQUE1QjtBQUNEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGxpc3RsaWIgZnJvbSAnYnBsaXN0LXBhcnNlcic7XG5pbXBvcnQgYnBsaXN0Q3JlYXRlIGZyb20gJ2JwbGlzdC1jcmVhdG9yJztcbmltcG9ydCB7cGFyc2UgYXMgdXVpZFBhcnNlLCBzdHJpbmdpZnkgYXMgdXVpZFN0cmluZ2lmeX0gZnJvbSAndXVpZCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBOU0tFWUVEX0FSQ0hJVkVfVkVSU0lPTiA9IDEwMF8wMDA7XG5jb25zdCBOVUxMX1VJRCA9IG5ldyBwbGlzdGxpYi5VSUQoMCk7XG5jb25zdCBDWUNMRV9UT0tFTiA9ICdDeWNsZVRva2VuJztcbmNvbnN0IFBSSU1JVElWRV9UWVBFUyA9IFsnTnVtYmVyJywgJ1N0cmluZycsICdCb29sZWFuJywgJ1VJRCcsICdCdWZmZXInXTtcbmNvbnN0IE5PTl9FTkNPREFCTEVfVFlQRVMgPSBbJ251bWJlcicsICdib29sZWFuJ107XG5jb25zdCBOU0tFWUVEQVJDSElWRVIgPSAnTlNLZXllZEFyY2hpdmVyJztcbmNvbnN0IFVOSVgyQVBQTEVfVElNRVNUQU1QX1NFQ09ORCA9IDk3ODMwNzIwMDtcblxuXG5jbGFzcyBBcmNoaXZlZE9iamVjdCB7XG4gIC8qKlxuICAgKiBTdGF0ZWZ1bCB3cmFwcGVyIGFyb3VuZCBBcmNoaXZlIGZvciBhbiBvYmplY3QgYmVpbmcgYXJjaGl2ZWQuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3RcbiAgICogQHBhcmFtIHtVbmFyY2hpdmV9IHVuYXJjaGl2ZXJcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3RvciAob2JqZWN0LCB1bmFyY2hpdmVyKSB7XG4gICAgdGhpcy5vYmplY3QgPSBvYmplY3Q7XG4gICAgdGhpcy5fdW5hcmNoaXZlciA9IHVuYXJjaGl2ZXI7XG4gIH1cblxuICBkZWNvZGVJbmRleCAoaW5kZXgpIHtcbiAgICByZXR1cm4gdGhpcy5fdW5hcmNoaXZlci5kZWNvZGVPYmplY3QoaW5kZXgpO1xuICB9XG5cbiAgZGVjb2RlIChrZXkpIHtcbiAgICByZXR1cm4gdGhpcy5fdW5hcmNoaXZlci5kZWNvZGVLZXkodGhpcy5vYmplY3QsIGtleSk7XG4gIH1cbn1cblxuY2xhc3MgQXJjaGl2aW5nT2JqZWN0IHtcbiAgLyoqXG4gICAqIFN0YXRlZnVsIHdyYXBwZXIgYXJvdW5kIFVuYXJjaGl2ZSBmb3IgYW4gYXJjaGl2ZWQgb2JqZWN0XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3RcbiAgICogQHBhcmFtIHtBcmNoaXZlfSBhcmNoaXZlclxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yIChvYmplY3QsIGFyY2hpdmVyKSB7XG4gICAgdGhpcy5fYXJjaGl2ZU9iaiA9IG9iamVjdDtcbiAgICB0aGlzLl9hcmNoaXZlciA9IGFyY2hpdmVyO1xuICB9XG5cbiAgZW5jb2RlIChrZXksIHZhbCkge1xuICAgIHRoaXMuX2FyY2hpdmVPYmpba2V5XSA9IHRoaXMuX2FyY2hpdmVyLmVuY29kZSh2YWwpO1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBjbGFzcyBtdXN0IGJlIGluaGVyaXRlZCB3aGVuIGNyZWF0aW5nIGFuIGFyY2hpdmUvdW5hcmNoaXZlIHN1YmNsYXNzXG4gKiBBbmQgeW91IG5lZWQgdG8gY2FsbCBgdXBkYXRlTlNLZXllZEFyY2hpdmVDbGFzc2AgYWRkIHN1YmNsYXNzIHRvIGFyY2hpdmUvdW5hcmNoaXZlIG9iamVjdFxuICovXG5jbGFzcyBCYXNlQXJjaGl2ZUhhbmRsZXIge1xuICAvKipcbiAgICogQHBhcmFtIHtBcmNoaXZlZE9iamVjdH0gYXJjaGl2ZVxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGRlY29kZUFyY2hpdmUgKGFyY2hpdmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYERpZCBub3Qga25vdyBob3cgdG8gZGVjb2RlIHRoZSBvYmplY3RgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqICBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzXG4gICAqIEBwYXJhbSB7QXJjaGl2aW5nT2JqZWN0fSBhcmNoaXZlXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgZW5jb2RlQXJjaGl2ZSAob2JqLCBhcmNoaXZlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEaWQgbm90IGtub3cgaG93IHRvIGVuY29kZSB0aGUgb2JqZWN0YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBcIkRlbGVnYXRlIGZvciBwYWNraW5nL3VucGFja2luZyBOUyhNdXRhYmxlKURpY3Rpb25hcnkgb2JqZWN0c1wiXG4gKi9cbmNsYXNzIERpY3RBcmNoaXZlIGV4dGVuZHMgQmFzZUFyY2hpdmVIYW5kbGVyIHtcbiAgZGVjb2RlQXJjaGl2ZSAoYXJjaGl2ZSkge1xuICAgIGNvbnN0IGtleVVpZHMgPSBhcmNoaXZlLmRlY29kZSgnTlMua2V5cycpO1xuICAgIGNvbnN0IHZhbFVpZHMgPSBhcmNoaXZlLmRlY29kZSgnTlMub2JqZWN0cycpO1xuICAgIGNvbnN0IGQgPSB7fTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleVVpZHMubGVuZ3RoIDsgaSsrKSB7XG4gICAgICBjb25zdCBrZXkgPSBhcmNoaXZlLmRlY29kZUluZGV4KGtleVVpZHNbaV0pO1xuICAgICAgZFtrZXldID0gYXJjaGl2ZS5kZWNvZGVJbmRleCh2YWxVaWRzW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIGQ7XG4gIH1cbn1cblxuLyoqXG4gKiBEZWxlZ2F0ZSBmb3IgcGFja2luZy91bnBhY2tpbmcgTlMoTXV0YWJsZSlBcnJheSBvYmplY3RzXG4gKi9cbmNsYXNzIExpc3RBcmNoaXZlIGV4dGVuZHMgQmFzZUFyY2hpdmVIYW5kbGVyIHtcbiAgZGVjb2RlQXJjaGl2ZSAoYXJjaGl2ZSkge1xuICAgIGNvbnN0IHVpZHMgPSBhcmNoaXZlLmRlY29kZSgnTlMub2JqZWN0cycpO1xuICAgIHJldHVybiB1aWRzLm1hcChhcmNoaXZlLmRlY29kZUluZGV4LmJpbmQoYXJjaGl2ZSkpO1xuICB9XG59XG5cbmNsYXNzIERUVGFwTWVzc2FnZVBsaXN0IGV4dGVuZHMgQmFzZUFyY2hpdmVIYW5kbGVyIHtcbiAgZGVjb2RlQXJjaGl2ZSAoYXJjaGl2ZSkge1xuICAgIHJldHVybiBhcmNoaXZlLmRlY29kZSgnRFRUYXBNZXNzYWdlUGxpc3QnKTtcbiAgfVxufVxuXG5jbGFzcyBOU0Vycm9yIGV4dGVuZHMgQmFzZUFyY2hpdmVIYW5kbGVyIHtcbiAgZGVjb2RlQXJjaGl2ZSAoYXJjaGl2ZSkge1xuICAgIHJldHVybiB7XG4gICAgICAnJGNsYXNzJzogJ05TRXJyb3InLFxuICAgICAgJ2RvbWFpbic6IGFyY2hpdmUuZGVjb2RlKCdOU0RvbWFpbicpLFxuICAgICAgJ3VzZXJpbmZvJzogYXJjaGl2ZS5kZWNvZGUoJ05TVXNlckluZm8nKSxcbiAgICAgICdjb2RlJzogYXJjaGl2ZS5kZWNvZGUoJ05TQ29kZScpXG4gICAgfTtcbiAgfVxufVxuXG5jbGFzcyBOU0V4Y2VwdGlvbiBleHRlbmRzIEJhc2VBcmNoaXZlSGFuZGxlciB7XG4gIGRlY29kZUFyY2hpdmUgKGFyY2hpdmUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJyRjbGFzcyc6ICdOU0V4Y2VwdGlvbicsXG4gICAgICAncmVhc29uJzogYXJjaGl2ZS5kZWNvZGUoJ05TLnJlYXNvbicpLFxuICAgICAgJ3VzZXJpbmZvJzogYXJjaGl2ZS5kZWNvZGUoJ3VzZXJpbmZvJyksXG4gICAgICAnbmFtZSc6IGFyY2hpdmUuZGVjb2RlKCdOUy5uYW1lJylcbiAgICB9O1xuICB9XG59XG5cbmNsYXNzIE5TVVJMIGV4dGVuZHMgQmFzZUFyY2hpdmVIYW5kbGVyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7Kn0gYmFzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpdmUgdXN1YWxseSBpb3MgZGV2aWNlIHJlbGF0aXZlIHBhdGggZS5nOiBmaWxlOi8veHgvXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoYmFzZSwgcmVsYXRpdmUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2Jhc2UgPSBiYXNlO1xuICAgIHRoaXMuX3JlbGF0aXZlID0gcmVsYXRpdmU7XG4gIH1cblxuICBkZWNvZGVBcmNoaXZlIChhcmNoaXZlKSB7XG4gICAgcmV0dXJuIHskY2xhc3M6ICdOU1VSTCcsIGJhc2U6IGFyY2hpdmUuZGVjb2RlKCdOUy5iYXNlJyksIHJlbGF0aXZlOiBhcmNoaXZlLmRlY29kZSgnTlMucmVsYXRpdmUnKX07XG4gIH1cblxuICBlbmNvZGVBcmNoaXZlIChvYmosIGFyY2hpdmUpIHtcbiAgICBhcmNoaXZlLmVuY29kZSgnTlMuYmFzZScsIG9iai5fYmFzZSk7XG4gICAgYXJjaGl2ZS5lbmNvZGUoJ05TLnJlbGF0aXZlJywgb2JqLl9yZWxhdGl2ZSk7XG4gIH1cbn1cblxuY2xhc3MgTlNEYXRlIGV4dGVuZHMgQmFzZUFyY2hpdmVIYW5kbGVyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkYXRhIHRpbWVzdGFtcCBpbiBzZWNvbmRzXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoZGF0YSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gIH1cblxuICBkZWNvZGVBcmNoaXZlIChhcmNoaXZlKSB7XG4gICAgcmV0dXJuIFVOSVgyQVBQTEVfVElNRVNUQU1QX1NFQ09ORCArIGFyY2hpdmUuZGVjb2RlKCdOUy50aW1lJyk7XG4gIH1cblxuICBlbmNvZGVBcmNoaXZlIChvYmosIGFyY2hpdmUpIHtcbiAgICBhcmNoaXZlLmVuY29kZSgnTlMudGltZScsIG9iai5fZGF0YSAtIFVOSVgyQVBQTEVfVElNRVNUQU1QX1NFQ09ORCk7XG4gIH1cbn1cblxuY2xhc3MgTlNNdXRhYmxlU3RyaW5nIGV4dGVuZHMgQmFzZUFyY2hpdmVIYW5kbGVyIHtcbiAgZGVjb2RlQXJjaGl2ZSAoYXJjaGl2ZSkge1xuICAgIHJldHVybiBhcmNoaXZlLmRlY29kZSgnTlMuc3RyaW5nJyk7XG4gIH1cbn1cblxuY2xhc3MgTlNNdXRhYmxlRGF0YSBleHRlbmRzIEJhc2VBcmNoaXZlSGFuZGxlciB7XG4gIGRlY29kZUFyY2hpdmUgKGFyY2hpdmUpIHtcbiAgICByZXR1cm4gYXJjaGl2ZS5kZWNvZGUoJ05TLmRhdGEnKTtcbiAgfVxufVxuXG5jbGFzcyBOU1VVSUQgZXh0ZW5kcyBCYXNlQXJjaGl2ZUhhbmRsZXIge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgdXVpZCBmb3JtYXQgZGF0YSBlLmc6MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoZGF0YSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gIH1cblxuICBkZWNvZGVBcmNoaXZlIChhcmNoaXZlKSB7XG4gICAgcmV0dXJuIHV1aWRTdHJpbmdpZnkoYXJjaGl2ZS5kZWNvZGUoJ05TLnV1aWRieXRlcycpKTtcbiAgfVxuXG4gIGVuY29kZUFyY2hpdmUgKG9iaiwgYXJjaGl2ZSkge1xuICAgIGFyY2hpdmUuX2FyY2hpdmVPYmpbJ05TLnV1aWRieXRlcyddID0gQnVmZmVyLmZyb20odXVpZFBhcnNlKG9iai5fZGF0YSkuYnVmZmVyKTtcbiAgfVxufVxuXG5jbGFzcyBYQ1RDYXBhYmlsaXRpZXMgZXh0ZW5kcyBCYXNlQXJjaGl2ZUhhbmRsZXIge1xuICBkZWNvZGVBcmNoaXZlIChhcmNoaXZlKSB7XG4gICAgcmV0dXJuIGFyY2hpdmUuZGVjb2RlKCdjYXBhYmlsaXRpZXMtZGljdGlvbmFyeScpO1xuICB9XG59XG5cbmNsYXNzIE5TTnVsbCBleHRlbmRzIEJhc2VBcmNoaXZlSGFuZGxlciB7XG4gIGRlY29kZUFyY2hpdmUgKCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogZGVjb2RlIGFuZCBlbmNvZGUgQXJjaGl2ZSBvZiBjdXJyZW50bHkga25vd24gZGF0YSBmb3JtYXRzXG4gKi9cbmNvbnN0IFVOQVJDSElWRV9DTEFTU19NQVAgPSB7XG4gIERUVGFwTWVzc2FnZVBsaXN0LFxuICBEVFN5c21vblRhcE1lc3NhZ2U6IERUVGFwTWVzc2FnZVBsaXN0LFxuICBEVFRhcEhlYXJ0YmVhdE1lc3NhZ2U6IERUVGFwTWVzc2FnZVBsaXN0LFxuICBEVFRhcE1lc3NhZ2VBcmNoaXZlOiBEVFRhcE1lc3NhZ2VQbGlzdCxcbiAgRFRLVHJhY2VUYXBNZXNzYWdlOiBEVFRhcE1lc3NhZ2VQbGlzdCxcbiAgRXJyb3JBcmNoaXZlOiBOU0Vycm9yLFxuICBFeGNlcHRpb25BcmNoaXZlOiBOU0V4Y2VwdGlvbixcbiAgTlNEaWN0aW9uYXJ5OiBEaWN0QXJjaGl2ZSxcbiAgTlNNdXRhYmxlRGljdGlvbmFyeTogRGljdEFyY2hpdmUsXG4gIE5TQXJyYXk6IExpc3RBcmNoaXZlLFxuICBOU011dGFibGVBcnJheTogTGlzdEFyY2hpdmUsXG4gIE5TTXV0YWJsZVNldDogTGlzdEFyY2hpdmUsXG4gIE5TU2V0OiBMaXN0QXJjaGl2ZSxcbiAgTlNEYXRlLFxuICBOU0Vycm9yLFxuICBOU0V4Y2VwdGlvbixcbiAgTlNNdXRhYmxlU3RyaW5nLFxuICBOU011dGFibGVEYXRhLFxuICBOU051bGwsXG4gIE5TVVVJRCxcbiAgTlNVUkwsXG4gIFhDVENhcGFiaWxpdGllc1xufTtcblxuLyoqXG4gKiBDYXBhYmxlIG9mIHVucGFja2luZyBhbiBhcmNoaXZlZCBvYmplY3QgdHJlZSBpbiB0aGUgTlNLZXllZEFyY2hpdmUgZm9ybWF0LlxuICogQXBwbGUncyBpbXBsZW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgaGVyZTpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9zd2lmdC1jb3JlbGlicy1mb3VuZGF0aW9uL2Jsb2IvbWFpbi9Tb3VyY2VzL0ZvdW5kYXRpb24vTlNLZXllZFVuYXJjaGl2ZXIuc3dpZnRcbiAqL1xuY2xhc3MgVW5hcmNoaXZlIHtcbiAgY29uc3RydWN0b3IgKGlucHV0Qnl0ZXMpIHtcbiAgICB0aGlzLmlucHV0ID0gaW5wdXRCeXRlcztcbiAgICB0aGlzLnVucGFja2VkVWlkcyA9IHt9O1xuICAgIHRoaXMudG9wVUlEID0gTlVMTF9VSUQ7XG4gICAgdGhpcy5vYmplY3RzID0gW107XG4gIH1cblxuICB1bnBhY2tBcmNoaXZlSGVhZGVyICgpIHtcbiAgICBjb25zdCBwbGlzdCA9IHBsaXN0bGliLnBhcnNlQnVmZmVyKHRoaXMuaW5wdXQpWzBdO1xuICAgIGlmIChwbGlzdC4kYXJjaGl2ZXIgIT09IE5TS0VZRURBUkNISVZFUikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCBlbmNvZGVyOiAke3BsaXN0LiRhcmNoaXZlcn1gKTtcbiAgICB9XG4gICAgaWYgKHBsaXN0LiR2ZXJzaW9uICE9PSBOU0tFWUVEX0FSQ0hJVkVfVkVSU0lPTikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke05TS0VZRURfQVJDSElWRV9WRVJTSU9OfSwgZ290ICR7cGxpc3QuJHZlcnNpb24gfWApO1xuICAgIH1cbiAgICBjb25zdCB0b3AgPSBwbGlzdC4kdG9wO1xuICAgIGNvbnN0IHRvcFVJRCA9IHRvcC5yb290O1xuICAgIGlmICghdG9wVUlEKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHRvcCBvYmplY3QgZGlkIG5vdCBoYXZlIGEgVUlEISBkdW1wOiAke0pTT04uc3RyaW5naWZ5KHRvcCl9YCk7XG4gICAgfVxuICAgIHRoaXMudG9wVUlEID0gdG9wVUlEO1xuICAgIHRoaXMub2JqZWN0cyA9IHBsaXN0LiRvYmplY3RzO1xuICB9XG5cbiAgLyoqXG4gICAqIHVzZSB0aGUgVU5BUkNISVZFX0NMQVNTX01BUCB0byBmaW5kIHRoZSB1bmFyY2hpdmluZyBkZWxlZ2F0ZSBvZiBhIHVpZFxuICAgKi9cbiAgY2xhc3NGb3JVaWQgKGluZGV4KSB7XG4gICAgY29uc3QgbWV0YSA9IHRoaXMub2JqZWN0c1tpbmRleC5VSURdO1xuICAgIGNvbnN0IG5hbWUgPSBtZXRhLiRjbGFzc25hbWU7XG4gICAgY29uc3Qga2xhc3MgPSBVTkFSQ0hJVkVfQ0xBU1NfTUFQW25hbWVdO1xuICAgIGlmICgha2xhc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgbm8gbWFwcGluZyBmb3IgJHtuYW1lfSBpbiBVTkFSQ0hJVkVfQ0xBU1NfTUFQYCk7XG4gICAgfVxuICAgIHJldHVybiBrbGFzcztcbiAgfVxuXG4gIGRlY29kZUtleSAob2JqLCBrZXkpIHtcbiAgICBjb25zdCB2YWwgPSBvYmpba2V5XTtcbiAgICByZXR1cm4gXy5pc05pbCh2YWw/LlVJRCkgPyB2YWwgOiB0aGlzLmRlY29kZU9iamVjdCh2YWwpO1xuICB9XG5cbiAgZGVjb2RlT2JqZWN0IChpbmRleCkge1xuICAgIGlmIChpbmRleCA9PT0gTlVMTF9VSUQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBvYmogPSB0aGlzLnVucGFja2VkVWlkc1tpbmRleF07XG4gICAgaWYgKG9iaiA9PT0gQ1lDTEVfVE9LRU4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgYXJjaGl2ZSBoYXMgYSBjeWNsZSB3aXRoICR7aW5kZXh9YCk7XG4gICAgfVxuICAgIGlmICghXy5pc1VuZGVmaW5lZChvYmopKSB7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH1cbiAgICBjb25zdCByYXdPYmogPSB0aGlzLm9iamVjdHNbaW5kZXguVUlEXTtcbiAgICB0aGlzLnVucGFja2VkVWlkc1tpbmRleC5VSURdID0gQ1lDTEVfVE9LRU47XG5cbiAgICBpZiAoIXJhd09iaj8uJGNsYXNzKSB7XG4gICAgICB0aGlzLnVucGFja2VkVWlkc1tpbmRleC5VSURdID0gb2JqO1xuICAgICAgcmV0dXJuIHJhd09iajtcbiAgICB9XG4gICAgY29uc3Qga2xhc3MgPSB0aGlzLmNsYXNzRm9yVWlkKHJhd09iai4kY2xhc3MpO1xuICAgIGNvbnN0IGtsYXNzT2JqID0gbmV3IGtsYXNzKCkuZGVjb2RlQXJjaGl2ZShuZXcgQXJjaGl2ZWRPYmplY3QocmF3T2JqLCB0aGlzKSk7XG4gICAgdGhpcy51bnBhY2tlZFVpZHNbaW5kZXguVUlEXSA9IGtsYXNzT2JqO1xuICAgIHJldHVybiBrbGFzc09iajtcbiAgfVxuXG4gIHRvT2JqZWN0ICgpIHtcbiAgICB0aGlzLnVucGFja0FyY2hpdmVIZWFkZXIoKTtcbiAgICByZXR1cm4gdGhpcy5kZWNvZGVPYmplY3QodGhpcy50b3BVSUQpO1xuICB9XG59XG5cbi8qKlxuICogQ2FwYWJsZSBvZiBwYWNraW5nIGFuIG9iamVjdCB0cmVlIGludG8gdGhlIE5TS2V5ZWRBcmNoaXZlIGZvcm1hdC5cbiAqIEFwcGxlJ3MgaW1wbGVtZW50YXRpb24gY2FuIGJlIGZvdW5kIGhlcmU6XG4gKiBodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvc3dpZnQtY29yZWxpYnMtZm91bmRhdGlvbi9ibG9iL21haW4vU291cmNlcy9Gb3VuZGF0aW9uL05TS2V5ZWRBcmNoaXZlci5zd2lmdFxuICovXG5jbGFzcyBBcmNoaXZlIHtcbiAgY29uc3RydWN0b3IgKGlucHV0T2JqZWN0KSB7XG4gICAgdGhpcy5pbnB1dCA9IGlucHV0T2JqZWN0O1xuICAgIHRoaXMuY2xhc3NNYXAgPSB7fTtcbiAgICB0aGlzLm9iamVjdHMgPSBbJyRudWxsJ107IC8vIG9iamVjdHMgdGhhdCBnbyBkaXJlY3RseSBpbnRvIHRoZSBhcmNoaXZlLCBhbHdheXMgc3RhcnQgd2l0aCAkbnVsbFxuICB9XG5cbiAgdWlkRm9yQXJjaGl2ZXIgKGFyY2hpdmVyKSB7XG4gICAgbGV0IHZhbCA9IHRoaXMuY2xhc3NNYXBbYXJjaGl2ZXJdO1xuICAgIGlmICh2YWwpIHtcbiAgICAgIHJldHVybiBuZXcgcGxpc3RsaWIuVUlEKHZhbCk7XG4gICAgfVxuICAgIHRoaXMuY2xhc3NNYXBbYXJjaGl2ZXJdID0gdGhpcy5vYmplY3RzLmxlbmd0aDtcbiAgICB2YWwgPSBuZXcgcGxpc3RsaWIuVUlEKHRoaXMub2JqZWN0cy5sZW5ndGgpO1xuICAgIHRoaXMub2JqZWN0cy5wdXNoKHtcbiAgICAgICckY2xhc3Nlcyc6IFthcmNoaXZlcl0sXG4gICAgICAnJGNsYXNzbmFtZSc6IGFyY2hpdmVyXG4gICAgfSk7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIGFyY2hpdmUgKG9iaikge1xuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9iaikgfHwgXy5pc051bGwob2JqKSkge1xuICAgICAgcmV0dXJuIE5VTExfVUlEO1xuICAgIH1cbiAgICBjb25zdCBpbmRleCA9IG5ldyBwbGlzdGxpYi5VSUQodGhpcy5vYmplY3RzLmxlbmd0aCk7XG4gICAgaWYgKFBSSU1JVElWRV9UWVBFUy5pbmNsdWRlcyhvYmouY29uc3RydWN0b3IubmFtZSkpIHtcbiAgICAgIHRoaXMub2JqZWN0cy5wdXNoKG9iaik7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICAgIGNvbnN0IGFyY2hpdmVPYmogPSB7fTtcbiAgICB0aGlzLm9iamVjdHMucHVzaChhcmNoaXZlT2JqKTtcbiAgICB0aGlzLmVuY29kZVRvcExldmVsKG9iaiwgYXJjaGl2ZU9iaik7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgZW5jb2RlICh2YWwpIHtcbiAgICBpZiAoTk9OX0VOQ09EQUJMRV9UWVBFUy5pbmNsdWRlcyh0eXBlb2YgdmFsKSkge1xuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXJjaGl2ZSh2YWwpO1xuICB9XG5cbiAgZW5jb2RlVG9wTGV2ZWwgKG9iaiwgYXJjaGl2ZU9iaikge1xuICAgIGlmIChvYmogaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgcmV0dXJuIHRoaXMuZW5jb2RlQXJyYXkob2JqLCBhcmNoaXZlT2JqKTtcbiAgICB9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgcmV0dXJuIHRoaXMuZW5jb2RlU2V0KG9iaiwgYXJjaGl2ZU9iaik7XG4gICAgfSBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgIGNvbnN0IG9iak5hbWUgPSBvYmouY29uc3RydWN0b3IubmFtZTtcbiAgICAgIC8vIE9ubHkgc3BlY2lhbCBjbGFzcyBpbnN0YW5jZSBhcmUgdXNlZnVsLCBzdWNoIGFzIE5TVVJMLCBOU1VVSUQsIE5TRGF0ZS5cbiAgICAgIC8vIEFuZCB0aGlzIGNsYXNzIG11c3QgYWxzbyBoYXZlIHRoZSBlbmNvZGVBcmNoaXZlIG1ldGhvZFxuICAgICAgaWYgKG9iak5hbWUgaW4gVU5BUkNISVZFX0NMQVNTX01BUCkge1xuICAgICAgICBhcmNoaXZlT2JqLiRjbGFzcyA9IHRoaXMudWlkRm9yQXJjaGl2ZXIob2JqTmFtZSk7XG4gICAgICAgIG9iai5lbmNvZGVBcmNoaXZlKG9iaiwgbmV3IEFyY2hpdmluZ09iamVjdChhcmNoaXZlT2JqLCB0aGlzKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5lbmNvZGVEaWN0KG9iaiwgYXJjaGl2ZU9iaik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IEVycm9yKGBVbmFibGUgdG8gZW5jb2RlIHR5cGVzOiAke3R5cGVvZiBvYmp9YCk7XG4gICAgfVxuICB9XG5cbiAgZW5jb2RlQXJyYXkgKG9ianMsIGFyY2hpdmVPYmopIHtcbiAgICBhcmNoaXZlT2JqLiRjbGFzcyA9IHRoaXMudWlkRm9yQXJjaGl2ZXIoJ05TQXJyYXknKTtcbiAgICBhcmNoaXZlT2JqWydOUy5vYmplY3RzJ10gPSBvYmpzLm1hcCh0aGlzLmFyY2hpdmUuYmluZCh0aGlzKSk7XG4gIH1cblxuICBlbmNvZGVTZXQgKG9ianMsIGFyY2hpdmVPYmopIHtcbiAgICBhcmNoaXZlT2JqLiRjbGFzcyA9IHRoaXMudWlkRm9yQXJjaGl2ZXIoJ05TU2V0Jyk7XG4gICAgYXJjaGl2ZU9ialsnTlMub2JqZWN0cyddID0gb2Jqcy5tYXAodGhpcy5hcmNoaXZlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgZW5jb2RlRGljdCAob2JqLCBhcmNoaXZlT2JqKSB7XG4gICAgYXJjaGl2ZU9iai4kY2xhc3MgPSB0aGlzLnVpZEZvckFyY2hpdmVyKCdOU0RpY3Rpb25hcnknKTtcbiAgICBhcmNoaXZlT2JqWydOUy5rZXlzJ10gPSBfLmtleXMob2JqKS5tYXAodGhpcy5hcmNoaXZlLmJpbmQodGhpcykpO1xuICAgIGFyY2hpdmVPYmpbJ05TLm9iamVjdHMnXSA9IF8udmFsdWVzKG9iaikubWFwKHRoaXMuYXJjaGl2ZS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHRvQnl0ZXMgKCkge1xuICAgIGlmICh0aGlzLm9iamVjdHMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLmFyY2hpdmUodGhpcy5pbnB1dCk7XG4gICAgfVxuICAgIGNvbnN0IGQgPSB7XG4gICAgICAnJHZlcnNpb24nOiBOU0tFWUVEX0FSQ0hJVkVfVkVSU0lPTixcbiAgICAgICckYXJjaGl2ZXInOiBOU0tFWUVEQVJDSElWRVIsXG4gICAgICAnJHRvcCc6IHsncm9vdCc6IG5ldyBwbGlzdGxpYi5VSUQoMSl9LFxuICAgICAgJyRvYmplY3RzJzogdGhpcy5vYmplY3RzXG4gICAgfTtcbiAgICByZXR1cm4gYnBsaXN0Q3JlYXRlKGQpO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBOU0tleWVkIEJ1ZmZlciBmcm9tIGFuIG9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IGlucHV0T2JqZWN0XG4gKiBAcmV0dXJucyB7QnVmZmVyfSBOU0tleWVkIEJ1ZmZlclxuICovXG5mdW5jdGlvbiBhcmNoaXZlIChpbnB1dE9iamVjdCkge1xuICByZXR1cm4gbmV3IEFyY2hpdmUoaW5wdXRPYmplY3QpLnRvQnl0ZXMoKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgTlNLZXllZCBCdWZmZXIgaW50byBKUyBPYmplY3RcbiAqIEBwYXJhbSB7QnVmZmVyfSBpbnB1dEJ5dGVzIE5TS2V5ZWQgQnVmZmVyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBKUyBPYmplY3RcbiAqL1xuZnVuY3Rpb24gdW5hcmNoaXZlIChpbnB1dEJ5dGVzKSB7XG4gIHJldHVybiBuZXcgVW5hcmNoaXZlKGlucHV0Qnl0ZXMpLnRvT2JqZWN0KCk7XG59XG5cbi8qKlxuICogVXBkYXRlIHVua25vd24gTlNLZXllZEFyY2hpdmUgdHlwZXMgZm9yIHBhY2tpbmcvdW5wYWNraW5nXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBwYWNraW5nL3VucGFja2luZyBrZXkgbmFtZVxuICogQHBhcmFtIHtCYXNlQXJjaGl2ZUhhbmRsZXJ9IHN1YkNsYXNzIGluaGVyaXQgZnJvbSBCYXNlQXJjaGl2ZUhhbmRsZXIgY2xhc3NcbiAqL1xuZnVuY3Rpb24gdXBkYXRlTlNLZXllZEFyY2hpdmVDbGFzcyAobmFtZSwgc3ViQ2xhc3MpIHtcbiAgaWYgKCFfLmlzRnVuY3Rpb24oc3ViQ2xhc3MucHJvdG90eXBlPy5kZWNvZGVBcmNoaXZlKSAmJiAhXy5pc0Z1bmN0aW9uKHN1YkNsYXNzLnByb3RvdHlwZT8uZW5jb2RlQXJjaGl2ZSkpIHtcbiAgICB0aHJvdyBFcnJvcignc3ViQ2xhc3MgbXVzdCBoYXZlIGRlY29kZUFyY2hpdmUgb3IgZW5jb2RlQXJjaGl2ZSBtZXRob2RzJyk7XG4gIH1cbiAgaWYgKCEobmFtZSBpbiBVTkFSQ0hJVkVfQ0xBU1NfTUFQKSkge1xuICAgIFVOQVJDSElWRV9DTEFTU19NQVBbbmFtZV0gPSBzdWJDbGFzcztcbiAgfVxufVxuXG5leHBvcnQgeyB1cGRhdGVOU0tleWVkQXJjaGl2ZUNsYXNzLCBCYXNlQXJjaGl2ZUhhbmRsZXIsIE5TVVJMLCBOU1VVSUQsIE5TRGF0ZSwgdW5hcmNoaXZlLCBhcmNoaXZlfTtcbiJdLCJmaWxlIjoibGliL2luc3RydW1lbnQvdHJhbnNmb3JtZXIvbnNrZXllZC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLiJ9
446
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2luc3RydW1lbnQvdHJhbnNmb3JtZXIvbnNrZXllZC5qcyIsIm5hbWVzIjpbIk5TS0VZRURfQVJDSElWRV9WRVJTSU9OIiwiTlVMTF9VSUQiLCJwbGlzdGxpYiIsIlVJRCIsIkNZQ0xFX1RPS0VOIiwiUFJJTUlUSVZFX1RZUEVTIiwiTk9OX0VOQ09EQUJMRV9UWVBFUyIsIk5TS0VZRURBUkNISVZFUiIsIlVOSVgyQVBQTEVfVElNRVNUQU1QX1NFQ09ORCIsIkFyY2hpdmVkT2JqZWN0IiwiY29uc3RydWN0b3IiLCJvYmplY3QiLCJ1bmFyY2hpdmVyIiwiX3VuYXJjaGl2ZXIiLCJkZWNvZGVJbmRleCIsImluZGV4IiwiZGVjb2RlT2JqZWN0IiwiZGVjb2RlIiwia2V5IiwiZGVjb2RlS2V5IiwiQXJjaGl2aW5nT2JqZWN0IiwiYXJjaGl2ZXIiLCJfYXJjaGl2ZU9iaiIsIl9hcmNoaXZlciIsImVuY29kZSIsInZhbCIsIkJhc2VBcmNoaXZlSGFuZGxlciIsImRlY29kZUFyY2hpdmUiLCJhcmNoaXZlIiwiRXJyb3IiLCJlbmNvZGVBcmNoaXZlIiwib2JqIiwiRGljdEFyY2hpdmUiLCJrZXlVaWRzIiwidmFsVWlkcyIsImQiLCJpIiwibGVuZ3RoIiwiTGlzdEFyY2hpdmUiLCJ1aWRzIiwibWFwIiwiYmluZCIsIkRUVGFwTWVzc2FnZVBsaXN0IiwiTlNFcnJvciIsIk5TRXhjZXB0aW9uIiwiTlNVUkwiLCJiYXNlIiwicmVsYXRpdmUiLCJfYmFzZSIsIl9yZWxhdGl2ZSIsIiRjbGFzcyIsIk5TRGF0ZSIsImRhdGEiLCJfZGF0YSIsIk5TTXV0YWJsZVN0cmluZyIsIk5TTXV0YWJsZURhdGEiLCJOU1VVSUQiLCJ1dWlkU3RyaW5naWZ5IiwiQnVmZmVyIiwiZnJvbSIsInV1aWRQYXJzZSIsImJ1ZmZlciIsIlhDVENhcGFiaWxpdGllcyIsIk5TTnVsbCIsIlVOQVJDSElWRV9DTEFTU19NQVAiLCJEVFN5c21vblRhcE1lc3NhZ2UiLCJEVFRhcEhlYXJ0YmVhdE1lc3NhZ2UiLCJEVFRhcE1lc3NhZ2VBcmNoaXZlIiwiRFRLVHJhY2VUYXBNZXNzYWdlIiwiRXJyb3JBcmNoaXZlIiwiRXhjZXB0aW9uQXJjaGl2ZSIsIk5TRGljdGlvbmFyeSIsIk5TTXV0YWJsZURpY3Rpb25hcnkiLCJOU0FycmF5IiwiTlNNdXRhYmxlQXJyYXkiLCJOU011dGFibGVTZXQiLCJOU1NldCIsIlVuYXJjaGl2ZSIsImlucHV0Qnl0ZXMiLCJpbnB1dCIsInVucGFja2VkVWlkcyIsInRvcFVJRCIsIm9iamVjdHMiLCJ1bnBhY2tBcmNoaXZlSGVhZGVyIiwicGxpc3QiLCJwYXJzZUJ1ZmZlciIsIiRhcmNoaXZlciIsIiR2ZXJzaW9uIiwidG9wIiwiJHRvcCIsInJvb3QiLCJKU09OIiwic3RyaW5naWZ5IiwiJG9iamVjdHMiLCJjbGFzc0ZvclVpZCIsIm1ldGEiLCJuYW1lIiwiJGNsYXNzbmFtZSIsImtsYXNzIiwiXyIsImlzTmlsIiwiaXNVbmRlZmluZWQiLCJyYXdPYmoiLCJrbGFzc09iaiIsInRvT2JqZWN0IiwiQXJjaGl2ZSIsImlucHV0T2JqZWN0IiwiY2xhc3NNYXAiLCJ1aWRGb3JBcmNoaXZlciIsInB1c2giLCJpc051bGwiLCJpbmNsdWRlcyIsImFyY2hpdmVPYmoiLCJlbmNvZGVUb3BMZXZlbCIsIkFycmF5IiwiZW5jb2RlQXJyYXkiLCJTZXQiLCJlbmNvZGVTZXQiLCJPYmplY3QiLCJvYmpOYW1lIiwiZW5jb2RlRGljdCIsIm9ianMiLCJrZXlzIiwidmFsdWVzIiwidG9CeXRlcyIsImJwbGlzdENyZWF0ZSIsInVuYXJjaGl2ZSIsInVwZGF0ZU5TS2V5ZWRBcmNoaXZlQ2xhc3MiLCJzdWJDbGFzcyIsImlzRnVuY3Rpb24iLCJwcm90b3R5cGUiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvaW5zdHJ1bWVudC90cmFuc2Zvcm1lci9uc2tleWVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwbGlzdGxpYiBmcm9tICdicGxpc3QtcGFyc2VyJztcbmltcG9ydCBicGxpc3RDcmVhdGUgZnJvbSAnYnBsaXN0LWNyZWF0b3InO1xuaW1wb3J0IHtwYXJzZSBhcyB1dWlkUGFyc2UsIHN0cmluZ2lmeSBhcyB1dWlkU3RyaW5naWZ5fSBmcm9tICd1dWlkJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IE5TS0VZRURfQVJDSElWRV9WRVJTSU9OID0gMTAwXzAwMDtcbmNvbnN0IE5VTExfVUlEID0gbmV3IHBsaXN0bGliLlVJRCgwKTtcbmNvbnN0IENZQ0xFX1RPS0VOID0gJ0N5Y2xlVG9rZW4nO1xuY29uc3QgUFJJTUlUSVZFX1RZUEVTID0gWydOdW1iZXInLCAnU3RyaW5nJywgJ0Jvb2xlYW4nLCAnVUlEJywgJ0J1ZmZlciddO1xuY29uc3QgTk9OX0VOQ09EQUJMRV9UWVBFUyA9IFsnbnVtYmVyJywgJ2Jvb2xlYW4nXTtcbmNvbnN0IE5TS0VZRURBUkNISVZFUiA9ICdOU0tleWVkQXJjaGl2ZXInO1xuY29uc3QgVU5JWDJBUFBMRV9USU1FU1RBTVBfU0VDT05EID0gOTc4MzA3MjAwO1xuXG5cbmNsYXNzIEFyY2hpdmVkT2JqZWN0IHtcbiAgLyoqXG4gICAqIFN0YXRlZnVsIHdyYXBwZXIgYXJvdW5kIEFyY2hpdmUgZm9yIGFuIG9iamVjdCBiZWluZyBhcmNoaXZlZC5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdFxuICAgKiBAcGFyYW0ge1VuYXJjaGl2ZX0gdW5hcmNoaXZlclxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yIChvYmplY3QsIHVuYXJjaGl2ZXIpIHtcbiAgICB0aGlzLm9iamVjdCA9IG9iamVjdDtcbiAgICB0aGlzLl91bmFyY2hpdmVyID0gdW5hcmNoaXZlcjtcbiAgfVxuXG4gIGRlY29kZUluZGV4IChpbmRleCkge1xuICAgIHJldHVybiB0aGlzLl91bmFyY2hpdmVyLmRlY29kZU9iamVjdChpbmRleCk7XG4gIH1cblxuICBkZWNvZGUgKGtleSkge1xuICAgIHJldHVybiB0aGlzLl91bmFyY2hpdmVyLmRlY29kZUtleSh0aGlzLm9iamVjdCwga2V5KTtcbiAgfVxufVxuXG5jbGFzcyBBcmNoaXZpbmdPYmplY3Qge1xuICAvKipcbiAgICogU3RhdGVmdWwgd3JhcHBlciBhcm91bmQgVW5hcmNoaXZlIGZvciBhbiBhcmNoaXZlZCBvYmplY3RcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdFxuICAgKiBAcGFyYW0ge0FyY2hpdmV9IGFyY2hpdmVyXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKi9cbiAgY29uc3RydWN0b3IgKG9iamVjdCwgYXJjaGl2ZXIpIHtcbiAgICB0aGlzLl9hcmNoaXZlT2JqID0gb2JqZWN0O1xuICAgIHRoaXMuX2FyY2hpdmVyID0gYXJjaGl2ZXI7XG4gIH1cblxuICBlbmNvZGUgKGtleSwgdmFsKSB7XG4gICAgdGhpcy5fYXJjaGl2ZU9ialtrZXldID0gdGhpcy5fYXJjaGl2ZXIuZW5jb2RlKHZhbCk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGNsYXNzIG11c3QgYmUgaW5oZXJpdGVkIHdoZW4gY3JlYXRpbmcgYW4gYXJjaGl2ZS91bmFyY2hpdmUgc3ViY2xhc3NcbiAqIEFuZCB5b3UgbmVlZCB0byBjYWxsIGB1cGRhdGVOU0tleWVkQXJjaGl2ZUNsYXNzYCBhZGQgc3ViY2xhc3MgdG8gYXJjaGl2ZS91bmFyY2hpdmUgb2JqZWN0XG4gKi9cbmNsYXNzIEJhc2VBcmNoaXZlSGFuZGxlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0FyY2hpdmVkT2JqZWN0fSBhcmNoaXZlXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgZGVjb2RlQXJjaGl2ZSAoYXJjaGl2ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGlkIG5vdCBrbm93IGhvdyB0byBkZWNvZGUgdGhlIG9iamVjdGApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmogIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3NcbiAgICogQHBhcmFtIHtBcmNoaXZpbmdPYmplY3R9IGFyY2hpdmVcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBlbmNvZGVBcmNoaXZlIChvYmosIGFyY2hpdmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYERpZCBub3Qga25vdyBob3cgdG8gZW5jb2RlIHRoZSBvYmplY3RgKTtcbiAgfVxufVxuXG4vKipcbiAqIFwiRGVsZWdhdGUgZm9yIHBhY2tpbmcvdW5wYWNraW5nIE5TKE11dGFibGUpRGljdGlvbmFyeSBvYmplY3RzXCJcbiAqL1xuY2xhc3MgRGljdEFyY2hpdmUgZXh0ZW5kcyBCYXNlQXJjaGl2ZUhhbmRsZXIge1xuICBkZWNvZGVBcmNoaXZlIChhcmNoaXZlKSB7XG4gICAgY29uc3Qga2V5VWlkcyA9IGFyY2hpdmUuZGVjb2RlKCdOUy5rZXlzJyk7XG4gICAgY29uc3QgdmFsVWlkcyA9IGFyY2hpdmUuZGVjb2RlKCdOUy5vYmplY3RzJyk7XG4gICAgY29uc3QgZCA9IHt9O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5VWlkcy5sZW5ndGggOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IGFyY2hpdmUuZGVjb2RlSW5kZXgoa2V5VWlkc1tpXSk7XG4gICAgICBkW2tleV0gPSBhcmNoaXZlLmRlY29kZUluZGV4KHZhbFVpZHNbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gZDtcbiAgfVxufVxuXG4vKipcbiAqIERlbGVnYXRlIGZvciBwYWNraW5nL3VucGFja2luZyBOUyhNdXRhYmxlKUFycmF5IG9iamVjdHNcbiAqL1xuY2xhc3MgTGlzdEFyY2hpdmUgZXh0ZW5kcyBCYXNlQXJjaGl2ZUhhbmRsZXIge1xuICBkZWNvZGVBcmNoaXZlIChhcmNoaXZlKSB7XG4gICAgY29uc3QgdWlkcyA9IGFyY2hpdmUuZGVjb2RlKCdOUy5vYmplY3RzJyk7XG4gICAgcmV0dXJuIHVpZHMubWFwKGFyY2hpdmUuZGVjb2RlSW5kZXguYmluZChhcmNoaXZlKSk7XG4gIH1cbn1cblxuY2xhc3MgRFRUYXBNZXNzYWdlUGxpc3QgZXh0ZW5kcyBCYXNlQXJjaGl2ZUhhbmRsZXIge1xuICBkZWNvZGVBcmNoaXZlIChhcmNoaXZlKSB7XG4gICAgcmV0dXJuIGFyY2hpdmUuZGVjb2RlKCdEVFRhcE1lc3NhZ2VQbGlzdCcpO1xuICB9XG59XG5cbmNsYXNzIE5TRXJyb3IgZXh0ZW5kcyBCYXNlQXJjaGl2ZUhhbmRsZXIge1xuICBkZWNvZGVBcmNoaXZlIChhcmNoaXZlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICckY2xhc3MnOiAnTlNFcnJvcicsXG4gICAgICAnZG9tYWluJzogYXJjaGl2ZS5kZWNvZGUoJ05TRG9tYWluJyksXG4gICAgICAndXNlcmluZm8nOiBhcmNoaXZlLmRlY29kZSgnTlNVc2VySW5mbycpLFxuICAgICAgJ2NvZGUnOiBhcmNoaXZlLmRlY29kZSgnTlNDb2RlJylcbiAgICB9O1xuICB9XG59XG5cbmNsYXNzIE5TRXhjZXB0aW9uIGV4dGVuZHMgQmFzZUFyY2hpdmVIYW5kbGVyIHtcbiAgZGVjb2RlQXJjaGl2ZSAoYXJjaGl2ZSkge1xuICAgIHJldHVybiB7XG4gICAgICAnJGNsYXNzJzogJ05TRXhjZXB0aW9uJyxcbiAgICAgICdyZWFzb24nOiBhcmNoaXZlLmRlY29kZSgnTlMucmVhc29uJyksXG4gICAgICAndXNlcmluZm8nOiBhcmNoaXZlLmRlY29kZSgndXNlcmluZm8nKSxcbiAgICAgICduYW1lJzogYXJjaGl2ZS5kZWNvZGUoJ05TLm5hbWUnKVxuICAgIH07XG4gIH1cbn1cblxuY2xhc3MgTlNVUkwgZXh0ZW5kcyBCYXNlQXJjaGl2ZUhhbmRsZXIge1xuICAvKipcbiAgICogQHBhcmFtIHsqfSBiYXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWxhdGl2ZSB1c3VhbGx5IGlvcyBkZXZpY2UgcmVsYXRpdmUgcGF0aCBlLmc6IGZpbGU6Ly94eC9cbiAgICovXG4gIGNvbnN0cnVjdG9yIChiYXNlLCByZWxhdGl2ZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fYmFzZSA9IGJhc2U7XG4gICAgdGhpcy5fcmVsYXRpdmUgPSByZWxhdGl2ZTtcbiAgfVxuXG4gIGRlY29kZUFyY2hpdmUgKGFyY2hpdmUpIHtcbiAgICByZXR1cm4geyRjbGFzczogJ05TVVJMJywgYmFzZTogYXJjaGl2ZS5kZWNvZGUoJ05TLmJhc2UnKSwgcmVsYXRpdmU6IGFyY2hpdmUuZGVjb2RlKCdOUy5yZWxhdGl2ZScpfTtcbiAgfVxuXG4gIGVuY29kZUFyY2hpdmUgKG9iaiwgYXJjaGl2ZSkge1xuICAgIGFyY2hpdmUuZW5jb2RlKCdOUy5iYXNlJywgb2JqLl9iYXNlKTtcbiAgICBhcmNoaXZlLmVuY29kZSgnTlMucmVsYXRpdmUnLCBvYmouX3JlbGF0aXZlKTtcbiAgfVxufVxuXG5jbGFzcyBOU0RhdGUgZXh0ZW5kcyBCYXNlQXJjaGl2ZUhhbmRsZXIge1xuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGRhdGEgdGltZXN0YW1wIGluIHNlY29uZHNcbiAgICovXG4gIGNvbnN0cnVjdG9yIChkYXRhKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgfVxuXG4gIGRlY29kZUFyY2hpdmUgKGFyY2hpdmUpIHtcbiAgICByZXR1cm4gVU5JWDJBUFBMRV9USU1FU1RBTVBfU0VDT05EICsgYXJjaGl2ZS5kZWNvZGUoJ05TLnRpbWUnKTtcbiAgfVxuXG4gIGVuY29kZUFyY2hpdmUgKG9iaiwgYXJjaGl2ZSkge1xuICAgIGFyY2hpdmUuZW5jb2RlKCdOUy50aW1lJywgb2JqLl9kYXRhIC0gVU5JWDJBUFBMRV9USU1FU1RBTVBfU0VDT05EKTtcbiAgfVxufVxuXG5jbGFzcyBOU011dGFibGVTdHJpbmcgZXh0ZW5kcyBCYXNlQXJjaGl2ZUhhbmRsZXIge1xuICBkZWNvZGVBcmNoaXZlIChhcmNoaXZlKSB7XG4gICAgcmV0dXJuIGFyY2hpdmUuZGVjb2RlKCdOUy5zdHJpbmcnKTtcbiAgfVxufVxuXG5jbGFzcyBOU011dGFibGVEYXRhIGV4dGVuZHMgQmFzZUFyY2hpdmVIYW5kbGVyIHtcbiAgZGVjb2RlQXJjaGl2ZSAoYXJjaGl2ZSkge1xuICAgIHJldHVybiBhcmNoaXZlLmRlY29kZSgnTlMuZGF0YScpO1xuICB9XG59XG5cbmNsYXNzIE5TVVVJRCBleHRlbmRzIEJhc2VBcmNoaXZlSGFuZGxlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSB1dWlkIGZvcm1hdCBkYXRhIGUuZzowMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcbiAgICovXG4gIGNvbnN0cnVjdG9yIChkYXRhKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgfVxuXG4gIGRlY29kZUFyY2hpdmUgKGFyY2hpdmUpIHtcbiAgICByZXR1cm4gdXVpZFN0cmluZ2lmeShhcmNoaXZlLmRlY29kZSgnTlMudXVpZGJ5dGVzJykpO1xuICB9XG5cbiAgZW5jb2RlQXJjaGl2ZSAob2JqLCBhcmNoaXZlKSB7XG4gICAgYXJjaGl2ZS5fYXJjaGl2ZU9ialsnTlMudXVpZGJ5dGVzJ10gPSBCdWZmZXIuZnJvbSh1dWlkUGFyc2Uob2JqLl9kYXRhKS5idWZmZXIpO1xuICB9XG59XG5cbmNsYXNzIFhDVENhcGFiaWxpdGllcyBleHRlbmRzIEJhc2VBcmNoaXZlSGFuZGxlciB7XG4gIGRlY29kZUFyY2hpdmUgKGFyY2hpdmUpIHtcbiAgICByZXR1cm4gYXJjaGl2ZS5kZWNvZGUoJ2NhcGFiaWxpdGllcy1kaWN0aW9uYXJ5Jyk7XG4gIH1cbn1cblxuY2xhc3MgTlNOdWxsIGV4dGVuZHMgQmFzZUFyY2hpdmVIYW5kbGVyIHtcbiAgZGVjb2RlQXJjaGl2ZSAoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBkZWNvZGUgYW5kIGVuY29kZSBBcmNoaXZlIG9mIGN1cnJlbnRseSBrbm93biBkYXRhIGZvcm1hdHNcbiAqL1xuY29uc3QgVU5BUkNISVZFX0NMQVNTX01BUCA9IHtcbiAgRFRUYXBNZXNzYWdlUGxpc3QsXG4gIERUU3lzbW9uVGFwTWVzc2FnZTogRFRUYXBNZXNzYWdlUGxpc3QsXG4gIERUVGFwSGVhcnRiZWF0TWVzc2FnZTogRFRUYXBNZXNzYWdlUGxpc3QsXG4gIERUVGFwTWVzc2FnZUFyY2hpdmU6IERUVGFwTWVzc2FnZVBsaXN0LFxuICBEVEtUcmFjZVRhcE1lc3NhZ2U6IERUVGFwTWVzc2FnZVBsaXN0LFxuICBFcnJvckFyY2hpdmU6IE5TRXJyb3IsXG4gIEV4Y2VwdGlvbkFyY2hpdmU6IE5TRXhjZXB0aW9uLFxuICBOU0RpY3Rpb25hcnk6IERpY3RBcmNoaXZlLFxuICBOU011dGFibGVEaWN0aW9uYXJ5OiBEaWN0QXJjaGl2ZSxcbiAgTlNBcnJheTogTGlzdEFyY2hpdmUsXG4gIE5TTXV0YWJsZUFycmF5OiBMaXN0QXJjaGl2ZSxcbiAgTlNNdXRhYmxlU2V0OiBMaXN0QXJjaGl2ZSxcbiAgTlNTZXQ6IExpc3RBcmNoaXZlLFxuICBOU0RhdGUsXG4gIE5TRXJyb3IsXG4gIE5TRXhjZXB0aW9uLFxuICBOU011dGFibGVTdHJpbmcsXG4gIE5TTXV0YWJsZURhdGEsXG4gIE5TTnVsbCxcbiAgTlNVVUlELFxuICBOU1VSTCxcbiAgWENUQ2FwYWJpbGl0aWVzXG59O1xuXG4vKipcbiAqIENhcGFibGUgb2YgdW5wYWNraW5nIGFuIGFyY2hpdmVkIG9iamVjdCB0cmVlIGluIHRoZSBOU0tleWVkQXJjaGl2ZSBmb3JtYXQuXG4gKiBBcHBsZSdzIGltcGxlbWVudGF0aW9uIGNhbiBiZSBmb3VuZCBoZXJlOlxuICogaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL3N3aWZ0LWNvcmVsaWJzLWZvdW5kYXRpb24vYmxvYi9tYWluL1NvdXJjZXMvRm91bmRhdGlvbi9OU0tleWVkVW5hcmNoaXZlci5zd2lmdFxuICovXG5jbGFzcyBVbmFyY2hpdmUge1xuICBjb25zdHJ1Y3RvciAoaW5wdXRCeXRlcykge1xuICAgIHRoaXMuaW5wdXQgPSBpbnB1dEJ5dGVzO1xuICAgIHRoaXMudW5wYWNrZWRVaWRzID0ge307XG4gICAgdGhpcy50b3BVSUQgPSBOVUxMX1VJRDtcbiAgICB0aGlzLm9iamVjdHMgPSBbXTtcbiAgfVxuXG4gIHVucGFja0FyY2hpdmVIZWFkZXIgKCkge1xuICAgIGNvbnN0IHBsaXN0ID0gcGxpc3RsaWIucGFyc2VCdWZmZXIodGhpcy5pbnB1dClbMF07XG4gICAgaWYgKHBsaXN0LiRhcmNoaXZlciAhPT0gTlNLRVlFREFSQ0hJVkVSKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIGVuY29kZXI6ICR7cGxpc3QuJGFyY2hpdmVyfWApO1xuICAgIH1cbiAgICBpZiAocGxpc3QuJHZlcnNpb24gIT09IE5TS0VZRURfQVJDSElWRV9WRVJTSU9OKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7TlNLRVlFRF9BUkNISVZFX1ZFUlNJT059LCBnb3QgJHtwbGlzdC4kdmVyc2lvbiB9YCk7XG4gICAgfVxuICAgIGNvbnN0IHRvcCA9IHBsaXN0LiR0b3A7XG4gICAgY29uc3QgdG9wVUlEID0gdG9wLnJvb3Q7XG4gICAgaWYgKCF0b3BVSUQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdG9wIG9iamVjdCBkaWQgbm90IGhhdmUgYSBVSUQhIGR1bXA6ICR7SlNPTi5zdHJpbmdpZnkodG9wKX1gKTtcbiAgICB9XG4gICAgdGhpcy50b3BVSUQgPSB0b3BVSUQ7XG4gICAgdGhpcy5vYmplY3RzID0gcGxpc3QuJG9iamVjdHM7XG4gIH1cblxuICAvKipcbiAgICogdXNlIHRoZSBVTkFSQ0hJVkVfQ0xBU1NfTUFQIHRvIGZpbmQgdGhlIHVuYXJjaGl2aW5nIGRlbGVnYXRlIG9mIGEgdWlkXG4gICAqL1xuICBjbGFzc0ZvclVpZCAoaW5kZXgpIHtcbiAgICBjb25zdCBtZXRhID0gdGhpcy5vYmplY3RzW2luZGV4LlVJRF07XG4gICAgY29uc3QgbmFtZSA9IG1ldGEuJGNsYXNzbmFtZTtcbiAgICBjb25zdCBrbGFzcyA9IFVOQVJDSElWRV9DTEFTU19NQVBbbmFtZV07XG4gICAgaWYgKCFrbGFzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBubyBtYXBwaW5nIGZvciAke25hbWV9IGluIFVOQVJDSElWRV9DTEFTU19NQVBgKTtcbiAgICB9XG4gICAgcmV0dXJuIGtsYXNzO1xuICB9XG5cbiAgZGVjb2RlS2V5IChvYmosIGtleSkge1xuICAgIGNvbnN0IHZhbCA9IG9ialtrZXldO1xuICAgIHJldHVybiBfLmlzTmlsKHZhbD8uVUlEKSA/IHZhbCA6IHRoaXMuZGVjb2RlT2JqZWN0KHZhbCk7XG4gIH1cblxuICBkZWNvZGVPYmplY3QgKGluZGV4KSB7XG4gICAgaWYgKGluZGV4ID09PSBOVUxMX1VJRCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IG9iaiA9IHRoaXMudW5wYWNrZWRVaWRzW2luZGV4XTtcbiAgICBpZiAob2JqID09PSBDWUNMRV9UT0tFTikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBhcmNoaXZlIGhhcyBhIGN5Y2xlIHdpdGggJHtpbmRleH1gKTtcbiAgICB9XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKG9iaikpIHtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIGNvbnN0IHJhd09iaiA9IHRoaXMub2JqZWN0c1tpbmRleC5VSURdO1xuICAgIHRoaXMudW5wYWNrZWRVaWRzW2luZGV4LlVJRF0gPSBDWUNMRV9UT0tFTjtcblxuICAgIGlmICghcmF3T2JqPy4kY2xhc3MpIHtcbiAgICAgIHRoaXMudW5wYWNrZWRVaWRzW2luZGV4LlVJRF0gPSBvYmo7XG4gICAgICByZXR1cm4gcmF3T2JqO1xuICAgIH1cbiAgICBjb25zdCBrbGFzcyA9IHRoaXMuY2xhc3NGb3JVaWQocmF3T2JqLiRjbGFzcyk7XG4gICAgY29uc3Qga2xhc3NPYmogPSBuZXcga2xhc3MoKS5kZWNvZGVBcmNoaXZlKG5ldyBBcmNoaXZlZE9iamVjdChyYXdPYmosIHRoaXMpKTtcbiAgICB0aGlzLnVucGFja2VkVWlkc1tpbmRleC5VSURdID0ga2xhc3NPYmo7XG4gICAgcmV0dXJuIGtsYXNzT2JqO1xuICB9XG5cbiAgdG9PYmplY3QgKCkge1xuICAgIHRoaXMudW5wYWNrQXJjaGl2ZUhlYWRlcigpO1xuICAgIHJldHVybiB0aGlzLmRlY29kZU9iamVjdCh0aGlzLnRvcFVJRCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDYXBhYmxlIG9mIHBhY2tpbmcgYW4gb2JqZWN0IHRyZWUgaW50byB0aGUgTlNLZXllZEFyY2hpdmUgZm9ybWF0LlxuICogQXBwbGUncyBpbXBsZW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgaGVyZTpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9zd2lmdC1jb3JlbGlicy1mb3VuZGF0aW9uL2Jsb2IvbWFpbi9Tb3VyY2VzL0ZvdW5kYXRpb24vTlNLZXllZEFyY2hpdmVyLnN3aWZ0XG4gKi9cbmNsYXNzIEFyY2hpdmUge1xuICBjb25zdHJ1Y3RvciAoaW5wdXRPYmplY3QpIHtcbiAgICB0aGlzLmlucHV0ID0gaW5wdXRPYmplY3Q7XG4gICAgdGhpcy5jbGFzc01hcCA9IHt9O1xuICAgIHRoaXMub2JqZWN0cyA9IFsnJG51bGwnXTsgLy8gb2JqZWN0cyB0aGF0IGdvIGRpcmVjdGx5IGludG8gdGhlIGFyY2hpdmUsIGFsd2F5cyBzdGFydCB3aXRoICRudWxsXG4gIH1cblxuICB1aWRGb3JBcmNoaXZlciAoYXJjaGl2ZXIpIHtcbiAgICBsZXQgdmFsID0gdGhpcy5jbGFzc01hcFthcmNoaXZlcl07XG4gICAgaWYgKHZhbCkge1xuICAgICAgcmV0dXJuIG5ldyBwbGlzdGxpYi5VSUQodmFsKTtcbiAgICB9XG4gICAgdGhpcy5jbGFzc01hcFthcmNoaXZlcl0gPSB0aGlzLm9iamVjdHMubGVuZ3RoO1xuICAgIHZhbCA9IG5ldyBwbGlzdGxpYi5VSUQodGhpcy5vYmplY3RzLmxlbmd0aCk7XG4gICAgdGhpcy5vYmplY3RzLnB1c2goe1xuICAgICAgJyRjbGFzc2VzJzogW2FyY2hpdmVyXSxcbiAgICAgICckY2xhc3NuYW1lJzogYXJjaGl2ZXJcbiAgICB9KTtcbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgYXJjaGl2ZSAob2JqKSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQob2JqKSB8fCBfLmlzTnVsbChvYmopKSB7XG4gICAgICByZXR1cm4gTlVMTF9VSUQ7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gbmV3IHBsaXN0bGliLlVJRCh0aGlzLm9iamVjdHMubGVuZ3RoKTtcbiAgICBpZiAoUFJJTUlUSVZFX1RZUEVTLmluY2x1ZGVzKG9iai5jb25zdHJ1Y3Rvci5uYW1lKSkge1xuICAgICAgdGhpcy5vYmplY3RzLnB1c2gob2JqKTtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gICAgY29uc3QgYXJjaGl2ZU9iaiA9IHt9O1xuICAgIHRoaXMub2JqZWN0cy5wdXNoKGFyY2hpdmVPYmopO1xuICAgIHRoaXMuZW5jb2RlVG9wTGV2ZWwob2JqLCBhcmNoaXZlT2JqKTtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBlbmNvZGUgKHZhbCkge1xuICAgIGlmIChOT05fRU5DT0RBQkxFX1RZUEVTLmluY2x1ZGVzKHR5cGVvZiB2YWwpKSB7XG4gICAgICByZXR1cm4gdmFsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hcmNoaXZlKHZhbCk7XG4gIH1cblxuICBlbmNvZGVUb3BMZXZlbCAob2JqLCBhcmNoaXZlT2JqKSB7XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICByZXR1cm4gdGhpcy5lbmNvZGVBcnJheShvYmosIGFyY2hpdmVPYmopO1xuICAgIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICByZXR1cm4gdGhpcy5lbmNvZGVTZXQob2JqLCBhcmNoaXZlT2JqKTtcbiAgICB9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgY29uc3Qgb2JqTmFtZSA9IG9iai5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgICAgLy8gT25seSBzcGVjaWFsIGNsYXNzIGluc3RhbmNlIGFyZSB1c2VmdWwsIHN1Y2ggYXMgTlNVUkwsIE5TVVVJRCwgTlNEYXRlLlxuICAgICAgLy8gQW5kIHRoaXMgY2xhc3MgbXVzdCBhbHNvIGhhdmUgdGhlIGVuY29kZUFyY2hpdmUgbWV0aG9kXG4gICAgICBpZiAob2JqTmFtZSBpbiBVTkFSQ0hJVkVfQ0xBU1NfTUFQKSB7XG4gICAgICAgIGFyY2hpdmVPYmouJGNsYXNzID0gdGhpcy51aWRGb3JBcmNoaXZlcihvYmpOYW1lKTtcbiAgICAgICAgb2JqLmVuY29kZUFyY2hpdmUob2JqLCBuZXcgQXJjaGl2aW5nT2JqZWN0KGFyY2hpdmVPYmosIHRoaXMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVuY29kZURpY3Qob2JqLCBhcmNoaXZlT2JqKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgRXJyb3IoYFVuYWJsZSB0byBlbmNvZGUgdHlwZXM6ICR7dHlwZW9mIG9ian1gKTtcbiAgICB9XG4gIH1cblxuICBlbmNvZGVBcnJheSAob2JqcywgYXJjaGl2ZU9iaikge1xuICAgIGFyY2hpdmVPYmouJGNsYXNzID0gdGhpcy51aWRGb3JBcmNoaXZlcignTlNBcnJheScpO1xuICAgIGFyY2hpdmVPYmpbJ05TLm9iamVjdHMnXSA9IG9ianMubWFwKHRoaXMuYXJjaGl2ZS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIGVuY29kZVNldCAob2JqcywgYXJjaGl2ZU9iaikge1xuICAgIGFyY2hpdmVPYmouJGNsYXNzID0gdGhpcy51aWRGb3JBcmNoaXZlcignTlNTZXQnKTtcbiAgICBhcmNoaXZlT2JqWydOUy5vYmplY3RzJ10gPSBvYmpzLm1hcCh0aGlzLmFyY2hpdmUuYmluZCh0aGlzKSk7XG4gIH1cblxuICBlbmNvZGVEaWN0IChvYmosIGFyY2hpdmVPYmopIHtcbiAgICBhcmNoaXZlT2JqLiRjbGFzcyA9IHRoaXMudWlkRm9yQXJjaGl2ZXIoJ05TRGljdGlvbmFyeScpO1xuICAgIGFyY2hpdmVPYmpbJ05TLmtleXMnXSA9IF8ua2V5cyhvYmopLm1hcCh0aGlzLmFyY2hpdmUuYmluZCh0aGlzKSk7XG4gICAgYXJjaGl2ZU9ialsnTlMub2JqZWN0cyddID0gXy52YWx1ZXMob2JqKS5tYXAodGhpcy5hcmNoaXZlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgdG9CeXRlcyAoKSB7XG4gICAgaWYgKHRoaXMub2JqZWN0cy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMuYXJjaGl2ZSh0aGlzLmlucHV0KTtcbiAgICB9XG4gICAgY29uc3QgZCA9IHtcbiAgICAgICckdmVyc2lvbic6IE5TS0VZRURfQVJDSElWRV9WRVJTSU9OLFxuICAgICAgJyRhcmNoaXZlcic6IE5TS0VZRURBUkNISVZFUixcbiAgICAgICckdG9wJzogeydyb290JzogbmV3IHBsaXN0bGliLlVJRCgxKX0sXG4gICAgICAnJG9iamVjdHMnOiB0aGlzLm9iamVjdHNcbiAgICB9O1xuICAgIHJldHVybiBicGxpc3RDcmVhdGUoZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIE5TS2V5ZWQgQnVmZmVyIGZyb20gYW4gb2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gaW5wdXRPYmplY3RcbiAqIEByZXR1cm5zIHtCdWZmZXJ9IE5TS2V5ZWQgQnVmZmVyXG4gKi9cbmZ1bmN0aW9uIGFyY2hpdmUgKGlucHV0T2JqZWN0KSB7XG4gIHJldHVybiBuZXcgQXJjaGl2ZShpbnB1dE9iamVjdCkudG9CeXRlcygpO1xufVxuXG4vKipcbiAqIFBhcnNlcyBOU0tleWVkIEJ1ZmZlciBpbnRvIEpTIE9iamVjdFxuICogQHBhcmFtIHtCdWZmZXJ9IGlucHV0Qnl0ZXMgTlNLZXllZCBCdWZmZXJcbiAqIEByZXR1cm5zIHtPYmplY3R9IEpTIE9iamVjdFxuICovXG5mdW5jdGlvbiB1bmFyY2hpdmUgKGlucHV0Qnl0ZXMpIHtcbiAgcmV0dXJuIG5ldyBVbmFyY2hpdmUoaW5wdXRCeXRlcykudG9PYmplY3QoKTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgdW5rbm93biBOU0tleWVkQXJjaGl2ZSB0eXBlcyBmb3IgcGFja2luZy91bnBhY2tpbmdcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIHBhY2tpbmcvdW5wYWNraW5nIGtleSBuYW1lXG4gKiBAcGFyYW0ge0Jhc2VBcmNoaXZlSGFuZGxlcn0gc3ViQ2xhc3MgaW5oZXJpdCBmcm9tIEJhc2VBcmNoaXZlSGFuZGxlciBjbGFzc1xuICovXG5mdW5jdGlvbiB1cGRhdGVOU0tleWVkQXJjaGl2ZUNsYXNzIChuYW1lLCBzdWJDbGFzcykge1xuICBpZiAoIV8uaXNGdW5jdGlvbihzdWJDbGFzcy5wcm90b3R5cGU/LmRlY29kZUFyY2hpdmUpICYmICFfLmlzRnVuY3Rpb24oc3ViQ2xhc3MucHJvdG90eXBlPy5lbmNvZGVBcmNoaXZlKSkge1xuICAgIHRocm93IEVycm9yKCdzdWJDbGFzcyBtdXN0IGhhdmUgZGVjb2RlQXJjaGl2ZSBvciBlbmNvZGVBcmNoaXZlIG1ldGhvZHMnKTtcbiAgfVxuICBpZiAoIShuYW1lIGluIFVOQVJDSElWRV9DTEFTU19NQVApKSB7XG4gICAgVU5BUkNISVZFX0NMQVNTX01BUFtuYW1lXSA9IHN1YkNsYXNzO1xuICB9XG59XG5cbmV4cG9ydCB7IHVwZGF0ZU5TS2V5ZWRBcmNoaXZlQ2xhc3MsIEJhc2VBcmNoaXZlSGFuZGxlciwgTlNVUkwsIE5TVVVJRCwgTlNEYXRlLCB1bmFyY2hpdmUsIGFyY2hpdmV9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLHVCQUF1QixHQUFHLE1BQWhDO0FBQ0EsTUFBTUMsUUFBUSxHQUFHLElBQUlDLHFCQUFBLENBQVNDLEdBQWIsQ0FBaUIsQ0FBakIsQ0FBakI7QUFDQSxNQUFNQyxXQUFXLEdBQUcsWUFBcEI7QUFDQSxNQUFNQyxlQUFlLEdBQUcsQ0FBQyxRQUFELEVBQVcsUUFBWCxFQUFxQixTQUFyQixFQUFnQyxLQUFoQyxFQUF1QyxRQUF2QyxDQUF4QjtBQUNBLE1BQU1DLG1CQUFtQixHQUFHLENBQUMsUUFBRCxFQUFX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
@@ -93,4 +93,4 @@ var _default = Lockdown;
93
93
  exports.default = _default;require('source-map-support').install();
94
94
 
95
95
 
96
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2NrZG93bi9pbmRleC5qcyJdLCJuYW1lcyI6WyJMT0NLRE9XTl9QT1JUIiwiTEFCRUwiLCJQUk9UT0NPTF9WRVJTSU9OIiwiTG9ja2Rvd24iLCJCYXNlU2VydmljZVBsaXN0IiwicXVlcnlUeXBlIiwidGltZW91dCIsImRhdGEiLCJfcGxpc3RTZXJ2aWNlIiwic2VuZFBsaXN0QW5kUmVjZWl2ZSIsIkxhYmVsIiwiUHJvdG9jb2xWZXJzaW9uIiwiUmVxdWVzdCIsIlR5cGUiLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGFydFNlc3Npb24iLCJob3N0SUQiLCJzeXN0ZW1CVUlEIiwiSG9zdElEIiwiU3lzdGVtQlVJRCIsIlNlc3Npb25JRCIsInNlc3Npb25JRCIsImVuYWJsZVNlc3Npb25TU0wiLCJFbmFibGVTZXNzaW9uU1NMIiwiaG9zdFByaXZhdGVLZXkiLCJob3N0Q2VydGlmaWNhdGUiLCJnZXRWYWx1ZSIsInF1ZXJ5IiwicGxpc3QiLCJPYmplY3QiLCJhc3NpZ24iLCJfIiwiaXNOaWwiLCJWYWx1ZSIsInN0YXJ0U2VydmljZSIsInNlcnZpY2VOYW1lIiwiU2VydmljZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQSxNQUFNQSxhQUFhLEdBQUcsS0FBdEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHLFNBQWQ7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyxDQUF6Qjs7QUFFQSxNQUFNQyxRQUFOLFNBQXVCQyw2QkFBdkIsQ0FBd0M7QUFNdkIsUUFBVEMsU0FBUyxDQUFFQyxPQUFPLEdBQUcsSUFBWixFQUFrQjtBQUMvQixVQUFNQyxJQUFJLEdBQUcsTUFBTSxLQUFLQyxhQUFMLENBQW1CQyxtQkFBbkIsQ0FBdUM7QUFDeERDLE1BQUFBLEtBQUssRUFBRVQsS0FEaUQ7QUFFeERVLE1BQUFBLGVBQWUsRUFBRVQsZ0JBRnVDO0FBR3hEVSxNQUFBQSxPQUFPLEVBQUU7QUFIK0MsS0FBdkMsRUFJaEJOLE9BSmdCLENBQW5COztBQUtBLFFBQUlDLElBQUksQ0FBQ0ssT0FBTCxLQUFpQixXQUFqQixJQUFnQ0wsSUFBSSxDQUFDTSxJQUFMLEtBQWMsMkJBQWxELEVBQStFO0FBQzdFLGFBQU9OLElBQVA7QUFDRCxLQUZELE1BRU87QUFDTCxZQUFNLElBQUlPLEtBQUosQ0FBVyxvQkFBbUJDLElBQUksQ0FBQ0MsU0FBTCxDQUFlVCxJQUFmLENBQXFCLEVBQW5ELENBQU47QUFDRDtBQUNGOztBQVNpQixRQUFaVSxZQUFZLENBQUVDLE1BQUYsRUFBVUMsVUFBVixFQUFzQmIsT0FBTyxHQUFHLElBQWhDLEVBQXNDO0FBQ3RELFVBQU1DLElBQUksR0FBRyxNQUFNLEtBQUtDLGFBQUwsQ0FBbUJDLG1CQUFuQixDQUF1QztBQUN4REMsTUFBQUEsS0FBSyxFQUFFVCxLQURpRDtBQUV4RFUsTUFBQUEsZUFBZSxFQUFFVCxnQkFGdUM7QUFHeERVLE1BQUFBLE9BQU8sRUFBRSxjQUgrQztBQUl4RFEsTUFBQUEsTUFBTSxFQUFFRixNQUpnRDtBQUt4REcsTUFBQUEsVUFBVSxFQUFFRjtBQUw0QyxLQUF2QyxFQU1oQmIsT0FOZ0IsQ0FBbkI7O0FBUUEsUUFBSUMsSUFBSSxDQUFDSyxPQUFMLEtBQWlCLGNBQWpCLElBQW1DTCxJQUFJLENBQUNlLFNBQTVDLEVBQXVEO0FBQ3JELGFBQU87QUFBRUMsUUFBQUEsU0FBUyxFQUFFaEIsSUFBSSxDQUFDZSxTQUFsQjtBQUE2QkUsUUFBQUEsZ0JBQWdCLEVBQUVqQixJQUFJLENBQUNrQjtBQUFwRCxPQUFQO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsWUFBTSxJQUFJWCxLQUFKLENBQVcsb0JBQW1CQyxJQUFJLENBQUNDLFNBQUwsQ0FBZVQsSUFBZixDQUFxQixFQUFuRCxDQUFOO0FBQ0Q7QUFDRjs7QUFPRGlCLEVBQUFBLGdCQUFnQixDQUFFRSxjQUFGLEVBQWtCQyxlQUFsQixFQUFtQztBQUNqRCxTQUFLbkIsYUFBTCxDQUFtQmdCLGdCQUFuQixDQUFvQ0UsY0FBcEMsRUFBb0RDLGVBQXBEO0FBQ0Q7O0FBaUJhLFFBQVJDLFFBQVEsQ0FBRUMsS0FBSyxHQUFHLEVBQVYsRUFBY3ZCLE9BQU8sR0FBRyxJQUF4QixFQUE4QjtBQUMxQyxVQUFNd0IsS0FBSyxHQUFHQyxNQUFNLENBQUNDLE1BQVAsQ0FBYztBQUMxQnRCLE1BQUFBLEtBQUssRUFBRVQsS0FEbUI7QUFFMUJVLE1BQUFBLGVBQWUsRUFBRVQsZ0JBRlM7QUFHMUJVLE1BQUFBLE9BQU8sRUFBRTtBQUhpQixLQUFkLEVBSVhpQixLQUpXLENBQWQ7QUFLQSxVQUFNdEIsSUFBSSxHQUFHLE1BQU0sS0FBS0MsYUFBTCxDQUFtQkMsbUJBQW5CLENBQXVDcUIsS0FBdkMsRUFBOEN4QixPQUE5QyxDQUFuQjs7QUFDQSxRQUFJLENBQUFDLElBQUksU0FBSixJQUFBQSxJQUFJLFdBQUosWUFBQUEsSUFBSSxDQUFFSyxPQUFOLE1BQWtCLFVBQWxCLElBQWdDLENBQUNxQixnQkFBRUMsS0FBRixDQUFRM0IsSUFBUixhQUFRQSxJQUFSLHVCQUFRQSxJQUFJLENBQUU0QixLQUFkLENBQXJDLEVBQTJEO0FBQ3pELGFBQU81QixJQUFJLENBQUM0QixLQUFaO0FBQ0Q7O0FBQ0QsVUFBTSxJQUFJckIsS0FBSixDQUFXLGdDQUErQkMsSUFBSSxDQUFDQyxTQUFMLENBQWVhLEtBQWYsQ0FBc0IsWUFBdEQsR0FDZGQsSUFBSSxDQUFDQyxTQUFMLENBQWVULElBQWYsQ0FESSxDQUFOO0FBRUQ7O0FBUWlCLFFBQVo2QixZQUFZLENBQUVDLFdBQUYsRUFBZS9CLE9BQU8sR0FBRyxJQUF6QixFQUErQjtBQUMvQyxVQUFNQyxJQUFJLEdBQUcsTUFBTSxLQUFLQyxhQUFMLENBQW1CQyxtQkFBbkIsQ0FBdUM7QUFDeERDLE1BQUFBLEtBQUssRUFBRVQsS0FEaUQ7QUFFeERVLE1BQUFBLGVBQWUsRUFBRVQsZ0JBRnVDO0FBR3hEVSxNQUFBQSxPQUFPLEVBQUUsY0FIK0M7QUFJeEQwQixNQUFBQSxPQUFPLEVBQUVEO0FBSitDLEtBQXZDLEVBS2hCL0IsT0FMZ0IsQ0FBbkI7O0FBT0EsUUFBSUMsSUFBSSxDQUFDTyxLQUFULEVBQWdCO0FBQ2QsWUFBTSxJQUFJQSxLQUFKLENBQVcsb0JBQW1CQyxJQUFJLENBQUNDLFNBQUwsQ0FBZVQsSUFBZixDQUFxQixFQUFuRCxDQUFOO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsYUFBT0EsSUFBUDtBQUNEO0FBQ0Y7O0FBbkdxQzs7O2VBdUd6QkosUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBCYXNlU2VydmljZVBsaXN0IH0gZnJvbSAnLi4vYmFzZS1zZXJ2aWNlJztcblxuXG5jb25zdCBMT0NLRE9XTl9QT1JUID0gNjIwNzg7XG5jb25zdCBMQUJFTCA9ICd1c2JtdXhkJztcbmNvbnN0IFBST1RPQ09MX1ZFUlNJT04gPSAyO1xuXG5jbGFzcyBMb2NrZG93biBleHRlbmRzIEJhc2VTZXJ2aWNlUGxpc3Qge1xuICAvKipcbiAgICogTWFrZXMgYSBxdWVyeSB0eXBlIHJlcXVlc3QgdG8gbG9ja2Rvd25cbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0aW1lb3V0PTUwMDBdIHRoZSB0aW1lb3V0IG9mIHJlY2VpdmluZyBhIHJlc3BvbnNlIGZyb20gbG9ja2Rvd25kXG4gICAqIEByZXR1cm5zIHtPYmplY3R9XG4gICAqL1xuICBhc3luYyBxdWVyeVR5cGUgKHRpbWVvdXQgPSA1MDAwKSB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuX3BsaXN0U2VydmljZS5zZW5kUGxpc3RBbmRSZWNlaXZlKHtcbiAgICAgIExhYmVsOiBMQUJFTCxcbiAgICAgIFByb3RvY29sVmVyc2lvbjogUFJPVE9DT0xfVkVSU0lPTixcbiAgICAgIFJlcXVlc3Q6ICdRdWVyeVR5cGUnXG4gICAgfSwgdGltZW91dCk7XG4gICAgaWYgKGRhdGEuUmVxdWVzdCA9PT0gJ1F1ZXJ5VHlwZScgJiYgZGF0YS5UeXBlID09PSAnY29tLmFwcGxlLm1vYmlsZS5sb2NrZG93bicpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgZGF0YTogJHtKU09OLnN0cmluZ2lmeShkYXRhKX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIGEgbG9ja2Rvd24gc2Vzc2lvbiB3aGljaCBhbGxvd3MgdG8gdXNlIGNlcnRhaW4gYXBpc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gaG9zdElEIHRoZSBob3N0IGlkIHdoaWNoIGNhbiBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgcGFpciByZWNvcmRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN5c3RlbUJVSUQgdGhlIGhvc3QgQlVJRCB3aGljaCBjYW4gYmUgcmV0cmlldmVkIGZyb20gdGhlIHBhaXIgcmVjb3JkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbdGltZW91dD01MDAwXSB0aGUgdGltZW91dCBvZiByZWNlaXZpbmcgYSByZXNwb25zZSBmcm9tIGxvY2tkb3duZFxuICAgKiBAcmV0dXJucyB7T2JqZWN0fVxuICAgKi9cbiAgYXN5bmMgc3RhcnRTZXNzaW9uIChob3N0SUQsIHN5c3RlbUJVSUQsIHRpbWVvdXQgPSA1MDAwKSB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuX3BsaXN0U2VydmljZS5zZW5kUGxpc3RBbmRSZWNlaXZlKHtcbiAgICAgIExhYmVsOiBMQUJFTCxcbiAgICAgIFByb3RvY29sVmVyc2lvbjogUFJPVE9DT0xfVkVSU0lPTixcbiAgICAgIFJlcXVlc3Q6ICdTdGFydFNlc3Npb24nLFxuICAgICAgSG9zdElEOiBob3N0SUQsXG4gICAgICBTeXN0ZW1CVUlEOiBzeXN0ZW1CVUlEXG4gICAgfSwgdGltZW91dCk7XG5cbiAgICBpZiAoZGF0YS5SZXF1ZXN0ID09PSAnU3RhcnRTZXNzaW9uJyAmJiBkYXRhLlNlc3Npb25JRCkge1xuICAgICAgcmV0dXJuIHsgc2Vzc2lvbklEOiBkYXRhLlNlc3Npb25JRCwgZW5hYmxlU2Vzc2lvblNTTDogZGF0YS5FbmFibGVTZXNzaW9uU1NMIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBkYXRhOiAke0pTT04uc3RyaW5naWZ5KGRhdGEpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIHNzbCBpbiB0aGUgdW5kZXJseWluZyBzb2NrZXQgc29ja2V0IGNvbm5lY3Rpb25cbiAgICogQHBhcmFtIHtCdWZmZXJ9IGhvc3RQcml2YXRlS2V5IHRoZSBwcml2YXRlIGtleSB3aGljaCBjYW4gYmUgcmV0cmlldmVkIGZyb20gdGhlIHBhaXIgcmVjb3JkXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBob3N0Q2VydGlmaWNhdGUgdGhlIGNlcnRpZmljYXRlIHdoaWNoIGNhbiBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgcGFpciByZWNvcmRcbiAgICovXG4gIGVuYWJsZVNlc3Npb25TU0wgKGhvc3RQcml2YXRlS2V5LCBob3N0Q2VydGlmaWNhdGUpIHtcbiAgICB0aGlzLl9wbGlzdFNlcnZpY2UuZW5hYmxlU2Vzc2lvblNTTChob3N0UHJpdmF0ZUtleSwgaG9zdENlcnRpZmljYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAqIEB0eXBlZGVmIHtPYmplY3R9IFF1ZXJ5XG4gICpcbiAgKiBAcHJvcGVydHkgez9zdHJpbmd9IGtleSBUaGUga2V5IHdlIHdhbnQgdG8gYWNjZXNzXG4gICogQHByb3BlcnR5IHs/c3RyaW5nfSBkb21haW4gVGhlIGRvbWFpbiB3aGVyZSB3ZSB3YW50IHRvIGFjY2Vzc1xuICAqL1xuXG4gIC8qKlxuICAgKiBHZXRzIHZhbHVlcyBmcm9tIHRoZSBkZXZpY2UgYWNjb3JkaW5nIHRvIHRoZSBxdWVyeSBwYXNzZWRcbiAgICpcbiAgICogQHBhcmFtIHtRdWVyeX0gcXVlcnkgdGhlIHF1ZXJ5IHdlIHdhbnQgdG8gc2VuZCB0byBsb2NrZG93bmRcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0aW1lb3V0PTUwMDBdIHRoZSB0aW1lb3V0IG9mIHJlY2VpdmluZyBhIHJlc3BvbnNlIGZyb20gbG9ja2Rvd25kXG4gICAqIEByZXR1cm5zIHsqfSBUaGUgYWN0dWFsIHJlc3BvbnNlIHZhbHVlLiBJdCBzaG91bGQgbmV2ZXIgYmUgYG51bGxgIG9yIGB1bmRlZmluZWRgXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBhbiB1bmV4cGVjdGVkIHJlc3BvbnNlIGlzIHJlY2VpdmVkIGZyb20gbG9ja2Rvd25kXG4gICAqL1xuICBhc3luYyBnZXRWYWx1ZSAocXVlcnkgPSB7fSwgdGltZW91dCA9IDUwMDApIHtcbiAgICBjb25zdCBwbGlzdCA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgTGFiZWw6IExBQkVMLFxuICAgICAgUHJvdG9jb2xWZXJzaW9uOiBQUk9UT0NPTF9WRVJTSU9OLFxuICAgICAgUmVxdWVzdDogJ0dldFZhbHVlJ1xuICAgIH0sIHF1ZXJ5KTtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5fcGxpc3RTZXJ2aWNlLnNlbmRQbGlzdEFuZFJlY2VpdmUocGxpc3QsIHRpbWVvdXQpO1xuICAgIGlmIChkYXRhPy5SZXF1ZXN0ID09PSAnR2V0VmFsdWUnICYmICFfLmlzTmlsKGRhdGE/LlZhbHVlKSkge1xuICAgICAgcmV0dXJuIGRhdGEuVmFsdWU7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBkYXRhIHJlY2VpdmVkIGZvciAke0pTT04uc3RyaW5naWZ5KHF1ZXJ5KX0gcmVxdWVzdDogYCArXG4gICAgICBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIGEgc2VydmljZSBvbiB0aGUgcGhvbmUgY29ycmVzcG9uZGluZyB0byB0aGUgbmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VydmljZU5hbWUgdGhlIG5hbWUgb2YgdGhlIHNlcnZpY2Ugd2hpY2ggd2Ugd2FudCB0byBzdGFydFxuICAgKiBAcGFyYW0ge251bWJlcn0gW3RpbWVvdXQ9NTAwMF0gdGhlIHRpbWVvdXQgb2YgcmVjZWl2aW5nIGEgcmVzcG9uc2UgZnJvbSBsb2NrZG93bmRcbiAgICogQHJldHVybnMge09iamVjdH1cbiAgICovXG4gIGFzeW5jIHN0YXJ0U2VydmljZSAoc2VydmljZU5hbWUsIHRpbWVvdXQgPSA1MDAwKSB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuX3BsaXN0U2VydmljZS5zZW5kUGxpc3RBbmRSZWNlaXZlKHtcbiAgICAgIExhYmVsOiBMQUJFTCxcbiAgICAgIFByb3RvY29sVmVyc2lvbjogUFJPVE9DT0xfVkVSU0lPTixcbiAgICAgIFJlcXVlc3Q6ICdTdGFydFNlcnZpY2UnLFxuICAgICAgU2VydmljZTogc2VydmljZU5hbWUsXG4gICAgfSwgdGltZW91dCk7XG5cbiAgICBpZiAoZGF0YS5FcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgeyBMb2NrZG93biwgTE9DS0RPV05fUE9SVCB9O1xuZXhwb3J0IGRlZmF1bHQgTG9ja2Rvd247XG4iXSwiZmlsZSI6ImxpYi9sb2NrZG93bi9pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
96
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2xvY2tkb3duL2luZGV4LmpzIiwibmFtZXMiOlsiTE9DS0RPV05fUE9SVCIsIkxBQkVMIiwiUFJPVE9DT0xfVkVSU0lPTiIsIkxvY2tkb3duIiwiQmFzZVNlcnZpY2VQbGlzdCIsInF1ZXJ5VHlwZSIsInRpbWVvdXQiLCJkYXRhIiwiX3BsaXN0U2VydmljZSIsInNlbmRQbGlzdEFuZFJlY2VpdmUiLCJMYWJlbCIsIlByb3RvY29sVmVyc2lvbiIsIlJlcXVlc3QiLCJUeXBlIiwiRXJyb3IiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhcnRTZXNzaW9uIiwiaG9zdElEIiwic3lzdGVtQlVJRCIsIkhvc3RJRCIsIlN5c3RlbUJVSUQiLCJTZXNzaW9uSUQiLCJzZXNzaW9uSUQiLCJlbmFibGVTZXNzaW9uU1NMIiwiRW5hYmxlU2Vzc2lvblNTTCIsImhvc3RQcml2YXRlS2V5IiwiaG9zdENlcnRpZmljYXRlIiwiZ2V0VmFsdWUiLCJxdWVyeSIsInBsaXN0IiwiT2JqZWN0IiwiYXNzaWduIiwiXyIsImlzTmlsIiwiVmFsdWUiLCJzdGFydFNlcnZpY2UiLCJzZXJ2aWNlTmFtZSIsIlNlcnZpY2UiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvbG9ja2Rvd24vaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJhc2VTZXJ2aWNlUGxpc3QgfSBmcm9tICcuLi9iYXNlLXNlcnZpY2UnO1xuXG5cbmNvbnN0IExPQ0tET1dOX1BPUlQgPSA2MjA3ODtcbmNvbnN0IExBQkVMID0gJ3VzYm11eGQnO1xuY29uc3QgUFJPVE9DT0xfVkVSU0lPTiA9IDI7XG5cbmNsYXNzIExvY2tkb3duIGV4dGVuZHMgQmFzZVNlcnZpY2VQbGlzdCB7XG4gIC8qKlxuICAgKiBNYWtlcyBhIHF1ZXJ5IHR5cGUgcmVxdWVzdCB0byBsb2NrZG93blxuICAgKiBAcGFyYW0ge251bWJlcn0gW3RpbWVvdXQ9NTAwMF0gdGhlIHRpbWVvdXQgb2YgcmVjZWl2aW5nIGEgcmVzcG9uc2UgZnJvbSBsb2NrZG93bmRcbiAgICogQHJldHVybnMge09iamVjdH1cbiAgICovXG4gIGFzeW5jIHF1ZXJ5VHlwZSAodGltZW91dCA9IDUwMDApIHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5fcGxpc3RTZXJ2aWNlLnNlbmRQbGlzdEFuZFJlY2VpdmUoe1xuICAgICAgTGFiZWw6IExBQkVMLFxuICAgICAgUHJvdG9jb2xWZXJzaW9uOiBQUk9UT0NPTF9WRVJTSU9OLFxuICAgICAgUmVxdWVzdDogJ1F1ZXJ5VHlwZSdcbiAgICB9LCB0aW1lb3V0KTtcbiAgICBpZiAoZGF0YS5SZXF1ZXN0ID09PSAnUXVlcnlUeXBlJyAmJiBkYXRhLlR5cGUgPT09ICdjb20uYXBwbGUubW9iaWxlLmxvY2tkb3duJykge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBkYXRhOiAke0pTT04uc3RyaW5naWZ5KGRhdGEpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgYSBsb2NrZG93biBzZXNzaW9uIHdoaWNoIGFsbG93cyB0byB1c2UgY2VydGFpbiBhcGlzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBob3N0SUQgdGhlIGhvc3QgaWQgd2hpY2ggY2FuIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBwYWlyIHJlY29yZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3lzdGVtQlVJRCB0aGUgaG9zdCBCVUlEIHdoaWNoIGNhbiBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgcGFpciByZWNvcmRcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0aW1lb3V0PTUwMDBdIHRoZSB0aW1lb3V0IG9mIHJlY2VpdmluZyBhIHJlc3BvbnNlIGZyb20gbG9ja2Rvd25kXG4gICAqIEByZXR1cm5zIHtPYmplY3R9XG4gICAqL1xuICBhc3luYyBzdGFydFNlc3Npb24gKGhvc3RJRCwgc3lzdGVtQlVJRCwgdGltZW91dCA9IDUwMDApIHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5fcGxpc3RTZXJ2aWNlLnNlbmRQbGlzdEFuZFJlY2VpdmUoe1xuICAgICAgTGFiZWw6IExBQkVMLFxuICAgICAgUHJvdG9jb2xWZXJzaW9uOiBQUk9UT0NPTF9WRVJTSU9OLFxuICAgICAgUmVxdWVzdDogJ1N0YXJ0U2Vzc2lvbicsXG4gICAgICBIb3N0SUQ6IGhvc3RJRCxcbiAgICAgIFN5c3RlbUJVSUQ6IHN5c3RlbUJVSURcbiAgICB9LCB0aW1lb3V0KTtcblxuICAgIGlmIChkYXRhLlJlcXVlc3QgPT09ICdTdGFydFNlc3Npb24nICYmIGRhdGEuU2Vzc2lvbklEKSB7XG4gICAgICByZXR1cm4geyBzZXNzaW9uSUQ6IGRhdGEuU2Vzc2lvbklELCBlbmFibGVTZXNzaW9uU1NMOiBkYXRhLkVuYWJsZVNlc3Npb25TU0wgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMgc3NsIGluIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBzb2NrZXQgY29ubmVjdGlvblxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gaG9zdFByaXZhdGVLZXkgdGhlIHByaXZhdGUga2V5IHdoaWNoIGNhbiBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgcGFpciByZWNvcmRcbiAgICogQHBhcmFtIHtCdWZmZXJ9IGhvc3RDZXJ0aWZpY2F0ZSB0aGUgY2VydGlmaWNhdGUgd2hpY2ggY2FuIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBwYWlyIHJlY29yZFxuICAgKi9cbiAgZW5hYmxlU2Vzc2lvblNTTCAoaG9zdFByaXZhdGVLZXksIGhvc3RDZXJ0aWZpY2F0ZSkge1xuICAgIHRoaXMuX3BsaXN0U2VydmljZS5lbmFibGVTZXNzaW9uU1NMKGhvc3RQcml2YXRlS2V5LCBob3N0Q2VydGlmaWNhdGUpO1xuICB9XG5cbiAgLyoqXG4gICogQHR5cGVkZWYge09iamVjdH0gUXVlcnlcbiAgKlxuICAqIEBwcm9wZXJ0eSB7P3N0cmluZ30ga2V5IFRoZSBrZXkgd2Ugd2FudCB0byBhY2Nlc3NcbiAgKiBAcHJvcGVydHkgez9zdHJpbmd9IGRvbWFpbiBUaGUgZG9tYWluIHdoZXJlIHdlIHdhbnQgdG8gYWNjZXNzXG4gICovXG5cbiAgLyoqXG4gICAqIEdldHMgdmFsdWVzIGZyb20gdGhlIGRldmljZSBhY2NvcmRpbmcgdG8gdGhlIHF1ZXJ5IHBhc3NlZFxuICAgKlxuICAgKiBAcGFyYW0ge1F1ZXJ5fSBxdWVyeSB0aGUgcXVlcnkgd2Ugd2FudCB0byBzZW5kIHRvIGxvY2tkb3duZFxuICAgKiBAcGFyYW0ge251bWJlcn0gW3RpbWVvdXQ9NTAwMF0gdGhlIHRpbWVvdXQgb2YgcmVjZWl2aW5nIGEgcmVzcG9uc2UgZnJvbSBsb2NrZG93bmRcbiAgICogQHJldHVybnMgeyp9IFRoZSBhY3R1YWwgcmVzcG9uc2UgdmFsdWUuIEl0IHNob3VsZCBuZXZlciBiZSBgbnVsbGAgb3IgYHVuZGVmaW5lZGBcbiAgICogQHRocm93cyB7RXJyb3J9IElmIGFuIHVuZXhwZWN0ZWQgcmVzcG9uc2UgaXMgcmVjZWl2ZWQgZnJvbSBsb2NrZG93bmRcbiAgICovXG4gIGFzeW5jIGdldFZhbHVlIChxdWVyeSA9IHt9LCB0aW1lb3V0ID0gNTAwMCkge1xuICAgIGNvbnN0IHBsaXN0ID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICBMYWJlbDogTEFCRUwsXG4gICAgICBQcm90b2NvbFZlcnNpb246IFBST1RPQ09MX1ZFUlNJT04sXG4gICAgICBSZXF1ZXN0OiAnR2V0VmFsdWUnXG4gICAgfSwgcXVlcnkpO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLl9wbGlzdFNlcnZpY2Uuc2VuZFBsaXN0QW5kUmVjZWl2ZShwbGlzdCwgdGltZW91dCk7XG4gICAgaWYgKGRhdGE/LlJlcXVlc3QgPT09ICdHZXRWYWx1ZScgJiYgIV8uaXNOaWwoZGF0YT8uVmFsdWUpKSB7XG4gICAgICByZXR1cm4gZGF0YS5WYWx1ZTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGRhdGEgcmVjZWl2ZWQgZm9yICR7SlNPTi5zdHJpbmdpZnkocXVlcnkpfSByZXF1ZXN0OiBgICtcbiAgICAgIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgYSBzZXJ2aWNlIG9uIHRoZSBwaG9uZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZXJ2aWNlTmFtZSB0aGUgbmFtZSBvZiB0aGUgc2VydmljZSB3aGljaCB3ZSB3YW50IHRvIHN0YXJ0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbdGltZW91dD01MDAwXSB0aGUgdGltZW91dCBvZiByZWNlaXZpbmcgYSByZXNwb25zZSBmcm9tIGxvY2tkb3duZFxuICAgKiBAcmV0dXJucyB7T2JqZWN0fVxuICAgKi9cbiAgYXN5bmMgc3RhcnRTZXJ2aWNlIChzZXJ2aWNlTmFtZSwgdGltZW91dCA9IDUwMDApIHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5fcGxpc3RTZXJ2aWNlLnNlbmRQbGlzdEFuZFJlY2VpdmUoe1xuICAgICAgTGFiZWw6IExBQkVMLFxuICAgICAgUHJvdG9jb2xWZXJzaW9uOiBQUk9UT0NPTF9WRVJTSU9OLFxuICAgICAgUmVxdWVzdDogJ1N0YXJ0U2VydmljZScsXG4gICAgICBTZXJ2aWNlOiBzZXJ2aWNlTmFtZSxcbiAgICB9LCB0aW1lb3V0KTtcblxuICAgIGlmIChkYXRhLkVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgZGF0YTogJHtKU09OLnN0cmluZ2lmeShkYXRhKX1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7IExvY2tkb3duLCBMT0NLRE9XTl9QT1JUIH07XG5leHBvcnQgZGVm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