@fenge/eslint-config 0.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/LICENSE +21 -0
- package/README.md +94 -0
- package/dist/config/gitignore.d.ts +4 -0
- package/dist/config/gitignore.d.ts.map +1 -0
- package/dist/config/gitignore.js +19 -0
- package/dist/config/ignore.d.ts +14 -0
- package/dist/config/ignore.d.ts.map +1 -0
- package/dist/config/ignore.js +22 -0
- package/dist/config/javascript.d.ts +419 -0
- package/dist/config/javascript.d.ts.map +1 -0
- package/dist/config/javascript.js +474 -0
- package/dist/config/packagejson.d.ts +29 -0
- package/dist/config/packagejson.d.ts.map +1 -0
- package/dist/config/packagejson.js +34 -0
- package/dist/config/typescript.d.ts +533 -0
- package/dist/config/typescript.d.ts.map +1 -0
- package/dist/config/typescript.js +238 -0
- package/dist/eslint.config.d.ts +25 -0
- package/dist/eslint.config.d.ts.map +1 -0
- package/dist/eslint.config.js +68 -0
- package/package.json +59 -0
- package/src/config/gitignore.ts +24 -0
- package/src/config/ignore.ts +21 -0
- package/src/config/javascript.spec.ts +31 -0
- package/src/config/javascript.ts +485 -0
- package/src/config/packagejson.ts +34 -0
- package/src/config/typescript.spec.ts +84 -0
- package/src/config/typescript.ts +261 -0
- package/src/eslint.config.spec.ts +32 -0
- package/src/eslint.config.ts +100 -0
- package/src/typing.d.ts +8 -0
- package/test/no-duplicated.spec.ts +61 -0
- package/test/prettier.spec.ts +42 -0
- package/tsconfig.build.json +5 -0
- package/tsconfig.json +3 -0
|
@@ -0,0 +1,474 @@
|
|
|
1
|
+
import * as fengePlugin from "@fenge/eslint-plugin";
|
|
2
|
+
import tsPlugin from "@typescript-eslint/eslint-plugin";
|
|
3
|
+
import confusingKeys from "confusing-browser-globals";
|
|
4
|
+
import esxPlugin from "eslint-plugin-es-x";
|
|
5
|
+
import * as esmPlugin from "eslint-plugin-esm";
|
|
6
|
+
import fpPlugin from "eslint-plugin-fp";
|
|
7
|
+
import importPlugin from "eslint-plugin-import";
|
|
8
|
+
import nPlugin from "eslint-plugin-n";
|
|
9
|
+
import promisePlugin from "eslint-plugin-promise";
|
|
10
|
+
import reactPlugin from "eslint-plugin-react";
|
|
11
|
+
import reactHooksPlugin from "eslint-plugin-react-hooks";
|
|
12
|
+
import simpleImportSortPlugin from "eslint-plugin-simple-import-sort";
|
|
13
|
+
import sonarjsPlugin from "eslint-plugin-sonarjs";
|
|
14
|
+
import unicornPlugin from "eslint-plugin-unicorn";
|
|
15
|
+
import globals from "globals";
|
|
16
|
+
export function javascript() {
|
|
17
|
+
// copied from https://github.com/standard/eslint-config-standard/blob/master/src/index.ts
|
|
18
|
+
// prettier-ignore
|
|
19
|
+
const standardConfigRules = {
|
|
20
|
+
'no-var': 'error',
|
|
21
|
+
'object-shorthand': ['error', 'properties'],
|
|
22
|
+
'accessor-pairs': ['error', { setWithoutGet: true, enforceForClassMembers: true }],
|
|
23
|
+
// 'array-bracket-spacing': ['error', 'never'],
|
|
24
|
+
'array-callback-return': ['error', {
|
|
25
|
+
allowImplicit: false,
|
|
26
|
+
checkForEach: false
|
|
27
|
+
}],
|
|
28
|
+
// 'arrow-spacing': ['error', { before: true, after: true }],
|
|
29
|
+
// 'block-spacing': ['error', 'always'],
|
|
30
|
+
// 'brace-style': ['error', '1tbs', { allowSingleLine: true }],
|
|
31
|
+
camelcase: ['error', {
|
|
32
|
+
allow: ['^UNSAFE_'],
|
|
33
|
+
properties: 'never',
|
|
34
|
+
ignoreGlobals: true
|
|
35
|
+
}],
|
|
36
|
+
// 'comma-dangle': ['error', {
|
|
37
|
+
// arrays: 'never',
|
|
38
|
+
// objects: 'never',
|
|
39
|
+
// imports: 'never',
|
|
40
|
+
// exports: 'never',
|
|
41
|
+
// functions: 'never'
|
|
42
|
+
// }],
|
|
43
|
+
// 'comma-spacing': ['error', { before: false, after: true }],
|
|
44
|
+
// 'comma-style': ['error', 'last'],
|
|
45
|
+
// 'computed-property-spacing': ['error', 'never', { enforceForClassMembers: true }],
|
|
46
|
+
'constructor-super': 'error',
|
|
47
|
+
// curly: ['error', 'multi-line'],
|
|
48
|
+
'default-case-last': 'error',
|
|
49
|
+
// 'dot-location': ['error', 'property'],
|
|
50
|
+
// 'dot-notation': ['error', { allowKeywords: true }], // TODO: This should be enabled. Disable it as it conflicts with ts when enabling ts-check
|
|
51
|
+
// 'eol-last': 'error',
|
|
52
|
+
eqeqeq: ['error', 'always', { null: 'ignore' }],
|
|
53
|
+
// 'func-call-spacing': ['error', 'never'],
|
|
54
|
+
// 'generator-star-spacing': ['error', { before: true, after: true }],
|
|
55
|
+
// indent: ['error', 2, {
|
|
56
|
+
// SwitchCase: 1,
|
|
57
|
+
// VariableDeclarator: 1,
|
|
58
|
+
// outerIIFEBody: 1,
|
|
59
|
+
// MemberExpression: 1,
|
|
60
|
+
// FunctionDeclaration: { parameters: 1, body: 1 },
|
|
61
|
+
// FunctionExpression: { parameters: 1, body: 1 },
|
|
62
|
+
// CallExpression: { arguments: 1 },
|
|
63
|
+
// ArrayExpression: 1,
|
|
64
|
+
// ObjectExpression: 1,
|
|
65
|
+
// ImportDeclaration: 1,
|
|
66
|
+
// flatTernaryExpressions: false,
|
|
67
|
+
// ignoreComments: false,
|
|
68
|
+
// ignoredNodes: [
|
|
69
|
+
// 'TemplateLiteral *',
|
|
70
|
+
// 'JSXElement',
|
|
71
|
+
// 'JSXElement > *',
|
|
72
|
+
// 'JSXAttribute',
|
|
73
|
+
// 'JSXIdentifier',
|
|
74
|
+
// 'JSXNamespacedName',
|
|
75
|
+
// 'JSXMemberExpression',
|
|
76
|
+
// 'JSXSpreadAttribute',
|
|
77
|
+
// 'JSXExpressionContainer',
|
|
78
|
+
// 'JSXOpeningElement',
|
|
79
|
+
// 'JSXClosingElement',
|
|
80
|
+
// 'JSXFragment',
|
|
81
|
+
// 'JSXOpeningFragment',
|
|
82
|
+
// 'JSXClosingFragment',
|
|
83
|
+
// 'JSXText',
|
|
84
|
+
// 'JSXEmptyExpression',
|
|
85
|
+
// 'JSXSpreadChild'
|
|
86
|
+
// ],
|
|
87
|
+
// offsetTernaryExpressions: true
|
|
88
|
+
// }],
|
|
89
|
+
// 'key-spacing': ['error', { beforeColon: false, afterColon: true }],
|
|
90
|
+
// 'keyword-spacing': ['error', { before: true, after: true }],
|
|
91
|
+
'lines-between-class-members': ['error', 'always', { exceptAfterSingleLine: true }],
|
|
92
|
+
// 'multiline-ternary': ['error', 'always-multiline'],
|
|
93
|
+
'new-cap': ['error', { newIsCap: true, capIsNew: false, properties: true }],
|
|
94
|
+
// 'new-parens': 'error',
|
|
95
|
+
'no-array-constructor': 'error',
|
|
96
|
+
'no-async-promise-executor': 'error',
|
|
97
|
+
'no-caller': 'error',
|
|
98
|
+
'no-case-declarations': 'error',
|
|
99
|
+
'no-class-assign': 'error',
|
|
100
|
+
'no-compare-neg-zero': 'error',
|
|
101
|
+
'no-cond-assign': 'error',
|
|
102
|
+
'no-const-assign': 'error',
|
|
103
|
+
'no-constant-condition': ['error', { checkLoops: false }],
|
|
104
|
+
'no-control-regex': 'error',
|
|
105
|
+
'no-debugger': 'error',
|
|
106
|
+
'no-delete-var': 'error',
|
|
107
|
+
'no-dupe-args': 'error',
|
|
108
|
+
'no-dupe-class-members': 'error',
|
|
109
|
+
'no-dupe-keys': 'error',
|
|
110
|
+
'no-duplicate-case': 'error',
|
|
111
|
+
'no-useless-backreference': 'error',
|
|
112
|
+
'no-empty': ['error', { allowEmptyCatch: true }],
|
|
113
|
+
'no-empty-character-class': 'error',
|
|
114
|
+
'no-empty-pattern': 'error',
|
|
115
|
+
'no-eval': 'error',
|
|
116
|
+
'no-ex-assign': 'error',
|
|
117
|
+
'no-extend-native': 'error',
|
|
118
|
+
'no-extra-bind': 'error',
|
|
119
|
+
'no-extra-boolean-cast': 'error',
|
|
120
|
+
// 'no-extra-parens': ['error', 'functions'],
|
|
121
|
+
'no-fallthrough': 'error',
|
|
122
|
+
// 'no-floating-decimal': 'error',
|
|
123
|
+
'no-func-assign': 'error',
|
|
124
|
+
'no-global-assign': 'error',
|
|
125
|
+
'no-implied-eval': 'error',
|
|
126
|
+
'no-import-assign': 'error',
|
|
127
|
+
'no-invalid-regexp': 'error',
|
|
128
|
+
'no-irregular-whitespace': 'error',
|
|
129
|
+
'no-iterator': 'error',
|
|
130
|
+
'no-labels': ['error', { allowLoop: false, allowSwitch: false }],
|
|
131
|
+
'no-lone-blocks': 'error',
|
|
132
|
+
'no-loss-of-precision': 'error',
|
|
133
|
+
'no-misleading-character-class': 'error',
|
|
134
|
+
'no-prototype-builtins': 'error',
|
|
135
|
+
'no-useless-catch': 'error',
|
|
136
|
+
// 'no-mixed-operators': ['error', {
|
|
137
|
+
// groups: [
|
|
138
|
+
// ['==', '!=', '===', '!==', '>', '>=', '<', '<='],
|
|
139
|
+
// ['&&', '||'],
|
|
140
|
+
// ['in', 'instanceof']
|
|
141
|
+
// ],
|
|
142
|
+
// allowSamePrecedence: true
|
|
143
|
+
// }],
|
|
144
|
+
// 'no-mixed-spaces-and-tabs': 'error',
|
|
145
|
+
// 'no-multi-spaces': 'error',
|
|
146
|
+
'no-multi-str': 'error',
|
|
147
|
+
// 'no-multiple-empty-lines': ['error', { max: 1, maxBOF: 0, maxEOF: 0 }],
|
|
148
|
+
'no-new': 'error',
|
|
149
|
+
'no-new-func': 'error',
|
|
150
|
+
'no-new-object': 'error',
|
|
151
|
+
'no-new-symbol': 'error',
|
|
152
|
+
'no-new-wrappers': 'error',
|
|
153
|
+
'no-obj-calls': 'error',
|
|
154
|
+
'no-octal': 'error',
|
|
155
|
+
'no-octal-escape': 'error',
|
|
156
|
+
'no-proto': 'error',
|
|
157
|
+
'no-redeclare': ['error', { builtinGlobals: false }],
|
|
158
|
+
'no-regex-spaces': 'error',
|
|
159
|
+
'no-return-assign': ['error', 'except-parens'],
|
|
160
|
+
'no-self-assign': ['error', { props: true }],
|
|
161
|
+
'no-self-compare': 'error',
|
|
162
|
+
'no-sequences': 'error',
|
|
163
|
+
'no-shadow-restricted-names': 'error',
|
|
164
|
+
'no-sparse-arrays': 'error',
|
|
165
|
+
// 'no-tabs': 'error',
|
|
166
|
+
'no-template-curly-in-string': 'error',
|
|
167
|
+
'no-this-before-super': 'error',
|
|
168
|
+
'no-throw-literal': 'error',
|
|
169
|
+
// 'no-trailing-spaces': 'error',
|
|
170
|
+
'no-undef': 'error',
|
|
171
|
+
// 'no-undef-init': 'error', // It conflict with `init-declarations`
|
|
172
|
+
// 'no-unexpected-multiline': 'error',
|
|
173
|
+
'no-unmodified-loop-condition': 'error',
|
|
174
|
+
'no-unneeded-ternary': ['error', { defaultAssignment: false }],
|
|
175
|
+
'no-unreachable': 'error',
|
|
176
|
+
'no-unreachable-loop': 'error',
|
|
177
|
+
'no-unsafe-finally': 'error',
|
|
178
|
+
'no-unsafe-negation': 'error',
|
|
179
|
+
'no-unused-expressions': ['error', {
|
|
180
|
+
allowShortCircuit: true,
|
|
181
|
+
allowTernary: true,
|
|
182
|
+
allowTaggedTemplates: true
|
|
183
|
+
}],
|
|
184
|
+
'no-unused-vars': ['error', {
|
|
185
|
+
args: 'none',
|
|
186
|
+
caughtErrors: 'none',
|
|
187
|
+
ignoreRestSiblings: true,
|
|
188
|
+
vars: 'all'
|
|
189
|
+
}],
|
|
190
|
+
'no-use-before-define': ['error', { functions: false, classes: false, variables: false }],
|
|
191
|
+
'no-useless-call': 'error',
|
|
192
|
+
'no-useless-computed-key': 'error',
|
|
193
|
+
'no-useless-constructor': 'error',
|
|
194
|
+
'no-useless-escape': 'error',
|
|
195
|
+
'no-useless-rename': 'error',
|
|
196
|
+
'no-useless-return': 'error',
|
|
197
|
+
'no-void': 'error',
|
|
198
|
+
// 'no-whitespace-before-property': 'error',
|
|
199
|
+
'no-with': 'error',
|
|
200
|
+
// 'object-curly-newline': ['error', { multiline: true, consistent: true }],
|
|
201
|
+
// 'object-curly-spacing': ['error', 'always'],
|
|
202
|
+
// 'object-property-newline': ['error', { allowMultiplePropertiesPerLine: true }],
|
|
203
|
+
'one-var': ['error', { initialized: 'never' }],
|
|
204
|
+
// 'operator-linebreak': ['error', 'after', { overrides: { '?': 'before', ':': 'before', '|>': 'before' } }],
|
|
205
|
+
// 'padded-blocks': ['error', { blocks: 'never', switches: 'never', classes: 'never' }],
|
|
206
|
+
'prefer-const': ['error', { destructuring: 'all' }],
|
|
207
|
+
'prefer-promise-reject-errors': 'error',
|
|
208
|
+
'prefer-regex-literals': ['error', { disallowRedundantWrapping: true }],
|
|
209
|
+
// 'quote-props': ['error', 'as-needed'],
|
|
210
|
+
// quotes: ['error', 'single', { avoidEscape: true, allowTemplateLiterals: false }],
|
|
211
|
+
// 'rest-spread-spacing': ['error', 'never'],
|
|
212
|
+
// semi: ['error', 'never'],
|
|
213
|
+
// 'semi-spacing': ['error', { before: false, after: true }],
|
|
214
|
+
// 'space-before-blocks': ['error', 'always'],
|
|
215
|
+
// 'space-before-function-paren': ['error', 'always'],
|
|
216
|
+
// 'space-in-parens': ['error', 'never'],
|
|
217
|
+
// 'space-infix-ops': 'error',
|
|
218
|
+
// 'space-unary-ops': ['error', { words: true, nonwords: false }],
|
|
219
|
+
'spaced-comment': ['error', 'always', {
|
|
220
|
+
line: { markers: ['*package', '!', '/', ',', '='] },
|
|
221
|
+
block: { balanced: true, markers: ['*package', '!', ',', ':', '::', 'flow-include'], exceptions: ['*'] }
|
|
222
|
+
}],
|
|
223
|
+
'symbol-description': 'error',
|
|
224
|
+
// 'template-curly-spacing': ['error', 'never'],
|
|
225
|
+
// 'template-tag-spacing': ['error', 'never'],
|
|
226
|
+
'unicode-bom': ['error', 'never'],
|
|
227
|
+
'use-isnan': ['error', {
|
|
228
|
+
enforceForSwitchCase: true,
|
|
229
|
+
enforceForIndexOf: true
|
|
230
|
+
}],
|
|
231
|
+
'valid-typeof': ['error', { requireStringLiterals: true }],
|
|
232
|
+
// 'wrap-iife': ['error', 'any', { functionPrototypeMethods: true }],
|
|
233
|
+
// 'yield-star-spacing': ['error', 'both'],
|
|
234
|
+
yoda: ['error', 'never'],
|
|
235
|
+
'import/export': 'error',
|
|
236
|
+
'import/first': 'error',
|
|
237
|
+
'import/no-absolute-path': ['error', { esmodule: true, commonjs: true, amd: false }],
|
|
238
|
+
'import/no-duplicates': 'error',
|
|
239
|
+
'import/no-named-default': 'error',
|
|
240
|
+
'import/no-webpack-loader-syntax': 'error',
|
|
241
|
+
'n/handle-callback-err': ['error', '^(err|error)$'],
|
|
242
|
+
'n/no-callback-literal': 'error',
|
|
243
|
+
'n/no-deprecated-api': 'error',
|
|
244
|
+
'n/no-exports-assign': 'error',
|
|
245
|
+
'n/no-new-require': 'error',
|
|
246
|
+
'n/no-path-concat': 'error',
|
|
247
|
+
'n/process-exit-as-throw': 'error',
|
|
248
|
+
'promise/param-names': 'error'
|
|
249
|
+
};
|
|
250
|
+
return [
|
|
251
|
+
{
|
|
252
|
+
name: "fenge/javascript",
|
|
253
|
+
files: ["**/*.{js,cjs,mjs,jsx}"],
|
|
254
|
+
// https://eslint.org/docs/latest/use/configure/language-options
|
|
255
|
+
languageOptions: {
|
|
256
|
+
ecmaVersion: "latest",
|
|
257
|
+
sourceType: "module",
|
|
258
|
+
parserOptions: {
|
|
259
|
+
// TODO `ecmaVersion` and `sourceType` are no standard here. import/no-default-export required this
|
|
260
|
+
ecmaVersion: "latest",
|
|
261
|
+
sourceType: "module",
|
|
262
|
+
ecmaFeatures: {
|
|
263
|
+
jsx: true,
|
|
264
|
+
},
|
|
265
|
+
},
|
|
266
|
+
globals: {
|
|
267
|
+
...Object.fromEntries(Object.entries(globals.browser)
|
|
268
|
+
.filter(([k]) => !confusingKeys.includes(k))
|
|
269
|
+
.filter(([k]) => !["self", "global"].includes(k))),
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
linterOptions: {
|
|
273
|
+
// noInlineConfig: true, // too strict
|
|
274
|
+
reportUnusedDisableDirectives: true,
|
|
275
|
+
},
|
|
276
|
+
plugins: {
|
|
277
|
+
fp: fpPlugin,
|
|
278
|
+
n: nPlugin,
|
|
279
|
+
import: importPlugin,
|
|
280
|
+
promise: promisePlugin,
|
|
281
|
+
react: reactPlugin,
|
|
282
|
+
"react-hooks": reactHooksPlugin,
|
|
283
|
+
sonarjs: sonarjsPlugin,
|
|
284
|
+
unicorn: unicornPlugin,
|
|
285
|
+
"es-x": esxPlugin,
|
|
286
|
+
esm: esmPlugin,
|
|
287
|
+
"simple-import-sort": simpleImportSortPlugin,
|
|
288
|
+
"@fenge": fengePlugin,
|
|
289
|
+
"@typescript-eslint": tsPlugin,
|
|
290
|
+
},
|
|
291
|
+
rules: {
|
|
292
|
+
// 1. standard config rules
|
|
293
|
+
...standardConfigRules,
|
|
294
|
+
// 2. code style for a better readability
|
|
295
|
+
"arrow-body-style": ["error", "as-needed"],
|
|
296
|
+
"import/newline-after-import": ["error", { count: 1 }],
|
|
297
|
+
// Sort imports by prettier. Turn in off.
|
|
298
|
+
// "simple-import-sort/imports": [
|
|
299
|
+
// "error",
|
|
300
|
+
// { groups: [["^\\u0000", "^node:", "^@?\\w", "^", "^\\."]] },
|
|
301
|
+
// ],
|
|
302
|
+
"simple-import-sort/exports": "error",
|
|
303
|
+
"unicorn/prefer-node-protocol": "error",
|
|
304
|
+
"unicorn/escape-case": "error", // '\ud834' -> '\uD834'
|
|
305
|
+
// "unicorn/number-literal-case": "error", // 0XFF -> 0xFF // conflict with prettier
|
|
306
|
+
// 3. ban some syntaxes to reduce mistakes
|
|
307
|
+
"default-param-last": "error",
|
|
308
|
+
"func-name-matching": "error",
|
|
309
|
+
"getter-return": "error",
|
|
310
|
+
"init-declarations": "error",
|
|
311
|
+
"max-params": ["error", { max: 4 }],
|
|
312
|
+
"no-duplicate-imports": "error",
|
|
313
|
+
"no-empty-static-block": "error",
|
|
314
|
+
"no-empty-function": "error",
|
|
315
|
+
"no-implicit-coercion": [
|
|
316
|
+
"error",
|
|
317
|
+
{ disallowTemplateShorthand: true, allow: ["!!"] },
|
|
318
|
+
], // forbid code like `const num = +str`;
|
|
319
|
+
"no-invalid-this": "error",
|
|
320
|
+
"no-multi-assign": "error",
|
|
321
|
+
"no-param-reassign": "error",
|
|
322
|
+
"no-plusplus": "error",
|
|
323
|
+
"no-setter-return": "error",
|
|
324
|
+
"no-shadow": ["error", { ignoreOnInitialization: true }],
|
|
325
|
+
"no-unused-private-class-members": "error",
|
|
326
|
+
"prefer-arrow-callback": "error",
|
|
327
|
+
"prefer-exponentiation-operator": "error",
|
|
328
|
+
"prefer-object-has-own": "error",
|
|
329
|
+
"prefer-template": "error",
|
|
330
|
+
// es
|
|
331
|
+
"es-x/no-accessor-properties": "error",
|
|
332
|
+
"es-x/no-async-iteration": "error",
|
|
333
|
+
"es-x/no-generators": "error",
|
|
334
|
+
"es-x/no-legacy-object-prototype-accessor-methods": "error",
|
|
335
|
+
// esm
|
|
336
|
+
"esm/nearest-relative-path": "error",
|
|
337
|
+
"esm/no-directory-imports": "error",
|
|
338
|
+
"esm/no-dynamic-imports": "error",
|
|
339
|
+
"esm/no-git-ignored-imports": "error",
|
|
340
|
+
"esm/no-phantom-dep-imports": "error",
|
|
341
|
+
"esm/no-relative-parent-imports": "error",
|
|
342
|
+
"esm/no-rename-exports": "error",
|
|
343
|
+
"esm/no-rename-imports": "error",
|
|
344
|
+
"esm/no-side-effect-imports": "error",
|
|
345
|
+
"esm/no-ts-file-imports": "error",
|
|
346
|
+
// fp
|
|
347
|
+
"fp/no-arguments": "error",
|
|
348
|
+
"fp/no-delete": "error",
|
|
349
|
+
// import
|
|
350
|
+
"import/extensions": ["error", "always", { ignorePackages: true }],
|
|
351
|
+
"import/no-commonjs": [
|
|
352
|
+
"error",
|
|
353
|
+
{
|
|
354
|
+
allowRequire: false,
|
|
355
|
+
allowConditionalRequire: false,
|
|
356
|
+
allowPrimitiveModules: false,
|
|
357
|
+
},
|
|
358
|
+
],
|
|
359
|
+
/**
|
|
360
|
+
* 1. The ESM specification didn’t say anything about interoperability with CommonJS. See: https://blog.andrewbran.ch/default-exports-in-commonjs-libraries/
|
|
361
|
+
* 2. Reexporting like `export * from 'foo'` will be difficult.
|
|
362
|
+
*/
|
|
363
|
+
"import/no-default-export": "error",
|
|
364
|
+
"import/no-dynamic-require": "error",
|
|
365
|
+
"import/no-mutable-exports": "error", // forbid code like `export let count = 3`
|
|
366
|
+
"import/no-relative-packages": "error", // forbid to import module from other monorepo packages by relative paths
|
|
367
|
+
"import/no-self-import": "error",
|
|
368
|
+
// n
|
|
369
|
+
"n/prefer-global/buffer": ["error", "never"],
|
|
370
|
+
"n/prefer-global/console": "error",
|
|
371
|
+
"n/prefer-global/process": ["error", "never"],
|
|
372
|
+
"n/prefer-global/text-decoder": "error",
|
|
373
|
+
"n/prefer-global/text-encoder": "error",
|
|
374
|
+
"n/prefer-global/url": "error",
|
|
375
|
+
"n/prefer-global/url-search-params": "error",
|
|
376
|
+
// react
|
|
377
|
+
"react/jsx-key": "error",
|
|
378
|
+
"react/jsx-no-duplicate-props": "error",
|
|
379
|
+
"react/jsx-no-undef": "error",
|
|
380
|
+
// react-hooks
|
|
381
|
+
"react-hooks/exhaustive-deps": "error",
|
|
382
|
+
"react-hooks/rules-of-hooks": "error",
|
|
383
|
+
// sonarjs
|
|
384
|
+
"sonarjs/no-collapsible-if": "error",
|
|
385
|
+
"sonarjs/no-all-duplicated-branches": "error",
|
|
386
|
+
"sonarjs/no-identical-conditions": "error",
|
|
387
|
+
"sonarjs/no-identical-expressions": "error",
|
|
388
|
+
"sonarjs/no-ignored-return": "error",
|
|
389
|
+
"sonarjs/no-inverted-boolean-check": "error",
|
|
390
|
+
"sonarjs/no-nested-switch": "error",
|
|
391
|
+
"sonarjs/no-useless-catch": "error",
|
|
392
|
+
"sonarjs/prefer-immediate-return": "error",
|
|
393
|
+
// unicorn
|
|
394
|
+
// 'unicorn/no-null': 'error', // null can be useful when interact with json.
|
|
395
|
+
"unicorn/consistent-destructuring": "error",
|
|
396
|
+
"unicorn/consistent-empty-array-spread": "error",
|
|
397
|
+
"unicorn/error-message": "error",
|
|
398
|
+
"unicorn/explicit-length-check": "error",
|
|
399
|
+
"unicorn/filename-case": [
|
|
400
|
+
"error",
|
|
401
|
+
{ cases: { kebabCase: true, pascalCase: true } },
|
|
402
|
+
],
|
|
403
|
+
"unicorn/import-style": [
|
|
404
|
+
"error",
|
|
405
|
+
{
|
|
406
|
+
styles: {
|
|
407
|
+
child_process: { default: true },
|
|
408
|
+
fs: { default: true },
|
|
409
|
+
"fs/promises": { default: true },
|
|
410
|
+
process: { default: true },
|
|
411
|
+
"util/types": { named: true },
|
|
412
|
+
"node:child_process": { default: true },
|
|
413
|
+
"node:fs": { default: true },
|
|
414
|
+
"node:fs/promises": { default: true },
|
|
415
|
+
"node:process": { default: true },
|
|
416
|
+
"node:util/types": { named: true },
|
|
417
|
+
},
|
|
418
|
+
},
|
|
419
|
+
],
|
|
420
|
+
"unicorn/new-for-builtins": "error",
|
|
421
|
+
"unicorn/no-abusive-eslint-disable": "error",
|
|
422
|
+
"unicorn/no-array-callback-reference": "error",
|
|
423
|
+
"unicorn/no-array-method-this-argument": "error",
|
|
424
|
+
"unicorn/no-for-loop": "error",
|
|
425
|
+
"unicorn/no-instanceof-array": "error",
|
|
426
|
+
"unicorn/no-new-array": "error",
|
|
427
|
+
"unicorn/no-new-buffer": "error",
|
|
428
|
+
"unicorn/no-typeof-undefined": "error",
|
|
429
|
+
"unicorn/no-unreadable-iife": "error",
|
|
430
|
+
"unicorn/no-useless-spread": "error",
|
|
431
|
+
"unicorn/prefer-array-flat-map": "error",
|
|
432
|
+
"unicorn/prefer-global-this": "error",
|
|
433
|
+
"unicorn/prefer-includes": "error",
|
|
434
|
+
"unicorn/prefer-module": "error",
|
|
435
|
+
"unicorn/prefer-number-properties": "error",
|
|
436
|
+
"unicorn/prefer-string-slice": "error",
|
|
437
|
+
"unicorn/prefer-ternary": "error",
|
|
438
|
+
"unicorn/throw-new-error": "error",
|
|
439
|
+
"@fenge/call-arguments-length": "error",
|
|
440
|
+
"@fenge/no-instanceof-builtin": "error",
|
|
441
|
+
"@fenge/no-restricted-loops": "error",
|
|
442
|
+
"@fenge/no-unnecessary-template-string": "error",
|
|
443
|
+
"@typescript-eslint/ban-ts-comment": [
|
|
444
|
+
"error",
|
|
445
|
+
{
|
|
446
|
+
"ts-expect-error": true,
|
|
447
|
+
"ts-ignore": true,
|
|
448
|
+
"ts-nocheck": true,
|
|
449
|
+
},
|
|
450
|
+
],
|
|
451
|
+
"@typescript-eslint/no-useless-empty-export": "error",
|
|
452
|
+
},
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
name: "fenge/javascript/config",
|
|
456
|
+
files: ["**/*.config.{js,cjs,mjs,jsx}"],
|
|
457
|
+
rules: {
|
|
458
|
+
"import/no-default-export": "off",
|
|
459
|
+
},
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
// https://github.com/motemen/minimatch-cheat-sheet
|
|
463
|
+
name: "fenge/javascript/test",
|
|
464
|
+
files: [
|
|
465
|
+
"**/__tests__/**/*.{js,cjs,mjs,jsx}",
|
|
466
|
+
"**/*.{test,spec}.{js,cjs,mjs,jsx}",
|
|
467
|
+
],
|
|
468
|
+
rules: {
|
|
469
|
+
"esm/no-phantom-dep-imports": ["error", { allowDevDependencies: true }],
|
|
470
|
+
},
|
|
471
|
+
},
|
|
472
|
+
];
|
|
473
|
+
}
|
|
474
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvamF2YXNjcmlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssV0FBVyxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sUUFBUSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hELE9BQU8sYUFBYSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQzNDLE9BQU8sS0FBSyxTQUFTLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxRQUFRLE1BQU0sa0JBQWtCLENBQUM7QUFDeEMsT0FBTyxZQUFZLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxPQUFPLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxhQUFhLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxXQUFXLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxnQkFBZ0IsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLHNCQUFzQixNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sYUFBYSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sYUFBYSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUU5QixNQUFNLFVBQVUsVUFBVTtJQUN4QiwwRkFBMEY7SUFDMUYsa0JBQWtCO0lBQ2xCLE1BQU0sbUJBQW1CLEdBQUc7UUFDMUIsUUFBUSxFQUFFLE9BQU87UUFDakIsa0JBQWtCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDO1FBRTNDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNsRiwrQ0FBK0M7UUFDL0MsdUJBQXVCLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2pDLGFBQWEsRUFBRSxLQUFLO2dCQUNwQixZQUFZLEVBQUUsS0FBSzthQUNwQixDQUFDO1FBQ0YsNkRBQTZEO1FBQzdELHdDQUF3QztRQUN4QywrREFBK0Q7UUFDL0QsU0FBUyxFQUFFLENBQUMsT0FBTyxFQUFFO2dCQUNuQixLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUM7Z0JBQ25CLFVBQVUsRUFBRSxPQUFPO2dCQUNuQixhQUFhLEVBQUUsSUFBSTthQUNwQixDQUFDO1FBQ0YsOEJBQThCO1FBQzlCLHFCQUFxQjtRQUNyQixzQkFBc0I7UUFDdEIsc0JBQXNCO1FBQ3RCLHNCQUFzQjtRQUN0Qix1QkFBdUI7UUFDdkIsTUFBTTtRQUNOLDhEQUE4RDtRQUM5RCxvQ0FBb0M7UUFDcEMscUZBQXFGO1FBQ3JGLG1CQUFtQixFQUFFLE9BQU87UUFDNUIsa0NBQWtDO1FBQ2xDLG1CQUFtQixFQUFFLE9BQU87UUFDNUIseUNBQXlDO1FBQ3pDLGlKQUFpSjtRQUNqSix1QkFBdUI7UUFDdkIsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUMvQywyQ0FBMkM7UUFDM0Msc0VBQXNFO1FBQ3RFLHlCQUF5QjtRQUN6QixtQkFBbUI7UUFDbkIsMkJBQTJCO1FBQzNCLHNCQUFzQjtRQUN0Qix5QkFBeUI7UUFDekIscURBQXFEO1FBQ3JELG9EQUFvRDtRQUNwRCxzQ0FBc0M7UUFDdEMsd0JBQXdCO1FBQ3hCLHlCQUF5QjtRQUN6QiwwQkFBMEI7UUFDMUIsbUNBQW1DO1FBQ25DLDJCQUEyQjtRQUMzQixvQkFBb0I7UUFDcEIsMkJBQTJCO1FBQzNCLG9CQUFvQjtRQUNwQix3QkFBd0I7UUFDeEIsc0JBQXNCO1FBQ3RCLHVCQUF1QjtRQUN2QiwyQkFBMkI7UUFDM0IsNkJBQTZCO1FBQzdCLDRCQUE0QjtRQUM1QixnQ0FBZ0M7UUFDaEMsMkJBQTJCO1FBQzNCLDJCQUEyQjtRQUMzQixxQkFBcUI7UUFDckIsNEJBQTRCO1FBQzVCLDRCQUE0QjtRQUM1QixpQkFBaUI7UUFDakIsNEJBQTRCO1FBQzVCLHVCQUF1QjtRQUN2QixPQUFPO1FBQ1AsbUNBQW1DO1FBQ25DLE1BQU07UUFDTixzRUFBc0U7UUFDdEUsK0RBQStEO1FBQy9ELDZCQUE2QixFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxDQUFDO1FBQ25GLHNEQUFzRDtRQUN0RCxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQzNFLHlCQUF5QjtRQUN6QixzQkFBc0IsRUFBRSxPQUFPO1FBQy9CLDJCQUEyQixFQUFFLE9BQU87UUFDcEMsV0FBVyxFQUFFLE9BQU87UUFDcEIsc0JBQXNCLEVBQUUsT0FBTztRQUMvQixpQkFBaUIsRUFBRSxPQUFPO1FBQzFCLHFCQUFxQixFQUFFLE9BQU87UUFDOUIsZ0JBQWdCLEVBQUUsT0FBTztRQUN6QixpQkFBaUIsRUFBRSxPQUFPO1FBQzFCLHVCQUF1QixFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3pELGtCQUFrQixFQUFFLE9BQU87UUFDM0IsYUFBYSxFQUFFLE9BQU87UUFDdEIsZUFBZSxFQUFFLE9BQU87UUFDeEIsY0FBYyxFQUFFLE9BQU87UUFDdkIsdUJBQXVCLEVBQUUsT0FBTztRQUNoQyxjQUFjLEVBQUUsT0FBTztRQUN2QixtQkFBbUIsRUFBRSxPQUFPO1FBQzVCLDBCQUEwQixFQUFFLE9BQU87UUFDbkMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ2hELDBCQUEwQixFQUFFLE9BQU87UUFDbkMsa0JBQWtCLEVBQUUsT0FBTztRQUMzQixTQUFTLEVBQUUsT0FBTztRQUNsQixjQUFjLEVBQUUsT0FBTztRQUN2QixrQkFBa0IsRUFBRSxPQUFPO1FBQzNCLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLHVCQUF1QixFQUFFLE9BQU87UUFDaEMsNkNBQTZDO1FBQzdDLGdCQUFnQixFQUFFLE9BQU87UUFDekIsa0NBQWtDO1FBQ2xDLGdCQUFnQixFQUFFLE9BQU87UUFDekIsa0JBQWtCLEVBQUUsT0FBTztRQUMzQixpQkFBaUIsRUFBRSxPQUFPO1FBQzFCLGtCQUFrQixFQUFFLE9BQU87UUFDM0IsbUJBQW1CLEVBQUUsT0FBTztRQUM1Qix5QkFBeUIsRUFBRSxPQUFPO1FBQ2xDLGFBQWEsRUFBRSxPQUFPO1FBQ3RCLFdBQVcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2hFLGdCQUFnQixFQUFFLE9BQU87UUFDekIsc0JBQXNCLEVBQUUsT0FBTztRQUMvQiwrQkFBK0IsRUFBRSxPQUFPO1FBQ3hDLHVCQUF1QixFQUFFLE9BQU87UUFDaEMsa0JBQWtCLEVBQUUsT0FBTztRQUMzQixvQ0FBb0M7UUFDcEMsY0FBYztRQUNkLHdEQUF3RDtRQUN4RCxvQkFBb0I7UUFDcEIsMkJBQTJCO1FBQzNCLE9BQU87UUFDUCw4QkFBOEI7UUFDOUIsTUFBTTtRQUNOLHVDQUF1QztRQUN2Qyw4QkFBOEI7UUFDOUIsY0FBYyxFQUFFLE9BQU87UUFDdkIsMEVBQTBFO1FBQzFFLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLGFBQWEsRUFBRSxPQUFPO1FBQ3RCLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLGlCQUFpQixFQUFFLE9BQU87UUFDMUIsY0FBYyxFQUFFLE9BQU87UUFDdkIsVUFBVSxFQUFFLE9BQU87UUFDbkIsaUJBQWlCLEVBQUUsT0FBTztRQUMxQixVQUFVLEVBQUUsT0FBTztRQUNuQixjQUFjLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDcEQsaUJBQWlCLEVBQUUsT0FBTztRQUMxQixrQkFBa0IsRUFBRSxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUM7UUFDOUMsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDNUMsaUJBQWlCLEVBQUUsT0FBTztRQUMxQixjQUFjLEVBQUUsT0FBTztRQUN2Qiw0QkFBNEIsRUFBRSxPQUFPO1FBQ3JDLGtCQUFrQixFQUFFLE9BQU87UUFDM0Isc0JBQXNCO1FBQ3RCLDZCQUE2QixFQUFFLE9BQU87UUFDdEMsc0JBQXNCLEVBQUUsT0FBTztRQUMvQixrQkFBa0IsRUFBRSxPQUFPO1FBQzNCLGlDQUFpQztRQUNqQyxVQUFVLEVBQUUsT0FBTztRQUNuQixvRUFBb0U7UUFDcEUsc0NBQXNDO1FBQ3RDLDhCQUE4QixFQUFFLE9BQU87UUFDdkMscUJBQXFCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM5RCxnQkFBZ0IsRUFBRSxPQUFPO1FBQ3pCLHFCQUFxQixFQUFFLE9BQU87UUFDOUIsbUJBQW1CLEVBQUUsT0FBTztRQUM1QixvQkFBb0IsRUFBRSxPQUFPO1FBQzdCLHVCQUF1QixFQUFFLENBQUMsT0FBTyxFQUFFO2dCQUNqQyxpQkFBaUIsRUFBRSxJQUFJO2dCQUN2QixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsb0JBQW9CLEVBQUUsSUFBSTthQUMzQixDQUFDO1FBQ0YsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Z0JBQzFCLElBQUksRUFBRSxNQUFNO2dCQUNaLFlBQVksRUFBRSxNQUFNO2dCQUNwQixrQkFBa0IsRUFBRSxJQUFJO2dCQUN4QixJQUFJLEVBQUUsS0FBSzthQUNaLENBQUM7UUFDRixzQkFBc0IsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDekYsaUJBQWlCLEVBQUUsT0FBTztRQUMxQix5QkFBeUIsRUFBRSxPQUFPO1FBQ2xDLHdCQUF3QixFQUFFLE9BQU87UUFDakMsbUJBQW1CLEVBQUUsT0FBTztRQUM1QixtQkFBbUIsRUFBRSxPQUFPO1FBQzVCLG1CQUFtQixFQUFFLE9BQU87UUFDNUIsU0FBUyxFQUFFLE9BQU87UUFDbEIsNENBQTRDO1FBQzVDLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLDRFQUE0RTtRQUM1RSwrQ0FBK0M7UUFDL0Msa0ZBQWtGO1FBQ2xGLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUM5Qyw2R0FBNkc7UUFDN0csd0ZBQXdGO1FBQ3hGLGNBQWMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNuRCw4QkFBOEIsRUFBRSxPQUFPO1FBQ3ZDLHVCQUF1QixFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDdkUseUNBQXlDO1FBQ3pDLG9GQUFvRjtRQUNwRiw2Q0FBNkM7UUFDN0MsNEJBQTRCO1FBQzVCLDZEQUE2RDtRQUM3RCw4Q0FBOEM7UUFDOUMsc0RBQXNEO1FBQ3RELHlDQUF5QztRQUN6Qyw4QkFBOEI7UUFDOUIsa0VBQWtFO1FBQ2xFLGdCQUFnQixFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRTtnQkFDcEMsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNuRCxLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUU7YUFDekcsQ0FBQztRQUNGLG9CQUFvQixFQUFFLE9BQU87UUFDN0IsZ0RBQWdEO1FBQ2hELDhDQUE4QztRQUM5QyxhQUFhLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ2pDLFdBQVcsRUFBRSxDQUFDLE9BQU8sRUFBRTtnQkFDckIsb0JBQW9CLEVBQUUsSUFBSTtnQkFDMUIsaUJBQWlCLEVBQUUsSUFBSTthQUN4QixDQUFDO1FBQ0YsY0FBYyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDMUQscUVBQXFFO1FBQ3JFLDJDQUEyQztRQUMzQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBRXhCLGVBQWUsRUFBRSxPQUFPO1FBQ3hCLGNBQWMsRUFBRSxPQUFPO1FBQ3ZCLHlCQUF5QixFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNwRixzQkFBc0IsRUFBRSxPQUFPO1FBQy9CLHlCQUF5QixFQUFFLE9BQU87UUFDbEMsaUNBQWlDLEVBQUUsT0FBTztRQUUxQyx1QkFBdUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUM7UUFDbkQsdUJBQXVCLEVBQUUsT0FBTztRQUNoQyxxQkFBcUIsRUFBRSxPQUFPO1FBQzlCLHFCQUFxQixFQUFFLE9BQU87UUFDOUIsa0JBQWtCLEVBQUUsT0FBTztRQUMzQixrQkFBa0IsRUFBRSxPQUFPO1FBQzNCLHlCQUF5QixFQUFFLE9BQU87UUFFbEMscUJBQXFCLEVBQUUsT0FBTztLQUN0QixDQUFDO0lBRVgsT0FBTztRQUNMO1lBQ0UsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixLQUFLLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztZQUNoQyxnRUFBZ0U7WUFDaEUsZUFBZSxFQUFFO2dCQUNmLFdBQVcsRUFBRSxRQUFRO2dCQUNyQixVQUFVLEVBQUUsUUFBUTtnQkFDcEIsYUFBYSxFQUFFO29CQUNiLG1HQUFtRztvQkFDbkcsV0FBVyxFQUFFLFFBQVE7b0JBQ3JCLFVBQVUsRUFBRSxRQUFRO29CQUNwQixZQUFZLEVBQUU7d0JBQ1osR0FBRyxFQUFFLElBQUk7cUJBQ1Y7aUJBQ0Y7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDbkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO3lCQUM1QixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQzNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3BEO2lCQUNGO2FBQ0Y7WUFDRCxhQUFhLEVBQUU7Z0JBQ2Isc0NBQXNDO2dCQUN0Qyw2QkFBNkIsRUFBRSxJQUFJO2FBQ3BDO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEVBQUUsRUFBRSxRQUFRO2dCQUNaLENBQUMsRUFBRSxPQUFPO2dCQUNWLE1BQU0sRUFBRSxZQUFZO2dCQUNwQixPQUFPLEVBQUUsYUFBYTtnQkFDdEIsS0FBSyxFQUFFLFdBQVc7Z0JBQ2xCLGFBQWEsRUFBRSxnQkFBZ0I7Z0JBQy9CLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixPQUFPLEVBQUUsYUFBYTtnQkFDdEIsTUFBTSxFQUFFLFNBQVM7Z0JBQ2pCLEdBQUcsRUFBRSxTQUFTO2dCQUNkLG9CQUFvQixFQUFFLHNCQUFzQjtnQkFDNUMsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLG9CQUFvQixFQUFFLFFBQVE7YUFDL0I7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsMkJBQTJCO2dCQUMzQixHQUFHLG1CQUFtQjtnQkFFdEIseUNBQXlDO2dCQUN6QyxrQkFBa0IsRUFBRSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUM7Z0JBQzFDLDZCQUE2QixFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUN0RCx5Q0FBeUM7Z0JBQ3pDLGtDQUFrQztnQkFDbEMsYUFBYTtnQkFDYixpRUFBaUU7Z0JBQ2pFLEtBQUs7Z0JBQ0wsNEJBQTRCLEVBQUUsT0FBTztnQkFDckMsOEJBQThCLEVBQUUsT0FBTztnQkFDdkMscUJBQXFCLEVBQUUsT0FBTyxFQUFFLHVCQUF1QjtnQkFDdkQsb0ZBQW9GO2dCQUVwRiwwQ0FBMEM7Z0JBQzFDLG9CQUFvQixFQUFFLE9BQU87Z0JBQzdCLG9CQUFvQixFQUFFLE9BQU87Z0JBQzdCLGVBQWUsRUFBRSxPQUFPO2dCQUN4QixtQkFBbUIsRUFBRSxPQUFPO2dCQUM1QixZQUFZLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLHNCQUFzQixFQUFFLE9BQU87Z0JBQy9CLHVCQUF1QixFQUFFLE9BQU87Z0JBQ2hDLG1CQUFtQixFQUFFLE9BQU87Z0JBQzVCLHNCQUFzQixFQUFFO29CQUN0QixPQUFPO29CQUNQLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO2lCQUNuRCxFQUFFLHVDQUF1QztnQkFDMUMsaUJBQWlCLEVBQUUsT0FBTztnQkFDMUIsaUJBQWlCLEVBQUUsT0FBTztnQkFDMUIsbUJBQW1CLEVBQUUsT0FBTztnQkFDNUIsYUFBYSxFQUFFLE9BQU87Z0JBQ3RCLGtCQUFrQixFQUFFLE9BQU87Z0JBQzNCLFdBQVcsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLHNCQUFzQixFQUFFLElBQUksRUFBRSxDQUFDO2dCQUN4RCxpQ0FBaUMsRUFBRSxPQUFPO2dCQUMxQyx1QkFBdUIsRUFBRSxPQUFPO2dCQUNoQyxnQ0FBZ0MsRUFBRSxPQUFPO2dCQUN6Qyx1QkFBdUIsRUFBRSxPQUFPO2dCQUNoQyxpQkFBaUIsRUFBRSxPQUFPO2dCQUMxQixLQUFLO2dCQUNMLDZCQUE2QixFQUFFLE9BQU87Z0JBQ3RDLHlCQUF5QixFQUFFLE9BQU87Z0JBQ2xDLG9CQUFvQixFQUFFLE9BQU87Z0JBQzdCLGtEQUFrRCxFQUFFLE9BQU87Z0JBQzNELE1BQU07Z0JBQ04sMkJBQTJCLEVBQUUsT0FBTztnQkFDcEMsMEJBQTBCLEVBQUUsT0FBTztnQkFDbkMsd0JBQXdCLEVBQUUsT0FBTztnQkFDakMsNEJBQTRCLEVBQUUsT0FBTztnQkFDckMsNEJBQTRCLEVBQUUsT0FBTztnQkFDckMsZ0NBQWdDLEVBQUUsT0FBTztnQkFDekMsdUJBQXVCLEVBQUUsT0FBTztnQkFDaEMsdUJBQXVCLEVBQUUsT0FBTztnQkFDaEMsNEJBQTRCLEVBQUUsT0FBTztnQkFDckMsd0JBQXdCLEVBQUUsT0FBTztnQkFDakMsS0FBSztnQkFDTCxpQkFBaUIsRUFBRSxPQUFPO2dCQUMxQixjQUFjLEVBQUUsT0FBTztnQkFDdkIsU0FBUztnQkFDVCxtQkFBbUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQ2xFLG9CQUFvQixFQUFFO29CQUNwQixPQUFPO29CQUNQO3dCQUNFLFlBQVksRUFBRSxLQUFLO3dCQUNuQix1QkFBdUIsRUFBRSxLQUFLO3dCQUM5QixxQkFBcUIsRUFBRSxLQUFLO3FCQUM3QjtpQkFDRjtnQkFDRDs7O21CQUdHO2dCQUNILDBCQUEwQixFQUFFLE9BQU87Z0JBQ25DLDJCQUEyQixFQUFFLE9BQU87Z0JBQ3BDLDJCQUEyQixFQUFFLE9BQU8sRUFBRSwwQ0FBMEM7Z0JBQ2hGLDZCQUE2QixFQUFFLE9BQU8sRUFBRSx5RUFBeUU7Z0JBQ2pILHVCQUF1QixFQUFFLE9BQU87Z0JBQ2hDLElBQUk7Z0JBQ0osd0JBQXdCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO2dCQUM1Qyx5QkFBeUIsRUFBRSxPQUFPO2dCQUNsQyx5QkFBeUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7Z0JBQzdDLDhCQUE4QixFQUFFLE9BQU87Z0JBQ3ZDLDhCQUE4QixFQUFFLE9BQU87Z0JBQ3ZDLHFCQUFxQixFQUFFLE9BQU87Z0JBQzlCLG1DQUFtQyxFQUFFLE9BQU87Z0JBQzVDLFFBQVE7Z0JBQ1IsZUFBZSxFQUFFLE9BQU87Z0JBQ3hCLDhCQUE4QixFQUFFLE9BQU87Z0JBQ3ZDLG9CQUFvQixFQUFFLE9BQU87Z0JBQzdCLGNBQWM7Z0JBQ2QsNkJBQTZCLEVBQUUsT0FBTztnQkFDdEMsNEJBQTRCLEVBQUUsT0FBTztnQkFDckMsVUFBVTtnQkFDViwyQkFBMkIsRUFBRSxPQUFPO2dCQUNwQyxvQ0FBb0MsRUFBRSxPQUFPO2dCQUM3QyxpQ0FBaUMsRUFBRSxPQUFPO2dCQUMxQyxrQ0FBa0MsRUFBRSxPQUFPO2dCQUMzQywyQkFBMkIsRUFBRSxPQUFPO2dCQUNwQyxtQ0FBbUMsRUFBRSxPQUFPO2dCQUM1QywwQkFBMEIsRUFBRSxPQUFPO2dCQUNuQywwQkFBMEIsRUFBRSxPQUFPO2dCQUNuQyxpQ0FBaUMsRUFBRSxPQUFPO2dCQUMxQyxVQUFVO2dCQUNWLDZFQUE2RTtnQkFDN0Usa0NBQWtDLEVBQUUsT0FBTztnQkFDM0MsdUNBQXVDLEVBQUUsT0FBTztnQkFDaEQsdUJBQXVCLEVBQUUsT0FBTztnQkFDaEMsK0JBQStCLEVBQUUsT0FBTztnQkFDeEMsdUJBQXVCLEVBQUU7b0JBQ3ZCLE9BQU87b0JBQ1AsRUFBRSxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRTtpQkFDakQ7Z0JBQ0Qsc0JBQXNCLEVBQUU7b0JBQ3RCLE9BQU87b0JBQ1A7d0JBQ0UsTUFBTSxFQUFFOzRCQUNOLGFBQWEsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7NEJBQ2hDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7NEJBQ3JCLGFBQWEsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7NEJBQ2hDLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7NEJBQzFCLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7NEJBQzdCLG9CQUFvQixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTs0QkFDdkMsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTs0QkFDNUIsa0JBQWtCLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFOzRCQUNyQyxjQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFOzRCQUNqQyxpQkFBaUIsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7eUJBQ25DO3FCQUNGO2lCQUNGO2dCQUNELDBCQUEwQixFQUFFLE9BQU87Z0JBQ25DLG1DQUFtQyxFQUFFLE9BQU87Z0JBQzVDLHFDQUFxQyxFQUFFLE9BQU87Z0JBQzlDLHVDQUF1QyxFQUFFLE9BQU87Z0JBQ2hELHFCQUFxQixFQUFFLE9BQU87Z0JBQzlCLDZCQUE2QixFQUFFLE9BQU87Z0JBQ3RDLHNCQUFzQixFQUFFLE9BQU87Z0JBQy9CLHVCQUF1QixFQUFFLE9BQU87Z0JBQ2hDLDZCQUE2QixFQUFFLE9BQU87Z0JBQ3RDLDRCQUE0QixFQUFFLE9BQU87Z0JBQ3JDLDJCQUEyQixFQUFFLE9BQU87Z0JBQ3BDLCtCQUErQixFQUFFLE9BQU87Z0JBQ3hDLDRCQUE0QixFQUFFLE9BQU87Z0JBQ3JDLHlCQUF5QixFQUFFLE9BQU87Z0JBQ2xDLHVCQUF1QixFQUFFLE9BQU87Z0JBQ2hDLGtDQUFrQyxFQUFFLE9BQU87Z0JBQzNDLDZCQUE2QixFQUFFLE9BQU87Z0JBQ3RDLHdCQUF3QixFQUFFLE9BQU87Z0JBQ2pDLHlCQUF5QixFQUFFLE9BQU87Z0JBRWxDLDhCQUE4QixFQUFFLE9BQU87Z0JBQ3ZDLDhCQUE4QixFQUFFLE9BQU87Z0JBQ3ZDLDRCQUE0QixFQUFFLE9BQU87Z0JBQ3JDLHVDQUF1QyxFQUFFLE9BQU87Z0JBRWhELG1DQUFtQyxFQUFFO29CQUNuQyxPQUFPO29CQUNQO3dCQUNFLGlCQUFpQixFQUFFLElBQUk7d0JBQ3ZCLFdBQVcsRUFBRSxJQUFJO3dCQUNqQixZQUFZLEVBQUUsSUFBSTtxQkFDbkI7aUJBQ0Y7Z0JBQ0QsNENBQTRDLEVBQUUsT0FBTzthQUN0RDtTQUNGO1FBQ0Q7WUFDRSxJQUFJLEVBQUUseUJBQXlCO1lBQy9CLEtBQUssRUFBRSxDQUFDLDhCQUE4QixDQUFDO1lBQ3ZDLEtBQUssRUFBRTtnQkFDTCwwQkFBMEIsRUFBRSxLQUFLO2FBQ2xDO1NBQ0Y7UUFDRDtZQUNFLG1EQUFtRDtZQUNuRCxJQUFJLEVBQUUsdUJBQXVCO1lBQzdCLEtBQUssRUFBRTtnQkFDTCxvQ0FBb0M7Z0JBQ3BDLG1DQUFtQzthQUNwQztZQUNELEtBQUssRUFBRTtnQkFDTCw0QkFBNEIsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxDQUFDO2FBQ3hFO1NBQ0Y7S0FDTyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZlbmdlUGx1Z2luIGZyb20gXCJAZmVuZ2UvZXNsaW50LXBsdWdpblwiO1xuaW1wb3J0IHRzUGx1Z2luIGZyb20gXCJAdHlwZXNjcmlwdC1lc2xpbnQvZXNsaW50LXBsdWdpblwiO1xuaW1wb3J0IGNvbmZ1c2luZ0tleXMgZnJvbSBcImNvbmZ1c2luZy1icm93c2VyLWdsb2JhbHNcIjtcbmltcG9ydCBlc3hQbHVnaW4gZnJvbSBcImVzbGludC1wbHVnaW4tZXMteFwiO1xuaW1wb3J0ICogYXMgZXNtUGx1Z2luIGZyb20gXCJlc2xpbnQtcGx1Z2luLWVzbVwiO1xuaW1wb3J0IGZwUGx1Z2luIGZyb20gXCJlc2xpbnQtcGx1Z2luLWZwXCI7XG5pbXBvcnQgaW1wb3J0UGx1Z2luIGZyb20gXCJlc2xpbnQtcGx1Z2luLWltcG9ydFwiO1xuaW1wb3J0IG5QbHVnaW4gZnJvbSBcImVzbGludC1wbHVnaW4tblwiO1xuaW1wb3J0IHByb21pc2VQbHVnaW4gZnJvbSBcImVzbGludC1wbHVnaW4tcHJvbWlzZVwiO1xuaW1wb3J0IHJlYWN0UGx1Z2luIGZyb20gXCJlc2xpbnQtcGx1Z2luLXJlYWN0XCI7XG5pbXBvcnQgcmVhY3RIb29rc1BsdWdpbiBmcm9tIFwiZXNsaW50LXBsdWdpbi1yZWFjdC1ob29rc1wiO1xuaW1wb3J0IHNpbXBsZUltcG9ydFNvcnRQbHVnaW4gZnJvbSBcImVzbGludC1wbHVnaW4tc2ltcGxlLWltcG9ydC1zb3J0XCI7XG5pbXBvcnQgc29uYXJqc1BsdWdpbiBmcm9tIFwiZXNsaW50LXBsdWdpbi1zb25hcmpzXCI7XG5pbXBvcnQgdW5pY29yblBsdWdpbiBmcm9tIFwiZXNsaW50LXBsdWdpbi11bmljb3JuXCI7XG5pbXBvcnQgZ2xvYmFscyBmcm9tIFwiZ2xvYmFsc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gamF2YXNjcmlwdCgpIHtcbiAgLy8gY29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3N0YW5kYXJkL2VzbGludC1jb25maWctc3RhbmRhcmQvYmxvYi9tYXN0ZXIvc3JjL2luZGV4LnRzXG4gIC8vIHByZXR0aWVyLWlnbm9yZVxuICBjb25zdCBzdGFuZGFyZENvbmZpZ1J1bGVzID0ge1xuICAgICduby12YXInOiAnZXJyb3InLFxuICAgICdvYmplY3Qtc2hvcnRoYW5kJzogWydlcnJvcicsICdwcm9wZXJ0aWVzJ10sXG5cbiAgICAnYWNjZXNzb3ItcGFpcnMnOiBbJ2Vycm9yJywgeyBzZXRXaXRob3V0R2V0OiB0cnVlLCBlbmZvcmNlRm9yQ2xhc3NNZW1iZXJzOiB0cnVlIH1dLFxuICAgIC8vICdhcnJheS1icmFja2V0LXNwYWNpbmcnOiBbJ2Vycm9yJywgJ25ldmVyJ10sXG4gICAgJ2FycmF5LWNhbGxiYWNrLXJldHVybic6IFsnZXJyb3InLCB7XG4gICAgICBhbGxvd0ltcGxpY2l0OiBmYWxzZSxcbiAgICAgIGNoZWNrRm9yRWFjaDogZmFsc2VcbiAgICB9XSxcbiAgICAvLyAnYXJyb3ctc3BhY2luZyc6IFsnZXJyb3InLCB7IGJlZm9yZTogdHJ1ZSwgYWZ0ZXI6IHRydWUgfV0sXG4gICAgLy8gJ2Jsb2NrLXNwYWNpbmcnOiBbJ2Vycm9yJywgJ2Fsd2F5cyddLFxuICAgIC8vICdicmFjZS1zdHlsZSc6IFsnZXJyb3InLCAnMXRicycsIHsgYWxsb3dTaW5nbGVMaW5lOiB0cnVlIH1dLFxuICAgIGNhbWVsY2FzZTogWydlcnJvcicsIHtcbiAgICAgIGFsbG93OiBbJ15VTlNBRkVfJ10sXG4gICAgICBwcm9wZXJ0aWVzOiAnbmV2ZXInLFxuICAgICAgaWdub3JlR2xvYmFsczogdHJ1ZVxuICAgIH1dLFxuICAgIC8vICdjb21tYS1kYW5nbGUnOiBbJ2Vycm9yJywge1xuICAgIC8vICAgYXJyYXlzOiAnbmV2ZXInLFxuICAgIC8vICAgb2JqZWN0czogJ25ldmVyJyxcbiAgICAvLyAgIGltcG9ydHM6ICduZXZlcicsXG4gICAgLy8gICBleHBvcnRzOiAnbmV2ZXInLFxuICAgIC8vICAgZnVuY3Rpb25zOiAnbmV2ZXInXG4gICAgLy8gfV0sXG4gICAgLy8gJ2NvbW1hLXNwYWNpbmcnOiBbJ2Vycm9yJywgeyBiZWZvcmU6IGZhbHNlLCBhZnRlcjogdHJ1ZSB9XSxcbiAgICAvLyAnY29tbWEtc3R5bGUnOiBbJ2Vycm9yJywgJ2xhc3QnXSxcbiAgICAvLyAnY29tcHV0ZWQtcHJvcGVydHktc3BhY2luZyc6IFsnZXJyb3InLCAnbmV2ZXInLCB7IGVuZm9yY2VGb3JDbGFzc01lbWJlcnM6IHRydWUgfV0sXG4gICAgJ2NvbnN0cnVjdG9yLXN1cGVyJzogJ2Vycm9yJyxcbiAgICAvLyBjdXJseTogWydlcnJvcicsICdtdWx0aS1saW5lJ10sXG4gICAgJ2RlZmF1bHQtY2FzZS1sYXN0JzogJ2Vycm9yJyxcbiAgICAvLyAnZG90LWxvY2F0aW9uJzogWydlcnJvcicsICdwcm9wZXJ0eSddLFxuICAgIC8vICdkb3Qtbm90YXRpb24nOiBbJ2Vycm9yJywgeyBhbGxvd0tleXdvcmRzOiB0cnVlIH1dLCAvLyBUT0RPOiBUaGlzIHNob3VsZCBiZSBlbmFibGVkLiBEaXNhYmxlIGl0IGFzIGl0IGNvbmZsaWN0cyB3aXRoIHRzIHdoZW4gZW5hYmxpbmcgdHMtY2hlY2tcbiAgICAvLyAnZW9sLWxhc3QnOiAnZXJyb3InLFxuICAgIGVxZXFlcTogWydlcnJvcicsICdhbHdheXMnLCB7IG51bGw6ICdpZ25vcmUnIH1dLFxuICAgIC8vICdmdW5jLWNhbGwtc3BhY2luZyc6IFsnZXJyb3InLCAnbmV2ZXInXSxcbiAgICAvLyAnZ2VuZXJhdG9yLXN0YXItc3BhY2luZyc6IFsnZXJyb3InLCB7IGJlZm9yZTogdHJ1ZSwgYWZ0ZXI6IHRydWUgfV0sXG4gICAgLy8gaW5kZW50OiBbJ2Vycm9yJywgMiwge1xuICAgIC8vICAgU3dpdGNoQ2FzZTogMSxcbiAgICAvLyAgIFZhcmlhYmxlRGVjbGFyYXRvcjogMSxcbiAgICAvLyAgIG91dGVySUlGRUJvZHk6IDEsXG4gICAgLy8gICBNZW1iZXJFeHByZXNzaW9uOiAxLFxuICAgIC8vICAgRnVuY3Rpb25EZWNsYXJhdGlvbjogeyBwYXJhbWV0ZXJzOiAxLCBib2R5OiAxIH0sXG4gICAgLy8gICBGdW5jdGlvbkV4cHJlc3Npb246IHsgcGFyYW1ldGVyczogMSwgYm9keTogMSB9LFxuICAgIC8vICAgQ2FsbEV4cHJlc3Npb246IHsgYXJndW1lbnRzOiAxIH0sXG4gICAgLy8gICBBcnJheUV4cHJlc3Npb246IDEsXG4gICAgLy8gICBPYmplY3RFeHByZXNzaW9uOiAxLFxuICAgIC8vICAgSW1wb3J0RGVjbGFyYXRpb246IDEsXG4gICAgLy8gICBmbGF0VGVybmFyeUV4cHJlc3Npb25zOiBmYWxzZSxcbiAgICAvLyAgIGlnbm9yZUNvbW1lbnRzOiBmYWxzZSxcbiAgICAvLyAgIGlnbm9yZWROb2RlczogW1xuICAgIC8vICAgICAnVGVtcGxhdGVMaXRlcmFsIConLFxuICAgIC8vICAgICAnSlNYRWxlbWVudCcsXG4gICAgLy8gICAgICdKU1hFbGVtZW50ID4gKicsXG4gICAgLy8gICAgICdKU1hBdHRyaWJ1dGUnLFxuICAgIC8vICAgICAnSlNYSWRlbnRpZmllcicsXG4gICAgLy8gICAgICdKU1hOYW1lc3BhY2VkTmFtZScsXG4gICAgLy8gICAgICdKU1hNZW1iZXJFeHByZXNzaW9uJyxcbiAgICAvLyAgICAgJ0pTWFNwcmVhZEF0dHJpYnV0ZScsXG4gICAgLy8gICAgICdKU1hFeHByZXNzaW9uQ29udGFpbmVyJyxcbiAgICAvLyAgICAgJ0pTWE9wZW5pbmdFbGVtZW50JyxcbiAgICAvLyAgICAgJ0pTWENsb3NpbmdFbGVtZW50JyxcbiAgICAvLyAgICAgJ0pTWEZyYWdtZW50JyxcbiAgICAvLyAgICAgJ0pTWE9wZW5pbmdGcmFnbWVudCcsXG4gICAgLy8gICAgICdKU1hDbG9zaW5nRnJhZ21lbnQnLFxuICAgIC8vICAgICAnSlNYVGV4dCcsXG4gICAgLy8gICAgICdKU1hFbXB0eUV4cHJlc3Npb24nLFxuICAgIC8vICAgICAnSlNYU3ByZWFkQ2hpbGQnXG4gICAgLy8gICBdLFxuICAgIC8vICAgb2Zmc2V0VGVybmFyeUV4cHJlc3Npb25zOiB0cnVlXG4gICAgLy8gfV0sXG4gICAgLy8gJ2tleS1zcGFjaW5nJzogWydlcnJvcicsIHsgYmVmb3JlQ29sb246IGZhbHNlLCBhZnRlckNvbG9uOiB0cnVlIH1dLFxuICAgIC8vICdrZXl3b3JkLXNwYWNpbmcnOiBbJ2Vycm9yJywgeyBiZWZvcmU6IHRydWUsIGFmdGVyOiB0cnVlIH1dLFxuICAgICdsaW5lcy1iZXR3ZWVuLWNsYXNzLW1lbWJlcnMnOiBbJ2Vycm9yJywgJ2Fsd2F5cycsIHsgZXhjZXB0QWZ0ZXJTaW5nbGVMaW5lOiB0cnVlIH1dLFxuICAgIC8vICdtdWx0aWxpbmUtdGVybmFyeSc6IFsnZXJyb3InLCAnYWx3YXlzLW11bHRpbGluZSddLFxuICAgICduZXctY2FwJzogWydlcnJvcicsIHsgbmV3SXNDYXA6IHRydWUsIGNhcElzTmV3OiBmYWxzZSwgcHJvcGVydGllczogdHJ1ZSB9XSxcbiAgICAvLyAnbmV3LXBhcmVucyc6ICdlcnJvcicsXG4gICAgJ25vLWFycmF5LWNvbnN0cnVjdG9yJzogJ2Vycm9yJyxcbiAgICAnbm8tYXN5bmMtcHJvbWlzZS1leGVjdXRvcic6ICdlcnJvcicsXG4gICAgJ25vLWNhbGxlcic6ICdlcnJvcicsXG4gICAgJ25vLWNhc2UtZGVjbGFyYXRpb25zJzogJ2Vycm9yJyxcbiAgICAnbm8tY2xhc3MtYXNzaWduJzogJ2Vycm9yJyxcbiAgICAnbm8tY29tcGFyZS1uZWctemVybyc6ICdlcnJvcicsXG4gICAgJ25vLWNvbmQtYXNzaWduJzogJ2Vycm9yJyxcbiAgICAnbm8tY29uc3QtYXNzaWduJzogJ2Vycm9yJyxcbiAgICAnbm8tY29uc3RhbnQtY29uZGl0aW9uJzogWydlcnJvcicsIHsgY2hlY2tMb29wczogZmFsc2UgfV0sXG4gICAgJ25vLWNvbnRyb2wtcmVnZXgnOiAnZXJyb3InLFxuICAgICduby1kZWJ1Z2dlcic6ICdlcnJvcicsXG4gICAgJ25vLWRlbGV0ZS12YXInOiAnZXJyb3InLFxuICAgICduby1kdXBlLWFyZ3MnOiAnZXJyb3InLFxuICAgICduby1kdXBlLWNsYXNzLW1lbWJlcnMnOiAnZXJyb3InLFxuICAgICduby1kdXBlLWtleXMnOiAnZXJyb3InLFxuICAgICduby1kdXBsaWNhdGUtY2FzZSc6ICdlcnJvcicsXG4gICAgJ25vLXVzZWxlc3MtYmFja3JlZmVyZW5jZSc6ICdlcnJvcicsXG4gICAgJ25vLWVtcHR5JzogWydlcnJvcicsIHsgYWxsb3dFbXB0eUNhdGNoOiB0cnVlIH1dLFxuICAgICduby1lbXB0eS1jaGFyYWN0ZXItY2xhc3MnOiAnZXJyb3InLFxuICAgICduby1lbXB0eS1wYXR0ZXJuJzogJ2Vycm9yJyxcbiAgICAnbm8tZXZhbCc6ICdlcnJvcicsXG4gICAgJ25vLWV4LWFzc2lnbic6ICdlcnJvcicsXG4gICAgJ25vLWV4dGVuZC1uYXRpdmUnOiAnZXJyb3InLFxuICAgICduby1leHRyYS1iaW5kJzogJ2Vycm9yJyxcbiAgICAnbm8tZXh0cmEtYm9vbGVhbi1jYXN0JzogJ2Vycm9yJyxcbiAgICAvLyAnbm8tZXh0cmEtcGFyZW5zJzogWydlcnJvcicsICdmdW5jdGlvbnMnXSxcbiAgICAnbm8tZmFsbHRocm91Z2gnOiAnZXJyb3InLFxuICAgIC8vICduby1mbG9hdGluZy1kZWNpbWFsJzogJ2Vycm9yJyxcbiAgICAnbm8tZnVuYy1hc3NpZ24nOiAnZXJyb3InLFxuICAgICduby1nbG9iYWwtYXNzaWduJzogJ2Vycm9yJyxcbiAgICAnbm8taW1wbGllZC1ldmFsJzogJ2Vycm9yJyxcbiAgICAnbm8taW1wb3J0LWFzc2lnbic6ICdlcnJvcicsXG4gICAgJ25vLWludmFsaWQtcmVnZXhwJzogJ2Vycm9yJyxcbiAgICAnbm8taXJyZWd1bGFyLXdoaXRlc3BhY2UnOiAnZXJyb3InLFxuICAgICduby1pdGVyYXRvcic6ICdlcnJvcicsXG4gICAgJ25vLWxhYmVscyc6IFsnZXJyb3InLCB7IGFsbG93TG9vcDogZmFsc2UsIGFsbG93U3dpdGNoOiBmYWxzZSB9XSxcbiAgICAnbm8tbG9uZS1ibG9ja3MnOiAnZXJyb3InLFxuICAgICduby1sb3NzLW9mLXByZWNpc2lvbic6ICdlcnJvcicsXG4gICAgJ25vLW1pc2xlYWRpbmctY2hhcmFjdGVyLWNsYXNzJzogJ2Vycm9yJyxcbiAgICAnbm8tcHJvdG90eXBlLWJ1aWx0aW5zJzogJ2Vycm9yJyxcbiAgICAnbm8tdXNlbGVzcy1jYXRjaCc6ICdlcnJvcicsXG4gICAgLy8gJ25vLW1peGVkLW9wZXJhdG9ycyc6IFsnZXJyb3InLCB7XG4gICAgLy8gICBncm91cHM6IFtcbiAgICAvLyAgICAgWyc9PScsICchPScsICc9PT0nLCAnIT09JywgJz4nLCAnPj0nLCAnPCcsICc8PSddLFxuICAgIC8vICAgICBbJyYmJywgJ3x8J10sXG4gICAgLy8gICAgIFsnaW4nLCAnaW5zdGFuY2VvZiddXG4gICAgLy8gICBdLFxuICAgIC8vICAgYWxsb3dTYW1lUHJlY2VkZW5jZTogdHJ1ZVxuICAgIC8vIH1dLFxuICAgIC8vICduby1taXhlZC1zcGFjZXMtYW5kLXRhYnMnOiAnZXJyb3InLFxuICAgIC8vICduby1tdWx0aS1zcGFjZXMnOiAnZXJyb3InLFxuICAgICduby1tdWx0aS1zdHInOiAnZXJyb3InLFxuICAgIC8vICduby1tdWx0aXBsZS1lbXB0eS1saW5lcyc6IFsnZXJyb3InLCB7IG1heDogMSwgbWF4Qk9GOiAwLCBtYXhFT0Y6IDAgfV0sXG4gICAgJ25vLW5ldyc6ICdlcnJvcicsXG4gICAgJ25vLW5ldy1mdW5jJzogJ2Vycm9yJyxcbiAgICAnbm8tbmV3LW9iamVjdCc6ICdlcnJvcicsXG4gICAgJ25vLW5ldy1zeW1ib2wnOiAnZXJyb3InLFxuICAgICduby1uZXctd3JhcHBlcnMnOiAnZXJyb3InLFxuICAgICduby1vYmotY2FsbHMnOiAnZXJyb3InLFxuICAgICduby1vY3RhbCc6ICdlcnJvcicsXG4gICAgJ25vLW9jdGFsLWVzY2FwZSc6ICdlcnJvcicsXG4gICAgJ25vLXByb3RvJzogJ2Vycm9yJyxcbiAgICAnbm8tcmVkZWNsYXJlJzogWydlcnJvcicsIHsgYnVpbHRpbkdsb2JhbHM6IGZhbHNlIH1dLFxuICAgICduby1yZWdleC1zcGFjZXMnOiAnZXJyb3InLFxuICAgICduby1yZXR1cm4tYXNzaWduJzogWydlcnJvcicsICdleGNlcHQtcGFyZW5zJ10sXG4gICAgJ25vLXNlbGYtYXNzaWduJzogWydlcnJvcicsIHsgcHJvcHM6IHRydWUgfV0sXG4gICAgJ25vLXNlbGYtY29tcGFyZSc6ICdlcnJvcicsXG4gICAgJ25vLXNlcXVlbmNlcyc6ICdlcnJvcicsXG4gICAgJ25vLXNoYWRvdy1yZXN0cmljdGVkLW5hbWVzJzogJ2Vycm9yJyxcbiAgICAnbm8tc3BhcnNlLWFycmF5cyc6ICdlcnJvcicsXG4gICAgLy8gJ25vLXRhYnMnOiAnZXJyb3InLFxuICAgICduby10ZW1wbGF0ZS1jdXJseS1pbi1zdHJpbmcnOiAnZXJyb3InLFxuICAgICduby10aGlzLWJlZm9yZS1zdXBlcic6ICdlcnJvcicsXG4gICAgJ25vLXRocm93LWxpdGVyYWwnOiAnZXJyb3InLFxuICAgIC8vICduby10cmFpbGluZy1zcGFjZXMnOiAnZXJyb3InLFxuICAgICduby11bmRlZic6ICdlcnJvcicsXG4gICAgLy8gJ25vLXVuZGVmLWluaXQnOiAnZXJyb3InLCAvLyBJdCBjb25mbGljdCB3aXRoIGBpbml0LWRlY2xhcmF0aW9uc2BcbiAgICAvLyAnbm8tdW5leHBlY3RlZC1tdWx0aWxpbmUnOiAnZXJyb3InLFxuICAgICduby11bm1vZGlmaWVkLWxvb3AtY29uZGl0aW9uJzogJ2Vycm9yJyxcbiAgICAnbm8tdW5uZWVkZWQtdGVybmFyeSc6IFsnZXJyb3InLCB7IGRlZmF1bHRBc3NpZ25tZW50OiBmYWxzZSB9XSxcbiAgICAnbm8tdW5yZWFjaGFibGUnOiAnZXJyb3InLFxuICAgICduby11bnJlYWNoYWJsZS1sb29wJzogJ2Vycm9yJyxcbiAgICAnbm8tdW5zYWZlLWZpbmFsbHknOiAnZXJyb3InLFxuICAgICduby11bnNhZmUtbmVnYXRpb24nOiAnZXJyb3InLFxuICAgICduby11bnVzZWQtZXhwcmVzc2lvbnMnOiBbJ2Vycm9yJywge1xuICAgICAgYWxsb3dTaG9ydENpcmN1aXQ6IHRydWUsXG4gICAgICBhbGxvd1Rlcm5hcnk6IHRydWUsXG4gICAgICBhbGxvd1RhZ2dlZFRlbXBsYXRlczogdHJ1ZVxuICAgIH1dLFxuICAgICduby11bnVzZWQtdmFycyc6IFsnZXJyb3InLCB7XG4gICAgICBhcmdzOiAnbm9uZScsXG4gICAgICBjYXVnaHRFcnJvcnM6ICdub25lJyxcbiAgICAgIGlnbm9yZVJlc3RTaWJsaW5nczogdHJ1ZSxcbiAgICAgIHZhcnM6ICdhbGwnXG4gICAgfV0sXG4gICAgJ25vLXVzZS1iZWZvcmUtZGVmaW5lJzogWydlcnJvcicsIHsgZnVuY3Rpb25zOiBmYWxzZSwgY2xhc3NlczogZmFsc2UsIHZhcmlhYmxlczogZmFsc2UgfV0sXG4gICAgJ25vLXVzZWxlc3MtY2FsbCc6ICdlcnJvcicsXG4gICAgJ25vLXVzZWxlc3MtY29tcHV0ZWQta2V5JzogJ2Vycm9yJyxcbiAgICAnbm8tdXNlbGVzcy1jb25zdHJ1Y3Rvcic6ICdlcnJvcicsXG4gICAgJ25vLXVzZWxlc3MtZXNjYXBlJzogJ2Vycm9yJyxcbiAgICAnbm8tdXNlbGVzcy1yZW5hbWUnOiAnZXJyb3InLFxuICAgICduby11c2VsZXNzLXJldHVybic6ICdlcnJvcicsXG4gICAgJ25vLXZvaWQnOiAnZXJyb3InLFxuICAgIC8vICduby13aGl0ZXNwYWNlLWJlZm9yZS1wcm9wZXJ0eSc6ICdlcnJvcicsXG4gICAgJ25vLXdpdGgnOiAnZXJyb3InLFxuICAgIC8vICdvYmplY3QtY3VybHktbmV3bGluZSc6IFsnZXJyb3InLCB7IG11bHRpbGluZTogdHJ1ZSwgY29uc2lzdGVudDogdHJ1ZSB9XSxcbiAgICAvLyAnb2JqZWN0LWN1cmx5LXNwYWNpbmcnOiBbJ2Vycm9yJywgJ2Fsd2F5cyddLFxuICAgIC8vICdvYmplY3QtcHJvcGVydHktbmV3bGluZSc6IFsnZXJyb3InLCB7IGFsbG93TXVsdGlwbGVQcm9wZXJ0aWVzUGVyTGluZTogdHJ1ZSB9XSxcbiAgICAnb25lLXZhcic6IFsnZXJyb3InLCB7IGluaXRpYWxpemVkOiAnbmV2ZXInIH1dLFxuICAgIC8vICdvcGVyYXRvci1saW5lYnJlYWsnOiBbJ2Vycm9yJywgJ2FmdGVyJywgeyBvdmVycmlkZXM6IHsgJz8nOiAnYmVmb3JlJywgJzonOiAnYmVmb3JlJywgJ3w+JzogJ2JlZm9yZScgfSB9XSxcbiAgICAvLyAncGFkZGVkLWJsb2Nrcyc6IFsnZXJyb3InLCB7IGJsb2NrczogJ25ldmVyJywgc3dpdGNoZXM6ICduZXZlcicsIGNsYXNzZXM6ICduZXZlcicgfV0sXG4gICAgJ3ByZWZlci1jb25zdCc6IFsnZXJyb3InLCB7IGRlc3RydWN0dXJpbmc6ICdhbGwnIH1dLFxuICAgICdwcmVmZXItcHJvbWlzZS1yZWplY3QtZXJyb3JzJzogJ2Vycm9yJyxcbiAgICAncHJlZmVyLXJlZ2V4LWxpdGVyYWxzJzogWydlcnJvcicsIHsgZGlzYWxsb3dSZWR1bmRhbnRXcmFwcGluZzogdHJ1ZSB9XSxcbiAgICAvLyAncXVvdGUtcHJvcHMnOiBbJ2Vycm9yJywgJ2FzLW5lZWRlZCddLFxuICAgIC8vIHF1b3RlczogWydlcnJvcicsICdzaW5nbGUnLCB7IGF2b2lkRXNjYXBlOiB0cnVlLCBhbGxvd1RlbXBsYXRlTGl0ZXJhbHM6IGZhbHNlIH1dLFxuICAgIC8vICdyZXN0LXNwcmVhZC1zcGFjaW5nJzogWydlcnJvcicsICduZXZlciddLFxuICAgIC8vIHNlbWk6IFsnZXJyb3InLCAnbmV2ZXInXSxcbiAgICAvLyAnc2VtaS1zcGFjaW5nJzogWydlcnJvcicsIHsgYmVmb3JlOiBmYWxzZSwgYWZ0ZXI6IHRydWUgfV0sXG4gICAgLy8gJ3NwYWNlLWJlZm9yZS1ibG9ja3MnOiBbJ2Vycm9yJywgJ2Fsd2F5cyddLFxuICAgIC8vICdzcGFjZS1iZWZvcmUtZnVuY3Rpb24tcGFyZW4nOiBbJ2Vycm9yJywgJ2Fsd2F5cyddLFxuICAgIC8vICdzcGFjZS1pbi1wYXJlbnMnOiBbJ2Vycm9yJywgJ25ldmVyJ10sXG4gICAgLy8gJ3NwYWNlLWluZml4LW9wcyc6ICdlcnJvcicsXG4gICAgLy8gJ3NwYWNlLXVuYXJ5LW9wcyc6IFsnZXJyb3InLCB7IHdvcmRzOiB0cnVlLCBub253b3JkczogZmFsc2UgfV0sXG4gICAgJ3NwYWNlZC1jb21tZW50JzogWydlcnJvcicsICdhbHdheXMnLCB7XG4gICAgICBsaW5lOiB7IG1hcmtlcnM6IFsnKnBhY2thZ2UnLCAnIScsICcvJywgJywnLCAnPSddIH0sXG4gICAgICBibG9jazogeyBiYWxhbmNlZDogdHJ1ZSwgbWFya2VyczogWycqcGFja2FnZScsICchJywgJywnLCAnOicsICc6OicsICdmbG93LWluY2x1ZGUnXSwgZXhjZXB0aW9uczogWycqJ10gfVxuICAgIH1dLFxuICAgICdzeW1ib2wtZGVzY3JpcHRpb24nOiAnZXJyb3InLFxuICAgIC8vICd0ZW1wbGF0ZS1jdXJseS1zcGFjaW5nJzogWydlcnJvcicsICduZXZlciddLFxuICAgIC8vICd0ZW1wbGF0ZS10YWctc3BhY2luZyc6IFsnZXJyb3InLCAnbmV2ZXInXSxcbiAgICAndW5pY29kZS1ib20nOiBbJ2Vycm9yJywgJ25ldmVyJ10sXG4gICAgJ3VzZS1pc25hbic6IFsnZXJyb3InLCB7XG4gICAgICBlbmZvcmNlRm9yU3dpdGNoQ2FzZTogdHJ1ZSxcbiAgICAgIGVuZm9yY2VGb3JJbmRleE9mOiB0cnVlXG4gICAgfV0sXG4gICAgJ3ZhbGlkLXR5cGVvZic6IFsnZXJyb3InLCB7IHJlcXVpcmVTdHJpbmdMaXRlcmFsczogdHJ1ZSB9XSxcbiAgICAvLyAnd3JhcC1paWZlJzogWydlcnJvcicsICdhbnknLCB7IGZ1bmN0aW9uUHJvdG90eXBlTWV0aG9kczogdHJ1ZSB9XSxcbiAgICAvLyAneWllbGQtc3Rhci1zcGFjaW5nJzogWydlcnJvcicsICdib3RoJ10sXG4gICAgeW9kYTogWydlcnJvcicsICduZXZlciddLFxuXG4gICAgJ2ltcG9ydC9leHBvcnQnOiAnZXJyb3InLFxuICAgICdpbXBvcnQvZmlyc3QnOiAnZXJyb3InLFxuICAgICdpbXBvcnQvbm8tYWJzb2x1dGUtcGF0aCc6IFsnZXJyb3InLCB7IGVzbW9kdWxlOiB0cnVlLCBjb21tb25qczogdHJ1ZSwgYW1kOiBmYWxzZSB9XSxcbiAgICAnaW1wb3J0L25vLWR1cGxpY2F0ZXMnOiAnZXJyb3InLFxuICAgICdpbXBvcnQvbm8tbmFtZWQtZGVmYXVsdCc6ICdlcnJvcicsXG4gICAgJ2ltcG9ydC9uby13ZWJwYWNrLWxvYWRlci1zeW50YXgnOiAnZXJyb3InLFxuXG4gICAgJ24vaGFuZGxlLWNhbGxiYWNrLWVycic6IFsnZXJyb3InLCAnXihlcnJ8ZXJyb3IpJCddLFxuICAgICduL25vLWNhbGxiYWNrLWxpdGVyYWwnOiAnZXJyb3InLFxuICAgICduL25vLWRlcHJlY2F0ZWQtYXBpJzogJ2Vycm9yJyxcbiAgICAnbi9uby1leHBvcnRzLWFzc2lnbic6ICdlcnJvcicsXG4gICAgJ24vbm8tbmV3LXJlcXVpcmUnOiAnZXJyb3InLFxuICAgICduL25vLXBhdGgtY29uY2F0JzogJ2Vycm9yJyxcbiAgICAnbi9wcm9jZXNzLWV4aXQtYXMtdGhyb3cnOiAnZXJyb3InLFxuXG4gICAgJ3Byb21pc2UvcGFyYW0tbmFtZXMnOiAnZXJyb3InXG4gIH0gYXMgY29uc3Q7XG5cbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBuYW1lOiBcImZlbmdlL2phdmFzY3JpcHRcIixcbiAgICAgIGZpbGVzOiBbXCIqKi8qLntqcyxjanMsbWpzLGpzeH1cIl0sXG4gICAgICAvLyBodHRwczovL2VzbGludC5vcmcvZG9jcy9sYXRlc3QvdXNlL2NvbmZpZ3VyZS9sYW5ndWFnZS1vcHRpb25zXG4gICAgICBsYW5ndWFnZU9wdGlvbnM6IHtcbiAgICAgICAgZWNtYVZlcnNpb246IFwibGF0ZXN0XCIsXG4gICAgICAgIHNvdXJjZVR5cGU6IFwibW9kdWxlXCIsXG4gICAgICAgIHBhcnNlck9wdGlvbnM6IHtcbiAgICAgICAgICAvLyBUT0RPIGBlY21hVmVyc2lvbmAgYW5kIGBzb3VyY2VUeXBlYCBhcmUgbm8gc3RhbmRhcmQgaGVyZS4gaW1wb3J0L25vLWRlZmF1bHQtZXhwb3J0IHJlcXVpcmVkIHRoaXNcbiAgICAgICAgICBlY21hVmVyc2lvbjogXCJsYXRlc3RcIixcbiAgICAgICAgICBzb3VyY2VUeXBlOiBcIm1vZHVsZVwiLFxuICAgICAgICAgIGVjbWFGZWF0dXJlczoge1xuICAgICAgICAgICAganN4OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGdsb2JhbHM6IHtcbiAgICAgICAgICAuLi5PYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhnbG9iYWxzLmJyb3dzZXIpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKFtrXSkgPT4gIWNvbmZ1c2luZ0tleXMuaW5jbHVkZXMoaykpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKFtrXSkgPT4gIVtcInNlbGZcIiwgXCJnbG9iYWxcIl0uaW5jbHVkZXMoaykpLCAvLyBwcmVmZXIgYGdsb2JhbFRoaXNgXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBsaW50ZXJPcHRpb25zOiB7XG4gICAgICAgIC8vIG5vSW5saW5lQ29uZmlnOiB0cnVlLCAvLyB0b28gc3RyaWN0XG4gICAgICAgIHJlcG9ydFVudXNlZERpc2FibGVEaXJlY3RpdmVzOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgZnA6IGZwUGx1Z2luLFxuICAgICAgICBuOiBuUGx1Z2luLFxuICAgICAgICBpbXBvcnQ6IGltcG9ydFBsdWdpbixcbiAgICAgICAgcHJvbWlzZTogcHJvbWlzZVBsdWdpbixcbiAgICAgICAgcmVhY3Q6IHJlYWN0UGx1Z2luLFxuICAgICAgICBcInJlYWN0LWhvb2tzXCI6IHJlYWN0SG9va3NQbHVnaW4sXG4gICAgICAgIHNvbmFyanM6IHNvbmFyanNQbHVnaW4sXG4gICAgICAgIHVuaWNvcm46IHVuaWNvcm5QbHVnaW4sXG4gICAgICAgIFwiZXMteFwiOiBlc3hQbHVnaW4sXG4gICAgICAgIGVzbTogZXNtUGx1Z2luLFxuICAgICAgICBcInNpbXBsZS1pbXBvcnQtc29ydFwiOiBzaW1wbGVJbXBvcnRTb3J0UGx1Z2luLFxuICAgICAgICBcIkBmZW5nZVwiOiBmZW5nZVBsdWdpbixcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnRcIjogdHNQbHVnaW4sXG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgLy8gMS4gc3RhbmRhcmQgY29uZmlnIHJ1bGVzXG4gICAgICAgIC4uLnN0YW5kYXJkQ29uZmlnUnVsZXMsXG5cbiAgICAgICAgLy8gMi4gY29kZSBzdHlsZSBmb3IgYSBiZXR0ZXIgcmVhZGFiaWxpdHlcbiAgICAgICAgXCJhcnJvdy1ib2R5LXN0eWxlXCI6IFtcImVycm9yXCIsIFwiYXMtbmVlZGVkXCJdLFxuICAgICAgICBcImltcG9ydC9uZXdsaW5lLWFmdGVyLWltcG9ydFwiOiBbXCJlcnJvclwiLCB7IGNvdW50OiAxIH1dLFxuICAgICAgICAvLyBTb3J0IGltcG9ydHMgYnkgcHJldHRpZXIuIFR1cm4gaW4gb2ZmLlxuICAgICAgICAvLyBcInNpbXBsZS1pbXBvcnQtc29ydC9pbXBvcnRzXCI6IFtcbiAgICAgICAgLy8gICBcImVycm9yXCIsXG4gICAgICAgIC8vICAgeyBncm91cHM6IFtbXCJeXFxcXHUwMDAwXCIsIFwiXm5vZGU6XCIsIFwiXkA/XFxcXHdcIiwgXCJeXCIsIFwiXlxcXFwuXCJdXSB9LFxuICAgICAgICAvLyBdLFxuICAgICAgICBcInNpbXBsZS1pbXBvcnQtc29ydC9leHBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL3ByZWZlci1ub2RlLXByb3RvY29sXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL2VzY2FwZS1jYXNlXCI6IFwiZXJyb3JcIiwgLy8gJ1xcdWQ4MzQnIC0+ICdcXHVEODM0J1xuICAgICAgICAvLyBcInVuaWNvcm4vbnVtYmVyLWxpdGVyYWwtY2FzZVwiOiBcImVycm9yXCIsIC8vIDBYRkYgLT4gMHhGRiAvLyBjb25mbGljdCB3aXRoIHByZXR0aWVyXG5cbiAgICAgICAgLy8gMy4gYmFuIHNvbWUgc3ludGF4ZXMgdG8gcmVkdWNlIG1pc3Rha2VzXG4gICAgICAgIFwiZGVmYXVsdC1wYXJhbS1sYXN0XCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJmdW5jLW5hbWUtbWF0Y2hpbmdcIjogXCJlcnJvclwiLFxuICAgICAgICBcImdldHRlci1yZXR1cm5cIjogXCJlcnJvclwiLFxuICAgICAgICBcImluaXQtZGVjbGFyYXRpb25zXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJtYXgtcGFyYW1zXCI6IFtcImVycm9yXCIsIHsgbWF4OiA0IH1dLFxuICAgICAgICBcIm5vLWR1cGxpY2F0ZS1pbXBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJuby1lbXB0eS1zdGF0aWMtYmxvY2tcIjogXCJlcnJvclwiLFxuICAgICAgICBcIm5vLWVtcHR5LWZ1bmN0aW9uXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJuby1pbXBsaWNpdC1jb2VyY2lvblwiOiBbXG4gICAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICAgIHsgZGlzYWxsb3dUZW1wbGF0ZVNob3J0aGFuZDogdHJ1ZSwgYWxsb3c6IFtcIiEhXCJdIH0sXG4gICAgICAgIF0sIC8vIGZvcmJpZCBjb2RlIGxpa2UgYGNvbnN0IG51bSA9ICtzdHJgO1xuICAgICAgICBcIm5vLWludmFsaWQtdGhpc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwibm8tbXVsdGktYXNzaWduXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJuby1wYXJhbS1yZWFzc2lnblwiOiBcImVycm9yXCIsXG4gICAgICAgIFwibm8tcGx1c3BsdXNcIjogXCJlcnJvclwiLFxuICAgICAgICBcIm5vLXNldHRlci1yZXR1cm5cIjogXCJlcnJvclwiLFxuICAgICAgICBcIm5vLXNoYWRvd1wiOiBbXCJlcnJvclwiLCB7IGlnbm9yZU9uSW5pdGlhbGl6YXRpb246IHRydWUgfV0sXG4gICAgICAgIFwibm8tdW51c2VkLXByaXZhdGUtY2xhc3MtbWVtYmVyc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwicHJlZmVyLWFycm93LWNhbGxiYWNrXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJwcmVmZXItZXhwb25lbnRpYXRpb24tb3BlcmF0b3JcIjogXCJlcnJvclwiLFxuICAgICAgICBcInByZWZlci1vYmplY3QtaGFzLW93blwiOiBcImVycm9yXCIsXG4gICAgICAgIFwicHJlZmVyLXRlbXBsYXRlXCI6IFwiZXJyb3JcIixcbiAgICAgICAgLy8gZXNcbiAgICAgICAgXCJlcy14L25vLWFjY2Vzc29yLXByb3BlcnRpZXNcIjogXCJlcnJvclwiLFxuICAgICAgICBcImVzLXgvbm8tYXN5bmMtaXRlcmF0aW9uXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJlcy14L25vLWdlbmVyYXRvcnNcIjogXCJlcnJvclwiLFxuICAgICAgICBcImVzLXgvbm8tbGVnYWN5LW9iamVjdC1wcm90b3R5cGUtYWNjZXNzb3ItbWV0aG9kc1wiOiBcImVycm9yXCIsXG4gICAgICAgIC8vIGVzbVxuICAgICAgICBcImVzbS9uZWFyZXN0LXJlbGF0aXZlLXBhdGhcIjogXCJlcnJvclwiLFxuICAgICAgICBcImVzbS9uby1kaXJlY3RvcnktaW1wb3J0c1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiZXNtL25vLWR5bmFtaWMtaW1wb3J0c1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiZXNtL25vLWdpdC1pZ25vcmVkLWltcG9ydHNcIjogXCJlcnJvclwiLFxuICAgICAgICBcImVzbS9uby1waGFudG9tLWRlcC1pbXBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJlc20vbm8tcmVsYXRpdmUtcGFyZW50LWltcG9ydHNcIjogXCJlcnJvclwiLFxuICAgICAgICBcImVzbS9uby1yZW5hbWUtZXhwb3J0c1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiZXNtL25vLXJlbmFtZS1pbXBvcnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJlc20vbm8tc2lkZS1lZmZlY3QtaW1wb3J0c1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwiZXNtL25vLXRzLWZpbGUtaW1wb3J0c1wiOiBcImVycm9yXCIsXG4gICAgICAgIC8vIGZwXG4gICAgICAgIFwiZnAvbm8tYXJndW1lbnRzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJmcC9uby1kZWxldGVcIjogXCJlcnJvclwiLFxuICAgICAgICAvLyBpbXBvcnRcbiAgICAgICAgXCJpbXBvcnQvZXh0ZW5zaW9uc1wiOiBbXCJlcnJvclwiLCBcImFsd2F5c1wiLCB7IGlnbm9yZVBhY2thZ2VzOiB0cnVlIH1dLFxuICAgICAgICBcImltcG9ydC9uby1jb21tb25qc1wiOiBbXG4gICAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsbG93UmVxdWlyZTogZmFsc2UsXG4gICAgICAgICAgICBhbGxvd0NvbmRpdGlvbmFsUmVxdWlyZTogZmFsc2UsXG4gICAgICAgICAgICBhbGxvd1ByaW1pdGl2ZU1vZHVsZXM6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIC8qKlxuICAgICAgICAgKiAxLiBUaGUgRVNNIHNwZWNpZmljYXRpb24gZGlkbuKAmXQgc2F5IGFueXRoaW5nIGFib3V0IGludGVyb3BlcmFiaWxpdHkgd2l0aCBDb21tb25KUy4gU2VlOiBodHRwczovL2Jsb2cuYW5kcmV3YnJhbi5jaC9kZWZhdWx0LWV4cG9ydHMtaW4tY29tbW9uanMtbGlicmFyaWVzL1xuICAgICAgICAgKiAyLiBSZWV4cG9ydGluZyBsaWtlIGBleHBvcnQgKiBmcm9tICdmb28nYCB3aWxsIGJlIGRpZmZpY3VsdC5cbiAgICAgICAgICovXG4gICAgICAgIFwiaW1wb3J0L25vLWRlZmF1bHQtZXhwb3J0XCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJpbXBvcnQvbm8tZHluYW1pYy1yZXF1aXJlXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJpbXBvcnQvbm8tbXV0YWJsZS1leHBvcnRzXCI6IFwiZXJyb3JcIiwgLy8gZm9yYmlkIGNvZGUgbGlrZSBgZXhwb3J0IGxldCBjb3VudCA9IDNgXG4gICAgICAgIFwiaW1wb3J0L25vLXJlbGF0aXZlLXBhY2thZ2VzXCI6IFwiZXJyb3JcIiwgLy8gZm9yYmlkIHRvIGltcG9ydCBtb2R1bGUgZnJvbSBvdGhlciBtb25vcmVwbyBwYWNrYWdlcyBieSByZWxhdGl2ZSBwYXRoc1xuICAgICAgICBcImltcG9ydC9uby1zZWxmLWltcG9ydFwiOiBcImVycm9yXCIsXG4gICAgICAgIC8vIG5cbiAgICAgICAgXCJuL3ByZWZlci1nbG9iYWwvYnVmZmVyXCI6IFtcImVycm9yXCIsIFwibmV2ZXJcIl0sXG4gICAgICAgIFwibi9wcmVmZXItZ2xvYmFsL2NvbnNvbGVcIjogXCJlcnJvclwiLFxuICAgICAgICBcIm4vcHJlZmVyLWdsb2JhbC9wcm9jZXNzXCI6IFtcImVycm9yXCIsIFwibmV2ZXJcIl0sXG4gICAgICAgIFwibi9wcmVmZXItZ2xvYmFsL3RleHQtZGVjb2RlclwiOiBcImVycm9yXCIsXG4gICAgICAgIFwibi9wcmVmZXItZ2xvYmFsL3RleHQtZW5jb2RlclwiOiBcImVycm9yXCIsXG4gICAgICAgIFwibi9wcmVmZXItZ2xvYmFsL3VybFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwibi9wcmVmZXItZ2xvYmFsL3VybC1zZWFyY2gtcGFyYW1zXCI6IFwiZXJyb3JcIixcbiAgICAgICAgLy8gcmVhY3RcbiAgICAgICAgXCJyZWFjdC9qc3gta2V5XCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJyZWFjdC9qc3gtbm8tZHVwbGljYXRlLXByb3BzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJyZWFjdC9qc3gtbm8tdW5kZWZcIjogXCJlcnJvclwiLFxuICAgICAgICAvLyByZWFjdC1ob29rc1xuICAgICAgICBcInJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwicmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcIjogXCJlcnJvclwiLFxuICAgICAgICAvLyBzb25hcmpzXG4gICAgICAgIFwic29uYXJqcy9uby1jb2xsYXBzaWJsZS1pZlwiOiBcImVycm9yXCIsXG4gICAgICAgIFwic29uYXJqcy9uby1hbGwtZHVwbGljYXRlZC1icmFuY2hlc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwic29uYXJqcy9uby1pZGVudGljYWwtY29uZGl0aW9uc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwic29uYXJqcy9uby1pZGVudGljYWwtZXhwcmVzc2lvbnNcIjogXCJlcnJvclwiLFxuICAgICAgICBcInNvbmFyanMvbm8taWdub3JlZC1yZXR1cm5cIjogXCJlcnJvclwiLFxuICAgICAgICBcInNvbmFyanMvbm8taW52ZXJ0ZWQtYm9vbGVhbi1jaGVja1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwic29uYXJqcy9uby1uZXN0ZWQtc3dpdGNoXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJzb25hcmpzL25vLXVzZWxlc3MtY2F0Y2hcIjogXCJlcnJvclwiLFxuICAgICAgICBcInNvbmFyanMvcHJlZmVyLWltbWVkaWF0ZS1yZXR1cm5cIjogXCJlcnJvclwiLFxuICAgICAgICAvLyB1bmljb3JuXG4gICAgICAgIC8vICd1bmljb3JuL25vLW51bGwnOiAnZXJyb3InLCAvLyBudWxsIGNhbiBiZSB1c2VmdWwgd2hlbiBpbnRlcmFjdCB3aXRoIGpzb24uXG4gICAgICAgIFwidW5pY29ybi9jb25zaXN0ZW50LWRlc3RydWN0dXJpbmdcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vY29uc2lzdGVudC1lbXB0eS1hcnJheS1zcHJlYWRcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vZXJyb3ItbWVzc2FnZVwiOiBcImVycm9yXCIsXG4gICAgICAgIFwidW5pY29ybi9leHBsaWNpdC1sZW5ndGgtY2hlY2tcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vZmlsZW5hbWUtY2FzZVwiOiBbXG4gICAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICAgIHsgY2FzZXM6IHsga2ViYWJDYXNlOiB0cnVlLCBwYXNjYWxDYXNlOiB0cnVlIH0gfSxcbiAgICAgICAgXSxcbiAgICAgICAgXCJ1bmljb3JuL2ltcG9ydC1zdHlsZVwiOiBbXG4gICAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0eWxlczoge1xuICAgICAgICAgICAgICBjaGlsZF9wcm9jZXNzOiB7IGRlZmF1bHQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgZnM6IHsgZGVmYXVsdDogdHJ1ZSB9LFxuICAgICAgICAgICAgICBcImZzL3Byb21pc2VzXCI6IHsgZGVmYXVsdDogdHJ1ZSB9LFxuICAgICAgICAgICAgICBwcm9jZXNzOiB7IGRlZmF1bHQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgXCJ1dGlsL3R5cGVzXCI6IHsgbmFtZWQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjogeyBkZWZhdWx0OiB0cnVlIH0sXG4gICAgICAgICAgICAgIFwibm9kZTpmc1wiOiB7IGRlZmF1bHQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgXCJub2RlOmZzL3Byb21pc2VzXCI6IHsgZGVmYXVsdDogdHJ1ZSB9LFxuICAgICAgICAgICAgICBcIm5vZGU6cHJvY2Vzc1wiOiB7IGRlZmF1bHQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgXCJub2RlOnV0aWwvdHlwZXNcIjogeyBuYW1lZDogdHJ1ZSB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBcInVuaWNvcm4vbmV3LWZvci1idWlsdGluc1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwidW5pY29ybi9uby1hYnVzaXZlLWVzbGludC1kaXNhYmxlXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL25vLWFycmF5LWNhbGxiYWNrLXJlZmVyZW5jZVwiOiBcImVycm9yXCIsXG4gICAgICAgIFwidW5pY29ybi9uby1hcnJheS1tZXRob2QtdGhpcy1hcmd1bWVudFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwidW5pY29ybi9uby1mb3ItbG9vcFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwidW5pY29ybi9uby1pbnN0YW5jZW9mLWFycmF5XCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL25vLW5ldy1hcnJheVwiOiBcImVycm9yXCIsXG4gICAgICAgIFwidW5pY29ybi9uby1uZXctYnVmZmVyXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL25vLXR5cGVvZi11bmRlZmluZWRcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vbm8tdW5yZWFkYWJsZS1paWZlXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL25vLXVzZWxlc3Mtc3ByZWFkXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL3ByZWZlci1hcnJheS1mbGF0LW1hcFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwidW5pY29ybi9wcmVmZXItZ2xvYmFsLXRoaXNcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vcHJlZmVyLWluY2x1ZGVzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL3ByZWZlci1tb2R1bGVcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vcHJlZmVyLW51bWJlci1wcm9wZXJ0aWVzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJ1bmljb3JuL3ByZWZlci1zdHJpbmctc2xpY2VcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vcHJlZmVyLXRlcm5hcnlcIjogXCJlcnJvclwiLFxuICAgICAgICBcInVuaWNvcm4vdGhyb3ctbmV3LWVycm9yXCI6IFwiZXJyb3JcIixcblxuICAgICAgICBcIkBmZW5nZS9jYWxsLWFyZ3VtZW50cy1sZW5ndGhcIjogXCJlcnJvclwiLFxuICAgICAgICBcIkBmZW5nZS9uby1pbnN0YW5jZW9mLWJ1aWx0aW5cIjogXCJlcnJvclwiLFxuICAgICAgICBcIkBmZW5nZS9uby1yZXN0cmljdGVkLWxvb3BzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJAZmVuZ2Uvbm8tdW5uZWNlc3NhcnktdGVtcGxhdGUtc3RyaW5nXCI6IFwiZXJyb3JcIixcblxuICAgICAgICBcIkB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFwiOiBbXG4gICAgICAgICAgXCJlcnJvclwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwidHMtZXhwZWN0LWVycm9yXCI6IHRydWUsXG4gICAgICAgICAgICBcInRzLWlnbm9yZVwiOiB0cnVlLFxuICAgICAgICAgICAgXCJ0cy1ub2NoZWNrXCI6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlbGVzcy1lbXB0eS1leHBvcnRcIjogXCJlcnJvclwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiZmVuZ2UvamF2YXNjcmlwdC9jb25maWdcIixcbiAgICAgIGZpbGVzOiBbXCIqKi8qLmNvbmZpZy57anMsY2pzLG1qcyxqc3h9XCJdLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgXCJpbXBvcnQvbm8tZGVmYXVsdC1leHBvcnRcIjogXCJvZmZcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbW90ZW1lbi9taW5pbWF0Y2gtY2hlYXQtc2hlZXRcbiAgICAgIG5hbWU6IFwiZmVuZ2UvamF2YXNjcmlwdC90ZXN0XCIsXG4gICAgICBmaWxlczogW1xuICAgICAgICBcIioqL19fdGVzdHNfXy8qKi8qLntqcyxjanMsbWpzLGpzeH1cIixcbiAgICAgICAgXCIqKi8qLnt0ZXN0LHNwZWN9LntqcyxjanMsbWpzLGpzeH1cIixcbiAgICAgIF0sXG4gICAgICBydWxlczoge1xuICAgICAgICBcImVzbS9uby1waGFudG9tLWRlcC1pbXBvcnRzXCI6IFtcImVycm9yXCIsIHsgYWxsb3dEZXZEZXBlbmRlbmNpZXM6IHRydWUgfV0sXG4gICAgICB9LFxuICAgIH0sXG4gIF0gYXMgY29uc3Q7XG59XG4iXX0=
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as pkg from "eslint-plugin-pkg-json";
|
|
2
|
+
import * as publint from "eslint-plugin-publint";
|
|
3
|
+
export declare function packagejson(): readonly [{
|
|
4
|
+
readonly name: "fenge/packagejson";
|
|
5
|
+
readonly files: readonly ["**/package.json"];
|
|
6
|
+
readonly processor: "pkg-json/processor";
|
|
7
|
+
readonly plugins: {
|
|
8
|
+
readonly "pkg-json": typeof pkg;
|
|
9
|
+
readonly publint: typeof publint;
|
|
10
|
+
};
|
|
11
|
+
readonly rules: {
|
|
12
|
+
readonly "pkg-json/bottom-default": "error";
|
|
13
|
+
readonly "pkg-json/exact-dependency-version": "error";
|
|
14
|
+
readonly "pkg-json/no-conflict-types": "error";
|
|
15
|
+
readonly "pkg-json/no-lifecycle-script": "error";
|
|
16
|
+
readonly "pkg-json/no-nonstandard-property": "error";
|
|
17
|
+
readonly "pkg-json/no-types-dependency-in-workspace-root": "error";
|
|
18
|
+
readonly "pkg-json/top-types": "error";
|
|
19
|
+
readonly "pkg-json/private-workspace-root": "error";
|
|
20
|
+
readonly "pkg-json/required-engines": "error";
|
|
21
|
+
readonly "pkg-json/required-hashbang": "error";
|
|
22
|
+
readonly "pkg-json/required-repository": "error";
|
|
23
|
+
readonly "pkg-json/type-module": "error";
|
|
24
|
+
readonly "pkg-json/no-dependencies-in-workspace-root": "error";
|
|
25
|
+
readonly "publint/warning": "error";
|
|
26
|
+
readonly "publint/error": "error";
|
|
27
|
+
};
|
|
28
|
+
}];
|
|
29
|
+
//# sourceMappingURL=packagejson.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packagejson.d.ts","sourceRoot":"","sources":["../../src/config/packagejson.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,wBAAwB,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAC;AAEjD,wBAAgB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;GA8B1B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as pkg from "eslint-plugin-pkg-json";
|
|
2
|
+
import * as publint from "eslint-plugin-publint";
|
|
3
|
+
export function packagejson() {
|
|
4
|
+
return [
|
|
5
|
+
{
|
|
6
|
+
name: "fenge/packagejson",
|
|
7
|
+
files: ["**/package.json"],
|
|
8
|
+
processor: "pkg-json/processor",
|
|
9
|
+
plugins: {
|
|
10
|
+
"pkg-json": pkg,
|
|
11
|
+
publint,
|
|
12
|
+
},
|
|
13
|
+
rules: {
|
|
14
|
+
"pkg-json/bottom-default": "error",
|
|
15
|
+
"pkg-json/exact-dependency-version": "error",
|
|
16
|
+
"pkg-json/no-conflict-types": "error",
|
|
17
|
+
"pkg-json/no-lifecycle-script": "error",
|
|
18
|
+
"pkg-json/no-nonstandard-property": "error",
|
|
19
|
+
"pkg-json/no-types-dependency-in-workspace-root": "error",
|
|
20
|
+
"pkg-json/top-types": "error",
|
|
21
|
+
"pkg-json/private-workspace-root": "error",
|
|
22
|
+
"pkg-json/required-engines": "error",
|
|
23
|
+
"pkg-json/required-hashbang": "error",
|
|
24
|
+
"pkg-json/required-repository": "error",
|
|
25
|
+
"pkg-json/type-module": "error",
|
|
26
|
+
"pkg-json/no-dependencies-in-workspace-root": "error",
|
|
27
|
+
// "publint/suggestion": "error",
|
|
28
|
+
"publint/warning": "error",
|
|
29
|
+
"publint/error": "error",
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZWpzb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL3BhY2thZ2Vqc29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxLQUFLLE9BQU8sTUFBTSx1QkFBdUIsQ0FBQztBQUVqRCxNQUFNLFVBQVUsV0FBVztJQUN6QixPQUFPO1FBQ0w7WUFDRSxJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLEtBQUssRUFBRSxDQUFDLGlCQUFpQixDQUFDO1lBQzFCLFNBQVMsRUFBRSxvQkFBb0I7WUFDL0IsT0FBTyxFQUFFO2dCQUNQLFVBQVUsRUFBRSxHQUFHO2dCQUNmLE9BQU87YUFDUjtZQUNELEtBQUssRUFBRTtnQkFDTCx5QkFBeUIsRUFBRSxPQUFPO2dCQUNsQyxtQ0FBbUMsRUFBRSxPQUFPO2dCQUM1Qyw0QkFBNEIsRUFBRSxPQUFPO2dCQUNyQyw4QkFBOEIsRUFBRSxPQUFPO2dCQUN2QyxrQ0FBa0MsRUFBRSxPQUFPO2dCQUMzQyxnREFBZ0QsRUFBRSxPQUFPO2dCQUN6RCxvQkFBb0IsRUFBRSxPQUFPO2dCQUM3QixpQ0FBaUMsRUFBRSxPQUFPO2dCQUMxQywyQkFBMkIsRUFBRSxPQUFPO2dCQUNwQyw0QkFBNEIsRUFBRSxPQUFPO2dCQUNyQyw4QkFBOEIsRUFBRSxPQUFPO2dCQUN2QyxzQkFBc0IsRUFBRSxPQUFPO2dCQUMvQiw0Q0FBNEMsRUFBRSxPQUFPO2dCQUNyRCxpQ0FBaUM7Z0JBQ2pDLGlCQUFpQixFQUFFLE9BQU87Z0JBQzFCLGVBQWUsRUFBRSxPQUFPO2FBQ3pCO1NBQ0Y7S0FDTyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBrZyBmcm9tIFwiZXNsaW50LXBsdWdpbi1wa2ctanNvblwiO1xuaW1wb3J0ICogYXMgcHVibGludCBmcm9tIFwiZXNsaW50LXBsdWdpbi1wdWJsaW50XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWNrYWdlanNvbigpIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBuYW1lOiBcImZlbmdlL3BhY2thZ2Vqc29uXCIsXG4gICAgICBmaWxlczogW1wiKiovcGFja2FnZS5qc29uXCJdLFxuICAgICAgcHJvY2Vzc29yOiBcInBrZy1qc29uL3Byb2Nlc3NvclwiLFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICBcInBrZy1qc29uXCI6IHBrZyxcbiAgICAgICAgcHVibGludCxcbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICBcInBrZy1qc29uL2JvdHRvbS1kZWZhdWx0XCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJwa2ctanNvbi9leGFjdC1kZXBlbmRlbmN5LXZlcnNpb25cIjogXCJlcnJvclwiLFxuICAgICAgICBcInBrZy1qc29uL25vLWNvbmZsaWN0LXR5cGVzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJwa2ctanNvbi9uby1saWZlY3ljbGUtc2NyaXB0XCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJwa2ctanNvbi9uby1ub25zdGFuZGFyZC1wcm9wZXJ0eVwiOiBcImVycm9yXCIsXG4gICAgICAgIFwicGtnLWpzb24vbm8tdHlwZXMtZGVwZW5kZW5jeS1pbi13b3Jrc3BhY2Utcm9vdFwiOiBcImVycm9yXCIsXG4gICAgICAgIFwicGtnLWpzb24vdG9wLXR5cGVzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJwa2ctanNvbi9wcml2YXRlLXdvcmtzcGFjZS1yb290XCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJwa2ctanNvbi9yZXF1aXJlZC1lbmdpbmVzXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJwa2ctanNvbi9yZXF1aXJlZC1oYXNoYmFuZ1wiOiBcImVycm9yXCIsXG4gICAgICAgIFwicGtnLWpzb24vcmVxdWlyZWQtcmVwb3NpdG9yeVwiOiBcImVycm9yXCIsXG4gICAgICAgIFwicGtnLWpzb24vdHlwZS1tb2R1bGVcIjogXCJlcnJvclwiLFxuICAgICAgICBcInBrZy1qc29uL25vLWRlcGVuZGVuY2llcy1pbi13b3Jrc3BhY2Utcm9vdFwiOiBcImVycm9yXCIsXG4gICAgICAgIC8vIFwicHVibGludC9zdWdnZXN0aW9uXCI6IFwiZXJyb3JcIixcbiAgICAgICAgXCJwdWJsaW50L3dhcm5pbmdcIjogXCJlcnJvclwiLFxuICAgICAgICBcInB1YmxpbnQvZXJyb3JcIjogXCJlcnJvclwiLFxuICAgICAgfSxcbiAgICB9LFxuICBdIGFzIGNvbnN0O1xufVxuIl19
|