dsoxlab 0.2.3__tar.gz → 0.2.4__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.
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/.github/workflows/appliance.yml +7 -1
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/CHANGELOG.fr.md +15 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/CHANGELOG.md +14 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/PKG-INFO +1 -1
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/pyproject.toml +1 -1
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/uv.lock +1 -1
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/.bestpractices.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/.github/CODEOWNERS +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/.github/FUNDING.yml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/.github/dependabot.yml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/.github/workflows/ci.yml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/.github/workflows/plumber.yml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/.github/workflows/release.yml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/.github/workflows/scorecard.yml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/.gitignore +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/.plumber.yaml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/.poutine.yml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/.pre-commit-config.yaml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/CODE_OF_CONDUCT.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/CODE_OF_CONDUCT.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/CONTRIBUTING.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/CONTRIBUTING.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/LICENSE +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/NOTICE +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/README.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/README.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/RELEASING.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/RELEASING.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/SECURITY.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/SECURITY.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/README.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/README.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/appliance.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/appliance.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/appliance-bureau.png +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/appliance-connexion.png +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/appliance-lab-vm.png +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/brand/dsoxlab-icon-dark.svg +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/brand/dsoxlab-icon-mono.svg +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/brand/dsoxlab-icon.svg +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/brand/dsoxlab-lockup-dark.svg +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/brand/dsoxlab-lockup-light.svg +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/brand/dsoxlab-lockup-mono.svg +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/brand/png/dsoxlab-icon-1024.png +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/brand/png/dsoxlab-icon-256.png +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/brand/png/dsoxlab-icon-512.png +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/brand/png/dsoxlab-icon-dark-1024.png +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/brand/png/dsoxlab-icon-dark-512.png +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/brand/png/dsoxlab-lockup-dark-1024.png +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/brand/png/dsoxlab-lockup-dark-2048.png +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/brand/png/dsoxlab-lockup-light-1024.png +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/brand/png/dsoxlab-lockup-light-2048.png +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/brand/png/dsoxlab-social-preview-dark.png +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/assets/brand/png/dsoxlab-social-preview.png +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/brand.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/brand.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/catalog-author.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/catalog-author.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/commands.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/commands.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/contract-v1.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/contract-v1.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/demo.gif +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/demo.tape +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/exit-codes.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/exit-codes.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/files.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/files.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/infra-only.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/infra-only.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/learner.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/learner.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/machine-output.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/machine-output.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/trainer.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/docs/trainer.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/context_json/champ-inconnu.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/context_json/complet.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/context_json/position-negative.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/context_json/position-non-numerique.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/context_json/racine-chaine.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/context_json/racine-liste.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/context_json/racine-nulle.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/context_json/section-liste.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/context_json/tronque.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/context_json/vide.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/lab_yaml/capstone-exam-score.yaml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/lab_yaml/schema-version-courante.yaml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/lab_yaml/schema-version-future.yaml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/lab_yaml/schema-version-mauvais-type.yaml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/lab_yaml/shell-fixtures-nested.yaml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/lab_yaml/shell-minimal.yaml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/lab_yaml/shell-services-init.yaml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/lab_yaml/shell-services.yaml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/lab_yaml/vm-multi-target.yaml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/lab_yaml/vm-snapshot-requis.yaml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/meta_yml/full-infra.yml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/meta_yml/schema-version-courante.yml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/meta_yml/schema-version-future.yml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/terraform_outputs/avec-bastion.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/terraform_outputs/bastion-sans-ip.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/terraform_outputs/hosts-liste.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/terraform_outputs/ip-numerique.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/terraform_outputs/outputs-aplatis.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/terraform_outputs/outputs-encapsules.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/terraform_outputs/sans-hosts.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/terraform_outputs/value-non-objet.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/corpus/terraform_outputs/vide.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/dict/yaml_contract.dict +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/fuzz_context_json.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/fuzz_lab_yaml.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/fuzz_meta_yaml.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/fuzz/fuzz_terraform_outputs.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/packer/README.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/packer/dsoxlab-appliance.pkr.hcl +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/packer/faire-ova.sh +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/packer/http/preseed.cfg +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/packer/scripts/10-base.sh +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/packer/scripts/20-outils.sh +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/packer/scripts/30-premier-demarrage.sh +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/packer/scripts/40-reseau-portable.sh +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/packer/scripts/90-nettoyage.sh +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/schemas/lab.schema.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/schemas/meta.schema.json +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/scripts/check-release.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/scripts/generer-doc.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/scripts/generer-png-marque.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/scripts/parcours-distribution.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/__init__.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/__init__.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/_amorcage.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/_barres.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/_commun.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/_socle.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/_validation.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/auteur.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/catalogues.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/contexte.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/demarrage.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/destruction.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/diagnostic.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/etat.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/indices.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/infrastructure.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/instructeur.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/parcours.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/cli/progression.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/config.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/discovery/__init__.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/discovery/repo.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/discovery/scanner.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/exit_codes.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/i18n/__init__.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/i18n/strings/__init__.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/i18n/strings/en.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/i18n/strings/fr.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/infra/__init__.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/infra/ansible.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/infra/credentials.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/infra/inventory.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/infra/libvirt.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/infra/pont.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/infra/snapshot/__init__.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/infra/snapshot/kvm.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/infra/terraform.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/interrupt.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/locking.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/logging_setup.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/models/__init__.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/models/_contract.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/models/course.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/models/hint.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/models/lab.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/models/repo.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/models/runtime.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/models/schema_version.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/py.typed +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/reporting/__init__.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/reporting/console.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/reporting/machine.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/runtimes/__init__.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/runtimes/base.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/runtimes/manager.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/runtimes/services.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/runtimes/shell.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/runtimes/vm.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/services/__init__.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/services/catalog.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/services/demo.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/services/doctor.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/services/guide_service.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/services/host_diagnosis.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/services/issue_service.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/services/lab_service.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/services/lab_state.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/services/progress_service.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/services/scaffold.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/services/support.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/services/update_check.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/sessions/__init__.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/sessions/store.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/__init__.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/catalogues.yml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/cloud-init/README.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/cloud-init/almalinux.yaml.tmpl +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/cloud-init/debian.yaml.tmpl +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/cloud-init/ubuntu.yaml.tmpl +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/demo/labs/demo/premiers-pas/README.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/demo/labs/demo/premiers-pas/README.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/demo/labs/demo/premiers-pas/challenge/README.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/demo/labs/demo/premiers-pas/challenge/README.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/demo/labs/demo/premiers-pas/challenge/hints.yaml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/demo/labs/demo/premiers-pas/challenge/tests/conftest.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/demo/labs/demo/premiers-pas/challenge/tests/test_functional.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/demo/labs/demo/premiers-pas/lab.fr.yaml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/demo/labs/demo/premiers-pas/lab.yaml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/demo/labs/demo/premiers-pas/scenario.fr.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/demo/labs/demo/premiers-pas/scenario.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/demo/meta.fr.yml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/demo/meta.yml +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/terraform/README.md +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/terraform/incus/main.tf +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/terraform/incus/outputs.tf +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/terraform/incus/variables.tf +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/terraform/incus/versions.tf +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/terraform/kvm/main.tf +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/terraform/kvm/outputs.tf +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/terraform/kvm/variables.tf +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/terraform/kvm/versions.tf +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/terraform/outscale/main.tf +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/terraform/outscale/outputs.tf +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/terraform/outscale/variables.tf +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/templates/terraform/outscale/versions.tf +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/utils/__init__.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/utils/fichiers.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/utils/shell.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/validators/__init__.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/validators/content.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/validators/contract.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/validators/metadata.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/src/dsoxlab/validators/structure.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/__init__.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/conftest.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_ansible_availability.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_catalog.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_check_release.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_ci_valide_les_templates.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_cles_i18n_existantes.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_cli_smoke.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_cloud_init_degrade.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_cloud_init_incus_agent.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_cloud_init_templates.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_codes_de_sortie.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_commande_absente.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_completion.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_conteneurs_engendres.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_contrat_honore.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_convention_de_nommage.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_demo.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_description_alignee.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_doc_auteur_couvre_les_controles.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_doctor.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_doctor_explique.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_doctor_fix.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_doctor_installation.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_doctor_prerequis_vm.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_doctor_strict.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_documentation_synchrone.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_etat_libvirt.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_executable_absent.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_fixtures_declarees.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_guide_service.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_host_ready_timeout.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_i18n_coverage.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_i18n_validators.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_incus_pool.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_install_et_contexte.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_instructor_bootstrap.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_interruption.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_issue_service.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_journal_en_anglais.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_journalisation.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_json_output.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_json_schemas.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_kvm_disques_apparmor.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_lab_state.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_moteur_injoignable.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_nom_de_pont.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_note_sans_mesure.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_outputs_terraform.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_pager.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_parcours_distribution.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_progress_service.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_provision_ciblee.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_provision_et_json_services.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_repertoire_de_travail_annonce.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_scaffold.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_schema_version.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_schemas_sur_documents.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_services.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_session_spec.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_shell_fixtures.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_snapshot_kvm.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_sondes_des_tests_docker.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_sondes_virsh.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_stack_infra.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_start_sequence.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_support.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_support_en_anglais.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_update_check.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_validator_voit_tout.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_validators_content.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_verrou_depot.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_versions_supportees.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests/test_yaml_contract.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests_e2e/conftest.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests_e2e/pytest.ini +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests_e2e/test_boite_noire.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests_e2e/test_installation.py +0 -0
- {dsoxlab-0.2.3 → dsoxlab-0.2.4}/tests_e2e/test_parcours.py +0 -0
|
@@ -110,9 +110,15 @@ jobs:
|
|
|
110
110
|
# this workflow died on exactly that, four hundredths of a second in —
|
|
111
111
|
# a defect no local build could show, since the directory exists and is
|
|
112
112
|
# writable on a developer's machine.
|
|
113
|
+
#
|
|
114
|
+
# `out/` is deliberately NOT created: Packer refuses to start when its
|
|
115
|
+
# output directory already exists ("It must not exist"), which is how
|
|
116
|
+
# it guarantees it never writes over a previous build. Creating it here
|
|
117
|
+
# traded one failure for another, one step later — measured on the
|
|
118
|
+
# second real run.
|
|
113
119
|
run: |
|
|
114
120
|
set -euo pipefail
|
|
115
|
-
sudo mkdir -p "${BUILD_DIR}/
|
|
121
|
+
sudo mkdir -p "${BUILD_DIR}/tmp"
|
|
116
122
|
sudo chown -R "$(id -u):$(id -g)" "${BUILD_DIR}"
|
|
117
123
|
df -h "${BUILD_DIR}"
|
|
118
124
|
|
|
@@ -9,6 +9,21 @@ et le projet suit le [versionnage sémantique](https://semver.org/lang/fr/).
|
|
|
9
9
|
|
|
10
10
|
## [Non publié]
|
|
11
11
|
|
|
12
|
+
## [0.2.4] - 2026-09-26
|
|
13
|
+
|
|
14
|
+
### Corrigé
|
|
15
|
+
|
|
16
|
+
- **Le build de l'appliance a avancé d'une étape, et s'est arrêté sur la
|
|
17
|
+
précédente.** `/mnt` étant enfin accessible en écriture, c'est Packer qui a
|
|
18
|
+
refusé de démarrer : *Output directory '/mnt/appliance/out' already exists.
|
|
19
|
+
It must not exist.* Ce refus est une qualité — c'est ainsi que Packer
|
|
20
|
+
garantit qu'il n'écrase jamais un build précédent — et l'étape de
|
|
21
|
+
préparation créait précisément ce répertoire. Elle ne crée plus que le
|
|
22
|
+
parent et le répertoire temporaire, et laisse `out/` à Packer. Deux échecs
|
|
23
|
+
de suite au même endroit disent quelque chose qu'il vaut la peine de
|
|
24
|
+
retenir : un workflow qui n'a jamais tourné est un workflow qui ne marche
|
|
25
|
+
pas, et le seul moyen de le savoir est de le jouer.
|
|
26
|
+
|
|
12
27
|
## [0.2.3] - 2026-09-26
|
|
13
28
|
|
|
14
29
|
### Corrigé
|
|
@@ -9,6 +9,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
+
## [0.2.4] - 2026-09-26
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- **The appliance build got one step further, and stopped on the step before.**
|
|
17
|
+
With `/mnt` finally writable, Packer refused to start: *Output directory
|
|
18
|
+
'/mnt/appliance/out' already exists. It must not exist.* That refusal is a
|
|
19
|
+
feature — it is how Packer guarantees it never writes over a previous
|
|
20
|
+
build — and the preparation step was creating that very directory. It now
|
|
21
|
+
creates only the parent and the temporary directory, and leaves `out/` to
|
|
22
|
+
Packer. Two failures in a row at the same place say something worth keeping:
|
|
23
|
+
a workflow that has never run is a workflow that does not work, and the only
|
|
24
|
+
way to know is to run it.
|
|
25
|
+
|
|
12
26
|
## [0.2.3] - 2026-09-26
|
|
13
27
|
|
|
14
28
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: dsoxlab
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.4
|
|
4
4
|
Summary: Turn declarative exercises into reproducible, runnable and verifiable lab environments
|
|
5
5
|
Project-URL: Homepage, https://blog.stephane-robert.info/
|
|
6
6
|
Project-URL: Documentation, https://github.com/stephrobert/dsoxlab/blob/main/docs/README.md
|
|
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
|
|
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
|