n8n-nodes-jwt-validate 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,114 @@
1
+ # n8n-nodes-jwt-validate
2
+
3
+ This is an n8n community node that provides JWT (JSON Web Token) validation with JWKS (JSON Web Key Set) support for your n8n workflows.
4
+
5
+ JWT validation is essential for securing API workflows and verifying authentication tokens. This node validates JWT tokens by verifying their signature using public keys from JWKS endpoints, and validates claims like issuer, audience, and expiration.
6
+
7
+ [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.
8
+
9
+ [Installation](#installation) • [Features](#features) • [Configuration](#configuration) • [Usage](#usage) • [Resources](#resources)
10
+
11
+ ## Installation
12
+
13
+ Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.
14
+
15
+ Alternatively, install via npm:
16
+
17
+ ```bash
18
+ npm install n8n-nodes-jwt-validate
19
+ ```
20
+
21
+ ## Features
22
+
23
+ - **JWKS Support**: Automatically fetch and cache public keys from JWKS endpoints
24
+ - **Auto-Discovery**: Automatically discover JWKS URL from the token's issuer claim by appending `/.well-known/jwks.json`
25
+ - **Custom JWKS URL**: Option to provide a custom JWKS endpoint URL
26
+ - **Issuer Validation**: Verify the token's issuer (iss) claim matches expected value
27
+ - **Audience Validation**: Verify the token's audience (aud) claim matches expected value
28
+ - **Expiry Checking**: Optional validation of token expiration (exp) claim
29
+ - **Detailed Error Messages**: Clear error messages indicating specific validation failure reasons
30
+ - **Continue on Fail**: Option to continue workflow execution even if validation fails
31
+
32
+ ## Configuration
33
+
34
+ ### Parameters
35
+
36
+ | Parameter | Type | Required | Description |
37
+ |-----------|------|----------|-------------|
38
+ | JWT Token | String | Yes | The JWT token to validate |
39
+ | JWKS Configuration | Options | Yes | Choose "Auto-Discover from Issuer" or "Custom JWKS URL" |
40
+ | JWKS URL | String | Conditional | Required when using "Custom JWKS URL" option |
41
+ | Required Issuer | String | Yes | Expected issuer (iss) claim value |
42
+ | Required Audience | String | Yes | Expected audience (aud) claim value |
43
+ | Check Expiry | Boolean | No | Enable/disable expiration validation (default: true) |
44
+
45
+ ## Usage
46
+
47
+ ### Basic Example
48
+
49
+ 1. Add the JWT Validate node to your workflow
50
+ 2. Configure the JWT token (from webhook, previous node, or expression)
51
+ 3. Set the required issuer (e.g., `https://auth.example.com`)
52
+ 4. Set the required audience (e.g., `your-api-identifier`)
53
+ 5. Choose JWKS configuration method
54
+ 6. The node outputs the validated JWT payload on success
55
+
56
+ ### Output
57
+
58
+ **On Success:**
59
+ ```json
60
+ {
61
+ "jwtValid": true,
62
+ "jwtPayload": {
63
+ "iss": "https://auth.example.com",
64
+ "aud": "your-api-identifier",
65
+ "sub": "user123",
66
+ "exp": 1234567890,
67
+ // ... other claims
68
+ }
69
+ }
70
+ ```
71
+
72
+ **On Failure (with Continue on Fail enabled):**
73
+ ```json
74
+ {
75
+ "jwtValid": false,
76
+ "error": "JWT token has expired at 2024-01-01T00:00:00.000Z"
77
+ }
78
+ ```
79
+
80
+ ### Error Messages
81
+
82
+ The node provides specific error messages for different validation failures:
83
+ - Invalid JWT format
84
+ - Missing key ID (kid) in token header
85
+ - Failed to retrieve signing key from JWKS
86
+ - Token expired
87
+ - Invalid signature
88
+ - Issuer mismatch
89
+ - Audience mismatch
90
+ - Token not yet valid (nbf claim)
91
+
92
+ ## Credentials
93
+
94
+ This node does not require credentials. It validates JWT tokens using public keys from JWKS endpoints.
95
+
96
+ ## Compatibility
97
+
98
+ Tested with n8n version 1.0.0 and above.
99
+
100
+ ## Resources
101
+
102
+ * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
103
+ * [JWT.io](https://jwt.io/) - Learn about JSON Web Tokens
104
+ * [JWKS Specification](https://datatracker.ietf.org/doc/html/rfc7517)
105
+
106
+ ## Version history
107
+
108
+ ### 0.1.0
109
+ - Initial release
110
+ - JWT validation with JWKS support
111
+ - Auto-discovery of JWKS from issuer
112
+ - Custom JWKS URL option
113
+ - Issuer and audience validation
114
+ - Optional expiry checking
@@ -0,0 +1,5 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class Example implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Example = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ class Example {
6
+ constructor() {
7
+ this.description = {
8
+ displayName: 'Example',
9
+ name: 'example',
10
+ icon: { light: 'file:example.svg', dark: 'file:example.dark.svg' },
11
+ group: ['input'],
12
+ version: 1,
13
+ description: 'Basic Example Node',
14
+ defaults: {
15
+ name: 'Example',
16
+ },
17
+ inputs: ['main'],
18
+ outputs: ['main'],
19
+ usableAsTool: true,
20
+ properties: [
21
+ {
22
+ displayName: 'My String',
23
+ name: 'myString',
24
+ type: 'string',
25
+ default: '',
26
+ placeholder: 'Placeholder value',
27
+ description: 'The description text',
28
+ },
29
+ ],
30
+ };
31
+ }
32
+ async execute() {
33
+ const items = this.getInputData();
34
+ let item;
35
+ let myString;
36
+ for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
37
+ try {
38
+ myString = this.getNodeParameter('myString', itemIndex, '');
39
+ item = items[itemIndex];
40
+ item.json.myString = myString;
41
+ }
42
+ catch (error) {
43
+ if (this.continueOnFail()) {
44
+ items.push({ json: this.getInputData(itemIndex)[0].json, error, pairedItem: itemIndex });
45
+ }
46
+ else {
47
+ if (error.context) {
48
+ error.context.itemIndex = itemIndex;
49
+ throw error;
50
+ }
51
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, {
52
+ itemIndex,
53
+ });
54
+ }
55
+ }
56
+ }
57
+ return [items];
58
+ }
59
+ }
60
+ exports.Example = Example;
61
+ //# sourceMappingURL=Example.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Example.node.js","sourceRoot":"","sources":["../../../nodes/Example/Example.node.ts"],"names":[],"mappings":";;;AAMA,+CAAkD;AAElD,MAAa,OAAO;IAApB;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,uBAAuB,EAAE;YAClE,KAAK,EAAE,CAAC,OAAO,CAAC;YAChB,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,oBAAoB;YACjC,QAAQ,EAAE;gBACT,IAAI,EAAE,SAAS;aACf;YACD,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE;gBAGX;oBACC,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,mBAAmB;oBAChC,WAAW,EAAE,sBAAsB;iBACnC;aACD;SACD,CAAC;IA2CH,CAAC;IArCA,KAAK,CAAC,OAAO;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAElC,IAAI,IAAwB,CAAC;QAC7B,IAAI,QAAgB,CAAC;QAKrB,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC;YAC/D,IAAI,CAAC;gBACJ,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,CAAW,CAAC;gBACtE,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;gBAExB,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAGhB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1F,CAAC;qBAAM,CAAC;oBAEP,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;wBAGnB,KAAK,CAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;wBACpC,MAAM,KAAK,CAAC;oBACb,CAAC;oBACD,MAAM,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE;wBACnD,SAAS;qBACT,CAAC,CAAC;gBACJ,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC;CACD;AArED,0BAqEC"}
@@ -0,0 +1,18 @@
1
+ {
2
+ "node": "n8n-nodes-jwt-validate",
3
+ "nodeVersion": "1.0",
4
+ "codexVersion": "1.0",
5
+ "categories": ["Development", "Developer Tools"],
6
+ "resources": {
7
+ "credentialDocumentation": [
8
+ {
9
+ "url": "https://github.com/org/repo?tab=readme-ov-file#credentials"
10
+ }
11
+ ],
12
+ "primaryDocumentation": [
13
+ {
14
+ "url": "https://github.com/org/repo?tab=readme-ov-file"
15
+ }
16
+ ]
17
+ }
18
+ }
@@ -0,0 +1,13 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="aquamarine"
2
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-cpu">
3
+ <rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect>
4
+ <rect x="9" y="9" width="6" height="6"></rect>
5
+ <line x1="9" y1="1" x2="9" y2="4"></line>
6
+ <line x1="15" y1="1" x2="15" y2="4"></line>
7
+ <line x1="9" y1="20" x2="9" y2="23"></line>
8
+ <line x1="15" y1="20" x2="15" y2="23"></line>
9
+ <line x1="20" y1="9" x2="23" y2="9"></line>
10
+ <line x1="20" y1="14" x2="23" y2="14"></line>
11
+ <line x1="1" y1="9" x2="4" y2="9"></line>
12
+ <line x1="1" y1="14" x2="4" y2="14"></line>
13
+ </svg>
@@ -0,0 +1,13 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="darkblue"
2
+ stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-cpu">
3
+ <rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect>
4
+ <rect x="9" y="9" width="6" height="6"></rect>
5
+ <line x1="9" y1="1" x2="9" y2="4"></line>
6
+ <line x1="15" y1="1" x2="15" y2="4"></line>
7
+ <line x1="9" y1="20" x2="9" y2="23"></line>
8
+ <line x1="15" y1="20" x2="15" y2="23"></line>
9
+ <line x1="20" y1="9" x2="23" y2="9"></line>
10
+ <line x1="20" y1="14" x2="23" y2="14"></line>
11
+ <line x1="1" y1="9" x2="4" y2="9"></line>
12
+ <line x1="1" y1="14" x2="4" y2="14"></line>
13
+ </svg>
@@ -0,0 +1,5 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class JwtValidate implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.JwtValidate = void 0;
40
+ const n8n_workflow_1 = require("n8n-workflow");
41
+ const jwt = __importStar(require("jsonwebtoken"));
42
+ const jwks_rsa_1 = __importDefault(require("jwks-rsa"));
43
+ class JwtValidate {
44
+ constructor() {
45
+ this.description = {
46
+ displayName: 'JWT Validate',
47
+ name: 'jwtValidate',
48
+ icon: 'file:jwt.svg',
49
+ group: ['transform'],
50
+ version: 1,
51
+ description: 'Validate JWT tokens with JWKS support',
52
+ defaults: {
53
+ name: 'JWT Validate',
54
+ },
55
+ inputs: ['main'],
56
+ outputs: ['main'],
57
+ usableAsTool: true,
58
+ properties: [
59
+ {
60
+ displayName: 'JWT Token',
61
+ name: 'jwtToken',
62
+ type: 'string',
63
+ typeOptions: { password: true },
64
+ default: '',
65
+ required: true,
66
+ placeholder: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...',
67
+ description: 'The JWT token to validate',
68
+ },
69
+ {
70
+ displayName: 'JWKS Configuration',
71
+ name: 'jwksConfig',
72
+ type: 'options',
73
+ options: [
74
+ {
75
+ name: 'Auto-Discover From Issuer',
76
+ value: 'autoDiscover',
77
+ },
78
+ {
79
+ name: 'Custom JWKS URL',
80
+ value: 'customUrl',
81
+ },
82
+ ],
83
+ default: 'autoDiscover',
84
+ description: 'How to obtain the JWKS for token verification',
85
+ },
86
+ {
87
+ displayName: 'JWKS URL',
88
+ name: 'jwksUrl',
89
+ type: 'string',
90
+ default: '',
91
+ displayOptions: {
92
+ show: {
93
+ jwksConfig: ['customUrl'],
94
+ },
95
+ },
96
+ placeholder: 'https://example.com/.well-known/jwks.json',
97
+ description: 'Custom JWKS URL for token verification',
98
+ },
99
+ {
100
+ displayName: 'Options',
101
+ name: 'options',
102
+ type: 'collection',
103
+ placeholder: 'Add option',
104
+ default: {},
105
+ options: [
106
+ {
107
+ displayName: 'Check Expiry',
108
+ name: 'checkExpiry',
109
+ type: 'boolean',
110
+ default: true,
111
+ description: 'Whether to validate the expiration date (exp claim) of the token',
112
+ },
113
+ {
114
+ displayName: 'Required Audience',
115
+ name: 'audience',
116
+ type: 'string',
117
+ default: '',
118
+ placeholder: 'your-api-identifier',
119
+ description: 'Expected audience (aud) claim in the JWT. If not set, audience validation is skipped.',
120
+ },
121
+ {
122
+ displayName: 'Required Issuer',
123
+ name: 'issuer',
124
+ type: 'string',
125
+ default: '',
126
+ placeholder: 'https://example.com',
127
+ description: 'Expected issuer (iss) claim in the JWT. If not set, issuer validation is skipped.',
128
+ },
129
+ {
130
+ displayName: 'Required Scopes',
131
+ name: 'requiredScopes',
132
+ type: 'string',
133
+ default: '',
134
+ placeholder: 'read:users write:users',
135
+ description: 'Space-separated list of required scopes. Token must contain ALL listed scopes. If not set, scope validation is skipped.',
136
+ },
137
+ {
138
+ displayName: 'Scope Claim Name',
139
+ name: 'scopeClaimName',
140
+ type: 'string',
141
+ default: 'scope',
142
+ description: 'The claim name in the JWT that contains scopes (default: "scope")',
143
+ },
144
+ ],
145
+ },
146
+ ],
147
+ };
148
+ }
149
+ async execute() {
150
+ const items = this.getInputData();
151
+ const returnData = [];
152
+ for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
153
+ try {
154
+ const jwtToken = this.getNodeParameter('jwtToken', itemIndex);
155
+ const jwksConfig = this.getNodeParameter('jwksConfig', itemIndex);
156
+ const options = this.getNodeParameter('options', itemIndex, {});
157
+ const issuer = options.issuer || '';
158
+ const audience = options.audience || '';
159
+ const checkExpiry = options.checkExpiry !== undefined ? options.checkExpiry : true;
160
+ const requiredScopes = options.requiredScopes || '';
161
+ const scopeClaimName = options.scopeClaimName || 'scope';
162
+ let decoded;
163
+ try {
164
+ decoded = jwt.decode(jwtToken, { complete: true });
165
+ if (!decoded) {
166
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Invalid JWT token format', { itemIndex });
167
+ }
168
+ }
169
+ catch (error) {
170
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
171
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Failed to decode JWT token: ${errorMessage}`, { itemIndex });
172
+ }
173
+ let jwksUrl;
174
+ if (jwksConfig === 'customUrl') {
175
+ jwksUrl = this.getNodeParameter('jwksUrl', itemIndex);
176
+ if (!jwksUrl) {
177
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'JWKS URL is required when using custom URL configuration', { itemIndex });
178
+ }
179
+ }
180
+ else {
181
+ const tokenIssuer = decoded.payload.iss;
182
+ if (!tokenIssuer) {
183
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'JWT token does not contain an issuer (iss) claim for auto-discovery', { itemIndex });
184
+ }
185
+ jwksUrl = `${tokenIssuer.replace(/\/$/, '')}/discovery/keys`;
186
+ }
187
+ const client = (0, jwks_rsa_1.default)({
188
+ jwksUri: jwksUrl,
189
+ cache: true,
190
+ cacheMaxAge: 600000,
191
+ });
192
+ const kid = decoded.header.kid;
193
+ if (!kid) {
194
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'JWT token header does not contain a key ID (kid)', { itemIndex });
195
+ }
196
+ let signingKey;
197
+ try {
198
+ const key = await client.getSigningKey(kid);
199
+ signingKey = key.getPublicKey();
200
+ }
201
+ catch (error) {
202
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Failed to retrieve signing key from JWKS: ${error.message}`, { itemIndex });
203
+ }
204
+ const verifyOptions = {
205
+ ignoreExpiration: !checkExpiry,
206
+ };
207
+ if (issuer) {
208
+ verifyOptions.issuer = issuer;
209
+ }
210
+ if (audience) {
211
+ verifyOptions.audience = audience;
212
+ }
213
+ let verifiedPayload;
214
+ try {
215
+ verifiedPayload = jwt.verify(jwtToken, signingKey, verifyOptions);
216
+ }
217
+ catch (error) {
218
+ let errorMessage = 'JWT validation failed';
219
+ if (error instanceof Error) {
220
+ if (error.name === 'TokenExpiredError') {
221
+ errorMessage = `JWT token has expired at ${error.expiredAt}`;
222
+ }
223
+ else if (error.name === 'JsonWebTokenError') {
224
+ errorMessage = `JWT validation error: ${error.message}`;
225
+ }
226
+ else if (error.name === 'NotBeforeError') {
227
+ errorMessage = `JWT token is not yet valid (nbf claim)`;
228
+ }
229
+ else {
230
+ errorMessage = `JWT validation failed: ${error.message}`;
231
+ }
232
+ }
233
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), errorMessage, { itemIndex });
234
+ }
235
+ if (requiredScopes) {
236
+ const requiredScopesList = requiredScopes.trim().split(/\s+/).filter((s) => s.length > 0);
237
+ if (requiredScopesList.length > 0) {
238
+ let tokenScopes = [];
239
+ if (verifiedPayload[scopeClaimName]) {
240
+ if (typeof verifiedPayload[scopeClaimName] === 'string') {
241
+ tokenScopes = verifiedPayload[scopeClaimName].split(/\s+/);
242
+ }
243
+ else if (Array.isArray(verifiedPayload[scopeClaimName])) {
244
+ tokenScopes = verifiedPayload[scopeClaimName];
245
+ }
246
+ }
247
+ else if (verifiedPayload.scopes && Array.isArray(verifiedPayload.scopes)) {
248
+ tokenScopes = verifiedPayload.scopes;
249
+ }
250
+ else if (verifiedPayload.scope) {
251
+ if (typeof verifiedPayload.scope === 'string') {
252
+ tokenScopes = verifiedPayload.scope.split(/\s+/);
253
+ }
254
+ else if (Array.isArray(verifiedPayload.scope)) {
255
+ tokenScopes = verifiedPayload.scope;
256
+ }
257
+ }
258
+ const missingScopes = requiredScopesList.filter((requiredScope) => !tokenScopes.includes(requiredScope));
259
+ if (missingScopes.length > 0) {
260
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `JWT token is missing required scopes: ${missingScopes.join(', ')}. Token has scopes: ${tokenScopes.join(', ') || 'none'}`, { itemIndex });
261
+ }
262
+ }
263
+ }
264
+ const item = items[itemIndex];
265
+ returnData.push({
266
+ json: {
267
+ ...item.json,
268
+ jwtValid: true,
269
+ jwtPayload: verifiedPayload,
270
+ },
271
+ pairedItem: itemIndex,
272
+ });
273
+ }
274
+ catch (error) {
275
+ if (this.continueOnFail()) {
276
+ returnData.push({
277
+ json: {
278
+ ...items[itemIndex].json,
279
+ jwtValid: false,
280
+ error: error.message,
281
+ },
282
+ error,
283
+ pairedItem: itemIndex,
284
+ });
285
+ }
286
+ else {
287
+ throw error;
288
+ }
289
+ }
290
+ }
291
+ return [returnData];
292
+ }
293
+ }
294
+ exports.JwtValidate = JwtValidate;
295
+ //# sourceMappingURL=JwtValidate.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JwtValidate.node.js","sourceRoot":"","sources":["../../../nodes/JwtValidate/JwtValidate.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ {
2
+ "node": "n8n-nodes-jwt-validate",
3
+ "nodeVersion": "1.0",
4
+ "codexVersion": "1.0",
5
+ "categories": ["Development", "Security"],
6
+ "resources": {
7
+ "credentialDocumentation": [
8
+ {
9
+ "url": "https://github.com/org/repo?tab=readme-ov-file#credentials"
10
+ }
11
+ ],
12
+ "primaryDocumentation": [
13
+ {
14
+ "url": "https://github.com/org/repo?tab=readme-ov-file"
15
+ }
16
+ ]
17
+ }
18
+ }
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+ <rect x="3" y="11" width="18" height="11" rx="2" ry="2"/>
3
+ <path d="M7 11V7a5 5 0 0 1 10 0v4"/>
4
+ <circle cx="12" cy="16" r="1"/>
5
+ </svg>
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "n8n-nodes-jwt-validate",
3
+ "version": "0.1.1",
4
+ "description": "n8n node for JWT token validation with JWKS support",
5
+ "license": "MIT",
6
+ "homepage": "https://github.com/wtyeung/n8n-nodes-jwt-validate#readme",
7
+ "keywords": [
8
+ "n8n-community-node-package",
9
+ "jwt",
10
+ "validation",
11
+ "jwks",
12
+ "authentication",
13
+ "security"
14
+ ],
15
+ "author": {
16
+ "name": "Tim Yeung",
17
+ "email": "tim.yeung@hku.hk"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/wtyeung/n8n-nodes-jwt-validate.git"
22
+ },
23
+ "scripts": {
24
+ "build": "n8n-node build",
25
+ "build:watch": "tsc --watch",
26
+ "dev": "n8n-node dev",
27
+ "lint": "n8n-node lint",
28
+ "lint:fix": "n8n-node lint --fix",
29
+ "release": "n8n-node release",
30
+ "prepublishOnly": "n8n-node prerelease"
31
+ },
32
+ "files": [
33
+ "dist"
34
+ ],
35
+ "n8n": {
36
+ "n8nNodesApiVersion": 1,
37
+ "credentials": [],
38
+ "nodes": [
39
+ "dist/nodes/Example/Example.node.js",
40
+ "dist/nodes/JwtValidate/JwtValidate.node.js"
41
+ ],
42
+ "strict": false
43
+ },
44
+ "devDependencies": {
45
+ "@n8n/node-cli": "*",
46
+ "@types/jsonwebtoken": "^9.0.10",
47
+ "eslint": "9.32.0",
48
+ "prettier": "3.6.2",
49
+ "release-it": "^19.0.4",
50
+ "typescript": "5.9.2"
51
+ },
52
+ "dependencies": {
53
+ "jsonwebtoken": "^9.0.2",
54
+ "jwks-rsa": "^3.1.0"
55
+ },
56
+ "peerDependencies": {
57
+ "n8n-workflow": "*"
58
+ }
59
+ }
@@ -0,0 +1 @@
1
+ {"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/typescript/lib/lib.esnext.float16.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/globals.typedarray.d.ts","../node_modules/@types/node/buffer.buffer.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/web-globals/abortcontroller.d.ts","../node_modules/@types/node/web-globals/crypto.d.ts","../node_modules/@types/node/web-globals/domexception.d.ts","../node_modules/@types/node/web-globals/events.d.ts","../node_modules/undici-types/utility.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client-stats.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/h2c-client.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-call-history.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/snapshot-agent.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/undici-types/retry-handler.d.ts","../node_modules/undici-types/retry-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/cache-interceptor.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/util.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/eventsource.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/web-globals/fetch.d.ts","../node_modules/@types/node/web-globals/navigator.d.ts","../node_modules/@types/node/web-globals/storage.d.ts","../node_modules/@types/node/web-globals/streams.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/inspector.generated.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/sqlite.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/send/index.d.ts","../node_modules/@types/qs/index.d.ts","../node_modules/@types/range-parser/index.d.ts","../node_modules/@types/express-serve-static-core/index.d.ts","../node_modules/@types/http-errors/index.d.ts","../node_modules/@types/mime/index.d.ts","../node_modules/@types/serve-static/node_modules/@types/send/index.d.ts","../node_modules/@types/serve-static/index.d.ts","../node_modules/@types/connect/index.d.ts","../node_modules/@types/body-parser/index.d.ts","../node_modules/@types/express/index.d.ts","../node_modules/form-data/index.d.ts","../node_modules/n8n-workflow/dist/esm/constants.d.ts","../node_modules/n8n-workflow/dist/esm/data-table.types.d.ts","../node_modules/n8n-workflow/dist/esm/deferred-promise.d.ts","../node_modules/@n8n/errors/dist/types.d.ts","../node_modules/@n8n/errors/dist/application.error.d.ts","../node_modules/@n8n/errors/dist/index.d.ts","../node_modules/n8n-workflow/dist/esm/errors/base/base.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/base/operational.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/base/unexpected.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/base/user.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/abstract/execution-base.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/expression.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/execution-cancelled.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/abstract/node.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/node-api.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/node-operation.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/workflow-configuration.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/node-ssl.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/workflow-activation.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/webhook-taken.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/workflow-deactivation.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/workflow-operation.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/subworkflow-operation.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/cli-subworkflow-operation.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/trigger-close.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/expression-extension.error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/db-connection-timeout-error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/ensure-error.d.ts","../node_modules/n8n-workflow/dist/esm/errors/index.d.ts","../node_modules/n8n-workflow/dist/esm/execution-status.d.ts","../node_modules/n8n-workflow/dist/esm/result.d.ts","../node_modules/n8n-workflow/dist/esm/expression.d.ts","../node_modules/n8n-workflow/dist/esm/workflow.d.ts","../node_modules/n8n-workflow/dist/esm/workflow-data-proxy-env-provider.d.ts","../node_modules/n8n-workflow/dist/esm/interfaces.d.ts","../node_modules/n8n-workflow/dist/esm/logger-proxy.d.ts","../node_modules/n8n-workflow/dist/esm/node-helpers.d.ts","../node_modules/n8n-workflow/dist/esm/observable-object.d.ts","../node_modules/n8n-workflow/dist/esm/telemetry-helpers.d.ts","../node_modules/n8n-workflow/dist/esm/common/get-child-nodes.d.ts","../node_modules/n8n-workflow/dist/esm/common/get-connected-nodes.d.ts","../node_modules/n8n-workflow/dist/esm/common/get-node-by-name.d.ts","../node_modules/n8n-workflow/dist/esm/common/get-parent-nodes.d.ts","../node_modules/n8n-workflow/dist/esm/common/map-connections-by-destination.d.ts","../node_modules/n8n-workflow/dist/esm/common/index.d.ts","../node_modules/n8n-workflow/dist/esm/cron.d.ts","../node_modules/n8n-workflow/dist/esm/global-state.d.ts","../node_modules/n8n-workflow/dist/esm/message-event-bus.d.ts","../node_modules/n8n-workflow/dist/esm/expressions/expression-helpers.d.ts","../node_modules/zod/dist/types/v3/helpers/typealiases.d.ts","../node_modules/zod/dist/types/v3/helpers/util.d.ts","../node_modules/zod/dist/types/v3/zoderror.d.ts","../node_modules/zod/dist/types/v3/locales/en.d.ts","../node_modules/zod/dist/types/v3/errors.d.ts","../node_modules/zod/dist/types/v3/helpers/parseutil.d.ts","../node_modules/zod/dist/types/v3/helpers/enumutil.d.ts","../node_modules/zod/dist/types/v3/helpers/errorutil.d.ts","../node_modules/zod/dist/types/v3/helpers/partialutil.d.ts","../node_modules/zod/dist/types/v3/standard-schema.d.ts","../node_modules/zod/dist/types/v3/types.d.ts","../node_modules/zod/dist/types/v3/external.d.ts","../node_modules/zod/dist/types/v3/index.d.ts","../node_modules/zod/dist/types/index.d.ts","../node_modules/n8n-workflow/dist/esm/from-ai-parse-utils.d.ts","../node_modules/n8n-workflow/dist/esm/tool-helpers.d.ts","../node_modules/n8n-workflow/dist/esm/node-reference-parser-utils.d.ts","../node_modules/n8n-workflow/dist/esm/metadata-utils.d.ts","../node_modules/n8n-workflow/dist/esm/workflow-data-proxy.d.ts","../node_modules/n8n-workflow/dist/esm/versioned-node-type.d.ts","../node_modules/n8n-workflow/dist/esm/type-validation.d.ts","../node_modules/n8n-workflow/dist/esm/utils.d.ts","../node_modules/n8n-workflow/dist/esm/type-guards.d.ts","../node_modules/n8n-workflow/dist/esm/graph/graph-utils.d.ts","../node_modules/n8n-workflow/dist/esm/extensions/extensions.d.ts","../node_modules/n8n-workflow/dist/esm/extensions/expression-extension.d.ts","../node_modules/n8n-workflow/dist/esm/extensions/index.d.ts","../node_modules/n8n-workflow/dist/esm/extensions/expression-parser.d.ts","../node_modules/n8n-workflow/dist/esm/native-methods/index.d.ts","../node_modules/n8n-workflow/dist/esm/node-parameters/filter-parameter.d.ts","../node_modules/n8n-workflow/dist/esm/node-parameters/parameter-type-validation.d.ts","../node_modules/n8n-workflow/dist/esm/node-parameters/path-utils.d.ts","../node_modules/n8n-workflow/dist/esm/evaluation-helpers.d.ts","../node_modules/n8n-workflow/dist/esm/workflow-diff.d.ts","../node_modules/n8n-workflow/dist/esm/index.d.ts","../nodes/example/example.node.ts","../node_modules/@types/ms/index.d.ts","../node_modules/@types/jsonwebtoken/index.d.ts","../node_modules/jwks-rsa/index.d.ts","../nodes/jwtvalidate/jwtvalidate.node.ts","../nodes/example/example.node.json","../nodes/jwtvalidate/jwtvalidate.node.json","../package.json","../node_modules/@types/estree/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/parse-path/index.d.ts","../node_modules/@types/semver/functions/inc.d.ts","../node_modules/@types/semver/classes/semver.d.ts","../node_modules/@types/semver/functions/parse.d.ts","../node_modules/@types/semver/functions/valid.d.ts","../node_modules/@types/semver/functions/clean.d.ts","../node_modules/@types/semver/functions/diff.d.ts","../node_modules/@types/semver/functions/major.d.ts","../node_modules/@types/semver/functions/minor.d.ts","../node_modules/@types/semver/functions/patch.d.ts","../node_modules/@types/semver/functions/prerelease.d.ts","../node_modules/@types/semver/functions/compare.d.ts","../node_modules/@types/semver/functions/rcompare.d.ts","../node_modules/@types/semver/functions/compare-loose.d.ts","../node_modules/@types/semver/functions/compare-build.d.ts","../node_modules/@types/semver/functions/sort.d.ts","../node_modules/@types/semver/functions/rsort.d.ts","../node_modules/@types/semver/functions/gt.d.ts","../node_modules/@types/semver/functions/lt.d.ts","../node_modules/@types/semver/functions/eq.d.ts","../node_modules/@types/semver/functions/neq.d.ts","../node_modules/@types/semver/functions/gte.d.ts","../node_modules/@types/semver/functions/lte.d.ts","../node_modules/@types/semver/functions/cmp.d.ts","../node_modules/@types/semver/functions/coerce.d.ts","../node_modules/@types/semver/classes/comparator.d.ts","../node_modules/@types/semver/classes/range.d.ts","../node_modules/@types/semver/functions/satisfies.d.ts","../node_modules/@types/semver/ranges/max-satisfying.d.ts","../node_modules/@types/semver/ranges/min-satisfying.d.ts","../node_modules/@types/semver/ranges/to-comparators.d.ts","../node_modules/@types/semver/ranges/min-version.d.ts","../node_modules/@types/semver/ranges/valid.d.ts","../node_modules/@types/semver/ranges/outside.d.ts","../node_modules/@types/semver/ranges/gtr.d.ts","../node_modules/@types/semver/ranges/ltr.d.ts","../node_modules/@types/semver/ranges/intersects.d.ts","../node_modules/@types/semver/ranges/simplify.d.ts","../node_modules/@types/semver/ranges/subset.d.ts","../node_modules/@types/semver/internals/identifiers.d.ts","../node_modules/@types/semver/index.d.ts"],"fileIdsList":[[52,106,123,124,172],[52,106,123,124,172,173],[52,106,123,124],[52,106,120,123,124,156,165,252],[52,106,120,123,124,156,252],[52,106,117,120,123,124,156,157,158,159,252],[52,106,123,124,158,160,164,166],[52,106,111,123,124,156,254],[52,103,104,106,123,124],[52,105,106,123,124],[106,123,124],[52,106,111,123,124,141],[52,106,107,112,117,123,124,126,138,149],[52,106,107,108,117,123,124,126],[52,106,109,123,124,150],[52,106,110,111,118,123,124,127],[52,106,111,123,124,138,146],[52,106,112,114,117,123,124,126],[52,105,106,113,123,124],[52,106,114,115,123,124],[52,106,116,117,123,124],[52,105,106,117,123,124],[52,106,117,118,119,123,124,138,149],[52,106,117,118,119,123,124,133,138,141],[52,98,106,114,117,120,123,124,126,138,149,252],[52,106,117,118,120,121,123,124,126,138,146,149],[52,106,120,122,123,124,138,146,149],[50,51,52,53,54,55,56,57,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155],[52,106,117,123,124],[52,106,123,124,125,149],[52,106,114,117,123,124,126,138],[52,106,123,124,127],[52,106,123,124,128],[52,105,106,123,124,129],[52,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,252],[52,106,123,124,131],[52,106,123,124,132],[52,106,117,123,124,133,134],[52,106,123,124,133,135,150,152],[52,106,118,123,124],[52,106,117,123,124,138,139,141],[52,106,123,124,140,141],[52,106,123,124,138,139],[52,106,123,124,141],[52,106,123,124,142],[52,103,106,123,124,138,143],[52,106,117,123,124,144,145],[52,106,123,124,144,145],[52,106,111,123,124,126,138,146],[52,106,123,124,147],[52,106,123,124,126,148],[52,106,120,123,124,132,149],[52,106,111,123,124,150],[52,106,123,124,138,151],[52,106,123,124,125,152],[52,106,123,124,153],[52,106,111,123,124],[52,98,106,123,124],[52,106,123,124,154],[52,98,106,117,119,123,124,129,138,141,149,151,152,154],[52,106,123,124,138,155],[52,106,123,124,265,303],[52,106,123,124,265,288,303],[52,106,123,124,264,303],[52,106,123,124,303],[52,106,123,124,265],[52,106,123,124,265,289,303],[52,106,123,124,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302],[52,106,123,124,289,303],[52,106,118,123,124,138,156],[52,106,120,123,124,156,161,163,252],[52,106,118,123,124,138,156,162],[52,106,120,123,124,138,156,252],[52,106,120,122,123,124,167,252,255],[52,106,123,124,203],[52,106,123,124,208,209,210,211,212],[52,106,123,124,174,203],[52,106,123,124,179,203],[52,106,123,124,174],[52,106,123,124,175],[52,106,123,124,191],[52,106,123,124,179],[52,106,123,124,180],[52,106,123,124,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196],[52,106,123,124,174,182,203],[52,106,123,124,182,183,203],[52,106,123,124,190],[52,106,123,124,187],[52,106,123,124,174,179,203],[52,106,123,124,184],[52,106,123,124,201,203],[52,106,123,124,242],[52,106,123,124,242,243],[52,106,123,124,231],[52,106,120,123,124,169,170,171,197,198,199,200,201,202,203,204,205,206,207,213,214,215,216,217,232,233,234,235,236,237,238,239,240,241,244,245,246,247,248,249,250,251],[52,106,118,120,123,124,138,146,149,167,168,169,170,171,180,183,184,187,190,197,198,199,201,202,252],[52,106,123,124,252],[52,106,123,124,201,202,203],[52,106,123,124,200,203],[52,64,67,70,71,106,123,124,149],[52,67,106,123,124,138,149],[52,67,71,106,123,124,149],[52,106,123,124,138],[52,61,106,123,124],[52,65,106,123,124],[52,63,64,67,106,123,124,149],[52,106,123,124,126,146],[52,106,123,124,156],[52,61,106,123,124,156],[52,63,67,106,123,124,126,149],[52,58,59,60,62,66,106,117,123,124,138,149],[52,67,75,83,106,123,124],[52,59,65,106,123,124],[52,67,92,93,106,123,124],[52,59,62,67,106,123,124,141,149,156],[52,67,106,123,124],[52,63,67,106,123,124,149],[52,58,106,123,124],[52,61,62,63,65,66,67,68,69,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,97,106,123,124],[52,67,85,88,106,114,123,124],[52,67,75,76,77,106,123,124],[52,65,67,76,78,106,123,124],[52,66,106,123,124],[52,59,61,67,106,123,124],[52,67,71,76,78,106,123,124],[52,71,106,123,124],[52,65,67,70,106,123,124,149],[52,59,63,67,75,106,123,124],[52,67,85,106,123,124],[52,78,106,123,124],[52,61,67,92,106,123,124,141,154,156],[52,106,123,124,230],[52,106,123,124,220,221],[52,106,123,124,218,219,220,222,223,228],[52,106,123,124,219,220],[52,106,123,124,228],[52,106,123,124,229],[52,106,123,124,220],[52,106,123,124,218,219,220,223,224,225,226,227],[52,106,123,124,218,219,230],[52,106,123,124,252,255,256]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"830171b27c5fdf9bcbe4cf7d428fcf3ae2c67780fb7fbdccdf70d1623d938bc4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b21e13ed07d0df176ae31d6b7f01f7b17d66dbeb489c0d31d00de2ca14883da","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f929f0b6b3421a2d34344b0f421f45aeb2c84ad365ebf29d04312023b3accc58","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"d8cf132379078d0974a59df26069689a2d33c7dc826b5be56231841cb2f32e58","impliedFormat":1},{"version":"fbf413fc617837453c878a9174a1f1b383616857a3f8366bc41cf30df4aea7d5","impliedFormat":1},{"version":"148c73ec11318850f571172ceae3e55ce479d850fe18ec8eae0abd99d9f6c319","impliedFormat":1},{"version":"230bdc111d7578276e4a3bb9d075d85c78c6b68f428c3a9935e2eaa10f4ae1f5","impliedFormat":1},{"version":"e8aabbee5e7b9101b03bb4222607d57f38859b8115a8050a4eb91b4ee43a3a73","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"c0bb1b65757c72bbf8ddf7eaa532223bacf58041ff16c883e76f45506596e925","impliedFormat":1},{"version":"c8b85f7aed29f8f52b813f800611406b0bfe5cf3224d20a4bdda7c7f73ce368e","affectsGlobalScope":true,"impliedFormat":1},{"version":"145dcf25fd4967c610c53d93d7bc4dce8fbb1b6dd7935362472d4ae49363c7ba","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"76957a6d92b94b9e2852cf527fea32ad2dc0ef50f67fe2b14bd027c9ceef2d86","impliedFormat":1},{"version":"9043daec15206650fa119bad6b8d70136021ea7d52673a71f79a87a42ee38d44","affectsGlobalScope":true,"impliedFormat":1},{"version":"4e2de7ab2f74e36d7078bccdf831585b10dc6330bab56054921531b03f9beaf3","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"65faec1b4bd63564aeec33eab9cacfaefd84ce2400f03903a71a1841fbce195f","impliedFormat":1},{"version":"b33b74b97952d9bf4fbd2951dcfbb5136656ddb310ce1c84518aaa77dbca9992","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"6b306cd4282bbb54d4a6bb23cfb7a271160983dfc38c67b5a132504cfcc34896","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"450172a56b944c2d83f45cc11c9a388ea967cd301a21202aa0a23c34c7506a18","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"72f8936aebf0c4a1adab767b97d34ba7d3a308afcf76de4417b9c16fb92ed548","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"69e0a41d620fb678a899c65e073413b452f4db321b858fe422ad93fd686cd49a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3585d6891e9ea18e07d0755a6d90d71331558ba5dc5561933553209f886db106","affectsGlobalScope":true,"impliedFormat":1},{"version":"86be71cbb0593468644932a6eb96d527cfa600cecfc0b698af5f52e51804451d","impliedFormat":1},{"version":"84dd6b0fd2505135692935599d6606f50a421389e8d4535194bcded307ee5cf2","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"db19ea066fdc5f97df3f769e582ae3000380ab7942e266654bdb1a4650d19eaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"2a034894bf28c220a331c7a0229d33564803abe2ac1b9a5feee91b6b9b6e88ea","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"baac9896d29bcc55391d769e408ff400d61273d832dd500f21de766205255acb","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"94ee9ee71018d54902c3fe6730090a8a421dcad95fc372d9b69a6d5351194885","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","impliedFormat":1},{"version":"cb90077223cc1365fa21ef0911a1f9b8f2f878943523d97350dc557973ca3823","impliedFormat":1},{"version":"18f1541b81b80d806120a3489af683edfb811deb91aeca19735d9bb2613e6311","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"232f118ae64ab84dcd26ddb60eaed5a6e44302d36249abf05e9e3fc2cbb701a2","impliedFormat":1},{"version":"736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","impliedFormat":1},{"version":"4cac41f4c5da677be6b8ae7157da355a5268a8519ce76387c7452bff3b0eaaeb","impliedFormat":1},{"version":"a588d1f897adf938963ef3d90c8038c3c5cd19ef88fbedda4cb1a77b8b7ba3e6","impliedFormat":1},{"version":"a0981ee0c7ac06bdb575558bd09bac190e1c0c7888ddcb63d8bf648f23a30e8c","impliedFormat":1},{"version":"00f11c3ec667314eaa2adfe253b5ebebbbdbb82510e04460c2f09d1c3b521d31","impliedFormat":1},{"version":"5c7a516e25a2fd1dc5e054c6161fe3c8ba46364f3784ef98f3fca48ab685231c","impliedFormat":1},{"version":"3ff739b7f819cfc12b330f9adcc4c3abbbd5e9f9ca68f53243222a049a8361a2","impliedFormat":1},{"version":"d762b92c1af47b7b3c4eef92fe9a3806194d9edc5dae6901342fc87ef21d7f4a","impliedFormat":1},{"version":"41d14b690d8d8c2a9b7395e8c36de6ca981010736723216ab9f35eb598e09ad9","impliedFormat":1},{"version":"3fdcca6b893ffd38b61b792772f649c82ae28077c360802cec25360eabca24c0","impliedFormat":1},{"version":"299924f7545be254b02278e4dcff7038611f2325d30f0e5ae4bcac906847c164","impliedFormat":1},{"version":"be1d650f04c9f472f0ad0ead3e1b7059dd1e0ff918f7bcb707786d27c3bbeadd","impliedFormat":1},{"version":"1e16c1b1c4d8600a146b15a933f9a880cc275c01f39dc436625f22d3cca46272","impliedFormat":1},{"version":"a631639d7f79f49f68a0ef6553baa1b977e06b230e768511812952709fe5c1f0","impliedFormat":1},{"version":"bf2aefef15e0b4d6bc8f4e19f967494b59b5f90a834de503c373df042513d924","impliedFormat":1},{"version":"4085248a1c89ee865cf9498402c90611d16920a6c9929f701ddc0b963ddad230","impliedFormat":1},{"version":"1a1acd3311ff1794be8401ee394efc3beeb1746068244eb0ee1d51d08e457401","impliedFormat":1},{"version":"ce0b4440a3dd75e14ca94b6d6b27fa26ca89e776d91b8803b3c86c4e8f06ed1a","impliedFormat":1},{"version":"37020cf15e16fa6e1c6e2485cd51d6cbe74adee3b860ab49fb7528ca7e8e518e","impliedFormat":1},{"version":"b6b1a3ff9ba1ddf1a908cfd1bcd471334ecd218a366460fc64c4561d6d0467a4","impliedFormat":1},{"version":"1950d2a49c05c7aa6decfe409b552c4ea5fb156894cf0541b34999819bd778ea","impliedFormat":1},{"version":"32fe829960ff7120843f6dd20197e863aee3e81ecded415641a7500654d1bda7","impliedFormat":1},{"version":"da73778888d41d0abe7d28a24529ba13ff0a9311d55e1902feee7ab97dc6a67d","impliedFormat":1},{"version":"393b1ed0dca4f0aac333e65f2e40dfedfa8b37ac60571e02b152d32d8c84d340","impliedFormat":1},{"version":"f46d50c283425bcc59d68ccf067b3672fb727f802652dc7d60d2e470fb956370","impliedFormat":1},{"version":"0e10fd1d283b4ba7b94f5abb1bc30a2070ccb16c22f86a2780bea8ddc48f3bf7","impliedFormat":1},{"version":"0b4b6ca509cdb152e18ceeed526d17bb416e7e518508d859a0174977195f9a35","impliedFormat":1},{"version":"79b9e661f99d6d01ad0031fbffbb20a8570ca526125a1b01ef5643c00348a8c4","impliedFormat":1},{"version":"deb85dff5a350bd77f24fb5665b7a3c95aa0d4556a0d45ab423ebf3ffcbc70ce","impliedFormat":1},{"version":"f3e1a9f8c28c949f8432b0ef8f0d2686ccc3e38dcc338bbc8a02f956bc7a0725","impliedFormat":1},{"version":"3226c2a2af36d14aa551babd4154ad18042c0deb1509a61058c6b066cfddc30a","impliedFormat":1},{"version":"64c9811ebae7d6bdd3749155911ca473017944d6e9787cec3d11549b05b19de9","impliedFormat":1},{"version":"65f5d56e387495e8421e550d73ddb2132e82060d83b2907238629f4fe453214a","impliedFormat":1},{"version":"18c4c5d4069ae6ddce9443a6057fcf333688556b0d644813a78e604812f82bb3","impliedFormat":1},{"version":"6481b29f54e19becbeb7236c60043e2daa47b45cb4fd7e88f287df09250f2405","impliedFormat":1},{"version":"76923c092f853900e6b375bb08dc5c01872884aed47cbe7f223424e34b3bb30b","impliedFormat":1},{"version":"01658146c02cba2e49ee7beaa0b90864e7a17c3d02cc39cd8b643b5be3a1a438","impliedFormat":1},{"version":"fcbfe8a05b4b1d990aaf289b951ca3fb16bd5aa18004f576283576069be59939","impliedFormat":1},{"version":"db18ec88a0f1512b153a28a0ed1e19f34530885bca1d00e5f17a6e9b3184697f","impliedFormat":1},{"version":"21f166065c0725ca16281aa2f05f5ee9fb556795c8426049bf44ee36bdca9afd","impliedFormat":1},{"version":"36cd04c9f4116122a3545fcc6da5e522861d739718ab3a3cb7ff2268612531aa","impliedFormat":1},{"version":"9ae86dde42766df895cde73c60dc13347cc30829c6696de3cc54036b3120a5ba","impliedFormat":1},{"version":"6823cce79c10482d0860d40ebbfc29f00ddf7f99bca0aa23330599ddd8baead4","impliedFormat":1},{"version":"30ed6587fb249cc1b0585bab7ce2ca81ef193bfe2934241b6f06ffefdaaf4bf9","impliedFormat":1},{"version":"aa18fcf8ad877a9eb0c357c247708f019e25c4d906e3025d73604b66de8d7f11","impliedFormat":1},{"version":"cfc5482e113e44dae9712ae0a4e412788622221ae5eb1327fb69a13a0f5af662","impliedFormat":1},{"version":"5e620d0ed3eeb9a9a767355547123c85aea7e8f26d90e94d0cc3fa457f1c2035","impliedFormat":1},{"version":"304b0d21771513c0a36ed7179a9d1069bfa776e95f50b789ce898f3ef2b71514","impliedFormat":1},{"version":"4904d7124f9731d2368b613523070ca594cbc82f172023b4b5678018be7b6022","impliedFormat":1},{"version":"18c078c2b34901a328c1fc3e5a2f5bd51aa0fef06a548418198955e0af5eaf39","impliedFormat":1},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"54f6ec6ea75acea6eb23635617252d249145edbc7bcd9d53f2d70280d2aef953","impliedFormat":1},{"version":"c25ce98cca43a3bfa885862044be0d59557be4ecd06989b2001a83dcf69620fd","impliedFormat":1},{"version":"8e71e53b02c152a38af6aec45e288cc65bede077b92b9b43b3cb54a37978bb33","impliedFormat":1},{"version":"754a9396b14ca3a4241591afb4edc644b293ccc8a3397f49be4dfd520c08acb3","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"de2316e90fc6d379d83002f04ad9698bc1e5285b4d52779778f454dd12ce9f44","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"2da997a01a6aa5c5c09de5d28f0f4407b597c5e1aecfd32f1815809c532650a2","impliedFormat":1},{"version":"5d26d2e47e2352def36f89a3e8bf8581da22b7f857e07ef3114cd52cf4813445","impliedFormat":1},{"version":"3db2efd285e7328d8014b54a7fce3f4861ebcdc655df40517092ed0050983617","impliedFormat":1},{"version":"d5d39a24c759df40480a4bfc0daffd364489702fdbcbdfc1711cde34f8739995","impliedFormat":1},{"version":"581b97f369056070fafbe168120a192e918e67763116dfbbb2782bbca5f32111","impliedFormat":1},{"version":"74f9797560463a8c9070dd72c04b38cc17b79759b841e2a4175a11742f2ecd11","impliedFormat":1},{"version":"ce22b96ece23ecc9bc1f2a445afefa0a487f299986a1584887e4e4217e196963","impliedFormat":1},{"version":"4788f58342a67af140858e23a24cdf62457ec1ff79af68ac71b9d3c0c89bb53b","impliedFormat":1},{"version":"be19e5bce1b45d5c0ef87d46c3a95a991a3cd8b6c7cb4d756791756e69cc3568","impliedFormat":1},{"version":"e9634e0306920990ddca8f667e3cb624597ea7a4cd25d557a599c0e175419879","impliedFormat":1},{"version":"d4866c666180e89bdc142940cb2986a8fa9f3d2a363cc757bb61cef698b6e976","impliedFormat":1},{"version":"e73799489c16d7281d0466925ba620e9f804bb78400e0dbe04997b98407b1ab5","impliedFormat":1},{"version":"cb279466d8f2d95f3ee0a24637506b18d18d9b1cb869b4dbb534b7597b06daec","impliedFormat":1},{"version":"b33057a3c7ea75948a207a5b784726118ec60f882eeb875bd64e932b4cd41041","impliedFormat":1},{"version":"b773bcdaeda86c0f58910cecd6c77a0bd60be763127c42cad5a64fe66799b1f6","impliedFormat":1},{"version":"9e2e0b4711f1efef5c3c488616334ba2e5b911648a8784fd77fc8beb1e5047c9","impliedFormat":1},{"version":"ca1c4f7d0c786d90ab15a363d59d0e18269b393191ed7b2841547c0e187a8d35","impliedFormat":1},{"version":"0494f89b64c5e8906ce5284194e09bad42b56837757d79cb9e62ce16aae88ab4","impliedFormat":1},{"version":"28f1497962f8853339b46d766384abe7a907900998f551cf43cd793cdcb98e3d","impliedFormat":1},{"version":"e4cce0b510957aab4b12a0dc21a3b4857b8f8a85bbded2b8b81f836ca3c83dbc","impliedFormat":1},{"version":"79a0953f85a27dcaab70dd0e3791a3564631dfd5d85c637513027747c6844357","impliedFormat":1},{"version":"678c7436b7aa03dad934a96850ea395c018637013aa0b52a65898f502b4d6e2a","impliedFormat":1},{"version":"1c18a09d1deaf0e9906100ab54592f256f87fc94c67cce61bfc1c2ea44ac3d13","impliedFormat":1},{"version":"4dc4fe63d9ebfd103b288155429ed0bb8f6aa3805038327cd745dddd0834f846","impliedFormat":1},{"version":"699558b48615784d7fdfbad044578941ed2fb0c843b197857ba65ca050a2e172","impliedFormat":1},{"version":"506ee4ba436b95b10ee3a022a7022b5a0563d2b16097a211cb71ac1c4f0b7a43","signature":"f4a48adce9fde15e96b5b35f2e6658685a16eca2b2ed319d9e59a8156173e865"},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"95da3c365e3d45709ad6e0b4daa5cdaf05e9076ba3c201e8f8081dd282c02f57","impliedFormat":1},{"version":"bce02eb7d3f3ff0a1716e69315d6de212c6f4a6122c90d43016118ef7df2f601","impliedFormat":1},{"version":"6ef5019ed9870f1c4455143cc8721329bf11072b65225428b4db2ff326a24f89","signature":"be1968a5cf99a8cffa37e8a83fd696c730fd865247867ed0ce68b806d3c21feb"},"2e47928ae652798dee4c76de3e76767df1ff6612beabbf06907a3687b3e4f9ba","98896c60016478c02a225640176ebd67ff8d12171bf2168e7d9523a9989a2ee1",{"version":"70b77a778772e56a62a854e22f6084245f346b970a449a7124f4daea26d06ff5","signature":"a11e33e8dd716dc33f466196945c825e0104bb333221b7bc9ac69df521a97e11"},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"e72bcd16c134dae5a840b1d5d0e8b87e1d07fbbff01d66e9a7b913da3cd39b8e","impliedFormat":1},{"version":"ce6a3f09b8db73a7e9701aca91a04b4fabaf77436dd35b24482f9ee816016b17","impliedFormat":1},{"version":"20e086e5b64fdd52396de67761cc0e94693494deadb731264aac122adf08de3f","impliedFormat":1},{"version":"6e78f75403b3ec65efb41c70d392aeda94360f11cedc9fb2c039c9ea23b30962","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"eefd2bbc8edb14c3bd1246794e5c070a80f9b8f3730bd42efb80df3cc50b9039","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"a56fe175741cc8841835eb72e61fa5a34adcbc249ede0e3494c229f0750f6b85","impliedFormat":1}],"root":[253,[257,260]],"options":{"declaration":true,"esModuleInterop":true,"module":1,"noImplicitAny":true,"noImplicitReturns":true,"noUnusedLocals":true,"outDir":"./","preserveConstEnums":true,"removeComments":true,"skipLibCheck":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"target":6,"useUnknownInCatchVariables":false},"referencedMap":[[173,1],[174,2],[172,3],[166,4],[165,5],[261,3],[160,6],[167,7],[161,3],[262,3],[255,8],[162,3],[254,3],[103,9],[104,9],[105,10],[52,11],[106,12],[107,13],[108,14],[50,3],[109,15],[110,16],[111,17],[112,18],[113,19],[114,20],[115,20],[116,21],[117,22],[118,23],[119,24],[53,3],[51,3],[120,25],[121,26],[122,27],[156,28],[123,29],[124,3],[125,30],[126,31],[127,32],[128,33],[129,34],[130,35],[131,36],[132,37],[133,38],[134,38],[135,39],[136,3],[137,40],[138,41],[140,42],[139,43],[141,44],[142,45],[143,46],[144,47],[145,48],[146,49],[147,50],[148,51],[149,52],[150,53],[151,54],[152,55],[153,56],[54,3],[55,57],[56,3],[57,3],[99,58],[100,59],[101,3],[102,44],[154,60],[155,61],[263,3],[158,3],[159,3],[288,62],[289,63],[265,64],[268,65],[286,62],[287,62],[277,62],[276,66],[274,62],[269,62],[282,62],[280,62],[284,62],[264,62],[281,62],[285,62],[270,62],[271,62],[283,62],[266,62],[272,62],[273,62],[275,62],[279,62],[290,67],[278,62],[267,62],[303,68],[302,3],[297,67],[299,69],[298,67],[291,67],[292,67],[294,67],[296,67],[300,69],[301,69],[293,69],[295,69],[157,70],[164,71],[163,72],[168,73],[256,74],[208,75],[209,75],[210,75],[211,75],[213,76],[212,75],[169,3],[214,75],[170,3],[171,3],[179,77],[182,78],[175,79],[176,80],[177,80],[178,80],[192,81],[195,79],[196,3],[181,82],[194,83],[180,82],[197,84],[183,85],[184,86],[186,82],[191,87],[193,77],[188,88],[187,89],[185,90],[189,88],[190,78],[250,3],[198,3],[200,91],[217,3],[243,92],[245,3],[242,3],[244,93],[232,94],[215,3],[241,75],[252,95],[203,96],[204,75],[216,75],[235,97],[246,92],[205,91],[247,77],[248,75],[249,3],[234,75],[206,75],[199,3],[207,75],[233,75],[240,75],[238,75],[239,75],[237,75],[202,3],[236,98],[251,3],[201,99],[48,3],[49,3],[9,3],[8,3],[2,3],[10,3],[11,3],[12,3],[13,3],[14,3],[15,3],[16,3],[17,3],[3,3],[18,3],[19,3],[4,3],[20,3],[24,3],[21,3],[22,3],[23,3],[25,3],[26,3],[27,3],[5,3],[28,3],[29,3],[30,3],[31,3],[6,3],[35,3],[32,3],[33,3],[34,3],[36,3],[7,3],[37,3],[42,3],[43,3],[38,3],[39,3],[40,3],[41,3],[44,3],[45,3],[1,3],[46,3],[47,3],[75,100],[87,101],[73,102],[88,103],[97,104],[64,105],[65,106],[63,107],[96,108],[91,109],[95,110],[67,111],[84,112],[66,113],[94,114],[61,115],[62,109],[68,116],[69,3],[74,117],[72,116],[59,118],[98,119],[89,120],[78,121],[77,116],[79,122],[82,123],[76,124],[80,125],[92,108],[70,126],[71,127],[83,128],[60,103],[86,129],[85,116],[81,130],[90,3],[58,3],[93,131],[231,132],[222,133],[229,134],[224,3],[225,3],[223,135],[226,136],[218,3],[219,3],[230,137],[221,138],[227,3],[228,139],[220,140],[258,3],[253,97],[259,3],[257,141],[260,3]],"version":"5.9.2"}
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "n8n-nodes-jwt-validate",
3
+ "version": "0.1.1",
4
+ "description": "n8n node for JWT token validation with JWKS support",
5
+ "license": "MIT",
6
+ "homepage": "https://github.com/wtyeung/n8n-nodes-jwt-validate#readme",
7
+ "keywords": [
8
+ "n8n-community-node-package",
9
+ "jwt",
10
+ "validation",
11
+ "jwks",
12
+ "authentication",
13
+ "security"
14
+ ],
15
+ "author": {
16
+ "name": "Tim Yeung",
17
+ "email": "tim.yeung@hku.hk"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/wtyeung/n8n-nodes-jwt-validate.git"
22
+ },
23
+ "scripts": {
24
+ "build": "n8n-node build",
25
+ "build:watch": "tsc --watch",
26
+ "dev": "n8n-node dev",
27
+ "lint": "n8n-node lint",
28
+ "lint:fix": "n8n-node lint --fix",
29
+ "release": "n8n-node release",
30
+ "prepublishOnly": "n8n-node prerelease"
31
+ },
32
+ "files": [
33
+ "dist"
34
+ ],
35
+ "n8n": {
36
+ "n8nNodesApiVersion": 1,
37
+ "credentials": [],
38
+ "nodes": [
39
+ "dist/nodes/Example/Example.node.js",
40
+ "dist/nodes/JwtValidate/JwtValidate.node.js"
41
+ ],
42
+ "strict": false
43
+ },
44
+ "devDependencies": {
45
+ "@n8n/node-cli": "*",
46
+ "@types/jsonwebtoken": "^9.0.10",
47
+ "eslint": "9.32.0",
48
+ "prettier": "3.6.2",
49
+ "release-it": "^19.0.4",
50
+ "typescript": "5.9.2"
51
+ },
52
+ "dependencies": {
53
+ "jsonwebtoken": "^9.0.2",
54
+ "jwks-rsa": "^3.1.0"
55
+ },
56
+ "peerDependencies": {
57
+ "n8n-workflow": "*"
58
+ }
59
+ }