payload 2.2.0 → 2.2.2

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.
@@ -0,0 +1,371 @@
1
+ {
2
+ "authentication": {
3
+ "account": "계정",
4
+ "accountOfCurrentUser": "현재 사용자의 계정",
5
+ "alreadyActivated": "이미 활성화됨",
6
+ "alreadyLoggedIn": "이미 로그인됨",
7
+ "apiKey": "API 키",
8
+ "backToLogin": "로그인 화면으로 돌아가기",
9
+ "beginCreateFirstUser": "시작하려면 첫 번째 사용자를 생성하세요.",
10
+ "changePassword": "비밀번호 변경",
11
+ "checkYourEmailForPasswordReset": "비밀번호 재설정을 안전하게 수행할 수 있는 링크가 포함된 이메일을 확인하세요.",
12
+ "confirmGeneration": "생성 확인",
13
+ "confirmPassword": "비밀번호 확인",
14
+ "createFirstUser": "첫 번째 사용자 생성",
15
+ "emailNotValid": "입력한 이메일은 유효하지 않습니다.",
16
+ "emailSent": "이메일 전송됨",
17
+ "enableAPIKey": "API 키 활성화",
18
+ "failedToUnlock": "잠금 해제 실패",
19
+ "forceUnlock": "강제 잠금 해제",
20
+ "forgotPassword": "비밀번호를 잊으셨나요?",
21
+ "forgotPasswordEmailInstructions": "아래에 이메일을 입력하세요. 비밀번호를 재설정하는 방법에 대한 안내가 포함된 이메일 메시지를 받게 될 것입니다.",
22
+ "forgotPasswordQuestion": "비밀번호를 잊으셨나요?",
23
+ "generate": "생성",
24
+ "generateNewAPIKey": "새로운 API 키 생성",
25
+ "generatingNewAPIKeyWillInvalidate": "새로운 API 키를 생성하면 이전 키가 무효화됩니다. 계속하시겠습니까?",
26
+ "lockUntil": "잠금 시간",
27
+ "logBackIn": "다시 로그인",
28
+ "logOut": "로그아웃",
29
+ "loggedIn": "다른 사용자로 로그인하려면 먼저 <0>로그아웃</0>해야 합니다.",
30
+ "loggedInChangePassword": "비밀번호를 변경하려면 <0>계정 화면</0>으로 이동하여 비밀번호를 편집하세요.",
31
+ "loggedOutInactivity": "보안을 위해 일정 시간 동안 활동하지 않아 로그아웃되었습니다.",
32
+ "loggedOutSuccessfully": "로그아웃되었습니다.",
33
+ "login": "로그인",
34
+ "loginAttempts": "로그인 시도",
35
+ "loginUser": "현재 사용자 로그인",
36
+ "loginWithAnotherUser": "다른 사용자로 로그인하려면 먼저 <0>로그아웃</0>해야 합니다.",
37
+ "logout": "로그아웃",
38
+ "logoutUser": "현재 사용자 로그아웃",
39
+ "newAPIKeyGenerated": "새로운 API 키가 생성되었습니다.",
40
+ "newAccountCreated": "<a href=\"{{serverURL}}\">{{serverURL}}</a>에 접근할 수 있는 새로운 계정이 생성되었습니다. 다음 링크를 클릭하거나 브라우저에 URL을 붙여넣으세요: <a href=\"{{verificationURL}}\">{{verificationURL}}</a><br> 이메일을 확인한 후에 로그인할 수 있습니다.",
41
+ "newPassword": "새로운 비밀번호",
42
+ "resetPassword": "비밀번호 재설정",
43
+ "resetPasswordExpiration": "비밀번호 재설정 만료",
44
+ "resetPasswordToken": "비밀번호 재설정 토큰",
45
+ "resetYourPassword": "비밀번호 재설정",
46
+ "stayLoggedIn": "로그인 상태 유지",
47
+ "successfullyUnlocked": "잠금 해제 성공",
48
+ "unableToVerify": "확인할 수 없음",
49
+ "verified": "확인됨",
50
+ "verifiedSuccessfully": "성공적으로 확인됨",
51
+ "verify": "확인",
52
+ "verifyUser": "현재 사용자 확인",
53
+ "verifyYourEmail": "이메일을 확인해주세요",
54
+ "youAreInactive": "잠시 활동하지 않았으며 보안을 위해 곧 자동 로그아웃됩니다. 로그인 상태를 유지하시겠습니까?",
55
+ "youAreReceivingResetPassword": "당신(혹은 다른 사람)이 계정의 비밀번호 초기화를 요청했기 때문에 이 이메일을 받았습니다. 다음 링크를 클릭하거나 브라우저에 붙여넣어 비밀번호를 초기화하세요:",
56
+ "youDidNotRequestPassword": "비밀번호 초기화를 요청하지 않았다면 이 이메일을 무시하시고 비밀번호를 변경하지 마세요."
57
+ },
58
+ "error": {
59
+ "accountAlreadyActivated": "이 계정은 이미 활성화되었습니다.",
60
+ "autosaving": "이 문서를 자동 저장하는 중에 문제가 발생했습니다.",
61
+ "correctInvalidFields": "입력하신 내용을 확인해주세요.",
62
+ "deletingFile": "파일을 삭제하는 중에 오류가 발생했습니다.",
63
+ "deletingTitle": "{{title}} 삭제하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도하세요.",
64
+ "emailOrPasswordIncorrect": "입력한 이메일 또는 비밀번호가 올바르지 않습니다.",
65
+ "followingFieldsInvalid_one": "다음 입력란이 유효하지 않습니다:",
66
+ "followingFieldsInvalid_other": "다음 입력란이 유효하지 않습니다:",
67
+ "incorrectCollection": "잘못된 컬렉션",
68
+ "invalidFileType": "잘못된 파일 형식",
69
+ "invalidFileTypeValue": "잘못된 파일 형식: {{value}}",
70
+ "loadingDocument": "ID가 {{id}}인 문서를 불러오는 중에 문제가 발생했습니다.",
71
+ "missingEmail": "이메일이 누락되었습니다.",
72
+ "missingIDOfDocument": "업데이트할 문서의 ID가 누락되었습니다.",
73
+ "missingIDOfVersion": "버전의 ID가 누락되었습니다.",
74
+ "missingRequiredData": "필수 데이터가 누락되었습니다.",
75
+ "noFilesUploaded": "파일이 업로드되지 않았습니다.",
76
+ "noMatchedField": "\"{{label}}\"에 대한 일치하는 입력란이 없습니다.",
77
+ "noUser": "사용자가 없습니다.",
78
+ "notAllowedToAccessPage": "이 페이지에 접근할 권한이 없습니다.",
79
+ "notAllowedToPerformAction": "이 작업을 수행할 권한이 없습니다.",
80
+ "notFound": "요청한 리소스를 찾을 수 없습니다.",
81
+ "previewing": "이 문서를 미리보는 중에 문제가 발생했습니다.",
82
+ "problemUploadingFile": "파일 업로드 중에 문제가 발생했습니다.",
83
+ "tokenInvalidOrExpired": "토큰이 유효하지 않거나 만료되었습니다.",
84
+ "unPublishingDocument": "이 문서의 게시 취소 중에 문제가 발생했습니다.",
85
+ "unableToDeleteCount": "총 {{total}}개 중 {{count}}개의 {{label}}을(를) 삭제할 수 없습니다.",
86
+ "unableToUpdateCount": "총 {{total}}개 중 {{count}}개의 {{label}}을(를) 업데이트할 수 없습니다.",
87
+ "unauthorized": "권한 없음, 이 요청을 수행하려면 로그인해야 합니다.",
88
+ "unknown": "알 수 없는 오류가 발생했습니다.",
89
+ "unspecific": "오류가 발생했습니다.",
90
+ "userLocked": "이 사용자는 로그인 실패 횟수가 너무 많아 잠겼습니다.",
91
+ "valueMustBeUnique": "값은 고유해야 합니다.",
92
+ "verificationTokenInvalid": "확인 토큰이 유효하지 않습니다."
93
+ },
94
+ "fields": {
95
+ "addLabel": "{{label}} 추가",
96
+ "addLink": "링크 추가",
97
+ "addNew": "새로 추가",
98
+ "addNewLabel": "새로운 {{label}} 추가",
99
+ "addRelationship": "관계 추가",
100
+ "addUpload": "업로드 추가",
101
+ "block": "블록",
102
+ "blockType": "블록 유형",
103
+ "blocks": "블록",
104
+ "chooseBetweenCustomTextOrDocument": "사용자 지정 텍스트 URL 또는 다른 문서에 링크 중 선택하세요.",
105
+ "chooseDocumentToLink": "연결할 문서 선택",
106
+ "chooseFromExisting": "기존 항목 중 선택",
107
+ "chooseLabel": "{{label}} 선택",
108
+ "collapseAll": "모두 접기",
109
+ "customURL": "사용자 지정 URL",
110
+ "editLabelData": "{{label}} 데이터 수정",
111
+ "editLink": "링크 수정",
112
+ "editRelationship": "관계 수정",
113
+ "enterURL": "URL 입력",
114
+ "internalLink": "내부 링크",
115
+ "itemsAndMore": "{{items}} 및 {{count}}개 더",
116
+ "labelRelationship": "{{label}} 관계",
117
+ "latitude": "위도",
118
+ "linkType": "링크 유형",
119
+ "linkedTo": "<0>{{label}}</0>에 연결됨",
120
+ "longitude": "경도",
121
+ "newLabel": "새로운 {{label}}",
122
+ "openInNewTab": "새 탭에서 열기",
123
+ "passwordsDoNotMatch": "비밀번호가 일치하지 않습니다.",
124
+ "relatedDocument": "관련 문서",
125
+ "relationTo": "관계",
126
+ "removeRelationship": "관계 제거",
127
+ "removeUpload": "제거",
128
+ "saveChanges": "변경 사항 저장",
129
+ "searchForBlock": "블록 검색",
130
+ "selectExistingLabel": "기존 {{label}} 선택",
131
+ "selectFieldsToEdit": "수정할 입력란 선택",
132
+ "showAll": "모두 표시",
133
+ "swapRelationship": "관계 교체",
134
+ "swapUpload": "업로드 교체",
135
+ "textToDisplay": "표시할 텍스트",
136
+ "toggleBlock": "블록 토글",
137
+ "uploadNewLabel": "새로운 {{label}} 업로드"
138
+ },
139
+ "general": {
140
+ "aboutToDelete": "{{label}} <1>{{title}}</1>를 삭제하려고 합니다. 계속하시겠습니까?",
141
+ "aboutToDeleteCount_many": "{{label}}를 {{count}}개 삭제하려고 합니다.",
142
+ "aboutToDeleteCount_one": "{{label}}를 {{count}}개 삭제하려고 합니다.",
143
+ "aboutToDeleteCount_other": "{{label}}를 {{count}}개 삭제하려고 합니다.",
144
+ "addBelow": "아래에 추가",
145
+ "addFilter": "필터 추가",
146
+ "adminTheme": "관리자 테마",
147
+ "and": "및",
148
+ "applyChanges": "변경 사항 적용",
149
+ "ascending": "오름차순",
150
+ "automatic": "자동 설정",
151
+ "backToDashboard": "대시보드로 돌아가기",
152
+ "cancel": "취소",
153
+ "changesNotSaved": "변경 사항이 저장되지 않았습니다. 지금 떠나면 변경 사항을 잃게 됩니다.",
154
+ "close": "닫기",
155
+ "collapse": "접기",
156
+ "collections": "컬렉션",
157
+ "columnToSort": "정렬할 열",
158
+ "columns": "열",
159
+ "confirm": "확인",
160
+ "confirmDeletion": "삭제하시겠습니까?",
161
+ "confirmDuplication": "복제하시겠습니까?",
162
+ "copied": "복사됨",
163
+ "copy": "복사",
164
+ "create": "생성",
165
+ "createNew": "새로 생성",
166
+ "createNewLabel": "새로운 {{label}} 생성",
167
+ "creatingNewLabel": "{{label}} 생성 중",
168
+ "created": "생성됨",
169
+ "createdAt": "생성 일시",
170
+ "creating": "생성 중",
171
+ "dark": "다크",
172
+ "dashboard": "대시보드",
173
+ "delete": "삭제",
174
+ "deletedCountSuccessfully": "{{count}}개의 {{label}}를 삭제했습니다.",
175
+ "deletedSuccessfully": "삭제되었습니다.",
176
+ "deleting": "삭제 중...",
177
+ "descending": "내림차순",
178
+ "deselectAllRows": "모든 행 선택 해제",
179
+ "duplicate": "복제",
180
+ "duplicateWithoutSaving": "변경 사항 저장 없이 복제",
181
+ "edit": "수정",
182
+ "editLabel": "{{label}} 수정",
183
+ "editing": "수정 중",
184
+ "editingLabel_many": "{{count}}개의 {{label}} 수정 중",
185
+ "editingLabel_one": "{{count}}개의 {{label}} 수정 중",
186
+ "editingLabel_other": "{{count}}개의 {{label}} 수정 중",
187
+ "email": "이메일",
188
+ "emailAddress": "이메일 주소",
189
+ "enterAValue": "값을 입력하세요",
190
+ "error": "오류",
191
+ "errors": "오류",
192
+ "fallbackToDefaultLocale": "기본 locale로 대체",
193
+ "filter": "필터",
194
+ "filterWhere": "{{label}} 필터링 조건",
195
+ "filters": "필터",
196
+ "globals": "글로벌",
197
+ "language": "언어",
198
+ "lastModified": "마지막 수정 일시",
199
+ "leaveAnyway": "그래도 나가시겠습니까?",
200
+ "leaveWithoutSaving": "저장하지 않고 나가기",
201
+ "light": "라이트",
202
+ "livePreview": "실시간 미리보기",
203
+ "loading": "불러오는 중",
204
+ "locale": "locale",
205
+ "locales": "locale",
206
+ "menu": "메뉴",
207
+ "moveDown": "아래로 이동",
208
+ "moveUp": "위로 이동",
209
+ "newPassword": "새 비밀번호",
210
+ "noFiltersSet": "설정된 필터 없음",
211
+ "noLabel": "<{{label}} 없음>",
212
+ "noOptions": "옵션 없음",
213
+ "noResults": "{{label}}를 찾을 수 없습니다. 아직 {{label}}이 없거나 설정한 필터와 일치하는 것이 없습니다.",
214
+ "noValue": "값 없음",
215
+ "none": "없음",
216
+ "notFound": "찾을 수 없음",
217
+ "nothingFound": "찾을 수 없습니다",
218
+ "of": "의",
219
+ "or": "또는",
220
+ "open": "열기",
221
+ "order": "순서",
222
+ "pageNotFound": "페이지를 찾을 수 없음",
223
+ "password": "비밀번호",
224
+ "payloadSettings": "Payload 설정",
225
+ "perPage": "페이지당 개수: {{limit}}",
226
+ "remove": "제거",
227
+ "reset": "초기화",
228
+ "row": "행",
229
+ "rows": "행",
230
+ "save": "저장",
231
+ "saving": "저장 중...",
232
+ "searchBy": "{{label}}로 검색",
233
+ "selectAll": "{{count}}개 {{label}} 모두 선택",
234
+ "selectAllRows": "모든 행 선택",
235
+ "selectValue": "값 선택",
236
+ "selectedCount": "{{count}}개의 {{label}} 선택됨",
237
+ "showAllLabel": "{{label}} 모두 표시",
238
+ "sorryNotFound": "죄송합니다. 요청과 일치하는 항목이 없습니다.",
239
+ "sort": "정렬",
240
+ "sortByLabelDirection": "{{label}} {{direction}}으로 정렬",
241
+ "stayOnThisPage": "이 페이지에 머무르기",
242
+ "submissionSuccessful": "제출이 완료되었습니다.",
243
+ "submit": "제출",
244
+ "successfullyCreated": "{{label}}이(가) 생성되었습니다.",
245
+ "successfullyDuplicated": "{{label}}이(가) 복제되었습니다.",
246
+ "thisLanguage": "한국어",
247
+ "titleDeleted": "{{label}} \"{{title}}\"을(를) 삭제했습니다.",
248
+ "unauthorized": "권한 없음",
249
+ "unsavedChangesDuplicate": "저장되지 않은 변경 사항이 있습니다. 복제를 계속하시겠습니까?",
250
+ "untitled": "제목 없음",
251
+ "updatedAt": "업데이트 일시",
252
+ "updatedCountSuccessfully": "{{count}}개의 {{label}}을(를) 업데이트했습니다.",
253
+ "updatedSuccessfully": "성공적으로 업데이트되었습니다.",
254
+ "updating": "업데이트 중",
255
+ "uploading": "업로드 중",
256
+ "user": "사용자",
257
+ "users": "사용자",
258
+ "value": "값",
259
+ "welcome": "환영합니다"
260
+ },
261
+ "operators": {
262
+ "contains": "포함",
263
+ "equals": "같음",
264
+ "exists": "존재",
265
+ "isGreaterThan": "보다 큼",
266
+ "isGreaterThanOrEqualTo": "보다 크거나 같음",
267
+ "isIn": "포함됨",
268
+ "isLessThan": "보다 작음",
269
+ "isLessThanOrEqualTo": "보다 작거나 같음",
270
+ "isLike": "유사",
271
+ "isNotEqualTo": "같지 않음",
272
+ "isNotIn": "포함되지 않음",
273
+ "near": "근처"
274
+ },
275
+ "upload": {
276
+ "crop": "자르기",
277
+ "cropToolDescription": "선택한 영역의 모퉁이를 드래그하거나 새로운 영역을 그리거나 아래의 값을 조정하세요.",
278
+ "dragAndDrop": "파일을 끌어다 놓으세요",
279
+ "dragAndDropHere": "또는 여기로 파일을 끌어다 놓으세요",
280
+ "editImage": "이미지 수정",
281
+ "focalPoint": "초점",
282
+ "focalPointDescription": "미리보기에서 초점을 직접 드래그하거나 아래의 값을 조정하세요.",
283
+ "fileName": "파일 이름",
284
+ "fileSize": "파일 크기",
285
+ "height": "높이",
286
+ "lessInfo": "정보 숨기기",
287
+ "moreInfo": "정보 더보기",
288
+ "previewSizes": "미리보기 크기",
289
+ "selectCollectionToBrowse": "찾을 컬렉션 선택",
290
+ "selectFile": "파일 선택",
291
+ "setCropArea": "자르기 영역 설정",
292
+ "setFocalPoint": "초점 설정",
293
+ "sizes": "크기",
294
+ "sizesFor": "{{label}} 크기",
295
+ "width": "너비"
296
+ },
297
+ "validation": {
298
+ "emailAddress": "유효한 이메일 주소를 입력하세요.",
299
+ "enterNumber": "유효한 숫자를 입력하세요.",
300
+ "fieldHasNo": "이 입력란에는 {{label}}이(가) 없습니다.",
301
+ "greaterThanMax": "{{value}}은(는) 최대 허용된 {{label}}인 {{max}}개보다 큽니다.",
302
+ "invalidInput": "이 입력란에는 유효하지 않은 입력이 있습니다.",
303
+ "invalidSelection": "이 입력란에는 유효하지 않은 선택이 있습니다.",
304
+ "invalidSelections": "이 입력란에는 다음과 같은 유효하지 않은 선택 사항이 있습니다:",
305
+ "lessThanMin": "{{value}}은(는) 최소 허용된 {{label}}인 {{min}}개보다 작습니다.",
306
+ "limitReached": "제한에 도달했습니다. {{max}}개 항목만 추가할 수 있습니다.",
307
+ "longerThanMin": "이 값은 최소 길이인 {{minLength}}자보다 길어야 합니다.",
308
+ "notValidDate": "\"{{value}}\"은(는) 유효한 날짜가 아닙니다.",
309
+ "required": "이 입력란은 필수입니다.",
310
+ "requiresAtLeast": "이 입력란운 최소한 {{count}} {{label}}이 필요합니다.",
311
+ "requiresNoMoreThan": "이 입력란은 최대 {{count}} {{label}} 이하이어야 합니다.",
312
+ "requiresTwoNumbers": "이 입력란은 두 개의 숫자가 필요합니다.",
313
+ "shorterThanMax": "이 값은 최대 길이인 {{maxLength}}자보다 짧아야 합니다.",
314
+ "trueOrFalse": "이 입력란은 true 또는 false만 가능합니다.",
315
+ "validUploadID": "이 입력란은 유효한 업로드 ID가 아닙니다."
316
+ },
317
+ "version": {
318
+ "aboutToPublishSelection": "선택한 {{label}}을(를) 게시하려고 합니다. 계속하시겠습니까?",
319
+ "aboutToRestore": "이 {{label}} 문서를 {{versionDate}}기준 버전으로 복원하려고 합니다.",
320
+ "aboutToRestoreGlobal": "글로벌 {{label}}을(를) {{versionDate}}기준 버전으로 복원하려고 합니다.",
321
+ "aboutToRevertToPublished": "이 문서의 변경 사항을 게시된 상태로 되돌리려고 합니다. 계속하시겠습니까?",
322
+ "aboutToUnpublish": "이 문서를 게시 해제하려고 합니다. 계속하시겠습니까?",
323
+ "aboutToUnpublishSelection": "선택한 {{label}}을(를) 게시 해제하려고 합니다. 계속하시겠습니까?",
324
+ "autosave": "자동 저장",
325
+ "autosavedSuccessfully": "자동 저장이 완료되었습니다.",
326
+ "autosavedVersion": "자동 저장된 버전",
327
+ "changed": "변경됨",
328
+ "compareVersion": "비교할 버전 선택:",
329
+ "confirmPublish": "게시하기",
330
+ "confirmRevertToSaved": "저장된 상태로 되돌리기",
331
+ "confirmUnpublish": "게시 해제하기",
332
+ "confirmVersionRestoration": "버전 복원하기",
333
+ "currentDocumentStatus": "현재 {{docStatus}} 문서",
334
+ "draft": "초안",
335
+ "draftSavedSuccessfully": "초안이 저장되었습니다.",
336
+ "lastSavedAgo": "마지막으로 저장한지 {{distance}} 전",
337
+ "noFurtherVersionsFound": "더 이상의 버전을 찾을 수 없습니다.",
338
+ "noRowsFound": "{{label}}을(를) 찾을 수 없음",
339
+ "preview": "미리보기",
340
+ "problemRestoringVersion": "이 버전을 복원하는 중 문제가 발생했습니다.",
341
+ "publish": "게시",
342
+ "publishChanges": "변경 사항 게시",
343
+ "published": "게시됨",
344
+ "restoreThisVersion": "이 버전 복원",
345
+ "restoredSuccessfully": "복원이 완료되었습니다.",
346
+ "restoring": "복원 중...",
347
+ "revertToPublished": "게시된 상태로 되돌리기",
348
+ "reverting": "되돌리는 중...",
349
+ "saveDraft": "초안 저장",
350
+ "selectLocales": "표시할 locale 선택",
351
+ "selectVersionToCompare": "비교할 버전 선택",
352
+ "showLocales": "locale 표시:",
353
+ "showingVersionsFor": "다음 버전 표시 중:",
354
+ "status": "상태",
355
+ "type": "유형",
356
+ "unpublish": "게시 해제",
357
+ "unpublishing": "게시 해제 중...",
358
+ "version": "버전",
359
+ "versionCount_many": "{{count}}개의 버전을 찾았습니다",
360
+ "versionCount_none": "버전을 찾을 수 없습니다",
361
+ "versionCount_one": "{{count}}개의 버전을 찾았습니다",
362
+ "versionCount_other": "{{count}}개의 버전을 찾았습니다",
363
+ "versionCreatedOn": "{{version}} 생성 날짜:",
364
+ "versionID": "버전 ID",
365
+ "versions": "버전",
366
+ "viewingVersion": "{{entityLabel}} {{documentTitle}}의 버전 보기",
367
+ "viewingVersionGlobal": "글로벌 {{entityLabel}}의 버전 보기",
368
+ "viewingVersions": "{{entityLabel}} {{documentTitle}}에 대한 버전 보기",
369
+ "viewingVersionsGlobal": "글로벌 {{entityLabel}}에 대한 버전 보기"
370
+ }
371
+ }
@@ -164,7 +164,7 @@
164
164
  "copied": "Skopiowano",
165
165
  "copy": "Skopiuj",
166
166
  "create": "Stwórz",
167
- "createNew": "Stwórzy nowy",
167
+ "createNew": "Stwórz nowy",
168
168
  "createNewLabel": "Stwórz nowy {{label}}",
169
169
  "created": "Utworzono",
170
170
  "createdAt": "Data utworzenia",
@@ -1 +1 @@
1
- {"version":3,"file":"configToJSONSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/configToJSONSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAInE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AA4DpE;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,OAAO,GAClB,mBAAmB,GAAG,mBAAmB,EAAE,CAK7C;AAkWD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,cAAc,EAAE,yBAAyB,GAAG,qBAAqB,EACjE,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAClD,aAAa,EAAE,QAAQ,GAAG,MAAM,GAC/B,WAAW,CA6Db;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,aAAa,CAAC,EAAE,QAAQ,GAAG,MAAM,GAChC,WAAW,CAsBb"}
1
+ {"version":3,"file":"configToJSONSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/configToJSONSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAInE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AA4DpE;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,OAAO,GAClB,mBAAmB,GAAG,mBAAmB,EAAE,CAK7C;AA4WD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,cAAc,EAAE,yBAAyB,GAAG,qBAAqB,EACjE,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAClD,aAAa,EAAE,QAAQ,GAAG,MAAM,GAC/B,WAAW,CA6Db;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,aAAa,CAAC,EAAE,QAAQ,GAAG,MAAM,GAChC,WAAW,CAsBb"}
@@ -133,10 +133,20 @@ function fieldsToJSONSchema(collectionIDFieldTypes, fields, interfaceNameDefinit
133
133
  }
134
134
  case 'richText':
135
135
  {
136
- fieldSchema = field.editor.outputSchema({
137
- field,
138
- isRequired
139
- });
136
+ if (field.editor.outputSchema) {
137
+ fieldSchema = field.editor.outputSchema({
138
+ field,
139
+ isRequired
140
+ });
141
+ } else {
142
+ // Maintain backwards compatibility with existing rich text editors
143
+ fieldSchema = {
144
+ items: {
145
+ type: 'object'
146
+ },
147
+ type: withNullableJSONSchemaType('array', isRequired)
148
+ };
149
+ }
140
150
  break;
141
151
  }
142
152
  case 'radio':
@@ -482,4 +492,4 @@ function configToJSONSchema(config, defaultIDType) {
482
492
  };
483
493
  }
484
494
 
485
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29uZmlnVG9KU09OU2NoZW1hLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSlNPTlNjaGVtYTQsIEpTT05TY2hlbWE0VHlwZU5hbWUgfSBmcm9tICdqc29uLXNjaGVtYSdcblxuaW1wb3J0IHsgc2luZ3VsYXIgfSBmcm9tICdwbHVyYWxpemUnXG5cbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29uZmlnIH0gZnJvbSAnLi4vZXhwb3J0cy9jb25maWcnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIE9wdGlvbiB9IGZyb20gJy4uL2ZpZWxkcy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uL2dsb2JhbHMvY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB7IGRlZXBDb3B5T2JqZWN0IH0gZnJvbSAnLi9kZWVwQ29weU9iamVjdCdcbmltcG9ydCB7IHRvV29yZHMgfSBmcm9tICcuL2Zvcm1hdExhYmVscydcblxuY29uc3QgZmllbGRJc1JlcXVpcmVkID0gKGZpZWxkOiBGaWVsZCkgPT4ge1xuICBjb25zdCBpc0NvbmRpdGlvbmFsID0gQm9vbGVhbihmaWVsZD8uYWRtaW4gJiYgZmllbGQ/LmFkbWluPy5jb25kaXRpb24pXG4gIGlmIChpc0NvbmRpdGlvbmFsKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCBpc01hcmtlZFJlcXVpcmVkID0gJ3JlcXVpcmVkJyBpbiBmaWVsZCAmJiBmaWVsZC5yZXF1aXJlZCA9PT0gdHJ1ZVxuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgaXNNYXJrZWRSZXF1aXJlZCkgcmV0dXJuIHRydWVcblxuICAvLyBpZiBhbnkgc3ViZmllbGRzIGFyZSByZXF1aXJlZCwgdGhpcyBmaWVsZCBpcyByZXF1aXJlZFxuICBpZiAoJ2ZpZWxkcycgaW4gZmllbGQgJiYgZmllbGQudHlwZSAhPT0gJ2FycmF5Jykge1xuICAgIHJldHVybiBmaWVsZC5maWVsZHMuc29tZSgoc3ViRmllbGQpID0+IGZpZWxkSXNSZXF1aXJlZChzdWJGaWVsZCkpXG4gIH1cblxuICAvLyBpZiBhbnkgdGFiIHN1YmZpZWxkcyBoYXZlIHJlcXVpcmVkIGZpZWxkcywgdGhpcyBmaWVsZCBpcyByZXF1aXJlZFxuICBpZiAoZmllbGQudHlwZSA9PT0gJ3RhYnMnKSB7XG4gICAgcmV0dXJuIGZpZWxkLnRhYnMuc29tZSgodGFiKSA9PiB7XG4gICAgICBpZiAoJ25hbWUnIGluIHRhYikge1xuICAgICAgICByZXR1cm4gdGFiLmZpZWxkcy5zb21lKChzdWJGaWVsZCkgPT4gZmllbGRJc1JlcXVpcmVkKHN1YkZpZWxkKSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gYnVpbGRPcHRpb25FbnVtcyhvcHRpb25zOiBPcHRpb25bXSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIG9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcgJiYgJ3ZhbHVlJyBpbiBvcHRpb24pIHtcbiAgICAgIHJldHVybiBvcHRpb24udmFsdWVcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9uXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlRW50aXR5U2NoZW1hcyhcbiAgZW50aXRpZXM6IChTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIHwgU2FuaXRpemVkR2xvYmFsQ29uZmlnKVtdLFxuKTogSlNPTlNjaGVtYTQge1xuICBjb25zdCBwcm9wZXJ0aWVzID0gWy4uLmVudGl0aWVzXS5yZWR1Y2UoKGFjYywgeyBzbHVnIH0pID0+IHtcbiAgICBhY2Nbc2x1Z10gPSB7XG4gICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke3NsdWd9YCxcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjXG4gIH0sIHt9KVxuXG4gIHJldHVybiB7XG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgIHByb3BlcnRpZXMsXG4gICAgcmVxdWlyZWQ6IE9iamVjdC5rZXlzKHByb3BlcnRpZXMpLFxuICAgIHR5cGU6ICdvYmplY3QnLFxuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhIEpTT04gU2NoZW1hIFR5cGUgd2l0aCAnbnVsbCcgYWRkZWQgaWYgdGhlIGZpZWxkIGlzIG5vdCByZXF1aXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKFxuICBmaWVsZFR5cGU6IEpTT05TY2hlbWE0VHlwZU5hbWUsXG4gIGlzUmVxdWlyZWQ6IGJvb2xlYW4sXG4pOiBKU09OU2NoZW1hNFR5cGVOYW1lIHwgSlNPTlNjaGVtYTRUeXBlTmFtZVtdIHtcbiAgY29uc3QgZmllbGRUeXBlcyA9IFtmaWVsZFR5cGVdXG4gIGlmIChpc1JlcXVpcmVkKSByZXR1cm4gZmllbGRUeXBlXG4gIGZpZWxkVHlwZXMucHVzaCgnbnVsbCcpXG4gIHJldHVybiBmaWVsZFR5cGVzXG59XG5cbmZ1bmN0aW9uIGZpZWxkc1RvSlNPTlNjaGVtYShcbiAgY29sbGVjdGlvbklERmllbGRUeXBlczogeyBba2V5OiBzdHJpbmddOiAnbnVtYmVyJyB8ICdzdHJpbmcnIH0sXG4gIGZpZWxkczogRmllbGRbXSxcbiAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zOiBNYXA8c3RyaW5nLCBKU09OU2NoZW1hND4sXG4pOiB7XG4gIHByb3BlcnRpZXM6IHtcbiAgICBbazogc3RyaW5nXTogSlNPTlNjaGVtYTRcbiAgfVxuICByZXF1aXJlZDogc3RyaW5nW11cbn0ge1xuICBjb25zdCByZXF1aXJlZEZpZWxkTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKVxuXG4gIHJldHVybiB7XG4gICAgcHJvcGVydGllczogT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgZmllbGRzLnJlZHVjZSgoZmllbGRTY2hlbWFzLCBmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBpc1JlcXVpcmVkID0gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGRJc1JlcXVpcmVkKGZpZWxkKVxuICAgICAgICBpZiAoaXNSZXF1aXJlZCkgcmVxdWlyZWRGaWVsZE5hbWVzLmFkZChmaWVsZC5uYW1lKVxuXG4gICAgICAgIGxldCBmaWVsZFNjaGVtYTogSlNPTlNjaGVtYTRcbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICAgIGNhc2UgJ2NvZGUnOlxuICAgICAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7IHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdzdHJpbmcnLCBpc1JlcXVpcmVkKSB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5oYXNNYW55ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2FycmF5JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0geyB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnbnVtYmVyJywgaXNSZXF1aXJlZCkgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdjaGVja2JveCc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0geyB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYm9vbGVhbicsIGlzUmVxdWlyZWQpIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnanNvbic6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICB0eXBlOiBbJ29iamVjdCcsICdhcnJheScsICdzdHJpbmcnLCAnbnVtYmVyJywgJ2Jvb2xlYW4nLCAnbnVsbCddLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyaWNoVGV4dCc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0gZmllbGQuZWRpdG9yLm91dHB1dFNjaGVtYSh7XG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICBpc1JlcXVpcmVkLFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyYWRpbyc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICBlbnVtOiBidWlsZE9wdGlvbkVudW1zKGZpZWxkLm9wdGlvbnMpLFxuICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnc3RyaW5nJywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnc2VsZWN0Jzoge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uRW51bXMgPSBidWlsZE9wdGlvbkVudW1zKGZpZWxkLm9wdGlvbnMpXG5cbiAgICAgICAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgICBlbnVtOiBvcHRpb25FbnVtcyxcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2FycmF5JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIGVudW06IG9wdGlvbkVudW1zLFxuICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdzdHJpbmcnLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3BvaW50Jzoge1xuICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBtYXhJdGVtczogMixcbiAgICAgICAgICAgICAgbWluSXRlbXM6IDIsXG4gICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSkge1xuICAgICAgICAgICAgICBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgb25lT2Y6IGZpZWxkLnJlbGF0aW9uVG8ubWFwKChyZWxhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdDogcmVsYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogY29sbGVjdGlvbklERmllbGRUeXBlc1tyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke3JlbGF0aW9ufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsndmFsdWUnLCAncmVsYXRpb25UbyddLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgICBvbmVPZjogZmllbGQucmVsYXRpb25Uby5tYXAoKHJlbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IHJlbGF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uZU9mOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogY29sbGVjdGlvbklERmllbGRUeXBlc1tyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke3JlbGF0aW9ufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogWyd2YWx1ZScsICdyZWxhdGlvblRvJ10sXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ29iamVjdCcsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGNvbGxlY3Rpb25JREZpZWxkVHlwZXNbZmllbGQucmVsYXRpb25Ub10sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLnJlbGF0aW9uVG99YCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoXG4gICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlc1tmaWVsZC5yZWxhdGlvblRvXSxcbiAgICAgICAgICAgICAgICAgICAgICBpc1JlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJHJlZjogYCMvZGVmaW5pdGlvbnMvJHtmaWVsZC5yZWxhdGlvblRvfWAsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICd1cGxvYWQnOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBjb2xsZWN0aW9uSURGaWVsZFR5cGVzW2ZpZWxkLnJlbGF0aW9uVG9dLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgJHJlZjogYCMvZGVmaW5pdGlvbnMvJHtmaWVsZC5yZWxhdGlvblRvfWAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNSZXF1aXJlZCkgZmllbGRTY2hlbWEub25lT2YucHVzaCh7IHR5cGU6ICdudWxsJyB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICBvbmVPZjogZmllbGQuYmxvY2tzLm1hcCgoYmxvY2spID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrRmllbGRTY2hlbWFzID0gZmllbGRzVG9KU09OU2NoZW1hKFxuICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uSURGaWVsZFR5cGVzLFxuICAgICAgICAgICAgICAgICAgICBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tTY2hlbWE6IEpTT05TY2hlbWE0ID0ge1xuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5ibG9ja0ZpZWxkU2NoZW1hcy5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgICAgICAgIGJsb2NrVHlwZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IGJsb2NrLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsnYmxvY2tUeXBlJywgLi4uYmxvY2tGaWVsZFNjaGVtYXMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrLmludGVyZmFjZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLnNldChibG9jay5pbnRlcmZhY2VOYW1lLCBibG9ja1NjaGVtYSlcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7YmxvY2suaW50ZXJmYWNlTmFtZX1gLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBibG9ja1NjaGVtYVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgLi4uZmllbGRzVG9KU09OU2NoZW1hKFxuICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlcyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZpZWxkLmludGVyZmFjZU5hbWUpIHtcbiAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLnNldChmaWVsZC5pbnRlcmZhY2VOYW1lLCBmaWVsZFNjaGVtYSlcblxuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLmludGVyZmFjZU5hbWV9YCxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyb3cnOlxuICAgICAgICAgIGNhc2UgJ2NvbGxhcHNpYmxlJzoge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRTY2hlbWEgPSBmaWVsZHNUb0pTT05TY2hlbWEoXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25JREZpZWxkVHlwZXMsXG4gICAgICAgICAgICAgIGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY2hpbGRTY2hlbWEucHJvcGVydGllcykuZm9yRWFjaCgoW3Byb3BOYW1lLCBwcm9wU2NoZW1hXSkgPT4ge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYXMuc2V0KHByb3BOYW1lLCBwcm9wU2NoZW1hKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGNoaWxkU2NoZW1hLnJlcXVpcmVkLmZvckVhY2goKHByb3BOYW1lKSA9PiB7XG4gICAgICAgICAgICAgIHJlcXVpcmVkRmllbGROYW1lcy5hZGQocHJvcE5hbWUpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICAgICAgZmllbGQudGFicy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY2hpbGRTY2hlbWEgPSBmaWVsZHNUb0pTT05TY2hlbWEoXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlcyxcbiAgICAgICAgICAgICAgICB0YWIuZmllbGRzLFxuICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAodGFiSGFzTmFtZSh0YWIpKSB7XG4gICAgICAgICAgICAgICAgLy8gY291bGQgaGF2ZSBpbnRlcmZhY2VcbiAgICAgICAgICAgICAgICBmaWVsZFNjaGVtYXMuc2V0KHRhYi5uYW1lLCB7XG4gICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgIC4uLmNoaWxkU2NoZW1hLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRGaWVsZE5hbWVzLmFkZCh0YWIubmFtZSlcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhjaGlsZFNjaGVtYS5wcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcE5hbWUsIHByb3BTY2hlbWFdKSA9PiB7XG4gICAgICAgICAgICAgICAgICBmaWVsZFNjaGVtYXMuc2V0KHByb3BOYW1lLCBwcm9wU2NoZW1hKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgY2hpbGRTY2hlbWEucmVxdWlyZWQuZm9yRWFjaCgocHJvcE5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkRmllbGROYW1lcy5hZGQocHJvcE5hbWUpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgLi4uZmllbGRzVG9KU09OU2NoZW1hKGNvbGxlY3Rpb25JREZpZWxkVHlwZXMsIGZpZWxkLmZpZWxkcywgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZpZWxkLmludGVyZmFjZU5hbWUpIHtcbiAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLnNldChmaWVsZC5pbnRlcmZhY2VOYW1lLCBmaWVsZFNjaGVtYSlcblxuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLmludGVyZmFjZU5hbWV9YCxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWVsZFNjaGVtYSAmJiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgICAgICAgIGZpZWxkU2NoZW1hcy5zZXQoZmllbGQubmFtZSwgZmllbGRTY2hlbWEpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmllbGRTY2hlbWFzXG4gICAgICB9LCBuZXcgTWFwPHN0cmluZywgSlNPTlNjaGVtYTQ+KCkpLFxuICAgICksXG4gICAgcmVxdWlyZWQ6IEFycmF5LmZyb20ocmVxdWlyZWRGaWVsZE5hbWVzKSxcbiAgfVxufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkgYW5kIGlzIGV4cG9ydGVkIHRocm91Z2ggcGF5bG9hZC91dGlsaXRpZXNcbmV4cG9ydCBmdW5jdGlvbiBlbnRpdHlUb0pTT05TY2hlbWEoXG4gIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICBpbmNvbWluZ0VudGl0eTogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IFNhbml0aXplZEdsb2JhbENvbmZpZyxcbiAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zOiBNYXA8c3RyaW5nLCBKU09OU2NoZW1hND4sXG4gIGRlZmF1bHRJRFR5cGU6ICdudW1iZXInIHwgJ3RleHQnLFxuKTogSlNPTlNjaGVtYTQge1xuICBjb25zdCBlbnRpdHk6IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfCBTYW5pdGl6ZWRHbG9iYWxDb25maWcgPSBkZWVwQ29weU9iamVjdChpbmNvbWluZ0VudGl0eSlcbiAgY29uc3QgdGl0bGUgPSBlbnRpdHkudHlwZXNjcmlwdD8uaW50ZXJmYWNlXG4gICAgPyBlbnRpdHkudHlwZXNjcmlwdC5pbnRlcmZhY2VcbiAgICA6IHNpbmd1bGFyKHRvV29yZHMoZW50aXR5LnNsdWcsIHRydWUpKVxuXG4gIGNvbnN0IGlkRmllbGQ6IEZpZWxkQWZmZWN0aW5nRGF0YSA9IHsgbmFtZTogJ2lkJywgcmVxdWlyZWQ6IHRydWUsIHR5cGU6IGRlZmF1bHRJRFR5cGUgYXMgJ3RleHQnIH1cbiAgY29uc3QgY3VzdG9tSWRGaWVsZCA9IGVudGl0eS5maWVsZHMuZmluZChcbiAgICAoZmllbGQpID0+IGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICkgYXMgRmllbGRBZmZlY3RpbmdEYXRhXG5cbiAgaWYgKGN1c3RvbUlkRmllbGQgJiYgY3VzdG9tSWRGaWVsZC50eXBlICE9PSAnZ3JvdXAnICYmIGN1c3RvbUlkRmllbGQudHlwZSAhPT0gJ3RhYicpIHtcbiAgICBjdXN0b21JZEZpZWxkLnJlcXVpcmVkID0gdHJ1ZVxuICB9IGVsc2Uge1xuICAgIGVudGl0eS5maWVsZHMudW5zaGlmdChpZEZpZWxkKVxuICB9XG5cbiAgLy8gbWFyayB0aW1lc3RhbXAgZmllbGRzIHJlcXVpcmVkXG4gIGlmICgndGltZXN0YW1wcycgaW4gZW50aXR5ICYmIGVudGl0eS50aW1lc3RhbXBzICE9PSBmYWxzZSkge1xuICAgIGVudGl0eS5maWVsZHMgPSBlbnRpdHkuZmllbGRzLm1hcCgoZmllbGQpID0+IHtcbiAgICAgIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiAoZmllbGQubmFtZSA9PT0gJ2NyZWF0ZWRBdCcgfHwgZmllbGQubmFtZSA9PT0gJ3VwZGF0ZWRBdCcpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmaWVsZFxuICAgIH0pXG4gIH1cblxuICBpZiAoJ2F1dGgnIGluIGVudGl0eSAmJiBlbnRpdHkuYXV0aCAmJiAhZW50aXR5LmF1dGg/LmRpc2FibGVMb2NhbFN0cmF0ZWd5KSB7XG4gICAgZW50aXR5LmZpZWxkcy5wdXNoKHtcbiAgICAgIG5hbWU6ICdwYXNzd29yZCcsXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgfSlcbiAgfVxuXG4gIC8vIHVzZWQgZm9yIHJlbGF0aW9uc2hpcCBmaWVsZHMsIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHVzZSBhIHN0cmluZyBvciBudW1iZXIgdHlwZSBmb3IgdGhlIElEXG4gIGNvbnN0IGNvbGxlY3Rpb25JREZpZWxkVHlwZXM6IHsgW2tleTogc3RyaW5nXTogJ251bWJlcicgfCAnc3RyaW5nJyB9ID0gY29uZmlnLmNvbGxlY3Rpb25zLnJlZHVjZShcbiAgICAoYWNjLCBjb2xsZWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBjdXN0b21Db2xsZWN0aW9uSWRGaWVsZCA9IGNvbGxlY3Rpb24uZmllbGRzLmZpbmQoXG4gICAgICAgIChmaWVsZCkgPT4gJ25hbWUnIGluIGZpZWxkICYmIGZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICAgICApXG5cbiAgICAgIGFjY1tjb2xsZWN0aW9uLnNsdWddID0gZGVmYXVsdElEVHlwZSA9PT0gJ3RleHQnID8gJ3N0cmluZycgOiAnbnVtYmVyJ1xuXG4gICAgICBpZiAoY3VzdG9tQ29sbGVjdGlvbklkRmllbGQpIHtcbiAgICAgICAgYWNjW2NvbGxlY3Rpb24uc2x1Z10gPSBjdXN0b21Db2xsZWN0aW9uSWRGaWVsZC50eXBlID09PSAnbnVtYmVyJyA/ICdudW1iZXInIDogJ3N0cmluZydcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sXG4gICAge30sXG4gIClcblxuICByZXR1cm4ge1xuICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICB0aXRsZSxcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAuLi5maWVsZHNUb0pTT05TY2hlbWEoY29sbGVjdGlvbklERmllbGRUeXBlcywgZW50aXR5LmZpZWxkcywgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zKSxcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgdXNlZCBmb3IgZ2VuZXJhdGluZyB0aGUgVHlwZVNjcmlwdCB0eXBlcyAocGF5bG9hZC10eXBlcy50cykgd2l0aCB0aGUgcGF5bG9hZCBnZW5lcmF0ZTp0eXBlcyBjb21tYW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uZmlnVG9KU09OU2NoZW1hKFxuICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgZGVmYXVsdElEVHlwZT86ICdudW1iZXInIHwgJ3RleHQnLFxuKTogSlNPTlNjaGVtYTQge1xuICAvLyBhIG11dGFibGUgTWFwIHRvIHN0b3JlIGN1c3RvbSB0b3AtbGV2ZWwgYGludGVyZmFjZU5hbWVgIHR5cGVzXG4gIGNvbnN0IGludGVyZmFjZU5hbWVEZWZpbml0aW9uczogTWFwPHN0cmluZywgSlNPTlNjaGVtYTQ+ID0gbmV3IE1hcCgpXG4gIGNvbnN0IGVudGl0eURlZmluaXRpb25zOiB7IFtrOiBzdHJpbmddOiBKU09OU2NoZW1hNCB9ID0gW1xuICAgIC4uLmNvbmZpZy5nbG9iYWxzLFxuICAgIC4uLmNvbmZpZy5jb2xsZWN0aW9ucyxcbiAgXS5yZWR1Y2UoKGFjYywgZW50aXR5KSA9PiB7XG4gICAgYWNjW2VudGl0eS5zbHVnXSA9IGVudGl0eVRvSlNPTlNjaGVtYShjb25maWcsIGVudGl0eSwgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLCBkZWZhdWx0SURUeXBlKVxuICAgIHJldHVybiBhY2NcbiAgfSwge30pXG5cbiAgcmV0dXJuIHtcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgZGVmaW5pdGlvbnM6IHsgLi4uZW50aXR5RGVmaW5pdGlvbnMsIC4uLk9iamVjdC5mcm9tRW50cmllcyhpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMpIH0sXG4gICAgcHJvcGVydGllczoge1xuICAgICAgY29sbGVjdGlvbnM6IGdlbmVyYXRlRW50aXR5U2NoZW1hcyhjb25maWcuY29sbGVjdGlvbnMgfHwgW10pLFxuICAgICAgZ2xvYmFsczogZ2VuZXJhdGVFbnRpdHlTY2hlbWFzKGNvbmZpZy5nbG9iYWxzIHx8IFtdKSxcbiAgICB9LFxuICAgIHJlcXVpcmVkOiBbJ2NvbGxlY3Rpb25zJywgJ2dsb2JhbHMnXSxcbiAgICB0aXRsZTogJ0NvbmZpZycsXG4gICAgdHlwZTogJ29iamVjdCcsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSIsImVudGl0eVRvSlNPTlNjaGVtYSIsImNvbmZpZ1RvSlNPTlNjaGVtYSIsImZpZWxkSXNSZXF1aXJlZCIsImZpZWxkIiwiaXNDb25kaXRpb25hbCIsIkJvb2xlYW4iLCJhZG1pbiIsImNvbmRpdGlvbiIsImlzTWFya2VkUmVxdWlyZWQiLCJyZXF1aXJlZCIsImZpZWxkQWZmZWN0c0RhdGEiLCJ0eXBlIiwiZmllbGRzIiwic29tZSIsInN1YkZpZWxkIiwidGFicyIsInRhYiIsImJ1aWxkT3B0aW9uRW51bXMiLCJvcHRpb25zIiwibWFwIiwib3B0aW9uIiwidmFsdWUiLCJnZW5lcmF0ZUVudGl0eVNjaGVtYXMiLCJlbnRpdGllcyIsInByb3BlcnRpZXMiLCJyZWR1Y2UiLCJhY2MiLCJzbHVnIiwiJHJlZiIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiT2JqZWN0Iiwia2V5cyIsImZpZWxkVHlwZSIsImlzUmVxdWlyZWQiLCJmaWVsZFR5cGVzIiwicHVzaCIsImZpZWxkc1RvSlNPTlNjaGVtYSIsImNvbGxlY3Rpb25JREZpZWxkVHlwZXMiLCJpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMiLCJyZXF1aXJlZEZpZWxkTmFtZXMiLCJTZXQiLCJmcm9tRW50cmllcyIsImZpZWxkU2NoZW1hcyIsImFkZCIsIm5hbWUiLCJmaWVsZFNjaGVtYSIsImhhc01hbnkiLCJpdGVtcyIsImVkaXRvciIsIm91dHB1dFNjaGVtYSIsImVudW0iLCJvcHRpb25FbnVtcyIsIm1heEl0ZW1zIiwibWluSXRlbXMiLCJBcnJheSIsImlzQXJyYXkiLCJyZWxhdGlvblRvIiwib25lT2YiLCJyZWxhdGlvbiIsImNvbnN0IiwiYmxvY2tzIiwiYmxvY2siLCJibG9ja0ZpZWxkU2NoZW1hcyIsImJsb2NrU2NoZW1hIiwiYmxvY2tUeXBlIiwiaW50ZXJmYWNlTmFtZSIsInNldCIsImNoaWxkU2NoZW1hIiwiZW50cmllcyIsImZvckVhY2giLCJwcm9wTmFtZSIsInByb3BTY2hlbWEiLCJ0YWJIYXNOYW1lIiwiTWFwIiwiZnJvbSIsImNvbmZpZyIsImluY29taW5nRW50aXR5IiwiZGVmYXVsdElEVHlwZSIsImVudGl0eSIsImRlZXBDb3B5T2JqZWN0IiwidGl0bGUiLCJ0eXBlc2NyaXB0IiwiaW50ZXJmYWNlIiwic2luZ3VsYXIiLCJ0b1dvcmRzIiwiaWRGaWVsZCIsImN1c3RvbUlkRmllbGQiLCJmaW5kIiwidW5zaGlmdCIsInRpbWVzdGFtcHMiLCJhdXRoIiwiZGlzYWJsZUxvY2FsU3RyYXRlZ3kiLCJjb2xsZWN0aW9ucyIsImNvbGxlY3Rpb24iLCJjdXN0b21Db2xsZWN0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
495
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29uZmlnVG9KU09OU2NoZW1hLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSlNPTlNjaGVtYTQsIEpTT05TY2hlbWE0VHlwZU5hbWUgfSBmcm9tICdqc29uLXNjaGVtYSdcblxuaW1wb3J0IHsgc2luZ3VsYXIgfSBmcm9tICdwbHVyYWxpemUnXG5cbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29uZmlnIH0gZnJvbSAnLi4vZXhwb3J0cy9jb25maWcnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIE9wdGlvbiB9IGZyb20gJy4uL2ZpZWxkcy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uL2dsb2JhbHMvY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAnLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB7IGRlZXBDb3B5T2JqZWN0IH0gZnJvbSAnLi9kZWVwQ29weU9iamVjdCdcbmltcG9ydCB7IHRvV29yZHMgfSBmcm9tICcuL2Zvcm1hdExhYmVscydcblxuY29uc3QgZmllbGRJc1JlcXVpcmVkID0gKGZpZWxkOiBGaWVsZCkgPT4ge1xuICBjb25zdCBpc0NvbmRpdGlvbmFsID0gQm9vbGVhbihmaWVsZD8uYWRtaW4gJiYgZmllbGQ/LmFkbWluPy5jb25kaXRpb24pXG4gIGlmIChpc0NvbmRpdGlvbmFsKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCBpc01hcmtlZFJlcXVpcmVkID0gJ3JlcXVpcmVkJyBpbiBmaWVsZCAmJiBmaWVsZC5yZXF1aXJlZCA9PT0gdHJ1ZVxuICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgaXNNYXJrZWRSZXF1aXJlZCkgcmV0dXJuIHRydWVcblxuICAvLyBpZiBhbnkgc3ViZmllbGRzIGFyZSByZXF1aXJlZCwgdGhpcyBmaWVsZCBpcyByZXF1aXJlZFxuICBpZiAoJ2ZpZWxkcycgaW4gZmllbGQgJiYgZmllbGQudHlwZSAhPT0gJ2FycmF5Jykge1xuICAgIHJldHVybiBmaWVsZC5maWVsZHMuc29tZSgoc3ViRmllbGQpID0+IGZpZWxkSXNSZXF1aXJlZChzdWJGaWVsZCkpXG4gIH1cblxuICAvLyBpZiBhbnkgdGFiIHN1YmZpZWxkcyBoYXZlIHJlcXVpcmVkIGZpZWxkcywgdGhpcyBmaWVsZCBpcyByZXF1aXJlZFxuICBpZiAoZmllbGQudHlwZSA9PT0gJ3RhYnMnKSB7XG4gICAgcmV0dXJuIGZpZWxkLnRhYnMuc29tZSgodGFiKSA9PiB7XG4gICAgICBpZiAoJ25hbWUnIGluIHRhYikge1xuICAgICAgICByZXR1cm4gdGFiLmZpZWxkcy5zb21lKChzdWJGaWVsZCkgPT4gZmllbGRJc1JlcXVpcmVkKHN1YkZpZWxkKSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gYnVpbGRPcHRpb25FbnVtcyhvcHRpb25zOiBPcHRpb25bXSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIG9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcgJiYgJ3ZhbHVlJyBpbiBvcHRpb24pIHtcbiAgICAgIHJldHVybiBvcHRpb24udmFsdWVcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9uXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlRW50aXR5U2NoZW1hcyhcbiAgZW50aXRpZXM6IChTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIHwgU2FuaXRpemVkR2xvYmFsQ29uZmlnKVtdLFxuKTogSlNPTlNjaGVtYTQge1xuICBjb25zdCBwcm9wZXJ0aWVzID0gWy4uLmVudGl0aWVzXS5yZWR1Y2UoKGFjYywgeyBzbHVnIH0pID0+IHtcbiAgICBhY2Nbc2x1Z10gPSB7XG4gICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke3NsdWd9YCxcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjXG4gIH0sIHt9KVxuXG4gIHJldHVybiB7XG4gICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgIHByb3BlcnRpZXMsXG4gICAgcmVxdWlyZWQ6IE9iamVjdC5rZXlzKHByb3BlcnRpZXMpLFxuICAgIHR5cGU6ICdvYmplY3QnLFxuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyBhIEpTT04gU2NoZW1hIFR5cGUgd2l0aCAnbnVsbCcgYWRkZWQgaWYgdGhlIGZpZWxkIGlzIG5vdCByZXF1aXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKFxuICBmaWVsZFR5cGU6IEpTT05TY2hlbWE0VHlwZU5hbWUsXG4gIGlzUmVxdWlyZWQ6IGJvb2xlYW4sXG4pOiBKU09OU2NoZW1hNFR5cGVOYW1lIHwgSlNPTlNjaGVtYTRUeXBlTmFtZVtdIHtcbiAgY29uc3QgZmllbGRUeXBlcyA9IFtmaWVsZFR5cGVdXG4gIGlmIChpc1JlcXVpcmVkKSByZXR1cm4gZmllbGRUeXBlXG4gIGZpZWxkVHlwZXMucHVzaCgnbnVsbCcpXG4gIHJldHVybiBmaWVsZFR5cGVzXG59XG5cbmZ1bmN0aW9uIGZpZWxkc1RvSlNPTlNjaGVtYShcbiAgY29sbGVjdGlvbklERmllbGRUeXBlczogeyBba2V5OiBzdHJpbmddOiAnbnVtYmVyJyB8ICdzdHJpbmcnIH0sXG4gIGZpZWxkczogRmllbGRbXSxcbiAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zOiBNYXA8c3RyaW5nLCBKU09OU2NoZW1hND4sXG4pOiB7XG4gIHByb3BlcnRpZXM6IHtcbiAgICBbazogc3RyaW5nXTogSlNPTlNjaGVtYTRcbiAgfVxuICByZXF1aXJlZDogc3RyaW5nW11cbn0ge1xuICBjb25zdCByZXF1aXJlZEZpZWxkTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKVxuXG4gIHJldHVybiB7XG4gICAgcHJvcGVydGllczogT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgZmllbGRzLnJlZHVjZSgoZmllbGRTY2hlbWFzLCBmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBpc1JlcXVpcmVkID0gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGRJc1JlcXVpcmVkKGZpZWxkKVxuICAgICAgICBpZiAoaXNSZXF1aXJlZCkgcmVxdWlyZWRGaWVsZE5hbWVzLmFkZChmaWVsZC5uYW1lKVxuXG4gICAgICAgIGxldCBmaWVsZFNjaGVtYTogSlNPTlNjaGVtYTRcbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICAgIGNhc2UgJ2NvZGUnOlxuICAgICAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7IHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdzdHJpbmcnLCBpc1JlcXVpcmVkKSB9XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5oYXNNYW55ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6ICdudW1iZXInIH0sXG4gICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2FycmF5JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0geyB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnbnVtYmVyJywgaXNSZXF1aXJlZCkgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdjaGVja2JveCc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0geyB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYm9vbGVhbicsIGlzUmVxdWlyZWQpIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnanNvbic6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICB0eXBlOiBbJ29iamVjdCcsICdhcnJheScsICdzdHJpbmcnLCAnbnVtYmVyJywgJ2Jvb2xlYW4nLCAnbnVsbCddLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyaWNoVGV4dCc6IHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5lZGl0b3Iub3V0cHV0U2NoZW1hKSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0gZmllbGQuZWRpdG9yLm91dHB1dFNjaGVtYSh7XG4gICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgaXNSZXF1aXJlZCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIE1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgcmljaCB0ZXh0IGVkaXRvcnNcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2FycmF5JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyYWRpbyc6IHtcbiAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICBlbnVtOiBidWlsZE9wdGlvbkVudW1zKGZpZWxkLm9wdGlvbnMpLFxuICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnc3RyaW5nJywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnc2VsZWN0Jzoge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uRW51bXMgPSBidWlsZE9wdGlvbkVudW1zKGZpZWxkLm9wdGlvbnMpXG5cbiAgICAgICAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgICBlbnVtOiBvcHRpb25FbnVtcyxcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ2FycmF5JywgaXNSZXF1aXJlZCksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgIGVudW06IG9wdGlvbkVudW1zLFxuICAgICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdzdHJpbmcnLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ3BvaW50Jzoge1xuICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgIGl0ZW1zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBtYXhJdGVtczogMixcbiAgICAgICAgICAgICAgbWluSXRlbXM6IDIsXG4gICAgICAgICAgICAgIHR5cGU6IHdpdGhOdWxsYWJsZUpTT05TY2hlbWFUeXBlKCdhcnJheScsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSkge1xuICAgICAgICAgICAgICBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgICAgICAgIGZpZWxkU2NoZW1hID0ge1xuICAgICAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgb25lT2Y6IGZpZWxkLnJlbGF0aW9uVG8ubWFwKChyZWxhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdDogcmVsYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogY29sbGVjdGlvbklERmllbGRUeXBlc1tyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke3JlbGF0aW9ufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsndmFsdWUnLCAncmVsYXRpb25UbyddLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgICBvbmVPZjogZmllbGQucmVsYXRpb25Uby5tYXAoKHJlbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IHJlbGF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uZU9mOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogY29sbGVjdGlvbklERmllbGRUeXBlc1tyZWxhdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke3JlbGF0aW9ufWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogWyd2YWx1ZScsICdyZWxhdGlvblRvJ10sXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoJ29iamVjdCcsIGlzUmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGNvbGxlY3Rpb25JREZpZWxkVHlwZXNbZmllbGQucmVsYXRpb25Ub10sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLnJlbGF0aW9uVG99YCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZmllbGRTY2hlbWEgPSB7XG4gICAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogd2l0aE51bGxhYmxlSlNPTlNjaGVtYVR5cGUoXG4gICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlc1tmaWVsZC5yZWxhdGlvblRvXSxcbiAgICAgICAgICAgICAgICAgICAgICBpc1JlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgJHJlZjogYCMvZGVmaW5pdGlvbnMvJHtmaWVsZC5yZWxhdGlvblRvfWAsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICd1cGxvYWQnOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgb25lT2Y6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiBjb2xsZWN0aW9uSURGaWVsZFR5cGVzW2ZpZWxkLnJlbGF0aW9uVG9dLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgJHJlZjogYCMvZGVmaW5pdGlvbnMvJHtmaWVsZC5yZWxhdGlvblRvfWAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNSZXF1aXJlZCkgZmllbGRTY2hlbWEub25lT2YucHVzaCh7IHR5cGU6ICdudWxsJyB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICBvbmVPZjogZmllbGQuYmxvY2tzLm1hcCgoYmxvY2spID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrRmllbGRTY2hlbWFzID0gZmllbGRzVG9KU09OU2NoZW1hKFxuICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uSURGaWVsZFR5cGVzLFxuICAgICAgICAgICAgICAgICAgICBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tTY2hlbWE6IEpTT05TY2hlbWE0ID0ge1xuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5ibG9ja0ZpZWxkU2NoZW1hcy5wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAgICAgICAgIGJsb2NrVHlwZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Q6IGJsb2NrLnNsdWcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsnYmxvY2tUeXBlJywgLi4uYmxvY2tGaWVsZFNjaGVtYXMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrLmludGVyZmFjZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLnNldChibG9jay5pbnRlcmZhY2VOYW1lLCBibG9ja1NjaGVtYSlcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICRyZWY6IGAjL2RlZmluaXRpb25zLyR7YmxvY2suaW50ZXJmYWNlTmFtZX1gLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBibG9ja1NjaGVtYVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgLi4uZmllbGRzVG9KU09OU2NoZW1hKFxuICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlcyxcbiAgICAgICAgICAgICAgICAgIGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0eXBlOiB3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSgnYXJyYXknLCBpc1JlcXVpcmVkKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZpZWxkLmludGVyZmFjZU5hbWUpIHtcbiAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLnNldChmaWVsZC5pbnRlcmZhY2VOYW1lLCBmaWVsZFNjaGVtYSlcblxuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLmludGVyZmFjZU5hbWV9YCxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdyb3cnOlxuICAgICAgICAgIGNhc2UgJ2NvbGxhcHNpYmxlJzoge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRTY2hlbWEgPSBmaWVsZHNUb0pTT05TY2hlbWEoXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25JREZpZWxkVHlwZXMsXG4gICAgICAgICAgICAgIGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoY2hpbGRTY2hlbWEucHJvcGVydGllcykuZm9yRWFjaCgoW3Byb3BOYW1lLCBwcm9wU2NoZW1hXSkgPT4ge1xuICAgICAgICAgICAgICBmaWVsZFNjaGVtYXMuc2V0KHByb3BOYW1lLCBwcm9wU2NoZW1hKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGNoaWxkU2NoZW1hLnJlcXVpcmVkLmZvckVhY2goKHByb3BOYW1lKSA9PiB7XG4gICAgICAgICAgICAgIHJlcXVpcmVkRmllbGROYW1lcy5hZGQocHJvcE5hbWUpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICAgICAgZmllbGQudGFicy5mb3JFYWNoKCh0YWIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY2hpbGRTY2hlbWEgPSBmaWVsZHNUb0pTT05TY2hlbWEoXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbklERmllbGRUeXBlcyxcbiAgICAgICAgICAgICAgICB0YWIuZmllbGRzLFxuICAgICAgICAgICAgICAgIGludGVyZmFjZU5hbWVEZWZpbml0aW9ucyxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAodGFiSGFzTmFtZSh0YWIpKSB7XG4gICAgICAgICAgICAgICAgLy8gY291bGQgaGF2ZSBpbnRlcmZhY2VcbiAgICAgICAgICAgICAgICBmaWVsZFNjaGVtYXMuc2V0KHRhYi5uYW1lLCB7XG4gICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgICAgIC4uLmNoaWxkU2NoZW1hLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgcmVxdWlyZWRGaWVsZE5hbWVzLmFkZCh0YWIubmFtZSlcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhjaGlsZFNjaGVtYS5wcm9wZXJ0aWVzKS5mb3JFYWNoKChbcHJvcE5hbWUsIHByb3BTY2hlbWFdKSA9PiB7XG4gICAgICAgICAgICAgICAgICBmaWVsZFNjaGVtYXMuc2V0KHByb3BOYW1lLCBwcm9wU2NoZW1hKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgY2hpbGRTY2hlbWEucmVxdWlyZWQuZm9yRWFjaCgocHJvcE5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkRmllbGROYW1lcy5hZGQocHJvcE5hbWUpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgICAgLi4uZmllbGRzVG9KU09OU2NoZW1hKGNvbGxlY3Rpb25JREZpZWxkVHlwZXMsIGZpZWxkLmZpZWxkcywgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zKSxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGZpZWxkLmludGVyZmFjZU5hbWUpIHtcbiAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLnNldChmaWVsZC5pbnRlcmZhY2VOYW1lLCBmaWVsZFNjaGVtYSlcblxuICAgICAgICAgICAgICBmaWVsZFNjaGVtYSA9IHtcbiAgICAgICAgICAgICAgICAkcmVmOiBgIy9kZWZpbml0aW9ucy8ke2ZpZWxkLmludGVyZmFjZU5hbWV9YCxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWVsZFNjaGVtYSAmJiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSkge1xuICAgICAgICAgIGZpZWxkU2NoZW1hcy5zZXQoZmllbGQubmFtZSwgZmllbGRTY2hlbWEpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmllbGRTY2hlbWFzXG4gICAgICB9LCBuZXcgTWFwPHN0cmluZywgSlNPTlNjaGVtYTQ+KCkpLFxuICAgICksXG4gICAgcmVxdWlyZWQ6IEFycmF5LmZyb20ocmVxdWlyZWRGaWVsZE5hbWVzKSxcbiAgfVxufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkgYW5kIGlzIGV4cG9ydGVkIHRocm91Z2ggcGF5bG9hZC91dGlsaXRpZXNcbmV4cG9ydCBmdW5jdGlvbiBlbnRpdHlUb0pTT05TY2hlbWEoXG4gIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICBpbmNvbWluZ0VudGl0eTogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB8IFNhbml0aXplZEdsb2JhbENvbmZpZyxcbiAgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zOiBNYXA8c3RyaW5nLCBKU09OU2NoZW1hND4sXG4gIGRlZmF1bHRJRFR5cGU6ICdudW1iZXInIHwgJ3RleHQnLFxuKTogSlNPTlNjaGVtYTQge1xuICBjb25zdCBlbnRpdHk6IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcgfCBTYW5pdGl6ZWRHbG9iYWxDb25maWcgPSBkZWVwQ29weU9iamVjdChpbmNvbWluZ0VudGl0eSlcbiAgY29uc3QgdGl0bGUgPSBlbnRpdHkudHlwZXNjcmlwdD8uaW50ZXJmYWNlXG4gICAgPyBlbnRpdHkudHlwZXNjcmlwdC5pbnRlcmZhY2VcbiAgICA6IHNpbmd1bGFyKHRvV29yZHMoZW50aXR5LnNsdWcsIHRydWUpKVxuXG4gIGNvbnN0IGlkRmllbGQ6IEZpZWxkQWZmZWN0aW5nRGF0YSA9IHsgbmFtZTogJ2lkJywgcmVxdWlyZWQ6IHRydWUsIHR5cGU6IGRlZmF1bHRJRFR5cGUgYXMgJ3RleHQnIH1cbiAgY29uc3QgY3VzdG9tSWRGaWVsZCA9IGVudGl0eS5maWVsZHMuZmluZChcbiAgICAoZmllbGQpID0+IGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICkgYXMgRmllbGRBZmZlY3RpbmdEYXRhXG5cbiAgaWYgKGN1c3RvbUlkRmllbGQgJiYgY3VzdG9tSWRGaWVsZC50eXBlICE9PSAnZ3JvdXAnICYmIGN1c3RvbUlkRmllbGQudHlwZSAhPT0gJ3RhYicpIHtcbiAgICBjdXN0b21JZEZpZWxkLnJlcXVpcmVkID0gdHJ1ZVxuICB9IGVsc2Uge1xuICAgIGVudGl0eS5maWVsZHMudW5zaGlmdChpZEZpZWxkKVxuICB9XG5cbiAgLy8gbWFyayB0aW1lc3RhbXAgZmllbGRzIHJlcXVpcmVkXG4gIGlmICgndGltZXN0YW1wcycgaW4gZW50aXR5ICYmIGVudGl0eS50aW1lc3RhbXBzICE9PSBmYWxzZSkge1xuICAgIGVudGl0eS5maWVsZHMgPSBlbnRpdHkuZmllbGRzLm1hcCgoZmllbGQpID0+IHtcbiAgICAgIGlmIChmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiAoZmllbGQubmFtZSA9PT0gJ2NyZWF0ZWRBdCcgfHwgZmllbGQubmFtZSA9PT0gJ3VwZGF0ZWRBdCcpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmaWVsZFxuICAgIH0pXG4gIH1cblxuICBpZiAoJ2F1dGgnIGluIGVudGl0eSAmJiBlbnRpdHkuYXV0aCAmJiAhZW50aXR5LmF1dGg/LmRpc2FibGVMb2NhbFN0cmF0ZWd5KSB7XG4gICAgZW50aXR5LmZpZWxkcy5wdXNoKHtcbiAgICAgIG5hbWU6ICdwYXNzd29yZCcsXG4gICAgICB0eXBlOiAndGV4dCcsXG4gICAgfSlcbiAgfVxuXG4gIC8vIHVzZWQgZm9yIHJlbGF0aW9uc2hpcCBmaWVsZHMsIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHVzZSBhIHN0cmluZyBvciBudW1iZXIgdHlwZSBmb3IgdGhlIElEXG4gIGNvbnN0IGNvbGxlY3Rpb25JREZpZWxkVHlwZXM6IHsgW2tleTogc3RyaW5nXTogJ251bWJlcicgfCAnc3RyaW5nJyB9ID0gY29uZmlnLmNvbGxlY3Rpb25zLnJlZHVjZShcbiAgICAoYWNjLCBjb2xsZWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBjdXN0b21Db2xsZWN0aW9uSWRGaWVsZCA9IGNvbGxlY3Rpb24uZmllbGRzLmZpbmQoXG4gICAgICAgIChmaWVsZCkgPT4gJ25hbWUnIGluIGZpZWxkICYmIGZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICAgICApXG5cbiAgICAgIGFjY1tjb2xsZWN0aW9uLnNsdWddID0gZGVmYXVsdElEVHlwZSA9PT0gJ3RleHQnID8gJ3N0cmluZycgOiAnbnVtYmVyJ1xuXG4gICAgICBpZiAoY3VzdG9tQ29sbGVjdGlvbklkRmllbGQpIHtcbiAgICAgICAgYWNjW2NvbGxlY3Rpb24uc2x1Z10gPSBjdXN0b21Db2xsZWN0aW9uSWRGaWVsZC50eXBlID09PSAnbnVtYmVyJyA/ICdudW1iZXInIDogJ3N0cmluZydcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sXG4gICAge30sXG4gIClcblxuICByZXR1cm4ge1xuICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICB0aXRsZSxcbiAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAuLi5maWVsZHNUb0pTT05TY2hlbWEoY29sbGVjdGlvbklERmllbGRUeXBlcywgZW50aXR5LmZpZWxkcywgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zKSxcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgdXNlZCBmb3IgZ2VuZXJhdGluZyB0aGUgVHlwZVNjcmlwdCB0eXBlcyAocGF5bG9hZC10eXBlcy50cykgd2l0aCB0aGUgcGF5bG9hZCBnZW5lcmF0ZTp0eXBlcyBjb21tYW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29uZmlnVG9KU09OU2NoZW1hKFxuICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgZGVmYXVsdElEVHlwZT86ICdudW1iZXInIHwgJ3RleHQnLFxuKTogSlNPTlNjaGVtYTQge1xuICAvLyBhIG11dGFibGUgTWFwIHRvIHN0b3JlIGN1c3RvbSB0b3AtbGV2ZWwgYGludGVyZmFjZU5hbWVgIHR5cGVzXG4gIGNvbnN0IGludGVyZmFjZU5hbWVEZWZpbml0aW9uczogTWFwPHN0cmluZywgSlNPTlNjaGVtYTQ+ID0gbmV3IE1hcCgpXG4gIGNvbnN0IGVudGl0eURlZmluaXRpb25zOiB7IFtrOiBzdHJpbmddOiBKU09OU2NoZW1hNCB9ID0gW1xuICAgIC4uLmNvbmZpZy5nbG9iYWxzLFxuICAgIC4uLmNvbmZpZy5jb2xsZWN0aW9ucyxcbiAgXS5yZWR1Y2UoKGFjYywgZW50aXR5KSA9PiB7XG4gICAgYWNjW2VudGl0eS5zbHVnXSA9IGVudGl0eVRvSlNPTlNjaGVtYShjb25maWcsIGVudGl0eSwgaW50ZXJmYWNlTmFtZURlZmluaXRpb25zLCBkZWZhdWx0SURUeXBlKVxuICAgIHJldHVybiBhY2NcbiAgfSwge30pXG5cbiAgcmV0dXJuIHtcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgZGVmaW5pdGlvbnM6IHsgLi4uZW50aXR5RGVmaW5pdGlvbnMsIC4uLk9iamVjdC5mcm9tRW50cmllcyhpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMpIH0sXG4gICAgcHJvcGVydGllczoge1xuICAgICAgY29sbGVjdGlvbnM6IGdlbmVyYXRlRW50aXR5U2NoZW1hcyhjb25maWcuY29sbGVjdGlvbnMgfHwgW10pLFxuICAgICAgZ2xvYmFsczogZ2VuZXJhdGVFbnRpdHlTY2hlbWFzKGNvbmZpZy5nbG9iYWxzIHx8IFtdKSxcbiAgICB9LFxuICAgIHJlcXVpcmVkOiBbJ2NvbGxlY3Rpb25zJywgJ2dsb2JhbHMnXSxcbiAgICB0aXRsZTogJ0NvbmZpZycsXG4gICAgdHlwZTogJ29iamVjdCcsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ3aXRoTnVsbGFibGVKU09OU2NoZW1hVHlwZSIsImVudGl0eVRvSlNPTlNjaGVtYSIsImNvbmZpZ1RvSlNPTlNjaGVtYSIsImZpZWxkSXNSZXF1aXJlZCIsImZpZWxkIiwiaXNDb25kaXRpb25hbCIsIkJvb2xlYW4iLCJhZG1pbiIsImNvbmRpdGlvbiIsImlzTWFya2VkUmVxdWlyZWQiLCJyZXF1aXJlZCIsImZpZWxkQWZmZWN0c0RhdGEiLCJ0eXBlIiwiZmllbGRzIiwic29tZSIsInN1YkZpZWxkIiwidGFicyIsInRhYiIsImJ1aWxkT3B0aW9uRW51bXMiLCJvcHRpb25zIiwibWFwIiwib3B0aW9uIiwidmFsdWUiLCJnZW5lcmF0ZUVudGl0eVNjaGVtYXMiLCJlbnRpdGllcyIsInByb3BlcnRpZXMiLCJyZWR1Y2UiLCJhY2MiLCJzbHVnIiwiJHJlZiIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiT2JqZWN0Iiwia2V5cyIsImZpZWxkVHlwZSIsImlzUmVxdWlyZWQiLCJmaWVsZFR5cGVzIiwicHVzaCIsImZpZWxkc1RvSlNPTlNjaGVtYSIsImNvbGxlY3Rpb25JREZpZWxkVHlwZXMiLCJpbnRlcmZhY2VOYW1lRGVmaW5pdGlvbnMiLCJyZXF1aXJlZEZpZWxkTmFtZXMiLCJTZXQiLCJmcm9tRW50cmllcyIsImZpZWxkU2NoZW1hcyIsImFkZCIsIm5hbWUiLCJmaWVsZFNjaGVtYSIsImhhc01hbnkiLCJpdGVtcyIsImVkaXRvciIsIm91dHB1dFNjaGVtYSIsImVudW0iLCJvcHRpb25FbnVtcyIsIm1heEl0ZW1zIiwibWluSXRlbXMiLCJBcnJheSIsImlzQXJyYXkiLCJyZWxhdGlvblRvIiwib25lT2YiLCJyZWxhdGlvbiIsImNvbnN0IiwiYmxvY2tzIiwiYmxvY2siLCJibG9ja0ZpZWxkU2NoZW1hcyIsImJsb2NrU2NoZW1hIiwiYmxvY2tUeXBlIiwiaW50ZXJmYWNlTmFtZSIsInNldCIsImNoaWxkU2NoZW1hIiwiZW50cmllcyIsImZvckVhY2giLCJwcm9wTmFtZSIsInByb3BTY2hlbWEiLCJ0YWJIYXNOYW1lIiwiTWFwIiwiZnJvbSIsImNvbmZpZyIsImluY29taW5nRW50aXR5IiwiZGVmYXVsdElEVHlwZSIsImVudGl0eSIsImRlZXBDb3B5T2JqZWN0IiwidGl0bGUiLCJ0eXBlc2NyaXB0IiwiaW50ZXJmYWNlIiwic2luZ3VsYXIiLCJ0b1dvcmRzIiwiaWRGaWVsZCIsImN1c3RvbUlkRmllbGQiLCJmaW5kIiwidW5zaGlmdCIsInRpbWVzdGFtcHMiLCJhdXRoIiwiZGlzYWJsZUxvY2FsU3RyYXRlZ3kiLCJjb2xsZWN0aW9ucyIsImNvbGxlY3Rpb24iLCJjdXN0b21Db2xsZWN0aW9uSWRGaWVsZCIsImVudGl0eURlZmluaXRpb25zIiwiZ2xvYmFscyIsImRlZmluaXRpb25zIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQXNFZ0JBLDBCQUEwQjtlQUExQkE7O0lBb1hBQyxrQkFBa0I7ZUFBbEJBOztJQXVFQUMsa0JBQWtCO2VBQWxCQTs7OzJCQS9mUzt1QkFPb0I7Z0NBQ2Q7OEJBQ1A7QUFFeEIsTUFBTUMsa0JBQWtCLENBQUNDO0lBQ3ZCLE1BQU1DLGdCQUFnQkMsUUFBUUYsT0FBT0csU0FBU0gsT0FBT0csT0FBT0M7SUFDNUQsSUFBSUgsZUFBZSxPQUFPO0lBRTFCLE1BQU1JLG1CQUFtQixjQUFjTCxTQUFTQSxNQUFNTSxRQUFRLEtBQUs7SUFDbkUsSUFBSUMsSUFBQUEsdUJBQWdCLEVBQUNQLFVBQVVLLGtCQUFrQixPQUFPO0lBRXhELHdEQUF3RDtJQUN4RCxJQUFJLFlBQVlMLFNBQVNBLE1BQU1RLElBQUksS0FBSyxTQUFTO1FBQy9DLE9BQU9SLE1BQU1TLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUNDLFdBQWFaLGdCQUFnQlk7SUFDekQ7SUFFQSxvRUFBb0U7SUFDcEUsSUFBSVgsTUFBTVEsSUFBSSxL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