@appium/base-driver 8.1.2 → 8.2.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 (70) hide show
  1. package/build/lib/basedriver/capabilities.js +3 -1
  2. package/build/lib/basedriver/commands/index.js +2 -4
  3. package/build/lib/basedriver/driver.js +8 -10
  4. package/build/lib/basedriver/helpers.js +140 -82
  5. package/build/lib/express/express-logging.js +2 -2
  6. package/build/lib/index.js +126 -0
  7. package/build/lib/jsonwp-proxy/protocol-converter.js +2 -5
  8. package/build/lib/jsonwp-proxy/proxy.js +2 -5
  9. package/build/lib/protocol/errors.js +4 -2
  10. package/build/lib/protocol/helpers.js +3 -20
  11. package/build/lib/protocol/index.js +13 -1
  12. package/build/lib/protocol/protocol.js +26 -25
  13. package/build/lib/protocol/routes.js +1 -10
  14. package/build/test/basedriver/capability-specs.js +10 -10
  15. package/build/test/basedriver/commands/event-specs.js +10 -10
  16. package/build/test/basedriver/driver-e2e-specs.js +3 -3
  17. package/build/test/basedriver/driver-e2e-tests.js +6 -223
  18. package/build/test/basedriver/driver-specs.js +3 -3
  19. package/build/test/basedriver/driver-tests.js +6 -6
  20. package/build/test/basedriver/helpers-specs.js +5 -1
  21. package/build/test/basedriver/timeout-specs.js +7 -7
  22. package/build/test/basedriver/websockets-e2e-specs.js +5 -5
  23. package/build/test/express/server-e2e-specs.js +156 -0
  24. package/build/test/express/server-specs.js +151 -0
  25. package/build/test/express/static-specs.js +23 -0
  26. package/build/test/helpers.js +57 -0
  27. package/build/test/jsonwp-proxy/mock-request.js +93 -0
  28. package/build/test/jsonwp-proxy/protocol-converter-specs.js +173 -0
  29. package/build/test/jsonwp-proxy/proxy-e2e-specs.js +61 -0
  30. package/build/test/jsonwp-proxy/proxy-specs.js +294 -0
  31. package/build/test/jsonwp-proxy/url-specs.js +167 -0
  32. package/build/test/jsonwp-status/status-specs.js +36 -0
  33. package/build/test/protocol/errors-specs.js +388 -0
  34. package/build/test/protocol/fake-driver.js +168 -0
  35. package/build/test/protocol/helpers.js +27 -0
  36. package/build/test/protocol/protocol-e2e-specs.js +1182 -0
  37. package/build/test/protocol/routes-specs.js +82 -0
  38. package/build/test/protocol/validator-specs.js +151 -0
  39. package/index.d.ts +5 -3
  40. package/index.js +1 -62
  41. package/lib/basedriver/capabilities.js +3 -0
  42. package/lib/basedriver/commands/index.js +0 -2
  43. package/lib/basedriver/driver.js +6 -26
  44. package/lib/basedriver/helpers.js +202 -85
  45. package/lib/express/express-logging.js +1 -1
  46. package/lib/index.js +64 -0
  47. package/lib/jsonwp-proxy/protocol-converter.js +1 -5
  48. package/lib/jsonwp-proxy/proxy.js +1 -3
  49. package/lib/protocol/errors.js +1 -1
  50. package/lib/protocol/helpers.js +5 -25
  51. package/lib/protocol/index.js +3 -1
  52. package/lib/protocol/protocol.js +26 -31
  53. package/lib/protocol/routes.js +0 -3
  54. package/package.json +8 -16
  55. package/test/basedriver/capability-specs.js +1 -1
  56. package/test/basedriver/commands/event-specs.js +1 -1
  57. package/test/basedriver/driver-e2e-specs.js +1 -1
  58. package/test/basedriver/driver-e2e-tests.js +1 -179
  59. package/test/basedriver/driver-specs.js +1 -1
  60. package/test/basedriver/driver-tests.js +3 -3
  61. package/test/basedriver/helpers-specs.js +4 -0
  62. package/test/basedriver/timeout-specs.js +1 -1
  63. package/test/basedriver/websockets-e2e-specs.js +1 -1
  64. package/build/index.js +0 -120
  65. package/build/lib/basedriver/commands/execute-child.js +0 -137
  66. package/build/lib/basedriver/commands/execute.js +0 -119
  67. package/build/test/basedriver/fixtures/custom-element-finder-bad.js +0 -12
  68. package/build/test/basedriver/fixtures/custom-element-finder.js +0 -36
  69. package/lib/basedriver/commands/execute-child.js +0 -132
  70. package/lib/basedriver/commands/execute.js +0 -126
@@ -6,11 +6,11 @@ require("source-map-support/register");
6
6
 
7
7
  var _lodash = _interopRequireDefault(require("lodash"));
8
8
 
9
- var _2 = require("../../..");
9
+ var _lib = require("../../../lib");
10
10
 
11
11
  describe('logging custom events', function () {
12
12
  it('should allow logging of events', async function () {
13
- const d = new _2.BaseDriver();
13
+ const d = new _lib.BaseDriver();
14
14
 
15
15
  d._eventHistory.should.eql({
16
16
  commands: []
@@ -21,7 +21,7 @@ describe('logging custom events', function () {
21
21
  _lodash.default.keys(d._eventHistory).should.eql(['commands', 'myorg:myevent']);
22
22
  });
23
23
  it('should get all events including custom ones', async function () {
24
- const d = new _2.BaseDriver();
24
+ const d = new _lib.BaseDriver();
25
25
 
26
26
  d._eventHistory.should.eql({
27
27
  commands: []
@@ -36,7 +36,7 @@ describe('logging custom events', function () {
36
36
  });
37
37
  describe('#getLogEvents', function () {
38
38
  it('should allow to get all events', async function () {
39
- const d = new _2.BaseDriver();
39
+ const d = new _lib.BaseDriver();
40
40
 
41
41
  d._eventHistory.should.eql({
42
42
  commands: []
@@ -49,7 +49,7 @@ describe('#getLogEvents', function () {
49
49
  });
50
50
  });
51
51
  it('should filter with testCommand', async function () {
52
- const d = new _2.BaseDriver();
52
+ const d = new _lib.BaseDriver();
53
53
 
54
54
  d._eventHistory.should.eql({
55
55
  commands: []
@@ -61,7 +61,7 @@ describe('#getLogEvents', function () {
61
61
  });
62
62
  });
63
63
  it('should not filter with wrong but can be a part of the event name', async function () {
64
- const d = new _2.BaseDriver();
64
+ const d = new _lib.BaseDriver();
65
65
 
66
66
  d._eventHistory.should.eql({
67
67
  commands: []
@@ -71,7 +71,7 @@ describe('#getLogEvents', function () {
71
71
  await d.getLogEvents('testCommandDummy').should.eql({});
72
72
  });
73
73
  it('should filter with multiple event keys', async function () {
74
- const d = new _2.BaseDriver();
74
+ const d = new _lib.BaseDriver();
75
75
 
76
76
  d._eventHistory.should.eql({
77
77
  commands: []
@@ -85,7 +85,7 @@ describe('#getLogEvents', function () {
85
85
  });
86
86
  });
87
87
  it('should filter with custom events', async function () {
88
- const d = new _2.BaseDriver();
88
+ const d = new _lib.BaseDriver();
89
89
 
90
90
  d._eventHistory.should.eql({
91
91
  commands: []
@@ -97,7 +97,7 @@ describe('#getLogEvents', function () {
97
97
  });
98
98
  });
99
99
  it('should not filter with no existed event name', async function () {
100
- const d = new _2.BaseDriver();
100
+ const d = new _lib.BaseDriver();
101
101
 
102
102
  d._eventHistory.should.eql({
103
103
  commands: []
@@ -109,4 +109,4 @@ describe('#getLogEvents', function () {
109
109
  });require('source-map-support').install();
110
110
 
111
111
 
112
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9jb21tYW5kcy9ldmVudC1zcGVjcy5qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsIml0IiwiZCIsIkJhc2VEcml2ZXIiLCJfZXZlbnRIaXN0b3J5Iiwic2hvdWxkIiwiZXFsIiwiY29tbWFuZHMiLCJsb2dDdXN0b21FdmVudCIsIl8iLCJrZXlzIiwibG9nRXZlbnQiLCJldmVudHMiLCJnZXRMb2dFdmVudHMiLCJ0ZXN0Q29tbWFuZCIsInRlc3RDb21tYW5kMiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBSUFBLFFBQVEsQ0FBQyx1QkFBRCxFQUEwQixZQUFZO0FBQzVDQyxFQUFBQSxFQUFFLENBQUMsZ0NBQUQsRUFBbUMsa0JBQWtCO0FBQ3JELFVBQU1DLENBQUMsR0FBRyxJQUFJQyxhQUFKLEVBQVY7O0FBQ0FELElBQUFBLENBQUMsQ0FBQ0UsYUFBRixDQUFnQkMsTUFBaEIsQ0FBdUJDLEdBQXZCLENBQTJCO0FBQUNDLE1BQUFBLFFBQVEsRUFBRTtBQUFYLEtBQTNCOztBQUNBLFVBQU1MLENBQUMsQ0FBQ00sY0FBRixDQUFpQixPQUFqQixFQUEwQixTQUExQixDQUFOOztBQUNBQyxvQkFBRUMsSUFBRixDQUFPUixDQUFDLENBQUNFLGFBQVQsRUFBd0JDLE1BQXhCLENBQStCQyxHQUEvQixDQUFtQyxDQUFDLFVBQUQsRUFBYSxlQUFiLENBQW5DO0FBQ0QsR0FMQyxDQUFGO0FBTUFMLEVBQUFBLEVBQUUsQ0FBQyw2Q0FBRCxFQUFnRCxrQkFBa0I7QUFDbEUsVUFBTUMsQ0FBQyxHQUFHLElBQUlDLGFBQUosRUFBVjs7QUFDQUQsSUFBQUEsQ0FBQyxDQUFDRSxhQUFGLENBQWdCQyxNQUFoQixDQUF1QkMsR0FBdkIsQ0FBMkI7QUFBQ0MsTUFBQUEsUUFBUSxFQUFFO0FBQVgsS0FBM0I7O0FBQ0FMLElBQUFBLENBQUMsQ0FBQ1MsUUFBRixDQUFXLGFBQVg7QUFDQSxVQUFNVCxDQUFDLENBQUNNLGNBQUYsQ0FBaUIsT0FB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UixNQUFoQyxDQUF1Q0MsR0FBdkMsQ0FBMkMsRUFBM0MsQ0FBTjtBQUNELEdBTEMsQ0FBRjtBQU1ELENBbkRPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmFzZURyaXZlciB9IGZyb20gJy4uLy4uLy4uJztcblxuXG5cbmRlc2NyaWJlKCdsb2dnaW5nIGN1c3RvbSBldmVudHMnLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdzaG91bGQgYWxsb3cgbG9nZ2luZyBvZiBldmVudHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZCA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnNob3VsZC5lcWwoe2NvbW1hbmRzOiBbXX0pO1xuICAgIGF3YWl0IGQubG9nQ3VzdG9tRXZlbnQoJ215b3JnJywgJ215ZXZlbnQnKTtcbiAgICBfLmtleXMoZC5fZXZlbnRIaXN0b3J5KS5zaG91bGQuZXFsKFsnY29tbWFuZHMnLCAnbXlvcmc6bXlldmVudCddKTtcbiAgfSk7XG4gIGl0KCdzaG91bGQgZ2V0IGFsbCBldmVudHMgaW5jbHVkaW5nIGN1c3RvbSBvbmVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGQgPSBuZXcgQmFzZURyaXZlcigpO1xuICAgIGQuX2V2ZW50SGlzdG9yeS5zaG91bGQuZXFsKHtjb21tYW5kczogW119KTtcbiAgICBkLmxvZ0V2ZW50KCdhcHBpdW1FdmVudCcpO1xuICAgIGF3YWl0IGQubG9nQ3VzdG9tRXZlbnQoJ215b3JnJywgJ215ZXZlbnQnKTtcbiAgICBjb25zdCBldmVudHMgPSBhd2FpdCBkLmdldExvZ0V2ZW50cygpO1xuICAgIF8ua2V5cyhldmVudHMpLnNob3VsZC5lcWwoWydjb21tYW5kcycsICdhcHBpdW1FdmVudCcsICdteW9yZzpteWV2ZW50J10pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnI2dldExvZ0V2ZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ3Nob3VsZCBhbGxvdyB0byBnZXQgYWxsIGV2ZW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBkLl9ldmVudEhpc3Rvcnkuc2hvdWxkLmVxbCh7Y29tbWFuZHM6IFtdfSk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnRlc3RDb21tYW5kID0gWycxJywgJzInLCAnMyddO1xuICAgIGF3YWl0IGQuZ2V0TG9nRXZlbnRzKCkuc2hvdWxkLmVxbCh7XG4gICAgICBjb21tYW5kczogW10sIHRlc3RDb21tYW5kOiBbJzEnLCAnMicsICczJ11cbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmaWx0ZXIgd2l0aCB0ZXN0Q29tbWFuZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBkLl9ldmVudEhpc3Rvcnkuc2hvdWxkLmVxbCh7Y29tbWFuZHM6IFtdfSk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnRlc3RDb21tYW5kID0gWycxJywgJzInLCAnMyddO1xuICAgIGF3YWl0IGQuZ2V0TG9nRXZlbnRzKCd0ZXN0Q29tbWFuZCcpLnNob3VsZC5lcWwoe1xuICAgICAgdGVzdENvbW1hbmQ6IFsnMScsICcyJywgJzMnXVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBmaWx0ZXIgd2l0aCB3cm9uZyBidXQgY2FuIGJlIGEgcGFydCBvZiB0aGUgZXZlbnQgbmFtZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBkLl9ldmVudEhpc3Rvcnkuc2hvdWxkLmVxbCh7Y29tbWFuZHM6IFtdfSk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnRlc3RDb21tYW5kID0gWycxJywgJzInLCAnMyddO1xuICAgIGF3YWl0IGQuZ2V0TG9nRXZlbnRzKCd0ZXN0Q29tbWFuZER1bW15Jykuc2hvdWxkLmVxbCh7fSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmlsdGVyIHdpdGggbXVsdGlwbGUgZXZlbnQga2V5cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBkLl9ldmVudEhpc3Rvcnkuc2hvdWxkLmVxbCh7Y29tbWFuZHM6IFtdfSk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnRlc3RDb21tYW5kID0gWycxJywgJzInLCAnMyddO1xuICAgIGQuX2V2ZW50SGlzdG9yeS50ZXN0Q29tbWFuZDIgPSBbJzQnLCAnNSddO1xuICAgIGF3YWl0IGQuZ2V0TG9nRXZlbnRzKFsndGVzdENvbW1hbmQnLCAndGVzdENvbW1hbmQyJ10pLnNob3VsZC5lcWwoe1xuICAgICAgdGVzdENvbW1hbmQ6IFsnMScsICcyJywgJzMnXSwgdGVzdENvbW1hbmQyOiBbJzQnLCAnNSddXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmlsdGVyIHdpdGggY3VzdG9tIGV2ZW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBkLl9ldmVudEhpc3Rvcnkuc2hvdWxkLmVxbCh7Y29tbWFuZHM6IFtdfSk7XG4gICAgZC5fZXZlbnRIaXN0b3J5WydjdXN0b206YXBwaXVtRXZlbnQnXSA9IFsnMScsICcyJywgJzMnXTtcbiAgICBhd2FpdCBkLmdldExvZ0V2ZW50cyhbJ2N1c3RvbTphcHBpdW1FdmVudCddKS5zaG91bGQuZXFsKHtcbiAgICAgICdjdXN0b206YXBwaXVtRXZlbnQnOiBbJzEnLCAnMicsICczJ11cbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgZmlsdGVyIHdpdGggbm8gZXhpc3RlZCBldmVudCBuYW1lJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGQgPSBuZXcgQmFzZURyaXZlcigpO1xuICAgIGQuX2V2ZW50SGlzdG9yeS5zaG91bGQuZXFsKHtjb21tYW5kczogW119KTtcbiAgICBkLl9ldmVudEhpc3RvcnkudGVzdENvbW1hbmQgPSBbJzEnLCAnMicsICczJ107XG4gICAgYXdhaXQgZC5nZXRMb2dFdmVudHMoWydub0V2ZW50TmFtZSddKS5zaG91bGQuZXFsKHt9KTtcbiAgfSk7XG59KTtcbiJdLCJmaWxlIjoidGVzdC9iYXNlZHJpdmVyL2NvbW1hbmRzL2V2ZW50LXNwZWNzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uIn0=
112
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9jb21tYW5kcy9ldmVudC1zcGVjcy5qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsIml0IiwiZCIsIkJhc2VEcml2ZXIiLCJfZXZlbnRIaXN0b3J5Iiwic2hvdWxkIiwiZXFsIiwiY29tbWFuZHMiLCJsb2dDdXN0b21FdmVudCIsIl8iLCJrZXlzIiwibG9nRXZlbnQiLCJldmVudHMiLCJnZXRMb2dFdmVudHMiLCJ0ZXN0Q29tbWFuZCIsInRlc3RDb21tYW5kMiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBSUFBLFFBQVEsQ0FBQyx1QkFBRCxFQUEwQixZQUFZO0FBQzVDQyxFQUFBQSxFQUFFLENBQUMsZ0NBQUQsRUFBbUMsa0JBQWtCO0FBQ3JELFVBQU1DLENBQUMsR0FBRyxJQUFJQyxlQUFKLEVBQVY7O0FBQ0FELElBQUFBLENBQUMsQ0FBQ0UsYUFBRixDQUFnQkMsTUFBaEIsQ0FBdUJDLEdBQXZCLENBQTJCO0FBQUNDLE1BQUFBLFFBQVEsRUFBRTtBQUFYLEtBQTNCOztBQUNBLFVBQU1MLENBQUMsQ0FBQ00sY0FBRixDQUFpQixPQUFqQixFQUEwQixTQUExQixDQUFOOztBQUNBQyxvQkFBRUMsSUFBRixDQUFPUixDQUFDLENBQUNFLGFBQVQsRUFBd0JDLE1BQXhCLENBQStCQyxHQUEvQixDQUFtQyxDQUFDLFVBQUQsRUFBYSxlQUFiLENBQW5DO0FBQ0QsR0FMQyxDQUFGO0FBTUFMLEVBQUFBLEVBQUUsQ0FBQyw2Q0FBRCxFQUFnRCxrQkFBa0I7QUFDbEUsVUFBTUMsQ0FBQyxHQUFHLElBQUlDLGVBQUosRUFBVjs7QUFDQUQsSUFBQUEsQ0FBQyxDQUFDRSxhQUFGLENBQWdCQyxNQUFoQixDQUF1QkMsR0FBdkIsQ0FBMkI7QUFBQ0MsTUFBQUEsUUFBUSxFQUFFO0FBQVgsS0FBM0I7O0FBQ0FMLElBQUFBLENBQUMsQ0FBQ1MsUUFBRixDQUFXLGFBQVg7QUFDQSxVQUFNVCxDQUFDLENBQUNNLGNBQUYsQ0FBaUIsT0FB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UixNQUFoQyxDQUF1Q0MsR0FBdkMsQ0FBMkMsRUFBM0MsQ0FBTjtBQUNELEdBTEMsQ0FBRjtBQU1ELENBbkRPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmFzZURyaXZlciB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5cblxuXG5kZXNjcmliZSgnbG9nZ2luZyBjdXN0b20gZXZlbnRzJywgZnVuY3Rpb24gKCkge1xuICBpdCgnc2hvdWxkIGFsbG93IGxvZ2dpbmcgb2YgZXZlbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGQgPSBuZXcgQmFzZURyaXZlcigpO1xuICAgIGQuX2V2ZW50SGlzdG9yeS5zaG91bGQuZXFsKHtjb21tYW5kczogW119KTtcbiAgICBhd2FpdCBkLmxvZ0N1c3RvbUV2ZW50KCdteW9yZycsICdteWV2ZW50Jyk7XG4gICAgXy5rZXlzKGQuX2V2ZW50SGlzdG9yeSkuc2hvdWxkLmVxbChbJ2NvbW1hbmRzJywgJ215b3JnOm15ZXZlbnQnXSk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIGdldCBhbGwgZXZlbnRzIGluY2x1ZGluZyBjdXN0b20gb25lcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBkLl9ldmVudEhpc3Rvcnkuc2hvdWxkLmVxbCh7Y29tbWFuZHM6IFtdfSk7XG4gICAgZC5sb2dFdmVudCgnYXBwaXVtRXZlbnQnKTtcbiAgICBhd2FpdCBkLmxvZ0N1c3RvbUV2ZW50KCdteW9yZycsICdteWV2ZW50Jyk7XG4gICAgY29uc3QgZXZlbnRzID0gYXdhaXQgZC5nZXRMb2dFdmVudHMoKTtcbiAgICBfLmtleXMoZXZlbnRzKS5zaG91bGQuZXFsKFsnY29tbWFuZHMnLCAnYXBwaXVtRXZlbnQnLCAnbXlvcmc6bXlldmVudCddKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJyNnZXRMb2dFdmVudHMnLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdzaG91bGQgYWxsb3cgdG8gZ2V0IGFsbCBldmVudHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZCA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnNob3VsZC5lcWwoe2NvbW1hbmRzOiBbXX0pO1xuICAgIGQuX2V2ZW50SGlzdG9yeS50ZXN0Q29tbWFuZCA9IFsnMScsICcyJywgJzMnXTtcbiAgICBhd2FpdCBkLmdldExvZ0V2ZW50cygpLnNob3VsZC5lcWwoe1xuICAgICAgY29tbWFuZHM6IFtdLCB0ZXN0Q29tbWFuZDogWycxJywgJzInLCAnMyddXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmlsdGVyIHdpdGggdGVzdENvbW1hbmQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZCA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnNob3VsZC5lcWwoe2NvbW1hbmRzOiBbXX0pO1xuICAgIGQuX2V2ZW50SGlzdG9yeS50ZXN0Q29tbWFuZCA9IFsnMScsICcyJywgJzMnXTtcbiAgICBhd2FpdCBkLmdldExvZ0V2ZW50cygndGVzdENvbW1hbmQnKS5zaG91bGQuZXFsKHtcbiAgICAgIHRlc3RDb21tYW5kOiBbJzEnLCAnMicsICczJ11cbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgZmlsdGVyIHdpdGggd3JvbmcgYnV0IGNhbiBiZSBhIHBhcnQgb2YgdGhlIGV2ZW50IG5hbWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZCA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnNob3VsZC5lcWwoe2NvbW1hbmRzOiBbXX0pO1xuICAgIGQuX2V2ZW50SGlzdG9yeS50ZXN0Q29tbWFuZCA9IFsnMScsICcyJywgJzMnXTtcbiAgICBhd2FpdCBkLmdldExvZ0V2ZW50cygndGVzdENvbW1hbmREdW1teScpLnNob3VsZC5lcWwoe30pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZpbHRlciB3aXRoIG11bHRpcGxlIGV2ZW50IGtleXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZCA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnNob3VsZC5lcWwoe2NvbW1hbmRzOiBbXX0pO1xuICAgIGQuX2V2ZW50SGlzdG9yeS50ZXN0Q29tbWFuZCA9IFsnMScsICcyJywgJzMnXTtcbiAgICBkLl9ldmVudEhpc3RvcnkudGVzdENvbW1hbmQyID0gWyc0JywgJzUnXTtcbiAgICBhd2FpdCBkLmdldExvZ0V2ZW50cyhbJ3Rlc3RDb21tYW5kJywgJ3Rlc3RDb21tYW5kMiddKS5zaG91bGQuZXFsKHtcbiAgICAgIHRlc3RDb21tYW5kOiBbJzEnLCAnMicsICczJ10sIHRlc3RDb21tYW5kMjogWyc0JywgJzUnXVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZpbHRlciB3aXRoIGN1c3RvbSBldmVudHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZCA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnNob3VsZC5lcWwoe2NvbW1hbmRzOiBbXX0pO1xuICAgIGQuX2V2ZW50SGlzdG9yeVsnY3VzdG9tOmFwcGl1bUV2ZW50J10gPSBbJzEnLCAnMicsICczJ107XG4gICAgYXdhaXQgZC5nZXRMb2dFdmVudHMoWydjdXN0b206YXBwaXVtRXZlbnQnXSkuc2hvdWxkLmVxbCh7XG4gICAgICAnY3VzdG9tOmFwcGl1bUV2ZW50JzogWycxJywgJzInLCAnMyddXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IGZpbHRlciB3aXRoIG5vIGV4aXN0ZWQgZXZlbnQgbmFtZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBkLl9ldmVudEhpc3Rvcnkuc2hvdWxkLmVxbCh7Y29tbWFuZHM6IFtdfSk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnRlc3RDb21tYW5kID0gWycxJywgJzInLCAnMyddO1xuICAgIGF3YWl0IGQuZ2V0TG9nRXZlbnRzKFsnbm9FdmVudE5hbWUnXSkuc2hvdWxkLmVxbCh7fSk7XG4gIH0pO1xufSk7XG4iXSwiZmlsZSI6InRlc3QvYmFzZWRyaXZlci9jb21tYW5kcy9ldmVudC1zcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLiJ9
@@ -4,14 +4,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
 
5
5
  require("source-map-support/register");
6
6
 
7
- var _ = _interopRequireDefault(require("../.."));
7
+ var _lib = _interopRequireDefault(require("../../lib"));
8
8
 
9
9
  var _driverE2eTests = _interopRequireDefault(require("./driver-e2e-tests"));
10
10
 
11
- (0, _driverE2eTests.default)(_.default, {
11
+ (0, _driverE2eTests.default)(_lib.default, {
12
12
  platformName: 'iOS',
13
13
  'appium:deviceName': 'Delorean'
14
14
  });require('source-map-support').install();
15
15
 
16
16
 
17
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9kcml2ZXItZTJlLXNwZWNzLmpzIl0sIm5hbWVzIjpbIkJhc2VEcml2ZXIiLCJwbGF0Zm9ybU5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBOztBQUNBOztBQUNBLDZCQUFtQkEsU0FBbkIsRUFBK0I7QUFDN0JDLEVBQUFBLFlBQVksRUFBRSxLQURlO0FBRTdCLHVCQUFxQjtBQUZRLENBQS9CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1vY2hhXG5cbmltcG9ydCBCYXNlRHJpdmVyIGZyb20gJy4uLy4uJztcbmltcG9ydCBiYXNlRHJpdmVyRTJFVGVzdHMgZnJvbSAnLi9kcml2ZXItZTJlLXRlc3RzJztcbmJhc2VEcml2ZXJFMkVUZXN0cyhCYXNlRHJpdmVyLCB7XG4gIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbidcbn0pO1xuIl0sImZpbGUiOiJ0ZXN0L2Jhc2Vkcml2ZXIvZHJpdmVyLWUyZS1zcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
17
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9kcml2ZXItZTJlLXNwZWNzLmpzIl0sIm5hbWVzIjpbIkJhc2VEcml2ZXIiLCJwbGF0Zm9ybU5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBOztBQUNBOztBQUNBLDZCQUFtQkEsWUFBbkIsRUFBK0I7QUFDN0JDLEVBQUFBLFlBQVksRUFBRSxLQURlO0FBRTdCLHVCQUFxQjtBQUZRLENBQS9CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1vY2hhXG5cbmltcG9ydCBCYXNlRHJpdmVyIGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgYmFzZURyaXZlckUyRVRlc3RzIGZyb20gJy4vZHJpdmVyLWUyZS10ZXN0cyc7XG5iYXNlRHJpdmVyRTJFVGVzdHMoQmFzZURyaXZlciwge1xuICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nXG59KTtcbiJdLCJmaWxlIjoidGVzdC9iYXNlZHJpdmVyL2RyaXZlci1lMmUtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -11,9 +11,7 @@ require("source-map-support/register");
11
11
 
12
12
  var _lodash = _interopRequireDefault(require("lodash"));
13
13
 
14
- var _2 = require("../..");
15
-
16
- var _constants = require("../../lib/constants");
14
+ var _lib = require("../../lib");
17
15
 
18
16
  var _axios = _interopRequireDefault(require("axios"));
19
17
 
@@ -50,8 +48,8 @@ function baseDriverE2ETests(DriverClass, defaultCaps = {}) {
50
48
  port,
51
49
  address
52
50
  });
53
- baseServer = await (0, _2.server)({
54
- routeConfiguringFunction: (0, _2.routeConfiguringFunction)(d),
51
+ baseServer = await (0, _lib.server)({
52
+ routeConfiguringFunction: (0, _lib.routeConfiguringFunction)(d),
55
53
  port,
56
54
  hostname: _helpers.TEST_HOST
57
55
  });
@@ -324,7 +322,7 @@ function baseDriverE2ETests(DriverClass, defaultCaps = {}) {
324
322
  });
325
323
  describe('settings api', function () {
326
324
  before(function () {
327
- d.settings = new _2.DeviceSettings({
325
+ d.settings = new _lib.DeviceSettings({
328
326
  ignoreUnimportantViews: false
329
327
  });
330
328
  });
@@ -390,223 +388,8 @@ function baseDriverE2ETests(DriverClass, defaultCaps = {}) {
390
388
  await endSession(session.sessionId);
391
389
  });
392
390
  });
393
- describe('execute driver script', function () {
394
- let originalFindElement, sessionId;
395
- before(function () {
396
- d.allowInsecure = ['execute_driver_script'];
397
- originalFindElement = d.findElement;
398
-
399
- d.findElement = function (strategy, selector) {
400
- if (strategy === 'accessibility id' && selector === 'amazing') {
401
- return {
402
- [_constants.W3C_ELEMENT_KEY]: 'element-id-1'
403
- };
404
- }
405
-
406
- throw new _2.errors.NoSuchElementError('not found');
407
- }.bind(d);
408
- });
409
- beforeEach(async function () {
410
- ({
411
- sessionId
412
- } = await startSession(defaultCaps));
413
- });
414
- after(function () {
415
- d.findElement = originalFindElement;
416
- });
417
- afterEach(async function () {
418
- await endSession(sessionId);
419
- });
420
- it('should not work unless the allowInsecure feature flag is set', async function () {
421
- d._allowInsecure = d.allowInsecure;
422
-
423
- try {
424
- d.allowInsecure = [];
425
- const script = `return 'foo'`;
426
- await (0, _axios.default)({
427
- url: createAppiumTestURL(sessionId, 'appium/execute_driver'),
428
- method: POST,
429
- data: {
430
- script,
431
- type: 'wd'
432
- }
433
- }).should.eventually.be.rejected;
434
- await endSession(sessionId);
435
- } finally {
436
- d.allowInsecure = d._allowInsecure;
437
- }
438
- });
439
- it('should execute a webdriverio script in the context of session', async function () {
440
- const script = `
441
- const timeouts = await driver.getTimeouts();
442
- const status = await driver.status();
443
- return [timeouts, status];
444
- `;
445
- const {
446
- value
447
- } = (await (0, _axios.default)({
448
- url: createAppiumTestURL(sessionId, 'appium/execute_driver'),
449
- method: POST,
450
- data: {
451
- script,
452
- type: 'webdriverio'
453
- }
454
- })).data;
455
- const expectedTimeouts = {
456
- command: 250,
457
- implicit: 0
458
- };
459
- const expectedStatus = {};
460
- value.result.should.eql([expectedTimeouts, expectedStatus]);
461
- });
462
- it('should fail with any script type other than webdriverio currently', async function () {
463
- const script = `return 'foo'`;
464
- await (0, _axios.default)({
465
- url: createAppiumTestURL(sessionId, 'appium/execute_driver'),
466
- method: POST,
467
- data: {
468
- script,
469
- type: 'wd'
470
- }
471
- }).should.eventually.be.rejected;
472
- });
473
- it('should execute a webdriverio script that returns elements correctly', async function () {
474
- const script = `
475
- return await driver.$("~amazing");
476
- `;
477
- const {
478
- value
479
- } = (await (0, _axios.default)({
480
- url: createAppiumTestURL(sessionId, 'appium/execute_driver'),
481
- method: POST,
482
- data: {
483
- script
484
- }
485
- })).data;
486
- value.result.should.eql({
487
- [_constants.W3C_ELEMENT_KEY]: 'element-id-1',
488
- [_constants.MJSONWP_ELEMENT_KEY]: 'element-id-1'
489
- });
490
- });
491
- it('should execute a webdriverio script that returns elements in deep structure', async function () {
492
- const script = `
493
- const el = await driver.$("~amazing");
494
- return {element: el, elements: [el, el]};
495
- `;
496
- const {
497
- value
498
- } = (await (0, _axios.default)({
499
- url: createAppiumTestURL(sessionId, 'appium/execute_driver'),
500
- method: POST,
501
- data: {
502
- script
503
- }
504
- })).data;
505
- const elObj = {
506
- [_constants.W3C_ELEMENT_KEY]: 'element-id-1',
507
- [_constants.MJSONWP_ELEMENT_KEY]: 'element-id-1'
508
- };
509
- value.result.should.eql({
510
- element: elObj,
511
- elements: [elObj, elObj]
512
- });
513
- });
514
- it('should store and return logs to the user', async function () {
515
- const script = `
516
- console.log("foo");
517
- console.log("foo2");
518
- console.warn("bar");
519
- console.error("baz");
520
- return null;
521
- `;
522
- const {
523
- value
524
- } = (await (0, _axios.default)({
525
- url: createAppiumTestURL(sessionId, 'appium/execute_driver'),
526
- method: POST,
527
- data: {
528
- script
529
- }
530
- })).data;
531
- value.logs.should.eql({
532
- log: ['foo', 'foo2'],
533
- warn: ['bar'],
534
- error: ['baz']
535
- });
536
- });
537
- it('should have appium specific commands available', async function () {
538
- const script = `
539
- return typeof driver.lock;
540
- `;
541
- const {
542
- value
543
- } = (await (0, _axios.default)({
544
- url: createAppiumTestURL(sessionId, 'appium/execute_driver'),
545
- method: POST,
546
- data: {
547
- script
548
- }
549
- })).data;
550
- value.result.should.eql('function');
551
- });
552
- it('should correctly handle errors that happen in a webdriverio script', async function () {
553
- const script = `
554
- return await driver.$("~notfound");
555
- `;
556
- const {
557
- data
558
- } = await (0, _axios.default)({
559
- url: createAppiumTestURL(sessionId, 'appium/execute_driver'),
560
- method: POST,
561
- validateStatus: null,
562
- data: {
563
- script
564
- }
565
- });
566
- data.value.result.error.error.should.equal('no such element');
567
- data.value.result.error.message.should.equal('not found');
568
- data.value.result.error.stacktrace.should.includes('NoSuchElementError:');
569
- data.value.result.selector.should.equal('~notfound');
570
- data.value.result.sessionId.should.equal(sessionId);
571
- });
572
- it('should correctly handle errors that happen when a script cannot be compiled', async function () {
573
- const script = `
574
- return {;
575
- `;
576
- const {
577
- data
578
- } = await (0, _axios.default)({
579
- url: createAppiumTestURL(sessionId, 'appium/execute_driver'),
580
- method: POST,
581
- validateStatus: null,
582
- data: {
583
- script
584
- }
585
- });
586
- data.value.should.have.property('message');
587
- data.value.message.should.match(/An unknown server-side error occurred while processing the command. Original error: Could not execute driver script. Original error was: Error: Unexpected token '?;'?/);
588
- });
589
- it('should be able to set a timeout on a driver script', async function () {
590
- const script = `
591
- await Promise.delay(1000);
592
- return true;
593
- `;
594
- const {
595
- value
596
- } = (await (0, _axios.default)({
597
- url: createAppiumTestURL(sessionId, 'appium/execute_driver'),
598
- method: POST,
599
- validateStatus: null,
600
- data: {
601
- script,
602
- timeout: 50
603
- }
604
- })).data;
605
- value.message.should.match(/.+50.+timeout.+/);
606
- });
607
- });
608
391
 
609
- if (DriverClass === _2.BaseDriver) {
392
+ if (DriverClass === _lib.BaseDriver) {
610
393
  describe('special appium:options capability', function () {
611
394
  it('should be able to start a session with caps held in appium:options', async function () {
612
395
  const ret = await startSession({
@@ -629,4 +412,4 @@ var _default = baseDriverE2ETests;
629
412
  exports.default = _default;require('source-map-support').install();
630
413
 
631
414
 
632
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9kcml2ZXItZTJlLXRlc3RzLmpzIl0sIm5hbWVzIjpbIlBPU1QiLCJERUxFVEUiLCJNRVRIT0RTIiwiYmFzZURyaXZlckUyRVRlc3RzIiwiRHJpdmVyQ2xhc3MiLCJkZWZhdWx0Q2FwcyIsImFkZHJlc3MiLCJURVNUX0hPU1QiLCJwb3J0IiwiY2xhc3NOYW1lIiwibmFtZSIsImRlc2NyaWJlIiwiYmFzZVNlcnZlciIsImQiLCJuZXdTZXNzaW9uVVJMIiwiY3JlYXRlQXBwaXVtVGVzdFVSTCIsImNyZWF0ZVNlc3Npb25VUkwiLCJiZWZvcmUiLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJob3N0bmFtZSIsIl8iLCJhZnRlciIsImNsb3NlIiwic3RhcnRTZXNzaW9uIiwiY2FwcyIsInVybCIsIm1ldGhvZCIsImRhdGEiLCJjYXBhYmlsaXRpZXMiLCJhbHdheXNNYXRjaCIsImZpcnN0TWF0Y2giLCJ2YWx1ZSIsImVuZFNlc3Npb24iLCJpZCIsInZhbGlkYXRlU3RhdHVzIiwiZ2V0U2Vzc2lvbiIsIml0Iiwic2Vzc2lvbklkcyIsInRpbWVzIiwic2Vzc2lvbklkIiwiaGVhZGVycyIsInNpbXBsZSIsInJlc29sdmVXaXRoRnVsbFJlc3BvbnNlIiwicHVzaCIsInVuaXEiLCJsZW5ndGgiLCJzaG91bGQiLCJlcXVhbCIsInN0YXR1cyIsInJlcXMiLCJCIiwiYWxsIiwibWFwIiwieCIsImV4aXN0IiwicGxhdGZvcm1OYW1lIiwiZGV2aWNlTmFtZSIsInNraXAiLCJvcmlnaW5hbEZpbmRFbGVtZW50Iiwib3JpZ2luYWxGaW5kRWxlbWVudHMiLCJzdGFydFRpbWVvdXRTZXNzaW9uIiwidGltZW91dCIsImNsb25lRGVlcCIsImZpbmRFbGVtZW50IiwiYmluZCIsImZpbmRFbGVtZW50cyIsImRlbGF5IiwibmV3U2Vzc2lvbiIsIm5ld0NvbW1hbmRUaW1lb3V0TXMiLCJiZSIsImFib3ZlIiwic2Vzc2lvblVSTCIsInVzaW5nIiwiZXJyb3IiLCJyZXNwIiwic3RhcnQiLCJEYXRlIiwibm93IiwiZXFsIiwibm90Iiwibm9Db21tYW5kVGltZXIiLCJzZXR0aW5ncyIsIkRldmljZVNldHRpbmdzIiwiaWdub3JlVW5pbXBvcnRhbnRWaWV3cyIsImdldFNldHRpbmdzIiwiZmFsc2UiLCJ1cGRhdGUiLCJldmVudHVhbGx5IiwicmVqZWN0ZWRXaXRoIiwiX29sZEdldFN0YXR1cyIsImdldFN0YXR1cyIsInJlcVByb21pc2UiLCJzaHV0ZG93bkV2ZW50UHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzZXRUaW1lb3V0IiwiRXJyb3IiLCJvblVuZXhwZWN0ZWRTaHV0ZG93biIsInN0YXJ0VW5leHBlY3RlZFNodXRkb3duIiwibWVzc2FnZSIsImNvbnRhaW4iLCJzZXNzaW9uIiwicmVzIiwiZXZlbnRzIiwiT2JqZWN0IiwiYXNzaWduIiwibmV3U2Vzc2lvblJlcXVlc3RlZCIsIm5ld1Nlc3Npb25TdGFydGVkIiwiYSIsImFsbG93SW5zZWN1cmUiLCJzdHJhdGVneSIsInNlbGVjdG9yIiwiVzNDX0VMRU1FTlRfS0VZIiwiZXJyb3JzIiwiTm9TdWNoRWxlbWVudEVycm9yIiwiYmVmb3JlRWFjaCIsImFmdGVyRWFjaCIsIl9hbGxvd0luc2VjdXJlIiwic2NyaXB0IiwidHlwZSIsInJlamVjdGVkIiwiZXhwZWN0ZWRUaW1lb3V0cyIsImNvbW1hbmQiLCJpbXBsaWNpdCIsImV4cGVjdGVkU3RhdHVzIiwicmVzdWx0IiwiTUpTT05XUF9FTEVNRU5UX0tFWSIsImVsT2JqIiwiZWxlbWVudCIsImVsZW1lbnRzIiwibG9ncyIsImxvZyIsIndhcm4iLCJzdGFja3RyYWNlIiwiaW5jbHVkZXMiLCJoYXZlIiwicHJvcGVydHkiLCJtYXRjaCIsIkJhc2VEcml2ZXIiLCJyZXQiLCJQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVAiLCJwbGF0Zm9ybVZlcnNpb24iLCJvcHRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOztB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T0FoSSxVQUFBQSxDQUFDLENBQUNpSSxJQUFGLENBQU9ELGVBQVAsQ0FBdUIvRixNQUF2QixDQUE4QmdDLEdBQTlCLENBQWtDLE1BQWxDO0FBQ0FqRSxVQUFBQSxDQUFDLENBQUNpSSxJQUFGLENBQU90RixVQUFQLENBQWtCVixNQUFsQixDQUF5QmdDLEdBQXpCLENBQTZCLFdBQTdCO0FBQ0EsZ0JBQU05QyxVQUFVLENBQUMyRyxHQUFHLENBQUNwRyxTQUFMLENBQWhCO0FBQ0QsU0FYQyxDQUFGO0FBWUQsT0FiTyxDQUFSO0FBY0Q7QUFDRixHQXZnQk8sQ0FBUjtBQXdnQkQ7O2VBRWNwQyxrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBCYXNlRHJpdmVyLCBzZXJ2ZXIsIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiwgRGV2aWNlU2V0dGluZ3MsIGVycm9ycyB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7XG4gIE1KU09OV1BfRUxFTUVOVF9LRVksIFczQ19FTEVNRU5UX0tFWVxufSBmcm9tICcuLi8uLi9saWIvY29uc3RhbnRzJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQge1RFU1RfSE9TVCwgZ2V0VGVzdFBvcnQsIGNyZWF0ZUFwcGl1bVVSTCwgTUVUSE9EU30gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVAgfSBmcm9tICcuLi8uLi9saWIvYmFzZWRyaXZlci9jYXBhYmlsaXRpZXMnO1xuY29uc3Qge1BPU1QsIERFTEVURX0gPSBNRVRIT0RTO1xuXG5mdW5jdGlvbiBiYXNlRHJpdmVyRTJFVGVzdHMgKERyaXZlckNsYXNzLCBkZWZhdWx0Q2FwcyA9IHt9KSB7XG4gIGxldCBhZGRyZXNzID0gZGVmYXVsdENhcHNbJ2FwcGl1bTphZGRyZXNzJ10gPz8gVEVTVF9IT1NUO1xuICBsZXQgcG9ydCA9IGRlZmF1bHRDYXBzWydhcHBpdW06cG9ydCddO1xuICBjb25zdCBjbGFzc05hbWUgPSBEcml2ZXJDbGFzcy5uYW1lIHx8ICcodW5rbm93biBkcml2ZXIpJztcblxuICBkZXNjcmliZShgQmFzZURyaXZlciBFMkUgKGFzICR7Y2xhc3NOYW1lfSlgLCBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGJhc2VTZXJ2ZXIsIGQ7XG4gICAgLyoqXG4gICAgICAgKiBUaGlzIFVSTCBjcmVhdGVzIGEgbmV3IHNlc3Npb25cbiAgICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICAgKiovXG4gICAgbGV0IG5ld1Nlc3Npb25VUkw7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgVVJMIHdpdGggYmFzZSBob3N0L3BvcnQuIFN1cHBseSBgc2Vzc2lvbmAgYW5kIGBwYXRobmFtZWBcbiAgICAgKiBAdHlwZSB7Xy5DdXJyaWVkRnVuY3Rpb24yPHN0cmluZyxzdHJpbmcsc3RyaW5nPn1cbiAgICAgKi9cbiAgICBsZXQgY3JlYXRlQXBwaXVtVGVzdFVSTDtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBVUkwgd2l0aCB0aGUgZ2l2ZW4gc2Vzc2lvbiBJRCBhbmQgYSBibGFuayBwYXRobmFtZTtcbiAgICAgKiBlLmcuLCBgaHR0cDovL2Zvby5iYXI6MTIzL3Nlc3Npb24vPHNlc3Npb24taWQ+YFxuICAgICAqICBAdHlwZSB7Xy5DdXJyaWVkRnVuY3Rpb24xPHN0cmluZyxzdHJpbmc+fVxuICAgICAqL1xuICAgIGxldCBjcmVhdGVTZXNzaW9uVVJMO1xuXG4gICAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHBvcnQgPSBwb3J0ID8/IGF3YWl0IGdldFRlc3RQb3J0KCk7XG4gICAgICBkZWZhdWx0Q2FwcyA9IHsuLi5kZWZhdWx0Q2FwcywgJ2FwcGl1bTpwb3J0JzogcG9ydH07XG4gICAgICBkID0gbmV3IERyaXZlckNsYXNzKHtwb3J0LCBhZGRyZXNzfSk7XG4gICAgICBiYXNlU2VydmVyID0gYXdhaXQgc2VydmVyKHtcbiAgICAgICAgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uOiByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24oZCksXG4gICAgICAgIHBvcnQsXG4gICAgICAgIGhvc3RuYW1lOiBURVNUX0hPU1RcbiAgICAgIH0pO1xuICAgICAgY3JlYXRlQXBwaXVtVGVzdFVSTCA9IGNyZWF0ZUFwcGl1bVVSTChhZGRyZXNzLCBwb3J0KTtcbiAgICAgIG5ld1Nlc3Npb25VUkwgPSBjcmVhdGVBcHBpdW1UZXN0VVJMKCcnLCAnc2Vzc2lvbicpO1xuICAgICAgY3JlYXRlU2Vzc2lvblVSTCA9IGNyZWF0ZUFwcGl1bVRlc3RVUkwoXywgJycpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXIoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYmFzZVNlcnZlci5jbG9zZSgpO1xuICAgIH0pO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gc3RhcnRTZXNzaW9uIChjYXBzKSB7XG4gICAgICByZXR1cm4gKGF3YWl0IGF4aW9zKHtcbiAgICAgICAgdXJsOiBuZXdTZXNzaW9uVVJMLFxuICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgIGRhdGE6IHtjYXBhYmlsaXRpZXM6IHthbHdheXNNYXRjaDogY2FwcywgZmlyc3RNYXRjaDogW3t9XX19LFxuICAgICAgfSkpLmRhdGEudmFsdWU7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZW5kU2Vzc2lvbiAoaWQpIHtcbiAgICAgIHJldHVybiAoYXdhaXQgYXhpb3Moe1xuICAgICAgICB1cmw6IGNyZWF0ZVNlc3Npb25VUkwoaWQpLFxuICAgICAgICBtZXRob2Q6IERFTEVURSxcbiAgICAgICAgdmFsaWRhdGVTdGF0dXM6IG51bGwsXG4gICAgICB9KSkuZGF0YS52YWx1ZTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBnZXRTZXNzaW9uIChpZCkge1xuICAgICAgcmV0dXJuIChhd2FpdCBheGlvcyh7XG4gICAgICAgIHVybDogY3JlYXRlU2Vzc2lvblVSTChpZCksXG4gICAgICB9KSkuZGF0YS52YWx1ZTtcbiAgICB9XG5cbiAgICBkZXNjcmliZSgnc2Vzc2lvbiBoYW5kbGluZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgaGFuZGxlIGlkZW1wb3RlbmN5IHdoaWxlIGNyZWF0aW5nIHNlc3Npb25zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBzZXNzaW9uSWRzID0gW107XG4gICAgICAgIGxldCB0aW1lcyA9IDA7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICBjb25zdCB7c2Vzc2lvbklkfSA9IChhd2FpdCBheGlvcyh7XG4gICAgICAgICAgICB1cmw6IG5ld1Nlc3Npb25VUkwsXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdYLUlkZW1wb3RlbmN5LUtleSc6ICcxMjM0NTYnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICAgIGRhdGE6IHtjYXBhYmlsaXRpZXM6IHthbHdheXNNYXRjaDogZGVmYXVsdENhcHMsIGZpcnN0TWF0Y2g6IFt7fV19fSxcbiAgICAgICAgICAgIHNpbXBsZTogZmFsc2UsXG4gICAgICAgICAgICByZXNvbHZlV2l0aEZ1bGxSZXNwb25zZTogdHJ1ZVxuICAgICAgICAgIH0pKS5kYXRhLnZhbHVlO1xuXG4gICAgICAgICAgc2Vzc2lvbklkcy5wdXNoKHNlc3Npb25JZCk7XG4gICAgICAgICAgdGltZXMrKztcbiAgICAgICAgfSB3aGlsZSAodGltZXMgPCAyKTtcbiAgICAgICAgXy51bmlxKHNlc3Npb25JZHMpLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG5cbiAgICAgICAgY29uc3Qge3N0YXR1cywgZGF0YX0gPSBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBjcmVhdGVTZXNzaW9uVVJMKHNlc3Npb25JZHNbMF0pLFxuICAgICAgICAgIG1ldGhvZDogREVMRVRFLFxuICAgICAgICB9KTtcbiAgICAgICAgc3RhdHVzLnNob3VsZC5lcXVhbCgyMDApO1xuICAgICAgICBzaG91bGQuZXF1YWwoZGF0YS52YWx1ZSwgbnVsbCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBoYW5kbGUgaWRlbXBvdGVuY3kgd2hpbGUgY3JlYXRpbmcgcGFyYWxsZWwgc2Vzc2lvbnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHJlcXMgPSBbXTtcbiAgICAgICAgbGV0IHRpbWVzID0gMDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIHJlcXMucHVzaChheGlvcyh7XG4gICAgICAgICAgICB1cmw6IG5ld1Nlc3Npb25VUkwsXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdYLUlkZW1wb3RlbmN5LUtleSc6ICcxMjM0NScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICAgICAgZGF0YToge2NhcGFiaWxpdGllczoge2Fsd2F5c01hdGNoOiBkZWZhdWx0Q2FwcywgZmlyc3RNYXRjaDogW3t9XX19LFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgICB0aW1lcysrO1xuICAgICAgICB9IHdoaWxlICh0aW1lcyA8IDIpO1xuICAgICAgICBjb25zdCBzZXNzaW9uSWRzID0gKGF3YWl0IEIuYWxsKHJlcXMpKS5tYXAoKHgpID0+IHguZGF0YS52YWx1ZS5zZXNzaW9uSWQpO1xuICAgICAgICBfLnVuaXEoc2Vzc2lvbklkcykubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcblxuICAgICAgICBjb25zdCB7c3RhdHVzLCBkYXRhfSA9IGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZVNlc3Npb25VUkwoc2Vzc2lvbklkc1swXSksXG4gICAgICAgICAgbWV0aG9kOiBERUxFVEUsXG4gICAgICAgIH0pO1xuICAgICAgICBzdGF0dXMuc2hvdWxkLmVxdWFsKDIwMCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChkYXRhLnZhbHVlLCBudWxsKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGNyZWF0ZSBzZXNzaW9uIGFuZCByZXRyaWV2ZSBhIHNlc3Npb24gaWQsIHRoZW4gZGVsZXRlIGl0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQge3N0YXR1cywgZGF0YX0gPSBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBuZXdTZXNzaW9uVVJMLFxuICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICBkYXRhOiB7Y2FwYWJpbGl0aWVzOiB7YWx3YXlzTWF0Y2g6IGRlZmF1bHRDYXBzLCBmaXJzdE1hdGNoOiBbe31dfX0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN0YXR1cy5zaG91bGQuZXF1YWwoMjAwKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGRhdGEudmFsdWUuc2Vzc2lvbklkKTtcbiAgICAgICAgZGF0YS52YWx1ZS5jYXBhYmlsaXRpZXMucGxhdGZvcm1OYW1lLnNob3VsZC5lcXVhbChkZWZhdWx0Q2Fwcy5wbGF0Zm9ybU5hbWUpO1xuICAgICAgICBkYXRhLnZhbHVlLmNhcGFiaWxpdGllcy5kZXZpY2VOYW1lLnNob3VsZC5lcXVhbChkZWZhdWx0Q2Fwc1snYXBwaXVtOmRldmljZU5hbWUnXSk7XG5cbiAgICAgICAgKHtzdGF0dXMsIGRhdGF9ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlU2Vzc2lvblVSTChkLnNlc3Npb25JZCksXG4gICAgICAgICAgbWV0aG9kOiBERUxFVEUsXG4gICAgICAgIH0pKTtcblxuICAgICAgICBzdGF0dXMuc2hvdWxkLmVxdWFsKDIwMCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChkYXRhLnZhbHVlLCBudWxsKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGQuc2Vzc2lvbklkLCBudWxsKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQuc2tpcCgnc2hvdWxkIHRocm93IE5ZSSBmb3IgY29tbWFuZHMgbm90IGltcGxlbWVudGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2NvbW1hbmQgdGltZW91dHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgb3JpZ2luYWxGaW5kRWxlbWVudCwgb3JpZ2luYWxGaW5kRWxlbWVudHM7XG5cbiAgICAgIGFzeW5jIGZ1bmN0aW9uIHN0YXJ0VGltZW91dFNlc3Npb24gKHRpbWVvdXQpIHtcbiAgICAgICAgY29uc3QgY2FwcyA9IF8uY2xvbmVEZWVwKGRlZmF1bHRDYXBzKTtcbiAgICAgICAgY2Fwc1snYXBwaXVtOm5ld0NvbW1hbmRUaW1lb3V0J10gPSB0aW1lb3V0O1xuICAgICAgICByZXR1cm4gYXdhaXQgc3RhcnRTZXNzaW9uKGNhcHMpO1xuICAgICAgfVxuXG4gICAgICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgICAgICBvcmlnaW5hbEZpbmRFbGVtZW50ID0gZC5maW5kRWxlbWVudDtcbiAgICAgICAgZC5maW5kRWxlbWVudCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gJ2Zvbyc7XG4gICAgICAgIH0uYmluZChkKTtcblxuICAgICAgICBvcmlnaW5hbEZpbmRFbGVtZW50cyA9IGQuZmluZEVsZW1lbnRzO1xuICAgICAgICBkLmZpbmRFbGVtZW50cyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBhd2FpdCBCLmRlbGF5KDIwMCk7XG4gICAgICAgICAgcmV0dXJuIFsnZm9vJ107XG4gICAgICAgIH0uYmluZChkKTtcbiAgICAgIH0pO1xuXG4gICAgICBhZnRlcihmdW5jdGlvbiAoKSB7XG4gICAgICAgIGQuZmluZEVsZW1lbnQgPSBvcmlnaW5hbEZpbmRFbGVtZW50O1xuICAgICAgICBkLmZpbmRFbGVtZW50cyA9IG9yaWdpbmFsRmluZEVsZW1lbnRzO1xuICAgICAgfSk7XG5cblxuICAgICAgaXQoJ3Nob3VsZCBzZXQgYSBkZWZhdWx0IGNvbW1hbmRUaW1lb3V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgbmV3U2Vzc2lvbiA9IGF3YWl0IHN0YXJ0VGltZW91dFNlc3Npb24oKTtcbiAgICAgICAgZC5uZXdDb21tYW5kVGltZW91dE1zLnNob3VsZC5iZS5hYm92ZSgwKTtcbiAgICAgICAgYXdhaXQgZW5kU2Vzc2lvbihuZXdTZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB0aW1lb3V0IG9uIGNvbW1hbmRzIHVzaW5nIGNvbW1hbmRUaW1lb3V0IGNhcCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IG5ld1Nlc3Npb24gPSBhd2FpdCBzdGFydFRpbWVvdXRTZXNzaW9uKDAuMjUpO1xuICAgICAgICAvLyBYWFg6IHJhY2UgY29uZGl0aW9uOiB3ZSBtdXN0IGJ1aWxkIHRoaXMgVVJMIGJlZm9yZSAuLi5zb21ldGhpbmcgaGFwcGVucy4uLlxuICAgICAgICAvLyB3aGljaCBjYXVzZXMgYGQuc2Vzc2lvbklkYCB0byBiZSBtaXNzaW5nXG4gICAgICAgIGxldCBzZXNzaW9uVVJMID0gY3JlYXRlU2Vzc2lvblVSTChkLnNlc3Npb25JZCk7XG4gICAgICAgIGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZUFwcGl1bVRlc3RVUkwoZC5zZXNzaW9uSWQsICdlbGVtZW50JyksXG4gICAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICAgIGRhdGE6IHt1c2luZzogJ25hbWUnLCB2YWx1ZTogJ2Zvbyd9LFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgQi5kZWxheSg0MDApO1xuICAgICAgICBjb25zdCB7ZGF0YX0gPSBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBzZXNzaW9uVVJMLFxuICAgICAgICAgIHZhbGlkYXRlU3RhdHVzOiBudWxsLFxuICAgICAgICB9KTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGRhdGEudmFsdWUuZXJyb3IsICdpbnZhbGlkIHNlc3Npb24gaWQnKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGQuc2Vzc2lvbklkLCBudWxsKTtcbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGVuZFNlc3Npb24obmV3U2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgICBzaG91bGQuZXF1YWwocmVzcC5lcnJvciwgJ2ludmFsaWQgc2Vzc2lvbiBpZCcpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgbm90IHRpbWVvdXQgd2l0aCBjb21tYW5kVGltZW91dCBvZiBmYWxzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IG5ld1Nlc3Npb24gPSBhd2FpdCBzdGFydFRpbWVvdXRTZXNzaW9uKDAuMSk7XG4gICAgICAgIGxldCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IHt2YWx1ZX0gPSAoYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlQXBwaXVtVGVzdFVSTChkLnNlc3Npb25JZCwgJ2VsZW1lbnRzJyksXG4gICAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICAgIGRhdGE6IHt1c2luZzogJ25hbWUnLCB2YWx1ZTogJ2Zvbyd9LFxuICAgICAgICB9KSkuZGF0YTtcbiAgICAgICAgKERhdGUubm93KCkgLSBzdGFydCkuc2hvdWxkLmJlLmFib3ZlKDE1MCk7XG4gICAgICAgIHZhbHVlLnNob3VsZC5lcWwoWydmb28nXSk7XG4gICAgICAgIGF3YWl0IGVuZFNlc3Npb24obmV3U2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgbm90IHRpbWVvdXQgd2l0aCBjb21tYW5kVGltZW91dCBvZiAwJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBkLm5ld0NvbW1hbmRUaW1lb3V0TXMgPSAyO1xuICAgICAgICBsZXQgbmV3U2Vzc2lvbiA9IGF3YWl0IHN0YXJ0VGltZW91dFNlc3Npb24oMCk7XG5cbiAgICAgICAgYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlQXBwaXVtVGVzdFVSTChkLnNlc3Npb25JZCwgJ2VsZW1lbnQnKSxcbiAgICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgICAgZGF0YToge3VzaW5nOiAnbmFtZScsIHZhbHVlOiAnZm9vJ30sXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBCLmRlbGF5KDQwMCk7XG4gICAgICAgIGNvbnN0IHt2YWx1ZX0gPSAoYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlU2Vzc2lvblVSTChkLnNlc3Npb25JZCksXG4gICAgICAgIH0pKS5kYXRhO1xuICAgICAgICB2YWx1ZS5wbGF0Zm9ybU5hbWUuc2hvdWxkLmVxdWFsKGRlZmF1bHRDYXBzLnBsYXRmb3JtTmFtZSk7XG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBlbmRTZXNzaW9uKG5ld1Nlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlc3AsIG51bGwpO1xuXG4gICAgICAgIGQubmV3Q29tbWFuZFRpbWVvdXRNcyA9IDYwICogMTAwMDtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIG5vdCB0aW1lb3V0IGlmIGl0cyBqdXN0IHRoZSBjb21tYW5kIHRha2luZyBhd2hpbGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBuZXdTZXNzaW9uID0gYXdhaXQgc3RhcnRUaW1lb3V0U2Vzc2lvbigwLjI1KTtcbiAgICAgICAgLy8gWFhYOiByYWNlIGNvbmRpdGlvbjogd2UgbXVzdCBidWlsZCB0aGlzIFVSTCBiZWZvcmUgLi4uc29tZXRoaW5nIGhhcHBlbnMuLi5cbiAgICAgICAgLy8gd2hpY2ggY2F1c2VzIGBkLnNlc3Npb25JZGAgdG8gYmUgbWlzc2luZ1xuICAgICAgICBsZXQgc2Vzc2lvblVSTCA9IGNyZWF0ZVNlc3Npb25VUkwoZC5zZXNzaW9uSWQpO1xuICAgICAgICBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBjcmVhdGVBcHBpdW1UZXN0VVJMKGQuc2Vzc2lvbklkLCAnZWxlbWVudCcpLFxuICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICBkYXRhOiB7dXNpbmc6ICduYW1lJywgdmFsdWU6ICdmb28nfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IEIuZGVsYXkoNDAwKTtcbiAgICAgICAgY29uc3Qge3ZhbHVlfSA9IChhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBzZXNzaW9uVVJMLFxuICAgICAgICAgIHZhbGlkYXRlU3RhdHVzOiBudWxsLFxuICAgICAgICB9KSkuZGF0YTtcbiAgICAgICAgdmFsdWUuZXJyb3Iuc2hvdWxkLmVxdWFsKCdpbnZhbGlkIHNlc3Npb24gaWQnKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGQuc2Vzc2lvbklkLCBudWxsKTtcbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGVuZFNlc3Npb24obmV3U2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgICByZXNwLmVycm9yLnNob3VsZC5lcXVhbCgnaW52YWxpZCBzZXNzaW9uIGlkJyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBub3QgaGF2ZSBhIHRpbWVyIHJ1bm5pbmcgYmVmb3JlIG9yIGFmdGVyIGEgc2Vzc2lvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChkLm5vQ29tbWFuZFRpbWVyKTtcbiAgICAgICAgbGV0IG5ld1Nlc3Npb24gPSBhd2FpdCBzdGFydFRpbWVvdXRTZXNzaW9uKDAuMjUpO1xuICAgICAgICBuZXdTZXNzaW9uLnNlc3Npb25JZC5zaG91bGQuZXF1YWwoZC5zZXNzaW9uSWQpO1xuICAgICAgICBzaG91bGQuZXhpc3QoZC5ub0NvbW1hbmRUaW1lcik7XG4gICAgICAgIGF3YWl0IGVuZFNlc3Npb24obmV3U2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgICBzaG91bGQubm90LmV4aXN0KGQubm9Db21tYW5kVGltZXIpO1xuICAgICAgfSk7XG5cbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdzZXR0aW5ncyBhcGknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgICAgICBkLnNldHRpbmdzID0gbmV3IERldmljZVNldHRpbmdzKHtpZ25vcmVVbmltcG9ydGFudFZpZXdzOiBmYWxzZX0pO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gZ2V0IHNldHRpbmdzIG9iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5zZXR0aW5ncy5nZXRTZXR0aW5ncygpLmlnbm9yZVVuaW1wb3J0YW50Vmlld3Muc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gdXBkYXRlU2V0dGluZ3MgbWV0aG9kIGlzIG5vdCBkZWZpbmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkLnNldHRpbmdzLnVwZGF0ZSh7aWdub3JlVW5pbXBvcnRhbnRWaWV3czogdHJ1ZX0pLnNob3VsZC5ldmVudHVhbGx5XG4gICAgICAgICAgICAgICAgLmJlLnJlamVjdGVkV2l0aCgnb25TZXR0aW5nc1VwZGF0ZScpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBpbnZhbGlkIHVwZGF0ZSBvYmplY3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGQuc2V0dGluZ3MudXBkYXRlKCdpbnZhbGlkIGpzb24nKS5zaG91bGQuZXZlbnR1YWxseVxuICAgICAgICAgICAgICAgIC5iZS5yZWplY3RlZFdpdGgoJ0pTT04nKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3VuZXhwZWN0ZWQgZXhpdHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIHJlamVjdCBhIGN1cnJlbnQgY29tbWFuZCB3aGVuIHRoZSBkcml2ZXIgY3Jhc2hlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5fb2xkR2V0U3RhdHVzID0gZC5nZXRTdGF0dXM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZC5nZXRTdGF0dXMgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBhd2FpdCBCLmRlbGF5KDUwMDApO1xuICAgICAgICAgIH0uYmluZChkKTtcbiAgICAgICAgICBjb25zdCByZXFQcm9taXNlID0gYXhpb3Moe1xuICAgICAgICAgICAgdXJsOiBjcmVhdGVBcHBpdW1UZXN0VVJMKCcnLCAnc3RhdHVzJyksXG4gICAgICAgICAgICB2YWxpZGF0ZVN0YXR1czogbnVsbCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgcmVxdWVzdCBnZXRzIHRvIHRoZSBzZXJ2ZXIgYmVmb3JlIG91ciBzaHV0ZG93blxuICAgICAgICAgIGF3YWl0IEIuZGVsYXkoMTAwKTtcbiAgICAgICAgICBjb25zdCBzaHV0ZG93bkV2ZW50UHJvbWlzZSA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignb25VbmV4cGVjdGVkU2h1dGRvd24gZXZlbnQgaXMgZXhwZWN0ZWQgdG8gYmUgZmlyZWQgd2l0aGluIDUgc2Vjb25kcyB0aW1lb3V0JykpLCA1MDAwKTtcbiAgICAgICAgICAgIGQub25VbmV4cGVjdGVkU2h1dGRvd24ocmVzb2x2ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZC5zdGFydFVuZXhwZWN0ZWRTaHV0ZG93bihuZXcgRXJyb3IoJ0NyYXNoeXRpbWVzJykpO1xuICAgICAgICAgIGNvbnN0IHt2YWx1ZX0gPSAoYXdhaXQgcmVxUHJvbWlzZSkuZGF0YTtcbiAgICAgICAgICB2YWx1ZS5tZXNzYWdlLnNob3VsZC5jb250YWluKCdDcmFzaHl0aW1lcycpO1xuICAgICAgICAgIGF3YWl0IHNodXRkb3duRXZlbnRQcm9taXNlO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGQuZ2V0U3RhdHVzID0gZC5fb2xkR2V0U3RhdHVzO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdldmVudCB0aW1pbmdzJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBub3QgYWRkIHRpbWluZ3MgaWYgbm90IHVzaW5nIG9wdC1pbiBjYXAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBzdGFydFNlc3Npb24oZGVmYXVsdENhcHMpO1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBnZXRTZXNzaW9uKHNlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChyZXMuZXZlbnRzKTtcbiAgICAgICAgYXdhaXQgZW5kU2Vzc2lvbihzZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgYWRkIHN0YXJ0IHNlc3Npb24gdGltaW5ncycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgY2FwcyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDYXBzLCB7J2FwcGl1bTpldmVudFRpbWluZ3MnOiB0cnVlfSk7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBhd2FpdCBzdGFydFNlc3Npb24oY2Fwcyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IChhd2FpdCBnZXRTZXNzaW9uKHNlc3Npb24uc2Vzc2lvbklkKSk7XG4gICAgICAgIHNob3VsZC5leGlzdChyZXMuZXZlbnRzKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KHJlcy5ldmVudHMubmV3U2Vzc2lvblJlcXVlc3RlZCk7XG4gICAgICAgIHNob3VsZC5leGlzdChyZXMuZXZlbnRzLm5ld1Nlc3Npb25TdGFydGVkKTtcbiAgICAgICAgcmVzLmV2ZW50cy5uZXdTZXNzaW9uUmVxdWVzdGVkWzBdLnNob3VsZC5iZS5hKCdudW1iZXInKTtcbiAgICAgICAgcmVzLmV2ZW50cy5uZXdTZXNzaW9uU3RhcnRlZFswXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgIGF3YWl0IGVuZFNlc3Npb24oc2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZXhlY3V0ZSBkcml2ZXIgc2NyaXB0JywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gbW9jayBzb21lIG1ldGhvZHMgb24gQmFzZURyaXZlciB0aGF0IGFyZW4ndCBub3JtYWxseSB0aGVyZSBleGNlcHQgaW5cbiAgICAgIC8vIGEgZnVsbHkgYmxvd24gZHJpdmVyXG4gICAgICBsZXQgb3JpZ2luYWxGaW5kRWxlbWVudCwgc2Vzc2lvbklkO1xuICAgICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5hbGxvd0luc2VjdXJlID0gWydleGVjdXRlX2RyaXZlcl9zY3JpcHQnXTtcbiAgICAgICAgb3JpZ2luYWxGaW5kRWxlbWVudCA9IGQuZmluZEVsZW1lbnQ7XG4gICAgICAgIGQuZmluZEVsZW1lbnQgPSAoZnVuY3Rpb24gKHN0cmF0ZWd5LCBzZWxlY3Rvcikge1xuICAgICAgICAgIGlmIChzdHJhdGVneSA9PT0gJ2FjY2Vzc2liaWxpdHkgaWQnICYmIHNlbGVjdG9yID09PSAnYW1hemluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB7W1czQ19FTEVNRU5UX0tFWV06ICdlbGVtZW50LWlkLTEnfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aHJvdyBuZXcgZXJyb3JzLk5vU3VjaEVsZW1lbnRFcnJvcignbm90IGZvdW5kJyk7XG4gICAgICAgIH0pLmJpbmQoZCk7XG4gICAgICB9KTtcblxuICAgICAgYmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICh7c2Vzc2lvbklkfSA9IGF3YWl0IHN0YXJ0U2Vzc2lvbihkZWZhdWx0Q2FwcykpO1xuICAgICAgfSk7XG5cbiAgICAgIGFmdGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5maW5kRWxlbWVudCA9IG9yaWdpbmFsRmluZEVsZW1lbnQ7XG4gICAgICB9KTtcblxuICAgICAgYWZ0ZXJFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZW5kU2Vzc2lvbihzZXNzaW9uSWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgbm90IHdvcmsgdW5sZXNzIHRoZSBhbGxvd0luc2VjdXJlIGZlYXR1cmUgZmxhZyBpcyBzZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGQuX2FsbG93SW5zZWN1cmUgPSBkLmFsbG93SW5zZWN1cmU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZC5hbGxvd0luc2VjdXJlID0gW107XG4gICAgICAgICAgY29uc3Qgc2NyaXB0ID0gYHJldHVybiAnZm9vJ2A7XG4gICAgICAgICAgYXdhaXQgYXhpb3Moe1xuICAgICAgICAgICAgdXJsOiBjcmVhdGVBcHBpdW1UZXN0VVJMKHNlc3Npb25JZCwgJ2FwcGl1bS9leGVjdXRlX2RyaXZlcicpLFxuICAgICAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICAgICAgZGF0YToge3NjcmlwdCwgdHlwZTogJ3dkJ30sXG4gICAgICAgICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWQ7XG4gICAgICAgICAgYXdhaXQgZW5kU2Vzc2lvbihzZXNzaW9uSWQpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGQuYWxsb3dJbnNlY3VyZSA9IGQuX2FsbG93SW5zZWN1cmU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGV4ZWN1dGUgYSB3ZWJkcml2ZXJpbyBzY3JpcHQgaW4gdGhlIGNvbnRleHQgb2Ygc2Vzc2lvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qgc2NyaXB0ID0gYFxuICAgICAgICAgIGNvbnN0IHRpbWVvdXRzID0gYXdhaXQgZHJpdmVyLmdldFRpbWVvdXRzKCk7XG4gICAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgZHJpdmVyLnN0YXR1cygpO1xuICAgICAgICAgIHJldHVybiBbdGltZW91dHMsIHN0YXR1c107XG4gICAgICAgIGA7XG4gICAgICAgIGNvbnN0IHt2YWx1ZX0gPSAoYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlQXBwaXVtVGVzdFVSTChzZXNzaW9uSWQsICdhcHBpdW0vZXhlY3V0ZV9kcml2ZXInKSxcbiAgICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgICAgZGF0YToge3NjcmlwdCwgdHlwZTogJ3dlYmRyaXZlcmlvJ30sXG4gICAgICAgIH0pKS5kYXRhO1xuICAgICAgICBjb25zdCBleHBlY3RlZFRpbWVvdXRzID0ge2NvbW1hbmQ6IDI1MCwgaW1wbGljaXQ6IDB9O1xuICAgICAgICBjb25zdCBleHBlY3RlZFN0YXR1cyA9IHt9O1xuICAgICAgICB2YWx1ZS5yZXN1bHQuc2hvdWxkLmVxbChbZXhwZWN0ZWRUaW1lb3V0cywgZXhwZWN0ZWRTdGF0dXNdKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGZhaWwgd2l0aCBhbnkgc2NyaXB0IHR5cGUgb3RoZXIgdGhhbiB3ZWJkcml2ZXJpbyBjdXJyZW50bHknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHNjcmlwdCA9IGByZXR1cm4gJ2ZvbydgO1xuICAgICAgICBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBjcmVhdGVBcHBpdW1UZXN0VVJMKHNlc3Npb25JZCwgJ2FwcGl1bS9leGVjdXRlX2RyaXZlcicpLFxuICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICBkYXRhOiB7c2NyaXB0LCB0eXBlOiAnd2QnfSxcbiAgICAgICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWQ7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBleGVjdXRlIGEgd2ViZHJpdmVyaW8gc2NyaXB0IHRoYXQgcmV0dXJucyBlbGVtZW50cyBjb3JyZWN0bHknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHNjcmlwdCA9IGBcbiAgICAgICAgICByZXR1cm4gYXdhaXQgZHJpdmVyLiQoXCJ+YW1hemluZ1wiKTtcbiAgICAgICAgYDtcbiAgICAgICAgY29uc3Qge3ZhbHVlfSA9IChhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBjcmVhdGVBcHBpdW1UZXN0VVJMKHNlc3Npb25JZCwgJ2FwcGl1bS9leGVjdXRlX2RyaXZlcicpLFxuICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICBkYXRhOiB7c2NyaXB0fSxcbiAgICAgICAgfSkpLmRhdGE7XG4gICAgICAgIHZhbHVlLnJlc3VsdC5zaG91bGQuZXFsKHtcbiAgICAgICAgICBbVzNDX0VMRU1FTlRfS0VZXTogJ2VsZW1lbnQtaWQtMScsXG4gICAgICAgICAgW01KU09OV1BfRUxFTUVOVF9LRVldOiAnZWxlbWVudC1pZC0xJ1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGV4ZWN1dGUgYSB3ZWJkcml2ZXJpbyBzY3JpcHQgdGhhdCByZXR1cm5zIGVsZW1lbnRzIGluIGRlZXAgc3RydWN0dXJlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBzY3JpcHQgPSBgXG4gICAgICAgICAgY29uc3QgZWwgPSBhd2FpdCBkcml2ZXIuJChcIn5hbWF6aW5nXCIpO1xuICAgICAgICAgIHJldHVybiB7ZWxlbWVudDogZWwsIGVsZW1lbnRzOiBbZWwsIGVsXX07XG4gICAgICAgIGA7XG4gICAgICAgIGNvbnN0IHt2YWx1ZX0gPSAoYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlQXBwaXVtVGVzdFVSTChzZXNzaW9uSWQsICdhcHBpdW0vZXhlY3V0ZV9kcml2ZXInKSxcbiAgICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgICAgZGF0YToge3NjcmlwdH0sXG4gICAgICAgIH0pKS5kYXRhO1xuICAgICAgICBjb25zdCBlbE9iaiA9IHtcbiAgICAgICAgICBbVzNDX0VMRU1FTlRfS0VZXTogJ2VsZW1lbnQtaWQtMScsXG4gICAgICAgICAgW01KU09OV1BfRUxFTUVOVF9LRVldOiAnZWxlbWVudC1pZC0xJ1xuICAgICAgICB9O1xuICAgICAgICB2YWx1ZS5yZXN1bHQuc2hvdWxkLmVxbCh7ZWxlbWVudDogZWxPYmosIGVsZW1lbnRzOiBbZWxPYmosIGVsT2JqXX0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgc3RvcmUgYW5kIHJldHVybiBsb2dzIHRvIHRoZSB1c2VyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBzY3JpcHQgPSBgXG4gICAgICAgICAgY29uc29sZS5sb2coXCJmb29cIik7XG4gICAgICAgICAgY29uc29sZS5sb2coXCJmb28yXCIpO1xuICAgICAgICAgIGNvbnNvbGUud2FybihcImJhclwiKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiYmF6XCIpO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICBgO1xuICAgICAgICBjb25zdCB7dmFsdWV9ID0gKGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZUFwcGl1bVRlc3RVUkwoc2Vzc2lvbklkLCAnYXBwaXVtL2V4ZWN1dGVfZHJpdmVyJyksXG4gICAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICAgIGRhdGE6IHtzY3JpcHR9LFxuICAgICAgICB9KSkuZGF0YTtcbiAgICAgICAgdmFsdWUubG9ncy5zaG91bGQuZXFsKHtsb2c6IFsnZm9vJywgJ2ZvbzInXSwgd2FybjogWydiYXInXSwgZXJyb3I6IFsnYmF6J119KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGhhdmUgYXBwaXVtIHNwZWNpZmljIGNvbW1hbmRzIGF2YWlsYWJsZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qgc2NyaXB0ID0gYFxuICAgICAgICAgIHJldHVybiB0eXBlb2YgZHJpdmVyLmxvY2s7XG4gICAgICAgIGA7XG4gICAgICAgIGNvbnN0IHt2YWx1ZX0gPSAoYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlQXBwaXVtVGVzdFVSTChzZXNzaW9uSWQsICdhcHBpdW0vZXhlY3V0ZV9kcml2ZXInKSxcbiAgICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgICAgZGF0YToge3NjcmlwdH0sXG4gICAgICAgIH0pKS5kYXRhO1xuICAgICAgICB2YWx1ZS5yZXN1bHQuc2hvdWxkLmVxbCgnZnVuY3Rpb24nKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGNvcnJlY3RseSBoYW5kbGUgZXJyb3JzIHRoYXQgaGFwcGVuIGluIGEgd2ViZHJpdmVyaW8gc2NyaXB0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBzY3JpcHQgPSBgXG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRyaXZlci4kKFwifm5vdGZvdW5kXCIpO1xuICAgICAgICBgO1xuICAgICAgICBjb25zdCB7ZGF0YX0gPSBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBjcmVhdGVBcHBpdW1UZXN0VVJMKHNlc3Npb25JZCwgJ2FwcGl1bS9leGVjdXRlX2RyaXZlcicpLFxuICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICB2YWxpZGF0ZVN0YXR1czogbnVsbCxcbiAgICAgICAgICBkYXRhOiB7c2NyaXB0fSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRhdGEudmFsdWUucmVzdWx0LmVycm9yLmVycm9yLnNob3VsZC5lcXVhbCgnbm8gc3VjaCBlbGVtZW50Jyk7XG4gICAgICAgIGRhdGEudmFsdWUucmVzdWx0LmVycm9yLm1lc3NhZ2Uuc2hvdWxkLmVxdWFsKCdub3QgZm91bmQnKTtcbiAgICAgICAgZGF0YS52YWx1ZS5yZXN1bHQuZXJyb3Iuc3RhY2t0cmFjZS5zaG91bGQuaW5jbHVkZXMoJ05vU3VjaEVsZW1lbnRFcnJvcjonKTtcbiAgICAgICAgZGF0YS52YWx1ZS5yZXN1bHQuc2VsZWN0b3Iuc2hvdWxkLmVxdWFsKCd+bm90Zm91bmQnKTtcbiAgICAgICAgZGF0YS52YWx1ZS5yZXN1bHQuc2Vzc2lvbklkLnNob3VsZC5lcXVhbChzZXNzaW9uSWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBlcnJvcnMgdGhhdCBoYXBwZW4gd2hlbiBhIHNjcmlwdCBjYW5ub3QgYmUgY29tcGlsZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHNjcmlwdCA9IGBcbiAgICAgICAgICByZXR1cm4geztcbiAgICAgICAgYDtcbiAgICAgICAgY29uc3Qge2RhdGF9ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlQXBwaXVtVGVzdFVSTChzZXNzaW9uSWQsICdhcHBpdW0vZXhlY3V0ZV9kcml2ZXInKSxcbiAgICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgICAgdmFsaWRhdGVTdGF0dXM6IG51bGwsXG4gICAgICAgICAgZGF0YToge3NjcmlwdH0sXG4gICAgICAgIH0pO1xuICAgICAgICBkYXRhLnZhbHVlLnNob3VsZC5oYXZlLnByb3BlcnR5KCdtZXNzYWdlJyk7XG4gICAgICAgIGRhdGEudmFsdWUubWVzc2FnZS5zaG91bGQubWF0Y2goL0FuIHVua25vd24gc2VydmVyLXNpZGUgZXJyb3Igb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGUgY29tbWFuZC4gT3JpZ2luYWwgZXJyb3I6IENvdWxkIG5vdCBleGVjdXRlIGRyaXZlciBzY3JpcHQuIE9yaWdpbmFsIGVycm9yIHdhczogRXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJz87Jz8vKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gc2V0IGEgdGltZW91dCBvbiBhIGRyaXZlciBzY3JpcHQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHNjcmlwdCA9IGBcbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmRlbGF5KDEwMDApO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBgO1xuICAgICAgICBjb25zdCB7dmFsdWV9ID0gKGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZUFwcGl1bVRlc3RVUkwoc2Vzc2lvbklkLCAnYXBwaXVtL2V4ZWN1dGVfZHJpdmVyJyksXG4gICAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICAgIHZhbGlkYXRlU3RhdHVzOiBudWxsLFxuICAgICAgICAgIGRhdGE6IHtzY3JpcHQsIHRpbWVvdXQ6IDUwfSxcbiAgICAgICAgfSkpLmRhdGE7XG4gICAgICAgIHZhbHVlLm1lc3NhZ2Uuc2hvdWxkLm1hdGNoKC8uKzUwLit0aW1lb3V0LisvKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaWYgKERyaXZlckNsYXNzID09PSBCYXNlRHJpdmVyKSB7XG4gICAgICAvLyBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gYmFzZWRyaXZlciwgbm90IG90aGVyIGRyaXZlcnMgd2hpY2ggYWxzbyB1c2UgdGhlc2UgdGVzdHMsIHNpbmNlIHdlXG4gICAgICAvLyBkb24ndCB3YW50IHRoZW0gdG8gdHJ5IGFuZCBzdGFydCBzZXNzaW9ucyB3aXRoIHRoZXNlIHJhbmRvbSBjYXBhYmlsaXRpZXMgdGhhdCBhcmVcbiAgICAgIC8vIG5lY2Vzc2FyeSB0byB0ZXN0IHRoZSBhcHBpdW0gb3B0aW9ucyBsb2dpY1xuICAgICAgZGVzY3JpYmUoJ3NwZWNpYWwgYXBwaXVtOm9wdGlvbnMgY2FwYWJpbGl0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIHN0YXJ0IGEgc2Vzc2lvbiB3aXRoIGNhcHMgaGVsZCBpbiBhcHBpdW06b3B0aW9ucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCByZXQgPSBhd2FpdCBzdGFydFNlc3Npb24oe1xuICAgICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAgIFtQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVBdOiB7XG4gICAgICAgICAgICAgIHBsYXRmb3JtVmVyc2lvbjogJzExLjQnLFxuICAgICAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnaVBob25lIDExJyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkLm9wdHMucGxhdGZvcm1WZXJzaW9uLnNob3VsZC5lcWwoJzExLjQnKTtcbiAgICAgICAgICBkLm9wdHMuZGV2aWNlTmFtZS5zaG91bGQuZXFsKCdpUGhvbmUgMTEnKTtcbiAgICAgICAgICBhd2FpdCBlbmRTZXNzaW9uKHJldC5zZXNzaW9uSWQpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VEcml2ZXJFMkVUZXN0cztcbiJdLCJmaWxlIjoidGVzdC9iYXNlZHJpdmVyL2RyaXZlci1lMmUtdGVzdHMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
415
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9kcml2ZXItZTJlLXRlc3RzLmpzIl0sIm5hbWVzIjpbIlBPU1QiLCJERUxFVEUiLCJNRVRIT0RTIiwiYmFzZURyaXZlckUyRVRlc3RzIiwiRHJpdmVyQ2xhc3MiLCJkZWZhdWx0Q2FwcyIsImFkZHJlc3MiLCJURVNUX0hPU1QiLCJwb3J0IiwiY2xhc3NOYW1lIiwibmFtZSIsImRlc2NyaWJlIiwiYmFzZVNlcnZlciIsImQiLCJuZXdTZXNzaW9uVVJMIiwiY3JlYXRlQXBwaXVtVGVzdFVSTCIsImNyZWF0ZVNlc3Npb25VUkwiLCJiZWZvcmUiLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJob3N0bmFtZSIsIl8iLCJhZnRlciIsImNsb3NlIiwic3RhcnRTZXNzaW9uIiwiY2FwcyIsInVybCIsIm1ldGhvZCIsImRhdGEiLCJjYXBhYmlsaXRpZXMiLCJhbHdheXNNYXRjaCIsImZpcnN0TWF0Y2giLCJ2YWx1ZSIsImVuZFNlc3Npb24iLCJpZCIsInZhbGlkYXRlU3RhdHVzIiwiZ2V0U2Vzc2lvbiIsIml0Iiwic2Vzc2lvbklkcyIsInRpbWVzIiwic2Vzc2lvbklkIiwiaGVhZGVycyIsInNpbXBsZSIsInJlc29sdmVXaXRoRnVsbFJlc3BvbnNlIiwicHVzaCIsInVuaXEiLCJsZW5ndGgiLCJzaG91bGQiLCJlcXVhbCIsInN0YXR1cyIsInJlcXMiLCJCIiwiYWxsIiwibWFwIiwieCIsImV4aXN0IiwicGxhdGZvcm1OYW1lIiwiZGV2aWNlTmFtZSIsInNraXAiLCJvcmlnaW5hbEZpbmRFbGVtZW50Iiwib3JpZ2luYWxGaW5kRWxlbWVudHMiLCJzdGFydFRpbWVvdXRTZXNzaW9uIiwidGltZW91dCIsImNsb25lRGVlcCIsImZpbmRFbGVtZW50IiwiYmluZCIsImZpbmRFbGVtZW50cyIsImRlbGF5IiwibmV3U2Vzc2lvbiIsIm5ld0NvbW1hbmRUaW1lb3V0TXMiLCJiZSIsImFib3ZlIiwic2Vzc2lvblVSTCIsInVzaW5nIiwiZXJyb3IiLCJyZXNwIiwic3RhcnQiLCJEYXRlIiwibm93IiwiZXFsIiwibm90Iiwibm9Db21tYW5kVGltZXIiLCJzZXR0aW5ncyIsIkRldmljZVNldHRpbmdzIiwiaWdub3JlVW5pbXBvcnRhbnRWaWV3cyIsImdldFNldHRpbmdzIiwiZmFsc2UiLCJ1cGRhdGUiLCJldmVudHVhbGx5IiwicmVqZWN0ZWRXaXRoIiwiX29sZEdldFN0YXR1cyIsImdldFN0YXR1cyIsInJlcVByb21pc2UiLCJzaHV0ZG93bkV2ZW50UHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzZXRUaW1lb3V0IiwiRXJyb3IiLCJvblVuZXhwZWN0ZWRTaHV0ZG93biIsInN0YXJ0VW5leHBlY3RlZFNodXRkb3duIiwibWVzc2FnZSIsImNvbnRhaW4iLCJzZXNzaW9uIiwicmVzIiwiZXZlbnRzIiwiT2JqZWN0IiwiYXNzaWduIiwibmV3U2Vzc2lvblJlcXVlc3RlZCIsIm5ld1Nlc3Npb25TdGFydGVkIiwiYSIsIkJhc2VEcml2ZXIiLCJyZXQiLCJQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVAiLCJwbGF0Zm9ybVZlcnNpb24iLCJvcHRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBLE1BQU07QUFBQ0EsRUFBQUEsSUFBRDtBQUFPQyxFQUFBQTtBQUFQLElBQWlCQyxnQkFBdkI7O0FBRUEsU0FBU0Msa0JBQVQsQ0FBNkJDLFdBQTdCLEVBQTBDQyxXQUFXLEdBQUcsRUFBeEQsRUFBNEQ7QUFBQTs7QUFDMUQsTUFBSUMsT0FBTywyQkFBR0QsV0FBVyxDQUFDLGdCQUFELENBQWQsdUVBQW9DRSxrQkFBL0M7QUFDQSxNQUFJQyxJQUFJLEdBQUdILFdBQVcsQ0FBQyxhQUFELENBQXRCO0FBQ0EsUUFBTUksU0FBUyxHQUFHTCxXQUFXLENBQUNNLElBQVosSUFBb0Isa0JBQXRDO0FBRUFDLEVBQUFBLFFBQVEsQ0FBRSxzQkFBcUJGLFNBQVUsR0FBakMsRUFBcUMsWUFBWTtBQUN2RCxR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dUUsa0JBQWtCO0FBQ3pGLGdCQUFNMEUsR0FBRyxHQUFHLE1BQU12RixZQUFZLENBQUM7QUFDN0JnQyxZQUFBQSxZQUFZLEVBQUUsS0FEZTtBQUU3QixhQUFDd0Qsc0NBQUQsR0FBNEI7QUFDMUJDLGNBQUFBLGVBQWUsRUFBRSxNQURTO0FBRTFCLG1DQUFxQjtBQUZLO0FBRkMsV0FBRCxDQUE5QjtBQU9BbkcsVUFBQUEsQ0FBQyxDQUFDb0csSUFBRixDQUFPRCxlQUFQLENBQXVCbEUsTUFBdkIsQ0FBOEJnQyxHQUE5QixDQUFrQyxNQUFsQztBQUNBakUsVUFBQUEsQ0FBQyxDQUFDb0csSUFBRixDQUFPekQsVUFBUCxDQUFrQlYsTUFBbEIsQ0FBeUJnQyxHQUF6QixDQUE2QixXQUE3QjtBQUNBLGdCQUFNOUMsVUFBVSxDQUFDOEUsR0FBRyxDQUFDdkUsU0FBTCxDQUFoQjtBQUNELFNBWEMsQ0FBRjtBQVlELE9BYk8sQ0FBUjtBQWNEO0FBQ0YsR0F4Vk8sQ0FBUjtBQXlWRDs7ZUFFY3BDLGtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJhc2VEcml2ZXIsIHNlcnZlciwgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLCBEZXZpY2VTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHtURVNUX0hPU1QsIGdldFRlc3RQb3J0LCBjcmVhdGVBcHBpdW1VUkwsIE1FVEhPRFN9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgUFJFRklYRURfQVBQSVVNX09QVFNfQ0FQIH0gZnJvbSAnLi4vLi4vbGliL2Jhc2Vkcml2ZXIvY2FwYWJpbGl0aWVzJztcbmNvbnN0IHtQT1NULCBERUxFVEV9ID0gTUVUSE9EUztcblxuZnVuY3Rpb24gYmFzZURyaXZlckUyRVRlc3RzIChEcml2ZXJDbGFzcywgZGVmYXVsdENhcHMgPSB7fSkge1xuICBsZXQgYWRkcmVzcyA9IGRlZmF1bHRDYXBzWydhcHBpdW06YWRkcmVzcyddID8/IFRFU1RfSE9TVDtcbiAgbGV0IHBvcnQgPSBkZWZhdWx0Q2Fwc1snYXBwaXVtOnBvcnQnXTtcbiAgY29uc3QgY2xhc3NOYW1lID0gRHJpdmVyQ2xhc3MubmFtZSB8fCAnKHVua25vd24gZHJpdmVyKSc7XG5cbiAgZGVzY3JpYmUoYEJhc2VEcml2ZXIgRTJFIChhcyAke2NsYXNzTmFtZX0pYCwgZnVuY3Rpb24gKCkge1xuICAgIGxldCBiYXNlU2VydmVyLCBkO1xuICAgIC8qKlxuICAgICAgICogVGhpcyBVUkwgY3JlYXRlcyBhIG5ldyBzZXNzaW9uXG4gICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICoqL1xuICAgIGxldCBuZXdTZXNzaW9uVVJMO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIFVSTCB3aXRoIGJhc2UgaG9zdC9wb3J0LiBTdXBwbHkgYHNlc3Npb25gIGFuZCBgcGF0aG5hbWVgXG4gICAgICogQHR5cGUge18uQ3VycmllZEZ1bmN0aW9uMjxzdHJpbmcsc3RyaW5nLHN0cmluZz59XG4gICAgICovXG4gICAgbGV0IGNyZWF0ZUFwcGl1bVRlc3RVUkw7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgVVJMIHdpdGggdGhlIGdpdmVuIHNlc3Npb24gSUQgYW5kIGEgYmxhbmsgcGF0aG5hbWU7XG4gICAgICogZS5nLiwgYGh0dHA6Ly9mb28uYmFyOjEyMy9zZXNzaW9uLzxzZXNzaW9uLWlkPmBcbiAgICAgKiAgQHR5cGUge18uQ3VycmllZEZ1bmN0aW9uMTxzdHJpbmcsc3RyaW5nPn1cbiAgICAgKi9cbiAgICBsZXQgY3JlYXRlU2Vzc2lvblVSTDtcblxuICAgIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBwb3J0ID0gcG9ydCA/PyBhd2FpdCBnZXRUZXN0UG9ydCgpO1xuICAgICAgZGVmYXVsdENhcHMgPSB7Li4uZGVmYXVsdENhcHMsICdhcHBpdW06cG9ydCc6IHBvcnR9O1xuICAgICAgZCA9IG5ldyBEcml2ZXJDbGFzcyh7cG9ydCwgYWRkcmVzc30pO1xuICAgICAgYmFzZVNlcnZlciA9IGF3YWl0IHNlcnZlcih7XG4gICAgICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbjogcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uKGQpLFxuICAgICAgICBwb3J0LFxuICAgICAgICBob3N0bmFtZTogVEVTVF9IT1NUXG4gICAgICB9KTtcbiAgICAgIGNyZWF0ZUFwcGl1bVRlc3RVUkwgPSBjcmVhdGVBcHBpdW1VUkwoYWRkcmVzcywgcG9ydCk7XG4gICAgICBuZXdTZXNzaW9uVVJMID0gY3JlYXRlQXBwaXVtVGVzdFVSTCgnJywgJ3Nlc3Npb24nKTtcbiAgICAgIGNyZWF0ZVNlc3Npb25VUkwgPSBjcmVhdGVBcHBpdW1UZXN0VVJMKF8sICcnKTtcbiAgICB9KTtcblxuICAgIGFmdGVyKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGJhc2VTZXJ2ZXIuY2xvc2UoKTtcbiAgICB9KTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHN0YXJ0U2Vzc2lvbiAoY2Fwcykge1xuICAgICAgcmV0dXJuIChhd2FpdCBheGlvcyh7XG4gICAgICAgIHVybDogbmV3U2Vzc2lvblVSTCxcbiAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICBkYXRhOiB7Y2FwYWJpbGl0aWVzOiB7YWx3YXlzTWF0Y2g6IGNhcHMsIGZpcnN0TWF0Y2g6IFt7fV19fSxcbiAgICAgIH0pKS5kYXRhLnZhbHVlO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGVuZFNlc3Npb24gKGlkKSB7XG4gICAgICByZXR1cm4gKGF3YWl0IGF4aW9zKHtcbiAgICAgICAgdXJsOiBjcmVhdGVTZXNzaW9uVVJMKGlkKSxcbiAgICAgICAgbWV0aG9kOiBERUxFVEUsXG4gICAgICAgIHZhbGlkYXRlU3RhdHVzOiBudWxsLFxuICAgICAgfSkpLmRhdGEudmFsdWU7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0U2Vzc2lvbiAoaWQpIHtcbiAgICAgIHJldHVybiAoYXdhaXQgYXhpb3Moe1xuICAgICAgICB1cmw6IGNyZWF0ZVNlc3Npb25VUkwoaWQpLFxuICAgICAgfSkpLmRhdGEudmFsdWU7XG4gICAgfVxuXG4gICAgZGVzY3JpYmUoJ3Nlc3Npb24gaGFuZGxpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIGhhbmRsZSBpZGVtcG90ZW5jeSB3aGlsZSBjcmVhdGluZyBzZXNzaW9ucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3Qgc2Vzc2lvbklkcyA9IFtdO1xuICAgICAgICBsZXQgdGltZXMgPSAwO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgY29uc3Qge3Nlc3Npb25JZH0gPSAoYXdhaXQgYXhpb3Moe1xuICAgICAgICAgICAgdXJsOiBuZXdTZXNzaW9uVVJMLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnWC1JZGVtcG90ZW5jeS1LZXknOiAnMTIzNDU2JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgICAgICBkYXRhOiB7Y2FwYWJpbGl0aWVzOiB7YWx3YXlzTWF0Y2g6IGRlZmF1bHRDYXBzLCBmaXJzdE1hdGNoOiBbe31dfX0sXG4gICAgICAgICAgICBzaW1wbGU6IGZhbHNlLFxuICAgICAgICAgICAgcmVzb2x2ZVdpdGhGdWxsUmVzcG9uc2U6IHRydWVcbiAgICAgICAgICB9KSkuZGF0YS52YWx1ZTtcblxuICAgICAgICAgIHNlc3Npb25JZHMucHVzaChzZXNzaW9uSWQpO1xuICAgICAgICAgIHRpbWVzKys7XG4gICAgICAgIH0gd2hpbGUgKHRpbWVzIDwgMik7XG4gICAgICAgIF8udW5pcShzZXNzaW9uSWRzKS5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuXG4gICAgICAgIGNvbnN0IHtzdGF0dXMsIGRhdGF9ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlU2Vzc2lvblVSTChzZXNzaW9uSWRzWzBdKSxcbiAgICAgICAgICBtZXRob2Q6IERFTEVURSxcbiAgICAgICAgfSk7XG4gICAgICAgIHN0YXR1cy5zaG91bGQuZXF1YWwoMjAwKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGRhdGEudmFsdWUsIG51bGwpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgaGFuZGxlIGlkZW1wb3RlbmN5IHdoaWxlIGNyZWF0aW5nIHBhcmFsbGVsIHNlc3Npb25zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCByZXFzID0gW107XG4gICAgICAgIGxldCB0aW1lcyA9IDA7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICByZXFzLnB1c2goYXhpb3Moe1xuICAgICAgICAgICAgdXJsOiBuZXdTZXNzaW9uVVJMLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAnWC1JZGVtcG90ZW5jeS1LZXknOiAnMTIzNDUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICAgIGRhdGE6IHtjYXBhYmlsaXRpZXM6IHthbHdheXNNYXRjaDogZGVmYXVsdENhcHMsIGZpcnN0TWF0Y2g6IFt7fV19fSxcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgdGltZXMrKztcbiAgICAgICAgfSB3aGlsZSAodGltZXMgPCAyKTtcbiAgICAgICAgY29uc3Qgc2Vzc2lvbklkcyA9IChhd2FpdCBCLmFsbChyZXFzKSkubWFwKCh4KSA9PiB4LmRhdGEudmFsdWUuc2Vzc2lvbklkKTtcbiAgICAgICAgXy51bmlxKHNlc3Npb25JZHMpLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG5cbiAgICAgICAgY29uc3Qge3N0YXR1cywgZGF0YX0gPSBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBjcmVhdGVTZXNzaW9uVVJMKHNlc3Npb25JZHNbMF0pLFxuICAgICAgICAgIG1ldGhvZDogREVMRVRFLFxuICAgICAgICB9KTtcbiAgICAgICAgc3RhdHVzLnNob3VsZC5lcXVhbCgyMDApO1xuICAgICAgICBzaG91bGQuZXF1YWwoZGF0YS52YWx1ZSwgbnVsbCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBjcmVhdGUgc2Vzc2lvbiBhbmQgcmV0cmlldmUgYSBzZXNzaW9uIGlkLCB0aGVuIGRlbGV0ZSBpdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IHtzdGF0dXMsIGRhdGF9ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogbmV3U2Vzc2lvblVSTCxcbiAgICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgICAgZGF0YToge2NhcGFiaWxpdGllczoge2Fsd2F5c01hdGNoOiBkZWZhdWx0Q2FwcywgZmlyc3RNYXRjaDogW3t9XX19LFxuICAgICAgICB9KTtcblxuICAgICAgICBzdGF0dXMuc2hvdWxkLmVxdWFsKDIwMCk7XG4gICAgICAgIHNob3VsZC5leGlzdChkYXRhLnZhbHVlLnNlc3Npb25JZCk7XG4gICAgICAgIGRhdGEudmFsdWUuY2FwYWJpbGl0aWVzLnBsYXRmb3JtTmFtZS5zaG91bGQuZXF1YWwoZGVmYXVsdENhcHMucGxhdGZvcm1OYW1lKTtcbiAgICAgICAgZGF0YS52YWx1ZS5jYXBhYmlsaXRpZXMuZGV2aWNlTmFtZS5zaG91bGQuZXF1YWwoZGVmYXVsdENhcHNbJ2FwcGl1bTpkZXZpY2VOYW1lJ10pO1xuXG4gICAgICAgICh7c3RhdHVzLCBkYXRhfSA9IGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZVNlc3Npb25VUkwoZC5zZXNzaW9uSWQpLFxuICAgICAgICAgIG1ldGhvZDogREVMRVRFLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgc3RhdHVzLnNob3VsZC5lcXVhbCgyMDApO1xuICAgICAgICBzaG91bGQuZXF1YWwoZGF0YS52YWx1ZSwgbnVsbCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChkLnNlc3Npb25JZCwgbnVsbCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0LnNraXAoJ3Nob3VsZCB0aHJvdyBOWUkgZm9yIGNvbW1hbmRzIG5vdCBpbXBsZW1lbnRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdjb21tYW5kIHRpbWVvdXRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IG9yaWdpbmFsRmluZEVsZW1lbnQsIG9yaWdpbmFsRmluZEVsZW1lbnRzO1xuXG4gICAgICBhc3luYyBmdW5jdGlvbiBzdGFydFRpbWVvdXRTZXNzaW9uICh0aW1lb3V0KSB7XG4gICAgICAgIGNvbnN0IGNhcHMgPSBfLmNsb25lRGVlcChkZWZhdWx0Q2Fwcyk7XG4gICAgICAgIGNhcHNbJ2FwcGl1bTpuZXdDb21tYW5kVGltZW91dCddID0gdGltZW91dDtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHN0YXJ0U2Vzc2lvbihjYXBzKTtcbiAgICAgIH1cblxuICAgICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgb3JpZ2luYWxGaW5kRWxlbWVudCA9IGQuZmluZEVsZW1lbnQ7XG4gICAgICAgIGQuZmluZEVsZW1lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuICdmb28nO1xuICAgICAgICB9LmJpbmQoZCk7XG5cbiAgICAgICAgb3JpZ2luYWxGaW5kRWxlbWVudHMgPSBkLmZpbmRFbGVtZW50cztcbiAgICAgICAgZC5maW5kRWxlbWVudHMgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgQi5kZWxheSgyMDApO1xuICAgICAgICAgIHJldHVybiBbJ2ZvbyddO1xuICAgICAgICB9LmJpbmQoZCk7XG4gICAgICB9KTtcblxuICAgICAgYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICBkLmZpbmRFbGVtZW50ID0gb3JpZ2luYWxGaW5kRWxlbWVudDtcbiAgICAgICAgZC5maW5kRWxlbWVudHMgPSBvcmlnaW5hbEZpbmRFbGVtZW50cztcbiAgICAgIH0pO1xuXG5cbiAgICAgIGl0KCdzaG91bGQgc2V0IGEgZGVmYXVsdCBjb21tYW5kVGltZW91dCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IG5ld1Nlc3Npb24gPSBhd2FpdCBzdGFydFRpbWVvdXRTZXNzaW9uKCk7XG4gICAgICAgIGQubmV3Q29tbWFuZFRpbWVvdXRNcy5zaG91bGQuYmUuYWJvdmUoMCk7XG4gICAgICAgIGF3YWl0IGVuZFNlc3Npb24obmV3U2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdGltZW91dCBvbiBjb21tYW5kcyB1c2luZyBjb21tYW5kVGltZW91dCBjYXAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBuZXdTZXNzaW9uID0gYXdhaXQgc3RhcnRUaW1lb3V0U2Vzc2lvbigwLjI1KTtcbiAgICAgICAgLy8gWFhYOiByYWNlIGNvbmRpdGlvbjogd2UgbXVzdCBidWlsZCB0aGlzIFVSTCBiZWZvcmUgLi4uc29tZXRoaW5nIGhhcHBlbnMuLi5cbiAgICAgICAgLy8gd2hpY2ggY2F1c2VzIGBkLnNlc3Npb25JZGAgdG8gYmUgbWlzc2luZ1xuICAgICAgICBsZXQgc2Vzc2lvblVSTCA9IGNyZWF0ZVNlc3Npb25VUkwoZC5zZXNzaW9uSWQpO1xuICAgICAgICBhd2FpdCBheGlvcyh7XG4gICAgICAgICAgdXJsOiBjcmVhdGVBcHBpdW1UZXN0VVJMKGQuc2Vzc2lvbklkLCAnZWxlbWVudCcpLFxuICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICBkYXRhOiB7dXNpbmc6ICduYW1lJywgdmFsdWU6ICdmb28nfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IEIuZGVsYXkoNDAwKTtcbiAgICAgICAgY29uc3Qge2RhdGF9ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogc2Vzc2lvblVSTCxcbiAgICAgICAgICB2YWxpZGF0ZVN0YXR1czogbnVsbCxcbiAgICAgICAgfSk7XG4gICAgICAgIHNob3VsZC5lcXVhbChkYXRhLnZhbHVlLmVycm9yLCAnaW52YWxpZCBzZXNzaW9uIGlkJyk7XG4gICAgICAgIHNob3VsZC5lcXVhbChkLnNlc3Npb25JZCwgbnVsbCk7XG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBlbmRTZXNzaW9uKG5ld1Nlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHJlc3AuZXJyb3IsICdpbnZhbGlkIHNlc3Npb24gaWQnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIG5vdCB0aW1lb3V0IHdpdGggY29tbWFuZFRpbWVvdXQgb2YgZmFsc2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBuZXdTZXNzaW9uID0gYXdhaXQgc3RhcnRUaW1lb3V0U2Vzc2lvbigwLjEpO1xuICAgICAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCB7dmFsdWV9ID0gKGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZUFwcGl1bVRlc3RVUkwoZC5zZXNzaW9uSWQsICdlbGVtZW50cycpLFxuICAgICAgICAgIG1ldGhvZDogUE9TVCxcbiAgICAgICAgICBkYXRhOiB7dXNpbmc6ICduYW1lJywgdmFsdWU6ICdmb28nfSxcbiAgICAgICAgfSkpLmRhdGE7XG4gICAgICAgIChEYXRlLm5vdygpIC0gc3RhcnQpLnNob3VsZC5iZS5hYm92ZSgxNTApO1xuICAgICAgICB2YWx1ZS5zaG91bGQuZXFsKFsnZm9vJ10pO1xuICAgICAgICBhd2FpdCBlbmRTZXNzaW9uKG5ld1Nlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIG5vdCB0aW1lb3V0IHdpdGggY29tbWFuZFRpbWVvdXQgb2YgMCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5uZXdDb21tYW5kVGltZW91dE1zID0gMjtcbiAgICAgICAgbGV0IG5ld1Nlc3Npb24gPSBhd2FpdCBzdGFydFRpbWVvdXRTZXNzaW9uKDApO1xuXG4gICAgICAgIGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZUFwcGl1bVRlc3RVUkwoZC5zZXNzaW9uSWQsICdlbGVtZW50JyksXG4gICAgICAgICAgbWV0aG9kOiBQT1NULFxuICAgICAgICAgIGRhdGE6IHt1c2luZzogJ25hbWUnLCB2YWx1ZTogJ2Zvbyd9LFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgQi5kZWxheSg0MDApO1xuICAgICAgICBjb25zdCB7dmFsdWV9ID0gKGF3YWl0IGF4aW9zKHtcbiAgICAgICAgICB1cmw6IGNyZWF0ZVNlc3Npb25VUkwoZC5zZXNzaW9uSWQpLFxuICAgICAgICB9KSkuZGF0YTtcbiAgICAgICAgdmFsdWUucGxhdGZvcm1OYW1lLnNob3VsZC5lcXVhbChkZWZhdWx0Q2Fwcy5wbGF0Zm9ybU5hbWUpO1xuICAgICAgICBjb25zdCByZXNwID0gYXdhaXQgZW5kU2Vzc2lvbihuZXdTZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChyZXNwLCBudWxsKTtcblxuICAgICAgICBkLm5ld0NvbW1hbmRUaW1lb3V0TXMgPSA2MCAqIDEwMDA7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBub3QgdGltZW91dCBpZiBpdHMganVzdCB0aGUgY29tbWFuZCB0YWtpbmcgYXdoaWxlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgbmV3U2Vzc2lvbiA9IGF3YWl0IHN0YXJ0VGltZW91dFNlc3Npb24oMC4yNSk7XG4gICAgICAgIC8vIFhYWDogcmFjZSBjb25kaXRpb246IHdlIG11c3QgYnVpbGQgdGhpcyBVUkwgYmVmb3JlIC4uLnNvbWV0aGluZyBoYXBwZW5zLi4uXG4gICAgICAgIC8vIHdoaWNoIGNhdXNlcyBgZC5zZXNzaW9uSWRgIHRvIGJlIG1pc3NpbmdcbiAgICAgICAgbGV0IHNlc3Npb25VUkwgPSBjcmVhdGVTZXNzaW9uVVJMKGQuc2Vzc2lvbklkKTtcbiAgICAgICAgYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogY3JlYXRlQXBwaXVtVGVzdFVSTChkLnNlc3Npb25JZCwgJ2VsZW1lbnQnKSxcbiAgICAgICAgICBtZXRob2Q6IFBPU1QsXG4gICAgICAgICAgZGF0YToge3VzaW5nOiAnbmFtZScsIHZhbHVlOiAnZm9vJ30sXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBCLmRlbGF5KDQwMCk7XG4gICAgICAgIGNvbnN0IHt2YWx1ZX0gPSAoYXdhaXQgYXhpb3Moe1xuICAgICAgICAgIHVybDogc2Vzc2lvblVSTCxcbiAgICAgICAgICB2YWxpZGF0ZVN0YXR1czogbnVsbCxcbiAgICAgICAgfSkpLmRhdGE7XG4gICAgICAgIHZhbHVlLmVycm9yLnNob3VsZC5lcXVhbCgnaW52YWxpZCBzZXNzaW9uIGlkJyk7XG4gICAgICAgIHNob3VsZC5lcXVhbChkLnNlc3Npb25JZCwgbnVsbCk7XG4gICAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBlbmRTZXNzaW9uKG5ld1Nlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgICAgcmVzcC5lcnJvci5zaG91bGQuZXF1YWwoJ2ludmFsaWQgc2Vzc2lvbiBpZCcpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgbm90IGhhdmUgYSB0aW1lciBydW5uaW5nIGJlZm9yZSBvciBhZnRlciBhIHNlc3Npb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZC5ub0NvbW1hbmRUaW1lcik7XG4gICAgICAgIGxldCBuZXdTZXNzaW9uID0gYXdhaXQgc3RhcnRUaW1lb3V0U2Vzc2lvbigwLjI1KTtcbiAgICAgICAgbmV3U2Vzc2lvbi5zZXNzaW9uSWQuc2hvdWxkLmVxdWFsKGQuc2Vzc2lvbklkKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGQubm9Db21tYW5kVGltZXIpO1xuICAgICAgICBhd2FpdCBlbmRTZXNzaW9uKG5ld1Nlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChkLm5vQ29tbWFuZFRpbWVyKTtcbiAgICAgIH0pO1xuXG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnc2V0dGluZ3MgYXBpJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5zZXR0aW5ncyA9IG5ldyBEZXZpY2VTZXR0aW5ncyh7aWdub3JlVW5pbXBvcnRhbnRWaWV3czogZmFsc2V9KTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIGdldCBzZXR0aW5ncyBvYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGQuc2V0dGluZ3MuZ2V0U2V0dGluZ3MoKS5pZ25vcmVVbmltcG9ydGFudFZpZXdzLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIHVwZGF0ZVNldHRpbmdzIG1ldGhvZCBpcyBub3QgZGVmaW5lZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZC5zZXR0aW5ncy51cGRhdGUoe2lnbm9yZVVuaW1wb3J0YW50Vmlld3M6IHRydWV9KS5zaG91bGQuZXZlbnR1YWxseVxuICAgICAgICAgICAgICAgIC5iZS5yZWplY3RlZFdpdGgoJ29uU2V0dGluZ3NVcGRhdGUnKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgaW52YWxpZCB1cGRhdGUgb2JqZWN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkLnNldHRpbmdzLnVwZGF0ZSgnaW52YWxpZCBqc29uJykuc2hvdWxkLmV2ZW50dWFsbHlcbiAgICAgICAgICAgICAgICAuYmUucmVqZWN0ZWRXaXRoKCdKU09OJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd1bmV4cGVjdGVkIGV4aXRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCByZWplY3QgYSBjdXJyZW50IGNvbW1hbmQgd2hlbiB0aGUgZHJpdmVyIGNyYXNoZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGQuX29sZEdldFN0YXR1cyA9IGQuZ2V0U3RhdHVzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGQuZ2V0U3RhdHVzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXdhaXQgQi5kZWxheSg1MDAwKTtcbiAgICAgICAgICB9LmJpbmQoZCk7XG4gICAgICAgICAgY29uc3QgcmVxUHJvbWlzZSA9IGF4aW9zKHtcbiAgICAgICAgICAgIHVybDogY3JlYXRlQXBwaXVtVGVzdFVSTCgnJywgJ3N0YXR1cycpLFxuICAgICAgICAgICAgdmFsaWRhdGVTdGF0dXM6IG51bGwsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlcXVlc3QgZ2V0cyB0byB0aGUgc2VydmVyIGJlZm9yZSBvdXIgc2h1dGRvd25cbiAgICAgICAgICBhd2FpdCBCLmRlbGF5KDEwMCk7XG4gICAgICAgICAgY29uc3Qgc2h1dGRvd25FdmVudFByb21pc2UgPSBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoJ29uVW5leHBlY3RlZFNodXRkb3duIGV2ZW50IGlzIGV4cGVjdGVkIHRvIGJlIGZpcmVkIHdpdGhpbiA1IHNlY29uZHMgdGltZW91dCcpKSwgNTAwMCk7XG4gICAgICAgICAgICBkLm9uVW5leHBlY3RlZFNodXRkb3duKHJlc29sdmUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGQuc3RhcnRVbmV4cGVjdGVkU2h1dGRvd24obmV3IEVycm9yKCdDcmFzaHl0aW1lcycpKTtcbiAgICAgICAgICBjb25zdCB7dmFsdWV9ID0gKGF3YWl0IHJlcVByb21pc2UpLmRhdGE7XG4gICAgICAgICAgdmFsdWUubWVzc2FnZS5zaG91bGQuY29udGFpbignQ3Jhc2h5dGltZXMnKTtcbiAgICAgICAgICBhd2FpdCBzaHV0ZG93bkV2ZW50UHJvbWlzZTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBkLmdldFN0YXR1cyA9IGQuX29sZEdldFN0YXR1cztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZXZlbnQgdGltaW5ncycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgbm90IGFkZCB0aW1pbmdzIGlmIG5vdCB1c2luZyBvcHQtaW4gY2FwJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgc3RhcnRTZXNzaW9uKGRlZmF1bHRDYXBzKTtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZ2V0U2Vzc2lvbihzZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QocmVzLmV2ZW50cyk7XG4gICAgICAgIGF3YWl0IGVuZFNlc3Npb24oc2Vzc2lvbi5zZXNzaW9uSWQpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGFkZCBzdGFydCBzZXNzaW9uIHRpbWluZ3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGNhcHMgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0Q2FwcywgeydhcHBpdW06ZXZlbnRUaW1pbmdzJzogdHJ1ZX0pO1xuICAgICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgc3RhcnRTZXNzaW9uKGNhcHMpO1xuICAgICAgICBjb25zdCByZXMgPSAoYXdhaXQgZ2V0U2Vzc2lvbihzZXNzaW9uLnNlc3Npb25JZCkpO1xuICAgICAgICBzaG91bGQuZXhpc3QocmVzLmV2ZW50cyk7XG4gICAgICAgIHNob3VsZC5leGlzdChyZXMuZXZlbnRzLm5ld1Nlc3Npb25SZXF1ZXN0ZWQpO1xuICAgICAgICBzaG91bGQuZXhpc3QocmVzLmV2ZW50cy5uZXdTZXNzaW9uU3RhcnRlZCk7XG4gICAgICAgIHJlcy5ldmVudHMubmV3U2Vzc2lvblJlcXVlc3RlZFswXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgIHJlcy5ldmVudHMubmV3U2Vzc2lvblN0YXJ0ZWRbMF0uc2hvdWxkLmJlLmEoJ251bWJlcicpO1xuICAgICAgICBhd2FpdCBlbmRTZXNzaW9uKHNlc3Npb24uc2Vzc2lvbklkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaWYgKERyaXZlckNsYXNzID09PSBCYXNlRHJpdmVyKSB7XG4gICAgICAvLyBvbmx5IHJ1biB0aGlzIHRlc3Qgb24gYmFzZWRyaXZlciwgbm90IG90aGVyIGRyaXZlcnMgd2hpY2ggYWxzbyB1c2UgdGhlc2UgdGVzdHMsIHNpbmNlIHdlXG4gICAgICAvLyBkb24ndCB3YW50IHRoZW0gdG8gdHJ5IGFuZCBzdGFydCBzZXNzaW9ucyB3aXRoIHRoZXNlIHJhbmRvbSBjYXBhYmlsaXRpZXMgdGhhdCBhcmVcbiAgICAgIC8vIG5lY2Vzc2FyeSB0byB0ZXN0IHRoZSBhcHBpdW0gb3B0aW9ucyBsb2dpY1xuICAgICAgZGVzY3JpYmUoJ3NwZWNpYWwgYXBwaXVtOm9wdGlvbnMgY2FwYWJpbGl0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIHN0YXJ0IGEgc2Vzc2lvbiB3aXRoIGNhcHMgaGVsZCBpbiBhcHBpdW06b3B0aW9ucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCByZXQgPSBhd2FpdCBzdGFydFNlc3Npb24oe1xuICAgICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAgIFtQUkVGSVhFRF9BUFBJVU1fT1BUU19DQVBdOiB7XG4gICAgICAgICAgICAgIHBsYXRmb3JtVmVyc2lvbjogJzExLjQnLFxuICAgICAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnaVBob25lIDExJyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBkLm9wdHMucGxhdGZvcm1WZXJzaW9uLnNob3VsZC5lcWwoJzExLjQnKTtcbiAgICAgICAgICBkLm9wdHMuZGV2aWNlTmFtZS5zaG91bGQuZXFsKCdpUGhvbmUgMTEnKTtcbiAgICAgICAgICBhd2FpdCBlbmRTZXNzaW9uKHJldC5zZXNzaW9uSWQpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VEcml2ZXJFMkVUZXN0cztcbiJdLCJmaWxlIjoidGVzdC9iYXNlZHJpdmVyL2RyaXZlci1lMmUtdGVzdHMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -4,14 +4,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
 
5
5
  require("source-map-support/register");
6
6
 
7
- var _ = _interopRequireDefault(require("../.."));
7
+ var _lib = _interopRequireDefault(require("../../lib"));
8
8
 
9
9
  var _driverTests = _interopRequireDefault(require("./driver-tests"));
10
10
 
11
- (0, _driverTests.default)(_.default, {
11
+ (0, _driverTests.default)(_lib.default, {
12
12
  platformName: 'iOS',
13
13
  'appium:deviceName': 'Delorean'
14
14
  });require('source-map-support').install();
15
15
 
16
16
 
17
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9kcml2ZXItc3BlY3MuanMiXSwibmFtZXMiOlsiQmFzZURyaXZlciIsInBsYXRmb3JtTmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0EsMEJBQW9CQSxTQUFwQixFQUFnQztBQUM5QkMsRUFBQUEsWUFBWSxFQUFFLEtBRGdCO0FBRTlCLHVCQUFxQjtBQUZTLENBQWhDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1vY2hhXG5cbmltcG9ydCBCYXNlRHJpdmVyIGZyb20gJy4uLy4uJztcbmltcG9ydCBiYXNlRHJpdmVyVW5pdFRlc3RzIGZyb20gJy4vZHJpdmVyLXRlc3RzJztcbmJhc2VEcml2ZXJVbml0VGVzdHMoQmFzZURyaXZlciwge1xuICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nXG59KTtcbiJdLCJmaWxlIjoidGVzdC9iYXNlZHJpdmVyL2RyaXZlci1zcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
17
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9kcml2ZXItc3BlY3MuanMiXSwibmFtZXMiOlsiQmFzZURyaXZlciIsInBsYXRmb3JtTmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0EsMEJBQW9CQSxZQUFwQixFQUFnQztBQUM5QkMsRUFBQUEsWUFBWSxFQUFFLEtBRGdCO0FBRTlCLHVCQUFxQjtBQUZTLENBQWhDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1vY2hhXG5cbmltcG9ydCBCYXNlRHJpdmVyIGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgYmFzZURyaXZlclVuaXRUZXN0cyBmcm9tICcuL2RyaXZlci10ZXN0cyc7XG5iYXNlRHJpdmVyVW5pdFRlc3RzKEJhc2VEcml2ZXIsIHtcbiAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJ1xufSk7XG4iXSwiZmlsZSI6InRlc3QvYmFzZWRyaXZlci9kcml2ZXItc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==