mirror of
				https://github.com/actions/setup-node.git
				synced 2025-11-01 00:23:59 +08:00 
			
		
		
		
	Update @actions/core to 1.10.0 (#587)
This commit is contained in:
		
							
								
								
									
										2
									
								
								.licenses/npm/@actions/core.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								.licenses/npm/@actions/core.dep.yml
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +1,6 @@ | |||||||
| --- | --- | ||||||
| name: "@actions/core" | name: "@actions/core" | ||||||
| version: 1.9.1 | version: 1.10.0 | ||||||
| type: npm | type: npm | ||||||
| summary: Actions core lib | summary: Actions core lib | ||||||
| homepage: https://github.com/actions/toolkit/tree/main/packages/core | homepage: https://github.com/actions/toolkit/tree/main/packages/core | ||||||
|   | |||||||
| @@ -46,6 +46,7 @@ describe('setup-node', () => { | |||||||
|     // @actions/core |     // @actions/core | ||||||
|     console.log('::stop-commands::stoptoken'); // Disable executing of runner commands when running tests in actions |     console.log('::stop-commands::stoptoken'); // Disable executing of runner commands when running tests in actions | ||||||
|     process.env['GITHUB_PATH'] = ''; // Stub out ENV file functionality so we can verify it writes to standard out |     process.env['GITHUB_PATH'] = ''; // Stub out ENV file functionality so we can verify it writes to standard out | ||||||
|  |     process.env['GITHUB_OUTPUT'] = ''; // Stub out ENV file functionality so we can verify it writes to standard out | ||||||
|     inputs = {}; |     inputs = {}; | ||||||
|     inSpy = jest.spyOn(core, 'getInput'); |     inSpy = jest.spyOn(core, 'getInput'); | ||||||
|     inSpy.mockImplementation(name => inputs[name]); |     inSpy.mockImplementation(name => inputs[name]); | ||||||
|   | |||||||
							
								
								
									
										53
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										53
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -3477,7 +3477,6 @@ const file_command_1 = __nccwpck_require__(717); | |||||||
| const utils_1 = __nccwpck_require__(5278); | const utils_1 = __nccwpck_require__(5278); | ||||||
| const os = __importStar(__nccwpck_require__(2037)); | const os = __importStar(__nccwpck_require__(2037)); | ||||||
| const path = __importStar(__nccwpck_require__(1017)); | const path = __importStar(__nccwpck_require__(1017)); | ||||||
| const uuid_1 = __nccwpck_require__(8974); |  | ||||||
| const oidc_utils_1 = __nccwpck_require__(8041); | const oidc_utils_1 = __nccwpck_require__(8041); | ||||||
| /** | /** | ||||||
|  * The code to exit an action |  * The code to exit an action | ||||||
| @@ -3507,21 +3506,10 @@ function exportVariable(name, val) { | |||||||
|     process.env[name] = convertedVal; |     process.env[name] = convertedVal; | ||||||
|     const filePath = process.env['GITHUB_ENV'] || ''; |     const filePath = process.env['GITHUB_ENV'] || ''; | ||||||
|     if (filePath) { |     if (filePath) { | ||||||
|         const delimiter = `ghadelimiter_${uuid_1.v4()}`; |         return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val)); | ||||||
|         // These should realistically never happen, but just in case someone finds a way to exploit uuid generation let's not allow keys or values that contain the delimiter.
 |  | ||||||
|         if (name.includes(delimiter)) { |  | ||||||
|             throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); |  | ||||||
|     } |     } | ||||||
|         if (convertedVal.includes(delimiter)) { |  | ||||||
|             throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); |  | ||||||
|         } |  | ||||||
|         const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`; |  | ||||||
|         file_command_1.issueCommand('ENV', commandValue); |  | ||||||
|     } |  | ||||||
|     else { |  | ||||||
|     command_1.issueCommand('set-env', { name }, convertedVal); |     command_1.issueCommand('set-env', { name }, convertedVal); | ||||||
| } | } | ||||||
| } |  | ||||||
| exports.exportVariable = exportVariable; | exports.exportVariable = exportVariable; | ||||||
| /** | /** | ||||||
|  * Registers a secret which will get masked from logs |  * Registers a secret which will get masked from logs | ||||||
| @@ -3538,7 +3526,7 @@ exports.setSecret = setSecret; | |||||||
| function addPath(inputPath) { | function addPath(inputPath) { | ||||||
|     const filePath = process.env['GITHUB_PATH'] || ''; |     const filePath = process.env['GITHUB_PATH'] || ''; | ||||||
|     if (filePath) { |     if (filePath) { | ||||||
|         file_command_1.issueCommand('PATH', inputPath); |         file_command_1.issueFileCommand('PATH', inputPath); | ||||||
|     } |     } | ||||||
|     else { |     else { | ||||||
|         command_1.issueCommand('add-path', {}, inputPath); |         command_1.issueCommand('add-path', {}, inputPath); | ||||||
| @@ -3578,8 +3566,11 @@ function getMultilineInput(name, options) { | |||||||
|     const inputs = getInput(name, options) |     const inputs = getInput(name, options) | ||||||
|         .split('\n') |         .split('\n') | ||||||
|         .filter(x => x !== ''); |         .filter(x => x !== ''); | ||||||
|  |     if (options && options.trimWhitespace === false) { | ||||||
|         return inputs; |         return inputs; | ||||||
|     } |     } | ||||||
|  |     return inputs.map(input => input.trim()); | ||||||
|  | } | ||||||
| exports.getMultilineInput = getMultilineInput; | exports.getMultilineInput = getMultilineInput; | ||||||
| /** | /** | ||||||
|  * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. |  * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. | ||||||
| @@ -3611,8 +3602,12 @@ exports.getBooleanInput = getBooleanInput; | |||||||
|  */ |  */ | ||||||
| // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | ||||||
| function setOutput(name, value) { | function setOutput(name, value) { | ||||||
|  |     const filePath = process.env['GITHUB_OUTPUT'] || ''; | ||||||
|  |     if (filePath) { | ||||||
|  |         return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value)); | ||||||
|  |     } | ||||||
|     process.stdout.write(os.EOL); |     process.stdout.write(os.EOL); | ||||||
|     command_1.issueCommand('set-output', { name }, value); |     command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value)); | ||||||
| } | } | ||||||
| exports.setOutput = setOutput; | exports.setOutput = setOutput; | ||||||
| /** | /** | ||||||
| @@ -3741,7 +3736,11 @@ exports.group = group; | |||||||
|  */ |  */ | ||||||
| // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | ||||||
| function saveState(name, value) { | function saveState(name, value) { | ||||||
|     command_1.issueCommand('save-state', { name }, value); |     const filePath = process.env['GITHUB_STATE'] || ''; | ||||||
|  |     if (filePath) { | ||||||
|  |         return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value)); | ||||||
|  |     } | ||||||
|  |     command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value)); | ||||||
| } | } | ||||||
| exports.saveState = saveState; | exports.saveState = saveState; | ||||||
| /** | /** | ||||||
| @@ -3807,13 +3806,14 @@ var __importStar = (this && this.__importStar) || function (mod) { | |||||||
|     return result; |     return result; | ||||||
| }; | }; | ||||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||||
| exports.issueCommand = void 0; | exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; | ||||||
| // We use any as a valid input type
 | // We use any as a valid input type
 | ||||||
| /* eslint-disable @typescript-eslint/no-explicit-any */ | /* eslint-disable @typescript-eslint/no-explicit-any */ | ||||||
| const fs = __importStar(__nccwpck_require__(7147)); | const fs = __importStar(__nccwpck_require__(7147)); | ||||||
| const os = __importStar(__nccwpck_require__(2037)); | const os = __importStar(__nccwpck_require__(2037)); | ||||||
|  | const uuid_1 = __nccwpck_require__(8974); | ||||||
| const utils_1 = __nccwpck_require__(5278); | const utils_1 = __nccwpck_require__(5278); | ||||||
| function issueCommand(command, message) { | function issueFileCommand(command, message) { | ||||||
|     const filePath = process.env[`GITHUB_${command}`]; |     const filePath = process.env[`GITHUB_${command}`]; | ||||||
|     if (!filePath) { |     if (!filePath) { | ||||||
|         throw new Error(`Unable to find environment variable for file command ${command}`); |         throw new Error(`Unable to find environment variable for file command ${command}`); | ||||||
| @@ -3825,7 +3825,22 @@ function issueCommand(command, message) { | |||||||
|         encoding: 'utf8' |         encoding: 'utf8' | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| exports.issueCommand = issueCommand; | exports.issueFileCommand = issueFileCommand; | ||||||
|  | function prepareKeyValueMessage(key, value) { | ||||||
|  |     const delimiter = `ghadelimiter_${uuid_1.v4()}`; | ||||||
|  |     const convertedValue = utils_1.toCommandValue(value); | ||||||
|  |     // These should realistically never happen, but just in case someone finds a
 | ||||||
|  |     // way to exploit uuid generation let's not allow keys or values that contain
 | ||||||
|  |     // the delimiter.
 | ||||||
|  |     if (key.includes(delimiter)) { | ||||||
|  |         throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); | ||||||
|  |     } | ||||||
|  |     if (convertedValue.includes(delimiter)) { | ||||||
|  |         throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); | ||||||
|  |     } | ||||||
|  |     return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; | ||||||
|  | } | ||||||
|  | exports.prepareKeyValueMessage = prepareKeyValueMessage; | ||||||
| //# sourceMappingURL=file-command.js.map
 | //# sourceMappingURL=file-command.js.map
 | ||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
|   | |||||||
							
								
								
									
										53
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										53
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -3477,7 +3477,6 @@ const file_command_1 = __nccwpck_require__(717); | |||||||
| const utils_1 = __nccwpck_require__(5278); | const utils_1 = __nccwpck_require__(5278); | ||||||
| const os = __importStar(__nccwpck_require__(2037)); | const os = __importStar(__nccwpck_require__(2037)); | ||||||
| const path = __importStar(__nccwpck_require__(1017)); | const path = __importStar(__nccwpck_require__(1017)); | ||||||
| const uuid_1 = __nccwpck_require__(8974); |  | ||||||
| const oidc_utils_1 = __nccwpck_require__(8041); | const oidc_utils_1 = __nccwpck_require__(8041); | ||||||
| /** | /** | ||||||
|  * The code to exit an action |  * The code to exit an action | ||||||
| @@ -3507,21 +3506,10 @@ function exportVariable(name, val) { | |||||||
|     process.env[name] = convertedVal; |     process.env[name] = convertedVal; | ||||||
|     const filePath = process.env['GITHUB_ENV'] || ''; |     const filePath = process.env['GITHUB_ENV'] || ''; | ||||||
|     if (filePath) { |     if (filePath) { | ||||||
|         const delimiter = `ghadelimiter_${uuid_1.v4()}`; |         return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val)); | ||||||
|         // These should realistically never happen, but just in case someone finds a way to exploit uuid generation let's not allow keys or values that contain the delimiter.
 |  | ||||||
|         if (name.includes(delimiter)) { |  | ||||||
|             throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); |  | ||||||
|     } |     } | ||||||
|         if (convertedVal.includes(delimiter)) { |  | ||||||
|             throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); |  | ||||||
|         } |  | ||||||
|         const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`; |  | ||||||
|         file_command_1.issueCommand('ENV', commandValue); |  | ||||||
|     } |  | ||||||
|     else { |  | ||||||
|     command_1.issueCommand('set-env', { name }, convertedVal); |     command_1.issueCommand('set-env', { name }, convertedVal); | ||||||
| } | } | ||||||
| } |  | ||||||
| exports.exportVariable = exportVariable; | exports.exportVariable = exportVariable; | ||||||
| /** | /** | ||||||
|  * Registers a secret which will get masked from logs |  * Registers a secret which will get masked from logs | ||||||
| @@ -3538,7 +3526,7 @@ exports.setSecret = setSecret; | |||||||
| function addPath(inputPath) { | function addPath(inputPath) { | ||||||
|     const filePath = process.env['GITHUB_PATH'] || ''; |     const filePath = process.env['GITHUB_PATH'] || ''; | ||||||
|     if (filePath) { |     if (filePath) { | ||||||
|         file_command_1.issueCommand('PATH', inputPath); |         file_command_1.issueFileCommand('PATH', inputPath); | ||||||
|     } |     } | ||||||
|     else { |     else { | ||||||
|         command_1.issueCommand('add-path', {}, inputPath); |         command_1.issueCommand('add-path', {}, inputPath); | ||||||
| @@ -3578,8 +3566,11 @@ function getMultilineInput(name, options) { | |||||||
|     const inputs = getInput(name, options) |     const inputs = getInput(name, options) | ||||||
|         .split('\n') |         .split('\n') | ||||||
|         .filter(x => x !== ''); |         .filter(x => x !== ''); | ||||||
|  |     if (options && options.trimWhitespace === false) { | ||||||
|         return inputs; |         return inputs; | ||||||
|     } |     } | ||||||
|  |     return inputs.map(input => input.trim()); | ||||||
|  | } | ||||||
| exports.getMultilineInput = getMultilineInput; | exports.getMultilineInput = getMultilineInput; | ||||||
| /** | /** | ||||||
|  * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. |  * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. | ||||||
| @@ -3611,8 +3602,12 @@ exports.getBooleanInput = getBooleanInput; | |||||||
|  */ |  */ | ||||||
| // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | ||||||
| function setOutput(name, value) { | function setOutput(name, value) { | ||||||
|  |     const filePath = process.env['GITHUB_OUTPUT'] || ''; | ||||||
|  |     if (filePath) { | ||||||
|  |         return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value)); | ||||||
|  |     } | ||||||
|     process.stdout.write(os.EOL); |     process.stdout.write(os.EOL); | ||||||
|     command_1.issueCommand('set-output', { name }, value); |     command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value)); | ||||||
| } | } | ||||||
| exports.setOutput = setOutput; | exports.setOutput = setOutput; | ||||||
| /** | /** | ||||||
| @@ -3741,7 +3736,11 @@ exports.group = group; | |||||||
|  */ |  */ | ||||||
| // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | ||||||
| function saveState(name, value) { | function saveState(name, value) { | ||||||
|     command_1.issueCommand('save-state', { name }, value); |     const filePath = process.env['GITHUB_STATE'] || ''; | ||||||
|  |     if (filePath) { | ||||||
|  |         return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value)); | ||||||
|  |     } | ||||||
|  |     command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value)); | ||||||
| } | } | ||||||
| exports.saveState = saveState; | exports.saveState = saveState; | ||||||
| /** | /** | ||||||
| @@ -3807,13 +3806,14 @@ var __importStar = (this && this.__importStar) || function (mod) { | |||||||
|     return result; |     return result; | ||||||
| }; | }; | ||||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||||
| exports.issueCommand = void 0; | exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; | ||||||
| // We use any as a valid input type
 | // We use any as a valid input type
 | ||||||
| /* eslint-disable @typescript-eslint/no-explicit-any */ | /* eslint-disable @typescript-eslint/no-explicit-any */ | ||||||
| const fs = __importStar(__nccwpck_require__(7147)); | const fs = __importStar(__nccwpck_require__(7147)); | ||||||
| const os = __importStar(__nccwpck_require__(2037)); | const os = __importStar(__nccwpck_require__(2037)); | ||||||
|  | const uuid_1 = __nccwpck_require__(8974); | ||||||
| const utils_1 = __nccwpck_require__(5278); | const utils_1 = __nccwpck_require__(5278); | ||||||
| function issueCommand(command, message) { | function issueFileCommand(command, message) { | ||||||
|     const filePath = process.env[`GITHUB_${command}`]; |     const filePath = process.env[`GITHUB_${command}`]; | ||||||
|     if (!filePath) { |     if (!filePath) { | ||||||
|         throw new Error(`Unable to find environment variable for file command ${command}`); |         throw new Error(`Unable to find environment variable for file command ${command}`); | ||||||
| @@ -3825,7 +3825,22 @@ function issueCommand(command, message) { | |||||||
|         encoding: 'utf8' |         encoding: 'utf8' | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| exports.issueCommand = issueCommand; | exports.issueFileCommand = issueFileCommand; | ||||||
|  | function prepareKeyValueMessage(key, value) { | ||||||
|  |     const delimiter = `ghadelimiter_${uuid_1.v4()}`; | ||||||
|  |     const convertedValue = utils_1.toCommandValue(value); | ||||||
|  |     // These should realistically never happen, but just in case someone finds a
 | ||||||
|  |     // way to exploit uuid generation let's not allow keys or values that contain
 | ||||||
|  |     // the delimiter.
 | ||||||
|  |     if (key.includes(delimiter)) { | ||||||
|  |         throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); | ||||||
|  |     } | ||||||
|  |     if (convertedValue.includes(delimiter)) { | ||||||
|  |         throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); | ||||||
|  |     } | ||||||
|  |     return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; | ||||||
|  | } | ||||||
|  | exports.prepareKeyValueMessage = prepareKeyValueMessage; | ||||||
| //# sourceMappingURL=file-command.js.map
 | //# sourceMappingURL=file-command.js.map
 | ||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										14
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -10,7 +10,7 @@ | |||||||
|       "license": "MIT", |       "license": "MIT", | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "@actions/cache": "^3.0.4", |         "@actions/cache": "^3.0.4", | ||||||
|         "@actions/core": "^1.6.0", |         "@actions/core": "^1.10.0", | ||||||
|         "@actions/exec": "^1.1.0", |         "@actions/exec": "^1.1.0", | ||||||
|         "@actions/github": "^1.1.0", |         "@actions/github": "^1.1.0", | ||||||
|         "@actions/glob": "^0.2.0", |         "@actions/glob": "^0.2.0", | ||||||
| @@ -74,9 +74,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/@actions/core": { |     "node_modules/@actions/core": { | ||||||
|       "version": "1.9.1", |       "version": "1.10.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.1.tgz", |       "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz", | ||||||
|       "integrity": "sha512-5ad+U2YGrmmiw6du20AQW5XuWo7UKN2052FjSV7MX+Wfjf8sCqcsZe62NfgHys4QI4/Y+vQvLKYL8jWtA1ZBTA==", |       "integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==", | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "@actions/http-client": "^2.0.1", |         "@actions/http-client": "^2.0.1", | ||||||
|         "uuid": "^8.3.2" |         "uuid": "^8.3.2" | ||||||
| @@ -5144,9 +5144,9 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "@actions/core": { |     "@actions/core": { | ||||||
|       "version": "1.9.1", |       "version": "1.10.0", | ||||||
|       "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.1.tgz", |       "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.0.tgz", | ||||||
|       "integrity": "sha512-5ad+U2YGrmmiw6du20AQW5XuWo7UKN2052FjSV7MX+Wfjf8sCqcsZe62NfgHys4QI4/Y+vQvLKYL8jWtA1ZBTA==", |       "integrity": "sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==", | ||||||
|       "requires": { |       "requires": { | ||||||
|         "@actions/http-client": "^2.0.1", |         "@actions/http-client": "^2.0.1", | ||||||
|         "uuid": "^8.3.2" |         "uuid": "^8.3.2" | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ | |||||||
|   "license": "MIT", |   "license": "MIT", | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@actions/cache": "^3.0.4", |     "@actions/cache": "^3.0.4", | ||||||
|     "@actions/core": "^1.6.0", |     "@actions/core": "^1.10.0", | ||||||
|     "@actions/exec": "^1.1.0", |     "@actions/exec": "^1.1.0", | ||||||
|     "@actions/github": "^1.1.0", |     "@actions/github": "^1.1.0", | ||||||
|     "@actions/glob": "^0.2.0", |     "@actions/glob": "^0.2.0", | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Francesco Renzi
					Francesco Renzi