visus-web 0.1.0__tar.gz
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.
- visus_web-0.1.0/.github/workflows/publish.yml +51 -0
- visus_web-0.1.0/.gitignore +60 -0
- visus_web-0.1.0/LICENSE +109 -0
- visus_web-0.1.0/PKG-INFO +1110 -0
- visus_web-0.1.0/README.md +963 -0
- visus_web-0.1.0/TESTING.md +46 -0
- visus_web-0.1.0/examples/demo_rpa.py +150 -0
- visus_web-0.1.0/examples/dolar.py +15 -0
- visus_web-0.1.0/examples/login.py +27 -0
- visus_web-0.1.0/examples/login_mcp.py +51 -0
- visus_web-0.1.0/examples/login_rpa.py +108 -0
- visus_web-0.1.0/mkdocs.yml +41 -0
- visus_web-0.1.0/pyproject.toml +102 -0
- visus_web-0.1.0/skills/developing-visus-web/SKILL.md +74 -0
- visus_web-0.1.0/skills/using-visus-web/SKILL.md +161 -0
- visus_web-0.1.0/src/visus/web/__init__.py +64 -0
- visus_web-0.1.0/src/visus/web/api/__init__.py +0 -0
- visus_web-0.1.0/src/visus/web/api/_htmlsel.py +175 -0
- visus_web-0.1.0/src/visus/web/api/_steps.py +235 -0
- visus_web-0.1.0/src/visus/web/api/assertions.py +257 -0
- visus_web-0.1.0/src/visus/web/api/browser.py +47 -0
- visus_web-0.1.0/src/visus/web/api/context.py +78 -0
- visus_web-0.1.0/src/visus/web/api/events.py +91 -0
- visus_web-0.1.0/src/visus/web/api/fields.py +41 -0
- visus_web-0.1.0/src/visus/web/api/frame_locator.py +51 -0
- visus_web-0.1.0/src/visus/web/api/input.py +70 -0
- visus_web-0.1.0/src/visus/web/api/locator.py +512 -0
- visus_web-0.1.0/src/visus/web/api/page.py +472 -0
- visus_web-0.1.0/src/visus/web/async_api/__init__.py +1205 -0
- visus_web-0.1.0/src/visus/web/backends/__init__.py +0 -0
- visus_web-0.1.0/src/visus/web/backends/base.py +161 -0
- visus_web-0.1.0/src/visus/web/backends/browsers/__init__.py +0 -0
- visus_web-0.1.0/src/visus/web/backends/browsers/_ie_preflight.py +127 -0
- visus_web-0.1.0/src/visus/web/backends/browsers/chrome.py +45 -0
- visus_web-0.1.0/src/visus/web/backends/browsers/edge.py +45 -0
- visus_web-0.1.0/src/visus/web/backends/browsers/edge_ie.py +102 -0
- visus_web-0.1.0/src/visus/web/backends/browsers/firefox.py +30 -0
- visus_web-0.1.0/src/visus/web/backends/selenium/__init__.py +0 -0
- visus_web-0.1.0/src/visus/web/backends/selenium/_diagnostics.py +179 -0
- visus_web-0.1.0/src/visus/web/backends/selenium/actionability.py +132 -0
- visus_web-0.1.0/src/visus/web/backends/selenium/driver_delegate.py +1319 -0
- visus_web-0.1.0/src/visus/web/backends/selenium/expect_engine.py +214 -0
- visus_web-0.1.0/src/visus/web/backends/selenium/js/__init__.py +7 -0
- visus_web-0.1.0/src/visus/web/backends/selenium/js/bundle.js +885 -0
- visus_web-0.1.0/src/visus/web/backends/selenium/resolver.py +68 -0
- visus_web-0.1.0/src/visus/web/backends/selenium_backend.py +193 -0
- visus_web-0.1.0/src/visus/web/cli/__init__.py +1 -0
- visus_web-0.1.0/src/visus/web/cli/codegen.py +86 -0
- visus_web-0.1.0/src/visus/web/cli/console.py +249 -0
- visus_web-0.1.0/src/visus/web/cli/main.py +906 -0
- visus_web-0.1.0/src/visus/web/cli/session_client.py +231 -0
- visus_web-0.1.0/src/visus/web/cli/session_server.py +777 -0
- visus_web-0.1.0/src/visus/web/config.py +13 -0
- visus_web-0.1.0/src/visus/web/engine.py +23 -0
- visus_web-0.1.0/src/visus/web/errors.py +31 -0
- visus_web-0.1.0/src/visus/web/mcp/__init__.py +1 -0
- visus_web-0.1.0/src/visus/web/mcp/server.py +761 -0
- visus_web-0.1.0/src/visus/web/mcp/session.py +160 -0
- visus_web-0.1.0/src/visus/web/network.py +444 -0
- visus_web-0.1.0/src/visus/web/observability/__init__.py +0 -0
- visus_web-0.1.0/src/visus/web/observability/recorder.py +225 -0
- visus_web-0.1.0/src/visus/web/observability/report.py +689 -0
- visus_web-0.1.0/src/visus/web/py.typed +0 -0
- visus_web-0.1.0/src/visus/web/pytest_plugin.py +115 -0
- visus_web-0.1.0/src/visus/web/registry.py +43 -0
- visus_web-0.1.0/src/visus/web/rpa.py +145 -0
- visus_web-0.1.0/src/visus/web/tracing.py +104 -0
- visus_web-0.1.0/src/visus/web/vision/__init__.py +6 -0
- visus_web-0.1.0/src/visus/web/vision/_images.py +42 -0
- visus_web-0.1.0/src/visus/web/vision/imaging.py +72 -0
- visus_web-0.1.0/src/visus/web/vision/ocr.py +46 -0
- visus_web-0.1.0/tests/conftest.py +56 -0
- visus_web-0.1.0/tests/fixtures/actions.html +28 -0
- visus_web-0.1.0/tests/fixtures/backtrack.html +11 -0
- visus_web-0.1.0/tests/fixtures/backtrack_depth.html +21 -0
- visus_web-0.1.0/tests/fixtures/deep.html +3 -0
- visus_web-0.1.0/tests/fixtures/download.txt +1 -0
- visus_web-0.1.0/tests/fixtures/downloads.html +5 -0
- visus_web-0.1.0/tests/fixtures/expects.html +21 -0
- visus_web-0.1.0/tests/fixtures/fields.html +88 -0
- visus_web-0.1.0/tests/fixtures/forms.html +16 -0
- visus_web-0.1.0/tests/fixtures/frames.html +5 -0
- visus_web-0.1.0/tests/fixtures/index.html +8 -0
- visus_web-0.1.0/tests/fixtures/inner.html +7 -0
- visus_web-0.1.0/tests/fixtures/input.html +14 -0
- visus_web-0.1.0/tests/fixtures/interactions.html +38 -0
- visus_web-0.1.0/tests/fixtures/locators.html +24 -0
- visus_web-0.1.0/tests/fixtures/network.html +13 -0
- visus_web-0.1.0/tests/fixtures/overlay.html +15 -0
- visus_web-0.1.0/tests/fixtures/page2.html +2 -0
- visus_web-0.1.0/tests/fixtures/popups.html +8 -0
- visus_web-0.1.0/tests/fixtures/rpa.html +13 -0
- visus_web-0.1.0/tests/fixtures/shadow.html +11 -0
- visus_web-0.1.0/tests/fixtures/smartsel.html +19 -0
- visus_web-0.1.0/tests/test_api_wiring.py +281 -0
- visus_web-0.1.0/tests/test_async_api_unit.py +1419 -0
- visus_web-0.1.0/tests/test_backend_protocols.py +239 -0
- visus_web-0.1.0/tests/test_browsers_chrome.py +22 -0
- visus_web-0.1.0/tests/test_browsers_edge.py +31 -0
- visus_web-0.1.0/tests/test_browsers_edge_ie.py +51 -0
- visus_web-0.1.0/tests/test_browsers_firefox.py +62 -0
- visus_web-0.1.0/tests/test_cli.py +197 -0
- visus_web-0.1.0/tests/test_cli_session.py +2024 -0
- visus_web-0.1.0/tests/test_codegen.py +93 -0
- visus_web-0.1.0/tests/test_config.py +18 -0
- visus_web-0.1.0/tests/test_diagnostics.py +179 -0
- visus_web-0.1.0/tests/test_e2e_actions.py +87 -0
- visus_web-0.1.0/tests/test_e2e_actions_more.py +78 -0
- visus_web-0.1.0/tests/test_e2e_async.py +179 -0
- visus_web-0.1.0/tests/test_e2e_async_more.py +533 -0
- visus_web-0.1.0/tests/test_e2e_async_parity.py +384 -0
- visus_web-0.1.0/tests/test_e2e_backtrack.py +77 -0
- visus_web-0.1.0/tests/test_e2e_cli_session.py +109 -0
- visus_web-0.1.0/tests/test_e2e_contexts.py +91 -0
- visus_web-0.1.0/tests/test_e2e_downloads.py +19 -0
- visus_web-0.1.0/tests/test_e2e_edge.py +14 -0
- visus_web-0.1.0/tests/test_e2e_edge_ie.py +35 -0
- visus_web-0.1.0/tests/test_e2e_edge_rpa.py +29 -0
- visus_web-0.1.0/tests/test_e2e_errors.py +40 -0
- visus_web-0.1.0/tests/test_e2e_events.py +47 -0
- visus_web-0.1.0/tests/test_e2e_expect.py +59 -0
- visus_web-0.1.0/tests/test_e2e_expect_more.py +93 -0
- visus_web-0.1.0/tests/test_e2e_fields.py +236 -0
- visus_web-0.1.0/tests/test_e2e_firefox.py +108 -0
- visus_web-0.1.0/tests/test_e2e_frames.py +49 -0
- visus_web-0.1.0/tests/test_e2e_input.py +90 -0
- visus_web-0.1.0/tests/test_e2e_launch.py +79 -0
- visus_web-0.1.0/tests/test_e2e_locators.py +108 -0
- visus_web-0.1.0/tests/test_e2e_locators_more.py +167 -0
- visus_web-0.1.0/tests/test_e2e_mcp.py +430 -0
- visus_web-0.1.0/tests/test_e2e_navigation.py +220 -0
- visus_web-0.1.0/tests/test_e2e_network.py +116 -0
- visus_web-0.1.0/tests/test_e2e_observability.py +178 -0
- visus_web-0.1.0/tests/test_e2e_rpa.py +65 -0
- visus_web-0.1.0/tests/test_e2e_rpa_basics.py +67 -0
- visus_web-0.1.0/tests/test_e2e_smartsel.py +50 -0
- visus_web-0.1.0/tests/test_e2e_vision.py +86 -0
- visus_web-0.1.0/tests/test_engine.py +26 -0
- visus_web-0.1.0/tests/test_errors.py +28 -0
- visus_web-0.1.0/tests/test_events.py +73 -0
- visus_web-0.1.0/tests/test_expect_engine_unit.py +88 -0
- visus_web-0.1.0/tests/test_htmlsel.py +99 -0
- visus_web-0.1.0/tests/test_input_wiring.py +224 -0
- visus_web-0.1.0/tests/test_locator_steps.py +291 -0
- visus_web-0.1.0/tests/test_mcp_list_fields.py +112 -0
- visus_web-0.1.0/tests/test_mcp_server.py +133 -0
- visus_web-0.1.0/tests/test_network_capture.py +152 -0
- visus_web-0.1.0/tests/test_network_capture_cdp.py +431 -0
- visus_web-0.1.0/tests/test_pytest_plugin.py +146 -0
- visus_web-0.1.0/tests/test_registry.py +26 -0
- visus_web-0.1.0/tests/test_selenium_backend_protocol.py +139 -0
- visus_web-0.1.0/tests/test_steps_backtrack.py +243 -0
- visus_web-0.1.0/tests/test_tracing_unit.py +268 -0
- visus_web-0.1.0/tests/test_translation.py +28 -0
- visus_web-0.1.0/tests/test_vision.py +175 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
# Publishes to PyPI when you cut a GitHub Release (tag vX.Y.Z).
|
|
4
|
+
# A plain `git push` does NOT publish — only a published Release does.
|
|
5
|
+
# Auth is via PyPI Trusted Publishing (OIDC): no tokens, no secrets.
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
release:
|
|
9
|
+
types: [published]
|
|
10
|
+
workflow_dispatch: # allow a manual run from the Actions tab
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
name: Build distribution
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: "3.12"
|
|
22
|
+
|
|
23
|
+
- name: Build sdist + wheel and validate metadata
|
|
24
|
+
run: |
|
|
25
|
+
python -m pip install --upgrade pip build twine
|
|
26
|
+
python -m build
|
|
27
|
+
twine check dist/*
|
|
28
|
+
|
|
29
|
+
- uses: actions/upload-artifact@v4
|
|
30
|
+
with:
|
|
31
|
+
name: dist
|
|
32
|
+
path: dist/
|
|
33
|
+
|
|
34
|
+
publish:
|
|
35
|
+
name: Publish to PyPI
|
|
36
|
+
needs: build
|
|
37
|
+
runs-on: ubuntu-latest
|
|
38
|
+
# The environment name MUST match what you set on PyPI's trusted publisher.
|
|
39
|
+
environment:
|
|
40
|
+
name: pypi
|
|
41
|
+
url: https://pypi.org/p/visus-web
|
|
42
|
+
permissions:
|
|
43
|
+
id-token: write # required for OIDC / trusted publishing
|
|
44
|
+
steps:
|
|
45
|
+
- uses: actions/download-artifact@v4
|
|
46
|
+
with:
|
|
47
|
+
name: dist
|
|
48
|
+
path: dist/
|
|
49
|
+
|
|
50
|
+
- name: Publish to PyPI
|
|
51
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# ---- Reference clones (study material, NOT part of this project) ----
|
|
2
|
+
/playwright/
|
|
3
|
+
/playwright-python/
|
|
4
|
+
/botcity-framework-web-python/
|
|
5
|
+
|
|
6
|
+
# ---- Local-only planning docs (specs/plans kept on disk, NOT tracked) ----
|
|
7
|
+
/docs/
|
|
8
|
+
|
|
9
|
+
# ---- Workflow research temp files ----
|
|
10
|
+
_synthesis.tmp.md
|
|
11
|
+
_report_*.tmp.md
|
|
12
|
+
*.tmp.md
|
|
13
|
+
|
|
14
|
+
# ---- Python ----
|
|
15
|
+
__pycache__/
|
|
16
|
+
*.py[cod]
|
|
17
|
+
*$py.class
|
|
18
|
+
*.egg-info/
|
|
19
|
+
.eggs/
|
|
20
|
+
build/
|
|
21
|
+
dist/
|
|
22
|
+
wheels/
|
|
23
|
+
*.egg
|
|
24
|
+
|
|
25
|
+
# ---- Virtualenvs / tooling ----
|
|
26
|
+
.venv/
|
|
27
|
+
venv/
|
|
28
|
+
.env
|
|
29
|
+
.python-version
|
|
30
|
+
uv.lock
|
|
31
|
+
|
|
32
|
+
# ---- Caches ----
|
|
33
|
+
.pytest_cache/
|
|
34
|
+
.ruff_cache/
|
|
35
|
+
.mypy_cache/
|
|
36
|
+
.coverage
|
|
37
|
+
.coverage.*
|
|
38
|
+
htmlcov/
|
|
39
|
+
coverage.xml
|
|
40
|
+
.tox/
|
|
41
|
+
.nox/
|
|
42
|
+
|
|
43
|
+
# ---- Drivers / browser artifacts produced at runtime ----
|
|
44
|
+
# CLI session daemon dir (session.json, daemon.log) — at any depth
|
|
45
|
+
.visus/
|
|
46
|
+
downloads/
|
|
47
|
+
*.trace.zip
|
|
48
|
+
# rpa() default output folder (run.zip / report.html per run) — at any depth
|
|
49
|
+
visus-runs/
|
|
50
|
+
# WebDriver executables provided locally (e.g. the IE driver for Edge IE-mode) — never commit
|
|
51
|
+
IEDriverServer.exe
|
|
52
|
+
/*.exe
|
|
53
|
+
/drivers/
|
|
54
|
+
|
|
55
|
+
# ---- Editors / OS ----
|
|
56
|
+
.idea/
|
|
57
|
+
.vscode/
|
|
58
|
+
*.swp
|
|
59
|
+
.DS_Store
|
|
60
|
+
Thumbs.db
|
visus_web-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
Licença de Software Proprietário — visus-web
|
|
2
|
+
Proprietary Software License — visus-web
|
|
3
|
+
|
|
4
|
+
Copyright (c) 2026 Matheus Pereira. Todos os direitos reservados. / All rights reserved.
|
|
5
|
+
|
|
6
|
+
================================================================================
|
|
7
|
+
PORTUGUÊS
|
|
8
|
+
================================================================================
|
|
9
|
+
|
|
10
|
+
Este software e o respectivo código-fonte ("Software") são de propriedade
|
|
11
|
+
exclusiva de Matheus Pereira ("Licenciante") e protegidos por leis de direitos
|
|
12
|
+
autorais e tratados internacionais. O Software NÃO é software livre nem de
|
|
13
|
+
código aberto.
|
|
14
|
+
|
|
15
|
+
1. CONCESSÃO DE LICENÇA
|
|
16
|
+
Sujeito ao cumprimento integral destes termos, o Licenciante concede a você
|
|
17
|
+
("Licenciado") uma licença pessoal, mundial, não exclusiva, intransferível e
|
|
18
|
+
revogável para INSTALAR e USAR o Software, na forma em que é distribuído, como
|
|
19
|
+
dependência em seus próprios projetos e aplicações.
|
|
20
|
+
|
|
21
|
+
2. RESTRIÇÕES
|
|
22
|
+
Salvo autorização prévia e por escrito do Licenciante, é EXPRESSAMENTE
|
|
23
|
+
PROIBIDO:
|
|
24
|
+
(a) copiar, reproduzir ou publicar o código-fonte do Software, no todo ou em
|
|
25
|
+
parte, em qualquer meio ou repositório;
|
|
26
|
+
(b) redistribuir, sublicenciar, vender, alugar, emprestar, ceder ou de
|
|
27
|
+
qualquer forma disponibilizar o Software a terceiros, isoladamente ou
|
|
28
|
+
como parte de outro produto;
|
|
29
|
+
(c) modificar, adaptar, traduzir ou criar obras derivadas do Software;
|
|
30
|
+
(d) realizar engenharia reversa, descompilar, desmontar ou de outro modo
|
|
31
|
+
tentar obter o código-fonte a partir de versões compiladas;
|
|
32
|
+
(e) remover, ocultar ou alterar avisos de direitos autorais, marcas ou esta
|
|
33
|
+
licença;
|
|
34
|
+
(f) usar o Software para criar um produto ou serviço concorrente.
|
|
35
|
+
|
|
36
|
+
3. PROPRIEDADE
|
|
37
|
+
O Software é licenciado, não vendido. O Licenciante retém todos os direitos,
|
|
38
|
+
títulos e interesses sobre o Software, incluindo todos os direitos de
|
|
39
|
+
propriedade intelectual. Nenhum direito é concedido por implicação.
|
|
40
|
+
|
|
41
|
+
4. RESCISÃO
|
|
42
|
+
Esta licença é automaticamente rescindida, sem aviso, caso o Licenciado
|
|
43
|
+
descumpra qualquer destes termos. Na rescisão, o Licenciado deve cessar todo
|
|
44
|
+
uso e destruir todas as cópias do Software em sua posse.
|
|
45
|
+
|
|
46
|
+
5. ISENÇÃO DE GARANTIAS
|
|
47
|
+
O SOFTWARE É FORNECIDO "NO ESTADO EM QUE SE ENCONTRA", SEM GARANTIAS DE
|
|
48
|
+
QUALQUER NATUREZA, EXPRESSAS OU IMPLÍCITAS, INCLUINDO, MAS NÃO SE LIMITANDO
|
|
49
|
+
A, GARANTIAS DE COMERCIABILIDADE, ADEQUAÇÃO A UM FIM ESPECÍFICO E NÃO
|
|
50
|
+
VIOLAÇÃO.
|
|
51
|
+
|
|
52
|
+
6. LIMITAÇÃO DE RESPONSABILIDADE
|
|
53
|
+
EM NENHUMA HIPÓTESE O LICENCIANTE SERÁ RESPONSÁVEL POR QUAISQUER DANOS
|
|
54
|
+
(DIRETOS, INDIRETOS, INCIDENTAIS, ESPECIAIS OU CONSEQUENCIAIS) DECORRENTES DO
|
|
55
|
+
USO OU DA IMPOSSIBILIDADE DE USO DO SOFTWARE.
|
|
56
|
+
|
|
57
|
+
Para licenças comerciais, de redistribuição ou usos não previstos acima, entre
|
|
58
|
+
em contato com o Licenciante.
|
|
59
|
+
|
|
60
|
+
================================================================================
|
|
61
|
+
ENGLISH
|
|
62
|
+
================================================================================
|
|
63
|
+
|
|
64
|
+
This software and its source code (the "Software") are the exclusive property of
|
|
65
|
+
Matheus Pereira (the "Licensor") and are protected by copyright law and
|
|
66
|
+
international treaties. The Software is NOT free or open-source software.
|
|
67
|
+
|
|
68
|
+
1. LICENSE GRANT
|
|
69
|
+
Subject to full compliance with these terms, the Licensor grants you (the
|
|
70
|
+
"Licensee") a personal, worldwide, non-exclusive, non-transferable, revocable
|
|
71
|
+
license to INSTALL and USE the Software, as distributed, as a dependency in
|
|
72
|
+
your own projects and applications.
|
|
73
|
+
|
|
74
|
+
2. RESTRICTIONS
|
|
75
|
+
Except with the Licensor's prior written permission, you may NOT:
|
|
76
|
+
(a) copy, reproduce, or publish the Software's source code, in whole or in
|
|
77
|
+
part, on any medium or repository;
|
|
78
|
+
(b) redistribute, sublicense, sell, rent, lease, lend, assign, or otherwise
|
|
79
|
+
make the Software available to third parties, alone or as part of another
|
|
80
|
+
product;
|
|
81
|
+
(c) modify, adapt, translate, or create derivative works of the Software;
|
|
82
|
+
(d) reverse engineer, decompile, disassemble, or otherwise attempt to derive
|
|
83
|
+
the source code from compiled forms;
|
|
84
|
+
(e) remove, obscure, or alter any copyright notices, trademarks, or this
|
|
85
|
+
license;
|
|
86
|
+
(f) use the Software to build a competing product or service.
|
|
87
|
+
|
|
88
|
+
3. OWNERSHIP
|
|
89
|
+
The Software is licensed, not sold. The Licensor retains all right, title, and
|
|
90
|
+
interest in and to the Software, including all intellectual property rights.
|
|
91
|
+
No rights are granted by implication.
|
|
92
|
+
|
|
93
|
+
4. TERMINATION
|
|
94
|
+
This license terminates automatically, without notice, if the Licensee
|
|
95
|
+
breaches any of these terms. Upon termination, the Licensee must cease all use
|
|
96
|
+
and destroy all copies of the Software in their possession.
|
|
97
|
+
|
|
98
|
+
5. DISCLAIMER OF WARRANTY
|
|
99
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
100
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
101
|
+
FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT.
|
|
102
|
+
|
|
103
|
+
6. LIMITATION OF LIABILITY
|
|
104
|
+
IN NO EVENT SHALL THE LICENSOR BE LIABLE FOR ANY DAMAGES (DIRECT, INDIRECT,
|
|
105
|
+
INCIDENTAL, SPECIAL, OR CONSEQUENTIAL) ARISING OUT OF THE USE OF OR INABILITY
|
|
106
|
+
TO USE THE SOFTWARE.
|
|
107
|
+
|
|
108
|
+
For commercial licenses, redistribution rights, or any use not permitted above,
|
|
109
|
+
please contact the Licensor.
|