Full Code of mongodb/mongo-go-driver for AI

master 8fe7e71d20cb cached
745 files
6.4 MB
1.7M tokens
7568 symbols
1 requests
Download .txt
Showing preview only (6,831K chars total). Download the full file or copy to clipboard to get everything.
Repository: mongodb/mongo-go-driver
Branch: master
Commit: 8fe7e71d20cb
Files: 745
Total size: 6.4 MB

Directory structure:
gitextract_b5ez4ucg/

├── .errcheck-excludes
├── .evergreen/
│   ├── config.yml
│   ├── krb5.config
│   ├── ocsp-requirements.txt
│   ├── run-mongodb-aws-ecs-test.sh
│   ├── run-task.sh
│   └── setup-system.sh
├── .github/
│   ├── dependabot.yml
│   ├── labeler.yml
│   ├── release.yml
│   └── workflows/
│       ├── check-labels.yml
│       ├── codeql.yml
│       ├── create-release-branch.yml
│       ├── labeler.yml
│       ├── merge-up.yml
│       ├── release.yml
│       ├── scorecard.yml
│       └── test.yml
├── .gitignore
├── .gitmodules
├── .golangci.yml
├── .pre-commit-config.yaml
├── Dockerfile
├── LICENSE
├── README.md
├── THIRD-PARTY-NOTICES
├── Taskfile.yml
├── bson/
│   ├── array_codec.go
│   ├── benchmark_test.go
│   ├── bson_binary_vector_spec_test.go
│   ├── bson_corpus_spec_test.go
│   ├── bson_test.go
│   ├── bsoncodec.go
│   ├── bsoncodec_test.go
│   ├── bsonrw_test.go
│   ├── buffered_byte_src.go
│   ├── buffered_byte_src_test.go
│   ├── byte_slice_codec.go
│   ├── codec_cache.go
│   ├── codec_cache_test.go
│   ├── cond_addr_codec.go
│   ├── cond_addr_codec_test.go
│   ├── copier.go
│   ├── copier_test.go
│   ├── decimal.go
│   ├── decimal_test.go
│   ├── decode_value_fuzz_test.go
│   ├── decoder.go
│   ├── decoder_example_test.go
│   ├── decoder_test.go
│   ├── default_value_decoders.go
│   ├── default_value_decoders_test.go
│   ├── default_value_encoders.go
│   ├── default_value_encoders_test.go
│   ├── doc.go
│   ├── empty_interface_codec.go
│   ├── encoder.go
│   ├── encoder_example_test.go
│   ├── encoder_test.go
│   ├── example_test.go
│   ├── extjson_parser.go
│   ├── extjson_parser_test.go
│   ├── extjson_prose_test.go
│   ├── extjson_reader.go
│   ├── extjson_reader_test.go
│   ├── extjson_tables.go
│   ├── extjson_wrappers.go
│   ├── extjson_writer.go
│   ├── extjson_writer_test.go
│   ├── fuzz_test.go
│   ├── json_scanner.go
│   ├── json_scanner_test.go
│   ├── map_codec.go
│   ├── marshal.go
│   ├── marshal_test.go
│   ├── marshal_value_cases_test.go
│   ├── marshal_value_test.go
│   ├── marshaling_cases_test.go
│   ├── mgocompat/
│   │   ├── doc.go
│   │   └── registry.go
│   ├── mgoregistry.go
│   ├── mgoregistry_test.go
│   ├── mode.go
│   ├── objectid.go
│   ├── objectid_test.go
│   ├── pointer_codec.go
│   ├── primitive.go
│   ├── primitive_codecs.go
│   ├── primitive_codecs_test.go
│   ├── raw.go
│   ├── raw_array.go
│   ├── raw_array_test.go
│   ├── raw_element.go
│   ├── raw_test.go
│   ├── raw_value.go
│   ├── raw_value_test.go
│   ├── reader.go
│   ├── registry.go
│   ├── registry_examples_test.go
│   ├── registry_test.go
│   ├── slice_codec.go
│   ├── streaming_byte_src.go
│   ├── string_codec.go
│   ├── struct_codec.go
│   ├── struct_codec_test.go
│   ├── struct_tag_parser.go
│   ├── struct_tag_parser_test.go
│   ├── testdata/
│   │   ├── fuzz/
│   │   │   └── FuzzDecode/
│   │   │       ├── 002ae7d43f636100116fede772a03d07726ed75c3c3b83da865fe9b718adf8ae
│   │   │       ├── 0de854041b0055ca1e5e6e54a7fb667ed38461db171af267665c21776f9a9ef4
│   │   │       ├── 718592474a0a3626039f3471449b9aa374c746754d4925fcfe4ba747e7101504
│   │   │       ├── 93c43e3c1cf35c19b7618a618d128cea0ce05cef0711fdd91e403fe3b2f45628
│   │   │       └── c3ffbb42eb85b743ede396f00b7706e6ad0529c32689c63ca663dae37d072627
│   │   └── lorem.txt
│   ├── time_codec.go
│   ├── time_codec_test.go
│   ├── truncation_test.go
│   ├── type_test.go
│   ├── types.go
│   ├── uint_codec.go
│   ├── unmarshal.go
│   ├── unmarshal_test.go
│   ├── unmarshal_value_test.go
│   ├── unmarshaling_cases_test.go
│   ├── value_reader.go
│   ├── value_reader_test.go
│   ├── value_reader_writer_test.go
│   ├── value_writer.go
│   ├── value_writer_test.go
│   ├── vector.go
│   └── writer.go
├── docs/
│   ├── CODEOWNERS
│   ├── CONTRIBUTING.md
│   ├── SECURITY.md
│   ├── common-issues.md
│   ├── migration-2.0.md
│   └── pull_request_template.md
├── etc/
│   ├── api_report.sh
│   ├── check_fmt.sh
│   ├── check_license.sh
│   ├── check_modules.sh
│   ├── cherry-picker.sh
│   ├── docker_entry.sh
│   ├── gen-ec-certs/
│   │   ├── client.ext
│   │   ├── empty.cnf
│   │   ├── gen-ec-certs.sh
│   │   └── server.ext
│   ├── generate_notices.pl
│   ├── golangci-lint.sh
│   ├── govulncheck.sh
│   ├── install-libmongocrypt.sh
│   ├── perf-pr-comment.sh
│   ├── pr-task.sh
│   ├── profile-test.sh
│   ├── run-awskms-test.sh
│   ├── run-azurekms-test.sh
│   ├── run-compile-check-test.sh
│   ├── run-fuzz.sh
│   ├── run-gcpkms-test.sh
│   ├── run-goleak-test.sh
│   ├── run-mongodb-aws-ecs-test.sh
│   ├── run-mongodb-aws-test.sh
│   ├── run-oidc-remote-test.sh
│   ├── run-oidc-test.sh
│   ├── run_docker.sh
│   ├── setup-encryption.sh
│   ├── setup-test.sh
│   └── update_spec_tests.sh
├── event/
│   ├── description.go
│   ├── doc.go
│   ├── examples_test.go
│   └── monitoring.go
├── examples/
│   ├── _example_customdns_test.go
│   ├── _example_overload_error_test.go
│   └── _logger/
│       ├── logrus/
│       │   ├── go.mod
│       │   ├── go.sum
│       │   └── main.go
│       ├── zap/
│       │   ├── go.mod
│       │   ├── go.sum
│       │   └── main.go
│       └── zerolog/
│           ├── go.mod
│           ├── go.sum
│           └── main.go
├── go.mod
├── go.sum
├── go.work
├── internal/
│   ├── assert/
│   │   ├── assertbson/
│   │   │   ├── assertbson.go
│   │   │   └── assertbson_test.go
│   │   ├── assertion_compare.go
│   │   ├── assertion_compare_can_convert.go
│   │   ├── assertion_compare_go1.17_test.go
│   │   ├── assertion_compare_legacy.go
│   │   ├── assertion_compare_test.go
│   │   ├── assertion_format.go
│   │   ├── assertion_mongo.go
│   │   ├── assertion_mongo_test.go
│   │   ├── assertions.go
│   │   ├── assertions_test.go
│   │   ├── difflib.go
│   │   └── difflib_test.go
│   ├── aws/
│   │   ├── awserr/
│   │   │   ├── error.go
│   │   │   └── types.go
│   │   ├── credentials/
│   │   │   ├── chain_provider.go
│   │   │   ├── chain_provider_test.go
│   │   │   ├── credentials.go
│   │   │   └── credentials_test.go
│   │   ├── signer/
│   │   │   └── v4/
│   │   │       ├── header_rules.go
│   │   │       ├── request.go
│   │   │       ├── uri_path.go
│   │   │       ├── v4.go
│   │   │       └── v4_test.go
│   │   └── types.go
│   ├── binaryutil/
│   │   ├── binaryutil.go
│   │   ├── binaryutil_test.go
│   │   └── doc.go
│   ├── bsoncoreutil/
│   │   ├── bsoncoreutil.go
│   │   └── bsoncoreutil_test.go
│   ├── bsonutil/
│   │   └── bsonutil.go
│   ├── cmd/
│   │   ├── benchmark/
│   │   │   ├── benchmark_test.go
│   │   │   ├── go.mod
│   │   │   └── go.sum
│   │   ├── build-oss-fuzz-corpus/
│   │   │   └── main.go
│   │   ├── faas/
│   │   │   └── awslambda/
│   │   │       ├── Makefile
│   │   │       ├── mongodb/
│   │   │       │   ├── bootstrap.go
│   │   │       │   ├── go.mod
│   │   │       │   └── go.sum
│   │   │       └── template.yaml
│   │   ├── parse-api-report/
│   │   │   └── main.go
│   │   ├── testatlas/
│   │   │   └── atlas_test.go
│   │   ├── testentauth/
│   │   │   └── main.go
│   │   └── testkms/
│   │       └── main.go
│   ├── codecutil/
│   │   ├── encoding.go
│   │   └── encoding_test.go
│   ├── credproviders/
│   │   ├── assume_role_provider.go
│   │   ├── ec2_provider.go
│   │   ├── ecs_provider.go
│   │   ├── env_provider.go
│   │   ├── imds_provider.go
│   │   └── static_provider.go
│   ├── csfle/
│   │   └── csfle.go
│   ├── csot/
│   │   ├── csot.go
│   │   └── csot_test.go
│   ├── decimal128/
│   │   └── decimal128.go
│   ├── docexamples/
│   │   ├── README
│   │   ├── examples.go
│   │   └── examples_test.go
│   ├── driverutil/
│   │   ├── description.go
│   │   ├── hello.go
│   │   ├── operation.go
│   │   └── operation_test.go
│   ├── errutil/
│   │   ├── join.go
│   │   ├── join_go1.19.go
│   │   ├── join_go1.20.go
│   │   └── join_test.go
│   ├── eventtest/
│   │   └── eventtest.go
│   ├── failpoint/
│   │   └── failpoint.go
│   ├── handshake/
│   │   └── handshake.go
│   ├── httputil/
│   │   ├── httputil.go
│   │   └── httputil_test.go
│   ├── integration/
│   │   ├── causal_consistency_test.go
│   │   ├── change_stream_test.go
│   │   ├── clam_prose_test.go
│   │   ├── client_options_test.go
│   │   ├── client_side_encryption_prose_test.go
│   │   ├── client_side_encryption_spec_test.go
│   │   ├── client_side_encryption_test.go
│   │   ├── client_test.go
│   │   ├── cmd_monitoring_helpers_test.go
│   │   ├── collection_test.go
│   │   ├── crud_helpers_test.go
│   │   ├── crud_prose_test.go
│   │   ├── csot_cse_prose_test.go
│   │   ├── csot_prose_test.go
│   │   ├── csot_test.go
│   │   ├── cursor_test.go
│   │   ├── database_test.go
│   │   ├── errors_test.go
│   │   ├── gridfs_test.go
│   │   ├── handshake_test.go
│   │   ├── index_view_test.go
│   │   ├── initial_dns_seedlist_discovery_test.go
│   │   ├── json_helpers_test.go
│   │   ├── load_balancer_prose_test.go
│   │   ├── log_helpers_test.go
│   │   ├── main.go
│   │   ├── main_test.go
│   │   ├── mock_find_test.go
│   │   ├── mongointernal_test.go
│   │   ├── mongos_pinning_test.go
│   │   ├── mtest/
│   │   │   ├── csfle_enabled.go
│   │   │   ├── csfle_not_enabled.go
│   │   │   ├── deployment_helpers.go
│   │   │   ├── doc.go
│   │   │   ├── global_state.go
│   │   │   ├── mongotest.go
│   │   │   ├── options.go
│   │   │   ├── proxy_capture.go
│   │   │   ├── proxy_dialer.go
│   │   │   ├── received_message.go
│   │   │   ├── sent_message.go
│   │   │   ├── setup.go
│   │   │   ├── setup_options.go
│   │   │   └── wiremessage_helpers.go
│   │   ├── primary_stepdown_test.go
│   │   ├── retryable_reads_prose_test.go
│   │   ├── retryable_writes_prose_test.go
│   │   ├── sdam_error_handling_test.go
│   │   ├── sdam_prose_test.go
│   │   ├── search_index_prose_test.go
│   │   ├── server_selection_prose_test.go
│   │   ├── sessions_mongocryptd_prose_test.go
│   │   ├── sessions_test.go
│   │   ├── unified/
│   │   │   ├── admin_helpers.go
│   │   │   ├── bsonutil.go
│   │   │   ├── bucket_options.go
│   │   │   ├── bulkwrite_helpers.go
│   │   │   ├── client_encryption_operation_execution.go
│   │   │   ├── client_entity.go
│   │   │   ├── client_operation_execution.go
│   │   │   ├── collection_data.go
│   │   │   ├── collection_operation_execution.go
│   │   │   ├── common_options.go
│   │   │   ├── context.go
│   │   │   ├── crud_helpers.go
│   │   │   ├── cursor_entity.go
│   │   │   ├── cursor_operation_execution.go
│   │   │   ├── database_operation_execution.go
│   │   │   ├── db_collection_options.go
│   │   │   ├── entity.go
│   │   │   ├── entity_test.go
│   │   │   ├── error.go
│   │   │   ├── event.go
│   │   │   ├── event_verification.go
│   │   │   ├── gridfs_bucket_operation_execution.go
│   │   │   ├── logger.go
│   │   │   ├── logger_verification.go
│   │   │   ├── main_test.go
│   │   │   ├── matches.go
│   │   │   ├── matches_test.go
│   │   │   ├── operation.go
│   │   │   ├── options.go
│   │   │   ├── result.go
│   │   │   ├── schema_version.go
│   │   │   ├── server_api_options.go
│   │   │   ├── session_operation_execution.go
│   │   │   ├── session_options.go
│   │   │   ├── testrunner_operation.go
│   │   │   ├── unified_spec_runner.go
│   │   │   └── unified_spec_test.go
│   │   ├── unified_runner_events_helper_test.go
│   │   ├── unified_runner_thread_helpers_test.go
│   │   └── unified_spec_test.go
│   ├── integtest/
│   │   └── integtest.go
│   ├── israce/
│   │   ├── norace.go
│   │   └── race.go
│   ├── logger/
│   │   ├── component.go
│   │   ├── component_test.go
│   │   ├── context.go
│   │   ├── context_test.go
│   │   ├── io_sink.go
│   │   ├── level.go
│   │   ├── logger.go
│   │   └── logger_test.go
│   ├── mongoutil/
│   │   ├── mongoutil.go
│   │   └── mongoutil_test.go
│   ├── optionsutil/
│   │   └── options.go
│   ├── ptrutil/
│   │   ├── int64.go
│   │   ├── int64_test.go
│   │   └── ptr.go
│   ├── rand/
│   │   ├── arith128_test.go
│   │   ├── bits.go
│   │   ├── example_test.go
│   │   ├── exp.go
│   │   ├── modulo_test.go
│   │   ├── normal.go
│   │   ├── race_test.go
│   │   ├── rand.go
│   │   ├── rand_test.go
│   │   ├── regress_test.go
│   │   └── rng.go
│   ├── randutil/
│   │   ├── randutil.go
│   │   └── randutil_test.go
│   ├── require/
│   │   └── require.go
│   ├── serverselector/
│   │   ├── server_selector.go
│   │   └── server_selector_test.go
│   ├── spectest/
│   │   ├── skip.go
│   │   └── spectest.go
│   ├── test/
│   │   ├── aws/
│   │   │   └── aws_test.go
│   │   ├── compilecheck/
│   │   │   ├── compile_check_test.go
│   │   │   ├── go.mod
│   │   │   └── go.sum
│   │   ├── goleak/
│   │   │   ├── go.mod
│   │   │   ├── go.sum
│   │   │   └── goleak_test.go
│   │   └── oidcauth/
│   │       └── oidcauth_test.go
│   ├── testutil/
│   │   └── reflect.go
│   └── uuid/
│       ├── uuid.go
│       └── uuid_test.go
├── mongo/
│   ├── address/
│   │   ├── addr.go
│   │   └── addr_test.go
│   ├── background_context.go
│   ├── background_context_test.go
│   ├── batch_cursor.go
│   ├── bson_helpers_test.go
│   ├── bulk_write.go
│   ├── bulk_write_models.go
│   ├── change_stream.go
│   ├── change_stream_deployment.go
│   ├── change_stream_test.go
│   ├── client.go
│   ├── client_bulk_write.go
│   ├── client_bulk_write_models.go
│   ├── client_bulk_write_test.go
│   ├── client_encryption.go
│   ├── client_encryption_test.go
│   ├── client_examples_test.go
│   ├── client_side_encryption_examples_test.go
│   ├── client_test.go
│   ├── collection.go
│   ├── collection_test.go
│   ├── crud_examples_test.go
│   ├── crypt_retrievers.go
│   ├── cursor.go
│   ├── cursor_test.go
│   ├── database.go
│   ├── database_test.go
│   ├── doc.go
│   ├── errors.go
│   ├── errors_test.go
│   ├── gridfs_bucket.go
│   ├── gridfs_bucket_test.go
│   ├── gridfs_download_stream.go
│   ├── gridfs_examples_test.go
│   ├── gridfs_test.go
│   ├── gridfs_upload_stream.go
│   ├── index_view.go
│   ├── insert.go
│   ├── mongo.go
│   ├── mongo_test.go
│   ├── mongocryptd.go
│   ├── mongointernal.go
│   ├── ocsp_test.go
│   ├── options/
│   │   ├── aggregateoptions.go
│   │   ├── autoencryptionoptions.go
│   │   ├── bulkwriteoptions.go
│   │   ├── changestreamoptions.go
│   │   ├── clientbulkwriteoptions.go
│   │   ├── clientencryptionoptions.go
│   │   ├── clientoptions.go
│   │   ├── clientoptions_test.go
│   │   ├── collectionoptions.go
│   │   ├── countoptions.go
│   │   ├── createcollectionoptions.go
│   │   ├── datakeyoptions.go
│   │   ├── dboptions.go
│   │   ├── deleteoptions.go
│   │   ├── distinctoptions.go
│   │   ├── doc.go
│   │   ├── dropcollectionoptions.go
│   │   ├── encryptoptions.go
│   │   ├── estimatedcountoptions.go
│   │   ├── example_test.go
│   │   ├── findoptions.go
│   │   ├── gridfsoptions.go
│   │   ├── indexoptions.go
│   │   ├── insertoptions.go
│   │   ├── listcollectionsoptions.go
│   │   ├── listdatabasesoptions.go
│   │   ├── lister.go
│   │   ├── loggeroptions.go
│   │   ├── mongooptions.go
│   │   ├── replaceoptions.go
│   │   ├── rewrapdatakeyoptions.go
│   │   ├── runcmdoptions.go
│   │   ├── searchindexoptions.go
│   │   ├── serverapioptions.go
│   │   ├── sessionoptions.go
│   │   ├── testdata/
│   │   │   ├── ca-key.pem
│   │   │   ├── ca-with-intermediates-first.pem
│   │   │   ├── ca-with-intermediates-second.pem
│   │   │   ├── ca-with-intermediates-third.pem
│   │   │   ├── ca-with-intermediates.pem
│   │   │   ├── ca.pem
│   │   │   ├── cert.pem
│   │   │   ├── certificate.pem
│   │   │   ├── csr.json
│   │   │   ├── empty-ca.pem
│   │   │   ├── key.pem
│   │   │   ├── malformed-ca.pem
│   │   │   ├── nopass/
│   │   │   │   ├── cert.pem
│   │   │   │   ├── certificate.pem
│   │   │   │   └── key.pem
│   │   │   └── one-pk-multiple-certs.pem
│   │   ├── transactionoptions.go
│   │   └── updateoptions.go
│   ├── read_write_concern_spec_test.go
│   ├── readconcern/
│   │   └── readconcern.go
│   ├── readpref/
│   │   ├── mode.go
│   │   ├── mode_test.go
│   │   ├── options.go
│   │   ├── options_example_test.go
│   │   ├── readpref.go
│   │   └── readpref_test.go
│   ├── results.go
│   ├── search_index_view.go
│   ├── session.go
│   ├── single_result.go
│   ├── single_result_test.go
│   ├── with_transactions_test.go
│   └── writeconcern/
│       ├── writeconcern.go
│       ├── writeconcern_example_test.go
│       └── writeconcern_test.go
├── sbom.json
├── tag/
│   ├── tag.go
│   └── tag_test.go
├── testdata/
│   ├── client-side-encryption-prose/
│   │   ├── change-streams-test.json
│   │   ├── corpus-encrypted.json
│   │   ├── corpus-key-aws.json
│   │   ├── corpus-key-azure.json
│   │   ├── corpus-key-gcp.json
│   │   ├── corpus-key-kmip.json
│   │   ├── corpus-key-local.json
│   │   ├── corpus-schema.json
│   │   ├── corpus.json
│   │   ├── encrypted-fields.json
│   │   ├── encryptedFields-prefix-suffix.json
│   │   ├── external-key.json
│   │   ├── external-schema.json
│   │   ├── key1-document.json
│   │   ├── limits-doc.json
│   │   ├── limits-key.json
│   │   ├── limits-schema.json
│   │   ├── range-encryptedFields-Date.json
│   │   ├── range-encryptedFields-DecimalNoPrecision.json
│   │   ├── range-encryptedFields-DecimalPrecision.json
│   │   ├── range-encryptedFields-DoubleNoPrecision.json
│   │   ├── range-encryptedFields-DoublePrecision.json
│   │   ├── range-encryptedFields-Int.json
│   │   └── range-encryptedFields-Long.json
│   ├── kmip-certs/
│   │   ├── ca-ec.pem
│   │   ├── client-ec.pem
│   │   └── server-ec.pem
│   └── mongocrypt/
│       ├── collection-info.json
│       ├── command-reply.json
│       ├── command.json
│       ├── encrypted-command-reply.json
│       ├── encrypted-command.json
│       ├── encrypted-value.json
│       ├── json-schema.json
│       ├── key-document.json
│       ├── key-filter-keyAltName.json
│       ├── key-filter.json
│       ├── kms-reply.txt
│       ├── list-collections-filter.json
│       ├── local-key-document.json
│       ├── mongocryptd-command-local.json
│       ├── mongocryptd-command-remote.json
│       └── mongocryptd-reply.json
├── version/
│   └── version.go
└── x/
    ├── README.md
    ├── bsonx/
    │   └── bsoncore/
    │       ├── array.go
    │       ├── array_test.go
    │       ├── bson_arraybuilder.go
    │       ├── bson_arraybuilder_test.go
    │       ├── bson_documentbuilder.go
    │       ├── bson_documentbuilder_test.go
    │       ├── bsoncore.go
    │       ├── bsoncore_test.go
    │       ├── doc.go
    │       ├── document.go
    │       ├── document_test.go
    │       ├── element.go
    │       ├── element_test.go
    │       ├── iterator.go
    │       ├── iterator_test.go
    │       ├── tables.go
    │       ├── type.go
    │       ├── value.go
    │       └── value_test.go
    └── mongo/
        └── driver/
            ├── auth/
            │   ├── auth.go
            │   ├── auth_spec_test.go
            │   ├── auth_test.go
            │   ├── aws_conv.go
            │   ├── conversation.go
            │   ├── cred.go
            │   ├── creds/
            │   │   ├── awscreds.go
            │   │   ├── azurecreds.go
            │   │   ├── credscaching_test.go
            │   │   ├── doc.go
            │   │   └── gcpcreds.go
            │   ├── default.go
            │   ├── doc.go
            │   ├── gssapi.go
            │   ├── gssapi_not_enabled.go
            │   ├── gssapi_not_supported.go
            │   ├── gssapi_test.go
            │   ├── internal/
            │   │   └── gssapi/
            │   │       ├── gss.go
            │   │       ├── gss_wrapper.c
            │   │       ├── gss_wrapper.h
            │   │       ├── sspi.go
            │   │       ├── sspi_wrapper.c
            │   │       └── sspi_wrapper.h
            │   ├── mongodbaws.go
            │   ├── mongodbaws_test.go
            │   ├── oidc.go
            │   ├── oidc_test.go
            │   ├── plain.go
            │   ├── plain_test.go
            │   ├── sasl.go
            │   ├── scram.go
            │   ├── scram_test.go
            │   ├── speculative_scram_test.go
            │   ├── speculative_x509_test.go
            │   ├── util.go
            │   └── x509.go
            ├── batch_cursor.go
            ├── batch_cursor_test.go
            ├── batches.go
            ├── batches_test.go
            ├── command_monitoring_test.go
            ├── compression.go
            ├── compression_test.go
            ├── connstring/
            │   ├── connstring.go
            │   ├── connstring_spec_test.go
            │   ├── connstring_test.go
            │   └── initial_dns_seedlist_discovery_prose_test.go
            ├── crypt.go
            ├── description/
            │   ├── server.go
            │   └── topology.go
            ├── dns/
            │   └── dns.go
            ├── driver.go
            ├── drivertest/
            │   ├── channel_conn.go
            │   ├── channel_netconn.go
            │   ├── doc.go
            │   ├── opmsg_deployment.go
            │   └── opmsg_deployment_test.go
            ├── errors.go
            ├── integration/
            │   ├── aggregate_test.go
            │   ├── compressor_test.go
            │   ├── doc.go
            │   ├── integration.go
            │   ├── main_test.go
            │   └── scram_test.go
            ├── legacy.go
            ├── mnet/
            │   └── connection.go
            ├── mongocrypt/
            │   ├── binary.go
            │   ├── binary_test.go
            │   ├── errors.go
            │   ├── errors_not_enabled.go
            │   ├── mongocrypt.go
            │   ├── mongocrypt_context.go
            │   ├── mongocrypt_context_not_enabled.go
            │   ├── mongocrypt_kms_context.go
            │   ├── mongocrypt_kms_context_not_enabled.go
            │   ├── mongocrypt_not_enabled.go
            │   ├── mongocrypt_test.go
            │   ├── options/
            │   │   ├── doc.go
            │   │   ├── mongocrypt_context_options.go
            │   │   └── mongocrypt_options.go
            │   └── state.go
            ├── ocsp/
            │   ├── cache.go
            │   ├── cache_test.go
            │   ├── config.go
            │   ├── ocsp.go
            │   ├── ocsp_test.go
            │   └── options.go
            ├── operation/
            │   ├── abort_transaction.go
            │   ├── aggregate.go
            │   ├── command.go
            │   ├── commit_transaction.go
            │   ├── count.go
            │   ├── create.go
            │   ├── create_indexes.go
            │   ├── create_search_indexes.go
            │   ├── delete.go
            │   ├── distinct.go
            │   ├── doc.go
            │   ├── drop_collection.go
            │   ├── drop_database.go
            │   ├── drop_indexes.go
            │   ├── drop_search_index.go
            │   ├── end_sessions.go
            │   ├── errors.go
            │   ├── find.go
            │   ├── find_and_modify.go
            │   ├── hello.go
            │   ├── hello_test.go
            │   ├── list_collections.go
            │   ├── list_databases.go
            │   ├── list_indexes.go
            │   ├── update.go
            │   └── update_search_index.go
            ├── operation.go
            ├── operation_exhaust.go
            ├── operation_test.go
            ├── serverapioptions.go
            ├── session/
            │   ├── client_session.go
            │   ├── client_session_test.go
            │   ├── cluster_clock.go
            │   ├── cluster_clock_test.go
            │   ├── doc.go
            │   ├── options.go
            │   ├── server_session.go
            │   ├── server_session_test.go
            │   ├── session_pool.go
            │   └── session_pool_test.go
            ├── testdata/
            │   └── compression.go
            ├── topology/
            │   ├── CMAP_spec_test.go
            │   ├── DESIGN.md
            │   ├── cmap_prose_test.go
            │   ├── connection.go
            │   ├── connection_errors_test.go
            │   ├── connection_legacy.go
            │   ├── connection_options.go
            │   ├── connection_test.go
            │   ├── context_listener.go
            │   ├── diff.go
            │   ├── diff_test.go
            │   ├── errors.go
            │   ├── example_test.go
            │   ├── fsm.go
            │   ├── fsm_test.go
            │   ├── polling_srv_records_test.go
            │   ├── pool.go
            │   ├── pool_generation_counter.go
            │   ├── pool_test.go
            │   ├── rtt_monitor.go
            │   ├── rtt_monitor_test.go
            │   ├── sdam_spec_test.go
            │   ├── server.go
            │   ├── server_options.go
            │   ├── server_rtt_test.go
            │   ├── server_test.go
            │   ├── stats.go
            │   ├── stats_test.go
            │   ├── tls_connection_source_1_16.go
            │   ├── tls_connection_source_1_17.go
            │   ├── topology.go
            │   ├── topology_errors_test.go
            │   ├── topology_options.go
            │   ├── topology_options_test.go
            │   └── topology_test.go
            ├── wiremessage/
            │   ├── wiremessage.go
            │   └── wiremessage_test.go
            └── xoptions/
                ├── options.go
                └── options_test.go

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

================================================
FILE: .errcheck-excludes
================================================
(go.mongodb.org/mongo-driver/x/mongo/driver.Connection).Close
(*go.mongodb.org/mongo-driver/x/network/connection.connection).Close
(go.mongodb.org/mongo-driver/x/network/connection.Connection).Close
(*go.mongodb.org/mongo-driver/x/mongo/driver/topology.connection).close
(*go.mongodb.org/mongo-driver/x/mongo/driver/topology.Topology).Unsubscribe
(*go.mongodb.org/mongo-driver/x/mongo/driver/topology.Server).Close
(*go.mongodb.org/mongo-driver/x/network/connection.pool).closeConnection
(*go.mongodb.org/mongo-driver/x/mongo/driver/topology.pool).close
(go.mongodb.org/mongo-driver/x/network/wiremessage.ReadWriteCloser).Close
(*go.mongodb.org/mongo-driver/mongo.Cursor).Close
(*go.mongodb.org/mongo-driver/mongo.ChangeStream).Close
(*go.mongodb.org/mongo-driver/mongo.Client).Disconnect
(net.Conn).Close
encoding/pem.Encode
fmt.Fprintf
fmt.Fprint


================================================
FILE: .evergreen/config.yml
================================================
########################################
# Evergreen Template for MongoDB Drivers
########################################

# When a task that used to pass starts to fail
# Go through all versions that may have been skipped to detect
# when the task started failing
stepback: true
# Mark a failure as a system/bootstrap failure (purple box) rather then a task
# failure by default.
# Actual testing tasks are marked with `type: test`
command_type: setup
# Fail builds when pre tasks fail.
pre_error_fails_task: true
# Protect the CI from long or indefinite runtimes.
exec_timeout_secs: 3600
# What to do when evergreen hits the timeout (`post:` tasks are run automatically)
timeout:
  - command: subprocess.exec
    params:
      binary: bash
      args: [ls, -la]
functions:
  setup-system:
    # Executes clone and applies the submitted patch, if any
    - command: git.get_project
      type: system
      params:
        directory: src/go.mongodb.org/mongo-driver
    - command: shell.exec
      params:
        working_dir: "src/go.mongodb.org/mongo-driver"
        script: |
          git submodule update --init
    # Make an env.sh and evergreen expansion file with dynamic values
    - command: subprocess.exec
      params:
        binary: bash
        working_dir: src/go.mongodb.org/mongo-driver
        env:
          GOROOT: ${GO_DIST}
          IS_PATCH: ${is_patch}
          VERSION_ID: ${version_id}
          # Define an alias for the task runner script.
          TASK_RUNNER_ALIAS: &task-runner src/go.mongodb.org/mongo-driver/.evergreen/run-task.sh
        args: [.evergreen/setup-system.sh]
    - command: expansions.update
      params:
        file: src/go.mongodb.org/mongo-driver/expansion.yml
    - command: subprocess.exec
      params:
        binary: bash
        include_expansions_in_env: ["PROJECT_DIRECTORY"]
        args:
          - "${DRIVERS_TOOLS}/.evergreen/setup.sh"
  handle-test-artifacts:
    - command: gotest.parse_files
      params:
        optional_output: "true"
        files:
          - "src/go.mongodb.org/mongo-driver/*.suite"
    - command: ec2.assume_role
      params:
        role_arn: ${assume_role_arn}
    - command: s3.put
      params:
        aws_key: ${AWS_ACCESS_KEY_ID}
        aws_secret: ${AWS_SECRET_ACCESS_KEY}
        aws_session_token: ${AWS_SESSION_TOKEN}
        local_file: ${DRIVERS_TOOLS}/.evergreen/test_logs.tar.gz
        remote_file: ${build_variant}/${revision}/${version_id}/${build_id}/logs/${task_id}-${execution}-drivers-tools-logs.tar.gz
        bucket: ${aws_bucket}
        permissions: public-read
        content_type: ${content_type|application/x-gzip}
        display_name: "drivers-tools-logs.tar.gz"
    - command: s3.put
      params:
        aws_key: ${AWS_ACCESS_KEY_ID}
        aws_secret: ${AWS_SECRET_ACCESS_KEY}
        aws_session_token: ${AWS_SESSION_TOKEN}
        optional: true
        local_file: ${PROJECT_DIRECTORY}/fuzz.tgz
        remote_file: ${build_variant}/${revision}/${version_id}/${build_id}/${task_id}-${execution}-fuzz.tgz
        bucket: ${aws_bucket}
        permissions: public-read
        content_type: application/x-gzip
        display_name: "fuzz.tgz"
    - command: subprocess.exec
      params:
        binary: bash
        args: [*task-runner, evg-gather-test-suites]
    - command: s3.put
      params:
        aws_key: ${AWS_ACCESS_KEY_ID}
        aws_secret: ${AWS_SECRET_ACCESS_KEY}
        aws_session_token: ${AWS_SESSION_TOKEN}
        local_file: src/go.mongodb.org/mongo-driver/test_suite.tgz
        optional: true
        remote_file: ${build_variant}/${revision}/${version_id}/${build_id}/logs/${task_id}-${execution}-test_suite.tgz
        bucket: ${aws_bucket}
        permissions: public-read
        content_type: ${content_type|text/plain}
        display_name: test_suite.tgz
  bootstrap-mongohoused:
    - command: ec2.assume_role
      params:
        role_arn: ${aws_test_secrets_role}
    - command: subprocess.exec
      params:
        binary: bash
        add_expansions_to_env: true
        args:
          - ${DRIVERS_TOOLS}/.evergreen/atlas_data_lake/pull-mongohouse-image.sh
    - command: subprocess.exec
      params:
        binary: bash
        args:
          - ${DRIVERS_TOOLS}/.evergreen/atlas_data_lake/run-mongohouse-image.sh
  bootstrap-mongo-orchestration:
    - command: subprocess.exec
      params:
        binary: bash
        env:
          MONGODB_VERSION: ${VERSION}
        include_expansions_in_env: [TOPOLOGY, AUTH, SSL, ORCHESTRATION_FILE, REQUIRE_API_VERSION, LOAD_BALANCER]
        args: ["${DRIVERS_TOOLS}/.evergreen/run-orchestration.sh"]
    - command: expansions.update
      params:
        file: mo-expansion.yml
  ocsp-bootstrap-mongo-orchestration:
    - command: subprocess.exec
      params:
        binary: bash
        env:
          MONGODB_VERSION: ${VERSION}
        include_expansions_in_env: [TOPOLOGY, AUTH, SSL, ORCHESTRATION_FILE]
        args: ["${DRIVERS_TOOLS}/.evergreen/run-orchestration.sh"]
    - command: expansions.update
      params:
        file: mo-expansion.yml
  teardown:
    - command: subprocess.exec
      params:
        binary: bash
        args:
          # Ensure the instance profile is reassigned for aws tests.
          - ${DRIVERS_TOOLS}/.evergreen/auth_aws/teardown.sh
    - command: subprocess.exec
      params:
        binary: bash
        args:
          - ${DRIVERS_TOOLS}/.evergreen/csfle/teardown.sh
    - command: subprocess.exec
      params:
        binary: bash
        args:
          - ${DRIVERS_TOOLS}/.evergreen/ocsp/teardown.sh
    - command: subprocess.exec
      params:
        binary: bash
        args:
          - ${DRIVERS_TOOLS}/.evergreen/teardown.sh
  assume-test-secrets-ec2-role:
    - command: ec2.assume_role
      params:
        role_arn: ${aws_test_secrets_role}
        duration_seconds: 1800
  run-oidc-auth-test-with-test-credentials:
    - command: subprocess.exec
      type: test
      params:
        binary: bash
        env:
          OIDC: oidc
        include_expansions_in_env: [DRIVERS_TOOLS, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN]
        args: [*task-runner, test-oidc]
  run-tests:
    - command: subprocess.exec
      params:
        binary: bash
        env:
          GO_BUILD_TAGS: "cse,mongointernal"
        include_expansions_in_env: ["TOPOLOGY", "AUTH", "SSL", "SKIP_CSOT_TESTS", "MONGODB_URI", "CRYPT_SHARED_LIB_PATH", "SKIP_CRYPT_SHARED_LIB", "RACE", "MONGO_GO_DRIVER_COMPRESSOR", "REQUIRE_API_VERSION", "LOAD_BALANCER"]
        args: [*task-runner, setup-test]
    - command: subprocess.exec
      type: test
      retry_on_failure: true
      params:
        binary: bash
        args: [*task-runner, "${DEFAULT_TASK}"]
  create-api-report:
    - command: subprocess.exec
      type: test
      params:
        binary: bash
        add_expansions_to_env: true
        env:
          BASE_SHA: "${revision}"
          HEAD_SHA: "${github_commit}"
        args: [*task-runner, api-report]
  "backport pr":
    - command: subprocess.exec
      type: test
      params:
        binary: bash
        env:
          COMMIT: "${github_commit}"
          PR_TASK: backport-pr
        args: [*task-runner, pr-task]
  send-perf-data:
    # Here we begin to generate the request to send the data to SPS
    - command: shell.exec
      params:
        script: |
          # We use the requester expansion to determine whether the data is from a mainline evergreen run or not
          if [ "${requester}" == "commit" ]; then
            is_mainline=true
          else
            is_mainline=false
          fi

          # We parse the username out of the order_id as patches append that in and SPS does not need that information
          parsed_order_id=$(echo "${revision_order_id}" | awk -F'_' '{print $NF}')
          # Submit the performance data to the SPS endpoint
          response=$(curl -s -w "\nHTTP_STATUS:%{http_code}" -X 'POST' \
            "https://performance-monitoring-api.corp.mongodb.com/raw_perf_results/cedar_report?project=${project_id}&version=${version_id}&variant=${build_variant}&order=$parsed_order_id&task_name=${task_name}&task_id=${task_id}&execution=${execution}&mainline=$is_mainline" \
            -H 'accept: application/json' \
            -H 'Content-Type: application/json' \
            -d @src/go.mongodb.org/mongo-driver/perf.json)

          http_status=$(echo "$response" | grep "HTTP_STATUS" | awk -F':' '{print $2}')
          response_body=$(echo "$response" | sed '/HTTP_STATUS/d')

          # We want to throw an error if the data was not successfully submitted
          if [ "$http_status" -ne 200 ]; then
            echo "Error: Received HTTP status $http_status"
            echo "Response Body: $response_body"
            exit 1
          fi

          echo "Response Body: $response_body"
          echo "HTTP Status: $http_status"
  send-perf-pr-comment:
    - command: subprocess.exec
      type: test
      params:
        binary: bash
        add_expansions_to_env: true
        env:
          VERSION_ID: ${version_id}
          BASE_SHA: "${revision}"
          HEAD_SHA: "${github_commit}"
        include_expansions_in_env: [PERF_URI_PRIVATE_ENDPOINT]
        args: [*task-runner, perf-pr-comment]
  run-enterprise-auth-tests:
    - command: ec2.assume_role
      params:
        role_arn: "${aws_test_secrets_role}"
    - command: subprocess.exec
      params:
        binary: bash
        include_expansions_in_env: [AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN]
        env:
          TEST_ENTERPRISE_AUTH: plain
        args: [*task-runner, setup-test]
    - command: subprocess.exec
      type: test
      retry_on_failure: true
      params:
        binary: bash
        args: [*task-runner, --silent, evg-test-enterprise-auth]
  run-enterprise-gssapi-auth-tests:
    - command: ec2.assume_role
      params:
        role_arn: "${aws_test_secrets_role}"
    - command: subprocess.exec
      params:
        binary: bash
        include_expansions_in_env: [AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN]
        env:
          TEST_ENTERPRISE_AUTH: gssapi
        args: [*task-runner, setup-test]
    - command: subprocess.exec
      type: test
      retry_on_failure: true
      params:
        binary: bash
        args: [*task-runner, --silent, evg-test-enterprise-auth]
  run-atlas-test:
    - command: ec2.assume_role
      params:
        role_arn: "${aws_test_secrets_role}"
    - command: subprocess.exec
      params:
        binary: bash
        include_expansions_in_env: [AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN]
        env:
          TEST_ATLAS_CONNECT: "1"
        args: [*task-runner, setup-test]
    - command: subprocess.exec
      type: test
      retry_on_failure: true
      params:
        binary: bash
        args: [*task-runner, test-atlas-connect]
  run-ocsp-test:
    - command: subprocess.exec
      params:
        binary: bash
        env:
          TOPOLOGY: server
          AUTH: auth
          SSL: ssl
        include_expansions_in_env: [OCSP_ALGORITHM, MONGODB_URI]
        args: [*task-runner, setup-test]
    - command: subprocess.exec
      type: test
      retry_on_failure: true
      params:
        binary: bash
        include_expansions_in_env: [OCSP_TLS_SHOULD_SUCCEED]
        args: [*task-runner, evg-test-ocsp]
  run-versioned-api-test:
    - command: subprocess.exec
      params:
        binary: bash
        env:
          GO_BUILD_TAGS: cse
        include_expansions_in_env: [AUTH, SSL, MONGODB_URI, TOPOLOGY, MONGO_GO_DRIVER_COMPRESSOR, REQUIRE_API_VERSION, SKIP_CRYPT_SHARED_LIB, CRYPT_SHARED_LIB_PATH]
        args: [*task-runner, setup-test]
    - command: subprocess.exec
      type: test
      retry_on_failure: true
      params:
        binary: bash
        args: [*task-runner, evg-test-versioned-api]
  run-load-balancer-tests:
    - command: subprocess.exec
      params:
        binary: bash
        include_expansions_in_env: [SINGLE_MONGOS_LB_URI, MULTI_MONGOS_LB_URI, AUTH, SSL, MONGO_GO_DRIVER_COMPRESSOR]
        env:
          LOAD_BALANCER: "true"
        args: [*task-runner, setup-test]
    - command: subprocess.exec
      type: test
      retry_on_failure: true
      params:
        binary: bash
        args: [*task-runner, evg-test-load-balancers]
  run-docker-test:
    - command: subprocess.exec
      type: test
      params:
        binary: "bash"
        env:
          TASKFILE_TARGET: test-short
        args: [*task-runner, run-docker]
    - command: subprocess.exec
      type: test
      params:
        binary: "bash"
        env:
          TOPOLOGY: sharded_cluster
          TASKFILE_TARGET: test-short
        args: [*task-runner, run-docker]
  run-goleak-test:
    - command: subprocess.exec
      type: test
      params:
        binary: "bash"
        include_expansions_in_env: ["MONGODB_URI"]
        args: [*task-runner, test-goleak]
  "run oidc k8s test":
    - command: subprocess.exec
      type: test
      params:
        binary: bash
        include_expansions_in_env: [AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN, VARIANT, DRIVERS_TOOLS]
        env:
          OIDC_ENV: k8s
        args: [*task-runner, test-oidc-remote]
  run-ocsp-server:
    - command: subprocess.exec
      params:
        binary: bash
        background: true
        include_expansions_in_env: [SERVER_TYPE, OCSP_ALGORITHM]
        args:
          - ${DRIVERS_TOOLS}/.evergreen/ocsp/setup.sh
  run-load-balancer:
    - command: subprocess.exec
      params:
        binary: "bash"
        include_expansions_in_env: ["MONGODB-AWS", "MONGODB_URI"]
        args: ["${DRIVERS_TOOLS}/.evergreen/run-load-balancer.sh", start]
    - command: expansions.update
      params:
        file: lb-expansion.yml
  run-search-index-tests:
    - command: subprocess.exec
      type: test
      params:
        binary: "bash"
        env:
          SEARCH_INDEX_URI: "${SEARCH_INDEX_URI}"
        args: [*task-runner, evg-test-search-index]
  add-aws-auth-variables-to-file:
    - command: ec2.assume_role
      params:
        role_arn: ${aws_test_secrets_role}
    - command: subprocess.exec
      type: test
      params:
        include_expansions_in_env: ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN"]
        binary: "bash"
        args:
          - ${DRIVERS_TOOLS}/.evergreen/auth_aws/setup-secrets.sh
  run-aws-auth-test-with-regular-aws-credentials:
    - command: subprocess.exec
      type: test
      params:
        binary: "bash"
        env:
          AWS_TEST: regular
        args: [*task-runner, evg-test-aws]
  run-aws-auth-test-with-assume-role-credentials:
    - command: subprocess.exec
      type: test
      params:
        binary: "bash"
        env:
          AWS_TEST: assume-role
        args: [*task-runner, evg-test-aws]
  run-aws-auth-test-with-aws-EC2-credentials:
    - command: subprocess.exec
      type: test
      params:
        binary: bash
        include_expansions_in_env: [SKIP_EC2_AUTH_TEST]
        env:
          AWS_TEST: ec2
        args: [*task-runner, evg-test-aws]
  run-aws-auth-test-with-aws-credentials-as-environment-variables:
    - command: subprocess.exec
      type: test
      params:
        binary: "bash"
        env:
          AWS_TEST: env-creds
        args: [*task-runner, evg-test-aws]
  run-aws-auth-test-with-aws-credentials-and-session-token-as-environment-variables:
    - command: subprocess.exec
      type: test
      params:
        binary: "bash"
        env:
          AWS_TEST: session-creds
        args: [*task-runner, evg-test-aws]
  run-aws-ECS-auth-test:
    - command: subprocess.exec
      type: test
      params:
        binary: "bash"
        include_expansions_in_env: [SKIP_ECS_AUTH_TEST]
        args: [*task-runner, evg-test-aws-ecs]
  run-aws-auth-test-with-aws-web-identity-credentials:
    - command: subprocess.exec
      type: test
      params:
        binary: bash
        include_expansions_in_env: [SKIP_WEB_IDENTITY_AUTH_TEST]
        env:
          AWS_TEST: web-identity
        args: [*task-runner, evg-test-aws]
    - command: subprocess.exec
      type: test
      params:
        binary: bash
        env:
          AWS_ROLE_SESSION_NAME: test
          AWS_TEST: web-identity
        include_expansions_in_env: [SKIP_WEB_IDENTITY_AUTH_TEST]
        args: [*task-runner, evg-test-aws]
  start-cse-servers:
    - command: ec2.assume_role
      params:
        role_arn: ${aws_test_secrets_role}
    - command: subprocess.exec
      params:
        working_dir: src/go.mongodb.org/mongo-driver
        binary: bash
        background: true
        include_expansions_in_env: ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN", "DRIVERS_TOOLS"]
        # This cannot use task because it will hang on Windows.
        args: [etc/setup-encryption.sh]
    - command: subprocess.exec
      params:
        binary: bash
        args: ["${DRIVERS_TOOLS}/.evergreen/csfle/await-servers.sh"]
  run-kmip-tests:
    - command: subprocess.exec
      params:
        binary: "bash"
        env:
          GO_BUILD_TAGS: cse
        include_expansions_in_env: [AUTH, SSL, MONGODB_URI, TOPOLOGY, MONGO_GO_DRIVER_COMPRESSOR]
        args: [*task-runner, setup-test]
    - command: subprocess.exec
      type: test
      retry_on_failure: true
      params:
        binary: "bash"
        env:
          KMS_MOCK_SERVERS_RUNNING: "true"
        args: [*task-runner, evg-test-kmip]
  run-client-side-encryption-test:
    - command: subprocess.exec
      params:
        binary: "bash"
        env:
          GO_BUILD_TAGS: cse
        include_expansions_in_env: [AUTH, SSL, MONGODB_URI, TOPOLOGY, MONGO_GO_DRIVER_COMPRESSOR, CRYPT_SHARED_LIB_PATH]
        args: [*task-runner, setup-test]
    - command: subprocess.exec
      type: test
      retry_on_failure: true
      params:
        binary: "bash"
        env:
          KMS_MOCK_SERVERS_RUNNING: "true"
          KMS_FAILPOINT_CA_FILE: "${DRIVERS_TOOLS}/.evergreen/x509gen/ca.pem"
          KMS_FAILPOINT_SERVER_RUNNING: "true"
        args: [*task-runner, evg-test-client-side-encryption]
  run-fuzz-tests:
    - command: subprocess.exec
      type: test
      params:
        binary: "bash"
        args: [*task-runner, run-fuzz]
pre:
  - func: setup-system
post:
  - func: teardown
  - func: handle-test-artifacts
tasks:
  - name: static-analysis
    tags: ["static-analysis"]
    commands:
      - command: subprocess.exec
        params:
          binary: bash
          args: [*task-runner, check-fmt, check-license, check-modules, lint]
  - name: govulncheck
    tags: ["static-analysis"]
    commands:
      - command: subprocess.exec
        type: test
        params:
          binary: bash
          args: [*task-runner, govulncheck]
  - name: pull-request-helpers
    allowed_requesters: ["patch", "github_pr"]
    commands:
      - func: assume-test-secrets-ec2-role
      - func: "create-api-report"
  - name: backport-pr
    allowed_requesters: ["commit"]
    commands:
      - func: "backport pr"
  - name: perf
    tags: ["performance"]
    exec_timeout_secs: 7200
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          VERSION: "v6.0-perf"
          TOPOLOGY: "server"
          AUTH: "noauth"
          SSL: "nossl"
          SKIP_LEGACY_SHELL: "true"
      - command: subprocess.exec
        params:
          binary: bash
          args: [*task-runner, driver-benchmark]
      - func: assume-test-secrets-ec2-role
      - func: send-perf-data
      - func: send-perf-pr-comment
  - name: test-standalone-noauth-nossl
    tags: ["test", "standalone"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "server"
          AUTH: "noauth"
          SSL: "nossl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "server"
          AUTH: "noauth"
          SSL: "nossl"
  - name: test-standalone-noauth-nossl-snappy-compression
    tags: ["test", "standalone", "compression", "snappy"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "server"
          AUTH: "noauth"
          SSL: "nossl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "server"
          AUTH: "noauth"
          SSL: "nossl"
          MONGO_GO_DRIVER_COMPRESSOR: "snappy"
  - name: test-standalone-noauth-nossl-zlib-compression
    tags: ["test", "standalone", "compression", "zlib"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "server"
          AUTH: "noauth"
          SSL: "nossl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "server"
          AUTH: "noauth"
          SSL: "nossl"
          MONGO_GO_DRIVER_COMPRESSOR: "zlib"
  - name: test-standalone-noauth-nossl-zstd-compression
    tags: ["test", "standalone", "compression", "zstd"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "server"
          AUTH: "noauth"
          SSL: "nossl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "server"
          AUTH: "noauth"
          SSL: "nossl"
          MONGO_GO_DRIVER_COMPRESSOR: "zstd"
  - name: test-standalone-auth-ssl
    tags: ["test", "standalone", "authssl"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "server"
          AUTH: "auth"
          SSL: "ssl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "server"
          AUTH: "auth"
          SSL: "ssl"
  - name: test-standalone-auth-nossl
    tags: ["test", "standalone", "authssl"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "server"
          AUTH: "auth"
          SSL: "nossl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "server"
          AUTH: "auth"
          SSL: "nossl"
  - name: test-standalone-auth-ssl-snappy-compression
    tags: ["test", "standalone", "authssl", "compression", "snappy"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "server"
          AUTH: "auth"
          SSL: "ssl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "server"
          AUTH: "auth"
          SSL: "ssl"
          MONGO_GO_DRIVER_COMPRESSOR: "snappy"
  - name: test-standalone-auth-ssl-zlib-compression
    tags: ["test", "standalone", "authssl", "compression", "zlib"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "server"
          AUTH: "auth"
          SSL: "ssl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "server"
          AUTH: "auth"
          SSL: "ssl"
          MONGO_GO_DRIVER_COMPRESSOR: "zlib"
  - name: test-standalone-auth-ssl-zstd-compression
    tags: ["test", "standalone", "authssl", "compression", "zstd"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "server"
          AUTH: "auth"
          SSL: "ssl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "server"
          AUTH: "auth"
          SSL: "ssl"
          MONGO_GO_DRIVER_COMPRESSOR: "zstd"
  - name: test-ocsp-rsa-valid-cert-server-staples
    tags: ["ocsp", "ocsp-rsa", "ocsp-staple"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "rsa"
          SERVER_TYPE: valid
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-mustStaple.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "rsa"
          OCSP_TLS_SHOULD_SUCCEED: "true"
  - name: test-ocsp-rsa-invalid-cert-server-staples
    tags: ["ocsp", "ocsp-rsa", "ocsp-staple"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "rsa"
          SERVER_TYPE: revoked
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-mustStaple.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "rsa"
          OCSP_TLS_SHOULD_SUCCEED: "false"
  - name: test-ocsp-rsa-valid-cert-server-does-not-staple
    tags: ["ocsp", "ocsp-rsa"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "rsa"
          SERVER_TYPE: valid
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-disableStapling.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "rsa"
          OCSP_TLS_SHOULD_SUCCEED: "true"
  - name: test-ocsp-rsa-invalid-cert-server-does-not-staple
    tags: ["ocsp", "ocsp-rsa"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "rsa"
          SERVER_TYPE: revoked
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-disableStapling.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "rsa"
          OCSP_TLS_SHOULD_SUCCEED: "false"
  - name: test-ocsp-rsa-soft-fail
    tags: ["ocsp", "ocsp-rsa"]
    commands:
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-disableStapling.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "rsa"
          OCSP_TLS_SHOULD_SUCCEED: "true"
  - name: test-ocsp-rsa-malicious-invalid-cert-mustStaple-server-does-not-staple
    tags: ["ocsp", "ocsp-rsa"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "rsa"
          SERVER_TYPE: revoked
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-mustStaple-disableStapling.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "rsa"
          OCSP_TLS_SHOULD_SUCCEED: "false"
  - name: test-ocsp-rsa-malicious-no-responder-mustStaple-server-does-not-staple
    tags: ["ocsp", "ocsp-rsa"]
    commands:
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-mustStaple-disableStapling.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "rsa"
          OCSP_TLS_SHOULD_SUCCEED: "false"
  - name: test-ocsp-rsa-delegate-valid-cert-server-staples
    tags: ["ocsp", "ocsp-rsa", "ocsp-staple"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "rsa"
          SERVER_TYPE: valid-delegate
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-mustStaple.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "rsa"
          OCSP_TLS_SHOULD_SUCCEED: "true"
  - name: test-ocsp-rsa-delegate-invalid-cert-server-staples
    tags: ["ocsp", "ocsp-rsa", "ocsp-staple"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "rsa"
          SERVER_TYPE: revoked-delegate
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-mustStaple.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "rsa"
          OCSP_TLS_SHOULD_SUCCEED: "false"
  - name: test-ocsp-rsa-delegate-valid-cert-server-does-not-staple
    tags: ["ocsp", "ocsp-rsa"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "rsa"
          SERVER_TYPE: valid-delegate
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-disableStapling.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "rsa"
          OCSP_TLS_SHOULD_SUCCEED: "true"
  - name: test-ocsp-rsa-delegate-invalid-cert-server-does-not-staple
    tags: ["ocsp", "ocsp-rsa"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "rsa"
          SERVER_TYPE: revoked-delegate
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-disableStapling.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "rsa"
          OCSP_TLS_SHOULD_SUCCEED: "false"
  - name: test-ocsp-rsa-delegate-malicious-invalid-cert-mustStaple-server-does-not-staple
    tags: ["ocsp", "ocsp-rsa"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "rsa"
          SERVER_TYPE: revoked-delegate
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-mustStaple-disableStapling.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "rsa"
          OCSP_TLS_SHOULD_SUCCEED: "false"
  - name: test-ocsp-ecdsa-valid-cert-server-staples
    tags: ["ocsp", "ocsp-ecdsa", "ocsp-staple"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "ecdsa"
          SERVER_TYPE: valid
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-mustStaple.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "ecdsa"
          OCSP_TLS_SHOULD_SUCCEED: "true"
  - name: test-ocsp-ecdsa-invalid-cert-server-staples
    tags: ["ocsp", "ocsp-ecdsa", "ocsp-staple"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "ecdsa"
          SERVER_TYPE: revoked
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-mustStaple.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "ecdsa"
          OCSP_TLS_SHOULD_SUCCEED: "false"
  - name: test-ocsp-ecdsa-valid-cert-server-does-not-staple
    tags: ["ocsp", "ocsp-ecdsa"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "ecdsa"
          SERVER_TYPE: valid
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-disableStapling.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "ecdsa"
          OCSP_TLS_SHOULD_SUCCEED: "true"
  - name: test-ocsp-ecdsa-invalid-cert-server-does-not-staple
    tags: ["ocsp", "ocsp-ecdsa"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "ecdsa"
          SERVER_TYPE: revoked
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-disableStapling.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "ecdsa"
          OCSP_TLS_SHOULD_SUCCEED: "false"
  - name: test-ocsp-ecdsa-soft-fail
    tags: ["ocsp", "ocsp-ecdsa"]
    commands:
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-disableStapling.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "ecdsa"
          OCSP_TLS_SHOULD_SUCCEED: "true"
  - name: test-ocsp-ecdsa-malicious-invalid-cert-mustStaple-server-does-not-staple
    tags: ["ocsp", "ocsp-ecdsa"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "ecdsa"
          SERVER_TYPE: revoked
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "ecdsa"
          OCSP_TLS_SHOULD_SUCCEED: "false"
  - name: test-ocsp-ecdsa-malicious-no-responder-mustStaple-server-does-not-staple
    tags: ["ocsp", "ocsp-ecdsa"]
    commands:
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "ecdsa"
          OCSP_TLS_SHOULD_SUCCEED: "false"
  - name: test-ocsp-ecdsa-delegate-valid-cert-server-staples
    tags: ["ocsp", "ocsp-ecdsa", "ocsp-staple"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "ecdsa"
          SERVER_TYPE: valid-delegate
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-mustStaple.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "ecdsa"
          OCSP_TLS_SHOULD_SUCCEED: "true"
  - name: test-ocsp-ecdsa-delegate-invalid-cert-server-staples
    tags: ["ocsp", "ocsp-ecdsa", "ocsp-staple"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "ecdsa"
          SERVER_TYPE: revoked-delegate
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-mustStaple.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "ecdsa"
          OCSP_TLS_SHOULD_SUCCEED: "false"
  - name: test-ocsp-ecdsa-delegate-valid-cert-server-does-not-staple
    tags: ["ocsp", "ocsp-ecdsa"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "ecdsa"
          SERVER_TYPE: valid-delegate
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-disableStapling.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "ecdsa"
          OCSP_TLS_SHOULD_SUCCEED: "true"
  - name: test-ocsp-ecdsa-delegate-invalid-cert-server-does-not-staple
    tags: ["ocsp", "ocsp-ecdsa"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "ecdsa"
          SERVER_TYPE: revoked-delegate
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-disableStapling.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "ecdsa"
          OCSP_TLS_SHOULD_SUCCEED: "false"
  - name: test-ocsp-ecdsa-delegate-malicious-invalid-cert-mustStaple-server-does-not-staple
    tags: ["ocsp", "ocsp-ecdsa"]
    commands:
      - func: run-ocsp-server
        vars:
          OCSP_ALGORITHM: "ecdsa"
          SERVER_TYPE: revoked-delegate
      - func: ocsp-bootstrap-mongo-orchestration
        vars:
          ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json"
      - func: run-ocsp-test
        vars:
          OCSP_ALGORITHM: "ecdsa"
          OCSP_TLS_SHOULD_SUCCEED: "false"
  - name: test-docker-runner
    commands:
      - func: bootstrap-mongo-orchestration
      - func: run-docker-test
  - name: test-goroutine-leaks-replicaset
    tags: ["goleak"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "replica_set"
          AUTH: "noauth"
          SSL: "nossl"
      - func: run-goleak-test
  - name: test-goroutine-leaks-sharded
    tags: ["goleak"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "noauth"
          SSL: "nossl"
      - func: run-goleak-test
  - name: test-load-balancer-noauth-nossl
    tags: ["load-balancer"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "noauth"
          SSL: "nossl"
          LOAD_BALANCER: "true"
      - func: run-load-balancer
      - func: run-load-balancer-tests
        vars:
          AUTH: "noauth"
          SSL: "nossl"
  - name: test-load-balancer-auth-ssl
    tags: ["load-balancer"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "auth"
          SSL: "ssl"
          LOAD_BALANCER: "true"
      - func: run-load-balancer
      - func: run-load-balancer-tests
        vars:
          AUTH: "auth"
          SSL: "ssl"
  - name: test-race
    tags: ["race"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "replica_set"
          AUTH: "noauth"
          SSL: "nossl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "replica_set"
          AUTH: "noauth"
          SSL: "nossl"
          RACE: "-race"
  - name: test-replicaset-noauth-nossl
    tags: ["test", "replicaset"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "replica_set"
          AUTH: "noauth"
          SSL: "nossl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "replica_set"
          AUTH: "noauth"
          SSL: "nossl"
  - name: test-replicaset-auth-ssl
    tags: ["test", "replicaset", "authssl"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "replica_set"
          AUTH: "auth"
          SSL: "ssl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "replica_set"
          AUTH: "auth"
          SSL: "ssl"
  - name: test-replicaset-auth-ssl-mongocryptd
    tags: ["test", "replicaset", "authssl", "mongocryptd"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "replica_set"
          AUTH: "auth"
          SSL: "ssl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "replica_set"
          AUTH: "auth"
          SSL: "ssl"
          # Don't use the crypt_shared library, which should cause all of the tests to fall
          # back to using mongocryptd instead of crypt_shared.
          SKIP_CRYPT_SHARED_LIB: "true"
  - name: test-replicaset-auth-nossl
    tags: ["test", "replicaset", "authssl"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "replica_set"
          AUTH: "auth"
          SSL: "nossl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "replica_set"
          AUTH: "auth"
          SSL: "nossl"
  - name: test-sharded-noauth-nossl
    tags: ["test", "sharded"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "noauth"
          SSL: "nossl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "noauth"
          SSL: "nossl"
  - name: test-sharded-noauth-nossl-snappy-compression
    tags: ["test", "sharded", "compression", "snappy"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "noauth"
          SSL: "nossl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "noauth"
          SSL: "nossl"
          MONGO_GO_DRIVER_COMPRESSOR: "snappy"
  - name: test-sharded-noauth-nossl-zlib-compression
    tags: ["test", "sharded", "compression", "zlib"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "noauth"
          SSL: "nossl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "noauth"
          SSL: "nossl"
          MONGO_GO_DRIVER_COMPRESSOR: "zlib"
  - name: test-sharded-noauth-nossl-zstd-compression
    tags: ["test", "sharded", "compression", "zstd"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "noauth"
          SSL: "nossl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "noauth"
          SSL: "nossl"
          MONGO_GO_DRIVER_COMPRESSOR: "zstd"
  - name: test-sharded-auth-ssl
    tags: ["test", "sharded", "authssl"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "auth"
          SSL: "ssl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "auth"
          SSL: "ssl"
  - name: test-sharded-auth-ssl-snappy-compression
    tags: ["test", "sharded", "authssl", "compression", "snappy"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "auth"
          SSL: "ssl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "auth"
          SSL: "ssl"
          MONGO_GO_DRIVER_COMPRESSOR: "snappy"
  - name: test-sharded-auth-ssl-zlib-compression
    tags: ["test", "sharded", "authssl", "compression", "zlib"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "auth"
          SSL: "ssl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "auth"
          SSL: "ssl"
          MONGO_GO_DRIVER_COMPRESSOR: "zlib"
  - name: test-sharded-auth-ssl-zstd-compression
    tags: ["test", "sharded", "authssl", "compression", "zstd"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "auth"
          SSL: "ssl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "auth"
          SSL: "ssl"
          MONGO_GO_DRIVER_COMPRESSOR: "zstd"
  - name: test-sharded-auth-nossl
    tags: ["test", "sharded", "authssl"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "auth"
          SSL: "nossl"
      - func: start-cse-servers
      - func: run-tests
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "auth"
          SSL: "nossl"
  - name: test-enterprise-auth-plain
    tags: ["test", "enterprise-auth"]
    commands:
      - func: run-enterprise-auth-tests
  - name: test-enterprise-auth-gssapi
    tags: ["test", "enterprise-auth"]
    commands:
      - func: run-enterprise-gssapi-auth-tests
        vars:
          MONGO_GO_DRIVER_COMPRESSOR: "snappy"
  # Build the compilecheck submodule with all supported versions of Go >=
  # the minimum supported version.
  - name: go-build
    tags: ["compile-check"]
    commands:
      - command: subprocess.exec
        params:
          binary: bash
          args: [*task-runner, build-compile-check-all]
  # Build with the same Go version that we're using for tests.
  - name: build
    tags: ["compile-check"]
    commands:
      - command: subprocess.exec
        params:
          binary: bash
          # Set the GO_VERSION to empty string to use the Go installation in the
          # PATH.
          env:
            GO_VERSION: ""
          args: [*task-runner, build]
  - name: "atlas-test"
    commands:
      - func: "run-atlas-test"
  - name: "aws-auth-test"
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          AUTH: "auth"
          ORCHESTRATION_FILE: "auth-aws.json"
          TOPOLOGY: "server"
      - func: add-aws-auth-variables-to-file
      - func: run-aws-auth-test-with-regular-aws-credentials
      - func: run-aws-auth-test-with-assume-role-credentials
      - func: run-aws-auth-test-with-aws-credentials-as-environment-variables
      - func: run-aws-auth-test-with-aws-credentials-and-session-token-as-environment-variables
      - func: run-aws-auth-test-with-aws-EC2-credentials
      - func: run-aws-ECS-auth-test
      - func: run-aws-auth-test-with-aws-web-identity-credentials
  - name: "test-standalone-versioned-api"
    tags: ["versioned-api"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "server"
          AUTH: "auth"
          SSL: "nossl"
          REQUIRE_API_VERSION: true
      - func: start-cse-servers
      - func: run-versioned-api-test
        vars:
          TOPOLOGY: "server"
          AUTH: "auth"
          SSL: "nossl"
          REQUIRE_API_VERSION: true
  - name: "test-sharded-versioned-api"
    tags: ["versioned-api"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "auth"
          SSL: "nossl"
          REQUIRE_API_VERSION: true
      - func: start-cse-servers
      - func: run-versioned-api-test
        vars:
          TOPOLOGY: "sharded_cluster"
          AUTH: "auth"
          SSL: "nossl"
          REQUIRE_API_VERSION: true
  - name: "test-standalone-versioned-api-test-commands"
    tags: ["versioned-api"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "server"
          AUTH: "noauth"
          SSL: "nossl"
          ORCHESTRATION_FILE: "versioned-api-testing.json"
      - func: start-cse-servers
      - func: run-versioned-api-test
        vars:
          TOPOLOGY: "server"
          AUTH: "noauth"
          SSL: "nossl"
  - name: "test-kms-kmip"
    tags: ["kms-kmip"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "server"
          AUTH: "noauth"
          SSL: "nossl"
      - func: start-cse-servers
      - func: run-kmip-tests
        vars:
          TOPOLOGY: "server"
          AUTH: "noauth"
          SSL: "nossl"
  - name: "test-client-side-encryption"
    tags: ["client-side-encryption-test"]
    commands:
      - func: bootstrap-mongo-orchestration
        vars:
          TOPOLOGY: "replica_set"
          AUTH: "noauth"
          SSL: "nossl"
      - func: start-cse-servers
      - func: run-client-side-encryption-test
        vars:
          TOPOLOGY: "replica_set"
          AUTH: "noauth"
          SSL: "nossl"
  - name: "testgcpkms-task"
    commands:
      - command: subprocess.exec
        type: test
        params:
          binary: bash
          args: [*task-runner, test-gcpkms]
  - name: "testgcpkms-fail-task"
    # testgcpkms-fail-task runs in a non-GCE environment.
    # It is expected to fail to obtain GCE credentials.
    commands:
      - command: subprocess.exec
        type: test
        params:
          binary: bash
          env:
            EXPECT_ERROR: "1"
          args: [*task-runner, test-gcpkms]
  - name: "testawskms-task"
    commands:
      - func: assume-test-secrets-ec2-role
      - command: subprocess.exec
        type: test
        params:
          binary: "bash"
          add_expansions_to_env: true
          args: [*task-runner, test-awskms]
  - name: "testawskms-fail-task"
    # testawskms-fail-task runs without environment variables.
    # It is expected to fail to obtain credentials.
    commands:
      - func: assume-test-secrets-ec2-role
      - command: subprocess.exec
        type: test
        params:
          binary: "bash"
          add_expansions_to_env: true
          env:
            EXPECT_ERROR: 'status=400'
          args: [*task-runner, test-awskms]
  - name: "testazurekms-task"
    commands:
      - command: subprocess.exec
        type: test
        params:
          binary: bash
          add_expansions_to_env: true
          args: [*task-runner, test-azurekms]
  - name: "testazurekms-fail-task"
    # testazurekms-fail-task runs without environment variables.
    # It is expected to fail to obtain credentials.
    commands:
      - func: assume-test-secrets-ec2-role
      - command: subprocess.exec
        type: test
        params:
          binary: bash
          add_expansions_to_env: true
          env:
            EXPECT_ERROR: "1"
          args: [*task-runner, test-azurekms]
  - name: "test-fuzz"
    commands:
      - func: bootstrap-mongo-orchestration
      - func: run-fuzz-tests
  - name: "test-aws-lambda-deployed"
    commands:
      - command: subprocess.exec
        type: test
        params:
          binary: bash
          add_expansions_to_env: true
          env:
            TEST_LAMBDA_DIRECTORY: ${PROJECT_DIRECTORY}/internal/cmd/faas/awslambda
            LAMBDA_STACK_NAME: dbx-go-lambda
            AWS_REGION: us-east-1
          args: [*task-runner, evg-test-deployed-lambda-aws]
  - name: "oidc-auth-test"
    commands:
      - func: "run-oidc-auth-test-with-test-credentials"
  - name: "oidc-auth-test-azure"
    commands:
      - command: subprocess.exec
        type: test
        params:
          binary: bash
          env:
            OIDC_ENV: azure
          args: [*task-runner, test-oidc-remote]
  - name: "oidc-auth-test-gcp"
    commands:
      - command: subprocess.exec
        type: test
        params:
          binary: bash
          env:
            OIDC_ENV: gcp
          args: [*task-runner, test-oidc-remote]
  - name: "oidc-auth-test-k8s"
    commands:
      - func: assume-test-secrets-ec2-role
      - func: "run oidc k8s test"
        vars:
          VARIANT: eks
      - func: "run oidc k8s test"
        vars:
          VARIANT: gke
      - func: "run oidc k8s test"
        vars:
          VARIANT: aks
  - name: "test-search-index"
    commands:
      - func: "bootstrap-mongo-orchestration"
        vars:
          VERSION: "latest"
          TOPOLOGY: "replica_set"
      - func: "run-search-index-tests"
axes:
  - id: version
    display_name: MongoDB Version
    values:
      - id: "8.0"
        display_name: "8.0"
        variables:
          VERSION: "8.0"
      - id: "7.0"
        display_name: "7.0"
        variables:
          VERSION: "7.0"
      - id: "6.0"
        display_name: "6.0"
        variables:
          VERSION: "6.0"
      - id: "5.0"
        display_name: "5.0"
        variables:
          VERSION: "5.0"
      - id: "4.4"
        display_name: "4.4"
        variables:
          VERSION: "4.4"
      - id: "4.2"
        display_name: "4.2"
        variables:
          VERSION: "4.2"
      - id: "rapid"
        display_name: "rapid"
        variables:
          VERSION: "rapid"
      - id: "latest"
        display_name: "latest"
        variables:
          VERSION: "latest"
  # OSes that require >= 3.2 for SSL
  - id: os-ssl-32
    display_name: OS
    values:
      - id: "windows-64"
        display_name: "Windows 64-bit"
        run_on:
          - windows-2022-latest-small
        variables:
          GCC_PATH: "/cygdrive/c/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/bin"
          GO_DIST: "C:\\golang\\go1.25"
          VENV_BIN_DIR: "Scripts"
          DEFAULT_TASK: evg-test
          # CSOT tests are unreliable on our slow Windows hosts.
          SKIP_CSOT_TESTS: true
      - id: "rhel87-64"
        display_name: "RHEL 8.7"
        run_on: rhel8.7-large
        variables:
          GO_DIST: "/opt/golang/go1.25"
          DEFAULT_TASK: evg-test
      - id: "macos"
        display_name: "MacOS 14.0"
        run_on: macos-14
        batchtime: 1440 # Run at most once per 24 hours.
        variables:
          GO_DIST: "/opt/golang/go1.25"
          DEFAULT_TASK: evg-test-load-balancers
          # CSOT tests are unreliable on our slow macOS hosts.
          SKIP_CSOT_TESTS: true
  # OSes that require >= 4.0 for SSL
  - id: os-ssl-40
    display_name: OS
    values:
      - id: "windows-64"
        display_name: "Windows 64-bit"
        run_on:
          - windows-2022-latest-small
        variables:
          GCC_PATH: "/cygdrive/c/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/bin"
          GO_DIST: "C:\\golang\\go1.25"
          VENV_BIN_DIR: "Scripts"
          DEFAULT_TASK: evg-test
          # CSOT tests are unreliable on our slow Windows hosts.
          SKIP_CSOT_TESTS: true
      - id: "rhel87-64"
        display_name: "RHEL 8.7"
        run_on: rhel8.7-large
        variables:
          GO_DIST: "/opt/golang/go1.25"
          DEFAULT_TASK: evg-test
      - id: "macos"
        display_name: "MacOS 14.0"
        run_on: macos-14
        batchtime: 1440 # Run at most once per 24 hours.
        variables:
          GO_DIST: "/opt/golang/go1.25"
          DEFAULT_TASK: evg-test-load-balancers
          # CSOT tests are unreliable on our slow macOS hosts.
          SKIP_CSOT_TESTS: true
  - id: ocsp-rhel-87
    display_name: OS
    values:
      - id: "rhel87"
        display_name: "RHEL 8.7"
        run_on: rhel8.7-large
        variables:
          GO_DIST: "/opt/golang/go1.25"
          DEFAULT_TASK: evg-test
  - id: os-aws-auth
    display_name: OS
    values:
      - id: "windows-64-2022-latest-small"
        display_name: "Windows 64-bit"
        run_on:
          - windows-2022-latest-small
        variables:
          GCC_PATH: "/cygdrive/c/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/bin"
          GO_DIST: "C:\\golang\\go1.25"
          SKIP_ECS_AUTH_TEST: true
          DEFAULT_TASK: evg-test
          # CSOT tests are unreliable on our slow Windows hosts.
          SKIP_CSOT_TESTS: true
      - id: "ubuntu2004-64"
        display_name: "Ubuntu 20.04"
        run_on: ubuntu2004-test
        variables:
          GO_DIST: "/opt/golang/go1.25"
          DEFAULT_TASK: evg-test
      - id: "macos"
        display_name: "MacOS 14.0"
        run_on: macos-14
        batchtime: 1440 # Run at most once per 24 hours.
        variables:
          GO_DIST: "/opt/golang/go1.25"
          SKIP_ECS_AUTH_TEST: true
          SKIP_EC2_AUTH_TEST: true
          SKIP_WEB_IDENTITY_AUTH_TEST: true
          DEFAULT_TASK: evg-test-load-balancers
          # CSOT tests are unreliable on our slow macOS hosts.
          SKIP_CSOT_TESTS: true
  - id: os-faas-80
    display_name: OS
    values:
      - id: "rhel87-large"
        display_name: "RHEL 8.7"
        run_on: rhel8.7-large
        variables:
          GO_DIST: "/opt/golang/go1.25"
task_groups:
  - name: testgcpkms_task_group
    setup_group_can_fail_task: true
    setup_group_timeout_secs: 1800 # 30 minutes
    setup_group:
      - func: setup-system
      - func: assume-test-secrets-ec2-role
      - command: subprocess.exec
        params:
          binary: "bash"
          add_expansions_to_env: true
          args:
            - ${DRIVERS_TOOLS}/.evergreen/csfle/gcpkms/setup.sh
    teardown_group:
      - command: subprocess.exec
        params:
          binary: "bash"
          args:
            - ${DRIVERS_TOOLS}/.evergreen/csfle/gcpkms/teardown.sh
      - func: teardown
      - func: handle-test-artifacts
    tasks:
      - testgcpkms-task
  - name: testazurekms_task_group
    setup_group_can_fail_task: true
    teardown_task_can_fail_task: true
    setup_group_timeout_secs: 1800 # 30 minutes
    setup_group:
      - func: setup-system
      - func: assume-test-secrets-ec2-role
      - command: subprocess.exec
        params:
          binary: bash
          add_expansions_to_env: true
          env:
            AZUREKMS_VMNAME_PREFIX: GODRIVER
          args:
            - ${DRIVERS_TOOLS}/.evergreen/csfle/azurekms/setup.sh
    teardown_group:
      - command: subprocess.exec
        params:
          binary: "bash"
          args:
            - ${DRIVERS_TOOLS}/.evergreen/csfle/azurekms/teardown.sh
      - func: teardown
      - func: handle-test-artifacts
    tasks:
      - testazurekms-task
  - name: testoidc_task_group
    setup_group_can_fail_task: true
    setup_group_timeout_secs: 1800
    # TODO(DRIVERS-3141): Uncomment the following line once the teardown bug is
    # fixed. See DRIVERS-3141 for more context.
    #
    # teardown_task_can_fail_task: true
    teardown_group_timeout_secs: 180 # 3 minutes (max allowed time)
    setup_group:
      - func: setup-system
      - func: assume-test-secrets-ec2-role
      - command: subprocess.exec
        params:
          binary: bash
          include_expansions_in_env: ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN"]
          env:
            MONGODB_VERSION: "8.0"
          args:
            - ${DRIVERS_TOOLS}/.evergreen/auth_oidc/setup.sh
    teardown_task:
      - command: subprocess.exec
        params:
          binary: bash
          args:
            - ${DRIVERS_TOOLS}/.evergreen/auth_oidc/teardown.sh
      - func: teardown
      - func: handle-test-artifacts
    tasks:
      - oidc-auth-test
  - name: testazureoidc_task_group
    setup_group_can_fail_task: true
    setup_group_timeout_secs: 1800
    teardown_task_can_fail_task: true
    teardown_group_timeout_secs: 180 # 3 minutes (max allowed time)
    setup_group:
      - func: setup-system
      - func: assume-test-secrets-ec2-role
      - command: subprocess.exec
        params:
          binary: bash
          add_expansions_to_env: true
          env:
            AZUREOIDC_VMNAME_PREFIX: "GO_DRIVER"
          args:
            - ${DRIVERS_TOOLS}/.evergreen/auth_oidc/azure/setup.sh
    teardown_task:
      - command: subprocess.exec
        params:
          binary: bash
          args:
            - ${DRIVERS_TOOLS}/.evergreen/auth_oidc/azure/teardown.sh
      - func: teardown
      - func: handle-test-artifacts
    tasks:
      - oidc-auth-test-azure
  - name: testgcpoidc_task_group
    setup_group_can_fail_task: true
    setup_group_timeout_secs: 1800
    teardown_task_can_fail_task: true
    teardown_group_timeout_secs: 180 # 3 minutes (max allowed time)
    setup_group:
      - func: setup-system
      - func: assume-test-secrets-ec2-role
      - command: subprocess.exec
        params:
          binary: bash
          add_expansions_to_env: true
          env:
            AZUREOIDC_VMNAME_PREFIX: "GO_DRIVER"
          args:
            - ${DRIVERS_TOOLS}/.evergreen/auth_oidc/gcp/setup.sh
    teardown_task:
      - command: subprocess.exec
        params:
          binary: bash
          args:
            - ${DRIVERS_TOOLS}/.evergreen/auth_oidc/gcp/teardown.sh
      - func: teardown
      - func: handle-test-artifacts
    tasks:
      - oidc-auth-test-gcp
  - name: testk8soidc_task_group
    setup_group_can_fail_task: true
    setup_group_timeout_secs: 1800
    teardown_task_can_fail_task: true
    teardown_group_timeout_secs: 180 # 3 minutes (max allowed time)
    setup_group:
      - func: setup-system
      - func: assume-test-secrets-ec2-role
      - command: subprocess.exec
        params:
          binary: bash
          include_expansions_in_env: ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN"]
          args:
            - ${DRIVERS_TOOLS}/.evergreen/auth_oidc/k8s/setup.sh
    teardown_group:
      - command: subprocess.exec
        params:
          binary: bash
          args:
            - ${DRIVERS_TOOLS}/.evergreen/auth_oidc/k8s/teardown.sh
      - func: teardown
      - func: handle-test-artifacts
    tasks:
      - oidc-auth-test-k8s
  - name: test-aws-lambda-task-group
    setup_group:
      - func: setup-system
      - func: assume-test-secrets-ec2-role
      - command: subprocess.exec
        params:
          working_dir: src/go.mongodb.org/mongo-driver
          binary: bash
          include_expansions_in_env: [AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN]
          env:
            MONGODB_VERSION: ${VERSION}
            LAMBDA_STACK_NAME: dbx-go-lambda
          args:
            - ${DRIVERS_TOOLS}/.evergreen/atlas/setup.sh
    teardown_group:
      - command: subprocess.exec
        params:
          working_dir: src/go.mongodb.org/mongo-driver
          binary: bash
          add_expansions_to_env: true
          env:
            LAMBDA_STACK_NAME: dbx-go-lambda
            AWS_REGION: us-east-1
          args:
            - ${DRIVERS_TOOLS}/.evergreen/atlas/teardown.sh
      - func: teardown
      - func: handle-test-artifacts
    setup_group_can_fail_task: true
    setup_group_timeout_secs: 1800
    tasks:
      - test-aws-lambda-deployed
  - name: test-search-index-task-group
    setup_group:
      - func: setup-system
      - func: assume-test-secrets-ec2-role
      - command: subprocess.exec
        params:
          working_dir: src/go.mongodb.org/mongo-driver
          binary: bash
          include_expansions_in_env: [AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN, MONGODB_URI]
          env:
            MONGODB_VERSION: ${VERSION}
            LAMBDA_STACK_NAME: dbx-go-lambda
          args:
            - ${DRIVERS_TOOLS}/.evergreen/atlas/setup.sh
      - command: expansions.update
        params:
          file: src/go.mongodb.org/mongo-driver/atlas-expansion.yml
      - command: shell.exec
        params:
          working_dir: src/go.mongodb.org/mongo-driver
          shell: bash
          script: |-
            echo "SEARCH_INDEX_URI: ${MONGODB_URI}" > atlas-expansion.yml
      - command: expansions.update
        params:
          file: src/go.mongodb.org/mongo-driver/atlas-expansion.yml
    teardown_group:
      - command: subprocess.exec
        params:
          working_dir: src/go.mongodb.org/mongo-driver
          binary: bash
          args:
            - ${DRIVERS_TOOLS}/.evergreen/atlas/teardown.sh
      - func: teardown
      - func: handle-test-artifacts
    setup_group_can_fail_task: true
    setup_group_timeout_secs: 1800
    tasks:
      - test-search-index
buildvariants:
  - name: static-analysis
    tags: ["pullrequest"]
    display_name: "Static Analysis"
    run_on:
      - rhel8.7-small
    expansions:
      # Keep this in sync with go version used in etc/golangci-lint.sh
      GO_DIST: "/opt/golang/go1.25"
    tasks:
      - name: ".static-analysis"
  - name: pull-request-helpers
    tags: ["pullrequest"]
    display_name: "Pull Request Helpers"
    run_on:
      - rhel8.7-small
    expansions:
      GO_DIST: "/opt/golang/go1.25"
    tasks:
      - name: "pull-request-helpers"
  - name: perf
    tags: ["pullrequest"]
    display_name: "Performance"
    run_on: rhel90-dbx-perf-large
    expansions:
      GO_DIST: "/opt/golang/go1.25"
    tasks:
      - name: ".performance"
  - name: build-check
    tags: ["pullrequest"]
    display_name: "Compile Only Checks"
    run_on:
      - ubuntu2204-small
    expansions:
      GO_DIST: "/opt/golang/go1.25"
    tasks:
      - name: ".compile-check"
  - name: backport-pr
    display_name: "Backport PR"
    run_on:
      - rhel8.7-small
    expansions:
      GO_DIST: "/opt/golang/go1.25"
    tasks:
      - name: "backport-pr"
  - name: atlas-test
    tags: ["pullrequest"]
    display_name: "Atlas test"
    run_on:
      - rhel8.7-large
    expansions:
      GO_DIST: "/opt/golang/go1.25"
    tasks:
      - name: "atlas-test"
  - name: docker-runner-test
    tags: ["pullrequest"]
    display_name: "Docker Runner Test"
    run_on:
      - ubuntu2204-large
    expansions:
      GO_DIST: "/opt/golang/go1.25"
    tasks:
      - name: "test-docker-runner"
  - name: goroutine-leaks-test
    tags: ["pullrequest"]
    display_name: "Goroutine Leaks Test"
    run_on:
      - ubuntu2204-large
    expansions:
      GO_DIST: "/opt/golang/go1.25"
    tasks:
      - name: ".goleak"
  - matrix_name: "tests-rhel-44-plus-zlib-zstd-support"
    tags: ["pullrequest"]
    matrix_spec: {version: ["4.2", "4.4", "5.0", "6.0", "7.0", "8.0"], os-ssl-40: ["rhel87-64"]}
    display_name: "${version} ${os-ssl-40}"
    tasks:
      - name: ".test !.enterprise-auth !.snappy"
  - matrix_name: "tests-windows-42-plus-zlib-zstd-support"
    matrix_spec: {version: ["4.2", "4.4", "5.0", "6.0", "7.0"], os-ssl-40: ["windows-64"]}
    display_name: "${version} ${os-ssl-40}"
    tasks:
      - name: ".test !.enterprise-auth !.snappy"
  - matrix_name: "tests-windows-80-zlib-zstd-support"
    tags: ["pullrequest"]
    matrix_spec: {version: ["8.0"], os-ssl-40: ["windows-64"]}
    display_name: "${version} ${os-ssl-40}"
    tasks:
      - name: ".test !.enterprise-auth !.snappy"
  - matrix_name: "tests-latest-rapid-zlib-zstd-support"
    matrix_spec: {version: ["latest", "rapid"], os-ssl-40: ["windows-64", "rhel87-64"]}
    display_name: "${version} ${os-ssl-40}"
    tasks:
      - name: ".test !.enterprise-auth !.snappy"
  - matrix_name: "enterprise-auth-tests"
    matrix_spec: {os-ssl-32: "*"}
    display_name: "Enterprise Auth - ${os-ssl-32}"
    tasks:
      - name: ".test .enterprise-auth"
  - matrix_name: "aws-auth-test"
    matrix_spec: {version: ["4.4", "5.0", "6.0", "7.0", "8.0", "latest", "rapid"], os-aws-auth: "*"}
    display_name: "MONGODB-AWS Auth ${version} ${os-aws-auth}"
    tasks:
      - name: "aws-auth-test"
  - matrix_name: "ocsp-test"
    matrix_spec: {version: ["4.4", "5.0", "6.0", "7.0", "8.0", "latest", "rapid"], ocsp-rhel-87: ["rhel87"]}
    display_name: "OCSP ${version} ${ocsp-rhel-87}"
    batchtime: 20160 # Use a batchtime of 14 days as suggested by the OCSP test README
    tasks:
      - name: ".ocsp"
  - matrix_name: "ocsp-test-windows"
    matrix_spec: {version: ["4.4", "5.0", "6.0", "7.0", "8.0", "latest", "rapid"], os-ssl-40: ["windows-64"]}
    display_name: "OCSP ${version} ${os-ssl-40}"
    batchtime: 20160 # Use a batchtime of 14 days as suggested by the OCSP test README
    tasks:
      # Windows MongoDB servers do not staple OCSP responses and only support RSA.
      - name: ".ocsp-rsa !.ocsp-staple"
  - matrix_name: "ocsp-test-macos"
    matrix_spec: {version: ["4.4", "5.0", "6.0", "7.0", "8.0", "latest", "rapid"], os-ssl-40: ["macos"]}
    display_name: "OCSP ${version} ${os-ssl-40}"
    batchtime: 20160 # Use a batchtime of 14 days as suggested by the OCSP test README
    tasks:
      # macos MongoDB servers do not staple OCSP responses and only support RSA.
      - name: ".ocsp-rsa !.ocsp-staple"
  - matrix_name: "race-test"
    tags: ["pullrequest"]
    matrix_spec: {version: ["7.0"], os-ssl-40: ["rhel87-64"]}
    display_name: "Race Detector Test"
    tasks:
      - name: ".race"
  - matrix_name: "versioned-api-test"
    tags: ["pullrequest"]
    matrix_spec: {version: ["5.0", "6.0", "7.0", "8.0"], os-ssl-40: ["windows-64", "rhel87-64"]}
    display_name: "API Version ${version} ${os-ssl-40}"
    tasks:
      - name: ".versioned-api"
  - matrix_name: "versioned-api-latest-rapid-test"
    matrix_spec: {version: ["latest", "rapid"], os-ssl-40: ["windows-64", "rhel87-64"]}
    display_name: "API Version ${version} ${os-ssl-40}"
    tasks:
      - name: ".versioned-api"
  - matrix_name: "client-side-encryption-test"
    matrix_spec: {version: ["latest", "rapid"], os-ssl-40: ["rhel87-64"]}
    display_name: "Client Side Encryption Tests ${version} ${os-ssl-40}"
    tasks:
      - name: ".client-side-encryption-test"
  - matrix_name: "load-balancer-test"
    tags: ["pullrequest"]
    matrix_spec: {version: ["5.0", "6.0", "7.0", "8.0"], os-ssl-40: ["rhel87-64"]}
    display_name: "Load Balancer Support ${version} ${os-ssl-40}"
    tasks:
      - name: ".load-balancer"
  - matrix_name: "load-balancer-latest-rapid-test"
    matrix_spec: {version: ["latest", "rapid"], os-ssl-40: ["rhel87-64"]}
    display_name: "Load Balancer Support ${version} ${os-ssl-40}"
    tasks:
      - name: ".load-balancer"
  - matrix_name: "kms-kmip-test"
    matrix_spec: {version: ["7.0"], os-ssl-40: ["rhel87-64"]}
    display_name: "KMS KMIP ${os-ssl-40}"
    tasks:
      - name: ".kms-kmip"
  - matrix_name: "fuzz-test"
    matrix_spec: {version: ["5.0"], os-ssl-40: ["rhel87-64"]}
    display_name: "Fuzz ${version} ${os-ssl-40}"
    tasks:
      - name: "test-fuzz"
        batchtime: 1440 # Run at most once per 24 hours.
  - matrix_name: "faas-test"
    matrix_spec: {version: ["7.0"], os-faas-80: ["rhel87-large"]}
    display_name: "FaaS ${version} ${os-faas-80}"
    tasks:
      - test-aws-lambda-task-group
  - matrix_name: "searchindex-test"
    matrix_spec: {version: ["7.0"], os-faas-80: ["rhel87-large"]}
    display_name: "Search Index ${version} ${os-faas-80}"
    tasks:
      - test-search-index-task-group
  - name: testgcpkms-variant
    display_name: "GCP KMS"
    run_on:
      - rhel8.7-small
    expansions:
      GO_DIST: "/opt/golang/go1.25"
    tasks:
      - name: testgcpkms_task_group
        batchtime: 20160 # Use a batchtime of 14 days as suggested by the CSFLE test README
      - testgcpkms-fail-task
  - name: testawskms-variant
    display_name: "AWS KMS"
    run_on:
      - rhel8.7-small
    expansions:
      GO_DIST: "/opt/golang/go1.25"
    tasks:
      - testawskms-task
      - testawskms-fail-task
  - name: testazurekms-variant
    display_name: "AZURE KMS"
    run_on:
      - rhel8.7-small
    expansions:
      GO_DIST: "/opt/golang/go1.25"
    tasks:
      - name: testazurekms_task_group
        batchtime: 20160 # Use a batchtime of 14 days as suggested by the CSFLE test README
      - testazurekms-fail-task
  - name: testoidc-variant
    display_name: "OIDC"
    run_on:
      - ubuntu2204-small
    expansions:
      GO_DIST: "/opt/golang/go1.25"
    tasks:
      - name: testoidc_task_group
      - name: testazureoidc_task_group
      - name: testgcpoidc_task_group
      - name: testk8soidc_task_group


================================================
FILE: .evergreen/krb5.config
================================================
[realms]
  LDAPTEST.10GEN.CC = {
    kdc = ldaptest.10gen.cc
    admin_server = ldaptest.10gen.cc
  }

[libdefaults]
  rdns = false


================================================
FILE: .evergreen/ocsp-requirements.txt
================================================
asn1crypto==1.3.0
bottle==0.12.20
oscrypto==1.2.0


================================================
FILE: .evergreen/run-mongodb-aws-ecs-test.sh
================================================
#!/bin/bash

set -o errexit  # Exit the script with error if any of the commands fail

############################################
#            Main Program                  #
############################################

if [[ -z "$1" ]]; then
    echo "usage: $0 <MONGODB_URI>"
    exit 1
fi
export MONGODB_URI="$1"

echo "Running MONGODB-AWS ECS authentication tests"

if echo "$MONGODB_URI" | grep -q "@"; then
  echo "MONGODB_URI unexpectedly contains user credentials in ECS test!";
  exit 1
fi

./src/main


================================================
FILE: .evergreen/run-task.sh
================================================
#!/usr/bin/env bash
#
# Source the env.sh file and run the given task
set -eu

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
PROJECT_DIRECTORY=$(dirname $SCRIPT_DIR)
pushd ${PROJECT_DIRECTORY} > /dev/null

source env.sh
task "$@"

popd > /dev/null


================================================
FILE: .evergreen/setup-system.sh
================================================
#!/usr/bin/env bash
#
# Set up environment and write env.sh and expansion.yml files.
set -eu

# Set up default environment variables.
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
PROJECT_DIRECTORY=$(dirname $SCRIPT_DIR)
pushd $PROJECT_DIRECTORY
ROOT_DIR=$(dirname $PROJECT_DIRECTORY)
DRIVERS_TOOLS=${DRIVERS_TOOLS:-${ROOT_DIR}/drivers-evergreen-tools}
MONGO_ORCHESTRATION_HOME="${DRIVERS_TOOLS}/.evergreen/orchestration"
MONGODB_BINARIES="${DRIVERS_TOOLS}/mongodb/bin"
OS="${OS:-""}"

# Set Golang environment vars. GOROOT is wherever current Go distribution is, and is set in evergreen config.
# GOPATH is always 3 directories up from pwd on EVG; GOCACHE is under .cache in the pwd.
GOROOT=${GOROOT:-$(dirname "$(dirname "$(which go)")")}
export GOPATH=${GOPATH:-$ROOT_DIR}
export GOCACHE="${GO_CACHE:-$PROJECT_DIRECTORY/.cache}"

# Handle paths on Windows.
if [ "Windows_NT" = "${OS:-}" ]; then # Magic variable in cygwin
  GOPATH=$(cygpath -m $GOPATH)
  GOCACHE=$(cygpath -w $GOCACHE)
  DRIVERS_TOOLS=$(cygpath -m $DRIVERS_TOOLS)
  PROJECT_DIRECTORY=$(cygpath -m $PROJECT_DIRECTORY)
  EXTRA_PATH=/cygdrive/c/libmongocrypt/bin
  MONGO_ORCHESTRATION_HOME=$(cygpath -m $MONGO_ORCHESTRATION_HOME)
  MONGODB_BINARIES=$(cygpath -m $MONGODB_BINARIES)
  # Set home variables for Windows, too.
  USERPROFILE=$(cygpath -w "$ROOT_DIR")
  HOME=$USERPROFILE
else
  EXTRA_PATH=${GCC:-}
fi

# Add binaries to the path.
PATH="${GOROOT}/bin:${GOPATH}/bin:${MONGODB_BINARIES}:${EXTRA_PATH}:${PATH}"

# Get the current unique version of this checkout.
if [ "${IS_PATCH:-}" = "true" ]; then
    CURRENT_VERSION=$(git describe)-patch-${VERSION_ID}
else
    CURRENT_VERSION=latest
fi

# Ensure a checkout of drivers-tools.
if [ ! -d "$DRIVERS_TOOLS" ]; then
  git clone https://github.com/mongodb-labs/drivers-evergreen-tools $DRIVERS_TOOLS
fi

# Write the .env file for drivers-tools.
cat <<EOT > ${DRIVERS_TOOLS}/.env
SKIP_LEGACY_SHELL=1
DRIVERS_TOOLS="$DRIVERS_TOOLS"
MONGO_ORCHESTRATION_HOME="$MONGO_ORCHESTRATION_HOME"
MONGODB_BINARIES="$MONGODB_BINARIES"
TMPDIR="$MONGO_ORCHESTRATION_HOME/db"
EOT

# Check Go installation.
go version
go env

# Install taskfile.
go install github.com/go-task/task/v3/cmd/task@v3.39.1

# Write our own env file.
cat <<EOT > env.sh
export GOROOT="$GOROOT"
export GOPATH="$GOPATH"
export GOCACHE="$GOCACHE"
export DRIVERS_TOOLS="$DRIVERS_TOOLS"
export PROJECT_DIRECTORY="$PROJECT_DIRECTORY"
export MONGODB_BINARIES="$MONGODB_BINARIES"
export PATH="$PATH"
EOT

if [ "Windows_NT" = "$OS" ]; then
    echo "export USERPROFILE=$USERPROFILE" >> env.sh
    echo "export HOME=$HOME" >> env.sh
fi

# source the env.sh file and write the expansion file.
cat <<EOT > expansion.yml
CURRENT_VERSION: "$CURRENT_VERSION"
DRIVERS_TOOLS: "$DRIVERS_TOOLS"
PROJECT_DIRECTORY: "$PROJECT_DIRECTORY"
RUN_TASK: "$PROJECT_DIRECTORY/.evergreen/run-task.sh"
EOT

cat env.sh
popd


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"
    groups:
      actions:
        patterns:
          - "*"
  - package-ecosystem: gomod
    directory: /
    schedule:
      interval: "weekly"
  - package-ecosystem: "gitsubmodule"
    directory: "/"
    schedule:
      interval: "monthly"


================================================
FILE: .github/labeler.yml
================================================
review-priority-normal:
  - changed-files:
      - any-glob-to-any-file: "*"
documentation:
  - changed-files:
      - any-glob-to-any-file:
          - docs/**
          - examples/**
dependencies:
  - changed-files:
      - any-glob-to-any-file:
          - go.mod


================================================
FILE: .github/release.yml
================================================
changelog:
  exclude:
    labels:
      - ignore-for-release
      - github_actions
      - submodules
    authors:
      - mongodb-drivers-pr-bot
  categories:
    - title: ⚠️ Breaking Changes
      labels:
        - breaking
    - title: ✨ New Features
      labels:
        - enhancement
        - feature
    - title: 🐛 Fixed
      labels:
        - bug
    - title: 📦 Dependency Updates
      labels:
        - dependencies
    - title: 📝 Other Changes
      labels:
        - "*"


================================================
FILE: .github/workflows/check-labels.yml
================================================
name: Label Checker
on:
  pull_request:
    types:
      - opened
      - synchronize
      - reopened
      - labeled
      - unlabeled
permissions:
  pull-requests: read
jobs:
  check_labels:
    name: Check labels
    runs-on: ubuntu-latest
    steps:
      - uses: docker://agilepathway/pull-request-label-checker@sha256:65e57fd98ba3ab6ca4fcbc5a0aef288dd984ee4ab988f124d83424d19b55b801
        with:
          one_of: bug,feature,enhancement,documentation,dependencies,ignore-for-release,ci/cd
          repo_token: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/codeql.yml
================================================
name: "CodeQL"
on:
  push:
    branches:
      - "v1"
      - "cloud-*"
      - "master"
      - "release/*"
      - "feature/*"
  pull_request:
    branches:
      - "v1"
      - "cloud-*"
      - "master"
      - "release/*"
      - "feature/*"
  schedule:
    - cron: "36 17 * * 0"
  workflow_call:
    inputs:
      ref:
        required: true
        type: string
permissions:
  contents: read
jobs:
  analyze:
    name: Analyze (go)
    runs-on: "ubuntu-latest"
    timeout-minutes: 360
    permissions:
      # required for all workflows
      contents: read
      security-events: write
    steps:
      - name: Checkout repository
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
      - name: Set up Go
        uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 #v6.3.0
        with:
          go-version: "1.25.0"
      # Initializes the CodeQL tools for scanning.
      - name: Initialize CodeQL
        uses: github/codeql-action/init@v4.33.0 #immutable
        with:
          languages: go
          build-mode: manual
      - name: Build (CodeQL-instrumented)
        shell: bash
        run: |
          # TODO(GODRIVER-3723): Run using taskfile targets.
          go build ./...
          go test -short -run ^$$ ./...

          go test -v ./internal/test/compilecheck -run '^TestCompileCheck/go:1\.19$'
      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v4.33.0 #immutable
        with:
          category: "/language:go"


================================================
FILE: .github/workflows/create-release-branch.yml
================================================
name: Create Release Branch
on:
  workflow_dispatch:
    inputs:
      branch_name:
        description: The name of the new branch
        required: true
      version:
        description: The version to set on the branch
        required: true
      base_ref:
        description: The base reference for the branch
      push_changes:
        description: Whether to push the changes
        default: "true"
permissions:
  contents: read
concurrency:
  group: create-branch-${{ github.ref }}
  cancel-in-progress: true
defaults:
  run:
    shell: bash -eux {0}
jobs:
  create-branch:
    environment: release
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: write
    outputs:
      version: ${{ steps.pre-publish.outputs.version }}
    steps:
      - uses: mongodb-labs/drivers-github-tools/secure-checkout@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
        with:
          app_id: ${{ vars.APP_ID }}
          private_key: ${{ secrets.APP_PRIVATE_KEY }}
      - uses: mongodb-labs/drivers-github-tools/setup@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
        with:
          aws_role_arn: ${{ secrets.AWS_ROLE_ARN }}
          aws_region_name: ${{ vars.AWS_REGION_NAME }}
          aws_secret_id: ${{ secrets.AWS_SECRET_ID }}
          artifactory_username: ${{ vars.ARTIFACTORY_USERNAME }}
      - uses: mongodb-labs/drivers-github-tools/create-branch@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
        id: create-branch
        with:
          branch_name: ${{ inputs.branch_name }}
          version: ${{ inputs.version }}
          base_ref: ${{ inputs.base_ref }}
          push_changes: ${{ inputs.push_changes }}
          version_bump_script: "go run ${{ github.action_path }}/bump-version.go"
          evergreen_project: mongo-go-driver-release
          release_workflow_path: ./.github/workflows/release.yml


================================================
FILE: .github/workflows/labeler.yml
================================================
name: "Pull Request Labeler"
on:
  - pull_request_target
permissions:
  contents: read
jobs:
  labeler:
    permissions:
      contents: read
      pull-requests: write
    runs-on: ubuntu-latest
    steps:
      - uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b #v6.0.1


================================================
FILE: .github/workflows/merge-up.yml
================================================
name: Merge up
on:
  push:
    branches:
      - release/*.*
      - v*
permissions:
  contents: read
jobs:
  merge-up:
    name: Create merge up pull request
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: write
      pull-requests: write
    steps:
      - uses: mongodb-labs/drivers-github-tools/secure-checkout@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
        with:
          app_id: ${{ vars.PR_APP_ID }}
          private_key: ${{ secrets.PR_APP_PRIVATE_KEY }}
          # Make sure to include fetch-depth 0 so all branches are fetched, not
          # just the current one
          fetch-depth: 0
      - name: Create pull request
        id: create-pull-request
        uses: alcaeus/automatic-merge-up-action@e23e7c71d58f12531cbaba73473bbe78fd14baf0 #v1.0.1
        with:
          ref: ${{ github.ref_name }}
          branchNamePattern: "release/<major>.<minor>"
          devBranchNamePattern: "v<major>"
          fallbackBranch: "master"
          ignoredBranches: ${{ vars.IGNORED_MERGE_UP_BRANCHES }}
          enableAutoMerge: true


================================================
FILE: .github/workflows/release.yml
================================================
name: Release
on:
  workflow_dispatch:
    inputs:
      version:
        description: "The new version to set"
        required: true
      prev_version:
        description: "The previous tagged version"
        required: true
      push_changes:
        description: "Push changes?"
        default: true
        type: boolean
permissions:
  contents: read
defaults:
  run:
    shell: bash -eux {0}
env:
  # Changes per branch
  SILK_ASSET_GROUP: mongodb-go-driver
  EVERGREEN_PROJECT: mongo-go-driver
jobs:
  pre-publish:
    environment: release
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: write
    outputs:
      prev_version: ${{ steps.pre-publish.outputs.prev_version }}
    steps:
      - uses: mongodb-labs/drivers-github-tools/secure-checkout@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
        with:
          app_id: ${{ vars.APP_ID }}
          private_key: ${{ secrets.APP_PRIVATE_KEY }}
      - uses: mongodb-labs/drivers-github-tools/setup@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
        with:
          aws_role_arn: ${{ secrets.AWS_ROLE_ARN }}
          aws_region_name: ${{ vars.AWS_REGION_NAME }}
          aws_secret_id: ${{ secrets.AWS_SECRET_ID }}
          artifactory_username: ${{ vars.ARTIFACTORY_USERNAME }}
      - name: Pre Publish
        id: pre-publish
        uses: mongodb-labs/drivers-github-tools/golang/pre-publish@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
        with:
          version: ${{ inputs.version }}
          push_changes: ${{ inputs.push_changes }}
          ignored_branches: ${{ vars.IGNORED_MERGE_UP_BRANCHES }}
  static-scan:
    needs: [pre-publish]
    permissions:
      contents: read
      security-events: write
    uses: ./.github/workflows/codeql.yml
    with:
      ref: ${{ github.ref }}
  publish:
    needs: [pre-publish, static-scan]
    runs-on: ubuntu-latest
    environment: release
    permissions:
      id-token: write
      contents: write
      security-events: read
    steps:
      - uses: mongodb-labs/drivers-github-tools/secure-checkout@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
        with:
          app_id: ${{ vars.APP_ID }}
          private_key: ${{ secrets.APP_PRIVATE_KEY }}
      - uses: mongodb-labs/drivers-github-tools/setup@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
        with:
          aws_role_arn: ${{ secrets.AWS_ROLE_ARN }}
          aws_region_name: ${{ vars.AWS_REGION_NAME }}
          aws_secret_id: ${{ secrets.AWS_SECRET_ID }}
          artifactory_username: ${{ vars.ARTIFACTORY_USERNAME }}
      - name: Publish
        uses: mongodb-labs/drivers-github-tools/golang/publish@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
        with:
          version: ${{ inputs.version }}
          silk_asset_group: ${{ env.SILK_ASSET_GROUP }}
          evergreen_project: ${{ env.EVERGREEN_PROJECT }}
          prev_version: ${{ inputs.prev_version }}
          push_changes: ${{ inputs.push_changes }}
          token: ${{ env.GH_TOKEN }}


================================================
FILE: .github/workflows/scorecard.yml
================================================
# This workflow uses actions that are not certified by GitHub. They are provided
# by a third-party and are governed by separate terms of service, privacy
# policy, and support documentation.

name: Scorecard supply-chain security
on:
  # For Branch-Protection check. Only the default branch is supported. See
  # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
  branch_protection_rule:
  # To guarantee Maintained check is occasionally updated. See
  # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
  schedule:
    - cron: "24 21 * * 1"
  push:
    branches: ["master"]
# Declare default permissions as read only.
permissions: read-all
jobs:
  analysis:
    name: Scorecard analysis
    runs-on: ubuntu-latest
    # `publish_results: true` only works when run from the default branch. conditional can be removed if disabled.
    if: github.event.repository.default_branch == github.ref_name || github.event_name == 'pull_request'
    permissions:
      # Needed to upload the results to code-scanning dashboard.
      security-events: write
      # Needed to publish results and get a badge (see publish_results below).
      id-token: write
      # Uncomment the permissions below if installing in a private repository.
      # contents: read
      # actions: read
    steps:
      - name: "Checkout code"
        uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
        with:
          persist-credentials: false
      - name: "Run analysis"
        uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3
        with:
          results_file: results.sarif
          results_format: sarif
          # (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
          # - you want to enable the Branch-Protection check on a *public* repository, or
          # - you are installing Scorecard on a *private* repository
          # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action?tab=readme-ov-file#authentication-with-fine-grained-pat-optional.
          # repo_token: ${{ secrets.SCORECARD_TOKEN }}

          # Public repositories:
          #   - Publish results to OpenSSF REST API for easy access by consumers
          #   - Allows the repository to include the Scorecard badge.
          #   - See https://github.com/ossf/scorecard-action#publishing-results.
          # For private repositories:
          #   - `publish_results` will always be set to `false`, regardless
          #     of the value entered here.
          publish_results: true
          # (Optional) Uncomment file_mode if you have a .gitattributes with files marked export-ignore
          # file_mode: git
      # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
      # format to the repository Actions tab.
      - name: "Upload artifact"
        uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
        with:
          name: SARIF file
          path: results.sarif
          retention-days: 5
      # Upload the results to GitHub's code scanning dashboard (optional).
      # Commenting out will disable upload of results to your repo's Code Scanning dashboard
      - name: "Upload to code-scanning"
        uses: github/codeql-action/upload-sarif@v4.33.0 #immutable
        with:
          sarif_file: results.sarif


================================================
FILE: .github/workflows/test.yml
================================================
name: GoDriver Tests
on:
  push:
  pull_request:
permissions:
  contents: read
concurrency:
  group: test-${{ github.ref }}
  cancel-in-progress: true
defaults:
  run:
    shell: bash -eux {0}
jobs:
  pre_commit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
      - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 #v6.2.0
      - uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 #v6.3.0
        with:
          go-version: 'stable'
      - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd #v3.0.1


================================================
FILE: .gitignore
================================================
.vscode
debug
.idea
*.iml
*.ipr
*.iws
.idea
*.sublime-project
*.sublime-workspace
driver-test-data.tar.gz
perf
perf.json
perf.suite
**mongocryptd.pid
*.test
.DS_Store
install
main.so
.cache
install
libmongocrypt
venv
test.suite
go.work.sum
.task
env.sh
expansion.yml
bin

# AWS SAM-generated files
internal/cmd/faas/awslambda/.aws-sam
internal/cmd/faas/awslambda/events/event.json

# Ignore api report files
api-report.md
api-report.txt

# Ignore perf report files
perf-report.md
perf-report.txt

# Ignore secrets files
secrets-expansion.yml
secrets-export.sh
.test.env


================================================
FILE: .gitmodules
================================================
[submodule "specifications"]
	path = testdata/specifications
	url = https://github.com/mongodb/specifications


================================================
FILE: .golangci.yml
================================================
version: "2"
linters:
  default: none
  enable:
    - errcheck
    - gocritic
    # TODO(GODRIVER-3712): Enable gosec in golangci-lint version 2.8.0
    #- gosec
    - govet
    - ineffassign
    - makezero
    - misspell
    - nakedret
    - paralleltest
    - prealloc
    - revive
    - staticcheck
    - unconvert
    - unparam
    - unused
  settings:
    errcheck:
      exclude-functions:
        - .errcheck-excludes
    govet:
      disable:
        - cgocall
        - composites
    paralleltest:
      # Ignore missing calls to `t.Parallel()` and only report incorrect uses of
      # `t.Parallel()`.
      ignore-missing: true
    staticcheck:
      checks:
        - all
        # Disable deprecation warnings for now.
        - -SA1012
        # Disable "do not pass a nil Context" to allow testing nil contexts in
        # tests.
        - -SA1019
  exclusions:
    generated: lax
    rules:
      # Ignore some linters for example code that is intentionally simplified.
      - linters:
          - errcheck
          - revive
        path: examples/
      # Disable "unused" linter for code files that depend on the
      # "mongocrypt.MongoCrypt" type because the linter build doesn't work
      # correctly with CGO enabled. As a result, all calls to a
      # "mongocrypt.MongoCrypt" API appear to always panic (see
      # mongocrypt_not_enabled.go), leading to confusing messages about unused
      # code.
      - linters:
          - unused
        path: x/mongo/driver/crypt.go|mongo/(crypt_retrievers|mongocryptd).go
      # Ignore "TLS MinVersion too low", "TLS InsecureSkipVerify set true", and
      # "Use of weak random number generator (math/rand instead of crypto/rand)"
      # in tests. Disable gosec entirely for test files to reduce noise.
      - linters:
          - gosec
        path: _test\.go
      # Ignore prealloc warnings for test files.
      - linters:
          - prealloc
        path: _test\.go
      # Ignore missing comments for exported variable/function/type for code in
      # the "internal" and "benchmark" directories.
      - path: (internal\/|benchmark\/)
        text: exported (.+) should have comment( \(or a comment on this block\))? or be unexported
      # Ignore missing package comments for directories that aren't frequently
      # used by external users.
      - path: (internal\/|benchmark\/|x\/|cmd\/|mongo\/integration\/)
        text: should have a package comment
      # Add all default excluded issues except issues related to exported
      # types/functions not having comments; we want those warnings. The
      # defaults are copied from the "--exclude-use-default" documentation on
      # https://golangci-lint.run/usage/configuration/#command-line-options
      #
      ## Defaults ##
      #
      # EXC0001 errcheck: Almost all programs ignore errors on these functions
      # and in most cases it's ok
      - path: (.+)\.go$
        text: Error return value of .((os\.)?std(out|err)\..*|.*Close|.*Flush|os\.Remove(All)?|.*print(f|ln)?|os\.(Un)?Setenv). is not checked
      # EXC0003 golint: False positive when tests are defined in package 'test'
      - path: (.+)\.go$
        text: func name will be used as test\.Test.* by other packages, and that stutters; consider calling this
      # EXC0004 govet: Common false positives
      - path: (.+)\.go$
        text: (possible misuse of unsafe.Pointer|should have signature)
      # EXC0005 staticcheck: Developers tend to write in C-style with an explicit 'break' in a 'switch', so it's ok to ignore
      - path: (.+)\.go$
        text: ineffective break statement. Did you mean to break out of the outer loop
      # EXC0006 gosec: Too many false-positives on 'unsafe' usage
      - path: (.+)\.go$
        text: Use of unsafe calls should be audited
      # EXC0007 gosec: Too many false-positives for parametrized shell calls
      - path: (.+)\.go$
        text: Subprocess launch(ed with variable|ing should be audited)
      # EXC0008 gosec: Duplicated errcheck checks
      - path: (.+)\.go$
        text: (G104|G307)
      # EXC0009 gosec: Too many issues in popular repos
      - path: (.+)\.go$
        text: (Expect directory permissions to be 0750 or less|Expect file permissions to be 0600 or less)
      # EXC0010 gosec: False positive is triggered by
      # 'src, err := ioutil.ReadFile(filename)'
      - path: (.+)\.go$
        text: Potential file inclusion via variable
      ## End Defaults ##
      # Ignore capitalization warning for this weird field name.
      - path: (.+)\.go$
        text: "var-naming: struct field CqCssWxW should be CqCSSWxW"
      # Ignore warnings for common "wiremessage.Read..." usage because the
      # safest way to use that API is by assigning possibly unused returned byte
      # buffers.
      - path: (.+)\.go$
        text: "SA4006: this value of `wm` is never used"
      - path: (.+)\.go$
        text: "SA4006: this value of `rem` is never used"
      - path: (.+)\.go$
        text: ineffectual assignment to wm
      - path: (.+)\.go$
        text: ineffectual assignment to rem
    paths:
      - (^|/)testdata($|/)
      - (^|/)etc($|/)
      # Disable all linters for copied third-party code.
      - internal/rand
      - internal/aws
      - internal/assert
formatters:
  enable:
    - goimports
  exclusions:
    generated: lax
    paths:
      - (^|/)testdata($|/)
      - (^|/)etc($|/)
      - internal/rand
      - internal/aws
      - internal/assert


================================================
FILE: .pre-commit-config.yaml
================================================
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v6.0.0
    hooks:
      - id: check-case-conflict
      - id: check-executables-have-shebangs
      - id: check-added-large-files
      - id: check-case-conflict
      - id: check-merge-conflict
      - id: check-json
      - id: end-of-file-fixer
        exclude: ^(vendor/|bson/testdata/lorem.txt)
        exclude_types: [json, yaml]
      - id: trailing-whitespace
        exclude: ^(vendor/|internal/assert/assertions_test.go|bson/testdata/lorem.txt)
        exclude_types: [json, yaml]
  - repo: https://github.com/executablebooks/mdformat
    rev: 0.7.17
    hooks:
      - id: mdformat
        exclude: ^vendor/
  - repo: https://github.com/python-jsonschema/check-jsonschema
    rev: 0.27.0
    hooks:
      - id: check-github-workflows
  # We use the Python version instead of the original version which seems to require Docker
  # https://github.com/koalaman/shellcheck-precommit
  - repo: https://github.com/shellcheck-py/shellcheck-py
    rev: v0.9.0.6
    hooks:
      - id: shellcheck
        name: shellcheck
        args: ["--severity=warning"]
  - repo: https://github.com/codespell-project/codespell
    rev: "v2.2.6"
    hooks:
      - id: codespell
        args: ["-L", "te,fo,fle,alo,nin,compres,wil,collone,asess,sav,ot,wll,dne,nulll,hellow,aks"]
        exclude: ^(vendor/|internal/cmd/benchmark/operation_test.go|bson/testdata/)
        exclude_types: [json, yaml, pem]
  - repo: https://github.com/tcort/markdown-link-check
    rev: v3.11.2
    hooks:
      - id: markdown-link-check
        exclude: ^(vendor)
        # If the endpoint returns HTTP 429 (Too Many Requests), consider it a
        # successful check.
        args: ["-a 200,206,429"]
  - repo: local
    hooks:
      - id: executable-shell
        name: executable-shell
        entry: chmod +x
        language: system
        types: [shell]
      - id: gofumpt
        name: gofumpt
        entry: gofumpt -w
        language: golang
        types: [go]
        exclude: ^vendor/
        additional_dependencies: [mvdan.cc/gofumpt@v0.9.2]
      - id: golangci-lint
        name: golangci-lint
        language: system
        types: [go]
        require_serial: true
        pass_filenames: false
        entry: etc/golangci-lint.sh
      - id: check-licenses
        name: check-licenses
        language: system
        types: [go]
        entry: etc/check_license.sh
  - repo: https://github.com/google/yamlfmt
    rev: v0.10.0
    hooks:
      - id: yamlfmt


================================================
FILE: Dockerfile
================================================
# Dockerfile for Go Driver local development.
# sha found via this command: docker inspect --format='{{index .RepoDigests 0}}' golang:1.25.6-trixie
FROM golang:1.25.6-trixie@sha256:fb4b74a39c7318d53539ebda43ccd3ecba6e447a78591889c0efc0a7235ea8b3 AS base

# Build libmongocrypt in a separate build stage.
FROM base AS libmongocrypt

RUN apt-get -qq update && \
  apt-get -qqy install --no-install-recommends \
  git \
  ca-certificates \
  curl \
  build-essential \
  libssl-dev \
  pkg-config \
  python3 \
  python3-packaging \
  python-is-python3 && \
  rm -rf /var/lib/apt/lists/*

COPY etc/install-libmongocrypt.sh /root/install-libmongocrypt.sh
RUN cd /root && bash ./install-libmongocrypt.sh


# Final dev image (already has Go 1.25.x).
FROM base

RUN export DEBIAN_FRONTEND=noninteractive && \
  export TZ=Etc/UTC && \
  apt-get -qq update && \
  apt-get -qqy install --reinstall --no-install-recommends \
  git \
  ca-certificates \
  curl \
  wget \
  tzdata \
  pkg-config \
  gpg \
  apt-utils \
  libc6-dev \
  gcc \
  make \
  libkrb5-dev && \
  update-ca-certificates && \
  rm -rf /var/lib/apt/lists/*

# Install taskfile
RUN go install github.com/go-task/task/v3/cmd/task@v3.39.2

COPY etc/docker_entry.sh /root/docker_entry.sh
COPY --from=libmongocrypt /root/install /root/install

# Copy the Go driver source for local development and compile checks.
COPY . /mongo-go-driver

ENV DOCKER_RUNNING=true
ENTRYPOINT ["/bin/bash", "/root/docker_entry.sh"]


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: README.md
================================================
<p align="center"><img src="etc/assets/mongo-gopher.png" width="250"></p>
<p align="center">
  <a href="https://goreportcard.com/report/go.mongodb.org/mongo-driver/v2"><img src="https://goreportcard.com/badge/go.mongodb.org/mongo-driver/v2"></a>
  <a href="https://pkg.go.dev/go.mongodb.org/mongo-driver/v2/mongo"><img src="etc/assets/godev-mongo-blue.svg" alt="docs"></a>
  <a href="https://pkg.go.dev/go.mongodb.org/mongo-driver/v2/bson"><img src="etc/assets/godev-bson-blue.svg" alt="docs"></a>
  <a href="https://www.mongodb.com/docs/drivers/go/current/"><img src="etc/assets/docs-mongodb-green.svg"></a>
  <a href="https://securityscorecards.dev/viewer/?uri=github.com/mongodb/mongo-go-driver">
    <img src="https://api.securityscorecards.dev/projects/github.com/mongodb/mongo-go-driver/badge" alt="OpenSSF Scorecard" />
  </a>
</p>

# MongoDB Go Driver

The MongoDB supported driver for Go.

See the following resources to learn more about upgrading from version 1.x to 2.0.:

- [v2.0 Migration Guide](docs/migration-2.0.md)
- [v2.0 What's New](https://www.mongodb.com/docs/drivers/go/upcoming/whats-new/#what-s-new-in-2.0)

The MongoDB Go driver follows [semantic versioning](https://semver.org/) for its releases.

## Requirements

- Go 1.19 or higher. We aim to support the latest versions of Go.
- Go 1.25 or higher is required to run the driver test suite.
- MongoDB 4.2 and higher.

## Installation

The recommended way to get started using the MongoDB Go driver is by using Go modules to install the dependency in
your project. This can be done either by importing packages from `go.mongodb.org/mongo-driver` and having the build
step install the dependency or by explicitly running

```bash
go get go.mongodb.org/mongo-driver/v2/mongo
```

When using a version of Go that does not support modules, the driver can be installed using `dep` by running

```bash
dep ensure -add "go.mongodb.org/mongo-driver/v2/mongo"
```

## Usage

To get started with the driver, import the `mongo` package and create a `mongo.Client` with the `Connect` function:

```go
import (
    "context"
    "time"

    "go.mongodb.org/mongo-driver/v2/mongo"
    "go.mongodb.org/mongo-driver/v2/mongo/options"
    "go.mongodb.org/mongo-driver/v2/mongo/readpref"
)

client, _ := mongo.Connect(options.Client().ApplyURI("mongodb://localhost:27017"))
```

Make sure to defer a call to `Disconnect` after instantiating your client:

```go
defer func() {
    if err := client.Disconnect(ctx); err != nil {
        panic(err)
    }
}()
```

For more advanced configuration and authentication, see the [documentation for mongo.Connect](https://pkg.go.dev/go.mongodb.org/mongo-driver/v2/mongo#Connect).

Calling `Connect` does not block for server discovery. If you wish to know if a MongoDB server has been found and connected to,
use the `Ping` method:

```go
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()

_ = client.Ping(ctx, readpref.Primary())
```

To insert a document into a collection, first retrieve a `Database` and then `Collection` instance from the `Client`:

```go
collection := client.Database("testing").Collection("numbers")
```

The `Collection` instance can then be used to insert documents:

```go
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

res, _ := collection.InsertOne(ctx, bson.D{{"name", "pi"}, {"value", 3.14159}})
id := res.InsertedID
```

To use `bson.D`, you will need to add `"go.mongodb.org/mongo-driver/v2/bson"` to your imports.

Your import statement should now look like this:

```go
import (
    "context"
    "log"
    "time"

    "go.mongodb.org/mongo-driver/v2/bson"
    "go.mongodb.org/mongo-driver/v2/mongo"
    "go.mongodb.org/mongo-driver/v2/mongo/options"
    "go.mongodb.org/mongo-driver/v2/mongo/readpref"
)
```

Several query methods return a cursor, which can be used like this:

```go
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()

cur, err := collection.Find(ctx, bson.D{})
if err != nil {
  log.Fatal(err)
}

defer cur.Close(ctx)
for cur.Next(ctx) {
    var result bson.D
    if err := cur.Decode(&result); err != nil {
      log.Fatal(err)
    }

    // do something with result....
}

if err := cur.Err(); err != nil {
    log.Fatal(err)
}
```

For methods that return a single item, a `SingleResult` instance is returned:

```go
var result struct {
    Value float64
}

filter := bson.D{{"name", "pi"}}
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

err := collection.FindOne(ctx, filter).Decode(&result)
if errors.Is(err, mongo.ErrNoDocuments) {
    // Do something when no record was found
} else if err != nil {
    log.Fatal(err)
}

// Do something with result...
```

Additional examples and documentation can be found under the examples directory and [on the MongoDB Documentation website](https://www.mongodb.com/docs/drivers/go/current/).

### Network Compression

Network compression will reduce bandwidth requirements between MongoDB and the application.

The Go Driver supports the following compression algorithms:

1. [Snappy](https://google.github.io/snappy/) (`snappy`): available in MongoDB 3.4 and later.
1. [Zlib](https://zlib.net/) (`zlib`): available in MongoDB 3.6 and later.
1. [Zstandard](https://github.com/facebook/zstd/) (`zstd`): available in MongoDB 4.2 and later.

#### Specify Compression Algorithms

Compression can be enabled using the `compressors` parameter on the connection string or by using [`ClientOptions.SetCompressors`](https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo/options#ClientOptions.SetCompressors):

```go
opts := options.Client().ApplyURI("mongodb://localhost:27017/?compressors=snappy,zlib,zstd")
client, _ := mongo.Connect(opts)
```

```go
opts := options.Client().SetCompressors([]string{"snappy", "zlib", "zstd"})
client, _ := mongo.Connect(opts)
```

If compressors are set, the Go Driver negotiates with the server to select the first common compressor. For server configuration and defaults, refer to [`networkMessageCompressors`](https://www.mongodb.com/docs/manual/reference/program/mongod/#std-option-mongod.--networkMessageCompressors).

Messages compress when both parties enable network compression; otherwise, messages remain uncompressed

## Support / Feedback

For issues with, questions about, or feedback for the Go Driver, please look into our [support channels](https://www.mongodb.com/docs/manual/support/), including [StackOverflow](https://stackoverflow.com/questions/tagged/mongodb%20go?sort=Newest).

New features and bugs can be reported on the [GODRIVER Jira project](https://jira.mongodb.org/browse/GODRIVER).

## Contribution

Check out the [GODRIVER Jira project](https://jira.mongodb.org/browse/GODRIVER) for tickets that need completing. See our [contribution guidelines](docs/CONTRIBUTING.md) for details.

## Continuous Integration

Commits to master are run automatically on [evergreen](https://evergreen.mongodb.com/waterfall/mongo-go-driver).

## Frequently Encountered Issues

See our [common issues](docs/common-issues.md) documentation for troubleshooting frequently encountered issues.

## Thanks and Acknowledgement

- The Go Gopher artwork by [@ashleymcnamara](https://github.com/ashleymcnamara)
- The original Go Gopher was designed by [Renee French](http://reneefrench.blogspot.com/)

## License

The MongoDB Go Driver is licensed under the [Apache License](LICENSE).


================================================
FILE: THIRD-PARTY-NOTICES
================================================
----------------------------------------------------------------------
License notice for AWS V4 signing code from github.com/aws/aws-sdk-go
AWS SDK for Go
Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Copyright 2014-2015 Stripe, Inc.
----------------------------------------------------------------------


                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

---------------------------------------------------------------------
License notice for gopkg.in/mgo.v2/bson
---------------------------------------------------------------------

BSON library for Go

Copyright (c) 2010-2013 - Gustavo Niemeyer <gustavo@niemeyer.net>

All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

---------------------------------------------------------------------
License notice for JSON and CSV code from github.com/golang/go
---------------------------------------------------------------------

Copyright (c) 2009 The Go Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

   * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
   * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

---------------------------------------------------------------------
License notice for rand code from golang.org/x/exp
---------------------------------------------------------------------

Copyright (c) 2009 The Go Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

   * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
   * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

---------------------------------------------------------------------
License notice for Add64 and Mul64 code from github.com/golang/go
---------------------------------------------------------------------

Copyright (c) 2009 The Go Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

   * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
   * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----------------------------------------------------------------------
License notice for github.com/davecgh/go-spew
----------------------------------------------------------------------

ISC License

Copyright (c) 2012-2016 Dave Collins <dave@davec.name>

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

----------------------------------------------------------------------
License notice for github.com/google/go-cmp
----------------------------------------------------------------------

Copyright (c) 2017 The Go Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

   * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
   * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----------------------------------------------------------------------
License notice for github.com/klauspost/compress
----------------------------------------------------------------------

Copyright (c) 2012 The Go Authors. All rights reserved.
Copyright (c) 2019 Klaus Post. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

   * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
   * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----------------------------------------------------------------------
License notice for github.com/klauspost/compress/snappy
----------------------------------------------------------------------

Copyright (c) 2011 The Snappy-Go Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

   * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
   * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----------------------------------------------------------------------
License notice for github.com/konsorten/go-windows-terminal-sequences
----------------------------------------------------------------------

(The MIT License)

Copyright (c) 2017 marvin + konsorten GmbH (open-source@konsorten.de)

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.

----------------------------------------------------------------------
License notice for github.com/markbates/oncer
----------------------------------------------------------------------

The MIT License (MIT)

Copyright (c) 2018 Mark Bates

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.

----------------------------------------------------------------------
License notice for github.com/markbates/safe
----------------------------------------------------------------------

The MIT License (MIT)

Copyright (c) 2018 Mark Bates

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.

----------------------------------------------------------------------
License notice for github.com/montanaflynn/stats
----------------------------------------------------------------------

The MIT License (MIT)

Copyright (c) 2014-2015 Montana Flynn (https://anonfunction.com)

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.

----------------------------------------------------------------------
License notice for github.com/pkg/errors
----------------------------------------------------------------------

Copyright (c) 2015, Dave Cheney <dave@cheney.net>
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
  list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice,
  this list of conditions and the following disclaimer in the documentation
  and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----------------------------------------------------------------------
License notice for github.com/pmezard/go-difflib
----------------------------------------------------------------------

Copyright (c) 2013, Patrick Mezard
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

    Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
    Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
    The names of its contributors may not be used to endorse or promote
products derived from this software without specific prior written
permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----------------------------------------------------------------------
License notice for github.com/rogpeppe/go-internal
----------------------------------------------------------------------

Copyright (c) 2018 The Go Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

   * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
   * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----------------------------------------------------------------------
License notice for github.com/stretchr/testify
----------------------------------------------------------------------

MIT License

Copyright (c) 2012-2020 Mat Ryer, Tyler Bunnell 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.

----------------------------------------------------------------------
License notice for github.com/xdg-go/pbkdf2
----------------------------------------------------------------------


                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

----------------------------------------------------------------------
License notice for github.com/xdg-go/scram
----------------------------------------------------------------------


                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

----------------------------------------------------------------------
License notice for github.com/xdg-go/stringprep
----------------------------------------------------------------------


                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

----------------------------------------------------------------------
License notice for github.com/youmark/pkcs8
----------------------------------------------------------------------

The MIT License (MIT)

Copyright (c) 2014 youmark

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.
----------------------------------------------------------------------
License notice for golang.org/x/crypto
----------------------------------------------------------------------

Copyright (c) 2009 The Go Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

   * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
   * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----------------------------------------------------------------------
License notice for golang.org/x/sync
----------------------------------------------------------------------

Copyright (c) 2009 The Go Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

   * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
   * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----------------------------------------------------------------------
License notice for golang.org/x/sys
----------------------------------------------------------------------

Copyright (c) 2009 The Go Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

   * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
   * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----------------------------------------------------------------------
License notice for golang.org/x/text
----------------------------------------------------------------------

Copyright (c) 2009 The Go Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

   * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
   * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----------------------------------------------------------------------
License notice for golang.org/x/tools
----------------------------------------------------------------------

Copyright (c) 2009 The Go Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

   * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
   * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----------------------------------------------------------------------
License notice for golang.org/x/xerrors
----------------------------------------------------------------------

Copyright (c) 2019 The Go Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

   * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
   * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

----------------------------------------------------------------------
License notice for gopkg.in/yaml.v3
----------------------------------------------------------------------


This project is covered by two different licenses: MIT and Apache.

#### MIT License ####

The following files were ported to Go from C files of libyaml, and thus
are still covered by their original MIT license, with the additional
copyright staring in 2011 when the project was ported over:

    apic.go emitterc.go parserc.go readerc.go scannerc.go
    writerc.go yamlh.go yamlprivateh.go

Copyright (c) 2006-2010 Kirill Simonov
Copyright (c) 2006-2011 Kirill Simonov

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.

### Apache License ###

All the remaining project files are covered by the Apache license:

Copyright (c) 2011-2019 Canonical Ltd

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.


================================================
FILE: Taskfile.yml
================================================
# See https://taskfile.dev/usage/
version: "3"
env:
  TEST_TIMEOUT: 1800
  LONG_TEST_TIMEOUT: 3600
dotenv: [".test.env"]
tasks:
  ### Utility tasks. ###
  default:
    deps: [build, check-license, check-fmt, check-modules, lint, test-short]
  add-license: bash etc/check_license.sh -a
  check-license: bash etc/check_license.sh
  init-submodule: git submodule update --init
  build:
    deps: [install-libmongocrypt]
    cmds:
      - go build ./...
      - go build ${BUILD_TAGS} ./...
      - task: build-tests
      - task: compilecheck-119
  build-tests: go test -short ${BUILD_TAGS} -run ^$$ ./...
  compilecheck-119:
    dir: internal/test/compilecheck
    cmds:
      - go mod download
      - GOTOOLCHAIN=auto go test -v -run '^TestCompileCheck/go:1\.19$'
  build-compile-check-all: bash etc/run-compile-check-test.sh
  build-aws-ecs-test: go test -c ./internal/test/aws -o aws.testbin
  check-fmt:
    deps: [install-lll, install-gofumpt]
    cmds:
      - bash etc/check_fmt.sh
  check-modules: bash etc/check_modules.sh
  doc: godoc -http=:6060 -index
  fmt:
    deps: [install-gofumpt]
    cmds:
      - gofumpt -w .
  api-report: bash etc/api_report.sh
  install-libmongocrypt:
    cmds: [bash etc/install-libmongocrypt.sh]
    status:
      - test -d install || test -d /cygdrive/c/libmongocrypt/bin
  run-docker: bash etc/run_docker.sh
  run-fuzz: bash etc/run-fuzz.sh
  cherry-picker: bash etc/cherry-picker.sh
  pr-task: bash etc/pr-task.sh
  perf-pr-comment: bash etc/perf-pr-comment.sh
  # Lint with various GOO
Download .txt
gitextract_b5ez4ucg/

├── .errcheck-excludes
├── .evergreen/
│   ├── config.yml
│   ├── krb5.config
│   ├── ocsp-requirements.txt
│   ├── run-mongodb-aws-ecs-test.sh
│   ├── run-task.sh
│   └── setup-system.sh
├── .github/
│   ├── dependabot.yml
│   ├── labeler.yml
│   ├── release.yml
│   └── workflows/
│       ├── check-labels.yml
│       ├── codeql.yml
│       ├── create-release-branch.yml
│       ├── labeler.yml
│       ├── merge-up.yml
│       ├── release.yml
│       ├── scorecard.yml
│       └── test.yml
├── .gitignore
├── .gitmodules
├── .golangci.yml
├── .pre-commit-config.yaml
├── Dockerfile
├── LICENSE
├── README.md
├── THIRD-PARTY-NOTICES
├── Taskfile.yml
├── bson/
│   ├── array_codec.go
│   ├── benchmark_test.go
│   ├── bson_binary_vector_spec_test.go
│   ├── bson_corpus_spec_test.go
│   ├── bson_test.go
│   ├── bsoncodec.go
│   ├── bsoncodec_test.go
│   ├── bsonrw_test.go
│   ├── buffered_byte_src.go
│   ├── buffered_byte_src_test.go
│   ├── byte_slice_codec.go
│   ├── codec_cache.go
│   ├── codec_cache_test.go
│   ├── cond_addr_codec.go
│   ├── cond_addr_codec_test.go
│   ├── copier.go
│   ├── copier_test.go
│   ├── decimal.go
│   ├── decimal_test.go
│   ├── decode_value_fuzz_test.go
│   ├── decoder.go
│   ├── decoder_example_test.go
│   ├── decoder_test.go
│   ├── default_value_decoders.go
│   ├── default_value_decoders_test.go
│   ├── default_value_encoders.go
│   ├── default_value_encoders_test.go
│   ├── doc.go
│   ├── empty_interface_codec.go
│   ├── encoder.go
│   ├── encoder_example_test.go
│   ├── encoder_test.go
│   ├── example_test.go
│   ├── extjson_parser.go
│   ├── extjson_parser_test.go
│   ├── extjson_prose_test.go
│   ├── extjson_reader.go
│   ├── extjson_reader_test.go
│   ├── extjson_tables.go
│   ├── extjson_wrappers.go
│   ├── extjson_writer.go
│   ├── extjson_writer_test.go
│   ├── fuzz_test.go
│   ├── json_scanner.go
│   ├── json_scanner_test.go
│   ├── map_codec.go
│   ├── marshal.go
│   ├── marshal_test.go
│   ├── marshal_value_cases_test.go
│   ├── marshal_value_test.go
│   ├── marshaling_cases_test.go
│   ├── mgocompat/
│   │   ├── doc.go
│   │   └── registry.go
│   ├── mgoregistry.go
│   ├── mgoregistry_test.go
│   ├── mode.go
│   ├── objectid.go
│   ├── objectid_test.go
│   ├── pointer_codec.go
│   ├── primitive.go
│   ├── primitive_codecs.go
│   ├── primitive_codecs_test.go
│   ├── raw.go
│   ├── raw_array.go
│   ├── raw_array_test.go
│   ├── raw_element.go
│   ├── raw_test.go
│   ├── raw_value.go
│   ├── raw_value_test.go
│   ├── reader.go
│   ├── registry.go
│   ├── registry_examples_test.go
│   ├── registry_test.go
│   ├── slice_codec.go
│   ├── streaming_byte_src.go
│   ├── string_codec.go
│   ├── struct_codec.go
│   ├── struct_codec_test.go
│   ├── struct_tag_parser.go
│   ├── struct_tag_parser_test.go
│   ├── testdata/
│   │   ├── fuzz/
│   │   │   └── FuzzDecode/
│   │   │       ├── 002ae7d43f636100116fede772a03d07726ed75c3c3b83da865fe9b718adf8ae
│   │   │       ├── 0de854041b0055ca1e5e6e54a7fb667ed38461db171af267665c21776f9a9ef4
│   │   │       ├── 718592474a0a3626039f3471449b9aa374c746754d4925fcfe4ba747e7101504
│   │   │       ├── 93c43e3c1cf35c19b7618a618d128cea0ce05cef0711fdd91e403fe3b2f45628
│   │   │       └── c3ffbb42eb85b743ede396f00b7706e6ad0529c32689c63ca663dae37d072627
│   │   └── lorem.txt
│   ├── time_codec.go
│   ├── time_codec_test.go
│   ├── truncation_test.go
│   ├── type_test.go
│   ├── types.go
│   ├── uint_codec.go
│   ├── unmarshal.go
│   ├── unmarshal_test.go
│   ├── unmarshal_value_test.go
│   ├── unmarshaling_cases_test.go
│   ├── value_reader.go
│   ├── value_reader_test.go
│   ├── value_reader_writer_test.go
│   ├── value_writer.go
│   ├── value_writer_test.go
│   ├── vector.go
│   └── writer.go
├── docs/
│   ├── CODEOWNERS
│   ├── CONTRIBUTING.md
│   ├── SECURITY.md
│   ├── common-issues.md
│   ├── migration-2.0.md
│   └── pull_request_template.md
├── etc/
│   ├── api_report.sh
│   ├── check_fmt.sh
│   ├── check_license.sh
│   ├── check_modules.sh
│   ├── cherry-picker.sh
│   ├── docker_entry.sh
│   ├── gen-ec-certs/
│   │   ├── client.ext
│   │   ├── empty.cnf
│   │   ├── gen-ec-certs.sh
│   │   └── server.ext
│   ├── generate_notices.pl
│   ├── golangci-lint.sh
│   ├── govulncheck.sh
│   ├── install-libmongocrypt.sh
│   ├── perf-pr-comment.sh
│   ├── pr-task.sh
│   ├── profile-test.sh
│   ├── run-awskms-test.sh
│   ├── run-azurekms-test.sh
│   ├── run-compile-check-test.sh
│   ├── run-fuzz.sh
│   ├── run-gcpkms-test.sh
│   ├── run-goleak-test.sh
│   ├── run-mongodb-aws-ecs-test.sh
│   ├── run-mongodb-aws-test.sh
│   ├── run-oidc-remote-test.sh
│   ├── run-oidc-test.sh
│   ├── run_docker.sh
│   ├── setup-encryption.sh
│   ├── setup-test.sh
│   └── update_spec_tests.sh
├── event/
│   ├── description.go
│   ├── doc.go
│   ├── examples_test.go
│   └── monitoring.go
├── examples/
│   ├── _example_customdns_test.go
│   ├── _example_overload_error_test.go
│   └── _logger/
│       ├── logrus/
│       │   ├── go.mod
│       │   ├── go.sum
│       │   └── main.go
│       ├── zap/
│       │   ├── go.mod
│       │   ├── go.sum
│       │   └── main.go
│       └── zerolog/
│           ├── go.mod
│           ├── go.sum
│           └── main.go
├── go.mod
├── go.sum
├── go.work
├── internal/
│   ├── assert/
│   │   ├── assertbson/
│   │   │   ├── assertbson.go
│   │   │   └── assertbson_test.go
│   │   ├── assertion_compare.go
│   │   ├── assertion_compare_can_convert.go
│   │   ├── assertion_compare_go1.17_test.go
│   │   ├── assertion_compare_legacy.go
│   │   ├── assertion_compare_test.go
│   │   ├── assertion_format.go
│   │   ├── assertion_mongo.go
│   │   ├── assertion_mongo_test.go
│   │   ├── assertions.go
│   │   ├── assertions_test.go
│   │   ├── difflib.go
│   │   └── difflib_test.go
│   ├── aws/
│   │   ├── awserr/
│   │   │   ├── error.go
│   │   │   └── types.go
│   │   ├── credentials/
│   │   │   ├── chain_provider.go
│   │   │   ├── chain_provider_test.go
│   │   │   ├── credentials.go
│   │   │   └── credentials_test.go
│   │   ├── signer/
│   │   │   └── v4/
│   │   │       ├── header_rules.go
│   │   │       ├── request.go
│   │   │       ├── uri_path.go
│   │   │       ├── v4.go
│   │   │       └── v4_test.go
│   │   └── types.go
│   ├── binaryutil/
│   │   ├── binaryutil.go
│   │   ├── binaryutil_test.go
│   │   └── doc.go
│   ├── bsoncoreutil/
│   │   ├── bsoncoreutil.go
│   │   └── bsoncoreutil_test.go
│   ├── bsonutil/
│   │   └── bsonutil.go
│   ├── cmd/
│   │   ├── benchmark/
│   │   │   ├── benchmark_test.go
│   │   │   ├── go.mod
│   │   │   └── go.sum
│   │   ├── build-oss-fuzz-corpus/
│   │   │   └── main.go
│   │   ├── faas/
│   │   │   └── awslambda/
│   │   │       ├── Makefile
│   │   │       ├── mongodb/
│   │   │       │   ├── bootstrap.go
│   │   │       │   ├── go.mod
│   │   │       │   └── go.sum
│   │   │       └── template.yaml
│   │   ├── parse-api-report/
│   │   │   └── main.go
│   │   ├── testatlas/
│   │   │   └── atlas_test.go
│   │   ├── testentauth/
│   │   │   └── main.go
│   │   └── testkms/
│   │       └── main.go
│   ├── codecutil/
│   │   ├── encoding.go
│   │   └── encoding_test.go
│   ├── credproviders/
│   │   ├── assume_role_provider.go
│   │   ├── ec2_provider.go
│   │   ├── ecs_provider.go
│   │   ├── env_provider.go
│   │   ├── imds_provider.go
│   │   └── static_provider.go
│   ├── csfle/
│   │   └── csfle.go
│   ├── csot/
│   │   ├── csot.go
│   │   └── csot_test.go
│   ├── decimal128/
│   │   └── decimal128.go
│   ├── docexamples/
│   │   ├── README
│   │   ├── examples.go
│   │   └── examples_test.go
│   ├── driverutil/
│   │   ├── description.go
│   │   ├── hello.go
│   │   ├── operation.go
│   │   └── operation_test.go
│   ├── errutil/
│   │   ├── join.go
│   │   ├── join_go1.19.go
│   │   ├── join_go1.20.go
│   │   └── join_test.go
│   ├── eventtest/
│   │   └── eventtest.go
│   ├── failpoint/
│   │   └── failpoint.go
│   ├── handshake/
│   │   └── handshake.go
│   ├── httputil/
│   │   ├── httputil.go
│   │   └── httputil_test.go
│   ├── integration/
│   │   ├── causal_consistency_test.go
│   │   ├── change_stream_test.go
│   │   ├── clam_prose_test.go
│   │   ├── client_options_test.go
│   │   ├── client_side_encryption_prose_test.go
│   │   ├── client_side_encryption_spec_test.go
│   │   ├── client_side_encryption_test.go
│   │   ├── client_test.go
│   │   ├── cmd_monitoring_helpers_test.go
│   │   ├── collection_test.go
│   │   ├── crud_helpers_test.go
│   │   ├── crud_prose_test.go
│   │   ├── csot_cse_prose_test.go
│   │   ├── csot_prose_test.go
│   │   ├── csot_test.go
│   │   ├── cursor_test.go
│   │   ├── database_test.go
│   │   ├── errors_test.go
│   │   ├── gridfs_test.go
│   │   ├── handshake_test.go
│   │   ├── index_view_test.go
│   │   ├── initial_dns_seedlist_discovery_test.go
│   │   ├── json_helpers_test.go
│   │   ├── load_balancer_prose_test.go
│   │   ├── log_helpers_test.go
│   │   ├── main.go
│   │   ├── main_test.go
│   │   ├── mock_find_test.go
│   │   ├── mongointernal_test.go
│   │   ├── mongos_pinning_test.go
│   │   ├── mtest/
│   │   │   ├── csfle_enabled.go
│   │   │   ├── csfle_not_enabled.go
│   │   │   ├── deployment_helpers.go
│   │   │   ├── doc.go
│   │   │   ├── global_state.go
│   │   │   ├── mongotest.go
│   │   │   ├── options.go
│   │   │   ├── proxy_capture.go
│   │   │   ├── proxy_dialer.go
│   │   │   ├── received_message.go
│   │   │   ├── sent_message.go
│   │   │   ├── setup.go
│   │   │   ├── setup_options.go
│   │   │   └── wiremessage_helpers.go
│   │   ├── primary_stepdown_test.go
│   │   ├── retryable_reads_prose_test.go
│   │   ├── retryable_writes_prose_test.go
│   │   ├── sdam_error_handling_test.go
│   │   ├── sdam_prose_test.go
│   │   ├── search_index_prose_test.go
│   │   ├── server_selection_prose_test.go
│   │   ├── sessions_mongocryptd_prose_test.go
│   │   ├── sessions_test.go
│   │   ├── unified/
│   │   │   ├── admin_helpers.go
│   │   │   ├── bsonutil.go
│   │   │   ├── bucket_options.go
│   │   │   ├── bulkwrite_helpers.go
│   │   │   ├── client_encryption_operation_execution.go
│   │   │   ├── client_entity.go
│   │   │   ├── client_operation_execution.go
│   │   │   ├── collection_data.go
│   │   │   ├── collection_operation_execution.go
│   │   │   ├── common_options.go
│   │   │   ├── context.go
│   │   │   ├── crud_helpers.go
│   │   │   ├── cursor_entity.go
│   │   │   ├── cursor_operation_execution.go
│   │   │   ├── database_operation_execution.go
│   │   │   ├── db_collection_options.go
│   │   │   ├── entity.go
│   │   │   ├── entity_test.go
│   │   │   ├── error.go
│   │   │   ├── event.go
│   │   │   ├── event_verification.go
│   │   │   ├── gridfs_bucket_operation_execution.go
│   │   │   ├── logger.go
│   │   │   ├── logger_verification.go
│   │   │   ├── main_test.go
│   │   │   ├── matches.go
│   │   │   ├── matches_test.go
│   │   │   ├── operation.go
│   │   │   ├── options.go
│   │   │   ├── result.go
│   │   │   ├── schema_version.go
│   │   │   ├── server_api_options.go
│   │   │   ├── session_operation_execution.go
│   │   │   ├── session_options.go
│   │   │   ├── testrunner_operation.go
│   │   │   ├── unified_spec_runner.go
│   │   │   └── unified_spec_test.go
│   │   ├── unified_runner_events_helper_test.go
│   │   ├── unified_runner_thread_helpers_test.go
│   │   └── unified_spec_test.go
│   ├── integtest/
│   │   └── integtest.go
│   ├── israce/
│   │   ├── norace.go
│   │   └── race.go
│   ├── logger/
│   │   ├── component.go
│   │   ├── component_test.go
│   │   ├── context.go
│   │   ├── context_test.go
│   │   ├── io_sink.go
│   │   ├── level.go
│   │   ├── logger.go
│   │   └── logger_test.go
│   ├── mongoutil/
│   │   ├── mongoutil.go
│   │   └── mongoutil_test.go
│   ├── optionsutil/
│   │   └── options.go
│   ├── ptrutil/
│   │   ├── int64.go
│   │   ├── int64_test.go
│   │   └── ptr.go
│   ├── rand/
│   │   ├── arith128_test.go
│   │   ├── bits.go
│   │   ├── example_test.go
│   │   ├── exp.go
│   │   ├── modulo_test.go
│   │   ├── normal.go
│   │   ├── race_test.go
│   │   ├── rand.go
│   │   ├── rand_test.go
│   │   ├── regress_test.go
│   │   └── rng.go
│   ├── randutil/
│   │   ├── randutil.go
│   │   └── randutil_test.go
│   ├── require/
│   │   └── require.go
│   ├── serverselector/
│   │   ├── server_selector.go
│   │   └── server_selector_test.go
│   ├── spectest/
│   │   ├── skip.go
│   │   └── spectest.go
│   ├── test/
│   │   ├── aws/
│   │   │   └── aws_test.go
│   │   ├── compilecheck/
│   │   │   ├── compile_check_test.go
│   │   │   ├── go.mod
│   │   │   └── go.sum
│   │   ├── goleak/
│   │   │   ├── go.mod
│   │   │   ├── go.sum
│   │   │   └── goleak_test.go
│   │   └── oidcauth/
│   │       └── oidcauth_test.go
│   ├── testutil/
│   │   └── reflect.go
│   └── uuid/
│       ├── uuid.go
│       └── uuid_test.go
├── mongo/
│   ├── address/
│   │   ├── addr.go
│   │   └── addr_test.go
│   ├── background_context.go
│   ├── background_context_test.go
│   ├── batch_cursor.go
│   ├── bson_helpers_test.go
│   ├── bulk_write.go
│   ├── bulk_write_models.go
│   ├── change_stream.go
│   ├── change_stream_deployment.go
│   ├── change_stream_test.go
│   ├── client.go
│   ├── client_bulk_write.go
│   ├── client_bulk_write_models.go
│   ├── client_bulk_write_test.go
│   ├── client_encryption.go
│   ├── client_encryption_test.go
│   ├── client_examples_test.go
│   ├── client_side_encryption_examples_test.go
│   ├── client_test.go
│   ├── collection.go
│   ├── collection_test.go
│   ├── crud_examples_test.go
│   ├── crypt_retrievers.go
│   ├── cursor.go
│   ├── cursor_test.go
│   ├── database.go
│   ├── database_test.go
│   ├── doc.go
│   ├── errors.go
│   ├── errors_test.go
│   ├── gridfs_bucket.go
│   ├── gridfs_bucket_test.go
│   ├── gridfs_download_stream.go
│   ├── gridfs_examples_test.go
│   ├── gridfs_test.go
│   ├── gridfs_upload_stream.go
│   ├── index_view.go
│   ├── insert.go
│   ├── mongo.go
│   ├── mongo_test.go
│   ├── mongocryptd.go
│   ├── mongointernal.go
│   ├── ocsp_test.go
│   ├── options/
│   │   ├── aggregateoptions.go
│   │   ├── autoencryptionoptions.go
│   │   ├── bulkwriteoptions.go
│   │   ├── changestreamoptions.go
│   │   ├── clientbulkwriteoptions.go
│   │   ├── clientencryptionoptions.go
│   │   ├── clientoptions.go
│   │   ├── clientoptions_test.go
│   │   ├── collectionoptions.go
│   │   ├── countoptions.go
│   │   ├── createcollectionoptions.go
│   │   ├── datakeyoptions.go
│   │   ├── dboptions.go
│   │   ├── deleteoptions.go
│   │   ├── distinctoptions.go
│   │   ├── doc.go
│   │   ├── dropcollectionoptions.go
│   │   ├── encryptoptions.go
│   │   ├── estimatedcountoptions.go
│   │   ├── example_test.go
│   │   ├── findoptions.go
│   │   ├── gridfsoptions.go
│   │   ├── indexoptions.go
│   │   ├── insertoptions.go
│   │   ├── listcollectionsoptions.go
│   │   ├── listdatabasesoptions.go
│   │   ├── lister.go
│   │   ├── loggeroptions.go
│   │   ├── mongooptions.go
│   │   ├── replaceoptions.go
│   │   ├── rewrapdatakeyoptions.go
│   │   ├── runcmdoptions.go
│   │   ├── searchindexoptions.go
│   │   ├── serverapioptions.go
│   │   ├── sessionoptions.go
│   │   ├── testdata/
│   │   │   ├── ca-key.pem
│   │   │   ├── ca-with-intermediates-first.pem
│   │   │   ├── ca-with-intermediates-second.pem
│   │   │   ├── ca-with-intermediates-third.pem
│   │   │   ├── ca-with-intermediates.pem
│   │   │   ├── ca.pem
│   │   │   ├── cert.pem
│   │   │   ├── certificate.pem
│   │   │   ├── csr.json
│   │   │   ├── empty-ca.pem
│   │   │   ├── key.pem
│   │   │   ├── malformed-ca.pem
│   │   │   ├── nopass/
│   │   │   │   ├── cert.pem
│   │   │   │   ├── certificate.pem
│   │   │   │   └── key.pem
│   │   │   └── one-pk-multiple-certs.pem
│   │   ├── transactionoptions.go
│   │   └── updateoptions.go
│   ├── read_write_concern_spec_test.go
│   ├── readconcern/
│   │   └── readconcern.go
│   ├── readpref/
│   │   ├── mode.go
│   │   ├── mode_test.go
│   │   ├── options.go
│   │   ├── options_example_test.go
│   │   ├── readpref.go
│   │   └── readpref_test.go
│   ├── results.go
│   ├── search_index_view.go
│   ├── session.go
│   ├── single_result.go
│   ├── single_result_test.go
│   ├── with_transactions_test.go
│   └── writeconcern/
│       ├── writeconcern.go
│       ├── writeconcern_example_test.go
│       └── writeconcern_test.go
├── sbom.json
├── tag/
│   ├── tag.go
│   └── tag_test.go
├── testdata/
│   ├── client-side-encryption-prose/
│   │   ├── change-streams-test.json
│   │   ├── corpus-encrypted.json
│   │   ├── corpus-key-aws.json
│   │   ├── corpus-key-azure.json
│   │   ├── corpus-key-gcp.json
│   │   ├── corpus-key-kmip.json
│   │   ├── corpus-key-local.json
│   │   ├── corpus-schema.json
│   │   ├── corpus.json
│   │   ├── encrypted-fields.json
│   │   ├── encryptedFields-prefix-suffix.json
│   │   ├── external-key.json
│   │   ├── external-schema.json
│   │   ├── key1-document.json
│   │   ├── limits-doc.json
│   │   ├── limits-key.json
│   │   ├── limits-schema.json
│   │   ├── range-encryptedFields-Date.json
│   │   ├── range-encryptedFields-DecimalNoPrecision.json
│   │   ├── range-encryptedFields-DecimalPrecision.json
│   │   ├── range-encryptedFields-DoubleNoPrecision.json
│   │   ├── range-encryptedFields-DoublePrecision.json
│   │   ├── range-encryptedFields-Int.json
│   │   └── range-encryptedFields-Long.json
│   ├── kmip-certs/
│   │   ├── ca-ec.pem
│   │   ├── client-ec.pem
│   │   └── server-ec.pem
│   └── mongocrypt/
│       ├── collection-info.json
│       ├── command-reply.json
│       ├── command.json
│       ├── encrypted-command-reply.json
│       ├── encrypted-command.json
│       ├── encrypted-value.json
│       ├── json-schema.json
│       ├── key-document.json
│       ├── key-filter-keyAltName.json
│       ├── key-filter.json
│       ├── kms-reply.txt
│       ├── list-collections-filter.json
│       ├── local-key-document.json
│       ├── mongocryptd-command-local.json
│       ├── mongocryptd-command-remote.json
│       └── mongocryptd-reply.json
├── version/
│   └── version.go
└── x/
    ├── README.md
    ├── bsonx/
    │   └── bsoncore/
    │       ├── array.go
    │       ├── array_test.go
    │       ├── bson_arraybuilder.go
    │       ├── bson_arraybuilder_test.go
    │       ├── bson_documentbuilder.go
    │       ├── bson_documentbuilder_test.go
    │       ├── bsoncore.go
    │       ├── bsoncore_test.go
    │       ├── doc.go
    │       ├── document.go
    │       ├── document_test.go
    │       ├── element.go
    │       ├── element_test.go
    │       ├── iterator.go
    │       ├── iterator_test.go
    │       ├── tables.go
    │       ├── type.go
    │       ├── value.go
    │       └── value_test.go
    └── mongo/
        └── driver/
            ├── auth/
            │   ├── auth.go
            │   ├── auth_spec_test.go
            │   ├── auth_test.go
            │   ├── aws_conv.go
            │   ├── conversation.go
            │   ├── cred.go
            │   ├── creds/
            │   │   ├── awscreds.go
            │   │   ├── azurecreds.go
            │   │   ├── credscaching_test.go
            │   │   ├── doc.go
            │   │   └── gcpcreds.go
            │   ├── default.go
            │   ├── doc.go
            │   ├── gssapi.go
            │   ├── gssapi_not_enabled.go
            │   ├── gssapi_not_supported.go
            │   ├── gssapi_test.go
            │   ├── internal/
            │   │   └── gssapi/
            │   │       ├── gss.go
            │   │       ├── gss_wrapper.c
            │   │       ├── gss_wrapper.h
            │   │       ├── sspi.go
            │   │       ├── sspi_wrapper.c
            │   │       └── sspi_wrapper.h
            │   ├── mongodbaws.go
            │   ├── mongodbaws_test.go
            │   ├── oidc.go
            │   ├── oidc_test.go
            │   ├── plain.go
            │   ├── plain_test.go
            │   ├── sasl.go
            │   ├── scram.go
            │   ├── scram_test.go
            │   ├── speculative_scram_test.go
            │   ├── speculative_x509_test.go
            │   ├── util.go
            │   └── x509.go
            ├── batch_cursor.go
            ├── batch_cursor_test.go
            ├── batches.go
            ├── batches_test.go
            ├── command_monitoring_test.go
            ├── compression.go
            ├── compression_test.go
            ├── connstring/
            │   ├── connstring.go
            │   ├── connstring_spec_test.go
            │   ├── connstring_test.go
            │   └── initial_dns_seedlist_discovery_prose_test.go
            ├── crypt.go
            ├── description/
            │   ├── server.go
            │   └── topology.go
            ├── dns/
            │   └── dns.go
            ├── driver.go
            ├── drivertest/
            │   ├── channel_conn.go
            │   ├── channel_netconn.go
            │   ├── doc.go
            │   ├── opmsg_deployment.go
            │   └── opmsg_deployment_test.go
            ├── errors.go
            ├── integration/
            │   ├── aggregate_test.go
            │   ├── compressor_test.go
            │   ├── doc.go
            │   ├── integration.go
            │   ├── main_test.go
            │   └── scram_test.go
            ├── legacy.go
            ├── mnet/
            │   └── connection.go
            ├── mongocrypt/
            │   ├── binary.go
            │   ├── binary_test.go
            │   ├── errors.go
            │   ├── errors_not_enabled.go
            │   ├── mongocrypt.go
            │   ├── mongocrypt_context.go
            │   ├── mongocrypt_context_not_enabled.go
            │   ├── mongocrypt_kms_context.go
            │   ├── mongocrypt_kms_context_not_enabled.go
            │   ├── mongocrypt_not_enabled.go
            │   ├── mongocrypt_test.go
            │   ├── options/
            │   │   ├── doc.go
            │   │   ├── mongocrypt_context_options.go
            │   │   └── mongocrypt_options.go
            │   └── state.go
            ├── ocsp/
            │   ├── cache.go
            │   ├── cache_test.go
            │   ├── config.go
            │   ├── ocsp.go
            │   ├── ocsp_test.go
            │   └── options.go
            ├── operation/
            │   ├── abort_transaction.go
            │   ├── aggregate.go
            │   ├── command.go
            │   ├── commit_transaction.go
            │   ├── count.go
            │   ├── create.go
            │   ├── create_indexes.go
            │   ├── create_search_indexes.go
            │   ├── delete.go
            │   ├── distinct.go
            │   ├── doc.go
            │   ├── drop_collection.go
            │   ├── drop_database.go
            │   ├── drop_indexes.go
            │   ├── drop_search_index.go
            │   ├── end_sessions.go
            │   ├── errors.go
            │   ├── find.go
            │   ├── find_and_modify.go
            │   ├── hello.go
            │   ├── hello_test.go
            │   ├── list_collections.go
            │   ├── list_databases.go
            │   ├── list_indexes.go
            │   ├── update.go
            │   └── update_search_index.go
            ├── operation.go
            ├── operation_exhaust.go
            ├── operation_test.go
            ├── serverapioptions.go
            ├── session/
            │   ├── client_session.go
            │   ├── client_session_test.go
            │   ├── cluster_clock.go
            │   ├── cluster_clock_test.go
            │   ├── doc.go
            │   ├── options.go
            │   ├── server_session.go
            │   ├── server_session_test.go
            │   ├── session_pool.go
            │   └── session_pool_test.go
            ├── testdata/
            │   └── compression.go
            ├── topology/
            │   ├── CMAP_spec_test.go
            │   ├── DESIGN.md
            │   ├── cmap_prose_test.go
            │   ├── connection.go
            │   ├── connection_errors_test.go
            │   ├── connection_legacy.go
            │   ├── connection_options.go
            │   ├── connection_test.go
            │   ├── context_listener.go
            │   ├── diff.go
            │   ├── diff_test.go
            │   ├── errors.go
            │   ├── example_test.go
            │   ├── fsm.go
            │   ├── fsm_test.go
            │   ├── polling_srv_records_test.go
            │   ├── pool.go
            │   ├── pool_generation_counter.go
            │   ├── pool_test.go
            │   ├── rtt_monitor.go
            │   ├── rtt_monitor_test.go
            │   ├── sdam_spec_test.go
            │   ├── server.go
            │   ├── server_options.go
            │   ├── server_rtt_test.go
            │   ├── server_test.go
            │   ├── stats.go
            │   ├── stats_test.go
            │   ├── tls_connection_source_1_16.go
            │   ├── tls_connection_source_1_17.go
            │   ├── topology.go
            │   ├── topology_errors_test.go
            │   ├── topology_options.go
            │   ├── topology_options_test.go
            │   └── topology_test.go
            ├── wiremessage/
            │   ├── wiremessage.go
            │   └── wiremessage_test.go
            └── xoptions/
                ├── options.go
                └── options_test.go
Download .txt
Showing preview only (708K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (7568 symbols across 568 files)

FILE: bson/array_codec.go
  type arrayCodec (line 17) | type arrayCodec struct
    method EncodeValue (line 20) | func (ac *arrayCodec) EncodeValue(_ EncodeContext, vw ValueWriter, val...
    method DecodeValue (line 30) | func (ac *arrayCodec) DecodeValue(_ DecodeContext, vr ValueReader, val...

FILE: bson/benchmark_test.go
  function init (line 24) | func init() {
  type encodetest (line 36) | type encodetest struct
  type nestedtest1 (line 51) | type nestedtest1 struct
  type nestedtest2 (line 55) | type nestedtest2 struct
  type nestedtest3 (line 59) | type nestedtest3 struct
  type nestedtest4 (line 63) | type nestedtest4 struct
  type nestedtest5 (line 67) | type nestedtest5 struct
  type nestedtest6 (line 71) | type nestedtest6 struct
  type nestedtest7 (line 75) | type nestedtest7 struct
  type nestedtest8 (line 79) | type nestedtest8 struct
  type nestedtest9 (line 83) | type nestedtest9 struct
  type nestedtest10 (line 87) | type nestedtest10 struct
  type nestedtest11 (line 91) | type nestedtest11 struct
  constant extendedBSONDir (line 147) | extendedBSONDir = "../testdata/extended_bson"
  function readExtJSONFile (line 157) | func readExtJSONFile(filename string) map[string]any {
  function BenchmarkMarshal (line 198) | func BenchmarkMarshal(b *testing.B) {
  function BenchmarkUnmarshal (line 284) | func BenchmarkUnmarshal(b *testing.B) {
  type codeResponse (line 439) | type codeResponse struct
  type codeNode (line 444) | type codeNode struct
  function codeInit (line 460) | func codeInit() {
  function BenchmarkCodeUnmarshal (line 503) | func BenchmarkCodeUnmarshal(b *testing.B) {
  function BenchmarkCodeMarshal (line 535) | func BenchmarkCodeMarshal(b *testing.B) {

FILE: bson/bson_binary_vector_spec_test.go
  type bsonBinaryVectorTests (line 22) | type bsonBinaryVectorTests struct
  type bsonBinaryVectorTestCase (line 28) | type bsonBinaryVectorTestCase struct
  function TestBsonBinaryVectorSpec (line 38) | func TestBsonBinaryVectorSpec(t *testing.T) {
  function decodeTestSlice (line 85) | func decodeTestSlice[T int8 | float32 | byte](t *testing.T, data []byte)...
  function runBsonBinaryVectorTest (line 102) | func runBsonBinaryVectorTest(t *testing.T, testKey string, test bsonBina...

FILE: bson/bson_corpus_spec_test.go
  type testCase (line 29) | type testCase struct
  type validityTestCase (line 39) | type validityTestCase struct
  type decodeErrorTestCase (line 51) | type decodeErrorTestCase struct
  type parseErrorTestCase (line 56) | type parseErrorTestCase struct
  function findJSONFilesInDir (line 63) | func findJSONFilesInDir(dir string) ([]string, error) {
  function seedExtJSON (line 83) | func seedExtJSON(f *testing.F, extJSON string, extJSONType string, desc ...
  function seedTestCase (line 94) | func seedTestCase(f *testing.F, tcase *testCase) {
  function seedBSONCorpus (line 117) | func seedBSONCorpus(f *testing.F) {
  function needsEscapedUnicode (line 140) | func needsEscapedUnicode(bsonType string) bool {
  function unescapeUnicode (line 144) | func unescapeUnicode(s, bsonType string) string {
  function normalizeCanonicalDouble (line 187) | func normalizeCanonicalDouble(t *testing.T, key string, cEJ string) stri...
  function normalizeRelaxedDouble (line 202) | func normalizeRelaxedDouble(t *testing.T, key string, rEJ string) string {
  function bsonToNative (line 218) | func bsonToNative(t *testing.T, b []byte, bType, testDesc string) D {
  function nativeToBSON (line 227) | func nativeToBSON(t *testing.T, cB []byte, doc D, testDesc, bType, docSr...
  function jsonToNative (line 239) | func jsonToNative(ej, ejType, testDesc string) (D, error) {
  function jsonToBytes (line 248) | func jsonToBytes(ej, ejType, testDesc string) ([]byte, error) {
  function nativeToJSON (line 263) | func nativeToJSON(t *testing.T, ej string, doc D, testDesc, ejType, ejSh...
  function runTest (line 274) | func runTest(t *testing.T, file string) {
  function TestBSONCorpus (line 429) | func TestBSONCorpus(t *testing.T) {
  function TestRelaxedUUIDValidation (line 438) | func TestRelaxedUUIDValidation(t *testing.T) {

FILE: bson/bson_test.go
  function noerr (line 26) | func noerr(t *testing.T, err error) {
  function TestTimestamp (line 34) | func TestTimestamp(t *testing.T) {
  function TestPrimitiveIsZero (line 107) | func TestPrimitiveIsZero(t *testing.T) {
  function TestRegexCompare (line 129) | func TestRegexCompare(t *testing.T) {
  function TestDateTime (line 149) | func TestDateTime(t *testing.T) {
  function TestTimeRoundTrip (line 192) | func TestTimeRoundTrip(t *testing.T) {
  function TestNonNullTimeRoundTrip (line 221) | func TestNonNullTimeRoundTrip(t *testing.T) {
  function TestD (line 246) | func TestD(t *testing.T) {
  function TestDStringer (line 278) | func TestDStringer(t *testing.T) {
  function TestMStringer (line 284) | func TestMStringer(t *testing.T) {
  function TestD_MarshalJSON (line 303) | func TestD_MarshalJSON(t *testing.T) {
  function TestD_UnmarshalJSON (line 375) | func TestD_UnmarshalJSON(t *testing.T) {
  type stringerString (line 476) | type stringerString
    method String (line 478) | func (ss stringerString) String() string {
  type keyBool (line 482) | type keyBool
    method MarshalKey (line 484) | func (kb keyBool) MarshalKey() (string, error) {
    method UnmarshalKey (line 488) | func (kb *keyBool) UnmarshalKey(key string) error {
  type keyStruct (line 500) | type keyStruct struct
    method MarshalText (line 504) | func (k keyStruct) MarshalText() (text []byte, err error) {
    method UnmarshalText (line 510) | func (k *keyStruct) UnmarshalText(text []byte) error {
  function TestMapCodec (line 523) | func TestMapCodec(t *testing.T) {
  function TestExtJSONEscapeKey (line 587) | func TestExtJSONEscapeKey(t *testing.T) {
  function TestBsoncoreArray (line 614) | func TestBsoncoreArray(t *testing.T) {
  function BenchmarkDateTimeMarshalJSON (line 651) | func BenchmarkDateTimeMarshalJSON(b *testing.B) {
  function BenchmarkDateTimeUnmarshalJSON (line 666) | func BenchmarkDateTimeUnmarshalJSON(b *testing.B) {

FILE: bson/bsoncodec.go
  type ValueEncoderError (line 19) | type ValueEncoderError struct
    method Error (line 26) | func (vee ValueEncoderError) Error() string {
  type ValueDecoderError (line 47) | type ValueDecoderError struct
    method Error (line 54) | func (vde ValueDecoderError) Error() string {
  type EncodeContext (line 78) | type EncodeContext struct
  type DecodeContext (line 98) | type DecodeContext struct
  type ValueEncoder (line 130) | type ValueEncoder interface
  type ValueEncoderFunc (line 136) | type ValueEncoderFunc
    method EncodeValue (line 139) | func (fn ValueEncoderFunc) EncodeValue(ec EncodeContext, vw ValueWrite...
  type ValueDecoder (line 148) | type ValueDecoder interface
  type ValueDecoderFunc (line 154) | type ValueDecoderFunc
    method DecodeValue (line 157) | func (fn ValueDecoderFunc) DecodeValue(dc DecodeContext, vr ValueReade...
  type typeDecoder (line 162) | type typeDecoder interface
  type typeDecoderFunc (line 167) | type typeDecoderFunc
    method decodeType (line 169) | func (fn typeDecoderFunc) decodeType(dc DecodeContext, vr ValueReader,...
  type decodeAdapter (line 174) | type decodeAdapter struct
  function decodeTypeOrValueWithInfo (line 184) | func decodeTypeOrValueWithInfo(vd ValueDecoder, dc DecodeContext, vr Val...

FILE: bson/bsoncodec_test.go
  function ExampleValueEncoder (line 15) | func ExampleValueEncoder() {
  function ExampleValueDecoder (line 25) | func ExampleValueDecoder() {
  type llCodec (line 44) | type llCodec struct
    method EncodeValue (line 51) | func (llc *llCodec) EncodeValue(_ EncodeContext, _ ValueWriter, i any)...
    method DecodeValue (line 60) | func (llc *llCodec) DecodeValue(_ DecodeContext, _ ValueReader, val re...

FILE: bson/bsonrw_test.go
  type invoked (line 21) | type invoked
    method String (line 78) | func (i invoked) String() string {
  constant nothing (line 25) | nothing invoked = iota
  constant readArray (line 26) | readArray
  constant readBinary (line 27) | readBinary
  constant readBoolean (line 28) | readBoolean
  constant readDocument (line 29) | readDocument
  constant readCodeWithScope (line 30) | readCodeWithScope
  constant readDBPointer (line 31) | readDBPointer
  constant readDateTime (line 32) | readDateTime
  constant readDecimal128 (line 33) | readDecimal128
  constant readDouble (line 34) | readDouble
  constant readInt32 (line 35) | readInt32
  constant readInt64 (line 36) | readInt64
  constant readJavascript (line 37) | readJavascript
  constant readMaxKey (line 38) | readMaxKey
  constant readMinKey (line 39) | readMinKey
  constant readNull (line 40) | readNull
  constant readObjectID (line 41) | readObjectID
  constant readRegex (line 42) | readRegex
  constant readString (line 43) | readString
  constant readSymbol (line 44) | readSymbol
  constant readTimestamp (line 45) | readTimestamp
  constant readUndefined (line 46) | readUndefined
  constant readElement (line 47) | readElement
  constant readValue (line 48) | readValue
  constant writeArray (line 49) | writeArray
  constant writeBinary (line 50) | writeBinary
  constant writeBinaryWithSubtype (line 51) | writeBinaryWithSubtype
  constant writeBoolean (line 52) | writeBoolean
  constant writeCodeWithScope (line 53) | writeCodeWithScope
  constant writeDBPointer (line 54) | writeDBPointer
  constant writeDateTime (line 55) | writeDateTime
  constant writeDecimal128 (line 56) | writeDecimal128
  constant writeDouble (line 57) | writeDouble
  constant writeInt32 (line 58) | writeInt32
  constant writeInt64 (line 59) | writeInt64
  constant writeJavascript (line 60) | writeJavascript
  constant writeMaxKey (line 61) | writeMaxKey
  constant writeMinKey (line 62) | writeMinKey
  constant writeNull (line 63) | writeNull
  constant writeObjectID (line 64) | writeObjectID
  constant writeRegex (line 65) | writeRegex
  constant writeString (line 66) | writeString
  constant writeDocument (line 67) | writeDocument
  constant writeSymbol (line 68) | writeSymbol
  constant writeTimestamp (line 69) | writeTimestamp
  constant writeUndefined (line 70) | writeUndefined
  constant writeDocumentElement (line 71) | writeDocumentElement
  constant writeDocumentEnd (line 72) | writeDocumentEnd
  constant writeArrayElement (line 73) | writeArrayElement
  constant writeArrayEnd (line 74) | writeArrayEnd
  constant skip (line 75) | skip
  type valueReaderWriter (line 186) | type valueReaderWriter struct
    method checkdepth (line 197) | func (llvrw *valueReaderWriter) checkdepth() {
    method Type (line 205) | func (llvrw *valueReaderWriter) Type() Type {
    method Skip (line 211) | func (llvrw *valueReaderWriter) Skip() error {
    method ReadArray (line 221) | func (llvrw *valueReaderWriter) ReadArray() (ArrayReader, error) {
    method ReadBinary (line 232) | func (llvrw *valueReaderWriter) ReadBinary() (b []byte, btype byte, er...
    method ReadBoolean (line 254) | func (llvrw *valueReaderWriter) ReadBoolean() (bool, error) {
    method ReadDocument (line 278) | func (llvrw *valueReaderWriter) ReadDocument() (DocumentReader, error) {
    method ReadCodeWithScope (line 289) | func (llvrw *valueReaderWriter) ReadCodeWithScope() (code string, dr D...
    method ReadDBPointer (line 300) | func (llvrw *valueReaderWriter) ReadDBPointer() (ns string, oid Object...
    method ReadDateTime (line 322) | func (llvrw *valueReaderWriter) ReadDateTime() (int64, error) {
    method ReadDecimal128 (line 339) | func (llvrw *valueReaderWriter) ReadDecimal128() (Decimal128, error) {
    method ReadDouble (line 356) | func (llvrw *valueReaderWriter) ReadDouble() (float64, error) {
    method ReadInt32 (line 373) | func (llvrw *valueReaderWriter) ReadInt32() (int32, error) {
    method ReadInt64 (line 390) | func (llvrw *valueReaderWriter) ReadInt64() (int64, error) {
    method ReadJavascript (line 406) | func (llvrw *valueReaderWriter) ReadJavascript() (code string, err err...
    method ReadMaxKey (line 422) | func (llvrw *valueReaderWriter) ReadMaxKey() error {
    method ReadMinKey (line 433) | func (llvrw *valueReaderWriter) ReadMinKey() error {
    method ReadNull (line 444) | func (llvrw *valueReaderWriter) ReadNull() error {
    method ReadObjectID (line 455) | func (llvrw *valueReaderWriter) ReadObjectID() (ObjectID, error) {
    method ReadRegex (line 471) | func (llvrw *valueReaderWriter) ReadRegex() (pattern string, options s...
    method ReadString (line 492) | func (llvrw *valueReaderWriter) ReadString() (string, error) {
    method ReadSymbol (line 508) | func (llvrw *valueReaderWriter) ReadSymbol() (symbol string, err error) {
    method ReadTimestamp (line 531) | func (llvrw *valueReaderWriter) ReadTimestamp() (t uint32, i uint32, e...
    method ReadUndefined (line 552) | func (llvrw *valueReaderWriter) ReadUndefined() error {
    method WriteArray (line 563) | func (llvrw *valueReaderWriter) WriteArray() (ArrayWriter, error) {
    method WriteBinary (line 573) | func (llvrw *valueReaderWriter) WriteBinary([]byte) error {
    method WriteBinaryWithSubtype (line 583) | func (llvrw *valueReaderWriter) WriteBinaryWithSubtype([]byte, byte) e...
    method WriteBoolean (line 593) | func (llvrw *valueReaderWriter) WriteBoolean(bool) error {
    method WriteCodeWithScope (line 603) | func (llvrw *valueReaderWriter) WriteCodeWithScope(string) (DocumentWr...
    method WriteDBPointer (line 613) | func (llvrw *valueReaderWriter) WriteDBPointer(string, ObjectID) error {
    method WriteDateTime (line 623) | func (llvrw *valueReaderWriter) WriteDateTime(int64) error {
    method WriteDecimal128 (line 633) | func (llvrw *valueReaderWriter) WriteDecimal128(Decimal128) error {
    method WriteDouble (line 643) | func (llvrw *valueReaderWriter) WriteDouble(float64) error {
    method WriteInt32 (line 653) | func (llvrw *valueReaderWriter) WriteInt32(int32) error {
    method WriteInt64 (line 663) | func (llvrw *valueReaderWriter) WriteInt64(int64) error {
    method WriteJavascript (line 673) | func (llvrw *valueReaderWriter) WriteJavascript(string) error {
    method WriteMaxKey (line 683) | func (llvrw *valueReaderWriter) WriteMaxKey() error {
    method WriteMinKey (line 693) | func (llvrw *valueReaderWriter) WriteMinKey() error {
    method WriteNull (line 703) | func (llvrw *valueReaderWriter) WriteNull() error {
    method WriteObjectID (line 713) | func (llvrw *valueReaderWriter) WriteObjectID(ObjectID) error {
    method WriteRegex (line 723) | func (llvrw *valueReaderWriter) WriteRegex(string, string) error {
    method WriteString (line 733) | func (llvrw *valueReaderWriter) WriteString(string) error {
    method WriteDocument (line 743) | func (llvrw *valueReaderWriter) WriteDocument() (DocumentWriter, error) {
    method WriteSymbol (line 753) | func (llvrw *valueReaderWriter) WriteSymbol(string) error {
    method WriteTimestamp (line 763) | func (llvrw *valueReaderWriter) WriteTimestamp(uint32, uint32) error {
    method WriteUndefined (line 773) | func (llvrw *valueReaderWriter) WriteUndefined() error {
    method ReadElement (line 783) | func (llvrw *valueReaderWriter) ReadElement() (string, ValueReader, er...
    method WriteDocumentElement (line 794) | func (llvrw *valueReaderWriter) WriteDocumentElement(string) (ValueWri...
    method WriteDocumentEnd (line 805) | func (llvrw *valueReaderWriter) WriteDocumentEnd() error {
    method ReadValue (line 816) | func (llvrw *valueReaderWriter) ReadValue() (ValueReader, error) {
    method WriteArrayElement (line 827) | func (llvrw *valueReaderWriter) WriteArrayElement() (ValueWriter, erro...
    method WriteArrayEnd (line 838) | func (llvrw *valueReaderWriter) WriteArrayEnd() error {

FILE: bson/buffered_byte_src.go
  type bufferedByteSrc (line 17) | type bufferedByteSrc struct
    method readExact (line 26) | func (b *bufferedByteSrc) readExact(p []byte) (int, error) {
    method ReadByte (line 36) | func (b *bufferedByteSrc) ReadByte() (byte, error) {
    method peek (line 45) | func (b *bufferedByteSrc) peek(n int) ([]byte, error) {
    method discard (line 56) | func (b *bufferedByteSrc) discard(n int) (int, error) {
    method readSlice (line 73) | func (b *bufferedByteSrc) readSlice(delim byte) ([]byte, error) {
    method pos (line 96) | func (b *bufferedByteSrc) pos() int64 {
    method regexLength (line 101) | func (b *bufferedByteSrc) regexLength() (int32, error) {
    method streamable (line 121) | func (*bufferedByteSrc) streamable() bool {
    method reset (line 125) | func (b *bufferedByteSrc) reset() {

FILE: bson/buffered_byte_src_test.go
  function TestBufferedvalueReader_discard (line 18) | func TestBufferedvalueReader_discard(t *testing.T) {
  function TestBufferedvalueReader_peek (line 85) | func TestBufferedvalueReader_peek(t *testing.T) {

FILE: bson/byte_slice_codec.go
  type byteSliceCodec (line 15) | type byteSliceCodec struct
    method EncodeValue (line 27) | func (bsc *byteSliceCodec) EncodeValue(ec EncodeContext, vw ValueWrite...
    method decodeType (line 37) | func (bsc *byteSliceCodec) decodeType(_ DecodeContext, vr ValueReader,...
    method DecodeValue (line 85) | func (bsc *byteSliceCodec) DecodeValue(dc DecodeContext, vr ValueReade...

FILE: bson/codec_cache.go
  function init (line 17) | func init() {
  type typeEncoderCache (line 30) | type typeEncoderCache struct
    method Store (line 34) | func (c *typeEncoderCache) Store(rt reflect.Type, enc ValueEncoder) {
    method Load (line 38) | func (c *typeEncoderCache) Load(rt reflect.Type) (ValueEncoder, bool) {
    method LoadOrStore (line 45) | func (c *typeEncoderCache) LoadOrStore(rt reflect.Type, enc ValueEncod...
    method Clone (line 52) | func (c *typeEncoderCache) Clone() *typeEncoderCache {
  type typeDecoderCache (line 63) | type typeDecoderCache struct
    method Store (line 67) | func (c *typeDecoderCache) Store(rt reflect.Type, dec ValueDecoder) {
    method Load (line 71) | func (c *typeDecoderCache) Load(rt reflect.Type) (ValueDecoder, bool) {
    method LoadOrStore (line 78) | func (c *typeDecoderCache) LoadOrStore(rt reflect.Type, dec ValueDecod...
    method Clone (line 85) | func (c *typeDecoderCache) Clone() *typeDecoderCache {
  type kindEncoderCacheEntry (line 100) | type kindEncoderCacheEntry struct
  type kindEncoderCache (line 104) | type kindEncoderCache struct
    method Store (line 108) | func (c *kindEncoderCache) Store(rt reflect.Kind, enc ValueEncoder) {
    method Load (line 114) | func (c *kindEncoderCache) Load(rt reflect.Kind) (ValueEncoder, bool) {
    method Clone (line 123) | func (c *kindEncoderCache) Clone() *kindEncoderCache {
  type kindDecoderCacheEntry (line 137) | type kindDecoderCacheEntry struct
  type kindDecoderCache (line 141) | type kindDecoderCache struct
    method Store (line 145) | func (c *kindDecoderCache) Store(rt reflect.Kind, dec ValueDecoder) {
    method Load (line 151) | func (c *kindDecoderCache) Load(rt reflect.Kind) (ValueDecoder, bool) {
    method Clone (line 160) | func (c *kindDecoderCache) Clone() *kindDecoderCache {

FILE: bson/codec_cache_test.go
  function TestTypeCache (line 37) | func TestTypeCache(t *testing.T) {
  function TestTypeCacheClone (line 63) | func TestTypeCacheClone(t *testing.T) {
  function TestKindCacheArray (line 83) | func TestKindCacheArray(t *testing.T) {
  function TestKindCacheClone (line 108) | func TestKindCacheClone(t *testing.T) {
  function TestKindCacheEncoderNilEncoder (line 134) | func TestKindCacheEncoderNilEncoder(t *testing.T) {
  function BenchmarkEncoderCacheLoad (line 153) | func BenchmarkEncoderCacheLoad(b *testing.B) {
  function BenchmarkEncoderCacheStore (line 167) | func BenchmarkEncoderCacheStore(b *testing.B) {

FILE: bson/cond_addr_codec.go
  type condAddrEncoder (line 14) | type condAddrEncoder struct
    method EncodeValue (line 28) | func (cae *condAddrEncoder) EncodeValue(ec EncodeContext, vw ValueWrit...
  function newCondAddrEncoder (line 22) | func newCondAddrEncoder(canAddrEnc, elseEnc ValueEncoder) *condAddrEncod...
  type condAddrDecoder (line 39) | type condAddrDecoder struct
    method DecodeValue (line 53) | func (cad *condAddrDecoder) DecodeValue(dc DecodeContext, vr ValueRead...
  function newCondAddrDecoder (line 47) | func newCondAddrDecoder(canAddrDec, elseDec ValueDecoder) *condAddrDecod...

FILE: bson/cond_addr_codec_test.go
  function TestCondAddrCodec (line 16) | func TestCondAddrCodec(t *testing.T) {

FILE: bson/copier.go
  function copyDocument (line 18) | func copyDocument(dst ValueWriter, src ValueReader) error {
  function copyArrayFromBytes (line 34) | func copyArrayFromBytes(dst ValueWriter, src []byte) error {
  function copyDocumentFromBytes (line 50) | func copyDocumentFromBytes(dst ValueWriter, src []byte) error {
  type writeElementFn (line 64) | type writeElementFn
  function copyBytesToArrayWriter (line 68) | func copyBytesToArrayWriter(dst ArrayWriter, src []byte) error {
  function copyBytesToDocumentWriter (line 78) | func copyBytesToDocumentWriter(dst DocumentWriter, src []byte) error {
  function copyBytesToValueWriter (line 86) | func copyBytesToValueWriter(src []byte, wef writeElementFn) error {
  function copyDocumentToBytes (line 137) | func copyDocumentToBytes(src ValueReader) ([]byte, error) {
  function appendDocumentBytes (line 143) | func appendDocumentBytes(dst []byte, src ValueReader) ([]byte, error) {
  function appendArrayBytes (line 160) | func appendArrayBytes(dst []byte, src ValueReader) ([]byte, error) {
  function copyValueFromBytes (line 177) | func copyValueFromBytes(dst ValueWriter, t Type, src []byte) error {
  function copyValueToBytes (line 193) | func copyValueToBytes(src ValueReader) (Type, []byte, error) {
  function copyValue (line 213) | func copyValue(dst ValueWriter, src ValueReader) error {
  function copyArray (line 365) | func copyArray(dst ValueWriter, src ValueReader) error {
  function copyDocumentCore (line 399) | func copyDocumentCore(dw DocumentWriter, dr DocumentReader) error {
  type bytesReader (line 426) | type bytesReader interface
  type bytesWriter (line 431) | type bytesWriter interface

FILE: bson/copier_test.go
  function TestCopier (line 19) | func TestCopier(t *testing.T) {

FILE: bson/decimal.go
  constant MaxDecimal128Exp (line 26) | MaxDecimal128Exp = 6111
  constant MinDecimal128Exp (line 27) | MinDecimal128Exp = -6176
  type Decimal128 (line 38) | type Decimal128 struct
    method GetBytes (line 49) | func (d Decimal128) GetBytes() (uint64, uint64) {
    method String (line 54) | func (d Decimal128) String() string {
    method BigInt (line 59) | func (d Decimal128) BigInt() (*big.Int, int, error) {
    method IsNaN (line 107) | func (d Decimal128) IsNaN() bool {
    method IsInf (line 116) | func (d Decimal128) IsInf() int {
    method IsZero (line 128) | func (d Decimal128) IsZero() bool {
    method MarshalJSON (line 133) | func (d Decimal128) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 140) | func (d *Decimal128) UnmarshalJSON(b []byte) error {
  function NewDecimal128 (line 43) | func NewDecimal128(h, l uint64) Decimal128 {
  function dErr (line 181) | func dErr(s string) (Decimal128, error) {
  function ParseDecimal128 (line 190) | func ParseDecimal128(s string) (Decimal128, error) {
  function ParseDecimal128FromBigInt (line 261) | func ParseDecimal128FromBigInt(bi *big.Int, exp int) (Decimal128, bool) {
  function bigIntCmpAbs (line 328) | func bigIntCmpAbs(x, y *big.Int) int {
  function bigIntAbsValue (line 336) | func bigIntAbsValue(b *big.Int) *big.Int {

FILE: bson/decimal_test.go
  type bigIntTestCase (line 19) | type bigIntTestCase struct
  function parseBigInt (line 31) | func parseBigInt(s string) *big.Int {
  function TestDecimal128_BigInt (line 99) | func TestDecimal128_BigInt(t *testing.T) {
  function TestParseDecimal128FromBigInt (line 118) | func TestParseDecimal128FromBigInt(t *testing.T) {
  function TestParseDecimal128 (line 135) | func TestParseDecimal128(t *testing.T) {
  function TestDecimal128_JSON (line 177) | func TestDecimal128_JSON(t *testing.T) {

FILE: bson/decode_value_fuzz_test.go
  function FuzzDecodeValue (line 15) | func FuzzDecodeValue(f *testing.F) {

FILE: bson/decoder.go
  type Decoder (line 30) | type Decoder struct
    method Decode (line 47) | func (d *Decoder) Decode(val any) error {
    method Reset (line 81) | func (d *Decoder) Reset(vr ValueReader) {
    method SetRegistry (line 86) | func (d *Decoder) SetRegistry(r *Registry) {
    method DefaultDocumentM (line 92) | func (d *Decoder) DefaultDocumentM() {
    method DefaultDocumentMap (line 99) | func (d *Decoder) DefaultDocumentMap() {
    method AllowTruncatingDoubles (line 106) | func (d *Decoder) AllowTruncatingDoubles() {
    method BinaryAsSlice (line 112) | func (d *Decoder) BinaryAsSlice() {
    method ObjectIDAsHexString (line 117) | func (d *Decoder) ObjectIDAsHexString() {
    method UseJSONStructTags (line 123) | func (d *Decoder) UseJSONStructTags() {
    method UseLocalTimeZone (line 129) | func (d *Decoder) UseLocalTimeZone() {
    method ZeroMaps (line 135) | func (d *Decoder) ZeroMaps() {
    method ZeroStructs (line 141) | func (d *Decoder) ZeroStructs() {
  function NewDecoder (line 36) | func NewDecoder(vr ValueReader) *Decoder {

FILE: bson/decoder_example_test.go
  function ExampleDecoder (line 19) | func ExampleDecoder() {
  function ExampleDecoder_DefaultDocumentM (line 52) | func ExampleDecoder_DefaultDocumentM() {
  function ExampleDecoder_DefaultDocumentMap (line 97) | func ExampleDecoder_DefaultDocumentMap() {
  function ExampleDecoder_UseJSONStructTags (line 142) | func ExampleDecoder_UseJSONStructTags() {
  function ExampleDecoder_extendedJSON (line 179) | func ExampleDecoder_extendedJSON() {
  function ExampleDecoder_multipleExtendedJSONDocuments (line 208) | func ExampleDecoder_multipleExtendedJSONDocuments() {

FILE: bson/decoder_test.go
  function TestDecodeValue (line 21) | func TestDecodeValue(t *testing.T) {
  function TestDecodingInterfaces (line 42) | func TestDecodingInterfaces(t *testing.T) {
  function TestDecoder (line 221) | func TestDecoder(t *testing.T) {
  type testUnmarshaler (line 430) | type testUnmarshaler struct
    method UnmarshalBSON (line 436) | func (tu *testUnmarshaler) UnmarshalBSON(d []byte) error {
  function TestDecoderConfiguration (line 442) | func TestDecoderConfiguration(t *testing.T) {

FILE: bson/default_value_decoders.go
  type decodeBinaryError (line 23) | type decodeBinaryError struct
    method Error (line 28) | func (d decodeBinaryError) Error() string {
  function registerDefaultDecoders (line 38) | func registerDefaultDecoders(reg *Registry) {
  function dDecodeValue (line 111) | func dDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Value) e...
  function booleanDecodeType (line 166) | func booleanDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) ...
  function booleanDecodeValue (line 213) | func booleanDecodeValue(dctx DecodeContext, vr ValueReader, val reflect....
  function intDecodeType (line 227) | func intDecodeType(dc DecodeContext, vr ValueReader, t reflect.Type) (re...
  function intDecodeValue (line 311) | func intDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Value)...
  function floatDecodeType (line 329) | func floatDecodeType(dc DecodeContext, vr ValueReader, t reflect.Type) (...
  function floatDecodeValue (line 389) | func floatDecodeValue(ec DecodeContext, vr ValueReader, val reflect.Valu...
  function javaScriptDecodeType (line 407) | func javaScriptDecodeType(_ DecodeContext, vr ValueReader, t reflect.Typ...
  function javaScriptDecodeValue (line 436) | func javaScriptDecodeValue(dctx DecodeContext, vr ValueReader, val refle...
  function symbolDecodeType (line 450) | func symbolDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) (...
  function symbolDecodeValue (line 491) | func symbolDecodeValue(dctx DecodeContext, vr ValueReader, val reflect.V...
  function binaryDecode (line 505) | func binaryDecode(vr ValueReader) (Binary, error) {
  function binaryDecodeType (line 530) | func binaryDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) (...
  function binaryDecodeValue (line 547) | func binaryDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Val...
  function vectorDecodeType (line 561) | func vectorDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) (...
  function vectorDecodeValue (line 584) | func vectorDecodeValue(dctx DecodeContext, vr ValueReader, val reflect.V...
  function undefinedDecodeType (line 603) | func undefinedDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type...
  function undefinedDecodeValue (line 629) | func undefinedDecodeValue(dc DecodeContext, vr ValueReader, val reflect....
  function objectIDDecodeType (line 644) | func objectIDDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type)...
  function objectIDDecodeValue (line 690) | func objectIDDecodeValue(dc DecodeContext, vr ValueReader, val reflect.V...
  function dateTimeDecodeType (line 704) | func dateTimeDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type)...
  function dateTimeDecodeValue (line 733) | func dateTimeDecodeValue(dc DecodeContext, vr ValueReader, val reflect.V...
  function nullDecodeType (line 747) | func nullDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) (re...
  function nullDecodeValue (line 773) | func nullDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Value...
  function regexDecodeType (line 787) | func regexDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) (r...
  function regexDecodeValue (line 816) | func regexDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Valu...
  function dbPointerDecodeType (line 830) | func dbPointerDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type...
  function dbPointerDecodeValue (line 860) | func dbPointerDecodeValue(dc DecodeContext, vr ValueReader, val reflect....
  function timestampDecodeType (line 874) | func timestampDecodeType(_ DecodeContext, vr ValueReader, reflectType re...
  function timestampDecodeValue (line 903) | func timestampDecodeValue(dc DecodeContext, vr ValueReader, val reflect....
  function minKeyDecodeType (line 917) | func minKeyDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) (...
  function minKeyDecodeValue (line 945) | func minKeyDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Val...
  function maxKeyDecodeType (line 959) | func maxKeyDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) (...
  function maxKeyDecodeValue (line 987) | func maxKeyDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Val...
  function decimal128DecodeType (line 1001) | func decimal128DecodeType(_ DecodeContext, vr ValueReader, t reflect.Typ...
  function decimal128DecodeValue (line 1030) | func decimal128DecodeValue(dctx DecodeContext, vr ValueReader, val refle...
  function jsonNumberDecodeType (line 1044) | func jsonNumberDecodeType(_ DecodeContext, vr ValueReader, t reflect.Typ...
  function jsonNumberDecodeValue (line 1089) | func jsonNumberDecodeValue(dc DecodeContext, vr ValueReader, val reflect...
  function urlDecodeType (line 1103) | func urlDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) (ref...
  function urlDecodeValue (line 1138) | func urlDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Value)...
  function arrayDecodeValue (line 1153) | func arrayDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Valu...
  function valueUnmarshalerDecodeValue (line 1219) | func valueUnmarshalerDecodeValue(_ DecodeContext, vr ValueReader, val re...
  function unmarshalerDecodeValue (line 1264) | func unmarshalerDecodeValue(_ DecodeContext, vr ValueReader, val reflect...
  function coreDocumentDecodeValue (line 1309) | func coreDocumentDecodeValue(_ DecodeContext, vr ValueReader, val reflec...
  function decodeDefault (line 1330) | func decodeDefault(dc DecodeContext, vr ValueReader, val reflect.Value) ...
  function codeWithScopeDecodeType (line 1422) | func codeWithScopeDecodeType(dc DecodeContext, vr ValueReader, t reflect...
  function codeWithScopeDecodeValue (line 1468) | func codeWithScopeDecodeValue(dc DecodeContext, vr ValueReader, val refl...
  function decodeD (line 1482) | func decodeD(dc DecodeContext, vr ValueReader, _ reflect.Value) ([]refle...
  function decodeElemsFromDocumentReader (line 1497) | func decodeElemsFromDocumentReader(dc DecodeContext, dr DocumentReader) ...

FILE: bson/default_value_decoders_test.go
  function TestDefaultValueDecoders (line 26) | func TestDefaultValueDecoders(t *testing.T) {
  function buildDocumentArray (line 3855) | func buildDocumentArray(fn func([]byte) []byte) []byte {
  function buildArray (line 3862) | func buildArray(vals []byte) []byte {
  function appendArrayElement (line 3869) | func appendArrayElement(dst []byte, key string, vals []byte) []byte {
  function buildDocument (line 3877) | func buildDocument(elems []byte) []byte {
  function buildDefaultRegistry (line 3884) | func buildDefaultRegistry() *Registry {

FILE: bson/default_value_encoders.go
  function encodeElement (line 35) | func encodeElement(ec EncodeContext, dw DocumentWriter, e E) error {
  function registerDefaultEncoders (line 58) | func registerDefaultEncoders(reg *Registry) {
  function booleanEncodeValue (line 108) | func booleanEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Val...
  function fitsIn32Bits (line 115) | func fitsIn32Bits(i int64) bool {
  function intEncodeValue (line 120) | func intEncodeValue(ec EncodeContext, vw ValueWriter, val reflect.Value)...
  function floatEncodeValue (line 146) | func floatEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Value...
  function objectIDEncodeValue (line 156) | func objectIDEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Va...
  function decimal128EncodeValue (line 164) | func decimal128EncodeValue(_ EncodeContext, vw ValueWriter, val reflect....
  function jsonNumberEncodeValue (line 172) | func jsonNumberEncodeValue(ec EncodeContext, vw ValueWriter, val reflect...
  function urlEncodeValue (line 192) | func urlEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Value) ...
  function arrayEncodeValue (line 201) | func arrayEncodeValue(ec EncodeContext, vw ValueWriter, val reflect.Valu...
  function lookupElementEncoder (line 271) | func lookupElementEncoder(ec EncodeContext, origEncoder ValueEncoder, cu...
  function valueMarshalerEncodeValue (line 285) | func valueMarshalerEncodeValue(_ EncodeContext, vw ValueWriter, val refl...
  function marshalerEncodeValue (line 313) | func marshalerEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.V...
  function javaScriptEncodeValue (line 341) | func javaScriptEncodeValue(_ EncodeContext, vw ValueWriter, val reflect....
  function symbolEncodeValue (line 350) | func symbolEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Valu...
  function binaryEncodeValue (line 359) | func binaryEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Valu...
  function vectorEncodeValue (line 369) | func vectorEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Valu...
  function undefinedEncodeValue (line 384) | func undefinedEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.V...
  function dateTimeEncodeValue (line 393) | func dateTimeEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Va...
  function nullEncodeValue (line 402) | func nullEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Value)...
  function regexEncodeValue (line 411) | func regexEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Value...
  function dbPointerEncodeValue (line 422) | func dbPointerEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.V...
  function timestampEncodeValue (line 433) | func timestampEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.V...
  function minKeyEncodeValue (line 444) | func minKeyEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Valu...
  function maxKeyEncodeValue (line 453) | func maxKeyEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Valu...
  function coreDocumentEncodeValue (line 462) | func coreDocumentEncodeValue(_ EncodeContext, vw ValueWriter, val reflec...
  function codeWithScopeEncodeValue (line 473) | func codeWithScopeEncodeValue(ec EncodeContext, vw ValueWriter, val refl...
  function isImplementationNil (line 512) | func isImplementationNil(val reflect.Value, inter reflect.Type) bool {

FILE: bson/default_value_encoders_test.go
  type myInterface (line 25) | type myInterface interface
  type myStruct (line 29) | type myStruct struct
    method Foo (line 33) | func (ms myStruct) Foo() int {
  function TestDefaultValueEncoders (line 37) | func TestDefaultValueEncoders(t *testing.T) {
  type testValueMarshalPtr (line 1741) | type testValueMarshalPtr struct
    method MarshalBSONValue (line 1747) | func (tvm *testValueMarshalPtr) MarshalBSONValue() (byte, []byte, erro...
  type testMarshalPtr (line 1751) | type testMarshalPtr struct
    method MarshalBSON (line 1756) | func (tvm *testMarshalPtr) MarshalBSON() ([]byte, error) {

FILE: bson/empty_interface_codec.go
  type emptyInterfaceCodec (line 14) | type emptyInterfaceCodec struct
    method EncodeValue (line 26) | func (eic *emptyInterfaceCodec) EncodeValue(ec EncodeContext, vw Value...
    method getEmptyInterfaceDecodeType (line 42) | func (eic *emptyInterfaceCodec) getEmptyInterfaceDecodeType(dc DecodeC...
    method decodeType (line 79) | func (eic *emptyInterfaceCodec) decodeType(dc DecodeContext, vr ValueR...
    method DecodeValue (line 115) | func (eic *emptyInterfaceCodec) DecodeValue(dc DecodeContext, vr Value...

FILE: bson/encoder.go
  type Encoder (line 25) | type Encoder struct
    method Encode (line 41) | func (e *Encoder) Encode(val any) error {
    method Reset (line 61) | func (e *Encoder) Reset(vw ValueWriter) {
    method SetRegistry (line 66) | func (e *Encoder) SetRegistry(r *Registry) {
    method ErrorOnInlineDuplicates (line 72) | func (e *Encoder) ErrorOnInlineDuplicates() {
    method IntMinSize (line 79) | func (e *Encoder) IntMinSize() {
    method StringifyMapKeysWithFmt (line 85) | func (e *Encoder) StringifyMapKeysWithFmt() {
    method NilMapAsEmpty (line 91) | func (e *Encoder) NilMapAsEmpty() {
    method NilSliceAsEmpty (line 97) | func (e *Encoder) NilSliceAsEmpty() {
    method NilByteSliceAsEmpty (line 103) | func (e *Encoder) NilByteSliceAsEmpty() {
    method OmitZeroStruct (line 116) | func (e *Encoder) OmitZeroStruct() {
    method OmitEmpty (line 122) | func (e *Encoder) OmitEmpty() {
    method UseJSONStructTags (line 128) | func (e *Encoder) UseJSONStructTags() {
  function NewEncoder (line 31) | func NewEncoder(vw ValueWriter) *Encoder {

FILE: bson/encoder_example_test.go
  function ExampleEncoder (line 18) | func ExampleEncoder() {
  type CityState (line 47) | type CityState struct
    method String (line 52) | func (k CityState) String() string {
  function ExampleEncoder_StringifyMapKeysWithFmt (line 56) | func ExampleEncoder_StringifyMapKeysWithFmt() {
  function ExampleEncoder_UseJSONStructTags (line 81) | func ExampleEncoder_UseJSONStructTags() {
  function ExampleEncoder_multipleBSONDocuments (line 114) | func ExampleEncoder_multipleBSONDocuments() {
  function ExampleEncoder_extendedJSON (line 157) | func ExampleEncoder_extendedJSON() {
  function ExampleEncoder_multipleExtendedJSONDocuments (line 186) | func ExampleEncoder_multipleExtendedJSONDocuments() {
  function ExampleEncoder_IntMinSize (line 219) | func ExampleEncoder_IntMinSize() {

FILE: bson/encoder_test.go
  function TestBasicEncode (line 21) | func TestBasicEncode(t *testing.T) {
  function TestEncoderEncode (line 40) | func TestEncoderEncode(t *testing.T) {
  type testMarshaler (line 117) | type testMarshaler struct
    method MarshalBSON (line 122) | func (tm testMarshaler) MarshalBSON() ([]byte, error) { return tm.buf,...
  function docToBytes (line 124) | func docToBytes(d any) []byte {
  type stringerTest (line 132) | type stringerTest struct
    method String (line 134) | func (stringerTest) String() string {
  function TestEncoderConfiguration (line 138) | func TestEncoderConfiguration(t *testing.T) {

FILE: bson/example_test.go
  function ExampleRaw_unmarshal (line 17) | func ExampleRaw_unmarshal() {
  function ExampleRaw_marshal (line 45) | func ExampleRaw_marshal() {
  function ExampleRawValue_unmarshal (line 70) | func ExampleRawValue_unmarshal() {
  function ExampleRawValue_marshal (line 117) | func ExampleRawValue_marshal() {

FILE: bson/extjson_parser.go
  constant maxNestingDepth (line 18) | maxNestingDepth = 200
  type jsonParseState (line 23) | type jsonParseState
  constant jpsStartState (line 26) | jpsStartState jsonParseState = iota
  constant jpsSawBeginObject (line 27) | jpsSawBeginObject
  constant jpsSawEndObject (line 28) | jpsSawEndObject
  constant jpsSawBeginArray (line 29) | jpsSawBeginArray
  constant jpsSawEndArray (line 30) | jpsSawEndArray
  constant jpsSawColon (line 31) | jpsSawColon
  constant jpsSawComma (line 32) | jpsSawComma
  constant jpsSawKey (line 33) | jpsSawKey
  constant jpsSawValue (line 34) | jpsSawValue
  constant jpsDoneState (line 35) | jpsDoneState
  constant jpsInvalidState (line 36) | jpsInvalidState
  type jsonParseMode (line 39) | type jsonParseMode
  constant jpmInvalidMode (line 42) | jpmInvalidMode jsonParseMode = iota
  constant jpmObjectMode (line 43) | jpmObjectMode
  constant jpmArrayMode (line 44) | jpmArrayMode
  type extJSONValue (line 47) | type extJSONValue struct
  type extJSONObject (line 52) | type extJSONObject struct
  type extJSONParser (line 57) | type extJSONParser struct
    method peekType (line 88) | func (ejp *extJSONParser) peekType() (Type, error) {
    method readKey (line 163) | func (ejp *extJSONParser) readKey() (string, Type, error) {
    method readValue (line 227) | func (ejp *extJSONParser) readValue(t Type) (*extJSONValue, error) {
    method readObject (line 484) | func (ejp *extJSONParser) readObject(numKeys int, started bool) ([]str...
    method advanceState (line 528) | func (ejp *extJSONParser) advanceState() {
    method validateToken (line 678) | func (ejp *extJSONParser) validateToken(jtt jsonTokenType) bool {
    method ensureExtValueType (line 703) | func (ejp *extJSONParser) ensureExtValueType(t Type) bool {
    method pushMode (line 716) | func (ejp *extJSONParser) pushMode(m jsonParseMode) {
    method popMode (line 720) | func (ejp *extJSONParser) popMode() jsonParseMode {
    method peekMode (line 732) | func (ejp *extJSONParser) peekMode() jsonParseMode {
  function newExtJSONParser (line 77) | func newExtJSONParser(r io.Reader, canonicalOnly bool) *extJSONParser {
  function extendJSONToken (line 741) | func extendJSONToken(jt *jsonToken) *extJSONValue {
  function ensureColon (line 764) | func ensureColon(s jsonParseState, key string) error {
  function invalidRequestError (line 772) | func invalidRequestError(s string) error {
  function invalidJSONError (line 776) | func invalidJSONError(expected string) error {
  function invalidJSONErrorForType (line 780) | func invalidJSONErrorForType(expected string, t Type) error {
  function unexpectedTokenError (line 784) | func unexpectedTokenError(jt *jsonToken) error {
  function nestingDepthError (line 801) | func nestingDepthError(p, depth int) error {

FILE: bson/extjson_parser_test.go
  type expectedErrorFunc (line 28) | type expectedErrorFunc
  type peekTypeTestCase (line 30) | type peekTypeTestCase struct
  type readKeyValueTestCase (line 37) | type readKeyValueTestCase struct
  function expectNoError (line 48) | func expectNoError(t *testing.T, err error, desc string) {
  function expectError (line 56) | func expectError(t *testing.T, err error, desc string) {
  function expectSpecificError (line 64) | func expectSpecificError(expected error) expectedErrorFunc {
  function specificDiff (line 74) | func specificDiff(name string) func(t *testing.T, expected, actual any, ...
  function expectErrorNOOP (line 84) | func expectErrorNOOP(_ *testing.T, _ error, _ string) {
  function readKeyDiff (line 87) | func readKeyDiff(t *testing.T, eKey, aKey string, eTyp, aTyp Type, err e...
  function readValueDiff (line 93) | func readValueDiff(t *testing.T, eVal, aVal *extJSONValue, err error, er...
  function TestExtJSONParserPeekType (line 104) | func TestExtJSONParserPeekType(t *testing.T) {
  function TestExtJSONParserReadKeyReadValue (line 195) | func TestExtJSONParserReadKeyReadValue(t *testing.T) {
  type ejpExpectationTest (line 376) | type ejpExpectationTest
  type ejpTestCase (line 378) | type ejpTestCase struct
  function expectSingleValue (line 388) | func expectSingleValue(t *testing.T, p *extJSONParser, expectedKey strin...
  function expectMultipleValues (line 400) | func expectMultipleValues(t *testing.T, p *extJSONParser, expectedKey st...
  type ejpKeyTypValTriple (line 422) | type ejpKeyTypValTriple struct
  type ejpSubDocumentTestValue (line 428) | type ejpSubDocumentTestValue struct
  function expectSubDocument (line 436) | func expectSubDocument(t *testing.T, p *extJSONParser, expectedKey strin...
  function expectArray (line 472) | func expectArray(t *testing.T, p *extJSONParser, expectedKey string, _ T...
  function TestExtJSONParserAllTypes (line 496) | func TestExtJSONParserAllTypes(t *testing.T) {
  function TestExtJSONValue (line 777) | func TestExtJSONValue(t *testing.T) {

FILE: bson/extjson_prose_test.go
  function TestExtJSON (line 16) | func TestExtJSON(t *testing.T) {

FILE: bson/extjson_reader.go
  type ejvrState (line 15) | type ejvrState struct
  type extJSONValueReader (line 22) | type extJSONValueReader struct
    method reset (line 41) | func (ejvr *extJSONValueReader) reset(r io.Reader, canonicalOnly bool)...
    method advanceFrame (line 69) | func (ejvr *extJSONValueReader) advanceFrame() {
    method pushDocument (line 88) | func (ejvr *extJSONValueReader) pushDocument() {
    method pushCodeWithScope (line 95) | func (ejvr *extJSONValueReader) pushCodeWithScope() {
    method pushArray (line 101) | func (ejvr *extJSONValueReader) pushArray() {
    method push (line 107) | func (ejvr *extJSONValueReader) push(m mode, t Type) {
    method pop (line 114) | func (ejvr *extJSONValueReader) pop() {
    method skipObject (line 123) | func (ejvr *extJSONValueReader) skipObject() {
    method invalidTransitionErr (line 154) | func (ejvr *extJSONValueReader) invalidTransitionErr(destination mode,...
    method typeError (line 168) | func (ejvr *extJSONValueReader) typeError(t Type) error {
    method ensureElementValue (line 172) | func (ejvr *extJSONValueReader) ensureElementValue(t Type, destination...
    method Type (line 189) | func (ejvr *extJSONValueReader) Type() Type {
    method Skip (line 193) | func (ejvr *extJSONValueReader) Skip() error {
    method ReadArray (line 217) | func (ejvr *extJSONValueReader) ReadArray() (ArrayReader, error) {
    method ReadBinary (line 233) | func (ejvr *extJSONValueReader) ReadBinary() (b []byte, btype byte, er...
    method ReadBoolean (line 249) | func (ejvr *extJSONValueReader) ReadBoolean() (bool, error) {
    method ReadDocument (line 267) | func (ejvr *extJSONValueReader) ReadDocument() (DocumentReader, error) {
    method ReadCodeWithScope (line 283) | func (ejvr *extJSONValueReader) ReadCodeWithScope() (code string, dr D...
    method ReadDBPointer (line 299) | func (ejvr *extJSONValueReader) ReadDBPointer() (ns string, oid Object...
    method ReadDateTime (line 315) | func (ejvr *extJSONValueReader) ReadDateTime() (int64, error) {
    method ReadDecimal128 (line 331) | func (ejvr *extJSONValueReader) ReadDecimal128() (Decimal128, error) {
    method ReadDouble (line 347) | func (ejvr *extJSONValueReader) ReadDouble() (float64, error) {
    method ReadInt32 (line 363) | func (ejvr *extJSONValueReader) ReadInt32() (int32, error) {
    method ReadInt64 (line 379) | func (ejvr *extJSONValueReader) ReadInt64() (int64, error) {
    method ReadJavascript (line 395) | func (ejvr *extJSONValueReader) ReadJavascript() (code string, err err...
    method ReadMaxKey (line 411) | func (ejvr *extJSONValueReader) ReadMaxKey() error {
    method ReadMinKey (line 427) | func (ejvr *extJSONValueReader) ReadMinKey() error {
    method ReadNull (line 443) | func (ejvr *extJSONValueReader) ReadNull() error {
    method ReadObjectID (line 461) | func (ejvr *extJSONValueReader) ReadObjectID() (ObjectID, error) {
    method ReadRegex (line 477) | func (ejvr *extJSONValueReader) ReadRegex() (pattern string, options s...
    method ReadString (line 493) | func (ejvr *extJSONValueReader) ReadString() (string, error) {
    method ReadSymbol (line 511) | func (ejvr *extJSONValueReader) ReadSymbol() (symbol string, err error) {
    method ReadTimestamp (line 527) | func (ejvr *extJSONValueReader) ReadTimestamp() (t uint32, i uint32, e...
    method ReadUndefined (line 543) | func (ejvr *extJSONValueReader) ReadUndefined() error {
    method ReadElement (line 559) | func (ejvr *extJSONValueReader) ReadElement() (string, ValueReader, er...
    method ReadValue (line 586) | func (ejvr *extJSONValueReader) ReadValue() (ValueReader, error) {
  function NewExtJSONValueReader (line 32) | func NewExtJSONValueReader(r io.Reader, canonicalOnly bool) (ValueReader...
  function newExtJSONValueReader (line 36) | func newExtJSONValueReader(r io.Reader, canonicalOnly bool) (*extJSONVal...

FILE: bson/extjson_reader_test.go
  function TestExtJSONReader (line 20) | func TestExtJSONReader(t *testing.T) {
  function TestReadMultipleTopLevelDocuments (line 52) | func TestReadMultipleTopLevelDocuments(t *testing.T) {
  function readAllDocuments (line 125) | func readAllDocuments(vr ValueReader) ([][]byte, error) {

FILE: bson/extjson_wrappers.go
  function wrapperKeyBSONType (line 18) | func wrapperKeyBSONType(key string) Type {
  method parseBinary (line 57) | func (ejv *extJSONValue) parseBinary() (b []byte, subType byte, err erro...
  method parseDBPointer (line 118) | func (ejv *extJSONValue) parseDBPointer() (ns string, oid ObjectID, err ...
  constant rfc3339Milli (line 174) | rfc3339Milli = "2006-01-02T15:04:05.999Z07:00"
  method parseDateTime (line 179) | func (ejv *extJSONValue) parseDateTime() (int64, error) {
  function parseDatetimeString (line 194) | func parseDatetimeString(data string) (int64, error) {
  function parseDatetimeObject (line 211) | func parseDatetimeObject(data *extJSONObject) (d int64, err error) {
  method parseDecimal128 (line 244) | func (ejv *extJSONValue) parseDecimal128() (Decimal128, error) {
  method parseDouble (line 257) | func (ejv *extJSONValue) parseDouble() (float64, error) {
  method parseInt32 (line 283) | func (ejv *extJSONValue) parseInt32() (int32, error) {
  method parseInt64 (line 304) | func (ejv *extJSONValue) parseInt64() (int64, error) {
  method parseJavascript (line 321) | func (ejv *extJSONValue) parseJavascript() (code string, err error) {
  method parseMinMaxKey (line 329) | func (ejv *extJSONValue) parseMinMaxKey(minmax string) error {
  method parseObjectID (line 341) | func (ejv *extJSONValue) parseObjectID() (ObjectID, error) {
  method parseRegex (line 349) | func (ejv *extJSONValue) parseRegex() (pattern, options string, err erro...
  method parseSymbol (line 400) | func (ejv *extJSONValue) parseSymbol() (string, error) {
  method parseTimestamp (line 408) | func (ejv *extJSONValue) parseTimestamp() (t, i uint32, err error) {
  method parseUndefined (line 475) | func (ejv *extJSONValue) parseUndefined() error {

FILE: bson/extjson_writer.go
  type ejvwState (line 22) | type ejvwState struct
  type extJSONValueWriter (line 26) | type extJSONValueWriter struct
    method reset (line 71) | func (ejvw *extJSONValueWriter) reset(buf []byte, canonical, escapeHTM...
    method advanceFrame (line 85) | func (ejvw *extJSONValueWriter) advanceFrame() {
    method push (line 99) | func (ejvw *extJSONValueWriter) push(m mode) {
    method pop (line 105) | func (ejvw *extJSONValueWriter) pop() {
    method invalidTransitionErr (line 114) | func (ejvw *extJSONValueWriter) invalidTransitionErr(destination mode,...
    method ensureElementValue (line 128) | func (ejvw *extJSONValueWriter) ensureElementValue(destination mode, c...
    method writeExtendedSingleValue (line 142) | func (ejvw *extJSONValueWriter) writeExtendedSingleValue(key string, v...
    method WriteArray (line 153) | func (ejvw *extJSONValueWriter) WriteArray() (ArrayWriter, error) {
    method WriteBinary (line 164) | func (ejvw *extJSONValueWriter) WriteBinary(b []byte) error {
    method WriteBinaryWithSubtype (line 168) | func (ejvw *extJSONValueWriter) WriteBinaryWithSubtype(b []byte, btype...
    method WriteBoolean (line 184) | func (ejvw *extJSONValueWriter) WriteBoolean(b bool) error {
    method WriteCodeWithScope (line 196) | func (ejvw *extJSONValueWriter) WriteCodeWithScope(code string) (Docum...
    method WriteDBPointer (line 212) | func (ejvw *extJSONValueWriter) WriteDBPointer(ns string, oid ObjectID...
    method WriteDateTime (line 230) | func (ejvw *extJSONValueWriter) WriteDateTime(dt int64) error {
    method WriteDecimal128 (line 250) | func (ejvw *extJSONValueWriter) WriteDecimal128(d Decimal128) error {
    method WriteDocument (line 262) | func (ejvw *extJSONValueWriter) WriteDocument() (DocumentWriter, error) {
    method WriteDouble (line 277) | func (ejvw *extJSONValueWriter) WriteDouble(f float64) error {
    method WriteInt32 (line 304) | func (ejvw *extJSONValueWriter) WriteInt32(i int32) error {
    method WriteInt64 (line 323) | func (ejvw *extJSONValueWriter) WriteInt64(i int64) error {
    method WriteJavascript (line 342) | func (ejvw *extJSONValueWriter) WriteJavascript(code string) error {
    method WriteMaxKey (line 357) | func (ejvw *extJSONValueWriter) WriteMaxKey() error {
    method WriteMinKey (line 369) | func (ejvw *extJSONValueWriter) WriteMinKey() error {
    method WriteNull (line 381) | func (ejvw *extJSONValueWriter) WriteNull() error {
    method WriteObjectID (line 393) | func (ejvw *extJSONValueWriter) WriteObjectID(oid ObjectID) error {
    method WriteRegex (line 405) | func (ejvw *extJSONValueWriter) WriteRegex(pattern string, options str...
    method WriteString (line 424) | func (ejvw *extJSONValueWriter) WriteString(s string) error {
    method WriteSymbol (line 439) | func (ejvw *extJSONValueWriter) WriteSymbol(symbol string) error {
    method WriteTimestamp (line 454) | func (ejvw *extJSONValueWriter) WriteTimestamp(t uint32, i uint32) err...
    method WriteUndefined (line 472) | func (ejvw *extJSONValueWriter) WriteUndefined() error {
    method WriteDocumentElement (line 484) | func (ejvw *extJSONValueWriter) WriteDocumentElement(key string) (Valu...
    method WriteDocumentEnd (line 499) | func (ejvw *extJSONValueWriter) WriteDocumentEnd() error {
    method WriteArrayElement (line 538) | func (ejvw *extJSONValueWriter) WriteArrayElement() (ValueWriter, erro...
    method WriteArrayEnd (line 549) | func (ejvw *extJSONValueWriter) WriteArrayEnd() error {
  function NewExtJSONValueWriter (line 38) | func NewExtJSONValueWriter(w io.Writer, canonical, escapeHTML bool) Valu...
  function newExtJSONWriter (line 45) | func newExtJSONWriter(w io.Writer, canonical, escapeHTML, newlines bool)...
  function newExtJSONWriterFromSlice (line 59) | func newExtJSONWriterFromSlice(buf []byte, canonical, escapeHTML bool) *...
  function formatDouble (line 569) | func formatDouble(f float64) string {
  function writeStringWithEscapes (line 592) | func writeStringWithEscapes(s string, buf *bytes.Buffer, escapeHTML bool) {
  type sortableString (line 672) | type sortableString
    method Len (line 674) | func (ss sortableString) Len() int {
    method Less (line 678) | func (ss sortableString) Less(i, j int) bool {
    method Swap (line 682) | func (ss sortableString) Swap(i, j int) {
  function sortStringAlphebeticAscending (line 686) | func sortStringAlphebeticAscending(s string) string {

FILE: bson/extjson_writer_test.go
  function TestExtJSONValueWriter (line 19) | func TestExtJSONValueWriter(t *testing.T) {

FILE: bson/fuzz_test.go
  function FuzzDecode (line 18) | func FuzzDecode(f *testing.F) {

FILE: bson/json_scanner.go
  type jsonTokenType (line 20) | type jsonTokenType
  constant jttBeginObject (line 23) | jttBeginObject jsonTokenType = iota
  constant jttEndObject (line 24) | jttEndObject
  constant jttBeginArray (line 25) | jttBeginArray
  constant jttEndArray (line 26) | jttEndArray
  constant jttColon (line 27) | jttColon
  constant jttComma (line 28) | jttComma
  constant jttInt32 (line 29) | jttInt32
  constant jttInt64 (line 30) | jttInt64
  constant jttDouble (line 31) | jttDouble
  constant jttString (line 32) | jttString
  constant jttBool (line 33) | jttBool
  constant jttNull (line 34) | jttNull
  constant jttEOF (line 35) | jttEOF
  type jsonToken (line 38) | type jsonToken struct
  type jsonScanner (line 44) | type jsonScanner struct
    method nextToken (line 53) | func (js *jsonScanner) nextToken() (*jsonToken, error) {
    method readNextByte (line 100) | func (js *jsonScanner) readNextByte() (byte, error) {
    method readNNextBytes (line 115) | func (js *jsonScanner) readNNextBytes(dst []byte, n, offset int) error {
    method readIntoBuf (line 129) | func (js *jsonScanner) readIntoBuf() error {
    method scanString (line 191) | func (js *jsonScanner) scanString() (*jsonToken, error) {
    method scanLiteral (line 315) | func (js *jsonScanner) scanLiteral(first byte) (*jsonToken, error) {
    method scanNumber (line 365) | func (js *jsonScanner) scanNumber(first byte) (*jsonToken, error) {
  function isWhiteSpace (line 153) | func isWhiteSpace(c byte) bool {
  function isDigit (line 157) | func isDigit(c byte) bool {
  function isValueTerminator (line 161) | func isValueTerminator(c byte) bool {
  function getu4 (line 169) | func getu4(s []byte) rune {
  type numberScanState (line 349) | type numberScanState
  constant nssSawLeadingMinus (line 352) | nssSawLeadingMinus numberScanState = iota
  constant nssSawLeadingZero (line 353) | nssSawLeadingZero
  constant nssSawIntegerDigits (line 354) | nssSawIntegerDigits
  constant nssSawDecimalPoint (line 355) | nssSawDecimalPoint
  constant nssSawFractionDigits (line 356) | nssSawFractionDigits
  constant nssSawExponentLetter (line 357) | nssSawExponentLetter
  constant nssSawExponentSign (line 358) | nssSawExponentSign
  constant nssSawExponentDigits (line 359) | nssSawExponentDigits
  constant nssDone (line 360) | nssDone
  constant nssInvalid (line 361) | nssInvalid

FILE: bson/json_scanner_test.go
  function jttDiff (line 18) | func jttDiff(t *testing.T, expected, actual jsonTokenType, desc string) {
  function jtvDiff (line 26) | func jtvDiff(t *testing.T, expected, actual any, desc string) {
  function expectNilToken (line 34) | func expectNilToken(t *testing.T, v *jsonToken, desc string) {
  type jsonScannerTestCase (line 42) | type jsonScannerTestCase struct
  constant longKey (line 49) | longKey = "abcdefghijklmnopqrstuvwxyz" + "abcdefghijklmnopqrstuvwxyz" +
  function TestJsonScannerValidInputs (line 60) | func TestJsonScannerValidInputs(t *testing.T) {
  function TestJsonScannerInvalidInputs (line 358) | func TestJsonScannerInvalidInputs(t *testing.T) {

FILE: bson/map_codec.go
  type mapCodec (line 18) | type mapCodec struct
    method EncodeValue (line 49) | func (mc *mapCodec) EncodeValue(ec EncodeContext, vw ValueWriter, val ...
    method encodeMapElements (line 81) | func (mc *mapCodec) encodeMapElements(ec EncodeContext, dw DocumentWri...
    method DecodeValue (line 127) | func (mc *mapCodec) DecodeValue(dc DecodeContext, vr ValueReader, val ...
    method encodeKey (line 196) | func (mc *mapCodec) encodeKey(val reflect.Value, encodeKeysWithStringe...
    method decodeKey (line 244) | func (mc *mapCodec) decodeKey(key string, keyType reflect.Type) (refle...
  type KeyMarshaler (line 34) | type KeyMarshaler interface
  type KeyUnmarshaler (line 44) | type KeyUnmarshaler interface
  function clearMap (line 189) | func clearMap(m reflect.Value) {

FILE: bson/marshal.go
  constant defaultDstCap (line 15) | defaultDstCap = 256
  type Marshaler (line 29) | type Marshaler interface
  type ValueMarshaler (line 40) | type ValueMarshaler interface
  function Marshal (line 57) | func Marshal(val any) ([]byte, error) {
  function MarshalValue (line 97) | func MarshalValue(val any) (Type, []byte, error) {
  function MarshalExtJSON (line 146) | func MarshalExtJSON(val any, canonical, escapeHTML bool) ([]byte, error) {
  function IndentExtJSON (line 172) | func IndentExtJSON(dst *bytes.Buffer, src []byte, prefix, indent string)...
  function MarshalExtJSONIndent (line 178) | func MarshalExtJSONIndent(val any, canonical, escapeHTML bool, prefix, i...

FILE: bson/marshal_test.go
  function TestMarshalWithRegistry (line 24) | func TestMarshalWithRegistry(t *testing.T) {
  function TestMarshalWithContext (line 48) | func TestMarshalWithContext(t *testing.T) {
  function TestMarshalExtJSON (line 73) | func TestMarshalExtJSON(t *testing.T) {
  function TestMarshal_roundtripFromBytes (line 87) | func TestMarshal_roundtripFromBytes(t *testing.T) {
  function TestMarshal_roundtripFromDoc (line 128) | func TestMarshal_roundtripFromDoc(t *testing.T) {
  function TestCachingEncodersNotSharedAcrossRegistries (line 146) | func TestCachingEncodersNotSharedAcrossRegistries(t *testing.T) {
  function TestNullBytes (line 205) | func TestNullBytes(t *testing.T) {
  function TestMarshalExtJSONIndent (line 244) | func TestMarshalExtJSONIndent(t *testing.T) {
  function TestMarshalConcurrently (line 314) | func TestMarshalConcurrently(t *testing.T) {

FILE: bson/marshal_value_cases_test.go
  type marshalValueInterfaceInner (line 175) | type marshalValueInterfaceInner struct
    method Read (line 181) | func (marshalValueInterfaceInner) Read([]byte) (int, error) {
  type marshalValueInterfaceOuter (line 186) | type marshalValueInterfaceOuter struct
  type marshalValueMarshaler (line 191) | type marshalValueMarshaler struct
    method MarshalBSONValue (line 197) | func (mvi marshalValueMarshaler) MarshalBSONValue() (byte, []byte, err...
    method UnmarshalBSONValue (line 203) | func (mvi *marshalValueMarshaler) UnmarshalBSONValue(_ byte, b []byte)...
  type marshalValueStruct (line 209) | type marshalValueStruct struct
  type marshalValueTestCase (line 213) | type marshalValueTestCase struct

FILE: bson/marshal_value_test.go
  function TestMarshalValue (line 19) | func TestMarshalValue(t *testing.T) {
  function compareMarshalValueResults (line 70) | func compareMarshalValueResults(t *testing.T, tc marshalValueTestCase, g...
  function BenchmarkSliceCodecMarshal (line 78) | func BenchmarkSliceCodecMarshal(b *testing.B) {

FILE: bson/marshaling_cases_test.go
  type marshalingTestCase (line 9) | type marshalingTestCase struct

FILE: bson/mgoregistry.go
  function NewMgoRegistry (line 26) | func NewMgoRegistry() *Registry {
  function NewRespectNilValuesMgoRegistry (line 66) | func NewRespectNilValuesMgoRegistry() *Registry {
  function mgoStringDecodeValue (line 79) | func mgoStringDecodeValue(dc DecodeContext, vr ValueReader, val reflect....
  type setter (line 123) | type setter interface
  type getter (line 133) | type getter interface
  function setterDecodeValue (line 138) | func setterDecodeValue(_ DecodeContext, vr ValueReader, val reflect.Valu...
  function getterEncodeValue (line 176) | func getterEncodeValue(ec EncodeContext, vw ValueWriter, val reflect.Val...

FILE: bson/mgoregistry_test.go
  function wrapInDoc (line 29) | func wrapInDoc(data string) string {
  function makeZeroDoc (line 36) | func makeZeroDoc(value any) (zero any) {
  function unmarshalWithRegistry (line 54) | func unmarshalWithRegistry(t *testing.T, r *Registry, data []byte, val a...
  function testUnmarshal (line 62) | func testUnmarshal(t *testing.T, data string, obj any) {
  type testItemType (line 69) | type testItemType struct
  function TestMarshalSampleItems (line 97) | func TestMarshalSampleItems(t *testing.T) {
  function TestUnmarshalSampleItems (line 114) | func TestUnmarshalSampleItems(t *testing.T) {
  function TestMarshalAllItems (line 226) | func TestMarshalAllItems(t *testing.T) {
  function TestUnmarshalAllItems (line 243) | func TestUnmarshalAllItems(t *testing.T) {
  function TestUnmarshalRawAllItems (line 254) | func TestUnmarshalRawAllItems(t *testing.T) {
  function TestUnmarshalRawIncompatible (line 273) | func TestUnmarshalRawIncompatible(t *testing.T) {
  function TestUnmarshalZeroesStruct (line 279) | func TestUnmarshalZeroesStruct(t *testing.T) {
  function TestUnmarshalZeroesMap (line 294) | func TestUnmarshalZeroesMap(t *testing.T) {
  function TestUnmarshalNonNilInterface (line 309) | func TestUnmarshalNonNilInterface(t *testing.T) {
  function TestPtrInline (line 324) | func TestPtrInline(t *testing.T) {
  function TestOneWayMarshalItems (line 473) | func TestOneWayMarshalItems(t *testing.T) {
  type specSample1 (line 494) | type specSample1 struct
  type specSample2 (line 498) | type specSample2 struct
  function TestMarshalStructSampleItems (line 514) | func TestMarshalStructSampleItems(t *testing.T) {
  function TestUnmarshalStructSampleItems (line 530) | func TestUnmarshalStructSampleItems(t *testing.T) {
  function Test64bitInt (line 538) | func Test64bitInt(t *testing.T) {
  type prefixPtr (line 561) | type prefixPtr
    method GetBSON (line 565) | func (t *prefixPtr) GetBSON() (any, error) {
    method SetBSON (line 572) | func (t *prefixPtr) SetBSON(raw RawValue) error {
  type prefixVal (line 562) | type prefixVal
    method GetBSON (line 595) | func (t prefixVal) GetBSON() (any, error) {
    method SetBSON (line 599) | func (t *prefixVal) SetBSON(raw RawValue) error {
  function TestMarshalStructItems (line 718) | func TestMarshalStructItems(t *testing.T) {
  function TestUnmarshalStructItems (line 734) | func TestUnmarshalStructItems(t *testing.T) {
  function TestUnmarshalRawStructItems (line 742) | func TestUnmarshalRawStructItems(t *testing.T) {
  type dOnIface (line 765) | type dOnIface struct
  type ignoreField (line 769) | type ignoreField struct
  function TestMarshalOneWayItems (line 802) | func TestMarshalOneWayItems(t *testing.T) {
  type intAlias (line 821) | type intAlias
  function TestUnmarshalOneWayItems (line 875) | func TestUnmarshalOneWayItems(t *testing.T) {
  function TestUnmarshalNilInStruct (line 883) | func TestUnmarshalNilInStruct(t *testing.T) {
  type structWithDupKeys (line 897) | type structWithDupKeys struct
  function TestMarshalErrorItems (line 949) | func TestMarshalErrorItems(t *testing.T) {
  type unmarshalErrorType (line 969) | type unmarshalErrorType struct
  function TestUnmarshalErrorItems (line 1003) | func TestUnmarshalErrorItems(t *testing.T) {
  type unmarshalRawErrorType (line 1022) | type unmarshalRawErrorType struct
  function TestUnmarshalRawErrorItems (line 1047) | func TestUnmarshalRawErrorItems(t *testing.T) {
  function TestUnmarshalMapDocumentTooShort (line 1085) | func TestUnmarshalMapDocumentTooShort(t *testing.T) {
  type setterType (line 1102) | type setterType struct
    method SetBSON (line 1106) | func (o *setterType) SetBSON(raw RawValue) error {
  type ptrSetterDoc (line 1129) | type ptrSetterDoc struct
  type valSetterDoc (line 1133) | type valSetterDoc struct
  function TestUnmarshalAllItemsWithPtrSetter (line 1137) | func TestUnmarshalAllItemsWithPtrSetter(t *testing.T) {
  function TestUnmarshalWholeDocumentWithSetter (line 1174) | func TestUnmarshalWholeDocumentWithSetter(t *testing.T) {
  function TestUnmarshalSetterErrors (line 1181) | func TestUnmarshalSetterErrors(t *testing.T) {
  function TestUnmarshalSetterErrSetZero (line 1205) | func TestUnmarshalSetterErrSetZero(t *testing.T) {
  type typeWithGetter (line 1228) | type typeWithGetter struct
    method GetBSON (line 1233) | func (t *typeWithGetter) GetBSON() (any, error) {
  type docWithGetterField (line 1240) | type docWithGetterField struct
  function TestMarshalAllItemsWithGetter (line 1244) | func TestMarshalAllItemsWithGetter(t *testing.T) {
  function TestMarshalWholeDocumentWithGetter (line 1266) | func TestMarshalWholeDocumentWithGetter(t *testing.T) {
  function TestGetterErrors (line 1278) | func TestGetterErrors(t *testing.T) {
  type intGetter (line 1301) | type intGetter
    method GetBSON (line 1303) | func (t intGetter) GetBSON() (any, error) {
  type typeWithIntGetter (line 1307) | type typeWithIntGetter struct
  function TestMarshalShortWithGetter (line 1311) | func TestMarshalShortWithGetter(t *testing.T) {
  function TestMarshalWithGetterNil (line 1325) | func TestMarshalWithGetterNil(t *testing.T) {
  type crossTypeItem (line 1343) | type crossTypeItem struct
  type condStr (line 1348) | type condStr struct
  type condStrNS (line 1351) | type condStrNS struct
  type condBool (line 1354) | type condBool struct
  type condInt (line 1357) | type condInt struct
  type condUInt (line 1360) | type condUInt struct
  type condFloat (line 1363) | type condFloat struct
  type condIface (line 1366) | type condIface struct
  type condPtr (line 1369) | type condPtr struct
  type condSlice (line 1372) | type condSlice struct
  type condMap (line 1375) | type condMap struct
  type namedCondStr (line 1378) | type namedCondStr struct
  type condTime (line 1381) | type condTime struct
  type condStruct (line 1384) | type condStruct struct
  type shortInt (line 1388) | type shortInt struct
  type shortUint (line 1391) | type shortUint struct
  type shortIface (line 1394) | type shortIface struct
  type shortPtr (line 1397) | type shortPtr struct
  type shortNonEmptyInt (line 1400) | type shortNonEmptyInt struct
  type inlineInt (line 1404) | type inlineInt struct
  type inlineDupName (line 1407) | type inlineDupName struct
  type inlineMap (line 1411) | type inlineMap struct
  type inlineMapInt (line 1415) | type inlineMapInt struct
  type inlineMapMyM (line 1419) | type inlineMapMyM struct
  type inlineDupMap (line 1423) | type inlineDupMap struct
  type inlineBadKeyMap (line 1427) | type inlineBadKeyMap struct
  type inlineUnexported (line 1430) | type inlineUnexported struct
  type MStruct (line 1434) | type MStruct struct
  type InlinePtrStruct (line 1437) | type InlinePtrStruct struct
  type inlinePtrPtrStruct (line 1441) | type inlinePtrPtrStruct struct
  type unexported (line 1445) | type unexported struct
  type getterSetterD (line 1449) | type getterSetterD
    method GetBSON (line 1451) | func (s getterSetterD) GetBSON() (any, error) {
    method SetBSON (line 1458) | func (s *getterSetterD) SetBSON(raw RawValue) error {
  type getterSetterInt (line 1478) | type getterSetterInt
    method GetBSON (line 1480) | func (i getterSetterInt) GetBSON() (any, error) {
    method SetBSON (line 1484) | func (i *getterSetterInt) SetBSON(raw RawValue) error {
  type ifaceType (line 1503) | type ifaceType interface
  type ifaceSlice (line 1507) | type ifaceSlice
    method SetBSON (line 1509) | func (s *ifaceSlice) SetBSON(raw RawValue) error {
    method GetBSON (line 1525) | func (s ifaceSlice) GetBSON() (any, error) {
  type MyString (line 1530) | type MyString
  type MyBytes (line 1531) | type MyBytes
  type MyBool (line 1532) | type MyBool
  type MyD (line 1533) | type MyD
  type MyRawD (line 1534) | type MyRawD
  type MyM (line 1535) | type MyM
  function parseURL (line 1549) | func parseURL(s string) *url.URL {
  function testCrossPair (line 1785) | func testCrossPair(t *testing.T, dump any, load any) {
  function TestTwoWayCrossPairs (line 1799) | func TestTwoWayCrossPairs(t *testing.T) {
  function TestOneWayCrossPairs (line 1808) | func TestOneWayCrossPairs(t *testing.T) {
  type jsonType (line 1819) | type jsonType struct
  function objectIDHex (line 1823) | func objectIDHex(s string) ObjectID {
  function TestObjectIdJSONMarshaling (line 1861) | func TestObjectIdJSONMarshaling(t *testing.T) {
  function TestMarshalNotRespectNil (line 1890) | func TestMarshalNotRespectNil(t *testing.T) {
  function TestMarshalRespectNil (line 1919) | func TestMarshalRespectNil(t *testing.T) {
  type Inner (line 1983) | type Inner struct
  type InlineLoop (line 1987) | type InlineLoop struct
  function TestInlineWithPointerToSelf (line 1993) | func TestInlineWithPointerToSelf(t *testing.T) {

FILE: bson/mode.go
  type mode (line 13) | type mode
    method String (line 26) | func (m mode) String() string {
  constant _ (line 16) | _ mode = iota
  constant mTopLevel (line 17) | mTopLevel
  constant mDocument (line 18) | mDocument
  constant mArray (line 19) | mArray
  constant mValue (line 20) | mValue
  constant mElement (line 21) | mElement
  constant mCodeWithScope (line 22) | mCodeWithScope
  constant mSpacer (line 23) | mSpacer
  type TransitionError (line 53) | type TransitionError struct
    method Error (line 62) | func (te TransitionError) Error() string {

FILE: bson/objectid.go
  type ObjectID (line 29) | type ObjectID
    method Timestamp (line 61) | func (id ObjectID) Timestamp() time.Time {
    method Hex (line 67) | func (id ObjectID) Hex() string {
    method String (line 73) | func (id ObjectID) String() string {
    method IsZero (line 78) | func (id ObjectID) IsZero() bool {
    method MarshalText (line 100) | func (id ObjectID) MarshalText() ([]byte, error) {
    method UnmarshalText (line 116) | func (id *ObjectID) UnmarshalText(b []byte) error {
    method MarshalJSON (line 134) | func (id ObjectID) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 152) | func (id *ObjectID) UnmarshalJSON(b []byte) error {
  function NewObjectID (line 45) | func NewObjectID() ObjectID {
  function NewObjectIDFromTimestamp (line 50) | func NewObjectIDFromTimestamp(timestamp time.Time) ObjectID {
  function ObjectIDFromHex (line 84) | func ObjectIDFromHex(s string) (ObjectID, error) {
  function processUniqueBytes (line 187) | func processUniqueBytes() [5]byte {
  function readRandomUint32 (line 197) | func readRandomUint32() uint32 {
  function putUint24 (line 207) | func putUint24(b []byte, v uint32) {

FILE: bson/objectid_test.go
  function TestString (line 21) | func TestString(t *testing.T) {
  function BenchmarkHex (line 26) | func BenchmarkHex(b *testing.B) {
  function BenchmarkObjectIDFromHex (line 33) | func BenchmarkObjectIDFromHex(b *testing.B) {
  function BenchmarkNewObjectIDFromTimestamp (line 40) | func BenchmarkNewObjectIDFromTimestamp(b *testing.B) {
  function BenchmarkObjectIDJSON (line 47) | func BenchmarkObjectIDJSON(b *testing.B) {
  function TestFromHex_RoundTrip (line 93) | func TestFromHex_RoundTrip(t *testing.T) {
  function TestFromHex_InvalidHex (line 101) | func TestFromHex_InvalidHex(t *testing.T) {
  function TestFromHex_WrongLength (line 106) | func TestFromHex_WrongLength(t *testing.T) {
  function TestTimeStamp (line 111) | func TestTimeStamp(t *testing.T) {
  function TestCreateFromTime (line 143) | func TestCreateFromTime(t *testing.T) {
  function TestGenerationTime (line 178) | func TestGenerationTime(t *testing.T) {
  function TestCounterOverflow (line 210) | func TestCounterOverflow(t *testing.T) {
  function TestObjectID_MarshalJSONMap (line 216) | func TestObjectID_MarshalJSONMap(t *testing.T) {
  function TestObjectID_UnmarshalJSONMap (line 232) | func TestObjectID_UnmarshalJSONMap(t *testing.T) {
  function TestObjectID_UnmarshalJSON (line 248) | func TestObjectID_UnmarshalJSON(t *testing.T) {
  function TestObjectID_MarshalText (line 278) | func TestObjectID_MarshalText(t *testing.T) {
  function TestObjectID_UnmarshalText (line 287) | func TestObjectID_UnmarshalText(t *testing.T) {

FILE: bson/pointer_codec.go
  type pointerCodec (line 19) | type pointerCodec struct
    method EncodeValue (line 26) | func (pc *pointerCodec) EncodeValue(ec EncodeContext, vw ValueWriter, ...
    method DecodeValue (line 56) | func (pc *pointerCodec) DecodeValue(dc DecodeContext, vr ValueReader, ...

FILE: bson/primitive.go
  type Zeroer (line 23) | type Zeroer interface
  type Binary (line 31) | type Binary struct
    method Equal (line 37) | func (bp Binary) Equal(bp2 Binary) bool {
    method IsZero (line 45) | func (bp Binary) IsZero() bool {
  type Undefined (line 50) | type Undefined struct
  type DateTime (line 53) | type DateTime
    method MarshalJSON (line 61) | func (d DateTime) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 66) | func (d *DateTime) UnmarshalJSON(data []byte) error {
    method Time (line 81) | func (d DateTime) Time() time.Time {
  function NewDateTimeFromTime (line 86) | func NewDateTimeFromTime(t time.Time) DateTime {
  type Null (line 91) | type Null struct
  type Regex (line 94) | type Regex struct
    method String (line 99) | func (rp Regex) String() string {
    method Equal (line 104) | func (rp Regex) Equal(rp2 Regex) bool {
    method IsZero (line 109) | func (rp Regex) IsZero() bool {
  type DBPointer (line 114) | type DBPointer struct
    method String (line 119) | func (d DBPointer) String() string {
    method Equal (line 124) | func (d DBPointer) Equal(d2 DBPointer) bool {
    method IsZero (line 129) | func (d DBPointer) IsZero() bool {
  type JavaScript (line 134) | type JavaScript
  type Symbol (line 137) | type Symbol
  type CodeWithScope (line 140) | type CodeWithScope struct
    method String (line 145) | func (cws CodeWithScope) String() string {
  type Timestamp (line 150) | type Timestamp struct
    method After (line 156) | func (tp Timestamp) After(tp2 Timestamp) bool {
    method Before (line 161) | func (tp Timestamp) Before(tp2 Timestamp) bool {
    method Equal (line 166) | func (tp Timestamp) Equal(tp2 Timestamp) bool {
    method IsZero (line 171) | func (tp Timestamp) IsZero() bool {
    method Compare (line 177) | func (tp Timestamp) Compare(tp2 Timestamp) int {
  type MinKey (line 189) | type MinKey struct
  type MaxKey (line 192) | type MaxKey struct
  type D (line 200) | type D
    method String (line 202) | func (d D) String() string {
    method MarshalJSON (line 211) | func (d D) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 238) | func (d *D) UnmarshalJSON(b []byte) error {
  type E (line 260) | type E struct
  type M (line 272) | type M
    method String (line 274) | func (m M) String() string {
  type A (line 287) | type A
  function jsonDecodeD (line 289) | func jsonDecodeD(dec *json.Decoder) (D, error) {
  function jsonDecodeSlice (line 331) | func jsonDecodeSlice(dec *json.Decoder) ([]any, error) {
  function tokenString (line 364) | func tokenString(t json.Token) string {

FILE: bson/primitive_codecs.go
  function registerPrimitiveCodecs (line 21) | func registerPrimitiveCodecs(reg *Registry) {
  function rawValueEncodeValue (line 32) | func rawValueEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Va...
  function rawValueDecodeValue (line 51) | func rawValueDecodeValue(_ DecodeContext, vr ValueReader, val reflect.Va...
  function rawEncodeValue (line 66) | func rawEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Value) ...
  function rawDecodeValue (line 77) | func rawDecodeValue(_ DecodeContext, vr ValueReader, val reflect.Value) ...

FILE: bson/primitive_codecs_test.go
  function bytesFromDoc (line 24) | func bytesFromDoc(doc any) []byte {
  function TestPrimitiveValueEncoders (line 32) | func TestPrimitiveValueEncoders(t *testing.T) {
  function TestPrimitiveValueDecoders (line 478) | func TestPrimitiveValueDecoders(t *testing.T) {
  type testValueMarshaler (line 1063) | type testValueMarshaler struct
    method MarshalBSONValue (line 1069) | func (tvm testValueMarshaler) MarshalBSONValue() (byte, []byte, error) {
  type testValueUnmarshaler (line 1073) | type testValueUnmarshaler struct
    method UnmarshalBSONValue (line 1079) | func (tvu *testValueUnmarshaler) UnmarshalBSONValue(t byte, val []byte...
    method Equal (line 1084) | func (tvu testValueUnmarshaler) Equal(tvu2 testValueUnmarshaler) bool {
  type noPrivateFields (line 1088) | type noPrivateFields struct
  function compareNoPrivateFields (line 1092) | func compareNoPrivateFields(npf1, npf2 noPrivateFields) bool {
  type zeroTest (line 1096) | type zeroTest struct
    method IsZero (line 1100) | func (z zeroTest) IsZero() bool { return z.reportZero }
  function compareZeroTest (line 1104) | func compareZeroTest(_, _ zeroTest) bool { return true }
  function compareDecimal128 (line 1106) | func compareDecimal128(d1, d2 Decimal128) bool {

FILE: bson/raw.go
  type Raw (line 23) | type Raw
    method Validate (line 34) | func (r Raw) Validate() (err error) { return bsoncore.Document(r).Vali...
    method Lookup (line 40) | func (r Raw) Lookup(key ...string) RawValue {
    method LookupErr (line 46) | func (r Raw) LookupErr(key ...string) (RawValue, error) {
    method Elements (line 54) | func (r Raw) Elements() ([]RawElement, error) {
    method Values (line 73) | func (r Raw) Values() ([]RawValue, error) {
    method Index (line 84) | func (r Raw) Index(index uint) RawElement { return RawElement(bsoncore...
    method IndexErr (line 87) | func (r Raw) IndexErr(index uint) (RawElement, error) {
    method String (line 93) | func (r Raw) String() string { return bsoncore.Document(r).String() }
  function ReadDocument (line 27) | func ReadDocument(r io.Reader) (Raw, error) {

FILE: bson/raw_array.go
  type RawArray (line 16) | type RawArray
    method Index (line 28) | func (a RawArray) Index(index uint) RawValue {
    method IndexErr (line 33) | func (a RawArray) IndexErr(index uint) (RawValue, error) {
    method DebugString (line 42) | func (a RawArray) DebugString() string {
    method String (line 48) | func (a RawArray) String() string {
    method Values (line 55) | func (a RawArray) Values() ([]RawValue, error) {
    method Validate (line 71) | func (a RawArray) Validate() error {
  function ReadArray (line 20) | func ReadArray(r io.Reader) (RawArray, error) {

FILE: bson/raw_array_test.go
  function TestReadArray (line 22) | func TestReadArray(t *testing.T) {
  function TestArray_Validate (line 96) | func TestArray_Validate(t *testing.T) {
  function TestArray_Index (line 212) | func TestArray_Index(t *testing.T) {
  function TestRawArray_Stringt (line 319) | func TestRawArray_Stringt(t *testing.T) {
  function TestRawArray_Values (line 409) | func TestRawArray_Values(t *testing.T) {

FILE: bson/raw_element.go
  type RawElement (line 14) | type RawElement
    method Key (line 18) | func (re RawElement) Key() string { return bsoncore.Element(re).Key() }
    method KeyErr (line 21) | func (re RawElement) KeyErr() (string, error) { return bsoncore.Elemen...
    method Value (line 25) | func (re RawElement) Value() RawValue { return convertFromCoreValue(bs...
    method ValueErr (line 28) | func (re RawElement) ValueErr() (RawValue, error) {
    method Validate (line 34) | func (re RawElement) Validate() error { return bsoncore.Element(re).Va...
    method String (line 37) | func (re RawElement) String() string {
    method DebugString (line 48) | func (re RawElement) DebugString() string { return bsoncore.Element(re...

FILE: bson/raw_test.go
  function ExampleRaw_Validate (line 24) | func ExampleRaw_Validate() {
  function BenchmarkRawValidate (line 33) | func BenchmarkRawValidate(b *testing.B) {
  function TestRaw (line 41) | func TestRaw(t *testing.T) {
  function BenchmarkRawString (line 368) | func BenchmarkRawString(b *testing.B) {
  function TestComplexDocuments_StringN (line 472) | func TestComplexDocuments_StringN(t *testing.T) {
  function createVoluminousDocument (line 496) | func createVoluminousDocument(numKeys int) D {
  function createLargeStringsDocument (line 505) | func createLargeStringsDocument(sizeMB int) D {
  function createMassiveArraysDocument (line 516) | func createMassiveArraysDocument(arraySize int) D {
  function createUniqueVoluminousDocument (line 531) | func createUniqueVoluminousDocument(t *testing.T, size int) bsoncore.Doc...
  function createLargeSingleDoc (line 552) | func createLargeSingleDoc(t *testing.T) bsoncore.Document {
  function createVoluminousArrayDocuments (line 574) | func createVoluminousArrayDocuments(t *testing.T, size int) bsoncore.Doc...

FILE: bson/raw_value.go
  type RawValue (line 29) | type RawValue struct
    method IsZero (line 38) | func (rv RawValue) IsZero() bool {
    method Unmarshal (line 46) | func (rv RawValue) Unmarshal(val any) error {
    method Equal (line 55) | func (rv RawValue) Equal(rv2 RawValue) bool {
    method UnmarshalWithRegistry (line 69) | func (rv RawValue) UnmarshalWithRegistry(r *Registry, val any) error {
    method UnmarshalWithContext (line 89) | func (rv RawValue) UnmarshalWithContext(dc *DecodeContext, val any) er...
    method Validate (line 116) | func (rv RawValue) Validate() error { return convertToCoreValue(rv).Va...
    method IsNumber (line 119) | func (rv RawValue) IsNumber() bool { return convertToCoreValue(rv).IsN...
    method String (line 123) | func (rv RawValue) String() string { return convertToCoreValue(rv).Str...
    method DebugString (line 127) | func (rv RawValue) DebugString() string { return convertToCoreValue(rv...
    method Double (line 131) | func (rv RawValue) Double() float64 { return convertToCoreValue(rv).Do...
    method DoubleOK (line 134) | func (rv RawValue) DoubleOK() (float64, bool) { return convertToCoreVa...
    method StringValue (line 141) | func (rv RawValue) StringValue() string { return convertToCoreValue(rv...
    method StringValueOK (line 145) | func (rv RawValue) StringValueOK() (string, bool) { return convertToCo...
    method Document (line 149) | func (rv RawValue) Document() Raw { return Raw(convertToCoreValue(rv)....
    method DocumentOK (line 153) | func (rv RawValue) DocumentOK() (Raw, bool) {
    method Array (line 160) | func (rv RawValue) Array() RawArray { return RawArray(convertToCoreVal...
    method ArrayOK (line 164) | func (rv RawValue) ArrayOK() (RawArray, bool) {
    method Binary (line 172) | func (rv RawValue) Binary() (subtype byte, data []byte) { return conve...
    method BinaryOK (line 176) | func (rv RawValue) BinaryOK() (subtype byte, data []byte, ok bool) {
    method ObjectID (line 182) | func (rv RawValue) ObjectID() ObjectID { return convertToCoreValue(rv)...
    method ObjectIDOK (line 186) | func (rv RawValue) ObjectIDOK() (ObjectID, bool) {
    method Boolean (line 192) | func (rv RawValue) Boolean() bool { return convertToCoreValue(rv).Bool...
    method BooleanOK (line 196) | func (rv RawValue) BooleanOK() (bool, bool) { return convertToCoreValu...
    method DateTime (line 200) | func (rv RawValue) DateTime() int64 { return convertToCoreValue(rv).Da...
    method DateTimeOK (line 204) | func (rv RawValue) DateTimeOK() (int64, bool) { return convertToCoreVa...
    method Time (line 208) | func (rv RawValue) Time() time.Time { return convertToCoreValue(rv).Ti...
    method TimeOK (line 212) | func (rv RawValue) TimeOK() (time.Time, bool) { return convertToCoreVa...
    method Regex (line 216) | func (rv RawValue) Regex() (pattern, options string) { return convertT...
    method RegexOK (line 220) | func (rv RawValue) RegexOK() (pattern, options string, ok bool) {
    method DBPointer (line 226) | func (rv RawValue) DBPointer() (string, ObjectID) {
    method DBPointerOK (line 232) | func (rv RawValue) DBPointerOK() (string, ObjectID, bool) {
    method JavaScript (line 238) | func (rv RawValue) JavaScript() string { return convertToCoreValue(rv)...
    method JavaScriptOK (line 242) | func (rv RawValue) JavaScriptOK() (string, bool) { return convertToCor...
    method Symbol (line 246) | func (rv RawValue) Symbol() string { return convertToCoreValue(rv).Sym...
    method SymbolOK (line 250) | func (rv RawValue) SymbolOK() (string, bool) { return convertToCoreVal...
    method CodeWithScope (line 254) | func (rv RawValue) CodeWithScope() (string, Raw) {
    method CodeWithScopeOK (line 261) | func (rv RawValue) CodeWithScopeOK() (string, Raw, bool) {
    method Int32 (line 268) | func (rv RawValue) Int32() int32 { return convertToCoreValue(rv).Int32...
    method Int32OK (line 272) | func (rv RawValue) Int32OK() (int32, bool) { return convertToCoreValue...
    method Timestamp (line 276) | func (rv RawValue) Timestamp() (t, i uint32) { return convertToCoreVal...
    method TimestampOK (line 280) | func (rv RawValue) TimestampOK() (t, i uint32, ok bool) { return conve...
    method Int64 (line 284) | func (rv RawValue) Int64() int64 { return convertToCoreValue(rv).Int64...
    method Int64OK (line 288) | func (rv RawValue) Int64OK() (int64, bool) { return convertToCoreValue...
    method AsInt64 (line 292) | func (rv RawValue) AsInt64() int64 { return convertToCoreValue(rv).AsI...
    method AsInt64OK (line 296) | func (rv RawValue) AsInt64OK() (int64, bool) { return convertToCoreVal...
    method AsFloat64 (line 300) | func (rv RawValue) AsFloat64() float64 { return convertToCoreValue(rv)...
    method AsFloat64OK (line 304) | func (rv RawValue) AsFloat64OK() (float64, bool) { return convertToCor...
    method Decimal128 (line 308) | func (rv RawValue) Decimal128() Decimal128 { return NewDecimal128(conv...
    method Decimal128OK (line 312) | func (rv RawValue) Decimal128OK() (Decimal128, bool) {
  function convertFromCoreValue (line 107) | func convertFromCoreValue(v bsoncore.Value) RawValue {
  function convertToCoreValue (line 111) | func convertToCoreValue(v RawValue) bsoncore.Value {

FILE: bson/raw_value_test.go
  function TestRawValue (line 19) | func TestRawValue(t *testing.T) {

FILE: bson/reader.go
  type ArrayReader (line 11) | type ArrayReader interface
  type DocumentReader (line 17) | type DocumentReader interface
  type ValueReader (line 24) | type ValueReader interface

FILE: bson/registry.go
  type errNoEncoder (line 21) | type errNoEncoder struct
    method Error (line 25) | func (ene errNoEncoder) Error() string {
  type errNoDecoder (line 33) | type errNoDecoder struct
    method Error (line 37) | func (end errNoDecoder) Error() string {
  type errNoTypeMapEntry (line 42) | type errNoTypeMapEntry struct
    method Error (line 46) | func (entme errNoTypeMapEntry) Error() string {
  type Registry (line 83) | type Registry struct
    method RegisterTypeEncoder (line 117) | func (r *Registry) RegisterTypeEncoder(valueType reflect.Type, enc Val...
    method RegisterTypeDecoder (line 131) | func (r *Registry) RegisterTypeDecoder(valueType reflect.Type, dec Val...
    method RegisterKindEncoder (line 147) | func (r *Registry) RegisterKindEncoder(kind reflect.Kind, enc ValueEnc...
    method RegisterKindDecoder (line 163) | func (r *Registry) RegisterKindDecoder(kind reflect.Kind, dec ValueDec...
    method RegisterInterfaceEncoder (line 173) | func (r *Registry) RegisterInterfaceEncoder(iface reflect.Type, enc Va...
    method RegisterInterfaceDecoder (line 196) | func (r *Registry) RegisterInterfaceDecoder(iface reflect.Type, dec Va...
    method RegisterTypeMapEntry (line 222) | func (r *Registry) RegisterTypeMapEntry(bt Type, rt reflect.Type) {
    method LookupEncoder (line 243) | func (r *Registry) LookupEncoder(valueType reflect.Type) (ValueEncoder...
    method storeTypeEncoder (line 266) | func (r *Registry) storeTypeEncoder(rt reflect.Type, enc ValueEncoder)...
    method lookupTypeEncoder (line 270) | func (r *Registry) lookupTypeEncoder(rt reflect.Type) (ValueEncoder, b...
    method lookupInterfaceEncoder (line 274) | func (r *Registry) lookupInterfaceEncoder(valueType reflect.Type, allo...
    method LookupDecoder (line 312) | func (r *Registry) LookupDecoder(valueType reflect.Type) (ValueDecoder...
    method lookupTypeDecoder (line 335) | func (r *Registry) lookupTypeDecoder(valueType reflect.Type) (ValueDec...
    method storeTypeDecoder (line 339) | func (r *Registry) storeTypeDecoder(typ reflect.Type, dec ValueDecoder...
    method lookupInterfaceDecoder (line 343) | func (r *Registry) lookupInterfaceDecoder(valueType reflect.Type, allo...
    method LookupTypeMapEntry (line 365) | func (r *Registry) LookupTypeMapEntry(bt Type) (reflect.Type, error) {
  function NewRegistry (line 94) | func NewRegistry() *Registry {
  type interfaceValueEncoder (line 373) | type interfaceValueEncoder struct
  type interfaceValueDecoder (line 378) | type interfaceValueDecoder struct

FILE: bson/registry_examples_test.go
  function ExampleRegistry_customEncoder (line 18) | func ExampleRegistry_customEncoder() {
  function ExampleRegistry_customDecoder (line 79) | func ExampleRegistry_customDecoder() {
  function ExampleRegistry_RegisterKindEncoder (line 161) | func ExampleRegistry_RegisterKindEncoder() {
  function ExampleRegistry_RegisterKindDecoder (line 219) | func ExampleRegistry_RegisterKindDecoder() {

FILE: bson/registry_test.go
  function newTestRegistry (line 19) | func newTestRegistry() *Registry {
  function TestRegistry (line 28) | func TestRegistry(t *testing.T) {
  method get (line 487) | func (c *kindEncoderCache) get(rt reflect.Kind) ValueEncoder {
  function BenchmarkLookupEncoder (line 492) | func BenchmarkLookupEncoder(b *testing.B) {
  type fakeType1 (line 533) | type fakeType1 struct
  type fakeType2 (line 534) | type fakeType2 struct
  type fakeType4 (line 535) | type fakeType4 struct
  type fakeType5 (line 536) | type fakeType5
  type fakeStructCodec (line 537) | type fakeStructCodec struct
  type fakeSliceCodec (line 538) | type fakeSliceCodec struct
  type fakeMapCodec (line 539) | type fakeMapCodec struct
  type fakeCodec (line 542) | type fakeCodec struct
    method EncodeValue (line 550) | func (*fakeCodec) EncodeValue(EncodeContext, ValueWriter, reflect.Valu...
    method DecodeValue (line 554) | func (*fakeCodec) DecodeValue(DecodeContext, ValueReader, reflect.Valu...
  type testInterface1 (line 559) | type testInterface1 interface
  type testInterface2 (line 560) | type testInterface2 interface
  type testInterface3 (line 561) | type testInterface3 interface
  type testInterface4 (line 562) | type testInterface4 interface
  type testInterface1Impl (line 565) | type testInterface1Impl struct
    method test1 (line 569) | func (testInterface1Impl) test1() {}
  type testInterface2Impl (line 571) | type testInterface2Impl struct
    method test2 (line 575) | func (testInterface2Impl) test2() {}
  type testInterface3Impl (line 577) | type testInterface3Impl struct
    method test3 (line 581) | func (*testInterface3Impl) test3() {}
  function typeComparer (line 583) | func typeComparer(i1, i2 reflect.Type) bool { return i1 == i2 }

FILE: bson/slice_codec.go
  type sliceCodec (line 16) | type sliceCodec struct
    method EncodeValue (line 23) | func (sc *sliceCodec) EncodeValue(ec EncodeContext, vw ValueWriter, va...
    method DecodeValue (line 97) | func (sc *sliceCodec) DecodeValue(dc DecodeContext, vr ValueReader, va...

FILE: bson/streaming_byte_src.go
  type streamingByteSrc (line 20) | type streamingByteSrc struct
    method readExact (line 29) | func (s *streamingByteSrc) readExact(p []byte) (int, error) {
    method ReadByte (line 39) | func (s *streamingByteSrc) ReadByte() (byte, error) {
    method peek (line 48) | func (s *streamingByteSrc) peek(n int) ([]byte, error) {
    method discard (line 53) | func (s *streamingByteSrc) discard(n int) (int, error) {
    method readSlice (line 62) | func (s *streamingByteSrc) readSlice(delim byte) ([]byte, error) {
    method pos (line 99) | func (s *streamingByteSrc) pos() int64 {
    method regexLength (line 104) | func (s *streamingByteSrc) regexLength() (int32, error) {
    method streamable (line 126) | func (*streamingByteSrc) streamable() bool {
    method reset (line 130) | func (s *streamingByteSrc) reset() {

FILE: bson/string_codec.go
  type stringCodec (line 16) | type stringCodec struct
    method EncodeValue (line 24) | func (sc *stringCodec) EncodeValue(_ EncodeContext, vw ValueWriter, va...
    method decodeType (line 36) | func (sc *stringCodec) decodeType(dc DecodeContext, vr ValueReader, t ...
    method DecodeValue (line 95) | func (sc *stringCodec) DecodeValue(dctx DecodeContext, vr ValueReader,...

FILE: bson/struct_codec.go
  type DecodeError (line 20) | type DecodeError struct
    method Unwrap (line 26) | func (de *DecodeError) Unwrap() error {
    method Error (line 31) | func (de *DecodeError) Error() string {
    method Keys (line 41) | func (de *DecodeError) Keys() []string {
  type mapElementsEncoder (line 51) | type mapElementsEncoder interface
  type structCodec (line 56) | type structCodec struct
    method EncodeValue (line 96) | func (sc *structCodec) EncodeValue(ec EncodeContext, vw ValueWriter, v...
    method DecodeValue (line 218) | func (sc *structCodec) DecodeValue(dc DecodeContext, vr ValueReader, v...
    method describeStruct (line 447) | func (sc *structCodec) describeStruct(
    method describeStructSlow (line 470) | func (sc *structCodec) describeStructSlow(
  function newStructCodec (line 88) | func newStructCodec(elemEncoder mapElementsEncoder) *structCodec {
  function newDecodeError (line 202) | func newDecodeError(key string, original error) error {
  function isEmpty (line 368) | func isEmpty(v reflect.Value, omitZeroStruct bool) bool {
  type structDescription (line 399) | type structDescription struct
  type fieldDescription (line 406) | type fieldDescription struct
  type byIndex (line 418) | type byIndex
    method Len (line 420) | func (bi byIndex) Len() int { return len(bi) }
    method Swap (line 422) | func (bi byIndex) Swap(i, j int) { bi[i], bi[j] = bi[j], bi[i] }
    method Less (line 424) | func (bi byIndex) Less(i, j int) bool {
  function dominantField (line 614) | func dominantField(fields []fieldDescription) (fieldDescription, bool) {
  function fieldByIndexErr (line 625) | func fieldByIndexErr(v reflect.Value, index []int) (result reflect.Value...
  function getInlineField (line 641) | func getInlineField(val reflect.Value, index []int) (reflect.Value, erro...
  function deepZero (line 662) | func deepZero(st reflect.Type) (result reflect.Value) {
  function recursivePointerTo (line 681) | func recursivePointerTo(v reflect.Value) reflect.Value {

FILE: bson/struct_codec_test.go
  function TestIsZero (line 17) | func TestIsZero(t *testing.T) {

FILE: bson/struct_tag_parser.go
  type structTags (line 38) | type structTags struct
  function parseStructTags (line 72) | func parseStructTags(sf reflect.StructField) (*structTags, error) {
  function parseJSONStructTags (line 84) | func parseJSONStructTags(sf reflect.StructField) (*structTags, error) {
  function parseTags (line 97) | func parseTags(key string, tag string) (*structTags, error) {

FILE: bson/struct_tag_parser_test.go
  function TestStructTagParsers (line 16) | func TestStructTagParsers(t *testing.T) {

FILE: bson/time_codec.go
  constant timeFormatString (line 16) | timeFormatString = "2006-01-02T15:04:05.999Z07:00"
  type timeCodec (line 20) | type timeCodec struct
    method decodeType (line 29) | func (tc *timeCodec) decodeType(dc DecodeContext, vr ValueReader, t re...
    method DecodeValue (line 87) | func (tc *timeCodec) DecodeValue(dc DecodeContext, vr ValueReader, val...
    method EncodeValue (line 102) | func (tc *timeCodec) EncodeValue(_ EncodeContext, vw ValueWriter, val ...

FILE: bson/time_codec_test.go
  function TestTimeCodec (line 18) | func TestTimeCodec(t *testing.T) {

FILE: bson/truncation_test.go
  type inputArgs (line 16) | type inputArgs struct
  type outputArgs (line 21) | type outputArgs struct
  function unmarshalWithContext (line 26) | func unmarshalWithContext(t *testing.T, dc DecodeContext, data []byte, v...
  function TestTruncation (line 33) | func TestTruncation(t *testing.T) {

FILE: bson/type_test.go
  function TestType (line 13) | func TestType(t *testing.T) {

FILE: bson/types.go
  type Type (line 19) | type Type
    method String (line 22) | func (bt Type) String() string {
    method IsValid (line 27) | func (bt Type) IsValid() bool {
  constant TypeDouble (line 41) | TypeDouble           Type = 0x01
  constant TypeString (line 42) | TypeString           Type = 0x02
  constant TypeEmbeddedDocument (line 43) | TypeEmbeddedDocument Type = 0x03
  constant TypeArray (line 44) | TypeArray            Type = 0x04
  constant TypeBinary (line 45) | TypeBinary           Type = 0x05
  constant TypeUndefined (line 46) | TypeUndefined        Type = 0x06
  constant TypeObjectID (line 47) | TypeObjectID         Type = 0x07
  constant TypeBoolean (line 48) | TypeBoolean          Type = 0x08
  constant TypeDateTime (line 49) | TypeDateTime         Type = 0x09
  constant TypeNull (line 50) | TypeNull             Type = 0x0A
  constant TypeRegex (line 51) | TypeRegex            Type = 0x0B
  constant TypeDBPointer (line 52) | TypeDBPointer        Type = 0x0C
  constant TypeJavaScript (line 53) | TypeJavaScript       Type = 0x0D
  constant TypeSymbol (line 54) | TypeSymbol           Type = 0x0E
  constant TypeCodeWithScope (line 55) | TypeCodeWithScope    Type = 0x0F
  constant TypeInt32 (line 56) | TypeInt32            Type = 0x10
  constant TypeTimestamp (line 57) | TypeTimestamp        Type = 0x11
  constant TypeInt64 (line 58) | TypeInt64            Type = 0x12
  constant TypeDecimal128 (line 59) | TypeDecimal128       Type = 0x13
  constant TypeMaxKey (line 60) | TypeMaxKey           Type = 0x7F
  constant TypeMinKey (line 61) | TypeMinKey           Type = 0xFF
  constant TypeBinaryGeneric (line 66) | TypeBinaryGeneric     byte = 0x00
  constant TypeBinaryFunction (line 67) | TypeBinaryFunction    byte = 0x01
  constant TypeBinaryBinaryOld (line 68) | TypeBinaryBinaryOld   byte = 0x02
  constant TypeBinaryUUIDOld (line 69) | TypeBinaryUUIDOld     byte = 0x03
  constant TypeBinaryUUID (line 70) | TypeBinaryUUID        byte = 0x04
  constant TypeBinaryMD5 (line 71) | TypeBinaryMD5         byte = 0x05
  constant TypeBinaryEncrypted (line 72) | TypeBinaryEncrypted   byte = 0x06
  constant TypeBinaryColumn (line 73) | TypeBinaryColumn      byte = 0x07
  constant TypeBinarySensitive (line 74) | TypeBinarySensitive   byte = 0x08
  constant TypeBinaryVector (line 75) | TypeBinaryVector      byte = 0x09
  constant TypeBinaryUserDefined (line 76) | TypeBinaryUserDefined byte = 0x80

FILE: bson/uint_codec.go
  type uintCodec (line 16) | type uintCodec struct
    method EncodeValue (line 27) | func (uic *uintCodec) EncodeValue(ec EncodeContext, vw ValueWriter, va...
    method decodeType (line 53) | func (uic *uintCodec) decodeType(dc DecodeContext, vr ValueReader, t r...
    method DecodeValue (line 145) | func (uic *uintCodec) DecodeValue(dc DecodeContext, vr ValueReader, va...

FILE: bson/unmarshal.go
  type Unmarshaler (line 22) | type Unmarshaler interface
  type ValueUnmarshaler (line 34) | type ValueUnmarshaler interface
  function Unmarshal (line 44) | func Unmarshal(data []byte, val any) error {
  function UnmarshalValue (line 59) | func UnmarshalValue(t Type, data []byte, val any) error {
  function UnmarshalExtJSON (line 73) | func UnmarshalExtJSON(data []byte, canonicalOnly bool, val any) error {
  function unmarshalFromReader (line 82) | func unmarshalFromReader(dc DecodeContext, vr ValueReader, val any) error {

FILE: bson/unmarshal_test.go
  function TestUnmarshal (line 20) | func TestUnmarshal(t *testing.T) {
  function TestUnmarshalWithRegistry (line 42) | func TestUnmarshalWithRegistry(t *testing.T) {
  function TestCachingDecodersNotSharedAcrossRegistries (line 89) | func TestCachingDecodersNotSharedAcrossRegistries(t *testing.T) {
  function TestUnmarshalExtJSONWithUndefinedField (line 150) | func TestUnmarshalExtJSONWithUndefinedField(t *testing.T) {
  function TestUnmarshalInterface (line 292) | func TestUnmarshalInterface(t *testing.T) {
  function TestUnmarshalBSONWithUndefinedField (line 465) | func TestUnmarshalBSONWithUndefinedField(t *testing.T) {
  function TestUnmarshalByteSlicesUseDistinctArrays (line 619) | func TestUnmarshalByteSlicesUseDistinctArrays(t *testing.T) {
  function TestUnmarshalConcurrently (line 825) | func TestUnmarshalConcurrently(t *testing.T) {
  function TestUnmarshalTypeCompatibility (line 843) | func TestUnmarshalTypeCompatibility(t *testing.T) {

FILE: bson/unmarshal_value_test.go
  function TestUnmarshalValue (line 19) | func TestUnmarshalValue(t *testing.T) {
  function TestInitializedPointerDataWithBSONNull (line 36) | func TestInitializedPointerDataWithBSONNull(t *testing.T) {
  function BenchmarkSliceCodecUnmarshal (line 57) | func BenchmarkSliceCodecUnmarshal(b *testing.B) {

FILE: bson/unmarshaling_cases_test.go
  type unmarshalingTestCase (line 15) | type unmarshalingTestCase struct
  function unmarshalingTestCases (line 22) | func unmarshalingTestCases() []unmarshalingTestCase {
  type unmarshalerPtrStruct (line 265) | type unmarshalerPtrStruct struct
  type unmarshalerNonPtrStruct (line 275) | type unmarshalerNonPtrStruct struct
  type myInt64 (line 282) | type myInt64
    method UnmarshalBSONValue (line 286) | func (mi *myInt64) UnmarshalBSONValue(t byte, b []byte) error {
    method UnmarshalBSON (line 303) | func (mi *myInt64) UnmarshalBSON(b []byte) error {
  type myMap (line 315) | type myMap
    method UnmarshalBSON (line 317) | func (mm *myMap) UnmarshalBSON(bytes []byte) error {
  type myBytes (line 327) | type myBytes
    method UnmarshalBSON (line 329) | func (mb *myBytes) UnmarshalBSON(b []byte) error {
  type myString (line 341) | type myString
    method UnmarshalBSON (line 343) | func (ms *myString) UnmarshalBSON(b []byte) error {
  type unmarshalBSONValueCallTracker (line 357) | type unmarshalBSONValueCallTracker struct
    method UnmarshalBSONValue (line 381) | func (tracker *unmarshalBSONValueCallTracker) UnmarshalBSONValue(byte,...
  type unmarshalBSONCallTracker (line 365) | type unmarshalBSONCallTracker struct
    method UnmarshalBSON (line 386) | func (tracker *unmarshalBSONCallTracker) UnmarshalBSON([]byte) error {
  type unmarshalBehaviorTestCase (line 374) | type unmarshalBehaviorTestCase struct

FILE: bson/value_reader.go
  type byteSrc (line 19) | type byteSrc interface
  type vrState (line 59) | type vrState struct
  type valueReader (line 74) | type valueReader struct
    method advanceFrame (line 151) | func (vr *valueReader) advanceFrame() {
    method pop (line 170) | func (vr *valueReader) pop() error {
    method invalidTransitionErr (line 203) | func (vr *valueReader) invalidTransitionErr(destination mode, name str...
    method typeError (line 217) | func (vr *valueReader) typeError(t Type) error {
    method invalidDocumentLengthError (line 221) | func (vr *valueReader) invalidDocumentLengthError() error {
    method ensureElementValue (line 225) | func (vr *valueReader) ensureElementValue(t Type, destination mode, ca...
    method Type (line 238) | func (vr *valueReader) Type() Type {
    method readBytes (line 303) | func (vr *valueReader) readBytes(n int32) ([]byte, error) {
    method readValueBytes (line 312) | func (vr *valueReader) readValueBytes(dst []byte) (Type, []byte, error) {
    method Skip (line 342) | func (vr *valueReader) Skip() error {
    method ReadArray (line 364) | func (vr *valueReader) ReadArray() (ArrayReader, error) {
    method ReadBinary (line 388) | func (vr *valueReader) ReadBinary() ([]byte, byte, error) {
    method ReadBoolean (line 429) | func (vr *valueReader) ReadBoolean() (bool, error) {
    method ReadDocument (line 451) | func (vr *valueReader) ReadDocument() (DocumentReader, error) {
    method ReadCodeWithScope (line 487) | func (vr *valueReader) ReadCodeWithScope() (string, DocumentReader, er...
    method ReadDBPointer (line 535) | func (vr *valueReader) ReadDBPointer() (string, ObjectID, error) {
    method ReadDateTime (line 560) | func (vr *valueReader) ReadDateTime() (int64, error) {
    method ReadDecimal128 (line 578) | func (vr *valueReader) ReadDecimal128() (Decimal128, error) {
    method ReadDouble (line 597) | func (vr *valueReader) ReadDouble() (float64, error) {
    method ReadInt32 (line 615) | func (vr *valueReader) ReadInt32() (int32, error) {
    method ReadInt64 (line 632) | func (vr *valueReader) ReadInt64() (int64, error) {
    method ReadJavascript (line 649) | func (vr *valueReader) ReadJavascript() (string, error) {
    method ReadMaxKey (line 666) | func (vr *valueReader) ReadMaxKey() error {
    method ReadMinKey (line 676) | func (vr *valueReader) ReadMinKey() error {
    method ReadNull (line 686) | func (vr *valueReader) ReadNull() error {
    method ReadObjectID (line 696) | func (vr *valueReader) ReadObjectID() (ObjectID, error) {
    method ReadRegex (line 717) | func (vr *valueReader) ReadRegex() (string, string, error) {
    method ReadString (line 740) | func (vr *valueReader) ReadString() (string, error) {
    method ReadSymbol (line 757) | func (vr *valueReader) ReadSymbol() (string, error) {
    method ReadTimestamp (line 773) | func (vr *valueReader) ReadTimestamp() (uint32, uint32, error) {
    method ReadUndefined (line 796) | func (vr *valueReader) ReadUndefined() error {
    method ReadElement (line 806) | func (vr *valueReader) ReadElement() (string, ValueReader, error) {
    method ReadValue (line 841) | func (vr *valueReader) ReadValue() (ValueReader, error) {
    method readByte (line 874) | func (vr *valueReader) readByte() (byte, error) {
    method readCString (line 882) | func (vr *valueReader) readCString() (string, error) {
    method readString (line 890) | func (vr *valueReader) readString() (string, error) {
    method peekLength (line 914) | func (vr *valueReader) peekLength() (int32, error) {
    method readLength (line 922) | func (vr *valueReader) readLength() (int32, error) {
    method readi32 (line 926) | func (vr *valueReader) readi32() (int32, error) {
    method readu32 (line 935) | func (vr *valueReader) readu32() (uint32, error) {
    method readi64 (line 944) | func (vr *valueReader) readi64() (int64, error) {
    method readu64 (line 953) | func (vr *valueReader) readu64() (uint64, error) {
  function getBufferedDocumentReader (line 82) | func getBufferedDocumentReader(b []byte) *valueReader {
  function putBufferedDocumentReader (line 86) | func putBufferedDocumentReader(vr *valueReader) {
  function NewDocumentReader (line 103) | func NewDocumentReader(r io.Reader) ValueReader {
  function newBufferedValueReader (line 118) | func newBufferedValueReader(t Type, b []byte) ValueReader {
  function newBufferedDocumentReader (line 127) | func newBufferedDocumentReader(b []byte) *valueReader {
  function peekNextValueSize (line 244) | func peekNextValueSize(vr *valueReader) (int32, error) {
  function readBytes (line 282) | func readBytes(src byteSrc, n int) ([]byte, error) {

FILE: bson/value_reader_test.go
  function TestValueReader_ReadBinary (line 29) | func TestValueReader_ReadBinary(t *testing.T) {
  function TestValueReader_ReadBoolean (line 135) | func TestValueReader_ReadBoolean(t *testing.T) {
  function TestValueReader_ReadDocument_TopLevel_InvalidLength (line 222) | func TestValueReader_ReadDocument_TopLevel_InvalidLength(t *testing.T) {
  function TestValueReader_ReadDocument_TopLevel_ValidDocumentWithIncorrectEnd (line 256) | func TestValueReader_ReadDocument_TopLevel_ValidDocumentWithIncorrectEnd...
  function TestValueReader_ReadDocument_EmbeddedDocument (line 286) | func TestValueReader_ReadDocument_EmbeddedDocument(t *testing.T) {
  function TestValueReader_ReadCodeWithScope (line 388) | func TestValueReader_ReadCodeWithScope(t *testing.T) {
  function TestValueReader_ReadDBPointer (line 568) | func TestValueReader_ReadDBPointer(t *testing.T) {
  function TestValueReader_ReadDateTime (line 677) | func TestValueReader_ReadDateTime(t *testing.T) {
  function TestValueReader_ReadDecimal128 (line 757) | func TestValueReader_ReadDecimal128(t *testing.T) {
  function TestValueReader_ReadDouble (line 850) | func TestValueReader_ReadDouble(t *testing.T) {
  function TestValueReader_ReadInt32 (line 930) | func TestValueReader_ReadInt32(t *testing.T) {
  function TestValueReader_ReadInt64 (line 1010) | func TestValueReader_ReadInt64(t *testing.T) {
  function TestValueReader_ReadJavascript_ReadString_ReadSymbol (line 1090) | func TestValueReader_ReadJavascript_ReadString_ReadSymbol(t *testing.T) {
  function TestValueReader_ReadMaxKey_ReadMinKey_ReadNull_ReadUndefined (line 1288) | func TestValueReader_ReadMaxKey_ReadMinKey_ReadNull_ReadUndefined(t *tes...
  function TestValueReader_ReadObjectID (line 1399) | func TestValueReader_ReadObjectID(t *testing.T) {
  function TestValueReader_ReadRegex (line 1479) | func TestValueReader_ReadRegex(t *testing.T) {
  function TestValueReader_ReadTimestamp (line 1577) | func TestValueReader_ReadTimestamp(t *testing.T) {
  function TestValueReader_ReadBytes_Skip_Buffered (line 1675) | func TestValueReader_ReadBytes_Skip_Buffered(t *testing.T) {
  function TestValueReader_ReadBytes_Skip_Streaming (line 2082) | func TestValueReader_ReadBytes_Skip_Streaming(t *testing.T) {
  function TestValueReader_InvalidTransition (line 2500) | func TestValueReader_InvalidTransition(t *testing.T) {
  function errequal (line 2521) | func errequal(t *testing.T, err1, err2 error) bool {

FILE: bson/value_reader_writer_test.go
  type VRWInvoked (line 15) | type VRWInvoked
  constant _ (line 18) | _                         = iota
  constant llvrwReadArray (line 19) | llvrwReadArray VRWInvoked = 1
  constant llvrwReadBinary (line 20) | llvrwReadBinary
  constant llvrwReadBoolean (line 21) | llvrwReadBoolean
  constant llvrwReadDocument (line 22) | llvrwReadDocument
  constant llvrwReadCodeWithScope (line 23) | llvrwReadCodeWithScope
  constant llvrwReadDBPointer (line 24) | llvrwReadDBPointer
  constant llvrwReadDateTime (line 25) | llvrwReadDateTime
  constant llvrwReadDecimal128 (line 26) | llvrwReadDecimal128
  constant llvrwReadDouble (line 27) | llvrwReadDouble
  constant llvrwReadInt32 (line 28) | llvrwReadInt32
  constant llvrwReadInt64 (line 29) | llvrwReadInt64
  constant llvrwReadJavascript (line 30) | llvrwReadJavascript
  constant llvrwReadMaxKey (line 31) | llvrwReadMaxKey
  constant llvrwReadMinKey (line 32) | llvrwReadMinKey
  constant llvrwReadNull (line 33) | llvrwReadNull
  constant llvrwReadObjectID (line 34) | llvrwReadObjectID
  constant llvrwReadRegex (line 35) | llvrwReadRegex
  constant llvrwReadString (line 36) | llvrwReadString
  constant llvrwReadSymbol (line 37) | llvrwReadSymbol
  constant llvrwReadTimestamp (line 38) | llvrwReadTimestamp
  constant llvrwReadUndefined (line 39) | llvrwReadUndefined
  constant llvrwReadElement (line 40) | llvrwReadElement
  constant llvrwReadValue (line 41) | llvrwReadValue
  constant llvrwWriteArray (line 42) | llvrwWriteArray
  constant llvrwWriteBinary (line 43) | llvrwWriteBinary
  constant llvrwWriteBinaryWithSubtype (line 44) | llvrwWriteBinaryWithSubtype
  constant llvrwWriteBoolean (line 45) | llvrwWriteBoolean
  constant llvrwWriteCodeWithScope (line 46) | llvrwWriteCodeWithScope
  constant llvrwWriteDBPointer (line 47) | llvrwWriteDBPointer
  constant llvrwWriteDateTime (line 48) | llvrwWriteDateTime
  constant llvrwWriteDecimal128 (line 49) | llvrwWriteDecimal128
  constant llvrwWriteDouble (line 50) | llvrwWriteDouble
  constant llvrwWriteInt32 (line 51) | llvrwWriteInt32
  constant llvrwWriteInt64 (line 52) | llvrwWriteInt64
  constant llvrwWriteJavascript (line 53) | llvrwWriteJavascript
  constant llvrwWriteMaxKey (line 54) | llvrwWriteMaxKey
  constant llvrwWriteMinKey (line 55) | llvrwWriteMinKey
  constant llvrwWriteNull (line 56) | llvrwWriteNull
  constant llvrwWriteObjectID (line 57) | llvrwWriteObjectID
  constant llvrwWriteRegex (line 58) | llvrwWriteRegex
  constant llvrwWriteString (line 59) | llvrwWriteString
  constant llvrwWriteDocument (line 60) | llvrwWriteDocument
  constant llvrwWriteSymbol (line 61) | llvrwWriteSymbol
  constant llvrwWriteTimestamp (line 62) | llvrwWriteTimestamp
  constant llvrwWriteUndefined (line 63) | llvrwWriteUndefined
  constant llvrwWriteDocumentElement (line 64) | llvrwWriteDocumentElement
  constant llvrwWriteDocumentEnd (line 65) | llvrwWriteDocumentEnd
  constant llvrwWriteArrayElement (line 66) | llvrwWriteArrayElement
  constant llvrwWriteArrayEnd (line 67) | llvrwWriteArrayEnd
  type TestValueReaderWriter (line 70) | type TestValueReaderWriter struct
    method Type (line 79) | func (llvrw *TestValueReaderWriter) Type() Type {
    method Skip (line 83) | func (llvrw *TestValueReaderWriter) Skip() error {
    method ReadArray (line 87) | func (llvrw *TestValueReaderWriter) ReadArray() (ArrayReader, error) {
    method ReadBinary (line 96) | func (llvrw *TestValueReaderWriter) ReadBinary() (b []byte, btype byte...
    method ReadBoolean (line 116) | func (llvrw *TestValueReaderWriter) ReadBoolean() (bool, error) {
    method ReadDocument (line 131) | func (llvrw *TestValueReaderWriter) ReadDocument() (DocumentReader, er...
    method ReadCodeWithScope (line 140) | func (llvrw *TestValueReaderWriter) ReadCodeWithScope() (code string, ...
    method ReadDBPointer (line 149) | func (llvrw *TestValueReaderWriter) ReadDBPointer() (ns string, oid Ob...
    method ReadDateTime (line 169) | func (llvrw *TestValueReaderWriter) ReadDateTime() (int64, error) {
    method ReadDecimal128 (line 184) | func (llvrw *TestValueReaderWriter) ReadDecimal128() (Decimal128, erro...
    method ReadDouble (line 199) | func (llvrw *TestValueReaderWriter) ReadDouble() (float64, error) {
    method ReadInt32 (line 214) | func (llvrw *TestValueReaderWriter) ReadInt32() (int32, error) {
    method ReadInt64 (line 229) | func (llvrw *TestValueReaderWriter) ReadInt64() (int64, error) {
    method ReadJavascript (line 243) | func (llvrw *TestValueReaderWriter) ReadJavascript() (code string, err...
    method ReadMaxKey (line 257) | func (llvrw *TestValueReaderWriter) ReadMaxKey() error {
    method ReadMinKey (line 266) | func (llvrw *TestValueReaderWriter) ReadMinKey() error {
    method ReadNull (line 275) | func (llvrw *TestValueReaderWriter) ReadNull() error {
    method ReadObjectID (line 284) | func (llvrw *TestValueReaderWriter) ReadObjectID() (ObjectID, error) {
    method ReadRegex (line 298) | func (llvrw *TestValueReaderWriter) ReadRegex() (pattern string, optio...
    method ReadString (line 317) | func (llvrw *TestValueReaderWriter) ReadString() (string, error) {
    method ReadSymbol (line 331) | func (llvrw *TestValueReaderWriter) ReadSymbol() (symbol string, err e...
    method ReadTimestamp (line 350) | func (llvrw *TestValueReaderWriter) ReadTimestamp() (t uint32, i uint3...
    method ReadUndefined (line 369) | func (llvrw *TestValueReaderWriter) ReadUndefined() error {
    method WriteArray (line 378) | func (llvrw *TestValueReaderWriter) WriteArray() (ArrayWriter, error) {
    method WriteBinary (line 386) | func (llvrw *TestValueReaderWriter) WriteBinary([]byte) error {
    method WriteBinaryWithSubtype (line 394) | func (llvrw *TestValueReaderWriter) WriteBinaryWithSubtype([]byte, byt...
    method WriteBoolean (line 402) | func (llvrw *TestValueReaderWriter) WriteBoolean(bool) error {
    method WriteCodeWithScope (line 410) | func (llvrw *TestValueReaderWriter) WriteCodeWithScope(string) (Docume...
    method WriteDBPointer (line 418) | func (llvrw *TestValueReaderWriter) WriteDBPointer(string, ObjectID) e...
    method WriteDateTime (line 426) | func (llvrw *TestValueReaderWriter) WriteDateTime(int64) error {
    method WriteDecimal128 (line 434) | func (llvrw *TestValueReaderWriter) WriteDecimal128(Decimal128) error {
    method WriteDouble (line 442) | func (llvrw *TestValueReaderWriter) WriteDouble(float64) error {
    method WriteInt32 (line 450) | func (llvrw *TestValueReaderWriter) WriteInt32(int32) error {
    method WriteInt64 (line 458) | func (llvrw *TestValueReaderWriter) WriteInt64(int64) error {
    method WriteJavascript (line 466) | func (llvrw *TestValueReaderWriter) WriteJavascript(string) error {
    method WriteMaxKey (line 474) | func (llvrw *TestValueReaderWriter) WriteMaxKey() error {
    method WriteMinKey (line 482) | func (llvrw *TestValueReaderWriter) WriteMinKey() error {
    method WriteNull (line 490) | func (llvrw *TestValueReaderWriter) WriteNull() error {
    method WriteObjectID (line 498) | func (llvrw *TestValueReaderWriter) WriteObjectID(ObjectID) error {
    method WriteRegex (line 506) | func (llvrw *TestValueReaderWriter) WriteRegex(string, string) error {
    method WriteString (line 514) | func (llvrw *TestValueReaderWriter) WriteString(string) error {
    method WriteDocument (line 522) | func (llvrw *TestValueReaderWriter) WriteDocument() (DocumentWriter, e...
    method WriteSymbol (line 530) | func (llvrw *TestValueReaderWriter) WriteSymbol(string) error {
    method WriteTimestamp (line 538) | func (llvrw *TestValueReaderWriter) WriteTimestamp(uint32, uint32) err...
    method WriteUndefined (line 546) | func (llvrw *TestValueReaderWriter) WriteUndefined() error {
    method ReadElement (line 554) | func (llvrw *TestValueReaderWriter) ReadElement() (string, ValueReader...
    method WriteDocumentElement (line 563) | func (llvrw *TestValueReaderWriter) WriteDocumentElement(string) (Valu...
    method WriteDocumentEnd (line 572) | func (llvrw *TestValueReaderWriter) WriteDocumentEnd() error {
    method ReadValue (line 581) | func (llvrw *TestValueReaderWriter) ReadValue() (ValueReader, error) {
    method WriteArrayElement (line 590) | func (llvrw *TestValueReaderWriter) WriteArrayElement() (ValueWriter, ...
    method WriteArrayEnd (line 599) | func (llvrw *TestValueReaderWriter) WriteArrayEnd() error {

FILE: bson/value_writer.go
  function putValueWriter (line 29) | func putValueWriter(vw *valueWriter) {
  function getDocumentWriter (line 42) | func getDocumentWriter(w io.Writer) *valueWriter {
  function putDocumentWriter (line 52) | func putDocumentWriter(vw *valueWriter) {
  type errMaxDocumentSizeExceeded (line 63) | type errMaxDocumentSizeExceeded struct
    method Error (line 67) | func (mdse errMaxDocumentSizeExceeded) Error() string {
  type vwMode (line 71) | type vwMode
    method String (line 83) | func (vm vwMode) String() string {
  constant _ (line 74) | _ vwMode = iota
  constant vwTopLevel (line 75) | vwTopLevel
  constant vwDocument (line 76) | vwDocument
  constant vwArray (line 77) | vwArray
  constant vwValue (line 78) | vwValue
  constant vwElement (line 79) | vwElement
  constant vwCodeWithScope (line 80) | vwCodeWithScope
  type vwState (line 106) | type vwState struct
  type valueWriter (line 113) | type valueWriter struct
    method advanceFrame (line 121) | func (vw *valueWriter) advanceFrame() {
    method push (line 128) | func (vw *valueWriter) push(m mode) {
    method reserveLength (line 140) | func (vw *valueWriter) reserveLength() {
    method pop (line 145) | func (vw *valueWriter) pop() {
    method reset (line 182) | func (vw *valueWriter) reset(buf []byte) {
    method invalidTransitionError (line 193) | func (vw *valueWriter) invalidTransitionError(destination mode, name s...
    method writeElementHeader (line 207) | func (vw *valueWriter) writeElementHeader(t Type, destination mode, ca...
    method writeValueBytes (line 229) | func (vw *valueWriter) writeValueBytes(t Type, b []byte) error {
    method WriteArray (line 238) | func (vw *valueWriter) WriteArray() (ArrayWriter, error) {
    method WriteBinary (line 248) | func (vw *valueWriter) WriteBinary(b []byte) error {
    method WriteBinaryWithSubtype (line 252) | func (vw *valueWriter) WriteBinaryWithSubtype(b []byte, btype byte) er...
    method WriteBoolean (line 262) | func (vw *valueWriter) WriteBoolean(b bool) error {
    method WriteCodeWithScope (line 272) | func (vw *valueWriter) WriteCodeWithScope(code string) (DocumentWriter...
    method WriteDBPointer (line 289) | func (vw *valueWriter) WriteDBPointer(ns string, oid ObjectID) error {
    method WriteDateTime (line 299) | func (vw *valueWriter) WriteDateTime(dt int64) error {
    method WriteDecimal128 (line 309) | func (vw *valueWriter) WriteDecimal128(d128 Decimal128) error {
    method WriteDouble (line 320) | func (vw *valueWriter) WriteDouble(f float64) error {
    method WriteInt32 (line 330) | func (vw *valueWriter) WriteInt32(i32 int32) error {
    method WriteInt64 (line 340) | func (vw *valueWriter) WriteInt64(i64 int64) error {
    method WriteJavascript (line 350) | func (vw *valueWriter) WriteJavascript(code string) error {
    method WriteMaxKey (line 360) | func (vw *valueWriter) WriteMaxKey() error {
    method WriteMinKey (line 369) | func (vw *valueWriter) WriteMinKey() error {
    method WriteNull (line 378) | func (vw *valueWriter) WriteNull() error {
    method WriteObjectID (line 387) | func (vw *valueWriter) WriteObjectID(oid ObjectID) error {
    method WriteRegex (line 397) | func (vw *valueWriter) WriteRegex(pattern string, options string) error {
    method WriteString (line 410) | func (vw *valueWriter) WriteString(s string) error {
    method WriteDocument (line 420) | func (vw *valueWriter) WriteDocument() (DocumentWriter, error) {
    method WriteSymbol (line 433) | func (vw *valueWriter) WriteSymbol(symbol string) error {
    method WriteTimestamp (line 443) | func (vw *valueWriter) WriteTimestamp(t uint32, i uint32) error {
    method WriteUndefined (line 453) | func (vw *valueWriter) WriteUndefined() error {
    method WriteDocumentElement (line 462) | func (vw *valueWriter) WriteDocumentElement(key string) (ValueWriter, ...
    method WriteDocumentEnd (line 475) | func (vw *valueWriter) WriteDocumentEnd() error {
    method Flush (line 506) | func (vw *valueWriter) Flush() error {
    method WriteArrayElement (line 519) | func (vw *valueWriter) WriteArrayElement() (ValueWriter, error) {
    method WriteArrayEnd (line 533) | func (vw *valueWriter) WriteArrayEnd() error {
    method writeLength (line 555) | func (vw *valueWriter) writeLength() error {
    method appendHeader (line 590) | func (vw *valueWriter) appendHeader(t Type, key string) {
    method appendIntHeader (line 596) | func (vw *valueWriter) appendIntHeader(t Type, key int) {
  function NewDocumentWriter (line 158) | func NewDocumentWriter(w io.Writer) ValueWriter {
  function newDocumentWriter (line 162) | func newDocumentWriter(w io.Writer) *valueWriter {
  function newValueWriterFromSlice (line 172) | func newValueWriterFromSlice(buf []byte) *valueWriter {
  function isValidCString (line 572) | func isValidCString(cs string) bool {

FILE: bson/value_writer_test.go
  function TestNewDocumentWriter (line 23) | func TestNewDocumentWriter(t *testing.T) {
  function TestDocumentWriter (line 30) | func TestDocumentWriter(t *testing.T) {
  type errWriter (line 367) | type errWriter struct
    method Write (line 371) | func (ew errWriter) Write([]byte) (int, error) { return 0, ew.err }

FILE: bson/vector.go
  constant Int8Vector (line 18) | Int8Vector      byte = 0x03
  constant Float32Vector (line 19) | Float32Vector   byte = 0x27
  constant PackedBitVector (line 20) | PackedBitVector byte = 0x10
  type vectorTypeError (line 30) | type vectorTypeError struct
    method Error (line 36) | func (vte vectorTypeError) Error() string {
  type Vector (line 50) | type Vector struct
    method Type (line 59) | func (v Vector) Type() byte {
    method Int8 (line 65) | func (v Vector) Int8() []int8 {
    method Int8OK (line 74) | func (v Vector) Int8OK() ([]int8, bool) {
    method Float32 (line 83) | func (v Vector) Float32() []float32 {
    method Float32OK (line 92) | func (v Vector) Float32OK() ([]float32, bool) {
    method PackedBit (line 102) | func (v Vector) PackedBit() ([]byte, uint8) {
    method PackedBitOK (line 111) | func (v Vector) PackedBitOK() ([]byte, uint8, bool) {
    method Binary (line 119) | func (v Vector) Binary() Binary {
  function binaryFromInt8Vector (line 132) | func binaryFromInt8Vector(v []int8) Binary {
  function binaryFromFloat32Vector (line 147) | func binaryFromFloat32Vector(v []float32) Binary {
  function binaryFromBitVector (line 163) | func binaryFromBitVector(bits []byte, padding uint8) Binary {
  function NewVector (line 175) | func NewVector[T int8 | float32](data []T) Vector {
  function NewPackedBitVector (line 193) | func NewPackedBitVector(bits []byte, padding uint8) (Vector, error) {
  function NewVectorFromBinary (line 209) | func NewVectorFromBinary(b Binary) (Vector, error) {
  function newInt8Vector (line 229) | func newInt8Vector(b []byte) (Vector, error) {
  function newFloat32Vector (line 244) | func newFloat32Vector(b []byte) (Vector, error) {
  function newBitVector (line 263) | func newBitVector(b []byte) (Vector, error) {

FILE: bson/writer.go
  type ArrayWriter (line 12) | type ArrayWriter interface
  type DocumentWriter (line 20) | type DocumentWriter interface
  type ValueWriter (line 28) | type ValueWriter interface
  type sliceWriter (line 54) | type sliceWriter
    method Write (line 57) | func (sw *sliceWriter) Write(p []byte) (int, error) {

FILE: event/description.go
  type ServerDescription (line 21) | type ServerDescription struct
  type TopologyDescription (line 52) | type TopologyDescription struct

FILE: event/examples_test.go
  function ExampleCommandMonitor (line 22) | func ExampleCommandMonitor() {

FILE: event/monitoring.go
  type CommandStartedEvent (line 18) | type CommandStartedEvent struct
  type CommandFinishedEvent (line 33) | type CommandFinishedEvent struct
  type CommandSucceededEvent (line 48) | type CommandSucceededEvent struct
  type CommandFailedEvent (line 54) | type CommandFailedEvent struct
  type CommandMonitor (line 60) | type CommandMonitor struct
  constant ReasonIdle (line 68) | ReasonIdle              = "idle"
  constant ReasonPoolClosed (line 69) | ReasonPoolClosed        = "poolClosed"
  constant ReasonStale (line 70) | ReasonStale             = "stale"
  constant ReasonConnectionErrored (line 71) | ReasonConnectionErrored = "connectionError"
  constant ReasonTimedOut (line 72) | ReasonTimedOut          = "timeout"
  constant ReasonError (line 73) | ReasonError             = "error"
  constant ConnectionPoolCreated (line 78) | ConnectionPoolCreated     = "ConnectionPoolCreated"
  constant ConnectionPoolReady (line 79) | ConnectionPoolReady       = "ConnectionPoolReady"
  constant ConnectionPoolCleared (line 80) | ConnectionPoolCleared     = "ConnectionPoolCleared"
  constant ConnectionPoolClosed (line 81) | ConnectionPoolClosed      = "ConnectionPoolClosed"
  constant ConnectionCreated (line 82) | ConnectionCreated         = "ConnectionCreated"
  constant ConnectionReady (line 83) | ConnectionReady           = "ConnectionReady"
  constant ConnectionClosed (line 84) | ConnectionClosed          = "ConnectionClosed"
  constant ConnectionCheckOutStarted (line 85) | ConnectionCheckOutStarted = "ConnectionCheckOutStarted"
  constant ConnectionCheckOutFailed (line 86) | ConnectionCheckOutFailed  = "ConnectionCheckOutFailed"
  constant ConnectionCheckedOut (line 87) | ConnectionCheckedOut      = "ConnectionCheckedOut"
  constant ConnectionCheckedIn (line 88) | ConnectionCheckedIn       = "ConnectionCheckedIn"
  type MonitorPoolOptions (line 92) | type MonitorPoolOptions struct
  type PoolEvent (line 99) | type PoolEvent struct
  type PoolMonitor (line 114) | type PoolMonitor struct
  type ServerDescriptionChangedEvent (line 119) | type ServerDescriptionChangedEvent struct
  type ServerOpeningEvent (line 127) | type ServerOpeningEvent struct
  type ServerClosedEvent (line 133) | type ServerClosedEvent struct
  type TopologyDescriptionChangedEvent (line 139) | type TopologyDescriptionChangedEvent struct
  type TopologyOpeningEvent (line 146) | type TopologyOpeningEvent struct
  type TopologyClosedEvent (line 151) | type TopologyClosedEvent struct
  type ServerHeartbeatStartedEvent (line 156) | type ServerHeartbeatStartedEvent struct
  type ServerHeartbeatSucceededEvent (line 162) | type ServerHeartbeatSucceededEvent struct
  type ServerHeartbeatFailedEvent (line 170) | type ServerHeartbeatFailedEvent struct
  type ServerMonitor (line 181) | type ServerMonitor struct

FILE: examples/_example_customdns_test.go
  function resolve (line 23) | func resolve(ctx context.Context, cache *dnsCache, in *dns.Conn, out *dn...
  type RR (line 83) | type RR struct
  type dnsCache (line 88) | type dnsCache struct
  type dialer (line 93) | type dialer struct
  function NewDialer (line 98) | func NewDialer() dialer {
  function TestCustomDialer (line 122) | func TestCustomDialer(t *testing.T) {

FILE: examples/_example_overload_error_test.go
  constant tokenBucketCap (line 23) | tokenBucketCap = 10_000
  constant retryToken (line 24) | retryToken     = 10
  constant refreshToken (line 25) | refreshToken   = 1
  constant maxAttempts (line 27) | maxAttempts = 5
  constant baseBackoff (line 29) | baseBackoff = 100 * time.Millisecond
  constant maxBackoff (line 30) | maxBackoff  = 10_000 * time.Millisecond
  constant errSystemOverloadedError (line 32) | errSystemOverloadedError = "SystemOverloadedError"
  constant errRetryableError (line 33) | errRetryableError        = "RetryableError"
  function isSystemOverloadedError (line 37) | func isSystemOverloadedError(err error) bool {
  type tokenBucket (line 46) | type tokenBucket struct
    method Consume (line 59) | func (tb *tokenBucket) Consume(amount int) bool {
    method Deposit (line 69) | func (tb *tokenBucket) Deposit(amount int) {
  function newTokenBucket (line 52) | func newTokenBucket(capacity int) *tokenBucket {
  function executeWithRetries (line 80) | func executeWithRetries(
  function ExampleOverloadError_Find (line 135) | func ExampleOverloadError_Find() {

FILE: examples/_logger/logrus/main.go
  function main (line 22) | func main() {

FILE: examples/_logger/zap/main.go
  function main (line 22) | func main() {

FILE: examples/_logger/zerolog/main.go
  function main (line 23) | func main() {

FILE: internal/assert/assertbson/assertbson.go
  type tHelper (line 15) | type tHelper interface
  function EqualDocument (line 22) | func EqualDocument(t assert.TestingT, expected, actual []byte) bool {
  function EqualValue (line 41) | func EqualValue[T bson.RawValue | bsoncore.Value](t assert.TestingT, exp...

FILE: internal/assert/assertbson/assertbson_test.go
  function TestEqualDocument (line 16) | func TestEqualDocument(t *testing.T) {
  function TestEqualValue (line 65) | func TestEqualValue(t *testing.T) {

FILE: internal/assert/assertion_compare.go
  type CompareType (line 16) | type CompareType
  constant compareLess (line 19) | compareLess CompareType = iota - 1
  constant compareEqual (line 20) | compareEqual
  constant compareGreater (line 21) | compareGreater
  function compare (line 46) | func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bo...
  function Greater (line 363) | func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...i...
  function GreaterOrEqual (line 376) | func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndAr...
  function Less (line 388) | func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...inte...
  function LessOrEqual (line 401) | func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...
  function Positive (line 412) | func Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) bool {
  function Negative (line 424) | func Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) bool {
  function compareTwoValues (line 432) | func compareTwoValues(t TestingT, e1 interface{}, e2 interface{}, allowe...
  function containsValue (line 455) | func containsValue(values []CompareType, value CompareType) bool {
  function CompareErrors (line 466) | func CompareErrors(err1, err2 error) bool {

FILE: internal/assert/assertion_compare_can_convert.go
  function canConvert (line 16) | func canConvert(value reflect.Value, to reflect.Type) bool {

FILE: internal/assert/assertion_compare_go1.17_test.go
  function TestCompare17 (line 19) | func TestCompare17(t *testing.T) {
  function TestGreater17 (line 62) | func TestGreater17(t *testing.T) {
  function TestGreaterOrEqual17 (line 93) | func TestGreaterOrEqual17(t *testing.T) {
  function TestLess17 (line 124) | func TestLess17(t *testing.T) {
  function TestLessOrEqual17 (line 155) | func TestLessOrEqual17(t *testing.T) {

FILE: internal/assert/assertion_compare_legacy.go
  function canConvert (line 16) | func canConvert(value reflect.Value, to reflect.Type) bool {

FILE: internal/assert/assertion_compare_test.go
  function TestCompare (line 17) | func TestCompare(t *testing.T) {
  type outputT (line 92) | type outputT struct
    method Errorf (line 98) | func (t *outputT) Errorf(format string, args ...interface{}) {
    method Helper (line 103) | func (t *outputT) Helper() {
  function callerName (line 112) | func callerName(skip int) string {
  function TestGreater (line 124) | func TestGreater(t *testing.T) {
  function TestGreaterOrEqual (line 165) | func TestGreaterOrEqual(t *testing.T) {
  function TestLess (line 206) | func TestLess(t *testing.T) {
  function TestLessOrEqual (line 247) | func TestLessOrEqual(t *testing.T) {
  function TestPositive (line 288) | func TestPositive(t *testing.T) {
  function TestNegative (line 327) | func TestNegative(t *testing.T) {
  function Test_compareTwoValuesDifferentValuesTypes (line 366) | func Test_compareTwoValuesDifferentValuesTypes(t *testing.T) {
  function Test_compareTwoValuesNotComparableValues (line 384) | func Test_compareTwoValuesNotComparableValues(t *testing.T) {
  function Test_compareTwoValuesCorrectCompareResult (line 402) | func Test_compareTwoValuesCorrectCompareResult(t *testing.T) {
  function Test_containsValue (line 422) | func Test_containsValue(t *testing.T) {
  function TestComparingMsgAndArgsForwarding (line 438) | func TestComparingMsgAndArgsForwarding(t *testing.T) {

FILE: internal/assert/assertion_format.go
  function Containsf (line 19) | func Containsf(t TestingT, s interface{}, contains interface{}, msg stri...
  function ElementsMatchf (line 31) | func ElementsMatchf(t TestingT, listA interface{}, listB interface{}, ms...
  function Equalf (line 45) | func Equalf(t TestingT, expected interface{}, actual interface{}, msg st...
  function EqualErrorf (line 57) | func EqualErrorf(t TestingT, theError error, errString string, msg strin...
  function EqualValuesf (line 68) | func EqualValuesf(t TestingT, expected interface{}, actual interface{}, ...
  function Errorf (line 81) | func Errorf(t TestingT, err error, msg string, args ...interface{}) bool {
  function ErrorContainsf (line 93) | func ErrorContainsf(t TestingT, theError error, contains string, msg str...
  function Eventuallyf (line 104) | func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duratio...
  function Failf (line 112) | func Failf(t TestingT, failureMessage string, msg string, args ...interf...
  function FailNowf (line 120) | func FailNowf(t TestingT, failureMessage string, msg string, args ...int...
  function Falsef (line 130) | func Falsef(t TestingT, value bool, msg string, args ...interface{}) bool {
  function Greaterf (line 142) | func Greaterf(t TestingT, e1 interface{}, e2 interface{}, msg string, ar...
  function GreaterOrEqualf (line 155) | func GreaterOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg str...
  function InDeltaf (line 165) | func InDeltaf(t TestingT, expected interface{}, actual interface{}, delt...
  function IsTypef (line 173) | func IsTypef(t TestingT, expectedType interface{}, object interface{}, m...
  function Lenf (line 184) | func Lenf(t TestingT, object interface{}, length int, msg string, args ....
  function Lessf (line 196) | func Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...
  function LessOrEqualf (line 209) | func LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string...
  function Negativef (line 220) | func Negativef(t TestingT, e interface{}, msg string, args ...interface{...
  function Nilf (line 230) | func Nilf(t TestingT, object interface{}, msg string, args ...interface{...
  function NoErrorf (line 243) | func NoErrorf(t TestingT, err error, msg string, args ...interface{}) bo...
  function NotContainsf (line 256) | func NotContainsf(t TestingT, s interface{}, contains interface{}, msg s...
  function NotEqualf (line 269) | func NotEqualf(t TestingT, expected interface{}, actual interface{}, msg...
  function NotEqualValuesf (line 279) | func NotEqualValuesf(t TestingT, expected interface{}, actual interface{...
  function NotNilf (line 289) | func NotNilf(t TestingT, object interface{}, msg string, args ...interfa...
  function Positivef (line 300) | func Positivef(t TestingT, e interface{}, msg string, args ...interface{...
  function Truef (line 310) | func Truef(t TestingT, value bool, msg string, args ...interface{}) bool {
  function WithinDurationf (line 320) | func WithinDurationf(t TestingT, expected time.Time, actual time.Time, d...

FILE: internal/assert/assertion_mongo.go
  function DifferentAddressRanges (line 21) | func DifferentAddressRanges(t TestingT, a, b []byte) (ok bool) {
  function Soon (line 79) | func Soon(t TestingT, callback func(ctx context.Context), timeout time.D...

FILE: internal/assert/assertion_mongo_test.go
  function TestDifferentAddressRanges (line 13) | func TestDifferentAddressRanges(t *testing.T) {

FILE: internal/assert/assertions.go
  type TestingT (line 26) | type TestingT interface
  function ObjectsAreEqual (line 33) | func ObjectsAreEqual(expected, actual interface{}) bool {
  function ObjectsAreEqualValues (line 55) | func ObjectsAreEqualValues(expected, actual interface{}) bool {
  function CallerInfo (line 80) | func CallerInfo() []string {
  function isTest (line 143) | func isTest(name, prefix string) bool {
  function messageFromMsgAndArgs (line 154) | func messageFromMsgAndArgs(msgAndArgs ...interface{}) string {
  function indentMessageLines (line 175) | func indentMessageLines(message string, longestLabelLen int) string {
  type failNower (line 190) | type failNower interface
  function FailNow (line 195) | func FailNow(t TestingT, failureMessage string, msgAndArgs ...interface{...
  function Fail (line 216) | func Fail(t TestingT, failureMessage string, msgAndArgs ...interface{}) ...
  type labeledContent (line 242) | type labeledContent struct
  function labeledOutput (line 256) | func labeledOutput(content ...labeledContent) string {
  function IsType (line 271) | func IsType(t TestingT, expectedType interface{}, object interface{}, ms...
  function Equal (line 290) | func Equal(t TestingT, expected, actual interface{}, msgAndArgs ...inter...
  function validateEqualArgs (line 312) | func validateEqualArgs(expected, actual interface{}) error {
  function formatUnequalValues (line 329) | func formatUnequalValues(expected, actual interface{}) (e string, a stri...
  function truncatingFormat (line 345) | func truncatingFormat(data interface{}) string {
  function EqualValues (line 358) | func EqualValues(t TestingT, expected, actual interface{}, msgAndArgs .....
  function NotNil (line 377) | func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) b...
  function containsKind (line 388) | func containsKind(kinds []reflect.Kind, kind reflect.Kind) bool {
  function isNil (line 399) | func isNil(object interface{}) bool {
  function Nil (line 424) | func Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {
  function getLen (line 436) | func getLen(x interface{}) (ok bool, length int) {
  function Len (line 450) | func Len(t TestingT, object interface{}, length int, msgAndArgs ...inter...
  function True (line 468) | func True(t TestingT, value bool, msgAndArgs ...interface{}) bool {
  function False (line 482) | func False(t TestingT, value bool, msgAndArgs ...interface{}) bool {
  function NotEqual (line 499) | func NotEqual(t TestingT, expected, actual interface{}, msgAndArgs ...in...
  function NotEqualValues (line 518) | func NotEqualValues(t TestingT, expected, actual interface{}, msgAndArgs...
  function containsElement (line 534) | func containsElement(list interface{}, element interface{}) (ok, found b...
  function Contains (line 577) | func Contains(t TestingT, s, contains interface{}, msgAndArgs ...interfa...
  function NotContains (line 599) | func NotContains(t TestingT, s, contains interface{}, msgAndArgs ...inte...
  function isEmpty (line 616) | func isEmpty(object interface{}) bool {
  function ElementsMatch (line 648) | func ElementsMatch(t TestingT, listA, listB interface{}, msgAndArgs ...i...
  function isList (line 670) | func isList(t TestingT, list interface{}, msgAndArgs ...interface{}) (ok...
  function diffLists (line 682) | func diffLists(listA, listB interface{}) ([]interface{}, []interface{}) {
  function formatListDiff (line 721) | func formatListDiff(listA, listB interface{}, extraA, extraB []interface...
  function WithinDuration (line 744) | func WithinDuration(t TestingT, expected, actual time.Time, delta time.D...
  function toFloat (line 757) | func toFloat(x interface{}) (float64, bool) {
  function InDelta (line 798) | func InDelta(t TestingT, expected, actual interface{}, delta float64, ms...
  function NoError (line 840) | func NoError(t TestingT, err error, msgAndArgs ...interface{}) bool {
  function Error (line 857) | func Error(t TestingT, err error, msgAndArgs ...interface{}) bool {
  function EqualError (line 873) | func EqualError(t TestingT, theError error, errString string, msgAndArgs...
  function ErrorIs (line 893) | func ErrorIs(t TestingT, err, target error, msgAndArgs ...interface{}) b...
  function ErrorContains (line 919) | func ErrorContains(t TestingT, theError error, contains string, msgAndAr...
  function typeAndKind (line 935) | func typeAndKind(v interface{}) (reflect.Type, reflect.Kind) {
  function diff (line 948) | func diff(expected interface{}, actual interface{}) string {
  function isFunction (line 991) | func isFunction(arg interface{}) bool {
  type tHelper (line 1015) | type tHelper interface
  function Eventually (line 1023) | func Eventually(t TestingT, condition func() bool, waitFor time.Duration...
  function buildErrorChainString (line 1052) | func buildErrorChainString(err error) string {
  function NotEmpty (line 1071) | func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{})...
  function Empty (line 1096) | func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) bo...

FILE: internal/assert/assertions_test.go
  type AssertionTesterInterface (line 23) | type AssertionTesterInterface interface
  type AssertionTesterConformingObject (line 28) | type AssertionTesterConformingObject struct
    method TestMethod (line 30) | func (a *AssertionTesterConformingObject) TestMethod() {
  type AssertionTesterNonConformingObject (line 34) | type AssertionTesterNonConformingObject struct
  function TestObjectsAreEqual (line 36) | func TestObjectsAreEqual(t *testing.T) {
  function TestIsType (line 82) | func TestIsType(t *testing.T) {
  function TestEqual (line 93) | func TestEqual(t *testing.T) {
  type bufferT (line 136) | type bufferT struct
    method Errorf (line 140) | func (t *bufferT) Errorf(format string, args ...interface{}) {
  function TestStringEqual (line 176) | func TestStringEqual(_ *testing.T) {
  function TestEqualFormatting (line 190) | func TestEqualFormatting(_ *testing.T) {
  function TestFormatUnequalValues (line 207) | func TestFormatUnequalValues(t *testing.T) {
  function TestNotNil (line 233) | func TestNotNil(t *testing.T) {
  function TestNil (line 247) | func TestNil(t *testing.T) {
  function TestTrue (line 261) | func TestTrue(t *testing.T) {
  function TestFalse (line 272) | func TestFalse(t *testing.T) {
  function TestNotEqual (line 283) | func TestNotEqual(t *testing.T) {
  function TestNotEqualValues (line 322) | func TestNotEqualValues(t *testing.T) {
  function TestContainsNotContains (line 365) | func TestContainsNotContains(t *testing.T) {
  function TestContainsFailMessage (line 428) | func TestContainsFailMessage(t *testing.T) {
  function TestContainsNotContainsOnNilValue (line 439) | func TestContainsNotContainsOnNilValue(t *testing.T) {
  function Test_containsElement (line 455) | func Test_containsElement(t *testing.T) {
  function TestElementsMatch (line 505) | func TestElementsMatch(t *testing.T) {
  function TestDiffLists (line 546) | func TestDiffLists(t *testing.T) {
  function TestNoError (line 630) | func TestNoError(t *testing.T) {
  type customError (line 656) | type customError struct
    method Error (line 658) | func (*customError) Error() string { return "fail" }
  function TestError (line 660) | func TestError(t *testing.T) {
  function TestEqualError (line 689) | func TestEqualError(t *testing.T) {
  function TestErrorContains (line 705) | func TestErrorContains(t *testing.T) {
  function Test_isEmpty (line 723) | func Test_isEmpty(t *testing.T) {
  function Test_getLen (line 749) | func Test_getLen(t *testing.T) {
  function TestLen (line 794) | func TestLen(t *testing.T) {
  function TestWithinDuration (line 856) | func TestWithinDuration(t *testing.T) {
  function TestInDelta (line 874) | func TestInDelta(t *testing.T) {
  type diffTestingStruct (line 912) | type diffTestingStruct struct
    method String (line 917) | func (d *diffTestingStruct) String() string {
  function TestDiff (line 921) | func TestDiff(t *testing.T) {
  function TestTimeEqualityErrorFormatting (line 1055) | func TestTimeEqualityErrorFormatting(_ *testing.T) {
  function TestDiffEmptyCases (line 1061) | func TestDiffEmptyCases(t *testing.T) {
  function TestDiffRace (line 1071) | func TestDiffRace(t *testing.T) {
  type mockTestingT (line 1104) | type mockTestingT struct
    method errorString (line 1109) | func (m *mockTestingT) errorString() string {
    method Errorf (line 1113) | func (m *mockTestingT) Errorf(format string, args ...interface{}) {
  type mockFailNowTestingT (line 1118) | type mockFailNowTestingT struct
    method Errorf (line 1120) | func (m *mockFailNowTestingT) Errorf(string, ...interface{}) {}
    method FailNow (line 1122) | func (m *mockFailNowTestingT) FailNow() {}
  function TestBytesEqual (line 1124) | func TestBytesEqual(t *testing.T) {
  function BenchmarkBytesEqual (line 1137) | func BenchmarkBytesEqual(b *testing.B) {
  function BenchmarkNotNil (line 1153) | func BenchmarkNotNil(b *testing.B) {
  function TestEventuallyFalse (line 1159) | func TestEventuallyFalse(t *testing.T) {
  function TestEventuallyTrue (line 1169) | func TestEventuallyTrue(t *testing.T) {
  function Test_validateEqualArgs (line 1181) | func Test_validateEqualArgs(t *testing.T) {
  function Test_truncatingFormat (line 1195) | func Test_truncatingFormat(t *testing.T) {

FILE: internal/assert/difflib.go
  function min (line 16) | func min(a, b int) int {
  function max (line 23) | func max(a, b int) int {
  function calculateRatio (line 30) | func calculateRatio(matches, length int) float64 {
  type Match (line 37) | type Match struct
  type OpCode (line 43) | type OpCode struct
  type SequenceMatcher (line 77) | type SequenceMatcher struct
    method SetSeqs (line 105) | func (m *SequenceMatcher) SetSeqs(a, b []string) {
    method SetSeq1 (line 119) | func (m *SequenceMatcher) SetSeq1(a []string) {
    method SetSeq2 (line 130) | func (m *SequenceMatcher) SetSeq2(b []string) {
    method chainB (line 141) | func (m *SequenceMatcher) chainB() {
    method isBJunk (line 182) | func (m *SequenceMatcher) isBJunk(s string) bool {
    method findLongestMatch (line 214) | func (m *SequenceMatcher) findLongestMatch(alo, ahi, blo, bhi int) Mat...
    method GetMatchingBlocks (line 298) | func (m *SequenceMatcher) GetMatchingBlocks() []Match {
    method GetOpCodes (line 366) | func (m *SequenceMatcher) GetOpCodes() []OpCode {
    method GetGroupedOpCodes (line 406) | func (m *SequenceMatcher) GetGroupedOpCodes(n int) [][]OpCode {
    method Ratio (line 460) | func (m *SequenceMatcher) Ratio() float64 {
    method QuickRatio (line 472) | func (m *SequenceMatcher) QuickRatio() float64 {
    method RealQuickRatio (line 504) | func (m *SequenceMatcher) RealQuickRatio() float64 {
  function NewMatcher (line 90) | func NewMatcher(a, b []string) *SequenceMatcher {
  function NewMatcherWithJunk (line 96) | func NewMatcherWithJunk(a, b []string, autoJunk bool,
  function formatRangeUnified (line 510) | func formatRangeUnified(start, stop int) string {
  type UnifiedDiff (line 524) | type UnifiedDiff struct
  function WriteUnifiedDiff (line 555) | func WriteUnifiedDiff(writer io.Writer, diff UnifiedDiff) error {
  function GetUnifiedDiffString (line 631) | func GetUnifiedDiffString(diff UnifiedDiff) (string, error) {
  function formatRangeContext (line 638) | func formatRangeContext(start, stop int) string {
  type ContextDiff (line 651) | type ContextDiff
  function WriteContextDiff (line 670) | func WriteContextDiff(writer io.Writer, diff ContextDiff) error {
  function GetContextDiffString (line 756) | func GetContextDiffString(diff ContextDiff) (string, error) {
  function SplitLines (line 764) | func SplitLines(s string) []string {

FILE: internal/assert/difflib_test.go
  function assertAlmostEqual (line 17) | func assertAlmostEqual(t *testing.T, a, b float64, places int) {
  function assertEqual (line 23) | func assertEqual(t *testing.T, a, b interface{}) {
  function splitChars (line 29) | func splitChars(s string) []string {
  function TestSequenceMatcherRatio (line 38) | func TestSequenceMatcherRatio(t *testing.T) {
  function TestGetOptCodes (line 45) | func TestGetOptCodes(t *testing.T) {
  function TestGroupedOpCodes (line 66) | func TestGroupedOpCodes(t *testing.T) {
  function rep (line 110) | func rep(s string, count int) string {
  function TestWithAsciiOneInsert (line 114) | func TestWithAsciiOneInsert(t *testing.T) {
  function TestWithAsciiOnDelete (line 130) | func TestWithAsciiOnDelete(t *testing.T) {
  function TestWithAsciiBJunk (line 138) | func TestWithAsciiBJunk(t *testing.T) {
  function TestSFBugsRatioForNullSeqn (line 158) | func TestSFBugsRatioForNullSeqn(t *testing.T) {
  function TestSFBugsComparingEmptyLists (line 165) | func TestSFBugsComparingEmptyLists(t *testing.T) {
  function TestOutputFormatRangeFormatUnified (line 178) | func TestOutputFormatRangeFormatUnified(t *testing.T) {
  function TestOutputFormatRangeFormatContext (line 195) | func TestOutputFormatRangeFormatContext(t *testing.T) {
  function TestOutputFormatTabDelimiter (line 219) | func TestOutputFormatTabDelimiter(t *testing.T) {
  function TestOutputFormatNoTrailingTabOnEmptyFiledate (line 243) | func TestOutputFormatNoTrailingTabOnEmptyFiledate(t *testing.T) {
  function TestOmitFilenames (line 260) | func TestOmitFilenames(t *testing.T) {
  function TestSplitLines (line 295) | func TestSplitLines(t *testing.T) {
  function benchmarkSplitLines (line 309) | func benchmarkSplitLines(b *testing.B, count int) {
  function BenchmarkSplitLines100 (line 320) | func BenchmarkSplitLines100(b *testing.B) {
  function BenchmarkSplitLines10000 (line 324) | func BenchmarkSplitLines10000(b *testing.B) {

FILE: internal/aws/awserr/error.go
  type Error (line 17) | type Error interface
  type BatchedErrors (line 36) | type BatchedErrors interface
  function New (line 48) | func New(code, message string, origErr error) Error {
  function NewBatchError (line 58) | func NewBatchError(code, message string, errs []error) BatchedErrors {

FILE: internal/aws/awserr/types.go
  function SprintError (line 21) | func SprintError(code, message, extra string, origErr error) string {
  type baseError (line 37) | type baseError struct
    method Error (line 74) | func (b baseError) Error() string {
    method String (line 85) | func (b baseError) String() string {
    method Code (line 90) | func (b baseError) Code() string {
    method Message (line 95) | func (b baseError) Message() string {
    method OrigErr (line 102) | func (b baseError) OrigErr() error {
    method OrigErrs (line 119) | func (b baseError) OrigErrs() []error {
  function newBaseError (line 59) | func newBaseError(code, message string, origErrs []error) *baseError {
  type errorList (line 124) | type errorList
    method Error (line 129) | func (e errorList) Error() string {

FILE: internal/aws/credentials/chain_provider.go
  type ChainProvider (line 30) | type ChainProvider struct
    method Retrieve (line 48) | func (c *ChainProvider) Retrieve() (Value, error) {
    method IsExpired (line 66) | func (c *ChainProvider) IsExpired() bool {
  function NewChainCredentials (line 37) | func NewChainCredentials(providers []Provider) *Credentials {

FILE: internal/aws/credentials/chain_provider_test.go
  type secondStubProvider (line 20) | type secondStubProvider struct
    method Retrieve (line 26) | func (s *secondStubProvider) Retrieve() (Value, error) {
    method IsExpired (line 32) | func (s *secondStubProvider) IsExpired() bool {
  function TestChainProviderWithNames (line 36) | func TestChainProviderWithNames(t *testing.T) {
  function TestChainProviderGet (line 78) | func TestChainProviderGet(t *testing.T) {
  function TestChainProviderIsExpired (line 108) | func TestChainProviderIsExpired(t *testing.T) {
  function TestChainProviderWithNoProvider (line 141) | func TestChainProviderWithNoProvider(t *testing.T) {
  function TestChainProviderWithNoValidProvider (line 155) | func TestChainProviderWithNoValidProvider(t *testing.T) {

FILE: internal/aws/credentials/credentials.go
  type Value (line 26) | type Value struct
    method HasKeys (line 42) | func (v Value) HasKeys() bool {
  type Provider (line 52) | type Provider interface
  type ProviderWithContext (line 63) | type ProviderWithContext interface
  type Credentials (line 83) | type Credentials struct
    method GetWithContext (line 109) | func (c *Credentials) GetWithContext(ctx context.Context) (Value, erro...
    method singleRetrieve (line 138) | func (c *Credentials) singleRetrieve(ctx context.Context) (interface{}...
    method asyncIsExpired (line 162) | func (c *Credentials) asyncIsExpired() <-chan Value {
    method isExpiredLocked (line 179) | func (c *Credentials) isExpiredLocked(creds interface{}) bool {
  function NewCredentials (line 92) | func NewCredentials(provider Provider) *Credentials {
  type suppressedContext (line 183) | type suppressedContext struct
    method Deadline (line 187) | func (s *suppressedContext) Deadline() (deadline time.Time, ok bool) {
    method Done (line 191) | func (s *suppressedContext) Done() <-chan struct{} {
    method Err (line 195) | func (s *suppressedContext) Err() error {

FILE: internal/aws/credentials/credentials_test.go
  function isExpired (line 22) | func isExpired(c *Credentials) bool {
  type stubProvider (line 29) | type stubProvider struct
    method Retrieve (line 36) | func (s *stubProvider) Retrieve() (Value, error) {
    method IsExpired (line 43) | func (s *stubProvider) IsExpired() bool {
  function TestCredentialsGet (line 47) | func TestCredentialsGet(t *testing.T) {
  function TestCredentialsGetWithError (line 72) | func TestCredentialsGetWithError(t *testing.T) {
  function TestCredentialsExpire (line 81) | func TestCredentialsExpire(t *testing.T) {
  function TestCredentialsGetWithProviderName (line 104) | func TestCredentialsGetWithProviderName(t *testing.T) {
  type MockProvider (line 118) | type MockProvider struct
    method IsExpired (line 129) | func (e *MockProvider) IsExpired() bool {
    method Retrieve (line 137) | func (*MockProvider) Retrieve() (Value, error) {
  function TestCredentialsIsExpired_Race (line 141) | func TestCredentialsIsExpired_Race(_ *testing.T) {
  type stubProviderConcurrent (line 161) | type stubProviderConcurrent struct
    method Retrieve (line 166) | func (s *stubProviderConcurrent) Retrieve() (Value, error) {
  function TestCredentialsGetConcurrent (line 171) | func TestCredentialsGetConcurrent(t *testing.T) {

FILE: internal/aws/signer/v4/header_rules.go
  type rules (line 15) | type rules
    method IsValid (line 25) | func (r rules) IsValid(value string) bool {
  type rule (line 19) | type rule interface
  type mapRule (line 35) | type mapRule
    method IsValid (line 38) | func (m mapRule) IsValid(value string) bool {
  type excludeList (line 44) | type excludeList struct
    method IsValid (line 49) | func (b excludeList) IsValid(value string) bool {

FILE: internal/aws/signer/v4/request.go
  function getHost (line 19) | func getHost(r *http.Request) string {
  function stripPort (line 38) | func stripPort(hostport string) string {
  function portOnly (line 53) | func portOnly(hostport string) string {
  function isDefaultPort (line 69) | func isDefaultPort(scheme, port string) bool {

FILE: internal/aws/signer/v4/uri_path.go
  function init (line 24) | func init() {
  function getURIPath (line 37) | func getURIPath(u *url.URL) string {
  function EscapePath (line 54) | func EscapePath(path string, encodeSep bool) string {

FILE: internal/aws/signer/v4/v4.go
  constant authorizationHeader (line 31) | authorizationHeader     = "Authorization"
  constant authHeaderSignatureElem (line 32) | authHeaderSignatureElem = "Signature="
  constant authHeaderPrefix (line 34) | authHeaderPrefix = "AWS4-HMAC-SHA256"
  constant timeFormat (line 35) | timeFormat       = "20060102T150405Z"
  constant shortTimeFormat (line 36) | shortTimeFormat  = "20060102"
  constant awsV4Request (line 37) | awsV4Request     = "aws4_request"
  constant emptyStringSHA256 (line 40) | emptyStringSHA256 = `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca49...
  type Signer (line 55) | type Signer struct
    method Sign (line 115) | func (v4 Signer) Sign(r *http.Request, body io.ReadSeeker, service, re...
    method signWithBody (line 119) | func (v4 Signer) signWithBody(r *http.Request, body io.ReadSeeker, ser...
  function NewSigner (line 62) | func NewSigner(credentials *credentials.Credentials) *Signer {
  type signingCtx (line 70) | type signingCtx struct
    method sanitizeHostForHeader (line 162) | func (ctx *signingCtx) sanitizeHostForHeader() {
    method assignAmzQueryValues (line 171) | func (ctx *signingCtx) assignAmzQueryValues() {
    method build (line 177) | func (ctx *signingCtx) build() error {
    method buildTime (line 202) | func (ctx *signingCtx) buildTime() {
    method buildCredentialString (line 206) | func (ctx *signingCtx) buildCredentialString() {
    method buildCanonicalHeaders (line 210) | func (ctx *signingCtx) buildCanonicalHeaders(r rule, header http.Heade...
    method buildCanonicalString (line 256) | func (ctx *signingCtx) buildCanonicalString() {
    method buildStringToSign (line 273) | func (ctx *signingCtx) buildStringToSign() {
    method buildSignature (line 282) | func (ctx *signingCtx) buildSignature() {
    method buildBodyDigest (line 288) | func (ctx *signingCtx) buildBodyDigest() error {
    method isRequestSigned (line 310) | func (ctx *signingCtx) isRequestSigned() bool {
  function hmacSHA256 (line 314) | func hmacSHA256(key []byte, data []byte) []byte {
  function hashSHA256 (line 320) | func hashSHA256(data []byte) []byte {
  function makeSha256Reader (line 326) | func makeSha256Reader(reader io.ReadSeeker) (hashBytes []byte, err error) {
  constant doubleSpace (line 349) | doubleSpace = "  "
  function stripExcessSpaces (line 353) | func stripExcessSpaces(vals []string) {
  function buildSigningScope (line 398) | func buildSigningScope(region, service string, dt time.Time) string {
  function deriveSigningKey (line 407) | func deriveSigningKey(region, service, secretKey string, dt time.Time) [...
  function formatShortTime (line 415) | func formatShortTime(dt time.Time) string {
  function formatTime (line 419) | func formatTime(dt time.Time) string {

FILE: internal/aws/signer/v4/v4_test.go
  function epochTime (line 30) | func epochTime() time.Time { return time.Unix(0, 0) }
  function TestStripExcessHeaders (line 32) | func TestStripExcessHeaders(t *testing.T) {
  function buildRequest (line 75) | func buildRequest(body string) (*http.Request, io.ReadSeeker) {
  function buildRequestReaderSeeker (line 80) | func buildRequestReaderSeeker(serviceName, region, body string) (*http.R...
  function buildRequestWithBodyReader (line 85) | func buildRequestWithBodyReader(serviceName, region string, body io.Read...
  function buildSigner (line 119) | func buildSigner() Signer {
  function newTestStaticCredentials (line 125) | func newTestStaticCredentials() *credentials.Credentials {
  function TestSignRequest (line 133) | func TestSignRequest(t *testing.T) {
  function TestSignUnseekableBody (line 153) | func TestSignUnseekableBody(t *testing.T) {
  function TestSignPreComputedHashUnseekableBody (line 166) | func TestSignPreComputedHashUnseekableBody(t *testing.T) {
  function TestSignPrecomputedBodyChecksum (line 183) | func TestSignPrecomputedBodyChecksum(t *testing.T) {
  function TestSignWithRequestBody (line 197) | func TestSignWithRequestBody(t *testing.T) {
  function TestSignWithRequestBody_Overwrite (line 235) | func TestSignWithRequestBody_Overwrite(t *testing.T) {
  function TestBuildCanonicalRequest (line 275) | func TestBuildCanonicalRequest(t *testing.T) {
  function TestSignWithBody_ReplaceRequestBody (line 294) | func TestSignWithBody_ReplaceRequestBody(t *testing.T) {
  function TestRequestHost (line 316) | func TestRequestHost(t *testing.T) {
  function TestSign_buildCanonicalHeaders (line 335) | func TestSign_buildCanonicalHeaders(t *testing.T) {
  function BenchmarkSignRequest (line 381) | func BenchmarkSignRequest(b *testing.B) {
  function BenchmarkStripExcessSpaces (line 411) | func BenchmarkStripExcessSpaces(b *testing.B) {
  type readerSeekerWrapper (line 420) | type readerSeekerWrapper struct
    method Read (line 424) | func (r *readerSeekerWrapper) Read(p []byte) (n int, err error) {
    method Seek (line 428) | func (r *readerSeekerWrapper) Seek(offset int64, whence int) (int64, e...
    method Len (line 432) | func (r *readerSeekerWrapper) Len() int {

FILE: internal/aws/types.go
  function ReadSeekCloser (line 29) | func ReadSeekCloser(r io.Reader) ReaderSeekerCloser {
  type ReaderSeekerCloser (line 35) | type ReaderSeekerCloser struct
    method Read (line 62) | func (r ReaderSeekerCloser) Read(p []byte) (int, error) {
    method Seek (line 76) | func (r ReaderSeekerCloser) Seek(offset int64, whence int) (int64, err...
    method IsSeeker (line 85) | func (r ReaderSeekerCloser) IsSeeker() bool {
    method HasLen (line 92) | func (r ReaderSeekerCloser) HasLen() (int, bool) {
    method GetLen (line 109) | func (r ReaderSeekerCloser) GetLen() (int64, error) {
  function IsReaderSeekable (line 42) | func IsReaderSeekable(r io.Reader) bool {
  function SeekerLen (line 123) | func SeekerLen(s io.Seeker) (int64, error) {
  function seekerLen (line 136) | func seekerLen(s io.Seeker) (int64, error) {

FILE: internal/binaryutil/binaryutil.go
  function Append32 (line 20) | func Append32[T ~uint32 | ~int32](dst []byte, v T) []byte {
  function Append64 (line 34) | func Append64[T ~uint64 | ~int64](dst []byte, v T) []byte {
  function ReadU32 (line 50) | func ReadU32(src []byte) (uint32, []byte, bool) {
  function ReadI32 (line 64) | func ReadI32(src []byte) (int32, []byte, bool) {
  function ReadU64 (line 82) | func ReadU64(src []byte) (uint64, []byte, bool) {
  function ReadI64 (line 96) | func ReadI64(src []byte) (int64, []byte, bool) {
  function ReadCStringBytes (line 118) | func ReadCStringBytes(src []byte) ([]byte, []byte, bool) {
  function ReadCString (line 129) | func ReadCString(src []byte) (string, []byte, bool) {

FILE: internal/binaryutil/binaryutil_test.go
  function BenchmarkAppend32 (line 41) | func BenchmarkAppend32(b *testing.B) {
  function BenchmarkAppend64 (line 53) | func BenchmarkAppend64(b *testing.B) {
  function BenchmarkStdlibAppendUint32 (line 66) | func BenchmarkStdlibAppendUint32(b *testing.B) {
  function BenchmarkStdlibAppendUint64 (line 78) | func BenchmarkStdlibAppendUint64(b *testing.B) {
  function BenchmarkReadU32 (line 94) | func BenchmarkReadU32(b *testing.B) {
  function BenchmarkReadI32 (line 104) | func BenchmarkReadI32(b *testing.B) {
  function BenchmarkReadU64 (line 114) | func BenchmarkReadU64(b *testing.B) {
  function BenchmarkReadI64 (line 124) | func BenchmarkReadI64(b *testing.B) {
  function BenchmarkStdlibUint32 (line 135) | func BenchmarkStdlibUint32(b *testing.B) {
  function BenchmarkStdlibUint64 (line 145) | func BenchmarkStdlibUint64(b *testing.B) {
  function BenchmarkReadCString (line 159) | func BenchmarkReadCString(b *testing.B) {
  function BenchmarkReadCStringBytes (line 169) | func BenchmarkReadCStringBytes(b *testing.B) {
  function BenchmarkReadCStringLong (line 179) | func BenchmarkReadCStringLong(b *testing.B) {
  function TestAppend32RoundTrip (line 198) | func TestAppend32RoundTrip(t *testing.T) {
  function TestAppend32RoundTripSigned (line 220) | func TestAppend32RoundTripSigned(t *testing.T) {
  function TestAppend64RoundTrip (line 251) | func TestAppend64RoundTrip(t *testing.T) {
  function TestAppend64RoundTripSigned (line 273) | func TestAppend64RoundTripSigned(t *testing.T) {
  function TestAppend32MatchesStdlib (line 308) | func TestAppend32MatchesStdlib(t *testing.T) {
  function TestAppend64MatchesStdlib (line 323) | func TestAppend64MatchesStdlib(t *testing.T) {
  function TestReadU32MatchesStdlib (line 338) | func TestReadU32MatchesStdlib(t *testing.T) {
  function TestReadU64MatchesStdlib (line 358) | func TestReadU64MatchesStdlib(t *testing.T) {
  function TestReadU32ShortSlice (line 382) | func TestReadU32ShortSlice(t *testing.T) {
  function TestReadI32ShortSlice (line 411) | func TestReadI32ShortSlice(t *testing.T) {
  function TestReadU64ShortSlice (line 440) | func TestReadU64ShortSlice(t *testing.T) {
  function TestReadI64ShortSlice (line 469) | func TestReadI64ShortSlice(t *testing.T) {
  function TestReadU32ReturnsRemaining (line 502) | func TestReadU32ReturnsRemaining(t *testing.T) {
  function TestReadU64ReturnsRemaining (line 519) | func TestReadU64ReturnsRemaining(t *testing.T) {
  function TestReadCString (line 539) | func TestReadCString(t *testing.T) {
  function TestReadCStringBytes (line 609) | func TestReadCStringBytes(t *testing.T) {
  function TestAppend32ToExistingBuffer (line 676) | func TestAppend32ToExistingBuffer(t *testing.T) {
  function TestAppend64ToExistingBuffer (line 697) | func TestAppend64ToExistingBuffer(t *testing.T) {
  function TestAppend32ByteOrder (line 722) | func TestAppend32ByteOrder(t *testing.T) {
  function TestAppend64ByteOrder (line 732) | func TestAppend64ByteOrder(t *testing.T) {
  function TestReadU32ByteOrder (line 742) | func TestReadU32ByteOrder(t *testing.T) {
  function TestReadU64ByteOrder (line 755) | func TestReadU64ByteOrder(t *testing.T) {
  function TestMultipleSequentialReads (line 772) | func TestMultipleSequentialReads(t *testing.T) {

FILE: internal/bsoncoreutil/bsoncoreutil.go
  function Truncate (line 10) | func Truncate(str string, width int) string {

FILE: internal/bsoncoreutil/bsoncoreutil_test.go
  function TestTruncate (line 15) | func TestTruncate(t *testing.T) {

FILE: internal/bsonutil/bsonutil.go
  function StringSliceFromRawValue (line 18) | func StringSliceFromRawValue(name string, val bson.RawValue) ([]string, ...
  function RawArrayToDocuments (line 41) | func RawArrayToDocuments(arr bson.RawArray) []bson.Raw {
  function RawToInterfaces (line 56) | func RawToInterfaces(docs ...bson.Raw) []any {

FILE: internal/cmd/benchmark/benchmark_test.go
  constant defaultOutputFileName (line 32) | defaultOutputFileName = "perf.json"
  constant legacyHelloLowercase (line 33) | legacyHelloLowercase  = "ismaster"
  constant tarFile (line 34) | tarFile               = "perf.tar.gz"
  constant perfDir (line 35) | perfDir               = "perf"
  constant testdataURL (line 36) | testdataURL           = "https://s3.amazonaws.com/boxes.10gen.com/build/...
  constant perftestDB (line 37) | perftestDB            = "perftest"
  constant corpusColl (line 38) | corpusColl            = "corpus"
  constant bsonDataDir (line 39) | bsonDataDir           = "extended_bson"
  constant flatBSONData (line 42) | flatBSONData = "flat_bson.json"
  constant deepBSONData (line 43) | deepBSONData = "deep_bson.json"
  constant fullBSONData (line 44) | fullBSONData = "full_bson.json"
  constant singleAndMultiDataDir (line 47) | singleAndMultiDataDir = "single_and_multi_document"
  constant tweetData (line 48) | tweetData             = "tweet.json"
  constant smallData (line 49) | smallData             = "small_doc.json"
  constant largeData (line 50) | largeData             = "large_doc.json"
  constant opsPerSecondMaxName (line 53) | opsPerSecondMaxName = "ops_per_second_max"
  constant opsPerSecondMinName (line 54) | opsPerSecondMinName = "ops_per_second_min"
  constant opsPerSecondMedName (line 55) | opsPerSecondMedName = "ops_per_second_med"
  function init (line 63) | func init() {
  type metrics (line 67) | type metrics struct
  function recordMetrics (line 71) | func recordMetrics(b *testing.B, throughput *metrics, fn func(*testing.B...
  function reportThroughputStats (line 84) | func reportThroughputStats(b *testing.B, times []float64) {
  function reportMetrics (line 100) | func reportMetrics(b *testing.B, metrics *metrics) {
  function testdataDir (line 109) | func testdataDir(tb testing.TB) string {
  function testdataTarFileName (line 129) | func testdataTarFileName(tb testing.TB) string {
  function testdataPerfDir (line 134) | func testdataPerfDir(tb testing.TB) string {
  function downloadTestDataTgz (line 139) | func downloadTestDataTgz(t *testing.T) {
  function extractTestDataTgz (line 155) | func extractTestDataTgz(t *testing.T) {
  function loadSourceDocument (line 196) | func loadSourceDocument(b *testing.B, canonicalOnly bool, pathParts ...s...
  function benchmarkBSONEncoding (line 212) | func benchmarkBSONEncoding(b *testing.B, canonicalOnly bool, source stri...
  function benchmarkBSONDecoding (line 231) | func benchmarkBSONDecoding(b *testing.B, canonicalOnly bool, source stri...
  function BenchmarkBSONFlatDocumentEncoding (line 255) | func BenchmarkBSONFlatDocumentEncoding(b *testing.B) {
  function BenchmarkBSONFlatDocumentDecoding (line 261) | func BenchmarkBSONFlatDocumentDecoding(b *testing.B) {
  function BenchmarkBSONDeepDocumentEncoding (line 267) | func BenchmarkBSONDeepDocumentEncoding(b *testing.B) {
  function BenchmarkBSONDeepDocumentDecoding (line 273) | func BenchmarkBSONDeepDocumentDecoding(b *testing.B) {
  function BenchmarkBSONFullDocumentEncoding (line 279) | func BenchmarkBSONFullDocumentEncoding(b *testing.B) {
  function BenchmarkBSONFullDocumentDecoding (line 285) | func BenchmarkBSONFullDocumentDecoding(b *testing.B) {
  function BenchmarkSingleRunCommand (line 291) | func BenchmarkSingleRunCommand(b *testing.B) {
  function setupBench (line 320) | func setupBench(b *testing.B) (*mongo.Collection, func(b *testing.B)) {
  function BenchmarkSingleFindOneByID (line 355) | func BenchmarkSingleFindOneByID(b *testing.B) {
  function benchmarkSingleInsert (line 388) | func benchmarkSingleInsert(b *testing.B, source string) {
  function BenchmarkSmallDocInsertOne (line 410) | func BenchmarkSmallDocInsertOne(b *testing.B) {
  function BenchmarkLargeDocInsertOne (line 415) | func BenchmarkLargeDocInsertOne(b *testing.B) {
  function BenchmarkMultiFindMany (line 420) | func BenchmarkMultiFindMany(b *testing.B) {
  function benchmarkMultiInsert (line 467) | func benchmarkMultiInsert(b *testing.B, source string) {
  function BenchmarkMultiInsertSmallDocument (line 489) | func BenchmarkMultiInsertSmallDocument(b *testing.B) {
  function BenchmarkMultiInsertLargeDocument (line 494) | func BenchmarkMultiInsertLargeDocument(b *testing.B) {
  function runBenchmark (line 498) | func runBenchmark(name string, fn func(*testing.B)) (poplarTest, error) {
  function TestRunAllBenchmarks (line 552) | func TestRunAllBenchmarks(t *testing.T) {
  type poplarTest (line 615) | type poplarTest struct
  type poplarTestInfo (line 627) | type poplarTestInfo struct
  type poplarTestArtifact (line 637) | type poplarTestArtifact struct
  type poplarTestMetrics (line 665) | type poplarTestMetrics struct

FILE: internal/cmd/build-oss-fuzz-corpus/main.go
  constant dataDir (line 25) | dataDir = "testdata/bson-corpus/"
  type validityTestCase (line 27) | type validityTestCase struct
  function findJSONFilesInDir (line 35) | func findJSONFilesInDir(dir string) ([]string, error) {
  function jsonToNative (line 55) | func jsonToNative(ej, ejType, testDesc string) (bson.D, error) {
  function jsonToBytes (line 64) | func jsonToBytes(ej, ejType, testDesc string) ([]byte, error) {
  function seedExtJSON (line 79) | func seedExtJSON(zw *zip.Writer, extJSON string, extJSONType string, des...
  function seedTestCase (line 102) | func seedTestCase(zw *zip.Writer, tcase []*validityTestCase) {
  function seedBSONCorpus (line 125) | func seedBSONCorpus(zw *zip.Writer) {
  function main (line 153) | func main() {

FILE: internal/cmd/faas/awslambda/mongodb/bootstrap.go
  constant timeout (line 24) | timeout = 60 * time.Second
  type eventListener (line 29) | type eventListener struct
    method commandMonitor (line 41) | func (listener *eventListener) commandMonitor() *event.CommandMonitor {
    method serverMonitor (line 61) | func (listener *eventListener) serverMonitor() *event.ServerMonitor {
    method poolMonitor (line 88) | func (listener *eventListener) poolMonitor() *event.PoolMonitor {
  type response (line 102) | type response struct
  function gateway500 (line 111) | func gateway500() events.APIGatewayProxyResponse {
  function handler (line 119) | func handler(ctx context.Context, request events.APIGatewayProxyRequest)...
  function main (line 190) | func main() {

FILE: internal/cmd/parse-api-report/main.go
  function main (line 17) | func main() {

FILE: internal/cmd/testatlas/atlas_test.go
  function TestAtlas (line 32) | func TestAtlas(t *testing.T) {
  function runTest (line 157) | func runTest(ctx context.Context, clientOpts *options.ClientOptions) err...
  function createAtlasX509DevCertKeyFile (line 181) | func createAtlasX509DevCertKeyFile(t *testing.T) string {
  function createAtlasX509DevCertKeyFileNoUser (line 198) | func createAtlasX509DevCertKeyFileNoUser(t *testing.T) string {
  function addTLSCertKeyFile (line 215) | func addTLSCertKeyFile(t *testing.T, certKeyFile, uri string) string {

FILE: internal/cmd/testentauth/main.go
  function main (line 20) | func main() {

FILE: internal/cmd/testkms/main.go
  function main (line 37) | func main() {

FILE: internal/codecutil/encoding.go
  type MarshalError (line 24) | type MarshalError struct
    method Error (line 30) | func (e MarshalError) Error() string {
    method Unwrap (line 35) | func (e MarshalError) Unwrap() error { return e.Err }
  type EncoderFn (line 38) | type EncoderFn
  function MarshalValue (line 42) | func MarshalValue(val any, encFn EncoderFn) (bsoncore.Value, error) {

FILE: internal/codecutil/encoding_test.go
  function testEncFn (line 17) | func testEncFn(t *testing.T) EncoderFn {
  function TestMarshalValue (line 26) | func TestMarshalValue(t *testing.T) {

FILE: internal/credproviders/assume_role_provider.go
  constant assumeRoleProviderName (line 24) | assumeRoleProviderName = "AssumeRoleProvider"
  constant stsURI (line 26) | stsURI = `https://sts.amazonaws.com/?Action=AssumeRoleWithWebIdentity&Ro...
  type AssumeRoleProvider (line 30) | type AssumeRoleProvider struct
    method RetrieveWithContext (line 61) | func (a *AssumeRoleProvider) RetrieveWithContext(ctx context.Context) ...
    method Retrieve (line 141) | func (a *AssumeRoleProvider) Retrieve() (credentials.Value, error) {
    method IsExpired (line 146) | func (a *AssumeRoleProvider) IsExpired() bool {
  function NewAssumeRoleProvider (line 47) | func NewAssumeRoleProvider(httpClient *http.Client, expiryWindow time.Du...

FILE: internal/credproviders/ec2_provider.go
  constant ec2ProviderName (line 23) | ec2ProviderName = "EC2Provider"
  constant awsEC2URI (line 25) | awsEC2URI       = "http://169.254.169.254/"
  constant awsEC2RolePath (line 26) | awsEC2RolePath  = "latest/meta-data/iam/security-credentials/"
  constant awsEC2TokenPath (line 27) | awsEC2TokenPath = "latest/api/token"
  constant defaultHTTPTimeout (line 29) | defaultHTTPTimeout = 10 * time.Second
  type EC2Provider (line 33) | type EC2Provider struct
    method getToken (line 53) | func (e *EC2Provider) getToken(ctx context.Context) (string, error) {
    method getRoleName (line 82) | func (e *EC2Provider) getRoleName(ctx context.Context, token string) (...
    method getCredentials (line 110) | func (e *EC2Provider) getCredentials(ctx context.Context, token string...
    method RetrieveWithContext (line 150) | func (e *EC2Provider) RetrieveWithContext(ctx context.Context) (creden...
    method Retrieve (line 176) | func (e *EC2Provider) Retrieve() (credentials.Value, error) {
    method IsExpired (line 181) | func (e *EC2Provider) IsExpired() bool {
  function NewEC2Provider (line 46) | func NewEC2Provider(httpClient *http.Client, expiryWindow time.Duration)...

FILE: internal/credproviders/ecs_provider.go
  constant ecsProviderName (line 22) | ecsProviderName = "ECSProvider"
  constant awsRelativeURI (line 24) | awsRelativeURI = "http://169.254.170.2/"
  type ECSProvider (line 28) | type ECSProvider struct
    method RetrieveWithContext (line 53) | func (e *ECSProvider) RetrieveWithContext(ctx context.Context) (creden...
    method Retrieve (line 105) | func (e *ECSProvider) Retrieve() (credentials.Value, error) {
    method IsExpired (line 110) | func (e *ECSProvider) IsExpired() bool {
  function NewECSProvider (line 43) | func NewECSProvider(httpClient *http.Client, expiryWindow time.Duration)...

FILE: internal/credproviders/env_provider.go
  constant envProviderName (line 16) | envProviderName = "EnvProvider"
  type EnvVar (line 19) | type EnvVar
    method Get (line 22) | func (ev EnvVar) Get() string {
  type EnvProvider (line 28) | type EnvProvider struct
    method Retrieve (line 49) | func (e *EnvProvider) Retrieve() (credentials.Value, error) {
    method IsExpired (line 67) | func (e *EnvProvider) IsExpired() bool {
  function NewEnvProvider (line 37) | func NewEnvProvider() *EnvProvider {

FILE: internal/credproviders/imds_provider.go
  constant AzureProviderName (line 23) | AzureProviderName = "AzureProvider"
  constant azureURI (line 25) | azureURI = "http://169.254.169.254/metadata/identity/oauth2/token"
  type AzureProvider (line 29) | type AzureProvider struct
    method RetrieveWithContext (line 45) | func (a *AzureProvider) RetrieveWithContext(ctx context.Context) (cred...
    method Retrieve (line 96) | func (a *AzureProvider) Retrieve() (credentials.Value, error) {
    method IsExpired (line 101) | func (a *AzureProvider) IsExpired() bool {
  function NewAzureProvider (line 36) | func NewAzureProvider(httpClient *http.Client, expiryWindow time.Duratio...

FILE: internal/credproviders/static_provider.go
  constant staticProviderName (line 16) | staticProviderName = "StaticProvider"
  type StaticProvider (line 20) | type StaticProvider struct
    method Retrieve (line 44) | func (s *StaticProvider) Retrieve() (credentials.Value, error) {
    method IsExpired (line 56) | func (s *StaticProvider) IsExpired() bool {
  function verify (line 27) | func verify(v credentials.Value) error {

FILE: internal/csfle/csfle.go
  constant EncryptedCacheCollection (line 17) | EncryptedCacheCollection      = "ecc"
  constant EncryptedStateCollection (line 18) | EncryptedStateCollection      = "esc"
  constant EncryptedCompactionCollection (line 19) | EncryptedCompactionCollection = "ecoc"
  function GetEncryptedStateCollectionName (line 23) | func GetEncryptedStateCollectionName(efBSON bsoncore.Document, dataColle...

FILE: internal/csot/csot.go
  type clientLevel (line 14) | type clientLevel struct
  function isClientLevel (line 16) | func isClientLevel(ctx context.Context) bool {
  function IsTimeoutContext (line 27) | func IsTimeoutContext(ctx context.Context) bool {
  function WithTimeout (line 40) | func WithTimeout(parent context.Context, timeout *time.Duration) (contex...
  function WithServerSelectionTimeout (line 73) | func WithServerSelectionTimeout(
  type ZeroRTTMonitor (line 86) | type ZeroRTTMonitor struct
    method EWMA (line 89) | func (zrm *ZeroRTTMonitor) EWMA() time.Duration {
    method Min (line 94) | func (zrm *ZeroRTTMonitor) Min() time.Duration {
    method P90 (line 99) | func (zrm *ZeroRTTMonitor) P90() time.Duration {
    method Stats (line 104) | func (zrm *ZeroRTTMonitor) Stats() string {

FILE: internal/csot/csot_test.go
  function newTestContext (line 18) | func newTestContext(t *testing.T, timeout time.Duration) context.Context {
  function TestWithServerSelectionTimeout (line 25) | func TestWithServerSelectionTimeout(t *testing.T) {
  function TestWithTimeout (line 151) | func TestWithTimeout(t *testing.T) {

FILE: internal/decimal128/decimal128.go
  constant MaxDecimal128Exp (line 15) | MaxDecimal128Exp = 6111
  constant MinDecimal128Exp (line 16) | MinDecimal128Exp = -6176
  function divmod (line 19) | func divmod(h, l uint64, div uint32) (qh, ql uint64, rem uint32) {
  function String (line 37) | func String(h, l uint64) string {

FILE: internal/docexamples/examples.go
  function requireCursorLength (line 29) | func requireCursorLength(t *testing.T, cursor *mongo.Cursor, length int) {
  function containsKey (line 39) | func containsKey(doc bson.Raw, key ...string) bool {
  function parseDate (line 44) | func parseDate(t *testing.T, dateString string) time.Time {
  function InsertExamples (line 54) | func InsertExamples(t *testing.T, db *mongo.Database) {
  function QueryToplevelFieldsExamples (line 143) | func QueryToplevelFieldsExamples(t *testing.T, db *mongo.Database) {
  function QueryEmbeddedDocumentsExamples (line 313) | func QueryEmbeddedDocumentsExamples(t *testing.T, db *mongo.Database) {
  function QueryArraysExamples (line 474) | func QueryArraysExamples(t *testing.T, db *mongo.Database) {
  function QueryArrayEmbeddedDocumentsExamples (line 660) | func QueryArrayEmbeddedDocumentsExamples(t *testing.T, db *mongo.Databas...
  function QueryNullMissingFieldsExamples (line 890) | func QueryNullMissingFieldsExamples(t *testing.T, db *mongo.Database) {
  function ProjectionExamples (line 969) | func ProjectionExamples(t *testing.T, db *mongo.Database) {
  function UpdateExamples (line 1354) | func UpdateExamples(t *testing.T, db *mongo.Database) {
  function DeleteExamples (line 1634) | func DeleteExamples(t *testing.T, db *mongo.Database) {
  function UpdateEmployeeInfo (line 1755) | func UpdateEmployeeInfo(ctx context.Context, client *mongo.Client) error {
  function RunTransactionWithRetry (line 1808) | func RunTransactionWithRetry(ctx context.Context, txnFn func(context.Con...
  function CommitWithRetry (line 1831) | func CommitWithRetry(ctx context.Context) error {
  function TransactionsExamples (line 1858) | func TransactionsExamples(ctx context.Context, client *mongo.Client) err...
  function WithTransactionExample (line 1965) | func WithTransactionExample(ctx context.Context) error {
  function ChangeStreamExamples (line 2018) | func ChangeStreamExamples(t *testing.T, db *mongo.Database) {
  function AggregationExamples (line 2129) | func AggregationExamples(t *testing.T, db *mongo.Database) {
  function CausalConsistencyExamples (line 2552) | func CausalConsistencyExamples(client *mongo.Client) error {
  function RunCommandExamples (line 2642) | func RunCommandExamples(t *testing.T, db *mongo.Database) {
  function IndexExamples (line 2663) | func IndexExamples(t *testing.T, db *mongo.Database) {
  function StableAPIExample (line 2783) | func StableAPIExample() {
  function StableAPIStrictExample (line 2805) | func StableAPIStrictExample() {
  function StableAPINonStrictExample (line 2827) | func StableAPINonStrictExample() {
  function StableAPIDeprecationErrorsExample (line 2850) | func StableAPIDeprecationErrorsExample() {
  function StableAPIStrictCountExample (line 2871) | func StableAPIStrictCountExample(t *testing.T) {
  function StableAPIExamples (line 2933) | func StableAPIExamples() {
  function insertSnapshotQueryTestData (line 2940) | func insertSnapshotQueryTestData(mt *mtest.T) {
  function snapshotQueryPetExample (line 2986) | func snapshotQueryPetExample(mt *mtest.T) error {
  function snapshotQueryRetailExample (line 3050) | func snapshotQueryRetailExample(mt *mtest.T) error {
  function SnapshotQueryExamples (line 3116) | func SnapshotQueryExamples(mt *mtest.T) {

FILE: internal/docexamples/examples_test.go
  function TestMain (line 24) | func TestMain(m *testing.M) {
  function TestDocumentationExamples (line 43) | func TestDocumentationExamples(t *testing.T) {

FILE: internal/driverutil/description.go
  constant MinWireVersion (line 24) | MinWireVersion = 8
  constant MaxWireVersion (line 25) | MaxWireVersion = 25
  function equalWireVersion (line 28) | func equalWireVersion(wv1, wv2 *description.VersionRange) bool {
  function EqualServers (line 42) | func EqualServers(srv1, srv2 description.Server) bool {
  function IsServerLoadBalanced (line 112) | func IsServerLoadBalanced(srv description.Server) bool {
  function stringSliceFromRawElement (line 120) | func stringSliceFromRawElement(element bson.RawElement) ([]string, error) {
  function decodeStringMap (line 124) | func decodeStringMap(element bson.RawElement, name string) (map[string]s...
  function NewTopologyVersion (line 146) | func NewTopologyVersion(doc bson.Raw) (*description.TopologyVersion, err...
  function NewVersionRange (line 171) | func NewVersionRange(min, max int32) description.VersionRange {
  function VersionRangeIncludes (line 177) | func VersionRangeIncludes(versionRange description.VersionRange, v int32...
  function CompareTopologyVersions (line 188) | func CompareTopologyVersions(receiver, response *description.TopologyVer...
  function NewServerDescription (line 206) | func NewServerDescription(addr address.Address, response bson.Raw) descr...
  function sliceStringEqual (line 481) | func sliceStringEqual(a []string, b []string) bool {

FILE: internal/driverutil/hello.go
  constant AwsLambdaPrefix (line 14) | AwsLambdaPrefix = "AWS_Lambda_"
  constant EnvVarAWSExecutionEnv (line 20) | EnvVarAWSExecutionEnv = "AWS_EXECUTION_ENV"
  constant EnvVarAWSLambdaRuntimeAPI (line 22) | EnvVarAWSLambdaRuntimeAPI = "AWS_LAMBDA_RUNTIME_API"
  constant EnvVarFunctionsWorkerRuntime (line 24) | EnvVarFunctionsWorkerRuntime = "FUNCTIONS_WORKER_RUNTIME"
  constant EnvVarKService (line 26) | EnvVarKService = "K_SERVICE"
  constant EnvVarFunctionName (line 28) | EnvVarFunctionName = "FUNCTION_NAME"
  constant EnvVarVercel (line 30) | EnvVarVercel = "VERCEL"
  constant EnvVarK8s (line 32) | EnvVarK8s = "KUBERNETES_SERVICE_HOST"
  constant EnvVarAWSRegion (line 39) | EnvVarAWSRegion = "AWS_REGION"
  constant EnvVarAWSLambdaFunctionMemorySize (line 41) | EnvVarAWSLambdaFunctionMemorySize = "AWS_LAMBDA_FUNCTION_MEMORY_SIZE"
  constant EnvVarFunctionMemoryMB (line 43) | EnvVarFunctionMemoryMB = "FUNCTION_MEMORY_MB"
  constant EnvVarFunctionTimeoutSec (line 45) | EnvVarFunctionTimeoutSec = "FUNCTION_TIMEOUT_SEC"
  constant EnvVarFunctionRegion (line 47) | EnvVarFunctionRegion = "FUNCTION_REGION"
  constant EnvVarVercelRegion (line 49) | EnvVarVercelRegion = "VERCEL_REGION"
  constant EnvNameAWSLambda (line 56) | EnvNameAWSLambda = "aws.lambda"
  constant EnvNameAzureFunc (line 58) | EnvNameAzureFunc = "azure.func"
  constant EnvNameGCPFunc (line 60) | EnvNameGCPFunc = "gcp.func"
  constant EnvNameVercel (line 62) | EnvNameVercel = "vercel"
  function GetFaasEnvName (line 71) | func GetFaasEnvName() string {

FILE: internal/driverutil/operation.go
  constant AbortTransactionOp (line 18) | AbortTransactionOp  = "abortTransaction"
  constant AggregateOp (line 19) | AggregateOp         = "aggregate"
  constant CommitTransactionOp (line 20) | CommitTransactionOp = "commitTransaction"
  constant CountOp (line 21) | CountOp             = "count"
  constant CreateOp (line 22) | CreateOp            = "create"
  constant CreateIndexesOp (line 23) | CreateIndexesOp     = "createIndexes"
  constant DeleteOp (line 24) | DeleteOp            = "delete"
  constant DistinctOp (line 25) | DistinctOp          = "distinct"
  constant DropOp (line 26) | DropOp              = "drop"
  constant DropDatabaseOp (line 27) | DropDatabaseOp      = "dropDatabase"
  constant DropIndexesOp (line 28) | DropIndexesOp       = "dropIndexes"
  constant EndSessionsOp (line 29) | EndSessionsOp       = "endSessions"
  constant FindAndModifyOp (line 30) | FindAndModifyOp     = "findAndModify"
  constant FindOp (line 31) | FindOp              = "find"
  constant InsertOp (line 32) | InsertOp            = "insert"
  constant ListCollectionsOp (line 33) | ListCollectionsOp   = "listCollections"
  constant ListIndexesOp (line 34) | ListIndexesOp       = "listIndexes"
  constant ListDatabasesOp (line 35) | ListDatabasesOp     = "listDatabases"
  constant UpdateOp (line 36) | UpdateOp            = "update"
  constant BulkWriteOp (line 37) | BulkWriteOp         = "bulkWrite"
  function CalculateMaxTimeMS (line 44) | func CalculateMaxTimeMS(ctx context.Context, rttMin time.Duration) (int6...

FILE: internal/driverutil/operation_test.go
  function TestCalculateMaxTimeMS (line 18) | func TestCalculateMaxTimeMS(t *testing.T) {

FILE: internal/errutil/join.go
  function join (line 17) | func join(errs ...error) error {
  type joinError (line 44) | type joinError struct
    method Error (line 48) | func (e *joinError) Error() string {
    method Unwrap (line 64) | func (e *joinError) Unwrap() error {
    method Is (line 72) | func (e *joinError) Is(target error) bool {
    method As (line 80) | func (e *joinError) As(target any) bool {

FILE: internal/errutil/join_go1.19.go
  function Join (line 17) | func Join(errs ...error) error {

FILE: internal/errutil/join_go1.20.go
  function Join (line 14) | func Join(errs ...error) error {

FILE: internal/errutil/join_test.go
  function TestJoin_Nil (line 20) | func TestJoin_Nil(t *testing.T) {
  function TestJoin_Error (line 30) | func TestJoin_Error(t *testing.T) {
  function TestJoin_ErrorsIs (line 69) | func TestJoin_ErrorsIs(t *testing.T) {
  type errType1 (line 154) | type errType1 struct
    method Error (line 156) | func (errType1) Error() string { return "" }
  type errType2 (line 158) | type errType2 struct
    method Error (line 160) | func (errType2) Error() string { return "" }
  function TestJoin_ErrorsAs (line 164) | func TestJoin_ErrorsAs(t *testing.T) {

FILE: internal/eventtest/eventtest.go
  type TestPoolMonitor (line 19) | type TestPoolMonitor struct
    method Events (line 43) | func (tpm *TestPoolMonitor) Events(filters ...func(*event.PoolEvent) b...
    method ClearEvents (line 65) | func (tpm *TestPoolMonitor) ClearEvents() {
    method IsPoolCleared (line 73) | func (tpm *TestPoolMonitor) IsPoolCleared() bool {
    method Interruptions (line 81) | func (tpm *TestPoolMonitor) Interruptions() int {
  function NewTestPoolMonitor (line 26) | func NewTestPoolMonitor() *TestPoolMonitor {

FILE: internal/failpoint/failpoint.go
  constant ModeAlwaysOn (line 16) | ModeAlwaysOn = "alwaysOn"
  constant ModeOff (line 19) | ModeOff = "off"
  type FailPoint (line 27) | type FailPoint struct
  type Mode (line 36) | type Mode struct
  type Data (line 43) | type Data struct
  type WriteConcernError (line 57) | type WriteConcernError struct

FILE: internal/httputil/httputil.go
  function NewHTTPClient (line 17) | func NewHTTPClient() *http.Client {
  function CloseIdleHTTPConnections (line 31) | func CloseIdleHTTPConnections(client *http.Client) {

FILE: internal/httputil/httputil_test.go
  type nonDefaultTransport (line 16) | type nonDefaultTransport struct
    method RoundTrip (line 18) | func (*nonDefaultTransport) RoundTrip(*http.Request) (*http.Response, ...
  function TestDefaultHTTPClientTransport (line 20) | func TestDefaultHTTPClientTransport(t *testing.T) {

FILE: internal/integration/causal_consistency_test.go
  function TestCausalConsistency_Supported (line 29) | func TestCausalConsistency_Supported(t *testing.T) {
  function checkOperationTime (line 204) | func checkOperationTime(mt *mtest.T, cmd bson.Raw, shouldInclude bool) {
  function getReadConcernFields (line 215) | func getReadConcernFields(mt *mtest.T, cmd bson.Raw) (string, *bson.Time...

FILE: internal/integration/change_stream_test.go
  type resumeType (line 28) | type resumeType
  type streamType (line 29) | type streamType
  constant minChangeStreamVersion (line 33) | minChangeStreamVersion = "3.6.0"
  constant minPbrtVersion (line 34) | minPbrtVersion         = "4.0.7"
  constant minStartAfterVersion (line 35) | minStartAfterVersion   = "4.1.1"
  constant startAfter (line 37) | startAfter resumeType = iota
  constant resumeAfter (line 38) | resumeAfter
  constant operationTime (line 39) | operationTime
  constant client (line 41) | client streamType = iota
  constant database (line 42) | database
  constant collection (line 43) | collection
  constant errorInterrupted (line 45) | errorInterrupted     int32 = 11601
  constant errorHostUnreachable (line 46) | errorHostUnreachable int32 = 6
  constant resumableChangeStreamError (line 48) | resumableChangeStreamError = "ResumableChangeStreamError"
  function TestChangeStream_Standalone (line 51) | func TestChangeStream_Standalone(t *testing.T) {
  function TestChangeStream_ReplicaSet (line 62) | func TestChangeStream_ReplicaSet(t *testing.T) {
  function closeStream (line 742) | func closeStream(cs *mongo.ChangeStream) {
  function generateEvents (line 746) | func generateEvents(mt *mtest.T, numEvents int) {
  function getAggregateResponseInfo (line 757) | func getAggregateResponseInfo(mt *mtest.T) (bson.Raw, bson.Timestamp) {
  function compareResumeTokens (line 769) | func compareResumeTokens(mt *mtest.T, cs *mongo.ChangeStream, expected b...

FILE: internal/integration/clam_prose_test.go
  function clamTruncErr (line 26) | func clamTruncErr(mt *mtest.T, op string, want, got int) error {
  function clamDefaultTruncLimitOp (line 32) | func clamDefaultTruncLimitOp(ctx context.Context, mt *mtest.T, coll *mon...
  function clamDefaultTruncLimitLogs (line 53) | func clamDefaultTruncLimitLogs(mt *mtest.T) []truncValidator {
  function clamExplicitTruncLimitOp (line 95) | func clamExplicitTruncLimitOp(ctx context.Context, mt *mtest.T, coll *mo...
  function clamExplicitTruncLimitLogs (line 102) | func clamExplicitTruncLimitLogs(mt *mtest.T) []truncValidator {
  function clamExplicitTruncLimitFailOp (line 132) | func clamExplicitTruncLimitFailOp(ctx context.Context, mt *mtest.T, coll...
  function clamExplicitTruncLimitFailLogs (line 139) | func clamExplicitTruncLimitFailLogs(mt *mtest.T) []truncValidator {
  function clamMultiByteTrunc (line 175) | func clamMultiByteTrunc(ctx context.Context, mt *mtest.T, coll *mongo.Co...
  function clamMultiByteTruncLogs (line 191) | func clamMultiByteTruncLogs(mt *mtest.T) []truncValidator {
  function TestCommandLoggingAndMonitoringProse (line 218) | func TestCommandLoggingAndMonitoringProse(t *testing.T) {

FILE: internal/integration/client_options_test.go
  function TestClientOptions_CustomDia
Condensed preview — 745 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,404K chars).
[
  {
    "path": ".errcheck-excludes",
    "chars": 849,
    "preview": "(go.mongodb.org/mongo-driver/x/mongo/driver.Connection).Close\n(*go.mongodb.org/mongo-driver/x/network/connection.connect"
  },
  {
    "path": ".evergreen/config.yml",
    "chars": 68897,
    "preview": "########################################\n# Evergreen Template for MongoDB Drivers\n######################################"
  },
  {
    "path": ".evergreen/krb5.config",
    "chars": 132,
    "preview": "[realms]\n  LDAPTEST.10GEN.CC = {\n    kdc = ldaptest.10gen.cc\n    admin_server = ldaptest.10gen.cc\n  }\n\n[libdefaults]\n  r"
  },
  {
    "path": ".evergreen/ocsp-requirements.txt",
    "chars": 50,
    "preview": "asn1crypto==1.3.0\nbottle==0.12.20\noscrypto==1.2.0\n"
  },
  {
    "path": ".evergreen/run-mongodb-aws-ecs-test.sh",
    "chars": 514,
    "preview": "#!/bin/bash\n\nset -o errexit  # Exit the script with error if any of the commands fail\n\n#################################"
  },
  {
    "path": ".evergreen/run-task.sh",
    "chars": 282,
    "preview": "#!/usr/bin/env bash\n#\n# Source the env.sh file and run the given task\nset -eu\n\nSCRIPT_DIR=$( cd -- \"$( dirname -- \"${BAS"
  },
  {
    "path": ".evergreen/setup-system.sh",
    "chars": 2906,
    "preview": "#!/usr/bin/env bash\n#\n# Set up environment and write env.sh and expansion.yml files.\nset -eu\n\n# Set up default environme"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 361,
    "preview": "version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n  "
  },
  {
    "path": ".github/labeler.yml",
    "chars": 267,
    "preview": "review-priority-normal:\n  - changed-files:\n      - any-glob-to-any-file: \"*\"\ndocumentation:\n  - changed-files:\n      - a"
  },
  {
    "path": ".github/release.yml",
    "chars": 486,
    "preview": "changelog:\n  exclude:\n    labels:\n      - ignore-for-release\n      - github_actions\n      - submodules\n    authors:\n    "
  },
  {
    "path": ".github/workflows/check-labels.yml",
    "chars": 548,
    "preview": "name: Label Checker\non:\n  pull_request:\n    types:\n      - opened\n      - synchronize\n      - reopened\n      - labeled\n "
  },
  {
    "path": ".github/workflows/codeql.yml",
    "chars": 1516,
    "preview": "name: \"CodeQL\"\non:\n  push:\n    branches:\n      - \"v1\"\n      - \"cloud-*\"\n      - \"master\"\n      - \"release/*\"\n      - \"fe"
  },
  {
    "path": ".github/workflows/create-release-branch.yml",
    "chars": 1864,
    "preview": "name: Create Release Branch\non:\n  workflow_dispatch:\n    inputs:\n      branch_name:\n        description: The name of the"
  },
  {
    "path": ".github/workflows/labeler.yml",
    "chars": 286,
    "preview": "name: \"Pull Request Labeler\"\non:\n  - pull_request_target\npermissions:\n  contents: read\njobs:\n  labeler:\n    permissions:"
  },
  {
    "path": ".github/workflows/merge-up.yml",
    "chars": 1088,
    "preview": "name: Merge up\non:\n  push:\n    branches:\n      - release/*.*\n      - v*\npermissions:\n  contents: read\njobs:\n  merge-up:\n"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 2995,
    "preview": "name: Release\non:\n  workflow_dispatch:\n    inputs:\n      version:\n        description: \"The new version to set\"\n        "
  },
  {
    "path": ".github/workflows/scorecard.yml",
    "chars": 3436,
    "preview": "# This workflow uses actions that are not certified by GitHub. They are provided\n# by a third-party and are governed by "
  },
  {
    "path": ".github/workflows/test.yml",
    "chars": 621,
    "preview": "name: GoDriver Tests\non:\n  push:\n  pull_request:\npermissions:\n  contents: read\nconcurrency:\n  group: test-${{ github.ref"
  },
  {
    "path": ".gitignore",
    "chars": 570,
    "preview": ".vscode\ndebug\n.idea\n*.iml\n*.ipr\n*.iws\n.idea\n*.sublime-project\n*.sublime-workspace\ndriver-test-data.tar.gz\nperf\nperf.json"
  },
  {
    "path": ".gitmodules",
    "chars": 110,
    "preview": "[submodule \"specifications\"]\n\tpath = testdata/specifications\n\turl = https://github.com/mongodb/specifications\n"
  },
  {
    "path": ".golangci.yml",
    "chars": 5474,
    "preview": "version: \"2\"\nlinters:\n  default: none\n  enable:\n    - errcheck\n    - gocritic\n    # TODO(GODRIVER-3712): Enable gosec in"
  },
  {
    "path": ".pre-commit-config.yaml",
    "chars": 2528,
    "preview": "repos:\n  - repo: https://github.com/pre-commit/pre-commit-hooks\n    rev: v6.0.0\n    hooks:\n      - id: check-case-confli"
  },
  {
    "path": "Dockerfile",
    "chars": 1469,
    "preview": "# Dockerfile for Go Driver local development.\n# sha found via this command: docker inspect --format='{{index .RepoDigest"
  },
  {
    "path": "LICENSE",
    "chars": 11357,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "README.md",
    "chars": 7470,
    "preview": "<p align=\"center\"><img src=\"etc/assets/mongo-gopher.png\" width=\"250\"></p>\n<p align=\"center\">\n  <a href=\"https://goreport"
  },
  {
    "path": "THIRD-PARTY-NOTICES",
    "chars": 78904,
    "preview": "----------------------------------------------------------------------\nLicense notice for AWS V4 signing code from githu"
  },
  {
    "path": "Taskfile.yml",
    "chars": 7051,
    "preview": "# See https://taskfile.dev/usage/\nversion: \"3\"\nenv:\n  TEST_TIMEOUT: 1800\n  LONG_TEST_TIMEOUT: 3600\ndotenv: [\".test.env\"]"
  },
  {
    "path": "bson/array_codec.go",
    "chars": 1479,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/benchmark_test.go",
    "chars": 11343,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/bson_binary_vector_spec_test.go",
    "chars": 4385,
    "preview": "// Copyright (C) MongoDB, Inc. 2024-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/bson_corpus_spec_test.go",
    "chars": 15617,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/bson_test.go",
    "chars": 16918,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/bsoncodec.go",
    "chars": 7221,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/bsoncodec_test.go",
    "chars": 1787,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/bsonrw_test.go",
    "chars": 20343,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/buffered_byte_src.go",
    "chars": 3493,
    "preview": "// Copyright (C) MongoDB, Inc. 2025-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/buffered_byte_src_test.go",
    "chars": 3801,
    "preview": "// Copyright (C) MongoDB, Inc. 2025-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/byte_slice_codec.go",
    "chars": 2780,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/codec_cache.go",
    "chars": 4395,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/codec_cache_test.go",
    "chars": 5133,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/cond_addr_codec.go",
    "chars": 1892,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/cond_addr_codec_test.go",
    "chars": 2796,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/copier.go",
    "chars": 9307,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/copier_test.go",
    "chars": 17007,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/decimal.go",
    "chars": 8366,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/decimal_test.go",
    "chars": 10394,
    "preview": "// Copyright (C) MongoDB, Inc. 2022-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/decode_value_fuzz_test.go",
    "chars": 1842,
    "preview": "// Copyright (C) MongoDB, Inc. 2025-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/decoder.go",
    "chars": 4541,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/decoder_example_test.go",
    "chars": 6625,
    "preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/decoder_test.go",
    "chars": 19554,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/default_value_decoders.go",
    "chars": 42041,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/default_value_decoders_test.go",
    "chars": 106286,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/default_value_encoders.go",
    "chars": 17583,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/default_value_encoders_test.go",
    "chars": 46842,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/doc.go",
    "chars": 8265,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/empty_interface_codec.go",
    "chars": 3670,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/encoder.go",
    "chars": 4318,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/encoder_example_test.go",
    "chars": 6216,
    "preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/encoder_test.go",
    "chars": 8846,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/example_test.go",
    "chars": 3132,
    "preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/extjson_parser.go",
    "chars": 18504,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/extjson_parser_test.go",
    "chars": 26767,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/extjson_prose_test.go",
    "chars": 1692,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/extjson_reader.go",
    "chars": 13298,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/extjson_reader_test.go",
    "chars": 4331,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/extjson_tables.go",
    "chars": 4479,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/extjson_wrappers.go",
    "chars": 11372,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/extjson_writer.go",
    "chars": 16541,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/extjson_writer_test.go",
    "chars": 7654,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/fuzz_test.go",
    "chars": 1164,
    "preview": "// Copyright (C) MongoDB, Inc. 2022-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/json_scanner.go",
    "chars": 12386,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/json_scanner_test.go",
    "chars": 11881,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/map_codec.go",
    "chars": 8696,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/marshal.go",
    "chars": 6054,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/marshal_test.go",
    "chars": 8439,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/marshal_value_cases_test.go",
    "chars": 4919,
    "preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/marshal_value_test.go",
    "chars": 2588,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/marshaling_cases_test.go",
    "chars": 525,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/mgocompat/doc.go",
    "chars": 3068,
    "preview": "// Copyright (C) MongoDB, Inc. 2022-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/mgocompat/registry.go",
    "chars": 679,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/mgoregistry.go",
    "chars": 7048,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/mgoregistry_test.go",
    "chars": 56309,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/mode.go",
    "chars": 1792,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/objectid.go",
    "chars": 5885,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/objectid_test.go",
    "chars": 6612,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/pointer_codec.go",
    "chars": 2476,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/primitive.go",
    "chars": 8623,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/primitive_codecs.go",
    "chars": 3084,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/primitive_codecs_test.go",
    "chars": 25966,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/raw.go",
    "chars": 3573,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/raw_array.go",
    "chars": 2213,
    "preview": "// Copyright (C) MongoDB, Inc. 2024-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/raw_array_test.go",
    "chars": 10492,
    "preview": "// Copyright (C) MongoDB, Inc. 2024-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/raw_element.go",
    "chars": 2012,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/raw_test.go",
    "chars": 15163,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/raw_value.go",
    "chars": 12623,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/raw_value_test.go",
    "chars": 5418,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/reader.go",
    "chars": 1644,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/registry.go",
    "chars": 15226,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/registry_examples_test.go",
    "chars": 8231,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/registry_test.go",
    "chars": 17104,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/slice_codec.go",
    "chars": 4497,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/streaming_byte_src.go",
    "chars": 3164,
    "preview": "// Copyright (C) MongoDB, Inc. 2025-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/string_codec.go",
    "chars": 2933,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/struct_codec.go",
    "chars": 18854,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/struct_codec_test.go",
    "chars": 3795,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/struct_tag_parser.go",
    "chars": 3710,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/struct_tag_parser_test.go",
    "chars": 5257,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/testdata/fuzz/FuzzDecode/002ae7d43f636100116fede772a03d07726ed75c3c3b83da865fe9b718adf8ae",
    "chars": 85,
    "preview": "go test fuzz v1\n[]byte(\"\\x10\\x00\\x00\\x00\\v\\x00\\x00\\x00\\b\\x00\\x00\\v\\x00\\x00\\x00\\x00\")\n"
  },
  {
    "path": "bson/testdata/fuzz/FuzzDecode/0de854041b0055ca1e5e6e54a7fb667ed38461db171af267665c21776f9a9ef4",
    "chars": 101,
    "preview": "go test fuzz v1\n[]byte(\"0\\\\x00\\\\x00\\\\x00\\\\x0f\\\\x00000\\\\x8a00000000000000000000000000000000000000\\n\")\n"
  },
  {
    "path": "bson/testdata/fuzz/FuzzDecode/718592474a0a3626039f3471449b9aa374c746754d4925fcfe4ba747e7101504",
    "chars": 453,
    "preview": "go test fuzz v1\n[]byte(\"\\\\x80\\\\x00\\\\x00\\\\x00\\\\x03000000\\\\x00s\\\\x00\\\\x00\\\\x00\\\\x0300000\\\\x00g\\\\x00\\\\x00\\\\x00\\\\x100z\\\\x000"
  },
  {
    "path": "bson/testdata/fuzz/FuzzDecode/93c43e3c1cf35c19b7618a618d128cea0ce05cef0711fdd91e403fe3b2f45628",
    "chars": 1751,
    "preview": "go test fuzz v1\n[]byte(\"\\\\x59\\\\x01\\\\x00\\\\x00\\\\x01\\\\x64\\\\x6f\\\\x75\\\\x62\\\\x6c\\\\x65\\\\x00\\\\x9a\\\\x99\\\\x99\\\\x99\\\\x99\\\\x99\\\\xf1\\"
  },
  {
    "path": "bson/testdata/fuzz/FuzzDecode/c3ffbb42eb85b743ede396f00b7706e6ad0529c32689c63ca663dae37d072627",
    "chars": 54,
    "preview": "go test fuzz v1\n[]byte(\"\\\\x05\\\\xf0\\\\xff\\\\x00\\\\x7f\\n\")\n"
  },
  {
    "path": "bson/testdata/lorem.txt",
    "chars": 10037,
    "preview": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc hendrerit nibh eu lorem scelerisque iaculis. Mauris tincid"
  },
  {
    "path": "bson/time_codec.go",
    "chars": 2999,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/time_codec_test.go",
    "chars": 2663,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/truncation_test.go",
    "chars": 1895,
    "preview": "// Copyright (C) MongoDB, Inc. 2022-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/type_test.go",
    "chars": 1567,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/types.go",
    "chars": 3989,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/uint_codec.go",
    "chars": 4456,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/unmarshal.go",
    "chars": 3377,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/unmarshal_test.go",
    "chars": 21746,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/unmarshal_value_test.go",
    "chars": 2578,
    "preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/unmarshaling_cases_test.go",
    "chars": 10510,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/value_reader.go",
    "chars": 22790,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/value_reader_test.go",
    "chars": 66553,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/value_reader_writer_test.go",
    "chars": 14203,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/value_writer.go",
    "chars": 13826,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/value_writer_test.go",
    "chars": 10780,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/vector.go",
    "chars": 6436,
    "preview": "// Copyright (C) MongoDB, Inc. 2024-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "bson/writer.go",
    "chars": 2048,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "docs/CODEOWNERS",
    "chars": 18,
    "preview": "* @mongodb/dbx-go\n"
  },
  {
    "path": "docs/CONTRIBUTING.md",
    "chars": 15381,
    "preview": "# Contributing to the MongoDB Go Driver\n\nThank you for your interest in contributing to the MongoDB Go Driver!\n\nWe are b"
  },
  {
    "path": "docs/SECURITY.md",
    "chars": 555,
    "preview": "# Security Policy\n\n## Supported Versions\n\nWe support the latest released version of the MongoDB Go Driver. Please ensure"
  },
  {
    "path": "docs/common-issues.md",
    "chars": 3885,
    "preview": "# Frequently Encountered Issues\n\nThese are fixes or information for common issues encountered by Go Driver users. If non"
  },
  {
    "path": "docs/migration-2.0.md",
    "chars": 35820,
    "preview": "# Migrating from 1.x to 2.0\n\nTo upgrade imports of the Go Driver from v1 to v2, we recommend using [marwan-at-work/mod\n]"
  },
  {
    "path": "docs/pull_request_template.md",
    "chars": 218,
    "preview": "<!--- If applicable, issue number goes here, e.g. GODRIVER-ABCD -->\n\n## Summary\n\n<!--- A summary of the changes proposed"
  },
  {
    "path": "etc/api_report.sh",
    "chars": 862,
    "preview": "#!/usr/bin/env bash\n# api-report\n# Generates a report of Go Driver API changes for the current branch.\nset -eux\n\n# Skip "
  },
  {
    "path": "etc/check_fmt.sh",
    "chars": 1299,
    "preview": "#!/usr/bin/env bash\n# check_fmt\n# Runs gofumpt on all packages in the repo and checks that *_example_test.go files have "
  },
  {
    "path": "etc/check_license.sh",
    "chars": 1949,
    "preview": "#!/usr/bin/env bash\n\nyear=$(date +\"%Y\")\ncopyright=$\"// Copyright (C) MongoDB, Inc. $year-present.\n//\n// Licensed under t"
  },
  {
    "path": "etc/check_modules.sh",
    "chars": 633,
    "preview": "#!/usr/bin/env bash\n# check-modules runs \"go mod tidy\" on each module and exits with a non-zero exit code if there\n# are"
  },
  {
    "path": "etc/cherry-picker.sh",
    "chars": 1947,
    "preview": "#!/bin/bash\nset -e\n\nsha=$1\ntarget=${2:-v1}\ndirname=$(mktemp -d)\nuser=$(git config github.user)\n\nif [ -z \"$user\" ]; then\n"
  },
  {
    "path": "etc/docker_entry.sh",
    "chars": 263,
    "preview": "#!/usr/bin/env bash\n#\n# Entry point for Dockerfile for running a go test.\n#\nset -eux\n\n# Prep files.\ncd /src\nrm -f test.s"
  },
  {
    "path": "etc/gen-ec-certs/client.ext",
    "chars": 106,
    "preview": "basicConstraints = CA: FALSE\nsubjectAltName = DNS: localhost, IP: 127.0.0.1\nextendedKeyUsage = clientAuth\n"
  },
  {
    "path": "etc/gen-ec-certs/empty.cnf",
    "chars": 176,
    "preview": "# A nearly empty OpenSSL CA configuration file.\n# `openssl req` complains without a configuration file.\n[ req ]\ndistingu"
  },
  {
    "path": "etc/gen-ec-certs/gen-ec-certs.sh",
    "chars": 2272,
    "preview": "#!/usr/bin/env bash\n# This script is used to generate Elliptic Curve (EC) certificates.\n# The EC certificates are used f"
  },
  {
    "path": "etc/gen-ec-certs/server.ext",
    "chars": 106,
    "preview": "basicConstraints = CA: FALSE\nsubjectAltName = DNS: localhost, IP: 127.0.0.1\nextendedKeyUsage = serverAuth\n"
  },
  {
    "path": "etc/generate_notices.pl",
    "chars": 14538,
    "preview": "#!/usr/bin/env perl\nuse v5.10;\nuse strict;\nuse warnings;\nuse utf8;\nuse open qw/:std :utf8/;\nuse File::Find qw/find/;\n\nmy"
  },
  {
    "path": "etc/golangci-lint.sh",
    "chars": 705,
    "preview": "#!/usr/bin/env bash\nset -ex\n\n# Keep this in sync with go version used in static-analysis Evergreen build variant.\nGO_VER"
  },
  {
    "path": "etc/govulncheck.sh",
    "chars": 863,
    "preview": "#!/usr/bin/env bash\nset -ex\n\n# Use a specific Go version so that local govulncheck results are consistent\n# with CI resu"
  },
  {
    "path": "etc/install-libmongocrypt.sh",
    "chars": 1248,
    "preview": "#!/usr/bin/env bash\n# install libmongocrypt\n# This script installs libmongocrypt into an \"install\" directory.\nset -eux\n\n"
  },
  {
    "path": "etc/perf-pr-comment.sh",
    "chars": 698,
    "preview": "#!/usr/bin/env bash\n# perf-pr-comment\n# Generates a report of Go Driver perf changes for the current branch.\n\nset -eux\n\n"
  },
  {
    "path": "etc/pr-task.sh",
    "chars": 804,
    "preview": "#!/usr/bin/env bash\nset -eu\n\nVARLIST=(\n\tPR_TASK\n\tCOMMIT\n\tDRIVERS_TOOLS\n)\n\n# Ensure that all variables required to run th"
  },
  {
    "path": "etc/profile-test.sh",
    "chars": 975,
    "preview": "#!/usr/bin/env bash\n# Convenience wrapper for profiling and tracing Go tests.\nset -eu\n\n# Create a temporary file to stor"
  },
  {
    "path": "etc/run-awskms-test.sh",
    "chars": 705,
    "preview": "#!/usr/bin/env bash\n# run-awskms-test\n# Runs the awskms test.\nset -eu\n\nGO_BUILD_TAGS=\"cse\" task setup-test\ntask build-km"
  },
  {
    "path": "etc/run-azurekms-test.sh",
    "chars": 1269,
    "preview": "#!/usr/bin/env bash\n# run-gcpkms-test\n# Runs gcpkms tests.\nset -eu\n\nGO_BUILD_TAGS=\"cse\" task setup-test\ntask build-kms-t"
  },
  {
    "path": "etc/run-compile-check-test.sh",
    "chars": 250,
    "preview": "#!/usr/bin/env bash\n# run-compile-check-test\n# Run compile check tests for all supported Go versions.\nset -eu\nset +x\n\nec"
  },
  {
    "path": "etc/run-fuzz.sh",
    "chars": 2660,
    "preview": "#!/bin/bash\n\nset -o errexit  # Exit the script with error if any of the commands fail\n\n# Default fuzztime to 10m.\nFUZZTI"
  },
  {
    "path": "etc/run-gcpkms-test.sh",
    "chars": 1009,
    "preview": "#!/usr/bin/env bash\n# run-gcpkms-test\n# Runs gcpkms tests.\nset -eu\n\nGO_BUILD_TAGS=\"cse\" task setup-test\ntask build-kms-t"
  },
  {
    "path": "etc/run-goleak-test.sh",
    "chars": 190,
    "preview": "#!/usr/bin/env bash\n# run-goleak-test\n# Run goroutine leak tests.\nset -eu\nset +x\n\necho \"Running internal/test/goleak\"\npu"
  },
  {
    "path": "etc/run-mongodb-aws-ecs-test.sh",
    "chars": 616,
    "preview": "#!/bin/bash\nset -eu\n\nif [ \"${SKIP_ECS_AUTH_TEST:-}\" = \"true\" ]; then\n  echo \"This platform does not support the ECS auth"
  },
  {
    "path": "etc/run-mongodb-aws-test.sh",
    "chars": 1186,
    "preview": "#!/bin/bash\n\nset -eu\n\n############################################\n#            Main Program                  #\n########"
  },
  {
    "path": "etc/run-oidc-remote-test.sh",
    "chars": 2026,
    "preview": "#!/usr/bin/env bash\n# run-oidc-test\n# Runs oidc auth tests.\nset -eu\n\necho \"Running remote MONGODB-OIDC authentication te"
  },
  {
    "path": "etc/run-oidc-test.sh",
    "chars": 1315,
    "preview": "#!/usr/bin/env bash\n# run-oidc-test\n# Runs oidc auth tests.\nset -eu\n\necho \"Running MONGODB-OIDC authentication tests\"\n\nO"
  },
  {
    "path": "etc/run_docker.sh",
    "chars": 677,
    "preview": "#!/usr/bin/env bash\n#\n# Script to run a test suite in docker locally\nset -eux\n\nif [ -z \"$DRIVERS_TOOLS\" ]; then\n    echo"
  },
  {
    "path": "etc/setup-encryption.sh",
    "chars": 655,
    "preview": "#!/usr/bin/env bash\n#\n# Script to set up encryption assets and servers.\nset -eux\n\nif [ -z \"$DRIVERS_TOOLS\" ]; then\n    e"
  },
  {
    "path": "etc/setup-test.sh",
    "chars": 5604,
    "preview": "#!/usr/bin/env bash\n#\n# Set up test environment and write .test.env file.\nset -eu\n\nOS=${OS:-\"\"}\nSSL=${SSL:-nossl}\nGO_BUI"
  },
  {
    "path": "etc/update_spec_tests.sh",
    "chars": 824,
    "preview": "#!/usr/bin/env bash\n# update_spec_tests spec\n# This script is used to fetch the latest tests for the given spec. It puts"
  },
  {
    "path": "event/description.go",
    "chars": 2076,
    "preview": "// Copyright (C) MongoDB, Inc. 2024-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "event/doc.go",
    "chars": 2567,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "event/examples_test.go",
    "chars": 1796,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "event/monitoring.go",
    "chars": 7800,
    "preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "examples/_example_customdns_test.go",
    "chars": 3095,
    "preview": "// Copyright (C) MongoDB, Inc. 2022-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "examples/_example_overload_error_test.go",
    "chars": 3405,
    "preview": "// Copyright (C) MongoDB, Inc. 2022-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "examples/_logger/logrus/go.mod",
    "chars": 732,
    "preview": "module go.mongodb.go/mongo-driver/v2/examples/logger/logrus\n\ngo 1.25\n\nreplace go.mongodb.org/mongo-driver/v2 => ../../.."
  },
  {
    "path": "examples/_logger/logrus/go.sum",
    "chars": 5915,
    "preview": "github.com/bombsimon/logrusr/v4 v4.0.0 h1:Pm0InGphX0wMhPqC02t31onlq9OVyJ98eP/Vh63t1Oo=\ngithub.com/bombsimon/logrusr/v4 v"
  },
  {
    "path": "examples/_logger/logrus/main.go",
    "chars": 1463,
    "preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "examples/_logger/zap/go.mod",
    "chars": 753,
    "preview": "module go.mongodb.go/mongo-driver/v2/examples/logger/zap\n\ngo 1.25\n\nreplace go.mongodb.org/mongo-driver/v2 => ../../../\n\n"
  },
  {
    "path": "examples/_logger/zap/go.sum",
    "chars": 7901,
    "preview": "github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=\ngithub.com/benbjohnson/clock v1.1.0/"
  },
  {
    "path": "examples/_logger/zap/main.go",
    "chars": 1390,
    "preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "examples/_logger/zerolog/go.mod",
    "chars": 824,
    "preview": "module go.mongodb.go/mongo-driver/v2/examples/logger/zerolog\n\ngo 1.25\n\nreplace go.mongodb.org/mongo-driver/v2 => ../../."
  },
  {
    "path": "examples/_logger/zerolog/go.sum",
    "chars": 5754,
    "preview": "github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2G"
  },
  {
    "path": "examples/_logger/zerolog/main.go",
    "chars": 1370,
    "preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "go.mod",
    "chars": 533,
    "preview": "module go.mongodb.org/mongo-driver/v2\n\ngo 1.19\n\nrequire (\n\tgithub.com/davecgh/go-spew v1.1.1\n\tgithub.com/google/go-cmp v"
  },
  {
    "path": "go.sum",
    "chars": 4156,
    "preview": "github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.m"
  },
  {
    "path": "go.work",
    "chars": 220,
    "preview": "go 1.25.0\n\nuse (\n\t.\n\t./examples/_logger/logrus\n\t./examples/_logger/zap\n\t./examples/_logger/zerolog\n\t./internal/cmd/bench"
  },
  {
    "path": "internal/assert/assertbson/assertbson.go",
    "chars": 1492,
    "preview": "// Copyright (C) MongoDB, Inc. 2025-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "internal/assert/assertbson/assertbson_test.go",
    "chars": 5324,
    "preview": "// Copyright (C) MongoDB, Inc. 2025-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "internal/assert/assertion_compare.go",
    "chars": 12213,
    "preview": "// Copied from https://github.com/stretchr/testify/blob/1333b5d3bda8cf5aedcf3e1aaa95cac28aaab892/assert/assertion_compar"
  },
  {
    "path": "internal/assert/assertion_compare_can_convert.go",
    "chars": 577,
    "preview": "// Copied from https://github.com/stretchr/testify/blob/1333b5d3bda8cf5aedcf3e1aaa95cac28aaab892/assert/assertion_compar"
  },
  {
    "path": "internal/assert/assertion_compare_go1.17_test.go",
    "chars": 5619,
    "preview": "// Copied from https://github.com/stretchr/testify/blob/1333b5d3bda8cf5aedcf3e1aaa95cac28aaab892/assert/assertion_compar"
  },
  {
    "path": "internal/assert/assertion_compare_legacy.go",
    "chars": 563,
    "preview": "// Copied from https://github.com/stretchr/testify/blob/1333b5d3bda8cf5aedcf3e1aaa95cac28aaab892/assert/assertion_compar"
  },
  {
    "path": "internal/assert/assertion_compare_test.go",
    "chars": 15884,
    "preview": "// Copied from https://github.com/stretchr/testify/blob/1333b5d3bda8cf5aedcf3e1aaa95cac28aaab892/assert/assertion_compar"
  },
  {
    "path": "internal/assert/assertion_format.go",
    "chars": 12642,
    "preview": "// Copied from https://github.com/stretchr/testify/blob/1333b5d3bda8cf5aedcf3e1aaa95cac28aaab892/assert/assertion_format"
  },
  {
    "path": "internal/assert/assertion_mongo.go",
    "chars": 2683,
    "preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "internal/assert/assertion_mongo_test.go",
    "chars": 1377,
    "preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  },
  {
    "path": "internal/assert/assertions.go",
    "chars": 29772,
    "preview": "// Copied from https://github.com/stretchr/testify/blob/1333b5d3bda8cf5aedcf3e1aaa95cac28aaab892/assert/assertions.go\n//"
  },
  {
    "path": "internal/assert/assertions_test.go",
    "chars": 31653,
    "preview": "// Copied from https://github.com/stretchr/testify/blob/1333b5d3bda8cf5aedcf3e1aaa95cac28aaab892/assert/assertions_test."
  },
  {
    "path": "internal/assert/difflib.go",
    "chars": 22867,
    "preview": "// Copied from https://github.com/pmezard/go-difflib/blob/5d4384ee4fb2527b0a1256a821ebfc92f91efefc/difflib/difflib.go\n\n/"
  },
  {
    "path": "internal/assert/difflib_test.go",
    "chars": 8917,
    "preview": "// Copied from https://github.com/pmezard/go-difflib/blob/5d4384ee4fb2527b0a1256a821ebfc92f91efefc/difflib/difflib_test."
  },
  {
    "path": "internal/aws/awserr/error.go",
    "chars": 2076,
    "preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
  }
]

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

About this extraction

This page contains the full source code of the mongodb/mongo-go-driver GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 745 files (6.4 MB), approximately 1.7M tokens, and a symbol index with 7568 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!