@cartanova/qgrid-cli 1.5.2 → 1.5.4
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/bundle/dist/application/qgrid/qgrid.frame.js +16 -3
- package/bundle/dist/application/queries.generated.js +2 -1
- package/bundle/dist/application/request-log/request-log.model.js +9 -2
- package/bundle/dist/application/sonamu.generated.js +5 -3
- package/bundle/dist/application/sonamu.generated.sso.js +3 -2
- package/bundle/dist/i18n/sd.generated.js +2 -1
- package/bundle/dist/migrations/20260421223627_alter_request_logs_add1_alter1.js +16 -0
- package/bundle/src/application/qgrid/qgrid.frame.ts +15 -9
- package/bundle/src/application/queries.generated.ts +3 -0
- package/bundle/src/application/request-log/request-log.entity.json +9 -2
- package/bundle/src/application/request-log/request-log.model.ts +16 -7
- package/bundle/src/application/sonamu.generated.http +8 -1
- package/bundle/src/application/sonamu.generated.sso.ts +1 -0
- package/bundle/src/application/sonamu.generated.ts +3 -1
- package/bundle/src/i18n/sd.generated.ts +1 -0
- package/bundle/src/migrations/20260421223627_alter_request_logs_add1_alter1.ts +15 -0
- package/bundle/web-dist/client/assets/cost-DE_8cLD-.js +1 -0
- package/bundle/web-dist/client/assets/{index-C8rLkdK0.js → index-CiLfNFWG.js} +3 -3
- package/bundle/web-dist/client/assets/index-kQRqXaWM.css +1 -0
- package/bundle/web-dist/client/assets/logs-9Q-LQWWo.js +1 -0
- package/bundle/web-dist/client/assets/routes-MR1DKizN.js +5 -0
- package/bundle/web-dist/client/assets/{sd.generated-CkJCx4Bp.js → sd.generated-DXtkTTGn.js} +1 -1
- package/bundle/web-dist/client/assets/{services.generated-1X7EKUWg.js → services.generated-C0OpNm5q.js} +1 -1
- package/bundle/web-dist/client/assets/{show-QSjdjp8w.js → show-DaKh4LaA.js} +1 -1
- package/bundle/web-dist/client/assets/tokens-FnhMN5oT.js +1 -0
- package/bundle/web-dist/client/index.html +3 -3
- package/bundle/web-dist/server/assets/{copy-C9YkjJVm.js → copy-GKsNP-2_.js} +1 -1
- package/bundle/web-dist/server/assets/cost-D0Ta7MJa.js +14 -0
- package/bundle/web-dist/server/assets/{lazyRouteComponent-Dyl_0WZs.js → lazyRouteComponent-B78WDGgM.js} +1 -1
- package/bundle/web-dist/server/assets/{logs-bLRMIO1J.js → logs-Dcv1XCUK.js} +38 -21
- package/bundle/web-dist/server/assets/{routes-qwzTPLE2.js → routes-B5FkWLUe.js} +26 -17
- package/bundle/web-dist/server/assets/{sd.generated-BeEKgSOs.js → sd.generated-Mnbmi4YR.js} +1 -0
- package/bundle/web-dist/server/assets/{services.generated-DjxCLdMu.js → services.generated-DjdxFvCg.js} +20 -1
- package/bundle/web-dist/server/assets/{show-CvoILmu3.js → show-BqSxVXai.js} +4 -4
- package/bundle/web-dist/server/assets/{tokens-BWmL4GfT.js → tokens-BGaTdsEb.js} +7 -5
- package/bundle/web-dist/server/entry-server.generated.js +6 -6
- package/package.json +1 -1
- package/bundle/web-dist/client/assets/index-BVj-Wxnl.css +0 -1
- package/bundle/web-dist/client/assets/logs-BhPrkIxX.js +0 -1
- package/bundle/web-dist/client/assets/routes-C8VZv8Ii.js +0 -5
- package/bundle/web-dist/client/assets/tokens-BX0VO0Os.js +0 -1
- /package/bundle/web-dist/client/assets/{copy-dnxfhGiF.js → copy-DdGJDXSK.js} +0 -0
|
@@ -3,7 +3,7 @@ import { buildAuthUrl, exchangeCodeForTokens, fetchUsage, generatePKCE, refreshA
|
|
|
3
3
|
import { getPool } from "./pool.js";
|
|
4
4
|
import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorateMetadata.js";
|
|
5
5
|
import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
|
|
6
|
-
import { RequestLogModel } from "../request-log/request-log.model.js";
|
|
6
|
+
import { MICRO_USD, RequestLogModel } from "../request-log/request-log.model.js";
|
|
7
7
|
import { TokenModel } from "../token/token.model.js";
|
|
8
8
|
import { BaseFrameClass, api } from "sonamu";
|
|
9
9
|
//#region src/application/qgrid/qgrid.frame.ts
|
|
@@ -26,13 +26,17 @@ var QgridFrameClass = class extends BaseFrameClass {
|
|
|
26
26
|
output_tokens: result.usage.output_tokens,
|
|
27
27
|
cache_read_tokens: result.usage.cache_read_input_tokens,
|
|
28
28
|
cache_creation_tokens: result.usage.cache_creation_input_tokens,
|
|
29
|
-
duration_ms: result.durationMs
|
|
29
|
+
duration_ms: result.durationMs,
|
|
30
|
+
cost_usd: result.costUsd !== null ? Math.round(result.costUsd * MICRO_USD) : null
|
|
30
31
|
}]).catch((e) => console.error("requestLog save failed:", e));
|
|
31
32
|
return result;
|
|
32
33
|
}
|
|
33
34
|
async stats() {
|
|
34
35
|
return getPool().getStats();
|
|
35
36
|
}
|
|
37
|
+
async totalCost(tokenName) {
|
|
38
|
+
return { usd: await RequestLogModel.totalCost({ token_name: tokenName }) };
|
|
39
|
+
}
|
|
36
40
|
async addToken(token, name, refreshToken) {
|
|
37
41
|
await TokenModel.save([{
|
|
38
42
|
token,
|
|
@@ -196,6 +200,15 @@ __decorate([
|
|
|
196
200
|
__decorateMetadata("design:paramtypes", []),
|
|
197
201
|
__decorateMetadata("design:returntype", Promise)
|
|
198
202
|
], QgridFrameClass.prototype, "stats", null);
|
|
203
|
+
__decorate([
|
|
204
|
+
api({
|
|
205
|
+
httpMethod: "GET",
|
|
206
|
+
clients: ["axios", "tanstack-query"]
|
|
207
|
+
}),
|
|
208
|
+
__decorateMetadata("design:type", Function),
|
|
209
|
+
__decorateMetadata("design:paramtypes", [String]),
|
|
210
|
+
__decorateMetadata("design:returntype", Promise)
|
|
211
|
+
], QgridFrameClass.prototype, "totalCost", null);
|
|
199
212
|
__decorate([
|
|
200
213
|
api({
|
|
201
214
|
httpMethod: "POST",
|
|
@@ -272,4 +285,4 @@ const QgridFrame = new QgridFrameClass();
|
|
|
272
285
|
//#endregion
|
|
273
286
|
export { QgridFrame };
|
|
274
287
|
|
|
275
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQuZnJhbWUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3FncmlkLmZyYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmFzdGlmeVJlcGx5IH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCB7IGFwaSwgQmFzZUZyYW1lQ2xhc3MgfSBmcm9tIFwic29uYW11XCI7XG5cbmltcG9ydCB7IFJlcXVlc3RMb2dNb2RlbCB9IGZyb20gXCIuLi9yZXF1ZXN0LWxvZy9yZXF1ZXN0LWxvZy5tb2RlbFwiO1xuaW1wb3J0IHsgVG9rZW5Nb2RlbCB9IGZyb20gXCIuLi90b2tlbi90b2tlbi5tb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBSZWZyZXNoVG9rZW5QYXJhbXMgfSBmcm9tIFwiLi4vdG9rZW4vdG9rZW4udHlwZXNcIjtcbmltcG9ydCB7XG4gIGJ1aWxkQXV0aFVybCxcbiAgZXhjaGFuZ2VDb2RlRm9yVG9rZW5zLFxuICBmZXRjaFVzYWdlLFxuICBnZW5lcmF0ZVBLQ0UsXG4gIHJlZnJlc2hBY2Nlc3NUb2tlbixcbn0gZnJvbSBcIi4vb2F1dGhcIjtcbmltcG9ydCB7IHR5cGUgQ2xhdWRlUG9vbCwgZ2V0UG9vbCB9IGZyb20gXCIuL3Bvb2xcIjtcbmltcG9ydCB0eXBlIHtcbiAgQ2xpUmVzdWx0LFxuICBIZWFsdGhSZXNwb25zZSxcbiAgT0F1dGhTdGFydFJlc3VsdCxcbiAgVG9rZW5TdGF0cyxcbiAgVXNhZ2VSZXNwb25zZSxcbn0gZnJvbSBcIi4vcWdyaWQudHlwZXNcIjtcblxuLy8gUEtDRSDshLjshZgg66mU66qo66asIOyggOyepSAoc3RhdGUg4oaSIHsgY29kZVZlcmlmaWVyLCBuYW1lLCByZWRpcmVjdFVyaSB9KVxuY29uc3QgcGVuZGluZ09BdXRoID0gbmV3IE1hcDxzdHJpbmcsIHsgY29kZVZlcmlmaWVyOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgcmVkaXJlY3RVcmk6IHN0cmluZyB9PigpO1xuXG5jbGFzcyBRZ3JpZEZyYW1lQ2xhc3MgZXh0ZW5kcyBCYXNlRnJhbWVDbGFzcyB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiUWdyaWRcIik7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgcXVlcnkocHJvbXB0OiBzdHJpbmcsIHN5c3RlbT86IHN0cmluZywgdGltZW91dD86IG51bWJlcik6IFByb21pc2U8Q2xpUmVzdWx0PiB7XG4gICAgY29uc3QgcG9vbCA9IGdldFBvb2woKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwb29sLnF1ZXJ5KHsgc3lzdGVtLCBwcm9tcHQgfSwgdGltZW91dCk7XG5cbiAgICAvLyDroZzqt7gg6riw66GdIOyLpO2MqO2VtOuPhCDsv7zrpqwg6rKw6rO864qUIOuwmO2ZmFxuICAgIFJlcXVlc3RMb2dNb2RlbC5zYXZlKFtcbiAgICAgIHtcbiAgICAgICAgdG9rZW5fbmFtZTogcG9vbC5nZXRMYXN0VXNlZFdvcmtlck5hbWUoKSxcbiAgICAgICAgcXVlcnk6IHN5c3RlbSA/IGBbU3lzdGVtXVxcbiR7c3lzdGVtfVxcblxcbltVc2VyXVxcbiR7cHJvbXB0fWAgOiBwcm9tcHQsXG4gICAgICAgIHJlc3BvbnNlOiByZXN1bHQudGV4dCxcbiAgICAgICAgaW5wdXRfdG9rZW5zOiByZXN1bHQudXNhZ2UuaW5wdXRfdG9rZW5zLFxuICAgICAgICBvdXRwdXRfdG9rZW5zOiByZXN1bHQudXNhZ2Uub3V0cHV0X3Rva2VucyxcbiAgICAgICAgY2FjaGVfcmVhZF90b2tlbnM6IHJlc3VsdC51c2FnZS5jYWNoZV9yZWFkX2lucHV0X3Rva2VucyxcbiAgICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiByZXN1bHQudXNhZ2UuY2FjaGVfY3JlYXRpb25faW5wdXRfdG9rZW5zLFxuICAgICAgICBkdXJhdGlvbl9tczogcmVzdWx0LmR1cmF0aW9uTXMsXG4gICAgICB9LFxuICAgIF0pLmNhdGNoKChlKSA9PiBjb25zb2xlLmVycm9yKFwicmVxdWVzdExvZyBzYXZlIGZhaWxlZDpcIiwgZSkpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdIH0pXG4gIGFzeW5jIHN0YXRzKCk6IFByb21pc2U8VG9rZW5TdGF0c1tdPiB7XG4gICAgcmV0dXJuIGdldFBvb2woKS5nZXRTdGF0cygpO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLW11dGF0aW9uXCJdIH0pXG4gIGFzeW5jIGFkZFRva2VuKHRva2VuOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgcmVmcmVzaFRva2VuPzogc3RyaW5nKTogUHJvbWlzZTx7IGFkZGVkOiBib29sZWFuIH0+IHtcbiAgICBhd2FpdCBUb2tlbk1vZGVsLnNhdmUoW1xuICAgICAge1xuICAgICAgICB0b2tlbixcbiAgICAgICAgbmFtZSxcbiAgICAgICAgLi4uKHJlZnJlc2hUb2tlbiAmJiByZWZyZXNoVG9rZW4ubGVuZ3RoID4gMCA/IHsgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuIH0gOiB7fSksXG4gICAgICB9LFxuICAgIF0pO1xuICAgIGdldFBvb2woKS5jcmVhdGVXb3JrZXJzKHRva2VuLCBuYW1lKTtcbiAgICByZXR1cm4geyBhZGRlZDogdHJ1ZSB9O1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLW11dGF0aW9uXCJdIH0pXG4gIGFzeW5jIHVwZGF0ZVRva2VuKFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgbmFtZT86IHN0cmluZyxcbiAgICBuZXdUb2tlbj86IHN0cmluZyxcbiAgICByZWZyZXNoVG9rZW4/OiBzdHJpbmcsXG4gICk6IFByb21pc2U8eyB1cGRhdGVkOiBib29sZWFuIH0+IHtcbiAgICBjb25zdCBwb29sID0gZ2V0UG9vbCgpO1xuICAgIGNvbnN0IGVudHJ5ID0gYXdhaXQgVG9rZW5Nb2RlbC5maW5kQnlUb2tlbihcIkFcIiwgdG9rZW4pO1xuICAgIGlmICghZW50cnkpIHJldHVybiB7IHVwZGF0ZWQ6IGZhbHNlIH07XG5cbiAgICBjb25zdCBoYXNOZXdUb2tlbiA9IG5ld1Rva2VuICE9PSB1bmRlZmluZWQgJiYgbmV3VG9rZW4ubGVuZ3RoID4gMDtcbiAgICBjb25zdCBoYXNSZWZyZXNoVG9rZW4gPSByZWZyZXNoVG9rZW4gIT09IHVuZGVmaW5lZCAmJiByZWZyZXNoVG9rZW4ubGVuZ3RoID4gMDtcbiAgICBhd2FpdCBUb2tlbk1vZGVsLnNhdmUoW1xuICAgICAge1xuICAgICAgICBpZDogZW50cnkuaWQsXG4gICAgICAgIHRva2VuOiBoYXNOZXdUb2tlbiA/IG5ld1Rva2VuIDogZW50cnkudG9rZW4sXG4gICAgICAgIG5hbWU6IG5hbWUgIT09IHVuZGVmaW5lZCA/IG5hbWUgOiBlbnRyeS5uYW1lLFxuICAgICAgICAuLi4oaGFzUmVmcmVzaFRva2VuID8geyByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4gfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgXSk7XG5cbiAgICBpZiAoaGFzTmV3VG9rZW4pIHtcbiAgICAgIHBvb2wuZGVzdHJveVdvcmtlcnModG9rZW4pO1xuICAgICAgcG9vbC5jcmVhdGVXb3JrZXJzKG5ld1Rva2VuLCBuYW1lID8/IGVudHJ5Lm5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4geyB1cGRhdGVkOiB0cnVlIH07XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgcmVtb3ZlVG9rZW4odG9rZW46IHN0cmluZyk6IFByb21pc2U8eyByZW1vdmVkOiBib29sZWFuIH0+IHtcbiAgICBjb25zdCBwb29sID0gZ2V0UG9vbCgpO1xuICAgIGlmICghcG9vbC53b3JrZXJzLmhhcyh0b2tlbikpIHJldHVybiB7IHJlbW92ZWQ6IGZhbHNlIH07XG5cbiAgICBjb25zdCBlbnRyeSA9IGF3YWl0IFRva2VuTW9kZWwuZmluZEJ5VG9rZW4oXCJBXCIsIHRva2VuKTtcbiAgICBpZiAoZW50cnkpIGF3YWl0IFRva2VuTW9kZWwuZGVsKFtlbnRyeS5pZF0pO1xuICAgIHBvb2wuZGVzdHJveVdvcmtlcnModG9rZW4pO1xuICAgIHJldHVybiB7IHJlbW92ZWQ6IHRydWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gaWQgdG9rZW5faWRcbiAgICog7Yag7YGwIO2ZnOyEse2ZlC/ruYTtmZzshLHtmZQg7Yag6riAIChwb29sIOybjOy7pCDsg53shLEv7KCc6rGwICYgRELsnZggYWN0aXZlIO2VhOuTnCDsl4XrjbDsnbTtirgpXG4gICAqXG4gICAqIEByZXR1cm5zIO2GoO2BsCDtmZzshLHtmZQg7Jes67aAXG4gICAqL1xuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgdG9nZ2xlVG9rZW4oaWQ6IG51bWJlcik6IFByb21pc2U8eyBhY3RpdmU6IGJvb2xlYW4gfT4ge1xuICAgIGNvbnN0IHBvb2wgPSBnZXRQb29sKCk7XG4gICAgY29uc3QgZW50cnkgPSBhd2FpdCBUb2tlbk1vZGVsLmZpbmRPbmUoXCJBXCIsIHsgaWQgfSk7XG4gICAgaWYgKCFlbnRyeSkgcmV0dXJuIHsgYWN0aXZlOiBmYWxzZSB9O1xuXG4gICAgY29uc3QgbmV3QWN0aXZlID0gIWVudHJ5LmFjdGl2ZTtcbiAgICBhd2FpdCBUb2tlbk1vZGVsLnNhdmUoW3sgaWQsIHRva2VuOiBlbnRyeS50b2tlbiwgYWN0aXZlOiBuZXdBY3RpdmUsIG5hbWU6IGVudHJ5Lm5hbWUgfV0pO1xuXG4gICAgLy8g7Yag7YGw7J2YIOyDiOuhnOyatCDsg4Htg5zqsIAg7Zmc7ISx7ZmU66m0L+u5hO2ZnOyEse2ZlOuptFxuICAgIGlmIChuZXdBY3RpdmUpIHtcbiAgICAgIC8vIOybjOy7pCDsg53shLFcbiAgICAgIHBvb2wuY3JlYXRlV29ya2VycyhlbnRyeS50b2tlbiwgZW50cnkubmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIOybjOy7pCDsoJzqsbBcbiAgICAgIHBvb2wuZGVzdHJveVdvcmtlcnMoZW50cnkudG9rZW4pO1xuICAgIH1cblxuICAgIHJldHVybiB7IGFjdGl2ZTogbmV3QWN0aXZlIH07XG4gIH1cblxuICAvLyBPQXV0aCDroZzqt7jsnbg6IGF1dGhVcmwg7IOd7ISxICjtlITroaDtirjsl5DshJwg7J20IEFQSSDtmLjstpwg7ZuEIGF1dGhVcmzroZwg66as64uk7J2066CJ7Yq4KVxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgb2F1dGhTdGFydChuYW1lOiBzdHJpbmcpOiBQcm9taXNlPE9BdXRoU3RhcnRSZXN1bHQ+IHtcbiAgICBjb25zdCB7IGNvZGVWZXJpZmllciwgY29kZUNoYWxsZW5nZSwgc3RhdGUgfSA9IGdlbmVyYXRlUEtDRSgpO1xuXG4gICAgY29uc3Qgc2VydmVyUG9ydCA9IHByb2Nlc3MuZW52LlBPUlQgPz8gXCI0NDkwMFwiO1xuICAgIGNvbnN0IHJlZGlyZWN0VXJpID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtzZXJ2ZXJQb3J0fS9jYWxsYmFja2A7XG4gICAgY29uc3QgYXV0aFVybCA9IGJ1aWxkQXV0aFVybChjb2RlQ2hhbGxlbmdlLCBzdGF0ZSwgcmVkaXJlY3RVcmkpO1xuXG4gICAgLy8gUEtDReulvCDrqZTrqqjrpqzsl5Ag7KCA7J6lICg167aEIFRUTClcbiAgICBwZW5kaW5nT0F1dGguc2V0KHN0YXRlLCB7IGNvZGVWZXJpZmllciwgbmFtZSwgcmVkaXJlY3RVcmkgfSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiBwZW5kaW5nT0F1dGguZGVsZXRlKHN0YXRlKSwgMzAwXzAwMCk7XG5cbiAgICByZXR1cm4geyBhdXRoVXJsIH07XG4gIH1cblxuICAvLyBPQXV0aCDsvZzrsLEg7LKY66asIOKAlCBzb25hbXUuY29uZmlnLnRz7J2YIGN1c3RvbSDrnbzsmrDtirjsl5DshJwg7Zi47Lac65CoXG4gIGFzeW5jIGhhbmRsZU9BdXRoQ2FsbGJhY2soY29kZTogc3RyaW5nLCBzdGF0ZTogc3RyaW5nLCByZXBseTogRmFzdGlmeVJlcGx5KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcG9vbCA9IGdldFBvb2woKTtcbiAgICBjb25zdCBwZW5kaW5nID0gcGVuZGluZ09BdXRoLmdldChzdGF0ZSk7XG4gICAgaWYgKCFwZW5kaW5nKSB7XG4gICAgICByZXR1cm4gcmVwbHkucmVkaXJlY3QoXCIvP29hdXRoPWVycm9yJnJlYXNvbj1pbnZhbGlkX3N0YXRlXCIpO1xuICAgIH1cbiAgICBwZW5kaW5nT0F1dGguZGVsZXRlKHN0YXRlKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB0b2tlbnMgPSBhd2FpdCBleGNoYW5nZUNvZGVGb3JUb2tlbnMoXG4gICAgICAgIGNvZGUsXG4gICAgICAgIHBlbmRpbmcuY29kZVZlcmlmaWVyLFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgcGVuZGluZy5yZWRpcmVjdFVyaSxcbiAgICAgICk7XG5cbiAgICAgIC8vIOqwmeydgCDqs4TsoJXsnZgg7J207KCEIO2GoO2BsOydtCDsnojsnLzrqbQg6rWQ7LK0XG4gICAgICBpZiAodG9rZW5zLmFjY291bnRVdWlkKSB7XG4gICAgICAgIGNvbnN0IG9sZEVudHJpZXMgPSBhd2FpdCBUb2tlbk1vZGVsLmZpbmRCeUFjY291bnRVdWlkKFwiQVwiLCB0b2tlbnMuYWNjb3VudFV1aWQpO1xuICAgICAgICBmb3IgKGNvbnN0IG9sZCBvZiBvbGRFbnRyaWVzKSB7XG4gICAgICAgICAgcG9vbC5kZXN0cm95V29ya2VycyhvbGQudG9rZW4pO1xuICAgICAgICAgIGF3YWl0IFRva2VuTW9kZWwuZGVsKFtvbGQuaWRdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyDsg4gg7Yag7YGwIOyggOyepSArIHBvb2zsl5Ag65Ox66GdXG4gICAgICBhd2FpdCBUb2tlbk1vZGVsLnNhdmUoW1xuICAgICAgICB7XG4gICAgICAgICAgdG9rZW46IHRva2Vucy5hY2Nlc3NUb2tlbixcbiAgICAgICAgICBuYW1lOiBwZW5kaW5nLm5hbWUsXG4gICAgICAgICAgcmVmcmVzaF90b2tlbjogdG9rZW5zLnJlZnJlc2hUb2tlbixcbiAgICAgICAgICBleHBpcmVzX2F0OiB0b2tlbnMuZXhwaXJlc0F0ID8gQmlnSW50KHRva2Vucy5leHBpcmVzQXQpIDogbnVsbCxcbiAgICAgICAgICBhY2NvdW50X3V1aWQ6IHRva2Vucy5hY2NvdW50VXVpZCxcbiAgICAgICAgfSxcbiAgICAgIF0pO1xuICAgICAgcG9vbC5jcmVhdGVXb3JrZXJzKHRva2Vucy5hY2Nlc3NUb2tlbiwgcGVuZGluZy5uYW1lKTtcblxuICAgICAgcmV0dXJuIHJlcGx5LnJlZGlyZWN0KGAvP29hdXRoPXN1Y2Nlc3MmbmFtZT0ke2VuY29kZVVSSUNvbXBvbmVudChwZW5kaW5nLm5hbWUpfWApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiByZXBseS5yZWRpcmVjdChgLz9vYXV0aD1lcnJvciZyZWFzb249JHtlbmNvZGVVUklDb21wb25lbnQoKGUgYXMgRXJyb3IpLm1lc3NhZ2UpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8vIO2GoO2BsCDsgqzsmqnrn4kg7KGw7ZqMIChPQXV0aCB1c2FnZSBBUEkpXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdIH0pXG4gIGFzeW5jIHVzYWdlKHRva2VuTmFtZT86IHN0cmluZyk6IFByb21pc2U8VXNhZ2VSZXNwb25zZT4ge1xuICAgIGNvbnN0IHBvb2wgPSBnZXRQb29sKCk7XG4gICAgY29uc3QgeyByb3dzOiBhbGxUb2tlbnMgfSA9IGF3YWl0IFRva2VuTW9kZWwuZmluZE1hbnkoXCJBXCIpO1xuICAgIGNvbnN0IGVudHJ5ID0gdG9rZW5OYW1lXG4gICAgICA/IGFsbFRva2Vucy5maW5kKChlKSA9PiBlLm5hbWUgPT09IHRva2VuTmFtZSlcbiAgICAgIDogYWxsVG9rZW5zLmZpbmRMYXN0KChlKSA9PiBlLmFjdGl2ZSk7XG5cbiAgICBpZiAoIWVudHJ5KSByZXR1cm4geyBlcnJvcjogXCJOT1RfRk9VTkRcIiB9O1xuXG4gICAgLy8g66eM66OMIO2ZleyduCArIHJlZnJlc2gg7Iuc64+EXG4gICAgbGV0IGFjY2Vzc1Rva2VuID0gZW50cnkudG9rZW47XG4gICAgY29uc3QgaXNFeHBpcmVkID0gZW50cnkuZXhwaXJlc19hdCAmJiBOdW1iZXIoZW50cnkuZXhwaXJlc19hdCkgPCBEYXRlLm5vdygpO1xuXG4gICAgaWYgKGlzRXhwaXJlZCAmJiBlbnRyeS5yZWZyZXNoX3Rva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhY2Nlc3NUb2tlbiA9IGF3YWl0IHRoaXMucmVmcmVzaFRva2VuKHBvb2wsIGVudHJ5KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBbdXNhZ2VdIHJlZnJlc2ggZmFpbGVkIGZvciAke2VudHJ5Lm5hbWV9OiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICAgICAgICByZXR1cm4geyBlcnJvcjogXCJyZS1sb2dpbiByZXF1aXJlZFwiIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gdXNhZ2Ug7Zi47LacXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZmV0Y2hVc2FnZShhY2Nlc3NUb2tlbik7XG5cbiAgICAvLyDsnbjspp0g7JeQ65+s66m0IHJlZnJlc2hfdG9rZW7snLzroZwg7J6s7Iuc64+EXG4gICAgaWYgKHJlc3VsdC5lcnJvciAmJiBlbnRyeS5yZWZyZXNoX3Rva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhY2Nlc3NUb2tlbiA9IGF3YWl0IHRoaXMucmVmcmVzaFRva2VuKHBvb2wsIGVudHJ5KTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGZldGNoVXNhZ2UoYWNjZXNzVG9rZW4pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYFt1c2FnZV0gcmVmcmVzaCBmYWlsZWQgZm9yICR7ZW50cnkubmFtZX06ICR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9YCk7XG4gICAgICAgIHJldHVybiB7IGVycm9yOiBcInJlLWxvZ2luIHJlcXVpcmVkXCIgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYXN5bmMgcmVmcmVzaFRva2VuKHBvb2w6IENsYXVkZVBvb2wsIHRva2VuOiBSZWZyZXNoVG9rZW5QYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghdG9rZW4ucmVmcmVzaF90b2tlbikgdGhyb3cgbmV3IEVycm9yKFwiTm8gcmVmcmVzaCB0b2tlblwiKTtcbiAgICBjb25zdCByZWZyZXNoZWQgPSBhd2FpdCByZWZyZXNoQWNjZXNzVG9rZW4odG9rZW4ucmVmcmVzaF90b2tlbik7XG4gICAgYXdhaXQgVG9rZW5Nb2RlbC5zYXZlKFtcbiAgICAgIHtcbiAgICAgICAgaWQ6IHRva2VuLmlkLFxuICAgICAgICB0b2tlbjogcmVmcmVzaGVkLmFjY2Vzc1Rva2VuLFxuICAgICAgICByZWZyZXNoX3Rva2VuOiByZWZyZXNoZWQucmVmcmVzaFRva2VuLFxuICAgICAgICBleHBpcmVzX2F0OiBCaWdJbnQocmVmcmVzaGVkLmV4cGlyZXNBdCksXG4gICAgICAgIG5hbWU6IHRva2VuLm5hbWUgPz8gXCJcIixcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgcG9vbC5kZXN0cm95V29ya2Vycyh0b2tlbi50b2tlbik7XG4gICAgcG9vbC5jcmVhdGVXb3JrZXJzKHJlZnJlc2hlZC5hY2Nlc3NUb2tlbiwgdG9rZW4ubmFtZSk7XG4gICAgcmV0dXJuIHJlZnJlc2hlZC5hY2Nlc3NUb2tlbjtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdIH0pXG4gIGFzeW5jIGhlYWx0aCgpOiBQcm9taXNlPEhlYWx0aFJlc3BvbnNlPiB7XG4gICAgY29uc3QgcG9vbCA9IGdldFBvb2woKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzOiBcIm9rXCIsXG4gICAgICB3b3JrZXJzOiBbLi4ucG9vbC53b3JrZXJzLnZhbHVlcygpXS5mbGF0KCkubGVuZ3RoLFxuICAgICAgYWN0aXZlVG9rZW5zOiBwb29sLndvcmtlcnMuc2l6ZSAtIHBvb2wucXVvdGFFeGhhdXN0ZWQuc2l6ZSxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBRZ3JpZEZyYW1lID0gbmV3IFFncmlkRnJhbWVDbGFzcygpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUF1QkEsTUFBTSwrQkFBZSxJQUFJLEtBQTBFO0FBRW5HLElBQU0sa0JBQU4sY0FBOEIsZUFBZTtDQUMzQyxjQUFjO0FBQ1osUUFBTSxRQUFROztDQUdoQixNQUNNLE1BQU0sUUFBZ0IsUUFBaUIsU0FBc0M7RUFDakYsTUFBTSxPQUFPLFNBQVM7RUFDdEIsTUFBTSxTQUFTLE1BQU0sS0FBSyxNQUFNO0dBQUU7R0FBUTtHQUFRLEVBQUUsUUFBUTtBQUc1RCxrQkFBZ0IsS0FBSyxDQUNuQjtHQUNFLFlBQVksS0FBSyx1QkFBdUI7R0FDeEMsT0FBTyxTQUFTLGFBQWEsT0FBTyxjQUFjLFdBQVc7R0FDN0QsVUFBVSxPQUFPO0dBQ2pCLGNBQWMsT0FBTyxNQUFNO0dBQzNCLGVBQWUsT0FBTyxNQUFNO0dBQzVCLG1CQUFtQixPQUFPLE1BQU07R0FDaEMsdUJBQXVCLE9BQU8sTUFBTTtHQUNwQyxhQUFhLE9BQU87R0FDckIsQ0FDRixDQUFDLENBQUMsT0FBTyxNQUFNLFFBQVEsTUFBTSwyQkFBMkIsRUFBRSxDQUFDO0FBRTVELFNBQU87O0NBR1QsTUFDTSxRQUErQjtBQUNuQyxTQUFPLFNBQVMsQ0FBQyxVQUFVOztDQUc3QixNQUNNLFNBQVMsT0FBZSxNQUFjLGNBQW9EO0FBQzlGLFFBQU0sV0FBVyxLQUFLLENBQ3BCO0dBQ0U7R0FDQTtHQUNBLEdBQUksZ0JBQWdCLGFBQWEsU0FBUyxJQUFJLEVBQUUsZUFBZSxjQUFjLEdBQUcsRUFBRTtHQUNuRixDQUNGLENBQUM7QUFDRixXQUFTLENBQUMsY0FBYyxPQUFPLEtBQUs7QUFDcEMsU0FBTyxFQUFFLE9BQU8sTUFBTTs7Q0FHeEIsTUFDTSxZQUNKLE9BQ0EsTUFDQSxVQUNBLGNBQytCO0VBQy9CLE1BQU0sT0FBTyxTQUFTO0VBQ3RCLE1BQU0sUUFBUSxNQUFNLFdBQVcsWUFBWSxLQUFLLE1BQU07QUFDdEQsTUFBSSxDQUFDLE1BQU8sUUFBTyxFQUFFLFNBQVMsT0FBTztFQUVyQyxNQUFNLGNBQWMsYUFBYSxVQUFhLFNBQVMsU0FBUztFQUNoRSxNQUFNLGtCQUFrQixpQkFBaUIsVUFBYSxhQUFhLFNBQVM7QUFDNUUsUUFBTSxXQUFXLEtBQUssQ0FDcEI7R0FDRSxJQUFJLE1BQU07R0FDVixPQUFPLGNBQWMsV0FBVyxNQUFNO0dBQ3RDLE1BQU0sU0FBUyxTQUFZLE9BQU8sTUFBTTtHQUN4QyxHQUFJLGtCQUFrQixFQUFFLGVBQWUsY0FBYyxHQUFHLEVBQUU7R0FDM0QsQ0FDRixDQUFDO0FBRUYsTUFBSSxhQUFhO0FBQ2YsUUFBSyxlQUFlLE1BQU07QUFDMUIsUUFBSyxjQUFjLFVBQVUsUUFBUSxNQUFNLEtBQUs7O0FBRWxELFNBQU8sRUFBRSxTQUFTLE1BQU07O0NBRzFCLE1BQ00sWUFBWSxPQUE4QztFQUM5RCxNQUFNLE9BQU8sU0FBUztBQUN0QixNQUFJLENBQUMsS0FBSyxRQUFRLElBQUksTUFBTSxDQUFFLFFBQU8sRUFBRSxTQUFTLE9BQU87RUFFdkQsTUFBTSxRQUFRLE1BQU0sV0FBVyxZQUFZLEtBQUssTUFBTTtBQUN0RCxNQUFJLE1BQU8sT0FBTSxXQUFXLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQztBQUMzQyxPQUFLLGVBQWUsTUFBTTtBQUMxQixTQUFPLEVBQUUsU0FBUyxNQUFNOzs7Ozs7Ozs7Q0FVMUIsTUFDTSxZQUFZLElBQTBDO0VBQzFELE1BQU0sT0FBTyxTQUFTO0VBQ3RCLE1BQU0sUUFBUSxNQUFNLFdBQVcsUUFBUSxLQUFLLEVBQUUsSUFBSSxDQUFDO0FBQ25ELE1BQUksQ0FBQyxNQUFPLFFBQU8sRUFBRSxRQUFRLE9BQU87RUFFcEMsTUFBTSxZQUFZLENBQUMsTUFBTTtBQUN6QixRQUFNLFdBQVcsS0FBSyxDQUFDO0dBQUU7R0FBSSxPQUFPLE1BQU07R0FBTyxRQUFRO0dBQVcsTUFBTSxNQUFNO0dBQU0sQ0FBQyxDQUFDO0FBR3hGLE1BQUksVUFFRixNQUFLLGNBQWMsTUFBTSxPQUFPLE1BQU0sS0FBSztNQUczQyxNQUFLLGVBQWUsTUFBTSxNQUFNO0FBR2xDLFNBQU8sRUFBRSxRQUFRLFdBQVc7O0NBSTlCLE1BQ00sV0FBVyxNQUF5QztFQUN4RCxNQUFNLEVBQUUsY0FBYyxlQUFlLFVBQVUsY0FBYztFQUc3RCxNQUFNLGNBQWMsb0JBREQsUUFBUSxJQUFJLFFBQVEsUUFDWTtFQUNuRCxNQUFNLFVBQVUsYUFBYSxlQUFlLE9BQU8sWUFBWTtBQUcvRCxlQUFhLElBQUksT0FBTztHQUFFO0dBQWM7R0FBTTtHQUFhLENBQUM7QUFDNUQsbUJBQWlCLGFBQWEsT0FBTyxNQUFNLEVBQUUsSUFBUTtBQUVyRCxTQUFPLEVBQUUsU0FBUzs7Q0FJcEIsTUFBTSxvQkFBb0IsTUFBYyxPQUFlLE9BQW9DO0VBQ3pGLE1BQU0sT0FBTyxTQUFTO0VBQ3RCLE1BQU0sVUFBVSxhQUFhLElBQUksTUFBTTtBQUN2QyxNQUFJLENBQUMsUUFDSCxRQUFPLE1BQU0sU0FBUyxxQ0FBcUM7QUFFN0QsZUFBYSxPQUFPLE1BQU07QUFFMUIsTUFBSTtHQUNGLE1BQU0sU0FBUyxNQUFNLHNCQUNuQixNQUNBLFFBQVEsY0FDUixPQUNBLFFBQVEsWUFDVDtBQUdELE9BQUksT0FBTyxhQUFhO0lBQ3RCLE1BQU0sYUFBYSxNQUFNLFdBQVcsa0JBQWtCLEtBQUssT0FBTyxZQUFZO0FBQzlFLFNBQUssTUFBTSxPQUFPLFlBQVk7QUFDNUIsVUFBSyxlQUFlLElBQUksTUFBTTtBQUM5QixXQUFNLFdBQVcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDOzs7QUFLbEMsU0FBTSxXQUFXLEtBQUssQ0FDcEI7SUFDRSxPQUFPLE9BQU87SUFDZCxNQUFNLFFBQVE7SUFDZCxlQUFlLE9BQU87SUFDdEIsWUFBWSxPQUFPLFlBQVksT0FBTyxPQUFPLFVBQVUsR0FBRztJQUMxRCxjQUFjLE9BQU87SUFDdEIsQ0FDRixDQUFDO0FBQ0YsUUFBSyxjQUFjLE9BQU8sYUFBYSxRQUFRLEtBQUs7QUFFcEQsVUFBTyxNQUFNLFNBQVMsd0JBQXdCLG1CQUFtQixRQUFRLEtBQUssR0FBRztXQUMxRSxHQUFHO0FBQ1YsVUFBTyxNQUFNLFNBQVMsd0JBQXdCLG1CQUFvQixFQUFZLFFBQVEsR0FBRzs7O0NBSzdGLE1BQ00sTUFBTSxXQUE0QztFQUN0RCxNQUFNLE9BQU8sU0FBUztFQUN0QixNQUFNLEVBQUUsTUFBTSxjQUFjLE1BQU0sV0FBVyxTQUFTLElBQUk7RUFDMUQsTUFBTSxRQUFRLFlBQ1YsVUFBVSxNQUFNLE1BQU0sRUFBRSxTQUFTLFVBQVUsR0FDM0MsVUFBVSxVQUFVLE1BQU0sRUFBRSxPQUFPO0FBRXZDLE1BQUksQ0FBQyxNQUFPLFFBQU8sRUFBRSxPQUFPLGFBQWE7RUFHekMsSUFBSSxjQUFjLE1BQU07QUFHeEIsTUFGa0IsTUFBTSxjQUFjLE9BQU8sTUFBTSxXQUFXLEdBQUcsS0FBSyxLQUFLLElBRTFELE1BQU0sY0FDckIsS0FBSTtBQUNGLGlCQUFjLE1BQU0sS0FBSyxhQUFhLE1BQU0sTUFBTTtXQUMzQyxHQUFHO0FBQ1YsV0FBUSxLQUFLLDhCQUE4QixNQUFNLEtBQUssSUFBSyxFQUFZLFVBQVU7QUFDakYsVUFBTyxFQUFFLE9BQU8scUJBQXFCOztFQUt6QyxNQUFNLFNBQVMsTUFBTSxXQUFXLFlBQVk7QUFHNUMsTUFBSSxPQUFPLFNBQVMsTUFBTSxjQUN4QixLQUFJO0FBQ0YsaUJBQWMsTUFBTSxLQUFLLGFBQWEsTUFBTSxNQUFNO0FBQ2xELFVBQU8sTUFBTSxXQUFXLFlBQVk7V0FDN0IsR0FBRztBQUNWLFdBQVEsS0FBSyw4QkFBOEIsTUFBTSxLQUFLLElBQUssRUFBWSxVQUFVO0FBQ2pGLFVBQU8sRUFBRSxPQUFPLHFCQUFxQjs7QUFJekMsU0FBTzs7Q0FHVCxNQUFNLGFBQWEsTUFBa0IsT0FBNEM7QUFDL0UsTUFBSSxDQUFDLE1BQU0sY0FBZSxPQUFNLElBQUksTUFBTSxtQkFBbUI7RUFDN0QsTUFBTSxZQUFZLE1BQU0sbUJBQW1CLE1BQU0sY0FBYztBQUMvRCxRQUFNLFdBQVcsS0FBSyxDQUNwQjtHQUNFLElBQUksTUFBTTtHQUNWLE9BQU8sVUFBVTtHQUNqQixlQUFlLFVBQVU7R0FDekIsWUFBWSxPQUFPLFVBQVUsVUFBVTtHQUN2QyxNQUFNLE1BQU0sUUFBUTtHQUNyQixDQUNGLENBQUM7QUFDRixPQUFLLGVBQWUsTUFBTSxNQUFNO0FBQ2hDLE9BQUssY0FBYyxVQUFVLGFBQWEsTUFBTSxLQUFLO0FBQ3JELFNBQU8sVUFBVTs7Q0FHbkIsTUFDTSxTQUFrQztFQUN0QyxNQUFNLE9BQU8sU0FBUztBQUN0QixTQUFPO0dBQ0wsUUFBUTtHQUNSLFNBQVMsQ0FBQyxHQUFHLEtBQUssUUFBUSxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUM7R0FDM0MsY0FBYyxLQUFLLFFBQVEsT0FBTyxLQUFLLGVBQWU7R0FDdkQ7Ozs7Q0F6T0YsSUFBSTtFQUFFLFlBQVk7RUFBUSxTQUFTLENBQUMsU0FBUyxvQkFBb0I7RUFBRSxDQUFDOzs7Ozs7Ozs7O0NBc0JwRSxJQUFJO0VBQUUsWUFBWTtFQUFPLFNBQVMsQ0FBQyxTQUFTLGlCQUFpQjtFQUFFLENBQUM7Ozs7OztDQUtoRSxJQUFJO0VBQUUsWUFBWTtFQUFRLFNBQVMsQ0FBQyxTQUFTLG9CQUFvQjtFQUFFLENBQUM7Ozs7Ozs7Ozs7Q0FhcEUsSUFBSTtFQUFFLFlBQVk7RUFBUSxTQUFTLENBQUMsU0FBUyxvQkFBb0I7RUFBRSxDQUFDOzs7Ozs7Ozs7OztDQTZCcEUsSUFBSTtFQUFFLFlBQVk7RUFBUSxTQUFTLENBQUMsU0FBUyxvQkFBb0I7RUFBRSxDQUFDOzs7Ozs7Q0FrQnBFLElBQUk7RUFBRSxZQUFZO0VBQVEsU0FBUyxDQUFDLFNBQVMsb0JBQW9CO0VBQUUsQ0FBQzs7Ozs7O0NBc0JwRSxJQUFJO0VBQUUsWUFBWTtFQUFRLFNBQVMsQ0FBQyxTQUFTLG9CQUFvQjtFQUFFLENBQUM7Ozs7OztDQTREcEUsSUFBSTtFQUFFLFlBQVk7RUFBTyxTQUFTLENBQUMsU0FBUyxpQkFBaUI7RUFBRSxDQUFDOzs7Ozs7Q0F5RGhFLElBQUk7RUFBRSxZQUFZO0VBQU8sU0FBUyxDQUFDLFNBQVMsaUJBQWlCO0VBQUUsQ0FBQzs7Ozs7QUFXbkUsTUFBYSxhQUFhLElBQUksaUJBQWlCIn0=
|
|
288
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQuZnJhbWUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3FncmlkLmZyYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRmFzdGlmeVJlcGx5IH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCB7IGFwaSwgQmFzZUZyYW1lQ2xhc3MgfSBmcm9tIFwic29uYW11XCI7XG5cbmltcG9ydCB7IE1JQ1JPX1VTRCwgUmVxdWVzdExvZ01vZGVsIH0gZnJvbSBcIi4uL3JlcXVlc3QtbG9nL3JlcXVlc3QtbG9nLm1vZGVsXCI7XG5pbXBvcnQgeyBUb2tlbk1vZGVsIH0gZnJvbSBcIi4uL3Rva2VuL3Rva2VuLm1vZGVsXCI7XG5pbXBvcnQgeyB0eXBlIFJlZnJlc2hUb2tlblBhcmFtcyB9IGZyb20gXCIuLi90b2tlbi90b2tlbi50eXBlc1wiO1xuaW1wb3J0IHtcbiAgYnVpbGRBdXRoVXJsLFxuICBleGNoYW5nZUNvZGVGb3JUb2tlbnMsXG4gIGZldGNoVXNhZ2UsXG4gIGdlbmVyYXRlUEtDRSxcbiAgcmVmcmVzaEFjY2Vzc1Rva2VuLFxufSBmcm9tIFwiLi9vYXV0aFwiO1xuaW1wb3J0IHsgdHlwZSBDbGF1ZGVQb29sLCBnZXRQb29sIH0gZnJvbSBcIi4vcG9vbFwiO1xuaW1wb3J0IHtcbiAgdHlwZSBDbGlSZXN1bHQsXG4gIHR5cGUgSGVhbHRoUmVzcG9uc2UsXG4gIHR5cGUgT0F1dGhTdGFydFJlc3VsdCxcbiAgdHlwZSBUb2tlblN0YXRzLFxuICB0eXBlIFVzYWdlUmVzcG9uc2UsXG59IGZyb20gXCIuL3FncmlkLnR5cGVzXCI7XG5cbi8vIFBLQ0Ug7IS47IWYIOuplOuqqOumrCDsoIDsnqUgKHN0YXRlIOKGkiB7IGNvZGVWZXJpZmllciwgbmFtZSwgcmVkaXJlY3RVcmkgfSlcbmNvbnN0IHBlbmRpbmdPQXV0aCA9IG5ldyBNYXA8c3RyaW5nLCB7IGNvZGVWZXJpZmllcjogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IHJlZGlyZWN0VXJpOiBzdHJpbmcgfT4oKTtcblxuY2xhc3MgUWdyaWRGcmFtZUNsYXNzIGV4dGVuZHMgQmFzZUZyYW1lQ2xhc3Mge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIlFncmlkXCIpO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLW11dGF0aW9uXCJdIH0pXG4gIGFzeW5jIHF1ZXJ5KHByb21wdDogc3RyaW5nLCBzeXN0ZW0/OiBzdHJpbmcsIHRpbWVvdXQ/OiBudW1iZXIpOiBQcm9taXNlPENsaVJlc3VsdD4ge1xuICAgIGNvbnN0IHBvb2wgPSBnZXRQb29sKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcG9vbC5xdWVyeSh7IHN5c3RlbSwgcHJvbXB0IH0sIHRpbWVvdXQpO1xuXG4gICAgLy8g66Gc6re4IOq4sOuhnSDsi6TtjKjtlbTrj4Qg7L+866asIOqysOqzvOuKlCDrsJjtmZhcbiAgICBSZXF1ZXN0TG9nTW9kZWwuc2F2ZShbXG4gICAgICB7XG4gICAgICAgIHRva2VuX25hbWU6IHBvb2wuZ2V0TGFzdFVzZWRXb3JrZXJOYW1lKCksXG4gICAgICAgIHF1ZXJ5OiBzeXN0ZW0gPyBgW1N5c3RlbV1cXG4ke3N5c3RlbX1cXG5cXG5bVXNlcl1cXG4ke3Byb21wdH1gIDogcHJvbXB0LFxuICAgICAgICByZXNwb25zZTogcmVzdWx0LnRleHQsXG4gICAgICAgIGlucHV0X3Rva2VuczogcmVzdWx0LnVzYWdlLmlucHV0X3Rva2VucyxcbiAgICAgICAgb3V0cHV0X3Rva2VuczogcmVzdWx0LnVzYWdlLm91dHB1dF90b2tlbnMsXG4gICAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiByZXN1bHQudXNhZ2UuY2FjaGVfcmVhZF9pbnB1dF90b2tlbnMsXG4gICAgICAgIGNhY2hlX2NyZWF0aW9uX3Rva2VuczogcmVzdWx0LnVzYWdlLmNhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2VucyxcbiAgICAgICAgZHVyYXRpb25fbXM6IHJlc3VsdC5kdXJhdGlvbk1zLFxuICAgICAgICBjb3N0X3VzZDogcmVzdWx0LmNvc3RVc2QgIT09IG51bGwgPyBNYXRoLnJvdW5kKHJlc3VsdC5jb3N0VXNkICogTUlDUk9fVVNEKSA6IG51bGwsXG4gICAgICB9LFxuICAgIF0pLmNhdGNoKChlKSA9PiBjb25zb2xlLmVycm9yKFwicmVxdWVzdExvZyBzYXZlIGZhaWxlZDpcIiwgZSkpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIkdFVFwiLCBjbGllbnRzOiBbXCJheGlvc1wiLCBcInRhbnN0YWNrLXF1ZXJ5XCJdIH0pXG4gIGFzeW5jIHN0YXRzKCk6IFByb21pc2U8VG9rZW5TdGF0c1tdPiB7XG4gICAgcmV0dXJuIGdldFBvb2woKS5nZXRTdGF0cygpO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0gfSlcbiAgYXN5bmMgdG90YWxDb3N0KHRva2VuTmFtZT86IHN0cmluZyk6IFByb21pc2U8eyB1c2Q6IG51bWJlciB9PiB7XG4gICAgcmV0dXJuIHsgdXNkOiBhd2FpdCBSZXF1ZXN0TG9nTW9kZWwudG90YWxDb3N0KHsgdG9rZW5fbmFtZTogdG9rZW5OYW1lIH0pIH07XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgYWRkVG9rZW4odG9rZW46IHN0cmluZywgbmFtZTogc3RyaW5nLCByZWZyZXNoVG9rZW4/OiBzdHJpbmcpOiBQcm9taXNlPHsgYWRkZWQ6IGJvb2xlYW4gfT4ge1xuICAgIGF3YWl0IFRva2VuTW9kZWwuc2F2ZShbXG4gICAgICB7XG4gICAgICAgIHRva2VuLFxuICAgICAgICBuYW1lLFxuICAgICAgICAuLi4ocmVmcmVzaFRva2VuICYmIHJlZnJlc2hUb2tlbi5sZW5ndGggPiAwID8geyByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4gfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgZ2V0UG9vbCgpLmNyZWF0ZVdvcmtlcnModG9rZW4sIG5hbWUpO1xuICAgIHJldHVybiB7IGFkZGVkOiB0cnVlIH07XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgdXBkYXRlVG9rZW4oXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBuYW1lPzogc3RyaW5nLFxuICAgIG5ld1Rva2VuPzogc3RyaW5nLFxuICAgIHJlZnJlc2hUb2tlbj86IHN0cmluZyxcbiAgKTogUHJvbWlzZTx7IHVwZGF0ZWQ6IGJvb2xlYW4gfT4ge1xuICAgIGNvbnN0IHBvb2wgPSBnZXRQb29sKCk7XG4gICAgY29uc3QgZW50cnkgPSBhd2FpdCBUb2tlbk1vZGVsLmZpbmRCeVRva2VuKFwiQVwiLCB0b2tlbik7XG4gICAgaWYgKCFlbnRyeSkgcmV0dXJuIHsgdXBkYXRlZDogZmFsc2UgfTtcblxuICAgIGNvbnN0IGhhc05ld1Rva2VuID0gbmV3VG9rZW4gIT09IHVuZGVmaW5lZCAmJiBuZXdUb2tlbi5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGhhc1JlZnJlc2hUb2tlbiA9IHJlZnJlc2hUb2tlbiAhPT0gdW5kZWZpbmVkICYmIHJlZnJlc2hUb2tlbi5sZW5ndGggPiAwO1xuICAgIGF3YWl0IFRva2VuTW9kZWwuc2F2ZShbXG4gICAgICB7XG4gICAgICAgIGlkOiBlbnRyeS5pZCxcbiAgICAgICAgdG9rZW46IGhhc05ld1Rva2VuID8gbmV3VG9rZW4gOiBlbnRyeS50b2tlbixcbiAgICAgICAgbmFtZTogbmFtZSAhPT0gdW5kZWZpbmVkID8gbmFtZSA6IGVudHJ5Lm5hbWUsXG4gICAgICAgIC4uLihoYXNSZWZyZXNoVG9rZW4gPyB7IHJlZnJlc2hfdG9rZW46IHJlZnJlc2hUb2tlbiB9IDoge30pLFxuICAgICAgfSxcbiAgICBdKTtcblxuICAgIGlmIChoYXNOZXdUb2tlbikge1xuICAgICAgcG9vbC5kZXN0cm95V29ya2Vycyh0b2tlbik7XG4gICAgICBwb29sLmNyZWF0ZVdvcmtlcnMobmV3VG9rZW4sIG5hbWUgPz8gZW50cnkubmFtZSk7XG4gICAgfVxuICAgIHJldHVybiB7IHVwZGF0ZWQ6IHRydWUgfTtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIlBPU1RcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1tdXRhdGlvblwiXSB9KVxuICBhc3luYyByZW1vdmVUb2tlbih0b2tlbjogc3RyaW5nKTogUHJvbWlzZTx7IHJlbW92ZWQ6IGJvb2xlYW4gfT4ge1xuICAgIGNvbnN0IHBvb2wgPSBnZXRQb29sKCk7XG4gICAgaWYgKCFwb29sLndvcmtlcnMuaGFzKHRva2VuKSkgcmV0dXJuIHsgcmVtb3ZlZDogZmFsc2UgfTtcblxuICAgIGNvbnN0IGVudHJ5ID0gYXdhaXQgVG9rZW5Nb2RlbC5maW5kQnlUb2tlbihcIkFcIiwgdG9rZW4pO1xuICAgIGlmIChlbnRyeSkgYXdhaXQgVG9rZW5Nb2RlbC5kZWwoW2VudHJ5LmlkXSk7XG4gICAgcG9vbC5kZXN0cm95V29ya2Vycyh0b2tlbik7XG4gICAgcmV0dXJuIHsgcmVtb3ZlZDogdHJ1ZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpZCB0b2tlbl9pZFxuICAgKiDthqDtgbAg7Zmc7ISx7ZmUL+u5hO2ZnOyEse2ZlCDthqDquIAgKHBvb2wg7JuM7LukIOyDneyEsS/soJzqsbAgJiBEQuydmCBhY3RpdmUg7ZWE65OcIOyXheuNsOydtO2KuClcbiAgICpcbiAgICogQHJldHVybnMg7Yag7YGwIO2ZnOyEse2ZlCDsl6zrtoBcbiAgICovXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIlBPU1RcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1tdXRhdGlvblwiXSB9KVxuICBhc3luYyB0b2dnbGVUb2tlbihpZDogbnVtYmVyKTogUHJvbWlzZTx7IGFjdGl2ZTogYm9vbGVhbiB9PiB7XG4gICAgY29uc3QgcG9vbCA9IGdldFBvb2woKTtcbiAgICBjb25zdCBlbnRyeSA9IGF3YWl0IFRva2VuTW9kZWwuZmluZE9uZShcIkFcIiwgeyBpZCB9KTtcbiAgICBpZiAoIWVudHJ5KSByZXR1cm4geyBhY3RpdmU6IGZhbHNlIH07XG5cbiAgICBjb25zdCBuZXdBY3RpdmUgPSAhZW50cnkuYWN0aXZlO1xuICAgIGF3YWl0IFRva2VuTW9kZWwuc2F2ZShbeyBpZCwgdG9rZW46IGVudHJ5LnRva2VuLCBhY3RpdmU6IG5ld0FjdGl2ZSwgbmFtZTogZW50cnkubmFtZSB9XSk7XG5cbiAgICAvLyDthqDtgbDsnZgg7IOI66Gc7Jq0IOyDge2DnOqwgCDtmZzshLHtmZTrqbQv67mE7Zmc7ISx7ZmU66m0XG4gICAgaWYgKG5ld0FjdGl2ZSkge1xuICAgICAgLy8g7JuM7LukIOyDneyEsVxuICAgICAgcG9vbC5jcmVhdGVXb3JrZXJzKGVudHJ5LnRva2VuLCBlbnRyeS5uYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8g7JuM7LukIOygnOqxsFxuICAgICAgcG9vbC5kZXN0cm95V29ya2VycyhlbnRyeS50b2tlbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgYWN0aXZlOiBuZXdBY3RpdmUgfTtcbiAgfVxuXG4gIC8vIE9BdXRoIOuhnOq3uOyduDogYXV0aFVybCDsg53shLEgKO2UhOuhoO2KuOyXkOyEnCDsnbQgQVBJIO2YuOy2nCDtm4QgYXV0aFVybOuhnCDrpqzri6TsnbTroIntirgpXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIlBPU1RcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1tdXRhdGlvblwiXSB9KVxuICBhc3luYyBvYXV0aFN0YXJ0KG5hbWU6IHN0cmluZyk6IFByb21pc2U8T0F1dGhTdGFydFJlc3VsdD4ge1xuICAgIGNvbnN0IHsgY29kZVZlcmlmaWVyLCBjb2RlQ2hhbGxlbmdlLCBzdGF0ZSB9ID0gZ2VuZXJhdGVQS0NFKCk7XG5cbiAgICBjb25zdCBzZXJ2ZXJQb3J0ID0gcHJvY2Vzcy5lbnYuUE9SVCA/PyBcIjQ0OTAwXCI7XG4gICAgY29uc3QgcmVkaXJlY3RVcmkgPSBgaHR0cDovL2xvY2FsaG9zdDoke3NlcnZlclBvcnR9L2NhbGxiYWNrYDtcbiAgICBjb25zdCBhdXRoVXJsID0gYnVpbGRBdXRoVXJsKGNvZGVDaGFsbGVuZ2UsIHN0YXRlLCByZWRpcmVjdFVyaSk7XG5cbiAgICAvLyBQS0NF66W8IOuplOuqqOumrOyXkCDsoIDsnqUgKDXrtoQgVFRMKVxuICAgIHBlbmRpbmdPQXV0aC5zZXQoc3RhdGUsIHsgY29kZVZlcmlmaWVyLCBuYW1lLCByZWRpcmVjdFVyaSB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHBlbmRpbmdPQXV0aC5kZWxldGUoc3RhdGUpLCAzMDBfMDAwKTtcblxuICAgIHJldHVybiB7IGF1dGhVcmwgfTtcbiAgfVxuXG4gIC8vIE9BdXRoIOy9nOuwsSDsspjrpqwg4oCUIHNvbmFtdS5jb25maWcudHPsnZggY3VzdG9tIOudvOyasO2KuOyXkOyEnCDtmLjstpzrkKhcbiAgYXN5bmMgaGFuZGxlT0F1dGhDYWxsYmFjayhjb2RlOiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcsIHJlcGx5OiBGYXN0aWZ5UmVwbHkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwb29sID0gZ2V0UG9vbCgpO1xuICAgIGNvbnN0IHBlbmRpbmcgPSBwZW5kaW5nT0F1dGguZ2V0KHN0YXRlKTtcbiAgICBpZiAoIXBlbmRpbmcpIHtcbiAgICAgIHJldHVybiByZXBseS5yZWRpcmVjdChcIi8/b2F1dGg9ZXJyb3ImcmVhc29uPWludmFsaWRfc3RhdGVcIik7XG4gICAgfVxuICAgIHBlbmRpbmdPQXV0aC5kZWxldGUoc3RhdGUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRva2VucyA9IGF3YWl0IGV4Y2hhbmdlQ29kZUZvclRva2VucyhcbiAgICAgICAgY29kZSxcbiAgICAgICAgcGVuZGluZy5jb2RlVmVyaWZpZXIsXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBwZW5kaW5nLnJlZGlyZWN0VXJpLFxuICAgICAgKTtcblxuICAgICAgLy8g6rCZ7J2AIOqzhOygleydmCDsnbTsoIQg7Yag7YGw7J20IOyeiOycvOuptCDqtZDssrRcbiAgICAgIGlmICh0b2tlbnMuYWNjb3VudFV1aWQpIHtcbiAgICAgICAgY29uc3Qgb2xkRW50cmllcyA9IGF3YWl0IFRva2VuTW9kZWwuZmluZEJ5QWNjb3VudFV1aWQoXCJBXCIsIHRva2Vucy5hY2NvdW50VXVpZCk7XG4gICAgICAgIGZvciAoY29uc3Qgb2xkIG9mIG9sZEVudHJpZXMpIHtcbiAgICAgICAgICBwb29sLmRlc3Ryb3lXb3JrZXJzKG9sZC50b2tlbik7XG4gICAgICAgICAgYXdhaXQgVG9rZW5Nb2RlbC5kZWwoW29sZC5pZF0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIOyDiCDthqDtgbAg7KCA7J6lICsgcG9vbOyXkCDrk7HroZ1cbiAgICAgIGF3YWl0IFRva2VuTW9kZWwuc2F2ZShbXG4gICAgICAgIHtcbiAgICAgICAgICB0b2tlbjogdG9rZW5zLmFjY2Vzc1Rva2VuLFxuICAgICAgICAgIG5hbWU6IHBlbmRpbmcubmFtZSxcbiAgICAgICAgICByZWZyZXNoX3Rva2VuOiB0b2tlbnMucmVmcmVzaFRva2VuLFxuICAgICAgICAgIGV4cGlyZXNfYXQ6IHRva2Vucy5leHBpcmVzQXQgPyBCaWdJbnQodG9rZW5zLmV4cGlyZXNBdCkgOiBudWxsLFxuICAgICAgICAgIGFjY291bnRfdXVpZDogdG9rZW5zLmFjY291bnRVdWlkLFxuICAgICAgICB9LFxuICAgICAgXSk7XG4gICAgICBwb29sLmNyZWF0ZVdvcmtlcnModG9rZW5zLmFjY2Vzc1Rva2VuLCBwZW5kaW5nLm5hbWUpO1xuXG4gICAgICByZXR1cm4gcmVwbHkucmVkaXJlY3QoYC8/b2F1dGg9c3VjY2VzcyZuYW1lPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHBlbmRpbmcubmFtZSl9YCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHJlcGx5LnJlZGlyZWN0KGAvP29hdXRoPWVycm9yJnJlYXNvbj0ke2VuY29kZVVSSUNvbXBvbmVudCgoZSBhcyBFcnJvcikubWVzc2FnZSl9YCk7XG4gICAgfVxuICB9XG5cbiAgLy8g7Yag7YGwIOyCrOyaqeufiSDsobDtmowgKE9BdXRoIHVzYWdlIEFQSSlcbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0gfSlcbiAgYXN5bmMgdXNhZ2UodG9rZW5OYW1lPzogc3RyaW5nKTogUHJvbWlzZTxVc2FnZVJlc3BvbnNlPiB7XG4gICAgY29uc3QgcG9vbCA9IGdldFBvb2woKTtcbiAgICBjb25zdCB7IHJvd3M6IGFsbFRva2VucyB9ID0gYXdhaXQgVG9rZW5Nb2RlbC5maW5kTWFueShcIkFcIik7XG4gICAgY29uc3QgZW50cnkgPSB0b2tlbk5hbWVcbiAgICAgID8gYWxsVG9rZW5zLmZpbmQoKGUpID0+IGUubmFtZSA9PT0gdG9rZW5OYW1lKVxuICAgICAgOiBhbGxUb2tlbnMuZmluZExhc3QoKGUpID0+IGUuYWN0aXZlKTtcblxuICAgIGlmICghZW50cnkpIHJldHVybiB7IGVycm9yOiBcIk5PVF9GT1VORFwiIH07XG5cbiAgICAvLyDrp4zro4wg7ZmV7J24ICsgcmVmcmVzaCDsi5zrj4RcbiAgICBsZXQgYWNjZXNzVG9rZW4gPSBlbnRyeS50b2tlbjtcbiAgICBjb25zdCBpc0V4cGlyZWQgPSBlbnRyeS5leHBpcmVzX2F0ICYmIE51bWJlcihlbnRyeS5leHBpcmVzX2F0KSA8IERhdGUubm93KCk7XG5cbiAgICBpZiAoaXNFeHBpcmVkICYmIGVudHJ5LnJlZnJlc2hfdG9rZW4pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGFjY2Vzc1Rva2VuID0gYXdhaXQgdGhpcy5yZWZyZXNoVG9rZW4ocG9vbCwgZW50cnkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYFt1c2FnZV0gcmVmcmVzaCBmYWlsZWQgZm9yICR7ZW50cnkubmFtZX06ICR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9YCk7XG4gICAgICAgIHJldHVybiB7IGVycm9yOiBcInJlLWxvZ2luIHJlcXVpcmVkXCIgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB1c2FnZSDtmLjstpxcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaFVzYWdlKGFjY2Vzc1Rva2VuKTtcblxuICAgIC8vIOyduOymnSDsl5Drn6zrqbQgcmVmcmVzaF90b2tlbuycvOuhnCDsnqzsi5zrj4RcbiAgICBpZiAocmVzdWx0LmVycm9yICYmIGVudHJ5LnJlZnJlc2hfdG9rZW4pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGFjY2Vzc1Rva2VuID0gYXdhaXQgdGhpcy5yZWZyZXNoVG9rZW4ocG9vbCwgZW50cnkpO1xuICAgICAgICByZXR1cm4gYXdhaXQgZmV0Y2hVc2FnZShhY2Nlc3NUb2tlbik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgW3VzYWdlXSByZWZyZXNoIGZhaWxlZCBmb3IgJHtlbnRyeS5uYW1lfTogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6IFwicmUtbG9naW4gcmVxdWlyZWRcIiB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhc3luYyByZWZyZXNoVG9rZW4ocG9vbDogQ2xhdWRlUG9vbCwgdG9rZW46IFJlZnJlc2hUb2tlblBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKCF0b2tlbi5yZWZyZXNoX3Rva2VuKSB0aHJvdyBuZXcgRXJyb3IoXCJObyByZWZyZXNoIHRva2VuXCIpO1xuICAgIGNvbnN0IHJlZnJlc2hlZCA9IGF3YWl0IHJlZnJlc2hBY2Nlc3NUb2tlbih0b2tlbi5yZWZyZXNoX3Rva2VuKTtcbiAgICBhd2FpdCBUb2tlbk1vZGVsLnNhdmUoW1xuICAgICAge1xuICAgICAgICBpZDogdG9rZW4uaWQsXG4gICAgICAgIHRva2VuOiByZWZyZXNoZWQuYWNjZXNzVG9rZW4sXG4gICAgICAgIHJlZnJlc2hfdG9rZW46IHJlZnJlc2hlZC5yZWZyZXNoVG9rZW4sXG4gICAgICAgIGV4cGlyZXNfYXQ6IEJpZ0ludChyZWZyZXNoZWQuZXhwaXJlc0F0KSxcbiAgICAgICAgbmFtZTogdG9rZW4ubmFtZSA/PyBcIlwiLFxuICAgICAgfSxcbiAgICBdKTtcbiAgICBwb29sLmRlc3Ryb3lXb3JrZXJzKHRva2VuLnRva2VuKTtcbiAgICBwb29sLmNyZWF0ZVdvcmtlcnMocmVmcmVzaGVkLmFjY2Vzc1Rva2VuLCB0b2tlbi5uYW1lKTtcbiAgICByZXR1cm4gcmVmcmVzaGVkLmFjY2Vzc1Rva2VuO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0gfSlcbiAgYXN5bmMgaGVhbHRoKCk6IFByb21pc2U8SGVhbHRoUmVzcG9uc2U+IHtcbiAgICBjb25zdCBwb29sID0gZ2V0UG9vbCgpO1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXM6IFwib2tcIixcbiAgICAgIHdvcmtlcnM6IFsuLi5wb29sLndvcmtlcnMudmFsdWVzKCldLmZsYXQoKS5sZW5ndGgsXG4gICAgICBhY3RpdmVUb2tlbnM6IHBvb2wud29ya2Vycy5zaXplIC0gcG9vbC5xdW90YUV4aGF1c3RlZC5zaXplLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFFncmlkRnJhbWUgPSBuZXcgUWdyaWRGcmFtZUNsYXNzKCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQXVCQSxNQUFNLCtCQUFlLElBQUksS0FBMEU7QUFFbkcsSUFBTSxrQkFBTixjQUE4QixlQUFlO0NB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
|
|
@@ -22,10 +22,11 @@ let RequestLogService;
|
|
|
22
22
|
let QgridService;
|
|
23
23
|
(function(_QgridService) {
|
|
24
24
|
_QgridService.stats = () => createSSRQuery("QgridFrame", "stats", [], ["Qgrid", "stats"]);
|
|
25
|
+
_QgridService.totalCost = (tokenName) => createSSRQuery("QgridFrame", "totalCost", [tokenName], ["Qgrid", "totalCost"]);
|
|
25
26
|
_QgridService.usage = (tokenName) => createSSRQuery("QgridFrame", "usage", [tokenName], ["Qgrid", "usage"]);
|
|
26
27
|
_QgridService.health = () => createSSRQuery("QgridFrame", "health", [], ["Qgrid", "health"]);
|
|
27
28
|
})(QgridService || (QgridService = {}));
|
|
28
29
|
//#endregion
|
|
29
30
|
export { QgridService, RequestLogService, TokenService };
|
|
30
31
|
|
|
31
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcmllcy5nZW5lcmF0ZWQuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3F1ZXJpZXMuZ2VuZXJhdGVkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGdlbmVyYXRlZFxuICog7KeB7KCRIOyImOygle2VmOyngCDrp4jshLjsmpQuXG4gKi9cbi8qIG94bGludC1kaXNhYmxlICovXG5cbmltcG9ydCB0eXBlIHsgU1NSUXVlcnkgfSBmcm9tIFwic29uYW11L3NzclwiO1xuXG4vLyBTU1JRdWVyeSDtl6ztjbwg7ZWo7IiYXG5mdW5jdGlvbiBjcmVhdGVTU1JRdWVyeShcbiAgbW9kZWxOYW1lOiBzdHJpbmcsXG4gIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgcGFyYW1zOiBhbnlbXSxcbiAgc2VydmljZUtleTogW3N0cmluZywgc3RyaW5nXSxcbik6IFNTUlF1ZXJ5IHtcbiAgcmV0dXJuIHsgbW9kZWxOYW1lLCBtZXRob2ROYW1lLCBwYXJhbXMsIHNlcnZpY2VLZXksIF9fYnJhbmQ6IFwiU1NSUXVlcnlcIiB9IGFzIFNTUlF1ZXJ5O1xufVxuXG5pbXBvcnQgeyBSZXF1ZXN0TG9nTGlzdFBhcmFtcyB9IGZyb20gXCIuL3JlcXVlc3QtbG9nL3JlcXVlc3QtbG9nLnR5cGVzXCI7XG5pbXBvcnQgeyBUb2tlblN1YnNldEtleSwgUmVxdWVzdExvZ1N1YnNldEtleSB9IGZyb20gXCIuL3NvbmFtdS5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7IFRva2VuTGlzdFBhcmFtcyB9IGZyb20gXCIuL3Rva2VuL3Rva2VuLnR5cGVzXCI7XG5cbmV4cG9ydCBuYW1lc3BhY2UgVG9rZW5TZXJ2aWNlIHtcbiAgZXhwb3J0IGNvbnN0IGdldFRva2VuID0gPFQgZXh0ZW5kcyBUb2tlblN1YnNldEtleT4oc3Vic2V0OiBULCBpZDogbnVtYmVyKTogU1NSUXVlcnkgPT5cbiAgICBjcmVhdGVTU1JRdWVyeShcIlRva2VuTW9kZWxcIiwgXCJmaW5kQnlJZFwiLCBbc3Vic2V0LCBpZF0sIFtcIlRva2VuXCIsIFwiZ2V0VG9rZW5cIl0pO1xuXG4gIGV4cG9ydCBjb25zdCBnZXRUb2tlbnMgPSA8VCBleHRlbmRzIFRva2VuU3Vic2V0S2V5LCBMUCBleHRlbmRzIFRva2VuTGlzdFBhcmFtcz4oXG4gICAgc3Vic2V0OiBULFxuICAgIHJhd1BhcmFtcz86IExQLFxuICApOiBTU1JRdWVyeSA9PlxuICAgIGNyZWF0ZVNTUlF1ZXJ5KFwiVG9rZW5Nb2RlbFwiLCBcImZpbmRNYW55XCIsIFtzdWJzZXQsIHJhd1BhcmFtc10sIFtcIlRva2VuXCIsIFwiZ2V0VG9rZW5zXCJdKTtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBSZXF1ZXN0TG9nU2VydmljZSB7XG4gIGV4cG9ydCBjb25zdCBnZXRSZXF1ZXN0TG9nID0gPFQgZXh0ZW5kcyBSZXF1ZXN0TG9nU3Vic2V0S2V5PihzdWJzZXQ6IFQsIGlkOiBudW1iZXIpOiBTU1JRdWVyeSA9PlxuICAgIGNyZWF0ZVNTUlF1ZXJ5KFwiUmVxdWVzdExvZ01vZGVsXCIsIFwiZmluZEJ5SWRcIiwgW3N1YnNldCwgaWRdLCBbXCJSZXF1ZXN0TG9nXCIsIFwiZ2V0UmVxdWVzdExvZ1wiXSk7XG5cbiAgZXhwb3J0IGNvbnN0IGdldFJlcXVlc3RMb2dzID0gPFQgZXh0ZW5kcyBSZXF1ZXN0TG9nU3Vic2V0S2V5LCBMUCBleHRlbmRzIFJlcXVlc3RMb2dMaXN0UGFyYW1zPihcbiAgICBzdWJzZXQ6IFQsXG4gICAgcmF3UGFyYW1zPzogTFAsXG4gICk6IFNTUlF1ZXJ5ID0+
|
|
32
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcmllcy5nZW5lcmF0ZWQuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3F1ZXJpZXMuZ2VuZXJhdGVkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGdlbmVyYXRlZFxuICog7KeB7KCRIOyImOygle2VmOyngCDrp4jshLjsmpQuXG4gKi9cbi8qIG94bGludC1kaXNhYmxlICovXG5cbmltcG9ydCB0eXBlIHsgU1NSUXVlcnkgfSBmcm9tIFwic29uYW11L3NzclwiO1xuXG4vLyBTU1JRdWVyeSDtl6ztjbwg7ZWo7IiYXG5mdW5jdGlvbiBjcmVhdGVTU1JRdWVyeShcbiAgbW9kZWxOYW1lOiBzdHJpbmcsXG4gIG1ldGhvZE5hbWU6IHN0cmluZyxcbiAgcGFyYW1zOiBhbnlbXSxcbiAgc2VydmljZUtleTogW3N0cmluZywgc3RyaW5nXSxcbik6IFNTUlF1ZXJ5IHtcbiAgcmV0dXJuIHsgbW9kZWxOYW1lLCBtZXRob2ROYW1lLCBwYXJhbXMsIHNlcnZpY2VLZXksIF9fYnJhbmQ6IFwiU1NSUXVlcnlcIiB9IGFzIFNTUlF1ZXJ5O1xufVxuXG5pbXBvcnQgeyBSZXF1ZXN0TG9nTGlzdFBhcmFtcyB9IGZyb20gXCIuL3JlcXVlc3QtbG9nL3JlcXVlc3QtbG9nLnR5cGVzXCI7XG5pbXBvcnQgeyBUb2tlblN1YnNldEtleSwgUmVxdWVzdExvZ1N1YnNldEtleSB9IGZyb20gXCIuL3NvbmFtdS5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7IFRva2VuTGlzdFBhcmFtcyB9IGZyb20gXCIuL3Rva2VuL3Rva2VuLnR5cGVzXCI7XG5cbmV4cG9ydCBuYW1lc3BhY2UgVG9rZW5TZXJ2aWNlIHtcbiAgZXhwb3J0IGNvbnN0IGdldFRva2VuID0gPFQgZXh0ZW5kcyBUb2tlblN1YnNldEtleT4oc3Vic2V0OiBULCBpZDogbnVtYmVyKTogU1NSUXVlcnkgPT5cbiAgICBjcmVhdGVTU1JRdWVyeShcIlRva2VuTW9kZWxcIiwgXCJmaW5kQnlJZFwiLCBbc3Vic2V0LCBpZF0sIFtcIlRva2VuXCIsIFwiZ2V0VG9rZW5cIl0pO1xuXG4gIGV4cG9ydCBjb25zdCBnZXRUb2tlbnMgPSA8VCBleHRlbmRzIFRva2VuU3Vic2V0S2V5LCBMUCBleHRlbmRzIFRva2VuTGlzdFBhcmFtcz4oXG4gICAgc3Vic2V0OiBULFxuICAgIHJhd1BhcmFtcz86IExQLFxuICApOiBTU1JRdWVyeSA9PlxuICAgIGNyZWF0ZVNTUlF1ZXJ5KFwiVG9rZW5Nb2RlbFwiLCBcImZpbmRNYW55XCIsIFtzdWJzZXQsIHJhd1BhcmFtc10sIFtcIlRva2VuXCIsIFwiZ2V0VG9rZW5zXCJdKTtcbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBSZXF1ZXN0TG9nU2VydmljZSB7XG4gIGV4cG9ydCBjb25zdCBnZXRSZXF1ZXN0TG9nID0gPFQgZXh0ZW5kcyBSZXF1ZXN0TG9nU3Vic2V0S2V5PihzdWJzZXQ6IFQsIGlkOiBudW1iZXIpOiBTU1JRdWVyeSA9PlxuICAgIGNyZWF0ZVNTUlF1ZXJ5KFwiUmVxdWVzdExvZ01vZGVsXCIsIFwiZmluZEJ5SWRcIiwgW3N1YnNldCwgaWRdLCBbXCJSZXF1ZXN0TG9nXCIsIFwiZ2V0UmVxdWVzdExvZ1wiXSk7XG5cbiAgZXhwb3J0IGNvbnN0IGdldFJlcXVlc3RMb2dzID0gPFQgZXh0ZW5kcyBSZXF1ZXN0TG9nU3Vic2V0S2V5LCBMUCBleHRlbmRzIFJlcXVlc3RMb2dMaXN0UGFyYW1zPihcbiAgICBzdWJzZXQ6IFQsXG4gICAgcmF3UGFyYW1zPzogTFAsXG4gICk6IFNTUlF1ZXJ5ID0+XG4gICAgY3JlYXRlU1NSUXVlcnkoXG4gICAgICBcIlJlcXVlc3RMb2dNb2RlbFwiLFxuICAgICAgXCJmaW5kTWFueVwiLFxuICAgICAgW3N1YnNldCwgcmF3UGFyYW1zXSxcbiAgICAgIFtcIlJlcXVlc3RMb2dcIiwgXCJnZXRSZXF1ZXN0TG9nc1wiXSxcbiAgICApO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIFFncmlkU2VydmljZSB7XG4gIGV4cG9ydCBjb25zdCBzdGF0cyA9ICgpOiBTU1JRdWVyeSA9PlxuICAgIGNyZWF0ZVNTUlF1ZXJ5KFwiUWdyaWRGcmFtZVwiLCBcInN0YXRzXCIsIFtdLCBbXCJRZ3JpZFwiLCBcInN0YXRzXCJdKTtcblxuICBleHBvcnQgY29uc3QgdG90YWxDb3N0ID0gKHRva2VuTmFtZT86IHN0cmluZyk6IFNTUlF1ZXJ5ID0+XG4gICAgY3JlYXRlU1NSUXVlcnkoXCJRZ3JpZEZyYW1lXCIsIFwidG90YWxDb3N0XCIsIFt0b2tlbk5hbWVdLCBbXCJRZ3JpZFwiLCBcInRvdGFsQ29zdFwiXSk7XG5cbiAgZXhwb3J0IGNvbnN0IHVzYWdlID0gKHRva2VuTmFtZT86IHN0cmluZyk6IFNTUlF1ZXJ5ID0+XG4gICAgY3JlYXRlU1NSUXVlcnkoXCJRZ3JpZEZyYW1lXCIsIFwidXNhZ2VcIiwgW3Rva2VuTmFtZV0sIFtcIlFncmlkXCIsIFwidXNhZ2VcIl0pO1xuXG4gIGV4cG9ydCBjb25zdCBoZWFsdGggPSAoKTogU1NSUXVlcnkgPT5cbiAgICBjcmVhdGVTU1JRdWVyeShcIlFncmlkRnJhbWVcIiwgXCJoZWFsdGhcIiwgW10sIFtcIlFncmlkXCIsIFwiaGVhbHRoXCJdKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFTQSxTQUFTLGVBQ1AsV0FDQSxZQUNBLFFBQ0EsWUFDVTtBQUNWLFFBQU87RUFBRTtFQUFXO0VBQVk7RUFBUTtFQUFZLFNBQVM7RUFBWTs7QUFPcEUsSUFBQTs7QUFDUSxlQUFBLFlBQXNDLFFBQVcsT0FDNUQsZUFBZSxjQUFjLFlBQVksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLFNBQVMsV0FBVyxDQUFDO0FBRWxFLGVBQUEsYUFDWCxRQUNBLGNBRUEsZUFBZSxjQUFjLFlBQVksQ0FBQyxRQUFRLFVBQVUsRUFBRSxDQUFDLFNBQVMsWUFBWSxDQUFDO3VDQUN4RjtBQUVNLElBQUE7O0FBQ1Esb0JBQUEsaUJBQWdELFFBQVcsT0FDdEUsZUFBZSxtQkFBbUIsWUFBWSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsY0FBYyxnQkFBZ0IsQ0FBQztBQUVqRixvQkFBQSxrQkFDWCxRQUNBLGNBRUEsZUFDRSxtQkFDQSxZQUNBLENBQUMsUUFBUSxVQUFVLEVBQ25CLENBQUMsY0FBYyxpQkFBaUIsQ0FDakM7aURBQ0o7QUFFTSxJQUFBOztBQUNRLGVBQUEsY0FDWCxlQUFlLGNBQWMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLFFBQVEsQ0FBQztBQUVsRCxlQUFBLGFBQWEsY0FDeEIsZUFBZSxjQUFjLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLFlBQVksQ0FBQztBQUVuRSxlQUFBLFNBQVMsY0FDcEIsZUFBZSxjQUFjLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLFFBQVEsQ0FBQztBQUUzRCxlQUFBLGVBQ1gsZUFBZSxjQUFjLFVBQVUsRUFBRSxFQUFFLENBQUMsU0FBUyxTQUFTLENBQUM7dUNBQ2xFIn0=
|
|
@@ -5,6 +5,7 @@ import { __decorateMetadata } from "../../_virtual/_@oxc-project_runtime@0.122.0
|
|
|
5
5
|
import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js";
|
|
6
6
|
import { BadRequestException, BaseModelClass, NotFoundException, api, asArray, exhaustive } from "sonamu";
|
|
7
7
|
//#region src/application/request-log/request-log.model.ts
|
|
8
|
+
const MICRO_USD = 1e6;
|
|
8
9
|
var RequestLogModelClass = class extends BaseModelClass {
|
|
9
10
|
constructor() {
|
|
10
11
|
super("RequestLog", requestLogSubsetQueries, requestLogLoaderQueries);
|
|
@@ -61,6 +62,12 @@ var RequestLogModelClass = class extends BaseModelClass {
|
|
|
61
62
|
return await trx.ubUpsert("request_logs");
|
|
62
63
|
});
|
|
63
64
|
}
|
|
65
|
+
async totalCost(params = {}) {
|
|
66
|
+
const qb = this.getDB("r")("request_logs");
|
|
67
|
+
if (params.token_name) qb.where("token_name", "like", `${params.token_name}-%`);
|
|
68
|
+
const row = await qb.sum({ sum: "cost_usd" }).first();
|
|
69
|
+
return Number(row?.sum ?? 0) / MICRO_USD;
|
|
70
|
+
}
|
|
64
71
|
async del(ids) {
|
|
65
72
|
await this.getPuri("w").transaction(async (trx) => {
|
|
66
73
|
return trx.table("request_logs").whereIn("request_logs.id", ids).delete();
|
|
@@ -108,6 +115,6 @@ __decorate([
|
|
|
108
115
|
], RequestLogModelClass.prototype, "del", null);
|
|
109
116
|
const RequestLogModel = new RequestLogModelClass();
|
|
110
117
|
//#endregion
|
|
111
|
-
export { RequestLogModel };
|
|
118
|
+
export { MICRO_USD, RequestLogModel };
|
|
112
119
|
|
|
113
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
120
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1sb2cubW9kZWwuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3JlcXVlc3QtbG9nL3JlcXVlc3QtbG9nLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFwaSxcbiAgYXNBcnJheSxcbiAgQmFkUmVxdWVzdEV4Y2VwdGlvbixcbiAgQmFzZU1vZGVsQ2xhc3MsXG4gIGV4aGF1c3RpdmUsXG4gIHR5cGUgTGlzdFJlc3VsdCxcbiAgTm90Rm91bmRFeGNlcHRpb24sXG59IGZyb20gXCJzb25hbXVcIjtcblxuaW1wb3J0IHsgU0QgfSBmcm9tIFwiLi4vLi4vaTE4bi9zZC5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7IHR5cGUgUmVxdWVzdExvZ1N1YnNldEtleSwgdHlwZSBSZXF1ZXN0TG9nU3Vic2V0TWFwcGluZyB9IGZyb20gXCIuLi9zb25hbXUuZ2VuZXJhdGVkXCI7XG5pbXBvcnQgeyByZXF1ZXN0TG9nTG9hZGVyUXVlcmllcywgcmVxdWVzdExvZ1N1YnNldFF1ZXJpZXMgfSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZC5zc29cIjtcbmltcG9ydCB7IHR5cGUgUmVxdWVzdExvZ0xpc3RQYXJhbXMsIHR5cGUgUmVxdWVzdExvZ1NhdmVQYXJhbXMgfSBmcm9tIFwiLi9yZXF1ZXN0LWxvZy50eXBlc1wiO1xuXG4vLyBjb3N0X3VzZOuKlCDsoJXsiJggbWljcm8tVVNE66GcIOyggOyepS4g7Iuk7KCcIFVTRCA9IGNvc3RfdXNkIC8gTUlDUk9fVVNELlxuZXhwb3J0IGNvbnN0IE1JQ1JPX1VTRCA9IDFfMDAwXzAwMDtcblxuLypcbiAgUmVxdWVzdExvZyBNb2RlbFxuKi9cbmNsYXNzIFJlcXVlc3RMb2dNb2RlbENsYXNzIGV4dGVuZHMgQmFzZU1vZGVsQ2xhc3M8XG4gIFJlcXVlc3RMb2dTdWJzZXRLZXksXG4gIFJlcXVlc3RMb2dTdWJzZXRNYXBwaW5nLFxuICB0eXBlb2YgcmVxdWVzdExvZ1N1YnNldFF1ZXJpZXMsXG4gIHR5cGVvZiByZXF1ZXN0TG9nTG9hZGVyUXVlcmllc1xuPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiUmVxdWVzdExvZ1wiLCByZXF1ZXN0TG9nU3Vic2V0UXVlcmllcywgcmVxdWVzdExvZ0xvYWRlclF1ZXJpZXMpO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0sIHJlc291cmNlTmFtZTogXCJSZXF1ZXN0TG9nXCIgfSlcbiAgYXN5bmMgZmluZEJ5SWQ8VCBleHRlbmRzIFJlcXVlc3RMb2dTdWJzZXRLZXk+KFxuICAgIHN1YnNldDogVCxcbiAgICBpZDogbnVtYmVyLFxuICApOiBQcm9taXNlPFJlcXVlc3RMb2dTdWJzZXRNYXBwaW5nW1RdPiB7XG4gICAgY29uc3QgeyByb3dzIH0gPSBhd2FpdCB0aGlzLmZpbmRNYW55KHN1YnNldCwge1xuICAgICAgaWQsXG4gICAgICBudW06IDEsXG4gICAgICBwYWdlOiAxLFxuICAgIH0pO1xuICAgIGlmICghcm93c1swXSkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uKFNEKFwiZXJyb3IuZW50aXR5Tm90Rm91bmRcIikoXCJSZXF1ZXN0TG9nXCIsIGlkKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd3NbMF07XG4gIH1cblxuICBhc3luYyBmaW5kT25lPFQgZXh0ZW5kcyBSZXF1ZXN0TG9nU3Vic2V0S2V5PihcbiAgICBzdWJzZXQ6IFQsXG4gICAgbGlzdFBhcmFtczogUmVxdWVzdExvZ0xpc3RQYXJhbXMsXG4gICk6IFByb21pc2U8UmVxdWVzdExvZ1N1YnNldE1hcHBpbmdbVF0gfCBudWxsPiB7XG4gICAgY29uc3QgeyByb3dzIH0gPSBhd2FpdCB0aGlzLmZpbmRNYW55KHN1YnNldCwge1xuICAgICAgLi4ubGlzdFBhcmFtcyxcbiAgICAgIG51bTogMSxcbiAgICAgIHBhZ2U6IDEsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcm93c1swXSA/PyBudWxsO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0sIHJlc291cmNlTmFtZTogXCJSZXF1ZXN0TG9nc1wiIH0pXG4gIGFzeW5jIGZpbmRNYW55PFQgZXh0ZW5kcyBSZXF1ZXN0TG9nU3Vic2V0S2V5LCBMUCBleHRlbmRzIFJlcXVlc3RMb2dMaXN0UGFyYW1zPihcbiAgICBzdWJzZXQ6IFQsXG4gICAgcmF3UGFyYW1zPzogTFAsXG4gICk6IFByb21pc2U8TGlzdFJlc3VsdDxMUCwgUmVxdWVzdExvZ1N1YnNldE1hcHBpbmdbVF0+PiB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgbnVtOiAyNCxcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBzZWFyY2g6IFwiaWRcIiBhcyBjb25zdCxcbiAgICAgIG9yZGVyQnk6IFwiaWQtZGVzY1wiIGFzIGNvbnN0LFxuICAgICAgLi4ucmF3UGFyYW1zLFxuICAgIH0gc2F0aXNmaWVzIFJlcXVlc3RMb2dMaXN0UGFyYW1zO1xuXG4gICAgY29uc3QgeyBxYiwgb25TdWJzZXQ6IF8gfSA9IHRoaXMuZ2V0U3Vic2V0UXVlcmllcyhzdWJzZXQpO1xuXG4gICAgaWYgKHBhcmFtcy5pZCkge1xuICAgICAgcWIud2hlcmVJbihcInJlcXVlc3RfbG9ncy5pZFwiLCBhc0FycmF5KHBhcmFtcy5pZCkpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMudG9rZW5fbmFtZSkge1xuICAgICAgcWIud2hlcmUoXCJyZXF1ZXN0X2xvZ3MudG9rZW5fbmFtZVwiLCBcImxpa2VcIiwgYCR7cGFyYW1zLnRva2VuX25hbWV9LSVgKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnNlYXJjaCAmJiBwYXJhbXMua2V5d29yZCAmJiBwYXJhbXMua2V5d29yZC5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAocGFyYW1zLnNlYXJjaCA9PT0gXCJpZFwiKSB7XG4gICAgICAgIHFiLndoZXJlKFwicmVxdWVzdF9sb2dzLmlkXCIsIE51bWJlcihwYXJhbXMua2V5d29yZCkpO1xuICAgICAgfSBlbHNlIGlmIChwYXJhbXMuc2VhcmNoID09PSBcInRva2VuX25hbWVcIikge1xuICAgICAgICBxYi53aGVyZShcInJlcXVlc3RfbG9ncy50b2tlbl9uYW1lXCIsIFwibGlrZVwiLCBgJSR7cGFyYW1zLmtleXdvcmR9JWApO1xuICAgICAgfSBlbHNlIGlmIChwYXJhbXMuc2VhcmNoID09PSBcInF1ZXJ5XCIpIHtcbiAgICAgICAgcWIud2hlcmUoXCJyZXF1ZXN0X2xvZ3MucXVlcnlcIiwgXCJsaWtlXCIsIGAlJHtwYXJhbXMua2V5d29yZH0lYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgQmFkUmVxdWVzdEV4Y2VwdGlvbihTRChcImVycm9yLnVua25vd25TZWFyY2hGaWVsZFwiKShwYXJhbXMuc2VhcmNoKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gb3JkZXJCeVxuICAgIGlmIChwYXJhbXMub3JkZXJCeSkge1xuICAgICAgLy8gZGVmYXVsdCBvcmRlckJ5XG4gICAgICBpZiAocGFyYW1zLm9yZGVyQnkgPT09IFwiaWQtZGVzY1wiKSB7XG4gICAgICAgIHFiLm9yZGVyQnkoXCJyZXF1ZXN0X2xvZ3MuaWRcIiwgXCJkZXNjXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhoYXVzdGl2ZShwYXJhbXMub3JkZXJCeSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZW5oYW5jZXJzID0gdGhpcy5jcmVhdGVFbmhhbmNlcnMoe1xuICAgICAgQTogKHJvdykgPT4gKHtcbiAgICAgICAgLi4ucm93LFxuICAgICAgICAvLyDshJzruIzshYvrs4TroZwgdmlydHVhbCDtlYTrk5wg6rOE7IKw66Gc7KeBIOy2lOqwgFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5leGVjdXRlU3Vic2V0UXVlcnkoe1xuICAgICAgc3Vic2V0LFxuICAgICAgcWIsXG4gICAgICBwYXJhbXMsXG4gICAgICBlbmhhbmNlcnMsXG4gICAgICBkZWJ1ZzogZmFsc2UsXG4gICAgfSk7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stbXV0YXRpb25cIl0gfSlcbiAgYXN5bmMgc2F2ZShzcGE6IFJlcXVlc3RMb2dTYXZlUGFyYW1zW10pOiBQcm9taXNlPG51bWJlcltdPiB7XG4gICAgY29uc3Qgd2RiID0gdGhpcy5nZXRQdXJpKFwid1wiKTtcblxuICAgIC8vIHJlZ2lzdGVyXG4gICAgc3BhLmZvckVhY2goKHNwKSA9PiB7XG4gICAgICB3ZGIudWJSZWdpc3RlcihcInJlcXVlc3RfbG9nc1wiLCBzcCk7XG4gICAgfSk7XG5cbiAgICAvLyB0cmFuc2FjdGlvblxuICAgIHJldHVybiB3ZGIudHJhbnNhY3Rpb24oYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgY29uc3QgaWRzID0gYXdhaXQgdHJ4LnViVXBzZXJ0KFwicmVxdWVzdF9sb2dzXCIpO1xuXG4gICAgICByZXR1cm4gaWRzO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gU29uYW11IGZpbmRNYW5564qUIHN1YnNldCDsoITssrQg7Lus65+8KHRleHQg7Y+s7ZWoKeydhCDtjpjsuZjtlbTshJwgYWdncmVnYXRl7JeUIOuEiOustCDrrLTqsbDsm4Ag4oaSIHJhdyBzdW0g7IKs7JqpLlxuICBhc3luYyB0b3RhbENvc3QocGFyYW1zOiB7IHRva2VuX25hbWU/OiBzdHJpbmcgfSA9IHt9KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBxYiA9IHRoaXMuZ2V0REIoXCJyXCIpKFwicmVxdWVzdF9sb2dzXCIpO1xuICAgIGlmIChwYXJhbXMudG9rZW5fbmFtZSkge1xuICAgICAgcWIud2hlcmUoXCJ0b2tlbl9uYW1lXCIsIFwibGlrZVwiLCBgJHtwYXJhbXMudG9rZW5fbmFtZX0tJWApO1xuICAgIH1cbiAgICAvLyBrbmV464qUIHBn7JeQ7IScIG51bWVyaWMgYWdncmVnYXRl66W8IHN0cmluZ+ycvOuhnCDrsJjtmZguXG4gICAgY29uc3Qgcm93ID0gKGF3YWl0IHFiLnN1bSh7IHN1bTogXCJjb3N0X3VzZFwiIH0pLmZpcnN0KCkpIGFzIHsgc3VtOiBzdHJpbmcgfCBudWxsIH0gfCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIE51bWJlcihyb3c/LnN1bSA/PyAwKSAvIE1JQ1JPX1VTRDtcbiAgfVxuXG4gIEBhcGkoeyBodHRwTWV0aG9kOiBcIlBPU1RcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1tdXRhdGlvblwiXSB9KVxuICBhc3luYyBkZWwoaWRzOiBudW1iZXJbXSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3Qgd2RiID0gdGhpcy5nZXRQdXJpKFwid1wiKTtcblxuICAgIC8vIHRyYW5zYWN0aW9uXG4gICAgYXdhaXQgd2RiLnRyYW5zYWN0aW9uKGFzeW5jICh0cngpID0+IHtcbiAgICAgIHJldHVybiB0cngudGFibGUoXCJyZXF1ZXN0X2xvZ3NcIikud2hlcmVJbihcInJlcXVlc3RfbG9ncy5pZFwiLCBpZHMpLmRlbGV0ZSgpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGlkcy5sZW5ndGg7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dNb2RlbCA9IG5ldyBSZXF1ZXN0TG9nTW9kZWxDbGFzcygpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBZ0JBLE1BQWEsWUFBWTtBQUt6QixJQUFNLHVCQUFOLGNBQW1DLGVBS2pDO0NBQ0EsY0FBYztBQUNaLFFBQU0sY0FBYyx5QkFBeUIsd0JBQXdCOztDQUd2RSxNQUNNLFNBQ0osUUFDQSxJQUNxQztFQUNyQyxNQUFNLEVBQUUsU0FBUyxNQUFNLEtBQUssU0FBUyxRQUFRO0dBQzNDO0dBQ0EsS0FBSztHQUNMLE1BQU07R0FDUCxDQUFDO0FBQ0YsTUFBSSxDQUFDLEtBQUssR0FDUixPQUFNLElBQUksa0JBQWtCLEdB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
|
|
@@ -38,7 +38,8 @@ const RequestLogBaseSchema = z.object({
|
|
|
38
38
|
output_tokens: z.int(),
|
|
39
39
|
cache_read_tokens: z.int(),
|
|
40
40
|
cache_creation_tokens: z.int(),
|
|
41
|
-
duration_ms: z.int()
|
|
41
|
+
duration_ms: z.int(),
|
|
42
|
+
cost_usd: z.int().nullable()
|
|
42
43
|
});
|
|
43
44
|
const TokenBaseSchema = z.object({
|
|
44
45
|
id: z.int(),
|
|
@@ -83,7 +84,8 @@ const RequestLogSubsetA = z.object({
|
|
|
83
84
|
output_tokens: z.int(),
|
|
84
85
|
cache_read_tokens: z.int(),
|
|
85
86
|
cache_creation_tokens: z.int(),
|
|
86
|
-
duration_ms: z.int()
|
|
87
|
+
duration_ms: z.int(),
|
|
88
|
+
cost_usd: z.int().nullable()
|
|
87
89
|
});
|
|
88
90
|
const RequestLogSubsetKey = z.enum(["A"]);
|
|
89
91
|
const TokenSubsetA = z.object({
|
|
@@ -101,4 +103,4 @@ const TokenSubsetKey = z.enum(["A"]);
|
|
|
101
103
|
//#endregion
|
|
102
104
|
export { RequestLogBaseListParams, RequestLogBaseSchema, RequestLogOrderBy, RequestLogOrderByLabel, RequestLogSearchField, RequestLogSearchFieldLabel, RequestLogSubsetA, RequestLogSubsetKey, TokenBaseListParams, TokenBaseSchema, TokenOrderBy, TokenOrderByLabel, TokenSearchField, TokenSearchFieldLabel, TokenSubsetA, TokenSubsetKey };
|
|
103
105
|
|
|
104
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmdlbmVyYXRlZC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwbGljYXRpb24vc29uYW11LmdlbmVyYXRlZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBnZW5lcmF0ZWRcbiAqIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlxuICovXG4vKiBveGxpbnQtZGlzYWJsZSAqL1xuXG5pbXBvcnQgeyB6QXJyYXlhYmxlLCBTb25hbXVRdWVyeU1vZGUsIEFwcGx5U29uYW11RmlsdGVyIH0gZnJvbSBcInNvbmFtdVwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuLy8gRW51bXM6IFJlcXVlc3RMb2dcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nT3JkZXJCeSA9IHouZW51bShbXCJpZC1kZXNjXCJdKS5kZXNjcmliZShcIlJlcXVlc3RMb2dPcmRlckJ5XCIpO1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ09yZGVyQnkgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nT3JkZXJCeT47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ09yZGVyQnlMYWJlbCA9IHsgXCJpZC1kZXNjXCI6IFwiSUTstZzsi6DsiJxcIiB9O1xuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTZWFyY2hGaWVsZCA9IHpcbiAgLmVudW0oW1wiaWRcIiwgXCJ0b2tlbl9uYW1lXCIsIFwicXVlcnlcIl0pXG4gIC5kZXNjcmliZShcIlJlcXVlc3RMb2dTZWFyY2hGaWVsZFwiKTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTZWFyY2hGaWVsZCA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTZWFyY2hGaWVsZD47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1NlYXJjaEZpZWxkTGFiZWwgPSB7IGlkOiBcIklEXCIsIHRva2VuX25hbWU6IFwi7Yag7YGw7J2066aEXCIsIHF1ZXJ5OiBcIuy/vOumrFwiIH07XG5cbi8vIEVudW1zOiBUb2tlblxuZXhwb3J0IGNvbnN0IFRva2VuT3JkZXJCeSA9IHouZW51bShbXCJpZC1kZXNjXCIsIFwib3JkLWFzY1wiXSkuZGVzY3JpYmUoXCJUb2tlbk9yZGVyQnlcIik7XG5leHBvcnQgdHlwZSBUb2tlbk9yZGVyQnkgPSB6LmluZmVyPHR5cGVvZiBUb2tlbk9yZGVyQnk+
|
|
106
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmdlbmVyYXRlZC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwbGljYXRpb24vc29uYW11LmdlbmVyYXRlZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBnZW5lcmF0ZWRcbiAqIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlxuICovXG4vKiBveGxpbnQtZGlzYWJsZSAqL1xuXG5pbXBvcnQgeyB6QXJyYXlhYmxlLCBTb25hbXVRdWVyeU1vZGUsIEFwcGx5U29uYW11RmlsdGVyIH0gZnJvbSBcInNvbmFtdVwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuLy8gRW51bXM6IFJlcXVlc3RMb2dcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nT3JkZXJCeSA9IHouZW51bShbXCJpZC1kZXNjXCJdKS5kZXNjcmliZShcIlJlcXVlc3RMb2dPcmRlckJ5XCIpO1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ09yZGVyQnkgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nT3JkZXJCeT47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ09yZGVyQnlMYWJlbCA9IHsgXCJpZC1kZXNjXCI6IFwiSUTstZzsi6DsiJxcIiB9O1xuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTZWFyY2hGaWVsZCA9IHpcbiAgLmVudW0oW1wiaWRcIiwgXCJ0b2tlbl9uYW1lXCIsIFwicXVlcnlcIl0pXG4gIC5kZXNjcmliZShcIlJlcXVlc3RMb2dTZWFyY2hGaWVsZFwiKTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dTZWFyY2hGaWVsZCA9IHouaW5mZXI8dHlwZW9mIFJlcXVlc3RMb2dTZWFyY2hGaWVsZD47XG5leHBvcnQgY29uc3QgUmVxdWVzdExvZ1NlYXJjaEZpZWxkTGFiZWwgPSB7IGlkOiBcIklEXCIsIHRva2VuX25hbWU6IFwi7Yag7YGw7J2066aEXCIsIHF1ZXJ5OiBcIuy/vOumrFwiIH07XG5cbi8vIEVudW1zOiBUb2tlblxuZXhwb3J0IGNvbnN0IFRva2VuT3JkZXJCeSA9IHouZW51bShbXCJpZC1kZXNjXCIsIFwib3JkLWFzY1wiXSkuZGVzY3JpYmUoXCJUb2tlbk9yZGVyQnlcIik7XG5leHBvcnQgdHlwZSBUb2tlbk9yZGVyQnkgPSB6LmluZmVyPHR5cGVvZiBUb2tlbk9yZGVyQnk+O1xuZXhwb3J0IGNvbnN0IFRva2VuT3JkZXJCeUxhYmVsID0geyBcImlkLWRlc2NcIjogXCJJROy1nOyLoOyInFwiLCBcIm9yZC1hc2NcIjogXCLsiJzshJzsiJxcIiB9O1xuZXhwb3J0IGNvbnN0IFRva2VuU2VhcmNoRmllbGQgPSB6LmVudW0oW1wiaWRcIiwgXCJuYW1lXCJdKS5kZXNjcmliZShcIlRva2VuU2VhcmNoRmllbGRcIik7XG5leHBvcnQgdHlwZSBUb2tlblNlYXJjaEZpZWxkID0gei5pbmZlcjx0eXBlb2YgVG9rZW5TZWFyY2hGaWVsZD47XG5leHBvcnQgY29uc3QgVG9rZW5TZWFyY2hGaWVsZExhYmVsID0geyBpZDogXCJJRFwiLCBuYW1lOiBcIuydtOumhFwiIH07XG5cbi8vIEJhc2VTY2hlbWE6IFJlcXVlc3RMb2dcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nQmFzZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouaW50KCksXG4gIGNyZWF0ZWRfYXQ6IHouZGF0ZSgpLFxuICB0b2tlbl9uYW1lOiB6LnN0cmluZygpLm1heCgxMDApLFxuICBxdWVyeTogei5zdHJpbmcoKSxcbiAgcmVzcG9uc2U6IHouc3RyaW5nKCksXG4gIGlucHV0X3Rva2Vuczogei5pbnQoKSxcbiAgb3V0cHV0X3Rva2Vuczogei5pbnQoKSxcbiAgY2FjaGVfcmVhZF90b2tlbnM6IHouaW50KCksXG4gIGNhY2hlX2NyZWF0aW9uX3Rva2Vuczogei5pbnQoKSxcbiAgZHVyYXRpb25fbXM6IHouaW50KCksXG4gIGNvc3RfdXNkOiB6LmludCgpLm51bGxhYmxlKCksXG59KTtcbmV4cG9ydCB0eXBlIFJlcXVlc3RMb2dCYXNlU2NoZW1hID0gei5pbmZlcjx0eXBlb2YgUmVxdWVzdExvZ0Jhc2VTY2hlbWE+ICYge1xuICByZWFkb25seSBfX2hhc0RlZmF1bHRfXzogcmVhZG9ubHkgW1wiY3JlYXRlZF9hdFwiLCBcImNvc3RfdXNkXCIsIFwiaWRcIl07XG59O1xuXG4vLyBCYXNlU2NoZW1hOiBUb2tlblxuZXhwb3J0IGNvbnN0IFRva2VuQmFzZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouaW50KCksXG4gIGNyZWF0ZWRfYXQ6IHouZGF0ZSgpLFxuICB0b2tlbjogei5zdHJpbmcoKSxcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgcmVmcmVzaF90b2tlbjogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBleHBpcmVzX2F0OiB6LmJpZ2ludCgpLm51bGxhYmxlKCksXG4gIGFjY291bnRfdXVpZDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICBhY3RpdmU6IHouYm9vbGVhbigpLFxuICBvcmQ6IHouaW50KCksXG59KTtcbmV4cG9ydCB0eXBlIFRva2VuQmFzZVNjaGVtYSA9IHouaW5mZXI8dHlwZW9mIFRva2VuQmFzZVNjaGVtYT4gJiB7XG4gIHJlYWRvbmx5IF9faGFzRGVmYXVsdF9fOiByZWFkb25seSBbXG4gICAgXCJjcmVhdGVkX2F0XCIsXG4gICAgXCJyZWZyZXNoX3Rva2VuXCIsXG4gICAgXCJleHBpcmVzX2F0XCIsXG4gICAgXCJhY2NvdW50X3V1aWRcIixcbiAgICBcImFjdGl2ZVwiLFxuICAgIFwib3JkXCIsXG4gICAgXCJpZFwiLFxuICBdO1xufTtcblxuLy8gQmFzZUxpc3RQYXJhbXM6IFJlcXVlc3RMb2dcbmV4cG9ydCBjb25zdCBSZXF1ZXN0TG9nQmFzZUxpc3RQYXJhbXMgPSB6XG4gIC5vYmplY3Qoe1xuICAgIG51bTogei5udW1iZXIoKS5pbnQoKS5ub25uZWdhdGl2ZSgpLFxuICAgIHBhZ2U6IHoubnVtYmVyKCkuaW50KCkubWluKDEpLFxuICAgIHNlYXJjaDogUmVxdWVzdExvZ1NlYXJjaEZpZWxkLFxuICAgIGtleXdvcmQ6IHouc3RyaW5nKCksXG4gICAgb3JkZXJCeTogUmVxdWVzdExvZ09yZGVyQnksXG4gICAgcXVlcnlNb2RlOiBTb25hbXVRdWVyeU1vZGUsXG4gICAgaWQ6IHpBcnJheWFibGUoei5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpKSxcbiAgICBzb25hbXVGaWx0ZXI6IHouY3VzdG9tPEFwcGx5U29uYW11RmlsdGVyPFJlcXVlc3RMb2dCYXNlU2NoZW1hLCBuZXZlciwgbmV2ZXI+PigpLFxuICAgIHRva2VuX25hbWU6IHouc3RyaW5nKCkubWF4KDEwMCksXG4gIH0pXG4gIC5wYXJ0aWFsKCk7XG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nQmFzZUxpc3RQYXJhbXMgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nQmFzZUxpc3RQYXJhbXM+O1xuXG4vLyBCYXNlTGlzdFBhcmFtczogVG9rZW5cbmV4cG9ydCBjb25zdCBUb2tlbkJhc2VMaXN0UGFyYW1zID0gelxuICAub2JqZWN0KHtcbiAgICBudW06IHoubnVtYmVyKCkuaW50KCkubm9ubmVnYXRpdmUoKSxcbiAgICBwYWdlOiB6Lm51bWJlcigpLmludCgpLm1pbigxKSxcbiAgICBzZWFyY2g6IFRva2VuU2VhcmNoRmllbGQsXG4gICAga2V5d29yZDogei5zdHJpbmcoKSxcbiAgICBvcmRlckJ5OiBUb2tlbk9yZGVyQnksXG4gICAgcXVlcnlNb2RlOiBTb25hbXVRdWVyeU1vZGUsXG4gICAgaWQ6IHpBcnJheWFibGUoei5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpKSxcbiAgICBzb25hbXVGaWx0ZXI6IHouY3VzdG9tPEFwcGx5U29uYW11RmlsdGVyPFRva2VuQmFzZVNjaGVtYSwgbmV2ZXIsIG5ldmVyPj4oKSxcbiAgICB0b2tlbjogei5zdHJpbmcoKSxcbiAgfSlcbiAgLnBhcnRpYWwoKTtcbmV4cG9ydCB0eXBlIFRva2VuQmFzZUxpc3RQYXJhbXMgPSB6LmluZmVyPHR5cGVvZiBUb2tlbkJhc2VMaXN0UGFyYW1zPjtcblxuLy8gU3Vic2V0czogUmVxdWVzdExvZ1xuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTdWJzZXRBID0gei5vYmplY3Qoe1xuICBpZDogei5pbnQoKSxcbiAgY3JlYXRlZF9hdDogei5kYXRlKCksXG4gIHRva2VuX25hbWU6IHouc3RyaW5nKCkubWF4KDEwMCksXG4gIHF1ZXJ5OiB6LnN0cmluZygpLFxuICByZXNwb25zZTogei5zdHJpbmcoKSxcbiAgaW5wdXRfdG9rZW5zOiB6LmludCgpLFxuICBvdXRwdXRfdG9rZW5zOiB6LmludCgpLFxuICBjYWNoZV9yZWFkX3Rva2Vuczogei5pbnQoKSxcbiAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiB6LmludCgpLFxuICBkdXJhdGlvbl9tczogei5pbnQoKSxcbiAgY29zdF91c2Q6IHouaW50KCkubnVsbGFibGUoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUmVxdWVzdExvZ1N1YnNldEEgPSB6LmluZmVyPHR5cGVvZiBSZXF1ZXN0TG9nU3Vic2V0QT47XG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nU3Vic2V0TWFwcGluZyA9IHtcbiAgQTogUmVxdWVzdExvZ1N1YnNldEE7XG59O1xuZXhwb3J0IGNvbnN0IFJlcXVlc3RMb2dTdWJzZXRLZXkgPSB6LmVudW0oW1wiQVwiXSk7XG5leHBvcnQgdHlwZSBSZXF1ZXN0TG9nU3Vic2V0S2V5ID0gei5pbmZlcjx0eXBlb2YgUmVxdWVzdExvZ1N1YnNldEtleT47XG5cbi8vIFN1YnNldHM6IFRva2VuXG5leHBvcnQgY29uc3QgVG9rZW5TdWJzZXRBID0gei5vYmplY3Qoe1xuICBpZDogei5pbnQoKSxcbiAgY3JlYXRlZF9hdDogei5kYXRlKCksXG4gIHRva2VuOiB6LnN0cmluZygpLFxuICBuYW1lOiB6LnN0cmluZygpLFxuICByZWZyZXNoX3Rva2VuOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGV4cGlyZXNfYXQ6IHouYmlnaW50KCkubnVsbGFibGUoKSxcbiAgYWNjb3VudF91dWlkOiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gIGFjdGl2ZTogei5ib29sZWFuKCksXG4gIG9yZDogei5pbnQoKSxcbn0pO1xuZXhwb3J0IHR5cGUgVG9rZW5TdWJzZXRBID0gei5pbmZlcjx0eXBlb2YgVG9rZW5TdWJzZXRBPjtcbmV4cG9ydCB0eXBlIFRva2VuU3Vic2V0TWFwcGluZyA9IHtcbiAgQTogVG9rZW5TdWJzZXRBO1xufTtcbmV4cG9ydCBjb25zdCBUb2tlblN1YnNldEtleSA9IHouZW51bShbXCJBXCJdKTtcbmV4cG9ydCB0eXBlIFRva2VuU3Vic2V0S2V5ID0gei5pbmZlcjx0eXBlb2YgVG9rZW5TdWJzZXRLZXk+O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVVBLE1BQWEsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsb0JBQW9CO0FBRWxGLE1BQWEseUJBQXlCLEVBQUUsV0FBVyxTQUFTO0FBQzVELE1BQWEsd0JBQXdCLEVBQ2xDLEtBQUs7Q0FBQztDQUFNO0NBQWM7Q0FBUSxDQUFDLENBQ25DLFNBQVMsd0JBQXdCO0FBRXBDLE1BQWEsNkJBQTZCO0NBQUUsSUFBSTtDQUFNLFlBQVk7Q0FBUSxPQUFPO0NBQU07QUFHdkYsTUFBYSxlQUFlLEVBQUUsS0FBSyxDQUFDLFdBQVcsVUFBVSxDQUFDLENBQUMsU0FBUyxlQUFlO0FBRW5GLE1BQWEsb0JBQW9CO0NBQUUsV0FBVztDQUFTLFdBQVc7Q0FBTztBQUN6RSxNQUFhLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxNQUFNLE9BQU8sQ0FBQyxDQUFDLFNBQVMsbUJBQW1CO0FBRW5GLE1BQWEsd0JBQXdCO0NBQUUsSUFBSTtDQUFNLE1BQU07Q0FBTTtBQUc3RCxNQUFhLHVCQUF1QixFQUFFLE9BQU87Q0FDM0MsSUFBSSxFQUFFLEtBQUs7Q0FDWCxZQUFZLEVBQUUsTUFBTTtDQUNwQixZQUFZLEVBQUUsUUFBUSxDQUFDLElBQUksSUFBSTtDQUMvQixPQUFPLEVBQUUsUUFBUTtDQUNqQixVQUFVLEVBQUUsUUFBUTtDQUNwQixjQUFjLEVBQUUsS0FBSztDQUNyQixlQUFlLEVBQUUsS0FBSztDQUN0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
|
|
@@ -11,7 +11,8 @@ const requestLogSubsetQueries = { A: (qbWrapper) => {
|
|
|
11
11
|
output_tokens: "request_logs.output_tokens",
|
|
12
12
|
cache_read_tokens: "request_logs.cache_read_tokens",
|
|
13
13
|
cache_creation_tokens: "request_logs.cache_creation_tokens",
|
|
14
|
-
duration_ms: "request_logs.duration_ms"
|
|
14
|
+
duration_ms: "request_logs.duration_ms",
|
|
15
|
+
cost_usd: "request_logs.cost_usd"
|
|
15
16
|
});
|
|
16
17
|
} };
|
|
17
18
|
const requestLogLoaderQueries = { A: [] };
|
|
@@ -32,4 +33,4 @@ const tokenLoaderQueries = { A: [] };
|
|
|
32
33
|
//#endregion
|
|
33
34
|
export { requestLogLoaderQueries, requestLogSubsetQueries, tokenLoaderQueries, tokenSubsetQueries };
|
|
34
35
|
|
|
35
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmdlbmVyYXRlZC5zc28uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NvbmFtdS5nZW5lcmF0ZWQuc3NvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGdlbmVyYXRlZFxuICog7KeB7KCRIOyImOygle2VmOyngCDrp4jshLjsmpQuXG4gKi9cbmltcG9ydCB7IFB1cmlXcmFwcGVyLCBEYXRhYmFzZVNjaGVtYUV4dGVuZCwgUHVyaUxvYWRlclF1ZXJpZXMgfSBmcm9tIFwic29uYW11XCI7XG5cbmltcG9ydCB7XG4gIFJlcXVlc3RMb2dTdWJzZXRLZXksXG4gIFRva2VuU3Vic2V0S2V5LFxuICBSZXF1ZXN0TG9nQmFzZVNjaGVtYSxcbiAgVG9rZW5CYXNlU2NoZW1hLFxufSBmcm9tIFwiLi9zb25hbXUuZ2VuZXJhdGVkXCI7XG5cbi8vIFN1YnNldFF1ZXJ5OiBSZXF1ZXN0TG9nXG5leHBvcnQgY29uc3QgcmVxdWVzdExvZ1N1YnNldFF1ZXJpZXMgPSB7XG4gIEE6IChxYldyYXBwZXI6IFB1cmlXcmFwcGVyPERhdGFiYXNlU2NoZW1hRXh0ZW5kPikgPT4ge1xuICAgIHJldHVybiBxYldyYXBwZXIuZnJvbShcInJlcXVlc3RfbG9nc1wiKS5zZWxlY3Qoe1xuICAgICAgaWQ6IFwicmVxdWVzdF9sb2dzLmlkXCIsXG4gICAgICBjcmVhdGVkX2F0OiBcInJlcXVlc3RfbG9ncy5jcmVhdGVkX2F0XCIsXG4gICAgICB0b2tlbl9uYW1lOiBcInJlcXVlc3RfbG9ncy50b2tlbl9uYW1lXCIsXG4gICAgICBxdWVyeTogXCJyZXF1ZXN0X2xvZ3MucXVlcnlcIixcbiAgICAgIHJlc3BvbnNlOiBcInJlcXVlc3RfbG9ncy5yZXNwb25zZVwiLFxuICAgICAgaW5wdXRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5pbnB1dF90b2tlbnNcIixcbiAgICAgIG91dHB1dF90b2tlbnM6IFwicmVxdWVzdF9sb2dzLm91dHB1dF90b2tlbnNcIixcbiAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9yZWFkX3Rva2Vuc1wiLFxuICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBcInJlcXVlc3RfbG9ncy5jYWNoZV9jcmVhdGlvbl90b2tlbnNcIixcbiAgICAgIGR1cmF0aW9uX21zOiBcInJlcXVlc3RfbG9ncy5kdXJhdGlvbl9tc1wiLFxuICAgICAgY29zdF91c2Q6IFwicmVxdWVzdF9sb2dzLmNvc3RfdXNkXCIsXG4gICAgfSk7XG4gIH0sXG59O1xuXG4vLyBMb2FkZXJRdWVyeTogUmVxdWVzdExvZ1xuZXhwb3J0IGNvbnN0IHJlcXVlc3RMb2dMb2FkZXJRdWVyaWVzID0ge1xuICBBOiBbXSxcbn0gYXMgY29uc3Qgc2F0aXNmaWVzIFB1cmlMb2FkZXJRdWVyaWVzPFJlcXVlc3RMb2dTdWJzZXRLZXk+O1xuXG4vLyBTdWJzZXRRdWVyeTogVG9rZW5cbmV4cG9ydCBjb25zdCB0b2tlblN1YnNldFF1ZXJpZXMgPSB7XG4gIEE6IChxYldyYXBwZXI6IFB1cmlXcmFwcGVyPERhdGFiYXNlU2NoZW1hRXh0ZW5kPikgPT4ge1xuICAgIHJldHVybiBxYldyYXBwZXIuZnJvbShcInRva2Vuc1wiKS5zZWxlY3Qoe1xuICAgICAgaWQ6IFwidG9rZW5zLmlkXCIsXG4gICAgICBjcmVhdGVkX2F0OiBcInRva2Vucy5jcmVhdGVkX2F0XCIsXG4gICAgICB0b2tlbjogXCJ0b2tlbnMudG9rZW5cIixcbiAgICAgIG5hbWU6IFwidG9rZW5zLm5hbWVcIixcbiAgICAgIHJlZnJlc2hfdG9rZW46IFwidG9rZW5zLnJlZnJlc2hfdG9rZW5cIixcbiAgICAgIGV4cGlyZXNfYXQ6IFwidG9rZW5zLmV4cGlyZXNfYXRcIixcbiAgICAgIGFjY291bnRfdXVpZDogXCJ0b2tlbnMuYWNjb3VudF91dWlkXCIsXG4gICAgICBhY3RpdmU6IFwidG9rZW5zLmFjdGl2ZVwiLFxuICAgICAgb3JkOiBcInRva2Vucy5vcmRcIixcbiAgICB9KTtcbiAgfSxcbn07XG5cbi8vIExvYWRlclF1ZXJ5OiBUb2tlblxuZXhwb3J0IGNvbnN0IHRva2VuTG9hZGVyUXVlcmllcyA9IHtcbiAgQTogW10sXG59IGFzIGNvbnN0IHNhdGlzZmllcyBQdXJpTG9hZGVyUXVlcmllczxUb2tlblN1YnNldEtleT47XG5cbi8vIERhdGFiYXNlU2NoZW1hXG5kZWNsYXJlIG1vZHVsZSBcInNvbmFtdVwiIHtcbiAgZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZVNjaGVtYUV4dGVuZCB7XG4gICAgcmVxdWVzdF9sb2dzOiBSZXF1ZXN0TG9nQmFzZVNjaGVtYTtcbiAgICB0b2tlbnM6IFRva2VuQmFzZVNjaGVtYTtcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VGb3JlaWduS2V5cyB7fVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQWNBLE1BQWEsMEJBQTBCLEVBQ3JDLElBQUksY0FBaUQ7QUFDbkQsUUFBTyxVQUFVLEtBQUssZUFBZSxDQUFDLE9BQU87RUFDM0MsSUFBSTtFQUNKLFlBQVk7RUFDWixZQUFZO0VBQ1osT0FBTztFQUNQLFVBQVU7RUFDVixjQUFjO0VBQ2QsZUFBZTtFQUNmLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsYUFBYTtFQUNiLFVBQVU7RUFDWCxDQUFDO0dBRUw7QUFHRCxNQUFhLDBCQUEwQixFQUNyQyxHQUFHLEVBQUUsRUFDTjtBQUdELE1BQWEscUJBQXFCLEVBQ2hDLElBQUksY0FBaUQ7QUFDbkQsUUFBTyxVQUFVLEtBQUssU0FBUyxDQUFDLE9BQU87RUFDckMsSUFBSTtFQUNKLFlBQVk7RUFDWixPQUFPO0VBQ1AsTUFBTTtFQUNOLGVBQWU7RUFDZixZQUFZO0VBQ1osY0FBYztFQUNkLFFBQVE7RUFDUixLQUFLO0VBQ04sQ0FBQztHQUVMO0FBR0QsTUFBYSxxQkFBcUIsRUFDaEMsR0FBRyxFQUFFLEVBQ04ifQ==
|
|
@@ -168,6 +168,7 @@ const entityLabels = {
|
|
|
168
168
|
"entity.RequestLog.cache_read_tokens": "캐시 읽기 토큰",
|
|
169
169
|
"entity.RequestLog.cache_creation_tokens": "캐시 생성 토큰",
|
|
170
170
|
"entity.RequestLog.duration_ms": "응답 소요시간(ms)",
|
|
171
|
+
"entity.RequestLog.cost_usd": "API 비용",
|
|
171
172
|
"enum.RequestLogOrderBy.id-desc": "ID최신순",
|
|
172
173
|
"enum.RequestLogSearchField.id": "ID",
|
|
173
174
|
"enum.RequestLogSearchField.token_name": "토큰이름",
|
|
@@ -271,4 +272,4 @@ SD.enumLabels = (enumName) => {
|
|
|
271
272
|
//#endregion
|
|
272
273
|
export { SD, defineLocale, localizedColumn };
|
|
273
274
|
|
|
274
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2QuZ2VuZXJhdGVkLmpzIiwibmFtZXMiOlsia28iLCJlbiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pMThuL3NkLmdlbmVyYXRlZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBnZW5lcmF0ZWRcbiAqIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlxuICovXG5cbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCJzb25hbXVcIjtcblxuY29uc3QgREVGQVVMVF9MT0NBTEUgPSBcImtvXCIgYXMgY29uc3Q7XG5jb25zdCBTVVBQT1JURURfTE9DQUxFUyA9IFtcImtvXCIsIFwiZW5cIl0gYXMgY29uc3Q7XG5mdW5jdGlvbiBnZXRDdXJyZW50TG9jYWxlKCk6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0ge1xuICB0cnkge1xuICAgIGNvbnN0IGN0eCA9IFNvbmFtdS5nZXRDb250ZXh0KCk7XG4gICAgcmV0dXJuIChjdHgubG9jYWxlIGFzICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0pID8/IERFRkFVTFRfTE9DQUxFO1xuICB9IGNhdGNoIChfKSB7XG4gICAgcmV0dXJuIERFRkFVTFRfTE9DQUxFO1xuICB9XG59XG5cbmltcG9ydCBlbiBmcm9tIFwiLi9lblwiO1xuaW1wb3J0IGtvIGZyb20gXCIuL2tvXCI7XG5cbi8vIHJlYWN0LWNvbXBvbmVudHMgaTE4biBrZXlzXG5jb25zdCByY0tleXNLbyA9IHtcbiAgLy8gQXN5bmNTZWxlY3QgQ29tcG9uZW50XG4gIFwicmMuYXN5bmNTZWxlY3QubG9hZGluZ1wiOiBcIuuhnOuUqSDspJEuLi5cIixcbiAgXCJyYy5hc3luY1NlbGVjdC5ub09wdGlvbnNcIjogXCLsmLXshZjsnbQg7JeG7Iq164uI64ukXCIsXG4gIFwicmMuYXN5bmNTZWxlY3Qubm9SZXN1bHRzXCI6IFwi6rKA7IOJIOqysOqzvOqwgCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5hc3luY1NlbGVjdC5zZWxlY3RQbGFjZWhvbGRlclwiOiBcIuyEoO2Dne2VmOyEuOyalC4uLlwiLFxuXG4gIC8vIENvbWJvYm94IENvbXBvbmVudFxuICBcInJjLmNvbWJvYm94Lm5vUmVzdWx0c1wiOiBcIuqygOyDiSDqsrDqs7zqsIAg7JeG7Iq164uI64ukXCIsXG4gIFwicmMuY29tYm9ib3guc2VsZWN0UGxhY2Vob2xkZXJcIjogXCLshKDtg53tlZjshLjsmpQuLi5cIixcblxuICAvLyBEYXRlUGlja2VyIENvbXBvbmVudFxuICBcInJjLmRhdGVQaWNrZXIucGlja0RhdGVcIjogXCLrgqDsp5wg7ISg7YOdXCIsXG4gIFwicmMuZGF0ZVBpY2tlci5wbGFjZWhvbGRlclwiOiBcIuuCoOynnCDshKDtg51cIixcbiAgXCJyYy5kYXRlUGlja2VyLnNlbGVjdERhdGVcIjogXCLrgqDsp5wg7ISg7YOdXCIsXG5cbiAgLy8gRGF0ZVNlbGVjdG9yTXVsdGlwbGUgQ29tcG9uZW50XG4gIFwicmMuZGF0ZVNlbGVjdG9yTXVsdGlwbGUuYWRkRGF0ZVwiOiBcIuuCoOynnCDstpTqsIBcIixcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5kYXRlUmFuZ2VcIjogXCLquLDqsIRcIixcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5wbGFjZWhvbGRlclwiOiBcIuuCoOynnCDshKDtg51cIixcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5zaW5nbGVEYXRlXCI6IFwi64uo7J28XCIsXG5cbiAgLy8gRmlsZUlucHV0IENvbXBvbmVudFxuICBcInJjLmZpbGVJbnB1dC5icm93c2VGaWxlc1wiOiBcIu2MjOydvCDssL7quLBcIixcbiAgXCJyYy5maWxlSW5wdXQuZHJvcFpvbmVcIjogXCLtjIzsnbzsnYQg65Oc656Y6re47ZWY6rGw64KYIO2BtOumre2VmOyXrCDsl4XroZzrk5xcIixcbiAgXCJyYy5maWxlSW5wdXQuZmlsZVBsYWNlaG9sZGVyXCI6IFwi7YyM7J28XCIsXG4gIFwicmMuZmlsZUlucHV0LmltYWdlUGxhY2Vob2xkZXJcIjogXCLsnbTrr7jsp4BcIixcbiAgXCJyYy5maWxlSW5wdXQubWF4RmlsZXNFeGNlZWRlZFwiOiAobWF4RmlsZXM6IG51bWJlcikgPT5cbiAgICBg7LWc64yAICR7bWF4RmlsZXN96rCcIO2MjOydvOunjCDsl4XroZzrk5wg6rCA64ql7ZWp64uI64ukYCxcbiAgXCJyYy5maWxlSW5wdXQucGVuZGluZ1wiOiBcIuuMgOq4sCDspJFcIixcbiAgXCJyYy5maWxlSW5wdXQucmVtb3ZlXCI6IFwi7KCc6rGwXCIsXG4gIFwicmMuZmlsZUlucHV0LnVwbG9hZEZhaWxlZFwiOiBcIuyXheuhnOuTnCDsi6TtjKhcIixcbiAgXCJyYy5maWxlSW5wdXQudXBsb2FkaW5nXCI6IFwi7JeF66Gc65OcIOykkS4uLlwiLFxuXG4gIC8vIE1vbnRoUGlja2VyTXVsdGlwbGUgQ29tcG9uZW50XG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5hZGRNb250aFwiOiBcIuyblCDstpTqsIBcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLmRhdGVSYW5nZVwiOiBcIuq4sOqwhFwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuZW5kRGF0ZVwiOiBcIuyiheujjOydvFwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUucGxhY2Vob2xkZXJcIjogXCLsm5Qg7ISg7YOdXCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5zaW5nbGVEYXRlXCI6IFwi64uo7J28XCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5zdGFydERhdGVcIjogXCLsi5zsnpHsnbxcIixcblxuICAvLyBNdWx0aVNlbGVjdCBDb21wb25lbnRcbiAgXCJyYy5tdWx0aVNlbGVjdC5jbGVhclwiOiBcIuyghOyytCDtlbTsoJxcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5jbG9zZVwiOiBcIuuLq+q4sFwiLFxuICBcInJjLm11bHRpU2VsZWN0Lm1vcmVJdGVtc1wiOiAoY291bnQ6IG51bWJlcikgPT4gYCske2NvdW50feqwnCDrjZTrs7TquLBgLFxuICBcInJjLm11bHRpU2VsZWN0Lm5vT3B0aW9uc1wiOiBcIuyYteyFmOydtCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5ub09wdGlvbnNTZWxlY3RlZFwiOiBcIuyEoO2DneuQnCDsmLXshZjsnbQg7JeG7Iq164uI64ukXCIsXG4gIFwicmMubXVsdGlTZWxlY3Qubm9SZXN1bHRzXCI6IFwi6rKA7IOJIOqysOqzvOqwgCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5vcHRpb25zQ291bnRcIjogKGNvdW50OiBudW1iZXIpID0+IGAke2NvdW50feqwnCDsmLXshZhgLFxuICBcInJjLm11bHRpU2VsZWN0LnNlbGVjdEFsbFwiOiBcIuyghOyytCDshKDtg51cIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5zZWxlY3RQbGFjZWhvbGRlclwiOiBcIuyEoO2Dne2VmOyEuOyalC4uLlwiLFxuXG4gIC8vIFBhZ2luYXRpb24gQ29tcG9uZW50XG4gIFwicmMucGFnaW5hdGlvbi5uZXh0XCI6IFwi64uk7J2MXCIsXG4gIFwicmMucGFnaW5hdGlvbi5wcmV2aW91c1wiOiBcIuydtOyghFwiLFxuICBcInJjLnBhZ2luYXRpb24uc2hvd2luZ1wiOiAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRvdGFsOiBudW1iZXIpID0+XG4gICAgYCR7dG90YWx96rCcIOykkSAke3N0YXJ0fS0ke2VuZH1gLFxuXG4gIC8vIENhbGVuZGFyIENvbXBvbmVudFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjBcIjogXCIx7JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguMVwiOiBcIjLsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4yXCI6IFwiM+yblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjNcIjogXCI07JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguNFwiOiBcIjXsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC41XCI6IFwiNuyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjZcIjogXCI37JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguN1wiOiBcIjjsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC44XCI6IFwiOeyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjlcIjogXCIxMOyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjEwXCI6IFwiMTHsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4xMVwiOiBcIjEy7JuUXCIsXG5cbiAgLy8gU29uYW11IEZpbHRlciBDb21wb25lbnRcbiAgXCJyYy5zb25hbXVGaWx0ZXIudGl0bGVcIjogXCLshozrgpjrrLQg7ZWE7YSwXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmFwcGx5XCI6IFwi7KCB7JqpXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLnJlc2V0XCI6IFwi7LSI6riw7ZmUXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmFkZFJ1bGVcIjogXCLqt5zsuZkg7LaU6rCAXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLm5vUnVsZXNZZXRcIjogJ+yVhOyngSDqt5zsuZnsnbQg7JeG7Iq164uI64ukLiBcIisg6rec7LmZIOy2lOqwgFwi66W8IO2BtOumre2VmOyXrCDsi5zsnpHtlZjshLjsmpQuJyxcbiAgXCJyYy5zb25hbXVGaWx0ZXIuc2VsZWN0RmllbGRcIjogXCLtlYTrk5wg7ISg7YOdXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLnNlbGVjdE9wZXJhdG9yXCI6IFwi7Jew7IKw7J6QIOyEoO2DnVwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5zZWxlY3RPcGVyYXRvckZpcnN0XCI6IFwi66i87KCAIOyXsOyCsOyekOulvCDshKDtg53tlZjshLjsmpRcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuZW50ZXJWYWx1ZVwiOiBcIuqwkiDsnoXroKVcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuZW50ZXJOdW1iZXJcIjogXCLsiKvsnpAg7J6F66ClXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLm5vdFN1cHBvcnRlZFwiOiBcIuyngOybkO2VmOyngCDslYrsnYxcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuc3RhcnREYXRlXCI6IFwi7Iuc7J6R7J28XCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmVuZERhdGVcIjogXCLsooXro4zsnbxcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuYXBwbGllZEZpbHRlcnNcIjogXCLwn4yyIOyggeyaqeuQnCDshozrgpjrrLQg7ZWE7YSwXCIsXG5cbiAgLy8gQ29tbW9uXG4gIFwicmMuY29tbW9uLmNhbmNlbFwiOiBcIuy3qOyGjFwiLFxuICBcInJjLmNvbW1vbi5zYXZlXCI6IFwi7KCA7J6lXCIsXG59O1xuXG5jb25zdCByY0tleXNFbiA9IHtcbiAgLy8gQXN5bmNTZWxlY3QgQ29tcG9uZW50XG4gIFwicmMuYXN5bmNTZWxlY3QubG9hZGluZ1wiOiBcIkxvYWRpbmcuLi5cIixcbiAgXCJyYy5hc3luY1NlbGVjdC5ub09wdGlvbnNcIjogXCJObyBvcHRpb25zXCIsXG4gIFwicmMuYXN5bmNTZWxlY3Qubm9SZXN1bHRzXCI6IFwiTm8gcmVzdWx0c1wiLFxuICBcInJjLmFzeW5jU2VsZWN0LnNlbGVjdFBsYWNlaG9sZGVyXCI6IFwiU2VsZWN0Li4uXCIsXG5cbiAgLy8gQ29tYm9ib3ggQ29tcG9uZW50XG4gIFwicmMuY29tYm9ib3gubm9SZXN1bHRzXCI6IFwiTm8gcmVzdWx0c1wiLFxuICBcInJjLmNvbWJvYm94LnNlbGVjdFBsYWNlaG9sZGVyXCI6IFwiU2VsZWN0Li4uXCIsXG5cbiAgLy8gRGF0ZVBpY2tlciBDb21wb25lbnRcbiAgXCJyYy5kYXRlUGlja2VyLnBpY2tEYXRlXCI6IFwiUGljayBkYXRlXCIsXG4gIFwicmMuZGF0ZVBpY2tlci5wbGFjZWhvbGRlclwiOiBcIlBpY2sgZGF0ZVwiLFxuICBcInJjLmRhdGVQaWNrZXIuc2VsZWN0RGF0ZVwiOiBcIlNlbGVjdCBkYXRlXCIsXG5cbiAgLy8gRGF0ZVNlbGVjdG9yTXVsdGlwbGUgQ29tcG9uZW50XG4gIFwicmMuZGF0ZVNlbGVjdG9yTXVsdGlwbGUuYWRkRGF0ZVwiOiBcIkFkZCBkYXRlXCIsXG4gIFwicmMuZGF0ZVNlbGVjdG9yTXVsdGlwbGUuZGF0ZVJhbmdlXCI6IFwiUmFuZ2VcIixcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5wbGFjZWhvbGRlclwiOiBcIlBpY2sgZGF0ZVwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLnNpbmdsZURhdGVcIjogXCJTaW5nbGVcIixcblxuICAvLyBGaWxlSW5wdXQgQ29tcG9uZW50XG4gIFwicmMuZmlsZUlucHV0LmJyb3dzZUZpbGVzXCI6IFwiQnJvd3NlIGZpbGVzXCIsXG4gIFwicmMuZmlsZUlucHV0LmRyb3Bab25lXCI6IFwiRHJhZyBmaWxlcyBoZXJlIG9yIGNsaWNrIHRvIHVwbG9hZFwiLFxuICBcInJjLmZpbGVJbnB1dC5maWxlUGxhY2Vob2xkZXJcIjogXCJGaWxlXCIsXG4gIFwicmMuZmlsZUlucHV0LmltYWdlUGxhY2Vob2xkZXJcIjogXCJJbWFnZVwiLFxuICBcInJjLmZpbGVJbnB1dC5tYXhGaWxlc0V4Y2VlZGVkXCI6IChtYXhGaWxlczogbnVtYmVyKSA9PiBgTWF4aW11bSAke21heEZpbGVzfSBmaWxlcyBhbGxvd2VkYCxcbiAgXCJyYy5maWxlSW5wdXQucGVuZGluZ1wiOiBcIlBlbmRpbmdcIixcbiAgXCJyYy5maWxlSW5wdXQucmVtb3ZlXCI6IFwiUmVtb3ZlXCIsXG4gIFwicmMuZmlsZUlucHV0LnVwbG9hZEZhaWxlZFwiOiBcIlVwbG9hZCBmYWlsZWRcIixcbiAgXCJyYy5maWxlSW5wdXQudXBsb2FkaW5nXCI6IFwiVXBsb2FkaW5nLi4uXCIsXG5cbiAgLy8gTW9udGhQaWNrZXJNdWx0aXBsZSBDb21wb25lbnRcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLmFkZE1vbnRoXCI6IFwiQWRkIG1vbnRoXCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5kYXRlUmFuZ2VcIjogXCJSYW5nZVwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuZW5kRGF0ZVwiOiBcIkVuZCBkYXRlXCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5wbGFjZWhvbGRlclwiOiBcIlBpY2sgbW9udGhcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLnNpbmdsZURhdGVcIjogXCJTaW5nbGVcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLnN0YXJ0RGF0ZVwiOiBcIlN0YXJ0IGRhdGVcIixcblxuICAvLyBNdWx0aVNlbGVjdCBDb21wb25lbnRcbiAgXCJyYy5tdWx0aVNlbGVjdC5jbGVhclwiOiBcIkNsZWFyIGFsbFwiLFxuICBcInJjLm11bHRpU2VsZWN0LmNsb3NlXCI6IFwiQ2xvc2VcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5tb3JlSXRlbXNcIjogKGNvdW50OiBudW1iZXIpID0+IGArJHtjb3VudH0gbW9yZWAsXG4gIFwicmMubXVsdGlTZWxlY3Qubm9PcHRpb25zXCI6IFwiTm8gb3B0aW9uc1wiLFxuICBcInJjLm11bHRpU2VsZWN0Lm5vT3B0aW9uc1NlbGVjdGVkXCI6IFwiTm8gb3B0aW9ucyBzZWxlY3RlZFwiLFxuICBcInJjLm11bHRpU2VsZWN0Lm5vUmVzdWx0c1wiOiBcIk5vIHJlc3VsdHNcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5vcHRpb25zQ291bnRcIjogKGNvdW50OiBudW1iZXIpID0+IGAke2NvdW50fSBvcHRpb25zYCxcbiAgXCJyYy5tdWx0aVNlbGVjdC5zZWxlY3RBbGxcIjogXCJTZWxlY3QgYWxsXCIsXG4gIFwicmMubXVsdGlTZWxlY3Quc2VsZWN0UGxhY2Vob2xkZXJcIjogXCJTZWxlY3QuLi5cIixcblxuICAvLyBQYWdpbmF0aW9uIENvbXBvbmVudFxuICBcInJjLnBhZ2luYXRpb24ubmV4dFwiOiBcIk5leHRcIixcbiAgXCJyYy5wYWdpbmF0aW9uLnByZXZpb3VzXCI6IFwiUHJldmlvdXNcIixcbiAgXCJyYy5wYWdpbmF0aW9uLnNob3dpbmdcIjogKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCB0b3RhbDogbnVtYmVyKSA9PlxuICAgIGBTaG93aW5nICR7c3RhcnR9LSR7ZW5kfSBvZiAke3RvdGFsfWAsXG5cbiAgLy8gQ2FsZW5kYXIgQ29tcG9uZW50XG4gIFwicmMuY2FsZW5kYXIubW9udGguMFwiOiBcIkphbnVhcnlcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4xXCI6IFwiRmVicnVhcnlcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4yXCI6IFwiTWFyY2hcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4zXCI6IFwiQXByaWxcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC40XCI6IFwiTWF5XCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguNVwiOiBcIkp1bmVcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC42XCI6IFwiSnVseVwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjdcIjogXCJBdWd1c3RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC44XCI6IFwiU2VwdGVtYmVyXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguOVwiOiBcIk9jdG9iZXJcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4xMFwiOiBcIk5vdmVtYmVyXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguMTFcIjogXCJEZWNlbWJlclwiLFxuXG4gIC8vIFNvbmFtdSBGaWx0ZXIgQ29tcG9uZW50XG4gIFwicmMuc29uYW11RmlsdGVyLnRpdGxlXCI6IFwiU29uYW11IEZpbHRlclwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5hcHBseVwiOiBcIkFwcGx5XCIsXG4gIFwicmMuc29uYW11RmlsdGVyLnJlc2V0XCI6IFwiUmVzZXRcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuYWRkUnVsZVwiOiBcIkFkZCBSdWxlXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLm5vUnVsZXNZZXRcIjogJ05vIHJ1bGVzIHlldC4gQ2xpY2sgXCIrIEFkZCBSdWxlXCIgdG8gc3RhcnQuJyxcbiAgXCJyYy5zb25hbXVGaWx0ZXIuc2VsZWN0RmllbGRcIjogXCJTZWxlY3QgZmllbGRcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuc2VsZWN0T3BlcmF0b3JcIjogXCJPcGVyYXRvclwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5zZWxlY3RPcGVyYXRvckZpcnN0XCI6IFwiU2VsZWN0IG9wZXJhdG9yIGZpcnN0XCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmVudGVyVmFsdWVcIjogXCJFbnRlciB2YWx1ZVwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5lbnRlck51bWJlclwiOiBcIkVudGVyIG51bWJlclwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5ub3RTdXBwb3J0ZWRcIjogXCJOb3Qgc3VwcG9ydGVkXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLnN0YXJ0RGF0ZVwiOiBcIlN0YXJ0IGRhdGVcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuZW5kRGF0ZVwiOiBcIkVuZCBkYXRlXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmFwcGxpZWRGaWx0ZXJzXCI6IFwi8J+MsiBBcHBsaWVkIFNvbmFtdUZpbHRlcnNcIixcblxuICAvLyBDb21tb25cbiAgXCJyYy5jb21tb24uY2FuY2VsXCI6IFwiQ2FuY2VsXCIsXG4gIFwicmMuY29tbW9uLnNhdmVcIjogXCJTYXZlXCIsXG59IGFzIGNvbnN0O1xuXG4vLyBlbnRpdHkuanNvbuyXkOyEnCDstpTstpztlZwgZW50aXR5IGxhYmVscyAoZGVmYXVsdExvY2FsZSDsoITsmqkpXG5jb25zdCBlbnRpdHlMYWJlbHMgPSB7XG4gIFwiZW50aXR5LlJlcXVlc3RMb2dcIjogXCJSZXF1ZXN0TG9nXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuaWRcIjogXCJJRFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNyZWF0ZWRfYXRcIjogXCLrk7HroZ3snbzsi5xcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy50b2tlbl9uYW1lXCI6IFwi7Yag7YGwIOydtOumhFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnF1ZXJ5XCI6IFwicHJvbXB0IOyghOusuFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnJlc3BvbnNlXCI6IFwibGxtIOydkeuLtSDsoITrrLhcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5pbnB1dF90b2tlbnNcIjogXCLsnoXroKUg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cub3V0cHV0X3Rva2Vuc1wiOiBcIuy2nOugpSDthqDtgbBcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5jYWNoZV9yZWFkX3Rva2Vuc1wiOiBcIuy6kOyLnCDsnb3quLAg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuY2FjaGVfY3JlYXRpb25fdG9rZW5zXCI6IFwi7LqQ7IucIOyDneyEsSDthqDtgbBcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5kdXJhdGlvbl9tc1wiOiBcIuydkeuLtSDshozsmpTsi5zqsIQobXMpXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nT3JkZXJCeS5pZC1kZXNjXCI6IFwiSUTstZzsi6DsiJxcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dTZWFyY2hGaWVsZC5pZFwiOiBcIklEXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU2VhcmNoRmllbGQudG9rZW5fbmFtZVwiOiBcIu2GoO2BsOydtOumhFwiLFxuICBcImVudW0uUmVxdWVzdExvZ1NlYXJjaEZpZWxkLnF1ZXJ5XCI6IFwi7L+866asXCIsXG4gIFwiZW50aXR5LlRva2VuXCI6IFwiVG9rZW5cIixcbiAgXCJlbnRpdHkuVG9rZW4uaWRcIjogXCJJRFwiLFxuICBcImVudGl0eS5Ub2tlbi5jcmVhdGVkX2F0XCI6IFwi65Ox66Gd7J287IucXCIsXG4gIFwiZW50aXR5LlRva2VuLnRva2VuXCI6IFwiYWNjZXNzX3Rva2VuXCIsXG4gIFwiZW50aXR5LlRva2VuLm5hbWVcIjogXCLthqDtgbAg7J2066aEXCIsXG4gIFwiZW50aXR5LlRva2VuLnJlZnJlc2hfdG9rZW5cIjogXCJyZWZyZXNoX3Rva2VuXCIsXG4gIFwiZW50aXR5LlRva2VuLmV4cGlyZXNfYXRcIjogXCLrp4zro4wg7Iuc6rCBIChlcG9jaCBtcylcIixcbiAgXCJlbnRpdHkuVG9rZW4uYWNjb3VudF91dWlkXCI6IFwiQW50aHJvcGljIOqzhOyglSBVVUlEXCIsXG4gIFwiZW50aXR5LlRva2VuLmFjdGl2ZVwiOiBcIu2ZnOyEsSDsl6zrtoBcIixcbiAgXCJlbnRpdHkuVG9rZW4ub3JkXCI6IFwi7KCV66CsIOyInOyEnFwiLFxuICBcImVudW0uVG9rZW5PcmRlckJ5LmlkLWRlc2NcIjogXCJJROy1nOyLoOyInFwiLFxuICBcImVudW0uVG9rZW5PcmRlckJ5Lm9yZC1hc2NcIjogXCLsiJzshJzsiJxcIixcbiAgXCJlbnVtLlRva2VuU2VhcmNoRmllbGQuaWRcIjogXCJJRFwiLFxuICBcImVudW0uVG9rZW5TZWFyY2hGaWVsZC5uYW1lXCI6IFwi7J2066aEXCIsXG59IGFzIGNvbnN0O1xuXG4vLyBkZWZhdWx0TG9jYWxl7J2YIGRpY3Rpb25hcnnrpbwg6riw7KSA7Jy866GcIO2CpCDstpTstpxcbnR5cGUgUkNLZXlzID0gdHlwZW9mIHJjS2V5c0tvO1xudHlwZSBQcm9qZWN0RGljdGlvbmFyeSA9IHR5cGVvZiBrbztcbnR5cGUgRW50aXR5TGFiZWxzID0gdHlwZW9mIGVudGl0eUxhYmVscztcbnR5cGUgUmF3TWVyZ2VkRGljdGlvbmFyeSA9IFJDS2V5cyAmXG4gIE9taXQ8RW50aXR5TGFiZWxzLCBrZXlvZiAoUkNLZXlzICYgUHJvamVjdERpY3Rpb25hcnkpPiAmXG4gIFByb2plY3REaWN0aW9uYXJ5O1xuXG4vLyDtgqTripQg7Jyg7KeA7ZWY65CYLCDqsJIg7YOA7J6F7J2AIHN0cmluZyDrmJDripQg7ZWo7IiY66GcIOydvOuwmO2ZlCAo64uk66W4IGxvY2FsZeydmCDrpqzthLDrn7Qg7YOA7J6FIOy2qeuPjCDrsKnsp4ApXG5leHBvcnQgdHlwZSBNZXJnZWREaWN0aW9uYXJ5ID0ge1xuICBbSyBpbiBrZXlvZiBSYXdNZXJnZWREaWN0aW9uYXJ5XTogUmF3TWVyZ2VkRGljdGlvbmFyeVtLXSBleHRlbmRzICguLi5hcmdzOiBpbmZlciBQKSA9PiBzdHJpbmdcbiAgICA/ICguLi5hcmdzOiBQKSA9PiBzdHJpbmdcbiAgICA6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBEaWN0S2V5ID0ga2V5b2YgTWVyZ2VkRGljdGlvbmFyeTtcbmV4cG9ydCB0eXBlIExvY2FsaXplZFN0cmluZyA9IHN0cmluZyAmIHsgX19icmFuZDogXCJMb2NhbGl6ZWRTdHJpbmdcIiB9O1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lTG9jYWxlKGRpY3Q6IFBhcnRpYWw8TWVyZ2VkRGljdGlvbmFyeT4pIHtcbiAgcmV0dXJuIGRpY3Q7XG59XG5cbi8vIOqwgSBsb2NhbGXrs4TroZwgcmMta2V5cyArIGVudGl0eSBsYWJlbHMgKyDtlITroZzsoJ3tirggZGljdCDtlansuahcbmNvbnN0IGRpY3Rpb25hcmllczogUmVjb3JkPHN0cmluZywgUGFydGlhbDxNZXJnZWREaWN0aW9uYXJ5Pj4gPSB7XG4gIGtvOiB7IC4uLnJjS2V5c0tvLCAuLi5lbnRpdHlMYWJlbHMsIC4uLmtvIH0sXG4gIGVuOiB7IC4uLnJjS2V5c0VuLCAuLi5lbiB9LFxufTtcblxudHlwZSBTRFJldHVyblR5cGU8SyBleHRlbmRzIERpY3RLZXk+ID0gTWVyZ2VkRGljdGlvbmFyeVtLXSBleHRlbmRzICguLi5hcmdzOiBpbmZlciBQKSA9PiBzdHJpbmdcbiAgPyAoLi4uYXJnczogUCkgPT4gTG9jYWxpemVkU3RyaW5nXG4gIDogTG9jYWxpemVkU3RyaW5nO1xuXG5mdW5jdGlvbiBnZXREaWN0VmFsdWU8SyBleHRlbmRzIERpY3RLZXk+KGtleTogSywgbG9jYWxlOiBzdHJpbmcpOiBTRFJldHVyblR5cGU8Sz4ge1xuICAvLyAxLiDsp4DsoJXrkJwgbG9jYWxl7JeQ7IScIOyhsO2ajFxuICBjb25zdCBkaWN0ID0gZGljdGlvbmFyaWVzW2xvY2FsZV07XG4gIGlmIChkaWN0Py5ba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGRpY3Rba2V5XSBhcyB1bmtub3duIGFzIFNEUmV0dXJuVHlwZTxLPjtcbiAgfVxuXG4gIC8vIDIuIGRlZmF1bHQgbG9jYWxl7JeQ7IScIOyhsO2ajFxuICBpZiAobG9jYWxlICE9PSBERUZBVUxUX0xPQ0FMRSAmJiBkaWN0aW9uYXJpZXNbREVGQVVMVF9MT0NBTEVdPy5ba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGRpY3Rpb25hcmllc1tERUZBVUxUX0xPQ0FMRV1ba2V5XSBhcyB1bmtub3duIGFzIFNEUmV0dXJuVHlwZTxLPjtcbiAgfVxuXG4gIC8vIDMuIHN1cHBvcnRlZCBsb2NhbGVzIOyInO2ajFxuICBmb3IgKGNvbnN0IHN1cHBvcnRlZExvY2FsZSBvZiBTVVBQT1JURURfTE9DQUxFUykge1xuICAgIGlmIChzdXBwb3J0ZWRMb2NhbGUgIT09IGxvY2FsZSAmJiBzdXBwb3J0ZWRMb2NhbGUgIT09IERFRkFVTFRfTE9DQUxFKSB7XG4gICAgICBpZiAoZGljdGlvbmFyaWVzW3N1cHBvcnRlZExvY2FsZV0/LltrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGRpY3Rpb25hcmllc1tzdXBwb3J0ZWRMb2NhbGVdW2tleV0gYXMgdW5rbm93biBhcyBTRFJldHVyblR5cGU8Sz47XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gNC4g66qo65GQIOyLpO2MqCDsi5wga2V5IOuwmO2ZmFxuICByZXR1cm4ga2V5IGFzIHVua25vd24gYXMgU0RSZXR1cm5UeXBlPEs+O1xufVxuXG4vKipcbiAqIFNvbmFtdSBEaWN0aW9uYXJ5IO2VqOyImFxuICogbG9jYWxl7JeQIOunnuuKlCDrsojsl60g7YWN7Iqk7Yq466W8IOuwmO2ZmO2VqeuLiOuLpC5cbiAqXG4gKiBAZXhhbXBsZVxuICogU0QoXCJjb21tb24uc2F2ZVwiKSAgLy8g4oaSIFwi7KCA7J6lXCIgKExvY2FsaXplZFN0cmluZylcbiAqIFNEKFwidXNlci5ub3RGb3VuZFwiKSgxKSAgLy8g4oaSIFwi7KG07J6s7ZWY7KeAIOyViuuKlCBVc2VyIElEIDFcIiAoTG9jYWxpemVkU3RyaW5nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gU0Q8SyBleHRlbmRzIERpY3RLZXk+KGtleTogSyk6IFNEUmV0dXJuVHlwZTxLPiB7XG4gIGNvbnN0IGxvY2FsZSA9IGdldEN1cnJlbnRMb2NhbGUoKTtcbiAgcmV0dXJuIGdldERpY3RWYWx1ZShrZXksIGxvY2FsZSk7XG59XG5cbi8qKlxuICog7Yq57KCVIGxvY2FsZeydmCDrsojsl60g7YWN7Iqk7Yq466W8IOuwmO2ZmO2VmOuKlCDtlajsiJjrpbwg7IOd7ISx7ZWp64uI64ukLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBFTiA9IFNELmxvY2FsZShcImVuXCIpO1xuICogRU4oXCJjb21tb24uc2F2ZVwiKSAgLy8g4oaSIFwiU2F2ZVwiXG4gKi9cblNELmxvY2FsZSA9XG4gIChsb2NhbGU6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0pID0+XG4gIDxLIGV4dGVuZHMgRGljdEtleT4oa2V5OiBLKTogU0RSZXR1cm5UeXBlPEs+ID0+IHtcbiAgICByZXR1cm4gZ2V0RGljdFZhbHVlKGtleSwgbG9jYWxlKTtcbiAgfTtcblxuLy8gTG9jYWxpemVkIOqwgOuKpe2VnCBDb2x1bW4g7YOA7J6FIOqzhOyCsFxudHlwZSBMb2NhbGl6ZWRCYXNlQ29sdW1uPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUICYgc3RyaW5nXTogSyBleHRlbmRzIGAke2luZmVyIEJhc2V9XyR7KHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXX1gXG4gICAgPyBCYXNlXG4gICAgOiBLO1xufVtrZXlvZiBUICYgc3RyaW5nXTtcblxuLyoqXG4gKiBsb2NhbGXsl5Ag65Sw6528IOyggeygiO2VnCDsu6zrn7wg6rCS7J2EIOuwmO2ZmO2VqeuLiOuLpC5cbiAqIERC7JeQIG5hbWUsIG5hbWVfa28sIG5hbWVfZW7sspjrn7wgbG9jYWxpemVkIGNvbHVtbuydtCDsnojsnYQg65WMIOyCrOyaqe2VqeuLiOuLpC5cbiAqXG4gKiDsmrDshKDsiJzsnIQgKOyngOybkCDroZzsvIDsnbzsnYAga28vanAvZW7snbTqs6AsIOyEnOu5hOyKpOydmCDquLDrs7gg66Gc7LyA7J287J2AIGtvLCDsgqzsmqnsnpDsnZgg66Gc7LyA7J287J2AIGpw7J28IOuVjCk6IGNvbHVtbl9qcCDihpIgY29sdW1uIOKGkiBjb2x1bW5fa28g4oaSIGNvbHVtbl9lblxuICog7Jqw7ISg7Iic7JyEICjsp4Dsm5Ag66Gc7LyA7J287J2AIGtvL2pwL2Vu7J206rOgLCDshJzruYTsiqTsnZgg6riw67O4IOuhnOy8gOydvOydgCBlbiwg7IKs7Jqp7J6Q7J2YIOuhnOy8gOydvOydgCBrb+ydvCDrlYwpOiBjb2x1bW5fa28g4oaSIGNvbHVtbiDihpIgY29sdW1uX2VuIOKGkiBjb2x1bW5fanBcbiAqXG4gKiBAZXhhbXBsZVxuICogbG9jYWxpemVkQ29sdW1uKHRhZywgXCJuYW1lXCIpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbGl6ZWRDb2x1bW48XG4gIFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgSyBleHRlbmRzIExvY2FsaXplZEJhc2VDb2x1bW48VD4sXG4+KHJvdzogVCwgY29sdW1uOiBLKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbG9jYWxlID0gZ2V0Q3VycmVudExvY2FsZSgpO1xuICBjb25zdCBvdGhlckxvY2FsZXMgPSBTVVBQT1JURURfTE9DQUxFUy5maWx0ZXIoXG4gICAgKGw6IHN0cmluZykgPT4gbCAhPT0gbG9jYWxlICYmIGwgIT09IERFRkFVTFRfTE9DQUxFLFxuICApO1xuICBjb25zdCBsb2NhbGl6ZWRLZXkgPSAoY29sdW1uOiBLLCBsb2NhbGU6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0pID0+XG4gICAgYCR7Y29sdW1ufV8ke2xvY2FsZX1gO1xuICBjb25zdCBrZXlzID0gW1xuICAgIGxvY2FsaXplZEtleShjb2x1bW4sIGxvY2FsZSksXG4gICAgY29sdW1uLFxuICAgIGxvY2FsaXplZEtleShjb2x1bW4sIERFRkFVTFRfTE9DQUxFKSxcbiAgICAuLi5vdGhlckxvY2FsZXMubWFwKChsKSA9PiBsb2NhbGl6ZWRLZXkoY29sdW1uLCBsKSksXG4gIF07XG5cbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIGlmICghKGtleSBpbiByb3cpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAocm93W2tleV0gIT09IG51bGwgJiYgcm93W2tleV0gIT09IHVuZGVmaW5lZCAmJiByb3dba2V5XSAhPT0gXCJcIikge1xuICAgICAgcmV0dXJuIFN0cmluZyhyb3dba2V5XSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBFbnVt7J2YIGxvY2FsaXplZCBsYWJlbHPrpbwgUHJveHnroZwg67CY7ZmY7ZWp64uI64ukLlxuICogU2VsZWN0IOy7tO2PrOuEjO2KuCDrk7Hsl5DshJwgRW51bUxhYmVsW2tleV0g64yA7IugIOyCrOyaqe2VqeuLiOuLpC5cbiAqXG4gKiBAZXhhbXBsZVxuICogU0QuZW51bUxhYmVscyhcIlRhZ09yZGVyQnlcIilba2V5XSAgLy8g4oaSIO2YhOyerCBsb2NhbGXsnZgg652867KoXG4gKi9cblNELmVudW1MYWJlbHMgPSAoZW51bU5hbWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIExvY2FsaXplZFN0cmluZz4gPT4ge1xuICByZXR1cm4gbmV3IFByb3h5KHt9IGFzIFJlY29yZDxzdHJpbmcsIExvY2FsaXplZFN0cmluZz4sIHtcbiAgICBnZXQoXywga2V5OiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IGRpY3RLZXkgPSBgZW51bS4ke2VudW1OYW1lfS4ke2tleX1gIGFzIERpY3RLZXk7XG4gICAgICByZXR1cm4gZ2V0RGljdFZhbHVlKGRpY3RLZXksIGdldEN1cnJlbnRMb2NhbGUoKSk7XG4gICAgfSxcbiAgfSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFPQSxNQUFNLGlCQUFp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
|
|
275
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2QuZ2VuZXJhdGVkLmpzIiwibmFtZXMiOlsia28iLCJlbiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pMThuL3NkLmdlbmVyYXRlZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBnZW5lcmF0ZWRcbiAqIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlxuICovXG5cbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCJzb25hbXVcIjtcblxuY29uc3QgREVGQVVMVF9MT0NBTEUgPSBcImtvXCIgYXMgY29uc3Q7XG5jb25zdCBTVVBQT1JURURfTE9DQUxFUyA9IFtcImtvXCIsIFwiZW5cIl0gYXMgY29uc3Q7XG5mdW5jdGlvbiBnZXRDdXJyZW50TG9jYWxlKCk6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0ge1xuICB0cnkge1xuICAgIGNvbnN0IGN0eCA9IFNvbmFtdS5nZXRDb250ZXh0KCk7XG4gICAgcmV0dXJuIChjdHgubG9jYWxlIGFzICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0pID8/IERFRkFVTFRfTE9DQUxFO1xuICB9IGNhdGNoIChfKSB7XG4gICAgcmV0dXJuIERFRkFVTFRfTE9DQUxFO1xuICB9XG59XG5cbmltcG9ydCBlbiBmcm9tIFwiLi9lblwiO1xuaW1wb3J0IGtvIGZyb20gXCIuL2tvXCI7XG5cbi8vIHJlYWN0LWNvbXBvbmVudHMgaTE4biBrZXlzXG5jb25zdCByY0tleXNLbyA9IHtcbiAgLy8gQXN5bmNTZWxlY3QgQ29tcG9uZW50XG4gIFwicmMuYXN5bmNTZWxlY3QubG9hZGluZ1wiOiBcIuuhnOuUqSDspJEuLi5cIixcbiAgXCJyYy5hc3luY1NlbGVjdC5ub09wdGlvbnNcIjogXCLsmLXshZjsnbQg7JeG7Iq164uI64ukXCIsXG4gIFwicmMuYXN5bmNTZWxlY3Qubm9SZXN1bHRzXCI6IFwi6rKA7IOJIOqysOqzvOqwgCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5hc3luY1NlbGVjdC5zZWxlY3RQbGFjZWhvbGRlclwiOiBcIuyEoO2Dne2VmOyEuOyalC4uLlwiLFxuXG4gIC8vIENvbWJvYm94IENvbXBvbmVudFxuICBcInJjLmNvbWJvYm94Lm5vUmVzdWx0c1wiOiBcIuqygOyDiSDqsrDqs7zqsIAg7JeG7Iq164uI64ukXCIsXG4gIFwicmMuY29tYm9ib3guc2VsZWN0UGxhY2Vob2xkZXJcIjogXCLshKDtg53tlZjshLjsmpQuLi5cIixcblxuICAvLyBEYXRlUGlja2VyIENvbXBvbmVudFxuICBcInJjLmRhdGVQaWNrZXIucGlja0RhdGVcIjogXCLrgqDsp5wg7ISg7YOdXCIsXG4gIFwicmMuZGF0ZVBpY2tlci5wbGFjZWhvbGRlclwiOiBcIuuCoOynnCDshKDtg51cIixcbiAgXCJyYy5kYXRlUGlja2VyLnNlbGVjdERhdGVcIjogXCLrgqDsp5wg7ISg7YOdXCIsXG5cbiAgLy8gRGF0ZVNlbGVjdG9yTXVsdGlwbGUgQ29tcG9uZW50XG4gIFwicmMuZGF0ZVNlbGVjdG9yTXVsdGlwbGUuYWRkRGF0ZVwiOiBcIuuCoOynnCDstpTqsIBcIixcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5kYXRlUmFuZ2VcIjogXCLquLDqsIRcIixcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5wbGFjZWhvbGRlclwiOiBcIuuCoOynnCDshKDtg51cIixcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5zaW5nbGVEYXRlXCI6IFwi64uo7J28XCIsXG5cbiAgLy8gRmlsZUlucHV0IENvbXBvbmVudFxuICBcInJjLmZpbGVJbnB1dC5icm93c2VGaWxlc1wiOiBcIu2MjOydvCDssL7quLBcIixcbiAgXCJyYy5maWxlSW5wdXQuZHJvcFpvbmVcIjogXCLtjIzsnbzsnYQg65Oc656Y6re47ZWY6rGw64KYIO2BtOumre2VmOyXrCDsl4XroZzrk5xcIixcbiAgXCJyYy5maWxlSW5wdXQuZmlsZVBsYWNlaG9sZGVyXCI6IFwi7YyM7J28XCIsXG4gIFwicmMuZmlsZUlucHV0LmltYWdlUGxhY2Vob2xkZXJcIjogXCLsnbTrr7jsp4BcIixcbiAgXCJyYy5maWxlSW5wdXQubWF4RmlsZXNFeGNlZWRlZFwiOiAobWF4RmlsZXM6IG51bWJlcikgPT5cbiAgICBg7LWc64yAICR7bWF4RmlsZXN96rCcIO2MjOydvOunjCDsl4XroZzrk5wg6rCA64ql7ZWp64uI64ukYCxcbiAgXCJyYy5maWxlSW5wdXQucGVuZGluZ1wiOiBcIuuMgOq4sCDspJFcIixcbiAgXCJyYy5maWxlSW5wdXQucmVtb3ZlXCI6IFwi7KCc6rGwXCIsXG4gIFwicmMuZmlsZUlucHV0LnVwbG9hZEZhaWxlZFwiOiBcIuyXheuhnOuTnCDsi6TtjKhcIixcbiAgXCJyYy5maWxlSW5wdXQudXBsb2FkaW5nXCI6IFwi7JeF66Gc65OcIOykkS4uLlwiLFxuXG4gIC8vIE1vbnRoUGlja2VyTXVsdGlwbGUgQ29tcG9uZW50XG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5hZGRNb250aFwiOiBcIuyblCDstpTqsIBcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLmRhdGVSYW5nZVwiOiBcIuq4sOqwhFwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuZW5kRGF0ZVwiOiBcIuyiheujjOydvFwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUucGxhY2Vob2xkZXJcIjogXCLsm5Qg7ISg7YOdXCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5zaW5nbGVEYXRlXCI6IFwi64uo7J28XCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5zdGFydERhdGVcIjogXCLsi5zsnpHsnbxcIixcblxuICAvLyBNdWx0aVNlbGVjdCBDb21wb25lbnRcbiAgXCJyYy5tdWx0aVNlbGVjdC5jbGVhclwiOiBcIuyghOyytCDtlbTsoJxcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5jbG9zZVwiOiBcIuuLq+q4sFwiLFxuICBcInJjLm11bHRpU2VsZWN0Lm1vcmVJdGVtc1wiOiAoY291bnQ6IG51bWJlcikgPT4gYCske2NvdW50feqwnCDrjZTrs7TquLBgLFxuICBcInJjLm11bHRpU2VsZWN0Lm5vT3B0aW9uc1wiOiBcIuyYteyFmOydtCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5ub09wdGlvbnNTZWxlY3RlZFwiOiBcIuyEoO2DneuQnCDsmLXshZjsnbQg7JeG7Iq164uI64ukXCIsXG4gIFwicmMubXVsdGlTZWxlY3Qubm9SZXN1bHRzXCI6IFwi6rKA7IOJIOqysOqzvOqwgCDsl4bsirXri4jri6RcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5vcHRpb25zQ291bnRcIjogKGNvdW50OiBudW1iZXIpID0+IGAke2NvdW50feqwnCDsmLXshZhgLFxuICBcInJjLm11bHRpU2VsZWN0LnNlbGVjdEFsbFwiOiBcIuyghOyytCDshKDtg51cIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5zZWxlY3RQbGFjZWhvbGRlclwiOiBcIuyEoO2Dne2VmOyEuOyalC4uLlwiLFxuXG4gIC8vIFBhZ2luYXRpb24gQ29tcG9uZW50XG4gIFwicmMucGFnaW5hdGlvbi5uZXh0XCI6IFwi64uk7J2MXCIsXG4gIFwicmMucGFnaW5hdGlvbi5wcmV2aW91c1wiOiBcIuydtOyghFwiLFxuICBcInJjLnBhZ2luYXRpb24uc2hvd2luZ1wiOiAoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRvdGFsOiBudW1iZXIpID0+XG4gICAgYCR7dG90YWx96rCcIOykkSAke3N0YXJ0fS0ke2VuZH1gLFxuXG4gIC8vIENhbGVuZGFyIENvbXBvbmVudFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjBcIjogXCIx7JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguMVwiOiBcIjLsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4yXCI6IFwiM+yblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjNcIjogXCI07JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguNFwiOiBcIjXsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC41XCI6IFwiNuyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjZcIjogXCI37JuUXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguN1wiOiBcIjjsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC44XCI6IFwiOeyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjlcIjogXCIxMOyblFwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjEwXCI6IFwiMTHsm5RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4xMVwiOiBcIjEy7JuUXCIsXG5cbiAgLy8gU29uYW11IEZpbHRlciBDb21wb25lbnRcbiAgXCJyYy5zb25hbXVGaWx0ZXIudGl0bGVcIjogXCLshozrgpjrrLQg7ZWE7YSwXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmFwcGx5XCI6IFwi7KCB7JqpXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLnJlc2V0XCI6IFwi7LSI6riw7ZmUXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmFkZFJ1bGVcIjogXCLqt5zsuZkg7LaU6rCAXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLm5vUnVsZXNZZXRcIjogJ+yVhOyngSDqt5zsuZnsnbQg7JeG7Iq164uI64ukLiBcIisg6rec7LmZIOy2lOqwgFwi66W8IO2BtOumre2VmOyXrCDsi5zsnpHtlZjshLjsmpQuJyxcbiAgXCJyYy5zb25hbXVGaWx0ZXIuc2VsZWN0RmllbGRcIjogXCLtlYTrk5wg7ISg7YOdXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLnNlbGVjdE9wZXJhdG9yXCI6IFwi7Jew7IKw7J6QIOyEoO2DnVwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5zZWxlY3RPcGVyYXRvckZpcnN0XCI6IFwi66i87KCAIOyXsOyCsOyekOulvCDshKDtg53tlZjshLjsmpRcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuZW50ZXJWYWx1ZVwiOiBcIuqwkiDsnoXroKVcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuZW50ZXJOdW1iZXJcIjogXCLsiKvsnpAg7J6F66ClXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLm5vdFN1cHBvcnRlZFwiOiBcIuyngOybkO2VmOyngCDslYrsnYxcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuc3RhcnREYXRlXCI6IFwi7Iuc7J6R7J28XCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmVuZERhdGVcIjogXCLsooXro4zsnbxcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuYXBwbGllZEZpbHRlcnNcIjogXCLwn4yyIOyggeyaqeuQnCDshozrgpjrrLQg7ZWE7YSwXCIsXG5cbiAgLy8gQ29tbW9uXG4gIFwicmMuY29tbW9uLmNhbmNlbFwiOiBcIuy3qOyGjFwiLFxuICBcInJjLmNvbW1vbi5zYXZlXCI6IFwi7KCA7J6lXCIsXG59O1xuXG5jb25zdCByY0tleXNFbiA9IHtcbiAgLy8gQXN5bmNTZWxlY3QgQ29tcG9uZW50XG4gIFwicmMuYXN5bmNTZWxlY3QubG9hZGluZ1wiOiBcIkxvYWRpbmcuLi5cIixcbiAgXCJyYy5hc3luY1NlbGVjdC5ub09wdGlvbnNcIjogXCJObyBvcHRpb25zXCIsXG4gIFwicmMuYXN5bmNTZWxlY3Qubm9SZXN1bHRzXCI6IFwiTm8gcmVzdWx0c1wiLFxuICBcInJjLmFzeW5jU2VsZWN0LnNlbGVjdFBsYWNlaG9sZGVyXCI6IFwiU2VsZWN0Li4uXCIsXG5cbiAgLy8gQ29tYm9ib3ggQ29tcG9uZW50XG4gIFwicmMuY29tYm9ib3gubm9SZXN1bHRzXCI6IFwiTm8gcmVzdWx0c1wiLFxuICBcInJjLmNvbWJvYm94LnNlbGVjdFBsYWNlaG9sZGVyXCI6IFwiU2VsZWN0Li4uXCIsXG5cbiAgLy8gRGF0ZVBpY2tlciBDb21wb25lbnRcbiAgXCJyYy5kYXRlUGlja2VyLnBpY2tEYXRlXCI6IFwiUGljayBkYXRlXCIsXG4gIFwicmMuZGF0ZVBpY2tlci5wbGFjZWhvbGRlclwiOiBcIlBpY2sgZGF0ZVwiLFxuICBcInJjLmRhdGVQaWNrZXIuc2VsZWN0RGF0ZVwiOiBcIlNlbGVjdCBkYXRlXCIsXG5cbiAgLy8gRGF0ZVNlbGVjdG9yTXVsdGlwbGUgQ29tcG9uZW50XG4gIFwicmMuZGF0ZVNlbGVjdG9yTXVsdGlwbGUuYWRkRGF0ZVwiOiBcIkFkZCBkYXRlXCIsXG4gIFwicmMuZGF0ZVNlbGVjdG9yTXVsdGlwbGUuZGF0ZVJhbmdlXCI6IFwiUmFuZ2VcIixcbiAgXCJyYy5kYXRlU2VsZWN0b3JNdWx0aXBsZS5wbGFjZWhvbGRlclwiOiBcIlBpY2sgZGF0ZVwiLFxuICBcInJjLmRhdGVTZWxlY3Rvck11bHRpcGxlLnNpbmdsZURhdGVcIjogXCJTaW5nbGVcIixcblxuICAvLyBGaWxlSW5wdXQgQ29tcG9uZW50XG4gIFwicmMuZmlsZUlucHV0LmJyb3dzZUZpbGVzXCI6IFwiQnJvd3NlIGZpbGVzXCIsXG4gIFwicmMuZmlsZUlucHV0LmRyb3Bab25lXCI6IFwiRHJhZyBmaWxlcyBoZXJlIG9yIGNsaWNrIHRvIHVwbG9hZFwiLFxuICBcInJjLmZpbGVJbnB1dC5maWxlUGxhY2Vob2xkZXJcIjogXCJGaWxlXCIsXG4gIFwicmMuZmlsZUlucHV0LmltYWdlUGxhY2Vob2xkZXJcIjogXCJJbWFnZVwiLFxuICBcInJjLmZpbGVJbnB1dC5tYXhGaWxlc0V4Y2VlZGVkXCI6IChtYXhGaWxlczogbnVtYmVyKSA9PiBgTWF4aW11bSAke21heEZpbGVzfSBmaWxlcyBhbGxvd2VkYCxcbiAgXCJyYy5maWxlSW5wdXQucGVuZGluZ1wiOiBcIlBlbmRpbmdcIixcbiAgXCJyYy5maWxlSW5wdXQucmVtb3ZlXCI6IFwiUmVtb3ZlXCIsXG4gIFwicmMuZmlsZUlucHV0LnVwbG9hZEZhaWxlZFwiOiBcIlVwbG9hZCBmYWlsZWRcIixcbiAgXCJyYy5maWxlSW5wdXQudXBsb2FkaW5nXCI6IFwiVXBsb2FkaW5nLi4uXCIsXG5cbiAgLy8gTW9udGhQaWNrZXJNdWx0aXBsZSBDb21wb25lbnRcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLmFkZE1vbnRoXCI6IFwiQWRkIG1vbnRoXCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5kYXRlUmFuZ2VcIjogXCJSYW5nZVwiLFxuICBcInJjLm1vbnRoUGlja2VyTXVsdGlwbGUuZW5kRGF0ZVwiOiBcIkVuZCBkYXRlXCIsXG4gIFwicmMubW9udGhQaWNrZXJNdWx0aXBsZS5wbGFjZWhvbGRlclwiOiBcIlBpY2sgbW9udGhcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLnNpbmdsZURhdGVcIjogXCJTaW5nbGVcIixcbiAgXCJyYy5tb250aFBpY2tlck11bHRpcGxlLnN0YXJ0RGF0ZVwiOiBcIlN0YXJ0IGRhdGVcIixcblxuICAvLyBNdWx0aVNlbGVjdCBDb21wb25lbnRcbiAgXCJyYy5tdWx0aVNlbGVjdC5jbGVhclwiOiBcIkNsZWFyIGFsbFwiLFxuICBcInJjLm11bHRpU2VsZWN0LmNsb3NlXCI6IFwiQ2xvc2VcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5tb3JlSXRlbXNcIjogKGNvdW50OiBudW1iZXIpID0+IGArJHtjb3VudH0gbW9yZWAsXG4gIFwicmMubXVsdGlTZWxlY3Qubm9PcHRpb25zXCI6IFwiTm8gb3B0aW9uc1wiLFxuICBcInJjLm11bHRpU2VsZWN0Lm5vT3B0aW9uc1NlbGVjdGVkXCI6IFwiTm8gb3B0aW9ucyBzZWxlY3RlZFwiLFxuICBcInJjLm11bHRpU2VsZWN0Lm5vUmVzdWx0c1wiOiBcIk5vIHJlc3VsdHNcIixcbiAgXCJyYy5tdWx0aVNlbGVjdC5vcHRpb25zQ291bnRcIjogKGNvdW50OiBudW1iZXIpID0+IGAke2NvdW50fSBvcHRpb25zYCxcbiAgXCJyYy5tdWx0aVNlbGVjdC5zZWxlY3RBbGxcIjogXCJTZWxlY3QgYWxsXCIsXG4gIFwicmMubXVsdGlTZWxlY3Quc2VsZWN0UGxhY2Vob2xkZXJcIjogXCJTZWxlY3QuLi5cIixcblxuICAvLyBQYWdpbmF0aW9uIENvbXBvbmVudFxuICBcInJjLnBhZ2luYXRpb24ubmV4dFwiOiBcIk5leHRcIixcbiAgXCJyYy5wYWdpbmF0aW9uLnByZXZpb3VzXCI6IFwiUHJldmlvdXNcIixcbiAgXCJyYy5wYWdpbmF0aW9uLnNob3dpbmdcIjogKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCB0b3RhbDogbnVtYmVyKSA9PlxuICAgIGBTaG93aW5nICR7c3RhcnR9LSR7ZW5kfSBvZiAke3RvdGFsfWAsXG5cbiAgLy8gQ2FsZW5kYXIgQ29tcG9uZW50XG4gIFwicmMuY2FsZW5kYXIubW9udGguMFwiOiBcIkphbnVhcnlcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4xXCI6IFwiRmVicnVhcnlcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4yXCI6IFwiTWFyY2hcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4zXCI6IFwiQXByaWxcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC40XCI6IFwiTWF5XCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguNVwiOiBcIkp1bmVcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC42XCI6IFwiSnVseVwiLFxuICBcInJjLmNhbGVuZGFyLm1vbnRoLjdcIjogXCJBdWd1c3RcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC44XCI6IFwiU2VwdGVtYmVyXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguOVwiOiBcIk9jdG9iZXJcIixcbiAgXCJyYy5jYWxlbmRhci5tb250aC4xMFwiOiBcIk5vdmVtYmVyXCIsXG4gIFwicmMuY2FsZW5kYXIubW9udGguMTFcIjogXCJEZWNlbWJlclwiLFxuXG4gIC8vIFNvbmFtdSBGaWx0ZXIgQ29tcG9uZW50XG4gIFwicmMuc29uYW11RmlsdGVyLnRpdGxlXCI6IFwiU29uYW11IEZpbHRlclwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5hcHBseVwiOiBcIkFwcGx5XCIsXG4gIFwicmMuc29uYW11RmlsdGVyLnJlc2V0XCI6IFwiUmVzZXRcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuYWRkUnVsZVwiOiBcIkFkZCBSdWxlXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLm5vUnVsZXNZZXRcIjogJ05vIHJ1bGVzIHlldC4gQ2xpY2sgXCIrIEFkZCBSdWxlXCIgdG8gc3RhcnQuJyxcbiAgXCJyYy5zb25hbXVGaWx0ZXIuc2VsZWN0RmllbGRcIjogXCJTZWxlY3QgZmllbGRcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuc2VsZWN0T3BlcmF0b3JcIjogXCJPcGVyYXRvclwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5zZWxlY3RPcGVyYXRvckZpcnN0XCI6IFwiU2VsZWN0IG9wZXJhdG9yIGZpcnN0XCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmVudGVyVmFsdWVcIjogXCJFbnRlciB2YWx1ZVwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5lbnRlck51bWJlclwiOiBcIkVudGVyIG51bWJlclwiLFxuICBcInJjLnNvbmFtdUZpbHRlci5ub3RTdXBwb3J0ZWRcIjogXCJOb3Qgc3VwcG9ydGVkXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLnN0YXJ0RGF0ZVwiOiBcIlN0YXJ0IGRhdGVcIixcbiAgXCJyYy5zb25hbXVGaWx0ZXIuZW5kRGF0ZVwiOiBcIkVuZCBkYXRlXCIsXG4gIFwicmMuc29uYW11RmlsdGVyLmFwcGxpZWRGaWx0ZXJzXCI6IFwi8J+MsiBBcHBsaWVkIFNvbmFtdUZpbHRlcnNcIixcblxuICAvLyBDb21tb25cbiAgXCJyYy5jb21tb24uY2FuY2VsXCI6IFwiQ2FuY2VsXCIsXG4gIFwicmMuY29tbW9uLnNhdmVcIjogXCJTYXZlXCIsXG59IGFzIGNvbnN0O1xuXG4vLyBlbnRpdHkuanNvbuyXkOyEnCDstpTstpztlZwgZW50aXR5IGxhYmVscyAoZGVmYXVsdExvY2FsZSDsoITsmqkpXG5jb25zdCBlbnRpdHlMYWJlbHMgPSB7XG4gIFwiZW50aXR5LlJlcXVlc3RMb2dcIjogXCJSZXF1ZXN0TG9nXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuaWRcIjogXCJJRFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLmNyZWF0ZWRfYXRcIjogXCLrk7HroZ3snbzsi5xcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy50b2tlbl9uYW1lXCI6IFwi7Yag7YGwIOydtOumhFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnF1ZXJ5XCI6IFwicHJvbXB0IOyghOusuFwiLFxuICBcImVudGl0eS5SZXF1ZXN0TG9nLnJlc3BvbnNlXCI6IFwibGxtIOydkeuLtSDsoITrrLhcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5pbnB1dF90b2tlbnNcIjogXCLsnoXroKUg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cub3V0cHV0X3Rva2Vuc1wiOiBcIuy2nOugpSDthqDtgbBcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5jYWNoZV9yZWFkX3Rva2Vuc1wiOiBcIuy6kOyLnCDsnb3quLAg7Yag7YGwXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuY2FjaGVfY3JlYXRpb25fdG9rZW5zXCI6IFwi7LqQ7IucIOyDneyEsSDthqDtgbBcIixcbiAgXCJlbnRpdHkuUmVxdWVzdExvZy5kdXJhdGlvbl9tc1wiOiBcIuydkeuLtSDshozsmpTsi5zqsIQobXMpXCIsXG4gIFwiZW50aXR5LlJlcXVlc3RMb2cuY29zdF91c2RcIjogXCJBUEkg67mE7JqpXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nT3JkZXJCeS5pZC1kZXNjXCI6IFwiSUTstZzsi6DsiJxcIixcbiAgXCJlbnVtLlJlcXVlc3RMb2dTZWFyY2hGaWVsZC5pZFwiOiBcIklEXCIsXG4gIFwiZW51bS5SZXF1ZXN0TG9nU2VhcmNoRmllbGQudG9rZW5fbmFtZVwiOiBcIu2GoO2BsOydtOumhFwiLFxuICBcImVudW0uUmVxdWVzdExvZ1NlYXJjaEZpZWxkLnF1ZXJ5XCI6IFwi7L+866asXCIsXG4gIFwiZW50aXR5LlRva2VuXCI6IFwiVG9rZW5cIixcbiAgXCJlbnRpdHkuVG9rZW4uaWRcIjogXCJJRFwiLFxuICBcImVudGl0eS5Ub2tlbi5jcmVhdGVkX2F0XCI6IFwi65Ox66Gd7J287IucXCIsXG4gIFwiZW50aXR5LlRva2VuLnRva2VuXCI6IFwiYWNjZXNzX3Rva2VuXCIsXG4gIFwiZW50aXR5LlRva2VuLm5hbWVcIjogXCLthqDtgbAg7J2066aEXCIsXG4gIFwiZW50aXR5LlRva2VuLnJlZnJlc2hfdG9rZW5cIjogXCJyZWZyZXNoX3Rva2VuXCIsXG4gIFwiZW50aXR5LlRva2VuLmV4cGlyZXNfYXRcIjogXCLrp4zro4wg7Iuc6rCBIChlcG9jaCBtcylcIixcbiAgXCJlbnRpdHkuVG9rZW4uYWNjb3VudF91dWlkXCI6IFwiQW50aHJvcGljIOqzhOyglSBVVUlEXCIsXG4gIFwiZW50aXR5LlRva2VuLmFjdGl2ZVwiOiBcIu2ZnOyEsSDsl6zrtoBcIixcbiAgXCJlbnRpdHkuVG9rZW4ub3JkXCI6IFwi7KCV66CsIOyInOyEnFwiLFxuICBcImVudW0uVG9rZW5PcmRlckJ5LmlkLWRlc2NcIjogXCJJROy1nOyLoOyInFwiLFxuICBcImVudW0uVG9rZW5PcmRlckJ5Lm9yZC1hc2NcIjogXCLsiJzshJzsiJxcIixcbiAgXCJlbnVtLlRva2VuU2VhcmNoRmllbGQuaWRcIjogXCJJRFwiLFxuICBcImVudW0uVG9rZW5TZWFyY2hGaWVsZC5uYW1lXCI6IFwi7J2066aEXCIsXG59IGFzIGNvbnN0O1xuXG4vLyBkZWZhdWx0TG9jYWxl7J2YIGRpY3Rpb25hcnnrpbwg6riw7KSA7Jy866GcIO2CpCDstpTstpxcbnR5cGUgUkNLZXlzID0gdHlwZW9mIHJjS2V5c0tvO1xudHlwZSBQcm9qZWN0RGljdGlvbmFyeSA9IHR5cGVvZiBrbztcbnR5cGUgRW50aXR5TGFiZWxzID0gdHlwZW9mIGVudGl0eUxhYmVscztcbnR5cGUgUmF3TWVyZ2VkRGljdGlvbmFyeSA9IFJDS2V5cyAmXG4gIE9taXQ8RW50aXR5TGFiZWxzLCBrZXlvZiAoUkNLZXlzICYgUHJvamVjdERpY3Rpb25hcnkpPiAmXG4gIFByb2plY3REaWN0aW9uYXJ5O1xuXG4vLyDtgqTripQg7Jyg7KeA7ZWY65CYLCDqsJIg7YOA7J6F7J2AIHN0cmluZyDrmJDripQg7ZWo7IiY66GcIOydvOuwmO2ZlCAo64uk66W4IGxvY2FsZeydmCDrpqzthLDrn7Qg7YOA7J6FIOy2qeuPjCDrsKnsp4ApXG5leHBvcnQgdHlwZSBNZXJnZWREaWN0aW9uYXJ5ID0ge1xuICBbSyBpbiBrZXlvZiBSYXdNZXJnZWREaWN0aW9uYXJ5XTogUmF3TWVyZ2VkRGljdGlvbmFyeVtLXSBleHRlbmRzICguLi5hcmdzOiBpbmZlciBQKSA9PiBzdHJpbmdcbiAgICA/ICguLi5hcmdzOiBQKSA9PiBzdHJpbmdcbiAgICA6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBEaWN0S2V5ID0ga2V5b2YgTWVyZ2VkRGljdGlvbmFyeTtcbmV4cG9ydCB0eXBlIExvY2FsaXplZFN0cmluZyA9IHN0cmluZyAmIHsgX19icmFuZDogXCJMb2NhbGl6ZWRTdHJpbmdcIiB9O1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lTG9jYWxlKGRpY3Q6IFBhcnRpYWw8TWVyZ2VkRGljdGlvbmFyeT4pIHtcbiAgcmV0dXJuIGRpY3Q7XG59XG5cbi8vIOqwgSBsb2NhbGXrs4TroZwgcmMta2V5cyArIGVudGl0eSBsYWJlbHMgKyDtlITroZzsoJ3tirggZGljdCDtlansuahcbmNvbnN0IGRpY3Rpb25hcmllczogUmVjb3JkPHN0cmluZywgUGFydGlhbDxNZXJnZWREaWN0aW9uYXJ5Pj4gPSB7XG4gIGtvOiB7IC4uLnJjS2V5c0tvLCAuLi5lbnRpdHlMYWJlbHMsIC4uLmtvIH0sXG4gIGVuOiB7IC4uLnJjS2V5c0VuLCAuLi5lbiB9LFxufTtcblxudHlwZSBTRFJldHVyblR5cGU8SyBleHRlbmRzIERpY3RLZXk+ID0gTWVyZ2VkRGljdGlvbmFyeVtLXSBleHRlbmRzICguLi5hcmdzOiBpbmZlciBQKSA9PiBzdHJpbmdcbiAgPyAoLi4uYXJnczogUCkgPT4gTG9jYWxpemVkU3RyaW5nXG4gIDogTG9jYWxpemVkU3RyaW5nO1xuXG5mdW5jdGlvbiBnZXREaWN0VmFsdWU8SyBleHRlbmRzIERpY3RLZXk+KGtleTogSywgbG9jYWxlOiBzdHJpbmcpOiBTRFJldHVyblR5cGU8Sz4ge1xuICAvLyAxLiDsp4DsoJXrkJwgbG9jYWxl7JeQ7IScIOyhsO2ajFxuICBjb25zdCBkaWN0ID0gZGljdGlvbmFyaWVzW2xvY2FsZV07XG4gIGlmIChkaWN0Py5ba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGRpY3Rba2V5XSBhcyB1bmtub3duIGFzIFNEUmV0dXJuVHlwZTxLPjtcbiAgfVxuXG4gIC8vIDIuIGRlZmF1bHQgbG9jYWxl7JeQ7IScIOyhsO2ajFxuICBpZiAobG9jYWxlICE9PSBERUZBVUxUX0xPQ0FMRSAmJiBkaWN0aW9uYXJpZXNbREVGQVVMVF9MT0NBTEVdPy5ba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGRpY3Rpb25hcmllc1tERUZBVUxUX0xPQ0FMRV1ba2V5XSBhcyB1bmtub3duIGFzIFNEUmV0dXJuVHlwZTxLPjtcbiAgfVxuXG4gIC8vIDMuIHN1cHBvcnRlZCBsb2NhbGVzIOyInO2ajFxuICBmb3IgKGNvbnN0IHN1cHBvcnRlZExvY2FsZSBvZiBTVVBQT1JURURfTE9DQUxFUykge1xuICAgIGlmIChzdXBwb3J0ZWRMb2NhbGUgIT09IGxvY2FsZSAmJiBzdXBwb3J0ZWRMb2NhbGUgIT09IERFRkFVTFRfTE9DQUxFKSB7XG4gICAgICBpZiAoZGljdGlvbmFyaWVzW3N1cHBvcnRlZExvY2FsZV0/LltrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGRpY3Rpb25hcmllc1tzdXBwb3J0ZWRMb2NhbGVdW2tleV0gYXMgdW5rbm93biBhcyBTRFJldHVyblR5cGU8Sz47XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gNC4g66qo65GQIOyLpO2MqCDsi5wga2V5IOuwmO2ZmFxuICByZXR1cm4ga2V5IGFzIHVua25vd24gYXMgU0RSZXR1cm5UeXBlPEs+O1xufVxuXG4vKipcbiAqIFNvbmFtdSBEaWN0aW9uYXJ5IO2VqOyImFxuICogbG9jYWxl7JeQIOunnuuKlCDrsojsl60g7YWN7Iqk7Yq466W8IOuwmO2ZmO2VqeuLiOuLpC5cbiAqXG4gKiBAZXhhbXBsZVxuICogU0QoXCJjb21tb24uc2F2ZVwiKSAgLy8g4oaSIFwi7KCA7J6lXCIgKExvY2FsaXplZFN0cmluZylcbiAqIFNEKFwidXNlci5ub3RGb3VuZFwiKSgxKSAgLy8g4oaSIFwi7KG07J6s7ZWY7KeAIOyViuuKlCBVc2VyIElEIDFcIiAoTG9jYWxpemVkU3RyaW5nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gU0Q8SyBleHRlbmRzIERpY3RLZXk+KGtleTogSyk6IFNEUmV0dXJuVHlwZTxLPiB7XG4gIGNvbnN0IGxvY2FsZSA9IGdldEN1cnJlbnRMb2NhbGUoKTtcbiAgcmV0dXJuIGdldERpY3RWYWx1ZShrZXksIGxvY2FsZSk7XG59XG5cbi8qKlxuICog7Yq57KCVIGxvY2FsZeydmCDrsojsl60g7YWN7Iqk7Yq466W8IOuwmO2ZmO2VmOuKlCDtlajsiJjrpbwg7IOd7ISx7ZWp64uI64ukLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBFTiA9IFNELmxvY2FsZShcImVuXCIpO1xuICogRU4oXCJjb21tb24uc2F2ZVwiKSAgLy8g4oaSIFwiU2F2ZVwiXG4gKi9cblNELmxvY2FsZSA9XG4gIChsb2NhbGU6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0pID0+XG4gIDxLIGV4dGVuZHMgRGljdEtleT4oa2V5OiBLKTogU0RSZXR1cm5UeXBlPEs+ID0+IHtcbiAgICByZXR1cm4gZ2V0RGljdFZhbHVlKGtleSwgbG9jYWxlKTtcbiAgfTtcblxuLy8gTG9jYWxpemVkIOqwgOuKpe2VnCBDb2x1bW4g7YOA7J6FIOqzhOyCsFxudHlwZSBMb2NhbGl6ZWRCYXNlQ29sdW1uPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUICYgc3RyaW5nXTogSyBleHRlbmRzIGAke2luZmVyIEJhc2V9XyR7KHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXX1gXG4gICAgPyBCYXNlXG4gICAgOiBLO1xufVtrZXlvZiBUICYgc3RyaW5nXTtcblxuLyoqXG4gKiBsb2NhbGXsl5Ag65Sw6528IOyggeygiO2VnCDsu6zrn7wg6rCS7J2EIOuwmO2ZmO2VqeuLiOuLpC5cbiAqIERC7JeQIG5hbWUsIG5hbWVfa28sIG5hbWVfZW7sspjrn7wgbG9jYWxpemVkIGNvbHVtbuydtCDsnojsnYQg65WMIOyCrOyaqe2VqeuLiOuLpC5cbiAqXG4gKiDsmrDshKDsiJzsnIQgKOyngOybkCDroZzsvIDsnbzsnYAga28vanAvZW7snbTqs6AsIOyEnOu5hOyKpOydmCDquLDrs7gg66Gc7LyA7J287J2AIGtvLCDsgqzsmqnsnpDsnZgg66Gc7LyA7J287J2AIGpw7J28IOuVjCk6IGNvbHVtbl9qcCDihpIgY29sdW1uIOKGkiBjb2x1bW5fa28g4oaSIGNvbHVtbl9lblxuICog7Jqw7ISg7Iic7JyEICjsp4Dsm5Ag66Gc7LyA7J287J2AIGtvL2pwL2Vu7J206rOgLCDshJzruYTsiqTsnZgg6riw67O4IOuhnOy8gOydvOydgCBlbiwg7IKs7Jqp7J6Q7J2YIOuhnOy8gOydvOydgCBrb+ydvCDrlYwpOiBjb2x1bW5fa28g4oaSIGNvbHVtbiDihpIgY29sdW1uX2VuIOKGkiBjb2x1bW5fanBcbiAqXG4gKiBAZXhhbXBsZVxuICogbG9jYWxpemVkQ29sdW1uKHRhZywgXCJuYW1lXCIpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbGl6ZWRDb2x1bW48XG4gIFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgSyBleHRlbmRzIExvY2FsaXplZEJhc2VDb2x1bW48VD4sXG4+KHJvdzogVCwgY29sdW1uOiBLKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbG9jYWxlID0gZ2V0Q3VycmVudExvY2FsZSgpO1xuICBjb25zdCBvdGhlckxvY2FsZXMgPSBTVVBQT1JURURfTE9DQUxFUy5maWx0ZXIoXG4gICAgKGw6IHN0cmluZykgPT4gbCAhPT0gbG9jYWxlICYmIGwgIT09IERFRkFVTFRfTE9DQUxFLFxuICApO1xuICBjb25zdCBsb2NhbGl6ZWRLZXkgPSAoY29sdW1uOiBLLCBsb2NhbGU6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0pID0+XG4gICAgYCR7Y29sdW1ufV8ke2xvY2FsZX1gO1xuICBjb25zdCBrZXlzID0gW1xuICAgIGxvY2FsaXplZEtleShjb2x1bW4sIGxvY2FsZSksXG4gICAgY29sdW1uLFxuICAgIGxvY2FsaXplZEtleShjb2x1bW4sIERFRkFVTFRfTE9DQUxFKSxcbiAgICAuLi5vdGhlckxvY2FsZXMubWFwKChsKSA9PiBsb2NhbGl6ZWRLZXkoY29sdW1uLCBsKSksXG4gIF07XG5cbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIGlmICghKGtleSBpbiByb3cpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAocm93W2tleV0gIT09IG51bGwgJiYgcm93W2tleV0gIT09IHVuZGVmaW5lZCAmJiByb3dba2V5XSAhPT0gXCJcIikge1xuICAgICAgcmV0dXJuIFN0cmluZyhyb3dba2V5XSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBFbnVt7J2YIGxvY2FsaXplZCBsYWJlbHPrpbwgUHJveHnroZwg67CY7ZmY7ZWp64uI64ukLlxuICogU2VsZWN0IOy7tO2PrOuEjO2KuCDrk7Hsl5DshJwgRW51bUxhYmVsW2tleV0g64yA7IugIOyCrOyaqe2VqeuLiOuLpC5cbiAqXG4gKiBAZXhhbXBsZVxuICogU0QuZW51bUxhYmVscyhcIlRhZ09yZGVyQnlcIilba2V5XSAgLy8g4oaSIO2YhOyerCBsb2NhbGXsnZgg652867KoXG4gKi9cblNELmVudW1MYWJlbHMgPSAoZW51bU5hbWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIExvY2FsaXplZFN0cmluZz4gPT4ge1xuICByZXR1cm4gbmV3IFByb3h5KHt9IGFzIFJlY29yZDxzdHJpbmcsIExvY2FsaXplZFN0cmluZz4sIHtcbiAgICBnZXQoXywga2V5OiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IGRpY3RLZXkgPSBgZW51bS4ke2VudW1OYW1lfS4ke2tleX1gIGFzIERpY3RLZXk7XG4gICAgICByZXR1cm4gZ2V0RGljdFZhbHVlKGRpY3RLZXksIGdldEN1cnJlbnRMb2NhbGUoKSk7XG4gICAgfSxc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
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
//#region src/migrations/20260421223627_alter_request_logs_add1_alter1.ts
|
|
3
|
+
async function up(knex) {
|
|
4
|
+
await knex.schema.alterTable("request_logs", (table) => {
|
|
5
|
+
table.integer("cost_usd").nullable();
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
async function down(knex) {
|
|
9
|
+
await knex.schema.alterTable("request_logs", (table) => {
|
|
10
|
+
table.dropColumns("cost_usd");
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { down, up };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAyNjA0MjEyMjM2MjdfYWx0ZXJfcmVxdWVzdF9sb2dzX2FkZDFfYWx0ZXIxLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWdyYXRpb25zLzIwMjYwNDIxMjIzNjI3X2FsdGVyX3JlcXVlc3RfbG9nc19hZGQxX2FsdGVyMS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLbmV4IH0gZnJvbSBcImtuZXhcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwKGtuZXg6IEtuZXgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQga25leC5zY2hlbWEuYWx0ZXJUYWJsZShcInJlcXVlc3RfbG9nc1wiLCAodGFibGUpID0+IHtcbiAgICAvLyBhZGRcbiAgICB0YWJsZS5pbnRlZ2VyKFwiY29zdF91c2RcIikubnVsbGFibGUoKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkb3duKGtuZXg6IEtuZXgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQga25leC5zY2hlbWEuYWx0ZXJUYWJsZShcInJlcXVlc3RfbG9nc1wiLCAodGFibGUpID0+IHtcbiAgICAvLyByb2xsYmFjayAtIGFkZFxuICAgIHRhYmxlLmRyb3BDb2x1bW5zKFwiY29zdF91c2RcIik7XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOztBQUVBLGVBQXNCLEdBQUcsTUFBMkI7QUFDbEQsT0FBTSxLQUFLLE9BQU8sV0FBVyxpQkFBaUIsVUFBVTtBQUV0RCxRQUFNLFFBQVEsV0FBVyxDQUFDLFVBQVU7R0FDcEM7O0FBR0osZUFBc0IsS0FBSyxNQUEyQjtBQUNwRCxPQUFNLEtBQUssT0FBTyxXQUFXLGlCQUFpQixVQUFVO0FBRXRELFFBQU0sWUFBWSxXQUFXO0dBQzdCIn0=
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type FastifyReply } from "fastify";
|
|
2
2
|
import { api, BaseFrameClass } from "sonamu";
|
|
3
3
|
|
|
4
|
-
import { RequestLogModel } from "../request-log/request-log.model";
|
|
4
|
+
import { MICRO_USD, RequestLogModel } from "../request-log/request-log.model";
|
|
5
5
|
import { TokenModel } from "../token/token.model";
|
|
6
|
-
import type
|
|
6
|
+
import { type RefreshTokenParams } from "../token/token.types";
|
|
7
7
|
import {
|
|
8
8
|
buildAuthUrl,
|
|
9
9
|
exchangeCodeForTokens,
|
|
@@ -12,12 +12,12 @@ import {
|
|
|
12
12
|
refreshAccessToken,
|
|
13
13
|
} from "./oauth";
|
|
14
14
|
import { type ClaudePool, getPool } from "./pool";
|
|
15
|
-
import
|
|
16
|
-
CliResult,
|
|
17
|
-
HealthResponse,
|
|
18
|
-
OAuthStartResult,
|
|
19
|
-
TokenStats,
|
|
20
|
-
UsageResponse,
|
|
15
|
+
import {
|
|
16
|
+
type CliResult,
|
|
17
|
+
type HealthResponse,
|
|
18
|
+
type OAuthStartResult,
|
|
19
|
+
type TokenStats,
|
|
20
|
+
type UsageResponse,
|
|
21
21
|
} from "./qgrid.types";
|
|
22
22
|
|
|
23
23
|
// PKCE 세션 메모리 저장 (state → { codeVerifier, name, redirectUri })
|
|
@@ -44,6 +44,7 @@ class QgridFrameClass extends BaseFrameClass {
|
|
|
44
44
|
cache_read_tokens: result.usage.cache_read_input_tokens,
|
|
45
45
|
cache_creation_tokens: result.usage.cache_creation_input_tokens,
|
|
46
46
|
duration_ms: result.durationMs,
|
|
47
|
+
cost_usd: result.costUsd !== null ? Math.round(result.costUsd * MICRO_USD) : null,
|
|
47
48
|
},
|
|
48
49
|
]).catch((e) => console.error("requestLog save failed:", e));
|
|
49
50
|
|
|
@@ -55,6 +56,11 @@ class QgridFrameClass extends BaseFrameClass {
|
|
|
55
56
|
return getPool().getStats();
|
|
56
57
|
}
|
|
57
58
|
|
|
59
|
+
@api({ httpMethod: "GET", clients: ["axios", "tanstack-query"] })
|
|
60
|
+
async totalCost(tokenName?: string): Promise<{ usd: number }> {
|
|
61
|
+
return { usd: await RequestLogModel.totalCost({ token_name: tokenName }) };
|
|
62
|
+
}
|
|
63
|
+
|
|
58
64
|
@api({ httpMethod: "POST", clients: ["axios", "tanstack-mutation"] })
|
|
59
65
|
async addToken(token: string, name: string, refreshToken?: string): Promise<{ added: boolean }> {
|
|
60
66
|
await TokenModel.save([
|
|
@@ -51,6 +51,9 @@ export namespace QgridService {
|
|
|
51
51
|
export const stats = (): SSRQuery =>
|
|
52
52
|
createSSRQuery("QgridFrame", "stats", [], ["Qgrid", "stats"]);
|
|
53
53
|
|
|
54
|
+
export const totalCost = (tokenName?: string): SSRQuery =>
|
|
55
|
+
createSSRQuery("QgridFrame", "totalCost", [tokenName], ["Qgrid", "totalCost"]);
|
|
56
|
+
|
|
54
57
|
export const usage = (tokenName?: string): SSRQuery =>
|
|
55
58
|
createSSRQuery("QgridFrame", "usage", [tokenName], ["Qgrid", "usage"]);
|
|
56
59
|
|
|
@@ -34,7 +34,13 @@
|
|
|
34
34
|
{ "name": "output_tokens", "type": "integer", "desc": "출력 토큰" },
|
|
35
35
|
{ "name": "cache_read_tokens", "type": "integer", "desc": "캐시 읽기 토큰" },
|
|
36
36
|
{ "name": "cache_creation_tokens", "type": "integer", "desc": "캐시 생성 토큰" },
|
|
37
|
-
{ "name": "duration_ms", "type": "integer", "desc": "응답 소요시간(ms)" }
|
|
37
|
+
{ "name": "duration_ms", "type": "integer", "desc": "응답 소요시간(ms)" },
|
|
38
|
+
{
|
|
39
|
+
"name": "cost_usd",
|
|
40
|
+
"type": "integer",
|
|
41
|
+
"nullable": true,
|
|
42
|
+
"desc": "API 비용"
|
|
43
|
+
}
|
|
38
44
|
],
|
|
39
45
|
"indexes": [
|
|
40
46
|
{
|
|
@@ -56,7 +62,8 @@
|
|
|
56
62
|
"output_tokens",
|
|
57
63
|
"cache_read_tokens",
|
|
58
64
|
"cache_creation_tokens",
|
|
59
|
-
"duration_ms"
|
|
65
|
+
"duration_ms",
|
|
66
|
+
"cost_usd"
|
|
60
67
|
],
|
|
61
68
|
"cone": { "note": "전체 필드 서브셋" }
|
|
62
69
|
}
|