Skip to content

Commit

Permalink
azurite preset based on the localstack preset (#837)
Browse files Browse the repository at this point in the history
  • Loading branch information
aeolus3000 authored Jul 29, 2023
1 parent e1426bb commit 5ed38a4
Show file tree
Hide file tree
Showing 127 changed files with 932 additions and 5 deletions.
12 changes: 12 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,18 @@ jobs:
name: Test server
command: go test -race -cover -v ./internal/gnomockd -run TestVault

test-azurite:
machine: true
resource_class: large
steps:
- setup-for-go-test
- run:
name: Test preset
command: go test -race -cover -v ./preset/azurite/...
- run:
name: Test server
command: go test -race -cover -v ./internal/gnomockd -run TestAzurite

### preset tests go here

workflows:
Expand Down
25 changes: 25 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -473,8 +473,32 @@ jobs:
cat preset-cover.txt server-cover.txt > coverage.txt
bash <(curl -s https://codecov.io/bash)
test-azurite:
name: "[preset] azurite"
runs-on: ubuntu-latest
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
steps:
- name: Set up Go 1.20
uses: actions/setup-go@v1
with:
go-version: 1.20
- name: Check out code into the Go module directory
uses: actions/checkout@v1
- name: Get dependencies
run: go get -v -t -d ./...
- name: Test preset
run: go test -race -cover -coverprofile=preset-cover.txt -coverpkg=./... -v ./preset/azurite/...
- name: Test server
run: go test -race -cover -coverprofile=server-cover.txt -coverpkg=./... -v ./internal/gnomockd -run TestAzurite
- name: Report coverage
run: |
cat preset-cover.txt server-cover.txt > coverage.txt
bash <(curl -s https://codecov.io/bash)
test-vault:
name: "[preset] vault"

runs-on: ubuntu-latest
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
Expand All @@ -495,4 +519,5 @@ jobs:
run: |
cat preset-cover.txt server-cover.txt > coverage.txt
bash <(curl -s https://codecov.io/bash)
### preset tests go here
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,6 @@ The power of Gnomock is in the Presets. Existing Presets with their supported<su

<small>*\* **Supported** versions are tested as part of CI pipeline. Other versions might work as well.*</small>


| Preset | Go package | Go API | Supported versions | arm64 |
|--------|------------|--------|--------------------|-------|
[Localstack](https://github.com/localstack/localstack) (AWS) | [Go package](https://github.com/orlangure/gnomock/tree/master/preset/localstack) | [Reference](https://pkg.go.dev/github.com/orlangure/gnomock/preset/localstack?tab=doc) | `0.12.2`, `0.13.1`, `0.14.0` | ✅
Expand All @@ -123,6 +122,7 @@ CockroachDB | [Go package](https://github.com/orlangure/gnomock/tree/master/pres
InfluxDB | [Go package](https://github.com/orlangure/gnomock/tree/master/preset/influxdb) | [Reference](https://pkg.go.dev/github.com/orlangure/gnomock/preset/influxdb?tab=doc) | `2.0.4-alpine` | ✅
Cassandra | [Go package](https://github.com/orlangure/gnomock/tree/master/preset/cassandra) | [Reference](https://pkg.go.dev/github.com/orlangure/gnomock/preset/cassandra?tab=doc) | `4.0`, `3` | ✅
Vault | [Go package](https://github.com/orlangure/gnomock/tree/master/preset/vault) | [Reference](https://pkg.go.dev/github.com/orlangure/gnomock/preset/vault?tab=doc) | `1.10.11`, `1.11.8`, `1.12.4`, `1.13` | ✅
Azurite | [Go package](https://github.com/orlangure/gnomock/tree/master/preset/azurite) | [Reference](https://pkg.go.dev/github.com/orlangure/gnomock/preset/azurite?tab=doc) | `3.22.0` | ✅
<!-- new presets go here -->

It is possible to use Gnomock [directly from Go](https://pkg.go.dev/github.com/orlangure/gnomock#StartCustom) code without any presets. HTTP API only allows to setup containers using presets that exist in this repository.
Expand Down
1 change: 1 addition & 0 deletions cmd/server/presets.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package main
// all known presets should go right here so that they are available when
// requested over HTTP.
import (
_ "github.com/orlangure/gnomock/preset/azurite"
_ "github.com/orlangure/gnomock/preset/cassandra"
_ "github.com/orlangure/gnomock/preset/cockroachdb"
_ "github.com/orlangure/gnomock/preset/elastic"
Expand Down
3 changes: 3 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ module github.com/orlangure/gnomock
go 1.20

require (
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0
github.com/Microsoft/go-winio v0.5.2 // indirect
github.com/aws/aws-sdk-go v1.44.247
github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746
Expand Down Expand Up @@ -40,6 +41,8 @@ require (
require golang.org/x/mod v0.8.0

require (
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.3.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.1 // indirect
github.com/cenkalti/backoff/v3 v3.0.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/deepmap/oapi-codegen v1.10.1 // indirect
Expand Down
12 changes: 12 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,18 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.3.0 h1:VuHAcMq8pU1IWNT/m5yRaGqbK0BiQKHT8X4DTp9CHdI=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.3.0/go.mod h1:tZoQYdDZNOiIjdSn0dVWVfl0NEPGOJqVLzSrcFk4Is0=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0 h1:QkAcEIAKbNL4KoFr4SathZPhDhF4mVwpBMFlYjyAqy8=
github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.1 h1:Oj853U9kG+RLTCQXpjvOnrv0WaZHxgmZz1TlLywgOPY=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.1/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w=
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 h1:u/LLAOFgsMv7HmNL4Qufg58y+qElGOt5qv0z1mURkRY=
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0/go.mod h1:2e8rMJtl2+2j+HXbTBwnyGpm5Nou7KhvSfxOq8JpTag=
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1 h1:BWe8a+f/t+7KY7zH2mqygeUD0t8hNFXe08p1Pb3/jKE=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA=
Expand Down Expand Up @@ -72,6 +80,7 @@ github.com/deepmap/oapi-codegen v1.10.1 h1:xybuJUR6D8l7P+LAuxOm5SD7nTlFKHWvOPl31
github.com/deepmap/oapi-codegen v1.10.1/go.mod h1:TvVmDQlUkFli9gFij/gtW1o+tFBr4qCHyv2zG+R0YZY=
github.com/denisenkom/go-mssqldb v0.12.3 h1:pBSGx9Tq67pBOTLmxNuirNTeB8Vjmf886Kx+8Y+8shw=
github.com/denisenkom/go-mssqldb v0.12.3/go.mod h1:k0mtMFOnU+AihqFxPMiF05rtiDrorD1Vrm1KEz5hxDo=
github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI=
github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=
github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8=
github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
Expand Down Expand Up @@ -140,6 +149,7 @@ github.com/gocql/gocql v1.3.2 h1:ox3T+R7VFibHSIGxRkuUi1uIvAv8jBHCWxc+9aFQ/LA=
github.com/gocql/gocql v1.3.2/go.mod h1:3gM2c4D3AnkISwBxGnMMsS8Oy4y2lhbPRsH4xnJrHG8=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
Expand Down Expand Up @@ -276,6 +286,7 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/labstack/echo/v4 v4.7.2/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
Expand Down Expand Up @@ -347,6 +358,7 @@ github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zM
github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0=
github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA=
github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4 h1:Qj1ukM4GlMWXNdMBuXcXfz/Kw9s1qm0CLY32QxuSImI=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
Expand Down
95 changes: 95 additions & 0 deletions internal/gnomockd/azurite_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
package gnomockd_test

import (
"bytes"
"context"
"encoding/json"
"fmt"
"io"
"net/http"
"net/http/httptest"
"os"
"strings"
"testing"

"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container"
"github.com/orlangure/gnomock"
"github.com/orlangure/gnomock/internal/gnomockd"
"github.com/orlangure/gnomock/preset/azurite"
"github.com/stretchr/testify/require"
)

func TestAzurite(t *testing.T) {
t.Parallel()

h := gnomockd.Handler()
bs, err := os.ReadFile("./testdata/azurite.json")
require.NoError(t, err)

buf := bytes.NewBuffer(bs)
w, r := httptest.NewRecorder(), httptest.NewRequest(http.MethodPost, "/start/azurite", buf)
h.ServeHTTP(w, r)

res := w.Result()

defer func() { require.NoError(t, res.Body.Close()) }()

body, err := io.ReadAll(res.Body)
require.NoError(t, err)

require.Equalf(t, http.StatusOK, res.StatusCode, string(body))

var c *gnomock.Container

err = json.Unmarshal(body, &c)
require.NoError(t, err)

connString := fmt.Sprintf(
azurite.ConnectionStringFormat,
azurite.AccountName,
azurite.AccountKey,
c.Address(azurite.BlobServicePort),
azurite.AccountName)

ctx := context.Background()
azblobClient, connErr := azblob.NewClientFromConnectionString(connString, nil)
require.NoError(t, connErr)

var maxResults int32 = 200
options := azblob.ListBlobsFlatOptions{
Include: container.ListBlobsInclude{},
Marker: nil,
MaxResults: &maxResults,
Prefix: nil,
}
pager := azblobClient.NewListBlobsFlatPager("some-bucket", &options)
require.Equal(t, pager.More(), true)

pagesScanned := 0

for pager.More() {
pagesScanned++

resp, err := pager.NextPage(ctx)

require.NoError(t, err)
require.Equal(t, 100, len(resp.Segment.BlobItems))

for _, v := range resp.Segment.BlobItems {
require.True(t, strings.HasPrefix(*v.Name, "/file-"))
}
}

require.Equal(t, 1, pagesScanned)

bs, err = json.Marshal(c)
require.NoError(t, err)

buf = bytes.NewBuffer(bs)
w, r = httptest.NewRecorder(), httptest.NewRequest(http.MethodPost, "/stop", buf)
h.ServeHTTP(w, r)

res = w.Result()
require.Equal(t, http.StatusOK, res.StatusCode)
}
8 changes: 8 additions & 0 deletions internal/gnomockd/testdata/azurite.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"preset": {
"blobstore_path": "./testdata/azurite/blobstore",
"version": "3.22.0"
},
"options": {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
b72ec76436b8a91d7dd090dcda45c415ab29dbf2161675b87eb36dcab3d89a52faf1739a319ed2f8bd09e80823d6ca51fd71486b477ef8eefb1fda86845b63e5
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
288a3d8cd6db81679c7fe49c9369d4e35f302a8b763a5e88b77a9d7948536d43dc45d6658f44b49ac90ece6562595f8204d1425a40174c5634cbf1c35e5e3bb8
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
4f0d13f3f4698ef87a68aaef3d4170edcab46ca9623f805da0fd354eb80def890444d901facac717011d6d9f1b9703c6e559fa28fab3521d965b80ba5b6f2de4
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0b02647f28bf44c188a0ab65d67ccbd7a6e6b6625c7760fdc7f492871c1ed69d1d9c2f1911456dabf90282c980683ea5ad04524b6d64d0a7d5340e8500e2cce7
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
02f0a852ac7c53ba0d04c34385a1ccfb96d615af89caa066466ed0923a5abcdf0f0ad73a6bd92c655a1eb67ef55b6960d17927cc2fd2f1389f6d3be6be927d91
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1c9b6194392fcfcea82208553b59f8bdbb50c44ded7037010ad946afa2a8dca2d9125a4b20074134f7ae432cd7a677439e43262ae8568267702580347bfe72c3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
b05cef2d070695b395aad949d0fb188f749c73998b95bb24bc0d5eb91df82a8b70141c80f8d9fb834d82710c7071221f8e269d31dba312e8e65b380e35bed749
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fdd491662466a8dbd4b8a540df7525b6e648f79c840413f98472ba748c0d388fcb2f148d549f14a15230250461357b4294161c954cdc9e68b1124a147b7933bf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
228387a75e1b50a34e86e88ea692fe7317848e07a21ec8ecf6e56f8e46919ab9efec897b8ce3f9c3976bfbbc41e2e3337b585d53c0b02cc6e4133c08413386bb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
bf7935459585a5d86d098cb1f705a4ee2260fd745c7c3471d9b2498c94317c2d8c4dbea7ccd59a016583cbfb912ebebe2a0ecb94a21984f06da97f14ac859ddc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
b9e5b21f78064ed3221eb020bcf5ac1038f204954539001e114f23bcec4ee9b211001dcf89b8ab22ac1296bc864d68c67e8545e98cfdf79fe8e8d929f7a03a30
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3647089511907596192e85b6f1aece4bef2a23e410a7453dcf94e87d5dc5ac98f8b0ae6526e44015ac555bdc86181c83ef4428484e3c2b8ab2083e5e6a97abde
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
dbb1d95fa804ae3cb81334b04cc37b45c4a70955c28069079b99d62d25423ba913a1be52224aca3b8cf69e71dba9f3460e86ccbe47e71bdbb8d99c5fe28d8dbf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
f96d7440645428b612a69108edd2fa7f5f05e0993d32f84df6d2574e1beaae74e7f3b0298edeadc2b92a94d73bbe18c49730cfda18c4acc3409d9eb934d8630e
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
e1bed71ab9700a7942f6b97813f0d196365f9ab0366b95a1dd00f22e3ba614131c10a757bcc73c1687b9b5922558bceeb20cbf26222911cfb92b7301b7efd838
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
d80774e39cb322471aca968a259944ac78c0b8cb755d67f182601b09da4c585bde50e95547c8fcacb30ffd530c121d1152b0c84378d17cab07a17e8247157c05
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
6d8dec47389adb0a42be012e47df63a75248b61b18e92bdeee52cce9a7ce3358198289ec8b6cc625564c7c35bfa47da8acd3564edce650e072361c8394ebeb86
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
50559c51ce97720c0b5c1daa57140c2c3ca715ce51a5328b1e3a0157aad6a4c893a56b4e1a5784a8e0d4d81e6689376acf776d2d720f6b8cd8d14c38ab720dc4
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
02ab26ece2518e9a813e0447ab63c1a46de881ec7c694b7394ed8f5e7806b26d2a1b1b7d33af9efd5724348d901c71019c05984cda53a95bf743b71ca533c73b
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
7f8d115625d6422441f0fdc30c247640f39a688051e3637ab797a68df790653cd7a5c38d57eb237d0133bf374d3231816dbd3d903e44e92ab211fca0dc247cb3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
e95feae17e50290f16b21214996c908e9510a0c1c29168dc0a58af3febb912007fda029ac2abc20da9f53f7a277d973d3a6d5ca4fddd37cf117952de308f9993
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0a4aad7fc04e7666f49cd7cbf660ef0db3ca84bc301457973f6574aae8019984bc6ab2e8f969aed3a570bc8c0a937a20f88a3d771775a0d4d42e86c602d5fdbe
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
6d89098292d0cad2ef04e1b291f52e5c912da6e7b865aad3a24996774e3a051c88f76e5b5644dd9cb5f2ad61b641baaafd3a21b25b4a0c1aedca13292241fb5c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cc896a51322e5a3a506b5bd41e43e1638753a8040e5d5748c8f8164b8a323abba4d5424304d30d08b33aa4a5d4a1eb314efa48debeda09edaacd35078cbdc850
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
f0a725f71d5383b88862dd0cb7639abe176eae7095df1f2721a67b022e43d14635f3585f352e76284c7a07f59e0a174b4fd1fa677ef2d86bdca4a18c18bc9bef
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
a9007229be777af2cb730ed7ca738a5ddfed0d173c54fbfaf27a9177d22c05f260d08de8373eef34c41119aff5c474302c4c3f625099586adb1f730eb3d405a5
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
41c165b3cdb442092c7be171a9e1ba1eb2dd643f6d213ce387d8283274aa02e13adc07dc7c77a8962985d15f5a5cc1e8e59284513e29ef12781a51bdc6ef8b80
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
6fbbc2f46aa2d651c8f0630d1f2adf0f89f7c4dd8247098b87a1c0fc740ade7a200bfd957a43ca4941798d3038e1e0e71650562e92f8ec460eb81be92e6743a7
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
47dddfbad04b48396b7f76becdf5232ade5603c9059bf00a9ff4deb5bc8f9601506191b367fae5ea15882a266849cef5dafdc0c3b8b08af5feaed87b5788667c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
72e9030e39fc9d68582269fcd7f23b93154617854b3ef6cd02c1074024e333384352e4ae047092ed5c3b773a4ff350e1b21634cd2224b90cbaef3f67b4ed8c3e
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
de08d01a267d1b2fc724b49d7dfecca8da81779546195eee337d2aadda3d1fcb8295e78f5f1de78b9d0de44cf70eafc7057361502b5164fe1fb468bf1c56fd81
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
cb369a9de31222a52db25b6918b2bbda9e68a4edd6e2a6d1d78320dee05c0987eb12556fdd16520489866f0e139cf4c19eb09931dbba08df80adb3f5e192e16d
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
e419bb0c522fbc237c507dd24a61a59e5a893631dff96b4e3dd15eea3b7be92261bb90420e31b97c40862ac3e71139a799af41ce90e717ca3ad27f537ba1c39b
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
f1f7ca7bbaa97605c1a496c488d8e5fa3a4b3f14c55d03ccdc1e8fffabf2b0edeef784c376a34ff3718a01c0614468334291d7e969884f4d1d684847dd05af2f
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
e822087fe6d58e3741ecfb26515e2618876d320f8f191b5829e54b1a7e6ca90eda654d91bb4aabb195028dbb0e0418446de450bf17f2db22b75640f9634f7af3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
93905d1540d5ee806a9120de175455e94bdbb66b9bb6bb76cde771bd1205d6fab5d1b363cfd1a60a5aeea98af31b5853e07882b42c735ffbffb531c6e0d18a12
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
6fde43af7765155d75b43ef0d50e5bd408787eeacb380424eebde10306d3f467aade28ae520b0c7b4cbdf5c63b5f92533503718d05aaa21f3642054037aba60d
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
74708d0d32981cd92f7486da74cf68e46068aba7d244dc5681c26959abcbeb56abe68cfe0728aea53adc3dc308651e8171fb2f22506c83907561dde6fa8669dd
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
760db25a323a535ee7e584fb209aa739d3ac66684e443bc39686c687ca6d325b5bd7c58f454983c317cb8ccf444a6a6413dcd54ce0fd6dfd2f4fa92ac5c6e3db
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
6fce7db5951ed9dfaa2f3b9d625fab289db6c51098fb9324108f2235261fe9478628e24d42307472880277cf949dc4a00a91955616eed4dae1b5797b397e8c61
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
5ef22a53f3a1491903450c1cda2c2cb4d3e660c1f8b377e11d5d4411492e0942c455203e46f35270f56810ec33998a7d5a147817f0a2a84886aad51d25daaedb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
9c7860d924f2f5e3943c13bd40f19d250fa450b925b99f57308685ff19e0ded3b98b6ed08219d37f540c1f515e2a3b31060bc3a6c90a3f9733745798b636b048
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
899c00541c402583e962a0b6e0e46034a08eae0944f1934823545a32fd436447ef8dabed40aca6951ebe3c18257c9a29e44eac42fee1003438e28071aff0cbd9
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
b00e050eb9120f7ab42faf321bbd21cf6663e8320e68d5f113b0e1182a73f13ef28c636f57e76e0f418cc9c3d512da77050b55bf9d5b4f994e6695ddf135390e
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
88a3c8c7371290e0a4d5a5da9697fd294978cc651371c102c83af5795249bfffa3b9dc3ed35b7ad3a0ffec30bb289e8240514adf008963840a9c9abef978d7d9
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
d07c638321adfe3ed251210503be40961bc9d7cd202b03ef489e4184ffcf9de9708bedc88692d8b79312a030a1a9e137723804b408e5c51fbe4dfa33ffd4d7f5
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
a27522a00fbf2de703b7c897eda6f35259833c6ebdad34fa5ca06d8f039b59cff1987a77ead15525fc943db22234c54a951c39f21ba04c6cba20e6c38f566892
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
5731f3fca15cae7a0778b51fd1fe2eac5384424397665a51e8b259bed52789f5909c4d49fa62c2c672a971c549d156087f7371e736e24c71ee97d6ff8b34fe11
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
24d942b642fb31598f456116dcd4c2ef5203640ab4431266deff216bcb5d5b5d7b8c3525b013d397ace924e46df6c09ed2ad675cd7f499152b491e34d0671691
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
e7a7199d72d6f6c3f9127fc9115a201df5700164162f1fba160f513e9a8dfb5d1d4a1ec7235112e6407138f65ea972b327380cc9dacc050e0fe0467ee661ad93
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
77704e3571dca17670dababaa2fede596605bac5ebf180230c2113bb9d77bc85428c51d6e862ca3225a21165f9ae7d8bb3f143f06fbe91e4ec3b31c25411d406
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
34de23c7c874eabd8a5a61412710ad7d6924a79ca829be3bcd57cbad8e9eed4b04cc1c21240629e9d1bd07dab03af3c28a2ce7e4e364be3f197b5cd79f3dfdb7
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
a09dc822a6660ff4701eaac4952ed7e2de29c24e6c6bf297f62c655d24cacf28c213fa0a8c436b4cbf3db7cd91804678037ae2a21cecc11bbf1e56444190e312
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8e24754ec0a3166f8402aed38786b7b4a85f55ccbc6cb566b168e071bb2f7fc005075ccb9122e889786fa0be4cf4dc4b176c480b5c247b3f96a76fc0b4c49e5f
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
59fe66b21d8e8f8c57a38c21165a5e0ea33baa403e6791d89340873818e41376c945c6807cd03bfde19c97ca867e75f38bd5c2b12faa1e2af7332e7b84494e84
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ffe65e87d8de873dbfbeba2acada0ea7a5227a5225e89fb254fb61c187ceb9df83fb7aa946d73e683c87223bae7c0ef8f0f011a1e30beb31e066e88a164f240c
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
f5404950415a1d51601286904ca3b0edf5f4ec2bae9d3ab383f02275aa8d5c105e287e83e561d4dc8fd2ec7b25221993e91327aeae252741e4fe2c814e74e1a7
Loading

0 comments on commit 5ed38a4

Please sign in to comment.