zkjson 0.6.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +537 -0
- package/assets/collection.png +0 -0
- package/assets/db.png +0 -0
- package/assets/encode.png +0 -0
- package/assets/query.png +0 -0
- package/assets/rollup.png +0 -0
- package/assets/structure.png +0 -0
- package/assets/weavedb.png +0 -0
- package/assets/zkjson.png +0 -0
- package/benchmark/components/ui/avatar.jsx +49 -0
- package/benchmark/components/ui/checkbox.jsx +17 -0
- package/benchmark/components/ui/close-button.jsx +20 -0
- package/benchmark/components/ui/color-mode.jsx +89 -0
- package/benchmark/components/ui/dialog.jsx +54 -0
- package/benchmark/components/ui/drawer.jsx +44 -0
- package/benchmark/components/ui/field.jsx +22 -0
- package/benchmark/components/ui/input-group.jsx +39 -0
- package/benchmark/components/ui/popover.jsx +49 -0
- package/benchmark/components/ui/provider.jsx +12 -0
- package/benchmark/components/ui/radio.jsx +17 -0
- package/benchmark/components/ui/slider.jsx +107 -0
- package/benchmark/components/ui/tooltip.jsx +35 -0
- package/benchmark/jsconfig.json +7 -0
- package/benchmark/lib/cbor.js +387 -0
- package/benchmark/lib/msgpack.js +651 -0
- package/benchmark/next.config.mjs +6 -0
- package/benchmark/package.json +22 -0
- package/benchmark/pages/_app.js +9 -0
- package/benchmark/pages/_document.js +13 -0
- package/benchmark/pages/api/hello.js +5 -0
- package/benchmark/pages/index.js +438 -0
- package/benchmark/public/favicon.ico +0 -0
- package/benchmark/public/file.svg +1 -0
- package/benchmark/public/globe.svg +1 -0
- package/benchmark/public/next.svg +1 -0
- package/benchmark/public/vercel.svg +1 -0
- package/benchmark/public/window.svg +1 -0
- package/benchmark/yarn.lock +2448 -0
- package/circom/collection/collection.circom +32 -0
- package/circom/collection/compile.sh +10 -0
- package/circom/collection/gen.js +34 -0
- package/circom/collection/generateInput.js +10 -0
- package/circom/collection/index.circom +4 -0
- package/circom/collection/test.js +21 -0
- package/circom/collection/verifier.sol +247 -0
- package/circom/db/compile.sh +10 -0
- package/circom/db/db.circom +39 -0
- package/circom/db/gen.js +30 -0
- package/circom/db/generateInput.js +10 -0
- package/circom/db/index.circom +4 -0
- package/circom/db/test.js +21 -0
- package/circom/db/verifier.sol +261 -0
- package/circom/ipfs/calculate_total.circom +17 -0
- package/circom/ipfs/compile.sh +10 -0
- package/circom/ipfs/gen.js +18 -0
- package/circom/ipfs/generateInput.js +10 -0
- package/circom/ipfs/index.circom +4 -0
- package/circom/ipfs/ipfs.circom +62 -0
- package/circom/ipfs/parse.circom +289 -0
- package/circom/ipfs/sha256.circom +99 -0
- package/circom/ipfs/test.js +167 -0
- package/circom/ipfs/verifier.sol +261 -0
- package/circom/json/compile.sh +10 -0
- package/circom/json/gen.js +22 -0
- package/circom/json/gen2.js +21 -0
- package/circom/json/generateInput.js +20 -0
- package/circom/json/index.circom +4 -0
- package/circom/json/json.circom +81 -0
- package/circom/json/test.js +100 -0
- package/circom/json/verifier.sol +247 -0
- package/circom/query/compile.sh +10 -0
- package/circom/query/gen.js +28 -0
- package/circom/query/generateInput.js +11 -0
- package/circom/query/index.circom +4 -0
- package/circom/query/query.circom +58 -0
- package/circom/query/test.js +20 -0
- package/circom/query/verifier.sol +177 -0
- package/circom/rollup/compile.sh +10 -0
- package/circom/rollup/gen.js +36 -0
- package/circom/rollup/generateInput.js +11 -0
- package/circom/rollup/index.circom +4 -0
- package/circom/rollup/rollup.circom +43 -0
- package/circom/rollup/test.js +35 -0
- package/circom/rollup/verifier.sol +240 -0
- package/circom/scripts/ceremony.js +39 -0
- package/circom/scripts/ceremony.sh +6 -0
- package/circom/scripts/compile.js +113 -0
- package/circom/scripts/compile.sh +16 -0
- package/circom/utils/uint.circom +512 -0
- package/circom/utils/utils.circom +628 -0
- package/demos/arweave/jsconfig.json +7 -0
- package/demos/arweave/lib/ZKArweave.json +617 -0
- package/demos/arweave/lib/encoder.js +375 -0
- package/demos/arweave/next.config.js +6 -0
- package/demos/arweave/package.json +26 -0
- package/demos/arweave/pages/_app.js +9 -0
- package/demos/arweave/pages/_document.js +19 -0
- package/demos/arweave/pages/api/arweave.js +31 -0
- package/demos/arweave/pages/api/hello.js +5 -0
- package/demos/arweave/pages/index.js +869 -0
- package/demos/arweave/public/circuit.wasm +0 -0
- package/demos/arweave/public/circuit_final.zkey +0 -0
- package/demos/arweave/public/verification_key.json +149 -0
- package/demos/arweave/vercel.json +7 -0
- package/demos/arweave/yarn.lock +2510 -0
- package/demos/simple/jsconfig.json +7 -0
- package/demos/simple/lib/encoder.js +375 -0
- package/demos/simple/next.config.js +6 -0
- package/demos/simple/package.json +24 -0
- package/demos/simple/pages/_app.js +9 -0
- package/demos/simple/pages/_document.js +13 -0
- package/demos/simple/pages/api/hello.js +5 -0
- package/demos/simple/pages/index.js +342 -0
- package/demos/simple/public/circuit.wasm +0 -0
- package/demos/simple/public/circuit_final.zkey +0 -0
- package/demos/simple/public/verification_key.json +149 -0
- package/demos/simple/yarn.lock +2519 -0
- package/docs/README.md +17 -0
- package/docs/simple-zkjson.md +210 -0
- package/docs/solidity-contracts.md +216 -0
- package/docs/zk-circuits.md +125 -0
- package/docs/zkdb-rollup.md +218 -0
- package/docs/zkjson-sdk.md +254 -0
- package/docs/zkjson-v1_5.md +365 -0
- package/package.json +16 -7
- package/sdk/contracts/NORollup.sol +13 -0
- package/sdk/package.json +15 -0
- package/sdk/yarn.lock +881 -0
- package/solidity/README.md +13 -0
- package/solidity/arguments.js +4 -0
- package/solidity/contracts/NORollup.sol +13 -0
- package/solidity/contracts/OPRollup.sol +14 -0
- package/solidity/contracts/ZKIPFS.sol +95 -0
- package/solidity/contracts/ZKJson.sol +21 -0
- package/solidity/contracts/ZKQuery.sol +286 -0
- package/solidity/contracts/ZKRollup.sol +35 -0
- package/solidity/contracts/apps/NORU.sol +66 -0
- package/solidity/contracts/apps/SimpleJSON.sol +64 -0
- package/solidity/contracts/apps/SimpleOPRU.sol +67 -0
- package/solidity/contracts/apps/SimpleRU.sol +67 -0
- package/solidity/contracts/apps/Token.sol +12 -0
- package/solidity/contracts/apps/ZKArweave.sol +89 -0
- package/solidity/contracts/apps/ZKBridge.sol +74 -0
- package/solidity/contracts/apps/ZKNFT.sol +63 -0
- package/solidity/contracts/verifiers/verifier_db.sol +275 -0
- package/solidity/contracts/verifiers/verifier_ipfs.sol +464 -0
- package/solidity/contracts/verifiers/verifier_json.sol +261 -0
- package/solidity/contracts/verifiers/verifier_rollup.sol +240 -0
- package/solidity/package.json +27 -0
- package/solidity/scripts/deploy.js +33 -0
- package/solidity/test/NORU.js +66 -0
- package/solidity/test/ZKArweave.js +97 -0
- package/solidity/test/arweave.js +55 -0
- package/solidity/test/bridge.js +71 -0
- package/solidity/test/simple.js +76 -0
- package/solidity/test/simpleOPRU.js +98 -0
- package/solidity/test/simpleRU.js +94 -0
- package/solidity/test/zknft.js +98 -0
- package/solidity/yarn.lock +4152 -0
- package/test/test.js +304 -0
- /package/{circomlibjs.js → sdk/circomlibjs.js} +0 -0
- /package/{collection.js → sdk/collection.js} +0 -0
- /package/{contracts → sdk/contracts}/OPRollup.sol +0 -0
- /package/{contracts → sdk/contracts}/ZKIPFS.sol +0 -0
- /package/{contracts → sdk/contracts}/ZKJson.sol +0 -0
- /package/{contracts → sdk/contracts}/ZKQuery.sol +0 -0
- /package/{contracts → sdk/contracts}/ZKRollup.sol +0 -0
- /package/{contracts → sdk/contracts}/apps/SimpleJSON.sol +0 -0
- /package/{contracts → sdk/contracts}/apps/SimpleOPRU.sol +0 -0
- /package/{contracts → sdk/contracts}/apps/SimpleRU.sol +0 -0
- /package/{contracts → sdk/contracts}/apps/Token.sol +0 -0
- /package/{contracts → sdk/contracts}/apps/ZKArweave.sol +0 -0
- /package/{contracts → sdk/contracts}/apps/ZKBridge.sol +0 -0
- /package/{contracts → sdk/contracts}/apps/ZKNFT.sol +0 -0
- /package/{contracts → sdk/contracts}/verifiers/verifier_db.sol +0 -0
- /package/{contracts → sdk/contracts}/verifiers/verifier_ipfs.sol +0 -0
- /package/{contracts → sdk/contracts}/verifiers/verifier_json.sol +0 -0
- /package/{contracts → sdk/contracts}/verifiers/verifier_rollup.sol +0 -0
- /package/{db.js → sdk/db.js} +0 -0
- /package/{doc.js → sdk/doc.js} +0 -0
- /package/{encoder-v1_5.js → sdk/encoder-v1_5.js} +0 -0
- /package/{encoder.js → sdk/encoder.js} +0 -0
- /package/{index.js → sdk/index.js} +0 -0
- /package/{json.js → sdk/json.js} +0 -0
- /package/{nft.js → sdk/nft.js} +0 -0
- /package/{parse.js → sdk/parse.js} +0 -0
- /package/{uint.js → sdk/uint.js} +0 -0
@@ -0,0 +1,628 @@
|
|
1
|
+
pragma circom 2.1.5;
|
2
|
+
|
3
|
+
function digits (x) {
|
4
|
+
var p = 0;
|
5
|
+
while(x > 0){
|
6
|
+
x = x \ 10;
|
7
|
+
p++;
|
8
|
+
}
|
9
|
+
return p;
|
10
|
+
}
|
11
|
+
|
12
|
+
function g(json, _c){
|
13
|
+
if(_c[5] == 1){
|
14
|
+
return [0, _c[1], 0, 0, 0, 1, _c[6], _c[7], _c[8]];
|
15
|
+
}
|
16
|
+
var prev = 0;
|
17
|
+
for(var j = _c[2]; j < _c[1]; j++){
|
18
|
+
var is = json[j] > 0 ? 1 : 0;
|
19
|
+
var is2 = json[j] < 0 ? 1 : 0;
|
20
|
+
var is3 = 100 > 0 ? 1 : 0;
|
21
|
+
var d = digits(json[j]);
|
22
|
+
|
23
|
+
if(json[j] > 0){
|
24
|
+
var p = _c[4] == 0 ? digits(json[j]) : _c[4];
|
25
|
+
var x = _c[4] == 0 ? json[j] : _c[3];
|
26
|
+
var cur = 0;
|
27
|
+
var num = 0;
|
28
|
+
var is9 = 0;
|
29
|
+
var first = _c[4] == 0 ? 1 : 0;
|
30
|
+
var zero = _c[4] == 0 ? 0 : _c[7];
|
31
|
+
var on = zero == 1 ? 1 : 0;
|
32
|
+
var len = _c[4] == 0 ? 0 : _c[8];
|
33
|
+
while(p > 0){
|
34
|
+
var n = x \ 10 ** (p - 1);
|
35
|
+
if(first == 1){
|
36
|
+
first = 0;
|
37
|
+
}else if(on == 0){
|
38
|
+
if(n == 0){
|
39
|
+
if(zero == 0){
|
40
|
+
zero = 1;
|
41
|
+
}else{
|
42
|
+
return [0, _c[1], 0, 0, 0, 1, _c[6], 0, 0];
|
43
|
+
}
|
44
|
+
}else if(zero == 1){
|
45
|
+
on = 1;
|
46
|
+
len = n;
|
47
|
+
is9 = 0;
|
48
|
+
}else if(n == 9){
|
49
|
+
on = 1;
|
50
|
+
len = 8;
|
51
|
+
is9 = 1;
|
52
|
+
}else{
|
53
|
+
on = 1;
|
54
|
+
len = n;
|
55
|
+
is9 = 0;
|
56
|
+
}
|
57
|
+
cur = 0;
|
58
|
+
}else if(on == 1){
|
59
|
+
num += n * 10 ** (len - cur - 1);
|
60
|
+
cur++;
|
61
|
+
if(zero == 1){
|
62
|
+
num = n;
|
63
|
+
len--;
|
64
|
+
x -= 10 ** (p - 1) * n;
|
65
|
+
p--;
|
66
|
+
var done = 0;
|
67
|
+
if(p == 0) {
|
68
|
+
j++;
|
69
|
+
if(_c[1] == j || json[j] == 0){
|
70
|
+
x = 0;
|
71
|
+
done = 1;
|
72
|
+
}else{
|
73
|
+
x = json[j];
|
74
|
+
}
|
75
|
+
}
|
76
|
+
if(len == 0) zero = 0;
|
77
|
+
return [num, _c[1], j, x, p, done, _c[6], zero, len];
|
78
|
+
}else if(cur == len){
|
79
|
+
prev *= 10 ** len;
|
80
|
+
if(is9 == 1){
|
81
|
+
prev += num;
|
82
|
+
}else{
|
83
|
+
num += prev;
|
84
|
+
x -= 10 ** (p - 1) * n;
|
85
|
+
p--;
|
86
|
+
var done = 0;
|
87
|
+
if(p == 0) {
|
88
|
+
j++;
|
89
|
+
if(_c[1] == j || json[j] == 0){
|
90
|
+
x = 0;
|
91
|
+
done = 1;
|
92
|
+
}else{
|
93
|
+
x = json[j];
|
94
|
+
}
|
95
|
+
}
|
96
|
+
return [num, _c[1], j, x, p, done, _c[6], zero, len];
|
97
|
+
}
|
98
|
+
cur = 0;
|
99
|
+
on = 0;
|
100
|
+
len = 0;
|
101
|
+
num = 0;
|
102
|
+
is9 = 0;
|
103
|
+
zero = 0;
|
104
|
+
}
|
105
|
+
}
|
106
|
+
x -= 10 ** (p - 1) * n;
|
107
|
+
p--;
|
108
|
+
}
|
109
|
+
}else{
|
110
|
+
return [0, _c[1], 0, 0, 0, 1, _c[6], 0, 0];
|
111
|
+
}
|
112
|
+
}
|
113
|
+
return [0, _c[1], 0, 0, 0, 1, _c[6], 0, 0];
|
114
|
+
}
|
115
|
+
|
116
|
+
function getLen(size_json, json){
|
117
|
+
var ji = 0;
|
118
|
+
var prev = 0;
|
119
|
+
for(var j = 0; j < size_json; j++){
|
120
|
+
if(json[j] > 0){
|
121
|
+
var p = digits(json[j]);
|
122
|
+
var x = json[j];
|
123
|
+
var on = 0;
|
124
|
+
var cur = 0;
|
125
|
+
var len = 0;
|
126
|
+
var num = 0;
|
127
|
+
var is9 = 0;
|
128
|
+
var first = 1;
|
129
|
+
var zero = 0;
|
130
|
+
while(p > 0){
|
131
|
+
var n = x \ 10 ** (p - 1);
|
132
|
+
if(first == 1){
|
133
|
+
first = 0;
|
134
|
+
}else if(on == 0){
|
135
|
+
if (n == 0){
|
136
|
+
if(zero == 0){
|
137
|
+
zero = 1;
|
138
|
+
}else{
|
139
|
+
return ji;
|
140
|
+
}
|
141
|
+
} else if(zero == 1){
|
142
|
+
on = 1;
|
143
|
+
len = n;
|
144
|
+
is9 = 0;
|
145
|
+
} else if(n == 9){
|
146
|
+
len = 8;
|
147
|
+
is9 = 1;
|
148
|
+
on = 1;
|
149
|
+
}else{
|
150
|
+
len = n;
|
151
|
+
is9 = 0;
|
152
|
+
on = 1;
|
153
|
+
}
|
154
|
+
cur = 0;
|
155
|
+
}else if(on == 1){
|
156
|
+
num += n * 10 ** (len - cur - 1);
|
157
|
+
cur++;
|
158
|
+
if(zero == 1){
|
159
|
+
num = n;
|
160
|
+
len--;
|
161
|
+
ji++;
|
162
|
+
if(len == 0){
|
163
|
+
zero = 0;
|
164
|
+
cur = 0;
|
165
|
+
on = 0;
|
166
|
+
num = 0;
|
167
|
+
is9 = 0;
|
168
|
+
}
|
169
|
+
}else if(cur == len){
|
170
|
+
prev *= 10 ** len;
|
171
|
+
if(is9 == 1){
|
172
|
+
prev += num;
|
173
|
+
}else{
|
174
|
+
num += prev;
|
175
|
+
prev = 0;
|
176
|
+
ji++;
|
177
|
+
}
|
178
|
+
cur = 0;
|
179
|
+
on = 0;
|
180
|
+
len = 0;
|
181
|
+
num = 0;
|
182
|
+
is9 = 0;
|
183
|
+
}
|
184
|
+
}
|
185
|
+
x -= 10 ** (p - 1) * n;
|
186
|
+
p--;
|
187
|
+
}
|
188
|
+
}else{
|
189
|
+
return ji;
|
190
|
+
}
|
191
|
+
}
|
192
|
+
return ji;
|
193
|
+
}
|
194
|
+
|
195
|
+
function checkPartialMatch(_exists, size_path, size_val, path, _path_start, pi, val, _val_start, vi, json, partial ,count){
|
196
|
+
var path_len = getLen(size_path, path);
|
197
|
+
var pi3 = 0;
|
198
|
+
var pi4 = 0;
|
199
|
+
var partial_path[9];
|
200
|
+
var partial_val[9];
|
201
|
+
var path_diff = 0;
|
202
|
+
|
203
|
+
var _path2_[9] = [0, size_path, 0,0,0,0,0,0,0];
|
204
|
+
_path2_ = g(path, _path2_);
|
205
|
+
var _path3_[9] = _path_start;
|
206
|
+
path_diff = _path3_[0] - _path2_[0];
|
207
|
+
|
208
|
+
for(var i5 = 0; i5 < path_len; i5++) _path3_ = g(json, _path3_);
|
209
|
+
partial_path = _path3_;
|
210
|
+
|
211
|
+
for(var i5 = path_len; i5 < pi; i5++){
|
212
|
+
var p3 = pi > i5 ? _path3_[0] : 0;
|
213
|
+
_path3_ = g(json, _path3_);
|
214
|
+
pi3++;
|
215
|
+
}
|
216
|
+
|
217
|
+
var _val3_[9] = _val_start;
|
218
|
+
partial_val = _val3_;
|
219
|
+
for(var i5 = 0; i5 < vi; i5++){
|
220
|
+
_val3_ = g(json, _val3_);
|
221
|
+
pi4++;
|
222
|
+
}
|
223
|
+
if(path_diff > 0){
|
224
|
+
var val_match = 1;
|
225
|
+
var i5 = 0;
|
226
|
+
var done = 0;
|
227
|
+
while((partial[5] == 0 || i5 < 2 + pi3 + pi4) && done == 0){
|
228
|
+
var pval = i5 == 0 ? 4 : 0;
|
229
|
+
if(i5 == 1) pval = path_diff;
|
230
|
+
if(i5 <= 1){
|
231
|
+
if(count == 1) partial = g(val, partial);
|
232
|
+
}if(i5 > 1 && i5 < 2 + pi3){
|
233
|
+
partial = g(val, partial);
|
234
|
+
pval = partial_path[0];
|
235
|
+
partial_path = g(json, partial_path);
|
236
|
+
if(pval != partial[0]) val_match = 0;
|
237
|
+
}else if(i5 >= 2 + pi3 && i5 < 2 + pi3 + pi4){
|
238
|
+
pval = partial_val[0];
|
239
|
+
if(pval != partial[0]) val_match = 0;
|
240
|
+
partial = g(val, partial);
|
241
|
+
partial_val = g(json, partial_val);
|
242
|
+
}
|
243
|
+
if(i5 == 2 + pi3 - 1) partial = g(val, partial);
|
244
|
+
if(i5 == 2 + pi3 + pi4 - 1) done = 1;
|
245
|
+
i5++;
|
246
|
+
}
|
247
|
+
if(val_match == 1) _exists = 1;
|
248
|
+
}
|
249
|
+
partial[6] = _exists;
|
250
|
+
if(_exists && partial[0]) partial[6] = 2;
|
251
|
+
return partial;
|
252
|
+
}
|
253
|
+
|
254
|
+
function getPath(json, _json_, pi){
|
255
|
+
var len = _json_[0];
|
256
|
+
for(var i2 = 0; i2 < len; i2++){
|
257
|
+
_json_ = g(json, _json_);
|
258
|
+
var plen = _json_[0];
|
259
|
+
pi++;
|
260
|
+
var plen2 = plen;
|
261
|
+
if(plen == 0){
|
262
|
+
_json_ = g(json, _json_);
|
263
|
+
pi++;
|
264
|
+
if(_json_[0] == 0){
|
265
|
+
_json_ = g(json, _json_);
|
266
|
+
pi++;
|
267
|
+
}
|
268
|
+
}else{
|
269
|
+
for(var i3 = 0; i3 < plen2; i3++){
|
270
|
+
_json_ = g(json, _json_);
|
271
|
+
pi++;
|
272
|
+
}
|
273
|
+
}
|
274
|
+
}
|
275
|
+
_json_[6] = pi;
|
276
|
+
return _json_;
|
277
|
+
}
|
278
|
+
|
279
|
+
function getVal(json, _json_){
|
280
|
+
var type = _json_[0];
|
281
|
+
var vi = 0;
|
282
|
+
if(type == 1){
|
283
|
+
_json_ = g(json, _json_);
|
284
|
+
vi = 2;
|
285
|
+
}else if(type == 2){
|
286
|
+
_json_ = g(json, _json_);
|
287
|
+
_json_ = g(json, _json_);
|
288
|
+
_json_ = g(json, _json_);
|
289
|
+
vi = 4;
|
290
|
+
} else if (type == 3){
|
291
|
+
_json_ = g(json, _json_);
|
292
|
+
var slen = _json_[0];
|
293
|
+
for(var i3 = 0;i3 < slen; i3++){
|
294
|
+
_json_ = g(json, _json_);
|
295
|
+
}
|
296
|
+
vi = slen + 2;
|
297
|
+
} else {
|
298
|
+
vi = 1;
|
299
|
+
}
|
300
|
+
_json_[6] = vi;
|
301
|
+
return _json_;
|
302
|
+
}
|
303
|
+
|
304
|
+
function checkPathMatch(json, path, _path_start, size_path, pi){
|
305
|
+
var path_match = 1;
|
306
|
+
var path_partial_match = 1;
|
307
|
+
var _path2_[9] = [0, size_path, 0,0,0,0,0,0,0];
|
308
|
+
var _path3_[9] = _path_start;
|
309
|
+
var i4 = 0;
|
310
|
+
while(i4 < pi || _path2_[5] == 0){
|
311
|
+
_path2_ = g(path, _path2_);
|
312
|
+
var p3 = pi > i4 ? _path3_[0] : 0;
|
313
|
+
if(p3 != _path2_[0]){
|
314
|
+
path_match = 0;
|
315
|
+
if(_path2_[5] == 0 && i4 != 0) path_partial_match = 0;
|
316
|
+
}
|
317
|
+
_path3_ = g(json, _path3_);
|
318
|
+
i4++;
|
319
|
+
}
|
320
|
+
return [path_match, path_partial_match];
|
321
|
+
}
|
322
|
+
|
323
|
+
function checkValMatch (json, val, _val_start, plus, size_val, vi, _val_match) {
|
324
|
+
var _val_[9] = [0, size_val, 0,0,0,0,0,0,0];
|
325
|
+
if(plus == 1) _val_ = g(val, _val_);
|
326
|
+
var _val3_[9] = _val_start;
|
327
|
+
var i5 = 0;
|
328
|
+
while(vi > i5 || _val_[5] == 0){
|
329
|
+
_val_ = g(val, _val_);
|
330
|
+
var v3 = vi > i5 ? _val3_[0] : 0;
|
331
|
+
if(v3 != _val_[0]) _val_match = 0;
|
332
|
+
_val3_ = g(json, _val3_);
|
333
|
+
i5++;
|
334
|
+
}
|
335
|
+
return _val_match;
|
336
|
+
}
|
337
|
+
|
338
|
+
function checkGtLt (op, _val_, _val_start, json, val, _val_match) {
|
339
|
+
var rev = op == 14 || op == 15;
|
340
|
+
var eq = op == 13 || op == 15;
|
341
|
+
var matched = 0;
|
342
|
+
var _val2_[9] = _val_;
|
343
|
+
_val2_ = g(val, _val2_);
|
344
|
+
var _val3_[9] = _val_start;
|
345
|
+
|
346
|
+
if(_val2_[0] != _val3_[0] || (_val2_[0] != 2 && _val2_[0] != 3 && _val2_[0] != 1)) _val_match = 0;
|
347
|
+
if(_val2_[0] == 2 && _val_match == 1){
|
348
|
+
var sign = 2;
|
349
|
+
_val2_ = g(val, _val2_);
|
350
|
+
var val2_2 = _val2_[0];
|
351
|
+
_val3_ = g(json,_val3_);
|
352
|
+
var val3_1 = _val3_[0];
|
353
|
+
if(_val2_[0] == 0 && val3_1 == 0) sign = 0;
|
354
|
+
if(_val2_[0] == 1 && val3_1 == 1) sign = 1;
|
355
|
+
_val2_ = g(val, _val2_);
|
356
|
+
_val3_ = g(json,_val3_);
|
357
|
+
var val3_2 = _val3_[0];
|
358
|
+
_val3_ = g(json,_val3_);
|
359
|
+
var val3_3 = _val3_[0];
|
360
|
+
_val3_ = g(json,_val3_);
|
361
|
+
if(_val2_[0] == 0 && _val3_[0] == 0 && eq) matched = 1;
|
362
|
+
|
363
|
+
if(matched == 0 && _val_match == 1){
|
364
|
+
var mul2 = 1;
|
365
|
+
var mul = 1;
|
366
|
+
if(_val2_[0] > val3_2) mul = 10 ** (_val2_[0] - val3_2);
|
367
|
+
if(_val2_[0] < val3_2) mul2 = 10 ** (val3_2 - _val2_[0]);
|
368
|
+
if(rev == 0){
|
369
|
+
if(val2_2 == 1 && val3_1 == 0) _val_match = 0;
|
370
|
+
if(_val2_[0] == 0 && _val3_[0] == 0 && eq) matched = 1;
|
371
|
+
if(_val_match == 1){
|
372
|
+
_val2_ = g(val, _val2_);
|
373
|
+
if(sign == 1){
|
374
|
+
if((eq == 0 && _val2_[0] * mul2 >= val3_3 * mul) || (eq == 1 && _val2_[0] * mul2 > val3_3 * mul)) _val_match = 0;
|
375
|
+
}else if(sign == 0){
|
376
|
+
if((eq == 0 && _val2_[0] * mul2 <= val3_3 * mul) || (eq == 1 && _val2_[0] * mul2 < val3_3 * mul)) _val_match = 0;
|
377
|
+
}
|
378
|
+
}
|
379
|
+
}else{
|
380
|
+
if(val2_2 == 0 && val3_1 == 1) _val_match = 0;
|
381
|
+
if(_val_match == 1){
|
382
|
+
_val2_ = g(val, _val2_);
|
383
|
+
if(sign == 1){
|
384
|
+
if((eq == 0 && _val2_[0] * mul2 <= val3_3 * mul) || (eq == 1 && _val2_[0] * mul2 < val3_3 * mul)) _val_match = 0;
|
385
|
+
}else if(sign == 0){
|
386
|
+
if((eq == 0 && _val2_[0] * mul2 >= val3_3 * mul) || (eq == 1 && _val2_[0] * mul2 > val3_3 * mul)) _val_match = 0;
|
387
|
+
}
|
388
|
+
}
|
389
|
+
}
|
390
|
+
}
|
391
|
+
} else if(_val2_[0] == 3 && _val_match == 1){
|
392
|
+
_val2_ = g(val, _val2_);
|
393
|
+
var val2_2 = _val2_[0];
|
394
|
+
_val3_ = g(json,_val3_);
|
395
|
+
var val3_1 = _val3_[0];
|
396
|
+
var str_size = _val2_[0] > _val3_[0] ? _val3_[0] : _val2_[0];
|
397
|
+
var eql = 1;
|
398
|
+
if(op == 12 || op == 13){
|
399
|
+
for(var i3 = 0; i3 < str_size; i3++){
|
400
|
+
_val2_ = g(val, _val2_);
|
401
|
+
_val3_ = g(json,_val3_);
|
402
|
+
if(_val2_[0] > _val3_[0]) _val_match = 0;
|
403
|
+
if(_val2_[0] != _val3_[0]) eql = 0;
|
404
|
+
}
|
405
|
+
if(_val_match == 1){
|
406
|
+
if(val2_2 > str_size) _val_match = 0;
|
407
|
+
if (eql && val2_2 == val3_1 && op == 12) _val_match = 0;
|
408
|
+
}
|
409
|
+
} else if(op == 14 || op == 15){
|
410
|
+
for(var i3 = 0; i3 < str_size; i3++){
|
411
|
+
_val2_ = g(val, _val2_);
|
412
|
+
_val3_ = g(json,_val3_);
|
413
|
+
if(_val2_[0] < _val3_[0]) _val_match = 0;
|
414
|
+
if(_val2_[0] != _val3_[0]) eql = 0;
|
415
|
+
}
|
416
|
+
if(_val_match == 1){
|
417
|
+
if(val3_1 > str_size) _val_match = 0;
|
418
|
+
if (eql && val2_2 == val3_1 && op == 14) _val_match = 0;
|
419
|
+
}
|
420
|
+
}
|
421
|
+
} else if(_val2_[0] == 1 && _val_match == 1){
|
422
|
+
_val2_ = g(val, _val2_);
|
423
|
+
_val3_ = g(json,_val3_);
|
424
|
+
if(eq == 0 && _val2_[0] == _val3_[0]) _val_match = 0;
|
425
|
+
if(eq == 1 && _val2_[0] != _val3_[0]) _val_match = 0;
|
426
|
+
if(eq == 1 && _val2_[0] == _val3_[0]) matched = 1;
|
427
|
+
if(_val_match == 1 && matched == 0){
|
428
|
+
if(op == 12 || op == 13){
|
429
|
+
if(_val2_[0] > _val3_[0]) _val_match = 0;
|
430
|
+
} else if(op == 14 || op == 15){
|
431
|
+
if(_val2_[0] < _val3_[0]) _val_match = 0;
|
432
|
+
}
|
433
|
+
}
|
434
|
+
}
|
435
|
+
return _val_match;
|
436
|
+
}
|
437
|
+
|
438
|
+
function checkInNin (op, _val_, _val_start, json, val, vi, _val_match){
|
439
|
+
var _val2_[9] = _val_;
|
440
|
+
_val2_ = g(val, _val2_);
|
441
|
+
if(_val2_[0] != 4) _val_match = 0;
|
442
|
+
if(_val_match == 1){
|
443
|
+
_val2_ = g(val, _val2_);
|
444
|
+
var plen2 = _val2_[0];
|
445
|
+
var included = 0;
|
446
|
+
while(plen2 > 0){
|
447
|
+
_val2_ = g(val, _val2_);
|
448
|
+
var _next_[9] = g(val, _val2_);
|
449
|
+
if(_val2_[0] != 0 || _next_[0] != 0){
|
450
|
+
plen2 = 0;
|
451
|
+
}else{
|
452
|
+
_val2_ = g(val, _val2_);
|
453
|
+
_val2_ = g(val, _val2_);
|
454
|
+
_val2_ = g(val, _val2_);
|
455
|
+
var type2 = _val2_[0];
|
456
|
+
var _val4_[9] = _val2_;
|
457
|
+
var vi4 = 0;
|
458
|
+
var _val_match2 = 1;
|
459
|
+
var matched2 = 0;
|
460
|
+
if(type2 == 0){
|
461
|
+
_val2_ = g(val, _val2_);
|
462
|
+
plen2 = _val2_[0];
|
463
|
+
vi4 = 1;
|
464
|
+
}else if(type2 == 1){
|
465
|
+
_val2_ = g(val, _val2_);
|
466
|
+
_val2_ = g(val, _val2_);
|
467
|
+
plen2 = _val2_[0];
|
468
|
+
vi4 = 2;
|
469
|
+
}else if(type2 == 2){
|
470
|
+
_val2_ = g(val, _val2_);
|
471
|
+
_val2_ = g(val, _val2_);
|
472
|
+
_val2_ = g(val, _val2_);
|
473
|
+
_val2_ = g(val, _val2_);
|
474
|
+
plen2 = _val2_[0];
|
475
|
+
vi4 = 4;
|
476
|
+
} else if (type2 == 3){
|
477
|
+
_val2_ = g(val, _val2_);
|
478
|
+
var slen2 = _val2_[0];
|
479
|
+
for(var i6 = 0;i6 < slen2; i6++){
|
480
|
+
_val2_ = g(val, _val2_);
|
481
|
+
}
|
482
|
+
_val2_ = g(val, _val2_);
|
483
|
+
plen2 = _val2_[0];
|
484
|
+
vi4 = slen2 + 2;
|
485
|
+
} else {
|
486
|
+
_val_match2 = 0;
|
487
|
+
plen2 = 0;
|
488
|
+
matched2 = 1;
|
489
|
+
}
|
490
|
+
if(_val_match2 == 1 && matched2 == 0){
|
491
|
+
var _val3_[9] = _val_start;
|
492
|
+
var i5 = 0;
|
493
|
+
while(vi > i5 || vi4 > i5){
|
494
|
+
var v3 = vi > i5 ? _val3_[0] : 0;
|
495
|
+
var v4 = vi4 > i5 ? _val4_[0] : 0;
|
496
|
+
if(v4 != v3) _val_match2 = 0;
|
497
|
+
_val3_ = g(json, _val3_);
|
498
|
+
_val4_ = g(val, _val4_);
|
499
|
+
i5++;
|
500
|
+
}
|
501
|
+
}
|
502
|
+
if(_val_match2 == 1){
|
503
|
+
matched2 = 1;
|
504
|
+
included = 1;
|
505
|
+
}
|
506
|
+
}
|
507
|
+
}
|
508
|
+
if((op == 17 && included == 1) || (op == 16 && included == 0)) _val_match = 0;
|
509
|
+
}
|
510
|
+
return _val_match;
|
511
|
+
}
|
512
|
+
|
513
|
+
function checkContains (_exists, size_val, val, _val_start, vi, json, plus){
|
514
|
+
var _pval_match = 1;
|
515
|
+
var _val2_[9] = [0, size_val, 0,0,0,0,0,0,0];
|
516
|
+
if(plus == 1) _val2_ = g(val, _val2_);
|
517
|
+
var _val3_[9] = _val_start;
|
518
|
+
var i5 = 0;
|
519
|
+
while(vi > i5 || _val2_[5] == 0){
|
520
|
+
_val2_ = g(val, _val2_);
|
521
|
+
var v3 = vi > i5 ? _val3_[0] : 0;
|
522
|
+
if(v3 != _val2_[0]) _pval_match = 0;
|
523
|
+
_val3_ = g(json, _val3_);
|
524
|
+
i5++;
|
525
|
+
}
|
526
|
+
if(_pval_match == 1) _exists = 1;
|
527
|
+
return _exists;
|
528
|
+
}
|
529
|
+
|
530
|
+
function checkArrayContains (_exists, op, _val_, _val_start, vi, val, json, contains) {
|
531
|
+
var _val_match = 1;
|
532
|
+
var _val2_[9] = _val_;
|
533
|
+
_val2_ = g(val, _val2_);
|
534
|
+
if(_val2_[0] != 4) _val_match = 0;
|
535
|
+
_val2_ = g(val,_val2_);
|
536
|
+
var plen3 = _val2_[0];
|
537
|
+
var included = 0;
|
538
|
+
var eindex = 0;
|
539
|
+
while(plen3 > 0){
|
540
|
+
_val2_ = g(val,_val2_);
|
541
|
+
var _next_[9] = g(val, _val2_);
|
542
|
+
if(_val2_[0] != 0 || _next_[0] != 0){
|
543
|
+
plen3 = 0;
|
544
|
+
}else{
|
545
|
+
_val2_ = g(val,_val2_);
|
546
|
+
_val2_ = g(val,_val2_);
|
547
|
+
_val2_ = g(val,_val2_);
|
548
|
+
var type2 = _val2_[0];
|
549
|
+
var _val4_[9] = _val2_;
|
550
|
+
var _val_match2 = 1;
|
551
|
+
var matched2 = 0;
|
552
|
+
var vi4 = 0;
|
553
|
+
if(type2 == 0){
|
554
|
+
contains[eindex] = 1;
|
555
|
+
eindex += 1;
|
556
|
+
_val2_ = g(val,_val2_);
|
557
|
+
plen3 = _val2_[0];
|
558
|
+
vi4 = 1;
|
559
|
+
}else if(type2 == 1){
|
560
|
+
_val2_ = g(val,_val2_);
|
561
|
+
contains[eindex] = 1;
|
562
|
+
eindex += 1;
|
563
|
+
_val2_ = g(val,_val2_);
|
564
|
+
plen3 = _val2_[0];
|
565
|
+
vi4 = 2;
|
566
|
+
}else if(type2 == 2){
|
567
|
+
_val2_ = g(val,_val2_);
|
568
|
+
_val2_ = g(val,_val2_);
|
569
|
+
_val2_ = g(val,_val2_);
|
570
|
+
contains[eindex] = 1;
|
571
|
+
eindex += 1;
|
572
|
+
_val2_ = g(val,_val2_);
|
573
|
+
plen3 = _val2_[0];
|
574
|
+
vi4 = 4;
|
575
|
+
} else if (type2 == 3){
|
576
|
+
_val2_ = g(val,_val2_);
|
577
|
+
var slen2 = _val2_[0];
|
578
|
+
for(var i6 = 0;i6 < slen2; i6++){
|
579
|
+
_val2_ = g(val,_val2_);
|
580
|
+
}
|
581
|
+
contains[eindex] = 1;
|
582
|
+
eindex += 1;
|
583
|
+
_val2_ = g(val,_val2_);
|
584
|
+
plen3 = _val2_[0];
|
585
|
+
vi4 = slen2 + 2;
|
586
|
+
} else {
|
587
|
+
_val_match2 = 0;
|
588
|
+
plen3 = 0;
|
589
|
+
matched2 = 1;
|
590
|
+
}
|
591
|
+
if(_val_match2 == 1 && matched2 == 0){
|
592
|
+
var matched3 = 1;
|
593
|
+
var _val3_[9] = _val_start;
|
594
|
+
var i5 = 0;
|
595
|
+
while(_val3_[5] == 0 || _val4_[5] == 0){
|
596
|
+
var v3 = vi > i5 ? _val3_[0] : 0;
|
597
|
+
var v4 = vi4 > i5 ? _val4_[0] : 0;
|
598
|
+
if(v4 != v3){
|
599
|
+
_val_match2 = 0;
|
600
|
+
matched3 = 0;
|
601
|
+
}
|
602
|
+
_val3_ = g(json, _val3_);
|
603
|
+
_val4_ = g(val, _val4_);
|
604
|
+
i5++;
|
605
|
+
}
|
606
|
+
if(matched3 == 1){
|
607
|
+
contains[eindex - 1 + 50] = 1;
|
608
|
+
}
|
609
|
+
}
|
610
|
+
if(_val_match2) included = 1;
|
611
|
+
}
|
612
|
+
}
|
613
|
+
if(included){
|
614
|
+
if(op == 19){
|
615
|
+
_exists = 1;
|
616
|
+
}else if(op == 20){
|
617
|
+
var all = 1;
|
618
|
+
for(var i5 = 0; i5 < 50; i5++){
|
619
|
+
if(contains[i5] == 1 && contains[i5 + 50] == 0) all = 0;
|
620
|
+
}
|
621
|
+
if(all == 1) _exists = 1;
|
622
|
+
}else if(op == 21){
|
623
|
+
_exists = 0;
|
624
|
+
}
|
625
|
+
}
|
626
|
+
contains[100] = _exists;
|
627
|
+
return contains;
|
628
|
+
}
|