gitextract_yj7g7chq/ ├── .basedpyright/ │ └── baseline.json ├── .circleci/ │ └── config.yml ├── .github/ │ └── workflows/ │ └── add-to-arlo.yml ├── .gitignore ├── .gitmodules ├── .husky/ │ └── pre-commit ├── .prettierignore ├── .pylintrc ├── .python-version ├── .slugignore ├── .vscode/ │ └── settings.json ├── LICENSE ├── Makefile ├── Procfile ├── README.md ├── alembic.ini ├── app.json ├── arlo.code-workspace ├── client/ │ ├── .eslintignore │ ├── .eslintrc.js │ ├── .gitignore │ ├── .node-version │ ├── .prettierignore │ ├── .prettierrc.js │ ├── .stylelintrc-css.js │ ├── .stylelintrc.js │ ├── Makefile │ ├── cypress/ │ │ ├── end-to-end/ │ │ │ ├── ballot-comparison.cy.js │ │ │ ├── ballot-polling.cy.js │ │ │ ├── batch-comparison.cy.js │ │ │ └── full-hand-tally.cy.js │ │ ├── fixtures/ │ │ │ ├── CSVs/ │ │ │ │ ├── candidate-total-batch/ │ │ │ │ │ └── sample_candidate_totals_by_batch.csv │ │ │ │ ├── contest/ │ │ │ │ │ ├── ballot_comparison_contests.csv │ │ │ │ │ ├── sample_standardized_contests.csv │ │ │ │ │ ├── sample_standardized_contests_contest_name_col_error.csv │ │ │ │ │ └── sample_standardized_contests_jurisdiction_col_error.csv │ │ │ │ ├── cvr/ │ │ │ │ │ ├── ballot_comparison_cvr.csv │ │ │ │ │ └── ballot_comparison_cvr_col_error.csv │ │ │ │ ├── jurisdiction/ │ │ │ │ │ ├── sample_jurisdiction_filesheet.csv │ │ │ │ │ └── sample_jurisdiction_filesheet_jurisdiction_col_error.csv │ │ │ │ └── manifest/ │ │ │ │ ├── ballot_comparison_manifest.csv │ │ │ │ ├── ballot_comparison_manifest_col_error.csv │ │ │ │ ├── ballot_polling_manifest.csv │ │ │ │ ├── ballot_polling_manifest_col_error.csv │ │ │ │ └── batch_comparison_manifest.csv │ │ │ └── example.json │ │ ├── plugins.ts │ │ ├── seed-test-db.sh │ │ └── support/ │ │ ├── commands.js │ │ └── e2e.js │ ├── cypress.config.ts │ ├── index.html │ ├── package.json │ ├── public/ │ │ ├── 99e97f1f-18fd-4ba7-8ce7-189287f60bf3.txt │ │ ├── manifest.json │ │ ├── sample_ballot_manifest.csv │ │ ├── sample_candidate_totals_by_batch.csv │ │ ├── sample_jurisdiction_filesheet.csv │ │ ├── sample_manifest_BC.csv │ │ ├── sample_manifest_hybrid.csv │ │ ├── sample_standardized_contests.csv │ │ └── us-states-counties.json │ ├── run-cypress-tests.sh │ ├── src/ │ │ ├── App.css │ │ ├── App.test.tsx │ │ ├── App.tsx │ │ ├── components/ │ │ │ ├── Atoms/ │ │ │ │ ├── AsyncButton.test.tsx │ │ │ │ ├── AsyncButton.tsx │ │ │ │ ├── CSVForm.tsx │ │ │ │ ├── CodeInput.test.tsx │ │ │ │ ├── CodeInput.tsx │ │ │ │ ├── Confirm.test.tsx │ │ │ │ ├── Confirm.tsx │ │ │ │ ├── CopyToClipboard.test.tsx │ │ │ │ ├── CopyToClipboard.tsx │ │ │ │ ├── Count.test.tsx │ │ │ │ ├── Count.tsx │ │ │ │ ├── FileUpload.test.tsx │ │ │ │ ├── FileUpload.tsx │ │ │ │ ├── Form/ │ │ │ │ │ ├── FormButton.tsx │ │ │ │ │ ├── FormButtonBar.tsx │ │ │ │ │ ├── FormField.test.tsx │ │ │ │ │ ├── FormField.tsx │ │ │ │ │ ├── FormSection.tsx │ │ │ │ │ ├── FormWrapper.tsx │ │ │ │ │ ├── Select.tsx │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ └── FormField.test.tsx.snap │ │ │ │ │ ├── _helpers.tsx │ │ │ │ │ └── styledBits.tsx │ │ │ │ ├── H2Title.tsx │ │ │ │ ├── H3Title.tsx │ │ │ │ ├── Layout.tsx │ │ │ │ ├── LinkButton.tsx │ │ │ │ ├── ListAndDetail.tsx │ │ │ │ ├── RefreshTag.test.tsx │ │ │ │ ├── RefreshTag.tsx │ │ │ │ ├── SegmentedControl.test.tsx │ │ │ │ ├── SegmentedControl.tsx │ │ │ │ ├── Sidebar.test.tsx │ │ │ │ ├── Sidebar.tsx │ │ │ │ ├── SpacedCard.tsx │ │ │ │ ├── StatusBar.tsx │ │ │ │ ├── StatusBox.test.tsx │ │ │ │ ├── StatusBox.tsx │ │ │ │ ├── StatusTag.tsx │ │ │ │ ├── Steps.test.tsx │ │ │ │ ├── Steps.tsx │ │ │ │ ├── Table.tsx │ │ │ │ ├── Wrapper.tsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── Sidebar.test.tsx.snap │ │ │ │ └── react-table-config.d.ts │ │ │ ├── AuditAdmin/ │ │ │ │ ├── ActivityLog.test.tsx │ │ │ │ ├── ActivityLog.tsx │ │ │ │ ├── AuditAdminView.test.tsx │ │ │ │ ├── AuditAdminView.tsx │ │ │ │ ├── Progress/ │ │ │ │ │ ├── AuditBoardsTable.tsx │ │ │ │ │ ├── JurisdictionDetail.test.tsx │ │ │ │ │ ├── JurisdictionDetail.tsx │ │ │ │ │ ├── JurisdictionDiscrepancies.tsx │ │ │ │ │ ├── Progress.test.tsx │ │ │ │ │ ├── Progress.tsx │ │ │ │ │ ├── ProgressMap.tsx │ │ │ │ │ └── map-county-corrections.ts │ │ │ │ ├── Setup/ │ │ │ │ │ ├── Contests/ │ │ │ │ │ │ ├── ContestForm.tsx │ │ │ │ │ │ ├── ContestSelect.test.tsx │ │ │ │ │ │ ├── ContestSelect.tsx │ │ │ │ │ │ ├── Contests.test.tsx │ │ │ │ │ │ ├── Contests.tsx │ │ │ │ │ │ ├── HybridContestForm.test.tsx │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── Contests.test.tsx.snap │ │ │ │ │ │ │ └── HybridContestForm.test.tsx.snap │ │ │ │ │ │ ├── _mocks.ts │ │ │ │ │ │ └── schema.ts │ │ │ │ │ ├── Participants/ │ │ │ │ │ │ ├── Participants.test.tsx │ │ │ │ │ │ ├── Participants.tsx │ │ │ │ │ │ └── _mocks.ts │ │ │ │ │ ├── Review/ │ │ │ │ │ │ ├── ConfirmLaunch.tsx │ │ │ │ │ │ ├── CvrChoiceNameConsistencyError.tsx │ │ │ │ │ │ ├── LabeledValue.tsx │ │ │ │ │ │ ├── Review.test.tsx │ │ │ │ │ │ ├── Review.tsx │ │ │ │ │ │ ├── SamplePreview.tsx │ │ │ │ │ │ ├── StandardizeContestChoiceNamesDialog.tsx │ │ │ │ │ │ ├── StandardizeContestNames.tsx │ │ │ │ │ │ ├── _mocks.ts │ │ │ │ │ │ └── useSampleSizes.ts │ │ │ │ │ ├── Settings/ │ │ │ │ │ │ ├── Settings.test.tsx │ │ │ │ │ │ ├── Settings.tsx │ │ │ │ │ │ ├── schema.ts │ │ │ │ │ │ └── states.ts │ │ │ │ │ ├── Setup.test.tsx │ │ │ │ │ └── Setup.tsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── ActivityLog.test.tsx.snap │ │ │ │ │ └── AuditAdminView.test.tsx.snap │ │ │ │ ├── timers.test.tsx │ │ │ │ └── useRoundsAuditAdmin.ts │ │ │ ├── AuditBoard/ │ │ │ │ ├── Atoms.tsx │ │ │ │ ├── AuditBoardView.test.tsx │ │ │ │ ├── AuditBoardView.tsx │ │ │ │ ├── Ballot.test.tsx │ │ │ │ ├── Ballot.tsx │ │ │ │ ├── BallotAudit.tsx │ │ │ │ ├── BlockCheckbox.tsx │ │ │ │ ├── BoardTable.test.tsx │ │ │ │ ├── BoardTable.tsx │ │ │ │ ├── MemberForm.test.tsx │ │ │ │ ├── MemberForm.tsx │ │ │ │ ├── SignOff.test.tsx │ │ │ │ ├── SignOff.tsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── AuditBoardView.test.tsx.snap │ │ │ │ │ ├── Ballot.test.tsx.snap │ │ │ │ │ ├── BoardTable.test.tsx.snap │ │ │ │ │ ├── MemberForm.test.tsx.snap │ │ │ │ │ └── SignOff.test.tsx.snap │ │ │ │ ├── _mocks.ts │ │ │ │ ├── ballotInterpretation.test.ts │ │ │ │ └── ballotInterpretation.ts │ │ │ ├── Header.test.tsx │ │ │ ├── Header.tsx │ │ │ ├── HomeScreen.test.tsx │ │ │ ├── HomeScreen.tsx │ │ │ ├── JurisdictionAdmin/ │ │ │ │ ├── BatchInventory.test.tsx │ │ │ │ ├── BatchInventory.tsx │ │ │ │ ├── BatchRoundProgress.tsx │ │ │ │ ├── BatchRoundSteps/ │ │ │ │ │ ├── BatchRoundSteps.test.tsx │ │ │ │ │ ├── BatchRoundSteps.tsx │ │ │ │ │ ├── BatchRoundTallyEntry/ │ │ │ │ │ │ ├── BatchDetail.tsx │ │ │ │ │ │ ├── BatchRoundTallyEntry.test.tsx │ │ │ │ │ │ ├── BatchRoundTallyEntry.tsx │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── DownloadBatchRetrievalListButton.tsx │ │ │ │ │ ├── DownloadBatchTallySheetsButton.tsx │ │ │ │ │ ├── DownloadStackLabelsButton.tsx │ │ │ │ │ ├── EnterTalliesStep.tsx │ │ │ │ │ ├── PrepareBatchesStep.tsx │ │ │ │ │ └── TallyEntryAccountsStep.tsx │ │ │ │ ├── CreateAuditBoards.test.tsx │ │ │ │ ├── CreateAuditBoards.tsx │ │ │ │ ├── FullHandTallyDataEntry.test.tsx │ │ │ │ ├── FullHandTallyDataEntry.tsx │ │ │ │ ├── JurisdictionAdminView.test.tsx │ │ │ │ ├── JurisdictionAdminView.tsx │ │ │ │ ├── QRs.tsx │ │ │ │ ├── RoundDataEntry.test.tsx │ │ │ │ ├── RoundDataEntry.tsx │ │ │ │ ├── RoundManagement.test.tsx │ │ │ │ ├── RoundManagement.tsx │ │ │ │ ├── RoundProgress.test.tsx │ │ │ │ ├── RoundProgress.tsx │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── FullHandTallyDataEntry.test.tsx.snap │ │ │ │ │ └── RoundProgress.test.tsx.snap │ │ │ │ ├── _mocks.ts │ │ │ │ ├── candidateTotalsByBatchTemplateCsv.ts │ │ │ │ ├── generateSheets.test.tsx │ │ │ │ ├── generateSheets.ts │ │ │ │ ├── useAuditSettingsJurisdictionAdmin.ts │ │ │ │ ├── useBallots.ts │ │ │ │ ├── useBatchResults.ts │ │ │ │ ├── useContestsJurisdictionAdmin.ts │ │ │ │ ├── useFullHandTallyResults.ts │ │ │ │ ├── useResults.ts │ │ │ │ └── useRoundsJurisdictionAdmin.ts │ │ │ ├── PublicPages/ │ │ │ │ ├── AuditPlanner/ │ │ │ │ │ ├── AuditPlanCard.tsx │ │ │ │ │ ├── AuditPlanner.test.tsx │ │ │ │ │ ├── AuditPlanner.tsx │ │ │ │ │ ├── ElectionResultsCard.tsx │ │ │ │ │ ├── SampleSize.tsx │ │ │ │ │ ├── electionResults.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── sampleSizes.ts │ │ │ │ ├── NotFound.tsx │ │ │ │ └── PublicPages.tsx │ │ │ ├── SupportTools/ │ │ │ │ ├── Audit.tsx │ │ │ │ ├── Breadcrumbs.tsx │ │ │ │ ├── Jurisdiction.tsx │ │ │ │ ├── List.tsx │ │ │ │ ├── Organization.tsx │ │ │ │ ├── RoundsTable.tsx │ │ │ │ ├── SupportTools.test.tsx │ │ │ │ ├── SupportTools.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── shared.tsx │ │ │ │ └── support-api.tsx │ │ │ ├── TallyEntryUser/ │ │ │ │ ├── TallyEntryLoginScreen.test.tsx │ │ │ │ ├── TallyEntryLoginScreen.tsx │ │ │ │ ├── TallyEntryScreen.test.tsx │ │ │ │ ├── TallyEntryScreen.tsx │ │ │ │ ├── TallyEntryUserView.test.tsx │ │ │ │ ├── TallyEntryUserView.tsx │ │ │ │ └── useCurrentUser.ts │ │ │ ├── UserContext.tsx │ │ │ ├── _mocks.ts │ │ │ ├── testUtilities.test.tsx │ │ │ ├── testUtilities.tsx │ │ │ ├── useAuditAdminsOrganizations.ts │ │ │ ├── useAuditBoards.ts │ │ │ ├── useAuditSettings.ts │ │ │ ├── useBatchFilesBundle.ts │ │ │ ├── useCSV.ts │ │ │ ├── useContestChoiceNameStandardizations.ts │ │ │ ├── useContestNameStandardizations.ts │ │ │ ├── useContests.ts │ │ │ ├── useContestsBallotComparison.ts │ │ │ ├── useFeatureFlag.ts │ │ │ ├── useFileUpload.ts │ │ │ ├── useJurisdictions.ts │ │ │ ├── useSearchParams.ts │ │ │ ├── useStandardizedContests.ts │ │ │ ├── utilities.test.ts │ │ │ └── utilities.ts │ │ ├── fonts/ │ │ │ └── Proxima-Nova-Condensed-Regular.otf │ │ ├── index.css │ │ ├── index.tsx │ │ ├── react-app-env.d.ts │ │ ├── setupTests.ts │ │ ├── types.ts │ │ └── utils/ │ │ ├── api.ts │ │ ├── array.test.ts │ │ ├── array.ts │ │ ├── debounce.test.ts │ │ ├── debounce.ts │ │ ├── indexes.test.ts │ │ ├── indexes.ts │ │ ├── number-schema.test.ts │ │ ├── number-schema.ts │ │ ├── number.test.ts │ │ ├── number.ts │ │ ├── objects.test.ts │ │ ├── objects.ts │ │ ├── responsiveness.ts │ │ ├── sleep.ts │ │ ├── string.test.ts │ │ └── string.ts │ ├── tsconfig.json │ └── vite.config.ts ├── docs/ │ ├── architecture.md │ ├── auth0.md │ ├── contribution-guidelines.md │ └── loadtesting.md ├── fixtures/ │ ├── README.md │ ├── __init__.py │ ├── generate_election.py │ ├── medium-election/ │ │ ├── Acton - Lord of Coin - candidate totals by batch.csv │ │ ├── Acton - ballot manifest.csv │ │ ├── Acton - cvrs.csv │ │ ├── Black Hallows - Lord of Coin - candidate totals by batch.csv │ │ ├── Black Hallows - ballot manifest.csv │ │ ├── Black Hallows - cvrs.csv │ │ ├── Lindow - Lord of Coin - candidate totals by batch.csv │ │ ├── Lindow - ballot manifest.csv │ │ ├── Lindow - cvrs.csv │ │ ├── Medium Election - jurisdictions.csv │ │ ├── Medium Election - standardized contests.csv │ │ ├── Wolford - Lord of Coin - candidate totals by batch.csv │ │ ├── Wolford - ballot manifest.csv │ │ ├── Wolford - cvrs.csv │ │ ├── Yellowseed - Lord of Coin - candidate totals by batch.csv │ │ ├── Yellowseed - ballot manifest.csv │ │ ├── Yellowseed - cvrs.csv │ │ └── medium-election.spec.json │ ├── regenerate-all-elections.sh │ ├── small-election/ │ │ ├── Kendall Park - Master of Magic - candidate totals by batch.csv │ │ ├── Kendall Park - Minister of Farming - candidate totals by batch.csv │ │ ├── Kendall Park - Secretary of Treasure - candidate totals by batch.csv │ │ ├── Kendall Park - ballot manifest.csv │ │ ├── Kendall Park - cvrs.csv │ │ ├── Mount Olive - Minister of Farming - candidate totals by batch.csv │ │ ├── Mount Olive - ballot manifest.csv │ │ ├── Mount Olive - cvrs.csv │ │ ├── Siletz - Minister of Farming - candidate totals by batch.csv │ │ ├── Siletz - ballot manifest.csv │ │ ├── Siletz - cvrs.csv │ │ ├── Small Election - jurisdictions.csv │ │ ├── Small Election - standardized contests.csv │ │ ├── Waurika - Master of Magic - candidate totals by batch.csv │ │ ├── Waurika - Minister of Farming - candidate totals by batch.csv │ │ ├── Waurika - ballot manifest.csv │ │ ├── Waurika - cvrs.csv │ │ ├── Worthington Hills - Master of Magic - candidate totals by batch.csv │ │ ├── Worthington Hills - Minister of Farming - candidate totals by batch.csv │ │ ├── Worthington Hills - ballot manifest.csv │ │ ├── Worthington Hills - cvrs.csv │ │ └── small-election.spec.json │ ├── tabulator-status.xml │ └── test/ │ ├── __init__.py │ ├── snapshots/ │ │ ├── __init__.py │ │ └── snap_test_generate_election.py │ └── test_generate_election.py ├── heroku-release-phase.sh ├── images/ │ └── .gitkeep ├── package.json ├── pyproject.toml ├── pytest.ini ├── run-dev.sh ├── scripts/ │ ├── __init__.py │ ├── batch-inventory-progress.py │ ├── clear-audit-boards.py │ ├── cleardb.py │ ├── combine-hybrid-results.py │ ├── create-admin.py │ ├── create-org.py │ ├── create.py │ ├── fix-ess-cvr-quotes.py │ ├── manifest-for-cvr.py │ ├── migrate-files-to-s3.py │ ├── parse-xml-cvrs.py │ ├── reopen-round.py │ ├── resetdb.py │ ├── restore-db-backup.sh │ ├── run-basedpyright.sh │ ├── run-dev-worker.py │ ├── scrapers/ │ │ └── georgia-results-downloader/ │ │ ├── README.md │ │ ├── index.css │ │ ├── index.html │ │ └── index.js │ └── seed-probely-db.sh ├── server/ │ ├── __init__.py │ ├── activity_log/ │ │ ├── __init__.py │ │ ├── activity_log.py │ │ └── slack_worker.py │ ├── api/ │ │ ├── __init__.py │ │ ├── activity.py │ │ ├── audit_boards.py │ │ ├── ballot_manifest.py │ │ ├── ballots.py │ │ ├── batch_files.py │ │ ├── batch_inventory.py │ │ ├── batch_tallies.py │ │ ├── batches.py │ │ ├── contests.py │ │ ├── cvrs.py │ │ ├── discrepancies.py │ │ ├── election_settings.py │ │ ├── elections.py │ │ ├── full_hand_tally.py │ │ ├── jurisdictions.py │ │ ├── offline_results.py │ │ ├── public.py │ │ ├── reports.py │ │ ├── rounds.py │ │ ├── sample_preview.py │ │ ├── sample_sizes.py │ │ ├── shared.py │ │ ├── standardized_contests.py │ │ └── support.py │ ├── app.py │ ├── audit_math/ │ │ ├── __init__.py │ │ ├── ballot_polling.py │ │ ├── ballot_polling_types.py │ │ ├── bravo.py │ │ ├── macro.py │ │ ├── minerva.py │ │ ├── providence.py │ │ ├── raire.py │ │ ├── raire_utils.py │ │ ├── sampler.py │ │ ├── sampler_contest.py │ │ ├── suite.py │ │ ├── supersimple.py │ │ └── supersimple_raire.py │ ├── auth/ │ │ ├── __init__.py │ │ ├── auth_helpers.py │ │ ├── auth_routes.py │ │ ├── email_boilerplate.html │ │ ├── email_login_code.html │ │ └── email_login_code.txt │ ├── config.py │ ├── database.py │ ├── errors.py │ ├── feature_flags.py │ ├── main.py │ ├── migrations/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── env.py │ │ ├── script.py.mako │ │ └── versions/ │ │ ├── 07859b6b370b_json_sample_sizes.py │ │ ├── 11e35dd1c515_batch_tallies_file.py │ │ ├── 141edd274627_fix_null_round_contest_sample_size.py │ │ ├── 22c615fe67ab_jurisdictionresult.py │ │ ├── 244744c21027_tally_entry_accounts.py │ │ ├── 266fba5a5c8a_rename_offlinebatchresult_to_.py │ │ ├── 2aeb618b9438_jurisdiction_cvr_file_type.py │ │ ├── 30f47ec7308c_batchresultsfinalized.py │ │ ├── 342f43b1c9d9_batch_has_cvrs.py │ │ ├── 34824a2d1ba8_batch_combined_batch_name.py │ │ ├── 34939a0c9f5c_ballotinterpretation_has_invalid_write_in.py │ │ ├── 3edc260ab0b1_audittype_ballot_comparison.py │ │ ├── 3efe804f6952_remove_offlinebatchresultchangelog.py │ │ ├── 496ee3db6da8_cvrfiletype_hart.py │ │ ├── 4aa612e28c2e_delete_auditboard_without_cascading.py │ │ ├── 4aec6c8a419f_backgroundtask_lock_key.py │ │ ├── 4b1bf0241301_add_batch_file_bundle_table.py │ │ ├── 5004a93f75d8_batchresulttallysheet.py │ │ ├── 5238d088cf62_offlinebatchresultchangelog.py │ │ ├── 593823da406d_fix_delete_cascades.py │ │ ├── 5acbd2f95b9f_standardized_contests_file.py │ │ ├── 5b7164faeda5_sampledballotdraw_contest_id.py │ │ ├── 5bb25bdd56b7_hybrid_audit_type.py │ │ ├── 6a4dc1ef268c_add_a_sessions_table_as_we_move_.py │ │ ├── 6bd43f181daa_add_auditmathtype.py │ │ ├── 6c256e8152f8_backgroundtask_worker_id.py │ │ ├── 74c579ae8555_batch_last_edited_by.py │ │ ├── 754cca3f4448_add_providence_to_auditmathtype.py │ │ ├── 7ca7a4b0bcc0_contest_pending_ballots.py │ │ ├── 7f86511c05e0_cvrs.py │ │ ├── 83bc53b14021_organization_default_state.py │ │ ├── 8452f909a07e_jurisdiction_contest_choice_name_standardizations.py │ │ ├── 848293b46b37_batchinventorydata.py │ │ ├── 848ffc831a04_election_sample_preview.py │ │ ├── 8ab39ac619ed_activity_log.py │ │ ├── 8b6b89bfbc97_backgroundtask.py │ │ ├── 8bc5c2037187_adding_audit_math_type.py │ │ ├── 95660eea5c1c_offline_batch_results.py │ │ ├── 971d6d153879_background_task_progress.py │ │ ├── 9956d373c6b8_interpretation_contest_not_on_ballot.py │ │ ├── 9d9c4e058cb2_jurisdiction_contest_name_.py │ │ ├── 9ed660c31c0a_election_audit_type.py │ │ ├── a3004ca81e25_sampledbatchdraw.py │ │ ├── aa3978570981_batchresult.py │ │ ├── b0b160c2f187_initial.py │ │ ├── b5fcf654c681_remove_single_jurisdiction_flow.py │ │ ├── b91b345bf0a9_cvrballot_unique_constraint.py │ │ ├── bc97ac0e8267_remove_file_contents.py │ │ ├── c012fa6b13a9_sampledbatchdraw_contest_id.py │ │ ├── c2b90f147183_organization_name_unique.py │ │ ├── cb8de251c1a5_batchinventorydata_system_type.py │ │ ├── cec7ecc73bd8_samplesizeoptions_table.py │ │ ├── d0fc64ab8b98_on_delete_cleanup.py │ │ ├── dd3f3330aee2_cvrfiletype_ess.py │ │ ├── de96efe4d679_ja_login_code.py │ │ ├── df1334fc5fe9_election_deleted_at.py │ │ ├── df3c0681fad9_file_storage_path.py │ │ ├── e372310f31c1_batch_container.py │ │ ├── f400f19f7a35_file_background_task.py │ │ ├── f44bbbb8b076_cvrballot_ballot_position_and_record_id.py │ │ ├── f8e901e92f0a_background_sample_size_options.py │ │ ├── fa342e75506b_overvotes.py │ │ ├── fea3ed38fb6c_jurisdiction_expected_manifest_num_.py │ │ └── fed66f26125e_remove_batch_comparison_audit_boards.py │ ├── models.py │ ├── sentry.py │ ├── static.py │ ├── tests/ │ │ ├── __init__.py │ │ ├── api/ │ │ │ ├── __init__.py │ │ │ ├── snapshots/ │ │ │ │ ├── __init__.py │ │ │ │ ├── snap_test_audit_boards.py │ │ │ │ ├── snap_test_ballots.py │ │ │ │ ├── snap_test_contests.py │ │ │ │ ├── snap_test_jurisdictions.py │ │ │ │ ├── snap_test_public.py │ │ │ │ ├── snap_test_reports.py │ │ │ │ ├── snap_test_rounds.py │ │ │ │ ├── snap_test_sample_preview.py │ │ │ │ └── snap_test_sample_sizes.py │ │ │ ├── test_activity.py │ │ │ ├── test_audit_boards.py │ │ │ ├── test_ballot_manifest.py │ │ │ ├── test_ballots.py │ │ │ ├── test_batch_files.py │ │ │ ├── test_contests.py │ │ │ ├── test_election_settings.py │ │ │ ├── test_elections.py │ │ │ ├── test_jurisdictions.py │ │ │ ├── test_jurisdictions_file.py │ │ │ ├── test_public.py │ │ │ ├── test_reports.py │ │ │ ├── test_rounds.py │ │ │ ├── test_sample_preview.py │ │ │ ├── test_sample_sizes.py │ │ │ └── test_support.py │ │ ├── audit_math/ │ │ │ ├── __init__.py │ │ │ ├── raire_data/ │ │ │ │ ├── input/ │ │ │ │ │ ├── Berkeley_2010.raire │ │ │ │ │ └── SpecialCases/ │ │ │ │ │ └── Aspen_2009_wrong_winner.raire │ │ │ │ ├── output/ │ │ │ │ │ ├── Berkeley_2010.raire.out │ │ │ │ │ └── SpecialCases/ │ │ │ │ │ └── Aspen_2009_wrong_winner.raire.out │ │ │ │ └── sfda19/ │ │ │ │ ├── SFDA2019_PrelimReport12VBMJustDASheets.raire │ │ │ │ ├── mvr_prepilot_test.json │ │ │ │ └── sample.csv │ │ │ ├── snapshots/ │ │ │ │ ├── __init__.py │ │ │ │ ├── snap_test_bravo.py │ │ │ │ ├── snap_test_macro.py │ │ │ │ └── snap_test_sampler.py │ │ │ ├── test_bravo.py │ │ │ ├── test_macro.py │ │ │ ├── test_minerva.py │ │ │ ├── test_minerva2.py │ │ │ ├── test_raire.py │ │ │ ├── test_raire_utils.py │ │ │ ├── test_sampler.py │ │ │ ├── test_sampler_contest.py │ │ │ ├── test_suite.py │ │ │ ├── test_supersimple.py │ │ │ └── test_supersimple_raire.py │ │ ├── ballot_comparison/ │ │ │ ├── __init__.py │ │ │ ├── conftest.py │ │ │ ├── snapshots/ │ │ │ │ ├── __init__.py │ │ │ │ ├── snap_test_ballot_comparison.py │ │ │ │ ├── snap_test_ballot_comparison_cardstyledata.py │ │ │ │ ├── snap_test_ballot_comparison_manifests.py │ │ │ │ ├── snap_test_contest_name_standardizations.py │ │ │ │ └── snap_test_cvrs.py │ │ │ ├── test_ballot_comparison.py │ │ │ ├── test_ballot_comparison_cardstyledata.py │ │ │ ├── test_ballot_comparison_manifests.py │ │ │ ├── test_contest_name_standardizations.py │ │ │ ├── test_cvrs.py │ │ │ ├── test_single_jurisdiction_ballot_comparison.py │ │ │ └── test_standardized_contests.py │ │ ├── ballot_polling/ │ │ │ ├── __init__.py │ │ │ ├── snapshots/ │ │ │ │ ├── __init__.py │ │ │ │ ├── snap_test_ballot_polling.py │ │ │ │ ├── snap_test_minerva2_ballot_polling.py │ │ │ │ ├── snap_test_minerva_ballot_polling.py │ │ │ │ └── snap_test_providence_ballot_polling.py │ │ │ ├── test_ballot_polling.py │ │ │ ├── test_minerva_ballot_polling.py │ │ │ └── test_providence_ballot_polling.py │ │ ├── batch_comparison/ │ │ │ ├── __init__.py │ │ │ ├── conftest.py │ │ │ ├── snapshots/ │ │ │ │ ├── __init__.py │ │ │ │ ├── snap_test_batch_comparison.py │ │ │ │ ├── snap_test_batch_inventory.py │ │ │ │ ├── snap_test_batches.py │ │ │ │ ├── snap_test_multi_contest_batch_comparison.py │ │ │ │ └── snap_test_sample_extra_batches_by_counting_group.py │ │ │ ├── test_batch_comparison.py │ │ │ ├── test_batch_inventory.py │ │ │ ├── test_batch_tallies.py │ │ │ ├── test_batches.py │ │ │ ├── test_multi_contest_batch_comparison.py │ │ │ ├── test_sample_extra_batches_by_counting_group.py │ │ │ ├── test_sample_extra_batches_to_ensure_one_per_jurisdiction.py │ │ │ ├── test_single_jurisdiction_batch_comparison.py │ │ │ └── test_support_batch_comparison.py │ │ ├── conftest.py │ │ ├── helpers.py │ │ ├── hybrid/ │ │ │ ├── __init__.py │ │ │ ├── conftest.py │ │ │ ├── snapshots/ │ │ │ │ ├── __init__.py │ │ │ │ └── snap_test_hybrid.py │ │ │ ├── test_hybrid.py │ │ │ └── test_hybrid_manifests.py │ │ ├── snapshots/ │ │ │ ├── __init__.py │ │ │ ├── snap_test_full_hand_tally.py │ │ │ ├── snap_test_jointly_targeted_contests.py │ │ │ ├── snap_test_multi_winner_contest.py │ │ │ ├── snap_test_multiple_targeted_contests.py │ │ │ ├── snap_test_offline_data_entry.py │ │ │ └── snap_test_slack_worker.py │ │ ├── test_app.py │ │ ├── test_auth.py │ │ ├── test_background_tasks.py │ │ ├── test_errors.py │ │ ├── test_full_hand_tally.py │ │ ├── test_helpers.py │ │ ├── test_migrations.py │ │ ├── test_multi_winner_contest.py │ │ ├── test_multiple_targeted_contests.py │ │ ├── test_offline_data_entry.py │ │ ├── test_slack_worker.py │ │ ├── test_websessions.py │ │ └── util/ │ │ ├── __init__.py │ │ ├── test-ballot-manifest.xlsx │ │ ├── test_binpacking.py │ │ ├── test_collections.py │ │ ├── test_csv_parse.py │ │ ├── test_cvr_snapshot_parse.py │ │ ├── test_file_storage.py │ │ ├── test_get_json.py │ │ ├── test_hart_parse.py │ │ ├── test_jsonschema.py │ │ ├── test_strings.py │ │ ├── windows1252-encoded.csv │ │ └── xls-mislabeled-as-csv.csv │ ├── util/ │ │ ├── __init__.py │ │ ├── binpacking.py │ │ ├── collections.py │ │ ├── csv_download.py │ │ ├── csv_parse.py │ │ ├── cvr_snapshot_parse.py │ │ ├── file.py │ │ ├── get_json.py │ │ ├── hart_parse.py │ │ ├── isoformat.py │ │ ├── jsonschema.py │ │ ├── redirect.py │ │ └── string.py │ ├── websession.py │ └── worker/ │ ├── __init__.py │ ├── tasks.py │ └── worker.py └── stubs/ ├── consistent_sampler/ │ └── __init__.pyi ├── cryptorandom/ │ ├── __init__.pyi │ └── cryptorandom/ │ └── __init__.pyi └── r2b2/ ├── __init__.pyi ├── __main__.pyi ├── athena.pyi ├── audit.pyi ├── brla.pyi ├── cli.pyi ├── contest.pyi ├── election.pyi ├── eor_bravo.pyi ├── minerva.pyi ├── minerva2.pyi ├── simulation/ │ ├── __init__.pyi │ ├── athena.pyi │ ├── eor_bravo.pyi │ ├── filip_athena.pyi │ ├── minerva.pyi │ ├── minerva2.pyi │ └── so_bravo.pyi ├── simulator.pyi ├── so_bravo.pyi └── tests/ ├── __init__.pyi ├── test_athena.pyi ├── test_audit.pyi ├── test_brla.pyi ├── test_cli.pyi ├── test_contest.pyi ├── test_election.pyi ├── test_eor_bravo.pyi ├── test_filip_athena_sim.pyi ├── test_minerva.pyi ├── test_minerva2.pyi ├── test_so_bravo.pyi └── util.pyi