-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
package.json
1 lines (1 loc) · 24.8 KB
/
package.json
1
{"name":"adobe-dev-utils","displayName":"Adobe Development Utils","description":"Provides several utilities for Adobe scripts development.","version":"1.3.0","publisher":"alexmunteanu","engines":{"vscode":"^1.62.0","vscodium":"^1.62.0","node":">=12"},"icon":"images/ico_vscode-adobe-dev-utils_128px.png","sponsor":{"url":"https://github.com/sponsors/alexmunteanu"},"languages":{"list":["javascript","javascriptreact","js","jsx"],"msg_error":"Adobe Dev Utils: Language not supported."},"galleryBanner":{"color":"#0b0b0b","theme":"dark"},"categories":["Formatters","Other","Extension Packs"],"keywords":["ExtendScript","JSXBIN","JSX","JavaScript","text","manipulation","string","encoder","encoding","adobe","after effects","premiere","photoshop","illustrator","indesign","expressions"],"activationEvents":["onCommand:adobe_dev_utils.js_to_string","onCommand:adobe_dev_utils.obfuscate_js","onCommand:adobe_dev_utils.encode_jsxbin","onCommand:adobe_dev_utils.obfuscate_encode","onCommand:adobe_dev_utils.build","onCommand:adobe_dev_utils.ae.expression.send","onCommand:adobe_dev_utils.ae.expression.receive","onCommand:adobe_dev_utils.ae.convert.hex.escape","onCommand:adobe_dev_utils.ae.convert.hex.unescape"],"main":"lib/adobe-dev-utils.js","contributes":{"commands":[{"command":"adobe_dev_utils.js_to_string","title":"Adobe Dev Utils: JS selection to String","category":"Adobe Dev Utils"},{"command":"adobe_dev_utils.obfuscate_js","title":"Adobe Dev Utils: Obfuscate JS selection","category":"Adobe Dev Utils"},{"command":"adobe_dev_utils.encode_jsxbin","title":"Adobe Dev Utils: Encode JS selection to JSXBIN","category":"Adobe Dev Utils"},{"command":"adobe_dev_utils.obfuscate_encode","title":"Adobe Dev Utils: Obfuscate + Encode JS selection to JSXBIN","category":"Adobe Dev Utils"},{"command":"adobe_dev_utils.build","title":"Adobe Dev Utils: Build the script","category":"Adobe Dev Utils"},{"command":"adobe_dev_utils.ae.expression.send","title":"Adobe Dev Utils: Send After Effects expression","category":"Adobe Dev Utils"},{"command":"adobe_dev_utils.ae.expression.receive","title":"Adobe Dev Utils: Receive After Effects expressions","category":"Adobe Dev Utils"},{"command":"adobe_dev_utils.ae.convert.hex.escape","title":"Adobe Dev Utils: Hex escape","category":"Adobe Dev Utils"},{"command":"adobe_dev_utils.ae.convert.hex.unescape","title":"Adobe Dev Utils: Hex unescape","category":"Adobe Dev Utils"}],"keybindings":[{"command":"adobe_dev_utils.js_to_string","key":"alt+d","mac":"alt+d","when":"editorTextFocus"},{"command":"adobe_dev_utils.obfuscate_js","key":"alt+shift+d","mac":"alt+shift+d","when":"editorTextFocus"},{"command":"adobe_dev_utils.encode_jsxbin","key":"ctrl+alt+d","mac":"cmd+alt+d","when":"editorTextFocus"},{"command":"adobe_dev_utils.obfuscate_encode","key":"ctrl+shift+tab","mac":"cmd+shift+tab","when":"editorTextFocus"},{"command":"adobe_dev_utils.build","key":"ctrl+shift+alt+b","mac":"cmd+shift+alt+b","when":"editorTextFocus"},{"command":"adobe_dev_utils.ae.expression.send","key":"alt+e","mac":"alt+e","when":"editorTextFocus"},{"command":"adobe_dev_utils.ae.expression.receive","key":"alt+i","mac":"alt+i","when":"editorTextFocus"},{"command":"adobe_dev_utils.ae.convert.hex.escape","key":"alt+h","mac":"alt+h","when":"editorTextFocus"},{"command":"adobe_dev_utils.ae.convert.hex.unescape","key":"alt+u","mac":"alt+u","when":"editorTextFocus"}],"menus":{"editor/context":[{"command":"adobe_dev_utils.js_to_string","group":"grp@1"},{"command":"adobe_dev_utils.obfuscate_js","group":"grp@2"},{"command":"adobe_dev_utils.encode_jsxbin","group":"grp@3"},{"command":"adobe_dev_utils.obfuscate_encode","group":"grp@4"},{"command":"adobe_dev_utils.build","group":"grp@5"},{"command":"adobe_dev_utils.ae.expression.send","group":"grp@6"},{"command":"adobe_dev_utils.ae.expression.receive","group":"grp@7"},{"command":"adobe_dev_utils.ae.convert.hex.escape","group":"grp@8"},{"command":"adobe_dev_utils.ae.convert.hex.unescape","group":"grp@9"}]},"configuration":[{"type":"object","title":"Adobe Dev Utils: JS to String","properties":{"adobeDevUtils.jsToString.string.commentStyle":{"type":"string","description":"Use inline or block comment style to comment-out the source code.","default":"inline","enum":["inline","block"]},"adobeDevUtils.jsToString.string.stringStyle":{"type":"string","description":"Select the string style.","default":"concatenated / multi-line","enum":["single-line","concatenated / multi-line"],"enumDescriptions":["Convert the selected lines to a single line JS string.","Convert the selected lines to a concatenated JS string or a multi-line template literal."]},"adobeDevUtils.jsToString.string.quotesStyle":{"type":"string","description":"Use single or double quotes.","default":"single","enum":["single","double","template literal"]},"adobeDevUtils.jsToString.string.stripComments":{"type":"boolean","default":false,"description":"Generate the string without the commented-out lines."},"adobeDevUtils.jsToString.string.includeWhitespaces":{"type":"boolean","default":true,"description":"If this is unchecked, any tabs or new line characters will be stripped."},"adobeDevUtils.jsToString.string.trail.addTrailingCharacter":{"type":"boolean","default":true,"description":"Insert a custom character after the quotes."},"adobeDevUtils.jsToString.string.trail.trailingCharacter":{"type":"string","default":";","description":"The character that will be inserted at the end of the string, after the quotes."},"adobeDevUtils.jsToString.jsBeautifier.beautify":{"type":"boolean","default":false,"description":"The selected code will be first beautified and then stringified."},"adobeDevUtils.jsToString.jsBeautifier.tabSize":{"type":"string","default":"2","description":"Number of spaces used to represent a tab."}}},{"type":"object","title":"Adobe Dev Utils: JSXBIN encoding","properties":{"adobeDevUtils.encodeJsxbin.evalPosition":{"type":"string","default":"under","enum":["adove","under"],"markdownDescription":"Insert the `eval` method **above** or **under** the selection."},"adobeDevUtils.encodeJsxbin.encodingQuotes":{"type":"string","default":"single","enum":["single","double"],"markdownDescription":"Use **single** or **double** quotes inside the `eval` method."},"adobeDevUtils.encodeJsxbin.commentStyle":{"type":"string","description":"Use inline or block comment style to comment-out the source code.","default":"block","enum":["inline","block"]},"adobeDevUtils.encodeJsxbin.notification.showOnComplete":{"type":"boolean","default":true,"markdownDescription":"Show a pop-up notification after each completed task."},"adobeDevUtils.encodeJsxbin.notification.showWarnings":{"type":"boolean","default":true,"markdownDescription":"Show a pop-up warning if the script processing time might increase."}}},{"type":"object","title":"Adobe Dev Utils: JS obfuscation","properties":{"adobeDevUtils.jsObfuscation.commentStyle":{"type":"string","description":"Use inline or block comment style to comment-out the source code.","default":"block","enum":["inline","block"]},"adobeDevUtils.jsObfuscation.compact":{"type":"boolean","default":true,"markdownDescription":"Compact code output on one line."},"adobeDevUtils.jsObfuscation.controlFlowFlattening":{"type":"boolean","default":false,"markdownDescription":"Enables code control flow flattening. Control flow flattening is a structure transformation of the source code that hinders program comprehension.\nThis option greatly affects the performance up to 1.5x slower runtime speed. Use `controlFlowFlatteningThreshold` to set percentage of nodes that will affected by control flow flattening."},"adobeDevUtils.jsObfuscation.controlFlowFlatteningThreshold":{"type":"number","default":0.75,"markdownDescription":"The probability that the `controlFlowFlattening` transformation will be applied to any given node."},"adobeDevUtils.jsObfuscation.deadCodeInjection":{"type":"boolean","default":false,"markdownDescription":"With this option, random blocks of dead code will be added to the obfuscated code.\n\nDramatically increases size of obfuscated code (up to 200%), use only if size of obfuscated code doesn't matter. Use `deadCodeInjectionThreshold` to set percentage of nodes that will affected by dead code injection.\n\nThis option forcibly enables `stringArray` option."},"adobeDevUtils.jsObfuscation.deadCodeInjectionThreshold":{"type":"number","default":0.4,"markdownDescription":"Allows to set percentage of nodes that will affected by `deadCodeInjection`."},"adobeDevUtils.jsObfuscation.debugProtection":{"type":"boolean","default":false,"markdownDescription":"This option makes it almost impossible to use the **debugger** function of the Developer Tools (both on WebKit-based and Mozilla Firefox).\nCan freeze your browser if you open the Developer Tools."},"adobeDevUtils.jsObfuscation.debugProtectionInterval":{"type":"integer","default":0,"markdownDescription":"If set, an interval in milliseconds is used to force the debug mode on the Console tab, making it harder to use other features of the Developer Tools. Works if `debugProtection` is enabled.\nRecommended value is between *2000* and *4000* milliseconds.\nCan freeze your browser! Use at own risk."},"adobeDevUtils.jsObfuscation.disableConsoleOutput":{"type":"boolean","default":false,"markdownDescription":"Disables the use of `console.log`, `console.info`, `console.error`, `console.warn`, `console.debug`, `console.exception` and `console.trace` by replacing them with empty functions. This makes the use of the debugger harder."},"adobeDevUtils.jsObfuscation.domainLock":{"type":"array","default":[],"markdownDescription":"Allows to run the obfuscated source code only on specific domains and/or sub-domains. This makes really hard for someone to just copy and paste your source code and run it elsewhere."},"adobeDevUtils.jsObfuscation.domainLockRedirectUrl":{"type":"string","default":"about:blank","markdownDescription":"This option does not work with `target: 'node'`\nAllows the browser to be redirected to a passed URL if the source code isn't run on the domains specified by `domainLock`"},"adobeDevUtils.jsObfuscation.forceTransformStrings":{"type":"array","default":[],"markdownDescription":"Enables force transformation of string literals, which being matched by passed RegExp patterns.\nThis option affects only strings that shouldn't be transformed by `stringArrayThreshold` (or possible other thresholds in the future)\nThe option has a priority over `reservedStrings` option but hasn't a priority over `conditional comments`."},"adobeDevUtils.jsObfuscation.identifierNamesGenerator":{"type":"string","default":"hexadecimal","enum":["dictionary","hexadecimal","mangled","mangled-shuffled"],"markdownDescription":"Sets identifier names generator.\nAvailable values:\n* `dictionary`: identifier names from `identifiersDictionary` list\n* `hexadecimal`: identifier names like `_0xabc123`\n* `mangled`: short identifier names like `a`, `b`, `c`\n* `mangled-shuffled`: same as `mangled` but with shuffled alphabet"},"adobeDevUtils.jsObfuscation.identifiersDictionary":{"type":"array","default":[],"markdownDescription":"Sets identifiers dictionary for `identifierNamesGenerator`: `dictionary` option. Each identifier from the dictionary will be used in a few variants with a different casing of each character. Thus, the number of identifiers in the dictionary should depend on the identifiers amount at original source code."},"adobeDevUtils.jsObfuscation.identifiersPrefixMode":{"type":"string","default":"unique_id","enum":["custom","unique_id"],"markdownDescription":"Sets prefix for all global identifiers.\nUse this option when you want to obfuscate multiple files. This option helps to avoid conflicts between global identifiers of these files. Prefix should be different for every file.\n* `custom` - set a custom prefix\n* `unique_id` - use a generated prefix (letters only; 12 chars long; lowerCase & upperCase;)"},"adobeDevUtils.jsObfuscation.identifiersPrefixCustom":{"type":"string","default":"","markdownDescription":"Sets prefix for all global identifiers.\nUse this option when you want to obfuscate multiple files. This option helps to avoid conflicts between global identifiers of these files. Prefix should be different for every file.\nWill be used if `Identifiers Prex Mode` is set to `custom`"},"adobeDevUtils.jsObfuscation.identifiersPrefixUniqueIdLength":{"type":"integer","default":12,"markdownDescription":"Set the length of the `unique_id`."},"adobeDevUtils.jsObfuscation.identifiersPrefixUniqueIdUseCaps":{"type":"boolean","default":true,"markdownDescription":"Include upper case characters in the `unique_id`."},"adobeDevUtils.jsObfuscation.ignoreImports":{"type":"boolean","default":false,"markdownDescription":"Prevents obfuscation of `require` imports. Could be helpful in some cases when for some reason runtime environment requires these imports with static strings only."},"adobeDevUtils.jsObfuscation.inputFileName":{"type":"string","default":"","markdownDescription":"Allows to set name of the input file with source code. This name will be used internally for source map generation."},"adobeDevUtils.jsObfuscation.log":{"type":"boolean","default":false,"markdownDescription":"Enables logging of the information to the console."},"adobeDevUtils.jsObfuscation.numbersToExpressions":{"type":"boolean","default":false,"markdownDescription":"Enables numbers conversion to expressions."},"adobeDevUtils.jsObfuscation.optionsPreset":{"type":"string","default":"default","enum":["default","low-obfuscation","medium-obfuscation","high-obfuscation"],"markdownDescription":"Allows to set `options preset`.\nAll addition options will be merged with selected options preset."},"adobeDevUtils.jsObfuscation.renameGlobals":{"type":"boolean","default":false,"markdownDescription":"Enables obfuscation of global variable and function names with declaration.\nThis option can break your code. Enable it only if you know what it does!"},"adobeDevUtils.jsObfuscation.renameProperties":{"type":"boolean","default":false,"markdownDescription":"This option MAY break your code. Enable it only if you know what it does!\nEnables renaming of property names. All built-in DOM properties and properties in core JavaScript classes will be ignored.\nTo switch between `safe` and `unsafe` modes of this option use `renamePropertiesMode` option.\nTo set format of renamed property names use `identifierNamesGenerator` option.\nTo control which properties will be renamed use `reservedNames` option.\nthis option WILL break your code in most cases. Enable it only if you know what it does!"},"adobeDevUtils.jsObfuscation.renamePropertiesMode":{"type":"string","default":"safe","enum":["safe","unsafe"],"markdownDescription":"Even in `safe` mode, `renameProperties` option MAY break your code."},"adobeDevUtils.jsObfuscation.reservedNames":{"type":"array","default":[],"markdownDescription":"Disables obfuscation and generation of identifiers, which being matched by passed RegExp patterns."},"adobeDevUtils.jsObfuscation.reservedStrings":{"type":"array","default":[],"markdownDescription":"Disables transformation of string literals, which being matched by passed RegExp patterns."},"adobeDevUtils.jsObfuscation.selfDefending":{"type":"boolean","default":false,"markdownDescription":"This option makes the output code resilient against formatting and variable renaming. If one tries to use a JavaScript beautifier on the obfuscated code, the code won't work anymore, making it harder to understand and modify it.\nDon't change obfuscated code in any way after obfuscation with this option, because any change like uglifying of code can trigger self defending and code wont work anymore!\nThis option forcibly sets `compact` value to `true`"},"adobeDevUtils.jsObfuscation.simplify":{"type":"boolean","default":false,"markdownDescription":"Enables additional code obfuscation through simplification."},"adobeDevUtils.jsObfuscation.sourceMap":{"type":"boolean","default":false,"markdownDescription":"Enables source map generation for obfuscated code.\nSource maps can be useful to help you debug your obfuscated JavaScript source code. If you want or need to debug in production, you can upload the separate source map file to a secret location and then point your browser there."},"adobeDevUtils.jsObfuscation.sourceMapBaseUrl":{"type":"string","default":"","markdownDescription":"Sets base url to the source map import url when `sourceMapMode`: `'separate'`."},"adobeDevUtils.jsObfuscation.sourceMapFileName":{"type":"string","default":"","markdownDescription":"Sets file name for output source map when `sourceMapMode`: `'separate'`."},"adobeDevUtils.jsObfuscation.sourceMapMode":{"type":"string","default":"separate","enum":["inline","separate"],"markdownDescription":"Specifies source map generation mode:\n* `inline` - add source map at the end of each .js files\n* `separate` - generates corresponding '.map' file with source map. In case you run obfuscator through CLI - adds link to source map file to the end of file with obfuscated code `//# sourceMappingUrl=file.js.map`."},"adobeDevUtils.jsObfuscation.splitStrings":{"type":"boolean","default":false,"markdownDescription":"Splits literal strings into chunks with length of `splitStringsChunkLength` option value."},"adobeDevUtils.jsObfuscation.splitStringsChunkLength":{"type":"integer","default":10,"markdownDescription":"Sets chunk length of `splitStrings` option."},"adobeDevUtils.jsObfuscation.stringArray":{"type":"boolean","default":false,"markdownDescription":"Removes string literals and place them in a special array. For instance, the string `\"Hello World\"` in `var m = \"Hello World\";` will be replaced with something like `var m = _0x12c456[0x1];`"},"adobeDevUtils.jsObfuscation.stringArrayCallsTransform":{"type":"boolean","default":false,"markdownDescription":"Enables the transformation of calls to the `stringArray`. All arguments of these calls may be extracted to a different object depending on `stringArrayCallsTransformThreshold` value. So it makes it even harder to automatically find calls to the string array."},"adobeDevUtils.jsObfuscation.stringArrayCallsTransformThreshold":{"type":"integer","default":0.5,"markdownDescription":"You can use this setting to adjust the probability (from 0 to 1) that calls to the string array will be transformed."},"adobeDevUtils.jsObfuscation.stringArrayIndexesType":{"type":"array","default":["hexadecimal-number"],"enum":["hexadecimal-number","hexadecimal-numeric-string"],"markdownDescription":"Allows to control the type of string array call indexes.\nEach `stringArray` call index will be transformed by the randomly picked type from the passed list. This makes possible to use multiple types.\nAvailable values:\n* `'hexadecimal-number'` `(default)`: transforms string array call indexes as hexadecimal numbers\n* `'hexadecimal-numeric-string'`: transforms string array call indexes as hexadecimal numeric string\n`stringArray` option must be enabled."},"adobeDevUtils.jsObfuscation.stringArrayEncoding":{"type":"array","default":[],"markdownDescription":"This option can slow down your script.\nEncode all string literals of the `stringArray` using `base64` or `rc4` and inserts a special code that used to decode it back at runtime.\nEach `stringArray` value will be encoded by the randomly picked encoding from the passed list. This makes possible to use multiple encodings.\nAvailable values:\n* `'none'` `(boolean)`: doesn't encode `stringArray` value\n* `'base64'` `(string)`: encodes `stringArray` value using `base64`\n* `'rc4'` `(string)`: encodes `stringArray` value using `rc4`. About 30-50% slower than `base64`, but more harder to get initial values. It's recommended to disable `unicodeEscapeSequence` option when using `rc4` encoding to prevent very large size of obfuscated code.\n`stringArray` option must be enabled."},"adobeDevUtils.jsObfuscation.stringArrayIndexShift":{"type":"boolean","default":false,"markdownDescription":"Enables additional index shift for all string array calls.\n`stringArray` option must be enabled."},"adobeDevUtils.jsObfuscation.stringArrayRotate":{"type":"boolean","default":false,"markdownDescription":"Shift the `stringArray` array by a fixed and random (generated at the code obfuscation) places. This makes it harder to match the order of the removed strings to their original place.\n`stringArray` must be enabled."},"adobeDevUtils.jsObfuscation.stringArrayShuffle":{"type":"boolean","default":false,"markdownDescription":"Randomly shuffles the `stringArray` array items.\n`stringArray` must be enabled."},"adobeDevUtils.jsObfuscation.stringArrayWrappersCount":{"type":"integer","default":1,"markdownDescription":"Sets the count of wrappers for the `string array` inside each root or function scope. The actual count of wrappers inside each scope is limited by a count of `literal` nodes within this scope.\n`stringArray` option must be enabled."},"adobeDevUtils.jsObfuscation.stringArrayWrappersChainedCalls":{"type":"boolean","default":false,"markdownDescription":"Enables the chained calls between `string array` wrappers.\n`stringArray` and `stringArrayWrappersCount` options must be enabled."},"adobeDevUtils.jsObfuscation.stringArrayWrappersParametersMaxCount":{"type":"integer","default":2,"markdownDescription":"Allows to control the maximum number of string array wrappers parameters. Default and minimum value is `2`. Recommended value between `2` and `5`.\n`stringArray` option must be enabled.\nCurrently this option affects only wrappers added by `stringArrayWrappersType` `function` option value"},"adobeDevUtils.jsObfuscation.stringArrayWrappersType":{"type":"string","default":"variable","enum":["variable","function"],"markdownDescription":"Allows to select a type of the wrappers that are appending by the `stringArrayWrappersCount` option.\nAvailable values:\n* `'variable'`: appends variable wrappers. Fast performance.\n* `'function'`: appends function wrappers. Slower performance than with `variable` but provides more strict obfuscation\nHighly recommended to use `function` wrappers for higher obfuscation when a performance loss doesn't have a high impact on an obfuscated application.\n`stringArray` and `stringArrayWrappersCount` options must be enabled."},"adobeDevUtils.jsObfuscation.stringArrayThreshold":{"type":"number","default":0.75,"markdownDescription":"You can use this setting to adjust the probability (from 0 to 1) that a string literal will be inserted into the `stringArray`.\nThis setting is especially useful for large code size because it repeatedly calls to the `string array` and can slow down your code.\n`stringArrayThreshold: 0` equals to `stringArray: false`.\n`stringArray` option must be enabled."},"adobeDevUtils.jsObfuscation.target":{"type":"string","default":"browser","enum":["browser","browser-no-eval","node"],"markdownDescription":"Allows to set target environment for obfuscated code.\nAvailable values:\n* `browser`\n* `browser-no-eval`\n* `node`\nCurrently output code for `browser` and `node` targets is identical, but some browser-specific options are not allowed to use with `node` target. Output code for `browser-no-eval` target is not using `eval`."},"adobeDevUtils.jsObfuscation.transformObjectKeys":{"type":"boolean","default":false,"markdownDescription":"Enables transformation of object keys."},"adobeDevUtils.jsObfuscation.unicodeEscapeSequence":{"type":"boolean","default":false,"markdownDescription":"Allows to enable/disable string conversion to unicode escape sequence.\nUnicode escape sequence increases code size greatly and strings easily can be reverted to their original view. Recommended to enable this option only for small source code."}}},{"type":"object","title":"Adobe Dev Utils: Build","properties":{"adobeDevUtils.build.folderName":{"type":"string","default":"_build","markdownDescription":"Name of the folder where the script will be created."},"adobeDevUtils.build.obfuscate":{"type":"boolean","default":true,"markdownDescription":"Obfuscate the script."},"adobeDevUtils.build.jsxbin":{"type":"boolean","default":true,"markdownDescription":"Encode the script to JSXBIN."},"adobeDevUtils.build.addHeader":{"type":"boolean","default":false,"markdownDescription":"Add a script header."},"adobeDevUtils.build.headerAuthor":{"type":"string","default":"","markdownDescription":"The script's author."},"adobeDevUtils.build.headerAuthorWebpage":{"type":"string","default":"","markdownDescription":"The script's author webpage."},"adobeDevUtils.build.headerScriptVersion":{"type":"boolean","default":false,"markdownDescription":"Add the script's version in the header."},"adobeDevUtils.build.headerBuildDate":{"type":"boolean","default":false,"markdownDescription":"Add the script's build date in the header."}}},{"type":"object","title":"Adobe Dev Utils: Send/receive After Effects Expressions","properties":{"adobeDevUtils.ae.expression.aePath":{"type":"string","default":"C:/Program Files/Adobe/Adobe After Effects 2022","markdownDescription":"**Windows** only: Adobe After Effects installation path."}}}]},"scripts":{},"repository":{"type":"git","url":"https://github.com/alexmunteanu/VS-Code-Adobe-Development-Utils"},"dependencies":{"decomment":"0.9.5","del":"6.0.0","gulp":"4.0.2","gulp-header":"2.0.9","gulp-include":"2.4.1","gulp-rename":"2.0.0","javascript-obfuscator":"4.0.0","js-beautify":"1.14.4","path":"0.12.7"}}