Full Code of uds-se/debuggingbook for AI

master 35dfb6c7a193 cached
1659 files
219.1 MB
26.3M tokens
2687 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (105,246K chars total). Download the full file to get everything.
Repository: uds-se/debuggingbook
Branch: master
Commit: 35dfb6c7a193
Files: 1659
Total size: 219.1 MB

Directory structure:
gitextract_q_0cca6b/

├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   └── workflows/
│       ├── check-code.yml
│       ├── check-imports.yml
│       ├── check-notebooks.yml
│       └── check-types.yml
├── .gitignore
├── .gitmodules
├── BADGES.md
├── CITATION.cff
├── Chapters.makefile
├── LICENSE.md
├── README.md
├── _config.yml
├── _static/
│   ├── custom.css
│   └── mastodon-timeline.css
├── _toc.yml
├── binder/
│   ├── Dockerfile
│   ├── README.md
│   ├── apt.txt
│   ├── environment.yml
│   ├── postBuild
│   ├── postBuild.template
│   └── requirements.txt
├── docs/
│   ├── .gitattributes
│   ├── .nojekyll
│   ├── 404.html
│   ├── CNAME
│   ├── beta/
│   │   ├── .buildinfo
│   │   ├── 01_Intro.html
│   │   ├── 02_Observing.html
│   │   ├── 02_Tracking.html
│   │   ├── 03_Dependencies.html
│   │   ├── 03_Inputs.html
│   │   ├── 03_Observing.html
│   │   ├── 04_Abstracting.html
│   │   ├── 04_Inputs.html
│   │   ├── 04_Reducing.html
│   │   ├── 05_Abstracting.html
│   │   ├── 05_Repairing.html
│   │   ├── 06_In_the_Large.html
│   │   ├── 06_Repairing.html
│   │   ├── 07_In_the_Large.html
│   │   ├── 404.html
│   │   ├── 99_Appendices.html
│   │   ├── Alhazen.html
│   │   ├── Assertions.html
│   │   ├── ChangeCounter.html
│   │   ├── ChangeDebugger.html
│   │   ├── ChangeExplorer.html
│   │   ├── ClassDiagram.html
│   │   ├── DDSetDebugger.html
│   │   ├── Debugger.html
│   │   ├── DeltaDebugger.html
│   │   ├── DynamicInvariants.html
│   │   ├── ExpectError.html
│   │   ├── Guide_for_Authors.html
│   │   ├── IllustratedCode.html
│   │   ├── Importing.html
│   │   ├── Intro_Debugging.html
│   │   ├── LICENSE.html
│   │   ├── PICS/
│   │   │   ├── Icons.key
│   │   │   └── debuggingbook.key
│   │   ├── PerformanceDebugger.html
│   │   ├── Project_of_your_choice.html
│   │   ├── README.html
│   │   ├── RailroadDiagrams.html
│   │   ├── Reducing_Code.html
│   │   ├── ReleaseNotes.html
│   │   ├── Repairer.html
│   │   ├── Repairing_Code.html
│   │   ├── Slicer.html
│   │   ├── StackInspector.html
│   │   ├── StatisticalDebugger.html
│   │   ├── Template.html
│   │   ├── ThreadDebugger.html
│   │   ├── Time_Travel_Debugger.html
│   │   ├── Timeout.html
│   │   ├── Timer.html
│   │   ├── Tours.html
│   │   ├── Tracer.html
│   │   ├── Tracking.html
│   │   ├── _downloads/
│   │   │   ├── 24f75eabab1fe4730ed764eb3a94b2a7/
│   │   │   │   └── Makefile
│   │   │   └── 2aa31cc0878caec6140b1808385cfc5d/
│   │   │       └── fuzzingbook.bib
│   │   ├── _sources/
│   │   │   ├── 01_Intro.ipynb
│   │   │   ├── 02_Observing.ipynb
│   │   │   ├── 02_Tracking.ipynb
│   │   │   ├── 03_Dependencies.ipynb
│   │   │   ├── 03_Inputs.ipynb
│   │   │   ├── 03_Observing.ipynb
│   │   │   ├── 04_Abstracting.ipynb
│   │   │   ├── 04_Inputs.ipynb
│   │   │   ├── 04_Reducing.ipynb
│   │   │   ├── 05_Abstracting.ipynb
│   │   │   ├── 05_Repairing.ipynb
│   │   │   ├── 06_In_the_Large.ipynb
│   │   │   ├── 06_Repairing.ipynb
│   │   │   ├── 07_In_the_Large.ipynb
│   │   │   ├── 404.ipynb
│   │   │   ├── 99_Appendices.ipynb
│   │   │   ├── Alhazen.ipynb
│   │   │   ├── Assertions.ipynb
│   │   │   ├── ChangeCounter.ipynb
│   │   │   ├── ChangeDebugger.ipynb
│   │   │   ├── ChangeExplorer.ipynb
│   │   │   ├── ClassDiagram.ipynb
│   │   │   ├── DDSetDebugger.ipynb
│   │   │   ├── Debugger.ipynb
│   │   │   ├── DeltaDebugger.ipynb
│   │   │   ├── DynamicInvariants.ipynb
│   │   │   ├── ExpectError.ipynb
│   │   │   ├── Guide_for_Authors.ipynb
│   │   │   ├── IllustratedCode.ipynb
│   │   │   ├── Importing.ipynb
│   │   │   ├── Intro_Debugging.ipynb
│   │   │   ├── LICENSE.md
│   │   │   ├── PerformanceDebugger.ipynb
│   │   │   ├── Project_of_your_choice.ipynb
│   │   │   ├── README.md
│   │   │   ├── RailroadDiagrams.ipynb
│   │   │   ├── Reducing_Code.ipynb
│   │   │   ├── ReleaseNotes.ipynb
│   │   │   ├── Repairer.ipynb
│   │   │   ├── Repairing_Code.ipynb
│   │   │   ├── Slicer.ipynb
│   │   │   ├── StackInspector.ipynb
│   │   │   ├── StatisticalDebugger.ipynb
│   │   │   ├── Template.ipynb
│   │   │   ├── ThreadDebugger.ipynb
│   │   │   ├── Time_Travel_Debugger.ipynb
│   │   │   ├── Timeout.ipynb
│   │   │   ├── Timer.ipynb
│   │   │   ├── Tours.ipynb
│   │   │   ├── Tracer.ipynb
│   │   │   ├── Tracking.ipynb
│   │   │   ├── bookutils/
│   │   │   │   └── README.md
│   │   │   └── index.ipynb
│   │   ├── _sphinx_design_static/
│   │   │   └── design-tabs.js
│   │   ├── _static/
│   │   │   ├── basic.css
│   │   │   ├── copybutton.css
│   │   │   ├── copybutton.js
│   │   │   ├── copybutton_funcs.js
│   │   │   ├── custom.css
│   │   │   ├── design-tabs.js
│   │   │   ├── doctools.js
│   │   │   ├── documentation_options.js
│   │   │   ├── language_data.js
│   │   │   ├── locales/
│   │   │   │   ├── ar/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── bg/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── bn/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ca/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── cs/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── da/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── de/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── el/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── eo/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── es/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── et/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── fi/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── fr/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── hr/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── id/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── it/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── iw/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ja/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ko/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── lt/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── lv/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ml/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── mr/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ms/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── nl/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── no/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── pl/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── pt/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ro/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ru/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── sk/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── sl/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── sr/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── sv/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ta/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── te/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── tg/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── th/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── tl/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── tr/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── uk/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ur/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── vi/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── zh_CN/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   └── zh_TW/
│   │   │   │       └── LC_MESSAGES/
│   │   │   │           ├── booktheme.mo
│   │   │   │           └── booktheme.po
│   │   │   ├── mastodon-timeline.css
│   │   │   ├── mystnb.8ecb98da25f57f5357bf6f572d296f466b2cfe2517ffebfabe82451661e28f02.css
│   │   │   ├── pygments.css
│   │   │   ├── sbt-webpack-macros.html
│   │   │   ├── scripts/
│   │   │   │   ├── bootstrap.js
│   │   │   │   ├── bootstrap.js.LICENSE.txt
│   │   │   │   ├── pydata-sphinx-theme.js
│   │   │   │   └── sphinx-book-theme.js
│   │   │   ├── searchtools.js
│   │   │   ├── sphinx-thebe.css
│   │   │   ├── sphinx-thebe.js
│   │   │   ├── sphinx_highlight.js
│   │   │   ├── styles/
│   │   │   │   ├── bootstrap.css
│   │   │   │   ├── pydata-sphinx-theme.css
│   │   │   │   ├── sphinx-book-theme.css
│   │   │   │   └── theme.css
│   │   │   ├── togglebutton.css
│   │   │   ├── togglebutton.js
│   │   │   ├── vendor/
│   │   │   │   └── fontawesome/
│   │   │   │       └── 6.5.2/
│   │   │   │           ├── LICENSE.txt
│   │   │   │           └── js/
│   │   │   │               └── all.min.js.LICENSE.txt
│   │   │   └── webpack-macros.html
│   │   ├── bookutils/
│   │   │   └── README.html
│   │   ├── code/
│   │   │   ├── 01_Intro.py
│   │   │   ├── 02_Observing.py
│   │   │   ├── 02_Tracking.py
│   │   │   ├── 03_Dependencies.py
│   │   │   ├── 03_Inputs.py
│   │   │   ├── 03_Observing.py
│   │   │   ├── 04_Abstracting.py
│   │   │   ├── 04_Inputs.py
│   │   │   ├── 04_Reducing.py
│   │   │   ├── 05_Abstracting.py
│   │   │   ├── 05_Repairing.py
│   │   │   ├── 06_In_the_Large.py
│   │   │   ├── 06_Repairing.py
│   │   │   ├── 07_In_the_Large.py
│   │   │   ├── 99_Appendices.py
│   │   │   ├── Alhazen.py
│   │   │   ├── Assertions.py
│   │   │   ├── ChangeCounter.py
│   │   │   ├── ChangeDebugger.py
│   │   │   ├── ChangeExplorer.py
│   │   │   ├── ClassDiagram.py
│   │   │   ├── DDSetDebugger.py
│   │   │   ├── Debugger.py
│   │   │   ├── DeltaDebugger.py
│   │   │   ├── DynamicInvariants.py
│   │   │   ├── ExpectError.py
│   │   │   ├── Intro_Debugging.py
│   │   │   ├── LICENSE.md
│   │   │   ├── PerformanceDebugger.py
│   │   │   ├── RailroadDiagrams.py
│   │   │   ├── Repairer.py
│   │   │   ├── Slicer.py
│   │   │   ├── StackInspector.py
│   │   │   ├── StatisticalDebugger.py
│   │   │   ├── ThreadDebugger.py
│   │   │   ├── Timeout.py
│   │   │   ├── Timer.py
│   │   │   ├── Tours.py
│   │   │   ├── Tracer.py
│   │   │   ├── Tracking.py
│   │   │   ├── __init__.py
│   │   │   └── bookutils/
│   │   │       ├── PrettyTable.py
│   │   │       ├── README.md
│   │   │       ├── __init__.py
│   │   │       ├── export_notebook_code.py
│   │   │       ├── import_notebooks.py
│   │   │       ├── set_fixed_seed.py
│   │   │       └── setup.py
│   │   ├── genindex.html
│   │   ├── html/
│   │   │   ├── .buildinfo
│   │   │   ├── 00_Index.html
│   │   │   ├── 00_Table_of_Contents.html
│   │   │   ├── 01_Intro.html
│   │   │   ├── 02_Observing.html
│   │   │   ├── 02_Tracking.html
│   │   │   ├── 03_Dependencies.html
│   │   │   ├── 03_Inputs.html
│   │   │   ├── 03_Observing.html
│   │   │   ├── 04_Abstracting.html
│   │   │   ├── 04_Inputs.html
│   │   │   ├── 04_Reducing.html
│   │   │   ├── 05_Abstracting.html
│   │   │   ├── 05_Repairing.html
│   │   │   ├── 06_In_the_Large.html
│   │   │   ├── 06_Repairing.html
│   │   │   ├── 07_In_the_Large.html
│   │   │   ├── 404.html
│   │   │   ├── 99_Appendices.html
│   │   │   ├── Alhazen.html
│   │   │   ├── Assertions.html
│   │   │   ├── ChangeCounter.html
│   │   │   ├── ChangeDebugger.html
│   │   │   ├── ChangeExplorer.html
│   │   │   ├── ClassDiagram.html
│   │   │   ├── DDSetDebugger.html
│   │   │   ├── Debugger.html
│   │   │   ├── DeltaDebugger.html
│   │   │   ├── DynamicInvariants.html
│   │   │   ├── ExpectError.html
│   │   │   ├── Guide_for_Authors.html
│   │   │   ├── IllustratedCode.html
│   │   │   ├── Importing.html
│   │   │   ├── Intro_Debugging.html
│   │   │   ├── LICENSE.html
│   │   │   ├── PerformanceDebugger.html
│   │   │   ├── Project_of_your_choice.html
│   │   │   ├── README.html
│   │   │   ├── RailroadDiagrams.html
│   │   │   ├── Reducing_Code.html
│   │   │   ├── ReleaseNotes.html
│   │   │   ├── Repairer.html
│   │   │   ├── Repairing_Code.html
│   │   │   ├── Slicer.html
│   │   │   ├── StackInspector.html
│   │   │   ├── StatisticalDebugger.html
│   │   │   ├── Template.html
│   │   │   ├── ThreadDebugger.html
│   │   │   ├── Time_Travel_Debugger.html
│   │   │   ├── Timeout.html
│   │   │   ├── Timer.html
│   │   │   ├── Tours.html
│   │   │   ├── Tracer.html
│   │   │   ├── Tracking.html
│   │   │   ├── _downloads/
│   │   │   │   ├── 24f75eabab1fe4730ed764eb3a94b2a7/
│   │   │   │   │   └── Makefile
│   │   │   │   └── 2aa31cc0878caec6140b1808385cfc5d/
│   │   │   │       └── fuzzingbook.bib
│   │   │   ├── _sources/
│   │   │   │   ├── 01_Intro.ipynb
│   │   │   │   ├── 02_Observing.ipynb
│   │   │   │   ├── 02_Tracking.ipynb
│   │   │   │   ├── 03_Dependencies.ipynb
│   │   │   │   ├── 03_Inputs.ipynb
│   │   │   │   ├── 03_Observing.ipynb
│   │   │   │   ├── 04_Abstracting.ipynb
│   │   │   │   ├── 04_Inputs.ipynb
│   │   │   │   ├── 04_Reducing.ipynb
│   │   │   │   ├── 05_Abstracting.ipynb
│   │   │   │   ├── 05_Repairing.ipynb
│   │   │   │   ├── 06_In_the_Large.ipynb
│   │   │   │   ├── 06_Repairing.ipynb
│   │   │   │   ├── 07_In_the_Large.ipynb
│   │   │   │   ├── 404.ipynb
│   │   │   │   ├── 99_Appendices.ipynb
│   │   │   │   ├── Alhazen.ipynb
│   │   │   │   ├── Assertions.ipynb
│   │   │   │   ├── ChangeCounter.ipynb
│   │   │   │   ├── ChangeDebugger.ipynb
│   │   │   │   ├── ChangeExplorer.ipynb
│   │   │   │   ├── ClassDiagram.ipynb
│   │   │   │   ├── DDSetDebugger.ipynb
│   │   │   │   ├── Debugger.ipynb
│   │   │   │   ├── DeltaDebugger.ipynb
│   │   │   │   ├── DynamicInvariants.ipynb
│   │   │   │   ├── ExpectError.ipynb
│   │   │   │   ├── Guide_for_Authors.ipynb
│   │   │   │   ├── IllustratedCode.ipynb
│   │   │   │   ├── Importing.ipynb
│   │   │   │   ├── Intro_Debugging.ipynb
│   │   │   │   ├── LICENSE.md
│   │   │   │   ├── PerformanceDebugger.ipynb
│   │   │   │   ├── Project_of_your_choice.ipynb
│   │   │   │   ├── README.md
│   │   │   │   ├── RailroadDiagrams.ipynb
│   │   │   │   ├── Reducing_Code.ipynb
│   │   │   │   ├── ReleaseNotes.ipynb
│   │   │   │   ├── Repairer.ipynb
│   │   │   │   ├── Repairing_Code.ipynb
│   │   │   │   ├── Slicer.ipynb
│   │   │   │   ├── StackInspector.ipynb
│   │   │   │   ├── StatisticalDebugger.ipynb
│   │   │   │   ├── Template.ipynb
│   │   │   │   ├── ThreadDebugger.ipynb
│   │   │   │   ├── Time_Travel_Debugger.ipynb
│   │   │   │   ├── Timeout.ipynb
│   │   │   │   ├── Timer.ipynb
│   │   │   │   ├── Tours.ipynb
│   │   │   │   ├── Tracer.ipynb
│   │   │   │   ├── Tracking.ipynb
│   │   │   │   ├── bookutils/
│   │   │   │   │   └── README.md
│   │   │   │   └── index.ipynb
│   │   │   ├── _sphinx_design_static/
│   │   │   │   └── design-tabs.js
│   │   │   ├── _static/
│   │   │   │   ├── basic.css
│   │   │   │   ├── copybutton.css
│   │   │   │   ├── copybutton.js
│   │   │   │   ├── copybutton_funcs.js
│   │   │   │   ├── custom.css
│   │   │   │   ├── design-tabs.js
│   │   │   │   ├── doctools.js
│   │   │   │   ├── documentation_options.js
│   │   │   │   ├── language_data.js
│   │   │   │   ├── locales/
│   │   │   │   │   ├── ar/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── bg/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── bn/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ca/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── cs/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── da/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── de/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── el/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── eo/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── es/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── et/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── fi/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── fr/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── hr/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── id/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── it/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── iw/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ja/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ko/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── lt/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── lv/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ml/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── mr/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ms/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── nl/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── no/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── pl/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── pt/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ro/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ru/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── sk/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── sl/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── sr/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── sv/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ta/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── te/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── tg/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── th/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── tl/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── tr/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── uk/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ur/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── vi/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── zh_CN/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   └── zh_TW/
│   │   │   │   │       └── LC_MESSAGES/
│   │   │   │   │           ├── booktheme.mo
│   │   │   │   │           └── booktheme.po
│   │   │   │   ├── mastodon-timeline.css
│   │   │   │   ├── mystnb.8ecb98da25f57f5357bf6f572d296f466b2cfe2517ffebfabe82451661e28f02.css
│   │   │   │   ├── pygments.css
│   │   │   │   ├── sbt-webpack-macros.html
│   │   │   │   ├── scripts/
│   │   │   │   │   ├── bootstrap.js
│   │   │   │   │   ├── bootstrap.js.LICENSE.txt
│   │   │   │   │   ├── pydata-sphinx-theme.js
│   │   │   │   │   └── sphinx-book-theme.js
│   │   │   │   ├── searchtools.js
│   │   │   │   ├── sphinx-thebe.css
│   │   │   │   ├── sphinx-thebe.js
│   │   │   │   ├── sphinx_highlight.js
│   │   │   │   ├── styles/
│   │   │   │   │   ├── bootstrap.css
│   │   │   │   │   ├── pydata-sphinx-theme.css
│   │   │   │   │   ├── sphinx-book-theme.css
│   │   │   │   │   └── theme.css
│   │   │   │   ├── togglebutton.css
│   │   │   │   ├── togglebutton.js
│   │   │   │   ├── vendor/
│   │   │   │   │   └── fontawesome/
│   │   │   │   │       └── 6.5.2/
│   │   │   │   │           ├── LICENSE.txt
│   │   │   │   │           └── js/
│   │   │   │   │               └── all.min.js.LICENSE.txt
│   │   │   │   └── webpack-macros.html
│   │   │   ├── bookutils/
│   │   │   │   └── README.html
│   │   │   ├── custom.css
│   │   │   ├── favicon/
│   │   │   │   ├── README.md
│   │   │   │   ├── browserconfig.xml
│   │   │   │   ├── html_code.html
│   │   │   │   └── site.webmanifest
│   │   │   ├── genindex.html
│   │   │   ├── index.html
│   │   │   ├── mastodon-timeline.css
│   │   │   ├── mastodon-timeline.js
│   │   │   ├── objects.inv
│   │   │   ├── search.html
│   │   │   └── searchindex.js
│   │   ├── index.html
│   │   ├── notebooks/
│   │   │   ├── 00_Index.ipynb
│   │   │   ├── 00_Table_of_Contents.ipynb
│   │   │   ├── 01_Intro.ipynb
│   │   │   ├── 02_Observing.ipynb
│   │   │   ├── 02_Tracking.ipynb
│   │   │   ├── 03_Dependencies.ipynb
│   │   │   ├── 03_Inputs.ipynb
│   │   │   ├── 03_Observing.ipynb
│   │   │   ├── 04_Abstracting.ipynb
│   │   │   ├── 04_Inputs.ipynb
│   │   │   ├── 04_Reducing.ipynb
│   │   │   ├── 05_Abstracting.ipynb
│   │   │   ├── 05_Repairing.ipynb
│   │   │   ├── 06_In_the_Large.ipynb
│   │   │   ├── 06_Repairing.ipynb
│   │   │   ├── 07_In_the_Large.ipynb
│   │   │   ├── 404.ipynb
│   │   │   ├── 99_Appendices.ipynb
│   │   │   ├── Alhazen.ipynb
│   │   │   ├── Assertions.ipynb
│   │   │   ├── ChangeCounter.ipynb
│   │   │   ├── ChangeDebugger.ipynb
│   │   │   ├── ChangeExplorer.ipynb
│   │   │   ├── ClassDiagram.ipynb
│   │   │   ├── DDSetDebugger.ipynb
│   │   │   ├── Debugger.ipynb
│   │   │   ├── DeltaDebugger.ipynb
│   │   │   ├── DynamicInvariants.ipynb
│   │   │   ├── ExpectError.ipynb
│   │   │   ├── Guide_for_Authors.ipynb
│   │   │   ├── IllustratedCode.ipynb
│   │   │   ├── Importing.ipynb
│   │   │   ├── Intro_Debugging.ipynb
│   │   │   ├── LICENSE.md
│   │   │   ├── PICS/
│   │   │   │   ├── Icons.key
│   │   │   │   ├── Sitemap.svg~
│   │   │   │   └── debuggingbook.key
│   │   │   ├── PerformanceDebugger.ipynb
│   │   │   ├── Project_of_your_choice.ipynb
│   │   │   ├── README.md
│   │   │   ├── RailroadDiagrams.ipynb
│   │   │   ├── Reducing_Code.ipynb
│   │   │   ├── ReleaseNotes.ipynb
│   │   │   ├── Repairer.ipynb
│   │   │   ├── Repairing_Code.ipynb
│   │   │   ├── Slicer.ipynb
│   │   │   ├── StackInspector.ipynb
│   │   │   ├── StatisticalDebugger.ipynb
│   │   │   ├── Template.ipynb
│   │   │   ├── ThreadDebugger.ipynb
│   │   │   ├── Time_Travel_Debugger.ipynb
│   │   │   ├── Timeout.ipynb
│   │   │   ├── Timer.ipynb
│   │   │   ├── Tours.ipynb
│   │   │   ├── Tracer.ipynb
│   │   │   ├── Tracking.ipynb
│   │   │   ├── bookutils/
│   │   │   │   ├── PrettyTable.py
│   │   │   │   ├── README.md
│   │   │   │   ├── __init__.py
│   │   │   │   ├── export_notebook_code.py
│   │   │   │   ├── import_notebooks.py
│   │   │   │   ├── set_fixed_seed.py
│   │   │   │   └── setup.py
│   │   │   ├── custom.css
│   │   │   ├── fuzzingbook.bib
│   │   │   ├── index.ipynb
│   │   │   ├── pyproject.toml
│   │   │   └── requirements.txt
│   │   ├── objects.inv
│   │   ├── search.html
│   │   ├── searchindex.js
│   │   └── slides/
│   │       ├── 01_Intro.slides.html
│   │       ├── 02_Observing.slides.html
│   │       ├── 02_Tracking.slides.html
│   │       ├── 03_Dependencies.slides.html
│   │       ├── 03_Inputs.slides.html
│   │       ├── 03_Observing.slides.html
│   │       ├── 04_Abstracting.slides.html
│   │       ├── 04_Inputs.slides.html
│   │       ├── 04_Reducing.slides.html
│   │       ├── 05_Abstracting.slides.html
│   │       ├── 05_Repairing.slides.html
│   │       ├── 06_In_the_Large.slides.html
│   │       ├── 06_Repairing.slides.html
│   │       ├── 07_In_the_Large.slides.html
│   │       ├── 99_Appendices.slides.html
│   │       ├── Alhazen.slides.html
│   │       ├── Assertions.slides.html
│   │       ├── ChangeCounter.slides.html
│   │       ├── ChangeDebugger.slides.html
│   │       ├── ChangeExplorer.slides.html
│   │       ├── ClassDiagram.slides.html
│   │       ├── DDSetDebugger.slides.html
│   │       ├── Debugger.slides.html
│   │       ├── DeltaDebugger.slides.html
│   │       ├── DynamicInvariants.slides.html
│   │       ├── ExpectError.slides.html
│   │       ├── Intro_Debugging.slides.html
│   │       ├── PerformanceDebugger.slides.html
│   │       ├── RailroadDiagrams.slides.html
│   │       ├── Repairer.slides.html
│   │       ├── Slicer.slides.html
│   │       ├── StackInspector.slides.html
│   │       ├── StatisticalDebugger.slides.html
│   │       ├── ThreadDebugger.slides.html
│   │       ├── Timeout.slides.html
│   │       ├── Timer.slides.html
│   │       ├── Tours.slides.html
│   │       ├── Tracer.slides.html
│   │       ├── Tracking.slides.html
│   │       └── reveal.js/
│   │           ├── .codespellrc
│   │           ├── .github/
│   │           │   ├── CONTRIBUTING.md
│   │           │   ├── FUNDING.yml
│   │           │   └── workflows/
│   │           │       ├── spellcheck.yml
│   │           │       └── test.yml
│   │           ├── .gitignore
│   │           ├── .npmignore
│   │           ├── LICENSE
│   │           ├── README.md
│   │           ├── css/
│   │           │   ├── layout.scss
│   │           │   ├── print/
│   │           │   │   ├── paper.scss
│   │           │   │   └── pdf.scss
│   │           │   ├── reveal.scss
│   │           │   └── theme/
│   │           │       ├── README.md
│   │           │       ├── source/
│   │           │       │   ├── beige.scss
│   │           │       │   ├── black-contrast.scss
│   │           │       │   ├── black.scss
│   │           │       │   ├── blood.scss
│   │           │       │   ├── dracula.scss
│   │           │       │   ├── league.scss
│   │           │       │   ├── moon.scss
│   │           │       │   ├── night.scss
│   │           │       │   ├── serif.scss
│   │           │       │   ├── simple.scss
│   │           │       │   ├── sky.scss
│   │           │       │   ├── solarized.scss
│   │           │       │   ├── white-contrast.scss
│   │           │       │   └── white.scss
│   │           │       └── template/
│   │           │           ├── exposer.scss
│   │           │           ├── mixins.scss
│   │           │           ├── settings.scss
│   │           │           └── theme.scss
│   │           ├── demo.html
│   │           ├── dist/
│   │           │   ├── reset.css
│   │           │   ├── reveal.css
│   │           │   ├── reveal.esm.js
│   │           │   ├── reveal.js
│   │           │   └── theme/
│   │           │       ├── beige.css
│   │           │       ├── black-contrast.css
│   │           │       ├── black.css
│   │           │       ├── blood.css
│   │           │       ├── dracula.css
│   │           │       ├── fonts/
│   │           │       │   ├── league-gothic/
│   │           │       │   │   ├── LICENSE
│   │           │       │   │   └── league-gothic.css
│   │           │       │   └── source-sans-pro/
│   │           │       │       ├── LICENSE
│   │           │       │       └── source-sans-pro.css
│   │           │       ├── league.css
│   │           │       ├── moon.css
│   │           │       ├── night.css
│   │           │       ├── serif.css
│   │           │       ├── simple.css
│   │           │       ├── sky.css
│   │           │       ├── solarized.css
│   │           │       ├── white-contrast.css
│   │           │       ├── white.css
│   │           │       └── white_contrast_compact_verbatim_headers.css
│   │           ├── examples/
│   │           │   ├── 500-slides.html
│   │           │   ├── assets/
│   │           │   │   └── beeping.txt
│   │           │   ├── auto-animate.html
│   │           │   ├── backgrounds.html
│   │           │   ├── barebones.html
│   │           │   ├── layout-helpers.html
│   │           │   ├── lightbox.html
│   │           │   ├── markdown.html
│   │           │   ├── markdown.md
│   │           │   ├── math.html
│   │           │   ├── media.html
│   │           │   ├── multiple-presentations.html
│   │           │   ├── scroll.html
│   │           │   └── transitions.html
│   │           ├── gulpfile.js
│   │           ├── index.html
│   │           ├── js/
│   │           │   ├── components/
│   │           │   │   └── playback.js
│   │           │   ├── config.js
│   │           │   ├── controllers/
│   │           │   │   ├── autoanimate.js
│   │           │   │   ├── backgrounds.js
│   │           │   │   ├── controls.js
│   │           │   │   ├── focus.js
│   │           │   │   ├── fragments.js
│   │           │   │   ├── jumptoslide.js
│   │           │   │   ├── keyboard.js
│   │           │   │   ├── location.js
│   │           │   │   ├── notes.js
│   │           │   │   ├── overlay.js
│   │           │   │   ├── overview.js
│   │           │   │   ├── plugins.js
│   │           │   │   ├── pointer.js
│   │           │   │   ├── printview.js
│   │           │   │   ├── progress.js
│   │           │   │   ├── scrollview.js
│   │           │   │   ├── slidecontent.js
│   │           │   │   ├── slidenumber.js
│   │           │   │   └── touch.js
│   │           │   ├── index.js
│   │           │   ├── reveal.js
│   │           │   └── utils/
│   │           │       ├── color.js
│   │           │       ├── constants.js
│   │           │       ├── device.js
│   │           │       ├── loader.js
│   │           │       └── util.js
│   │           ├── package.json
│   │           ├── plugin/
│   │           │   ├── highlight/
│   │           │   │   ├── highlight.esm.js
│   │           │   │   ├── highlight.js
│   │           │   │   ├── monokai.css
│   │           │   │   ├── plugin.js
│   │           │   │   └── zenburn.css
│   │           │   ├── markdown/
│   │           │   │   ├── markdown.esm.js
│   │           │   │   ├── markdown.js
│   │           │   │   └── plugin.js
│   │           │   ├── math/
│   │           │   │   ├── katex.js
│   │           │   │   ├── math.esm.js
│   │           │   │   ├── math.js
│   │           │   │   ├── mathjax2.js
│   │           │   │   ├── mathjax3.js
│   │           │   │   └── plugin.js
│   │           │   ├── notes/
│   │           │   │   ├── notes.esm.js
│   │           │   │   ├── notes.js
│   │           │   │   ├── plugin.js
│   │           │   │   └── speaker-view.html
│   │           │   ├── search/
│   │           │   │   ├── plugin.js
│   │           │   │   ├── search.esm.js
│   │           │   │   └── search.js
│   │           │   └── zoom/
│   │           │       ├── plugin.js
│   │           │       ├── zoom.esm.js
│   │           │       └── zoom.js
│   │           └── test/
│   │               ├── assets/
│   │               │   ├── external-script-a.js
│   │               │   ├── external-script-b.js
│   │               │   ├── external-script-c.js
│   │               │   └── external-script-d.js
│   │               ├── simple.md
│   │               ├── test-auto-animate.html
│   │               ├── test-dependencies-async.html
│   │               ├── test-dependencies.html
│   │               ├── test-destroy.html
│   │               ├── test-grid-navigation.html
│   │               ├── test-iframe-backgrounds.html
│   │               ├── test-iframes.html
│   │               ├── test-markdown.html
│   │               ├── test-multiple-instances-es5.html
│   │               ├── test-multiple-instances.html
│   │               ├── test-pdf.html
│   │               ├── test-plugins.html
│   │               ├── test-scroll.html
│   │               ├── test-state.html
│   │               └── test.html
│   ├── classic/
│   │   ├── 00_Index.html
│   │   ├── 00_Table_of_Contents.html
│   │   ├── 01_Intro.html
│   │   ├── 02_Observing.html
│   │   ├── 03_Dependencies.html
│   │   ├── 04_Reducing.html
│   │   ├── 05_Abstracting.html
│   │   ├── 06_Repairing.html
│   │   ├── 07_In_the_Large.html
│   │   ├── 404.html
│   │   ├── 99_Appendices.html
│   │   ├── Alhazen.html
│   │   ├── Assertions.html
│   │   ├── ChangeCounter.html
│   │   ├── ChangeDebugger.html
│   │   ├── ClassDiagram.html
│   │   ├── DDSetDebugger.html
│   │   ├── Debugger.html
│   │   ├── DeltaDebugger.html
│   │   ├── DynamicInvariants.html
│   │   ├── ExpectError.html
│   │   ├── Guide_for_Authors.html
│   │   ├── IllustratedCode.html
│   │   ├── Importing.html
│   │   ├── Intro_Debugging.html
│   │   ├── PICS/
│   │   │   └── Icons.key
│   │   ├── PerformanceDebugger.html
│   │   ├── Project_of_your_choice.html
│   │   ├── Reducing_Code.html
│   │   ├── ReleaseNotes.html
│   │   ├── Repairer.html
│   │   ├── Repairing_Code.html
│   │   ├── Slicer.html
│   │   ├── StackInspector.html
│   │   ├── StatisticalDebugger.html
│   │   ├── Template.html
│   │   ├── Time_Travel_Debugger.html
│   │   ├── Timeout.html
│   │   ├── Timer.html
│   │   ├── Tours.html
│   │   ├── Tracer.html
│   │   ├── Tracking.html
│   │   ├── custom.css
│   │   ├── favicon/
│   │   │   ├── README.md
│   │   │   ├── browserconfig.xml
│   │   │   ├── html_code.html
│   │   │   └── site.webmanifest
│   │   ├── index.html
│   │   ├── mastodon-timeline.css
│   │   └── mastodon-timeline.js
│   ├── code/
│   │   ├── 01_Intro.py
│   │   ├── 02_Observing.py
│   │   ├── 03_Dependencies.py
│   │   ├── 04_Reducing.py
│   │   ├── 05_Abstracting.py
│   │   ├── 06_Repairing.py
│   │   ├── 07_In_the_Large.py
│   │   ├── 99_Appendices.py
│   │   ├── Alhazen.py
│   │   ├── Assertions.py
│   │   ├── ChangeCounter.py
│   │   ├── ChangeDebugger.py
│   │   ├── ClassDiagram.py
│   │   ├── DDSetDebugger.py
│   │   ├── Debugger.py
│   │   ├── DeltaDebugger.py
│   │   ├── DynamicInvariants.py
│   │   ├── ExpectError.py
│   │   ├── Intro_Debugging.py
│   │   ├── LICENSE.md
│   │   ├── PerformanceDebugger.py
│   │   ├── RailroadDiagrams.py
│   │   ├── Repairer.py
│   │   ├── Slicer.py
│   │   ├── StackInspector.py
│   │   ├── StatisticalDebugger.py
│   │   ├── Timeout.py
│   │   ├── Timer.py
│   │   ├── Tours.py
│   │   ├── Tracer.py
│   │   ├── Tracking.py
│   │   ├── __init__.py
│   │   ├── bookutils/
│   │   │   ├── PrettyTable.py
│   │   │   ├── README.md
│   │   │   ├── __init__.py
│   │   │   ├── export_notebook_code.py
│   │   │   ├── import_notebooks.py
│   │   │   ├── set_fixed_seed.py
│   │   │   └── setup.py
│   │   └── debuggingbook_utils/
│   │       ├── PrettyTable.py
│   │       ├── README.md
│   │       ├── __init__.py
│   │       ├── export_notebook_code.py
│   │       ├── import_notebooks.py
│   │       └── set_fixed_seed.py
│   ├── google8ab8d0f3fd0f9e99.html
│   ├── html/
│   │   ├── 00_Index.html
│   │   ├── 00_Table_of_Contents.html
│   │   ├── 01_Intro.html
│   │   ├── 02_Observing.html
│   │   ├── 03_Dependencies.html
│   │   ├── 04_Reducing.html
│   │   ├── 05_Abstracting.html
│   │   ├── 06_Repairing.html
│   │   ├── 07_In_the_Large.html
│   │   ├── 404.html
│   │   ├── 99_Appendices.html
│   │   ├── Alhazen.html
│   │   ├── Assertions.html
│   │   ├── ChangeCounter.html
│   │   ├── ChangeDebugger.html
│   │   ├── ClassDiagram.html
│   │   ├── DDSetDebugger.html
│   │   ├── Debugger.html
│   │   ├── DeltaDebugger.html
│   │   ├── DynamicInvariants.html
│   │   ├── ExpectError.html
│   │   ├── Guide_for_Authors.html
│   │   ├── IllustratedCode.html
│   │   ├── Importing.html
│   │   ├── Intro_Debugging.html
│   │   ├── PerformanceDebugger.html
│   │   ├── Project_of_your_choice.html
│   │   ├── Reducing_Code.html
│   │   ├── ReleaseNotes.html
│   │   ├── Repairer.html
│   │   ├── Repairing_Code.html
│   │   ├── Slicer.html
│   │   ├── StackInspector.html
│   │   ├── StatisticalDebugger.html
│   │   ├── Template.html
│   │   ├── Time_Travel_Debugger.html
│   │   ├── Timeout.html
│   │   ├── Timer.html
│   │   ├── Tours.html
│   │   ├── Tracer.html
│   │   ├── Tracking.html
│   │   ├── custom.css
│   │   ├── favicon/
│   │   │   ├── README.md
│   │   │   ├── browserconfig.xml
│   │   │   ├── html_code.html
│   │   │   └── site.webmanifest
│   │   ├── index.html
│   │   ├── mastodon-timeline.css
│   │   └── mastodon-timeline.js
│   ├── index.html
│   ├── notebooks/
│   │   ├── 00_Index.ipynb
│   │   ├── 00_Table_of_Contents.ipynb
│   │   ├── 01_Intro.ipynb
│   │   ├── 02_Observing.ipynb
│   │   ├── 03_Dependencies.ipynb
│   │   ├── 04_Reducing.ipynb
│   │   ├── 05_Abstracting.ipynb
│   │   ├── 06_Repairing.ipynb
│   │   ├── 07_In_the_Large.ipynb
│   │   ├── 404.ipynb
│   │   ├── 99_Appendices.ipynb
│   │   ├── Alhazen.ipynb
│   │   ├── Assertions.ipynb
│   │   ├── ChangeCounter.ipynb
│   │   ├── ChangeDebugger.ipynb
│   │   ├── ClassDiagram.ipynb
│   │   ├── DDSetDebugger.ipynb
│   │   ├── Debugger.ipynb
│   │   ├── DeltaDebugger.ipynb
│   │   ├── DynamicInvariants.ipynb
│   │   ├── ExpectError.ipynb
│   │   ├── Guide_for_Authors.ipynb
│   │   ├── IllustratedCode.ipynb
│   │   ├── Importing.ipynb
│   │   ├── Intro_Debugging.ipynb
│   │   ├── LICENSE.md
│   │   ├── PICS/
│   │   │   └── Icons.key
│   │   ├── PerformanceDebugger.ipynb
│   │   ├── Project_of_your_choice.ipynb
│   │   ├── README.md
│   │   ├── RailroadDiagrams.ipynb
│   │   ├── Reducing_Code.ipynb
│   │   ├── ReleaseNotes.ipynb
│   │   ├── Repairer.ipynb
│   │   ├── Repairing_Code.ipynb
│   │   ├── Slicer.ipynb
│   │   ├── StackInspector.ipynb
│   │   ├── StatisticalDebugger.ipynb
│   │   ├── Template.ipynb
│   │   ├── Time_Travel_Debugger.ipynb
│   │   ├── Timeout.ipynb
│   │   ├── Timer.ipynb
│   │   ├── Tours.ipynb
│   │   ├── Tracer.ipynb
│   │   ├── Tracking.ipynb
│   │   ├── bookutils/
│   │   │   ├── PrettyTable.py
│   │   │   ├── README.md
│   │   │   ├── __init__.py
│   │   │   ├── export_notebook_code.py
│   │   │   ├── import_notebooks.py
│   │   │   ├── set_fixed_seed.py
│   │   │   └── setup.py
│   │   ├── custom.css
│   │   ├── debuggingbook.bib
│   │   ├── fuzzingbook.bib
│   │   ├── index.ipynb
│   │   └── requirements.txt
│   └── slides/
│       ├── 01_Intro.slides.html
│       ├── 02_Observing.slides.html
│       ├── 03_Dependencies.slides.html
│       ├── 04_Reducing.slides.html
│       ├── 05_Abstracting.slides.html
│       ├── 06_Repairing.slides.html
│       ├── 07_In_the_Large.slides.html
│       ├── 99_Appendices.slides.html
│       ├── Alhazen.slides.html
│       ├── Assertions.slides.html
│       ├── ChangeCounter.slides.html
│       ├── ChangeDebugger.slides.html
│       ├── ClassDiagram.slides.html
│       ├── DDSetDebugger.slides.html
│       ├── Debugger.slides.html
│       ├── DeltaDebugger.slides.html
│       ├── DynamicInvariants.slides.html
│       ├── ExpectError.slides.html
│       ├── Intro_Debugging.slides.html
│       ├── PerformanceDebugger.slides.html
│       ├── RailroadDiagrams.slides.html
│       ├── Repairer.slides.html
│       ├── Slicer.slides.html
│       ├── StackInspector.slides.html
│       ├── StatisticalDebugger.slides.html
│       ├── Timeout.slides.html
│       ├── Timer.slides.html
│       ├── Tours.slides.html
│       ├── Tracer.slides.html
│       ├── Tracking.slides.html
│       └── reveal.js/
│           ├── .github/
│           │   ├── CONTRIBUTING.md
│           │   ├── FUNDING.yml
│           │   └── workflows/
│           │       └── js.yml
│           ├── .gitignore
│           ├── .npmignore
│           ├── LICENSE
│           ├── README.md
│           ├── css/
│           │   ├── layout.scss
│           │   ├── print/
│           │   │   ├── paper.scss
│           │   │   └── pdf.scss
│           │   ├── reveal.scss
│           │   └── theme/
│           │       ├── README.md
│           │       ├── source/
│           │       │   ├── beige.scss
│           │       │   ├── black-contrast.scss
│           │       │   ├── black.scss
│           │       │   ├── blood.scss
│           │       │   ├── dracula.scss
│           │       │   ├── league.scss
│           │       │   ├── moon.scss
│           │       │   ├── night.scss
│           │       │   ├── serif.scss
│           │       │   ├── simple.scss
│           │       │   ├── sky.scss
│           │       │   ├── solarized.scss
│           │       │   ├── white-contrast.scss
│           │       │   └── white.scss
│           │       └── template/
│           │           ├── exposer.scss
│           │           ├── mixins.scss
│           │           ├── settings.scss
│           │           └── theme.scss
│           ├── demo.html
│           ├── dist/
│           │   ├── reset.css
│           │   ├── reveal.css
│           │   ├── reveal.esm.js
│           │   ├── reveal.js
│           │   └── theme/
│           │       ├── beige.css
│           │       ├── black-contrast.css
│           │       ├── black.css
│           │       ├── blood.css
│           │       ├── dracula.css
│           │       ├── fonts/
│           │       │   ├── league-gothic/
│           │       │   │   ├── LICENSE
│           │       │   │   └── league-gothic.css
│           │       │   └── source-sans-pro/
│           │       │       ├── LICENSE
│           │       │       └── source-sans-pro.css
│           │       ├── league.css
│           │       ├── moon.css
│           │       ├── night.css
│           │       ├── serif.css
│           │       ├── simple.css
│           │       ├── sky.css
│           │       ├── solarized.css
│           │       ├── white-contrast.css
│           │       ├── white.css
│           │       └── white_contrast_compact_verbatim_headers.css
│           ├── examples/
│           │   ├── 500-slides.html
│           │   ├── assets/
│           │   │   └── beeping.txt
│           │   ├── auto-animate.html
│           │   ├── backgrounds.html
│           │   ├── barebones.html
│           │   ├── layout-helpers.html
│           │   ├── markdown.html
│           │   ├── markdown.md
│           │   ├── math.html
│           │   ├── media.html
│           │   ├── multiple-presentations.html
│           │   ├── scroll.html
│           │   └── transitions.html
│           ├── gulpfile.js
│           ├── index.html
│           ├── js/
│           │   ├── components/
│           │   │   └── playback.js
│           │   ├── config.js
│           │   ├── controllers/
│           │   │   ├── autoanimate.js
│           │   │   ├── backgrounds.js
│           │   │   ├── controls.js
│           │   │   ├── focus.js
│           │   │   ├── fragments.js
│           │   │   ├── jumptoslide.js
│           │   │   ├── keyboard.js
│           │   │   ├── location.js
│           │   │   ├── notes.js
│           │   │   ├── overview.js
│           │   │   ├── plugins.js
│           │   │   ├── pointer.js
│           │   │   ├── printview.js
│           │   │   ├── progress.js
│           │   │   ├── scrollview.js
│           │   │   ├── slidecontent.js
│           │   │   ├── slidenumber.js
│           │   │   └── touch.js
│           │   ├── index.js
│           │   ├── reveal.js
│           │   └── utils/
│           │       ├── color.js
│           │       ├── constants.js
│           │       ├── device.js
│           │       ├── loader.js
│           │       └── util.js
│           ├── package.json
│           ├── plugin/
│           │   ├── highlight/
│           │   │   ├── highlight.esm.js
│           │   │   ├── highlight.js
│           │   │   ├── monokai.css
│           │   │   ├── plugin.js
│           │   │   └── zenburn.css
│           │   ├── markdown/
│           │   │   ├── markdown.esm.js
│           │   │   ├── markdown.js
│           │   │   └── plugin.js
│           │   ├── math/
│           │   │   ├── katex.js
│           │   │   ├── math.esm.js
│           │   │   ├── math.js
│           │   │   ├── mathjax2.js
│           │   │   ├── mathjax3.js
│           │   │   └── plugin.js
│           │   ├── notes/
│           │   │   ├── notes.esm.js
│           │   │   ├── notes.js
│           │   │   ├── plugin.js
│           │   │   └── speaker-view.html
│           │   ├── search/
│           │   │   ├── plugin.js
│           │   │   ├── search.esm.js
│           │   │   └── search.js
│           │   └── zoom/
│           │       ├── plugin.js
│           │       ├── zoom.esm.js
│           │       └── zoom.js
│           └── test/
│               ├── assets/
│               │   ├── external-script-a.js
│               │   ├── external-script-b.js
│               │   ├── external-script-c.js
│               │   └── external-script-d.js
│               ├── simple.md
│               ├── test-auto-animate.html
│               ├── test-dependencies-async.html
│               ├── test-dependencies.html
│               ├── test-destroy.html
│               ├── test-grid-navigation.html
│               ├── test-iframe-backgrounds.html
│               ├── test-iframes.html
│               ├── test-markdown.html
│               ├── test-multiple-instances-es5.html
│               ├── test-multiple-instances.html
│               ├── test-pdf.html
│               ├── test-plugins.html
│               ├── test-scroll.html
│               ├── test-state.html
│               └── test.html
├── epub/
│   └── README.md
├── html/
│   ├── custom.css
│   ├── favicon/
│   │   ├── README.md
│   │   ├── browserconfig.xml
│   │   ├── html_code.html
│   │   └── site.webmanifest
│   ├── mastodon-timeline.css
│   └── mastodon-timeline.js
├── ipypublish_plugins/
│   ├── README.md
│   ├── html_ipypublish_chapter.py
│   ├── latex_ipypublish_book.py
│   └── latex_ipypublish_chapter.py
├── mypy/
│   └── mypy.ini
├── notebooks/
│   ├── 00_Index.ipynb
│   ├── 01_Intro.ipynb
│   ├── 02_Observing.ipynb
│   ├── 03_Dependencies.ipynb
│   ├── 04_Reducing.ipynb
│   ├── 05_Abstracting.ipynb
│   ├── 06_Repairing.ipynb
│   ├── 07_In_the_Large.ipynb
│   ├── 404.ipynb
│   ├── 99_Appendices.ipynb
│   ├── Alhazen.ipynb
│   ├── Assertions.ipynb
│   ├── ChangeCounter.ipynb
│   ├── ChangeDebugger.ipynb
│   ├── Copyright.ipynb
│   ├── DDSetDebugger.ipynb
│   ├── Debugger.ipynb
│   ├── DeltaDebugger.ipynb
│   ├── DynamicInvariants.ipynb
│   ├── Guide_for_Authors.ipynb
│   ├── IllustratedCode.ipynb
│   ├── Importing.ipynb
│   ├── Intro_Debugging.ipynb
│   ├── PICS/
│   │   ├── Icons.key
│   │   └── debuggingbook.key
│   ├── PerformanceDebugger.ipynb
│   ├── Project_of_your_choice.ipynb
│   ├── Reducing_Code.ipynb
│   ├── ReleaseNotes.ipynb
│   ├── Repairer.ipynb
│   ├── Repairing_Code.ipynb
│   ├── Slicer.ipynb
│   ├── StackInspector.ipynb
│   ├── StatisticalDebugger.ipynb
│   ├── Template.ipynb
│   ├── ThreadDebugger.ipynb
│   ├── Time_Travel_Debugger.ipynb
│   ├── Tours.ipynb
│   ├── Tracer.ipynb
│   ├── Tracking.ipynb
│   ├── index.ipynb
│   └── shared/
│       ├── ClassDiagram.ipynb
│       ├── ExpectError.ipynb
│       ├── Makefile
│       ├── README.md
│       ├── Timeout.ipynb
│       ├── Timer.ipynb
│       ├── bibtexparser/
│       │   ├── __init__.py
│       │   ├── bibdatabase.py
│       │   ├── bibtexexpression.py
│       │   ├── bparser.py
│       │   ├── bwriter.py
│       │   ├── customization.py
│       │   └── latexenc.py
│       ├── bin/
│       │   └── nbpublish
│       ├── bookutils/
│       │   ├── PrettyTable.py
│       │   ├── README.md
│       │   ├── __init__.py
│       │   ├── import_notebooks.py
│       │   └── setup.py
│       ├── fuzzingbook.bib
│       ├── gitignore
│       ├── icon_gen/
│       │   └── icon_gen.py
│       ├── ipypublish/
│       │   ├── __init__.py
│       │   ├── export_plugins/
│       │   │   ├── __init__.py
│       │   │   ├── html_ipypublish_all.py
│       │   │   ├── html_ipypublish_main.py
│       │   │   ├── html_ipypublish_nocode.py
│       │   │   ├── html_standard.py
│       │   │   ├── latex_ipypublish_all.py
│       │   │   ├── latex_ipypublish_main.py
│       │   │   ├── latex_ipypublish_nocode.py
│       │   │   ├── latex_standard_article.py
│       │   │   ├── nb_ipypublish_all.py
│       │   │   ├── nb_ipypublish_nocode.py
│       │   │   ├── slides_ipypublish_all.py
│       │   │   ├── slides_ipypublish_main.py
│       │   │   ├── slides_ipypublish_nocode.py
│       │   │   ├── slides_mkdown_all.py
│       │   │   ├── slides_mkdown_main.py
│       │   │   ├── slides_mkdown_nocode.py
│       │   │   └── slides_standard.py
│       │   ├── filters/
│       │   │   ├── __init__.py
│       │   │   ├── ansi_listings.py
│       │   │   ├── filters.py
│       │   │   └── replace_string.py
│       │   ├── html/
│       │   │   ├── __init__.py
│       │   │   ├── create_tpl.py
│       │   │   ├── ipypublish/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── flexbox_css.py
│       │   │   │   ├── latex_doc.py
│       │   │   │   ├── slides_ipypublish.py
│       │   │   │   ├── slides_mkdown.py
│       │   │   │   ├── toc_sidebar.py
│       │   │   │   └── toggle_buttons.py
│       │   │   └── standard/
│       │   │       ├── __init__.py
│       │   │       ├── content.py
│       │   │       ├── content_tagging.py
│       │   │       ├── document.py
│       │   │       ├── inout_prompt.py
│       │   │       ├── mathjax.py
│       │   │       ├── slides.py
│       │   │       └── widgets.py
│       │   ├── latex/
│       │   │   ├── __init__.py
│       │   │   ├── create_tplx.py
│       │   │   ├── ipypublish/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── biblio_natbib.py
│       │   │   │   ├── contents_framed_code.py
│       │   │   │   ├── contents_output.py
│       │   │   │   ├── doc_article.py
│       │   │   │   └── front_pages.py
│       │   │   └── standard/
│       │   │       ├── __init__.py
│       │   │       ├── in_out_prompts.py
│       │   │       ├── standard_article.py
│       │   │       ├── standard_contents.py
│       │   │       ├── standard_definitions.py
│       │   │       └── standard_packages.py
│       │   ├── main.py
│       │   ├── preprocessors/
│       │   │   ├── __init__.py
│       │   │   ├── crop_cells.py
│       │   │   ├── latex_doc_captions.py
│       │   │   ├── latex_doc_defaults.py
│       │   │   ├── latex_doc_html.py
│       │   │   ├── latex_doc_links.py
│       │   │   ├── latextags_to_html.py
│       │   │   ├── slides_from_markdown.py
│       │   │   └── split_outputs.py
│       │   ├── scripts/
│       │   │   ├── __init__.py
│       │   │   ├── export_plugins.py
│       │   │   ├── ipynb_latex_setup.py
│       │   │   ├── nbexport.py
│       │   │   ├── nbmerge.py
│       │   │   ├── pdfexport.py
│       │   │   └── reveal_serve.py
│       │   └── test_main.py
│       ├── jinja2/
│       │   ├── __init__.py
│       │   ├── _compat.py
│       │   ├── _identifier.py
│       │   ├── asyncfilters.py
│       │   ├── asyncsupport.py
│       │   ├── bccache.py
│       │   ├── compiler.py
│       │   ├── constants.py
│       │   ├── debug.py
│       │   ├── defaults.py
│       │   ├── environment.py
│       │   ├── exceptions.py
│       │   ├── ext.py
│       │   ├── filters.py
│       │   ├── idtracking.py
│       │   ├── lexer.py
│       │   ├── loaders.py
│       │   ├── meta.py
│       │   ├── nativetypes.py
│       │   ├── nodes.py
│       │   ├── optimizer.py
│       │   ├── parser.py
│       │   ├── runtime.py
│       │   ├── sandbox.py
│       │   ├── tests.py
│       │   ├── utils.py
│       │   └── visitor.py
│       ├── mistune.py
│       ├── nbconvert/
│       │   ├── __init__.py
│       │   ├── __main__.py
│       │   ├── _version.py
│       │   ├── exporters/
│       │   │   ├── __init__.py
│       │   │   ├── asciidoc.py
│       │   │   ├── base.py
│       │   │   ├── export.py
│       │   │   ├── exporter.py
│       │   │   ├── exporter_locator.py
│       │   │   ├── html.py
│       │   │   ├── latex.py
│       │   │   ├── markdown.py
│       │   │   ├── notebook.py
│       │   │   ├── pdf.py
│       │   │   ├── python.py
│       │   │   ├── rst.py
│       │   │   ├── script.py
│       │   │   ├── slides.py
│       │   │   ├── templateexporter.py
│       │   │   ├── tests/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── base.py
│       │   │   │   ├── cheese.py
│       │   │   │   ├── files/
│       │   │   │   │   ├── attachment.ipynb
│       │   │   │   │   ├── lablike.html.j2
│       │   │   │   │   ├── notebook2.ipynb
│       │   │   │   │   ├── notebook3.ipynb
│       │   │   │   │   ├── pngmetadata.ipynb
│       │   │   │   │   ├── prompt_numbers.ipynb
│       │   │   │   │   ├── rawtest.ipynb
│       │   │   │   │   └── svg.ipynb
│       │   │   │   ├── test_asciidoc.py
│       │   │   │   ├── test_export.py
│       │   │   │   ├── test_exporter.py
│       │   │   │   ├── test_html.py
│       │   │   │   ├── test_latex.py
│       │   │   │   ├── test_markdown.py
│       │   │   │   ├── test_notebook.py
│       │   │   │   ├── test_pdf.py
│       │   │   │   ├── test_python.py
│       │   │   │   ├── test_rst.py
│       │   │   │   ├── test_script.py
│       │   │   │   ├── test_slides.py
│       │   │   │   ├── test_templateexporter.py
│       │   │   │   └── test_webpdf.py
│       │   │   └── webpdf.py
│       │   ├── filters/
│       │   │   ├── __init__.py
│       │   │   ├── ansi.py
│       │   │   ├── citation.py
│       │   │   ├── datatypefilter.py
│       │   │   ├── filter_links.py
│       │   │   ├── highlight.py
│       │   │   ├── latex.py
│       │   │   ├── markdown.py
│       │   │   ├── markdown_mistune.py
│       │   │   ├── metadata.py
│       │   │   ├── pandoc.py
│       │   │   ├── strings.py
│       │   │   └── tests/
│       │   │       ├── __init__.py
│       │   │       ├── test_ansi.py
│       │   │       ├── test_citation.py
│       │   │       ├── test_datatypefilter.py
│       │   │       ├── test_highlight.py
│       │   │       ├── test_latex.py
│       │   │       ├── test_markdown.py
│       │   │       ├── test_metadata.py
│       │   │       └── test_strings.py
│       │   ├── nbconvertapp.py
│       │   ├── postprocessors/
│       │   │   ├── __init__.py
│       │   │   ├── base.py
│       │   │   ├── serve.py
│       │   │   └── tests/
│       │   │       ├── __init__.py
│       │   │       └── test_serve.py
│       │   ├── preprocessors/
│       │   │   ├── __init__.py
│       │   │   ├── base.py
│       │   │   ├── clearmetadata.py
│       │   │   ├── clearoutput.py
│       │   │   ├── coalescestreams.py
│       │   │   ├── convertfigures.py
│       │   │   ├── csshtmlheader.py
│       │   │   ├── execute.py
│       │   │   ├── extractoutput.py
│       │   │   ├── highlightmagics.py
│       │   │   ├── latex.py
│       │   │   ├── regexremove.py
│       │   │   ├── sanitize.py
│       │   │   ├── svg2pdf.py
│       │   │   ├── tagremove.py
│       │   │   └── tests/
│       │   │       ├── __init__.py
│       │   │       ├── base.py
│       │   │       ├── fake_kernelmanager.py
│       │   │       ├── files/
│       │   │       │   ├── Clear Output.ipynb
│       │   │       │   ├── Disable Stdin.ipynb
│       │   │       │   ├── Factorials.ipynb
│       │   │       │   ├── HelloWorld.ipynb
│       │   │       │   ├── Inline Image.ipynb
│       │   │       │   ├── Interrupt.ipynb
│       │   │       │   ├── MixedMarkdown.ipynb
│       │   │       │   ├── SVG.ipynb
│       │   │       │   ├── Skip Exceptions.ipynb
│       │   │       │   ├── Unicode.ipynb
│       │   │       │   └── update-display-id.ipynb
│       │   │       ├── test_clearmetadata.py
│       │   │       ├── test_clearoutput.py
│       │   │       ├── test_coalescestreams.py
│       │   │       ├── test_csshtmlheader.py
│       │   │       ├── test_execute.py
│       │   │       ├── test_extractoutput.py
│       │   │       ├── test_highlightmagics.py
│       │   │       ├── test_latex.py
│       │   │       ├── test_regexremove.py
│       │   │       ├── test_sanitize.py
│       │   │       ├── test_svg2pdf.py
│       │   │       └── test_tagremove.py
│       │   ├── resources/
│       │   │   └── __init__.py
│       │   ├── templates/
│       │   │   ├── README.md
│       │   │   ├── asciidoc.tpl
│       │   │   ├── html/
│       │   │   │   ├── basic.tpl
│       │   │   │   ├── full.tpl
│       │   │   │   ├── mathjax.tpl
│       │   │   │   └── slides_reveal.tpl
│       │   │   ├── latex/
│       │   │   │   ├── article.tplx
│       │   │   │   ├── base.tplx
│       │   │   │   ├── document_contents.tplx
│       │   │   │   ├── report.tplx
│       │   │   │   ├── skeleton/
│       │   │   │   │   ├── display_priority.tplx
│       │   │   │   │   └── null.tplx
│       │   │   │   ├── style_bw_ipython.tplx
│       │   │   │   ├── style_bw_python.tplx
│       │   │   │   ├── style_ipython.tplx
│       │   │   │   └── style_python.tplx
│       │   │   ├── markdown.tpl
│       │   │   ├── python.tpl
│       │   │   ├── rst.tpl
│       │   │   ├── script.tpl
│       │   │   └── skeleton/
│       │   │       ├── README.md
│       │   │       ├── display_priority.tpl
│       │   │       └── null.tpl
│       │   ├── tests/
│       │   │   ├── __init__.py
│       │   │   ├── base.py
│       │   │   ├── exporter_entrypoint/
│       │   │   │   ├── eptest-0.1.dist-info/
│       │   │   │   │   └── entry_points.txt
│       │   │   │   └── eptest.py
│       │   │   ├── fake_exporters.py
│       │   │   ├── files/
│       │   │   │   ├── Widget_List.ipynb
│       │   │   │   ├── hello.py
│       │   │   │   ├── jupyter_nbconvert_config.py
│       │   │   │   ├── latex-linked-image.ipynb
│       │   │   │   ├── markdown_display_priority.ipynb
│       │   │   │   ├── notebook1.html
│       │   │   │   ├── notebook1.ipynb
│       │   │   │   ├── notebook2.ipynb
│       │   │   │   ├── notebook3_with_errors.ipynb
│       │   │   │   ├── notebook4_jpeg.ipynb
│       │   │   │   ├── notebook_jl.ipynb
│       │   │   │   ├── notebook_tags.ipynb
│       │   │   │   └── override.py
│       │   │   ├── test_nbconvertapp.py
│       │   │   └── utils.py
│       │   ├── utils/
│       │   │   ├── __init__.py
│       │   │   ├── base.py
│       │   │   ├── exceptions.py
│       │   │   ├── io.py
│       │   │   ├── lexers.py
│       │   │   ├── pandoc.py
│       │   │   ├── tests/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── test_io.py
│       │   │   │   ├── test_pandoc.py
│       │   │   │   └── test_version.py
│       │   │   └── version.py
│       │   └── writers/
│       │       ├── __init__.py
│       │       ├── base.py
│       │       ├── debug.py
│       │       ├── files.py
│       │       ├── stdout.py
│       │       └── tests/
│       │           ├── __init__.py
│       │           ├── test_debug.py
│       │           ├── test_files.py
│       │           └── test_stdout.py
│       ├── pycodestyle.cfg
│       ├── pyparsing.py
│       ├── tornado/
│       │   ├── __init__.py
│       │   ├── _locale_data.py
│       │   ├── auth.py
│       │   ├── autoreload.py
│       │   ├── concurrent.py
│       │   ├── curl_httpclient.py
│       │   ├── escape.py
│       │   ├── gen.py
│       │   ├── http1connection.py
│       │   ├── httpclient.py
│       │   ├── httpserver.py
│       │   ├── httputil.py
│       │   ├── ioloop.py
│       │   ├── iostream.py
│       │   ├── locale.py
│       │   ├── locks.py
│       │   ├── log.py
│       │   ├── netutil.py
│       │   ├── options.py
│       │   ├── platform/
│       │   │   ├── __init__.py
│       │   │   ├── asyncio.py
│       │   │   ├── auto.py
│       │   │   ├── caresresolver.py
│       │   │   ├── common.py
│       │   │   ├── epoll.py
│       │   │   ├── interface.py
│       │   │   ├── kqueue.py
│       │   │   ├── posix.py
│       │   │   ├── select.py
│       │   │   ├── twisted.py
│       │   │   └── windows.py
│       │   ├── process.py
│       │   ├── queues.py
│       │   ├── routing.py
│       │   ├── simple_httpclient.py
│       │   ├── stack_context.py
│       │   ├── tcpclient.py
│       │   ├── tcpserver.py
│       │   ├── template.py
│       │   ├── test/
│       │   │   ├── __init__.py
│       │   │   ├── __main__.py
│       │   │   ├── asyncio_test.py
│       │   │   ├── auth_test.py
│       │   │   ├── autoreload_test.py
│       │   │   ├── concurrent_test.py
│       │   │   ├── csv_translations/
│       │   │   │   └── fr_FR.csv
│       │   │   ├── curl_httpclient_test.py
│       │   │   ├── escape_test.py
│       │   │   ├── gen_test.py
│       │   │   ├── gettext_translations/
│       │   │   │   └── fr_FR/
│       │   │   │       └── LC_MESSAGES/
│       │   │   │           ├── tornado_test.mo
│       │   │   │           └── tornado_test.po
│       │   │   ├── http1connection_test.py
│       │   │   ├── httpclient_test.py
│       │   │   ├── httpserver_test.py
│       │   │   ├── httputil_test.py
│       │   │   ├── import_test.py
│       │   │   ├── ioloop_test.py
│       │   │   ├── iostream_test.py
│       │   │   ├── locale_test.py
│       │   │   ├── locks_test.py
│       │   │   ├── log_test.py
│       │   │   ├── netutil_test.py
│       │   │   ├── options_test.cfg
│       │   │   ├── options_test.py
│       │   │   ├── process_test.py
│       │   │   ├── queues_test.py
│       │   │   ├── resolve_test_helper.py
│       │   │   ├── routing_test.py
│       │   │   ├── runtests.py
│       │   │   ├── simple_httpclient_test.py
│       │   │   ├── stack_context_test.py
│       │   │   ├── static/
│       │   │   │   ├── dir/
│       │   │   │   │   └── index.html
│       │   │   │   ├── robots.txt
│       │   │   │   ├── sample.xml
│       │   │   │   └── sample.xml.bz2
│       │   │   ├── static_foo.txt
│       │   │   ├── tcpclient_test.py
│       │   │   ├── tcpserver_test.py
│       │   │   ├── template_test.py
│       │   │   ├── templates/
│       │   │   │   └── utf8.html
│       │   │   ├── test.crt
│       │   │   ├── test.key
│       │   │   ├── testing_test.py
│       │   │   ├── twisted_test.py
│       │   │   ├── util.py
│       │   │   ├── util_test.py
│       │   │   ├── web_test.py
│       │   │   ├── websocket_test.py
│       │   │   ├── windows_test.py
│       │   │   └── wsgi_test.py
│       │   ├── testing.py
│       │   ├── util.py
│       │   ├── web.py
│       │   ├── websocket.py
│       │   └── wsgi.py
│       └── utils/
│           ├── README.md
│           ├── add_metadata.py
│           ├── bnfize
│           ├── export_notebook_code.py
│           ├── htmltonbpdf.py
│           ├── nb2jb.py
│           ├── nbautopep8.py
│           ├── nbautoslide.py
│           ├── nbdepend.py
│           ├── nbindex.py
│           ├── nbmerge.py
│           ├── nbshorten.py
│           ├── nbspellcheck.py
│           ├── nbstats.py
│           ├── nbsummarize.py
│           ├── nbsynopsis.py
│           ├── nbtoc.py
│           ├── patch_jb.py
│           ├── post_html.py
│           └── post_tex
├── pyproject.toml
├── python_code/
│   ├── LICENSE.md
│   ├── README.md
│   ├── __init__.py.in
│   └── setup.py.in
└── word/
    ├── README.md
    └── pandoc.css

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
# Normally, notebooks in this folder are saved _without_ output
*.ipynb	filter=nbstripout
*.ipynb	diff=ipynb

================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Execute the code '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
 - OS: [e.g. macOS]
 - Browser [e.g. chrome, safari]
 - Python version [e.g. 3.6]

**Additional context**
Add any other context about the problem here.


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.


================================================
FILE: .github/workflows/check-code.yml
================================================
# This is a basic workflow to help you get started with Actions

name: Python Tests

# Controls when the action will run. 
on:
  # Triggers the workflow on push or pull request events but only for the master branch
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "python-tests"
  python-tests:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.10.x", "3.11.x", "3.12.x", "3.13.x"]

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Cancel previous runs
      # - name: Cancel Previous Runs
      #   uses: styfle/cancel-workflow-action@0.9.0
      #   with:
      #     access_token: ${{ github.token }}
      - uses: actions/checkout@v4
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v5
        with:
            python-version: ${{ matrix.python-version }}

      # You can test your matrix by printing the current Python version
      - name: Show Python version
        run: python -c "import sys; print(sys.version)"

      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - name: Check out Repository
        uses: actions/checkout@v4
      
      # Runs a set of commands using the runners shell
      - name: Set up Path
        run: echo "$HOME/.local/bin" >> $GITHUB_PATH

      # The `ChangeCounter` module needs the full git repo
      # - name: Clone full git repository
      #   run: git pull --unshallow

      # Actual CI steps
      - name: Install Linux Packages
        run: |
            sudo apt-get update
            grep -v '^#' binder/apt.txt | sudo xargs -r apt-get install -y

      - name: Install Python Packages
        run: pip install -r requirements.txt

      - name: Code
        run: make -k code

      - name: Tests
        run: make -k check-code

      # - name: Start tmate debugging session in case of failure
      #   if: ${{ failure() }}
      #   uses: mxschmitt/action-tmate@v3


================================================
FILE: .github/workflows/check-imports.yml
================================================
# This is a basic workflow to help you get started with Actions

name: Import Checks

# Controls when the action will run. 
on:
  # Triggers the workflow on push or pull request events but only for the master branch
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "check-imports"
  check-imports:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Cancel previous runs
      # - name: Cancel Previous Runs
      #   uses: styfle/cancel-workflow-action@0.9.0
      #   with:
      #     access_token: ${{ github.token }}

      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - name: Check out Repository
        uses: actions/checkout@v4
      
      # We test with Python 3.12
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.12.8'

      # Runs a set of commands using the runners shell
      - name: Set up Path
        run: echo "$HOME/.local/bin" >> $GITHUB_PATH

      - name: Install Linux Packages
        run: |
            sudo apt-get update
            grep -v '^#' binder/apt.txt | sudo xargs -r apt-get install -y

      - name: Install Python Packages
        run: pip install -r requirements.txt

      - name: Code
        run: make -k code

      - name: Imports
        run: make -k check-imports

      - name: Packages
        run: make -k check-packages

      # - name: Start tmate debugging session in case of failure
      #   if: ${{ failure() }}
      #   uses: mxschmitt/action-tmate@v3


================================================
FILE: .github/workflows/check-notebooks.yml
================================================
# This is a basic workflow to help you get started with Actions

name: Notebook Tests

# Controls when the action will run. 
on:
  # Triggers the workflow on push or pull request events but only for the master branch
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "notebook-tests"
  notebook-tests:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Cancel previous runs
      # - name: Cancel Previous Runs
      #   uses: styfle/cancel-workflow-action@0.9.0
      #   with:
      #     access_token: ${{ github.token }}

      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - name: Check out Repository
        uses: actions/checkout@v4
      
      # We now test with Python 3.12
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.12.8'

      # Runs a set of commands using the runners shell
      - name: Set up Path
        run: echo "$HOME/.local/bin" >> $GITHUB_PATH

      # The `ChangeCounter` module needs the full git repo
      # - name: Clone full git repository
      #   run: git pull --unshallow

      # Actual CI steps
      - name: Install Linux Packages
        run: |
            sudo apt-get update
            grep -v '^#' binder/apt.txt | sudo xargs -r apt-get install -y

      - name: Install Python Packages
        run: pip install -r requirements.txt

      - name: Check Python Version
        run: python --version

      - name: Run Notebooks
        run: make -k full

      - name: Create HTML
        run: make -k html

      # - name: Start tmate debugging session in case of failure
      #   if: ${{ failure() }}
      #   uses: mxschmitt/action-tmate@v3


================================================
FILE: .github/workflows/check-types.yml
================================================
# This is a basic workflow to help you get started with Actions

name: Static Type Checks

# Controls when the action will run. 
on:
  # Triggers the workflow on push or pull request events but only for the master branch
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "type-checking"
  type-checking:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Cancel previous runs
      # - name: Cancel Previous Runs
      #   uses: styfle/cancel-workflow-action@0.9.0
      #   with:
      #     access_token: ${{ github.token }}

      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - name: Check out Repository
        uses: actions/checkout@v4
      
      # We now test with Python 3.12
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.12.8'

      # Runs a set of commands using the runners shell
      - name: Set up Path
        run: echo "$HOME/.local/bin" >> $GITHUB_PATH

      - name: Install Linux Packages
        run: |
            sudo apt-get update
            grep -v '^#' binder/apt.txt | sudo xargs -r apt-get install -y

      - name: Install Python Packages
        run: pip install -r requirements.txt

      - name: Check Python Version
        run: python --version

      - name: Create Code for Mypy
        run: make -k mypy

      - name: Static Type Checking
        run: make -k check-types

      # - name: Start tmate debugging session in case of failure
      #   if: ${{ failure() }}
      #   uses: mxschmitt/action-tmate@v3


================================================
FILE: .gitignore
================================================
# Mac-specific files
.DS_Store

# Tool-specific files
.ipynb_checkpoints/
__pycache__/
**/__pycache__/

# Chapter target files
html/*.html
html/*_files/
beta/html/*.html
beta/html/*_files/

python_code/*.py
python_code/*.py.out
beta/python_code/*.py
beta/python_code/*.py.out

mypy/*.py

slides/*.html
slides/*_files/
beta/slides/*.html
beta/slides/*_files/

pdf/*.pdf
pdf/*.tex
pdf/*_files/
pdf/*.aux
pdf/*.bbl
pdf/*.fdb_latexmk
pdf/*.fls
pdf/*.frm
pdf/*.lof
pdf/*.log
pdf/*.lot
pdf/*.out
pdf/*.toc
pdf/*.xdv

*.blg

nbpdf/*.pdf

word/*.docx
word/*_files/

epub/*.epub
epub/*_files/

markdown/*.md
markdown/*_files/

full_notebooks/*.ipynb
full_notebooks/*_utils/*
full_notebooks/bookutils/*

rendered/*.ipynb

.depend/*.makefile

notebooks/.jupyterlab.pid

# Derived pics
notebooks/PICS/Sitemap.svg

# Temp files
book
geckodriver.log
orders.db
FuzzManager
simply-buggy
**/my_project
import_all.py
import_packages.py
.ipynb_checkpoints
**/links.db
**/links

# Docker-make output directory
build-output/

# LS
.virtual_documents
notebooks/notebooks

# Logs
binder.log
*.py.out
.jupyter.log
.jupyterlab.log

# Caches
.mypy_cache/

# .bib timestamps
.*.bib.*

# Zeller's files
Security Testing
projects
papers
course
udacity
videos
debugging2425

# Scripts and links
*.command
*.webloc

# Course files
notebooks/CISPACourse.ipynb
notebooks/BugBoard.ipynb
notebooks/Todos.ipynb
notebooks/SimpleGrammarMiner.ipynb

# Jupyter Book
_build/**

# Pip install
build/**
python_code/debuggingbook.egg-info/

# PyCharm settings
.idea/

# VS Code settings
.vscode/
*.code-workspace


================================================
FILE: .gitmodules
================================================
[submodule "slides/reveal.js"]
	path = slides/reveal.js
	url = https://github.com/hakimel/reveal.js.git
[submodule "beta/slides/reveal.js"]
	path = beta/slides/reveal.js
	url = https://github.com/hakimel/reveal.js.git


================================================
FILE: BADGES.md
================================================
<!-- Debuggingbook README -->

<!-- Badges to be shown on project page -->

[![Code Tests](https://github.com/uds-se/debuggingbook/actions/workflows/check-code.yml/badge.svg)](https://github.com/uds-se/debuggingbook/actions/workflows/check-code.yml)
&nbsp;
[![Notebook Tests](https://github.com/uds-se/debuggingbook/actions/workflows/check-notebooks.yml/badge.svg)](https://github.com/uds-se/debuggingbook/actions/workflows/check-notebooks.yml)
&nbsp;
[![Static Type Checking](https://github.com/uds-se/debuggingbook/actions/workflows/check-types.yml/badge.svg)](https://github.com/uds-se/debuggingbook/actions/workflows/check-types.yml)
&nbsp;
[![Imports](https://github.com/uds-se/debuggingbook/actions/workflows/check-imports.yml/badge.svg)](https://github.com/uds-se/debuggingbook/actions/workflows/check-imports.yml)
&nbsp;
[![Website www.debuggingbook.org](https://img.shields.io/website-up-down-green-red/https/www.debuggingbook.org.svg)](https://www.debuggingbook.org/)

[![Launch Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/uds-se/debuggingbook/master?filepath=docs/notebooks/00_Table_of_Contents.ipynb)
&nbsp;
[![Made with Python](https://img.shields.io/badge/Made%20with-Python-blue.svg)](https://www.python.org/)
&nbsp;
[![Made with Jupyter](https://img.shields.io/badge/Made%20with-Jupyter-orange.svg)](https://www.jupyter.org/)
&nbsp;
[![License: MIT (Code), CC BY-NC-SA (Book)](https://img.shields.io/badge/License-MIT_(Code),_CC_BY--NC--SA_4.0_(Book)-blue.svg)](https://github.com/uds-se/debuggingbook/blob/master/LICENSE.md)




================================================
FILE: CITATION.cff
================================================
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Zeller"
  given-names: "Andreas"
  orcid: "https://orcid.org/0000-0003-4719-8803"
title: "The Debugging Book"
version: 1.0
date-released: 2021
url: "https://www.debuggingbook.org"
preferred-citation:
  type: book
  title: "The Debugging Book"
  authors:
  - family-names: "Zeller"
    given-names: "Andreas"
    orcid: "https://orcid.org/0000-0003-4719-8803"
  url: "https://www.debuggingbook.org"
  year: 2021


================================================
FILE: Chapters.makefile
================================================
# Debuggingbook Makefile
# This file defines the chapter files to be included

# Name of the project
PROJECT = debuggingbook

# Some metadata
BOOKTITLE = The Debugging Book
AUTHORS = Andreas Zeller
TWITTER = @Debugging_Book
MASTODON = @TheDebuggingBook

# Chapters to include in the book, in this order.
# * Chapters in `..._PART` get published.
# * Chapters in `..._PART_READY` only get published as beta, with a disclaimer.
# * Chapters in `..._PART_TODO` only get published as beta, with a disclaimer.
#      and a "todo" (wrench) marker in the menu.

# Chapter(s) to be marked as "new" in menu
NEW_CHAPTERS = \
	Alhazen.ipynb

# Introduction
INTRO_PART = \
	01_Intro.ipynb \
	Tours.ipynb \
	Intro_Debugging.ipynb
INTRO_PART_READY = 
INTRO_PART_TODO =

# Observing Executions
OBSERVING_PART = \
	02_Observing.ipynb \
	Tracer.ipynb \
	Debugger.ipynb \
	Assertions.ipynb
OBSERVING_PART_READY = 
OBSERVING_PART_TODO = 

# Flows and Dependencies
DEPENDENCIES_PART = \
	03_Dependencies.ipynb \
	Slicer.ipynb
DEPENDENCIES_PART_READY =
DEPENDENCIES_PART_TODO = 

# Simplifying Failures
EXPERIMENTING_PART = \
	04_Reducing.ipynb \
	DeltaDebugger.ipynb \
	ChangeDebugger.ipynb
EXPERIMENTING_PART_READY = 
EXPERIMENTING_PART_TODO =
	# ThreadDebugger.ipynb

# Abstracting Failures
ABSTRACTING_PART = \
	05_Abstracting.ipynb \
	StatisticalDebugger.ipynb \
	DynamicInvariants.ipynb \
	DDSetDebugger.ipynb \
	Alhazen.ipynb \
	PerformanceDebugger.ipynb
ABSTRACTING_PART_READY =
ABSTRACTING_PART_TODO =

# Repairing Failures
REPAIRING_PART = \
	06_Repairing.ipynb \
	Repairer.ipynb
REPAIRING_PART_READY =
REPAIRING_PART_TODO =

# Debugging in the Large
IN_THE_LARGE_PART = \
	07_In_the_Large.ipynb \
	Tracking.ipynb \
	ChangeCounter.ipynb
IN_THE_LARGE_PART_READY =
IN_THE_LARGE_PART_TODO =

# Appendices for the book
APPENDICES = \
	99_Appendices.ipynb \
	ExpectError.ipynb \
	Timer.ipynb \
	Timeout.ipynb \
	ClassDiagram.ipynb \
	StackInspector.ipynb

# Additional notebooks for special pages (not to be included in distributions)
FRONTMATTER = \
	index.ipynb
EXTRAS = \
	ReleaseNotes.ipynb \
	Importing.ipynb \
	Guide_for_Authors.ipynb \
	Template.ipynb \
	404.ipynb \
	Time_Travel_Debugger.ipynb \
	Reducing_Code.ipynb \
	Repairing_Code.ipynb \
	Project_of_your_choice.ipynb \
	IllustratedCode.ipynb

# These chapters will show up in the "public" version
PUBLIC_CHAPTERS = \
	$(INTRO_PART) \
	$(OBSERVING_PART) \
	$(DEPENDENCIES_PART) \
	$(EXPERIMENTING_PART) \
	$(ABSTRACTING_PART) \
	$(REPAIRING_PART) \
	$(IN_THE_LARGE_PART)

# These chapters will show up in the "beta" version
CHAPTERS = \
	$(INTRO_PART) \
	$(INTRO_PART_READY) \
	$(INTRO_PART_TODO) \
	$(OBSERVING_PART) \
	$(OBSERVING_PART_READY) \
	$(OBSERVING_PART_TODO) \
	$(DEPENDENCIES_PART) \
	$(DEPENDENCIES_PART_READY) \
	$(DEPENDENCIES_PART_TODO) \
	$(EXPERIMENTING_PART) \
	$(EXPERIMENTING_PART_READY) \
	$(EXPERIMENTING_PART_TODO) \
	$(ABSTRACTING_PART) \
	$(ABSTRACTING_PART_READY) \
	$(ABSTRACTING_PART_TODO) \
	$(REPAIRING_PART) \
	$(REPAIRING_PART_READY) \
	$(REPAIRING_PART_TODO) \
	$(IN_THE_LARGE_PART) \
	$(IN_THE_LARGE_PART_READY) \
	$(IN_THE_LARGE_PART_TODO)

READY_CHAPTERS = \
	$(INTRO_PART_READY) \
	$(OBSERVING_PART_READY) \
	$(DEPENDENCIES_PART_READY) \
	$(EXPERIMENTING_PART_READY) \
	$(ABSTRACTING_PART_READY) \
	$(REPAIRING_PART_READY) \
	$(IN_THE_LARGE_PART_READY)

TODO_CHAPTERS = \
	$(INTRO_PART_TODO) \
	$(OBSERVING_PART_TODO) \
	$(DEPENDENCIES_PART_TODO) \
	$(EXPERIMENTING_PART_TODO) \
	$(ABSTRACTING_PART_TODO) \
	$(REPAIRING_PART_TODO) \
	$(IN_THE_LARGE_PART_TODO)

## Specific settings

# No timeouts; debuggingbook/Tracing can take up to 15 minutes to render
EXECUTE_TIMEOUT = 900
TIME = time

# Default target
web:

# No type checking for IllustratedCode
mypy/.IllustratedCode.py.out:
	echo $(PY_SUCCESS_MAGIC) >> $@ 

================================================
FILE: LICENSE.md
================================================
# "The Debugging Book" License

The content of this project is licensed under the _Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License_. The source code that is part of the content, as well as the source code used to format and display that content is licensed under the _MIT License_.  Both licenses are reproduced below.


## Creative Commons License
## Attribution-NonCommercial-ShareAlike 4.0 International

Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.

### Using Creative Commons Public Licenses

Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses.

* __Considerations for licensors:__ Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. [More considerations for licensors](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors).

* __Considerations for the public:__ By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. [More considerations for the public](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees).

## Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License

By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.

### Section 1 – Definitions.

a. __Adapted Material__ means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.

b. __Adapter's License__ means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.

c. __BY-NC-SA Compatible License__ means a license listed at [creativecommons.org/compatiblelicenses](http://creativecommons.org/compatiblelicenses), approved by Creative Commons as essentially the equivalent of this Public License.

d. __Copyright and Similar Rights__ means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.

e. __Effective Technological Measures__ means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.

f. __Exceptions and Limitations__ means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.

g. __License Elements__ means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution, NonCommercial, and ShareAlike.

h. __Licensed Material__ means the artistic or literary work, database, or other material to which the Licensor applied this Public License.

i. __Licensed Rights__ means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.

h. __Licensor__ means the individual(s) or entity(ies) granting rights under this Public License.

i. __NonCommercial__ means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange.

j. __Share__ means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.

k. __Sui Generis Database Rights__ means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.

l. __You__ means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.

### Section 2 – Scope.

a. ___License grant.___

 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:

  A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and

  B. produce, reproduce, and Share Adapted Material for NonCommercial purposes only.

 2. __Exceptions and Limitations.__ For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
    
 3. __Term.__ The term of this Public License is specified in Section 6(a).

 4. __Media and formats; technical modifications allowed.__ The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
    
 5. __Downstream recipients.__

  A. __Offer from the Licensor – Licensed Material.__ Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.

  B. __Additional offer from the Licensor – Adapted Material.__ Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply.

  C. __No downstream restrictions.__ You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.

 6. __No endorsement.__ Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
    
b. ___Other rights.___

 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.

 2. Patent and trademark rights are not licensed under this Public License.

 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes.
    
### Section 3 – License Conditions.

Your exercise of the Licensed Rights is expressly made subject to the following conditions.

a. ___Attribution.___

 1. If You Share the Licensed Material (including in modified form), You must:

  A. retain the following if it is supplied by the Licensor with the Licensed Material:

   i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);

   ii. a copyright notice;

   iii. a notice that refers to this Public License;

   iv. a notice that refers to the disclaimer of warranties;

   v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;

  B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and

  C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.

 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.

 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.

b. ___ShareAlike.___

In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply.

 1. The Adapter’s License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-NC-SA Compatible License.      

 2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material.

 3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply.

### Section 4 – Sui Generis Database Rights.

Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:

a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only;

b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and

c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.

For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.

### Section 5 – Disclaimer of Warranties and Limitation of Liability.

a. __Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.__

b. __To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.__

c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.

### Section 6 – Term and Termination.

a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.

b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:

 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or

 2. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or

 For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.

c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.

d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.

### Section 7 – Other Terms and Conditions.

a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.

b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.

### Section 8 – Interpretation.

a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.

b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.

c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.

d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.

> Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at [creativecommons.org/policies](http://creativecommons.org/policies), Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.
>
> Creative Commons may be contacted at [creativecommons.org](http://creativecommons.org/).


## MIT License

Copyright (c) 2018-2021 CISPA, authors, and contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: README.md
================================================
<!-- Debuggingbook README -->

<!-- Badges to be shown on project page -->

[![Code Tests](https://github.com/uds-se/debuggingbook/actions/workflows/check-code.yml/badge.svg)](https://github.com/uds-se/debuggingbook/actions/workflows/check-code.yml)
&nbsp;
[![Notebook Tests](https://github.com/uds-se/debuggingbook/actions/workflows/check-notebooks.yml/badge.svg)](https://github.com/uds-se/debuggingbook/actions/workflows/check-notebooks.yml)
&nbsp;
[![Static Type Checking](https://github.com/uds-se/debuggingbook/actions/workflows/check-types.yml/badge.svg)](https://github.com/uds-se/debuggingbook/actions/workflows/check-types.yml)
&nbsp;
[![Imports](https://github.com/uds-se/debuggingbook/actions/workflows/check-imports.yml/badge.svg)](https://github.com/uds-se/debuggingbook/actions/workflows/check-imports.yml)
&nbsp;
[![Website www.debuggingbook.org](https://img.shields.io/website-up-down-green-red/https/www.debuggingbook.org.svg)](https://www.debuggingbook.org/)

[![Launch Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/uds-se/debuggingbook/master?filepath=docs/notebooks/00_Table_of_Contents.ipynb)
&nbsp;
[![Made with Python](https://img.shields.io/badge/Made%20with-Python-blue.svg)](https://www.python.org/)
&nbsp;
[![Made with Jupyter](https://img.shields.io/badge/Made%20with-Jupyter-orange.svg)](https://www.jupyter.org/)
&nbsp;
[![License: MIT (Code), CC BY-NC-SA (Book)](https://img.shields.io/badge/License-MIT_(Code),_CC_BY--NC--SA_4.0_(Book)-blue.svg)](https://github.com/uds-se/debuggingbook/blob/master/LICENSE.md)


# The Debugging Book

__Welcome to "The Debugging Book"!__ 
Software has bugs, and finding bugs can involve lots of effort.  This book addresses this problem by _automating_ software debugging, specifically by _locating errors and their causes automatically_.  Recent years have seen the development of novel techniques that lead to dramatic improvements in automated software debugging.  They now are mature enough to be assembled in a book – even with executable code. 
<!--
**<span style="background-color: yellow">
    <i class="fa fa-fw fa-wrench"></i>
This book is work in progress. It will be released to the public in Spring 2021.</span>**
-->


```python
import bookutils.setup
```


```python
from bookutils import YouTubeVideo
YouTubeVideo("-nOxI6Ev_I4")
```





<a href="https://www.youtube-nocookie.com/embed/-nOxI6Ev_I4" target="_blank">
<img src="https://www.debuggingbook.org/html/PICS/youtube.png" width=640>
</a>
        



## A Textbook for Paper, Screen, and Keyboard

You can use this book in multiple ways:

* You can __read chapters in your browser__.  Check out the list of chapters in the menu above, or start right away with the [introduction to debugging](https://www.debuggingbook.org/html/Intro_Debugging.html) or [how debuggers work](https://www.debuggingbook.org/html/Debugger.html).  All code is available for download.

* You can __interact with chapters as Jupyter Notebooks__ (beta).  This allows you to edit and extend the code, experimenting _live in your browser._  Select "Binder" at the top of any chapter. <a href="https://mybinder.org/v2/gh/uds-se/debuggingbook/HEAD?labpath=docs/notebooks/Debugger.ipynb" target=_blank>Try interacting with the introduction to interactive debuggers.</a>

* You can __use the code in your own projects__.  You can [download and install the code and/or the notebooks on your machine](https://www.debuggingbook.org/html/Importing.html).  These code files can be executed, yielding (hopefully) the same results as the notebooks.

## Who this Book is for

This work is designed as a _textbook_ for a course in software debugging; as _supplementary material_ in a software testing or software engineering course; and as a _resource for software developers_. We cover fault localization, program slicing, input reduction, automated repair, and much more, illustrating all techniques with code examples that you can try out yourself.

## News

This book is _work in progress._  All chapters planned are out now, but we keep on refining text and code with [minor and major releases.](https://www.debuggingbook.org/html/ReleaseNotes.html) To get notified on updates, <a href="https://mastodon.social/@TheDebuggingBook">follow us on Mastodon</a>.

<!--


================================================
FILE: _config.yml
================================================
title: The Debugging Book
author: Andreas Zeller
copyright: 2021-2025 CISPA Helmholtz Center for Information Security (www.cispa.de). The content of this project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. The source code that is part of the content, as well as the source code used to format and display that content is licensed under the MIT License.
logo: "_static/debuggingbook.png"

bibtex_bibfiles:
  - fuzzingbook.bib

latex:
  latex_documents:
     targetname: debuggingbook.tex

sphinx:
  config:
    latex_engine: xelatex
    latex_show_pagerefs: true
    latex_show_urls: footnote

execute:
  execute_notebooks: 'off'
  stderr_output: show
  timeout: 300

parse:
  myst_enable_extensions:
    # - amsmath
    - colon_fence
    - dollarmath
    # - html_admonition
    # - html_image
    - linkify
    - replacements
    - smartquotes
    - strikethrough
    - substitution
    - tasklist
    - deflist

html:
  announcement: '<p>This is a beta version of debuggingbook.org, currently in development. See the <a href="https://debuggingbook.org/classic/"  style="color:white!important;">classic site</a> for the 2024 version.</p>'
  use_issues_button: true
  use_repository_button: true
  extra_footer: |
    <div>
      Copyright &copy; 2021–2025 <a href="https://www.cispa.de/">CISPA Helmholtz Center for Information Security</a>.
      The <strong>content</strong> of this project is licensed under the <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
      The <strong>source code</strong> that is part of the content, as well as the source code used to format and display that content is licensed under the <a href="https://github.com/uds-se/debuggingbook/blob/master/LICENSE.md#mit-license">MIT License</a>.
      <br>
      <a href="https://cispa.de/en/impressum">Imprint</a> &middot; <a href="/html/index.html#how-do-i-cite-your-work">Cite</a>
    </div>

sphinx:
  config:
    html_show_copyright: false

repository:
  url: "https://github.com/uds-se/debuggingbook/"
  path_to_book: "docs/notebooks"
  branch: master

launch_buttons:
  binderhub_url: "https://mybinder.org"
  thebe: false  # Does not support local imports


================================================
FILE: _static/custom.css
================================================
/* 
    CSS stylesheet for fuzzingbook

    This is used for the JB HTML version.
*/

/* Loading fonts in Jupyter */
@import url(https://fonts.googleapis.com/css?family=Fira+Mono:400,500,700|Raleway:400|Open+Sans|Source+Code+Pro); /* DebuggingBook */


/* Fonts */
h1, h2, h3, h4, h5 {
	font-family: 'Raleway', Helvetica, Arial, sans-serif; /* DebuggingBook */
}

body {
  font-family: 'Open Sans', sans-serif;
}

code, kbd, pre, samp {
  font-family: 'Fira Mono', 'Source Code Pro', monospace;
}

.CodeMirror pre {
  font-family: 'Fira Mono', 'Source Code Pro', monospace;
}


/* Headers are purple, too */
/* should be purple, but must work in dark & light mode */
/* Alas, the [data-theme="light"] selector has no effect: https://pydata-sphinx-theme.readthedocs.io/en/v0.9.0/user_guide/customizing.html*/ 

h1, h2, h3 {
    color: #b070a0!important;
}

/* And links also come in shades of putple */
a, button {
    color: #b070a0!important;
}


svg a {
    text-decoration: none!important;
}


================================================
FILE: _static/mastodon-timeline.css
================================================
/* Mastodon embed feed timeline v3.10.4 */
/* More info at: */
/* https://gitlab.com/idotj/mastodon-embed-feed-timeline */

/* Variables */
:root {
  --text-max-lines: none;
}

/* Theme colors */
:root,
html[data-theme="light"] {
  --bg-color: #fff;
  --bg-hover-color: #d9e1e8;
  --line-gray-color: #c0cdd9;
  --contrast-gray-color: #606984;
  --content-text: #000;
  --link-color: #3a3bff;
  --error-text-color: #8b0000;
}
html[data-theme="dark"] {
  --bg-color: #282c37;
  --bg-hover-color: #313543;
  --line-gray-color: #393f4f;
  --contrast-gray-color: #606984;
  --content-text: #fff;
  --link-color: #8c8dff;
  --error-text-color: #fe6c6c;
}

/* Main container */
.mt-container {
  height: 100%;
  overflow-y: auto;
  position: relative;
  background-color: var(--bg-color);
  scrollbar-color: var(--line-gray-color) var(--bg-color);
  scrollbar-width: thin;
}
.mt-container::-webkit-scrollbar {
  width: 0.25rem;
  height: 0.25rem;
}
.mt-container::-webkit-scrollbar-thumb {
  background-color: var(--line-gray-color);
  border: none;
  border-radius: 3rem;
}
.mt-container::-webkit-scrollbar-thumb:hover,
.mt-container::-webkit-scrollbar-thumb:active {
  background-color: var(--line-gray-color);
}
.mt-container::-webkit-scrollbar-track {
  background-color: var(--bg-color);
  border: none;
  border-radius: 0;
}
.mt-container::-webkit-scrollbar-track:hover,
.mt-container::-webkit-scrollbar-track:active,
.mt-container::-webkit-scrollbar-corner {
  background-color: var(--bg-color);
}
.mt-container a:link,
.mt-container a:active,
.mt-container a {
  text-decoration: none;
  color: var(--link-color);
}
.mt-container a:not(.mt-toot-preview):hover {
  text-decoration: underline;
}
.mt-body {
  padding: 1rem clamp(0.25rem, 4vw, 1.5rem);
  white-space: pre-wrap;
  word-wrap: break-word;
}
.mt-body .invisible {
  font-size: 0;
  line-height: 0;
  display: inline-block;
  width: 0;
  height: 0;
  position: absolute;
}

/* Toot container */
.mt-toot {
  margin: 0.25rem;
  padding: 1rem 0.5rem 1.5rem 0.5rem;
  position: relative;
  min-height: 3.75rem;
  background-color: transparent;
  border-bottom: 1px solid var(--line-gray-color);
}
.mt-toot:hover,
.mt-toot:focus {
  cursor: pointer;
  background-color: var(--bg-hover-color);
}
.mt-toot p:last-child {
  margin-bottom: 0;
}

/* User avatar */
.mt-toot-avatar {
  margin-right: 0.75rem;
}
.mt-toot-avatar-standard {
  width: 2.25rem;
  height: 2.25rem;
}
.mt-toot-avatar-boosted {
  width: 3rem;
  height: 3rem;
  position: relative;
}
.mt-toot-avatar-image-big img {
  aspect-ratio: 1/1;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 0.25rem;
  overflow: hidden;
}
.mt-toot-avatar-image-small img {
  aspect-ratio: 1/1;
  width: 1.5rem;
  height: 1.5rem;
  top: 1.5rem;
  left: 1.5rem;
  position: absolute;
  border-radius: 0.25rem;
  overflow: hidden;
}

/* User name and date */
.mt-toot-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 1rem;
}
.mt-toot-header-user {
  font-weight: 600;
  margin-top: 0.5rem;
  padding-right: 1rem;
}
.mt-toot-header-user > a {
  display: flex;
  align-items: flex-start;
  color: var(--content-text) !important;
  overflow-wrap: anywhere;
}
.mt-toot-header-date {
  font-size: 0.75rem;
  text-align: right;
  margin: 0.5rem 0 0 auto;
}
.mt-toot-header-date > a {
  color: var(--contrast-gray-color) !important;
}

/* Text */
.mt-toot-text {
  margin-bottom: 1rem;
  color: var(--content-text);
}
.mt-toot-text .spoiler-btn {
  display: inline-block;
}
.mt-toot-text .spoiler-text-hidden {
  display: none;
}
.mt-toot-text.truncate {
  display: -webkit-box;
  overflow: hidden;
  -webkit-line-clamp: var(--text-max-lines);
  -webkit-box-orient: vertical;
}
.mt-toot-text:not(.truncate) .ellipsis::after {
  content: "...";
}
.mt-toot-text blockquote {
  border-left: 0.25rem solid var(--line-gray-color);
  margin-left: 0;
  padding-left: 0.5rem;
}
.mt-toot-header-user .custom-emoji,
.mt-toot-text .custom-emoji {
  height: 1.5rem;
  min-width: 1.5rem;
  margin-bottom: -0.25rem;
  width: auto;
}

/* Poll */
.mt-toot-poll {
  margin-bottom: 1rem;
  color: var(--content-text);
}
.mt-toot-poll ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.mt-toot-poll ul li {
  font-size: 0.9rem;
  margin-bottom: 0.5rem;
}
.mt-toot-poll.mt-toot-poll-expired ul li {
  color: var(--contrast-gray-color);
}
.mt-toot-poll ul li:not(:last-child) {
  margin-bottom: 0.25rem;
}
.mt-toot-poll ul li:before {
  content: "◯";
  padding-right: 0.5rem;
}
.mt-toot-poll.mt-toot-poll-expired ul li:before {
  content: "";
  padding-right: 0;
}

/* Medias */
.mt-toot-media {
  overflow: hidden;
  margin-bottom: 1rem;
}
.mt-toot-media > .spoiler-btn {
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 1;
  transform: translate(-50%, -50%);
}
.mt-toot-media-spoiler > img {
  filter: blur(2rem);
}
.img-ratio14_7 {
  position: relative;
  padding-top: 56.95%;
  width: 100%;
}
.img-ratio14_7 > img {
  width: 100%;
  height: auto;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
  color: var(--content-text);
}

/* Preview link */
.mt-toot-preview {
  min-height: 4rem;
  display: flex;
  flex-direction: row;
  border: 1px solid var(--line-gray-color);
  border-radius: 0.5rem;
  color: var(--link-color);
  font-size: 0.8rem;
  margin: 1rem 0;
  overflow: hidden;
}
.mt-toot-preview-image {
  width: 40%;
  align-self: stretch;
}
.mt-toot-preview-image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  color: var(--content-text);
}
.mt-toot-preview-noImage {
  width: 40%;
  font-size: 1.5rem;
  align-self: center;
  text-align: center;
}
.mt-toot-preview-content {
  width: 60%;
  display: flex;
  align-self: center;
  flex-direction: column;
  padding: 0.5rem 1rem;
  gap: 0.5rem;
}
.mt-toot-preview-title {
  font-weight: 600;
}

/* Spoiler button */
.spoiler-btn {
  border-radius: 2px;
  background-color: var(--line-gray-color);
  border: 0;
  color: var(--content-text);
  font-weight: 700;
  font-size: 0.7rem;
  padding: 0 0.35rem;
  text-transform: uppercase;
  line-height: 1.25rem;
  cursor: pointer;
  vertical-align: top;
}

/* Counter bar */
.mt-toot-counter-bar {
  display: flex;
  min-width: 6rem;
  max-width: 40rem;
  justify-content: space-between;
  color: var(--contrast-gray-color);
}
.mt-toot-counter-bar-replies,
.mt-toot-counter-bar-reblog,
.mt-toot-counter-bar-favorites {
  display: flex;
  font-size: 0.75rem;
  gap: 0.25rem;
  align-items: center;
  opacity: 0.5;
}
.mt-toot-counter-bar-replies > svg,
.mt-toot-counter-bar-reblog > svg,
.mt-toot-counter-bar-favorites > svg {
  width: 1rem;
  fill: var(--contrast-gray-color);
}

/* Error */
.mt-error {
  position: absolute;
  display: flex;
  flex-direction: column;
  height: calc(100% - 3.5rem);
  width: calc(100% - 4.5rem);
  justify-content: center;
  align-items: center;
  color: var(--error-text-color);
  padding: 0.75rem;
  text-align: center;
}
.mt-error-icon {
  font-size: 2rem;
}
.mt-error-message {
  padding: 1rem 0;
}
.mt-error-message hr {
  color: var(--line-gray-color);
}

/* Loading spinner */
.mt-body > .loading-spinner {
  position: absolute;
  width: 3rem;
  height: 3rem;
  margin: auto;
  top: calc(50% - 1.5rem);
  right: calc(50% - 1.5rem);
}
.loading-spinner {
  background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.0' viewBox='0 0 128 128' %3E%3Cg%3E%3Cpath d='M64 128A64 64 0 0 1 18.34 19.16L21.16 22a60 60 0 1 0 52.8-17.17l.62-3.95A64 64 0 0 1 64 128z' fill='%23404040'/%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 64 64' to='360 64 64' dur='1000ms' repeatCount='indefinite'%3E%3C/animateTransform%3E%3C/g%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center center;
  background-color: transparent;
  background-size: min(2.5rem, calc(100% - 0.5rem));
}

/* Footer (See more link) */
.mt-footer {
  margin: 1rem auto 2rem auto;
  padding: 0 2rem;
  text-align: center;
}

/* Hidden elements */
.visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}


================================================
FILE: _toc.yml
================================================
format: jb-book
root: index
parts:
  - caption: Introduction
    chapters:
    - file: Tours
    - file: Intro_Debugging
  - caption: Observing Executions
    chapters:
    - file: Tracer
    - file: Debugger
    - file: Assertions
  - caption: Flows and Dependencies
    chapters:
    - file: Slicer
  - caption: Reducing Failure Causes
    chapters:
    - file: DeltaDebugger
    - file: ChangeDebugger
  - caption: Abstracting Failures
    chapters:
    - file: StatisticalDebugger
    - file: DynamicInvariants
    - file: DDSetDebugger
    - file: Alhazen
    - file: PerformanceDebugger
  - caption: Automatic Repair
    chapters:
    - file: Repairer
  - caption: Debugging in the Large
    chapters:
    - file: Tracking
    - file: ChangeCounter
  - caption: Appendices
    chapters:
    - file: ExpectError
    - file: Timer
    - file: Timeout
    - file: ClassDiagram
    - file: StackInspector
  - caption: About This Book
    chapters:
    - file: ReleaseNotes
    - file: Importing
    - file: Copyright
    - file: Guide_for_Authors


================================================
FILE: binder/Dockerfile
================================================
# Dockerfile for fuzzingbook/debuggingbook (experimental)

# The repo2docker script takes a _very_ long time to execute,
# causing timeouts on mybinder. So, we provide this lightweight
# Dockerfile instead.

# To test, use
#     make docker-image
# and then
#     make docker-run (for a jupyter notebook)
#     make docker-shell (for a bash shell)

# For more info, see
# https://mybinder.readthedocs.io/en/latest/tutorials/dockerfile.html
# https://github.com/binder-examples/minimal-dockerfile

# This Dockerfile is meant to be used in the mybinder environment,
# but it can also serve as a base to deploy docker images.

# From docker2repo
FROM docker.io/library/buildpack-deps:jammy

# Project name
ARG PROJECT=debuggingbook
ARG REPO=https://github.com/uds-se/${PROJECT}.git

# Meta-data
LABEL description="${PROJECT}.org image from ${REPO}"

# Install git and pip
RUN apt-get update
RUN apt-get install -y git python3 python-is-python3 pip npm gcc

# Some version info
RUN echo "This is ${PROJECT} with $(python --version)" 1>&2

# Install graphviz
# For some reason, this may fail when installing via 'apt.txt' (see below)
RUN apt-get install -y graphviz libgraphviz-dev

# Install jupyter
RUN pip install --no-cache --upgrade pip && \
    pip install --no-cache notebook jupyterlab

# Install mermaid
RUN npm i -g mermaid

# From postBuild script – apparently, we have to run this as root
RUN pip install jupyterlab-markup
RUN pip install jupyterlab-cell-flash
RUN jupyter labextension disable "@jupyterlab/apputils-extension:announcements"

# Add the default user
ARG NB_USER=jovyan
ARG NB_UID=1000
ENV USER=${NB_USER}
ENV HOME=/home/${NB_USER}

RUN adduser --disabled-password \
    --gecos "Default user" \
    --uid ${NB_UID} \
    ${NB_USER}
WORKDIR ${HOME}

# Make sure the contents of our repo are in ${HOME}
COPY . ${HOME}
WORKDIR ${HOME}

# Get the repo
RUN git clone --depth 1 ${REPO}
RUN chown -R ${NB_UID} ${HOME}
WORKDIR ${PROJECT}

# Install the required Linux packages
RUN apt-get install -y $(grep -v '^#' binder/apt.txt); exit 0

# From here on, we are a user
USER ${NB_USER}

# Add local bin path
ENV PATH="/home/${NB_USER}/.local/bin:$PATH"

# Diagnostics
RUN python3 -c 'import sys, platform; print(sys.version, sys.platform, platform.machine(), file=sys.stderr)'

# Set up the conda environment
# (Skipping for now, as installing conda is hard,
#  and apparently we can do without)
# RUN conda env create -f binder/environment.yml
# RUN conda activate myenv

# Install the required Python packages
RUN python3 -m pip install .
RUN python3 -m pip install ".[binder]"

# Run the postBuild script (to set up Jupyter, sign notebooks and more)
RUN bash binder/postBuild

# Expose port 8888, so it can be reached from the outside (for local testing)
EXPOSE 8888

# If nothing else is specified, start a Jupyter server
CMD ["sh", "-c", "jupyter lab --port=8888 --no-browser --ip=* docs/notebooks"]


================================================
FILE: binder/README.md
================================================
This folder holds the configuration files for the Binder service.
See [repo2docker](https://repo2docker.readthedocs.io/en/latest/) for details.

The configuration files are:

* apt.txt - APT Packages (= Linux programs) used
* environment.yml - Python packages used
* requirements.txt - more Python packages used

These files can also be used to create a conda environment for the book as follows:

```
conda env create -f binder/environment.yml
source activate debuggingbook
```

The provided `Dockerfile` allows creating a lightweight Docker image -
especially for `mybinder`, where the default `repo2docker` script
takes too long to execute.

================================================
FILE: binder/apt.txt
================================================
# APT packages to install in Docker files
# From https://github.com/DiODeProject/MuMoT

# These would be helpful for PDF export
# texlive-latex-base
# texlive-latex-recommended
# texlive-science
# texlive-latex-extra
# texlive-fonts-recommended
# texlive-xetex
# texlive-generic-recommended
# dvipng
# ghostscript

# This is needed for drawing trees
graphviz
libgraphviz-dev

# This is needed for converting SVGs
inkscape

# Selenium
firefox

# System invariants
valgrind

# Magic
libmagic1

# Cargo
cargo

================================================
FILE: binder/environment.yml
================================================
name: debuggingbook
channels:
  - defaults
  - anaconda-fusion
  - conda-forge
  - bjornfjohansson
  - anaconda-platform
dependencies:
  - python=3.9.7  # Our official development version
  - matplotlib
  - numpy
  - scipy
  - pandas
  - graphviz
  - autopep8
  - notedown
  - markdown
  - mypy
  - selenium
  - geckodriver
  - django
  - pip
  - pip:
      - graphviz
      - pydot
      - yapf
      - autopep8
      - svglib
      - jupyter_contrib_nbextensions
      - showast
      - git+https://github.com/uds-se/pyan#egg=pyan
      - python-magic
      - fuzzingbook
      - pydriller
      - diff_match_patch
      - scikit_learn
      - easyplotly
      - beautifulsoup4
      - lxml
      - networkx

      


================================================
FILE: binder/postBuild
================================================
#!/bin/bash

# Enable incompatible extensions
# echo postBuild: Enabling incompatible Jupyter extensions...
# NBCONFIG_PATH=$HOME/.jupyter/nbconfig
# mkdir -p $NBCONFIG_PATH
# echo '{
#     "nbext_hide_incompat": false
# }' > $NBCONFIG_PATH/common.json

# Install and enable Jupyter nbextensions
# https://github.com/binder-examples/jupyter-extension
# https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/install.html
# echo postBuild: Installing Jupyter extensions...
# jupyter contrib nbextension install --user
# jupyter nbextension enable toc2/main --user
# jupyter nbextension enable exercise2/main --user
# jupyter nbextensions_configurator enable --user
# jupyter nbextension list

# Install and set up Jupyter lab extensions
echo postBuild: Installing Jupyter Lab extensions...
pip install jupyterlab-markup  # Mermaid in Jupyter Lab
pip install jupyterlab-cell-flash
jupyter labextension disable "@jupyterlab/apputils-extension:announcements"
jupyter lab build

# Install grcov
echo postBuild: Installing grcov...
cargo install grcov

# # Install mermaid
echo postBuild: Installing mermaid...
npm i mermaid

# run matplotlib once to generate the font cache
echo postBuild: Generating matplotlib font cache...
python3 -c "import matplotlib as mpl; mpl.use('Agg'); import pylab as plt; fig, ax = plt.subplots(); fig.savefig('test.png')"
test -e test.png && rm test.png

# Trust notebooks such that users can see their HTML and JS output
echo postBuild: Trusting notebooks...
for notebook in notebooks/*.ipynb docs/notebooks/*.ipynb docs/beta/notebooks/*.ipynb; do
    # echo postBuild: Trusting notebook "$notebook" ...
    jupyter trust "$notebook"
done

# Create custom.css
echo postBuild: Creating custom.css...
CUSTOM_PATH=$HOME/.jupyter/custom
mkdir -p $CUSTOM_PATH
cat <<END > $CUSTOM_PATH/custom.css
/* 
    CSS stylesheet for fuzzingbook + debuggingbook

    This is used both for the HTML version 
    as well as for the Jupyter Notebook version.

    To apply this on local Jupyter notebook sessions, copy it to
    ~/.jupyter/custom/custom.css
*/

/* Loading fonts in Jupyter */
@import url(https://fonts.googleapis.com/css?family=Fira+Mono:400,500,700|Raleway:300|Open+Sans|Source+Code+Pro); /* DebuggingBook */


/* Fonts */
h1, h2, h3, h4, h5 {
	font-family: 'Raleway', Helvetica, Arial, sans-serif; /* DebuggingBook */
}

body {
  font-family: 'Open Sans', sans-serif;
}

code, kbd, pre, samp {
  font-family: 'Fira Mono', 'Source Code Pro', 'Courier', monospace;
}

.CodeMirror pre {
  font-family: 'Fira Mono', 'Source Code Pro', 'Courier', monospace;
}

/* Font sizes */
/* We use somewhat smaller fonts for small devices and print */

p, li, summary {
	font-size: 16px;
	line-height: 26px;
}
@media only screen and (max-width: 600px) {
    p, li, summary {
    	font-size: 14px;
    	line-height: 24px;
    }
}
@media print {
    p, li, summary {
    	font-size: 12px;
    	line-height: 18px;
    }
}

code, kbd, pre, samp {
  font-size: 14px;
  line-height: 18px;
}
.CodeMirror pre {
  font-size: 14px;
  line-height: 18px;
}
/* Code size must be extra small to fit on screen */
@media only screen and (max-width: 600px) {
    code, kbd, pre, samp {
      font-size: 12px;
      line-height: 18px;
    }
    .CodeMirror pre {
      font-size: 12px;
      line-height: 18px;
    }
}
@media print {
    code, kbd, pre, samp {
      font-size: 10px !important;
      line-height: 14px;
    }
    .CodeMirror pre {
      font-size: 10px !important;
      line-height: 14px;
    }
}


/* Titles */

/* Book title */
/* Patua One looks better in normal weight */
section > h1 {
	font-size: 48px!important;
    font-weight: normal!important;
}

/* Chapter title */
h1 {
	font-size: 38px!important;
    font-weight: normal!important;
}

/* Section */
h2 {
	font-size: 28px!important;
    font-weight: normal!important;
}

/* Subsection */
h3 {
	font-size: 24px!important;
    font-weight: normal!important;
}

/* More sections */
h4, h5 {
	font-size: 20px!important;
    font-weight: normal!important;
}


/* Small screens */
@media only screen and (max-width: 600px) {
    section > h1 { font-size: 36px!important; }
    h1 { font-size: 32px!important; }
    h2 { font-size: 26px!important; }
    h3 { font-size: 22px!important; }
    h4, h5, h6, summary {
        { font-size: 18px!important; }
    };
}
/* Print */
@media print {
    section > h1 { font-size: 32px!important; }
    h1 { font-size: 26px!important; }
    h2 { font-size: 22px!important; }
    h3 { font-size: 18px!important; }
    h4, h5, h6, summary {
        { font-size: 14px!important; }
    };
}



/* Exercises */
/* Some color tweaks to exercise2 buttons */
.onoffswitch-label {
    border: 2px solid #ffffff!important;
}

/* Show solution */
.onoffswitch-inner:after {
    background-color: #B03A2E!important; 
    color: #ffffff!important;
}

/* Hide solution */
.onoffswitch-inner:before {
    background-color: #F1948A!important; 
    color: #000000!important;
}




/* Jupyter Table of Contents */
/* See https://github.com/ipython-contrib/jupyter_contrib_nbextensions/blob/master/src/jupyter_contrib_nbextensions/nbextensions/toc2/main.css */
#toc-wrapper .toc-item-num {
    font-family: 'Raleway', Helvetica, Arial, sans-serif!important; /* DebuggingBook */
}

#toc-wrapper li > span:hover {
  background-color: plum!important;  /* DebuggingBook */
}
.toc-item li { 
    font-size: 14px!important; 
    font-weight: normal!important;
}
#toc-wrapper .header {
  font-size: 20px!important;
  color: purple; /* DebuggingBook */
  font-family: 'Raleway', Helvetica, Arial, sans-serif; /* DebuggingBook */
  font-weight: normal!important;
}



/* Colors */
/* We want white code boxes on a light grey background */
body {
    background-color: #F0F0F0;
}
/* But not when it's print */
@media print {
    background-color: white;
}

.container {
    background-color: #F8F8F8!important;    
}
@media print {
    background-color: white!important;
}


.input_area, .output_area {
    background-color: white!important;    
}

/* Regular outputs come in blue, errors in red */
.output_area pre {
    color: darkblue!important;
/*  font-weight: bold; */
}

.output_stderr pre {
    color: #B03A2E!important;
}

/* Headers are purple */
h1, h2, h3 {
    color: purple!important; /* Debuggingbook */
}

h4, h5, h6, summary {
    color: black;
}


/* And links also come in shades of purple */ /* Debuggingbook */
a:link { /* unvisited link */
    color: purple;
    /* text-decoration: none!important; */
}

a:visited {
    color: purple;
    /* text-decoration: none!important; */
}

a:hover, a:focus {
    color: fuchsia;
    /* text-decoration: none!important; */
    /* font-weight: bolder!important; */
}

a:active {
    color: magenta;
    /* text-decoration: none!important; */
}

svg a {
    text-decoration: none!important;
}


/* Make selections yellow; easier to see in classroom */
::selection {
    background: #ffff50;
}
::-moz-selection { /* Code for Firefox */
    background: #ffff50;
}


/* Imprint */
.imprint {
	font-size: 12px;
    line-height: 16px;
    margin-top: 1cm;
}
@media print {
    .imprint {
    	font-size: 9px;
        line-height: 12px;
    }
}

/* Synopsis */
.synopsis {
    border-style: dotted;
    padding-top: 0px;
    padding-left: 15px;
    padding-right: 15px;
    padding-bottom: 5px;
}

/* Quizzes */
.quiz {
    border-style: dotted;
    padding-top: 0px;
    padding-left: 15px;
    padding-right: 15px;
    padding-bottom: 5px;
    background: cornsilk;
}




/* Details */
/* See https://stackoverflow.com/questions/38213329/how-to-add-css3-transition-with-html5-details-summary-tag-reveal?noredirect=1&lq=1 */
/* TODO: Closing details is not animated yet; not sure whether this is possible in CSS - AZ*/

details[open] summary ~ * {
  animation: sweep-in .5s ease-in-out;
}
details:not([open]) summary ~ * {
  animation: sweep-out .5s ease-in-out;
}

@keyframes sweep-in {
  0%    {opacity: 0; margin-top: -30px}
  100%  {opacity: 1; margin-top: 0px}
}

@keyframes sweep-out {
  0%    {opacity: 1; margin-top: 0px}
  100%  {opacity: 0; margin-top: -30px}
}

details {
    border-style: dashed;
    border-color: gray;
    border-width: 1px;
    padding-top: 0px;
    padding-left: 15px;
    padding-right: 15px;
    padding-bottom: 5px;
    outline: none !important;
}

summary {
    outline: none !important;
}



/* Solutions */
.solution_link {
	/* font-size: 12px; */
    font-style: italic;
}
@media print {
    .solution_link {
    	font-size: 9px;
        line-height: 12px;
        font-style: italic;
    }
}


/* Beta warning */
.beta {
    background: #ffff50;
    padding: 3px;
    font-style: italic;
    color: #000000;
    padding: 5px;
}

/* Current page in menu */
#cssmenu a.this_page {
    font-weight: bold;
    color: #ffffff;
}

/* Page not public yet in menu */
#cssmenu a.not_public {
    color: #a0a0a0;
}


/* Notebook page in menu */
#cssmenu a.edit_as_notebook {
    font-weight: bold;
    color: #ffffff;
}

/* More coming in menu */
.more_coming {
    font-style: italic!important;
}

/* New chapter indicator in menu */
.new_chapter {
    font-weight: bold;
    font-size: 100%;
    /* color: aqua; */
    color: #F1948A;
}

/* Part number in menu */
.part_number {
	float: left;
    text-align: left;
    width: 22px;
}


/* Chapters in menu */
.chapters {
    /* font-style: italic!important; */
}

/* Chapter numbers in menu */
.chnum {
    /* font-weight: bold; */
}


/* Imports */
a.import {
    text-decoration: underline;
    color: blue;
}

a.import[href]:after {
    content: "" !important;  /* Avoid adding links for imports */
}

a.import:visited {
    color: darkblue;
}

a.import:hover, a.import:focus {
    color: cornflowerblue;
}

a.import:active {
    color: red!important;
}

svg a {
    text-decoration: none!important;
}

/* Banner */
.banner {
    margin-top: 30px; /* Add a top margin to avoid content overlay */
    padding: 2rem;
    font-size: large;
    text-align: center;
    border-style: dotted;
    background-color: LightYellow;
}


/* Main content */
article {
    margin-top: 30px; /* Add a top margin to avoid content overlay */
}

/* Have links show up at a nice offset */
/* See https://stackoverflow.com/questions/4086107/fixed-page-header-overlaps-in-page-anchors */
:target::before {
  content: "";
  display: block;
  height: 60px; /* fixed header height*/
  margin: -60px 0 0; /* negative fixed header height */
}

/* On small screens, have menu text disappear, leaving only icons */
@media screen and (max-width: 900px) { span.menu_5 { display: none;} }
@media screen and (max-width: 850px) { span.menu_4 { display: none;} }
@media screen and (max-width: 800px) { span.menu_3 { display: none;} }
@media screen and (max-width: 750px) { span.menu_2 { display: none;} }
@media screen and (max-width: 700px) { span.menu_1 { display: none;} }

/* On small screens, use whatever width that is there */
@media only screen and (max-width: 600px) {
  .container {
    width: auto;
  }
}


/* CSS Menu */
#cssmenu,
#cssmenu ul,
#cssmenu ol,
#cssmenu li,
#cssmenu a {
  border: none;
  line-height: 1;
  margin: 0;
  padding: 0;
  box-sizing: content-box;
  cursor: pointer;
}
#cssmenu {
  height: 37px;
  display: block;
  border: 1px solid;
  /* border-radius: 5px; */
  width: 100%;
  border-color: purple; /* Debuggingbook */
  position: fixed;
  z-index: 5000;
  transition: opacity 1s;
  margin: 0;
  padding: 0;
  top: 0px;
  left: 0px;
}

#cssmenu > ul,
#cssmenu > ol {
  list-style: inside none;
  margin: 0;
  padding: 0;
}
#cssmenu > ul > li,
#cssmenu > ol > li {
  list-style: inside none;
  float: left;
  display: block;
  position: relative;
  margin: 0;
  padding: 0;
}
#cssmenu.align-center > ul,
#cssmenu.align-center > ol {
  text-align: center;
  font-size: 0;
}
#cssmenu.align-center > ul > li,
#cssmenu.align-center > ol > li {
  float: none;
  display: inline-block;
}
#cssmenu.align-center ul ul,
#cssmenu.align-center ol ol,
#cssmenu.align-center ol ul,
#cssmenu.align-center ul ol {
  text-align: left;
}
#cssmenu.align-center > ul > li:first-child > a,
#cssmenu.align-center > ol > li:first-child > a {
  /* border-radius: 0; */
}
#cssmenu > ul > li > a,
#cssmenu > ol > li > a {
  outline: none;
  display: block;
  position: relative;
  text-align: center;
  text-decoration: none;
  text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.4);
  font-weight: 700;
  font-size: 13px;
  font-family: Arial, Helvetica, sans-serif;
  border-right: 1px solid purple; /* Debuggingbook */
  color: #ffffff;
  padding: 12px 20px;
}
#cssmenu > ul > li:first-child > a,
#cssmenu > ol > li:first-child > a {
  /* border-radius: 5px 0 0 5px; */
}
#cssmenu > ul > li > a:after,
#cssmenu > ol > li > a:after {
  content: "";
  position: absolute;
  border-right: 1px solid;
  top: -1px;
  bottom: -1px;
  right: -2px;
  z-index: 5010;
  border-color: purple; /* Debuggingbook */
}
#cssmenu ul li.has-sub:hover > a:after,
#cssmenu ol li.has-sub:hover > a:after {
  top: 0;
  bottom: 0;
}
#cssmenu > ul > li.has-sub > a:before,
#cssmenu > ol > li.has-sub > a:before {
  content: "";
  position: absolute;
  top: 18px;
  right: 6px;
  border: 5px solid transparent;
  border-top: 5px solid #ffffff;
}
#cssmenu > ul > li.has-sub:hover > a:before,
#cssmenu > ol > li.has-sub:hover > a:before {
  top: 19px;
}
#cssmenu > ul > li.has-sub:hover > a,
#cssmenu > ol > li.has-sub:hover > a {
  padding-bottom: 14px;
  z-index: 5020;
  border-color: #3f3f3f;
}
#cssmenu ul li.has-sub:hover > ul,
#cssmenu ul li.has-sub:hover > ol,
#cssmenu ol li.has-sub:hover > ul,
#cssmenu ol li.has-sub:hover > ol {
  display: block;
}
#cssmenu > ul > li.has-sub > a:hover,
#cssmenu > ul > li.has-sub:hover > a,
#cssmenu > ol > li.has-sub > a:hover,
#cssmenu > ol > li.has-sub:hover > a {
  background: #3f3f3f;
  border-color: #3f3f3f;
}
#cssmenu ul li.has-sub:focus-within > ul,
#cssmenu ul li.has-sub:focus-within > ol,
#cssmenu ol li.has-sub:focus-within > ul,
#cssmenu ol li.has-sub:focus-within > ol {
  display: block;
}
#cssmenu > ul > li.has-sub > a:focus-within,
#cssmenu > ul > li.has-sub:focus-within > a,
#cssmenu > ol > li.has-sub > a:focus-within,
#cssmenu > ol > li.has-sub:focus-within > a {
  background: #3f3f3f;
  border-color: #3f3f3f;
}
#cssmenu ul li > ul,
#cssmenu ul li > ol,
#cssmenu ol li > ul,
#cssmenu ol li > ol {
  display: none;
  width: auto;
  position: absolute;
  top: 38px;
  background: #3f3f3f;
  /* border-radius: 0 0 5px 5px; */
  z-index: 5020;
  padding: 10px 0;
  transition: all 0.5s ease;
  transition-duration: 0.5s;
}
#cssmenu ul li > ul,
#cssmenu ul li > ol {
  width: 250px;
}
#cssmenu ul ul ul,
#cssmenu ul ul ol,
#cssmenu ul ol ul,
#cssmenu ul ol ol {
  position: absolute;
}
#cssmenu ul ul li:hover > ul,
#cssmenu ul ul li:hover > ol,
#cssmenu ul ol li:hover > ul,
#cssmenu ul ol li:hover > ol {
  left: 100%;
  top: -10px;
  /* border-radius: 5px; */
}
#cssmenu ul li > ul li,
#cssmenu ul li > ol li,
#cssmenu ol li > ul li,
#cssmenu ol li > ol li {
  display: block;
  list-style: inside none;
  position: relative;
  margin: 0;
  padding: 0;
}
#cssmenu ul li > ul li a,
#cssmenu ul li > ol li a,
#cssmenu ol li > ul li a,
#cssmenu ol li > ol li a {
  outline: none;
  display: block;
  position: relative;
  font: 10pt Arial, Helvetica, sans-serif;
  color: #ffffff;
  text-decoration: none;
  text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5);
  margin: 0;
  padding: 8px 20px;
}
#cssmenu,
#cssmenu ul ul > li:hover > a,
#cssmenu ul ul li a:hover {
  background: purple; /* DebuggingBook */
  /*
  background: -moz-linear-gradient(top, #cc0000 0%, #990000 100%);
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #cc0000), color-stop(100%, #990000));
  background: -webkit-linear-gradient(top, #cc0000 0%, #990000 100%);
  background: -o-linear-gradient(top, #cc0000 0%, #990000 100%);
  background: -ms-linear-gradient(top, #cc0000 0%, #990000 100%);
  background: linear-gradient(top, #cc0000 0%, #990000 100%);
  */
}
#cssmenu > ul > li > a:hover {
  background: purple; /* DebuggingBook */
  color: #ffffff;
}
#cssmenu ul ul a:hover,
#cssmenu ul ol a:hover {
  background: purple; /* DebuggingBook */
  color: #ffffff;
}
#cssmenu > ul > li.has-sub > a:hover:before {
  border-top: 5px solid #ffffff;
}

/* On print, do not show the menu */
@media print {
    #cssmenu {
        height: 0px;
        display: none;
    }
    #cssmenu > ul {
        display: none;
    }
    #cssmenu > ol {
        display: none;
    }
}
END


================================================
FILE: binder/postBuild.template
================================================
#!/bin/bash

# Enable incompatible extensions
# echo postBuild: Enabling incompatible Jupyter extensions...
# NBCONFIG_PATH=$HOME/.jupyter/nbconfig
# mkdir -p $NBCONFIG_PATH
# echo '{
#     "nbext_hide_incompat": false
# }' > $NBCONFIG_PATH/common.json

# Install and enable Jupyter nbextensions
# https://github.com/binder-examples/jupyter-extension
# https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/install.html
# echo postBuild: Installing Jupyter extensions...
# jupyter contrib nbextension install --user
# jupyter nbextension enable toc2/main --user
# jupyter nbextension enable exercise2/main --user
# jupyter nbextensions_configurator enable --user
# jupyter nbextension list

# Install and set up Jupyter lab extensions
echo postBuild: Installing Jupyter Lab extensions...
pip install jupyterlab-markup  # Mermaid in Jupyter Lab
pip install jupyterlab-cell-flash
jupyter labextension disable "@jupyterlab/apputils-extension:announcements"
jupyter lab build

# Install grcov
echo postBuild: Installing grcov...
cargo install grcov

# # Install mermaid
echo postBuild: Installing mermaid...
npm i mermaid

# run matplotlib once to generate the font cache
echo postBuild: Generating matplotlib font cache...
python3 -c "import matplotlib as mpl; mpl.use('Agg'); import pylab as plt; fig, ax = plt.subplots(); fig.savefig('test.png')"
test -e test.png && rm test.png

# Trust notebooks such that users can see their HTML and JS output
echo postBuild: Trusting notebooks...
for notebook in notebooks/*.ipynb docs/notebooks/*.ipynb docs/beta/notebooks/*.ipynb; do
    # echo postBuild: Trusting notebook "$notebook" ...
    jupyter trust "$notebook"
done

# Create custom.css
echo postBuild: Creating custom.css...
CUSTOM_PATH=$HOME/.jupyter/custom
mkdir -p $CUSTOM_PATH
cat <<END > $CUSTOM_PATH/custom.css


================================================
FILE: binder/requirements.txt
================================================
# Debuggingbook Binder requirements

## These packages are additionally required in Binder

svglib
selenium
valgrind

## These packages extend the Jupyter environment

jupyter_contrib_nbextensions
python-magic


================================================
FILE: docs/.gitattributes
================================================
# Notebooks in this folder are saved _with_ output
*.ipynb	filter=cat
*.ipynb	diff=cat


================================================
FILE: docs/.nojekyll
================================================
# Avoid that this site be interpreted through Jekyll
https://github.blog/news-insights/the-library/bypassing-jekyll-on-github-pages/

================================================
FILE: docs/404.html
================================================
---
permalink: /404.html
---

<!-- A html document -->
<!-- 
with standard nbconvert css layout
with standard nbconvert input/output content
standard html tag wrapping
with mathjax loaded
with jupyter wigets
 caption and label elements according to ipub meta tags  
with debuggingbook adaptations -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" /><title>The Debugging Book</title>
<link rel="me" href="https://mastodon.social/@TheDebuggingBook">

<style type="text/css">
    /*!
*
* Twitter Bootstrap
*
*/
/*!
 * Bootstrap v3.3.7 (http://getbootstrap.com)
 * Copyright 2011-2016 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}
body {
  margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}
audio,
canvas,
progress,
video {
  display: inline-block;
  vertical-align: baseline;
}
audio:not([controls]) {
  display: none;
  height: 0;
}
[hidden],
template {
  display: none;
}
a {
  background-color: transparent;
}
a:active,
a:hover {
  outline: 0;
}
abbr[title] {
  border-bottom: 1px dotted;
}
b,
strong {
  font-weight: bold;
}
dfn {
  font-style: italic;
}
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}
mark {
  background: #ff0;
  color: #000;
}
small {
  font-size: 80%;
}
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sup {
  top: -0.5em;
}
sub {
  bottom: -0.25em;
}
img {
  border: 0;
}
svg:not(:root) {
  overflow: hidden;
}
figure {
  margin: 1em 40px;
}
hr {
  box-sizing: content-box;
  height: 0;
}
pre {
  overflow: auto;
}
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0;
}
button {
  overflow: visible;
}
button,
select {
  text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  cursor: pointer;
}
button[disabled],
html input[disabled] {
  cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}
input {
  line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: textfield;
  box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}
legend {
  border: 0;
  padding: 0;
}
textarea {
  overflow: auto;
}
optgroup {
  font-weight: bold;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
td,
th {
  padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
  *,
  *:before,
  *:after {
    background: transparent !important;
    
    box-shadow: none !important;
    text-shadow: none !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: " (" attr(href) ")";
  }
  abbr[title]:after {
    content: " (" attr(title) ")";
  }
  a[href^="#"]:after,
  a[href^="javascript:"]:after {
    content: "";
  }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
  .navbar {
    display: none;
  }
  .btn > .caret,
  .dropup > .btn > .caret {
    border-top-
  }
  .label {
    border: 1px solid #000;
  }
  .table {
    border-collapse: collapse !important;
  }
  .table td,
  .table th {
    background-color: #fff !important;
  }
  .table-bordered th,
  .table-bordered td {
    border: 1px solid #ddd !important;
  }
}
@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot');
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
.glyphicon {
  position: relative;
  top: 1px;
  display: inline-block;
  font-family: 'Glyphicons Halflings';
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
  content: "\002a";
}
.glyphicon-plus:before {
  content: "\002b";
}
.glyphicon-euro:before,
.glyphicon-eur:before {
  content: "\20ac";
}
.glyphicon-minus:before {
  content: "\2212";
}
.glyphicon-cloud:before {
  content: "\2601";
}
.glyphicon-envelope:before {
  content: "\2709";
}
.glyphicon-pencil:before {
  content: "\270f";
}
.glyphicon-glass:before {
  content: "\e001";
}
.glyphicon-music:before {
  content: "\e002";
}
.glyphicon-search:before {
  content: "\e003";
}
.glyphicon-heart:before {
  content: "\e005";
}
.glyphicon-star:before {
  content: "\e006";
}
.glyphicon-star-empty:before {
  content: "\e007";
}
.glyphicon-user:before {
  content: "\e008";
}
.glyphicon-film:before {
  content: "\e009";
}
.glyphicon-th-large:before {
  content: "\e010";
}
.glyphicon-th:before {
  content: "\e011";
}
.glyphicon-th-list:before {
  content: "\e012";
}
.glyphicon-ok:before {
  content: "\e013";
}
.glyphicon-remove:before {
  content: "\e014";
}
.glyphicon-zoom-in:before {
  content: "\e015";
}
.glyphicon-zoom-out:before {
  content: "\e016";
}
.glyphicon-off:before {
  content: "\e017";
}
.glyphicon-signal:before {
  content: "\e018";
}
.glyphicon-cog:before {
  content: "\e019";
}
.glyphicon-trash:before {
  content: "\e020";
}
.glyphicon-home:before {
  content: "\e021";
}
.glyphicon-file:before {
  content: "\e022";
}
.glyphicon-time:before {
  content: "\e023";
}
.glyphicon-road:before {
  content: "\e024";
}
.glyphicon-download-alt:before {
  content: "\e025";
}
.glyphicon-download:before {
  content: "\e026";
}
.glyphicon-upload:before {
  content: "\e027";
}
.glyphicon-inbox:before {
  content: "\e028";
}
.glyphicon-play-circle:before {
  content: "\e029";
}
.glyphicon-repeat:before {
  content: "\e030";
}
.glyphicon-refresh:before {
  content: "\e031";
}
.glyphicon-list-alt:before {
  content: "\e032";
}
.glyphicon-lock:before {
  content: "\e033";
}
.glyphicon-flag:before {
  content: "\e034";
}
.glyphicon-headphones:before {
  content: "\e035";
}
.glyphicon-volume-off:before {
  content: "\e036";
}
.glyphicon-volume-down:before {
  content: "\e037";
}
.glyphicon-volume-up:before {
  content: "\e038";
}
.glyphicon-qrcode:before {
  content: "\e039";
}
.glyphicon-barcode:before {
  content: "\e040";
}
.glyphicon-tag:before {
  content: "\e041";
}
.glyphicon-tags:before {
  content: "\e042";
}
.glyphicon-book:before {
  content: "\e043";
}
.glyphicon-bookmark:before {
  content: "\e044";
}
.glyphicon-print:before {
  content: "\e045";
}
.glyphicon-camera:before {
  content: "\e046";
}
.glyphicon-font:before {
  content: "\e047";
}
.glyphicon-bold:before {
  content: "\e048";
}
.glyphicon-italic:before {
  content: "\e049";
}
.glyphicon-text-height:before {
  content: "\e050";
}
.glyphicon-text-width:before {
  content: "\e051";
}
.glyphicon-align-left:before {
  content: "\e052";
}
.glyphicon-align-center:before {
  content: "\e053";
}
.glyphicon-align-right:before {
  content: "\e054";
}
.glyphicon-align-justify:before {
  content: "\e055";
}
.glyphicon-list:before {
  content: "\e056";
}
.glyphicon-indent-left:before {
  content: "\e057";
}
.glyphicon-indent-right:before {
  content: "\e058";
}
.glyphicon-facetime-video:before {
  content: "\e059";
}
.glyphicon-picture:before {
  content: "\e060";
}
.glyphicon-map-marker:before {
  content: "\e062";
}
.glyphicon-adjust:before {
  content: "\e063";
}
.glyphicon-tint:before {
  content: "\e064";
}
.glyphicon-edit:before {
  content: "\e065";
}
.glyphicon-share:before {
  content: "\e066";
}
.glyphicon-check:before {
  content: "\e067";
}
.glyphicon-move:before {
  content: "\e068";
}
.glyphicon-step-backward:before {
  content: "\e069";
}
.glyphicon-fast-backward:before {
  content: "\e070";
}
.glyphicon-backward:before {
  content: "\e071";
}
.glyphicon-play:before {
  content: "\e072";
}
.glyphicon-pause:before {
  content: "\e073";
}
.glyphicon-stop:before {
  content: "\e074";
}
.glyphicon-forward:before {
  content: "\e075";
}
.glyphicon-fast-forward:before {
  content: "\e076";
}
.glyphicon-step-forward:before {
  content: "\e077";
}
.glyphicon-eject:before {
  content: "\e078";
}
.glyphicon-chevron-left:before {
  content: "\e079";
}
.glyphicon-chevron-right:before {
  content: "\e080";
}
.glyphicon-plus-sign:before {
  content: "\e081";
}
.glyphicon-minus-sign:before {
  content: "\e082";
}
.glyphicon-remove-sign:before {
  content: "\e083";
}
.glyphicon-ok-sign:before {
  content: "\e084";
}
.glyphicon-question-sign:before {
  content: "\e085";
}
.glyphicon-info-sign:before {
  content: "\e086";
}
.glyphicon-screenshot:before {
  content: "\e087";
}
.glyphicon-remove-circle:before {
  content: "\e088";
}
.glyphicon-ok-circle:before {
  content: "\e089";
}
.glyphicon-ban-circle:before {
  content: "\e090";
}
.glyphicon-arrow-left:before {
  content: "\e091";
}
.glyphicon-arrow-right:before {
  content: "\e092";
}
.glyphicon-arrow-up:before {
  content: "\e093";
}
.glyphicon-arrow-down:before {
  content: "\e094";
}
.glyphicon-share-alt:before {
  content: "\e095";
}
.glyphicon-resize-full:before {
  content: "\e096";
}
.glyphicon-resize-small:before {
  content: "\e097";
}
.glyphicon-exclamation-sign:before {
  content: "\e101";
}
.glyphicon-gift:before {
  content: "\e102";
}
.glyphicon-leaf:before {
  content: "\e103";
}
.glyphicon-fire:before {
  content: "\e104";
}
.glyphicon-eye-open:before {
  content: "\e105";
}
.glyphicon-eye-close:before {
  content: "\e106";
}
.glyphicon-warning-sign:before {
  content: "\e107";
}
.glyphicon-plane:before {
  content: "\e108";
}
.glyphicon-calendar:before {
  content: "\e109";
}
.glyphicon-random:before {
  content: "\e110";
}
.glyphicon-comment:before {
  content: "\e111";
}
.glyphicon-magnet:before {
  content: "\e112";
}
.glyphicon-chevron-up:before {
  content: "\e113";
}
.glyphicon-chevron-down:before {
  content: "\e114";
}
.glyphicon-retweet:before {
  content: "\e115";
}
.glyphicon-shopping-cart:before {
  content: "\e116";
}
.glyphicon-folder-close:before {
  content: "\e117";
}
.glyphicon-folder-open:before {
  content: "\e118";
}
.glyphicon-resize-vertical:before {
  content: "\e119";
}
.glyphicon-resize-horizontal:before {
  content: "\e120";
}
.glyphicon-hdd:before {
  content: "\e121";
}
.glyphicon-bullhorn:before {
  content: "\e122";
}
.glyphicon-bell:before {
  content: "\e123";
}
.glyphicon-certificate:before {
  content: "\e124";
}
.glyphicon-thumbs-up:before {
  content: "\e125";
}
.glyphicon-thumbs-down:before {
  content: "\e126";
}
.glyphicon-hand-right:before {
  content: "\e127";
}
.glyphicon-hand-left:before {
  content: "\e128";
}
.glyphicon-hand-up:before {
  content: "\e129";
}
.glyphicon-hand-down:before {
  content: "\e130";
}
.glyphicon-circle-arrow-right:before {
  content: "\e131";
}
.glyphicon-circle-arrow-left:before {
  content: "\e132";
}
.glyphicon-circle-arrow-up:before {
  content: "\e133";
}
.glyphicon-circle-arrow-down:before {
  content: "\e134";
}
.glyphicon-globe:before {
  content: "\e135";
}
.glyphicon-wrench:before {
  content: "\e136";
}
.glyphicon-tasks:before {
  content: "\e137";
}
.glyphicon-filter:before {
  content: "\e138";
}
.glyphicon-briefcase:before {
  content: "\e139";
}
.glyphicon-fullscreen:before {
  content: "\e140";
}
.glyphicon-dashboard:before {
  content: "\e141";
}
.glyphicon-paperclip:before {
  content: "\e142";
}
.glyphicon-heart-empty:before {
  content: "\e143";
}
.glyphicon-link:before {
  content: "\e144";
}
.glyphicon-phone:before {
  content: "\e145";
}
.glyphicon-pushpin:before {
  content: "\e146";
}
.glyphicon-usd:before {
  content: "\e148";
}
.glyphicon-gbp:before {
  content: "\e149";
}
.glyphicon-sort:before {
  content: "\e150";
}
.glyphicon-sort-by-alphabet:before {
  content: "\e151";
}
.glyphicon-sort-by-alphabet-alt:before {
  content: "\e152";
}
.glyphicon-sort-by-order:before {
  content: "\e153";
}
.glyphicon-sort-by-order-alt:before {
  content: "\e154";
}
.glyphicon-sort-by-attributes:before {
  content: "\e155";
}
.glyphicon-sort-by-attributes-alt:before {
  content: "\e156";
}
.glyphicon-unchecked:before {
  content: "\e157";
}
.glyphicon-expand:before {
  content: "\e158";
}
.glyphicon-collapse-down:before {
  content: "\e159";
}
.glyphicon-collapse-up:before {
  content: "\e160";
}
.glyphicon-log-in:before {
  content: "\e161";
}
.glyphicon-flash:before {
  content: "\e162";
}
.glyphicon-log-out:before {
  content: "\e163";
}
.glyphicon-new-window:before {
  content: "\e164";
}
.glyphicon-record:before {
  content: "\e165";
}
.glyphicon-save:before {
  content: "\e166";
}
.glyphicon-open:before {
  content: "\e167";
}
.glyphicon-saved:before {
  content: "\e168";
}
.glyphicon-import:before {
  content: "\e169";
}
.glyphicon-export:before {
  content: "\e170";
}
.glyphicon-send:before {
  content: "\e171";
}
.glyphicon-floppy-disk:before {
  content: "\e172";
}
.glyphicon-floppy-saved:before {
  content: "\e173";
}
.glyphicon-floppy-remove:before {
  content: "\e174";
}
.glyphicon-floppy-save:before {
  content: "\e175";
}
.glyphicon-floppy-open:before {
  content: "\e176";
}
.glyphicon-credit-card:before {
  content: "\e177";
}
.glyphicon-transfer:before {
  content: "\e178";
}
.glyphicon-cutlery:before {
  content: "\e179";
}
.glyphicon-header:before {
  content: "\e180";
}
.glyphicon-compressed:before {
  content: "\e181";
}
.glyphicon-earphone:before {
  content: "\e182";
}
.glyphicon-phone-alt:before {
  content: "\e183";
}
.glyphicon-tower:before {
  content: "\e184";
}
.glyphicon-stats:before {
  content: "\e185";
}
.glyphicon-sd-video:before {
  content: "\e186";
}
.glyphicon-hd-video:before {
  content: "\e187";
}
.glyphicon-subtitles:before {
  content: "\e188";
}
.glyphicon-sound-stereo:before {
  content: "\e189";
}
.glyphicon-sound-dolby:before {
  content: "\e190";
}
.glyphicon-sound-5-1:before {
  content: "\e191";
}
.glyphicon-sound-6-1:before {
  content: "\e192";
}
.glyphicon-sound-7-1:before {
  content: "\e193";
}
.glyphicon-copyright-mark:before {
  content: "\e194";
}
.glyphicon-registration-mark:before {
  content: "\e195";
}
.glyphicon-cloud-download:before {
  content: "\e197";
}
.glyphicon-cloud-upload:before {
  content: "\e198";
}
.glyphicon-tree-conifer:before {
  content: "\e199";
}
.glyphicon-tree-deciduous:before {
  content: "\e200";
}
.glyphicon-cd:before {
  content: "\e201";
}
.glyphicon-save-file:before {
  content: "\e202";
}
.glyphicon-open-file:before {
  content: "\e203";
}
.glyphicon-level-up:before {
  content: "\e204";
}
.glyphicon-copy:before {
  content: "\e205";
}
.glyphicon-paste:before {
  content: "\e206";
}
.glyphicon-alert:before {
  content: "\e209";
}
.glyphicon-equalizer:before {
  content: "\e210";
}
.glyphicon-king:before {
  content: "\e211";
}
.glyphicon-queen:before {
  content: "\e212";
}
.glyphicon-pawn:before {
  content: "\e213";
}
.glyphicon-bishop:before {
  content: "\e214";
}
.glyphicon-knight:before {
  content: "\e215";
}
.glyphicon-baby-formula:before {
  content: "\e216";
}
.glyphicon-tent:before {
  content: "\26fa";
}
.glyphicon-blackboard:before {
  content: "\e218";
}
.glyphicon-bed:before {
  content: "\e219";
}
.glyphicon-apple:before {
  content: "\f8ff";
}
.glyphicon-erase:before {
  content: "\e221";
}
.glyphicon-hourglass:before {
  content: "\231b";
}
.glyphicon-lamp:before {
  content: "\e223";
}
.glyphicon-duplicate:before {
  content: "\e224";
}
.glyphicon-piggy-bank:before {
  content: "\e225";
}
.glyphicon-scissors:before {
  content: "\e226";
}
.glyphicon-bitcoin:before {
  content: "\e227";
}
.glyphicon-btc:before {
  content: "\e227";
}
.glyphicon-xbt:before {
  content: "\e227";
}
.glyphicon-yen:before {
  content: "\00a5";
}
.glyphicon-jpy:before {
  content: "\00a5";
}
.glyphicon-ruble:before {
  content: "\20bd";
}
.glyphicon-rub:before {
  content: "\20bd";
}
.glyphicon-scale:before {
  content: "\e230";
}
.glyphicon-ice-lolly:before {
  content: "\e231";
}
.glyphicon-ice-lolly-tasted:before {
  content: "\e232";
}
.glyphicon-education:before {
  content: "\e233";
}
.glyphicon-option-horizontal:before {
  content: "\e234";
}
.glyphicon-option-vertical:before {
  content: "\e235";
}
.glyphicon-menu-hamburger:before {
  content: "\e236";
}
.glyphicon-modal-window:before {
  content: "\e237";
}
.glyphicon-oil:before {
  content: "\e238";
}
.glyphicon-grain:before {
  content: "\e239";
}
.glyphicon-sunglasses:before {
  content: "\e240";
}
.glyphicon-text-size:before {
  content: "\e241";
}
.glyphicon-text-color:before {
  content: "\e242";
}
.glyphicon-text-background:before {
  content: "\e243";
}
.glyphicon-object-align-top:before {
  content: "\e244";
}
.glyphicon-object-align-bottom:before {
  content: "\e245";
}
.glyphicon-object-align-horizontal:before {
  content: "\e246";
}
.glyphicon-object-align-left:before {
  content: "\e247";
}
.glyphicon-object-align-vertical:before {
  content: "\e248";
}
.glyphicon-object-align-right:before {
  content: "\e249";
}
.glyphicon-triangle-right:before {
  content: "\e250";
}
.glyphicon-triangle-left:before {
  content: "\e251";
}
.glyphicon-triangle-bottom:before {
  content: "\e252";
}
.glyphicon-triangle-top:before {
  content: "\e253";
}
.glyphicon-console:before {
  content: "\e254";
}
.glyphicon-superscript:before {
  content: "\e255";
}
.glyphicon-subscript:before {
  content: "\e256";
}
.glyphicon-menu-left:before {
  content: "\e257";
}
.glyphicon-menu-right:before {
  content: "\e258";
}
.glyphicon-menu-down:before {
  content: "\e259";
}
.glyphicon-menu-up:before {
  content: "\e260";
}
* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
*:before,
*:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
html {
  font-size: 10px;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 13px;
  line-height: 1.42857143;
  color: #000;
  background-color: #fff;
}
input,
button,
select,
textarea {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}
a {
  color: #337ab7;
  text-decoration: none;
}
a:hover,
a:focus {
  color: #23527c;
  text-decoration: underline;
}
a:focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
figure {
  margin: 0;
}
img {
  vertical-align: middle;
}
.img-responsive,
.thumbnail > img,
.thumbnail a > img,
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  display: block;
  max-width: 100%;
  height: auto;
}
.img-rounded {
  border-radius: 3px;
}
.img-thumbnail {
  padding: 4px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: all 0.2s ease-in-out;
  -o-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
  display: inline-block;
  max-width: 100%;
  height: auto;
}
.img-circle {
  border-radius: 50%;
}
hr {
  margin-top: 18px;
  margin-bottom: 18px;
  border: 0;
  border-top: 1px solid #eeeeee;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
[role="button"] {
  cursor: pointer;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
  font-family: inherit;
  font-weight: 500;
  line-height: 1.1;
  color: inherit;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small,
.h1 small,
.h2 small,
.h3 small,
.h4 small,
.h5 small,
.h6 small,
h1 .small,
h2 .small,
h3 .small,
h4 .small,
h5 .small,
h6 .small,
.h1 .small,
.h2 .small,
.h3 .small,
.h4 .small,
.h5 .small,
.h6 .small {
  font-weight: normal;
  line-height: 1;
  color: #777777;
}
h1,
.h1,
h2,
.h2,
h3,
.h3 {
  margin-top: 18px;
  margin-bottom: 9px;
}
h1 small,
.h1 small,
h2 small,
.h2 small,
h3 small,
.h3 small,
h1 .small,
.h1 .small,
h2 .small,
.h2 .small,
h3 .small,
.h3 .small {
  font-size: 65%;
}
h4,
.h4,
h5,
.h5,
h6,
.h6 {
  margin-top: 9px;
  margin-bottom: 9px;
}
h4 small,
.h4 small,
h5 small,
.h5 small,
h6 small,
.h6 small,
h4 .small,
.h4 .small,
h5 .small,
.h5 .small,
h6 .small,
.h6 .small {
  font-size: 75%;
}
h1,
.h1 {
  font-size: 33px;
}
h2,
.h2 {
  font-size: 27px;
}
h3,
.h3 {
  font-size: 23px;
}
h4,
.h4 {
  font-size: 17px;
}
h5,
.h5 {
  font-size: 13px;
}
h6,
.h6 {
  font-size: 12px;
}
p {
  margin: 0 0 9px;
}
.lead {
  margin-bottom: 18px;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.4;
}
@media (min-width: 768px) {
  .lead {
    font-size: 19.5px;
  }
}
small,
.small {
  font-size: 92%;
}
mark,
.mark {
  background-color: #fcf8e3;
  padding: .2em;
}
.text-left {
  text-align: left;
}
.text-right {
  text-align: right;
}
.text-center {
  text-align: center;
}
.text-justify {
  text-align: justify;
}
.text-nowrap {
  white-space: nowrap;
}
.text-lowercase {
  text-transform: lowercase;
}
.text-uppercase {
  text-transform: uppercase;
}
.text-capitalize {
  text-transform: capitalize;
}
.text-muted {
  color: #777777;
}
.text-primary {
  color: #337ab7;
}
a.text-primary:hover,
a.text-primary:focus {
  color: #286090;
}
.text-success {
  color: #3c763d;
}
a.text-success:hover,
a.text-success:focus {
  color: #2b542c;
}
.text-info {
  color: #31708f;
}
a.text-info:hover,
a.text-info:focus {
  color: #245269;
}
.text-warning {
  color: #8a6d3b;
}
a.text-warning:hover,
a.text-warning:focus {
  color: #66512c;
}
.text-danger {
  color: #a94442;
}
a.text-danger:hover,
a.text-danger:focus {
  color: #843534;
}
.bg-primary {
  color: #fff;
  background-color: #337ab7;
}
a.bg-primary:hover,
a.bg-primary:focus {
  background-color: #286090;
}
.bg-success {
  background-color: #dff0d8;
}
a.bg-success:hover,
a.bg-success:focus {
  background-color: #c1e2b3;
}
.bg-info {
  background-color: #d9edf7;
}
a.bg-info:hover,
a.bg-info:focus {
  background-color: #afd9ee;
}
.bg-warning {
  background-color: #fcf8e3;
}
a.bg-warning:hover,
a.bg-warning:focus {
  background-color: #f7ecb5;
}
.bg-danger {
  background-color: #f2dede;
}
a.bg-danger:hover,
a.bg-danger:focus {
  background-color: #e4b9b9;
}
.page-header {
  padding-bottom: 8px;
  margin: 36px 0 18px;
  border-bottom: 1px solid #eeeeee;
}
ul,
ol {
  margin-top: 0;
  margin-bottom: 9px;
}
ul ul,
ol ul,
ul ol,
ol ol {
  margin-bottom: 0;
}
.list-unstyled {
  padding-left: 0;
  list-style: none;
}
.list-inline {
  padding-left: 0;
  list-style: none;
  margin-left: -5px;
}
.list-inline > li {
  display: inline-block;
  padding-left: 5px;
  padding-right: 5px;
}
dl {
  margin-top: 0;
  margin-bottom: 18px;
}
dt,
dd {
  line-height: 1.42857143;
}
dt {
  font-weight: bold;
}
dd {
  margin-left: 0;
}
@media (min-width: 541px) {
  .dl-horizontal dt {
    float: left;
    width: 160px;
    clear: left;
    text-align: right;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .dl-horizontal dd {
    margin-left: 180px;
  }
}
abbr[title],
abbr[data-original-title] {
  cursor: help;
  border-bottom: 1px dotted #777777;
}
.initialism {
  font-size: 90%;
  text-transform: uppercase;
}
blockquote {
  padding: 9px 18px;
  margin: 0 0 18px;
  font-size: inherit;
  border-left: 5px solid #eeeeee;
}
blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
  margin-bottom: 0;
}
blockquote footer,
blockquote small,
blockquote .small {
  display: block;
  font-size: 80%;
  line-height: 1.42857143;
  color: #777777;
}
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
  content: '\2014 \00A0';
}
.blockquote-reverse,
blockquote.pull-right {
  padding-right: 15px;
  padding-left: 0;
  border-right: 5px solid #eeeeee;
  border-left: 0;
  text-align: right;
}
.blockquote-reverse footer:before,
blockquote.pull-right footer:before,
.blockquote-reverse small:before,
blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before {
  content: '';
}
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after {
  content: '\00A0 \2014';
}
address {
  margin-bottom: 18px;
  font-style: normal;
  line-height: 1.42857143;
}
code,
kbd,
pre,
samp {
  font-family: monospace;
}
code {
  padding: 2px 4px;
  font-size: 90%;
  color: #c7254e;
  background-color: #f9f2f4;
  border-radius: 2px;
}
kbd {
  padding: 2px 4px;
  font-size: 90%;
  color: #888;
  background-color: transparent;
  border-radius: 1px;
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
}
kbd kbd {
  padding: 0;
  font-size: 100%;
  font-weight: bold;
  box-shadow: none;
}
pre {
  display: block;
  padding: 8.5px;
  margin: 0 0 9px;
  font-size: 12px;
  line-height: 1.42857143;
  word-break: break-all;
  word-wrap: break-word;
  color: #333333;
  background-color: #f5f5f5;
  border: 1px solid #ccc;
  border-radius: 2px;
}
pre code {
  padding: 0;
  font-size: inherit;
  color: inherit;
  white-space: pre-wrap;
  background-color: transparent;
  border-radius: 0;
}
.pre-scrollable {
  max-height: 340px;
  overflow-y: scroll;
}
.container {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
@media (min-width: 768px) {
  .container {
    width: 768px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 940px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1140px;
  }
}
.container-fluid {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
.row {
  margin-left: 0px;
  margin-right: 0px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  position: relative;
  min-height: 1px;
  padding-left: 0px;
  padding-right: 0px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left;
}
.col-xs-12 {
  width: 100%;
}
.col-xs-11 {
  width: 91.66666667%;
}
.col-xs-10 {
  width: 83.33333333%;
}
.col-xs-9 {
  width: 75%;
}
.col-xs-8 {
  width: 66.66666667%;
}
.col-xs-7 {
  width: 58.33333333%;
}
.col-xs-6 {
  width: 50%;
}
.col-xs-5 {
  width: 41.66666667%;
}
.col-xs-4 {
  width: 33.33333333%;
}
.col-xs-3 {
  width: 25%;
}
.col-xs-2 {
  width: 16.66666667%;
}
.col-xs-1 {
  width: 8.33333333%;
}
.col-xs-pull-12 {
  right: 100%;
}
.col-xs-pull-11 {
  right: 91.66666667%;
}
.col-xs-pull-10 {
  right: 83.33333333%;
}
.col-xs-pull-9 {
  right: 75%;
}
.col-xs-pull-8 {
  right: 66.66666667%;
}
.col-xs-pull-7 {
  right: 58.33333333%;
}
.col-xs-pull-6 {
  right: 50%;
}
.col-xs-pull-5 {
  right: 41.66666667%;
}
.col-xs-pull-4 {
  right: 33.33333333%;
}
.col-xs-pull-3 {
  right: 25%;
}
.col-xs-pull-2 {
  right: 16.66666667%;
}
.col-xs-pull-1 {
  right: 8.33333333%;
}
.col-xs-pull-0 {
  right: auto;
}
.col-xs-push-12 {
  left: 100%;
}
.col-xs-push-11 {
  left: 91.66666667%;
}
.col-xs-push-10 {
  left: 83.33333333%;
}
.col-xs-push-9 {
  left: 75%;
}
.col-xs-push-8 {
  left: 66.66666667%;
}
.col-xs-push-7 {
  left: 58.33333333%;
}
.col-xs-push-6 {
  left: 50%;
}
.col-xs-push-5 {
  left: 41.66666667%;
}
.col-xs-push-4 {
  left: 33.33333333%;
}
.col-xs-push-3 {
  left: 25%;
}
.col-xs-push-2 {
  left: 16.66666667%;
}
.col-xs-push-1 {
  left: 8.33333333%;
}
.col-xs-push-0 {
  left: auto;
}
.col-xs-offset-12 {
  margin-left: 100%;
}
.col-xs-offset-11 {
  margin-left: 91.66666667%;
}
.col-xs-offset-10 {
  margin-left: 83.33333333%;
}
.col-xs-offset-9 {
  margin-left: 75%;
}
.col-xs-offset-8 {
  margin-left: 66.66666667%;
}
.col-xs-offset-7 {
  margin-left: 58.33333333%;
}
.col-xs-offset-6 {
  margin-left: 50%;
}
.col-xs-offset-5 {
  margin-left: 41.66666667%;
}
.col-xs-offset-4 {
  margin-left: 33.33333333%;
}
.col-xs-offset-3 {
  margin-left: 25%;
}
.col-xs-offset-2 {
  margin-left: 16.66666667%;
}
.col-xs-offset-1 {
  margin-left: 8.33333333%;
}
.col-xs-offset-0 {
  margin-left: 0%;
}
@media (min-width: 768px) {
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
    float: left;
  }
  .col-sm-12 {
    width: 100%;
  }
  .col-sm-11 {
    width: 91.66666667%;
  }
  .col-sm-10 {
    width: 83.33333333%;
  }
  .col-sm-9 {
    width: 75%;
  }
  .col-sm-8 {
    width: 66.66666667%;
  }
  .col-sm-7 {
    width: 58.33333333%;
  }
  .col-sm-6 {
    width: 50%;
  }
  .col-sm-5 {
    width: 41.66666667%;
  }
  .col-sm-4 {
    width: 33.33333333%;
  }
  .col-sm-3 {
    width: 25%;
  }
  .col-sm-2 {
    width: 16.66666667%;
  }
  .col-sm-1 {
    width: 8.33333333%;
  }
  .col-sm-pull-12 {
    right: 100%;
  }
  .col-sm-pull-11 {
    right: 91.66666667%;
  }
  .col-sm-pull-10 {
    right: 83.33333333%;
  }
  .col-sm-pull-9 {
    right: 75%;
  }
  .col-sm-pull-8 {
    right: 66.66666667%;
  }
  .col-sm-pull-7 {
    right: 58.33333333%;
  }
  .col-sm-pull-6 {
    right: 50%;
  }
  .col-sm-pull-5 {
    right: 41.66666667%;
  }
  .col-sm-pull-4 {
    right: 33.33333333%;
  }
  .col-sm-pull-3 {
    right: 25%;
  }
  .col-sm-pull-2 {
    right: 16.66666667%;
  }
  .col-sm-pull-1 {
    right: 8.33333333%;
  }
  .col-sm-pull-0 {
    right: auto;
  }
  .col-sm-push-12 {
    left: 100%;
  }
  .col-sm-push-11 {
    left: 91.66666667%;
  }
  .col-sm-push-10 {
    left: 83.33333333%;
  }
  .col-sm-push-9 {
    left: 75%;
  }
  .col-sm-push-8 {
    left: 66.66666667%;
  }
  .col-sm-push-7 {
    left: 58.33333333%;
  }
  .col-sm-push-6 {
    left: 50%;
  }
  .col-sm-push-5 {
    left: 41.66666667%;
  }
  .col-sm-push-4 {
    left: 33.33333333%;
  }
  .col-sm-push-3 {
    left: 25%;
  }
  .col-sm-push-2 {
    left: 16.66666667%;
  }
  .col-sm-push-1 {
    left: 8.33333333%;
  }
  .col-sm-push-0 {
    left: auto;
  }
  .col-sm-offset-12 {
    margin-left: 100%;
  }
  .col-sm-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-sm-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-sm-offset-9 {
    margin-left: 75%;
  }
  .col-sm-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-sm-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-sm-offset-6 {
    margin-left: 50%;
  }
  .col-sm-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-sm-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-sm-offset-3 {
    margin-left: 25%;
  }
  .col-sm-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-sm-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-sm-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 992px) {
  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
    float: left;
  }
  .col-md-12 {
    width: 100%;
  }
  .col-md-11 {
    width: 91.66666667%;
  }
  .col-md-10 {
    width: 83.33333333%;
  }
  .col-md-9 {
    width: 75%;
  }
  .col-md-8 {
    width: 66.66666667%;
  }
  .col-md-7 {
    width: 58.33333333%;
  }
  .col-md-6 {
    width: 50%;
  }
  .col-md-5 {
    width: 41.66666667%;
  }
  .col-md-4 {
    width: 33.33333333%;
  }
  .col-md-3 {
    width: 25%;
  }
  .col-md-2 {
    width: 16.66666667%;
  }
  .col-md-1 {
    width: 8.33333333%;
  }
  .col-md-pull-12 {
    right: 100%;
  }
  .col-md-pull-11 {
    right: 91.66666667%;
  }
  .col-md-pull-10 {
    right: 83.33333333%;
  }
  .col-md-pull-9 {
    right: 75%;
  }
  .col-md-pull-8 {
    right: 66.66666667%;
  }
  .col-md-pull-7 {
    right: 58.33333333%;
  }
  .col-md-pull-6 {
    right: 50%;
  }
  .col-md-pull-5 {
    right: 41.66666667%;
  }
  .col-md-pull-4 {
    right: 33.33333333%;
  }
  .col-md-pull-3 {
    right: 25%;
  }
  .col-md-pull-2 {
    right: 16.66666667%;
  }
  .col-md-pull-1 {
    right: 8.33333333%;
  }
  .col-md-pull-0 {
    right: auto;
  }
  .col-md-push-12 {
    left: 100%;
  }
  .col-md-push-11 {
    left: 91.66666667%;
  }
  .col-md-push-10 {
    left: 83.33333333%;
  }
  .col-md-push-9 {
    left: 75%;
  }
  .col-md-push-8 {
    left: 66.66666667%;
  }
  .col-md-push-7 {
    left: 58.33333333%;
  }
  .col-md-push-6 {
    left: 50%;
  }
  .col-md-push-5 {
    left: 41.66666667%;
  }
  .col-md-push-4 {
    left: 33.33333333%;
  }
  .col-md-push-3 {
    left: 25%;
  }
  .col-md-push-2 {
    left: 16.66666667%;
  }
  .col-md-push-1 {
    left: 8.33333333%;
  }
  .col-md-push-0 {
    left: auto;
  }
  .col-md-offset-12 {
    margin-left: 100%;
  }
  .col-md-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-md-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-md-offset-9 {
    margin-left: 75%;
  }
  .col-md-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-md-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-md-offset-6 {
    margin-left: 50%;
  }
  .col-md-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-md-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-md-offset-3 {
    margin-left: 25%;
  }
  .col-md-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-md-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-md-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 1200px) {
  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
    float: left;
  }
  .col-lg-12 {
    width: 100%;
  }
  .col-lg-11 {
    width: 91.66666667%;
  }
  .col-lg-10 {
    width: 83.33333333%;
  }
  .col-lg-9 {
    width: 75%;
  }
  .col-lg-8 {
    width: 66.66666667%;
  }
  .col-lg-7 {
    width: 58.33333333%;
  }
  .col-lg-6 {
    width: 50%;
  }
  .col-lg-5 {
    width: 41.66666667%;
  }
  .col-lg-4 {
    width: 33.33333333%;
  }
  .col-lg-3 {
    width: 25%;
  }
  .col-lg-2 {
    width: 16.66666667%;
  }
  .col-lg-1 {
    width: 8.33333333%;
  }
  .col-lg-pull-12 {
    right: 100%;
  }
  .col-lg-pull-11 {
    right: 91.66666667%;
  }
  .col-lg-pull-10 {
    right: 83.33333333%;
  }
  .col-lg-pull-9 {
    right: 75%;
  }
  .col-lg-pull-8 {
    right: 66.66666667%;
  }
  .col-lg-pull-7 {
    right: 58.33333333%;
  }
  .col-lg-pull-6 {
    right: 50%;
  }
  .col-lg-pull-5 {
    right: 41.66666667%;
  }
  .col-lg-pull-4 {
    right: 33.33333333%;
  }
  .col-lg-pull-3 {
    right: 25%;
  }
  .col-lg-pull-2 {
    right: 16.66666667%;
  }
  .col-lg-pull-1 {
    right: 8.33333333%;
  }
  .col-lg-pull-0 {
    right: auto;
  }
  .col-lg-push-12 {
    left: 100%;
  }
  .col-lg-push-11 {
    left: 91.66666667%;
  }
  .col-lg-push-10 {
    left: 83.33333333%;
  }
  .col-lg-push-9 {
    left: 75%;
  }
  .col-lg-push-8 {
    left: 66.66666667%;
  }
  .col-lg-push-7 {
    left: 58.33333333%;
  }
  .col-lg-push-6 {
    left: 50%;
  }
  .col-lg-push-5 {
    left: 41.66666667%;
  }
  .col-lg-push-4 {
    left: 33.33333333%;
  }
  .col-lg-push-3 {
    left: 25%;
  }
  .col-lg-push-2 {
    left: 16.66666667%;
  }
  .col-lg-push-1 {
    left: 8.33333333%;
  }
  .col-lg-push-0 {
    left: auto;
  }
  .col-lg-offset-12 {
    margin-left: 100%;
  }
  .col-lg-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-lg-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-lg-offset-9 {
    margin-left: 75%;
  }
  .col-lg-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-lg-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-lg-offset-6 {
    margin-left: 50%;
  }
  .col-lg-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-lg-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-lg-offset-3 {
    margin-left: 25%;
  }
  .col-lg-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-lg-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-lg-offset-0 {
    margin-left: 0%;
  }
}
table {
  background-color: transparent;
}
caption {
  padding-top: 8px;
  padding-bottom: 8px;
  color: #777777;
  text-align: left;
}
th {
  text-align: left;
}
.table {
  width: 100%;
  max-width: 100%;
  margin-bottom: 18px;
}
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
  padding: 8px;
  line-height: 1.42857143;
  vertical-align: top;
  border-top: 1px solid #ddd;
}
.table > thead > tr > th {
  vertical-align: bottom;
  border-bottom: 2px solid #ddd;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
  border-top: 0;
}
.table > tbody + tbody {
  border-top: 2px solid #ddd;
}
.table .table {
  background-color: #fff;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
  padding: 5px;
}
.table-bordered {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
  border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
  background-color: #f9f9f9;
}
.table-hover > tbody > tr:hover {
  background-color: #f5f5f5;
}
table col[class*="col-"] {
  position: static;
  float: none;
  display: table-column;
}
table td[class*="col-"],
table th[class*="col-"] {
  position: static;
  float: none;
  display: table-cell;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
  background-color: #f5f5f5;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
  background-color: #e8e8e8;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
  background-color: #dff0d8;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
  background-color: #d0e9c6;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
  background-color: #d9edf7;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
  background-color: #c4e3f3;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
  background-color: #fcf8e3;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
  background-color: #faf2cc;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
  background-color: #f2dede;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
  background-color: #ebcccc;
}
.table-responsive {
  overflow-x: auto;
  min-height: 0.01%;
}
@media screen and (max-width: 767px) {
  .table-responsive {
    width: 100%;
    margin-bottom: 13.5px;
    overflow-y: hidden;
    -ms-overflow-style: -ms-autohiding-scrollbar;
    border: 1px solid #ddd;
  }
  .table-responsive > .table {
    margin-bottom: 0;
  }
  .table-responsive > .table > thead > tr > th,
  .table-responsive > .table > tbody > tr > th,
  .table-responsive > .table > tfoot > tr > th,
  .table-responsive > .table > thead > tr > td,
  .table-responsive > .table > tbody > tr > td,
  .table-responsive > .table > tfoot > tr > td {
    white-space: nowrap;
  }
  .table-responsive > .table-bordered {
    border: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:first-child,
  .table-responsive > .table-bordered > tbody > tr > th:first-child,
  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
  .table-responsive > .table-bordered > thead > tr > td:first-child,
  .table-responsive > .table-bordered > tbody > tr > td:first-child,
  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
    border-left: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:last-child,
  .table-responsive > .table-bordered > tbody > tr > th:last-child,
  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
  .table-responsive > .table-bordered > thead > tr > td:last-child,
  .table-responsive > .table-bordered > tbody > tr > td:last-child,
  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
    border-right: 0;
  }
  .table-responsive > .table-bordered > tbody > tr:last-child > th,
  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
  .table-responsive > .table-bordered > tbody > tr:last-child > td,
  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
    border-bottom: 0;
  }
}
fieldset {
  padding: 0;
  margin: 0;
  border: 0;
  min-width: 0;
}
legend {
  display: block;
  width: 100%;
  padding: 0;
  margin-bottom: 18px;
  font-size: 19.5px;
  line-height: inherit;
  color: #333333;
  border: 0;
  border-bottom: 1px solid #e5e5e5;
}
label {
  display: inline-block;
  max-width: 100%;
  margin-bottom: 5px;
  font-weight: bold;
}
input[type="search"] {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
input[type="radio"],
input[type="checkbox"] {
  margin: 4px 0 0;
  margin-top: 1px \9;
  line-height: normal;
}
input[type="file"] {
  display: block;
}
input[type="range"] {
  display: block;
  width: 100%;
}
select[multiple],
select[size] {
  height: auto;
}
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
output {
  display: block;
  padding-top: 7px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
}
.form-control {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.form-control::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.form-control:-ms-input-placeholder {
  color: #999;
}
.form-control::-webkit-input-placeholder {
  color: #999;
}
.form-control::-ms-expand {
  border: 0;
  background-color: transparent;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
  background-color: #eeeeee;
  opacity: 1;
}
.form-control[disabled],
fieldset[disabled] .form-control {
  cursor: not-allowed;
}
textarea.form-control {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: none;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  input[type="date"].form-control,
  input[type="time"].form-control,
  input[type="datetime-local"].form-control,
  input[type="month"].form-control {
    line-height: 32px;
  }
  input[type="date"].input-sm,
  input[type="time"].input-sm,
  input[type="datetime-local"].input-sm,
  input[type="month"].input-sm,
  .input-group-sm input[type="date"],
  .input-group-sm input[type="time"],
  .input-group-sm input[type="datetime-local"],
  .input-group-sm input[type="month"] {
    line-height: 30px;
  }
  input[type="date"].input-lg,
  input[type="time"].input-lg,
  input[type="datetime-local"].input-lg,
  input[type="month"].input-lg,
  .input-group-lg input[type="date"],
  .input-group-lg input[type="time"],
  .input-group-lg input[type="datetime-local"],
  .input-group-lg input[type="month"] {
    line-height: 45px;
  }
}
.form-group {
  margin-bottom: 15px;
}
.radio,
.checkbox {
  position: relative;
  display: block;
  margin-top: 10px;
  margin-bottom: 10px;
}
.radio label,
.checkbox label {
  min-height: 18px;
  padding-left: 20px;
  margin-bottom: 0;
  font-weight: normal;
  cursor: pointer;
}
.radio input[type="radio"],
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
  position: absolute;
  margin-left: -20px;
  margin-top: 4px \9;
}
.radio + .radio,
.checkbox + .checkbox {
  margin-top: -5px;
}
.radio-inline,
.checkbox-inline {
  position: relative;
  display: inline-block;
  padding-left: 20px;
  margin-bottom: 0;
  vertical-align: middle;
  font-weight: normal;
  cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
  margin-top: 0;
  margin-left: 10px;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"].disabled,
input[type="checkbox"].disabled,
fieldset[disabled] input[type="radio"],
fieldset[disabled] input[type="checkbox"] {
  cursor: not-allowed;
}
.radio-inline.disabled,
.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
fieldset[disabled] .checkbox-inline {
  cursor: not-allowed;
}
.radio.disabled label,
.checkbox.disabled label,
fieldset[disabled] .radio label,
fieldset[disabled] .checkbox label {
  cursor: not-allowed;
}
.form-control-static {
  padding-top: 7px;
  padding-bottom: 7px;
  margin-bottom: 0;
  min-height: 31px;
}
.form-control-static.input-lg,
.form-control-static.input-sm {
  padding-left: 0;
  padding-right: 0;
}
.input-sm {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-sm {
  height: 30px;
  line-height: 30px;
}
textarea.input-sm,
select[multiple].input-sm {
  height: auto;
}
.form-group-sm .form-control {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.form-group-sm select.form-control {
  height: 30px;
  line-height: 30px;
}
.form-group-sm textarea.form-control,
.form-group-sm select[multiple].form-control {
  height: auto;
}
.form-group-sm .form-control-static {
  height: 30px;
  min-height: 30px;
  padding: 6px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.input-lg {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-lg {
  height: 45px;
  line-height: 45px;
}
textarea.input-lg,
select[multiple].input-lg {
  height: auto;
}
.form-group-lg .form-control {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.form-group-lg select.form-control {
  height: 45px;
  line-height: 45px;
}
.form-group-lg textarea.form-control,
.form-group-lg select[multiple].form-control {
  height: auto;
}
.form-group-lg .form-control-static {
  height: 45px;
  min-height: 35px;
  padding: 11px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.has-feedback {
  position: relative;
}
.has-feedback .form-control {
  padding-right: 40px;
}
.form-control-feedback {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  display: block;
  width: 32px;
  height: 32px;
  line-height: 32px;
  text-align: center;
  pointer-events: none;
}
.input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback,
.form-group-lg .form-control + .form-control-feedback {
  width: 45px;
  height: 45px;
  line-height: 45px;
}
.input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback,
.form-group-sm .form-control + .form-control-feedback {
  width: 30px;
  height: 30px;
  line-height: 30px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label {
  color: #3c763d;
}
.has-success .form-control {
  border-color: #3c763d;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-success .form-control:focus {
  border-color: #2b542c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
}
.has-success .input-group-addon {
  color: #3c763d;
  border-color: #3c763d;
  background-color: #dff0d8;
}
.has-success .form-control-feedback {
  color: #3c763d;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label {
  color: #8a6d3b;
}
.has-warning .form-control {
  border-color: #8a6d3b;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-warning .form-control:focus {
  border-color: #66512c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
}
.has-warning .input-group-addon {
  color: #8a6d3b;
  border-color: #8a6d3b;
  background-color: #fcf8e3;
}
.has-warning .form-control-feedback {
  color: #8a6d3b;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label {
  color: #a94442;
}
.has-error .form-control {
  border-color: #a94442;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-error .form-control:focus {
  border-color: #843534;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
}
.has-error .input-group-addon {
  color: #a94442;
  border-color: #a94442;
  background-color: #f2dede;
}
.has-error .form-control-feedback {
  color: #a94442;
}
.has-feedback label ~ .form-control-feedback {
  top: 23px;
}
.has-feedback label.sr-only ~ .form-control-feedback {
  top: 0;
}
.help-block {
  display: block;
  margin-top: 5px;
  margin-bottom: 10px;
  color: #404040;
}
@media (min-width: 768px) {
  .form-inline .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .form-inline .form-control-static {
    display: inline-block;
  }
  .form-inline .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .form-inline .input-group .input-group-addon,
  .form-inline .input-group .input-group-btn,
  .form-inline .input-group .form-control {
    width: auto;
  }
  .form-inline .input-group > .form-control {
    width: 100%;
  }
  .form-inline .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio,
  .form-inline .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio label,
  .form-inline .checkbox label {
    padding-left: 0;
  }
  .form-inline .radio input[type="radio"],
  .form-inline .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .form-inline .has-feedback .form-control-feedback {
    top: 0;
  }
}
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
  margin-top: 0;
  margin-bottom: 0;
  padding-top: 7px;
}
.form-horizontal .radio,
.form-horizontal .checkbox {
  min-height: 25px;
}
.form-horizontal .form-group {
  margin-left: 0px;
  margin-right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .control-label {
    text-align: right;
    margin-bottom: 0;
    padding-top: 7px;
  }
}
.form-horizontal .has-feedback .form-control-feedback {
  right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .form-group-lg .control-label {
    padding-top: 11px;
    font-size: 17px;
  }
}
@media (min-width: 768px) {
  .form-horizontal .form-group-sm .control-label {
    padding-top: 6px;
    font-size: 12px;
  }
}
.btn {
  display: inline-block;
  margin-bottom: 0;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  touch-action: manipulation;
  cursor: pointer;
  background-image: none;
  border: 1px solid transparent;
  white-space: nowrap;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  border-radius: 2px;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
  color: #333;
  text-decoration: none;
}
.btn:active,
.btn.active {
  outline: 0;
  background-image: none;
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
  cursor: not-allowed;
  opacity: 0.65;
  filter: alpha(opacity=65);
  -webkit-box-shadow: none;
  box-shadow: none;
}
a.btn.disabled,
fieldset[disabled] a.btn {
  pointer-events: none;
}
.btn-default {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.btn-default:focus,
.btn-default.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.btn-default:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active:hover,
.btn-default.active:hover,
.open > .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open > .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn-default.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  background-image: none;
}
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus {
  background-color: #fff;
  border-color: #ccc;
}
.btn-default .badge {
  color: #fff;
  background-color: #333;
}
.btn-primary {
  color: #fff;
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary:focus,
.btn-primary.focus {
  color: #fff;
  background-color: #286090;
  border-color: #122b40;
}
.btn-primary:hover {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active:hover,
.btn-primary.active:hover,
.open > .dropdown-toggle.btn-primary:hover,
.btn-primary:active:focus,
.btn-primary.active:focus,
.open > .dropdown-toggle.btn-primary:focus,
.btn-primary:active.focus,
.btn-primary.active.focus,
.open > .dropdown-toggle.btn-primary.focus {
  color: #fff;
  background-color: #204d74;
  border-color: #122b40;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  background-image: none;
}
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus {
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary .badge {
  color: #337ab7;
  background-color: #fff;
}
.btn-success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success:focus,
.btn-success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.btn-success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active:hover,
.btn-success.active:hover,
.open > .dropdown-toggle.btn-success:hover,
.btn-success:active:focus,
.btn-success.active:focus,
.open > .dropdown-toggle.btn-success:focus,
.btn-success:active.focus,
.btn-success.active.focus,
.open > .dropdown-toggle.btn-success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  background-image: none;
}
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.btn-info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info:focus,
.btn-info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.btn-info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active:hover,
.btn-info.active:hover,
.open > .dropdown-toggle.btn-info:hover,
.btn-info:active:focus,
.btn-info.active:focus,
.open > .dropdown-toggle.btn-info:focus,
.btn-info:active.focus,
.btn-info.active.focus,
.open > .dropdown-toggle.btn-info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  background-image: none;
}
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.btn-warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning:focus,
.btn-warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.btn-warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active:hover,
.btn-warning.active:hover,
.open > .dropdown-toggle.btn-warning:hover,
.btn-warning:active:focus,
.btn-warning.active:focus,
.open > .dropdown-toggle.btn-warning:focus,
.btn-warning:active.focus,
.btn-warning.active.focus,
.open > .dropdown-toggle.btn-warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  background-image: none;
}
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.btn-danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger:focus,
.btn-danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.btn-danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active:hover,
.btn-danger.active:hover,
.open > .dropdown-toggle.btn-danger:hover,
.btn-danger:active:focus,
.btn-danger.active:focus,
.open > .dropdown-toggle.btn-danger:focus,
.btn-danger:active.focus,
.btn-danger.active.focus,
.open > .dropdown-toggle.btn-danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  background-image: none;
}
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger .badge {
  color: #d9534f;
  background-color: #fff;
}
.btn-link {
  color: #337ab7;
  font-weight: normal;
  border-radius: 0;
}
.btn-link,
.btn-link:active,
.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
  background-color: transparent;
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn-link,
.btn-link:hover,
.btn-link:focus,
.btn-link:active {
  border-color: transparent;
}
.btn-link:hover,
.btn-link:focus {
  color: #23527c;
  text-decoration: underline;
  background-color: transparent;
}
.btn-link[disabled]:hover,
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
  color: #777777;
  text-decoration: none;
}
.btn-lg,
.btn-group-lg > .btn {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.btn-sm,
.btn-group-sm > .btn {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-xs,
.btn-group-xs > .btn {
  padding: 1px 5px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-block {
  display: block;
  width: 100%;
}
.btn-block + .btn-block {
  margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
  width: 100%;
}
.fade {
  opacity: 0;
  -webkit-transition: opacity 0.15s linear;
  -o-transition: opacity 0.15s linear;
  transition: opacity 0.15s linear;
}
.fade.in {
  opacity: 1;
}
.collapse {
  display: none;
}
.collapse.in {
  display: block;
}
tr.collapse.in {
  display: table-row;
}
tbody.collapse.in {
  display: table-row-group;
}
.collapsing {
  position: relative;
  height: 0;
  overflow: hidden;
  -webkit-transition-property: height, visibility;
  transition-property: height, visibility;
  -webkit-transition-duration: 0.35s;
  transition-duration: 0.35s;
  -webkit-transition-timing-function: ease;
  transition-timing-function: ease;
}
.caret {
  display: inline-block;
  width: 0;
  height: 0;
  margin-left: 2px;
  vertical-align: middle;
  border-top: 4px dashed;
  border-top: 4px solid \9;
  border-right: 4px solid transparent;
  border-left: 4px solid transparent;
}
.dropup,
.dropdown {
  position: relative;
}
.dropdown-toggle:focus {
  outline: 0;
}
.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  display: none;
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  list-style: none;
  font-size: 13px;
  text-align: left;
  background-color: #fff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.15);
  border-radius: 2px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  background-clip: padding-box;
}
.dropdown-menu.pull-right {
  right: 0;
  left: auto;
}
.dropdown-menu .divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.dropdown-menu > li > a {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: normal;
  line-height: 1.42857143;
  color: #333333;
  white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  text-decoration: none;
  color: #262626;
  background-color: #f5f5f5;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
  color: #fff;
  text-decoration: none;
  outline: 0;
  background-color: #337ab7;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  color: #777777;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  text-decoration: none;
  background-color: transparent;
  background-image: none;
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  cursor: not-allowed;
}
.open > .dropdown-menu {
  display: block;
}
.open > a {
  outline: 0;
}
.dropdown-menu-right {
  left: auto;
  right: 0;
}
.dropdown-menu-left {
  left: 0;
  right: auto;
}
.dropdown-header {
  display: block;
  padding: 3px 20px;
  font-size: 12px;
  line-height: 1.42857143;
  color: #777777;
  white-space: nowrap;
}
.dropdown-backdrop {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  z-index: 990;
}
.pull-right > .dropdown-menu {
  right: 0;
  left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
  border-top: 0;
  border-bottom: 4px dashed;
  border-bottom: 4px solid \9;
  content: "";
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
  top: auto;
  bottom: 100%;
  margin-bottom: 2px;
}
@media (min-width: 541px) {
  .navbar-right .dropdown-menu {
    left: auto;
    right: 0;
  }
  .navbar-right .dropdown-menu-left {
    left: 0;
    right: auto;
  }
}
.btn-group,
.btn-group-vertical {
  position: relative;
  display: inline-block;
  vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
  position: relative;
  float: left;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus,
.btn-group > .btn:active,
.btn-group-vertical > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn.active {
  z-index: 2;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
  margin-left: -1px;
}
.btn-toolbar {
  margin-left: -5px;
}
.btn-toolbar .btn,
.btn-toolbar .btn-group,
.btn-toolbar .input-group {
  float: left;
}
.btn-toolbar > .btn,
.btn-toolbar > .btn-group,
.btn-toolbar > .input-group {
  margin-left: 5px;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
  border-radius: 0;
}
.btn-group > .btn:first-child {
  margin-left: 0;
}
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group > .btn-group {
  float: left;
}
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
  outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
  padding-left: 8px;
  padding-right: 8px;
}
.btn-group > .btn-lg + .dropdown-toggle {
  padding-left: 12px;
  padding-right: 12px;
}
.btn-group.open .dropdown-toggle {
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn-group.open .dropdown-toggle.btn-link {
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn .caret {
  margin-left: 0;
}
.btn-lg .caret {
  border-width: 5px 5px 0;
  border-bottom-width: 0;
}
.dropup .btn-lg .caret {
  border-width: 0 5px 5px;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group,
.btn-group-vertical > .btn-group > .btn {
  display: block;
  float: none;
  width: 100%;
  max-width: 100%;
}
.btn-group-vertical > .btn-group > .btn {
  float: none;
}
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
.btn-group-vertical > .btn-group + .btn-group {
  margin-top: -1px;
  margin-left: 0;
}
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.btn-group-vertical > .btn:first-child:not(:last-child) {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:last-child:not(:first-child) {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.btn-group-justified {
  display: table;
  width: 100%;
  table-layout: fixed;
  border-collapse: separate;
}
.btn-group-justified > .btn,
.btn-group-justified > .btn-group {
  float: none;
  display: table-cell;
  width: 1%;
}
.btn-group-justified > .btn-group .btn {
  width: 100%;
}
.btn-group-justified > .btn-group .dropdown-menu {
  left: auto;
}
[data-toggle="buttons"] > .btn input[type="radio"],
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
[data-toggle="buttons"] > .btn input[type="checkbox"],
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
  position: absolute;
  clip: rect(0, 0, 0, 0);
  pointer-events: none;
}
.input-group {
  position: relative;
  display: table;
  border-collapse: separate;
}
.input-group[class*="col-"] {
  float: none;
  padding-left: 0;
  padding-right: 0;
}
.input-group .form-control {
  position: relative;
  z-index: 2;
  float: left;
  width: 100%;
  margin-bottom: 0;
}
.input-group .form-control:focus {
  z-index: 3;
}
.input-group-lg > .form-control,
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-group-lg > .form-control,
select.input-group-lg > .input-group-addon,
select.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  line-height: 45px;
}
textarea.input-group-lg > .form-control,
textarea.input-group-lg > .input-group-addon,
textarea.input-group-lg > .input-group-btn > .btn,
select[multiple].input-group-lg > .form-control,
select[multiple].input-group-lg > .input-group-addon,
select[multiple].input-group-lg > .input-group-btn > .btn {
  height: auto;
}
.input-group-sm > .form-control,
.input-group-sm > .input-group-addon,
.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-group-sm > .form-control,
select.input-group-sm > .input-group-addon,
select.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  line-height: 30px;
}
textarea.input-group-sm > .form-control,
textarea.input-group-sm > .input-group-addon,
textarea.input-group-sm > .input-group-btn > .btn,
select[multiple].input-group-sm > .form-control,
select[multiple].input-group-sm > .input-group-addon,
select[multiple].input-group-sm > .input-group-btn > .btn {
  height: auto;
}
.input-group-addon,
.input-group-btn,
.input-group .form-control {
  display: table-cell;
}
.input-group-addon:not(:first-child):not(:last-child),
.input-group-btn:not(:first-child):not(:last-child),
.input-group .form-control:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.input-group-addon,
.input-group-btn {
  width: 1%;
  white-space: nowrap;
  vertical-align: middle;
}
.input-group-addon {
  padding: 6px 12px;
  font-size: 13px;
  font-weight: normal;
  line-height: 1;
  color: #555555;
  text-align: center;
  background-color: #eeeeee;
  border: 1px solid #ccc;
  border-radius: 2px;
}
.input-group-addon.input-sm {
  padding: 5px 10px;
  font-size: 12px;
  border-radius: 1px;
}
.input-group-addon.input-lg {
  padding: 10px 16px;
  font-size: 17px;
  border-radius: 3px;
}
.input-group-addon input[type="radio"],
.input-group-addon input[type="checkbox"] {
  margin-top: 0;
}
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group > .btn,
.input-group-btn:first-child > .dropdown-toggle,
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.input-group-addon:first-child {
  border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.input-group-addon:last-child {
  border-left: 0;
}
.input-group-btn {
  position: relative;
  font-size: 0;
  white-space: nowrap;
}
.input-group-btn > .btn {
  position: relative;
}
.input-group-btn > .btn + .btn {
  margin-left: -1px;
}
.input-group-btn > .btn:hover,
.input-group-btn > .btn:focus,
.input-group-btn > .btn:active {
  z-index: 2;
}
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group {
  margin-right: -1px;
}
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group {
  z-index: 2;
  margin-left: -1px;
}
.nav {
  margin-bottom: 0;
  padding-left: 0;
  list-style: none;
}
.nav > li {
  position: relative;
  display: block;
}
.nav > li > a {
  position: relative;
  display: block;
  padding: 10px 15px;
}
.nav > li > a:hover,
.nav > li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.nav > li.disabled > a {
  color: #777777;
}
.nav > li.disabled > a:hover,
.nav > li.disabled > a:focus {
  color: #777777;
  text-decoration: none;
  background-color: transparent;
  cursor: not-allowed;
}
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
  background-color: #eeeeee;
  border-color: #337ab7;
}
.nav .nav-divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.nav > li > a > img {
  max-width: none;
}
.nav-tabs {
  border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
  float: left;
  margin-bottom: -1px;
}
.nav-tabs > li > a {
  margin-right: 2px;
  line-height: 1.42857143;
  border: 1px solid transparent;
  border-radius: 2px 2px 0 0;
}
.nav-tabs > li > a:hover {
  border-color: #eeeeee #eeeeee #ddd;
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
  color: #555555;
  background-color: #fff;
  border: 1px solid #ddd;
  border-bottom-color: transparent;
  cursor: default;
}
.nav-tabs.nav-justified {
  width: 100%;
  border-bottom: 0;
}
.nav-tabs.nav-justified > li {
  float: none;
}
.nav-tabs.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-tabs.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-tabs.nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs.nav-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs.nav-justified > .active > a,
  .nav-tabs.nav-justified > .active > a:hover,
  .nav-tabs.nav-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.nav-pills > li {
  float: left;
}
.nav-pills > li > a {
  border-radius: 2px;
}
.nav-pills > li + li {
  margin-left: 2px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
  color: #fff;
  background-color: #337ab7;
}
.nav-stacked > li {
  float: none;
}
.nav-stacked > li + li {
  margin-top: 2px;
  margin-left: 0;
}
.nav-justified {
  width: 100%;
}
.nav-justified > li {
  float: none;
}
.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs-justified {
  border-bottom: 0;
}
.nav-tabs-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs-justified > .active > a,
  .nav-tabs-justified > .active > a:hover,
  .nav-tabs-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.tab-content > .tab-pane {
  display: none;
}
.tab-content > .active {
  display: block;
}
.nav-tabs .dropdown-menu {
  margin-top: -1px;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar {
  position: relative;
  min-height: 30px;
  margin-bottom: 18px;
  border: 1px solid transparent;
}
@media (min-width: 541px) {
  .navbar {
    border-radius: 2px;
  }
}
@media (min-width: 541px) {
  .navbar-header {
    float: left;
  }
}
.navbar-collapse {
  overflow-x: visible;
  padding-right: 0px;
  padding-left: 0px;
  border-top: 1px solid transparent;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
  -webkit-overflow-scrolling: touch;
}
.navbar-collapse.in {
  overflow-y: auto;
}
@media (min-width: 541px) {
  .navbar-collapse {
    width: auto;
    border-top: 0;
    box-shadow: none;
  }
  .navbar-collapse.collapse {
    display: block !important;
    height: auto !important;
    padding-bottom: 0;
    overflow: visible !important;
  }
  .navbar-collapse.in {
    overflow-y: visible;
  }
  .navbar-fixed-top .navbar-collapse,
  .navbar-static-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    padding-left: 0;
    padding-right: 0;
  }
}
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
  max-height: 340px;
}
@media (max-device-width: 540px) and (orientation: landscape) {
  .navbar-fixed-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    max-height: 200px;
  }
}
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
  margin-right: 0px;
  margin-left: 0px;
}
@media (min-width: 541px) {
  .container > .navbar-header,
  .container-fluid > .navbar-header,
  .container > .navbar-collapse,
  .container-fluid > .navbar-collapse {
    margin-right: 0;
    margin-left: 0;
  }
}
.navbar-static-top {
  z-index: 1000;
  border-width: 0 0 1px;
}
@media (min-width: 541px) {
  .navbar-static-top {
    border-radius: 0;
  }
}
.navbar-fixed-top,
.navbar-fixed-bottom {
  position: fixed;
  right: 0;
  left: 0;
  z-index: 1030;
}
@media (min-width: 541px) {
  .navbar-fixed-top,
  .navbar-fixed-bottom {
    border-radius: 0;
  }
}
.navbar-fixed-top {
  top: 0;
  border-width: 0 0 1px;
}
.navbar-fixed-bottom {
  bottom: 0;
  margin-bottom: 0;
  border-width: 1px 0 0;
}
.navbar-brand {
  float: left;
  padding: 6px 0px;
  font-size: 17px;
  line-height: 18px;
  height: 30px;
}
.navbar-brand:hover,
.navbar-brand:focus {
  text-decoration: none;
}
.navbar-brand > img {
  display: block;
}
@media (min-width: 541px) {
  .navbar > .container .navbar-brand,
  .navbar > .container-fluid .navbar-brand {
    margin-left: 0px;
  }
}
.navbar-toggle {
  position: relative;
  float: right;
  margin-right: 0px;
  padding: 9px 10px;
  margin-top: -2px;
  margin-bottom: -2px;
  background-color: transparent;
  background-image: none;
  border: 1px solid transparent;
  border-radius: 2px;
}
.navbar-toggle:focus {
  outline: 0;
}
.navbar-toggle .icon-bar {
  display: block;
  width: 22px;
  height: 2px;
  border-radius: 1px;
}
.navbar-toggle .icon-bar + .icon-bar {
  margin-top: 4px;
}
@media (min-width: 541px) {
  .navbar-toggle {
    display: none;
  }
}
.navbar-nav {
  margin: 3px 0px;
}
.navbar-nav > li > a {
  padding-top: 10px;
  padding-bottom: 10px;
  line-height: 18px;
}
@media (max-width: 540px) {
  .navbar-nav .open .dropdown-menu {
    position: static;
    float: none;
    width: auto;
    margin-top: 0;
    background-color: transparent;
    border: 0;
    box-shadow: none;
  }
  .navbar-nav .open .dropdown-menu > li > a,
  .navbar-nav .open .dropdown-menu .dropdown-header {
    padding: 5px 15px 5px 25px;
  }
  .navbar-nav .open .dropdown-menu > li > a {
    line-height: 18px;
  }
  .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-nav .open .dropdown-menu > li > a:focus {
    background-image: none;
  }
}
@media (min-width: 541px) {
  .navbar-nav {
    float: left;
    margin: 0;
  }
  .navbar-nav > li {
    float: left;
  }
  .navbar-nav > li > a {
    padding-top: 6px;
    padding-bottom: 6px;
  }
}
.navbar-form {
  margin-left: 0px;
  margin-right: 0px;
  padding: 10px 0px;
  border-top: 1px solid transparent;
  border-bottom: 1px solid transparent;
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  margin-top: -1px;
  margin-bottom: -1px;
}
@media (min-width: 768px) {
  .navbar-form .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .navbar-form .form-control-static {
    display: inline-block;
  }
  .navbar-form .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .navbar-form .input-group .input-group-addon,
  .navbar-form .input-group .input-group-btn,
  .navbar-form .input-group .form-control {
    width: auto;
  }
  .navbar-form .input-group > .form-control {
    width: 100%;
  }
  .navbar-form .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio,
  .navbar-form .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio label,
  .navbar-form .checkbox label {
    padding-left: 0;
  }
  .navbar-form .radio input[type="radio"],
  .navbar-form .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .navbar-form .has-feedback .form-control-feedback {
    top: 0;
  }
}
@media (max-width: 540px) {
  .navbar-form .form-group {
    margin-bottom: 5px;
  }
  .navbar-form .form-group:last-child {
    margin-bottom: 0;
  }
}
@media (min-width: 541px) {
  .navbar-form {
    width: auto;
    border: 0;
    margin-left: 0;
    margin-right: 0;
    padding-top: 0;
    padding-bottom: 0;
    -webkit-box-shadow: none;
    box-shadow: none;
  }
}
.navbar-nav > li > .dropdown-menu {
  margin-top: 0;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
  margin-bottom: 0;
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.navbar-btn {
  margin-top: -1px;
  margin-bottom: -1px;
}
.navbar-btn.btn-sm {
  margin-top: 0px;
  margin-bottom: 0px;
}
.navbar-btn.btn-xs {
  margin-top: 4px;
  margin-bottom: 4px;
}
.navbar-text {
  margin-top: 6px;
  margin-bottom: 6px;
}
@media (min-width: 541px) {
  .navbar-text {
    float: left;
    margin-left: 0px;
    margin-right: 0px;
  }
}
@media (min-width: 541px) {
  .navbar-left {
    float: left !important;
    float: left;
  }
  .navbar-right {
    float: right !important;
    float: right;
    margin-right: 0px;
  }
  .navbar-right ~ .navbar-right {
    margin-right: 0;
  }
}
.navbar-default {
  background-color: #f8f8f8;
  border-color: #e7e7e7;
}
.navbar-default .navbar-brand {
  color: #777;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
  color: #5e5e5e;
  background-color: transparent;
}
.navbar-default .navbar-text {
  color: #777;
}
.navbar-default .navbar-nav > li > a {
  color: #777;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
  color: #333;
  background-color: transparent;
}
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
  color: #555;
  background-color: #e7e7e7;
}
.navbar-default .navbar-nav > .disabled > a,
.navbar-default .navbar-nav > .disabled > a:hover,
.navbar-default .navbar-nav > .disabled > a:focus {
  color: #ccc;
  background-color: transparent;
}
.navbar-default .navbar-toggle {
  border-color: #ddd;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
  background-color: #ddd;
}
.navbar-default .navbar-toggle .icon-bar {
  background-color: #888;
}
.navbar-default .navbar-collapse,
.navbar-default .navbar-form {
  border-color: #e7e7e7;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus {
  background-color: #e7e7e7;
  color: #555;
}
@media (max-width: 540px) {
  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
    color: #777;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #333;
    background-color: transparent;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #555;
    background-color: #e7e7e7;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #ccc;
    background-color: transparent;
  }
}
.navbar-default .navbar-link {
  color: #777;
}
.navbar-default .navbar-link:hover {
  color: #333;
}
.navbar-default .btn-link {
  color: #777;
}
.navbar-default .btn-link:hover,
.navbar-default .btn-link:focus {
  color: #333;
}
.navbar-default .btn-link[disabled]:hover,
fieldset[disabled] .navbar-default .btn-link:hover,
.navbar-default .btn-link[disabled]:focus,
fieldset[disabled] .navbar-default .btn-link:focus {
  color: #ccc;
}
.navbar-inverse {
  background-color: #222;
  border-color: #080808;
}
.navbar-inverse .navbar-brand {
  color: #9d9d9d;
}
.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-text {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a:hover,
.navbar-inverse .navbar-nav > li > a:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-nav > .active > a,
.navbar-inverse .navbar-nav > .active > a:hover,
.navbar-inverse .navbar-nav > .active > a:focus {
  color: #fff;
  background-color: #080808;
}
.navbar-inverse .navbar-nav > .disabled > a,
.navbar-inverse .navbar-nav > .disabled > a:hover,
.navbar-inverse .navbar-nav > .disabled > a:focus {
  color: #444;
  background-color: transparent;
}
.navbar-inverse .navbar-toggle {
  border-color: #333;
}
.navbar-inverse .navbar-toggle:hover,
.navbar-inverse .navbar-toggle:focus {
  background-color: #333;
}
.navbar-inverse .navbar-toggle .icon-bar {
  background-color: #fff;
}
.navbar-inverse .navbar-collapse,
.navbar-inverse .navbar-form {
  border-color: #101010;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .open > a:hover,
.navbar-inverse .navbar-nav > .open > a:focus {
  background-color: #080808;
  color: #fff;
}
@media (max-width: 540px) {
  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
    border-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
    color: #9d9d9d;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #fff;
    background-color: transparent;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #fff;
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #444;
    background-color: transparent;
  }
}
.navbar-inverse .navbar-link {
  color: #9d9d9d;
}
.navbar-inverse .navbar-link:hover {
  color: #fff;
}
.navbar-inverse .btn-link {
  color: #9d9d9d;
}
.navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link:focus {
  color: #fff;
}
.navbar-inverse .btn-link[disabled]:hover,
fieldset[disabled] .navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link[disabled]:focus,
fieldset[disabled] .navbar-inverse .btn-link:focus {
  color: #444;
}
.breadcrumb {
  padding: 8px 15px;
  margin-bottom: 18px;
  list-style: none;
  background-color: #f5f5f5;
  border-radius: 2px;
}
.breadcrumb > li {
  display: inline-block;
}
.breadcrumb > li + li:before {
  content: "/\00a0";
  padding: 0 5px;
  color: #5e5e5e;
}
.breadcrumb > .active {
  color: #777777;
}
.pagination {
  display: inline-block;
  padding-left: 0;
  margin: 18px 0;
  border-radius: 2px;
}
.pagination > li {
  display: inline;
}
.pagination > li > a,
.pagination > li > span {
  position: relative;
  float: left;
  padding: 6px 12px;
  line-height: 1.42857143;
  text-decoration: none;
  color: #337ab7;
  background-color: #fff;
  border: 1px solid #ddd;
  margin-left: -1px;
}
.pagination > li:first-child > a,
.pagination > li:first-child > span {
  margin-left: 0;
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
  border-bottom-right-radius: 2px;
  border-top-right-radius: 2px;
}
.pagination > li > a:hover,
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
  z-index: 2;
  color: #23527c;
  background-color: #eeeeee;
  border-color: #ddd;
}
.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
  z-index: 3;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
  cursor: default;
}
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
.pagination > .disabled > span:focus,
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
  color: #777777;
  background-color: #fff;
  border-color: #ddd;
  cursor: not-allowed;
}
.pagination-lg > li > a,
.pagination-lg > li > span {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.pagination-lg > li:first-child > a,
.pagination-lg > li:first-child > span {
  border-bottom-left-radius: 3px;
  border-top-left-radius: 3px;
}
.pagination-lg > li:last-child > a,
.pagination-lg > li:last-child > span {
  border-bottom-right-radius: 3px;
  border-top-right-radius: 3px;
}
.pagination-sm > li > a,
.pagination-sm > li > span {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.pagination-sm > li:first-child > a,
.pagination-sm > li:first-child > span {
  border-bottom-left-radius: 1px;
  border-top-left-radius: 1px;
}
.pagination-sm > li:last-child > a,
.pagination-sm > li:last-child > span {
  border-bottom-right-radius: 1px;
  border-top-right-radius: 1px;
}
.pager {
  padding-left: 0;
  margin: 18px 0;
  list-style: none;
  text-align: center;
}
.pager li {
  display: inline;
}
.pager li > a,
.pager li > span {
  display: inline-block;
  padding: 5px 14px;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 15px;
}
.pager li > a:hover,
.pager li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.pager .next > a,
.pager .next > span {
  float: right;
}
.pager .previous > a,
.pager .previous > span {
  float: left;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
  color: #777777;
  background-color: #fff;
  cursor: not-allowed;
}
.label {
  display: inline;
  padding: .2em .6em .3em;
  font-size: 75%;
  font-weight: bold;
  line-height: 1;
  color: #fff;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: .25em;
}
a.label:hover,
a.label:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.label:empty {
  display: none;
}
.btn .label {
  position: relative;
  top: -1px;
}
.label-default {
  background-color: #777777;
}
.label-default[href]:hover,
.label-default[href]:focus {
  background-color: #5e5e5e;
}
.label-primary {
  background-color: #337ab7;
}
.label-primary[href]:hover,
.label-primary[href]:focus {
  background-color: #286090;
}
.label-success {
  background-color: #5cb85c;
}
.label-success[href]:hover,
.label-success[href]:focus {
  background-color: #449d44;
}
.label-info {
  background-color: #5bc0de;
}
.label-info[href]:hover,
.label-info[href]:focus {
  background-color: #31b0d5;
}
.label-warning {
  background-color: #f0ad4e;
}
.label-warning[href]:hover,
.label-warning[href]:focus {
  background-color: #ec971f;
}
.label-danger {
  background-color: #d9534f;
}
.label-danger[href]:hover,
.label-danger[href]:focus {
  background-color: #c9302c;
}
.badge {
  display: inline-block;
  min-width: 10px;
  padding: 3px 7px;
  font-size: 12px;
  font-weight: bold;
  color: #fff;
  line-height: 1;
  vertical-align: middle;
  white-space: nowrap;
  text-align: center;
  background-color: #777777;
  border-radius: 10px;
}
.badge:empty {
  display: none;
}
.btn .badge {
  position: relative;
  top: -1px;
}
.btn-xs .badge,
.btn-group-xs > .btn .badge {
  top: 0;
  padding: 1px 5px;
}
a.badge:hover,
a.badge:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
  color: #337ab7;
  background-color: #fff;
}
.list-group-item > .badge {
  float: right;
}
.list-group-item > .badge + .badge {
  margin-right: 5px;
}
.nav-pills > li > a > .badge {
  margin-left: 3px;
}
.jumbotron {
  padding-top: 30px;
  padding-bottom: 30px;
  margin-bottom: 30px;
  color: inherit;
  background-color: #eeeeee;
}
.jumbotron h1,
.jumbotron .h1 {
  color: inherit;
}
.jumbotron p {
  margin-bottom: 15px;
  font-size: 20px;
  font-weight: 200;
}
.jumbotron > hr {
  border-top-color: #d5d5d5;
}
.container .jumbotron,
.container-fluid .jumbotron {
  border-radius: 3px;
  padding-left: 0px;
  padding-right: 0px;
}
.jumbotron .container {
  max-width: 100%;
}
@media screen and (min-width: 768px) {
  .jumbotron {
    padding-top: 48px;
    padding-bottom: 48px;
  }
  .container .jumbotron,
  .container-fluid .jumbotron {
    padding-left: 60px;
    padding-right: 60px;
  }
  .jumbotron h1,
  .jumbotron .h1 {
    font-size: 59px;
  }
}
.thumbnail {
  display: block;
  padding: 4px;
  margin-bottom: 18px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: border 0.2s ease-in-out;
  -o-transition: border 0.2s ease-in-out;
  transition: border 0.2s ease-in-out;
}
.thumbnail > img,
.thumbnail a > img {
  margin-left: auto;
  margin-right: auto;
}
a.thumbnail:hover,
a.thumbnail:focus,
a.thumbnail.active {
  border-color: #337ab7;
}
.thumbnail .caption {
  padding: 9px;
  color: #000;
}
.alert {
  padding: 15px;
  margin-bottom: 18px;
  border: 1px solid transparent;
  border-radius: 2px;
}
.alert h4 {
  margin-top: 0;
  color: inherit;
}
.alert .alert-link {
  font-weight: bold;
}
.alert > p,
.alert > ul {
  margin-bottom: 0;
}
.alert > p + p {
  margin-top: 5px;
}
.alert-dismissable,
.alert-dismissible {
  padding-right: 35px;
}
.alert-dismissable .close,
.alert-dismissible .close {
  position: relative;
  top: -2px;
  right: -21px;
  color: inherit;
}
.alert-success {
  background-color: #dff0d8;
  border-color: #d6e9c6;
  color: #3c763d;
}
.alert-success hr {
  border-top-color: #c9e2b3;
}
.alert-success .alert-link {
  color: #2b542c;
}
.alert-info {
  background-color: #d9edf7;
  border-color: #bce8f1;
  color: #31708f;
}
.alert-info hr {
  border-top-color: #a6e1ec;
}
.alert-info .alert-link {
  color: #245269;
}
.alert-warning {
  background-color: #fcf8e3;
  border-color: #faebcc;
  color: #8a6d3b;
}
.alert-warning hr {
  border-top-color: #f7e1b5;
}
.alert-warning .alert-link {
  color: #66512c;
}
.alert-danger {
  background-color: #f2dede;
  border-color: #ebccd1;
  color: #a94442;
}
.alert-danger hr {
  border-top-color: #e4b9c0;
}
.alert-danger .alert-link {
  color: #843534;
}
@-webkit-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
.progress {
  overflow: hidden;
  height: 18px;
  margin-bottom: 18px;
  background-color: #f5f5f5;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}
.progress-bar {
  float: left;
  width: 0%;
  height: 100%;
  font-size: 12px;
  line-height: 18px;
  color: #fff;
  text-align: center;
  background-color: #337ab7;
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  -webkit-transition: width 0.6s ease;
  -o-transition: width 0.6s ease;
  transition: width 0.6s ease;
}
.progress-striped .progress-bar,
.progress-bar-striped {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-size: 40px 40px;
}
.progress.active .progress-bar,
.progress-bar.active {
  -webkit-animation: progress-bar-stripes 2s linear infinite;
  -o-animation: progress-bar-stripes 2s linear infinite;
  animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
  background-color: #5cb85c;
}
.progress-striped .progress-bar-success {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
  background-color: #5bc0de;
}
.progress-striped .progress-bar-info {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
  background-color: #f0ad4e;
}
.progress-striped .progress-bar-warning {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
  background-color: #d9534f;
}
.progress-striped .progress-bar-danger {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.media {
  margin-top: 15px;
}
.media:first-child {
  margin-top: 0;
}
.media,
.media-body {
  zoom: 1;
  overflow: hidden;
}
.media-body {
  width: 10000px;
}
.media-object {
  display: block;
}
.media-object.img-thumbnail {
  max-width: none;
}
.media-right,
.media > .pull-right {
  padding-left: 10px;
}
.media-left,
.media > .pull-left {
  padding-right: 10px;
}
.media-left,
.media-right,
.media-body {
  display: table-cell;
  vertical-align: top;
}
.media-middle {
  vertical-align: middle;
}
.media-bottom {
  vertical-align: bottom;
}
.media-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.media-list {
  padding-left: 0;
  list-style: none;
}
.list-group {
  margin-bottom: 20px;
  padding-left: 0;
}
.list-group-item {
  position: relative;
  display: block;
  padding: 10px 15px;
  margin-bottom: -1px;
  background-color: #fff;
  border: 1px solid #ddd;
}
.list-group-item:first-child {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
}
.list-group-item:last-child {
  margin-bottom: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
a.list-group-item,
button.list-group-item {
  color: #555;
}
a.list-group-item .list-group-item-heading,
button.list-group-item .list-group-item-heading {
  color: #333;
}
a.list-group-item:hover,
button.list-group-item:hover,
a.list-group-item:focus,
button.list-group-item:focus {
  text-decoration: none;
  color: #555;
  background-color: #f5f5f5;
}
button.list-group-item {
  width: 100%;
  text-align: left;
}
.list-group-item.disabled,
.list-group-item.disabled:hover,
.list-group-item.disabled:focus {
  background-color: #eeeeee;
  color: #777777;
  cursor: not-allowed;
}
.list-group-item.disabled .list-group-item-heading,
.list-group-item.disabled:hover .list-group-item-heading,
.list-group-item.disabled:focus .list-group-item-heading {
  color: inherit;
}
.list-group-item.disabled .list-group-item-text,
.list-group-item.disabled:hover .list-group-item-text,
.list-group-item.disabled:focus .list-group-item-text {
  color: #777777;
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
  z-index: 2;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.list-group-item.active .list-group-item-heading,
.list-group-item.active:hover .list-group-item-heading,
.list-group-item.active:focus .list-group-item-heading,
.list-group-item.active .list-group-item-heading > small,
.list-group-item.active:hover .list-group-item-heading > small,
.list-group-item.active:focus .list-group-item-heading > small,
.list-group-item.active .list-group-item-heading > .small,
.list-group-item.active:hover .list-group-item-heading > .small,
.list-group-item.active:focus .list-group-item-heading > .small {
  color: inherit;
}
.list-group-item.active .list-group-item-text,
.list-group-item.active:hover .list-group-item-text,
.list-group-item.active:focus .list-group-item-text {
  color: #c7ddef;
}
.list-group-item-success {
  color: #3c763d;
  background-color: #dff0d8;
}
a.list-group-item-success,
button.list-group-item-success {
  color: #3c763d;
}
a.list-group-item-success .list-group-item-heading,
button.list-group-item-success .list-group-item-heading {
  color: inherit;
}
a.list-group-item-success:hover,
button.list-group-item-success:hover,
a.list-group-item-success:focus,
button.list-group-item-success:focus {
  color: #3c763d;
  background-color: #d0e9c6;
}
a.list-group-item-success.active,
button.list-group-item-success.active,
a.list-group-item-success.active:hover,
button.list-group-item-success.active:hover,
a.list-group-item-success.active:focus,
button.list-group-item-success.active:focus {
  color: #fff;
  background-color: #3c763d;
  border-color: #3c763d;
}
.list-group-item-info {
  color: #31708f;
  background-color: #d9edf7;
}
a.list-group-item-info,
button.list-group-item-info {
  color: #31708f;
}
a.list-group-item-info .list-group-item-heading,
button.list-group-item-info .list-group-item-heading {
  color: inherit;
}
a.list-group-item-info:hover,
button.list-group-item-info:hover,
a.list-group-item-info:focus,
button.list-group-item-info:focus {
  color: #31708f;
  background-color: #c4e3f3;
}
a.list-group-item-info.active,
button.list-group-item-info.active,
a.list-group-item-info.active:hover,
button.list-group-item-info.active:hover,
a.list-group-item-info.active:focus,
button.list-group-item-info.active:focus {
  color: #fff;
  background-color: #31708f;
  border-color: #31708f;
}
.list-group-item-warning {
  color: #8a6d3b;
  background-color: #fcf8e3;
}
a.list-group-item-warning,
button.list-group-item-warning {
  color: #8a6d3b;
}
a.list-group-item-warning .list-group-item-heading,
button.list-group-item-warning .list-group-item-heading {
  color: inherit;
}
a.list-group-item-warning:hover,
button.list-group-item-warning:hover,
a.list-group-item-warning:focus,
button.list-group-item-warning:focus {
  color: #8a6d3b;
  background-color: #faf2cc;
}
a.list-group-item-warning.active,
button.list-group-item-warning.active,
a.list-group-item-warning.active:hover,
button.list-group-item-warning.active:hover,
a.list-group-item-warning.active:focus,
button.list-group-item-warning.active:focus {
  color: #fff;
  background-color: #8a6d3b;
  border-color: #8a6d3b;
}
.list-group-item-danger {
  color: #a94442;
  background-color: #f2dede;
}
a.list-group-item-danger,
button.list-group-item-danger {
  color: #a94442;
}
a.list-group-item-danger .list-group-item-heading,
button.list-group-item-danger .list-group-item-heading {
  color: inherit;
}
a.list-group-item-danger:hover,
button.list-group-item-danger:hover,
a.list-group-item-danger:focus,
button.list-group-item-danger:focus {
  color: #a94442;
  background-color: #ebcccc;
}
a.list-group-item-danger.active,
button.list-group-item-danger.active,
a.list-group-item-danger.active:hover,
button.list-group-item-danger.active:hover,
a.list-group-item-danger.active:focus,
button.list-group-item-danger.active:focus {
  color: #fff;
  background-color: #a94442;
  border-color: #a94442;
}
.list-group-item-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.list-group-item-text {
  margin-bottom: 0;
  line-height: 1.3;
}
.panel {
  margin-bottom: 18px;
  background-color: #fff;
  border: 1px solid transparent;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
.panel-body {
  padding: 15px;
}
.panel-heading {
  padding: 10px 15px;
  border-bottom: 1px solid transparent;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel-heading > .dropdown .dropdown-toggle {
  color: inherit;
}
.panel-title {
  margin-top: 0;
  margin-bottom: 0;
  font-size: 15px;
  color: inherit;
}
.panel-title > a,
.panel-title > small,
.panel-title > .small,
.panel-title > small > a,
.panel-title > .small > a {
  color: inherit;
}
.panel-footer {
  padding: 10px 15px;
  background-color: #f5f5f5;
  border-top: 1px solid #ddd;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .list-group,
.panel > .panel-collapse > .list-group {
  margin-bottom: 0;
}
.panel > .list-group .list-group-item,
.panel > .panel-collapse > .list-group .list-group-item {
  border-width: 1px 0;
  border-radius: 0;
}
.panel > .list-group:first-child .list-group-item:first-child,
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
  border-top: 0;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .list-group:last-child .list-group-item:last-child,
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
  border-bottom: 0;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.panel-heading + .list-group .list-group-item:first-child {
  border-top-width: 0;
}
.list-group + .panel-footer {
  border-top-width: 0;
}
.panel > .table,
.panel > .table-responsive > .table,
.panel > .panel-collapse > .table {
  margin-bottom: 0;
}
.panel > .table caption,
.panel > .table-responsive > .table caption,
.panel > .panel-collapse > .table caption {
  padding-left: 15px;
  padding-right: 15px;
}
.panel > .table:first-child,
.panel > .table-responsive:first-child > .table:first-child {
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
  border-top-left-radius: 1px;
  border-top-right-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
  border-top-right-radius: 1px;
}
.panel > .table:last-child,
.panel > .table-responsive:last-child > .table:last-child {
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
  border-bottom-left-radius: 1px;
  border-bottom-right-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:
Download .txt
gitextract_q_0cca6b/

├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   └── workflows/
│       ├── check-code.yml
│       ├── check-imports.yml
│       ├── check-notebooks.yml
│       └── check-types.yml
├── .gitignore
├── .gitmodules
├── BADGES.md
├── CITATION.cff
├── Chapters.makefile
├── LICENSE.md
├── README.md
├── _config.yml
├── _static/
│   ├── custom.css
│   └── mastodon-timeline.css
├── _toc.yml
├── binder/
│   ├── Dockerfile
│   ├── README.md
│   ├── apt.txt
│   ├── environment.yml
│   ├── postBuild
│   ├── postBuild.template
│   └── requirements.txt
├── docs/
│   ├── .gitattributes
│   ├── .nojekyll
│   ├── 404.html
│   ├── CNAME
│   ├── beta/
│   │   ├── .buildinfo
│   │   ├── 01_Intro.html
│   │   ├── 02_Observing.html
│   │   ├── 02_Tracking.html
│   │   ├── 03_Dependencies.html
│   │   ├── 03_Inputs.html
│   │   ├── 03_Observing.html
│   │   ├── 04_Abstracting.html
│   │   ├── 04_Inputs.html
│   │   ├── 04_Reducing.html
│   │   ├── 05_Abstracting.html
│   │   ├── 05_Repairing.html
│   │   ├── 06_In_the_Large.html
│   │   ├── 06_Repairing.html
│   │   ├── 07_In_the_Large.html
│   │   ├── 404.html
│   │   ├── 99_Appendices.html
│   │   ├── Alhazen.html
│   │   ├── Assertions.html
│   │   ├── ChangeCounter.html
│   │   ├── ChangeDebugger.html
│   │   ├── ChangeExplorer.html
│   │   ├── ClassDiagram.html
│   │   ├── DDSetDebugger.html
│   │   ├── Debugger.html
│   │   ├── DeltaDebugger.html
│   │   ├── DynamicInvariants.html
│   │   ├── ExpectError.html
│   │   ├── Guide_for_Authors.html
│   │   ├── IllustratedCode.html
│   │   ├── Importing.html
│   │   ├── Intro_Debugging.html
│   │   ├── LICENSE.html
│   │   ├── PICS/
│   │   │   ├── Icons.key
│   │   │   └── debuggingbook.key
│   │   ├── PerformanceDebugger.html
│   │   ├── Project_of_your_choice.html
│   │   ├── README.html
│   │   ├── RailroadDiagrams.html
│   │   ├── Reducing_Code.html
│   │   ├── ReleaseNotes.html
│   │   ├── Repairer.html
│   │   ├── Repairing_Code.html
│   │   ├── Slicer.html
│   │   ├── StackInspector.html
│   │   ├── StatisticalDebugger.html
│   │   ├── Template.html
│   │   ├── ThreadDebugger.html
│   │   ├── Time_Travel_Debugger.html
│   │   ├── Timeout.html
│   │   ├── Timer.html
│   │   ├── Tours.html
│   │   ├── Tracer.html
│   │   ├── Tracking.html
│   │   ├── _downloads/
│   │   │   ├── 24f75eabab1fe4730ed764eb3a94b2a7/
│   │   │   │   └── Makefile
│   │   │   └── 2aa31cc0878caec6140b1808385cfc5d/
│   │   │       └── fuzzingbook.bib
│   │   ├── _sources/
│   │   │   ├── 01_Intro.ipynb
│   │   │   ├── 02_Observing.ipynb
│   │   │   ├── 02_Tracking.ipynb
│   │   │   ├── 03_Dependencies.ipynb
│   │   │   ├── 03_Inputs.ipynb
│   │   │   ├── 03_Observing.ipynb
│   │   │   ├── 04_Abstracting.ipynb
│   │   │   ├── 04_Inputs.ipynb
│   │   │   ├── 04_Reducing.ipynb
│   │   │   ├── 05_Abstracting.ipynb
│   │   │   ├── 05_Repairing.ipynb
│   │   │   ├── 06_In_the_Large.ipynb
│   │   │   ├── 06_Repairing.ipynb
│   │   │   ├── 07_In_the_Large.ipynb
│   │   │   ├── 404.ipynb
│   │   │   ├── 99_Appendices.ipynb
│   │   │   ├── Alhazen.ipynb
│   │   │   ├── Assertions.ipynb
│   │   │   ├── ChangeCounter.ipynb
│   │   │   ├── ChangeDebugger.ipynb
│   │   │   ├── ChangeExplorer.ipynb
│   │   │   ├── ClassDiagram.ipynb
│   │   │   ├── DDSetDebugger.ipynb
│   │   │   ├── Debugger.ipynb
│   │   │   ├── DeltaDebugger.ipynb
│   │   │   ├── DynamicInvariants.ipynb
│   │   │   ├── ExpectError.ipynb
│   │   │   ├── Guide_for_Authors.ipynb
│   │   │   ├── IllustratedCode.ipynb
│   │   │   ├── Importing.ipynb
│   │   │   ├── Intro_Debugging.ipynb
│   │   │   ├── LICENSE.md
│   │   │   ├── PerformanceDebugger.ipynb
│   │   │   ├── Project_of_your_choice.ipynb
│   │   │   ├── README.md
│   │   │   ├── RailroadDiagrams.ipynb
│   │   │   ├── Reducing_Code.ipynb
│   │   │   ├── ReleaseNotes.ipynb
│   │   │   ├── Repairer.ipynb
│   │   │   ├── Repairing_Code.ipynb
│   │   │   ├── Slicer.ipynb
│   │   │   ├── StackInspector.ipynb
│   │   │   ├── StatisticalDebugger.ipynb
│   │   │   ├── Template.ipynb
│   │   │   ├── ThreadDebugger.ipynb
│   │   │   ├── Time_Travel_Debugger.ipynb
│   │   │   ├── Timeout.ipynb
│   │   │   ├── Timer.ipynb
│   │   │   ├── Tours.ipynb
│   │   │   ├── Tracer.ipynb
│   │   │   ├── Tracking.ipynb
│   │   │   ├── bookutils/
│   │   │   │   └── README.md
│   │   │   └── index.ipynb
│   │   ├── _sphinx_design_static/
│   │   │   └── design-tabs.js
│   │   ├── _static/
│   │   │   ├── basic.css
│   │   │   ├── copybutton.css
│   │   │   ├── copybutton.js
│   │   │   ├── copybutton_funcs.js
│   │   │   ├── custom.css
│   │   │   ├── design-tabs.js
│   │   │   ├── doctools.js
│   │   │   ├── documentation_options.js
│   │   │   ├── language_data.js
│   │   │   ├── locales/
│   │   │   │   ├── ar/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── bg/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── bn/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ca/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── cs/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── da/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── de/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── el/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── eo/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── es/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── et/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── fi/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── fr/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── hr/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── id/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── it/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── iw/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ja/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ko/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── lt/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── lv/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ml/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── mr/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ms/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── nl/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── no/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── pl/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── pt/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ro/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ru/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── sk/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── sl/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── sr/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── sv/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ta/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── te/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── tg/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── th/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── tl/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── tr/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── uk/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── ur/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── vi/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   ├── zh_CN/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── booktheme.mo
│   │   │   │   │       └── booktheme.po
│   │   │   │   └── zh_TW/
│   │   │   │       └── LC_MESSAGES/
│   │   │   │           ├── booktheme.mo
│   │   │   │           └── booktheme.po
│   │   │   ├── mastodon-timeline.css
│   │   │   ├── mystnb.8ecb98da25f57f5357bf6f572d296f466b2cfe2517ffebfabe82451661e28f02.css
│   │   │   ├── pygments.css
│   │   │   ├── sbt-webpack-macros.html
│   │   │   ├── scripts/
│   │   │   │   ├── bootstrap.js
│   │   │   │   ├── bootstrap.js.LICENSE.txt
│   │   │   │   ├── pydata-sphinx-theme.js
│   │   │   │   └── sphinx-book-theme.js
│   │   │   ├── searchtools.js
│   │   │   ├── sphinx-thebe.css
│   │   │   ├── sphinx-thebe.js
│   │   │   ├── sphinx_highlight.js
│   │   │   ├── styles/
│   │   │   │   ├── bootstrap.css
│   │   │   │   ├── pydata-sphinx-theme.css
│   │   │   │   ├── sphinx-book-theme.css
│   │   │   │   └── theme.css
│   │   │   ├── togglebutton.css
│   │   │   ├── togglebutton.js
│   │   │   ├── vendor/
│   │   │   │   └── fontawesome/
│   │   │   │       └── 6.5.2/
│   │   │   │           ├── LICENSE.txt
│   │   │   │           └── js/
│   │   │   │               └── all.min.js.LICENSE.txt
│   │   │   └── webpack-macros.html
│   │   ├── bookutils/
│   │   │   └── README.html
│   │   ├── code/
│   │   │   ├── 01_Intro.py
│   │   │   ├── 02_Observing.py
│   │   │   ├── 02_Tracking.py
│   │   │   ├── 03_Dependencies.py
│   │   │   ├── 03_Inputs.py
│   │   │   ├── 03_Observing.py
│   │   │   ├── 04_Abstracting.py
│   │   │   ├── 04_Inputs.py
│   │   │   ├── 04_Reducing.py
│   │   │   ├── 05_Abstracting.py
│   │   │   ├── 05_Repairing.py
│   │   │   ├── 06_In_the_Large.py
│   │   │   ├── 06_Repairing.py
│   │   │   ├── 07_In_the_Large.py
│   │   │   ├── 99_Appendices.py
│   │   │   ├── Alhazen.py
│   │   │   ├── Assertions.py
│   │   │   ├── ChangeCounter.py
│   │   │   ├── ChangeDebugger.py
│   │   │   ├── ChangeExplorer.py
│   │   │   ├── ClassDiagram.py
│   │   │   ├── DDSetDebugger.py
│   │   │   ├── Debugger.py
│   │   │   ├── DeltaDebugger.py
│   │   │   ├── DynamicInvariants.py
│   │   │   ├── ExpectError.py
│   │   │   ├── Intro_Debugging.py
│   │   │   ├── LICENSE.md
│   │   │   ├── PerformanceDebugger.py
│   │   │   ├── RailroadDiagrams.py
│   │   │   ├── Repairer.py
│   │   │   ├── Slicer.py
│   │   │   ├── StackInspector.py
│   │   │   ├── StatisticalDebugger.py
│   │   │   ├── ThreadDebugger.py
│   │   │   ├── Timeout.py
│   │   │   ├── Timer.py
│   │   │   ├── Tours.py
│   │   │   ├── Tracer.py
│   │   │   ├── Tracking.py
│   │   │   ├── __init__.py
│   │   │   └── bookutils/
│   │   │       ├── PrettyTable.py
│   │   │       ├── README.md
│   │   │       ├── __init__.py
│   │   │       ├── export_notebook_code.py
│   │   │       ├── import_notebooks.py
│   │   │       ├── set_fixed_seed.py
│   │   │       └── setup.py
│   │   ├── genindex.html
│   │   ├── html/
│   │   │   ├── .buildinfo
│   │   │   ├── 00_Index.html
│   │   │   ├── 00_Table_of_Contents.html
│   │   │   ├── 01_Intro.html
│   │   │   ├── 02_Observing.html
│   │   │   ├── 02_Tracking.html
│   │   │   ├── 03_Dependencies.html
│   │   │   ├── 03_Inputs.html
│   │   │   ├── 03_Observing.html
│   │   │   ├── 04_Abstracting.html
│   │   │   ├── 04_Inputs.html
│   │   │   ├── 04_Reducing.html
│   │   │   ├── 05_Abstracting.html
│   │   │   ├── 05_Repairing.html
│   │   │   ├── 06_In_the_Large.html
│   │   │   ├── 06_Repairing.html
│   │   │   ├── 07_In_the_Large.html
│   │   │   ├── 404.html
│   │   │   ├── 99_Appendices.html
│   │   │   ├── Alhazen.html
│   │   │   ├── Assertions.html
│   │   │   ├── ChangeCounter.html
│   │   │   ├── ChangeDebugger.html
│   │   │   ├── ChangeExplorer.html
│   │   │   ├── ClassDiagram.html
│   │   │   ├── DDSetDebugger.html
│   │   │   ├── Debugger.html
│   │   │   ├── DeltaDebugger.html
│   │   │   ├── DynamicInvariants.html
│   │   │   ├── ExpectError.html
│   │   │   ├── Guide_for_Authors.html
│   │   │   ├── IllustratedCode.html
│   │   │   ├── Importing.html
│   │   │   ├── Intro_Debugging.html
│   │   │   ├── LICENSE.html
│   │   │   ├── PerformanceDebugger.html
│   │   │   ├── Project_of_your_choice.html
│   │   │   ├── README.html
│   │   │   ├── RailroadDiagrams.html
│   │   │   ├── Reducing_Code.html
│   │   │   ├── ReleaseNotes.html
│   │   │   ├── Repairer.html
│   │   │   ├── Repairing_Code.html
│   │   │   ├── Slicer.html
│   │   │   ├── StackInspector.html
│   │   │   ├── StatisticalDebugger.html
│   │   │   ├── Template.html
│   │   │   ├── ThreadDebugger.html
│   │   │   ├── Time_Travel_Debugger.html
│   │   │   ├── Timeout.html
│   │   │   ├── Timer.html
│   │   │   ├── Tours.html
│   │   │   ├── Tracer.html
│   │   │   ├── Tracking.html
│   │   │   ├── _downloads/
│   │   │   │   ├── 24f75eabab1fe4730ed764eb3a94b2a7/
│   │   │   │   │   └── Makefile
│   │   │   │   └── 2aa31cc0878caec6140b1808385cfc5d/
│   │   │   │       └── fuzzingbook.bib
│   │   │   ├── _sources/
│   │   │   │   ├── 01_Intro.ipynb
│   │   │   │   ├── 02_Observing.ipynb
│   │   │   │   ├── 02_Tracking.ipynb
│   │   │   │   ├── 03_Dependencies.ipynb
│   │   │   │   ├── 03_Inputs.ipynb
│   │   │   │   ├── 03_Observing.ipynb
│   │   │   │   ├── 04_Abstracting.ipynb
│   │   │   │   ├── 04_Inputs.ipynb
│   │   │   │   ├── 04_Reducing.ipynb
│   │   │   │   ├── 05_Abstracting.ipynb
│   │   │   │   ├── 05_Repairing.ipynb
│   │   │   │   ├── 06_In_the_Large.ipynb
│   │   │   │   ├── 06_Repairing.ipynb
│   │   │   │   ├── 07_In_the_Large.ipynb
│   │   │   │   ├── 404.ipynb
│   │   │   │   ├── 99_Appendices.ipynb
│   │   │   │   ├── Alhazen.ipynb
│   │   │   │   ├── Assertions.ipynb
│   │   │   │   ├── ChangeCounter.ipynb
│   │   │   │   ├── ChangeDebugger.ipynb
│   │   │   │   ├── ChangeExplorer.ipynb
│   │   │   │   ├── ClassDiagram.ipynb
│   │   │   │   ├── DDSetDebugger.ipynb
│   │   │   │   ├── Debugger.ipynb
│   │   │   │   ├── DeltaDebugger.ipynb
│   │   │   │   ├── DynamicInvariants.ipynb
│   │   │   │   ├── ExpectError.ipynb
│   │   │   │   ├── Guide_for_Authors.ipynb
│   │   │   │   ├── IllustratedCode.ipynb
│   │   │   │   ├── Importing.ipynb
│   │   │   │   ├── Intro_Debugging.ipynb
│   │   │   │   ├── LICENSE.md
│   │   │   │   ├── PerformanceDebugger.ipynb
│   │   │   │   ├── Project_of_your_choice.ipynb
│   │   │   │   ├── README.md
│   │   │   │   ├── RailroadDiagrams.ipynb
│   │   │   │   ├── Reducing_Code.ipynb
│   │   │   │   ├── ReleaseNotes.ipynb
│   │   │   │   ├── Repairer.ipynb
│   │   │   │   ├── Repairing_Code.ipynb
│   │   │   │   ├── Slicer.ipynb
│   │   │   │   ├── StackInspector.ipynb
│   │   │   │   ├── StatisticalDebugger.ipynb
│   │   │   │   ├── Template.ipynb
│   │   │   │   ├── ThreadDebugger.ipynb
│   │   │   │   ├── Time_Travel_Debugger.ipynb
│   │   │   │   ├── Timeout.ipynb
│   │   │   │   ├── Timer.ipynb
│   │   │   │   ├── Tours.ipynb
│   │   │   │   ├── Tracer.ipynb
│   │   │   │   ├── Tracking.ipynb
│   │   │   │   ├── bookutils/
│   │   │   │   │   └── README.md
│   │   │   │   └── index.ipynb
│   │   │   ├── _sphinx_design_static/
│   │   │   │   └── design-tabs.js
│   │   │   ├── _static/
│   │   │   │   ├── basic.css
│   │   │   │   ├── copybutton.css
│   │   │   │   ├── copybutton.js
│   │   │   │   ├── copybutton_funcs.js
│   │   │   │   ├── custom.css
│   │   │   │   ├── design-tabs.js
│   │   │   │   ├── doctools.js
│   │   │   │   ├── documentation_options.js
│   │   │   │   ├── language_data.js
│   │   │   │   ├── locales/
│   │   │   │   │   ├── ar/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── bg/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── bn/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ca/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── cs/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── da/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── de/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── el/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── eo/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── es/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── et/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── fi/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── fr/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── hr/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── id/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── it/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── iw/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ja/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ko/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── lt/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── lv/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ml/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── mr/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ms/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── nl/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── no/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── pl/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── pt/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ro/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ru/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── sk/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── sl/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── sr/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── sv/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ta/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── te/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── tg/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── th/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── tl/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── tr/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── uk/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── ur/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── vi/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   ├── zh_CN/
│   │   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │   │       ├── booktheme.mo
│   │   │   │   │   │       └── booktheme.po
│   │   │   │   │   └── zh_TW/
│   │   │   │   │       └── LC_MESSAGES/
│   │   │   │   │           ├── booktheme.mo
│   │   │   │   │           └── booktheme.po
│   │   │   │   ├── mastodon-timeline.css
│   │   │   │   ├── mystnb.8ecb98da25f57f5357bf6f572d296f466b2cfe2517ffebfabe82451661e28f02.css
│   │   │   │   ├── pygments.css
│   │   │   │   ├── sbt-webpack-macros.html
│   │   │   │   ├── scripts/
│   │   │   │   │   ├── bootstrap.js
│   │   │   │   │   ├── bootstrap.js.LICENSE.txt
│   │   │   │   │   ├── pydata-sphinx-theme.js
│   │   │   │   │   └── sphinx-book-theme.js
│   │   │   │   ├── searchtools.js
│   │   │   │   ├── sphinx-thebe.css
│   │   │   │   ├── sphinx-thebe.js
│   │   │   │   ├── sphinx_highlight.js
│   │   │   │   ├── styles/
│   │   │   │   │   ├── bootstrap.css
│   │   │   │   │   ├── pydata-sphinx-theme.css
│   │   │   │   │   ├── sphinx-book-theme.css
│   │   │   │   │   └── theme.css
│   │   │   │   ├── togglebutton.css
│   │   │   │   ├── togglebutton.js
│   │   │   │   ├── vendor/
│   │   │   │   │   └── fontawesome/
│   │   │   │   │       └── 6.5.2/
│   │   │   │   │           ├── LICENSE.txt
│   │   │   │   │           └── js/
│   │   │   │   │               └── all.min.js.LICENSE.txt
│   │   │   │   └── webpack-macros.html
│   │   │   ├── bookutils/
│   │   │   │   └── README.html
│   │   │   ├── custom.css
│   │   │   ├── favicon/
│   │   │   │   ├── README.md
│   │   │   │   ├── browserconfig.xml
│   │   │   │   ├── html_code.html
│   │   │   │   └── site.webmanifest
│   │   │   ├── genindex.html
│   │   │   ├── index.html
│   │   │   ├── mastodon-timeline.css
│   │   │   ├── mastodon-timeline.js
│   │   │   ├── objects.inv
│   │   │   ├── search.html
│   │   │   └── searchindex.js
│   │   ├── index.html
│   │   ├── notebooks/
│   │   │   ├── 00_Index.ipynb
│   │   │   ├── 00_Table_of_Contents.ipynb
│   │   │   ├── 01_Intro.ipynb
│   │   │   ├── 02_Observing.ipynb
│   │   │   ├── 02_Tracking.ipynb
│   │   │   ├── 03_Dependencies.ipynb
│   │   │   ├── 03_Inputs.ipynb
│   │   │   ├── 03_Observing.ipynb
│   │   │   ├── 04_Abstracting.ipynb
│   │   │   ├── 04_Inputs.ipynb
│   │   │   ├── 04_Reducing.ipynb
│   │   │   ├── 05_Abstracting.ipynb
│   │   │   ├── 05_Repairing.ipynb
│   │   │   ├── 06_In_the_Large.ipynb
│   │   │   ├── 06_Repairing.ipynb
│   │   │   ├── 07_In_the_Large.ipynb
│   │   │   ├── 404.ipynb
│   │   │   ├── 99_Appendices.ipynb
│   │   │   ├── Alhazen.ipynb
│   │   │   ├── Assertions.ipynb
│   │   │   ├── ChangeCounter.ipynb
│   │   │   ├── ChangeDebugger.ipynb
│   │   │   ├── ChangeExplorer.ipynb
│   │   │   ├── ClassDiagram.ipynb
│   │   │   ├── DDSetDebugger.ipynb
│   │   │   ├── Debugger.ipynb
│   │   │   ├── DeltaDebugger.ipynb
│   │   │   ├── DynamicInvariants.ipynb
│   │   │   ├── ExpectError.ipynb
│   │   │   ├── Guide_for_Authors.ipynb
│   │   │   ├── IllustratedCode.ipynb
│   │   │   ├── Importing.ipynb
│   │   │   ├── Intro_Debugging.ipynb
│   │   │   ├── LICENSE.md
│   │   │   ├── PICS/
│   │   │   │   ├── Icons.key
│   │   │   │   ├── Sitemap.svg~
│   │   │   │   └── debuggingbook.key
│   │   │   ├── PerformanceDebugger.ipynb
│   │   │   ├── Project_of_your_choice.ipynb
│   │   │   ├── README.md
│   │   │   ├── RailroadDiagrams.ipynb
│   │   │   ├── Reducing_Code.ipynb
│   │   │   ├── ReleaseNotes.ipynb
│   │   │   ├── Repairer.ipynb
│   │   │   ├── Repairing_Code.ipynb
│   │   │   ├── Slicer.ipynb
│   │   │   ├── StackInspector.ipynb
│   │   │   ├── StatisticalDebugger.ipynb
│   │   │   ├── Template.ipynb
│   │   │   ├── ThreadDebugger.ipynb
│   │   │   ├── Time_Travel_Debugger.ipynb
│   │   │   ├── Timeout.ipynb
│   │   │   ├── Timer.ipynb
│   │   │   ├── Tours.ipynb
│   │   │   ├── Tracer.ipynb
│   │   │   ├── Tracking.ipynb
│   │   │   ├── bookutils/
│   │   │   │   ├── PrettyTable.py
│   │   │   │   ├── README.md
│   │   │   │   ├── __init__.py
│   │   │   │   ├── export_notebook_code.py
│   │   │   │   ├── import_notebooks.py
│   │   │   │   ├── set_fixed_seed.py
│   │   │   │   └── setup.py
│   │   │   ├── custom.css
│   │   │   ├── fuzzingbook.bib
│   │   │   ├── index.ipynb
│   │   │   ├── pyproject.toml
│   │   │   └── requirements.txt
│   │   ├── objects.inv
│   │   ├── search.html
│   │   ├── searchindex.js
│   │   └── slides/
│   │       ├── 01_Intro.slides.html
│   │       ├── 02_Observing.slides.html
│   │       ├── 02_Tracking.slides.html
│   │       ├── 03_Dependencies.slides.html
│   │       ├── 03_Inputs.slides.html
│   │       ├── 03_Observing.slides.html
│   │       ├── 04_Abstracting.slides.html
│   │       ├── 04_Inputs.slides.html
│   │       ├── 04_Reducing.slides.html
│   │       ├── 05_Abstracting.slides.html
│   │       ├── 05_Repairing.slides.html
│   │       ├── 06_In_the_Large.slides.html
│   │       ├── 06_Repairing.slides.html
│   │       ├── 07_In_the_Large.slides.html
│   │       ├── 99_Appendices.slides.html
│   │       ├── Alhazen.slides.html
│   │       ├── Assertions.slides.html
│   │       ├── ChangeCounter.slides.html
│   │       ├── ChangeDebugger.slides.html
│   │       ├── ChangeExplorer.slides.html
│   │       ├── ClassDiagram.slides.html
│   │       ├── DDSetDebugger.slides.html
│   │       ├── Debugger.slides.html
│   │       ├── DeltaDebugger.slides.html
│   │       ├── DynamicInvariants.slides.html
│   │       ├── ExpectError.slides.html
│   │       ├── Intro_Debugging.slides.html
│   │       ├── PerformanceDebugger.slides.html
│   │       ├── RailroadDiagrams.slides.html
│   │       ├── Repairer.slides.html
│   │       ├── Slicer.slides.html
│   │       ├── StackInspector.slides.html
│   │       ├── StatisticalDebugger.slides.html
│   │       ├── ThreadDebugger.slides.html
│   │       ├── Timeout.slides.html
│   │       ├── Timer.slides.html
│   │       ├── Tours.slides.html
│   │       ├── Tracer.slides.html
│   │       ├── Tracking.slides.html
│   │       └── reveal.js/
│   │           ├── .codespellrc
│   │           ├── .github/
│   │           │   ├── CONTRIBUTING.md
│   │           │   ├── FUNDING.yml
│   │           │   └── workflows/
│   │           │       ├── spellcheck.yml
│   │           │       └── test.yml
│   │           ├── .gitignore
│   │           ├── .npmignore
│   │           ├── LICENSE
│   │           ├── README.md
│   │           ├── css/
│   │           │   ├── layout.scss
│   │           │   ├── print/
│   │           │   │   ├── paper.scss
│   │           │   │   └── pdf.scss
│   │           │   ├── reveal.scss
│   │           │   └── theme/
│   │           │       ├── README.md
│   │           │       ├── source/
│   │           │       │   ├── beige.scss
│   │           │       │   ├── black-contrast.scss
│   │           │       │   ├── black.scss
│   │           │       │   ├── blood.scss
│   │           │       │   ├── dracula.scss
│   │           │       │   ├── league.scss
│   │           │       │   ├── moon.scss
│   │           │       │   ├── night.scss
│   │           │       │   ├── serif.scss
│   │           │       │   ├── simple.scss
│   │           │       │   ├── sky.scss
│   │           │       │   ├── solarized.scss
│   │           │       │   ├── white-contrast.scss
│   │           │       │   └── white.scss
│   │           │       └── template/
│   │           │           ├── exposer.scss
│   │           │           ├── mixins.scss
│   │           │           ├── settings.scss
│   │           │           └── theme.scss
│   │           ├── demo.html
│   │           ├── dist/
│   │           │   ├── reset.css
│   │           │   ├── reveal.css
│   │           │   ├── reveal.esm.js
│   │           │   ├── reveal.js
│   │           │   └── theme/
│   │           │       ├── beige.css
│   │           │       ├── black-contrast.css
│   │           │       ├── black.css
│   │           │       ├── blood.css
│   │           │       ├── dracula.css
│   │           │       ├── fonts/
│   │           │       │   ├── league-gothic/
│   │           │       │   │   ├── LICENSE
│   │           │       │   │   └── league-gothic.css
│   │           │       │   └── source-sans-pro/
│   │           │       │       ├── LICENSE
│   │           │       │       └── source-sans-pro.css
│   │           │       ├── league.css
│   │           │       ├── moon.css
│   │           │       ├── night.css
│   │           │       ├── serif.css
│   │           │       ├── simple.css
│   │           │       ├── sky.css
│   │           │       ├── solarized.css
│   │           │       ├── white-contrast.css
│   │           │       ├── white.css
│   │           │       └── white_contrast_compact_verbatim_headers.css
│   │           ├── examples/
│   │           │   ├── 500-slides.html
│   │           │   ├── assets/
│   │           │   │   └── beeping.txt
│   │           │   ├── auto-animate.html
│   │           │   ├── backgrounds.html
│   │           │   ├── barebones.html
│   │           │   ├── layout-helpers.html
│   │           │   ├── lightbox.html
│   │           │   ├── markdown.html
│   │           │   ├── markdown.md
│   │           │   ├── math.html
│   │           │   ├── media.html
│   │           │   ├── multiple-presentations.html
│   │           │   ├── scroll.html
│   │           │   └── transitions.html
│   │           ├── gulpfile.js
│   │           ├── index.html
│   │           ├── js/
│   │           │   ├── components/
│   │           │   │   └── playback.js
│   │           │   ├── config.js
│   │           │   ├── controllers/
│   │           │   │   ├── autoanimate.js
│   │           │   │   ├── backgrounds.js
│   │           │   │   ├── controls.js
│   │           │   │   ├── focus.js
│   │           │   │   ├── fragments.js
│   │           │   │   ├── jumptoslide.js
│   │           │   │   ├── keyboard.js
│   │           │   │   ├── location.js
│   │           │   │   ├── notes.js
│   │           │   │   ├── overlay.js
│   │           │   │   ├── overview.js
│   │           │   │   ├── plugins.js
│   │           │   │   ├── pointer.js
│   │           │   │   ├── printview.js
│   │           │   │   ├── progress.js
│   │           │   │   ├── scrollview.js
│   │           │   │   ├── slidecontent.js
│   │           │   │   ├── slidenumber.js
│   │           │   │   └── touch.js
│   │           │   ├── index.js
│   │           │   ├── reveal.js
│   │           │   └── utils/
│   │           │       ├── color.js
│   │           │       ├── constants.js
│   │           │       ├── device.js
│   │           │       ├── loader.js
│   │           │       └── util.js
│   │           ├── package.json
│   │           ├── plugin/
│   │           │   ├── highlight/
│   │           │   │   ├── highlight.esm.js
│   │           │   │   ├── highlight.js
│   │           │   │   ├── monokai.css
│   │           │   │   ├── plugin.js
│   │           │   │   └── zenburn.css
│   │           │   ├── markdown/
│   │           │   │   ├── markdown.esm.js
│   │           │   │   ├── markdown.js
│   │           │   │   └── plugin.js
│   │           │   ├── math/
│   │           │   │   ├── katex.js
│   │           │   │   ├── math.esm.js
│   │           │   │   ├── math.js
│   │           │   │   ├── mathjax2.js
│   │           │   │   ├── mathjax3.js
│   │           │   │   └── plugin.js
│   │           │   ├── notes/
│   │           │   │   ├── notes.esm.js
│   │           │   │   ├── notes.js
│   │           │   │   ├── plugin.js
│   │           │   │   └── speaker-view.html
│   │           │   ├── search/
│   │           │   │   ├── plugin.js
│   │           │   │   ├── search.esm.js
│   │           │   │   └── search.js
│   │           │   └── zoom/
│   │           │       ├── plugin.js
│   │           │       ├── zoom.esm.js
│   │           │       └── zoom.js
│   │           └── test/
│   │               ├── assets/
│   │               │   ├── external-script-a.js
│   │               │   ├── external-script-b.js
│   │               │   ├── external-script-c.js
│   │               │   └── external-script-d.js
│   │               ├── simple.md
│   │               ├── test-auto-animate.html
│   │               ├── test-dependencies-async.html
│   │               ├── test-dependencies.html
│   │               ├── test-destroy.html
│   │               ├── test-grid-navigation.html
│   │               ├── test-iframe-backgrounds.html
│   │               ├── test-iframes.html
│   │               ├── test-markdown.html
│   │               ├── test-multiple-instances-es5.html
│   │               ├── test-multiple-instances.html
│   │               ├── test-pdf.html
│   │               ├── test-plugins.html
│   │               ├── test-scroll.html
│   │               ├── test-state.html
│   │               └── test.html
│   ├── classic/
│   │   ├── 00_Index.html
│   │   ├── 00_Table_of_Contents.html
│   │   ├── 01_Intro.html
│   │   ├── 02_Observing.html
│   │   ├── 03_Dependencies.html
│   │   ├── 04_Reducing.html
│   │   ├── 05_Abstracting.html
│   │   ├── 06_Repairing.html
│   │   ├── 07_In_the_Large.html
│   │   ├── 404.html
│   │   ├── 99_Appendices.html
│   │   ├── Alhazen.html
│   │   ├── Assertions.html
│   │   ├── ChangeCounter.html
│   │   ├── ChangeDebugger.html
│   │   ├── ClassDiagram.html
│   │   ├── DDSetDebugger.html
│   │   ├── Debugger.html
│   │   ├── DeltaDebugger.html
│   │   ├── DynamicInvariants.html
│   │   ├── ExpectError.html
│   │   ├── Guide_for_Authors.html
│   │   ├── IllustratedCode.html
│   │   ├── Importing.html
│   │   ├── Intro_Debugging.html
│   │   ├── PICS/
│   │   │   └── Icons.key
│   │   ├── PerformanceDebugger.html
│   │   ├── Project_of_your_choice.html
│   │   ├── Reducing_Code.html
│   │   ├── ReleaseNotes.html
│   │   ├── Repairer.html
│   │   ├── Repairing_Code.html
│   │   ├── Slicer.html
│   │   ├── StackInspector.html
│   │   ├── StatisticalDebugger.html
│   │   ├── Template.html
│   │   ├── Time_Travel_Debugger.html
│   │   ├── Timeout.html
│   │   ├── Timer.html
│   │   ├── Tours.html
│   │   ├── Tracer.html
│   │   ├── Tracking.html
│   │   ├── custom.css
│   │   ├── favicon/
│   │   │   ├── README.md
│   │   │   ├── browserconfig.xml
│   │   │   ├── html_code.html
│   │   │   └── site.webmanifest
│   │   ├── index.html
│   │   ├── mastodon-timeline.css
│   │   └── mastodon-timeline.js
│   ├── code/
│   │   ├── 01_Intro.py
│   │   ├── 02_Observing.py
│   │   ├── 03_Dependencies.py
│   │   ├── 04_Reducing.py
│   │   ├── 05_Abstracting.py
│   │   ├── 06_Repairing.py
│   │   ├── 07_In_the_Large.py
│   │   ├── 99_Appendices.py
│   │   ├── Alhazen.py
│   │   ├── Assertions.py
│   │   ├── ChangeCounter.py
│   │   ├── ChangeDebugger.py
│   │   ├── ClassDiagram.py
│   │   ├── DDSetDebugger.py
│   │   ├── Debugger.py
│   │   ├── DeltaDebugger.py
│   │   ├── DynamicInvariants.py
│   │   ├── ExpectError.py
│   │   ├── Intro_Debugging.py
│   │   ├── LICENSE.md
│   │   ├── PerformanceDebugger.py
│   │   ├── RailroadDiagrams.py
│   │   ├── Repairer.py
│   │   ├── Slicer.py
│   │   ├── StackInspector.py
│   │   ├── StatisticalDebugger.py
│   │   ├── Timeout.py
│   │   ├── Timer.py
│   │   ├── Tours.py
│   │   ├── Tracer.py
│   │   ├── Tracking.py
│   │   ├── __init__.py
│   │   ├── bookutils/
│   │   │   ├── PrettyTable.py
│   │   │   ├── README.md
│   │   │   ├── __init__.py
│   │   │   ├── export_notebook_code.py
│   │   │   ├── import_notebooks.py
│   │   │   ├── set_fixed_seed.py
│   │   │   └── setup.py
│   │   └── debuggingbook_utils/
│   │       ├── PrettyTable.py
│   │       ├── README.md
│   │       ├── __init__.py
│   │       ├── export_notebook_code.py
│   │       ├── import_notebooks.py
│   │       └── set_fixed_seed.py
│   ├── google8ab8d0f3fd0f9e99.html
│   ├── html/
│   │   ├── 00_Index.html
│   │   ├── 00_Table_of_Contents.html
│   │   ├── 01_Intro.html
│   │   ├── 02_Observing.html
│   │   ├── 03_Dependencies.html
│   │   ├── 04_Reducing.html
│   │   ├── 05_Abstracting.html
│   │   ├── 06_Repairing.html
│   │   ├── 07_In_the_Large.html
│   │   ├── 404.html
│   │   ├── 99_Appendices.html
│   │   ├── Alhazen.html
│   │   ├── Assertions.html
│   │   ├── ChangeCounter.html
│   │   ├── ChangeDebugger.html
│   │   ├── ClassDiagram.html
│   │   ├── DDSetDebugger.html
│   │   ├── Debugger.html
│   │   ├── DeltaDebugger.html
│   │   ├── DynamicInvariants.html
│   │   ├── ExpectError.html
│   │   ├── Guide_for_Authors.html
│   │   ├── IllustratedCode.html
│   │   ├── Importing.html
│   │   ├── Intro_Debugging.html
│   │   ├── PerformanceDebugger.html
│   │   ├── Project_of_your_choice.html
│   │   ├── Reducing_Code.html
│   │   ├── ReleaseNotes.html
│   │   ├── Repairer.html
│   │   ├── Repairing_Code.html
│   │   ├── Slicer.html
│   │   ├── StackInspector.html
│   │   ├── StatisticalDebugger.html
│   │   ├── Template.html
│   │   ├── Time_Travel_Debugger.html
│   │   ├── Timeout.html
│   │   ├── Timer.html
│   │   ├── Tours.html
│   │   ├── Tracer.html
│   │   ├── Tracking.html
│   │   ├── custom.css
│   │   ├── favicon/
│   │   │   ├── README.md
│   │   │   ├── browserconfig.xml
│   │   │   ├── html_code.html
│   │   │   └── site.webmanifest
│   │   ├── index.html
│   │   ├── mastodon-timeline.css
│   │   └── mastodon-timeline.js
│   ├── index.html
│   ├── notebooks/
│   │   ├── 00_Index.ipynb
│   │   ├── 00_Table_of_Contents.ipynb
│   │   ├── 01_Intro.ipynb
│   │   ├── 02_Observing.ipynb
│   │   ├── 03_Dependencies.ipynb
│   │   ├── 04_Reducing.ipynb
│   │   ├── 05_Abstracting.ipynb
│   │   ├── 06_Repairing.ipynb
│   │   ├── 07_In_the_Large.ipynb
│   │   ├── 404.ipynb
│   │   ├── 99_Appendices.ipynb
│   │   ├── Alhazen.ipynb
│   │   ├── Assertions.ipynb
│   │   ├── ChangeCounter.ipynb
│   │   ├── ChangeDebugger.ipynb
│   │   ├── ClassDiagram.ipynb
│   │   ├── DDSetDebugger.ipynb
│   │   ├── Debugger.ipynb
│   │   ├── DeltaDebugger.ipynb
│   │   ├── DynamicInvariants.ipynb
│   │   ├── ExpectError.ipynb
│   │   ├── Guide_for_Authors.ipynb
│   │   ├── IllustratedCode.ipynb
│   │   ├── Importing.ipynb
│   │   ├── Intro_Debugging.ipynb
│   │   ├── LICENSE.md
│   │   ├── PICS/
│   │   │   └── Icons.key
│   │   ├── PerformanceDebugger.ipynb
│   │   ├── Project_of_your_choice.ipynb
│   │   ├── README.md
│   │   ├── RailroadDiagrams.ipynb
│   │   ├── Reducing_Code.ipynb
│   │   ├── ReleaseNotes.ipynb
│   │   ├── Repairer.ipynb
│   │   ├── Repairing_Code.ipynb
│   │   ├── Slicer.ipynb
│   │   ├── StackInspector.ipynb
│   │   ├── StatisticalDebugger.ipynb
│   │   ├── Template.ipynb
│   │   ├── Time_Travel_Debugger.ipynb
│   │   ├── Timeout.ipynb
│   │   ├── Timer.ipynb
│   │   ├── Tours.ipynb
│   │   ├── Tracer.ipynb
│   │   ├── Tracking.ipynb
│   │   ├── bookutils/
│   │   │   ├── PrettyTable.py
│   │   │   ├── README.md
│   │   │   ├── __init__.py
│   │   │   ├── export_notebook_code.py
│   │   │   ├── import_notebooks.py
│   │   │   ├── set_fixed_seed.py
│   │   │   └── setup.py
│   │   ├── custom.css
│   │   ├── debuggingbook.bib
│   │   ├── fuzzingbook.bib
│   │   ├── index.ipynb
│   │   └── requirements.txt
│   └── slides/
│       ├── 01_Intro.slides.html
│       ├── 02_Observing.slides.html
│       ├── 03_Dependencies.slides.html
│       ├── 04_Reducing.slides.html
│       ├── 05_Abstracting.slides.html
│       ├── 06_Repairing.slides.html
│       ├── 07_In_the_Large.slides.html
│       ├── 99_Appendices.slides.html
│       ├── Alhazen.slides.html
│       ├── Assertions.slides.html
│       ├── ChangeCounter.slides.html
│       ├── ChangeDebugger.slides.html
│       ├── ClassDiagram.slides.html
│       ├── DDSetDebugger.slides.html
│       ├── Debugger.slides.html
│       ├── DeltaDebugger.slides.html
│       ├── DynamicInvariants.slides.html
│       ├── ExpectError.slides.html
│       ├── Intro_Debugging.slides.html
│       ├── PerformanceDebugger.slides.html
│       ├── RailroadDiagrams.slides.html
│       ├── Repairer.slides.html
│       ├── Slicer.slides.html
│       ├── StackInspector.slides.html
│       ├── StatisticalDebugger.slides.html
│       ├── Timeout.slides.html
│       ├── Timer.slides.html
│       ├── Tours.slides.html
│       ├── Tracer.slides.html
│       ├── Tracking.slides.html
│       └── reveal.js/
│           ├── .github/
│           │   ├── CONTRIBUTING.md
│           │   ├── FUNDING.yml
│           │   └── workflows/
│           │       └── js.yml
│           ├── .gitignore
│           ├── .npmignore
│           ├── LICENSE
│           ├── README.md
│           ├── css/
│           │   ├── layout.scss
│           │   ├── print/
│           │   │   ├── paper.scss
│           │   │   └── pdf.scss
│           │   ├── reveal.scss
│           │   └── theme/
│           │       ├── README.md
│           │       ├── source/
│           │       │   ├── beige.scss
│           │       │   ├── black-contrast.scss
│           │       │   ├── black.scss
│           │       │   ├── blood.scss
│           │       │   ├── dracula.scss
│           │       │   ├── league.scss
│           │       │   ├── moon.scss
│           │       │   ├── night.scss
│           │       │   ├── serif.scss
│           │       │   ├── simple.scss
│           │       │   ├── sky.scss
│           │       │   ├── solarized.scss
│           │       │   ├── white-contrast.scss
│           │       │   └── white.scss
│           │       └── template/
│           │           ├── exposer.scss
│           │           ├── mixins.scss
│           │           ├── settings.scss
│           │           └── theme.scss
│           ├── demo.html
│           ├── dist/
│           │   ├── reset.css
│           │   ├── reveal.css
│           │   ├── reveal.esm.js
│           │   ├── reveal.js
│           │   └── theme/
│           │       ├── beige.css
│           │       ├── black-contrast.css
│           │       ├── black.css
│           │       ├── blood.css
│           │       ├── dracula.css
│           │       ├── fonts/
│           │       │   ├── league-gothic/
│           │       │   │   ├── LICENSE
│           │       │   │   └── league-gothic.css
│           │       │   └── source-sans-pro/
│           │       │       ├── LICENSE
│           │       │       └── source-sans-pro.css
│           │       ├── league.css
│           │       ├── moon.css
│           │       ├── night.css
│           │       ├── serif.css
│           │       ├── simple.css
│           │       ├── sky.css
│           │       ├── solarized.css
│           │       ├── white-contrast.css
│           │       ├── white.css
│           │       └── white_contrast_compact_verbatim_headers.css
│           ├── examples/
│           │   ├── 500-slides.html
│           │   ├── assets/
│           │   │   └── beeping.txt
│           │   ├── auto-animate.html
│           │   ├── backgrounds.html
│           │   ├── barebones.html
│           │   ├── layout-helpers.html
│           │   ├── markdown.html
│           │   ├── markdown.md
│           │   ├── math.html
│           │   ├── media.html
│           │   ├── multiple-presentations.html
│           │   ├── scroll.html
│           │   └── transitions.html
│           ├── gulpfile.js
│           ├── index.html
│           ├── js/
│           │   ├── components/
│           │   │   └── playback.js
│           │   ├── config.js
│           │   ├── controllers/
│           │   │   ├── autoanimate.js
│           │   │   ├── backgrounds.js
│           │   │   ├── controls.js
│           │   │   ├── focus.js
│           │   │   ├── fragments.js
│           │   │   ├── jumptoslide.js
│           │   │   ├── keyboard.js
│           │   │   ├── location.js
│           │   │   ├── notes.js
│           │   │   ├── overview.js
│           │   │   ├── plugins.js
│           │   │   ├── pointer.js
│           │   │   ├── printview.js
│           │   │   ├── progress.js
│           │   │   ├── scrollview.js
│           │   │   ├── slidecontent.js
│           │   │   ├── slidenumber.js
│           │   │   └── touch.js
│           │   ├── index.js
│           │   ├── reveal.js
│           │   └── utils/
│           │       ├── color.js
│           │       ├── constants.js
│           │       ├── device.js
│           │       ├── loader.js
│           │       └── util.js
│           ├── package.json
│           ├── plugin/
│           │   ├── highlight/
│           │   │   ├── highlight.esm.js
│           │   │   ├── highlight.js
│           │   │   ├── monokai.css
│           │   │   ├── plugin.js
│           │   │   └── zenburn.css
│           │   ├── markdown/
│           │   │   ├── markdown.esm.js
│           │   │   ├── markdown.js
│           │   │   └── plugin.js
│           │   ├── math/
│           │   │   ├── katex.js
│           │   │   ├── math.esm.js
│           │   │   ├── math.js
│           │   │   ├── mathjax2.js
│           │   │   ├── mathjax3.js
│           │   │   └── plugin.js
│           │   ├── notes/
│           │   │   ├── notes.esm.js
│           │   │   ├── notes.js
│           │   │   ├── plugin.js
│           │   │   └── speaker-view.html
│           │   ├── search/
│           │   │   ├── plugin.js
│           │   │   ├── search.esm.js
│           │   │   └── search.js
│           │   └── zoom/
│           │       ├── plugin.js
│           │       ├── zoom.esm.js
│           │       └── zoom.js
│           └── test/
│               ├── assets/
│               │   ├── external-script-a.js
│               │   ├── external-script-b.js
│               │   ├── external-script-c.js
│               │   └── external-script-d.js
│               ├── simple.md
│               ├── test-auto-animate.html
│               ├── test-dependencies-async.html
│               ├── test-dependencies.html
│               ├── test-destroy.html
│               ├── test-grid-navigation.html
│               ├── test-iframe-backgrounds.html
│               ├── test-iframes.html
│               ├── test-markdown.html
│               ├── test-multiple-instances-es5.html
│               ├── test-multiple-instances.html
│               ├── test-pdf.html
│               ├── test-plugins.html
│               ├── test-scroll.html
│               ├── test-state.html
│               └── test.html
├── epub/
│   └── README.md
├── html/
│   ├── custom.css
│   ├── favicon/
│   │   ├── README.md
│   │   ├── browserconfig.xml
│   │   ├── html_code.html
│   │   └── site.webmanifest
│   ├── mastodon-timeline.css
│   └── mastodon-timeline.js
├── ipypublish_plugins/
│   ├── README.md
│   ├── html_ipypublish_chapter.py
│   ├── latex_ipypublish_book.py
│   └── latex_ipypublish_chapter.py
├── mypy/
│   └── mypy.ini
├── notebooks/
│   ├── 00_Index.ipynb
│   ├── 01_Intro.ipynb
│   ├── 02_Observing.ipynb
│   ├── 03_Dependencies.ipynb
│   ├── 04_Reducing.ipynb
│   ├── 05_Abstracting.ipynb
│   ├── 06_Repairing.ipynb
│   ├── 07_In_the_Large.ipynb
│   ├── 404.ipynb
│   ├── 99_Appendices.ipynb
│   ├── Alhazen.ipynb
│   ├── Assertions.ipynb
│   ├── ChangeCounter.ipynb
│   ├── ChangeDebugger.ipynb
│   ├── Copyright.ipynb
│   ├── DDSetDebugger.ipynb
│   ├── Debugger.ipynb
│   ├── DeltaDebugger.ipynb
│   ├── DynamicInvariants.ipynb
│   ├── Guide_for_Authors.ipynb
│   ├── IllustratedCode.ipynb
│   ├── Importing.ipynb
│   ├── Intro_Debugging.ipynb
│   ├── PICS/
│   │   ├── Icons.key
│   │   └── debuggingbook.key
│   ├── PerformanceDebugger.ipynb
│   ├── Project_of_your_choice.ipynb
│   ├── Reducing_Code.ipynb
│   ├── ReleaseNotes.ipynb
│   ├── Repairer.ipynb
│   ├── Repairing_Code.ipynb
│   ├── Slicer.ipynb
│   ├── StackInspector.ipynb
│   ├── StatisticalDebugger.ipynb
│   ├── Template.ipynb
│   ├── ThreadDebugger.ipynb
│   ├── Time_Travel_Debugger.ipynb
│   ├── Tours.ipynb
│   ├── Tracer.ipynb
│   ├── Tracking.ipynb
│   ├── index.ipynb
│   └── shared/
│       ├── ClassDiagram.ipynb
│       ├── ExpectError.ipynb
│       ├── Makefile
│       ├── README.md
│       ├── Timeout.ipynb
│       ├── Timer.ipynb
│       ├── bibtexparser/
│       │   ├── __init__.py
│       │   ├── bibdatabase.py
│       │   ├── bibtexexpression.py
│       │   ├── bparser.py
│       │   ├── bwriter.py
│       │   ├── customization.py
│       │   └── latexenc.py
│       ├── bin/
│       │   └── nbpublish
│       ├── bookutils/
│       │   ├── PrettyTable.py
│       │   ├── README.md
│       │   ├── __init__.py
│       │   ├── import_notebooks.py
│       │   └── setup.py
│       ├── fuzzingbook.bib
│       ├── gitignore
│       ├── icon_gen/
│       │   └── icon_gen.py
│       ├── ipypublish/
│       │   ├── __init__.py
│       │   ├── export_plugins/
│       │   │   ├── __init__.py
│       │   │   ├── html_ipypublish_all.py
│       │   │   ├── html_ipypublish_main.py
│       │   │   ├── html_ipypublish_nocode.py
│       │   │   ├── html_standard.py
│       │   │   ├── latex_ipypublish_all.py
│       │   │   ├── latex_ipypublish_main.py
│       │   │   ├── latex_ipypublish_nocode.py
│       │   │   ├── latex_standard_article.py
│       │   │   ├── nb_ipypublish_all.py
│       │   │   ├── nb_ipypublish_nocode.py
│       │   │   ├── slides_ipypublish_all.py
│       │   │   ├── slides_ipypublish_main.py
│       │   │   ├── slides_ipypublish_nocode.py
│       │   │   ├── slides_mkdown_all.py
│       │   │   ├── slides_mkdown_main.py
│       │   │   ├── slides_mkdown_nocode.py
│       │   │   └── slides_standard.py
│       │   ├── filters/
│       │   │   ├── __init__.py
│       │   │   ├── ansi_listings.py
│       │   │   ├── filters.py
│       │   │   └── replace_string.py
│       │   ├── html/
│       │   │   ├── __init__.py
│       │   │   ├── create_tpl.py
│       │   │   ├── ipypublish/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── flexbox_css.py
│       │   │   │   ├── latex_doc.py
│       │   │   │   ├── slides_ipypublish.py
│       │   │   │   ├── slides_mkdown.py
│       │   │   │   ├── toc_sidebar.py
│       │   │   │   └── toggle_buttons.py
│       │   │   └── standard/
│       │   │       ├── __init__.py
│       │   │       ├── content.py
│       │   │       ├── content_tagging.py
│       │   │       ├── document.py
│       │   │       ├── inout_prompt.py
│       │   │       ├── mathjax.py
│       │   │       ├── slides.py
│       │   │       └── widgets.py
│       │   ├── latex/
│       │   │   ├── __init__.py
│       │   │   ├── create_tplx.py
│       │   │   ├── ipypublish/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── biblio_natbib.py
│       │   │   │   ├── contents_framed_code.py
│       │   │   │   ├── contents_output.py
│       │   │   │   ├── doc_article.py
│       │   │   │   └── front_pages.py
│       │   │   └── standard/
│       │   │       ├── __init__.py
│       │   │       ├── in_out_prompts.py
│       │   │       ├── standard_article.py
│       │   │       ├── standard_contents.py
│       │   │       ├── standard_definitions.py
│       │   │       └── standard_packages.py
│       │   ├── main.py
│       │   ├── preprocessors/
│       │   │   ├── __init__.py
│       │   │   ├── crop_cells.py
│       │   │   ├── latex_doc_captions.py
│       │   │   ├── latex_doc_defaults.py
│       │   │   ├── latex_doc_html.py
│       │   │   ├── latex_doc_links.py
│       │   │   ├── latextags_to_html.py
│       │   │   ├── slides_from_markdown.py
│       │   │   └── split_outputs.py
│       │   ├── scripts/
│       │   │   ├── __init__.py
│       │   │   ├── export_plugins.py
│       │   │   ├── ipynb_latex_setup.py
│       │   │   ├── nbexport.py
│       │   │   ├── nbmerge.py
│       │   │   ├── pdfexport.py
│       │   │   └── reveal_serve.py
│       │   └── test_main.py
│       ├── jinja2/
│       │   ├── __init__.py
│       │   ├── _compat.py
│       │   ├── _identifier.py
│       │   ├── asyncfilters.py
│       │   ├── asyncsupport.py
│       │   ├── bccache.py
│       │   ├── compiler.py
│       │   ├── constants.py
│       │   ├── debug.py
│       │   ├── defaults.py
│       │   ├── environment.py
│       │   ├── exceptions.py
│       │   ├── ext.py
│       │   ├── filters.py
│       │   ├── idtracking.py
│       │   ├── lexer.py
│       │   ├── loaders.py
│       │   ├── meta.py
│       │   ├── nativetypes.py
│       │   ├── nodes.py
│       │   ├── optimizer.py
│       │   ├── parser.py
│       │   ├── runtime.py
│       │   ├── sandbox.py
│       │   ├── tests.py
│       │   ├── utils.py
│       │   └── visitor.py
│       ├── mistune.py
│       ├── nbconvert/
│       │   ├── __init__.py
│       │   ├── __main__.py
│       │   ├── _version.py
│       │   ├── exporters/
│       │   │   ├── __init__.py
│       │   │   ├── asciidoc.py
│       │   │   ├── base.py
│       │   │   ├── export.py
│       │   │   ├── exporter.py
│       │   │   ├── exporter_locator.py
│       │   │   ├── html.py
│       │   │   ├── latex.py
│       │   │   ├── markdown.py
│       │   │   ├── notebook.py
│       │   │   ├── pdf.py
│       │   │   ├── python.py
│       │   │   ├── rst.py
│       │   │   ├── script.py
│       │   │   ├── slides.py
│       │   │   ├── templateexporter.py
│       │   │   ├── tests/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── base.py
│       │   │   │   ├── cheese.py
│       │   │   │   ├── files/
│       │   │   │   │   ├── attachment.ipynb
│       │   │   │   │   ├── lablike.html.j2
│       │   │   │   │   ├── notebook2.ipynb
│       │   │   │   │   ├── notebook3.ipynb
│       │   │   │   │   ├── pngmetadata.ipynb
│       │   │   │   │   ├── prompt_numbers.ipynb
│       │   │   │   │   ├── rawtest.ipynb
│       │   │   │   │   └── svg.ipynb
│       │   │   │   ├── test_asciidoc.py
│       │   │   │   ├── test_export.py
│       │   │   │   ├── test_exporter.py
│       │   │   │   ├── test_html.py
│       │   │   │   ├── test_latex.py
│       │   │   │   ├── test_markdown.py
│       │   │   │   ├── test_notebook.py
│       │   │   │   ├── test_pdf.py
│       │   │   │   ├── test_python.py
│       │   │   │   ├── test_rst.py
│       │   │   │   ├── test_script.py
│       │   │   │   ├── test_slides.py
│       │   │   │   ├── test_templateexporter.py
│       │   │   │   └── test_webpdf.py
│       │   │   └── webpdf.py
│       │   ├── filters/
│       │   │   ├── __init__.py
│       │   │   ├── ansi.py
│       │   │   ├── citation.py
│       │   │   ├── datatypefilter.py
│       │   │   ├── filter_links.py
│       │   │   ├── highlight.py
│       │   │   ├── latex.py
│       │   │   ├── markdown.py
│       │   │   ├── markdown_mistune.py
│       │   │   ├── metadata.py
│       │   │   ├── pandoc.py
│       │   │   ├── strings.py
│       │   │   └── tests/
│       │   │       ├── __init__.py
│       │   │       ├── test_ansi.py
│       │   │       ├── test_citation.py
│       │   │       ├── test_datatypefilter.py
│       │   │       ├── test_highlight.py
│       │   │       ├── test_latex.py
│       │   │       ├── test_markdown.py
│       │   │       ├── test_metadata.py
│       │   │       └── test_strings.py
│       │   ├── nbconvertapp.py
│       │   ├── postprocessors/
│       │   │   ├── __init__.py
│       │   │   ├── base.py
│       │   │   ├── serve.py
│       │   │   └── tests/
│       │   │       ├── __init__.py
│       │   │       └── test_serve.py
│       │   ├── preprocessors/
│       │   │   ├── __init__.py
│       │   │   ├── base.py
│       │   │   ├── clearmetadata.py
│       │   │   ├── clearoutput.py
│       │   │   ├── coalescestreams.py
│       │   │   ├── convertfigures.py
│       │   │   ├── csshtmlheader.py
│       │   │   ├── execute.py
│       │   │   ├── extractoutput.py
│       │   │   ├── highlightmagics.py
│       │   │   ├── latex.py
│       │   │   ├── regexremove.py
│       │   │   ├── sanitize.py
│       │   │   ├── svg2pdf.py
│       │   │   ├── tagremove.py
│       │   │   └── tests/
│       │   │       ├── __init__.py
│       │   │       ├── base.py
│       │   │       ├── fake_kernelmanager.py
│       │   │       ├── files/
│       │   │       │   ├── Clear Output.ipynb
│       │   │       │   ├── Disable Stdin.ipynb
│       │   │       │   ├── Factorials.ipynb
│       │   │       │   ├── HelloWorld.ipynb
│       │   │       │   ├── Inline Image.ipynb
│       │   │       │   ├── Interrupt.ipynb
│       │   │       │   ├── MixedMarkdown.ipynb
│       │   │       │   ├── SVG.ipynb
│       │   │       │   ├── Skip Exceptions.ipynb
│       │   │       │   ├── Unicode.ipynb
│       │   │       │   └── update-display-id.ipynb
│       │   │       ├── test_clearmetadata.py
│       │   │       ├── test_clearoutput.py
│       │   │       ├── test_coalescestreams.py
│       │   │       ├── test_csshtmlheader.py
│       │   │       ├── test_execute.py
│       │   │       ├── test_extractoutput.py
│       │   │       ├── test_highlightmagics.py
│       │   │       ├── test_latex.py
│       │   │       ├── test_regexremove.py
│       │   │       ├── test_sanitize.py
│       │   │       ├── test_svg2pdf.py
│       │   │       └── test_tagremove.py
│       │   ├── resources/
│       │   │   └── __init__.py
│       │   ├── templates/
│       │   │   ├── README.md
│       │   │   ├── asciidoc.tpl
│       │   │   ├── html/
│       │   │   │   ├── basic.tpl
│       │   │   │   ├── full.tpl
│       │   │   │   ├── mathjax.tpl
│       │   │   │   └── slides_reveal.tpl
│       │   │   ├── latex/
│       │   │   │   ├── article.tplx
│       │   │   │   ├── base.tplx
│       │   │   │   ├── document_contents.tplx
│       │   │   │   ├── report.tplx
│       │   │   │   ├── skeleton/
│       │   │   │   │   ├── display_priority.tplx
│       │   │   │   │   └── null.tplx
│       │   │   │   ├── style_bw_ipython.tplx
│       │   │   │   ├── style_bw_python.tplx
│       │   │   │   ├── style_ipython.tplx
│       │   │   │   └── style_python.tplx
│       │   │   ├── markdown.tpl
│       │   │   ├── python.tpl
│       │   │   ├── rst.tpl
│       │   │   ├── script.tpl
│       │   │   └── skeleton/
│       │   │       ├── README.md
│       │   │       ├── display_priority.tpl
│       │   │       └── null.tpl
│       │   ├── tests/
│       │   │   ├── __init__.py
│       │   │   ├── base.py
│       │   │   ├── exporter_entrypoint/
│       │   │   │   ├── eptest-0.1.dist-info/
│       │   │   │   │   └── entry_points.txt
│       │   │   │   └── eptest.py
│       │   │   ├── fake_exporters.py
│       │   │   ├── files/
│       │   │   │   ├── Widget_List.ipynb
│       │   │   │   ├── hello.py
│       │   │   │   ├── jupyter_nbconvert_config.py
│       │   │   │   ├── latex-linked-image.ipynb
│       │   │   │   ├── markdown_display_priority.ipynb
│       │   │   │   ├── notebook1.html
│       │   │   │   ├── notebook1.ipynb
│       │   │   │   ├── notebook2.ipynb
│       │   │   │   ├── notebook3_with_errors.ipynb
│       │   │   │   ├── notebook4_jpeg.ipynb
│       │   │   │   ├── notebook_jl.ipynb
│       │   │   │   ├── notebook_tags.ipynb
│       │   │   │   └── override.py
│       │   │   ├── test_nbconvertapp.py
│       │   │   └── utils.py
│       │   ├── utils/
│       │   │   ├── __init__.py
│       │   │   ├── base.py
│       │   │   ├── exceptions.py
│       │   │   ├── io.py
│       │   │   ├── lexers.py
│       │   │   ├── pandoc.py
│       │   │   ├── tests/
│       │   │   │   ├── __init__.py
│       │   │   │   ├── test_io.py
│       │   │   │   ├── test_pandoc.py
│       │   │   │   └── test_version.py
│       │   │   └── version.py
│       │   └── writers/
│       │       ├── __init__.py
│       │       ├── base.py
│       │       ├── debug.py
│       │       ├── files.py
│       │       ├── stdout.py
│       │       └── tests/
│       │           ├── __init__.py
│       │           ├── test_debug.py
│       │           ├── test_files.py
│       │           └── test_stdout.py
│       ├── pycodestyle.cfg
│       ├── pyparsing.py
│       ├── tornado/
│       │   ├── __init__.py
│       │   ├── _locale_data.py
│       │   ├── auth.py
│       │   ├── autoreload.py
│       │   ├── concurrent.py
│       │   ├── curl_httpclient.py
│       │   ├── escape.py
│       │   ├── gen.py
│       │   ├── http1connection.py
│       │   ├── httpclient.py
│       │   ├── httpserver.py
│       │   ├── httputil.py
│       │   ├── ioloop.py
│       │   ├── iostream.py
│       │   ├── locale.py
│       │   ├── locks.py
│       │   ├── log.py
│       │   ├── netutil.py
│       │   ├── options.py
│       │   ├── platform/
│       │   │   ├── __init__.py
│       │   │   ├── asyncio.py
│       │   │   ├── auto.py
│       │   │   ├── caresresolver.py
│       │   │   ├── common.py
│       │   │   ├── epoll.py
│       │   │   ├── interface.py
│       │   │   ├── kqueue.py
│       │   │   ├── posix.py
│       │   │   ├── select.py
│       │   │   ├── twisted.py
│       │   │   └── windows.py
│       │   ├── process.py
│       │   ├── queues.py
│       │   ├── routing.py
│       │   ├── simple_httpclient.py
│       │   ├── stack_context.py
│       │   ├── tcpclient.py
│       │   ├── tcpserver.py
│       │   ├── template.py
│       │   ├── test/
│       │   │   ├── __init__.py
│       │   │   ├── __main__.py
│       │   │   ├── asyncio_test.py
│       │   │   ├── auth_test.py
│       │   │   ├── autoreload_test.py
│       │   │   ├── concurrent_test.py
│       │   │   ├── csv_translations/
│       │   │   │   └── fr_FR.csv
│       │   │   ├── curl_httpclient_test.py
│       │   │   ├── escape_test.py
│       │   │   ├── gen_test.py
│       │   │   ├── gettext_translations/
│       │   │   │   └── fr_FR/
│       │   │   │       └── LC_MESSAGES/
│       │   │   │           ├── tornado_test.mo
│       │   │   │           └── tornado_test.po
│       │   │   ├── http1connection_test.py
│       │   │   ├── httpclient_test.py
│       │   │   ├── httpserver_test.py
│       │   │   ├── httputil_test.py
│       │   │   ├── import_test.py
│       │   │   ├── ioloop_test.py
│       │   │   ├── iostream_test.py
│       │   │   ├── locale_test.py
│       │   │   ├── locks_test.py
│       │   │   ├── log_test.py
│       │   │   ├── netutil_test.py
│       │   │   ├── options_test.cfg
│       │   │   ├── options_test.py
│       │   │   ├── process_test.py
│       │   │   ├── queues_test.py
│       │   │   ├── resolve_test_helper.py
│       │   │   ├── routing_test.py
│       │   │   ├── runtests.py
│       │   │   ├── simple_httpclient_test.py
│       │   │   ├── stack_context_test.py
│       │   │   ├── static/
│       │   │   │   ├── dir/
│       │   │   │   │   └── index.html
│       │   │   │   ├── robots.txt
│       │   │   │   ├── sample.xml
│       │   │   │   └── sample.xml.bz2
│       │   │   ├── static_foo.txt
│       │   │   ├── tcpclient_test.py
│       │   │   ├── tcpserver_test.py
│       │   │   ├── template_test.py
│       │   │   ├── templates/
│       │   │   │   └── utf8.html
│       │   │   ├── test.crt
│       │   │   ├── test.key
│       │   │   ├── testing_test.py
│       │   │   ├── twisted_test.py
│       │   │   ├── util.py
│       │   │   ├── util_test.py
│       │   │   ├── web_test.py
│       │   │   ├── websocket_test.py
│       │   │   ├── windows_test.py
│       │   │   └── wsgi_test.py
│       │   ├── testing.py
│       │   ├── util.py
│       │   ├── web.py
│       │   ├── websocket.py
│       │   └── wsgi.py
│       └── utils/
│           ├── README.md
│           ├── add_metadata.py
│           ├── bnfize
│           ├── export_notebook_code.py
│           ├── htmltonbpdf.py
│           ├── nb2jb.py
│           ├── nbautopep8.py
│           ├── nbautoslide.py
│           ├── nbdepend.py
│           ├── nbindex.py
│           ├── nbmerge.py
│           ├── nbshorten.py
│           ├── nbspellcheck.py
│           ├── nbstats.py
│           ├── nbsummarize.py
│           ├── nbsynopsis.py
│           ├── nbtoc.py
│           ├── patch_jb.py
│           ├── post_html.py
│           └── post_tex
├── pyproject.toml
├── python_code/
│   ├── LICENSE.md
│   ├── README.md
│   ├── __init__.py.in
│   └── setup.py.in
└── word/
    ├── README.md
    └── pandoc.css
Download .txt
Showing preview only (487K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2687 symbols across 53 files)

FILE: docs/beta/_sphinx_design_static/design-tabs.js
  function create_key (line 18) | function create_key(el) {
  function ready (line 29) | function ready() {
  function onSDLabelClick (line 89) | function onSDLabelClick() {

FILE: docs/beta/_static/copybutton.js
  function escapeRegExp (line 148) | function escapeRegExp(string) {
  function filterText (line 159) | function filterText(target, exclude) {
  function formatCopyText (line 170) | function formatCopyText(textContent, copybuttonPromptText, isRegexp = fa...

FILE: docs/beta/_static/copybutton_funcs.js
  function escapeRegExp (line 1) | function escapeRegExp(string) {
  function filterText (line 12) | function filterText(target, exclude) {
  function formatCopyText (line 23) | function formatCopyText(textContent, copybuttonPromptText, isRegexp = fa...

FILE: docs/beta/_static/design-tabs.js
  function create_key (line 18) | function create_key(el) {
  function ready (line 29) | function ready() {
  function onSDLabelClick (line 89) | function onSDLabelClick() {

FILE: docs/beta/_static/doctools.js
  constant BLACKLISTED_KEY_CONTROL_ELEMENTS (line 13) | const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([

FILE: docs/beta/_static/documentation_options.js
  constant DOCUMENTATION_OPTIONS (line 1) | const DOCUMENTATION_OPTIONS = {

FILE: docs/beta/_static/scripts/bootstrap.js
  function x (line 2) | function x(t){return t?(t.nodeName||"").toLowerCase():null}
  function k (line 2) | function k(t){if(null==t)return window;if("[object Window]"!==t.toString...
  function L (line 2) | function L(t){return t instanceof k(t).Element||t instanceof Element}
  function S (line 2) | function S(t){return t instanceof k(t).HTMLElement||t instanceof HTMLEle...
  function D (line 2) | function D(t){return"undefined"!=typeof ShadowRoot&&(t instanceof k(t).S...
  function I (line 2) | function I(t){return t.split("-")[0]}
  function j (line 2) | function j(){var t=navigator.userAgentData;return null!=t&&t.brands&&Arr...
  function F (line 2) | function F(){return!/^((?!chrome|android).)*safari/i.test(j())}
  function H (line 2) | function H(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBound...
  function B (line 2) | function B(t){var e=H(t),i=t.offsetWidth,n=t.offsetHeight;return Math.ab...
  function W (line 2) | function W(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))re...
  function z (line 2) | function z(t){return k(t).getComputedStyle(t)}
  function R (line 2) | function R(t){return["table","td","th"].indexOf(x(t))>=0}
  function q (line 2) | function q(t){return((L(t)?t.ownerDocument:t.document)||window.document)...
  function V (line 2) | function V(t){return"html"===x(t)?t:t.assignedSlot||t.parentNode||(D(t)?...
  function Y (line 2) | function Y(t){return S(t)&&"fixed"!==z(t).position?t.offsetParent:null}
  function K (line 2) | function K(t){for(var e=k(t),i=Y(t);i&&R(i)&&"static"===z(i).position;)i...
  function Q (line 2) | function Q(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}
  function X (line 2) | function X(t,e,i){return N(t,P(e,i))}
  function U (line 2) | function U(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}
  function G (line 2) | function G(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}
  function Z (line 2) | function Z(t){return t.split("-")[1]}
  function et (line 2) | function et(t){var e,i=t.popper,a=t.popperRect,l=t.placement,c=t.variati...
  function rt (line 2) | function rt(t){return t.replace(/left|right|bottom|top/g,(function(t){re...
  function lt (line 2) | function lt(t){return t.replace(/start|end/g,(function(t){return at[t]}))}
  function ct (line 2) | function ct(t){var e=k(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pa...
  function ht (line 2) | function ht(t){return H(q(t)).left+ct(t).scrollLeft}
  function dt (line 2) | function dt(t){var e=z(t),i=e.overflow,n=e.overflowX,s=e.overflowY;retur...
  function ut (line 2) | function ut(t){return["html","body","#document"].indexOf(x(t))>=0?t.owne...
  function ft (line 2) | function ft(t,e){var i;void 0===e&&(e=[]);var n=ut(t),s=n===(null==(i=t....
  function pt (line 2) | function pt(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.w...
  function mt (line 2) | function mt(t,e,i){return e===u?pt(function(t,e){var i=k(t),n=q(t),s=i.v...
  function gt (line 2) | function gt(t){var e,i=t.reference,a=t.element,l=t.placement,d=l?I(l):nu...
  function _t (line 2) | function _t(t,e){void 0===e&&(e={});var i=e,r=i.placement,a=void 0===r?t...
  function vt (line 2) | function vt(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-...
  function yt (line 2) | function yt(t){return[n,o,s,r].some((function(e){return t[e]>=0}))}
  function Ct (line 2) | function Ct(t,e,i){void 0===i&&(i=!1);var n,s,o=S(e),r=S(e)&&function(t)...
  function Ot (line 2) | function Ot(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),...
  function kt (line 2) | function kt(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]...
  function Lt (line 2) | function Lt(t){void 0===t&&(t={});var e=t,i=e.defaultModifiers,n=void 0=...
  method set (line 2) | set(t,e,i){It.has(t)||It.set(t,new Map);const n=It.get(t);n.has(e)||0===...
  method remove (line 2) | remove(t,e){if(!It.has(t))return;const i=It.get(t);i.delete(e),0===i.siz...
  function oe (line 2) | function oe(t,e){return e&&`${e}::${ie++}`||t.uidEvent||ie++}
  function re (line 2) | function re(t){const e=oe(t);return t.uidEvent=e,ee[e]=ee[e]||{},ee[e]}
  function ae (line 2) | function ae(t,e,i=null){return Object.values(t).find((t=>t.callable===e&...
  function le (line 2) | function le(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=ue(t);ret...
  function ce (line 2) | function ce(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=le(e,...
  function he (line 2) | function he(t,e,i,n,s){const o=ae(e[i],n,s);o&&(t.removeEventListener(i,...
  function de (line 2) | function de(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s)...
  function ue (line 2) | function ue(t){return t=t.replace(Zt,""),ne[t]||t}
  method on (line 2) | on(t,e,i,n){ce(t,e,i,n,!1)}
  method one (line 2) | one(t,e,i,n){ce(t,e,i,n,!0)}
  method off (line 2) | off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=le(e,i,n),a=r...
  method trigger (line 2) | trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=Vt();let s=...
  function pe (line 2) | function pe(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(...
  function me (line 2) | function me(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Num...
  function ge (line 2) | function ge(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}
  method setDataAttribute (line 2) | setDataAttribute(t,e,i){t.setAttribute(`data-bs-${ge(e)}`,i)}
  method removeDataAttribute (line 2) | removeDataAttribute(t,e){t.removeAttribute(`data-bs-${ge(e)}`)}
  method getDataAttributes (line 2) | getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset)....
  class be (line 2) | class be{static get Default(){return{}}static get DefaultType(){return{}...
    method Default (line 2) | static get Default(){return{}}
    method DefaultType (line 2) | static get DefaultType(){return{}}
    method NAME (line 2) | static get NAME(){throw new Error('You have to implement the static me...
    method _getConfig (line 2) | _getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerg...
    method _configAfterMerge (line 2) | _configAfterMerge(t){return t}
    method _mergeConfigObj (line 2) | _mergeConfigObj(t,e){const i=Ft(e)?_e.getDataAttribute(e,"config"):{};...
    method _typeCheckConfig (line 2) | _typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Ob...
  class ve (line 2) | class ve extends be{constructor(t,e){super(),(t=Ht(t))&&(this._element=t...
    method constructor (line 2) | constructor(t,e){super(),(t=Ht(t))&&(this._element=t,this._config=this...
    method dispose (line 2) | dispose(){Nt.remove(this._element,this.constructor.DATA_KEY),fe.off(th...
    method _queueCallback (line 2) | _queueCallback(t,e,i=!0){Ut(t,e,i)}
    method _getConfig (line 2) | _getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._c...
    method getInstance (line 2) | static getInstance(t){return Nt.get(Ht(t),this.DATA_KEY)}
    method getOrCreateInstance (line 2) | static getOrCreateInstance(t,e={}){return this.getInstance(t)||new thi...
    method VERSION (line 2) | static get VERSION(){return"5.3.3"}
    method DATA_KEY (line 2) | static get DATA_KEY(){return`bs.${this.NAME}`}
    method EVENT_KEY (line 2) | static get EVENT_KEY(){return`.${this.DATA_KEY}`}
    method eventName (line 2) | static eventName(t){return`${t}${this.EVENT_KEY}`}
  method parents (line 2) | parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),...
  method prev (line 2) | prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return...
  method next (line 2) | next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];...
  method focusableChildren (line 2) | focusableChildren(t){const e=["a","button","input","textarea","select","...
  method getSelectorFromElement (line 2) | getSelectorFromElement(t){const e=ye(t);return e&&we.findOne(e)?e:null}
  method getElementFromSelector (line 2) | getElementFromSelector(t){const e=ye(t);return e?we.findOne(e):null}
  method getMultipleElementsFromSelector (line 2) | getMultipleElementsFromSelector(t){const e=ye(t);return e?we.find(e):[]}
  class Oe (line 2) | class Oe extends ve{static get NAME(){return"alert"}close(){if(fe.trigge...
    method NAME (line 2) | static get NAME(){return"alert"}
    method close (line 2) | close(){if(fe.trigger(this._element,Te).defaultPrevented)return;this._...
    method _destroyElement (line 2) | _destroyElement(){this._element.remove(),fe.trigger(this._element,Ce),...
    method jQueryInterface (line 2) | static jQueryInterface(t){return this.each((function(){const e=Oe.getO...
  class ke (line 2) | class ke extends ve{static get NAME(){return"button"}toggle(){this._elem...
    method NAME (line 2) | static get NAME(){return"button"}
    method toggle (line 2) | toggle(){this._element.setAttribute("aria-pressed",this._element.class...
    method jQueryInterface (line 2) | static jQueryInterface(t){return this.each((function(){const e=ke.getO...
  class je (line 2) | class je extends be{constructor(t,e){super(),this._element=t,t&&je.isSup...
    method constructor (line 2) | constructor(t,e){super(),this._element=t,t&&je.isSupported()&&(this._c...
    method Default (line 2) | static get Default(){return Pe}
    method DefaultType (line 2) | static get DefaultType(){return Me}
    method NAME (line 2) | static get NAME(){return"swipe"}
    method dispose (line 2) | dispose(){fe.off(this._element,Le)}
    method _start (line 2) | _start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&...
    method _end (line 2) | _end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this....
    method _move (line 2) | _move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].cli...
    method _handleSwipe (line 2) | _handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=...
    method _initEvents (line 2) | _initEvents(){this._supportPointerEvents?(fe.on(this._element,Ie,(t=>t...
    method _eventIsPointerPenTouch (line 2) | _eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"==...
    method isSupported (line 2) | static isSupported(){return"ontouchstart"in document.documentElement||...
  class li (line 2) | class li extends ve{constructor(t,e){super(t,e),this._interval=null,this...
    method constructor (line 2) | constructor(t,e){super(t,e),this._interval=null,this._activeElement=nu...
    method Default (line 2) | static get Default(){return ri}
    method DefaultType (line 2) | static get DefaultType(){return ai}
    method NAME (line 2) | static get NAME(){return"carousel"}
    method next (line 2) | next(){this._slide(ze)}
    method nextWhenVisible (line 2) | nextWhenVisible(){!document.hidden&&Bt(this._element)&&this.next()}
    method prev (line 2) | prev(){this._slide(Re)}
    method pause (line 2) | pause(){this._isSliding&&jt(this._element),this._clearInterval()}
    method cycle (line 2) | cycle(){this._clearInterval(),this._updateInterval(),this._interval=se...
    method _maybeEnableCycle (line 2) | _maybeEnableCycle(){this._config.ride&&(this._isSliding?fe.one(this._e...
    method to (line 2) | to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._is...
    method dispose (line 2) | dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}
    method _configAfterMerge (line 2) | _configAfterMerge(t){return t.defaultInterval=t.interval,t}
    method _addEventListeners (line 2) | _addEventListeners(){this._config.keyboard&&fe.on(this._element,Qe,(t=...
    method _addTouchEventListeners (line 2) | _addTouchEventListeners(){for(const t of we.find(".carousel-item img",...
    method _keydown (line 2) | _keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e...
    method _getItemIndex (line 2) | _getItemIndex(t){return this._getItems().indexOf(t)}
    method _setActiveIndicatorElement (line 2) | _setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const...
    method _updateInterval (line 2) | _updateInterval(){const t=this._activeElement||this._getActive();if(!t...
    method _slide (line 2) | _slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n...
    method _isAnimated (line 2) | _isAnimated(){return this._element.classList.contains("slide")}
    method _getActive (line 2) | _getActive(){return we.findOne(si,this._element)}
    method _getItems (line 2) | _getItems(){return we.find(ni,this._element)}
    method _clearInterval (line 2) | _clearInterval(){this._interval&&(clearInterval(this._interval),this._...
    method _directionToOrder (line 2) | _directionToOrder(t){return Kt()?t===qe?Re:ze:t===qe?ze:Re}
    method _orderToDirection (line 2) | _orderToDirection(t){return Kt()?t===Re?qe:Ve:t===Re?Ve:qe}
    method jQueryInterface (line 2) | static jQueryInterface(t){return this.each((function(){const e=li.getO...
  class Ei (line 2) | class Ei extends ve{constructor(t,e){super(t,e),this._isTransitioning=!1...
    method constructor (line 2) | constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArra...
    method Default (line 2) | static get Default(){return yi}
    method DefaultType (line 2) | static get DefaultType(){return wi}
    method NAME (line 2) | static get NAME(){return"collapse"}
    method toggle (line 2) | toggle(){this._isShown()?this.hide():this.show()}
    method show (line 2) | show(){if(this._isTransitioning||this._isShown())return;let t=[];if(th...
    method hide (line 2) | hide(){if(this._isTransitioning||!this._isShown())return;if(fe.trigger...
    method _isShown (line 2) | _isShown(t=this._element){return t.classList.contains(mi)}
    method _configAfterMerge (line 2) | _configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=Ht(t.p...
    method _getDimension (line 2) | _getDimension(){return this._element.classList.contains("collapse-hori...
    method _initializeChildren (line 2) | _initializeChildren(){if(!this._config.parent)return;const t=this._get...
    method _getFirstLevelChildren (line 2) | _getFirstLevelChildren(t){const e=we.find(bi,this._config.parent);retu...
    method _addAriaAndCollapsedClass (line 2) | _addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classLis...
    method jQueryInterface (line 2) | static jQueryInterface(t){const e={};return"string"==typeof t&&/show|h...
  class Ki (line 2) | class Ki extends ve{constructor(t,e){super(t,e),this._popper=null,this._...
    method constructor (line 2) | constructor(t,e){super(t,e),this._popper=null,this._parent=this._eleme...
    method Default (line 2) | static get Default(){return Vi}
    method DefaultType (line 2) | static get DefaultType(){return Yi}
    method NAME (line 2) | static get NAME(){return Ai}
    method toggle (line 2) | toggle(){return this._isShown()?this.hide():this.show()}
    method show (line 2) | show(){if(Wt(this._element)||this._isShown())return;const t={relatedTa...
    method hide (line 2) | hide(){if(Wt(this._element)||!this._isShown())return;const t={relatedT...
    method dispose (line 2) | dispose(){this._popper&&this._popper.destroy(),super.dispose()}
    method update (line 2) | update(){this._inNavbar=this._detectNavbar(),this._popper&&this._poppe...
    method _completeHide (line 2) | _completeHide(t){if(!fe.trigger(this._element,ki,t).defaultPrevented){...
    method _getConfig (line 2) | _getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!F...
    method _createPopper (line 2) | _createPopper(){if(void 0===e)throw new TypeError("Bootstrap's dropdow...
    method _isShown (line 2) | _isShown(){return this._menu.classList.contains(Pi)}
    method _getPlacement (line 2) | _getPlacement(){const t=this._parent;if(t.classList.contains("dropend"...
    method _detectNavbar (line 2) | _detectNavbar(){return null!==this._element.closest(".navbar")}
    method _getOffset (line 2) | _getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.s...
    method _getPopperConfig (line 2) | _getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[...
    method _selectMenuItem (line 2) | _selectMenuItem({key:t,target:e}){const i=we.find(".dropdown-menu .dro...
    method jQueryInterface (line 2) | static jQueryInterface(t){return this.each((function(){const e=Ki.getO...
    method clearMenus (line 2) | static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)...
    method dataApiKeydownHandler (line 2) | static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.targe...
  class Zi (line 2) | class Zi extends be{constructor(t){super(),this._config=this._getConfig(...
    method constructor (line 2) | constructor(t){super(),this._config=this._getConfig(t),this._isAppende...
    method Default (line 2) | static get Default(){return Gi}
    method DefaultType (line 2) | static get DefaultType(){return Ji}
    method NAME (line 2) | static get NAME(){return Qi}
    method show (line 2) | show(t){if(!this._config.isVisible)return void Xt(t);this._append();co...
    method hide (line 2) | hide(t){this._config.isVisible?(this._getElement().classList.remove(Xi...
    method dispose (line 2) | dispose(){this._isAppended&&(fe.off(this._element,Ui),this._element.re...
    method _getElement (line 2) | _getElement(){if(!this._element){const t=document.createElement("div")...
    method _configAfterMerge (line 2) | _configAfterMerge(t){return t.rootElement=Ht(t.rootElement),t}
    method _append (line 2) | _append(){if(this._isAppended)return;const t=this._getElement();this._...
    method _emulateAnimation (line 2) | _emulateAnimation(t){Ut(t,this._getElement(),this._config.isAnimated)}
  class an (line 2) | class an extends be{constructor(t){super(),this._config=this._getConfig(...
    method constructor (line 2) | constructor(t){super(),this._config=this._getConfig(t),this._isActive=...
    method Default (line 2) | static get Default(){return on}
    method DefaultType (line 2) | static get DefaultType(){return rn}
    method NAME (line 2) | static get NAME(){return"focustrap"}
    method activate (line 2) | activate(){this._isActive||(this._config.autofocus&&this._config.trapE...
    method deactivate (line 2) | deactivate(){this._isActive&&(this._isActive=!1,fe.off(document,tn))}
    method _handleFocusin (line 2) | _handleFocusin(t){const{trapElement:e}=this._config;if(t.target===docu...
    method _handleKeydown (line 2) | _handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey...
  class un (line 2) | class un{constructor(){this._element=document.body}getWidth(){const t=do...
    method constructor (line 2) | constructor(){this._element=document.body}
    method getWidth (line 2) | getWidth(){const t=document.documentElement.clientWidth;return Math.ab...
    method hide (line 2) | hide(){const t=this.getWidth();this._disableOverFlow(),this._setElemen...
    method reset (line 2) | reset(){this._resetElementAttributes(this._element,"overflow"),this._r...
    method isOverflowing (line 2) | isOverflowing(){return this.getWidth()>0}
    method _disableOverFlow (line 2) | _disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"...
    method _setElementAttributes (line 2) | _setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipu...
    method _saveInitialAttribute (line 2) | _saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&_e.s...
    method _resetElementAttributes (line 2) | _resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{co...
    method _applyManipulationCallback (line 2) | _applyManipulationCallback(t,e){if(Ft(t))e(t);else for(const i of we.f...
  class Ln (line 2) | class Ln extends ve{constructor(t,e){super(t,e),this._dialog=we.findOne(...
    method constructor (line 2) | constructor(t,e){super(t,e),this._dialog=we.findOne(".modal-dialog",th...
    method Default (line 2) | static get Default(){return xn}
    method DefaultType (line 2) | static get DefaultType(){return kn}
    method NAME (line 2) | static get NAME(){return"modal"}
    method toggle (line 2) | toggle(t){return this._isShown?this.hide():this.show(t)}
    method show (line 2) | show(t){this._isShown||this._isTransitioning||fe.trigger(this._element...
    method hide (line 2) | hide(){this._isShown&&!this._isTransitioning&&(fe.trigger(this._elemen...
    method dispose (line 2) | dispose(){fe.off(window,fn),fe.off(this._dialog,fn),this._backdrop.dis...
    method handleUpdate (line 2) | handleUpdate(){this._adjustDialog()}
    method _initializeBackDrop (line 2) | _initializeBackDrop(){return new Zi({isVisible:Boolean(this._config.ba...
    method _initializeFocusTrap (line 2) | _initializeFocusTrap(){return new an({trapElement:this._element})}
    method _showElement (line 2) | _showElement(t){document.body.contains(this._element)||document.body.a...
    method _addEventListeners (line 2) | _addEventListeners(){fe.on(this._element,En,(t=>{"Escape"===t.key&&(th...
    method _hideModal (line 2) | _hideModal(){this._element.style.display="none",this._element.setAttri...
    method _isAnimated (line 2) | _isAnimated(){return this._element.classList.contains("fade")}
    method _triggerBackdropTransition (line 2) | _triggerBackdropTransition(){if(fe.trigger(this._element,mn).defaultPr...
    method _adjustDialog (line 2) | _adjustDialog(){const t=this._element.scrollHeight>document.documentEl...
    method _resetAdjustments (line 2) | _resetAdjustments(){this._element.style.paddingLeft="",this._element.s...
    method jQueryInterface (line 2) | static jQueryInterface(t,e){return this.each((function(){const i=Ln.ge...
  class Kn (line 2) | class Kn extends ve{constructor(t,e){super(t,e),this._isShown=!1,this._b...
    method constructor (line 2) | constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._init...
    method Default (line 2) | static get Default(){return Vn}
    method DefaultType (line 2) | static get DefaultType(){return Yn}
    method NAME (line 2) | static get NAME(){return"offcanvas"}
    method toggle (line 2) | toggle(t){return this._isShown?this.hide():this.show(t)}
    method show (line 2) | show(t){this._isShown||fe.trigger(this._element,jn,{relatedTarget:t})....
    method hide (line 2) | hide(){this._isShown&&(fe.trigger(this._element,Hn).defaultPrevented||...
    method dispose (line 2) | dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super....
    method _initializeBackDrop (line 2) | _initializeBackDrop(){const t=Boolean(this._config.backdrop);return ne...
    method _initializeFocusTrap (line 2) | _initializeFocusTrap(){return new an({trapElement:this._element})}
    method _addEventListeners (line 2) | _addEventListeners(){fe.on(this._element,qn,(t=>{"Escape"===t.key&&(th...
    method jQueryInterface (line 2) | static jQueryInterface(t){return this.each((function(){const e=Kn.getO...
  class es (line 2) | class es extends be{constructor(t){super(),this._config=this._getConfig(...
    method constructor (line 2) | constructor(t){super(),this._config=this._getConfig(t)}
    method Default (line 2) | static get Default(){return Jn}
    method DefaultType (line 2) | static get DefaultType(){return Zn}
    method NAME (line 2) | static get NAME(){return"TemplateFactory"}
    method getContent (line 2) | getContent(){return Object.values(this._config.content).map((t=>this._...
    method hasContent (line 2) | hasContent(){return this.getContent().length>0}
    method changeContent (line 2) | changeContent(t){return this._checkContent(t),this._config.content={.....
    method toHtml (line 2) | toHtml(){const t=document.createElement("div");t.innerHTML=this._maybe...
    method _typeCheckConfig (line 2) | _typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.con...
    method _checkContent (line 2) | _checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckCo...
    method _setContent (line 2) | _setContent(t,e,i){const n=we.findOne(i,t);n&&((e=this._resolvePossibl...
    method _maybeSanitize (line 2) | _maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.l...
    method _resolvePossibleFunction (line 2) | _resolvePossibleFunction(t){return Xt(t,[this])}
    method _putElementInTemplate (line 2) | _putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",...
  class fs (line 2) | class fs extends ve{constructor(t,i){if(void 0===e)throw new TypeError("...
    method constructor (line 2) | constructor(t,i){if(void 0===e)throw new TypeError("Bootstrap's toolti...
    method Default (line 2) | static get Default(){return ds}
    method DefaultType (line 2) | static get DefaultType(){return us}
    method NAME (line 2) | static get NAME(){return"tooltip"}
    method enable (line 2) | enable(){this._isEnabled=!0}
    method disable (line 2) | disable(){this._isEnabled=!1}
    method toggleEnabled (line 2) | toggleEnabled(){this._isEnabled=!this._isEnabled}
    method toggle (line 2) | toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrig...
    method dispose (line 2) | dispose(){clearTimeout(this._timeout),fe.off(this._element.closest(rs)...
    method show (line 2) | show(){if("none"===this._element.style.display)throw new Error("Please...
    method hide (line 2) | hide(){if(this._isShown()&&!fe.trigger(this._element,this.constructor....
    method update (line 2) | update(){this._popper&&this._popper.update()}
    method _isWithContent (line 2) | _isWithContent(){return Boolean(this._getTitle())}
    method _getTipElement (line 2) | _getTipElement(){return this.tip||(this.tip=this._createTipElement(thi...
    method _createTipElement (line 2) | _createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!...
    method setContent (line 2) | setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper...
    method _getTemplateFactory (line 2) | _getTemplateFactory(t){return this._templateFactory?this._templateFact...
    method _getContentForTemplate (line 2) | _getContentForTemplate(){return{[os]:this._getTitle()}}
    method _getTitle (line 2) | _getTitle(){return this._resolvePossibleFunction(this._config.title)||...
    method _initializeOnDelegatedTarget (line 2) | _initializeOnDelegatedTarget(t){return this.constructor.getOrCreateIns...
    method _isAnimated (line 2) | _isAnimated(){return this._config.animation||this.tip&&this.tip.classL...
    method _isShown (line 2) | _isShown(){return this.tip&&this.tip.classList.contains(ss)}
    method _createPopper (line 2) | _createPopper(t){const e=Xt(this._config.placement,[this,t,this._eleme...
    method _getOffset (line 2) | _getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.s...
    method _resolvePossibleFunction (line 2) | _resolvePossibleFunction(t){return Xt(t,[this._element])}
    method _getPopperConfig (line 2) | _getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",optio...
    method _setListeners (line 2) | _setListeners(){const t=this._config.trigger.split(" ");for(const e of...
    method _fixTitle (line 2) | _fixTitle(){const t=this._element.getAttribute("title");t&&(this._elem...
    method _enter (line 2) | _enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._is...
    method _leave (line 2) | _leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTim...
    method _setTimeout (line 2) | _setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(...
    method _isWithActiveTrigger (line 2) | _isWithActiveTrigger(){return Object.values(this._activeTrigger).inclu...
    method _getConfig (line 2) | _getConfig(t){const e=_e.getDataAttributes(this._element);for(const t ...
    method _configAfterMerge (line 2) | _configAfterMerge(t){return t.container=!1===t.container?document.body...
    method _getDelegateConfig (line 2) | _getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._...
    method _disposePopper (line 2) | _disposePopper(){this._popper&&(this._popper.destroy(),this._popper=nu...
    method jQueryInterface (line 2) | static jQueryInterface(t){return this.each((function(){const e=fs.getO...
  class bs (line 2) | class bs extends fs{static get Default(){return gs}static get DefaultTyp...
    method Default (line 2) | static get Default(){return gs}
    method DefaultType (line 2) | static get DefaultType(){return _s}
    method NAME (line 2) | static get NAME(){return"popover"}
    method _isWithContent (line 2) | _isWithContent(){return this._getTitle()||this._getContent()}
    method _getContentForTemplate (line 2) | _getContentForTemplate(){return{[ps]:this._getTitle(),[ms]:this._getCo...
    method _getContent (line 2) | _getContent(){return this._resolvePossibleFunction(this._config.content)}
    method jQueryInterface (line 2) | static jQueryInterface(t){return this.each((function(){const e=bs.getO...
  class Ls (line 2) | class Ls extends ve{constructor(t,e){super(t,e),this._targetLinks=new Ma...
    method constructor (line 2) | constructor(t,e){super(t,e),this._targetLinks=new Map,this._observable...
    method Default (line 2) | static get Default(){return xs}
    method DefaultType (line 2) | static get DefaultType(){return ks}
    method NAME (line 2) | static get NAME(){return"scrollspy"}
    method refresh (line 2) | refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmo...
    method dispose (line 2) | dispose(){this._observer.disconnect(),super.dispose()}
    method _configAfterMerge (line 2) | _configAfterMerge(t){return t.target=Ht(t.target)||document.body,t.roo...
    method _maybeEnableSmoothScroll (line 2) | _maybeEnableSmoothScroll(){this._config.smoothScroll&&(fe.off(this._co...
    method _getNewObserver (line 2) | _getNewObserver(){const t={root:this._rootElement,threshold:this._conf...
    method _observerCallback (line 2) | _observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}...
    method _initializeTargetsAndObservables (line 2) | _initializeTargetsAndObservables(){this._targetLinks=new Map,this._obs...
    method _process (line 2) | _process(t){this._activeTarget!==t&&(this._clearActiveClass(this._conf...
    method _activateParents (line 2) | _activateParents(t){if(t.classList.contains("dropdown-item"))we.findOn...
    method _clearActiveClass (line 2) | _clearActiveClass(t){t.classList.remove(As);const e=we.find(`${Ts}.${A...
    method jQueryInterface (line 2) | static jQueryInterface(t){return this.each((function(){const e=Ls.getO...
  class Js (line 2) | class Js extends ve{constructor(t){super(t),this._parent=this._element.c...
    method constructor (line 2) | constructor(t){super(t),this._parent=this._element.closest('.list-grou...
    method NAME (line 2) | static get NAME(){return"tab"}
    method show (line 2) | show(){const t=this._element;if(this._elemIsActive(t))return;const e=t...
    method _activate (line 2) | _activate(t,e){t&&(t.classList.add(qs),this._activate(we.getElementFro...
    method _deactivate (line 2) | _deactivate(t,e){t&&(t.classList.remove(qs),t.blur(),this._deactivate(...
    method _keydown (line 2) | _keydown(t){if(![Fs,Hs,Bs,Ws,zs,Rs].includes(t.key))return;t.stopPropa...
    method _getChildren (line 2) | _getChildren(){return we.find(Us,this._parent)}
    method _getActiveElem (line 2) | _getActiveElem(){return this._getChildren().find((t=>this._elemIsActiv...
    method _setInitialAttributes (line 2) | _setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tab...
    method _setInitialAttributesOnChild (line 2) | _setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=thi...
    method _setInitialAttributesOnTargetPanel (line 2) | _setInitialAttributesOnTargetPanel(t){const e=we.getElementFromSelecto...
    method _toggleDropDown (line 2) | _toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList....
    method _setAttributeIfNotExists (line 2) | _setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}
    method _elemIsActive (line 2) | _elemIsActive(t){return t.classList.contains(qs)}
    method _getInnerElement (line 2) | _getInnerElement(t){return t.matches(Us)?t:we.findOne(Us,t)}
    method _getOuterElement (line 2) | _getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}
    method jQueryInterface (line 2) | static jQueryInterface(t){return this.each((function(){const e=Js.getO...
  class po (line 2) | class po extends ve{constructor(t,e){super(t,e),this._timeout=null,this....
    method constructor (line 2) | constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteracti...
    method Default (line 2) | static get Default(){return fo}
    method DefaultType (line 2) | static get DefaultType(){return uo}
    method NAME (line 2) | static get NAME(){return"toast"}
    method show (line 2) | show(){fe.trigger(this._element,ro).defaultPrevented||(this._clearTime...
    method hide (line 2) | hide(){this.isShown()&&(fe.trigger(this._element,so).defaultPrevented|...
    method dispose (line 2) | dispose(){this._clearTimeout(),this.isShown()&&this._element.classList...
    method isShown (line 2) | isShown(){return this._element.classList.contains(co)}
    method _maybeScheduleHide (line 2) | _maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction...
    method _onInteraction (line 2) | _onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this...
    method _setListeners (line 2) | _setListeners(){fe.on(this._element,to,(t=>this._onInteraction(t,!0)))...
    method _clearTimeout (line 2) | _clearTimeout(){clearTimeout(this._timeout),this._timeout=null}
    method jQueryInterface (line 2) | static jQueryInterface(t){return this.each((function(){const e=po.getO...
  function mo (line 2) | function mo(t){"loading"!=document.readyState?t():document.addEventListe...

FILE: docs/beta/_static/scripts/pydata-sphinx-theme.js
  function e (line 1) | function e(e){"loading"!=document.readyState?e():document.addEventListen...
  function h (line 1) | function h(e){document.documentElement.dataset.theme=m.matches?"dark":"l...
  function p (line 1) | function p(e){"light"!==e&&"dark"!==e&&"auto"!==e&&(console.error(`Got i...
  function f (line 1) | function f(){const e=document.documentElement.dataset.defaultMode||"auto...
  function w (line 1) | async function w(e){document.querySelector("#bd-header-version-warning")...
  function E (line 1) | async function E(e){e.preventDefault();const t=b();let n=e.currentTarget...
  function S (line 1) | async function S(){var e=document.querySelectorAll(".version-switcher__b...
  function T (line 1) | function T(){const e=()=>{document.querySelectorAll("pre, .nboutput > .o...
  function O (line 1) | async function O(){const e=document.querySelector(".bd-header-announceme...

FILE: docs/beta/_static/sphinx_highlight.js
  constant SPHINX_HIGHLIGHT_ENABLED (line 4) | const SPHINX_HIGHLIGHT_ENABLED = true

FILE: docs/beta/code/Alhazen.py
  function task_sqrt (line 116) | def task_sqrt(x):
  function task_tan (line 131) | def task_tan(x):
  function task_cos (line 135) | def task_cos(x):
  function task_sin (line 139) | def task_sin(x):
  class OracleResult (line 173) | class OracleResult(Enum):
    method __str__ (line 178) | def __str__(self):
  function sample_runner (line 185) | def sample_runner(sample):
  function execute_samples (line 214) | def execute_samples(sample_list):
  class Feature (line 275) | class Feature(ABC):
    method __init__ (line 286) | def __init__(self, name: str, rule: str, key: str, /,
    method __repr__ (line 294) | def __repr__(self) -> str:
    method name_rep (line 299) | def name_rep(self) -> str:
    method friendly_name (line 302) | def friendly_name(self) -> str:
    method get_feature_value (line 306) | def get_feature_value(self, derivation_tree) -> float:
    method replace (line 310) | def replace(self, new_key: str) -> 'Feature':
  class ExistenceFeature (line 314) | class ExistenceFeature(Feature):
    method __init__ (line 327) | def __init__(self, name: str, rule: str, key: str,
    method name_rep (line 331) | def name_rep(self) -> str:
    method get_feature_value (line 337) | def get_feature_value(self, derivation_tree) -> float:
    method get_feature_value (line 341) | def get_feature_value(self, derivation_tree: DerivationTree) -> float:
  class NumericInterpretation (line 369) | class NumericInterpretation(Feature):
    method __init__ (line 380) | def __init__(self, name: str, rule: str, /,
    method name_rep (line 384) | def name_rep(self) -> str:
    method get_feature_value (line 387) | def get_feature_value(self, derivation_tree) -> float:
    method get_feature_value (line 391) | def get_feature_value(self, derivation_tree: DerivationTree) -> float:
  function extract_existence_features (line 418) | def extract_existence_features(grammar: Grammar) -> List[ExistenceFeature]:
  function extract_numeric_features (line 444) | def extract_numeric_features(grammar: Grammar) -> List[NumericInterpreta...
  function extract_all_features (line 494) | def extract_all_features(grammar: Grammar) -> List[Feature]:
  function collect_features (line 511) | def collect_features(sample_list: List[str],
  function compute_feature_values (line 542) | def compute_feature_values(sample: str, grammar: Grammar, features: List...
  function extend_grammar (line 584) | def extend_grammar(derivation_tree, grammar):
  function transform_grammar (line 600) | def transform_grammar(sample: str,
  function show_decision_tree (line 678) | def show_decision_tree(clf, feature_names):
  function friendly_decision_tree (line 690) | def friendly_decision_tree(clf, feature_names,
  function train_tree (line 732) | def train_tree(data):
  function all_path (line 820) | def all_path(clf, node=0):
  function path_samples (line 835) | def path_samples(clf, path):
  function generic_feature_names (line 840) | def generic_feature_names(clf):
  function box (line 845) | def box(clf, path, data=None, feature_names=None):
  function rectangles (line 872) | def rectangles(clf, colormap, data, feature_names=None):
  function prediction_for_path (line 895) | def prediction_for_path(clf, path) -> OracleResult:
  function rule (line 901) | def rule(clf, path, feature_names, class_names=None):
  function rules (line 925) | def rules(clf, class_names=None, feature_names=None):
  function grouped_rules (line 937) | def grouped_rules(clf, class_names=None, feature_names=None):
  function check_for_duplicates (line 960) | def check_for_duplicates(names):
  function is_leaf (line 968) | def is_leaf(clf, node: int) -> bool:
  function leaf_label (line 973) | def leaf_label(clf, node: int) -> int:
  function find_existence_index (line 986) | def find_existence_index(features: List[Feature], feature: Feature):
  function remove_infeasible (line 993) | def remove_infeasible(clf, features: List[Feature]):
  function iterate_nodes (line 1004) | def iterate_nodes(clf):
  function count_nodes (line 1014) | def count_nodes(clf):
  function count_leaves (line 1018) | def count_leaves(clf):
  function list_features (line 1022) | def list_features(clf):
  function remove_unequal_decisions (line 1026) | def remove_unequal_decisions(clf):
  class TreeRequirement (line 1065) | class TreeRequirement:
    method __init__ (line 1066) | def __init__(self, feature: Feature, mini, maxi):
    method feature (line 1071) | def feature(self) -> Feature:
    method select (line 1074) | def select(self, data):
    method mini (line 1082) | def mini(self):
    method maxi (line 1085) | def maxi(self):
    method get_key (line 1088) | def get_key(self) -> str:
    method is_binary (line 1091) | def is_binary(self) -> bool:
    method get_str (line 1094) | def get_str(self, bounds) -> str:
    method get_str_ext (line 1111) | def get_str_ext(self) -> str:
    method get_neg (line 1119) | def get_neg(self, bounds) -> List[str]:
    method get_neg_ext (line 1137) | def get_neg_ext(self, bounds) -> List[str]:
  class TreePath (line 1148) | class TreePath:
    method __init__ (line 1149) | def __init__(self, samplefile: Optional[Path], is_bug: bool, requireme...
    method is_bug (line 1154) | def is_bug(self) -> bool:
    method get (line 1157) | def get(self, idx):
    method find_sample (line 1160) | def find_sample(self, data):
    method __len__ (line 1167) | def __len__(self) -> int:
  function lower_middle (line 1171) | def lower_middle(start, end):
  function upper_middle (line 1177) | def upper_middle(start, end):
  function min_digits (line 1183) | def min_digits(mini):
  function max_digits (line 1187) | def max_digits(maxi):
  function tree_to_paths (line 1190) | def tree_to_paths(tree, features: List[Feature]):
  function extracting_prediction_paths (line 1259) | def extracting_prediction_paths(clf, feature_names, data):
  function all_combinations (line 1282) | def all_combinations(reqs_lists):
  class SpecRequirement (line 1393) | class SpecRequirement:
    method __init__ (line 1406) | def __init__(self, feature: Feature, quantificator, value):
    method __str__ (line 1411) | def __str__(self):
    method __repr__ (line 1414) | def __repr__(self):
    method friendly (line 1417) | def friendly(self):
  class InputSpecification (line 1432) | class InputSpecification:
    method __init__ (line 1439) | def __init__(self, requirements: List[SpecRequirement]):
    method __str__ (line 1442) | def __str__(self):
    method friendly (line 1446) | def friendly(self):
    method __repr__ (line 1449) | def __repr__(self):
  function get_all_subtrees (line 1452) | def get_all_subtrees(derivation_tree, non_terminal):
  function create_new_input_specification (line 1468) | def create_new_input_specification(derivation_tree, all_features) -> Inp...
  function get_all_input_specifications (line 1490) | def get_all_input_specifications(dec_tree,
  function best_trees (line 1562) | def best_trees(forest, spec, grammar):
  function generate_samples_advanced (line 1612) | def generate_samples_advanced(grammar: Grammar,
  function generate_samples_random (line 1681) | def generate_samples_random(grammar: Grammar,
  function generate_samples (line 1692) | def generate_samples(grammar: Grammar,
  class Alhazen (line 1748) | class Alhazen:
    method __init__ (line 1749) | def __init__(self,
    method _setup (line 1768) | def _setup(self):
    method _add_new_data (line 1778) | def _add_new_data(self, exec_data, feature_data):
    method execute_samples (line 1791) | def execute_samples(self, sample_list = None):
    method run (line 1803) | def run(self):
    method all_trees (line 1810) | def all_trees(self, /, prune: bool = True):
    method last_tree (line 1816) | def last_tree(self, /, prune: bool = True):
    method _iterate (line 1820) | def _iterate(self, sample_list):
    method all_feature_names (line 1862) | def all_feature_names(self, friendly: bool = True) -> List[str]:
    method show_decision_tree (line 1870) | def show_decision_tree(self, tree = None, friendly: bool = True):
    method friendly_decision_tree (line 1875) | def friendly_decision_tree(self, tree = None):
  class Alhazen (line 1767) | class Alhazen(Alhazen):
    method __init__ (line 1749) | def __init__(self,
    method _setup (line 1768) | def _setup(self):
    method _add_new_data (line 1778) | def _add_new_data(self, exec_data, feature_data):
    method execute_samples (line 1791) | def execute_samples(self, sample_list = None):
    method run (line 1803) | def run(self):
    method all_trees (line 1810) | def all_trees(self, /, prune: bool = True):
    method last_tree (line 1816) | def last_tree(self, /, prune: bool = True):
    method _iterate (line 1820) | def _iterate(self, sample_list):
    method all_feature_names (line 1862) | def all_feature_names(self, friendly: bool = True) -> List[str]:
    method show_decision_tree (line 1870) | def show_decision_tree(self, tree = None, friendly: bool = True):
    method friendly_decision_tree (line 1875) | def friendly_decision_tree(self, tree = None):
  class Alhazen (line 1777) | class Alhazen(Alhazen):
    method __init__ (line 1749) | def __init__(self,
    method _setup (line 1768) | def _setup(self):
    method _add_new_data (line 1778) | def _add_new_data(self, exec_data, feature_data):
    method execute_samples (line 1791) | def execute_samples(self, sample_list = None):
    method run (line 1803) | def run(self):
    method all_trees (line 1810) | def all_trees(self, /, prune: bool = True):
    method last_tree (line 1816) | def last_tree(self, /, prune: bool = True):
    method _iterate (line 1820) | def _iterate(self, sample_list):
    method all_feature_names (line 1862) | def all_feature_names(self, friendly: bool = True) -> List[str]:
    method show_decision_tree (line 1870) | def show_decision_tree(self, tree = None, friendly: bool = True):
    method friendly_decision_tree (line 1875) | def friendly_decision_tree(self, tree = None):
  class Alhazen (line 1790) | class Alhazen(Alhazen):
    method __init__ (line 1749) | def __init__(self,
    method _setup (line 1768) | def _setup(self):
    method _add_new_data (line 1778) | def _add_new_data(self, exec_data, feature_data):
    method execute_samples (line 1791) | def execute_samples(self, sample_list = None):
    method run (line 1803) | def run(self):
    method all_trees (line 1810) | def all_trees(self, /, prune: bool = True):
    method last_tree (line 1816) | def last_tree(self, /, prune: bool = True):
    method _iterate (line 1820) | def _iterate(self, sample_list):
    method all_feature_names (line 1862) | def all_feature_names(self, friendly: bool = True) -> List[str]:
    method show_decision_tree (line 1870) | def show_decision_tree(self, tree = None, friendly: bool = True):
    method friendly_decision_tree (line 1875) | def friendly_decision_tree(self, tree = None):
  class Alhazen (line 1802) | class Alhazen(Alhazen):
    method __init__ (line 1749) | def __init__(self,
    method _setup (line 1768) | def _setup(self):
    method _add_new_data (line 1778) | def _add_new_data(self, exec_data, feature_data):
    method execute_samples (line 1791) | def execute_samples(self, sample_list = None):
    method run (line 1803) | def run(self):
    method all_trees (line 1810) | def all_trees(self, /, prune: bool = True):
    method last_tree (line 1816) | def last_tree(self, /, prune: bool = True):
    method _iterate (line 1820) | def _iterate(self, sample_list):
    method all_feature_names (line 1862) | def all_feature_names(self, friendly: bool = True) -> List[str]:
    method show_decision_tree (line 1870) | def show_decision_tree(self, tree = None, friendly: bool = True):
    method friendly_decision_tree (line 1875) | def friendly_decision_tree(self, tree = None):
  class Alhazen (line 1809) | class Alhazen(Alhazen):
    method __init__ (line 1749) | def __init__(self,
    method _setup (line 1768) | def _setup(self):
    method _add_new_data (line 1778) | def _add_new_data(self, exec_data, feature_data):
    method execute_samples (line 1791) | def execute_samples(self, sample_list = None):
    method run (line 1803) | def run(self):
    method all_trees (line 1810) | def all_trees(self, /, prune: bool = True):
    method last_tree (line 1816) | def last_tree(self, /, prune: bool = True):
    method _iterate (line 1820) | def _iterate(self, sample_list):
    method all_feature_names (line 1862) | def all_feature_names(self, friendly: bool = True) -> List[str]:
    method show_decision_tree (line 1870) | def show_decision_tree(self, tree = None, friendly: bool = True):
    method friendly_decision_tree (line 1875) | def friendly_decision_tree(self, tree = None):
  class Alhazen (line 1819) | class Alhazen(Alhazen):
    method __init__ (line 1749) | def __init__(self,
    method _setup (line 1768) | def _setup(self):
    method _add_new_data (line 1778) | def _add_new_data(self, exec_data, feature_data):
    method execute_samples (line 1791) | def execute_samples(self, sample_list = None):
    method run (line 1803) | def run(self):
    method all_trees (line 1810) | def all_trees(self, /, prune: bool = True):
    method last_tree (line 1816) | def last_tree(self, /, prune: bool = True):
    method _iterate (line 1820) | def _iterate(self, sample_list):
    method all_feature_names (line 1862) | def all_feature_names(self, friendly: bool = True) -> List[str]:
    method show_decision_tree (line 1870) | def show_decision_tree(self, tree = None, friendly: bool = True):
    method friendly_decision_tree (line 1875) | def friendly_decision_tree(self, tree = None):
  class Alhazen (line 1861) | class Alhazen(Alhazen):
    method __init__ (line 1749) | def __init__(self,
    method _setup (line 1768) | def _setup(self):
    method _add_new_data (line 1778) | def _add_new_data(self, exec_data, feature_data):
    method execute_samples (line 1791) | def execute_samples(self, sample_list = None):
    method run (line 1803) | def run(self):
    method all_trees (line 1810) | def all_trees(self, /, prune: bool = True):
    method last_tree (line 1816) | def last_tree(self, /, prune: bool = True):
    method _iterate (line 1820) | def _iterate(self, sample_list):
    method all_feature_names (line 1862) | def all_feature_names(self, friendly: bool = True) -> List[str]:
    method show_decision_tree (line 1870) | def show_decision_tree(self, tree = None, friendly: bool = True):
    method friendly_decision_tree (line 1875) | def friendly_decision_tree(self, tree = None):
  class Alhazen (line 1869) | class Alhazen(Alhazen):
    method __init__ (line 1749) | def __init__(self,
    method _setup (line 1768) | def _setup(self):
    method _add_new_data (line 1778) | def _add_new_data(self, exec_data, feature_data):
    method execute_samples (line 1791) | def execute_samples(self, sample_list = None):
    method run (line 1803) | def run(self):
    method all_trees (line 1810) | def all_trees(self, /, prune: bool = True):
    method last_tree (line 1816) | def last_tree(self, /, prune: bool = True):
    method _iterate (line 1820) | def _iterate(self, sample_list):
    method all_feature_names (line 1862) | def all_feature_names(self, friendly: bool = True) -> List[str]:
    method show_decision_tree (line 1870) | def show_decision_tree(self, tree = None, friendly: bool = True):
    method friendly_decision_tree (line 1875) | def friendly_decision_tree(self, tree = None):
  class Alhazen (line 1874) | class Alhazen(Alhazen):
    method __init__ (line 1749) | def __init__(self,
    method _setup (line 1768) | def _setup(self):
    method _add_new_data (line 1778) | def _add_new_data(self, exec_data, feature_data):
    method execute_samples (line 1791) | def execute_samples(self, sample_list = None):
    method run (line 1803) | def run(self):
    method all_trees (line 1810) | def all_trees(self, /, prune: bool = True):
    method last_tree (line 1816) | def last_tree(self, /, prune: bool = True):
    method _iterate (line 1820) | def _iterate(self, sample_list):
    method all_feature_names (line 1862) | def all_feature_names(self, friendly: bool = True) -> List[str]:
    method show_decision_tree (line 1870) | def show_decision_tree(self, tree = None, friendly: bool = True):
    method friendly_decision_tree (line 1875) | def friendly_decision_tree(self, tree = None):

FILE: docs/beta/code/Assertions.py
  function test_square_root (line 103) | def test_square_root() -> None:
  function my_own_assert (line 108) | def my_own_assert(cond: bool) -> None:
  function fun (line 183) | def fun() -> None:
  function square_root (line 208) | def square_root(x):  # type: ignore
  function square_root (line 216) | def square_root(x):  # type: ignore
  function square_root (line 251) | def square_root(x):  # type: ignore
  function square_root (line 273) | def square_root(x):  # type: ignore
  function square_root (line 282) | def square_root(x):  # type: ignore
  function square_root (line 287) | def square_root(x):  # type: ignore
  function remove_html_markup (line 331) | def remove_html_markup(s):  # type: ignore
  function remove_html_markup (line 351) | def remove_html_markup(s):  # type: ignore
  function some_obscure_function (line 394) | def some_obscure_function(x: int, y: int, z: int) -> int:
  class Time (line 441) | class Time:
    method __init__ (line 442) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method hours (line 448) | def hours(self) -> int:
    method minutes (line 451) | def minutes(self) -> int:
    method seconds (line 454) | def seconds(self) -> int:
    method __repr__ (line 458) | def __repr__(self) -> str:
    method __init__ (line 477) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 498) | def set_hours(self, hours: int) -> None:
    method repOK (line 538) | def repOK(self) -> bool:
    method __init__ (line 545) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 551) | def set_hours(self, hours: int) -> None:
    method repOK (line 563) | def repOK(self) -> bool:
    method seconds_since_midnight (line 581) | def seconds_since_midnight(self) -> int:
    method advance (line 584) | def advance(self, seconds_offset: int) -> None:
  class Time (line 447) | class Time(Time):
    method __init__ (line 442) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method hours (line 448) | def hours(self) -> int:
    method minutes (line 451) | def minutes(self) -> int:
    method seconds (line 454) | def seconds(self) -> int:
    method __repr__ (line 458) | def __repr__(self) -> str:
    method __init__ (line 477) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 498) | def set_hours(self, hours: int) -> None:
    method repOK (line 538) | def repOK(self) -> bool:
    method __init__ (line 545) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 551) | def set_hours(self, hours: int) -> None:
    method repOK (line 563) | def repOK(self) -> bool:
    method seconds_since_midnight (line 581) | def seconds_since_midnight(self) -> int:
    method advance (line 584) | def advance(self, seconds_offset: int) -> None:
  class Time (line 457) | class Time(Time):
    method __init__ (line 442) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method hours (line 448) | def hours(self) -> int:
    method minutes (line 451) | def minutes(self) -> int:
    method seconds (line 454) | def seconds(self) -> int:
    method __repr__ (line 458) | def __repr__(self) -> str:
    method __init__ (line 477) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 498) | def set_hours(self, hours: int) -> None:
    method repOK (line 538) | def repOK(self) -> bool:
    method __init__ (line 545) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 551) | def set_hours(self, hours: int) -> None:
    method repOK (line 563) | def repOK(self) -> bool:
    method seconds_since_midnight (line 581) | def seconds_since_midnight(self) -> int:
    method advance (line 584) | def advance(self, seconds_offset: int) -> None:
  class Time (line 476) | class Time(Time):
    method __init__ (line 442) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method hours (line 448) | def hours(self) -> int:
    method minutes (line 451) | def minutes(self) -> int:
    method seconds (line 454) | def seconds(self) -> int:
    method __repr__ (line 458) | def __repr__(self) -> str:
    method __init__ (line 477) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 498) | def set_hours(self, hours: int) -> None:
    method repOK (line 538) | def repOK(self) -> bool:
    method __init__ (line 545) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 551) | def set_hours(self, hours: int) -> None:
    method repOK (line 563) | def repOK(self) -> bool:
    method seconds_since_midnight (line 581) | def seconds_since_midnight(self) -> int:
    method advance (line 584) | def advance(self, seconds_offset: int) -> None:
  class Time (line 497) | class Time(Time):
    method __init__ (line 442) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method hours (line 448) | def hours(self) -> int:
    method minutes (line 451) | def minutes(self) -> int:
    method seconds (line 454) | def seconds(self) -> int:
    method __repr__ (line 458) | def __repr__(self) -> str:
    method __init__ (line 477) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 498) | def set_hours(self, hours: int) -> None:
    method repOK (line 538) | def repOK(self) -> bool:
    method __init__ (line 545) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 551) | def set_hours(self, hours: int) -> None:
    method repOK (line 563) | def repOK(self) -> bool:
    method seconds_since_midnight (line 581) | def seconds_since_midnight(self) -> int:
    method advance (line 584) | def advance(self, seconds_offset: int) -> None:
  class MyTime (line 509) | class MyTime(Time):
    method hours (line 511) | def hours(self) -> int:
    method hours (line 515) | def hours(self, new_hours: int) -> None:
  class Time (line 537) | class Time(Time):
    method __init__ (line 442) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method hours (line 448) | def hours(self) -> int:
    method minutes (line 451) | def minutes(self) -> int:
    method seconds (line 454) | def seconds(self) -> int:
    method __repr__ (line 458) | def __repr__(self) -> str:
    method __init__ (line 477) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 498) | def set_hours(self, hours: int) -> None:
    method repOK (line 538) | def repOK(self) -> bool:
    method __init__ (line 545) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 551) | def set_hours(self, hours: int) -> None:
    method repOK (line 563) | def repOK(self) -> bool:
    method seconds_since_midnight (line 581) | def seconds_since_midnight(self) -> int:
    method advance (line 584) | def advance(self, seconds_offset: int) -> None:
  class Time (line 544) | class Time(Time):
    method __init__ (line 442) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method hours (line 448) | def hours(self) -> int:
    method minutes (line 451) | def minutes(self) -> int:
    method seconds (line 454) | def seconds(self) -> int:
    method __repr__ (line 458) | def __repr__(self) -> str:
    method __init__ (line 477) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 498) | def set_hours(self, hours: int) -> None:
    method repOK (line 538) | def repOK(self) -> bool:
    method __init__ (line 545) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 551) | def set_hours(self, hours: int) -> None:
    method repOK (line 563) | def repOK(self) -> bool:
    method seconds_since_midnight (line 581) | def seconds_since_midnight(self) -> int:
    method advance (line 584) | def advance(self, seconds_offset: int) -> None:
  class Time (line 562) | class Time(Time):
    method __init__ (line 442) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method hours (line 448) | def hours(self) -> int:
    method minutes (line 451) | def minutes(self) -> int:
    method seconds (line 454) | def seconds(self) -> int:
    method __repr__ (line 458) | def __repr__(self) -> str:
    method __init__ (line 477) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 498) | def set_hours(self, hours: int) -> None:
    method repOK (line 538) | def repOK(self) -> bool:
    method __init__ (line 545) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 551) | def set_hours(self, hours: int) -> None:
    method repOK (line 563) | def repOK(self) -> bool:
    method seconds_since_midnight (line 581) | def seconds_since_midnight(self) -> int:
    method advance (line 584) | def advance(self, seconds_offset: int) -> None:
  class Time (line 580) | class Time(Time):
    method __init__ (line 442) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method hours (line 448) | def hours(self) -> int:
    method minutes (line 451) | def minutes(self) -> int:
    method seconds (line 454) | def seconds(self) -> int:
    method __repr__ (line 458) | def __repr__(self) -> str:
    method __init__ (line 477) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 498) | def set_hours(self, hours: int) -> None:
    method repOK (line 538) | def repOK(self) -> bool:
    method __init__ (line 545) | def __init__(self, hours: int = 0, minutes: int = 0, seconds: int = 0)...
    method set_hours (line 551) | def set_hours(self, hours: int) -> None:
    method repOK (line 563) | def repOK(self) -> bool:
    method seconds_since_midnight (line 581) | def seconds_since_midnight(self) -> int:
    method advance (line 584) | def advance(self, seconds_offset: int) -> None:
  class BetterTime (line 592) | class BetterTime(Time):
    method advance (line 593) | def advance(self, seconds_offset: int) -> None:
  class RedBlackTree (line 610) | class RedBlackTree:
    method redNodesHaveOnlyBlackChildren (line 622) | def redNodesHaveOnlyBlackChildren(self) -> bool:
    method equalNumberOfBlackNodesOnSubtrees (line 625) | def equalNumberOfBlackNodesOnSubtrees(self) -> bool:
    method treeIsAcyclic (line 628) | def treeIsAcyclic(self) -> bool:
    method parentsAreConsistent (line 631) | def parentsAreConsistent(self) -> bool:
    method __init__ (line 634) | def __init__(self) -> None:
    method repOK (line 640) | def repOK(self) -> bool:
    method rootHasNoParent (line 650) | def rootHasNoParent(self) -> bool:
    method rootIsBlack (line 653) | def rootIsBlack(self) -> bool:
    method insert (line 660) | def insert(self, item: Any) -> None:
    method delete (line 665) | def delete(self, item: Any) -> None:
    method __init__ (line 671) | def __init__(self, checkRepOK: bool = False) -> None:
    method repOK (line 675) | def repOK(self) -> bool:
  class RedBlackNode (line 615) | class RedBlackNode:
    method __init__ (line 616) | def __init__(self) -> None:
  class RedBlackTree (line 621) | class RedBlackTree(RedBlackTree):
    method redNodesHaveOnlyBlackChildren (line 622) | def redNodesHaveOnlyBlackChildren(self) -> bool:
    method equalNumberOfBlackNodesOnSubtrees (line 625) | def equalNumberOfBlackNodesOnSubtrees(self) -> bool:
    method treeIsAcyclic (line 628) | def treeIsAcyclic(self) -> bool:
    method parentsAreConsistent (line 631) | def parentsAreConsistent(self) -> bool:
    method __init__ (line 634) | def __init__(self) -> None:
    method repOK (line 640) | def repOK(self) -> bool:
    method rootHasNoParent (line 650) | def rootHasNoParent(self) -> bool:
    method rootIsBlack (line 653) | def rootIsBlack(self) -> bool:
    method insert (line 660) | def insert(self, item: Any) -> None:
    method delete (line 665) | def delete(self, item: Any) -> None:
    method __init__ (line 671) | def __init__(self, checkRepOK: bool = False) -> None:
    method repOK (line 675) | def repOK(self) -> bool:
  class RedBlackTree (line 639) | class RedBlackTree(RedBlackTree):
    method redNodesHaveOnlyBlackChildren (line 622) | def redNodesHaveOnlyBlackChildren(self) -> bool:
    method equalNumberOfBlackNodesOnSubtrees (line 625) | def equalNumberOfBlackNodesOnSubtrees(self) -> bool:
    method treeIsAcyclic (line 628) | def treeIsAcyclic(self) -> bool:
    method parentsAreConsistent (line 631) | def parentsAreConsistent(self) -> bool:
    method __init__ (line 634) | def __init__(self) -> None:
    method repOK (line 640) | def repOK(self) -> bool:
    method rootHasNoParent (line 650) | def rootHasNoParent(self) -> bool:
    method rootIsBlack (line 653) | def rootIsBlack(self) -> bool:
    method insert (line 660) | def insert(self, item: Any) -> None:
    method delete (line 665) | def delete(self, item: Any) -> None:
    method __init__ (line 671) | def __init__(self, checkRepOK: bool = False) -> None:
    method repOK (line 675) | def repOK(self) -> bool:
  class RedBlackTree (line 649) | class RedBlackTree(RedBlackTree):
    method redNodesHaveOnlyBlackChildren (line 622) | def redNodesHaveOnlyBlackChildren(self) -> bool:
    method equalNumberOfBlackNodesOnSubtrees (line 625) | def equalNumberOfBlackNodesOnSubtrees(self) -> bool:
    method treeIsAcyclic (line 628) | def treeIsAcyclic(self) -> bool:
    method parentsAreConsistent (line 631) | def parentsAreConsistent(self) -> bool:
    method __init__ (line 634) | def __init__(self) -> None:
    method repOK (line 640) | def repOK(self) -> bool:
    method rootHasNoParent (line 650) | def rootHasNoParent(self) -> bool:
    method rootIsBlack (line 653) | def rootIsBlack(self) -> bool:
    method insert (line 660) | def insert(self, item: Any) -> None:
    method delete (line 665) | def delete(self, item: Any) -> None:
    method __init__ (line 671) | def __init__(self, checkRepOK: bool = False) -> None:
    method repOK (line 675) | def repOK(self) -> bool:
  class RedBlackTree (line 659) | class RedBlackTree(RedBlackTree):
    method redNodesHaveOnlyBlackChildren (line 622) | def redNodesHaveOnlyBlackChildren(self) -> bool:
    method equalNumberOfBlackNodesOnSubtrees (line 625) | def equalNumberOfBlackNodesOnSubtrees(self) -> bool:
    method treeIsAcyclic (line 628) | def treeIsAcyclic(self) -> bool:
    method parentsAreConsistent (line 631) | def parentsAreConsistent(self) -> bool:
    method __init__ (line 634) | def __init__(self) -> None:
    method repOK (line 640) | def repOK(self) -> bool:
    method rootHasNoParent (line 650) | def rootHasNoParent(self) -> bool:
    method rootIsBlack (line 653) | def rootIsBlack(self) -> bool:
    method insert (line 660) | def insert(self, item: Any) -> None:
    method delete (line 665) | def delete(self, item: Any) -> None:
    method __init__ (line 671) | def __init__(self, checkRepOK: bool = False) -> None:
    method repOK (line 675) | def repOK(self) -> bool:
  class RedBlackTree (line 670) | class RedBlackTree(RedBlackTree):
    method redNodesHaveOnlyBlackChildren (line 622) | def redNodesHaveOnlyBlackChildren(self) -> bool:
    method equalNumberOfBlackNodesOnSubtrees (line 625) | def equalNumberOfBlackNodesOnSubtrees(self) -> bool:
    method treeIsAcyclic (line 628) | def treeIsAcyclic(self) -> bool:
    method parentsAreConsistent (line 631) | def parentsAreConsistent(self) -> bool:
    method __init__ (line 634) | def __init__(self) -> None:
    method repOK (line 640) | def repOK(self) -> bool:
    method rootHasNoParent (line 650) | def rootHasNoParent(self) -> bool:
    method rootIsBlack (line 653) | def rootIsBlack(self) -> bool:
    method insert (line 660) | def insert(self, item: Any) -> None:
    method delete (line 665) | def delete(self, item: Any) -> None:
    method __init__ (line 671) | def __init__(self, checkRepOK: bool = False) -> None:
    method repOK (line 675) | def repOK(self) -> bool:
  class Memory (line 733) | class Memory:
    method __init__ (line 734) | def __init__(self, size: int = 10) -> None:
    method read (line 738) | def read(self, address: int) -> Any:
    method write (line 741) | def write(self, address: int, item: Any) -> None:
    method __repr__ (line 744) | def __repr__(self) -> str:
    method __getitem__ (line 763) | def __getitem__(self, address: int) -> Any:
    method __setitem__ (line 766) | def __setitem__(self, address: int, item: Any) -> None:
    method show_header (line 783) | def show_header(self) -> str:
    method show_sep (line 789) | def show_sep(self) -> str:
    method show_contents (line 795) | def show_contents(self) -> str:
    method __repr__ (line 805) | def __repr__(self) -> str:
    method _repr_markdown_ (line 808) | def _repr_markdown_(self) -> str:
  class Memory (line 762) | class Memory(Memory):
    method __init__ (line 734) | def __init__(self, size: int = 10) -> None:
    method read (line 738) | def read(self, address: int) -> Any:
    method write (line 741) | def write(self, address: int, item: Any) -> None:
    method __repr__ (line 744) | def __repr__(self) -> str:
    method __getitem__ (line 763) | def __getitem__(self, address: int) -> Any:
    method __setitem__ (line 766) | def __setitem__(self, address: int, item: Any) -> None:
    method show_header (line 783) | def show_header(self) -> str:
    method show_sep (line 789) | def show_sep(self) -> str:
    method show_contents (line 795) | def show_contents(self) -> str:
    method __repr__ (line 805) | def __repr__(self) -> str:
    method _repr_markdown_ (line 808) | def _repr_markdown_(self) -> str:
  class Memory (line 782) | class Memory(Memory):
    method __init__ (line 734) | def __init__(self, size: int = 10) -> None:
    method read (line 738) | def read(self, address: int) -> Any:
    method write (line 741) | def write(self, address: int, item: Any) -> None:
    method __repr__ (line 744) | def __repr__(self) -> str:
    method __getitem__ (line 763) | def __getitem__(self, address: int) -> Any:
    method __setitem__ (line 766) | def __setitem__(self, address: int, item: Any) -> None:
    method show_header (line 783) | def show_header(self) -> str:
    method show_sep (line 789) | def show_sep(self) -> str:
    method show_contents (line 795) | def show_contents(self) -> str:
    method __repr__ (line 805) | def __repr__(self) -> str:
    method _repr_markdown_ (line 808) | def _repr_markdown_(self) -> str:
  class DynamicMemory (line 868) | class DynamicMemory(Memory):
    method __init__ (line 872) | def __init__(self, *args: Any) -> None:
    method allocate (line 881) | def allocate(self, block_size: int) -> int:
    method free (line 914) | def free(self, base: int) -> None:
    method show_header (line 921) | def show_header(self) -> str:
  class DynamicMemory (line 920) | class DynamicMemory(DynamicMemory):
    method __init__ (line 872) | def __init__(self, *args: Any) -> None:
    method allocate (line 881) | def allocate(self, block_size: int) -> int:
    method free (line 914) | def free(self, base: int) -> None:
    method show_header (line 921) | def show_header(self) -> str:
  class ManagedMemory (line 1051) | class ManagedMemory(DynamicMemory):
    method __init__ (line 1052) | def __init__(self, *args: Any) -> None:
    method write (line 1058) | def write(self, address: int, item: Any) -> None:
    method read (line 1064) | def read(self, address: int) -> Any:
    method allocate (line 1072) | def allocate(self, block_size: int) -> int:
    method free (line 1079) | def free(self, base: int) -> None:
    method show_contents (line 1089) | def show_contents(self) -> str:
    method show_allocated (line 1094) | def show_allocated(self) -> str:
    method show_initialized (line 1103) | def show_initialized(self) -> str:
  class ManagedMemory (line 1057) | class ManagedMemory(ManagedMemory):
    method __init__ (line 1052) | def __init__(self, *args: Any) -> None:
    method write (line 1058) | def write(self, address: int, item: Any) -> None:
    method read (line 1064) | def read(self, address: int) -> Any:
    method allocate (line 1072) | def allocate(self, block_size: int) -> int:
    method free (line 1079) | def free(self, base: int) -> None:
    method show_contents (line 1089) | def show_contents(self) -> str:
    method show_allocated (line 1094) | def show_allocated(self) -> str:
    method show_initialized (line 1103) | def show_initialized(self) -> str:
  class ManagedMemory (line 1071) | class ManagedMemory(ManagedMemory):
    method __init__ (line 1052) | def __init__(self, *args: Any) -> None:
    method write (line 1058) | def write(self, address: int, item: Any) -> None:
    method read (line 1064) | def read(self, address: int) -> Any:
    method allocate (line 1072) | def allocate(self, block_size: int) -> int:
    method free (line 1079) | def free(self, base: int) -> None:
    method show_contents (line 1089) | def show_contents(self) -> str:
    method show_allocated (line 1094) | def show_allocated(self) -> str:
    method show_initialized (line 1103) | def show_initialized(self) -> str:
  class ManagedMemory (line 1088) | class ManagedMemory(ManagedMemory):
    method __init__ (line 1052) | def __init__(self, *args: Any) -> None:
    method write (line 1058) | def write(self, address: int, item: Any) -> None:
    method read (line 1064) | def read(self, address: int) -> Any:
    method allocate (line 1072) | def allocate(self, block_size: int) -> int:
    method free (line 1079) | def free(self, base: int) -> None:
    method show_contents (line 1089) | def show_contents(self) -> str:
    method show_allocated (line 1094) | def show_allocated(self) -> str:
    method show_initialized (line 1103) | def show_initialized(self) -> str:
  class Storage (line 1321) | class Storage:
    method __init__ (line 1322) | def __init__(self, dbname: str) -> None:
    method __enter__ (line 1325) | def __enter__(self) -> Any:
    method __exit__ (line 1329) | def __exit__(self, exc_tp: Type, exc_value: BaseException,
    method __getitem__ (line 1334) | def __getitem__(self, key: str) -> Any:
    method __setitem__ (line 1337) | def __setitem__(self, key: str, value: Any) -> None:
    method __setitem__ (line 1352) | def __setitem__(self, key: str, value: Any) -> None:
  class Storage (line 1351) | class Storage(Storage):
    method __init__ (line 1322) | def __init__(self, dbname: str) -> None:
    method __enter__ (line 1325) | def __enter__(self) -> Any:
    method __exit__ (line 1329) | def __exit__(self, exc_tp: Type, exc_value: BaseException,
    method __getitem__ (line 1334) | def __getitem__(self, key: str) -> Any:
    method __setitem__ (line 1337) | def __setitem__(self, key: str, value: Any) -> None:
    method __setitem__ (line 1352) | def __setitem__(self, key: str, value: Any) -> None:
  class ShadowStorage (line 1363) | class ShadowStorage:
    method __init__ (line 1364) | def __init__(self, dbname: str) -> None:
    method __enter__ (line 1367) | def __enter__(self) -> Any:
    method __exit__ (line 1375) | def __exit__(self, exc_tp: Type, exc_value: BaseException,
    method __getitem__ (line 1380) | def __getitem__(self, key: str) -> Any:
    method __setitem__ (line 1384) | def __setitem__(self, key: str, value: Any) -> None:
    method repOK (line 1389) | def repOK(self) -> bool:
  function my_square_root (line 1421) | def my_square_root(x):  # type: ignore

FILE: docs/beta/code/ChangeCounter.py
  function current_repo (line 104) | def current_repo() -> Optional[str]:
  class ChangeCounter (line 210) | class ChangeCounter:
    method __init__ (line 213) | def __init__(self, repo: str, *,
    method mine (line 250) | def mine(self, **kwargs: Any) -> None:
    method mine_commit (line 264) | def mine_commit(self, commit: Commit) -> None:
    method include (line 274) | def include(self, m: ModifiedFile) -> bool:
    method update_stats (line 283) | def update_stats(self, m: ModifiedFile) -> None:
    method update_size (line 299) | def update_size(self, node: Tuple, size: int) -> None:
    method update_changes (line 307) | def update_changes(self, node: Tuple, commit_msg: str) -> None:
    method update_elems (line 317) | def update_elems(self, node: Tuple, m: ModifiedFile) -> None:
    method map_node_sizes (line 396) | def map_node_sizes(self,scale: str = 'log') -> \
    method map_node_color (line 422) | def map_node_color(self, node: Node) -> Optional[int]:
    method map_node_text (line 430) | def map_node_text(self, node: Node) -> Optional[str]:
    method map_hoverinfo (line 439) | def map_hoverinfo(self) -> str:
    method map_colorscale (line 446) | def map_colorscale(self) -> str:
    method map (line 453) | def map(self) -> go.Figure:
  class ChangeCounter (line 249) | class ChangeCounter(ChangeCounter):
    method __init__ (line 213) | def __init__(self, repo: str, *,
    method mine (line 250) | def mine(self, **kwargs: Any) -> None:
    method mine_commit (line 264) | def mine_commit(self, commit: Commit) -> None:
    method include (line 274) | def include(self, m: ModifiedFile) -> bool:
    method update_stats (line 283) | def update_stats(self, m: ModifiedFile) -> None:
    method update_size (line 299) | def update_size(self, node: Tuple, size: int) -> None:
    method update_changes (line 307) | def update_changes(self, node: Tuple, commit_msg: str) -> None:
    method update_elems (line 317) | def update_elems(self, node: Tuple, m: ModifiedFile) -> None:
    method map_node_sizes (line 396) | def map_node_sizes(self,scale: str = 'log') -> \
    method map_node_color (line 422) | def map_node_color(self, node: Node) -> Optional[int]:
    method map_node_text (line 430) | def map_node_text(self, node: Node) -> Optional[str]:
    method map_hoverinfo (line 439) | def map_hoverinfo(self) -> str:
    method map_colorscale (line 446) | def map_colorscale(self) -> str:
    method map (line 453) | def map(self) -> go.Figure:
  class ChangeCounter (line 273) | class ChangeCounter(ChangeCounter):
    method __init__ (line 213) | def __init__(self, repo: str, *,
    method mine (line 250) | def mine(self, **kwargs: Any) -> None:
    method mine_commit (line 264) | def mine_commit(self, commit: Commit) -> None:
    method include (line 274) | def include(self, m: ModifiedFile) -> bool:
    method update_stats (line 283) | def update_stats(self, m: ModifiedFile) -> None:
    method update_size (line 299) | def update_size(self, node: Tuple, size: int) -> None:
    method update_changes (line 307) | def update_changes(self, node: Tuple, commit_msg: str) -> None:
    method update_elems (line 317) | def update_elems(self, node: Tuple, m: ModifiedFile) -> None:
    method map_node_sizes (line 396) | def map_node_sizes(self,scale: str = 'log') -> \
    method map_node_color (line 422) | def map_node_color(self, node: Node) -> Optional[int]:
    method map_node_text (line 430) | def map_node_text(self, node: Node) -> Optional[str]:
    method map_hoverinfo (line 439) | def map_hoverinfo(self) -> str:
    method map_colorscale (line 446) | def map_colorscale(self) -> str:
    method map (line 453) | def map(self) -> go.Figure:
  class ChangeCounter (line 282) | class ChangeCounter(ChangeCounter):
    method __init__ (line 213) | def __init__(self, repo: str, *,
    method mine (line 250) | def mine(self, **kwargs: Any) -> None:
    method mine_commit (line 264) | def mine_commit(self, commit: Commit) -> None:
    method include (line 274) | def include(self, m: ModifiedFile) -> bool:
    method update_stats (line 283) | def update_stats(self, m: ModifiedFile) -> None:
    method update_size (line 299) | def update_size(self, node: Tuple, size: int) -> None:
    method update_changes (line 307) | def update_changes(self, node: Tuple, commit_msg: str) -> None:
    method update_elems (line 317) | def update_elems(self, node: Tuple, m: ModifiedFile) -> None:
    method map_node_sizes (line 396) | def map_node_sizes(self,scale: str = 'log') -> \
    method map_node_color (line 422) | def map_node_color(self, node: Node) -> Optional[int]:
    method map_node_text (line 430) | def map_node_text(self, node: Node) -> Optional[str]:
    method map_hoverinfo (line 439) | def map_hoverinfo(self) -> str:
    method map_colorscale (line 446) | def map_colorscale(self) -> str:
    method map (line 453) | def map(self) -> go.Figure:
  class ChangeCounter (line 298) | class ChangeCounter(ChangeCounter):
    method __init__ (line 213) | def __init__(self, repo: str, *,
    method mine (line 250) | def mine(self, **kwargs: Any) -> None:
    method mine_commit (line 264) | def mine_commit(self, commit: Commit) -> None:
    method include (line 274) | def include(self, m: ModifiedFile) -> bool:
    method update_stats (line 283) | def update_stats(self, m: ModifiedFile) -> None:
    method update_size (line 299) | def update_size(self, node: Tuple, size: int) -> None:
    method update_changes (line 307) | def update_changes(self, node: Tuple, commit_msg: str) -> None:
    method update_elems (line 317) | def update_elems(self, node: Tuple, m: ModifiedFile) -> None:
    method map_node_sizes (line 396) | def map_node_sizes(self,scale: str = 'log') -> \
    method map_node_color (line 422) | def map_node_color(self, node: Node) -> Optional[int]:
    method map_node_text (line 430) | def map_node_text(self, node: Node) -> Optional[str]:
    method map_hoverinfo (line 439) | def map_hoverinfo(self) -> str:
    method map_colorscale (line 446) | def map_colorscale(self) -> str:
    method map (line 453) | def map(self) -> go.Figure:
  class ChangeCounter (line 306) | class ChangeCounter(ChangeCounter):
    method __init__ (line 213) | def __init__(self, repo: str, *,
    method mine (line 250) | def mine(self, **kwargs: Any) -> None:
    method mine_commit (line 264) | def mine_commit(self, commit: Commit) -> None:
    method include (line 274) | def include(self, m: ModifiedFile) -> bool:
    method update_stats (line 283) | def update_stats(self, m: ModifiedFile) -> None:
    method update_size (line 299) | def update_size(self, node: Tuple, size: int) -> None:
    method update_changes (line 307) | def update_changes(self, node: Tuple, commit_msg: str) -> None:
    method update_elems (line 317) | def update_elems(self, node: Tuple, m: ModifiedFile) -> None:
    method map_node_sizes (line 396) | def map_node_sizes(self,scale: str = 'log') -> \
    method map_node_color (line 422) | def map_node_color(self, node: Node) -> Optional[int]:
    method map_node_text (line 430) | def map_node_text(self, node: Node) -> Optional[str]:
    method map_hoverinfo (line 439) | def map_hoverinfo(self) -> str:
    method map_colorscale (line 446) | def map_colorscale(self) -> str:
    method map (line 453) | def map(self) -> go.Figure:
  class ChangeCounter (line 316) | class ChangeCounter(ChangeCounter):
    method __init__ (line 213) | def __init__(self, repo: str, *,
    method mine (line 250) | def mine(self, **kwargs: Any) -> None:
    method mine_commit (line 264) | def mine_commit(self, commit: Commit) -> None:
    method include (line 274) | def include(self, m: ModifiedFile) -> bool:
    method update_stats (line 283) | def update_stats(self, m: ModifiedFile) -> None:
    method update_size (line 299) | def update_size(self, node: Tuple, size: int) -> None:
    method update_changes (line 307) | def update_changes(self, node: Tuple, commit_msg: str) -> None:
    method update_elems (line 317) | def update_elems(self, node: Tuple, m: ModifiedFile) -> None:
    method map_node_sizes (line 396) | def map_node_sizes(self,scale: str = 'log') -> \
    method map_node_color (line 422) | def map_node_color(self, node: Node) -> Optional[int]:
    method map_node_text (line 430) | def map_node_text(self, node: Node) -> Optional[str]:
    method map_hoverinfo (line 439) | def map_hoverinfo(self) -> str:
    method map_colorscale (line 446) | def map_colorscale(self) -> str:
    method map (line 453) | def map(self) -> go.Figure:
  function debuggingbook_change_counter (line 333) | def debuggingbook_change_counter(
  class ChangeCounter (line 395) | class ChangeCounter(ChangeCounter):
    method __init__ (line 213) | def __init__(self, repo: str, *,
    method mine (line 250) | def mine(self, **kwargs: Any) -> None:
    method mine_commit (line 264) | def mine_commit(self, commit: Commit) -> None:
    method include (line 274) | def include(self, m: ModifiedFile) -> bool:
    method update_stats (line 283) | def update_stats(self, m: ModifiedFile) -> None:
    method update_size (line 299) | def update_size(self, node: Tuple, size: int) -> None:
    method update_changes (line 307) | def update_changes(self, node: Tuple, commit_msg: str) -> None:
    method update_elems (line 317) | def update_elems(self, node: Tuple, m: ModifiedFile) -> None:
    method map_node_sizes (line 396) | def map_node_sizes(self,scale: str = 'log') -> \
    method map_node_color (line 422) | def map_node_color(self, node: Node) -> Optional[int]:
    method map_node_text (line 430) | def map_node_text(self, node: Node) -> Optional[str]:
    method map_hoverinfo (line 439) | def map_hoverinfo(self) -> str:
    method map_colorscale (line 446) | def map_colorscale(self) -> str:
    method map (line 453) | def map(self) -> go.Figure:
  class ChangeCounter (line 421) | class ChangeCounter(ChangeCounter):
    method __init__ (line 213) | def __init__(self, repo: str, *,
    method mine (line 250) | def mine(self, **kwargs: Any) -> None:
    method mine_commit (line 264) | def mine_commit(self, commit: Commit) -> None:
    method include (line 274) | def include(self, m: ModifiedFile) -> bool:
    method update_stats (line 283) | def update_stats(self, m: ModifiedFile) -> None:
    method update_size (line 299) | def update_size(self, node: Tuple, size: int) -> None:
    method update_changes (line 307) | def update_changes(self, node: Tuple, commit_msg: str) -> None:
    method update_elems (line 317) | def update_elems(self, node: Tuple, m: ModifiedFile) -> None:
    method map_node_sizes (line 396) | def map_node_sizes(self,scale: str = 'log') -> \
    method map_node_color (line 422) | def map_node_color(self, node: Node) -> Optional[int]:
    method map_node_text (line 430) | def map_node_text(self, node: Node) -> Optional[str]:
    method map_hoverinfo (line 439) | def map_hoverinfo(self) -> str:
    method map_colorscale (line 446) | def map_colorscale(self) -> str:
    method map (line 453) | def map(self) -> go.Figure:
  class ChangeCounter (line 429) | class ChangeCounter(ChangeCounter):
    method __init__ (line 213) | def __init__(self, repo: str, *,
    method mine (line 250) | def mine(self, **kwargs: Any) -> None:
    method mine_commit (line 264) | def mine_commit(self, commit: Commit) -> None:
    method include (line 274) | def include(self, m: ModifiedFile) -> bool:
    method update_stats (line 283) | def update_stats(self, m: ModifiedFile) -> None:
    method update_size (line 299) | def update_size(self, node: Tuple, size: int) -> None:
    method update_changes (line 307) | def update_changes(self, node: Tuple, commit_msg: str) -> None:
    method update_elems (line 317) | def update_elems(self, node: Tuple, m: ModifiedFile) -> None:
    method map_node_sizes (line 396) | def map_node_sizes(self,scale: str = 'log') -> \
    method map_node_color (line 422) | def map_node_color(self, node: Node) -> Optional[int]:
    method map_node_text (line 430) | def map_node_text(self, node: Node) -> Optional[str]:
    method map_hoverinfo (line 439) | def map_hoverinfo(self) -> str:
    method map_colorscale (line 446) | def map_colorscale(self) -> str:
    method map (line 453) | def map(self) -> go.Figure:
  class ChangeCounter (line 438) | class ChangeCounter(ChangeCounter):
    method __init__ (line 213) | def __init__(self, repo: str, *,
    method mine (line 250) | def mine(self, **kwargs: Any) -> None:
    method mine_commit (line 264) | def mine_commit(self, commit: Commit) -> None:
    method include (line 274) | def include(self, m: ModifiedFile) -> bool:
    method update_stats (line 283) | def update_stats(self, m: ModifiedFile) -> None:
    method update_size (line 299) | def update_size(self, node: Tuple, size: int) -> None:
    method update_changes (line 307) | def update_changes(self, node: Tuple, commit_msg: str) -> None:
    method update_elems (line 317) | def update_elems(self, node: Tuple, m: ModifiedFile) -> None:
    method map_node_sizes (line 396) | def map_node_sizes(self,scale: str = 'log') -> \
    method map_node_color (line 422) | def map_node_color(self, node: Node) -> Optional[int]:
    method map_node_text (line 430) | def map_node_text(self, node: Node) -> Optional[str]:
    method map_hoverinfo (line 439) | def map_hoverinfo(self) -> str:
    method map_colorscale (line 446) | def map_colorscale(self) -> str:
    method map (line 453) | def map(self) -> go.Figure:
  class ChangeCounter (line 452) | class ChangeCounter(ChangeCounter):
    method __init__ (line 213) | def __init__(self, repo: str, *,
    method mine (line 250) | def mine(self, **kwargs: Any) -> None:
    method mine_commit (line 264) | def mine_commit(self, commit: Commit) -> None:
    method include (line 274) | def include(self, m: ModifiedFile) -> bool:
    method update_stats (line 283) | def update_stats(self, m: ModifiedFile) -> None:
    method update_size (line 299) | def update_size(self, node: Tuple, size: int) -> None:
    method update_changes (line 307) | def update_changes(self, node: Tuple, commit_msg: str) -> None:
    method update_elems (line 317) | def update_elems(self, node: Tuple, m: ModifiedFile) -> None:
    method map_node_sizes (line 396) | def map_node_sizes(self,scale: str = 'log') -> \
    method map_node_color (line 422) | def map_node_color(self, node: Node) -> Optional[int]:
    method map_node_text (line 430) | def map_node_text(self, node: Node) -> Optional[str]:
    method map_hoverinfo (line 439) | def map_hoverinfo(self) -> str:
    method map_colorscale (line 446) | def map_colorscale(self) -> str:
    method map (line 453) | def map(self) -> go.Figure:
  class FixCounter (line 507) | class FixCounter(ChangeCounter):
    method include (line 513) | def include(self, m: ModifiedFile) -> bool:
    method map_node_text (line 518) | def map_node_text(self, node: Node) -> str:
    method map_hoverinfo (line 521) | def map_hoverinfo(self) -> str:
  class FixCounter (line 517) | class FixCounter(FixCounter):
    method include (line 513) | def include(self, m: ModifiedFile) -> bool:
    method map_node_text (line 518) | def map_node_text(self, node: Node) -> str:
    method map_hoverinfo (line 521) | def map_hoverinfo(self) -> str:
  function rxdelim (line 596) | def rxdelim(content: str) -> Tuple[Optional[Pattern], Optional[Pattern]]:
  function elem_mapping (line 610) | def elem_mapping(content: str, log: bool = False) -> Mapping:
  function changed_elems_by_mapping (line 683) | def changed_elems_by_mapping(mapping: Mapping, start: int, length: int =...
  function elem_size (line 700) | def elem_size(elem: str, source: str) -> int:
  function changed_elems (line 723) | def changed_elems(old_source: str, new_source: str) -> Set[str]:
  class FineChangeCounter (line 776) | class FineChangeCounter(ChangeCounter):
    method update_elems (line 779) | def update_elems(self, node: Node, m: ModifiedFile) -> None:
  class FineFixCounter (line 857) | class FineFixCounter(FixCounter, FineChangeCounter):

FILE: docs/beta/code/ChangeDebugger.py
  function graph (line 110) | def graph(comment: str = "default") -> Digraph:
  function display_versions (line 128) | def display_versions(outcomes: Dict[int, str]) -> Digraph:
  function remove_html_markup (line 200) | def remove_html_markup(s):  # type: ignore
  function write_source (line 216) | def write_source(fun: Callable, filename: Optional[str] = None) -> None:
  function remove_html_markup (line 236) | def remove_html_markup(s):  # type: ignore
  function remove_html_markup (line 271) | def remove_html_markup(s):  # type: ignore
  function remove_html_markup (line 297) | def remove_html_markup(s):  # type: ignore
  function remove_html_markup (line 321) | def remove_html_markup(s):  # type: ignore
  function remove_html_markup (line 347) | def remove_html_markup(s):  # type: ignore
  function remove_html_markup (line 372) | def remove_html_markup(s):  # type: ignore
  function remove_html_markup (line 403) | def remove_html_markup(s):  # type: ignore
  function get_output (line 453) | def get_output(command: List[str]) -> str:
  function diff (line 656) | def diff(s1: str, s2: str, mode: str = 'lines') -> List[patch_obj]:
  function patch_string (line 686) | def patch_string(p: patch_obj) -> str:
  function print_patch (line 689) | def print_patch(p: patch_obj) -> None:
  function patch (line 697) | def patch(text: str, patches: List[patch_obj]) -> str:
  function test_remove_html_markup_patches (line 739) | def test_remove_html_markup_patches(patches: patch_obj) -> None:
  class ChangeDebugger (line 805) | class ChangeDebugger(CallCollector):
    method __init__ (line 806) | def __init__(self, pass_source: str, fail_source: str, **ddargs: Any) ...
    method pass_source (line 818) | def pass_source(self) -> str:
    method fail_source (line 822) | def fail_source(self) -> str:
    method patches (line 826) | def patches(self) -> List[patch_obj]:
    method test_patches (line 851) | def test_patches(self, patches: List[patch_obj]) -> None:
    method __enter__ (line 857) | def __enter__(self) -> Any:
    method min_patches (line 874) | def min_patches(self) -> Tuple[List[patch_obj], List[patch_obj], List[...
    method __repr__ (line 894) | def __repr__(self) -> str:
    method after_collection (line 936) | def after_collection(self) -> None:
  function test_remove_html_markup (line 830) | def test_remove_html_markup() -> None:
  class ChangeDebugger (line 850) | class ChangeDebugger(ChangeDebugger):
    method __init__ (line 806) | def __init__(self, pass_source: str, fail_source: str, **ddargs: Any) ...
    method pass_source (line 818) | def pass_source(self) -> str:
    method fail_source (line 822) | def fail_source(self) -> str:
    method patches (line 826) | def patches(self) -> List[patch_obj]:
    method test_patches (line 851) | def test_patches(self, patches: List[patch_obj]) -> None:
    method __enter__ (line 857) | def __enter__(self) -> Any:
    method min_patches (line 874) | def min_patches(self) -> Tuple[List[patch_obj], List[patch_obj], List[...
    method __repr__ (line 894) | def __repr__(self) -> str:
    method after_collection (line 936) | def after_collection(self) -> None:
  class ChangeDebugger (line 856) | class ChangeDebugger(ChangeDebugger):
    method __init__ (line 806) | def __init__(self, pass_source: str, fail_source: str, **ddargs: Any) ...
    method pass_source (line 818) | def pass_source(self) -> str:
    method fail_source (line 822) | def fail_source(self) -> str:
    method patches (line 826) | def patches(self) -> List[patch_obj]:
    method test_patches (line 851) | def test_patches(self, patches: List[patch_obj]) -> None:
    method __enter__ (line 857) | def __enter__(self) -> Any:
    method min_patches (line 874) | def min_patches(self) -> Tuple[List[patch_obj], List[patch_obj], List[...
    method __repr__ (line 894) | def __repr__(self) -> str:
    method after_collection (line 936) | def after_collection(self) -> None:
  class ChangeDebugger (line 873) | class ChangeDebugger(ChangeDebugger):
    method __init__ (line 806) | def __init__(self, pass_source: str, fail_source: str, **ddargs: Any) ...
    method pass_source (line 818) | def pass_source(self) -> str:
    method fail_source (line 822) | def fail_source(self) -> str:
    method patches (line 826) | def patches(self) -> List[patch_obj]:
    method test_patches (line 851) | def test_patches(self, patches: List[patch_obj]) -> None:
    method __enter__ (line 857) | def __enter__(self) -> Any:
    method min_patches (line 874) | def min_patches(self) -> Tuple[List[patch_obj], List[patch_obj], List[...
    method __repr__ (line 894) | def __repr__(self) -> str:
    method after_collection (line 936) | def after_collection(self) -> None:
  class ChangeDebugger (line 893) | class ChangeDebugger(ChangeDebugger):
    method __init__ (line 806) | def __init__(self, pass_source: str, fail_source: str, **ddargs: Any) ...
    method pass_source (line 818) | def pass_source(self) -> str:
    method fail_source (line 822) | def fail_source(self) -> str:
    method patches (line 826) | def patches(self) -> List[patch_obj]:
    method test_patches (line 851) | def test_patches(self, patches: List[patch_obj]) -> None:
    method __enter__ (line 857) | def __enter__(self) -> Any:
    method min_patches (line 874) | def min_patches(self) -> Tuple[List[patch_obj], List[patch_obj], List[...
    method __repr__ (line 894) | def __repr__(self) -> str:
    method after_collection (line 936) | def after_collection(self) -> None:
  class NotPassingError (line 932) | class NotPassingError(ValueError):
  class ChangeDebugger (line 935) | class ChangeDebugger(ChangeDebugger):
    method __init__ (line 806) | def __init__(self, pass_source: str, fail_source: str, **ddargs: Any) ...
    method pass_source (line 818) | def pass_source(self) -> str:
    method fail_source (line 822) | def fail_source(self) -> str:
    method patches (line 826) | def patches(self) -> List[patch_obj]:
    method test_patches (line 851) | def test_patches(self, patches: List[patch_obj]) -> None:
    method __enter__ (line 857) | def __enter__(self) -> Any:
    method min_patches (line 874) | def min_patches(self) -> Tuple[List[patch_obj], List[patch_obj], List[...
    method __repr__ (line 894) | def __repr__(self) -> str:
    method after_collection (line 936) | def after_collection(self) -> None:
  function test (line 1051) | def test() -> None:

FILE: docs/beta/code/ChangeExplorer.py
  function current_repo (line 85) | def current_repo():
  class ChangeCounter (line 185) | class ChangeCounter:
    method __init__ (line 188) | def __init__(self, repo, filter=None, log=False, **kwargs):
    method mine (line 211) | def mine(self, **kwargs):
    method include (line 226) | def include(self, m):
    method update_stats (line 237) | def update_stats(self, m):
    method update_size (line 252) | def update_size(self, node, size):
    method update_changes (line 257) | def update_changes(self, node, commit_msg):
    method update_elems (line 267) | def update_elems(self, node, m):
    method map_node_sizes (line 335) | def map_node_sizes(self):
    method map_node_color (line 348) | def map_node_color(self, node):
    method map_node_text (line 355) | def map_node_text(self, node):
    method map_hoverinfo (line 363) | def map_hoverinfo(self):
    method map_colorscale (line 368) | def map_colorscale(self):
    method map (line 373) | def map(self):
  class ChangeCounter (line 210) | class ChangeCounter(ChangeCounter):
    method __init__ (line 188) | def __init__(self, repo, filter=None, log=False, **kwargs):
    method mine (line 211) | def mine(self, **kwargs):
    method include (line 226) | def include(self, m):
    method update_stats (line 237) | def update_stats(self, m):
    method update_size (line 252) | def update_size(self, node, size):
    method update_changes (line 257) | def update_changes(self, node, commit_msg):
    method update_elems (line 267) | def update_elems(self, node, m):
    method map_node_sizes (line 335) | def map_node_sizes(self):
    method map_node_color (line 348) | def map_node_color(self, node):
    method map_node_text (line 355) | def map_node_text(self, node):
    method map_hoverinfo (line 363) | def map_hoverinfo(self):
    method map_colorscale (line 368) | def map_colorscale(self):
    method map (line 373) | def map(self):
  class ChangeCounter (line 225) | class ChangeCounter(ChangeCounter):
    method __init__ (line 188) | def __init__(self, repo, filter=None, log=False, **kwargs):
    method mine (line 211) | def mine(self, **kwargs):
    method include (line 226) | def include(self, m):
    method update_stats (line 237) | def update_stats(self, m):
    method update_size (line 252) | def update_size(self, node, size):
    method update_changes (line 257) | def update_changes(self, node, commit_msg):
    method update_elems (line 267) | def update_elems(self, node, m):
    method map_node_sizes (line 335) | def map_node_sizes(self):
    method map_node_color (line 348) | def map_node_color(self, node):
    method map_node_text (line 355) | def map_node_text(self, node):
    method map_hoverinfo (line 363) | def map_hoverinfo(self):
    method map_colorscale (line 368) | def map_colorscale(self):
    method map (line 373) | def map(self):
  class ChangeCounter (line 236) | class ChangeCounter(ChangeCounter):
    method __init__ (line 188) | def __init__(self, repo, filter=None, log=False, **kwargs):
    method mine (line 211) | def mine(self, **kwargs):
    method include (line 226) | def include(self, m):
    method update_stats (line 237) | def update_stats(self, m):
    method update_size (line 252) | def update_size(self, node, size):
    method update_changes (line 257) | def update_changes(self, node, commit_msg):
    method update_elems (line 267) | def update_elems(self, node, m):
    method map_node_sizes (line 335) | def map_node_sizes(self):
    method map_node_color (line 348) | def map_node_color(self, node):
    method map_node_text (line 355) | def map_node_text(self, node):
    method map_hoverinfo (line 363) | def map_hoverinfo(self):
    method map_colorscale (line 368) | def map_colorscale(self):
    method map (line 373) | def map(self):
  class ChangeCounter (line 251) | class ChangeCounter(ChangeCounter):
    method __init__ (line 188) | def __init__(self, repo, filter=None, log=False, **kwargs):
    method mine (line 211) | def mine(self, **kwargs):
    method include (line 226) | def include(self, m):
    method update_stats (line 237) | def update_stats(self, m):
    method update_size (line 252) | def update_size(self, node, size):
    method update_changes (line 257) | def update_changes(self, node, commit_msg):
    method update_elems (line 267) | def update_elems(self, node, m):
    method map_node_sizes (line 335) | def map_node_sizes(self):
    method map_node_color (line 348) | def map_node_color(self, node):
    method map_node_text (line 355) | def map_node_text(self, node):
    method map_hoverinfo (line 363) | def map_hoverinfo(self):
    method map_colorscale (line 368) | def map_colorscale(self):
    method map (line 373) | def map(self):
  class ChangeCounter (line 256) | class ChangeCounter(ChangeCounter):
    method __init__ (line 188) | def __init__(self, repo, filter=None, log=False, **kwargs):
    method mine (line 211) | def mine(self, **kwargs):
    method include (line 226) | def include(self, m):
    method update_stats (line 237) | def update_stats(self, m):
    method update_size (line 252) | def update_size(self, node, size):
    method update_changes (line 257) | def update_changes(self, node, commit_msg):
    method update_elems (line 267) | def update_elems(self, node, m):
    method map_node_sizes (line 335) | def map_node_sizes(self):
    method map_node_color (line 348) | def map_node_color(self, node):
    method map_node_text (line 355) | def map_node_text(self, node):
    method map_hoverinfo (line 363) | def map_hoverinfo(self):
    method map_colorscale (line 368) | def map_colorscale(self):
    method map (line 373) | def map(self):
  class ChangeCounter (line 266) | class ChangeCounter(ChangeCounter):
    method __init__ (line 188) | def __init__(self, repo, filter=None, log=False, **kwargs):
    method mine (line 211) | def mine(self, **kwargs):
    method include (line 226) | def include(self, m):
    method update_stats (line 237) | def update_stats(self, m):
    method update_size (line 252) | def update_size(self, node, size):
    method update_changes (line 257) | def update_changes(self, node, commit_msg):
    method update_elems (line 267) | def update_elems(self, node, m):
    method map_node_sizes (line 335) | def map_node_sizes(self):
    method map_node_color (line 348) | def map_node_color(self, node):
    method map_node_text (line 355) | def map_node_text(self, node):
    method map_hoverinfo (line 363) | def map_hoverinfo(self):
    method map_colorscale (line 368) | def map_colorscale(self):
    method map (line 373) | def map(self):
  function debuggingbook_change_counter (line 278) | def debuggingbook_change_counter(cls):
  class ChangeCounter (line 334) | class ChangeCounter(ChangeCounter):
    method __init__ (line 188) | def __init__(self, repo, filter=None, log=False, **kwargs):
    method mine (line 211) | def mine(self, **kwargs):
    method include (line 226) | def include(self, m):
    method update_stats (line 237) | def update_stats(self, m):
    method update_size (line 252) | def update_size(self, node, size):
    method update_changes (line 257) | def update_changes(self, node, commit_msg):
    method update_elems (line 267) | def update_elems(self, node, m):
    method map_node_sizes (line 335) | def map_node_sizes(self):
    method map_node_color (line 348) | def map_node_color(self, node):
    method map_node_text (line 355) | def map_node_text(self, node):
    method map_hoverinfo (line 363) | def map_hoverinfo(self):
    method map_colorscale (line 368) | def map_colorscale(self):
    method map (line 373) | def map(self):
  class ChangeCounter (line 347) | class ChangeCounter(ChangeCounter):
    method __init__ (line 188) | def __init__(self, repo, filter=None, log=False, **kwargs):
    method mine (line 211) | def mine(self, **kwargs):
    method include (line 226) | def include(self, m):
    method update_stats (line 237) | def update_stats(self, m):
    method update_size (line 252) | def update_size(self, node, size):
    method update_changes (line 257) | def update_changes(self, node, commit_msg):
    method update_elems (line 267) | def update_elems(self, node, m):
    method map_node_sizes (line 335) | def map_node_sizes(self):
    method map_node_color (line 348) | def map_node_color(self, node):
    method map_node_text (line 355) | def map_node_text(self, node):
    method map_hoverinfo (line 363) | def map_hoverinfo(self):
    method map_colorscale (line 368) | def map_colorscale(self):
    method map (line 373) | def map(self):
  class ChangeCounter (line 354) | class ChangeCounter(ChangeCounter):
    method __init__ (line 188) | def __init__(self, repo, filter=None, log=False, **kwargs):
    method mine (line 211) | def mine(self, **kwargs):
    method include (line 226) | def include(self, m):
    method update_stats (line 237) | def update_stats(self, m):
    method update_size (line 252) | def update_size(self, node, size):
    method update_changes (line 257) | def update_changes(self, node, commit_msg):
    method update_elems (line 267) | def update_elems(self, node, m):
    method map_node_sizes (line 335) | def map_node_sizes(self):
    method map_node_color (line 348) | def map_node_color(self, node):
    method map_node_text (line 355) | def map_node_text(self, node):
    method map_hoverinfo (line 363) | def map_hoverinfo(self):
    method map_colorscale (line 368) | def map_colorscale(self):
    method map (line 373) | def map(self):
  class ChangeCounter (line 362) | class ChangeCounter(ChangeCounter):
    method __init__ (line 188) | def __init__(self, repo, filter=None, log=False, **kwargs):
    method mine (line 211) | def mine(self, **kwargs):
    method include (line 226) | def include(self, m):
    method update_stats (line 237) | def update_stats(self, m):
    method update_size (line 252) | def update_size(self, node, size):
    method update_changes (line 257) | def update_changes(self, node, commit_msg):
    method update_elems (line 267) | def update_elems(self, node, m):
    method map_node_sizes (line 335) | def map_node_sizes(self):
    method map_node_color (line 348) | def map_node_color(self, node):
    method map_node_text (line 355) | def map_node_text(self, node):
    method map_hoverinfo (line 363) | def map_hoverinfo(self):
    method map_colorscale (line 368) | def map_colorscale(self):
    method map (line 373) | def map(self):
  class ChangeCounter (line 372) | class ChangeCounter(ChangeCounter):
    method __init__ (line 188) | def __init__(self, repo, filter=None, log=False, **kwargs):
    method mine (line 211) | def mine(self, **kwargs):
    method include (line 226) | def include(self, m):
    method update_stats (line 237) | def update_stats(self, m):
    method update_size (line 252) | def update_size(self, node, size):
    method update_changes (line 257) | def update_changes(self, node, commit_msg):
    method update_elems (line 267) | def update_elems(self, node, m):
    method map_node_sizes (line 335) | def map_node_sizes(self):
    method map_node_color (line 348) | def map_node_color(self, node):
    method map_node_text (line 355) | def map_node_text(self, node):
    method map_hoverinfo (line 363) | def map_hoverinfo(self):
    method map_colorscale (line 368) | def map_colorscale(self):
    method map (line 373) | def map(self):
  class FixCounter (line 438) | class FixCounter(ChangeCounter):
    method include (line 439) | def include(self, m):
    method map_node_text (line 444) | def map_node_text(self, node):
    method map_hoverinfo (line 449) | def map_hoverinfo(self):
  class FixCounter (line 443) | class FixCounter(FixCounter):
    method include (line 439) | def include(self, m):
    method map_node_text (line 444) | def map_node_text(self, node):
    method map_hoverinfo (line 449) | def map_hoverinfo(self):
  function rxdelim (line 526) | def rxdelim(content):
  function elem_mapping (line 536) | def elem_mapping(content, log=False):
  function changed_elems_by_mapping (line 611) | def changed_elems_by_mapping(mapping, start, length=0):
  function elem_size (line 625) | def elem_size(elem, source):
  function changed_elems (line 654) | def changed_elems(old_source, new_source):
  class FineChangeCounter (line 710) | class FineChangeCounter(ChangeCounter):
    method update_elems (line 711) | def update_elems(self, node, m):

FILE: docs/beta/code/ClassDiagram.py
  function class_hierarchy (line 83) | def class_hierarchy(cls: Type) -> List[Type]:
  class A_Class (line 95) | class A_Class:
    method foo (line 99) | def foo(self) -> None:
    method quux (line 103) | def quux(self) -> None:
    method second (line 110) | def second(self) -> None:
  class A_Class (line 107) | class A_Class(A_Class):
    method foo (line 99) | def foo(self) -> None:
    method quux (line 103) | def quux(self) -> None:
    method second (line 110) | def second(self) -> None:
  class B_Class (line 113) | class B_Class(A_Class):
    method foo (line 118) | def foo(self) -> None:
    method bar (line 122) | def bar(self, qux: Any = None, bartender: int = 42) -> None:
  class C_Class (line 129) | class C_Class:
    method qux (line 132) | def qux(self, arg: SomeType) -> SomeType:
  class D_Class (line 135) | class D_Class(B_Class, C_Class):
    method foo (line 139) | def foo(self) -> None:
  class D_Class (line 142) | class D_Class(D_Class):
    method foo (line 139) | def foo(self) -> None:
  function class_tree (line 158) | def class_tree(cls: Type, lowest: Optional[Type] = None) -> List[Tuple[T...
  function class_set (line 181) | def class_set(classes: Union[Type, List[Type]]) -> Set[Type]:
  function docstring (line 235) | def docstring(obj: Any) -> str:
  function unknown (line 245) | def unknown() -> None:
  function escape (line 255) | def escape(text: str) -> str:
  function escape_doc (line 267) | def escape_doc(docstring: str) -> str:
  function class_items (line 289) | def class_items(cls: Type, pred: Callable) -> List[Tuple[str, Any]]:
  function class_methods (line 306) | def class_methods(cls: Type) -> List[Tuple[str, Callable]]:
  function defined_in (line 309) | def defined_in(name: str, cls: Type) -> bool:
  function class_vars (line 343) | def class_vars(cls: Type) -> List[Any]:
  function public_class_methods (line 356) | def public_class_methods(cls: Type) -> List[Tuple[str, Callable]]:
  function doc_class_methods (line 360) | def doc_class_methods(cls: Type) -> List[Tuple[str, Callable]]:
  function overloaded_class_methods (line 370) | def overloaded_class_methods(classes: Union[Type, List[Type]]) -> Set[str]:
  function display_class_hierarchy (line 397) | def display_class_hierarchy(classes: Union[Type, List[Type]], *,

FILE: docs/beta/code/DDSetDebugger.py
  function remove_html_markup (line 85) | def remove_html_markup(s):  # type: ignore
  function display_tree (line 268) | def display_tree(tree: DerivationTree) -> Digraph:
  class TreeMutator (line 332) | class TreeMutator:
    method __init__ (line 335) | def __init__(self, grammar: Grammar, tree: DerivationTree,
    method get_subtree (line 364) | def get_subtree(self, path: TreePath, tree: Optional[DerivationTree] =...
    method new_tree (line 424) | def new_tree(self, start_symbol: str) -> DerivationTree:
    method mutate (line 448) | def mutate(self, path: TreePath, tree: Optional[DerivationTree] = None...
  class TreeMutator (line 363) | class TreeMutator(TreeMutator):
    method __init__ (line 335) | def __init__(self, grammar: Grammar, tree: DerivationTree,
    method get_subtree (line 364) | def get_subtree(self, path: TreePath, tree: Optional[DerivationTree] =...
    method new_tree (line 424) | def new_tree(self, start_symbol: str) -> DerivationTree:
    method mutate (line 448) | def mutate(self, path: TreePath, tree: Optional[DerivationTree] = None...
  function bad_input_tree_mutator (line 376) | def bad_input_tree_mutator() -> TreeMutator:
  function primes_generator (line 386) | def primes_generator() -> Generator[int, None, None]:
  class TreeMutator (line 423) | class TreeMutator(TreeMutator):
    method __init__ (line 335) | def __init__(self, grammar: Grammar, tree: DerivationTree,
    method get_subtree (line 364) | def get_subtree(self, path: TreePath, tree: Optional[DerivationTree] =...
    method new_tree (line 424) | def new_tree(self, start_symbol: str) -> DerivationTree:
    method mutate (line 448) | def mutate(self, path: TreePath, tree: Optional[DerivationTree] = None...
  class TreeMutator (line 447) | class TreeMutator(TreeMutator):
    method __init__ (line 335) | def __init__(self, grammar: Grammar, tree: DerivationTree,
    method get_subtree (line 364) | def get_subtree(self, path: TreePath, tree: Optional[DerivationTree] =...
    method new_tree (line 424) | def new_tree(self, start_symbol: str) -> DerivationTree:
    method mutate (line 448) | def mutate(self, path: TreePath, tree: Optional[DerivationTree] = None...
  class TreeGeneralizer (line 480) | class TreeGeneralizer(TreeMutator):
    method __init__ (line 483) | def __init__(self, grammar: Grammar, tree: DerivationTree, test: Calla...
    method test_tree (line 499) | def test_tree(self, tree: DerivationTree) -> bool:
    method can_generalize (line 525) | def can_generalize(self, path: TreePath, tree: Optional[DerivationTree...
    method find_paths (line 574) | def find_paths(self,
    method generalizable_paths (line 607) | def generalizable_paths(self) -> List[TreePath]:
    method generalize_path (line 617) | def generalize_path(self, path: TreePath,
    method generalize (line 641) | def generalize(self) -> DerivationTree:
    method fuzz_tree (line 669) | def fuzz_tree(self, tree: DerivationTree) -> DerivationTree:
  class TreeGeneralizer (line 498) | class TreeGeneralizer(TreeGeneralizer):
    method __init__ (line 483) | def __init__(self, grammar: Grammar, tree: DerivationTree, test: Calla...
    method test_tree (line 499) | def test_tree(self, tree: DerivationTree) -> bool:
    method can_generalize (line 525) | def can_generalize(self, path: TreePath, tree: Optional[DerivationTree...
    method find_paths (line 574) | def find_paths(self,
    method generalizable_paths (line 607) | def generalizable_paths(self) -> List[TreePath]:
    method generalize_path (line 617) | def generalize_path(self, path: TreePath,
    method generalize (line 641) | def generalize(self) -> DerivationTree:
    method fuzz_tree (line 669) | def fuzz_tree(self, tree: DerivationTree) -> DerivationTree:
  class TreeGeneralizer (line 524) | class TreeGeneralizer(TreeGeneralizer):
    method __init__ (line 483) | def __init__(self, grammar: Grammar, tree: DerivationTree, test: Calla...
    method test_tree (line 499) | def test_tree(self, tree: DerivationTree) -> bool:
    method can_generalize (line 525) | def can_generalize(self, path: TreePath, tree: Optional[DerivationTree...
    method find_paths (line 574) | def find_paths(self,
    method generalizable_paths (line 607) | def generalizable_paths(self) -> List[TreePath]:
    method generalize_path (line 617) | def generalize_path(self, path: TreePath,
    method generalize (line 641) | def generalize(self) -> DerivationTree:
    method fuzz_tree (line 669) | def fuzz_tree(self, tree: DerivationTree) -> DerivationTree:
  function bad_input_tree_generalizer (line 535) | def bad_input_tree_generalizer(**kwargs: Any) -> TreeGeneralizer:
  class TreeGeneralizer (line 573) | class TreeGeneralizer(TreeGeneralizer):
    method __init__ (line 483) | def __init__(self, grammar: Grammar, tree: DerivationTree, test: Calla...
    method test_tree (line 499) | def test_tree(self, tree: DerivationTree) -> bool:
    method can_generalize (line 525) | def can_generalize(self, path: TreePath, tree: Optional[DerivationTree...
    method find_paths (line 574) | def find_paths(self,
    method generalizable_paths (line 607) | def generalizable_paths(self) -> List[TreePath]:
    method generalize_path (line 617) | def generalize_path(self, path: TreePath,
    method generalize (line 641) | def generalize(self) -> DerivationTree:
    method fuzz_tree (line 669) | def fuzz_tree(self, tree: DerivationTree) -> DerivationTree:
  class TreeGeneralizer (line 616) | class TreeGeneralizer(TreeGeneralizer):
    method __init__ (line 483) | def __init__(self, grammar: Grammar, tree: DerivationTree, test: Calla...
    method test_tree (line 499) | def test_tree(self, tree: DerivationTree) -> bool:
    method can_generalize (line 525) | def can_generalize(self, path: TreePath, tree: Optional[DerivationTree...
    method find_paths (line 574) | def find_paths(self,
    method generalizable_paths (line 607) | def generalizable_paths(self) -> List[TreePath]:
    method generalize_path (line 617) | def generalize_path(self, path: TreePath,
    method generalize (line 641) | def generalize(self) -> DerivationTree:
    method fuzz_tree (line 669) | def fuzz_tree(self, tree: DerivationTree) -> DerivationTree:
  class TreeGeneralizer (line 640) | class TreeGeneralizer(TreeGeneralizer):
    method __init__ (line 483) | def __init__(self, grammar: Grammar, tree: DerivationTree, test: Calla...
    method test_tree (line 499) | def test_tree(self, tree: DerivationTree) -> bool:
    method can_generalize (line 525) | def can_generalize(self, path: TreePath, tree: Optional[DerivationTree...
    method find_paths (line 574) | def find_paths(self,
    method generalizable_paths (line 607) | def generalizable_paths(self) -> List[TreePath]:
    method generalize_path (line 617) | def generalize_path(self, path: TreePath,
    method generalize (line 641) | def generalize(self) -> DerivationTree:
    method fuzz_tree (line 669) | def fuzz_tree(self, tree: DerivationTree) -> DerivationTree:
  class TreeGeneralizer (line 668) | class TreeGeneralizer(TreeGeneralizer):
    method __init__ (line 483) | def __init__(self, grammar: Grammar, tree: DerivationTree, test: Calla...
    method test_tree (line 499) | def test_tree(self, tree: DerivationTree) -> bool:
    method can_generalize (line 525) | def can_generalize(self, path: TreePath, tree: Optional[DerivationTree...
    method find_paths (line 574) | def find_paths(self,
    method generalizable_paths (line 607) | def generalizable_paths(self) -> List[TreePath]:
    method generalize_path (line 617) | def generalize_path(self, path: TreePath,
    method generalize (line 641) | def generalize(self) -> DerivationTree:
    method fuzz_tree (line 669) | def fuzz_tree(self, tree: DerivationTree) -> DerivationTree:
  class DDSetDebugger (line 717) | class DDSetDebugger(CallCollector):
    method __init__ (line 722) | def __init__(self, grammar: Grammar,
    method generalize (line 759) | def generalize(self) -> Dict[str, Any]:
    method __repr__ (line 790) | def __repr__(self) -> str:
    method fuzz_args (line 807) | def fuzz_args(self) -> Dict[str, Any]:
    method fuzz (line 827) | def fuzz(self) -> str:
  class DDSetDebugger (line 758) | class DDSetDebugger(DDSetDebugger):
    method __init__ (line 722) | def __init__(self, grammar: Grammar,
    method generalize (line 759) | def generalize(self) -> Dict[str, Any]:
    method __repr__ (line 790) | def __repr__(self) -> str:
    method fuzz_args (line 807) | def fuzz_args(self) -> Dict[str, Any]:
    method fuzz (line 827) | def fuzz(self) -> str:
  class DDSetDebugger (line 789) | class DDSetDebugger(DDSetDebugger):
    method __init__ (line 722) | def __init__(self, grammar: Grammar,
    method generalize (line 759) | def generalize(self) -> Dict[str, Any]:
    method __repr__ (line 790) | def __repr__(self) -> str:
    method fuzz_args (line 807) | def fuzz_args(self) -> Dict[str, Any]:
    method fuzz (line 827) | def fuzz(self) -> str:
  class DDSetDebugger (line 806) | class DDSetDebugger(DDSetDebugger):
    method __init__ (line 722) | def __init__(self, grammar: Grammar,
    method generalize (line 759) | def generalize(self) -> Dict[str, Any]:
    method __repr__ (line 790) | def __repr__(self) -> str:
    method fuzz_args (line 807) | def fuzz_args(self) -> Dict[str, Any]:
    method fuzz (line 827) | def fuzz(self) -> str:
  function square_root_test (line 887) | def square_root_test(s: str) -> None:
  function middle_test (line 906) | def middle_test(s: str) -> None:

FILE: docs/beta/code/Debugger.py
  class Debugger (line 99) | class Debugger(Tracer):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  class Debugger (line 116) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  class Debugger (line 127) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  class Debugger (line 132) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  class Debugger (line 142) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  class Debugger (line 149) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  class Debugger (line 156) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  function remove_html_markup (line 163) | def remove_html_markup(s):  # type: ignore
  class Debugger (line 203) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  class Debugger (line 217) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  class Debugger (line 245) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  class Debugger (line 261) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  class Debugger (line 304) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  class Debugger (line 318) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  class Debugger (line 365) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  class Debugger (line 390) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  class Debugger (line 427) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  class Debugger (line 470) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  class Debugger (line 514) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  class Debugger (line 568) | class Debugger(Debugger):
    method __init__ (line 102) | def __init__(self, *, file: TextIO = sys.stdout) -> None:
    method traceit (line 117) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method stop_here (line 128) | def stop_here(self) -> bool:
    method interaction_loop (line 133) | def interaction_loop(self) -> None:
    method step_command (line 143) | def step_command(self, arg: str = "") -> None:
    method continue_command (line 150) | def continue_command(self, arg: str = "") -> None:
    method execute (line 157) | def execute(self, command: str) -> None:
    method commands (line 204) | def commands(self) -> List[str]:
    method help_command (line 218) | def help_command(self, command: str) -> None:
    method command_method (line 221) | def command_method(self, command: str) -> Optional[Callable[[str], Non...
    method execute (line 246) | def execute(self, command: str) -> None:
    method help_command (line 262) | def help_command(self, command: str = "") -> None:
    method print_command (line 305) | def print_command(self, arg: str = "") -> None:
    method print_command (line 319) | def print_command(self, arg: str = "") -> None:
    method list_command (line 366) | def list_command(self, arg: str = "") -> None:
    method break_command (line 391) | def break_command(self, arg: str = "") -> None:
    method delete_command (line 428) | def delete_command(self, arg: str = "") -> None:
    method list_command (line 471) | def list_command(self, arg: str = "") -> None:
    method quit_command (line 515) | def quit_command(self, arg: str = "") -> None:
    method assign_command (line 569) | def assign_command(self, arg: str) -> None:
  function slider (line 697) | def slider(rec: List[Tuple[int, Dict[str, Any]]]) -> str:

FILE: docs/beta/code/DeltaDebugger.py
  function mystery (line 87) | def mystery(inp: str) -> None:
  function fuzz (line 100) | def fuzz() -> str:
  function ddmin (line 208) | def ddmin(test: Callable, inp: Sequence[Any], *test_args: Any) -> Sequence:
  function generic_test (line 244) | def generic_test(inp: Sequence, fun: Callable,
  class NoCallError (line 294) | class NoCallError(ValueError):
  class CallCollector (line 297) | class CallCollector(StackInspector):
    method __init__ (line 303) | def __init__(self) -> None:
    method init (line 307) | def init(self) -> None:
    method traceit (line 314) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method after_collection (line 341) | def after_collection(self) -> None:
    method args (line 345) | def args(self) -> Dict[str, Any]:
    method function (line 349) | def function(self) -> Callable:
    method exception (line 355) | def exception(self) -> Optional[BaseException]:
    method format_call (line 359) | def format_call(self, args: Optional[Dict[str, Any]] = None) -> str:  ...
    method format_exception (line 362) | def format_exception(self, exc: Optional[BaseException] = None) -> str...
    method call (line 365) | def call(self, new_args: Optional[Dict[str, Any]] = None) -> Any:  # t...
    method __enter__ (line 369) | def __enter__(self) -> Any:
    method __exit__ (line 376) | def __exit__(self, exc_tp: Type, exc_value: BaseException,
    method call (line 431) | def call(self, new_args: Optional[Dict[str, Any]] = None) -> Any:
    method format_call (line 458) | def format_call(self, args: Optional[Dict[str, Any]] = None) -> str:
    method format_exception (line 465) | def format_exception(self, exc: Optional[BaseException] = None) -> str:
  class CallCollector (line 368) | class CallCollector(CallCollector):
    method __init__ (line 303) | def __init__(self) -> None:
    method init (line 307) | def init(self) -> None:
    method traceit (line 314) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method after_collection (line 341) | def after_collection(self) -> None:
    method args (line 345) | def args(self) -> Dict[str, Any]:
    method function (line 349) | def function(self) -> Callable:
    method exception (line 355) | def exception(self) -> Optional[BaseException]:
    method format_call (line 359) | def format_call(self, args: Optional[Dict[str, Any]] = None) -> str:  ...
    method format_exception (line 362) | def format_exception(self, exc: Optional[BaseException] = None) -> str...
    method call (line 365) | def call(self, new_args: Optional[Dict[str, Any]] = None) -> Any:  # t...
    method __enter__ (line 369) | def __enter__(self) -> Any:
    method __exit__ (line 376) | def __exit__(self, exc_tp: Type, exc_value: BaseException,
    method call (line 431) | def call(self, new_args: Optional[Dict[str, Any]] = None) -> Any:
    method format_call (line 458) | def format_call(self, args: Optional[Dict[str, Any]] = None) -> str:
    method format_exception (line 465) | def format_exception(self, exc: Optional[BaseException] = None) -> str:
  class CallCollector (line 430) | class CallCollector(CallCollector):
    method __init__ (line 303) | def __init__(self) -> None:
    method init (line 307) | def init(self) -> None:
    method traceit (line 314) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method after_collection (line 341) | def after_collection(self) -> None:
    method args (line 345) | def args(self) -> Dict[str, Any]:
    method function (line 349) | def function(self) -> Callable:
    method exception (line 355) | def exception(self) -> Optional[BaseException]:
    method format_call (line 359) | def format_call(self, args: Optional[Dict[str, Any]] = None) -> str:  ...
    method format_exception (line 362) | def format_exception(self, exc: Optional[BaseException] = None) -> str...
    method call (line 365) | def call(self, new_args: Optional[Dict[str, Any]] = None) -> Any:  # t...
    method __enter__ (line 369) | def __enter__(self) -> Any:
    method __exit__ (line 376) | def __exit__(self, exc_tp: Type, exc_value: BaseException,
    method call (line 431) | def call(self, new_args: Optional[Dict[str, Any]] = None) -> Any:
    method format_call (line 458) | def format_call(self, args: Optional[Dict[str, Any]] = None) -> str:
    method format_exception (line 465) | def format_exception(self, exc: Optional[BaseException] = None) -> str:
  class CallCollector (line 457) | class CallCollector(CallCollector):
    method __init__ (line 303) | def __init__(self) -> None:
    method init (line 307) | def init(self) -> None:
    method traceit (line 314) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method after_collection (line 341) | def after_collection(self) -> None:
    method args (line 345) | def args(self) -> Dict[str, Any]:
    method function (line 349) | def function(self) -> Callable:
    method exception (line 355) | def exception(self) -> Optional[BaseException]:
    method format_call (line 359) | def format_call(self, args: Optional[Dict[str, Any]] = None) -> str:  ...
    method format_exception (line 362) | def format_exception(self, exc: Optional[BaseException] = None) -> str...
    method call (line 365) | def call(self, new_args: Optional[Dict[str, Any]] = None) -> Any:  # t...
    method __enter__ (line 369) | def __enter__(self) -> Any:
    method __exit__ (line 376) | def __exit__(self, exc_tp: Type, exc_value: BaseException,
    method call (line 431) | def call(self, new_args: Optional[Dict[str, Any]] = None) -> Any:
    method format_call (line 458) | def format_call(self, args: Optional[Dict[str, Any]] = None) -> str:
    method format_exception (line 465) | def format_exception(self, exc: Optional[BaseException] = None) -> str:
  class CallReducer (line 491) | class CallReducer(CallCollector):
    method __init__ (line 492) | def __init__(self, *, log: Union[bool, int] = False) -> None:
    method reset (line 498) | def reset(self) -> None:
    method run (line 502) | def run(self, args: Dict[str, Any]) -> str:
    method test (line 524) | def test(self, args: Dict[str, Any]) -> str:
    method reduce_arg (line 538) | def reduce_arg(self, var_to_be_reduced: str, args: Dict[str, Any]) -> ...
  class CallReducer (line 523) | class CallReducer(CallReducer):
    method __init__ (line 492) | def __init__(self, *, log: Union[bool, int] = False) -> None:
    method reset (line 498) | def reset(self) -> None:
    method run (line 502) | def run(self, args: Dict[str, Any]) -> str:
    method test (line 524) | def test(self, args: Dict[str, Any]) -> str:
    method reduce_arg (line 538) | def reduce_arg(self, var_to_be_reduced: str, args: Dict[str, Any]) -> ...
  class CachingCallReducer (line 553) | class CachingCallReducer(CallReducer):
    method init (line 556) | def init(self) -> None:
    method test (line 560) | def test(self, args: Dict[str, Any]) -> str:
  function to_set (line 594) | def to_set(inp: Sequence) -> Set:
  function empty (line 601) | def empty(inp: Any) -> Any:
  function add_to (line 608) | def add_to(collection: Any, elem: Any) -> Any:
  function from_set (line 628) | def from_set(the_set: Any, inp: Sequence) -> Any:
  function split (line 640) | def split(elems: Any, n: int) -> List:
  class NotFailingError (line 669) | class NotFailingError(ValueError):
  class NotPassingError (line 672) | class NotPassingError(ValueError):
  class DeltaDebugger (line 675) | class DeltaDebugger(CachingCallReducer):
    method dd (line 676) | def dd(self, var_to_be_reduced: str, fail_args: Dict[str, Any],
    method check_reproducibility (line 854) | def check_reproducibility(self) -> None:
    method process_args (line 879) | def process_args(self, strategy: Callable, **strategy_args: Any) -> \
    method after_collection (line 956) | def after_collection(self) -> None:
    method min_args (line 976) | def min_args(self) -> Dict[str, Any]:
    method max_args (line 982) | def max_args(self) -> Dict[str, Any]:
    method min_arg_diff (line 988) | def min_arg_diff(self) -> Tuple[Dict[str, Any], Dict[str, Any], Dict[s...
    method __repr__ (line 993) | def __repr__(self) -> str:
  function is_reducible (line 834) | def is_reducible(value: Any) -> bool:
  class FailureNotReproducedError (line 850) | class FailureNotReproducedError(ValueError):
  class DeltaDebugger (line 853) | class DeltaDebugger(DeltaDebugger):
    method dd (line 676) | def dd(self, var_to_be_reduced: str, fail_args: Dict[str, Any],
    method check_reproducibility (line 854) | def check_reproducibility(self) -> None:
    method process_args (line 879) | def process_args(self, strategy: Callable, **strategy_args: Any) -> \
    method after_collection (line 956) | def after_collection(self) -> None:
    method min_args (line 976) | def min_args(self) -> Dict[str, Any]:
    method max_args (line 982) | def max_args(self) -> Dict[str, Any]:
    method min_arg_diff (line 988) | def min_arg_diff(self) -> Tuple[Dict[str, Any], Dict[str, Any], Dict[s...
    method __repr__ (line 993) | def __repr__(self) -> str:
  class DeltaDebugger (line 878) | class DeltaDebugger(DeltaDebugger):
    method dd (line 676) | def dd(self, var_to_be_reduced: str, fail_args: Dict[str, Any],
    method check_reproducibility (line 854) | def check_reproducibility(self) -> None:
    method process_args (line 879) | def process_args(self, strategy: Callable, **strategy_args: Any) -> \
    method after_collection (line 956) | def after_collection(self) -> None:
    method min_args (line 976) | def min_args(self) -> Dict[str, Any]:
    method max_args (line 982) | def max_args(self) -> Dict[str, Any]:
    method min_arg_diff (line 988) | def min_arg_diff(self) -> Tuple[Dict[str, Any], Dict[str, Any], Dict[s...
    method __repr__ (line 993) | def __repr__(self) -> str:
  class DeltaDebugger (line 955) | class DeltaDebugger(DeltaDebugger):
    method dd (line 676) | def dd(self, var_to_be_reduced: str, fail_args: Dict[str, Any],
    method check_reproducibility (line 854) | def check_reproducibility(self) -> None:
    method process_args (line 879) | def process_args(self, strategy: Callable, **strategy_args: Any) -> \
    method after_collection (line 956) | def after_collection(self) -> None:
    method min_args (line 976) | def min_args(self) -> Dict[str, Any]:
    method max_args (line 982) | def max_args(self) -> Dict[str, Any]:
    method min_arg_diff (line 988) | def min_arg_diff(self) -> Tuple[Dict[str, Any], Dict[str, Any], Dict[s...
    method __repr__ (line 993) | def __repr__(self) -> str:
  class DeltaDebugger (line 975) | class DeltaDebugger(DeltaDebugger):
    method dd (line 676) | def dd(self, var_to_be_reduced: str, fail_args: Dict[str, Any],
    method check_reproducibility (line 854) | def check_reproducibility(self) -> None:
    method process_args (line 879) | def process_args(self, strategy: Callable, **strategy_args: Any) -> \
    method after_collection (line 956) | def after_collection(self) -> None:
    method min_args (line 976) | def min_args(self) -> Dict[str, Any]:
    method max_args (line 982) | def max_args(self) -> Dict[str, Any]:
    method min_arg_diff (line 988) | def min_arg_diff(self) -> Tuple[Dict[str, Any], Dict[str, Any], Dict[s...
    method __repr__ (line 993) | def __repr__(self) -> str:
  class DeltaDebugger (line 981) | class DeltaDebugger(DeltaDebugger):
    method dd (line 676) | def dd(self, var_to_be_reduced: str, fail_args: Dict[str, Any],
    method check_reproducibility (line 854) | def check_reproducibility(self) -> None:
    method process_args (line 879) | def process_args(self, strategy: Callable, **strategy_args: Any) -> \
    method after_collection (line 956) | def after_collection(self) -> None:
    method min_args (line 976) | def min_args(self) -> Dict[str, Any]:
    method max_args (line 982) | def max_args(self) -> Dict[str, Any]:
    method min_arg_diff (line 988) | def min_arg_diff(self) -> Tuple[Dict[str, Any], Dict[str, Any], Dict[s...
    method __repr__ (line 993) | def __repr__(self) -> str:
  class DeltaDebugger (line 987) | class DeltaDebugger(DeltaDebugger):
    method dd (line 676) | def dd(self, var_to_be_reduced: str, fail_args: Dict[str, Any],
    method check_reproducibility (line 854) | def check_reproducibility(self) -> None:
    method process_args (line 879) | def process_args(self, strategy: Callable, **strategy_args: Any) -> \
    method after_collection (line 956) | def after_collection(self) -> None:
    method min_args (line 976) | def min_args(self) -> Dict[str, Any]:
    method max_args (line 982) | def max_args(self) -> Dict[str, Any]:
    method min_arg_diff (line 988) | def min_arg_diff(self) -> Tuple[Dict[str, Any], Dict[str, Any], Dict[s...
    method __repr__ (line 993) | def __repr__(self) -> str:
  class DeltaDebugger (line 992) | class DeltaDebugger(DeltaDebugger):
    method dd (line 676) | def dd(self, var_to_be_reduced: str, fail_args: Dict[str, Any],
    method check_reproducibility (line 854) | def check_reproducibility(self) -> None:
    method process_args (line 879) | def process_args(self, strategy: Callable, **strategy_args: Any) -> \
    method after_collection (line 956) | def after_collection(self) -> None:
    method min_args (line 976) | def min_args(self) -> Dict[str, Any]:
    method max_args (line 982) | def max_args(self) -> Dict[str, Any]:
    method min_arg_diff (line 988) | def min_arg_diff(self) -> Tuple[Dict[str, Any], Dict[str, Any], Dict[s...
    method __repr__ (line 993) | def __repr__(self) -> str:
  function string_error (line 1068) | def string_error(s1: str, s2: str) -> None:
  function list_error (line 1108) | def list_error(l1: List, l2: List, maxlen: int) -> None:
  function compile_and_run (line 1173) | def compile_and_run(lines: List[str]) -> None:
  function compile_and_test_html_markup_simple (line 1188) | def compile_and_test_html_markup_simple(lines: List[str]) -> None:
  function compile_and_test_html_markup (line 1232) | def compile_and_test_html_markup(lines: List[str]) -> None:
  class NodeCollector (line 1366) | class NodeCollector(NodeVisitor):
    method __init__ (line 1369) | def __init__(self) -> None:
    method generic_visit (line 1373) | def generic_visit(self, node: AST) -> None:
    method collect (line 1377) | def collect(self, tree: AST) -> List[AST]:
  class NodeMarker (line 1397) | class NodeMarker(NodeVisitor):
    method visit (line 1398) | def visit(self, node: AST) -> AST:
  class NodeReducer (line 1402) | class NodeReducer(NodeTransformer):
    method visit (line 1403) | def visit(self, node: AST) -> Any:
    method visit_Module (line 1408) | def visit_Module(self, node: AST) -> Any:
    method visit_Node (line 1412) | def visit_Node(self, node: AST) -> Any:
    method visit_Assign (line 1519) | def visit_Assign(self, node: ast.Assign) -> AST:
    method visit_Compare (line 1528) | def visit_Compare(self, node: ast.Compare) -> AST:
    method visit_BoolOp (line 1535) | def visit_BoolOp(self, node: ast.BoolOp) -> AST:
    method visit_If (line 1542) | def visit_If(self, node: ast.If) -> Union[AST, List[ast.stmt]]:
  function copy_and_reduce (line 1418) | def copy_and_reduce(tree: AST, keep_list: List[AST]) -> AST:
  function compile_and_test_ast (line 1472) | def compile_and_test_ast(tree: ast.Module, keep_list: List[AST],
  class NodeReducer (line 1516) | class NodeReducer(NodeReducer):
    method visit (line 1403) | def visit(self, node: AST) -> Any:
    method visit_Module (line 1408) | def visit_Module(self, node: AST) -> Any:
    method visit_Node (line 1412) | def visit_Node(self, node: AST) -> Any:
    method visit_Assign (line 1519) | def visit_Assign(self, node: ast.Assign) -> AST:
    method visit_Compare (line 1528) | def visit_Compare(self, node: ast.Compare) -> AST:
    method visit_BoolOp (line 1535) | def visit_BoolOp(self, node: ast.BoolOp) -> AST:
    method visit_If (line 1542) | def visit_If(self, node: ast.If) -> Union[AST, List[ast.stmt]]:
  class NodeReducer (line 1525) | class NodeReducer(NodeReducer):
    method visit (line 1403) | def visit(self, node: AST) -> Any:
    method visit_Module (line 1408) | def visit_Module(self, node: AST) -> Any:
    method visit_Node (line 1412) | def visit_Node(self, node: AST) -> Any:
    method visit_Assign (line 1519) | def visit_Assign(self, node: ast.Assign) -> AST:
    method visit_Compare (line 1528) | def visit_Compare(self, node: ast.Compare) -> AST:
    method visit_BoolOp (line 1535) | def visit_BoolOp(self, node: ast.BoolOp) -> AST:
    method visit_If (line 1542) | def visit_If(self, node: ast.If) -> Union[AST, List[ast.stmt]]:
  class NodeReducer (line 1534) | class NodeReducer(NodeReducer):
    method visit (line 1403) | def visit(self, node: AST) -> Any:
    method visit_Module (line 1408) | def visit_Module(self, node: AST) -> Any:
    method visit_Node (line 1412) | def visit_Node(self, node: AST) -> Any:
    method visit_Assign (line 1519) | def visit_Assign(self, node: ast.Assign) -> AST:
    method visit_Compare (line 1528) | def visit_Compare(self, node: ast.Compare) -> AST:
    method visit_BoolOp (line 1535) | def visit_BoolOp(self, node: ast.BoolOp) -> AST:
    method visit_If (line 1542) | def visit_If(self, node: ast.If) -> Union[AST, List[ast.stmt]]:
  class NodeReducer (line 1541) | class NodeReducer(NodeReducer):
    method visit (line 1403) | def visit(self, node: AST) -> Any:
    method visit_Module (line 1408) | def visit_Module(self, node: AST) -> Any:
    method visit_Node (line 1412) | def visit_Node(self, node: AST) -> Any:
    method visit_Assign (line 1519) | def visit_Assign(self, node: ast.Assign) -> AST:
    method visit_Compare (line 1528) | def visit_Compare(self, node: ast.Compare) -> AST:
    method visit_BoolOp (line 1535) | def visit_BoolOp(self, node: ast.BoolOp) -> AST:
    method visit_If (line 1542) | def visit_If(self, node: ast.If) -> Union[AST, List[ast.stmt]]:
  function myeval (line 1604) | def myeval(inp: str) -> Any:

FILE: docs/beta/code/DynamicInvariants.py
  function square_root (line 88) | def square_root(x):  # type: ignore
  function square_root (line 109) | def square_root(x):  # type: ignore
  function square_root_with_type_annotations (line 141) | def square_root_with_type_annotations(x: float) -> float:
  function get_arguments (line 235) | def get_arguments(frame: FrameType) -> Arguments:
  function simple_call_string (line 247) | def simple_call_string(function_name: str, argument_list: Arguments,
  class CallTracer (line 259) | class CallTracer(Tracer):
    method __init__ (line 260) | def __init__(self, log: bool = False, **kwargs: Any)-> None:
    method reset (line 265) | def reset(self) -> None:
    method traceit (line 270) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method trace_call (line 278) | def trace_call(self, frame: FrameType, event: str, arg: Any) -> None:
    method trace_return (line 289) | def trace_return(self, frame: FrameType, event: str, arg: Any) -> None:
    method add_call (line 306) | def add_call(self, function_name: str, arguments: Arguments,
    method calls (line 315) | def calls(self, function_name: str) -> List[Tuple[Arguments, Any]]:
    method all_calls (line 320) | def all_calls(self) -> Dict[str, List[Tuple[Arguments, Any]]]:
  class CallTracer (line 269) | class CallTracer(CallTracer):
    method __init__ (line 260) | def __init__(self, log: bool = False, **kwargs: Any)-> None:
    method reset (line 265) | def reset(self) -> None:
    method traceit (line 270) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method trace_call (line 278) | def trace_call(self, frame: FrameType, event: str, arg: Any) -> None:
    method trace_return (line 289) | def trace_return(self, frame: FrameType, event: str, arg: Any) -> None:
    method add_call (line 306) | def add_call(self, function_name: str, arguments: Arguments,
    method calls (line 315) | def calls(self, function_name: str) -> List[Tuple[Arguments, Any]]:
    method all_calls (line 320) | def all_calls(self) -> Dict[str, List[Tuple[Arguments, Any]]]:
  class CallTracer (line 277) | class CallTracer(CallTracer):
    method __init__ (line 260) | def __init__(self, log: bool = False, **kwargs: Any)-> None:
    method reset (line 265) | def reset(self) -> None:
    method traceit (line 270) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method trace_call (line 278) | def trace_call(self, frame: FrameType, event: str, arg: Any) -> None:
    method trace_return (line 289) | def trace_return(self, frame: FrameType, event: str, arg: Any) -> None:
    method add_call (line 306) | def add_call(self, function_name: str, arguments: Arguments,
    method calls (line 315) | def calls(self, function_name: str) -> List[Tuple[Arguments, Any]]:
    method all_calls (line 320) | def all_calls(self) -> Dict[str, List[Tuple[Arguments, Any]]]:
  class CallTracer (line 288) | class CallTracer(CallTracer):
    method __init__ (line 260) | def __init__(self, log: bool = False, **kwargs: Any)-> None:
    method reset (line 265) | def reset(self) -> None:
    method traceit (line 270) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method trace_call (line 278) | def trace_call(self, frame: FrameType, event: str, arg: Any) -> None:
    method trace_return (line 289) | def trace_return(self, frame: FrameType, event: str, arg: Any) -> None:
    method add_call (line 306) | def add_call(self, function_name: str, arguments: Arguments,
    method calls (line 315) | def calls(self, function_name: str) -> List[Tuple[Arguments, Any]]:
    method all_calls (line 320) | def all_calls(self) -> Dict[str, List[Tuple[Arguments, Any]]]:
  class CallTracer (line 305) | class CallTracer(CallTracer):
    method __init__ (line 260) | def __init__(self, log: bool = False, **kwargs: Any)-> None:
    method reset (line 265) | def reset(self) -> None:
    method traceit (line 270) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method trace_call (line 278) | def trace_call(self, frame: FrameType, event: str, arg: Any) -> None:
    method trace_return (line 289) | def trace_return(self, frame: FrameType, event: str, arg: Any) -> None:
    method add_call (line 306) | def add_call(self, function_name: str, arguments: Arguments,
    method calls (line 315) | def calls(self, function_name: str) -> List[Tuple[Arguments, Any]]:
    method all_calls (line 320) | def all_calls(self) -> Dict[str, List[Tuple[Arguments, Any]]]:
  class CallTracer (line 314) | class CallTracer(CallTracer):
    method __init__ (line 260) | def __init__(self, log: bool = False, **kwargs: Any)-> None:
    method reset (line 265) | def reset(self) -> None:
    method traceit (line 270) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method trace_call (line 278) | def trace_call(self, frame: FrameType, event: str, arg: Any) -> None:
    method trace_return (line 289) | def trace_return(self, frame: FrameType, event: str, arg: Any) -> None:
    method add_call (line 306) | def add_call(self, function_name: str, arguments: Arguments,
    method calls (line 315) | def calls(self, function_name: str) -> List[Tuple[Arguments, Any]]:
    method all_calls (line 320) | def all_calls(self) -> Dict[str, List[Tuple[Arguments, Any]]]:
  class CallTracer (line 319) | class CallTracer(CallTracer):
    method __init__ (line 260) | def __init__(self, log: bool = False, **kwargs: Any)-> None:
    method reset (line 265) | def reset(self) -> None:
    method traceit (line 270) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
    method trace_call (line 278) | def trace_call(self, frame: FrameType, event: str, arg: Any) -> None:
    method trace_return (line 289) | def trace_return(self, frame: FrameType, event: str, arg: Any) -> None:
    method add_call (line 306) | def add_call(self, function_name: str, arguments: Arguments,
    method calls (line 315) | def calls(self, function_name: str) -> List[Tuple[Arguments, Any]]:
    method all_calls (line 320) | def all_calls(self) -> Dict[str, List[Tuple[Arguments, Any]]]:
  function hello (line 340) | def hello(name: str) -> None:
  function square_root_annotated (line 378) | def square_root_annotated(x: int) -> float:
  function parse_type (line 438) | def parse_type(name: str) -> ast.expr:
  class TypeTransformer (line 454) | class TypeTransformer(ast.NodeTransformer):
    method __init__ (line 455) | def __init__(self, argument_types: Dict[str, str], return_type: Option...
    method visit_FunctionDef (line 461) | def visit_FunctionDef(self, node: ast.FunctionDef) -> ast.FunctionDef:
    method annotate_arg (line 488) | def annotate_arg(self, arg: ast.arg) -> ast.arg:
  class TypeTransformer (line 460) | class TypeTransformer(TypeTransformer):
    method __init__ (line 455) | def __init__(self, argument_types: Dict[str, str], return_type: Option...
    method visit_FunctionDef (line 461) | def visit_FunctionDef(self, node: ast.FunctionDef) -> ast.FunctionDef:
    method annotate_arg (line 488) | def annotate_arg(self, arg: ast.arg) -> ast.arg:
  class TypeTransformer (line 487) | class TypeTransformer(TypeTransformer):
    method __init__ (line 455) | def __init__(self, argument_types: Dict[str, str], return_type: Option...
    method visit_FunctionDef (line 461) | def visit_FunctionDef(self, node: ast.FunctionDef) -> ast.FunctionDef:
    method annotate_arg (line 488) | def annotate_arg(self, arg: ast.arg) -> ast.arg:
  function type_string (line 528) | def type_string(value: Any) -> str:
  function annotate_types (line 550) | def annotate_types(calls: Dict[str, List[Tuple[Arguments, Any]]]) \
  function annotate_function_with_types (line 563) | def annotate_function_with_types(function: Callable,
  function annotate_function_ast_with_types (line 569) | def annotate_function_ast_with_types(function_ast: ast.AST,
  class TypeTracer (line 616) | class TypeTracer(CallTracer):
  class TypeAnnotator (line 619) | class TypeAnnotator(TypeTracer):
    method typed_functions_ast (line 620) | def typed_functions_ast(self) -> Dict[str, ast.AST]:
    method typed_function_ast (line 624) | def typed_function_ast(self, function_name: str) -> Optional[ast.AST]:
    method typed_functions (line 631) | def typed_functions(self) -> str:
    method typed_function (line 643) | def typed_function(self, function_name: str) -> str:
    method __repr__ (line 650) | def __repr__(self) -> str:
  function sum3 (line 693) | def sum3(a, b, c):  # type: ignore
  function square_root_with_invariants (line 753) | def square_root_with_invariants(x):  # type: ignore
  function condition (line 763) | def condition(precondition: Optional[Callable] = None,
  function precondition (line 782) | def precondition(check: Callable) -> Callable:
  function postcondition (line 785) | def postcondition(check: Callable) -> Callable:
  function square_root_with_precondition (line 789) | def square_root_with_precondition(x):  # type: ignore
  function square_root_with_postcondition (line 799) | def square_root_with_postcondition(x):  # type: ignore
  function buggy_square_root_with_postcondition (line 807) | def buggy_square_root_with_postcondition(x):  # type: ignore
  function metavars (line 887) | def metavars(prop: str) -> List[str]:
  function instantiate_prop_ast (line 914) | def instantiate_prop_ast(prop: str, var_names: Sequence[str]) -> ast.AST:
  function instantiate_prop (line 933) | def instantiate_prop(prop: str, var_names: Sequence[str]) -> str:
  function prop_function_text (line 953) | def prop_function_text(prop: str) -> str:
  function prop_function (line 959) | def prop_function(prop: str) -> Callable:
  function true_property_instantiations (line 993) | def true_property_instantiations(prop: str, vars_and_values: Arguments,
  class InvariantTracer (line 1037) | class InvariantTracer(CallTracer):
    method __init__ (line 1038) | def __init__(self, props: Optional[List[str]] = None, **kwargs: Any) -...
    method all_invariants (line 1048) | def all_invariants(self) -> Dict[str, Invariants]:
    method invariants (line 1052) | def invariants(self, function_name: str) -> Invariants:
  class InvariantTracer (line 1047) | class InvariantTracer(InvariantTracer):
    method __init__ (line 1038) | def __init__(self, props: Optional[List[str]] = None, **kwargs: Any) -...
    method all_invariants (line 1048) | def all_invariants(self) -> Dict[str, Invariants]:
    method invariants (line 1052) | def invariants(self, function_name: str) -> Invariants:
  function pretty_invariants (line 1080) | def pretty_invariants(invariants: Invariants) -> List[str]:
  class InvariantAnnotator (line 1130) | class InvariantAnnotator(InvariantTracer):
    method params (line 1131) | def params(self, function_name: str) -> str:
    method preconditions (line 1147) | def preconditions(self, function_name: str) -> List[str]:
    method postconditions (line 1171) | def postconditions(self, function_name: str) -> List[str]:
    method functions_with_invariants (line 1196) | def functions_with_invariants(self) -> str:
    method function_with_invariants (line 1209) | def function_with_invariants(self, function_name: str) -> str:
    method __repr__ (line 1219) | def __repr__(self) -> str:
  class InvariantAnnotator (line 1146) | class InvariantAnnotator(InvariantAnnotator):
    method params (line 1131) | def params(self, function_name: str) -> str:
    method preconditions (line 1147) | def preconditions(self, function_name: str) -> List[str]:
    method postconditions (line 1171) | def postconditions(self, function_name: str) -> List[str]:
    method functions_with_invariants (line 1196) | def functions_with_invariants(self) -> str:
    method function_with_invariants (line 1209) | def function_with_invariants(self, function_name: str) -> str:
    method __repr__ (line 1219) | def __repr__(self) -> str:
  class InvariantAnnotator (line 1170) | class InvariantAnnotator(InvariantAnnotator):
    method params (line 1131) | def params(self, function_name: str) -> str:
    method preconditions (line 1147) | def preconditions(self, function_name: str) -> List[str]:
    method postconditions (line 1171) | def postconditions(self, function_name: str) -> List[str]:
    method functions_with_invariants (line 1196) | def functions_with_invariants(self) -> str:
    method function_with_invariants (line 1209) | def function_with_invariants(self, function_name: str) -> str:
    method __repr__ (line 1219) | def __repr__(self) -> str:
  class InvariantAnnotator (line 1195) | class InvariantAnnotator(InvariantAnnotator):
    method params (line 1131) | def params(self, function_name: str) -> str:
    method preconditions (line 1147) | def preconditions(self, function_name: str) -> List[str]:
    method postconditions (line 1171) | def postconditions(self, function_name: str) -> List[str]:
    method functions_with_invariants (line 1196) | def functions_with_invariants(self) -> str:
    method function_with_invariants (line 1209) | def function_with_invariants(self, function_name: str) -> str:
    method __repr__ (line 1219) | def __repr__(self) -> str:
  function sum2 (line 1240) | def sum2(a, b):  # type: ignore
  function list_length (line 1351) | def list_length(elems: List[Any]) -> int:
  function print_sum (line 1371) | def print_sum(a, b):  # type: ignore
  function square_root_with_union_type (line 1470) | def square_root_with_union_type(x: Union[int, float]) -> float:  # type:...
  function square_root_with_local_types (line 1480) | def square_root_with_local_types(x: Union[int, float]) -> float:
  function remove_first_char (line 1497) | def remove_first_char(s: str) -> str:
  function verbose_condition (line 1504) | def verbose_condition(precondition: Optional[Callable] = None,
  function verbose_precondition (line 1527) | def verbose_precondition(check: Callable, **kwargs: Any) -> Callable:
  function verbose_postcondition (line 1531) | def verbose_postcondition(check: Callable, **kwargs: Any) -> Callable:
  function remove_first_char (line 1536) | def remove_first_char(s: str) -> str:
  class VerboseInvariantAnnotator (line 1546) | class VerboseInvariantAnnotator(InvariantAnnotator):
    method preconditions (line 1547) | def preconditions(self, function_name: str) -> List[str]:
    method postconditions (line 1562) | def postconditions(self, function_name: str) -> List[str]:
  class VerboseInvariantAnnotator (line 1561) | class VerboseInvariantAnnotator(VerboseInvariantAnnotator):
    method preconditions (line 1547) | def preconditions(self, function_name: str) -> List[str]:
    method postconditions (line 1562) | def postconditions(self, function_name: str) -> List[str]:
  class EmbeddedInvariantAnnotator (line 1610) | class EmbeddedInvariantAnnotator(InvariantTracer):
    method function_with_invariants_ast (line 1611) | def function_with_invariants_ast(self, function_name: str) -> ast.AST:
    method function_with_invariants (line 1614) | def function_with_invariants(self, function_name: str) -> str:
  function annotate_invariants (line 1617) | def annotate_invariants(invariants: Dict[str, Invariants]) -> Dict[str, ...
  function annotate_function_with_invariants (line 1628) | def annotate_function_with_invariants(function_name: str,
  function annotate_function_ast_with_invariants (line 1639) | def annotate_function_ast_with_invariants(function_ast: ast.AST,
  class PreconditionTransformer (line 1644) | class PreconditionTransformer(ast.NodeTransformer):
    method __init__ (line 1645) | def __init__(self, invariants: Invariants) -> None:
    method preconditions (line 1649) | def preconditions(self) -> List[ast.stmt]:
    method insert_assertions (line 1660) | def insert_assertions(self, body: List[ast.stmt]) -> List[ast.stmt]:
    method visit_FunctionDef (line 1672) | def visit_FunctionDef(self, node: ast.FunctionDef) -> ast.FunctionDef:
  class EmbeddedInvariantTransformer (line 1678) | class EmbeddedInvariantTransformer(PreconditionTransformer):
    method postconditions (line 1698) | def postconditions(self) -> List[ast.stmt]:
    method insert_assertions (line 1711) | def insert_assertions(self, body: List[ast.stmt]) -> List[ast.stmt]:
  class EmbeddedInvariantTransformer (line 1697) | class EmbeddedInvariantTransformer(EmbeddedInvariantTransformer):
    method postconditions (line 1698) | def postconditions(self) -> List[ast.stmt]:
    method insert_assertions (line 1711) | def insert_assertions(self, body: List[ast.stmt]) -> List[ast.stmt]:
  function sum2 (line 1798) | def sum2(a, b):  # type: ignore

FILE: docs/beta/code/ExpectError.py
  class ExpectError (line 86) | class ExpectError:
    method __init__ (line 89) | def __init__(self, exc_type: Optional[type] = None,
    method __enter__ (line 100) | def __enter__(self) -> Any:
    method __exit__ (line 104) | def __exit__(self, exc_type: type,
  function fail_test (line 130) | def fail_test() -> None:
  class ExpectTimeout (line 164) | class ExpectTimeout(Timeout):  # type: ignore
    method __init__ (line 167) | def __init__(self, timeout: Union[int, float],
    method __exit__ (line 179) | def __exit__(self, exc_type: type,
  function long_running_test (line 204) | def long_running_test() -> None:

FILE: docs/beta/code/Intro_Debugging.py
  function remove_html_markup (line 85) | def remove_html_markup(s):  # type: ignore
  function graph (line 173) | def graph(comment: str ="default") -> Digraph:
  function remove_html_markup (line 217) | def remove_html_markup(s):  # type: ignore
  function remove_html_markup_with_print (line 275) | def remove_html_markup_with_print(s):  # type: ignore
  function remove_html_markup_without_quotes (line 304) | def remove_html_markup_without_quotes(s):  # type: ignore
  function remove_html_markup_fixed (line 335) | def remove_html_markup_fixed(s):  # type: ignore
  function execution_diagram (line 357) | def execution_diagram(show_steps: bool = True, variables: List[str] = [],
  function remove_html_markup_with_tag_assert (line 547) | def remove_html_markup_with_tag_assert(s):  # type: ignore
  function remove_html_markup_with_quote_assert (line 586) | def remove_html_markup_with_quote_assert(s):  # type: ignore
  function remove_html_markup (line 650) | def remove_html_markup(s):  # type: ignore
  function remove_html_markup (line 725) | def remove_html_markup(s):  # type: ignore
  function remove_html_markup_with_proper_quotes (line 922) | def remove_html_markup_with_proper_quotes(s):  # type: ignore

FILE: docs/beta/code/PerformanceDebugger.py
  class PerformanceTracer (line 159) | class PerformanceTracer(Tracer):
    method __init__ (line 162) | def __init__(self) -> None:
    method reset_timer (line 169) | def reset_timer(self) -> None:
    method __enter__ (line 175) | def __enter__(self) -> Any:
    method traceit (line 182) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
  class PerformanceTracer (line 174) | class PerformanceTracer(PerformanceTracer):
    method __init__ (line 162) | def __init__(self) -> None:
    method reset_timer (line 169) | def reset_timer(self) -> None:
    method __enter__ (line 175) | def __enter__(self) -> Any:
    method traceit (line 182) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
  class PerformanceTracer (line 181) | class PerformanceTracer(PerformanceTracer):
    method __init__ (line 162) | def __init__(self) -> None:
    method reset_timer (line 169) | def reset_timer(self) -> None:
    method __enter__ (line 175) | def __enter__(self) -> Any:
    method traceit (line 182) | def traceit(self, frame: FrameType, event: str, arg: Any) -> None:
  class MetricCollector (line 222) | class MetricCollector(CoverageCollector):
    method metric (line 225) | def metric(self, event: Any) -> Optional[float]:
    method all_metrics (line 229) | def all_metrics(self, func: str) -> List[float]:
    method total (line 234) | def total(self, func: str) -> float:
    method maximum (line 237) | def maximum(self, func: str) -> float:
  class MetricCollector (line 233) | class MetricCollector(MetricCollector):
    method metric (line 225) | def metric(self, event: Any) -> Optional[float]:
    method all_metrics (line 229) | def all_metrics(self, func: str) -> List[float]:
    method total (line 234) | def total(self, func: str) -> float:
    method maximum (line 237) | def maximum(self, func: str) -> float:
  class TimeCollector (line 240) | class TimeCollector(MetricCollector):
    method __init__ (line 243) | def __init__(self) -> None:
    method collect (line 250) | def collect(self, frame: FrameType, event: str, arg: Any) -> None:
    method reset_timer (line 261) | def reset_timer(self) -> None:
    method __enter__ (line 264) | def __enter__(self) -> Any:
    method metric (line 270) | def metric(self, location: Any) -> Optional[float]:
    method all_metrics (line 276) | def all_metrics(self, func: str) -> List[float]:
  class TimeCollector (line 269) | class TimeCollector(TimeCollector):
    method __init__ (line 243) | def __init__(self) -> None:
    method collect (line 250) | def collect(self, frame: FrameType, event: str, arg: Any) -> None:
    method reset_timer (line 261) | def reset_timer(self) -> None:
    method __enter__ (line 264) | def __enter__(self) -> Any:
    method metric (line 270) | def metric(self, location: Any) -> Optional[float]:
    method all_metrics (line 276) | def all_metrics(self, func: str) -> List[float]:
  class MetricDebugger (line 300) | class MetricDebugger(SpectrumDebugger):
    method metric (line 303) | def metric(self, location: Location) -> float:
    method total (line 314) | def total(self, func_name: str) -> float:
    method maximum (line 323) | def maximum(self, func_name: str) -> float:
    method suspiciousness (line 333) | def suspiciousness(self, location: Location) -> float:
    method color (line 337) | def color(self, location: Location) -> str:
    method tooltip (line 345) | def tooltip(self, location: Location) -> str:
  class PerformanceDebugger (line 348) | class PerformanceDebugger(MetricDebugger):
    method __init__ (line 351) | def __init__(self, collector_class: Type, log: bool = False):
  class HitCollector (line 373) | class HitCollector(MetricCollector):
    method __init__ (line 376) | def __init__(self) -> None:
    method collect (line 380) | def collect(self, frame: FrameType, event: str, arg: Any) -> None:
    method metric (line 387) | def metric(self, location: Location) -> Optional[int]:
    method all_metrics (line 393) | def all_metrics(self, func: str) -> List[float]:
  function remove_html_markup_ampersand (line 422) | def remove_html_markup_ampersand(s: str) -> str:
  function remove_html_test (line 449) | def remove_html_test(s: str) -> None:

FILE: docs/beta/code/RailroadDiagrams.py
  class C (line 57) | class C:
  function e (line 97) | def e(text):
  function determineGaps (line 103) | def determineGaps(outer, inner):
  function doubleenumerate (line 112) | def doubleenumerate(seq):
  function addDebug (line 117) | def addDebug(el):
  class DiagramItem (line 123) | class DiagramItem(object):
    method __init__ (line 124) | def __init__(self, name, attrs=None, text=None):
    method format (line 134) | def format(self, x, y, width):
    method addTo (line 137) | def addTo(self, parent):
    method writeSvg (line 141) | def writeSvg(self, write):
    method __eq__ (line 155) | def __eq__(self, other):
    method __ne__ (line 159) | def __ne__(self, other):
  class Path (line 162) | class Path(DiagramItem):
    method __init__ (line 163) | def __init__(self, x, y):
    method m (line 168) | def m(self, x, y):
    method ll (line 172) | def ll(self, x, y):   # was l(), which violates PEP8 -- AZ
    method h (line 176) | def h(self, val):
    method right (line 180) | def right(self, val):
    method left (line 183) | def left(self, val):
    method v (line 186) | def v(self, val):
    method down (line 190) | def down(self, val):
    method up (line 193) | def up(self, val):
    method arc_8 (line 196) | def arc_8(self, start, dir):
    method arc (line 240) | def arc(self, sweep):
    method format (line 251) | def format(self):
    method __repr__ (line 255) | def __repr__(self):
  function wrapString (line 258) | def wrapString(value):
  class Style (line 261) | class Style(DiagramItem):
    method __init__ (line 262) | def __init__(self, css):
    method __repr__ (line 269) | def __repr__(self):
    method format (line 272) | def format(self, x, y, width):
    method writeSvg (line 275) | def writeSvg(self, write):
  class Diagram (line 281) | class Diagram(DiagramItem):
    method __init__ (line 282) | def __init__(self, *items, **kwargs):
    method __repr__ (line 312) | def __repr__(self):
    method format (line 324) | def format(self, paddingTop=20, paddingRight=None,
    method writeSvg (line 355) | def writeSvg(self, write):
    method parseCSSGrammar (line 3
Copy disabled (too large) Download .json
Condensed preview — 1659 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (109,401K chars).
[
  {
    "path": ".gitattributes",
    "chars": 108,
    "preview": "# Normally, notebooks in this folder are saved _without_ output\n*.ipynb\tfilter=nbstripout\n*.ipynb\tdiff=ipynb"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 648,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\n\n---\n\n**Describe the bug**\nA clear and concise descriptio"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 560,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\n\n---\n\n**Is your feature request related to a problem? "
  },
  {
    "path": ".github/workflows/check-code.yml",
    "chars": 2300,
    "preview": "# This is a basic workflow to help you get started with Actions\n\nname: Python Tests\n\n# Controls when the action will run"
  },
  {
    "path": ".github/workflows/check-imports.yml",
    "chars": 1899,
    "preview": "# This is a basic workflow to help you get started with Actions\n\nname: Import Checks\n\n# Controls when the action will ru"
  },
  {
    "path": ".github/workflows/check-notebooks.yml",
    "chars": 2078,
    "preview": "# This is a basic workflow to help you get started with Actions\n\nname: Notebook Tests\n\n# Controls when the action will r"
  },
  {
    "path": ".github/workflows/check-types.yml",
    "chars": 1941,
    "preview": "# This is a basic workflow to help you get started with Actions\n\nname: Static Type Checks\n\n# Controls when the action wi"
  },
  {
    "path": ".gitignore",
    "chars": 1569,
    "preview": "# Mac-specific files\n.DS_Store\n\n# Tool-specific files\n.ipynb_checkpoints/\n__pycache__/\n**/__pycache__/\n\n# Chapter target"
  },
  {
    "path": ".gitmodules",
    "chars": 218,
    "preview": "[submodule \"slides/reveal.js\"]\n\tpath = slides/reveal.js\n\turl = https://github.com/hakimel/reveal.js.git\n[submodule \"beta"
  },
  {
    "path": "BADGES.md",
    "chars": 1573,
    "preview": "<!-- Debuggingbook README -->\n\n<!-- Badges to be shown on project page -->\n\n[![Code Tests](https://github.com/uds-se/deb"
  },
  {
    "path": "CITATION.cff",
    "chars": 518,
    "preview": "cff-version: 1.2.0\nmessage: \"If you use this software, please cite it as below.\"\nauthors:\n- family-names: \"Zeller\"\n  giv"
  },
  {
    "path": "Chapters.makefile",
    "chars": 3801,
    "preview": "# Debuggingbook Makefile\n# This file defines the chapter files to be included\n\n# Name of the project\nPROJECT = debugging"
  },
  {
    "path": "LICENSE.md",
    "chars": 20539,
    "preview": "# \"The Debugging Book\" License\n\nThe content of this project is licensed under the _Creative Commons Attribution-NonComme"
  },
  {
    "path": "README.md",
    "chars": 4293,
    "preview": "<!-- Debuggingbook README -->\n\n<!-- Badges to be shown on project page -->\n\n[![Code Tests](https://github.com/uds-se/deb"
  },
  {
    "path": "_config.yml",
    "chars": 2297,
    "preview": "title: The Debugging Book\nauthor: Andreas Zeller\ncopyright: 2021-2025 CISPA Helmholtz Center for Information Security (w"
  },
  {
    "path": "_static/custom.css",
    "chars": 995,
    "preview": "/* \n    CSS stylesheet for fuzzingbook\n\n    This is used for the JB HTML version.\n*/\n\n/* Loading fonts in Jupyter */\n@im"
  },
  {
    "path": "_static/mastodon-timeline.css",
    "chars": 8437,
    "preview": "/* Mastodon embed feed timeline v3.10.4 */\n/* More info at: */\n/* https://gitlab.com/idotj/mastodon-embed-feed-timeline "
  },
  {
    "path": "_toc.yml",
    "chars": 1049,
    "preview": "format: jb-book\nroot: index\nparts:\n  - caption: Introduction\n    chapters:\n    - file: Tours\n    - file: Intro_Debugging"
  },
  {
    "path": "binder/Dockerfile",
    "chars": 2919,
    "preview": "# Dockerfile for fuzzingbook/debuggingbook (experimental)\n\n# The repo2docker script takes a _very_ long time to execute,"
  },
  {
    "path": "binder/README.md",
    "chars": 643,
    "preview": "This folder holds the configuration files for the Binder service.\nSee [repo2docker](https://repo2docker.readthedocs.io/e"
  },
  {
    "path": "binder/apt.txt",
    "chars": 505,
    "preview": "# APT packages to install in Docker files\n# From https://github.com/DiODeProject/MuMoT\n\n# These would be helpful for PDF"
  },
  {
    "path": "binder/environment.yml",
    "chars": 718,
    "preview": "name: debuggingbook\nchannels:\n  - defaults\n  - anaconda-fusion\n  - conda-forge\n  - bjornfjohansson\n  - anaconda-platform"
  },
  {
    "path": "binder/postBuild",
    "chars": 16493,
    "preview": "#!/bin/bash\n\n# Enable incompatible extensions\n# echo postBuild: Enabling incompatible Jupyter extensions...\n# NBCONFIG_P"
  },
  {
    "path": "binder/postBuild.template",
    "chars": 1824,
    "preview": "#!/bin/bash\n\n# Enable incompatible extensions\n# echo postBuild: Enabling incompatible Jupyter extensions...\n# NBCONFIG_P"
  },
  {
    "path": "binder/requirements.txt",
    "chars": 210,
    "preview": "# Debuggingbook Binder requirements\n\n## These packages are additionally required in Binder\n\nsvglib\nselenium\nvalgrind\n\n##"
  },
  {
    "path": "docs/.gitattributes",
    "chars": 87,
    "preview": "# Notebooks in this folder are saved _with_ output\n*.ipynb\tfilter=cat\n*.ipynb\tdiff=cat\n"
  },
  {
    "path": "docs/.nojekyll",
    "chars": 132,
    "preview": "# Avoid that this site be interpreted through Jekyll\nhttps://github.blog/news-insights/the-library/bypassing-jekyll-on-g"
  },
  {
    "path": "docs/404.html",
    "chars": 270558,
    "preview": "---\npermalink: /404.html\n---\n\n<!-- A html document -->\n<!-- \nwith standard nbconvert css layout\nwith standard nbconvert "
  },
  {
    "path": "docs/CNAME",
    "chars": 21,
    "preview": "www.debuggingbook.org"
  },
  {
    "path": "docs/beta/.buildinfo",
    "chars": 230,
    "preview": "# Sphinx build info version 1\n# This file hashes the configuration used when building these files. When it is not found,"
  },
  {
    "path": "docs/beta/01_Intro.html",
    "chars": 21251,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/02_Observing.html",
    "chars": 21715,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/02_Tracking.html",
    "chars": 20674,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/03_Dependencies.html",
    "chars": 21124,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/03_Inputs.html",
    "chars": 20705,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/03_Observing.html",
    "chars": 21256,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/04_Abstracting.html",
    "chars": 20707,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/04_Inputs.html",
    "chars": 20715,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/04_Reducing.html",
    "chars": 21421,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/05_Abstracting.html",
    "chars": 21477,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/05_Repairing.html",
    "chars": 20660,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/06_In_the_Large.html",
    "chars": 20719,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/06_Repairing.html",
    "chars": 20982,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/07_In_the_Large.html",
    "chars": 21253,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/404.html",
    "chars": 26490,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/99_Appendices.html",
    "chars": 21141,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Alhazen.html",
    "chars": 443517,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Assertions.html",
    "chars": 314305,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/ChangeCounter.html",
    "chars": 196953,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/ChangeDebugger.html",
    "chars": 265196,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/ChangeExplorer.html",
    "chars": 3748114,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/ClassDiagram.html",
    "chars": 159461,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/DDSetDebugger.html",
    "chars": 224582,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Debugger.html",
    "chars": 187953,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/DeltaDebugger.html",
    "chars": 389221,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/DynamicInvariants.html",
    "chars": 465297,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/ExpectError.html",
    "chars": 54054,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Guide_for_Authors.html",
    "chars": 123925,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/IllustratedCode.html",
    "chars": 117598,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Importing.html",
    "chars": 46904,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Intro_Debugging.html",
    "chars": 200858,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/LICENSE.html",
    "chars": 49433,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/PerformanceDebugger.html",
    "chars": 204558,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Project_of_your_choice.html",
    "chars": 32322,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/README.html",
    "chars": 27391,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/RailroadDiagrams.html",
    "chars": 299314,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Reducing_Code.html",
    "chars": 140840,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/ReleaseNotes.html",
    "chars": 36434,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Repairer.html",
    "chars": 500502,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Repairing_Code.html",
    "chars": 123345,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Slicer.html",
    "chars": 703682,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/StackInspector.html",
    "chars": 65197,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/StatisticalDebugger.html",
    "chars": 410332,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Template.html",
    "chars": 36212,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/ThreadDebugger.html",
    "chars": 29985,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Time_Travel_Debugger.html",
    "chars": 114091,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Timeout.html",
    "chars": 45976,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Timer.html",
    "chars": 34172,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Tours.html",
    "chars": 49679,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Tracer.html",
    "chars": 274271,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/Tracking.html",
    "chars": 124162,
    "preview": "\n<!DOCTYPE html>\n\n\n<html lang=\"en\" data-content_root=\"./\" >\n\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta name=\"viewp"
  },
  {
    "path": "docs/beta/_downloads/24f75eabab1fe4730ed764eb3a94b2a7/Makefile",
    "chars": 50119,
    "preview": "# Fuzzingbook/Debuggingbook Makefile\n\n# HINT: This Makefile has hundreds of goals. The most important are:\n# * To see th"
  },
  {
    "path": "docs/beta/_downloads/2aa31cc0878caec6140b1808385cfc5d/fuzzingbook.bib",
    "chars": 95861,
    "preview": "@comment{ fuzzingbook bibliography }\n@comment{ All entries must have a 'url' entry the HTML version can link to! }\n\n@com"
  },
  {
    "path": "docs/beta/_sources/01_Intro.ipynb",
    "chars": 1615,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/02_Observing.ipynb",
    "chars": 1921,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/02_Tracking.ipynb",
    "chars": 1183,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/03_Dependencies.ipynb",
    "chars": 1484,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/03_Inputs.ipynb",
    "chars": 1204,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/03_Observing.ipynb",
    "chars": 1588,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/04_Abstracting.ipynb",
    "chars": 1189,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/04_Inputs.ipynb",
    "chars": 1206,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/04_Reducing.ipynb",
    "chars": 1678,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/05_Abstracting.ipynb",
    "chars": 1735,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/05_Repairing.ipynb",
    "chars": 1172,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/06_In_the_Large.ipynb",
    "chars": 1188,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/06_Repairing.ipynb",
    "chars": 1399,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/07_In_the_Large.ipynb",
    "chars": 1555,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/404.ipynb",
    "chars": 5421,
    "preview": "{\n \"cells\": [\n  {\n   \"attachments\": {},\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet"
  },
  {
    "path": "docs/beta/_sources/99_Appendices.ipynb",
    "chars": 1481,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/Alhazen.ipynb",
    "chars": 327307,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/Assertions.ipynb",
    "chars": 291163,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/ChangeCounter.ipynb",
    "chars": 336249,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/ChangeDebugger.ipynb",
    "chars": 282903,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/ChangeExplorer.ipynb",
    "chars": 4006975,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/ClassDiagram.ipynb",
    "chars": 140726,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/DDSetDebugger.ipynb",
    "chars": 302379,
    "preview": "{\n \"cells\": [\n  {\n   \"attachments\": {},\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet"
  },
  {
    "path": "docs/beta/_sources/Debugger.ipynb",
    "chars": 160718,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/DeltaDebugger.ipynb",
    "chars": 547264,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/DynamicInvariants.ipynb",
    "chars": 423594,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/ExpectError.ipynb",
    "chars": 25822,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/Guide_for_Authors.ipynb",
    "chars": 174333,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/IllustratedCode.ipynb",
    "chars": 65345,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"415a53f6-d901-4cdf-b544-d0b65db4fccb\",\n   \"metadata\": {\n    \"sli"
  },
  {
    "path": "docs/beta/_sources/Importing.ipynb",
    "chars": 15073,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/Intro_Debugging.ipynb",
    "chars": 250247,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/LICENSE.md",
    "chars": 20539,
    "preview": "# \"The Debugging Book\" License\n\nThe content of this project is licensed under the _Creative Commons Attribution-NonComme"
  },
  {
    "path": "docs/beta/_sources/PerformanceDebugger.ipynb",
    "chars": 209684,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/Project_of_your_choice.ipynb",
    "chars": 7706,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },"
  },
  {
    "path": "docs/beta/_sources/README.md",
    "chars": 4293,
    "preview": "<!-- Debuggingbook README -->\n\n<!-- Badges to be shown on project page -->\n\n[![Code Tests](https://github.com/uds-se/deb"
  },
  {
    "path": "docs/beta/_sources/RailroadDiagrams.ipynb",
    "chars": 65679,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/Reducing_Code.ipynb",
    "chars": 145652,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },"
  },
  {
    "path": "docs/beta/_sources/ReleaseNotes.ipynb",
    "chars": 8387,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/Repairer.ipynb",
    "chars": 502784,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/Repairing_Code.ipynb",
    "chars": 80905,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },"
  },
  {
    "path": "docs/beta/_sources/Slicer.ipynb",
    "chars": 818410,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/StackInspector.ipynb",
    "chars": 40802,
    "preview": "{\n \"cells\": [\n  {\n   \"attachments\": {},\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type"
  },
  {
    "path": "docs/beta/_sources/StatisticalDebugger.ipynb",
    "chars": 435813,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/Template.ipynb",
    "chars": 13963,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/ThreadDebugger.ipynb",
    "chars": 9462,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/Time_Travel_Debugger.ipynb",
    "chars": 80311,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"pycharm\": {\n     \"name\": \"#%% md\\n\"\n    },\n    \"slid"
  },
  {
    "path": "docs/beta/_sources/Timeout.ipynb",
    "chars": 15284,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/Timer.ipynb",
    "chars": 11163,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/Tours.ipynb",
    "chars": 32383,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/Tracer.ipynb",
    "chars": 251168,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/Tracking.ipynb",
    "chars": 10210357,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"button\": false,\n    \"new_sheet\": false,\n    \"run_con"
  },
  {
    "path": "docs/beta/_sources/bookutils/README.md",
    "chars": 131,
    "preview": "This Python package holds various utilities for notebooks, \nin particular functionality such that notebooks can import e"
  },
  {
    "path": "docs/beta/_sources/index.ipynb",
    "chars": 18653,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"slideshow\": {\n     \"slide_type\": \"slide\"\n    }\n   },"
  },
  {
    "path": "docs/beta/_sphinx_design_static/design-tabs.js",
    "chars": 2780,
    "preview": "// @ts-check\n\n// Extra JS capability for selected tabs to be synced\n// The selection is stored in local storage so that "
  },
  {
    "path": "docs/beta/_static/basic.css",
    "chars": 15094,
    "preview": "/*\n * basic.css\n * ~~~~~~~~~\n *\n * Sphinx stylesheet -- basic theme.\n *\n * :copyright: Copyright 2007-2024 by the Sphinx"
  },
  {
    "path": "docs/beta/_static/copybutton.css",
    "chars": 2060,
    "preview": "/* Copy buttons */\nbutton.copybtn {\n    position: absolute;\n    display: flex;\n    top: .3em;\n    right: .3em;\n    width"
  },
  {
    "path": "docs/beta/_static/copybutton.js",
    "chars": 8373,
    "preview": "// Localization support\nconst messages = {\n  'en': {\n    'copy': 'Copy',\n    'copy_to_clipboard': 'Copy to clipboard',\n "
  },
  {
    "path": "docs/beta/_static/copybutton_funcs.js",
    "chars": 2698,
    "preview": "function escapeRegExp(string) {\n    return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched "
  },
  {
    "path": "docs/beta/_static/custom.css",
    "chars": 995,
    "preview": "/* \n    CSS stylesheet for fuzzingbook\n\n    This is used for the JB HTML version.\n*/\n\n/* Loading fonts in Jupyter */\n@im"
  },
  {
    "path": "docs/beta/_static/design-tabs.js",
    "chars": 2780,
    "preview": "// @ts-check\n\n// Extra JS capability for selected tabs to be synced\n// The selection is stored in local storage so that "
  },
  {
    "path": "docs/beta/_static/doctools.js",
    "chars": 4472,
    "preview": "/*\n * doctools.js\n * ~~~~~~~~~~~\n *\n * Base JavaScript utilities for all Sphinx HTML documentation.\n *\n * :copyright: Co"
  },
  {
    "path": "docs/beta/_static/documentation_options.js",
    "chars": 319,
    "preview": "const DOCUMENTATION_OPTIONS = {\n    VERSION: '',\n    LANGUAGE: 'en',\n    COLLAPSE_INDEX: false,\n    BUILDER: 'html',\n   "
  },
  {
    "path": "docs/beta/_static/language_data.js",
    "chars": 4758,
    "preview": "/*\n * language_data.js\n * ~~~~~~~~~~~~~~~~\n *\n * This script contains the language-specific data used by searchtools.js,"
  },
  {
    "path": "docs/beta/_static/locales/ar/LC_MESSAGES/booktheme.po",
    "chars": 1218,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/bg/LC_MESSAGES/booktheme.po",
    "chars": 1305,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/bn/LC_MESSAGES/booktheme.po",
    "chars": 1086,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/ca/LC_MESSAGES/booktheme.po",
    "chars": 1154,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/cs/LC_MESSAGES/booktheme.po",
    "chars": 1282,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/da/LC_MESSAGES/booktheme.po",
    "chars": 1217,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/de/LC_MESSAGES/booktheme.po",
    "chars": 1303,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/el/LC_MESSAGES/booktheme.po",
    "chars": 1312,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/eo/LC_MESSAGES/booktheme.po",
    "chars": 1241,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/es/LC_MESSAGES/booktheme.po",
    "chars": 1310,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/et/LC_MESSAGES/booktheme.po",
    "chars": 1249,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/fi/LC_MESSAGES/booktheme.po",
    "chars": 1273,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/fr/LC_MESSAGES/booktheme.po",
    "chars": 1311,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/hr/LC_MESSAGES/booktheme.po",
    "chars": 1309,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/id/LC_MESSAGES/booktheme.po",
    "chars": 1241,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/it/LC_MESSAGES/booktheme.po",
    "chars": 1320,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/iw/LC_MESSAGES/booktheme.po",
    "chars": 1169,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/ja/LC_MESSAGES/booktheme.po",
    "chars": 1101,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/ko/LC_MESSAGES/booktheme.po",
    "chars": 1077,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/lt/LC_MESSAGES/booktheme.po",
    "chars": 1307,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/lv/LC_MESSAGES/booktheme.po",
    "chars": 1280,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/ml/LC_MESSAGES/booktheme.po",
    "chars": 1187,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/mr/LC_MESSAGES/booktheme.po",
    "chars": 1118,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/ms/LC_MESSAGES/booktheme.po",
    "chars": 1133,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/nl/LC_MESSAGES/booktheme.po",
    "chars": 1274,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/no/LC_MESSAGES/booktheme.po",
    "chars": 1232,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/pl/LC_MESSAGES/booktheme.po",
    "chars": 1268,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/pt/LC_MESSAGES/booktheme.po",
    "chars": 1265,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/ro/LC_MESSAGES/booktheme.po",
    "chars": 1285,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/ru/LC_MESSAGES/booktheme.po",
    "chars": 1310,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/sk/LC_MESSAGES/booktheme.po",
    "chars": 1275,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/sl/LC_MESSAGES/booktheme.po",
    "chars": 1284,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/sr/LC_MESSAGES/booktheme.po",
    "chars": 1285,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/sv/LC_MESSAGES/booktheme.po",
    "chars": 1265,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/ta/LC_MESSAGES/booktheme.po",
    "chars": 1200,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/te/LC_MESSAGES/booktheme.po",
    "chars": 1162,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/tg/LC_MESSAGES/booktheme.po",
    "chars": 1264,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/th/LC_MESSAGES/booktheme.po",
    "chars": 1194,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/tl/LC_MESSAGES/booktheme.po",
    "chars": 1193,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/tr/LC_MESSAGES/booktheme.po",
    "chars": 1266,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/uk/LC_MESSAGES/booktheme.po",
    "chars": 1289,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/ur/LC_MESSAGES/booktheme.po",
    "chars": 1138,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/vi/LC_MESSAGES/booktheme.po",
    "chars": 1236,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/zh_CN/LC_MESSAGES/booktheme.po",
    "chars": 1052,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/locales/zh_TW/LC_MESSAGES/booktheme.po",
    "chars": 1075,
    "preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Sphinx-Book-Theme\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=U"
  },
  {
    "path": "docs/beta/_static/mastodon-timeline.css",
    "chars": 8437,
    "preview": "/* Mastodon embed feed timeline v3.10.4 */\n/* More info at: */\n/* https://gitlab.com/idotj/mastodon-embed-feed-timeline "
  },
  {
    "path": "docs/beta/_static/mystnb.8ecb98da25f57f5357bf6f572d296f466b2cfe2517ffebfabe82451661e28f02.css",
    "chars": 43619,
    "preview": "/* Variables */\n:root {\n  /*\n  Following palettes are generated by using https://m2.material.io/design/color/the-color-s"
  },
  {
    "path": "docs/beta/_static/pygments.css",
    "chars": 12755,
    "preview": "html[data-theme=\"light\"] .highlight pre { line-height: 125%; }\nhtml[data-theme=\"light\"] .highlight td.linenos .normal { "
  },
  {
    "path": "docs/beta/_static/sbt-webpack-macros.html",
    "chars": 419,
    "preview": "<!--\n  All these macros are auto-generated and must **NOT** be edited by hand.\n  See the webpack.config.js file, to lear"
  },
  {
    "path": "docs/beta/_static/scripts/bootstrap.js",
    "chars": 81704,
    "preview": "/*! For license information please see bootstrap.js.LICENSE.txt */\n(()=>{\"use strict\";var t={d:(e,i)=>{for(var n in i)t."
  },
  {
    "path": "docs/beta/_static/scripts/bootstrap.js.LICENSE.txt",
    "chars": 237,
    "preview": "/*!\n  * Bootstrap v5.3.3 (https://getbootstrap.com/)\n  * Copyright 2011-2024 The Bootstrap Authors (https://github.com/t"
  },
  {
    "path": "docs/beta/_static/scripts/pydata-sphinx-theme.js",
    "chars": 10908,
    "preview": "(()=>{\"use strict\";function e(e){\"loading\"!=document.readyState?e():document.addEventListener(\"DOMContentLoaded\",e)}cons"
  },
  {
    "path": "docs/beta/_static/scripts/sphinx-book-theme.js",
    "chars": 2129,
    "preview": "(()=>{\"use strict\";var e=e=>{\"loading\"!=document.readyState?e():document.addEventListener?document.addEventListener(\"DOM"
  },
  {
    "path": "docs/beta/_static/searchtools.js",
    "chars": 20842,
    "preview": "/*\n * searchtools.js\n * ~~~~~~~~~~~~~~~~\n *\n * Sphinx JavaScript utilities for the full-text search.\n *\n * :copyright: C"
  }
]

// ... and 1459 more files (download for full content)

About this extraction

This page contains the full source code of the uds-se/debuggingbook GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1659 files (219.1 MB), approximately 26.3M tokens, and a symbol index with 2687 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!