payload 2.0.0-beta.24 → 2.0.0-beta.27

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.
Files changed (187) hide show
  1. package/dist/admin/components/elements/DocumentControls/index.d.ts +1 -1
  2. package/dist/admin/components/elements/DocumentControls/index.d.ts.map +1 -1
  3. package/dist/admin/components/elements/DocumentControls/index.js +2 -2
  4. package/dist/admin/components/elements/DocumentDrawer/DrawerContent.js +3 -2
  5. package/dist/admin/components/elements/DocumentHeader/Tabs/Tab/index.d.ts.map +1 -1
  6. package/dist/admin/components/elements/DocumentHeader/Tabs/Tab/index.js +7 -3
  7. package/dist/admin/components/elements/DocumentHeader/Tabs/tabs.d.ts.map +1 -1
  8. package/dist/admin/components/elements/DocumentHeader/Tabs/tabs.js +10 -2
  9. package/dist/admin/components/elements/DocumentHeader/Tabs/types.d.ts +4 -0
  10. package/dist/admin/components/elements/DocumentHeader/Tabs/types.d.ts.map +1 -1
  11. package/dist/admin/components/elements/Drawer/index.d.ts.map +1 -1
  12. package/dist/admin/components/elements/Drawer/index.js +4 -3
  13. package/dist/admin/components/elements/Drawer/types.d.ts +1 -0
  14. package/dist/admin/components/elements/Drawer/types.d.ts.map +1 -1
  15. package/dist/admin/components/elements/Dropzone/index.d.ts +10 -0
  16. package/dist/admin/components/elements/Dropzone/index.d.ts.map +1 -0
  17. package/dist/admin/components/elements/Dropzone/index.js +120 -0
  18. package/dist/admin/components/elements/Dropzone/index.scss +52 -0
  19. package/dist/admin/components/elements/EditUpload/index.d.ts +13 -0
  20. package/dist/admin/components/elements/EditUpload/index.d.ts.map +1 -0
  21. package/dist/admin/components/elements/EditUpload/index.js +378 -0
  22. package/dist/admin/components/elements/EditUpload/index.scss +218 -0
  23. package/dist/admin/components/elements/FileDetails/index.d.ts.map +1 -1
  24. package/dist/admin/components/elements/FileDetails/index.js +14 -99
  25. package/dist/admin/components/elements/FileDetails/index.scss +21 -0
  26. package/dist/admin/components/elements/FileDetails/types.d.ts +3 -0
  27. package/dist/admin/components/elements/FileDetails/types.d.ts.map +1 -1
  28. package/dist/admin/components/elements/Hamburger/index.d.ts.map +1 -1
  29. package/dist/admin/components/elements/Hamburger/index.js +6 -4
  30. package/dist/admin/components/elements/PreviewSizes/index.d.ts +14 -0
  31. package/dist/admin/components/elements/PreviewSizes/index.d.ts.map +1 -0
  32. package/dist/admin/components/elements/PreviewSizes/index.js +146 -0
  33. package/dist/admin/components/elements/PreviewSizes/index.scss +146 -0
  34. package/dist/admin/components/elements/Thumbnail/index.d.ts.map +1 -1
  35. package/dist/admin/components/elements/Thumbnail/index.js +61 -7
  36. package/dist/admin/components/elements/Thumbnail/types.d.ts +4 -2
  37. package/dist/admin/components/elements/Thumbnail/types.d.ts.map +1 -1
  38. package/dist/admin/components/forms/Form/buildStateFromSchema/index.d.ts +2 -2
  39. package/dist/admin/components/forms/Form/buildStateFromSchema/index.d.ts.map +1 -1
  40. package/dist/admin/components/forms/Form/buildStateFromSchema/index.js +1 -1
  41. package/dist/admin/components/utilities/FormQueryParams/index.d.ts +17 -0
  42. package/dist/admin/components/utilities/FormQueryParams/index.d.ts.map +1 -0
  43. package/dist/admin/components/utilities/FormQueryParams/index.js +23 -0
  44. package/dist/admin/components/utilities/Locale/index.d.ts +2 -2
  45. package/dist/admin/components/utilities/Locale/index.d.ts.map +1 -1
  46. package/dist/admin/components/utilities/Locale/index.js +2 -2
  47. package/dist/admin/components/utilities/OperationProvider/index.d.ts +1 -1
  48. package/dist/admin/components/utilities/OperationProvider/index.d.ts.map +1 -1
  49. package/dist/admin/components/utilities/OperationProvider/index.js +2 -2
  50. package/dist/admin/components/utilities/RenderCustomComponent/types.d.ts +1 -1
  51. package/dist/admin/components/utilities/RenderCustomComponent/types.d.ts.map +1 -1
  52. package/dist/admin/components/views/Account/Default.d.ts.map +1 -1
  53. package/dist/admin/components/views/Account/Default.js +4 -4
  54. package/dist/admin/components/views/Account/index.d.ts.map +1 -1
  55. package/dist/admin/components/views/Account/index.js +10 -6
  56. package/dist/admin/components/views/Dashboard/index.d.ts.map +1 -1
  57. package/dist/admin/components/views/Dashboard/index.js +1 -1
  58. package/dist/admin/components/views/Global/Routes/custom.d.ts +2 -2
  59. package/dist/admin/components/views/Global/Routes/custom.d.ts.map +1 -1
  60. package/dist/admin/components/views/Global/Routes/custom.js +1 -1
  61. package/dist/admin/components/views/Global/Routes/index.d.ts.map +1 -1
  62. package/dist/admin/components/views/Global/Routes/index.js +4 -3
  63. package/dist/admin/components/views/Global/index.d.ts.map +1 -1
  64. package/dist/admin/components/views/Global/index.js +8 -4
  65. package/dist/admin/components/views/LivePreview/Context/context.d.ts +4 -4
  66. package/dist/admin/components/views/LivePreview/Context/context.d.ts.map +1 -1
  67. package/dist/admin/components/views/LivePreview/Context/context.js +1 -1
  68. package/dist/admin/components/views/LivePreview/Context/index.d.ts +2 -2
  69. package/dist/admin/components/views/LivePreview/Context/index.d.ts.map +1 -1
  70. package/dist/admin/components/views/LivePreview/Context/index.js +1 -1
  71. package/dist/admin/components/views/LivePreview/DeviceContainer/index.js +2 -2
  72. package/dist/admin/components/views/LivePreview/Preview/index.d.ts +2 -0
  73. package/dist/admin/components/views/LivePreview/Preview/index.d.ts.map +1 -1
  74. package/dist/admin/components/views/LivePreview/Preview/index.js +4 -11
  75. package/dist/admin/components/views/LivePreview/index.d.ts.map +1 -1
  76. package/dist/admin/components/views/LivePreview/index.js +22 -4
  77. package/dist/admin/components/views/Login/index.js +2 -2
  78. package/dist/admin/components/views/Routes/collections.d.ts.map +1 -1
  79. package/dist/admin/components/views/Routes/collections.js +1 -1
  80. package/dist/admin/components/views/Routes/custom.d.ts +3 -3
  81. package/dist/admin/components/views/Routes/custom.d.ts.map +1 -1
  82. package/dist/admin/components/views/Routes/custom.js +1 -1
  83. package/dist/admin/components/views/Routes/globals.d.ts.map +1 -1
  84. package/dist/admin/components/views/Routes/globals.js +1 -1
  85. package/dist/admin/components/views/Routes/index.js +5 -5
  86. package/dist/admin/components/views/Verify/index.js +1 -1
  87. package/dist/admin/components/views/collections/Edit/Default/index.d.ts.map +1 -1
  88. package/dist/admin/components/views/collections/Edit/Default/index.js +6 -6
  89. package/dist/admin/components/views/collections/Edit/Routes/index.d.ts.map +1 -1
  90. package/dist/admin/components/views/collections/Edit/Routes/index.js +4 -3
  91. package/dist/admin/components/views/collections/Edit/Upload/index.d.ts +7 -2
  92. package/dist/admin/components/views/collections/Edit/Upload/index.d.ts.map +1 -1
  93. package/dist/admin/components/views/collections/Edit/Upload/index.js +116 -121
  94. package/dist/admin/components/views/collections/Edit/Upload/index.scss +68 -68
  95. package/dist/admin/components/views/collections/Edit/Upload/types.d.ts +2 -3
  96. package/dist/admin/components/views/collections/Edit/Upload/types.d.ts.map +1 -1
  97. package/dist/admin/components/views/collections/Edit/formatFields.d.ts +1 -1
  98. package/dist/admin/components/views/collections/Edit/formatFields.d.ts.map +1 -1
  99. package/dist/admin/components/views/collections/Edit/formatFields.js +1 -1
  100. package/dist/admin/components/views/collections/Edit/index.d.ts.map +1 -1
  101. package/dist/admin/components/views/collections/Edit/index.js +33 -6
  102. package/dist/admin/components/views/collections/Edit/types.d.ts +12 -0
  103. package/dist/admin/components/views/collections/Edit/types.d.ts.map +1 -1
  104. package/dist/admin/components/views/collections/List/Cell/field-types/Code/index.d.ts +4 -1
  105. package/dist/admin/components/views/collections/List/Cell/field-types/Code/index.d.ts.map +1 -1
  106. package/dist/admin/components/views/collections/List/Cell/field-types/Code/index.js +7 -3
  107. package/dist/admin/components/views/collections/List/Cell/field-types/Code/index.scss +7 -2
  108. package/dist/admin/components/views/collections/List/Cell/field-types/index.d.ts +1 -1
  109. package/dist/admin/components/views/collections/List/Cell/index.d.ts.map +1 -1
  110. package/dist/admin/components/views/collections/List/Cell/index.js +11 -1
  111. package/dist/admin/components/views/types.d.ts +8 -8
  112. package/dist/admin/components/views/types.d.ts.map +1 -1
  113. package/dist/collections/config/schema.d.ts.map +1 -1
  114. package/dist/collections/config/schema.js +4 -10
  115. package/dist/collections/config/types.d.ts +2 -2
  116. package/dist/collections/config/types.d.ts.map +1 -1
  117. package/dist/collections/config/types.js +1 -1
  118. package/dist/collections/dataloader.js +2 -2
  119. package/dist/config/schema.d.ts.map +1 -1
  120. package/dist/config/schema.js +7 -1
  121. package/dist/config/shared/componentSchema.d.ts +4 -0
  122. package/dist/config/shared/componentSchema.d.ts.map +1 -1
  123. package/dist/config/shared/componentSchema.js +13 -1
  124. package/dist/config/types.d.ts +20 -11
  125. package/dist/config/types.d.ts.map +1 -1
  126. package/dist/config/types.js +1 -1
  127. package/dist/database/migrations/migrateRefresh.d.ts +1 -1
  128. package/dist/database/migrations/migrateRefresh.d.ts.map +1 -1
  129. package/dist/database/migrations/migrateRefresh.js +59 -7
  130. package/dist/database/migrations/migrationTemplate.d.ts +1 -1
  131. package/dist/database/migrations/migrationTemplate.d.ts.map +1 -1
  132. package/dist/database/migrations/migrationTemplate.js +2 -2
  133. package/dist/exports/utilities.d.ts +2 -0
  134. package/dist/exports/utilities.d.ts.map +1 -1
  135. package/dist/exports/utilities.js +9 -1
  136. package/dist/fields/validations.d.ts.map +1 -1
  137. package/dist/fields/validations.js +4 -9
  138. package/dist/globals/config/schema.d.ts.map +1 -1
  139. package/dist/globals/config/schema.js +2 -10
  140. package/dist/globals/config/types.d.ts +3 -3
  141. package/dist/globals/config/types.d.ts.map +1 -1
  142. package/dist/translations/ar.json +14 -2
  143. package/dist/translations/az.json +14 -2
  144. package/dist/translations/bg.json +14 -2
  145. package/dist/translations/cs.json +14 -2
  146. package/dist/translations/de.json +14 -2
  147. package/dist/translations/en.json +12 -0
  148. package/dist/translations/es.json +14 -2
  149. package/dist/translations/fa.json +14 -2
  150. package/dist/translations/fr.json +14 -2
  151. package/dist/translations/hr.json +14 -2
  152. package/dist/translations/hu.json +14 -2
  153. package/dist/translations/index.d.ts +340 -26
  154. package/dist/translations/index.d.ts.map +1 -1
  155. package/dist/translations/it.json +16 -3
  156. package/dist/translations/ja.json +14 -2
  157. package/dist/translations/my.json +14 -2
  158. package/dist/translations/nb.json +14 -2
  159. package/dist/translations/nl.json +14 -2
  160. package/dist/translations/pl.json +15 -2
  161. package/dist/translations/pt.json +14 -2
  162. package/dist/translations/ro.json +14 -2
  163. package/dist/translations/ru.json +14 -2
  164. package/dist/translations/sv.json +14 -2
  165. package/dist/translations/th.json +14 -2
  166. package/dist/translations/tr.json +14 -2
  167. package/dist/translations/translation-schema.json +36 -0
  168. package/dist/translations/ua.json +14 -2
  169. package/dist/translations/vi.json +14 -2
  170. package/dist/translations/zh.json +14 -2
  171. package/dist/uploads/cropImage.d.ts +12 -0
  172. package/dist/uploads/cropImage.d.ts.map +1 -0
  173. package/dist/uploads/cropImage.js +47 -0
  174. package/dist/uploads/generateFileData.d.ts.map +1 -1
  175. package/dist/uploads/generateFileData.js +49 -14
  176. package/dist/uploads/imageResizer.d.ts +6 -1
  177. package/dist/uploads/imageResizer.d.ts.map +1 -1
  178. package/dist/uploads/imageResizer.js +48 -3
  179. package/dist/uploads/types.d.ts +5 -1
  180. package/dist/uploads/types.d.ts.map +1 -1
  181. package/dist/uploads/types.js +1 -1
  182. package/dist/utilities/getIDType.d.ts +2 -1
  183. package/dist/utilities/getIDType.d.ts.map +1 -1
  184. package/dist/utilities/getIDType.js +3 -3
  185. package/package.json +2 -5
  186. package/utilities.d.ts +2 -0
  187. package/utilities.js +9 -1
@@ -23,4 +23,4 @@ function hasTransportOptions(emailConfig) {
23
23
  return emailConfig.transportOptions !== undefined;
24
24
  }
25
25
 
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFeHByZXNzLCBOZXh0RnVuY3Rpb24sIFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcydcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBFeHByZXNzRmlsZVVwbG9hZE9wdGlvbnMgfSBmcm9tICdleHByZXNzLWZpbGV1cGxvYWQnXG5pbXBvcnQgdHlwZSBHcmFwaFFMIGZyb20gJ2dyYXBocWwnXG5pbXBvcnQgdHlwZSB7IEluaXRPcHRpb25zIGFzIGkxOG5Jbml0T3B0aW9ucyB9IGZyb20gJ2kxOG5leHQnXG5pbXBvcnQgdHlwZSB7IFRyYW5zcG9ydGVyIH0gZnJvbSAnbm9kZW1haWxlcidcbmltcG9ydCB0eXBlIFNNVFBDb25uZWN0aW9uIGZyb20gJ25vZGVtYWlsZXIvbGliL3NtdHAtY29ubmVjdGlvbidcbmltcG9ydCB0eXBlIHsgRGVzdGluYXRpb25TdHJlYW0sIExvZ2dlck9wdGlvbnMgfSBmcm9tICdwaW5vJ1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IERlZXBSZXF1aXJlZCB9IGZyb20gJ3RzLWVzc2VudGlhbHMnXG5pbXBvcnQgdHlwZSB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICd3ZWJwYWNrJ1xuLy8gQHRzLWV4cGVjdC1lcnJvclxuaW1wb3J0IHR5cGUgeyBJbmxpbmVDb25maWcgfSBmcm9tICd2aXRlJ1xuXG5pbXBvcnQgdHlwZSB7IERvY3VtZW50VGFiIH0gZnJvbSAnLi4vYWRtaW4vY29tcG9uZW50cy9lbGVtZW50cy9Eb2N1bWVudEhlYWRlci9UYWJzL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIgfSBmcm9tICcuLi9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL2ZpZWxkLXR5cGVzL1JpY2hUZXh0L3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uRWRpdFZpZXdQcm9wcywgR2xvYmFsRWRpdFZpZXdQcm9wcyB9IGZyb20gJy4uL2FkbWluL2NvbXBvbmVudHMvdmlld3MvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFVzZXIgfSBmcm9tICcuLi9hdXRoL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkQnVuZGxlciB9IGZyb20gJy4uL2J1bmRsZXJzL3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBBZnRlckVycm9ySG9vayxcbiAgQ29sbGVjdGlvbkNvbmZpZyxcbiAgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyxcbn0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCYXNlRGF0YWJhc2VBZGFwdGVyIH0gZnJvbSAnLi4vZGF0YWJhc2UvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgR2xvYmFsQ29uZmlnLCBTYW5pdGl6ZWRHbG9iYWxDb25maWcgfSBmcm9tICcuLi9nbG9iYWxzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZCB9IGZyb20gJy4uL3BheWxvYWQnXG5pbXBvcnQgdHlwZSB7IFdoZXJlIH0gZnJvbSAnLi4vdHlwZXMnXG5cbnR5cGUgUHJldHRpZnk8VD4gPSB7XG4gIFtLIGluIGtleW9mIFRdOiBUW0tdXG59ICYgTm9uTnVsbGFibGU8dW5rbm93bj5cblxudHlwZSBFbWFpbCA9IHtcbiAgZnJvbUFkZHJlc3M6IHN0cmluZ1xuICBmcm9tTmFtZTogc3RyaW5nXG4gIGxvZ01vY2tDcmVkZW50aWFscz86IGJvb2xlYW5cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG5leHBvcnQgdHlwZSBQbHVnaW4gPSAoY29uZmlnOiBDb25maWcpID0+IENvbmZpZyB8IFByb21pc2U8Q29uZmlnPlxuXG5leHBvcnQgdHlwZSBMaXZlUHJldmlldyA9IHtcbiAgLyoqXG4gICAgRGV2aWNlIGJyZWFrcG9pbnRzIHRvIHVzZSBmb3IgdGhlIGBpZnJhbWVgIG9mIHRoZSBMaXZlIFByZXZpZXcgd2luZG93LlxuICAgIE9wdGlvbnMgYXJlIGRpc3BsYXllZCBpbiB0aGUgTGl2ZSBQcmV2aWV3IHRvb2xiYXIuXG4gICAgVGhlIGByZXNwb25zaXZlYCBicmVha3BvaW50IGlzIGluY2x1ZGVkIGJ5IGRlZmF1bHQuXG4gICovXG4gIGJyZWFrcG9pbnRzPzoge1xuICAgIGhlaWdodDogbnVtYmVyIHwgc3RyaW5nXG4gICAgbGFiZWw6IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICAgIHdpZHRoOiBudW1iZXIgfCBzdHJpbmdcbiAgfVtdXG4gIC8qKlxuICAgIFRoZSBVUkwgb2YgdGhlIGZyb250ZW5kIGFwcGxpY2F0aW9uLiBUaGlzIHdpbGwgYmUgcmVuZGVyZWQgd2l0aGluIGFuIGBpZnJhbWVgIGFzIGl0cyBgc3JjYC5cbiAgICBQYXlsb2FkIHdpbGwgc2VuZCBhIGB3aW5kb3cucG9zdE1lc3NhZ2UoKWAgdG8gdGhpcyBVUkwgd2l0aCB0aGUgZG9jdW1lbnQgZGF0YSBpbiByZWFsLXRpbWUuXG4gICAgVGhlIGZyb250ZW5kIGFwcGxpY2F0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciByZWNlaXZpbmcgdGhlIG1lc3NhZ2UgYW5kIHVwZGF0aW5nIHRoZSBVSSBhY2NvcmRpbmdseS5cbiAgICBVc2UgdGhlIGB1c2VMaXZlUHJldmlld2AgaG9vayB0byBnZXQgc3RhcnRlZCBpbiBSZWFjdCBhcHBsaWNhdGlvbnMuXG4gICovXG4gIHVybD86IHN0cmluZ1xufVxuXG50eXBlIEdlbmVyYXRlUHJldmlld1VSTE9wdGlvbnMgPSB7XG4gIGxvY2FsZTogc3RyaW5nXG4gIHRva2VuOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVQcmV2aWV3VVJMID0gKFxuICBkb2M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBvcHRpb25zOiBHZW5lcmF0ZVByZXZpZXdVUkxPcHRpb25zLFxuKSA9PiBQcm9taXNlPG51bGwgfCBzdHJpbmc+IHwgbnVsbCB8IHN0cmluZ1xuXG5leHBvcnQgdHlwZSBFbWFpbFRyYW5zcG9ydCA9IEVtYWlsICYge1xuICB0cmFuc3BvcnQ6IFRyYW5zcG9ydGVyXG4gIHRyYW5zcG9ydE9wdGlvbnM/OiBTTVRQQ29ubmVjdGlvbi5PcHRpb25zXG59XG5cbmV4cG9ydCB0eXBlIEVtYWlsVHJhbnNwb3J0T3B0aW9ucyA9IEVtYWlsICYge1xuICB0cmFuc3BvcnQ/OiBUcmFuc3BvcnRlclxuICB0cmFuc3BvcnRPcHRpb25zOiBTTVRQQ29ubmVjdGlvbi5PcHRpb25zXG59XG5cbmV4cG9ydCB0eXBlIEVtYWlsT3B0aW9ucyA9IEVtYWlsIHwgRW1haWxUcmFuc3BvcnQgfCBFbWFpbFRyYW5zcG9ydE9wdGlvbnNcblxuLyoqXG4gKiB0eXBlIGd1YXJkIGZvciBFbWFpbE9wdGlvbnNcbiAqIEBwYXJhbSBlbWFpbENvbmZpZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzVHJhbnNwb3J0KGVtYWlsQ29uZmlnOiBFbWFpbE9wdGlvbnMpOiBlbWFpbENvbmZpZyBpcyBFbWFpbFRyYW5zcG9ydCB7XG4gIHJldHVybiAoZW1haWxDb25maWcgYXMgRW1haWxUcmFuc3BvcnQpLnRyYW5zcG9ydCAhPT0gdW5kZWZpbmVkXG59XG5cbi8qKlxuICogdHlwZSBndWFyZCBmb3IgRW1haWxPcHRpb25zXG4gKiBAcGFyYW0gZW1haWxDb25maWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1RyYW5zcG9ydE9wdGlvbnMoXG4gIGVtYWlsQ29uZmlnOiBFbWFpbE9wdGlvbnMsXG4pOiBlbWFpbENvbmZpZyBpcyBFbWFpbFRyYW5zcG9ydE9wdGlvbnMge1xuICByZXR1cm4gKGVtYWlsQ29uZmlnIGFzIEVtYWlsVHJhbnNwb3J0T3B0aW9ucykudHJhbnNwb3J0T3B0aW9ucyAhPT0gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCB0eXBlIEdyYXBoUUxFeHRlbnNpb24gPSAoXG4gIGdyYXBoUUw6IHR5cGVvZiBHcmFwaFFMLFxuICBwYXlsb2FkOiBQYXlsb2FkLFxuKSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXG5leHBvcnQgdHlwZSBJbml0T3B0aW9ucyA9IHtcbiAgLyoqXG4gICAqIFNvbWV0aW1lcywgd2l0aCB0aGUgbG9jYWwgQVBJLCB5b3UgbWlnaHQgbmVlZCB0byBwYXNzIGEgY29uZmlnIGZpbGUgZGlyZWN0bHksIGZvciBleGFtcGxlLCBzZXJ2ZXJsZXNzIG9uIFZlcmNlbFxuICAgKiBUaGUgcGFzc2VkIGNvbmZpZyBzaG91bGQgbWF0Y2ggdGhlIGNvbmZpZyBmaWxlLCBhbmQgaWYgaXQgZG9lc24ndCwgdGhlcmUgY291bGQgYmUgbWlzbWF0Y2hlcyBiZXR3ZWVuIHRoZSBhZG1pbiBVSVxuICAgKiBhbmQgdGhlIGJhY2tlbmQgZnVuY3Rpb25hbGl0eVxuICAgKi9cbiAgY29uZmlnPzogUHJvbWlzZTxTYW5pdGl6ZWRDb25maWc+XG5cbiAgLyoqXG4gICAqIERpc2FibGUgcnVubmluZyBvZiB0aGUgYG9uSW5pdGAgZnVuY3Rpb25cbiAgICovXG4gIGRpc2FibGVPbkluaXQ/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIERpc2FibGUgY29ubmVjdCB0byB0aGUgZGF0YWJhc2Ugb24gaW5pdFxuICAgKi9cbiAgZGlzYWJsZURCQ29ubmVjdD86IGJvb2xlYW5cblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgUGF5bG9hZCdzIGVtYWlsIGZ1bmN0aW9uYWxpdHlcbiAgICpcbiAgICogQHNlZSBodHRwczovL3BheWxvYWRjbXMuY29tL2RvY3MvZW1haWwvb3ZlcnZpZXdcbiAgICovXG4gIGVtYWlsPzogRW1haWxPcHRpb25zXG5cbiAgLyoqIEV4cHJlc3MgYXBwIGZvciBQYXlsb2FkIHRvIHVzZSAqL1xuICBleHByZXNzPzogRXhwcmVzc1xuXG4gIC8qKlxuICAgKiBNYWtlIFBheWxvYWQgc3RhcnQgaW4gbG9jYWwtb25seSBtb2RlLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgYnlwYXNzIHNldHRpbmcgdXAgUkVTVCBhbmQgR3JhcGhRTCBBUEkgcm91dGVzLlxuICAgKiBFeHByZXNzIHdpbGwgbm90IGJlIHJlcXVpcmVkIGlmIHNldCB0byBgdHJ1ZWAuXG4gICAqL1xuICBsb2NhbD86IGJvb2xlYW5cblxuICBsb2dnZXJEZXN0aW5hdGlvbj86IERlc3RpbmF0aW9uU3RyZWFtXG4gIC8qKlxuICAgKiBTcGVjaWZ5IG9wdGlvbnMgZm9yIHRoZSBidWlsdC1pbiBQaW5vIGxvZ2dlciB0aGF0IFBheWxvYWQgdXNlcyBmb3IgaW50ZXJuYWwgbG9nZ2luZy5cbiAgICpcbiAgICogU2VlIFBpbm8gRG9jcyBmb3Igb3B0aW9uczogaHR0cHM6Ly9nZXRwaW5vLmlvLyMvZG9jcy9hcGk/aWQ9b3B0aW9uc1xuICAgKi9cbiAgbG9nZ2VyT3B0aW9ucz86IExvZ2dlck9wdGlvbnNcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgc3RhcnR1cCB0aGF0IHJlY2VpdmVzIHRoZSBQYXlsb2FkIGluc3RhbmNlIGFzIGl0J3Mgb25seSBhcmd1bWVudC5cbiAgICovXG4gIG9uSW5pdD86IChwYXlsb2FkOiBQYXlsb2FkKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZFxuXG4gIC8qKiBTZWN1cmUgc3RyaW5nIHRoYXQgUGF5bG9hZCB3aWxsIHVzZSBmb3IgYW55IGVuY3J5cHRpb24gd29ya2Zsb3dzICovXG4gIHNlY3JldDogc3RyaW5nXG59XG5cbi8qKlxuICogVGhpcyByZXN1bHQgaXMgY2FsY3VsYXRlZCBvbiB0aGUgc2VydmVyXG4gKiBhbmQgdGhlbiBzZW50IHRvIHRoZSBjbGllbnQgYWxsb3dpbmcgdGhlIGRhc2hib2FyZCB0byBzaG93IGFjY2Vzc2libGUgZGF0YSBhbmQgYWN0aW9ucy5cbiAqXG4gKiBJZiB0aGUgcmVzdWx0IGlzIGB0cnVlYCwgdGhlIHVzZXIgaGFzIGFjY2Vzcy5cbiAqIElmIHRoZSByZXN1bHQgaXMgYW4gb2JqZWN0LCBpdCBpcyBpbnRlcnByZXRlZCBhcyBhIE1vbmdvREIgcXVlcnkuXG4gKlxuICogQGV4YW1wbGUgYHsgY3JlYXRlZEJ5OiB7IGVxdWFsczogaWQgfSB9YFxuICpcbiAqIEBleGFtcGxlIGB7IHRlbmFudDogeyBpbjogdGVuYW50SWRzIH0gfWBcbiAqXG4gKiBAc2VlIGh0dHBzOi8vcGF5bG9hZGNtcy5jb20vZG9jcy9hY2Nlc3MtY29udHJvbC9vdmVydmlld1xuICovXG5leHBvcnQgdHlwZSBBY2Nlc3NSZXN1bHQgPSBXaGVyZSB8IGJvb2xlYW5cblxuZXhwb3J0IHR5cGUgQWNjZXNzQXJnczxUID0gYW55LCBVID0gYW55PiA9IHtcbiAgLyoqXG4gICAqIFRoZSByZWxldmFudCByZXNvdXJjZSB0aGF0IGlzIGJlaW5nIGFjY2Vzc2VkLlxuICAgKlxuICAgKiBgZGF0YWAgaXMgbnVsbCB3aGVuIGEgbGlzdCBpcyByZXF1ZXN0ZWRcbiAgICovXG4gIGRhdGE/OiBUXG4gIC8qKiBJRCBvZiB0aGUgcmVzb3VyY2UgYmVpbmcgYWNjZXNzZWQgKi9cbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgLyoqIFRoZSBvcmlnaW5hbCByZXF1ZXN0IHRoYXQgcmVxdWlyZXMgYW4gYWNjZXNzIGNoZWNrICovXG4gIHJlcTogUGF5bG9hZFJlcXVlc3Q8VT5cbn1cblxuLyoqXG4gKiBBY2Nlc3MgZnVuY3Rpb24gcnVucyBvbiB0aGUgc2VydmVyXG4gKiBhbmQgaXMgc2VudCB0byB0aGUgY2xpZW50IGFsbG93aW5nIHRoZSBkYXNoYm9hcmQgdG8gc2hvdyBhY2Nlc3NpYmxlIGRhdGEgYW5kIGFjdGlvbnMuXG4gKlxuICogQHNlZSBodHRwczovL3BheWxvYWRjbXMuY29tL2RvY3MvYWNjZXNzLWNvbnRyb2wvb3ZlcnZpZXdcbiAqL1xuZXhwb3J0IHR5cGUgQWNjZXNzPFQgPSBhbnksIFUgPSBhbnk+ID0gKFxuICBhcmdzOiBBY2Nlc3NBcmdzPFQsIFU+LFxuKSA9PiBBY2Nlc3NSZXN1bHQgfCBQcm9taXNlPEFjY2Vzc1Jlc3VsdD5cblxuLyoqIEVxdWl2YWxlbnQgdG8gZXhwcmVzcyBtaWRkbGV3YXJlLCBidXQgd2l0aCBhbiBlbmhhbmNlZCByZXF1ZXN0IG9iamVjdCAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXlsb2FkSGFuZGxlciB7XG4gIChyZXE6IFBheWxvYWRSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pOiB2b2lkXG59XG5cbi8qKlxuICogRG9jczogaHR0cHM6Ly9wYXlsb2FkY21zLmNvbS9kb2NzL3Jlc3QtYXBpL292ZXJ2aWV3I2N1c3RvbS1lbmRwb2ludHNcbiAqL1xuZXhwb3J0IHR5cGUgRW5kcG9pbnQgPSB7XG4gIC8qKiBFeHRlbnNpb24gcG9pbnQgdG8gYWRkIHlvdXIgY3VzdG9tIGRhdGEuICovXG4gIGN1c3RvbT86IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgLyoqXG4gICAqIE1pZGRsZXdhcmUgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBwYXRoL21ldGhvZCBtYXRjaGVzXG4gICAqXG4gICAqIENvbXBhdGlibGUgd2l0aCBFeHByZXNzIG1pZGRsZXdhcmVcbiAgICovXG4gIGhhbmRsZXI6IFBheWxvYWRIYW5kbGVyIHwgUGF5bG9hZEhhbmRsZXJbXVxuICAvKiogSFRUUCBtZXRob2QgKG9yIFwiYWxsXCIpICovXG4gIG1ldGhvZDogJ2Nvbm5lY3QnIHwgJ2RlbGV0ZScgfCAnZ2V0JyB8ICdoZWFkJyB8ICdvcHRpb25zJyB8ICdwYXRjaCcgfCAncG9zdCcgfCAncHV0J1xuICAvKipcbiAgICogUGF0dGVybiB0aGF0IHNob3VsZCBtYXRjaCB0aGUgcGF0aCBvZiB0aGUgaW5jb21pbmcgcmVxdWVzdFxuICAgKlxuICAgKiBDb21wYXRpYmxlIHdpdGggdGhlIEV4cHJlc3Mgcm91dGVyXG4gICAqL1xuICBwYXRoOiBzdHJpbmdcbiAgLyoqXG4gICAqIFNldCB0byBgdHJ1ZWAgdG8gZGlzYWJsZSB0aGUgUGF5bG9hZCBtaWRkbGV3YXJlIGZvciB0aGlzIGVuZHBvaW50XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByb290PzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBDdXN0b21BZG1pblZpZXcgPSBSZWFjdC5Db21wb25lbnRUeXBlPHtcbiAgY2FuQWNjZXNzQWRtaW46IGJvb2xlYW5cbiAgY29sbGVjdGlvbj86IFNhbml0aXplZENvbGxlY3Rpb25Db25maWdcbiAgZ2xvYmFsPzogU2FuaXRpemVkR2xvYmFsQ29uZmlnXG4gIHVzZXI6IFVzZXJcbn0+XG5cbmV4cG9ydCB0eXBlIEVkaXRWaWV3Q29uZmlnID0ge1xuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB0byByZW5kZXIgZm9yIHRoaXMgdmlld1xuICAgKiArIFJlcGxhY2VzIHRoZSBkZWZhdWx0IGNvbXBvbmVudFxuICAgKi9cbiAgQ29tcG9uZW50OiBFZGl0Vmlld0NvbXBvbmVudFxuICBUYWI6IERvY3VtZW50VGFiXG4gIHBhdGg6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBFZGl0Vmlld0NvbXBvbmVudCA9IFJlYWN0LkNvbXBvbmVudFR5cGU8Q29sbGVjdGlvbkVkaXRWaWV3UHJvcHMgfCBHbG9iYWxFZGl0Vmlld1Byb3BzPlxuXG5leHBvcnQgdHlwZSBFZGl0VmlldyA9IEVkaXRWaWV3Q29tcG9uZW50IHwgRWRpdFZpZXdDb25maWdcblxuZXhwb3J0IHR5cGUgQWRtaW5Sb3V0ZSA9IHtcbiAgQ29tcG9uZW50OiBDdXN0b21BZG1pblZpZXdcbiAgLyoqIFdoZXRoZXIgdGhlIHBhdGggc2hvdWxkIGJlIG1hdGNoZWQgZXhhY3RseSBvciBhcyBhIHByZWZpeCAqL1xuICBleGFjdD86IGJvb2xlYW5cbiAgcGF0aDogc3RyaW5nXG4gIHNlbnNpdGl2ZT86IGJvb2xlYW5cbiAgc3RyaWN0PzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBMb2NhbGUgPSB7XG4gIC8qKlxuICAgKiB2YWx1ZSBvZiBzdXBwb3J0ZWQgbG9jYWxlXG4gICAqIEBleGFtcGxlIFwiZW5cIlxuICAgKi9cbiAgY29kZTogc3RyaW5nXG4gIC8qKlxuICAgKiBsYWJlbCBvZiBzdXBwb3J0ZWQgbG9jYWxlXG4gICAqIEBleGFtcGxlIFwiRW5nbGlzaFwiXG4gICAqL1xuICBsYWJlbDogc3RyaW5nXG4gIC8qKlxuICAgKiBpZiB0cnVlLCBkZWZhdWx0cyB0ZXh0QWxpZ21uZW50IG9uIHRleHQgZmllbGRzIHRvIFJUTFxuICAgKi9cbiAgcnRsPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBCYXNlTG9jYWxpemF0aW9uQ29uZmlnID0ge1xuICAvKipcbiAgICogTG9jYWxlIGZvciB1c2VycyB0aGF0IGhhdmUgbm90IGV4cHJlc3NlZCB0aGVpciBwcmVmZXJlbmNlIGZvciBhIHNwZWNpZmljIGxvY2FsZVxuICAgKiBAZXhhbXBsZSBgXCJlblwiYFxuICAgKi9cbiAgZGVmYXVsdExvY2FsZTogc3RyaW5nXG4gIC8qKiBTZXQgdG8gYHRydWVgIHRvIGxldCBtaXNzaW5nIHZhbHVlcyBpbiBsb2NhbGlzZWQgZmllbGRzIGZhbGwgYmFjayB0byB0aGUgdmFsdWVzIGluIGBkZWZhdWx0TG9jYWxlYCAqL1xuICBmYWxsYmFjaz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgTG9jYWxpemF0aW9uQ29uZmlnV2l0aE5vTGFiZWxzID0gUHJldHRpZnk8XG4gIEJhc2VMb2NhbGl6YXRpb25Db25maWcgJiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBvZiBzdXBwb3J0ZWQgbG9jYWxlc1xuICAgICAqIEBleGFtcGxlIGBbXCJlblwiLCBcImVzXCIsIFwiZnJcIiwgXCJubFwiLCBcImRlXCIsIFwianBcIl1gXG4gICAgICovXG4gICAgbG9jYWxlczogc3RyaW5nW11cbiAgfVxuPlxuXG5leHBvcnQgdHlwZSBMb2NhbGl6YXRpb25Db25maWdXaXRoTGFiZWxzID0gUHJldHRpZnk8XG4gIEJhc2VMb2NhbGl6YXRpb25Db25maWcgJiB7XG4gICAgLyoqXG4gICAgICogTGlzdCBvZiBzdXBwb3J0ZWQgbG9jYWxlcyB3aXRoIGxhYmVsc1xuICAgICAqIEBleGFtcGxlIHtcbiAgICAgKiAgbGFiZWw6ICdFbmdsaXNoJyxcbiAgICAgKiAgdmFsdWU6ICdlbicsXG4gICAgICogIHJ0bDogZmFsc2VcbiAgICAgKiB9XG4gICAgICovXG4gICAgbG9jYWxlczogTG9jYWxlW11cbiAgfVxuPlxuXG5leHBvcnQgdHlwZSBTYW5pdGl6ZWRMb2NhbGl6YXRpb25Db25maWcgPSBQcmV0dGlmeTxcbiAgTG9jYWxpemF0aW9uQ29uZmlnV2l0aExhYmVscyAmIHtcbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIHN1cHBvcnRlZCBsb2NhbGVzXG4gICAgICogQGV4YW1wbGUgYFtcImVuXCIsIFwiZXNcIiwgXCJmclwiLCBcIm5sXCIsIFwiZGVcIiwgXCJqcFwiXWBcbiAgICAgKi9cbiAgICBsb2NhbGVDb2Rlczogc3RyaW5nW11cbiAgfVxuPlxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9wYXlsb2FkY21zLmNvbS9kb2NzL2NvbmZpZ3VyYXRpb24vbG9jYWxpemF0aW9uI2xvY2FsaXphdGlvblxuICovXG5leHBvcnQgdHlwZSBMb2NhbGl6YXRpb25Db25maWcgPSBQcmV0dGlmeTxcbiAgTG9jYWxpemF0aW9uQ29uZmlnV2l0aExhYmVscyB8IExvY2FsaXphdGlvbkNvbmZpZ1dpdGhOb0xhYmVsc1xuPlxuXG4vKipcbiAqIFRoaXMgaXMgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvblxuICpcbiAqIEBzZWUgaHR0cHM6Ly9wYXlsb2FkY21zLmNvbS9kb2NzL2NvbmZpZ3VyYXRpb24vb3ZlcnZpZXdcbiAqL1xuZXhwb3J0IHR5cGUgQ29uZmlnID0ge1xuICAvKiogQ29uZmlndXJlIGFkbWluIGRhc2hib2FyZCAqL1xuICBhZG1pbj86IHtcbiAgICAvKiogQXV0b21hdGljYWxseSBsb2cgaW4gYXMgYSB1c2VyIHdoZW4gdmlzaXRpbmcgdGhlIGFkbWluIGRhc2hib2FyZC4gKi9cbiAgICBhdXRvTG9naW4/OlxuICAgICAgfCB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogVGhlIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIHVzZXIgdG8gbG9naW4gYXNcbiAgICAgICAgICAgKlxuICAgICAgICAgICAqL1xuICAgICAgICAgIGVtYWlsOiBzdHJpbmdcbiAgICAgICAgICAvKiogVGhlIHBhc3N3b3JkIG9mIHRoZSB1c2VyIHRvIGxvZ2luIGFzICovXG4gICAgICAgICAgcGFzc3dvcmQ6IHN0cmluZ1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIElmIHNldCB0byB0cnVlLCB0aGUgbG9naW4gY3JlZGVudGlhbHMgd2lsbCBiZSBwcmVmaWxsZWQgYnV0IHRoZSB1c2VyIHdpbGwgc3RpbGwgbmVlZCB0byBjbGljayB0aGUgbG9naW4gYnV0dG9uLlxuICAgICAgICAgICAqXG4gICAgICAgICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgICAgICAgKi9cbiAgICAgICAgICBwcmVmaWxsT25seT86IGJvb2xlYW5cbiAgICAgICAgfVxuICAgICAgfCBmYWxzZVxuXG4gICAgLyoqIFNldCBhY2NvdW50IHByb2ZpbGUgcGljdHVyZS4gT3B0aW9uczogZ3JhdmF0YXIsIGRlZmF1bHQgb3IgYSBjdXN0b20gUmVhY3QgY29tcG9uZW50LiAqL1xuICAgIGF2YXRhcj86ICdkZWZhdWx0JyB8ICdncmF2YXRhcicgfCBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZ5IGFuIGFic29sdXRlIHBhdGggZm9yIHdoZXJlIHRvIHN0b3JlIHRoZSBidWlsdCBBZG1pbiBwYW5lbCBidW5kbGUgdXNlZCBpbiBwcm9kdWN0aW9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCIvYnVpbGRcIlxuICAgICAqICovXG4gICAgYnVpbGRQYXRoPzogc3RyaW5nXG4gICAgLyoqIEN1c3RvbWl6ZSB0aGUgYnVuZGxlciB1c2VkIHRvIHJ1biB5b3VyIGFkbWluIHBhbmVsLiAqL1xuICAgIGJ1bmRsZXI/OiBQYXlsb2FkQnVuZGxlclxuICAgIC8qKlxuICAgICAqIEFkZCBleHRyYSBhbmQvb3IgcmVwbGFjZSBidWlsdC1pbiBjb21wb25lbnRzIHdpdGggY3VzdG9tIGNvbXBvbmVudHNcbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9wYXlsb2FkY21zLmNvbS9kb2NzL2FkbWluL2NvbXBvbmVudHNcbiAgICAgKi9cbiAgICBjb21wb25lbnRzPzoge1xuICAgICAgLyoqXG4gICAgICAgKiBSZXBsYWNlIHRoZSBuYXZpZ2F0aW9uIHdpdGggYSBjdXN0b20gY29tcG9uZW50XG4gICAgICAgKi9cbiAgICAgIE5hdj86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PlxuICAgICAgLyoqXG4gICAgICAgKiBBZGQgY3VzdG9tIGNvbXBvbmVudHMgYWZ0ZXIgdGhlIGNvbGxlY3Rpb24gb3ZlcnZpZXdcbiAgICAgICAqL1xuICAgICAgYWZ0ZXJEYXNoYm9hcmQ/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5bXVxuICAgICAgLyoqXG4gICAgICAgKiBBZGQgY3VzdG9tIGNvbXBvbmVudHMgYWZ0ZXIgdGhlIGVtYWlsL3Bhc3N3b3JkIGZpZWxkXG4gICAgICAgKi9cbiAgICAgIGFmdGVyTG9naW4/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5bXVxuICAgICAgLyoqXG4gICAgICAgKiBBZGQgY3VzdG9tIGNvbXBvbmVudHMgYWZ0ZXIgdGhlIG5hdmlnYXRpb24gbGlua3NcbiAgICAgICAqL1xuICAgICAgYWZ0ZXJOYXZMaW5rcz86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PltdXG4gICAgICAvKipcbiAgICAgICAqIEFkZCBjdXN0b20gY29tcG9uZW50cyBiZWZvcmUgdGhlIGNvbGxlY3Rpb24gb3ZlcnZpZXdcbiAgICAgICAqL1xuICAgICAgYmVmb3JlRGFzaGJvYXJkPzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+W11cbiAgICAgIC8qKlxuICAgICAgICogQWRkIGN1c3RvbSBjb21wb25lbnRzIGJlZm9yZSB0aGUgZW1haWwvcGFzc3dvcmQgZmllbGRcbiAgICAgICAqL1xuICAgICAgYmVmb3JlTG9naW4/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5bXVxuICAgICAgLyoqXG4gICAgICAgKiBBZGQgY3VzdG9tIGNvbXBvbmVudHMgYmVmb3JlIHRoZSBuYXZpZ2F0aW9uIGxpbmtzXG4gICAgICAgKi9cbiAgICAgIGJlZm9yZU5hdkxpbmtzPzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+W11cbiAgICAgIC8qKiBSZXBsYWNlIGdyYXBoaWNhbCBjb21wb25lbnRzICovXG4gICAgICBncmFwaGljcz86IHtcbiAgICAgICAgLyoqIFJlcGxhY2UgdGhlIGljb24gaW4gdGhlIG5hdmlnYXRpb24gKi9cbiAgICAgICAgSWNvbj86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PlxuICAgICAgICAvKiogUmVwbGFjZSB0aGUgbG9nbyBvbiB0aGUgbG9naW4gcGFnZSAqL1xuICAgICAgICBMb2dvPzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+XG4gICAgICB9XG4gICAgICAvKiogUmVwbGFjZSBsb2dvdXQgcmVsYXRlZCBjb21wb25lbnRzICovXG4gICAgICBsb2dvdXQ/OiB7XG4gICAgICAgIC8qKiBSZXBsYWNlIHRoZSBsb2dvdXQgYnV0dG9uICAqL1xuICAgICAgICBCdXR0b24/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5cbiAgICAgIH1cbiAgICAgIC8qKlxuICAgICAgICogV3JhcCB0aGUgYWRtaW4gZGFzaGJvYXJkIGluIGN1c3RvbSBjb250ZXh0IHByb3ZpZGVyc1xuICAgICAgICovXG4gICAgICBwcm92aWRlcnM/OiBSZWFjdC5Db21wb25lbnRUeXBlPHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9PltdXG4gICAgICAvKipcbiAgICAgICAqIEFkZCBjdXN0b20gcm91dGVzIGluIHRoZSBhZG1pbiBkYXNoYm9hcmRcbiAgICAgICAqL1xuICAgICAgcm91dGVzPzogQWRtaW5Sb3V0ZVtdXG4gICAgICAvKiBSZXBsYWNlIGNvbXBsZXRlIHBhZ2VzICovXG4gICAgICB2aWV3cz86IHtcbiAgICAgICAgLyoqIFJlcGxhY2UgdGhlIGFjY291bnQgc2NyZWVuICovXG4gICAgICAgIEFjY291bnQ/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5cbiAgICAgICAgLyoqIFJlcGxhY2UgdGhlIGFkbWluIGhvbWVwYWdlICovXG4gICAgICAgIERhc2hib2FyZD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PlxuICAgICAgfVxuICAgIH1cbiAgICAvKiogQWJzb2x1dGUgcGF0aCB0byBhIHN0eWxlc2hlZXQgdGhhdCB5b3UgY2FuIHVzZSB0byBvdmVycmlkZSAvIGN1c3RvbWl6ZSB0aGUgQWRtaW4gcGFuZWwgc3R5bGluZy4gKi9cbiAgICBjc3M/OiBzdHJpbmdcbiAgICAvKiogR2xvYmFsIGRhdGUgZm9ybWF0IHRoYXQgd2lsbCBiZSB1c2VkIGZvciBhbGwgZGF0ZXMgaW4gdGhlIEFkbWluIHBhbmVsLiBBbnkgdmFsaWQgZGF0ZS1mbnMgZm9ybWF0IHBhdHRlcm4gY2FuIGJlIHVzZWQuICovXG4gICAgZGF0ZUZvcm1hdD86IHN0cmluZ1xuICAgIC8qKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGVudGlyZSBBZG1pbiBwYW5lbCB3aWxsIGJlIGRpc2FibGVkLiAqL1xuICAgIGRpc2FibGU/OiBib29sZWFuXG4gICAgLyoqIFRoZSByb3V0ZSB0aGUgdXNlciB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gYWZ0ZXIgYmVpbmcgaW5hY3RpdmUgZm9yIHRvbyBsb25nLiAqL1xuICAgIGluYWN0aXZpdHlSb3V0ZT86IHN0cmluZ1xuICAgIC8qKiBSZXBsYWNlIHRoZSBlbnRpcmV0eSBvZiB0aGUgaW5kZXguaHRtbCBmaWxlIHVzZWQgYnkgdGhlIEFkbWluIHBhbmVsLiBSZWZlcmVuY2UgdGhlIGJhc2UgaW5kZXguaHRtbCBmaWxlIHRvIGVuc3VyZSB5b3VyIHJlcGxhY2VtZW50IGhhcyB0aGUgYXBwcm9wcmlhdGUgSFRNTCBlbGVtZW50cy4gKi9cbiAgICBpbmRleEhUTUw/OiBzdHJpbmdcbiAgICAvKiogVGhlIHJvdXRlIGZvciB0aGUgbG9nb3V0IHBhZ2UuICovXG4gICAgbG9nb3V0Um91dGU/OiBzdHJpbmdcbiAgICAvKiogQmFzZSBtZXRhIGRhdGEgdG8gdXNlIGZvciB0aGUgQWRtaW4gcGFuZWwuIEluY2x1ZGVkIHByb3BlcnRpZXMgYXJlIHRpdGxlU3VmZml4LCBvZ0ltYWdlLCBhbmQgZmF2aWNvbi4gKi9cbiAgICBtZXRhPzoge1xuICAgICAgLyoqXG4gICAgICAgKiBQdWJsaWMgcGF0aCB0byBhbiBpY29uXG4gICAgICAgKlxuICAgICAgICogVGhpcyBpbWFnZSBtYXkgYmUgZGlzcGxheWVkIGluIHRoZSBicm93c2VyIG5leHQgdG8gdGhlIHRpdGxlIG9mIHRoZSBwYWdlXG4gICAgICAgKi9cbiAgICAgIGZhdmljb24/OiBzdHJpbmdcbiAgICAgIC8qKlxuICAgICAgICogUHVibGljIHBhdGggdG8gYW4gaW1hZ2VcbiAgICAgICAqXG4gICAgICAgKiBUaGlzIGltYWdlIG1heSBiZSBkaXNwbGF5ZWQgYXMgcHJldmlldyB3aGVuIHRoZSBsaW5rIGlzIHNoYXJlZCBvbiBzb2NpYWwgbWVkaWFcbiAgICAgICAqL1xuICAgICAgb2dJbWFnZT86IHN0cmluZ1xuICAgICAgLyoqXG4gICAgICAgKiBTdHJpbmcgdG8gYXBwZW5kIHRvIHRoZSA8dGl0bGU+IG9mIGFkbWluIHBhZ2VzXG4gICAgICAgKiBAZXhhbXBsZSBgXCIgLSBNeSBCcmFuZFwiYFxuICAgICAgICovXG4gICAgICB0aXRsZVN1ZmZpeD86IHN0cmluZ1xuICAgIH1cbiAgICAvKiogVGhlIHNsdWcgb2YgYSBDb2xsZWN0aW9uIHRoYXQgeW91IHdhbnQgYmUgdXNlZCB0byBsb2cgaW4gdG8gdGhlIEFkbWluIGRhc2hib2FyZC4gKi9cbiAgICB1c2VyPzogc3RyaW5nXG4gICAgLyoqIEN1c3RvbWl6ZSB0aGUgV2VicGFjayBjb25maWcgdGhhdCdzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIEFkbWluIHBhbmVsLiAqL1xuICAgIHdlYnBhY2s/OiAoY29uZmlnOiBDb25maWd1cmF0aW9uKSA9PiBDb25maWd1cmF0aW9uXG4gICAgLyoqIEN1c3RvbWl6ZSB0aGUgVml0ZSBjb25maWcgdGhhdCdzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIEFkbWluIHBhbmVsLiAqL1xuICAgIHZpdGU/OiAoY29uZmlnOiBJbmxpbmVDb25maWcpID0+IElubGluZUNvbmZpZ1xuICB9XG4gIC8qKlxuICAgKiBNYW5hZ2UgdGhlIGRhdGFtb2RlbCBvZiB5b3VyIGFwcGxpY2F0aW9uXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9wYXlsb2FkY21zLmNvbS9kb2NzL2NvbmZpZ3VyYXRpb24vY29sbGVjdGlvbnMjY29sbGVjdGlvbi1jb25maWdzXG4gICAqL1xuICBjb2xsZWN0aW9ucz86IENvbGxlY3Rpb25Db25maWdbXVxuICAvKipcbiAgICogUmVwbGFjZSB0aGUgYnVpbHQtaW4gY29tcG9uZW50cyB3aXRoIGN1c3RvbSBvbmVzXG4gICAqL1xuICBjb21wb25lbnRzPzogeyBba2V5OiBzdHJpbmddOiAoKCkgPT4gSlNYLkVsZW1lbnQpIHwgSlNYLkVsZW1lbnQgfVxuICAvKipcbiAgICogUHJlZml4IGEgc3RyaW5nIHRvIGFsbCBjb29raWVzIHRoYXQgUGF5bG9hZCBzZXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcInBheWxvYWRcIlxuICAgKi9cbiAgY29va2llUHJlZml4Pzogc3RyaW5nXG4gIC8qKiBFaXRoZXIgYSB3aGl0ZWxpc3QgYXJyYXkgb2YgVVJMUyB0byBhbGxvdyBDT1JTIHJlcXVlc3RzIGZyb20sIG9yIGEgd2lsZGNhcmQgc3RyaW5nICgnKicpIHRvIGFjY2VwdCBpbmNvbWluZyByZXF1ZXN0cyBmcm9tIGFueSBkb21haW4uICovXG4gIGNvcnM/OiAnKicgfCBzdHJpbmdbXVxuXG4gIC8qKiBBIHdoaXRlbGlzdCBhcnJheSBvZiBVUkxzIHRvIGFsbG93IFBheWxvYWQgY29va2llcyB0byBiZSBhY2NlcHRlZCBmcm9tIGFzIGEgZm9ybSBvZiBDU1JGIHByb3RlY3Rpb24uICovXG4gIGNzcmY/OiBzdHJpbmdbXVxuXG4gIC8qKiBFeHRlbnNpb24gcG9pbnQgdG8gYWRkIHlvdXIgY3VzdG9tIGRhdGEuICovXG4gIGN1c3RvbT86IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgLyoqIFBhc3MgaW4gYSBkYXRhYmFzZSBhZGFwdGVyIGZvciB1c2Ugb24gdGhpcyBwcm9qZWN0LiAqL1xuICBkYjogKGFyZ3M6IHsgcGF5bG9hZDogUGF5bG9hZCB9KSA9PiBCYXNlRGF0YWJhc2VBZGFwdGVyXG4gIC8qKiBFbmFibGUgdG8gZXhwb3NlIG1vcmUgZGV0YWlsZWQgZXJyb3IgaW5mb3JtYXRpb24uICovXG4gIGRlYnVnPzogYm9vbGVhblxuICAvKipcbiAgICogSWYgYSB1c2VyIGRvZXMgbm90IHNwZWNpZnkgYGRlcHRoYCB3aGlsZSByZXF1ZXN0aW5nIGEgcmVzb3VyY2UsIHRoaXMgZGVwdGggd2lsbCBiZSB1c2VkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vcGF5bG9hZGNtcy5jb20vZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvY29uY2VwdHMjZGVwdGhcbiAgICpcbiAgICogQGRlZmF1bHQgMlxuICAgKi9cbiAgZGVmYXVsdERlcHRoPzogbnVtYmVyXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBhbGxvd2VkIGRlcHRoIHRvIGJlIHBlcm1pdHRlZCBhcHBsaWNhdGlvbi13aWRlLiBUaGlzIHNldHRpbmcgaGVscHMgcHJldmVudCBhZ2FpbnN0IG1hbGljaW91cyBxdWVyaWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCA0MDAwMFxuICAgKi9cbiAgZGVmYXVsdE1heFRleHRMZW5ndGg/OiBudW1iZXJcbiAgLyoqIERlZmF1bHQgcmljaHRleHQgZWRpdG9yIHRvIHVzZSBmb3IgcmljaFRleHQgZmllbGRzICovXG4gIGVkaXRvcjogUmljaFRleHRBZGFwdGVyXG4gIC8qKlxuICAgKiBFbWFpbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoaXMgdmFsdWUgaXMgb3ZlcnJpZGRlbiBieSBgZW1haWxgIGluIFBheWxvYWQuaW5pdCBpZiBwYXNzZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9wYXlsb2FkY21zLmNvbS9kb2NzL2VtYWlsL292ZXJ2aWV3XG4gICAqL1xuICBlbWFpbD86IEVtYWlsT3B0aW9uc1xuICAvKiogQ3VzdG9tIFJFU1QgZW5kcG9pbnRzICovXG4gIGVuZHBvaW50cz86IEVuZHBvaW50W11cbiAgLyoqXG4gICAqIEV4cHJlc3Mtc3BlY2lmaWMgbWlkZGxld2FyZSBvcHRpb25zIHN1Y2ggYXMgY29tcHJlc3Npb24gYW5kIEpTT04gcGFyc2luZy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3BheWxvYWRjbXMuY29tL2RvY3MvY29uZmlndXJhdGlvbi9leHByZXNzXG4gICAqL1xuICBleHByZXNzPzoge1xuICAgIC8qKiBDb250cm9sIHRoZSB3YXkgcmVzcG9uc2VzIGFyZSBjb21wcmVzc2VkICovXG4gICAgY29tcHJlc3Npb24/OiB7XG4gICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duXG4gICAgfVxuICAgIC8qKiBDb250cm9sIHRoZSB3YXkgSlNPTiBpcyBwYXJzZWQgKi9cbiAgICBqc29uPzoge1xuICAgICAgLyoqIERlZmF1bHRzIHRvIDJNQiAgKi9cbiAgICAgIGxpbWl0PzogbnVtYmVyXG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIGV4cHJlc3MubWlkZGxld2FyZSB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gUGxlYXNlIG1pZ3JhdGUgdG8gZXhwcmVzcy5wb3N0TWlkZGxld2FyZS5cbiAgICAgKi9cbiAgICBtaWRkbGV3YXJlPzogYW55W11cbiAgICBwb3N0TWlkZGxld2FyZT86IGFueVtdXG4gICAgcHJlTWlkZGxld2FyZT86IGFueVtdXG4gIH1cbiAgLyoqXG4gICAqIEBzZWUgaHR0cHM6Ly9wYXlsb2FkY21zLmNvbS9kb2NzL2NvbmZpZ3VyYXRpb24vZ2xvYmFscyNnbG9iYWwtY29uZmlnc1xuICAgKi9cbiAgZ2xvYmFscz86IEdsb2JhbENvbmZpZ1tdXG4gIC8qKlxuICAgKiBNYW5hZ2UgdGhlIEdyYXBoUUwgQVBJXG4gICAqXG4gICAqIFlvdSBjYW4gYWRkIHlvdXIgb3duIEdyYXBoUUwgcXVlcmllcyBhbmQgbXV0YXRpb25zIHRvIFBheWxvYWQsIG1ha2luZyB1c2Ugb2YgYWxsIHRoZSB0eXBlcyB0aGF0IFBheWxvYWQgaGFzIGRlZmluZWQgZm9yIHlvdS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3BheWxvYWRjbXMuY29tL2RvY3MvYWNjZXNzLWNvbnRyb2wvb3ZlcnZpZXdcbiAgICovXG4gIGdyYXBoUUw/OiB7XG4gICAgZGlzYWJsZT86IGJvb2xlYW5cbiAgICBkaXNhYmxlUGxheWdyb3VuZEluUHJvZHVjdGlvbj86IGJvb2xlYW5cbiAgICBtYXhDb21wbGV4aXR5PzogbnVtYmVyXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIGtleXMgdG8gY3VzdG9tIEdyYXBoUUwgbXV0YXRpb25zXG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vcGF5bG9hZGNtcy5jb20vZG9jcy9hY2Nlc3MtY29udHJvbC9vdmVydmlld1xuICAgICAqL1xuICAgIG11dGF0aW9ucz86IEdyYXBoUUxFeHRlbnNpb25cbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gb2JqZWN0IGNvbnRhaW5pbmcga2V5cyB0byBjdXN0b20gR3JhcGhRTCBxdWVyaWVzXG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vcGF5bG9hZGNtcy5jb20vZG9jcy9hY2Nlc3MtY29udHJvbC9vdmVydmlld1xuICAgICAqL1xuICAgIHF1ZXJpZXM/OiBHcmFwaFFMRXh0ZW5zaW9uXG4gICAgc2NoZW1hT3V0cHV0RmlsZT86IHN0cmluZ1xuICB9XG4gIC8qKlxuICAgKiBUYXAgaW50byBQYXlsb2FkLXdpZGUgaG9va3MuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9wYXlsb2FkY21zLmNvbS9kb2NzL2hvb2tzL292ZXJ2aWV3XG4gICAqL1xuICBob29rcz86IHtcbiAgICBhZnRlckVycm9yPzogQWZ0ZXJFcnJvckhvb2tcbiAgfVxuICAvKipcbiAgICogQ29udHJvbCB0aGUgYmVoYXZpb3VyIG9mIHRoZSBhZG1pbiBpbnRlcm5hdGlvbmFsaXNhdGlvbi5cbiAgICpcbiAgICogU2VlIGkxOG5leHQgb3B0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHRcbiAgICoge1xuICAgKiAgIGZhbGxiYWNrTG5nOiAnZW4nLFxuICAgKiAgIGRlYnVnOiBmYWxzZSxcbiAgICogICBzdXBwb3J0ZWRMbmdzOiBPYmplY3Qua2V5cyh0cmFuc2xhdGlvbnMpLFxuICAgKiAgIHJlc291cmNlczogdHJhbnNsYXRpb25zLFxuICAgKiB9XG4gICAqL1xuICBpMThuPzogaTE4bkluaXRPcHRpb25zXG4gIC8qKiBBdXRvbWF0aWNhbGx5IGluZGV4IGFsbCBzb3J0YWJsZSB0b3AtbGV2ZWwgZmllbGRzIGluIHRoZSBkYXRhYmFzZSB0byBpbXByb3ZlIHNvcnQgcGVyZm9ybWFuY2UgYW5kIGFkZCBkYXRhYmFzZSBjb21wYXRpYmlsaXR5IGZvciBBenVyZSBDb3Ntb3MgYW5kIHNpbWlsYXIuICovXG4gIGluZGV4U29ydGFibGVGaWVsZHM/OiBib29sZWFuXG4gIC8qKlxuICAgKiBUcmFuc2xhdGUgeW91ciBjb250ZW50IHRvIGRpZmZlcmVudCBsYW5ndWFnZXMvbG9jYWxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2UgLy8gZGlzYWJsZSBsb2NhbGl6YXRpb25cbiAgICovXG4gIGxvY2FsaXphdGlvbj86IExvY2FsaXphdGlvbkNvbmZpZyB8IGZhbHNlXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBhbGxvd2VkIGRlcHRoIHRvIGJlIHBlcm1pdHRlZCBhcHBsaWNhdGlvbi13aWRlLiBUaGlzIHNldHRpbmcgaGVscHMgcHJldmVudCBhZ2FpbnN0IG1hbGljaW91cyBxdWVyaWVzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vcGF5bG9hZGNtcy5jb20vZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvY29uY2VwdHMjZGVwdGhcbiAgICpcbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIG1heERlcHRoPzogbnVtYmVyXG4gIC8qKiBBIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGltbWVkaWF0ZWx5IGZvbGxvd2luZyBzdGFydHVwIHRoYXQgcmVjZWl2ZXMgdGhlIFBheWxvYWQgaW5zdGFuY2UgYXMgaXRzIG9ubHkgYXJndW1lbnQuICovXG4gIG9uSW5pdD86IChwYXlsb2FkOiBQYXlsb2FkKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZFxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgUGF5bG9hZCBwbHVnaW5zLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vcGF5bG9hZGNtcy5jb20vZG9jcy9wbHVnaW5zL292ZXJ2aWV3XG4gICAqL1xuICBwbHVnaW5zPzogUGx1Z2luW11cbiAgLyoqXG4gICAqIExpbWl0IGhlYXZ5IHVzYWdlXG4gICAqXG4gICAqIEBkZWZhdWx0XG4gICAqIHtcbiAgICogICB3aW5kb3c6IDE1ICogNjAgKiAxMDAsIC8vIDEuNSBtaW51dGVzLFxuICAgKiAgIG1heDogNTAwLFxuICAgKiB9XG4gICAqL1xuICByYXRlTGltaXQ/OiB7XG4gICAgbWF4PzogbnVtYmVyXG4gICAgc2tpcD86IChyZXE6IFBheWxvYWRSZXF1ZXN0KSA9PiBib29sZWFuXG4gICAgdHJ1c3RQcm94eT86IGJvb2xlYW5cbiAgICB3aW5kb3c/OiBudW1iZXJcbiAgfVxuICAvKiogQ29udHJvbCB0aGUgcm91dGluZyBzdHJ1Y3R1cmUgdGhhdCBQYXlsb2FkIGJpbmRzIGl0c2VsZiB0by4gKi9cbiAgcm91dGVzPzoge1xuICAgIC8qKiBAZGVmYXVsdCBcIi9hZG1pblwiICovXG4gICAgYWRtaW4/OiBzdHJpbmdcbiAgICAvKiogQGRlZmF1bHQgXCIvYXBpXCIgICovXG4gICAgYXBpPzogc3RyaW5nXG4gICAgLyoqIEBkZWZhdWx0IFwiL2dyYXBocWxcIiAgKi9cbiAgICBncmFwaFFMPzogc3RyaW5nXG4gICAgLyoqIEBkZWZhdWx0IFwiL3BsYXlncm91bmRcIiAqL1xuICAgIGdyYXBoUUxQbGF5Z3JvdW5kPzogc3RyaW5nXG4gIH1cbiAgLyoqXG4gICAqIERlZmluZSB0aGUgYWJzb2x1dGUgVVJMIG9mIHlvdXIgYXBwIGluY2x1ZGluZyB0aGUgcHJvdG9jb2wsIGZvciBleGFtcGxlIGBodHRwczovL2V4YW1wbGUub3JnYC5cbiAgICogTm8gcGF0aHMgYWxsb3dlZCwgb25seSBwcm90b2NvbCwgZG9tYWluIGFuZCAob3B0aW9uYWxseSkgcG9ydC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3BheWxvYWRjbXMuY29tL2RvY3MvY29uZmlndXJhdGlvbi9vdmVydmlldyNvcHRpb25zXG4gICAqL1xuICBzZXJ2ZXJVUkw/OiBzdHJpbmdcbiAgLyoqIFNlbmQgYW5vbnltb3VzIHRlbGVtZXRyeSBkYXRhIGFib3V0IGdlbmVyYWwgdXNhZ2UuICovXG4gIHRlbGVtZXRyeT86IGJvb2xlYW5cbiAgLyoqIENvbnRyb2wgaG93IHR5cGVzY3JpcHQgaW50ZXJmYWNlcyBhcmUgZ2VuZXJhdGVkIGZyb20geW91ciBjb2xsZWN0aW9ucy4gKi9cbiAgdHlwZXNjcmlwdD86IHtcbiAgICAvKiogRmlsZW5hbWUgdG8gd3JpdGUgdGhlIGdlbmVyYXRlZCB0eXBlcyB0byAqL1xuICAgIG91dHB1dEZpbGU/OiBzdHJpbmdcbiAgfVxuICAvKipcbiAgICogQ3VzdG9taXplIHRoZSBoYW5kbGluZyBvZiBpbmNvbWluZyBmaWxlIHVwbG9hZHMgZm9yIGNvbGxlY3Rpb25zIHRoYXQgaGF2ZSB1cGxvYWRzIGVuYWJsZWQuXG4gICAqL1xuICB1cGxvYWQ/OiBFeHByZXNzRmlsZVVwbG9hZE9wdGlvbnNcbn1cblxuZXhwb3J0IHR5cGUgU2FuaXRpemVkQ29uZmlnID0gT21pdDxcbiAgRGVlcFJlcXVpcmVkPENvbmZpZz4sXG4gICdjb2xsZWN0aW9ucycgfCAnZW5kcG9pbnQnIHwgJ2dsb2JhbHMnIHwgJ2xvY2FsaXphdGlvbidcbj4gJiB7XG4gIGNvbGxlY3Rpb25zOiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnW11cbiAgZW5kcG9pbnRzOiBFbmRwb2ludFtdXG4gIGdsb2JhbHM6IFNhbml0aXplZEdsb2JhbENvbmZpZ1tdXG4gIGxvY2FsaXphdGlvbjogU2FuaXRpemVkTG9jYWxpemF0aW9uQ29uZmlnIHwgZmFsc2VcbiAgcGF0aHM6IHtcbiAgICBjb25maWc6IHN0cmluZ1xuICAgIGNvbmZpZ0Rpcjogc3RyaW5nXG4gICAgcmF3Q29uZmlnOiBzdHJpbmdcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBFbnRpdHlEZXNjcmlwdGlvbiA9XG4gIHwgKCgpID0+IHN0cmluZylcbiAgfCBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5cbiAgfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIHwgc3RyaW5nXG4iXSwibmFtZXMiOlsiaGFzVHJhbnNwb3J0IiwiaGFzVHJhbnNwb3J0T3B0aW9ucyIsImVtYWlsQ29uZmlnIiwidHJhbnNwb3J0IiwidW5kZWZpbmVkIiwidHJhbnNwb3J0T3B0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUF5RmdCQSxZQUFZO2VBQVpBOztJQVFBQyxtQkFBbUI7ZUFBbkJBOzs7QUFSVCxTQUFTRCxhQUFhRSxXQUF5QjtJQUNwRCxPQUFPLEFBQUNBLFlBQStCQyxTQUFTLEtBQUtDO0FBQ3ZEO0FBTU8sU0FBU0gsb0JBQ2RDLFdBQXlCO0lBRXpCLE9BQU8sQUFBQ0EsWUFBc0NHLGdCQUFnQixLQUFLRDtBQUNyRSJ9
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFeHByZXNzLCBOZXh0RnVuY3Rpb24sIFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcydcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBFeHByZXNzRmlsZVVwbG9hZE9wdGlvbnMgfSBmcm9tICdleHByZXNzLWZpbGV1cGxvYWQnXG5pbXBvcnQgdHlwZSBHcmFwaFFMIGZyb20gJ2dyYXBocWwnXG5pbXBvcnQgdHlwZSB7IEluaXRPcHRpb25zIGFzIGkxOG5Jbml0T3B0aW9ucyB9IGZyb20gJ2kxOG5leHQnXG5pbXBvcnQgdHlwZSB7IFRyYW5zcG9ydGVyIH0gZnJvbSAnbm9kZW1haWxlcidcbmltcG9ydCB0eXBlIFNNVFBDb25uZWN0aW9uIGZyb20gJ25vZGVtYWlsZXIvbGliL3NtdHAtY29ubmVjdGlvbidcbmltcG9ydCB0eXBlIHsgRGVzdGluYXRpb25TdHJlYW0sIExvZ2dlck9wdGlvbnMgfSBmcm9tICdwaW5vJ1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IERlZXBSZXF1aXJlZCB9IGZyb20gJ3RzLWVzc2VudGlhbHMnXG4vLyBAdHMtZXhwZWN0LWVycm9yXG5pbXBvcnQgdHlwZSB7IElubGluZUNvbmZpZyB9IGZyb20gJ3ZpdGUnXG5pbXBvcnQgdHlwZSB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICd3ZWJwYWNrJ1xuXG5pbXBvcnQgdHlwZSB7IERvY3VtZW50VGFiIH0gZnJvbSAnLi4vYWRtaW4vY29tcG9uZW50cy9lbGVtZW50cy9Eb2N1bWVudEhlYWRlci9UYWJzL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIgfSBmcm9tICcuLi9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL2ZpZWxkLXR5cGVzL1JpY2hUZXh0L3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0VHlwZSB9IGZyb20gJy4uL2FkbWluL2NvbXBvbmVudHMvdXRpbGl0aWVzL0RvY3VtZW50SW5mby90eXBlcydcbmltcG9ydCB0eXBlIHsgQ29sbGVjdGlvbkVkaXRWaWV3UHJvcHMsIEdsb2JhbEVkaXRWaWV3UHJvcHMgfSBmcm9tICcuLi9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBVc2VyIH0gZnJvbSAnLi4vYXV0aC90eXBlcydcbmltcG9ydCB0eXBlIHsgUGF5bG9hZEJ1bmRsZXIgfSBmcm9tICcuLi9idW5kbGVycy90eXBlcydcbmltcG9ydCB0eXBlIHtcbiAgQWZ0ZXJFcnJvckhvb2ssXG4gIENvbGxlY3Rpb25Db25maWcsXG4gIFNhbml0aXplZENvbGxlY3Rpb25Db25maWcsXG59IGZyb20gJy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgQmFzZURhdGFiYXNlQWRhcHRlciB9IGZyb20gJy4uL2RhdGFiYXNlL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJy4uL2V4cHJlc3MvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEdsb2JhbENvbmZpZywgU2FuaXRpemVkR2xvYmFsQ29uZmlnIH0gZnJvbSAnLi4vZ2xvYmFscy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWQgfSBmcm9tICcuLi9wYXlsb2FkJ1xuaW1wb3J0IHR5cGUgeyBXaGVyZSB9IGZyb20gJy4uL3R5cGVzJ1xuXG50eXBlIFByZXR0aWZ5PFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUXTogVFtLXVxufSAmIE5vbk51bGxhYmxlPHVua25vd24+XG5cbnR5cGUgRW1haWwgPSB7XG4gIGZyb21BZGRyZXNzOiBzdHJpbmdcbiAgZnJvbU5hbWU6IHN0cmluZ1xuICBsb2dNb2NrQ3JlZGVudGlhbHM/OiBib29sZWFuXG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuZXhwb3J0IHR5cGUgUGx1Z2luID0gKGNvbmZpZzogQ29uZmlnKSA9PiBDb25maWcgfCBQcm9taXNlPENvbmZpZz5cblxuZXhwb3J0IHR5cGUgTGl2ZVByZXZpZXdDb25maWcgPSB7XG4gIC8qKlxuICAgIERldmljZSBicmVha3BvaW50cyB0byB1c2UgZm9yIHRoZSBgaWZyYW1lYCBvZiB0aGUgTGl2ZSBQcmV2aWV3IHdpbmRvdy5cbiAgICBPcHRpb25zIGFyZSBkaXNwbGF5ZWQgaW4gdGhlIExpdmUgUHJldmlldyB0b29sYmFyLlxuICAgIFRoZSBgcmVzcG9uc2l2ZWAgYnJlYWtwb2ludCBpcyBpbmNsdWRlZCBieSBkZWZhdWx0LlxuICAqL1xuICBicmVha3BvaW50cz86IHtcbiAgICBoZWlnaHQ6IG51bWJlciB8IHN0cmluZ1xuICAgIGxhYmVsOiBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmdcbiAgICB3aWR0aDogbnVtYmVyIHwgc3RyaW5nXG4gIH1bXVxuICAvKipcbiAgICBUaGUgVVJMIG9mIHRoZSBmcm9udGVuZCBhcHBsaWNhdGlvbi4gVGhpcyB3aWxsIGJlIHJlbmRlcmVkIHdpdGhpbiBhbiBgaWZyYW1lYCBhcyBpdHMgYHNyY2AuXG4gICAgUGF5bG9hZCB3aWxsIHNlbmQgYSBgd2luZG93LnBvc3RNZXNzYWdlKClgIHRvIHRoaXMgVVJMIHdpdGggdGhlIGRvY3VtZW50IGRhdGEgaW4gcmVhbC10aW1lLlxuICAgIFRoZSBmcm9udGVuZCBhcHBsaWNhdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgcmVjZWl2aW5nIHRoZSBtZXNzYWdlIGFuZCB1cGRhdGluZyB0aGUgVUkgYWNjb3JkaW5nbHkuXG4gICAgVXNlIHRoZSBgdXNlTGl2ZVByZXZpZXdgIGhvb2sgdG8gZ2V0IHN0YXJ0ZWQgaW4gUmVhY3QgYXBwbGljYXRpb25zLlxuICAqL1xuICB1cmw/OlxuICAgIHwgKChhcmdzOiB7IGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT47IGRvY3VtZW50SW5mbzogQ29udGV4dFR5cGU7IGxvY2FsZTogTG9jYWxlIH0pID0+IHN0cmluZylcbiAgICB8IHN0cmluZ1xufVxuXG50eXBlIEdlbmVyYXRlUHJldmlld1VSTE9wdGlvbnMgPSB7XG4gIGxvY2FsZTogc3RyaW5nXG4gIHRva2VuOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgR2VuZXJhdGVQcmV2aWV3VVJMID0gKFxuICBkb2M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBvcHRpb25zOiBHZW5lcmF0ZVByZXZpZXdVUkxPcHRpb25zLFxuKSA9PiBQcm9taXNlPG51bGwgfCBzdHJpbmc+IHwgbnVsbCB8IHN0cmluZ1xuXG5leHBvcnQgdHlwZSBFbWFpbFRyYW5zcG9ydCA9IEVtYWlsICYge1xuICB0cmFuc3BvcnQ6IFRyYW5zcG9ydGVyXG4gIHRyYW5zcG9ydE9wdGlvbnM/OiBTTVRQQ29ubmVjdGlvbi5PcHRpb25zXG59XG5cbmV4cG9ydCB0eXBlIEVtYWlsVHJhbnNwb3J0T3B0aW9ucyA9IEVtYWlsICYge1xuICB0cmFuc3BvcnQ/OiBUcmFuc3BvcnRlclxuICB0cmFuc3BvcnRPcHRpb25zOiBTTVRQQ29ubmVjdGlvbi5PcHRpb25zXG59XG5cbmV4cG9ydCB0eXBlIEVtYWlsT3B0aW9ucyA9IEVtYWlsIHwgRW1haWxUcmFuc3BvcnQgfCBFbWFpbFRyYW5zcG9ydE9wdGlvbnNcblxuLyoqXG4gKiB0eXBlIGd1YXJkIGZvciBFbWFpbE9wdGlvbnNcbiAqIEBwYXJhbSBlbWFpbENvbmZpZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzVHJhbnNwb3J0KGVtYWlsQ29uZmlnOiBFbWFpbE9wdGlvbnMpOiBlbWFpbENvbmZpZyBpcyBFbWFpbFRyYW5zcG9ydCB7XG4gIHJldHVybiAoZW1haWxDb25maWcgYXMgRW1haWxUcmFuc3BvcnQpLnRyYW5zcG9ydCAhPT0gdW5kZWZpbmVkXG59XG5cbi8qKlxuICogdHlwZSBndWFyZCBmb3IgRW1haWxPcHRpb25zXG4gKiBAcGFyYW0gZW1haWxDb25maWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1RyYW5zcG9ydE9wdGlvbnMoXG4gIGVtYWlsQ29uZmlnOiBFbWFpbE9wdGlvbnMsXG4pOiBlbWFpbENvbmZpZyBpcyBFbWFpbFRyYW5zcG9ydE9wdGlvbnMge1xuICByZXR1cm4gKGVtYWlsQ29uZmlnIGFzIEVtYWlsVHJhbnNwb3J0T3B0aW9ucykudHJhbnNwb3J0T3B0aW9ucyAhPT0gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCB0eXBlIEdyYXBoUUxFeHRlbnNpb24gPSAoXG4gIGdyYXBoUUw6IHR5cGVvZiBHcmFwaFFMLFxuICBwYXlsb2FkOiBQYXlsb2FkLFxuKSA9PiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXG5leHBvcnQgdHlwZSBJbml0T3B0aW9ucyA9IHtcbiAgLyoqXG4gICAqIFNvbWV0aW1lcywgd2l0aCB0aGUgbG9jYWwgQVBJLCB5b3UgbWlnaHQgbmVlZCB0byBwYXNzIGEgY29uZmlnIGZpbGUgZGlyZWN0bHksIGZvciBleGFtcGxlLCBzZXJ2ZXJsZXNzIG9uIFZlcmNlbFxuICAgKiBUaGUgcGFzc2VkIGNvbmZpZyBzaG91bGQgbWF0Y2ggdGhlIGNvbmZpZyBmaWxlLCBhbmQgaWYgaXQgZG9lc24ndCwgdGhlcmUgY291bGQgYmUgbWlzbWF0Y2hlcyBiZXR3ZWVuIHRoZSBhZG1pbiBVSVxuICAgKiBhbmQgdGhlIGJhY2tlbmQgZnVuY3Rpb25hbGl0eVxuICAgKi9cbiAgY29uZmlnPzogUHJvbWlzZTxTYW5pdGl6ZWRDb25maWc+XG5cbiAgLyoqXG4gICAqIERpc2FibGUgY29ubmVjdCB0byB0aGUgZGF0YWJhc2Ugb24gaW5pdFxuICAgKi9cbiAgZGlzYWJsZURCQ29ubmVjdD86IGJvb2xlYW5cblxuICAvKipcbiAgICogRGlzYWJsZSBydW5uaW5nIG9mIHRoZSBgb25Jbml0YCBmdW5jdGlvblxuICAgKi9cbiAgZGlzYWJsZU9uSW5pdD86IGJvb2xlYW5cblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgUGF5bG9hZCdzIGVtYWlsIGZ1bmN0aW9uYWxpdHlcbiAgICpcbiAgICogQHNlZSBodHRwczovL3BheWxvYWRjbXMuY29tL2RvY3MvZW1haWwvb3ZlcnZpZXdcbiAgICovXG4gIGVtYWlsPzogRW1haWxPcHRpb25zXG5cbiAgLyoqIEV4cHJlc3MgYXBwIGZvciBQYXlsb2FkIHRvIHVzZSAqL1xuICBleHByZXNzPzogRXhwcmVzc1xuXG4gIC8qKlxuICAgKiBNYWtlIFBheWxvYWQgc3RhcnQgaW4gbG9jYWwtb25seSBtb2RlLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgYnlwYXNzIHNldHRpbmcgdXAgUkVTVCBhbmQgR3JhcGhRTCBBUEkgcm91dGVzLlxuICAgKiBFeHByZXNzIHdpbGwgbm90IGJlIHJlcXVpcmVkIGlmIHNldCB0byBgdHJ1ZWAuXG4gICAqL1xuICBsb2NhbD86IGJvb2xlYW5cblxuICBsb2dnZXJEZXN0aW5hdGlvbj86IERlc3RpbmF0aW9uU3RyZWFtXG4gIC8qKlxuICAgKiBTcGVjaWZ5IG9wdGlvbnMgZm9yIHRoZSBidWlsdC1pbiBQaW5vIGxvZ2dlciB0aGF0IFBheWxvYWQgdXNlcyBmb3IgaW50ZXJuYWwgbG9nZ2luZy5cbiAgICpcbiAgICogU2VlIFBpbm8gRG9jcyBmb3Igb3B0aW9uczogaHR0cHM6Ly9nZXRwaW5vLmlvLyMvZG9jcy9hcGk/aWQ9b3B0aW9uc1xuICAgKi9cbiAgbG9nZ2VyT3B0aW9ucz86IExvZ2dlck9wdGlvbnNcblxuICAvKipcbiAgICogQSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgc3RhcnR1cCB0aGF0IHJlY2VpdmVzIHRoZSBQYXlsb2FkIGluc3RhbmNlIGFzIGl0J3Mgb25seSBhcmd1bWVudC5cbiAgICovXG4gIG9uSW5pdD86IChwYXlsb2FkOiBQYXlsb2FkKSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZFxuXG4gIC8qKiBTZWN1cmUgc3RyaW5nIHRoYXQgUGF5bG9hZCB3aWxsIHVzZSBmb3IgYW55IGVuY3J5cHRpb24gd29ya2Zsb3dzICovXG4gIHNlY3JldDogc3RyaW5nXG59XG5cbi8qKlxuICogVGhpcyByZXN1bHQgaXMgY2FsY3VsYXRlZCBvbiB0aGUgc2VydmVyXG4gKiBhbmQgdGhlbiBzZW50IHRvIHRoZSBjbGllbnQgYWxsb3dpbmcgdGhlIGRhc2hib2FyZCB0byBzaG93IGFjY2Vzc2libGUgZGF0YSBhbmQgYWN0aW9ucy5cbiAqXG4gKiBJZiB0aGUgcmVzdWx0IGlzIGB0cnVlYCwgdGhlIHVzZXIgaGFzIGFjY2Vzcy5cbiAqIElmIHRoZSByZXN1bHQgaXMgYW4gb2JqZWN0LCBpdCBpcyBpbnRlcnByZXRlZCBhcyBhIE1vbmdvREIgcXVlcnkuXG4gKlxuICogQGV4YW1wbGUgYHsgY3JlYXRlZEJ5OiB7IGVxdWFsczogaWQgfSB9YFxuICpcbiAqIEBleGFtcGxlIGB7IHRlbmFudDogeyBpbjogdGVuYW50SWRzIH0gfWBcbiAqXG4gKiBAc2VlIGh0dHBzOi8vcGF5bG9hZGNtcy5jb20vZG9jcy9hY2Nlc3MtY29udHJvbC9vdmVydmlld1xuICovXG5leHBvcnQgdHlwZSBBY2Nlc3NSZXN1bHQgPSBXaGVyZSB8IGJvb2xlYW5cblxuZXhwb3J0IHR5cGUgQWNjZXNzQXJnczxUID0gYW55LCBVID0gYW55PiA9IHtcbiAgLyoqXG4gICAqIFRoZSByZWxldmFudCByZXNvdXJjZSB0aGF0IGlzIGJlaW5nIGFjY2Vzc2VkLlxuICAgKlxuICAgKiBgZGF0YWAgaXMgbnVsbCB3aGVuIGEgbGlzdCBpcyByZXF1ZXN0ZWRcbiAgICovXG4gIGRhdGE/OiBUXG4gIC8qKiBJRCBvZiB0aGUgcmVzb3VyY2UgYmVpbmcgYWNjZXNzZWQgKi9cbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmdcbiAgLyoqIFRoZSBvcmlnaW5hbCByZXF1ZXN0IHRoYXQgcmVxdWlyZXMgYW4gYWNjZXNzIGNoZWNrICovXG4gIHJlcTogUGF5bG9hZFJlcXVlc3Q8VT5cbn1cblxuLyoqXG4gKiBBY2Nlc3MgZnVuY3Rpb24gcnVucyBvbiB0aGUgc2VydmVyXG4gKiBhbmQgaXMgc2VudCB0byB0aGUgY2xpZW50IGFsbG93aW5nIHRoZSBkYXNoYm9hcmQgdG8gc2hvdyBhY2Nlc3NpYmxlIGRhdGEgYW5kIGFjdGlvbnMuXG4gKlxuICogQHNlZSBodHRwczovL3BheWxvYWRjbXMuY29tL2RvY3MvYWNjZXNzLWNvbnRyb2wvb3ZlcnZpZXdcbiAqL1xuZXhwb3J0IHR5cGUgQWNjZXNzPFQgPSBhbnksIFUgPSBhbnk+ID0gKFxuICBhcmdzOiBBY2Nlc3NBcmdzPFQsIFU+LFxuKSA9PiBBY2Nlc3NSZXN1bHQgfCBQcm9taXNlPEFjY2Vzc1Jlc3VsdD5cblxuLyoqIEVxdWl2YWxlbnQgdG8gZXhwcmVzcyBtaWRkbGV3YXJlLCBidXQgd2l0aCBhbiBlbmhhbmNlZCByZXF1ZXN0IG9iamVjdCAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXlsb2FkSGFuZGxlciB7XG4gIChyZXE6IFBheWxvYWRSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pOiB2b2lkXG59XG5cbi8qKlxuICogRG9jczogaHR0cHM6Ly9wYXlsb2FkY21zLmNvbS9kb2NzL3Jlc3QtYXBpL292ZXJ2aWV3I2N1c3RvbS1lbmRwb2ludHNcbiAqL1xuZXhwb3J0IHR5cGUgRW5kcG9pbnQgPSB7XG4gIC8qKiBFeHRlbnNpb24gcG9pbnQgdG8gYWRkIHlvdXIgY3VzdG9tIGRhdGEuICovXG4gIGN1c3RvbT86IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgLyoqXG4gICAqIE1pZGRsZXdhcmUgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBwYXRoL21ldGhvZCBtYXRjaGVzXG4gICAqXG4gICAqIENvbXBhdGlibGUgd2l0aCBFeHByZXNzIG1pZGRsZXdhcmVcbiAgICovXG4gIGhhbmRsZXI6IFBheWxvYWRIYW5kbGVyIHwgUGF5bG9hZEhhbmRsZXJbXVxuICAvKiogSFRUUCBtZXRob2QgKG9yIFwiYWxsXCIpICovXG4gIG1ldGhvZDogJ2Nvbm5lY3QnIHwgJ2RlbGV0ZScgfCAnZ2V0JyB8ICdoZWFkJyB8ICdvcHRpb25zJyB8ICdwYXRjaCcgfCAncG9zdCcgfCAncHV0J1xuICAvKipcbiAgICogUGF0dGVybiB0aGF0IHNob3VsZCBtYXRjaCB0aGUgcGF0aCBvZiB0aGUgaW5jb21pbmcgcmVxdWVzdFxuICAgKlxuICAgKiBDb21wYXRpYmxlIHdpdGggdGhlIEV4cHJlc3Mgcm91dGVyXG4gICAqL1xuICBwYXRoOiBzdHJpbmdcbiAgLyoqXG4gICAqIFNldCB0byBgdHJ1ZWAgdG8gZGlzYWJsZSB0aGUgUGF5bG9hZCBtaWRkbGV3YXJlIGZvciB0aGlzIGVuZHBvaW50XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByb290PzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBDdXN0b21BZG1pblZpZXcgPSBSZWFjdC5Db21wb25lbnRUeXBlPHtcbiAgY2FuQWNjZXNzQWRtaW4/OiBib29sZWFuXG4gIGNvbGxlY3Rpb24/OiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnXG4gIGdsb2JhbD86IFNhbml0aXplZEdsb2JhbENvbmZpZ1xuICB1c2VyOiBVc2VyIHwgbnVsbCB8IHVuZGVmaW5lZFxufT5cblxuZXhwb3J0IHR5cGUgRWRpdFZpZXdDb25maWcgPSB7XG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHRvIHJlbmRlciBmb3IgdGhpcyB2aWV3XG4gICAqICsgUmVwbGFjZXMgdGhlIGRlZmF1bHQgY29tcG9uZW50XG4gICAqL1xuICBDb21wb25lbnQ6IEVkaXRWaWV3Q29tcG9uZW50XG4gIFRhYjogRG9jdW1lbnRUYWJcbiAgcGF0aDogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEVkaXRWaWV3Q29tcG9uZW50ID0gUmVhY3QuQ29tcG9uZW50VHlwZTxDb2xsZWN0aW9uRWRpdFZpZXdQcm9wcyB8IEdsb2JhbEVkaXRWaWV3UHJvcHM+XG5cbmV4cG9ydCB0eXBlIEVkaXRWaWV3ID0gRWRpdFZpZXdDb21wb25lbnQgfCBFZGl0Vmlld0NvbmZpZ1xuXG5leHBvcnQgdHlwZSBBZG1pblJvdXRlID0ge1xuICBDb21wb25lbnQ6IEN1c3RvbUFkbWluVmlld1xuICAvKiogV2hldGhlciB0aGUgcGF0aCBzaG91bGQgYmUgbWF0Y2hlZCBleGFjdGx5IG9yIGFzIGEgcHJlZml4ICovXG4gIGV4YWN0PzogYm9vbGVhblxuICBwYXRoOiBzdHJpbmdcbiAgc2Vuc2l0aXZlPzogYm9vbGVhblxuICBzdHJpY3Q/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIExvY2FsZSA9IHtcbiAgLyoqXG4gICAqIHZhbHVlIG9mIHN1cHBvcnRlZCBsb2NhbGVcbiAgICogQGV4YW1wbGUgXCJlblwiXG4gICAqL1xuICBjb2RlOiBzdHJpbmdcbiAgLyoqXG4gICAqIGxhYmVsIG9mIHN1cHBvcnRlZCBsb2NhbGVcbiAgICogQGV4YW1wbGUgXCJFbmdsaXNoXCJcbiAgICovXG4gIGxhYmVsOiBzdHJpbmdcbiAgLyoqXG4gICAqIGlmIHRydWUsIGRlZmF1bHRzIHRleHRBbGlnbW5lbnQgb24gdGV4dCBmaWVsZHMgdG8gUlRMXG4gICAqL1xuICBydGw/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIEJhc2VMb2NhbGl6YXRpb25Db25maWcgPSB7XG4gIC8qKlxuICAgKiBMb2NhbGUgZm9yIHVzZXJzIHRoYXQgaGF2ZSBub3QgZXhwcmVzc2VkIHRoZWlyIHByZWZlcmVuY2UgZm9yIGEgc3BlY2lmaWMgbG9jYWxlXG4gICAqIEBleGFtcGxlIGBcImVuXCJgXG4gICAqL1xuICBkZWZhdWx0TG9jYWxlOiBzdHJpbmdcbiAgLyoqIFNldCB0byBgdHJ1ZWAgdG8gbGV0IG1pc3NpbmcgdmFsdWVzIGluIGxvY2FsaXNlZCBmaWVsZHMgZmFsbCBiYWNrIHRvIHRoZSB2YWx1ZXMgaW4gYGRlZmF1bHRMb2NhbGVgICovXG4gIGZhbGxiYWNrPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBMb2NhbGl6YXRpb25Db25maWdXaXRoTm9MYWJlbHMgPSBQcmV0dGlmeTxcbiAgQmFzZUxvY2FsaXphdGlvbkNvbmZpZyAmIHtcbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIHN1cHBvcnRlZCBsb2NhbGVzXG4gICAgICogQGV4YW1wbGUgYFtcImVuXCIsIFwiZXNcIiwgXCJmclwiLCBcIm5sXCIsIFwiZGVcIiwgXCJqcFwiXWBcbiAgICAgKi9cbiAgICBsb2NhbGVzOiBzdHJpbmdbXVxuICB9XG4+XG5cbmV4cG9ydCB0eXBlIExvY2FsaXphdGlvbkNvbmZpZ1dpdGhMYWJlbHMgPSBQcmV0dGlmeTxcbiAgQmFzZUxvY2FsaXphdGlvbkNvbmZpZyAmIHtcbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIHN1cHBvcnRlZCBsb2NhbGVzIHdpdGggbGFiZWxzXG4gICAgICogQGV4YW1wbGUge1xuICAgICAqICBsYWJlbDogJ0VuZ2xpc2gnLFxuICAgICAqICB2YWx1ZTogJ2VuJyxcbiAgICAgKiAgcnRsOiBmYWxzZVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBsb2NhbGVzOiBMb2NhbGVbXVxuICB9XG4+XG5cbmV4cG9ydCB0eXBlIFNhbml0aXplZExvY2FsaXphdGlvbkNvbmZpZyA9IFByZXR0aWZ5PFxuICBMb2NhbGl6YXRpb25Db25maWdXaXRoTGFiZWxzICYge1xuICAgIC8qKlxuICAgICAqIExpc3Qgb2Ygc3VwcG9ydGVkIGxvY2FsZXNcbiAgICAgKiBAZXhhbXBsZSBgW1wiZW5cIiwgXCJlc1wiLCBcImZyXCIsIFwibmxcIiwgXCJkZVwiLCBcImpwXCJdYFxuICAgICAqL1xuICAgIGxvY2FsZUNvZGVzOiBzdHJpbmdbXVxuICB9XG4+XG5cbi8qKlxuICogQHNlZSBodHRwczovL3BheWxvYWRjbXMuY29tL2RvY3MvY29uZmlndXJhdGlvbi9sb2NhbGl6YXRpb24jbG9jYWxpemF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIExvY2FsaXphdGlvbkNvbmZpZyA9IFByZXR0aWZ5PFxuICBMb2NhbGl6YXRpb25Db25maWdXaXRoTGFiZWxzIHwgTG9jYWxpemF0aW9uQ29uZmlnV2l0aE5vTGFiZWxzXG4+XG5cbi8qKlxuICogVGhpcyBpcyB0aGUgY2VudHJhbCBjb25maWd1cmF0aW9uXG4gKlxuICogQHNlZSBodHRwczovL3BheWxvYWRjbXMuY29tL2RvY3MvY29uZmlndXJhdGlvbi9vdmVydmlld1xuICovXG5leHBvcnQgdHlwZSBDb25maWcgPSB7XG4gIC8qKiBDb25maWd1cmUgYWRtaW4gZGFzaGJvYXJkICovXG4gIGFkbWluPzoge1xuICAgIC8qKiBBdXRvbWF0aWNhbGx5IGxvZyBpbiBhcyBhIHVzZXIgd2hlbiB2aXNpdGluZyB0aGUgYWRtaW4gZGFzaGJvYXJkLiAqL1xuICAgIGF1dG9Mb2dpbj86XG4gICAgICB8IHtcbiAgICAgICAgICAvKipcbiAgICAgICAgICAgKiBUaGUgZW1haWwgYWRkcmVzcyBvZiB0aGUgdXNlciB0byBsb2dpbiBhc1xuICAgICAgICAgICAqXG4gICAgICAgICAgICovXG4gICAgICAgICAgZW1haWw6IHN0cmluZ1xuICAgICAgICAgIC8qKiBUaGUgcGFzc3dvcmQgb2YgdGhlIHVzZXIgdG8gbG9naW4gYXMgKi9cbiAgICAgICAgICBwYXNzd29yZDogc3RyaW5nXG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogSWYgc2V0IHRvIHRydWUsIHRoZSBsb2dpbiBjcmVkZW50aWFscyB3aWxsIGJlIHByZWZpbGxlZCBidXQgdGhlIHVzZXIgd2lsbCBzdGlsbCBuZWVkIHRvIGNsaWNrIHRoZSBsb2dpbiBidXR0b24uXG4gICAgICAgICAgICpcbiAgICAgICAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAgICAgICAqL1xuICAgICAgICAgIHByZWZpbGxPbmx5PzogYm9vbGVhblxuICAgICAgICB9XG4gICAgICB8IGZhbHNlXG5cbiAgICAvKiogU2V0IGFjY291bnQgcHJvZmlsZSBwaWN0dXJlLiBPcHRpb25zOiBncmF2YXRhciwgZGVmYXVsdCBvciBhIGN1c3RvbSBSZWFjdCBjb21wb25lbnQuICovXG4gICAgYXZhdGFyPzogJ2RlZmF1bHQnIHwgJ2dyYXZhdGFyJyB8IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PlxuICAgIC8qKlxuICAgICAqIFNwZWNpZnkgYW4gYWJzb2x1dGUgcGF0aCBmb3Igd2hlcmUgdG8gc3RvcmUgdGhlIGJ1aWx0IEFkbWluIHBhbmVsIGJ1bmRsZSB1c2VkIGluIHByb2R1Y3Rpb24uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcIi9idWlsZFwiXG4gICAgICogKi9cbiAgICBidWlsZFBhdGg/OiBzdHJpbmdcbiAgICAvKiogQ3VzdG9taXplIHRoZSBidW5kbGVyIHVzZWQgdG8gcnVuIHlvdXIgYWRtaW4gcGFuZWwuICovXG4gICAgYnVuZGxlcj86IFBheWxvYWRCdW5kbGVyXG4gICAgLyoqXG4gICAgICogQWRkIGV4dHJhIGFuZC9vciByZXBsYWNlIGJ1aWx0LWluIGNvbXBvbmVudHMgd2l0aCBjdXN0b20gY29tcG9uZW50c1xuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL3BheWxvYWRjbXMuY29tL2RvY3MvYWRtaW4vY29tcG9uZW50c1xuICAgICAqL1xuICAgIGNvbXBvbmVudHM/OiB7XG4gICAgICAvKipcbiAgICAgICAqIFJlcGxhY2UgdGhlIG5hdmlnYXRpb24gd2l0aCBhIGN1c3RvbSBjb21wb25lbnRcbiAgICAgICAqL1xuICAgICAgTmF2PzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+XG4gICAgICAvKipcbiAgICAgICAqIEFkZCBjdXN0b20gY29tcG9uZW50cyBhZnRlciB0aGUgY29sbGVjdGlvbiBvdmVydmlld1xuICAgICAgICovXG4gICAgICBhZnRlckRhc2hib2FyZD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PltdXG4gICAgICAvKipcbiAgICAgICAqIEFkZCBjdXN0b20gY29tcG9uZW50cyBhZnRlciB0aGUgZW1haWwvcGFzc3dvcmQgZmllbGRcbiAgICAgICAqL1xuICAgICAgYWZ0ZXJMb2dpbj86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PltdXG4gICAgICAvKipcbiAgICAgICAqIEFkZCBjdXN0b20gY29tcG9uZW50cyBhZnRlciB0aGUgbmF2aWdhdGlvbiBsaW5rc1xuICAgICAgICovXG4gICAgICBhZnRlck5hdkxpbmtzPzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+W11cbiAgICAgIC8qKlxuICAgICAgICogQWRkIGN1c3RvbSBjb21wb25lbnRzIGJlZm9yZSB0aGUgY29sbGVjdGlvbiBvdmVydmlld1xuICAgICAgICovXG4gICAgICBiZWZvcmVEYXNoYm9hcmQ/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5bXVxuICAgICAgLyoqXG4gICAgICAgKiBBZGQgY3VzdG9tIGNvbXBvbmVudHMgYmVmb3JlIHRoZSBlbWFpbC9wYXNzd29yZCBmaWVsZFxuICAgICAgICovXG4gICAgICBiZWZvcmVMb2dpbj86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PltdXG4gICAgICAvKipcbiAgICAgICAqIEFkZCBjdXN0b20gY29tcG9uZW50cyBiZWZvcmUgdGhlIG5hdmlnYXRpb24gbGlua3NcbiAgICAgICAqL1xuICAgICAgYmVmb3JlTmF2TGlua3M/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5bXVxuICAgICAgLyoqIFJlcGxhY2UgZ3JhcGhpY2FsIGNvbXBvbmVudHMgKi9cbiAgICAgIGdyYXBoaWNzPzoge1xuICAgICAgICAvKiogUmVwbGFjZSB0aGUgaWNvbiBpbiB0aGUgbmF2aWdhdGlvbiAqL1xuICAgICAgICBJY29uPzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+XG4gICAgICAgIC8qKiBSZXBsYWNlIHRoZSBsb2dvIG9uIHRoZSBsb2dpbiBwYWdlICovXG4gICAgICAgIExvZ28/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5cbiAgICAgIH1cbiAgICAgIC8qKiBSZXBsYWNlIGxvZ291dCByZWxhdGVkIGNvbXBvbmVudHMgKi9cbiAgICAgIGxvZ291dD86IHtcbiAgICAgICAgLyoqIFJlcGxhY2UgdGhlIGxvZ291dCBidXR0b24gICovXG4gICAgICAgIEJ1dHRvbj86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PlxuICAgICAgfVxuICAgICAgLyoqXG4gICAgICAgKiBXcmFwIHRoZSBhZG1pbiBkYXNoYm9hcmQgaW4gY3VzdG9tIGNvbnRleHQgcHJvdmlkZXJzXG4gICAgICAgKi9cbiAgICAgIHByb3ZpZGVycz86IFJlYWN0LkNvbXBvbmVudFR5cGU8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+W11cbiAgICAgIC8qKlxuICAgICAgICogQWRkIGN1c3RvbSByb3V0ZXMgaW4gdGhlIGFkbWluIGRhc2hib2FyZFxuICAgICAgICovXG4gICAgICByb3V0ZXM/OiBBZG1pblJvdXRlW11cbiAgICAgIC8qIFJlcGxhY2UgY29tcGxldGUgcGFnZXMgKi9cbiAgICAgIHZpZXdzPzoge1xuICAgICAgICAvKiogUmVwbGFjZSB0aGUgYWNjb3VudCBzY3JlZW4gKi9cbiAgICAgICAgQWNjb3VudD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PlxuICAgICAgICAvKiogUmVwbGFjZSB0aGUgYWRtaW4gaG9tZXBhZ2UgKi9cbiAgICAgICAgRGFzaGJvYXJkPzogUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+XG4gICAgICB9XG4gICAgfVxuICAgIC8qKiBBYnNvbHV0ZSBwYXRoIHRvIGEgc3R5bGVzaGVldCB0aGF0IHlvdSBjYW4gdXNlIHRvIG92ZXJyaWRlIC8gY3VzdG9taXplIHRoZSBBZG1pbiBwYW5lbCBzdHlsaW5nLiAqL1xuICAgIGNzcz86IHN0cmluZ1xuICAgIC8qKiBHbG9iYWwgZGF0ZSBmb3JtYXQgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIGFsbCBkYXRlcyBpbiB0aGUgQWRtaW4gcGFuZWwuIEFueSB2YWxpZCBkYXRlLWZucyBmb3JtYXQgcGF0dGVybiBjYW4gYmUgdXNlZC4gKi9cbiAgICBkYXRlRm9ybWF0Pzogc3RyaW5nXG4gICAgLyoqIElmIHNldCB0byB0cnVlLCB0aGUgZW50aXJlIEFkbWluIHBhbmVsIHdpbGwgYmUgZGlzYWJsZWQuICovXG4gICAgZGlzYWJsZT86IGJvb2xlYW5cbiAgICAvKiogVGhlIHJvdXRlIHRoZSB1c2VyIHdpbGwgYmUgcmVkaXJlY3RlZCB0byBhZnRlciBiZWluZyBpbmFjdGl2ZSBmb3IgdG9vIGxvbmcuICovXG4gICAgaW5hY3Rpdml0eVJvdXRlPzogc3RyaW5nXG4gICAgLyoqIFJlcGxhY2UgdGhlIGVudGlyZXR5IG9mIHRoZSBpbmRleC5odG1sIGZpbGUgdXNlZCBieSB0aGUgQWRtaW4gcGFuZWwuIFJlZmVyZW5jZSB0aGUgYmFzZSBpbmRleC5odG1sIGZpbGUgdG8gZW5zdXJlIHlvdXIgcmVwbGFjZW1lbnQgaGFzIHRoZSBhcHByb3ByaWF0ZSBIVE1MIGVsZW1lbnRzLiAqL1xuICAgIGluZGV4SFRNTD86IHN0cmluZ1xuICAgIGxpdmVQcmV2aWV3PzogTGl2ZVByZXZpZXdDb25maWcgJiB7XG4gICAgICBjb2xsZWN0aW9ucz86IHN0cmluZ1tdXG4gICAgICBnbG9iYWxzPzogc3RyaW5nW11cbiAgICB9XG4gICAgLyoqIFRoZSByb3V0ZSBmb3IgdGhlIGxvZ291dCBwYWdlLiAqL1xuICAgIGxvZ291dFJvdXRlPzogc3RyaW5nXG4gICAgLyoqIEJhc2UgbWV0YSBkYXRhIHRvIHVzZSBmb3IgdGhlIEFkbWluIHBhbmVsLiBJbmNsdWRlZCBwcm9wZXJ0aWVzIGFyZSB0aXRsZVN1ZmZpeCwgb2dJbWFnZSwgYW5kIGZhdmljb24uICovXG4gICAgbWV0YT86IHtcbiAgICAgIC8qKlxuICAgICAgICogUHVibGljIHBhdGggdG8gYW4gaWNvblxuICAgICAgICpcbiAgICAgICAqIFRoaXMgaW1hZ2UgbWF5IGJlIGRpc3BsYXllZCBpbiB0aGUgYnJvd3NlciBuZXh0IHRvIHRoZSB0aXRsZSBvZiB0aGUgcGFnZVxuICAgICAgICovXG4gICAgICBmYXZpY29uPzogc3RyaW5nXG4gICAgICAvKipcbiAgICAgICAqIFB1YmxpYyBwYXRoIHRvIGFuIGltYWdlXG4gICAgICAgKlxuICAgICAgICogVGhpcyBpbWFnZSBtYXkgYmUgZGlzcGxheWVkIGFzIHByZXZpZXcgd2hlbiB0aGUgbGluayBpcyBzaGFyZWQgb24gc29jaWFsIG1lZGlhXG4gICAgICAgKi9cbiAgICAgIG9nSW1hZ2U/OiBzdHJpbmdcbiAgICAgIC8qKlxuICAgICAgICogU3RyaW5nIHRvIGFwcGVuZCB0byB0aGUgPHRpdGxlPiBvZiBhZG1pbiBwYWdlc1xuICAgICAgICogQGV4YW1wbGUgYFwiIC0gTXkgQnJhbmRcImBcbiAgICAgICAqL1xuICAgICAgdGl0bGVTdWZmaXg/OiBzdHJpbmdcbiAgICB9XG4gICAgLyoqIFRoZSBzbHVnIG9mIGEgQ29sbGVjdGlvbiB0aGF0IHlvdSB3YW50IGJlIHVzZWQgdG8gbG9nIGluIHRvIHRoZSBBZG1pbiBkYXNoYm9hcmQuICovXG4gICAgdXNlcj86IHN0cmluZ1xuICAgIC8qKiBDdXN0b21pemUgdGhlIFZpdGUgY29uZmlnIHRoYXQncyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBBZG1pbiBwYW5lbC4gKi9cbiAgICB2aXRlPzogKGNvbmZpZzogSW5saW5lQ29uZmlnKSA9PiBJbmxpbmVDb25maWdcbiAgICAvKiogQ3VzdG9taXplIHRoZSBXZWJwYWNrIGNvbmZpZyB0aGF0J3MgdXNlZCB0byBnZW5lcmF0ZSB0aGUgQWRtaW4gcGFuZWwuICovXG4gICAgd2VicGFjaz86IChjb25maWc6IENvbmZpZ3VyYXRpb24pID0+IENvbmZpZ3VyYXRpb25cbiAgfVxuICAvKipcbiAgICogTWFuYWdlIHRoZSBkYXRhbW9kZWwgb2YgeW91ciBhcHBsaWNhdGlvblxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vcGF5bG9hZGNtcy5jb20vZG9jcy9jb25maWd1cmF0aW9uL2NvbGxlY3Rpb25zI2NvbGxlY3Rpb24tY29uZmlnc1xuICAgKi9cbiAgY29sbGVjdGlvbnM/OiBDb2xsZWN0aW9uQ29uZmlnW11cbiAgLyoqXG4gICAqIFJlcGxhY2UgdGhlIGJ1aWx0LWluIGNvbXBvbmVudHMgd2l0aCBjdXN0b20gb25lc1xuICAgKi9cbiAgY29tcG9uZW50cz86IHsgW2tleTogc3RyaW5nXTogKCgpID0+IEpTWC5FbGVtZW50KSB8IEpTWC5FbGVtZW50IH1cbiAgLyoqXG4gICAqIFByZWZpeCBhIHN0cmluZyB0byBhbGwgY29va2llcyB0aGF0IFBheWxvYWQgc2V0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJwYXlsb2FkXCJcbiAgICovXG4gIGNvb2tpZVByZWZpeD86IHN0cmluZ1xuICAvKiogRWl0aGVyIGEgd2hpdGVsaXN0IGFycmF5IG9mIFVSTFMgdG8gYWxsb3cgQ09SUyByZXF1ZXN0cyBmcm9tLCBvciBhIHdpbGRjYXJkIHN0cmluZyAoJyonKSB0byBhY2NlcHQgaW5jb21pbmcgcmVxdWVzdHMgZnJvbSBhbnkgZG9tYWluLiAqL1xuICBjb3JzPzogJyonIHwgc3RyaW5nW11cblxuICAvKiogQSB3aGl0ZWxpc3QgYXJyYXkgb2YgVVJMcyB0byBhbGxvdyBQYXlsb2FkIGNvb2tpZXMgdG8gYmUgYWNjZXB0ZWQgZnJvbSBhcyBhIGZvcm0gb2YgQ1NSRiBwcm90ZWN0aW9uLiAqL1xuICBjc3JmPzogc3RyaW5nW11cblxuICAvKiogRXh0ZW5zaW9uIHBvaW50IHRvIGFkZCB5b3VyIGN1c3RvbSBkYXRhLiAqL1xuICBjdXN0b20/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gIC8qKiBQYXNzIGluIGEgZGF0YWJhc2UgYWRhcHRlciBmb3IgdXNlIG9uIHRoaXMgcHJvamVjdC4gKi9cbiAgZGI6IChhcmdzOiB7IHBheWxvYWQ6IFBheWxvYWQgfSkgPT4gQmFzZURhdGFiYXNlQWRhcHRlclxuICAvKiogRW5hYmxlIHRvIGV4cG9zZSBtb3JlIGRldGFpbGVkIGVycm9yIGluZm9ybWF0aW9uLiAqL1xuICBkZWJ1Zz86IGJvb2xlYW5cbiAgLyoqXG4gICAqIElmIGEgdXNlciBkb2VzIG5vdCBzcGVjaWZ5IGBkZXB0aGAgd2hpbGUgcmVxdWVzdGluZyBhIHJlc291cmNlLCB0aGlzIGRlcHRoIHdpbGwgYmUgdXNlZC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3BheWxvYWRjbXMuY29tL2RvY3MvZ2V0dGluZy1zdGFydGVkL2NvbmNlcHRzI2RlcHRoXG4gICAqXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIGRlZmF1bHREZXB0aD86IG51bWJlclxuICAvKipcbiAgICogVGhlIG1heGltdW0gYWxsb3dlZCBkZXB0aCB0byBiZSBwZXJtaXR0ZWQgYXBwbGljYXRpb24td2lkZS4gVGhpcyBzZXR0aW5nIGhlbHBzIHByZXZlbnQgYWdhaW5zdCBtYWxpY2lvdXMgcXVlcmllcy5cbiAgICpcbiAgICogQGRlZmF1bHQgNDAwMDBcbiAgICovXG4gIGRlZmF1bHRNYXhUZXh0TGVuZ3RoPzogbnVtYmVyXG4gIC8qKiBEZWZhdWx0IHJpY2h0ZXh0IGVkaXRvciB0byB1c2UgZm9yIHJpY2hUZXh0IGZpZWxkcyAqL1xuICBlZGl0b3I6IFJpY2hUZXh0QWRhcHRlclxuICAvKipcbiAgICogRW1haWwgY29uZmlndXJhdGlvbiBvcHRpb25zLiBUaGlzIHZhbHVlIGlzIG92ZXJyaWRkZW4gYnkgYGVtYWlsYCBpbiBQYXlsb2FkLmluaXQgaWYgcGFzc2VkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vcGF5bG9hZGNtcy5jb20vZG9jcy9lbWFpbC9vdmVydmlld1xuICAgKi9cbiAgZW1haWw/OiBFbWFpbE9wdGlvbnNcbiAgLyoqIEN1c3RvbSBSRVNUIGVuZHBvaW50cyAqL1xuICBlbmRwb2ludHM/OiBFbmRwb2ludFtdXG4gIC8qKlxuICAgKiBFeHByZXNzLXNwZWNpZmljIG1pZGRsZXdhcmUgb3B0aW9ucyBzdWNoIGFzIGNvbXByZXNzaW9uIGFuZCBKU09OIHBhcnNpbmcuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9wYXlsb2FkY21zLmNvbS9kb2NzL2NvbmZpZ3VyYXRpb24vZXhwcmVzc1xuICAgKi9cbiAgZXhwcmVzcz86IHtcbiAgICAvKiogQ29udHJvbCB0aGUgd2F5IHJlc3BvbnNlcyBhcmUgY29tcHJlc3NlZCAqL1xuICAgIGNvbXByZXNzaW9uPzoge1xuICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93blxuICAgIH1cbiAgICAvKiogQ29udHJvbCB0aGUgd2F5IEpTT04gaXMgcGFyc2VkICovXG4gICAganNvbj86IHtcbiAgICAgIC8qKiBEZWZhdWx0cyB0byAyTUIgICovXG4gICAgICBsaW1pdD86IG51bWJlclxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBleHByZXNzLm1pZGRsZXdhcmUgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIFBsZWFzZSBtaWdyYXRlIHRvIGV4cHJlc3MucG9zdE1pZGRsZXdhcmUuXG4gICAgICovXG4gICAgbWlkZGxld2FyZT86IGFueVtdXG4gICAgcG9zdE1pZGRsZXdhcmU/OiBhbnlbXVxuICAgIHByZU1pZGRsZXdhcmU/OiBhbnlbXVxuICB9XG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8vcGF5bG9hZGNtcy5jb20vZG9jcy9jb25maWd1cmF0aW9uL2dsb2JhbHMjZ2xvYmFsLWNvbmZpZ3NcbiAgICovXG4gIGdsb2JhbHM/OiBHbG9iYWxDb25maWdbXVxuICAvKipcbiAgICogTWFuYWdlIHRoZSBHcmFwaFFMIEFQSVxuICAgKlxuICAgKiBZb3UgY2FuIGFkZCB5b3VyIG93biBHcmFwaFFMIHF1ZXJpZXMgYW5kIG11dGF0aW9ucyB0byBQYXlsb2FkLCBtYWtpbmcgdXNlIG9mIGFsbCB0aGUgdHlwZXMgdGhhdCBQYXlsb2FkIGhhcyBkZWZpbmVkIGZvciB5b3UuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9wYXlsb2FkY21zLmNvbS9kb2NzL2FjY2Vzcy1jb250cm9sL292ZXJ2aWV3XG4gICAqL1xuICBncmFwaFFMPzoge1xuICAgIGRpc2FibGU/OiBib29sZWFuXG4gICAgZGlzYWJsZVBsYXlncm91bmRJblByb2R1Y3Rpb24/OiBib29sZWFuXG4gICAgbWF4Q29tcGxleGl0eT86IG51bWJlclxuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyBrZXlzIHRvIGN1c3RvbSBHcmFwaFFMIG11dGF0aW9uc1xuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL3BheWxvYWRjbXMuY29tL2RvY3MvYWNjZXNzLWNvbnRyb2wvb3ZlcnZpZXdcbiAgICAgKi9cbiAgICBtdXRhdGlvbnM/OiBHcmFwaFFMRXh0ZW5zaW9uXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIGtleXMgdG8gY3VzdG9tIEdyYXBoUUwgcXVlcmllc1xuICAgICAqXG4gICAgICogQHNlZSBodHRwczovL3BheWxvYWRjbXMuY29tL2RvY3MvYWNjZXNzLWNvbnRyb2wvb3ZlcnZpZXdcbiAgICAgKi9cbiAgICBxdWVyaWVzPzogR3JhcGhRTEV4dGVuc2lvblxuICAgIHNjaGVtYU91dHB1dEZpbGU/OiBzdHJpbmdcbiAgfVxuICAvKipcbiAgICogVGFwIGludG8gUGF5bG9hZC13aWRlIGhvb2tzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vcGF5bG9hZGNtcy5jb20vZG9jcy9ob29rcy9vdmVydmlld1xuICAgKi9cbiAgaG9va3M/OiB7XG4gICAgYWZ0ZXJFcnJvcj86IEFmdGVyRXJyb3JIb29rXG4gIH1cbiAgLyoqXG4gICAqIENvbnRyb2wgdGhlIGJlaGF2aW91ciBvZiB0aGUgYWRtaW4gaW50ZXJuYXRpb25hbGlzYXRpb24uXG4gICAqXG4gICAqIFNlZSBpMThuZXh0IG9wdGlvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0XG4gICAqIHtcbiAgICogICBmYWxsYmFja0xuZzogJ2VuJyxcbiAgICogICBkZWJ1ZzogZmFsc2UsXG4gICAqICAgc3VwcG9ydGVkTG5nczogT2JqZWN0LmtleXModHJhbnNsYXRpb25zKSxcbiAgICogICByZXNvdXJjZXM6IHRyYW5zbGF0aW9ucyxcbiAgICogfVxuICAgKi9cbiAgaTE4bj86IGkxOG5Jbml0T3B0aW9uc1xuICAvKiogQXV0b21hdGljYWxseSBpbmRleCBhbGwgc29ydGFibGUgdG9wLWxldmVsIGZpZWxkcyBpbiB0aGUgZGF0YWJhc2UgdG8gaW1wcm92ZSBzb3J0IHBlcmZvcm1hbmNlIGFuZCBhZGQgZGF0YWJhc2UgY29tcGF0aWJpbGl0eSBmb3IgQXp1cmUgQ29zbW9zIGFuZCBzaW1pbGFyLiAqL1xuICBpbmRleFNvcnRhYmxlRmllbGRzPzogYm9vbGVhblxuICAvKipcbiAgICogVHJhbnNsYXRlIHlvdXIgY29udGVudCB0byBkaWZmZXJlbnQgbGFuZ3VhZ2VzL2xvY2FsZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlIC8vIGRpc2FibGUgbG9jYWxpemF0aW9uXG4gICAqL1xuICBsb2NhbGl6YXRpb24/OiBMb2NhbGl6YXRpb25Db25maWcgfCBmYWxzZVxuICAvKipcbiAgICogVGhlIG1heGltdW0gYWxsb3dlZCBkZXB0aCB0byBiZSBwZXJtaXR0ZWQgYXBwbGljYXRpb24td2lkZS4gVGhpcyBzZXR0aW5nIGhlbHBzIHByZXZlbnQgYWdhaW5zdCBtYWxpY2lvdXMgcXVlcmllcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3BheWxvYWRjbXMuY29tL2RvY3MvZ2V0dGluZy1zdGFydGVkL2NvbmNlcHRzI2RlcHRoXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwXG4gICAqL1xuICBtYXhEZXB0aD86IG51bWJlclxuICAvKiogQSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBpbW1lZGlhdGVseSBmb2xsb3dpbmcgc3RhcnR1cCB0aGF0IHJlY2VpdmVzIHRoZSBQYXlsb2FkIGluc3RhbmNlIGFzIGl0cyBvbmx5IGFyZ3VtZW50LiAqL1xuICBvbkluaXQ/OiAocGF5bG9hZDogUGF5bG9hZCkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWRcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIFBheWxvYWQgcGx1Z2lucy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3BheWxvYWRjbXMuY29tL2RvY3MvcGx1Z2lucy9vdmVydmlld1xuICAgKi9cbiAgcGx1Z2lucz86IFBsdWdpbltdXG4gIC8qKlxuICAgKiBMaW1pdCBoZWF2eSB1c2FnZVxuICAgKlxuICAgKiBAZGVmYXVsdFxuICAgKiB7XG4gICAqICAgd2luZG93OiAxNSAqIDYwICogMTAwLCAvLyAxLjUgbWludXRlcyxcbiAgICogICBtYXg6IDUwMCxcbiAgICogfVxuICAgKi9cbiAgcmF0ZUxpbWl0Pzoge1xuICAgIG1heD86IG51bWJlclxuICAgIHNraXA/OiAocmVxOiBQYXlsb2FkUmVxdWVzdCkgPT4gYm9vbGVhblxuICAgIHRydXN0UHJveHk/OiBib29sZWFuXG4gICAgd2luZG93PzogbnVtYmVyXG4gIH1cbiAgLyoqIENvbnRyb2wgdGhlIHJvdXRpbmcgc3RydWN0dXJlIHRoYXQgUGF5bG9hZCBiaW5kcyBpdHNlbGYgdG8uICovXG4gIHJvdXRlcz86IHtcbiAgICAvKiogQGRlZmF1bHQgXCIvYWRtaW5cIiAqL1xuICAgIGFkbWluPzogc3RyaW5nXG4gICAgLyoqIEBkZWZhdWx0IFwiL2FwaVwiICAqL1xuICAgIGFwaT86IHN0cmluZ1xuICAgIC8qKiBAZGVmYXVsdCBcIi9ncmFwaHFsXCIgICovXG4gICAgZ3JhcGhRTD86IHN0cmluZ1xuICAgIC8qKiBAZGVmYXVsdCBcIi9wbGF5Z3JvdW5kXCIgKi9cbiAgICBncmFwaFFMUGxheWdyb3VuZD86IHN0cmluZ1xuICB9XG4gIC8qKlxuICAgKiBEZWZpbmUgdGhlIGFic29sdXRlIFVSTCBvZiB5b3VyIGFwcCBpbmNsdWRpbmcgdGhlIHByb3RvY29sLCBmb3IgZXhhbXBsZSBgaHR0cHM6Ly9leGFtcGxlLm9yZ2AuXG4gICAqIE5vIHBhdGhzIGFsbG93ZWQsIG9ubHkgcHJvdG9jb2wsIGRvbWFpbiBhbmQgKG9wdGlvbmFsbHkpIHBvcnQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9wYXlsb2FkY21zLmNvbS9kb2NzL2NvbmZpZ3VyYXRpb24vb3ZlcnZpZXcjb3B0aW9uc1xuICAgKi9cbiAgc2VydmVyVVJMPzogc3RyaW5nXG4gIC8qKiBTZW5kIGFub255bW91cyB0ZWxlbWV0cnkgZGF0YSBhYm91dCBnZW5lcmFsIHVzYWdlLiAqL1xuICB0ZWxlbWV0cnk/OiBib29sZWFuXG4gIC8qKiBDb250cm9sIGhvdyB0eXBlc2NyaXB0IGludGVyZmFjZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHlvdXIgY29sbGVjdGlvbnMuICovXG4gIHR5cGVzY3JpcHQ/OiB7XG4gICAgLyoqIEZpbGVuYW1lIHRvIHdyaXRlIHRoZSBnZW5lcmF0ZWQgdHlwZXMgdG8gKi9cbiAgICBvdXRwdXRGaWxlPzogc3RyaW5nXG4gIH1cbiAgLyoqXG4gICAqIEN1c3RvbWl6ZSB0aGUgaGFuZGxpbmcgb2YgaW5jb21pbmcgZmlsZSB1cGxvYWRzIGZvciBjb2xsZWN0aW9ucyB0aGF0IGhhdmUgdXBsb2FkcyBlbmFibGVkLlxuICAgKi9cbiAgdXBsb2FkPzogRXhwcmVzc0ZpbGVVcGxvYWRPcHRpb25zXG59XG5cbmV4cG9ydCB0eXBlIFNhbml0aXplZENvbmZpZyA9IE9taXQ8XG4gIERlZXBSZXF1aXJlZDxDb25maWc+LFxuICAnY29sbGVjdGlvbnMnIHwgJ2VuZHBvaW50JyB8ICdnbG9iYWxzJyB8ICdsb2NhbGl6YXRpb24nXG4+ICYge1xuICBjb2xsZWN0aW9uczogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZ1tdXG4gIGVuZHBvaW50czogRW5kcG9pbnRbXVxuICBnbG9iYWxzOiBTYW5pdGl6ZWRHbG9iYWxDb25maWdbXVxuICBsb2NhbGl6YXRpb246IFNhbml0aXplZExvY2FsaXphdGlvbkNvbmZpZyB8IGZhbHNlXG4gIHBhdGhzOiB7XG4gICAgY29uZmlnOiBzdHJpbmdcbiAgICBjb25maWdEaXI6IHN0cmluZ1xuICAgIHJhd0NvbmZpZzogc3RyaW5nXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRW50aXR5RGVzY3JpcHRpb24gPVxuICB8ICgoKSA9PiBzdHJpbmcpXG4gIHwgUmVhY3QuQ29tcG9uZW50VHlwZTxhbnk+XG4gIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICB8IHN0cmluZ1xuIl0sIm5hbWVzIjpbImhhc1RyYW5zcG9ydCIsImhhc1RyYW5zcG9ydE9wdGlvbnMiLCJlbWFpbENvbmZpZyIsInRyYW5zcG9ydCIsInVuZGVmaW5lZCIsInRyYW5zcG9ydE9wdGlvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBNEZnQkEsWUFBWTtlQUFaQTs7SUFRQUMsbUJBQW1CO2VBQW5CQTs7O0FBUlQsU0FBU0QsYUFBYUUsV0FBeUI7SUFDcEQsT0FBTyxBQUFDQSxZQUErQkMsU0FBUyxLQUFLQztBQUN2RDtBQU1PLFNBQVNILG9CQUNkQyxXQUF5QjtJQUV6QixPQUFPLEFBQUNBLFlBQXNDRyxnQkFBZ0IsS0FBS0Q7QUFDckUifQ==
@@ -1,6 +1,6 @@
1
1
  import type { BaseDatabaseAdapter } from '../types';
2
2
  /**
3
- * Reset and re-run all migrations.
3
+ * Run all migration down functions before running up
4
4
  */
5
5
  export declare function migrateRefresh(this: BaseDatabaseAdapter): Promise<void>;
6
6
  //# sourceMappingURL=migrateRefresh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrateRefresh.d.ts","sourceRoot":"","sources":["../../../src/database/migrations/migrateRefresh.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAInD;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,mBAAmB,iBAuC7D"}
1
+ {"version":3,"file":"migrateRefresh.d.ts","sourceRoot":"","sources":["../../../src/database/migrations/migrateRefresh.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAKnD;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,mBAAmB,iBA8F7D"}
@@ -8,19 +8,71 @@ Object.defineProperty(exports, "migrateRefresh", {
8
8
  return migrateRefresh;
9
9
  }
10
10
  });
11
+ const _getMigrations = require("./getMigrations");
11
12
  const _readMigrationFiles = require("./readMigrationFiles");
12
13
  async function migrateRefresh() {
13
14
  const { payload } = this;
14
15
  const migrationFiles = await (0, _readMigrationFiles.readMigrationFiles)({
15
16
  payload
16
17
  });
17
- // Clear all migrations
18
- await payload.delete({
19
- collection: 'payload-migrations',
20
- where: {}
18
+ const { existingMigrations, latestBatch } = await (0, _getMigrations.getMigrations)({
19
+ payload
20
+ });
21
+ const migrationsToRollback = existingMigrations.filter((migration)=>migration.batch === latestBatch && migration.batch !== -1);
22
+ if (!migrationsToRollback?.length) {
23
+ payload.logger.info({
24
+ msg: 'No migrations to rollback.'
25
+ });
26
+ return;
27
+ }
28
+ payload.logger.info({
29
+ msg: `Rolling back batch ${latestBatch} consisting of ${migrationsToRollback.length} migration(s).`
21
30
  });
22
31
  let transactionID;
23
- // Run all migrations
32
+ // Reverse order of migrations to rollback
33
+ migrationsToRollback.reverse();
34
+ for (const migration of migrationsToRollback){
35
+ try {
36
+ const migrationFile = migrationFiles.find((m)=>m.name === migration.name);
37
+ if (!migrationFile) {
38
+ throw new Error(`Migration ${migration.name} not found locally.`);
39
+ }
40
+ payload.logger.info({
41
+ msg: `Migrating down: ${migration.name}`
42
+ });
43
+ const start = Date.now();
44
+ transactionID = await this.beginTransaction();
45
+ await migrationFile.down({
46
+ payload
47
+ });
48
+ payload.logger.info({
49
+ msg: `Migrated down: ${migration.name} (${Date.now() - start}ms)`
50
+ });
51
+ await payload.delete({
52
+ collection: 'payload-migrations',
53
+ req: {
54
+ transactionID
55
+ },
56
+ where: {
57
+ name: {
58
+ equals: migration.name
59
+ }
60
+ }
61
+ });
62
+ } catch (err) {
63
+ await this.rollbackTransaction(transactionID);
64
+ let msg = `Error running migration ${migration.name}. Rolling back.`;
65
+ if (err instanceof Error) {
66
+ msg += ` ${err.message}`;
67
+ }
68
+ payload.logger.error({
69
+ err,
70
+ msg
71
+ });
72
+ throw err;
73
+ }
74
+ }
75
+ // Run all migrate up
24
76
  for (const migration of migrationFiles){
25
77
  payload.logger.info({
26
78
  msg: `Migrating: ${migration.name}`
@@ -49,11 +101,11 @@ async function migrateRefresh() {
49
101
  await this.rollbackTransaction(transactionID);
50
102
  payload.logger.error({
51
103
  err,
52
- msg: `Error running migration ${migration.name}`
104
+ msg: `Error running migration ${migration.name}. Rolling back.`
53
105
  });
54
106
  throw err;
55
107
  }
56
108
  }
57
109
  }
58
110
 
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhYmFzZS9taWdyYXRpb25zL21pZ3JhdGVSZWZyZXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4LCBuby1hd2FpdC1pbi1sb29wICovXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgQmFzZURhdGFiYXNlQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWFkTWlncmF0aW9uRmlsZXMgfSBmcm9tICcuL3JlYWRNaWdyYXRpb25GaWxlcydcblxuLyoqXG4gKiBSZXNldCBhbmQgcmUtcnVuIGFsbCBtaWdyYXRpb25zLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWlncmF0ZVJlZnJlc2godGhpczogQmFzZURhdGFiYXNlQWRhcHRlcikge1xuICBjb25zdCB7IHBheWxvYWQgfSA9IHRoaXNcbiAgY29uc3QgbWlncmF0aW9uRmlsZXMgPSBhd2FpdCByZWFkTWlncmF0aW9uRmlsZXMoeyBwYXlsb2FkIH0pXG5cbiAgLy8gQ2xlYXIgYWxsIG1pZ3JhdGlvbnNcbiAgYXdhaXQgcGF5bG9hZC5kZWxldGUoe1xuICAgIGNvbGxlY3Rpb246ICdwYXlsb2FkLW1pZ3JhdGlvbnMnLFxuICAgIHdoZXJlOiB7fSwgLy8gQWxsIG1pZ3JhdGlvbnNcbiAgfSlcbiAgbGV0IHRyYW5zYWN0aW9uSURcbiAgLy8gUnVuIGFsbCBtaWdyYXRpb25zXG4gIGZvciAoY29uc3QgbWlncmF0aW9uIG9mIG1pZ3JhdGlvbkZpbGVzKSB7XG4gICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogYE1pZ3JhdGluZzogJHttaWdyYXRpb24ubmFtZX1gIH0pXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuICAgICAgdHJhbnNhY3Rpb25JRCA9IGF3YWl0IHRoaXMuYmVnaW5UcmFuc2FjdGlvbigpXG4gICAgICBhd2FpdCBtaWdyYXRpb24udXAoeyBwYXlsb2FkIH0pXG4gICAgICBhd2FpdCBwYXlsb2FkLmNyZWF0ZSh7XG4gICAgICAgIGNvbGxlY3Rpb246ICdwYXlsb2FkLW1pZ3JhdGlvbnMnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgbmFtZTogbWlncmF0aW9uLm5hbWUsXG4gICAgICAgICAgZXhlY3V0ZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcToge1xuICAgICAgICAgIHRyYW5zYWN0aW9uSUQsXG4gICAgICAgIH0gYXMgUGF5bG9hZFJlcXVlc3QsXG4gICAgICB9KVxuICAgICAgYXdhaXQgdGhpcy5jb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklEKVxuXG4gICAgICBwYXlsb2FkLmxvZ2dlci5pbmZvKHsgbXNnOiBgTWlncmF0ZWQ6ICAke21pZ3JhdGlvbi5uYW1lfSAoJHtEYXRlLm5vdygpIC0gc3RhcnR9bXMpYCB9KVxuICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgYXdhaXQgdGhpcy5yb2xsYmFja1RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSUQpXG4gICAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7XG4gICAgICAgIGVycixcbiAgICAgICAgbXNnOiBgRXJyb3IgcnVubmluZyBtaWdyYXRpb24gJHttaWdyYXRpb24ubmFtZX1gLFxuICAgICAgfSlcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbIm1pZ3JhdGVSZWZyZXNoIiwicGF5bG9hZCIsIm1pZ3JhdGlvbkZpbGVzIiwicmVhZE1pZ3JhdGlvbkZpbGVzIiwiZGVsZXRlIiwiY29sbGVjdGlvbiIsIndoZXJlIiwidHJhbnNhY3Rpb25JRCIsIm1pZ3JhdGlvbiIsImxvZ2dlciIsImluZm8iLCJtc2ciLCJuYW1lIiwic3RhcnQiLCJEYXRlIiwibm93IiwiYmVnaW5UcmFuc2FjdGlvbiIsInVwIiwiY3JlYXRlIiwiZGF0YSIsImV4ZWN1dGVkIiwicmVxIiwiY29tbWl0VHJhbnNhY3Rpb24iLCJlcnIiLCJyb2xsYmFja1RyYW5zYWN0aW9uIiwiZXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBLHlEQUF5RDs7OzsrQkFTbkNBOzs7ZUFBQUE7OztvQ0FMYTtBQUs1QixlQUFlQTtJQUNwQixNQUFNLEVBQUVDLE9BQU8sRUFBRSxHQUFHLElBQUk7SUFDeEIsTUFBTUMsaUJBQWlCLE1BQU1DLElBQUFBLHNDQUFrQixFQUFDO1FBQUVGO0lBQVE7SUFFMUQsdUJBQXVCO0lBQ3ZCLE1BQU1BLFFBQVFHLE1BQU0sQ0FBQztRQUNuQkMsWUFBWTtRQUNaQyxPQUFPLENBQUM7SUFDVjtJQUNBLElBQUlDO0lBQ0oscUJBQXFCO0lBQ3JCLEtBQUssTUFBTUMsYUFBYU4sZUFBZ0I7UUFDdENELFFBQVFRLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO1lBQUVDLEtBQUssQ0FBQyxXQUFXLEVBQUVILFVBQVVJLElBQUksQ0FBQyxDQUFDO1FBQUM7UUFDMUQsSUFBSTtZQUNGLE1BQU1DLFFBQVFDLEtBQUtDLEdBQUc7WUFDdEJSLGdCQUFnQixNQUFNLElBQUksQ0FBQ1MsZ0JBQWdCO1lBQzNDLE1BQU1SLFVBQVVTLEVBQUUsQ0FBQztnQkFBRWhCO1lBQVE7WUFDN0IsTUFBTUEsUUFBUWlCLE1BQU0sQ0FBQztnQkFDbkJiLFlBQVk7Z0JBQ1pjLE1BQU07b0JBQ0pQLE1BQU1KLFVBQVVJLElBQUk7b0JBQ3BCUSxVQUFVO2dCQUNaO2dCQUNBQyxLQUFLO29CQUNIZDtnQkFDRjtZQUNGO1lBQ0EsTUFBTSxJQUFJLENBQUNlLGlCQUFpQixDQUFDZjtZQUU3Qk4sUUFBUVEsTUFBTSxDQUFDQyxJQUFJLENBQUM7Z0JBQUVDLEtBQUssQ0FBQyxXQUFXLEVBQUVILFVBQVVJLElBQUksQ0FBQyxFQUFFLEVBQUVFLEtBQUtDLEdBQUcsS0FBS0YsTUFBTSxHQUFHLENBQUM7WUFBQztRQUN0RixFQUFFLE9BQU9VLEtBQWM7WUFDckIsTUFBTSxJQUFJLENBQUNDLG1CQUFtQixDQUFDakI7WUFDL0JOLFFBQVFRLE1BQU0sQ0FBQ2dCLEtBQUssQ0FBQztnQkFDbkJGO2dCQUNBWixLQUFLLENBQUMsd0JBQXdCLEVBQUVILFVBQVVJLElBQUksQ0FBQyxDQUFDO1lBQ2xEO1lBQ0EsTUFBTVc7UUFDUjtJQUNGO0FBQ0YifQ==
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhYmFzZS9taWdyYXRpb25zL21pZ3JhdGVSZWZyZXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4LCBuby1hd2FpdC1pbi1sb29wICovXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgQmFzZURhdGFiYXNlQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuXG5pbXBvcnQgeyBnZXRNaWdyYXRpb25zIH0gZnJvbSAnLi9nZXRNaWdyYXRpb25zJ1xuaW1wb3J0IHsgcmVhZE1pZ3JhdGlvbkZpbGVzIH0gZnJvbSAnLi9yZWFkTWlncmF0aW9uRmlsZXMnXG5cbi8qKlxuICogUnVuIGFsbCBtaWdyYXRpb24gZG93biBmdW5jdGlvbnMgYmVmb3JlIHJ1bm5pbmcgdXBcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1pZ3JhdGVSZWZyZXNoKHRoaXM6IEJhc2VEYXRhYmFzZUFkYXB0ZXIpIHtcbiAgY29uc3QgeyBwYXlsb2FkIH0gPSB0aGlzXG4gIGNvbnN0IG1pZ3JhdGlvbkZpbGVzID0gYXdhaXQgcmVhZE1pZ3JhdGlvbkZpbGVzKHsgcGF5bG9hZCB9KVxuXG4gIGNvbnN0IHsgZXhpc3RpbmdNaWdyYXRpb25zLCBsYXRlc3RCYXRjaCB9ID0gYXdhaXQgZ2V0TWlncmF0aW9ucyh7XG4gICAgcGF5bG9hZCxcbiAgfSlcblxuICBjb25zdCBtaWdyYXRpb25zVG9Sb2xsYmFjayA9IGV4aXN0aW5nTWlncmF0aW9ucy5maWx0ZXIoXG4gICAgKG1pZ3JhdGlvbikgPT4gbWlncmF0aW9uLmJhdGNoID09PSBsYXRlc3RCYXRjaCAmJiBtaWdyYXRpb24uYmF0Y2ggIT09IC0xLFxuICApXG5cbiAgaWYgKCFtaWdyYXRpb25zVG9Sb2xsYmFjaz8ubGVuZ3RoKSB7XG4gICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogJ05vIG1pZ3JhdGlvbnMgdG8gcm9sbGJhY2suJyB9KVxuICAgIHJldHVyblxuICB9XG5cbiAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7XG4gICAgbXNnOiBgUm9sbGluZyBiYWNrIGJhdGNoICR7bGF0ZXN0QmF0Y2h9IGNvbnNpc3Rpbmcgb2YgJHttaWdyYXRpb25zVG9Sb2xsYmFjay5sZW5ndGh9IG1pZ3JhdGlvbihzKS5gLFxuICB9KVxuXG4gIGxldCB0cmFuc2FjdGlvbklEXG5cbiAgLy8gUmV2ZXJzZSBvcmRlciBvZiBtaWdyYXRpb25zIHRvIHJvbGxiYWNrXG4gIG1pZ3JhdGlvbnNUb1JvbGxiYWNrLnJldmVyc2UoKVxuXG4gIGZvciAoY29uc3QgbWlncmF0aW9uIG9mIG1pZ3JhdGlvbnNUb1JvbGxiYWNrKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1pZ3JhdGlvbkZpbGUgPSBtaWdyYXRpb25GaWxlcy5maW5kKChtKSA9PiBtLm5hbWUgPT09IG1pZ3JhdGlvbi5uYW1lKVxuICAgICAgaWYgKCFtaWdyYXRpb25GaWxlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTWlncmF0aW9uICR7bWlncmF0aW9uLm5hbWV9IG5vdCBmb3VuZCBsb2NhbGx5LmApXG4gICAgICB9XG5cbiAgICAgIHBheWxvYWQubG9nZ2VyLmluZm8oeyBtc2c6IGBNaWdyYXRpbmcgZG93bjogJHttaWdyYXRpb24ubmFtZX1gIH0pXG4gICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KClcbiAgICAgIHRyYW5zYWN0aW9uSUQgPSBhd2FpdCB0aGlzLmJlZ2luVHJhbnNhY3Rpb24oKVxuICAgICAgYXdhaXQgbWlncmF0aW9uRmlsZS5kb3duKHsgcGF5bG9hZCB9KVxuICAgICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7XG4gICAgICAgIG1zZzogYE1pZ3JhdGVkIGRvd246ICAke21pZ3JhdGlvbi5uYW1lfSAoJHtEYXRlLm5vdygpIC0gc3RhcnR9bXMpYCxcbiAgICAgIH0pXG4gICAgICBhd2FpdCBwYXlsb2FkLmRlbGV0ZSh7XG4gICAgICAgIGNvbGxlY3Rpb246ICdwYXlsb2FkLW1pZ3JhdGlvbnMnLFxuICAgICAgICByZXE6IHtcbiAgICAgICAgICB0cmFuc2FjdGlvbklELFxuICAgICAgICB9IGFzIFBheWxvYWRSZXF1ZXN0LFxuICAgICAgICB3aGVyZToge1xuICAgICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgIGVxdWFsczogbWlncmF0aW9uLm5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgICBhd2FpdCB0aGlzLnJvbGxiYWNrVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JRClcbiAgICAgIGxldCBtc2cgPSBgRXJyb3IgcnVubmluZyBtaWdyYXRpb24gJHttaWdyYXRpb24ubmFtZX0uIFJvbGxpbmcgYmFjay5gXG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgbXNnICs9IGAgJHtlcnIubWVzc2FnZX1gXG4gICAgICB9XG4gICAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7XG4gICAgICAgIGVycixcbiAgICAgICAgbXNnLFxuICAgICAgfSlcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxuXG4gIC8vIFJ1biBhbGwgbWlncmF0ZSB1cFxuICBmb3IgKGNvbnN0IG1pZ3JhdGlvbiBvZiBtaWdyYXRpb25GaWxlcykge1xuICAgIHBheWxvYWQubG9nZ2VyLmluZm8oeyBtc2c6IGBNaWdyYXRpbmc6ICR7bWlncmF0aW9uLm5hbWV9YCB9KVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KClcbiAgICAgIHRyYW5zYWN0aW9uSUQgPSBhd2FpdCB0aGlzLmJlZ2luVHJhbnNhY3Rpb24oKVxuICAgICAgYXdhaXQgbWlncmF0aW9uLnVwKHsgcGF5bG9hZCB9KVxuICAgICAgYXdhaXQgcGF5bG9hZC5jcmVhdGUoe1xuICAgICAgICBjb2xsZWN0aW9uOiAncGF5bG9hZC1taWdyYXRpb25zJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIG5hbWU6IG1pZ3JhdGlvbi5uYW1lLFxuICAgICAgICAgIGV4ZWN1dGVkOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICByZXE6IHtcbiAgICAgICAgICB0cmFuc2FjdGlvbklELFxuICAgICAgICB9IGFzIFBheWxvYWRSZXF1ZXN0LFxuICAgICAgfSlcbiAgICAgIGF3YWl0IHRoaXMuY29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JRClcblxuICAgICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogYE1pZ3JhdGVkOiAgJHttaWdyYXRpb24ubmFtZX0gKCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zKWAgfSlcbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIGF3YWl0IHRoaXMucm9sbGJhY2tUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklEKVxuICAgICAgcGF5bG9hZC5sb2dnZXIuZXJyb3Ioe1xuICAgICAgICBlcnIsXG4gICAgICAgIG1zZzogYEVycm9yIHJ1bm5pbmcgbWlncmF0aW9uICR7bWlncmF0aW9uLm5hbWV9LiBSb2xsaW5nIGJhY2suYCxcbiAgICAgIH0pXG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJtaWdyYXRlUmVmcmVzaCIsInBheWxvYWQiLCJtaWdyYXRpb25GaWxlcyIsInJlYWRNaWdyYXRpb25GaWxlcyIsImV4aXN0aW5nTWlncmF0aW9ucyIsImxhdGVzdEJhdGNoIiwiZ2V0TWlncmF0aW9ucyIsIm1pZ3JhdGlvbnNUb1JvbGxiYWNrIiwiZmlsdGVyIiwibWlncmF0aW9uIiwiYmF0Y2giLCJsZW5ndGgiLCJsb2dnZXIiLCJpbmZvIiwibXNnIiwidHJhbnNhY3Rpb25JRCIsInJldmVyc2UiLCJtaWdyYXRpb25GaWxlIiwiZmluZCIsIm0iLCJuYW1lIiwiRXJyb3IiLCJzdGFydCIsIkRhdGUiLCJub3ciLCJiZWdpblRyYW5zYWN0aW9uIiwiZG93biIsImRlbGV0ZSIsImNvbGxlY3Rpb24iLCJyZXEiLCJ3aGVyZSIsImVxdWFscyIsImVyciIsInJvbGxiYWNrVHJhbnNhY3Rpb24iLCJtZXNzYWdlIiwiZXJyb3IiLCJ1cCIsImNyZWF0ZSIsImRhdGEiLCJleGVjdXRlZCIsImNvbW1pdFRyYW5zYWN0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7Ozs7K0JBVW5DQTs7O2VBQUFBOzs7K0JBTlE7b0NBQ0s7QUFLNUIsZUFBZUE7SUFDcEIsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBRyxJQUFJO0lBQ3hCLE1BQU1DLGlCQUFpQixNQUFNQyxJQUFBQSxzQ0FBa0IsRUFBQztRQUFFRjtJQUFRO0lBRTFELE1BQU0sRUFBRUcsa0JBQWtCLEVBQUVDLFdBQVcsRUFBRSxHQUFHLE1BQU1DLElBQUFBLDRCQUFhLEVBQUM7UUFDOURMO0lBQ0Y7SUFFQSxNQUFNTSx1QkFBdUJILG1CQUFtQkksTUFBTSxDQUNwRCxDQUFDQyxZQUFjQSxVQUFVQyxLQUFLLEtBQUtMLGVBQWVJLFVBQVVDLEtBQUssS0FBSyxDQUFDO0lBR3pFLElBQUksQ0FBQ0gsc0JBQXNCSSxRQUFRO1FBQ2pDVixRQUFRVyxNQUFNLENBQUNDLElBQUksQ0FBQztZQUFFQyxLQUFLO1FBQTZCO1FBQ3hEO0lBQ0Y7SUFFQWIsUUFBUVcsTUFBTSxDQUFDQyxJQUFJLENBQUM7UUFDbEJDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRVQsWUFBWSxlQUFlLEVBQUVFLHFCQUFxQkksTUFBTSxDQUFDLGNBQWMsQ0FBQztJQUNyRztJQUVBLElBQUlJO0lBRUosMENBQTBDO0lBQzFDUixxQkFBcUJTLE9BQU87SUFFNUIsS0FBSyxNQUFNUCxhQUFhRixxQkFBc0I7UUFDNUMsSUFBSTtZQUNGLE1BQU1VLGdCQUFnQmYsZUFBZWdCLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxJQUFJLEtBQUtYLFVBQVVXLElBQUk7WUFDMUUsSUFBSSxDQUFDSCxlQUFlO2dCQUNsQixNQUFNLElBQUlJLE1BQU0s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
@@ -1,2 +1,2 @@
1
- export declare const migrationTemplate = "\nimport {\n MigrateUpArgs,\n MigrateDownArgs,\n} from \"@payloadcms/db-mongodb\";\n\nexport async function up({ payload }: MigrateUpArgs): Promise<void> {\n // Migration code\n};\n\nexport async function down({ payload }: MigrateUpArgs): Promise<void> {\n // Migration code\n};\n";
1
+ export declare const migrationTemplate = "\nimport {\n MigrateUpArgs,\n MigrateDownArgs,\n} from \"@payloadcms/db-mongodb\";\n\nexport async function up({ payload }: MigrateUpArgs): Promise<void> {\n // Migration code\n};\n\nexport async function down({ payload }: MigrateDownArgs): Promise<void> {\n // Migration code\n};\n";
2
2
  //# sourceMappingURL=migrationTemplate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrationTemplate.d.ts","sourceRoot":"","sources":["../../../src/database/migrations/migrationTemplate.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,iSAa7B,CAAA"}
1
+ {"version":3,"file":"migrationTemplate.d.ts","sourceRoot":"","sources":["../../../src/database/migrations/migrationTemplate.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,mSAa7B,CAAA"}
@@ -18,9 +18,9 @@ export async function up({ payload }: MigrateUpArgs): Promise<void> {
18
18
  // Migration code
19
19
  };
20
20
 
21
- export async function down({ payload }: MigrateUpArgs): Promise<void> {
21
+ export async function down({ payload }: MigrateDownArgs): Promise<void> {
22
22
  // Migration code
23
23
  };
24
24
  `;
25
25
 
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhYmFzZS9taWdyYXRpb25zL21pZ3JhdGlvblRlbXBsYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBtaWdyYXRpb25UZW1wbGF0ZSA9IGBcbmltcG9ydCB7XG4gIE1pZ3JhdGVVcEFyZ3MsXG4gIE1pZ3JhdGVEb3duQXJncyxcbn0gZnJvbSBcIkBwYXlsb2FkY21zL2RiLW1vbmdvZGJcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwKHsgcGF5bG9hZCB9OiBNaWdyYXRlVXBBcmdzKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIE1pZ3JhdGlvbiBjb2RlXG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG93bih7IHBheWxvYWQgfTogTWlncmF0ZVVwQXJncyk6IFByb21pc2U8dm9pZD4ge1xuICAvLyBNaWdyYXRpb24gY29kZVxufTtcbmBcbiJdLCJuYW1lcyI6WyJtaWdyYXRpb25UZW1wbGF0ZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFBYUE7OztlQUFBQTs7O0FBQU4sTUFBTUEsb0JBQW9CLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFhbEMsQ0FBQyJ9
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhYmFzZS9taWdyYXRpb25zL21pZ3JhdGlvblRlbXBsYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBtaWdyYXRpb25UZW1wbGF0ZSA9IGBcbmltcG9ydCB7XG4gIE1pZ3JhdGVVcEFyZ3MsXG4gIE1pZ3JhdGVEb3duQXJncyxcbn0gZnJvbSBcIkBwYXlsb2FkY21zL2RiLW1vbmdvZGJcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwKHsgcGF5bG9hZCB9OiBNaWdyYXRlVXBBcmdzKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIE1pZ3JhdGlvbiBjb2RlXG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG93bih7IHBheWxvYWQgfTogTWlncmF0ZURvd25BcmdzKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIE1pZ3JhdGlvbiBjb2RlXG59O1xuYFxuIl0sIm5hbWVzIjpbIm1pZ3JhdGlvblRlbXBsYXRlIl0sIm1hcHBpbmdzIjoiOzs7OytCQUFhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQWFsQyxDQUFDIn0=
@@ -7,5 +7,7 @@ export { deepCopyObject } from '../utilities/deepCopyObject';
7
7
  export { deepMerge } from '../utilities/deepMerge';
8
8
  export { default as flattenTopLevelFields } from '../utilities/flattenTopLevelFields';
9
9
  export { formatLabels, formatNames, toWords } from '../utilities/formatLabels';
10
+ export { getIDType } from '../utilities/getIDType';
10
11
  export { getTranslation } from '../utilities/getTranslation';
12
+ export { isValidID } from '../utilities/isValidID';
11
13
  //# sourceMappingURL=utilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/exports/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACxF,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAA;AAE5F,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AACrF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA"}
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../src/exports/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACxF,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAA;AAE5F,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AACrF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA"}
@@ -45,8 +45,14 @@ _export(exports, {
45
45
  toWords: function() {
46
46
  return _formatLabels.toWords;
47
47
  },
48
+ getIDType: function() {
49
+ return _getIDType.getIDType;
50
+ },
48
51
  getTranslation: function() {
49
52
  return _getTranslation.getTranslation;
53
+ },
54
+ isValidID: function() {
55
+ return _isValidID.isValidID;
50
56
  }
51
57
  });
52
58
  const _extractTranslations = require("../translations/extractTranslations");
@@ -58,11 +64,13 @@ const _deepCopyObject = require("../utilities/deepCopyObject");
58
64
  const _deepMerge = require("../utilities/deepMerge");
59
65
  const _flattenTopLevelFields = /*#__PURE__*/ _interop_require_default(require("../utilities/flattenTopLevelFields"));
60
66
  const _formatLabels = require("../utilities/formatLabels");
67
+ const _getIDType = require("../utilities/getIDType");
61
68
  const _getTranslation = require("../utilities/getTranslation");
69
+ const _isValidID = require("../utilities/isValidID");
62
70
  function _interop_require_default(obj) {
63
71
  return obj && obj.__esModule ? obj : {
64
72
  default: obj
65
73
  };
66
74
  }
67
75
 
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHBvcnRzL3V0aWxpdGllcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBleHRyYWN0VHJhbnNsYXRpb25zIH0gZnJvbSAnLi4vdHJhbnNsYXRpb25zL2V4dHJhY3RUcmFuc2xhdGlvbnMnXG5leHBvcnQgeyBpMThuSW5pdCB9IGZyb20gJy4uL3RyYW5zbGF0aW9ucy9pbml0J1xuXG5leHBvcnQgeyBjb21iaW5lTWVyZ2UgfSBmcm9tICcuLi91dGlsaXRpZXMvY29tYmluZU1lcmdlJ1xuZXhwb3J0IHsgY29uZmlnVG9KU09OU2NoZW1hLCBlbnRpdHlUb0pTT05TY2hlbWEgfSBmcm9tICcuLi91dGlsaXRpZXMvY29uZmlnVG9KU09OU2NoZW1hJ1xuZXhwb3J0IHsgY3JlYXRlQXJyYXlGcm9tQ29tbWFEZWxpbmVhdGVkIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2NyZWF0ZUFycmF5RnJvbUNvbW1hRGVsaW5lYXRlZCdcblxuZXhwb3J0IHsgZGVlcENvcHlPYmplY3QgfSBmcm9tICcuLi91dGlsaXRpZXMvZGVlcENvcHlPYmplY3QnXG5leHBvcnQgeyBkZWVwTWVyZ2UgfSBmcm9tICcuLi91dGlsaXRpZXMvZGVlcE1lcmdlJ1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmbGF0dGVuVG9wTGV2ZWxGaWVsZHMgfSBmcm9tICcuLi91dGlsaXRpZXMvZmxhdHRlblRvcExldmVsRmllbGRzJ1xuZXhwb3J0IHsgZm9ybWF0TGFiZWxzLCBmb3JtYXROYW1lcywgdG9Xb3JkcyB9IGZyb20gJy4uL3V0aWxpdGllcy9mb3JtYXRMYWJlbHMnXG5leHBvcnQgeyBnZXRUcmFuc2xhdGlvbiB9IGZyb20gJy4uL3V0aWxpdGllcy9nZXRUcmFuc2xhdGlvbidcbiJdLCJuYW1lcyI6WyJleHRyYWN0VHJhbnNsYXRpb25zIiwiaTE4bkluaXQiLCJjb21iaW5lTWVyZ2UiLCJjb25maWdUb0pTT05TY2hlbWEiLCJlbnRpdHlUb0pTT05TY2hlbWEiLCJjcmVhdGVBcnJheUZyb21Db21tYURlbGluZWF0ZWQiLCJkZWVwQ29weU9iamVjdCIsImRlZXBNZXJnZSIsImZsYXR0ZW5Ub3BMZXZlbEZpZWxkcyIsImZvcm1hdExhYmVscyIsImZvcm1hdE5hbWVzIiwidG9Xb3JkcyIsImdldFRyYW5zbGF0aW9uIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUFTQSxtQkFBbUI7ZUFBbkJBLHdDQUFtQjs7SUFDbkJDLFFBQVE7ZUFBUkEsY0FBUTs7SUFFUkMsWUFBWTtlQUFaQSwwQkFBWTs7SUFDWkMsa0JBQWtCO2VBQWxCQSxzQ0FBa0I7O0lBQUVDLGtCQUFrQjtlQUFsQkEsc0NBQWtCOztJQUN0Q0MsOEJBQThCO2VBQTlCQSw4REFBOEI7O0lBRTlCQyxjQUFjO2VBQWRBLDhCQUFjOztJQUNkQyxTQUFTO2VBQVRBLG9CQUFTOztJQUNFQyxxQkFBcUI7ZUFBckJBLDhCQUFxQjs7SUFDaENDLFlBQVk7ZUFBWkEsMEJBQVk7O0lBQUVDLFdBQVc7ZUFBWEEseUJBQVc7O0lBQUVDLE9BQU87ZUFBUEEscUJBQU87O0lBQ2xDQyxjQUFjO2VBQWRBLDhCQUFjOzs7cUNBWGE7c0JBQ1g7OEJBRUk7b0NBQzBCO2dEQUNSO2dDQUVoQjsyQkFDTDs4RUFDdUI7OEJBQ0U7Z0NBQ3BCIn0=
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHBvcnRzL3V0aWxpdGllcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBleHRyYWN0VHJhbnNsYXRpb25zIH0gZnJvbSAnLi4vdHJhbnNsYXRpb25zL2V4dHJhY3RUcmFuc2xhdGlvbnMnXG5leHBvcnQgeyBpMThuSW5pdCB9IGZyb20gJy4uL3RyYW5zbGF0aW9ucy9pbml0J1xuXG5leHBvcnQgeyBjb21iaW5lTWVyZ2UgfSBmcm9tICcuLi91dGlsaXRpZXMvY29tYmluZU1lcmdlJ1xuZXhwb3J0IHsgY29uZmlnVG9KU09OU2NoZW1hLCBlbnRpdHlUb0pTT05TY2hlbWEgfSBmcm9tICcuLi91dGlsaXRpZXMvY29uZmlnVG9KU09OU2NoZW1hJ1xuZXhwb3J0IHsgY3JlYXRlQXJyYXlGcm9tQ29tbWFEZWxpbmVhdGVkIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2NyZWF0ZUFycmF5RnJvbUNvbW1hRGVsaW5lYXRlZCdcblxuZXhwb3J0IHsgZGVlcENvcHlPYmplY3QgfSBmcm9tICcuLi91dGlsaXRpZXMvZGVlcENvcHlPYmplY3QnXG5leHBvcnQgeyBkZWVwTWVyZ2UgfSBmcm9tICcuLi91dGlsaXRpZXMvZGVlcE1lcmdlJ1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmbGF0dGVuVG9wTGV2ZWxGaWVsZHMgfSBmcm9tICcuLi91dGlsaXRpZXMvZmxhdHRlblRvcExldmVsRmllbGRzJ1xuZXhwb3J0IHsgZm9ybWF0TGFiZWxzLCBmb3JtYXROYW1lcywgdG9Xb3JkcyB9IGZyb20gJy4uL3V0aWxpdGllcy9mb3JtYXRMYWJlbHMnXG5leHBvcnQgeyBnZXRJRFR5cGUgfSBmcm9tICcuLi91dGlsaXRpZXMvZ2V0SURUeXBlJ1xuZXhwb3J0IHsgZ2V0VHJhbnNsYXRpb24gfSBmcm9tICcuLi91dGlsaXRpZXMvZ2V0VHJhbnNsYXRpb24nXG5leHBvcnQgeyBpc1ZhbGlkSUQgfSBmcm9tICcuLi91dGlsaXRpZXMvaXNWYWxpZElEJ1xuIl0sIm5hbWVzIjpbImV4dHJhY3RUcmFuc2xhdGlvbnMiLCJpMThuSW5pdCIsImNvbWJpbmVNZXJnZSIsImNvbmZpZ1RvSlNPTlNjaGVtYSIsImVudGl0eVRvSlNPTlNjaGVtYSIsImNyZWF0ZUFycmF5RnJvbUNvbW1hRGVsaW5lYXRlZCIsImRlZXBDb3B5T2JqZWN0IiwiZGVlcE1lcmdlIiwiZmxhdHRlblRvcExldmVsRmllbGRzIiwiZm9ybWF0TGFiZWxzIiwiZm9ybWF0TmFtZXMiLCJ0b1dvcmRzIiwiZ2V0SURUeXBlIiwiZ2V0VHJhbnNsYXRpb24iLCJpc1ZhbGlkSUQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBQVNBLG1CQUFtQjtlQUFuQkEsd0NBQW1COztJQUNuQkMsUUFBUTtlQUFSQSxjQUFROztJQUVSQyxZQUFZO2VBQVpBLDBCQUFZOztJQUNaQyxrQkFBa0I7ZUFBbEJBLHNDQUFrQjs7SUFBRUMsa0JBQWtCO2VBQWxCQSxzQ0FBa0I7O0lBQ3RDQyw4QkFBOEI7ZUFBOUJBLDhEQUE4Qjs7SUFFOUJDLGNBQWM7ZUFBZEEsOEJBQWM7O0lBQ2RDLFNBQVM7ZUFBVEEsb0JBQVM7O0lBQ0VDLHFCQUFxQjtlQUFyQkEsOEJBQXFCOztJQUNoQ0MsWUFBWTtlQUFaQSwwQkFBWTs7SUFBRUMsV0FBVztlQUFYQSx5QkFBVzs7SUFBRUMsT0FBTztlQUFQQSxxQkFBTzs7SUFDbENDLFNBQVM7ZUFBVEEsb0JBQVM7O0lBQ1RDLGNBQWM7ZUFBZEEsOEJBQWM7O0lBQ2RDLFNBQVM7ZUFBVEEsb0JBQVM7OztxQ0Fia0I7c0JBQ1g7OEJBRUk7b0NBQzBCO2dEQUNSO2dDQUVoQjsyQkFDTDs4RUFDdUI7OEJBQ0U7MkJBQ3pCO2dDQUNLOzJCQUNMIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,iBAAiB,EAEjB,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAOvB,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAqD1D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAwBtD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAuB1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAMxD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAsB9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAMtD,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAa/E,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAS9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAetD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAO7E,CAAA;AAuFD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAiB1D,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAmEtE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAmBxD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAmC1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CASxD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAmBzD,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAqBxD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAkBC"}
1
+ {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,iBAAiB,EAEjB,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAOvB,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAqD1D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAwBtD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAuB1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAMxD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAsB9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAMtD,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAa/E,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAS9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAetD,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAO7E,CAAA;AAuFD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAiB1D,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CA8DtE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAmBxD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAmC1D,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CASxD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAmBzD,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAqBxD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAkBC"}
@@ -299,8 +299,8 @@ const upload = (value, options)=>{
299
299
  return options.t('validation:required');
300
300
  }
301
301
  if (!_canUseDOM.default && typeof value !== 'undefined' && value !== null) {
302
- const idField = options.payload.collections[options.relationTo].config.fields.find((field)=>(0, _types.fieldAffectsData)(field) && field.name === 'id');
303
- const type = (0, _getIDType.getIDType)(idField);
302
+ const idField = options?.payload?.collections[options.relationTo]?.config?.fields?.find((field)=>(0, _types.fieldAffectsData)(field) && field.name === 'id');
303
+ const type = (0, _getIDType.getIDType)(idField, options?.payload?.db?.defaultIDType);
304
304
  if (!(0, _isValidID.isValidID)(value, type)) {
305
305
  return options.t('validation:validUploadID');
306
306
  }
@@ -348,12 +348,7 @@ const relationship = async (value, options)=>{
348
348
  }
349
349
  if (requestedID === null) return false;
350
350
  const idField = payload.collections[collection]?.config?.fields?.find((field)=>(0, _types.fieldAffectsData)(field) && field.name === 'id');
351
- let type;
352
- if (idField) {
353
- type = idField.type === 'number' ? 'number' : 'text';
354
- } else {
355
- type = 'ObjectID';
356
- }
351
+ const type = (0, _getIDType.getIDType)(idField, options?.payload?.db?.defaultIDType);
357
352
  return !(0, _isValidID.isValidID)(requestedID, type);
358
353
  });
359
354
  if (invalidRelationships.length > 0) {
@@ -461,4 +456,4 @@ const _default = {
461
456
  upload
462
457
  };
463
458
 
464
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIgfSBmcm9tICcuLi9leHBvcnRzL3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgSlNPTkZpZWxkLFxuICBOdW1iZXJGaWVsZCxcbiAgUG9pbnRGaWVsZCxcbiAgUmFkaW9GaWVsZCxcbiAgUmVsYXRpb25zaGlwRmllbGQsXG4gIFJlbGF0aW9uc2hpcFZhbHVlLFxuICBSaWNoVGV4dEZpZWxkLFxuICBTZWxlY3RGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbiAgVmFsaWRhdGUsXG59IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgY2FuVXNlRE9NIGZyb20gJy4uL3V0aWxpdGllcy9jYW5Vc2VET00nXG5pbXBvcnQgeyBnZXRJRFR5cGUgfSBmcm9tICcuLi91dGlsaXRpZXMvZ2V0SURUeXBlJ1xuaW1wb3J0IHsgaXNWYWxpZElEIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2lzVmFsaWRJRCdcbmltcG9ydCB7IGZpZWxkQWZmZWN0c0RhdGEgfSBmcm9tICcuL2NvbmZpZy90eXBlcydcblxuZXhwb3J0IGNvbnN0IG51bWJlcjogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgTnVtYmVyRmllbGQ+ID0gKFxuICB2YWx1ZTogbnVtYmVyIHwgbnVtYmVyW10sXG4gIHsgaGFzTWFueSwgbWF4LCBtYXhSb3dzLCBtaW4sIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgY29uc3QgdG9WYWxpZGF0ZTogbnVtYmVyW10gPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICBmb3IgKGNvbnN0IHZhbHVlVG9WYWxpZGF0ZSBvZiB0b1ZhbGlkYXRlKSB7XG4gICAgY29uc3QgZmxvYXRWYWx1ZSA9IHBhcnNlRmxvYXQodmFsdWVUb1ZhbGlkYXRlIGFzIHVua25vd24gYXMgc3RyaW5nKVxuICAgIGlmIChcbiAgICAgICh2YWx1ZSAmJiB0eXBlb2YgZmxvYXRWYWx1ZSAhPT0gJ251bWJlcicpIHx8XG4gICAgICAocmVxdWlyZWQgJiYgTnVtYmVyLmlzTmFOKGZsb2F0VmFsdWUpKSB8fFxuICAgICAgKHZhbHVlICYmIE51bWJlci5pc05hTihmbG9hdFZhbHVlKSlcbiAgICApIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmVudGVyTnVtYmVyJylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgJiYgZmxvYXRWYWx1ZSA+IG1heCkge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246Z3JlYXRlclRoYW5NYXgnLCB7IGxhYmVsOiB0KCd2YWx1ZScpLCBtYXgsIHZhbHVlIH0pXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBtaW4gPT09ICdudW1iZXInICYmIGZsb2F0VmFsdWUgPCBtaW4pIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmxlc3NUaGFuTWluJywgeyBsYWJlbDogdCgndmFsdWUnKSwgbWluLCB2YWx1ZSB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1aXJlZCAmJiB0eXBlb2YgZmxvYXRWYWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgICB9XG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgdG9WYWxpZGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgIGlmIChtaW5Sb3dzICYmIHRvVmFsaWRhdGUubGVuZ3RoIDwgbWluUm93cykge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bGVzc1RoYW5NaW4nLCB7XG4gICAgICAgIGxhYmVsOiB0KCdyb3dzJyksXG4gICAgICAgIG1pbjogbWluUm93cyxcbiAgICAgICAgdmFsdWU6IHRvVmFsaWRhdGUubGVuZ3RoLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAobWF4Um93cyAmJiB0b1ZhbGlkYXRlLmxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4Jywge1xuICAgICAgICBsYWJlbDogdCgncm93cycpLFxuICAgICAgICBtYXg6IG1heFJvd3MsXG4gICAgICAgIHZhbHVlOiB0b1ZhbGlkYXRlLmxlbmd0aCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHRleHQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFRleHRGaWVsZD4gPSAoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIHsgbWF4TGVuZ3RoOiBmaWVsZE1heExlbmd0aCwgbWluTGVuZ3RoLCBwYXlsb2FkLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGxldCBtYXhMZW5ndGg6IG51bWJlclxuXG4gIGlmICh0eXBlb2YgcGF5bG9hZD8uY29uZmlnPy5kZWZhdWx0TWF4VGV4dExlbmd0aCA9PT0gJ251bWJlcicpXG4gICAgbWF4TGVuZ3RoID0gcGF5bG9hZC5jb25maWcuZGVmYXVsdE1heFRleHRMZW5ndGhcbiAgaWYgKHR5cGVvZiBmaWVsZE1heExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGZpZWxkTWF4TGVuZ3RoXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZT8ubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCB2YWx1ZT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHBhc3N3b3JkOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBUZXh0RmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcGF5bG9hZCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIHBheWxvYWQ/LmNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKVxuICAgIG1heExlbmd0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5MZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsb25nZXJUaGFuTWluJywgeyBtaW5MZW5ndGggfSlcbiAgfVxuXG4gIGlmIChyZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgZW1haWw6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEVtYWlsRmllbGQ+ID0gKHZhbHVlOiBzdHJpbmcsIHsgcmVxdWlyZWQsIHQgfSkgPT4ge1xuICBpZiAoKHZhbHVlICYmICEvXFxTW15cXHNAXSpAXFxTK1xcLlxcUysvLnRlc3QodmFsdWUpKSB8fCAoIXZhbHVlICYmIHJlcXVpcmVkKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmVtYWlsQWRkcmVzcycpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgdGV4dGFyZWE6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFRleHRhcmVhRmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcGF5bG9hZCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIHBheWxvYWQ/LmNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKVxuICAgIG1heExlbmd0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuICBpZiAodmFsdWUgJiYgbWF4TGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JywgeyBtYXhMZW5ndGggfSlcbiAgfVxuXG4gIGlmICh2YWx1ZSAmJiBtaW5MZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGNvZGU6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIENvZGVGaWVsZD4gPSAodmFsdWU6IHN0cmluZywgeyByZXF1aXJlZCwgdCB9KSA9PiB7XG4gIGlmIChyZXF1aXJlZCAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGpzb246IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEpTT05GaWVsZCAmIHsganNvbkVycm9yPzogc3RyaW5nIH0+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IGpzb25FcnJvciwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKGpzb25FcnJvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZElucHV0JylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBjaGVja2JveDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgQ2hlY2tib3hGaWVsZD4gPSAoXG4gIHZhbHVlOiBib29sZWFuLFxuICB7IHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgaWYgKCh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykgfHwgKHJlcXVpcmVkICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnRydWVPckZhbHNlJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBkYXRlOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBEYXRlRmllbGQ+ID0gKHZhbHVlLCB7IHJlcXVpcmVkLCB0IH0pID0+IHtcbiAgaWYgKHZhbHVlICYmICFpc05hTihEYXRlLnBhcnNlKHZhbHVlLnRvU3RyaW5nKCkpKSkge1xuICAgIC8qIGVzbGludC1kaXNhYmxlLWxpbmUgKi9cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKHZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bm90VmFsaWREYXRlJywgeyB2YWx1ZSB9KVxuICB9XG5cbiAgaWYgKHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHJpY2hUZXh0OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBSaWNoVGV4dEZpZWxkLCBSaWNoVGV4dEZpZWxkPiA9IGFzeW5jIChcbiAgdmFsdWUsXG4gIG9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgZWRpdG9yOiBSaWNoVGV4dEFkYXB0ZXIgPSBvcHRpb25zPy5lZGl0b3JcblxuICByZXR1cm4gYXdhaXQgZWRpdG9yLnZhbGlkYXRlKHZhbHVlLCBvcHRpb25zKVxufVxuXG5jb25zdCB2YWxpZGF0ZUZpbHRlck9wdGlvbnM6IFZhbGlkYXRlID0gYXN5bmMgKFxuICB2YWx1ZSxcbiAgeyBpZCwgZGF0YSwgZmlsdGVyT3B0aW9ucywgcGF5bG9hZCwgcmVsYXRpb25Ubywgc2libGluZ0RhdGEsIHQsIHVzZXIgfSxcbikgPT4ge1xuICBpZiAoIWNhblVzZURPTSAmJiB0eXBlb2YgZmlsdGVyT3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUpIHtcbiAgICBjb25zdCBvcHRpb25zOiB7XG4gICAgICBbY29sbGVjdGlvbjogc3RyaW5nXTogKG51bWJlciB8IHN0cmluZylbXVxuICAgIH0gPSB7fVxuXG4gICAgY29uc3QgY29sbGVjdGlvbnMgPSB0eXBlb2YgcmVsYXRpb25UbyA9PT0gJ3N0cmluZycgPyBbcmVsYXRpb25Ub10gOiByZWxhdGlvblRvXG4gICAgY29uc3QgdmFsdWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV1cblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgY29sbGVjdGlvbnMubWFwKGFzeW5jIChjb2xsZWN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbkZpbHRlciA9XG4gICAgICAgICAgdHlwZW9mIGZpbHRlck9wdGlvbnMgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgID8gYXdhaXQgZmlsdGVyT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgICByZWxhdGlvblRvOiBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhLFxuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IGZpbHRlck9wdGlvbnNcblxuICAgICAgICBjb25zdCB2YWx1ZUlEczogKG51bWJlciB8IHN0cmluZylbXSA9IFtdXG5cbiAgICAgICAgdmFsdWVzLmZvckVhY2goKHZhbCkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnZhbHVlKSB7XG4gICAgICAgICAgICB2YWx1ZUlEcy5wdXNoKHZhbC52YWx1ZSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHZhbHVlSURzLnB1c2godmFsKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYXlsb2FkLmZpbmQoe1xuICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgZGVwdGg6IDAsXG4gICAgICAgICAgbGltaXQ6IDAsXG4gICAgICAgICAgcGFnaW5hdGlvbjogZmFsc2UsXG4gICAgICAgICAgd2hlcmU6IHtcbiAgICAgICAgICAgIGFuZDogW3sgaWQ6IHsgaW46IHZhbHVlSURzIH0gfSwgb3B0aW9uRmlsdGVyXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuXG4gICAgICAgIG9wdGlvbnNbY29sbGVjdGlvbl0gPSByZXN1bHQuZG9jcy5tYXAoKGRvYykgPT4gZG9jLmlkKVxuICAgICAgfSksXG4gICAgKVxuXG4gICAgY29uc3QgaW52YWxpZFJlbGF0aW9uc2hpcHMgPSB2YWx1ZXMuZmlsdGVyKCh2YWwpID0+IHtcbiAgICAgIGxldCBjb2xsZWN0aW9uOiBzdHJpbmdcbiAgICAgIGxldCByZXF1ZXN0ZWRJRDogbnVtYmVyIHwgc3RyaW5nXG5cbiAgICAgIGlmICh0eXBlb2YgcmVsYXRpb25UbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHJlbGF0aW9uVG9cblxuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICByZXF1ZXN0ZWRJRCA9IHZhbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbD8ucmVsYXRpb25Ubykge1xuICAgICAgICBjb2xsZWN0aW9uID0gdmFsLnJlbGF0aW9uVG9cbiAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWwudmFsdWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9wdGlvbnNbY29sbGVjdGlvbl0uaW5kZXhPZihyZXF1ZXN0ZWRJRCkgPT09IC0xXG4gICAgfSlcblxuICAgIGlmIChpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gaW52YWxpZFJlbGF0aW9uc2hpcHMucmVkdWNlKChlcnIsIGludmFsaWQsIGkpID0+IHtcbiAgICAgICAgcmV0dXJuIGAke2Vycn0gJHtKU09OLnN0cmluZ2lmeShpbnZhbGlkKX0ke1xuICAgICAgICAgIGludmFsaWRSZWxhdGlvbnNoaXBzLmxlbmd0aCA9PT0gaSArIDEgPyAnLCcgOiAnJ1xuICAgICAgICB9IGBcbiAgICAgIH0sIHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbnMnKSkgYXMgc3RyaW5nXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCB1cGxvYWQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFVwbG9hZEZpZWxkPiA9ICh2YWx1ZTogc3RyaW5nLCBvcHRpb25zKSA9PiB7XG4gIGlmICghdmFsdWUgJiYgb3B0aW9ucy5yZXF1aXJlZCkge1xuICAgIHJldHVybiBvcHRpb25zLnQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKCFjYW5Vc2VET00gJiYgdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGlkRmllbGQgPSBvcHRpb25zLnBheWxvYWQuY29sbGVjdGlvbnNbb3B0aW9ucy5yZWxhdGlvblRvXS5jb25maWcuZmllbGRzLmZpbmQoXG4gICAgICAoZmllbGQpID0+IGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICAgKVxuICAgIGNvbnN0IHR5cGUgPSBnZXRJRFR5cGUoaWRGaWVsZClcblxuICAgIGlmICghaXNWYWxpZElEKHZhbHVlLCB0eXBlKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMudCgndmFsaWRhdGlvbjp2YWxpZFVwbG9hZElEJylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVGaWx0ZXJPcHRpb25zKHZhbHVlLCBvcHRpb25zKVxufVxuXG5leHBvcnQgY29uc3QgcmVsYXRpb25zaGlwOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBSZWxhdGlvbnNoaXBGaWVsZD4gPSBhc3luYyAoXG4gIHZhbHVlOiBSZWxhdGlvbnNoaXBWYWx1ZSxcbiAgb3B0aW9ucyxcbikgPT4ge1xuICBjb25zdCB7IG1heFJvd3MsIG1pblJvd3MsIHBheWxvYWQsIHJlbGF0aW9uVG8sIHJlcXVpcmVkLCB0IH0gPSBvcHRpb25zXG5cbiAgaWYgKCghdmFsdWUgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkpICYmIHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMudCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAobWluUm93cyAmJiB2YWx1ZS5sZW5ndGggPCBtaW5Sb3dzKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsZXNzVGhhbk1pbicsIHsgbGFiZWw6IHQoJ3Jvd3MnKSwgbWluOiBtaW5Sb3dzLCB2YWx1ZTogdmFsdWUubGVuZ3RoIH0pXG4gICAgfVxuXG4gICAgaWYgKG1heFJvd3MgJiYgdmFsdWUubGVuZ3RoID4gbWF4Um93cykge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246Z3JlYXRlclRoYW5NYXgnLCB7IGxhYmVsOiB0KCdyb3dzJyksIG1heDogbWF4Um93cywgdmFsdWU6IHZhbHVlLmxlbmd0aCB9KVxuICAgIH1cbiAgfVxuXG4gIGlmICghY2FuVXNlRE9NICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gICAgY29uc3QgaW52YWxpZFJlbGF0aW9uc2hpcHMgPSB2YWx1ZXMuZmlsdGVyKCh2YWwpID0+IHtcbiAgICAgIGxldCBjb2xsZWN0aW9uOiBzdHJpbmdcbiAgICAgIGxldCByZXF1ZXN0ZWRJRFxuXG4gICAgICBpZiAodHlwZW9mIHJlbGF0aW9uVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbGxlY3Rpb24gPSByZWxhdGlvblRvXG5cbiAgICAgICAgLy8gY3VzdG9tIGlkXG4gICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICByZXF1ZXN0ZWRJRCA9IHZhbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbD8ucmVsYXRpb25Ubykge1xuICAgICAgICBjb2xsZWN0aW9uID0gdmFsLnJlbGF0aW9uVG9cbiAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWwudmFsdWVcbiAgICAgIH1cblxuICAgICAgaWYgKHJlcXVlc3RlZElEID09PSBudWxsKSByZXR1cm4gZmFsc2VcblxuICAgICAgY29uc3QgaWRGaWVsZCA9IHBheWxvYWQuY29sbGVjdGlvbnNbY29sbGVjdGlvbl0/LmNvbmZpZz8uZmllbGRzPy5maW5kKFxuICAgICAgICAoZmllbGQpID0+IGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICAgICApXG4gICAgICBsZXQgdHlwZVxuXG4gICAgICBpZiAoaWRGaWVsZCkge1xuICAgICAgICB0eXBlID0gaWRGaWVsZC50eXBlID09PSAnbnVtYmVyJyA/ICdudW1iZXInIDogJ3RleHQnXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0eXBlID0gJ09iamVjdElEJ1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gIWlzVmFsaWRJRChyZXF1ZXN0ZWRJRCwgdHlwZSlcbiAgICB9KVxuXG4gICAgaWYgKGludmFsaWRSZWxhdGlvbnNoaXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBgVGhpcyBmaWVsZCBoYXMgdGhlIGZvbGxvd2luZyBpbnZhbGlkIHNlbGVjdGlvbnM6ICR7aW52YWxpZFJlbGF0aW9uc2hpcHNcbiAgICAgICAgLm1hcCgoZXJyLCBpbnZhbGlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGAke2Vycn0gJHtKU09OLnN0cmluZ2lmeShpbnZhbGlkKX1gXG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKCcsICcpfWBcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVGaWx0ZXJPcHRpb25zKHZhbHVlLCBvcHRpb25zKVxufVxuXG5leHBvcnQgY29uc3QgYXJyYXk6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEFycmF5RmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAgeyBtYXhSb3dzLCBtaW5Sb3dzLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGNvbnN0IGFycmF5TGVuZ3RoID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5sZW5ndGggOiAwXG5cbiAgaWYgKG1pblJvd3MgJiYgYXJyYXlMZW5ndGggPCBtaW5Sb3dzKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNBdExlYXN0JywgeyBjb3VudDogbWluUm93cywgbGFiZWw6IHQoJ3Jvd3MnKSB9KVxuICB9XG5cbiAgaWYgKG1heFJvd3MgJiYgYXJyYXlMZW5ndGggPiBtYXhSb3dzKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNOb01vcmVUaGFuJywgeyBjb3VudDogbWF4Um93cywgbGFiZWw6IHQoJ3Jvd3MnKSB9KVxuICB9XG5cbiAgaWYgKCFhcnJheUxlbmd0aCAmJiByZXF1aXJlZCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzQXRMZWFzdCcsIHsgY291bnQ6IDEsIGxhYmVsOiB0KCdyb3cnKSB9KVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHNlbGVjdDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgU2VsZWN0RmllbGQ+ID0gKFxuICB2YWx1ZSxcbiAgeyBoYXNNYW55LCBvcHRpb25zLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGlmIChcbiAgICBBcnJheS5pc0FycmF5KHZhbHVlKSAmJlxuICAgIHZhbHVlLnNvbWUoXG4gICAgICAoaW5wdXQpID0+XG4gICAgICAgICFvcHRpb25zLnNvbWUoXG4gICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uID09PSBpbnB1dCB8fCAodHlwZW9mIG9wdGlvbiAhPT0gJ3N0cmluZycgJiYgb3B0aW9uPy52YWx1ZSA9PT0gaW5wdXQpLFxuICAgICAgICApLFxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbicpXG4gIH1cblxuICBpZiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJlxuICAgICFvcHRpb25zLnNvbWUoXG4gICAgICAob3B0aW9uKSA9PiBvcHRpb24gPT09IHZhbHVlIHx8ICh0eXBlb2Ygb3B0aW9uICE9PSAnc3RyaW5nJyAmJiBvcHRpb24udmFsdWUgPT09IHZhbHVlKSxcbiAgICApXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb24nKVxuICB9XG5cbiAgaWYgKFxuICAgIHJlcXVpcmVkICYmXG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgICAoaGFzTWFueSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiAodmFsdWUgYXMgW10pPy5sZW5ndGggPT09IDApKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgcmFkaW86IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFJhZGlvRmllbGQ+ID0gKHZhbHVlLCB7IG9wdGlvbnMsIHJlcXVpcmVkLCB0IH0pID0+IHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgY29uc3QgdmFsdWVNYXRjaGVzT3B0aW9uID0gb3B0aW9ucy5zb21lKFxuICAgICAgKG9wdGlvbikgPT4gb3B0aW9uID09PSB2YWx1ZSB8fCAodHlwZW9mIG9wdGlvbiAhPT0gJ3N0cmluZycgJiYgb3B0aW9uLnZhbHVlID09PSB2YWx1ZSksXG4gICAgKVxuICAgIHJldHVybiB2YWx1ZU1hdGNoZXNPcHRpb24gfHwgdCgndmFsaWRhdGlvbjppbnZhbGlkU2VsZWN0aW9uJylcbiAgfVxuXG4gIHJldHVybiByZXF1aXJlZCA/IHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKSA6IHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGJsb2NrczogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgQmxvY2tGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IG1heFJvd3MsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLmxlbmd0aCA6IDBcblxuICBpZiAobWluUm93cyAmJiBhcnJheUxlbmd0aCA8IG1pblJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnLCB7IGNvdW50OiBtaW5Sb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAobWF4Um93cyAmJiBhcnJheUxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc05vTW9yZVRoYW4nLCB7IGNvdW50OiBtYXhSb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAoIWFycmF5TGVuZ3RoICYmIHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNBdExlYXN0JywgeyBjb3VudDogMSwgbGFiZWw6IHQoJ3JvdycpIH0pXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgcG9pbnQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFBvaW50RmllbGQ+ID0gKFxuICB2YWx1ZTogW251bWJlciB8IHN0cmluZywgbnVtYmVyIHwgc3RyaW5nXSA9IFsnJywgJyddLFxuICB7IHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgY29uc3QgbG5nID0gcGFyc2VGbG9hdChTdHJpbmcodmFsdWVbMF0pKVxuICBjb25zdCBsYXQgPSBwYXJzZUZsb2F0KFN0cmluZyh2YWx1ZVsxXSkpXG4gIGlmIChcbiAgICByZXF1aXJlZCAmJlxuICAgICgodmFsdWVbMF0gJiYgdmFsdWVbMV0gJiYgdHlwZW9mIGxuZyAhPT0gJ251bWJlcicgJiYgdHlwZW9mIGxhdCAhPT0gJ251bWJlcicpIHx8XG4gICAgICBOdW1iZXIuaXNOYU4obG5nKSB8fFxuICAgICAgTnVtYmVyLmlzTmFOKGxhdCkgfHxcbiAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggIT09IDIpKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc1R3b051bWJlcnMnKVxuICB9XG5cbiAgaWYgKCh2YWx1ZVsxXSAmJiBOdW1iZXIuaXNOYU4obG5nKSkgfHwgKHZhbHVlWzBdICYmIE51bWJlci5pc05hTihsYXQpKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmludmFsaWRJbnB1dCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGFycmF5LFxuICBibG9ja3MsXG4gIGNoZWNrYm94LFxuICBjb2RlLFxuICBkYXRlLFxuICBlbWFpbCxcbiAganNvbixcbiAgbnVtYmVyLFxuICBwYXNzd29yZCxcbiAgcG9pbnQsXG4gIHJhZGlvLFxuICByZWxhdGlvbnNoaXAsXG4gIHJpY2hUZXh0LFxuICBzZWxlY3QsXG4gIHRleHQsXG4gIHRleHRhcmVhLFxuICB1cGxvYWQsXG59XG4iXSwibmFtZXMiOlsibnVtYmVyIiwidGV4dCIsInBhc3N3b3JkIiwiZW1haWwiLCJ0ZXh0YXJlYSIsImNvZGUiLCJqc29uIiwiY2hlY2tib3giLCJkYXRlIiwicmljaFRleHQiLCJ1cGxvYWQiLCJyZWxhdGlvbnNoaXAiLCJhcnJheSIsInNlbGVjdCIsInJhZGlvIiwiYmxvY2tzIiwicG9pbnQiLCJ2YWx1ZSIsImhhc01hbnkiLCJtYXgiLCJtYXhSb3dzIiwibWluIiwibWluUm93cyIsInJlcXVpcmVkIiwidCIsInRvVmFsaWRhdGUiLCJBcnJheSIsImlzQXJyYXkiLCJ2YWx1ZVRvVmFsaWRhdGUiLCJmbG9hdFZhbHVlIiwicGFyc2VGbG9hdCIsIk51bWJlciIsImlzTmFOIiwibGFiZWwiLCJsZW5ndGgiLCJtYXhMZW5ndGgiLCJmaWVsZE1heExlbmd0aCIsIm1pbkxlbmd0aCIsInBheWxvYWQiLCJjb25maWciLCJkZWZhdWx0TWF4VGV4dExlbmd0aCIsInRlc3QiLCJ1bmRlZmluZWQiLCJqc29uRXJyb3IiLCJEYXRlIiwicGFyc2UiLCJ0b1N0cmluZyIsIm9wdGlvbnMiLCJlZGl0b3IiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlRmlsdGVyT3B0aW9ucyIsImlkIiwiZGF0YSIsImZpbHRlck9wdGlvbnMiLCJyZWxhdGlvblRvIiwic2libGluZ0RhdGEiLCJ1c2VyIiwiY2FuVXNlRE9NIiwiY29sbGVjdGlvbnMiLCJ2YWx1ZXMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwiY29sbGVjdGlvbiIsIm9wdGlvbkZpbHRlciIsInZhbHVlSURzIiwiZm9yRWFjaCIsInZhbCIsInB1c2giLCJyZXN1bHQiLCJmaW5kIiwiZGVwdGgiLCJsaW1pdCIsInBhZ2luYXRpb24iLCJ3aGVyZSIsImFuZCIsImluIiwiZG9jcyIsImRvYyIsImludmFsaWRSZWxhdGlvbnNoaXBzIiwiZmlsdGVyIiwicmVxdWVzdGVkSUQiLCJpbmRleE9mIiwicmVkdWNlIiwiZXJyIiwiaW52YWxpZCIsImkiLCJKU09OIiwic3RyaW5naWZ5IiwiaWRGaWVsZCIsImZpZWxkcyIsImZpZWxkIiwiZmllbGRBZmZlY3RzRGF0YSIsIm5hbWUiLCJ0eXBlIiwiZ2V0SURUeXBlIiwiaXNWYWxpZElEIiwiam9pbiIsImFycmF5TGVuZ3RoIiwiY291bnQiLCJzb21lIiwiaW5wdXQiLCJvcHRpb24iLCJ2YWx1ZU1hdGNoZXNPcHRpb24iLCJsbmciLCJTdHJpbmciLCJsYXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBMkJhQSxNQUFNO2VBQU5BOztJQXVEQUMsSUFBSTtlQUFKQTs7SUEwQkFDLFFBQVE7ZUFBUkE7O0lBeUJBQyxLQUFLO2VBQUxBOztJQVFBQyxRQUFRO2VBQVJBOztJQXdCQUMsSUFBSTtlQUFKQTs7SUFRQUMsSUFBSTtlQUFKQTs7SUFlQUMsUUFBUTtlQUFSQTs7SUFXQUMsSUFBSTtlQUFKQTs7SUFpQkFDLFFBQVE7ZUFBUkE7O0lBOEZBQyxNQUFNO2VBQU5BOztJQW1CQUMsWUFBWTtlQUFaQTs7SUFxRUFDLEtBQUs7ZUFBTEE7O0lBcUJBQyxNQUFNO2VBQU5BOztJQXFDQUMsS0FBSztlQUFMQTs7SUFXQUMsTUFBTTtlQUFOQTs7SUFxQkFDLEtBQUs7ZUFBTEE7O0lBdUJiLE9Ba0JDO2VBbEJEOzs7a0VBemVzQjsyQkFDSTsyQkFDQTt1QkFDTzs7Ozs7O0FBRTFCLE1BQU1oQixTQUFrRCxDQUM3RGlCLE9BQ0EsRUFBRUMsT0FBTyxFQUFFQyxHQUFHLEVBQUVDLE9BQU8sRUFBRUMsR0FBRyxFQUFFQyxPQUFPLEVBQUVDLFFBQVEsRUFBRUMsQ0FBQyxFQUFFO0lBRXBELE1BQU1DLGFBQXVCQyxNQUFNQyxPQUFPLENBQUNWLFNBQVNBLFFBQVE7UUFBQ0E7S0FBTTtJQUVuRSxnREFBZ0Q7SUFDaEQsS0FBSyxNQUFNVyxtQkFBbUJILFdBQVk7UUFDeEMsTUFBTUksYUFBYUMsV0FBV0Y7UUFDOUIsSUFDRSxBQUFDWCxTQUFTLE9BQU9ZLGVBQWUsWUFDL0JOLFlBQVlRLE9BQU9DLEtBQUssQ0FBQ0gsZUFDekJaLFNBQVNjLE9BQU9DLEtBQUssQ0FBQ0gsYUFDdkI7WUFDQSxPQUFPTCxFQUFFO1FBQ1g7UUFFQSxJQUFJLE9B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
459
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSaWNoVGV4dEFkYXB0ZXIgfSBmcm9tICcuLi9leHBvcnRzL3R5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgSlNPTkZpZWxkLFxuICBOdW1iZXJGaWVsZCxcbiAgUG9pbnRGaWVsZCxcbiAgUmFkaW9GaWVsZCxcbiAgUmVsYXRpb25zaGlwRmllbGQsXG4gIFJlbGF0aW9uc2hpcFZhbHVlLFxuICBSaWNoVGV4dEZpZWxkLFxuICBTZWxlY3RGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbiAgVmFsaWRhdGUsXG59IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgY2FuVXNlRE9NIGZyb20gJy4uL3V0aWxpdGllcy9jYW5Vc2VET00nXG5pbXBvcnQgeyBnZXRJRFR5cGUgfSBmcm9tICcuLi91dGlsaXRpZXMvZ2V0SURUeXBlJ1xuaW1wb3J0IHsgaXNWYWxpZElEIH0gZnJvbSAnLi4vdXRpbGl0aWVzL2lzVmFsaWRJRCdcbmltcG9ydCB7IGZpZWxkQWZmZWN0c0RhdGEgfSBmcm9tICcuL2NvbmZpZy90eXBlcydcblxuZXhwb3J0IGNvbnN0IG51bWJlcjogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgTnVtYmVyRmllbGQ+ID0gKFxuICB2YWx1ZTogbnVtYmVyIHwgbnVtYmVyW10sXG4gIHsgaGFzTWFueSwgbWF4LCBtYXhSb3dzLCBtaW4sIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgY29uc3QgdG9WYWxpZGF0ZTogbnVtYmVyW10gPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICBmb3IgKGNvbnN0IHZhbHVlVG9WYWxpZGF0ZSBvZiB0b1ZhbGlkYXRlKSB7XG4gICAgY29uc3QgZmxvYXRWYWx1ZSA9IHBhcnNlRmxvYXQodmFsdWVUb1ZhbGlkYXRlIGFzIHVua25vd24gYXMgc3RyaW5nKVxuICAgIGlmIChcbiAgICAgICh2YWx1ZSAmJiB0eXBlb2YgZmxvYXRWYWx1ZSAhPT0gJ251bWJlcicpIHx8XG4gICAgICAocmVxdWlyZWQgJiYgTnVtYmVyLmlzTmFOKGZsb2F0VmFsdWUpKSB8fFxuICAgICAgKHZhbHVlICYmIE51bWJlci5pc05hTihmbG9hdFZhbHVlKSlcbiAgICApIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmVudGVyTnVtYmVyJylcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgJiYgZmxvYXRWYWx1ZSA+IG1heCkge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246Z3JlYXRlclRoYW5NYXgnLCB7IGxhYmVsOiB0KCd2YWx1ZScpLCBtYXgsIHZhbHVlIH0pXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBtaW4gPT09ICdudW1iZXInICYmIGZsb2F0VmFsdWUgPCBtaW4pIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmxlc3NUaGFuTWluJywgeyBsYWJlbDogdCgndmFsdWUnKSwgbWluLCB2YWx1ZSB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1aXJlZCAmJiB0eXBlb2YgZmxvYXRWYWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgICB9XG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgdG9WYWxpZGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoaGFzTWFueSA9PT0gdHJ1ZSkge1xuICAgIGlmIChtaW5Sb3dzICYmIHRvVmFsaWRhdGUubGVuZ3RoIDwgbWluUm93cykge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bGVzc1RoYW5NaW4nLCB7XG4gICAgICAgIGxhYmVsOiB0KCdyb3dzJyksXG4gICAgICAgIG1pbjogbWluUm93cyxcbiAgICAgICAgdmFsdWU6IHRvVmFsaWRhdGUubGVuZ3RoLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAobWF4Um93cyAmJiB0b1ZhbGlkYXRlLmxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4Jywge1xuICAgICAgICBsYWJlbDogdCgncm93cycpLFxuICAgICAgICBtYXg6IG1heFJvd3MsXG4gICAgICAgIHZhbHVlOiB0b1ZhbGlkYXRlLmxlbmd0aCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHRleHQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFRleHRGaWVsZD4gPSAoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIHsgbWF4TGVuZ3RoOiBmaWVsZE1heExlbmd0aCwgbWluTGVuZ3RoLCBwYXlsb2FkLCByZXF1aXJlZCwgdCB9LFxuKSA9PiB7XG4gIGxldCBtYXhMZW5ndGg6IG51bWJlclxuXG4gIGlmICh0eXBlb2YgcGF5bG9hZD8uY29uZmlnPy5kZWZhdWx0TWF4VGV4dExlbmd0aCA9PT0gJ251bWJlcicpXG4gICAgbWF4TGVuZ3RoID0gcGF5bG9hZC5jb25maWcuZGVmYXVsdE1heFRleHRMZW5ndGhcbiAgaWYgKHR5cGVvZiBmaWVsZE1heExlbmd0aCA9PT0gJ251bWJlcicpIG1heExlbmd0aCA9IGZpZWxkTWF4TGVuZ3RoXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZT8ubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCB2YWx1ZT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHBhc3N3b3JkOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBUZXh0RmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcGF5bG9hZCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIHBheWxvYWQ/LmNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKVxuICAgIG1heExlbmd0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuXG4gIGlmICh2YWx1ZSAmJiBtYXhMZW5ndGggJiYgdmFsdWUubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnLCB7IG1heExlbmd0aCB9KVxuICB9XG5cbiAgaWYgKHZhbHVlICYmIG1pbkxlbmd0aCAmJiB2YWx1ZS5sZW5ndGggPCBtaW5MZW5ndGgpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsb25nZXJUaGFuTWluJywgeyBtaW5MZW5ndGggfSlcbiAgfVxuXG4gIGlmIChyZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgZW1haWw6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEVtYWlsRmllbGQ+ID0gKHZhbHVlOiBzdHJpbmcsIHsgcmVxdWlyZWQsIHQgfSkgPT4ge1xuICBpZiAoKHZhbHVlICYmICEvXFxTW15cXHNAXSpAXFxTK1xcLlxcUysvLnRlc3QodmFsdWUpKSB8fCAoIXZhbHVlICYmIHJlcXVpcmVkKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOmVtYWlsQWRkcmVzcycpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgdGV4dGFyZWE6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFRleHRhcmVhRmllbGQ+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IG1heExlbmd0aDogZmllbGRNYXhMZW5ndGgsIG1pbkxlbmd0aCwgcGF5bG9hZCwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBsZXQgbWF4TGVuZ3RoOiBudW1iZXJcblxuICBpZiAodHlwZW9mIHBheWxvYWQ/LmNvbmZpZz8uZGVmYXVsdE1heFRleHRMZW5ndGggPT09ICdudW1iZXInKVxuICAgIG1heExlbmd0aCA9IHBheWxvYWQuY29uZmlnLmRlZmF1bHRNYXhUZXh0TGVuZ3RoXG4gIGlmICh0eXBlb2YgZmllbGRNYXhMZW5ndGggPT09ICdudW1iZXInKSBtYXhMZW5ndGggPSBmaWVsZE1heExlbmd0aFxuICBpZiAodmFsdWUgJiYgbWF4TGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JywgeyBtYXhMZW5ndGggfSlcbiAgfVxuXG4gIGlmICh2YWx1ZSAmJiBtaW5MZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWluTGVuZ3RoKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicsIHsgbWluTGVuZ3RoIH0pXG4gIH1cblxuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGNvZGU6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIENvZGVGaWVsZD4gPSAodmFsdWU6IHN0cmluZywgeyByZXF1aXJlZCwgdCB9KSA9PiB7XG4gIGlmIChyZXF1aXJlZCAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGpzb246IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIEpTT05GaWVsZCAmIHsganNvbkVycm9yPzogc3RyaW5nIH0+ID0gKFxuICB2YWx1ZTogc3RyaW5nLFxuICB7IGpzb25FcnJvciwgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBpZiAocmVxdWlyZWQgJiYgIXZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKGpzb25FcnJvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZElucHV0JylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBjaGVja2JveDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgQ2hlY2tib3hGaWVsZD4gPSAoXG4gIHZhbHVlOiBib29sZWFuLFxuICB7IHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgaWYgKCh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykgfHwgKHJlcXVpcmVkICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnRydWVPckZhbHNlJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBkYXRlOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBEYXRlRmllbGQ+ID0gKHZhbHVlLCB7IHJlcXVpcmVkLCB0IH0pID0+IHtcbiAgaWYgKHZhbHVlICYmICFpc05hTihEYXRlLnBhcnNlKHZhbHVlLnRvU3RyaW5nKCkpKSkge1xuICAgIC8qIGVzbGludC1kaXNhYmxlLWxpbmUgKi9cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKHZhbHVlKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246bm90VmFsaWREYXRlJywgeyB2YWx1ZSB9KVxuICB9XG5cbiAgaWYgKHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IHJpY2hUZXh0OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBSaWNoVGV4dEZpZWxkLCBSaWNoVGV4dEZpZWxkPiA9IGFzeW5jIChcbiAgdmFsdWUsXG4gIG9wdGlvbnMsXG4pID0+IHtcbiAgY29uc3QgZWRpdG9yOiBSaWNoVGV4dEFkYXB0ZXIgPSBvcHRpb25zPy5lZGl0b3JcblxuICByZXR1cm4gYXdhaXQgZWRpdG9yLnZhbGlkYXRlKHZhbHVlLCBvcHRpb25zKVxufVxuXG5jb25zdCB2YWxpZGF0ZUZpbHRlck9wdGlvbnM6IFZhbGlkYXRlID0gYXN5bmMgKFxuICB2YWx1ZSxcbiAgeyBpZCwgZGF0YSwgZmlsdGVyT3B0aW9ucywgcGF5bG9hZCwgcmVsYXRpb25Ubywgc2libGluZ0RhdGEsIHQsIHVzZXIgfSxcbikgPT4ge1xuICBpZiAoIWNhblVzZURPTSAmJiB0eXBlb2YgZmlsdGVyT3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUpIHtcbiAgICBjb25zdCBvcHRpb25zOiB7XG4gICAgICBbY29sbGVjdGlvbjogc3RyaW5nXTogKG51bWJlciB8IHN0cmluZylbXVxuICAgIH0gPSB7fVxuXG4gICAgY29uc3QgY29sbGVjdGlvbnMgPSB0eXBlb2YgcmVsYXRpb25UbyA9PT0gJ3N0cmluZycgPyBbcmVsYXRpb25Ub10gOiByZWxhdGlvblRvXG4gICAgY29uc3QgdmFsdWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV1cblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgY29sbGVjdGlvbnMubWFwKGFzeW5jIChjb2xsZWN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbkZpbHRlciA9XG4gICAgICAgICAgdHlwZW9mIGZpbHRlck9wdGlvbnMgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgID8gYXdhaXQgZmlsdGVyT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgICAgICByZWxhdGlvblRvOiBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgIHNpYmxpbmdEYXRhLFxuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IGZpbHRlck9wdGlvbnNcblxuICAgICAgICBjb25zdCB2YWx1ZUlEczogKG51bWJlciB8IHN0cmluZylbXSA9IFtdXG5cbiAgICAgICAgdmFsdWVzLmZvckVhY2goKHZhbCkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWw/LnZhbHVlKSB7XG4gICAgICAgICAgICB2YWx1ZUlEcy5wdXNoKHZhbC52YWx1ZSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHZhbHVlSURzLnB1c2godmFsKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYXlsb2FkLmZpbmQoe1xuICAgICAgICAgIGNvbGxlY3Rpb24sXG4gICAgICAgICAgZGVwdGg6IDAsXG4gICAgICAgICAgbGltaXQ6IDAsXG4gICAgICAgICAgcGFnaW5hdGlvbjogZmFsc2UsXG4gICAgICAgICAgd2hlcmU6IHtcbiAgICAgICAgICAgIGFuZDogW3sgaWQ6IHsgaW46IHZhbHVlSURzIH0gfSwgb3B0aW9uRmlsdGVyXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuXG4gICAgICAgIG9wdGlvbnNbY29sbGVjdGlvbl0gPSByZXN1bHQuZG9jcy5tYXAoKGRvYykgPT4gZG9jLmlkKVxuICAgICAgfSksXG4gICAgKVxuXG4gICAgY29uc3QgaW52YWxpZFJlbGF0aW9uc2hpcHMgPSB2YWx1ZXMuZmlsdGVyKCh2YWwpID0+IHtcbiAgICAgIGxldCBjb2xsZWN0aW9uOiBzdHJpbmdcbiAgICAgIGxldCByZXF1ZXN0ZWRJRDogbnVtYmVyIHwgc3RyaW5nXG5cbiAgICAgIGlmICh0eXBlb2YgcmVsYXRpb25UbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29sbGVjdGlvbiA9IHJlbGF0aW9uVG9cblxuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICByZXF1ZXN0ZWRJRCA9IHZhbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbD8ucmVsYXRpb25Ubykge1xuICAgICAgICBjb2xsZWN0aW9uID0gdmFsLnJlbGF0aW9uVG9cbiAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWwudmFsdWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9wdGlvbnNbY29sbGVjdGlvbl0uaW5kZXhPZihyZXF1ZXN0ZWRJRCkgPT09IC0xXG4gICAgfSlcblxuICAgIGlmIChpbnZhbGlkUmVsYXRpb25zaGlwcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gaW52YWxpZFJlbGF0aW9uc2hpcHMucmVkdWNlKChlcnIsIGludmFsaWQsIGkpID0+IHtcbiAgICAgICAgcmV0dXJuIGAke2Vycn0gJHtKU09OLnN0cmluZ2lmeShpbnZhbGlkKX0ke1xuICAgICAgICAgIGludmFsaWRSZWxhdGlvbnNoaXBzLmxlbmd0aCA9PT0gaSArIDEgPyAnLCcgOiAnJ1xuICAgICAgICB9IGBcbiAgICAgIH0sIHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbnMnKSkgYXMgc3RyaW5nXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCB1cGxvYWQ6IFZhbGlkYXRlPHVua25vd24sIHVua25vd24sIFVwbG9hZEZpZWxkPiA9ICh2YWx1ZTogc3RyaW5nLCBvcHRpb25zKSA9PiB7XG4gIGlmICghdmFsdWUgJiYgb3B0aW9ucy5yZXF1aXJlZCkge1xuICAgIHJldHVybiBvcHRpb25zLnQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKCFjYW5Vc2VET00gJiYgdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGlkRmllbGQgPSBvcHRpb25zPy5wYXlsb2FkPy5jb2xsZWN0aW9uc1tvcHRpb25zLnJlbGF0aW9uVG9dPy5jb25maWc/LmZpZWxkcz8uZmluZChcbiAgICAgIChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJyxcbiAgICApXG4gICAgY29uc3QgdHlwZSA9IGdldElEVHlwZShpZEZpZWxkLCBvcHRpb25zPy5wYXlsb2FkPy5kYj8uZGVmYXVsdElEVHlwZSlcblxuICAgIGlmICghaXNWYWxpZElEKHZhbHVlLCB0eXBlKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMudCgndmFsaWRhdGlvbjp2YWxpZFVwbG9hZElEJylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVGaWx0ZXJPcHRpb25zKHZhbHVlLCBvcHRpb25zKVxufVxuXG5leHBvcnQgY29uc3QgcmVsYXRpb25zaGlwOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBSZWxhdGlvbnNoaXBGaWVsZD4gPSBhc3luYyAoXG4gIHZhbHVlOiBSZWxhdGlvbnNoaXBWYWx1ZSxcbiAgb3B0aW9ucyxcbikgPT4ge1xuICBjb25zdCB7IG1heFJvd3MsIG1pblJvd3MsIHBheWxvYWQsIHJlbGF0aW9uVG8sIHJlcXVpcmVkLCB0IH0gPSBvcHRpb25zXG5cbiAgaWYgKCghdmFsdWUgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkpICYmIHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMudCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAobWluUm93cyAmJiB2YWx1ZS5sZW5ndGggPCBtaW5Sb3dzKSB7XG4gICAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpsZXNzVGhhbk1pbicsIHsgbGFiZWw6IHQoJ3Jvd3MnKSwgbWluOiBtaW5Sb3dzLCB2YWx1ZTogdmFsdWUubGVuZ3RoIH0pXG4gICAgfVxuXG4gICAgaWYgKG1heFJvd3MgJiYgdmFsdWUubGVuZ3RoID4gbWF4Um93cykge1xuICAgICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246Z3JlYXRlclRoYW5NYXgnLCB7IGxhYmVsOiB0KCdyb3dzJyksIG1heDogbWF4Um93cywgdmFsdWU6IHZhbHVlLmxlbmd0aCB9KVxuICAgIH1cbiAgfVxuXG4gIGlmICghY2FuVXNlRE9NICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXVxuXG4gICAgY29uc3QgaW52YWxpZFJlbGF0aW9uc2hpcHMgPSB2YWx1ZXMuZmlsdGVyKCh2YWwpID0+IHtcbiAgICAgIGxldCBjb2xsZWN0aW9uOiBzdHJpbmdcbiAgICAgIGxldCByZXF1ZXN0ZWRJRFxuXG4gICAgICBpZiAodHlwZW9mIHJlbGF0aW9uVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbGxlY3Rpb24gPSByZWxhdGlvblRvXG5cbiAgICAgICAgLy8gY3VzdG9tIGlkXG4gICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICByZXF1ZXN0ZWRJRCA9IHZhbFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlbGF0aW9uVG8pICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbD8ucmVsYXRpb25Ubykge1xuICAgICAgICBjb2xsZWN0aW9uID0gdmFsLnJlbGF0aW9uVG9cbiAgICAgICAgcmVxdWVzdGVkSUQgPSB2YWwudmFsdWVcbiAgICAgIH1cblxuICAgICAgaWYgKHJlcXVlc3RlZElEID09PSBudWxsKSByZXR1cm4gZmFsc2VcblxuICAgICAgY29uc3QgaWRGaWVsZCA9IHBheWxvYWQuY29sbGVjdGlvbnNbY29sbGVjdGlvbl0/LmNvbmZpZz8uZmllbGRzPy5maW5kKFxuICAgICAgICAoZmllbGQpID0+IGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICAgICApXG5cbiAgICAgIGNvbnN0IHR5cGUgPSBnZXRJRFR5cGUoaWRGaWVsZCwgb3B0aW9ucz8ucGF5bG9hZD8uZGI/LmRlZmF1bHRJRFR5cGUpXG5cbiAgICAgIHJldHVybiAhaXNWYWxpZElEKHJlcXVlc3RlZElELCB0eXBlKVxuICAgIH0pXG5cbiAgICBpZiAoaW52YWxpZFJlbGF0aW9uc2hpcHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGBUaGlzIGZpZWxkIGhhcyB0aGUgZm9sbG93aW5nIGludmFsaWQgc2VsZWN0aW9uczogJHtpbnZhbGlkUmVsYXRpb25zaGlwc1xuICAgICAgICAubWFwKChlcnIsIGludmFsaWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gYCR7ZXJyfSAke0pTT04uc3RyaW5naWZ5KGludmFsaWQpfWBcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oJywgJyl9YFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZUZpbHRlck9wdGlvbnModmFsdWUsIG9wdGlvbnMpXG59XG5cbmV4cG9ydCBjb25zdCBhcnJheTogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgQXJyYXlGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IG1heFJvd3MsIG1pblJvd3MsIHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgY29uc3QgYXJyYXlMZW5ndGggPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLmxlbmd0aCA6IDBcblxuICBpZiAobWluUm93cyAmJiBhcnJheUxlbmd0aCA8IG1pblJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnLCB7IGNvdW50OiBtaW5Sb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAobWF4Um93cyAmJiBhcnJheUxlbmd0aCA+IG1heFJvd3MpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc05vTW9yZVRoYW4nLCB7IGNvdW50OiBtYXhSb3dzLCBsYWJlbDogdCgncm93cycpIH0pXG4gIH1cblxuICBpZiAoIWFycmF5TGVuZ3RoICYmIHJlcXVpcmVkKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246cmVxdWlyZXNBdExlYXN0JywgeyBjb3VudDogMSwgbGFiZWw6IHQoJ3JvdycpIH0pXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5leHBvcnQgY29uc3Qgc2VsZWN0OiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBTZWxlY3RGaWVsZD4gPSAoXG4gIHZhbHVlLFxuICB7IGhhc01hbnksIG9wdGlvbnMsIHJlcXVpcmVkLCB0IH0sXG4pID0+IHtcbiAgaWYgKFxuICAgIEFycmF5LmlzQXJyYXkodmFsdWUpICYmXG4gICAgdmFsdWUuc29tZShcbiAgICAgIChpbnB1dCkgPT5cbiAgICAgICAgIW9wdGlvbnMuc29tZShcbiAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24gPT09IGlucHV0IHx8ICh0eXBlb2Ygb3B0aW9uICE9PSAnc3RyaW5nJyAmJiBvcHRpb24/LnZhbHVlID09PSBpbnB1dCksXG4gICAgICAgICksXG4gICAgKVxuICApIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjppbnZhbGlkU2VsZWN0aW9uJylcbiAgfVxuXG4gIGlmIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgIW9wdGlvbnMuc29tZShcbiAgICAgIChvcHRpb24pID0+IG9wdGlvbiA9PT0gdmFsdWUgfHwgKHR5cGVvZiBvcHRpb24gIT09ICdzdHJpbmcnICYmIG9wdGlvbi52YWx1ZSA9PT0gdmFsdWUpLFxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZFNlbGVjdGlvbicpXG4gIH1cblxuICBpZiAoXG4gICAgcmVxdWlyZWQgJiZcbiAgICAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgIChoYXNNYW55ICYmIEFycmF5LmlzQXJyYXkodmFsdWUpICYmICh2YWx1ZSBhcyBbXSk/Lmxlbmd0aCA9PT0gMCkpXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCByYWRpbzogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgUmFkaW9GaWVsZD4gPSAodmFsdWUsIHsgb3B0aW9ucywgcmVxdWlyZWQsIHQgfSkgPT4ge1xuICBpZiAodmFsdWUpIHtcbiAgICBjb25zdCB2YWx1ZU1hdGNoZXNPcHRpb24gPSBvcHRpb25zLnNvbWUoXG4gICAgICAob3B0aW9uKSA9PiBvcHRpb24gPT09IHZhbHVlIHx8ICh0eXBlb2Ygb3B0aW9uICE9PSAnc3RyaW5nJyAmJiBvcHRpb24udmFsdWUgPT09IHZhbHVlKSxcbiAgICApXG4gICAgcmV0dXJuIHZhbHVlTWF0Y2hlc09wdGlvbiB8fCB0KCd2YWxpZGF0aW9uOmludmFsaWRTZWxlY3Rpb24nKVxuICB9XG5cbiAgcmV0dXJuIHJlcXVpcmVkID8gdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpIDogdHJ1ZVxufVxuXG5leHBvcnQgY29uc3QgYmxvY2tzOiBWYWxpZGF0ZTx1bmtub3duLCB1bmtub3duLCBCbG9ja0ZpZWxkPiA9IChcbiAgdmFsdWUsXG4gIHsgbWF4Um93cywgbWluUm93cywgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBjb25zdCBhcnJheUxlbmd0aCA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUubGVuZ3RoIDogMFxuXG4gIGlmIChtaW5Sb3dzICYmIGFycmF5TGVuZ3RoIDwgbWluUm93cykge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzQXRMZWFzdCcsIHsgY291bnQ6IG1pblJvd3MsIGxhYmVsOiB0KCdyb3dzJykgfSlcbiAgfVxuXG4gIGlmIChtYXhSb3dzICYmIGFycmF5TGVuZ3RoID4gbWF4Um93cykge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzTm9Nb3JlVGhhbicsIHsgY291bnQ6IG1heFJvd3MsIGxhYmVsOiB0KCdyb3dzJykgfSlcbiAgfVxuXG4gIGlmICghYXJyYXlMZW5ndGggJiYgcmVxdWlyZWQpIHtcbiAgICByZXR1cm4gdCgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnLCB7IGNvdW50OiAxLCBsYWJlbDogdCgncm93JykgfSlcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBwb2ludDogVmFsaWRhdGU8dW5rbm93biwgdW5rbm93biwgUG9pbnRGaWVsZD4gPSAoXG4gIHZhbHVlOiBbbnVtYmVyIHwgc3RyaW5nLCBudW1iZXIgfCBzdHJpbmddID0gWycnLCAnJ10sXG4gIHsgcmVxdWlyZWQsIHQgfSxcbikgPT4ge1xuICBjb25zdCBsbmcgPSBwYXJzZUZsb2F0KFN0cmluZyh2YWx1ZVswXSkpXG4gIGNvbnN0IGxhdCA9IHBhcnNlRmxvYXQoU3RyaW5nKHZhbHVlWzFdKSlcbiAgaWYgKFxuICAgIHJlcXVpcmVkICYmXG4gICAgKCh2YWx1ZVswXSAmJiB2YWx1ZVsxXSAmJiB0eXBlb2YgbG5nICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgbGF0ICE9PSAnbnVtYmVyJykgfHxcbiAgICAgIE51bWJlci5pc05hTihsbmcpIHx8XG4gICAgICBOdW1iZXIuaXNOYU4obGF0KSB8fFxuICAgICAgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCAhPT0gMikpXG4gICkge1xuICAgIHJldHVybiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVzVHdvTnVtYmVycycpXG4gIH1cblxuICBpZiAoKHZhbHVlWzFdICYmIE51bWJlci5pc05hTihsbmcpKSB8fCAodmFsdWVbMF0gJiYgTnVtYmVyLmlzTmFOKGxhdCkpKSB7XG4gICAgcmV0dXJuIHQoJ3ZhbGlkYXRpb246aW52YWxpZElucHV0JylcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgYXJyYXksXG4gIGJsb2NrcyxcbiAgY2hlY2tib3gsXG4gIGNvZGUsXG4gIGRhdGUsXG4gIGVtYWlsLFxuICBqc29uLFxuICBudW1iZXIsXG4gIHBhc3N3b3JkLFxuICBwb2ludCxcbiAgcmFkaW8sXG4gIHJlbGF0aW9uc2hpcCxcbiAgcmljaFRleHQsXG4gIHNlbGVjdCxcbiAgdGV4dCxcbiAgdGV4dGFyZWEsXG4gIHVwbG9hZCxcbn1cbiJdLCJuYW1lcyI6WyJudW1iZXIiLCJ0ZXh0IiwicGFzc3dvcmQiLCJlbWFpbCIsInRleHRhcmVhIiwiY29kZSIsImpzb24iLCJjaGVja2JveCIsImRhdGUiLCJyaWNoVGV4dCIsInVwbG9hZCIsInJlbGF0aW9uc2hpcCIsImFycmF5Iiwic2VsZWN0IiwicmFkaW8iLCJibG9ja3MiLCJwb2ludCIsInZhbHVlIiwiaGFzTWFueSIsIm1heCIsIm1heFJvd3MiLCJtaW4iLCJtaW5Sb3dzIiwicmVxdWlyZWQiLCJ0IiwidG9WYWxpZGF0ZSIsIkFycmF5IiwiaXNBcnJheSIsInZhbHVlVG9WYWxpZGF0ZSIsImZsb2F0VmFsdWUiLCJwYXJzZUZsb2F0IiwiTnVtYmVyIiwiaXNOYU4iLCJsYWJlbCIsImxlbmd0aCIsIm1heExlbmd0aCIsImZpZWxkTWF4TGVuZ3RoIiwibWluTGVuZ3RoIiwicGF5bG9hZCIsImNvbmZpZyIsImRlZmF1bHRNYXhUZXh0TGVuZ3RoIiwidGVzdCIsInVuZGVmaW5lZCIsImpzb25FcnJvciIsIkRhdGUiLCJwYXJzZSIsInRvU3RyaW5nIiwib3B0aW9ucyIsImVkaXRvciIsInZhbGlkYXRlIiwidmFsaWRhdGVGaWx0ZXJPcHRpb25zIiwiaWQiLCJkYXRhIiwiZmlsdGVyT3B0aW9ucyIsInJlbGF0aW9uVG8iLCJzaWJsaW5nRGF0YSIsInVzZXIiLCJjYW5Vc2VET00iLCJjb2xsZWN0aW9ucyIsInZhbHVlcyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJjb2xsZWN0aW9uIiwib3B0aW9uRmlsdGVyIiwidmFsdWVJRHMiLCJmb3JFYWNoIiwidmFsIiwicHVzaCIsInJlc3VsdCIsImZpbmQiLCJkZXB0aCIsImxpbWl0IiwicGFnaW5hdGlvbiIsIndoZXJlIiwiYW5kIiwiaW4iLCJkb2NzIiwiZG9jIiwiaW52YWxpZFJlbGF0aW9uc2hpcHMiLCJmaWx0ZXIiLCJyZXF1ZXN0ZWRJRCIsImluZGV4T2YiLCJyZWR1Y2UiLCJlcnIiLCJpbnZhbGlkIiwiaSIsIkpTT04iLCJzdHJpbmdpZnkiLCJpZEZpZWxkIiwiZmllbGRzIiwiZmllbGQiLCJmaWVsZEFmZmVjdHNEYXRhIiwibmFtZSIsInR5cGUiLCJnZXRJRFR5cGUiLCJkYiIsImRlZmF1bHRJRFR5cGUiLCJpc1ZhbGlkSUQiLCJqb2luIiwiYXJyYXlMZW5ndGgiLCJjb3VudCIsInNvbWUiLCJpbnB1dCIsIm9wdGlvbiIsInZhbHVlTWF0Y2hlc09wdGlvbiIsImxuZyIsIlN0cmluZyIsImxhdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUEyQmFBLE1BQU07ZUFBTkE7O0lBdURBQyxJQUFJO2VBQUpBOztJQTBCQUMsUUFBUTtlQUFSQTs7SUF5QkFDLEtBQUs7ZUFBTEE7O0lBUUFDLFFBQVE7ZUFBUkE7O0lBd0JBQyxJQUFJO2VBQUpBOztJQVFBQyxJQUFJO2VBQUpBOztJQWVBQyxRQUFRO2VBQVJBOztJQVdBQyxJQUFJO2VBQUpBOztJQWlCQUMsUUFBUTtlQUFSQTs7SUE4RkFDLE1BQU07ZUFBTkE7O0lBbUJBQyxZQUFZO2VBQVpBOztJQWdFQUMsS0FBSztlQUFMQTs7SUFxQkFDLE1BQU07ZUFBTkE7O0lBcUNBQyxLQUFLO2VBQUxBOztJQVdBQyxNQUFNO2VBQU5BOztJQXFCQUMsS0FBSztlQUFMQTs7SUF1QmIsT0FrQkM7ZUFsQkQ7OztrRUFwZXNCOzJCQUNJOzJCQUNBO3VCQUNPOzs7Ozs7QUFFMUIsTUFBTWhCLFNBQWtELENBQzdEaUIsT0FDQSxFQUFFQyxPQUFPLEVBQUVDLEdBQUcsRUFBRUMsT0FBTyxFQUFFQyxHQUFHLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxDQUFDLEVBQUU7SUFFcEQsTUFBTUMsYUFBdUJDLE1BQU1DLE9BQU8sQ0FBQ1YsU0FBU0EsUUFBUTtRQUFDQTtLQUFNO0lBRW5FLGdEQUFnRDtJQUNoRCxLQUFLLE1BQU1XLG1CQUFtQkgsV0FBWTtRQUN4QyxNQUFNSSxhQUFhQyxXQUFXRjtRQUM5QixJQUNFLEFBQUNYLFNBQVMsT0FBT1ksZUFBZSxZQUMvQk4sWUFBWVEsT0FBT0MsS0FBSyxDQUFDSCxlQUN6QlosU0FBU2MsT0FBT0MsS0FBSyxDQUFDSCxhQUN2QjtZQUNBLE9BQU9MLEVBQUU7UUFDWDtRQUVBLElBQUksT0FBT0wsUUFBUSxZQUFZ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
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/globals/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAKrB,QAAA,MAAM,YAAY,uBA0FN,CAAA;AAEZ,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/globals/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AASrB,QAAA,MAAM,YAAY,uBAgFN,CAAA;AAEZ,eAAe,YAAY,CAAA"}