tnk2908 commited on
Commit
247b3e4
·
1 Parent(s): c1b5167

Add examples for requests and responses in RestAPI

Browse files
Files changed (3) hide show
  1. api.py +37 -4
  2. resources/examples.json +1714 -0
  3. schemes.py +13 -1
api.py CHANGED
@@ -1,7 +1,9 @@
1
  import base64
 
2
 
3
  import torch
4
  from fastapi import FastAPI
 
5
  import uvicorn
6
 
7
  from stegno import generate, decrypt
@@ -13,17 +15,30 @@ from schemes import DecryptionBody, EncryptionBody
13
 
14
  app = FastAPI()
15
 
 
 
16
 
17
- @app.post("/encrypt")
 
 
 
 
 
 
 
 
 
 
18
  async def encrypt_api(
19
  body: EncryptionBody,
20
  ):
 
21
  model, tokenizer = ModelFactory.load_model(body.gen_model)
22
  text, msg_rate, tokens_info = generate(
23
  tokenizer=tokenizer,
24
  model=model,
25
  prompt=body.prompt,
26
- msg=str.encode(body.msg),
27
  start_pos_p=[body.start_pos],
28
  delta=body.delta,
29
  msg_base=body.msg_base,
@@ -37,7 +52,16 @@ async def encrypt_api(
37
  return {"text": text, "msg_rate": msg_rate, "tokens_info": tokens_info}
38
 
39
 
40
- @app.post("/decrypt")
 
 
 
 
 
 
 
 
 
41
  async def decrypt_api(body: DecryptionBody):
42
  model, tokenizer = ModelFactory.load_model(body.gen_model)
43
  msgs = decrypt(
@@ -57,7 +81,16 @@ async def decrypt_api(body: DecryptionBody):
57
  return msg_b64
58
 
59
 
60
- @app.get("/configs")
 
 
 
 
 
 
 
 
 
61
  async def default_config():
62
  configs = {
63
  "default": {
 
1
  import base64
2
+ import json
3
 
4
  import torch
5
  from fastapi import FastAPI
6
+ from fastapi.openapi.utils import get_openapi
7
  import uvicorn
8
 
9
  from stegno import generate, decrypt
 
15
 
16
  app = FastAPI()
17
 
18
+ with open("resources/examples.json", "r") as f:
19
+ examples = json.load(f)
20
 
21
+
22
+ @app.post(
23
+ "/encrypt",
24
+ responses={
25
+ 200: {
26
+ "content": {
27
+ "application/json": {"example": examples["encrypt"]["response"]}
28
+ }
29
+ }
30
+ },
31
+ )
32
  async def encrypt_api(
33
  body: EncryptionBody,
34
  ):
35
+ byte_msg = base64.b64decode(body.msg)
36
  model, tokenizer = ModelFactory.load_model(body.gen_model)
37
  text, msg_rate, tokens_info = generate(
38
  tokenizer=tokenizer,
39
  model=model,
40
  prompt=body.prompt,
41
+ msg=byte_msg,
42
  start_pos_p=[body.start_pos],
43
  delta=body.delta,
44
  msg_base=body.msg_base,
 
52
  return {"text": text, "msg_rate": msg_rate, "tokens_info": tokens_info}
53
 
54
 
55
+ @app.post(
56
+ "/decrypt",
57
+ responses={
58
+ 200: {
59
+ "content": {
60
+ "application/json": {"example": examples["decrypt"]["response"]}
61
+ }
62
+ }
63
+ },
64
+ )
65
  async def decrypt_api(body: DecryptionBody):
66
  model, tokenizer = ModelFactory.load_model(body.gen_model)
67
  msgs = decrypt(
 
81
  return msg_b64
82
 
83
 
84
+ @app.get(
85
+ "/configs",
86
+ responses={
87
+ 200: {
88
+ "content": {
89
+ "application/json": {"example": examples["configs"]["response"]}
90
+ },
91
+ }
92
+ },
93
+ )
94
  async def default_config():
95
  configs = {
96
  "default": {
resources/examples.json ADDED
@@ -0,0 +1,1714 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "decrypt": {
3
+ "request": {
4
+ "text": "\n\nThis week, I had some good news for you:\n\nYou're welcome!\n\nI hope you have fun and enjoy it, and I hope you enjoy this week.\n\nThanks for visiting my blog.\n\nCheers! 🙂\n\n~Kara\n\nUpdate: This post was updated to add a new comment to my post about how to create a free account. You can read the original post at: http://my.reddit.com/message/comments/1u7j3p/this_is_what_i_wanted_to/ (I've updated my post to include my own comments, so check out my blog for more details)\n\nThis post was updated to include a new comment to my post about how to create a free account. You can read the original post at: http://my.reddit.com/message/comments/1u7j3p/this_is_what_i_wanted_to/",
5
+ "gen_model": "gpt2",
6
+ "msg_base": 2,
7
+ "seed_scheme": "sha_left_hash",
8
+ "window_length": 1,
9
+ "private_key": 0
10
+ },
11
+ "response": {
12
+ "0": ["KjQ0uZA0uZAwkDc0sbKQMjC8ghIG5pY2UgA="],
13
+ "1": ["VGhpcyBpcyBhIG5pY2UgZGF5BCQNzSxspAA="],
14
+ "2": ["qNDS5kDS5kDCQNzSxspAyMLyCEgbmljZSAA="],
15
+ "3": ["UaGlzIGlzIGEgbmljZSBkYXkEJA3NLGykAA="],
16
+ "4": ["o0NLmQNLmQMJA3NLGykDIwvIISBuaWNlIA=="],
17
+ "5": ["RoaXMgaXMgYSBuaWNlIGRheQQkDc0sbKIA=="],
18
+ "6": ["jQ0uZA0uZAwkDc0sbKQMjC8ghIG5pY2UIA=="],
19
+ "7": ["GhpcyBpcyBhIG5pY2UgZGF5BCQNzSxspAA=="]
20
+ }
21
+ },
22
+ "encrypt": {
23
+ "request": {
24
+ "prompt": "A nice day:",
25
+ "msg": "VGhpcyBpcyBhIG5pY2UgZGF5",
26
+ "gen_model": "gpt2",
27
+ "start_pos": 0,
28
+ "delta": 10,
29
+ "msg_base": 2,
30
+ "seed_scheme": "sha_left_hash",
31
+ "window_length": 1,
32
+ "private_key": 0,
33
+ "max_new_tokens_ratio": 2,
34
+ "num_beams": 4,
35
+ "repetition_penalty": 1
36
+ },
37
+ "response": {
38
+ "text": "\n\nThis week, I had some good news for you:\n\nYou're welcome!\n\nI hope you have fun and enjoy it, and I hope you enjoy this week.\n\nThanks for visiting my blog.\n\nCheers! 🙂\n\n~Kara\n\nUpdate: This post was updated to add a new comment to my post about how to create a free account. You can read the original post at: http://my.reddit.com/message/comments/1u7j3p/this_is_what_i_wanted_to/ (I've updated my post to include my own comments, so check out my blog for more details)\n\nThis post was updated to include a new comment to my post about how to create a free account. You can read the original post at: http://my.reddit.com/message/comments/1u7j3p/this_is_what_i_wanted_to/",
39
+ "msg_rate": 1,
40
+ "tokens_info": [
41
+ {
42
+ "token": "\n",
43
+ "base_enc": 0,
44
+ "byte_enc": 0,
45
+ "base_msg": -1,
46
+ "byte_msg": -1,
47
+ "byte_id": -1
48
+ },
49
+ {
50
+ "token": "\n",
51
+ "base_enc": 0,
52
+ "byte_enc": 84,
53
+ "base_msg": 0,
54
+ "byte_msg": 84,
55
+ "byte_id": 0
56
+ },
57
+ {
58
+ "token": "This",
59
+ "base_enc": 1,
60
+ "byte_enc": 84,
61
+ "base_msg": 1,
62
+ "byte_msg": 84,
63
+ "byte_id": 0
64
+ },
65
+ {
66
+ "token": " week",
67
+ "base_enc": 0,
68
+ "byte_enc": 84,
69
+ "base_msg": 0,
70
+ "byte_msg": 84,
71
+ "byte_id": 0
72
+ },
73
+ {
74
+ "token": ",",
75
+ "base_enc": 1,
76
+ "byte_enc": 84,
77
+ "base_msg": 1,
78
+ "byte_msg": 84,
79
+ "byte_id": 0
80
+ },
81
+ {
82
+ "token": " I",
83
+ "base_enc": 0,
84
+ "byte_enc": 84,
85
+ "base_msg": 0,
86
+ "byte_msg": 84,
87
+ "byte_id": 0
88
+ },
89
+ {
90
+ "token": " had",
91
+ "base_enc": 1,
92
+ "byte_enc": 84,
93
+ "base_msg": 1,
94
+ "byte_msg": 84,
95
+ "byte_id": 0
96
+ },
97
+ {
98
+ "token": " some",
99
+ "base_enc": 0,
100
+ "byte_enc": 84,
101
+ "base_msg": 0,
102
+ "byte_msg": 84,
103
+ "byte_id": 0
104
+ },
105
+ {
106
+ "token": " good",
107
+ "base_enc": 0,
108
+ "byte_enc": 84,
109
+ "base_msg": 0,
110
+ "byte_msg": 84,
111
+ "byte_id": 0
112
+ },
113
+ {
114
+ "token": " news",
115
+ "base_enc": 0,
116
+ "byte_enc": 104,
117
+ "base_msg": 0,
118
+ "byte_msg": 104,
119
+ "byte_id": 1
120
+ },
121
+ {
122
+ "token": " for",
123
+ "base_enc": 1,
124
+ "byte_enc": 104,
125
+ "base_msg": 1,
126
+ "byte_msg": 104,
127
+ "byte_id": 1
128
+ },
129
+ {
130
+ "token": " you",
131
+ "base_enc": 1,
132
+ "byte_enc": 104,
133
+ "base_msg": 1,
134
+ "byte_msg": 104,
135
+ "byte_id": 1
136
+ },
137
+ {
138
+ "token": ":",
139
+ "base_enc": 0,
140
+ "byte_enc": 104,
141
+ "base_msg": 0,
142
+ "byte_msg": 104,
143
+ "byte_id": 1
144
+ },
145
+ {
146
+ "token": "\n",
147
+ "base_enc": 1,
148
+ "byte_enc": 104,
149
+ "base_msg": 1,
150
+ "byte_msg": 104,
151
+ "byte_id": 1
152
+ },
153
+ {
154
+ "token": "\n",
155
+ "base_enc": 0,
156
+ "byte_enc": 104,
157
+ "base_msg": 0,
158
+ "byte_msg": 104,
159
+ "byte_id": 1
160
+ },
161
+ {
162
+ "token": "You",
163
+ "base_enc": 0,
164
+ "byte_enc": 104,
165
+ "base_msg": 0,
166
+ "byte_msg": 104,
167
+ "byte_id": 1
168
+ },
169
+ {
170
+ "token": "'re",
171
+ "base_enc": 0,
172
+ "byte_enc": 104,
173
+ "base_msg": 0,
174
+ "byte_msg": 104,
175
+ "byte_id": 1
176
+ },
177
+ {
178
+ "token": " welcome",
179
+ "base_enc": 0,
180
+ "byte_enc": 105,
181
+ "base_msg": 0,
182
+ "byte_msg": 105,
183
+ "byte_id": 2
184
+ },
185
+ {
186
+ "token": "!",
187
+ "base_enc": 1,
188
+ "byte_enc": 105,
189
+ "base_msg": 1,
190
+ "byte_msg": 105,
191
+ "byte_id": 2
192
+ },
193
+ {
194
+ "token": "\n",
195
+ "base_enc": 1,
196
+ "byte_enc": 105,
197
+ "base_msg": 1,
198
+ "byte_msg": 105,
199
+ "byte_id": 2
200
+ },
201
+ {
202
+ "token": "\n",
203
+ "base_enc": 0,
204
+ "byte_enc": 105,
205
+ "base_msg": 0,
206
+ "byte_msg": 105,
207
+ "byte_id": 2
208
+ },
209
+ {
210
+ "token": "I",
211
+ "base_enc": 1,
212
+ "byte_enc": 105,
213
+ "base_msg": 1,
214
+ "byte_msg": 105,
215
+ "byte_id": 2
216
+ },
217
+ {
218
+ "token": " hope",
219
+ "base_enc": 0,
220
+ "byte_enc": 105,
221
+ "base_msg": 0,
222
+ "byte_msg": 105,
223
+ "byte_id": 2
224
+ },
225
+ {
226
+ "token": " you",
227
+ "base_enc": 0,
228
+ "byte_enc": 105,
229
+ "base_msg": 0,
230
+ "byte_msg": 105,
231
+ "byte_id": 2
232
+ },
233
+ {
234
+ "token": " have",
235
+ "base_enc": 1,
236
+ "byte_enc": 105,
237
+ "base_msg": 1,
238
+ "byte_msg": 105,
239
+ "byte_id": 2
240
+ },
241
+ {
242
+ "token": " fun",
243
+ "base_enc": 0,
244
+ "byte_enc": 115,
245
+ "base_msg": 0,
246
+ "byte_msg": 115,
247
+ "byte_id": 3
248
+ },
249
+ {
250
+ "token": " and",
251
+ "base_enc": 1,
252
+ "byte_enc": 115,
253
+ "base_msg": 1,
254
+ "byte_msg": 115,
255
+ "byte_id": 3
256
+ },
257
+ {
258
+ "token": " enjoy",
259
+ "base_enc": 1,
260
+ "byte_enc": 115,
261
+ "base_msg": 1,
262
+ "byte_msg": 115,
263
+ "byte_id": 3
264
+ },
265
+ {
266
+ "token": " it",
267
+ "base_enc": 1,
268
+ "byte_enc": 115,
269
+ "base_msg": 1,
270
+ "byte_msg": 115,
271
+ "byte_id": 3
272
+ },
273
+ {
274
+ "token": ",",
275
+ "base_enc": 0,
276
+ "byte_enc": 115,
277
+ "base_msg": 0,
278
+ "byte_msg": 115,
279
+ "byte_id": 3
280
+ },
281
+ {
282
+ "token": " and",
283
+ "base_enc": 0,
284
+ "byte_enc": 115,
285
+ "base_msg": 0,
286
+ "byte_msg": 115,
287
+ "byte_id": 3
288
+ },
289
+ {
290
+ "token": " I",
291
+ "base_enc": 1,
292
+ "byte_enc": 115,
293
+ "base_msg": 1,
294
+ "byte_msg": 115,
295
+ "byte_id": 3
296
+ },
297
+ {
298
+ "token": " hope",
299
+ "base_enc": 1,
300
+ "byte_enc": 115,
301
+ "base_msg": 1,
302
+ "byte_msg": 115,
303
+ "byte_id": 3
304
+ },
305
+ {
306
+ "token": " you",
307
+ "base_enc": 0,
308
+ "byte_enc": 32,
309
+ "base_msg": 0,
310
+ "byte_msg": 32,
311
+ "byte_id": 4
312
+ },
313
+ {
314
+ "token": " enjoy",
315
+ "base_enc": 0,
316
+ "byte_enc": 32,
317
+ "base_msg": 0,
318
+ "byte_msg": 32,
319
+ "byte_id": 4
320
+ },
321
+ {
322
+ "token": " this",
323
+ "base_enc": 1,
324
+ "byte_enc": 32,
325
+ "base_msg": 1,
326
+ "byte_msg": 32,
327
+ "byte_id": 4
328
+ },
329
+ {
330
+ "token": " week",
331
+ "base_enc": 0,
332
+ "byte_enc": 32,
333
+ "base_msg": 0,
334
+ "byte_msg": 32,
335
+ "byte_id": 4
336
+ },
337
+ {
338
+ "token": ".",
339
+ "base_enc": 0,
340
+ "byte_enc": 32,
341
+ "base_msg": 0,
342
+ "byte_msg": 32,
343
+ "byte_id": 4
344
+ },
345
+ {
346
+ "token": "\n",
347
+ "base_enc": 0,
348
+ "byte_enc": 32,
349
+ "base_msg": 0,
350
+ "byte_msg": 32,
351
+ "byte_id": 4
352
+ },
353
+ {
354
+ "token": "\n",
355
+ "base_enc": 0,
356
+ "byte_enc": 32,
357
+ "base_msg": 0,
358
+ "byte_msg": 32,
359
+ "byte_id": 4
360
+ },
361
+ {
362
+ "token": "Thanks",
363
+ "base_enc": 0,
364
+ "byte_enc": 32,
365
+ "base_msg": 0,
366
+ "byte_msg": 32,
367
+ "byte_id": 4
368
+ },
369
+ {
370
+ "token": " for",
371
+ "base_enc": 0,
372
+ "byte_enc": 105,
373
+ "base_msg": 0,
374
+ "byte_msg": 105,
375
+ "byte_id": 5
376
+ },
377
+ {
378
+ "token": " visiting",
379
+ "base_enc": 1,
380
+ "byte_enc": 105,
381
+ "base_msg": 1,
382
+ "byte_msg": 105,
383
+ "byte_id": 5
384
+ },
385
+ {
386
+ "token": " my",
387
+ "base_enc": 1,
388
+ "byte_enc": 105,
389
+ "base_msg": 1,
390
+ "byte_msg": 105,
391
+ "byte_id": 5
392
+ },
393
+ {
394
+ "token": " blog",
395
+ "base_enc": 0,
396
+ "byte_enc": 105,
397
+ "base_msg": 0,
398
+ "byte_msg": 105,
399
+ "byte_id": 5
400
+ },
401
+ {
402
+ "token": ".",
403
+ "base_enc": 1,
404
+ "byte_enc": 105,
405
+ "base_msg": 1,
406
+ "byte_msg": 105,
407
+ "byte_id": 5
408
+ },
409
+ {
410
+ "token": "\n",
411
+ "base_enc": 0,
412
+ "byte_enc": 105,
413
+ "base_msg": 0,
414
+ "byte_msg": 105,
415
+ "byte_id": 5
416
+ },
417
+ {
418
+ "token": "\n",
419
+ "base_enc": 0,
420
+ "byte_enc": 105,
421
+ "base_msg": 0,
422
+ "byte_msg": 105,
423
+ "byte_id": 5
424
+ },
425
+ {
426
+ "token": "Che",
427
+ "base_enc": 1,
428
+ "byte_enc": 105,
429
+ "base_msg": 1,
430
+ "byte_msg": 105,
431
+ "byte_id": 5
432
+ },
433
+ {
434
+ "token": "ers",
435
+ "base_enc": 0,
436
+ "byte_enc": 115,
437
+ "base_msg": 0,
438
+ "byte_msg": 115,
439
+ "byte_id": 6
440
+ },
441
+ {
442
+ "token": "!",
443
+ "base_enc": 1,
444
+ "byte_enc": 115,
445
+ "base_msg": 1,
446
+ "byte_msg": 115,
447
+ "byte_id": 6
448
+ },
449
+ {
450
+ "token": " 🙂",
451
+ "base_enc": 1,
452
+ "byte_enc": 115,
453
+ "base_msg": 1,
454
+ "byte_msg": 115,
455
+ "byte_id": 6
456
+ },
457
+ {
458
+ "token": "\n",
459
+ "base_enc": 1,
460
+ "byte_enc": 115,
461
+ "base_msg": 1,
462
+ "byte_msg": 115,
463
+ "byte_id": 6
464
+ },
465
+ {
466
+ "token": "\n",
467
+ "base_enc": 0,
468
+ "byte_enc": 115,
469
+ "base_msg": 0,
470
+ "byte_msg": 115,
471
+ "byte_id": 6
472
+ },
473
+ {
474
+ "token": "~",
475
+ "base_enc": 0,
476
+ "byte_enc": 115,
477
+ "base_msg": 0,
478
+ "byte_msg": 115,
479
+ "byte_id": 6
480
+ },
481
+ {
482
+ "token": "K",
483
+ "base_enc": 1,
484
+ "byte_enc": 115,
485
+ "base_msg": 1,
486
+ "byte_msg": 115,
487
+ "byte_id": 6
488
+ },
489
+ {
490
+ "token": "ara",
491
+ "base_enc": 1,
492
+ "byte_enc": 115,
493
+ "base_msg": 1,
494
+ "byte_msg": 115,
495
+ "byte_id": 6
496
+ },
497
+ {
498
+ "token": "\n",
499
+ "base_enc": 0,
500
+ "byte_enc": 32,
501
+ "base_msg": 0,
502
+ "byte_msg": 32,
503
+ "byte_id": 7
504
+ },
505
+ {
506
+ "token": "\n",
507
+ "base_enc": 0,
508
+ "byte_enc": 32,
509
+ "base_msg": 0,
510
+ "byte_msg": 32,
511
+ "byte_id": 7
512
+ },
513
+ {
514
+ "token": "Update",
515
+ "base_enc": 1,
516
+ "byte_enc": 32,
517
+ "base_msg": 1,
518
+ "byte_msg": 32,
519
+ "byte_id": 7
520
+ },
521
+ {
522
+ "token": ":",
523
+ "base_enc": 0,
524
+ "byte_enc": 32,
525
+ "base_msg": 0,
526
+ "byte_msg": 32,
527
+ "byte_id": 7
528
+ },
529
+ {
530
+ "token": " This",
531
+ "base_enc": 0,
532
+ "byte_enc": 32,
533
+ "base_msg": 0,
534
+ "byte_msg": 32,
535
+ "byte_id": 7
536
+ },
537
+ {
538
+ "token": " post",
539
+ "base_enc": 0,
540
+ "byte_enc": 32,
541
+ "base_msg": 0,
542
+ "byte_msg": 32,
543
+ "byte_id": 7
544
+ },
545
+ {
546
+ "token": " was",
547
+ "base_enc": 0,
548
+ "byte_enc": 32,
549
+ "base_msg": 0,
550
+ "byte_msg": 32,
551
+ "byte_id": 7
552
+ },
553
+ {
554
+ "token": " updated",
555
+ "base_enc": 0,
556
+ "byte_enc": 32,
557
+ "base_msg": 0,
558
+ "byte_msg": 32,
559
+ "byte_id": 7
560
+ },
561
+ {
562
+ "token": " to",
563
+ "base_enc": 0,
564
+ "byte_enc": 97,
565
+ "base_msg": 0,
566
+ "byte_msg": 97,
567
+ "byte_id": 8
568
+ },
569
+ {
570
+ "token": " add",
571
+ "base_enc": 1,
572
+ "byte_enc": 97,
573
+ "base_msg": 1,
574
+ "byte_msg": 97,
575
+ "byte_id": 8
576
+ },
577
+ {
578
+ "token": " a",
579
+ "base_enc": 1,
580
+ "byte_enc": 97,
581
+ "base_msg": 1,
582
+ "byte_msg": 97,
583
+ "byte_id": 8
584
+ },
585
+ {
586
+ "token": " new",
587
+ "base_enc": 0,
588
+ "byte_enc": 97,
589
+ "base_msg": 0,
590
+ "byte_msg": 97,
591
+ "byte_id": 8
592
+ },
593
+ {
594
+ "token": " comment",
595
+ "base_enc": 0,
596
+ "byte_enc": 97,
597
+ "base_msg": 0,
598
+ "byte_msg": 97,
599
+ "byte_id": 8
600
+ },
601
+ {
602
+ "token": " to",
603
+ "base_enc": 0,
604
+ "byte_enc": 97,
605
+ "base_msg": 0,
606
+ "byte_msg": 97,
607
+ "byte_id": 8
608
+ },
609
+ {
610
+ "token": " my",
611
+ "base_enc": 0,
612
+ "byte_enc": 97,
613
+ "base_msg": 0,
614
+ "byte_msg": 97,
615
+ "byte_id": 8
616
+ },
617
+ {
618
+ "token": " post",
619
+ "base_enc": 1,
620
+ "byte_enc": 97,
621
+ "base_msg": 1,
622
+ "byte_msg": 97,
623
+ "byte_id": 8
624
+ },
625
+ {
626
+ "token": " about",
627
+ "base_enc": 0,
628
+ "byte_enc": 32,
629
+ "base_msg": 0,
630
+ "byte_msg": 32,
631
+ "byte_id": 9
632
+ },
633
+ {
634
+ "token": " how",
635
+ "base_enc": 0,
636
+ "byte_enc": 32,
637
+ "base_msg": 0,
638
+ "byte_msg": 32,
639
+ "byte_id": 9
640
+ },
641
+ {
642
+ "token": " to",
643
+ "base_enc": 1,
644
+ "byte_enc": 32,
645
+ "base_msg": 1,
646
+ "byte_msg": 32,
647
+ "byte_id": 9
648
+ },
649
+ {
650
+ "token": " create",
651
+ "base_enc": 0,
652
+ "byte_enc": 32,
653
+ "base_msg": 0,
654
+ "byte_msg": 32,
655
+ "byte_id": 9
656
+ },
657
+ {
658
+ "token": " a",
659
+ "base_enc": 0,
660
+ "byte_enc": 32,
661
+ "base_msg": 0,
662
+ "byte_msg": 32,
663
+ "byte_id": 9
664
+ },
665
+ {
666
+ "token": " free",
667
+ "base_enc": 0,
668
+ "byte_enc": 32,
669
+ "base_msg": 0,
670
+ "byte_msg": 32,
671
+ "byte_id": 9
672
+ },
673
+ {
674
+ "token": " account",
675
+ "base_enc": 0,
676
+ "byte_enc": 32,
677
+ "base_msg": 0,
678
+ "byte_msg": 32,
679
+ "byte_id": 9
680
+ },
681
+ {
682
+ "token": ".",
683
+ "base_enc": 0,
684
+ "byte_enc": 32,
685
+ "base_msg": 0,
686
+ "byte_msg": 32,
687
+ "byte_id": 9
688
+ },
689
+ {
690
+ "token": " You",
691
+ "base_enc": 0,
692
+ "byte_enc": 110,
693
+ "base_msg": 0,
694
+ "byte_msg": 110,
695
+ "byte_id": 10
696
+ },
697
+ {
698
+ "token": " can",
699
+ "base_enc": 1,
700
+ "byte_enc": 110,
701
+ "base_msg": 1,
702
+ "byte_msg": 110,
703
+ "byte_id": 10
704
+ },
705
+ {
706
+ "token": " read",
707
+ "base_enc": 1,
708
+ "byte_enc": 110,
709
+ "base_msg": 1,
710
+ "byte_msg": 110,
711
+ "byte_id": 10
712
+ },
713
+ {
714
+ "token": " the",
715
+ "base_enc": 0,
716
+ "byte_enc": 110,
717
+ "base_msg": 0,
718
+ "byte_msg": 110,
719
+ "byte_id": 10
720
+ },
721
+ {
722
+ "token": " original",
723
+ "base_enc": 1,
724
+ "byte_enc": 110,
725
+ "base_msg": 1,
726
+ "byte_msg": 110,
727
+ "byte_id": 10
728
+ },
729
+ {
730
+ "token": " post",
731
+ "base_enc": 1,
732
+ "byte_enc": 110,
733
+ "base_msg": 1,
734
+ "byte_msg": 110,
735
+ "byte_id": 10
736
+ },
737
+ {
738
+ "token": " at",
739
+ "base_enc": 1,
740
+ "byte_enc": 110,
741
+ "base_msg": 1,
742
+ "byte_msg": 110,
743
+ "byte_id": 10
744
+ },
745
+ {
746
+ "token": ":",
747
+ "base_enc": 0,
748
+ "byte_enc": 110,
749
+ "base_msg": 0,
750
+ "byte_msg": 110,
751
+ "byte_id": 10
752
+ },
753
+ {
754
+ "token": " http",
755
+ "base_enc": 0,
756
+ "byte_enc": 105,
757
+ "base_msg": 0,
758
+ "byte_msg": 105,
759
+ "byte_id": 11
760
+ },
761
+ {
762
+ "token": "://",
763
+ "base_enc": 1,
764
+ "byte_enc": 105,
765
+ "base_msg": 1,
766
+ "byte_msg": 105,
767
+ "byte_id": 11
768
+ },
769
+ {
770
+ "token": "my",
771
+ "base_enc": 1,
772
+ "byte_enc": 105,
773
+ "base_msg": 1,
774
+ "byte_msg": 105,
775
+ "byte_id": 11
776
+ },
777
+ {
778
+ "token": ".",
779
+ "base_enc": 0,
780
+ "byte_enc": 105,
781
+ "base_msg": 0,
782
+ "byte_msg": 105,
783
+ "byte_id": 11
784
+ },
785
+ {
786
+ "token": "reddit",
787
+ "base_enc": 1,
788
+ "byte_enc": 105,
789
+ "base_msg": 1,
790
+ "byte_msg": 105,
791
+ "byte_id": 11
792
+ },
793
+ {
794
+ "token": ".",
795
+ "base_enc": 0,
796
+ "byte_enc": 105,
797
+ "base_msg": 0,
798
+ "byte_msg": 105,
799
+ "byte_id": 11
800
+ },
801
+ {
802
+ "token": "com",
803
+ "base_enc": 0,
804
+ "byte_enc": 105,
805
+ "base_msg": 0,
806
+ "byte_msg": 105,
807
+ "byte_id": 11
808
+ },
809
+ {
810
+ "token": "/",
811
+ "base_enc": 1,
812
+ "byte_enc": 105,
813
+ "base_msg": 1,
814
+ "byte_msg": 105,
815
+ "byte_id": 11
816
+ },
817
+ {
818
+ "token": "message",
819
+ "base_enc": 0,
820
+ "byte_enc": 99,
821
+ "base_msg": 0,
822
+ "byte_msg": 99,
823
+ "byte_id": 12
824
+ },
825
+ {
826
+ "token": "/",
827
+ "base_enc": 1,
828
+ "byte_enc": 99,
829
+ "base_msg": 1,
830
+ "byte_msg": 99,
831
+ "byte_id": 12
832
+ },
833
+ {
834
+ "token": "comments",
835
+ "base_enc": 1,
836
+ "byte_enc": 99,
837
+ "base_msg": 1,
838
+ "byte_msg": 99,
839
+ "byte_id": 12
840
+ },
841
+ {
842
+ "token": "/",
843
+ "base_enc": 0,
844
+ "byte_enc": 99,
845
+ "base_msg": 0,
846
+ "byte_msg": 99,
847
+ "byte_id": 12
848
+ },
849
+ {
850
+ "token": "1",
851
+ "base_enc": 0,
852
+ "byte_enc": 99,
853
+ "base_msg": 0,
854
+ "byte_msg": 99,
855
+ "byte_id": 12
856
+ },
857
+ {
858
+ "token": "u",
859
+ "base_enc": 0,
860
+ "byte_enc": 99,
861
+ "base_msg": 0,
862
+ "byte_msg": 99,
863
+ "byte_id": 12
864
+ },
865
+ {
866
+ "token": "7",
867
+ "base_enc": 1,
868
+ "byte_enc": 99,
869
+ "base_msg": 1,
870
+ "byte_msg": 99,
871
+ "byte_id": 12
872
+ },
873
+ {
874
+ "token": "j",
875
+ "base_enc": 1,
876
+ "byte_enc": 99,
877
+ "base_msg": 1,
878
+ "byte_msg": 99,
879
+ "byte_id": 12
880
+ },
881
+ {
882
+ "token": "3",
883
+ "base_enc": 0,
884
+ "byte_enc": 101,
885
+ "base_msg": 0,
886
+ "byte_msg": 101,
887
+ "byte_id": 13
888
+ },
889
+ {
890
+ "token": "p",
891
+ "base_enc": 1,
892
+ "byte_enc": 101,
893
+ "base_msg": 1,
894
+ "byte_msg": 101,
895
+ "byte_id": 13
896
+ },
897
+ {
898
+ "token": "/",
899
+ "base_enc": 1,
900
+ "byte_enc": 101,
901
+ "base_msg": 1,
902
+ "byte_msg": 101,
903
+ "byte_id": 13
904
+ },
905
+ {
906
+ "token": "this",
907
+ "base_enc": 0,
908
+ "byte_enc": 101,
909
+ "base_msg": 0,
910
+ "byte_msg": 101,
911
+ "byte_id": 13
912
+ },
913
+ {
914
+ "token": "_",
915
+ "base_enc": 0,
916
+ "byte_enc": 101,
917
+ "base_msg": 0,
918
+ "byte_msg": 101,
919
+ "byte_id": 13
920
+ },
921
+ {
922
+ "token": "is",
923
+ "base_enc": 1,
924
+ "byte_enc": 101,
925
+ "base_msg": 1,
926
+ "byte_msg": 101,
927
+ "byte_id": 13
928
+ },
929
+ {
930
+ "token": "_",
931
+ "base_enc": 0,
932
+ "byte_enc": 101,
933
+ "base_msg": 0,
934
+ "byte_msg": 101,
935
+ "byte_id": 13
936
+ },
937
+ {
938
+ "token": "what",
939
+ "base_enc": 1,
940
+ "byte_enc": 101,
941
+ "base_msg": 1,
942
+ "byte_msg": 101,
943
+ "byte_id": 13
944
+ },
945
+ {
946
+ "token": "_",
947
+ "base_enc": 0,
948
+ "byte_enc": 32,
949
+ "base_msg": 0,
950
+ "byte_msg": 32,
951
+ "byte_id": 14
952
+ },
953
+ {
954
+ "token": "i",
955
+ "base_enc": 0,
956
+ "byte_enc": 32,
957
+ "base_msg": 0,
958
+ "byte_msg": 32,
959
+ "byte_id": 14
960
+ },
961
+ {
962
+ "token": "_",
963
+ "base_enc": 1,
964
+ "byte_enc": 32,
965
+ "base_msg": 1,
966
+ "byte_msg": 32,
967
+ "byte_id": 14
968
+ },
969
+ {
970
+ "token": "w",
971
+ "base_enc": 0,
972
+ "byte_enc": 32,
973
+ "base_msg": 0,
974
+ "byte_msg": 32,
975
+ "byte_id": 14
976
+ },
977
+ {
978
+ "token": "anted",
979
+ "base_enc": 0,
980
+ "byte_enc": 32,
981
+ "base_msg": 0,
982
+ "byte_msg": 32,
983
+ "byte_id": 14
984
+ },
985
+ {
986
+ "token": "_",
987
+ "base_enc": 0,
988
+ "byte_enc": 32,
989
+ "base_msg": 0,
990
+ "byte_msg": 32,
991
+ "byte_id": 14
992
+ },
993
+ {
994
+ "token": "to",
995
+ "base_enc": 0,
996
+ "byte_enc": 32,
997
+ "base_msg": 0,
998
+ "byte_msg": 32,
999
+ "byte_id": 14
1000
+ },
1001
+ {
1002
+ "token": "/",
1003
+ "base_enc": 0,
1004
+ "byte_enc": 32,
1005
+ "base_msg": 0,
1006
+ "byte_msg": 32,
1007
+ "byte_id": 14
1008
+ },
1009
+ {
1010
+ "token": " (",
1011
+ "base_enc": 0,
1012
+ "byte_enc": 100,
1013
+ "base_msg": 0,
1014
+ "byte_msg": 100,
1015
+ "byte_id": 15
1016
+ },
1017
+ {
1018
+ "token": "I",
1019
+ "base_enc": 1,
1020
+ "byte_enc": 100,
1021
+ "base_msg": 1,
1022
+ "byte_msg": 100,
1023
+ "byte_id": 15
1024
+ },
1025
+ {
1026
+ "token": "'ve",
1027
+ "base_enc": 1,
1028
+ "byte_enc": 100,
1029
+ "base_msg": 1,
1030
+ "byte_msg": 100,
1031
+ "byte_id": 15
1032
+ },
1033
+ {
1034
+ "token": " updated",
1035
+ "base_enc": 0,
1036
+ "byte_enc": 100,
1037
+ "base_msg": 0,
1038
+ "byte_msg": 100,
1039
+ "byte_id": 15
1040
+ },
1041
+ {
1042
+ "token": " my",
1043
+ "base_enc": 0,
1044
+ "byte_enc": 100,
1045
+ "base_msg": 0,
1046
+ "byte_msg": 100,
1047
+ "byte_id": 15
1048
+ },
1049
+ {
1050
+ "token": " post",
1051
+ "base_enc": 1,
1052
+ "byte_enc": 100,
1053
+ "base_msg": 1,
1054
+ "byte_msg": 100,
1055
+ "byte_id": 15
1056
+ },
1057
+ {
1058
+ "token": " to",
1059
+ "base_enc": 0,
1060
+ "byte_enc": 100,
1061
+ "base_msg": 0,
1062
+ "byte_msg": 100,
1063
+ "byte_id": 15
1064
+ },
1065
+ {
1066
+ "token": " include",
1067
+ "base_enc": 0,
1068
+ "byte_enc": 100,
1069
+ "base_msg": 0,
1070
+ "byte_msg": 100,
1071
+ "byte_id": 15
1072
+ },
1073
+ {
1074
+ "token": " my",
1075
+ "base_enc": 0,
1076
+ "byte_enc": 97,
1077
+ "base_msg": 0,
1078
+ "byte_msg": 97,
1079
+ "byte_id": 16
1080
+ },
1081
+ {
1082
+ "token": " own",
1083
+ "base_enc": 1,
1084
+ "byte_enc": 97,
1085
+ "base_msg": 1,
1086
+ "byte_msg": 97,
1087
+ "byte_id": 16
1088
+ },
1089
+ {
1090
+ "token": " comments",
1091
+ "base_enc": 1,
1092
+ "byte_enc": 97,
1093
+ "base_msg": 1,
1094
+ "byte_msg": 97,
1095
+ "byte_id": 16
1096
+ },
1097
+ {
1098
+ "token": ",",
1099
+ "base_enc": 0,
1100
+ "byte_enc": 97,
1101
+ "base_msg": 0,
1102
+ "byte_msg": 97,
1103
+ "byte_id": 16
1104
+ },
1105
+ {
1106
+ "token": " so",
1107
+ "base_enc": 0,
1108
+ "byte_enc": 97,
1109
+ "base_msg": 0,
1110
+ "byte_msg": 97,
1111
+ "byte_id": 16
1112
+ },
1113
+ {
1114
+ "token": " check",
1115
+ "base_enc": 0,
1116
+ "byte_enc": 97,
1117
+ "base_msg": 0,
1118
+ "byte_msg": 97,
1119
+ "byte_id": 16
1120
+ },
1121
+ {
1122
+ "token": " out",
1123
+ "base_enc": 0,
1124
+ "byte_enc": 97,
1125
+ "base_msg": 0,
1126
+ "byte_msg": 97,
1127
+ "byte_id": 16
1128
+ },
1129
+ {
1130
+ "token": " my",
1131
+ "base_enc": 1,
1132
+ "byte_enc": 97,
1133
+ "base_msg": 1,
1134
+ "byte_msg": 97,
1135
+ "byte_id": 16
1136
+ },
1137
+ {
1138
+ "token": " blog",
1139
+ "base_enc": 0,
1140
+ "byte_enc": 121,
1141
+ "base_msg": 0,
1142
+ "byte_msg": 121,
1143
+ "byte_id": 17
1144
+ },
1145
+ {
1146
+ "token": " for",
1147
+ "base_enc": 1,
1148
+ "byte_enc": 121,
1149
+ "base_msg": 1,
1150
+ "byte_msg": 121,
1151
+ "byte_id": 17
1152
+ },
1153
+ {
1154
+ "token": " more",
1155
+ "base_enc": 1,
1156
+ "byte_enc": 121,
1157
+ "base_msg": 1,
1158
+ "byte_msg": 121,
1159
+ "byte_id": 17
1160
+ },
1161
+ {
1162
+ "token": " details",
1163
+ "base_enc": 1,
1164
+ "byte_enc": 121,
1165
+ "base_msg": 1,
1166
+ "byte_msg": 121,
1167
+ "byte_id": 17
1168
+ },
1169
+ {
1170
+ "token": ")",
1171
+ "base_enc": 1,
1172
+ "byte_enc": 121,
1173
+ "base_msg": 1,
1174
+ "byte_msg": 121,
1175
+ "byte_id": 17
1176
+ },
1177
+ {
1178
+ "token": "\n",
1179
+ "base_enc": 0,
1180
+ "byte_enc": 121,
1181
+ "base_msg": 0,
1182
+ "byte_msg": 121,
1183
+ "byte_id": 17
1184
+ },
1185
+ {
1186
+ "token": "\n",
1187
+ "base_enc": 0,
1188
+ "byte_enc": 121,
1189
+ "base_msg": 0,
1190
+ "byte_msg": 121,
1191
+ "byte_id": 17
1192
+ },
1193
+ {
1194
+ "token": "This",
1195
+ "base_enc": 1,
1196
+ "byte_enc": 121,
1197
+ "base_msg": 1,
1198
+ "byte_msg": 121,
1199
+ "byte_id": 17
1200
+ },
1201
+ {
1202
+ "token": " post",
1203
+ "base_enc": 0,
1204
+ "byte_enc": 4,
1205
+ "base_msg": -1,
1206
+ "byte_msg": -1,
1207
+ "byte_id": 18
1208
+ },
1209
+ {
1210
+ "token": " was",
1211
+ "base_enc": 0,
1212
+ "byte_enc": 4,
1213
+ "base_msg": -1,
1214
+ "byte_msg": -1,
1215
+ "byte_id": 18
1216
+ },
1217
+ {
1218
+ "token": " updated",
1219
+ "base_enc": 0,
1220
+ "byte_enc": 4,
1221
+ "base_msg": -1,
1222
+ "byte_msg": -1,
1223
+ "byte_id": 18
1224
+ },
1225
+ {
1226
+ "token": " to",
1227
+ "base_enc": 0,
1228
+ "byte_enc": 4,
1229
+ "base_msg": -1,
1230
+ "byte_msg": -1,
1231
+ "byte_id": 18
1232
+ },
1233
+ {
1234
+ "token": " include",
1235
+ "base_enc": 0,
1236
+ "byte_enc": 4,
1237
+ "base_msg": -1,
1238
+ "byte_msg": -1,
1239
+ "byte_id": 18
1240
+ },
1241
+ {
1242
+ "token": " a",
1243
+ "base_enc": 1,
1244
+ "byte_enc": 4,
1245
+ "base_msg": -1,
1246
+ "byte_msg": -1,
1247
+ "byte_id": 18
1248
+ },
1249
+ {
1250
+ "token": " new",
1251
+ "base_enc": 0,
1252
+ "byte_enc": 4,
1253
+ "base_msg": -1,
1254
+ "byte_msg": -1,
1255
+ "byte_id": 18
1256
+ },
1257
+ {
1258
+ "token": " comment",
1259
+ "base_enc": 0,
1260
+ "byte_enc": 4,
1261
+ "base_msg": -1,
1262
+ "byte_msg": -1,
1263
+ "byte_id": 18
1264
+ },
1265
+ {
1266
+ "token": " to",
1267
+ "base_enc": 0,
1268
+ "byte_enc": 36,
1269
+ "base_msg": -1,
1270
+ "byte_msg": -1,
1271
+ "byte_id": 19
1272
+ },
1273
+ {
1274
+ "token": " my",
1275
+ "base_enc": 0,
1276
+ "byte_enc": 36,
1277
+ "base_msg": -1,
1278
+ "byte_msg": -1,
1279
+ "byte_id": 19
1280
+ },
1281
+ {
1282
+ "token": " post",
1283
+ "base_enc": 1,
1284
+ "byte_enc": 36,
1285
+ "base_msg": -1,
1286
+ "byte_msg": -1,
1287
+ "byte_id": 19
1288
+ },
1289
+ {
1290
+ "token": " about",
1291
+ "base_enc": 0,
1292
+ "byte_enc": 36,
1293
+ "base_msg": -1,
1294
+ "byte_msg": -1,
1295
+ "byte_id": 19
1296
+ },
1297
+ {
1298
+ "token": " how",
1299
+ "base_enc": 0,
1300
+ "byte_enc": 36,
1301
+ "base_msg": -1,
1302
+ "byte_msg": -1,
1303
+ "byte_id": 19
1304
+ },
1305
+ {
1306
+ "token": " to",
1307
+ "base_enc": 1,
1308
+ "byte_enc": 36,
1309
+ "base_msg": -1,
1310
+ "byte_msg": -1,
1311
+ "byte_id": 19
1312
+ },
1313
+ {
1314
+ "token": " create",
1315
+ "base_enc": 0,
1316
+ "byte_enc": 36,
1317
+ "base_msg": -1,
1318
+ "byte_msg": -1,
1319
+ "byte_id": 19
1320
+ },
1321
+ {
1322
+ "token": " a",
1323
+ "base_enc": 0,
1324
+ "byte_enc": 36,
1325
+ "base_msg": -1,
1326
+ "byte_msg": -1,
1327
+ "byte_id": 19
1328
+ },
1329
+ {
1330
+ "token": " free",
1331
+ "base_enc": 0,
1332
+ "byte_enc": 13,
1333
+ "base_msg": -1,
1334
+ "byte_msg": -1,
1335
+ "byte_id": 20
1336
+ },
1337
+ {
1338
+ "token": " account",
1339
+ "base_enc": 0,
1340
+ "byte_enc": 13,
1341
+ "base_msg": -1,
1342
+ "byte_msg": -1,
1343
+ "byte_id": 20
1344
+ },
1345
+ {
1346
+ "token": ".",
1347
+ "base_enc": 0,
1348
+ "byte_enc": 13,
1349
+ "base_msg": -1,
1350
+ "byte_msg": -1,
1351
+ "byte_id": 20
1352
+ },
1353
+ {
1354
+ "token": " You",
1355
+ "base_enc": 0,
1356
+ "byte_enc": 13,
1357
+ "base_msg": -1,
1358
+ "byte_msg": -1,
1359
+ "byte_id": 20
1360
+ },
1361
+ {
1362
+ "token": " can",
1363
+ "base_enc": 1,
1364
+ "byte_enc": 13,
1365
+ "base_msg": -1,
1366
+ "byte_msg": -1,
1367
+ "byte_id": 20
1368
+ },
1369
+ {
1370
+ "token": " read",
1371
+ "base_enc": 1,
1372
+ "byte_enc": 13,
1373
+ "base_msg": -1,
1374
+ "byte_msg": -1,
1375
+ "byte_id": 20
1376
+ },
1377
+ {
1378
+ "token": " the",
1379
+ "base_enc": 0,
1380
+ "byte_enc": 13,
1381
+ "base_msg": -1,
1382
+ "byte_msg": -1,
1383
+ "byte_id": 20
1384
+ },
1385
+ {
1386
+ "token": " original",
1387
+ "base_enc": 1,
1388
+ "byte_enc": 13,
1389
+ "base_msg": -1,
1390
+ "byte_msg": -1,
1391
+ "byte_id": 20
1392
+ },
1393
+ {
1394
+ "token": " post",
1395
+ "base_enc": 1,
1396
+ "byte_enc": 205,
1397
+ "base_msg": -1,
1398
+ "byte_msg": -1,
1399
+ "byte_id": 21
1400
+ },
1401
+ {
1402
+ "token": " at",
1403
+ "base_enc": 1,
1404
+ "byte_enc": 205,
1405
+ "base_msg": -1,
1406
+ "byte_msg": -1,
1407
+ "byte_id": 21
1408
+ },
1409
+ {
1410
+ "token": ":",
1411
+ "base_enc": 0,
1412
+ "byte_enc": 205,
1413
+ "base_msg": -1,
1414
+ "byte_msg": -1,
1415
+ "byte_id": 21
1416
+ },
1417
+ {
1418
+ "token": " http",
1419
+ "base_enc": 0,
1420
+ "byte_enc": 205,
1421
+ "base_msg": -1,
1422
+ "byte_msg": -1,
1423
+ "byte_id": 21
1424
+ },
1425
+ {
1426
+ "token": "://",
1427
+ "base_enc": 1,
1428
+ "byte_enc": 205,
1429
+ "base_msg": -1,
1430
+ "byte_msg": -1,
1431
+ "byte_id": 21
1432
+ },
1433
+ {
1434
+ "token": "my",
1435
+ "base_enc": 1,
1436
+ "byte_enc": 205,
1437
+ "base_msg": -1,
1438
+ "byte_msg": -1,
1439
+ "byte_id": 21
1440
+ },
1441
+ {
1442
+ "token": ".",
1443
+ "base_enc": 0,
1444
+ "byte_enc": 205,
1445
+ "base_msg": -1,
1446
+ "byte_msg": -1,
1447
+ "byte_id": 21
1448
+ },
1449
+ {
1450
+ "token": "reddit",
1451
+ "base_enc": 1,
1452
+ "byte_enc": 205,
1453
+ "base_msg": -1,
1454
+ "byte_msg": -1,
1455
+ "byte_id": 21
1456
+ },
1457
+ {
1458
+ "token": ".",
1459
+ "base_enc": 0,
1460
+ "byte_enc": 44,
1461
+ "base_msg": -1,
1462
+ "byte_msg": -1,
1463
+ "byte_id": 22
1464
+ },
1465
+ {
1466
+ "token": "com",
1467
+ "base_enc": 0,
1468
+ "byte_enc": 44,
1469
+ "base_msg": -1,
1470
+ "byte_msg": -1,
1471
+ "byte_id": 22
1472
+ },
1473
+ {
1474
+ "token": "/",
1475
+ "base_enc": 1,
1476
+ "byte_enc": 44,
1477
+ "base_msg": -1,
1478
+ "byte_msg": -1,
1479
+ "byte_id": 22
1480
+ },
1481
+ {
1482
+ "token": "message",
1483
+ "base_enc": 0,
1484
+ "byte_enc": 44,
1485
+ "base_msg": -1,
1486
+ "byte_msg": -1,
1487
+ "byte_id": 22
1488
+ },
1489
+ {
1490
+ "token": "/",
1491
+ "base_enc": 1,
1492
+ "byte_enc": 44,
1493
+ "base_msg": -1,
1494
+ "byte_msg": -1,
1495
+ "byte_id": 22
1496
+ },
1497
+ {
1498
+ "token": "comments",
1499
+ "base_enc": 1,
1500
+ "byte_enc": 44,
1501
+ "base_msg": -1,
1502
+ "byte_msg": -1,
1503
+ "byte_id": 22
1504
+ },
1505
+ {
1506
+ "token": "/",
1507
+ "base_enc": 0,
1508
+ "byte_enc": 44,
1509
+ "base_msg": -1,
1510
+ "byte_msg": -1,
1511
+ "byte_id": 22
1512
+ },
1513
+ {
1514
+ "token": "1",
1515
+ "base_enc": 0,
1516
+ "byte_enc": 44,
1517
+ "base_msg": -1,
1518
+ "byte_msg": -1,
1519
+ "byte_id": 22
1520
+ },
1521
+ {
1522
+ "token": "u",
1523
+ "base_enc": 0,
1524
+ "byte_enc": 108,
1525
+ "base_msg": -1,
1526
+ "byte_msg": -1,
1527
+ "byte_id": 23
1528
+ },
1529
+ {
1530
+ "token": "7",
1531
+ "base_enc": 1,
1532
+ "byte_enc": 108,
1533
+ "base_msg": -1,
1534
+ "byte_msg": -1,
1535
+ "byte_id": 23
1536
+ },
1537
+ {
1538
+ "token": "j",
1539
+ "base_enc": 1,
1540
+ "byte_enc": 108,
1541
+ "base_msg": -1,
1542
+ "byte_msg": -1,
1543
+ "byte_id": 23
1544
+ },
1545
+ {
1546
+ "token": "3",
1547
+ "base_enc": 0,
1548
+ "byte_enc": 108,
1549
+ "base_msg": -1,
1550
+ "byte_msg": -1,
1551
+ "byte_id": 23
1552
+ },
1553
+ {
1554
+ "token": "p",
1555
+ "base_enc": 1,
1556
+ "byte_enc": 108,
1557
+ "base_msg": -1,
1558
+ "byte_msg": -1,
1559
+ "byte_id": 23
1560
+ },
1561
+ {
1562
+ "token": "/",
1563
+ "base_enc": 1,
1564
+ "byte_enc": 108,
1565
+ "base_msg": -1,
1566
+ "byte_msg": -1,
1567
+ "byte_id": 23
1568
+ },
1569
+ {
1570
+ "token": "this",
1571
+ "base_enc": 0,
1572
+ "byte_enc": 108,
1573
+ "base_msg": -1,
1574
+ "byte_msg": -1,
1575
+ "byte_id": 23
1576
+ },
1577
+ {
1578
+ "token": "_",
1579
+ "base_enc": 0,
1580
+ "byte_enc": 108,
1581
+ "base_msg": -1,
1582
+ "byte_msg": -1,
1583
+ "byte_id": 23
1584
+ },
1585
+ {
1586
+ "token": "is",
1587
+ "base_enc": 1,
1588
+ "byte_enc": 164,
1589
+ "base_msg": -1,
1590
+ "byte_msg": -1,
1591
+ "byte_id": 24
1592
+ },
1593
+ {
1594
+ "token": "_",
1595
+ "base_enc": 0,
1596
+ "byte_enc": 164,
1597
+ "base_msg": -1,
1598
+ "byte_msg": -1,
1599
+ "byte_id": 24
1600
+ },
1601
+ {
1602
+ "token": "what",
1603
+ "base_enc": 1,
1604
+ "byte_enc": 164,
1605
+ "base_msg": -1,
1606
+ "byte_msg": -1,
1607
+ "byte_id": 24
1608
+ },
1609
+ {
1610
+ "token": "_",
1611
+ "base_enc": 0,
1612
+ "byte_enc": 164,
1613
+ "base_msg": -1,
1614
+ "byte_msg": -1,
1615
+ "byte_id": 24
1616
+ },
1617
+ {
1618
+ "token": "i",
1619
+ "base_enc": 0,
1620
+ "byte_enc": 164,
1621
+ "base_msg": -1,
1622
+ "byte_msg": -1,
1623
+ "byte_id": 24
1624
+ },
1625
+ {
1626
+ "token": "_",
1627
+ "base_enc": 1,
1628
+ "byte_enc": 164,
1629
+ "base_msg": -1,
1630
+ "byte_msg": -1,
1631
+ "byte_id": 24
1632
+ },
1633
+ {
1634
+ "token": "w",
1635
+ "base_enc": 0,
1636
+ "byte_enc": 164,
1637
+ "base_msg": -1,
1638
+ "byte_msg": -1,
1639
+ "byte_id": 24
1640
+ },
1641
+ {
1642
+ "token": "anted",
1643
+ "base_enc": 0,
1644
+ "byte_enc": 164,
1645
+ "base_msg": -1,
1646
+ "byte_msg": -1,
1647
+ "byte_id": 24
1648
+ },
1649
+ {
1650
+ "token": "_",
1651
+ "base_enc": 0,
1652
+ "byte_enc": 0,
1653
+ "base_msg": -1,
1654
+ "byte_msg": -1,
1655
+ "byte_id": 25
1656
+ },
1657
+ {
1658
+ "token": "to",
1659
+ "base_enc": 0,
1660
+ "byte_enc": 0,
1661
+ "base_msg": -1,
1662
+ "byte_msg": -1,
1663
+ "byte_id": 25
1664
+ },
1665
+ {
1666
+ "token": "/",
1667
+ "base_enc": 0,
1668
+ "byte_enc": 0,
1669
+ "base_msg": -1,
1670
+ "byte_msg": -1,
1671
+ "byte_id": 25
1672
+ }
1673
+ ]
1674
+ }
1675
+ },
1676
+ "configs": {
1677
+ "response": {
1678
+ "default": {
1679
+ "encrypt": {
1680
+ "gen_model": "gpt2",
1681
+ "start_pos": 0,
1682
+ "delta": 10,
1683
+ "msg_base": 2,
1684
+ "seed_scheme": "sha_left_hash",
1685
+ "window_length": 1,
1686
+ "private_key": 0,
1687
+ "max_new_tokens_ratio": 2,
1688
+ "num_beams": 4,
1689
+ "repetition_penalty": 1
1690
+ },
1691
+ "decrypt": {
1692
+ "gen_model": "gpt2",
1693
+ "msg_base": 2,
1694
+ "seed_scheme": "sha_left_hash",
1695
+ "window_length": 1,
1696
+ "private_key": 0
1697
+ }
1698
+ },
1699
+ "seed_schemes": ["dummy_hash", "sha_left_hash"],
1700
+ "models": [
1701
+ "gpt2",
1702
+ "gpt2_medium",
1703
+ "gpt2_large",
1704
+ "gpt2_xl",
1705
+ "llama_3_8b_intruct",
1706
+ "opt_125m",
1707
+ "opt_1.3b",
1708
+ "opt_2.7b",
1709
+ "opt_6.7b",
1710
+ "opt_13b"
1711
+ ]
1712
+ }
1713
+ }
1714
+ }
schemes.py CHANGED
@@ -1,8 +1,14 @@
 
 
 
1
  from pydantic import BaseModel, Field
 
2
  from global_config import GlobalConfig
3
  from model_factory import ModelFactory
4
  from seed_scheme_factory import SeedSchemeFactory
5
- from typing import Literal
 
 
6
 
7
 
8
  class EncryptionBody(BaseModel):
@@ -59,6 +65,9 @@ class EncryptionBody(BaseModel):
59
  title="Penalty used to avoid repetition when sampling tokens",
60
  ge=1,
61
  )
 
 
 
62
 
63
 
64
  class DecryptionBody(BaseModel):
@@ -86,3 +95,6 @@ class DecryptionBody(BaseModel):
86
  title="Private key used to compute the seed for PRF",
87
  ge=0,
88
  )
 
 
 
 
1
+ import json
2
+ from typing import Literal
3
+
4
  from pydantic import BaseModel, Field
5
+
6
  from global_config import GlobalConfig
7
  from model_factory import ModelFactory
8
  from seed_scheme_factory import SeedSchemeFactory
9
+
10
+ with open("resources/examples.json", "r") as f:
11
+ examples = json.load(f)
12
 
13
 
14
  class EncryptionBody(BaseModel):
 
65
  title="Penalty used to avoid repetition when sampling tokens",
66
  ge=1,
67
  )
68
+ model_config = {
69
+ "json_schema_extra": {"examples": [examples["encrypt"]["request"]]}
70
+ }
71
 
72
 
73
  class DecryptionBody(BaseModel):
 
95
  title="Private key used to compute the seed for PRF",
96
  ge=0,
97
  )
98
+ model_config = {
99
+ "json_schema_extra": {"examples": [examples["decrypt"]["request"]]}
100
+ }