diff --git a/README.md b/README.md index 9ac9efe..3895bb6 100644 --- a/README.md +++ b/README.md @@ -68,14 +68,14 @@ Add the configuration in the given files: #### config.{env}.json | Key | Used For | | ------ | ------ | -| GOOGLE_PROJECT_ID | Your Google Project ID | -| SPANNER_DB | Your Spanner Database Name | +| GoogleProjectID | Your Google Project ID | +| SpannerDb | Your Spanner Database Name | For example: ``` { - "GOOGLE_PROJECT_ID" : "first-project", - "SPANNER_DB" : "test-db" + "GoogleProjectID" : "first-project", + "SpannerDb" : "test-db" } ``` @@ -99,6 +99,10 @@ For example: #### tables.{env}.json All table's primary key, columns, index information will be stored here. +It will be required for query and update both type of operation to get primary key, sort or any other index present. +It helps to query data on primary key or sort key. +It helps to update data based on primary key or sort key. +It will be similar to dynamodb table's architecture. | Key | Used For | | ------ | ------ | @@ -117,8 +121,12 @@ For example: "partitionKey":"primary key or Partition key", "sortKey": "sorting key of dynamoDB adapter", "attributeTypes": { - "ColumnName1": "N", - "ColumnName2": "S" + "ColInt64": "N", + "ColString": "S", + "ColBytes": "B", + "ColBool": "BOOL", + "ColDate": "S", + "ColTimestamp": "S" }, "indices": { "indexName1": { @@ -138,10 +146,8 @@ For example: ##### install rice package This package is required to load the config files. This is required in the first step of the running dynamoDB-adapter. -``` -go get github.com/GeertJohan/go.rice -go get github.com/GeertJohan/go.rice/rice -``` +Follow the [link](https://github.com/GeertJohan/go.rice#installation). + ##### run command for creating the file. This is required to increase the performance when any config file is changed so that configuration files can be loaded directly from go file. ``` diff --git a/config-files/production/config-production.json b/config-files/production/config-production.json index 4414217..e23192a 100644 --- a/config-files/production/config-production.json +++ b/config-files/production/config-production.json @@ -1,4 +1,4 @@ { - "GOOGLE_PROJECT_ID": "Your Google Project ID", - "SPANNER_DB": "Your Spanner Database Name" + "GoogleProjectID": "Your Google Project ID", + "SpannerDb": "Your Spanner Database Name" } \ No newline at end of file diff --git a/config-files/production/tables-production.json b/config-files/production/tables-production.json index b619bbc..c56cbf5 100644 --- a/config-files/production/tables-production.json +++ b/config-files/production/tables-production.json @@ -3,8 +3,12 @@ "partitionKey":"primary key or Partition key", "sortKey": "sorting key of dynamoDB adapter", "attributeTypes": { - "ColumnName1": "N", - "ColumnName2": "S" + "ColInt64": "N", + "ColString": "S", + "ColBytes": "B", + "ColBool": "BOOL", + "ColDate": "S", + "ColTimestamp": "S" }, "indices": { "indexName1": { diff --git a/config-files/staging/config-staging.json b/config-files/staging/config-staging.json index 4414217..e23192a 100644 --- a/config-files/staging/config-staging.json +++ b/config-files/staging/config-staging.json @@ -1,4 +1,4 @@ { - "GOOGLE_PROJECT_ID": "Your Google Project ID", - "SPANNER_DB": "Your Spanner Database Name" + "GoogleProjectID": "Your Google Project ID", + "SpannerDb": "Your Spanner Database Name" } \ No newline at end of file diff --git a/config-files/staging/tables-staging.json b/config-files/staging/tables-staging.json index b619bbc..c56cbf5 100644 --- a/config-files/staging/tables-staging.json +++ b/config-files/staging/tables-staging.json @@ -3,8 +3,12 @@ "partitionKey":"primary key or Partition key", "sortKey": "sorting key of dynamoDB adapter", "attributeTypes": { - "ColumnName1": "N", - "ColumnName2": "S" + "ColInt64": "N", + "ColString": "S", + "ColBytes": "B", + "ColBool": "BOOL", + "ColDate": "S", + "ColTimestamp": "S" }, "indices": { "indexName1": { diff --git a/models/model.go b/models/model.go index 98b9922..c734d53 100644 --- a/models/model.go +++ b/models/model.go @@ -16,18 +16,16 @@ package models import ( - "github.com/aws/aws-sdk-go/service/dynamodb" - // "github.com/zhouzhuojie/conditions" + "sync" "github.com/antonmedv/expr/vm" - - "sync" + "github.com/aws/aws-sdk-go/service/dynamodb" ) // Meta struct type Meta struct { TableName string `json:"TableName"` - AttrMap map[string]interface{} `json:"attrMap"` + AttrMap map[string]interface{} `json:"AttrMap"` ReturnValues string `json:"ReturnValues"` ConditionExpression string `json:"ConditionExpression"` ExpressionAttributeMap map[string]interface{} `json:"ExpressionAttributeMap"` @@ -38,31 +36,31 @@ type Meta struct { // GetKeyMeta struct type GetKeyMeta struct { - Key string `json:"key"` - Type string `json:"type"` - DynamoObject map[string]*dynamodb.AttributeValue `json:"dynamoObject"` + Key string `json:"Key"` + Type string `json:"Type"` + DynamoObject map[string]*dynamodb.AttributeValue `json:"DynamoObject"` } // SetKeyMeta struct type SetKeyMeta struct { - Key string `json:"key"` - Type string `json:"type"` - Value string `json:"value"` - DynamoObject map[string]*dynamodb.AttributeValue `json:"dynamoObject"` + Key string `json:"Key"` + Type string `json:"Type"` + Value string `json:"Value"` + DynamoObject map[string]*dynamodb.AttributeValue `json:"DynamoObject"` } // BatchMetaUpdate struct type BatchMetaUpdate struct { - TableName string `json:"tableName"` - ArrAttrMap []map[string]interface{} `json:"arrAttrMap"` - DynamoObject []map[string]*dynamodb.AttributeValue `json:"dynamoObject"` + TableName string `json:"TableName"` + ArrAttrMap []map[string]interface{} `json:"ArrAttrMap"` + DynamoObject []map[string]*dynamodb.AttributeValue `json:"DynamoObject"` } // BatchMeta struct type BatchMeta struct { - TableName string `json:"tableName"` - KeyArray []map[string]interface{} `json:"keyArray"` - DynamoObject []map[string]*dynamodb.AttributeValue `json:"dynamoObject"` + TableName string `json:"TableName"` + KeyArray []map[string]interface{} `json:"KeyArray"` + DynamoObject []map[string]*dynamodb.AttributeValue `json:"DynamoObject"` } // GetItemMeta struct @@ -81,17 +79,17 @@ type BatchGetMeta struct { // BatchGetWithProjectionMeta struct type BatchGetWithProjectionMeta struct { - TableName string `json:"tableName"` - KeyArray []map[string]interface{} `json:"keyArray"` - ProjectionExpression string `json:"projectionExpression"` - ExpressionAttributeNames map[string]string `json:"expressionAttributeNames"` + TableName string `json:"TableName"` + KeyArray []map[string]interface{} `json:"KeyArray"` + ProjectionExpression string `json:"ProjectionExpression"` + ExpressionAttributeNames map[string]string `json:"ExpressionAttributeNames"` Keys []map[string]*dynamodb.AttributeValue `json:"Keys"` } // Delete struct type Delete struct { - TableName string `json:"tableName"` - PrimaryKeyMap map[string]interface{} `json:"primaryKeyMap"` + TableName string `json:"TableName"` + PrimaryKeyMap map[string]interface{} `json:"PrimaryKeyMap"` ConditionExpression string `json:"ConditionExpression"` ExpressionAttributeMap map[string]interface{} `json:"ExpressionAttributeMap"` Key map[string]*dynamodb.AttributeValue `json:"Key"` @@ -101,24 +99,24 @@ type Delete struct { // BulkDelete struct type BulkDelete struct { - TableName string `json:"tableName"` - PrimaryKeyMapArray []map[string]interface{} `json:"keyArray"` - DynamoObject []map[string]*dynamodb.AttributeValue `json:"dynamoObject"` + TableName string `json:"TableName"` + PrimaryKeyMapArray []map[string]interface{} `json:"KeyArray"` + DynamoObject []map[string]*dynamodb.AttributeValue `json:"DynamoObject"` } // Query struct type Query struct { - TableName string `json:"tableName"` - IndexName string `json:"indexName"` - OnlyCount bool `json:"onlyCount"` - Limit int64 `json:"limit"` + TableName string `json:"TableName"` + IndexName string `json:"IndexName"` + OnlyCount bool `json:"OnlyCount"` + Limit int64 `json:"Limit"` SortAscending bool `json:"ScanIndexForward"` - StartFrom map[string]interface{} `json:"startFrom"` + StartFrom map[string]interface{} `json:"StartFrom"` ProjectionExpression string `json:"ProjectionExpression"` ExpressionAttributeNames map[string]string `json:"ExpressionAttributeNames"` FilterExp string `json:"FilterExpression"` RangeExp string `json:"KeyConditionExpression"` - RangeValMap map[string]interface{} `json:"rangeValMap"` + RangeValMap map[string]interface{} `json:"RangeValMap"` ExpressionAttributeValues map[string]*dynamodb.AttributeValue `json:"ExpressionAttributeValues"` ExclusiveStartKey map[string]*dynamodb.AttributeValue `json:"ExclusiveStartKey"` Select string `json:"Select"` @@ -126,12 +124,12 @@ type Query struct { // UpdateAttr struct type UpdateAttr struct { - TableName string `json:"tableName"` - PrimaryKeyMap map[string]interface{} `json:"primaryKeyMap"` - ReturnValues string `json:"returnValues"` - UpdateExpression string `json:"updateExpression"` + TableName string `json:"TableName"` + PrimaryKeyMap map[string]interface{} `json:"PrimaryKeyMap"` + ReturnValues string `json:"ReturnValues"` + UpdateExpression string `json:"UpdateExpression"` ConditionExpression string `json:"ConditionExpression"` - ExpressionAttributeMap map[string]interface{} `json:"attrVals"` + ExpressionAttributeMap map[string]interface{} `json:"AttrVals"` ExpressionAttributeNames map[string]string `json:"ExpressionAttributeNames"` Key map[string]*dynamodb.AttributeValue `json:"Key"` ExpressionAttributeValues map[string]*dynamodb.AttributeValue `json:"ExpressionAttributeValues"` @@ -139,12 +137,12 @@ type UpdateAttr struct { //ScanMeta for Scan request type ScanMeta struct { - TableName string `json:"tableName"` - IndexName string `json:"indexName"` - OnlyCount bool `json:"onlyCount"` + TableName string `json:"TableName"` + IndexName string `json:"IndexName"` + OnlyCount bool `json:"OnlyCount"` Select string `json:"Select"` - Limit int64 `json:"limit"` - StartFrom map[string]interface{} `json:"startFrom"` + Limit int64 `json:"Limit"` + StartFrom map[string]interface{} `json:"StartFrom"` ExclusiveStartKey map[string]*dynamodb.AttributeValue `json:"ExclusiveStartKey"` FilterExpression string `json:"FilterExpression"` ProjectionExpression string `json:"ProjectionExpression"` @@ -155,16 +153,16 @@ type ScanMeta struct { // TableConfig for Configuration table type TableConfig struct { - PartitionKey string `json:"partitionKey,omitempty"` - SortKey string `json:"sortKey,omitempty"` - Indices map[string]TableConfig `json:"indices,omitempty"` - GCSSourcePath string `json:"gcsSourcePath,omitempty"` - DDBIndexName string `json:"ddbIndexName,omitempty"` - SpannerIndexName string `json:"table,omitempty"` - IsPadded bool `json:"isPadded,omitempty"` - IsComplement bool `json:"isComplement,omitempty"` - TableSource string `json:"tableSource,omitempty"` - ActualTable string `json:"actualTable,omitempty"` + PartitionKey string `json:"PartitionKey,omitempty"` + SortKey string `json:"SortKey,omitempty"` + Indices map[string]TableConfig `json:"Indices,omitempty"` + GCSSourcePath string `json:"GcsSourcePath,omitempty"` + DDBIndexName string `json:"DdbIndexName,omitempty"` + SpannerIndexName string `json:"Table,omitempty"` + IsPadded bool `json:"IsPadded,omitempty"` + IsComplement bool `json:"IsComplement,omitempty"` + TableSource string `json:"TableSource,omitempty"` + ActualTable string `json:"ActualTable,omitempty"` } //BatchWriteItem for Batch Operation @@ -188,7 +186,7 @@ type BatchPutItem struct { Item map[string]*dynamodb.AttributeValue `json:"Item"` } -// TableDDL - This contains the DDL +// TableDDL - this contains the DDL var TableDDL map[string]map[string]string // TableColumnMap - this contains the list of columns for the tables @@ -239,21 +237,6 @@ type dynamodbAdapterTableDdl struct { DataType string } -// DBAudit for db auditing data -type DBAudit struct { - ID string `json:"id,omitempty"` - Timestamp int64 `json:"timestamp,omitempty"` - AWSResponse map[string]interface{} `json:"awsResponse,omitempty"` - GCPResponse map[string]interface{} `json:"gcpResponse,omitempty"` - TableName string `json:"tableName,omitempty"` - PartitionKey string `json:"partitionKey,omitempty"` - SortKey string `json:"sortKey,omitempty"` - Operation string `json:"operation"` - GCPDbErr string `json:"gcpDbErr"` - AWSDbErr string `json:"awsDbErr"` - Payload string `json:"payload"` -} - // ConfigControllerModel for Config controller type ConfigControllerModel struct { Mux sync.RWMutex @@ -284,13 +267,13 @@ func init() { // StreamDataModel for streaming data type StreamDataModel struct { - OldImage map[string]interface{} `json:"oldImage"` - NewImage map[string]interface{} `json:"newImage"` - Keys map[string]interface{} `json:"keys"` - Timestamp int64 `json:"timestamp"` - Table string `json:"tableName"` - EventName string `json:"eventName"` - SequenceNumber int64 `json:"sequenceNumber"` - EventID string `json:"eventId"` - EventSourceArn string `json:"eventSourceArn"` + OldImage map[string]interface{} `json:"OldImage"` + NewImage map[string]interface{} `json:"NewImage"` + Keys map[string]interface{} `json:"Keys"` + Timestamp int64 `json:"Timestamp"` + Table string `json:"TableName"` + EventName string `json:"EventName"` + SequenceNumber int64 `json:"SequenceNumber"` + EventID string `json:"EventId"` + EventSourceArn string `json:"EventSourceArn"` } diff --git a/pkg/httpclient/httpclient.go b/pkg/httpclient/httpclient.go deleted file mode 100644 index 67e39df..0000000 --- a/pkg/httpclient/httpclient.go +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2020 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package httpclient - -import ( - "net/http" - "sync" - "time" -) - -var client *http.Client -var once sync.Once - -// Get - this will return singletone object of http client -func Get() *http.Client { - once.Do(func() { - client = &http.Client{ - Timeout: time.Duration(time.Second * 10), - Transport: &http.Transport{}, - } - }) - return client -} diff --git a/pkg/logger/logger.go b/pkg/logger/logger.go index 89f1ace..fc87fce 100644 --- a/pkg/logger/logger.go +++ b/pkg/logger/logger.go @@ -17,7 +17,6 @@ package logger import ( "fmt" "log" - "os" "go.uber.org/zap" @@ -32,7 +31,7 @@ var errorLogger *zap.SugaredLogger func init() { devConfig := zap.NewDevelopmentConfig() devConfig.DisableStacktrace = true - w := MyWriter{} + w := LogWriter{} tmp, err := devConfig.Build(zap.AddCallerSkip(1), zap.WrapCore(func(zapcore.Core) zapcore.Core { return zapcore.NewCore(zapcore.NewJSONEncoder(devConfig.EncoderConfig), zapcore.AddSync(w), devConfig.Level) })) @@ -102,10 +101,10 @@ func ErrorLogging(message ...interface{}) { errorLogger.Error(message) } -// MyWriter - MyWriter -type MyWriter struct{} +// LogWriter - Log Writer +type LogWriter struct{} -func (m MyWriter) Write(ba []byte) (int, error) { +func (m LogWriter) Write(ba []byte) (int, error) { if env == "PRODUCTION" { go fmt.Println(string(ba)) } else { diff --git a/pkg/logger/logger_test.go b/pkg/logger/logger_test.go index 7a9b391..de4dbf4 100644 --- a/pkg/logger/logger_test.go +++ b/pkg/logger/logger_test.go @@ -44,7 +44,6 @@ func TestLogDebug(t *testing.T) { LogDebug(info) } -// 20000 70479 ns/op 1379 B/op 12 allocs/op // above shows the Benchmark for using LogError in Project func BenchmarkLogError(b *testing.B) { err := struct { diff --git a/rice-box.go b/rice-box.go deleted file mode 100644 index 419b916..0000000 --- a/rice-box.go +++ /dev/null @@ -1,113 +0,0 @@ -package main - -import ( - "time" - - "github.com/GeertJohan/go.rice/embedded" -) - -func init() { - - // define files - file2 := &embedded.EmbeddedFile{ - Filename: ".DS_Store", - FileModTime: time.Unix(1579579556, 0), - - Content: string("\x00\x00\x00\x01Bud1\x00\x00\x10\x00\x00\x00\b\x00\x00\x00\x10\x00\x00\x00\x04\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\x00\x00\x00\b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\b\x00\x00\x00\x01\x00\x00\x10\x00\x00a\x00b\x00l\x00e\x00-\x00p\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\b\x00\x00\x00\x18\x00b\x00i\x00g\x00t\x00a\x00b\x00l\x00e\x00-\x00p\x00r\x00o\x00d\x00u\x00c\x00t\x00i\x00o\x00n\x00.\x00j\x00s\x00o\x00nIlocblob\x00\x00\x00\x10\x00\x00\x02\xcf\x00\x00\x003\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x15\x00b\x00i\x00g\x00t\x00a\x00b\x00l\x00e\x00-\x00s\x00t\x00a\x00g\x00i\x00n\x00g\x00.\x00j\x00s\x00o\x00nIlocblob\x00\x00\x00\x10\x00\x00\x00;\x00\x00\x003\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x16\x00c\x00o\x00n\x00f\x00i\x00g\x00-\x00p\x00r\x00o\x00d\x00u\x00c\x00t\x00i\x00o\x00n\x00.\x00j\x00s\x00o\x00nIlocblob\x00\x00\x00\x10\x00\x00\x01\xf7\x00\x00\x00(\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x13\x00c\x00o\x00n\x00f\x00i\x00g\x00-\x00s\x00t\x00a\x00g\x00i\x00n\x00g\x00.\x00j\x00s\x00o\x00nIlocblob\x00\x00\x00\x10\x00\x00\x01\x17\x00\x00\x003\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x17\x00s\x00p\x00a\x00n\x00n\x00e\x00r\x00-\x00p\x00r\x00o\x00d\x00u\x00c\x00t\x00i\x00o\x00n\x00.\x00j\x00s\x00o\x00nIlocblob\x00\x00\x00\x10\x00\x00\x03=\x00\x00\x003\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x14\x00s\x00p\x00a\x00n\x00n\x00e\x00r\x00-\x00s\x00t\x00a\x00g\x00i\x00n\x00g\x00.\x00j\x00s\x00o\x00nIlocblob\x00\x00\x00\x10\x00\x00\x01\x85\x00\x00\x003\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x16\x00t\x00a\x00b\x00l\x00e\x00s\x00-\x00p\x00r\x00o\x00d\x00u\x00c\x00t\x00i\x00o\x00n\x00.\x00j\x00s\x00o\x00nIlocblob\x00\x00\x00\x10\x00\x00\x02a\x00\x00\x003\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x13\x00t\x00a\x00b\x00l\x00e\x00s\x00-\x00s\x00t\x00a\x00g\x00i\x00n\x00g\x00.\x00j\x00s\x00o\x00nIlocblob\x00\x00\x00\x10\x00\x00\x00\xa9\x00\x00\x003\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\b\v\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00@\x00\x00\x00\x01\x00\x00\x00\x80\x00\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x01\x00\x00\x02\x00\x00\x00\x00\x01\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x10\x00\x00\x00\x00\x01\x00\x00 \x00\x00\x00\x00\x01\x00\x00@\x00\x00\x00\x00\x01\x00\x00\x80\x00\x00\x00\x00\x01\x00\x01\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x01\x00\x04\x00\x00\x00\x00\x00\x01\x00\b\x00\x00\x00\x00\x00\x01\x00\x10\x00\x00\x00\x00\x00\x01\x00 \x00\x00\x00\x00\x00\x01\x00@\x00\x00\x00\x00\x00\x01\x00\x80\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x01\x02\x00\x00\x00\x00\x00\x00\x01\x04\x00\x00\x00\x00\x00\x00\x01\b\x00\x00\x00\x00\x00\x00\x01\x10\x00\x00\x00\x00\x00\x00\x01 \x00\x00\x00\x00\x00\x00\x01@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x10\v\x00\x00\x00E\x00\x00\x04\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x04DSDB\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00 \x00\x00\x00`\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x80\x00\x00\x00\x01\x00\x00\x01\x00\x00\x00\x00\x01\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\b\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00 \x00\x00\x00\x00\x01\x00\x00@\x00\x00\x00\x00\x01\x00\x00\x80\x00\x00\x00\x00\x01\x00\x01\x00\x00\x00\x00\x00\x01\x00\x02\x00\x00\x00\x00\x00\x01\x00\x04\x00\x00\x00\x00\x00\x01\x00\b\x00\x00\x00\x00\x00\x01\x00\x10\x00\x00\x00\x00\x00\x01\x00 \x00\x00\x00\x00\x00\x01\x00@\x00\x00\x00\x00\x00\x01\x00\x80\x00\x00\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x01\x02\x00\x00\x00\x00\x00\x00\x01\x04\x00\x00\x00\x00\x00\x00\x01\b\x00\x00\x00\x00\x00\x00\x01\x10\x00\x00\x00\x00\x00\x00\x01 \x00\x00\x00\x00\x00\x00\x01@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), - } - file4 := &embedded.EmbeddedFile{ - Filename: "production/config-production.json", - FileModTime: time.Unix(1594527881, 0), - - Content: string("{\n \"GOOGLE_PROJECT_ID\": \"Your Google Project ID\",\n \"SPANNER_DB\": \"Your Spanner Database Name\"\n}"), - } - file5 := &embedded.EmbeddedFile{ - Filename: "production/spanner-production.json", - FileModTime: time.Unix(1594654933, 0), - - Content: string("{\n \"dynamodb_adapter_table_ddl\": \"instance-ID of dynamodb_adapter_table_ddl table\",\n \"dynamodb_adapter_config_manager\": \"instance-ID of dynamodb_adapter_config_manager table\",\n \"tableName\": \"instance-ID of Table\"\n}"), - } - file6 := &embedded.EmbeddedFile{ - Filename: "production/tables-production.json", - FileModTime: time.Unix(1594527881, 0), - - Content: string("{\n \"tableName\":{\n \"partitionKey\":\"primary key or Partition key\",\n \"sortKey\": \"sorting key of dynamoDB adaptar\",\n \"attributeTypes\": {\n\t\t\t\"ColmnnName1\": \"Type of like N & S for ColmnnName1\",\n\t\t\t\"ColmnnName2\": \"Type of like N & S for ColmnnName2\"\n },\n \"indices\": { \n\t\t\t\"indexName1\": {\n\t\t\t\t\"sortKey\": \"sort key indexName1\",\n\t\t\t\t\"partitionKey\": \"partition key for indexName1\"\n\t\t\t}\n\t\t}\n }\n}"), - } - file8 := &embedded.EmbeddedFile{ - Filename: "staging/config-staging.json", - FileModTime: time.Unix(1594527881, 0), - - Content: string("{\n \"GOOGLE_PROJECT_ID\": \"Your Google Project ID\",\n \"SPANNER_DB\": \"Your Spanner Database Name\"\n}"), - } - file9 := &embedded.EmbeddedFile{ - Filename: "staging/spanner-staging.json", - FileModTime: time.Unix(1594654933, 0), - - Content: string("{\n \"dynamodb_adapter_table_ddl\": \"instance-ID of dynamodb_adapter_table_ddl table\",\n \"dynamodb_adapter_config_manager\": \"instance-ID of dynamodb_adapter_config_manager table\",\n \"tableName\": \"instance-ID of Table\"\n}"), - } - filea := &embedded.EmbeddedFile{ - Filename: "staging/tables-staging.json", - FileModTime: time.Unix(1594527881, 0), - - Content: string("{\n \"tableName\":{\n \"partitionKey\":\"primary key or Partition key\",\n \"sortKey\": \"sorting key of dynamoDB adaptar\",\n \"attributeTypes\": {\n\t\t\t\"ColmnnName1\": \"Type of like N & S for ColmnnName1\",\n\t\t\t\"ColmnnName2\": \"Type of like N & S for ColmnnName2\"\n },\n \"indices\": { \n\t\t\t\"indexName1\": {\n\t\t\t\t\"sortKey\": \"sort key indexName1\",\n\t\t\t\t\"partitionKey\": \"partition key for indexName1\"\n\t\t\t}\n\t\t}\n }\n}"), - } - - // define dirs - dir1 := &embedded.EmbeddedDir{ - Filename: "", - DirModTime: time.Unix(1594527881, 0), - ChildFiles: []*embedded.EmbeddedFile{ - file2, // ".DS_Store" - - }, - } - dir3 := &embedded.EmbeddedDir{ - Filename: "production", - DirModTime: time.Unix(1594654933, 0), - ChildFiles: []*embedded.EmbeddedFile{ - file4, // "production/config-production.json" - file5, // "production/spanner-production.json" - file6, // "production/tables-production.json" - - }, - } - dir7 := &embedded.EmbeddedDir{ - Filename: "staging", - DirModTime: time.Unix(1594654933, 0), - ChildFiles: []*embedded.EmbeddedFile{ - file8, // "staging/config-staging.json" - file9, // "staging/spanner-staging.json" - filea, // "staging/tables-staging.json" - - }, - } - - // link ChildDirs - dir1.ChildDirs = []*embedded.EmbeddedDir{ - dir3, // "production" - dir7, // "staging" - - } - dir3.ChildDirs = []*embedded.EmbeddedDir{} - dir7.ChildDirs = []*embedded.EmbeddedDir{} - - // register embeddedBox - embedded.RegisterEmbeddedBox(`config-files`, &embedded.EmbeddedBox{ - Name: `config-files`, - Time: time.Unix(1594527881, 0), - Dirs: map[string]*embedded.EmbeddedDir{ - "": dir1, - "production": dir3, - "staging": dir7, - }, - Files: map[string]*embedded.EmbeddedFile{ - ".DS_Store": file2, - "production/config-production.json": file4, - "production/spanner-production.json": file5, - "production/tables-production.json": file6, - "staging/config-staging.json": file8, - "staging/spanner-staging.json": file9, - "staging/tables-staging.json": filea, - }, - }) -}