@contember/engine-s3-plugin 1.4.0-rc.8 → 2.0.0-alpha.12
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/dist/development/index.cjs +30 -0
- package/dist/development/index.cjs.map +1 -0
- package/dist/development/index.js +31 -0
- package/dist/development/index.js.map +1 -0
- package/dist/development/src/Config.cjs +73 -0
- package/dist/development/src/Config.cjs.map +1 -0
- package/dist/development/src/Config.js +56 -0
- package/dist/development/src/Config.js.map +1 -0
- package/dist/development/src/S3ConfigProcessor.cjs +60 -0
- package/dist/development/src/S3ConfigProcessor.cjs.map +1 -0
- package/dist/development/src/S3ConfigProcessor.js +43 -0
- package/dist/development/src/S3ConfigProcessor.js.map +1 -0
- package/dist/development/src/S3ObjectAuthorizator.cjs +46 -0
- package/dist/development/src/S3ObjectAuthorizator.cjs.map +1 -0
- package/dist/development/src/S3ObjectAuthorizator.js +46 -0
- package/dist/development/src/S3ObjectAuthorizator.js.map +1 -0
- package/dist/development/src/S3SchemaContributor.cjs +97 -0
- package/dist/development/src/S3SchemaContributor.cjs.map +1 -0
- package/dist/development/src/S3SchemaContributor.js +97 -0
- package/dist/development/src/S3SchemaContributor.js.map +1 -0
- package/dist/development/src/S3SchemaTypes.cjs +71 -0
- package/dist/development/src/S3SchemaTypes.cjs.map +1 -0
- package/dist/development/src/S3SchemaTypes.js +71 -0
- package/dist/development/src/S3SchemaTypes.js.map +1 -0
- package/dist/development/src/S3Service.cjs +105 -0
- package/dist/development/src/S3Service.cjs.map +1 -0
- package/dist/development/src/S3Service.js +105 -0
- package/dist/development/src/S3Service.js.map +1 -0
- package/dist/development/src/S3Signer.cjs +84 -0
- package/dist/development/src/S3Signer.cjs.map +1 -0
- package/dist/development/src/S3Signer.js +84 -0
- package/dist/development/src/S3Signer.js.map +1 -0
- package/dist/production/index.cjs +30 -0
- package/dist/production/index.cjs.map +1 -0
- package/dist/production/index.js +31 -0
- package/dist/production/index.js.map +1 -0
- package/dist/production/src/Config.cjs +73 -0
- package/dist/production/src/Config.cjs.map +1 -0
- package/dist/production/src/Config.js +56 -0
- package/dist/production/src/Config.js.map +1 -0
- package/dist/production/src/S3ConfigProcessor.cjs +60 -0
- package/dist/production/src/S3ConfigProcessor.cjs.map +1 -0
- package/dist/production/src/S3ConfigProcessor.js +43 -0
- package/dist/production/src/S3ConfigProcessor.js.map +1 -0
- package/dist/production/src/S3ObjectAuthorizator.cjs +46 -0
- package/dist/production/src/S3ObjectAuthorizator.cjs.map +1 -0
- package/dist/production/src/S3ObjectAuthorizator.js +46 -0
- package/dist/production/src/S3ObjectAuthorizator.js.map +1 -0
- package/dist/production/src/S3SchemaContributor.cjs +97 -0
- package/dist/production/src/S3SchemaContributor.cjs.map +1 -0
- package/dist/production/src/S3SchemaContributor.js +97 -0
- package/dist/production/src/S3SchemaContributor.js.map +1 -0
- package/dist/production/src/S3SchemaTypes.cjs +71 -0
- package/dist/production/src/S3SchemaTypes.cjs.map +1 -0
- package/dist/production/src/S3SchemaTypes.js +71 -0
- package/dist/production/src/S3SchemaTypes.js.map +1 -0
- package/dist/production/src/S3Service.cjs +105 -0
- package/dist/production/src/S3Service.cjs.map +1 -0
- package/dist/production/src/S3Service.js +105 -0
- package/dist/production/src/S3Service.js.map +1 -0
- package/dist/production/src/S3Signer.cjs +84 -0
- package/dist/production/src/S3Signer.cjs.map +1 -0
- package/dist/production/src/S3Signer.js +84 -0
- package/dist/production/src/S3Signer.js.map +1 -0
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/dist/{src → types}/Config.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -0
- package/package.json +24 -12
- package/src/tsconfig.json +1 -1
- package/tests/cases/signRequest.test.ts +1 -1
- package/vitest.config.ts +3 -0
- package/dist/src/Config.js +0 -75
- package/dist/src/Config.js.map +0 -1
- package/dist/src/S3ConfigProcessor.js +0 -64
- package/dist/src/S3ConfigProcessor.js.map +0 -1
- package/dist/src/S3ObjectAuthorizator.js +0 -48
- package/dist/src/S3ObjectAuthorizator.js.map +0 -1
- package/dist/src/S3SchemaContributor.js +0 -122
- package/dist/src/S3SchemaContributor.js.map +0 -1
- package/dist/src/S3SchemaTypes.js +0 -65
- package/dist/src/S3SchemaTypes.js.map +0 -1
- package/dist/src/S3Service.js +0 -101
- package/dist/src/S3Service.js.map +0 -1
- package/dist/src/S3Signer.js +0 -92
- package/dist/src/S3Signer.js.map +0 -1
- package/dist/src/index.js +0 -39
- package/dist/src/index.js.map +0 -1
- package/dist/src/tsconfig.tsbuildinfo +0 -1
- package/dist/tests/cases/authorizator.test.js +0 -21
- package/dist/tests/cases/authorizator.test.js.map +0 -1
- package/dist/tests/cases/signRequest.test.js +0 -44
- package/dist/tests/cases/signRequest.test.js.map +0 -1
- package/vite.config.js +0 -3
- /package/dist/{src → types}/Config.d.ts +0 -0
- /package/dist/{src → types}/S3ConfigProcessor.d.ts +0 -0
- /package/dist/{src → types}/S3ConfigProcessor.d.ts.map +0 -0
- /package/dist/{src → types}/S3ObjectAuthorizator.d.ts +0 -0
- /package/dist/{src → types}/S3ObjectAuthorizator.d.ts.map +0 -0
- /package/dist/{src → types}/S3SchemaContributor.d.ts +0 -0
- /package/dist/{src → types}/S3SchemaContributor.d.ts.map +0 -0
- /package/dist/{src → types}/S3SchemaTypes.d.ts +0 -0
- /package/dist/{src → types}/S3SchemaTypes.d.ts.map +0 -0
- /package/dist/{src → types}/S3Service.d.ts +0 -0
- /package/dist/{src → types}/S3Service.d.ts.map +0 -0
- /package/dist/{src → types}/S3Signer.d.ts +0 -0
- /package/dist/{src → types}/S3Signer.d.ts.map +0 -0
- /package/dist/{src → types}/index.d.ts +0 -0
- /package/dist/{src → types}/index.d.ts.map +0 -0
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vitest_1 = require("vitest");
|
|
4
|
-
const src_1 = require("../../src");
|
|
5
|
-
(0, vitest_1.test)('required read pattern', () => {
|
|
6
|
-
const authorizator = new src_1.S3ObjectAuthorizator([], [{ pattern: 'foo/**' }]);
|
|
7
|
-
vitest_1.assert.doesNotThrow(() => authorizator.verifyReadAccess({ key: 'foo/lorem.jpg' }));
|
|
8
|
-
vitest_1.assert.throw(() => authorizator.verifyReadAccess({ key: 'lorem.jpg' }), 'Read access forbidden for object key lorem.jpg');
|
|
9
|
-
});
|
|
10
|
-
(0, vitest_1.test)('required upload pattern', () => {
|
|
11
|
-
const authorizator = new src_1.S3ObjectAuthorizator([{ pattern: 'foo/**' }], []);
|
|
12
|
-
vitest_1.assert.doesNotThrow(() => authorizator.verifyUploadAccess({ key: 'foo/lorem.jpg', size: null }));
|
|
13
|
-
vitest_1.assert.throw(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: null }), 'Upload access forbidden for object key lorem.jpg');
|
|
14
|
-
});
|
|
15
|
-
(0, vitest_1.test)('max upload size', () => {
|
|
16
|
-
const authorizator = new src_1.S3ObjectAuthorizator([{ pattern: '**', maxSize: 1024 }], []);
|
|
17
|
-
vitest_1.assert.doesNotThrow(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: 1000 }));
|
|
18
|
-
vitest_1.assert.throw(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: null }), 'File size must be provided');
|
|
19
|
-
vitest_1.assert.throw(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: 2048 }), 'Uploaded file is too large');
|
|
20
|
-
});
|
|
21
|
-
//# sourceMappingURL=authorizator.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"authorizator.test.js","sourceRoot":"","sources":["../../../tests/cases/authorizator.test.ts"],"names":[],"mappings":";;AAAA,mCAAqC;AACrC,mCAAgD;AAEhD,IAAA,aAAI,EAAC,uBAAuB,EAAE,GAAG,EAAE;IAClC,MAAM,YAAY,GAAG,IAAI,0BAAoB,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;IAC1E,eAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC,CAAC,CAAA;IAClF,eAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,gDAAgD,CAAC,CAAA;AAC1H,CAAC,CAAC,CAAA;AAEF,IAAA,aAAI,EAAC,yBAAyB,EAAE,GAAG,EAAE;IACpC,MAAM,YAAY,GAAG,IAAI,0BAAoB,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAC1E,eAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAChG,eAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,kDAAkD,CAAC,CAAA;AAC1I,CAAC,CAAC,CAAA;AAGF,IAAA,aAAI,EAAC,iBAAiB,EAAE,GAAG,EAAE;IAC5B,MAAM,YAAY,GAAG,IAAI,0BAAoB,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IACrF,eAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC5F,eAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,4BAA4B,CAAC,CAAA;IACnH,eAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,4BAA4B,CAAC,CAAA;AACpH,CAAC,CAAC,CAAA"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vitest_1 = require("vitest");
|
|
4
|
-
const src_1 = require("../../src");
|
|
5
|
-
const mocked = new Date('2021-07-02 17:22');
|
|
6
|
-
const constantUuid = '9fce3907-ff2b-45bb-b4ce-eff5527dd315';
|
|
7
|
-
const createS3Service = (bucket, prefix = '') => new src_1.S3Service({
|
|
8
|
-
bucket,
|
|
9
|
-
region: 'eu-central-1',
|
|
10
|
-
credentials: {
|
|
11
|
-
key: 'test',
|
|
12
|
-
secret: 'abcd',
|
|
13
|
-
},
|
|
14
|
-
prefix,
|
|
15
|
-
}, {
|
|
16
|
-
uuid: () => constantUuid,
|
|
17
|
-
now: () => mocked,
|
|
18
|
-
}, new src_1.S3ObjectAuthorizator([{ pattern: '**' }], [{ pattern: '**' }]));
|
|
19
|
-
(0, vitest_1.test)('sign s3 request', () => {
|
|
20
|
-
const service = createS3Service('test');
|
|
21
|
-
const signed = service.getSignedReadUrl({ objectKey: 'foo.jpg', expiration: null });
|
|
22
|
-
(0, vitest_1.expect)(signed.url).toMatchInlineSnapshot('"https://test.s3.eu-central-1.amazonaws.com/foo.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=test%2F20210702%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20210702T172200Z&X-Amz-Expires=3600&X-Amz-Signature=00e912fe0383066802fc6c0f93ffb223320ca143992385fe69070bbb87c758dc&X-Amz-SignedHeaders=host"');
|
|
23
|
-
});
|
|
24
|
-
(0, vitest_1.test)('sign s3 request - prefix', () => {
|
|
25
|
-
const service = createS3Service('test', 'lorem');
|
|
26
|
-
const signed = service.getSignedReadUrl({ objectKey: 'lorem/foo.jpg', expiration: null });
|
|
27
|
-
(0, vitest_1.expect)(signed.url).toMatchInlineSnapshot('"https://test.s3.eu-central-1.amazonaws.com/lorem/foo.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=test%2F20210702%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20210702T172200Z&X-Amz-Expires=3600&X-Amz-Signature=f6c69dc306422c2b3242c9d9d42147336817720ffae249af8bd91cc7062e9f6d&X-Amz-SignedHeaders=host"');
|
|
28
|
-
});
|
|
29
|
-
(0, vitest_1.test)('sign upload', () => {
|
|
30
|
-
const service = createS3Service('test');
|
|
31
|
-
const signed = service.getSignedUploadUrl({ contentType: 'image/jpeg', acl: 'PUBLIC_READ', expiration: 1800, contentDisposition: null, extension: null, fileName: null, prefix: null, suffix: null, size: null });
|
|
32
|
-
(0, vitest_1.expect)(signed.url).toMatchInlineSnapshot('"https://test.s3.eu-central-1.amazonaws.com/9fce3907-ff2b-45bb-b4ce-eff5527dd315.jpeg?Cache-Control=immutable&Content-Type=image%2Fjpeg&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=test%2F20210702%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20210702T172200Z&X-Amz-Expires=1800&X-Amz-Signature=fcd00b967054c19a2ee64b59e31d61e032ea086dcf2f0d8c36a883971c469c99&X-Amz-SignedHeaders=cache-control%3Bhost%3Bx-amz-acl&x-amz-acl=public-read"');
|
|
33
|
-
});
|
|
34
|
-
(0, vitest_1.test)('sign upload #2', () => {
|
|
35
|
-
const service = createS3Service('test');
|
|
36
|
-
const signed = service.getSignedUploadUrl({ contentType: 'image/jpeg', acl: 'PUBLIC_READ', expiration: 1800, contentDisposition: 'INLINE', extension: 'jpeg', fileName: 'foo-bar.jpeg', prefix: 'foo', suffix: 'bar', size: null });
|
|
37
|
-
(0, vitest_1.expect)(signed.url).toMatchInlineSnapshot('"https://test.s3.eu-central-1.amazonaws.com/foo/9fce3907-ff2b-45bb-b4ce-eff5527dd315bar.jpeg?Cache-Control=immutable&Content-Type=image%2Fjpeg&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=test%2F20210702%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20210702T172200Z&X-Amz-Expires=1800&X-Amz-Signature=979a93bca65a98ce6b2bf97d2bf2afe7d5f2fa805f7d596187675416c86a3bd5&X-Amz-SignedHeaders=cache-control%3Bcontent-disposition%3Bhost%3Bx-amz-acl&x-amz-acl=public-read"');
|
|
38
|
-
});
|
|
39
|
-
(0, vitest_1.test)('bucket with dot', () => {
|
|
40
|
-
const service = createS3Service('test.foo');
|
|
41
|
-
const signed = service.getSignedReadUrl({ objectKey: 'foo.jpg', expiration: null });
|
|
42
|
-
(0, vitest_1.expect)(signed.url).toMatchInlineSnapshot('"https://s3.eu-central-1.amazonaws.com/test.foo/foo.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=test%2F20210702%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20210702T172200Z&X-Amz-Expires=3600&X-Amz-Signature=811a809196e60413e0e54e51d3dd91ab73ad1482b61e5371864d25d43ba642ff&X-Amz-SignedHeaders=host"');
|
|
43
|
-
});
|
|
44
|
-
//# sourceMappingURL=signRequest.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signRequest.test.js","sourceRoot":"","sources":["../../../tests/cases/signRequest.test.ts"],"names":[],"mappings":";;AAAA,mCAA6C;AAC7C,mCAA2D;AAE3D,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAA;AAC3C,MAAM,YAAY,GAAG,sCAAsC,CAAA;AAC3D,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,eAAS,CACrE;IACC,MAAM;IACN,MAAM,EAAE,cAAc;IACtB,WAAW,EAAE;QACZ,GAAG,EAAE,MAAM;QACX,MAAM,EAAE,MAAM;KACd;IACD,MAAM;CACN,EACD;IACC,IAAI,EAAE,GAAG,EAAE,CAAC,YAAY;IACxB,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM;CACjB,EACD,IAAI,0BAAoB,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAClE,CAAA;AAGD,IAAA,aAAI,EAAC,iBAAiB,EAAE,GAAG,EAAE;IAC5B,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IACnF,IAAA,eAAM,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,oTAAoT,CAAC,CAAA;AAC/V,CAAC,CAAC,CAAA;AAEF,IAAA,aAAI,EAAC,0BAA0B,EAAE,GAAG,EAAE;IACrC,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IACzF,IAAA,eAAM,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,0TAA0T,CAAC,CAAA;AACrW,CAAC,CAAC,CAAA;AAEF,IAAA,aAAI,EAAC,aAAa,EAAE,GAAG,EAAE;IACxB,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IACjN,IAAA,eAAM,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,0bAA0b,CAAC,CAAA;AACre,CAAC,CAAC,CAAA;AAEF,IAAA,aAAI,EAAC,gBAAgB,EAAE,GAAG,EAAE;IAC3B,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IACnO,IAAA,eAAM,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,udAAud,CAAC,CAAA;AAClgB,CAAC,CAAC,CAAA;AAGF,IAAA,aAAI,EAAC,iBAAiB,EAAE,GAAG,EAAE;IAC5B,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IACnF,IAAA,eAAM,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,wTAAwT,CAAC,CAAA;AACnW,CAAC,CAAC,CAAA"}
|
package/vite.config.js
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|