@testring/plugin-selenium-driver 0.7.2 → 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -7,3 +7,4 @@ function seleniumPlugin(pluginAPI, userConfig) {
7
7
  const browserProxy = pluginAPI.getBrowserProxy();
8
8
  browserProxy.proxyPlugin(pluginPath, userConfig || {});
9
9
  }
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAIA,iCAQC;AAZD,6BAA6B;AAI7B,SAAwB,cAAc,CAClC,SAAoB,EACpB,UAAgC;IAEhC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,EAAE,CAAC;IAEjD,YAAY,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;AAC3D,CAAC"}
@@ -8,6 +8,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __rest = (this && this.__rest) || function (s, e) {
12
+ var t = {};
13
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
14
+ t[p] = s[p];
15
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
16
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
17
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
18
+ t[p[i]] = s[p[i]];
19
+ }
20
+ return t;
21
+ };
11
22
  Object.defineProperty(exports, "__esModule", { value: true });
12
23
  exports.SeleniumPlugin = void 0;
13
24
  exports.default = seleniumProxy;
@@ -30,9 +41,10 @@ const DEFAULT_CONFIG = {
30
41
  // for local ChromeDriver
31
42
  args: [],
32
43
  },
33
- 'wdio:enforceWebDriverClassic': true
44
+ 'wdio:enforceWebDriverClassic': true,
34
45
  },
35
46
  cdpCoverage: false,
47
+ disableClientPing: false,
36
48
  };
37
49
  function delay(timeout) {
38
50
  return new Promise((resolve) => setTimeout(() => resolve(), timeout));
@@ -85,15 +97,17 @@ class SeleniumPlugin {
85
97
  return mergedConfig;
86
98
  }
87
99
  initIntervals() {
88
- if (this.config.clientCheckInterval > 0) {
89
- this.clientCheckInterval = setInterval(() => this.checkClientsTimeout(), this.config.clientCheckInterval);
90
- }
91
- process.on('exit', () => {
92
- clearInterval(this.clientCheckInterval);
93
- this.stopAllSessions().catch((err) => {
94
- this.logger.error('Clean process exit failed', err);
100
+ if (this.config.workerLimit !== 'local' && !this.config.disableClientPing) {
101
+ if (this.config.clientCheckInterval > 0) {
102
+ this.clientCheckInterval = setInterval(() => this.checkClientsTimeout(), this.config.clientCheckInterval);
103
+ }
104
+ process.on('exit', () => {
105
+ clearInterval(this.clientCheckInterval);
106
+ this.stopAllSessions().catch((err) => {
107
+ this.logger.error('Clean process exit failed', err);
108
+ });
95
109
  });
96
- });
110
+ }
97
111
  }
98
112
  stopAllSessions() {
99
113
  const clientsRequests = [];
@@ -121,7 +135,7 @@ class SeleniumPlugin {
121
135
  const seleniumJarPath = seleniumServer.path;
122
136
  this.logger.debug('Init local selenium server');
123
137
  try {
124
- this.localSelenium = (0, child_process_1.spawn)('java', [
138
+ this.localSelenium = (0, child_process_1.spawnWithPipes)('java', [
125
139
  ...this.getChromeDriverArgs(),
126
140
  '-jar',
127
141
  seleniumJarPath,
@@ -329,7 +343,9 @@ class SeleniumPlugin {
329
343
  }
330
344
  kill() {
331
345
  return __awaiter(this, void 0, void 0, function* () {
346
+ var _a, _b, _c, _d;
332
347
  this.logger.debug('Kill command is called');
348
+ // Close all browser sessions
333
349
  for (const applicant of this.browserClients.keys()) {
334
350
  try {
335
351
  yield this.end(applicant);
@@ -338,8 +354,44 @@ class SeleniumPlugin {
338
354
  this.logger.error(e);
339
355
  }
340
356
  }
357
+ // If using 'local' mode, stop all active sessions
358
+ if (this.config.workerLimit === 'local') {
359
+ yield this.stopAllSessions();
360
+ }
341
361
  if (this.localSelenium) {
342
- this.localSelenium.kill();
362
+ // remove listener
363
+ if (this.localSelenium.stderr) {
364
+ this.localSelenium.stderr.removeAllListeners('data');
365
+ (_a = this.localSelenium.stdout) === null || _a === void 0 ? void 0 : _a.removeAllListeners();
366
+ }
367
+ // Ensure all pipes are closed
368
+ (_b = this.localSelenium.stdout) === null || _b === void 0 ? void 0 : _b.destroy();
369
+ (_c = this.localSelenium.stderr) === null || _c === void 0 ? void 0 : _c.destroy();
370
+ (_d = this.localSelenium.stdin) === null || _d === void 0 ? void 0 : _d.destroy();
371
+ this.logger.debug(`Stopping local Selenium server (PID: ${this.localSelenium.pid})`);
372
+ // Try SIGTERM first
373
+ this.localSelenium.kill('SIGTERM');
374
+ // Wait for exit event with a timeout (ensures it does not hang forever)
375
+ const waitForExit = new Promise((resolve) => {
376
+ this.localSelenium.once('exit', () => {
377
+ this.logger.debug('Selenium process exited.');
378
+ resolve();
379
+ });
380
+ });
381
+ // Force kill if not exiting within 3 seconds
382
+ const forceKill = new Promise((resolve) => {
383
+ setTimeout(() => {
384
+ if (!this.localSelenium.killed) {
385
+ this.logger.warn(`Selenium did not exit in time. Sending SIGKILL.`);
386
+ this.localSelenium.kill('SIGKILL');
387
+ }
388
+ resolve();
389
+ }, 3000);
390
+ });
391
+ // Wait for either normal exit or force kill
392
+ yield Promise.race([waitForExit, forceKill]);
393
+ this.localSelenium.removeAllListeners();
394
+ this.logger.debug('Selenium process and all associated pipes closed.');
343
395
  }
344
396
  });
345
397
  }
@@ -355,7 +407,9 @@ class SeleniumPlugin {
355
407
  yield this.createClient(applicant);
356
408
  const client = this.getBrowserClient(applicant);
357
409
  const element = yield client.$(selector);
358
- return options && Object.keys(options).length > 0 ? element.click(options) : element.click();
410
+ return options && Object.keys(options).length > 0
411
+ ? element.click(options)
412
+ : element.click();
359
413
  });
360
414
  }
361
415
  getSize(applicant, selector) {
@@ -445,7 +499,7 @@ class SeleniumPlugin {
445
499
  return client.getTitle();
446
500
  });
447
501
  }
448
- clearElement(applicant, xpath) {
502
+ clearValue(applicant, xpath) {
449
503
  return __awaiter(this, void 0, void 0, function* () {
450
504
  yield this.createClient(applicant);
451
505
  const client = this.getBrowserClient(applicant);
@@ -813,48 +867,34 @@ class SeleniumPlugin {
813
867
  return selector.selectByAttribute(attribute, value);
814
868
  });
815
869
  }
816
- // @deprecated WAT-1872
817
- gridProxyDetails(applicant) {
870
+ gridTestSession(applicant) {
818
871
  return __awaiter(this, void 0, void 0, function* () {
819
872
  yield this.createClient(applicant);
820
873
  const client = this.getBrowserClient(applicant);
821
874
  if (this.localSelenium) {
822
875
  return {
876
+ sessionId: client.sessionId,
877
+ host: this.config.host,
878
+ port: this.config.port,
823
879
  localSelenium: true,
824
880
  };
825
881
  }
826
- return client.gridProxyDetails(client.sessionId);
882
+ return client.gridTestSession(client.sessionId);
827
883
  });
828
884
  }
829
- // @deprecated WAT-1872
830
- gridTestSession(applicant) {
885
+ getHubConfig(applicant) {
831
886
  return __awaiter(this, void 0, void 0, function* () {
832
887
  yield this.createClient(applicant);
833
888
  const client = this.getBrowserClient(applicant);
834
889
  if (this.localSelenium) {
835
890
  return {
891
+ sessionId: client.sessionId,
892
+ host: this.config.host,
893
+ port: this.config.port,
836
894
  localSelenium: true,
837
895
  };
838
896
  }
839
- return client.gridTestSession(client.sessionId);
840
- });
841
- }
842
- // @deprecated WAT-1872
843
- getGridNodeDetails(applicant) {
844
- return __awaiter(this, void 0, void 0, function* () {
845
- yield this.createClient(applicant);
846
- const client = this.getBrowserClient(applicant);
847
- const testSession = yield this.gridTestSession(applicant);
848
- if (testSession && !testSession.localSelenium) {
849
- const proxyDetails = yield client.gridProxyDetails(applicant);
850
- delete testSession.msg;
851
- delete testSession.success;
852
- delete proxyDetails.msg;
853
- delete proxyDetails.success;
854
- delete proxyDetails.id;
855
- return Object.assign(Object.assign({}, testSession), proxyDetails);
856
- }
857
- return testSession;
897
+ return client.getHubConfig();
858
898
  });
859
899
  }
860
900
  /**
@@ -885,8 +925,131 @@ class SeleniumPlugin {
885
925
  });
886
926
  });
887
927
  }
928
+ status(applicant) {
929
+ return __awaiter(this, void 0, void 0, function* () {
930
+ yield this.createClient(applicant);
931
+ const client = this.getBrowserClient(applicant);
932
+ return client.status();
933
+ });
934
+ }
935
+ back(applicant) {
936
+ return __awaiter(this, void 0, void 0, function* () {
937
+ yield this.createClient(applicant);
938
+ const client = this.getBrowserClient(applicant);
939
+ return client.back();
940
+ });
941
+ }
942
+ forward(applicant) {
943
+ return __awaiter(this, void 0, void 0, function* () {
944
+ yield this.createClient(applicant);
945
+ const client = this.getBrowserClient(applicant);
946
+ return client.forward();
947
+ });
948
+ }
949
+ getActiveElement(applicant) {
950
+ return __awaiter(this, void 0, void 0, function* () {
951
+ yield this.createClient(applicant);
952
+ const client = this.getBrowserClient(applicant);
953
+ return client.getActiveElement();
954
+ });
955
+ }
956
+ getLocation(applicant, xpath) {
957
+ return __awaiter(this, void 0, void 0, function* () {
958
+ yield this.createClient(applicant);
959
+ const client = this.getBrowserClient(applicant);
960
+ const element = client.$(xpath);
961
+ return element.getLocation();
962
+ });
963
+ }
964
+ setTimeZone(applicant, timeZone) {
965
+ return __awaiter(this, void 0, void 0, function* () {
966
+ yield this.createClient(applicant);
967
+ const client = this.getBrowserClient(applicant);
968
+ return client.setTimeZone(timeZone);
969
+ });
970
+ }
971
+ getWindowSize(applicant) {
972
+ return __awaiter(this, void 0, void 0, function* () {
973
+ yield this.createClient(applicant);
974
+ const client = this.getBrowserClient(applicant);
975
+ return client.getWindowSize();
976
+ });
977
+ }
978
+ savePDF(applicant, options) {
979
+ return __awaiter(this, void 0, void 0, function* () {
980
+ yield this.createClient(applicant);
981
+ const client = this.getBrowserClient(applicant);
982
+ const { filepath } = options, restOptions = __rest(options, ["filepath"]);
983
+ return client.savePDF(filepath, restOptions);
984
+ });
985
+ }
986
+ addValue(applicant, xpath, value) {
987
+ return __awaiter(this, void 0, void 0, function* () {
988
+ yield this.createClient(applicant);
989
+ const client = this.getBrowserClient(applicant);
990
+ const selector = yield client.$(xpath);
991
+ return selector.addValue(value);
992
+ });
993
+ }
994
+ doubleClick(applicant, xpath) {
995
+ return __awaiter(this, void 0, void 0, function* () {
996
+ yield this.createClient(applicant);
997
+ const client = this.getBrowserClient(applicant);
998
+ const selector = yield client.$(xpath);
999
+ return selector.doubleClick();
1000
+ });
1001
+ }
1002
+ isClickable(applicant, xpath) {
1003
+ return __awaiter(this, void 0, void 0, function* () {
1004
+ yield this.createClient(applicant);
1005
+ const client = this.getBrowserClient(applicant);
1006
+ const selector = yield client.$(xpath);
1007
+ return selector.isClickable();
1008
+ });
1009
+ }
1010
+ waitForClickable(applicant, xpath, timeout) {
1011
+ return __awaiter(this, void 0, void 0, function* () {
1012
+ yield this.createClient(applicant);
1013
+ const client = this.getBrowserClient(applicant);
1014
+ const selector = yield client.$(xpath);
1015
+ return selector.waitForClickable({ timeout });
1016
+ });
1017
+ }
1018
+ isFocused(applicant, xpath) {
1019
+ return __awaiter(this, void 0, void 0, function* () {
1020
+ yield this.createClient(applicant);
1021
+ const client = this.getBrowserClient(applicant);
1022
+ const selector = yield client.$(xpath);
1023
+ return selector.isFocused();
1024
+ });
1025
+ }
1026
+ isStable(applicant, xpath) {
1027
+ return __awaiter(this, void 0, void 0, function* () {
1028
+ yield this.createClient(applicant);
1029
+ const client = this.getBrowserClient(applicant);
1030
+ const selector = yield client.$(xpath);
1031
+ return selector.isStable();
1032
+ });
1033
+ }
1034
+ waitForEnabled(applicant, xpath, timeout) {
1035
+ return __awaiter(this, void 0, void 0, function* () {
1036
+ yield this.createClient(applicant);
1037
+ const client = this.getBrowserClient(applicant);
1038
+ const selector = yield client.$(xpath);
1039
+ return selector.waitForEnabled({ timeout });
1040
+ });
1041
+ }
1042
+ waitForStable(applicant, xpath, timeout) {
1043
+ return __awaiter(this, void 0, void 0, function* () {
1044
+ yield this.createClient(applicant);
1045
+ const client = this.getBrowserClient(applicant);
1046
+ const selector = yield client.$(xpath);
1047
+ return selector.waitForStable({ timeout });
1048
+ });
1049
+ }
888
1050
  }
889
1051
  exports.SeleniumPlugin = SeleniumPlugin;
890
1052
  function seleniumProxy(config) {
891
1053
  return new SeleniumPlugin(config);
892
1054
  }
1055
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAwuCA,gCAEC;AAjuCD,6CAAmC;AACnC,uCAAuC;AAEvC,2DAAuD;AACvD,6CAA8C;AAC9C,uEAA2D;AAC3D,uEAAkE;AAMlE,yCAAkC;AAalC,MAAM,cAAc,GAAyB;IACzC,iBAAiB,EAAE,KAAK;IACxB,mBAAmB,EAAE,CAAC,GAAG,IAAI;IAC7B,aAAa,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IAC7B,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,OAAO;IACjB,YAAY,EAAE;QACV,WAAW,EAAE,QAAQ;QACrB,oBAAoB,EAAE;YAClB,yBAAyB;YACzB,IAAI,EAAE,EAAc;SACvB;QACD,8BAA8B,EAAE,IAAI;KACvC;IACD,WAAW,EAAE,KAAK;IAClB,iBAAiB,EAAE,KAAK;CAC3B,CAAC;AAEF,SAAS,KAAK,CAAC,OAAO;IAClB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,uBAAuB,CAAC,cAAoC;IACjE,IAAI,MAAM,CAAC;IACX,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,GAAG,cAAc,CAAC;IAC5B,CAAC;SAAM,CAAC;QACJ,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;aAC/B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;aAC7C,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAa,cAAc;IAiBvB,YAAY,SAAwC,EAAE;QAhB9C,WAAM,GAAG,qBAAY,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC;QAI/D,0BAAqB,GAAgB,IAAI,GAAG,EAAE,CAAC;QAE/C,mBAAc,GAAmC,IAAI,GAAG,EAAE,CAAC;QAE3D,sBAAiB,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;QAMrD,mBAAc,GAAG,CAAC,CAAC;QAGvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAExC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAED,wDAAwD;IAChD,YAAY,CAChB,MAAqC;;QAErC,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAC9B,CAAC,cAAc,EAAE,MAAM,CAAC,EACxB;YACI,KAAK,EAAE,IAAI;SACd,CACJ,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;YAC9C,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC;QAC9C,CAAC;QAED,MAAM,mBAAmB,GACrB,MAAA,YAAY,CAAC,YAAY,0CAAG,oBAAoB,CAAC,CAAC;QACtD,IAAI,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,IAAI,0CAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACxD,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC;YAClD,MAAM,eAAe,GAAG,IAAA,kCAAY,GAAE,CAAC;YACvC,IAAI,UAAU,EAAE,CAAC;gBACb,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACJ,mBAAmB,CAAC,UAAU,GAAG,CAAC,eAAe,CAAC,CAAC;YACvD,CAAC;QACL,CAAC;QAED,OAAO,YAAY,CAAC;IACxB,CAAC;IAEO,aAAa;QACjB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACxE,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,GAAG,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAClC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAChC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAClC,CAAC;YACN,CAAC;YAED,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBACpB,aAAa,CAAC,IAAI,CAAC,mBAAqC,CAAC,CAAC;gBAC1D,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;gBACxD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAEO,eAAe;QACnB,MAAM,eAAe,GAAmB,EAAE,CAAC;QAE3C,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,uDAAuD,SAAS,GAAG,CACtE,CAAC;YACF,eAAe,CAAC,IAAI,CAChB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,wDAAwD,SAAS,MAAM,EACvE,GAAG,CACN,CAAC;YACN,CAAC,CAAC,CACL,CAAC;QACN,CAAC;QAED,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IAEO,mBAAmB;QACvB,IAAI,gBAAgB,CAAC;QAErB,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC/B,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACpD,CAAC;aAAM,CAAC;YACJ,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC;QACpD,CAAC;QAED,OAAO,CAAC,6BAA6B,gBAAgB,EAAE,CAAC,CAAC;IAC7D,CAAC;IAEa,gBAAgB;;YAC1B,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAClD,MAAM,eAAe,GAAG,cAAc,CAAC,IAAI,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAEhD,IAAI,CAAC;gBACD,IAAI,CAAC,aAAa,GAAG,IAAA,8BAAc,EAAC,MAAM,EAAE;oBACxC,GAAG,IAAI,CAAC,mBAAmB,EAAE;oBAC7B,MAAM;oBACN,eAAe;oBACf,OAAO;oBACP,IAAI,CAAC,MAAM,CAAC,IAAI;iBACnB,CAAC,CAAC;gBAEH,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBACrD,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;wBAC5B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;4BAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;4BAEhC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;4BAE7B,IAAI,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;gCAC1C,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;4BAC7B,CAAC;wBACL,CAAC,CAAC,CAAC;oBACP,CAAC;yBAAM,CAAC;wBACJ,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;oBAC/D,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;YAChE,CAAC;QACL,CAAC;KAAA;IAEO,qBAAqB,CAAC,SAAS;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEhD,IAAI,IAAI,EAAE,CAAC;YACP,OAAO,IAAI,CAAC,SAAS,CAAC;QAC1B,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,SAAS;QAC9B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAEO,gBAAgB,CAAC,SAAS;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEhD,IAAI,IAAI,EAAE,CAAC;YACP,OAAO,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC;IAEa,WAAW;;YACrB,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5C,IAAI,CAAC;oBACD,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;gBAC5D,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,YAAY;gBAChB,CAAC;YACL,CAAC;QACL,CAAC;KAAA;IAEa,mBAAmB;;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAEzD,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxD,IAAI,UAAU,CAAC,QAAQ,GAAG,SAAS,EAAE,CAAC;oBAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,qBAAqB,SAAS,oBAAoB,CACrD,CAAC;oBACF,IAAI,CAAC;wBACD,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC9B,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACT,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,qBAAqB,SAAS,iBAAiB,EAC/C,CAAC,CACJ,CAAC;oBACN,CAAC;oBACD,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC9C,CAAC;YACL,CAAC;QACL,CAAC;KAAA;IAEa,mBAAmB;;YAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACrC,CAAC;QACL,CAAC;KAAA;IAEa,YAAY,CACtB,SAAiB,EACjB,MAAoC;;YAEpC,MAAM,IAAI,CAAC,iBAAiB,CAAC;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEtD,IAAI,UAAU,EAAE,CAAC;gBACb,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,kCAC1B,UAAU,KACb,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,IACtB,CAAC;gBAEH,OAAO;YACX,CAAC;YAED,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5C,MAAM,KAAK,CACP,2BAA2B,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAC3D,CAAC;YACN,CAAC;YAED,MAAM,OAAO,GAAQ,SAAS,CAAC,GAAG,CAAC;gBAC/B,EAAE;gBACF,IAAI,CAAC,MAAM;gBACV,MAAc,IAAI,EAAE;aACxB,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAM,EAAC,OAAO,CAAC,CAAC;YAErC,IAAI,SAAiB,CAAC;YACtB,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnB,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACJ,MAAM,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC3C,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CACvC,MAA6B,CAChC,CAAC;YAEF,IAAI,oBAAoB,CAAC;YACzB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;gBACtD,oBAAoB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;gBAClE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE;gBAC/B,MAAM,EAAE,YAAY;gBACpB,SAAS;gBACT,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;gBACpB,oBAAoB,EAAE,oBAAoB;oBACtC,CAAC,CAAC,oBAAoB;oBACtB,CAAC,CAAC,IAAI;aACb,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,kCAAkC,SAAS,iBAAiB,SAAS,EAAE,CAC1E,CAAC;QACN,CAAC;KAAA;IAEa,uBAAuB,CAAC,MAAM;;YACxC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,UAAU;YACV,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,IAAI,2CAAoB,CAAC;gBACvC,UAAU,EAAE,UAAU;aACzB,CAAC,CAAC;YACH,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;YACvB,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACrB,CAAC;KAAA;IAEY,kBAAkB,CAAC,SAAiB;;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,SAAS,EAAE,CAAC,CAAC;YACtE,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,OAAO;YACX,CAAC;YACD,MAAM,iBAAiB,GAAG,UAAU,CAAC,oBAAoB,CAAC;YAC1D,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACrB,OAAO;YACX,CAAC;YACD,MAAM,EAAC,QAAQ,EAAC,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,CAAC;YACrD,MAAM,iBAAiB,CAAC,IAAI,EAAE,CAAC;YAC/B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;KAAA;IAES,iBAAiB,CACvB,MAA2B;QAE3B,OAAO,MAA6B,CAAC;IACzC,CAAC;IAEY,GAAG,CAAC,SAAiB;;YAC9B,MAAM,IAAI,CAAC,iBAAiB,CAAC;YAE7B,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,SAAS,gBAAgB,CAAC,CAAC;gBAClD,OAAO;YACX,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACvC,CAAC;YAAC,WAAM,CAAC;gBACL,YAAY;YAChB,CAAC;YAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;YAChE,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAEnC,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,mCAAmC,SAAS,iBAAiB,SAAS,EAAE,CAC3E,CAAC;gBACF,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CACzB,2CAA2C,SAAS,IAAI;oBACpD,6CAA6C,iBAAiB,kBAAkB,SAAS,EAAE,EAC/F,GAAS,EAAE;oBACP,IAAI,CAAC;wBACD,IAAI,iBAAiB,EAAE,CAAC;4BACpB,MAAM,cAAc,GAAG,mBAAS,CAAC,eAAe,CAAC;gCAC7C,SAAS,EAAE,iBAAiB;6BAC/B,CAAC,CAAC;4BACH,MAAM,cAAc,CAAC,aAAa,EAAE,CAAC;wBACzC,CAAC;oBACL,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,eAAe,iBAAiB,eAAe,EAC/C,GAAG,CACN,CAAC;oBACN,CAAC;oBAED,IAAI,CAAC;wBACD,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;oBACjC,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,eAAe,MAAM,CAAC,SAAS,eAAe,EAC9C,GAAG,CACN,CAAC;oBACN,CAAC;gBACL,CAAC,CAAA,CACJ,CAAC;YACN,CAAC;YAED,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC;KAAA;IAEY,IAAI;;;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAE5C,6BAA6B;YAC7B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;gBACjD,IAAI,CAAC;oBACD,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC9B,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACzB,CAAC;YACL,CAAC;YAED,kDAAkD;YAClD,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;gBACtC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YACjC,CAAC;YAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,kBAAkB;gBAClB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;oBAC5B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;oBACrD,MAAA,IAAI,CAAC,aAAa,CAAC,MAAM,0CAAE,kBAAkB,EAAE,CAAC;gBACpD,CAAC;gBAED,8BAA8B;gBAC9B,MAAA,IAAI,CAAC,aAAa,CAAC,MAAM,0CAAE,OAAO,EAAE,CAAC;gBACrC,MAAA,IAAI,CAAC,aAAa,CAAC,MAAM,0CAAE,OAAO,EAAE,CAAC;gBACrC,MAAA,IAAI,CAAC,aAAa,CAAC,KAAK,0CAAE,OAAO,EAAE,CAAC;gBAEpC,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,wCAAwC,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CACpE,CAAC;gBAEF,oBAAoB;gBACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAEnC,wEAAwE;gBACxE,MAAM,WAAW,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAC9C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;wBACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;wBAC9C,OAAO,EAAE,CAAC;oBACd,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,6CAA6C;gBAC7C,MAAM,SAAS,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAC5C,UAAU,CAAC,GAAG,EAAE;wBACZ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;4BAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,iDAAiD,CACpD,CAAC;4BACF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBACvC,CAAC;wBACD,OAAO,EAAE,CAAC;oBACd,CAAC,EAAE,IAAI,CAAC,CAAC;gBACb,CAAC,CAAC,CAAC;gBAEH,4CAA4C;gBAC5C,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;gBAE7C,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;gBAExC,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,mDAAmD,CACtD,CAAC;YACN,CAAC;QACL,CAAC;KAAA;IAEY,OAAO,CAAC,SAAiB;;YAClC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;KAAA;IAEY,KAAK,CACd,SAAiB,EACjB,QAAgB,EAChB,OAAsB;;YAEtB,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACzC,OAAO,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC;gBAC7C,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;gBACxB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;KAAA;IAEY,OAAO,CAAC,SAAiB,EAAE,QAAgB;;YACpD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAEzC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;KAAA;IAEY,GAAG,CAAC,SAAiB,EAAE,GAAW;;YAC3C,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3B,CAAC;YAED,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;KAAA;IAED,aAAa;QACT,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,OAAO,UAAU,IAAI,CAAC,cAAc,EAAE,CAAC;IAC3C,CAAC;IAEY,SAAS;6DAClB,SAAiB,EACjB,GAAW,EACX,UAAkB,EAClB,iBAAuC,EAAE;YAEzC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAC;YAErD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE;gBAC1C,UAAU,EAAE,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE;gBAC9C,cAAc,EAAE,IAAI;aACvB,CAAC,CAAC;YACH,OAAO,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,KAAI,SAAS,CAAC;QAC1C,CAAC;KAAA;IAEY,YAAY,CACrB,SAAiB,EACjB,KAAa,EACb,OAAe;;YAEf,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,YAAY,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC;QAC5C,CAAC;KAAA;IAEY,cAAc,CACvB,SAAiB,EACjB,KAAa,EACb,OAAe;;YAEf,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,gBAAgB,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC;QAChD,CAAC;KAAA;IAEY,SAAS,CAAC,SAAiB,EAAE,KAAa;;YACnD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;QAClC,CAAC;KAAA;IAEY,YAAY;6DACrB,SAAiB,EACjB,KAAa,EACb,OAAO,GAAG,CAAC,EACX,OAAO,GAAG,CAAC;YAEX,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;QAC/C,CAAC;KAAA;IAEY,OAAO,CAAC,SAAiB,EAAE,EAAO,EAAE,IAAgB;;YAC7D,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACvC,CAAC;KAAA;IAEY,YAAY,CAAC,SAAiB,EAAE,EAAO,EAAE,IAAgB;;YAClE,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QAC5C,CAAC;KAAA;IAEY,QAAQ,CAAC,SAAiB;;YACnC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC;KAAA;IAEY,UAAU,CAAC,SAAiB,EAAE,KAAa;;YACpD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC;QACjC,CAAC;KAAA;IAEY,IAAI,CAAC,SAAiB,EAAE,KAAU;;YAC3C,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;KAAA;IAEY,aAAa,CAAC,SAAiB,EAAE,SAAiB;;YAC3D,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;KAAA;IAEY,QAAQ,CAAC,SAAiB,EAAE,KAAa;;YAClD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAY,CAAC;YACxE,OAAQ,QAA0C,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC5B,OAAO,EAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC;YACjC,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;IAEY,KAAK,CAAC,SAAiB,EAAE,OAAY;;YAC9C,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAChD,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;KAAA;IAEY,WAAW,CAAC,SAAiB;;YACtC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,mBAAmB,EAAE,CAAC;QACxC,CAAC;KAAA;IAEY,QAAQ,CAAC,SAAiB,EAAE,KAAa;;YAClD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC/B,CAAC;KAAA;IAEY,QAAQ,CAAC,SAAiB,EAAE,KAAa,EAAE,KAAU;;YAC9D,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;KAAA;IAEY,aAAa,CAAC,SAAiB,EAAE,KAAa,EAAE,KAAU;;YACnE,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;KAAA;IAEY,aAAa,CAAC,SAAiB,EAAE,KAAa,EAAE,KAAU;;YACnE,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;KAAA;IAEY,mBAAmB,CAC5B,SAAiB,EACjB,KAAa,EACb,GAAW;;YAEX,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC7C,CAAC;KAAA;IAEY,YAAY,CACrB,SAAiB,EACjB,KAAa,EACb,IAAY;;YAEZ,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;KAAA;IAEY,oBAAoB,CAAC,SAAiB;;YAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,cAAc,EAAE,CAAC;QACnC,CAAC;KAAA;IAEY,SAAS,CAAC,SAAiB,EAAE,KAAa;;YACnD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC;QAChC,CAAC;KAAA;IAEY,MAAM,CACf,SAAiB,EACjB,KAAa,EACb,OAAe,EACf,OAAe;;YAEf,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,EAAC,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;QAC9C,CAAC;KAAA;IAEY,cAAc,CACvB,SAAiB,EACjB,KAAa,EACb,qBAAsC;;YAEtC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,OAAO,CAAC,cAAc,CACxB,qBAAqB,KAAK,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CACrE,CAAC;QACN,CAAC;KAAA;IAEY,WAAW,CAAC,SAAiB;;YACtC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;QAChC,CAAC;KAAA;IAEY,WAAW,CAAC,SAAiB;;YACtC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;YAChC,CAAC;YAED,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC1C,CAAC;KAAA;IAEY,YAAY,CAAC,SAAiB;;YACvC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpC,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;YACjC,CAAC;YAED,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC1C,CAAC;KAAA;IAEY,SAAS,CAAC,SAAiB;;YACpC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpC,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;YACjC,CAAC;YAED,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC1C,CAAC;KAAA;IAEY,WAAW,CACpB,SAAiB,EACjB,WAAmB,EACnB,gBAAwB;;YAExB,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YAClD,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;YAC5D,OAAO,aAAa,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;QACzD,CAAC;KAAA;IAEY,SAAS,CAAC,SAAiB,EAAE,SAAiB;;YACvD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC;KAAA;IAEY,SAAS,CAAC,SAAiB,EAAE,UAA0B;;;YAChE,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,IAAI,UAAU,EAAE,CAAC;gBACb,IAAI,CAAC;oBACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;oBACtD,OAAO,MAAA,OAAO,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAC;gBAC7B,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,OAAO,SAAS,CAAC;gBACrB,CAAC;YACL,CAAC;YAED,OAAO,MAAM,CAAC,aAAa,EAAE,CAAC;QAClC,CAAC;KAAA;IAEY,YAAY,CAAC,SAAiB,EAAE,UAA0B;;YACnE,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,IAAI,UAAU,EAAE,CAAC;gBACb,OAAO,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAC3C,CAAC;YAED,OAAO,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACrC,CAAC;KAAA;IAEY,OAAO,CAAC,SAAiB,EAAE,KAAa,EAAE,CAAM;;YACzD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;KAAA;IAEY,eAAe,CAAC,SAAiB;;YAC1C,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,eAAe,EAAE,CAAC;QACpC,CAAC;KAAA;IAEY,SAAS,CAAC,SAAiB;;YACpC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACrC,CAAC;KAAA;IAED,cAAc;IACD,aAAa,CAAC,SAAiB;;YACxC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC;KAAA;IAEY,MAAM,CAAC,SAAiB,EAAE,KAAa;;YAChD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;KAAA;IAEY,SAAS,CAAC,SAAiB,EAAE,KAAa;;YACnD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAS,EAAE,gDAAC,OAAA,IAAI,CAAC,UAAU,EAAE,CAAA,GAAA,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;YAExE,OAAO,MAAM,CAAC;QAClB,CAAC;KAAA;IAEY,KAAK,CAAC,SAAiB,EAAE,KAAa;;YAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAE7C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/B,CAAC;YAED,MAAM,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAEnC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;QAChC,CAAC;KAAA;IAEY,UAAU,CAAC,SAAiB,EAAE,KAAa;;YACpD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC;QACjC,CAAC;KAAA;IAEY,UAAU,CAAC,SAAiB,EAAE,KAAa;;YACpD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC;QACjC,CAAC;KAAA;IAEY,OAAO,CAAC,SAAiB,EAAE,KAAa;;YACjD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;KAAA;IAEY,iBAAiB,CAAC,SAAiB,EAAE,EAAU;;YACxD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC;KAAA;IAEY,cAAc,CAAC,SAAiB;;YACzC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,cAAc,EAAE,CAAC;QACnC,CAAC;KAAA;IAEY,UAAU,CACnB,SAAiB,EACjB,QAAgB;;YAEhB,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;KAAA;IAEY,cAAc,CACvB,SAAiB,EACjB,KAAa,EACb,WAAmB;;YAEnB,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAC3D,OAAO,QAAQ,CAAC,KAAK,CAAC;QAC1B,CAAC;KAAA;IAEY,SAAS,CAAC,SAAiB;;YACpC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,aAAa,EAAE,CAAC;QAClC,CAAC;KAAA;IAEY,UAAU,CAAC,SAAiB,EAAE,KAAa;;YACpD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC;QACjC,CAAC;KAAA;IAEY,YAAY,CACrB,SAAiB,EACjB,KAAa,EACb,OAAe,EACf,OAAgB;;YAEhB,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,SAAS,CACnB,GAAS,EAAE;gBACP,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC3D,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9C,CAAC,CAAA,EACD,EAAC,OAAO,EAAC,CACZ,CAAC;QACN,CAAC;KAAA;IAEY,eAAe,CACxB,SAAiB,EACjB,KAAa,EACb,OAAe,EACf,OAAgB;;YAEhB,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,SAAS,CACnB,GAAS,EAAE;gBACP,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;gBAC9D,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;YAC9C,CAAC,CAAA,EACD,EAAC,OAAO,EAAC,CACZ,CAAC;QACN,CAAC;KAAA;IAEY,SAAS,CAClB,SAAiB,EACjB,SAAiC,EACjC,OAAgB,EAChB,UAAmB,EACnB,QAAiB;;YAEjB,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAC,CAAC,CAAC;QACxE,CAAC;KAAA;IAEY,iBAAiB,CAC1B,SAAiB,EACjB,KAAa,EACb,SAAiB,EACjB,KAAa;;YAEb,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;KAAA;IAEY,eAAe,CAAC,SAAiB;;YAC1C,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,OAAO;oBACH,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;oBACtB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;oBACtB,aAAa,EAAE,IAAI;iBACtB,CAAC;YACN,CAAC;YAED,OAAO,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACpD,CAAC;KAAA;IAEY,YAAY,CAAC,SAAiB;;YACvC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,OAAO;oBACH,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;oBACtB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;oBACtB,aAAa,EAAE,IAAI;iBACtB,CAAC;YACN,CAAC;YAED,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;QACjC,CAAC;KAAA;IAED;;OAEG;IACU,IAAI,CACb,SAAiB,EACjB,GAAW,EACX,UAA4C,EAC5C,aAAiC,EACjC,kBAAqD;;YAErD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;QACjD,CAAC;KAAA;IAEY,aAAa,CAAC,SAAiB,EAAE,UAAU;;YACpD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;YAC7B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACtC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;gBAC/B,YAAY,EAAE;oBACV,oBAAoB,EAAE;wBAClB,eAAe,EAAE;4BACb,UAAU;yBACb;qBACJ;iBACJ;aACG,CAAC,CAAC;QACd,CAAC;KAAA;IAEY,MAAM,CAAC,SAAiB;;YACjC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC;QAC3B,CAAC;KAAA;IAEY,IAAI,CAAC,SAAiB;;YAC/B,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;KAAA;IAEY,OAAO,CAAC,SAAiB;;YAClC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;QAC5B,CAAC;KAAA;IAEY,gBAAgB,CAAC,SAAiB;;YAC3C,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,OAAO,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACrC,CAAC;KAAA;IAEY,WAAW,CAAC,SAAiB,EAAE,KAAa;;YACrD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAChC,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;QACjC,CAAC;KAAA;IAEY,WAAW,CAAC,SAAiB,EAAE,QAAgB;;YACxD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAChD,OAAO,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;KAAA;IAEY,aAAa,CAAC,SAAiB;;YACxC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAChD,OAAO,MAAM,CAAC,aAAa,EAAE,CAAC;QAClC,CAAC;KAAA;IAEY,OAAO,CAAC,SAAiB,EAAE,OAAuB;;YAC3D,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,EAAC,QAAQ,KAAoB,OAAO,EAAtB,WAAW,UAAI,OAAO,EAApC,YAA0B,CAAU,CAAC;YAE3C,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACjD,CAAC;KAAA;IAEY,QAAQ,CACjB,SAAiB,EACjB,KAAa,EACb,KAAsB;;YAEtB,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;KAAA;IAEY,WAAW,CAAC,SAAiB,EAAE,KAAa;;YACrD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;QAClC,CAAC;KAAA;IAEY,WAAW,CAAC,SAAiB,EAAE,KAAa;;YACrD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;QAClC,CAAC;KAAA;IAEY,gBAAgB,CACzB,SAAiB,EACjB,KAAa,EACb,OAAe;;YAEf,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,gBAAgB,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC;QAChD,CAAC;KAAA;IAEY,SAAS,CAAC,SAAiB,EAAE,KAAa;;YACnD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,SAAS,EAAE,CAAC;QAChC,CAAC;KAAA;IAEY,QAAQ,CAAC,SAAiB,EAAE,KAAa;;YAClD,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC/B,CAAC;KAAA;IAEY,cAAc,CACvB,SAAiB,EACjB,KAAa,EACb,OAAe;;YAEf,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC;QAC9C,CAAC;KAAA;IAEY,aAAa,CACtB,SAAiB,EACjB,KAAa,EACb,OAAe;;YAEf,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC,aAAa,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC;QAC7C,CAAC;KAAA;CACJ;AAlqCD,wCAkqCC;AAED,SAAwB,aAAa,CAAC,MAA4B;IAC9D,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC"}
package/dist/types.js CHANGED
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testring/plugin-selenium-driver",
3
- "version": "0.7.2",
3
+ "version": "0.7.4",
4
4
  "main": "./dist/index.js",
5
5
  "typings": "./src/index.ts",
6
6
  "repository": {
@@ -11,11 +11,11 @@
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
13
  "@nullcc/code-coverage-client": "1.4.2",
14
- "@testring/child-process": "0.7.2",
15
- "@testring/dwnld-collector-crx": "0.7.2",
16
- "@testring/logger": "0.7.2",
17
- "@testring/plugin-api": "0.7.2",
18
- "@testring/types": "0.7.2",
14
+ "@testring/child-process": "0.7.4",
15
+ "@testring/dwnld-collector-crx": "0.7.4",
16
+ "@testring/logger": "0.7.4",
17
+ "@testring/plugin-api": "0.7.4",
18
+ "@testring/types": "0.7.4",
19
19
  "@types/deepmerge": "2.2.3",
20
20
  "@types/node": "22.8.5",
21
21
  "@wdio/types": "9.2.2",
@@ -1,21 +1,22 @@
1
1
  import {SeleniumPluginConfig} from '../types';
2
- import {IBrowserProxyPlugin, WindowFeaturesConfig} from '@testring/types';
2
+ import {
3
+ IBrowserProxyPlugin,
4
+ SavePdfOptions,
5
+ WindowFeaturesConfig,
6
+ } from '@testring/types';
3
7
 
4
8
  import {ChildProcess} from 'child_process';
5
9
 
6
10
  import {remote} from 'webdriverio';
7
11
  import * as deepmerge from 'deepmerge';
8
12
 
9
- import {spawn} from '@testring/child-process';
13
+ import {spawnWithPipes} from '@testring/child-process';
10
14
  import {loggerClient} from '@testring/logger';
11
15
  import {getCrxBase64} from '@testring/dwnld-collector-crx';
12
16
  import {CDPCoverageCollector} from '@nullcc/code-coverage-client';
13
17
 
14
18
  import type {Cookie} from '@wdio/protocols';
15
- import type {
16
- ClickOptions,
17
- MockFilterOptions,
18
- } from 'webdriverio';
19
+ import type {ClickOptions, MockFilterOptions} from 'webdriverio';
19
20
  import type {JsonCompatible} from '@wdio/types';
20
21
  import type {RespondWithOptions} from 'webdriverio/build/utils/interception/types';
21
22
  import webdriver from 'webdriver';
@@ -43,9 +44,10 @@ const DEFAULT_CONFIG: SeleniumPluginConfig = {
43
44
  // for local ChromeDriver
44
45
  args: [] as string[],
45
46
  },
46
- 'wdio:enforceWebDriverClassic': true
47
+ 'wdio:enforceWebDriverClassic': true,
47
48
  },
48
49
  cdpCoverage: false,
50
+ disableClientPing: false,
49
51
  };
50
52
 
51
53
  function delay(timeout) {
@@ -106,7 +108,8 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
106
108
  mergedConfig.hostname = mergedConfig.host;
107
109
  }
108
110
 
109
- const googleChromeOptions = mergedConfig.capabilities?.['goog:chromeOptions'];
111
+ const googleChromeOptions =
112
+ mergedConfig.capabilities?.['goog:chromeOptions'];
110
113
  if (googleChromeOptions?.args?.includes('--headless=new')) {
111
114
  const extensions = googleChromeOptions.extensions;
112
115
  const dowldMonitorCrx = getCrxBase64();
@@ -121,19 +124,21 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
121
124
  }
122
125
 
123
126
  private initIntervals() {
124
- if (this.config.clientCheckInterval > 0) {
125
- this.clientCheckInterval = setInterval(
126
- () => this.checkClientsTimeout(),
127
- this.config.clientCheckInterval,
128
- );
129
- }
127
+ if (this.config.workerLimit !== 'local' && !this.config.disableClientPing) {
128
+ if (this.config.clientCheckInterval > 0) {
129
+ this.clientCheckInterval = setInterval(
130
+ () => this.checkClientsTimeout(),
131
+ this.config.clientCheckInterval,
132
+ );
133
+ }
130
134
 
131
- process.on('exit', () => {
132
- clearInterval(this.clientCheckInterval as NodeJS.Timeout);
133
- this.stopAllSessions().catch((err) => {
134
- this.logger.error('Clean process exit failed', err);
135
+ process.on('exit', () => {
136
+ clearInterval(this.clientCheckInterval as NodeJS.Timeout);
137
+ this.stopAllSessions().catch((err) => {
138
+ this.logger.error('Clean process exit failed', err);
139
+ });
135
140
  });
136
- });
141
+ }
137
142
  }
138
143
 
139
144
  private stopAllSessions() {
@@ -174,7 +179,7 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
174
179
  this.logger.debug('Init local selenium server');
175
180
 
176
181
  try {
177
- this.localSelenium = spawn('java', [
182
+ this.localSelenium = spawnWithPipes('java', [
178
183
  ...this.getChromeDriverArgs(),
179
184
  '-jar',
180
185
  seleniumJarPath,
@@ -421,6 +426,8 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
421
426
 
422
427
  public async kill() {
423
428
  this.logger.debug('Kill command is called');
429
+
430
+ // Close all browser sessions
424
431
  for (const applicant of this.browserClients.keys()) {
425
432
  try {
426
433
  await this.end(applicant);
@@ -429,8 +436,59 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
429
436
  }
430
437
  }
431
438
 
439
+ // If using 'local' mode, stop all active sessions
440
+ if (this.config.workerLimit === 'local') {
441
+ await this.stopAllSessions();
442
+ }
443
+
432
444
  if (this.localSelenium) {
433
- this.localSelenium.kill();
445
+ // remove listener
446
+ if (this.localSelenium.stderr) {
447
+ this.localSelenium.stderr.removeAllListeners('data');
448
+ this.localSelenium.stdout?.removeAllListeners();
449
+ }
450
+
451
+ // Ensure all pipes are closed
452
+ this.localSelenium.stdout?.destroy();
453
+ this.localSelenium.stderr?.destroy();
454
+ this.localSelenium.stdin?.destroy();
455
+
456
+ this.logger.debug(
457
+ `Stopping local Selenium server (PID: ${this.localSelenium.pid})`,
458
+ );
459
+
460
+ // Try SIGTERM first
461
+ this.localSelenium.kill('SIGTERM');
462
+
463
+ // Wait for exit event with a timeout (ensures it does not hang forever)
464
+ const waitForExit = new Promise<void>((resolve) => {
465
+ this.localSelenium.once('exit', () => {
466
+ this.logger.debug('Selenium process exited.');
467
+ resolve();
468
+ });
469
+ });
470
+
471
+ // Force kill if not exiting within 3 seconds
472
+ const forceKill = new Promise<void>((resolve) => {
473
+ setTimeout(() => {
474
+ if (!this.localSelenium.killed) {
475
+ this.logger.warn(
476
+ `Selenium did not exit in time. Sending SIGKILL.`,
477
+ );
478
+ this.localSelenium.kill('SIGKILL');
479
+ }
480
+ resolve();
481
+ }, 3000);
482
+ });
483
+
484
+ // Wait for either normal exit or force kill
485
+ await Promise.race([waitForExit, forceKill]);
486
+
487
+ this.localSelenium.removeAllListeners();
488
+
489
+ this.logger.debug(
490
+ 'Selenium process and all associated pipes closed.',
491
+ );
434
492
  }
435
493
  }
436
494
 
@@ -450,7 +508,9 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
450
508
  const client = this.getBrowserClient(applicant);
451
509
 
452
510
  const element = await client.$(selector);
453
- return options && Object.keys(options).length > 0 ? element.click(options) : element.click();
511
+ return options && Object.keys(options).length > 0
512
+ ? element.click(options)
513
+ : element.click();
454
514
  }
455
515
 
456
516
  public async getSize(applicant: string, selector: string) {
@@ -562,7 +622,7 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
562
622
  return client.getTitle();
563
623
  }
564
624
 
565
- public async clearElement(applicant: string, xpath: string) {
625
+ public async clearValue(applicant: string, xpath: string) {
566
626
  await this.createClient(applicant);
567
627
  const client = this.getBrowserClient(applicant);
568
628
 
@@ -991,55 +1051,36 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
991
1051
  return selector.selectByAttribute(attribute, value);
992
1052
  }
993
1053
 
994
- // @deprecated WAT-1872
995
- public async gridProxyDetails(applicant: string) {
1054
+ public async gridTestSession(applicant: string) {
996
1055
  await this.createClient(applicant);
997
1056
  const client = this.getBrowserClient(applicant);
998
1057
 
999
1058
  if (this.localSelenium) {
1000
1059
  return {
1060
+ sessionId: client.sessionId,
1061
+ host: this.config.host,
1062
+ port: this.config.port,
1001
1063
  localSelenium: true,
1002
1064
  };
1003
1065
  }
1004
1066
 
1005
- return client.gridProxyDetails(client.sessionId);
1067
+ return client.gridTestSession(client.sessionId);
1006
1068
  }
1007
1069
 
1008
- // @deprecated WAT-1872
1009
- public async gridTestSession(applicant: string) {
1070
+ public async getHubConfig(applicant: string) {
1010
1071
  await this.createClient(applicant);
1011
1072
  const client = this.getBrowserClient(applicant);
1012
1073
 
1013
1074
  if (this.localSelenium) {
1014
1075
  return {
1076
+ sessionId: client.sessionId,
1077
+ host: this.config.host,
1078
+ port: this.config.port,
1015
1079
  localSelenium: true,
1016
1080
  };
1017
1081
  }
1018
1082
 
1019
- return client.gridTestSession(client.sessionId);
1020
- }
1021
-
1022
- // @deprecated WAT-1872
1023
- public async getGridNodeDetails(applicant: string) {
1024
- await this.createClient(applicant);
1025
- const client = this.getBrowserClient(applicant);
1026
-
1027
- const testSession = await this.gridTestSession(applicant);
1028
-
1029
- if (testSession && !testSession.localSelenium) {
1030
- const proxyDetails = await client.gridProxyDetails(applicant);
1031
-
1032
- delete testSession.msg;
1033
- delete testSession.success;
1034
-
1035
- delete proxyDetails.msg;
1036
- delete proxyDetails.success;
1037
- delete proxyDetails.id;
1038
-
1039
- return {...testSession, ...proxyDetails};
1040
- }
1041
-
1042
- return testSession;
1083
+ return client.getHubConfig();
1043
1084
  }
1044
1085
 
1045
1086
  /**
@@ -1075,6 +1116,142 @@ export class SeleniumPlugin implements IBrowserProxyPlugin {
1075
1116
  },
1076
1117
  } as any);
1077
1118
  }
1119
+
1120
+ public async status(applicant: string) {
1121
+ await this.createClient(applicant);
1122
+ const client = this.getBrowserClient(applicant);
1123
+
1124
+ return client.status();
1125
+ }
1126
+
1127
+ public async back(applicant: string) {
1128
+ await this.createClient(applicant);
1129
+ const client = this.getBrowserClient(applicant);
1130
+
1131
+ return client.back();
1132
+ }
1133
+
1134
+ public async forward(applicant: string) {
1135
+ await this.createClient(applicant);
1136
+ const client = this.getBrowserClient(applicant);
1137
+
1138
+ return client.forward();
1139
+ }
1140
+
1141
+ public async getActiveElement(applicant: string) {
1142
+ await this.createClient(applicant);
1143
+ const client = this.getBrowserClient(applicant);
1144
+
1145
+ return client.getActiveElement();
1146
+ }
1147
+
1148
+ public async getLocation(applicant: string, xpath: string) {
1149
+ await this.createClient(applicant);
1150
+ const client = this.getBrowserClient(applicant);
1151
+ const element = client.$(xpath);
1152
+ return element.getLocation();
1153
+ }
1154
+
1155
+ public async setTimeZone(applicant: string, timeZone: string) {
1156
+ await this.createClient(applicant);
1157
+ const client = this.getBrowserClient(applicant);
1158
+ return client.setTimeZone(timeZone);
1159
+ }
1160
+
1161
+ public async getWindowSize(applicant: string) {
1162
+ await this.createClient(applicant);
1163
+ const client = this.getBrowserClient(applicant);
1164
+ return client.getWindowSize();
1165
+ }
1166
+
1167
+ public async savePDF(applicant: string, options: SavePdfOptions) {
1168
+ await this.createClient(applicant);
1169
+ const client = this.getBrowserClient(applicant);
1170
+
1171
+ const {filepath, ...restOptions} = options;
1172
+
1173
+ return client.savePDF(filepath, restOptions);
1174
+ }
1175
+
1176
+ public async addValue(
1177
+ applicant: string,
1178
+ xpath: string,
1179
+ value: string | number,
1180
+ ) {
1181
+ await this.createClient(applicant);
1182
+ const client = this.getBrowserClient(applicant);
1183
+
1184
+ const selector = await client.$(xpath);
1185
+ return selector.addValue(value);
1186
+ }
1187
+
1188
+ public async doubleClick(applicant: string, xpath: string) {
1189
+ await this.createClient(applicant);
1190
+ const client = this.getBrowserClient(applicant);
1191
+
1192
+ const selector = await client.$(xpath);
1193
+ return selector.doubleClick();
1194
+ }
1195
+
1196
+ public async isClickable(applicant: string, xpath: string) {
1197
+ await this.createClient(applicant);
1198
+ const client = this.getBrowserClient(applicant);
1199
+
1200
+ const selector = await client.$(xpath);
1201
+ return selector.isClickable();
1202
+ }
1203
+
1204
+ public async waitForClickable(
1205
+ applicant: string,
1206
+ xpath: string,
1207
+ timeout: number,
1208
+ ) {
1209
+ await this.createClient(applicant);
1210
+ const client = this.getBrowserClient(applicant);
1211
+
1212
+ const selector = await client.$(xpath);
1213
+ return selector.waitForClickable({timeout});
1214
+ }
1215
+
1216
+ public async isFocused(applicant: string, xpath: string) {
1217
+ await this.createClient(applicant);
1218
+ const client = this.getBrowserClient(applicant);
1219
+
1220
+ const selector = await client.$(xpath);
1221
+ return selector.isFocused();
1222
+ }
1223
+
1224
+ public async isStable(applicant: string, xpath: string) {
1225
+ await this.createClient(applicant);
1226
+ const client = this.getBrowserClient(applicant);
1227
+
1228
+ const selector = await client.$(xpath);
1229
+ return selector.isStable();
1230
+ }
1231
+
1232
+ public async waitForEnabled(
1233
+ applicant: string,
1234
+ xpath: string,
1235
+ timeout: number,
1236
+ ) {
1237
+ await this.createClient(applicant);
1238
+ const client = this.getBrowserClient(applicant);
1239
+
1240
+ const selector = await client.$(xpath);
1241
+ return selector.waitForEnabled({timeout});
1242
+ }
1243
+
1244
+ public async waitForStable(
1245
+ applicant: string,
1246
+ xpath: string,
1247
+ timeout: number,
1248
+ ) {
1249
+ await this.createClient(applicant);
1250
+ const client = this.getBrowserClient(applicant);
1251
+
1252
+ const selector = await client.$(xpath);
1253
+ return selector.waitForStable({timeout});
1254
+ }
1078
1255
  }
1079
1256
 
1080
1257
  export default function seleniumProxy(config: SeleniumPluginConfig) {
package/src/types.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Capabilities } from '@wdio/types';
1
+ import {Capabilities} from '@wdio/types';
2
2
 
3
3
  export type SeleniumPluginConfig = Capabilities.WebdriverIOConfig & {
4
4
  chromeDriverPath?: string;
@@ -8,4 +8,6 @@ export type SeleniumPluginConfig = Capabilities.WebdriverIOConfig & {
8
8
  host?: string; // fallback for configuration. In WebdriverIO 5 field host renamed to hostname
9
9
  desiredCapabilities?: Capabilities.RequestedStandaloneCapabilities[]; // fallback for configuration. In WebdriverIO 5 field renamed
10
10
  cdpCoverage: boolean;
11
+ workerLimit?: number | 'local';
12
+ disableClientPing?: boolean;
11
13
  };