Skip to content

Commit 18469ce

Browse files
authored
fix(clients): use optional chaining while processing runtime config (#2690)
1 parent c7350f8 commit 18469ce

File tree

1,129 files changed

+10173
-10173
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,129 files changed

+10173
-10173
lines changed

clients/client-accessanalyzer/runtimeConfig.browser.ts

+14-14
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,27 @@ import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shar
1414
/**
1515
* @internal
1616
*/
17-
export const getRuntimeConfig = (config: AccessAnalyzerClientConfig = {}) => {
17+
export const getRuntimeConfig = (config: AccessAnalyzerClientConfig) => {
1818
const clientSharedValues = getSharedRuntimeConfig(config);
1919
return {
2020
...clientSharedValues,
2121
...config,
2222
runtime: "browser",
23-
base64Decoder: config.base64Decoder ?? fromBase64,
24-
base64Encoder: config.base64Encoder ?? toBase64,
25-
bodyLengthChecker: config.bodyLengthChecker ?? calculateBodyLength,
23+
base64Decoder: config?.base64Decoder ?? fromBase64,
24+
base64Encoder: config?.base64Encoder ?? toBase64,
25+
bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,
2626
credentialDefaultProvider:
27-
config.credentialDefaultProvider ?? ((_: unknown) => () => Promise.reject(new Error("Credential is missing"))),
27+
config?.credentialDefaultProvider ?? ((_: unknown) => () => Promise.reject(new Error("Credential is missing"))),
2828
defaultUserAgentProvider:
29-
config.defaultUserAgentProvider ??
29+
config?.defaultUserAgentProvider ??
3030
defaultUserAgent({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),
31-
maxAttempts: config.maxAttempts ?? DEFAULT_MAX_ATTEMPTS,
32-
region: config.region ?? invalidProvider("Region is missing"),
33-
requestHandler: config.requestHandler ?? new FetchHttpHandler(),
34-
retryModeProvider: config.retryModeProvider ?? (() => Promise.resolve(DEFAULT_RETRY_MODE)),
35-
sha256: config.sha256 ?? Sha256,
36-
streamCollector: config.streamCollector ?? streamCollector,
37-
utf8Decoder: config.utf8Decoder ?? fromUtf8,
38-
utf8Encoder: config.utf8Encoder ?? toUtf8,
31+
maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS,
32+
region: config?.region ?? invalidProvider("Region is missing"),
33+
requestHandler: config?.requestHandler ?? new FetchHttpHandler(),
34+
retryModeProvider: config?.retryModeProvider ?? (() => Promise.resolve(DEFAULT_RETRY_MODE)),
35+
sha256: config?.sha256 ?? Sha256,
36+
streamCollector: config?.streamCollector ?? streamCollector,
37+
utf8Decoder: config?.utf8Decoder ?? fromUtf8,
38+
utf8Encoder: config?.utf8Encoder ?? toUtf8,
3939
};
4040
};

clients/client-accessanalyzer/runtimeConfig.native.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.bro
55
/**
66
* @internal
77
*/
8-
export const getRuntimeConfig = (config: AccessAnalyzerClientConfig = {}) => {
8+
export const getRuntimeConfig = (config: AccessAnalyzerClientConfig) => {
99
const browserDefaults = getBrowserRuntimeConfig(config);
1010
return {
1111
...browserDefaults,
1212
...config,
1313
runtime: "react-native",
14-
sha256: config.sha256 ?? Sha256,
14+
sha256: config?.sha256 ?? Sha256,
1515
};
1616
};

clients/client-accessanalyzer/runtimeConfig.shared.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ import { AccessAnalyzerClientConfig } from "./AccessAnalyzerClient";
66
/**
77
* @internal
88
*/
9-
export const getRuntimeConfig = (config: AccessAnalyzerClientConfig = {}) => ({
9+
export const getRuntimeConfig = (config: AccessAnalyzerClientConfig) => ({
1010
apiVersion: "2019-11-01",
11-
disableHostPrefix: config.disableHostPrefix ?? false,
12-
logger: config.logger ?? ({} as __Logger),
13-
regionInfoProvider: config.regionInfoProvider ?? defaultRegionInfoProvider,
14-
serviceId: config.serviceId ?? "AccessAnalyzer",
15-
urlParser: config.urlParser ?? parseUrl,
11+
disableHostPrefix: config?.disableHostPrefix ?? false,
12+
logger: config?.logger ?? ({} as __Logger),
13+
regionInfoProvider: config?.regionInfoProvider ?? defaultRegionInfoProvider,
14+
serviceId: config?.serviceId ?? "AccessAnalyzer",
15+
urlParser: config?.urlParser ?? parseUrl,
1616
});

clients/client-accessanalyzer/runtimeConfig.ts

+14-14
Original file line numberDiff line numberDiff line change
@@ -18,28 +18,28 @@ import { emitWarningIfUnsupportedVersion } from "@aws-sdk/smithy-client";
1818
/**
1919
* @internal
2020
*/
21-
export const getRuntimeConfig = (config: AccessAnalyzerClientConfig = {}) => {
21+
export const getRuntimeConfig = (config: AccessAnalyzerClientConfig) => {
2222
emitWarningIfUnsupportedVersion(process.version);
2323
const clientSharedValues = getSharedRuntimeConfig(config);
2424
return {
2525
...clientSharedValues,
2626
...config,
2727
runtime: "node",
28-
base64Decoder: config.base64Decoder ?? fromBase64,
29-
base64Encoder: config.base64Encoder ?? toBase64,
30-
bodyLengthChecker: config.bodyLengthChecker ?? calculateBodyLength,
28+
base64Decoder: config?.base64Decoder ?? fromBase64,
29+
base64Encoder: config?.base64Encoder ?? toBase64,
30+
bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,
3131
credentialDefaultProvider:
32-
config.credentialDefaultProvider ?? decorateDefaultCredentialProvider(credentialDefaultProvider),
32+
config?.credentialDefaultProvider ?? decorateDefaultCredentialProvider(credentialDefaultProvider),
3333
defaultUserAgentProvider:
34-
config.defaultUserAgentProvider ??
34+
config?.defaultUserAgentProvider ??
3535
defaultUserAgent({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),
36-
maxAttempts: config.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS),
37-
region: config.region ?? loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS),
38-
requestHandler: config.requestHandler ?? new NodeHttpHandler(),
39-
retryModeProvider: config.retryModeProvider ?? loadNodeConfig(NODE_RETRY_MODE_CONFIG_OPTIONS),
40-
sha256: config.sha256 ?? Hash.bind(null, "sha256"),
41-
streamCollector: config.streamCollector ?? streamCollector,
42-
utf8Decoder: config.utf8Decoder ?? fromUtf8,
43-
utf8Encoder: config.utf8Encoder ?? toUtf8,
36+
maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS),
37+
region: config?.region ?? loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS),
38+
requestHandler: config?.requestHandler ?? new NodeHttpHandler(),
39+
retryModeProvider: config?.retryModeProvider ?? loadNodeConfig(NODE_RETRY_MODE_CONFIG_OPTIONS),
40+
sha256: config?.sha256 ?? Hash.bind(null, "sha256"),
41+
streamCollector: config?.streamCollector ?? streamCollector,
42+
utf8Decoder: config?.utf8Decoder ?? fromUtf8,
43+
utf8Encoder: config?.utf8Encoder ?? toUtf8,
4444
};
4545
};

clients/client-acm-pca/runtimeConfig.browser.ts

+14-14
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,27 @@ import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shar
1414
/**
1515
* @internal
1616
*/
17-
export const getRuntimeConfig = (config: ACMPCAClientConfig = {}) => {
17+
export const getRuntimeConfig = (config: ACMPCAClientConfig) => {
1818
const clientSharedValues = getSharedRuntimeConfig(config);
1919
return {
2020
...clientSharedValues,
2121
...config,
2222
runtime: "browser",
23-
base64Decoder: config.base64Decoder ?? fromBase64,
24-
base64Encoder: config.base64Encoder ?? toBase64,
25-
bodyLengthChecker: config.bodyLengthChecker ?? calculateBodyLength,
23+
base64Decoder: config?.base64Decoder ?? fromBase64,
24+
base64Encoder: config?.base64Encoder ?? toBase64,
25+
bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,
2626
credentialDefaultProvider:
27-
config.credentialDefaultProvider ?? ((_: unknown) => () => Promise.reject(new Error("Credential is missing"))),
27+
config?.credentialDefaultProvider ?? ((_: unknown) => () => Promise.reject(new Error("Credential is missing"))),
2828
defaultUserAgentProvider:
29-
config.defaultUserAgentProvider ??
29+
config?.defaultUserAgentProvider ??
3030
defaultUserAgent({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),
31-
maxAttempts: config.maxAttempts ?? DEFAULT_MAX_ATTEMPTS,
32-
region: config.region ?? invalidProvider("Region is missing"),
33-
requestHandler: config.requestHandler ?? new FetchHttpHandler(),
34-
retryModeProvider: config.retryModeProvider ?? (() => Promise.resolve(DEFAULT_RETRY_MODE)),
35-
sha256: config.sha256 ?? Sha256,
36-
streamCollector: config.streamCollector ?? streamCollector,
37-
utf8Decoder: config.utf8Decoder ?? fromUtf8,
38-
utf8Encoder: config.utf8Encoder ?? toUtf8,
31+
maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS,
32+
region: config?.region ?? invalidProvider("Region is missing"),
33+
requestHandler: config?.requestHandler ?? new FetchHttpHandler(),
34+
retryModeProvider: config?.retryModeProvider ?? (() => Promise.resolve(DEFAULT_RETRY_MODE)),
35+
sha256: config?.sha256 ?? Sha256,
36+
streamCollector: config?.streamCollector ?? streamCollector,
37+
utf8Decoder: config?.utf8Decoder ?? fromUtf8,
38+
utf8Encoder: config?.utf8Encoder ?? toUtf8,
3939
};
4040
};

clients/client-acm-pca/runtimeConfig.native.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.bro
55
/**
66
* @internal
77
*/
8-
export const getRuntimeConfig = (config: ACMPCAClientConfig = {}) => {
8+
export const getRuntimeConfig = (config: ACMPCAClientConfig) => {
99
const browserDefaults = getBrowserRuntimeConfig(config);
1010
return {
1111
...browserDefaults,
1212
...config,
1313
runtime: "react-native",
14-
sha256: config.sha256 ?? Sha256,
14+
sha256: config?.sha256 ?? Sha256,
1515
};
1616
};

clients/client-acm-pca/runtimeConfig.shared.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ import { ACMPCAClientConfig } from "./ACMPCAClient";
66
/**
77
* @internal
88
*/
9-
export const getRuntimeConfig = (config: ACMPCAClientConfig = {}) => ({
9+
export const getRuntimeConfig = (config: ACMPCAClientConfig) => ({
1010
apiVersion: "2017-08-22",
11-
disableHostPrefix: config.disableHostPrefix ?? false,
12-
logger: config.logger ?? ({} as __Logger),
13-
regionInfoProvider: config.regionInfoProvider ?? defaultRegionInfoProvider,
14-
serviceId: config.serviceId ?? "ACM PCA",
15-
urlParser: config.urlParser ?? parseUrl,
11+
disableHostPrefix: config?.disableHostPrefix ?? false,
12+
logger: config?.logger ?? ({} as __Logger),
13+
regionInfoProvider: config?.regionInfoProvider ?? defaultRegionInfoProvider,
14+
serviceId: config?.serviceId ?? "ACM PCA",
15+
urlParser: config?.urlParser ?? parseUrl,
1616
});

clients/client-acm-pca/runtimeConfig.ts

+14-14
Original file line numberDiff line numberDiff line change
@@ -18,28 +18,28 @@ import { emitWarningIfUnsupportedVersion } from "@aws-sdk/smithy-client";
1818
/**
1919
* @internal
2020
*/
21-
export const getRuntimeConfig = (config: ACMPCAClientConfig = {}) => {
21+
export const getRuntimeConfig = (config: ACMPCAClientConfig) => {
2222
emitWarningIfUnsupportedVersion(process.version);
2323
const clientSharedValues = getSharedRuntimeConfig(config);
2424
return {
2525
...clientSharedValues,
2626
...config,
2727
runtime: "node",
28-
base64Decoder: config.base64Decoder ?? fromBase64,
29-
base64Encoder: config.base64Encoder ?? toBase64,
30-
bodyLengthChecker: config.bodyLengthChecker ?? calculateBodyLength,
28+
base64Decoder: config?.base64Decoder ?? fromBase64,
29+
base64Encoder: config?.base64Encoder ?? toBase64,
30+
bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,
3131
credentialDefaultProvider:
32-
config.credentialDefaultProvider ?? decorateDefaultCredentialProvider(credentialDefaultProvider),
32+
config?.credentialDefaultProvider ?? decorateDefaultCredentialProvider(credentialDefaultProvider),
3333
defaultUserAgentProvider:
34-
config.defaultUserAgentProvider ??
34+
config?.defaultUserAgentProvider ??
3535
defaultUserAgent({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),
36-
maxAttempts: config.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS),
37-
region: config.region ?? loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS),
38-
requestHandler: config.requestHandler ?? new NodeHttpHandler(),
39-
retryModeProvider: config.retryModeProvider ?? loadNodeConfig(NODE_RETRY_MODE_CONFIG_OPTIONS),
40-
sha256: config.sha256 ?? Hash.bind(null, "sha256"),
41-
streamCollector: config.streamCollector ?? streamCollector,
42-
utf8Decoder: config.utf8Decoder ?? fromUtf8,
43-
utf8Encoder: config.utf8Encoder ?? toUtf8,
36+
maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS),
37+
region: config?.region ?? loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS),
38+
requestHandler: config?.requestHandler ?? new NodeHttpHandler(),
39+
retryModeProvider: config?.retryModeProvider ?? loadNodeConfig(NODE_RETRY_MODE_CONFIG_OPTIONS),
40+
sha256: config?.sha256 ?? Hash.bind(null, "sha256"),
41+
streamCollector: config?.streamCollector ?? streamCollector,
42+
utf8Decoder: config?.utf8Decoder ?? fromUtf8,
43+
utf8Encoder: config?.utf8Encoder ?? toUtf8,
4444
};
4545
};

clients/client-acm/runtimeConfig.browser.ts

+14-14
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,27 @@ import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shar
1414
/**
1515
* @internal
1616
*/
17-
export const getRuntimeConfig = (config: ACMClientConfig = {}) => {
17+
export const getRuntimeConfig = (config: ACMClientConfig) => {
1818
const clientSharedValues = getSharedRuntimeConfig(config);
1919
return {
2020
...clientSharedValues,
2121
...config,
2222
runtime: "browser",
23-
base64Decoder: config.base64Decoder ?? fromBase64,
24-
base64Encoder: config.base64Encoder ?? toBase64,
25-
bodyLengthChecker: config.bodyLengthChecker ?? calculateBodyLength,
23+
base64Decoder: config?.base64Decoder ?? fromBase64,
24+
base64Encoder: config?.base64Encoder ?? toBase64,
25+
bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,
2626
credentialDefaultProvider:
27-
config.credentialDefaultProvider ?? ((_: unknown) => () => Promise.reject(new Error("Credential is missing"))),
27+
config?.credentialDefaultProvider ?? ((_: unknown) => () => Promise.reject(new Error("Credential is missing"))),
2828
defaultUserAgentProvider:
29-
config.defaultUserAgentProvider ??
29+
config?.defaultUserAgentProvider ??
3030
defaultUserAgent({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),
31-
maxAttempts: config.maxAttempts ?? DEFAULT_MAX_ATTEMPTS,
32-
region: config.region ?? invalidProvider("Region is missing"),
33-
requestHandler: config.requestHandler ?? new FetchHttpHandler(),
34-
retryModeProvider: config.retryModeProvider ?? (() => Promise.resolve(DEFAULT_RETRY_MODE)),
35-
sha256: config.sha256 ?? Sha256,
36-
streamCollector: config.streamCollector ?? streamCollector,
37-
utf8Decoder: config.utf8Decoder ?? fromUtf8,
38-
utf8Encoder: config.utf8Encoder ?? toUtf8,
31+
maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS,
32+
region: config?.region ?? invalidProvider("Region is missing"),
33+
requestHandler: config?.requestHandler ?? new FetchHttpHandler(),
34+
retryModeProvider: config?.retryModeProvider ?? (() => Promise.resolve(DEFAULT_RETRY_MODE)),
35+
sha256: config?.sha256 ?? Sha256,
36+
streamCollector: config?.streamCollector ?? streamCollector,
37+
utf8Decoder: config?.utf8Decoder ?? fromUtf8,
38+
utf8Encoder: config?.utf8Encoder ?? toUtf8,
3939
};
4040
};

clients/client-acm/runtimeConfig.native.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.bro
55
/**
66
* @internal
77
*/
8-
export const getRuntimeConfig = (config: ACMClientConfig = {}) => {
8+
export const getRuntimeConfig = (config: ACMClientConfig) => {
99
const browserDefaults = getBrowserRuntimeConfig(config);
1010
return {
1111
...browserDefaults,
1212
...config,
1313
runtime: "react-native",
14-
sha256: config.sha256 ?? Sha256,
14+
sha256: config?.sha256 ?? Sha256,
1515
};
1616
};

clients/client-acm/runtimeConfig.shared.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ import { ACMClientConfig } from "./ACMClient";
66
/**
77
* @internal
88
*/
9-
export const getRuntimeConfig = (config: ACMClientConfig = {}) => ({
9+
export const getRuntimeConfig = (config: ACMClientConfig) => ({
1010
apiVersion: "2015-12-08",
11-
disableHostPrefix: config.disableHostPrefix ?? false,
12-
logger: config.logger ?? ({} as __Logger),
13-
regionInfoProvider: config.regionInfoProvider ?? defaultRegionInfoProvider,
14-
serviceId: config.serviceId ?? "ACM",
15-
urlParser: config.urlParser ?? parseUrl,
11+
disableHostPrefix: config?.disableHostPrefix ?? false,
12+
logger: config?.logger ?? ({} as __Logger),
13+
regionInfoProvider: config?.regionInfoProvider ?? defaultRegionInfoProvider,
14+
serviceId: config?.serviceId ?? "ACM",
15+
urlParser: config?.urlParser ?? parseUrl,
1616
});

clients/client-acm/runtimeConfig.ts

+14-14
Original file line numberDiff line numberDiff line change
@@ -18,28 +18,28 @@ import { emitWarningIfUnsupportedVersion } from "@aws-sdk/smithy-client";
1818
/**
1919
* @internal
2020
*/
21-
export const getRuntimeConfig = (config: ACMClientConfig = {}) => {
21+
export const getRuntimeConfig = (config: ACMClientConfig) => {
2222
emitWarningIfUnsupportedVersion(process.version);
2323
const clientSharedValues = getSharedRuntimeConfig(config);
2424
return {
2525
...clientSharedValues,
2626
...config,
2727
runtime: "node",
28-
base64Decoder: config.base64Decoder ?? fromBase64,
29-
base64Encoder: config.base64Encoder ?? toBase64,
30-
bodyLengthChecker: config.bodyLengthChecker ?? calculateBodyLength,
28+
base64Decoder: config?.base64Decoder ?? fromBase64,
29+
base64Encoder: config?.base64Encoder ?? toBase64,
30+
bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,
3131
credentialDefaultProvider:
32-
config.credentialDefaultProvider ?? decorateDefaultCredentialProvider(credentialDefaultProvider),
32+
config?.credentialDefaultProvider ?? decorateDefaultCredentialProvider(credentialDefaultProvider),
3333
defaultUserAgentProvider:
34-
config.defaultUserAgentProvider ??
34+
config?.defaultUserAgentProvider ??
3535
defaultUserAgent({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),
36-
maxAttempts: config.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS),
37-
region: config.region ?? loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS),
38-
requestHandler: config.requestHandler ?? new NodeHttpHandler(),
39-
retryModeProvider: config.retryModeProvider ?? loadNodeConfig(NODE_RETRY_MODE_CONFIG_OPTIONS),
40-
sha256: config.sha256 ?? Hash.bind(null, "sha256"),
41-
streamCollector: config.streamCollector ?? streamCollector,
42-
utf8Decoder: config.utf8Decoder ?? fromUtf8,
43-
utf8Encoder: config.utf8Encoder ?? toUtf8,
36+
maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS),
37+
region: config?.region ?? loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS),
38+
requestHandler: config?.requestHandler ?? new NodeHttpHandler(),
39+
retryModeProvider: config?.retryModeProvider ?? loadNodeConfig(NODE_RETRY_MODE_CONFIG_OPTIONS),
40+
sha256: config?.sha256 ?? Hash.bind(null, "sha256"),
41+
streamCollector: config?.streamCollector ?? streamCollector,
42+
utf8Decoder: config?.utf8Decoder ?? fromUtf8,
43+
utf8Encoder: config?.utf8Encoder ?? toUtf8,
4444
};
4545
};

0 commit comments

Comments
 (0)