Skip to content

Commit

Permalink
all working
Browse files Browse the repository at this point in the history
  • Loading branch information
decentralgabe committed Dec 16, 2024
1 parent fc9357c commit 430909c
Show file tree
Hide file tree
Showing 8 changed files with 30 additions and 20 deletions.
2 changes: 1 addition & 1 deletion implementations/independent/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module github.com/w3c/vc-test-suite-template
go 1.23.3

require (
github.com/decentralgabe/vc-jose-cose-go v0.0.0-20241215004540-cb1cc1a9b436
github.com/decentralgabe/vc-jose-cose-go v0.0.0-20241216012356-6bf57d050c12
github.com/goccy/go-json v0.10.3
github.com/lestrrat-go/jwx/v2 v2.1.3
github.com/pkg/errors v0.9.1
Expand Down
4 changes: 2 additions & 2 deletions implementations/independent/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/decentralgabe/vc-jose-cose-go v0.0.0-20241215004540-cb1cc1a9b436 h1:U3QRg5mEczSF0diw3nAn6MdGQfoF8pTI3+yKWy32NeA=
github.com/decentralgabe/vc-jose-cose-go v0.0.0-20241215004540-cb1cc1a9b436/go.mod h1:ZOHYH9iQGJdawl1+iSfzrfQQxPHrDVL/rpZRc5z9okI=
github.com/decentralgabe/vc-jose-cose-go v0.0.0-20241216012356-6bf57d050c12 h1:eLh0ogePK0KeJo89twWOk+WJg7BDvFH6hKFo/88UdAw=
github.com/decentralgabe/vc-jose-cose-go v0.0.0-20241216012356-6bf57d050c12/go.mod h1:ZOHYH9iQGJdawl1+iSfzrfQQxPHrDVL/rpZRc5z9okI=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0=
github.com/fxamacker/cbor/v2 v2.5.0 h1:oHsG0V/Q6E/wqTS2O1Cozzsy69nqCiguo5Q1a1ADivE=
Expand Down
21 changes: 11 additions & 10 deletions implementations/independent/issue.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"github.com/decentralgabe/vc-jose-cose-go/credential"
"github.com/decentralgabe/vc-jose-cose-go/jose"
"github.com/decentralgabe/vc-jose-cose-go/sdjwt"
"github.com/decentralgabe/vc-jose-cose-go/validation"
"github.com/goccy/go-json"
"github.com/lestrrat-go/jwx/v2/jwk"
"os"
Expand All @@ -19,20 +20,20 @@ func Issue(inputFile, keyFile string, disclosures []string, feature Feature) (*R
// Read and parse the input file
inputBytes, err := os.ReadFile(inputFile)
if err != nil {
return nil, fmt.Error("error reading input file: %v", err)
return nil, fmt.Errorf("error reading input file: %v", err)
}
if len(inputBytes) == 0 {
return nil, fmt.Error("input file is empty")
return nil, fmt.Errorf("input file is empty")
}
fmt.Printf("Successfully read input file. Content length: %d bytes\n", len(inputBytes))

// Read and parse the key file
keyBytes, err := os.ReadFile(keyFile)
if err != nil {
return nil, fmt.Error("error reading key file: %v", err)
return nil, fmt.Errorf("error reading key file: %v", err)
}
if len(keyBytes) == 0 {
return nil, fmt.Error("key file is empty")
return nil, fmt.Errorf("key file is empty")
}

switch feature {
Expand All @@ -48,14 +49,14 @@ func Issue(inputFile, keyFile string, disclosures []string, feature Feature) (*R

func IssueCredential(credBytes []byte, disclosures []string, keyBytes []byte, feature Feature) (*Result, error) {
// Unmarshal the payload into VerifiableCredential
cred, err := credential.DecodeVC(credBytes)
cred, err := validation.DecodeVC(credBytes)
if err != nil {
return nil, fmt.Error("failed to unmarshal VerifiableCredential: %w", err)
return nil, fmt.Errorf("failed to unmarshal VerifiableCredential: %w", err)
}

var vm cid.VerificationMethod
if err := json.Unmarshal(keyBytes, &vm); err != nil {
return nil, fmt.Error("error unmarshaling verification method: %v", err)
return nil, fmt.Errorf("error unmarshaling verification method: %v", err)
}

switch feature {
Expand All @@ -73,14 +74,14 @@ func IssueCredential(credBytes []byte, disclosures []string, keyBytes []byte, fe

func IssuePresentation(presBytes []byte, disclosures []string, keyBytes []byte, feature Feature) (*Result, error) {
// Unmarshal the payload into VerifiablePresentation
pres, err := credential.DecodeVP(presBytes)
pres, err := validation.DecodeVP(presBytes)
if err != nil {
return nil, fmt.Error("failed to unmarshal VerifiablePresentation: %w", err)
return nil, fmt.Errorf("failed to unmarshal VerifiablePresentation: %w", err)
}

var vm cid.VerificationMethod
if err := json.Unmarshal(keyBytes, &vm); err != nil {
return nil, fmt.Error("error unmarshaling verification method: %v", err)
return nil, fmt.Errorf("error unmarshaling verification method: %v", err)
}

switch feature {
Expand Down
2 changes: 1 addition & 1 deletion tests/input/credential-jose-minimal.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
eyJhbGciOiJFZERTQSIsImN0eSI6ImJhZCtjdHkiLCJraWQiOiIyYU9IYVF4c1dWVDRtTHNVa2R0bENuVVYtYXUwQkJSLTV5UFlhUGFDYzVrIiwidHlwIjoiYmFkK3R5cCJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiX3NkIjpbInVHWkdfcEc0UXhnbV9TSGc1ZFdmSW5nVk1aUXdDeFFUeTRjS1lBaDdNZ1EiLCJ0Nmgzb0lhOUUyMEhXdE5aQ25JQnJzbm90ZDN3RldCMnBvUm5Gam9pTGpVIl0sImlkIjoidXJuOnV1aWQ6Mzk3ODM0NGYtODU5Ni00YzNhLWE5NzgtOGZjYWJhMzkwM2M1IiwiaXNzIjoiaHR0cHM6Ly9leGFtcGxlLmlzc3Vlci92Yy1qb3NlLWNvc2UiLCJqdGkiOiJ1cm46dXVpZDozOTc4MzQ0Zi04NTk2LTRjM2EtYTk3OC04ZmNhYmEzOTAzYzUiLCJ2ZXJpZmlhYmxlQ3JlZGVudGlhbCI6W3siQGNvbnRleHQiOiJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJpZCI6ImRhdGE6YXBwbGljYXRpb24vdmMrand0LGV5SmhiR2NpT2lKRlV6STFOaUlzSW1OMGVTSTZJblpqSWl3aWEybGtJam9pTnpOMmIwMVlSazV0VG14UFJYQjFXVU5UU214b09HVk9NR1J6WTNscmIwODJaMEoxYTJkU1V6RjFWU0lzSW5SNWNDSTZJblpqSzJwM2RDSjkuZXlKQVkyOXVkR1Y0ZENJNld5Sm9kSFJ3Y3pvdkwzZDNkeTUzTXk1dmNtY3Zibk12WTNKbFpHVnVkR2xoYkhNdmRqSWlMQ0pvZEhSd2N6b3ZMM2QzZHk1M015NXZjbWN2Ym5NdlkzSmxaR1Z1ZEdsaGJITXZaWGhoYlhCc1pYTXZkaklpWFN3aVkzSmxaR1Z1ZEdsaGJGTmphR1Z0WVNJNmV5SnBaQ0k2SW1oMGRIQnpPaTh2WlhoaGJYQnNaUzV2Y21jdlpYaGhiWEJzWlhNdlpHVm5jbVZsTG1wemIyNGlMQ0owZVhCbElqb2lTbk52YmxOamFHVnRZU0o5TENKamNtVmtaVzUwYVdGc1UzVmlhbVZqZENJNmV5SmtaV2R5WldVaU9uc2libUZ0WlNJNklrSmhZMmhsYkc5eUlHOW1JRk5qYVdWdVkyVWdZVzVrSUVGeWRITWlMQ0owZVhCbElqb2lRbUZqYUdWc2IzSkVaV2R5WldVaWZTd2lhV1FpT2lKa2FXUTZaWGhoYlhCc1pUb3hNak1pZlN3aWFXRjBJam9pTWpBeE1DMHdNUzB3TVZReE9Ub3lNem95TkZvaUxDSnBaQ0k2SW1oMGRIQTZMeTkxYm1sMlpYSnphWFI1TG1WNFlXMXdiR1V2WTNKbFpHVnVkR2xoYkhNdk1UZzNNaUlzSW1semN5STZJbWgwZEhCek9pOHZaWGhoYlhCc1pTNXBjM04xWlhJdmRtTXRhbTl6WlMxamIzTmxJaXdpYVhOemRXVnlJam9pYUhSMGNITTZMeTlsZUdGdGNHeGxMbWx6YzNWbGNpOTJZeTFxYjNObExXTnZjMlVpTENKcWRHa2lPaUpvZEhSd09pOHZkVzVwZG1WeWMybDBlUzVsZUdGdGNHeGxMMk55WldSbGJuUnBZV3h6THpFNE56SWlMQ0owZVhCbElqcGJJbFpsY21sbWFXRmliR1ZEY21Wa1pXNTBhV0ZzSWl3aVJYaGhiWEJzWlVGc2RXMXVhVU55WldSbGJuUnBZV3dpWFN3aWRtRnNhV1JHY205dElqb2lNakF4TUMwd01TMHdNVlF4T1RveU16b3lORm9pZlEuLVg2QS0tVG5DZ2VlcG5hLWRYbjdqNl9xMkRmUXpqaVlkRWMtcGJhSFIzOEpVSXY1dWJoallwMlRiX0xKdUpJbnpJN3FLZlAtSmNNbEhkZDZiRG5PTHciLCJ0eXBlIjoiRW52ZWxvcGVkVmVyaWZpYWJsZUNyZWRlbnRpYWwifV19.DDVjx3qIw2ThTtuskiMOfMMphCyk2ofDpjCuvovJabvn8flWaG9ks6B8r32otw06TnRFGXE-7vRDlCSfmmeLDw~WyJhUTR1SEJob3E1dXNJcnY0TXdHc2VRIiwiaG9sZGVyIiwiaHR0cHM6Ly9leGFtcGxlLmlzc3Vlci92Yy1qb3NlLWNvc2UiXQ~WyJEakMtbEdlRVpBUDNJT044WHc4ald3IiwidHlwZSIsIlZlcmlmaWFibGVQcmVzZW50YXRpb24iXQ~
eyJhbGciOiJFUzI1NiIsImN0eSI6InZjIiwia2lkIjoiNzN2b01YRk5tTmxPRXB1WUNTSmxoOGVOMGRzY3lrb082Z0J1a2dSUzF1VSIsInR5cCI6InZjK2p3dCJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiY3JlZGVudGlhbFNjaGVtYSI6eyJpZCI6Imh0dHBzOi8vZXhhbXBsZS5vcmcvZXhhbXBsZXMvZGVncmVlLmpzb24iLCJ0eXBlIjoiSnNvblNjaGVtYSJ9LCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsibmFtZSI6IkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiLCJ0eXBlIjoiQmFjaGVsb3JEZWdyZWUifSwiaWQiOiJkaWQ6ZXhhbXBsZToxMjMifSwiaWF0IjoiMjAxMC0wMS0wMVQxOToyMzoyNFoiLCJpZCI6Imh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMTg3MiIsImlzcyI6Imh0dHBzOi8vZXhhbXBsZS5pc3N1ZXIvdmMtam9zZS1jb3NlIiwiaXNzdWVyIjoiaHR0cHM6Ly9leGFtcGxlLmlzc3Vlci92Yy1qb3NlLWNvc2UiLCJqdGkiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzE4NzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZUFsdW1uaUNyZWRlbnRpYWwiXSwidmFsaWRGcm9tIjoiMjAxMC0wMS0wMVQxOToyMzoyNFoifQ.8MlgeePPgLKmffZriidj8y2Z5rlxX4A7-dDppUMMjNNURUk9PaG6Qh5irW0Gyot1ZITIFPn1in9OZINvB6dkOA
2 changes: 1 addition & 1 deletion tests/input/presentation-jose-multiple.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
eyJhbGciOiJFUzM4NCIsImN0eSI6InZwIiwia2lkIjoiOTZxQm5EcHZTNng4WVNDSF94bW5MbFhaTWtEaEhCcjhsajk5dTVhb2c3cyIsInR5cCI6InZwK2p3dCJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiZXhwIjoxNzM0MTMwOTA4LCJob2xkZXIiOiJkaWQ6ZXhhbXBsZTplYmZlYjFmNzEyZWJjNmYxYzI3NmUxMmVjMjEiLCJpYXQiOjE3MzQwNDQ1MDgsImlkIjoidXJuOnV1aWQ6Mzk3ODM0NGYtODU5Ni00YzNhLWE5NzgtOGZjYWJhMzkwM2M1IiwiaXNzIjoiZGlkOmV4YW1wbGU6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwianRpIjoidXJuOnV1aWQ6Mzk3ODM0NGYtODU5Ni00YzNhLWE5NzgtOGZjYWJhMzkwM2M1IiwidHlwZSI6IlZlcmlmaWFibGVQcmVzZW50YXRpb24iLCJ2ZXJpZmlhYmxlQ3JlZGVudGlhbCI6W3siQGNvbnRleHQiOiJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJpZCI6ImRhdGE6YXBwbGljYXRpb24vdmMrand0LGV5SmhiR2NpT2lKRlV6STFOaUo5LmV5SnBjM01pT2lKa2FXUTZaWGhoYlhCc1pUb3hNak1pZlEuLi4uIiwidHlwZSI6IkVudmVsb3BlZFZlcmlmaWFibGVDcmVkZW50aWFsIn0seyJAY29udGV4dCI6Imh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImlkIjoiZGF0YTphcHBsaWNhdGlvbi92YytzZC1qd3QsZXlKaGJHY2lPaUpGVXpJMU5pSjkuZXlKcGMzTWlPaUprYVdRNlpYaGhiWEJzWlRveE1qTWlmUS4uLi5-IiwidHlwZSI6IkVudmVsb3BlZFZlcmlmaWFibGVDcmVkZW50aWFsIn0seyJAY29udGV4dCI6Imh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImlkIjoiZGF0YTphcHBsaWNhdGlvbi92Yytjb3NlO2Jhc2U2NCwwb1JEb1FFbS4uLiIsInR5cGUiOiJFbnZlbG9wZWRWZXJpZmlhYmxlQ3JlZGVudGlhbCJ9XX0.WdfRJ69ALOItbkHFlCZuQ-JycvX9s-LZ2PebMo_LlXhm9Wgm3e7CUDq96Br3h8Ylg2PLmaGi8bqp_NfHaHP9QxgN5p_wo0lR5So16RMlsVJYZrdYS6xfEY_verp80CQl
eyJhbGciOiJFUzM4NCIsImN0eSI6InZwIiwia2lkIjoiOTZxQm5EcHZTNng4WVNDSF94bW5MbFhaTWtEaEhCcjhsajk5dTVhb2c3cyIsInR5cCI6InZwK2p3dCJ9.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiZXhwIjoxNzM0Mzk3NDUwLCJob2xkZXIiOiJodHRwczovL2V4YW1wbGUuaXNzdWVyL3ZjLWpvc2UtY29zZSIsImlhdCI6MTczNDMxMTA1MCwiaWQiOiJ1cm46dXVpZDozOTc4MzQ0Zi04NTk2LTRjM2EtYTk3OC04ZmNhYmEzOTAzYzUiLCJpc3MiOiJodHRwczovL2V4YW1wbGUuaXNzdWVyL3ZjLWpvc2UtY29zZSIsImp0aSI6InVybjp1dWlkOjM5NzgzNDRmLTg1OTYtNGMzYS1hOTc4LThmY2FiYTM5MDNjNSIsInR5cGUiOiJWZXJpZmlhYmxlUHJlc2VudGF0aW9uIiwidmVyaWZpYWJsZUNyZWRlbnRpYWwiOlt7IkBjb250ZXh0IjoiaHR0cHM6Ly93d3cudzMub3JnL25zL2NyZWRlbnRpYWxzL3YyIiwiaWQiOiJkYXRhOmFwcGxpY2F0aW9uL3ZjK2p3dCxleUpoYkdjaU9pSkZVekkxTmlJc0ltTjBlU0k2SW5aaklpd2lhMmxrSWpvaU56TjJiMDFZUms1dFRteFBSWEIxV1VOVFNteG9PR1ZPTUdSelkzbHJiMDgyWjBKMWEyZFNVekYxVlNJc0luUjVjQ0k2SW5aaksycDNkQ0o5LmV5SkFZMjl1ZEdWNGRDSTZXeUpvZEhSd2N6b3ZMM2QzZHk1M015NXZjbWN2Ym5NdlkzSmxaR1Z1ZEdsaGJITXZkaklpTENKb2RIUndjem92TDNkM2R5NTNNeTV2Y21jdmJuTXZZM0psWkdWdWRHbGhiSE12WlhoaGJYQnNaWE12ZGpJaVhTd2lZM0psWkdWdWRHbGhiRk5qYUdWdFlTSTZleUpwWkNJNkltaDBkSEJ6T2k4dlpYaGhiWEJzWlM1dmNtY3ZaWGhoYlhCc1pYTXZaR1ZuY21WbExtcHpiMjRpTENKMGVYQmxJam9pU25OdmJsTmphR1Z0WVNKOUxDSmpjbVZrWlc1MGFXRnNVM1ZpYW1WamRDSTZleUprWldkeVpXVWlPbnNpYm1GdFpTSTZJa0poWTJobGJHOXlJRzltSUZOamFXVnVZMlVnWVc1a0lFRnlkSE1pTENKMGVYQmxJam9pUW1GamFHVnNiM0pFWldkeVpXVWlmU3dpYVdRaU9pSmthV1E2WlhoaGJYQnNaVG94TWpNaWZTd2lhV0YwSWpvaU1qQXhNQzB3TVMwd01WUXhPVG95TXpveU5Gb2lMQ0pwWkNJNkltaDBkSEE2THk5MWJtbDJaWEp6YVhSNUxtVjRZVzF3YkdVdlkzSmxaR1Z1ZEdsaGJITXZNVGczTWlJc0ltbHpjeUk2SW1oMGRIQnpPaTh2WlhoaGJYQnNaUzVwYzNOMVpYSXZkbU10YW05elpTMWpiM05sSWl3aWFYTnpkV1Z5SWpvaWFIUjBjSE02THk5bGVHRnRjR3hsTG1semMzVmxjaTkyWXkxcWIzTmxMV052YzJVaUxDSnFkR2tpT2lKb2RIUndPaTh2ZFc1cGRtVnljMmwwZVM1bGVHRnRjR3hsTDJOeVpXUmxiblJwWVd4ekx6RTROeklpTENKMGVYQmxJanBiSWxabGNtbG1hV0ZpYkdWRGNtVmtaVzUwYVdGc0lpd2lSWGhoYlhCc1pVRnNkVzF1YVVOeVpXUmxiblJwWVd3aVhTd2lkbUZzYVdSR2NtOXRJam9pTWpBeE1DMHdNUzB3TVZReE9Ub3lNem95TkZvaWZRLjhNbGdlZVBQZ0xLbWZmWnJpaWRqOHkyWjVybHhYNEE3LWREcHBVTU1qTk5VUlVrOVBhRzZRaDVpclcwR3lvdDFaSVRJRlBuMWluOU9aSU52QjZka09BIiwidHlwZSI6IkVudmVsb3BlZFZlcmlmaWFibGVDcmVkZW50aWFsIn0seyJAY29udGV4dCI6Imh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImlkIjoiZGF0YTphcHBsaWNhdGlvbi92YytzZC1qd3QsZXlKaGJHY2lPaUpGVXpNNE5DSXNJbU4wZVNJNkluWmpJaXdpYTJsa0lqb2lPVFp4UW01RWNIWlRObmc0V1ZORFNGOTRiVzVNYkZoYVRXdEVhRWhDY2poc2FqazVkVFZoYjJjM2N5SXNJblI1Y0NJNkluWmpLM05rTFdwM2RDSjkuZXlKQVkyOXVkR1Y0ZENJNld5Sm9kSFJ3Y3pvdkwzZDNkeTUzTXk1dmNtY3Zibk12WTNKbFpHVnVkR2xoYkhNdmRqSWlMQ0pvZEhSd2N6b3ZMM2QzZHk1M015NXZjbWN2Ym5NdlkzSmxaR1Z1ZEdsaGJITXZaWGhoYlhCc1pYTXZkaklpWFN3aVkzSmxaR1Z1ZEdsaGJGTjFZbXBsWTNRaU9uc2lYM05rSWpwYkltdHVZek4yWjJwbVpscFVVRGR3UkhrMk9WQXhWbmRPVjFSR1ZGaHhibGcxYjBSMU5sOXdVMlJUWXpBaUxDSXhlRWxEWmtFM1ozVkxWWFp3VTNGNlJGOVRlbGh3VFU1NVUxUnlXVlJEU1dOd05Fd3hPVTFZZG5GeklsMHNJbUpwY25Sb1JHRjBaU0k2SWpFNU9UQXRNREV0TURFaUxDSnBaQ0k2SW1ScFpEcGxlR0Z0Y0d4bE9tVmlabVZpTVdZM01USmxZbU0yWmpGak1qYzJaVEV5WldNeU1TSjlMQ0pwWVhRaU9pSXlNREkwTFRBeExUQXhWREF3T2pBd09qQXdXaUlzSW1semN5STZJbWgwZEhCek9pOHZaWGhoYlhCc1pTNXBjM04xWlhJdmRtTXRhbTl6WlMxamIzTmxJaXdpYVhOemRXVnlJam9pYUhSMGNITTZMeTlsZUdGdGNHeGxMbWx6YzNWbGNpOTJZeTFxYjNObExXTnZjMlVpTENKMGVYQmxJanBiSWxabGNtbG1hV0ZpYkdWRGNtVmtaVzUwYVdGc0lpd2lTV1JsYm5ScGRIbERjbVZrWlc1MGFXRnNJbDBzSW5aaGJHbGtSbkp2YlNJNklqSXdNalF0TURFdE1ERlVNREE2TURBNk1EQmFJbjAuYkNnel9FZ05INUVMUnIteHZ1ZEd2dElXTVF4b2JraktMblFlcjNpWFYzaVprNF92S3BNRzhoVXp2cnJXbGNwb3hKby1EaF9Vc204TFljRk9kbkNIWGRWTmxuZno4YmFMRXZOUmNVYy02ME5rRXdENzM5cWpiRUV2ckNuWVk5amJ-V3lJMGJVWkxNRTE0VkVzeVJtbHVaRk54UTBrdFN6aEJJaXdpWm1seWMzUk9ZVzFsSWl3aVNtRnVaU0pkfld5SnZVM2x6Ym5kc1oxWkdSRVV6Wnpkc2JUSktaRlpSSWl3aWJHRnpkRTVoYldVaUxDSkViMlVpWFF-IiwidHlwZSI6IkVudmVsb3BlZFZlcmlmaWFibGVDcmVkZW50aWFsIn0seyJAY29udGV4dCI6Imh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImlkIjoiZGF0YTphcHBsaWNhdGlvbi92Yytjb3NlO2Jhc2U2NCwwb1JZVnFRQkpnTnVZWEJ3YkdsallYUnBiMjR2ZG1NRVdDczNNM1p2VFZoR1RtMU9iRTlGY0hWWlExTktiR2c0WlU0d1pITmplV3R2VHpablFuVnJaMUpUTVhWVkVITmhjSEJzYVdOaGRHbHZiaTkyWXl0amIzTmxvRmtCOG5zaVFHTnZiblJsZUhRaU9sc2lhSFIwY0hNNkx5OTNkM2N1ZHpNdWIzSm5MMjV6TDJOeVpXUmxiblJwWVd4ekwzWXlJaXdpYUhSMGNITTZMeTkzZDNjdWR6TXViM0puTDI1ekwyTnlaV1JsYm5ScFlXeHpMMlY0WVcxd2JHVnpMM1l5SWwwc0luUjVjR1VpT2xzaVZtVnlhV1pwWVdKc1pVTnlaV1JsYm5ScFlXd2lMQ0pGZUdGdGNHeGxRV3gxYlc1cFEzSmxaR1Z1ZEdsaGJDSmRMQ0pwWkNJNkltaDBkSEE2THk5MWJtbDJaWEp6YVhSNUxtVjRZVzF3YkdVdlkzSmxaR1Z1ZEdsaGJITXZNVGczTWlJc0ltbHpjM1ZsY2lJNkltaDBkSEJ6T2k4dlpYaGhiWEJzWlM1cGMzTjFaWEl2ZG1NdGFtOXpaUzFqYjNObElpd2lkbUZzYVdSR2NtOXRJam9pTWpBeE1DMHdNUzB3TVZReE9Ub3lNem95TkZvaUxDSmpjbVZrWlc1MGFXRnNVM1ZpYW1WamRDSTZleUprWldkeVpXVWlPbnNpYm1GdFpTSTZJa0poWTJobGJHOXlJRzltSUZOamFXVnVZMlVnWVc1a0lFRnlkSE1pTENKMGVYQmxJam9pUW1GamFHVnNiM0pFWldkeVpXVWlmU3dpYVdRaU9pSmthV1E2WlhoaGJYQnNaVG94TWpNaWZTd2lZM0psWkdWdWRHbGhiRk5qYUdWdFlTSTZleUpwWkNJNkltaDBkSEJ6T2k4dlpYaGhiWEJzWlM1dmNtY3ZaWGhoYlhCc1pYTXZaR1ZuY21WbExtcHpiMjRpTENKMGVYQmxJam9pU25OdmJsTmphR1Z0WVNKOWZWaEFzM1cxV044M3lWdS9Ib0V5WU15N1RjbXViOXpMNTVQRG5mY3g1eUc0MkJUZTBnZFErRTBWOUIzQjFnTVp5dDlkREVHWlZKeW5kOHZ6dFdWcjdkNEtrd1xuIiwidHlwZSI6IkVudmVsb3BlZFZlcmlmaWFibGVDcmVkZW50aWFsIn1dfQ.GDO6_m6zZikLim0U4eEhvLziz3Zo4t2Kg1A7fujAURAqCahZmmEInOMOx4rk0LKBvRpXWhW0ltuX_OcCG4mIX1h_mGMsQZ2oq6Ji1abMbFjtmIP6l3BgQnbzw4HfWoLX
Loading

0 comments on commit 430909c

Please sign in to comment.