swipium 1.5.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +171 -0
- package/README.md +173 -280
- package/THREAT_MODEL.md +223 -47
- package/dist/appMap/automationLink.js +30 -27
- package/dist/appMap/automationLink.js.map +1 -1
- package/dist/appMap/build.js +47 -21
- package/dist/appMap/build.js.map +1 -1
- package/dist/appMap/codeIndex.js +2 -2
- package/dist/appMap/codeIndex.js.map +1 -1
- package/dist/appMap/featureIndex.js +3 -3
- package/dist/appMap/featureIndex.js.map +1 -1
- package/dist/appMap/featureModel.js +2 -2
- package/dist/appMap/featureModel.js.map +1 -1
- package/dist/appMap/firstRunApply.js +2 -2
- package/dist/appMap/firstRunApply.js.map +1 -1
- package/dist/appMap/issues.js +10 -10
- package/dist/appMap/issues.js.map +1 -1
- package/dist/appMap/migrations.js +5 -5
- package/dist/appMap/migrations.js.map +1 -1
- package/dist/appMap/prelaunch.js +2 -2
- package/dist/appMap/prelaunch.js.map +1 -1
- package/dist/appMap/projectRegistry.js +77 -11
- package/dist/appMap/projectRegistry.js.map +1 -1
- package/dist/appMap/provenance.js +2 -2
- package/dist/appMap/provenance.js.map +1 -1
- package/dist/appMap/query.js +2 -2
- package/dist/appMap/query.js.map +1 -1
- package/dist/appMap/runtimeMerge.js +3 -3
- package/dist/appMap/runtimeMerge.js.map +1 -1
- package/dist/appMap/schema.js +1 -1
- package/dist/appMap/schema.js.map +1 -1
- package/dist/appMap/screenMatch.js +1 -1
- package/dist/appMap/screenMatch.js.map +1 -1
- package/dist/appMap/staticScan.js +17 -17
- package/dist/appMap/staticScan.js.map +1 -1
- package/dist/appMap/store.js +55 -7
- package/dist/appMap/store.js.map +1 -1
- package/dist/appMap/tsAstScan.js +3 -3
- package/dist/appMap/tsAstScan.js.map +1 -1
- package/dist/artifacts/bundletool.js +5 -5
- package/dist/artifacts/bundletool.js.map +1 -1
- package/dist/artifacts/resolve.js +10 -10
- package/dist/artifacts/resolve.js.map +1 -1
- package/dist/automation/capabilities.js +3 -3
- package/dist/automation/capabilities.js.map +1 -1
- package/dist/automation/gestures.js +1 -1
- package/dist/automation/gestures.js.map +1 -1
- package/dist/automation/plan.js +7 -7
- package/dist/automation/plan.js.map +1 -1
- package/dist/automation/report.js +3 -3
- package/dist/automation/report.js.map +1 -1
- package/dist/automation/selectors.js +14 -25
- package/dist/automation/selectors.js.map +1 -1
- package/dist/automation/types.js +1 -1
- package/dist/automation/types.js.map +1 -1
- package/dist/automation/waits.js +5 -5
- package/dist/automation/waits.js.map +1 -1
- package/dist/automation/webview.js +2 -2
- package/dist/automation/webview.js.map +1 -1
- package/dist/automationGen/appiumModel.js +13 -7
- package/dist/automationGen/appiumModel.js.map +1 -1
- package/dist/automationGen/ciEmitter.js +5 -5
- package/dist/automationGen/ciEmitter.js.map +1 -1
- package/dist/automationGen/identifiers.js +224 -0
- package/dist/automationGen/identifiers.js.map +1 -0
- package/dist/automationGen/jsEmitter.js +265 -106
- package/dist/automationGen/jsEmitter.js.map +1 -1
- package/dist/automationGen/packagePatch.js +2 -2
- package/dist/automationGen/packagePatch.js.map +1 -1
- package/dist/automationGen/platformResolve.js +36 -0
- package/dist/automationGen/platformResolve.js.map +1 -0
- package/dist/automationGen/projectProfile.js +71 -26
- package/dist/automationGen/projectProfile.js.map +1 -1
- package/dist/automationGen/pythonEmitter.js +276 -105
- package/dist/automationGen/pythonEmitter.js.map +1 -1
- package/dist/automationGen/readmeEmitter.js +7 -6
- package/dist/automationGen/readmeEmitter.js.map +1 -1
- package/dist/{tools/automationGenerate.js → automationGen/run.js} +72 -113
- package/dist/automationGen/run.js.map +1 -0
- package/dist/automationGen/suitePlan.js +6 -4
- package/dist/automationGen/suitePlan.js.map +1 -1
- package/dist/automationGen/validation.js +20 -8
- package/dist/automationGen/validation.js.map +1 -1
- package/dist/build/parseBuildLog.js +2 -2
- package/dist/build/parseBuildLog.js.map +1 -1
- package/dist/build/plan.js +7 -7
- package/dist/build/plan.js.map +1 -1
- package/dist/ci/preflight.js +13 -4
- package/dist/ci/preflight.js.map +1 -1
- package/dist/cli/gc.js +74 -0
- package/dist/cli/gc.js.map +1 -0
- package/dist/cli/init.js +217 -26
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/main.js +50 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/report.js +218 -0
- package/dist/cli/report.js.map +1 -0
- package/dist/cli/scan.js +35 -14
- package/dist/cli/scan.js.map +1 -1
- package/dist/cli/suite.js +6 -6
- package/dist/cli/suite.js.map +1 -1
- package/dist/cli/verify.js +7 -7
- package/dist/cli/verify.js.map +1 -1
- package/dist/consent/consent.js +162 -5
- package/dist/consent/consent.js.map +1 -1
- package/dist/context/detect.js +45 -14
- package/dist/context/detect.js.map +1 -1
- package/dist/context/findApps.js +6 -6
- package/dist/context/findApps.js.map +1 -1
- package/dist/context/projectRoot.js +174 -19
- package/dist/context/projectRoot.js.map +1 -1
- package/dist/context/scan.js +1 -1
- package/dist/context/scan.js.map +1 -1
- package/dist/core/capabilityGroups.js +90 -0
- package/dist/core/capabilityGroups.js.map +1 -0
- package/dist/core/target.js +3 -3
- package/dist/core/target.js.map +1 -1
- package/dist/core/targetPlan.js +65 -62
- package/dist/core/targetPlan.js.map +1 -1
- package/dist/drivers/DirectDriver.js +300 -36
- package/dist/drivers/DirectDriver.js.map +1 -1
- package/dist/drivers/SimctlDriver.js +120 -7
- package/dist/drivers/SimctlDriver.js.map +1 -1
- package/dist/drivers/WdaDriver.js +350 -50
- package/dist/drivers/WdaDriver.js.map +1 -1
- package/dist/explore/candidates.js +2 -2
- package/dist/explore/candidates.js.map +1 -1
- package/dist/explore/graph.js +5 -5
- package/dist/explore/graph.js.map +1 -1
- package/dist/explore/policy.js +5 -5
- package/dist/explore/policy.js.map +1 -1
- package/dist/explore/runner.js +301 -284
- package/dist/explore/runner.js.map +1 -1
- package/dist/explore/signatures.js +1 -1
- package/dist/featureTesting/executionBootstrap.js +29 -30
- package/dist/featureTesting/executionBootstrap.js.map +1 -1
- package/dist/featureTesting/featureMap.js +2 -2
- package/dist/featureTesting/featureMap.js.map +1 -1
- package/dist/featureTesting/featureScope.js +12 -12
- package/dist/featureTesting/featureScope.js.map +1 -1
- package/dist/featureTesting/mapFeatureScope.js +7 -7
- package/dist/featureTesting/mapFeatureScope.js.map +1 -1
- package/dist/featureTesting/objectiveModel.js +10 -10
- package/dist/featureTesting/objectiveModel.js.map +1 -1
- package/dist/featureTesting/resultMerge.js +6 -6
- package/dist/featureTesting/resultMerge.js.map +1 -1
- package/dist/featureTesting/sources.js +4 -4
- package/dist/featureTesting/sources.js.map +1 -1
- package/dist/featureTesting/suiteBridge.js +1 -1
- package/dist/featureTesting/suiteBridge.js.map +1 -1
- package/dist/featureTesting/synonyms.js +1 -1
- package/dist/featureTesting/synonyms.js.map +1 -1
- package/dist/featureTesting/testCaseFactory.js +11 -11
- package/dist/featureTesting/testCaseFactory.js.map +1 -1
- package/dist/featureTesting/testPlan.js +3 -3
- package/dist/featureTesting/testPlan.js.map +1 -1
- package/dist/firstRun/authStateMachine.js +1 -1
- package/dist/firstRun/authStateMachine.js.map +1 -1
- package/dist/firstRun/classifyScreen.js +5 -5
- package/dist/firstRun/classifyScreen.js.map +1 -1
- package/dist/firstRun/firstRunPlanner.js +11 -11
- package/dist/firstRun/firstRunPlanner.js.map +1 -1
- package/dist/firstRun/firstRunRunner.js +8 -8
- package/dist/firstRun/firstRunRunner.js.map +1 -1
- package/dist/firstRun/generatedDataPolicy.js +9 -9
- package/dist/firstRun/generatedDataPolicy.js.map +1 -1
- package/dist/firstRun/inputPlanner.js +5 -5
- package/dist/firstRun/inputPlanner.js.map +1 -1
- package/dist/firstRun/onboardingStateMachine.js +1 -1
- package/dist/firstRun/onboardingStateMachine.js.map +1 -1
- package/dist/firstRun/paywallPolicy.js +3 -3
- package/dist/firstRun/paywallPolicy.js.map +1 -1
- package/dist/firstRun/types.js +1 -1
- package/dist/firstRun/types.js.map +1 -1
- package/dist/fixtures/catalog.js +33 -3
- package/dist/fixtures/catalog.js.map +1 -1
- package/dist/fixtures/load.js +50 -0
- package/dist/fixtures/load.js.map +1 -0
- package/dist/flows/discover.js +2 -2
- package/dist/flows/discover.js.map +1 -1
- package/dist/flows/generate.js +20 -10
- package/dist/flows/generate.js.map +1 -1
- package/dist/flows/pack.js +3 -3
- package/dist/flows/pack.js.map +1 -1
- package/dist/flows/paths.js +57 -0
- package/dist/flows/paths.js.map +1 -0
- package/dist/flows/repair.js +111 -23
- package/dist/flows/repair.js.map +1 -1
- package/dist/flows/run.js +153 -57
- package/dist/flows/run.js.map +1 -1
- package/dist/flows/schema.js +50 -5
- package/dist/flows/schema.js.map +1 -1
- package/dist/flows/seedExec.js +4 -4
- package/dist/flows/seedExec.js.map +1 -1
- package/dist/flows/templates.js +5 -5
- package/dist/index.js +50 -8
- package/dist/index.js.map +1 -1
- package/dist/issues/classify.js +16 -16
- package/dist/issues/classify.js.map +1 -1
- package/dist/issues/fingerprint.js +24 -4
- package/dist/issues/fingerprint.js.map +1 -1
- package/dist/issues/index.js +94 -31
- package/dist/issues/index.js.map +1 -1
- package/dist/issues/metrics.js +4 -4
- package/dist/issues/metrics.js.map +1 -1
- package/dist/issues/recurrence.js +35 -8
- package/dist/issues/recurrence.js.map +1 -1
- package/dist/issues/report.js +4 -4
- package/dist/issues/report.js.map +1 -1
- package/dist/issues/reportBridge.js +4 -4
- package/dist/issues/reportBridge.js.map +1 -1
- package/dist/issues/schema.js +2 -2
- package/dist/issues/schema.js.map +1 -1
- package/dist/issues/sourceRevision.js +2 -2
- package/dist/issues/sourceRevision.js.map +1 -1
- package/dist/issues/store.js +110 -32
- package/dist/issues/store.js.map +1 -1
- package/dist/lib/abortScope.js +48 -0
- package/dist/lib/abortScope.js.map +1 -0
- package/dist/lib/android.js +75 -7
- package/dist/lib/android.js.map +1 -1
- package/dist/lib/coordSpace.js +1 -1
- package/dist/lib/coordSpace.js.map +1 -1
- package/dist/lib/device.js +32 -7
- package/dist/lib/device.js.map +1 -1
- package/dist/lib/gestures.js +141 -0
- package/dist/lib/gestures.js.map +1 -0
- package/dist/lib/gitignore.js +4 -3
- package/dist/lib/gitignore.js.map +1 -1
- package/dist/lib/image.js +1 -1
- package/dist/lib/image.js.map +1 -1
- package/dist/lib/lockfile.js +370 -31
- package/dist/lib/lockfile.js.map +1 -1
- package/dist/lib/needsInput.js +3 -3
- package/dist/lib/needsInput.js.map +1 -1
- package/dist/lib/png.js +2 -2
- package/dist/lib/png.js.map +1 -1
- package/dist/lib/redact.js +170 -9
- package/dist/lib/redact.js.map +1 -1
- package/dist/lib/result.js +79 -10
- package/dist/lib/result.js.map +1 -1
- package/dist/lib/schemaHash.js +3 -3
- package/dist/lib/schemaHash.js.map +1 -1
- package/dist/lib/sensitive.js +3 -2
- package/dist/lib/sensitive.js.map +1 -1
- package/dist/lib/simctl.js +3 -3
- package/dist/lib/simctl.js.map +1 -1
- package/dist/lib/spawn.js +52 -10
- package/dist/lib/spawn.js.map +1 -1
- package/dist/lib/toolAnnotations.js +114 -0
- package/dist/lib/toolAnnotations.js.map +1 -0
- package/dist/lib/wda.js +294 -15
- package/dist/lib/wda.js.map +1 -1
- package/dist/mobileAudit/checks.js +12 -12
- package/dist/mobileAudit/checks.js.map +1 -1
- package/dist/mobileAudit/evidence.js +4 -4
- package/dist/mobileAudit/evidence.js.map +1 -1
- package/dist/mobileAudit/profiles.js +1 -1
- package/dist/mobileAudit/profiles.js.map +1 -1
- package/dist/mobileAudit/results.js +3 -3
- package/dist/mobileAudit/results.js.map +1 -1
- package/dist/mobileAudit/runner.js +72 -18
- package/dist/mobileAudit/runner.js.map +1 -1
- package/dist/oracle/auth.js +1 -1
- package/dist/oracle/auth.js.map +1 -1
- package/dist/oracle/failures.js +219 -36
- package/dist/oracle/failures.js.map +1 -1
- package/dist/oracle/health.js +63 -17
- package/dist/oracle/health.js.map +1 -1
- package/dist/oracle/locator.js +13 -13
- package/dist/oracle/locator.js.map +1 -1
- package/dist/oracle/record.js +3 -3
- package/dist/oracle/record.js.map +1 -1
- package/dist/orchestration/envelope.js +2 -2
- package/dist/orchestration/envelope.js.map +1 -1
- package/dist/orchestration/goal.js +4 -4
- package/dist/orchestration/goal.js.map +1 -1
- package/dist/orchestration/testThis/execute.js +62 -21
- package/dist/orchestration/testThis/execute.js.map +1 -1
- package/dist/orchestration/testThis/pipeline.js +119 -30
- package/dist/orchestration/testThis/pipeline.js.map +1 -1
- package/dist/orchestration/testThis/plan.js +162 -73
- package/dist/orchestration/testThis/plan.js.map +1 -1
- package/dist/orchestration/testThis/sessionIntent.js +72 -0
- package/dist/orchestration/testThis/sessionIntent.js.map +1 -0
- package/dist/orchestration/testThis/terminal.js +34 -16
- package/dist/orchestration/testThis/terminal.js.map +1 -1
- package/dist/orchestration/testThis/types.js +1 -1
- package/dist/orchestration/testThis/types.js.map +1 -1
- package/dist/plan/plan.js +9 -9
- package/dist/plan/plan.js.map +1 -1
- package/dist/prompts/index.js +22 -22
- package/dist/prompts/index.js.map +1 -1
- package/dist/report/export.js +392 -37
- package/dist/report/export.js.map +1 -1
- package/dist/report/findingsDedupe.js +41 -0
- package/dist/report/findingsDedupe.js.map +1 -0
- package/dist/report/policy.js +7 -4
- package/dist/report/policy.js.map +1 -1
- package/dist/report/qaLevel.js +8 -8
- package/dist/report/qaLevel.js.map +1 -1
- package/dist/report/sarifSources.js +160 -0
- package/dist/report/sarifSources.js.map +1 -0
- package/dist/report/summary.js +2 -2
- package/dist/report/summary.js.map +1 -1
- package/dist/report/testCatalog.js +4 -4
- package/dist/report/testCatalog.js.map +1 -1
- package/dist/report/toolHealth.js +124 -0
- package/dist/report/toolHealth.js.map +1 -0
- package/dist/server.js +472 -45
- package/dist/server.js.map +1 -1
- package/dist/services/automationGenerate.js +8 -2
- package/dist/services/automationGenerate.js.map +1 -1
- package/dist/services/build.js +2 -2
- package/dist/services/build.js.map +1 -1
- package/dist/{tools → services}/flowGenerate.js +29 -13
- package/dist/services/flowGenerate.js.map +1 -0
- package/dist/services/preflight.js +4 -4
- package/dist/services/preflight.js.map +1 -1
- package/dist/services/prepareAndroid.js +46 -8
- package/dist/services/prepareAndroid.js.map +1 -1
- package/dist/services/prepareIos.js +24 -9
- package/dist/services/prepareIos.js.map +1 -1
- package/dist/services/report.js +100 -45
- package/dist/services/report.js.map +1 -1
- package/dist/services/smoke.js +32 -16
- package/dist/services/smoke.js.map +1 -1
- package/dist/services/suiteGenerate.js +28 -3
- package/dist/services/suiteGenerate.js.map +1 -1
- package/dist/services/testSuiteKnowledge.js +40 -27
- package/dist/services/testSuiteKnowledge.js.map +1 -1
- package/dist/session/attach.js +270 -6
- package/dist/session/attach.js.map +1 -1
- package/dist/session/processRegistry.js +317 -48
- package/dist/session/processRegistry.js.map +1 -1
- package/dist/session/progress.js +1 -1
- package/dist/session/retention.js +201 -0
- package/dist/session/retention.js.map +1 -0
- package/dist/session/store.js +275 -48
- package/dist/session/store.js.map +1 -1
- package/dist/snapshot/overlays.js +53 -8
- package/dist/snapshot/overlays.js.map +1 -1
- package/dist/snapshot/parse.js +28 -4
- package/dist/snapshot/parse.js.map +1 -1
- package/dist/snapshot/present.js +11 -5
- package/dist/snapshot/present.js.map +1 -1
- package/dist/snapshot/settle.js +39 -9
- package/dist/snapshot/settle.js.map +1 -1
- package/dist/state/consent.js +99 -0
- package/dist/state/consent.js.map +1 -0
- package/dist/state/profile.js +46 -2
- package/dist/state/profile.js.map +1 -1
- package/dist/suite/compile.js +9 -5
- package/dist/suite/compile.js.map +1 -1
- package/dist/suite/lint.js +4 -4
- package/dist/suite/lint.js.map +1 -1
- package/dist/suite/pom.js +50 -41
- package/dist/suite/pom.js.map +1 -1
- package/dist/suite/secretGuard.js +266 -0
- package/dist/suite/secretGuard.js.map +1 -0
- package/dist/suite/testcase.js +9 -7
- package/dist/suite/testcase.js.map +1 -1
- package/dist/testSuite/exporter.js +4 -4
- package/dist/testSuite/exporter.js.map +1 -1
- package/dist/testSuite/generator.js +13 -9
- package/dist/testSuite/generator.js.map +1 -1
- package/dist/testSuite/history.js +1 -1
- package/dist/testSuite/history.js.map +1 -1
- package/dist/testSuite/issueLinks.js +3 -3
- package/dist/testSuite/issueLinks.js.map +1 -1
- package/dist/testSuite/lint.js +4 -4
- package/dist/testSuite/lint.js.map +1 -1
- package/dist/testSuite/merge.js +5 -5
- package/dist/testSuite/merge.js.map +1 -1
- package/dist/testSuite/schema.js +5 -5
- package/dist/testSuite/schema.js.map +1 -1
- package/dist/testSuite/store.js +3 -3
- package/dist/testSuite/store.js.map +1 -1
- package/dist/testSuite/traceability.js +2 -2
- package/dist/testSuite/traceability.js.map +1 -1
- package/dist/tools/act.js +794 -164
- package/dist/tools/act.js.map +1 -1
- package/dist/tools/agent.js +451 -128
- package/dist/tools/agent.js.map +1 -1
- package/dist/tools/appControl.js +69 -19
- package/dist/tools/appControl.js.map +1 -1
- package/dist/tools/appMap.js +188 -130
- package/dist/tools/appMap.js.map +1 -1
- package/dist/tools/build.js +32 -42
- package/dist/tools/build.js.map +1 -1
- package/dist/tools/bundletool.js +21 -31
- package/dist/tools/bundletool.js.map +1 -1
- package/dist/tools/clearOverlay.js +55 -12
- package/dist/tools/clearOverlay.js.map +1 -1
- package/dist/tools/device.js +76 -24
- package/dist/tools/device.js.map +1 -1
- package/dist/tools/doctor.js +68 -28
- package/dist/tools/doctor.js.map +1 -1
- package/dist/tools/explore.js +41 -47
- package/dist/tools/explore.js.map +1 -1
- package/dist/tools/featureTesting.js +31 -48
- package/dist/tools/featureTesting.js.map +1 -1
- package/dist/tools/firstRun.js +34 -41
- package/dist/tools/firstRun.js.map +1 -1
- package/dist/tools/flow.js +183 -103
- package/dist/tools/flow.js.map +1 -1
- package/dist/tools/flowRepair.js +25 -13
- package/dist/tools/flowRepair.js.map +1 -1
- package/dist/tools/generate.js +52 -89
- package/dist/tools/generate.js.map +1 -1
- package/dist/tools/getArtifact.js +16 -5
- package/dist/tools/getArtifact.js.map +1 -1
- package/dist/tools/health.js +15 -12
- package/dist/tools/health.js.map +1 -1
- package/dist/tools/ios.js +45 -223
- package/dist/tools/ios.js.map +1 -1
- package/dist/tools/issues.js +251 -35
- package/dist/tools/issues.js.map +1 -1
- package/dist/tools/jobs.js +41 -16
- package/dist/tools/jobs.js.map +1 -1
- package/dist/tools/metro.js +36 -35
- package/dist/tools/metro.js.map +1 -1
- package/dist/tools/mobileAudit.js +50 -45
- package/dist/tools/mobileAudit.js.map +1 -1
- package/dist/tools/network.js +31 -14
- package/dist/tools/network.js.map +1 -1
- package/dist/tools/note.js +26 -26
- package/dist/tools/note.js.map +1 -1
- package/dist/tools/prepareIosTarget.js +10 -16
- package/dist/tools/prepareIosTarget.js.map +1 -1
- package/dist/tools/prepareTarget.js +117 -50
- package/dist/tools/prepareTarget.js.map +1 -1
- package/dist/tools/report.js +11 -22
- package/dist/tools/report.js.map +1 -1
- package/dist/tools/resolveArtifact.js +11 -15
- package/dist/tools/resolveArtifact.js.map +1 -1
- package/dist/tools/resolveTarget.js +78 -24
- package/dist/tools/resolveTarget.js.map +1 -1
- package/dist/tools/screenRecord.js +23 -21
- package/dist/tools/screenRecord.js.map +1 -1
- package/dist/tools/screenshot.js +23 -16
- package/dist/tools/screenshot.js.map +1 -1
- package/dist/tools/smoke.js +20 -16
- package/dist/tools/smoke.js.map +1 -1
- package/dist/tools/snapshot.js +155 -118
- package/dist/tools/snapshot.js.map +1 -1
- package/dist/tools/startSession.js +104 -116
- package/dist/tools/startSession.js.map +1 -1
- package/dist/tools/suite.js +72 -43
- package/dist/tools/suite.js.map +1 -1
- package/dist/tools/testSuite.js +30 -20
- package/dist/tools/testSuite.js.map +1 -1
- package/dist/tools/testThis.js +24 -28
- package/dist/tools/testThis.js.map +1 -1
- package/dist/tools/visual.js +686 -210
- package/dist/tools/visual.js.map +1 -1
- package/dist/tools/wait.js +9 -38
- package/dist/tools/wait.js.map +1 -1
- package/dist/tools/wda.js +187 -57
- package/dist/tools/wda.js.map +1 -1
- package/dist/version.js +31 -22
- package/dist/version.js.map +1 -1
- package/dist/visual/ocr.js +53 -6
- package/dist/visual/ocr.js.map +1 -1
- package/dist/visual/provider.js +80 -12
- package/dist/visual/provider.js.map +1 -1
- package/docs/README.md +24 -10
- package/docs/ci-reports.md +328 -0
- package/docs/concepts.md +227 -0
- package/docs/flows.md +153 -0
- package/docs/mcp-server.md +194 -128
- package/docs/physical-devices.md +84 -0
- package/docs/tools.md +812 -152
- package/package.json +3 -2
- package/dist/tools/assertVisual.js +0 -84
- package/dist/tools/assertVisual.js.map +0 -1
- package/dist/tools/automationGenerate.js.map +0 -1
- package/dist/tools/capabilities.js +0 -179
- package/dist/tools/capabilities.js.map +0 -1
- package/dist/tools/detectContext.js +0 -41
- package/dist/tools/detectContext.js.map +0 -1
- package/dist/tools/flowGenerate.js.map +0 -1
- package/dist/tools/history.js +0 -86
- package/dist/tools/history.js.map +0 -1
- package/dist/tools/locator.js +0 -85
- package/dist/tools/locator.js.map +0 -1
- package/dist/tools/permissions.js +0 -174
- package/dist/tools/permissions.js.map +0 -1
- package/dist/tools/plan.js +0 -52
- package/dist/tools/plan.js.map +0 -1
- package/dist/tools/screenInfo.js +0 -76
- package/dist/tools/screenInfo.js.map +0 -1
- package/dist/tools/seed.js +0 -133
- package/dist/tools/seed.js.map +0 -1
- package/dist/tools/state.js +0 -217
- package/dist/tools/state.js.map +0 -1
- package/dist/tools/visualText.js +0 -106
- package/dist/tools/visualText.js.map +0 -1
package/dist/tools/visual.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visual.js","sourceRoot":"","sources":["../../src/tools/visual.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,yEAAyE;AACzE,6FAA6F;AAC7F,2FAA2F;AAC3F,uFAAuF;AACvF,8FAA8F;AAC9F,4FAA4F;AAE5F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,MAAM,UAAU,cAAc,CAAC,MAAiB,EAAE,QAAsB;IACtE,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,uGAAuG;YACvG,gJAAgJ;YAChJ,mLAAmL;YACnL,iGAAiG;QACnG,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YACzD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAC1E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qFAAqF,CAAC;YAC/H,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;YACrG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;YACjG,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;YAClH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAChC;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QAC9F,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC9E,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,oCAAoC;gBAC1C,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,CAAC,+BAA+B,CAAC;aAC7C,CAAC,CAAC;QACL,CAAC;QACD,IAAI,OAAO,CAAC,SAAS;YAAE,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAEjE,6FAA6F;QAC7F,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3H,IAAI,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,uDAAuD;gBAC7D,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,CAAC,wFAAwF,CAAC;aACtG,CAAC,CAAC;QACL,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAEjE,2EAA2E;QAC3E,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,OAAO,CAAC;oBACb,IAAI,EAAE,uBAAuB;oBAC7B,YAAY,EAAE,KAAK;oBACnB,SAAS,EAAE,KAAK;oBAChB,WAAW,EAAE,oBAAoB;oBACjC,SAAS,EAAE;wBACT,8JAA8J;qBAC/J;iBACF,CAAC,CAAC;YACL,CAAC;YACD,IAAI,OAAO,CAAC;YACZ,IAAI,WAAW,CAAC;YAChB,IAAI,CAAC;gBACH,OAAO,GAAG,qBAAqB,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC9E,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,OAAO,CAAC;oBACb,IAAI,EAAE,CAAC,YAAY,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iCAAiC,MAAM,CAAC,CAAC,CAAC,EAAE;oBACpG,YAAY,EAAE,KAAK;oBACnB,SAAS,EAAE,CAAC,CAAC,CAAC,YAAY,sBAAsB,CAAC;oBACjD,WAAW,EAAE,CAAC,YAAY,sBAAsB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,cAAc;oBACzF,SAAS,EACP,CAAC,YAAY,sBAAsB;wBACjC,CAAC,CAAC,CAAC,qFAAqF,CAAC;wBACzF,CAAC,CAAC,CAAC,8EAA8E,CAAC;iBACvF,CAAC,CAAC;YACL,CAAC;YACD,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC;YACrC,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE;gBAC9C,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,cAAc,EAAE;aAChE,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO,cAAc,CAAC;oBACpB,MAAM,EAAE,SAAS;oBACjB,IAAI,EAAE,QAAQ;oBACd,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;oBACvC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,cAAc,EAAE;oBAC/D,OAAO,EACL,yPAAyP;iBAC5P,CAAC,CAAC;YACL,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC3D,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;gBAClF,OAAO,IAAI,CACT;oBACE,MAAM;oBACN,MAAM,EAAE,KAAK;oBACb,YAAY,EAAE,UAAU;oBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,eAAe,EAAE,GAAG,CAAC,eAAe;oBACpC,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB,EACD,aAAa,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CACpH,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,OAAO,CAAC;oBACb,IAAI,EAAE,uBAAuB,MAAM,CAAC,CAAC,CAAC,EAAE;oBACxC,YAAY,EAAE,KAAK;oBACnB,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,CAAC,4DAA4D,CAAC;iBAC1E,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,sBAAsB,MAAM,CAAC,CAAC,CAAC,EAAE;gBACvC,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,CAAC,+BAA+B,CAAC;aAC7C,CAAC,CAAC;QACL,CAAC;QACD,MAAM,eAAe,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAElE,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI;gBACP,OAAO,OAAO,CAAC;oBACb,IAAI,EAAE,0BAA0B;oBAChC,YAAY,EAAE,KAAK;oBACnB,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,CAAC,0BAA0B,CAAC;iBACxC,CAAC,CAAC;YACL,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;YACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;YACpH,OAAO,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,mBAAmB,IAAI,MAAM,GAAG,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC,CAAC;QACjH,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI;gBACP,OAAO,OAAO,CAAC;oBACb,IAAI,EAAE,+BAA+B;oBACrC,YAAY,EAAE,KAAK;oBACnB,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,CAAC,4CAA4C,CAAC;iBAC1D,CAAC,CAAC;YACL,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;YACnD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,OAAO,OAAO,CAAC;oBACb,IAAI,EAAE,gBAAgB,IAAI,uBAAuB;oBACjD,YAAY,EAAE,KAAK;oBACnB,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,CAAC,+CAA+C,IAAI,8BAA8B,CAAC;iBAC/F,CAAC,CAAC;YACL,CAAC;YACD,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC;YACtD,MAAM,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC;YAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;YACtD,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CACtC,OAAO,EACP,YAAY,EACZ,QAAQ,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,EAChC,GAAG,EACH,WAAW,EACX,oBAAoB,IAAI,EAAE,CAC3B,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG;gBAC1B,CAAC,CAAC;oBACE,CAAC,EAAE,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/D,CAAC,EAAE,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/D,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;oBAClE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;iBACrE;gBACH,CAAC,CAAC,IAAI,CAAC;YACT,OAAO,IAAI,CACT;gBACE,MAAM;gBACN,IAAI;gBACJ,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK;gBACtD,SAAS,EAAE,GAAG;gBACd,IAAI;gBACJ,UAAU,EAAE,MAAM,CAAC,GAAG;gBACtB,gBAAgB,EAAE,SAAS;gBAC3B,UAAU;gBACV,eAAe;aAChB,EACD,YAAY,IAAI,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,mBAAmB,MAAM,CAAC,MAAM,EAAE,eAAe,UAAU,EAAE,CAC/N,CAAC;QACJ,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC,QAAQ;YACX,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,qCAAqC;gBAC3C,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,CAAC,yDAAyD,CAAC;aACvE,CAAC,CAAC;QACL,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/E,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACtB,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,uBAAuB,OAAO,EAAE;gBACtC,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,CAAC,+BAA+B,CAAC;aAC7C,CAAC,CAAC;QACL,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACH,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,uBAAuB,MAAM,CAAC,CAAC,CAAC,EAAE;gBACxC,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,CAAC,8DAA8D,CAAC;aAC5E,CAAC,CAAC;QACL,CAAC;QACD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1F,OAAO,IAAI,CACT;YACE,MAAM;YACN,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;YAChE,WAAW;YACX,eAAe;SAChB,EACD,KAAK,CAAC,KAAK;YACT,CAAC,CAAC,gBAAgB,KAAK,CAAC,KAAK,oBAAoB,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,mBAAmB,WAAY,CAAC,CAAC,IAAI,WAAY,CAAC,CAAC,2CAA2C,WAAY,CAAC,CAAC,OAAO,WAAY,CAAC,CAAC,MAAM;YAC1M,CAAC,CAAC,yBAAyB,KAAK,CAAC,KAAK,MAAM,QAAQ,IAAI,IAAI,GAAG,CAClE,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"visual.js","sourceRoot":"","sources":["../../src/tools/visual.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,yFAAyF;AACzF,wFAAwF;AACxF,0EAA0E;AAC1E,oGAAoG;AACpG,2FAA2F;AAC3F,8FAA8F;AAC9F,qFAAqF;AACrF,oFAAoF;AACpF,uFAAuF;AACvF,6EAA6E;AAC7E,4FAA4F;AAC5F,uEAAuE;AACvE,kFAAkF;AAClF,wEAAwE;AACxE,EAAE;AACF,6FAA6F;AAC7F,4BAA4B;AAE5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtG,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAG3D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAiB,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAwB,MAAM,sBAAsB,CAAC;AACnG,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,MAAM,EACN,qBAAqB,EACrB,qBAAqB,GAGtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIrD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,CAAU,CAAC;AAG/F,gGAAgG;AAChG,oDAAoD;AAEpD,8FAA8F;AAC9F,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAElD,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,QAAgB;IACjD,OAAO,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC7H,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,IAAY;IAC5D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,KAAK,EAAE,yBAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qDAAqD,EAAE,CAAC;IACvH,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,sCAAsC,EAAE,CAAC;IAC/H,yFAAyF;IACzF,IAAI,CAAC;QACH,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE;YAAE,OAAO,EAAE,KAAK,EAAE,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,sCAAsC,EAAE,CAAC;IACjI,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,cAAc,CAAC,CAAS;IAC/B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED;sFACsF;AACtF,MAAM,UAAU,mBAAmB,CACjC,QAAsB,EACtB,OAAgB,EAChB,QAAgB;IAEhB,IAAI,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;YAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,QAAQ,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACpI,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IACD,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7F,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,uBAAuB,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAChG,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO;YACL,KAAK,EAAE,YAAY,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,sFAAsF;SAClI,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,gGAAgG;AAChG,+BAA+B;AAE/B,8FAA8F;AAC9F,MAAM,cAAc,GAAG,IAAI,OAAO,EAAgB,CAAC;AAInD;mDACmD;AACnD,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAClC,IAAI,CAAC,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACxD,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AACxF,CAAC;AAED;;;;iDAIiD;AACjD,KAAK,UAAU,kBAAkB,CAAC,OAAgB,EAAE,MAAc;IAChE,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,MAAM,CAAC;IACvE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACnD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;4FAC4F;AAC5F,SAAS,gBAAgB,CAAC,OAAgB;IACxC,OAAO,CACL,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;QACxB,CAAC,CAAC,OAAO,CAAC,iBAAiB;QAC3B,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5C,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAC/B,CAAC;AACJ,CAAC;AAED,8DAA8D;AAC9D,MAAM,cAAc,GAAG,6GAA6G,CAAC;AAErI,SAAS,YAAY,CAAC,CAAY,EAAE,MAAgB;IAClD,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;AAC9C,CAAC;AAED,gGAAgG;AAChG,2CAA2C;AAE3C;;;qFAGqF;AACrF,KAAK,UAAU,aAAa,CAC1B,MAAc,EACd,KAA+B,EAC/B,YAAqC;IAErC,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACrC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO;gBACL,KAAK,EAAE,OAAO,CACZ;oBACE,IAAI,EAAE,wCAAwC,MAAM,CAAC,CAAC,CAAC,EAAE;oBACzD,YAAY,EAAE,KAAK;oBACnB,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,CAAC,6EAA6E,CAAC;iBAC3F,EACD,YAAY,CACb;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;IACpC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9H,IAAI,EAAE,CAAC,CAAC;YACR,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YACjB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACxC,OAAO;YACL,KAAK,EAAE,OAAO,CACZ;gBACE,IAAI,EAAE,+CAA+C,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC1F,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,qBAAqB;gBAClC,SAAS,EAAE,CAAC,oHAAoH,CAAC;aAClI,EACD,YAAY,CACb;SACF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK,EAAE,OAAO,CACZ;YACE,IAAI,EAAE,uGAAuG;YAC7G,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,qBAAqB;YAClC,SAAS,EAAE;gBACT,oHAAoH;gBACpH,qIAAqI;aACtI;SACF,EACD,YAAY,CACb;KACF,CAAC;AACJ,CAAC;AA+BD;;oCAEoC;AACpC,KAAK,UAAU,YAAY,CACzB,GAAkB,EAClB,WAAqC,EACrC,OAAgC,EAChC,MAKC,EACD,KAAa;IAEb,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACjE,IAAI,OAAO,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IAC3C,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAClC,IAAI,OAAO,CAAC,YAAY;QAAE,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;IACpE,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAClF,QAAQ,CAAC,iBAAiB,CAAC,OAAO,EAAE;QAClC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;QACd,MAAM,EAAE,KAAK;QACb,GAAG,GAAG;QACN,OAAO,EAAE,qBAAqB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,gBAAgB,yFAAyF;QACpL,UAAU,EAAE;YACV,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;YACzB,YAAY,EAAE,QAAQ;YACtB,MAAM,EAAE;gBACN,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,OAAO,EAAE,MAAM,CAAC,eAAe,CAAC,OAAO;gBACvC,WAAW,EAAE,MAAM,CAAC,eAAe,CAAC,WAAW;aAChD;SACF;KACF,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO,IAAI,CACT,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAC7G,GAAG,KAAK,qBAAqB,WAAW,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE;QAC/E,CAAC,aAAa,CAAC,CAAC,CAAC,uBAAuB,aAAa,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CACjF,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,KAAK,UAAU,OAAO,CAAC,GAAkB;IACvC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACtC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,KAAK,EAAE,OAAO,CAAC;gBACb,IAAI,EAAE,sBAAsB,MAAM,CAAC,CAAC,CAAC,EAAE;gBACvC,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,CAAC,+BAA+B,CAAC;aAC7C,CAAC;SACH,CAAC;IACJ,CAAC;IACD,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC9C,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;AACjF,CAAC;AAED;;yEAEyE;AACzE,SAAS,cAAc,CAAC,GAAkB,EAAE,OAAiC,EAAE;IAC7E,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK;QACjD,OAAO,EAAE,gBAAgB,EAAE,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IAC1F,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,OAAO,IAAI,CAAC,UAAU;QACpB,CAAC,CAAC;YACE,gBAAgB,EAAE,KAAK;YACvB,OAAO,EAAE,6FAA6F;YACtG,GAAG,QAAQ;SACZ;QACH,CAAC,CAAC;YACE,gBAAgB,EAAE,YAAY;YAC9B,OAAO,EAAE,6EAA6E;YACtF,GAAG,QAAQ;SACZ,CAAC;AACR,CAAC;AAED;mFACmF;AACnF,SAAS,WAAW,CAAC,GAAkB,EAAE,IAAY,EAAE,GAAW,EAAE,KAAa;IAC/E,IAAI,GAAG,CAAC,eAAe;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,iBAAiB,GACrB,iJAAiJ,CAAC;AAEpJ,gGAAgG;AAChG,iBAAiB;AAEjB,KAAK,UAAU,QAAQ,CAAC,GAAkB;IACxC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAC9C,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACtE,IAAI,CAAC,KAAK;QACR,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,4BAA4B;YAClC,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,kBAAkB;YAC/B,SAAS,EAAE,CAAC,sBAAsB,CAAC;SACpC,CAAC,CAAC;IACL,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,OAAO,CACZ;YACE,IAAI,EAAE,+EAA+E;YACrF,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,oBAAoB;YACjC,SAAS,EAAE;gBACT,yBAAyB,qBAAqB,EAAE;gBAChD,wOAAwO;gBACxO,2EAA2E;aAC5E;SACF,EACD;YACE,eAAe,EAAE;gBACf,IAAI,EAAE,2BAA2B;gBACjC,UAAU,EAAE,CAAC,SAAS,EAAE,2BAA2B,EAAE,SAAS,CAAC;gBAC/D,MAAM,EAAE,qBAAqB;aAC9B;SACF,CACF,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC;IACZ,IAAI,WAAW,CAAC;IAChB,IAAI,CAAC;QACH,OAAO,GAAG,qBAAqB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,KAAK,CAAC,CAAC;QAC3E,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,CAAC,YAAY,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iCAAiC,MAAM,CAAC,CAAC,CAAC,EAAE;YACpG,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,CAAC,CAAC,CAAC,YAAY,sBAAsB,CAAC;YACjD,WAAW,EAAE,CAAC,YAAY,sBAAsB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,cAAc;YACzF,SAAS,EACP,CAAC,YAAY,sBAAsB;gBACjC,CAAC,CAAC,CAAC,qFAAqF,CAAC;gBACzF,CAAC,CAAC,CAAC,8EAA8E,CAAC;SACvF,CAAC,CAAC;IACL,CAAC;IACD,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC;IACrC,+FAA+F;IAC/F,8FAA8F;IAC9F,MAAM,SAAS,GAAG,mBAAmB,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,aAAa,EAAE,iBAAiB,CAAC,CAAC;IAC1G,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,aAAa,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzI,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,gBAAgB,EAAE,SAAS;QAC3B,KAAK;QACL,cAAc;QACd,QAAQ,EAAE,WAAW,EAAE,IAAI,IAAI,IAAI;QACnC,MAAM,EAAE,WAAW,EAAE,EAAE,IAAI,IAAI;QAC/B,iBAAiB,EAAE,UAAU;KAC9B,CAAC;IACF,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAChF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,YAAY,GAAG,WAAW;YAC9B,CAAC,CAAC,YAAY,UAAU,MAAM,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,SAAS,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAClH,CAAC,CAAC,QAAQ,SAAS,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,OAAO,cAAc,CAAC;YACpB,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,QAAQ;YACd,YAAY;YACZ,OAAO;YACP,OAAO,EAAE,WAAW;gBAClB,CAAC,CAAC,6DAA6D,KAAK,mCAAmC,UAAU,4BAA4B,SAAS,6DAA6D;gBACnN,CAAC,CAAC,wBAAwB,SAAS,wCAAwC,KAAK,sDAAsD;SACzI,CAAC,CAAC;IACL,CAAC;IACD,IAAI,GAAc,CAAC;IACnB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,yBAAyB,EAAE,CAAC;YAC3C,uFAAuF;YACvF,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACnD,OAAO,OAAO,CACZ;gBACE,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,qBAAqB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC3L,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,KAAK;gBAChB,WAAW,EAAE,qBAAqB;gBAClC,SAAS,EAAE;oBACT,sDAAsD,OAAO,CAAC,IAAI,yCAAyC;oBAC3G,sHAAsH;iBACvH;aACF,EACD,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,CAC7H,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,uBAAuB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE;YACtD,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,qBAAqB;YAClC,SAAS,EAAE,CAAC,4DAA4D,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;IACD,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,6BAA6B;IACxE,4FAA4F;IAC5F,4DAA4D;IAC5D,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACvI,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,4GAA4G;YAClH,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,yBAAyB;YACtC,SAAS,EAAE;gBACT,sIAAsI;aACvI;SACF,CAAC,CAAC;IACL,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,IAAI,GAAG,CAAC,CAAC;IAC5D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACpD,OAAO,IAAI,CACT;YACE,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,KAAK;YACZ,KAAK;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO;YACP,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,MAAM,EAAE,KAAK;YACb,YAAY,EAAE,UAAU;YACxB,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;SAC7C,EACD,qBAAqB,KAAK,sBAAsB,aAAa,IAAI,GAAG,GAAG,CACxE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,OAAO,GAA4B;QACvC,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,IAAI;QACX,KAAK;QACL,MAAM;QACN,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,eAAe,EAAE,GAAG,CAAC,eAAe;QACpC,MAAM,EAAE,KAAK;QACb,eAAe,EAAE,UAAU;QAC3B,YAAY,EAAE,UAAU;QACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;KAC7C,CAAC;IACF,MAAM,KAAK,GAAG,UAAU,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,UAAU,GAAG,CAAC;IAC9D,IAAI,GAAG;QACL,OAAO,YAAY,CACjB,GAAG,EACH,GAAG,CAAC,WAAW,EACf,OAAO,EACP,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE,EAC9H,KAAK,CACN,CAAC;IACJ,OAAO,IAAI,CACT,OAAO,EACP,GAAG,KAAK,kBAAkB,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC,2CAA2C,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAC5J,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,GAAkB;IACxC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,IAAI;QACP,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,0BAA0B;YAChC,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,kBAAkB;YAC/B,SAAS,EAAE,CAAC,0BAA0B,CAAC;SACxC,CAAC,CAAC;IACL,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvD,IAAI,OAAO,IAAI,MAAM;QAAE,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;IACxH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IACvC,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IACtC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;IACpH,OAAO,IAAI,CACT,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,EAAE,EAC3F,mBAAmB,IAAI,MAAM,GAAG,CAAC,MAAM,gCAAgC,IAAI,UAAU,GAAG,EAAE,CAC3F,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,GAAkB;IACpC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,IAAI,CAAC,IAAI;QACP,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,+BAA+B;YACrC,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,kBAAkB;YAC/B,SAAS,EAAE,CAAC,0CAA0C,CAAC;SACxD,CAAC,CAAC;IACL,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvD,IAAI,OAAO,IAAI,MAAM;QAAE,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,mDAAmD,CAAC,CAAC;IAC7G,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,gBAAgB,IAAI,sBAAsB;YAChD,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,CAAC,6CAA6C,IAAI,8BAA8B,CAAC;SAC7F,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IACvC,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IACtC,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;IACtD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,QAAQ,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;IACvG,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG;QAC1B,CAAC,CAAC;YACE,CAAC,EAAE,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC,EAAE,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YAClE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;SACrE;QACH,CAAC,CAAC,IAAI,CAAC;IACT,OAAO,IAAI,CACT;QACE,IAAI,EAAE,MAAM;QACZ,IAAI;QACJ,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK;QACtD,SAAS,EAAE,GAAG;QACd,IAAI;QACJ,UAAU,EAAE,MAAM,CAAC,GAAG;QACtB,gBAAgB,EAAE,SAAS;QAC3B,UAAU,EAAE,UAAU,IAAI,IAAI;QAC9B,eAAe;QACf,GAAG,cAAc,CAAC,GAAG,CAAC;KACvB,EACD,YAAY,IAAI,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,mBAAmB,MAAM,CAAC,MAAM,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,aAAa,UAAU,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CACrQ,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,GAAkB;IACzC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IACxC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACzC,IAAI,CAAC,QAAQ;QACX,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,qCAAqC;YAC3C,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,kBAAkB;YAC/B,SAAS,EAAE,CAAC,8FAA8F,CAAC;SAC5G,CAAC,CAAC;IACL,MAAM,GAAG,GAAG,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7D,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;QACnB,IAAI,GAAG,CAAC,OAAO;YACb,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,GAAG,CAAC,KAAK;gBACf,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,CAAC,kGAAkG,CAAC;aAChH,CAAC,CAAC;QACL,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,wGAAwG,CAAC,CAAC;IAC1I,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IACvC,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IACtC,IAAI,KAAK,CAAC;IACV,IAAI,CAAC;QACH,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,uBAAuB,MAAM,CAAC,CAAC,CAAC,EAAE;YACxC,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,CAAC,8DAA8D,CAAC;SAC5E,CAAC,CAAC;IACL,CAAC;IACD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1F,MAAM,OAAO,GAA4B;QACvC,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;QAChE,WAAW;QACX,eAAe;QACf,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,cAAc;QAC5B,GAAG,cAAc,CAAC,GAAG,CAAC;KACvB,CAAC;IACF,IAAI,KAAK,CAAC,KAAK,IAAI,GAAG;QACpB,OAAO,YAAY,CAAC,GAAG,EAAE,WAAY,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,gBAAgB,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;IAChI,OAAO,IAAI,CACT,OAAO,EACP,KAAK,CAAC,KAAK;QACT,CAAC,CAAC,gBAAgB,KAAK,CAAC,KAAK,oBAAoB,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,mBAAmB,WAAY,CAAC,CAAC,IAAI,WAAY,CAAC,CAAC,2CAA2C,WAAY,CAAC,CAAC,OAAO,WAAY,CAAC,CAAC,MAAM;QAC1M,CAAC,CAAC,yBAAyB,KAAK,CAAC,KAAK,MAAM,QAAQ,IAAI,IAAI,GAAG,CAClE,CAAC;AACJ,CAAC;AAED;;;uCAGuC;AACvC,KAAK,UAAU,YAAY,CAAC,GAAkB;IAC5C,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;IACzC,IAAI,CAAC,SAAS;QACZ,OAAO,OAAO,CAAC;YACb,IAAI,EAAE,8BAA8B;YACpC,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,kBAAkB;YAC/B,SAAS,EAAE,CAAC,mGAAmG,CAAC;SACjH,CAAC,CAAC;IACL,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;IAC/B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IACvC,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IACtC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,SAAS,EAAE,CAAC,CAAC;IAChG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;QACxB,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;QACd,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,cAAc;QAC5B,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QAC9B,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IACH,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,cAAc,GAAG,eAAe,CAAC,UAAU;YAC/C,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE;YACpG,CAAC,CAAC,SAAS,CAAC;QACd,QAAQ,CAAC,iBAAiB,CAAC,OAAO,EAAE;YAClC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;YACd,MAAM,EAAE,eAAe;YACvB,SAAS;YACT,aAAa,EAAE,UAAU;YACzB,UAAU,EAAE;gBACV,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtC,YAAY,EAAE,eAAe;gBAC7B,aAAa,EAAE,SAAS;gBACxB,MAAM,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,IAAI,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,WAAW,EAAE;aAC9H;SACF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CACT;QACE,IAAI,EAAE,QAAQ;QACd,SAAS;QACT,IAAI;QACJ,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,cAAc;QAC5B,aAAa,EAAE,GAAG,IAAI,IAAI;QAC1B,eAAe;QACf,GAAG,cAAc,CAAC,GAAG,CAAC;KACvB,EACD,oBAAoB,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,MAAM,SAAS,MAAM,GAAG,CAAC,CAAC,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAClH,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAAwE;IACzF,MAAM,EAAE,YAAY;IACpB,QAAQ;IACR,IAAI;IACJ,SAAS,EAAE,QAAQ;IACnB,UAAU,EAAE,SAAS;CACtB,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,MAAiB,EAAE,QAAsB;IACtE,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,0DAA0D;QACjE,WAAW,EACT,uHAAuH;YACvH,wHAAwH;YACxH,uHAAuH;YACvH,uHAAuH;YACvH,wHAAwH;YACxH,0GAA0G;QAC5G,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;YACrB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;YAC1B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;YAClH,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;YAC3G,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;YAC9F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;YAC3F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YACjE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;YAClH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;YAC/F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;YAC5F,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YAClG,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YAClF,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YACxF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAChC;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,OAAO,CACL,mBAAmB,CAAC,OAAO,CAAC;gBAC5B,OAAO,CAAC;oBACN,IAAI,EAAE,oCAAoC;oBAC1C,YAAY,EAAE,KAAK;oBACnB,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,CAAC,wEAAwE,CAAC;iBACtF,CAAC,CACH,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,SAAS;YAAE,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAEjE,2FAA2F;QAC3F,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,UAAU;YAAE,OAAO,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9F,oFAAoF;QACpF,0FAA0F;QAC1F,oFAAoF;QACpF,wFAAwF;QACxF,oFAAoF;QACpF,4EAA4E;QAC5E,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,sDAAsD;gBAC5D,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,yBAAyB;gBACtC,SAAS,EAAE,CAAC,wFAAwF,CAAC;aACtG,CAAC,CAAC;QACL,CAAC;QACD,MAAM,0BAA0B,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,WAAW,KAAK,SAAS,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACzG,IAAI,0BAA0B,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC3D,OAAO,OAAO,CAAC;gBACb,IAAI,EAAE,8JAA8J;gBACpK,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,yBAAyB;gBACtC,SAAS,EAAE;oBACT,4IAA4I;iBAC7I;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,GAAG,GAAkB;YACzB,QAAQ;YACR,OAAO;YACP,MAAM;YACN,IAAI;YACJ,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;YACrC,WAAW;YACX,eAAe,EAAE,0BAA0B;SAC5C,CAAC;QACF,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/tools/wait.js
CHANGED
|
@@ -1,56 +1,27 @@
|
|
|
1
|
-
// qa_wait
|
|
2
|
-
//
|
|
3
|
-
//
|
|
1
|
+
// qa_wait: non-shell synchronization for setup conditions, so agents don't shell out to
|
|
2
|
+
// `sleep`/poll. Waits for: device_online or metro_ready (serving). Jobs are waited on with
|
|
3
|
+
// qa_job_status waitMs. Returns timeout + current state + next steps.
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
-
import { qaOk,
|
|
5
|
+
import { qaOk, unknownSessionError } from '../lib/result.js';
|
|
6
6
|
import { resolveDevice } from '../session/attach.js';
|
|
7
7
|
import { metroReadiness } from '../lib/metroState.js';
|
|
8
8
|
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
9
9
|
export function registerWait(server, sessions) {
|
|
10
10
|
server.registerTool('qa_wait', {
|
|
11
11
|
title: 'Wait for a setup condition',
|
|
12
|
-
description: 'Block (bounded) until a
|
|
12
|
+
description: 'Block (bounded) until a setup condition holds instead of shelling out to sleep: for="device_online" (a device appears) or ' +
|
|
13
|
+
'"metro_ready" (Metro serving the bundle). Returns satisfied/timedOut + current state. To wait for a job, use qa_job_status waitMs.',
|
|
13
14
|
inputSchema: {
|
|
14
15
|
sessionId: z.string(),
|
|
15
|
-
for: z.enum(['device_online', 'metro_ready'
|
|
16
|
-
jobId: z.string().optional().describe('Required for for="job_done".'),
|
|
16
|
+
for: z.enum(['device_online', 'metro_ready']),
|
|
17
17
|
timeoutMs: z.number().optional().describe('default 60000 (180000 for device_online).'),
|
|
18
18
|
},
|
|
19
|
-
}, async ({ sessionId, for: cond,
|
|
19
|
+
}, async ({ sessionId, for: cond, timeoutMs }) => {
|
|
20
20
|
const session = sessions.get(sessionId);
|
|
21
21
|
if (!session)
|
|
22
|
-
return
|
|
23
|
-
what: `Unknown sessionId ${sessionId}`,
|
|
24
|
-
changedState: false,
|
|
25
|
-
retrySafe: true,
|
|
26
|
-
nextSteps: ['Call qa_start_session first.'],
|
|
27
|
-
});
|
|
22
|
+
return unknownSessionError(sessionId);
|
|
28
23
|
const deadline = Date.now() + (timeoutMs ?? (cond === 'device_online' ? 180000 : 60000));
|
|
29
24
|
const intervalMs = 1500;
|
|
30
|
-
if (cond === 'job_done') {
|
|
31
|
-
if (!jobId)
|
|
32
|
-
return qaError({
|
|
33
|
-
what: 'for="job_done" needs jobId',
|
|
34
|
-
changedState: false,
|
|
35
|
-
retrySafe: true,
|
|
36
|
-
nextSteps: ['Pass the jobId from qa_prepare_target.'],
|
|
37
|
-
});
|
|
38
|
-
while (Date.now() < deadline) {
|
|
39
|
-
const job = session.jobs.get(jobId);
|
|
40
|
-
if (!job)
|
|
41
|
-
return qaError({ what: `Unknown job ${jobId}`, changedState: false, retrySafe: true, nextSteps: ['Check the jobId.'] });
|
|
42
|
-
if (job.status !== 'running') {
|
|
43
|
-
return qaOk({ satisfied: true, condition: cond, jobStatus: job.status, result: job.result, error: job.error }, `job ${jobId} = ${job.status}${job.error ? `: ${job.error}` : ''}`);
|
|
44
|
-
}
|
|
45
|
-
await sleep(intervalMs);
|
|
46
|
-
}
|
|
47
|
-
return qaError({
|
|
48
|
-
what: `Timed out waiting for job ${jobId}`,
|
|
49
|
-
changedState: false,
|
|
50
|
-
retrySafe: true,
|
|
51
|
-
nextSteps: ['Poll qa_job_status, or qa_job_cancel.'],
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
25
|
while (Date.now() < deadline) {
|
|
55
26
|
if (cond === 'device_online') {
|
|
56
27
|
const dev = await resolveDevice(session);
|
package/dist/tools/wait.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/tools/wait.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/tools/wait.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/wda.js
CHANGED
|
@@ -1,27 +1,70 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { spawn } from 'node:child_process';
|
|
3
|
-
import { existsSync, openSync, readFileSync, readdirSync, statSync } from 'node:fs';
|
|
3
|
+
import { closeSync, existsSync, openSync, readFileSync, readdirSync, statSync } from 'node:fs';
|
|
4
4
|
import { isAbsolute, join } from 'node:path';
|
|
5
|
-
import { qaError, qaOk } from '../lib/result.js';
|
|
5
|
+
import { qaError, qaOk, unknownSessionError } from '../lib/result.js';
|
|
6
6
|
import { consumeConsent, requireConsent } from '../consent/consent.js';
|
|
7
7
|
import { sensitiveRefusal } from '../lib/sensitive.js';
|
|
8
8
|
import { run } from '../lib/spawn.js';
|
|
9
|
-
import { checkWda, classifyWdaBuildFailure, classifyWdaConnectionFailure, createWdaSession, discoverWdaProjects, managedWdaBuildArgs, managedWdaStartArgs, waitForWdaReady, wdaSessionUdidMismatch, xcodeAvailable, } from '../lib/wda.js';
|
|
9
|
+
import { checkWda, classifyWdaBuildFailure, classifyWdaConnectionFailure, createWdaSession, discoverAppiumWdaProjects, discoverWdaProjects, managedWdaBuildArgs, managedWdaStartArgs, waitForWdaReady, wdaSessionUdidMismatch, xcodeAvailable, isLoopbackWdaUrl, remoteWdaAllowedByUser, REMOTE_WDA_ENV, } from '../lib/wda.js';
|
|
10
10
|
import { loadWdaConfig, wdaSigningStatus, wdaUrlAllowedByConfig } from '../lib/wdaConfig.js';
|
|
11
11
|
import { recordWdaTiming, wdaRecommendations, wdaTimingSummary } from '../lib/wdaTune.js';
|
|
12
12
|
import { WdaDriver } from '../drivers/WdaDriver.js';
|
|
13
13
|
import * as sim from '../lib/simctl.js';
|
|
14
|
-
import { registerManagedProcess, unregisterManagedProcess } from '../session/processRegistry.js';
|
|
14
|
+
import { findManagedWdaProcesses, killManagedWda, reclaimPid, registerManagedProcess, registeredWdaForSession, unregisterManagedProcess, } from '../session/processRegistry.js';
|
|
15
15
|
const managedProcesses = new Map();
|
|
16
|
-
function
|
|
16
|
+
function pidIsAlive(pid) {
|
|
17
|
+
if (!(pid > 0))
|
|
18
|
+
return false;
|
|
17
19
|
try {
|
|
18
|
-
|
|
19
|
-
return
|
|
20
|
+
process.kill(pid, 0);
|
|
21
|
+
return true;
|
|
20
22
|
}
|
|
21
23
|
catch {
|
|
22
24
|
return false;
|
|
23
25
|
}
|
|
24
26
|
}
|
|
27
|
+
/** A managed WDA this server still runs for the session (started here, or adopted at startup).
|
|
28
|
+
* A dead in-memory entry is dropped. */
|
|
29
|
+
function liveManagedWda(sessionId) {
|
|
30
|
+
const own = managedProcesses.get(sessionId);
|
|
31
|
+
if (own) {
|
|
32
|
+
if (pidIsAlive(own.pid))
|
|
33
|
+
return { pid: own.pid, adopted: false };
|
|
34
|
+
managedProcesses.delete(sessionId);
|
|
35
|
+
unregisterManagedProcess(own.pid);
|
|
36
|
+
}
|
|
37
|
+
const adopted = registeredWdaForSession(sessionId);
|
|
38
|
+
return adopted && pidIsAlive(adopted.pid) ? { pid: adopted.pid, adopted: true } : undefined;
|
|
39
|
+
}
|
|
40
|
+
/** The managed-WDA signature of this session's latest successful `qa_wda start` (from the
|
|
41
|
+
* mutation ledger, which survives a server restart). Lets `qa_wda stop` find the xcodebuild
|
|
42
|
+
* even when its process-registry entry was lost. Exported for tests. */
|
|
43
|
+
export function lastManagedWdaStart(session) {
|
|
44
|
+
const m = [...(session.mutations ?? [])]
|
|
45
|
+
.reverse()
|
|
46
|
+
.find((r) => r.tool === 'qa_wda' && r.action === 'wda_start' && r.status === 'executed' && typeof r.target?.projectPath === 'string');
|
|
47
|
+
if (!m)
|
|
48
|
+
return undefined;
|
|
49
|
+
const t = m.target;
|
|
50
|
+
if (typeof t.udid !== 'string' || !t.udid)
|
|
51
|
+
return undefined;
|
|
52
|
+
let port;
|
|
53
|
+
try {
|
|
54
|
+
const u = new URL(String(t.webDriverAgentUrl ?? ''));
|
|
55
|
+
port = Number(u.port) || undefined;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
port = undefined;
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
projectPath: t.projectPath,
|
|
62
|
+
udid: t.udid,
|
|
63
|
+
...(typeof t.derivedDataPath === 'string' && t.derivedDataPath ? { derivedDataPath: t.derivedDataPath } : {}),
|
|
64
|
+
...(port ? { port } : {}),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
const isLoopback = isLoopbackWdaUrl;
|
|
25
68
|
function latestWdaArtifacts(session) {
|
|
26
69
|
const logs = [...session.artifacts].reverse().filter((a) => a.kind === 'wda');
|
|
27
70
|
const latestBuildLog = logs.find((a) => /build/i.test(a.label ?? a.path)) ?? null;
|
|
@@ -77,57 +120,58 @@ function managedWdaBuildProductStatus(derivedDataPath) {
|
|
|
77
120
|
export function registerWda(server, sessions) {
|
|
78
121
|
server.registerTool('qa_wda', {
|
|
79
122
|
title: 'WebDriverAgent diagnostics and attach',
|
|
80
|
-
description: 'Diagnose, attach, or manage an iOS WebDriverAgent backend
|
|
123
|
+
description: 'Diagnose, attach, or manage an iOS WebDriverAgent backend for structured iOS tap/type/snapshot. External WDA: ' +
|
|
124
|
+
'action:"attach" with webDriverAgentUrl (default http://127.0.0.1:8100). Managed WDA: build/start (consent-gated) from ' +
|
|
125
|
+
'wdaProjectPath or an installed Appium WDA; stop ends it. status/doctor/diagnose/logs/tune inspect a setup.',
|
|
81
126
|
inputSchema: {
|
|
82
127
|
sessionId: z.string(),
|
|
83
128
|
action: z.enum(['status', 'doctor', 'build', 'start', 'stop', 'attach', 'diagnose', 'logs', 'tune']),
|
|
84
|
-
webDriverAgentUrl: z
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
.optional()
|
|
91
|
-
.describe('iOS simulator UDID expected behind this WDA endpoint (this tool is iOS-only; other tools use `device`).'),
|
|
92
|
-
bundleId: z.string().optional().describe('App bundle id for session creation. Defaults to the session appId.'),
|
|
93
|
-
wdaProjectPath: z
|
|
94
|
-
.string()
|
|
95
|
-
.optional()
|
|
96
|
-
.describe('Path to WebDriverAgent.xcodeproj for managed build/start. Relative paths resolve from project root.'),
|
|
97
|
-
derivedDataPath: z
|
|
98
|
-
.string()
|
|
99
|
-
.optional()
|
|
100
|
-
.describe('Optional xcodebuild -derivedDataPath for WDA caching/reuse. Relative paths resolve from project root.'),
|
|
129
|
+
webDriverAgentUrl: z.string().optional().describe('Default http://127.0.0.1:8100; non-loopback needs allowNonLoopback + consent.'),
|
|
130
|
+
device: z.string().optional().describe('Simulator UDID behind this WDA (default: the session device).'),
|
|
131
|
+
udid: z.string().optional().describe('Deprecated alias of device.'),
|
|
132
|
+
bundleId: z.string().optional().describe('Default: the session appId.'),
|
|
133
|
+
wdaProjectPath: z.string().optional().describe('WebDriverAgent.xcodeproj (default: Appium WDA if found).'),
|
|
134
|
+
derivedDataPath: z.string().optional().describe('xcodebuild -derivedDataPath for reuse.'),
|
|
101
135
|
scheme: z.string().optional().describe('WDA xcodebuild scheme. Defaults to WebDriverAgentRunner.'),
|
|
102
136
|
allowNonLoopback: z.boolean().optional().describe('Required to use a non-loopback external WDA URL.'),
|
|
103
137
|
consentId: z.string().optional(),
|
|
104
138
|
approve: z.boolean().optional(),
|
|
105
139
|
},
|
|
106
|
-
}, async ({ sessionId, action, webDriverAgentUrl, udid, bundleId, wdaProjectPath, derivedDataPath, scheme, allowNonLoopback, consentId, approve, }) => {
|
|
140
|
+
}, async ({ sessionId, action, webDriverAgentUrl, device, udid: udidAlias, bundleId, wdaProjectPath, derivedDataPath, scheme, allowNonLoopback, consentId, approve, }) => {
|
|
107
141
|
const session = sessions.get(sessionId);
|
|
108
142
|
if (!session)
|
|
143
|
+
return unknownSessionError(sessionId);
|
|
144
|
+
// `device` is canonical (as on every other tool); `udid` is the deprecated alias.
|
|
145
|
+
if (device && udidAlias && device !== udidAlias)
|
|
109
146
|
return qaError({
|
|
110
|
-
what: `
|
|
147
|
+
what: `Conflicting device "${device}" and udid "${udidAlias}"; udid is a deprecated alias of device`,
|
|
111
148
|
changedState: false,
|
|
112
149
|
retrySafe: true,
|
|
113
|
-
|
|
150
|
+
failureCode: 'INVALID_ARGUMENT',
|
|
151
|
+
nextSteps: ['Pass only device.'],
|
|
114
152
|
});
|
|
153
|
+
const udid = device ?? udidAlias;
|
|
115
154
|
const configured = loadWdaConfig(session.root);
|
|
116
155
|
const url = webDriverAgentUrl ?? configured.url;
|
|
117
156
|
const loopback = isLoopback(url);
|
|
118
|
-
|
|
119
|
-
|
|
157
|
+
// Only the USER can pre-approve a remote WDA (env var in the MCP client config). The repo's
|
|
158
|
+
// .swipium/config.json (ios.wda.url / allowNonLoopbackUrls) arrives with the checkout, so it
|
|
159
|
+
// can never skip the per-call consent.
|
|
160
|
+
const userAllowed = !loopback && remoteWdaAllowedByUser(url);
|
|
161
|
+
const repoListed = !loopback && wdaUrlAllowedByConfig(configured, url);
|
|
162
|
+
if (!loopback && !allowNonLoopback && !userAllowed) {
|
|
120
163
|
return qaError({
|
|
121
|
-
what:
|
|
164
|
+
what: `Refused non-loopback WDA URL ${url}${webDriverAgentUrl ? '' : ' (from the repository config .swipium/config.json)'}`,
|
|
122
165
|
changedState: false,
|
|
123
166
|
retrySafe: false,
|
|
124
167
|
failureCode: 'DESTRUCTIVE_REFUSED',
|
|
125
168
|
nextSteps: [
|
|
126
|
-
|
|
169
|
+
`Use a localhost WDA URL, pass allowNonLoopback:true and approve the consent prompt, or (user-level, trusted isolated network only) set ${REMOTE_WDA_ENV}=<exact url> in the MCP server environment.`,
|
|
170
|
+
...(repoListed ? ['ios.wda.allowNonLoopbackUrls in the repository config no longer pre-approves a remote WDA.'] : []),
|
|
127
171
|
],
|
|
128
172
|
});
|
|
129
173
|
}
|
|
130
|
-
if (!loopback && !
|
|
174
|
+
if (!loopback && !userAllowed) {
|
|
131
175
|
const gate = consumeConsent(consentId, approve, { action: 'wda_non_loopback', affects: { url } });
|
|
132
176
|
if (!gate.approved) {
|
|
133
177
|
return requireConsent({
|
|
@@ -135,13 +179,21 @@ export function registerWda(server, sessions) {
|
|
|
135
179
|
risk: 'medium',
|
|
136
180
|
exactCommand: `connect to WebDriverAgent at ${url}`,
|
|
137
181
|
affects: { url },
|
|
138
|
-
explain: `Use non-loopback WebDriverAgent URL ${url}? WDA is an automation server; only approve this on a trusted, isolated network.`,
|
|
182
|
+
explain: `Use non-loopback WebDriverAgent URL ${url}${webDriverAgentUrl ? '' : ' (configured by the repository (.swipium/config.json), unreviewed)'}? WDA is an automation server that receives app screens and typed text; only approve this on a trusted, isolated network.`,
|
|
139
183
|
});
|
|
140
184
|
}
|
|
141
185
|
}
|
|
142
186
|
const resolvePath = (p) => (p ? (isAbsolute(p) ? p : join(session.root, p)) : undefined);
|
|
143
|
-
const
|
|
187
|
+
const explicitProjectPath = resolvePath(wdaProjectPath);
|
|
188
|
+
// Managed build/start without wdaProjectPath: use a user-installed Appium WebDriverAgent
|
|
189
|
+
// (~/.appium/…/appium-webdriveragent, global npm), reported as wdaProjectSource.
|
|
190
|
+
const discoveredAppiumProject = !explicitProjectPath && (action === 'build' || action === 'start') ? discoverAppiumWdaProjects()[0] : undefined;
|
|
191
|
+
const projectPath = explicitProjectPath ?? discoveredAppiumProject;
|
|
192
|
+
const wdaProjectSource = explicitProjectPath ? 'argument' : discoveredAppiumProject ? 'appium-discovered' : null;
|
|
144
193
|
const ddPath = resolvePath(derivedDataPath) ?? configured.derivedDataPath;
|
|
194
|
+
// What this call actually uses (args over config), echoed as `wdaConfig` so a passed
|
|
195
|
+
// derivedDataPath / webDriverAgentUrl is not misreported as the configured default.
|
|
196
|
+
const effectiveConfig = { ...configured, url, derivedDataPath: ddPath };
|
|
145
197
|
const targetUdid = udid ?? session.device;
|
|
146
198
|
if (udid && session.device && udid !== session.device) {
|
|
147
199
|
return qaError({
|
|
@@ -168,14 +220,53 @@ export function registerWda(server, sessions) {
|
|
|
168
220
|
if (action === 'tune') {
|
|
169
221
|
const recommendations = wdaRecommendations(configured, session);
|
|
170
222
|
const timings = wdaTimingSummary(session);
|
|
171
|
-
return qaOk({ webDriverAgentUrl: url, wdaConfig:
|
|
223
|
+
return qaOk({ webDriverAgentUrl: url, wdaConfig: effectiveConfig, timings, recommendations }, recommendations.length
|
|
172
224
|
? `WDA tuning recommendations:\n${recommendations.map((r) => ` - ${r.setting}=${JSON.stringify(r.value)}: ${r.reason}`).join('\n')}`
|
|
173
225
|
: 'WDA tuning: no recommendations from current session evidence.');
|
|
174
226
|
}
|
|
175
227
|
if (action === 'stop') {
|
|
176
228
|
const proc = managedProcesses.get(session.id);
|
|
177
|
-
if (!proc)
|
|
178
|
-
|
|
229
|
+
if (!proc) {
|
|
230
|
+
// A WDA started by a previous server run and adopted at startup (processRegistry).
|
|
231
|
+
const adopted = registeredWdaForSession(session.id);
|
|
232
|
+
const outcome = adopted ? reclaimPid(adopted.pid, 'wda', undefined, adopted) : undefined; // fingerprint-checked
|
|
233
|
+
if (adopted)
|
|
234
|
+
unregisterManagedProcess(adopted.pid);
|
|
235
|
+
if (adopted && outcome === 'killed') {
|
|
236
|
+
sessions.addEnvChange(session, `wda stop pid ${adopted.pid} (adopted)`);
|
|
237
|
+
sessions.recordMutation(session, {
|
|
238
|
+
tool: 'qa_wda',
|
|
239
|
+
action: 'wda_stop',
|
|
240
|
+
risk: 'low',
|
|
241
|
+
target: { pid: adopted.pid, adopted: true, webDriverAgentUrl: adopted.endpoint ?? null },
|
|
242
|
+
consent: { required: false, approved: true },
|
|
243
|
+
status: 'restored',
|
|
244
|
+
detail: `adopted WDA ${outcome}`,
|
|
245
|
+
});
|
|
246
|
+
return qaOk({ stopped: true, pid: adopted.pid, adopted: true, outcome }, `stopped adopted managed WDA pid ${adopted.pid}`);
|
|
247
|
+
}
|
|
248
|
+
// Registry entry lost (or unverifiable): find the managed xcodebuild this session started
|
|
249
|
+
// by its exact signature (project + destination + derived data), never by pid alone.
|
|
250
|
+
const sig = lastManagedWdaStart(session);
|
|
251
|
+
const pids = sig ? findManagedWdaProcesses(sig) : [];
|
|
252
|
+
const killed = pids.filter((pid) => killManagedWda(pid));
|
|
253
|
+
if (!killed.length) {
|
|
254
|
+
if (adopted)
|
|
255
|
+
return qaOk({ stopped: false, pid: adopted.pid, adopted: true, outcome }, `adopted WDA pid ${adopted.pid} was already ${outcome}`);
|
|
256
|
+
return qaOk({ stopped: false }, 'no managed WDA process recorded for this session');
|
|
257
|
+
}
|
|
258
|
+
sessions.addEnvChange(session, `wda stop pid ${killed.join(',')} (recovered by signature)`);
|
|
259
|
+
sessions.recordMutation(session, {
|
|
260
|
+
tool: 'qa_wda',
|
|
261
|
+
action: 'wda_stop',
|
|
262
|
+
risk: 'low',
|
|
263
|
+
target: { pids: killed, recovered: true, projectPath: sig.projectPath, udid: sig.udid },
|
|
264
|
+
consent: { required: false, approved: true },
|
|
265
|
+
status: 'restored',
|
|
266
|
+
detail: 'managed WDA located by command signature (registry entry missing)',
|
|
267
|
+
});
|
|
268
|
+
return qaOk({ stopped: true, pid: killed[0], pids: killed, recovered: true }, `stopped managed WDA pid ${killed.join(', ')} (located by its xcodebuild signature; registry entry was missing)`);
|
|
269
|
+
}
|
|
179
270
|
try {
|
|
180
271
|
process.kill(proc.pid, 'SIGTERM');
|
|
181
272
|
}
|
|
@@ -202,7 +293,7 @@ export function registerWda(server, sessions) {
|
|
|
202
293
|
changedState: false,
|
|
203
294
|
retrySafe: true,
|
|
204
295
|
failureCode: 'NO_DEVICE',
|
|
205
|
-
nextSteps: ['Boot/select a simulator with qa_ios boot, or pass
|
|
296
|
+
nextSteps: ['Boot/select a simulator with qa_ios boot, or pass device explicitly.'],
|
|
206
297
|
});
|
|
207
298
|
}
|
|
208
299
|
if (action === 'start' && configured.reuse) {
|
|
@@ -218,11 +309,23 @@ export function registerWda(server, sessions) {
|
|
|
218
309
|
webDriverAgentUrl: url,
|
|
219
310
|
udid: targetUdid,
|
|
220
311
|
wda: existing,
|
|
221
|
-
wdaConfig:
|
|
312
|
+
wdaConfig: effectiveConfig,
|
|
222
313
|
reuseCheckMs,
|
|
223
314
|
}, `reused existing WDA at ${url}; /status is ready\nNext: qa_wda attach.`);
|
|
224
315
|
}
|
|
225
316
|
}
|
|
317
|
+
// Never start a second managed xcodebuild over a live one: the new runner would fight it
|
|
318
|
+
// for the port and the old one would be orphaned (managedProcesses would be overwritten).
|
|
319
|
+
const running = action === 'start' ? liveManagedWda(session.id) : undefined;
|
|
320
|
+
if (running) {
|
|
321
|
+
return qaError({
|
|
322
|
+
what: `A managed WDA (pid ${running.pid}${running.adopted ? ', adopted from a previous server run' : ''}) is already running for this session`,
|
|
323
|
+
changedState: false,
|
|
324
|
+
retrySafe: true,
|
|
325
|
+
failureCode: 'WDA_START_FAILED',
|
|
326
|
+
nextSteps: ['Use it (qa_wda attach), or stop it first with qa_wda { action:"stop" } and retry start.'],
|
|
327
|
+
}, { managedPid: running.pid, adopted: running.adopted, webDriverAgentUrl: url });
|
|
328
|
+
}
|
|
226
329
|
const xcode = await xcodeAvailable();
|
|
227
330
|
if (!xcode.available) {
|
|
228
331
|
return qaError({
|
|
@@ -239,8 +342,10 @@ export function registerWda(server, sessions) {
|
|
|
239
342
|
changedState: false,
|
|
240
343
|
retrySafe: true,
|
|
241
344
|
failureCode: 'NO_ARTIFACT',
|
|
242
|
-
nextSteps: [
|
|
243
|
-
|
|
345
|
+
nextSteps: [
|
|
346
|
+
"Pass wdaProjectPath, for example path/to/WebDriverAgent.xcodeproj, or install Appium's WebDriverAgent (appium driver install xcuitest) so it is auto-discovered under ~/.appium.",
|
|
347
|
+
],
|
|
348
|
+
}, { xcode, wdaProjectPath: projectPath ?? null, wdaProjectSource });
|
|
244
349
|
}
|
|
245
350
|
const args = action === 'build'
|
|
246
351
|
? managedWdaBuildArgs({
|
|
@@ -326,17 +431,36 @@ export function registerWda(server, sessions) {
|
|
|
326
431
|
status: 'executed',
|
|
327
432
|
ledgerUri: logUri,
|
|
328
433
|
});
|
|
329
|
-
|
|
434
|
+
const wdaBuildProduct = managedWdaBuildProductStatus(ddPath);
|
|
435
|
+
return qaOk({
|
|
436
|
+
built: true,
|
|
437
|
+
logUri,
|
|
438
|
+
xcode,
|
|
439
|
+
command: ['xcodebuild', ...args],
|
|
440
|
+
wdaConfig: effectiveConfig,
|
|
441
|
+
wdaProjectPath: projectPath,
|
|
442
|
+
wdaProjectSource,
|
|
443
|
+
derivedDataPath: ddPath,
|
|
444
|
+
wdaBuildProduct,
|
|
445
|
+
}, `WDA build completed (${wdaProjectSource === 'appium-discovered' ? 'auto-discovered Appium WDA ' : ''}${projectPath}) > ${logUri}`);
|
|
330
446
|
}
|
|
331
447
|
const logUri = sessions.saveArtifact(session, 'wda', `wda-start-${Date.now()}.log`, '', 'text/plain', 'WDA start log');
|
|
332
448
|
const rec = sessions.findArtifact(logUri);
|
|
333
449
|
const fd = openSync(rec.rec.path, 'a');
|
|
334
450
|
sessions.milestone(session, 'wda_start_start');
|
|
335
|
-
|
|
451
|
+
let child;
|
|
452
|
+
try {
|
|
453
|
+
child = spawn('xcodebuild', args, { detached: true, stdio: ['ignore', fd, fd] });
|
|
454
|
+
}
|
|
455
|
+
finally {
|
|
456
|
+
closeSync(fd); // the child holds its own duplicate; ours would leak one fd per start
|
|
457
|
+
}
|
|
336
458
|
sessions.milestone(session, 'wda_start_end');
|
|
459
|
+
child.on('error', () => undefined); // spawn failure surfaces as WDA_START_FAILED below, not a crash
|
|
337
460
|
child.unref();
|
|
338
461
|
managedProcesses.set(session.id, { pid: child.pid ?? -1, logUri });
|
|
339
|
-
|
|
462
|
+
// Reapable if this server crashes; `endpoint` lets the next server adopt it when healthy.
|
|
463
|
+
registerManagedProcess(child.pid, 'wda', session.id, { endpoint: url });
|
|
340
464
|
sessions.addEnvChange(session, `wda start pid ${child.pid ?? 'unknown'} ${projectPath} ${targetUdid}`);
|
|
341
465
|
sessions.recordMutation(session, {
|
|
342
466
|
tool: 'qa_wda',
|
|
@@ -391,7 +515,7 @@ export function registerWda(server, sessions) {
|
|
|
391
515
|
logUri,
|
|
392
516
|
webDriverAgentUrl: url,
|
|
393
517
|
command: ['xcodebuild', ...args],
|
|
394
|
-
wdaConfig:
|
|
518
|
+
wdaConfig: effectiveConfig,
|
|
395
519
|
wda: waited.status,
|
|
396
520
|
startupWaitMs: waited.durationMs,
|
|
397
521
|
});
|
|
@@ -402,11 +526,13 @@ export function registerWda(server, sessions) {
|
|
|
402
526
|
pid: child.pid ?? null,
|
|
403
527
|
logUri,
|
|
404
528
|
webDriverAgentUrl: url,
|
|
529
|
+
wdaProjectPath: projectPath,
|
|
530
|
+
wdaProjectSource,
|
|
405
531
|
command: ['xcodebuild', ...args],
|
|
406
|
-
wdaConfig:
|
|
532
|
+
wdaConfig: effectiveConfig,
|
|
407
533
|
wda: waited.status,
|
|
408
534
|
startupWaitMs: waited.durationMs,
|
|
409
|
-
}, `started managed WDA pid ${child.pid ?? 'unknown'} and /status is ready
|
|
535
|
+
}, `started managed WDA pid ${child.pid ?? 'unknown'} and /status is ready > ${logUri}\nNext: qa_wda attach.`);
|
|
410
536
|
}
|
|
411
537
|
const status = await checkWda(url);
|
|
412
538
|
const xcode = await xcodeAvailable();
|
|
@@ -414,7 +540,9 @@ export function registerWda(server, sessions) {
|
|
|
414
540
|
const appId = bundleId ?? session.appId ?? null;
|
|
415
541
|
const artifactSummary = latestWdaArtifacts(session);
|
|
416
542
|
const wdaProjectDiscovery = discoverWdaProjects(session.root, projectPath ? [projectPath] : []);
|
|
417
|
-
|
|
543
|
+
// Reported whenever managed WDA is in play OR a derived-data cache exists (e.g. after a
|
|
544
|
+
// qa_wda build that used an auto-discovered Appium project and no explicit path).
|
|
545
|
+
const wdaBuildProduct = configured.mode === 'managed' || !!projectPath || existsSync(ddPath) ? managedWdaBuildProductStatus(ddPath) : null;
|
|
418
546
|
const simctlOk = await sim.simctlAvailable().catch(() => false);
|
|
419
547
|
const simulators = simctlOk ? await sim.listSimulators().catch(() => []) : [];
|
|
420
548
|
const bootedSimulators = simulators.filter((s) => s.state === 'Booted');
|
|
@@ -429,7 +557,7 @@ export function registerWda(server, sessions) {
|
|
|
429
557
|
bundleId: appId,
|
|
430
558
|
webDriverAgentUrl: url,
|
|
431
559
|
wda: status,
|
|
432
|
-
wdaConfig:
|
|
560
|
+
wdaConfig: effectiveConfig,
|
|
433
561
|
wdaProjectDiscovery,
|
|
434
562
|
signing: wdaSigningStatus(configured),
|
|
435
563
|
wdaBuildProduct,
|
|
@@ -458,11 +586,13 @@ export function registerWda(server, sessions) {
|
|
|
458
586
|
issues.push(issue('IOS_SIMULATOR_RUNTIME_MISSING', 'xcrun simctl is available, but no iOS simulators were found', 'Install an iOS simulator runtime in Xcode, create an iPhone simulator, then retry qa_wda doctor.', 'blocker', 'SIMULATOR_RUNTIME_MISSING'));
|
|
459
587
|
}
|
|
460
588
|
else if (!bootedUdid && simctlOk && bootedSimulators.length === 0) {
|
|
461
|
-
issues.push(issue('NO_BOOTED_SIMULATOR', 'no booted iOS simulator was detected', 'Boot/select a simulator with qa_ios boot, or pass
|
|
589
|
+
issues.push(issue('NO_BOOTED_SIMULATOR', 'no booted iOS simulator was detected', 'Boot/select a simulator with qa_ios boot, or pass device for an already-running WDA target.'));
|
|
462
590
|
}
|
|
463
591
|
if (!bootedUdid)
|
|
464
|
-
issues.push(issue('NO_UDID', 'no simulator/device UDID is bound to this session', 'Boot/select a simulator with qa_ios boot, or pass
|
|
465
|
-
|
|
592
|
+
issues.push(issue('NO_UDID', 'no simulator/device UDID is bound to this session', 'Boot/select a simulator with qa_ios boot, or pass device explicitly.'));
|
|
593
|
+
// No path given but a user-installed Appium WDA exists: build/start will auto-use it.
|
|
594
|
+
const appiumAuto = wantsManaged && !projectPath ? discoverAppiumWdaProjects()[0] : undefined;
|
|
595
|
+
if (wantsManaged && (!projectPath || !existsSync(projectPath)) && !appiumAuto) {
|
|
466
596
|
const discovered = wdaProjectDiscovery.candidates[0];
|
|
467
597
|
issues.push(issue('WDA_PROJECT_MISSING', discovered
|
|
468
598
|
? `managed WDA needs wdaProjectPath; discovered candidate ${discovered}`
|
|
@@ -507,7 +637,7 @@ export function registerWda(server, sessions) {
|
|
|
507
637
|
retrySafe: true,
|
|
508
638
|
failureCode: 'MULTIPLE_DEVICES',
|
|
509
639
|
nextSteps: [
|
|
510
|
-
'Pass
|
|
640
|
+
'Pass device explicitly, or bind the session to a device first. This prevents attaching to a stale WDA for the wrong device.',
|
|
511
641
|
],
|
|
512
642
|
}, base);
|
|
513
643
|
}
|
|
@@ -542,7 +672,7 @@ export function registerWda(server, sessions) {
|
|
|
542
672
|
action: 'wda_attach',
|
|
543
673
|
risk: 'medium',
|
|
544
674
|
target: { webDriverAgentUrl: url, udid: targetUdid, bundleId: appId ?? null, reportedDevice: mismatchedUdid },
|
|
545
|
-
consent: { required: !loopback && !
|
|
675
|
+
consent: { required: !loopback && !userAllowed, consentId, approved: loopback || userAllowed || !!approve },
|
|
546
676
|
status: 'blocked',
|
|
547
677
|
detail: 'WDA reported a different device',
|
|
548
678
|
});
|
|
@@ -576,7 +706,7 @@ export function registerWda(server, sessions) {
|
|
|
576
706
|
wdaSessionId: created.sessionId,
|
|
577
707
|
capabilities: created.capabilities ?? null,
|
|
578
708
|
},
|
|
579
|
-
consent: { required: !loopback && !
|
|
709
|
+
consent: { required: !loopback && !userAllowed, consentId, approved: true },
|
|
580
710
|
status: 'executed',
|
|
581
711
|
});
|
|
582
712
|
return qaOk({ ...base, sessionActive: true, wdaSessionId: created.sessionId, capabilities: created.capabilities ?? null }, `attached WDA structured iOS backend at ${url}\nNext: qa_snapshot / qa_act / qa_flow_run can use WDA-backed structured operations.`);
|
|
@@ -588,7 +718,7 @@ export function registerWda(server, sessions) {
|
|
|
588
718
|
action: 'wda_attach',
|
|
589
719
|
risk: 'medium',
|
|
590
720
|
target: { webDriverAgentUrl: url, udid: targetUdid, bundleId: appId ?? null },
|
|
591
|
-
consent: { required: !loopback && !
|
|
721
|
+
consent: { required: !loopback && !userAllowed, consentId, approved: loopback || userAllowed || !!approve },
|
|
592
722
|
status: 'blocked',
|
|
593
723
|
detail: String(e.message ?? e),
|
|
594
724
|
});
|