@authme/identity-verification 2.2.1-rc.3 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/locale/en_US.json +10 -3
- package/assets/locale/zh_Hant_TW.json +10 -3
- package/assets/styles/style.css +14 -15
- package/index.cjs +156 -26
- package/index.js +156 -26
- package/package.json +6 -6
- package/src/lib/interface/config.interface.d.ts +2 -0
- package/src/lib/ui/basic.d.ts +1 -0
- package/src/lib/ui/liveness-flow.d.ts +2 -1
- package/src/lib/ui/liveness.ui.d.ts +12 -2
- package/src/lib/ui/ui-init.d.ts +1 -1
package/assets/locale/en_US.json
CHANGED
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"confirm.nationality": "Nationality",
|
|
78
78
|
"confirm.givenName": "Given name",
|
|
79
79
|
"confirm.documentNumber": "Number",
|
|
80
|
-
"confirm.expiryDate": "Date
|
|
80
|
+
"confirm.expiryDate": "Expiry Date",
|
|
81
81
|
"confirm.passport": "Passport",
|
|
82
82
|
"confirm.personalNumber": "ID number",
|
|
83
83
|
"confirm.documentType": "Document type",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"liveness.title": "Frame your face",
|
|
95
95
|
"liveness.needMoreFrame": "Identifying...",
|
|
96
96
|
"liveness.error.faceNotAtCenter": "Align your face",
|
|
97
|
-
"liveness.error.faceTooLarge": "Move
|
|
97
|
+
"liveness.error.faceTooLarge": "Move further",
|
|
98
98
|
"liveness.error.needOpenEyes": "Make sure the eyes are not covered",
|
|
99
99
|
"liveness.error.noFace": "Your face is not detected",
|
|
100
100
|
"liveness.error.needFaceToCamera": "Look straight ahead",
|
|
@@ -196,5 +196,12 @@
|
|
|
196
196
|
"verify.residentCardFrontSide": "Align the front of your Resident Card",
|
|
197
197
|
"verify.residentCardBackSide": "Align the back of your Resident Card",
|
|
198
198
|
"verify.confirmResidentCardFrontSide": "Confirm the front of your Resident Card",
|
|
199
|
-
"verify.confirmResidentCardBackSide": "Confirm the back of your Resident Card"
|
|
199
|
+
"verify.confirmResidentCardBackSide": "Confirm the back of your Resident Card",
|
|
200
|
+
"confirm.authority": "Authority",
|
|
201
|
+
"nfc.passport.error.doesntSupport.title": "This device does not support NFC",
|
|
202
|
+
"nfc.passport.error.doesntSupport.text": "The phone model is not equipped with NFC capabilities.",
|
|
203
|
+
"nfc.passport.error.confirmButton": "Confirm",
|
|
204
|
+
"nfc.passport.error.notTurnOn.title": "This device does not turn on NFC",
|
|
205
|
+
"nfc.passport.error.notTurnOn.text": "Please make sure the NFC function is activated in Settings.",
|
|
206
|
+
"nfc.passport.error.notMatch.text": "The information does not match, please try again."
|
|
200
207
|
}
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"confirm.nationality": "國籍",
|
|
78
78
|
"confirm.givenName": "名字",
|
|
79
79
|
"confirm.documentNumber": "證件號碼",
|
|
80
|
-
"confirm.expiryDate": "
|
|
80
|
+
"confirm.expiryDate": "證件到期日",
|
|
81
81
|
"confirm.passport": "護照",
|
|
82
82
|
"confirm.personalNumber": "身分證統一編號",
|
|
83
83
|
"confirm.documentType": "證件類型",
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
"network.error.offline": "無法連線上網",
|
|
111
111
|
"general.loading": "載入中",
|
|
112
112
|
"verify.fraud.hintTitle": "請確認您操作時",
|
|
113
|
-
"verify.fraud.hintText": "1.光源充足且避免背光\n2
|
|
113
|
+
"verify.fraud.hintText": "1.光源充足且避免背光\n2.對齊白色邊框",
|
|
114
114
|
"livenessVerify.error.customerNotFound": "客戶未註冊",
|
|
115
115
|
"livenessVerify.error.deactivateCustomer": "客戶已停用",
|
|
116
116
|
"livenessVerify.error.customerInProgress": "註冊審核中",
|
|
@@ -196,5 +196,12 @@
|
|
|
196
196
|
"verify.residentCardFrontSide": "將居留證正面置於方框中拍攝",
|
|
197
197
|
"verify.residentCardBackSide": "將居留證背面置於方框中拍攝",
|
|
198
198
|
"verify.confirmResidentCardFrontSide": "確認居留證正面",
|
|
199
|
-
"verify.confirmResidentCardBackSide": "確認居留證背面"
|
|
199
|
+
"verify.confirmResidentCardBackSide": "確認居留證背面",
|
|
200
|
+
"confirm.authority": "發照機關",
|
|
201
|
+
"nfc.passport.error.doesntSupport.title": "裝置不支援NFC",
|
|
202
|
+
"nfc.passport.error.doesntSupport.text": "手機型號無法支援NFC功能",
|
|
203
|
+
"nfc.passport.error.confirmButton": "確認",
|
|
204
|
+
"nfc.passport.error.notTurnOn.title": "裝置未開啟NFC",
|
|
205
|
+
"nfc.passport.error.notTurnOn.text": "請檢查裝置設定是否開啟NFC功能",
|
|
206
|
+
"nfc.passport.error.notMatch.text": "資料不符,請再試一次"
|
|
200
207
|
}
|
package/assets/styles/style.css
CHANGED
|
@@ -106,15 +106,9 @@
|
|
|
106
106
|
max-height: 24px;
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
|
-
.authme-container .authme-header.headerMode1 .authme-header__title {
|
|
110
|
-
display: none;
|
|
111
|
-
}
|
|
112
109
|
.authme-container .authme-header.headerMode2 .authme-header__title {
|
|
113
110
|
visibility: hidden;
|
|
114
111
|
}
|
|
115
|
-
.authme-container .authme-header.headerMode2 .authme-header__subtitle {
|
|
116
|
-
display: none;
|
|
117
|
-
}
|
|
118
112
|
.authme-container .authme-header.headerMode3 .authme-header__subtitle {
|
|
119
113
|
visibility: hidden;
|
|
120
114
|
}
|
|
@@ -168,7 +162,7 @@
|
|
|
168
162
|
}
|
|
169
163
|
.authme-container .loading-outer {
|
|
170
164
|
width: 100vw;
|
|
171
|
-
height:
|
|
165
|
+
height: calc(var(--authMe-vh, 1vh) * 100);
|
|
172
166
|
position: absolute;
|
|
173
167
|
top: 0;
|
|
174
168
|
left: 0;
|
|
@@ -183,12 +177,12 @@
|
|
|
183
177
|
height: 50px;
|
|
184
178
|
animation: spin 2s linear infinite;
|
|
185
179
|
position: absolute;
|
|
186
|
-
top: calc(
|
|
180
|
+
top: calc(var(--authMe-vh, 1vh) * 50 - 25px);
|
|
187
181
|
left: calc(50vw - 25px);
|
|
188
182
|
}
|
|
189
183
|
.authme-container .loading-text {
|
|
190
184
|
position: absolute;
|
|
191
|
-
top: calc(
|
|
185
|
+
top: calc(var(--authMe-vh, 1vh) * 50 + 40px);
|
|
192
186
|
width: 100vw;
|
|
193
187
|
text-align: center;
|
|
194
188
|
font-weight: 500;
|
|
@@ -480,6 +474,9 @@
|
|
|
480
474
|
.ocr-container .video-container video.front {
|
|
481
475
|
transform: rotateY(180deg);
|
|
482
476
|
}
|
|
477
|
+
.ocr-container .video-container .video-container__close.authme-hide {
|
|
478
|
+
display: none;
|
|
479
|
+
}
|
|
483
480
|
.ocr-container .video-container .title {
|
|
484
481
|
top: calc(30vh - 52px);
|
|
485
482
|
justify-content: start;
|
|
@@ -1188,7 +1185,6 @@
|
|
|
1188
1185
|
}
|
|
1189
1186
|
.liveness-container .video-container .status {
|
|
1190
1187
|
top: 74vh;
|
|
1191
|
-
padding-top: 35px;
|
|
1192
1188
|
}
|
|
1193
1189
|
.liveness-container .face-mask {
|
|
1194
1190
|
position: absolute;
|
|
@@ -1240,7 +1236,7 @@
|
|
|
1240
1236
|
}
|
|
1241
1237
|
.liveness-container .text-title {
|
|
1242
1238
|
font-weight: 500;
|
|
1243
|
-
font-size:
|
|
1239
|
+
font-size: 18px;
|
|
1244
1240
|
line-height: 20px;
|
|
1245
1241
|
letter-spacing: 0.05em;
|
|
1246
1242
|
color: #474a53;
|
|
@@ -1255,7 +1251,7 @@
|
|
|
1255
1251
|
color: #ffffff;
|
|
1256
1252
|
padding: 8px 14px;
|
|
1257
1253
|
}
|
|
1258
|
-
.liveness-container .video-container__close {
|
|
1254
|
+
.liveness-container .video-container__close.authme-hide {
|
|
1259
1255
|
display: none;
|
|
1260
1256
|
}
|
|
1261
1257
|
.liveness-container .liveness-guide-panel {
|
|
@@ -1385,13 +1381,15 @@
|
|
|
1385
1381
|
cursor: pointer;
|
|
1386
1382
|
}
|
|
1387
1383
|
.liveness-container .liveness-guide-close {
|
|
1388
|
-
display: none;
|
|
1389
1384
|
width: 24px;
|
|
1390
1385
|
height: 24px;
|
|
1391
1386
|
flex: none;
|
|
1392
1387
|
order: 0;
|
|
1393
1388
|
flex-grow: 0;
|
|
1394
|
-
background-image:
|
|
1389
|
+
background-image: var(--authme-close-icon-image);
|
|
1390
|
+
}
|
|
1391
|
+
.liveness-container .liveness-guide-close.authme-hide {
|
|
1392
|
+
display: none;
|
|
1395
1393
|
}
|
|
1396
1394
|
|
|
1397
1395
|
@media screen and (min-width: 840px) {
|
|
@@ -1450,6 +1448,7 @@
|
|
|
1450
1448
|
:root {
|
|
1451
1449
|
--authme-font-small: 12px;
|
|
1452
1450
|
--authme-font-mid: 16px;
|
|
1451
|
+
--authme-font-large: 18px;
|
|
1453
1452
|
--authme-outer: rgba(0, 0, 0, 0.65);
|
|
1454
1453
|
--authme-menu-footer: #b4b7bd;
|
|
1455
1454
|
--atuhme-btn-active: #00b1a7;
|
|
@@ -1469,4 +1468,4 @@
|
|
|
1469
1468
|
--authme-back-icon-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAD7SURBVHgB3ZU9EoIwEIVXuQA3MCWl3EA7y3ACh5voSeQIWFI53sCSztYypR2+jHGGwYT8NvpmdhIW+B4hP0v061pQgDjnazQXhECUbdsK07NL8tQIniOYCkpiMIFLHfH1t7l3nH+RAX6wvec0gqqq9iFwKesIJHwYhmaUcoZbDWLhswYp4EYDDbwGvKEAfRlgtTA09xRwKd0qEio+WlGEsmmi7/tnURQdujt6L8sNrmX+SgHKdEnAHoCe0eWxJpnpBmBCY5Ij35GHrBtNTbrcxUylGkx6TY5yOotiTHwOOxZi4lVwQky8K5rGpJyrCaElk6E5yT7gW/prvQCHpnbdSHXj/AAAAABJRU5ErkJggg==");
|
|
1470
1469
|
}
|
|
1471
1470
|
|
|
1472
|
-
/*# sourceMappingURL=data:application/json;base64,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SUFDUCxZQUFZO0lBQ1oscUNBQXFDO0VBQ3ZDO0VBQ0E7SUFDRSxrQkFBa0I7SUFDbEIsWUFBWTtJQUNaLGFBQWE7SUFDYixRQUFRO0lBQ1IsU0FBUztJQUNULDRDQUE0QztJQUM1QyxrQkFBa0I7SUFDbEIsYUFBYTtJQUNiLHNCQUFzQjtFQUN4QjtFQUNBO0lBQ0UsZ0JBQWdCO0lBQ2hCLG1CQUFtQjtFQUNyQjtFQUNBO0lBQ0UsVUFBVTtJQUNWLFdBQVc7SUFDWCxjQUFjO0lBQ2Qsc0NBQXNDO0VBQ3hDO0VBQ0E7SUFDRSxhQUFhO0lBQ2IsdUJBQXVCO0lBQ3ZCLG1CQUFtQjtJQUNuQixZQUFZO0VBQ2Q7RUFDQTtJQUNFLGNBQWM7RUFDaEI7RUFDQTtJQUNFLGNBQWM7RUFDaEI7RUFDQTtJQUNFLGNBQWM7SUFDZCxhQUFhO0VBQ2Y7QUFDRjtBQUNBO0VBQ0U7SUFDRSxZQUFZO0VBQ2Q7QUFDRjtBQUNBO0VBQ0UseUJBQXlCO0VBQ3pCLHVCQUF1QjtFQUN2QixtQ0FBbUM7RUFDbkMsNkJBQTZCO0VBQzdCLDRCQUE0QjtFQUM1QixrQ0FBa0M7RUFDbEMsd0JBQXdCO0VBQ3hCLHlCQUF5QjtFQUN6QixtQ0FBbUM7RUFDbkMsbUNBQW1DO0VBQ25DLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsaUNBQWlDO0VBQ2pDLDhCQUE4QjtBQUNoQzs7QUFFQTtFQUNFLDRmQUE0ZjtFQUM1Zix1aEJBQXVoQjtBQUN6aEIiLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOnJvb3Qge1xuICAtLW1haW4tYmctY29sb3I6ICMwMGMxYjY7XG4gIC0tbWFpbi10ZXh0LWNvbG9yOiAjZmZmZmZmO1xuICAtLWhpbnQtY29udGVudC1jb2xvcjogIzAwYzFiNjtcbiAgLS1zY2FubmVyLWRlZmF1bHQtY29sb3I6ICNmZmZmZmY7XG4gIC0tc2Nhbm5lci1wYXNzLWNvbG9yOiAjN2NmZmY5O1xuICAtLXNjYW5uZXItZXJyb3ItY29sb3I6ICNmZjcwNzA7XG4gIC0tbG9hZGluZy1jb2xvcjogIzVhZWVjYjtcbiAgLS1sb2FkaW5nLXRleHQtY29sb3I6ICNmZmZmZmY7XG4gIC0tbG90dGllLWFycm93LWNvbG9yOiB1bnNldDtcbiAgLS1sb3R0aWUtc2Nhbi1jb2xvcjogdW5zZXQ7XG4gIC0tbG90dGllLXN1Y2Nlc3MtY29sb3I6IHVuc2V0O1xufVxuXG4uYXV0aG1lLWxvYWRpbmctc2RrLW91dGVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiA5OTk7XG4gIHdpZHRoOiAxMDB2dztcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYXV0aG1lLW91dGVyKTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBkaXNwbGF5OiBmbGV4O1xufVxuLmF1dGhtZS1sb2FkaW5nLXNkay1vdXRlciAuYXV0aG1lLWxvYWRpbmctc2RrLWNvbnRlbnQge1xuICBtYXJnaW46IGF1dG87XG4gIHdpZHRoOiA1MCU7XG4gIGhlaWdodDogMzAlO1xuICBtYXgtd2lkdGg6IDIwMHB4O1xuICBtYXgtaGVpZ2h0OiA3NXB4O1xufVxuXG4uYXV0aG1lLWNvbnRhaW5lciB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICB3aWR0aDogMTAwdnc7XG4gIGhlaWdodDogY2FsYyh2YXIoLS1hdXRoTWUtdmgpICogMTAwKTtcbiAgbWF4LWhlaWdodDogMTAwdmg7XG4gIHBhZGRpbmc6IDNyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgei1pbmRleDogMTtcbn1cbi5hdXRobWUtY29udGFpbmVyICosXG4uYXV0aG1lLWNvbnRhaW5lciAqOjpiZWZvcmUsXG4uYXV0aG1lLWNvbnRhaW5lciAqOjphZnRlciB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuc2hvdyB7XG4gIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyIHtcbiAgaGVpZ2h0OiA2MHB4O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMHB4O1xuICBsZWZ0OiAwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBpbnNldDogMHB4O1xuICBwYWRkaW5nOiAxMHB4IDE2cHg7XG4gIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7XG4gIGdyaWQtdGVtcGxhdGUtcm93czogNDBweDtcbiAgY29sdW1uLWdhcDogMTZweDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1pdGVtczogY2VudGVyO1xuICB6LWluZGV4OiAyMDA7XG4gIGJveC1zaGFkb3c6IDBweCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlcl9fdGl0bGUge1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OXB4KSB7XG4gIC5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyX190aXRsZSB7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICB9XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlcl9fc3VidGl0bGUge1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBjb2xvcjogIzk5OWVhNjtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjlweCkge1xuICAuYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlcl9fc3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgfVxufVxuLmF1dGhtZS1jb250YWluZXIgLmF1dGhtZS1oZWFkZXJfX2ljb24ge1xuICBoZWlnaHQ6IDEwMCU7XG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gIG1heC13aWR0aDogMTAwJTtcbiAgbWF4LWhlaWdodDogMjBweDtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjlweCkge1xuICAuYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlcl9faWNvbiB7XG4gICAgbWF4LWhlaWdodDogMjRweDtcbiAgfVxufVxuLmF1dGhtZS1jb250YWluZXIgLmF1dGhtZS1oZWFkZXIuaGVhZGVyTW9kZTEgLmF1dGhtZS1oZWFkZXJfX3RpdGxlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyLmhlYWRlck1vZGUyIC5hdXRobWUtaGVhZGVyX190aXRsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyLmhlYWRlck1vZGUyIC5hdXRobWUtaGVhZGVyX19zdWJ0aXRsZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlci5oZWFkZXJNb2RlMyAuYXV0aG1lLWhlYWRlcl9fc3VidGl0bGUge1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlci5oZWFkZXJNb2RlNCB7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEsIDFmcik7XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlci5oZWFkZXJNb2RlNCAuYXV0aG1lLWhlYWRlcl9fdGl0bGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmF1dGhtZS1jb250YWluZXIgLmF1dGhtZS1oZWFkZXIuaGVhZGVyTW9kZTQgLmF1dGhtZS1oZWFkZXJfX3N1YnRpdGxlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyLmhlYWRlck1vZGU1IC5hdXRobWUtaGVhZGVyX190aXRsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyLmhlYWRlck1vZGU1IC5hdXRobWUtaGVhZGVyX19zdWJ0aXRsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5hdXRobWUtY29udGFpbmVyIC52aWRlby1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IGNhbGModmFyKC0tYXV0aE1lLXZoKSAqIDEwMCk7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xufVxuLmF1dGhtZS1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lcl9fY2xvc2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNzVweDtcbiAgcmlnaHQ6IDIxcHg7XG4gIHotaW5kZXg6IDEwMTtcbn1cbi5hdXRobWUtY29udGFpbmVyIC52aWRlby1jb250YWluZXIgdmlkZW8ge1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG4gIGhlaWdodDogMTAwdmg7XG4gIHdpZHRoOiAxMDB2dztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuQGtleWZyYW1lcyBzcGluIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cbi5hdXRobWUtY29udGFpbmVyIC5sb2FkaW5nLW91dGVyIHtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IDEwMHZoO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjY1KTtcbiAgei1pbmRleDogMjAwO1xufVxuLmF1dGhtZS1jb250YWluZXIgLmxvYWRpbmcge1xuICBib3JkZXI6IDVweCBzb2xpZCB2YXIoLS1sb2FkaW5nLWNvbG9yKTtcbiAgYm9yZGVyLXRvcDogNXB4IHNvbGlkICNmZmY7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgd2lkdGg6IDUwcHg7XG4gIGhlaWdodDogNTBweDtcbiAgYW5pbWF0aW9uOiBzcGluIDJzIGxpbmVhciBpbmZpbml0ZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IGNhbGMoNTB2aCAtIDI1cHgpO1xuICBsZWZ0OiBjYWxjKDUwdncgLSAyNXB4KTtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5sb2FkaW5nLXRleHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogY2FsYyg1MHZoICsgNDBweCk7XG4gIHdpZHRoOiAxMDB2dztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDE4cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIGNvbG9yOiB2YXIoLS1sb2FkaW5nLXRleHQtY29sb3IpO1xufVxuLmF1dGhtZS1jb250YWluZXIgLmVycm9yLW1lc3NhZ2UtcGFuZWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogNDBweDtcbiAgd2lkdGg6IDk2dnc7XG4gIGhlaWdodDogNTJweDtcbiAgYmFja2dyb3VuZDogcmdiKDI5LCAzMCwgMzMpO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIHotaW5kZXg6IDIwMDtcbiAgZGlzcGxheTogZmxleDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW46IDAgMnZ3O1xuICBsZWZ0OiAwO1xufVxuLmF1dGhtZS1jb250YWluZXIgLmVycm9yLW1lc3NhZ2UtcGFuZWwgLmVycm9yLWljb24ge1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBtYXJnaW4tbGVmdDogMTZweDtcbiAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xufVxuLmF1dGhtZS1jb250YWluZXIgLmVycm9yLW1lc3NhZ2UtcGFuZWwgLmVycm9yLXRleHQge1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyOHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogI2ZmZmZmZjtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5lcnJvci1tZXNzYWdlLXBhbmVsIC5yZXRyeS10ZXh0IHtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIGNvbG9yOiAjZmY3MDcwO1xuICBmbGV4OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xufVxuLmF1dGhtZS1jb250YWluZXIgLnBvcHVwLXBhbmVsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDQwdmg7XG4gIGxlZnQ6IGNhbGMoNTB2dyAtIDEzOHB4KTtcbiAgd2lkdGg6IDI3N3B4O1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICB6LWluZGV4OiA5OTk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMTZweCAyMHB4O1xufVxuLmF1dGhtZS1jb250YWluZXIgLnBvcHVwLXBhbmVsIC5wb3B1cC10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG59XG4uYXV0aG1lLWNvbnRhaW5lciAucG9wdXAtcGFuZWwgLnBvcHVwLWNvbnRlbnQge1xuICBtYXJnaW4tdG9wOiA0cHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5wb3B1cC1idG4ge1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICBtYXJnaW4tdG9wOiAyNnB4O1xuICBwYWRkaW5nOiAwcHggMjBweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tbWFpbi1iZy1jb2xvcik7XG4gIGJvcmRlcjogdW5zZXQ7XG4gIGhlaWdodDogMjhweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6IHZhcigtLW1haW4tdGV4dC1jb2xvcik7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG59XG4uYXV0aG1lLWNvbnRhaW5lciAucG9wdXAtYmFja2dyb3VuZCB7XG4gIHdpZHRoOiAxMDB2dztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMHZoO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogOTk4O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG5cbi5vY3ItY29udGFpbmVyIC50ZXh0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDM7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4ub2NyLWNvbnRhaW5lciAubG90dGllLW1hc2sge1xuICB6LWluZGV4OiAxMDM7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBkaXNwbGF5OiBub25lO1xuICBvcGFjaXR5OiAwLjY1O1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kOiBibGFjaztcbn1cbi5vY3ItY29udGFpbmVyIC5hbnRpLWZyYXVkLWluc3RydWN0aW9uLWNvbnRhaW5lciB7XG4gIHotaW5kZXg6IDEwNDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG9wYWNpdHk6IDE7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG59XG4ub2NyLWNvbnRhaW5lciAuYW50aS1mcmF1ZC1pbnN0cnVjdGlvbi1jb250YWluZXJfX3RleHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICB0b3A6IGNhbGMoMzB2aCAtIDgwcHgpO1xuICBsZWZ0OiAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIHBhZGRpbmc6IDAgM2VtO1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xufVxuLm9jci1jb250YWluZXIgLmFudGktZnJhdWQtaW5zdHJ1Y3Rpb24tY29udGFpbmVyIC5hbnRpLWZyYXVkLWluc3RydWN0aW9uLWFuaW1hdGlvbi1jb250YWluZXIge1xuICBtYXgtd2lkdGg6IDYzMHB4O1xuICBtYXJnaW46IGF1dG87XG4gIG1heC1oZWlnaHQ6IDMyNnB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMHB4O1xuICBsZWZ0OiAwcHg7XG4gIHJpZ2h0OiAwcHg7XG4gIGJvdHRvbTogMHB4O1xufVxuLm9jci1jb250YWluZXIgLmFudGktZnJhdWQtaW5zdHJ1Y3Rpb24tY29udGFpbmVyIC5idG4tY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgbWFyZ2luOiBhdXRvO1xuICB3aWR0aDogMTAwdnc7XG4gIHotaW5kZXg6IDE7XG4gIGJvdHRvbTogNDBweDtcbiAgbWF4LXdpZHRoOiAzNDNweDtcbn1cbi5vY3ItY29udGFpbmVyIC5hbnRpLWZyYXVkLWluc3RydWN0aW9uLWNvbnRhaW5lciAuYnRuLWNvbnRhaW5lciAuY29uZmlybS1idG4ge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA0OHB4O1xuICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1tYWluLWJnLWNvbG9yKTtcbiAgYm9yZGVyOiB1bnNldDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1zaXplOiAxN3B4O1xuICBsaW5lLWhlaWdodDogMjJweDtcbiAgY29sb3I6IHZhcigtLW1haW4tdGV4dC1jb2xvcik7XG59XG4ub2NyLWNvbnRhaW5lciAuYW50aS1mcmF1ZC1pbnN0cnVjdGlvbi1jb250YWluZXIgLmJ0bi1jb250YWluZXIgLmNvbmZpcm0tYnRuOmRpc2FibGVkIHtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIGJhY2tncm91bmQ6ICNlMWUzZTU7XG59XG4ub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gIHBhZGRpbmc6IDMycHggMjRweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Y1ZjVmNTtcbiAgYm9yZGVyLXJhZGl1czogMjBweCAyMHB4IDBweCAwcHg7XG4gIHotaW5kZXg6IDIwMDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtdHlwZS10ZXh0IHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDIwcHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC44cHg7XG4gIGNvbG9yOiAjMjEyMTIxO1xufVxuLm9jci1jb250YWluZXIgLmNvbmZpcm0taW1hZ2UtY29udGFpbmVyIC5pbWFnZS1saW5lIHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2VlZWVlZTtcbiAgbWFyZ2luLXRvcDogMjRweDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtbGluZS5kZXNrdG9wIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtY29udGFpbmVyIHtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgYm94LXNoYWRvdzogMHB4IDRweCA2MHB4IHJnYmEoNCwgNiwgMTUsIDAuMDUpO1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBwYWRkaW5nOiA4cHg7XG4gIG1heC13aWR0aDogNDAwcHg7XG4gIG1hcmdpbjogYXV0bztcbiAgbWFyZ2luLXRvcDogMjRweDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtY29udGFpbmVyIGNhbnZhcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHotaW5kZXg6IDEwMjtcbiAgbWF4LWhlaWdodDogNDB2aDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICB3aWR0aDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtZm9vdGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDEwMztcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtZm9vdGVyIGJ1dHRvbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDQ4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDI0cHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtZm9vdGVyIC5idG4tcmV0cnkge1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1oaW50LWNvbnRlbnQtY29sb3IpO1xuICBjb2xvcjogdmFyKC0taGludC1jb250ZW50LWNvbG9yKTtcbiAgYmFja2dyb3VuZDogdW5zZXQ7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG59XG4ub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciAuYnRuLXJldHJ5OmhvdmVyIHtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYXR1aG1lLWJ0bi1hY3RpdmUpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hdXRobWUtcmV0cnktYnRuLWFjdGl2ZSk7XG59XG4ub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciAuYnRuLWNvbXBsZXRlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWFpbi1iZy1jb2xvcik7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG4gIGNvbG9yOiB2YXIoLS1tYWluLXRleHQtY29sb3IpO1xuICBib3JkZXI6IHVuc2V0O1xufVxuLm9jci1jb250YWluZXIgLmNvbmZpcm0taW1hZ2UtY29udGFpbmVyIC5pbWFnZS1mb290ZXIgLmJ0bi1jb21wbGV0ZTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWF0dWhtZS1idG4tYWN0aXZlKTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjlweCkge1xuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IGNhbGMoNTB2aCAtIDI1MHB4KTtcbiAgICBsZWZ0OiBjYWxjKDUwdncgLSAzMDBweCk7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICB3aWR0aDogNjAwcHg7XG4gICAgaGVpZ2h0OiBmaXQtY29udGVudDtcbiAgICBtYXgtaGVpZ2h0OiA1MzBweDtcbiAgICBwYWRkaW5nOiAzOHB4IDI0cHggNDBweCAyNHB4O1xuICB9XG4gIC5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtbGluZSB7XG4gICAgbWF4LXdpZHRoOiA1MzdweDtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgbWFyZ2luLXRvcDogMTRweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICB9XG4gIC5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtbGluZS5kZXNrdG9wIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgfVxuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciBidXR0b24ge1xuICAgIHdpZHRoOiAxNjVweDtcbiAgICBtYXJnaW4tdG9wOiB1bnNldDtcbiAgfVxuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciAuYnRuLWNvbXBsZXRlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gIH1cbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgdmlkZW8uZnJvbnQge1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpO1xuICAtbXMtdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG4gIC1tb3otdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG4gIC1vLXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLnRpdGxlIHtcbiAgdG9wOiBjYWxjKDMwdmggLSA1MnB4KTtcbiAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLnRpdGxlIC50aXRsZS10ZXh0IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtYXgtd2lkdGg6IDgwJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBwYWRkaW5nOiA4cHggMTRweDtcbiAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLmhpbnQtdGV4dCB7XG4gIHdpZHRoOiAxMDB2dztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IGNhbGMoNTB2aCAtIDQ0cHgpO1xuICBmb250LXNpemU6IDYwcHg7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4gIGhlaWdodDogMTAwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGluZS1oZWlnaHQ6IDg4cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5zdGF0dXMge1xuICB0b3A6IDcwdmg7XG4gIHBhZGRpbmctdG9wOiAyMHB4O1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuc3RhdHVzIC5zdGF0dXMtdGV4dCB7XG4gIGZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgbWF4LXdpZHRoOiA5NSU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6IHByZTtcbiAgYmFja2dyb3VuZDogcmdiYSg2MCwgNjAsIDYwLCAwLjcpO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGNvbG9yOiAjZmZmZmZmO1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuc3RhdHVzIC5zdGF0dXMtdGV4dC5ub24tZW1wdHkge1xuICBwYWRkaW5nOiA4cHggMTRweDtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLmNhcmQtYm9yZGVyLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCk7XG4gIGluc2V0OiAwO1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuY2FyZC1ib3JkZXItY29udGFpbmVyX19ib3JkZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDEwMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuNjUpIDAgMCAwIDIwMDBweDtcbiAgb3BhY2l0eTogMC45O1xuICBtYXJnaW46IGF1dG87XG4gIG1heC1oZWlnaHQ6IDYwdmg7XG4gIG1heC13aWR0aDogOTV2dztcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAycztcbiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuICAtLWI6IDNweDtcbiAgLS1jOiB2YXIoLS1zY2FubmVyLWRlZmF1bHQtY29sb3IpO1xuICAtLXc6IDI3cHg7XG4gIC0tcjogMTJweDtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLmNhcmQtYm9yZGVyLWNvbnRhaW5lcl9fYm9yZGVyLnBhc3Mge1xuICAtLWM6IHZhcigtLXNjYW5uZXItcGFzcy1jb2xvcik7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5jYXJkLWJvcmRlci1jb250YWluZXJfX2JvcmRlci5lcnJvciB7XG4gIC0tYzogdmFyKC0tc2Nhbm5lci1lcnJvci1jb2xvcik7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5jYXJkLWJvcmRlci1jb250YWluZXJfX2JvcmRlcjo6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQ6IHZhcigtLWMsIHJlZCk7XG4gIHBhZGRpbmc6IDNweDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcik7XG4gIG1hc2s6IGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgdG9wL2NhbGMoMTAwJSAtIDIgKiB2YXIoLS13KSkgdmFyKC0tYiksIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgYm90dG9tL2NhbGMoMTAwJSAtIDIgKiB2YXIoLS13KSkgdmFyKC0tYiksIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgbGVmdC92YXIoLS1iKSBjYWxjKDEwMCUgLSAyICogdmFyKC0tdykpLCBsaW5lYXItZ3JhZGllbnQoI2ZmZiAwIDApIHJpZ2h0L3ZhcigtLWIpIGNhbGMoMTAwJSAtIDIgKiB2YXIoLS13KSksIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgY29udGVudC1ib3gsIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCk7XG4gIG1hc2stY29tcG9zaXRlOiBleGNsdWRlO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xufVxuQGtleWZyYW1lcyBzbGlkZWluTGVmdCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdW5zZXQ7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMTAwdncpIHJvdGF0ZVkoMzBkZWcpIHNjYWxlKDAuOSk7XG4gIH1cbn1cbkBrZXlmcmFtZXMgc2xpZGVpbkxlZnRUb0RlZmF1bHQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDEwMHZ3KSByb3RhdGVZKDMwZGVnKSBzY2FsZSgwLjkpO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHVuc2V0O1xuICB9XG59XG5Aa2V5ZnJhbWVzIHNsaWRlaW5SaWdodCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdW5zZXQ7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMTAwdncpIHJvdGF0ZVkoLTMwZGVnKSBzY2FsZSgwLjkpO1xuICB9XG59XG5Aa2V5ZnJhbWVzIHNsaWRlaW5SaWdodFRvRGVmYXVsdCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMTAwdncpIHJvdGF0ZVkoLTMwZGVnKSBzY2FsZSgwLjkpO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHVuc2V0O1xuICB9XG59XG5Aa2V5ZnJhbWVzIHNsaWRlaW5Ub3Age1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHVuc2V0O1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDEwMHZ3KSByb3RhdGVYKDMwZGVnKSBzY2FsZSgwLjkpO1xuICB9XG59XG5Aa2V5ZnJhbWVzIHNsaWRlaW5Ub3BUb0RlZmF1bHQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDEwMHZ3KSByb3RhdGVYKDMwZGVnKSBzY2FsZSgwLjkpO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHVuc2V0O1xuICB9XG59XG5Aa2V5ZnJhbWVzIHNsaWRlaW5Cb3R0b20ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHVuc2V0O1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDEwMHZ3KSByb3RhdGVYKC0zMGRlZykgc2NhbGUoMC45KTtcbiAgfVxufVxuQGtleWZyYW1lcyBzbGlkZWluQm90dG9tVG9EZWZhdWx0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgxMDB2dykgcm90YXRlWCgtMzBkZWcpIHNjYWxlKDAuOSk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdW5zZXQ7XG4gIH1cbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLnNjYW4ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgbWFyZ2luOiBhdXRvO1xuICBkaXNwbGF5OiBub25lO1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuc3VjY2Vzcyxcbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLmFycm93IHtcbiAgaGVpZ2h0OiA4MHB4O1xuICB3aWR0aDogODBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IGNhbGMoNTB2aCAtIDQwcHgpO1xuICBsZWZ0OiBjYWxjKDUwdncgLSA0MHB4KTtcbiAgei1pbmRleDogMjAwO1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuc2NhbiBzdmcge1xuICBmaWx0ZXI6IHZhcigtLWxvdHRpZS1zY2FuLWNvbG9yKTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLnN1Y2Nlc3Mgc3ZnIHtcbiAgZmlsdGVyOiB2YXIoLS1sb3R0aWUtc3VjY2Vzcy1jb2xvcik7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5hcnJvdyBzdmcge1xuICBmaWx0ZXI6IHZhcigtLWxvdHRpZS1hcnJvdy1jb2xvcik7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5zdGF0ZW1lbnQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDEwMztcbiAgYm90dG9tOiA0OHB4O1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogI2YxZjJmMztcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC44cHg7XG59XG4ub2NyLWNvbnRhaW5lciBidXR0b246bm90KDpkaXNhYmxlZCksXG4ub2NyLWNvbnRhaW5lciBbdHlwZT1idXR0b25dOm5vdCg6ZGlzYWJsZWQpLFxuLm9jci1jb250YWluZXIgW3R5cGU9cmVzZXRdOm5vdCg6ZGlzYWJsZWQpLFxuLm9jci1jb250YWluZXIgW3R5cGU9c3VibWl0XTpub3QoOmRpc2FibGVkKSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuZGF0YS1jb25maXJtIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDBweDtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA2MHB4KTtcbiAgcGFkZGluZzogMCAxNnB4O1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgbWFyZ2luLXRvcDogNjBweDtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmRhdGEtY29uZmlybSAuZGF0YS10eXBlIHtcbiAgbWF4LXdpZHRoOiA1MDBweDtcbiAgbWFyZ2luOiBhdXRvO1xuICBtYXJnaW4tdG9wOiAyNHB4O1xuICBtYXJnaW4tYm90dG9tOiA2cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMThweDtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmRhdGEge1xuICBwYWRkaW5nLWJvdHRvbTogMTI0cHg7XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5jYXJkLXR5cGUge1xuICBtYXJnaW46IDIwcHggMHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgY29sb3I6ICMwNDFiMmY7XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5kYXRhLWNvbHVtbiB7XG4gIG1heC13aWR0aDogNTAwcHg7XG4gIG1hcmdpbjogYXV0bztcbiAgbWFyZ2luLXRvcDogMjRweDtcbiAgbWFyZ2luLWJvdHRvbTogNnB4O1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuZGF0YS1jb2x1bW4gLnRpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogIzQ3NGE1Mztcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmRhdGEtY29sdW1uIC5jb250ZW50IHtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgY29sb3I6ICM0NzRhNTM7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDUwMHB4O1xuICBoZWlnaHQ6IDM2cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlMWUzZTU7XG4gIHBhZGRpbmctbGVmdDogMTRweDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuZGF0YS1jb2x1bW4gLmNvbnRlbnQudGV4dGFyZWEge1xuICByZXNpemU6IG5vbmU7XG4gIHBhZGRpbmctdG9wOiA4cHg7XG4gIHBhZGRpbmctYm90dG9tOiA4cHg7XG4gIGhlaWdodDogYXV0bztcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmRhdGEtY29sdW1uIC5jb250ZW50OjpwbGFjZWhvbGRlciB7XG4gIGNvbG9yOiAjY2NjZmQzO1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuYnV0dG9uLXBhbmVsIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogMTAwcHg7XG4gIHdpZHRoOiAxMDB2dztcbiAgYm94LXNoYWRvdzogdW5zZXQ7XG4gIHBhZGRpbmc6IDAgMTZweDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5jb25maXJtLWJ0biB7XG4gIG1hcmdpbi10b3A6IDEycHg7XG4gIHdpZHRoOiBjYWxjKDEwMHZ3IC0gMzJweCk7XG4gIG1heC13aWR0aDogMzQzcHg7XG4gIGhlaWdodDogNDhweDtcbiAgYm9yZGVyLXJhZGl1czogMjRweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0yKTtcbiAgYm9yZGVyOiB1bnNldDtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmNvbmZpcm0tYnRuOmRpc2FibGVkIHtcbiAgYmFja2dyb3VuZDogI2UxZTNlNTtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmhlYWRlciB7XG4gIGhlaWdodDogNjBweDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBpbnNldDogMHB4O1xuICBwYWRkaW5nOiAxMHB4IDE2cHg7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuICBjb2x1bW4tZ2FwOiAxNnB4O1xuICBncmlkLXRlbXBsYXRlLXJvd3M6IDQwcHg7XG4gIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gIHotaW5kZXg6IDIwMDtcbiAgYm94LXNoYWRvdzogMHB4IDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmhlYWRlciAuaGVhZGVyLXRpdGxlIHtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmhlYWRlciAuaGVhZGVyLWltZyB7XG4gIG1heC1oZWlnaHQ6IDI0cHg7XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5vY3ItY29uZmlybS1jb250YWluZXIgLmhlYWRlciAuaGVhZGVyLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gIH1cbiAgLm9jci1jb25maXJtLWNvbnRhaW5lciAuaGVhZGVyIC5oZWFkZXItaW1nIHtcbiAgICBtYXgtaGVpZ2h0OiAyMHB4O1xuICB9XG4gIC5vY3ItY29uZmlybS1jb250YWluZXIgLmJ1dHRvbi1wYW5lbCB7XG4gICAgYm94LXNoYWRvdzogMHB4IDBweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICB9XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIGJ1dHRvbjpub3QoOmRpc2FibGVkKSxcbi5vY3ItY29uZmlybS1jb250YWluZXIgW3R5cGU9YnV0dG9uXTpub3QoOmRpc2FibGVkKSxcbi5vY3ItY29uZmlybS1jb250YWluZXIgW3R5cGU9cmVzZXRdOm5vdCg6ZGlzYWJsZWQpLFxuLm9jci1jb25maXJtLWNvbnRhaW5lciBbdHlwZT1zdWJtaXRdOm5vdCg6ZGlzYWJsZWQpIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuZC1mbGV4IHtcbiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuanVzdGlmeS1jb250ZW50LWNlbnRlciB7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG59XG5cbi5zcGFjZSB7XG4gIGZsZXg6IDE7XG59XG5cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciB7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDYwcHg7XG4gIGxlZnQ6IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGluc2V0OiAwcHg7XG4gIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgei1pbmRleDogMjAwO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNDJweDtcbiAgbGVmdDogMHB4O1xuICB0b3A6IDIwcHg7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtaGVhZGVyIC5tZW51LWhlYWRlci1sZWZ0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogOHB4IDI0cHg7XG4gIGdhcDogNXB4O1xuICB3aWR0aDogMzAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAwO1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICBmbGV4LWdyb3c6IDE7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtaGVhZGVyIC5tZW51LWhlYWRlci1sZWZ0IC5tZW51LWhlYWRlci1iYWNrIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMjRweDtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUQ3U1VSQlZIZ0IzWlU5RW9Jd0VJVlh1UUEzTUNXbDNFQTd5M0FDaDV2b1NlUUlXRkk1M3NDU3p0WXlwUjIrakhHR3dZVDhOdnBtZGhJVytCNGhQMHYwNjFwUWdEam5helFYaEVDVWJkc0swN05MOHRRSW5pT1lDa3BpTUlGTEhmSDF0N2wzbkgrUkFYNnd2ZWMwZ3FxcTlpRndLZXNJSkh3WWhtYVVjb1piRFdMaHN3WXA0RVlERGJ3R3ZLRUFmUmxndFRBMDl4UndLZDBxRWlvK1dsR0VzbW1pNy90blVSUWR1anQ2TDhzTnJtWCtTZ0hLZEVuQUhvQ2UwZVd4SnBucEJtQkNZNUlqMzVHSHJCdE5UYnJjeFV5bEdreDZUWTV5T290aVRId09PeFppNGxWd1FreThLNXJHcEp5ckNhRWxrNkU1eVQ3Z1cvcHJ2UUNIcG5iZFNIWGovQUFBQUFCSlJVNUVya0pnZ2c9PVwiKTtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1oZWFkZXIgLm1lbnUtaGVhZGVyLXJpZ2h0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogOHB4IDI0cHggOHB4IDhweDtcbiAgZ2FwOiAxMHB4O1xuICB3aWR0aDogMzAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAyO1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICBmbGV4LWdyb3c6IDE7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtaGVhZGVyIC5tZW51LWhlYWRlci1yaWdodCAubWVudS1oZWFkZXItY2xvc2Uge1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1hdXRobWUtY2xvc2UtaWNvbi1pbWFnZSk7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtaGVhZGVyIC5tZW51LWhlYWRlci10aXRsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDBweDtcbiAgZ2FwOiAxMHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAxO1xuICBmbGV4LWdyb3c6IDA7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtaGVhZGVyIC5tZW51LWhlYWRlci10aXRsZSAubWVudS1oZWFkZXItdGl0bGUtdGV4dCB7XG4gIGhlaWdodDogMTAwJTtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zIFRDXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogIzQ3NGE1MztcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDA7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNDJweCAtIDEwcHgpO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jb3VudHJ5LXNlbGVjdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBwYWRkaW5nOiAwcHg7XG4gIGdhcDogOHB4O1xuICB3aWR0aDogOTAlO1xuICBsZWZ0OiAyNHB4O1xuICB0b3A6IDExMHB4O1xuICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICBtYXgtd2lkdGg6IDM3NXB4O1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNvdW50cnktc2VsZWN0IC5jb3VudHJ5LXNlbGVjdC1sYWJlbCB7XG4gIG1heC13aWR0aDogMzc1cHg7XG4gIGhlaWdodDogMjBweDtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zIFRDXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgY29sb3I6ICMyZjJmMmY7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAwO1xuICBmbGV4LWdyb3c6IDA7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY291bnRyeS1zZWxlY3QgLmNvdW50cnktc2VsZWN0LWRyb3Bkb3duIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMTJweCAxNnB4O1xuICBnYXA6IDhweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNTZweDtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBmbGV4OiBub25lO1xuICBvcmRlcjogMDtcbiAgZmxleC1ncm93OiAwO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNvdW50cnktc2VsZWN0IC5jb3VudHJ5LXNlbGVjdC1kcm9wZG93biAuY291bnRyeS1zZWxlY3QtZHJvcGRvd24tZnJhbWUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMHB4O1xuICBnYXA6IDhweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMjBweDtcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDA7XG4gIGZsZXgtZ3JvdzogMDtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jb3VudHJ5LXNlbGVjdCAuY291bnRyeS1zZWxlY3QtZHJvcGRvd24gLmNvdW50cnktc2VsZWN0LWRyb3Bkb3duLWZyYW1lIC5jb3VudHJ5LXNlbGVjdC1kcm9wZG93bi10ZXh0IHtcbiAgd2lkdGg6IDI2N3B4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGZvbnQtZmFtaWx5OiBcIk5vdG8gU2FucyBUQ1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjNDc0YTUzO1xuICBvcmRlcjogMTtcbiAgZmxleC1ncm93OiAxO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNvdW50cnktc2VsZWN0IC5jb3VudHJ5LXNlbGVjdC1kcm9wZG93biAuY291bnRyeS1zZWxlY3QtZHJvcGRvd24tZnJhbWUgLmNvdW50cnktc2VsZWN0LWRyb3Bkb3duLWljb24ge1xuICBkaXNwbGF5OiBub25lO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBmbGV4OiBub25lO1xuICBvcmRlcjogMjtcbiAgZmxleC1ncm93OiAwO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJRQUFBQVVDQVlBQUFDTmlSME5BQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBRHBTVVJCVkhnQjdZODlic0pBRklUbkxZbEU2U05RcG9pVU5PbkpEVUlYUlZhMDVaWndBdUFFMEdFcWpEQS9IZHdBRGtDQjRBSWNBUXFFQlhnZnV3VS9Rb0NGUk9tdm5EZnpOQU1rSkR3TVhRcXVxN0phVUlVMXl0MmdOcmdWZEtYS2NvVGlheXFkOC8zcTRxQ0xTNlBXa1RteVE4VDl2MzlWdlBiTTZqckNFTVNmSVVMbmJrUExyMVFab1UyQWtTRnd0ZDJxRjZ3dVpkN1pjbWpiUzVPY2E0SHZudS9OWXg4ZXdwdG8zVENXSHhCTmhPQ0MzbEhGdGlKR2MvV1N6Zy9PcHNZK1BNNXpWY200VHRNWjVVN2dsVzc1VTRoaE5oMlAzaisrbGtSNEU0eGNPL0I4SkNROGx6MGlwRktKaUV4WG53QUFBQUJKUlU1RXJrSmdnZz09XCIpO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNhcmQtdHlwZS1zZWxlY3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgcGFkZGluZzogMHB4O1xuICBnYXA6IDhweDtcbiAgd2lkdGg6IDkwJTtcbiAgbWF4LXdpZHRoOiAzNzVweDtcbiAgbGVmdDogMjRweDtcbiAgdG9wOiAyMThweDtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jYXJkLXR5cGUtc2VsZWN0IC5jYXJkLXR5cGUtc2VsZWN0LWxhYmVsIHtcbiAgd2lkdGg6IDMyN3B4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGZvbnQtZmFtaWx5OiBcIk5vdG8gU2FucyBUQ1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjMmYyZjJmO1xuICBmbGV4OiBub25lO1xuICBvcmRlcjogMDtcbiAgZmxleC1ncm93OiAwO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNhcmQtdHlwZS1zZWxlY3QgLmNhcmQtb3V0LWZyYW1lIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMTJweCAxNnB4O1xuICBnYXA6IDhweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNTZweDtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2ViZWJlYjtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICB0cmFuc2l0aW9uOiBib3JkZXIgNTAwbXM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jYXJkLXR5cGUtc2VsZWN0IC5jYXJkLW91dC1mcmFtZSAuY2FyZC1pbi1mcmFtZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAwcHg7XG4gIGdhcDogOHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAyMHB4O1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNhcmQtdHlwZS1zZWxlY3QgLmNhcmQtb3V0LWZyYW1lIC5jYXJkLWluLWZyYW1lIC5jYXJkLWxhYmVsIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB3aWR0aDogMjY3cHg7XG4gIGhlaWdodDogMjBweDtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zIFRDXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgY29sb3I6ICM0NzRhNTM7XG4gIG9yZGVyOiAwO1xuICBmbGV4LWdyb3c6IDE7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCAuY2FyZC1vdXQtZnJhbWUgLmNhcmQtaW4tZnJhbWUgLmNhcmQtbGFiZWw6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMTRweDtcbiAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBT0NBWUFBQUF2eER6d0FBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFFUlNVUkJWSGdCclpROVRzTkFFSVhmYkxZd29nZ1Y5WElFamtJSFJNR21NNlZ2RUNrWG9FS21RQ1pZaWJnQU5keUFJK0FqTEYyVXhEdVpSTXFQVjFFaXgzbk5hbWRIYjc2ZC9hRzdoNmRRc1h0bTBBV2FxU0NpbmlibVh0bWk2OC8zdEVBRDNVYXhVU1YrY2QrTkdTZlN3a3Q3Z1Q4WkRPcUlVSXcrMHF2VnRHSTR5amNMeDByN0FhR01wS3FSM3JhSCtXdUNtdEk3WW05dzZMT2kvMDQzem9aNSt1Z1ZyTFpsMzVZN1laeHhpYjRraFpDallzTEFOejNVbG9vaGxSaUlTYlltWUlUY1VqZEhFODQwQ3JsTGhoa3ZNajBuSVhWd2RqdW5GbUdBd0U0eC9nSHhsNVMrRk1SMmdETzdrOUFqMjA0NDZjVldCTGFSUEJzMDFOSkRxTFY4Q3NuRTRWdmNEUnBvNnRpNkdTVnpNMFp6b1VEYUdOMEFBQUFBU1VWT1JLNUNZSUk9XCIpO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNhcmQtdHlwZS1zZWxlY3QgLmNhcmQtb3V0LWZyYW1lIC5jYXJkLWluLWZyYW1lIC5jYXJkLWljb24ge1xuICB3aWR0aDogMTZweDtcbiAgaGVpZ2h0OiAxNnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LXNlbGY6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXI6IHZhcigtLWF1dGhtZS1jdXN0b21fX3ByaW1hcnktMikgc29saWQgMXB4O1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNhcmQtdHlwZS1zZWxlY3QgLmNhcmQtb3V0LWZyYW1lIC5jYXJkLWluLWZyYW1lIC5jYXJkLWluLWZyYW1lIC5jYXJkLWljb246OmFmdGVyIHtcbiAgY29udGVudDogXCIgXCI7XG4gIHdpZHRoOiA4cHg7XG4gIGhlaWdodDogOHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWF1dGhtZS1jdXN0b21fX3ByaW1hcnktMik7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IGF1dG87XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgNTAwbXM7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCAuY2FyZC1vdXQtZnJhbWU6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCB2YXIoLS1hdXRobWUtY3VzdG9tX19wcmltYXJ5LTIpIDEwJSwgdHJhbnNwYXJlbnQgMTAuMDElKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlO1xuICB0cmFuc2Zvcm06IHNjYWxlKDEwLCAxMCk7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzLCBvcGFjaXR5IDAuNXM7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCAuY2FyZC1vdXQtZnJhbWU6YWN0aXZlOmFmdGVyIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLCAwKTtcbiAgb3BhY2l0eTogMC4zO1xuICB0cmFuc2l0aW9uOiAwcztcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jYXJkLXR5cGUtc2VsZWN0IC5jYXJkLW91dC1mcmFtZS5hY3RpdmUge1xuICBib3JkZXItY29sb3I6IHZhcigtLWF1dGhtZS1jdXN0b21fX3ByaW1hcnktMik7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCAuY2FyZC1vdXQtZnJhbWUuYWN0aXZlIC5jYXJkLWluLWZyYW1lIC5jYXJkLWljb246OmFmdGVyIHtcbiAgY29udGVudDogXCIgXCI7XG4gIHdpZHRoOiA4cHg7XG4gIGhlaWdodDogOHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWF1dGhtZS1jdXN0b21fX3ByaW1hcnktMik7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IGF1dG87XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgNTAwbXM7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAubWVudS1jb250ZW50LWZvb3RlciB7XG4gIG1hcmdpbi10b3A6IDUwcHg7XG4gIHBhZGRpbmc6IDEwcHggMTBweCA0MHB4O1xuICB3aWR0aDogMTAwJTtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5tZW51LWNvbnRlbnQtZm9vdGVyIC5tZW51LWNvbnRlbnQtZm9vdGVyLWNvbnRlbnQge1xuICBtYXJnaW46IDAgYXV0bztcbiAgZm9udC1zaXplOiB2YXIoLS1hdXRobWUtZm9udC1zbWFsbCk7XG4gIGNvbG9yOiB2YXIoLS1hdXRobWUtbWVudS1mb290ZXIpO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLm1lbnUtY29udGVudC1mb290ZXIgLm1lbnUtY29udGVudC1mb290ZXItY29udGVudCAuZm9vdGVyLWNvbmZpcm0tYnV0dG9uIHtcbiAgd2lkdGg6IDkwJTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGhlaWdodDogNDhweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0yKTtcbiAgYm94LXNoYWRvdzogNHB4IDRweCAxNnB4IHJnYmEoMCwgMTkzLCAxODIsIDAuMjUpO1xuICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICBjb2xvcjogd2hpdGU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmb250LXNpemU6IHZhcigtLWF1dGhtZS1mb250LW1pZCk7XG4gIG1heC13aWR0aDogMzc1cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbjogYm9yZGVyIDUwMG1zLCBiYWNrZ3JvdW5kLWNvbG9yIDMwMG1zO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLm1lbnUtY29udGVudC1mb290ZXIgLm1lbnUtY29udGVudC1mb290ZXItY29udGVudCAuZm9vdGVyLWNvbmZpcm0tYnV0dG9uOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgdmFyKC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0xKSAxMCUsIHRyYW5zcGFyZW50IDEwLjAxJSk7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDUwJTtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxMCwgMTApO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcywgb3BhY2l0eSAwLjVzO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLm1lbnUtY29udGVudC1mb290ZXIgLm1lbnUtY29udGVudC1mb290ZXItY29udGVudCAuZm9vdGVyLWNvbmZpcm0tYnV0dG9uOmFjdGl2ZTphZnRlciB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMCwgMCk7XG4gIG9wYWNpdHk6IDAuMztcbiAgdHJhbnNpdGlvbjogMHM7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAubWVudS1jb250ZW50LWZvb3RlciAubWVudS1jb250ZW50LWZvb3Rlci1jb250ZW50IC5mb290ZXItY29uZmlybS1idXR0b24uZGlzYWJsZSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hdXRobWUtZGlzYWJsZSk7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAubWVudS1jb250ZW50LWZvb3RlciAubWVudS1jb250ZW50LWZvb3Rlci1jb250ZW50IC5mb290ZXItc3RhdGVtZW50IHtcbiAgbWFyZ2luLXRvcDogMTBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ubGl2ZW5lc3MtY29udGFpbmVyIC52aWRlby1jb250YWluZXIgdmlkZW8ge1xuICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAudGl0bGUge1xuICB0b3A6IGNhbGMoMjZ2aCAtIDU1cHgpO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5zdGF0dXMge1xuICB0b3A6IDc0dmg7XG4gIHBhZGRpbmctdG9wOiAzNXB4O1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAuZmFjZS1tYXNrIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgYm94LXNoYWRvdzogI2ZmZmZmZiAwcHggMHB4IDBweCAyMDAwcHg7XG4gIGhlaWdodDogNDh2aDtcbiAgbWFyZ2luOiBhdXRvO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIC0tYjogMHB4O1xuICAtLWM6IHRyYW5zcGFyZW50O1xuICAtLXc6IDI3cHg7XG4gIC0tcjogNTAlO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAuZmFjZS1tYXNrLnBhc3Mge1xuICAtLWM6IHZhcigtLXNjYW5uZXItcGFzcy1jb2xvcik7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5mYWNlLW1hc2suZXJyb3Ige1xuICAtLWM6IHZhcigtLXNjYW5uZXItZXJyb3ItY29sb3IpO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAuZmFjZS1tYXNrOjpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYywgcmVkKTtcbiAgcGFkZGluZzogNnB4O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yKTtcbiAgbWFzazogbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKSB0b3AvY2FsYygxMDAlIC0gMiAqIHZhcigtLXcpKSB2YXIoLS1iKSwgbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKSBib3R0b20vY2FsYygxMDAlIC0gMiAqIHZhcigtLXcpKSB2YXIoLS1iKSwgbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKSBsZWZ0L3ZhcigtLWIpIGNhbGMoMTAwJSAtIDIgKiB2YXIoLS13KSksIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgcmlnaHQvdmFyKC0tYikgY2FsYygxMDAlIC0gMiAqIHZhcigtLXcpKSwgbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKSBjb250ZW50LWJveCwgbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKTtcbiAgbWFzay1jb21wb3NpdGU6IGV4Y2x1ZGU7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC50ZXh0LXBhbmVsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDM7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiAxMDB2dztcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLnRleHQtdGl0bGUge1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDI0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogIzQ3NGE1Mztcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLnRleHQtaGludCB7XG4gIGJhY2tncm91bmQ6IHJnYmEoNjAsIDYwLCA2MCwgMC43KTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgcGFkZGluZzogOHB4IDE0cHg7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC52aWRlby1jb250YWluZXJfX2Nsb3NlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLXBhbmVsIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogNjBweDtcbiAgbGVmdDogMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaW5zZXQ6IDBweDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBkaXNwbGF5OiBncmlkO1xuICB6LWluZGV4OiAyMDA7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkLWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNDJweDtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWhlYWRlci1sZWZ0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogOHB4IDI0cHg7XG4gIGdhcDogNXB4O1xuICB3aWR0aDogMzAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAwO1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICBmbGV4LWdyb3c6IDE7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1oZWFkZXItcmlnaHQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiA4cHggMjRweCA4cHggOHB4O1xuICBnYXA6IDEwcHg7XG4gIHdpZHRoOiAzMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDI7XG4gIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWhlYWRlci10aXRsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDBweDtcbiAgZ2FwOiAxMHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAxO1xuICBmbGV4LWdyb3c6IDA7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1oZWFkZXItdGl0bGUtdGV4dCB7XG4gIGhlaWdodDogMTAwJTtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zIFRDXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogIzQ3NGE1MztcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDA7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWltZy1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICB0b3A6IDkwcHg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWQtaW1nIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDMyNHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTFlM2U1O1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtaGludC1ncm91cCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLXRvcDogMjBweDtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWhpbnQtZ3JvdXAgPiB1bCB7XG4gIHBhZGRpbmctbGVmdDogMHB4O1xuICBtYXgtd2lkdGg6IDI3OXB4O1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtaGludC1ncm91cCA+IHVsID4gbGkge1xuICBmb250LWZhbWlseTogXCJOb3RvIFNhbnMgVENcIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBtYXJnaW46IDRweCAwcHg7XG4gIGNvbG9yOiAjNDc0YTUzO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtaGludC1ncm91cCA+IHVsID4gbGk6Om1hcmtlciB7XG4gIGNvbG9yOiAjMjU2MDhhO1xuICBmb250LXNpemU6IDZweDtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWQtY29udGludWUtYnRuIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHdpZHRoOiAzNDNweDtcbiAgaGVpZ2h0OiA0OHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hdXRobWUtY3VzdG9tX19wcmltYXJ5LTIpO1xuICBib3gtc2hhZG93OiA0cHggNHB4IDE2cHggcmdiYSgwLCAxOTMsIDE4MiwgMC4yNSk7XG4gIGJvcmRlci1yYWRpdXM6IDI0cHg7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICBtYXJnaW46IDMwcHggYXV0bztcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZGUtY2xvc2Uge1xuICBkaXNwbGF5OiBub25lO1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBmbGV4OiBub25lO1xuICBvcmRlcjogMDtcbiAgZmxleC1ncm93OiAwO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJrQUFBQVlDQVlBQUFBUHRWYkdBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBRG9TVVJCVkhnQjdaVE5EWUpBRUlVZjBvZ05nQjRvZ0RvSU1mRkdGMkFYSERtZ2RjQ2RpOUNBbmVCT05JWnMxdDIzeG9NbWZBbmhKenY3WmRpWkFWYitndXhRbEhKOUt5YlVQK1I1a2M1QW94N1RhSjlndWc0OUNBRm1WQkt6aTVOK0hJZWJWU0lMb2pnSkVDQmxSQXNCMVAxMGJ1c0dya3lFYVJ3NlJxUUxMbTFkbWZZelNoZ1JLN0JLYkNJZmdSQ0FJTXVMU3Ewc253R2RLb3lVRlFnaENMU010ajRDWVFPV2pkclc5bTZCeW1SNUJ2Szc4TWlHN2lPbnhIRElSNTgrY2tyZVZSSGJSMDZKcTB4OVJPRW5BbCtSYlVCU1phcUwvQVlrMExOOThCS3BHTk9BWFBrOTdtT2t3b2dnWmRLakFBQUFBRWxGVGtTdVFtQ0NcIik7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDg0MHB4KSB7XG4gIC5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWJhY2tncm91bmQge1xuICAgIHdpZHRoOiAxMDB2dztcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiA5OTk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjY1KTtcbiAgfVxuICAubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1iYWNrZ3JvdW5kIC5saXZlbmVzcy1ndWlkZS1wYW5lbCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiA4MDBweDtcbiAgICBoZWlnaHQ6IDY4NHB4O1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB9XG4gIC5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWJhY2tncm91bmQgLmxpdmVuZXNzLWd1aWRlLXBhbmVsIC5saXZlbmVzcy1ndWlkLWhlYWRlciB7XG4gICAgbWFyZ2luLXRvcDogMzBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICB9XG4gIC5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWJhY2tncm91bmQgLmxpdmVuZXNzLWd1aWRlLXBhbmVsIC5saXZlbmVzcy1ndWlkZS1kaXZpZGUge1xuICAgIHdpZHRoOiA3MCU7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYXV0aG1lLWRpdmlkZSk7XG4gIH1cbiAgLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZGUtYmFja2dyb3VuZCAubGl2ZW5lc3MtZ3VpZGUtcGFuZWwgLmxpdmVuZXNzLWd1aWRlLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW46IGF1dG87XG4gIH1cbiAgLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZGUtYmFja2dyb3VuZCAubGl2ZW5lc3MtZ3VpZGUtcGFuZWwgLmxpdmVuZXNzLWd1aWRlLWNvbnRlbnQgLmxpdmVuZXNzLWd1aWRlLWltZy1jb250YWluZXIge1xuICAgIHdpZHRoOiBpbml0aWFsO1xuICB9XG4gIC5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWJhY2tncm91bmQgLmxpdmVuZXNzLWd1aWRlLXBhbmVsIC5saXZlbmVzcy1ndWlkZS1jb250ZW50IC5saXZlbmVzcy1ndWlkZS1pbWctY29udGFpbmVyIC5saXZlbmVzcy1ndWlkLWltZyB7XG4gICAgd2lkdGg6IGluaXRpYWw7XG4gIH1cbiAgLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZGUtYmFja2dyb3VuZCAubGl2ZW5lc3MtZ3VpZGUtcGFuZWwgLmxpdmVuZXNzLWd1aWRlLWNvbnRlbnQgLmxpdmVuZXNzLWhpbnQtZ3JvdXAge1xuICAgIHdpZHRoOiBpbml0aWFsO1xuICAgIHBhZGRpbmc6IDJyZW07XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAubGl2ZW5lc3MtY29udGFpbmVyIC5mYWNlLW1hc2sge1xuICAgIGhlaWdodDogNTJ2aDtcbiAgfVxufVxuOnJvb3Qge1xuICAtLWF1dGhtZS1mb250LXNtYWxsOiAxMnB4O1xuICAtLWF1dGhtZS1mb250LW1pZDogMTZweDtcbiAgLS1hdXRobWUtb3V0ZXI6IHJnYmEoMCwgMCwgMCwgMC42NSk7XG4gIC0tYXV0aG1lLW1lbnUtZm9vdGVyOiAjYjRiN2JkO1xuICAtLWF0dWhtZS1idG4tYWN0aXZlOiAjMDBiMWE3O1xuICAtLWF1dGhtZS1yZXRyeS1idG4tYWN0aXZlOiAjZWZmZmZlO1xuICAtLWF1dGhtZS1kaXZpZGU6ICNlMWUzZTU7XG4gIC0tYXV0aG1lLWRpc2FibGU6ICNkYWRhZGE7XG4gIC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0xOiAjMjU2MDhhO1xuICAtLWF1dGhtZS1jdXN0b21fX3ByaW1hcnktMjogIzAwYzFiNjtcbiAgLS1hdXRobWUtbmV1dHJhbF9fd2hpdGU6ICNmZmZmZmY7XG4gIC0tYXV0aG1lLW5ldXRyYWxfX3doaXRlOiAjMDAwMDAwO1xuICAtLWF1dGhtZS1icmFuZF9fYXV0aG1lLTE6ICM3Y2ZmZjk7XG4gIC0tYXV0aG1lLWJyYW5kX19lcnJvcjogI2ZmNzA3MDtcbn1cblxuOnJvb3Qge1xuICAtLWF1dGhtZS1jbG9zZS1pY29uLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJrQUFBQVlDQVlBQUFBUHRWYkdBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBRG9TVVJCVkhnQjdaVE5EWUpBRUlVZjBvZ05nQjRvZ0RvSU1mRkdGMkFYSERtZ2RjQ2RpOUNBbmVCT05JWnMxdDIzeG9NbWZBbmhKenY3WmRpWkFWYitndXhRbEhKOUt5YlVQK1I1a2M1QW94N1RhSjlndWc0OUNBRm1WQkt6aTVOK0hJZWJWU0lMb2pnSkVDQmxSQXNCMVAxMGJ1c0dya3lFYVJ3NlJxUUxMbTFkbWZZelNoZ1JLN0JLYkNJZmdSQ0FJTXVMU3Ewc253R2RLb3lVRlFnaENMU010ajRDWVFPV2pkclc5bTZCeW1SNUJ2Szc4TWlHN2lPbnhIRElSNTgrY2tyZVZSSGJSMDZKcTB4OVJPRW5BbCtSYlVCU1phcUwvQVlrMExOOThCS3BHTk9BWFBrOTdtT2t3b2dnWmRLakFBQUFBRWxGVGtTdVFtQ0NcIik7XG4gIC0tYXV0aG1lLWJhY2staWNvbi1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUQ3U1VSQlZIZ0IzWlU5RW9Jd0VJVlh1UUEzTUNXbDNFQTd5M0FDaDV2b1NlUUlXRkk1M3NDU3p0WXlwUjIrakhHR3dZVDhOdnBtZGhJVytCNGhQMHYwNjFwUWdEam5helFYaEVDVWJkc0swN05MOHRRSW5pT1lDa3BpTUlGTEhmSDF0N2wzbkgrUkFYNnd2ZWMwZ3FxcTlpRndLZXNJSkh3WWhtYVVjb1piRFdMaHN3WXA0RVlERGJ3R3ZLRUFmUmxndFRBMDl4UndLZDBxRWlvK1dsR0VzbW1pNy90blVSUWR1anQ2TDhzTnJtWCtTZ0hLZEVuQUhvQ2UwZVd4SnBucEJtQkNZNUlqMzVHSHJCdE5UYnJjeFV5bEdreDZUWTV5T290aVRId09PeFppNGxWd1FreThLNXJHcEp5ckNhRWxrNkU1eVQ3Z1cvcHJ2UUNIcG5iZFNIWGovQUFBQUFCSlJVNUVya0pnZ2c9PVwiKTtcbn1cbiJdfQ== */
|
|
1471
|
+
/*# sourceMappingURL=data:application/json;base64,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QztFQUN2QztFQUNBO0lBQ0Usa0JBQWtCO0lBQ2xCLFlBQVk7SUFDWixhQUFhO0lBQ2IsUUFBUTtJQUNSLFNBQVM7SUFDVCw0Q0FBNEM7SUFDNUMsa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixzQkFBc0I7RUFDeEI7RUFDQTtJQUNFLGdCQUFnQjtJQUNoQixtQkFBbUI7RUFDckI7RUFDQTtJQUNFLFVBQVU7SUFDVixXQUFXO0lBQ1gsY0FBYztJQUNkLHNDQUFzQztFQUN4QztFQUNBO0lBQ0UsYUFBYTtJQUNiLHVCQUF1QjtJQUN2QixtQkFBbUI7SUFDbkIsWUFBWTtFQUNkO0VBQ0E7SUFDRSxjQUFjO0VBQ2hCO0VBQ0E7SUFDRSxjQUFjO0VBQ2hCO0VBQ0E7SUFDRSxjQUFjO0lBQ2QsYUFBYTtFQUNmO0FBQ0Y7QUFDQTtFQUNFO0lBQ0UsWUFBWTtFQUNkO0FBQ0Y7QUFDQTtFQUNFLHlCQUF5QjtFQUN6Qix1QkFBdUI7RUFDdkIseUJBQXlCO0VBQ3pCLG1DQUFtQztFQUNuQyw2QkFBNkI7RUFDN0IsNEJBQTRCO0VBQzVCLGtDQUFrQztFQUNsQyx3QkFBd0I7RUFDeEIseUJBQXlCO0VBQ3pCLG1DQUFtQztFQUNuQyxtQ0FBbUM7RUFDbkMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxpQ0FBaUM7RUFDakMsOEJBQThCO0FBQ2hDOztBQUVBO0VBQ0UsNGZBQTRmO0VBQzVmLHVoQkFBdWhCO0FBQ3poQiIsImZpbGUiOiJzdHlsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6cm9vdCB7XG4gIC0tbWFpbi1iZy1jb2xvcjogIzAwYzFiNjtcbiAgLS1tYWluLXRleHQtY29sb3I6ICNmZmZmZmY7XG4gIC0taGludC1jb250ZW50LWNvbG9yOiAjMDBjMWI2O1xuICAtLXNjYW5uZXItZGVmYXVsdC1jb2xvcjogI2ZmZmZmZjtcbiAgLS1zY2FubmVyLXBhc3MtY29sb3I6ICM3Y2ZmZjk7XG4gIC0tc2Nhbm5lci1lcnJvci1jb2xvcjogI2ZmNzA3MDtcbiAgLS1sb2FkaW5nLWNvbG9yOiAjNWFlZWNiO1xuICAtLWxvYWRpbmctdGV4dC1jb2xvcjogI2ZmZmZmZjtcbiAgLS1sb3R0aWUtYXJyb3ctY29sb3I6IHVuc2V0O1xuICAtLWxvdHRpZS1zY2FuLWNvbG9yOiB1bnNldDtcbiAgLS1sb3R0aWUtc3VjY2Vzcy1jb2xvcjogdW5zZXQ7XG59XG5cbi5hdXRobWUtbG9hZGluZy1zZGstb3V0ZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDk5OTtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IDEwMHZoO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hdXRobWUtb3V0ZXIpO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4uYXV0aG1lLWxvYWRpbmctc2RrLW91dGVyIC5hdXRobWUtbG9hZGluZy1zZGstY29udGVudCB7XG4gIG1hcmdpbjogYXV0bztcbiAgd2lkdGg6IDUwJTtcbiAgaGVpZ2h0OiAzMCU7XG4gIG1heC13aWR0aDogMjAwcHg7XG4gIG1heC1oZWlnaHQ6IDc1cHg7XG59XG5cbi5hdXRobWUtY29udGFpbmVyIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIHdpZHRoOiAxMDB2dztcbiAgaGVpZ2h0OiBjYWxjKHZhcigtLWF1dGhNZS12aCkgKiAxMDApO1xuICBtYXgtaGVpZ2h0OiAxMDB2aDtcbiAgcGFkZGluZzogM3JlbTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB6LWluZGV4OiAxO1xufVxuLmF1dGhtZS1jb250YWluZXIgKixcbi5hdXRobWUtY29udGFpbmVyICo6OmJlZm9yZSxcbi5hdXRobWUtY29udGFpbmVyICo6OmFmdGVyIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5zaG93IHtcbiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5oaWRlIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuLmF1dGhtZS1jb250YWluZXIgLmF1dGhtZS1oZWFkZXIge1xuICBoZWlnaHQ6IDYwcHg7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwcHg7XG4gIGxlZnQ6IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGluc2V0OiAwcHg7XG4gIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiA0MHB4O1xuICBjb2x1bW4tZ2FwOiAxNnB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWl0ZW1zOiBjZW50ZXI7XG4gIHotaW5kZXg6IDIwMDtcbiAgYm94LXNoYWRvdzogMHB4IDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyX190aXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY5cHgpIHtcbiAgLmF1dGhtZS1jb250YWluZXIgLmF1dGhtZS1oZWFkZXJfX3RpdGxlIHtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gIH1cbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyX19zdWJ0aXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjOTk5ZWE2O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OXB4KSB7XG4gIC5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyX19zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICB9XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlcl9faWNvbiB7XG4gIGhlaWdodDogMTAwJTtcbiAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAyMHB4O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OXB4KSB7XG4gIC5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyX19pY29uIHtcbiAgICBtYXgtaGVpZ2h0OiAyNHB4O1xuICB9XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlci5oZWFkZXJNb2RlMiAuYXV0aG1lLWhlYWRlcl9fdGl0bGUge1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlci5oZWFkZXJNb2RlMyAuYXV0aG1lLWhlYWRlcl9fc3VidGl0bGUge1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlci5oZWFkZXJNb2RlNCB7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDEsIDFmcik7XG59XG4uYXV0aG1lLWNvbnRhaW5lciAuYXV0aG1lLWhlYWRlci5oZWFkZXJNb2RlNCAuYXV0aG1lLWhlYWRlcl9fdGl0bGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuLmF1dGhtZS1jb250YWluZXIgLmF1dGhtZS1oZWFkZXIuaGVhZGVyTW9kZTQgLmF1dGhtZS1oZWFkZXJfX3N1YnRpdGxlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyLmhlYWRlck1vZGU1IC5hdXRobWUtaGVhZGVyX190aXRsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5hdXRobWUtaGVhZGVyLmhlYWRlck1vZGU1IC5hdXRobWUtaGVhZGVyX19zdWJ0aXRsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5hdXRobWUtY29udGFpbmVyIC52aWRlby1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IGNhbGModmFyKC0tYXV0aE1lLXZoKSAqIDEwMCk7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO1xufVxuLmF1dGhtZS1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lcl9fY2xvc2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNzVweDtcbiAgcmlnaHQ6IDIxcHg7XG4gIHotaW5kZXg6IDEwMTtcbn1cbi5hdXRobWUtY29udGFpbmVyIC52aWRlby1jb250YWluZXIgdmlkZW8ge1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXI7XG4gIGhlaWdodDogMTAwdmg7XG4gIHdpZHRoOiAxMDB2dztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBtYXgtaGVpZ2h0OiAxMDAlO1xufVxuQGtleWZyYW1lcyBzcGluIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cbi5hdXRobWUtY29udGFpbmVyIC5sb2FkaW5nLW91dGVyIHtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IGNhbGModmFyKC0tYXV0aE1lLXZoLCAxdmgpICogMTAwKTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42NSk7XG4gIHotaW5kZXg6IDIwMDtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5sb2FkaW5nIHtcbiAgYm9yZGVyOiA1cHggc29saWQgdmFyKC0tbG9hZGluZy1jb2xvcik7XG4gIGJvcmRlci10b3A6IDVweCBzb2xpZCAjZmZmO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHdpZHRoOiA1MHB4O1xuICBoZWlnaHQ6IDUwcHg7XG4gIGFuaW1hdGlvbjogc3BpbiAycyBsaW5lYXIgaW5maW5pdGU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiBjYWxjKHZhcigtLWF1dGhNZS12aCwgMXZoKSAqIDUwIC0gMjVweCk7XG4gIGxlZnQ6IGNhbGMoNTB2dyAtIDI1cHgpO1xufVxuLmF1dGhtZS1jb250YWluZXIgLmxvYWRpbmctdGV4dCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiBjYWxjKHZhcigtLWF1dGhNZS12aCwgMXZoKSAqIDUwICsgNDBweCk7XG4gIHdpZHRoOiAxMDB2dztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDE4cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIGNvbG9yOiB2YXIoLS1sb2FkaW5nLXRleHQtY29sb3IpO1xufVxuLmF1dGhtZS1jb250YWluZXIgLmVycm9yLW1lc3NhZ2UtcGFuZWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogNDBweDtcbiAgd2lkdGg6IDk2dnc7XG4gIGhlaWdodDogNTJweDtcbiAgYmFja2dyb3VuZDogcmdiKDI5LCAzMCwgMzMpO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIHotaW5kZXg6IDIwMDtcbiAgZGlzcGxheTogZmxleDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXJnaW46IDAgMnZ3O1xuICBsZWZ0OiAwO1xufVxuLmF1dGhtZS1jb250YWluZXIgLmVycm9yLW1lc3NhZ2UtcGFuZWwgLmVycm9yLWljb24ge1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBtYXJnaW4tbGVmdDogMTZweDtcbiAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xufVxuLmF1dGhtZS1jb250YWluZXIgLmVycm9yLW1lc3NhZ2UtcGFuZWwgLmVycm9yLXRleHQge1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyOHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogI2ZmZmZmZjtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5lcnJvci1tZXNzYWdlLXBhbmVsIC5yZXRyeS10ZXh0IHtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIGNvbG9yOiAjZmY3MDcwO1xuICBmbGV4OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xufVxuLmF1dGhtZS1jb250YWluZXIgLnBvcHVwLXBhbmVsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDQwdmg7XG4gIGxlZnQ6IGNhbGMoNTB2dyAtIDEzOHB4KTtcbiAgd2lkdGg6IDI3N3B4O1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICB6LWluZGV4OiA5OTk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMTZweCAyMHB4O1xufVxuLmF1dGhtZS1jb250YWluZXIgLnBvcHVwLXBhbmVsIC5wb3B1cC10aXRsZSB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG59XG4uYXV0aG1lLWNvbnRhaW5lciAucG9wdXAtcGFuZWwgLnBvcHVwLWNvbnRlbnQge1xuICBtYXJnaW4tdG9wOiA0cHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cbi5hdXRobWUtY29udGFpbmVyIC5wb3B1cC1idG4ge1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICBtYXJnaW4tdG9wOiAyNnB4O1xuICBwYWRkaW5nOiAwcHggMjBweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tbWFpbi1iZy1jb2xvcik7XG4gIGJvcmRlcjogdW5zZXQ7XG4gIGhlaWdodDogMjhweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6IHZhcigtLW1haW4tdGV4dC1jb2xvcik7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG59XG4uYXV0aG1lLWNvbnRhaW5lciAucG9wdXAtYmFja2dyb3VuZCB7XG4gIHdpZHRoOiAxMDB2dztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMHZoO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogOTk4O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG5cbi5vY3ItY29udGFpbmVyIC50ZXh0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDM7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4ub2NyLWNvbnRhaW5lciAubG90dGllLW1hc2sge1xuICB6LWluZGV4OiAxMDM7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBkaXNwbGF5OiBub25lO1xuICBvcGFjaXR5OiAwLjY1O1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kOiBibGFjaztcbn1cbi5vY3ItY29udGFpbmVyIC5hbnRpLWZyYXVkLWluc3RydWN0aW9uLWNvbnRhaW5lciB7XG4gIHotaW5kZXg6IDEwNDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG9wYWNpdHk6IDE7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG59XG4ub2NyLWNvbnRhaW5lciAuYW50aS1mcmF1ZC1pbnN0cnVjdGlvbi1jb250YWluZXJfX3RleHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICB0b3A6IGNhbGMoMzB2aCAtIDgwcHgpO1xuICBsZWZ0OiAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIHBhZGRpbmc6IDAgM2VtO1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xufVxuLm9jci1jb250YWluZXIgLmFudGktZnJhdWQtaW5zdHJ1Y3Rpb24tY29udGFpbmVyIC5hbnRpLWZyYXVkLWluc3RydWN0aW9uLWFuaW1hdGlvbi1jb250YWluZXIge1xuICBtYXgtd2lkdGg6IDYzMHB4O1xuICBtYXJnaW46IGF1dG87XG4gIG1heC1oZWlnaHQ6IDMyNnB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMHB4O1xuICBsZWZ0OiAwcHg7XG4gIHJpZ2h0OiAwcHg7XG4gIGJvdHRvbTogMHB4O1xufVxuLm9jci1jb250YWluZXIgLmFudGktZnJhdWQtaW5zdHJ1Y3Rpb24tY29udGFpbmVyIC5idG4tY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgbWFyZ2luOiBhdXRvO1xuICB3aWR0aDogMTAwdnc7XG4gIHotaW5kZXg6IDE7XG4gIGJvdHRvbTogNDBweDtcbiAgbWF4LXdpZHRoOiAzNDNweDtcbn1cbi5vY3ItY29udGFpbmVyIC5hbnRpLWZyYXVkLWluc3RydWN0aW9uLWNvbnRhaW5lciAuYnRuLWNvbnRhaW5lciAuY29uZmlybS1idG4ge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA0OHB4O1xuICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1tYWluLWJnLWNvbG9yKTtcbiAgYm9yZGVyOiB1bnNldDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgZm9udC1zaXplOiAxN3B4O1xuICBsaW5lLWhlaWdodDogMjJweDtcbiAgY29sb3I6IHZhcigtLW1haW4tdGV4dC1jb2xvcik7XG59XG4ub2NyLWNvbnRhaW5lciAuYW50aS1mcmF1ZC1pbnN0cnVjdGlvbi1jb250YWluZXIgLmJ0bi1jb250YWluZXIgLmNvbmZpcm0tYnRuOmRpc2FibGVkIHtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIGJhY2tncm91bmQ6ICNlMWUzZTU7XG59XG4ub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gIHBhZGRpbmc6IDMycHggMjRweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Y1ZjVmNTtcbiAgYm9yZGVyLXJhZGl1czogMjBweCAyMHB4IDBweCAwcHg7XG4gIHotaW5kZXg6IDIwMDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtdHlwZS10ZXh0IHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDIwcHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC44cHg7XG4gIGNvbG9yOiAjMjEyMTIxO1xufVxuLm9jci1jb250YWluZXIgLmNvbmZpcm0taW1hZ2UtY29udGFpbmVyIC5pbWFnZS1saW5lIHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2VlZWVlZTtcbiAgbWFyZ2luLXRvcDogMjRweDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtbGluZS5kZXNrdG9wIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtY29udGFpbmVyIHtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgYm94LXNoYWRvdzogMHB4IDRweCA2MHB4IHJnYmEoNCwgNiwgMTUsIDAuMDUpO1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBwYWRkaW5nOiA4cHg7XG4gIG1heC13aWR0aDogNDAwcHg7XG4gIG1hcmdpbjogYXV0bztcbiAgbWFyZ2luLXRvcDogMjRweDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtY29udGFpbmVyIGNhbnZhcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHotaW5kZXg6IDEwMjtcbiAgbWF4LWhlaWdodDogNDB2aDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICB3aWR0aDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtZm9vdGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDEwMztcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtZm9vdGVyIGJ1dHRvbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDQ4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDI0cHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtc2l6ZTogMTZweDtcbn1cbi5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtZm9vdGVyIC5idG4tcmV0cnkge1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1oaW50LWNvbnRlbnQtY29sb3IpO1xuICBjb2xvcjogdmFyKC0taGludC1jb250ZW50LWNvbG9yKTtcbiAgYmFja2dyb3VuZDogdW5zZXQ7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG59XG4ub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciAuYnRuLXJldHJ5OmhvdmVyIHtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYXR1aG1lLWJ0bi1hY3RpdmUpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hdXRobWUtcmV0cnktYnRuLWFjdGl2ZSk7XG59XG4ub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciAuYnRuLWNvbXBsZXRlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWFpbi1iZy1jb2xvcik7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG4gIGNvbG9yOiB2YXIoLS1tYWluLXRleHQtY29sb3IpO1xuICBib3JkZXI6IHVuc2V0O1xufVxuLm9jci1jb250YWluZXIgLmNvbmZpcm0taW1hZ2UtY29udGFpbmVyIC5pbWFnZS1mb290ZXIgLmJ0bi1jb21wbGV0ZTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWF0dWhtZS1idG4tYWN0aXZlKTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjlweCkge1xuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IGNhbGMoNTB2aCAtIDI1MHB4KTtcbiAgICBsZWZ0OiBjYWxjKDUwdncgLSAzMDBweCk7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICB3aWR0aDogNjAwcHg7XG4gICAgaGVpZ2h0OiBmaXQtY29udGVudDtcbiAgICBtYXgtaGVpZ2h0OiA1MzBweDtcbiAgICBwYWRkaW5nOiAzOHB4IDI0cHggNDBweCAyNHB4O1xuICB9XG4gIC5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtbGluZSB7XG4gICAgbWF4LXdpZHRoOiA1MzdweDtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgbWFyZ2luLXRvcDogMTRweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICB9XG4gIC5vY3ItY29udGFpbmVyIC5jb25maXJtLWltYWdlLWNvbnRhaW5lciAuaW1hZ2UtbGluZS5kZXNrdG9wIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgfVxuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciBidXR0b24ge1xuICAgIHdpZHRoOiAxNjVweDtcbiAgICBtYXJnaW4tdG9wOiB1bnNldDtcbiAgfVxuICAub2NyLWNvbnRhaW5lciAuY29uZmlybS1pbWFnZS1jb250YWluZXIgLmltYWdlLWZvb3RlciAuYnRuLWNvbXBsZXRlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gIH1cbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgdmlkZW8uZnJvbnQge1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpO1xuICAtbXMtdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG4gIC1tb3otdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XG4gIC1vLXRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpO1xuICB0cmFuc2Zvcm06IHJvdGF0ZVkoMTgwZGVnKTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lcl9fY2xvc2UuYXV0aG1lLWhpZGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAudGl0bGUge1xuICB0b3A6IGNhbGMoMzB2aCAtIDUycHgpO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0O1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAudGl0bGUgLnRpdGxlLXRleHQge1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1heC13aWR0aDogODAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIHBhZGRpbmc6IDhweCAxNHB4O1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuaGludC10ZXh0IHtcbiAgd2lkdGg6IDEwMHZ3O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogY2FsYyg1MHZoIC0gNDRweCk7XG4gIGZvbnQtc2l6ZTogNjBweDtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTtcbiAgaGVpZ2h0OiAxMDBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBsaW5lLWhlaWdodDogODhweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLnN0YXR1cyB7XG4gIHRvcDogNzB2aDtcbiAgcGFkZGluZy10b3A6IDIwcHg7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5zdGF0dXMgLnN0YXR1cy10ZXh0IHtcbiAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBtYXgtd2lkdGg6IDk1JTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aGl0ZS1zcGFjZTogcHJlO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDYwLCA2MCwgNjAsIDAuNyk7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgY29sb3I6ICNmZmZmZmY7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5zdGF0dXMgLnN0YXR1cy10ZXh0Lm5vbi1lbXB0eSB7XG4gIHBhZGRpbmc6IDhweCAxNHB4O1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuY2FyZC1ib3JkZXItY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KTtcbiAgaW5zZXQ6IDA7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5jYXJkLWJvcmRlci1jb250YWluZXJfX2JvcmRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIGJveC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC42NSkgMCAwIDAgMjAwMHB4O1xuICBvcGFjaXR5OiAwLjk7XG4gIG1hcmdpbjogYXV0bztcbiAgbWF4LWhlaWdodDogNjB2aDtcbiAgbWF4LXdpZHRoOiA5NXZ3O1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBhbmltYXRpb24tZHVyYXRpb246IDJzO1xuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG4gIC0tYjogM3B4O1xuICAtLWM6IHZhcigtLXNjYW5uZXItZGVmYXVsdC1jb2xvcik7XG4gIC0tdzogMjdweDtcbiAgLS1yOiAxMnB4O1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuY2FyZC1ib3JkZXItY29udGFpbmVyX19ib3JkZXIucGFzcyB7XG4gIC0tYzogdmFyKC0tc2Nhbm5lci1wYXNzLWNvbG9yKTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLmNhcmQtYm9yZGVyLWNvbnRhaW5lcl9fYm9yZGVyLmVycm9yIHtcbiAgLS1jOiB2YXIoLS1zY2FubmVyLWVycm9yLWNvbG9yKTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLmNhcmQtYm9yZGVyLWNvbnRhaW5lcl9fYm9yZGVyOjpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYywgcmVkKTtcbiAgcGFkZGluZzogM3B4O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yKTtcbiAgbWFzazogbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKSB0b3AvY2FsYygxMDAlIC0gMiAqIHZhcigtLXcpKSB2YXIoLS1iKSwgbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKSBib3R0b20vY2FsYygxMDAlIC0gMiAqIHZhcigtLXcpKSB2YXIoLS1iKSwgbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKSBsZWZ0L3ZhcigtLWIpIGNhbGMoMTAwJSAtIDIgKiB2YXIoLS13KSksIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgcmlnaHQvdmFyKC0tYikgY2FsYygxMDAlIC0gMiAqIHZhcigtLXcpKSwgbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKSBjb250ZW50LWJveCwgbGluZWFyLWdyYWRpZW50KCNmZmYgMCAwKTtcbiAgbWFzay1jb21wb3NpdGU6IGV4Y2x1ZGU7XG4gIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5Aa2V5ZnJhbWVzIHNsaWRlaW5MZWZ0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB1bnNldDtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgxMDB2dykgcm90YXRlWSgzMGRlZykgc2NhbGUoMC45KTtcbiAgfVxufVxuQGtleWZyYW1lcyBzbGlkZWluTGVmdFRvRGVmYXVsdCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMTAwdncpIHJvdGF0ZVkoMzBkZWcpIHNjYWxlKDAuOSk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdW5zZXQ7XG4gIH1cbn1cbkBrZXlmcmFtZXMgc2xpZGVpblJpZ2h0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB1bnNldDtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgxMDB2dykgcm90YXRlWSgtMzBkZWcpIHNjYWxlKDAuOSk7XG4gIH1cbn1cbkBrZXlmcmFtZXMgc2xpZGVpblJpZ2h0VG9EZWZhdWx0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgxMDB2dykgcm90YXRlWSgtMzBkZWcpIHNjYWxlKDAuOSk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdW5zZXQ7XG4gIH1cbn1cbkBrZXlmcmFtZXMgc2xpZGVpblRvcCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdW5zZXQ7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMTAwdncpIHJvdGF0ZVgoMzBkZWcpIHNjYWxlKDAuOSk7XG4gIH1cbn1cbkBrZXlmcmFtZXMgc2xpZGVpblRvcFRvRGVmYXVsdCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMTAwdncpIHJvdGF0ZVgoMzBkZWcpIHNjYWxlKDAuOSk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdW5zZXQ7XG4gIH1cbn1cbkBrZXlmcmFtZXMgc2xpZGVpbkJvdHRvbSB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdW5zZXQ7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMTAwdncpIHJvdGF0ZVgoLTMwZGVnKSBzY2FsZSgwLjkpO1xuICB9XG59XG5Aa2V5ZnJhbWVzIHNsaWRlaW5Cb3R0b21Ub0RlZmF1bHQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDEwMHZ3KSByb3RhdGVYKC0zMGRlZykgc2NhbGUoMC45KTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB1bnNldDtcbiAgfVxufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuc2NhbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBtYXJnaW46IGF1dG87XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5zdWNjZXNzLFxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuYXJyb3cge1xuICBoZWlnaHQ6IDgwcHg7XG4gIHdpZHRoOiA4MHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogY2FsYyg1MHZoIC0gNDBweCk7XG4gIGxlZnQ6IGNhbGMoNTB2dyAtIDQwcHgpO1xuICB6LWluZGV4OiAyMDA7XG59XG4ub2NyLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC5zY2FuIHN2ZyB7XG4gIGZpbHRlcjogdmFyKC0tbG90dGllLXNjYW4tY29sb3IpO1xufVxuLm9jci1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciAuc3VjY2VzcyBzdmcge1xuICBmaWx0ZXI6IHZhcigtLWxvdHRpZS1zdWNjZXNzLWNvbG9yKTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLmFycm93IHN2ZyB7XG4gIGZpbHRlcjogdmFyKC0tbG90dGllLWFycm93LWNvbG9yKTtcbn1cbi5vY3ItY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLnN0YXRlbWVudCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTAzO1xuICBib3R0b206IDQ4cHg7XG4gIHdpZHRoOiAxMDAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiAjZjFmMmYzO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjhweDtcbn1cbi5vY3ItY29udGFpbmVyIGJ1dHRvbjpub3QoOmRpc2FibGVkKSxcbi5vY3ItY29udGFpbmVyIFt0eXBlPWJ1dHRvbl06bm90KDpkaXNhYmxlZCksXG4ub2NyLWNvbnRhaW5lciBbdHlwZT1yZXNldF06bm90KDpkaXNhYmxlZCksXG4ub2NyLWNvbnRhaW5lciBbdHlwZT1zdWJtaXRdOm5vdCg6ZGlzYWJsZWQpIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5kYXRhLWNvbmZpcm0ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMHB4O1xuICB3aWR0aDogMTAwdnc7XG4gIGhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpO1xuICBwYWRkaW5nOiAwIDE2cHg7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBtYXJnaW4tdG9wOiA2MHB4O1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuZGF0YS1jb25maXJtIC5kYXRhLXR5cGUge1xuICBtYXgtd2lkdGg6IDUwMHB4O1xuICBtYXJnaW46IGF1dG87XG4gIG1hcmdpbi10b3A6IDI0cHg7XG4gIG1hcmdpbi1ib3R0b206IDZweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAxOHB4O1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuZGF0YSB7XG4gIHBhZGRpbmctYm90dG9tOiAxMjRweDtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmNhcmQtdHlwZSB7XG4gIG1hcmdpbjogMjBweCAwcHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogIzA0MWIyZjtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmRhdGEtY29sdW1uIHtcbiAgbWF4LXdpZHRoOiA1MDBweDtcbiAgbWFyZ2luOiBhdXRvO1xuICBtYXJnaW4tdG9wOiAyNHB4O1xuICBtYXJnaW4tYm90dG9tOiA2cHg7XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5kYXRhLWNvbHVtbiAudGl0bGUge1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIGNvbG9yOiAjNDc0YTUzO1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuZGF0YS1jb2x1bW4gLmNvbnRlbnQge1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBjb2xvcjogIzQ3NGE1MztcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogNTAwcHg7XG4gIGhlaWdodDogMzZweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2UxZTNlNTtcbiAgcGFkZGluZy1sZWZ0OiAxNHB4O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5kYXRhLWNvbHVtbiAuY29udGVudC50ZXh0YXJlYSB7XG4gIHJlc2l6ZTogbm9uZTtcbiAgcGFkZGluZy10b3A6IDhweDtcbiAgcGFkZGluZy1ib3R0b206IDhweDtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuZGF0YS1jb2x1bW4gLmNvbnRlbnQ6OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6ICNjY2NmZDM7XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5idXR0b24tcGFuZWwge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgaGVpZ2h0OiAxMDBweDtcbiAgd2lkdGg6IDEwMHZ3O1xuICBib3gtc2hhZG93OiB1bnNldDtcbiAgcGFkZGluZzogMCAxNnB4O1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgLmNvbmZpcm0tYnRuIHtcbiAgbWFyZ2luLXRvcDogMTJweDtcbiAgd2lkdGg6IGNhbGMoMTAwdncgLSAzMnB4KTtcbiAgbWF4LXdpZHRoOiAzNDNweDtcbiAgaGVpZ2h0OiA0OHB4O1xuICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hdXRobWUtY3VzdG9tX19wcmltYXJ5LTIpO1xuICBib3JkZXI6IHVuc2V0O1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuY29uZmlybS1idG46ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kOiAjZTFlM2U1O1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuaGVhZGVyIHtcbiAgaGVpZ2h0OiA2MHB4O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGluc2V0OiAwcHg7XG4gIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7XG4gIGNvbHVtbi1nYXA6IDE2cHg7XG4gIGdyaWQtdGVtcGxhdGUtcm93czogNDBweDtcbiAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgei1pbmRleDogMjAwO1xuICBib3gtc2hhZG93OiAwcHggMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuaGVhZGVyIC5oZWFkZXItdGl0bGUge1xuICBmb250LXNpemU6IDE4cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xufVxuLm9jci1jb25maXJtLWNvbnRhaW5lciAuaGVhZGVyIC5oZWFkZXItaW1nIHtcbiAgbWF4LWhlaWdodDogMjRweDtcbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLm9jci1jb25maXJtLWNvbnRhaW5lciAuaGVhZGVyIC5oZWFkZXItdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgfVxuICAub2NyLWNvbmZpcm0tY29udGFpbmVyIC5oZWFkZXIgLmhlYWRlci1pbWcge1xuICAgIG1heC1oZWlnaHQ6IDIwcHg7XG4gIH1cbiAgLm9jci1jb25maXJtLWNvbnRhaW5lciAuYnV0dG9uLXBhbmVsIHtcbiAgICBib3gtc2hhZG93OiAwcHggMHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIH1cbn1cbi5vY3ItY29uZmlybS1jb250YWluZXIgYnV0dG9uOm5vdCg6ZGlzYWJsZWQpLFxuLm9jci1jb25maXJtLWNvbnRhaW5lciBbdHlwZT1idXR0b25dOm5vdCg6ZGlzYWJsZWQpLFxuLm9jci1jb25maXJtLWNvbnRhaW5lciBbdHlwZT1yZXNldF06bm90KDpkaXNhYmxlZCksXG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIFt0eXBlPXN1Ym1pdF06bm90KDpkaXNhYmxlZCkge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5kLWZsZXgge1xuICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG59XG4ub2NyLWNvbmZpcm0tY29udGFpbmVyIC5qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbn1cblxuLnNwYWNlIHtcbiAgZmxleDogMTtcbn1cblxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogNjBweDtcbiAgbGVmdDogMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaW5zZXQ6IDBweDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB6LWluZGV4OiAyMDA7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtaGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA0MnB4O1xuICBsZWZ0OiAwcHg7XG4gIHRvcDogMjBweDtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1oZWFkZXIgLm1lbnUtaGVhZGVyLWxlZnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiA4cHggMjRweDtcbiAgZ2FwOiA1cHg7XG4gIHdpZHRoOiAzMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDA7XG4gIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1oZWFkZXIgLm1lbnUtaGVhZGVyLWxlZnQgLm1lbnUtaGVhZGVyLWJhY2sge1xuICBkaXNwbGF5OiBub25lO1xuICB3aWR0aDogMjRweDtcbiAgaGVpZ2h0OiAyNHB4O1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBRDdTVVJCVkhnQjNaVTlFb0l3RUlWWHVRQTNNQ1dsM0VBN3kzQUNoNXZvU2VRSVdGSTUzc0NTenRZeXBSMitqSEdHd1lUOE52cG1kaElXK0I0aFAwdjA2MXBRZ0RqbmF6UVhoRUNVYmRzSzA3Tkw4dFFJbmlPWUNrcGlNSUZMSGZIMXQ3bDNuSCtSQVg2d3ZlYzBncXFxOWlGd0tlc0lKSHdZaG1hVWNvWmJEV0xoc3dZcDRFWUREYndHdktFQWZSbGd0VEEwOXhSd0tkMHFFaW8rV2xHRXNtbWk3L3RuVVJRZHVqdDZMOHNOcm1YK1NnSEtkRW5BSG9DZTBlV3hKcG5wQm1CQ1k1SWozNUdIckJ0TlRicmN4VXlsR2t4NlRZNXlPb3RpVEh3T094Wmk0bFZ3UWt5OEs1ckdwSnlyQ2FFbGs2RTV5VDdnVy9wcnZRQ0hwbmJkU0hYai9BQUFBQUJKUlU1RXJrSmdnZz09XCIpO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWhlYWRlciAubWVudS1oZWFkZXItcmlnaHQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiA4cHggMjRweCA4cHggOHB4O1xuICBnYXA6IDEwcHg7XG4gIHdpZHRoOiAzMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDI7XG4gIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIGZsZXgtZ3JvdzogMTtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1oZWFkZXIgLm1lbnUtaGVhZGVyLXJpZ2h0IC5tZW51LWhlYWRlci1jbG9zZSB7XG4gIHdpZHRoOiAyNHB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLWF1dGhtZS1jbG9zZS1pY29uLWltYWdlKTtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1oZWFkZXIgLm1lbnUtaGVhZGVyLXRpdGxlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMHB4O1xuICBnYXA6IDEwcHg7XG4gIGhlaWdodDogMTAwJTtcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDE7XG4gIGZsZXgtZ3JvdzogMDtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1oZWFkZXIgLm1lbnUtaGVhZGVyLXRpdGxlIC5tZW51LWhlYWRlci10aXRsZS10ZXh0IHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBmb250LWZhbWlseTogXCJOb3RvIFNhbnMgVENcIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXNpemU6IDE4cHg7XG4gIGxpbmUtaGVpZ2h0OiAyOHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gIGNvbG9yOiAjNDc0YTUzO1xuICBmbGV4OiBub25lO1xuICBvcmRlcjogMDtcbiAgZmxleC1ncm93OiAxO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA0MnB4IC0gMTBweCk7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNvdW50cnktc2VsZWN0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gIHBhZGRpbmc6IDBweDtcbiAgZ2FwOiA4cHg7XG4gIHdpZHRoOiA5MCU7XG4gIGxlZnQ6IDI0cHg7XG4gIHRvcDogMTEwcHg7XG4gIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gIG1heC13aWR0aDogMzc1cHg7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY291bnRyeS1zZWxlY3QgLmNvdW50cnktc2VsZWN0LWxhYmVsIHtcbiAgbWF4LXdpZHRoOiAzNzVweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBmb250LWZhbWlseTogXCJOb3RvIFNhbnMgVENcIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBjb2xvcjogIzJmMmYyZjtcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDA7XG4gIGZsZXgtZ3JvdzogMDtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jb3VudHJ5LXNlbGVjdCAuY291bnRyeS1zZWxlY3QtZHJvcGRvd24ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gIGdhcDogOHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA1NnB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZWJlYmViO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAwO1xuICBmbGV4LWdyb3c6IDA7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY291bnRyeS1zZWxlY3QgLmNvdW50cnktc2VsZWN0LWRyb3Bkb3duIC5jb3VudHJ5LXNlbGVjdC1kcm9wZG93bi1mcmFtZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAwcHg7XG4gIGdhcDogOHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAyMHB4O1xuICBmbGV4OiBub25lO1xuICBvcmRlcjogMDtcbiAgZmxleC1ncm93OiAwO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNvdW50cnktc2VsZWN0IC5jb3VudHJ5LXNlbGVjdC1kcm9wZG93biAuY291bnRyeS1zZWxlY3QtZHJvcGRvd24tZnJhbWUgLmNvdW50cnktc2VsZWN0LWRyb3Bkb3duLXRleHQge1xuICB3aWR0aDogMjY3cHg7XG4gIGhlaWdodDogMjBweDtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zIFRDXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgY29sb3I6ICM0NzRhNTM7XG4gIG9yZGVyOiAxO1xuICBmbGV4LWdyb3c6IDE7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY291bnRyeS1zZWxlY3QgLmNvdW50cnktc2VsZWN0LWRyb3Bkb3duIC5jb3VudHJ5LXNlbGVjdC1kcm9wZG93bi1mcmFtZSAuY291bnRyeS1zZWxlY3QtZHJvcGRvd24taWNvbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAyO1xuICBmbGV4LWdyb3c6IDA7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQlFBQUFBVUNBWUFBQUNOaVIwTkFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFEcFNVUkJWSGdCN1k4OWJzSkFGSVRuTFlsRTZTTlFwb2lVTk9uSkRVSVhSVmEwNVpad0F1QUUwR0VxakRBL0hkd0FEa0NCNEFJY0FRcUVCWGdmdXdVL1FvQ0ZST212bkRmek5BTWtKRHdNWFFxdXE3SmFVSVUxeXQyZ05yZ1ZkS1hLY29UaWF5cWQ4LzNxNHFDTFM2UFdrVG15UThUOXYzOVZ2UGJNNmpyQ0VNU2ZJVUxuYmtQTHIxUVpvVTJBa1NGd3RkMnFGNnd1WmQ3WmNtamJTNU9jYTRIdm51L05ZeDhld3B0bzNUQ1dIeEJOaE9DQzNsSEZ0aUpHYy9XU3pnL09wc1krUE01elZjbTRUdE1aNVU3Z2xXNzVVNGhoTmgyUDNqKytsa1I0RTR4Y08vQjhKQ1E4bHowaXBGS0ppRXhYbndBQUFBQkpSVTVFcmtKZ2dnPT1cIik7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBwYWRkaW5nOiAwcHg7XG4gIGdhcDogOHB4O1xuICB3aWR0aDogOTAlO1xuICBtYXgtd2lkdGg6IDM3NXB4O1xuICBsZWZ0OiAyNHB4O1xuICB0b3A6IDIxOHB4O1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNhcmQtdHlwZS1zZWxlY3QgLmNhcmQtdHlwZS1zZWxlY3QtbGFiZWwge1xuICB3aWR0aDogMzI3cHg7XG4gIGhlaWdodDogMjBweDtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zIFRDXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgY29sb3I6ICMyZjJmMmY7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAwO1xuICBmbGV4LWdyb3c6IDA7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCAuY2FyZC1vdXQtZnJhbWUge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gIGdhcDogOHB4O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA1NnB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZWJlYmViO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIHRyYW5zaXRpb246IGJvcmRlciA1MDBtcztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNhcmQtdHlwZS1zZWxlY3QgLmNhcmQtb3V0LWZyYW1lIC5jYXJkLWluLWZyYW1lIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDBweDtcbiAgZ2FwOiA4cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDIwcHg7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCAuY2FyZC1vdXQtZnJhbWUgLmNhcmQtaW4tZnJhbWUgLmNhcmQtbGFiZWwge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHdpZHRoOiAyNjdweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBmb250LWZhbWlseTogXCJOb3RvIFNhbnMgVENcIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBjb2xvcjogIzQ3NGE1MztcbiAgb3JkZXI6IDA7XG4gIGZsZXgtZ3JvdzogMTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jYXJkLXR5cGUtc2VsZWN0IC5jYXJkLW91dC1mcmFtZSAuY2FyZC1pbi1mcmFtZSAuY2FyZC1sYWJlbDo6YmVmb3JlIHtcbiAgY29udGVudDogXCIgXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAxNHB4O1xuICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCUUFBQUFPQ0FZQUFBQXZ4RHp3QUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUVSU1VSQlZIZ0JyWlE5VHNOQUVJWGZiTFl3b2dnVjlYSUVqa0lIUk1HbU02VnZFQ2tYb0VLbVFDWllpYmdBTmR5QUkrQWpMRjJVeER1WlJNcVBWMUVpeDNuTmFtZEhiNzZkL2FHN2g2ZFFzWHRtMEFXYXFTQ2luaWJtWHRtaTY4LzN0RUFEM1VheFVTVitjZCtOR1NmU3drdDdnVDhaRE9xSVVJdyswcXZWdEdJNHlqY0x4MHI3QWFHTXBLcVIzcmFIK1d1Q210STdZbTl3NkxPaS8wNDN6b1o1K3VnVnJMWmwzNVk3WVp4eGliNGtoWkNqWXNMQU56M1Vsb29obFJpSVNiWW1ZSVRjVWpkSEU4NDBDcmxMaGhrdk1qMG5JWFZ3ZGp1bkZtR0F3RTR4L2dIeGw1UytGTVIyZ0RPN2s5QWoyMDQ0NmNWV0JMYVJQQnMwMU5KRHFMVjhDc25FNFZ2Y0RScG82dGk2R1NWek0wWnpvVURhR04wQUFBQUFTVVZPUks1Q1lJST1cIik7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCAuY2FyZC1vdXQtZnJhbWUgLmNhcmQtaW4tZnJhbWUgLmNhcmQtaWNvbiB7XG4gIHdpZHRoOiAxNnB4O1xuICBoZWlnaHQ6IDE2cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktc2VsZjogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJvcmRlcjogdmFyKC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0yKSBzb2xpZCAxcHg7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAuY2FyZC10eXBlLXNlbGVjdCAuY2FyZC1vdXQtZnJhbWUgLmNhcmQtaW4tZnJhbWUgLmNhcmQtaW4tZnJhbWUgLmNhcmQtaWNvbjo6YWZ0ZXIge1xuICBjb250ZW50OiBcIiBcIjtcbiAgd2lkdGg6IDhweDtcbiAgaGVpZ2h0OiA4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0yKTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogYXV0bztcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSA1MDBtcztcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jYXJkLXR5cGUtc2VsZWN0IC5jYXJkLW91dC1mcmFtZTphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHZhcigtLWF1dGhtZS1jdXN0b21fX3ByaW1hcnktMikgMTAlLCB0cmFuc3BhcmVudCAxMC4wMSUpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCU7XG4gIHRyYW5zZm9ybTogc2NhbGUoMTAsIDEwKTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MsIG9wYWNpdHkgMC41cztcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jYXJkLXR5cGUtc2VsZWN0IC5jYXJkLW91dC1mcmFtZTphY3RpdmU6YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHNjYWxlKDAsIDApO1xuICBvcGFjaXR5OiAwLjM7XG4gIHRyYW5zaXRpb246IDBzO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLmNhcmQtdHlwZS1zZWxlY3QgLmNhcmQtb3V0LWZyYW1lLmFjdGl2ZSB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0yKTtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5jYXJkLXR5cGUtc2VsZWN0IC5jYXJkLW91dC1mcmFtZS5hY3RpdmUgLmNhcmQtaW4tZnJhbWUgLmNhcmQtaWNvbjo6YWZ0ZXIge1xuICBjb250ZW50OiBcIiBcIjtcbiAgd2lkdGg6IDhweDtcbiAgaGVpZ2h0OiA4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0yKTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogYXV0bztcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSA1MDBtcztcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5tZW51LWNvbnRlbnQtZm9vdGVyIHtcbiAgbWFyZ2luLXRvcDogNTBweDtcbiAgcGFkZGluZzogMTBweCAxMHB4IDQwcHg7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmF1dGhtZS1zZWxlY3QtY29udGFpbmVyIC5tZW51LWNvbnRlbnQgLm1lbnUtY29udGVudC1mb290ZXIgLm1lbnUtY29udGVudC1mb290ZXItY29udGVudCB7XG4gIG1hcmdpbjogMCBhdXRvO1xuICBmb250LXNpemU6IHZhcigtLWF1dGhtZS1mb250LXNtYWxsKTtcbiAgY29sb3I6IHZhcigtLWF1dGhtZS1tZW51LWZvb3Rlcik7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAubWVudS1jb250ZW50LWZvb3RlciAubWVudS1jb250ZW50LWZvb3Rlci1jb250ZW50IC5mb290ZXItY29uZmlybS1idXR0b24ge1xuICB3aWR0aDogOTAlO1xuICBtYXJnaW46IDAgYXV0bztcbiAgaGVpZ2h0OiA0OHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hdXRobWUtY3VzdG9tX19wcmltYXJ5LTIpO1xuICBib3gtc2hhZG93OiA0cHggNHB4IDE2cHggcmdiYSgwLCAxOTMsIDE4MiwgMC4yNSk7XG4gIGJvcmRlci1yYWRpdXM6IDI0cHg7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogdmFyKC0tYXV0aG1lLWZvbnQtbWlkKTtcbiAgbWF4LXdpZHRoOiAzNzVweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBib3JkZXIgNTAwbXMsIGJhY2tncm91bmQtY29sb3IgMzAwbXM7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAubWVudS1jb250ZW50LWZvb3RlciAubWVudS1jb250ZW50LWZvb3Rlci1jb250ZW50IC5mb290ZXItY29uZmlybS1idXR0b246YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCB2YXIoLS1hdXRobWUtY3VzdG9tX19wcmltYXJ5LTEpIDEwJSwgdHJhbnNwYXJlbnQgMTAuMDElKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlO1xuICB0cmFuc2Zvcm06IHNjYWxlKDEwLCAxMCk7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzLCBvcGFjaXR5IDAuNXM7XG59XG4uYXV0aG1lLXNlbGVjdC1jb250YWluZXIgLm1lbnUtY29udGVudCAubWVudS1jb250ZW50LWZvb3RlciAubWVudS1jb250ZW50LWZvb3Rlci1jb250ZW50IC5mb290ZXItY29uZmlybS1idXR0b246YWN0aXZlOmFmdGVyIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwLCAwKTtcbiAgb3BhY2l0eTogMC4zO1xuICB0cmFuc2l0aW9uOiAwcztcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5tZW51LWNvbnRlbnQtZm9vdGVyIC5tZW51LWNvbnRlbnQtZm9vdGVyLWNvbnRlbnQgLmZvb3Rlci1jb25maXJtLWJ1dHRvbi5kaXNhYmxlIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWF1dGhtZS1kaXNhYmxlKTtcbn1cbi5hdXRobWUtc2VsZWN0LWNvbnRhaW5lciAubWVudS1jb250ZW50IC5tZW51LWNvbnRlbnQtZm9vdGVyIC5tZW51LWNvbnRlbnQtZm9vdGVyLWNvbnRlbnQgLmZvb3Rlci1zdGF0ZW1lbnQge1xuICBtYXJnaW4tdG9wOiAxMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5saXZlbmVzcy1jb250YWluZXIgLnZpZGVvLWNvbnRhaW5lciB2aWRlbyB7XG4gIHRyYW5zZm9ybTogcm90YXRlWSgxODBkZWcpO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyIC50aXRsZSB7XG4gIHRvcDogY2FsYygyNnZoIC0gNTVweCk7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC52aWRlby1jb250YWluZXIgLnN0YXR1cyB7XG4gIHRvcDogNzR2aDtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmZhY2UtbWFzayB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIGJveC1zaGFkb3c6ICNmZmZmZmYgMHB4IDBweCAwcHggMjAwMHB4O1xuICBoZWlnaHQ6IDQ4dmg7XG4gIG1hcmdpbjogYXV0bztcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAtLWI6IDBweDtcbiAgLS1jOiB0cmFuc3BhcmVudDtcbiAgLS13OiAyN3B4O1xuICAtLXI6IDUwJTtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmZhY2UtbWFzay5wYXNzIHtcbiAgLS1jOiB2YXIoLS1zY2FubmVyLXBhc3MtY29sb3IpO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAuZmFjZS1tYXNrLmVycm9yIHtcbiAgLS1jOiB2YXIoLS1zY2FubmVyLWVycm9yLWNvbG9yKTtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmZhY2UtbWFzazo6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQ6IHZhcigtLWMsIHJlZCk7XG4gIHBhZGRpbmc6IDZweDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcik7XG4gIG1hc2s6IGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgdG9wL2NhbGMoMTAwJSAtIDIgKiB2YXIoLS13KSkgdmFyKC0tYiksIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgYm90dG9tL2NhbGMoMTAwJSAtIDIgKiB2YXIoLS13KSkgdmFyKC0tYiksIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgbGVmdC92YXIoLS1iKSBjYWxjKDEwMCUgLSAyICogdmFyKC0tdykpLCBsaW5lYXItZ3JhZGllbnQoI2ZmZiAwIDApIHJpZ2h0L3ZhcigtLWIpIGNhbGMoMTAwJSAtIDIgKiB2YXIoLS13KSksIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCkgY29udGVudC1ib3gsIGxpbmVhci1ncmFkaWVudCgjZmZmIDAgMCk7XG4gIG1hc2stY29tcG9zaXRlOiBleGNsdWRlO1xuICBtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAudGV4dC1wYW5lbCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTAzO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTAwdnc7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC50ZXh0LXRpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgY29sb3I6ICM0NzRhNTM7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC50ZXh0LWhpbnQge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDYwLCA2MCwgNjAsIDAuNyk7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIHBhZGRpbmc6IDhweCAxNHB4O1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAudmlkZW8tY29udGFpbmVyX19jbG9zZS5hdXRobWUtaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1wYW5lbCB7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDYwcHg7XG4gIGxlZnQ6IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGluc2V0OiAwcHg7XG4gIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgZGlzcGxheTogZ3JpZDtcbiAgei1pbmRleDogMjAwO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZC1oZWFkZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDQycHg7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1oZWFkZXItbGVmdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDhweCAyNHB4O1xuICBnYXA6IDVweDtcbiAgd2lkdGg6IDMwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBmbGV4OiBub25lO1xuICBvcmRlcjogMDtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgZmxleC1ncm93OiAxO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZGUtaGVhZGVyLXJpZ2h0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogOHB4IDI0cHggOHB4IDhweDtcbiAgZ2FwOiAxMHB4O1xuICB3aWR0aDogMzAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAyO1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICBmbGV4LWdyb3c6IDE7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1oZWFkZXItdGl0bGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAwcHg7XG4gIGdhcDogMTBweDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBmbGV4OiBub25lO1xuICBvcmRlcjogMTtcbiAgZmxleC1ncm93OiAwO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZGUtaGVhZGVyLXRpdGxlLXRleHQge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZvbnQtZmFtaWx5OiBcIk5vdG8gU2FucyBUQ1wiO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgY29sb3I6ICM0NzRhNTM7XG4gIGZsZXg6IG5vbmU7XG4gIG9yZGVyOiAwO1xuICBmbGV4LWdyb3c6IDE7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1pbWctY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgdG9wOiA5MHB4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkLWltZyB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAzMjRweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2UxZTNlNTtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWhpbnQtZ3JvdXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi10b3A6IDIwcHg7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1oaW50LWdyb3VwID4gdWwge1xuICBwYWRkaW5nLWxlZnQ6IDBweDtcbiAgbWF4LXdpZHRoOiAyNzlweDtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWhpbnQtZ3JvdXAgPiB1bCA+IGxpIHtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zIFRDXCI7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgbWFyZ2luOiA0cHggMHB4O1xuICBjb2xvcjogIzQ3NGE1Mztcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWhpbnQtZ3JvdXAgPiB1bCA+IGxpOjptYXJrZXIge1xuICBjb2xvcjogIzI1NjA4YTtcbiAgZm9udC1zaXplOiA2cHg7XG59XG4ubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkLWNvbnRpbnVlLWJ0biB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aWR0aDogMzQzcHg7XG4gIGhlaWdodDogNDhweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYXV0aG1lLWN1c3RvbV9fcHJpbWFyeS0yKTtcbiAgYm94LXNoYWRvdzogNHB4IDRweCAxNnB4IHJnYmEoMCwgMTkzLCAxODIsIDAuMjUpO1xuICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgbWFyZ2luOiAzMHB4IGF1dG87XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWNsb3NlIHtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMjRweDtcbiAgZmxleDogbm9uZTtcbiAgb3JkZXI6IDA7XG4gIGZsZXgtZ3JvdzogMDtcbiAgYmFja2dyb3VuZC1pbWFnZTogdmFyKC0tYXV0aG1lLWNsb3NlLWljb24taW1hZ2UpO1xufVxuLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZGUtY2xvc2UuYXV0aG1lLWhpZGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA4NDBweCkge1xuICAubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1iYWNrZ3JvdW5kIHtcbiAgICB3aWR0aDogMTAwdnc7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgei1pbmRleDogOTk5O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42NSk7XG4gIH1cbiAgLmxpdmVuZXNzLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZGUtYmFja2dyb3VuZCAubGl2ZW5lc3MtZ3VpZGUtcGFuZWwge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogODAwcHg7XG4gICAgaGVpZ2h0OiA2ODRweDtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgfVxuICAubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1iYWNrZ3JvdW5kIC5saXZlbmVzcy1ndWlkZS1wYW5lbCAubGl2ZW5lc3MtZ3VpZC1oZWFkZXIge1xuICAgIG1hcmdpbi10b3A6IDMwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgfVxuICAubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1iYWNrZ3JvdW5kIC5saXZlbmVzcy1ndWlkZS1wYW5lbCAubGl2ZW5lc3MtZ3VpZGUtZGl2aWRlIHtcbiAgICB3aWR0aDogNzAlO1xuICAgIGhlaWdodDogMXB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWF1dGhtZS1kaXZpZGUpO1xuICB9XG4gIC5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWJhY2tncm91bmQgLmxpdmVuZXNzLWd1aWRlLXBhbmVsIC5saXZlbmVzcy1ndWlkZS1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luOiBhdXRvO1xuICB9XG4gIC5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWJhY2tncm91bmQgLmxpdmVuZXNzLWd1aWRlLXBhbmVsIC5saXZlbmVzcy1ndWlkZS1jb250ZW50IC5saXZlbmVzcy1ndWlkZS1pbWctY29udGFpbmVyIHtcbiAgICB3aWR0aDogaW5pdGlhbDtcbiAgfVxuICAubGl2ZW5lc3MtY29udGFpbmVyIC5saXZlbmVzcy1ndWlkZS1iYWNrZ3JvdW5kIC5saXZlbmVzcy1ndWlkZS1wYW5lbCAubGl2ZW5lc3MtZ3VpZGUtY29udGVudCAubGl2ZW5lc3MtZ3VpZGUtaW1nLWNvbnRhaW5lciAubGl2ZW5lc3MtZ3VpZC1pbWcge1xuICAgIHdpZHRoOiBpbml0aWFsO1xuICB9XG4gIC5saXZlbmVzcy1jb250YWluZXIgLmxpdmVuZXNzLWd1aWRlLWJhY2tncm91bmQgLmxpdmVuZXNzLWd1aWRlLXBhbmVsIC5saXZlbmVzcy1ndWlkZS1jb250ZW50IC5saXZlbmVzcy1oaW50LWdyb3VwIHtcbiAgICB3aWR0aDogaW5pdGlhbDtcbiAgICBwYWRkaW5nOiAycmVtO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmxpdmVuZXNzLWNvbnRhaW5lciAuZmFjZS1tYXNrIHtcbiAgICBoZWlnaHQ6IDUydmg7XG4gIH1cbn1cbjpyb290IHtcbiAgLS1hdXRobWUtZm9udC1zbWFsbDogMTJweDtcbiAgLS1hdXRobWUtZm9udC1taWQ6IDE2cHg7XG4gIC0tYXV0aG1lLWZvbnQtbGFyZ2U6IDE4cHg7XG4gIC0tYXV0aG1lLW91dGVyOiByZ2JhKDAsIDAsIDAsIDAuNjUpO1xuICAtLWF1dGhtZS1tZW51LWZvb3RlcjogI2I0YjdiZDtcbiAgLS1hdHVobWUtYnRuLWFjdGl2ZTogIzAwYjFhNztcbiAgLS1hdXRobWUtcmV0cnktYnRuLWFjdGl2ZTogI2VmZmZmZTtcbiAgLS1hdXRobWUtZGl2aWRlOiAjZTFlM2U1O1xuICAtLWF1dGhtZS1kaXNhYmxlOiAjZGFkYWRhO1xuICAtLWF1dGhtZS1jdXN0b21fX3ByaW1hcnktMTogIzI1NjA4YTtcbiAgLS1hdXRobWUtY3VzdG9tX19wcmltYXJ5LTI6ICMwMGMxYjY7XG4gIC0tYXV0aG1lLW5ldXRyYWxfX3doaXRlOiAjZmZmZmZmO1xuICAtLWF1dGhtZS1uZXV0cmFsX193aGl0ZTogIzAwMDAwMDtcbiAgLS1hdXRobWUtYnJhbmRfX2F1dGhtZS0xOiAjN2NmZmY5O1xuICAtLWF1dGhtZS1icmFuZF9fZXJyb3I6ICNmZjcwNzA7XG59XG5cbjpyb290IHtcbiAgLS1hdXRobWUtY2xvc2UtaWNvbi1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCa0FBQUFZQ0FZQUFBQVB0VmJHQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQURvU1VSQlZIZ0I3WlRORFlKQUVJVWYwb2dOZ0I0b2dEb0lNZkZHRjJBWEhEbWdkY0NkaTlDQW5lQk9OSVpzMXQyM3hvTW1mQW5oSnp2N1pkaVpBVmIrZ3V4UWxISjlLeWJVUCtSNWtjNUFveDdUYUo5Z3VnNDlDQUZtVkJLemk1TitISWViVlNJTG9qZ0pFQ0JsUkFzQjFQMTBidXNHcmt5RWFSdzZScVFMTG0xZG1mWXpTaGdSSzdCS2JDSWZnUkNBSU11TFNxMHNud0dkS295VUZRZ2hDTFNNdGo0Q1lRT1dqZHJXOW02QnltUjVCdks3OE1pRzdpT254SERJUjU4K2NrcmVWUkhiUjA2SnEweDlST0VuQWwrUmJVQlNaYXFML0FZazBMTjk4QktwR05PQVhQazk3bU9rd29nZ1pkS2pBQUFBQUVsRlRrU3VRbUNDXCIpO1xuICAtLWF1dGhtZS1iYWNrLWljb24taW1hZ2U6IHVybChcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFEN1NVUkJWSGdCM1pVOUVvSXdFSVZYdVFBM01DV2wzRUE3eTNBQ2g1dm9TZVFJV0ZJNTNzQ1N6dFl5cFIyK2pIR0d3WVQ4TnZwbWRoSVcrQjRoUDB2MDYxcFFnRGpuYXpRWGhFQ1ViZHNLMDdOTDh0UUluaU9ZQ2twaU1JRkxIZkgxdDdsM25IK1JBWDZ3dmVjMGdxcXE5aUZ3S2VzSUpId1lobWFVY29aYkRXTGhzd1lwNEVZRERid0d2S0VBZlJsZ3RUQTA5eFJ3S2QwcUVpbytXbEdFc21taTcvdG5VUlFkdWp0Nkw4c05ybVgrU2dIS2RFbkFIb0NlMGVXeEpwbnBCbUJDWTVJajM1R0hyQnROVGJyY3hVeWxHa3g2VFk1eU9vdGlUSHdPT3haaTRsVndRa3k4SzVyR3BKeXJDYUVsazZFNXlUN2dXL3BydlFDSHBuYmRTSFhqL0FBQUFBQkpSVTVFcmtKZ2dnPT1cIik7XG59XG4iXX0= */
|
package/index.cjs
CHANGED
|
@@ -76,7 +76,8 @@ const defaultLivenessConfig = {
|
|
|
76
76
|
active: true,
|
|
77
77
|
icon: DEFAULT_ICON_URI,
|
|
78
78
|
showIntroPage: false,
|
|
79
|
-
headerMode: 1
|
|
79
|
+
headerMode: 1,
|
|
80
|
+
showCloseButton: true
|
|
80
81
|
};
|
|
81
82
|
const defaultIdRecognitionConfig = {
|
|
82
83
|
icon: DEFAULT_ICON_URI,
|
|
@@ -88,7 +89,8 @@ const defaultIdRecognitionConfig = {
|
|
|
88
89
|
displayResultPage: false,
|
|
89
90
|
showStatement: true,
|
|
90
91
|
headerMode: 1,
|
|
91
|
-
blockFraud: false
|
|
92
|
+
blockFraud: false,
|
|
93
|
+
showCloseButton: true
|
|
92
94
|
};
|
|
93
95
|
|
|
94
96
|
function setCorrectViewHeight() {
|
|
@@ -132,6 +134,9 @@ const renderBasicUI = userConfig => {
|
|
|
132
134
|
const closeIcon = document.createElement('img');
|
|
133
135
|
closeIcon.classList.add('video-container__close');
|
|
134
136
|
closeIcon.src = util.Icon.CloseIcon;
|
|
137
|
+
if (!userConfig.showCloseButton) {
|
|
138
|
+
closeIcon.classList.add('authme-hide');
|
|
139
|
+
}
|
|
135
140
|
const video = document.createElement('video');
|
|
136
141
|
video.autoplay = true;
|
|
137
142
|
video.muted = true;
|
|
@@ -158,6 +163,9 @@ var MASK_STYLE;
|
|
|
158
163
|
MASK_STYLE[MASK_STYLE["DESKTOP_RATIO"] = 1.2] = "DESKTOP_RATIO";
|
|
159
164
|
MASK_STYLE[MASK_STYLE["DEFAULT_RATIO"] = 0.72] = "DEFAULT_RATIO";
|
|
160
165
|
MASK_STYLE[MASK_STYLE["HEIGHT_RATIO"] = 0.48] = "HEIGHT_RATIO";
|
|
166
|
+
MASK_STYLE[MASK_STYLE["MASK_TOP_PERCENT"] = 25.5] = "MASK_TOP_PERCENT";
|
|
167
|
+
MASK_STYLE[MASK_STYLE["MASK_TITLE_MARGIN"] = 24] = "MASK_TITLE_MARGIN";
|
|
168
|
+
MASK_STYLE[MASK_STYLE["TITLE_TEXT_FONT_SIZE"] = 18] = "TITLE_TEXT_FONT_SIZE";
|
|
161
169
|
})(MASK_STYLE || (MASK_STYLE = {}));
|
|
162
170
|
const renderLivenessUI = config => {
|
|
163
171
|
const translateService = core.getTranslateInstance();
|
|
@@ -183,12 +191,15 @@ const renderLivenessUI = config => {
|
|
|
183
191
|
//TODO: setup mask width/height
|
|
184
192
|
const maskHeight = window.outerHeight * MASK_STYLE.HEIGHT_RATIO;
|
|
185
193
|
const maskRatio = window.innerWidth > MASK_STYLE.DESKTOP_LIMIT ? MASK_STYLE.DESKTOP_RATIO : MASK_STYLE.DEFAULT_RATIO;
|
|
186
|
-
const maskWidth = Math.round(maskHeight * maskRatio)
|
|
194
|
+
const maskWidth = Math.round(maskHeight * maskRatio);
|
|
187
195
|
faceMask.style.width = `${maskWidth}px`;
|
|
196
|
+
faceMask.style.height = `${maskHeight}px`;
|
|
188
197
|
// text panel
|
|
189
198
|
const titleTextPanel = createTextPanel();
|
|
190
199
|
titleTextPanel.classList.add('title');
|
|
191
200
|
const titleText = createTextTitle();
|
|
201
|
+
//由於setStatusTop會與titile font size 相關,所以直接在這邊用innerStyle修改,避免未來CSS污染導致setStatusTop失效
|
|
202
|
+
titleText.style.fontSize = `${MASK_STYLE.TITLE_TEXT_FONT_SIZE}px`;
|
|
192
203
|
const statusTextPanel = createTextPanel();
|
|
193
204
|
statusTextPanel.classList.add('status');
|
|
194
205
|
const statusText = createTextHint();
|
|
@@ -199,13 +210,34 @@ const renderLivenessUI = config => {
|
|
|
199
210
|
// Set init text
|
|
200
211
|
titleText.textContent = translateService.translate('liveness.title');
|
|
201
212
|
statusText.textContent = translateService.translate('liveness.error.noFace');
|
|
213
|
+
setStatusTextTop({
|
|
214
|
+
maskHeight,
|
|
215
|
+
statusTextPanel,
|
|
216
|
+
titleTextPanel
|
|
217
|
+
});
|
|
202
218
|
return {
|
|
203
|
-
titleText,
|
|
204
219
|
statusText,
|
|
205
|
-
faceMask
|
|
220
|
+
faceMask,
|
|
221
|
+
titleTextPanel,
|
|
222
|
+
statusTextPanel
|
|
206
223
|
};
|
|
207
224
|
};
|
|
208
|
-
const
|
|
225
|
+
const setStatusTextTop = params => {
|
|
226
|
+
const {
|
|
227
|
+
maskHeight,
|
|
228
|
+
maskTop,
|
|
229
|
+
titleTextPanel,
|
|
230
|
+
statusTextPanel
|
|
231
|
+
} = params;
|
|
232
|
+
const _maskTop = maskTop !== null && maskTop !== void 0 ? maskTop : window.innerHeight / 2 - maskHeight / 2;
|
|
233
|
+
const _maskBotton = _maskTop + maskHeight;
|
|
234
|
+
titleTextPanel.style.top = `${_maskTop - MASK_STYLE.MASK_TITLE_MARGIN - MASK_STYLE.TITLE_TEXT_FONT_SIZE}px`;
|
|
235
|
+
statusTextPanel.style.top = `${_maskBotton + MASK_STYLE.MASK_TITLE_MARGIN}px`;
|
|
236
|
+
};
|
|
237
|
+
const renderLivenessGuideUI = ({
|
|
238
|
+
container,
|
|
239
|
+
showCloseButton
|
|
240
|
+
}) => {
|
|
209
241
|
const translateService = core.getTranslateInstance();
|
|
210
242
|
const createLivenessBackground = () => {
|
|
211
243
|
const ele = document.createElement('div');
|
|
@@ -245,6 +277,9 @@ const renderLivenessGuideUI = container => {
|
|
|
245
277
|
const createCloseBtn = () => {
|
|
246
278
|
const ele = document.createElement('i');
|
|
247
279
|
ele.classList.add('liveness-guide-close');
|
|
280
|
+
if (!showCloseButton) {
|
|
281
|
+
ele.classList.add('authme-hide');
|
|
282
|
+
}
|
|
248
283
|
return ele;
|
|
249
284
|
};
|
|
250
285
|
const createHeaderTitle = () => {
|
|
@@ -419,11 +454,14 @@ function startLiveness(config) {
|
|
|
419
454
|
headerTitle
|
|
420
455
|
} = renderBasicUI({
|
|
421
456
|
headerIcon: config.livenessConfig.icon,
|
|
422
|
-
headerMode: config.livenessConfig.headerMode
|
|
457
|
+
headerMode: config.livenessConfig.headerMode,
|
|
458
|
+
showCloseButton: config.livenessConfig.showCloseButton
|
|
423
459
|
});
|
|
424
460
|
const {
|
|
425
461
|
statusText,
|
|
426
|
-
faceMask
|
|
462
|
+
faceMask,
|
|
463
|
+
titleTextPanel,
|
|
464
|
+
statusTextPanel
|
|
427
465
|
} = renderLivenessUI({
|
|
428
466
|
container,
|
|
429
467
|
videoContainer,
|
|
@@ -504,14 +542,55 @@ function startLiveness(config) {
|
|
|
504
542
|
const maskWidth = Math.round(maskHeight * 0.72).toString();
|
|
505
543
|
faceMask.style.width = `${maskWidth}px`;
|
|
506
544
|
}), rxjs.takeUntil(unsubscribe$)).subscribe();
|
|
507
|
-
rxjs.fromEvent(closeIcon, 'click').pipe(rxjs.switchMap(() =>
|
|
545
|
+
const closeIconHandler$ = rxjs.fromEvent(closeIcon, 'click').pipe(rxjs.switchMap(() => {
|
|
546
|
+
// reset();
|
|
547
|
+
throw new core.AuthmeError(core.ErrorCode.USER_CANCEL);
|
|
548
|
+
}), rxjs.takeUntil(unsubscribe$));
|
|
508
549
|
const resizedError$ = makeResizedError$(unsubscribe$);
|
|
509
550
|
// Start
|
|
510
|
-
const step1 = rxjs.defer(() => renderLivenessGuideUI(
|
|
551
|
+
const step1 = rxjs.defer(() => renderLivenessGuideUI({
|
|
552
|
+
container: container,
|
|
553
|
+
showCloseButton: config.livenessConfig.showCloseButton
|
|
554
|
+
}));
|
|
511
555
|
const step2 = rxjs.of({}).pipe(rxjs.tap(() => {
|
|
512
556
|
util.startSpinner(translateService.translate('general.loading'));
|
|
513
557
|
headerTitle.textContent = translateService.translate('liveness.header.liveness');
|
|
514
|
-
|
|
558
|
+
setCorrectViewHeight();
|
|
559
|
+
}), rxjs.concatMap(() => rxjs.combineLatest([requestCamera$, init$])), rxjs.tap(() => util.stopSpinner()), rxjs.switchMap(() => rxjs.from(util.waitTime(1)).pipe(rxjs.tap(() => videoContainer.style.zIndex = '101'))), rxjs.switchMap(() => rxjs.from(util.getCanvasSize(video))), rxjs.switchMap(canvasSizeInfo => rxjs.from(config.onStart(canvasSizeInfo)).pipe(
|
|
560
|
+
/*
|
|
561
|
+
因為pipe在type的上限只有9個,超過就會被指派成unknow,所以多一層pipe
|
|
562
|
+
mask should reflect real ROI boundary
|
|
563
|
+
*/
|
|
564
|
+
rxjs.tap(params => {
|
|
565
|
+
// possible ROI,it means the boundary of validation viewport. TonyQ@20230106
|
|
566
|
+
// "faceROI": {
|
|
567
|
+
// "fLeft": 0.15000000596046448,
|
|
568
|
+
// "fTop": 0.2549999952316284,
|
|
569
|
+
// "fRight": 0.8500000238418579,
|
|
570
|
+
// "fBottom": 0.7450000047683716
|
|
571
|
+
// },
|
|
572
|
+
// ROI would work with following parameters.
|
|
573
|
+
// "fNotAtCenterTh": 0.25,
|
|
574
|
+
// "fFaceTooSmallTh": 0.6000000238418579,
|
|
575
|
+
// "fFaceTooLargeTh": 1.2000000476837158
|
|
576
|
+
const {
|
|
577
|
+
fLeft,
|
|
578
|
+
fTop,
|
|
579
|
+
fRight,
|
|
580
|
+
fBottom
|
|
581
|
+
} = params.faceROI;
|
|
582
|
+
faceMask.style.margin = '0';
|
|
583
|
+
faceMask.style.left = fLeft * 100 + '%';
|
|
584
|
+
faceMask.style.top = fTop * 100 + '%';
|
|
585
|
+
faceMask.style.width = (fRight - fLeft) * 100 + '%';
|
|
586
|
+
faceMask.style.height = (fBottom - fTop) * 100 + '%';
|
|
587
|
+
setStatusTextTop({
|
|
588
|
+
maskTop: window.innerHeight * fTop,
|
|
589
|
+
maskHeight: window.innerHeight * (fBottom - fTop),
|
|
590
|
+
titleTextPanel,
|
|
591
|
+
statusTextPanel
|
|
592
|
+
});
|
|
593
|
+
})).pipe(sendFrame(canvasSizeInfo, canvas, video, config.onFrame, livenessConfig.fasMaxFps, true, 'all'), rxjs.tap(({
|
|
515
594
|
result
|
|
516
595
|
}) => applyTextByResult(result)), rxjs.filter(({
|
|
517
596
|
result
|
|
@@ -526,7 +605,7 @@ function startLiveness(config) {
|
|
|
526
605
|
return ((_a = config.livenessConfig.showIntroPage) !== null && _a !== void 0 ? _a : false) ? step1 : rxjs.of('continue');
|
|
527
606
|
}, rxjs.concatMap(step1Result => {
|
|
528
607
|
if (step1Result === 'continue') {
|
|
529
|
-
return rxjs.merge(step2, resizedError$);
|
|
608
|
+
return rxjs.merge(step2, resizedError$, closeIconHandler$);
|
|
530
609
|
} else if (step1Result === 'cancel') {
|
|
531
610
|
return rxjs.throwError(() => new core.AuthmeError(core.ErrorCode.USER_CANCEL));
|
|
532
611
|
} else {
|
|
@@ -550,11 +629,11 @@ function startLiveness(config) {
|
|
|
550
629
|
} catch (error) {
|
|
551
630
|
// no video, ignore
|
|
552
631
|
}
|
|
553
|
-
|
|
632
|
+
container.remove();
|
|
554
633
|
video.srcObject = null;
|
|
555
|
-
document.body.removeChild(container);
|
|
556
634
|
unsubscribe$.next();
|
|
557
635
|
unsubscribe$.complete();
|
|
636
|
+
yield config.onDestroy();
|
|
558
637
|
});
|
|
559
638
|
}
|
|
560
639
|
}
|
|
@@ -10041,7 +10120,8 @@ function startOCR(config) {
|
|
|
10041
10120
|
headerSubtitle
|
|
10042
10121
|
} = renderBasicUI({
|
|
10043
10122
|
headerIcon: config.ocrConfig.icon,
|
|
10044
|
-
headerMode: config.ocrConfig.headerMode
|
|
10123
|
+
headerMode: config.ocrConfig.headerMode,
|
|
10124
|
+
showCloseButton: config.ocrConfig.showCloseButton
|
|
10045
10125
|
});
|
|
10046
10126
|
const {
|
|
10047
10127
|
antiFraudInstructionContainer,
|
|
@@ -10187,6 +10267,14 @@ function startOCR(config) {
|
|
|
10187
10267
|
statusText.textContent = translateService.translate('verify.error.wrongCardType');
|
|
10188
10268
|
setBorderColor('error');
|
|
10189
10269
|
break;
|
|
10270
|
+
case idRecognition.EAuthMePassportServiceStatus.NotAligned:
|
|
10271
|
+
statusText.textContent = translateService.translate('verify.error.mismatch');
|
|
10272
|
+
setBorderColor('error');
|
|
10273
|
+
break;
|
|
10274
|
+
case idRecognition.EAuthMePassportServiceStatus.Reflective:
|
|
10275
|
+
statusText.textContent = translateService.translate('verify.error.reflective');
|
|
10276
|
+
setBorderColor('error');
|
|
10277
|
+
break;
|
|
10190
10278
|
}
|
|
10191
10279
|
};
|
|
10192
10280
|
const init = retry => canvasSizeInfo$.pipe(rxjs.take(1), rxjs.switchMap(canvasSizeInfo => rxjs.from(config.setFrameSize(canvasSizeInfo.canvasWidth, canvasSizeInfo.canvasHeight)).pipe(rxjs.switchMap(() => util.checkOnlineStatus(translateService.translate('network.error.offline'))), rxjs.switchMap(() => config.ocrStart(getCardBorderPoint(), type, retry)), rxjs.tap(() => util.stopSpinner()), rxjs.map(() => canvasSizeInfo))));
|
|
@@ -10232,6 +10320,7 @@ function startOCR(config) {
|
|
|
10232
10320
|
const flow$ = config.acceptTypes.map(x => createFlowByType(x)).reduce((prev, cur) => prev.pipe(rxjs.switchMap(() => cur)), canvasSizeInfo$.pipe(rxjs.take(1), rxjs.tap(() => setUIByType(config.acceptTypes[0])), rxjs.switchMap(canvasSizeInfo => rxjs.from(config.init(canvasSizeInfo.canvasWidth, canvasSizeInfo.canvasHeight)).pipe(rxjs.tap(x => ocrConfig = x), rxjs.tap(() => util.stopSpinner()))))).pipe(rxjs.tap(() => {
|
|
10233
10321
|
util.hideElement(videoContainer);
|
|
10234
10322
|
util.startSpinner(translateService.translate('verify.uploading'));
|
|
10323
|
+
setCorrectViewHeight();
|
|
10235
10324
|
}), rxjs.switchMap(() => config.onSuccess()), rxjs.tap(() => {
|
|
10236
10325
|
util.stopSpinner();
|
|
10237
10326
|
container.style.display = 'none';
|
|
@@ -10726,6 +10815,13 @@ class LivenessVerifyModule {
|
|
|
10726
10815
|
const params = yield this.fasService.getParams();
|
|
10727
10816
|
params.timeoutSec = resp.parameters.fasTimeout || params.timeoutSec;
|
|
10728
10817
|
params.fFASTh = resp.parameters.fasThreshold || params.fFASTh;
|
|
10818
|
+
// sample code for manually change faceROI when need. TonyQ@20230106
|
|
10819
|
+
// this.params.faceROI = {
|
|
10820
|
+
// fLeft: 0.3,
|
|
10821
|
+
// fTop: 0.3,
|
|
10822
|
+
// fRight: 0.7,
|
|
10823
|
+
// fBottom: 0.7,
|
|
10824
|
+
// };
|
|
10729
10825
|
yield this.fasService.setParams(params);
|
|
10730
10826
|
return resp.parameters;
|
|
10731
10827
|
} catch (e) {
|
|
@@ -10756,16 +10852,29 @@ class LivenessVerifyModule {
|
|
|
10756
10852
|
throw e;
|
|
10757
10853
|
}
|
|
10758
10854
|
}),
|
|
10759
|
-
onStart:
|
|
10760
|
-
frameWidth =
|
|
10761
|
-
frameHeight =
|
|
10762
|
-
yield this.fasService.
|
|
10855
|
+
onStart: canvasSizeInfoCan => __awaiter(this, void 0, void 0, function* () {
|
|
10856
|
+
frameWidth = canvasSizeInfoCan.canvasWidth;
|
|
10857
|
+
frameHeight = canvasSizeInfoCan.canvasHeight;
|
|
10858
|
+
const params = yield this.fasService.getParams();
|
|
10859
|
+
const oldROI = params.faceROI;
|
|
10860
|
+
const actualHight = frameHeight * (oldROI.fBottom - oldROI.fTop);
|
|
10861
|
+
const actualWidth = frameWidth * (oldROI.fRight - oldROI.fLeft);
|
|
10862
|
+
let targetWidth = actualWidth;
|
|
10863
|
+
//we change the ROI when horizontal view for desktop camera.
|
|
10864
|
+
if (actualWidth > actualHight) {
|
|
10865
|
+
targetWidth = actualHight;
|
|
10866
|
+
const widthPercent = targetWidth / frameWidth;
|
|
10867
|
+
params.faceROI.fLeft = (1 - widthPercent) / 2;
|
|
10868
|
+
params.faceROI.fRight = 1 - (1 - widthPercent) / 2;
|
|
10869
|
+
}
|
|
10870
|
+
yield this.fasService.setParams(params);
|
|
10763
10871
|
if (config.active) {
|
|
10764
10872
|
yield this.fasService.setStage([liveness.EAuthMeFASServiceStage.Passive, liveness.EAuthMeFASServiceStage.OpenMouth, liveness.EAuthMeFASServiceStage.CloseMouth]);
|
|
10765
10873
|
} else {
|
|
10766
10874
|
yield this.fasService.setStage([liveness.EAuthMeFASServiceStage.Passive]);
|
|
10767
10875
|
}
|
|
10768
|
-
|
|
10876
|
+
yield this.fasService.startSession();
|
|
10877
|
+
return params;
|
|
10769
10878
|
}),
|
|
10770
10879
|
onFrame: (data, base64) => __awaiter(this, void 0, void 0, function* () {
|
|
10771
10880
|
var _c;
|
|
@@ -10926,17 +11035,38 @@ class LivenessModule {
|
|
|
10926
11035
|
id = resp.id;
|
|
10927
11036
|
yield this.fasService.init();
|
|
10928
11037
|
const params = yield this.fasService.getParams();
|
|
11038
|
+
// sample code for manually change faceROI when need. TonyQ@20230106
|
|
11039
|
+
// this.params.faceROI = {
|
|
11040
|
+
// fLeft: 0.3,
|
|
11041
|
+
// fTop: 0.3,
|
|
11042
|
+
// fRight: 0.7,
|
|
11043
|
+
// fBottom: 0.7,
|
|
11044
|
+
// };
|
|
10929
11045
|
params.timeoutSec = resp.parameters.fasTimeout || params.timeoutSec;
|
|
10930
11046
|
params.fFASTh = resp.parameters.fasThreshold || params.fFASTh;
|
|
10931
11047
|
yield this.fasService.setParams(params);
|
|
10932
11048
|
yield this.fasService.setStage(resp.parameters.fasStages.map(x => `EAuthMeFASServiceStage_${x}`));
|
|
10933
11049
|
return resp.parameters;
|
|
10934
11050
|
}),
|
|
10935
|
-
onStart:
|
|
10936
|
-
frameWidth =
|
|
10937
|
-
frameHeight =
|
|
10938
|
-
yield this.fasService.
|
|
10939
|
-
|
|
11051
|
+
onStart: canvasSizeInfoCan => __awaiter(this, void 0, void 0, function* () {
|
|
11052
|
+
frameWidth = canvasSizeInfoCan.canvasWidth;
|
|
11053
|
+
frameHeight = canvasSizeInfoCan.canvasHeight;
|
|
11054
|
+
const params = yield this.fasService.getParams();
|
|
11055
|
+
const oldROI = params.faceROI;
|
|
11056
|
+
const actualHight = frameHeight * (oldROI.fBottom - oldROI.fTop);
|
|
11057
|
+
const actualWidth = frameWidth * (oldROI.fRight - oldROI.fLeft);
|
|
11058
|
+
let targetWidth = actualWidth;
|
|
11059
|
+
//we change the ROI when horizontal view for desktop camera.
|
|
11060
|
+
if (actualWidth > actualHight) {
|
|
11061
|
+
targetWidth = actualHight;
|
|
11062
|
+
const widthPercent = targetWidth / frameWidth;
|
|
11063
|
+
params.faceROI.fLeft = (1 - widthPercent) / 2;
|
|
11064
|
+
params.faceROI.fRight = 1 - (1 - widthPercent) / 2;
|
|
11065
|
+
}
|
|
11066
|
+
yield this.fasService.setParams(params);
|
|
11067
|
+
yield this.fasService.setFrameSize(frameWidth, frameHeight);
|
|
11068
|
+
yield this.fasService.startSession();
|
|
11069
|
+
return params;
|
|
10940
11070
|
}),
|
|
10941
11071
|
onFrame: (data, base64) => __awaiter(this, void 0, void 0, function* () {
|
|
10942
11072
|
var _a;
|
|
@@ -11597,7 +11727,7 @@ class AuthmeIdentityVerification extends engine.AuthmeFunctionModule {
|
|
|
11597
11727
|
}
|
|
11598
11728
|
|
|
11599
11729
|
var name = "@authme/identity-verification";
|
|
11600
|
-
var version$1 = "2.2.1
|
|
11730
|
+
var version$1 = "2.2.1";
|
|
11601
11731
|
var peerDependencies = {
|
|
11602
11732
|
"core-js": "^3.6.0",
|
|
11603
11733
|
"lottie-web": "^5.9.2",
|
package/index.js
CHANGED
|
@@ -68,7 +68,8 @@ const defaultLivenessConfig = {
|
|
|
68
68
|
active: true,
|
|
69
69
|
icon: DEFAULT_ICON_URI,
|
|
70
70
|
showIntroPage: false,
|
|
71
|
-
headerMode: 1
|
|
71
|
+
headerMode: 1,
|
|
72
|
+
showCloseButton: true
|
|
72
73
|
};
|
|
73
74
|
const defaultIdRecognitionConfig = {
|
|
74
75
|
icon: DEFAULT_ICON_URI,
|
|
@@ -80,7 +81,8 @@ const defaultIdRecognitionConfig = {
|
|
|
80
81
|
displayResultPage: false,
|
|
81
82
|
showStatement: true,
|
|
82
83
|
headerMode: 1,
|
|
83
|
-
blockFraud: false
|
|
84
|
+
blockFraud: false,
|
|
85
|
+
showCloseButton: true
|
|
84
86
|
};
|
|
85
87
|
|
|
86
88
|
function setCorrectViewHeight() {
|
|
@@ -124,6 +126,9 @@ const renderBasicUI = userConfig => {
|
|
|
124
126
|
const closeIcon = document.createElement('img');
|
|
125
127
|
closeIcon.classList.add('video-container__close');
|
|
126
128
|
closeIcon.src = Icon.CloseIcon;
|
|
129
|
+
if (!userConfig.showCloseButton) {
|
|
130
|
+
closeIcon.classList.add('authme-hide');
|
|
131
|
+
}
|
|
127
132
|
const video = document.createElement('video');
|
|
128
133
|
video.autoplay = true;
|
|
129
134
|
video.muted = true;
|
|
@@ -150,6 +155,9 @@ var MASK_STYLE;
|
|
|
150
155
|
MASK_STYLE[MASK_STYLE["DESKTOP_RATIO"] = 1.2] = "DESKTOP_RATIO";
|
|
151
156
|
MASK_STYLE[MASK_STYLE["DEFAULT_RATIO"] = 0.72] = "DEFAULT_RATIO";
|
|
152
157
|
MASK_STYLE[MASK_STYLE["HEIGHT_RATIO"] = 0.48] = "HEIGHT_RATIO";
|
|
158
|
+
MASK_STYLE[MASK_STYLE["MASK_TOP_PERCENT"] = 25.5] = "MASK_TOP_PERCENT";
|
|
159
|
+
MASK_STYLE[MASK_STYLE["MASK_TITLE_MARGIN"] = 24] = "MASK_TITLE_MARGIN";
|
|
160
|
+
MASK_STYLE[MASK_STYLE["TITLE_TEXT_FONT_SIZE"] = 18] = "TITLE_TEXT_FONT_SIZE";
|
|
153
161
|
})(MASK_STYLE || (MASK_STYLE = {}));
|
|
154
162
|
const renderLivenessUI = config => {
|
|
155
163
|
const translateService = getTranslateInstance();
|
|
@@ -175,12 +183,15 @@ const renderLivenessUI = config => {
|
|
|
175
183
|
//TODO: setup mask width/height
|
|
176
184
|
const maskHeight = window.outerHeight * MASK_STYLE.HEIGHT_RATIO;
|
|
177
185
|
const maskRatio = window.innerWidth > MASK_STYLE.DESKTOP_LIMIT ? MASK_STYLE.DESKTOP_RATIO : MASK_STYLE.DEFAULT_RATIO;
|
|
178
|
-
const maskWidth = Math.round(maskHeight * maskRatio)
|
|
186
|
+
const maskWidth = Math.round(maskHeight * maskRatio);
|
|
179
187
|
faceMask.style.width = `${maskWidth}px`;
|
|
188
|
+
faceMask.style.height = `${maskHeight}px`;
|
|
180
189
|
// text panel
|
|
181
190
|
const titleTextPanel = createTextPanel();
|
|
182
191
|
titleTextPanel.classList.add('title');
|
|
183
192
|
const titleText = createTextTitle();
|
|
193
|
+
//由於setStatusTop會與titile font size 相關,所以直接在這邊用innerStyle修改,避免未來CSS污染導致setStatusTop失效
|
|
194
|
+
titleText.style.fontSize = `${MASK_STYLE.TITLE_TEXT_FONT_SIZE}px`;
|
|
184
195
|
const statusTextPanel = createTextPanel();
|
|
185
196
|
statusTextPanel.classList.add('status');
|
|
186
197
|
const statusText = createTextHint();
|
|
@@ -191,13 +202,34 @@ const renderLivenessUI = config => {
|
|
|
191
202
|
// Set init text
|
|
192
203
|
titleText.textContent = translateService.translate('liveness.title');
|
|
193
204
|
statusText.textContent = translateService.translate('liveness.error.noFace');
|
|
205
|
+
setStatusTextTop({
|
|
206
|
+
maskHeight,
|
|
207
|
+
statusTextPanel,
|
|
208
|
+
titleTextPanel
|
|
209
|
+
});
|
|
194
210
|
return {
|
|
195
|
-
titleText,
|
|
196
211
|
statusText,
|
|
197
|
-
faceMask
|
|
212
|
+
faceMask,
|
|
213
|
+
titleTextPanel,
|
|
214
|
+
statusTextPanel
|
|
198
215
|
};
|
|
199
216
|
};
|
|
200
|
-
const
|
|
217
|
+
const setStatusTextTop = params => {
|
|
218
|
+
const {
|
|
219
|
+
maskHeight,
|
|
220
|
+
maskTop,
|
|
221
|
+
titleTextPanel,
|
|
222
|
+
statusTextPanel
|
|
223
|
+
} = params;
|
|
224
|
+
const _maskTop = maskTop !== null && maskTop !== void 0 ? maskTop : window.innerHeight / 2 - maskHeight / 2;
|
|
225
|
+
const _maskBotton = _maskTop + maskHeight;
|
|
226
|
+
titleTextPanel.style.top = `${_maskTop - MASK_STYLE.MASK_TITLE_MARGIN - MASK_STYLE.TITLE_TEXT_FONT_SIZE}px`;
|
|
227
|
+
statusTextPanel.style.top = `${_maskBotton + MASK_STYLE.MASK_TITLE_MARGIN}px`;
|
|
228
|
+
};
|
|
229
|
+
const renderLivenessGuideUI = ({
|
|
230
|
+
container,
|
|
231
|
+
showCloseButton
|
|
232
|
+
}) => {
|
|
201
233
|
const translateService = getTranslateInstance();
|
|
202
234
|
const createLivenessBackground = () => {
|
|
203
235
|
const ele = document.createElement('div');
|
|
@@ -237,6 +269,9 @@ const renderLivenessGuideUI = container => {
|
|
|
237
269
|
const createCloseBtn = () => {
|
|
238
270
|
const ele = document.createElement('i');
|
|
239
271
|
ele.classList.add('liveness-guide-close');
|
|
272
|
+
if (!showCloseButton) {
|
|
273
|
+
ele.classList.add('authme-hide');
|
|
274
|
+
}
|
|
240
275
|
return ele;
|
|
241
276
|
};
|
|
242
277
|
const createHeaderTitle = () => {
|
|
@@ -411,11 +446,14 @@ function startLiveness(config) {
|
|
|
411
446
|
headerTitle
|
|
412
447
|
} = renderBasicUI({
|
|
413
448
|
headerIcon: config.livenessConfig.icon,
|
|
414
|
-
headerMode: config.livenessConfig.headerMode
|
|
449
|
+
headerMode: config.livenessConfig.headerMode,
|
|
450
|
+
showCloseButton: config.livenessConfig.showCloseButton
|
|
415
451
|
});
|
|
416
452
|
const {
|
|
417
453
|
statusText,
|
|
418
|
-
faceMask
|
|
454
|
+
faceMask,
|
|
455
|
+
titleTextPanel,
|
|
456
|
+
statusTextPanel
|
|
419
457
|
} = renderLivenessUI({
|
|
420
458
|
container,
|
|
421
459
|
videoContainer,
|
|
@@ -496,14 +534,55 @@ function startLiveness(config) {
|
|
|
496
534
|
const maskWidth = Math.round(maskHeight * 0.72).toString();
|
|
497
535
|
faceMask.style.width = `${maskWidth}px`;
|
|
498
536
|
}), takeUntil(unsubscribe$)).subscribe();
|
|
499
|
-
fromEvent(closeIcon, 'click').pipe(switchMap(() =>
|
|
537
|
+
const closeIconHandler$ = fromEvent(closeIcon, 'click').pipe(switchMap(() => {
|
|
538
|
+
// reset();
|
|
539
|
+
throw new AuthmeError(ErrorCode.USER_CANCEL);
|
|
540
|
+
}), takeUntil(unsubscribe$));
|
|
500
541
|
const resizedError$ = makeResizedError$(unsubscribe$);
|
|
501
542
|
// Start
|
|
502
|
-
const step1 = defer(() => renderLivenessGuideUI(
|
|
543
|
+
const step1 = defer(() => renderLivenessGuideUI({
|
|
544
|
+
container: container,
|
|
545
|
+
showCloseButton: config.livenessConfig.showCloseButton
|
|
546
|
+
}));
|
|
503
547
|
const step2 = of({}).pipe(tap(() => {
|
|
504
548
|
startSpinner(translateService.translate('general.loading'));
|
|
505
549
|
headerTitle.textContent = translateService.translate('liveness.header.liveness');
|
|
506
|
-
|
|
550
|
+
setCorrectViewHeight();
|
|
551
|
+
}), concatMap(() => combineLatest([requestCamera$, init$])), tap(() => stopSpinner()), switchMap(() => from(waitTime(1)).pipe(tap(() => videoContainer.style.zIndex = '101'))), switchMap(() => from(getCanvasSize(video))), switchMap(canvasSizeInfo => from(config.onStart(canvasSizeInfo)).pipe(
|
|
552
|
+
/*
|
|
553
|
+
因為pipe在type的上限只有9個,超過就會被指派成unknow,所以多一層pipe
|
|
554
|
+
mask should reflect real ROI boundary
|
|
555
|
+
*/
|
|
556
|
+
tap(params => {
|
|
557
|
+
// possible ROI,it means the boundary of validation viewport. TonyQ@20230106
|
|
558
|
+
// "faceROI": {
|
|
559
|
+
// "fLeft": 0.15000000596046448,
|
|
560
|
+
// "fTop": 0.2549999952316284,
|
|
561
|
+
// "fRight": 0.8500000238418579,
|
|
562
|
+
// "fBottom": 0.7450000047683716
|
|
563
|
+
// },
|
|
564
|
+
// ROI would work with following parameters.
|
|
565
|
+
// "fNotAtCenterTh": 0.25,
|
|
566
|
+
// "fFaceTooSmallTh": 0.6000000238418579,
|
|
567
|
+
// "fFaceTooLargeTh": 1.2000000476837158
|
|
568
|
+
const {
|
|
569
|
+
fLeft,
|
|
570
|
+
fTop,
|
|
571
|
+
fRight,
|
|
572
|
+
fBottom
|
|
573
|
+
} = params.faceROI;
|
|
574
|
+
faceMask.style.margin = '0';
|
|
575
|
+
faceMask.style.left = fLeft * 100 + '%';
|
|
576
|
+
faceMask.style.top = fTop * 100 + '%';
|
|
577
|
+
faceMask.style.width = (fRight - fLeft) * 100 + '%';
|
|
578
|
+
faceMask.style.height = (fBottom - fTop) * 100 + '%';
|
|
579
|
+
setStatusTextTop({
|
|
580
|
+
maskTop: window.innerHeight * fTop,
|
|
581
|
+
maskHeight: window.innerHeight * (fBottom - fTop),
|
|
582
|
+
titleTextPanel,
|
|
583
|
+
statusTextPanel
|
|
584
|
+
});
|
|
585
|
+
})).pipe(sendFrame(canvasSizeInfo, canvas, video, config.onFrame, livenessConfig.fasMaxFps, true, 'all'), tap(({
|
|
507
586
|
result
|
|
508
587
|
}) => applyTextByResult(result)), filter(({
|
|
509
588
|
result
|
|
@@ -518,7 +597,7 @@ function startLiveness(config) {
|
|
|
518
597
|
return ((_a = config.livenessConfig.showIntroPage) !== null && _a !== void 0 ? _a : false) ? step1 : of('continue');
|
|
519
598
|
}, concatMap(step1Result => {
|
|
520
599
|
if (step1Result === 'continue') {
|
|
521
|
-
return merge(step2, resizedError$);
|
|
600
|
+
return merge(step2, resizedError$, closeIconHandler$);
|
|
522
601
|
} else if (step1Result === 'cancel') {
|
|
523
602
|
return throwError(() => new AuthmeError(ErrorCode.USER_CANCEL));
|
|
524
603
|
} else {
|
|
@@ -542,11 +621,11 @@ function startLiveness(config) {
|
|
|
542
621
|
} catch (error) {
|
|
543
622
|
// no video, ignore
|
|
544
623
|
}
|
|
545
|
-
|
|
624
|
+
container.remove();
|
|
546
625
|
video.srcObject = null;
|
|
547
|
-
document.body.removeChild(container);
|
|
548
626
|
unsubscribe$.next();
|
|
549
627
|
unsubscribe$.complete();
|
|
628
|
+
yield config.onDestroy();
|
|
550
629
|
});
|
|
551
630
|
}
|
|
552
631
|
}
|
|
@@ -10033,7 +10112,8 @@ function startOCR(config) {
|
|
|
10033
10112
|
headerSubtitle
|
|
10034
10113
|
} = renderBasicUI({
|
|
10035
10114
|
headerIcon: config.ocrConfig.icon,
|
|
10036
|
-
headerMode: config.ocrConfig.headerMode
|
|
10115
|
+
headerMode: config.ocrConfig.headerMode,
|
|
10116
|
+
showCloseButton: config.ocrConfig.showCloseButton
|
|
10037
10117
|
});
|
|
10038
10118
|
const {
|
|
10039
10119
|
antiFraudInstructionContainer,
|
|
@@ -10179,6 +10259,14 @@ function startOCR(config) {
|
|
|
10179
10259
|
statusText.textContent = translateService.translate('verify.error.wrongCardType');
|
|
10180
10260
|
setBorderColor('error');
|
|
10181
10261
|
break;
|
|
10262
|
+
case EAuthMePassportServiceStatus.NotAligned:
|
|
10263
|
+
statusText.textContent = translateService.translate('verify.error.mismatch');
|
|
10264
|
+
setBorderColor('error');
|
|
10265
|
+
break;
|
|
10266
|
+
case EAuthMePassportServiceStatus.Reflective:
|
|
10267
|
+
statusText.textContent = translateService.translate('verify.error.reflective');
|
|
10268
|
+
setBorderColor('error');
|
|
10269
|
+
break;
|
|
10182
10270
|
}
|
|
10183
10271
|
};
|
|
10184
10272
|
const init = retry => canvasSizeInfo$.pipe(take(1), switchMap(canvasSizeInfo => from(config.setFrameSize(canvasSizeInfo.canvasWidth, canvasSizeInfo.canvasHeight)).pipe(switchMap(() => checkOnlineStatus(translateService.translate('network.error.offline'))), switchMap(() => config.ocrStart(getCardBorderPoint(), type, retry)), tap(() => stopSpinner()), map(() => canvasSizeInfo))));
|
|
@@ -10224,6 +10312,7 @@ function startOCR(config) {
|
|
|
10224
10312
|
const flow$ = config.acceptTypes.map(x => createFlowByType(x)).reduce((prev, cur) => prev.pipe(switchMap(() => cur)), canvasSizeInfo$.pipe(take(1), tap(() => setUIByType(config.acceptTypes[0])), switchMap(canvasSizeInfo => from(config.init(canvasSizeInfo.canvasWidth, canvasSizeInfo.canvasHeight)).pipe(tap(x => ocrConfig = x), tap(() => stopSpinner()))))).pipe(tap(() => {
|
|
10225
10313
|
hideElement(videoContainer);
|
|
10226
10314
|
startSpinner(translateService.translate('verify.uploading'));
|
|
10315
|
+
setCorrectViewHeight();
|
|
10227
10316
|
}), switchMap(() => config.onSuccess()), tap(() => {
|
|
10228
10317
|
stopSpinner();
|
|
10229
10318
|
container.style.display = 'none';
|
|
@@ -10718,6 +10807,13 @@ class LivenessVerifyModule {
|
|
|
10718
10807
|
const params = yield this.fasService.getParams();
|
|
10719
10808
|
params.timeoutSec = resp.parameters.fasTimeout || params.timeoutSec;
|
|
10720
10809
|
params.fFASTh = resp.parameters.fasThreshold || params.fFASTh;
|
|
10810
|
+
// sample code for manually change faceROI when need. TonyQ@20230106
|
|
10811
|
+
// this.params.faceROI = {
|
|
10812
|
+
// fLeft: 0.3,
|
|
10813
|
+
// fTop: 0.3,
|
|
10814
|
+
// fRight: 0.7,
|
|
10815
|
+
// fBottom: 0.7,
|
|
10816
|
+
// };
|
|
10721
10817
|
yield this.fasService.setParams(params);
|
|
10722
10818
|
return resp.parameters;
|
|
10723
10819
|
} catch (e) {
|
|
@@ -10748,16 +10844,29 @@ class LivenessVerifyModule {
|
|
|
10748
10844
|
throw e;
|
|
10749
10845
|
}
|
|
10750
10846
|
}),
|
|
10751
|
-
onStart:
|
|
10752
|
-
frameWidth =
|
|
10753
|
-
frameHeight =
|
|
10754
|
-
yield this.fasService.
|
|
10847
|
+
onStart: canvasSizeInfoCan => __awaiter(this, void 0, void 0, function* () {
|
|
10848
|
+
frameWidth = canvasSizeInfoCan.canvasWidth;
|
|
10849
|
+
frameHeight = canvasSizeInfoCan.canvasHeight;
|
|
10850
|
+
const params = yield this.fasService.getParams();
|
|
10851
|
+
const oldROI = params.faceROI;
|
|
10852
|
+
const actualHight = frameHeight * (oldROI.fBottom - oldROI.fTop);
|
|
10853
|
+
const actualWidth = frameWidth * (oldROI.fRight - oldROI.fLeft);
|
|
10854
|
+
let targetWidth = actualWidth;
|
|
10855
|
+
//we change the ROI when horizontal view for desktop camera.
|
|
10856
|
+
if (actualWidth > actualHight) {
|
|
10857
|
+
targetWidth = actualHight;
|
|
10858
|
+
const widthPercent = targetWidth / frameWidth;
|
|
10859
|
+
params.faceROI.fLeft = (1 - widthPercent) / 2;
|
|
10860
|
+
params.faceROI.fRight = 1 - (1 - widthPercent) / 2;
|
|
10861
|
+
}
|
|
10862
|
+
yield this.fasService.setParams(params);
|
|
10755
10863
|
if (config.active) {
|
|
10756
10864
|
yield this.fasService.setStage([EAuthMeFASServiceStage.Passive, EAuthMeFASServiceStage.OpenMouth, EAuthMeFASServiceStage.CloseMouth]);
|
|
10757
10865
|
} else {
|
|
10758
10866
|
yield this.fasService.setStage([EAuthMeFASServiceStage.Passive]);
|
|
10759
10867
|
}
|
|
10760
|
-
|
|
10868
|
+
yield this.fasService.startSession();
|
|
10869
|
+
return params;
|
|
10761
10870
|
}),
|
|
10762
10871
|
onFrame: (data, base64) => __awaiter(this, void 0, void 0, function* () {
|
|
10763
10872
|
var _c;
|
|
@@ -10918,17 +11027,38 @@ class LivenessModule {
|
|
|
10918
11027
|
id = resp.id;
|
|
10919
11028
|
yield this.fasService.init();
|
|
10920
11029
|
const params = yield this.fasService.getParams();
|
|
11030
|
+
// sample code for manually change faceROI when need. TonyQ@20230106
|
|
11031
|
+
// this.params.faceROI = {
|
|
11032
|
+
// fLeft: 0.3,
|
|
11033
|
+
// fTop: 0.3,
|
|
11034
|
+
// fRight: 0.7,
|
|
11035
|
+
// fBottom: 0.7,
|
|
11036
|
+
// };
|
|
10921
11037
|
params.timeoutSec = resp.parameters.fasTimeout || params.timeoutSec;
|
|
10922
11038
|
params.fFASTh = resp.parameters.fasThreshold || params.fFASTh;
|
|
10923
11039
|
yield this.fasService.setParams(params);
|
|
10924
11040
|
yield this.fasService.setStage(resp.parameters.fasStages.map(x => `EAuthMeFASServiceStage_${x}`));
|
|
10925
11041
|
return resp.parameters;
|
|
10926
11042
|
}),
|
|
10927
|
-
onStart:
|
|
10928
|
-
frameWidth =
|
|
10929
|
-
frameHeight =
|
|
10930
|
-
yield this.fasService.
|
|
10931
|
-
|
|
11043
|
+
onStart: canvasSizeInfoCan => __awaiter(this, void 0, void 0, function* () {
|
|
11044
|
+
frameWidth = canvasSizeInfoCan.canvasWidth;
|
|
11045
|
+
frameHeight = canvasSizeInfoCan.canvasHeight;
|
|
11046
|
+
const params = yield this.fasService.getParams();
|
|
11047
|
+
const oldROI = params.faceROI;
|
|
11048
|
+
const actualHight = frameHeight * (oldROI.fBottom - oldROI.fTop);
|
|
11049
|
+
const actualWidth = frameWidth * (oldROI.fRight - oldROI.fLeft);
|
|
11050
|
+
let targetWidth = actualWidth;
|
|
11051
|
+
//we change the ROI when horizontal view for desktop camera.
|
|
11052
|
+
if (actualWidth > actualHight) {
|
|
11053
|
+
targetWidth = actualHight;
|
|
11054
|
+
const widthPercent = targetWidth / frameWidth;
|
|
11055
|
+
params.faceROI.fLeft = (1 - widthPercent) / 2;
|
|
11056
|
+
params.faceROI.fRight = 1 - (1 - widthPercent) / 2;
|
|
11057
|
+
}
|
|
11058
|
+
yield this.fasService.setParams(params);
|
|
11059
|
+
yield this.fasService.setFrameSize(frameWidth, frameHeight);
|
|
11060
|
+
yield this.fasService.startSession();
|
|
11061
|
+
return params;
|
|
10932
11062
|
}),
|
|
10933
11063
|
onFrame: (data, base64) => __awaiter(this, void 0, void 0, function* () {
|
|
10934
11064
|
var _a;
|
|
@@ -11589,7 +11719,7 @@ class AuthmeIdentityVerification extends AuthmeFunctionModule {
|
|
|
11589
11719
|
}
|
|
11590
11720
|
|
|
11591
11721
|
var name = "@authme/identity-verification";
|
|
11592
|
-
var version$1 = "2.2.1
|
|
11722
|
+
var version$1 = "2.2.1";
|
|
11593
11723
|
var peerDependencies = {
|
|
11594
11724
|
"core-js": "^3.6.0",
|
|
11595
11725
|
"lottie-web": "^5.9.2",
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@authme/identity-verification",
|
|
3
|
-
"version": "2.2.1
|
|
3
|
+
"version": "2.2.1",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"core-js": "^3.6.0",
|
|
6
6
|
"lottie-web": "^5.9.2",
|
|
7
7
|
"rxjs": "^7.4.0",
|
|
8
|
-
"@authme/core": "2.2.1
|
|
9
|
-
"@authme/engine": "2.2.1
|
|
10
|
-
"@authme/id-recognition": "2.2.1
|
|
11
|
-
"@authme/util": "2.2.1
|
|
12
|
-
"@authme/liveness": "2.2.1
|
|
8
|
+
"@authme/core": "2.2.1",
|
|
9
|
+
"@authme/engine": "2.2.1",
|
|
10
|
+
"@authme/id-recognition": "2.2.1",
|
|
11
|
+
"@authme/util": "2.2.1",
|
|
12
|
+
"@authme/liveness": "2.2.1"
|
|
13
13
|
},
|
|
14
14
|
"module": "./index.js",
|
|
15
15
|
"main": "./index.cjs",
|
|
@@ -9,6 +9,7 @@ export interface LivenessConfig {
|
|
|
9
9
|
icon?: string;
|
|
10
10
|
showIntroPage?: boolean;
|
|
11
11
|
headerMode?: number;
|
|
12
|
+
showCloseButton?: boolean;
|
|
12
13
|
}
|
|
13
14
|
export declare const defaultLivenessConfig: Required<LivenessConfig>;
|
|
14
15
|
export interface IdRecognitionConfig {
|
|
@@ -22,6 +23,7 @@ export interface IdRecognitionConfig {
|
|
|
22
23
|
showStatement?: boolean;
|
|
23
24
|
headerMode?: number;
|
|
24
25
|
blockFraud?: boolean;
|
|
26
|
+
showCloseButton?: boolean;
|
|
25
27
|
}
|
|
26
28
|
export interface GetCardTypeAndCountryConfig {
|
|
27
29
|
supportCountries: CountryCode[];
|
package/src/lib/ui/basic.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { FasResult } from '@authme/liveness';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
|
+
import { CanvasSizeInfo } from '@authme/util';
|
|
3
4
|
import { LivenessConfig, LivenessEngineConfig } from '@authme/identity-verification';
|
|
4
5
|
export declare function startLiveness(config: {
|
|
5
6
|
livenessConfig: Required<LivenessConfig>;
|
|
6
7
|
init: () => Promise<LivenessEngineConfig>;
|
|
7
|
-
onStart: (
|
|
8
|
+
onStart: (canvasSizeInfo: CanvasSizeInfo) => Promise<any>;
|
|
8
9
|
onFrame: (data: Uint8ClampedArray, base64: {
|
|
9
10
|
jpg: string;
|
|
10
11
|
png: string;
|
|
@@ -3,8 +3,18 @@ export declare const renderLivenessUI: (config: {
|
|
|
3
3
|
videoContainer: HTMLElement;
|
|
4
4
|
video: HTMLVideoElement;
|
|
5
5
|
}) => {
|
|
6
|
-
titleText: HTMLDivElement;
|
|
7
6
|
statusText: HTMLDivElement;
|
|
8
7
|
faceMask: HTMLDivElement;
|
|
8
|
+
titleTextPanel: HTMLDivElement;
|
|
9
|
+
statusTextPanel: HTMLDivElement;
|
|
9
10
|
};
|
|
10
|
-
export declare const
|
|
11
|
+
export declare const setStatusTextTop: (params: {
|
|
12
|
+
maskHeight: number;
|
|
13
|
+
maskTop?: number;
|
|
14
|
+
statusTextPanel: HTMLElement;
|
|
15
|
+
titleTextPanel: HTMLElement;
|
|
16
|
+
}) => void;
|
|
17
|
+
export declare const renderLivenessGuideUI: ({ container, showCloseButton, }: {
|
|
18
|
+
container: HTMLElement;
|
|
19
|
+
showCloseButton: boolean;
|
|
20
|
+
}) => Promise<"continue" | "cancel">;
|
package/src/lib/ui/ui-init.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
declare function setCorrectViewHeight(): void;
|
|
1
|
+
export declare function setCorrectViewHeight(): void;
|