@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 +1 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin/index.js +200 -37
- package/dist/plugin/index.js.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/package.json +6 -6
- package/src/plugin/index.ts +229 -52
- package/src/types.ts +3 -1
package/dist/index.js
CHANGED
|
@@ -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"}
|
package/dist/plugin/index.js
CHANGED
|
@@ -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.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
this.
|
|
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.
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
882
|
+
return client.gridTestSession(client.sessionId);
|
|
827
883
|
});
|
|
828
884
|
}
|
|
829
|
-
|
|
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.
|
|
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
|
@@ -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.
|
|
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.
|
|
15
|
-
"@testring/dwnld-collector-crx": "0.7.
|
|
16
|
-
"@testring/logger": "0.7.
|
|
17
|
-
"@testring/plugin-api": "0.7.
|
|
18
|
-
"@testring/types": "0.7.
|
|
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",
|
package/src/plugin/index.ts
CHANGED
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import {SeleniumPluginConfig} from '../types';
|
|
2
|
-
import {
|
|
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 {
|
|
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 =
|
|
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.
|
|
125
|
-
this.clientCheckInterval
|
|
126
|
-
|
|
127
|
-
|
|
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
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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.
|
|
1067
|
+
return client.gridTestSession(client.sessionId);
|
|
1006
1068
|
}
|
|
1007
1069
|
|
|
1008
|
-
|
|
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.
|
|
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 {
|
|
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
|
};
|