# FIDO驗證參考資料
# 網頁JS程式碼
### 1.申請FIDO
```javascript=
let doWebAuthnRegister = async function () {
if ($("token").val() === "") {
sa("error", "no given user's token")
}
// 註冊第一支
let res = await (await fetch("/api/webauthn/MyCard/registration/initialize", {
method: "POST",
headers: {
"Authorization": "Bearer " + $("#token").val(),
}
})).json();
if (res.hasOwnProperty("success") && !res.success) {
sa("error", res.error)
return;
}
console.log(res)
res.publicKey.challenge = bufferDecode(res.publicKey.challenge);
res.publicKey.user.id = bufferDecode(res.publicKey.user.id);
if (res.publicKey.excludeCredentials) {
for (var i = 0; i < res.publicKey.excludeCredentials.length; i++) {
res.publicKey.excludeCredentials[i].id = bufferDecode(res.publicKey.excludeCredentials[i].id);
}
}
// 通知系統執行驗證
let credential = await navigator.credentials.create(res);
// 註冊第二支
res = await (await fetch("/api/webauthn/MyCard/registration/finalize", {
method: "POST",
headers: {
"Authorization": "Bearer " + $("#token").val(),
"Content-Type": "application/json"
},
body: JSON.stringify(unwrapPublicKeyCredential(credential))
})).json();
if (res.success) {
sa("success", "Passkey enrolled successfully")
return
}
sa("error", res.error)
}
```
### 2.驗證FIDO
```javascript=
let doWebAuthnAuth = async function () {
// 驗證第一支
let req = await (await fetch("/api/webauthn/MyCard/authentication/initialize", {
method: "POST",
body: JSON.stringify({
"transaction": $("#tx").val(),
}),
headers: {
"Content-Type": "application/json"
}
})).json()
req.publicKey.challenge = bufferDecode(req.publicKey.challenge)
// 通知系統執行驗證
let resp = await navigator.credentials.get(req)
// 驗證第一支
req = await (await fetch("/api/webauthn/MyCard/authentication/finalize", {
method: "POST",
body: JSON.stringify(unwrapPublicKeyCredential(resp)),
headers: {
"Content-Type": "application/json"
}
})).json()
if (req.data === "") {
sa("error", req.error)
return
}
sa("success", "Successfully authenticated")
$("#newToken").val(req.data)
}
```
# cURL 傳接值,接API可參考
> cURL 可直接匯入Postman
錯誤類型(猜測)?
```jsonld=
// token 有錯:
{
"success": false,
"error": "invalid authorization, err=invalid signature"
}
// base64格式有誤:
{
"success": false,
"error": "failed to parse webauthn registration request"
}
// 驗證失敗?:
{
"success": false,
"error": "invalid session"
}
```
### 1.申請FIDO-第一支
```bash=
curl 'https://fido.mycard520.com/api/webauthn/MyCard/registration/initialize' \
-X 'POST' \
-H 'accept: */*' \
-H 'accept-language: zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6' \
-H 'authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL015Q2FyZCxmaWRvLm15Y2FyZDUyMC5jb20iLCJzdWIiOiI5N2MyNDFmNS01Zjk4LTRjZjMtODJiNS05ODg0ZDE3MmY2ZjEiLCJleHAiOjMzMjc1ODg2MTczLCJpYXQiOjE3MTg5MzQxNzMsImp0aSI6ImQ4Nzg4NDI4LTRhOGItNDc1YS05ODk1LWM1MGJhZDM4ZjRjYSIsIm9uY2UiOmZhbHNlLCJzY29wZSI6InVzZXIiLCJ0ZW5hbnRJZCI6Ijc1OTQzMDk0LWYxNzQtNDY0Zi1hYjU5LWJmMTRiODg3NGNjYSIsInRlbmFudEtleSI6Ik15Q2FyZCIsInRyYW5zYWN0aW9uIjpudWxsLCJzZXNzaW9uSWQiOm51bGwsImVtYWlsIjoia2V2aW4ubGlvdUBzb2Z0LXdvcmxkLmNvbS50dyJ9.PupMZk3ZyN-EZezyreKf5mTU47ciDwxWDHZzoaRM2zc35t62sjgQhrrifBGur_yo0PYM5nKQ4Gcc2MtnijFSATEMiOSLvoZpvrjoyKml6Wcz0qEN07jcAyk6VVYbgCqFgP_Tf6FnIvYSMobt1BcRtNvZnIfY4BjBiPECRf21_JHNFfOZVvhuHASZ05TxdfNJF6WQcOE-wkPET1iOtgBCuUkGOg2nZFpRHQ65-dMLcte6p_yGlXkuPnLcGLhCXK5ZxUDc5IjLzfgHWxtDmDy3iuZAOL0gVb_vIbq0njjl0QDAh3mtX8s2_4eBRZPQVY84V2XKl1gYr7oJ2ror0TOTN4kNFY5XOKZYbfm_Wbh3Q7RWLhtyiUHSlhwdPvCNjFRDHU2WHPce2V6Y6gUzqxQRStuVyI2H80g4TaBuQlWetBkATjJpzSpBBnUPHw3-_M0xSzw10VhHXUN-3x2wdAYnz0CZxRZBFOx-qDpYbj7NewAp7rOt2Z8dGrn5yRHtcUylIyTiusV8-FSeeon_Ed0veBw2N1qcItBLNjhcNJsl2P6Rlb01iBJR_bf209bZEbYRU4CWeV00ytbrnOlO4oC-E4pM9XiSTSQzgsE9F1nQEMLR8dWfkIvbU92NRDy_FCpF4panVf7Sab5G948_2ROU5OO2HTRRDFZx9agif6ZGA8M' \
-H 'content-length: 0' \
-H 'cookie: _ga_0LHGEZ6BMH=GS1.1.1703755073.1.0.1703755082.51.0.0; _ga_CPEG9ST3MJ=GS1.1.1709877057.1.1.1709877121.0.0.0; _ga_RL00X9D20B=GS1.1.1709884511.2.0.1709884511.0.0.0; _ga_CV36KLRLC5=GS1.2.1710382586.2.0.1710382586.0.0.0; _ga_R9559Q3WPK=GS1.1.1710382586.2.1.1710382680.0.0.0; _ga_CKVXXJKYYP=GS1.1.1715760726.3.0.1715760726.0.0.0; _ga_LW8BE3J7DN=GS1.1.1716887023.7.1.1716887821.0.0.0; _ga=GA1.1.1664159217.1703755070; _ga_3NC7MLJ8DD=GS1.1.1717404692.16.0.1717405318.0.0.0; _ga_4ZQQXSH36G=GS1.1.1717404692.13.0.1717405318.0.0.0; _ga_4V1XCWQRTN=GS1.1.1717404692.15.0.1717405318.0.0.0' \
-H 'origin: https://fido.mycard520.com' \
-H 'priority: u=1, i' \
-H 'referer: https://fido.mycard520.com/test' \
-H 'sec-ch-ua: "Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
-H 'sec-fetch-dest: empty' \
-H 'sec-fetch-mode: cors' \
-H 'sec-fetch-site: same-origin' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'
```
回傳:
```jsonld=
{
"publicKey": {
"rp": {
"name": "MyCardTenant",
"id": "fido.mycard520.com"
},
"user": {
"name": "MyCardTenant - kevin.liou@soft-world.com.tw",
"icon": "97c241f5-5f98-4cf3-82b5-9884d172f6f1",
"displayName": "MyCardTenant - kevin.liou@soft-world.com.tw",
"id": "OTdjMjQxZjUtNWY5OC00Y2YzLTgyYjUtOTg4NGQxNzJmNmYx"
},
"challenge": "i1tCG0CN-7SZ3NmJbdkAqZLOjykNAUn7M_SzVFJTXr4",
"pubKeyCredParams": [
{
"type": "public-key",
"alg": -7
},
{
"type": "public-key",
"alg": -35
},
{
"type": "public-key",
"alg": -36
},
{
"type": "public-key",
"alg": -257
},
{
"type": "public-key",
"alg": -258
},
{
"type": "public-key",
"alg": -259
},
{
"type": "public-key",
"alg": -37
},
{
"type": "public-key",
"alg": -38
},
{
"type": "public-key",
"alg": -39
},
{
"type": "public-key",
"alg": -8
}
],
"timeout": 300000,
"excludeCredentials": [],
"authenticatorSelection": {
"requireResidentKey": true,
"residentKey": "required",
"userVerification": "preferred"
}
}
}
```
### 2.申請FIDO-第二支
```bash=
curl 'https://fido.mycard520.com/api/webauthn/MyCard/registration/finalize' \
-H 'accept: */*' \
-H 'accept-language: zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6' \
-H 'authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL015Q2FyZCxmaWRvLm15Y2FyZDUyMC5jb20iLCJzdWIiOiI5N2MyNDFmNS01Zjk4LTRjZjMtODJiNS05ODg0ZDE3MmY2ZjEiLCJleHAiOjMzMjc1ODg2MTczLCJpYXQiOjE3MTg5MzQxNzMsImp0aSI6ImQ4Nzg4NDI4LTRhOGItNDc1YS05ODk1LWM1MGJhZDM4ZjRjYSIsIm9uY2UiOmZhbHNlLCJzY29wZSI6InVzZXIiLCJ0ZW5hbnRJZCI6Ijc1OTQzMDk0LWYxNzQtNDY0Zi1hYjU5LWJmMTRiODg3NGNjYSIsInRlbmFudEtleSI6Ik15Q2FyZCIsInRyYW5zYWN0aW9uIjpudWxsLCJzZXNzaW9uSWQiOm51bGwsImVtYWlsIjoia2V2aW4ubGlvdUBzb2Z0LXdvcmxkLmNvbS50dyJ9.PupMZk3ZyN-EZezyreKf5mTU47ciDwxWDHZzoaRM2zc35t62sjgQhrrifBGur_yo0PYM5nKQ4Gcc2MtnijFSATEMiOSLvoZpvrjoyKml6Wcz0qEN07jcAyk6VVYbgCqFgP_Tf6FnIvYSMobt1BcRtNvZnIfY4BjBiPECRf21_JHNFfOZVvhuHASZ05TxdfNJF6WQcOE-wkPET1iOtgBCuUkGOg2nZFpRHQ65-dMLcte6p_yGlXkuPnLcGLhCXK5ZxUDc5IjLzfgHWxtDmDy3iuZAOL0gVb_vIbq0njjl0QDAh3mtX8s2_4eBRZPQVY84V2XKl1gYr7oJ2ror0TOTN4kNFY5XOKZYbfm_Wbh3Q7RWLhtyiUHSlhwdPvCNjFRDHU2WHPce2V6Y6gUzqxQRStuVyI2H80g4TaBuQlWetBkATjJpzSpBBnUPHw3-_M0xSzw10VhHXUN-3x2wdAYnz0CZxRZBFOx-qDpYbj7NewAp7rOt2Z8dGrn5yRHtcUylIyTiusV8-FSeeon_Ed0veBw2N1qcItBLNjhcNJsl2P6Rlb01iBJR_bf209bZEbYRU4CWeV00ytbrnOlO4oC-E4pM9XiSTSQzgsE9F1nQEMLR8dWfkIvbU92NRDy_FCpF4panVf7Sab5G948_2ROU5OO2HTRRDFZx9agif6ZGA8M' \
-H 'content-type: application/json' \
-H 'cookie: _ga_0LHGEZ6BMH=GS1.1.1703755073.1.0.1703755082.51.0.0; _ga_CPEG9ST3MJ=GS1.1.1709877057.1.1.1709877121.0.0.0; _ga_RL00X9D20B=GS1.1.1709884511.2.0.1709884511.0.0.0; _ga_CV36KLRLC5=GS1.2.1710382586.2.0.1710382586.0.0.0; _ga_R9559Q3WPK=GS1.1.1710382586.2.1.1710382680.0.0.0; _ga_CKVXXJKYYP=GS1.1.1715760726.3.0.1715760726.0.0.0; _ga_LW8BE3J7DN=GS1.1.1716887023.7.1.1716887821.0.0.0; _ga=GA1.1.1664159217.1703755070; _ga_3NC7MLJ8DD=GS1.1.1717404692.16.0.1717405318.0.0.0; _ga_4ZQQXSH36G=GS1.1.1717404692.13.0.1717405318.0.0.0; _ga_4V1XCWQRTN=GS1.1.1717404692.15.0.1717405318.0.0.0' \
-H 'origin: https://fido.mycard520.com' \
-H 'priority: u=1, i' \
-H 'referer: https://fido.mycard520.com/test' \
-H 'sec-ch-ua: "Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
-H 'sec-fetch-dest: empty' \
-H 'sec-fetch-mode: cors' \
-H 'sec-fetch-site: same-origin' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36' \
--data-raw '{"response":{"clientDataJSON":"eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiaTF0Q0cwQ04tN1NaM05tSmJka0FxWkxPanlrTkFVbjdNX1N6VkZKVFhyNCIsIm9yaWdpbiI6Imh0dHBzOi8vZmlkby5teWNhcmQ1MjAuY29tIiwiY3Jvc3NPcmlnaW4iOmZhbHNlfQ==","attestationObject":"o2NmbXRkbm9uZWdhdHRTdG10oGhhdXRoRGF0YViYXcNeBx1lSNvFKB55wk9RJ3q2MbERif24WLHq5owCJ71dAAAAAPv8MAcVTk7MjAtuAgVX170AFNbDeBig6-8d9B6Jf_ULTvilfxK3pQECAyYgASFYIOyEhY8SRGCzxiUNHGUYV972dfBRMUYVZcrQhC4xhRpLIlgg6r2kyv4LAoOBBxrwF25-lK6VZff3SRa1JZLhfDIfuMc="},"id":"1sN4GKDr7x30Hol_9QtO-KV_Erc","type":"public-key","rawId":"1sN4GKDr7x30Hol_9QtO-KV_Erc="}'
```
參數
```jsonld=
{
"response": {
"clientDataJSON": "eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiaTF0Q0cwQ04tN1NaM05tSmJka0FxWkxPanlrTkFVbjdNX1N6VkZKVFhyNCIsIm9yaWdpbiI6Imh0dHBzOi8vZmlkby5teWNhcmQ1MjAuY29tIiwiY3Jvc3NPcmlnaW4iOmZhbHNlfQ==",
"attestationObject": "o2NmbXRkbm9uZWdhdHRTdG10oGhhdXRoRGF0YViYXcNeBx1lSNvFKB55wk9RJ3q2MbERif24WLHq5owCJ71dAAAAAPv8MAcVTk7MjAtuAgVX170AFNbDeBig6-8d9B6Jf_ULTvilfxK3pQECAyYgASFYIOyEhY8SRGCzxiUNHGUYV972dfBRMUYVZcrQhC4xhRpLIlgg6r2kyv4LAoOBBxrwF25-lK6VZff3SRa1JZLhfDIfuMc="
},
"id": "1sN4GKDr7x30Hol_9QtO-KV_Erc",
"type": "public-key",
"rawId": "1sN4GKDr7x30Hol_9QtO-KV_Erc="
}
```
回傳
```jsonld=
{"success":true}
```
### 3.驗證FIDO-第一支
```bash=
curl 'https://fido.mycard520.com/api/webauthn/MyCard/authentication/initialize' \
-H 'accept: */*' \
-H 'accept-language: zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6' \
-H 'content-type: application/json' \
-H 'cookie: _ga_0LHGEZ6BMH=GS1.1.1703755073.1.0.1703755082.51.0.0; _ga_CPEG9ST3MJ=GS1.1.1709877057.1.1.1709877121.0.0.0; _ga_RL00X9D20B=GS1.1.1709884511.2.0.1709884511.0.0.0; _ga_CV36KLRLC5=GS1.2.1710382586.2.0.1710382586.0.0.0; _ga_R9559Q3WPK=GS1.1.1710382586.2.1.1710382680.0.0.0; _ga_CKVXXJKYYP=GS1.1.1715760726.3.0.1715760726.0.0.0; _ga_LW8BE3J7DN=GS1.1.1716887023.7.1.1716887821.0.0.0; _ga=GA1.1.1664159217.1703755070; _ga_3NC7MLJ8DD=GS1.1.1717404692.16.0.1717405318.0.0.0; _ga_4ZQQXSH36G=GS1.1.1717404692.13.0.1717405318.0.0.0; _ga_4V1XCWQRTN=GS1.1.1717404692.15.0.1717405318.0.0.0' \
-H 'origin: https://fido.mycard520.com' \
-H 'priority: u=1, i' \
-H 'referer: https://fido.mycard520.com/test' \
-H 'sec-ch-ua: "Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
-H 'sec-fetch-dest: empty' \
-H 'sec-fetch-mode: cors' \
-H 'sec-fetch-site: same-origin' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36' \
--data-raw '{"transaction":""}'
```
回傳
```jsonld=
{
"publicKey": {
"challenge": "vnFIeHdsdm-Wxt3d4vXyx2Y_8QrCkiM2cwKtsGBbXj4",
"timeout": 300000,
"rpId": "fido.mycard520.com",
"userVerification": "preferred"
}
}
```
### 4.驗證FIDO-第二支
```bash=
curl 'https://fido.mycard520.com/api/webauthn/MyCard/authentication/finalize' \
-H 'accept: */*' \
-H 'accept-language: zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6' \
-H 'content-type: application/json' \
-H 'cookie: _ga_0LHGEZ6BMH=GS1.1.1703755073.1.0.1703755082.51.0.0; _ga_CPEG9ST3MJ=GS1.1.1709877057.1.1.1709877121.0.0.0; _ga_RL00X9D20B=GS1.1.1709884511.2.0.1709884511.0.0.0; _ga_CV36KLRLC5=GS1.2.1710382586.2.0.1710382586.0.0.0; _ga_R9559Q3WPK=GS1.1.1710382586.2.1.1710382680.0.0.0; _ga_CKVXXJKYYP=GS1.1.1715760726.3.0.1715760726.0.0.0; _ga_LW8BE3J7DN=GS1.1.1716887023.7.1.1716887821.0.0.0; _ga=GA1.1.1664159217.1703755070; _ga_3NC7MLJ8DD=GS1.1.1717404692.16.0.1717405318.0.0.0; _ga_4ZQQXSH36G=GS1.1.1717404692.13.0.1717405318.0.0.0; _ga_4V1XCWQRTN=GS1.1.1717404692.15.0.1717405318.0.0.0' \
-H 'origin: https://fido.mycard520.com' \
-H 'priority: u=1, i' \
-H 'referer: https://fido.mycard520.com/test' \
-H 'sec-ch-ua: "Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
-H 'sec-fetch-dest: empty' \
-H 'sec-fetch-mode: cors' \
-H 'sec-fetch-site: same-origin' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36' \
--data-raw '{"response":{"clientDataJSON":"eyJ0eXBlIjoid2ViYXV0aG4uZ2V0IiwiY2hhbGxlbmdlIjoidm5GSWVIZHNkbS1XeHQzZDR2WHl4MllfOFFyQ2tpTTJjd0t0c0dCYlhqNCIsIm9yaWdpbiI6Imh0dHBzOi8vZmlkby5teWNhcmQ1MjAuY29tIiwiY3Jvc3NPcmlnaW4iOmZhbHNlLCJvdGhlcl9rZXlzX2Nhbl9iZV9hZGRlZF9oZXJlIjoiZG8gbm90IGNvbXBhcmUgY2xpZW50RGF0YUpTT04gYWdhaW5zdCBhIHRlbXBsYXRlLiBTZWUgaHR0cHM6Ly9nb28uZ2wveWFiUGV4In0=","authenticatorData":"XcNeBx1lSNvFKB55wk9RJ3q2MbERif24WLHq5owCJ70dAAAAAA==","signature":"MEUCIE0YJdJC1xg3i1JdNYT3MFbqUYKBamGF7oj-bQvhufAQAiEA4h7eE-9vAG1IwxbRkm8FZDQIN5ctR2jBs_KFpHhaRNo=","userHandle":"OTdjMjQxZjUtNWY5OC00Y2YzLTgyYjUtOTg4NGQxNzJmNmYx"},"id":"1sN4GKDr7x30Hol_9QtO-KV_Erc","type":"public-key","rawId":"1sN4GKDr7x30Hol_9QtO-KV_Erc="}'
```
參數
```jsonld=
{
"response": {
"clientDataJSON": "eyJ0eXBlIjoid2ViYXV0aG4uZ2V0IiwiY2hhbGxlbmdlIjoidm5GSWVIZHNkbS1XeHQzZDR2WHl4MllfOFFyQ2tpTTJjd0t0c0dCYlhqNCIsIm9yaWdpbiI6Imh0dHBzOi8vZmlkby5teWNhcmQ1MjAuY29tIiwiY3Jvc3NPcmlnaW4iOmZhbHNlLCJvdGhlcl9rZXlzX2Nhbl9iZV9hZGRlZF9oZXJlIjoiZG8gbm90IGNvbXBhcmUgY2xpZW50RGF0YUpTT04gYWdhaW5zdCBhIHRlbXBsYXRlLiBTZWUgaHR0cHM6Ly9nb28uZ2wveWFiUGV4In0=",
"authenticatorData": "XcNeBx1lSNvFKB55wk9RJ3q2MbERif24WLHq5owCJ70dAAAAAA==",
"signature": "MEUCIE0YJdJC1xg3i1JdNYT3MFbqUYKBamGF7oj-bQvhufAQAiEA4h7eE-9vAG1IwxbRkm8FZDQIN5ctR2jBs_KFpHhaRNo=",
"userHandle": "OTdjMjQxZjUtNWY5OC00Y2YzLTgyYjUtOTg4NGQxNzJmNmYx"
},
"id": "1sN4GKDr7x30Hol_9QtO-KV_Erc",
"type": "public-key",
"rawId": "1sN4GKDr7x30Hol_9QtO-KV_Erc="
}
```
回傳
```jsonld=
{
"success": true,
"data": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL015Q2FyZCxmaWRvLm15Y2FyZDUyMC5jb20iLCJzdWIiOiI5N2MyNDFmNS01Zjk4LTRjZjMtODJiNS05ODg0ZDE3MmY2ZjEiLCJleHAiOjMzMjc1ODg2MzY1LCJpYXQiOjE3MTg5MzQzNjUsImp0aSI6IjRkYTlkYzAwLTU2ZjItNGNlNS05YjgxLTA1NDk5YmM1Nzk4MiIsIm9uY2UiOnRydWUsInNjb3BlIjoidXNlciIsInRlbmFudElkIjoiNzU5NDMwOTQtZjE3NC00NjRmLWFiNTktYmYxNGI4ODc0Y2NhIiwidGVuYW50S2V5IjoiTXlDYXJkIiwidHJhbnNhY3Rpb24iOiIiLCJzZXNzaW9uSWQiOiIzNTMyNDllNC02YTRlLTRhMTgtOTliNS03MWI5MGY5NjIzOGYiLCJlbWFpbCI6ImtldmluLmxpb3VAc29mdC13b3JsZC5jb20udHcifQ.ZohNHaGG-Z7olsNWWa5c_VPxFARewSuVFx1fdMeX0fQX5LLGVYkf-q46sURYlIE6bbL9BDJFsVoo5FCy8UzjtOoU9TPfuxsvqDVYfK6XZgntl-QfHS_0GrW_x3TgMows5r6IYkeNSZbE1X1JksMnwj6OnzprApCzjdnv32xtmLZ0ygUd-ToKMHYfZccOK4mNWUaXu2TBfOJmZBeRLnXhBmA8QJRLsuLYejoG3Zr2TWqM_2vRWcrz6Ab6GlUdG7O8XbOUYg0KUpSZJ3GvLbAWCpNvB2LbaG6LeicU8h7jMffJ8sCkt3xf0b8KQfcF1IRd77dSFG0XFKfOeV9p2cXqrWU2uuiMNLIZthPd_qzXIyGcKXGTgbzkuG0dK0m5-KMy6apW8klt04_FVm_X6ZTgmf9qcpkDqCTKCsfrc3pT8MjsrvKUIxLpjkGzHfzZWsW5_c3X5TSZXMmz2OAT00CHcjd3NiqL9twlVAM9TFMBkKTvzdsAqEmNWzT9hjwfdgVKCbiU7LJ2njSlWpvF1nwQ8nM6ANdBhw5kBVB2UvLEtDU6ukxzPgfWgoEdcLtyqLYC4Z1NRW-Q-HqZBnKBguHp0DN9Bg3Be5Xp-kNUezxA3bPRCrizmz3qN6WvTUl6d9qFtIKJek7R_eurY692Vm2RmMs_EBTu110xKsjsVRd1mZk"
}
```