Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: martinroob/tiny-translator
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.4
Choose a base ref
...
head repository: martinroob/tiny-translator
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Loading
Showing with 5,404 additions and 4,131 deletions.
  1. +9 −4 .angular-cli.json
  2. +5 −2 .gitignore
  3. +96 −0 Changelog.md
  4. +8 −86 README.md
  5. +22 −0 cert.pem
  6. +1 −1 e2e/app.po.ts
  7. +2 −0 e2e/tsconfig.e2e.json
  8. +2 −13 karma.conf.js
  9. +28 −0 key.pem
  10. +54 −36 package.json
  11. +1 −3 protractor.conf.js
  12. +26 −4 src/app/active-project.guard.spec.ts
  13. +34 −33 src/app/app-material.module.ts
  14. +44 −28 src/app/app.component.html
  15. +5 −3 src/app/app.component.scss
  16. +3 −3 src/app/app.component.spec.ts
  17. +39 −4 src/app/app.component.ts
  18. +8 −3 src/app/app.config.ts
  19. +22 −7 src/app/app.module.ts
  20. +5 −1 src/app/app.routing.ts
  21. 0 src/app/auto-translate-summary-page/auto-translate-summary-page.component.css
  22. +48 −0 src/app/auto-translate-summary-page/auto-translate-summary-page.component.html
  23. +28 −0 src/app/auto-translate-summary-page/auto-translate-summary-page.component.spec.ts
  24. +88 −0 src/app/auto-translate-summary-page/auto-translate-summary-page.component.ts
  25. +4 −0 src/app/configure-auto-translate-page/configure-auto-translate-page.component.css
  26. +18 −18 src/app/configure-auto-translate-page/configure-auto-translate-page.component.html
  27. 0 src/app/filter-page/filter-page.component.css
  28. +5 −0 src/app/filter-page/filter-page.component.html
  29. +28 −0 src/app/filter-page/filter-page.component.spec.ts
  30. +43 −0 src/app/filter-page/filter-page.component.ts
  31. 0 src/app/filter-status/filter-status.component.css
  32. +16 −0 src/app/filter-status/filter-status.component.html
  33. +28 −0 src/app/filter-status/filter-status.component.spec.ts
  34. +34 −0 src/app/filter-status/filter-status.component.ts
  35. +1 −1 src/app/home-page/home-page.component.html
  36. +1 −1 src/app/language/language.component.ts
  37. +2 −1 src/app/model/asynchronous-file-reader.service.ts
  38. +20 −2 src/app/model/auto-translate-google.service.spec.ts
  39. +35 −14 src/app/model/auto-translate-google.service.ts
  40. +31 −1 src/app/model/auto-translate-result.ts
  41. +23 −12 src/app/model/auto-translate-summary-report.ts
  42. +46 −2 src/app/model/backend-local-storage.service.ts
  43. +33 −1 src/app/model/backend-service-api.ts
  44. +0 −1 src/app/model/downloader.service.ts
  45. +28 −0 src/app/model/filters/translation-unit-filter-autotranslated-failed.ts
  46. +28 −0 src/app/model/filters/translation-unit-filter-autotranslated-ignored.ts
  47. +25 −0 src/app/model/filters/translation-unit-filter-autotranslated.ts
  48. +4 −0 src/app/model/filters/translation-unit-filter-substring.ts
  49. +15 −0 src/app/model/filters/translation-unit-filter.service.spec.ts
  50. +62 −0 src/app/model/filters/translation-unit-filter.service.ts
  51. +62 −14 src/app/model/tiny-translator.service.ts
  52. +21 −7 src/app/model/translation-file-view.ts
  53. +6 −7 src/app/model/translation-file.ts
  54. +18 −0 src/app/model/translation-project.ts
  55. +4 −4 src/app/model/translation-unit.ts
  56. +3 −0 src/app/normalized-message-input/normalized-message-input.component.css
  57. +14 −11 src/app/normalized-message-input/normalized-message-input.component.html
  58. +16 −1 src/app/normalized-message-input/normalized-message-input.component.ts
  59. +19 −28 src/app/project-editor/project-editor.component.html
  60. +1 −1 src/app/project-editor/project-editor.component.ts
  61. +26 −28 src/app/project-starter/project-starter.component.html
  62. +4 −4 src/app/project-status/project-status.component.html
  63. +12 −12 src/app/project/project.component.html
  64. +17 −0 src/app/rxjs-operators.ts
  65. +7 −0 src/app/translate-page/translate-page.component.css
  66. +9 −5 src/app/translate-page/translate-page.component.html
  67. +29 −7 src/app/translate-page/translate-page.component.ts
  68. +31 −25 src/app/translate-unit-list/translate-unit-list.component.html
  69. +4 −3 src/app/translate-unit-list/translate-unit-list.component.scss
  70. +2 −0 src/app/translate-unit-list/translate-unit-list.component.spec.ts
  71. +48 −16 src/app/translate-unit-list/translate-unit-list.component.ts
  72. +8 −8 src/app/translate-unit-warning-confirm-dialog/translate-unit-warning-confirm-dialog.component.html
  73. +7 −7 ...app/translate-unit-warning-confirm-dialog/translate-unit-warning-confirm-dialog.component.spec.ts
  74. +2 −2 src/app/translate-unit-warning-confirm-dialog/translate-unit-warning-confirm-dialog.component.ts
  75. +30 −10 src/app/translate-unit/translate-unit.component.css
  76. +74 −52 src/app/translate-unit/translate-unit.component.html
  77. +2 −2 src/app/translate-unit/translate-unit.component.spec.ts
  78. +57 −21 src/app/translate-unit/translate-unit.component.ts
  79. +3 −2 src/app/translation-file-status/translation-file-status.component.css
  80. +6 −6 src/app/translation-file-status/translation-file-status.component.html
  81. 0 src/app/update-available/update-available.component.css
  82. +3 −0 src/app/update-available/update-available.component.html
  83. +25 −0 src/app/update-available/update-available.component.spec.ts
  84. +23 −0 src/app/update-available/update-available.component.ts
  85. BIN src/assets/icons/launcher-icon-1x.png
  86. BIN src/assets/icons/launcher-icon-2x.png
  87. BIN src/assets/icons/launcher-icon-4x.png
  88. +13 −0 src/environments/environment.failtests.ts
  89. +5 −1 src/environments/environment.prod.ts
  90. +5 −1 src/environments/environment.ts
  91. +335 −390 src/i18n/messages.de.xlf
  92. +330 −385 src/i18n/messages.en.xlf
  93. +373 −569 src/i18n/messages.fr-google.xlf
  94. +373 −569 src/i18n/messages.ru-google.xlf
  95. +514 −406 src/i18n/messages.xlf
  96. +3 −2 src/index.html
  97. +2 −1 src/main.ts
  98. +22 −0 src/manifest.json
  99. +40 −0 src/ngsw-config.json
  100. +12 −4 src/polyfills.ts
  101. +6 −2 src/styles.scss
  102. +2 −2 src/test.ts
  103. +1 −2 src/tsconfig.app.json
  104. +3 −2 src/tsconfig.spec.json
  105. +5 −0 src/typings.d.ts
  106. +1 −1 tsconfig.json
  107. +35 −10 tslint.json
  108. +1,623 −1,216 yarn.lock
13 changes: 9 additions & 4 deletions .angular-cli.json
Original file line number Diff line number Diff line change
@@ -9,7 +9,8 @@
"outDir": "dist",
"assets": [
"assets",
"favicon.ico"
"favicon.ico",
"manifest.json"
],
"index": "index.html",
"main": "main.ts",
@@ -26,6 +27,7 @@
"environments": {
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts",
"failtests": "environments/environment.failtests.ts",
"secret": "environments/environment.secret.ts"
}
}
@@ -37,13 +39,16 @@
},
"lint": [
{
"project": "src/tsconfig.app.json"
"project": "src/tsconfig.app.json",
"exclude": "**/node_modules/**"
},
{
"project": "src/tsconfig.spec.json"
"project": "src/tsconfig.spec.json",
"exclude": "**/node_modules/**"
},
{
"project": "e2e/tsconfig.e2e.json"
"project": "e2e/tsconfig.e2e.json",
"exclude": "**/node_modules/**"
}
],
"test": {
7 changes: 5 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -3,6 +3,8 @@
# compiled output
/dist
/tmp
/out-tsc
/buildtest

# dependencies
/node_modules
@@ -26,17 +28,18 @@
# misc
/.sass-cache
/connect.lock
/coverage/*
/coverage
/libpeerconnection.log
npm-debug.log
testem.log
/typings
yarn-error.log

# e2e
/e2e/*.js
/e2e/*.map

#System Files
# System Files
.DS_Store
Thumbs.db

96 changes: 96 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,99 @@
<a name="0.13.0"></a>
# 0.13.0 (2018-11-26)

### Features

* **Application** Technology update to Angular 7, no functionality changes.

* **internal** Sources moved to monorepo [ngx-i18nsupport](https://github.com/martinroob/ngx-i18nsupport)

<a name="0.12.0"></a>
# [0.12.0](https://github.com/martinroob/tiny-translator/compare/v0.12.0...v0.11.0) (2017-12-08)

### Bugfixes

* **Application** deleted test code that was forgotten in v.11 and shows a snackbar "new version" at startup.

<a name="0.11.0"></a>
# [0.11.0](https://github.com/martinroob/tiny-translator/compare/v0.11.0...v0.10.0) (2017-12-08)

### Features

* **Application** (experimental) Introduce service worker to cache application for offline mode ([#47](https://github.com/martinroob/tiny-translator/issues/47)).
The Application can now be used offline (loaded from Browser cache then).

* **internal** replace deprecated Http by new Angular HttpClient ([#46](https://github.com/martinroob/tiny-translator/issues/46)).

<a name="0.10.0"></a>
# [0.10.0](https://github.com/martinroob/tiny-translator/compare/v0.10.0...v0.9.0) (2017-11-24)

### Features

* **internal** Technology update to Angular 5.0 and Material RC 1 ([#44](https://github.com/martinroob/tiny-translator/issues/44)).

### Bugfixes

* **internal** fixed: Cannot find module 'rxjs/observable' ([#43](https://github.com/martinroob/tiny-translator/issues/43)).

<a name="0.9.0"></a>
# [0.9.0](https://github.com/martinroob/tiny-translator/compare/v0.9.0...v0.8.0) (2017-09-15)

### Features

* **GUI** Added keyboard shortcut Ctrl Enter for the next button. ([#40](https://github.com/martinroob/tiny-translator/issues/40)).
This was a nice contribution by [quanterion](https://github.com/quanterion).

<a name="0.8.0"></a>
# [0.8.0](https://github.com/martinroob/tiny-translator/compare/v0.8.0...v0.7.0) (2017-09-12)

### Bug Fixes

* **GUI** Google Translate Button should be disabled when there is no target language ([#37](https://github.com/martinroob/tiny-translator/issues/37)).

### Features

* **GUI** Added an undo button to translate-unit. ([#38](https://github.com/martinroob/tiny-translator/issues/38)).

* **GUI** Upgrade to material beta 10. ([#35](https://github.com/martinroob/tiny-translator/issues/35)).
Upgrade to Angular CLI 1.3 too.

<a name="0.7.0"></a>
# [0.7.0](https://github.com/martinroob/tiny-translator/compare/v0.7.0...v0.6.0) (2017-08-25)

### Bug Fixes

* **GUI** Layout improvements ([#29](https://github.com/martinroob/tiny-translator/issues/29)).
The changes for supporting small phone size displays introduced some nasty effects on larger displays.
This should be fixed now.

### Features

* **GUI** Added a button for reviewers to mark translation as not ok. ([#31](https://github.com/martinroob/tiny-translator/issues/31)).

<a name="0.6.0"></a>
# [0.6.0](https://github.com/martinroob/tiny-translator/compare/v0.6.0...v0.5.0) (2017-08-18)

### Bug Fixes

* **XLIFF 2.0 format** handle ICU equiv in XLIFF 2.0 ([#27](https://github.com/martinroob/tiny-translator/issues/27)).

### Features

* **GUI** Support Phone Size Display ([#14](https://github.com/martinroob/tiny-translator/issues/14)).

<a name="0.5.0"></a>
# [0.5.0](https://github.com/martinroob/tiny-translator/compare/v0.5.0...v0.4.0) (2017-07-13)

### Bug Fixes

* **GUI** No flag shown for language with region code like `fr-google`. Now when region code is longer than 2 chars it cannot be a country, so the language will be used (`fr` in example) ([#23](https://github.com/martinroob/tiny-translator/issues/23)).

### Features

* **GUI** TinyTranslator now stores current project and current unit in local storage ([#25](https://github.com/martinroob/tiny-translator/issues/25)).

* **auto translation** Auto translation now shows a summary page after run. You can then filter for auto translated units. ([#24](https://github.com/martinroob/tiny-translator/issues/24)).

<a name="0.4.0"></a>
# [0.4.0](https://github.com/martinroob/tiny-translator/compare/v0.4.0...v0.3.0) (2017-07-10)

94 changes: 8 additions & 86 deletions README.md
Original file line number Diff line number Diff line change
@@ -4,93 +4,15 @@
A tiny little webapp to quick and dirty translate XLIFF 2.0, XLIFF 1.2 or xmb/xtb files.
``

Did you start experimenting with the new `Angular 2` (or even 4) version?
This project has moved to the monorepo [ngx-i18nsupport](https://github.com/martinroob/ngx-i18nsupport).

And did you start experimenting with the new `i18n` features of Angular 2?
Here can find the actual [Tiny-Translator README](https://github.com/martinroob/ngx-i18nsupport/tree/master/projects/tiny-translator/README.md).

Then maybe this application is a tool for you.
The ready to use application can be found on the following GitHubPages:
* [Tiny Translator (English)](https://martinroob.github.io/tiny-translator/en)
* [Tiny Translator (Deutsch)](https://martinroob.github.io/tiny-translator/de)
* [Tiny Translator (Google traduit Français)](https://martinroob.github.io/tiny-translator/fr-google)
* [Tiny Translator (Русский Google переведен)](https://martinroob.github.io/tiny-translator/ru-google)

For the impatient: Start it here [Tiny Translator (English)](https://martinroob.github.io/tiny-translator/en) or [Tiny Translator (Deutsch)](https://martinroob.github.io/tiny-translator/de)

This application can be used to work on the translation of all file formats Angular can use.
These are `XLIFF 2.0`, `XLIFF 1.2` or `XMB/XTB` files.

[[XLIFF 1.2]]((http://docs.oasis-open.org/xliff/xliff-core/xliff-core.html)) is an OASIS standard
and stands for <strong>XML Localization Interchange File Format</strong>.
So, as the name expresses, it is designed as a format to exchange localization informations
between different applications.
The standard is quite old, the specification of version 1.2 is from 2007.
And if you start to google for free tools, that support the format,
you won´t find too many of them and they are all very old and seam to be a little bit out of date.

The Angular team decided, when they started working on i18n support for Angular 2, to use this format as the default for Angular.
The Angular i18n Cookbook
[Internationalization (i18n)](https://angular.io/docs/ts/latest/cookbook/i18n.html)
describes in detail, how to markup your templates and how to extract the i18n information using `ng-xi18n` (or Angular CLIs `ng xi18`).

You end up with a bunch of `.xlf` files that you shall send to a translator "<i>who fills in the translations using one of the many XLIFF file editors</i>". (citation from the cookbook).

<strong>TinyTranslator</strong> is just another one of these many editors.
It is a Web Application written with Angular (v4.1).
In short, you can open a `.xlf` file with it, it shows you all untranslated messages and lets you type in the translations.
When finished, you can reexport the file and use it in your application to generate a translated version of your app.

It is not intended as a tool for professional translators, that earn their money with doing translations.

The intendend user is a developer, who just has to quickly translate his application.

And, there is also a limitation to be mentioned:
>Tiny Translator does not understand everything, that is mentioned in the XLIFF 1.2 specification or in the XLIFF 2.0 specification.
So it is not conformant to the standard.
It can work with every xlf that is generated by ng-xi18n so far. Any features that are not used by ng-xi18n are not supported.

# Usage
## User Manual
The [User Manual](https://github.com/martinroob/tiny-translator/wiki/User-Manual) is part of the wiki pages. It contains some screenshots and explains how to work with the program.
Have a look at it.
## Preinstalled version on Github Pages
There is a preinstalled version on githubpages.
Just start it by clicking on
- [Tiny Translator (English)](https://martinroob.github.io/tiny-translator/en)
- or [Tiny Translator (Deutsch)](https://martinroob.github.io/tiny-translator/de)
- or [Tiny Translator (Francaise, auto translated)](https://martinroob.github.io/tiny-translator/fr-google)
- or [Tiny Translator (Russian, auto translated)](https://martinroob.github.io/tiny-translator/ru-google)

## Ready to run Docker image
There are docker images available on [Docker Cloud](https://cloud.docker.com/swarm/martinroob/repository/docker/martinroob/tiny-translator/general).

It contains a running `nginx` with the app available on port 80.

To run it, e.g. on local port 4000 (your choice)
* install docker on your machine
* run `docker run -d -it --rm -p4000:80 martinroob/tiny-translator:latest`
* Open in browser [http://localhost:4000/tiny-translator/]().

## Local version
Alternatively you can start a local version

- install `npm` or (if you prefer it) `yarn`
- install [Angular CLI](https://github.com/angular/angular-cli) globally
- `npm i -g @angular/cli@latest`
- git clone this repository
- fill up node_modules
- `npm install`
- or `yarn`
- Start Application
- `ng start-en`
- or `ng start-de` for German version
- Open it in a browser:
- Navigate to [http://localhost:4200/](http://localhost:4200/)

# Developer Hints
##Angular CLI
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.0.3.

## Development server

Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.

## Build

Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.
Bugs can be reported using the [issue tracker of this repo](https://github.com/martinroob/tiny-translator/issues) or using the [issue tracker of the new monorepo](https://github.com/martinroob/ngx-i18nsupport/issues).

22 changes: 22 additions & 0 deletions cert.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
-----BEGIN CERTIFICATE-----
MIIDtTCCAp2gAwIBAgIJANOeXzmCFK3iMA0GCSqGSIb3DQEBCwUAMHExCzAJBgNV
BAYTAkRFMRgwFgYDVQQIDA9SaGVpbmxhbmQtUGZhbHoxDjAMBgNVBAcMBVVua2Vs
MREwDwYDVQQKDAhSb29ic29mdDEMMAoGA1UECwwDZGV2MRcwFQYDVQQDDA5wOC5y
b29ic29mdC5kZTAeFw0xNzEyMDMxMTQzNTNaFw0yNzEyMDExMTQzNTNaMHExCzAJ
BgNVBAYTAkRFMRgwFgYDVQQIDA9SaGVpbmxhbmQtUGZhbHoxDjAMBgNVBAcMBVVu
a2VsMREwDwYDVQQKDAhSb29ic29mdDEMMAoGA1UECwwDZGV2MRcwFQYDVQQDDA5w
OC5yb29ic29mdC5kZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMWX
4YCa0MRPBV9Cw+autTPlpx54uz4ZsrBeEJoeXzKLULqFIS1DZLtjc8q7dxTUhT0g
ePbxmyeNC0ZXJhCcN4EX9QfPEnRDxf5joYjaNCgOiKbGohwecT03jQjmsw5S7RWL
LiPLiSP5Tv7mep9qliIgVlS0rcszimxBkvBseTG/s1IuBHAXDl1gBEgwjLFIyl2i
dwVH56zl6/vaXMWiLEx/1uOYRsj5eUdrXhVr/D+Clqrt2rUQZRwyPUe6x4QZhV98
PnrKG0aC5+dAhO6TLmiYkIUu/MgYbgMJL3vRWGd4r22CZWbIRp/Xqhalul9+bpoO
2fZZujgH2jIMJXLhyTsCAwEAAaNQME4wHQYDVR0OBBYEFCBZxUXWboWF2904il5t
YoY6v605MB8GA1UdIwQYMBaAFCBZxUXWboWF2904il5tYoY6v605MAwGA1UdEwQF
MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAGp1BGR+uTM+St9BRWt3HL1NouW8hkdv
hTzTmJ6W8VRCm5bErnYMlM+96GQ5g9k6BTW21qVqZv80XHMUiNpfAqDPl9p4WaFr
88yBldYRVT1eTv+CzgqeuiqErp4wlabRp5N+IrxpP7Z0DvmC083R0I3fZGb5/e7R
zMG+SRM9O45LbUdmIsMKeqpcLxTR9euSX7BzDp5a4vtMZduK8swxsZaD+pcB2gWw
MQaO4FLeQPFz65SfAYDX29ruSzdNUpQCWp5zbpwA1Hi6IMmn4Wiet+rfCOsoOj2P
sXhwLA+CeJ4auCrizQkraXcbaZfPC38mbp5NQh8fe+Bxh3aYNap4b/A=
-----END CERTIFICATE-----
2 changes: 1 addition & 1 deletion e2e/app.po.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { browser, element, by } from 'protractor';
import { browser, by, element } from 'protractor';

export class TinyTranslatorPage {
navigateTo() {
2 changes: 2 additions & 0 deletions e2e/tsconfig.e2e.json
Original file line number Diff line number Diff line change
@@ -2,10 +2,12 @@
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/e2e",
"baseUrl": "./",
"module": "commonjs",
"target": "es5",
"types":[
"jasmine",
"jasminewd2",
"node"
]
}
15 changes: 2 additions & 13 deletions karma.conf.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Karma configuration file, see link for more information
// https://karma-runner.github.io/0.13/config/configuration-file.html
// https://karma-runner.github.io/1.0/config/configuration-file.html

module.exports = function (config) {
config.set({
@@ -15,25 +15,14 @@ module.exports = function (config) {
client:{
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
files: [
{ pattern: './src/test.ts', watched: false }
],
preprocessors: {
'./src/test.ts': ['@angular/cli']
},
mime: {
'text/x-typescript': ['ts','tsx']
},
coverageIstanbulReporter: {
reports: [ 'html', 'lcovonly' ],
fixWebpackSourcePaths: true
},
angularCli: {
environment: 'secret'
},
reporters: config.angularCli && config.angularCli.codeCoverage
? ['progress', 'coverage-istanbul']
: ['progress', 'kjhtml'],
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
28 changes: 28 additions & 0 deletions key.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDFl+GAmtDETwVf
QsPmrrUz5aceeLs+GbKwXhCaHl8yi1C6hSEtQ2S7Y3PKu3cU1IU9IHj28ZsnjQtG
VyYQnDeBF/UHzxJ0Q8X+Y6GI2jQoDoimxqIcHnE9N40I5rMOUu0Viy4jy4kj+U7+
5nqfapYiIFZUtK3LM4psQZLwbHkxv7NSLgRwFw5dYARIMIyxSMpdoncFR+es5ev7
2lzFoixMf9bjmEbI+XlHa14Va/w/gpaq7dq1EGUcMj1HuseEGYVffD56yhtGgufn
QITuky5omJCFLvzIGG4DCS970VhneK9tgmVmyEaf16oWpbpffm6aDtn2Wbo4B9oy
DCVy4ck7AgMBAAECggEATZZz/9HKxCrbSyqmTgCwOm6lDrwNmjbxCXwGPN5MN0ap
LnR0MJfUCBjnMOYnvlAs+XG0zhLU/9TMZpR15/PPf6tuleBjuK+cIWXx2hEEhe4f
Do3UvgHeKVGU2bfs+2Ton5sFRRz4/t04fbL213488a2M+LnxvGbCpfuhvTJ67GNP
VTrRtJBKAdl4VuhEWrlivyXpULxnDoN8feHMKkFKkzzyBs2253Mq0VVUuH+Fr5sM
LEnIZpZ3ufKA7KqPDpFgRKnKKWBi1vfUf9zhRYHX5FgoPAvuE6huEixQnYWHXsRh
9PHdjQQ1dqptB/T8YhWBQgwNq6gZr+CO4I2negnGYQKBgQDlv9fqEdWGWQOfu2zD
0fPC1YSfxIzNANB0L0Vq9yttqNZob/F7OHIfbJ+q7/5BywL18Tyd5I9CogGZUIV+
ZeJvrENhHlvAy5i/UMzkKV8HJ4Yc5bc8R6g3+mkgxtIBYlyDhQZsTNU/mZf8a0sy
pCQKeRzSoBHXlS1Ivy2MpWMyIwKBgQDcK3kmc3wjiqSsK9N9ZcVi977kp/5BOKSH
cY4t837Vg6d4FXeV0HQRuio+juTnFxSH1527llH/jlKDs+ztWN0lrRLgEz+n3I6Q
NVieOEUwrtZH48ncZlmNaQll7p1IxYZ83v7nG1MUcgaUjpWEnhFHyBPVo9tmU7m7
hHPBfihCCQKBgQCdI/cxINuT1WRWJ2KAGSUJ2PKqOEw5l1n8baykOcSZb4aezhoz
tmrQNYKL7zRPmeQ/ha15LTATWi2PyHRV/KfAy+kWDyagmmCyUjihwe4+PXlMYI5Q
i45yIzMueO6Ahd9TEXRQNMkShCJhQp2fWIdSJn5hTZyGgIEFpcUo0qIjUwKBgQCC
kAU4GCP1r7IXp6WzJzb2iZRaZIUSiFSJPX3jIhKE653USGayIPuzx4JltrdnkvhJ
1kNjirD1q6CjGX/XAGukfA5FcyS8lr60Je53ZUcip4vK9fovCULx6Of52pbLINew
FU10H3AVH8lnL2bbTiFRQAUDHDhvZhcubE144SdegQKBgQCNU6JjOHflt1tSkKgk
3IQ23EOm1LV3nbthonWgm0h5hgWUmz2fU4DGbvSf1zitMONBd1ibuDU/5791T/ff
rbY+oslexd296EquoeGkso/AKdxQM9aMvTIMuthRau5NskGzROiIby4gVQlmu39H
LVMlrL6N3Bg18ALO1QE+nni72A==
-----END PRIVATE KEY-----
Loading