Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multi Account Mixed Observability Observability Accelerator #110

Merged
merged 211 commits into from
Oct 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
211 commits
Select commit Hold shift + click to select a range
53fd3bd
initial commit
iamprakkie Aug 29, 2023
3c8c618
AMP only try
iamprakkie Aug 31, 2023
e73bf05
AMP try
iamprakkie Aug 31, 2023
0a28e57
AMP only try
iamprakkie Aug 31, 2023
c650e48
AMP only
iamprakkie Aug 31, 2023
39c7688
AMP try
iamprakkie Aug 31, 2023
d8ea73a
AMP Try
iamprakkie Aug 31, 2023
a4af928
AMP try
iamprakkie Aug 31, 2023
d07f4a4
AMP try
iamprakkie Aug 31, 2023
2f3fb70
AMP try
iamprakkie Aug 31, 2023
d8ffe3a
AMP try
iamprakkie Aug 31, 2023
97d77c3
AMP Try
iamprakkie Aug 31, 2023
b6eb674
AMP try
iamprakkie Aug 31, 2023
da9b3e6
AMP try
iamprakkie Aug 31, 2023
6006bec
AMP try
iamprakkie Aug 31, 2023
6b56dd7
AMP try
iamprakkie Aug 31, 2023
ae8d334
AMP try
iamprakkie Aug 31, 2023
d5c6036
AMP try
iamprakkie Aug 31, 2023
6699a52
AMP Try
iamprakkie Aug 31, 2023
e2ed979
AMP try
iamprakkie Aug 31, 2023
4f707b0
AMP try
iamprakkie Aug 31, 2023
3d57105
AMP try
iamprakkie Aug 31, 2023
ad3dbf9
AMP try
iamprakkie Aug 31, 2023
9f13f96
AMP try
iamprakkie Aug 31, 2023
5600899
AMP
iamprakkie Aug 31, 2023
3c6d3d1
AMP
iamprakkie Aug 31, 2023
790b104
AMP only
iamprakkie Aug 31, 2023
6c23da7
prod2
iamprakkie Sep 1, 2023
2132918
prod2
iamprakkie Sep 1, 2023
3b8ec96
prod2
iamprakkie Sep 1, 2023
96dcb58
prod2
iamprakkie Sep 1, 2023
53e3079
prod2
iamprakkie Sep 1, 2023
499ca95
amg
iamprakkie Sep 1, 2023
cae868a
amg
iamprakkie Sep 1, 2023
5b11649
amg
iamprakkie Sep 1, 2023
1dad215
amg
iamprakkie Sep 1, 2023
d4156ae
amg
iamprakkie Sep 1, 2023
f3e5cb4
amg
iamprakkie Sep 1, 2023
cac5ab7
amg
iamprakkie Sep 1, 2023
7763a8a
AMG
iamprakkie Sep 1, 2023
1d19f8f
AMG
iamprakkie Sep 1, 2023
a1fe199
AMG
iamprakkie Sep 1, 2023
7cb9f67
AMG
iamprakkie Sep 1, 2023
f9e90bc
AMG
iamprakkie Sep 1, 2023
f9ca45d
AMG
iamprakkie Sep 1, 2023
1be81c9
AMG
iamprakkie Sep 1, 2023
d3ca0ec
AMG and PROD2
iamprakkie Sep 2, 2023
349b154
removed ssh from argocd
iamprakkie Sep 2, 2023
1ad1ce9
just credentialsSecretName
iamprakkie Sep 2, 2023
6590935
added credentialsType
iamprakkie Sep 2, 2023
51b0edb
all-in
iamprakkie Sep 2, 2023
6e2c051
AMG only
iamprakkie Sep 4, 2023
30469c7
no ssh-key
iamprakkie Sep 4, 2023
cae8cb7
with github-ssh-key
iamprakkie Sep 4, 2023
7f5a636
separated for public and private
iamprakkie Sep 4, 2023
5605653
try
iamprakkie Sep 5, 2023
a83e5f1
updated createArgoAddonConfig
iamprakkie Sep 5, 2023
58bbf56
with go on mon-account
iamprakkie Sep 5, 2023
6aa089c
update
iamprakkie Sep 5, 2023
91d5ab9
edit
iamprakkie Sep 6, 2023
c5a7fa4
added grafanaOperatorArgoAddonConfig
iamprakkie Sep 6, 2023
d5a06bc
removed grafanaOperatorArgoAddonConfig
iamprakkie Sep 6, 2023
7bf3290
adding flux
iamprakkie Sep 6, 2023
e0cba3b
new flux
iamprakkie Sep 6, 2023
996c100
updated
iamprakkie Sep 6, 2023
a1f1369
new bootstrapvals
iamprakkie Sep 6, 2023
5e7dcbb
added GrafanaOperatorAddon
iamprakkie Sep 6, 2023
3968921
Merge branch 'aws-observability:main' into multi-account-COA
iamprakkie Sep 6, 2023
9b8ed37
new changes
iamprakkie Sep 7, 2023
285d5f9
update
iamprakkie Sep 7, 2023
caecbcb
resolved
iamprakkie Sep 7, 2023
85d21b1
updated
iamprakkie Sep 7, 2023
a086ff5
update
iamprakkie Sep 7, 2023
2a3249e
update
iamprakkie Sep 7, 2023
92742b3
update
iamprakkie Sep 7, 2023
a3fbc95
update
iamprakkie Sep 7, 2023
964e921
added mon
iamprakkie Sep 7, 2023
9d9ea21
update
iamprakkie Sep 7, 2023
964b267
update
iamprakkie Sep 7, 2023
364c3e5
update
iamprakkie Sep 7, 2023
a088846
updated
iamprakkie Sep 7, 2023
dea6010
update
iamprakkie Sep 7, 2023
664e768
update
iamprakkie Sep 7, 2023
4783ab4
updated bootstrapvals
iamprakkie Sep 7, 2023
30d5d54
updated amgEndpointUrl
iamprakkie Sep 7, 2023
b384081
updates
iamprakkie Sep 7, 2023
55725e1
updated
iamprakkie Sep 8, 2023
6eafaf6
updated with context from cdk.json
iamprakkie Sep 8, 2023
bc3b303
updates
iamprakkie Sep 8, 2023
f724783
update
iamprakkie Sep 8, 2023
22afb37
updates
iamprakkie Sep 8, 2023
8c1949e
path
iamprakkie Sep 8, 2023
8b9c02f
try
iamprakkie Sep 8, 2023
3dced9f
update
iamprakkie Sep 8, 2023
f7a48ec
upd
iamprakkie Sep 8, 2023
64a13ca
upd
iamprakkie Sep 8, 2023
b898494
added CW in bootstrapValues
iamprakkie Sep 10, 2023
d1f66f1
app update
iamprakkie Sep 10, 2023
4de153e
update
iamprakkie Sep 10, 2023
eba54df
upd
iamprakkie Sep 10, 2023
a19a928
update
iamprakkie Sep 10, 2023
fc23e69
upd
iamprakkie Sep 11, 2023
f74c7c3
converted to SSM SecureString
iamprakkie Sep 12, 2023
e77bf4f
added pipelineSource
iamprakkie Sep 12, 2023
1d1a7ae
updates
iamprakkie Sep 12, 2023
54f8bb3
update
iamprakkie Sep 12, 2023
e6cd21d
SSM step
iamprakkie Sep 12, 2023
295361f
updates
iamprakkie Sep 12, 2023
2689bb9
upd
iamprakkie Sep 12, 2023
df1b41e
update
iamprakkie Sep 12, 2023
558bb47
GO
iamprakkie Sep 13, 2023
cf749a6
more
iamprakkie Sep 13, 2023
d8e99b4
upd
iamprakkie Sep 13, 2023
24a5f34
update
iamprakkie Sep 13, 2023
55935e2
update
iamprakkie Sep 13, 2023
2e4f903
UPD
iamprakkie Sep 13, 2023
4c94836
updates
iamprakkie Sep 13, 2023
8be3502
update
iamprakkie Sep 13, 2023
1d72a58
update
iamprakkie Sep 14, 2023
39c1e51
doc update
iamprakkie Sep 14, 2023
a69921f
more updates
iamprakkie Sep 15, 2023
07857a8
upd
iamprakkie Sep 15, 2023
b9f21f3
updated
iamprakkie Sep 15, 2023
cf2f8bb
rolechange
iamprakkie Sep 15, 2023
02cb2f0
new
iamprakkie Sep 15, 2023
29eb0af
updated
iamprakkie Sep 15, 2023
c6ba254
split pipeline
iamprakkie Sep 15, 2023
744237d
commit
iamprakkie Sep 15, 2023
37f3778
added
iamprakkie Sep 16, 2023
15a09ee
correct sampleStage
iamprakkie Sep 16, 2023
afb4d64
with account
iamprakkie Sep 16, 2023
3e608f9
update
iamprakkie Sep 16, 2023
553636f
commented out
iamprakkie Sep 17, 2023
a688677
upd
iamprakkie Sep 17, 2023
6a94b4a
updated to prod1
iamprakkie Sep 17, 2023
0976543
upd
iamprakkie Sep 17, 2023
ece1a26
upd
iamprakkie Sep 17, 2023
075e5d3
update
iamprakkie Sep 17, 2023
dabf61e
added new
iamprakkie Sep 17, 2023
7389f01
update
iamprakkie Sep 18, 2023
772acdb
removed getAMPInfo
iamprakkie Sep 18, 2023
9c95c6e
doc updates
iamprakkie Sep 19, 2023
bebb34f
doc updates
iamprakkie Sep 19, 2023
107fe83
doc updates
iamprakkie Sep 19, 2023
85d57c9
doc update and clean up script
iamprakkie Sep 20, 2023
1691bf1
Merge branch 'aws-observability:main' into multi-account-COA
iamprakkie Sep 20, 2023
dd94be9
updated doc
iamprakkie Sep 20, 2023
0834925
Merge branch 'multi-account-COA' of https://github.com/iamprakkie/cdk…
iamprakkie Sep 20, 2023
5e53041
updated pipeline.ts
iamprakkie Sep 20, 2023
31de199
cleanup script and doc update
iamprakkie Sep 20, 2023
5ac60c9
updated pipeline.ts to single statement
iamprakkie Sep 20, 2023
ba4b466
pipeline module
iamprakkie Sep 20, 2023
e537860
updated multi-account-central-pipeline to multi-account-COA-pipeline
iamprakkie Sep 21, 2023
4360047
doc update, architecture diagram and code updates
iamprakkie Sep 21, 2023
5dca55d
cleanup script update
iamprakkie Sep 21, 2023
9dae795
cleanup script update
iamprakkie Sep 21, 2023
0abbba6
cleanup script update
iamprakkie Sep 21, 2023
397459c
update
iamprakkie Sep 22, 2023
0837786
added cwAssumeRoleName
iamprakkie Sep 22, 2023
a0356d8
updated cleanup
iamprakkie Sep 22, 2023
896b8d9
md update
iamprakkie Sep 23, 2023
b9b3ad5
updated doc
iamprakkie Sep 23, 2023
7f4a500
updated doc
iamprakkie Sep 23, 2023
b6f9a9f
Merge branch 'aws-observability:main' into multi-account-COA
iamprakkie Sep 27, 2023
a822f4c
Incorporating review comments
iamprakkie Sep 27, 2023
c96b362
removed ServicePrincipal which is not in use
iamprakkie Sep 27, 2023
45c14c2
removed trailing whitespaces
iamprakkie Sep 27, 2023
01636cf
moved policystatements outside of pipeline.ts
iamprakkie Sep 27, 2023
4d5aa3a
updated doc
iamprakkie Sep 27, 2023
d97a66a
updated 'scripts' ref to 'helpers'
iamprakkie Sep 27, 2023
81862c3
updated codebuild role
iamprakkie Sep 27, 2023
af6c05e
rolled back to old way of creating iam role
iamprakkie Sep 27, 2023
4f354f4
fix with pipeline.ts
iamprakkie Sep 27, 2023
f5a7818
WORKING VERSION
iamprakkie Sep 28, 2023
7dded6b
policydoc outside
iamprakkie Sep 28, 2023
b4c826d
all policydocs are outside pipeline.ts
iamprakkie Sep 28, 2023
db02580
updated doc and some cleanup at pipeline.ts
iamprakkie Sep 29, 2023
e3b15fe
doc update
iamprakkie Sep 29, 2023
a9c782d
fixed undefined assumerole with monitoringEnv
iamprakkie Sep 29, 2023
a1d2615
updated argocd app sync
iamprakkie Sep 29, 2023
a2c9f92
updated sample runme gif
iamprakkie Oct 1, 2023
92445f5
doc update
iamprakkie Oct 1, 2023
c7bcdcf
updated git-ssh-key to pipeline-account
iamprakkie Oct 2, 2023
3f1fd12
removed git-ssh-key. sample apps are in publi repo
iamprakkie Oct 2, 2023
5a24a8b
moved github-token creation to script
iamprakkie Oct 2, 2023
3622641
added categories to doc
iamprakkie Oct 2, 2023
d238188
removed post-deploy
iamprakkie Oct 2, 2023
6df4345
Revert "removed post-deploy"
iamprakkie Oct 2, 2023
6592c53
Revert "removed post-deploy"
iamprakkie Oct 2, 2023
57eb920
Merge branch 'multi-account-COA' of https://github.com/iamprakkie/cdk…
iamprakkie Oct 2, 2023
34cb120
Revert "added categories to doc"
iamprakkie Oct 2, 2023
4976572
updated categories
iamprakkie Oct 2, 2023
85b816b
updated command for running argo cd admin ui
iamprakkie Oct 3, 2023
812026d
updated cleanup script
iamprakkie Oct 3, 2023
ca1ef68
Merge branch 'aws-observability:main' into multi-account-COA
iamprakkie Oct 3, 2023
eb39f99
updated doc
iamprakkie Oct 3, 2023
2a76651
updated to artifacts/argocd-apps ref
iamprakkie Oct 3, 2023
66cd128
updated progress check command
iamprakkie Oct 3, 2023
6455f18
updated argo apps to aws-observability repo
iamprakkie Oct 5, 2023
1a03f04
updated broken URLs
iamprakkie Oct 5, 2023
fc44535
fixed broken URLs in doc
iamprakkie Oct 5, 2023
fe9dc1f
removed unused images
iamprakkie Oct 5, 2023
9819150
added pre-req for tools
iamprakkie Oct 5, 2023
181fd41
main readme with pattern docs, mkdocs, GH fix
iamprakkie Oct 5, 2023
c8e77d5
updated README and doc for mkdocs
iamprakkie Oct 6, 2023
1ceeff1
main readme update
iamprakkie Oct 6, 2023
57e961e
moved argocdaddonconfig
iamprakkie Oct 6, 2023
29a18b7
removed createArgoAddonConfig
iamprakkie Oct 6, 2023
0dc83cd
retaining one doc
iamprakkie Oct 6, 2023
61856a6
retaining one doc
iamprakkie Oct 6, 2023
f0a8f3c
renamed in mkdocs
iamprakkie Oct 6, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 72 additions & 60 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,75 +20,81 @@ We provide curated metrics, logs, traces collection, cloudwatch dashboard, alert
The individual patterns can be found in the [`lib`](https://github.com/aws-observability/cdk-aws-observability-accelerator/tree/main/lib) directory. Most of the patterns are self-explanatory, for some more complex examples please use this guide and docs/patterns directory for more information.

## Usage

Before proceeding, make sure [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) is installed on your machine.

To use the eks-blueprints and patterns module, you must have [Node.js](https://nodejs.org/en/) and [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) installed. You will also use `make` and `brew` to simplify build and other common actions.
To use the eks-blueprints and patterns module, you must have [Node.js](https://nodejs.org/en/) and [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) installed. You will also use `make` and `brew` to simplify build and other common actions.

### Ubuntu Setup

Follow the below steps to setup and leverage cdk-aws-observability-accelerator in your Ubuntu Linux machine.

1. **Update the package list**
1. **Update the package list**

Update the package list to ensure you're installing the latest versions.
Update the package list to ensure you're installing the latest versions.

```bash
sudo apt update
```
```bash
sudo apt update
```

2. **Install make**

```bash
sudo apt install make
```
```bash
sudo apt install make
```

3. **Install Node.js and npm**

Install Node.js and npm using the NodeSource binary distributions.
```bash
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - &&\
sudo apt-get install -y nodejs
```

Note: The Node.js package from NodeSource includes npm
Install Node.js and npm using the NodeSource binary distributions.

```bash
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - &&\
sudo apt-get install -y nodejs
```

Note: The Node.js package from NodeSource includes npm

4. **Verify Node.js and npm Installation**

Check the installed version of Node.js:
Check the installed version of Node.js:

```bash
node -v
```
```bash
node -v
```

The output should be `v20.x.x`.
The output should be `v20.x.x`.

Check the installed version of npm:
Check the installed version of npm:

```bash
npm -v
```
```bash
npm -v
```

The output should be a version greater than `9.7.x`.
The output should be a version greater than `9.7.x`.

If your npm version is not `9.7.x` or above, update npm with the following command:
If your npm version is not `9.7.x` or above, update npm with the following command:

```bash
sudo npm install -g npm@latest
```
```bash
sudo npm install -g npm@latest
```

Verify the installed version by running `npm -v`.
Verify the installed version by running `npm -v`.

5. Install brew on ubuntu by following instructions as detailed in [docs.brew.sh](https://docs.brew.sh/Homebrew-on-Linux)
```bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
Add Homebrew to your PATH
```
test -d ~/.linuxbrew && eval "$(~/.linuxbrew/bin/brew shellenv)"
test -d /home/linuxbrew/.linuxbrew && eval "$(/home/linuxbrew/.linux brew/bin/brew shellenv)"
test -r ~/.bash_profile && echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >> ~/.bash_profile
echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >> ~/.profile

```

```bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```

Add Homebrew to your PATH

```sh
test -d ~/.linuxbrew && eval "$(~/.linuxbrew/bin/brew shellenv)"
test -d /home/linuxbrew/.linuxbrew && eval "$(/home/linuxbrew/.linux brew/bin/brew shellenv)"
test -r ~/.bash_profile && echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >> ~/.bash_profile
echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >> ~/.profile

```

Post completing the above, continue from Step: [Repo setup](#repo-setup)

Expand All @@ -98,14 +104,14 @@ Follow the below steps to setup and leverage `cdk-aws-observability-accelerator`

1. Install `make` and `node` using brew

```
```sh
brew install make
brew install node
```

2. Install `npm`

```
```sh
sudo npm install -g n
sudo n stable
```
Expand All @@ -121,7 +127,7 @@ v20.3.1

Update (provided Node version manager is installed): `n stable`. May require `sudo`.

- NPM version must be 8.4 or above:
- NPM version must be 8.4 or above:

```bash
$ npm -v
Expand All @@ -130,67 +136,72 @@ $ npm -v

Updating npm: `sudo n stable` where stable can also be a specific version above 8.4. May require `sudo`.


### Repo setup

1. Clone the `cdk-aws-observability-accelerator` repository

```
```sh
git clone https://github.com/aws-observability/cdk-aws-observability-accelerator.git
```
```

PS: If you are contributing to this repo, please make sure to fork the repo, add your changes and create a PR against it.

2. Once you have cloned the repo, you can open it using your favourite IDE and run the below commands to install the dependencies and build the existing patterns.

- Install project dependencies.

```
```text
make deps
```

- To view patterns that are available to be deployed, execute the following:

```
```sh
make build
```

- To list the existing CDK AWS Observability Accelerator Patterns

```
```text
make list
```

Note: Some patterns have a hard dependency on AWS Secrets (for example GitHub access tokens). Initially you will see errors complaining about lack of the required secrets. It is normal. At the bottom, it will show the list of patterns which can be deployed, in case the pattern you are looking for is not available, it is due to the hard dependency which can be fixed by following the docs specific to those patterns.

```
```ps1
To work with patterns use:
$ make pattern <pattern-name> <list | deploy | synth | destroy>
Example:
$ make pattern single-new-eks-opensource-observability deploy

Patterns:

single-new-eks-cluster
existing-eks-mixed-observability
existing-eks-opensource-observability
single-new-eks-opensource-observability
single-new-eks-awsnative-observability
single-new-eks-cluster
single-new-eks-gpu-opensource-observability
single-new-eks-graviton-opensource-observability
single-new-eks-mixed-observability
single-new-eks-opensource-observability
existing-eks-opensource-observability
existing-eks-awsnative-observability
multi-acc-new-eks-mixed-observability
```

- Bootstrap your CDK environment.

```
```sh
npx cdk bootstrap
```

- You can then deploy a specific pattern with the following:

```
```sh
make pattern single-new-eks-opensource-observability deploy
```

- To access instructions for individual patterns check documentation in `docs/patterns` directory.

# Developer Flow

## Modifications
Expand All @@ -201,17 +212,18 @@ All files are compiled to the dist folder including `lib` and `bin` directories.
make compile
```

The `compile` command is optimized to build only modified files and is fast.
The `compile` command is optimized to build only modified files and is fast.

## New Patterns

To create a new pattern, please follow these steps:

1. Under lib create a folder for your pattern, such as `<pattern-name>-pattern`. If you plan to create a set of patterns that represent a particular subdomain, e.g. `security` or `hardening`, please create an issue to discuss it first. If approved, you will be able to create a folder with your subdomain name and group your pattern constructs under it.
2. Blueprints generally don't require a specific class, however we use a convention of wrapping each pattern in a plain class like `<Pattern-Name>Pattern`. This class is generally placed in `index.ts` under your pattern folder.
1. Under lib create a folder for your pattern, such as `<pattern-name>-pattern`. If you plan to create a set of patterns that represent a particular subdomain, e.g. `security` or `hardening`, please create an issue to discuss it first. If approved, you will be able to create a folder with your subdomain name and group your pattern constructs under it.
2. Blueprints generally don't require a specific class, however we use a convention of wrapping each pattern in a plain class like `<Pattern-Name>Pattern`. This class is generally placed in `index.ts` under your pattern folder.
3. Once the pattern implementation is ready, you need to include it in the list of the patterns by creating a file `bin/<pattern-name>.ts`. The implementation of this file is very light, and it is done to allow patterns to run independently.

Example simple synchronous pattern:

```typescript
import SingleNewEksOpenSourceobservabilityPattern from '../lib/single-new-eks-opensource-observability-pattern';
import { configureApp } from '../lib/common/construct-utils';
Expand Down
15 changes: 15 additions & 0 deletions bin/multi-acc-new-eks-mixed-observability.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

import { configureApp, errorHandler } from '../lib/common/construct-utils';
import { PipelineMultiEnvMonitoring } from '../lib/multi-acc-new-eks-mixed-observability-pattern';

const app = configureApp();

/*
CDK Observability Accelerator pattern for Multiple EKS clusters in multiple AWS accounts
*/

new PipelineMultiEnvMonitoring()
.buildAsync(app)
.catch((e) => {
errorHandler(app, "Multi Account Multi EKS CDK Observability pattern setup errored. Ensure SSM SecureString Parameter /cdk-accelerator/cdk-context exists in COA_PIPELINE_REGION of pipeline account. See documentation for details.", e);
});
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading