htpolynet 2.11.1__tar.gz → 2.11.2__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.
- {htpolynet-2.11.1 → htpolynet-2.11.2}/CHANGELOG.md +18 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/PKG-INFO +1 -1
- {htpolynet-2.11.1 → htpolynet-2.11.2}/ROADMAP.md +18 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/pyproject.toml +1 -1
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/cure/ringcontroller.py +60 -4
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_ringcontroller.py +88 -1
- {htpolynet-2.11.1 → htpolynet-2.11.2}/.claude/settings.json +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/.claude/skills/htpolynet/SKILL.md +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/.envrc +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/.github/workflows/conda-forge-sync.yml +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/.github/workflows/docker.yml +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/.github/workflows/docs.yml +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/.github/workflows/release.yaml +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/.github/workflows/test.yml +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/.gitignore +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/.readthedocs.yaml +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/CITATION.cff +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/CLAUDE.md +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/LICENSE +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/MANIFEST.in +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/README.md +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docker/Dockerfile +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docker/compose.yml +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docker/docker-entrypoint.sh +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/Makefile +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/README.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/make.bat +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/requirements.txt +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/_static/.gitkeep +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/_static/htpolynet-favicon.ico +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/_static/htpolynet-landing.jpg +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/_static/htpolynet-logo-dark.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/_static/htpolynet-logo-light.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/changelog.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/conf.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/0-liquid-styrene/configuration.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/0-liquid-styrene/index.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/0-liquid-styrene/introduction.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/0-liquid-styrene/monomer.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/0-liquid-styrene/postsim.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/0-liquid-styrene/results.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/0-liquid-styrene/run.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/configuration.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/index.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/introduction.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/monomer.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/STY.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/STYCC.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/buildtraces.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/cure_info.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/densification-density.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/final-box.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/reaction_network.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/sty-coloring.tcl +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/sty-cured.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/sty-detail.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/sty-liq.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/styrene-polymerization.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/postsim.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/reactions.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/results.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/run.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/configuration.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/index.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/introduction.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/BPA.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/GMA.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/HIE.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/buildtraces.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/cure_info.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/densification-density.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.eps +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.fig +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/four_dimers.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-coloring.tcl +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-cured.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-detail.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/gma-sty-liq.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/p1-traces.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/reaction_network.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.eps +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.fig +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/pics/vesys.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/postsim.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/reactions.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/results.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/2-bisgma-styrene-thermoset/run.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/configuration.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/index.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/introduction.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/monomers.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/DGE-epoxy.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/DGE-labelled.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/PAC-2d.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/PAC-labelled.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/buildtraces.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/cure_info.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/densification-density.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-coloring.tcl +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-cured.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-detail.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dge-pac-liq.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.eps +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.fig +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/dgesys.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/equil-rho_v_ns.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/postsim-typical.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-e.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-equil-rho_v_ns.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-rho_v_ns.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/prod-tg.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r1.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r2.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/r3.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/reaction_network.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/rho_v_ns.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/short-e.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/pics/short-tg.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/postsim.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/reactions.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/results.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/3-pacm-dgeba-epoxy-thermoset/run.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/configuration.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/index.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/introduction.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/monomers.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/buildtraces.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/cure_info.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/densification-density.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-coloring.tcl +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-cured.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-detail.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/dfa-fde-liq.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/pics/reaction_network.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/postsim.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/reactions.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/results.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/4-dfda-fde-epoxy-thermoset/run.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/5-htpb-ipdi/configuration.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/5-htpb-ipdi/index.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/5-htpb-ipdi/introduction.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/5-htpb-ipdi/monomers.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/5-htpb-ipdi/pics/buildtraces.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/5-htpb-ipdi/pics/cure_info.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/5-htpb-ipdi/pics/densification-density.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-coloring.tcl +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-cured.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-detail.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/5-htpb-ipdi/pics/htpb-ipdi-liq.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/5-htpb-ipdi/pics/reaction_network.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/5-htpb-ipdi/postsim.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/5-htpb-ipdi/reactions.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/5-htpb-ipdi/results.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/5-htpb-ipdi/run.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/6-cyanate-ester/configuration.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/6-cyanate-ester/index.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/6-cyanate-ester/introduction.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/6-cyanate-ester/monomers.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-coloring.tcl +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-cured.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-detail.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/6-cyanate-ester/pics/badcy-liq.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/6-cyanate-ester/pics/buildtraces.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/6-cyanate-ester/pics/cure_info.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/6-cyanate-ester/pics/densification-density.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/6-cyanate-ester/pics/reaction_network.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/6-cyanate-ester/postsim.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/6-cyanate-ester/reactions.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/6-cyanate-ester/results.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/6-cyanate-ester/run.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/index.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/htpolynetpackage.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/index.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/install.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/references/index.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/references/mol2-reference.pdf +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/references.bib +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/CURE.odg +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/bond_filter.odg +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/building-a-system.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/configs/configs-for-analyze.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/configs/configs-for-postsim.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/configs/configs-for-run.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/configuration-files.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/container-usage.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/flow1.odg +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/flow1yaml.odg +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/hydrogenated.eps +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/hydrogenated.fig +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/index.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/molecular-structure-inputs.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/periodic-networks.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/pics/STY.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/pics/STYCC.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/pics/TypicalUsageFlow.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/pics/bond_filter.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/pics/chemdoodle-2dsketcher-emb.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/pics/chemdoodle-2dsketcher-styrene.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/pics/hydrogenated.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/pics/ring_pierce/ring_pierce_cases.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/pics/ring_pierce/ring_pierce_linkcell.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/postcure-repair.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/program-flow.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/user-guide/usage.rst +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/scripts/check-conda-sync.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/scripts/release.sh +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/scripts/render-detail.sh +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/scripts/render-detail.tcl +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/scripts/render-snapshot.sh +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/scripts/run_all_examples.sh +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/__init__.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/analysis/__init__.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/analysis/analyze.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/analysis/plot.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/analysis/postsim.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/analysis/utils.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/cli.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/core/__init__.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/core/bondtemplate.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/core/configuration.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/core/coordinates.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/core/molecule.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/core/paramcache.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/core/productsplice.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/core/projectfilesystem.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/core/runtime.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/core/topocoord.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/core/topology.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/cure/__init__.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/cure/chain.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/cure/curecontroller.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/cure/expandreactions.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/cure/reaction.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/cure/triplesearch.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/external/__init__.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/external/ambertools.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/external/command.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/external/gromacs.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/external/slurm.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/external/smiles_input.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/external/software.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/geometry/__init__.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/geometry/bondlist.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/geometry/lattice.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/geometry/linkcell.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/geometry/matrix4.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/geometry/placement.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/geometry/ring.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/geometry/templategeom.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/io/__init__.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/io/gro.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/io/mol2.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/io/pdb.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/repair/__init__.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/repair/cyanate_cap.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/repair/topology_surgery.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/README.md +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/__init__.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/claude/SKILL.md +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/example_depot/0-liquid-styrene.yaml +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/example_depot/1-polystyrene.yaml +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/example_depot/2-bisgma-styrene-thermoset.yaml +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/example_depot/3-pacm-dgeba-epoxy-thermoset.yaml +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/example_depot/4-dfda-fde-epoxy-thermoset.yaml +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/example_depot/5-htpb-ipdi.yaml +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/example_depot/6-cyanate-ester.yaml +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/mdp/README.md +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/mdp/drag-min.mdp +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/mdp/drag-npt.mdp +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/mdp/drag-nvt.mdp +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/mdp/min.mdp +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/mdp/npt.mdp +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/mdp/nvt.mdp +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/mdp/relax-min.mdp +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/mdp/relax-npt.mdp +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/mdp/relax-nvt.mdp +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/mdp/single-molecule-min.mdp +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/mdp/single-molecule-nvt.mdp +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/inputs/DFA.pdb +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/inputs/DGE.mol2 +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/inputs/EMB.mol2 +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/inputs/FDE.pdb +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/inputs/GMA.mol2 +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/inputs/PAC.mol2 +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/inputs/STY.mol2 +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/make-monomers.sh +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/pics/DFA.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/pics/DGE.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/pics/EMB.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/pics/FDE.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/pics/GMA.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/pics/PAC.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/pics/STY.png +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/sample-inputs/DFA.pdb +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/sample-inputs/DGE.mol2 +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/sample-inputs/EMB.mol2 +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/sample-inputs/FDE.pdb +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/sample-inputs/GMA.mol2 +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/sample-inputs/PAC.mol2 +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/molecules/sample-inputs/STY.mol2 +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/tcl/readbonds.tcl +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/tcl/readgrx.tcl +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/resources/tcl/render.tcl +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/schema/base.yaml +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/utils/__init__.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/utils/banner.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/utils/checkpoint.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/utils/convergence.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/utils/dataframetools.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/utils/inputcheck.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/utils/logsetup.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/utils/profiling.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/utils/stringthings.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/src/htpolynet/utils/vmd_viz.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/__init__.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/conftest.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/__init__.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/fixtures/config1.gro +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/fixtures/config1.top +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/fixtures/config2.gro +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/fixtures/config2.top +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/fixtures/items31.edr +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/fixtures/items43.edr +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/fixtures/items45.edr +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/fixtures/short.mdp +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_bondtemplate.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_cap_placement.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_chain.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_completion_bias.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_conda_sync.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_configuration.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_convergence.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_cure_site_functionality.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_dataframetools.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_density_gate.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_gpu_usability.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_gromacs_get_energy_menu.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_gromacs_gmx_energy_trace.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_inputcheck.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_linkcell_pierce.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_mdrun_gpu_options.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_mol2_bond_fallback.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_molecule_charge_report.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_moleculetype_name.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_multibody_reactions.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_paramcache.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_paramcache_ambertools.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_parameterize_react.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_placement_and_ringclose.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_plot_smoke.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_productsplice.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_projectfilesystem.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_relax_instrumentation.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_repair_charge_neutrality.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_repair_conversion.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_resources.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_ring.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_ring_pierce_figs.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_setup_claude.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_sibling_templates.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_slurm_script.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_smiles_input.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_software_provenance.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_templategeom.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_topology/test.top +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_topology.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_transrot_turn_scan.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_triplesearch.py +0 -0
- {htpolynet-2.11.1 → htpolynet-2.11.2}/tests/unit/test_user_frcmod.py +0 -0
|
@@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.11.2] - 2026-09-23
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **A ring cure near its target kept re-proposing the triples it had just declined.**
|
|
15
|
+
Declining a ring that the closure ladder could not pull shut leaves its three groups
|
|
16
|
+
unreacted, which is the point -- but the next search then offered the same groups,
|
|
17
|
+
ran the same eight-stage ladder, and declined them again. htpolynet-study measured
|
|
18
|
+
the cost on a 2.11.1 build: at conversion 0.97 with 24 groups left, nine iterations
|
|
19
|
+
running produced 77 declines and not one ring, at about 67 s each.
|
|
20
|
+
|
|
21
|
+
A declined combination is now passed over while any untried ring is within the search
|
|
22
|
+
radius. It is a preference and not a prohibition: that cure escaped on iteration 41
|
|
23
|
+
and finished at 0.971, because the relaxation between iterations moves the groups, so
|
|
24
|
+
a triple that failed once can still close later. When the memory is the only thing
|
|
25
|
+
left keeping an iteration idle, the search lifts it and offers those rings again
|
|
26
|
+
rather than stand still.
|
|
27
|
+
|
|
10
28
|
## [2.11.1] - 2026-09-22
|
|
11
29
|
|
|
12
30
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: htpolynet
|
|
3
|
-
Version: 2.11.
|
|
3
|
+
Version: 2.11.2
|
|
4
4
|
Summary: Automated MD System Builder for Amorphous Network Polymers
|
|
5
5
|
Project-URL: Source, https://github.com/cameronabrams/htpolynet
|
|
6
6
|
Project-URL: Documentation, https://htpolynet.readthedocs.io/
|
|
@@ -199,6 +199,24 @@ Coverage as of the last measurement: **38.8%** overall.
|
|
|
199
199
|
|
|
200
200
|
## Cure and repair
|
|
201
201
|
|
|
202
|
+
- **A ring cure that stalls near its target has no exit but `max_iterations`.**
|
|
203
|
+
Reported by htpolynet-study 2026-09-23 from a 2.11.1 build: at conversion 0.97
|
|
204
|
+
with 24 groups left, nine iterations running (32-40) produced 77 declines and no
|
|
205
|
+
ring, about 67 s apiece. 2.11.1 now skips a triple it has already failed to
|
|
206
|
+
close, which removes most of that cost, but a cure with nothing closable left
|
|
207
|
+
still runs to `max_iterations` rather than stopping.
|
|
208
|
+
|
|
209
|
+
The obvious fix -- stop after N consecutive iterations that close nothing -- was
|
|
210
|
+
deliberately not taken, and the reason is worth keeping. That build escaped on
|
|
211
|
+
iteration 41 and finished at 0.971, and it was the one of four that survived the
|
|
212
|
+
study's postcure anneal. Any N below 9 would have ended it early. A stall is
|
|
213
|
+
not evidence that a cure is finished: the inter-iteration relaxation keeps moving
|
|
214
|
+
the groups, so the escape is real and can be a long time coming.
|
|
215
|
+
|
|
216
|
+
If this is revisited, the test should be something that distinguishes "nothing is
|
|
217
|
+
closable" from "nothing closed this time" -- the trend in the ladder's final
|
|
218
|
+
distances across the stalled run, say, rather than a count of iterations.
|
|
219
|
+
|
|
202
220
|
- **Filtering candidate crosslinks against disallowed topologies, and what that means
|
|
203
221
|
for cyanate esters.** Raised by Cameron 2026-09-21, who asked the right question:
|
|
204
222
|
can "physically disallowable" even be defined for these systems? Partly. Three
|
|
@@ -33,6 +33,21 @@ from ..repair.topology_surgery import neutralize_touched_fragments
|
|
|
33
33
|
logger = logging.getLogger(__name__)
|
|
34
34
|
|
|
35
35
|
|
|
36
|
+
def _triple_key(donors):
|
|
37
|
+
"""A ring's identity, in terms that survive from one iteration to the next.
|
|
38
|
+
|
|
39
|
+
A triple is held as row numbers into the site table, and that table is rebuilt
|
|
40
|
+
every iteration and shrinks as groups react, so those numbers name a different
|
|
41
|
+
ring next time. The three donor atoms do not move: one per group, unique to it,
|
|
42
|
+
and fixed for the life of the system.
|
|
43
|
+
|
|
44
|
+
The two ring orientations deliberately share a key. :func:`candidate_triples`
|
|
45
|
+
scores both and keeps the better one, so the orientation that was declined is the
|
|
46
|
+
better one, and the other would have farther to go.
|
|
47
|
+
"""
|
|
48
|
+
return frozenset(int(d) for d in donors)
|
|
49
|
+
|
|
50
|
+
|
|
36
51
|
class RingCureState:
|
|
37
52
|
"""How far a ring cure has got, and enough to resume it."""
|
|
38
53
|
|
|
@@ -93,6 +108,7 @@ class RingController:
|
|
|
93
108
|
self.dicts = d
|
|
94
109
|
self.state = state or RingCureState()
|
|
95
110
|
self.rings_df = None
|
|
111
|
+
self.declined = set()
|
|
96
112
|
|
|
97
113
|
# ---- what the loop decides, all of it testable without MD ----
|
|
98
114
|
|
|
@@ -172,16 +188,49 @@ class RingController:
|
|
|
172
188
|
cands = candidate_triples(sites, positions, self.radius, box,
|
|
173
189
|
same_molecule=self.dicts['same_molecule'],
|
|
174
190
|
same_residue=self.dicts['same_residue'])
|
|
175
|
-
|
|
191
|
+
allowed = self._drop_declined(cands, sites)
|
|
192
|
+
chosen = select_disjoint(allowed, max_triples=self.dicts['max_rings_per_iteration'])
|
|
193
|
+
passed = len(cands) - len(allowed)
|
|
176
194
|
logger.info(f'Iteration {self.state.iter}: {len(sites)} unreacted group(s), '
|
|
177
|
-
f'{len(cands)} candidate ring(s) within {self.radius:.3f} nm
|
|
178
|
-
f'{
|
|
195
|
+
f'{len(cands)} candidate ring(s) within {self.radius:.3f} nm'
|
|
196
|
+
+ (f' ({passed} passed over as already failed)' if passed else '')
|
|
197
|
+
+ f', {len(chosen)} accepted')
|
|
179
198
|
if len(chosen) >= floor or self.radius >= self.dicts['max_radius']:
|
|
199
|
+
if not chosen and cands and self.declined:
|
|
200
|
+
# the memory is now the only thing keeping this iteration idle, and
|
|
201
|
+
# the groups have moved since they were declined; try them again
|
|
202
|
+
logger.info(f'Iteration {self.state.iter}: every ring in reach has '
|
|
203
|
+
f'failed before; forgetting {len(self.declined)} of them '
|
|
204
|
+
f'and offering them again')
|
|
205
|
+
self.declined.clear()
|
|
206
|
+
chosen = select_disjoint(cands,
|
|
207
|
+
max_triples=self.dicts['max_rings_per_iteration'])
|
|
180
208
|
return sites, chosen
|
|
181
209
|
self.state.radius_index += 1
|
|
182
210
|
logger.info(f'Radius increased to {self.radius:.3f} nm '
|
|
183
211
|
f'({len(chosen)}/{floor} ring(s) so far)')
|
|
184
212
|
|
|
213
|
+
def _drop_declined(self, cands, sites):
|
|
214
|
+
"""Passes over the triples this cure has already failed to pull shut.
|
|
215
|
+
|
|
216
|
+
A declined ring leaves its three groups unreacted by design, and the next search
|
|
217
|
+
offers them again -- so a rigid endgame proposes the same triples, runs the same
|
|
218
|
+
closure ladder, and declines them again. Measured at conversion 0.97 with 24
|
|
219
|
+
groups left: nine iterations running, 77 declines, about 67 s apiece, before one
|
|
220
|
+
triple finally closed and the cure finished at 0.971.
|
|
221
|
+
|
|
222
|
+
A preference, not a prohibition, because the geometry between one decline and the
|
|
223
|
+
next search is not identical -- the inter-iteration relaxation moves the groups,
|
|
224
|
+
which is how that cure escaped. Skipping a triple saves a ladder that would
|
|
225
|
+
almost certainly fail; refusing it outright would have ended that cure three
|
|
226
|
+
iterations early. :meth:`search` therefore lifts the whole memory rather than
|
|
227
|
+
come back empty-handed.
|
|
228
|
+
"""
|
|
229
|
+
if not self.declined:
|
|
230
|
+
return cands
|
|
231
|
+
return [c for c in cands
|
|
232
|
+
if _triple_key(sites.at[a, 'donor'] for a in c[1]) not in self.declined]
|
|
233
|
+
|
|
185
234
|
def record(self, chosen):
|
|
186
235
|
"""Counts the rings formed and the groups they consumed."""
|
|
187
236
|
self.state.rings += len(chosen)
|
|
@@ -244,6 +293,11 @@ class RingController:
|
|
|
244
293
|
next iteration, by which time the neighbourhood has moved; only if they can never
|
|
245
294
|
close does the cure lose them, which is the right outcome.
|
|
246
295
|
|
|
296
|
+
The combination itself is recorded for :meth:`_drop_declined`, which prefers not
|
|
297
|
+
to spend another ladder on it while any untried ring is in reach. That is what
|
|
298
|
+
a rigid endgame otherwise does: nine iterations running, 77 declines, the same
|
|
299
|
+
few triples every time.
|
|
300
|
+
|
|
247
301
|
Args:
|
|
248
302
|
bdf (pandas.DataFrame): this iteration's bonds, three rows per ring
|
|
249
303
|
work (pandas.DataFrame): the same pairs with their final distances
|
|
@@ -261,9 +315,11 @@ class RingController:
|
|
|
261
315
|
return bdf, chosen
|
|
262
316
|
for n in range(len(chosen)):
|
|
263
317
|
if n not in keep:
|
|
318
|
+
self.declined.add(_triple_key(bdf[bdf['triple'] == n]['ai']))
|
|
264
319
|
logger.info(f'Iteration {self.state.iter}: declining a ring still '
|
|
265
320
|
f'{worst[n]:.3f} nm from closing (limit {limit:.3f} nm); its '
|
|
266
|
-
f'groups stay unreacted and
|
|
321
|
+
f'groups stay unreacted, and this combination waits until '
|
|
322
|
+
f'nothing untried is in reach')
|
|
267
323
|
renumber = {old: new for new, old in enumerate(keep)}
|
|
268
324
|
bdf = bdf[bdf['triple'].isin(keep)].copy()
|
|
269
325
|
bdf['triple'] = [renumber[t] for t in bdf['triple']]
|
|
@@ -12,7 +12,7 @@ import unittest
|
|
|
12
12
|
import numpy as np
|
|
13
13
|
import pandas as pd
|
|
14
14
|
|
|
15
|
-
from htpolynet.cure.ringcontroller import RingController, RingCureState
|
|
15
|
+
from htpolynet.cure.ringcontroller import RingController, RingCureState, _triple_key
|
|
16
16
|
|
|
17
17
|
from .test_triplesearch import BOX, triangle
|
|
18
18
|
|
|
@@ -270,3 +270,90 @@ class TestDecliningRingsThatDidNotClose(unittest.TestCase):
|
|
|
270
270
|
bdf, work, chosen = self.bonds_and_work([0.9])
|
|
271
271
|
out_b, out_c = c.accept(bdf, work, chosen)
|
|
272
272
|
self.assertEqual(len(out_c), 1)
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
class TestATripleThatFailedIsNotTriedAgainWhileAnythingElseIsLeft(unittest.TestCase):
|
|
276
|
+
"""A declined ring leaves its groups unreacted, so the next search offered the same
|
|
277
|
+
triples, ran the same ladder and declined them again: nine iterations running at
|
|
278
|
+
conversion 0.97, 77 declines, before one finally closed and the cure finished at
|
|
279
|
+
0.971. The memory skips them; it does not forbid them, because that cure escaped
|
|
280
|
+
only because the geometry between iterations had moved."""
|
|
281
|
+
|
|
282
|
+
def bonds_and_work(self, worsts, donors=None):
|
|
283
|
+
"""One ring per entry in `worsts`; `donors` gives each ring's three donor atoms."""
|
|
284
|
+
rows, final = [], []
|
|
285
|
+
for n, w in enumerate(worsts):
|
|
286
|
+
d = donors[n] if donors else [10 * n + k for k in range(3)]
|
|
287
|
+
for k in range(3):
|
|
288
|
+
rows.append({'ai': d[k], 'aj': 10 * n + k + 5, 'triple': n})
|
|
289
|
+
final.append(0.15 if k < 2 else w)
|
|
290
|
+
return (pd.DataFrame(rows),
|
|
291
|
+
pd.DataFrame({'final_distance': final}),
|
|
292
|
+
[object() for _ in worsts])
|
|
293
|
+
|
|
294
|
+
def two_triangles(self):
|
|
295
|
+
"""Two rings far enough apart to be independent, and a controller that sees both."""
|
|
296
|
+
a1, p1 = triangle(side=0.2, resnums=(1, 2, 3), molecules=(1, 2, 3))
|
|
297
|
+
a2, p2 = triangle(side=0.2, resnums=(4, 5, 6), molecules=(4, 5, 6))
|
|
298
|
+
a2 = a2.copy()
|
|
299
|
+
a2['globalIdx'] += 100
|
|
300
|
+
p2 = {k + 100: v + np.array([2.0, 0.0, 0.0]) for k, v in p2.items()}
|
|
301
|
+
c = RingController({'search_radius': 0.6})
|
|
302
|
+
c.setup(total_groups=6, max_radius=1.0)
|
|
303
|
+
return c, pd.concat([a1, a2], ignore_index=True), {**p1, **p2}
|
|
304
|
+
|
|
305
|
+
def test_a_declined_ring_is_remembered_by_its_donor_atoms(self):
|
|
306
|
+
# row numbers into the site table name a different ring next iteration; the
|
|
307
|
+
# donors do not move
|
|
308
|
+
c = RingController({})
|
|
309
|
+
bdf, work, chosen = self.bonds_and_work([0.40], donors=[[7, 21, 34]])
|
|
310
|
+
with self.assertLogs(LOG, level='INFO'):
|
|
311
|
+
c.accept(bdf, work, chosen)
|
|
312
|
+
self.assertEqual(c.declined, {_triple_key([34, 7, 21])})
|
|
313
|
+
|
|
314
|
+
def test_a_ring_that_closed_is_not_remembered(self):
|
|
315
|
+
c = RingController({})
|
|
316
|
+
bdf, work, chosen = self.bonds_and_work([0.22])
|
|
317
|
+
c.accept(bdf, work, chosen)
|
|
318
|
+
self.assertEqual(c.declined, set())
|
|
319
|
+
|
|
320
|
+
def test_the_search_takes_the_other_ring_instead(self):
|
|
321
|
+
c, adf, pos = self.two_triangles()
|
|
322
|
+
with self.assertLogs(LOG, level='INFO'):
|
|
323
|
+
sites, chosen = c.search(adf, pos, BOX, 'BCY', (('N1', 'C1'),))
|
|
324
|
+
self.assertEqual(len(chosen), 2)
|
|
325
|
+
first = _triple_key(sites.at[a, 'donor'] for a in chosen[0][1])
|
|
326
|
+
c.declined.add(first)
|
|
327
|
+
with self.assertLogs(LOG, level='INFO') as cm:
|
|
328
|
+
sites, chosen = c.search(adf, pos, BOX, 'BCY', (('N1', 'C1'),))
|
|
329
|
+
self.assertEqual(len(chosen), 1)
|
|
330
|
+
self.assertNotEqual(_triple_key(sites.at[a, 'donor'] for a in chosen[0][1]), first)
|
|
331
|
+
self.assertIn('1 passed over as already failed', '\n'.join(cm.output))
|
|
332
|
+
|
|
333
|
+
def test_it_is_lifted_rather_than_leave_the_iteration_idle(self):
|
|
334
|
+
# the relaxation between iterations moves the groups, so a triple that failed
|
|
335
|
+
# can still close later -- one did, at iteration 41, and it finished that cure
|
|
336
|
+
adf, pos = triangle(side=0.25)
|
|
337
|
+
c = RingController({'search_radius': 0.6})
|
|
338
|
+
c.setup(total_groups=3, max_radius=1.0)
|
|
339
|
+
with self.assertLogs(LOG, level='INFO'):
|
|
340
|
+
sites, chosen = c.search(adf, pos, BOX, 'BCY', (('N1', 'C1'),))
|
|
341
|
+
c.declined.add(_triple_key(sites['donor']))
|
|
342
|
+
with self.assertLogs(LOG, level='INFO') as cm:
|
|
343
|
+
_, chosen = c.search(adf, pos, BOX, 'BCY', (('N1', 'C1'),))
|
|
344
|
+
self.assertEqual(len(chosen), 1)
|
|
345
|
+
self.assertEqual(c.declined, set())
|
|
346
|
+
self.assertIn('offering them again', '\n'.join(cm.output))
|
|
347
|
+
|
|
348
|
+
def test_both_orientations_share_one_key(self):
|
|
349
|
+
# candidate_triples scores both and keeps the better, so the declined one is
|
|
350
|
+
# the better one and the other has farther to go
|
|
351
|
+
self.assertEqual(_triple_key([3, 1, 2]), _triple_key([1, 2, 3]))
|
|
352
|
+
|
|
353
|
+
def test_a_ring_exactly_at_the_limit_is_kept(self):
|
|
354
|
+
# the log rounds to three decimals, so a decline reported at the limit was over it
|
|
355
|
+
c = RingController({'closure': {'max_accept': 0.30}})
|
|
356
|
+
bdf, work, chosen = self.bonds_and_work([0.30])
|
|
357
|
+
_, out_c = c.accept(bdf, work, chosen)
|
|
358
|
+
self.assertEqual(len(out_c), 1)
|
|
359
|
+
self.assertEqual(c.declined, set())
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/0-liquid-styrene/index.rst
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/0-liquid-styrene/monomer.rst
RENAMED
|
File without changes
|
{htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/0-liquid-styrene/postsim.rst
RENAMED
|
File without changes
|
{htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/0-liquid-styrene/results.rst
RENAMED
|
File without changes
|
{htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/0-liquid-styrene/run.rst
RENAMED
|
File without changes
|
{htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/configuration.rst
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/introduction.rst
RENAMED
|
File without changes
|
{htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/monomer.rst
RENAMED
|
File without changes
|
{htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/STY.png
RENAMED
|
File without changes
|
{htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/STYCC.png
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/cure_info.png
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/final-box.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/sty-cured.png
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/pics/sty-liq.png
RENAMED
|
File without changes
|
|
File without changes
|
{htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/postsim.rst
RENAMED
|
File without changes
|
{htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/reactions.rst
RENAMED
|
File without changes
|
{htpolynet-2.11.1 → htpolynet-2.11.2}/docs/source/example-tutorials/1-polystyrene/results.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
|