-
Notifications
You must be signed in to change notification settings - Fork 86
feat(test_vector_handlers): Hierarchy keyring test vectors #674
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
432 commits
Select commit
Hold shift + click to select a range
bbc36f9
..?
lucasmcdonald3 3bf820c
missing
lucasmcdonald3 eb40abb
cleanup
lucasmcdonald3 bc0d5ff
wip
lucasmcdonald3 fb7d10c
requiredec working
lucasmcdonald3 344824b
debug cb
lucasmcdonald3 697f2ff
fix cb
lucasmcdonald3 7dbc00a
fix cb
lucasmcdonald3 7036337
debug cb
lucasmcdonald3 14c287d
Merge
lucasmcdonald3 2d26009
Merge branch 'lucmcdon/mpl' into lucmcdon/mpl-requiredec
lucasmcdonald3 35dc479
Merge branch 'lucmcdon/mpl-requiredec' into lucmcdon/mpl-testvectors
lucasmcdonald3 7a44191
debug gha
lucasmcdonald3 298235a
temp rm cov
lucasmcdonald3 4c1d0a0
temp rm cov
lucasmcdonald3 12e0060
debug gha
lucasmcdonald3 9ca61e2
debug gha
lucasmcdonald3 5deac12
debug cb
lucasmcdonald3 ff99fe7
debug cb
lucasmcdonald3 6a4b704
debug cb
lucasmcdonald3 0dbd4f6
fix cb
lucasmcdonald3 357594b
debug cb
lucasmcdonald3 3760ebe
debug gha
lucasmcdonald3 7b984fe
add missing file
lucasmcdonald3 9b7a58d
debug gha
lucasmcdonald3 93fee67
debug cb
lucasmcdonald3 e65fec4
debug gha
lucasmcdonald3 f4ebbba
imperative mood
lucasmcdonald3 05511a8
fix gha
lucasmcdonald3 c9c58e6
fix gha
lucasmcdonald3 a62f1b4
debug cb
lucasmcdonald3 752c98c
no more profile
lucasmcdonald3 d2897e5
debug cb
lucasmcdonald3 dc7887d
debug cb
lucasmcdonald3 36a4630
debug cb
lucasmcdonald3 736c1f4
debug cb
lucasmcdonald3 1adfb12
debug cb
lucasmcdonald3 dd4b495
debug cb
lucasmcdonald3 76b1f29
debug cb
lucasmcdonald3 33d7bdb
debug cb
lucasmcdonald3 6a8a623
debug new toxes
lucasmcdonald3 9fd7468
debug new toxes
lucasmcdonald3 5affe9c
add missing files
lucasmcdonald3 78b817d
debug tox
lucasmcdonald3 c817996
add missing
lucasmcdonald3 c549e39
debug cb
lucasmcdonald3 90a18d0
debug cb
lucasmcdonald3 77fba50
debug cb
lucasmcdonald3 991c55f
debug cb
lucasmcdonald3 71efaa3
debug cb
lucasmcdonald3 b1cbf4b
debug gha and cb
lucasmcdonald3 39fcb9b
debug gha and cb
lucasmcdonald3 5962312
debug gha and cb
lucasmcdonald3 0ac5e96
debug gha and cb
lucasmcdonald3 3dcab7f
debug gha and cb
lucasmcdonald3 ccb01a2
debug cb
lucasmcdonald3 7074f8a
add missing
lucasmcdonald3 2b36513
token
lucasmcdonald3 be6a253
token
lucasmcdonald3 a431365
debug
lucasmcdonald3 4120be3
debug cb
lucasmcdonald3 7391c78
missing
lucasmcdonald3 a16be01
missing
lucasmcdonald3 4b2553b
perms
lucasmcdonald3 843ac28
debug cb
lucasmcdonald3 68c068e
debug cb
lucasmcdonald3 adf7198
files in s3
lucasmcdonald3 e246463
files in s3
lucasmcdonald3 1aa07e5
files in s3
lucasmcdonald3 1702822
files in s3
lucasmcdonald3 207401a
files in s3
lucasmcdonald3 b3e0125
files in s3
lucasmcdonald3 644c343
files in s3
lucasmcdonald3 e72ab99
files in s3
lucasmcdonald3 36fd56b
files in s3
lucasmcdonald3 6052b53
files in s3
lucasmcdonald3 457aa88
files in s3
lucasmcdonald3 a8b65d3
files in s3
lucasmcdonald3 8ed6cca
debug gen
lucasmcdonald3 ef4a9d7
debug gen
lucasmcdonald3 b564f77
debug gen
lucasmcdonald3 31a58cc
debug gen
lucasmcdonald3 ed87953
debug gen
lucasmcdonald3 ac01f37
debug gen
lucasmcdonald3 69a934c
debug gen
lucasmcdonald3 65d3acd
debug gen
lucasmcdonald3 95e8a8b
debug gen
lucasmcdonald3 8d484e6
debug gen
lucasmcdonald3 8dcfc3c
debug gen
lucasmcdonald3 a9306bc
debug gen
lucasmcdonald3 894dcee
debug
lucasmcdonald3 e00ec2a
debug
lucasmcdonald3 2f23be3
debug
lucasmcdonald3 6a7d732
debug
lucasmcdonald3 8cbd3dc
debug
lucasmcdonald3 5cb4b13
debug
lucasmcdonald3 9d89a74
debug
lucasmcdonald3 51bf320
debug
lucasmcdonald3 3be4969
debug
lucasmcdonald3 9e3358d
debug
lucasmcdonald3 1b7a54b
debug
lucasmcdonald3 ce59f57
debug
lucasmcdonald3 6ef093b
debug
lucasmcdonald3 ce07e87
Debug
lucasmcdonald3 7225e51
debug
lucasmcdonald3 549fe07
debug
lucasmcdonald3 0f9b662
debug
lucasmcdonald3 8dd3468
debug
lucasmcdonald3 5378b62
debug
lucasmcdonald3 f3db08a
debug
lucasmcdonald3 6080556
debug
lucasmcdonald3 3862329
consume vectors
lucasmcdonald3 30f7152
rerun ci
lucasmcdonald3 876ed38
add missing files
lucasmcdonald3 8a6bf33
311
lucasmcdonald3 07f3b8f
cooking
lucasmcdonald3 a06684e
cooking
lucasmcdonald3 37fd225
cooking
lucasmcdonald3 e459045
cooking
lucasmcdonald3 0e8c6c9
missing
lucasmcdonald3 32446e2
tampering mpl
lucasmcdonald3 f1cd456
more
lucasmcdonald3 a3267bc
more
lucasmcdonald3 d4db5ec
more
lucasmcdonald3 bf78061
more
lucasmcdonald3 008ae6f
more
lucasmcdonald3 19a9dad
debug
lucasmcdonald3 a4aa0f9
debug
lucasmcdonald3 d53895d
debug
lucasmcdonald3 9c46200
debug
lucasmcdonald3 3af9f32
debug
lucasmcdonald3 9e255e4
debug
lucasmcdonald3 262696b
debug
lucasmcdonald3 fadea8c
debug
lucasmcdonald3 b8dbb1f
debug
lucasmcdonald3 f5d6cb7
debug
lucasmcdonald3 774abf6
debug
lucasmcdonald3 e16771a
debug
lucasmcdonald3 8752df7
Debug
lucasmcdonald3 91d219c
Debug
lucasmcdonald3 0178f7a
debug
lucasmcdonald3 1060a3f
debug
lucasmcdonald3 9806fba
debug
lucasmcdonald3 3625f98
debug
lucasmcdonald3 77b9165
Debug
lucasmcdonald3 cfc2681
debug
lucasmcdonald3 87bc057
debug
lucasmcdonald3 ca6f3a1
debug
lucasmcdonald3 3b01d38
debug
lucasmcdonald3 68495e8
debug
lucasmcdonald3 8a8103a
debug
lucasmcdonald3 89c39ff
debug
lucasmcdonald3 fee0cce
debug
lucasmcdonald3 c5ba2fd
debug
lucasmcdonald3 4875dbc
debug
lucasmcdonald3 4ed99d3
debug
lucasmcdonald3 9f76cbf
debug
lucasmcdonald3 2f08f0d
debug
lucasmcdonald3 594f273
debug
lucasmcdonald3 108cd03
refactor
lucasmcdonald3 b116b0d
debug
lucasmcdonald3 063989f
debug
lucasmcdonald3 101af71
debug
lucasmcdonald3 803ae4d
debug
lucasmcdonald3 58bd271
debug
lucasmcdonald3 bccd1be
clean37
lucasmcdonald3 970ca3c
clean37
lucasmcdonald3 9ccd014
311
lucasmcdonald3 2c3b380
311
lucasmcdonald3 c8ca704
311
lucasmcdonald3 c8c5a40
py311
lucasmcdonald3 8a0ddc4
311
lucasmcdonald3 20262d7
311
lucasmcdonald3 89efb74
312
lucasmcdonald3 e1700b9
ALL
lucasmcdonald3 1d7fcae
ALL
lucasmcdonald3 bdacdeb
ALL
lucasmcdonald3 2783808
gen decrypt keyrings
lucasmcdonald3 f690cf7
cleanup
lucasmcdonald3 446eaa4
cleanup
lucasmcdonald3 70b68f9
cleanup
lucasmcdonald3 67f0179
cleanup
lucasmcdonald3 7d8a515
cleanup
lucasmcdonald3 48974b0
debug
lucasmcdonald3 1bb5527
cleanup
lucasmcdonald3 72de35b
cleanup
lucasmcdonald3 f2792bc
cleanup
lucasmcdonald3 df45d5d
cleanup
lucasmcdonald3 c66938f
cleanup
lucasmcdonald3 b594a38
hierarchy
lucasmcdonald3 0da3fe9
??
lucasmcdonald3 7cd8874
found it
lucasmcdonald3 b58c5a0
more fix
lucasmcdonald3 2c4325a
tests
lucasmcdonald3 e64683c
run tests
lucasmcdonald3 66429d2
debug
lucasmcdonald3 03330ea
rerun ci
lucasmcdonald3 9fd39cd
fix
lucasmcdonald3 4240cee
fix
lucasmcdonald3 4adb696
fixes, now run net
lucasmcdonald3 620639f
fix
lucasmcdonald3 559bdd3
fixes
lucasmcdonald3 3ee4086
fix
lucasmcdonald3 30ed6fa
fix: Try all master key providers when decrypting raw RSA data key
lucasmcdonald3 f577371
resovle merge
lucasmcdonald3 a30bceb
resovle merge
lucasmcdonald3 807416e
Merge branch 'lucmcdon/mpl-testvectors' into mpl-testvectors-hierarchy
lucasmcdonald3 19712e3
fix
lucasmcdonald3 befe45d
fix
lucasmcdonald3 d33ff19
remove net for now
lucasmcdonald3 5393825
cleanup
lucasmcdonald3 9b029a7
merge
lucasmcdonald3 b461b64
cleanup
lucasmcdonald3 709fb3a
cleanup
lucasmcdonald3 d64dc81
cleanup
lucasmcdonald3 c953b21
fix
lucasmcdonald3 c7c6a56
fix
lucasmcdonald3 990e2b8
rv vectors
lucasmcdonald3 6979419
fix
lucasmcdonald3 4a24975
Merge branch 'lucmcdon/mpl-testvectors' into mpl-testvectors-hierarchy
lucasmcdonald3 dbed9b4
fixes
lucasmcdonald3 0137a48
clean
lucasmcdonald3 50f16cd
pylint
lucasmcdonald3 e343199
flake8
lucasmcdonald3 af0e372
flake8
lucasmcdonald3 03a0625
merge
lucasmcdonald3 0c51f3f
add py312_generate_hkeyring_decrypt_vectors in codebuild
RitvikKapila 2b0de54
fix
RitvikKapila f670df3
updated decrypt_hkeyring_with_net.yml
RitvikKapila 89cb9f1
set env variable DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH
RitvikKapila 3e43ffd
debug
RitvikKapila 059df05
debug
RitvikKapila 5360da9
change branch for hkeyring decrypt
RitvikKapila 72574f9
fix
RitvikKapila 3e91d5c
debug
RitvikKapila b70fd8c
debug
RitvikKapila ef7660e
make net
RitvikKapila a2f5505
submodules; dafny
RitvikKapila 61257d0
fix
RitvikKapila 45cc689
fix - mpl transpile_net
RitvikKapila 2264cb7
debug
RitvikKapila 4c5d4ad
Update codebuild/py312/decrypt_hkeyring_with_net.yml
lucasmcdonald3 2f46a86
chore: performance tests for ESDK-python (#680)
RitvikKapila dee26cd
chore(performance_tests): added hierarchy keyring and caching cmm tes…
RitvikKapila 9a912d3
chore(migration examples): added KMS, raw AES and raw RSA keyring/MKP…
RitvikKapila 8904283
chore(custom_cmm_example.py): added test for custom_cmm_example.py (#…
RitvikKapila abede74
chore(MPL): Update README and primary pydocs (#658)
lucasmcdonald3 864d29b
chore: Change MPL branch, remove PYTHONPATH workarounds (#683)
lucasmcdonald3 07a4f0c
Merge branch 'mpl-reviewed' into mpl-testvectors-hierarchy
lucasmcdonald3 46de750
cleanup
lucasmcdonald3 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
version: 0.2 | ||
|
||
env: | ||
variables: | ||
TOXENV: "py312-full_decrypt-mpl" | ||
AWS_ENCRYPTION_SDK_PYTHON_INTEGRATION_TEST_AWS_KMS_KEY_ID: >- | ||
arn:aws:kms:us-west-2:658956600833:key/b35311ef1-d8dc-4780-9f5a-55776cbb2f7f | ||
AWS_ENCRYPTION_SDK_PYTHON_INTEGRATION_TEST_AWS_KMS_KEY_ID_2: >- | ||
arn:aws:kms:eu-central-1:658956600833:key/75414c93-5285-4b57-99c9-30c1cf0a22c2 | ||
AWS_ENCRYPTION_SDK_PYTHON_INTEGRATION_TEST_AWS_KMS_MRK_KEY_ID_1: >- | ||
arn:aws:kms:us-west-2:658956600833:key/mrk-80bd8ecdcd4342aebd84b7dc9da498a7 | ||
AWS_ENCRYPTION_SDK_PYTHON_INTEGRATION_TEST_AWS_KMS_MRK_KEY_ID_2: >- | ||
arn:aws:kms:us-east-1:658956600833:key/mrk-80bd8ecdcd4342aebd84b7dc9da498a7 | ||
|
||
phases: | ||
install: | ||
runtime-versions: | ||
python: 3.12 | ||
pre_build: | ||
commands: | ||
# Download previously generated vectors | ||
# This manifest has coverage for both HKeyring and required encryption context CMM | ||
- aws s3 cp s3://generated-vectors-artifacts-bucket/$CODEBUILD_RESOLVED_SOURCE_VERSION/312_hkeyring_reccmm_manifest.zip 312_hkeyring_reccmm_manifest.zip | ||
- unzip 312_hkeyring_reccmm_manifest.zip | ||
build: | ||
commands: | ||
- pip install "tox < 4.0" | ||
- cd test_vector_handlers | ||
- | | ||
tox -- \ | ||
--input ../312_hkeyring_reccmm_manifest/manifest.json \ | ||
--keyrings |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
version: 0.2 | ||
|
||
env: | ||
variables: | ||
TOXENV: "py312-full_decrypt-mpl" | ||
AWS_ENCRYPTION_SDK_PYTHON_INTEGRATION_TEST_AWS_KMS_KEY_ID: >- | ||
arn:aws:kms:us-west-2:658956600833:key/b35311ef1-d8dc-4780-9f5a-55776cbb2f7f | ||
AWS_ENCRYPTION_SDK_PYTHON_INTEGRATION_TEST_AWS_KMS_KEY_ID_2: >- | ||
arn:aws:kms:eu-central-1:658956600833:key/75414c93-5285-4b57-99c9-30c1cf0a22c2 | ||
AWS_ENCRYPTION_SDK_PYTHON_INTEGRATION_TEST_AWS_KMS_MRK_KEY_ID_1: >- | ||
arn:aws:kms:us-west-2:658956600833:key/mrk-80bd8ecdcd4342aebd84b7dc9da498a7 | ||
AWS_ENCRYPTION_SDK_PYTHON_INTEGRATION_TEST_AWS_KMS_MRK_KEY_ID_2: >- | ||
arn:aws:kms:us-east-1:658956600833:key/mrk-80bd8ecdcd4342aebd84b7dc9da498a7 | ||
|
||
phases: | ||
install: | ||
runtime-versions: | ||
python: 3.12 | ||
pre_build: | ||
commands: | ||
# Download previously generated vectors | ||
# This manifest has coverage for both HKeyring and required encryption context CMM | ||
- aws s3 cp s3://generated-vectors-artifacts-bucket/$CODEBUILD_RESOLVED_SOURCE_VERSION/312_hkeyring_reccmm_manifest.zip 312_hkeyring_reccmm_manifest.zip | ||
- unzip 312_hkeyring_reccmm_manifest.zip | ||
build: | ||
commands: | ||
- pip install "tox < 4.0" | ||
- cd test_vector_handlers | ||
- | | ||
tox -- \ | ||
--input ../312_hkeyring_reccmm_manifest/manifest.json |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
version: 0.2 | ||
|
||
env: | ||
variables: | ||
TOXENV: "py312-full_decrypt-mpl" | ||
AWS_ENCRYPTION_SDK_PYTHON_INTEGRATION_TEST_AWS_KMS_KEY_ID: >- | ||
arn:aws:kms:us-west-2:658956600833:key/b35311ef1-d8dc-4780-9f5a-55776cbb2f7f | ||
AWS_ENCRYPTION_SDK_PYTHON_INTEGRATION_TEST_AWS_KMS_KEY_ID_2: >- | ||
arn:aws:kms:eu-central-1:658956600833:key/75414c93-5285-4b57-99c9-30c1cf0a22c2 | ||
AWS_ENCRYPTION_SDK_PYTHON_INTEGRATION_TEST_AWS_KMS_MRK_KEY_ID_1: >- | ||
arn:aws:kms:us-west-2:658956600833:key/mrk-80bd8ecdcd4342aebd84b7dc9da498a7 | ||
AWS_ENCRYPTION_SDK_PYTHON_INTEGRATION_TEST_AWS_KMS_MRK_KEY_ID_2: >- | ||
arn:aws:kms:us-east-1:658956600833:key/mrk-80bd8ecdcd4342aebd84b7dc9da498a7 | ||
|
||
phases: | ||
install: | ||
runtime-versions: | ||
python: 3.12 | ||
pre_build: | ||
commands: | ||
# Download previously generated vectors | ||
# This manifest has coverage for both HKeyring and required encryption context CMM | ||
- aws s3 cp s3://generated-vectors-artifacts-bucket/$CODEBUILD_RESOLVED_SOURCE_VERSION/312_hkeyring_reccmm_manifest.zip 312_hkeyring_reccmm_manifest.zip | ||
- unzip 312_hkeyring_reccmm_manifest.zip | ||
- export DAFNY_AWS_ESDK_TEST_VECTOR_MANIFEST_PATH="${PWD}/312_hkeyring_reccmm_manifest/manifest.json" | ||
|
||
# Download dafny | ||
- curl https://github.com/dafny-lang/dafny/releases/download/v4.7.0/dafny-4.7.0-x64-ubuntu-20.04.zip -L -o dafny.zip | ||
- unzip -qq dafny.zip && rm dafny.zip | ||
- export PATH="$PWD/dafny:$PATH" | ||
|
||
# Clone SDK-Dafny repo to get test vectors runner | ||
- git clone --recurse-submodules https://github.com/aws/aws-encryption-sdk-dafny.git | ||
# TODO: Change branch to published when available | ||
- cd aws-encryption-sdk-dafny | ||
- git checkout lucmcdon/hkeyring-vectors | ||
- git pull | ||
- cd AwsEncryptionSDK/ | ||
- make transpile_net | ||
- cd ../mpl/TestVectorsAwsCryptographicMaterialProviders/ | ||
- make transpile_net | ||
|
||
# Change TestVectors to reference the published .NET ESDK | ||
- cd ../../AwsEncryptionSDK/runtimes/net/TestVectorsNative/TestVectors | ||
# - sed -i -e 's/<ProjectReference Include="\.\.\/\.\.\/ESDK\.csproj" \/>/<PackageReference Include="AWS.Cryptography.EncryptionSDK" Version="4.0.1" \/>/g' AWSEncryptionSDKTestVectorLib.csproj | ||
# - cd ../TestVectors | ||
|
||
build: | ||
commands: | ||
- dotnet test --framework net6.0 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
version: 0.2 | ||
|
||
env: | ||
variables: | ||
TOXENV: "py312-full_decrypt_generate-mpl" | ||
AWS_ENCRYPTION_SDK_PYTHON_INTEGRATION_TEST_AWS_KMS_KEY_ID: >- | ||
arn:aws:kms:us-west-2:658956600833:key/b3537ef1-d8dc-4780-9f5a-55776cbb2f7f | ||
AWS_ENCRYPTION_SDK_PYTHON_INTEGRATION_TEST_AWS_KMS_KEY_ID_2: >- | ||
arn:aws:kms:eu-central-1:658956600833:key/75414c93-5285-4b57-99c9-30c1cf0a22c2 | ||
AWS_ENCRYPTION_SDK_PYTHON_INTEGRATION_TEST_AWS_KMS_MRK_KEY_ID_1: >- | ||
arn:aws:kms:us-west-2:658956600833:key/mrk-80bd8ecdcd4342aebd84b7dc9da498a7 | ||
AWS_ENCRYPTION_SDK_PYTHON_INTEGRATION_TEST_AWS_KMS_MRK_KEY_ID_2: >- | ||
arn:aws:kms:us-east-1:658956600833:key/mrk-80bd8ecdcd4342aebd84b7dc9da498a7 | ||
|
||
phases: | ||
install: | ||
runtime-versions: | ||
python: 3.12 | ||
build: | ||
commands: | ||
- pip install "tox < 4.0" | ||
- cd test_vector_handlers/test/aws-crypto-tools-test-vector-framework | ||
# Checkout WIP branch with manifest containing HKeyring and required EC CMM test cases | ||
- git checkout lucmcdon/hierarchy-test-vectors | ||
- git pull | ||
- cd ../.. | ||
- | | ||
tox -- \ | ||
--input test/aws-crypto-tools-test-vector-framework/features/CANONICAL-GENERATED-MANIFESTS/0007-hkeyring-reccmm-generate-manifest.json \ | ||
--output 312_hkeyring_reccmm_manifest \ | ||
--keyrings | ||
- zip -r 312_hkeyring_reccmm_manifest.zip 312_hkeyring_reccmm_manifest | ||
- aws s3 cp 312_hkeyring_reccmm_manifest.zip s3://generated-vectors-artifacts-bucket/$CODEBUILD_RESOLVED_SOURCE_VERSION/312_hkeyring_reccmm_manifest.zip |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.