diff --git a/konnectd/.codacy.yml b/konnectd/.codacy.yml new file mode 100644 index 0000000000..359eff9ad0 --- /dev/null +++ b/konnectd/.codacy.yml @@ -0,0 +1,9 @@ +--- +exclude_paths: + - CHANGELOG.md + - changelog/** + - docs/** + - pkg/proto/** + - web/identifier-webapp/** + +... diff --git a/konnectd/.dockerignore b/konnectd/.dockerignore new file mode 100644 index 0000000000..4ec85b5e4f --- /dev/null +++ b/konnectd/.dockerignore @@ -0,0 +1,2 @@ +* +!bin/ diff --git a/konnectd/.drone.star b/konnectd/.drone.star new file mode 100644 index 0000000000..30a7cd204e --- /dev/null +++ b/konnectd/.drone.star @@ -0,0 +1,698 @@ +def main(ctx): + before = [ + testing(ctx), + ] + + stages = [ + docker(ctx, 'amd64'), + docker(ctx, 'arm64'), + docker(ctx, 'arm'), + binary(ctx, 'linux'), + binary(ctx, 'darwin'), + binary(ctx, 'windows'), + ] + + after = [ + manifest(ctx), + changelog(ctx), + readme(ctx), + badges(ctx), + website(ctx), + ] + + return before + stages + after + +def testing(ctx): + return { + 'kind': 'pipeline', + 'type': 'docker', + 'name': 'testing', + 'platform': { + 'os': 'linux', + 'arch': 'amd64', + }, + 'steps': [ + { + 'name': 'generate', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make generate', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'vet', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make vet', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'staticcheck', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make staticcheck', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'lint', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make lint', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'build', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make build', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'test', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make test', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'codacy', + 'image': 'plugins/codacy:1', + 'pull': 'always', + 'settings': { + 'token': { + 'from_secret': 'codacy_token', + }, + }, + }, + ], + 'volumes': [ + { + 'name': 'gopath', + 'temp': {}, + }, + ], + 'trigger': { + 'ref': [ + 'refs/heads/master', + 'refs/tags/**', + 'refs/pull/**', + ], + }, + } + +def docker(ctx, arch): + return { + 'kind': 'pipeline', + 'type': 'docker', + 'name': arch, + 'platform': { + 'os': 'linux', + 'arch': arch, + }, + 'steps': [ + { + 'name': 'generate', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make generate', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'build', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make build', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'dryrun', + 'image': 'plugins/docker:18.09', + 'pull': 'always', + 'settings': { + 'dry_run': True, + 'tags': 'linux-%s' % (arch), + 'dockerfile': 'docker/Dockerfile.linux.%s' % (arch), + 'repo': ctx.repo.slug, + }, + 'when': { + 'ref': { + 'include': [ + 'refs/pull/**', + ], + }, + }, + }, + { + 'name': 'docker', + 'image': 'plugins/docker:18.09', + 'pull': 'always', + 'settings': { + 'username': { + 'from_secret': 'docker_username', + }, + 'password': { + 'from_secret': 'docker_password', + }, + 'auto_tag': True, + 'auto_tag_suffix': 'linux-%s' % (arch), + 'dockerfile': 'docker/Dockerfile.linux.%s' % (arch), + 'repo': ctx.repo.slug, + }, + 'when': { + 'ref': { + 'exclude': [ + 'refs/pull/**', + ], + }, + }, + }, + ], + 'volumes': [ + { + 'name': 'gopath', + 'temp': {}, + }, + ], + 'depends_on': [ + 'testing', + ], + 'trigger': { + 'ref': [ + 'refs/heads/master', + 'refs/tags/**', + 'refs/pull/**', + ], + }, + } + +def binary(ctx, name): + if ctx.build.event == "tag": + settings = { + 'endpoint': { + 'from_secret': 's3_endpoint', + }, + 'access_key': { + 'from_secret': 'aws_access_key_id', + }, + 'secret_key': { + 'from_secret': 'aws_secret_access_key', + }, + 'bucket': { + 'from_secret': 's3_bucket', + }, + 'path_style': True, + 'strip_prefix': 'dist/release/', + 'source': 'dist/release/*', + 'target': '/ocis/%s/%s' % (ctx.repo.name.replace("ocis-", ""), ctx.build.ref.replace("refs/tags/v", "")), + } + else: + settings = { + 'endpoint': { + 'from_secret': 's3_endpoint', + }, + 'access_key': { + 'from_secret': 'aws_access_key_id', + }, + 'secret_key': { + 'from_secret': 'aws_secret_access_key', + }, + 'bucket': { + 'from_secret': 's3_bucket', + }, + 'path_style': True, + 'strip_prefix': 'dist/release/', + 'source': 'dist/release/*', + 'target': '/ocis/%s/testing' % (ctx.repo.name.replace("ocis-", "")), + } + + return { + 'kind': 'pipeline', + 'type': 'docker', + 'name': name, + 'platform': { + 'os': 'linux', + 'arch': 'amd64', + }, + 'steps': [ + { + 'name': 'generate', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make generate', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'build', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make release-%s' % (name), + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'finish', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make release-finish', + ], + 'volumes': [ + { + 'name': 'gopath', + 'path': '/srv/app', + }, + ], + }, + { + 'name': 'upload', + 'image': 'plugins/s3:1', + 'pull': 'always', + 'settings': settings, + 'when': { + 'ref': [ + 'refs/heads/master', + 'refs/tags/**', + ], + }, + }, + { + 'name': 'changelog', + 'image': 'toolhippie/calens:latest', + 'pull': 'always', + 'commands': [ + 'calens --version %s -o dist/CHANGELOG.md' % ctx.build.ref.replace("refs/tags/v", "").split("-")[0], + ], + 'when': { + 'ref': [ + 'refs/tags/**', + ], + }, + }, + { + 'name': 'release', + 'image': 'plugins/github-release:1', + 'pull': 'always', + 'settings': { + 'api_key': { + 'from_secret': 'github_token', + }, + 'files': [ + 'dist/release/*', + ], + 'title': ctx.build.ref.replace("refs/tags/v", ""), + 'note': 'dist/CHANGELOG.md', + 'overwrite': True, + 'prerelease': len(ctx.build.ref.split("-")) > 1, + }, + 'when': { + 'ref': [ + 'refs/tags/**', + ], + }, + }, + ], + 'volumes': [ + { + 'name': 'gopath', + 'temp': {}, + }, + ], + 'depends_on': [ + 'testing', + ], + 'trigger': { + 'ref': [ + 'refs/heads/master', + 'refs/tags/**', + 'refs/pull/**', + ], + }, + } + +def manifest(ctx): + return { + 'kind': 'pipeline', + 'type': 'docker', + 'name': 'manifest', + 'platform': { + 'os': 'linux', + 'arch': 'amd64', + }, + 'steps': [ + { + 'name': 'execute', + 'image': 'plugins/manifest:1', + 'pull': 'always', + 'settings': { + 'username': { + 'from_secret': 'docker_username', + }, + 'password': { + 'from_secret': 'docker_password', + }, + 'spec': 'docker/manifest.tmpl', + 'auto_tag': True, + 'ignore_missing': True, + }, + }, + ], + 'depends_on': [ + 'amd64', + 'arm64', + 'arm', + 'linux', + 'darwin', + 'windows', + ], + 'trigger': { + 'ref': [ + 'refs/heads/master', + 'refs/tags/**', + ], + }, + } + +def changelog(ctx): + repo_slug = ctx.build.source_repo if ctx.build.source_repo else ctx.repo.slug + return { + 'kind': 'pipeline', + 'type': 'docker', + 'name': 'changelog', + 'platform': { + 'os': 'linux', + 'arch': 'amd64', + }, + 'clone': { + 'disable': True, + }, + 'steps': [ + { + 'name': 'clone', + 'image': 'plugins/git-action:1', + 'pull': 'always', + 'settings': { + 'actions': [ + 'clone', + ], + 'remote': 'https://github.com/%s' % (repo_slug), + 'branch': ctx.build.source if ctx.build.event == 'pull_request' else 'master', + 'path': '/drone/src', + 'netrc_machine': 'github.com', + 'netrc_username': { + 'from_secret': 'github_username', + }, + 'netrc_password': { + 'from_secret': 'github_token', + }, + }, + }, + { + 'name': 'generate', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'make changelog', + ], + }, + { + 'name': 'diff', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'git diff', + ], + }, + { + 'name': 'output', + 'image': 'webhippie/golang:1.13', + 'pull': 'always', + 'commands': [ + 'cat CHANGELOG.md', + ], + }, + { + 'name': 'publish', + 'image': 'plugins/git-action:1', + 'pull': 'always', + 'settings': { + 'actions': [ + 'commit', + 'push', + ], + 'message': 'Automated changelog update [skip ci]', + 'branch': 'master', + 'author_email': 'devops@owncloud.com', + 'author_name': 'ownClouders', + 'netrc_machine': 'github.com', + 'netrc_username': { + 'from_secret': 'github_username', + }, + 'netrc_password': { + 'from_secret': 'github_token', + }, + }, + 'when': { + 'ref': { + 'exclude': [ + 'refs/pull/**', + ], + }, + }, + }, + ], + 'depends_on': [ + 'manifest', + ], + 'trigger': { + 'ref': [ + 'refs/heads/master', + 'refs/pull/**', + ], + }, + } + +def readme(ctx): + return { + 'kind': 'pipeline', + 'type': 'docker', + 'name': 'readme', + 'platform': { + 'os': 'linux', + 'arch': 'amd64', + }, + 'steps': [ + { + 'name': 'execute', + 'image': 'sheogorath/readme-to-dockerhub:latest', + 'pull': 'always', + 'environment': { + 'DOCKERHUB_USERNAME': { + 'from_secret': 'docker_username', + }, + 'DOCKERHUB_PASSWORD': { + 'from_secret': 'docker_password', + }, + 'DOCKERHUB_REPO_PREFIX': ctx.repo.namespace, + 'DOCKERHUB_REPO_NAME': ctx.repo.name, + 'SHORT_DESCRIPTION': 'Docker images for %s' % (ctx.repo.name), + 'README_PATH': 'README.md', + }, + }, + ], + 'depends_on': [ + 'changelog', + ], + 'trigger': { + 'ref': [ + 'refs/heads/master', + 'refs/tags/**', + ], + }, + } + +def badges(ctx): + return { + 'kind': 'pipeline', + 'type': 'docker', + 'name': 'badges', + 'platform': { + 'os': 'linux', + 'arch': 'amd64', + }, + 'steps': [ + { + 'name': 'execute', + 'image': 'plugins/webhook:1', + 'pull': 'always', + 'settings': { + 'urls': { + 'from_secret': 'microbadger_url', + }, + }, + }, + ], + 'depends_on': [ + 'readme', + ], + 'trigger': { + 'ref': [ + 'refs/heads/master', + 'refs/tags/**', + ], + }, + } + +def website(ctx): + return { + 'kind': 'pipeline', + 'type': 'docker', + 'name': 'website', + 'platform': { + 'os': 'linux', + 'arch': 'amd64', + }, + 'steps': [ + { + 'name': 'prepare', + 'image': 'owncloudci/alpine:latest', + 'commands': [ + 'make docs-copy' + ], + }, + { + 'name': 'test', + 'image': 'webhippie/hugo:latest', + 'commands': [ + 'cd hugo', + 'hugo', + ], + }, + { + 'name': 'list', + 'image': 'owncloudci/alpine:latest', + 'commands': [ + 'tree hugo/public', + ], + }, + { + 'name': 'publish', + 'image': 'plugins/gh-pages:1', + 'pull': 'always', + 'settings': { + 'username': { + 'from_secret': 'github_username', + }, + 'password': { + 'from_secret': 'github_token', + }, + 'pages_directory': 'docs/', + 'target_branch': 'docs', + }, + 'when': { + 'ref': { + 'exclude': [ + 'refs/pull/**', + ], + }, + }, + }, + { + 'name': 'downstream', + 'image': 'plugins/downstream', + 'settings': { + 'server': 'https://cloud.drone.io/', + 'token': { + 'from_secret': 'drone_token', + }, + 'repositories': [ + 'owncloud/owncloud.github.io@source', + ], + }, + 'when': { + 'ref': { + 'exclude': [ + 'refs/pull/**', + ], + }, + }, + }, + ], + 'depends_on': [ + 'badges', + ], + 'trigger': { + 'ref': [ + 'refs/heads/master', + 'refs/pull/**', + ], + }, + } diff --git a/konnectd/.editorconfig b/konnectd/.editorconfig new file mode 100644 index 0000000000..77129cd393 --- /dev/null +++ b/konnectd/.editorconfig @@ -0,0 +1,35 @@ +# http://editorconfig.org + +root = true + +[*] +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true + +[Makefile] +indent_style = tab +indent_size = 4 + +[*.go] +indent_style = tab +indent_size = 4 + +[*.starlark] +indent_style = space +indent_size = 2 + +[*.{yml,json}] +indent_style = space +indent_size = 2 + +[*.{js,vue}] +indent_style = space +indent_size = 2 + +[*.{css,less}] +indent_style = space +indent_size = 2 + +[*.md] +trim_trailing_whitespace = true diff --git a/konnectd/.github/config.yml b/konnectd/.github/config.yml new file mode 100644 index 0000000000..17184f23de --- /dev/null +++ b/konnectd/.github/config.yml @@ -0,0 +1,12 @@ +# Configuration for update-docs - https://github.com/behaviorbot/update-docs + +# Comment to be posted to on PRs that don't update documentation +updateDocsComment: > + Thanks for opening this pull request! The maintainers of this repository would appreciate it if you would create a [changelog](https://github.com/owncloud/ocis-konnectd/blob/master/changelog/README.md) item based on your changes. +updateDocsWhiteList: + - Tests-only + - tests-only + - Tests-Only + +updateDocsTargetFiles: + - changelog/unreleased/ diff --git a/konnectd/.github/issue_template.md b/konnectd/.github/issue_template.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/konnectd/.github/pull_request_template.md b/konnectd/.github/pull_request_template.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/konnectd/.github/settings.yml b/konnectd/.github/settings.yml new file mode 100644 index 0000000000..c932d206cb --- /dev/null +++ b/konnectd/.github/settings.yml @@ -0,0 +1,98 @@ +--- +repository: + name: ocis-konnectd + description: ':atom_symbol: Serve Konnectd for oCIS' + homepage: https://owncloud.github.io/ocis-konnectd/ + topics: reva, ocis + + private: false + has_issues: true + has_projects: false + has_wiki: false + has_downloads: false + + default_branch: master + + allow_squash_merge: true + allow_merge_commit: true + allow_rebase_merge: true + +labels: + - name: bug + color: d73a4a + description: Something isn't working + - name: documentation + color: 0075ca + description: Improvements or additions to documentation + - name: duplicate + color: cfd3d7 + description: This issue or pull request already exists + - name: enhancement + color: a2eeef + description: New feature or request + - name: good first issue + color: 7057ff + description: Good for newcomers + - name: help wanted + color: 008672 + description: Extra attention is needed + - name: invalid + color: e4e669 + description: This doesn't seem right + - name: question + color: d876e3 + description: Further information is requested + - name: wontfix + color: ffffff + description: This will not be worked on + - name: effort/trivial + color: c2e0c6 + description: Required effort to finish task + - name: effort/0.25d + color: c2e0c6 + description: Required effort to finish task + - name: effort/0.5d + color: c2e0c6 + description: Required effort to finish task + - name: effort/1d + color: c2e0c6 + description: Required effort to finish task + - name: effort/2d + color: c2e0c6 + description: Required effort to finish task + - name: effort/4d + color: c2e0c6 + description: Required effort to finish task + - name: effort/5d + color: c2e0c6 + description: Required effort to finish task + - name: effort/10d + color: c2e0c6 + description: Required effort to finish task + +teams: + - name: ci + permission: admin + - name: employees + permission: push + +branches: + - name: master + protection: + required_pull_request_reviews: + required_approving_review_count: 1 + dismiss_stale_reviews: false + require_code_owner_reviews: false + dismissal_restrictions: {} + required_status_checks: + strict: true + contexts: + - continuous-integration/drone/pr + enforce_admins: false + restrictions: + users: [] + teams: + - ci + - employees + +... diff --git a/konnectd/.gitignore b/konnectd/.gitignore new file mode 100644 index 0000000000..1164736d34 --- /dev/null +++ b/konnectd/.gitignore @@ -0,0 +1,7 @@ +coverage.out + +/bin +/dist +/hugo +server.crt +server.key diff --git a/konnectd/CHANGELOG.md b/konnectd/CHANGELOG.md new file mode 100644 index 0000000000..a9dd420ec3 --- /dev/null +++ b/konnectd/CHANGELOG.md @@ -0,0 +1,151 @@ +# Changelog for [0.3.2] (2020-07-23) + +The following sections list the changes in ocis-konnectd 0.3.2. + +[0.3.2]: https://github.com/owncloud/ocis-konnectd/compare/v0.3.1...v0.3.2 + +## Summary + +* Bugfix - Add silent redirect url: [#69](https://github.com/owncloud/ocis-konnectd/issues/69) +* Bugfix - Build docker images with alpine:latest instead of alpine:edge: [#71](https://github.com/owncloud/ocis-konnectd/pull/71) + +## Details + +* Bugfix - Add silent redirect url: [#69](https://github.com/owncloud/ocis-konnectd/issues/69) + + Adds the oidc-silent-redirect.html phoenix uses to silently refresh access tokens to the + default identifier-registration.yml + + https://github.com/owncloud/ocis-konnectd/issues/69 + https://github.com/owncloud/ocis-konnectd/pull/70 + + +* Bugfix - Build docker images with alpine:latest instead of alpine:edge: [#71](https://github.com/owncloud/ocis-konnectd/pull/71) + + ARM builds were failing when built on alpine:edge, so we switched to alpine:latest instead. + + https://github.com/owncloud/ocis-konnectd/pull/71 + +# Changelog for [0.3.1] (2020-04-14) + +The following sections list the changes in ocis-konnectd 0.3.1. + +[0.3.1]: https://github.com/owncloud/ocis-konnectd/compare/v0.3.0...v0.3.1 + +## Summary + +* Bugfix - Include the assets for #62: [#64](https://github.com/owncloud/ocis-konnectd/pull/64) + +## Details + +* Bugfix - Include the assets for #62: [#64](https://github.com/owncloud/ocis-konnectd/pull/64) + + PR 62 introduced new client names. These assets needs to be generated in the embed.go file. + + https://github.com/owncloud/ocis-konnectd/pull/64 + +# Changelog for [0.3.0] (2020-04-14) + +The following sections list the changes in ocis-konnectd 0.3.0. + +[0.3.0]: https://github.com/owncloud/ocis-konnectd/compare/v0.2.0...v0.3.0 + +## Summary + +* Bugfix - Redirect to the provided uri: [#26](https://github.com/owncloud/ocis-konnectd/issues/26) +* Change - Add a trailing slash to trusted redirect uris: [#26](https://github.com/owncloud/ocis-konnectd/issues/26) +* Change - Improve client identifiers for end users: [#62](https://github.com/owncloud/ocis-konnectd/pull/62) +* Enhancement - Use upstream version of konnect library: [#14](https://github.com/owncloud/product/issues/14) + +## Details + +* Bugfix - Redirect to the provided uri: [#26](https://github.com/owncloud/ocis-konnectd/issues/26) + + The phoenix client was not set as trusted therefore when logging out the user was redirected to a + default page instead of the provided url. + + https://github.com/owncloud/ocis-konnectd/issues/26 + + +* Change - Add a trailing slash to trusted redirect uris: [#26](https://github.com/owncloud/ocis-konnectd/issues/26) + + Phoenix changed the redirect uri to `#/login` that means it will contain a trailing + slash after the base url. + + https://github.com/owncloud/ocis-konnectd/issues/26 + + +* Change - Improve client identifiers for end users: [#62](https://github.com/owncloud/ocis-konnectd/pull/62) + + Improved end user facing client names in default identifier-registration.yaml + + https://github.com/owncloud/ocis-konnectd/pull/62 + + +* Enhancement - Use upstream version of konnect library: [#14](https://github.com/owncloud/product/issues/14) + + https://github.com/owncloud/product/issues/14 + +# Changelog for [0.2.0] (2020-03-18) + +The following sections list the changes in ocis-konnectd 0.2.0. + +[0.2.0]: https://github.com/owncloud/ocis-konnectd/compare/v0.1.0...v0.2.0 + +## Summary + +* Enhancement - Change default config for single-binary: [#55](https://github.com/owncloud/ocis-konnectd/pull/55) + +## Details + +* Enhancement - Change default config for single-binary: [#55](https://github.com/owncloud/ocis-konnectd/pull/55) + + https://github.com/owncloud/ocis-konnectd/pull/55 + +# Changelog for [0.1.0] (2020-03-18) + +The following sections list the changes in ocis-konnectd 0.1.0. + +[0.1.0]: https://github.com/owncloud/ocis-konnectd/compare/66337bb4dad4a3202880323adf7a51a1a3bb4085...v0.1.0 + +## Summary + +* Bugfix - Generate a random CSP-Nonce in the webapp: [#17](https://github.com/owncloud/ocis-konnectd/issues/17) +* Change - Dummy index.html is not required anymore by upstream: [#25](https://github.com/owncloud/ocis-konnectd/issues/25) +* Change - Initial release of basic version: [#1](https://github.com/owncloud/ocis-konnectd/issues/1) +* Change - Use glauth as ldap backend, default to running behind ocis-proxy: [#52](https://github.com/owncloud/ocis-konnectd/pull/52) + +## Details + +* Bugfix - Generate a random CSP-Nonce in the webapp: [#17](https://github.com/owncloud/ocis-konnectd/issues/17) + + https://github.com/owncloud/ocis-konnectd/issues/17 + https://github.com/owncloud/ocis-konnectd/pull/29 + + +* Change - Dummy index.html is not required anymore by upstream: [#25](https://github.com/owncloud/ocis-konnectd/issues/25) + + The workaround was required as identifier webapp was mandatory, but we serve it from memory. + This also introduces --disable-identifier-webapp flag. + + https://github.com/owncloud/ocis-konnectd/issues/25 + + +* Change - Initial release of basic version: [#1](https://github.com/owncloud/ocis-konnectd/issues/1) + + Just prepare an initial basic version to serve konnectd embedded into our microservice + infrastructure in the scope of the ownCloud Infinite Scale project. + + https://github.com/owncloud/ocis-konnectd/issues/1 + + +* Change - Use glauth as ldap backend, default to running behind ocis-proxy: [#52](https://github.com/owncloud/ocis-konnectd/pull/52) + + We changed the default configuration to integrate better with ocis. + + The default ldap port changes to 9125, which is used by ocis-glauth and we use ocis-proxy to do + the tls offloading. Clients are supposed to use the ocis-proxy endpoint + `https://localhost:9200` + + https://github.com/owncloud/ocis-konnectd/pull/52 + diff --git a/konnectd/LICENSE b/konnectd/LICENSE new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/konnectd/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/konnectd/Makefile b/konnectd/Makefile new file mode 100644 index 0000000000..bf2ce4578a --- /dev/null +++ b/konnectd/Makefile @@ -0,0 +1,199 @@ +SHELL := bash +NAME := ocis-konnectd +IMPORT := github.com/owncloud/$(NAME) +BIN := bin +DIST := dist +HUGO := hugo + +ifeq ($(OS), Windows_NT) + EXECUTABLE := $(NAME).exe + UNAME := Windows +else + EXECUTABLE := $(NAME) + UNAME := $(shell uname -s) +endif + +ifeq ($(UNAME), Darwin) + GOBUILD ?= go build -i +else + GOBUILD ?= go build +endif + +PACKAGES ?= $(shell go list ./...) +SOURCES ?= $(shell find . -name "*.go" -type f -not -path "./node_modules/*") +GENERATE ?= $(PACKAGES) + +TAGS ?= + +ifndef OUTPUT + ifneq ($(DRONE_TAG),) + OUTPUT ?= $(subst v,,$(DRONE_TAG)) + else + OUTPUT ?= testing + endif +endif + +ifndef VERSION + ifneq ($(DRONE_TAG),) + VERSION ?= $(subst v,,$(DRONE_TAG)) + else + VERSION ?= $(shell git rev-parse --short HEAD) + endif +endif + +ifndef DATE + DATE := $(shell date -u '+%Y%m%d') +endif + +LDFLAGS += -s -w -X "$(IMPORT)/pkg/version.String=$(VERSION)" -X "$(IMPORT)/pkg/version.Date=$(DATE)" +DEBUG_LDFLAGS += -X "$(IMPORT)/pkg/version.String=$(VERSION)" -X "$(IMPORT)/pkg/version.Date=$(DATE)" +GCFLAGS += all=-N -l + +.PHONY: all +all: build + +.PHONY: sync +sync: + go mod download + +.PHONY: clean +clean: + go clean -i ./... + rm -rf $(BIN) $(DIST) $(HUGO) + +.PHONY: fmt +fmt: + gofmt -s -w $(SOURCES) + +.PHONY: vet +vet: + go vet $(PACKAGES) + +.PHONY: staticcheck +staticcheck: + go run honnef.co/go/tools/cmd/staticcheck -tags '$(TAGS)' $(PACKAGES) + +.PHONY: lint +lint: + for PKG in $(PACKAGES); do go run golang.org/x/lint/golint -set_exit_status $$PKG || exit 1; done; + +.PHONY: generate +generate: + go generate $(GENERATE) + +.PHONY: changelog +changelog: + go run github.com/restic/calens >| CHANGELOG.md + +.PHONY: test +test: + go run github.com/haya14busa/goverage -v -coverprofile coverage.out $(PACKAGES) + +.PHONY: install +install: $(SOURCES) + go install -v -tags '$(TAGS)' -ldflags '$(LDFLAGS)' ./cmd/$(NAME) + +.PHONY: build +build: $(BIN)/$(EXECUTABLE) $(BIN)/$(EXECUTABLE)-debug + +$(BIN)/$(EXECUTABLE): $(SOURCES) + $(GOBUILD) -v -tags '$(TAGS)' -ldflags '$(LDFLAGS)' -o $@ ./cmd/$(NAME) + +$(BIN)/$(EXECUTABLE)-debug: $(SOURCES) + $(GOBUILD) -v -tags '$(TAGS)' -ldflags '$(DEBUG_LDFLAGS)' -gcflags '$(GCFLAGS)' -o $@ ./cmd/$(NAME) + +.PHONY: release +release: release-dirs release-linux release-windows release-darwin release-copy release-check + +.PHONY: release-dirs +release-dirs: + mkdir -p $(DIST)/binaries $(DIST)/release + +.PHONY: release-linux +release-linux: release-dirs + go run github.com/mitchellh/gox -tags 'netgo $(TAGS)' -ldflags '-extldflags "-static" $(LDFLAGS)' -os 'linux' -arch 'amd64 386 arm64 arm' -output '$(DIST)/binaries/$(EXECUTABLE)-$(OUTPUT)-{{.OS}}-{{.Arch}}' ./cmd/$(NAME) + +.PHONY: release-windows +release-windows: release-dirs + go run github.com/mitchellh/gox -tags 'netgo $(TAGS)' -ldflags '-extldflags "-static" $(LDFLAGS)' -os 'windows' -arch 'amd64' -output '$(DIST)/binaries/$(EXECUTABLE)-$(OUTPUT)-{{.OS}}-{{.Arch}}' ./cmd/$(NAME) + +.PHONY: release-darwin +release-darwin: release-dirs + go run github.com/mitchellh/gox -tags 'netgo $(TAGS)' -ldflags '$(LDFLAGS)' -os 'darwin' -arch 'amd64' -output '$(DIST)/binaries/$(EXECUTABLE)-$(OUTPUT)-{{.OS}}-{{.Arch}}' ./cmd/$(NAME) + +.PHONY: release-copy +release-copy: + $(foreach file,$(wildcard $(DIST)/binaries/$(EXECUTABLE)-*),cp $(file) $(DIST)/release/$(notdir $(file));) + +.PHONY: release-check +release-check: + cd $(DIST)/release; $(foreach file,$(wildcard $(DIST)/release/$(EXECUTABLE)-*),sha256sum $(notdir $(file)) > $(notdir $(file)).sha256;) + +.PHONY: release-finish +release-finish: release-copy release-check + +.PHONY: docs-copy +docs-copy: + mkdir -p $(HUGO); \ + mkdir -p $(HUGO)/content/extensions; \ + cd $(HUGO); \ + git init; \ + git remote rm origin; \ + git remote add origin https://github.com/owncloud/owncloud.github.io; \ + git fetch; \ + git checkout origin/source -f; \ + rsync --delete -ax ../docs/ content/extensions/$(NAME) + +.PHONY: config-docs-generate +config-docs-generate: + go run github.com/owncloud/flaex >| docs/configuration.md + +.PHONY: docs-build +docs-build: + cd $(HUGO); hugo + +.PHONY: docs +docs: config-docs-generate docs-copy docs-build + +.PHONY: watch +watch: + go run github.com/cespare/reflex -c reflex.conf + +# $(GOPATH)/bin/protoc-gen-go: +# GO111MODULE=off go get -v github.com/golang/protobuf/protoc-gen-go + +# $(GOPATH)/bin/protoc-gen-micro: +# GO111MODULE=off go get -v github.com/micro/protoc-gen-micro + +# $(GOPATH)/bin/protoc-gen-microweb: +# GO111MODULE=off go get -v github.com/webhippie/protoc-gen-microweb + +# $(GOPATH)/bin/protoc-gen-swagger: +# GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger + +# pkg/proto/v0/example.pb.go: pkg/proto/v0/example.proto +# protoc \ +# -I=third_party/ \ +# -I=pkg/proto/v0/ \ +# --go_out=pkg/proto/v0 example.proto + +# pkg/proto/v0/example.pb.micro.go: pkg/proto/v0/example.proto +# protoc \ +# -I=third_party/ \ +# -I=pkg/proto/v0/ \ +# --micro_out=pkg/proto/v0 example.proto + +# pkg/proto/v0/example.pb.web.go: pkg/proto/v0/example.proto +# protoc \ +# -I=third_party/ \ +# -I=pkg/proto/v0/ \ +# --microweb_out=pkg/proto/v0 example.proto + +# pkg/proto/v0/example.swagger.json: pkg/proto/v0/example.proto +# protoc \ +# -I=third_party/ \ +# -I=pkg/proto/v0/ \ +# --swagger_out=pkg/proto/v0 example.proto + +# .PHONY: protobuf +# protobuf: $(GOPATH)/bin/protoc-gen-go $(GOPATH)/bin/protoc-gen-micro $(GOPATH)/bin/protoc-gen-microweb $(GOPATH)/bin/protoc-gen-swagger pkg/proto/v0/example.pb.go pkg/proto/v0/example.pb.micro.go pkg/proto/v0/example.pb.web.go pkg/proto/v0/example.swagger.json diff --git a/konnectd/README.md b/konnectd/README.md new file mode 100644 index 0000000000..cfdc50554f --- /dev/null +++ b/konnectd/README.md @@ -0,0 +1,45 @@ +# ownCloud Infinite Scale: Konnectd + +[![Build Status](https://cloud.drone.io/api/badges/owncloud/ocis-konnectd/status.svg)](https://cloud.drone.io/owncloud/ocis-konnectd) +[![Gitter chat](https://badges.gitter.im/cs3org/reva.svg)](https://gitter.im/cs3org/reva) +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/f6f9033737404c9da3ba4738b6501bdb)](https://www.codacy.com/manual/owncloud/ocis-konnectd?utm_source=github.com&utm_medium=referral&utm_content=owncloud/ocis-konnectd&utm_campaign=Badge_Grade) +[![Go Doc](https://godoc.org/github.com/owncloud/ocis-konnectd?status.svg)](http://godoc.org/github.com/owncloud/ocis-konnectd) +[![Go Report](http://goreportcard.com/badge/github.com/owncloud/ocis-konnectd)](http://goreportcard.com/report/github.com/owncloud/ocis-konnectd) +[![](https://images.microbadger.com/badges/image/owncloud/ocis-konnectd.svg)](http://microbadger.com/images/owncloud/ocis-konnectd "Get your own image badge on microbadger.com") + +**This project is under heavy development, it's not in a working state yet!** + +## Install + +You can download prebuilt binaries from the GitHub releases or from our [download mirrors](http://download.owncloud.com/ocis/konnectd/). For instructions how to install this on your platform you should take a look at our [documentation](https://owncloud.github.io/extensions/ocis_konnectd/) + +## Development + +Make sure you have a working Go environment, for further reference or a guide take a look at the [install instructions](http://golang.org/doc/install.html). This project requires Go >= v1.13. + +```console +git clone https://github.com/owncloud/ocis-konnectd.git +cd ocis-konnectd + +make generate build + +./bin/ocis-konnectd -h +``` + +## Security + +If you find a security issue please contact security@owncloud.com first. + +## Contributing + +Fork -> Patch -> Push -> Pull Request + +## License + +Apache-2.0 + +## Copyright + +```console +Copyright (c) 2020 ownCloud GmbH +``` diff --git a/konnectd/assets/identifier-registration.yaml b/konnectd/assets/identifier-registration.yaml new file mode 100644 index 0000000000..0f23aa0b63 --- /dev/null +++ b/konnectd/assets/identifier-registration.yaml @@ -0,0 +1,118 @@ +--- + +# OpenID Connect client registry. +clients: + - id: phoenix + name: ownCloud web app + application_type: web + insecure: yes + trusted: yes + redirect_uris: + - https://localhost:9200/ + - https://localhost:9200/oidc-callback.html + - https://localhost:9200/oidc-silent-redirect.html + - http://localhost:9100/ + - http://localhost:9100/oidc-callback.html + - http://localhost:9100/oidc-silent-redirect.html + origins: + - https://localhost:9200 + - http://localhost:9100 + + - id: ocis-explorer.js + name: OCIS Graph Explorer + trusted: yes + application_type: web + insecure: yes + + - id: xdXOt13JKxym1B1QcEncf2XDkLAexMBFwiT9j6EfhhHFJhs2KM9jbjTmf8JBXE69 + secret: UBntmLjC2yYCeHwsyj73Uwo9TAaecAetRwMw0xYcvNL9yRdLSUi0hUAHfvCHFeFh + name: ownCloud desktop app + application_type: native + insecure: true + + - id: e4rAsNUSIUs0lF4nbv9FmCeUkTlV9GdgTLDH1b5uie7syb90SzEVrbN7HIpmWJeD + secret: dInFYGV33xKzhbRmpqQltYNdfLdJIfJ9L5ISoKhNoT9qZftpdWSP71VrpGR9pmoD + name: ownCloud Android app + application_type: native + redirect_uris: + - oc://android.owncloud.com + + - id: mxd5OQDk6es5LzOzRvidJNfXLUZS2oN3oUFeXPP8LpPrhx3UroJFduGEYIBOxkY1 + secret: KFeFWWEZO9TkisIQzR3fo7hfiMXlOpaqP8CFuTbSHzV1TUuGECglPxpiVKJfOXIx + name: ownCloud iOS app + application_type: native + redirect_uris: + - oc://ios.owncloud.com + - oc.ios://ios.owncloud.com + + +# - id: playground-trusted.js +# name: Trusted OIDC Playground +# trusted: yes +# application_type: web +# redirect_uris: +# - https://my-host:8509/ +# origins: +# - https://my-host:8509 + +# - id: playground-trusted.js +# name: Trusted Insecure OIDC Playground +# trusted: yes +# application_type: web +# insecure: yes + +# - id: client-with-keys +# secret: super +# application_type: native +# redirect_uris: +# - http://localhost +# trusted_scopes: +# - konnect/guestok +# - kopano/kwm +# jwks: +# keys: +# - kty: EC +# use: sig +# kid: client-with-keys-key-1 +# crv: P-256 +# x: RTZpWoRbjwX1YavmSHVBj6Cy3Yzdkkp6QLvTGB22D0c +# y: jeavjwcX0xlDSchFcBMzXSU7wGs2VPpNxWCwmxFvmF0 +# request_object_signing_alg: ES256 + +# - id: first +# secret: lala +# application_type: native +# redirect_uris: +# - my://app + +# - id: second +# secret: lulu +# application_type: native +# redirect_uris: +# - http://localhost + +# External authority registry. +authorities: +# - id: my-univention +# name: Univention +# client_id: kopano-konnect +# authority_type: oidc +# jwks: +# keys: +# - kty: EC +# use: sig +# kid: example-key-1 +# crv: P-256 +# x: RTZpWoRbjwX1YavmSHVBj6Cy3Yzdkkp6QLvTGB22D0c +# y: jeavjwcX0xlDSchFcBMzXSU7wGs2VPpNxWCwmxFvmF0 +# default: yes +# authorization_endpoint: https://my-univention/signin/v1/identifier/_/authorize +# response_type: id_token +# scopes: +# - openid +# - profile +# identity_claim_name: preferred_username +# identity_aliases: +# external-user-a: local-user-a +# external-user-b: local-user-b +# identity_alias_required: true diff --git a/konnectd/assets/identifier/asset-manifest.json b/konnectd/assets/identifier/asset-manifest.json new file mode 100644 index 0000000000..f39f159ea2 --- /dev/null +++ b/konnectd/assets/identifier/asset-manifest.json @@ -0,0 +1,22 @@ +{ + "identifier-app.js": "./static/js/identifier-app.b36b0d07.chunk.js", + "identifier-app.js.map": "./static/js/identifier-app.b36b0d07.chunk.js.map", + "identifier-container.js": "./static/js/identifier-container.569688ae.chunk.js", + "identifier-container.js.map": "./static/js/identifier-container.569688ae.chunk.js.map", + "main.css": "./static/css/main.ed0ebb7d.chunk.css", + "main.js": "./static/js/main.c5511071.chunk.js", + "main.js.map": "./static/js/main.c5511071.chunk.js.map", + "runtime~main.js": "./static/js/runtime~main.766bf48a.js", + "runtime~main.js.map": "./static/js/runtime~main.766bf48a.js.map", + "static/js/4.f92d7884.chunk.js": "./static/js/4.f92d7884.chunk.js", + "static/js/4.f92d7884.chunk.js.map": "./static/js/4.f92d7884.chunk.js.map", + "static/js/5.b1222fed.chunk.js": "./static/js/5.b1222fed.chunk.js", + "static/js/5.b1222fed.chunk.js.map": "./static/js/5.b1222fed.chunk.js.map", + "index.html": "./index.html", + "precache-manifest.ea8b619599c55ba5f128f51d796152cd.js": "./precache-manifest.ea8b619599c55ba5f128f51d796152cd.js", + "service-worker.js": "./service-worker.js", + "static/css/main.ed0ebb7d.chunk.css.map": "./static/css/main.ed0ebb7d.chunk.css.map", + "static/media/kopano-logo.svg": "./static/media/kopano-logo.10e256c7.svg", + "static/media/fancy-background.css": "./static/media/loginscreen-bg.cc3ef0e4.jpg", + "static/media/index.css": "./static/media/roboto-latin-900italic.bc833e72.woff" +} \ No newline at end of file diff --git a/konnectd/assets/identifier/index.html b/konnectd/assets/identifier/index.html new file mode 100644 index 0000000000..bf242c8153 --- /dev/null +++ b/konnectd/assets/identifier/index.html @@ -0,0 +1 @@ +Kopano Sign in
aABb
\ No newline at end of file diff --git a/konnectd/assets/identifier/precache-manifest.ea8b619599c55ba5f128f51d796152cd.js b/konnectd/assets/identifier/precache-manifest.ea8b619599c55ba5f128f51d796152cd.js new file mode 100644 index 0000000000..a54968d1e8 --- /dev/null +++ b/konnectd/assets/identifier/precache-manifest.ea8b619599c55ba5f128f51d796152cd.js @@ -0,0 +1,142 @@ +self.__precacheManifest = [ + { + "revision": "7aa085561004b3906a54", + "url": "./static/js/identifier-app.b36b0d07.chunk.js" + }, + { + "revision": "086f2ac22fca8d45f2f1", + "url": "./static/js/identifier-container.569688ae.chunk.js" + }, + { + "revision": "ec7a9d03e50fe60db0c9", + "url": "./static/css/main.ed0ebb7d.chunk.css" + }, + { + "revision": "ec7a9d03e50fe60db0c9", + "url": "./static/js/main.c5511071.chunk.js" + }, + { + "revision": "9987e5e6817f0b1d1511", + "url": "./static/js/runtime~main.766bf48a.js" + }, + { + "revision": "de913ae19ba466b785d7", + "url": "./static/js/4.f92d7884.chunk.js" + }, + { + "revision": "435f63f2b0ecc59d0119", + "url": "./static/js/5.b1222fed.chunk.js" + }, + { + "revision": "d704bb3d579b7d5e40880c75705c8a71", + "url": "./static/media/roboto-latin-100italic.d704bb3d.woff" + }, + { + "revision": "55536c8e9e9a532651e3cf374f290ea3", + "url": "./static/media/roboto-latin-300.55536c8e.woff2" + }, + { + "revision": "a1471d1d6431c893582a5f6a250db3f9", + "url": "./static/media/roboto-latin-300.a1471d1d.woff" + }, + { + "revision": "6232f43d15b0e7a0bf0fe82e295bdd06", + "url": "./static/media/roboto-latin-100italic.6232f43d.woff2" + }, + { + "revision": "d69924b98acd849cdeba9fbff3f88ea6", + "url": "./static/media/roboto-latin-300italic.d69924b9.woff2" + }, + { + "revision": "210a7c781f5a354a0e4985656ab456d9", + "url": "./static/media/roboto-latin-300italic.210a7c78.woff" + }, + { + "revision": "987b84570ea69ee660455b8d5e91f5f1", + "url": "./static/media/roboto-latin-100.987b8457.woff2" + }, + { + "revision": "e9dbbe8a693dd275c16d32feb101f1c1", + "url": "./static/media/roboto-latin-100.e9dbbe8a.woff" + }, + { + "revision": "5d4aeb4e5f5ef754e307d7ffaef688bd", + "url": "./static/media/roboto-latin-400.5d4aeb4e.woff2" + }, + { + "revision": "bafb105baeb22d965c70fe52ba6b49d9", + "url": "./static/media/roboto-latin-400.bafb105b.woff" + }, + { + "revision": "d8bcbe724fd6f4ba44d0ee6a2675890f", + "url": "./static/media/roboto-latin-400italic.d8bcbe72.woff2" + }, + { + "revision": "9680d5a0c32d2fd084e07bbc4c8b2923", + "url": "./static/media/roboto-latin-400italic.9680d5a0.woff" + }, + { + "revision": "285467176f7fe6bb6a9c6873b3dad2cc", + "url": "./static/media/roboto-latin-500.28546717.woff2" + }, + { + "revision": "de8b7431b74642e830af4d4f4b513ec9", + "url": "./static/media/roboto-latin-500.de8b7431.woff" + }, + { + "revision": "510dec37fa69fba39593e01a469ee018", + "url": "./static/media/roboto-latin-500italic.510dec37.woff2" + }, + { + "revision": "ffcc050b2d92d4b14a4fcb527ee0bcc8", + "url": "./static/media/roboto-latin-500italic.ffcc050b.woff" + }, + { + "revision": "037d830416495def72b7881024c14b7b", + "url": "./static/media/roboto-latin-700.037d8304.woff2" + }, + { + "revision": "cf6613d1adf490972c557a8e318e0868", + "url": "./static/media/roboto-latin-700.cf6613d1.woff" + }, + { + "revision": "010c1aeee3c6d1cbb1d5761d80353823", + "url": "./static/media/roboto-latin-700italic.010c1aee.woff2" + }, + { + "revision": "19b7a0adfdd4f808b53af7e2ce2ad4e5", + "url": "./static/media/roboto-latin-900.19b7a0ad.woff2" + }, + { + "revision": "846d1890aee87fde5d8ced8eba360c3a", + "url": "./static/media/roboto-latin-700italic.846d1890.woff" + }, + { + "revision": "8c2ade503b34e31430d6c98aa29a52a3", + "url": "./static/media/roboto-latin-900.8c2ade50.woff" + }, + { + "revision": "7b770d6c53423deb1a8e49d3c9175184", + "url": "./static/media/roboto-latin-900italic.7b770d6c.woff2" + }, + { + "revision": "bc833e725c137257c2c42a789845d82f", + "url": "./static/media/roboto-latin-900italic.bc833e72.woff" + }, + { + "revision": "cc3ef0e44832d84dcdb8fce769840ecd", + "url": "./static/media/loginscreen-bg.cc3ef0e4.jpg" + }, + { + "revision": "6f9a3fb01c61fa1d416601814b69f57a", + "url": "./static/media/loginscreen-bg-overlay.6f9a3fb0.svg" + }, + { + "revision": "10e256c785b6ad2fe0a337b2aa9e6da6", + "url": "./static/media/kopano-logo.10e256c7.svg" + }, + { + "revision": "02abc6e9f1d6def38abd7f6b448b00f0", + "url": "./index.html" + } +]; \ No newline at end of file diff --git a/konnectd/assets/identifier/static/css/main.ed0ebb7d.chunk.css b/konnectd/assets/identifier/static/css/main.ed0ebb7d.chunk.css new file mode 100644 index 0000000000..c553b244b5 --- /dev/null +++ b/konnectd/assets/identifier/static/css/main.ed0ebb7d.chunk.css @@ -0,0 +1,2 @@ +body,html{height:100%}body{margin:0;padding:0}#bg{position:fixed;top:0;bottom:0;left:0;right:0;background:#fff}#loader{position:absolute;bottom:6%;left:50%;font-weight:400;font-family:Roboto,Helvetica,Arial,sans-serif;color:#666;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}#loader>a{color:#1e98d7}#font-preloader{position:absolute;top:-500px;font-weight:400;color:#fff;font-family:Roboto,Helvetica,Arial,sans-serif}#font-preloader>span{font-weight:500}#root{height:100%;display:flex}::-webkit-scrollbar{height:8px;width:10px;background:transparent;overflow:visible}::-webkit-scrollbar-corner{display:none;background:#f5f5f5}::-webkit-scrollbar-button{display:none;height:0;width:0}::-webkit-scrollbar-button:end:increment,::-webkit-scrollbar-button:start:decrement{display:block}::-webkit-scrollbar-button:vertical:end:decrement,::-webkit-scrollbar-button:vertical:start:increment{display:none}::-webkit-scrollbar-track{-moz-background-clip:border;-webkit-background-clip:border;background-clip:padding-box;background-color:#f5f5f5}::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-track:vertical{border-left-width:0;border-right-width:0}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-track:vertical{border-style:solid;border-color:transparent}::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:#ddd;min-height:40px;padding-top:100px}::-webkit-scrollbar-thumb:hover,body:hover ::-webkit-scrollbar-thumb{background-color:#bdbdbd}::-webkit-scrollbar-thumb:active{background-color:#989898}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical{border-width:0}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:100;src:local("Roboto Thin "),local("Roboto-Thin"),url(../../static/media/roboto-latin-100.987b8457.woff2) format("woff2"),url(../../static/media/roboto-latin-100.e9dbbe8a.woff) format("woff")}@font-face{font-family:Roboto;font-style:italic;font-display:swap;font-weight:100;src:local("Roboto Thin italic"),local("Roboto-Thinitalic"),url(../../static/media/roboto-latin-100italic.6232f43d.woff2) format("woff2"),url(../../static/media/roboto-latin-100italic.d704bb3d.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:300;src:local("Roboto Light "),local("Roboto-Light"),url(../../static/media/roboto-latin-300.55536c8e.woff2) format("woff2"),url(../../static/media/roboto-latin-300.a1471d1d.woff) format("woff")}@font-face{font-family:Roboto;font-style:italic;font-display:swap;font-weight:300;src:local("Roboto Light italic"),local("Roboto-Lightitalic"),url(../../static/media/roboto-latin-300italic.d69924b9.woff2) format("woff2"),url(../../static/media/roboto-latin-300italic.210a7c78.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:400;src:local("Roboto Regular "),local("Roboto-Regular"),url(../../static/media/roboto-latin-400.5d4aeb4e.woff2) format("woff2"),url(../../static/media/roboto-latin-400.bafb105b.woff) format("woff")}@font-face{font-family:Roboto;font-style:italic;font-display:swap;font-weight:400;src:local("Roboto Regular italic"),local("Roboto-Regularitalic"),url(../../static/media/roboto-latin-400italic.d8bcbe72.woff2) format("woff2"),url(../../static/media/roboto-latin-400italic.9680d5a0.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:500;src:local("Roboto Medium "),local("Roboto-Medium"),url(../../static/media/roboto-latin-500.28546717.woff2) format("woff2"),url(../../static/media/roboto-latin-500.de8b7431.woff) format("woff")}@font-face{font-family:Roboto;font-style:italic;font-display:swap;font-weight:500;src:local("Roboto Medium italic"),local("Roboto-Mediumitalic"),url(../../static/media/roboto-latin-500italic.510dec37.woff2) format("woff2"),url(../../static/media/roboto-latin-500italic.ffcc050b.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:700;src:local("Roboto Bold "),local("Roboto-Bold"),url(../../static/media/roboto-latin-700.037d8304.woff2) format("woff2"),url(../../static/media/roboto-latin-700.cf6613d1.woff) format("woff")}@font-face{font-family:Roboto;font-style:italic;font-display:swap;font-weight:700;src:local("Roboto Bold italic"),local("Roboto-Bolditalic"),url(../../static/media/roboto-latin-700italic.010c1aee.woff2) format("woff2"),url(../../static/media/roboto-latin-700italic.846d1890.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-display:swap;font-weight:900;src:local("Roboto Black "),local("Roboto-Black"),url(../../static/media/roboto-latin-900.19b7a0ad.woff2) format("woff2"),url(../../static/media/roboto-latin-900.8c2ade50.woff) format("woff")}@font-face{font-family:Roboto;font-style:italic;font-display:swap;font-weight:900;src:local("Roboto Black italic"),local("Roboto-Blackitalic"),url(../../static/media/roboto-latin-900italic.7b770d6c.woff2) format("woff2"),url(../../static/media/roboto-latin-900italic.bc833e72.woff) format("woff")}@-webkit-keyframes onAutoFillStart{kopano{keepme:0}}@keyframes onAutoFillStart{kopano{keepme:0}}@-webkit-keyframes onAutoFillCancel{kopano{keepme:0}}@keyframes onAutoFillCancel{kopano{keepme:0}}#bg-thumb{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOTIwIiBoZWlnaHQ9IjEwODAiPjxmaWx0ZXIgaWQ9ImEiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj48ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyMCAyMCIvPjxmZUNvbXBvbmVudFRyYW5zZmVyPjxmZUZ1bmNBIHR5cGU9ImRpc2NyZXRlIiB0YWJsZVZhbHVlcz0iMSAxIi8+PC9mZUNvbXBvbmVudFRyYW5zZmVyPjwvZmlsdGVyPjxpbWFnZSBmaWx0ZXI9InVybCgjYSkiIGhyZWY9ImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsLzlqLzRBQVFTa1pKUmdBQkFRRUJMQUVzQUFELzJ3QkRBQkFMREE0TUNoQU9EUTRTRVJBVEdDZ2FHQllXR0RFakpSMG9Pak05UERrek9EZEFTRnhPUUVSWFJUYzRVRzFSVjE5aVoyaG5QazF4ZVhCa2VGeGxaMlAvd0FBTENBQW9BRWNCQVJFQS84UUFHZ0FBQWdNQkFRQUFBQUFBQUFBQUFBQUFBd1lDQkFVQkFQL0VBQzRRQUFJQkF3SURCZ1lEQVFBQUFBQUFBQUVDQXdBRUVRVWhFaUl4RXhReVFWRmhCbEp4Z1pHaEpHS3gwZi9hQUFnQkFRQUFQd0J3QUJHOVJZQWRhNWhENTBOd0Y2R2hoeGpmTkdqYzRxZU0rZGR3QVBXbHI0c1V5OTNHQ1J2bkFKOVBjRDhtbWRCVVpSc0s5SEVYcU04UlJDYXFBMVYxbTZtc3JXT1NIcVd4MG8razNNbHpaSkxLZWM1enRpcnpNQXRMdnhLVi9qRmlvOFhpSyszemY4cGxRMUtUb0s4a3lSWTQyeG1vWDF4eFFBb1ZhTnhrSE85Wk1seHdLQ0ZKeWNZQjZVRFZ0VHQ0N0FQZVJyd1JudzU1dlQxM3BmOEFoWFZMYnZjc0VsM1BBWjVNb1NBVittL1NtT1RWYmUxV1B2VnlwRFNNaVBqeFlZZ2RLRnJ3Sjd0Z3VBUzNoTER5L3FEV3kwanJHZXpBTDQyejBvVVV0NFV6Y05FRzlFVWtmdXFXb2lZQlhobUtTS0NGd0NTYy9lczY2bnZGc0kxdTVTc2g4Q0p5a0QzeC9sVjdtOTdTMjVTZWJiTlpldTN0eGZMSEc1VGdVWTRlZ3pXWHBwa1NVeHFpOGZGd2JqTzlNa1MyMTFGR2swU2t4dUNpOFI1ZDl6K2FZNWJTQytFSW5KNU1rRWZTamh4OHdyb1lIekZVdFR1cmZUN2RycVZBejlGSG14OUtXdGN1WlZ2bEpqSk1rWVBHRzZmYXNwWkxvbGVPVml1Y2tZb2R4STF5M0NJVEZrNUpMakg3eFI5TTdPMjFOYmx1eXVncEpLbktndDZnMVlGMDBVeVNpMFlrWnl3azJ3ZmJIdldsRGQ2bkZweTZqYkR2SWZab21ROHB6amJCci8vWiIgaGVpZ2h0PSIxMDAlIiB3aWR0aD0iMTAwJSIvPjwvc3ZnPg==")}#bg{background-color:#fff}#bg>div{position:absolute;top:0;bottom:0;left:0;right:0;background-size:cover;background-repeat:no-repeat;background-position:50%;z-index:0}#loader{color:#fff;text-shadow:#000 0 0 1px}#bg-enhanced{opacity:0;-webkit-transition:opacity 1s;transition:opacity 1s}#bg-enhanced.enhanced{background-image:url(../../static/media/loginscreen-bg.cc3ef0e4.jpg);opacity:1}#bg-enhanced.enhanced:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-image:url(../../static/media/loginscreen-bg-overlay.6f9a3fb0.svg);background-size:cover;background-repeat:no-repeat;background-position:50%} +/*# sourceMappingURL=main.ed0ebb7d.chunk.css.map */ \ No newline at end of file diff --git a/konnectd/assets/identifier/static/css/main.ed0ebb7d.chunk.css.map b/konnectd/assets/identifier/static/css/main.ed0ebb7d.chunk.css.map new file mode 100644 index 0000000000..350f061ac9 --- /dev/null +++ b/konnectd/assets/identifier/static/css/main.ed0ebb7d.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["/home/ilja/code/konnect/identifier/node_modules/kpop/static/css/base.css","main.ed0ebb7d.chunk.css","/home/ilja/code/konnect/identifier/node_modules/kpop/static/css/scrollbar.css","/home/ilja/code/konnect/identifier/node_modules/typeface-roboto/index.css","/home/ilja/code/konnect/identifier/src/app.css","/home/ilja/code/konnect/identifier/src/images/loginscreen-bg.css","/home/ilja/code/konnect/identifier/src/fancy-background.css"],"names":[],"mappings":"AAAA,UACE,WCCF,CDEA,KACE,QAAA,CACA,SCCF,CDEA,IACE,cAAA,CACA,KAAA,CACA,QAAA,CACA,MAAA,CACA,OAAA,CACA,eCCF,CDEA,QACE,iBAAA,CACA,SAAA,CACA,QAAA,CACA,eAAA,CACA,6CAAA,CACA,UAAA,CACA,sCAAA,CAAA,8BCEF,CDCA,UACE,aCEF,CDCA,gBACE,iBAAA,CACA,UAAA,CACA,eAAA,CACA,UAAA,CACA,6CCEF,CDCA,qBACE,eCEF,CDCA,MACE,WAAA,CACA,YCEF,CChDA,oBACE,UAAA,CACA,UAAA,CACA,sBAAA,CACA,gBDmDF,CChDA,2BACE,YAAA,CACA,kBDmDF,CChDA,2BACE,YAAA,CACA,QAAA,CACA,ODmDF,CChDA,oFACE,aDmDF,CChDA,sGACE,YDmDF,CChDA,0BACE,2BAAA,CACA,8BAAA,CACA,2BAAA,CACA,wBDmDF,CChDA,wEACE,mBAAA,CACA,oBDmDF,CChDA,gJACE,kBAAA,CACA,wBDmDF,CChDA,0BACE,2BAAA,CACA,qBAAA,CACA,eAAA,CACA,iBDmDF,CC5CA,qEACE,wBDmDF,CChDA,iCACE,wBDmDF,CChDA,wEAGE,cDmDF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,4LF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,oNF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,8LF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,sNF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,kMF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,0NF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,gMF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,wNF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,4LF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,oNF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,8LF2HF,CEnHA,WACE,kBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,sNF2HF,CG7QA,mCACE,OAAS,QAA+D,CHoR1E,CGrRA,2BACE,OAAS,QAA+D,CHuR1E,CGrRA,oCACE,OAAS,QAA+D,CHuR1E,CGxRA,4BACE,OAAS,QAA+D,CH0R1E,CIjSA,UAIE,spDJoSF,CKtSA,IACE,qBL2SF,CKxSA,QACE,iBAAA,CACA,KAAA,CACA,QAAA,CACA,MAAA,CACA,OAAA,CACA,qBAAA,CACA,2BAAA,CACA,uBAAA,CACA,SL2SF,CKxSA,QAEE,UAAA,CACA,wBL2SF,CKrSA,aACE,SAAA,CACA,6BAAA,CAAA,qBL2SF,CKxSA,sBACE,oEAAkD,CAClD,SL2SF,CKxSA,4BACE,UAAA,CACA,iBAAA,CACA,KAAA,CACA,QAAA,CACA,MAAA,CACA,OAAA,CACA,4EAA0D,CAC1D,qBAAA,CACA,2BAAA,CACA,uBL2SF","file":"main.ed0ebb7d.chunk.css","sourcesContent":["html, body {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n}\n\n#bg {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: white;\n}\n\n#loader {\n position: absolute;\n bottom: 6%;\n left: 50%;\n font-weight: 400;\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n color: #666;\n transform: translate(-50%, -50%);\n}\n\n#loader > a {\n color: #1e98d7 /* KopanoBlue700 */\n}\n\n#font-preloader {\n position: absolute;\n top: -500px;\n font-weight: 400;\n color: white;\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n}\n\n#font-preloader > span {\n font-weight: 500;\n}\n\n#root {\n height: 100%;\n display: flex;\n}\n","html, body {\n height: 100%;\n}\n\nbody {\n margin: 0;\n padding: 0;\n}\n\n#bg {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background: white;\n}\n\n#loader {\n position: absolute;\n bottom: 6%;\n left: 50%;\n font-weight: 400;\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n color: #666;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n}\n\n#loader > a {\n color: #1e98d7 /* KopanoBlue700 */\n}\n\n#font-preloader {\n position: absolute;\n top: -500px;\n font-weight: 400;\n color: white;\n font-family: \"Roboto\", \"Helvetica\", \"Arial\", sans-serif;\n}\n\n#font-preloader > span {\n font-weight: 500;\n}\n\n#root {\n height: 100%;\n display: flex;\n}\n\n::-webkit-scrollbar {\n height: 8px;\n width: 10px;\n background: transparent;\n overflow: visible;\n}\n\n::-webkit-scrollbar-corner {\n display: none;\n background: #f5f5f5;\n}\n\n::-webkit-scrollbar-button {\n display: none;\n height:0;\n width: 0;\n}\n\n::-webkit-scrollbar-button:start:decrement,::-webkit-scrollbar-button:end:increment {\n display: block;\n}\n\n::-webkit-scrollbar-button:vertical:start:increment,::-webkit-scrollbar-button:vertical:end:decrement {\n display: none;\n}\n\n::-webkit-scrollbar-track {\n -moz-background-clip: border;\n -webkit-background-clip: border;\n background-clip: padding-box;\n background-color: #f5f5f5;\n}\n\n::-webkit-scrollbar-track:vertical, ::-webkit-scrollbar-track:horizontal {\n border-left-width: 0;\n border-right-width: 0;\n}\n\n::-webkit-scrollbar-track:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-track:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-thumb:horizontal {\n border-style: solid;\n border-color: transparent;\n}\n\n::-webkit-scrollbar-thumb {\n background-clip: padding-box;\n background-color: #ddd;\n min-height: 40px;\n padding-top: 100px;\n}\n\nbody:hover ::-webkit-scrollbar-thumb {\n background-color: #bdbdbd;\n}\n\n::-webkit-scrollbar-thumb:hover {\n background-color: #bdbdbd;\n}\n\n::-webkit-scrollbar-thumb:active {\n background-color: #989898;\n}\n\n::-webkit-scrollbar-thumb:vertical, ::-webkit-scrollbar-thumb:horizontal {\n border-width: 0;\n border-left-width: 0;\n border-right-width: 0;\n}\n\n/* roboto-100normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 100;\n src:\n local('Roboto Thin '),\n local('Roboto-Thin'),\n url(../../static/media/roboto-latin-100.987b8457.woff2) format('woff2'), \n url(../../static/media/roboto-latin-100.e9dbbe8a.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-100italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 100;\n src:\n local('Roboto Thin italic'),\n local('Roboto-Thinitalic'),\n url(../../static/media/roboto-latin-100italic.6232f43d.woff2) format('woff2'), \n url(../../static/media/roboto-latin-100italic.d704bb3d.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-300normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 300;\n src:\n local('Roboto Light '),\n local('Roboto-Light'),\n url(../../static/media/roboto-latin-300.55536c8e.woff2) format('woff2'), \n url(../../static/media/roboto-latin-300.a1471d1d.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-300italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 300;\n src:\n local('Roboto Light italic'),\n local('Roboto-Lightitalic'),\n url(../../static/media/roboto-latin-300italic.d69924b9.woff2) format('woff2'), \n url(../../static/media/roboto-latin-300italic.210a7c78.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-400normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src:\n local('Roboto Regular '),\n local('Roboto-Regular'),\n url(../../static/media/roboto-latin-400.5d4aeb4e.woff2) format('woff2'), \n url(../../static/media/roboto-latin-400.bafb105b.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-400italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 400;\n src:\n local('Roboto Regular italic'),\n local('Roboto-Regularitalic'),\n url(../../static/media/roboto-latin-400italic.d8bcbe72.woff2) format('woff2'), \n url(../../static/media/roboto-latin-400italic.9680d5a0.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-500normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 500;\n src:\n local('Roboto Medium '),\n local('Roboto-Medium'),\n url(../../static/media/roboto-latin-500.28546717.woff2) format('woff2'), \n url(../../static/media/roboto-latin-500.de8b7431.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-500italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 500;\n src:\n local('Roboto Medium italic'),\n local('Roboto-Mediumitalic'),\n url(../../static/media/roboto-latin-500italic.510dec37.woff2) format('woff2'), \n url(../../static/media/roboto-latin-500italic.ffcc050b.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-700normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src:\n local('Roboto Bold '),\n local('Roboto-Bold'),\n url(../../static/media/roboto-latin-700.037d8304.woff2) format('woff2'), \n url(../../static/media/roboto-latin-700.cf6613d1.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-700italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 700;\n src:\n local('Roboto Bold italic'),\n local('Roboto-Bolditalic'),\n url(../../static/media/roboto-latin-700italic.010c1aee.woff2) format('woff2'), \n url(../../static/media/roboto-latin-700italic.846d1890.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-900normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 900;\n src:\n local('Roboto Black '),\n local('Roboto-Black'),\n url(../../static/media/roboto-latin-900.19b7a0ad.woff2) format('woff2'), \n url(../../static/media/roboto-latin-900.8c2ade50.woff) format('woff'); /* Modern Browsers */\n}\n\n/* roboto-900italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 900;\n src:\n local('Roboto Black italic'),\n local('Roboto-Blackitalic'),\n url(../../static/media/roboto-latin-900italic.7b770d6c.woff2) format('woff2'), \n url(../../static/media/roboto-latin-900italic.bc833e72.woff) format('woff'); /* Modern Browsers */\n}\n\n\n/* additional css on top of kpop */\n\n/* Register animations to allow JavaScript hooks to react on browser auto fill. */\n@-webkit-keyframes onAutoFillStart {\n kopano { keepme: 0 /* hack needed to avoid getting removed since empty */ }\n}\n@keyframes onAutoFillStart {\n kopano { keepme: 0 /* hack needed to avoid getting removed since empty */ }\n}\n@-webkit-keyframes onAutoFillCancel {\n kopano { keepme: 0 /* hack needed to avoid getting removed since empty */ }\n}\n@keyframes onAutoFillCancel {\n kopano { keepme: 0 /* hack needed to avoid getting removed since empty */ }\n}\n\n#bg-thumb {\n /* NOTE(longsleep): This is the base64 encoded svg, inlined directly to show\n this image as early as possible.\n */\n background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgICAgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIKICAgICB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIj4KICA8ZmlsdGVyIGlkPSJibHVyIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+CiAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyMCAyMCIgZWRnZU1vZGU9ImR1cGxpY2F0ZSIgLz4KICAgIDxmZUNvbXBvbmVudFRyYW5zZmVyPgogICAgICA8ZmVGdW5jQSB0eXBlPSJkaXNjcmV0ZSIgdGFibGVWYWx1ZXM9IjEgMSIgLz4KICAgIDwvZmVDb21wb25lbnRUcmFuc2Zlcj4KICA8L2ZpbHRlcj4KICA8aW1hZ2UgZmlsdGVyPSJ1cmwoI2JsdXIpIgogICAgICAgICBocmVmPSJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUVCTEFFc0FBRC8yd0JEQUJBTERBNE1DaEFPRFE0U0VSQVRHQ2dhR0JZV0dERWpKUjBvT2pNOVBEa3pPRGRBU0Z4T1FFUlhSVGM0VUcxUlYxOWlaMmhuUGsxeGVYQmtlRnhsWjJQL3dBQUxDQUFvQUVjQkFSRUEvOFFBR2dBQUFnTUJBUUFBQUFBQUFBQUFBQUFBQXdZQ0JBVUJBUC9FQUM0UUFBSUJBd0lEQmdZREFRQUFBQUFBQUFFQ0F3QUVFUVVoRWlJeEV4UXlRVkZoQmxKeGdaR2hKR0t4MGYvYUFBZ0JBUUFBUHdCd0FCRzlSWUFkYTVoRDUwTndGNkdoaHhqZk5HamM0cWVNK2Rkd0FQV2xyNHNVeTkzR0NSdm5BSjlQY0Q4bW1kQlVaUnNLOUhFWHFNOFJSQ2FxQTFWMW02bXNyV09TSHFXeDBvK2szTWx6WkpMS2VjNXp0aXJ6TUF0THZ4S1YvakZpbzhYaUsrM3pmOHBsUTFLVG9LOGt5Ulk0Mnhtb1gxeHhRQW9WYU54a0hPOVpNbHh3S0NGSnljWUI2VURWdFR0NDdBUGVScndSbnc1NXZUMTNwZjhBaFhWTGJ2Y3NFbDNQQVo1TW9TQVYrbS9TbU9UVmJlMVdQdlZ5cERTTWlQanhZWWdkS0Zyd0o3dGd1QVMzaExEeS9xRFd5MGpyR2V6QUw0Mnowb1VVdDRVemNORUc5RVVrZnVxV29pWUJYaG1LU0tDRndDU2MvZXM2Nm52RnNJMXU1U3NoOENKeWtEM3gvbFY3bTk3UzI1U2ViYk5aZXUzdHhmTEhHNVRnVVk0ZWd6V1hwcGtTVXhxaThmRndiak85TWtTMjExRkdrMFNreHVDaThSNWQ5eithWTViU0MrRUluSjVNa0VmU2poeDh3cm9ZSHpGVXRUdXJmVDdkcnFWQXo5RkhteDlLV3RjdVpWdmxKakpNa1lQR0c2ZmFzcFpMb2xlT1ZpdWNrWW9keEkxeTNDSVRGazVKTGpIN3hSOU03TzIxTmJsdXl1Z3BKS25LZ3Q2ZzFZRjAwVXlTaTBZa1p5d2syd2ZiSHZXbERkNm5GcHk2amJEdklmWm9tUThwempiQnIvL1oiCiAgICAgICAgIHg9IjAiIHk9IjAiCiAgICAgICAgIGhlaWdodD0iMTAwJSIgd2lkdGg9IjEwMCUiLz4KPC9zdmc+Cg==\");\n}\n\n/* fancy background with two components and fade */\n\n#bg {\n background-color: white;\n}\n\n#bg > div {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n z-index: 0;\n}\n\n#loader {\n /* NOTE(longsleep): White here needed because of the background image */\n color: white;\n text-shadow: #000 0px 0px 1px;\n}\n\n/* NOTE(longsleep): This imports the inline image CSS as generated by make. */\n\n#bg-enhanced {\n opacity: 0;\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n}\n\n#bg-enhanced.enhanced {\n background-image: url(../../static/media/loginscreen-bg.cc3ef0e4.jpg);\n opacity: 1;\n}\n\n#bg-enhanced.enhanced:after {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background-image: url(../../static/media/loginscreen-bg-overlay.6f9a3fb0.svg);\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n}\n\n","::-webkit-scrollbar {\n height: 8px;\n width: 10px;\n background: transparent;\n overflow: visible;\n}\n\n::-webkit-scrollbar-corner {\n display: none;\n background: #f5f5f5;\n}\n\n::-webkit-scrollbar-button {\n display: none;\n height:0;\n width: 0;\n}\n\n::-webkit-scrollbar-button:start:decrement,::-webkit-scrollbar-button:end:increment {\n display: block;\n}\n\n::-webkit-scrollbar-button:vertical:start:increment,::-webkit-scrollbar-button:vertical:end:decrement {\n display: none;\n}\n\n::-webkit-scrollbar-track {\n -moz-background-clip: border;\n -webkit-background-clip: border;\n background-clip: padding-box;\n background-color: #f5f5f5;\n}\n\n::-webkit-scrollbar-track:vertical, ::-webkit-scrollbar-track:horizontal {\n border-left-width: 0;\n border-right-width: 0;\n}\n\n::-webkit-scrollbar-track:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-track:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-thumb:horizontal {\n border-style: solid;\n border-color: transparent;\n}\n\n::-webkit-scrollbar-thumb {\n background-clip: padding-box;\n background-color: #ddd;\n min-height: 40px;\n padding-top: 100px;\n}\n\nbody:hover ::-webkit-scrollbar-thumb {\n background-color: #bdbdbd;\n}\n\n::-webkit-scrollbar-thumb:hover {\n background-color: #bdbdbd;\n}\n\n::-webkit-scrollbar-thumb:active {\n background-color: #989898;\n}\n\n::-webkit-scrollbar-thumb:vertical, ::-webkit-scrollbar-thumb:horizontal {\n border-width: 0;\n border-left-width: 0;\n border-right-width: 0;\n}\n","/* roboto-100normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 100;\n src:\n local('Roboto Thin '),\n local('Roboto-Thin'),\n url('./files/roboto-latin-100.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-100.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-100italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 100;\n src:\n local('Roboto Thin italic'),\n local('Roboto-Thinitalic'),\n url('./files/roboto-latin-100italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-100italic.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-300normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 300;\n src:\n local('Roboto Light '),\n local('Roboto-Light'),\n url('./files/roboto-latin-300.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-300.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-300italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 300;\n src:\n local('Roboto Light italic'),\n local('Roboto-Lightitalic'),\n url('./files/roboto-latin-300italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-300italic.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-400normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src:\n local('Roboto Regular '),\n local('Roboto-Regular'),\n url('./files/roboto-latin-400.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-400.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-400italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 400;\n src:\n local('Roboto Regular italic'),\n local('Roboto-Regularitalic'),\n url('./files/roboto-latin-400italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-400italic.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-500normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 500;\n src:\n local('Roboto Medium '),\n local('Roboto-Medium'),\n url('./files/roboto-latin-500.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-500.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-500italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 500;\n src:\n local('Roboto Medium italic'),\n local('Roboto-Mediumitalic'),\n url('./files/roboto-latin-500italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-500italic.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-700normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src:\n local('Roboto Bold '),\n local('Roboto-Bold'),\n url('./files/roboto-latin-700.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-700.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-700italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 700;\n src:\n local('Roboto Bold italic'),\n local('Roboto-Bolditalic'),\n url('./files/roboto-latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-700italic.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-900normal - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: normal;\n font-display: swap;\n font-weight: 900;\n src:\n local('Roboto Black '),\n local('Roboto-Black'),\n url('./files/roboto-latin-900.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-900.woff') format('woff'); /* Modern Browsers */\n}\n\n/* roboto-900italic - latin */\n@font-face {\n font-family: 'Roboto';\n font-style: italic;\n font-display: swap;\n font-weight: 900;\n src:\n local('Roboto Black italic'),\n local('Roboto-Blackitalic'),\n url('./files/roboto-latin-900italic.woff2') format('woff2'), /* Super Modern Browsers */\n url('./files/roboto-latin-900italic.woff') format('woff'); /* Modern Browsers */\n}\n\n","/* additional css on top of kpop */\n\n/* Register animations to allow JavaScript hooks to react on browser auto fill. */\n@keyframes onAutoFillStart {\n kopano { keepme: 0 /* hack needed to avoid getting removed since empty */ }\n}\n@keyframes onAutoFillCancel {\n kopano { keepme: 0 /* hack needed to avoid getting removed since empty */ }\n}\n","#bg-thumb {\n /* NOTE(longsleep): This is the base64 encoded svg, inlined directly to show\n this image as early as possible.\n */\n background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgICAgd2lkdGg9IjE5MjAiIGhlaWdodD0iMTA4MCIKICAgICB2aWV3Qm94PSIwIDAgMTkyMCAxMDgwIj4KICA8ZmlsdGVyIGlkPSJibHVyIiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+CiAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyMCAyMCIgZWRnZU1vZGU9ImR1cGxpY2F0ZSIgLz4KICAgIDxmZUNvbXBvbmVudFRyYW5zZmVyPgogICAgICA8ZmVGdW5jQSB0eXBlPSJkaXNjcmV0ZSIgdGFibGVWYWx1ZXM9IjEgMSIgLz4KICAgIDwvZmVDb21wb25lbnRUcmFuc2Zlcj4KICA8L2ZpbHRlcj4KICA8aW1hZ2UgZmlsdGVyPSJ1cmwoI2JsdXIpIgogICAgICAgICBocmVmPSJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LC85ai80QUFRU2taSlJnQUJBUUVCTEFFc0FBRC8yd0JEQUJBTERBNE1DaEFPRFE0U0VSQVRHQ2dhR0JZV0dERWpKUjBvT2pNOVBEa3pPRGRBU0Z4T1FFUlhSVGM0VUcxUlYxOWlaMmhuUGsxeGVYQmtlRnhsWjJQL3dBQUxDQUFvQUVjQkFSRUEvOFFBR2dBQUFnTUJBUUFBQUFBQUFBQUFBQUFBQXdZQ0JBVUJBUC9FQUM0UUFBSUJBd0lEQmdZREFRQUFBQUFBQUFFQ0F3QUVFUVVoRWlJeEV4UXlRVkZoQmxKeGdaR2hKR0t4MGYvYUFBZ0JBUUFBUHdCd0FCRzlSWUFkYTVoRDUwTndGNkdoaHhqZk5HamM0cWVNK2Rkd0FQV2xyNHNVeTkzR0NSdm5BSjlQY0Q4bW1kQlVaUnNLOUhFWHFNOFJSQ2FxQTFWMW02bXNyV09TSHFXeDBvK2szTWx6WkpMS2VjNXp0aXJ6TUF0THZ4S1YvakZpbzhYaUsrM3pmOHBsUTFLVG9LOGt5Ulk0Mnhtb1gxeHhRQW9WYU54a0hPOVpNbHh3S0NGSnljWUI2VURWdFR0NDdBUGVScndSbnc1NXZUMTNwZjhBaFhWTGJ2Y3NFbDNQQVo1TW9TQVYrbS9TbU9UVmJlMVdQdlZ5cERTTWlQanhZWWdkS0Zyd0o3dGd1QVMzaExEeS9xRFd5MGpyR2V6QUw0Mnowb1VVdDRVemNORUc5RVVrZnVxV29pWUJYaG1LU0tDRndDU2MvZXM2Nm52RnNJMXU1U3NoOENKeWtEM3gvbFY3bTk3UzI1U2ViYk5aZXUzdHhmTEhHNVRnVVk0ZWd6V1hwcGtTVXhxaThmRndiak85TWtTMjExRkdrMFNreHVDaThSNWQ5eithWTViU0MrRUluSjVNa0VmU2poeDh3cm9ZSHpGVXRUdXJmVDdkcnFWQXo5RkhteDlLV3RjdVpWdmxKakpNa1lQR0c2ZmFzcFpMb2xlT1ZpdWNrWW9keEkxeTNDSVRGazVKTGpIN3hSOU03TzIxTmJsdXl1Z3BKS25LZ3Q2ZzFZRjAwVXlTaTBZa1p5d2syd2ZiSHZXbERkNm5GcHk2amJEdklmWm9tUThwempiQnIvL1oiCiAgICAgICAgIHg9IjAiIHk9IjAiCiAgICAgICAgIGhlaWdodD0iMTAwJSIgd2lkdGg9IjEwMCUiLz4KPC9zdmc+Cg==\");\n}\n","/* fancy background with two components and fade */\n\n#bg {\n background-color: white;\n}\n\n#bg > div {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n z-index: 0;\n}\n\n#loader {\n /* NOTE(longsleep): White here needed because of the background image */\n color: white;\n text-shadow: #000 0px 0px 1px;\n}\n\n/* NOTE(longsleep): This imports the inline image CSS as generated by make. */\n@import url(./images/loginscreen-bg.css);\n\n#bg-enhanced {\n opacity: 0;\n transition: opacity 1s;\n}\n\n#bg-enhanced.enhanced {\n background-image: url(./images/loginscreen-bg.jpg);\n opacity: 1;\n}\n\n#bg-enhanced.enhanced:after {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n background-image: url(./images/loginscreen-bg-overlay.svg);\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n}\n"]} \ No newline at end of file diff --git a/konnectd/assets/identifier/static/favicon.ico b/konnectd/assets/identifier/static/favicon.ico new file mode 100644 index 0000000000..8dac29ba1a Binary files /dev/null and b/konnectd/assets/identifier/static/favicon.ico differ diff --git a/konnectd/assets/identifier/static/js/4.f92d7884.chunk.js b/konnectd/assets/identifier/static/js/4.f92d7884.chunk.js new file mode 100644 index 0000000000..00941a75cf --- /dev/null +++ b/konnectd/assets/identifier/static/js/4.f92d7884.chunk.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],[,,,,,,,function(e,t){e.exports=function(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";e.exports=n(222)},function(e,t,n){e.exports=n(227)()},function(e,t){function n(){return e.exports=n=Object.assign||function(e){for(var t=1;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}},,function(e,t,n){"use strict";n.r(t);var r=n(140),o=n.n(r);n.d(t,"componentPropType",function(){return o.a});var a=n(142),i=n.n(a);n.d(t,"chainPropTypes",function(){return i.a});var u=n(143),l=n.n(u);n.d(t,"exactProp",function(){return l.a});var s=n(144),c=n.n(s);n.d(t,"getDisplayName",function(){return c.a});var f=n(145),d=n.n(f);n.d(t,"ponyfillGlobal",function(){return d.a})},function(e,t,n){"use strict";var r=n(7);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.sheetsManager=void 0;var o=r(n(15)),a=r(n(10)),i=r(n(16)),u=r(n(17)),l=r(n(18)),s=r(n(19)),c=r(n(20)),f=r(n(11)),d=r(n(8)),p=r(n(9)),h=(r(n(21)),r(n(48))),m=n(13),v=n(147),y=r(n(315)),g=r(n(146)),b=r(n(153)),x=r(n(316)),w=r(n(89)),k=r(n(96)),_=r(n(138)),S=r(n(317)),T=r(n(154)),P=(0,v.create)((0,g.default)()),O=(0,_.default)(),N=-1e11,C=new Map;t.sheetsManager=C;var E={},j=(0,w.default)({typography:{suppressWarning:!0}});m.ponyfillGlobal.__MUI_STYLES__||(m.ponyfillGlobal.__MUI_STYLES__={}),m.ponyfillGlobal.__MUI_STYLES__.withStyles||(m.ponyfillGlobal.__MUI_STYLES__.withStyles=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(n){var r,m=t.withTheme,v=void 0!==m&&m,g=t.flip,w=void 0===g?null:g,_=t.name,M=(0,f.default)(t,["withTheme","flip","name"]),L=(0,S.default)(e),A=L.themingEnabled||"string"===typeof _||v;N+=1,L.options.index=N;var R=function(e){function t(e,n){var r;(0,i.default)(this,t),(r=(0,l.default)(this,(0,s.default)(t).call(this,e,n))).jss=n[y.default.jss]||P,r.sheetsManager=C,r.unsubscribeId=null;var o=n.muiThemeProviderOptions;return o&&(o.sheetsManager&&(r.sheetsManager=o.sheetsManager),r.sheetsCache=o.sheetsCache,r.disableStylesGeneration=o.disableStylesGeneration),r.stylesCreatorSaved=L,r.sheetOptions=(0,a.default)({generateClassName:O},n[y.default.sheetOptions]),r.theme=A?k.default.initial(n)||j:E,r.attach(r.theme),r.cacheClasses={value:null,lastProp:null,lastJSS:{}},r}return(0,c.default)(t,e),(0,u.default)(t,[{key:"componentDidMount",value:function(){var e=this;A&&(this.unsubscribeId=k.default.subscribe(this.context,function(t){var n=e.theme;e.theme=t,e.attach(e.theme),e.setState({},function(){e.detach(n)})}))}},{key:"componentDidUpdate",value:function(){this.stylesCreatorSaved}},{key:"componentWillUnmount",value:function(){this.detach(this.theme),null!==this.unsubscribeId&&k.default.unsubscribe(this.context,this.unsubscribeId)}},{key:"getClasses",value:function(){if(this.disableStylesGeneration)return this.props.classes||{};var e=!1,t=x.default.get(this.sheetsManager,this.stylesCreatorSaved,this.theme);return t.sheet.classes!==this.cacheClasses.lastJSS&&(this.cacheClasses.lastJSS=t.sheet.classes,e=!0),this.props.classes!==this.cacheClasses.lastProp&&(this.cacheClasses.lastProp=this.props.classes,e=!0),e&&(this.cacheClasses.value=(0,b.default)({baseClasses:this.cacheClasses.lastJSS,newClasses:this.props.classes,Component:n})),this.cacheClasses.value}},{key:"attach",value:function(e){if(!this.disableStylesGeneration){var t=this.stylesCreatorSaved,n=x.default.get(this.sheetsManager,t,e);if(n||(n={refs:0,sheet:null},x.default.set(this.sheetsManager,t,e,n)),0===n.refs){var r;this.sheetsCache&&(r=x.default.get(this.sheetsCache,t,e)),r||((r=this.createSheet(e)).attach(),this.sheetsCache&&x.default.set(this.sheetsCache,t,e,r)),n.sheet=r;var o=this.context[y.default.sheetsRegistry];o&&o.add(r)}n.refs+=1}}},{key:"createSheet",value:function(e){var t=this.stylesCreatorSaved.create(e,_),r=_;return this.jss.createStyleSheet(t,(0,a.default)({meta:r,classNamePrefix:r,flip:"boolean"===typeof w?w:"rtl"===e.direction,link:!1},this.sheetOptions,this.stylesCreatorSaved.options,{name:_||n.displayName},M))}},{key:"detach",value:function(e){if(!this.disableStylesGeneration){var t=x.default.get(this.sheetsManager,this.stylesCreatorSaved,e);if(t.refs-=1,0===t.refs){x.default.delete(this.sheetsManager,this.stylesCreatorSaved,e),this.jss.removeStyleSheet(t.sheet);var n=this.context[y.default.sheetsRegistry];n&&n.remove(t.sheet)}}}},{key:"render",value:function(){var e=this.props,t=(e.classes,e.innerRef),r=(0,f.default)(e,["classes","innerRef"]),o=(0,T.default)({theme:this.theme,name:_,props:r});return v&&!o.theme&&(o.theme=this.theme),d.default.createElement(n,(0,a.default)({},o,{classes:this.getClasses(),ref:t}))}}]),t}(d.default.Component);return R.contextTypes=(0,a.default)((r={muiThemeProviderOptions:p.default.object},(0,o.default)(r,y.default.jss,p.default.object),(0,o.default)(r,y.default.sheetOptions,p.default.object),(0,o.default)(r,y.default.sheetsRegistry,p.default.object),r),A?k.default.contextTypes:{}),(0,h.default)(R,n),R}});t.default=function(e,t){return m.ponyfillGlobal.__MUI_STYLES__.withStyles(e,(0,a.default)({defaultTheme:j},t))}},function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t){function n(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:[];(Array.isArray(e)?e:[e]).forEach(function(e){e&&e.locale&&(i.a.__addLocaleData(e),l.a.__addLocaleData(e))})}function b(e){var t=e&&e.toLowerCase();return!(!i.a.__localeData__[t]||!l.a.__localeData__[t])}var x="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},w=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},k=function(){function e(e,t){for(var n=0;n":">","<":"<",'"':""","'":"'"},Q=/[&><"']/g;function J(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.reduce(function(t,r){return e.hasOwnProperty(r)?t[r]=e[r]:n.hasOwnProperty(r)&&(t[r]=n[r]),t},{})}function X(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).intl;h()(e,"[React Intl] Could not find required `intl` object. needs to exist in the component ancestry.")}function Z(e,t){if(e===t)return!0;if("object"!==("undefined"===typeof e?"undefined":x(e))||null===e||"object"!==("undefined"===typeof t?"undefined":x(t))||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=Object.prototype.hasOwnProperty.bind(t),a=0;a3&&void 0!==arguments[3]?arguments[3]:{},l=i.intl,s=void 0===l?{}:l,c=u.intl,f=void 0===c?{}:c;return!Z(t,r)||!Z(n,o)||!(f===s||Z(J(f,$),J(s,$)))}function te(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.intlPropName,o=void 0===r?"intl":r,a=n.withRef,i=void 0!==a&&a,u=function(t){function n(e,t){w(this,n);var r=P(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,e,t));return X(t),r}return T(n,t),k(n,[{key:"getWrappedInstance",value:function(){return h()(i,"[React Intl] To access the wrapped instance, the `{withRef: true}` option must be set when calling: `injectIntl()`"),this.refs.wrappedInstance}},{key:"render",value:function(){return d.a.createElement(e,S({},this.props,_({},o,this.context.intl),{ref:i?"wrappedInstance":null}))}}]),n}(f.Component);return u.displayName="InjectIntl("+((t=e).displayName||t.name||"Component")+")",u.contextTypes={intl:H},u.WrappedComponent=e,u}function ne(e){return e}var re=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};w(this,e);var r,o="ordinal"===n.style,a=(r=function(e){return i.a.prototype._resolveLocale(e)}(t),i.a.prototype._findPluralRuleFunction(r));this.format=function(e){return a(e,o)}},oe=Object.keys(V),ae=Object.keys(G),ie=Object.keys(q),ue=Object.keys(K),le={second:60,minute:60,hour:24,day:30,month:12};function se(e){var t=l.a.thresholds;t.second=e.second,t.minute=e.minute,t.hour=e.hour,t.day=e.day,t.month=e.month}function ce(e,t,n){var r=e&&e[t]&&e[t][n];if(r)return r}function fe(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=e.formats,i=e.messages,u=e.defaultLocale,l=e.defaultFormats,s=n.id,c=n.defaultMessage;h()(s,"[React Intl] An `id` must be provided to format a message.");var f=i&&i[s];if(!(Object.keys(r).length>0))return f||c||s;var d=void 0;if(f)try{d=t.getMessageFormat(f,o,a).format(r)}catch(p){0}else 0;if(!d&&c)try{d=t.getMessageFormat(c,u,l).format(r)}catch(p){0}return d||f||c||s}var de=Object.freeze({formatDate:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=e.formats,i=r.format,u=new Date(n),l=i&&ce(a,"date",i),s=J(r,oe,l);try{return t.getDateTimeFormat(o,s).format(u)}catch(c){}return String(u)},formatTime:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=e.formats,i=r.format,u=new Date(n),l=i&&ce(a,"time",i),s=J(r,oe,l);s.hour||s.minute||s.second||(s=S({},s,{hour:"numeric",minute:"numeric"}));try{return t.getDateTimeFormat(o,s).format(u)}catch(c){}return String(u)},formatRelative:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=e.formats,i=r.format,u=new Date(n),s=new Date(r.now),c=i&&ce(a,"relative",i),f=J(r,ie,c),d=S({},l.a.thresholds);se(le);try{return t.getRelativeFormat(o,f).format(u,{now:isFinite(s)?s:t.now()})}catch(p){}finally{se(d)}return String(u)},formatNumber:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=e.formats,i=r.format,u=i&&ce(a,"number",i),l=J(r,ae,u);try{return t.getNumberFormat(o,l).format(n)}catch(s){}return String(n)},formatPlural:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=e.locale,a=J(r,ue);try{return t.getPluralFormat(o,a).format(n)}catch(i){}return"other"},formatMessage:fe,formatHTMLMessage:function(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return fe(e,t,n,Object.keys(r).reduce(function(e,t){var n=r[t];return e[t]="string"===typeof n?(""+n).replace(Q,function(e){return Y[e]}):n,e},{}))}}),pe=Object.keys(B),he=Object.keys(W),me={formats:{},messages:{},textComponent:"span",defaultLocale:"en",defaultFormats:{}},ve=function(e){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};w(this,t);var r=P(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));h()("undefined"!==typeof Intl,"[React Intl] The `Intl` APIs must be available in the runtime, and do not appear to be built-in. An `Intl` polyfill should be loaded.\nSee: http://formatjs.io/guides/runtime-environments/");var o=n.intl,a=void 0;a=isFinite(e.initialNow)?Number(e.initialNow):o?o.now():Date.now();var u=(o||{}).formatters,s=void 0===u?{getDateTimeFormat:v()(Intl.DateTimeFormat),getNumberFormat:v()(Intl.NumberFormat),getMessageFormat:v()(i.a),getRelativeFormat:v()(l.a),getPluralFormat:v()(re)}:u;return r.state=S({},s,{now:function(){return r._didDisplay?Date.now():a}}),r}return T(t,e),k(t,[{key:"getConfig",value:function(){var e=this.context.intl,t=J(this.props,pe,e);for(var n in me)void 0===t[n]&&(t[n]=me[n]);if(!function(e){for(var t=(e||"").split("-");t.length>0;){if(b(t.join("-")))return!0;t.pop()}return!1}(t.locale)){var r=t,o=(r.locale,r.defaultLocale),a=r.defaultFormats;0,t=S({},t,{locale:o,formats:a,messages:me.messages})}return t}},{key:"getBoundFormatFns",value:function(e,t){return he.reduce(function(n,r){return n[r]=de[r].bind(null,e,t),n},{})}},{key:"getChildContext",value:function(){var e=this.getConfig(),t=this.getBoundFormatFns(e,this.state),n=this.state,r=n.now,o=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(n,["now"]);return{intl:S({},e,t,{formatters:o,now:r})}}},{key:"shouldComponentUpdate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n1?r-1:0),a=1;a0){var m=Math.floor(1099511627776*Math.random()).toString(16),v=function(){var e=0;return function(){return"ELEMENT-"+m+"-"+(e+=1)}}();d="@__"+m+"__@",p={},h={},Object.keys(u).forEach(function(e){var t=u[e];if(Object(f.isValidElement)(t)){var n=v();p[e]=d+n+d,h[n]=t}else p[e]=t})}var y=t({id:o,description:a,defaultMessage:i},p||u),g=void 0;return g=h&&Object.keys(h).length>0?y.split(d).filter(function(e){return!!e}).map(function(e){return h[e]||e}):[y],"function"===typeof c?c.apply(void 0,O(g)):f.createElement.apply(void 0,[s,null].concat(O(g)))}}]),t}(f.Component);Oe.displayName="FormattedMessage",Oe.contextTypes={intl:H},Oe.defaultProps={values:{}};var Ne=function(e){function t(e,n){w(this,t);var r=P(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));return X(n),r}return T(t,e),k(t,[{key:"shouldComponentUpdate",value:function(e){var t=this.props.values;if(!Z(e.values,t))return!0;for(var n=S({},e,{values:t}),r=arguments.length,o=Array(r>1?r-1:0),a=1;a=0||(o[n]=e[n]);return o}var p=n(48),h=n.n(p),m=n(133),v=n.n(m),y=n(69),g=null,b={notify:function(){}};var x=function(){function e(e,t,n){this.store=e,this.parentSub=t,this.onStateChange=n,this.unsubscribe=null,this.listeners=b}var t=e.prototype;return t.addNestedSub=function(e){return this.trySubscribe(),this.listeners.subscribe(e)},t.notifyNestedSubs=function(){this.listeners.notify()},t.isSubscribed=function(){return Boolean(this.unsubscribe)},t.trySubscribe=function(){this.unsubscribe||(this.unsubscribe=this.parentSub?this.parentSub.addNestedSub(this.onStateChange):this.store.subscribe(this.onStateChange),this.listeners=function(){var e=[],t=[];return{clear:function(){t=g,e=g},notify:function(){for(var n=e=t,r=0;r, or explicitly pass "'+N+'" as a prop to "'+a+'".'),r.initSelector(),r.initSubscription(),r}r(u,n);var l=u.prototype;return l.getChildContext=function(){var e,t=this.propsMode?null:this.subscription;return(e={})[M]=t||this.context[M],e},l.componentDidMount=function(){P&&(this.subscription.trySubscribe(),this.selector.run(this.props),this.selector.shouldComponentUpdate&&this.forceUpdate())},l.componentWillReceiveProps=function(e){this.selector.run(e)},l.shouldComponentUpdate=function(){return this.selector.shouldComponentUpdate},l.componentWillUnmount=function(){this.subscription&&this.subscription.tryUnsubscribe(),this.subscription=null,this.notifyNestedSubs=_,this.store=null,this.selector.run=_,this.selector.shouldComponentUpdate=!1},l.getWrappedInstance=function(){return v()(E,"To access the wrapped instance, you need to specify { withRef: true } in the options argument of the "+g+"() call."),this.wrappedInstance},l.setWrappedInstance=function(e){this.wrappedInstance=e},l.initSelector=function(){var t=e(this.store.dispatch,i);this.selector=function(e,t){var n={run:function(r){try{var o=e(t.getState(),r);(o!==n.props||n.error)&&(n.shouldComponentUpdate=!0,n.props=o,n.error=null)}catch(a){n.shouldComponentUpdate=!0,n.error=a}}};return n}(t,this.store),this.selector.run(this.props)},l.initSubscription=function(){if(P){var e=(this.propsMode?this.props:this.context)[M];this.subscription=new x(this.store,e,this.onStateChange.bind(this)),this.notifyNestedSubs=this.subscription.notifyNestedSubs.bind(this.subscription)}},l.onStateChange=function(){this.selector.run(this.props),this.selector.shouldComponentUpdate?(this.componentDidUpdate=this.notifyNestedSubsOnComponentDidUpdate,this.setState(k)):this.notifyNestedSubs()},l.notifyNestedSubsOnComponentDidUpdate=function(){this.componentDidUpdate=void 0,this.notifyNestedSubs()},l.isSubscribed=function(){return Boolean(this.subscription)&&this.subscription.isSubscribed()},l.addExtraProps=function(e){if(!E&&!S&&(!this.propsMode||!this.subscription))return e;var t=f({},e);return E&&(t.ref=this.setWrappedInstance),S&&(t[S]=this.renderCount++),this.propsMode&&this.subscription&&(t[M]=this.subscription),t},l.render=function(){var e=this.selector;if(e.shouldComponentUpdate=!1,e.error)throw e.error;return Object(o.createElement)(t,this.addExtraProps(e.props))},u}(o.Component);return u.WrappedComponent=t,u.displayName=a,u.childContextTypes=R,u.contextTypes=A,u.propTypes=A,h()(u,t)}}var T=Object.prototype.hasOwnProperty;function P(e,t){return e===t?0!==e||0!==t||1/e===1/t:e!==e&&t!==t}function O(e,t){if(P(e,t))return!0;if("object"!==typeof e||null===e||"object"!==typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=0;o=0;r--){var o=t[r](e);if(o)return o}return function(t,r){throw new Error("Invalid value of type "+typeof e+" for "+n+" argument when connecting component "+r.wrappedComponentName+".")}}function z(e,t){return e===t}var B=function(e){var t=void 0===e?{}:e,n=t.connectHOC,r=void 0===n?S:n,o=t.mapStateToPropsFactories,a=void 0===o?L:o,i=t.mapDispatchToPropsFactories,u=void 0===i?M:i,l=t.mergePropsFactories,s=void 0===l?R:l,c=t.selectorFactory,p=void 0===c?D:c;return function(e,t,n,o){void 0===o&&(o={});var i=o,l=i.pure,c=void 0===l||l,h=i.areStatesEqual,m=void 0===h?z:h,v=i.areOwnPropsEqual,y=void 0===v?O:v,g=i.areStatePropsEqual,b=void 0===g?O:g,x=i.areMergedPropsEqual,w=void 0===x?O:x,k=d(i,["pure","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","areMergedPropsEqual"]),_=U(e,a,"mapStateToProps"),S=U(t,u,"mapDispatchToProps"),T=U(n,s,"mergeProps");return r(p,f({methodName:"connect",getDisplayName:function(e){return"Connect("+e+")"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:_,initMapDispatchToProps:S,initMergeProps:T,pure:c,areStatesEqual:m,areOwnPropsEqual:y,areStatePropsEqual:b,areMergedPropsEqual:w},k))}}();n.d(t,"a",function(){return s}),n.d(t,"b",function(){return B})},,function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"===typeof window&&(n=window)}e.exports=n},function(e,t){e.exports=function(e){return"object"===typeof e?null!==e:"function"===typeof e}},function(e,t,n){e.exports=!n(52)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},,function(e,t,n){var r=n(34),o=n(60);e.exports=n(41)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},,,,function(e,t,n){"use strict";var r=n(69),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},u={};function l(e){return r.isMemo(e)?i:u[e.$$typeof]||o}u[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0};var s=Object.defineProperty,c=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!==typeof n){if(h){var o=p(n);o&&o!==h&&e(t,o,r)}var i=c(n);f&&(i=i.concat(f(n)));for(var u=l(t),m=l(n),v=0;v=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},,,,function(e,t,n){"use strict";e.exports=n(229)},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,"a",function(){return r})},function(e,t,n){e.exports=function(){"use strict";var e=function(e){return function(e){return!!e&&"object"===typeof e}(e)&&!function(e){var n=Object.prototype.toString.call(e);return"[object RegExp]"===n||"[object Date]"===n||function(e){return e.$$typeof===t}(e)}(e)},t="function"===typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function n(e,t){return!1!==t.clone&&t.isMergeableObject(e)?a((n=e,Array.isArray(n)?[]:{}),e,t):e;var n}function r(e,t,r){return e.concat(t).map(function(e){return n(e,r)})}function o(e,t,r){var o={};return r.isMergeableObject(e)&&Object.keys(e).forEach(function(t){o[t]=n(e[t],r)}),Object.keys(t).forEach(function(i){r.isMergeableObject(t[i])&&e[i]?o[i]=function(e,t){if(!t.customMerge)return a;var n=t.customMerge(e);return"function"===typeof n?n:a}(i,r)(e[i],t[i],r):o[i]=n(t[i],r)}),o}function a(t,a,i){(i=i||{}).arrayMerge=i.arrayMerge||r,i.isMergeableObject=i.isMergeableObject||e;var u=Array.isArray(a),l=Array.isArray(t),s=u===l;return s?u?i.arrayMerge(t,a,i):o(t,a,i):n(a,i)}return a.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(e,n){return a(e,n,t)},{})},a}()},function(e,t,n){"use strict";var r=n(7);Object.defineProperty(t,"__esModule",{value:!0}),t.convertHexToRGB=a,t.rgbToHex=function(e){if(0===e.indexOf("#"))return e;var t=i(e).values;return t=t.map(function(e){return function(e){var t=e.toString(16);return 1===t.length?"0".concat(t):t}(e)}),"#".concat(t.join(""))},t.decomposeColor=i,t.recomposeColor=u,t.getContrastRatio=function(e,t){var n=l(e),r=l(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)},t.getLuminance=l,t.emphasize=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.15;return l(e)>.5?s(e,t):c(e,t)},t.fade=function(e,t){if(!e)return e;e=i(e),t=o(t),("rgb"===e.type||"hsl"===e.type)&&(e.type+="a");return e.values[3]=t,u(e)},t.darken=s,t.lighten=c;r(n(21));function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return en?n:e}function a(e){e=e.substr(1);var t=new RegExp(".{1,".concat(e.length/3,"}"),"g"),n=e.match(t);return n&&1===n[0].length&&(n=n.map(function(e){return e+e})),n?"rgb(".concat(n.map(function(e){return parseInt(e,16)}).join(", "),")"):""}function i(e){if("#"===e.charAt(0))return i(a(e));var t=e.indexOf("("),n=e.substring(0,t),r=e.substring(t+1,e.length-1).split(",");return{type:n,values:r=r.map(function(e){return parseFloat(e)})}}function u(e){var t=e.type,n=e.values;return-1!==t.indexOf("rgb")&&(n=n.map(function(e,t){return t<3?parseInt(e,10):e})),-1!==t.indexOf("hsl")&&(n[1]="".concat(n[1],"%"),n[2]="".concat(n[2],"%")),"".concat(e.type,"(").concat(n.join(", "),")")}function l(e){var t=i(e);if(-1!==t.type.indexOf("rgb")){var n=t.values.map(function(e){return(e/=255)<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4)});return Number((.2126*n[0]+.7152*n[1]+.0722*n[2]).toFixed(3))}return t.values[2]/100}function s(e,t){if(!e)return e;if(e=i(e),t=o(t),-1!==e.type.indexOf("hsl"))e.values[2]*=1-t;else if(-1!==e.type.indexOf("rgb"))for(var n=0;n<3;n+=1)e.values[n]*=1-t;return u(e)}function c(e,t){if(!e)return e;if(e=i(e),t=o(t),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*t;else if(-1!==e.type.indexOf("rgb"))for(var n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;return u(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!Array.isArray(e))return e;var n="";if(Array.isArray(e[0]))for(var o=0;o0&&void 0!==arguments[0]?arguments[0]:"unnamed",t=arguments[1],n=arguments[2],i=n.jss,u=(0,a.default)(t),l=i.plugins.onCreateRule(e,u,n);if(l)return l;"@"===e[0]&&(0,r.default)(!1,"[JSS] Unknown at-rule %s",e);return new o.default(e,u,n)};var r=i(n(49)),o=i(n(50)),a=i(n(284));function i(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){"use strict";n.r(t),n.d(t,"isBrowser",function(){return o});var r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o="object"===("undefined"===typeof window?"undefined":r(window))&&"object"===("undefined"===typeof document?"undefined":r(document))&&9===document.nodeType;t.default=o},function(e,t){function n(e){return(n="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function r(t){return"function"===typeof Symbol&&"symbol"===n(Symbol.iterator)?e.exports=r=function(e){return n(e)}:e.exports=r=function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":n(e)},r(t)}e.exports=r},function(e,t,n){"use strict";var r=n(7);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o,a=r(n(10)),i=r(n(11)),u=r(n(16)),l=r(n(17)),s=r(n(18)),c=r(n(19)),f=r(n(20)),d=r(n(8)),p=(r(n(9)),r(n(48))),h=n(13),m=r(n(89)),v=r(n(96));h.ponyfillGlobal.__MUI_STYLES__||(h.ponyfillGlobal.__MUI_STYLES__={}),h.ponyfillGlobal.__MUI_STYLES__.withTheme||(h.ponyfillGlobal.__MUI_STYLES__.withTheme=function(){return function(e){var t=function(t){function n(e,t){var r;return(0,u.default)(this,n),(r=(0,s.default)(this,(0,c.default)(n).call(this))).state={theme:v.default.initial(t)||o||(o=(0,m.default)({typography:{suppressWarning:!0}}))},r}return(0,f.default)(n,t),(0,l.default)(n,[{key:"componentDidMount",value:function(){var e=this;this.unsubscribeId=v.default.subscribe(this.context,function(t){e.setState({theme:t})})}},{key:"componentWillUnmount",value:function(){null!==this.unsubscribeId&&v.default.unsubscribe(this.context,this.unsubscribeId)}},{key:"render",value:function(){var t=this.props,n=t.innerRef,r=(0,i.default)(t,["innerRef"]);return d.default.createElement(e,(0,a.default)({theme:this.state.theme,ref:n},r))}}]),n}(d.default.Component);return t.contextTypes=v.default.contextTypes,(0,p.default)(t,e),t}});var y=h.ponyfillGlobal.__MUI_STYLES__.withTheme;t.default=y},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){var r=n(34).f,o=n(44),a=n(24)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,a)&&r(e,a,{configurable:!0,value:t})}},function(e,t,n){n(340);for(var r=n(23),o=n(43),a=n(54),i=n(24)("toStringTag"),u="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;l0&&void 0!==arguments[0]?arguments[0]:{},t=e.breakpoints,n=void 0===t?{}:t,r=e.mixins,y=void 0===r?{}:r,g=e.palette,b=void 0===g?{}:g,x=e.shadows,w=e.spacing,k=void 0===w?{}:w,_=e.typography,S=void 0===_?{}:_,T=(0,a.default)(e,["breakpoints","mixins","palette","shadows","spacing","typography"]),P=(0,c.default)(b),O=(0,l.default)(n),N=(0,o.default)({},h.default,k);return(0,o.default)({breakpoints:O,direction:"ltr",mixins:(0,s.default)(O,N,y),overrides:{},palette:P,props:{},shadows:x||d.default,typography:(0,f.default)(P,S)},(0,i.default)({shape:p.default,spacing:N,transitions:m.default,zIndex:v.default},T,{isMergeableObject:u.default}))};t.default=y},function(e,t,n){"use strict";var r=n(7);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.values,n=void 0===t?{xs:0,sm:600,md:960,lg:1280,xl:1920}:t,r=e.unit,u=void 0===r?"px":r,l=e.step,s=void 0===l?5:l,c=(0,a.default)(e,["values","unit","step"]);function f(e){var t="number"===typeof n[e]?n[e]:e;return"@media (min-width:".concat(t).concat(u,")")}function d(e,t){var r=i.indexOf(t)+1;return r===i.length?f(e):"@media (min-width:".concat(n[e]).concat(u,") and ")+"(max-width:".concat(n[i[r]]-s/100).concat(u,")")}return(0,o.default)({keys:i,values:n,up:f,down:function(e){var t=i.indexOf(e)+1,r=n[i[t]];if(t===i.length)return f("xs");return"@media (max-width:".concat(("number"===typeof r&&t>0?r:e)-s/100).concat(u,")")},between:d,only:function(e){return d(e,e)},width:function(e){return n[e]}},c)},t.keys=void 0;var o=r(n(10)),a=r(n(11)),i=["xs","sm","md","lg","xl"];t.keys=i},function(e,t,n){"use strict";var r=n(7);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.isNumber=t.isString=t.formatMs=t.duration=t.easing=void 0;var o=r(n(11)),a=(r(n(21)),{easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"});t.easing=a;var i={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};t.duration=i;var u=function(e){return"".concat(Math.round(e),"ms")};t.formatMs=u;t.isString=function(e){return"string"===typeof e};t.isNumber=function(e){return!isNaN(parseFloat(e))};var l={easing:a,duration:i,create:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["all"],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.duration,r=void 0===n?i.standard:n,l=t.easing,s=void 0===l?a.easeInOut:l,c=t.delay,f=void 0===c?0:c;(0,o.default)(t,["duration","easing","delay"]);return(Array.isArray(e)?e:[e]).map(function(e){return"".concat(e," ").concat("string"===typeof r?r:u(r)," ").concat(s," ").concat("string"===typeof f?f:u(f))}).join(",")},getAutoHeightDuration:function(e){if(!e)return 0;var t=e/36;return Math.round(10*(4+15*Math.pow(t,.25)+t/5))}};t.default=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r="";if(!t)return r;var o=n.indent,u=void 0===o?0:o,l=t.fallbacks;if(u++,l)if(Array.isArray(l))for(var s=0;s0?o(r(e),9007199254740991):0}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(103)("keys"),o=n(79);e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t,n){var r=n(22),o=n(23),a=o["__core-js_shared__"]||(o["__core-js_shared__"]={});(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:n(63)?"pure":"global",copyright:"\xa9 2019 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t,n){t.f=n(24)},function(e,t,n){var r=n(23),o=n(22),a=n(63),i=n(106),u=n(34).f;e.exports=function(e){var t=o.Symbol||(o.Symbol=a?{}:r.Symbol||{});"_"==e.charAt(0)||e in t||u(t,e,{value:i.f(e)})}},function(e,t,n){var r=n(31),o=n(330),a=n(104),i=n(102)("IE_PROTO"),u=function(){},l=function(){var e,t=n(97)("iframe"),r=a.length;for(t.style.display="none",n(162).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("