0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

EU Digital COVID Certificateに含まれるデータの中身とその仕様

Posted at

はじめに

ワクチン接種率の増加とともにEUやアメリカではいわゆる「ワクチンパスポート」の導入が進んでいます。
今後、各国で導入が進むことも予想されます。
たとえば、フランスでの「衛生パス」導入は大きな話題となりました。

そのフランスでの「衛生パス」のベースともなっているのが、EUの導入している「EU Digital COVID Certificate (EU DCC)」です。
本記事では、EU DCCについてどんな内容が含まれているのかまとめました。

公式ドキュメント

下記2ページを見れば大丈夫でしょう。

EU公式ページ

Github: European eHealth network - digital covid certificate coordination

免責事項

  • 本記事は筆者 (Twitter: @hrk_kobayashi が個人的にまとめたものです。内容の誤りにより生じたいかなる損害にも責任を負いかねます。正確な内容は上述のEU公式ページをご確認ください。なお、修正依頼は大歓迎です。
  • 本記事の内容は執筆時点 (2021-08-14) のものです。

EU DCCとは

下記の要件を満たすように実装されています。

要件

  1. 偽装困難かつ、オフラインで所有者の状態が確認できること
  2. 光学的手段(カメラ等による画像認識)での読み取りが容易で、コンパクトな符号化であること
  3. 一般的なプラットフォーム上で動作可能で、標準化されたオープンな規格をベースとし、相互運用性があること
  4. 標準化された規格がない場合、現存する規格をベースに新たなメカニズムを定義し、動作可能性を保証できること
  5. 既存の光学的手段でのデコードに互換性があること

実装

  1. ワクチン接種内容や陰性証明の内容をJSONで記載
  2. CBORでシリアライズ
  3. COSEでデジタル署名 + 暗号化
  4. Zlibで圧縮
  5. Base45符号化 + QRコード生成

本記事でまとめているのは1のJSONで記載される内容についてです。

仕様とデータ構造

以下に仕様とデータ構造を記します。
直訳ではなく、原文の意図をなるべく失わないよう意訳しています。
太字の語尾(~しなければならない、など)は、原文のMUST/SHOULD/MAYなどに対応します。

全体の構造

文字コード

Unicode 13.0をUTF-8エンコードしたJSON形式で記載する。

ファイル構造

"JSON": {
    "ver": <バージョン情報>,
    "nam": {
        <氏名情報>
    },
    "dob": <生年月日>
    "v", "t", or "r": [
        <ワクチン接種情報, 検査情報, or 感染からの治癒情報, のうち1点>
    ]
}

バージョン情報

フィールドID 内容 説明
ver スキーマのバージョン EU DCCの定めるバージョン文字列でなければならない

ver

従うスキーマのバージョンを記載しなければならない
現在のバージョンは 1.3.0

"ver": "1.3.0" //現行バージョン

氏名情報

フィールドID 内容 説明
nam/fn 名字/surname(s) 証明書の所有者の名字をそのまま記載する。
nam/fnt 標準化した名字/surname(s) 証明書の所有者の名字を渡航文書(パスポートなど)の表記の通り記載する。
nam/gn 名前/forename(s) 証明書の所有者の名前をそのまま記載する。
nam/gnt 標準化した名前/forename(s) 証明書の所有者の名前を渡航文書(パスポートなど)の表記の通り記載する。

nam/fn

証明書の所有者の名字/surname(s) をそのまま記載する。
空でないちょうど1つのフィールドを記載しなければならない
複合姓を持つ場合、スペースで区切らなければならない
ハイフンやそれらの記号を含む場合、そのままの記載する。

"fn": "Musterfrau-Gößinger" //ハイフンはそのまま残す
"fn": "Musterfrau-Gößinger Müller" //複合姓はスペースで区切る

nam/fnt

証明書の所有者の名字/surname(s) を渡航文書(パスポートなど)の表記の通り記載する。 (ICAO Doc 9303 Part 3)。
空でないちょうど1つのフィールドを記載しなければならない
フィールド内で使用できる文字は [A-Z]< のみで、最大80文字としなければならない

"fnt": "MUSTERFRAU<GOESSINGER" //パスポートの記載通り、全大文字でハイフンを<に置換し、ダイアクリティカルマーク等のついた文字については翻字を行う
"fnt": "MUSTERFRAU<GOESSINGER<MUELLER" //スペースを<に置換する

nam/gn

証明書の所有者の名前/forename(s), given name(s) をそのまま記載する。
所有者に名前がなければ、このフィールドは存在してはならない
このフィールドは2つ以上存在してはならない
複数の名前を持つ場合、スペースで区切らなければならない

"gn": "Isolde Erika"

nam/gnt

証明書の所有者の名前/forename(s), given name(s) を渡航文書(パスポートなど)の表記の通り記載する。 (ICAO Doc 9303 Part 3)。
所有者に名前がなければ、このフィールドは存在してはならない
このフィールドは2つ以上存在してはならない
フィールド内で使用できる文字は [A-Z]< のみで、最大80文字としなければならない

"gnt": "ISOLDE<ERIKA"

生年月日

フィールドID 内容 説明
dob 生年月日 所有者の生年月日を記載する。

dob

所有者の生年月日をISO 8601形式 (YYYY-MM-DD)で記載しなければならない
記載できる範囲は 1900-01-01 から 2099-12-31 の範囲である。
ちょうど1つのフィールドを記載しなければならない
生年月日がわからない場合、例の通り、YYYY-MMYYYY といった記載や、完全に不明な場合は空文字列としなければならない

"dob": "1979-04-14" //YYYY-MM-DD形式
"dob": "1901-08" //YYYY-MM形式
"dob": "1939" //YYYY形式
"dob": "" //不明な場合は空文字列とする

ユーザーへの画面表示上は、1990-XX-XX のように不明な部分を XX で表示してもかまいません

証明の種類

EU DCCでは、1つの証明書につき下記3グループのうち、ちょうど1グループの内容を含まなければならない

グループID 内容 説明
v ワクチン接種グループ ワクチン接種の内容について記載する。
t 検査グループ 検査の内容について記載する。
r 治癒グループ 治癒内容について記載する。

ワクチン接種グループ

ちょうど1回のワクチン接種の内容について記載しなければならない

フィールドID 内容 説明
v/tg ワクチンの対象疾病 接種したワクチンが対象としている疾病を記載する。
v/vp ワクチンもしくは予防法の種別 接種したワクチンや実施した予防法の種別を記載する。
v/mp 医薬品名 ワクチン等の医薬品名を記載する。
v/ma 医薬品認可を保有する団体・企業名 ワクチン等の認可を保有する団体・企業名や製造者を記載する。
v/dn 接種回数 何度目の接種かを記載する。
v/sd 必要接種回数 定められた必要接種回数を記載する。
v/dt 接種日 接種した日付を記載する。
v/co 国名もしくは組織名 接種に責任を持つ国名もしくは組織名を記載する。
v/is 発行者 その接種証明を発行した組織名を記載する。
v/ci ユニーク証明識別子 ユニーク証明識別子 (UVCI) を記載する。

v/tg (v1.0)

ワクチンが対象としている疾病をSNOMED CTで定められた値で記載する。
ちょうど1つの空でないフィールドを記載しなければならない
COVID-19のIDは 840539006 のため、現行スキーマバージョンではこの値を記載する。

"tg": "840539006" //COVID-19

v/vp (v1.0)

接種したワクチンや実施した予防法の種別をSNOMED CTで定められた値かWHO ATC分類で記載する。
ちょうど1つの空でないフィールドを記載しなければならない

"vp": "1119349007" //SARS-CoV-2 mRNAワクチン
コード コードシステム 表示名
1119305005 SNOMED CT SARS-CoV-2 antigen vaccine
1119349007 SNOMED CT SARS-CoV-2 mRNA vaccine
J07BX03 WHO ATC covid-19 vaccines

ATCのコード J07BX03 はantigenもしくはmRNAワクチンでない場合か、情報が足りない場合のみ用いることができます。

v/mp (v1.2)

接種したワクチンの製品名を記載する。
コードはEUに登録されているものを用いるが、EU全体では*未承認 (Italic)*のものもある。
ちょうど1つの空でないフィールドを記載しなければならない

"vp": "1119349007" //SARS-CoV-2 mRNAワクチン
コード 表示名 状況 日本語補足
EU/1/20/1528 Comirnaty 承認済 バイオンテック/ファイザー コミナティ筋注
EU/1/20/1507 Spikevax (旧COVID-19 Vaccine Moderna) 承認済 モデルナ筋注
EU/1/21/1529 Vaxzevria 承認済 アストラゼネカ バキスゼブリア筋注
EU/1/20/1525 COVID-19 Vaccine Janssen 承認済 ヤンセンファーマ/J&J
CVnCoV CVnCoV 審査中 CureVac
NVX-CoV2373 NVX-CoV2373 審査中 ノババックス
Sputnik-V Sputnik-V 審査中 スプートニクV
Convidecia Convidecia 未承認 カンシノ・バイオロジクス
EpiVacCorona EpiVacCorona 未承認 ベクター・インスティテュート
BBIBP-CorV BBIBP-CorV 未承認 シノファーム
Inactivated-SARS-CoV-2-Vero-Cell Inactivated-SARS-CoV-2-Vero-Cell 未承認 シノファーム
CoronaVac CoronaVac 未承認 シノバック
Covaxin Covaxin (aka. BBV152 A, B, C) 未承認 バラート・バイオテック
Covishield Covishield (ChAdOx1_nCoV-19) 未承認 インド血清研究所/アストラゼネカ

ワクチンの承認状況に応じてコードは拡張される。

国によってワクチンの名称が異なりますが、上のテーブルにあるコードで記載すべきです
たとえば、モデルナ社製のワクチンを日本で接種した場合「COVID-19ワクチンモデルナ筋注」という名称ですが、
これはEUでの名称「Spikevax」に従い EU/1/20/1507 とコードされるべきです

v/ma (v1.2)

ワクチン等の認可を保有する団体・企業名や製造者を記載する。
コードはEMAに登録されているものを用いるが、未登録のものもある。
ちょうど1つの空でないフィールドを記載しなければならない

"vp": "1119349007" //SARS-CoV-2 mRNAワクチン
コード 表示名 EMA登録 日本語補足
ORG-100001699 AstraZeneca AB 登録済 アストラゼネカ
ORG-100030215 Biontech Manufacturing GmbH 登録済 バイオンテック (ファイザー)
ORG-100001417 Janssen-Cilag International 登録済 ヤンセンファーマ (J&J)
ORG-100031184 Moderna Biotech Spain S.L. 登録済 モデルナ
ORG-100006270 Curevac AG 登録済 CureVac
ORG-100013793 CanSino Biologics 登録済 カンシノ・バイオロジクス
ORG-100020693 China Sinopharm International Corp. - Beijing location 登録済 シノファーム
ORG-100010771 Sinopharm Weiqida Europe Pharmaceutical s.r.o. - Prague location 登録済 シノファーム
ORG-100024420 Sinopharm Zhijun (Shenzhen) Pharmaceutical Co. Ltd. - Shenzhen location 登録済 シノファーム
ORG-100032020 Novavax CZ AS 登録済 ノババックス
Gamaleya-Research-Institute Gamaleya Research Institute 未登録 ガマレヤ研究所
Vector-Institute Vector Institute 未登録 ベクター・インスティテュート
Sinovac-Biotech Sinovac Biotech 未登録 シノバック
Bharat-Biotech Bharat Biotech 未登録 バラート・バイオテック
ORG-100001981 Serum Institute Of India Private Limited 登録済 インド血清研究所 (アストラゼネカ)

ワクチンの承認状況に応じてコードは拡張される。

同一メーカーの異なる支社についても、上のテーブルにあるコードで記載すべきです
また、同一内容のワクチンについては、EU内での認可保有者名で記載します。
例えばスイスでは「Pfizer AG」が「Comirnaty」の認可を保有しますが、ORG-100030215 の「Biontech Manufacturing GmbH」でコードします。
また、例えばフィリピンでは「Zuellig Pharma」が「Covid-19 Vaccine
Moderna」の認可を保有しますが、これは「Spikevax」に倣い ORG-100031184 の「Moderna Biotech Spain S.L.」でコードします。

v/dn

何度目の接種か記載する。
ちょうど1つの空でないフィールドを記載しなければならない

"dn": "1" //初回接種
"dn": "2" //2回目の接種
"dn": "3" //3回目の接種(ブースター接種を想定)

v/sd

証明書に記載した接種の時点での定められた必要接種回数を記載する。
必要接種回数は必ずしもワクチン製品に応じて決まるわけではなく、各国の規定や感染経験の有無などで異なる場合がある。
ちょうど1つの空でないフィールドを記載しなければならない

"sd": "1" //必要接種回数は1
"sd": "2" //必要接種回数は2
"sd": "3" //必要接種回数は3回(ブースター接種を想定)

v/dt

接種日を YYYY-MM-DD 形式で記載する。その他の形式はサポートされない。
ちょうど1つの空でないフィールドを記載しなければならない

"dt": "2021-03-28"

v/co

ISO3166 2レターコードでの接種に責任を持つ国名 (推奨される)、もしくはWHOやUNHCRといった組織名([A-Z] で1文字以上10文字以下)を記載する。
ちょうど1つのフィールドを記載しなければならない

"co": "CZ" //チェコ共和国
"co": "UNHCR" //国連難民高等弁務官事務所

v/is

その接種証明を発行した組織名を記載する。
最長80文字のUTF-8文字列を記載できる。
何らかの識別子を一部に含んでもよいが、組織名のテキスト表記と併記せずに識別子のみを単独で記載することは推奨されない
ちょうど1つの空でないフィールドを記載しなければならない

"is": "Ministry of Health of the Czech Republic" //チェコ共和国保健省
"is": "Vaccination Centre South District 3" //南3区ワクチンセンター

v/ci

ユニーク証明識別子 (unique certificate identifier, UVCI) を記載する。
詳細は Guidelines on verifiable vaccination certificates - basic interoperability elements を参考のこと。
チェックサムを含むかどうかは選択可能 (optional) である。
また、接頭辞 URN:UVCI: を追加してもよい
ちょうど1つの空でないフィールドを記載しなければならない

"ci": "URN:UVCI:01:NL:187/37512422923" //オランダ発行のUVCI
"ci": "URN:UVCI:01:AT:10807843F94AEE0EE5093FBC254BD813#B" //オーストリア発行のUVCI、チェックサム付

基本的には下記の通りで、用いる文字は [A-Z0-9/#:] のみです。
URN:UVCI:<バージョン>:<ISO3166 2レター国名>:<国ごとに発行されるユニーク文字列>#<チェックサム>

<チェックサム> はLuhn-Mod-Nアルゴリズムで算出すべきとされています。
詳細は割愛しますが、参考実装では文字列 URN:UVCI:<バージョン>:<ISO3166 2レター国名>:<国ごとに発行されるユニーク文字列> について丸ごと計算します。
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/: の順に 0 から 37 の数字を割り当て、
factor = 2 かつ N = 38 として計算すれば算出されます。

検査グループ

ちょうど1回の検査の内容について記載しなければならない

フィールドID 内容 説明
t/tg 検査の対象疾病もしくは病原体 検査が対象としている疾病もしくは病原体を記載する。
t/tt 検査の種類 実施した検査の種類を記載する。
t/nm 検査名 (NAATのみ) 実施した検査名を記載する。
t/ma 検査デバイス識別子 (RATのみ) 検査デバイスの識別子を記載する。
t/sc 検体採取日時 検体を採取した日時を記載する。
t/tr 検査結果 検査結果を記載する。
t/tc 検査実施者 その検査の実施者を記載する。
t/co 国名もしくは組織名 検査に責任を持つ国名もしくは組織名を記載する。
t/is 発行者 その検査証明を発行した組織名を記載する。
t/ci ユニーク証明識別子 ユニーク証明識別子 (UVCI) を記載する。

t/tg (v1.0)

検査が対象としている疾病をSNOMED CTで定められた値で記載する。
ちょうど1つの空でないフィールドを記載しなければならない
COVID-19のIDは 840539006 のため、現行スキーマバージョンではこの値を記載する。

"tg": "840539006" //COVID-19

t/tt (v1.0)

実施した検査の種類をLOINCで定められた値で記載する。
ちょうど1つの空でないフィールドを記載しなければならない

"tt": "LP6464-4" //核酸増幅検査
コード コードシステム 表示名 補足
LP6464-4 LOINC Nucleic acid amplification with probe detection NAAT/核酸増幅検査
LP217198-3 LOINC Rapid immunoassay RAT/高速免疫学的測定 (イムノアッセイ)

t/nm

実施した検査名を記載する。
t/tt がNAAT (LP6464-4) の場合、このフィールドを記載するかどうかは選択可能 (optional) である。
検査名には、検査メーカー名と商品名がカンマ区切りで含まれるべきである
t/tt がRAT (LP217198-3) の場合、t/ma の内容に検査名が含まれるため、このフィールドは記載するべきではない
このフィールドを含む場合、空であってはならない

"nm": "ELITechGroup, SARS-CoV-2 ELITe MGB® Kit"

t/ma

検査デバイスの識別子を記載する。
t/tt がNAAT (LP6464-4) の場合、このフィールドは用いてはならない
t/tt がRAT (LP217198-3) の場合、ちょうど1つの空でないフィールドを記載しなければならない

検査デバイス識別子は下記から確認できる。

"ma": "344" //SD BIOSENSOR Inc, STANDARD F COVID-19 Ag FIA

EU/EEA内の証明書発行者はその時点で有効な検査のみについて証明を発行しなければなりません
また、24時間ごとに、有効な検査デバイスリストを更新しなければなりません

第三国の証明書発行者は有効でない検査についての証明を発行してもかまいません
ただし、識別子は上記のリストの値でなければなりません

検証者(証明書を確認する者)は、最新の検査デバイスリストに記載のない値を検出し、その証明書を無効としなければなりません
ただし、検査デバイスリストから削除された値については削除後72時間まで受け付けてもかまいません

t/sc

検査日時を下記1~4のいずれかのISO8601フォーマットで記載する。その他の形式はサポートされない。
時間情報はタイムゾーンの情報を含まなければならない
ちょうど1つの空でないフィールドを記載しなければならない

  1. YYYY-MM-DDThh:mm:ssZ
  2. YYYY-MM-DDThh:mm:ss[+-]hh
  3. YYYY-MM-DDThh:mm:ss[+-]hhmm
  4. YYYY-MM-DDThh:mm:ss[+-]hh:mm
"sc": "2021-08-20T10:03:12Z" //UTC time
"sc": "2021-08-20T12:03:12+02" //CEST time
"sc": "2021-08-20T12:03:12+0200" //CEST time
"sc": "2021-08-20T12:03:12+02:00" //CEST time

t/tr (v1.0)

検査結果をSNOMED CTで定められた値で記載する。
ちょうど1つの空でないフィールドを記載しなければならない

"tr": "260415000" //未検出
コード コードシステム 表示名
260415000 SNOMED CT Not detected
260373001 SNOMED CT Detected

undetermined などの値が将来的に追加される可能性があります。

t/tc

その検査の実施者を記載する。
t/tt がNAAT (LP6464-4) の場合、このフィールドはちょうど1つ記載しなければならず、空であってはならない
t/tt がRAT (LP217198-3) の場合、このフィールドを記載するかどうかは選択可能 (optional) であるが、このフィールドを含む場合、空であってはならない
最長80文字のUTF-8文字列を記載でき、超過分は切り詰められるべきである
何らかの識別子を一部に含んでもよいが、組織名のテキスト表記と併記せずに識別子のみを単独で記載することは推奨されない
このフィールドは自動承認といった機械的な処理を想定していない。

"tc": "Test centre west region 245" //西地区245テストセンター

t/co

ISO3166 2レターコードでの検査に責任を持つ国名 (推奨される)、もしくはWHOやUNHCRといった組織名([A-Z] で1文字以上10文字以下)を記載する。
ちょうど1つのフィールドを記載しなければならない

"co": "CZ" //チェコ共和国
"co": "UNHCR" //国連難民高等弁務官事務所

t/is

その検査証明を発行した組織名を記載する。
最長80文字のUTF-8文字列を記載できる。
何らかの識別子を一部に含んでもよいが、組織名のテキスト表記と併記せずに識別子のみを単独で記載することは推奨されない
ちょうど1つの空でないフィールドを記載しなければならない

"is": "Ministry of Health of the Czech Republic" //チェコ共和国保健省
"is": "North-West region health authority" //北西地区保健局

t/ci

ユニーク証明識別子 (unique certificate identifier, UVCI) を記載する。
詳細は Guidelines on verifiable vaccination certificates - basic interoperability elements を参考のこと。
チェックサムを含むかどうかは選択可能 (optional) である。
また、接頭辞 URN:UVCI: を追加してもよい
ちょうど1つの空でないフィールドを記載しなければならない

"ci": "URN:UVCI:01:NL:187/37512422923" //オランダ発行のUVCI
"ci": "URN:UVCI:01:AT:10807843F94AEE0EE5093FBC254BD813#B" //オーストリア発行のUVCI、チェックサム付

治癒グループ

ちょうど1回の治癒の内容について記載しなければならない

フィールドID 内容 説明
r/tg 治癒した疾病もしくは病原体 治癒した疾病もしくは病原体を記載する。
r/fr 初回陽性検体採取日 NAAT検査で初めて陽性判定された際の検体採取日を記載する。
r/co 国名もしくは組織名 検査に責任を持つ国名もしくは組織名を記載する。
r/is 発行者 その治癒証明を発行した組織名を記載する。
r/df 治癒証明開始日 治癒証明が有効だとみなされる期間の初日を記載する。
r/du 治癒証明開始日 治癒証明が有効だとみなされる期間の最終日を記載する。
r/ci ユニーク証明識別子 ユニーク証明識別子 (UVCI) を記載する。

r/tg (v1.0)

治癒した疾病をSNOMED CTで定められた値で記載する。
ちょうど1つの空でないフィールドを記載しなければならない
COVID-19のIDは 840539006 のため、現行スキーマバージョンではこの値を記載する。

"tg": "840539006" //COVID-19

r/dt

NAAT検査で初めて陽性判定された際の検体採取日を YYYY-MM-DD 形式で記載する。
その他の形式はサポートされない。
ちょうど1つの空でないフィールドを記載しなければならない

"fr": "2021-05-18"

r/co

ISO3166 2レターコードでの検査に責任を持つ国名 (推奨される)、もしくはWHOやUNHCRといった組織名([A-Z] で1文字以上10文字以下)を記載する。
ちょうど1つのフィールドを記載しなければならない

"co": "CZ" //チェコ共和国
"co": "UNHCR" //国連難民高等弁務官事務所

r/is

その治癒証明を発行した組織名を記載する。
最長80文字のUTF-8文字列を記載できる。
何らかの識別子を一部に含んでもよいが、組織名のテキスト表記と併記せずに識別子のみを単独で記載することは推奨されない
ちょうど1つの空でないフィールドを記載しなければならない

"is": "Ministry of Health of the Czech Republic" //チェコ共和国保健省
"is": "Central University Hospital" //中央大学病院

r/df

治癒証明が有効だとみなされる期間の初日を YYYY-MM-DD 形式で記載する。
その他の形式はサポートされない。
r/fr + 11日 よりも前の日付であってはならない
ちょうど1つの空でないフィールドを記載しなければならない

"df": "2021-05-29"

r/du

証明書の発行者が指定する、治癒証明が有効だとみなされる期間の最終日を YYYY-MM-DD 形式で記載する。
その他の形式はサポートされない。
r/fr + 180日 よりも後の日付であってはならない
ちょうど1つの空でないフィールドを記載しなければならない

"du": "2021-11-14"

r/ci

ユニーク証明識別子 (unique certificate identifier, UVCI) を記載する。
詳細は Guidelines on verifiable vaccination certificates - basic interoperability elements を参考のこと。
チェックサムを含むかどうかは選択可能 (optional) である。
また、接頭辞 URN:UVCI: を追加してもよい
ちょうど1つの空でないフィールドを記載しなければならない

"ci": "URN:UVCI:01:NL:187/37512422923" //オランダ発行のUVCI
"ci": "URN:UVCI:01:AT:10807843F94AEE0EE5093FBC254BD813#B" //オーストリア発行のUVCI、チェックサム付

参考リンク

  1. eHealth : Digital health and care
  2. Applying for a COVID certificate if you were vaccinated abroad (procedure for non-EU tourists)
  3. Github: eu-digital-green-certificates
  4. Github: European eHealth network - digital covid certificate coordination

更新履歴

  • 2021-08-14: 初版
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?