diff --git a/go/CHANGELOG.md b/go/CHANGELOG.md index 984175e1..ea470aa0 100644 --- a/go/CHANGELOG.md +++ b/go/CHANGELOG.md @@ -6,6 +6,7 @@ - fix: guarantee that `spec.InnerSpec.MaxPrefixLength` < `spec.InnerSpec.MinPrefixLength` + `spec.InnerSpec.ChildSize` ([#369](https://github.com/cosmos/ics23/pull/369)) - refactor: support for `BatchProof` and `CompressedBatchProof` is being dropped. * The API's `BatchVerifyMembership`, `BatchVerifyNonMembership`, and `CombineProofs` have been removed. ([#390](https://github.com/cosmos/ics23/pull/390)) + * The API's `IsCompressed`, `Compress`, and `Decompress` have been removed. ([#392](https://github.com/cosmos/ics23/pull/392)) # v0.11.0 diff --git a/go/compress.go b/go/compress.go deleted file mode 100644 index 173e7c87..00000000 --- a/go/compress.go +++ /dev/null @@ -1,159 +0,0 @@ -package ics23 - -// IsCompressed returns true if the proof was compressed -func IsCompressed(proof *CommitmentProof) bool { - return proof.GetCompressed() != nil -} - -// Compress will return a CompressedBatchProof if the input is BatchProof -// Otherwise it will return the input. -// This is safe to call multiple times (idempotent) -func Compress(proof *CommitmentProof) *CommitmentProof { - batch := proof.GetBatch() - if batch == nil { - return proof - } - return &CommitmentProof{ - Proof: &CommitmentProof_Compressed{ - Compressed: compress(batch), - }, - } -} - -// Decompress will return a BatchProof if the input is CompressedBatchProof -// Otherwise it will return the input. -// This is safe to call multiple times (idempotent) -func Decompress(proof *CommitmentProof) *CommitmentProof { - comp := proof.GetCompressed() - if comp != nil { - return &CommitmentProof{ - Proof: &CommitmentProof_Batch{ - Batch: decompress(comp), - }, - } - } - return proof -} - -func compress(batch *BatchProof) *CompressedBatchProof { - var centries []*CompressedBatchEntry - var lookup []*InnerOp - registry := make(map[string]int32) - - for _, entry := range batch.Entries { - centry := compressEntry(entry, &lookup, registry) - centries = append(centries, centry) - } - - return &CompressedBatchProof{ - Entries: centries, - LookupInners: lookup, - } -} - -func compressEntry(entry *BatchEntry, lookup *[]*InnerOp, registry map[string]int32) *CompressedBatchEntry { - if exist := entry.GetExist(); exist != nil { - return &CompressedBatchEntry{ - Proof: &CompressedBatchEntry_Exist{ - Exist: compressExist(exist, lookup, registry), - }, - } - } - - non := entry.GetNonexist() - return &CompressedBatchEntry{ - Proof: &CompressedBatchEntry_Nonexist{ - Nonexist: &CompressedNonExistenceProof{ - Key: non.Key, - Left: compressExist(non.Left, lookup, registry), - Right: compressExist(non.Right, lookup, registry), - }, - }, - } -} - -func compressExist(exist *ExistenceProof, lookup *[]*InnerOp, registry map[string]int32) *CompressedExistenceProof { - if exist == nil { - return nil - } - res := &CompressedExistenceProof{ - Key: exist.Key, - Value: exist.Value, - Leaf: exist.Leaf, - Path: make([]int32, len(exist.Path)), - } - for i, step := range exist.Path { - res.Path[i] = compressStep(step, lookup, registry) - } - return res -} - -func compressStep(step *InnerOp, lookup *[]*InnerOp, registry map[string]int32) int32 { - bz, err := step.Marshal() - if err != nil { - panic(err) - } - - // load from cache if there - if num, ok := registry[string(bz)]; ok { - return num - } - - // create new step if not there - num := int32(len(*lookup)) - *lookup = append(*lookup, step) - registry[string(bz)] = num - return num -} - -func decompress(comp *CompressedBatchProof) *BatchProof { - lookup := comp.LookupInners - - var entries []*BatchEntry - - for _, centry := range comp.Entries { - entry := decompressEntry(centry, lookup) - entries = append(entries, entry) - } - - return &BatchProof{ - Entries: entries, - } -} - -func decompressEntry(entry *CompressedBatchEntry, lookup []*InnerOp) *BatchEntry { - if exist := entry.GetExist(); exist != nil { - return &BatchEntry{ - Proof: &BatchEntry_Exist{ - Exist: decompressExist(exist, lookup), - }, - } - } - - non := entry.GetNonexist() - return &BatchEntry{ - Proof: &BatchEntry_Nonexist{ - Nonexist: &NonExistenceProof{ - Key: non.Key, - Left: decompressExist(non.Left, lookup), - Right: decompressExist(non.Right, lookup), - }, - }, - } -} - -func decompressExist(exist *CompressedExistenceProof, lookup []*InnerOp) *ExistenceProof { - if exist == nil { - return nil - } - res := &ExistenceProof{ - Key: exist.Key, - Value: exist.Value, - Leaf: exist.Leaf, - Path: make([]*InnerOp, len(exist.Path)), - } - for i, step := range exist.Path { - res.Path[i] = lookup[step] - } - return res -} diff --git a/go/ics23.go b/go/ics23.go index db129753..51f23230 100644 --- a/go/ics23.go +++ b/go/ics23.go @@ -23,25 +23,23 @@ and determine neighbors */ package ics23 -import ( - "bytes" -) - // CommitmentRoot is a byte slice that represents the merkle root of a tree that can be used to validate proofs type CommitmentRoot []byte // VerifyMembership returns true iff -// proof is (contains) an ExistenceProof for the given key and value AND -// calculating the root for the ExistenceProof matches the provided CommitmentRoot +// proof is an ExistenceProof for the given key and value AND +// calculating the root for the ExistenceProof matches the provided CommitmentRoot. func VerifyMembership(spec *ProofSpec, root CommitmentRoot, proof *CommitmentProof, key []byte, value []byte) bool { - // decompress it before running code (no-op if not compressed) - proof = Decompress(proof) - ep := getExistProofForKey(proof, key) + if proof == nil { + return false + } + + ep := proof.GetExist() if ep == nil { return false } - err := ep.Verify(spec, root, key, value) - return err == nil + + return ep.Verify(spec, root, key, value) == nil } // VerifyNonMembership returns true iff @@ -50,58 +48,14 @@ func VerifyMembership(spec *ProofSpec, root CommitmentRoot, proof *CommitmentPro // left and right proofs are neighbors (or left/right most if one is nil) // provided key is between the keys of the two proofs func VerifyNonMembership(spec *ProofSpec, root CommitmentRoot, proof *CommitmentProof, key []byte) bool { - // decompress it before running code (no-op if not compressed) - proof = Decompress(proof) - np := getNonExistProofForKey(spec, proof, key) - if np == nil { - return false - } - err := np.Verify(spec, root, key) - return err == nil -} - -func getExistProofForKey(proof *CommitmentProof, key []byte) *ExistenceProof { if proof == nil { - return nil - } - - switch p := proof.Proof.(type) { - case *CommitmentProof_Exist: - ep := p.Exist - if bytes.Equal(ep.Key, key) { - return ep - } - case *CommitmentProof_Batch: - for _, sub := range p.Batch.Entries { - if ep := sub.GetExist(); ep != nil && bytes.Equal(ep.Key, key) { - return ep - } - } + return false } - return nil -} -func getNonExistProofForKey(spec *ProofSpec, proof *CommitmentProof, key []byte) *NonExistenceProof { - switch p := proof.Proof.(type) { - case *CommitmentProof_Nonexist: - np := p.Nonexist - if isLeft(spec, np.Left, key) && isRight(spec, np.Right, key) { - return np - } - case *CommitmentProof_Batch: - for _, sub := range p.Batch.Entries { - if np := sub.GetNonexist(); np != nil && isLeft(spec, np.Left, key) && isRight(spec, np.Right, key) { - return np - } - } + np := proof.GetNonexist() + if np == nil { + return false } - return nil -} - -func isLeft(spec *ProofSpec, left *ExistenceProof, key []byte) bool { - return left == nil || bytes.Compare(keyForComparison(spec, left.Key), keyForComparison(spec, key)) < 0 -} -func isRight(spec *ProofSpec, right *ExistenceProof, key []byte) bool { - return right == nil || bytes.Compare(keyForComparison(spec, right.Key), keyForComparison(spec, key)) > 0 + return np.Verify(spec, root, key) == nil } diff --git a/go/proof.go b/go/proof.go index 91fa232e..c801e8fe 100644 --- a/go/proof.go +++ b/go/proof.go @@ -86,23 +86,9 @@ func (p *CommitmentProof) Calculate() (CommitmentRoot, error) { return v.Exist.Calculate() case *CommitmentProof_Nonexist: return v.Nonexist.Calculate() - case *CommitmentProof_Batch: - if len(v.Batch.GetEntries()) == 0 || v.Batch.GetEntries()[0] == nil { - return nil, errors.New("batch proof has empty entry") - } - if e := v.Batch.GetEntries()[0].GetExist(); e != nil { - return e.Calculate() - } - if n := v.Batch.GetEntries()[0].GetNonexist(); n != nil { - return n.Calculate() - } - case *CommitmentProof_Compressed: - proof := Decompress(p) - return proof.Calculate() default: return nil, errors.New("unrecognized proof type") } - return nil, errors.New("unrecognized proof type") } // Verify does all checks to ensure this proof proves this key, value -> root diff --git a/go/vectors_data_test.go b/go/vectors_data_test.go index 15a86ecc..998f80e4 100644 --- a/go/vectors_data_test.go +++ b/go/vectors_data_test.go @@ -73,22 +73,6 @@ type BatchVectorData struct { Invalid bool // default is valid } -func DecompressBatchVectorsTestData(t *testing.T) map[string]*CommitmentProof { - t.Helper() - iavl := filepath.Join("..", "testdata", "iavl") - tendermint := filepath.Join("..", "testdata", "tendermint") - smt := filepath.Join("..", "testdata", "smt") - // note that these batches are already compressed - batchIAVL := loadBatch(t, iavl, "batch_exist.json") - batchTM := loadBatch(t, tendermint, "batch_nonexist.json") - batchSMT := loadBatch(t, smt, "batch_nonexist.json") - return map[string]*CommitmentProof{ - "iavl": batchIAVL, - "tendermint": batchTM, - "smt": batchSMT, - } -} - func LoadFile(tb testing.TB, dir string, filename string) (*CommitmentProof, *RefData) { tb.Helper() // load the file into a json struct @@ -128,25 +112,3 @@ func mustHex(tb testing.TB, data string) []byte { } return res } - -func loadBatch(t *testing.T, dir string, filename string) *CommitmentProof { - t.Helper() - // load the file into a json struct - name := filepath.Join(dir, filename) - bz, err := os.ReadFile(name) - if err != nil { - t.Fatalf("Read file: %+v", err) - } - var data BatchVector - err = json.Unmarshal(bz, &data) - if err != nil { - t.Fatalf("Unmarshal json: %+v", err) - } - // parse the protobuf object - var proof CommitmentProof - err = proof.Unmarshal(mustHex(t, data.Proof)) - if err != nil { - t.Fatalf("Unmarshal protobuf: %+v", err) - } - return &proof -} diff --git a/go/vectors_test.go b/go/vectors_test.go index 9b6282a8..e99cbc12 100644 --- a/go/vectors_test.go +++ b/go/vectors_test.go @@ -13,6 +13,7 @@ func TestVectors(t *testing.T) { name := fmt.Sprintf("%s/%s", tc.Dir, tc.Filename) t.Run(name, func(t *testing.T) { proof, ref := LoadFile(t, tc.Dir, tc.Filename) + // Test Calculate method calculatedRoot, err := proof.Calculate() if err != nil { @@ -26,50 +27,14 @@ func TestVectors(t *testing.T) { // non-existence valid := VerifyNonMembership(tc.Spec, ref.RootHash, proof, ref.Key) if !valid { - t.Fatal("Invalid proof") + t.Fatalf("Invalid proof: %v", err) } } else { valid := VerifyMembership(tc.Spec, ref.RootHash, proof, ref.Key, ref.Value) if !valid { - t.Fatal("Invalid proof") + t.Fatalf("Invalid proof: %v", err) } } }) } } - -func TestDecompressBatchVectors(t *testing.T) { - cases := DecompressBatchVectorsTestData(t) - for name, tc := range cases { - t.Run(name, func(t *testing.T) { - small, err := tc.Marshal() - if err != nil { - t.Fatalf("Marshal batch %v", err) - } - - decomp := Decompress(tc) - if decomp == tc { - t.Fatalf("Decompression is a no-op") - } - big, err := decomp.Marshal() - if err != nil { - t.Fatalf("Marshal batch %v", err) - } - if len(small) >= len(big) { - t.Fatalf("Compression doesn't reduce size") - } - - restore := Compress(tc) - resmall, err := restore.Marshal() - if err != nil { - t.Fatalf("Marshal batch %v", err) - } - if len(resmall) != len(small) { - t.Fatalf("Decompressed len %d, original len %d", len(resmall), len(small)) - } - if !bytes.Equal(resmall, small) { - t.Fatal("Decompressed batch proof differs from original") - } - }) - } -} diff --git a/testdata/iavl/batch_exist.json b/testdata/iavl/batch_exist.json deleted file mode 100644 index 1152c091..00000000 --- a/testdata/iavl/batch_exist.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "items": [ - { - "key": "7135413946454936556b415277787065326e6e6b", - "value": "76616c75655f666f725f7135413946454936556b415277787065326e6e6b" - }, - { - "key": "57723454657945793055717852366a746a344668", - "value": "76616c75655f666f725f57723454657945793055717852366a746a344668" - }, - { - "key": "426b736463733241725859306a3532664d436e7a", - "value": "76616c75655f666f725f426b736463733241725859306a3532664d436e7a" - }, - { - "key": "623945634e745033767a624b475151524976324a", - "value": "76616c75655f666f725f623945634e745033767a624b475151524976324a" - }, - { - "key": "6b316738697a54503246526b686938686b546861", - "value": "76616c75655f666f725f6b316738697a54503246526b686938686b546861" - }, - { - "key": "4a6759445934706c6d376671446e514b71714236", - "value": "76616c75655f666f725f4a6759445934706c6d376671446e514b71714236" - }, - { - "key": "316442714f5a426638396e523455545259797634", - "value": "76616c75655f666f725f316442714f5a426638396e523455545259797634" - }, - { - "key": "436d6a6d5273363145544b4b6f366e6634516133", - "value": "76616c75655f666f725f436d6a6d5273363145544b4b6f366e6634516133" - }, - { - "key": "57695a7279614d623132313358577031585a556f", - "value": "76616c75655f666f725f57695a7279614d623132313358577031585a556f" - }, - { - "key": "4f6776715471366c444e7657386d79784c4c3979", - "value": "76616c75655f666f725f4f6776715471366c444e7657386d79784c4c3979" - }, - { - "key": "7939775a776478386f56705677587a5559515a44", - "value": "76616c75655f666f725f7939775a776478386f56705677587a5559515a44" - }, - { - "key": "7634553872713842634475777162667a7157396f", - "value": "76616c75655f666f725f7634553872713842634475777162667a7157396f" - }, - { - "key": "41716765465174377539324e456d635438735673", - "value": "76616c75655f666f725f41716765465174377539324e456d635438735673" - }, - { - "key": "3245527a7a32564e6648356f56434c776b636f74", - "value": "76616c75655f666f725f3245527a7a32564e6648356f56434c776b636f74" - }, - { - "key": "4a764d645767575a526a52704c5176695743414a", - "value": "76616c75655f666f725f4a764d645767575a526a52704c5176695743414a" - }, - { - "key": "67696b7676516375347738627379524a49644870", - "value": "76616c75655f666f725f67696b7676516375347738627379524a49644870" - }, - { - "key": "796e453434624341726175334370317a65393248", - "value": "76616c75655f666f725f796e453434624341726175334370317a65393248" - }, - { - "key": "364a676e73414c414a6a7a343159536130763950", - "value": "76616c75655f666f725f364a676e73414c414a6a7a343159536130763950" - }, - { - "key": "4a50345039536d496d65716838566656356a564a", - "value": "76616c75655f666f725f4a50345039536d496d65716838566656356a564a" - }, - { - "key": "376b4e76443472624b30676b4a416858624d6871", - "value": "76616c75655f666f725f376b4e76443472624b30676b4a416858624d6871" - } - ], - "proof": "22d1450a510a4f0a147135413946454936556b415277787065326e6e6b121e76616c75655f666f725f7135413946454936556b415277787065326e6e6b1a0b0801180120012a03000202220a000102030405060708090a520a500a1457723454657945793055717852366a746a344668121e76616c75655f666f725f57723454657945793055717852366a746a3446681a0b0801180120012a03000202220b0a0b0c0d0e0f10111213140a520a500a14426b736463733241725859306a3532664d436e7a121e76616c75655f666f725f426b736463733241725859306a3532664d436e7a1a0b0801180120012a03000202220b15161718191a1b1c1d1e140a540a520a14623945634e745033767a624b475151524976324a121e76616c75655f666f725f623945634e745033767a624b475151524976324a1a0b0801180120012a03000202220d1f2021222324252627111213140a520a500a146b316738697a54503246526b686938686b546861121e76616c75655f666f725f6b316738697a54503246526b686938686b5468611a0b0801180120012a03000202220b28292a2b2c2d2e2f3031090a540a520a144a6759445934706c6d376671446e514b71714236121e76616c75655f666f725f4a6759445934706c6d376671446e514b717142361a0b0801180120012a03000202220d32333435363738393a3b1d1e140a520a500a14316442714f5a426638396e523455545259797634121e76616c75655f666f725f316442714f5a426638396e5234555452597976341a0b0801180120012a03000202220b3c3d3e3f40414243441e140a520a500a14436d6a6d5273363145544b4b6f366e6634516133121e76616c75655f666f725f436d6a6d5273363145544b4b6f366e66345161331a0b0801180120012a03000202220b45464748494a4b1c1d1e140a520a500a1457695a7279614d623132313358577031585a556f121e76616c75655f666f725f57695a7279614d623132313358577031585a556f1a0b0801180120012a03000202220b4c4d4e4f500f10111213140a540a520a144f6776715471366c444e7657386d79784c4c3979121e76616c75655f666f725f4f6776715471366c444e7657386d79784c4c39791a0b0801180120012a03000202220d5152535455565758595a5b13140a530a510a147939775a776478386f56705677587a5559515a44121e76616c75655f666f725f7939775a776478386f56705677587a5559515a441a0b0801180120012a03000202220c5c5d5e5f60616263646508090a520a500a147634553872713842634475777162667a7157396f121e76616c75655f666f725f7634553872713842634475777162667a7157396f1a0b0801180120012a03000202220b666768696a6b6c6d6508090a530a510a1441716765465174377539324e456d635438735673121e76616c75655f666f725f41716765465174377539324e456d6354387356731a0b0801180120012a03000202220c6e6f70717273741b1c1d1e140a530a510a143245527a7a32564e6648356f56434c776b636f74121e76616c75655f666f725f3245527a7a32564e6648356f56434c776b636f741a0b0801180120012a03000202220c75767778797a7b7c43441e140a560a540a144a764d645767575a526a52704c5176695743414a121e76616c75655f666f725f4a764d645767575a526a52704c5176695743414a1a0b0801180120012a03000202220f7d7e7f800181018201393a3b1d1e140a560a540a1467696b7676516375347738627379524a49644870121e76616c75655f666f725f67696b7676516375347738627379524a496448701a0b0801180120012a03000202220f8301840185018601870188013031090a590a570a14796e453434624341726175334370317a65393248121e76616c75655f666f725f796e453434624341726175334370317a653932481a0b0801180120012a03000202221289018a018b018c018d018e016263646508090a5a0a580a14364a676e73414c414a6a7a343159536130763950121e76616c75655f666f725f364a676e73414c414a6a7a3431595361307639501a0b0801180120012a0300020222138f019001910192019301940195019601441e140a570a550a144a50345039536d496d65716838566656356a564a121e76616c75655f666f725f4a50345039536d496d65716838566656356a564a1a0b0801180120012a0300020222109701980199019a013738393a3b1d1e140a5a0a580a14376b4e76443472624b30676b4a416858624d6871121e76616c75655f666f725f376b4e76443472624b30676b4a416858624d68711a0b0801180120012a0300020222139b019c019d019e019f01a001a1019601441e14122b08011204020402201a2120fca1c1b94547e2a1976137e9c15bfc87c7739682765f8d6242f245f3fe5b6f6e1229080112250406022025ed290c0062c598f91249fb6ec3ca45f3cf0b7997af9958e14b0482c8300b0320122b08011204060e02201a212056ec897c5aa29dd072d56d3c8e5d4a2677228df579f6bdb89f20c163b553688a122908011225081802202b6e7e1a56f3c55cea325cb5805aeed651aabb40310dcb390173b098b506d38220122b080112040c3802201a2120bd541ade65c4b9ed98661d6054e61ebf5594648139a97e83e5c1bd00e8ef51c5122b080112040e7602201a21206b61592a0b37ac9a1f82aae3c64de0f6ea6714e0e073bd585ba5b3a6dff5e314122c0801120510e40102201a212006b0066173704a13c281657307b5d78786dfe68a5befeea9f3b51f864f4f3768122c0801120514f60402201a2120e63e4f48d53935befc1165814446d5a86666af8941541be75e3318d59e6d5e67122a0801122616f6080220421757a1668fe62f1c10c8d1213d30c392803660df1dd3702d34a2570ec9cf1b20122a080112261a921c0220b6c3414017e369164574e757a91a80ca60562287ec7be3faaabe505c6012ce4b20122b08011204020402201a2120baa42de0647904607aafc2fc6993d56d151aa0684241a6dc5c21ed94bd30dacf122b08011204040802201a2120c129132ace25a04b3d962f9107d93e11d726dd8e58daa6b8a835933bbd96085e122b08011204081202201a2120f6d81016a602b664774001853b4e0ab136260b1a5919643df47fe5e22abd00bd122b080112040a1c02201a2120ec146ce1a23564958337c35e30e932c19e0484d42c4d9eda02f5f69c962d33251229080112250e4e0220babfa7710af95e021cc2db22c4090db00036c35b89fc6b3bd425f5829b3dfee520122c08011205109e0102201a21204613632706cc2b89c5c76afcadc15b4a721f70f2bc3203ff80f6fc165735de90122c0801120512820302201a21209c22e492984c894c0db18182cc72569b60fb8d703b1f3612d2c9fdfc6cb0f9ab122c0801120514e80402201a2120069d078722458e24d0795a8cd491a00c5898bada0cc21e25e1b0d3902f6a37fc122a0801122616ce090220f995cf43398fdb4f09a963ea6118e93ac83a2534c98960adc38915b81ef49acc20122a08011226189c1302209b996f5f762e12879b5d9f8dabe6d185948f12b94838395618b3a69306949c3620122c080112051a921c02201a212024e9acde69258c7c2b3b35f87f932549b6394968c251f32d802ff05070dcef00122908011225040602205f38534d5410b31a41598c4b041521c589242d9037334e06d3620ac502b713c820122b08011204060a02201a21203fab8740d88b6536078c34622738237f7990c8736743152ef4447d5888a7ac23122b08011204081602201a2120b9c9e47d3a48047beeb2967a945585b825864537c9d7257811ce4283f89ddf61122b080112040a2a02201a2120033c1993939c8fa15290fa8ea4ceaa803330648efd7a5f796a24823ecdfda152122b080112040c4002201a21205d1862960e81d2ff6400e4a59d7b2595f79921f4e894ecd4d9dac8314fa2f30d122a0801122610aa01022093e094c0525d897d847561eb64f6be224e0b616e1a3e155339d68a5288d1110a20122c0801120512980202201a2120ab08c08a744ddde90763068e2a415817ef92dd4cf89da49008a1156c49ad4ceb122c08011205148c0502201a2120b883c162f5020cc89b364a7fb49cf0f543fa14e60cd06e57b2e4df3a7e0922d4122a0801122616ce09022005244ba932f85d7725fb0b1683af7e8504558b09eab399e3a41f60006f95798220122c08011205189c1302201a2120e5d838f86896001313ad8c7d2bac04c6813b177840751618ba930281094d1026122b08011204020402201a212062beb3b95a71d41bd9bd264dbe19edd9c5dcf8df1458e6924e45750615522182122b08011204040602201a212016cf91fe07e989626ee81010f97a5a7292b535c4551ad6ec7e04212f7bb7aea5122b08011204060a02201a2120cde166ebccfdd2378404382fd63f729196bd0f20077d3ccd0110a44a90ddd9e81229080112250814022041309e77a357cfdcaa228309b479f11fe9c179fa4f62dc16737452704cb36c8620122b080112040a2402201a21206d8a041bc4817550b86d65d80c6d239eeea44f298f969f51413b3e58870097ec1229080112250c3e0220e3dfb8acc3c75caf8f09f6d490649fe6b39a1775014a7a828d9b03b8535d4e7120122b080112040e7c02201a2120ab1bc3e5f02a8029a8a3ec87c2d562c546e9ea25f4fb98d371ad9df06038ece5122a0801122610e401022001608264d888de88020020ecc9439f686cd97fae0f045b7326eb0bec59bb769c20122a080112261282030220ef1ba72c1f8630da2bd14d73c588ec70784a33d7cf343aa71f338c41a1ac41fa20122b08011204020402201a212096e0147ec949c1179bc46d656be8ebae97b8ad7168d23840aa6682ffca490f58122b08011204040602201a21205777a8b68efe5cbd38edf22e1565909b4a8deb700f52ac5121242ab881907a29122908011225060a022082840584c93515d957d600dd0c969f2ec3ba2dd9c9dab3971ea84c6053ed5d692012290801122508100220e48b45b5307a2169a21210319679b25e162c9f5e78781ddf6ffa580aad93bf42201229080112250a1c0220883ac7469f4c5411e215ab5000520bfdd83502b0b49b1015ddeb848f6b477ea620122b080112040c4a02201a2120f13cc691f58f4c513cf7d4705354fe37710186325d22ac7f3813c47232acc7a7122b080112040e7202201a212089b313745ef981137be9cdfd7b31060b2b8d63b3776808798e56766b38f1e9bb122a0801122612b2020220e835166387bfe911031e0dc52b560a90f7dad7aa2d13aca67cdd01d41fe3e0fc20122c0801120514800402201a2120937165d58f0f6b48939068019a5acd69dfeeb2da4a45c87948569357125363bb122c0801120516f60802201a2120bad1a849cb990995043697738122dcdbe394eb27c692874c9205099c0c85a02f122908011225020402203164f5c9302831a6e5c146fead6891cead69c9f874207cf77467465396b2ab1420122b08011204040802201a2120c04c4a93ed2f11d09316eb632d26a52eb159dbb9b4bc58f59fb0cd304185e1f7122b08011204060c02201a21209d2493bbf8bdfb0c4c7da001779f058cc6859be250c79b0b2c0008b13c6b01ea12290801122508140220c9e4577ba6d0e858d16ea80babe1e1d4e02b30770c79e7cc9753991a42b27b1a201229080112250a2202208f49c0ba56817c4e3d8493e5321ea965341814a5647e8a3af6d6800790020da6201229080112250c440220171ce16d92b0ce20b1fa18ab4bb4a7a2c9538ea40cbf7a9651280d4e77fc5b3520122b080112040e7a02201a21209ce792ddfd12d1ad248da55c5f6430f1816802ad2c11b8319ecb92e61f613a40122a0801122610da010220b13925d7a4df63cea606cc5b9e11acb09f9265bcdad585b75ec912881533d0df20122a0801122612f4020220e84309f3aac489e40d074207a1b2551cdc2b3288a4da1fdd032e72cd5de9666a20122a08011226148c0502206c81958eafee4eaddcd7516ab6705b704e0cdedba8eab1cd2ae92e27c963c4ef2012290801122502040220fdd5bc29bd60c92bb37bc39fd3acf37474af716c54a75c10bf9598dec4a5a363201229080112250406022034f1532cbb6d7cfa0d1fd3c4edb2da1f56bc8d06ae1ca80d03e73ad10adb3ac520122908011225060e02204604044e7f5fbf6f06bdc9ba0a24f0ed81568a20550a03de00341f455160918620122908011225081a02206fde5d51691687b8d0a2b91dec0d8371505d3a98ad4d73aa08967d31b04072e6201229080112250a2e0220a828dddaea95ffce0c15bb7d462eaca8bb052d5e3c72990843fb1df60197596f201229080112250e6a022043fced9277979ffb2809b68f21cb81856bdb0dfea42ae31a8616b3a32812a8ab20122c0801120512920202201a21203cb6367429770fe5612a9197dbbf065c7349668295d48c1f02b03b7c62556420122c0801120514c20402201a2120e25320951ae7b95ebde90407046fdb90bb2b5c9b2aa357caa51b35d6c645eb91122c0801120516ce0902201a2120002d8c322113cd2529534b9ab1bf183a36734c7eec5d5b582f72051a9d3cb4251229080112250204022080f7667e489fab45af656266a51a4b5fef63bafc39f5eda8803637becbaab92e2012290801122504080220994be9c87acff634851924d932258afd379ceb0b21a44e639ea0f8dceaa3641220122b08011204060c02201a21205b66255e72a8d605f8feb840518eb08028709215a71229ba1b6237aa9ed88f6c122b08011204081202201a21201041cb920efb3dca040aecb34994ffe631f71ff4eb559514fb2b41bde91c7c11122b080112040c2c02201a212073dfdfc76e7df6054d59007f41d58daa4151a625bb605480c542efebf3187eff122b080112040e6e02201a2120547ecd7d7506058bbf35727a3c65bc205219d53b14f5087d4a5e30aeb2ee39a3122a0801122612980202204fc69ab48773d88c3a20c42dae089a51ab1644ddb9720be4350a63289b8524392012290801122502040220201bf8f97c1a5a4f74f3642ec4a3846684f1a2c295cd6ba66c8d78184f57d6e620122b08011204060a02201a21205d5fdd70d44faac0b099c5aadcb65f683e183bbc08488ac3dbe2aae7602c50f812290801122508160220f78acddae182030663578f1c855e6d3882a5a6d37155a06caac08623c7712ab7201229080112250c3202204b13544cf1fbecd2278f58d729208738ddbfc9701e2f999bc1a99a0d75931cee20122b080112040e4e02201a212034d6842c29c3a02bd63a1e9470648adb9d9c0a409b977092a8a494a7e981d211122b08011204020402201a212005b6d0dd3e44bdd2e9c1c3e2a6f8a63293fd81049aeed348ff8c087f01c74d2412290801122504080220b35c33783540235c1da867d34c437bf4abda7cfb7288b70bc0edbff823383c5b20122908011225060c022027c37c4cc3fe0f7669c75c3fb3250cdacee486ebf74f83dc7555937b580d08be20122b08011204081202201a21203f699e092b90cdea92a598770946b68831161dc1e649b56e02f5c7764487b84a122b080112040a2402201a21204a13b7e2a7186e7100c2313e363e3c9eb19962af6fa5a3eb69ee02a67452d0d61229080112250c3a02200515d35c8585b7605f27a665c430e80b567582b2a003df9b0f9200e38009697c201229080112250e76022010249a7c086d4421e9d798c6ed42149d0aab13aca13ac6351cb38d274095fadb20122c0801120510e20102201a2120d82f8ea28b137f575ae5c5e0797ae49b2c60c6fcb6ce11ab28bc42525f1bc4c8122a0801122612e00202206cdade14110c5117d4a2eff90121578f020ce0ef28f034ec041db1852205a75020122c0801120514e60402201a21209c11fb75a9630c8b72f8de933254bc0dd2fcd8b243abd7001e705cc2e25914b5122c0801120516ce0902201a21205b0e4342fda96a8369788cf790d15ccf04b2798307185ed41c5daa00a440a6ae122b08011204020402201a2120201c1a09bc1e90e493ac2d8866406c49e109541a534c70799ac6788bbfaff2c1122908011225040602205eae2e8292d60aaae0c2c9e77c0786818795f57a4c23b22e7daa6841cce0c65a20122b08011204060c02201a2120acaa31bf63c555d8c5a9000158dbaf700141dc0af56182700d3bcb605c598786122b08011204081202201a2120b1e78219f627c9d8de3e041f0c1a40782a998dc053d1901fd9bb44014539d2f41229080112250a200220a1a5d3b19f62eec5f817062455b1a2903216e4cc44c01a9282904038c76c14df20122b080112040c4402201a21204379fe62914b87602ea4639863a448206782fb599b98019e06880cb02b044ead122c080112050e900102201a21207ed55da339cfdf149a10c4921299db6ab5e7a80b4d20a5fcb11d43c3c8e18d6b122a0801122610fa01022051b8e002ca829aa7a02d31cb30a73003a3a1575c26b92b750b284b033447dbde20122a08011226129203022002c1202289d48330393d8f43548d31baf5dbef4e890920401f5f83fc1838a8a420122a0801122614f6040220b9d64a6f9a02e2f507a082ba665ec07bc5be89a93def3ea27788acbfe4287f8420122b08011204020402201a212064e0dc099ad0fafcf0b4040b959ec90d76ce784345b04f629c0fe46943d73cd4122b08011204040802201a2120b6434fb54b333b2255d9204b38866d098d4269a96a9f57aa9435e8c5b1b0414b122b08011204061002201a21205b075297e49485bf49c091968ef221d0863560a2dd1fb45c108ddcabce3c5dbf122908011225081c022047cbd38ee74e282c186ccc5c64e055a59fc8146a5bc6740d411a09863c3243f120122b080112040a2e02201a21209bf837f01ca8301e3f8dbaf5d1ae9099fdfc4842840723cc85e86ad932f6cb4e122b080112040c4a02201a21204bb1592322b3ca79dd099e2da51cd344485213e3443d4df5390aae2c21364143122a080112260e98010220f36fe46717c01113a5fafa43ffe0e019052bce0bf9bded609291bf0e995444a520122c0801120512920302201a21206ef519442d90ab150f0e5b60d9685a7047810bbda3caab075659c90cbe5453f8122b08011204020402201a212008b320cd65f8342d3eedbfe933f87b5f5221c010a2d5936eee8692d62fdffe3d122b08011204040602201a2120b40a04d49787df43932dbd49955c9fbc03b5b87fd621079a3dc7c2940267260d122908011225060c0220bc2d53980af1bbc087fdc58dbded983613e6e81cc69b106296c42872c32839eb20122b08011204081402201a2120b568ba9d315bfc2a9378e52084a9de9030ad5192c993cc400e954596774edf28122b080112040c3202201a2120c6f55b34edc91979c703382a25e92824a1f599eb48a8ce08950b34f6a06847651229080112250e6a022072c7118aff9782d9b2e562361c98f80195f95e592bee20c8ea816f8781c9573520122c0801120510aa0102201a2120b21f1cc690d042e0966d0cb79825242021253dce8488df311818314582d54da7122b08011204020402201a21209e586a4e7068ca74e4fb042e1eaf438b229a35921fa5c0bfe891f898449b2a3112290801122504060220944e0026f5d15aa7a458b6de1b9c950d8b1d5dcc98013804a8a69ebbff537ecd20122b08011204060a02201a2120d2e05959a0d11d02e7009228517107c43c114a1d3d525172ae1b65dc636bc0ff122b08011204081a02201a2120371197b8c2150a73b2b9dfa202b54a1d545d27d7f2daa0ecf96c5e13bc273b821229080112250a2602201133ef561c93d90623bdaba5a5f0a02355fb2bb40e6435ffb4ed7824ff030b66201229080112250c4002200dc6b62b71b52979b589744a3e62cb649a96ef467022519632bdfc87dbe4017a20122c0801120510a80102201a2120b343fbfe2b23a59e1ab4978ac1904a080c593d0854f8f3dc57893a3f586e7f21122a080112261292020220c335110a4e25b7104ec1983bcf371ae3d1a18c6cb6523ee1902f962a3f76003420122908011225020402208842bbf7e77e9d3916c748a1588317913bff57cb49ae684f99b0331d13f4a0202012290801122504080220bbecd80e9da3f54eadd0c14b2ac24e2f9a6ee943516e0aa543edd3bc1601773420122908011225060e0220cea24ca8cb093f53f747a8f2f253a594f9c5d3041bba429bce54137205e077e820122b080112040a1e02201a2120e3dd4b2e3fdbbf4a2fba485a3034a4a63234c9e0f8365e480dc57c493f31f315122b080112040c3602201a2120cc09a67d3bf0867e9a5ab0714d6513248ab51d615813ee4e8f8a1b2c702818de1229080112250e7a0220908938fca287ba8e999beb00cc9adbf3d76a956c438beea490226d2df8dc0a6f20122b08011204040602201a2120e9ca2938fa040948ec4ec402f95dec97462f40be616aab76332b270b5ace02661229080112250810022014b79866c647447bcc65edca9106cefc25e3cedfb11ec0c510844552501b6cd420122b080112040a1e02201a2120b26bb9dab9f72d8601a084c7a2cd410c5a7392583ce21747c28ae645db59d5c1122b080112040c4a02201a21206322c6b30f895743b91a210698377f842c18d5d7b1395ed769b7ef603f1c5e33122c0801120510c00102201a2120a499bdc50aa74cf1a67331579ebfa0f87e9e5856200659834d3d9eb7db01efa3122c0801120512b20202201a2120cfd980525710c586abb9d819352ce931e3b351d0323b3b219caad43197a5b20812290801122502040220df544651c551d50dece5c4261c094a8bccf4c77df837171a4e06064f3ab5275220122b08011204040602201a21207da569da6e6d00b75a518208088acdd609b8b57168b3c742d7876109f2380489122b08011204060a02201a21204f7ec2c10acbafc76658a2004c8b8ba5f7f0b41f3e2e1226a8fdf8ba322f8d87122908011225081002203a3f16940bd868d113327420b592a76605e3b07025a0a39841a4d85a4163ba9a201229080112250a2402206916246748df0ffeaca03a458f16c423269d7371aca2cc9b562fe3430002b5d1201229080112250c44022083e6a2c8626d266430a95c5d146bdddf92dec1501d79f1292b4f35d2de19376d2012290801122502040220bf5a0ba0b50ad70fa322bde926a69139e7a50acd6d5b908abefb9621572e7f2320122908011225040802200cb80d4e6e2989e83b15495ed3fd2f99d6da101e9cb9c8e90ed30dfe6582b48f20122b08011204081402201a21206bd256110d2ad3046d1919f246125802ec3cccae1689437f9e6b301b6c7383a31229080112250a260220676966da72dff172e33228a49d312cf5096852fd82eaa68f273bc49f08aa23d6201229080112250c520220cc1b91663d4e6bbd0c0a297f766c6df032bd58ba5e8b6a873ef88694bbd4c96120122a080112260e98010220daedb5ec90570cc6e2df31a8d82650e0771a8aa292ce002fc9316509843c553620122c0801120512b00202201a21204f25ed692c093ea71029f2dd2a22306a547fd218ff318898148b6fe8eec40128122a0801122614c20402207c224f2cb3835241cf9479019c7b26fd90e52c903e014e799888b3744a67cbf720122b08011204020402201a2120879b5e7965d65f75f632a400159bee31a23182691c5536178485a2c36978f53612290801122504080220e12a742a5f77996a0f41a603a8a164ad2de1d2735979e0bf269ed08f7a2f6aa220122b08011204060e02201a21202744324d3652511d4f7e41370fd60ec047bba5a3f525919655cfcb059d2a53d8122b080112040a2202201a2120904b9a2f7e77f8fd736cf0a63516cffdb900076bbdf68740f4c13bc8e5132892122b08011204040602201a2120b1cf83a323695cac01cdfc849c59e7230ff22af34afd99ed188c15c9bbf48250122908011225060e022066d6e70bf396978387086345d23b1b03858c85de22578714c50fddafeb701d5720122b08011204081e02201a2120df32dbe11ec6124c28f3920d80d29d273692175ccddaf9c81dd9ecc4c022b280122b080112040a3202201a2120f82e006d5b479c2b0fafb6dd90ecafe8ecd4bd110802f5caa1b792bcefda9acc122b080112040e5e02201a2120c7dba1be1177b6a7158ea2d498ab5372fff8f3850a9ea3ebb0aaa2b0f0704aff122a080112261098010220ffe635c3f8e068f6483bf1bbbc3a5b3110a78a76a03ed950e856006afbff2d7f20122a0801122612b0020220fac99b51a720f336d24029cd35dd4657f9509b26838ed1f9cd6e21eea88c133e20", - "root": "a8928aad8dffddd39906a5b8c505ee4fa11aa86c9f547cbc3669d308d65a949d" -} diff --git a/testdata/iavl/batch_nonexist.json b/testdata/iavl/batch_nonexist.json deleted file mode 100644 index b86f63b1..00000000 --- a/testdata/iavl/batch_nonexist.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "items": [ - { - "key": "47306b35457949525063485a776d51486944ffff", - "value": "" - }, - { - "key": "664648795147726c7468446a696b55777665ffff", - "value": "" - }, - { - "key": "386c35766c783944306c336a315163567530ffff", - "value": "" - }, - { - "key": "68375a4664426339636248576142484a3356ffff", - "value": "" - }, - { - "key": "64566f49366e513958375433547061706267ffff", - "value": "" - }, - { - "key": "686c62325831444f305248744f59536e6d39ffff", - "value": "" - }, - { - "key": "315a74646e53303241484357657547714a77ffff", - "value": "" - }, - { - "key": "5832374e716552346a6c5958716531486877ffff", - "value": "" - }, - { - "key": "71355341624c6b4b795778757670786a5a74ffff", - "value": "" - }, - { - "key": "64396c635974377a6d784342767250703746ffff", - "value": "" - }, - { - "key": "69696e42483530315249424c503035474772ffff", - "value": "" - }, - { - "key": "666968324a4f6b4574557a434d776d367350ffff", - "value": "" - }, - { - "key": "5a62385a766a7871466e56785776755a4b38ffff", - "value": "" - }, - { - "key": "71543171785535753441506a6e71786e646cffff", - "value": "" - }, - { - "key": "304b61684f6b7549523664576b617a487848ffff", - "value": "" - }, - { - "key": "72425a7334574e3156785443794565473062ffff", - "value": "" - }, - { - "key": "336469704d46725279355362764c38747041ffff", - "value": "" - }, - { - "key": "6e4b77544f514e593435566d794338567469ffff", - "value": "" - }, - { - "key": "71573037335345776a736667525069573739ffff", - "value": "" - }, - { - "key": "6e5968774542496172635467787066724768ffff", - "value": "" - } - ], - "proof": "22f75c0abd0112ba010a1447306b35457949525063485a776d51486944ffff12500a1447306b35457949525063485a776d514869443165121e76616c75655f666f725f47306b35457949525063485a776d5148694431651a0b0801180120012a03000202220b000102030405060708090a1a500a1447327069337074314d5a336c4b474e6244504744121e76616c75655f666f725f47327069337074314d5a336c4b474e62445047441a0b0801180120012a03000202220b0b0c0d030405060708090a0abd0112ba010a14664648795147726c7468446a696b55777665ffff12500a14664648795147726c7468446a696b557776657849121e76616c75655f666f725f664648795147726c7468446a696b5577766578491a0b0801180120012a03000202220b0e0f1011121314151617181a500a14664b383353764b52444a547445476a4948474158121e76616c75655f666f725f664b383353764b52444a547445476a49484741581a0b0801180120012a03000202220b190f1011121314151617180abc0112b9010a14386c35766c783944306c336a315163567530ffff12500a14386c35766c783944306c336a3151635675305165121e76616c75655f666f725f386c35766c783944306c336a31516356753051651a0b0801180120012a03000202220b1a1b1c1d1e1f202122090a1a4f0a14386e485130565733464a6566534632714e767045121e76616c75655f666f725f386e485130565733464a6566534632714e7670451a0b0801180120012a03000202220a23241d1e1f202122090a0abd0112ba010a1468375a4664426339636248576142484a3356ffff12500a1468375a4664426339636248576142484a33564a4d121e76616c75655f666f725f68375a4664426339636248576142484a33564a4d1a0b0801180120012a03000202220b25262728292a2b2c1617181a500a146837646f38646d68554f37765867543935556268121e76616c75655f666f725f6837646f38646d68554f377658675439355562681a0b0801180120012a03000202220b2d262728292a2b2c1617180abb0112b8010a1464566f49366e513958375433547061706267ffff124f0a1464566f49366e5139583754335470617062676636121e76616c75655f666f725f64566f49366e51395837543354706170626766361a0b0801180120012a03000202220a2e2f30313233151617181a4f0a146459384d377132563552443979706c3736775935121e76616c75655f666f725f6459384d377132563552443979706c37367759351a0b0801180120012a03000202220a342f30313233151617180abc0112b9010a14686c62325831444f305248744f59536e6d39ffff124f0a14686c62325831444f305248744f59536e6d39324a121e76616c75655f666f725f686c62325831444f305248744f59536e6d39324a1a0b0801180120012a03000202220a353637382a2b2c1617181a500a14686d73684e5876776443455777386b683645544e121e76616c75655f666f725f686d73684e5876776443455777386b683645544e1a0b0801180120012a03000202220b393a3b3c382a2b2c1617180abe0112bb010a14315a74646e53303241484357657547714a77ffff12500a14315a74646e53303241484357657547714a774d70121e76616c75655f666f725f315a74646e53303241484357657547714a774d701a0b0801180120012a03000202220b3d3e3f404142434422090a1a510a14315a77456a33756b6c484d444a515a4c55716d6c121e76616c75655f666f725f315a77456a33756b6c484d444a515a4c55716d6c1a0b0801180120012a03000202220c45463e3f404142434422090a0abf0112bc010a145832374e716552346a6c5958716531486877ffff12510a145832374e716552346a6c59587165314868775751121e76616c75655f666f725f5832374e716552346a6c595871653148687757511a0b0801180120012a03000202220c4748494a4b4c4d4e4f50510a1a510a1458327139736b487277664d6d564370444b4b7955121e76616c75655f666f725f58327139736b487277664d6d564370444b4b79551a0b0801180120012a03000202220c5248494a4b4c4d4e4f50510a0abd0112ba010a1471355341624c6b4b795778757670786a5a74ffff12500a1471355341624c6b4b795778757670786a5a743957121e76616c75655f666f725f71355341624c6b4b795778757670786a5a7439571a0b0801180120012a03000202220b535455565758595a5b5c181a500a147136644b466b5235686775305464426b6b37694c121e76616c75655f666f725f7136644b466b5235686775305464426b6b37694c1a0b0801180120012a03000202220b5d5e5f565758595a5b5c180abe0112bb010a1464396c635974377a6d784342767250703746ffff12510a1464396c635974377a6d7843427672507037466e65121e76616c75655f666f725f64396c635974377a6d7843427672507037466e651a0b0801180120012a03000202220c6061626364653233151617181a500a146442656632446a64464344324559595636514b57121e76616c75655f666f725f6442656632446a64464344324559595636514b571a0b0801180120012a03000202220b66676364653233151617180abd0112ba010a1469696e42483530315249424c503035474772ffff12500a1469696e42483530315249424c5030354747724f49121e76616c75655f666f725f69696e42483530315249424c5030354747724f491a0b0801180120012a03000202220b68696a6b6c6d6e2c1617181a500a14696b623564554c773669476c506f6b7436536477121e76616c75655f666f725f696b623564554c773669476c506f6b74365364771a0b0801180120012a03000202220b6f70716b6c6d6e2c1617180abf0112bc010a14666968324a4f6b4574557a434d776d367350ffff12510a14666968324a4f6b4574557a434d776d367350484f121e76616c75655f666f725f666968324a4f6b4574557a434d776d367350484f1a0b0801180120012a03000202220c7273747576121314151617181a510a14666f3338754c7942584b447174394d4f32424831121e76616c75655f666f725f666f3338754c7942584b447174394d4f324248311a0b0801180120012a03000202220c7773747576121314151617180abd0112ba010a145a62385a766a7871466e56785776755a4b38ffff124f0a145a62385a766a7871466e56785776755a4b384661121e76616c75655f666f725f5a62385a766a7871466e56785776755a4b3846611a0b0801180120012a03000202220a78797a7b7c7d7e50510a1a510a145a634476496c3049316b6953475658797a504352121e76616c75655f666f725f5a634476496c3049316b6953475658797a5043521a0b0801180120012a03000202220c7f8001797a7b7c7d7e50510a0ac70112c4010a1471543171785535753441506a6e71786e646cffff12550a1471543171785535753441506a6e71786e646c5463121e76616c75655f666f725f71543171785535753441506a6e71786e646c54631a0b0801180120012a0300020222108101820183018401850158595a5b5c181a550a1471573037335345776a7366675250695737393852121e76616c75655f666f725f71573037335345776a73666752506957373938521a0b0801180120012a0300020222108601820183018401850158595a5b5c180ac70112c4010a14304b61684f6b7549523664576b617a487848ffff12540a14304b61684f6b7549523664576b617a4878485365121e76616c75655f666f725f304b61684f6b7549523664576b617a48784853651a0b0801180120012a03000202220f8701880189018a018b01434422090a1a560a14304c5373474135366e4b305465656475747a4667121e76616c75655f666f725f304c5373474135366e4b305465656475747a46671a0b0801180120012a0300020222118c018d01880189018a018b01434422090a0ac90112c6010a1472425a7334574e3156785443794565473062ffff12570a1472425a7334574e3156785443794565473062507a121e76616c75655f666f725f72425a7334574e3156785443794565473062507a1a0b0801180120012a0300020222128e018f01900191019201930194015a5b5c181a550a147245654b706566417561767276763152614c7833121e76616c75655f666f725f7245654b706566417561767276763152614c78331a0b0801180120012a0300020222109501900191019201930194015a5b5c180acb0112c8010a14336469704d46725279355362764c38747041ffff12570a14336469704d46725279355362764c387470416377121e76616c75655f666f725f336469704d46725279355362764c3874704163771a0b0801180120012a03000202221296019701980199019a019b019c014422090a1a570a1433654c7067564e47316d414546654d7933477034121e76616c75655f666f725f33654c7067564e47316d414546654d79334770341a0b0801180120012a0300020222129d019701980199019a019b019c014422090a0acf0112cc010a146e4b77544f514e593435566d794338567469ffff12590a146e4b77544f514e593435566d7943385674695776121e76616c75655f666f725f6e4b77544f514e593435566d79433856746957761a0b0801180120012a0300020222149e019f01a001a101a201a301a401a501a60117181a590a146e4f364d316943437a4d7a6632305839484c4b4f121e76616c75655f666f725f6e4f364d316943437a4d7a6632305839484c4b4f1a0b0801180120012a030002022214a701a801a901aa01a201a301a401a501a60117180ac70112c4010a1471573037335345776a736667525069573739ffff12550a1471573037335345776a7366675250695737393852121e76616c75655f666f725f71573037335345776a73666752506957373938521a0b0801180120012a0300020222108601820183018401850158595a5b5c181a550a147158366e5554696a6c6e44363079553874374679121e76616c75655f666f725f7158366e5554696a6c6e443630795538743746791a0b0801180120012a030002022210ab01ac0183018401850158595a5b5c180acd0112ca010a146e5968774542496172635467787066724768ffff12590a146e59687745424961726354677870667247687573121e76616c75655f666f725f6e596877454249617263546778706672476875731a0b0801180120012a030002022214ad01ae01af01b001b101b201a401a501a60117181a570a146e616c3850354f637550433758433236484b7161121e76616c75655f666f725f6e616c3850354f637550433758433236484b71611a0b0801180120012a030002022212b301af01b001b101b201a401a501a6011718122908011225020402205e90fbbbc73edf770164b1a6566e9a4c7bf62597ffff77cdfac15e4e5f5ed850201229080112250406022007f80ee4e9cf271a555987633a2680fd3efc0662d8379535db59f37782573fa720122b08011204060c02201a21206085cdcec1524eb43afec873786a0299582e10e42d1ca6b88c5558e8902b0aaa122b080112040a1c02201a21204ff3fde71b75661378a63a2a9593fdd79dcda54bdd627a8078d858c91972c2911229080112250c4602201e3e94723c1277213aff1e165a34fca8c6aa734fc13e11c0a6bb48d58cdd26c620122a0801122610a201022009781cbc325855ed378dec29c4f2323302ecf0405ddb4a21b6596a86fe818cef20122a0801122612f80202204545142916ca577b6d8e214d2d5dedaa6254c78480bb005933da86764551490f20122c0801120514b20402201a2120ab94e48cd414bc98a9a0afe08050376aa62e55c066bdc75f44e0407f626a729d122a080112261690090220c50596084ad500bf2f6271680440438acae40dd02e93463f7d85325264ab24c220122c0801120518981102201a2120cb0285ed2e150bb9d2ed8e76aa8eb45ae890899a97170b5033f9472fbc401867122c080112051a9e1c02201a21206fe601d218d2f2bc4aa09b8cb2b76af7cc495785e40094fd3cc7f3f3fb327cac122b08011204020402201a2120b11b6a5985e8aed044ef7ff540f3c98d309e889fe94459495d20e9721b1bfa82122b08011204040602201a2120e6d444d18f183d64b920b8b49fa399faf030736f4d75eb2b0f702f32ef323fb1122908011225060c022027a2cddff58ae967a2c00da6b1f34f9a08d37c0dd6f1827cf869470bbfebcc4620122b08011204020402201a2120eee315a1f4b8e5818c6d5ab41d6076686f4489807b3265be57a8ee1a7d2963c612290801122504080220c1fb791972e42de1a7d99b309d63a3b442f20879bb4cee31854e46d58d6ec20b20122b08011204081602201a2120874a24fd4fa7ea263c870e072d6db264ab60b23e698fb2ccae3ae274e29ef942122b080112040a2802201a2120fb6b544540d3a04e978422b402dabb295e10218c10a215286e84c9bab04ce058122b080112040c4402201a21200966a2a690c3d9293c6264b2ae3b989345c1e97c38387762000054a005cc098e1229080112250e7e0220c2ccbb493c54a3b2c06a80e8f653ed7521d69eba64cf2d565cee85afd59faec320122a0801122610e8010220eb8e04533ba61bc8b80a16f25f747c40039c4a4b261d522ae0fe4bc9e60105f120122c0801120512aa0302201a2120360dcc8d52225801e72fb9f338c115d707e3f2731c8a046e4d81e82f0eb2b0aa122c0801120514ec0502201a2120ae8727208e7f325b96c78f8e1eeab0f0564bfb44f5687bec2bc80bc0c915315a122c0801120516860b02201a2120c883d9bf649bfd4bc4164559c7420d7c38a1673c8ba778bb678da8d8c4c7dae9122a080112261a9e1c0220a11c4099271d3996759320be13c1563d9a39fd74325e5ef1a2bd5e8877bb845d20122908011225020402200fd934bdf4908f66db35625b9c120425d8819f0dc0cadd92a5ef1655bdb144ce2012290801122502040220bd548a5476292fa5f38ba38bd6b0522a097c22eff9fe279654a950cbb65d1b1f2012290801122504080220c34c7962a521287df033effcbfcc057f80c09b874d7ebc941060d294ab22872c20122b08011204060c02201a2120fa7b3139e8961da4e41b6c551fb576badeb760caa8bf3b3c684bac53c886e9f0122b080112040a2002201a212031fc8f0b78baecaf67c149f610f1532244b95398628bf3e58cfbed3b748455fc122b080112040c4402201a2120f986d31c3b95a450a0054d3b92938d83c37de55c8f9f48d2ddfdd60e320f29621229080112250e6e022001dea78cc3d57e349d4aac367f0a70fc6ca8aaf9a426806c8c52b345beb1b4d920122a0801122612ce0202203ecaccbdb13186326a99bf2eb3453be44d8a6a54632f444b0059353ef02a3d5e20122a0801122614de0402201a2c9b48dccc68444fc609052f2734fd1a009147c87b0b4c145190522152da5020122c0801120516900902201a21200e4ba799097fb0406e58159b510c92eab9b378c65b91aae142b7a3d5848eb2ed122b08011204020402201a2120b5474c4eb826f10872943f410c260b37f5cd06dd9cd046b054ced3fb509ff52f122908011225060c02201cbb44371dc70e7e91857818c9c32cd5eb519363e3e80eafb351e8fb6a382bba20122b08011204020402201a21203b9776575119816f3a02e03edf2f359356bb4f4f718c7348aa4e9e305c278c42122b08011204040602201a21207940b811b58659bc77b259bbe2dd2f99ae3ccc3c62f74d3ab41d3982151fb833122b08011204060c02201a2120cd828decfb8d5a49fa4df426c4e2a93b0863b067112f5604ec2da4564743553a122b08011204081402201a21200c765583f2086bf1c6cae5ac5c02d9f50a5f1fb338fb720e090160da45e7f6a1122b080112040a2e02201a2120f0c095820375bba705175779850b4af493c7b2b0b3e6df3ce5a9edc22421ebf41229080112250c5402203606091b7e4f1f5d862b46b386ba3fa1d22d6b05cc091d8abc080053f13d4b4f20122c0801120510c20102201a212055264f302788fe028f072c254598210d2481602a3f9db37bb4e89663a64b41fe122a0801122612aa030220d6ac240c3aecfd34ae9867f0aaa8662327ff9ed4d7ee7259b5499ca12687659520122908011225020402208eb5278af577d5cf3001a8464e9dd1c58129dfc291f030f20532e3dcb10af39e20122b08011204020402201a2120e6a49b98f8f36f7fb7ef4684f79b8521cf2f746a285051550584e5f9ab001714122908011225060c0220b5939895570f94f126acffc8b98f81cd5b48e9b3e00cf7af052a9bb59b6dc38520122b08011204081802201a21208f1d314a9660676909ac72f1d04de9db7288e7466f612db46d67e66094f1b2541229080112250c480220b54c3ec3948e004ffaf68b0dad430ad0dae796973b087cd1a464d960d8084f0120122b080112040e6a02201a2120aff806ed37c63a669f4af56f949b534f06562b71e4f0cef7a7c86f5e42a3715c122c0801120510e80102201a2120814420b0d704a45cfbfbf2d7ac11612e7892f661d7be43fd6a8ecf017f91ef85122908011225020402205951d39c28afe346aad4593436013ba32229cdfe46b6365efb81ba216ca1bff4201229080112250204022096adbb032698473c59e20f4beebfe5de20e9759fe23ec4e48dd1fd8cb10363b820122908011225060c02200d3ef4455d0384dfaf94fe961c6a55f702f6e31ab7a3e8f8ef9709a632c710f520122b08011204081a02201a21202ff678e1cd26d123992623d8e1d363c3bbc0e37933bccffc88e08a24278021931229080112250a2e0220b54e5df435bfe63f7dd4308bb3c5dd934fa83fc914b54fcf3f3c87069b770f8920122b08011204020402201a2120735c9f70049c3eeb74efe78c2f897e6296701de25b2a4a8de3360f5061578cde122b08011204040602201a2120e8fba1ef503c3b26a7f0e8296be2e660e322a2e68937b985c8bd1f96872cc72d122b08011204060e02201a21200ea41243c975c3ae0d2cbac5018f0102399ee1c2e5290f1212722a1c850b58e4122908011225081a02201b563dbcc2f1404638b5de73bc519597c77657041c0d9d3f63e2c3ca4e2e3ba720122b08011204040602201a2120a7d3457da3945b9f5b99946d27fefbadeb1014d98de85d0542c82786e46322af122b08011204060a02201a2120f6f377167dfa0de9552732d6be6fe07c88ea41db0eddd14deecd33e83f69372512290801122508180220553c5b35e26db0d26c81b02320d140dfe248471738609b1444ee5ee92f3ebb0e20122b080112040a2202201a2120223af7514497d984ab099da993b96842dade57fdcfc4da1a57b4898001b73c9f122b080112040c4202201a21200982271cdd70ca4870e640816ba9eeb7223cbd2e81ee05667fac1acb3b405c45122a080112260e8e01022000172350a2888d45a45039a6d2fb617e90d71798bccdfeb773c1721da5f1f1d020122c0801120510900202201a2120e991068b6bf7bd70e26717c675e83dc7c7c5381e1ee2869eb04eb64c320bc166122c0801120514de0402201a2120b9c82d3827bbb9afbd2e27b662548f57496db09ce2f79d05acac905a490ccd9f122b08011204020402201a21200c8899ed4ef6ea8e94b5465106e671f5671735e551fd8570a415c1db616b73621229080112250406022036c370897373e77e615c5c95af2c6f9f82e7962c9ab404172b4a8a263c4b0c5a20122b08011204020402201a21207115c253f4b75eac64ce07d77e002727164931871ce929efad596a9fc56f2f15122b08011204040602201a21200ce3a296c33ea984a366485aa51c71f6d50ac400cefdb992535705379579ebc1122b08011204060a02201a2120e1e34197fa34af0a5ba33dcb3fb8d285414595404a808a40ff6f382017a2c04412290801122508100220e7895e7c09ffef340d9377efbbdfd9db85d193b0f3793765d01fc134b274f3e120122b080112040a2002201a21201c71562fc0285f433392a09edb2154030c39c25733f96004937ced467cad7d841229080112250c440220d3118e87e4332be4212a0751d563ef709a425b5ad6d8d0155e6b350897c7177820122a080112260e92010220936e899adc480a1a808162bd8338f6ffedb3b226ee22ed4addbe5a442bbc35bd20122a0801122610b0020220468c5cc1ae750dbf3bd304ad3ba3b98113562ee1e906058bd8f6730ab0c8e48420122c0801120514ae0402201a2120971bd84c6b3485dd9a7b3684f18a5d78645569d131a9ac9e5bca0f629cbb1759122a080112261688080220b84b5d24e59a1c7d4b78ff11b225a372371a5884c7a4c56a29be6b8c37ccba7b20122a08011226189811022025d1303a6a06eae28236752839a90b3c017d679e0a80f235ac5bfb98d0f48ce3201229080112250204022088c3e2bfd67912127be73bdd0fea5499142b775d2649d2a429aea5abd75c1cbe201229080112250204022081f24d259a31a30192a43bc562d3fdb822cbd46611a4ef8301d42f24f45b2a392012290801122504080220102795e696fd448616641f06239971ce9823732a9c4702a13d7eff2ff07e480720122b08011204081202201a2120950fcf41fb272ef6c918f7b7e60c13652e05c01c0179b18c4894afb5fd0eadf0122b080112040a2202201a21209b47e3a84954794a90452b98f61d3179bb91849a4ec03a8df7bd3e380783466e122b080112040c3a02201a2120340e884d31ae2c78078815803bf36b2e990c8e06f92fefae72846d4aff1c3da31229080112250e7c0220a98c330be4d6ff7f4d54d818b3246fc3afadca2e57ed2e444c33c3d0ffa0764220122c0801120510b80102201a212048eebc7e6b66c85af1d79ccfdb038118b75ee321926c65f11c71d78cfb382eba122c0801120512f00202201a21209a88a830d0d82efb9719d1ba01672497b56beb4dae1dc51c5ef8e96a805ae874122c08011205149a0502201a212094cd69bc21d47325f6ba046ace372f5bcf329c90ac9abaa44e9d7206c8cb3238122a0801122616860b0220d21b3841a3d3a044c943f127b74b82234c4fe137eb9bbe91c8525aed1442820720122b08011204020402201a21203b59066fc861e20e9505236534967ed2acc0bd5fda0e1d82503326eaa5ca4229122b08011204060a02201a2120a99736678225cf68e4f245a8b13302c86af9c7089c900349473a0de40dbfe60212290801122508120220015fe1b060f5b335e3c496b1981f1ac18f972804b348821fb0ffa216817d1fa920122908011225020402207e1894751dc9f85d05f595db99a1f1a93507f871d0d3be8b56618d6120ebd3d7201229080112250408022042ca91a717e4f41244025a10032555c41e81e76ca4e265ed67911a166fc3619d20122b08011204060c02201a212007763d3dc45478c37758639ffd67b3ef0345809e2a2280a03234efd5fe6649a9122b08011204081802201a21209c4172f26353113b42071a4d5b04459a6731ddf8e8744f511a7f63c27c3e5a1e1229080112250a300220cb4a0694682b3c916279597efef23c70f97d73ad61ac945682809305bd72bb3b20122b080112040c4802201a2120be437a55bd71e3298d548433bbfd357ef9e3da42fa604ca3198d820009d2429d122b08011204020402201a21203e610d5a61624a4ad5e44828c06d188786f7858983e764e38f9cf5f7ac8e460a122908011225060c022096020d71338734c4a5480785b1e0f4e7f75758015e8ed24811bd8e89810c114f2012290801122502040220d12c5dd3b6e34e62871489bad01815a9c4250faa2a46eca25e8119844284663e2012290801122504080220aea19cddf55f0288e1552b8008f7af97dd9a3b5ed8d858b9a03ba9507c970ccf20122b08011204061002201a2120e8f8861611a6881f00b131e5a54764878138a23adb64f33a484bc7d805b6bc2f1229080112250a2202200d94b3b8a6dddfc3124f830b489966a60db87fd7d1c09e508a0509ed0f431b3d201229080112250c3c0220642fff03cd15df89df4c2cd6ff27b7cbecbeef2c44be92cfdba9d9c08d86002720122b080112040e6e02201a2120bac0fa31529da07b0462061e79fc4b49884c075053bf9dd502cb694761c15b2a122a0801122610c2010220b9ee4ec49187c0409f4423fe9688354eaeb003c942af36fbec9791eda556da2020122b08011204020402201a212023cae97223d60f0f572ac5aa085030b5b23de6880469f5bd8a379f961853b179122b08011204040802201a212049af8812ef4b616722bc217f2224d1890c5e0e035f1e2aa558b94a26042e709c122908011225061002205e6af5d474e740db961f32d1ed13497771cf6fda372e23a8b59e61d215bf6f2620122b08011204020402201a2120ed789a81ae9f493f8d2b00c5f1e56ecf3ee8c2acf84292a8f7a8839f8cdc6e9a122b08011204040602201a212042737ccbded995e25afce97ec839f8b20cb2fd14b31b241320a1f10eaa3e605d122908011225060c0220f39a2f8cc24173927dc4ccb3be25bc2f53230d1e5e12880ebb3a21e5606385902012290801122508120220b635f5ed3e8a8948e6fced5fc38abde015707a12d0ee758af2008e211f306ecd201229080112250a28022092b78ddb3e60baee35ceadf996f930f3c6a9c62bcce2acd89a264ddcc9e9700b2012290801122502040220d30ff3cfed86789cc5c455002908b22f604502d15c5023eb5619f6da50c0641020122b08011204040602201a21208ececbca437054228857de5c9b1a7ac3f751da48fa4b6ae4040dca89ecc58f60122908011225060e0220e561b181f6472175ab2c9f2cf5cc91df243888c0b242fba35760e1ba01151b1f20122b08011204081602201a2120c0be5bdc566c54516d8f93a8d1cf7446a54e851c1e41d98f201116929c1af5cb1229080112250a2a02205d5887a6b3bf934e8c7752db64c163e183f5a2cbce82821e3f4e082b1b4e8b0e201229080112250e640220243c88f53e0403910c6c90d7eb3f62d6dbfa1ac55c7ea27dcf2496391278d3ce20122c0801120512fe0102201a2120226e5b1b5b09c0ed4557047588ad0dc4a573e9b282b7e954eba0a5a128c46161122a0801122614ae040220943521b851822cab8748f4241f42a8ef3991f5762db0d61235aaca9432d29d8920122b08011204020402201a2120f370fc77805ab770217a1373ae529247da88ff58c38310558ce589067da2cae412290801122504060220831368a95ba43a2cb9ec3e3baca1063a7072e388a49fcf610b94c6764d691c7d20122b08011204020402201a2120feba66edca42a36641f1f702b8348106f5b6e5002d35c100aceada30a5efa27d122b08011204040802201a2120cb98eef3b8df5dc0186601a11cf56a90fc71e664ede20cbd7c850a0ecebc1425122b08011204060c02201a212069e08913da4607304e8c459be55752d2052463a0cdf7001a68f8e39595547627122b08011204081802201a2120f5a95d60ee33207ba7eee286d7380a0d961c30239049db8f47a220acb51a22c51229080112250c3a0220398430ac4252dbd3ee1b4f5c4f57be9aebafc1c024f56dc970dc41e114a1a46d2012290801122502040220bd76439af7b3f61cb848d1f8eb0ed6115270fa9038a47580212c480068c48b9d20122b08011204040602201a21208ccacf0db1828b0b55355a60be3c6e46c7bd08533ce5bd0a36edc8cd53c84d5b122b08011204060a02201a21207ef8b2e97a8546ab0a81ded40a24fac8384c958b7bd62d0ae415d7bf9f1001291229080112250a1c02206d480f62546f12074defe7015d567ab6625b642c8047e0ad889e34e3686c17bd20122b080112040c4c02201a212061a86044ea745880787f1d83d2307582ec0c15b30fc31ad32ab89dfa3a29a8b1122c080112050e8e0102201a2120c0bfaf77ca0d53d998ed62f654a57f5a91ec5985fb55914ed764adf68237c905122b08011204020402201a2120092766a6059012121793e12c1ffeac5605204d2fd5d8479adf244a1f80a6f1571229080112250406022004bee6d04ffd0a1500a00fb73624f57eb3e5f2f9ac8ba5b96ea018bbebf06939201229080112250204022067eadbc2b7f6000d61cac7b05e82fa968e898eab87c39b5ea291b4e83f96365720122b08011204040602201a2120f3b72b400dc9b794f8190f1ae30869b83ac0380246fd5be71b90dffcea351ed7122b08011204060e02201a2120948dfcb70e58111a1d0d7dbc4dc50ca6d780d2aeb6ba4fd3f6828569789f5e83122908011225081a0220989db1a6e11c4d2d58dc8c7ceebe46a90bb1771407edbfd2e813371ca51d0478201229080112250a280220e93c44fd7052ae7d32c598c96a5739bd13afb0a473497487bd4d4a4bd3ce167620122b080112040c3c02201a212078a7464bfa15e3e32d3b9d2f81287f8c13b41679c09f5c5808ca412a974cdc7a122a0801122610b80102207a30151938b2a3df92efe651a2979b5249fefa907ab5bf66497f4b20a0066b2d20122908011225040602204153dd45c643eff0fc1b026af91850c0c6eb3b8f08e43c6ef9dad6e80d56e79920122b08011204020402201a2120909da91f0c47d30fb9a72eac41d886cbc0c028fa7ca5d2011e4e23d25e17c1171229080112250408022054ce2557b012ec03aaddd074bf614f7bbab21a74d2ce5064f1c21b6d771eef3d20122908011225081402206a1c6af7fee6351ad376d56675450c3f3a57f53c477a4a76f0731c44cc110e7620122b080112040a2602201a212036f21800c7609f27238012d5ac843043dc1fb0b6e05437e2e61142daea8610c2122b080112040c4802201a212081eaba248e024f1309d579c204d06f6cdd1a3f361c14dee9de23601d8f8ef2d8122a080112260e82010220fe04febde768105426617d561d664d8e218373a0c1af7302852ae169bfab4c7f20122a0801122610900202200e60ace5a0561e2e8c1d30e87f17cbf1c6cffbac68b6259d57862f6a6218ebe72012290801122502040220a91a7669128a979299c1ad0786521d9704e8c6f21349205023fae49251c3cfc320122908011225020402206c8b18331443f0d9b0ae0dccac47d439ceddd76b586de168727b0472ffa08467201229080112250408022075cb0b610e10ccd5790b1ad225f5200bb3cd2877c7dae4eb73404d45f1d41c9620122908011225060e02200a92da5199ea87414dd0b6d82584b2da01c09cea32aa1b72cf0c330583cfe47320122b08011204081802201a21201404afb1ef99ea6cfffc82a4c8750cc2956d5ecb73c5896f64e879bc2b53fa6a1229080112250a2e02208525db1ebe634f88f1ac42283afe3a46b71be4b8b18a1c77b6c92069245b457720122b080112040e5c02201a2120c1a7260973c26460b83b5e8d47a5f1c153008fca00eb677323f912c30ea9aafa122c0801120510a20102201a2120e785e817603db4b41b9bdb2f38f830e64c3bd7d88243cf5e3d8fd556dc590e11122a0801122612c202022081b820b06884c7d3ba04c25c281d474b73c9937ba7f297b574478d4fd282f0cd20122a0801122614ec0502206feb1bacf4cda4c4a6a119bc83d107555b9ce350dd55592cc41f7acb178bbd1d20122b08011204020402201a2120317abe437d6e0d223979d68453adee702f48d59af0c65fcf71d17c05eb5ee2c4122b08011204040602201a212001aa4267856a3a854193801a8bcd1343be61f7a92b9880fdc4c80ac872d6f13a122b08011204060a02201a2120c9b2bfcf5d37c0dc29137e3dfe9a14820f085684b50d492d0c2520bee02176b61229080112250818022036a7cf814190a3432ffd2940bd6d1618d389f99ae4422cb3b59805e5a812261a20122b08011204020402201a2120b6f0f97b45be3839198deeb01ae9e4e30953b83140471595d37ffbdde4a8cb3112290801122504080220a2a511ce490f74f293d0ce29583e8d307cd73226214a46caa0c6bc0f7e1ee4322012290801122502040220aca49ba2b4b0391e513f96b182dfbb584bc9ca457ec35383e0d644d2e9fa640120122b08011204040602201a2120769e53349d395a7638a4fda9b0e3610c85922e594fe43c6ee55307988efd53a4122908011225060a0220942f2f82248c23dbd44460f632350065716c7964c38aabd8033309bac01f3a6820122b08011204081202201a2120f34e94c1f5e474f0c6adb92df2909cdd99ee5ebf13e47de771d44166b01521f3122b080112040c2e02201a2120ff57c84040941261c271efb01640fd62eceed8633493d400c4459c66853ff47c1229080112250e5c0220e955715810948934ccacc90db0410e53ac270e8230fd3042de23b45f8b4787d42012290801122504060220d75f28f7f9cbe6c66abe56a037a06e390f09e9b3185ad82e9a553216a3891e0d20", - "root": "d399136a59823fbe62139d06c0cc5152efe37cbe62b189fdd24eb14ed4a3a5b5" -} diff --git a/testdata/smt/batch_exist.json b/testdata/smt/batch_exist.json deleted file mode 100644 index 0b43268f..00000000 --- a/testdata/smt/batch_exist.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "items": [ - { - "key": "636c536e4d46714a4e6162776a7a5134356e6d4d", - "value": "76616c75655f666f725f636c536e4d46714a4e6162776a7a5134356e6d4d" - }, - { - "key": "6b63395874466e5a4645784d416f4b6f37566c5a", - "value": "76616c75655f666f725f6b63395874466e5a4645784d416f4b6f37566c5a" - }, - { - "key": "426f4c4f5279574251784c695835754c7257524a", - "value": "76616c75655f666f725f426f4c4f5279574251784c695835754c7257524a" - }, - { - "key": "483977566967584c6d3330756f726a4b53423371", - "value": "76616c75655f666f725f483977566967584c6d3330756f726a4b53423371" - }, - { - "key": "687848476735394278645a725657575647366239", - "value": "76616c75655f666f725f687848476735394278645a725657575647366239" - }, - { - "key": "6f62695655544657735949374a7a6c62654e3074", - "value": "76616c75655f666f725f6f62695655544657735949374a7a6c62654e3074" - }, - { - "key": "683139594138737249614956386b557936315672", - "value": "76616c75655f666f725f683139594138737249614956386b557936315672" - }, - { - "key": "6e586b6e744366514d53436a39625963516e325a", - "value": "76616c75655f666f725f6e586b6e744366514d53436a39625963516e325a" - }, - { - "key": "7542684a444c57425a7338765569786e6b314449", - "value": "76616c75655f666f725f7542684a444c57425a7338765569786e6b314449" - }, - { - "key": "56336e7859534c6c4a6b3739646d776b3330634b", - "value": "76616c75655f666f725f56336e7859534c6c4a6b3739646d776b3330634b" - }, - { - "key": "395277644d4b354e786d506942755950454e695a", - "value": "76616c75655f666f725f395277644d4b354e786d506942755950454e695a" - }, - { - "key": "746b425246386e79314e4f35775244514d376c46", - "value": "76616c75655f666f725f746b425246386e79314e4f35775244514d376c46" - }, - { - "key": "4e41334178576a42485233524b746a5071306575", - "value": "76616c75655f666f725f4e41334178576a42485233524b746a5071306575" - }, - { - "key": "5559656353686a697731476b3942494b66686f6d", - "value": "76616c75655f666f725f5559656353686a697731476b3942494b66686f6d" - }, - { - "key": "3132784670387270355134664e3261577974774f", - "value": "76616c75655f666f725f3132784670387270355134664e3261577974774f" - }, - { - "key": "324a69467553376255364f56343448423558524d", - "value": "76616c75655f666f725f324a69467553376255364f56343448423558524d" - }, - { - "key": "637250313164794e664e506a3945484842753030", - "value": "76616c75655f666f725f637250313164794e664e506a3945484842753030" - }, - { - "key": "5a78556e76433766477562364539325034455361", - "value": "76616c75655f666f725f5a78556e76433766477562364539325034455361" - }, - { - "key": "3256386d7459664e6e3644566f556866636f516e", - "value": "76616c75655f666f725f3256386d7459664e6e3644566f556866636f516e" - }, - { - "key": "504e4a4276453936456c66326559513643643939", - "value": "76616c75655f666f725f504e4a4276453936456c66326559513643643939" - } - ], - "proof": "22eb410a550a530a14636c536e4d46714a4e6162776a7a5134356e6d4d121e76616c75655f666f725f636c536e4d46714a4e6162776a7a5134356e6d4d1a090801100118012a01002210000102020102030405060708090a0b0c0a510a4f0a146b63395874466e5a4645784d416f4b6f37566c5a121e76616c75655f666f725f6b63395874466e5a4645784d416f4b6f37566c5a1a090801100118012a0100220c0d020e0f10111213141516170a560a540a14426f4c4f5279574251784c695835754c7257524a121e76616c75655f666f725f426f4c4f5279574251784c695835754c7257524a1a090801100118012a0100221118190102011a1b1c1d1e1f2021222316170a4f0a4d0a14483977566967584c6d3330756f726a4b53423371121e76616c75655f666f725f483977566967584c6d3330756f726a4b534233711a090801100118012a0100220a2425262728292a2b2c170a510a4f0a14687848476735394278645a725657575647366239121e76616c75655f666f725f687848476735394278645a7256575756473662391a090801100118012a0100220c2d02022e2f30313233340b0c0a510a4f0a146f62695655544657735949374a7a6c62654e3074121e76616c75655f666f725f6f62695655544657735949374a7a6c62654e30741a090801100118012a0100220c35363738393a3b3c3d3e2c170a510a4f0a14683139594138737249614956386b557936315672121e76616c75655f666f725f683139594138737249614956386b5579363156721a090801100118012a0100220c3f40414243444546470a0b0c0a510a4f0a146e586b6e744366514d53436a39625963516e325a121e76616c75655f666f725f6e586b6e744366514d53436a39625963516e325a1a090801100118012a0100220c48494a4b4c4d4e4f503e2c170a510a4f0a147542684a444c57425a7338765569786e6b314449121e76616c75655f666f725f7542684a444c57425a7338765569786e6b3144491a090801100118012a0100220c5152535455565758595a5b0c0a510a4f0a1456336e7859534c6c4a6b3739646d776b3330634b121e76616c75655f666f725f56336e7859534c6c4a6b3739646d776b3330634b1a090801100118012a0100220c5c025d5e5f60616233340b0c0a4f0a4d0a14395277644d4b354e786d506942755950454e695a121e76616c75655f666f725f395277644d4b354e786d506942755950454e695a1a090801100118012a0100220a636465664546470a0b0c0a510a4f0a14746b425246386e79314e4f35775244514d376c46121e76616c75655f666f725f746b425246386e79314e4f35775244514d376c461a090801100118012a0100220c670268696a6b6c6d6e340b0c0a4f0a4d0a144e41334178576a42485233524b746a5071306575121e76616c75655f666f725f4e41334178576a42485233524b746a50713065751a090801100118012a0100220a6f7071727374752316170a4f0a4d0a145559656353686a697731476b3942494b66686f6d121e76616c75655f666f725f5559656353686a697731476b3942494b66686f6d1a090801100118012a0100220a767778797a7b222316170a510a4f0a143132784670387270355134664e3261577974774f121e76616c75655f666f725f3132784670387270355134664e3261577974774f1a090801100118012a0100220c7c7d7e7f80013b3c3d3e2c170a580a560a14324a69467553376255364f56343448423558524d121e76616c75655f666f725f324a69467553376255364f56343448423558524d1a090801100118012a01002213810101820101830184018501860146470a0b0c0a5b0a590a14637250313164794e664e506a3945484842753030121e76616c75655f666f725f637250313164794e664e506a39454848427530301a090801100118012a0100221687010288010289018a018b018c018d018e018f015b0c0a5b0a590a145a78556e76433766477562364539325034455361121e76616c75655f666f725f5a78556e764337664775623645393250344553611a090801100118012a01002216900191010292019301940195019601970198015a5b0c0a5c0a5a0a143256386d7459664e6e3644566f556866636f516e121e76616c75655f666f725f3256386d7459664e6e3644566f556866636f516e1a090801100118012a010022179901019a019b019c019d019e019f01a001a101470a0b0c0a590a570a14504e4a4276453936456c66326559513643643939121e76616c75655f666f725f504e4a4276453936456c663265595136436439391a090801100118012a01002214a2010201a301a401a501a601a7018e018f015b0c122708011201011a204c27b74a03394f254117dc2dd4aaa27ad2a3eccb0fa6f23dfc52eea501d133cd122708011201011a200000000000000000000000000000000000000000000000000000000000000000122508011221010000000000000000000000000000000000000000000000000000000000000000122708011201011a207a9e6f4327be207f312a80fecec582699f45b35e7fd2c3357c9c5ff7432f36f6122708011201011a206732b1eaa2cf07fbc94599aecc2df057d8efb0ccd775d86b6ea176bfaad367ad122708011201011a202267b5ddaf71187e34cc533c3e7ee25dfd386a3698249a482c28b4c4016389f1122708011201011a20d80dd2a33eba727f1464bc6ae82a164d56f057cbcfd68e8e5e01b16d62ca28f8122708011201011a2024f1a08038cec03788d6692c5f6581ab50318277ed47932e6d3bcf750df64141122708011201011a20050961036298f28b550ce8123f9f9ccfefcaf1059808c2f285bd24915da7ca80122708011201011a20b735a57c73e8399b6c4105d07aab95b2a7ff7fa7dd6bb3ee40ad21d157c55b84122708011201011a20eaac481f8ac8418ee1eabde1459b6ff7369b5ce8c034d63fc0169d49f9827bb4122708011201011a20207bedb000df636941dfcd8393a399cca2f3eea7013beb04c8257e36aa11f03a122708011201011a20be47d8a61c2acd356be44e9c83ed51bfa13503fded1ea8965d1dd9a721d98f9f12250801122101b76263b0c4e8438e81f21cdbff1e21b894a3c0e4ea08a0deab7c1de3292cd16a122508011221013ae2d90a118dd6f8a42f4006817e777f22540e921df1d97ed334a8b9de92c6cd1225080112210156a62a015a84af9a33ca716f52ed414382bed27a70b00391f15a5471f94443d31225080112210144c48bf2a802195fba5164a7a6c171a9af7a114c7880136108a5544d82fbacba1225080112210146eaec810967e45673028074c769ca2a8ddb3a5dbd47eab5cb6c5ccce3496eab122508011221013ff09e39daa0a77181976e045c441e4716144988ccf7cb308ef9820f40111437122508011221018228a63b956885383bb6168a8bc57b1edff829e2a2caee5200a600fbcc8b3d2512250801122101676d00d395acdcc0dec167c1a3ccf45fa415737faee5b74e8754df794a88b64d12250801122101ab73d025c6345f219bcc724c954729edaa496884d0f693c7645a8884fa0f298a1225080112210165a967ceeaf481cd2f5e2bc6d8f0435f5721b0739c3a4731f37ab11783133cbc122508011221011b8fec5bff949ff2c00ceed5c620f33c808249dccb408b623db89fa764a6ac5b12250801122101f46a611d5e06078694b314729936c2e52471923e187dbd5d71c74be963c22417122508011221012d2ed3841fb3fb2fdae10a427542a0a7e4932dc01c27c154c19610d205c3a22c122708011201011a208eeb8a660fbf34aeecaa4509aa72332a12beee8fc4e020938bb6ca1a69a4fbe5122708011201011a20cf24fd569b70a3903246200ff8f8d903eeaa2c5e35cffb65074bdcd7a4eb3b0c122708011201011a201862b3a21bd284386453f0734a4678b59b5411beee348419e2c138bce866709b122708011201011a2073b86c9d198aa201c55751b86fd99b341cfb288957cfb5270116a777993929d912250801122101cf53354a8ddd4d319a94a6505e41da6593291c434bdee02fada71d57cb432f3c122708011201011a20c43fb9e3554b3d229bb7a6633a4109a69cc926daff778ca7e1c80ee27ec1b283122708011201011a2054e7420dac859c97f26b8f0f73e4bf058ef2eaf6af66e63b27c02c3b33ad7adf122508011221013d0540608befb7ab726d97d0b44535a738ac3daa5cf362855a6060f56cd47a5c12250801122101a6900433c8bea8425e65d4fedf061073fa4f3c96d14b55272a6a4bee4112422d122708011201011a20133ce60dbeaff551d506eb85faf19a08d88c1aabc7a579b6a260b474bfe1976f122508011221013c6a80e5249148dd9db50e75bb37cc9bf00696a66af293ad42bb9fbbc1981c5012250801122101048117ba2b17332819e7b3afa6ee881356edf33fb28e78e5b555644d4db8109e12250801122101bd67b20b17090592c5f5eee64e8f9d24cd4807eb8d08224d730a25725ff105b2122708011201011a2038f93f3dbfd74b0545510d22698a4277cd2825fbf250efcf0db605fc12ec6319122508011221013d8771384f9457f041fa2259609025fb25480ead83819eb418050cc0079b133e122708011201011a202b2520f45c94631a59b98227c7747a212e4fcb5e4d524464c84e67ae67e1c28e122708011201011a20d4a6e9e4496a7cd271b0e307292f254b38499c76ab01dc848331527e069b093b122708011201011a20dbfb4b9dc45de4ba516bbbf08ddde13e5fa408500ef27423ad4d3a2147b7bea5122708011201011a2036e9058727831dbca632c540b911facabe0bb512ce623052f57fae7449be7a9d12250801122101ca23541c87a7f1c08e35aec96771b3c6e642a991a23f5a71982299237b9c7c1c1225080112210159d8ca1196e3cb12f21b1a275e58588d569c0253a3ce5bf19b5e29e08f8884b01225080112210199e76c784c50b3e2c1570d6d70fc98ef981ca02f85338d9900a1d52cbea46d01122708011201011a20e980532774bf16dceab254f91fcc05eedab3211ccc6c0d69f3717da1b9939478122508011221016744b9107f5be01d11cc98986bf40c7dd49bc257bf968a5b160b446cff18c8ab122508011221010693b77fd489e95f8cf1861fde23de6339cb359f1ecdf909c68b69843ab96e0a12250801122101058c30e22e96a0f99122609f4a6e50c6815240818eaddfa56c8ad9067da15e3512250801122101bfd69f527d0f170f15b1f4ac3bbaac0ca91560db2b77004722b9b94c2acc394b122708011201011a204128d7ac80e352269ece997a95565f9b606a4fa0890abf9b0cbf48e5a4eaad281225080112210160ad388ac451adb2074de377928b89211f49ae2d5f6e7b73c81035cfd2cfd709122508011221018c3d52acaf872248183fe11cd8f7541288040cd6ff05084e37ad92e94619f536122708011201011a20b3c4c041a69d63a5d978a67f6cffb1936dd81d43afec5e9c0aed9b34d4f931b4122708011201011a20a9e31a0ce8cfd15ffbed5aa7a32fd20e203f24cf5b7cc3ef05de2cdcf4f7529e122508011221011f7275251a725c43e8f9f829bc615ce3362ce8425af0cccd34643d72a5fa8b0b122508011221017562485b760afbcf9bdfa72c824f44b762187d254ad2526ef10731217cea0285122708011201011a202290d78dffcbd7c5d71e41ac7308d6a38ff8c4acef31f43e4ec08f9e9f13cb36122708011201011a2085bc034ff3b2d35bd6c722717f18cfb54aec81b93dd276ca2693f7553c80346c12250801122101ced5a0edfbcbb8e31f8bb407ee4b0adb3589d4212526f21fa96902a6cca63e39122708011201011a2024e0dc8ecb29d05f5e666ff9f48986369fa2cc4684945615d6a6e90c36676dcd122508011221012da3225bb1c80352a797e2a684dc842651368f0a4ce80de00d9d15b80bc0c89812250801122101483c72ce68ddcab1dc34b612173ef08a1e72e0f700e590742dc0377aca1a6433122708011201011a2053ef26fcc8a46af6cf1dfdbf40316ddf263c1bd507273e41e8c4107303343347122708011201011a20b9e15e2e63188aba2af500e8516cfebf7c65d9e038b0a4a442d774bcc05202971225080112210188f330dc91c6a3f114763242241dbc84fa5b80facb7f8a4ba249ec6e586eac6c122508011221016aa0a28b470b18ac7cf16ec89fe83cad82cfddcce596239f4414515575d8b422122708011201011a20cf58d802a5b45a1310985c5165c0870d54e17679917c590998aea8e7cc9b408012250801122101afa7971e8ac0609e2709ae13f218c83c632264c318291b2327c1e163305be47b12250801122101f32645861c9e82cf56bf46036d155b818c2cc2caa1bbcc7a43e836ce07d807ca122708011201011a2095f93afeb4bb39b73b8230931d17e78d2f4cc169c4bfec76f1d2f3a6fb21d0ff122708011201011a208ac52074530ae19b4ec74b68b18f8c667ef9769d25f95d7fa7f26e83533ae92112250801122101ebc209c74dae2128a7d333fc416d473b983ced345696e93ca927c81a18d95580122708011201011a2091ae2d65ad7c3dbb8beef46d09b6c5c3cdebe6e2c13317ccbf23169125a484f412250801122101b2b42e90de76bb2a06044a1aa5bf11fead5f5de8d4c74f8bc1a648921599bfdd122708011201011a20f8d08696b7dce82ddd748e84c8515d5d024aa7194124cd0b33655f6bd844705d122708011201011a20579c8ed83742c9bed43c204d30221f649ca130ccfb42dd857e5729b8a8e8a34f1225080112210155066699266cf25025b198ae536d48be0ee48a15a2f3dad9de43265be576bad8122708011201011a20401797c0f62b5f2e33337c584cfb78057e3bcb99f54815eb50ef359f26664a56122708011201011a20b77f3050d43d37012c9e96ba9e6fc532a4942ddde3ecdb5e4433bf24d7dd8b31122508011221015cd0738a9f9fbdabb5654c5d07469a2ed956c62d0a0b23df18e893db6904938512250801122101c3dd840575e9df89717bea07ab3aab4854f7008a3859d47e75eda84640427c0e122708011201011a20db586278ea6abb5683694e3d214c86e762709356ed2f44f8c9090ae7c95f1b77122708011201011a206b2f11e284032cf7920a95ea4b28434e3c37b95fea292684bfdf99cc25610db1122708011201011a206056323234df9abbeb02389c808c4f90f94a8705c6fae3cba93483410e30dda8122708011201011a20bd4eb1a98ba8e2fcb5b2c51f243cd217147e89eae0c93465042b264298e8af6312250801122101e03bc85478a74a95761b1d2a9438bd7341ae5532f171be75128907f45e027d9f122708011201011a20986ab3a15460d46f0ed38afbe9387d768fe219c118d0ccf70577ba4f12c3ec9612250801122101a490bedac9cc306dc7721bde73b8416e9f9564a298d1b2d37410a3f90135c216122708011201011a202e6b805bb42e7eea0487251c2332f61fd9ac55926a3e668251ae1f23d3a812a512250801122101b1222b2963878020e021dd28d2df05b4f8307084d13029c3915865f84afd56c0122708011201011a20efbef68b9a5b015b4a00d10037bb66ad245b5e30861eb64696934d889baea1a7122508011221018c24741b30a9c36ba0fcd873f4e21d98a80b8040761e2ea2d34332eeed6ee81b122708011201011a20b5a93de5e8dda4769f9c3397dd4b2638e7a437263f29f58de02d0d17932e449012250801122101ff1322a499933052c2e966eb031fc912d71ddbdde3a369f76ac826bfe05a27c8122708011201011a207c1990a63b7833bfd1d390e2e782483593dcef7067e4f587d6929bb48a3a2b03122708011201011a20b2c66013204af0eda043edb68c51524bc675b4fae5f6510af7eefe12b14ddd78122708011201011a2031825b5f7715b2a91d296b932050295634a3b922ef10922f6291ae7e9faef67f122508011221016cc9226a6d6f383c45f3912f9e0a2d4be5dfdfdbee09e04743d2fb22660d37ce122708011201011a20122193d0faace84387851c6dc891694f8d2ed47f41dba25881379197301a27aa122708011201011a2055b48726e5f1f8aecfece9471c8c6cce0a4ba4f5f77c7c611a097fa0fead749c12250801122101019363b91ed17ce573438eb65bbda4ea0e5482fda22bd96ed91a330bdf313c46122708011201011a205e053c924a657d6edd8810c12eddceee548ac86057f66a72e67745d0c03af09e122708011201011a204eb906b4d01cc39e57d88b28102cf543be7421282081b9fb727b2bba31f10bb7122508011221017a58369140367959e1cf1009e8b71d4c0d62a079a9bf0102f330aaf245cb13ed1225080112210119a4d2d17a37faf0605c8ac65cb4aac72de3d7779c64c8b78577df090685d442122708011201011a206db2b5ae7a1de14f4a8f779f0f12a4b67357945d3c15ecd7271aaf07a74e2dfa122708011201011a20d19a3c11a42b447b179bcfc7431a943cc3f597981a6c6dd91f994e1901e752d4122708011201011a20998c71664d07489f1856c64ab887a857547ac89df9a86c6b92da530cc36ec36c12250801122101076db06367bceb7bcc32067228a106cee4f2c8e6ea3c89cb71e47c9c248266281225080112210132606896f001c9d8dcd265d930d18e94582a3d52fb030da76a5dbb8f1cbcd432122508011221018aca2c209020a57524148ccab47c928969956a5978b2b6031dfe3580373065f912250801122101ce7c5c7aae73f63bdb4aee0d33ce99d1bbf659fc0d3caf444529c5bb015d66a3122708011201011a207829c213824cc50a7705b799054a848decd28dd78183683ec6b3b57e1a207f5d122708011201011a20b0d25f9fe186304e97f7a1892ac21caa48deac5750adba83e8e7a3ab68ae294e1225080112210145931a787b170595efe766b69445c8fff0f34bb32aa09c25c1fd832e25f9dbe31225080112210102a3bd7d067f1dd1e320c2cab008c73fcb9e090122ecd9510a1fd70408ddd61b122708011201011a2029c314de40783a3b5b2b0b0c9c0b2fd2cdc1fc85e1f9565a5e5d0577711f501c122508011221015a4b2962e8c1ec371e6e3cdc01f3e7385c77c6321bd995024a9e69ed3b90033712250801122101fafc67202686918c548c03e413e266a9178e61c3b7dd50b3cd058d2a78a646d5122708011201011a203978d57f079ea09d6d6d32710f019c4b09315375ed3ce1173e0667becb564c9312250801122101921da87ca3b5fcb796e07a7fbf7580e6d8c72e90d33e1bd46974c9360b45454412250801122101ad4ae81872a0132f51cd6ea883426f7e00030aec8c12779493007478ed85deac122708011201011a205302d42be40f87ac957be75c3c668ad4c91bae6eb1ed56e26c0d60eefba964fa122508011221013f1c8d8acbb5c8ad98797ba5e046bf6670121e97a351ba0781c6386d9afd8bbe122708011201011a20f8ff09744ca36902b580c24ca166418affc46818120d1d435b2d09bd8448317612250801122101e7fa82c24f93c1690f3e564b0a3f1b45eaed3c8f06bdcbc59a1fa416d7d5c820122508011221019efbbbf59c7ed77a5d3dc61b8b6f77178c2a2ed3ba6dc7fa61fffde02d19d3ee1225080112210185e5a25bf7906404130d2b57db9e68d8192919cf0ff186e694b1b019fd58ac88122708011201011a20388c501b4bda0c64c0a85d74d9ad1e7608de52b067a5d893ad83042aa0ffe5ad122708011201011a207b652e83c4d49c7f9476079ebde01742b61f724d51b8550d44ad2fa16e7d1044122708011201011a20879c5704e1df82bba5645ab26fce2d587d5a6f02079d0f43c349e9a4535672b8122708011201011a20f1ff26854e0c6e83717c88f7e4cee8369d046dbd9bacbdb6f278d2e29cf1135f122508011221016b905beec1e895cd07612a113f10a8a941391e4cf6c1c3319db4e00904e19bfd1225080112210171b33a17bab7756fc50d898e77689f22c2b6819ca0ca4bf53d57b6d080dc24d4122508011221018c9dedcadf0b0fb4013aca1a520143bdb24afda97fa33cc6e6c426648b2d641e12250801122101d41a8431fa556ce77f080be32758a8186d9544886e969b7341031982cbee336b12250801122101919dc73a4d6f20bb5fe14a4bbd57c1c58c52ac9ecd9cc167d1e4b0b013d9c264122508011221017f42ba0ab9cf7c3328509a669ff3f005fff65768eda3c78a08b507aa291e9f6d12250801122101550e4a13c7e10998bd0f28e012103c375eb83d02f870868e199a7c32d741c9b012250801122101ad81a0c099cd1f93e449fa2f4aa848c28e34fb0e4abc32d88fa05507418592cd122708011201011a20263b61b05d34033be1a2337b31aaab56b45283006b7c726b5bff4927810a9a77122708011201011a20900384b9152038b0ea841ab3fdd1719a75f60556fd7444c7c75b50111bdbf939122708011201011a203fe233a95d2d4cfde64850c9ff8280b74d060f6a575267cb78269709aaad7cd0122708011201011a201a6e8fc11ab2f3eb98d93c19ddb1534dd2753266373b7549ed3e2cb98adac735122508011221018384754befba9655eacc0c46ccb0c72344b710c4bf6ab42883fb0709634a4c4c1225080112210131734bd84fbc3542040ec104a6ab5378b8f5106ab621ee42f9f8f42e18a0db94122708011201011a20853799f77971e980c5f85e3e69b5bc3e7c86c223ba99395899f070fa0a14949912250801122101c4c4b88cd764772b9a4129ff4f9be42f795624b85f043b17afff7862bbc4ba9a122708011201011a204a1f1d9534fd0fe7df108acb235054232bf7378508c6f10dec6fe47bc01d151d12250801122101186fa2307c9f24158c61639492143e8940a466163d056c22db6cb8c0655af90a122708011201011a203313bb9fb8c001cf54523a2c896d1cad8d0a1c5ac12547c3bd66e93aa16345c0122708011201011a205d0119e99e0c4ffed7df85ccd6d3526d8ef09b1c352c21b2d520c4bbaa246f04122708011201011a203317850ab321269b8658e79bc7e07a5b5fd8335989d802c6610092fef9d7a875122708011201011a200f2c5d4672c826239e69174d3656f0d849ac37dd7c321504e409a26488a2d3d6122508011221019f1f6aa3dbfb07ce8a770510115ba4a0c8738586999c74fb01d07a407c796241122708011201011a20041132c96dc3eaacca49829e001dbc8728103125ee73c503ead0bacc861c774612250801122101c961801e9e3011097a7edc58adda84f3807c74f16cd8b41c6616db13d4a86c471225080112210195d4fff097a4a5b299f8b6c0d3ee99dae37d0170d53df7b32fd37361204cde08122708011201011a20dd19d74f3c321ae47274865e9e4ad151205f51f42fd46144f8b9876c8416479512250801122101a88bda4f1ebf49b72ee3db9b4851df750d8a1286c76ce585b376570ccd49ac68122708011201011a20903838cfa8d373a9fe71cdb27ea7d846f89b7ccb74fc2a963ea06f3af47c15df1225080112210155bb3c92cd308e1939fa9e96a05f072dc4b46a08a5a99eef7ee8c731e820f058122708011201011a209557e9d2ba170d82b0479ba3fdd6c26b846ed8c82d41725c39ec9c82adb42db8122708011201011a20188a65398211152f6c6c86f54023c3a1fb9b2f0b5d63d8f1bc9cd93daaffae94", - "root": "719e886178d2b75293341221dcbf83e81b7413c8c044790591a21cb3539ae8bb" -} diff --git a/testdata/smt/batch_nonexist.json b/testdata/smt/batch_nonexist.json deleted file mode 100644 index 3a900aad..00000000 --- a/testdata/smt/batch_nonexist.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "items": [ - { - "key": "674f686e5158505448496155356d303175434178", - "value": "" - }, - { - "key": "68316d656864356a774f646f4f4264613530684e", - "value": "" - }, - { - "key": "47596d76736758786e7765427347684d5878ffff", - "value": "" - }, - { - "key": "6e34667849774c6a496f7751777073765258ffff", - "value": "" - }, - { - "key": "5341744a6c7a3076306b437a4733726a3538ffff", - "value": "" - }, - { - "key": "7531754c53597758535768724d7454326476ffff", - "value": "" - }, - { - "key": "626b3147706251616b6c56447335434b4241ffff", - "value": "" - }, - { - "key": "69546b58587a587a6772634257434b424139ffff", - "value": "" - }, - { - "key": "4c5135303537364244554b6746376d653642ffff", - "value": "" - }, - { - "key": "31564437704c327947347355364237527742ffff", - "value": "" - }, - { - "key": "4e6d6a4d46524d573867484e644832704c59ffff", - "value": "" - }, - { - "key": "5154395a394d4c4b4d3969734b564a424866ffff", - "value": "" - }, - { - "key": "594c4c314f6243506b45527662336b6f5945ffff", - "value": "" - }, - { - "key": "6957676b7639496d746d364f715576434b53ffff", - "value": "" - }, - { - "key": "3052356344343357363556444c5850426a66ffff", - "value": "" - }, - { - "key": "4f436f42716175787275626179306d4e5836ffff", - "value": "" - }, - { - "key": "676f696b7246473575634578394d364f3167ffff", - "value": "" - }, - { - "key": "464875766671595934376845394b74524b78ffff", - "value": "" - }, - { - "key": "6d6f79535555704c30584657727053717964ffff", - "value": "" - }, - { - "key": "724f674445656d75583072487a53384e7359ffff", - "value": "" - } - ], - "proof": "22e25d0a7912770a20000da5e41c5fdd943b480cc680a1942d6708140827650e8e551df7b761bf56791a530a14636c536e4d46714a4e6162776a7a5134356e6d4d121e76616c75655f666f725f636c536e4d46714a4e6162776a7a5134356e6d4d1a090801100118012a01002210000102020102030405060708090a0b0c0a7512730a20ffffedc8e4ee7f13c9892bf6277cdd60e4e8fad77abb37ca4f3b888a63b60df4124f0a146b63395874466e5a4645784d416f4b6f37566c5a121e76616c75655f666f725f6b63395874466e5a4645784d416f4b6f37566c5a1a090801100118012a0100220c0d020e0f10111213141516170ac70112c4010a202580a152668e225c064e8294c4ac37c0e2e937069585db11bcfaaacc739b017012500a146c664e6743464d6c55755443486c5873474d6950121e76616c75655f666f725f6c664e6743464d6c55755443486c5873474d69501a090801100118012a0100220d1819021a1b1c1d1e1f20210b0c1a4e0a1441704f486c45776c50666d6c5956574467643754121e76616c75655f666f725f41704f486c45776c50666d6c59565744676437541a090801100118012a0100220b2223241c1d1e1f20210b0c0ac20112bf010a207bb100695dac90a27c6385d20132065a304982c5d526bb410943c77b01772bf3124c0a14516f4d41746337385453764c376a484562763073121e76616c75655f666f725f516f4d41746337385453764c376a4845627630731a090801100118012a0100220925262728292a2b2c0c1a4d0a14394f76546a5573534844734550456d794f383854121e76616c75655f666f725f394f76546a5573534844734550456d794f3838541a090801100118012a0100220a2d2e262728292a2b2c0c0ac90112c6010a20c376a2c6b5585e61f94d0dd49f836b6e091f05c716042b816d895803d35da8ff12520a14443049745348644e4f6435304448566a336d6341121e76616c75655f666f725f443049745348644e4f6435304448566a336d63411a090801100118012a0100220f2f02020230313233343536373816171a4e0a146f4b32455030396f696a4e585a544e52514a7451121e76616c75655f666f725f6f4b32455030396f696a4e585a544e52514a74511a090801100118012a0100220b39313233343536373816170acb0112c8010a20685eb20b64a297b022101f367259d787fc6d3ef84daeade729cd71b64b57940f124f0a14514256456f334771573473697271626368317a5a121e76616c75655f666f725f514256456f334771573473697271626368317a5a1a090801100118012a0100220c3a01013b3c3d3e3f402b2c0c1a530a14335332696a5a7556314f553159514d4b62483637121e76616c75655f666f725f335332696a5a7556314f553159514d4b624836371a090801100118012a0100221041010102424344453c3d3e3f402b2c0c0acb0112c8010a20990762888677cd36590b778a873bc49872d1f2f6bec43eb3adff3b096af9fcf412550a14324975527a584e4b46435349324d49457278444e121e76616c75655f666f725f324975527a584e4b46435349324d49457278444e1a090801100118012a01002212460202020101014748494a4b4c4d4e4f50171a4d0a14336a7053783870474d317131534950474f4e496c121e76616c75655f666f725f336a7053783870474d317131534950474f4e496c1a090801100118012a0100220a5152534b4c4d4e4f50170ac70112c4010a2081ee6f449452c4c3862725c94d2a913c81f7f1d1be7f7b45255214e6f8fcc34a124f0a144b7534384848673743474f49686664646a655358121e76616c75655f666f725f4b7534384848673743474f49686664646a6553581a090801100118012a0100220c5455565758595a5b5c4f50171a4f0a14424358687767576e374a65734b7a6c706c4c4242121e76616c75655f666f725f424358687767576e374a65734b7a6c706c4c42421a090801100118012a0100220c5d55565758595a5b5c4f50170ac50112c2010a20d1121ad88eb78aa120d5ca663a8b92b7a34f4c2e1472871e965372802b96cef7124d0a1457454c70656b49654673316b4c616f7564657234121e76616c75655f666f725f57454c70656b49654673316b4c616f75646572341a090801100118012a0100220a5e5f60616263643816171a4f0a14537159466d645642435358686474733255437437121e76616c75655f666f725f537159466d6456424353586864747332554374371a090801100118012a0100220c6566675f60616263643816170aca0112c7010a20f95291b046e3edd9e8b157034d6cabf7e150848c9e6c05304514ff2d71ca4b2c12520a1442514268305a373267386e6f6a33684161376b55121e76616c75655f666f725f42514268305a373267386e6f6a33684161376b551a090801100118012a0100220f6801010169026a6b6c6d13141516171a4f0a145a336e767a524763575a755343433337766e3774121e76616c75655f666f725f5a336e767a524763575a755343433337766e37741a090801100118012a0100220c6e6f026a6b6c6d13141516170ace0112cb010a20c556fb88c9ebdc24d01de6f3886ca66c7e3035e41cbac398cd45be4858135d2312550a1446796b4f4947794c324858514e7564436d7a6475121e76616c75655f666f725f46796b4f4947794c324858514e7564436d7a64751a090801100118012a010022127001710101020272017374757636373816171a500a144c386c597650653343495a585079537834774265121e76616c75655f666f725f4c386c597650653343495a5850795378347742651a090801100118012a0100220d770278797a74757636373816170ad50112d2010a20ad474e1cbc6e139fae5b08d013c98f9c788ca2f5816acb1d89f31ac3d33180f612570a143665793451614e70465257686f53685743463835121e76616c75655f666f725f3665793451614e70465257686f536857434638351a090801100118012a010022147b01017c7d027e7f8001810182018301840150171a550a146572596b334c6769664a4f57625164374159726c121e76616c75655f666f725f6572596b334c6769664a4f57625164374159726c1a090801100118012a0100221285017d027e7f8001810182018301840150170ace0112cb010a20f57b12b550d86c56b4deaed234856df8dff1198cc2cea6cb810e6d0ffccf100012520a1435456b71304b5735714e36354c6d743548773749121e76616c75655f666f725f35456b71304b5735714e36354c6d7435487737491a090801100118012a0100220f8601018701880189018a01141516171a530a146164574972434771563431584870586d69674158121e76616c75655f666f725f6164574972434771563431584870586d696741581a090801100118012a010022108b018c018d018e0189018a01141516170ad70112d4010a20116a37692d12c0f63e51bc31c9a28f19f35e908beb6c73fdc988c030375cfae412580a14324a69467553376255364f56343448423558524d121e76616c75655f666f725f324a69467553376255364f56343448423558524d1a090801100118012a010022158f01019001019101920193019401950196010a0b0c1a560a14376834676464386433646a5435306a4d4f533769121e76616c75655f666f725f376834676464386433646a5435306a4d4f5337691a090801100118012a01002213970102980102990193019401950196010a0b0c0ad40112d1010a208aff23862f54a1b1389cbdd8bba222b3eaefb839aacd862f0e23a5c90dc80b0412550a14666634634357546a67437a654f67546e76527574121e76616c75655f666f725f666634634357546a67437a654f67546e765275741a090801100118012a010022129a019b019c019d019e019f01a0015c4f50171a560a1446665549363845687639674c5155385046776169121e76616c75655f666f725f46665549363845687639674c51553850467761691a090801100118012a01002213a101a20102a301a4019e019f01a0015c4f50170ad30112d0010a20ea8f2dbf774b02bdf8401f778b5e4b814afb6ff48819f4e7a656f8cc46c282b412580a144f6c31483132613334593051426d365430504958121e76616c75655f666f725f4f6c31483132613334593051426d3654305049581a090801100118012a01002215a5010201a601a701a801a901aa01ab01ac011516171a520a14666a794f71705976756c774247776e7044734d4d121e76616c75655f666f725f666a794f71705976756c774247776e7044734d4d1a090801100118012a0100220fad01a801a901aa01ab01ac011516170ad30112d0010a20e80dafcaea120e1002d666d4241e53105949d9137d80ac63e962a831ac4f3cf912560a14625755566e6438414a37524c6e397a62794f4b55121e76616c75655f666f725f625755566e6438414a37524c6e397a62794f4b551a090801100118012a01002213ae01af01b001b101b201b301b401ac011516171a540a145a61536b5339414d375a74446c77334747377536121e76616c75655f666f725f5a61536b5339414d375a74446c773347473775361a090801100118012a01002211b501b601b701b801aa01ab01ac011516170acb0112c8010a2081d2838e71f2d2a1c5fc13d0f0702f19afdb0ac1e90ed5a03b81f2dd3400399212530a14424f32476a67513549544565697530686a467546121e76616c75655f666f725f424f32476a67513549544565697530686a4675461a090801100118012a01002210b9010101ba01565758595a5b5c4f50171a4f0a144b7534384848673743474f49686664646a655358121e76616c75655f666f725f4b7534384848673743474f49686664646a6553581a090801100118012a0100220c5455565758595a5b5c4f50170ad10112ce010a206e9749e7f0d819136a79c684245a991a0d312cf2052a33b5ad590679794597db12560a1442655937654e5442385a4a4572474c4534613234121e76616c75655f666f725f42655937654e5442385a4a4572474c45346132341a090801100118012a01002213bb0102bc0101bd01be01bf01c0013f402b2c0c1a520a1457726b7036354c65493478726850627074477654121e76616c75655f666f725f57726b7036354c654934787268506270744776541a090801100118012a0100220fc101c201be01bf01c0013f402b2c0c0ad80112d5010a20eb2bce9b290497f29cd3ab28d8887127d1a3850c5194573ea126e69f538438fd12520a14666a794f71705976756c774247776e7044734d4d121e76616c75655f666f725f666a794f71705976756c774247776e7044734d4d1a090801100118012a0100220fad01a801a901aa01ab01ac011516171a5d0a147a48744a4d34333865764d526d51515167394737121e76616c75655f666f725f7a48744a4d34333865764d526d515151673947371a090801100118012a0100221ac3010202c401020202c501c601c701a901aa01ab01ac01151617122708011201011a204c27b74a03394f254117dc2dd4aaa27ad2a3eccb0fa6f23dfc52eea501d133cd122708011201011a200000000000000000000000000000000000000000000000000000000000000000122508011221010000000000000000000000000000000000000000000000000000000000000000122708011201011a207a9e6f4327be207f312a80fecec582699f45b35e7fd2c3357c9c5ff7432f36f6122708011201011a206732b1eaa2cf07fbc94599aecc2df057d8efb0ccd775d86b6ea176bfaad367ad122708011201011a202267b5ddaf71187e34cc533c3e7ee25dfd386a3698249a482c28b4c4016389f1122708011201011a20d80dd2a33eba727f1464bc6ae82a164d56f057cbcfd68e8e5e01b16d62ca28f8122708011201011a2024f1a08038cec03788d6692c5f6581ab50318277ed47932e6d3bcf750df64141122708011201011a20050961036298f28b550ce8123f9f9ccfefcaf1059808c2f285bd24915da7ca80122708011201011a20657d93a7331d35712e8480057c06baf379c8a2aada48365bfc943cc7b36af94e122708011201011a20eaac481f8ac8418ee1eabde1459b6ff7369b5ce8c034d63fc0169d49f9827bb4122708011201011a20207bedb000df636941dfcd8393a399cca2f3eea7013beb04c8257e36aa11f03a122708011201011a20e49182ab61bee9b787132b4092c4b3014f170ee3e845786f362998a9122984e612250801122101b76263b0c4e8438e81f21cdbff1e21b894a3c0e4ea08a0deab7c1de3292cd16a122508011221013ae2d90a118dd6f8a42f4006817e777f22540e921df1d97ed334a8b9de92c6cd1225080112210156a62a015a84af9a33ca716f52ed414382bed27a70b00391f15a5471f94443d31225080112210144c48bf2a802195fba5164a7a6c171a9af7a114c7880136108a5544d82fbacba1225080112210146eaec810967e45673028074c769ca2a8ddb3a5dbd47eab5cb6c5ccce3496eab122508011221013ff09e39daa0a77181976e045c441e4716144988ccf7cb308ef9820f4011143712250801122101ffdcb7da910966808d2d3bb3fd307b689c3ad49b9fde1424896c12063a84b75f12250801122101676d00d395acdcc0dec167c1a3ccf45fa415737faee5b74e8754df794a88b64d1225080112210105ed2c700945fe28a9fd7552975cd76e047454319f029bbf5be265c9bc54554b1225080112210154350e9d386d3ec494f76d0ce140dccb32a12fcf150745aab95471a2cee21fb1122508011221015a82302f68e12cbba17ccab8920ab5a100d9770a1504fe6b8d066beccd659745122508011221012d64758d6682c0d72a498d55be1ec1447b47cd6abf1d4ea8d4872c68dfdd11ef1225080112210116dc6e2093bc12c50a487ce251d8f1a5b3a1af59c3eb7132adbcba9f1fa778bb122508011221012dc2849158c9807287ecad05813a751ad863c4b7f66a243b66e991586bfccaf5122708011201011a20b6741f49d2db5052180ad02cca231c6aeac1333d515d6c490dac6e770278f638122508011221019a586bc3ee20b13fd03bf5b2a4461d5dd6fc5cf05c4c9c57303216e99dfbe239122708011201011a206dfada962670bb53945431e85063e191d5dc0fb6f19207d0a03d1055f801ad911225080112210119a4d2d17a37faf0605c8ac65cb4aac72de3d7779c64c8b78577df090685d442122708011201011a206db2b5ae7a1de14f4a8f779f0f12a4b67357945d3c15ecd7271aaf07a74e2dfa122708011201011a20d19a3c11a42b447b179bcfc7431a943cc3f597981a6c6dd91f994e1901e752d41225080112210118a3123f008e521520843625006577c5112f13fe624851e68a75613b7ac1a9e8122708011201011a2007b9aed070bfa3929d6dd5a4ab0d002c36e8a467f3d94e0d1b0d31773fd704d1122708011201011a207ec97d7e83fc505c030b81e395a5b19c1be86ed9f9dcd1fbb88e5edc5cbc6ad51225080112210168b051546044bfd33fc353d9a1b51b3afb762d3e27bfc475857f4295038e3254122708011201011a20eceb5dad8441fb687bf912c86ef77e3450902da06974913d4cb9881edd19a25212250801122101023ab1561db5979c5f009da8950a89b1b2c46bfe483bfda8d74d408a9564f04012250801122101ad0c58847b38b345ddd65b451ba0718df445572144eb2d5bab8225320a4d3869122708011201011a20a9672370788bd4c3b21487e1ff7daf9fd29055c33ef245e0d7ffbf29423afa0a122508011221017f42ba0ab9cf7c3328509a669ff3f005fff65768eda3c78a08b507aa291e9f6d12250801122101550e4a13c7e10998bd0f28e012103c375eb83d02f870868e199a7c32d741c9b012250801122101ad81a0c099cd1f93e449fa2f4aa848c28e34fb0e4abc32d88fa05507418592cd122508011221014fbe2d9c3066bf90ee87f5286b5adbe15b2b24ee71d39d1e975e24c964aef074122708011201011a200279a632ab7ad843f7aefc02c89d48423f765997719f2307177f9434e9f5845a122508011221010a5a5481f3a9523d353374777c2824c8487e4fad776105fb77d7fa2a11ab5732122508011221018015c60e22701c790051b93199dcd790c1733d79910898c85ced29e2ea03c464122708011201011a2046580f4438d7970a757449a1a8d7ab19b278ba7c5fd5041ed202dbfb62cfe66612250801122101e78070ad5b6a3392a54d1b7f541ee6ffc0a80b4f1dcd0286095a8f6330ef8fb2122708011201011a20cad792e7f4ee64cce5847de67882c26578efbd13700c7b032979c711e838445512250801122101f00585ec6dba7a13f34f71b9493a0d6fc5591638b51848d004702ccd4f697a50122508011221010efd2907c3aff8dafb0f72da84ceb19376fa1bec5d305c32101885b61aad5e7b122708011201011a20beb48a5b68c0fe3e514b4de894c96364087812a55e8dbb81a25a9976d91ea839122708011201011a207829c213824cc50a7705b799054a848decd28dd78183683ec6b3b57e1a207f5d122708011201011a20b0d25f9fe186304e97f7a1892ac21caa48deac5750adba83e8e7a3ab68ae294e122708011201011a2093fe012ca5775953d19f43e1e12752b88532608588f6b07b0cda97014579d37e12250801122101ad0e0a75d718ee8919e1ec2dd1b8ca45166f8868bdec7f52cd9a09aa2953a946122508011221019f6407dbbfd7317dbbda4d25ed767c45e897bc245a5051f2e7d9f1ccd9afbdfa122708011201011a207a147bea1ab0387504da2f907246d88cb8fd53ddb2cf994f9f7a86a053a18deb122708011201011a2001e07e7bf8b20cf9066b74cddee526edd36d760371a64bd11ba37339a4996b56122708011201011a20378eed6ef4ef986fd3d7ecc60b06fcb5bd991c51cc3b5fe7c2bb1ba5737f8ee4122708011201011a20ab1fbe82c840394b173785b166a6b40a71a3aedc24faed220c9d33d93501aec0122508011221018b014adefc2221a8fcda04c892040142485f69b15d85328789f94c9c6d65ce4c122708011201011a20d05bd5732fc00ecb341952f6f55240f00e795da842cdc333d3e21502620c6c03122708011201011a20cb5777a5c3853d79d3ba5a6a3bddab7d4bd3a18ef5e643742967b4b51a1f03cf122708011201011a20a6646e092d8a0fcaf26dc966b9b34987fc90bdcd5559a9182ce2671466b333b8122708011201011a20ddf7b89fbbae808f635f9f59f10fe3f29ebe2d9240158c7a0872bbfedcf02836122708011201011a206180367e0ef1e3eeb5b068ab5f27e59a581a516a40da40f4aebb8f6bd29923e912250801122101f28dcc2838635eddf2bc18727e1a0bbe6decb542a24c14f4732f793cc721b5a712250801122101c5b198042ebb553554734a4bfd8e11ff6682d7ee6638843153acce1d3666422f122508011221015074b5597289337449fd4e5198114ee3f8fd435204441bbd95ebc9ef1ba91874122508011221013182a16a4ab4e353d7e1c5f19e4bc32ddc94edc6ed22e1c82e28bf15733725a71225080112210115ea70cee62d2f5efdcb63881f3b493d1996f7ad61fed31af16f3d164229e481122708011201011a20d58a02ed02aa73394de38e275f99d8dd5ea5e71d5dd673bcb403e66b304294bf122708011201011a20c95ac9668a34761ccdd111d856992b20a0846b3e5e0e0a22121b752c591b7613122708011201011a203ae55f08905c68a2adbcdeacb26de2d609bd3e869ac66bac631e9502c92ae8f512250801122101fb082f2df8a2307274e40a7016cee71ade05e54f5558ed4f6c39991d4eb5c117122508011221018b7196f52f76efcbb7ab0467d1414a38bdc3301c978dbc5b326795d1bf431482122708011201011a20c4921f1afa5739d3a359f971e40a431a98b0188dd4b18f160ded84545769ba34122708011201011a20f8077d7c466da631d21ca54e1544db9ce6a2a4fd15145ec12fbc4adfc8e26628122708011201011a20d36e2a921c9f7e87f5b765185a991a4749ade4f99a6d5ac857f38665ae2ac3cc122708011201011a200ce4eb85cd6410e4c5e303948cae5a95522127b5a7fb491bf067f99e95ab6b6a12250801122101dbbc1bb871e574e1e708abf438782a09b4d4b6e8286c50a388e9ee5e4852b390122708011201011a2041e849a4259c8a305a7759e67a8e6fc95bb621a07a471ecfd3dacd9e353d824f122508011221012b5a98832c7bc5dd54801e7e100706332d58e560208fb62b06f3a77ddbecf075122508011221010ae70fac14ef0aa1b4051938569745fb3eb470675659b974f4bf68bf9706a7c012250801122101be4bf66cd45a4c4aaa7ff3857c3a42814555c7f7ec772bb1064dba946c6b328312250801122101eaf378c5c63442c551b21d5b6e43d54be67d451e2d26908afc2ea2cc3ffe3b7d122708011201011a20950e2179c815bfd8907d58128a7ae7c97daa5ab575af4171f644c8099010ad6f122708011201011a20d47d2c30c8448077ffa573c2c35a006220d7608a871e818ad29d3716daf485b9122708011201011a202b2520f45c94631a59b98227c7747a212e4fcb5e4d524464c84e67ae67e1c28e122708011201011a20d4a6e9e4496a7cd271b0e307292f254b38499c76ab01dc848331527e069b093b12250801122101168ddc9f9d7a14ab6353e9d31cb9b26fd91d2752bc8c5e7414d1e1cc4161e9fb122708011201011a200c9b1918cd04d1dc8de6b4fbb6a971f78bac178c5321f963df0b59606148cf5c122708011201011a2008bec402582cd245831ef538bb6dcfb9f3de2e7c8cd3e4077ea056998dc379591225080112210151dd9cb84f73eb1fba6f402ab9c79de2f5e4808612f3a209764790c661c8328d122708011201011a201e1efde4d1f12bbfceef37c9d9ffb43116624975f0a9a28ca642d9c500a7c8c0122708011201011a206e668cd3ff566cbbebdc256e9fe214a381079b6b9f4377909b76cceab49952f6122708011201011a203978d57f079ea09d6d6d32710f019c4b09315375ed3ce1173e0667becb564c93122508011221011aeb41adebc824fb9df4b0f004133ea0068f8d6048dcb3435af8d7e803710dd4122708011201011a20bbaf5df03403cb51ddf9090316fd0d0ed1077412394f7a2861b5da7d8bc98ebf122708011201011a2043d773c45158fdb231c1ea4ebd2ec61457fa77a886abea1981a6de4d263d4e8b12250801122101265936384fa658c0148f1842b942b9a2b5ff05f91edba9b997984aa9780cb3821225080112210157204e13cd8146b61b0864d4ec1fb2926bc4207ce3729b716f225b346edef077122708011201011a204aa1b82cd090ce99c3666f16b801cf28efa0e1dacdd91b46348aaa36117ae997122708011201011a20932fa47c2c8611b852545d85a3714e5b84102a1817b3d32ea359fee69376fcc0122508011221014a7fb59a20c67de5c95d701741dcafb0b2b424587d95ba08a48ea2887cc0be9c122708011201011a20ded91efa4177fffdac2795e86b73c57c25b6e5e77d390c3877859b791f385811122708011201011a20a3ed532793078461e21b64376577f3789338ec5bab6cc6559aeb306e7f9e3242122708011201011a207169495e53d639cb5f13e370c122e8266a3430217295336f77b592dd39bfa701122508011221011a5daddc81b3d7410433820681e37ab2437f978703ca2775f844a2992cd5595d1225080112210109e6a3c6b1dbc32d1af5178a7baa3df1e31ccf8520255a4aca37e649d62fa3c612250801122101001dd12ced870d2db0527fcd98cfb45f1c04a8211ab7292374010b6b8f0c01d812250801122101e2579b69672d24b2c8ace967126eb5c293ef978e3938ea2d94eed4f5dbae70b3122708011201011a20e98e3bc7a05844a192e2a9361f277188aab93853abdf34419ddd7098c090d8f51225080112210184c49247fdc0aef20e8dfaf047010764e084c4ae6b8a449eaebd1a6927c1bc63122708011201011a205431165031aa3557730f1f05b3dc36c981a29816f4851814838017203f34627a12250801122101983b2afefe44d668c42a75d72a4b1a06facc2dc38610acef33a7438fa918a98b122708011201011a20eb3e05749d936ecf8b5c5a09c52b9b58a8895be01c96bad625bdb7cc5135693e122708011201011a206c3c861f0d62e4945af0703f988a1c8571c1fbbdaee993f8d8114642374952ea122708011201011a2021e74bfc0537e1797d39980b1199b995c02a3d00dd4e7a84e72dbe8bc5aaf1d11225080112210137bef4dd27c2de86a41e7d487c2948ac12513bc72e3412ede04ca8526d102620122508011221010d1c82784b297bc946c7374232bdd741b26c73254271bc1d76c9e5e15e639ff6122708011201011a20579bf4a18e5abe8afdae625fd7bb4a4f341079bb104e1885fb322bd003c570a4122708011201011a20ae1285d65eb55c18dea08d4f2ef0a28791036650049025ec07fe0697c0a35cfc122708011201011a207a249163982a35cb260955598c1b1f143ff4bbb2fca0464f39315bc57012023a12250801122101dbfdb2c64bddc6cfd01e6f3c0ddfd36b13de2fc4315bc269901623bfff6027a1122708011201011a2081ca61864da86da04206d60b2939fba9a6ad4bb870eef466817b0e30c24c00471225080112210187642824cab7c3bca0044843945dcd350c5a61c7906792127d671f48de5d74b612250801122101e4feb818b7962b4c285c88154e13c8f6abe76d423ac20625d203a0405515cde4122708011201011a20925fb91059591774f00c6811e744444d43a09871a3be861325a404e0e1c406bf12250801122101ced5a0edfbcbb8e31f8bb407ee4b0adb3589d4212526f21fa96902a6cca63e39122508011221014c577d59f564ec54507d8161e5b79d5a411f2c4b1ddf46610d8b5c85c77c0abf12250801122101ce89e96deed4edb3294ee79b61ef950658df0430643d7f8315f39328d782dc9f1225080112210153783e42e17fc0eb36a3f982a3fc1ddac5481ce0f32dc9c2ccef4242044c03cb122708011201011a202b71ecd92886968bec1e3fed4e38fc54970c5007afa577c986316ba7635e355b1225080112210145200a18f2534749cbae17b829c2017b9c5609f480f091174df38f22416796c0122708011201011a2025f9d3d32e3ef8611589c63760b1a0e529028e17fbb1d557f8d753744dd56a8a122708011201011a206cb1efe64f6a744a6df7eae9b5e4f3f6c8eace5fd8e62e39ca2efa55cdbd7716122708011201011a20d978e2a4250873127c9f23c6424683557785624be9d66ccd62fa3404c4a743ec122708011201011a20f454e11d5c5030462b435f2677d7514c96629d4cf97b6a7e7c6a0cd894e3bba912250801122101124e9eb2c6a0ec7f465527caf0d9f3bfbd26568d78f5dcaafac599ce22d59eef12250801122101e7fa82c24f93c1690f3e564b0a3f1b45eaed3c8f06bdcbc59a1fa416d7d5c820122508011221019efbbbf59c7ed77a5d3dc61b8b6f77178c2a2ed3ba6dc7fa61fffde02d19d3ee1225080112210185e5a25bf7906404130d2b57db9e68d8192919cf0ff186e694b1b019fd58ac88122708011201011a20388c501b4bda0c64c0a85d74d9ad1e7608de52b067a5d893ad83042aa0ffe5ad122708011201011a207b652e83c4d49c7f9476079ebde01742b61f724d51b8550d44ad2fa16e7d1044122708011201011a20879c5704e1df82bba5645ab26fce2d587d5a6f02079d0f43c349e9a4535672b8122708011201011a203ad0761e4792bc789662828ab3983b31f4a93acec2f90306139bf8f85269a30912250801122101afa7971e8ac0609e2709ae13f218c83c632264c318291b2327c1e163305be47b122708011201011a207a4bce1ca4d1704903682e21f34eee82624907005e9ddd04b9fb084a87ba90d4122708011201011a20fa1881d8ea106faf335443cf0d5d84527c9dd421261a90b47ef3329bd9e843021225080112210189ac47f9679cb5136d295b78135c584eedad4123f92fcc94a64042e6823b0d6d12250801122101b6932938bdc08d6c13168390915b0b25d3c1d7951f3c61fc1c8fa49aa83cd4cc12250801122101d1995a2c320859d1bd9aa030124ab0517efe6944199877d95e46f6f964b5675612250801122101f881a68647ce50b69bf6be83bae146818eff71f878fa8c4c029c55b5b74dd9a3122708011201011a2054d77251f3b9f9c182a697d6f7edb95df5c43b38fed17c1974de6173efd979b412250801122101881c6394330f1602650a5226eac69263760f6303c6fe57088eae4b7d2809c0fa122708011201011a2009584133a128b5cdd27d1902cd73bb26ba479f1465a45990745e1bfe1c0b364f12250801122101bd64f703ec247f0d05a2877cba5fd9054f906c77fc3c00748f9c70a293a69fa6122708011201011a2077171562898b61be985cac22245826cd3799c3f0d9e0c09b7bb189e507c9edc5122708011201011a2016755dc9c634c80daf33278047ecbb82c8c542f71f144df20174128a3c904b76122708011201011a20eec0fe7410e008660595e66453704a4b2cad1cbb0a2420587b671bcaad1a8fc412250801122101414e30f086e99fd26c84b8fc04a4e1c38c49391eb921a588b3da49266a4a81f7122508011221011218b892bcd51b07b3b3850a448137ae28d1069d52bfbdb4a089c63fd40c368e1225080112210133568cec91245ccfd99f706c0563da48ce20cbadd2b51e1321ca54d045a9eb69122708011201011a20387d3570b66fa4e33a67e0f9d1fae695ab443a2f390e85b33a9427e546a8aec5122708011201011a2072c11303abe2de4843f725e40b00c9a2dff73ad8d4154521023ed8c8739ff68d12250801122101fdbceb97af12f8a1b83c3b759c1fc825e88c6090dc0d6b9caea961f68dc72c87122708011201011a20d3ed620e0d585ba618305f599988e15462ec48a24f3ec7ce2a00dddbdab7d09312250801122101668e2886cb8f73ae5295f09f20c316c21d7e633be2dae7b5a01b7c01d2830634122708011201011a20cc864565c845b4b53f083f69dec68438cd7ec8b848d485ffb6e893fe23f7e9481225080112210164ee33c6aa4304be656d80def8076791f2dbc6b54dc0fa997b0a9115747946bc1225080112210177556c07ad032fd183a1978441759260a29024cad7bf3740a5ee6cdd430ce91b122508011221017c057e865671e80b6dcda27d853772a1dff6fb41a6faac19af955678c77777b0122508011221015703835cdc085a48af6a648f43cf8420e4c81b503bd027c04211ef214b16172612250801122101315cd538f57e740ae25dc64464e6d7e1046a8c0777d9bec2e43886fa93e806a91225080112210124658892b5eb1979411d9bd12c643c70ccc1b336019df99471052dbca80aadd61225080112210142da6f06c33256fe77868c5812f6670713cae0b316425a77095a4b6166144e11122708011201011a20912a404f9b2dc0f3f92bec59ce1c9fb4c996a7170ada989eed88ce99628d17b8122708011201011a20d4eb294bdcea1065c8b24d57b4d1cd26b78f5345876907eda5eadb3e3976711c122708011201011a20160954659cb302bdd5cdafba68e113d9722394d9123a9cad87d7f128b0ce82c8122708011201011a20dd3fb99172a19ad6216c1c37aa45454d1803edf2f8e7dad77183928e017d9b8d122708011201011a2094650fcc185f666d229c717f56d44c0f40e96edc97dc22241c12178bac1b7c2812250801122101081c87cf7e23e1684a1886c0b22632f781bfde116fe2532e9256745f387811fe122708011201011a20fa6fa443a12c046fde4c437512f93fa6298ef6caeb1a99a01ed4ec062e5c2cfb12250801122101027b83e2628c39fb8340f33201a369fd6829ab6bf8e377bcde10412edbe5d9cd122508011221014f7ff1a0ef376fc76fe17953326045fc55d15e0042bd2160a8ebe01707d5a010122708011201011a201bf04c90368e4d72789b28f7b92bd582ce1a57a0f7cca50354511301fc360954122708011201011a20cb212bf4e11cd0a802dac501b71e877a669972f5d5e42c872ca9a7212ce79f25122508011221010b0dd000cbdfaa449f6356d4c710f88fece010774a9cc37dc656006b6c57577e12250801122101d60ca8a578c0ff7c0ca1024e5f66384ba4b8d85b6eda74f9464a43802e099391122708011201011a20d48ecb49a8205bf745d2963dd049a18b1db6ecbb20804d3b082c35f223b45f1412250801122101781d8d6f9695c35e68f320e3c2c07daf4c2fcfc5424527eba12aaf3a5dee8cc1122708011201011a206a6a5ce23cfb2174b88722a33bebc75e6b19ddc2391b973765032589793e32e0122708011201011a208894e9af93c88db14468a9c521af8e9894dd83079685a9f5d7a96ed4354d736a122708011201011a20e130943aa2036bb38beb3a5a8c0adf3530e8faa8aa592631fab0bcdd4bdf3472122708011201011a2012e560a1834e04950797d61ad16ddca9afc18c7979b5b9334608d04dcd870c69122508011221013be828dff60654f87ea63d50ff15c8549c2f92f8091cdaf0c579c24e00dde22c", - "root": "91343e9496c6b33823f631cfd502fe1c3c606bf9688c45e7514afe7401790f52" -} diff --git a/testdata/tendermint/batch_exist.json b/testdata/tendermint/batch_exist.json deleted file mode 100644 index 06d37439..00000000 --- a/testdata/tendermint/batch_exist.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "items": [ - { - "key": "71544275733330426a6254344864584e59364a67", - "value": "76616c75655f666f725f71544275733330426a6254344864584e59364a67" - }, - { - "key": "7054645675584936387545696931327a5a6b624e", - "value": "76616c75655f666f725f7054645675584936387545696931327a5a6b624e" - }, - { - "key": "35774a5669746a7257514e5a6e73616874597a71", - "value": "76616c75655f666f725f35774a5669746a7257514e5a6e73616874597a71" - }, - { - "key": "725233693170586650596563454a527256584d74", - "value": "76616c75655f666f725f725233693170586650596563454a527256584d74" - }, - { - "key": "613252684b58496641766e784e5455463877434c", - "value": "76616c75655f666f725f613252684b58496641766e784e5455463877434c" - }, - { - "key": "5339665556594d4f4f4c703638644b674f73306e", - "value": "76616c75655f666f725f5339665556594d4f4f4c703638644b674f73306e" - }, - { - "key": "6c764b71614f5741317847556b6e754833496e78", - "value": "76616c75655f666f725f6c764b71614f5741317847556b6e754833496e78" - }, - { - "key": "6a6c765a6c32454d764a523278574579756d7442", - "value": "76616c75655f666f725f6a6c765a6c32454d764a523278574579756d7442" - }, - { - "key": "47495a62347a37614532623558366d3541336d35", - "value": "76616c75655f666f725f47495a62347a37614532623558366d3541336d35" - }, - { - "key": "523576614c444c634e6a457a6b7635714c4e5a6b", - "value": "76616c75655f666f725f523576614c444c634e6a457a6b7635714c4e5a6b" - }, - { - "key": "44596b634a3356763071575173473862366f7446", - "value": "76616c75655f666f725f44596b634a3356763071575173473862366f7446" - }, - { - "key": "44596b634a3356763071575173473862366f7446", - "value": "76616c75655f666f725f44596b634a3356763071575173473862366f7446" - }, - { - "key": "37595545704b5544694939797466516561444844", - "value": "76616c75655f666f725f37595545704b5544694939797466516561444844" - }, - { - "key": "35586a4b75714a67435474653270646d524f6643", - "value": "76616c75655f666f725f35586a4b75714a67435474653270646d524f6643" - }, - { - "key": "69754d7173536373626875776c41765733457732", - "value": "76616c75655f666f725f69754d7173536373626875776c41765733457732" - }, - { - "key": "4b5031645a39527769454f505a57694173693657", - "value": "76616c75655f666f725f4b5031645a39527769454f505a57694173693657" - }, - { - "key": "474570536d3146534a49543032346f7945313253", - "value": "76616c75655f666f725f474570536d3146534a49543032346f7945313253" - }, - { - "key": "556676704e3364364e65524b386254476337746e", - "value": "76616c75655f666f725f556676704e3364364e65524b386254476337746e" - }, - { - "key": "664c37416c75756159746f4364584c507736534d", - "value": "76616c75655f666f725f664c37416c75756159746f4364584c507736534d" - }, - { - "key": "504c484878463467626b42314e4c535749386155", - "value": "76616c75655f666f725f504c484878463467626b42314e4c535749386155" - } - ], - "proof": "22943a0a500a4e0a1471544275733330426a6254344864584e59364a67121e76616c75655f666f725f71544275733330426a6254344864584e59364a671a090801180120012a0100220b000102030405060708090a0a500a4e0a147054645675584936387545696931327a5a6b624e121e76616c75655f666f725f7054645675584936387545696931327a5a6b624e1a090801180120012a0100220b0b0c0d0e0f10060708090a0a500a4e0a1435774a5669746a7257514e5a6e73616874597a71121e76616c75655f666f725f35774a5669746a7257514e5a6e73616874597a711a090801180120012a0100220b1112131415161718191a1b0a500a4e0a14725233693170586650596563454a527256584d74121e76616c75655f666f725f725233693170586650596563454a527256584d741a090801180120012a0100220b1c1d1e1f2021222324250a0a500a4e0a14613252684b58496641766e784e5455463877434c121e76616c75655f666f725f613252684b58496641766e784e5455463877434c1a090801180120012a0100220b262728292a2b2c2d2e2f1b0a500a4e0a145339665556594d4f4f4c703638644b674f73306e121e76616c75655f666f725f5339665556594d4f4f4c703638644b674f73306e1a090801180120012a0100220b30313233343536372e2f1b0a500a4e0a146c764b71614f5741317847556b6e754833496e78121e76616c75655f666f725f6c764b71614f5741317847556b6e754833496e781a090801180120012a0100220b38393a3b3c3d3e3f08090a0a500a4e0a146a6c765a6c32454d764a523278574579756d7442121e76616c75655f666f725f6a6c765a6c32454d764a523278574579756d74421a090801180120012a0100220b404142434445463f08090a0a500a4e0a1447495a62347a37614532623558366d3541336d35121e76616c75655f666f725f47495a62347a37614532623558366d3541336d351a090801180120012a0100220b4748494a4b4c4d4e4f1a1b0a500a4e0a14523576614c444c634e6a457a6b7635714c4e5a6b121e76616c75655f666f725f523576614c444c634e6a457a6b7635714c4e5a6b1a090801180120012a0100220b50515253543536372e2f1b0a500a4e0a1444596b634a3356763071575173473862366f7446121e76616c75655f666f725f44596b634a3356763071575173473862366f74461a090801180120012a0100220b55565758595a5b4e4f1a1b0a500a4e0a1444596b634a3356763071575173473862366f7446121e76616c75655f666f725f44596b634a3356763071575173473862366f74461a090801180120012a0100220b55565758595a5b4e4f1a1b0a500a4e0a1437595545704b5544694939797466516561444844121e76616c75655f666f725f37595545704b55446949397974665165614448441a090801180120012a0100220b5c5d5e5f60616218191a1b0a500a4e0a1435586a4b75714a67435474653270646d524f6643121e76616c75655f666f725f35586a4b75714a67435474653270646d524f66431a090801180120012a0100220b6364656615161718191a1b0a500a4e0a1469754d7173536373626875776c41765733457732121e76616c75655f666f725f69754d7173536373626875776c417657334577321a090801180120012a0100220b6768696a6b6c6d6e6f090a0a500a4e0a144b5031645a39527769454f505a57694173693657121e76616c75655f666f725f4b5031645a39527769454f505a576941736936571a090801180120012a0100220b7071727374757677782f1b0a500a4e0a14474570536d3146534a49543032346f7945313253121e76616c75655f666f725f474570536d3146534a49543032346f79453132531a090801180120012a0100220b797a494a4b4c4d4e4f1a1b0a520a500a14556676704e3364364e65524b386254476337746e121e76616c75655f666f725f556676704e3364364e65524b386254476337746e1a090801180120012a0100220d7b7c7d7e7f80018101372e2f1b0a570a550a14664c37416c75756159746f4364584c507736534d121e76616c75655f666f725f664c37416c75756159746f4364584c507736534d1a090801180120012a0100221282018301840185018601870188016e6f090a0a580a560a14504c484878463467626b42314e4c535749386155121e76616c75655f666f725f504c484878463467626b42314e4c5357493861551a090801180120012a0100221389018a018b018c018d018e018f019001782f1b122508011221013c66b98768e9f2c6e79154b3d4539e42b8a0547a1ba2dfbe0257c8e79f721c5012250801122101bd798b8d9496a508683b1c434e7cb5246f795fe6bda14c21ba46fbe554ea35fc122708011201011a2038306339b7e90504b38f1156fab7d0a2b11a8262207bf9b52ec5e83573adfaae1225080112210128d33e344bf44f2273df26ecdbe573208168a209ae490ee4f6c1bde2675fd77112250801122101a987feb7ef02d237d42ef421bef06d194d97cb413f1a26bff81b0a5082c6b603122508011221012d9b280adc4947e13055167a38d30fff246271cdb72252bfc1c157f21f8e101812250801122101f89412bebfcf54bc2148c322f1a13e399582e67a42442a9a56f86b8785f5ab0112250801122101fa3b2476fa89c549ce216b23e5dd9e6c836397dc4448c02ad2d778784b21254312250801122101bc5e5c62af96d4354fd36963a96ac28649af61cab33420623a11b04a64a2c4da122708011201011a20e037ad1cdac94b25b49313cc43b320ec0e9b3fe1693221be7eb2d54ec44de370122508011221015ac8fb4484285d1f50bbf1546c4f0f1b3cab858e53fa8db8fe946282d6a141e51225080112210168dc363dd101d44eba6d0d459f2ff8b1a1e649c86755cc79ab21e64c78eb0211122708011201011a20cb45838e0a9db93c6d99195e8b77c0821d07045114f29ddd01c5a4fa7441789012250801122101307cd92662a78654dc48a1f54e677cb07ec429f224c7b8feae4ebaa2ba319a7512250801122101915ba7af4a32e6d7ae14babd6f40b384043c07ca6cef48b7ac284b723109e7d612250801122101c9dc641aa87226172f2a74bd319c07abc5407ab7ae64eccec6d20785e3c1b120122708011201011a20fa4547fb73db6e4ddb1f0723691faacc6a50600163de439e68a4dde441327b1d122708011201011a20dd0684116b03dda9fd1028ab813fd21fd6e917022ce21c5bbabd1e53e8766b66122508011221014b4f9b7ec1420fb45a3d2e5619f070fa0212db7587b0076adacd2b514b488255122508011221012cb662aabf407e317c8c63bc3d8dcccd69b3d3f0dc9d8e4ff9b1347b4f85749f12250801122101306361c39c7dc6a5aaa696808762ed71a77fa794023c25acb6117ce8f2d83766122708011201011a20d020aaf16a07f88ca9b8b5ec57716eb24a20ea6b7d29f6ec04d0a9b97c72b9f11225080112210155c5c026aac2cfa91cff5d379544e1623b6f02073e2ab2e8f413e88398a9c390122708011201011a20b85b0d27d520710f0a73a92debf5897d4bb57ca2bde4cb93789dddb00d4d4f4712250801122101a187dfbb58b06dcd36c12d61dbd2c53f399f832577dc57a97b92e1c6326306ba122708011201011a205dd69adca96a66f6e952322dc9e64876ec7ecf2c9a265c4c6dc0d55116b06171122708011201011a20f4788ba1b538bbe6448b6816a6efa1a327f8449c17d2259a3196353ee79ea9e5122708011201011a20cdcf138b5ecdb1fdc580c98cfb755c89c505cf99141f81d12d86d2978d0fc5d1122708011201011a2059bd438d25f2b77989890d41ceb273132ddeca7380d383b67947c173dff1d913122708011201011a20bf50cbff7263e5d8d4cba164696ba321443216508f7e74a36e527801b908c99212250801122101dff72f63a8cda2c118120c34a06fcbfa115f8a67c8458da05aaee638b5b40b96122508011221012fc517036c31d3e36dd53d1df243aa64cf267e9f230a13b44050f325114bc0e8122708011201011a208a94c7f9858baed2124148858ed2e6b225c7dae7632d2ec22617360ca2c0ed53122708011201011a205de8124edf8cdcb47b9bc1258415380f5465c55887654b93569857dadfaa88a2122708011201011a20564c1316c40e8f4f94c2b7baf9a4ec68ebf313af5cc81634d9341685e16d92cd122708011201011a204f06e67c00a57e0c934610f4364c12ba7583f53fd3787a9bc851126fd25248f8122708011201011a20f86fca56c7f58ab2ded58a92a5ad9e86411d0dd0ff0172eda15fe8accb9503bb122508011221019b3af50a505d795cf9daf66a771d0cf5237f2e5f2bc1d363f8925e5b05249823122708011201011a205bca712d7645ca5943e74fea3609504a5f5968e25e5a025c39a93bf1cf9838ba122708011201011a207466aef43f4aaf9308c8c95b09d252105c252f3cbdfc75f83d9b33502534378e122708011201011a20146c7a32580e554b6411310ef3dbed9cb9b94c2e0301e9340ae2078662384ec2122508011221013bb6227deb197939fb448ed3e8eb2ae26c465848227a66810810934f65493823122708011201011a209c6c2ecc038ebba990b0a6cb65c1d5896df00f0e84961004e26cf9d290b6e1e212250801122101a4bd5bab3eaaa969db94df259d0621d3bc84fa972d6bbb2da2159a0175b2f92012250801122101ef9dba2cfb4d81b8b3134226a4c037e9610b1f4157c9f4d11b72f5b77e9d5636122508011221011b5f6c235ed0c6d4018a71e1b15e86d9e71b73b17acb47e9d1d7b32f5daae340122508011221014448cdf467cc6fc349647c10f1980ba03f7d665fc5e6d9088d6b47b1a2cdcee212250801122101c329962fcbc7a49c8b63c62510388177e13126162d31d247c5d9113455c5780e122708011201011a20f0568e34c5110103642e8d5c7edf62e88bb4deb840d1852876a690b3e6ef7ef312250801122101b7c45db6b7a441ac2325e64404341878cfe0bf00b13ecee17eebe0969b4c330412250801122101d4d0c2854ac8880f29bf4b6c50a4569a6918981ac5fdbbd809cd4480b624be7e122508011221016d60492fa26a0b137f8ccdc7314f49b1521b35b20e10b586cfbfcd35663ebdb6122508011221013ec39b3ace4faf80e7878ee1106f023b475dffd960fe29017c48b7d748312d70122708011201011a2089f0390422ae2a8548451644274ae3df75079b1ed05b9deed338fea5afd33e95122708011201011a20e8754aaf93a1b90209bb5b8457762f4569bc72c3ea5dc9fa4abaf5220e4c6d8b122708011201011a2056b865db1140487ebbb26b647b3eb2451b257b1d9047f7cf6343b31c698bdd0e12250801122101a37820183c87c5cfe08af608a9d37d1a5328da8608b854a04bc017be3148e41912250801122101604a067dd19c016197a51ed91cb4f20bac53712c37219a851470a4de7982e0ca122708011201011a20930c0e7a4c914fa01c00427da1ca238aa289c8d87e7a96e7bb006267eb66f97a122708011201011a20333b1246ecee6e17d5b44ba5adac203f08dc48dae3260a9dc953a61c428454ad122708011201011a206bbabef75c74818dbaa466d5c3607a4b3cc5ca1094ee6e9cb32ad56c8ccac808122508011221016f99d501c70511564c43a09950a3779ec63664e20efbfb9a375faedccfb2826912250801122101335d5d7573f1dbd71f1f983507a0b41cc942feafeb63551c305d0b88d9c30eed122708011201011a2003f9f136295bcf4d99892bbac967b9ebf80f180aa0cbb966011f6b5a333b45de122708011201011a201c82741b9fb7f9aa5c137d166ae529e4fadb7287610511183cbde31e4f9964e212250801122101b819721e58c9277b900f9f3bfaa7a0b89ed09bc853f0647e95877f6825ca17611225080112210159f30b00ef878612d5ea61d88df626878989e39f3576cb4291620dca2ad2c3e912250801122101d882546c4cd5ec1df56fb4bec9cffb66400dab63c5097acb2ee748f982db02e512250801122101ad8460a49813866780347e6d791009006c511c87d93656cfc57351db657c2569122708011201011a200ada92af88c254e9e456fa10b416688b8a878c3ba7afb33f9bcd59c0ec857814122708011201011a201ce1f3153f0bf8af8867a5a7bc50d676da8c66eace9caf5c6ac4a4048c598c44122708011201011a203f0b78ef66e603d55fd8fe18375a97e8c191b8a31dd2aab35cb50d312d8b52c81225080112210173edc419851415ef7eb7ff810b20fa3942d8464f53737119198ece48f1f2a376122508011221017608018bc984bc1c95dbd00c2eac1534b3d2520d7be842ed09b28cc3dc710a1512250801122101d6782016859d6de889a142e70adf90020fbcc3d376030228bae5285e2e4a257b122708011201011a20f0ca9d4dcb3ebf41f32b4aa2053002e3635bd477cc052f307c1554d6531e28d712250801122101535753217e3dc2d0b1df23764a87c614ce780a3c6f92ca15ac9d844d8f6aff0c122508011221018e36e7bcc28dfc537447bbbc067a7a1805141fee58b7230813f4658476d017c712250801122101b0e27471ba28cc40d2be4120f06e404f2ba331b44da302267e3ab1dfadacb939122508011221017258fd7fbf64784e660622dcb36d07db775bda938cdbdccc44f7ff90f72274d4122708011201011a20d895fb8e54ad5820c0b1c8752fc45da9400b38114730c4bdddbcb4594b94a84b122708011201011a200ea02d00cdd6f02564e22fb96a7213f2999a05e1bc844c386ce912679576977912250801122101dd9da5eaa31de432107f35b118c2fe83b62575e9973742394af55cc4014c22f4122708011201011a208acc31e364201b4b05a4489aeb2d32d462a06b2fd02b7225e74b0d26d6d15a35122708011201011a206a8231597740bf7fa49ba49fcb9f35946c59d38931dd809bf72d3c523138c2df122708011201011a209c2c5b2559bca3d1b92b8cb711e44d501f64f1540757de58f1b703a2b40f4ff212250801122101f4ceddffaebe3004a27c9d6964136860597074126feebb70fdfff8afbe01e61c122708011201011a20beccc37d6808d8022ed02a06a3b6af209aeeb2dc089664797e44fbe0afa37f60122708011201011a20620668ebae00a6aedc742a08b47572ac89db37cca1e41edce50c3812a7b713e21225080112210186be8eb61dc40f8f4ba91f1894904dc42200e30cb1eac5d5c2ed2e6e44ac2c0d122708011201011a20bfb0aef633f9af8c0929e26da708464f0c8e6a49c9dac1b1e1545aa85c73c82f122708011201011a205bfea828897aa89506f1f3a5fe5170419aa4c72cffbb331f18fbda02b7cc1ede122708011201011a20e17f2904dad5a77a35622b44cadbec0918d5d8978dcae0dc1f2bf784d00a852b122508011221018ec3d7a7ce4992e37c73260166c1bf5a8798cffacd4a33f63f7e5506d61278b8122508011221018495f99789135bc9754a4ccf6a1e5b5f868c3bec175364364a19845213f3a6231225080112210128c67d06ae015c19c606bab10f37843a7e3d4dfa3349c51b0a0cdadb3a4c830f122508011221011d736ca9e496ece98dfd38ab0ac58f1013d6eec544d697a51706df8721b8daf7122708011201011a208a8b8549c9a9c1b2523d8a7722a0ecb5b7b3a807531c73084b9446750a7f71a912250801122101c077dddb73d79310782c09007b5674fddc80028df2232c8c948c388c4bd141f2122708011201011a203b1295c42cb83f8237d5cf64af0b0a294a5912263755c624138f767aa6f76edf1225080112210103e68a48f6a2f0e430e7c5872545dc87c3ec501e53e9857e575a6ab49afab3131225080112210127ee853af3ee9e606417e04f78abf3d74a7edfcad2245ca3e73b0a6c999e7943122708011201011a204980c586efd90cad797f418a4f104708c65487fbfec53ceb0d8e8ed0c163b44a12250801122101003a5be7e99043c16c758ccb7425aab7ece61abffd27acb3f66e4c7cbdbae9a1122708011201011a20d96707ba73510a3b3d02df40961086f0a6b2ff75fab9e46e059ef1290b5d5d311225080112210132cffcebf259ce04c129ea0d3423106ee3be0afc4b104aaf27239fb78083f2e212250801122101754df88ac21c2056966766c2f3fea1f69cb6b5270d250fcf07408d5839694914122508011221018baad9eedd7dc0606ff5da27734a6b9e48b6093c333f67ca6c2c5573a3bd22d2122508011221019e0bc3d674a9de369f8bfe0da1a1d46a298ce8c3b1cf834b69c0745bfe54c2b3122508011221012aea7b8347057fa4a52c41d2647c6ef2508e2438e6fcacc690404c26f1fa595a1225080112210170cc3976d832727f339e78d80b942aec187b2739bdc896dc3aa828bb50cfe3bc122708011201011a208ebf0db81b6878475c106cd750720b22df9f7ffe1a55b44a7b6b6c225a2f523c1225080112210122f91561557b261193d65c64355491353f9fdaf2d215d65747256791d43703d8122708011201011a208f5c274bb9f42d6a8c19c9e58b1d40a78a23214d1abace2418472465da3e37af1225080112210123efc538a5cc541d3d4d4315259daa378c97a5cdcd020d8b32ea15d88399a323122708011201011a205d5741494e853a9aab2f7d738172dd9b1b8691ecf0573c5496b085192198185b12250801122101b922e98ccb0f9d64a6a50dc86adfdb11bdefadb17cc1f353282d5f8800c4c4ca122708011201011a2086d94d894ac5444b8d69cda2dd5c064f94de932d04dcef1da2d5c53d5b35b8a01225080112210114077672ade40c118278d4225935bd8e92ae037178b0ac656451c48c8a9bd21d122708011201011a2081b7b4f9f8e28f9c616a9eadf6aeb810b41a0fd306b8e93397fb34fb56cc0527122708011201011a2047effbefb356218063e0c7cc5171e9e21ac4c2df349f0a553453fcf1014dd42a122708011201011a205df064e8f98ba023d4b197e25a9945cd3e69ed02f67ddd1dc802da88e049cd14122708011201011a20ea7410896f0ff5f146c1617fb65a49aa99e8024b8fbeb446136d66c8a9978bc1122708011201011a2007dffa53ca2831ed7c88516d1c0b10a5330cf24c1f5d1571174ac882748797ef122708011201011a208e248b49eb6886e5b47799c5b35956ca5b305c30b6f12f82893970bd43be7935122508011221018c37ecb2195ec08f60921c31c8358564c504bf1f58eb1e78500e9055c667a9cd12250801122101b58df83107c63fb5ce7544cf44f1c6e6bf8f7a5c190e4059a7c747bbbaec31421225080112210180b4ebef3c9b9087ba49ea67e5f6f732f2ebd0e7bba67ba138b23736cc84c62f122708011201011a20f0da0679ba823b122ea51d4ead37c5544047af3d6e290300bc1e80431c9377921225080112210126ec559c648613c0eba05c843227824ab9500985f4122a47b9d3749da73cabb2122708011201011a202d5ba65e2059dec8d2f49ea644879cac5eae75aac58240757c262ee417d783e7122708011201011a203e6ea0c3811f29b00546c783d8fc2d41fa970d1127dcde274f4873d957b5141312250801122101de59a7aca7348b4de08d67733d9090746d550d9078d5bd712c0d186e60de0094122708011201011a20d00102b0366a1f8d75bb512e36d62653bc4b34d1d38ef42e6f9c1353f7702b7212250801122101375667dd721d2068bf2d53d1a2cd7a564365c6f31e1e6b691c3715675c0672b1122708011201011a20e97e535c83904cca052b1ca4c9f6a3ce8e0344e44f0e0505fdad91f3bb159f86122708011201011a20f614a70688bd62199bfc3742121d05274bea276c566ccbf064f6a734e6eeee02122708011201011a20df04c759eafe59a722550064c4f3d658e269c2fda4050d1329f78340fdad26d1122508011221019d9e07da907b8cb82a6bb58aad3dc54d052ab6981097bf0b6dbe9f9acc62537612250801122101f986ba994cc24998f7b42d35f8c84ef2f4ab5f2a3fb4ff3960e766ff22b40498122508011221012a3e1ff7b9c966e4da90cc62bd0e65a39f35e5a157e3d215434ec7253899621a1225080112210127025ba7f4d9a0e58c84ce9bdee84c0cb23b3f4d00555e55fa03715993be5fcd122708011201011a20ef2802f24356b420766a88244cdda21d88b59b0fb23107aa7dec14c358e99f6b12250801122101e1ce27ac572fa0153f83ce69ff1a6a82207b50348f1021525e6a38758f326d8e12250801122101c8f201f95c6e56bc86e8cf43317ab49e56460cfedeac8e83a194a6690bbbb0ac", - "root": "3cb56a486c02a81f973fd5f49f2ff657ecc456a3e91802ed94500c6bca950d74" -} diff --git a/testdata/tendermint/batch_nonexist.json b/testdata/tendermint/batch_nonexist.json deleted file mode 100644 index cfa8659f..00000000 --- a/testdata/tendermint/batch_nonexist.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "items": [ - { - "key": "795671466670544248704273646b73724c77ffff", - "value": "" - }, - { - "key": "414f4e6f336e6577657050657931524b5466ffff", - "value": "" - }, - { - "key": "6f756e32584b6245386555546f6c47437472ffff", - "value": "" - }, - { - "key": "66646a7447366f5a597545484868324d384fffff", - "value": "" - }, - { - "key": "7354675a384b6c476156754756634b42584affff", - "value": "" - }, - { - "key": "647245657473766a71354b66477665485947ffff", - "value": "" - }, - { - "key": "724e5861615a4b66653441595a3767556534ffff", - "value": "" - }, - { - "key": "476d736477654a4d3535614a595839535465ffff", - "value": "" - }, - { - "key": "6a47394e585a42734a6d4777716477727256ffff", - "value": "" - }, - { - "key": "36614a4d4e43656f63776451535035677761ffff", - "value": "" - }, - { - "key": "6a763568343033784b474f775356496c5150ffff", - "value": "" - }, - { - "key": "4f4f504576314b6a6f48614256654343306affff", - "value": "" - }, - { - "key": "517054467a5136306238424c494834434561ffff", - "value": "" - }, - { - "key": "6c6870664667314556536f4767544b715a52ffff", - "value": "" - }, - { - "key": "336a797653324e306167774161376c756559ffff", - "value": "" - }, - { - "key": "63556f424633416a513078735a77774b7434ffff", - "value": "" - }, - { - "key": "536471335566373076665949326d66554845ffff", - "value": "" - }, - { - "key": "31777a57645330586a73327a4a6f6b4a7a58ffff", - "value": "" - }, - { - "key": "4a434231616b594b5031644d386e5656326effff", - "value": "" - }, - { - "key": "6c6a3648475a35773949696855684d796d72ffff", - "value": "" - } - ], - "proof": "22ca590ab90112b6010a14795671466670544248704273646b73724c77ffff124e0a14795671466670544248704273646b73724c77494b121e76616c75655f666f725f795671466670544248704273646b73724c77494b1a090801180120012a0100220b000102030405060708090a1a4e0a147957363378494d6379317376626b6f644c586e31121e76616c75655f666f725f7957363378494d6379317376626b6f644c586e311a090801180120012a0100220b0b0102030405060708090a0ab90112b6010a14414f4e6f336e6577657050657931524b5466ffff124e0a14414f4e6f336e6577657050657931524b54665742121e76616c75655f666f725f414f4e6f336e6577657050657931524b546657421a090801180120012a0100220b0c0d0e0f101112131415161a4e0a1441504356646674536f724776683065424d653469121e76616c75655f666f725f41504356646674536f724776683065424d6534691a090801180120012a0100220b17180e0f101112131415160ab90112b6010a146f756e32584b6245386555546f6c47437472ffff124e0a146f756e32584b6245386555546f6c47437472356b121e76616c75655f666f725f6f756e32584b6245386555546f6c47437472356b1a090801180120012a0100220b191a1b1c1d1e1f2021220a1a4e0a146f77477a677a66534d7450363956543950455655121e76616c75655f666f725f6f77477a677a66534d74503639565439504556551a090801180120012a0100220b23241b1c1d1e1f2021220a0ab90112b6010a1466646a7447366f5a597545484868324d384fffff124e0a1466646a7447366f5a597545484868324d384f5133121e76616c75655f666f725f66646a7447366f5a597545484868324d384f51331a090801180120012a0100220b25262728292a2b2c2d220a1a4e0a146666455450754e614a4e595362346e6d34774751121e76616c75655f666f725f6666455450754e614a4e595362346e6d347747511a090801180120012a0100220b2e262728292a2b2c2d220a0ab90112b6010a147354675a384b6c476156754756634b42584affff124e0a147354675a384b6c476156754756634b42584a4672121e76616c75655f666f725f7354675a384b6c476156754756634b42584a46721a090801180120012a0100220b2f3031323334353608090a1a4e0a1473546c6c3036524f336b6c38617142316b375838121e76616c75655f666f725f73546c6c3036524f336b6c38617142316b3758381a090801180120012a0100220b373031323334353608090a0ab90112b6010a14647245657473766a71354b66477665485947ffff124e0a14647245657473766a71354b664776654859473266121e76616c75655f666f725f647245657473766a71354b6647766548594732661a090801180120012a0100220b38393a3b3c3d3e2c2d220a1a4e0a146475496e6a58526549715643786e686836614343121e76616c75655f666f725f6475496e6a58526549715643786e6868366143431a090801180120012a0100220b3f393a3b3c3d3e2c2d220a0ab90112b6010a14724e5861615a4b66653441595a3767556534ffff124e0a14724e5861615a4b66653441595a3767556534616f121e76616c75655f666f725f724e5861615a4b66653441595a3767556534616f1a090801180120012a0100220b404142434445462021220a1a4e0a1472517261586f30394d3566423033456747523059121e76616c75655f666f725f72517261586f30394d35664230334567475230591a090801180120012a0100220b474142434445462021220a0ab90112b6010a14476d736477654a4d3535614a595839535465ffff124e0a14476d736477654a4d3535614a595839535465626f121e76616c75655f666f725f476d736477654a4d3535614a595839535465626f1a090801180120012a0100220b48494a4b4c4d4e4f1415161a4e0a1447704c3264526e504f3953703749416743784a76121e76616c75655f666f725f47704c3264526e504f3953703749416743784a761a090801180120012a0100220b50494a4b4c4d4e4f1415160ab90112b6010a146a47394e585a42734a6d4777716477727256ffff124e0a146a47394e585a42734a6d47777164777272565a4a121e76616c75655f666f725f6a47394e585a42734a6d47777164777272565a4a1a090801180120012a0100220b515253545556575821220a1a4e0a146a4835744a346d446c703356494869773542316d121e76616c75655f666f725f6a4835744a346d446c703356494869773542316d1a090801180120012a0100220b595253545556575821220a0ab90112b6010a1436614a4d4e43656f63776451535035677761ffff124e0a1436614a4d4e43656f637764515350356777613167121e76616c75655f666f725f36614a4d4e43656f6377645153503567776131671a090801180120012a0100220b5a5b5c5d5e5f60616215161a4e0a143663316542594e387146625178794d354e677a58121e76616c75655f666f725f3663316542594e387146625178794d354e677a581a090801180120012a0100220b6364655d5e5f60616215160ab90112b6010a146a763568343033784b474f775356496c5150ffff124e0a146a763568343033784b474f775356496c51503430121e76616c75655f666f725f6a763568343033784b474f775356496c515034301a090801180120012a0100220b666768696a56575821220a1a4e0a146a7762594f4248676c6c4d3056526e6577547234121e76616c75655f666f725f6a7762594f4248676c6c4d3056526e65775472341a090801180120012a0100220b6b6c6d696a56575821220a0ab90112b6010a144f4f504576314b6a6f48614256654343306affff124e0a144f4f504576314b6a6f48614256654343306a7854121e76616c75655f666f725f4f4f504576314b6a6f48614256654343306a78541a090801180120012a0100220b6e6f7071727374757677161a4e0a144f4f51633455316f526f4b566b4974354157744e121e76616c75655f666f725f4f4f51633455316f526f4b566b4974354157744e1a090801180120012a0100220b78797a71727374757677160ac30112c0010a14517054467a5136306238424c494834434561ffff12520a14517054467a5136306238424c4948344345615930121e76616c75655f666f725f517054467a5136306238424c49483443456159301a090801180120012a0100220f7b7c7d7e7f800181018201830177161a540a1451716b334747383757384857473576627a794d6f121e76616c75655f666f725f51716b334747383757384857473576627a794d6f1a090801180120012a01002211840185017d7e7f800181018201830177160ac70112c4010a146c6870664667314556536f4767544b715a52ffff12550a146c6870664667314556536f4767544b715a523751121e76616c75655f666f725f6c6870664667314556536f4767544b715a5237511a090801180120012a0100221286018701880189018a018b018c015821220a1a550a146c6a3648475a35773949696855684d796d725931121e76616c75655f666f725f6c6a3648475a35773949696855684d796d7259311a090801180120012a010022128d018e01880189018a018b018c015821220a0ac90112c6010a14336a797653324e306167774161376c756559ffff12560a14336a797653324e306167774161376c7565596b6e121e76616c75655f666f725f336a797653324e306167774161376c7565596b6e1a090801180120012a010022138f0190019101920193019401950196016215161a560a14336b446b6a594a4559566e77654a314d4e39726a121e76616c75655f666f725f336b446b6a594a4559566e77654a314d4e39726a1a090801180120012a01002213970190019101920193019401950196016215160ac90112c6010a1463556f424633416a513078735a77774b7434ffff12560a1463556f424633416a513078735a77774b74345370121e76616c75655f666f725f63556f424633416a513078735a77774b743453701a090801180120012a01002213980199019a019b019c019d019e019f012d220a1a560a1463564b30446e426e575a6f4b5175737879697971121e76616c75655f666f725f63564b30446e426e575a6f4b51757378796979711a090801180120012a01002213a00199019a019b019c019d019e019f012d220a0acb0112c8010a14536471335566373076665949326d66554845ffff12570a14536471335566373076665949326d66554845494b121e76616c75655f666f725f536471335566373076665949326d66554845494b1a090801180120012a01002214a101a201a301a401a501a601a7018201830177161a570a14536f336646696a586939316e4c4c323049424741121e76616c75655f666f725f536f336646696a586939316e4c4c3230494247411a090801180120012a01002214a801a901aa01ab01a501a601a7018201830177160ac90112c6010a1431777a57645330586a73327a4a6f6b4a7a58ffff12560a1431777a57645330586a73327a4a6f6b4a7a584846121e76616c75655f666f725f31777a57645330586a73327a4a6f6b4a7a5848461a090801180120012a01002213ac01ad01ae01af01b001b101b20196016215161a560a1431786e566c49756c425250703052375545646744121e76616c75655f666f725f31786e566c49756c4252507030523755456467441a090801180120012a01002213b301ad01ae01af01b001b101b20196016215160ac90112c6010a144a434231616b594b5031644d386e5656326effff12560a144a434231616b594b5031644d386e5656326e5856121e76616c75655f666f725f4a434231616b594b5031644d386e5656326e58561a090801180120012a01002213b401b501b601b701b801b901ba01bb017677161a560a144a44334a617a6477463034576b73716a746a646a121e76616c75655f666f725f4a44334a617a6477463034576b73716a746a646a1a090801180120012a01002213bc01b501b601b701b801b901ba01bb017677160ac70112c4010a146c6a3648475a35773949696855684d796d72ffff12550a146c6a3648475a35773949696855684d796d725931121e76616c75655f666f725f6c6a3648475a35773949696855684d796d7259311a090801180120012a010022128d018e01880189018a018b018c015821220a1a550a146c6a5a3636696a30795a6e476c7a56444a6d7179121e76616c75655f666f725f6c6a5a3636696a30795a6e476c7a56444a6d71791a090801180120012a01002212bd018e01880189018a018b018c015821220a122708011201011a2013fe2c6d948148d75ef8de6e9b8a8f9d729ea5ce2305a292a7a84127adc0f94e12250801122101b11577ba5114bf06a4a9052b395131e1a0d4bbffc841d5753a875b0ff37bbe62122708011201011a20acce3e53b594d545bd0d4bde42b77f12a9130ed15f5b823b0ebd6e6eadacf49412250801122101b98d6b449ad2e9ded1ec1b494337c7810e406a91edf66dd56fb6ce9fc0a99c9f1225080112210148cd36351be5604357d806686c9f363658039d33965928c80ad0b124e8fe2eb5122708011201011a204574550cd73b627b8d8ee2abab888de0b1afe945b8795277234bb0fafcc0db2b122508011221010f1b8824a08eda841c983a7c9669b3f4149934c92c4fb3dbaf5de55d4e0f1a841225080112210106e2e6fd6126b49af77c9bd4bdfb8ba88751b2dd6178fe5a2a1516f552760464122708011201011a20e53b27d490c6e58fe945f0cc6455eb3241cf9d4296bfbef04d0eb9b846dffab012250801122101c919d5897e24d7cd7e36b470eb852660e0c1fd44665089da4fe738f03065b735122508011221017ed4786f80c6efe2e8103e6ab70d3311e11317b88115945af14926305fda9de412250801122101a593c20420a0b3850368604999f229c62b643cf981e25c048a1c6153b685e0271225080112210148c6bd76922ab7e387d96e99b23e53338e7c8a6ab3764eead3bcbb8b56069af7122708011201011a2072fe56fa0c2e58d09b3d7a03d1ad3e00bea3f0c2eafbfec499db265a26728e4b12250801122101be1b0a25397797aa422e6ab2239dde642e7c38c80375d6a87f7997b5aafb71a5122708011201011a20fe36b92633b7718039068cb22ec2783eb29667537b39346006d21e739b5a1a31122708011201011a200ea36eeb8e0256c89b3aceee882396f671980f4952bba6f6a23ea800c40788d8122708011201011a208cc1bdf742acfa0a6c7c0c584a0d029a3b57aae492b5cfa79def62ff335af65d122508011221019e7aee836395cde9eb8f1a8db929d38353f871f16b81745ae877c8671e3e8c7d122708011201011a20fb95bc9348b546d79cf46ffb7c405e04d0da51c1008c18983c76cd68c93df03112250801122101b7fc2a6d72e5b35f90266d023282809bb19d52ba0f6a55b43bffb52e4a787fef122708011201011a205605c5916c4b2230c69e0b4a3e6103d7b8d018b6272b10c081ad13c6fc1e236a122708011201011a205b99c18829f2d7c770e70075ad71ccf01a848588d2b70968e1815d895dc43948122708011201011a2012f1ed112d42516cd2ffc76ed4f2b3984cdd099bf0a4140692590c664f8f7dc31225080112210181d36fc06c5bc113381f66198bfd5440f9a06e66b63ea3368031faaa56a15ae21225080112210154baa863ad921c2eb1cf445f326cc2aaae1693e4689bdcab342dd5b1e5b3ac7b122708011201011a20b79fe2fe89c3875addaead8f9dfc0d002384f41c2546783c261003f9e66fa7e112250801122101e4f877c5cecb69832c9f9accc916d41fdd7ba3977c059f5858e6ec5dd4bcce8f12250801122101602b3fd368b398116c760c3f428516e42601deccc5ee2702db9e6ab39b28b7b012250801122101288f38c8cb449f9447e9a190d3270bb8e869f004d037e896c5e99226a955b2c21225080112210121fabbe5125a9bafb3ec592938db5579edda78dcc1231963c77caa29359f90fc122708011201011a206d0b0ce2feeeffd533ef44af40d56ff03791315ce3a12849c9f745878175a1e212250801122101e0ef26ccd2ed029fe4e93e0ad700fbb618aac5547fe1dd7f4b44ae68a370f980122508011221017b6fd602fe683350c207632bd635d54cbcc34426287618e97c04ef850b643ce7122708011201011a2016915aecfd7ea1ac4b2106897aac956d06c69f7527d958ba51d6be203c5a3d83122708011201011a20fb261c1a34387195139c933ffe3bda1cebd9c378336086c10674345063e7bbd812250801122101323abbea60d4d79507151c326862220e8b44e8b025d74dde27265fd64607deb5122708011201011a201365255ac41129beac7f2da3111e23ec55aa009af722b814e3c58623f1187461122708011201011a20d2c7f8058a0894c2756e8bb17de752e4ec7586c6c79f4f9c4bb21d7b3589b95d122708011201011a20b6e05264f5c8002c31c02fe8fc915125f69b9fac2294a080bd16207a00215c7612250801122101e9a2bffdfc1f60b2629a0fffe39a32f8f73c05ce6966ae971292ad4693620627122708011201011a202881389e03b301253f6abf7fbb4dce759c06ff53b5d83f03f27d6727cfac2328122708011201011a2074b954efd8dff3364d691aabdb4d868f5bf8131ca918bf16ecff244a88d84953122508011221016b91228395c3fd2ea02815d1df16ee95d8af0999e7c927233d710099280bd61712250801122101e401340c9a31846c5a8b85ea1721debb74336488dacf1682f5c3f33b6d4f0068122708011201011a200f4d514a950366c07d8a6c7d107be1cd8b09d3359c41ed2cf69671d28c5cb6821225080112210145cc46831be52a159b793a03010bd4928fa2ea7e39753421a26020eb711948b5122708011201011a2004a3b4da92f58e3a2acbd9b36171464b1356d45eda3903ece0cc11307365a4eb12250801122101a7ebce7bacd0a60b6a7dcf488ad0b0c05bc7ed1329b441c99736258fa19e4e54122708011201011a20f524a8b6014fef9293b8a2c014758d699edc022c57d859ab8728a8bf25c23d2f122708011201011a2083834fe8cbbffadaab3815b260396064cc1a5a582dbed076987f594f527b8ba4122708011201011a207fc7bfd000a64d01d788190cc76fc05e1345824a5d6abf4a7a5c2975fe0715f112250801122101ef0cca0e2c21c7bd6ca88aaf56b8465d0e64f6dbecb01d4ebff68193f867daa8122708011201011a2005a077466ecfaa65dbc940486ce5da3728f5c01da6648e9af1f1894ef3637513122708011201011a206c77434795c46affa0ba6cb65a3f63984aee5dc968cd579fb0a800a2dc51d37d122508011221019b4c40c041b0b917a17888392b0cff12b5a424757174f4955609d8010ecaaf9e122708011201011a208ed76a428690055cc4a3b4aca425983eaea5270d1296d6b8e634524e36a314e0122708011201011a20611293d33af8556b374a6c2367e9c6f43473026ec51e6ecad373189ef893e7c1122708011201011a2095c71b254eb0976770131b56e8bb4eef106370848f84f099a7884d6c51d36c65122708011201011a209029dc5a341f4935f6cfe2a3520a0e92ff423c5a0322e90afc0af076ad8c8b0c122708011201011a200f6dfda5c0dc7bdb9a2139e3092bd43f363f0c1a270a03f6f3fc37b1b97f5613122508011221018557116a89cebcbd053baf8b1eba452bcc70c098c5f724fa0e1991efdbedf80a122708011201011a2075330a562f8e6660ede09c0a371074e8fd52009ef336c76a0717b8d17b1fa1041225080112210188a524e824edbb4ca9a9030d51587ca37ea295df7e8c2fb8059297f9a5f462d6122708011201011a2074397c930a68b3c15bf0643a3c4757337f49a2243311038fa9de19d6a071efca122708011201011a20e249275f1e637cb9ffb934622f335b03775de0df4360d9e6590865a22cd96b8912250801122101419e1e97f0458ce5a81b14b0c9a294aa6ec79bf4a7eb05cf47d49cd1fb7f8af1122508011221012f982befaa6b40f5c9fe2cb5439bd3cf6910435ea58d832db624e800a64aa91812250801122101a45fbbe30440254d7f2f5576ec472484160be11e584a01c6f18e14a9d99322d712250801122101b3a768e5320755a11a4397b4dcda95701cb7753a94fd9cb104ee5a04c94aff7e122508011221017677597e309b449f5a32276a768c4ab6fe0b068e6e5db202a0dc50bdc117cf5412250801122101fdf861c028addfca6b044fbb5db8ae7bb4ba4a3389aa22a61bb5d7a539ddbc5e122708011201011a2056b06f410441d8668fd98fb3f238c6a3f06ac245cc6aea61f89b08456c7157451225080112210159c3219c59d63d67b0ae875d5ed3cac3ffb46c08447576346bd0e93dff13cf9e12250801122101eff88f2801c4e3f8e8970599be7a841f8aee01a37e75d6e71b36b3788e6d28e11225080112210144196306f158db162f9488800f621c792201a049235171c26c2b77ac8467953612250801122101b6a95e0d2e7b0af29378cfd1fd67641972df6734417220dc9191370bdc3562a612250801122101d7026e09b27e9fdce7752eb2617c3433799b74ce3e523a5dad4d932a941332d51225080112210131f6a04d042e4fb3af7a15592da4b1a0567eb0e4a18128ee9fe49757f74379af122508011221018eafe15f1cce4f35141605843c194c6ba68bb3355fcf68605f7aa488f500f11c1225080112210164d2a5e2252393ba380ccf6d2c9c9255a21019ca863ce63f6a6382689130c6bc122708011201011a20d48a049ede83ba329bbb79f16a361b011b4a13eb8eac3ad69f14a87f8c751b7e122708011201011a20065e9b3b790052ec7979b0956d61f1d41a1f1b6ba0ae06cae1394592e2f1d2f8122708011201011a20ca8b9b4a0f62764d3701024913ff165206aa33349c72a3b2831d25b977549b02122708011201011a202086fc67f5e3874aa082549395877b2b380a9cbcf86be51a0de73d08c056602f122708011201011a2065d8122da37cd5660ab209b5e0f3a773f59a3f349872efef08cdf5918d2cd31f12250801122101989da2a9b0b9d3ce394f759a1c6d7e583195d889e978268cab8b3846130f62b0122708011201011a202a49ca7bb6f6af3906e69fa206ae62ad9e3b0d3cd4894fc5321e8471368432a4122708011201011a20bd057b16b417dfafcbcdf3700da30b2c5a2d253b2bf635a2878d98424e7343bc1225080112210132fda26422efe6ac84b4734eb7fa52999a5fee6eb2c5db88395862464996f817122508011221014929aefcbb95e6d5d0f4b6516492bb20851edce04d9b82128d608a94f516ab8c122508011221013720a1c2dcead0476aea157ed816507a5947290213f48792bbbdcc93ce2d7760122708011201011a2080eecfbc1f4ecf74ff39473275d0939dd03fa5f581a966763f09a00085d7eb44122708011201011a2032b9bbb79837886e36ac94dc7d4a3fd5422a8f332edf12fed3176dc4111fe51c12250801122101c35d4aca12c363995faf00b8d679c0d1923dc4ab8d85d274494e18f9aa50a0d5122708011201011a20408c2fe252d55ed48370d12e080ebbafa7f474b9dd1ff9b4c557576ebd68a35112250801122101905096f8d018e421f33ac18f52b2a6e56b8b3e79edcc8b8a3aa8388790f6ae301225080112210108d8df01d97b19ac0b6eaf78d4f9945b3616263733e250f2a753869ac20785d5122708011201011a208225680828cd9e56a6730d9b4a392e4b85ab914e5c1f6a056368c6a218ac3070122708011201011a20b38dfbb6071aa8206a12fb759e5423932db63e49803055c785138103549beeee122708011201011a2062c3ccf9b171421f76f72ca811b18c3c1851f31859becdee2eb56dce7647e6501225080112210138c8e6fd61cd45f3f70446e2b2a0a46bf7dd5166a6d6713a3c3512d5b3fb68f11225080112210142ed7d48084f49b03c19fa1aaf6f6dcd6f2e19e1e3858ea343c74f0ea440fd9e12250801122101d477973f5b00ced0e13035a8d7f29c199195243857bbae91d680b044d1a7d273122708011201011a20377d90e26fa4650a73bfd98f5943cd6c93907f7f4c2d7212530c9ec5d90be8d5122708011201011a20a8efc81c26bdbb68eacc40909aba504b2b41f5415753ce6f775f378b5a07a4721225080112210119d59cac01d39537be8ad79802f0a6c5c3791b11545b7c37ea48461aec13bde3122708011201011a20b977ff9ebd5df38175d8c830111e3244e2e0e94740069bc664acbdc62362ef94122708011201011a206a32a93ee6cd162f6b9088c86ee67560450c67d279d0004db6a28d2b4e8b0bf3122508011221010c41a678cce4a17493e8ec801203d62a8034408b115f9337eaada4a05921252912250801122101046aabf8857b56351d9ba40a49c6aef89244ae91c9deb35728e8ae9275f7fc3d12250801122101816427ba4c795837530377e1f8a573600562287bf0d039dcb4b6622d6a6ad9a8122708011201011a20a5b083f5ab716af8703104c69250157f3dfc491015884f4719790c622c573f441225080112210140ba05526979c7d67958233c42402658138c3d056dcc2f8ce38b6c14d4bbe34f122708011201011a20e60abaaeba419014308e13ae700615a48ea4c6ac410a0837c4ebf6f6ec6c50c3122508011221016f0144e7b09ff9db0fc2d08328050ce4f72802c0157e4a5c953b3e6719c1efea122508011221012c0169bb6c8145bef287d9538a7ee5cf3d3aa2cfc10bbdfe607d89b67dce1932122508011221010e6681a6aca67b3184b16983a1d68dca291630a1a0d470789eaf609fa6c6faf9122708011201011a2024a52c669ebdb3dfc4e351163c1171ec640ed3d9a73e13c7cba1879ad4843b3c122508011221013d4d2d72e07044ddcc469f1a6505fc541cf6f60e06343b3fd60d4a5b8cefb2e4122708011201011a20b3df1eac35ea4c7d42181b49b991d35338c952838151abec733a054f87b51c56122708011201011a207484bcd769e767098e9e585ee3e9d78d34061568b670b7ff39d404a7885917fc122508011221015e0ffacfbaeb41b586ecbbea41335aff48e86daed92547d86ef492501cd0fc04122508011221010c05e1fc9849bc89e433488ca839faa13ff26c9b31612d10b9ecb5991e33f875122708011201011a204c5f4602a774078274476dd17bb3621a5343ca5435acdaec41543cc13d7c5f68122508011221012635094c26bb648071c0cd9c6ae347a7fb88c35ce9008d4827025bad9ecc3a3a122508011221018c482129aba952f463120f69b869acbb48bb062ad3d002746d7c0b1cf1f9f0ef122708011201011a20a0b3a2913ac7ffd2edf5632ef97217c5e9ba55445a60565e31e64df743ecef9c122508011221014f9bfbe5a4d287315e9ccd25b6c0d5a12c431c597e85641cf8cc7abb2a8aba26122708011201011a2044a3aab589f3100439507fa901a39b6ca86bc9ef81e0f18d7bec8a473e9e9533122708011201011a20faacd5f7d4bd1e9a338764affb557251c93339050e004a9899667145f39b0f6f1225080112210156c759c9502fac779f8837763dc934a5ba46d84889035b340221fff92b11c09e122708011201011a20e3eb324e76cd796f45538920ce5610cf821b300380f924f3fe9c14dc5e82af85122508011221016586840447fbad3b5da56fc648f75144992cf41b80ec7a60fe6a094ebea1acbb12250801122101f7da79fedcf21341ec9230ccaf30ef9c3c744e2932bfd96139c8b3d2fd720a52122708011201011a20b444b6f0ac798f6bd967fda22e7283ca49230355060f9b2d579cec88146453ac12250801122101cd0a533ca17166b5444d7fbc353de5b25cc2d2a07e039b8e255fc2c973e000df12250801122101b387838b08658705727531443efc3dd5b4d5514eeda14b59dfc3039df9e4152d12250801122101d50dc7b75f6ce6f593d1c30e30191621e0e9f0b33d52c9b8ec55cb78bfae0f01122708011201011a20ade323881bf34774dbfa316c5784ebc9049e17be4af8ea446ddd5c5b69f1582e12250801122101232e070bb02b72dc171f4bf465253be2f4cabb282dc309b101a231d0e80f338d122708011201011a2099538cb885a0e86c89fc1ee03972cdd9e05028aab438a85e0522ccbbbf5df06312250801122101eabc5647de79beaa4d7d4dc5ab7037a9430639e6f4de0279bc2d96df87cec212122708011201011a20d7d83dacc62d19edd2d97d1dbe1217cdb307e269bddb001e41b0972d2cda6cbe122708011201011a200c3fd1e9f1b69c8eed3f486c9f513a9527be51fdca57a3170dccb52a9338ae8f122708011201011a20ef406f769aadf3eaf0e0e15d3d92f1cff1d56af9bd1983e2fabb6d5f9bba2ab6122508011221015bccb377b115abfa22f2e0286e3b590a04671e9ddec68ee22bc86fbe961f8531122508011221014bd5964d321607548070bcb8765e8192542a6e75baecd71690eff6bd995898b512250801122101aca965d1e598027a8ef13025373417cb0bc336466fbc2746bd0cdd3c9c0246e712250801122101cc3f562b002b51608447fc25d6e1835a2a5e526388e6699724ba8c5dab1786bf122708011201011a203a89358a975a8327f293576c6f6c1bc189fcbf3cfc782c43e1a8b5079fc2a00012250801122101d497e3ed33e1922d65e73503180ba34d1af2302ec549326a87ae915109b2b093122708011201011a20794da77cba5d52e07b8e8b114342ce62f81e3c8704b9f138aad0b918033928fb122708011201011a20f6dcc6c5cf6816772a39140d66dadfd6d4438d03c7edbe99db696a867cfd34061225080112210112e7e88d07be023b6994a3327efa5c30157be3ed755bf8d2afb416a5efcb20331225080112210158d80835161c863c3a76ea87b83265f18d693dd19823164f49a06e2be2471900122508011221013e6e8b7f8db37385c672395a7700d1bd5ccce82a841efc06351ab66ed9d9af271225080112210185205a919cc5d4fe97e99095409480648534cb3d665bc6a200ab142de2dc87e9122508011221016054039f3186a8ec4546ae02c67265f36349788325712e08e2745003be77b0ff122708011201011a205d32f04ddfe50581992410be0dd4bd1e012483a1b28c5b9ac1c8af796751461e12250801122101bbaa0a52b6702582b90b41193a70110b156d7c160bfe3606d17f0a7c54d8670a122508011221016b97b9821f6d07b9a0f488020d9ba4798bfb6ba02199e3b42e702ec63481410112250801122101ca7b44df0d5442c7fc61daa29e42a251676f94c7a3d807e7167317b40f9812611225080112210129899be68cfb2da679030c398e15e527953a78ceb59bca5fdaa977b9e378cccc122708011201011a20a735026245b85e0c19f442bc02f1c1007d7f2c808629c44bbc53fd01adf89c8f1225080112210122ce805da85b16e9e5211dafeb71189219391d881a1b7a37f7bd7f63cfb33e7e122708011201011a203ef873e33d80f042fadd2931a15bbfbd6859dbaad0769c94607a9884bd60ab65122508011221017162c5bfacb351b15ec1eb5b4cd87d9a85b15fbbbe4abcd243c6b4bc2a403040122708011201011a20f9cf76c82f3b82002118e08b01e3a0f50746b7b501ad89aeb478fac899fb6a2c122708011201011a203a924903fd8d268e9ebf344959865290518d90cc5273fe9735dd3f2121a631ad122708011201011a2007239378763d1806169ad2ef933dbed091640a555c29f5974f6194eb554c3c2f12250801122101d1a99afc11e32d20a37b29283ae36abbd60ed119b4e709b5222f408c4bd5da2d122708011201011a2023b839a2b849ef0b5e2cbd248320fbd6c1bbd10a6d9a0a5cdea640b84cf260b6122708011201011a20507886ce2e11a4371f997e5d7545dcca76426cef41fe39b1eb9903b56572490b1225080112210149c98655a1f2bd00f6423046f998263b0bc6ad6327505cfcafa8d3d40a632b7d122508011221015c9450fd266926a4ab7b010f92c8ea7f68b55d6824965cc3f2f66f0cc1d4ef6612250801122101be300a42c7d5bb2aaf8ee9059227ff77c14894c068c3a76ac10905948b9687e712250801122101e6f75aab207e79250b0096746991710d290fb10fe02db49fb956ba04ff2893ea122708011201011a209da5cecac691e6be0df92db0808278ffadb1646bf44dfc87a7f991f0246616af12250801122101e3e5dd77a00ced3041101389a08e2a53f60cee62d533334c0044f76dd2b7847e122708011201011a20a1ec1b4c832855829f1eb3bbb4b916a61a09c4fefd854010ee6e099c8e56953c122708011201011a204e249f7401f17aa6bd9c21cad9a3880f46cd4967a489983464ec4c2553562122122508011221019df221acd61486f2656fdd58cad2f13a618dbdb7c82d4eec91039fd6de379c18122708011201011a20648d0ab163a5542132ff244c90de3e7547647449b2dd79e4fb5ce9570814fddb122708011201011a20dd4b128547859ce6ff2db13c769728c3b97628d43ee01164137b0a80fbf6b6a5122708011201011a205fda470dee734badfc4e4035a99e7d3311c4c1f033c354e0a9a253641523e0e8122508011221010bdc79e99a072ebf2c6ed56985354d642f4616dc95d1d6eaa659c531088cdf07122708011201011a20b57b8ea77f3ca67c85f9d0b9f4eee7a43ca357b3ed7c88b58a711ba92b42110f12250801122101565d019bacbca8cf99af30ffe09e773f17952e3b92dffc54c66774543df0cb56122508011221011b5fc25977cec0c1cdf3af308c4854e93c58b15ed1e0f933f26f76f9bf680470", - "root": "30ff20e16ef70672a644ba7688b6532b3ec1afa22f4f7c03318c6ccf5855a979" -}