@n1xyz/nord-ts 0.0.22 → 0.1.0
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 +20 -16
- package/dist/gen/nord_pb.d.ts +100 -32
- package/dist/gen/nord_pb.js +62 -9
- package/dist/gen/openapi.d.ts +33 -8
- package/dist/nord/api/actions.d.ts +1 -0
- package/dist/nord/api/actions.js +33 -14
- package/dist/types.js +2 -2
- package/package.json +1 -1
- package/src/gen/nord_pb.ts +121 -36
- package/src/gen/openapi.ts +33 -8
- package/src/nord/api/actions.ts +47 -17
- package/src/types.ts +2 -2
package/dist/gen/openapi.d.ts
CHANGED
|
@@ -111,11 +111,13 @@ export interface paths {
|
|
|
111
111
|
};
|
|
112
112
|
};
|
|
113
113
|
put?: never;
|
|
114
|
-
/** @description Send an action to nord to execute. */
|
|
114
|
+
/** @description Send an action to nord to execute. This doesn't use `Protobuf<T>` since we want to length-delimit this message. `body` - (length prefix of action, action data protobuf, and signature). signature has exact length, but depend on action kind. body is exact payload used via other transports and journalled for rexecution */
|
|
115
115
|
post: {
|
|
116
116
|
parameters: {
|
|
117
117
|
query?: never;
|
|
118
|
-
header
|
|
118
|
+
header: {
|
|
119
|
+
"content-type": string;
|
|
120
|
+
};
|
|
119
121
|
path?: never;
|
|
120
122
|
cookie?: never;
|
|
121
123
|
};
|
|
@@ -134,6 +136,19 @@ export interface paths {
|
|
|
134
136
|
"application/octet-stream": unknown;
|
|
135
137
|
};
|
|
136
138
|
};
|
|
139
|
+
415: {
|
|
140
|
+
headers: {
|
|
141
|
+
/**
|
|
142
|
+
* @description Expected request media type
|
|
143
|
+
* @example application/octet-stream
|
|
144
|
+
*/
|
|
145
|
+
accept: string;
|
|
146
|
+
[name: string]: unknown;
|
|
147
|
+
};
|
|
148
|
+
content: {
|
|
149
|
+
"application/json": components["schemas"]["AcceptedMediaType"];
|
|
150
|
+
};
|
|
151
|
+
};
|
|
137
152
|
};
|
|
138
153
|
};
|
|
139
154
|
delete?: never;
|
|
@@ -1892,6 +1907,9 @@ export interface components {
|
|
|
1892
1907
|
/** Format: uint16 */
|
|
1893
1908
|
weightBps: number;
|
|
1894
1909
|
};
|
|
1910
|
+
AcceptedMediaType: {
|
|
1911
|
+
expected: string;
|
|
1912
|
+
};
|
|
1895
1913
|
ActionsQuery: {
|
|
1896
1914
|
/** Format: uint64 */
|
|
1897
1915
|
from: number;
|
|
@@ -2223,8 +2241,6 @@ export interface components {
|
|
|
2223
2241
|
HistoryTriggerInfo: {
|
|
2224
2242
|
/** Format: uint32 */
|
|
2225
2243
|
accountId: number;
|
|
2226
|
-
/** Format: uint64 */
|
|
2227
|
-
actionId: number;
|
|
2228
2244
|
/** Format: uint32 */
|
|
2229
2245
|
marketId: number;
|
|
2230
2246
|
/** Format: uint64 */
|
|
@@ -2232,21 +2248,30 @@ export interface components {
|
|
|
2232
2248
|
side: components["schemas"]["Side"];
|
|
2233
2249
|
kind: components["schemas"]["TriggerKind"];
|
|
2234
2250
|
status: components["schemas"]["TriggerStatus"];
|
|
2251
|
+
/** Format: uint64 */
|
|
2252
|
+
createdAtActionId: number;
|
|
2253
|
+
/** Format: uint64 */
|
|
2254
|
+
finalizedAtActionId?: number | null;
|
|
2235
2255
|
createdAt: string;
|
|
2236
|
-
|
|
2256
|
+
finalizedAt: string;
|
|
2237
2257
|
};
|
|
2238
2258
|
/** @enum {string} */
|
|
2239
2259
|
TriggerKind: "stopLoss" | "takeProfit";
|
|
2240
2260
|
/** @enum {string} */
|
|
2241
|
-
TriggerStatus: "
|
|
2261
|
+
TriggerStatus: "active" | "success" | "cancel" | "fail" | "remove";
|
|
2242
2262
|
TriggerInfo: {
|
|
2243
2263
|
/** Format: uint32 */
|
|
2244
2264
|
marketId: number;
|
|
2245
|
-
/** Format: uint64 */
|
|
2246
|
-
price: number;
|
|
2247
2265
|
side: components["schemas"]["Side"];
|
|
2248
2266
|
kind: components["schemas"]["TriggerKind"];
|
|
2267
|
+
triggerPrice: components["schemas"]["PositivePriceMantissa"];
|
|
2268
|
+
limitPrice?: components["schemas"]["PositivePriceMantissa"] | null;
|
|
2249
2269
|
};
|
|
2270
|
+
/**
|
|
2271
|
+
* Format: uint64
|
|
2272
|
+
* @description 63 bit integer, which is always positive
|
|
2273
|
+
*/
|
|
2274
|
+
PositivePriceMantissa: number;
|
|
2250
2275
|
OrderNotFound: null;
|
|
2251
2276
|
PageResult_for_String_and_Trade: {
|
|
2252
2277
|
/** @description Set of items for requested by query. */
|
|
@@ -2,6 +2,7 @@ import Decimal from "decimal.js";
|
|
|
2
2
|
import * as proto from "../../gen/nord_pb";
|
|
3
3
|
import { FillMode, Side, QuoteSize } from "../../types";
|
|
4
4
|
import { BigIntValue } from "../../utils";
|
|
5
|
+
export declare function prepareAction(action: proto.Action, makeSignedMessage: (message: Uint8Array) => Promise<Uint8Array>): Promise<Uint8Array<ArrayBufferLike>>;
|
|
5
6
|
export declare function createSession(serverUrl: string, walletSignFn: (message: string | Uint8Array) => Promise<Uint8Array>, currentTimestamp: bigint, nonce: number, params: {
|
|
6
7
|
userPubkey: Uint8Array;
|
|
7
8
|
sessionPubkey: Uint8Array;
|
package/dist/nord/api/actions.js
CHANGED
|
@@ -32,7 +32,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
35
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.prepareAction = prepareAction;
|
|
36
40
|
exports.createSession = createSession;
|
|
37
41
|
exports.revokeSession = revokeSession;
|
|
38
42
|
exports.withdraw = withdraw;
|
|
@@ -41,6 +45,7 @@ exports.cancelOrder = cancelOrder;
|
|
|
41
45
|
exports.transfer = transfer;
|
|
42
46
|
exports.atomic = atomic;
|
|
43
47
|
const proto = __importStar(require("../../gen/nord_pb"));
|
|
48
|
+
const openapi_fetch_1 = __importDefault(require("openapi-fetch"));
|
|
44
49
|
const protobuf_1 = require("@bufbuild/protobuf");
|
|
45
50
|
const types_1 = require("../../types");
|
|
46
51
|
const utils_1 = require("../../utils");
|
|
@@ -62,28 +67,39 @@ function createAction(currentTimestamp, nonce, kind) {
|
|
|
62
67
|
});
|
|
63
68
|
}
|
|
64
69
|
async function sendAction(serverUrl, makeSignedMessage, action, actionErrorDesc) {
|
|
65
|
-
const
|
|
66
|
-
//
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
const response = await (0, utils_1.checkedFetch)(`${serverUrl}/action`, {
|
|
74
|
-
method: "POST",
|
|
75
|
-
headers: {
|
|
76
|
-
"Content-Type": "application/json",
|
|
70
|
+
const body = await prepareAction(action, makeSignedMessage);
|
|
71
|
+
// NOTE: restructure and reuse client as it is in Nord.ts
|
|
72
|
+
const client = (0, openapi_fetch_1.default)({ baseUrl: serverUrl });
|
|
73
|
+
const response = await client.POST("/action", {
|
|
74
|
+
params: {
|
|
75
|
+
header: {
|
|
76
|
+
"content-type": "application/octet-stream",
|
|
77
|
+
},
|
|
77
78
|
},
|
|
78
|
-
body,
|
|
79
|
+
body: body,
|
|
79
80
|
});
|
|
80
|
-
|
|
81
|
+
if (response.error) {
|
|
82
|
+
throw new Error(`Failed to ${actionErrorDesc}, HTTP status ${response}`);
|
|
83
|
+
}
|
|
84
|
+
const rawResp = new Uint8Array(await response.response.arrayBuffer());
|
|
81
85
|
const resp = (0, utils_1.decodeLengthDelimited)(rawResp, proto.ReceiptSchema);
|
|
82
86
|
if (resp.kind?.case === "err") {
|
|
83
87
|
throw new Error(`Could not ${actionErrorDesc}, reason: ${proto.Error[resp.kind.value]}`);
|
|
84
88
|
}
|
|
85
89
|
return resp;
|
|
86
90
|
}
|
|
91
|
+
// Given action and signature function, prepare the signed message to send to server as `body`.
|
|
92
|
+
// `makeSignedMessage` must include the original message and signature.
|
|
93
|
+
async function prepareAction(action, makeSignedMessage) {
|
|
94
|
+
const encoded = (0, wire_1.sizeDelimitedEncode)(proto.ActionSchema, action);
|
|
95
|
+
// NOTE(agent): keep in sync with MAX_HTTP_REQUEST_BODY_SIZE in rust code
|
|
96
|
+
const MAX_HTTP_REQUEST_BODY_SIZE = 1024;
|
|
97
|
+
if (encoded.byteLength > MAX_HTTP_REQUEST_BODY_SIZE) {
|
|
98
|
+
throw new Error(`Encoded message size (${encoded.byteLength} bytes) is greater than max payload size (${MAX_HTTP_REQUEST_BODY_SIZE} bytes).`);
|
|
99
|
+
}
|
|
100
|
+
const body = await makeSignedMessage(encoded);
|
|
101
|
+
return body;
|
|
102
|
+
}
|
|
87
103
|
async function createSession(serverUrl, walletSignFn, currentTimestamp, nonce, params) {
|
|
88
104
|
(0, utils_1.checkPubKeyLength)(types_1.KeyType.Ed25519, params.userPubkey.length);
|
|
89
105
|
(0, utils_1.checkPubKeyLength)(types_1.KeyType.Ed25519, params.sessionPubkey.length);
|
|
@@ -151,6 +167,7 @@ async function placeOrder(serverUrl, signFn, currentTimestamp, nonce, params) {
|
|
|
151
167
|
const scaledQuote = params.quoteSize
|
|
152
168
|
? params.quoteSize.toScaledU64(params.priceDecimals, params.sizeDecimals)
|
|
153
169
|
: undefined;
|
|
170
|
+
(0, utils_1.assert)(price > 0n || size > 0n || scaledQuote !== undefined, "OrderLimit must include at least one of: size, price, or quoteSize");
|
|
154
171
|
const action = createAction(currentTimestamp, nonce, {
|
|
155
172
|
case: "placeOrder",
|
|
156
173
|
value: (0, protobuf_1.create)(proto.Action_PlaceOrderSchema, {
|
|
@@ -243,6 +260,8 @@ async function atomic(serverUrl, signFn, currentTimestamp, nonce, params) {
|
|
|
243
260
|
const scaledQuote = a.quoteSize
|
|
244
261
|
? a.quoteSize.toScaledU64(a.priceDecimals, a.sizeDecimals)
|
|
245
262
|
: undefined;
|
|
263
|
+
// Require at least one limit to be set (non-zero size, non-zero price, or quoteSize)
|
|
264
|
+
(0, utils_1.assert)(price > 0n || size > 0n || scaledQuote !== undefined, "OrderLimit must include at least one of: size, price, or quoteSize");
|
|
246
265
|
const tradeOrPlace = (0, protobuf_1.create)(proto.TradeOrPlaceSchema, {
|
|
247
266
|
marketId: a.marketId,
|
|
248
267
|
orderType: (0, protobuf_1.create)(proto.OrderTypeSchema, {
|
package/dist/types.js
CHANGED
|
@@ -109,8 +109,8 @@ class QuoteSize {
|
|
|
109
109
|
constructor(quotePrice, quoteSize) {
|
|
110
110
|
const p = new decimal_js_1.default(quotePrice);
|
|
111
111
|
const s = new decimal_js_1.default(quoteSize);
|
|
112
|
-
if (p.
|
|
113
|
-
throw new Error("quotePrice and quoteSize must be
|
|
112
|
+
if (!p.isPositive() || !s.isPositive()) {
|
|
113
|
+
throw new Error("quotePrice and quoteSize must be positive");
|
|
114
114
|
}
|
|
115
115
|
this.price = p;
|
|
116
116
|
this.size = s;
|
package/package.json
CHANGED
package/src/gen/nord_pb.ts
CHANGED
|
@@ -15,7 +15,7 @@ import type { Message } from "@bufbuild/protobuf";
|
|
|
15
15
|
* Describes the file nord.proto.
|
|
16
16
|
*/
|
|
17
17
|
export const file_nord: GenFile = /*@__PURE__*/
|
|
18
|
-
fileDesc("Cgpub3JkLnByb3RvEgRub3JkItABCgZNYXJrZXQSEQoJbWFya2V0X2lkGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNEhUKDXNpemVfZGVjaW1hbHMYAyABKA0SFQoNYmFzZV90b2tlbl9pZBgEIAEoDRIlCgttYXJrZXRfdHlwZRgFIAEoDjIQLm5vcmQuTWFya2V0VHlwZRIPCgdpbWZfYnBzGAYgASgNEg8KB2NtZl9icHMYByABKA0SDwoHbW1mX2JwcxgIIAEoDRITCgt2aWV3X3N5bWJvbBgKIAEoCSJaCgVUb2tlbhIQCgh0b2tlbl9pZBgBIAEoDRIWCg50b2tlbl9kZWNpbWFscxgCIAEoDRISCgp3ZWlnaHRfYnBzGAQgASgNEhMKC3ZpZXdfc3ltYm9sGAUgASgJIigKCVF1b3RlU2l6ZRIMCgRzaXplGAEgASgEEg0KBXByaWNlGAIgASgEIk4KCk9yZGVyTGltaXQSDQoFcHJpY2UYBiABKAQSDAoEc2l6ZRgHIAEoBBIjCgpxdW90ZV9zaXplGAggASgLMg8ubm9yZC5RdW90ZVNpemUiYAoJT3JkZXJUeXBlEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIQoJZmlsbF9tb2RlGAQgASgOMg4ubm9yZC5GaWxsTW9kZRIWCg5pc19yZWR1Y2Vfb25seRgFIAEoCCKZAQoMVHJhZGVPclBsYWNlEhEKCW1hcmtldF9pZBgCIAEoDRIjCgpvcmRlcl90eXBlGAMgASgLMg8ubm9yZC5PcmRlclR5cGUSHwoFbGltaXQYBiABKAsyEC5ub3JkLk9yZGVyTGltaXQSHAoPY2xpZW50X29yZGVyX2lkGCEgASgESACIAQFCEgoQX2NsaWVudF9vcmRlcl9pZCIfCgtDYW5jZWxPcmRlchIQCghvcmRlcl9pZBgCIAEoBCLbGQoGQWN0aW9uEhkKEWN1cnJlbnRfdGltZXN0YW1wGAEgASgDEg0KBW5vbmNlGAIgASgNEjQKDmNyZWF0ZV9zZXNzaW9uGAQgASgLMhoubm9yZC5BY3Rpb24uQ3JlYXRlU2Vzc2lvbkgAEjAKDGNyZWF0ZV90b2tlbhgFIAEoCzIYLm5vcmQuQWN0aW9uLkNyZWF0ZVRva2VuSAASMgoNY3JlYXRlX21hcmtldBgGIAEoCzIZLm5vcmQuQWN0aW9uLkNyZWF0ZU1hcmtldEgAEi4KC3BsYWNlX29yZGVyGAcgASgLMhcubm9yZC5BY3Rpb24uUGxhY2VPcmRlckgAEjoKEmNhbmNlbF9vcmRlcl9ieV9pZBgIIAEoCzIcLm5vcmQuQWN0aW9uLkNhbmNlbE9yZGVyQnlJZEgAEicKB2RlcG9zaXQYCSABKAsyFC5ub3JkLkFjdGlvbi5EZXBvc2l0SAASKQoId2l0aGRyYXcYCiABKAsyFS5ub3JkLkFjdGlvbi5XaXRoZHJhd0gAEkwKG3B5dGhfc2V0X3dvcm1ob2xlX2d1YXJkaWFucxgLIAEoCzIlLm5vcmQuQWN0aW9uLlB5dGhTZXRXb3JtaG9sZUd1YXJkaWFuc0gAEj4KFHB5dGhfc2V0X3N5bWJvbF9mZWVkGAwgASgLMh4ubm9yZC5BY3Rpb24uUHl0aFNldFN5bWJvbEZlZWRIABJCChZweXRoX3ByaWNlX2ZlZWRfdXBkYXRlGA0gASgLMiAubm9yZC5BY3Rpb24uUHl0aFByaWNlRmVlZFVwZGF0ZUgAEisKCWxpcXVpZGF0ZRgOIAEoCzIWLm5vcmQuQWN0aW9uLkxpcXVpZGF0ZUgAEjQKDnJldm9rZV9zZXNzaW9uGA8gASgLMhoubm9yZC5BY3Rpb24uUmV2b2tlU2Vzc2lvbkgAEiMKBXBhdXNlGBAgASgLMhIubm9yZC5BY3Rpb24uUGF1c2VIABInCgd1bnBhdXNlGBEgASgLMhQubm9yZC5BY3Rpb24uVW5wYXVzZUgAEikKCHRyYW5zZmVyGBIgASgLMhUubm9yZC5BY3Rpb24uVHJhbnNmZXJIABIuCgthZGRfdHJpZ2dlchggIAEoCzIXLm5vcmQuQWN0aW9uLkFkZFRyaWdnZXJIABI0Cg5yZW1vdmVfdHJpZ2dlchghIAEoCzIaLm5vcmQuQWN0aW9uLlJlbW92ZVRyaWdnZXJIABIyCg10YWtlX3Bvc2l0aW9uGCIgASgLMhkubm9yZC5BY3Rpb24uVGFrZVBvc2l0aW9uSAASHgoGYXRvbWljGCMgASgLMgwubm9yZC5BdG9taWNIABpTCg1DcmVhdGVTZXNzaW9uEhMKC3VzZXJfcHVia2V5GAEgASgMEhMKC2Jsc3RfcHVia2V5GAIgASgMEhgKEGV4cGlyeV90aW1lc3RhbXAYAyABKAMadwoLQ3JlYXRlVG9rZW4SFgoOdG9rZW5fZGVjaW1hbHMYASABKA0SEgoKd2VpZ2h0X2JwcxgDIAEoDRITCgt2aWV3X3N5bWJvbBgEIAEoCRIVCg1vcmFjbGVfc3ltYm9sGAUgASgJEhAKCHNvbF9hZGRyGAYgASgMGtoBCgxDcmVhdGVNYXJrZXQSFQoNc2l6ZV9kZWNpbWFscxgBIAEoDRIWCg5wcmljZV9kZWNpbWFscxgCIAEoDRIPCgdpbWZfYnBzGAMgASgNEg8KB2NtZl9icHMYBCABKA0SDwoHbW1mX2JwcxgFIAEoDRIlCgttYXJrZXRfdHlwZRgGIAEoDjIQLm5vcmQuTWFya2V0VHlwZRITCgt2aWV3X3N5bWJvbBgHIAEoCRIVCg1vcmFjbGVfc3ltYm9sGAggASgJEhUKDWJhc2VfdG9rZW5faWQYCSABKA0apgMKClBsYWNlT3JkZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBIRCgltYXJrZXRfaWQYAiABKA0SGAoEc2lkZRgDIAEoDjIKLm5vcmQuU2lkZRIhCglmaWxsX21vZGUYBCABKA4yDi5ub3JkLkZpbGxNb2RlEhYKDmlzX3JlZHVjZV9vbmx5GAUgASgIEg0KBXByaWNlGAYgASgEEgwKBHNpemUYByABKAQSIwoKcXVvdGVfc2l6ZRgIIAEoCzIPLm5vcmQuUXVvdGVTaXplEiEKFGRlbGVnYXRvcl9hY2NvdW50X2lkGCAgASgNSACIAQESHAoPY2xpZW50X29yZGVyX2lkGCEgASgESAGIAQESHgoRc2VuZGVyX2FjY291bnRfaWQYIiABKA1IAogBARIfChJzZW5kZXJfdHJhY2tpbmdfaWQYIyABKARIA4gBAUIXChVfZGVsZWdhdG9yX2FjY291bnRfaWRCEgoQX2NsaWVudF9vcmRlcl9pZEIUChJfc2VuZGVyX2FjY291bnRfaWRCFQoTX3NlbmRlcl90cmFja2luZ19pZBqpAQoPQ2FuY2VsT3JkZXJCeUlkEhIKCnNlc3Npb25faWQYASABKAQSEAoIb3JkZXJfaWQYAiABKAQSIQoUZGVsZWdhdG9yX2FjY291bnRfaWQYICABKA1IAIgBARIeChFzZW5kZXJfYWNjb3VudF9pZBghIAEoDUgBiAEBQhcKFV9kZWxlZ2F0b3JfYWNjb3VudF9pZEIUChJfc2VuZGVyX2FjY291bnRfaWQaWAoHRGVwb3NpdBIUCgxhY3Rpb25fbm9uY2UYASABKAQSEgoKdG9rZW5fYWRkchgCIAEoDBIOCgZhbW91bnQYAyABKAQSEwoLdXNlcl9wdWJrZXkYBCABKAwaQAoIV2l0aGRyYXcSEAoIdG9rZW5faWQYASABKA0SEgoKc2Vzc2lvbl9pZBgCIAEoBBIOCgZhbW91bnQYAyABKAQaSQoYUHl0aFNldFdvcm1ob2xlR3VhcmRpYW5zEhoKEmd1YXJkaWFuX3NldF9pbmRleBgBIAEoDRIRCglhZGRyZXNzZXMYAiADKAwaQQoRUHl0aFNldFN5bWJvbEZlZWQSFQoNb3JhY2xlX3N5bWJvbBgBIAEoCRIVCg1wcmljZV9mZWVkX2lkGAIgASgMGi8KE1B5dGhQcmljZUZlZWRVcGRhdGUSGAoQcmF3X3B5dGhuZXRfZGF0YRgBIAEoDBqHAQoJTGlxdWlkYXRlEh0KFWxpcXVpZGF0b3Jfc2Vzc2lvbl9pZBgBIAEoBBIdChVsaXF1aWRhdGVlX2FjY291bnRfaWQYAiABKA0SIgoVbGlxdWlkYXRvcl9hY2NvdW50X2lkGAMgASgNSACIAQFCGAoWX2xpcXVpZGF0b3JfYWNjb3VudF9pZBojCg1SZXZva2VTZXNzaW9uEhIKCnNlc3Npb25faWQYASABKAQaBwoFUGF1c2UaCQoHVW5wYXVzZRrPAQoIVHJhbnNmZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBIXCg9mcm9tX2FjY291bnRfaWQYAiABKA0SEAoIdG9rZW5faWQYAyABKA0SDgoGYW1vdW50GAQgASgEEhoKDXRvX2FjY291bnRfaWQYCCABKA1IAIgBARIyCg9zcGVjaWFsX2FjY291bnQYCSABKA4yFC5ub3JkLlNwZWNpYWxBY2NvdW50SAGIAQFCEAoOX3RvX2FjY291bnRfaWRCEgoQX3NwZWNpYWxfYWNjb3VudBqlAQoKQWRkVHJpZ2dlchISCgpzZXNzaW9uX2lkGAEgASgEEhEKCW1hcmtldF9pZBgCIAEoDRIfCgRraW5kGAMgASgOMhEubm9yZC5UcmlnZ2VyS2luZBIYCgRzaWRlGAQgASgOMgoubm9yZC5TaWRlEg0KBXByaWNlGAUgASgEEhcKCmFjY291bnRfaWQYCiABKA1IAIgBAUINCgtfYWNjb3VudF9pZBqoAQoNUmVtb3ZlVHJpZ2dlchISCgpzZXNzaW9uX2lkGAEgASgEEhEKCW1hcmtldF9pZBgCIAEoDRIfCgRraW5kGAMgASgOMhEubm9yZC5UcmlnZ2VyS2luZBIYCgRzaWRlGAQgASgOMgoubm9yZC5TaWRlEg0KBXByaWNlGAUgASgEEhcKCmFjY291bnRfaWQYCiABKA1IAIgBAUINCgtfYWNjb3VudF9pZBqXAQoMVGFrZVBvc2l0aW9uEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEgwKBHNpemUYAyABKAMSHgoRc2VuZGVyX2FjY291bnRfaWQYBCABKA1IAIgBARISCgVwcmljZRgFIAEoBEgBiAEBQhQKEl9zZW5kZXJfYWNjb3VudF9pZEIICgZfcHJpY2VCBgoEa2luZCJ3ChNBdG9taWNTdWJhY3Rpb25LaW5kEiwKDnRyYWRlX29yX3BsYWNlGAYgASgLMhIubm9yZC5UcmFkZU9yUGxhY2VIABIpCgxjYW5jZWxfb3JkZXIYByABKAsyES5ub3JkLkNhbmNlbE9yZGVySABCBwoFaW5uZXIicAoGQXRvbWljEhIKCnNlc3Npb25faWQYASABKAQSFwoKYWNjb3VudF9pZBgCIAEoDUgAiAEBEioKB2FjdGlvbnMYBiADKAsyGS5ub3JkLkF0b21pY1N1YmFjdGlvbktpbmRCDQoLX2FjY291bnRfaWQivRkKB1JlY2VpcHQSEQoJYWN0aW9uX2lkGAEgASgEEhoKA2VychggIAEoDjILLm5vcmQuRXJyb3JIABJCChVjcmVhdGVfc2Vzc2lvbl9yZXN1bHQYISABKAsyIS5ub3JkLlJlY2VpcHQuQ3JlYXRlU2Vzc2lvblJlc3VsdEgAEjwKEnBsYWNlX29yZGVyX3Jlc3VsdBgiIAEoCzIeLm5vcmQuUmVjZWlwdC5QbGFjZU9yZGVyUmVzdWx0SAASPgoTY2FuY2VsX29yZGVyX3Jlc3VsdBgjIAEoCzIfLm5vcmQuUmVjZWlwdC5DYW5jZWxPcmRlclJlc3VsdEgAEjUKDmRlcG9zaXRfcmVzdWx0GCQgASgLMhsubm9yZC5SZWNlaXB0LkRlcG9zaXRSZXN1bHRIABI+ChNpbnNlcnRfdG9rZW5fcmVzdWx0GCUgASgLMh8ubm9yZC5SZWNlaXB0Lkluc2VydFRva2VuUmVzdWx0SAASQAoUaW5zZXJ0X21hcmtldF9yZXN1bHQYJiABKAsyIC5ub3JkLlJlY2VpcHQuSW5zZXJ0TWFya2V0UmVzdWx0SAASNwoPd2l0aGRyYXdfcmVzdWx0GCcgASgLMhwubm9yZC5SZWNlaXB0LldpdGhkcmF3UmVzdWx0SAASSQoZb3JhY2xlX3N5bWJvbF9mZWVkX3Jlc3VsdBgoIAEoCzIkLm5vcmQuUmVjZWlwdC5PcmFjbGVTeW1ib2xGZWVkUmVzdWx0SAASQAoUb3JhY2xlX3VwZGF0ZV9yZXN1bHQYKSABKAsyIC5ub3JkLlJlY2VpcHQuT3JhY2xlVXBkYXRlUmVzdWx0SAASSwoadXBkYXRlX2d1YXJkaWFuX3NldF9yZXN1bHQYKiABKAsyJS5ub3JkLlJlY2VpcHQuVXBkYXRlR3VhcmRpYW5TZXRSZXN1bHRIABI1CgpsaXF1aWRhdGVkGCsgASgLMh8ubm9yZC5SZWNlaXB0LkFjY291bnRMaXF1aWRhdGVkSAASNwoPc2Vzc2lvbl9yZXZva2VkGCwgASgLMhwubm9yZC5SZWNlaXB0LlNlc3Npb25SZXZva2VkSAASJgoGcGF1c2VkGC0gASgLMhQubm9yZC5SZWNlaXB0LlBhdXNlZEgAEioKCHVucGF1c2VkGC4gASgLMhYubm9yZC5SZWNlaXB0LlVucGF1c2VkSAASMAoLdHJhbnNmZXJyZWQYLyABKAsyGS5ub3JkLlJlY2VpcHQuVHJhbnNmZXJyZWRIABIzCg10cmlnZ2VyX2FkZGVkGEAgASgLMhoubm9yZC5SZWNlaXB0LlRyaWdnZXJBZGRlZEgAEjcKD3RyaWdnZXJfcmVtb3ZlZBhBIAEoCzIcLm5vcmQuUmVjZWlwdC5UcmlnZ2VyUmVtb3ZlZEgAEk0KGHBvc2l0aW9uX3Rha2VuX29yX3RyYWRlZBhCIAEoCzIpLm5vcmQuUmVjZWlwdC5Qb3NpdGlvblRha2VuT3JUcmFkZWRSZXN1bHRIABIsCgZhdG9taWMYQyABKAsyGi5ub3JkLlJlY2VpcHQuQXRvbWljUmVzdWx0SAAaeAoGUG9zdGVkEhgKBHNpZGUYASABKA4yCi5ub3JkLlNpZGUSEQoJbWFya2V0X2lkGAIgASgNEg0KBXByaWNlGAMgASgEEgwKBHNpemUYBCABKAQSEAoIb3JkZXJfaWQYBSABKAQSEgoKYWNjb3VudF9pZBgGIAEoDRpKCgVUcmFkZRIQCghvcmRlcl9pZBgCIAEoBBINCgVwcmljZRgEIAEoBBIMCgRzaXplGAUgASgEEhIKCmFjY291bnRfaWQYBiABKA0aKQoTQ3JlYXRlU2Vzc2lvblJlc3VsdBISCgpzZXNzaW9uX2lkGAEgASgEGtYBChBQbGFjZU9yZGVyUmVzdWx0EikKBnBvc3RlZBgBIAEoCzIULm5vcmQuUmVjZWlwdC5Qb3N0ZWRIAIgBARIiCgVmaWxscxgCIAMoCzITLm5vcmQuUmVjZWlwdC5UcmFkZRIcCg9jbGllbnRfb3JkZXJfaWQYAyABKARIAYgBARIfChJzZW5kZXJfdHJhY2tpbmdfaWQYBCABKARIAogBAUIJCgdfcG9zdGVkQhIKEF9jbGllbnRfb3JkZXJfaWRCFQoTX3NlbmRlcl90cmFja2luZ19pZBpCCgtUYWtlblJlc3VsdBILCgNwbmwYASABKAMSDAoEc2l6ZRgCIAEoAxIYChB0YWtlcl9hY2NvdW50X2lkGAMgASgNGqsBChtQb3NpdGlvblRha2VuT3JUcmFkZWRSZXN1bHQSEQoJbWFya2V0X2lkGAEgASgNEioKBXRha2VuGAIgASgLMhkubm9yZC5SZWNlaXB0LlRha2VuUmVzdWx0SAASMAoGdHJhZGVkGAMgASgLMh4ubm9yZC5SZWNlaXB0LlBsYWNlT3JkZXJSZXN1bHRIAEIbChlQb3NpdGlvblRha2VuT3JUcmFkZWRLaW5kGjkKEUNhbmNlbE9yZGVyUmVzdWx0EhAKCG9yZGVyX2lkGAEgASgEEhIKCmFjY291bnRfaWQYAiABKA0acAoNRGVwb3NpdFJlc3VsdBIQCgh0b2tlbl9pZBgBIAEoDRIOCgZhbW91bnQYAiABKAQSEgoKYWNjb3VudF9pZBgDIAEoDRIUCgx1c2VyX2NyZWF0ZWQYBCABKAgSEwoLdXNlcl9wdWJrZXkYBSABKAwaQwoRSW5zZXJ0VG9rZW5SZXN1bHQSEgoKY2hhaW5fYWRkchgBIAEoDBIaCgV0b2tlbhgCIAEoCzILLm5vcmQuVG9rZW4aMgoSSW5zZXJ0TWFya2V0UmVzdWx0EhwKBm1hcmtldBgBIAEoCzIMLm5vcmQuTWFya2V0GnkKDldpdGhkcmF3UmVzdWx0EhAKCHRva2VuX2lkGAEgASgNEg4KBmFtb3VudBgCIAEoBBIPCgdiYWxhbmNlGAMgASgEEhIKCmFjY291bnRfaWQYBCABKA0SCwoDZmVlGAUgASgEEhMKC3VzZXJfcHVia2V5GAYgASgMGkAKFk9yYWNsZVN5bWJvbEZlZWRSZXN1bHQSFQoNb3JhY2xlX3N5bWJvbBgBIAEoCRIPCgdmZWVkX2lkGAIgASgMGicKEk9yYWNsZVVwZGF0ZVJlc3VsdBIRCgl0aW1lc3RhbXAYASABKAMaSAoXVXBkYXRlR3VhcmRpYW5TZXRSZXN1bHQSGgoSZ3VhcmRpYW5fc2V0X2luZGV4GAEgASgNEhEKCWFkZHJlc3NlcxgCIAMoDBpDCgxQZXJwUG9zaXRpb24SEQoJbWFya2V0X2lkGAEgASgNEhEKCWJhc2Vfc2l6ZRgCIAEoAxINCgVwcmljZRgDIAEoBBqeAQoRQWNjb3VudExpcXVpZGF0ZWQSHQoVbGlxdWlkYXRvcl9hY2NvdW50X2lkGAEgASgNEh0KFWxpcXVpZGF0ZWVfYWNjb3VudF9pZBgCIAEoDRIYChBjYW5jZWxsZWRfb3JkZXJzGAMgAygEEjEKDXJlbW92ZWRfcGVycHMYBCADKAsyGi5ub3JkLlJlY2VpcHQuUGVycFBvc2l0aW9uGhAKDlNlc3Npb25SZXZva2VkGggKBlBhdXNlZBoKCghVbnBhdXNlZBrhAQoLVHJhbnNmZXJyZWQSFwoPZnJvbV9hY2NvdW50X2lkGAEgASgNEhwKD3RvX3VzZXJfYWNjb3VudBgCIAEoDUgAiAEBEhAKCHRva2VuX2lkGAMgASgNEg4KBmFtb3VudBgEIAEoBBIXCg9hY2NvdW50X2NyZWF0ZWQYBSABKAgSNQoSdG9fc3BlY2lhbF9hY2NvdW50GAYgASgOMhQubm9yZC5TcGVjaWFsQWNjb3VudEgBiAEBQhIKEF90b191c2VyX2FjY291bnRCFQoTX3RvX3NwZWNpYWxfYWNjb3VudBoOCgxUcmlnZ2VyQWRkZWQaEAoOVHJpZ2dlclJlbW92ZWQamwEKGUF0b21pY1N1YmFjdGlvblJlc3VsdEtpbmQSPAoScGxhY2Vfb3JkZXJfcmVzdWx0GAEgASgLMh4ubm9yZC5SZWNlaXB0LlBsYWNlT3JkZXJSZXN1bHRIABI3CgxjYW5jZWxfb3JkZXIYAiABKAsyHy5ub3JkLlJlY2VpcHQuQ2FuY2VsT3JkZXJSZXN1bHRIAEIHCgVpbm5lchpICgxBdG9taWNSZXN1bHQSOAoHcmVzdWx0cxgBIAMoCzInLm5vcmQuUmVjZWlwdC5BdG9taWNTdWJhY3Rpb25SZXN1bHRLaW5kQgYKBGtpbmQqGAoEU2lkZRIHCgNBU0sQABIHCgNCSUQQASotCgtUcmlnZ2VyS2luZBINCglTVE9QX0xPU1MQABIPCgtUQUtFX1BST0ZJVBABKk8KCEZpbGxNb2RlEgkKBUxJTUlUEAASDQoJUE9TVF9PTkxZEAESFwoTSU1NRURJQVRFX09SX0NBTkNFTBACEhAKDEZJTExfT1JfS0lMTBADKiYKCk1hcmtldFR5cGUSCAoEU1BPVBAAEg4KClBFUlBFVFVBTFMQASqiFwoFRXJyb3ISDQoJRFVQTElDQVRFEAASEgoOREVDT0RFX0ZBSUxVUkUQAhIVChFJTlZBTElEX1NJR05BVFVSRRADEhQKEE1BUktFVF9OT1RfRk9VTkQQBBITCg9UT0tFTl9OT1RfRk9VTkQQBRISCg5VU0VSX05PVF9GT1VORBAGEhUKEVNFU1NJT05fTk9UX0ZPVU5EEAcSEwoPT1JERVJfTk9UX0ZPVU5EEAgSEwoPT1JERVJfU0laRV9aRVJPEAkSFwoTQVJJVEhNRVRJQ19PVkVSRkxPVxALEhcKE0lOVkFMSURfT1JERVJfT1dORVIQDhIaChZLRVlfQUxSRUFEWV9SRUdJU1RFUkVEEA8SHAoYRVhQSVJZX1RJTUVTVEFNUF9JTl9QQVNUEBASHAoYVVBEQVRFX1RJTUVTVEFNUF9JTl9QQVNUEBESGAoUVE9PX01BTllfT1BFTl9PUkRFUlMQEhIdChlXSVRIRFJBV19BTU9VTlRfVE9PX1NNQUxMEBUSFwoTUFlUSF9GRUVEX05PVF9BRERFRBBdEhUKEVBZVEhfRkVFRF9NSVNTSU5HEF4SGwoXUFlUSF9GRUVEX0FMUkVBRFlfQURERUQQXxIjCh9QWVRIX0dVQVJESUFOX1NFVF9VTklOSVRJQUxJWkVEEGASHQoZUFlUSF9HVUFSRElBTl9TRVRfSU5WQUxJRBBhEiMKH1BZVEhfRkVFRF9ERUNJTUFMU19PVVRfT0ZfUkFOR0UQYhIgChxQWVRIX0ZFRURfUFJJQ0VfT1VUX09GX1JBTkdFEGMSIwofUFlUSF9GRUVEX1ZBUklBTkNFX09VVF9PRl9SQU5HRRBkEjUKMVBZVEhfR1VBUkRJQU5fU0VUX0FORF9QWVRIX1NJR05BVFVSRV9ET19OT1RfTUFUQ0gQZRIcChhJTlZBTElEX1RPS0VOX1BBUkFNRVRFUlMQZhIcChhJTkRFWF9QUklDRV9PVVRfT0ZfUkFOR0UQZxIfChtJTkRFWF9ERUNJTUFMU19PVVRfT0ZfUkFOR0UQaBIZChVJTlZBTElEX1NUQVRFX1ZFUlNJT04QaRITCg9JTlZBTElEX01BUkdJTlMQaxIhCh1NQVJLRVRfREVDSU1BTFNfRVhDRUVEX0xJTUlUUxBtEhMKD1RPT19NQU5ZX1RPS0VOUxBuEhQKEEZVTkRJTkdfT1ZFUkZMT1cQexI3CjNDQU5fUkVEVUNFX1BPU0lUSU9OX09OTFlfSUZfQUxMX09SREVSU19BUkVfQ0FOQ0VMRUQQfBIXChNVTkVYUEVDVEVEX1RPS0VOX0lEEH8SFAoPVE9LRU5fTk9UX1JFQURZEIIBEhwKGFRPS0VOX0FMUkVBRFlfUkVHSVNURVJFRBBwEiEKHElNTUVESUFURV9PUkRFUl9HT1RfTk9fRklMTFMQhQESGQoURkFJTEVEX1RPX0ZJTExfTElNSVQQhgESMAorUE9TVF9PTkxZX01VU1RfTk9UX0ZJTExfQU5ZX09QUE9TSVRFX09SREVSUxCHARIMCgdJTlZBTElEEIgBEhAKC01BSU5URU5BTkNFEIkBEhoKFU1JTklNVU1fU0laRV9ERUNJTUFMUxCKARIyCi1QQVJBTUVURVJTX1dJTExfQ1JFQVRFX05PTl9PUEVSQVRJT05BTF9NQVJLRVQQiwESIgodT05MWV9JTU1FRElBVEVfT1JERVJTX0FMTE9XRUQQjAESGwoWVE9PX01BTllfVVNFUl9BQ0NPVU5UUxCNARIWChFBQ0NPVU5UX05PVF9GT1VORBCOARIaChVBQ0NPVU5UX0lOVkFMSURfT1dORVIQjwESEQoMRFVTVF9BQ0NPVU5UEJEBEgwKB0JBTEFOQ0UQoAESHQoYQkFMQU5DRV9ERVBPU0lUX09WRVJGTE9XEKEBEhwKF0JBTEFOQ0VfQ0hBTkdFX09WRVJGTE9XEKIBEiIKHUJBTEFOQ0VfQ0hBTkdFX0xJTUlUX0VYQ0VFREVEEKMBEhkKFEJBTEFOQ0VfSU5TVUZGSUNJRU5UEKQBEh4KGVVOQVVUSEVOVElDQVRFRF9MMV9BQ1RJT04QpQESHQoYRU5DT0RFRF9BQ1RJT05fVE9PX0xBUkdFEKYBEgwKB1RSSUdHRVIQqAESGgoVVFJJR0dFUl9JTlZBTElEX1BSSUNFEKkBEhYKEVRSSUdHRVJfTk9UX0ZPVU5EEKoBEg4KCVRJTUVTVEFNUBCwARIfChpUSU1FU1RBTVBfT1VUX09GX1RIUkVTSE9MRBCxARIUCg9USU1FU1RBTVBfU1RBTEUQsgESJQogQkFOS1JVUFRDWV9JTlNVRkZJQ0lFTlRfQ09WRVJBR0UQuQESGQoUQkFOS1JVUFRDWV9OT1RfRk9VTkQQugESGwoWQkFOS1JVUFRDWV9OT1RfQUxMT1dFRBC7ARIVChBNQVJLRVRfTk9UX1JFQURZEMABEhIKDU1BUktFVF9GUk9aRU4QwQESDQoIUE9TSVRJT04QyAESFwoSUE9TSVRJT05fTk9UX0ZPVU5EEMkBEhkKFFBPU0lUSU9OX1NUQVRFX09SREVSEMoBEh8KGlBPU0lUSU9OX1NUQVRFX09SREVSX1BSSUNFEMsBEh4KGVBPU0lUSU9OX1NUQVRFX09SREVSX1NJWkUQzAESHgoZUE9TSVRJT05fU1RBVEVfT1JERVJfU0lERRDNARIYChNQT1NJVElPTl9TSVpFX0xJTUlUEM4BEgoKBVBSSUNFENEBEhsKFlNJR05BVFVSRV9WRVJJRklDQVRJT04Q2QESMAorU0lHTkFUVVJFX1ZFUklGSUNBVElPTl9NQUxGT1JNRURfUFVCTElDX0tFWRDaARIqCiVTSUdOQVRVUkVfVkVSSUZJQ0FUSU9OX0lOVkFMSURfTEVOR1RIENsBEgkKBFJJU0sQ4AESNAovUklTS19ERUxFR0FUSU9OX01GX1RPX0JFX0xFU1NfVEhBTl9PUl9FUVVBTF9NTUYQ4QESJAofUklTS19PTUZfTEVTU19USEFOX09SX0VRVUFMX0lNRhDiARIkCh9SSVNLX09NRl9MRVNTX1RIQU5fT1JfRVFVQUxfQ01GEOMBEioKJVJJU0tfVFJBREVfT01GX0xFU1NfVEhBTl9PUl9FUVVBTF9DTUYQ5QESNQowUklTS19VTkhFQUxUSFlfTUZfQU5EX1BPTl9BRlRFUl9CRVRURVJfT0ZfQkVGT1JFEOQBEhQKD09SREVSX0VYRUNVVElPThDwARIaChVPUkRFUl9FWEVDVVRJT05fRU1QVFkQ8QESIQocT1JERVJfRVhFQ1VUSU9OX0ZJTExfT1JfS0lMTBDyARIjCh5PUkRFUl9FWEVDVVRJT05fTUlTU0lOR19MSU1JVFMQ8wESIgodT1JERVJfRVhFQ1VUSU9OX01JU1NJTkdfUFJJQ0UQ9AESHwoaT1JERVJfRVhFQ1VUSU9OX1NJWkVfTElNSVQQ9QESIAobT1JERVJfRVhFQ1VUSU9OX0xJTUlUX1BSSUNFEPYBEh4KGU9SREVSX1JFRFVDRV9JU19QT1NUX09OTFkQ9wESHwoaT1JERVJfRVhFQ1VUSU9OX1NFTExfUFJJQ0UQ+AESKAojQVRPTUlDU19UUkFERVNfQ0FOTk9UX0ZPTExPV19QTEFDRVMQgAISMAorQVRPTUlDU19DQU5DRUxTX0NBTk5PVF9GT0xMT1dfVFJBREVTX1BMQUNFUxCBAhImCiFBQ1RJT05fUE9TSVRJT05fU0hPVUxEX0JFX0NPVkVSRUQQkQISGQoUQUNUSU9OX0lOVkFMSURfTk9OQ0UQkgISKQokQUNUSU9OX1BST1BPU0VEX1BSSUNFX01VU1RfQkVfSElHSEVSEJMCEhQKD05PVF9JTVBMRU1FTlRFRBD0AxIMCgdEcm9wcGVkEOcHKh4KDlNwZWNpYWxBY2NvdW50EgwKCEZlZVZhdWx0EABiBnByb3RvMw");
|
|
18
|
+
fileDesc("Cgpub3JkLnByb3RvEgRub3JkItABCgZNYXJrZXQSEQoJbWFya2V0X2lkGAEgASgNEhYKDnByaWNlX2RlY2ltYWxzGAIgASgNEhUKDXNpemVfZGVjaW1hbHMYAyABKA0SFQoNYmFzZV90b2tlbl9pZBgEIAEoDRIlCgttYXJrZXRfdHlwZRgFIAEoDjIQLm5vcmQuTWFya2V0VHlwZRIPCgdpbWZfYnBzGAYgASgNEg8KB2NtZl9icHMYByABKA0SDwoHbW1mX2JwcxgIIAEoDRITCgt2aWV3X3N5bWJvbBgKIAEoCSJaCgVUb2tlbhIQCgh0b2tlbl9pZBgBIAEoDRIWCg50b2tlbl9kZWNpbWFscxgCIAEoDRISCgp3ZWlnaHRfYnBzGAQgASgNEhMKC3ZpZXdfc3ltYm9sGAUgASgJIigKCVF1b3RlU2l6ZRIMCgRzaXplGAEgASgEEg0KBXByaWNlGAIgASgEIk4KCk9yZGVyTGltaXQSDQoFcHJpY2UYBiABKAQSDAoEc2l6ZRgHIAEoBBIjCgpxdW90ZV9zaXplGAggASgLMg8ubm9yZC5RdW90ZVNpemUiYAoJT3JkZXJUeXBlEhgKBHNpZGUYAyABKA4yCi5ub3JkLlNpZGUSIQoJZmlsbF9tb2RlGAQgASgOMg4ubm9yZC5GaWxsTW9kZRIWCg5pc19yZWR1Y2Vfb25seRgFIAEoCCKZAQoMVHJhZGVPclBsYWNlEhEKCW1hcmtldF9pZBgCIAEoDRIjCgpvcmRlcl90eXBlGAMgASgLMg8ubm9yZC5PcmRlclR5cGUSHwoFbGltaXQYBiABKAsyEC5ub3JkLk9yZGVyTGltaXQSHAoPY2xpZW50X29yZGVyX2lkGCEgASgESACIAQFCEgoQX2NsaWVudF9vcmRlcl9pZCIfCgtDYW5jZWxPcmRlchIQCghvcmRlcl9pZBgCIAEoBCK/GgoGQWN0aW9uEhkKEWN1cnJlbnRfdGltZXN0YW1wGAEgASgDEg0KBW5vbmNlGAIgASgNEjQKDmNyZWF0ZV9zZXNzaW9uGAQgASgLMhoubm9yZC5BY3Rpb24uQ3JlYXRlU2Vzc2lvbkgAEjAKDGNyZWF0ZV90b2tlbhgFIAEoCzIYLm5vcmQuQWN0aW9uLkNyZWF0ZVRva2VuSAASMgoNY3JlYXRlX21hcmtldBgGIAEoCzIZLm5vcmQuQWN0aW9uLkNyZWF0ZU1hcmtldEgAEi4KC3BsYWNlX29yZGVyGAcgASgLMhcubm9yZC5BY3Rpb24uUGxhY2VPcmRlckgAEjoKEmNhbmNlbF9vcmRlcl9ieV9pZBgIIAEoCzIcLm5vcmQuQWN0aW9uLkNhbmNlbE9yZGVyQnlJZEgAEicKB2RlcG9zaXQYCSABKAsyFC5ub3JkLkFjdGlvbi5EZXBvc2l0SAASKQoId2l0aGRyYXcYCiABKAsyFS5ub3JkLkFjdGlvbi5XaXRoZHJhd0gAEkwKG3B5dGhfc2V0X3dvcm1ob2xlX2d1YXJkaWFucxgLIAEoCzIlLm5vcmQuQWN0aW9uLlB5dGhTZXRXb3JtaG9sZUd1YXJkaWFuc0gAEj4KFHB5dGhfc2V0X3N5bWJvbF9mZWVkGAwgASgLMh4ubm9yZC5BY3Rpb24uUHl0aFNldFN5bWJvbEZlZWRIABJCChZweXRoX3ByaWNlX2ZlZWRfdXBkYXRlGA0gASgLMiAubm9yZC5BY3Rpb24uUHl0aFByaWNlRmVlZFVwZGF0ZUgAEisKCWxpcXVpZGF0ZRgOIAEoCzIWLm5vcmQuQWN0aW9uLkxpcXVpZGF0ZUgAEjQKDnJldm9rZV9zZXNzaW9uGA8gASgLMhoubm9yZC5BY3Rpb24uUmV2b2tlU2Vzc2lvbkgAEiMKBXBhdXNlGBAgASgLMhIubm9yZC5BY3Rpb24uUGF1c2VIABInCgd1bnBhdXNlGBEgASgLMhQubm9yZC5BY3Rpb24uVW5wYXVzZUgAEikKCHRyYW5zZmVyGBIgASgLMhUubm9yZC5BY3Rpb24uVHJhbnNmZXJIABIuCgthZGRfdHJpZ2dlchggIAEoCzIXLm5vcmQuQWN0aW9uLkFkZFRyaWdnZXJIABI0Cg5yZW1vdmVfdHJpZ2dlchghIAEoCzIaLm5vcmQuQWN0aW9uLlJlbW92ZVRyaWdnZXJIABIyCg10YWtlX3Bvc2l0aW9uGCIgASgLMhkubm9yZC5BY3Rpb24uVGFrZVBvc2l0aW9uSAASHgoGYXRvbWljGCMgASgLMgwubm9yZC5BdG9taWNIABpTCg1DcmVhdGVTZXNzaW9uEhMKC3VzZXJfcHVia2V5GAEgASgMEhMKC2Jsc3RfcHVia2V5GAIgASgMEhgKEGV4cGlyeV90aW1lc3RhbXAYAyABKAMadwoLQ3JlYXRlVG9rZW4SFgoOdG9rZW5fZGVjaW1hbHMYASABKA0SEgoKd2VpZ2h0X2JwcxgDIAEoDRITCgt2aWV3X3N5bWJvbBgEIAEoCRIVCg1vcmFjbGVfc3ltYm9sGAUgASgJEhAKCHNvbF9hZGRyGAYgASgMGtoBCgxDcmVhdGVNYXJrZXQSFQoNc2l6ZV9kZWNpbWFscxgBIAEoDRIWCg5wcmljZV9kZWNpbWFscxgCIAEoDRIPCgdpbWZfYnBzGAMgASgNEg8KB2NtZl9icHMYBCABKA0SDwoHbW1mX2JwcxgFIAEoDRIlCgttYXJrZXRfdHlwZRgGIAEoDjIQLm5vcmQuTWFya2V0VHlwZRITCgt2aWV3X3N5bWJvbBgHIAEoCRIVCg1vcmFjbGVfc3ltYm9sGAggASgJEhUKDWJhc2VfdG9rZW5faWQYCSABKA0apgMKClBsYWNlT3JkZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBIRCgltYXJrZXRfaWQYAiABKA0SGAoEc2lkZRgDIAEoDjIKLm5vcmQuU2lkZRIhCglmaWxsX21vZGUYBCABKA4yDi5ub3JkLkZpbGxNb2RlEhYKDmlzX3JlZHVjZV9vbmx5GAUgASgIEg0KBXByaWNlGAYgASgEEgwKBHNpemUYByABKAQSIwoKcXVvdGVfc2l6ZRgIIAEoCzIPLm5vcmQuUXVvdGVTaXplEiEKFGRlbGVnYXRvcl9hY2NvdW50X2lkGCAgASgNSACIAQESHAoPY2xpZW50X29yZGVyX2lkGCEgASgESAGIAQESHgoRc2VuZGVyX2FjY291bnRfaWQYIiABKA1IAogBARIfChJzZW5kZXJfdHJhY2tpbmdfaWQYIyABKARIA4gBAUIXChVfZGVsZWdhdG9yX2FjY291bnRfaWRCEgoQX2NsaWVudF9vcmRlcl9pZEIUChJfc2VuZGVyX2FjY291bnRfaWRCFQoTX3NlbmRlcl90cmFja2luZ19pZBqpAQoPQ2FuY2VsT3JkZXJCeUlkEhIKCnNlc3Npb25faWQYASABKAQSEAoIb3JkZXJfaWQYAiABKAQSIQoUZGVsZWdhdG9yX2FjY291bnRfaWQYICABKA1IAIgBARIeChFzZW5kZXJfYWNjb3VudF9pZBghIAEoDUgBiAEBQhcKFV9kZWxlZ2F0b3JfYWNjb3VudF9pZEIUChJfc2VuZGVyX2FjY291bnRfaWQaWAoHRGVwb3NpdBIUCgxhY3Rpb25fbm9uY2UYASABKAQSEgoKdG9rZW5fYWRkchgCIAEoDBIOCgZhbW91bnQYAyABKAQSEwoLdXNlcl9wdWJrZXkYBCABKAwaQAoIV2l0aGRyYXcSEAoIdG9rZW5faWQYASABKA0SEgoKc2Vzc2lvbl9pZBgCIAEoBBIOCgZhbW91bnQYAyABKAQaSQoYUHl0aFNldFdvcm1ob2xlR3VhcmRpYW5zEhoKEmd1YXJkaWFuX3NldF9pbmRleBgBIAEoDRIRCglhZGRyZXNzZXMYAiADKAwaQQoRUHl0aFNldFN5bWJvbEZlZWQSFQoNb3JhY2xlX3N5bWJvbBgBIAEoCRIVCg1wcmljZV9mZWVkX2lkGAIgASgMGi8KE1B5dGhQcmljZUZlZWRVcGRhdGUSGAoQcmF3X3B5dGhuZXRfZGF0YRgBIAEoDBqHAQoJTGlxdWlkYXRlEh0KFWxpcXVpZGF0b3Jfc2Vzc2lvbl9pZBgBIAEoBBIdChVsaXF1aWRhdGVlX2FjY291bnRfaWQYAiABKA0SIgoVbGlxdWlkYXRvcl9hY2NvdW50X2lkGAMgASgNSACIAQFCGAoWX2xpcXVpZGF0b3JfYWNjb3VudF9pZBojCg1SZXZva2VTZXNzaW9uEhIKCnNlc3Npb25faWQYASABKAQaBwoFUGF1c2UaCQoHVW5wYXVzZRrPAQoIVHJhbnNmZXISEgoKc2Vzc2lvbl9pZBgBIAEoBBIXCg9mcm9tX2FjY291bnRfaWQYAiABKA0SEAoIdG9rZW5faWQYAyABKA0SDgoGYW1vdW50GAQgASgEEhoKDXRvX2FjY291bnRfaWQYCCABKA1IAIgBARIyCg9zcGVjaWFsX2FjY291bnQYCSABKA4yFC5ub3JkLlNwZWNpYWxBY2NvdW50SAGIAQFCEAoOX3RvX2FjY291bnRfaWRCEgoQX3NwZWNpYWxfYWNjb3VudBrXAQoKQWRkVHJpZ2dlchISCgpzZXNzaW9uX2lkGAEgASgEEhEKCW1hcmtldF9pZBgCIAEoDRIfCgRraW5kGAMgASgOMhEubm9yZC5UcmlnZ2VyS2luZBIYCgRzaWRlGAQgASgOMgoubm9yZC5TaWRlEhUKDXRyaWdnZXJfcHJpY2UYBSABKAQSGAoLbGltaXRfcHJpY2UYBiABKARIAIgBARIXCgphY2NvdW50X2lkGAogASgNSAGIAQFCDgoMX2xpbWl0X3ByaWNlQg0KC19hY2NvdW50X2lkGtoBCg1SZW1vdmVUcmlnZ2VyEhIKCnNlc3Npb25faWQYASABKAQSEQoJbWFya2V0X2lkGAIgASgNEh8KBGtpbmQYAyABKA4yES5ub3JkLlRyaWdnZXJLaW5kEhgKBHNpZGUYBCABKA4yCi5ub3JkLlNpZGUSFQoNdHJpZ2dlcl9wcmljZRgFIAEoBBIYCgtsaW1pdF9wcmljZRgGIAEoBEgAiAEBEhcKCmFjY291bnRfaWQYCiABKA1IAYgBAUIOCgxfbGltaXRfcHJpY2VCDQoLX2FjY291bnRfaWQalwEKDFRha2VQb3NpdGlvbhISCgpzZXNzaW9uX2lkGAEgASgEEhEKCW1hcmtldF9pZBgCIAEoDRIMCgRzaXplGAMgASgDEh4KEXNlbmRlcl9hY2NvdW50X2lkGAQgASgNSACIAQESEgoFcHJpY2UYBSABKARIAYgBAUIUChJfc2VuZGVyX2FjY291bnRfaWRCCAoGX3ByaWNlQgYKBGtpbmQidwoTQXRvbWljU3ViYWN0aW9uS2luZBIsCg50cmFkZV9vcl9wbGFjZRgGIAEoCzISLm5vcmQuVHJhZGVPclBsYWNlSAASKQoMY2FuY2VsX29yZGVyGAcgASgLMhEubm9yZC5DYW5jZWxPcmRlckgAQgcKBWlubmVyInAKBkF0b21pYxISCgpzZXNzaW9uX2lkGAEgASgEEhcKCmFjY291bnRfaWQYAiABKA1IAIgBARIqCgdhY3Rpb25zGAYgAygLMhkubm9yZC5BdG9taWNTdWJhY3Rpb25LaW5kQg0KC19hY2NvdW50X2lkItAZCgdSZWNlaXB0EhEKCWFjdGlvbl9pZBgBIAEoBBIaCgNlcnIYICABKA4yCy5ub3JkLkVycm9ySAASQgoVY3JlYXRlX3Nlc3Npb25fcmVzdWx0GCEgASgLMiEubm9yZC5SZWNlaXB0LkNyZWF0ZVNlc3Npb25SZXN1bHRIABI8ChJwbGFjZV9vcmRlcl9yZXN1bHQYIiABKAsyHi5ub3JkLlJlY2VpcHQuUGxhY2VPcmRlclJlc3VsdEgAEj4KE2NhbmNlbF9vcmRlcl9yZXN1bHQYIyABKAsyHy5ub3JkLlJlY2VpcHQuQ2FuY2VsT3JkZXJSZXN1bHRIABI1Cg5kZXBvc2l0X3Jlc3VsdBgkIAEoCzIbLm5vcmQuUmVjZWlwdC5EZXBvc2l0UmVzdWx0SAASPgoTaW5zZXJ0X3Rva2VuX3Jlc3VsdBglIAEoCzIfLm5vcmQuUmVjZWlwdC5JbnNlcnRUb2tlblJlc3VsdEgAEkAKFGluc2VydF9tYXJrZXRfcmVzdWx0GCYgASgLMiAubm9yZC5SZWNlaXB0Lkluc2VydE1hcmtldFJlc3VsdEgAEjcKD3dpdGhkcmF3X3Jlc3VsdBgnIAEoCzIcLm5vcmQuUmVjZWlwdC5XaXRoZHJhd1Jlc3VsdEgAEkkKGW9yYWNsZV9zeW1ib2xfZmVlZF9yZXN1bHQYKCABKAsyJC5ub3JkLlJlY2VpcHQuT3JhY2xlU3ltYm9sRmVlZFJlc3VsdEgAEkAKFG9yYWNsZV91cGRhdGVfcmVzdWx0GCkgASgLMiAubm9yZC5SZWNlaXB0Lk9yYWNsZVVwZGF0ZVJlc3VsdEgAEksKGnVwZGF0ZV9ndWFyZGlhbl9zZXRfcmVzdWx0GCogASgLMiUubm9yZC5SZWNlaXB0LlVwZGF0ZUd1YXJkaWFuU2V0UmVzdWx0SAASNQoKbGlxdWlkYXRlZBgrIAEoCzIfLm5vcmQuUmVjZWlwdC5BY2NvdW50TGlxdWlkYXRlZEgAEjcKD3Nlc3Npb25fcmV2b2tlZBgsIAEoCzIcLm5vcmQuUmVjZWlwdC5TZXNzaW9uUmV2b2tlZEgAEiYKBnBhdXNlZBgtIAEoCzIULm5vcmQuUmVjZWlwdC5QYXVzZWRIABIqCgh1bnBhdXNlZBguIAEoCzIWLm5vcmQuUmVjZWlwdC5VbnBhdXNlZEgAEjAKC3RyYW5zZmVycmVkGC8gASgLMhkubm9yZC5SZWNlaXB0LlRyYW5zZmVycmVkSAASMwoNdHJpZ2dlcl9hZGRlZBhAIAEoCzIaLm5vcmQuUmVjZWlwdC5UcmlnZ2VyQWRkZWRIABJEChZ0cmlnZ2VyX3N0YXR1c19jaGFuZ2VkGEEgASgLMiIubm9yZC5SZWNlaXB0LlRyaWdnZXJTdGF0dXNDaGFuZ2VkSAASTQoYcG9zaXRpb25fdGFrZW5fb3JfdHJhZGVkGEIgASgLMikubm9yZC5SZWNlaXB0LlBvc2l0aW9uVGFrZW5PclRyYWRlZFJlc3VsdEgAEiwKBmF0b21pYxhDIAEoCzIaLm5vcmQuUmVjZWlwdC5BdG9taWNSZXN1bHRIABp4CgZQb3N0ZWQSGAoEc2lkZRgBIAEoDjIKLm5vcmQuU2lkZRIRCgltYXJrZXRfaWQYAiABKA0SDQoFcHJpY2UYAyABKAQSDAoEc2l6ZRgEIAEoBBIQCghvcmRlcl9pZBgFIAEoBBISCgphY2NvdW50X2lkGAYgASgNGkoKBVRyYWRlEhAKCG9yZGVyX2lkGAIgASgEEg0KBXByaWNlGAQgASgEEgwKBHNpemUYBSABKAQSEgoKYWNjb3VudF9pZBgGIAEoDRopChNDcmVhdGVTZXNzaW9uUmVzdWx0EhIKCnNlc3Npb25faWQYASABKAQa1gEKEFBsYWNlT3JkZXJSZXN1bHQSKQoGcG9zdGVkGAEgASgLMhQubm9yZC5SZWNlaXB0LlBvc3RlZEgAiAEBEiIKBWZpbGxzGAIgAygLMhMubm9yZC5SZWNlaXB0LlRyYWRlEhwKD2NsaWVudF9vcmRlcl9pZBgDIAEoBEgBiAEBEh8KEnNlbmRlcl90cmFja2luZ19pZBgEIAEoBEgCiAEBQgkKB19wb3N0ZWRCEgoQX2NsaWVudF9vcmRlcl9pZEIVChNfc2VuZGVyX3RyYWNraW5nX2lkGkIKC1Rha2VuUmVzdWx0EgsKA3BubBgBIAEoAxIMCgRzaXplGAIgASgDEhgKEHRha2VyX2FjY291bnRfaWQYAyABKA0aqwEKG1Bvc2l0aW9uVGFrZW5PclRyYWRlZFJlc3VsdBIRCgltYXJrZXRfaWQYASABKA0SKgoFdGFrZW4YAiABKAsyGS5ub3JkLlJlY2VpcHQuVGFrZW5SZXN1bHRIABIwCgZ0cmFkZWQYAyABKAsyHi5ub3JkLlJlY2VpcHQuUGxhY2VPcmRlclJlc3VsdEgAQhsKGVBvc2l0aW9uVGFrZW5PclRyYWRlZEtpbmQaOQoRQ2FuY2VsT3JkZXJSZXN1bHQSEAoIb3JkZXJfaWQYASABKAQSEgoKYWNjb3VudF9pZBgCIAEoDRpwCg1EZXBvc2l0UmVzdWx0EhAKCHRva2VuX2lkGAEgASgNEg4KBmFtb3VudBgCIAEoBBISCgphY2NvdW50X2lkGAMgASgNEhQKDHVzZXJfY3JlYXRlZBgEIAEoCBITCgt1c2VyX3B1YmtleRgFIAEoDBpDChFJbnNlcnRUb2tlblJlc3VsdBISCgpjaGFpbl9hZGRyGAEgASgMEhoKBXRva2VuGAIgASgLMgsubm9yZC5Ub2tlbhoyChJJbnNlcnRNYXJrZXRSZXN1bHQSHAoGbWFya2V0GAEgASgLMgwubm9yZC5NYXJrZXQaeQoOV2l0aGRyYXdSZXN1bHQSEAoIdG9rZW5faWQYASABKA0SDgoGYW1vdW50GAIgASgEEg8KB2JhbGFuY2UYAyABKAQSEgoKYWNjb3VudF9pZBgEIAEoDRILCgNmZWUYBSABKAQSEwoLdXNlcl9wdWJrZXkYBiABKAwaQAoWT3JhY2xlU3ltYm9sRmVlZFJlc3VsdBIVCg1vcmFjbGVfc3ltYm9sGAEgASgJEg8KB2ZlZWRfaWQYAiABKAwaJwoST3JhY2xlVXBkYXRlUmVzdWx0EhEKCXRpbWVzdGFtcBgBIAEoAxpIChdVcGRhdGVHdWFyZGlhblNldFJlc3VsdBIaChJndWFyZGlhbl9zZXRfaW5kZXgYASABKA0SEQoJYWRkcmVzc2VzGAIgAygMGkMKDFBlcnBQb3NpdGlvbhIRCgltYXJrZXRfaWQYASABKA0SEQoJYmFzZV9zaXplGAIgASgDEg0KBXByaWNlGAMgASgEGp4BChFBY2NvdW50TGlxdWlkYXRlZBIdChVsaXF1aWRhdG9yX2FjY291bnRfaWQYASABKA0SHQoVbGlxdWlkYXRlZV9hY2NvdW50X2lkGAIgASgNEhgKEGNhbmNlbGxlZF9vcmRlcnMYAyADKAQSMQoNcmVtb3ZlZF9wZXJwcxgEIAMoCzIaLm5vcmQuUmVjZWlwdC5QZXJwUG9zaXRpb24aEAoOU2Vzc2lvblJldm9rZWQaCAoGUGF1c2VkGgoKCFVucGF1c2VkGuEBCgtUcmFuc2ZlcnJlZBIXCg9mcm9tX2FjY291bnRfaWQYASABKA0SHAoPdG9fdXNlcl9hY2NvdW50GAIgASgNSACIAQESEAoIdG9rZW5faWQYAyABKA0SDgoGYW1vdW50GAQgASgEEhcKD2FjY291bnRfY3JlYXRlZBgFIAEoCBI1ChJ0b19zcGVjaWFsX2FjY291bnQYBiABKA4yFC5ub3JkLlNwZWNpYWxBY2NvdW50SAGIAQFCEgoQX3RvX3VzZXJfYWNjb3VudEIVChNfdG9fc3BlY2lhbF9hY2NvdW50Gg4KDFRyaWdnZXJBZGRlZBoWChRUcmlnZ2VyU3RhdHVzQ2hhbmdlZBqbAQoZQXRvbWljU3ViYWN0aW9uUmVzdWx0S2luZBI8ChJwbGFjZV9vcmRlcl9yZXN1bHQYASABKAsyHi5ub3JkLlJlY2VpcHQuUGxhY2VPcmRlclJlc3VsdEgAEjcKDGNhbmNlbF9vcmRlchgCIAEoCzIfLm5vcmQuUmVjZWlwdC5DYW5jZWxPcmRlclJlc3VsdEgAQgcKBWlubmVyGkgKDEF0b21pY1Jlc3VsdBI4CgdyZXN1bHRzGAEgAygLMicubm9yZC5SZWNlaXB0LkF0b21pY1N1YmFjdGlvblJlc3VsdEtpbmRCBgoEa2luZCoYCgRTaWRlEgcKA0FTSxAAEgcKA0JJRBABKi0KC1RyaWdnZXJLaW5kEg0KCVNUT1BfTE9TUxAAEg8KC1RBS0VfUFJPRklUEAEqSgoNVHJpZ2dlclN0YXR1cxIKCgZBQ1RJVkUQABILCgdTVUNDRVNTEAESCgoGQ0FOQ0VMEAISCAoERkFJTBADEgoKBlJFTU9WRRAEKk8KCEZpbGxNb2RlEgkKBUxJTUlUEAASDQoJUE9TVF9PTkxZEAESFwoTSU1NRURJQVRFX09SX0NBTkNFTBACEhAKDEZJTExfT1JfS0lMTBADKiYKCk1hcmtldFR5cGUSCAoEU1BPVBAAEg4KClBFUlBFVFVBTFMQASqxGAoFRXJyb3ISDQoJRFVQTElDQVRFEAASEgoOREVDT0RFX0ZBSUxVUkUQAhIVChFJTlZBTElEX1NJR05BVFVSRRADEhQKEE1BUktFVF9OT1RfRk9VTkQQBBITCg9UT0tFTl9OT1RfRk9VTkQQBRISCg5VU0VSX05PVF9GT1VORBAGEhUKEVNFU1NJT05fTk9UX0ZPVU5EEAcSEwoPT1JERVJfTk9UX0ZPVU5EEAgSEwoPT1JERVJfU0laRV9aRVJPEAkSFwoTQVJJVEhNRVRJQ19PVkVSRkxPVxALEhcKE0lOVkFMSURfT1JERVJfT1dORVIQDhIaChZLRVlfQUxSRUFEWV9SRUdJU1RFUkVEEA8SHAoYRVhQSVJZX1RJTUVTVEFNUF9JTl9QQVNUEBASHAoYVVBEQVRFX1RJTUVTVEFNUF9JTl9QQVNUEBESGAoUVE9PX01BTllfT1BFTl9PUkRFUlMQEhIdChlXSVRIRFJBV19BTU9VTlRfVE9PX1NNQUxMEBUSIAocREVDT0RFX0ZBSUxVUkVfTEVOR1RIX1BSRUZJWBAhEhYKEkRFQ09ERV9GQUlMVVJFX1JBVxAiEhkKFURFQ09ERV9GQUlMVVJFX0RPTUFJThAjEhcKE1BZVEhfRkVFRF9OT1RfQURERUQQXRIVChFQWVRIX0ZFRURfTUlTU0lORxBeEhsKF1BZVEhfRkVFRF9BTFJFQURZX0FEREVEEF8SIwofUFlUSF9HVUFSRElBTl9TRVRfVU5JTklUSUFMSVpFRBBgEh0KGVBZVEhfR1VBUkRJQU5fU0VUX0lOVkFMSUQQYRIjCh9QWVRIX0ZFRURfREVDSU1BTFNfT1VUX09GX1JBTkdFEGISIAocUFlUSF9GRUVEX1BSSUNFX09VVF9PRl9SQU5HRRBjEiMKH1BZVEhfRkVFRF9WQVJJQU5DRV9PVVRfT0ZfUkFOR0UQZBI1CjFQWVRIX0dVQVJESUFOX1NFVF9BTkRfUFlUSF9TSUdOQVRVUkVfRE9fTk9UX01BVENIEGUSHAoYSU5WQUxJRF9UT0tFTl9QQVJBTUVURVJTEGYSHAoYSU5ERVhfUFJJQ0VfT1VUX09GX1JBTkdFEGcSHwobSU5ERVhfREVDSU1BTFNfT1VUX09GX1JBTkdFEGgSGQoVSU5WQUxJRF9TVEFURV9WRVJTSU9OEGkSEwoPSU5WQUxJRF9NQVJHSU5TEGsSIQodTUFSS0VUX0RFQ0lNQUxTX0VYQ0VFRF9MSU1JVFMQbRITCg9UT09fTUFOWV9UT0tFTlMQbhIUChBGVU5ESU5HX09WRVJGTE9XEHsSNwozQ0FOX1JFRFVDRV9QT1NJVElPTl9PTkxZX0lGX0FMTF9PUkRFUlNfQVJFX0NBTkNFTEVEEHwSFwoTVU5FWFBFQ1RFRF9UT0tFTl9JRBB/EhQKD1RPS0VOX05PVF9SRUFEWRCCARIcChhUT0tFTl9BTFJFQURZX1JFR0lTVEVSRUQQcBIhChxJTU1FRElBVEVfT1JERVJfR09UX05PX0ZJTExTEIUBEhkKFEZBSUxFRF9UT19GSUxMX0xJTUlUEIYBEjAKK1BPU1RfT05MWV9NVVNUX05PVF9GSUxMX0FOWV9PUFBPU0lURV9PUkRFUlMQhwESDAoHSU5WQUxJRBCIARIQCgtNQUlOVEVOQU5DRRCJARIaChVNSU5JTVVNX1NJWkVfREVDSU1BTFMQigESMgotUEFSQU1FVEVSU19XSUxMX0NSRUFURV9OT05fT1BFUkFUSU9OQUxfTUFSS0VUEIsBEiIKHU9OTFlfSU1NRURJQVRFX09SREVSU19BTExPV0VEEIwBEhsKFlRPT19NQU5ZX1VTRVJfQUNDT1VOVFMQjQESFgoRQUNDT1VOVF9OT1RfRk9VTkQQjgESGgoVQUNDT1VOVF9JTlZBTElEX09XTkVSEI8BEhEKDERVU1RfQUNDT1VOVBCRARIMCgdCQUxBTkNFEKABEh0KGEJBTEFOQ0VfREVQT1NJVF9PVkVSRkxPVxChARIcChdCQUxBTkNFX0NIQU5HRV9PVkVSRkxPVxCiARIiCh1CQUxBTkNFX0NIQU5HRV9MSU1JVF9FWENFRURFRBCjARIZChRCQUxBTkNFX0lOU1VGRklDSUVOVBCkARIeChlVTkFVVEhFTlRJQ0FURURfTDFfQUNUSU9OEKUBEh0KGEVOQ09ERURfQUNUSU9OX1RPT19MQVJHRRCmARIMCgdUUklHR0VSEKgBEhoKFVRSSUdHRVJfSU5WQUxJRF9QUklDRRCpARIWChFUUklHR0VSX05PVF9GT1VORBCqARIOCglUSU1FU1RBTVAQsAESHwoaVElNRVNUQU1QX09VVF9PRl9USFJFU0hPTEQQsQESFAoPVElNRVNUQU1QX1NUQUxFELIBEiUKIEJBTktSVVBUQ1lfSU5TVUZGSUNJRU5UX0NPVkVSQUdFELkBEhkKFEJBTktSVVBUQ1lfTk9UX0ZPVU5EELoBEhsKFkJBTktSVVBUQ1lfTk9UX0FMTE9XRUQQuwESFQoQTUFSS0VUX05PVF9SRUFEWRDAARISCg1NQVJLRVRfRlJPWkVOEMEBEhEKDE1BUktFVF9FTVBUWRDCARINCghQT1NJVElPThDIARIXChJQT1NJVElPTl9OT1RfRk9VTkQQyQESGQoUUE9TSVRJT05fU1RBVEVfT1JERVIQygESHwoaUE9TSVRJT05fU1RBVEVfT1JERVJfUFJJQ0UQywESHgoZUE9TSVRJT05fU1RBVEVfT1JERVJfU0laRRDMARIeChlQT1NJVElPTl9TVEFURV9PUkRFUl9TSURFEM0BEhgKE1BPU0lUSU9OX1NJWkVfTElNSVQQzgESCgoFUFJJQ0UQ0QESGwoWU0lHTkFUVVJFX1ZFUklGSUNBVElPThDZARIwCitTSUdOQVRVUkVfVkVSSUZJQ0FUSU9OX01BTEZPUk1FRF9QVUJMSUNfS0VZENoBEioKJVNJR05BVFVSRV9WRVJJRklDQVRJT05fSU5WQUxJRF9MRU5HVEgQ2wESCQoEUklTSxDgARI0Ci9SSVNLX0RFTEVHQVRJT05fTUZfVE9fQkVfTEVTU19USEFOX09SX0VRVUFMX01NRhDhARIkCh9SSVNLX09NRl9MRVNTX1RIQU5fT1JfRVFVQUxfSU1GEOIBEiQKH1JJU0tfT01GX0xFU1NfVEhBTl9PUl9FUVVBTF9DTUYQ4wESKgolUklTS19UUkFERV9PTUZfTEVTU19USEFOX09SX0VRVUFMX0NNRhDlARI1CjBSSVNLX1VOSEVBTFRIWV9NRl9BTkRfUE9OX0FGVEVSX0JFVFRFUl9PRl9CRUZPUkUQ5AESFAoPT1JERVJfRVhFQ1VUSU9OEPABEhoKFU9SREVSX0VYRUNVVElPTl9FTVBUWRDxARIhChxPUkRFUl9FWEVDVVRJT05fRklMTF9PUl9LSUxMEPIBEiMKHk9SREVSX0VYRUNVVElPTl9NSVNTSU5HX0xJTUlUUxDzARIiCh1PUkRFUl9FWEVDVVRJT05fTUlTU0lOR19QUklDRRD0ARIfChpPUkRFUl9FWEVDVVRJT05fU0laRV9MSU1JVBD1ARIgChtPUkRFUl9FWEVDVVRJT05fTElNSVRfUFJJQ0UQ9gESHgoZT1JERVJfUkVEVUNFX0lTX1BPU1RfT05MWRD3ARIfChpPUkRFUl9FWEVDVVRJT05fU0VMTF9QUklDRRD4ARIlCiBPUkRFUl9TSVpFX0VYQ0VFRFNfUE9TSVRJT05fU0laRRD5ARIoCiNBVE9NSUNTX1RSQURFU19DQU5OT1RfRk9MTE9XX1BMQUNFUxCAAhIwCitBVE9NSUNTX0NBTkNFTFNfQ0FOTk9UX0ZPTExPV19UUkFERVNfUExBQ0VTEIECEiYKIUFDVElPTl9QT1NJVElPTl9TSE9VTERfQkVfQ09WRVJFRBCRAhIZChRBQ1RJT05fSU5WQUxJRF9OT05DRRCSAhIpCiRBQ1RJT05fUFJPUE9TRURfUFJJQ0VfTVVTVF9CRV9ISUdIRVIQkwISFAoPTk9UX0lNUExFTUVOVEVEEPQDEgwKB0Ryb3BwZWQQ5wcqHgoOU3BlY2lhbEFjY291bnQSDAoIRmVlVmF1bHQQAGIGcHJvdG8z");
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* @generated from message nord.Market
|
|
@@ -195,14 +195,14 @@ export const TokenSchema: GenMessage<Token, {jsonType: TokenJson}> = /*@__PURE__
|
|
|
195
195
|
*/
|
|
196
196
|
export type QuoteSize = Message<"nord.QuoteSize"> & {
|
|
197
197
|
/**
|
|
198
|
-
* In `Market.size_decimals` decimals
|
|
198
|
+
* In `Market.size_decimals` decimals. 63 bit positive integer.
|
|
199
199
|
*
|
|
200
200
|
* @generated from field: uint64 size = 1;
|
|
201
201
|
*/
|
|
202
202
|
size: bigint;
|
|
203
203
|
|
|
204
204
|
/**
|
|
205
|
-
* In `Market.price_decimals` decimals
|
|
205
|
+
* In `Market.price_decimals` decimals. 64 bit positive integer.
|
|
206
206
|
*
|
|
207
207
|
* @generated from field: uint64 price = 2;
|
|
208
208
|
*/
|
|
@@ -219,14 +219,14 @@ export type QuoteSize = Message<"nord.QuoteSize"> & {
|
|
|
219
219
|
*/
|
|
220
220
|
export type QuoteSizeJson = {
|
|
221
221
|
/**
|
|
222
|
-
* In `Market.size_decimals` decimals
|
|
222
|
+
* In `Market.size_decimals` decimals. 63 bit positive integer.
|
|
223
223
|
*
|
|
224
224
|
* @generated from field: uint64 size = 1;
|
|
225
225
|
*/
|
|
226
226
|
size?: string;
|
|
227
227
|
|
|
228
228
|
/**
|
|
229
|
-
* In `Market.price_decimals` decimals
|
|
229
|
+
* In `Market.price_decimals` decimals. 64 bit positive integer.
|
|
230
230
|
*
|
|
231
231
|
* @generated from field: uint64 price = 2;
|
|
232
232
|
*/
|
|
@@ -1063,7 +1063,7 @@ export type Action_PlaceOrder = Message<"nord.Action.PlaceOrder"> & {
|
|
|
1063
1063
|
|
|
1064
1064
|
/**
|
|
1065
1065
|
* Quote size limit.
|
|
1066
|
-
* Optional
|
|
1066
|
+
* Optional.
|
|
1067
1067
|
*
|
|
1068
1068
|
* @generated from field: nord.QuoteSize quote_size = 8;
|
|
1069
1069
|
*/
|
|
@@ -1184,7 +1184,7 @@ export type Action_PlaceOrderJson = {
|
|
|
1184
1184
|
|
|
1185
1185
|
/**
|
|
1186
1186
|
* Quote size limit.
|
|
1187
|
-
* Optional
|
|
1187
|
+
* Optional.
|
|
1188
1188
|
*
|
|
1189
1189
|
* @generated from field: nord.QuoteSize quote_size = 8;
|
|
1190
1190
|
*/
|
|
@@ -1783,11 +1783,14 @@ export type Action_AddTrigger = Message<"nord.Action.AddTrigger"> & {
|
|
|
1783
1783
|
side: Side;
|
|
1784
1784
|
|
|
1785
1785
|
/**
|
|
1786
|
-
*
|
|
1787
|
-
*
|
|
1788
|
-
* @generated from field: uint64 price = 5;
|
|
1786
|
+
* @generated from field: uint64 trigger_price = 5;
|
|
1789
1787
|
*/
|
|
1790
|
-
|
|
1788
|
+
triggerPrice: bigint;
|
|
1789
|
+
|
|
1790
|
+
/**
|
|
1791
|
+
* @generated from field: optional uint64 limit_price = 6;
|
|
1792
|
+
*/
|
|
1793
|
+
limitPrice?: bigint;
|
|
1791
1794
|
|
|
1792
1795
|
/**
|
|
1793
1796
|
* @generated from field: optional uint32 account_id = 10;
|
|
@@ -1820,11 +1823,14 @@ export type Action_AddTriggerJson = {
|
|
|
1820
1823
|
side?: SideJson;
|
|
1821
1824
|
|
|
1822
1825
|
/**
|
|
1823
|
-
*
|
|
1824
|
-
*
|
|
1825
|
-
* @generated from field: uint64 price = 5;
|
|
1826
|
+
* @generated from field: uint64 trigger_price = 5;
|
|
1826
1827
|
*/
|
|
1827
|
-
|
|
1828
|
+
triggerPrice?: string;
|
|
1829
|
+
|
|
1830
|
+
/**
|
|
1831
|
+
* @generated from field: optional uint64 limit_price = 6;
|
|
1832
|
+
*/
|
|
1833
|
+
limitPrice?: string;
|
|
1828
1834
|
|
|
1829
1835
|
/**
|
|
1830
1836
|
* @generated from field: optional uint32 account_id = 10;
|
|
@@ -1864,9 +1870,14 @@ export type Action_RemoveTrigger = Message<"nord.Action.RemoveTrigger"> & {
|
|
|
1864
1870
|
side: Side;
|
|
1865
1871
|
|
|
1866
1872
|
/**
|
|
1867
|
-
* @generated from field: uint64
|
|
1873
|
+
* @generated from field: uint64 trigger_price = 5;
|
|
1868
1874
|
*/
|
|
1869
|
-
|
|
1875
|
+
triggerPrice: bigint;
|
|
1876
|
+
|
|
1877
|
+
/**
|
|
1878
|
+
* @generated from field: optional uint64 limit_price = 6;
|
|
1879
|
+
*/
|
|
1880
|
+
limitPrice?: bigint;
|
|
1870
1881
|
|
|
1871
1882
|
/**
|
|
1872
1883
|
* @generated from field: optional uint32 account_id = 10;
|
|
@@ -1899,9 +1910,14 @@ export type Action_RemoveTriggerJson = {
|
|
|
1899
1910
|
side?: SideJson;
|
|
1900
1911
|
|
|
1901
1912
|
/**
|
|
1902
|
-
* @generated from field: uint64
|
|
1913
|
+
* @generated from field: uint64 trigger_price = 5;
|
|
1903
1914
|
*/
|
|
1904
|
-
|
|
1915
|
+
triggerPrice?: string;
|
|
1916
|
+
|
|
1917
|
+
/**
|
|
1918
|
+
* @generated from field: optional uint64 limit_price = 6;
|
|
1919
|
+
*/
|
|
1920
|
+
limitPrice?: string;
|
|
1905
1921
|
|
|
1906
1922
|
/**
|
|
1907
1923
|
* @generated from field: optional uint32 account_id = 10;
|
|
@@ -2218,10 +2234,10 @@ export type Receipt = Message<"nord.Receipt"> & {
|
|
|
2218
2234
|
case: "triggerAdded";
|
|
2219
2235
|
} | {
|
|
2220
2236
|
/**
|
|
2221
|
-
* @generated from field: nord.Receipt.
|
|
2237
|
+
* @generated from field: nord.Receipt.TriggerStatusChanged trigger_status_changed = 65;
|
|
2222
2238
|
*/
|
|
2223
|
-
value:
|
|
2224
|
-
case: "
|
|
2239
|
+
value: Receipt_TriggerStatusChanged;
|
|
2240
|
+
case: "triggerStatusChanged";
|
|
2225
2241
|
} | {
|
|
2226
2242
|
/**
|
|
2227
2243
|
* @generated from field: nord.Receipt.PositionTakenOrTradedResult position_taken_or_traded = 66;
|
|
@@ -2336,9 +2352,9 @@ export type ReceiptJson = {
|
|
|
2336
2352
|
triggerAdded?: Receipt_TriggerAddedJson;
|
|
2337
2353
|
|
|
2338
2354
|
/**
|
|
2339
|
-
* @generated from field: nord.Receipt.
|
|
2355
|
+
* @generated from field: nord.Receipt.TriggerStatusChanged trigger_status_changed = 65;
|
|
2340
2356
|
*/
|
|
2341
|
-
|
|
2357
|
+
triggerStatusChanged?: Receipt_TriggerStatusChangedJson;
|
|
2342
2358
|
|
|
2343
2359
|
/**
|
|
2344
2360
|
* @generated from field: nord.Receipt.PositionTakenOrTradedResult position_taken_or_traded = 66;
|
|
@@ -3305,22 +3321,22 @@ export const Receipt_TriggerAddedSchema: GenMessage<Receipt_TriggerAdded, {jsonT
|
|
|
3305
3321
|
messageDesc(file_nord, 10, 20);
|
|
3306
3322
|
|
|
3307
3323
|
/**
|
|
3308
|
-
* @generated from message nord.Receipt.
|
|
3324
|
+
* @generated from message nord.Receipt.TriggerStatusChanged
|
|
3309
3325
|
*/
|
|
3310
|
-
export type
|
|
3326
|
+
export type Receipt_TriggerStatusChanged = Message<"nord.Receipt.TriggerStatusChanged"> & {
|
|
3311
3327
|
};
|
|
3312
3328
|
|
|
3313
3329
|
/**
|
|
3314
|
-
* @generated from message nord.Receipt.
|
|
3330
|
+
* @generated from message nord.Receipt.TriggerStatusChanged
|
|
3315
3331
|
*/
|
|
3316
|
-
export type
|
|
3332
|
+
export type Receipt_TriggerStatusChangedJson = {
|
|
3317
3333
|
};
|
|
3318
3334
|
|
|
3319
3335
|
/**
|
|
3320
|
-
* Describes the message nord.Receipt.
|
|
3321
|
-
* Use `create(
|
|
3336
|
+
* Describes the message nord.Receipt.TriggerStatusChanged.
|
|
3337
|
+
* Use `create(Receipt_TriggerStatusChangedSchema)` to create a new message.
|
|
3322
3338
|
*/
|
|
3323
|
-
export const
|
|
3339
|
+
export const Receipt_TriggerStatusChangedSchema: GenMessage<Receipt_TriggerStatusChanged, {jsonType: Receipt_TriggerStatusChangedJson}> = /*@__PURE__*/
|
|
3324
3340
|
messageDesc(file_nord, 10, 21);
|
|
3325
3341
|
|
|
3326
3342
|
/**
|
|
@@ -3454,6 +3470,47 @@ export type TriggerKindJson = "STOP_LOSS" | "TAKE_PROFIT";
|
|
|
3454
3470
|
export const TriggerKindSchema: GenEnum<TriggerKind, TriggerKindJson> = /*@__PURE__*/
|
|
3455
3471
|
enumDesc(file_nord, 1);
|
|
3456
3472
|
|
|
3473
|
+
/**
|
|
3474
|
+
* @generated from enum nord.TriggerStatus
|
|
3475
|
+
*/
|
|
3476
|
+
export enum TriggerStatus {
|
|
3477
|
+
/**
|
|
3478
|
+
* @generated from enum value: ACTIVE = 0;
|
|
3479
|
+
*/
|
|
3480
|
+
ACTIVE = 0,
|
|
3481
|
+
|
|
3482
|
+
/**
|
|
3483
|
+
* @generated from enum value: SUCCESS = 1;
|
|
3484
|
+
*/
|
|
3485
|
+
SUCCESS = 1,
|
|
3486
|
+
|
|
3487
|
+
/**
|
|
3488
|
+
* @generated from enum value: CANCEL = 2;
|
|
3489
|
+
*/
|
|
3490
|
+
CANCEL = 2,
|
|
3491
|
+
|
|
3492
|
+
/**
|
|
3493
|
+
* @generated from enum value: FAIL = 3;
|
|
3494
|
+
*/
|
|
3495
|
+
FAIL = 3,
|
|
3496
|
+
|
|
3497
|
+
/**
|
|
3498
|
+
* @generated from enum value: REMOVE = 4;
|
|
3499
|
+
*/
|
|
3500
|
+
REMOVE = 4,
|
|
3501
|
+
}
|
|
3502
|
+
|
|
3503
|
+
/**
|
|
3504
|
+
* @generated from enum nord.TriggerStatus
|
|
3505
|
+
*/
|
|
3506
|
+
export type TriggerStatusJson = "ACTIVE" | "SUCCESS" | "CANCEL" | "FAIL" | "REMOVE";
|
|
3507
|
+
|
|
3508
|
+
/**
|
|
3509
|
+
* Describes the enum nord.TriggerStatus.
|
|
3510
|
+
*/
|
|
3511
|
+
export const TriggerStatusSchema: GenEnum<TriggerStatus, TriggerStatusJson> = /*@__PURE__*/
|
|
3512
|
+
enumDesc(file_nord, 2);
|
|
3513
|
+
|
|
3457
3514
|
/**
|
|
3458
3515
|
* @generated from enum nord.FillMode
|
|
3459
3516
|
*/
|
|
@@ -3488,7 +3545,7 @@ export type FillModeJson = "LIMIT" | "POST_ONLY" | "IMMEDIATE_OR_CANCEL" | "FILL
|
|
|
3488
3545
|
* Describes the enum nord.FillMode.
|
|
3489
3546
|
*/
|
|
3490
3547
|
export const FillModeSchema: GenEnum<FillMode, FillModeJson> = /*@__PURE__*/
|
|
3491
|
-
enumDesc(file_nord,
|
|
3548
|
+
enumDesc(file_nord, 3);
|
|
3492
3549
|
|
|
3493
3550
|
/**
|
|
3494
3551
|
* @generated from enum nord.MarketType
|
|
@@ -3514,7 +3571,7 @@ export type MarketTypeJson = "SPOT" | "PERPETUALS";
|
|
|
3514
3571
|
* Describes the enum nord.MarketType.
|
|
3515
3572
|
*/
|
|
3516
3573
|
export const MarketTypeSchema: GenEnum<MarketType, MarketTypeJson> = /*@__PURE__*/
|
|
3517
|
-
enumDesc(file_nord,
|
|
3574
|
+
enumDesc(file_nord, 4);
|
|
3518
3575
|
|
|
3519
3576
|
/**
|
|
3520
3577
|
* Error codes returned by the engine.
|
|
@@ -3607,6 +3664,21 @@ export enum Error {
|
|
|
3607
3664
|
*/
|
|
3608
3665
|
WITHDRAW_AMOUNT_TOO_SMALL = 21,
|
|
3609
3666
|
|
|
3667
|
+
/**
|
|
3668
|
+
* @generated from enum value: DECODE_FAILURE_LENGTH_PREFIX = 33;
|
|
3669
|
+
*/
|
|
3670
|
+
DECODE_FAILURE_LENGTH_PREFIX = 33,
|
|
3671
|
+
|
|
3672
|
+
/**
|
|
3673
|
+
* @generated from enum value: DECODE_FAILURE_RAW = 34;
|
|
3674
|
+
*/
|
|
3675
|
+
DECODE_FAILURE_RAW = 34,
|
|
3676
|
+
|
|
3677
|
+
/**
|
|
3678
|
+
* @generated from enum value: DECODE_FAILURE_DOMAIN = 35;
|
|
3679
|
+
*/
|
|
3680
|
+
DECODE_FAILURE_DOMAIN = 35,
|
|
3681
|
+
|
|
3610
3682
|
/**
|
|
3611
3683
|
* @generated from enum value: PYTH_FEED_NOT_ADDED = 93;
|
|
3612
3684
|
*/
|
|
@@ -3939,6 +4011,14 @@ export enum Error {
|
|
|
3939
4011
|
*/
|
|
3940
4012
|
MARKET_FROZEN = 193,
|
|
3941
4013
|
|
|
4014
|
+
/**
|
|
4015
|
+
* Happens when there is no liquidity on the market at the moment of trigger
|
|
4016
|
+
* execution
|
|
4017
|
+
*
|
|
4018
|
+
* @generated from enum value: MARKET_EMPTY = 194;
|
|
4019
|
+
*/
|
|
4020
|
+
MARKET_EMPTY = 194,
|
|
4021
|
+
|
|
3942
4022
|
/**
|
|
3943
4023
|
* 11001_000
|
|
3944
4024
|
*
|
|
@@ -4089,6 +4169,11 @@ export enum Error {
|
|
|
4089
4169
|
*/
|
|
4090
4170
|
ORDER_EXECUTION_SELL_PRICE = 248,
|
|
4091
4171
|
|
|
4172
|
+
/**
|
|
4173
|
+
* @generated from enum value: ORDER_SIZE_EXCEEDS_POSITION_SIZE = 249;
|
|
4174
|
+
*/
|
|
4175
|
+
ORDER_SIZE_EXCEEDS_POSITION_SIZE = 249,
|
|
4176
|
+
|
|
4092
4177
|
/**
|
|
4093
4178
|
* 10000_0000
|
|
4094
4179
|
*
|
|
@@ -4141,13 +4226,13 @@ export enum Error {
|
|
|
4141
4226
|
*
|
|
4142
4227
|
* @generated from enum nord.Error
|
|
4143
4228
|
*/
|
|
4144
|
-
export type ErrorJson = "DUPLICATE" | "DECODE_FAILURE" | "INVALID_SIGNATURE" | "MARKET_NOT_FOUND" | "TOKEN_NOT_FOUND" | "USER_NOT_FOUND" | "SESSION_NOT_FOUND" | "ORDER_NOT_FOUND" | "ORDER_SIZE_ZERO" | "ARITHMETIC_OVERFLOW" | "INVALID_ORDER_OWNER" | "KEY_ALREADY_REGISTERED" | "EXPIRY_TIMESTAMP_IN_PAST" | "UPDATE_TIMESTAMP_IN_PAST" | "TOO_MANY_OPEN_ORDERS" | "WITHDRAW_AMOUNT_TOO_SMALL" | "PYTH_FEED_NOT_ADDED" | "PYTH_FEED_MISSING" | "PYTH_FEED_ALREADY_ADDED" | "PYTH_GUARDIAN_SET_UNINITIALIZED" | "PYTH_GUARDIAN_SET_INVALID" | "PYTH_FEED_DECIMALS_OUT_OF_RANGE" | "PYTH_FEED_PRICE_OUT_OF_RANGE" | "PYTH_FEED_VARIANCE_OUT_OF_RANGE" | "PYTH_GUARDIAN_SET_AND_PYTH_SIGNATURE_DO_NOT_MATCH" | "INVALID_TOKEN_PARAMETERS" | "INDEX_PRICE_OUT_OF_RANGE" | "INDEX_DECIMALS_OUT_OF_RANGE" | "INVALID_STATE_VERSION" | "INVALID_MARGINS" | "MARKET_DECIMALS_EXCEED_LIMITS" | "TOO_MANY_TOKENS" | "FUNDING_OVERFLOW" | "CAN_REDUCE_POSITION_ONLY_IF_ALL_ORDERS_ARE_CANCELED" | "UNEXPECTED_TOKEN_ID" | "TOKEN_NOT_READY" | "TOKEN_ALREADY_REGISTERED" | "IMMEDIATE_ORDER_GOT_NO_FILLS" | "FAILED_TO_FILL_LIMIT" | "POST_ONLY_MUST_NOT_FILL_ANY_OPPOSITE_ORDERS" | "INVALID" | "MAINTENANCE" | "MINIMUM_SIZE_DECIMALS" | "PARAMETERS_WILL_CREATE_NON_OPERATIONAL_MARKET" | "ONLY_IMMEDIATE_ORDERS_ALLOWED" | "TOO_MANY_USER_ACCOUNTS" | "ACCOUNT_NOT_FOUND" | "ACCOUNT_INVALID_OWNER" | "DUST_ACCOUNT" | "BALANCE" | "BALANCE_DEPOSIT_OVERFLOW" | "BALANCE_CHANGE_OVERFLOW" | "BALANCE_CHANGE_LIMIT_EXCEEDED" | "BALANCE_INSUFFICIENT" | "UNAUTHENTICATED_L1_ACTION" | "ENCODED_ACTION_TOO_LARGE" | "TRIGGER" | "TRIGGER_INVALID_PRICE" | "TRIGGER_NOT_FOUND" | "TIMESTAMP" | "TIMESTAMP_OUT_OF_THRESHOLD" | "TIMESTAMP_STALE" | "BANKRUPTCY_INSUFFICIENT_COVERAGE" | "BANKRUPTCY_NOT_FOUND" | "BANKRUPTCY_NOT_ALLOWED" | "MARKET_NOT_READY" | "MARKET_FROZEN" | "POSITION" | "POSITION_NOT_FOUND" | "POSITION_STATE_ORDER" | "POSITION_STATE_ORDER_PRICE" | "POSITION_STATE_ORDER_SIZE" | "POSITION_STATE_ORDER_SIDE" | "POSITION_SIZE_LIMIT" | "PRICE" | "SIGNATURE_VERIFICATION" | "SIGNATURE_VERIFICATION_MALFORMED_PUBLIC_KEY" | "SIGNATURE_VERIFICATION_INVALID_LENGTH" | "RISK" | "RISK_DELEGATION_MF_TO_BE_LESS_THAN_OR_EQUAL_MMF" | "RISK_OMF_LESS_THAN_OR_EQUAL_IMF" | "RISK_OMF_LESS_THAN_OR_EQUAL_CMF" | "RISK_TRADE_OMF_LESS_THAN_OR_EQUAL_CMF" | "RISK_UNHEALTHY_MF_AND_PON_AFTER_BETTER_OF_BEFORE" | "ORDER_EXECUTION" | "ORDER_EXECUTION_EMPTY" | "ORDER_EXECUTION_FILL_OR_KILL" | "ORDER_EXECUTION_MISSING_LIMITS" | "ORDER_EXECUTION_MISSING_PRICE" | "ORDER_EXECUTION_SIZE_LIMIT" | "ORDER_EXECUTION_LIMIT_PRICE" | "ORDER_REDUCE_IS_POST_ONLY" | "ORDER_EXECUTION_SELL_PRICE" | "ATOMICS_TRADES_CANNOT_FOLLOW_PLACES" | "ATOMICS_CANCELS_CANNOT_FOLLOW_TRADES_PLACES" | "ACTION_POSITION_SHOULD_BE_COVERED" | "ACTION_INVALID_NONCE" | "ACTION_PROPOSED_PRICE_MUST_BE_HIGHER" | "NOT_IMPLEMENTED" | "Dropped";
|
|
4229
|
+
export type ErrorJson = "DUPLICATE" | "DECODE_FAILURE" | "INVALID_SIGNATURE" | "MARKET_NOT_FOUND" | "TOKEN_NOT_FOUND" | "USER_NOT_FOUND" | "SESSION_NOT_FOUND" | "ORDER_NOT_FOUND" | "ORDER_SIZE_ZERO" | "ARITHMETIC_OVERFLOW" | "INVALID_ORDER_OWNER" | "KEY_ALREADY_REGISTERED" | "EXPIRY_TIMESTAMP_IN_PAST" | "UPDATE_TIMESTAMP_IN_PAST" | "TOO_MANY_OPEN_ORDERS" | "WITHDRAW_AMOUNT_TOO_SMALL" | "DECODE_FAILURE_LENGTH_PREFIX" | "DECODE_FAILURE_RAW" | "DECODE_FAILURE_DOMAIN" | "PYTH_FEED_NOT_ADDED" | "PYTH_FEED_MISSING" | "PYTH_FEED_ALREADY_ADDED" | "PYTH_GUARDIAN_SET_UNINITIALIZED" | "PYTH_GUARDIAN_SET_INVALID" | "PYTH_FEED_DECIMALS_OUT_OF_RANGE" | "PYTH_FEED_PRICE_OUT_OF_RANGE" | "PYTH_FEED_VARIANCE_OUT_OF_RANGE" | "PYTH_GUARDIAN_SET_AND_PYTH_SIGNATURE_DO_NOT_MATCH" | "INVALID_TOKEN_PARAMETERS" | "INDEX_PRICE_OUT_OF_RANGE" | "INDEX_DECIMALS_OUT_OF_RANGE" | "INVALID_STATE_VERSION" | "INVALID_MARGINS" | "MARKET_DECIMALS_EXCEED_LIMITS" | "TOO_MANY_TOKENS" | "FUNDING_OVERFLOW" | "CAN_REDUCE_POSITION_ONLY_IF_ALL_ORDERS_ARE_CANCELED" | "UNEXPECTED_TOKEN_ID" | "TOKEN_NOT_READY" | "TOKEN_ALREADY_REGISTERED" | "IMMEDIATE_ORDER_GOT_NO_FILLS" | "FAILED_TO_FILL_LIMIT" | "POST_ONLY_MUST_NOT_FILL_ANY_OPPOSITE_ORDERS" | "INVALID" | "MAINTENANCE" | "MINIMUM_SIZE_DECIMALS" | "PARAMETERS_WILL_CREATE_NON_OPERATIONAL_MARKET" | "ONLY_IMMEDIATE_ORDERS_ALLOWED" | "TOO_MANY_USER_ACCOUNTS" | "ACCOUNT_NOT_FOUND" | "ACCOUNT_INVALID_OWNER" | "DUST_ACCOUNT" | "BALANCE" | "BALANCE_DEPOSIT_OVERFLOW" | "BALANCE_CHANGE_OVERFLOW" | "BALANCE_CHANGE_LIMIT_EXCEEDED" | "BALANCE_INSUFFICIENT" | "UNAUTHENTICATED_L1_ACTION" | "ENCODED_ACTION_TOO_LARGE" | "TRIGGER" | "TRIGGER_INVALID_PRICE" | "TRIGGER_NOT_FOUND" | "TIMESTAMP" | "TIMESTAMP_OUT_OF_THRESHOLD" | "TIMESTAMP_STALE" | "BANKRUPTCY_INSUFFICIENT_COVERAGE" | "BANKRUPTCY_NOT_FOUND" | "BANKRUPTCY_NOT_ALLOWED" | "MARKET_NOT_READY" | "MARKET_FROZEN" | "MARKET_EMPTY" | "POSITION" | "POSITION_NOT_FOUND" | "POSITION_STATE_ORDER" | "POSITION_STATE_ORDER_PRICE" | "POSITION_STATE_ORDER_SIZE" | "POSITION_STATE_ORDER_SIDE" | "POSITION_SIZE_LIMIT" | "PRICE" | "SIGNATURE_VERIFICATION" | "SIGNATURE_VERIFICATION_MALFORMED_PUBLIC_KEY" | "SIGNATURE_VERIFICATION_INVALID_LENGTH" | "RISK" | "RISK_DELEGATION_MF_TO_BE_LESS_THAN_OR_EQUAL_MMF" | "RISK_OMF_LESS_THAN_OR_EQUAL_IMF" | "RISK_OMF_LESS_THAN_OR_EQUAL_CMF" | "RISK_TRADE_OMF_LESS_THAN_OR_EQUAL_CMF" | "RISK_UNHEALTHY_MF_AND_PON_AFTER_BETTER_OF_BEFORE" | "ORDER_EXECUTION" | "ORDER_EXECUTION_EMPTY" | "ORDER_EXECUTION_FILL_OR_KILL" | "ORDER_EXECUTION_MISSING_LIMITS" | "ORDER_EXECUTION_MISSING_PRICE" | "ORDER_EXECUTION_SIZE_LIMIT" | "ORDER_EXECUTION_LIMIT_PRICE" | "ORDER_REDUCE_IS_POST_ONLY" | "ORDER_EXECUTION_SELL_PRICE" | "ORDER_SIZE_EXCEEDS_POSITION_SIZE" | "ATOMICS_TRADES_CANNOT_FOLLOW_PLACES" | "ATOMICS_CANCELS_CANNOT_FOLLOW_TRADES_PLACES" | "ACTION_POSITION_SHOULD_BE_COVERED" | "ACTION_INVALID_NONCE" | "ACTION_PROPOSED_PRICE_MUST_BE_HIGHER" | "NOT_IMPLEMENTED" | "Dropped";
|
|
4145
4230
|
|
|
4146
4231
|
/**
|
|
4147
4232
|
* Describes the enum nord.Error.
|
|
4148
4233
|
*/
|
|
4149
4234
|
export const ErrorSchema: GenEnum<Error, ErrorJson> = /*@__PURE__*/
|
|
4150
|
-
enumDesc(file_nord,
|
|
4235
|
+
enumDesc(file_nord, 5);
|
|
4151
4236
|
|
|
4152
4237
|
/**
|
|
4153
4238
|
* @generated from enum nord.SpecialAccount
|
|
@@ -4168,5 +4253,5 @@ export type SpecialAccountJson = "FeeVault";
|
|
|
4168
4253
|
* Describes the enum nord.SpecialAccount.
|
|
4169
4254
|
*/
|
|
4170
4255
|
export const SpecialAccountSchema: GenEnum<SpecialAccount, SpecialAccountJson> = /*@__PURE__*/
|
|
4171
|
-
enumDesc(file_nord,
|
|
4256
|
+
enumDesc(file_nord, 6);
|
|
4172
4257
|
|