python-netgear-switch-library 0.0.post359__tar.gz → 0.0.post361__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.
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/PKG-INFO +1 -1
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/superpowers/specs/2026-08-02-snmp-surface-findings.md +65 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/_version.py +2 -2
- python_netgear_switch_library-0.0.post361/tests/fixtures/http/gsm7252ps_vlan_add_form.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/.github/workflows/ci.yml +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/.github/workflows/deb.yml +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/.github/workflows/publish-pypi.yml +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/.gitignore +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/.readthedocs.yaml +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/CLAUDE.md +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/LICENSE +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/README.md +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/RELEASING.md +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/debian/changelog +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/debian/control +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/debian/copyright +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/debian/rules +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/debian/source/format +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/Makefile +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/_ext/filelinks.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/_ext/support_tables.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/_static/models/gs105pe.png +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/_static/models/gs110emx.png +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/_static/models/gs305ep.png +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/_static/models/gs728tpp.png +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/_static/models/gsm7228ps.jpg +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/_static/models/gsm7252ps.jpg +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/_static/models/m4300-16x.png +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/_static/models/m4300-24x.png +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/_static/ngsw.css +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/api/cli.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/api/core.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/api/facades.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/api/index.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/api/mcp.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/api/operations.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/api/protocols.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/api/transport.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/api/virtual.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/cli.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/conf.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/development.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/fake/index.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/fake/internals.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/fake/serving.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/fake/testing.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/guide/concepts.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/guide/configuration.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/guide/installation.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/guide/principles.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/guide/quickstart.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/guide/reading.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/guide/writing.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/index.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/mcp.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/models/gs105pe.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/models/gs110emx.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/models/gs305ep.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/models/gs728tpp.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/models/gsm7228ps.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/models/gsm7252ps.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/models/index.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/models/m4300-16x.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/models/m4300-24x.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/models/support.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/protocols/cli.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/protocols/http/cheetah-form.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/protocols/http/cheetah-v1.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/protocols/http/gambit.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/protocols/http/merge-hash-cgi.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/protocols/http/xml-api.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/protocols/http.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/protocols/index.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/protocols/nsdp.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/protocols/snmp.rst +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/superpowers/plans/2026-07-15-foundation.md +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/superpowers/plans/2026-07-17-slice-02-snmp-read-core.md +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/superpowers/plans/2026-07-17-slice-03-read-apis.md +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/superpowers/plans/2026-07-18-slice-04-snmp-write.md +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/superpowers/plans/2026-07-18-slice-05-nsdp.md +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/superpowers/plans/2026-07-18-slice-06-http.md +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/superpowers/plans/2026-07-18-slice-07-cli.md +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/superpowers/plans/2026-07-18-slice-08-packaging-ci.md +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/superpowers/plans/2026-07-23-gsm7252ps-http-xe-dialect.md +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/superpowers/specs/2026-07-15-netgear-control-library-design.md +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/superpowers/specs/2026-07-23-gsm7252ps-http-xe-dialect-design.md +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/packaging/apt-index.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/packaging/ci-build.sh +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/packaging/deb-version.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/pyproject.toml +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/_dispatch.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/aio_api.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/capabilities.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/cli/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/cli/capture.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/cli/context.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/cli/format.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/cli/main.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/cli/resolve.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/cli/safety.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/cli_read.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/cli_write.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/config.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/errors.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/http_read.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/http_write.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/mcp/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/mcp/server.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/models.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/nsdp_read.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/nsdp_write.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/cli/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/cli/commands.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/cli/parse.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/http/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/http/crypt.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/http/endpoints.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/http/forms.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/http/parse.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/http/session.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/http/types.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/nsdp/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/nsdp/auth.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/nsdp/client.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/nsdp/parsers.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/nsdp/protocol.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/nsdp/types.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/nsdp/write.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/snmp/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/snmp/client.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/snmp/oids.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/snmp/parse.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/protocols/snmp/write.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/py.typed +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/registry.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/snmp_read.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/snmp_write.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/sync_api.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/transport/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/transport/aio/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/transport/aio/nsdp_udp.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/transport/aio/snmp_pysnmp.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/transport/cli/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/transport/cli/console.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/transport/cli/session.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/transport/cli/ssh.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/transport/cli/telnet.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/transport/http/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/transport/http/client.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/transport/sync/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/transport/sync/nsdp_udp.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/transport/sync/snmp_netsnmp_cli.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/cli_fastpath.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/faces/__init__.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/faces/cli.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/faces/http.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/faces/mibview.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/faces/nsdp.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/faces/snmp.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/seed.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/server.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/state.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/web.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/web_fastpath_vlan.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/web_fastpath_xui.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/web_gs105pe.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/web_gs110emx.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/web_gs110emx_templates.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/web_gs728tpp.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/web_gsm7228ps.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/web_gsm7252ps.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/src/netgear_switch/virtual/web_m4300.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/capture_parity.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/cli/test_capture.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/cli/test_cli_integration.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/cli/test_control_poe_port.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/cli/test_control_vlan_ip.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/cli/test_format.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/cli/test_main_framework.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/cli/test_new_commands.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/cli/test_op_coverage.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/cli/test_prompt_wiring.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/cli/test_read_commands.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/cli/test_resolve.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/cli/test_safety.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/cli/test_serve.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/conftest.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/captures/gsm7228ps.json +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/captures/gsm7252ps.json +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/captures/m4300-16x.json +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/captures/m4300-24x.json +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7228ps_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7228ps_lldp.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7228ps_mac_table.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7228ps_network.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7228ps_poe.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7228ps_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7228ps_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7228ps_vlan.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7228ps_vlan_brief.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7228ps_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7252ps_show_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7252ps_show_interface_ethernet_1_0_1.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7252ps_show_lldp_remote_device_all.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7252ps_show_mac_addr_table.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7252ps_show_network.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7252ps_show_poe_port_info_all.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7252ps_show_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7252ps_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7252ps_show_vlan_90.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7252ps_show_vlan_brief.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/gsm7252ps_show_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_16x_show_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_16x_show_interface_ethernet_1_0_1.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_16x_show_ip_management.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_16x_show_lldp_remote_device_all.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_16x_show_mac_addr_table.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_16x_show_poe_port_info_all.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_16x_show_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_16x_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_16x_show_vlan.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_16x_show_vlan_1.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_16x_show_vlan_4.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_16x_show_vlan_5.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_16x_show_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_24x_show_environment.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_24x_show_interface_ethernet_1_0_1.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_24x_show_ip_management.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_24x_show_lldp_remote_device_all.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_24x_show_mac_addr_table.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_24x_show_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_24x_show_version.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_24x_show_vlan.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_24x_show_vlan_5.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_24x_show_vlan_90.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/cli/m4300_24x_show_vlan_port_all.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs105pe_membership.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs105pe_portstats.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs105pe_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs105pe_status.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs105pe_switch_info.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs105pe_vlancfg.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs110emx_cf8021q.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs110emx_interface_stats.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs110emx_login.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs110emx_port_settings.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs110emx_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs110emx_redirect.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs110emx_sysinfo.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs110emx_vlanmembership.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs305ep_dashboard.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs305ep_login.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs305ep_membership.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs305ep_poestatus.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs305ep_portstats.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs305ep_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs305ep_vlancfg.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs728tpp_device_info_and_sensors.xml +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs728tpp_lldp.xml +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs728tpp_macs.xml +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs728tpp_mgmt_ip.xml +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs728tpp_poe.xml +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs728tpp_ports.xml +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs728tpp_pvids_membership.xml +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs728tpp_vlan_membership_per_vlan.xml +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gs728tpp_vlans.xml +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7228ps_basicAddressTable.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7228ps_ipConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7228ps_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7228ps_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7228ps_portPvidConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7228ps_portStatistics.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7228ps_portsConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7228ps_sysInfo.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7228ps_vlanPortCfg_vlan5.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7228ps_vlanStatus.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_basicAddressTable.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_http_configuration.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_ipConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_login.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_portPvidConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_portStatistics.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_portsConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_sysInfo.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_syslog_configuration.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_user_configuration.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_vlanPortCfg_vlan1.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_vlanPortCfg_vlan141.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_vlanStatus.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_vlan_configuration.js +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_vlan_configuration_live.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/gsm7252ps_vlan_status_live.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/m4300_16x_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/m4300_16x_mgmtVlanIpv4Configuration.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/m4300_16x_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/m4300_16x_portsConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/m4300_16x_vlanportcfg_vlan4.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/m4300_24x_poeInterfaceConfiguration.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/m4300_addresstable.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/m4300_lldpRemoteInventory.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/m4300_mgmtVlanIpv4Configuration.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/m4300_ports.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/m4300_portstats.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/m4300_pvid.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/m4300_sysinfo.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/m4300_vlanportcfg_vlan1.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/http/m4300_vlanstatus.html +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/snmp/gsm7252ps_fans.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/snmp/gsm7252ps_ifhighspeed.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/snmp/gsm7252ps_ifoperstatus.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/fixtures/snmp/gsm7252ps_psu.txt +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/http_specs.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/cli/test_cli_parse.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/http/test_crypt.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/http/test_endpoints.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/http/test_forms.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/http/test_parse.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/nsdp/test_auth.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/nsdp/test_parsers.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/nsdp/test_protocol.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/nsdp/test_write_frame.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/snmp/test_client.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/snmp/test_oids.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/snmp/test_parse_lldp_macs.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/snmp/test_parse_mgmt_ip.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/snmp/test_parse_poe_sensors.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/snmp/test_parse_ports.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/snmp/test_parse_system_info.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/snmp/test_parse_vlans.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/protocols/snmp/test_write_encode.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_aio_api.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_capabilities.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_cli_read.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_cli_vlan_write.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_cli_write.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_config.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_cross_backend_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_deb_version.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_dispatch.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_docs_coverage.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_errors.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_facade_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_http_dispatch.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_http_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_http_read.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_http_vlan_membership.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_http_write.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_http_xui_writes.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_import.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_mcp_server.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_models.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_models_snmp_read.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_nsdp_integration.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_nsdp_read.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_nsdp_write.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_public_api.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_quality_gates.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_registry.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_snmp_integration.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_snmp_read.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_snmp_write.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_sync_api.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_version.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/test_write_equivalence.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/transport/_fastpath_fake.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/transport/test_cli_console.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/transport/test_cli_scp_cert.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/transport/test_cli_telnet.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/transport/test_http_client.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/transport/test_nsdp_udp_sync.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/transport/test_set_transport.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/transport/test_snmp_netsnmp_cli.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/transport/test_snmp_pysnmp.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/transport/test_value_parity.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_cli_cross_backend.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_cli_gsm7228ps_parity.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_gsm7228ps_seed.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_hostname.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_m4300_seeds.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_mibview.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_mutable_state.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_nsdp_state.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_serve_daemon.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_snmp_write_face.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_state_seed.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_switchport_vlan_write.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_syslog_fidelity.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_virtual_http_face.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_virtual_nsdp_face.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_virtual_snmp_face.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_web_projection.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/tests/virtual/test_write_outcomes.py +0 -0
- {python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/uv.lock +0 -0
{python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-netgear-switch-library
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.post361
|
|
4
4
|
Summary: Python library and CLI to query and control Netgear switches over SNMP, NSDP and HTTP.
|
|
5
5
|
Author-email: Tim Ansell <me@mith.ro>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -483,3 +483,68 @@ That is enough to implement `_xui_vlan_create`/`_xui_vlan_delete` against
|
|
|
483
483
|
existing `submit_flag`. It still needs driving against a switch with a throwaway
|
|
484
484
|
VLAN id and reading back before `reads_verified`-style confidence is claimed —
|
|
485
485
|
but the mechanism is no longer inferred.
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
### The ADD button is client-side; APPLY carries the new row
|
|
489
|
+
|
|
490
|
+
Posting `v_6_1_1=ADD` to `/vlanConfiguration.html/a1` (with the page's tokens
|
|
491
|
+
and nav) returns **12 bytes** — not a form. So `ADD` is a JavaScript action that
|
|
492
|
+
reveals an input row in the table the browser already has; it is not a server
|
|
493
|
+
round trip and it creates nothing.
|
|
494
|
+
|
|
495
|
+
Section 6 is the page-button block (the page's own comment marks it
|
|
496
|
+
`page_buttons_end`):
|
|
497
|
+
|
|
498
|
+
| Field | Value |
|
|
499
|
+
|---|---|
|
|
500
|
+
| `v_6_1_1` | `ADD` |
|
|
501
|
+
| `v_6_1_2` | `DELETE` |
|
|
502
|
+
| `v_6_1_3` | `CANCEL` |
|
|
503
|
+
| `v_6_1_4`, `v_6_1_5` | `APPLY` |
|
|
504
|
+
|
|
505
|
+
The display table is 14 rows addressed `1.<row0>.14.v_2_1_<col>`, all hidden
|
|
506
|
+
inputs, with columns 1=id, 2=name, 3=type and 4=RowStatus.
|
|
507
|
+
|
|
508
|
+
So the create flow is a SINGLE post: the new row's cells plus an APPLY button,
|
|
509
|
+
with the action cell carrying `createAndGo(4)` — and delete is the same shape
|
|
510
|
+
with `destroy(6)`. It is NOT the two-step ADD-then-APPLY a browser appears to
|
|
511
|
+
perform.
|
|
512
|
+
|
|
513
|
+
Also captured: `page.action` is `/vlanConfiguration.html/a1`, `page.tokens` is
|
|
514
|
+
empty for this page, and `page.nav` is
|
|
515
|
+
`{v_1_1_1: Disable, v_4_1_1: 4093, v_4_2_1: Descending}` — the nav block that
|
|
516
|
+
`xui_row_apply_form` already knows to send.
|
|
517
|
+
|
|
518
|
+
**Still unresolved:** the row index a new row must use. Existing rows occupy
|
|
519
|
+
`1.0.14` .. `1.13.14`; whether a create uses `1.14.14` (next free), a fixed
|
|
520
|
+
sentinel, or re-uses index 0 has not been established, and getting it wrong
|
|
521
|
+
would edit an existing VLAN rather than add one. That is the single remaining
|
|
522
|
+
unknown, and it is readable from `xui_common.js`'s row-add handler.
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
### Next action: capture the real POST with a browser
|
|
526
|
+
|
|
527
|
+
`xui_common.js` (18027 bytes) is generic framework — it drives `submit_flag`
|
|
528
|
+
and the `xeData` attribute maps but contains no row-add handler.
|
|
529
|
+
`_xe_vlanConfiguration.js` only declares column attributes (column 1 carries
|
|
530
|
+
`"mandate"`, i.e. the VLAN id is required). Neither states the index a new row
|
|
531
|
+
takes, and further reading of the framework is poor value.
|
|
532
|
+
|
|
533
|
+
The definitive answer is one browser capture: load `/vlanConfiguration.html`
|
|
534
|
+
with Playwright, click ADD, enter a throwaway VLAN id from the reserved
|
|
535
|
+
4001-4008 range, click APPLY, and record the actual request body. That yields
|
|
536
|
+
the exact field names and row index the firmware expects, rather than any
|
|
537
|
+
inference — and it is the same technique that cracked the M4300's read-page
|
|
538
|
+
URLs when static analysis dead-ended.
|
|
539
|
+
|
|
540
|
+
This IS a real create, so it runs under the project's live-hardware rules:
|
|
541
|
+
throwaway id only, record the prior VLAN set, delete afterwards, and prove the
|
|
542
|
+
restore by re-reading. Those rules exist precisely to sanction this kind of
|
|
543
|
+
measurement, and creating VLAN 4007 on a switch that already carries 14 VLANs
|
|
544
|
+
is the least invasive write in this whole area.
|
|
545
|
+
|
|
546
|
+
Once that body is captured, `_xui_vlan_create`/`_xui_vlan_delete` are a small
|
|
547
|
+
addition next to `_xui_poe_admin`, the `_CSRF_HTTP_WRITES` entry comes out of
|
|
548
|
+
`capabilities.py`, and the xfail in `test_write_outcomes.py` should flip to
|
|
549
|
+
passing — at which point HTTP VLAN creation works on all four FASTPATH models
|
|
550
|
+
and the support table can say so truthfully.
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.0.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 0, '
|
|
21
|
+
__version__ = version = '0.0.post361'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 0, 'post361')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/.gitignore
RENAMED
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/CLAUDE.md
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/LICENSE
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/README.md
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/RELEASING.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/debian/rules
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/cli.rst
RENAMED
|
File without changes
|
{python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/conf.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_netgear_switch_library-0.0.post359 → python_netgear_switch_library-0.0.post361}/docs/mcp.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|