payload-auth 1.6.0 → 1.6.1-canary.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/dist/better-auth/adapter/index.d.ts.map +1 -1
  2. package/dist/better-auth/adapter/index.js +30 -30
  3. package/dist/better-auth/adapter/transform/index.d.ts +8 -7
  4. package/dist/better-auth/adapter/transform/index.d.ts.map +1 -1
  5. package/dist/better-auth/adapter/transform/index.js +2 -2
  6. package/dist/better-auth/adapter/types.d.ts +5 -4
  7. package/dist/better-auth/adapter/types.d.ts.map +1 -1
  8. package/dist/better-auth/adapter/types.js +1 -1
  9. package/dist/better-auth/generated-types.d.ts +21 -0
  10. package/dist/better-auth/generated-types.d.ts.map +1 -1
  11. package/dist/better-auth/generated-types.js +1 -1
  12. package/dist/better-auth/plugin/helpers/get-better-auth-schema.d.ts +14 -17
  13. package/dist/better-auth/plugin/helpers/get-better-auth-schema.d.ts.map +1 -1
  14. package/dist/better-auth/plugin/helpers/get-better-auth-schema.js +51 -33
  15. package/dist/better-auth/plugin/helpers/get-collection.d.ts +11 -36
  16. package/dist/better-auth/plugin/helpers/get-collection.d.ts.map +1 -1
  17. package/dist/better-auth/plugin/helpers/get-collection.js +20 -53
  18. package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts.map +1 -1
  19. package/dist/better-auth/plugin/helpers/prepare-session-data.js +1 -1
  20. package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.d.ts +21 -0
  21. package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.d.ts.map +1 -0
  22. package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.js +62 -0
  23. package/dist/better-auth/plugin/index.d.ts +8 -1
  24. package/dist/better-auth/plugin/index.d.ts.map +1 -1
  25. package/dist/better-auth/plugin/index.js +67 -91
  26. package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.d.ts +13 -0
  27. package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.d.ts.map +1 -0
  28. package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.js +80 -0
  29. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts +2 -2
  30. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts.map +1 -1
  31. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js +6 -16
  32. package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts +2 -2
  33. package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts.map +1 -1
  34. package/dist/better-auth/plugin/lib/build-collections/accounts/index.js +10 -12
  35. package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts +1 -1
  36. package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts.map +1 -1
  37. package/dist/better-auth/plugin/lib/build-collections/api-keys.js +8 -11
  38. package/dist/better-auth/plugin/lib/build-collections/index.d.ts +3 -4
  39. package/dist/better-auth/plugin/lib/build-collections/index.d.ts.map +1 -1
  40. package/dist/better-auth/plugin/lib/build-collections/index.js +15 -28
  41. package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts +1 -1
  42. package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts.map +1 -1
  43. package/dist/better-auth/plugin/lib/build-collections/invitations.js +8 -11
  44. package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts +1 -1
  45. package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts.map +1 -1
  46. package/dist/better-auth/plugin/lib/build-collections/jwks.js +8 -11
  47. package/dist/better-auth/plugin/lib/build-collections/members.d.ts +1 -1
  48. package/dist/better-auth/plugin/lib/build-collections/members.d.ts.map +1 -1
  49. package/dist/better-auth/plugin/lib/build-collections/members.js +8 -10
  50. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts +1 -1
  51. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts.map +1 -1
  52. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.js +8 -11
  53. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts +1 -1
  54. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts.map +1 -1
  55. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.js +8 -11
  56. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts +1 -1
  57. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts.map +1 -1
  58. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.js +7 -9
  59. package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts +1 -1
  60. package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts.map +1 -1
  61. package/dist/better-auth/plugin/lib/build-collections/organizations.js +8 -10
  62. package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts +1 -1
  63. package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts.map +1 -1
  64. package/dist/better-auth/plugin/lib/build-collections/passkeys.js +9 -11
  65. package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts +1 -1
  66. package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts.map +1 -1
  67. package/dist/better-auth/plugin/lib/build-collections/sessions.js +7 -8
  68. package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts +1 -1
  69. package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts.map +1 -1
  70. package/dist/better-auth/plugin/lib/build-collections/sso-providers.js +8 -10
  71. package/dist/better-auth/plugin/lib/build-collections/subscriptions.d.ts +1 -1
  72. package/dist/better-auth/plugin/lib/build-collections/subscriptions.d.ts.map +1 -1
  73. package/dist/better-auth/plugin/lib/build-collections/subscriptions.js +8 -10
  74. package/dist/better-auth/plugin/lib/build-collections/teams.d.ts +1 -1
  75. package/dist/better-auth/plugin/lib/build-collections/teams.d.ts.map +1 -1
  76. package/dist/better-auth/plugin/lib/build-collections/teams.js +8 -11
  77. package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts +1 -1
  78. package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts.map +1 -1
  79. package/dist/better-auth/plugin/lib/build-collections/two-factors.js +8 -11
  80. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts.map +1 -1
  81. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js +4 -11
  82. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.d.ts.map +1 -1
  83. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.js +3 -8
  84. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts.map +1 -1
  85. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.js +5 -15
  86. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.d.ts.map +1 -1
  87. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js +19 -22
  88. package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts +1 -1
  89. package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts.map +1 -1
  90. package/dist/better-auth/plugin/lib/build-collections/users/index.js +9 -15
  91. package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.d.ts +6 -6
  92. package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.d.ts.map +1 -1
  93. package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.js +9 -17
  94. package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.d.ts +2 -2
  95. package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.d.ts.map +1 -1
  96. package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.js +1 -1
  97. package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts +1 -1
  98. package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts.map +1 -1
  99. package/dist/better-auth/plugin/lib/build-collections/verifications.js +8 -11
  100. package/dist/better-auth/plugin/lib/init-better-auth.d.ts +1 -1
  101. package/dist/better-auth/plugin/lib/init-better-auth.d.ts.map +1 -1
  102. package/dist/better-auth/plugin/lib/init-better-auth.js +3 -2
  103. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.d.ts +2 -2
  104. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.d.ts.map +1 -1
  105. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js +4 -4
  106. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts +3 -4
  107. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts.map +1 -1
  108. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js +15 -15
  109. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.d.ts +2 -2
  110. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.d.ts.map +1 -1
  111. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js +8 -8
  112. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.d.ts +2 -2
  113. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.d.ts.map +1 -1
  114. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js +12 -12
  115. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.d.ts +2 -2
  116. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.d.ts.map +1 -1
  117. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.js +4 -4
  118. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.d.ts +2 -2
  119. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.d.ts.map +1 -1
  120. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.js +6 -6
  121. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.d.ts +2 -2
  122. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.d.ts.map +1 -1
  123. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.js +4 -4
  124. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts +3 -4
  125. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts.map +1 -1
  126. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js +4 -4
  127. package/dist/better-auth/plugin/payload/components/passkeys/types.d.ts +2 -2
  128. package/dist/better-auth/plugin/payload/components/passkeys/types.d.ts.map +1 -1
  129. package/dist/better-auth/plugin/payload/components/passkeys/types.js +1 -1
  130. package/dist/better-auth/plugin/types.d.ts +6 -5
  131. package/dist/better-auth/plugin/types.d.ts.map +1 -1
  132. package/dist/better-auth/plugin/types.js +1 -1
  133. package/dist/better-auth/scripts/generate-types.js +15 -1
  134. package/package.json +1 -1
  135. package/dist/better-auth/plugin/helpers/get-collection-schema-map.d.ts +0 -16
  136. package/dist/better-auth/plugin/helpers/get-collection-schema-map.d.ts.map +0 -1
  137. package/dist/better-auth/plugin/helpers/get-collection-schema-map.js +0 -108
  138. package/dist/better-auth/plugin/helpers/get-requst-collection.d.ts +0 -3
  139. package/dist/better-auth/plugin/helpers/get-requst-collection.d.ts.map +0 -1
  140. package/dist/better-auth/plugin/helpers/get-requst-collection.js +0 -14
  141. package/dist/better-auth/plugin/helpers/serialize-cookie.d.ts +0 -105
  142. package/dist/better-auth/plugin/helpers/serialize-cookie.d.ts.map +0 -1
  143. package/dist/better-auth/plugin/helpers/serialize-cookie.js +0 -186
@@ -33,7 +33,7 @@ export const createTransform = (options, enableDebugLogs)=>{
33
33
  * without updating the schema mapping, this function may return incorrect slugs
34
34
  */ function getCollectionSlug(model) {
35
35
  // First try to get the modelName from schema, otherwise fall back to the original model name
36
- const collection = schema[model]?.modelName || model;
36
+ const collection = schema?.[model]?.modelName || model;
37
37
  debugLog([
38
38
  'getCollectionSlug:',
39
39
  {
@@ -664,4 +664,4 @@ export const createTransform = (options, enableDebugLogs)=>{
664
664
  };
665
665
  };
666
666
 
667
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9hZGFwdGVyL3RyYW5zZm9ybS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWVsZEF0dHJpYnV0ZSwgRmllbGRUeXBlLCBnZXRBdXRoVGFibGVzIH0gZnJvbSAnYmV0dGVyLWF1dGgvZGInXG5pbXBvcnQgdHlwZSB7IEJldHRlckF1dGhPcHRpb25zLCBXaGVyZSB9IGZyb20gJ2JldHRlci1hdXRoJ1xuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uU2x1ZywgV2hlcmUgYXMgUGF5bG9hZFdoZXJlIH0gZnJvbSAncGF5bG9hZCdcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVRyYW5zZm9ybSA9IChvcHRpb25zOiBCZXR0ZXJBdXRoT3B0aW9ucywgZW5hYmxlRGVidWdMb2dzOiBib29sZWFuKSA9PiB7XG4gIGNvbnN0IHNjaGVtYSA9IGdldEF1dGhUYWJsZXMob3B0aW9ucylcblxuICBmdW5jdGlvbiBkZWJ1Z0xvZyhtZXNzYWdlOiBhbnlbXSkge1xuICAgIGlmIChlbmFibGVEZWJ1Z0xvZ3MpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBbcGF5bG9hZC1kYi1hZGFwdGVyXWAsIC4uLm1lc3NhZ2UpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgYSBCZXR0ZXJBdXRoIHNjaGVtYSBtb2RlbCBuYW1lIHRvIGl0cyBjb3JyZXNwb25kaW5nIFBheWxvYWQgQ01TIGNvbGxlY3Rpb24gc2x1Zy5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiByZXNvbHZlcyB0aGUgYXBwcm9wcmlhdGUgY29sbGVjdGlvbiBzbHVnIGJ5OlxuICAgKiAxLiBMb29raW5nIHVwIHRoZSBtb2RlbCBpbiB0aGUgQmV0dGVyQXV0aCBzY2hlbWEgdG8gZmluZCBpdHMgY29uZmlndXJlZCBtb2RlbE5hbWVcbiAgICogMi4gRmFsbGluZyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBtb2RlbCBuYW1lIGlmIG5vIG1hcHBpbmcgZXhpc3RzXG4gICAqXG4gICAqIENvbGxlY3Rpb24gc2x1ZyByZXNvbHV0aW9uIGZvbGxvd3MgdGhlc2UgcnVsZXM6XG4gICAqIC0gRm9yIGJhc2UgY29sbGVjdGlvbnM6IFRoZSBzYW5pdGl6ZUJldHRlckF1dGhPcHRpb25zIGZ1bmN0aW9uIGVuc3VyZXMgdGhlIGNvbGxlY3Rpb24gc2x1Z1xuICAgKiAgIGZyb20gcGx1Z2luIG9wdGlvbnMgaXMgc2V0IGFzIHRoZSBtb2RlbCBuYW1lIGluIHRoZSBzY2hlbWFcbiAgICogLSBGb3IgcGx1Z2luczogVGhlIGJldHRlckF1dGhQbHVnaW5TbHVncyBjb25zdGFudCBpcyB1c2VkIGFzIHRoZSBtb2RlbE5hbWVcbiAgICpcbiAgICogQHBhcmFtIG1vZGVsIC0gVGhlIEJldHRlckF1dGggbW9kZWwgbmFtZSB0byByZXNvbHZlXG4gICAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIFBheWxvYWQgQ01TIGNvbGxlY3Rpb24gc2x1Z1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBJZiBzY2hlbWFbJ3VzZXInXS5tb2RlbE5hbWUgaXMgJ3VzZXJzJ1xuICAgKiBnZXRDb2xsZWN0aW9uU2x1ZygndXNlcicpIC8vIFJldHVybnMgJ3VzZXJzJ1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBJZiBtb2RlbCBkb2Vzbid0IGV4aXN0IGluIHNjaGVtYVxuICAgKiBnZXRDb2xsZWN0aW9uU2x1ZygnY3VzdG9tJykgLy8gUmV0dXJucyAnY3VzdG9tJ1xuICAgKlxuICAgKiBAd2FybmluZyBJZiBhIGNvbGxlY3Rpb24gaXMgb3ZlcnJpZGRlbiB1c2luZyB0aGUgY29sbGVjdGlvbk92ZXJyaWRlIG9wdGlvblxuICAgKiB3aXRob3V0IHVwZGF0aW5nIHRoZSBzY2hlbWEgbWFwcGluZywgdGhpcyBmdW5jdGlvbiBtYXkgcmV0dXJuIGluY29ycmVjdCBzbHVnc1xuICAgKi9cbiAgZnVuY3Rpb24gZ2V0Q29sbGVjdGlvblNsdWcobW9kZWw6IHN0cmluZyk6IENvbGxlY3Rpb25TbHVnIHtcbiAgICAvLyBGaXJzdCB0cnkgdG8gZ2V0IHRoZSBtb2RlbE5hbWUgZnJvbSBzY2hlbWEsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gdGhlIG9yaWdpbmFsIG1vZGVsIG5hbWVcbiAgICBjb25zdCBjb2xsZWN0aW9uID0gc2NoZW1hW21vZGVsXT8ubW9kZWxOYW1lIHx8IG1vZGVsXG4gICAgZGVidWdMb2coWydnZXRDb2xsZWN0aW9uU2x1ZzonLCB7IG1vZGVsLCByZXNvbHZlZFNsdWc6IGNvbGxlY3Rpb24gfV0pXG4gICAgcmV0dXJuIGNvbGxlY3Rpb24gYXMgQ29sbGVjdGlvblNsdWdcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIGEgQmV0dGVyQXV0aCBzY2hlbWEgZmllbGQgdG8gaXRzIGNvcnJlc3BvbmRpbmcgUGF5bG9hZCBDTVMgZmllbGQgbmFtZS5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiByZXNvbHZlcyB0aGUgYXBwcm9wcmlhdGUgZmllbGQgbmFtZSBieTpcbiAgICogMS4gUHJlc2VydmluZyAnaWQnIG9yICdfaWQnIGZpZWxkcyBhcy1pcyAoc3BlY2lhbCBjYXNlIGhhbmRsaW5nKVxuICAgKiAyLiBMb29raW5nIHVwIHRoZSBmaWVsZCBpbiB0aGUgQmV0dGVyQXV0aCBzY2hlbWEgdG8gZmluZCBpdHMgY29uZmlndXJlZCBmaWVsZE5hbWVcbiAgICogMy4gRmFsbGluZyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBmaWVsZCBuYW1lIGlmIG5vIG1hcHBpbmcgZXhpc3RzXG4gICAqXG4gICAqIEBwYXJhbSBtb2RlbCAtIFRoZSBCZXR0ZXJBdXRoIG1vZGVsIG5hbWUgY29udGFpbmluZyB0aGUgZmllbGRcbiAgICogQHBhcmFtIGZpZWxkIC0gVGhlIG9yaWdpbmFsIGZpZWxkIG5hbWUgdG8gcmVzb2x2ZVxuICAgKiBAcmV0dXJucyBUaGUgY29ycmVzcG9uZGluZyBQYXlsb2FkIENNUyBmaWVsZCBuYW1lXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIElmIHNjaGVtYVsndXNlciddLmZpZWxkc1snZW1haWwnXS5maWVsZE5hbWUgaXMgJ2VtYWlsQWRkcmVzcydcbiAgICogZ2V0RmllbGROYW1lKCd1c2VyJywgJ2VtYWlsJykgLy8gUmV0dXJucyAnZW1haWxBZGRyZXNzJ1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBTcGVjaWFsIGNhc2UgZm9yIElEIGZpZWxkc1xuICAgKiBnZXRGaWVsZE5hbWUoJ3VzZXInLCAnaWQnKSAvLyBBbHdheXMgcmV0dXJucyAnaWQnXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIElmIGZpZWxkIGRvZXNuJ3QgZXhpc3QgaW4gc2NoZW1hIG9yIGhhcyBubyBmaWVsZE5hbWUgbWFwcGluZ1xuICAgKiBnZXRGaWVsZE5hbWUoJ3VzZXInLCAnY3VzdG9tJykgLy8gUmV0dXJucyAnY3VzdG9tJ1xuICAgKlxuICAgKiBAd2FybmluZyBJZiBhIGZpZWxkTmFtZSBpcyBvdmVycmlkZGVuIGluIHRoZSBwYXlsb2FkIGNvbGxlY3Rpb24gY29uZmlnIHVzaW5nIHRoZSBjb2xsZWN0aW9uT3ZlcnJpZGUgb3B0aW9uXG4gICAqIHdpdGhvdXQgdXBkYXRpbmcgdGhlIHNjaGVtYSBtYXBwaW5nLCB0aGlzIGZ1bmN0aW9uIG1heSByZXR1cm4gaW5jb3JyZWN0IGZpZWxkIG5hbWVzXG4gICAqL1xuICBmdW5jdGlvbiBnZXRGaWVsZE5hbWUobW9kZWw6IHN0cmluZywgZmllbGQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gU3BlY2lhbCBjYXNlOiAnaWQnIG9yICdfaWQnIGlzIGFsd2F5cyBwcmVzZXJ2ZWQgYXMtaXNcbiAgICBpZiAoWydpZCcsICdfaWQnXS5pbmNsdWRlcyhmaWVsZCkpIHtcbiAgICAgIHJldHVybiBmaWVsZFxuICAgIH1cblxuICAgIC8vIExvb2sgdXAgdGhlIGZpZWxkIGluIHRoZSBzY2hlbWFcbiAgICBjb25zdCBmaWVsZERlZmluaXRpb24gPSBzY2hlbWFbbW9kZWxdPy5maWVsZHNbZmllbGRdXG5cbiAgICAvLyBVc2UgdGhlIGNvbmZpZ3VyZWQgZmllbGROYW1lIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0byBvcmlnaW5hbFxuICAgIGNvbnN0IGZpZWxkTmFtZSA9IGZpZWxkRGVmaW5pdGlvbj8uZmllbGROYW1lIHx8IGZpZWxkXG5cbiAgICAvLyBMb2cgdGhlIGZpZWxkIHJlc29sdXRpb24gZm9yIGRlYnVnZ2luZ1xuICAgIGRlYnVnTG9nKFsnZ2V0RmllbGQ6ICcsIHsgbW9kZWwsIG9yaWdpbmFsRmllbGQ6IGZpZWxkLCBmaWVsZE5hbWUgfV0pXG5cbiAgICByZXR1cm4gZmllbGROYW1lXG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIGZpZWxkIGlzIGEgcmVsYXRpb25zaGlwIGZpZWxkIGJ5IGNoZWNraW5nIGZvciBhIHJlZmVyZW5jZXMgcHJvcGVydHkuXG4gICAqXG4gICAqIFJlbGF0aW9uc2hpcCBmaWVsZHMgaW4gdGhlIHNjaGVtYSBoYXZlIGEgJ3JlZmVyZW5jZXMnIHByb3BlcnR5IHRoYXQgcG9pbnRzIHRvIGFub3RoZXIgbW9kZWwuXG4gICAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoaXMgcHJvcGVydHkgZXhpc3RzIHRvIGlkZW50aWZ5IHJlbGF0aW9uc2hpcCBmaWVsZHMuXG4gICAqXG4gICAqIEBwYXJhbSBmaWVsZEtleSAtIFRoZSBrZXkgb2YgdGhlIGZpZWxkIHRvIGNoZWNrIGluIHRoZSBzY2hlbWFcbiAgICogQHBhcmFtIHNjaGVtYUZpZWxkcyAtIE9iamVjdCBjb250YWluaW5nIGFsbCBmaWVsZHMgZnJvbSB0aGUgc2NoZW1hIGZvciBhIHNwZWNpZmljIG1vZGVsXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGZpZWxkIGlzIGEgcmVsYXRpb25zaGlwIGZpZWxkIChoYXMgcmVmZXJlbmNlcyksIGZhbHNlIG90aGVyd2lzZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBJZiBzY2hlbWEudXNlci5maWVsZHMucG9zdHMgaGFzIHsgcmVmZXJlbmNlczoge30gfVxuICAgKiBpc1JlbGF0aW9uc2hpcEZpZWxkKCdwb3N0cycsIHNjaGVtYS51c2VyLmZpZWxkcykgLy8gUmV0dXJucyB0cnVlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIElmIHNjaGVtYS51c2VyLmZpZWxkcy5lbWFpbCBoYXMgbm8gcmVmZXJlbmNlcyBwcm9wZXJ0eVxuICAgKiBpc1JlbGF0aW9uc2hpcEZpZWxkKCdlbWFpbCcsIHNjaGVtYS51c2VyLmZpZWxkcykgLy8gUmV0dXJucyBmYWxzZVxuICAgKi9cbiAgZnVuY3Rpb24gaXNSZWxhdGlvbnNoaXBGaWVsZChmaWVsZEtleTogc3RyaW5nLCBzY2hlbWFGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEZpZWxkQXR0cmlidXRlPEZpZWxkVHlwZT4+KTogYm9vbGVhbiB7XG4gICAgLy8gQSBmaWVsZCBpcyBhIHJlbGF0aW9uc2hpcCBmaWVsZCBpZiBpdCBoYXMgYSAncmVmZXJlbmNlcycgcHJvcGVydHkgZGVmaW5lZFxuICAgIHJldHVybiBzY2hlbWFGaWVsZHNbZmllbGRLZXldPy5yZWZlcmVuY2VzICE9PSB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgdmFsdWUgaXMgYSB2YWxpZCBkYXRlIHN0cmluZyB0aGF0IGNhbiBiZSBwYXJzZWQgaW50byBhIERhdGUgb2JqZWN0LlxuICAgKlxuICAgKiBUaGlzIHV0aWxpdHkgZnVuY3Rpb24gY2hlY2tzIGlmIGEgdmFsdWUgaXMgYSBzdHJpbmcgYW5kIGNhbiBiZSBzdWNjZXNzZnVsbHkgcGFyc2VkXG4gICAqIGludG8gYSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0IHVzaW5nIERhdGUucGFyc2UoKS4gSXQncyB1c2VkIHRvIGlkZW50aWZ5IGRhdGUgZmllbGRzXG4gICAqIGR1cmluZyBkYXRhIHRyYW5zZm9ybWF0aW9uIHByb2Nlc3Nlcy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrIGlmIGl0J3MgYSB2YWxpZCBkYXRlIHN0cmluZ1xuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2YWx1ZSBpcyBhIHN0cmluZyB0aGF0IGNhbiBiZSBwYXJzZWQgYXMgYSBkYXRlLCBmYWxzZSBvdGhlcndpc2VcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gUmV0dXJucyB0cnVlIGZvciBJU08gZGF0ZSBzdHJpbmdzXG4gICAqIGlzRGF0ZUZpZWxkKCcyMDIzLTAxLTAxVDEyOjAwOjAwWicpIC8vIHRydWVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gUmV0dXJucyBmYWxzZSBmb3Igbm9uLWRhdGUgc3RyaW5ncyBvciBvdGhlciB0eXBlc1xuICAgKiBpc0RhdGVGaWVsZCgnbm90IGEgZGF0ZScpIC8vIGZhbHNlXG4gICAqIGlzRGF0ZUZpZWxkKDEyMykgLy8gZmFsc2VcbiAgICovXG4gIGZ1bmN0aW9uIGlzRGF0ZUZpZWxkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAvLyBDaGVjayBpZiB2YWx1ZSBpcyBhIHN0cmluZyBhbmQgY2FuIGJlIHBhcnNlZCBhcyBhIHZhbGlkIGRhdGVcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhaXNOYU4oRGF0ZS5wYXJzZSh2YWx1ZSkpXG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdHMgYSBzaW5nbGUgSUQgdmFsdWUgZnJvbSBhIFBheWxvYWQgd2hlcmUgY2xhdXNlIGlmIGl0IHJlcHJlc2VudHMgYSBzaW1wbGUgSUQgcXVlcnkuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gYW5hbHl6ZXMgYSBQYXlsb2FkIHdoZXJlIGNsYXVzZSB0byBkZXRlcm1pbmUgaWYgaXQncyBhIHNpbXBsZSBxdWVyeSBmb3IgYVxuICAgKiBzaW5nbGUgZG9jdW1lbnQgYnkgSUQuIEl0IHN1cHBvcnRzIGJvdGggJ2lkJyBhbmQgJ19pZCcgZmllbGRzIHdpdGggJ2VxdWFscycgb3IgJ2NvbnRhaW5zJ1xuICAgKiBvcGVyYXRvcnMuIFRoaXMgaXMgdXNlZnVsIGZvciBvcHRpbWl6aW5nIHF1ZXJpZXMgd2hlbiB3ZSBvbmx5IG5lZWQgdG8gZmV0Y2ggYSBzaW5nbGUgZG9jdW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB3aGVyZSAtIFRoZSBQYXlsb2FkIHdoZXJlIGNsYXVzZSB0byBhbmFseXplXG4gICAqIEByZXR1cm5zIFRoZSBJRCB2YWx1ZSAoc3RyaW5nIG9yIG51bWJlcikgaWYgdGhlIHdoZXJlIGNsYXVzZSBpcyBhIHNpbXBsZSBJRCBxdWVyeSwgbnVsbCBvdGhlcndpc2VcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gUmV0dXJucyAnMTIzJyBmb3IgYSBzaW1wbGUgZXF1YWxzIHF1ZXJ5XG4gICAqIHNpbmdsZUlkUXVlcnkoeyBpZDogeyBlcXVhbHM6ICcxMjMnIH0gfSkgLy8gJzEyMydcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gUmV0dXJucyA0NTYgZm9yIGEgc2ltcGxlIGVxdWFscyBxdWVyeSB3aXRoIG51bWJlciBJRFxuICAgKiBzaW5nbGVJZFF1ZXJ5KHsgX2lkOiB7IGVxdWFsczogNDU2IH0gfSkgLy8gNDU2XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIFJldHVybnMgJzc4OScgZm9yIGEgY29udGFpbnMgcXVlcnkgd2l0aCBhIHNpbmdsZSB2YWx1ZVxuICAgKiBzaW5nbGVJZFF1ZXJ5KHsgaWQ6IHsgY29udGFpbnM6IFsnNzg5J10gfSB9KSAvLyAnNzg5J1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBSZXR1cm5zIG51bGwgZm9yIGNvbXBsZXggcXVlcmllc1xuICAgKiBzaW5nbGVJZFF1ZXJ5KHsgYW5kOiBbeyBpZDogeyBlcXVhbHM6ICcxMjMnIH0gfV0gfSkgLy8gbnVsbFxuICAgKi9cbiAgZnVuY3Rpb24gc2luZ2xlSWRRdWVyeSh3aGVyZTogUGF5bG9hZFdoZXJlKSB7XG4gICAgLy8gUmV0dXJuIG51bGwgZm9yIGVtcHR5IHdoZXJlIGNsYXVzZXMgb3IgY29tcGxleCBxdWVyaWVzIHdpdGggJ2FuZCcvJ29yJyBvcGVyYXRvcnNcbiAgICBpZiAoIXdoZXJlIHx8ICdhbmQnIGluIHdoZXJlIHx8ICdvcicgaW4gd2hlcmUpIHJldHVybiBudWxsXG5cbiAgICAvLyBDaGVjayBpZiB0aGUgd2hlcmUgY2xhdXNlIGNvbnRhaW5zIGVpdGhlciAnaWQnIG9yICdfaWQnIGZpZWxkXG4gICAgaWYgKFsnaWQnLCAnX2lkJ10uc29tZSgoZmllbGQpID0+IGZpZWxkIGluIHdoZXJlKSkge1xuICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIElEIGZpZWxkIGlzIGJlaW5nIHVzZWQgKHN1cHBvcnQgYm90aCAnaWQnIGFuZCAnX2lkJylcbiAgICAgIGNvbnN0IGlkRmllbGQgPSAnaWQnIGluIHdoZXJlID8gJ2lkJyA6ICdfaWQnXG4gICAgICBjb25zdCBjb25kaXRpb24gPSB3aGVyZVtpZEZpZWxkXVxuXG4gICAgICAvLyBQcm9jZXNzIHRoZSBlcXVhbHMgb3BlcmF0b3IgY2FzZVxuICAgICAgaWYgKGNvbmRpdGlvbiAmJiB0eXBlb2YgY29uZGl0aW9uID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShjb25kaXRpb24pICYmICdlcXVhbHMnIGluIGNvbmRpdGlvbikge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbmRpdGlvbi5lcXVhbHNcbiAgICAgICAgLy8gT25seSByZXR1cm4gc3RyaW5nIG9yIG51bWJlciBJRCB2YWx1ZXNcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFByb2Nlc3MgdGhlIGNvbnRhaW5zIG9wZXJhdG9yIGNhc2Ugd2l0aCBhIHNpbmdsZSB2YWx1ZVxuICAgICAgaWYgKFxuICAgICAgICBjb25kaXRpb24gJiZcbiAgICAgICAgdHlwZW9mIGNvbmRpdGlvbiA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgIUFycmF5LmlzQXJyYXkoY29uZGl0aW9uKSAmJlxuICAgICAgICAnY29udGFpbnMnIGluIGNvbmRpdGlvbiAmJlxuICAgICAgICBBcnJheS5pc0FycmF5KGNvbmRpdGlvbi5jb250YWlucykgJiZcbiAgICAgICAgY29uZGl0aW9uLmNvbnRhaW5zLmxlbmd0aCA9PT0gMVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gY29uZGl0aW9uLmNvbnRhaW5zWzBdXG4gICAgICAgIC8vIE9ubHkgcmV0dXJuIHN0cmluZyBvciBudW1iZXIgSUQgdmFsdWVzXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBudWxsIGlmIG5vIHZhbGlkIElEIHF1ZXJ5IHdhcyBmb3VuZFxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplcyBkYXRhIHZhbHVlcyBiYXNlZCBvbiBmaWVsZCB0eXBlIGFuZCByZXF1aXJlZCBJRCB0eXBlXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0eXBlIGNvbnZlcnNpb24gZm9yIHJlbGF0aW9uc2hpcCBmaWVsZHMgdG8gZW5zdXJlXG4gICAqIElEcyBhcmUgaW4gdGhlIGNvcnJlY3QgZm9ybWF0IChzdHJpbmcgb3IgbnVtYmVyKSBiYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGtleSAtIFRoZSBmaWVsZCBrZXkvbmFtZVxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gbm9ybWFsaXplXG4gICAqIEBwYXJhbSBpc1JlbGF0ZWRGaWVsZCAtIFdoZXRoZXIgdGhpcyBmaWVsZCBpcyBhIHJlbGF0aW9uc2hpcCBmaWVsZFxuICAgKiBAcGFyYW0gaWRUeXBlIC0gVGhlIGV4cGVjdGVkIElEIHR5cGUgKCdudW1iZXInIG9yICd0ZXh0JylcbiAgICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgdmFsdWVcbiAgICovXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZURhdGEoe1xuICAgIGtleSxcbiAgICB2YWx1ZSxcbiAgICBpc1JlbGF0ZWRGaWVsZCxcbiAgICBpZFR5cGVcbiAgfToge1xuICAgIGtleTogc3RyaW5nXG4gICAgdmFsdWU6IGFueVxuICAgIGlzUmVsYXRlZEZpZWxkOiBib29sZWFuXG4gICAgaWRUeXBlOiAnbnVtYmVyJyB8ICd0ZXh0J1xuICB9KSB7XG4gICAgLy8gU2tpcCBwcm9jZXNzaW5nIGZvciBudWxsL3VuZGVmaW5lZCB2YWx1ZXNcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfVxuXG4gICAgaWYgKFsnaWQnLCAnX2lkJ10uaW5jbHVkZXMoa2V5KSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgaWRUeXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUludCh2YWx1ZSwgMTApXG4gICAgICAgIGlmICghaXNOYU4ocGFyc2VkKSkge1xuICAgICAgICAgIGRlYnVnTG9nKFtgSUQgY29udmVyc2lvbjogJHtrZXl9IGNvbnZlcnRpbmcgc3RyaW5nIElEIHRvIG51bWJlcmAsIHsgb3JpZ2luYWw6IHZhbHVlLCBjb252ZXJ0ZWQ6IHBhcnNlZCB9XSlcbiAgICAgICAgICByZXR1cm4gcGFyc2VkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlkVHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgIGNvbnN0IHN0cmluZ0lkID0gU3RyaW5nKHZhbHVlKVxuICAgICAgICBkZWJ1Z0xvZyhbYElEIGNvbnZlcnNpb246ICR7a2V5fSBjb252ZXJ0aW5nIG51bWJlciBJRCB0byBzdHJpbmdgLCB7IG9yaWdpbmFsOiB2YWx1ZSwgY29udmVydGVkOiBzdHJpbmdJZCB9XSlcbiAgICAgICAgcmV0dXJuIHN0cmluZ0lkXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT25seSBwcm9jZXNzIHJlbGF0aW9uc2hpcCBmaWVsZHMgdGhhdCBuZWVkIHR5cGUgY29udmVyc2lvblxuICAgIGlmIChpc1JlbGF0ZWRGaWVsZCkge1xuICAgICAgLy8gSGFuZGxlIHNpbmdsZSBJRCB2YWx1ZSBjb252ZXJzaW9uXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiBpZFR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KHZhbHVlLCAxMClcbiAgICAgICAgaWYgKCFpc05hTihwYXJzZWQpKSB7XG4gICAgICAgICAgZGVidWdMb2coW2BJRCBjb252ZXJzaW9uOiAke2tleX0gY29udmVydGluZyBzdHJpbmcgSUQgdG8gbnVtYmVyYCwgeyBvcmlnaW5hbDogdmFsdWUsIGNvbnZlcnRlZDogcGFyc2VkIH1dKVxuICAgICAgICAgIHJldHVybiBwYXJzZWRcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlkVHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgIGNvbnN0IHN0cmluZ0lkID0gU3RyaW5nKHZhbHVlKVxuICAgICAgICBkZWJ1Z0xvZyhbYElEIGNvbnZlcnNpb246ICR7a2V5fSBjb252ZXJ0aW5nIG51bWJlciBJRCB0byBzdHJpbmdgLCB7IG9yaWdpbmFsOiB2YWx1ZSwgY29udmVydGVkOiBzdHJpbmdJZCB9XSlcbiAgICAgICAgcmV0dXJuIHN0cmluZ0lkXG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBhcnJheSBvZiBJRHMgLSBtYXAgZWFjaCB2YWx1ZSB0byB0aGUgY29ycmVjdCB0eXBlXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCgoaWQpID0+IHtcbiAgICAgICAgICAvLyBTa2lwIG51bGwvdW5kZWZpbmVkIHZhbHVlcyBpbiBhcnJheXNcbiAgICAgICAgICBpZiAoaWQgPT09IG51bGwgfHwgaWQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGlkXG5cbiAgICAgICAgICBpZiAoaWRUeXBlID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUludChpZCwgMTApXG4gICAgICAgICAgICByZXR1cm4gIWlzTmFOKHBhcnNlZCkgPyBwYXJzZWQgOiBpZFxuICAgICAgICAgIH0gZWxzZSBpZiAoaWRUeXBlID09PSAndGV4dCcgJiYgdHlwZW9mIGlkID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhpZClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGlkXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIG9yaWdpbmFsIHZhbHVlIGlmIG5vIGNvbnZlcnNpb24gd2FzIG5lZWRlZCBvciBhcHBsaWNhYmxlXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBpbnB1dCBkYXRhIGZyb20gYmV0dGVyLWF1dGggdG8gUGF5bG9hZCBDTVMgZm9ybWF0XG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gaGFuZGxlczpcbiAgICogMS4gRmllbGQgbmFtZSBtYXBwaW5nIGFjY29yZGluZyB0byBzY2hlbWEgZGVmaW5pdGlvbnNcbiAgICogMi4gSUQgdHlwZSBjb252ZXJzaW9uIGZvciByZWxhdGlvbnNoaXAgZmllbGRzXG4gICAqIDMuIFByb3BlciBkYXRhIG5vcm1hbGl6YXRpb24gYmFzZWQgb24gZmllbGQgdHlwZXNcbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgaW5wdXQgZGF0YSBmcm9tIGJldHRlci1hdXRoXG4gICAqIEBwYXJhbSBtb2RlbCAtIFRoZSBtb2RlbCBuYW1lIGluIHRoZSBzY2hlbWFcbiAgICogQHBhcmFtIGlkVHlwZSAtIFRoZSBleHBlY3RlZCBJRCB0eXBlICgnbnVtYmVyJyBvciAndGV4dCcpXG4gICAqIEByZXR1cm5zIFRyYW5zZm9ybWVkIGRhdGEgY29tcGF0aWJsZSB3aXRoIFBheWxvYWQgQ01TXG4gICAqL1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1JbnB1dCh7XG4gICAgZGF0YSxcbiAgICBtb2RlbCxcbiAgICBpZFR5cGVcbiAgfToge1xuICAgIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgICBtb2RlbDogc3RyaW5nXG4gICAgaWRUeXBlOiAnbnVtYmVyJyB8ICd0ZXh0J1xuICB9KTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgY29uc3QgdHJhbnNmb3JtZWREYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge31cbiAgICBjb25zdCBzY2hlbWFGaWVsZHMgPSBzY2hlbWE/Llttb2RlbF0/LmZpZWxkcyA/PyB7fVxuXG4gICAgLy8gUHJvY2VzcyBlYWNoIGZpZWxkIGluIHRoZSBpbnB1dCBkYXRhXG4gICAgT2JqZWN0LmVudHJpZXMoZGF0YSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAvLyBTa2lwIG51bGwvdW5kZWZpbmVkIHZhbHVlc1xuICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIERldGVybWluZSBpZiB0aGlzIGlzIGEgcmVsYXRpb25zaGlwIGZpZWxkXG4gICAgICBjb25zdCBpc1JlbGF0ZWRGaWVsZCA9IGlzUmVsYXRpb25zaGlwRmllbGQoa2V5LCBzY2hlbWFGaWVsZHMpXG5cbiAgICAgIC8vIEdldCB0aGUgbWFwcGVkIGZpZWxkIG5hbWUgZnJvbSBzY2hlbWEgKGlmIGFueSlcbiAgICAgIGNvbnN0IHNjaGVtYUZpZWxkTmFtZSA9IHNjaGVtYUZpZWxkc1trZXldPy5maWVsZE5hbWVcblxuICAgICAgLy8gTm9ybWFsaXplIHRoZSBkYXRhIHZhbHVlIGJhc2VkIG9uIGZpZWxkIHR5cGUgYW5kIElEIHR5cGVcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWREYXRhID0gbm9ybWFsaXplRGF0YSh7XG4gICAgICAgIGlkVHlwZSxcbiAgICAgICAga2V5LFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgaXNSZWxhdGVkRmllbGRcbiAgICAgIH0pXG5cbiAgICAgIC8vIFVzZSB0aGUgc2NoZW1hLWRlZmluZWQgZmllbGQgbmFtZSBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSB1c2Ugb3JpZ2luYWwga2V5XG4gICAgICBjb25zdCB0YXJnZXRGaWVsZE5hbWUgPSBzY2hlbWFGaWVsZE5hbWUgfHwga2V5XG4gICAgICB0cmFuc2Zvcm1lZERhdGFbdGFyZ2V0RmllbGROYW1lXSA9IG5vcm1hbGl6ZWREYXRhXG4gICAgfSlcblxuICAgIHJldHVybiB0cmFuc2Zvcm1lZERhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIFBheWxvYWQgQ01TIGRvY3VtZW50IG91dHB1dCB0byBtYXRjaCBCZXR0ZXJBdXRoIHNjaGVtYSBleHBlY3RhdGlvbnMuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBzZXZlcmFsIGNyaXRpY2FsIHRyYW5zZm9ybWF0aW9uczpcbiAgICpcbiAgICogMS4gSUQgQ29udmVyc2lvbjogRW5zdXJlcyBhbGwgSUQgZmllbGRzIGFyZSBzdHJpbmdzIGFzIHJlcXVpcmVkIGJ5IEJldHRlckF1dGhcbiAgICogICAgKHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2JldHRlci1hdXRoL2JldHRlci1hdXRoL2Jsb2IvbWFpbi9wYWNrYWdlcy9iZXR0ZXItYXV0aC9zcmMvZGIvc2NoZW1hLnRzI0wxMjUpXG4gICAqXG4gICAqIDIuIFJlbGF0aW9uc2hpcCBGaWVsZCBNYXBwaW5nOiBBbGlnbnMgcmVsYXRpb25zaGlwIGZpZWxkcyB3aXRoIEJldHRlckF1dGggc2NoZW1hIG5hbWluZyBjb252ZW50aW9uc1xuICAgKiAgICBhbmQgZW5zdXJlcyBwcm9wZXIgSUQgdHlwZSBoYW5kbGluZ1xuICAgKlxuICAgKiAzLiBEYXRlIENvbnZlcnNpb246IFRyYW5zZm9ybXMgZGF0ZSBzdHJpbmdzIGZyb20gUGF5bG9hZCBpbnRvIERhdGUgb2JqZWN0cyBmb3IgQmV0dGVyQXV0aFxuICAgKlxuICAgKiBOb3RlOiBXaGlsZSBzZXR0aW5nIGRlcHRoOiAxIGluIFBheWxvYWQgb3BlcmF0aW9ucyBzaW1wbGlmaWVzIHRoaXMgcHJvY2VzcyBieSBhdm9pZGluZ1xuICAgKiBkZWVwbHkgbmVzdGVkIG9iamVjdHMsIHdlIG1haW50YWluIGNvbXByZWhlbnNpdmUgY2hlY2tzIGZvciByb2J1c3RuZXNzLlxuICAgKlxuICAgKiBAcGFyYW0gZG9jIC0gVGhlIGRvY3VtZW50IHJldHVybmVkIGZyb20gUGF5bG9hZCBDTVNcbiAgICogQHBhcmFtIG1vZGVsIC0gVGhlIG1vZGVsIG5hbWUgaW4gdGhlIEJldHRlckF1dGggc2NoZW1hXG4gICAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lZCBkb2N1bWVudCBjb21wYXRpYmxlIHdpdGggQmV0dGVyQXV0aFxuICAgKi9cbiAgZnVuY3Rpb24gdHJhbnNmb3JtT3V0cHV0PFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbD4oeyBkb2MsIG1vZGVsIH06IHsgZG9jOiBUOyBtb2RlbDogc3RyaW5nIH0pOiBUIHtcbiAgICBpZiAoIWRvYyB8fCB0eXBlb2YgZG9jICE9PSAnb2JqZWN0JykgcmV0dXJuIGRvY1xuXG4gICAgY29uc3QgcmVzdWx0ID0geyAuLi5kb2MgfVxuICAgIGNvbnN0IHNjaGVtYUZpZWxkcyA9IHNjaGVtYT8uW21vZGVsXT8uZmllbGRzID8/IHt9XG5cbiAgICAvLyBJZGVudGlmeSByZWxhdGlvbnNoaXAgZmllbGRzIHdpdGggY3VzdG9tIGZpZWxkIG5hbWUgbWFwcGluZ3NcbiAgICBjb25zdCByZWxhdGlvbnNoaXBGaWVsZHMgPSBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoc2NoZW1hRmllbGRzKS5maWx0ZXIoKFtrZXldKSA9PiBpc1JlbGF0aW9uc2hpcEZpZWxkKGtleSwgc2NoZW1hRmllbGRzKSkpXG5cbiAgICBPYmplY3QuZW50cmllcyhkb2MpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVyblxuXG4gICAgICAvLyBDb252ZXJ0IElEIGZpZWxkcyB0byBzdHJpbmdzIGZvciBCZXR0ZXJBdXRoIGNvbXBhdGliaWxpdHlcbiAgICAgIGlmIChbJ2lkJywgJ19pZCddLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBTdHJpbmcodmFsdWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgcmVsYXRpb25zaGlwIGZpZWxkcyB3aXRoIHJlbmFtZWQgZmllbGROYW1lc1xuICAgICAgY29uc3Qgb3JpZ2luYWxSZWxhdGVkRmllbGRLZXkgPSBPYmplY3Qua2V5cyhyZWxhdGlvbnNoaXBGaWVsZHMpLmZpbmQoKGspID0+IHJlbGF0aW9uc2hpcEZpZWxkc1trXS5maWVsZE5hbWUgPT09IGtleSlcbiAgICAgIGlmIChvcmlnaW5hbFJlbGF0ZWRGaWVsZEtleSkge1xuICAgICAgICBub3JtYWxpemVEb2N1bWVudElkcyhyZXN1bHQsIG9yaWdpbmFsUmVsYXRlZEZpZWxkS2V5LCBrZXksIHZhbHVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQ29udmVydCBJU08gZGF0ZSBzdHJpbmdzIHRvIERhdGUgb2JqZWN0cyBmb3IgQmV0dGVyQXV0aFxuICAgICAgaWYgKGlzRGF0ZUZpZWxkKHZhbHVlKSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IG5ldyBEYXRlKHZhbHVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIHJlc3VsdCBhcyBUXG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplcyBJRCBmaWVsZHMgZm9yIGJvdGggcHJpbWFyeSBhbmQgcmVsYXRpb25zaGlwIGRvY3VtZW50cy5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBlbnN1cmVzIGNvbnNpc3RlbnQgSUQgaGFuZGxpbmcgYmV0d2VlbiBCZXR0ZXJBdXRoIGFuZCBQYXlsb2FkIENNUyBieTpcbiAgICogMS4gQ29udmVydGluZyBhbGwgSURzIHRvIHN0cmluZ3MgZm9yIEJldHRlckF1dGggKHN0b3JlZCBpbiBvcmlnaW5hbEtleSlcbiAgICogMi4gUHJlc2VydmluZyBvcmlnaW5hbCBJRCB0eXBlcyBmb3IgUGF5bG9hZCBDTVMgKHN0b3JlZCBpbiBmaWVsZE5hbWUpXG4gICAqXG4gICAqIFRoZSBmdW5jdGlvbiBoYW5kbGVzIHZhcmlvdXMgSUQgZm9ybWF0czpcbiAgICogLSBQcmltaXRpdmUgdmFsdWVzIChzdHJpbmcvbnVtYmVyIElEcylcbiAgICogLSBPYmplY3QgcmVmZXJlbmNlcyB3aXRoIElEIHByb3BlcnRpZXNcbiAgICogLSBBcnJheXMgb2YgZWl0aGVyIHByaW1pdGl2ZSBJRHMgb3Igb2JqZWN0IHJlZmVyZW5jZXNcbiAgICpcbiAgICogQHBhcmFtIHJlc3VsdCAtIFRoZSByZXN1bHQgb2JqZWN0IGJlaW5nIHRyYW5zZm9ybWVkXG4gICAqIEBwYXJhbSBvcmlnaW5hbEtleSAtIFRoZSBvcmlnaW5hbCBmaWVsZCBrZXkgZnJvbSBCZXR0ZXJBdXRoIHNjaGVtYVxuICAgKiBAcGFyYW0gZmllbGROYW1lIC0gVGhlIHJlbmFtZWQgZmllbGQgYXMgdXNlZCBpbiBQYXlsb2FkIENNU1xuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgSUQgdmFsdWUgdG8gbm9ybWFsaXplIChwcmltaXRpdmUsIG9iamVjdCwgb3IgYXJyYXkpXG4gICAqL1xuICBmdW5jdGlvbiBub3JtYWxpemVEb2N1bWVudElkcyhyZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueT4sIG9yaWdpbmFsS2V5OiBzdHJpbmcsIGZpZWxkTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgLy8gQ2FzZSAxOiBQcmltaXRpdmUgSUQgdmFsdWUgKHN0cmluZyBvciBudW1iZXIpXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgLy8gRm9yIEJldHRlckF1dGg6IEFsd2F5cyB1c2Ugc3RyaW5nIElEc1xuICAgICAgcmVzdWx0W29yaWdpbmFsS2V5XSA9IFN0cmluZyh2YWx1ZSlcbiAgICAgIC8vIEZvciBQYXlsb2FkOiBLZWVwIG9yaWdpbmFsIHR5cGVcbiAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0gdmFsdWVcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIENhc2UgMjogT2JqZWN0IHdpdGggSUQgcHJvcGVydHlcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAnaWQnIGluIHZhbHVlKSB7XG4gICAgICAvLyBGb3IgQmV0dGVyQXV0aDogRXh0cmFjdCBhbmQgc3RyaW5naWZ5IHRoZSBJRFxuICAgICAgcmVzdWx0W29yaWdpbmFsS2V5XSA9IFN0cmluZyh2YWx1ZS5pZClcbiAgICAgIC8vIEZvciBQYXlsb2FkOiBFeHRyYWN0IElEIGJ1dCBwcmVzZXJ2ZSB0eXBlXG4gICAgICByZXN1bHRbZmllbGROYW1lXSA9IHZhbHVlLmlkXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBDYXNlIDM6IEFycmF5IG9mIElEcyBvciByZWZlcmVuY2VzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIENoZWNrIGlmIGFycmF5IGNvbnRhaW5zIG9iamVjdHMgd2l0aCBJRCBwcm9wZXJ0aWVzXG4gICAgICBpZiAodmFsdWUuZXZlcnkoKGl0ZW0pID0+IHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsICYmICdpZCcgaW4gaXRlbSkpIHtcbiAgICAgICAgLy8gQXJyYXkgb2Ygb2JqZWN0cyB3aXRoIElEc1xuICAgICAgICByZXN1bHRbb3JpZ2luYWxLZXldID0gdmFsdWUubWFwKChpdGVtKSA9PiBTdHJpbmcoaXRlbS5pZCkpXG4gICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0gdmFsdWUubWFwKChpdGVtKSA9PiBpdGVtLmlkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQXJyYXkgb2YgcHJpbWl0aXZlIElEc1xuICAgICAgICByZXN1bHRbb3JpZ2luYWxLZXldID0gdmFsdWUubWFwKChpdGVtKSA9PiBTdHJpbmcoaXRlbSkpXG4gICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0gdmFsdWUubWFwKChpdGVtKSA9PiBpdGVtKVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gTm90ZTogSWYgdmFsdWUgZG9lc24ndCBtYXRjaCBhbnkgZXhwZWN0ZWQgZm9ybWF0LCBubyBjaGFuZ2VzIGFyZSBtYWRlXG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBCZXR0ZXJBdXRoIG9wZXJhdG9yIHRvIHRoZSBlcXVpdmFsZW50IFBheWxvYWQgQ01TIHF1ZXJ5IG9wZXJhdG9yXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gbWFwcyBzdGFuZGFyZCBxdWVyeSBvcGVyYXRvcnMgZnJvbSBCZXR0ZXJBdXRoJ3MgZm9ybWF0IHRvXG4gICAqIHRoZSBzcGVjaWZpYyBmb3JtYXQgZXhwZWN0ZWQgYnkgUGF5bG9hZCBDTVMncyBxdWVyeSBlbmdpbmUuXG4gICAqXG4gICAqIEBwYXJhbSBvcGVyYXRvciAtIFRoZSBCZXR0ZXJBdXRoIG9wZXJhdG9yIHN0cmluZyAoZS5nLiwgJ2VxJywgJ2d0JywgJ2NvbnRhaW5zJylcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGJlIHVzZWQgd2l0aCB0aGUgb3BlcmF0b3JcbiAgICogQHJldHVybnMgQW4gb2JqZWN0IHdpdGggdGhlIFBheWxvYWQtY29tcGF0aWJsZSBvcGVyYXRvciBhbmQgdmFsdWVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gUmV0dXJucyB7IGVxdWFsczogJ3Rlc3RAZXhhbXBsZS5jb20nIH1cbiAgICogb3BlcmF0b3JUb1BheWxvYWQoJ2VxJywgJ3Rlc3RAZXhhbXBsZS5jb20nKVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBSZXR1cm5zIHsgZ3JlYXRlcl90aGFuOiAxMDAgfVxuICAgKiBvcGVyYXRvclRvUGF5bG9hZCgnZ3QnLCAxMDApXG4gICAqL1xuICBmdW5jdGlvbiBvcGVyYXRvclRvUGF5bG9hZChvcGVyYXRvcjogc3RyaW5nLCB2YWx1ZTogYW55KTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgc3dpdGNoIChvcGVyYXRvcikge1xuICAgICAgY2FzZSAnZXEnOlxuICAgICAgICByZXR1cm4geyBlcXVhbHM6IHZhbHVlIH1cbiAgICAgIGNhc2UgJ25lJzpcbiAgICAgICAgcmV0dXJuIHsgbm90X2VxdWFsczogdmFsdWUgfVxuICAgICAgY2FzZSAnZ3QnOlxuICAgICAgICByZXR1cm4geyBncmVhdGVyX3RoYW46IHZhbHVlIH1cbiAgICAgIGNhc2UgJ2d0ZSc6XG4gICAgICAgIHJldHVybiB7IGdyZWF0ZXJfdGhhbl9lcXVhbDogdmFsdWUgfVxuICAgICAgY2FzZSAnbHQnOlxuICAgICAgICByZXR1cm4geyBsZXNzX3RoYW46IHZhbHVlIH1cbiAgICAgIGNhc2UgJ2x0ZSc6XG4gICAgICAgIHJldHVybiB7IGxlc3NfdGhhbl9lcXVhbDogdmFsdWUgfVxuICAgICAgY2FzZSAnY29udGFpbnMnOlxuICAgICAgICByZXR1cm4geyBjb250YWluczogdmFsdWUgfVxuICAgICAgY2FzZSAnaW4nOlxuICAgICAgICByZXR1cm4geyBpbjogdmFsdWUgfVxuICAgICAgY2FzZSAnc3RhcnRzX3dpdGgnOlxuICAgICAgICByZXR1cm4geyBsaWtlOiBgJHt2YWx1ZX0lYCB9XG4gICAgICBjYXNlICdlbmRzX3dpdGgnOlxuICAgICAgICByZXR1cm4geyBsaWtlOiBgJSR7dmFsdWV9YCB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBGYWxsIGJhY2sgdG8gZXF1YWxzIGZvciB1bnJlY29nbml6ZWQgb3BlcmF0b3JzXG4gICAgICAgIHJldHVybiB7IGVxdWFsczogdmFsdWUgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIHdoZXJlIGNsYXVzZSB2YWx1ZSB0byB0aGUgYXBwcm9wcmlhdGUgdHlwZSBiYXNlZCBvbiBmaWVsZCBuYW1lIGFuZCBJRCB0eXBlIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHR3byBtYWluIHNjZW5hcmlvczpcbiAgICogMS4gSUQgZmllbGQgY29udmVyc2lvbiAtIGVuc3VyZXMgSURzIG1hdGNoIHRoZSBkYXRhYmFzZSdzIGV4cGVjdGVkIHR5cGUgKG51bWJlciBvciBzdHJpbmcpXG4gICAqIDIuIE9iamVjdCB3aXRoIGVtYmVkZGVkIElEIC0gZXh0cmFjdHMgYW5kIGNvbnZlcnRzIHRoZSBJRCBwcm9wZXJ0eSBmcm9tIG9iamVjdHNcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgKGNhbiBiZSBwcmltaXRpdmUsIG9iamVjdCB3aXRoIElELCBvciBhcnJheSlcbiAgICogQHBhcmFtIGZpZWxkTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBmaWVsZCBiZWluZyBxdWVyaWVkXG4gICAqIEBwYXJhbSBpZFR5cGUgLSBUaGUgZXhwZWN0ZWQgSUQgdHlwZSBpbiB0aGUgZGF0YWJhc2VcbiAgICogQHJldHVybnMgVGhlIGNvbnZlcnRlZCB2YWx1ZSBhcHByb3ByaWF0ZSBmb3IgdGhlIGRhdGFiYXNlIHF1ZXJ5XG4gICAqL1xuICBmdW5jdGlvbiBjb252ZXJ0V2hlcmVWYWx1ZSh7IHZhbHVlLCBmaWVsZE5hbWUsIGlkVHlwZSB9OiB7IHZhbHVlOiBhbnk7IGZpZWxkTmFtZTogc3RyaW5nOyBpZFR5cGU6ICdudW1iZXInIHwgJ3RleHQnIH0pIHtcbiAgICAvLyBDaGVjayBpZiBmaWVsZCBpcyBhbiBJRCBmaWVsZCAoc3VwcG9ydGluZyBib3RoIE1vbmdvREItc3R5bGUgX2lkIGFuZCBzdGFuZGFyZCBpZClcbiAgICBpZiAoWydpZCcsICdfaWQnXS5pbmNsdWRlcyhmaWVsZE5hbWUpKSB7XG4gICAgICAvLyBDYXNlIDE6IFZhbHVlIGlzIGFuIG9iamVjdCBjb250YWluaW5nIGFuIElEIHByb3BlcnR5XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAnaWQnIGluIHZhbHVlKSB7XG4gICAgICAgIC8vIEV4dHJhY3QgSUQgZnJvbSBvYmplY3RcbiAgICAgICAgY29uc3QgaWQgPSB2YWx1ZS5pZFxuXG4gICAgICAgIC8vIFVzZSB0eXBlIGNvbnZlcnNpb24gYmFzZWQgb24gZGF0YWJhc2UgY29uZmlndXJhdGlvblxuICAgICAgICBpZiAoaWRUeXBlID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgY29uc3QgbnVtSWQgPSBOdW1iZXIoaWQpXG4gICAgICAgICAgcmV0dXJuICFpc05hTihudW1JZCkgPyBudW1JZCA6IGlkXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaWRUeXBlID09PSAndGV4dCcgJiYgdHlwZW9mIGlkID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHJldHVybiBTdHJpbmcoaWQpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaWRcbiAgICAgIH1cbiAgICAgIC8vIENhc2UgMjogVmFsdWUgaXMgYSBzdGFuZGFsb25lIElEIHRoYXQgbmVlZHMgdHlwZSBjb252ZXJzaW9uXG4gICAgICAvLyBDb252ZXJ0IHN0cmluZyBJRCB0byBudW1iZXIgaWYgZGF0YWJhc2UgZXhwZWN0cyBudW1lcmljIElEc1xuICAgICAgaWYgKGlkVHlwZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhaXNOYU4oTnVtYmVyKHZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSlcbiAgICAgIH1cbiAgICAgIC8vIENvbnZlcnQgbnVtZXJpYyBJRCB0byBzdHJpbmcgaWYgZGF0YWJhc2UgZXhwZWN0cyB0ZXh0IElEc1xuICAgICAgZWxzZSBpZiAoaWRUeXBlID09PSAndGV4dCcgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfVxuXG4gICAgLy8gRm9yIG5vbi1JRCBmaWVsZHMsIHJldHVybiB0aGUgdmFsdWUgdW5jaGFuZ2VkXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgQmV0dGVyIEF1dGggd2hlcmUgY2xhdXNlcyB0byBQYXlsb2FkIENNUyBjb21wYXRpYmxlIHdoZXJlIGNvbmRpdGlvbnNcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiB0cmFuc2Zvcm1zIHRoZSBCZXR0ZXIgQXV0aCBxdWVyeSBmb3JtYXQgaW50byBQYXlsb2FkJ3MgcXVlcnkgZm9ybWF0LFxuICAgKiBoYW5kbGluZyBmaWVsZCBuYW1lIG1hcHBpbmcsIHZhbHVlIHR5cGUgY29udmVyc2lvbiwgYW5kIGxvZ2ljYWwgb3BlcmF0b3JzIChBTkQvT1IpLlxuICAgKlxuICAgKiBUaGUgZnVuY3Rpb24gaGFuZGxlcyB0aHJlZSBtYWluIGNhc2VzOlxuICAgKiAxLiBFbXB0eSBvciB1bmRlZmluZWQgd2hlcmUgY2xhdXNlIC0gcmV0dXJucyBlbXB0eSBvYmplY3RcbiAgICogMi4gU2luZ2xlIGNvbmRpdGlvbiAtIGNvbnZlcnRzIHRvIGEgc2ltcGxlIGZpZWxkLXZhbHVlIHBhaXJcbiAgICogMy4gTXVsdGlwbGUgY29uZGl0aW9ucyAtIGdyb3VwcyBieSBBTkQvT1IgY29ubmVjdG9ycyBhbmQgYnVpbGRzIGEgY29tcGxleCBxdWVyeVxuICAgKlxuICAgKiBAcGFyYW0gaWRUeXBlIC0gVGhlIGRhdGFiYXNlIElEIHR5cGUgKCdudW1iZXInIG9yICd0ZXh0JylcbiAgICogQHBhcmFtIG1vZGVsIC0gVGhlIG1vZGVsL2NvbGxlY3Rpb24gbmFtZSB0byBxdWVyeVxuICAgKiBAcGFyYW0gd2hlcmUgLSBBcnJheSBvZiBCZXR0ZXIgQXV0aCB3aGVyZSBjb25kaXRpb25zXG4gICAqIEByZXR1cm5zIEEgUGF5bG9hZC1jb21wYXRpYmxlIHdoZXJlIGNsYXVzZSBvYmplY3RcbiAgICovXG4gIGZ1bmN0aW9uIGNvbnZlcnRXaGVyZUNsYXVzZSh7IGlkVHlwZSwgbW9kZWwsIHdoZXJlIH06IHsgaWRUeXBlOiAnbnVtYmVyJyB8ICd0ZXh0JzsgbW9kZWw6IHN0cmluZzsgd2hlcmU/OiBXaGVyZVtdIH0pOiBQYXlsb2FkV2hlcmUge1xuICAgIC8vIEhhbmRsZSBlbXB0eSB3aGVyZSBjbGF1c2VcbiAgICBpZiAoIXdoZXJlKSByZXR1cm4ge31cblxuICAgIC8vIEhhbmRsZSBzaW5nbGUgY29uZGl0aW9uIGNhc2UgZm9yIG9wdGltaXphdGlvblxuICAgIGlmICh3aGVyZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IHcgPSB3aGVyZVswXVxuICAgICAgaWYgKCF3KSB7XG4gICAgICAgIHJldHVybiB7fVxuICAgICAgfVxuXG4gICAgICAvLyBNYXAgZmllbGQgbmFtZSBhY2NvcmRpbmcgdG8gc2NoZW1hIGFuZCBjb252ZXJ0IHZhbHVlIHRvIGFwcHJvcHJpYXRlIHR5cGVcbiAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGdldEZpZWxkTmFtZShtb2RlbCwgdy5maWVsZClcbiAgICAgIGNvbnN0IHZhbHVlID0gY29udmVydFdoZXJlVmFsdWUoe1xuICAgICAgICB2YWx1ZTogdy52YWx1ZSxcbiAgICAgICAgZmllbGROYW1lLFxuICAgICAgICBpZFR5cGVcbiAgICAgIH0pXG5cbiAgICAgIC8vIENyZWF0ZSB0aGUgUGF5bG9hZCB3aGVyZSBjb25kaXRpb24gd2l0aCBwcm9wZXIgb3BlcmF0b3JcbiAgICAgIGNvbnN0IHJlcyA9IHtcbiAgICAgICAgW2ZpZWxkTmFtZV06IG9wZXJhdG9yVG9QYXlsb2FkKHcub3BlcmF0b3IgPz8gJycsIHZhbHVlKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzXG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIG11bHRpcGxlIGNvbmRpdGlvbnMgYnkgc2VwYXJhdGluZyBBTkQvT1IgY2xhdXNlc1xuICAgIC8vIERlZmF1bHQgdG8gQU5EIGlmIG5vIGNvbm5lY3RvciBpcyBzcGVjaWZpZWRcbiAgICBjb25zdCBhbmQgPSB3aGVyZS5maWx0ZXIoKHcpID0+IHcuY29ubmVjdG9yID09PSAnQU5EJyB8fCAhdy5jb25uZWN0b3IpXG4gICAgY29uc3Qgb3IgPSB3aGVyZS5maWx0ZXIoKHcpID0+IHcuY29ubmVjdG9yID09PSAnT1InKVxuXG4gICAgLy8gUHJvY2VzcyBBTkQgY29uZGl0aW9uc1xuICAgIGNvbnN0IGFuZENsYXVzZSA9IGFuZC5tYXAoKHcpID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGdldEZpZWxkTmFtZShtb2RlbCwgdy5maWVsZClcbiAgICAgIGNvbnN0IHZhbHVlID0gY29udmVydFdoZXJlVmFsdWUoe1xuICAgICAgICB2YWx1ZTogdy52YWx1ZSxcbiAgICAgICAgZmllbGROYW1lLFxuICAgICAgICBpZFR5cGVcbiAgICAgIH0pXG4gICAgICByZXR1cm4ge1xuICAgICAgICBbZmllbGROYW1lXTogb3BlcmF0b3JUb1BheWxvYWQody5vcGVyYXRvciA/PyAnJywgdmFsdWUpXG4gICAgICB9XG4gICAgfSlcblxuICAgIC8vIFByb2Nlc3MgT1IgY29uZGl0aW9uc1xuICAgIGNvbnN0IG9yQ2xhdXNlID0gb3IubWFwKCh3KSA9PiB7XG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBnZXRGaWVsZE5hbWUobW9kZWwsIHcuZmllbGQpXG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbnZlcnRXaGVyZVZhbHVlKHtcbiAgICAgICAgdmFsdWU6IHcudmFsdWUsXG4gICAgICAgIGZpZWxkTmFtZSxcbiAgICAgICAgaWRUeXBlXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW2ZpZWxkTmFtZV06IG9wZXJhdG9yVG9QYXlsb2FkKHcub3BlcmF0b3IgPz8gJycsIHZhbHVlKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICAvLyBDb21iaW5lIEFORCBhbmQgT1IgY2xhdXNlcyBpbnRvIGZpbmFsIFBheWxvYWQgd2hlcmUgb2JqZWN0XG4gICAgLy8gT25seSBpbmNsdWRlIG5vbi1lbXB0eSBjbGF1c2UgYXJyYXlzXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihhbmRDbGF1c2UubGVuZ3RoID8geyBBTkQ6IGFuZENsYXVzZSB9IDoge30pLFxuICAgICAgLi4uKG9yQ2xhdXNlLmxlbmd0aCA/IHsgT1I6IG9yQ2xhdXNlIH0gOiB7fSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBiZXR0ZXItYXV0aCBzZWxlY3QgYXJyYXkgdG8gYSBQYXlsb2FkIHNlbGVjdCBvYmplY3RcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiB0cmFuc2Zvcm1zIHRoZSBiZXR0ZXItYXV0aCBzZWxlY3QgYXJyYXkgKHdoaWNoIGNvbnRhaW5zIGZpZWxkIG5hbWVzKVxuICAgKiBpbnRvIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgUGF5bG9hZCBDTVMncyBxdWVyeSBBUEkgKGFuIG9iamVjdCB3aXRoIGZpZWxkIG5hbWVzIGFzIGtleXNcbiAgICogYW5kIGJvb2xlYW4gdHJ1ZSBhcyB2YWx1ZXMpLlxuICAgKlxuICAgKiBJdCBhbHNvIGhhbmRsZXMgZmllbGQgbmFtZSBtYXBwaW5nIGJldHdlZW4gYmV0dGVyLWF1dGggc2NoZW1hIGFuZCBQYXlsb2FkIGNvbGxlY3Rpb25zXG4gICAqIGJ5IHVzaW5nIHRoZSBnZXRGaWVsZE5hbWUgaGVscGVyIHRvIHJlc29sdmUgdGhlIGNvcnJlY3QgZmllbGQgbmFtZXMuXG4gICAqXG4gICAqIEBwYXJhbSBtb2RlbCAtIFRoZSBtb2RlbC9jb2xsZWN0aW9uIG5hbWUgdG8gZ2V0IGZpZWxkIG1hcHBpbmdzIGZyb21cbiAgICogQHBhcmFtIHNlbGVjdCAtIE9wdGlvbmFsIGFycmF5IG9mIGZpZWxkIG5hbWVzIHRvIHNlbGVjdFxuICAgKiBAcmV0dXJucyBBIFBheWxvYWQtY29tcGF0aWJsZSBzZWxlY3Qgb2JqZWN0IG9yIHVuZGVmaW5lZCBpZiBubyBmaWVsZHMgdG8gc2VsZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIC8vIElucHV0OiBbJ2VtYWlsJywgJ25hbWUnXVxuICAgKiAvLyBPdXRwdXQ6IHsgZW1haWw6IHRydWUsIG5hbWU6IHRydWUgfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udmVydFNlbGVjdChtb2RlbDogc3RyaW5nLCBzZWxlY3Q/OiBzdHJpbmdbXSkge1xuICAgIC8vIFJldHVybiB1bmRlZmluZWQgaWYgc2VsZWN0IGlzIGVtcHR5IG9yIG5vdCBwcm92aWRlZFxuICAgIGlmICghc2VsZWN0IHx8IHNlbGVjdC5sZW5ndGggPT09IDApIHJldHVybiB1bmRlZmluZWRcblxuICAgIC8vIFRyYW5zZm9ybSB0aGUgYXJyYXkgb2YgZmllbGQgbmFtZXMgaW50byBhIFBheWxvYWQgc2VsZWN0IG9iamVjdFxuICAgIC8vIHdoaWxlIGFsc28gbWFwcGluZyBhbnkgZmllbGQgbmFtZXMgdGhhdCBtaWdodCBiZSBkaWZmZXJlbnQgaW4gUGF5bG9hZFxuICAgIHJldHVybiBzZWxlY3QucmVkdWNlKChhY2MsIGZpZWxkKSA9PiAoeyAuLi5hY2MsIFtnZXRGaWVsZE5hbWUobW9kZWwsIGZpZWxkKV06IHRydWUgfSksIHt9KVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgYmV0dGVyLWF1dGggc29ydCBvYmplY3QgdG8gYSBQYXlsb2FkIHNvcnQgc3RyaW5nXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gdHJhbnNmb3JtcyB0aGUgYmV0dGVyLWF1dGggc29ydCBvYmplY3QgKHdoaWNoIGNvbnRhaW5zIGZpZWxkIG5hbWUgYW5kIGRpcmVjdGlvbilcbiAgICogaW50byB0aGUgZm9ybWF0IGV4cGVjdGVkIGJ5IFBheWxvYWQgQ01TJ3MgcXVlcnkgQVBJIChhIHN0cmluZyB3aXRoIG9wdGlvbmFsICctJyBwcmVmaXggZm9yIGRlc2NlbmRpbmcgb3JkZXIpLlxuICAgKlxuICAgKiBJdCBhbHNvIGhhbmRsZXMgZmllbGQgbmFtZSBtYXBwaW5nIGJldHdlZW4gYmV0dGVyLWF1dGggc2NoZW1hIGFuZCBQYXlsb2FkIGNvbGxlY3Rpb25zXG4gICAqIGJ5IHVzaW5nIHRoZSBnZXRGaWVsZE5hbWUgaGVscGVyIHRvIHJlc29sdmUgdGhlIGNvcnJlY3QgZmllbGQgbmFtZXMuXG4gICAqXG4gICAqIEBwYXJhbSBtb2RlbCAtIFRoZSBtb2RlbC9jb2xsZWN0aW9uIG5hbWUgdG8gZ2V0IGZpZWxkIG1hcHBpbmdzIGZyb21cbiAgICogQHBhcmFtIHNvcnRCeSAtIE9wdGlvbmFsIG9iamVjdCBjb250YWluaW5nIGZpZWxkIG5hbWUgYW5kIHNvcnQgZGlyZWN0aW9uXG4gICAqIEByZXR1cm5zIEEgUGF5bG9hZC1jb21wYXRpYmxlIHNvcnQgc3RyaW5nIG9yIHVuZGVmaW5lZCBpZiBubyBzb3J0IHNwZWNpZmllZFxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBJbnB1dDogeyBmaWVsZDogJ2VtYWlsJywgZGlyZWN0aW9uOiAnZGVzYycgfVxuICAgKiAvLyBPdXRwdXQ6ICctZW1haWwnXG4gICAqIC8vIElucHV0OiB7IGZpZWxkOiAnY3JlYXRlZEF0JywgZGlyZWN0aW9uOiAnYXNjJyB9XG4gICAqIC8vIE91dHB1dDogJ2NyZWF0ZWRBdCdcbiAgICovXG4gIGZ1bmN0aW9uIGNvbnZlcnRTb3J0KG1vZGVsOiBzdHJpbmcsIHNvcnRCeT86IHsgZmllbGQ6IHN0cmluZzsgZGlyZWN0aW9uOiAnYXNjJyB8ICdkZXNjJyB9KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXNvcnRCeSkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGNvbnN0IGZpZWxkTmFtZSA9IGdldEZpZWxkTmFtZShtb2RlbCwgc29ydEJ5LmZpZWxkKVxuICAgIGNvbnN0IHByZWZpeCA9IHNvcnRCeS5kaXJlY3Rpb24gPT09ICdkZXNjJyA/ICctJyA6ICcnXG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke2ZpZWxkTmFtZX1gXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGdldEZpZWxkTmFtZSxcbiAgICBnZXRDb2xsZWN0aW9uU2x1ZyxcbiAgICBzaW5nbGVJZFF1ZXJ5LFxuICAgIHRyYW5zZm9ybUlucHV0LFxuICAgIHRyYW5zZm9ybU91dHB1dCxcbiAgICBjb252ZXJ0V2hlcmVDbGF1c2UsXG4gICAgY29udmVydFNlbGVjdCxcbiAgICBjb252ZXJ0U29ydFxuICB9XG59XG4iXSwibmFtZXMiOlsiZ2V0QXV0aFRhYmxlcyIsImNyZWF0ZVRyYW5zZm9ybSIsIm9wdGlvbnMiLCJlbmFibGVEZWJ1Z0xvZ3MiLCJzY2hlbWEiLCJkZWJ1Z0xvZyIsIm1lc3NhZ2UiLCJjb25zb2xlIiwibG9nIiwiZ2V0Q29sbGVjdGlvblNsdWciLCJtb2RlbCIsImNvbGxlY3Rpb24iLCJtb2RlbE5hbWUiLCJyZXNvbHZlZFNsdWciLCJnZXRGaWVsZE5hbWUiLCJmaWVsZCIsImluY2x1ZGVzIiwiZmllbGREZWZpbml0aW9uIiwiZmllbGRzIiwiZmllbGROYW1lIiwib3JpZ2luYWxGaWVsZCIsImlzUmVsYXRpb25zaGlwRmllbGQiLCJmaWVsZEtleSIsInNjaGVtYUZpZWxkcyIsInJlZmVyZW5jZXMiLCJ1bmRlZmluZWQiLCJpc0RhdGVGaWVsZCIsInZhbHVlIiwiaXNOYU4iLCJEYXRlIiwicGFyc2UiLCJzaW5nbGVJZFF1ZXJ5Iiwid2hlcmUiLCJzb21lIiwiaWRGaWVsZCIsImNvbmRpdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImVxdWFscyIsImNvbnRhaW5zIiwibGVuZ3RoIiwibm9ybWFsaXplRGF0YSIsImtleSIsImlzUmVsYXRlZEZpZWxkIiwiaWRUeXBlIiwicGFyc2VkIiwicGFyc2VJbnQiLCJvcmlnaW5hbCIsImNvbnZlcnRlZCIsInN0cmluZ0lkIiwiU3RyaW5nIiwibWFwIiwiaWQiLCJ0cmFuc2Zvcm1JbnB1dCIsImRhdGEiLCJ0cmFuc2Zvcm1lZERhdGEiLCJPYmplY3QiLCJlbnRyaWVzIiwiZm9yRWFjaCIsInNjaGVtYUZpZWxkTmFtZSIsIm5vcm1hbGl6ZWREYXRhIiwidGFyZ2V0RmllbGROYW1lIiwidHJhbnNmb3JtT3V0cHV0IiwiZG9jIiwicmVzdWx0IiwicmVsYXRpb25zaGlwRmllbGRzIiwiZnJvbUVudHJpZXMiLCJmaWx0ZXIiLCJvcmlnaW5hbFJlbGF0ZWRGaWVsZEtleSIsImtleXMiLCJmaW5kIiwiayIsIm5vcm1hbGl6ZURvY3VtZW50SWRzIiwib3JpZ2luYWxLZXkiLCJldmVyeSIsIml0ZW0iLCJvcGVyYXRvclRvUGF5bG9hZCIsIm9wZXJhdG9yIiwibm90X2VxdWFscyIsImdyZWF0ZXJfdGhhbiIsImdyZWF0ZXJfdGhhbl9lcXVhbCIsImxlc3NfdGhhbiIsImxlc3NfdGhhbl9lcXVhbCIsImluIiwibGlrZSIsImNvbnZlcnRXaGVyZVZhbHVlIiwibnVtSWQiLCJOdW1iZXIiLCJjb252ZXJ0V2hlcmVDbGF1c2UiLCJ3IiwicmVzIiwiYW5kIiwiY29ubmVjdG9yIiwib3IiLCJhbmRDbGF1c2UiLCJvckNsYXVzZSIsIkFORCIsIk9SIiwiY29udmVydFNlbGVjdCIsInNlbGVjdCIsInJlZHVjZSIsImFjYyIsImNvbnZlcnRTb3J0Iiwic29ydEJ5IiwicHJlZml4IiwiZGlyZWN0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFvQ0EsYUFBYSxRQUFRLGlCQUFnQjtBQUl6RSxPQUFPLE1BQU1DLGtCQUFrQixDQUFDQyxTQUE0QkM7SUFDMUQsTUFBTUMsU0FBU0osY0FBY0U7SUFFN0IsU0FBU0csU0FBU0MsT0FBYztRQUM5QixJQUFJSCxp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
667
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9hZGFwdGVyL3RyYW5zZm9ybS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB0eXBlIHsgTW9kZWxLZXkgfSBmcm9tICdAL2JldHRlci1hdXRoL2dlbmVyYXRlZC10eXBlcydcbmltcG9ydCB0eXBlIHsgQmV0dGVyQXV0aE9wdGlvbnMsIFdoZXJlIH0gZnJvbSAnYmV0dGVyLWF1dGgnXG5pbXBvcnQgdHlwZSB7IEZpZWxkQXR0cmlidXRlIH0gZnJvbSAnYmV0dGVyLWF1dGgvZGInXG5pbXBvcnQgeyB0eXBlIEZpZWxkVHlwZSwgZ2V0QXV0aFRhYmxlcyB9IGZyb20gJ2JldHRlci1hdXRoL2RiJ1xuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uU2x1ZywgV2hlcmUgYXMgUGF5bG9hZFdoZXJlIH0gZnJvbSAncGF5bG9hZCdcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVRyYW5zZm9ybSA9IChvcHRpb25zOiBCZXR0ZXJBdXRoT3B0aW9ucywgZW5hYmxlRGVidWdMb2dzOiBib29sZWFuKSA9PiB7XG4gIGNvbnN0IHNjaGVtYSA9IGdldEF1dGhUYWJsZXMob3B0aW9ucylcblxuICBmdW5jdGlvbiBkZWJ1Z0xvZyhtZXNzYWdlOiBhbnlbXSkge1xuICAgIGlmIChlbmFibGVEZWJ1Z0xvZ3MpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBbcGF5bG9hZC1kYi1hZGFwdGVyXWAsIC4uLm1lc3NhZ2UpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgYSBCZXR0ZXJBdXRoIHNjaGVtYSBtb2RlbCBuYW1lIHRvIGl0cyBjb3JyZXNwb25kaW5nIFBheWxvYWQgQ01TIGNvbGxlY3Rpb24gc2x1Zy5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiByZXNvbHZlcyB0aGUgYXBwcm9wcmlhdGUgY29sbGVjdGlvbiBzbHVnIGJ5OlxuICAgKiAxLiBMb29raW5nIHVwIHRoZSBtb2RlbCBpbiB0aGUgQmV0dGVyQXV0aCBzY2hlbWEgdG8gZmluZCBpdHMgY29uZmlndXJlZCBtb2RlbE5hbWVcbiAgICogMi4gRmFsbGluZyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBtb2RlbCBuYW1lIGlmIG5vIG1hcHBpbmcgZXhpc3RzXG4gICAqXG4gICAqIENvbGxlY3Rpb24gc2x1ZyByZXNvbHV0aW9uIGZvbGxvd3MgdGhlc2UgcnVsZXM6XG4gICAqIC0gRm9yIGJhc2UgY29sbGVjdGlvbnM6IFRoZSBzYW5pdGl6ZUJldHRlckF1dGhPcHRpb25zIGZ1bmN0aW9uIGVuc3VyZXMgdGhlIGNvbGxlY3Rpb24gc2x1Z1xuICAgKiAgIGZyb20gcGx1Z2luIG9wdGlvbnMgaXMgc2V0IGFzIHRoZSBtb2RlbCBuYW1lIGluIHRoZSBzY2hlbWFcbiAgICogLSBGb3IgcGx1Z2luczogVGhlIGJldHRlckF1dGhQbHVnaW5TbHVncyBjb25zdGFudCBpcyB1c2VkIGFzIHRoZSBtb2RlbE5hbWVcbiAgICpcbiAgICogQHBhcmFtIG1vZGVsIC0gVGhlIEJldHRlckF1dGggbW9kZWwgbmFtZSB0byByZXNvbHZlXG4gICAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIFBheWxvYWQgQ01TIGNvbGxlY3Rpb24gc2x1Z1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBJZiBzY2hlbWFbJ3VzZXInXS5tb2RlbE5hbWUgaXMgJ3VzZXJzJ1xuICAgKiBnZXRDb2xsZWN0aW9uU2x1ZygndXNlcicpIC8vIFJldHVybnMgJ3VzZXJzJ1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBJZiBtb2RlbCBkb2Vzbid0IGV4aXN0IGluIHNjaGVtYVxuICAgKiBnZXRDb2xsZWN0aW9uU2x1ZygnY3VzdG9tJykgLy8gUmV0dXJucyAnY3VzdG9tJ1xuICAgKlxuICAgKiBAd2FybmluZyBJZiBhIGNvbGxlY3Rpb24gaXMgb3ZlcnJpZGRlbiB1c2luZyB0aGUgY29sbGVjdGlvbk92ZXJyaWRlIG9wdGlvblxuICAgKiB3aXRob3V0IHVwZGF0aW5nIHRoZSBzY2hlbWEgbWFwcGluZywgdGhpcyBmdW5jdGlvbiBtYXkgcmV0dXJuIGluY29ycmVjdCBzbHVnc1xuICAgKi9cbiAgZnVuY3Rpb24gZ2V0Q29sbGVjdGlvblNsdWcobW9kZWw6IE1vZGVsS2V5KTogQ29sbGVjdGlvblNsdWcge1xuICAgIC8vIEZpcnN0IHRyeSB0byBnZXQgdGhlIG1vZGVsTmFtZSBmcm9tIHNjaGVtYSwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0byB0aGUgb3JpZ2luYWwgbW9kZWwgbmFtZVxuICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBzY2hlbWE/Llttb2RlbF0/Lm1vZGVsTmFtZSB8fCBtb2RlbFxuICAgIGRlYnVnTG9nKFsnZ2V0Q29sbGVjdGlvblNsdWc6JywgeyBtb2RlbCwgcmVzb2x2ZWRTbHVnOiBjb2xsZWN0aW9uIH1dKVxuICAgIHJldHVybiBjb2xsZWN0aW9uIGFzIENvbGxlY3Rpb25TbHVnXG4gIH1cblxuICAvKipcbiAgICogTWFwcyBhIEJldHRlckF1dGggc2NoZW1hIGZpZWxkIHRvIGl0cyBjb3JyZXNwb25kaW5nIFBheWxvYWQgQ01TIGZpZWxkIG5hbWUuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gcmVzb2x2ZXMgdGhlIGFwcHJvcHJpYXRlIGZpZWxkIG5hbWUgYnk6XG4gICAqIDEuIFByZXNlcnZpbmcgJ2lkJyBvciAnX2lkJyBmaWVsZHMgYXMtaXMgKHNwZWNpYWwgY2FzZSBoYW5kbGluZylcbiAgICogMi4gTG9va2luZyB1cCB0aGUgZmllbGQgaW4gdGhlIEJldHRlckF1dGggc2NoZW1hIHRvIGZpbmQgaXRzIGNvbmZpZ3VyZWQgZmllbGROYW1lXG4gICAqIDMuIEZhbGxpbmcgYmFjayB0byB0aGUgb3JpZ2luYWwgZmllbGQgbmFtZSBpZiBubyBtYXBwaW5nIGV4aXN0c1xuICAgKlxuICAgKiBAcGFyYW0gbW9kZWwgLSBUaGUgQmV0dGVyQXV0aCBtb2RlbCBuYW1lIGNvbnRhaW5pbmcgdGhlIGZpZWxkXG4gICAqIEBwYXJhbSBmaWVsZCAtIFRoZSBvcmlnaW5hbCBmaWVsZCBuYW1lIHRvIHJlc29sdmVcbiAgICogQHJldHVybnMgVGhlIGNvcnJlc3BvbmRpbmcgUGF5bG9hZCBDTVMgZmllbGQgbmFtZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBJZiBzY2hlbWFbJ3VzZXInXS5maWVsZHNbJ2VtYWlsJ10uZmllbGROYW1lIGlzICdlbWFpbEFkZHJlc3MnXG4gICAqIGdldEZpZWxkTmFtZSgndXNlcicsICdlbWFpbCcpIC8vIFJldHVybnMgJ2VtYWlsQWRkcmVzcydcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gU3BlY2lhbCBjYXNlIGZvciBJRCBmaWVsZHNcbiAgICogZ2V0RmllbGROYW1lKCd1c2VyJywgJ2lkJykgLy8gQWx3YXlzIHJldHVybnMgJ2lkJ1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBJZiBmaWVsZCBkb2Vzbid0IGV4aXN0IGluIHNjaGVtYSBvciBoYXMgbm8gZmllbGROYW1lIG1hcHBpbmdcbiAgICogZ2V0RmllbGROYW1lKCd1c2VyJywgJ2N1c3RvbScpIC8vIFJldHVybnMgJ2N1c3RvbSdcbiAgICpcbiAgICogQHdhcm5pbmcgSWYgYSBmaWVsZE5hbWUgaXMgb3ZlcnJpZGRlbiBpbiB0aGUgcGF5bG9hZCBjb2xsZWN0aW9uIGNvbmZpZyB1c2luZyB0aGUgY29sbGVjdGlvbk92ZXJyaWRlIG9wdGlvblxuICAgKiB3aXRob3V0IHVwZGF0aW5nIHRoZSBzY2hlbWEgbWFwcGluZywgdGhpcyBmdW5jdGlvbiBtYXkgcmV0dXJuIGluY29ycmVjdCBmaWVsZCBuYW1lc1xuICAgKi9cbiAgZnVuY3Rpb24gZ2V0RmllbGROYW1lKG1vZGVsOiBNb2RlbEtleSwgZmllbGQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gU3BlY2lhbCBjYXNlOiAnaWQnIG9yICdfaWQnIGlzIGFsd2F5cyBwcmVzZXJ2ZWQgYXMtaXNcbiAgICBpZiAoWydpZCcsICdfaWQnXS5pbmNsdWRlcyhmaWVsZCkpIHtcbiAgICAgIHJldHVybiBmaWVsZFxuICAgIH1cblxuICAgIC8vIExvb2sgdXAgdGhlIGZpZWxkIGluIHRoZSBzY2hlbWFcbiAgICBjb25zdCBmaWVsZERlZmluaXRpb24gPSBzY2hlbWFbbW9kZWxdPy5maWVsZHNbZmllbGRdXG5cbiAgICAvLyBVc2UgdGhlIGNvbmZpZ3VyZWQgZmllbGROYW1lIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0byBvcmlnaW5hbFxuICAgIGNvbnN0IGZpZWxkTmFtZSA9IGZpZWxkRGVmaW5pdGlvbj8uZmllbGROYW1lIHx8IGZpZWxkXG5cbiAgICAvLyBMb2cgdGhlIGZpZWxkIHJlc29sdXRpb24gZm9yIGRlYnVnZ2luZ1xuICAgIGRlYnVnTG9nKFsnZ2V0RmllbGQ6ICcsIHsgbW9kZWwsIG9yaWdpbmFsRmllbGQ6IGZpZWxkLCBmaWVsZE5hbWUgfV0pXG5cbiAgICByZXR1cm4gZmllbGROYW1lXG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIGZpZWxkIGlzIGEgcmVsYXRpb25zaGlwIGZpZWxkIGJ5IGNoZWNraW5nIGZvciBhIHJlZmVyZW5jZXMgcHJvcGVydHkuXG4gICAqXG4gICAqIFJlbGF0aW9uc2hpcCBmaWVsZHMgaW4gdGhlIHNjaGVtYSBoYXZlIGEgJ3JlZmVyZW5jZXMnIHByb3BlcnR5IHRoYXQgcG9pbnRzIHRvIGFub3RoZXIgbW9kZWwuXG4gICAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoaXMgcHJvcGVydHkgZXhpc3RzIHRvIGlkZW50aWZ5IHJlbGF0aW9uc2hpcCBmaWVsZHMuXG4gICAqXG4gICAqIEBwYXJhbSBmaWVsZEtleSAtIFRoZSBrZXkgb2YgdGhlIGZpZWxkIHRvIGNoZWNrIGluIHRoZSBzY2hlbWFcbiAgICogQHBhcmFtIHNjaGVtYUZpZWxkcyAtIE9iamVjdCBjb250YWluaW5nIGFsbCBmaWVsZHMgZnJvbSB0aGUgc2NoZW1hIGZvciBhIHNwZWNpZmljIG1vZGVsXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGZpZWxkIGlzIGEgcmVsYXRpb25zaGlwIGZpZWxkIChoYXMgcmVmZXJlbmNlcyksIGZhbHNlIG90aGVyd2lzZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBJZiBzY2hlbWEudXNlci5maWVsZHMucG9zdHMgaGFzIHsgcmVmZXJlbmNlczoge30gfVxuICAgKiBpc1JlbGF0aW9uc2hpcEZpZWxkKCdwb3N0cycsIHNjaGVtYS51c2VyLmZpZWxkcykgLy8gUmV0dXJucyB0cnVlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIElmIHNjaGVtYS51c2VyLmZpZWxkcy5lbWFpbCBoYXMgbm8gcmVmZXJlbmNlcyBwcm9wZXJ0eVxuICAgKiBpc1JlbGF0aW9uc2hpcEZpZWxkKCdlbWFpbCcsIHNjaGVtYS51c2VyLmZpZWxkcykgLy8gUmV0dXJucyBmYWxzZVxuICAgKi9cbiAgZnVuY3Rpb24gaXNSZWxhdGlvbnNoaXBGaWVsZChmaWVsZEtleTogc3RyaW5nLCBzY2hlbWFGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEZpZWxkQXR0cmlidXRlPEZpZWxkVHlwZT4+KTogYm9vbGVhbiB7XG4gICAgLy8gQSBmaWVsZCBpcyBhIHJlbGF0aW9uc2hpcCBmaWVsZCBpZiBpdCBoYXMgYSAncmVmZXJlbmNlcycgcHJvcGVydHkgZGVmaW5lZFxuICAgIHJldHVybiBzY2hlbWFGaWVsZHNbZmllbGRLZXldPy5yZWZlcmVuY2VzICE9PSB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgdmFsdWUgaXMgYSB2YWxpZCBkYXRlIHN0cmluZyB0aGF0IGNhbiBiZSBwYXJzZWQgaW50byBhIERhdGUgb2JqZWN0LlxuICAgKlxuICAgKiBUaGlzIHV0aWxpdHkgZnVuY3Rpb24gY2hlY2tzIGlmIGEgdmFsdWUgaXMgYSBzdHJpbmcgYW5kIGNhbiBiZSBzdWNjZXNzZnVsbHkgcGFyc2VkXG4gICAqIGludG8gYSBKYXZhU2NyaXB0IERhdGUgb2JqZWN0IHVzaW5nIERhdGUucGFyc2UoKS4gSXQncyB1c2VkIHRvIGlkZW50aWZ5IGRhdGUgZmllbGRzXG4gICAqIGR1cmluZyBkYXRhIHRyYW5zZm9ybWF0aW9uIHByb2Nlc3Nlcy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrIGlmIGl0J3MgYSB2YWxpZCBkYXRlIHN0cmluZ1xuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2YWx1ZSBpcyBhIHN0cmluZyB0aGF0IGNhbiBiZSBwYXJzZWQgYXMgYSBkYXRlLCBmYWxzZSBvdGhlcndpc2VcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gUmV0dXJucyB0cnVlIGZvciBJU08gZGF0ZSBzdHJpbmdzXG4gICAqIGlzRGF0ZUZpZWxkKCcyMDIzLTAxLTAxVDEyOjAwOjAwWicpIC8vIHRydWVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gUmV0dXJucyBmYWxzZSBmb3Igbm9uLWRhdGUgc3RyaW5ncyBvciBvdGhlciB0eXBlc1xuICAgKiBpc0RhdGVGaWVsZCgnbm90IGEgZGF0ZScpIC8vIGZhbHNlXG4gICAqIGlzRGF0ZUZpZWxkKDEyMykgLy8gZmFsc2VcbiAgICovXG4gIGZ1bmN0aW9uIGlzRGF0ZUZpZWxkKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAvLyBDaGVjayBpZiB2YWx1ZSBpcyBhIHN0cmluZyBhbmQgY2FuIGJlIHBhcnNlZCBhcyBhIHZhbGlkIGRhdGVcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhaXNOYU4oRGF0ZS5wYXJzZSh2YWx1ZSkpXG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdHMgYSBzaW5nbGUgSUQgdmFsdWUgZnJvbSBhIFBheWxvYWQgd2hlcmUgY2xhdXNlIGlmIGl0IHJlcHJlc2VudHMgYSBzaW1wbGUgSUQgcXVlcnkuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gYW5hbHl6ZXMgYSBQYXlsb2FkIHdoZXJlIGNsYXVzZSB0byBkZXRlcm1pbmUgaWYgaXQncyBhIHNpbXBsZSBxdWVyeSBmb3IgYVxuICAgKiBzaW5nbGUgZG9jdW1lbnQgYnkgSUQuIEl0IHN1cHBvcnRzIGJvdGggJ2lkJyBhbmQgJ19pZCcgZmllbGRzIHdpdGggJ2VxdWFscycgb3IgJ2NvbnRhaW5zJ1xuICAgKiBvcGVyYXRvcnMuIFRoaXMgaXMgdXNlZnVsIGZvciBvcHRpbWl6aW5nIHF1ZXJpZXMgd2hlbiB3ZSBvbmx5IG5lZWQgdG8gZmV0Y2ggYSBzaW5nbGUgZG9jdW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB3aGVyZSAtIFRoZSBQYXlsb2FkIHdoZXJlIGNsYXVzZSB0byBhbmFseXplXG4gICAqIEByZXR1cm5zIFRoZSBJRCB2YWx1ZSAoc3RyaW5nIG9yIG51bWJlcikgaWYgdGhlIHdoZXJlIGNsYXVzZSBpcyBhIHNpbXBsZSBJRCBxdWVyeSwgbnVsbCBvdGhlcndpc2VcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gUmV0dXJucyAnMTIzJyBmb3IgYSBzaW1wbGUgZXF1YWxzIHF1ZXJ5XG4gICAqIHNpbmdsZUlkUXVlcnkoeyBpZDogeyBlcXVhbHM6ICcxMjMnIH0gfSkgLy8gJzEyMydcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gUmV0dXJucyA0NTYgZm9yIGEgc2ltcGxlIGVxdWFscyBxdWVyeSB3aXRoIG51bWJlciBJRFxuICAgKiBzaW5nbGVJZFF1ZXJ5KHsgX2lkOiB7IGVxdWFsczogNDU2IH0gfSkgLy8gNDU2XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIFJldHVybnMgJzc4OScgZm9yIGEgY29udGFpbnMgcXVlcnkgd2l0aCBhIHNpbmdsZSB2YWx1ZVxuICAgKiBzaW5nbGVJZFF1ZXJ5KHsgaWQ6IHsgY29udGFpbnM6IFsnNzg5J10gfSB9KSAvLyAnNzg5J1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiAvLyBSZXR1cm5zIG51bGwgZm9yIGNvbXBsZXggcXVlcmllc1xuICAgKiBzaW5nbGVJZFF1ZXJ5KHsgYW5kOiBbeyBpZDogeyBlcXVhbHM6ICcxMjMnIH0gfV0gfSkgLy8gbnVsbFxuICAgKi9cbiAgZnVuY3Rpb24gc2luZ2xlSWRRdWVyeSh3aGVyZTogUGF5bG9hZFdoZXJlKSB7XG4gICAgLy8gUmV0dXJuIG51bGwgZm9yIGVtcHR5IHdoZXJlIGNsYXVzZXMgb3IgY29tcGxleCBxdWVyaWVzIHdpdGggJ2FuZCcvJ29yJyBvcGVyYXRvcnNcbiAgICBpZiAoIXdoZXJlIHx8ICdhbmQnIGluIHdoZXJlIHx8ICdvcicgaW4gd2hlcmUpIHJldHVybiBudWxsXG5cbiAgICAvLyBDaGVjayBpZiB0aGUgd2hlcmUgY2xhdXNlIGNvbnRhaW5zIGVpdGhlciAnaWQnIG9yICdfaWQnIGZpZWxkXG4gICAgaWYgKFsnaWQnLCAnX2lkJ10uc29tZSgoZmllbGQpID0+IGZpZWxkIGluIHdoZXJlKSkge1xuICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIElEIGZpZWxkIGlzIGJlaW5nIHVzZWQgKHN1cHBvcnQgYm90aCAnaWQnIGFuZCAnX2lkJylcbiAgICAgIGNvbnN0IGlkRmllbGQgPSAnaWQnIGluIHdoZXJlID8gJ2lkJyA6ICdfaWQnXG4gICAgICBjb25zdCBjb25kaXRpb24gPSB3aGVyZVtpZEZpZWxkXVxuXG4gICAgICAvLyBQcm9jZXNzIHRoZSBlcXVhbHMgb3BlcmF0b3IgY2FzZVxuICAgICAgaWYgKGNvbmRpdGlvbiAmJiB0eXBlb2YgY29uZGl0aW9uID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShjb25kaXRpb24pICYmICdlcXVhbHMnIGluIGNvbmRpdGlvbikge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbmRpdGlvbi5lcXVhbHNcbiAgICAgICAgLy8gT25seSByZXR1cm4gc3RyaW5nIG9yIG51bWJlciBJRCB2YWx1ZXNcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFByb2Nlc3MgdGhlIGNvbnRhaW5zIG9wZXJhdG9yIGNhc2Ugd2l0aCBhIHNpbmdsZSB2YWx1ZVxuICAgICAgaWYgKFxuICAgICAgICBjb25kaXRpb24gJiZcbiAgICAgICAgdHlwZW9mIGNvbmRpdGlvbiA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgIUFycmF5LmlzQXJyYXkoY29uZGl0aW9uKSAmJlxuICAgICAgICAnY29udGFpbnMnIGluIGNvbmRpdGlvbiAmJlxuICAgICAgICBBcnJheS5pc0FycmF5KGNvbmRpdGlvbi5jb250YWlucykgJiZcbiAgICAgICAgY29uZGl0aW9uLmNvbnRhaW5zLmxlbmd0aCA9PT0gMVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gY29uZGl0aW9uLmNvbnRhaW5zWzBdXG4gICAgICAgIC8vIE9ubHkgcmV0dXJuIHN0cmluZyBvciBudW1iZXIgSUQgdmFsdWVzXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBudWxsIGlmIG5vIHZhbGlkIElEIHF1ZXJ5IHdhcyBmb3VuZFxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplcyBkYXRhIHZhbHVlcyBiYXNlZCBvbiBmaWVsZCB0eXBlIGFuZCByZXF1aXJlZCBJRCB0eXBlXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0eXBlIGNvbnZlcnNpb24gZm9yIHJlbGF0aW9uc2hpcCBmaWVsZHMgdG8gZW5zdXJlXG4gICAqIElEcyBhcmUgaW4gdGhlIGNvcnJlY3QgZm9ybWF0IChzdHJpbmcgb3IgbnVtYmVyKSBiYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGtleSAtIFRoZSBmaWVsZCBrZXkvbmFtZVxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gbm9ybWFsaXplXG4gICAqIEBwYXJhbSBpc1JlbGF0ZWRGaWVsZCAtIFdoZXRoZXIgdGhpcyBmaWVsZCBpcyBhIHJlbGF0aW9uc2hpcCBmaWVsZFxuICAgKiBAcGFyYW0gaWRUeXBlIC0gVGhlIGV4cGVjdGVkIElEIHR5cGUgKCdudW1iZXInIG9yICd0ZXh0JylcbiAgICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgdmFsdWVcbiAgICovXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZURhdGEoe1xuICAgIGtleSxcbiAgICB2YWx1ZSxcbiAgICBpc1JlbGF0ZWRGaWVsZCxcbiAgICBpZFR5cGVcbiAgfToge1xuICAgIGtleTogc3RyaW5nXG4gICAgdmFsdWU6IGFueVxuICAgIGlzUmVsYXRlZEZpZWxkOiBib29sZWFuXG4gICAgaWRUeXBlOiAnbnVtYmVyJyB8ICd0ZXh0J1xuICB9KSB7XG4gICAgLy8gU2tpcCBwcm9jZXNzaW5nIGZvciBudWxsL3VuZGVmaW5lZCB2YWx1ZXNcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfVxuXG4gICAgaWYgKFsnaWQnLCAnX2lkJ10uaW5jbHVkZXMoa2V5KSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgaWRUeXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUludCh2YWx1ZSwgMTApXG4gICAgICAgIGlmICghaXNOYU4ocGFyc2VkKSkge1xuICAgICAgICAgIGRlYnVnTG9nKFtgSUQgY29udmVyc2lvbjogJHtrZXl9IGNvbnZlcnRpbmcgc3RyaW5nIElEIHRvIG51bWJlcmAsIHsgb3JpZ2luYWw6IHZhbHVlLCBjb252ZXJ0ZWQ6IHBhcnNlZCB9XSlcbiAgICAgICAgICByZXR1cm4gcGFyc2VkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlkVHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgIGNvbnN0IHN0cmluZ0lkID0gU3RyaW5nKHZhbHVlKVxuICAgICAgICBkZWJ1Z0xvZyhbYElEIGNvbnZlcnNpb246ICR7a2V5fSBjb252ZXJ0aW5nIG51bWJlciBJRCB0byBzdHJpbmdgLCB7IG9yaWdpbmFsOiB2YWx1ZSwgY29udmVydGVkOiBzdHJpbmdJZCB9XSlcbiAgICAgICAgcmV0dXJuIHN0cmluZ0lkXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT25seSBwcm9jZXNzIHJlbGF0aW9uc2hpcCBmaWVsZHMgdGhhdCBuZWVkIHR5cGUgY29udmVyc2lvblxuICAgIGlmIChpc1JlbGF0ZWRGaWVsZCkge1xuICAgICAgLy8gSGFuZGxlIHNpbmdsZSBJRCB2YWx1ZSBjb252ZXJzaW9uXG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiBpZFR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KHZhbHVlLCAxMClcbiAgICAgICAgaWYgKCFpc05hTihwYXJzZWQpKSB7XG4gICAgICAgICAgZGVidWdMb2coW2BJRCBjb252ZXJzaW9uOiAke2tleX0gY29udmVydGluZyBzdHJpbmcgSUQgdG8gbnVtYmVyYCwgeyBvcmlnaW5hbDogdmFsdWUsIGNvbnZlcnRlZDogcGFyc2VkIH1dKVxuICAgICAgICAgIHJldHVybiBwYXJzZWRcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlkVHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgIGNvbnN0IHN0cmluZ0lkID0gU3RyaW5nKHZhbHVlKVxuICAgICAgICBkZWJ1Z0xvZyhbYElEIGNvbnZlcnNpb246ICR7a2V5fSBjb252ZXJ0aW5nIG51bWJlciBJRCB0byBzdHJpbmdgLCB7IG9yaWdpbmFsOiB2YWx1ZSwgY29udmVydGVkOiBzdHJpbmdJZCB9XSlcbiAgICAgICAgcmV0dXJuIHN0cmluZ0lkXG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBhcnJheSBvZiBJRHMgLSBtYXAgZWFjaCB2YWx1ZSB0byB0aGUgY29ycmVjdCB0eXBlXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCgoaWQpID0+IHtcbiAgICAgICAgICAvLyBTa2lwIG51bGwvdW5kZWZpbmVkIHZhbHVlcyBpbiBhcnJheXNcbiAgICAgICAgICBpZiAoaWQgPT09IG51bGwgfHwgaWQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGlkXG5cbiAgICAgICAgICBpZiAoaWRUeXBlID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUludChpZCwgMTApXG4gICAgICAgICAgICByZXR1cm4gIWlzTmFOKHBhcnNlZCkgPyBwYXJzZWQgOiBpZFxuICAgICAgICAgIH0gZWxzZSBpZiAoaWRUeXBlID09PSAndGV4dCcgJiYgdHlwZW9mIGlkID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhpZClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGlkXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIG9yaWdpbmFsIHZhbHVlIGlmIG5vIGNvbnZlcnNpb24gd2FzIG5lZWRlZCBvciBhcHBsaWNhYmxlXG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBpbnB1dCBkYXRhIGZyb20gYmV0dGVyLWF1dGggdG8gUGF5bG9hZCBDTVMgZm9ybWF0XG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gaGFuZGxlczpcbiAgICogMS4gRmllbGQgbmFtZSBtYXBwaW5nIGFjY29yZGluZyB0byBzY2hlbWEgZGVmaW5pdGlvbnNcbiAgICogMi4gSUQgdHlwZSBjb252ZXJzaW9uIGZvciByZWxhdGlvbnNoaXAgZmllbGRzXG4gICAqIDMuIFByb3BlciBkYXRhIG5vcm1hbGl6YXRpb24gYmFzZWQgb24gZmllbGQgdHlwZXNcbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBUaGUgaW5wdXQgZGF0YSBmcm9tIGJldHRlci1hdXRoXG4gICAqIEBwYXJhbSBtb2RlbCAtIFRoZSBtb2RlbCBuYW1lIGluIHRoZSBzY2hlbWFcbiAgICogQHBhcmFtIGlkVHlwZSAtIFRoZSBleHBlY3RlZCBJRCB0eXBlICgnbnVtYmVyJyBvciAndGV4dCcpXG4gICAqIEByZXR1cm5zIFRyYW5zZm9ybWVkIGRhdGEgY29tcGF0aWJsZSB3aXRoIFBheWxvYWQgQ01TXG4gICAqL1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1JbnB1dCh7XG4gICAgZGF0YSxcbiAgICBtb2RlbCxcbiAgICBpZFR5cGVcbiAgfToge1xuICAgIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgICBtb2RlbDogTW9kZWxLZXlcbiAgICBpZFR5cGU6ICdudW1iZXInIHwgJ3RleHQnXG4gIH0pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBjb25zdCB0cmFuc2Zvcm1lZERhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fVxuICAgIGNvbnN0IHNjaGVtYUZpZWxkcyA9IHNjaGVtYT8uW21vZGVsXT8uZmllbGRzID8/IHt9XG5cbiAgICAvLyBQcm9jZXNzIGVhY2ggZmllbGQgaW4gdGhlIGlucHV0IGRhdGFcbiAgICBPYmplY3QuZW50cmllcyhkYXRhKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIC8vIFNraXAgbnVsbC91bmRlZmluZWQgdmFsdWVzXG4gICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoaXMgaXMgYSByZWxhdGlvbnNoaXAgZmllbGRcbiAgICAgIGNvbnN0IGlzUmVsYXRlZEZpZWxkID0gaXNSZWxhdGlvbnNoaXBGaWVsZChrZXksIHNjaGVtYUZpZWxkcylcblxuICAgICAgLy8gR2V0IHRoZSBtYXBwZWQgZmllbGQgbmFtZSBmcm9tIHNjaGVtYSAoaWYgYW55KVxuICAgICAgY29uc3Qgc2NoZW1hRmllbGROYW1lID0gc2NoZW1hRmllbGRzW2tleV0/LmZpZWxkTmFtZVxuXG4gICAgICAvLyBOb3JtYWxpemUgdGhlIGRhdGEgdmFsdWUgYmFzZWQgb24gZmllbGQgdHlwZSBhbmQgSUQgdHlwZVxuICAgICAgY29uc3Qgbm9ybWFsaXplZERhdGEgPSBub3JtYWxpemVEYXRhKHtcbiAgICAgICAgaWRUeXBlLFxuICAgICAgICBrZXksXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBpc1JlbGF0ZWRGaWVsZFxuICAgICAgfSlcblxuICAgICAgLy8gVXNlIHRoZSBzY2hlbWEtZGVmaW5lZCBmaWVsZCBuYW1lIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHVzZSBvcmlnaW5hbCBrZXlcbiAgICAgIGNvbnN0IHRhcmdldEZpZWxkTmFtZSA9IHNjaGVtYUZpZWxkTmFtZSB8fCBrZXlcbiAgICAgIHRyYW5zZm9ybWVkRGF0YVt0YXJnZXRGaWVsZE5hbWVdID0gbm9ybWFsaXplZERhdGFcbiAgICB9KVxuXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkRGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgUGF5bG9hZCBDTVMgZG9jdW1lbnQgb3V0cHV0IHRvIG1hdGNoIEJldHRlckF1dGggc2NoZW1hIGV4cGVjdGF0aW9ucy5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHNldmVyYWwgY3JpdGljYWwgdHJhbnNmb3JtYXRpb25zOlxuICAgKlxuICAgKiAxLiBJRCBDb252ZXJzaW9uOiBFbnN1cmVzIGFsbCBJRCBmaWVsZHMgYXJlIHN0cmluZ3MgYXMgcmVxdWlyZWQgYnkgQmV0dGVyQXV0aFxuICAgKiAgICAoc2VlOiBodHRwczovL2dpdGh1Yi5jb20vYmV0dGVyLWF1dGgvYmV0dGVyLWF1dGgvYmxvYi9tYWluL3BhY2thZ2VzL2JldHRlci1hdXRoL3NyYy9kYi9zY2hlbWEudHMjTDEyNSlcbiAgICpcbiAgICogMi4gUmVsYXRpb25zaGlwIEZpZWxkIE1hcHBpbmc6IEFsaWducyByZWxhdGlvbnNoaXAgZmllbGRzIHdpdGggQmV0dGVyQXV0aCBzY2hlbWEgbmFtaW5nIGNvbnZlbnRpb25zXG4gICAqICAgIGFuZCBlbnN1cmVzIHByb3BlciBJRCB0eXBlIGhhbmRsaW5nXG4gICAqXG4gICAqIDMuIERhdGUgQ29udmVyc2lvbjogVHJhbnNmb3JtcyBkYXRlIHN0cmluZ3MgZnJvbSBQYXlsb2FkIGludG8gRGF0ZSBvYmplY3RzIGZvciBCZXR0ZXJBdXRoXG4gICAqXG4gICAqIE5vdGU6IFdoaWxlIHNldHRpbmcgZGVwdGg6IDEgaW4gUGF5bG9hZCBvcGVyYXRpb25zIHNpbXBsaWZpZXMgdGhpcyBwcm9jZXNzIGJ5IGF2b2lkaW5nXG4gICAqIGRlZXBseSBuZXN0ZWQgb2JqZWN0cywgd2UgbWFpbnRhaW4gY29tcHJlaGVuc2l2ZSBjaGVja3MgZm9yIHJvYnVzdG5lc3MuXG4gICAqXG4gICAqIEBwYXJhbSBkb2MgLSBUaGUgZG9jdW1lbnQgcmV0dXJuZWQgZnJvbSBQYXlsb2FkIENNU1xuICAgKiBAcGFyYW0gbW9kZWwgLSBUaGUgbW9kZWwgbmFtZSBpbiB0aGUgQmV0dGVyQXV0aCBzY2hlbWFcbiAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIGRvY3VtZW50IGNvbXBhdGlibGUgd2l0aCBCZXR0ZXJBdXRoXG4gICAqL1xuICBmdW5jdGlvbiB0cmFuc2Zvcm1PdXRwdXQ8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsPih7IGRvYywgbW9kZWwgfTogeyBkb2M6IFQ7IG1vZGVsOiBNb2RlbEtleSB9KTogVCB7XG4gICAgaWYgKCFkb2MgfHwgdHlwZW9mIGRvYyAhPT0gJ29iamVjdCcpIHJldHVybiBkb2NcblxuICAgIGNvbnN0IHJlc3VsdCA9IHsgLi4uZG9jIH1cbiAgICBjb25zdCBzY2hlbWFGaWVsZHMgPSBzY2hlbWE/Llttb2RlbF0/LmZpZWxkcyA/PyB7fVxuXG4gICAgLy8gSWRlbnRpZnkgcmVsYXRpb25zaGlwIGZpZWxkcyB3aXRoIGN1c3RvbSBmaWVsZCBuYW1lIG1hcHBpbmdzXG4gICAgY29uc3QgcmVsYXRpb25zaGlwRmllbGRzID0gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHNjaGVtYUZpZWxkcykuZmlsdGVyKChba2V5XSkgPT4gaXNSZWxhdGlvbnNoaXBGaWVsZChrZXksIHNjaGVtYUZpZWxkcykpKVxuXG4gICAgT2JqZWN0LmVudHJpZXMoZG9jKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm5cblxuICAgICAgLy8gQ29udmVydCBJRCBmaWVsZHMgdG8gc3RyaW5ncyBmb3IgQmV0dGVyQXV0aCBjb21wYXRpYmlsaXR5XG4gICAgICBpZiAoWydpZCcsICdfaWQnXS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gU3RyaW5nKHZhbHVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIHJlbGF0aW9uc2hpcCBmaWVsZHMgd2l0aCByZW5hbWVkIGZpZWxkTmFtZXNcbiAgICAgIGNvbnN0IG9yaWdpbmFsUmVsYXRlZEZpZWxkS2V5ID0gT2JqZWN0LmtleXMocmVsYXRpb25zaGlwRmllbGRzKS5maW5kKChrKSA9PiByZWxhdGlvbnNoaXBGaWVsZHNba10uZmllbGROYW1lID09PSBrZXkpXG4gICAgICBpZiAob3JpZ2luYWxSZWxhdGVkRmllbGRLZXkpIHtcbiAgICAgICAgbm9ybWFsaXplRG9jdW1lbnRJZHMocmVzdWx0LCBvcmlnaW5hbFJlbGF0ZWRGaWVsZEtleSwga2V5LCB2YWx1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIENvbnZlcnQgSVNPIGRhdGUgc3RyaW5ncyB0byBEYXRlIG9iamVjdHMgZm9yIEJldHRlckF1dGhcbiAgICAgIGlmIChpc0RhdGVGaWVsZCh2YWx1ZSkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBuZXcgRGF0ZSh2YWx1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiByZXN1bHQgYXMgVFxuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZXMgSUQgZmllbGRzIGZvciBib3RoIHByaW1hcnkgYW5kIHJlbGF0aW9uc2hpcCBkb2N1bWVudHMuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gZW5zdXJlcyBjb25zaXN0ZW50IElEIGhhbmRsaW5nIGJldHdlZW4gQmV0dGVyQXV0aCBhbmQgUGF5bG9hZCBDTVMgYnk6XG4gICAqIDEuIENvbnZlcnRpbmcgYWxsIElEcyB0byBzdHJpbmdzIGZvciBCZXR0ZXJBdXRoIChzdG9yZWQgaW4gb3JpZ2luYWxLZXkpXG4gICAqIDIuIFByZXNlcnZpbmcgb3JpZ2luYWwgSUQgdHlwZXMgZm9yIFBheWxvYWQgQ01TIChzdG9yZWQgaW4gZmllbGROYW1lKVxuICAgKlxuICAgKiBUaGUgZnVuY3Rpb24gaGFuZGxlcyB2YXJpb3VzIElEIGZvcm1hdHM6XG4gICAqIC0gUHJpbWl0aXZlIHZhbHVlcyAoc3RyaW5nL251bWJlciBJRHMpXG4gICAqIC0gT2JqZWN0IHJlZmVyZW5jZXMgd2l0aCBJRCBwcm9wZXJ0aWVzXG4gICAqIC0gQXJyYXlzIG9mIGVpdGhlciBwcmltaXRpdmUgSURzIG9yIG9iamVjdCByZWZlcmVuY2VzXG4gICAqXG4gICAqIEBwYXJhbSByZXN1bHQgLSBUaGUgcmVzdWx0IG9iamVjdCBiZWluZyB0cmFuc2Zvcm1lZFxuICAgKiBAcGFyYW0gb3JpZ2luYWxLZXkgLSBUaGUgb3JpZ2luYWwgZmllbGQga2V5IGZyb20gQmV0dGVyQXV0aCBzY2hlbWFcbiAgICogQHBhcmFtIGZpZWxkTmFtZSAtIFRoZSByZW5hbWVkIGZpZWxkIGFzIHVzZWQgaW4gUGF5bG9hZCBDTVNcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIElEIHZhbHVlIHRvIG5vcm1hbGl6ZSAocHJpbWl0aXZlLCBvYmplY3QsIG9yIGFycmF5KVxuICAgKi9cbiAgZnVuY3Rpb24gbm9ybWFsaXplRG9jdW1lbnRJZHMocmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBvcmlnaW5hbEtleTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIC8vIENhc2UgMTogUHJpbWl0aXZlIElEIHZhbHVlIChzdHJpbmcgb3IgbnVtYmVyKVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIC8vIEZvciBCZXR0ZXJBdXRoOiBBbHdheXMgdXNlIHN0cmluZyBJRHNcbiAgICAgIHJlc3VsdFtvcmlnaW5hbEtleV0gPSBTdHJpbmcodmFsdWUpXG4gICAgICAvLyBGb3IgUGF5bG9hZDogS2VlcCBvcmlnaW5hbCB0eXBlXG4gICAgICByZXN1bHRbZmllbGROYW1lXSA9IHZhbHVlXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBDYXNlIDI6IE9iamVjdCB3aXRoIElEIHByb3BlcnR5XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgJ2lkJyBpbiB2YWx1ZSkge1xuICAgICAgLy8gRm9yIEJldHRlckF1dGg6IEV4dHJhY3QgYW5kIHN0cmluZ2lmeSB0aGUgSURcbiAgICAgIHJlc3VsdFtvcmlnaW5hbEtleV0gPSBTdHJpbmcodmFsdWUuaWQpXG4gICAgICAvLyBGb3IgUGF5bG9hZDogRXh0cmFjdCBJRCBidXQgcHJlc2VydmUgdHlwZVxuICAgICAgcmVzdWx0W2ZpZWxkTmFtZV0gPSB2YWx1ZS5pZFxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gQ2FzZSAzOiBBcnJheSBvZiBJRHMgb3IgcmVmZXJlbmNlc1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBDaGVjayBpZiBhcnJheSBjb250YWlucyBvYmplY3RzIHdpdGggSUQgcHJvcGVydGllc1xuICAgICAgaWYgKHZhbHVlLmV2ZXJ5KChpdGVtKSA9PiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCAmJiAnaWQnIGluIGl0ZW0pKSB7XG4gICAgICAgIC8vIEFycmF5IG9mIG9iamVjdHMgd2l0aCBJRHNcbiAgICAgICAgcmVzdWx0W29yaWdpbmFsS2V5XSA9IHZhbHVlLm1hcCgoaXRlbSkgPT4gU3RyaW5nKGl0ZW0uaWQpKVxuICAgICAgICByZXN1bHRbZmllbGROYW1lXSA9IHZhbHVlLm1hcCgoaXRlbSkgPT4gaXRlbS5pZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFycmF5IG9mIHByaW1pdGl2ZSBJRHNcbiAgICAgICAgcmVzdWx0W29yaWdpbmFsS2V5XSA9IHZhbHVlLm1hcCgoaXRlbSkgPT4gU3RyaW5nKGl0ZW0pKVxuICAgICAgICByZXN1bHRbZmllbGROYW1lXSA9IHZhbHVlLm1hcCgoaXRlbSkgPT4gaXRlbSlcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIE5vdGU6IElmIHZhbHVlIGRvZXNuJ3QgbWF0Y2ggYW55IGV4cGVjdGVkIGZvcm1hdCwgbm8gY2hhbmdlcyBhcmUgbWFkZVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgQmV0dGVyQXV0aCBvcGVyYXRvciB0byB0aGUgZXF1aXZhbGVudCBQYXlsb2FkIENNUyBxdWVyeSBvcGVyYXRvclxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIG1hcHMgc3RhbmRhcmQgcXVlcnkgb3BlcmF0b3JzIGZyb20gQmV0dGVyQXV0aCdzIGZvcm1hdCB0b1xuICAgKiB0aGUgc3BlY2lmaWMgZm9ybWF0IGV4cGVjdGVkIGJ5IFBheWxvYWQgQ01TJ3MgcXVlcnkgZW5naW5lLlxuICAgKlxuICAgKiBAcGFyYW0gb3BlcmF0b3IgLSBUaGUgQmV0dGVyQXV0aCBvcGVyYXRvciBzdHJpbmcgKGUuZy4sICdlcScsICdndCcsICdjb250YWlucycpXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBiZSB1c2VkIHdpdGggdGhlIG9wZXJhdG9yXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIHRoZSBQYXlsb2FkLWNvbXBhdGlibGUgb3BlcmF0b3IgYW5kIHZhbHVlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIFJldHVybnMgeyBlcXVhbHM6ICd0ZXN0QGV4YW1wbGUuY29tJyB9XG4gICAqIG9wZXJhdG9yVG9QYXlsb2FkKCdlcScsICd0ZXN0QGV4YW1wbGUuY29tJylcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gUmV0dXJucyB7IGdyZWF0ZXJfdGhhbjogMTAwIH1cbiAgICogb3BlcmF0b3JUb1BheWxvYWQoJ2d0JywgMTAwKVxuICAgKi9cbiAgZnVuY3Rpb24gb3BlcmF0b3JUb1BheWxvYWQob3BlcmF0b3I6IHN0cmluZywgdmFsdWU6IGFueSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHN3aXRjaCAob3BlcmF0b3IpIHtcbiAgICAgIGNhc2UgJ2VxJzpcbiAgICAgICAgcmV0dXJuIHsgZXF1YWxzOiB2YWx1ZSB9XG4gICAgICBjYXNlICduZSc6XG4gICAgICAgIHJldHVybiB7IG5vdF9lcXVhbHM6IHZhbHVlIH1cbiAgICAgIGNhc2UgJ2d0JzpcbiAgICAgICAgcmV0dXJuIHsgZ3JlYXRlcl90aGFuOiB2YWx1ZSB9XG4gICAgICBjYXNlICdndGUnOlxuICAgICAgICByZXR1cm4geyBncmVhdGVyX3RoYW5fZXF1YWw6IHZhbHVlIH1cbiAgICAgIGNhc2UgJ2x0JzpcbiAgICAgICAgcmV0dXJuIHsgbGVzc190aGFuOiB2YWx1ZSB9XG4gICAgICBjYXNlICdsdGUnOlxuICAgICAgICByZXR1cm4geyBsZXNzX3RoYW5fZXF1YWw6IHZhbHVlIH1cbiAgICAgIGNhc2UgJ2NvbnRhaW5zJzpcbiAgICAgICAgcmV0dXJuIHsgY29udGFpbnM6IHZhbHVlIH1cbiAgICAgIGNhc2UgJ2luJzpcbiAgICAgICAgcmV0dXJuIHsgaW46IHZhbHVlIH1cbiAgICAgIGNhc2UgJ3N0YXJ0c193aXRoJzpcbiAgICAgICAgcmV0dXJuIHsgbGlrZTogYCR7dmFsdWV9JWAgfVxuICAgICAgY2FzZSAnZW5kc193aXRoJzpcbiAgICAgICAgcmV0dXJuIHsgbGlrZTogYCUke3ZhbHVlfWAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRmFsbCBiYWNrIHRvIGVxdWFscyBmb3IgdW5yZWNvZ25pemVkIG9wZXJhdG9yc1xuICAgICAgICByZXR1cm4geyBlcXVhbHM6IHZhbHVlIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSB3aGVyZSBjbGF1c2UgdmFsdWUgdG8gdGhlIGFwcHJvcHJpYXRlIHR5cGUgYmFzZWQgb24gZmllbGQgbmFtZSBhbmQgSUQgdHlwZSBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0d28gbWFpbiBzY2VuYXJpb3M6XG4gICAqIDEuIElEIGZpZWxkIGNvbnZlcnNpb24gLSBlbnN1cmVzIElEcyBtYXRjaCB0aGUgZGF0YWJhc2UncyBleHBlY3RlZCB0eXBlIChudW1iZXIgb3Igc3RyaW5nKVxuICAgKiAyLiBPYmplY3Qgd2l0aCBlbWJlZGRlZCBJRCAtIGV4dHJhY3RzIGFuZCBjb252ZXJ0cyB0aGUgSUQgcHJvcGVydHkgZnJvbSBvYmplY3RzXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0IChjYW4gYmUgcHJpbWl0aXZlLCBvYmplY3Qgd2l0aCBJRCwgb3IgYXJyYXkpXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZmllbGQgYmVpbmcgcXVlcmllZFxuICAgKiBAcGFyYW0gaWRUeXBlIC0gVGhlIGV4cGVjdGVkIElEIHR5cGUgaW4gdGhlIGRhdGFiYXNlXG4gICAqIEByZXR1cm5zIFRoZSBjb252ZXJ0ZWQgdmFsdWUgYXBwcm9wcmlhdGUgZm9yIHRoZSBkYXRhYmFzZSBxdWVyeVxuICAgKi9cbiAgZnVuY3Rpb24gY29udmVydFdoZXJlVmFsdWUoeyB2YWx1ZSwgZmllbGROYW1lLCBpZFR5cGUgfTogeyB2YWx1ZTogYW55OyBmaWVsZE5hbWU6IHN0cmluZzsgaWRUeXBlOiAnbnVtYmVyJyB8ICd0ZXh0JyB9KSB7XG4gICAgLy8gQ2hlY2sgaWYgZmllbGQgaXMgYW4gSUQgZmllbGQgKHN1cHBvcnRpbmcgYm90aCBNb25nb0RCLXN0eWxlIF9pZCBhbmQgc3RhbmRhcmQgaWQpXG4gICAgaWYgKFsnaWQnLCAnX2lkJ10uaW5jbHVkZXMoZmllbGROYW1lKSkge1xuICAgICAgLy8gQ2FzZSAxOiBWYWx1ZSBpcyBhbiBvYmplY3QgY29udGFpbmluZyBhbiBJRCBwcm9wZXJ0eVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgJ2lkJyBpbiB2YWx1ZSkge1xuICAgICAgICAvLyBFeHRyYWN0IElEIGZyb20gb2JqZWN0XG4gICAgICAgIGNvbnN0IGlkID0gdmFsdWUuaWRcblxuICAgICAgICAvLyBVc2UgdHlwZSBjb252ZXJzaW9uIGJhc2VkIG9uIGRhdGFiYXNlIGNvbmZpZ3VyYXRpb25cbiAgICAgICAgaWYgKGlkVHlwZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGlkID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGNvbnN0IG51bUlkID0gTnVtYmVyKGlkKVxuICAgICAgICAgIHJldHVybiAhaXNOYU4obnVtSWQpID8gbnVtSWQgOiBpZFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlkVHlwZSA9PT0gJ3RleHQnICYmIHR5cGVvZiBpZCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICByZXR1cm4gU3RyaW5nKGlkKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlkXG4gICAgICB9XG4gICAgICAvLyBDYXNlIDI6IFZhbHVlIGlzIGEgc3RhbmRhbG9uZSBJRCB0aGF0IG5lZWRzIHR5cGUgY29udmVyc2lvblxuICAgICAgLy8gQ29udmVydCBzdHJpbmcgSUQgdG8gbnVtYmVyIGlmIGRhdGFiYXNlIGV4cGVjdHMgbnVtZXJpYyBJRHNcbiAgICAgIGlmIChpZFR5cGUgPT09ICdudW1iZXInICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIWlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsdWUpXG4gICAgICB9XG4gICAgICAvLyBDb252ZXJ0IG51bWVyaWMgSUQgdG8gc3RyaW5nIGlmIGRhdGFiYXNlIGV4cGVjdHMgdGV4dCBJRHNcbiAgICAgIGVsc2UgaWYgKGlkVHlwZSA9PT0gJ3RleHQnICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSlcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuICAgIC8vIEZvciBub24tSUQgZmllbGRzLCByZXR1cm4gdGhlIHZhbHVlIHVuY2hhbmdlZFxuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIEJldHRlciBBdXRoIHdoZXJlIGNsYXVzZXMgdG8gUGF5bG9hZCBDTVMgY29tcGF0aWJsZSB3aGVyZSBjb25kaXRpb25zXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gdHJhbnNmb3JtcyB0aGUgQmV0dGVyIEF1dGggcXVlcnkgZm9ybWF0IGludG8gUGF5bG9hZCdzIHF1ZXJ5IGZvcm1hdCxcbiAgICogaGFuZGxpbmcgZmllbGQgbmFtZSBtYXBwaW5nLCB2YWx1ZSB0eXBlIGNvbnZlcnNpb24sIGFuZCBsb2dpY2FsIG9wZXJhdG9ycyAoQU5EL09SKS5cbiAgICpcbiAgICogVGhlIGZ1bmN0aW9uIGhhbmRsZXMgdGhyZWUgbWFpbiBjYXNlczpcbiAgICogMS4gRW1wdHkgb3IgdW5kZWZpbmVkIHdoZXJlIGNsYXVzZSAtIHJldHVybnMgZW1wdHkgb2JqZWN0XG4gICAqIDIuIFNpbmdsZSBjb25kaXRpb24gLSBjb252ZXJ0cyB0byBhIHNpbXBsZSBmaWVsZC12YWx1ZSBwYWlyXG4gICAqIDMuIE11bHRpcGxlIGNvbmRpdGlvbnMgLSBncm91cHMgYnkgQU5EL09SIGNvbm5lY3RvcnMgYW5kIGJ1aWxkcyBhIGNvbXBsZXggcXVlcnlcbiAgICpcbiAgICogQHBhcmFtIGlkVHlwZSAtIFRoZSBkYXRhYmFzZSBJRCB0eXBlICgnbnVtYmVyJyBvciAndGV4dCcpXG4gICAqIEBwYXJhbSBtb2RlbCAtIFRoZSBtb2RlbC9jb2xsZWN0aW9uIG5hbWUgdG8gcXVlcnlcbiAgICogQHBhcmFtIHdoZXJlIC0gQXJyYXkgb2YgQmV0dGVyIEF1dGggd2hlcmUgY29uZGl0aW9uc1xuICAgKiBAcmV0dXJucyBBIFBheWxvYWQtY29tcGF0aWJsZSB3aGVyZSBjbGF1c2Ugb2JqZWN0XG4gICAqL1xuICBmdW5jdGlvbiBjb252ZXJ0V2hlcmVDbGF1c2UoeyBpZFR5cGUsIG1vZGVsLCB3aGVyZSB9OiB7IGlkVHlwZTogJ251bWJlcicgfCAndGV4dCc7IG1vZGVsOiBNb2RlbEtleTsgd2hlcmU/OiBXaGVyZVtdIH0pOiBQYXlsb2FkV2hlcmUge1xuICAgIC8vIEhhbmRsZSBlbXB0eSB3aGVyZSBjbGF1c2VcbiAgICBpZiAoIXdoZXJlKSByZXR1cm4ge31cblxuICAgIC8vIEhhbmRsZSBzaW5nbGUgY29uZGl0aW9uIGNhc2UgZm9yIG9wdGltaXphdGlvblxuICAgIGlmICh3aGVyZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IHcgPSB3aGVyZVswXVxuICAgICAgaWYgKCF3KSB7XG4gICAgICAgIHJldHVybiB7fVxuICAgICAgfVxuXG4gICAgICAvLyBNYXAgZmllbGQgbmFtZSBhY2NvcmRpbmcgdG8gc2NoZW1hIGFuZCBjb252ZXJ0IHZhbHVlIHRvIGFwcHJvcHJpYXRlIHR5cGVcbiAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGdldEZpZWxkTmFtZShtb2RlbCwgdy5maWVsZClcbiAgICAgIGNvbnN0IHZhbHVlID0gY29udmVydFdoZXJlVmFsdWUoe1xuICAgICAgICB2YWx1ZTogdy52YWx1ZSxcbiAgICAgICAgZmllbGROYW1lLFxuICAgICAgICBpZFR5cGVcbiAgICAgIH0pXG5cbiAgICAgIC8vIENyZWF0ZSB0aGUgUGF5bG9hZCB3aGVyZSBjb25kaXRpb24gd2l0aCBwcm9wZXIgb3BlcmF0b3JcbiAgICAgIGNvbnN0IHJlcyA9IHtcbiAgICAgICAgW2ZpZWxkTmFtZV06IG9wZXJhdG9yVG9QYXlsb2FkKHcub3BlcmF0b3IgPz8gJycsIHZhbHVlKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzXG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIG11bHRpcGxlIGNvbmRpdGlvbnMgYnkgc2VwYXJhdGluZyBBTkQvT1IgY2xhdXNlc1xuICAgIC8vIERlZmF1bHQgdG8gQU5EIGlmIG5vIGNvbm5lY3RvciBpcyBzcGVjaWZpZWRcbiAgICBjb25zdCBhbmQgPSB3aGVyZS5maWx0ZXIoKHcpID0+IHcuY29ubmVjdG9yID09PSAnQU5EJyB8fCAhdy5jb25uZWN0b3IpXG4gICAgY29uc3Qgb3IgPSB3aGVyZS5maWx0ZXIoKHcpID0+IHcuY29ubmVjdG9yID09PSAnT1InKVxuXG4gICAgLy8gUHJvY2VzcyBBTkQgY29uZGl0aW9uc1xuICAgIGNvbnN0IGFuZENsYXVzZSA9IGFuZC5tYXAoKHcpID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGdldEZpZWxkTmFtZShtb2RlbCwgdy5maWVsZClcbiAgICAgIGNvbnN0IHZhbHVlID0gY29udmVydFdoZXJlVmFsdWUoe1xuICAgICAgICB2YWx1ZTogdy52YWx1ZSxcbiAgICAgICAgZmllbGROYW1lLFxuICAgICAgICBpZFR5cGVcbiAgICAgIH0pXG4gICAgICByZXR1cm4ge1xuICAgICAgICBbZmllbGROYW1lXTogb3BlcmF0b3JUb1BheWxvYWQody5vcGVyYXRvciA/PyAnJywgdmFsdWUpXG4gICAgICB9XG4gICAgfSlcblxuICAgIC8vIFByb2Nlc3MgT1IgY29uZGl0aW9uc1xuICAgIGNvbnN0IG9yQ2xhdXNlID0gb3IubWFwKCh3KSA9PiB7XG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBnZXRGaWVsZE5hbWUobW9kZWwsIHcuZmllbGQpXG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbnZlcnRXaGVyZVZhbHVlKHtcbiAgICAgICAgdmFsdWU6IHcudmFsdWUsXG4gICAgICAgIGZpZWxkTmFtZSxcbiAgICAgICAgaWRUeXBlXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW2ZpZWxkTmFtZV06IG9wZXJhdG9yVG9QYXlsb2FkKHcub3BlcmF0b3IgPz8gJycsIHZhbHVlKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICAvLyBDb21iaW5lIEFORCBhbmQgT1IgY2xhdXNlcyBpbnRvIGZpbmFsIFBheWxvYWQgd2hlcmUgb2JqZWN0XG4gICAgLy8gT25seSBpbmNsdWRlIG5vbi1lbXB0eSBjbGF1c2UgYXJyYXlzXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihhbmRDbGF1c2UubGVuZ3RoID8geyBBTkQ6IGFuZENsYXVzZSB9IDoge30pLFxuICAgICAgLi4uKG9yQ2xhdXNlLmxlbmd0aCA/IHsgT1I6IG9yQ2xhdXNlIH0gOiB7fSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBiZXR0ZXItYXV0aCBzZWxlY3QgYXJyYXkgdG8gYSBQYXlsb2FkIHNlbGVjdCBvYmplY3RcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiB0cmFuc2Zvcm1zIHRoZSBiZXR0ZXItYXV0aCBzZWxlY3QgYXJyYXkgKHdoaWNoIGNvbnRhaW5zIGZpZWxkIG5hbWVzKVxuICAgKiBpbnRvIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgUGF5bG9hZCBDTVMncyBxdWVyeSBBUEkgKGFuIG9iamVjdCB3aXRoIGZpZWxkIG5hbWVzIGFzIGtleXNcbiAgICogYW5kIGJvb2xlYW4gdHJ1ZSBhcyB2YWx1ZXMpLlxuICAgKlxuICAgKiBJdCBhbHNvIGhhbmRsZXMgZmllbGQgbmFtZSBtYXBwaW5nIGJldHdlZW4gYmV0dGVyLWF1dGggc2NoZW1hIGFuZCBQYXlsb2FkIGNvbGxlY3Rpb25zXG4gICAqIGJ5IHVzaW5nIHRoZSBnZXRGaWVsZE5hbWUgaGVscGVyIHRvIHJlc29sdmUgdGhlIGNvcnJlY3QgZmllbGQgbmFtZXMuXG4gICAqXG4gICAqIEBwYXJhbSBtb2RlbCAtIFRoZSBtb2RlbC9jb2xsZWN0aW9uIG5hbWUgdG8gZ2V0IGZpZWxkIG1hcHBpbmdzIGZyb21cbiAgICogQHBhcmFtIHNlbGVjdCAtIE9wdGlvbmFsIGFycmF5IG9mIGZpZWxkIG5hbWVzIHRvIHNlbGVjdFxuICAgKiBAcmV0dXJucyBBIFBheWxvYWQtY29tcGF0aWJsZSBzZWxlY3Qgb2JqZWN0IG9yIHVuZGVmaW5lZCBpZiBubyBmaWVsZHMgdG8gc2VsZWN0XG4gICAqIEBleGFtcGxlXG4gICAqIC8vIElucHV0OiBbJ2VtYWlsJywgJ25hbWUnXVxuICAgKiAvLyBPdXRwdXQ6IHsgZW1haWw6IHRydWUsIG5hbWU6IHRydWUgfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udmVydFNlbGVjdChtb2RlbDogTW9kZWxLZXksIHNlbGVjdD86IHN0cmluZ1tdKSB7XG4gICAgLy8gUmV0dXJuIHVuZGVmaW5lZCBpZiBzZWxlY3QgaXMgZW1wdHkgb3Igbm90IHByb3ZpZGVkXG4gICAgaWYgKCFzZWxlY3QgfHwgc2VsZWN0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgLy8gVHJhbnNmb3JtIHRoZSBhcnJheSBvZiBmaWVsZCBuYW1lcyBpbnRvIGEgUGF5bG9hZCBzZWxlY3Qgb2JqZWN0XG4gICAgLy8gd2hpbGUgYWxzbyBtYXBwaW5nIGFueSBmaWVsZCBuYW1lcyB0aGF0IG1pZ2h0IGJlIGRpZmZlcmVudCBpbiBQYXlsb2FkXG4gICAgcmV0dXJuIHNlbGVjdC5yZWR1Y2UoKGFjYywgZmllbGQpID0+ICh7IC4uLmFjYywgW2dldEZpZWxkTmFtZShtb2RlbCwgZmllbGQpXTogdHJ1ZSB9KSwge30pXG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBiZXR0ZXItYXV0aCBzb3J0IG9iamVjdCB0byBhIFBheWxvYWQgc29ydCBzdHJpbmdcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiB0cmFuc2Zvcm1zIHRoZSBiZXR0ZXItYXV0aCBzb3J0IG9iamVjdCAod2hpY2ggY29udGFpbnMgZmllbGQgbmFtZSBhbmQgZGlyZWN0aW9uKVxuICAgKiBpbnRvIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgUGF5bG9hZCBDTVMncyBxdWVyeSBBUEkgKGEgc3RyaW5nIHdpdGggb3B0aW9uYWwgJy0nIHByZWZpeCBmb3IgZGVzY2VuZGluZyBvcmRlcikuXG4gICAqXG4gICAqIEl0IGFsc28gaGFuZGxlcyBmaWVsZCBuYW1lIG1hcHBpbmcgYmV0d2VlbiBiZXR0ZXItYXV0aCBzY2hlbWEgYW5kIFBheWxvYWQgY29sbGVjdGlvbnNcbiAgICogYnkgdXNpbmcgdGhlIGdldEZpZWxkTmFtZSBoZWxwZXIgdG8gcmVzb2x2ZSB0aGUgY29ycmVjdCBmaWVsZCBuYW1lcy5cbiAgICpcbiAgICogQHBhcmFtIG1vZGVsIC0gVGhlIG1vZGVsL2NvbGxlY3Rpb24gbmFtZSB0byBnZXQgZmllbGQgbWFwcGluZ3MgZnJvbVxuICAgKiBAcGFyYW0gc29ydEJ5IC0gT3B0aW9uYWwgb2JqZWN0IGNvbnRhaW5pbmcgZmllbGQgbmFtZSBhbmQgc29ydCBkaXJlY3Rpb25cbiAgICogQHJldHVybnMgQSBQYXlsb2FkLWNvbXBhdGlibGUgc29ydCBzdHJpbmcgb3IgdW5kZWZpbmVkIGlmIG5vIHNvcnQgc3BlY2lmaWVkXG4gICAqIEBleGFtcGxlXG4gICAqIC8vIElucHV0OiB7IGZpZWxkOiAnZW1haWwnLCBkaXJlY3Rpb246ICdkZXNjJyB9XG4gICAqIC8vIE91dHB1dDogJy1lbWFpbCdcbiAgICogLy8gSW5wdXQ6IHsgZmllbGQ6ICdjcmVhdGVkQXQnLCBkaXJlY3Rpb246ICdhc2MnIH1cbiAgICogLy8gT3V0cHV0OiAnY3JlYXRlZEF0J1xuICAgKi9cbiAgZnVuY3Rpb24gY29udmVydFNvcnQobW9kZWw6IE1vZGVsS2V5LCBzb3J0Qnk/OiB7IGZpZWxkOiBzdHJpbmc7IGRpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycgfSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFzb3J0QnkpIHJldHVybiB1bmRlZmluZWRcbiAgICBjb25zdCBmaWVsZE5hbWUgPSBnZXRGaWVsZE5hbWUobW9kZWwsIHNvcnRCeS5maWVsZClcbiAgICBjb25zdCBwcmVmaXggPSBzb3J0QnkuZGlyZWN0aW9uID09PSAnZGVzYycgPyAnLScgOiAnJ1xuICAgIHJldHVybiBgJHtwcmVmaXh9JHtmaWVsZE5hbWV9YFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBnZXRGaWVsZE5hbWUsXG4gICAgZ2V0Q29sbGVjdGlvblNsdWcsXG4gICAgc2luZ2xlSWRRdWVyeSxcbiAgICB0cmFuc2Zvcm1JbnB1dCxcbiAgICB0cmFuc2Zvcm1PdXRwdXQsXG4gICAgY29udmVydFdoZXJlQ2xhdXNlLFxuICAgIGNvbnZlcnRTZWxlY3QsXG4gICAgY29udmVydFNvcnRcbiAgfVxufVxuIl0sIm5hbWVzIjpbImdldEF1dGhUYWJsZXMiLCJjcmVhdGVUcmFuc2Zvcm0iLCJvcHRpb25zIiwiZW5hYmxlRGVidWdMb2dzIiwic2NoZW1hIiwiZGVidWdMb2ciLCJtZXNzYWdlIiwiY29uc29sZSIsImxvZyIsImdldENvbGxlY3Rpb25TbHVnIiwibW9kZWwiLCJjb2xsZWN0aW9uIiwibW9kZWxOYW1lIiwicmVzb2x2ZWRTbHVnIiwiZ2V0RmllbGROYW1lIiwiZmllbGQiLCJpbmNsdWRlcyIsImZpZWxkRGVmaW5pdGlvbiIsImZpZWxkcyIsImZpZWxkTmFtZSIsIm9yaWdpbmFsRmllbGQiLCJpc1JlbGF0aW9uc2hpcEZpZWxkIiwiZmllbGRLZXkiLCJzY2hlbWFGaWVsZHMiLCJyZWZlcmVuY2VzIiwidW5kZWZpbmVkIiwiaXNEYXRlRmllbGQiLCJ2YWx1ZSIsImlzTmFOIiwiRGF0ZSIsInBhcnNlIiwic2luZ2xlSWRRdWVyeSIsIndoZXJlIiwic29tZSIsImlkRmllbGQiLCJjb25kaXRpb24iLCJBcnJheSIsImlzQXJyYXkiLCJlcXVhbHMiLCJjb250YWlucyIsImxlbmd0aCIsIm5vcm1hbGl6ZURhdGEiLCJrZXkiLCJpc1JlbGF0ZWRGaWVsZCIsImlkVHlwZSIsInBhcnNlZCIsInBhcnNlSW50Iiwib3JpZ2luYWwiLCJjb252ZXJ0ZWQiLCJzdHJpbmdJZCIsIlN0cmluZyIsIm1hcCIsImlkIiwidHJhbnNmb3JtSW5wdXQiLCJkYXRhIiwidHJhbnNmb3JtZWREYXRhIiwiT2JqZWN0IiwiZW50cmllcyIsImZvckVhY2giLCJzY2hlbWFGaWVsZE5hbWUiLCJub3JtYWxpemVkRGF0YSIsInRhcmdldEZpZWxkTmFtZSIsInRyYW5zZm9ybU91dHB1dCIsImRvYyIsInJlc3VsdCIsInJlbGF0aW9uc2hpcEZpZWxkcyIsImZyb21FbnRyaWVzIiwiZmlsdGVyIiwib3JpZ2luYWxSZWxhdGVkRmllbGRLZXkiLCJrZXlzIiwiZmluZCIsImsiLCJub3JtYWxpemVEb2N1bWVudElkcyIsIm9yaWdpbmFsS2V5IiwiZXZlcnkiLCJpdGVtIiwib3BlcmF0b3JUb1BheWxvYWQiLCJvcGVyYXRvciIsIm5vdF9lcXVhbHMiLCJncmVhdGVyX3RoYW4iLCJncmVhdGVyX3RoYW5fZXF1YWwiLCJsZXNzX3RoYW4iLCJsZXNzX3RoYW5fZXF1YWwiLCJpbiIsImxpa2UiLCJjb252ZXJ0V2hlcmVWYWx1ZSIsIm51bUlkIiwiTnVtYmVyIiwiY29udmVydFdoZXJlQ2xhdXNlIiwidyIsInJlcyIsImFuZCIsImNvbm5lY3RvciIsIm9yIiwiYW5kQ2xhdXNlIiwib3JDbGF1c2UiLCJBTkQiLCJPUiIsImNvbnZlcnRTZWxlY3QiLCJzZWxlY3QiLCJyZWR1Y2UiLCJhY2MiLCJjb252ZXJ0U29ydCIsInNvcnRCeSIsInByZWZpeCIsImRpcmVjdGlvbiJdLCJtYXBwaW5ncyI6IkFB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
@@ -1,8 +1,9 @@
1
- import type { BasePayload } from 'payload';
2
1
  import type { AdapterInstance } from 'better-auth';
3
- export type PayloadAdapterOptions = {
4
- idType: 'number' | 'text';
2
+ import type { BasePayload } from 'payload';
3
+ export type PayloadAdapterParams = {
4
+ payloadClient: BasePayload | Promise<BasePayload> | (() => Promise<BasePayload>);
5
5
  enableDebugLogs?: boolean;
6
+ idType: 'number' | 'text';
6
7
  };
7
- export type PayloadAdapter = (payloadClient: BasePayload | Promise<BasePayload> | (() => Promise<BasePayload>), config: PayloadAdapterOptions) => AdapterInstance;
8
+ export type PayloadAdapter = (options: PayloadAdapterParams) => AdapterInstance;
8
9
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/better-auth/adapter/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,CAC3B,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,EAChF,MAAM,EAAE,qBAAqB,KAC1B,eAAe,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/better-auth/adapter/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IACjF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC3B,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,oBAAoB,KAAK,eAAe,CAAA"}
@@ -1,3 +1,3 @@
1
1
  export { };
2
2
 
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9hZGFwdGVyL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQmFzZVBheWxvYWQgfSBmcm9tICdwYXlsb2FkJ1xuaW1wb3J0IHR5cGUgeyBBZGFwdGVySW5zdGFuY2UgfSBmcm9tICdiZXR0ZXItYXV0aCdcblxuZXhwb3J0IHR5cGUgUGF5bG9hZEFkYXB0ZXJPcHRpb25zID0ge1xuICBpZFR5cGU6ICdudW1iZXInIHwgJ3RleHQnXG4gIGVuYWJsZURlYnVnTG9ncz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgUGF5bG9hZEFkYXB0ZXIgPSAoXG4gIHBheWxvYWRDbGllbnQ6IEJhc2VQYXlsb2FkIHwgUHJvbWlzZTxCYXNlUGF5bG9hZD4gfCAoKCkgPT4gUHJvbWlzZTxCYXNlUGF5bG9hZD4pLFxuICBjb25maWc6IFBheWxvYWRBZGFwdGVyT3B0aW9uc1xuKSA9PiBBZGFwdGVySW5zdGFuY2VcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxXQUdvQiJ9
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9hZGFwdGVyL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWRhcHRlckluc3RhbmNlIH0gZnJvbSAnYmV0dGVyLWF1dGgnXG5pbXBvcnQgdHlwZSB7IEJhc2VQYXlsb2FkIH0gZnJvbSAncGF5bG9hZCdcblxuZXhwb3J0IHR5cGUgUGF5bG9hZEFkYXB0ZXJQYXJhbXMgPSB7XG4gIHBheWxvYWRDbGllbnQ6IEJhc2VQYXlsb2FkIHwgUHJvbWlzZTxCYXNlUGF5bG9hZD4gfCAoKCkgPT4gUHJvbWlzZTxCYXNlUGF5bG9hZD4pO1xuICBlbmFibGVEZWJ1Z0xvZ3M/OiBib29sZWFuO1xuICBpZFR5cGU6ICdudW1iZXInIHwgJ3RleHQnO1xufVxuXG5leHBvcnQgdHlwZSBQYXlsb2FkQWRhcHRlciA9IChvcHRpb25zOiBQYXlsb2FkQWRhcHRlclBhcmFtcykgPT4gQWRhcHRlckluc3RhbmNlXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsV0FBK0UifQ==
@@ -213,4 +213,25 @@ export type SubscriptionFields = {
213
213
  seats?: number;
214
214
  };
215
215
  export type Subscription = SubscriptionFields;
216
+ export type PluginId = "username" | "admin" | "api-key" | "passkey" | "harmony-email" | "harmony-phone-number" | "bearer" | "email-otp" | "magic-link" | "phone-number" | "one-tap" | "anonymous" | "multi-session" | "one-time-token" | "oidc" | "sso" | "generic-oauth" | "open-api" | "organization" | "jwt" | "two-factor" | "stripe" | "polar";
217
+ export type BetterAuthFullSchema = {
218
+ "user": User;
219
+ "session": Session;
220
+ "account": Account;
221
+ "verification": Verification;
222
+ "apikey": Apikey;
223
+ "passkey": Passkey;
224
+ "oauthApplication": OauthApplication;
225
+ "oauthAccessToken": OauthAccessToken;
226
+ "oauthConsent": OauthConsent;
227
+ "ssoProvider": SsoProvider;
228
+ "organization": Organization;
229
+ "member": Member;
230
+ "invitation": Invitation;
231
+ "team": Team;
232
+ "jwks": Jwks;
233
+ "twoFactor": TwoFactor;
234
+ "subscription": Subscription;
235
+ };
236
+ export type ModelKey = keyof BetterAuthFullSchema;
216
237
  //# sourceMappingURL=generated-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generated-types.d.ts","sourceRoot":"","sources":["../../src/better-auth/generated-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generated-types.d.ts","sourceRoot":"","sources":["../../src/better-auth/generated-types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  // Auto-generated types. Do not edit.
2
2
  export { };
3
3
 
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iZXR0ZXItYXV0aC9nZW5lcmF0ZWQtdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQXV0by1nZW5lcmF0ZWQgdHlwZXMuIERvIG5vdCBlZGl0LlxuXG5leHBvcnQgdHlwZSBCYXNlVXNlckZpZWxkcyA9IHtcbiAgbmFtZTogc3RyaW5nXG4gIGVtYWlsOiBzdHJpbmdcbiAgZW1haWxWZXJpZmllZDogYm9vbGVhblxuICBpbWFnZT86IHN0cmluZ1xuICBjcmVhdGVkQXQ6IERhdGVcbiAgdXBkYXRlZEF0OiBEYXRlXG4gIHJvbGU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgVXNlclBsdWdpbkZpZWxkcyA9IHtcbiAgXCJ1c2VybmFtZVwiOiB7XG4gICAgdXNlcm5hbWU/OiBzdHJpbmdcbiAgICBkaXNwbGF5VXNlcm5hbWU/OiBzdHJpbmdcbiAgfVxuICBcImFkbWluXCI6IHtcbiAgICBiYW5uZWQ/OiBib29sZWFuXG4gICAgYmFuUmVhc29uPzogc3RyaW5nXG4gICAgYmFuRXhwaXJlcz86IERhdGVcbiAgfVxuICBcImhhcm1vbnktZW1haWxcIjoge1xuICAgIG5vcm1hbGl6ZWRFbWFpbD86IHN0cmluZ1xuICB9XG4gIFwicGhvbmUtbnVtYmVyXCI6IHtcbiAgICBwaG9uZU51bWJlcj86IHN0cmluZ1xuICAgIHBob25lTnVtYmVyVmVyaWZpZWQ/OiBib29sZWFuXG4gIH1cbiAgXCJhbm9ueW1vdXNcIjoge1xuICAgIGlzQW5vbnltb3VzPzogYm9vbGVhblxuICB9XG4gIFwidHdvLWZhY3RvclwiOiB7XG4gICAgdHdvRmFjdG9yRW5hYmxlZD86IGJvb2xlYW5cbiAgfVxuICBcInN0cmlwZVwiOiB7XG4gICAgc3RyaXBlQ3VzdG9tZXJJZD86IHN0cmluZ1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFVzZXIgPSBCYXNlVXNlckZpZWxkcyAmIFVzZXJQbHVnaW5GaWVsZHNbXCJ1c2VybmFtZVwiXSAmIFVzZXJQbHVnaW5GaWVsZHNbXCJhZG1pblwiXSAmIFVzZXJQbHVnaW5GaWVsZHNbXCJoYXJtb255LWVtYWlsXCJdICYgVXNlclBsdWdpbkZpZWxkc1tcInBob25lLW51bWJlclwiXSAmIFVzZXJQbHVnaW5GaWVsZHNbXCJhbm9ueW1vdXNcIl0gJiBVc2VyUGx1Z2luRmllbGRzW1widHdvLWZhY3RvclwiXSAmIFVzZXJQbHVnaW5GaWVsZHNbXCJzdHJpcGVcIl1cblxuZXhwb3J0IHR5cGUgQmFzZVNlc3Npb25GaWVsZHMgPSB7XG4gIGV4cGlyZXNBdDogRGF0ZVxuICB0b2tlbjogc3RyaW5nXG4gIGNyZWF0ZWRBdDogRGF0ZVxuICB1cGRhdGVkQXQ6IERhdGVcbiAgaXBBZGRyZXNzPzogc3RyaW5nXG4gIHVzZXJBZ2VudD86IHN0cmluZ1xuICB1c2VySWQ6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBTZXNzaW9uUGx1Z2luRmllbGRzID0ge1xuICBcImFkbWluXCI6IHtcbiAgICBpbXBlcnNvbmF0ZWRCeT86IHN0cmluZ1xuICB9XG4gIFwib3JnYW5pemF0aW9uXCI6IHtcbiAgICBhY3RpdmVPcmdhbml6YXRpb25JZD86IHN0cmluZ1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFNlc3Npb24gPSBCYXNlU2Vzc2lvbkZpZWxkcyAmIFNlc3Npb25QbHVnaW5GaWVsZHNbXCJhZG1pblwiXSAmIFNlc3Npb25QbHVnaW5GaWVsZHNbXCJvcmdhbml6YXRpb25cIl1cblxuZXhwb3J0IHR5cGUgQmFzZUFjY291bnRGaWVsZHMgPSB7XG4gIGFjY291bnRJZDogc3RyaW5nXG4gIHByb3ZpZGVySWQ6IHN0cmluZ1xuICB1c2VySWQ6IHN0cmluZ1xuICBhY2Nlc3NUb2tlbj86IHN0cmluZ1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmdcbiAgaWRUb2tlbj86IHN0cmluZ1xuICBhY2Nlc3NUb2tlbkV4cGlyZXNBdD86IERhdGVcbiAgcmVmcmVzaFRva2VuRXhwaXJlc0F0PzogRGF0ZVxuICBzY29wZT86IHN0cmluZ1xuICBwYXNzd29yZD86IHN0cmluZ1xuICBjcmVhdGVkQXQ6IERhdGVcbiAgdXBkYXRlZEF0OiBEYXRlXG59XG5cbmV4cG9ydCB0eXBlIEFjY291bnQgPSBCYXNlQWNjb3VudEZpZWxkc1xuXG5leHBvcnQgdHlwZSBCYXNlVmVyaWZpY2F0aW9uRmllbGRzID0ge1xuICBpZGVudGlmaWVyOiBzdHJpbmdcbiAgdmFsdWU6IHN0cmluZ1xuICBleHBpcmVzQXQ6IERhdGVcbiAgY3JlYXRlZEF0PzogRGF0ZVxuICB1cGRhdGVkQXQ/OiBEYXRlXG59XG5cbmV4cG9ydCB0eXBlIFZlcmlmaWNhdGlvbiA9IEJhc2VWZXJpZmljYXRpb25GaWVsZHNcblxuZXhwb3J0IHR5cGUgQXBpa2V5RmllbGRzID0ge1xuICBuYW1lPzogc3RyaW5nXG4gIHN0YXJ0Pzogc3RyaW5nXG4gIHByZWZpeD86IHN0cmluZ1xuICBrZXk6IHN0cmluZ1xuICB1c2VySWQ6IHN0cmluZ1xuICByZWZpbGxJbnRlcnZhbD86IG51bWJlclxuICByZWZpbGxBbW91bnQ/OiBudW1iZXJcbiAgbGFzdFJlZmlsbEF0PzogRGF0ZVxuICBlbmFibGVkPzogYm9vbGVhblxuICByYXRlTGltaXRFbmFibGVkPzogYm9vbGVhblxuICByYXRlTGltaXRUaW1lV2luZG93PzogbnVtYmVyXG4gIHJhdGVMaW1pdE1heD86IG51bWJlclxuICByZXF1ZXN0Q291bnQ/OiBudW1iZXJcbiAgcmVtYWluaW5nPzogbnVtYmVyXG4gIGxhc3RSZXF1ZXN0PzogRGF0ZVxuICBleHBpcmVzQXQ/OiBEYXRlXG4gIGNyZWF0ZWRBdDogRGF0ZVxuICB1cGRhdGVkQXQ6IERhdGVcbiAgcGVybWlzc2lvbnM/OiBzdHJpbmdcbiAgbWV0YWRhdGE/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQXBpa2V5ID0gQXBpa2V5RmllbGRzXG5cbmV4cG9ydCB0eXBlIFBhc3NrZXlGaWVsZHMgPSB7XG4gIG5hbWU/OiBzdHJpbmdcbiAgcHVibGljS2V5OiBzdHJpbmdcbiAgdXNlcklkOiBzdHJpbmdcbiAgY3JlZGVudGlhbElEOiBzdHJpbmdcbiAgY291bnRlcjogbnVtYmVyXG4gIGRldmljZVR5cGU6IHN0cmluZ1xuICBiYWNrZWRVcDogYm9vbGVhblxuICB0cmFuc3BvcnRzPzogc3RyaW5nXG4gIGNyZWF0ZWRBdD86IERhdGVcbn1cblxuZXhwb3J0IHR5cGUgUGFzc2tleSA9IFBhc3NrZXlGaWVsZHNcblxuZXhwb3J0IHR5cGUgT2F1dGhBcHBsaWNhdGlvbkZpZWxkcyA9IHtcbiAgbmFtZT86IHN0cmluZ1xuICBpY29uPzogc3RyaW5nXG4gIG1ldGFkYXRhPzogc3RyaW5nXG4gIGNsaWVudElkPzogc3RyaW5nXG4gIGNsaWVudFNlY3JldD86IHN0cmluZ1xuICByZWRpcmVjdFVSTHM/OiBzdHJpbmdcbiAgdHlwZT86IHN0cmluZ1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgdXNlcklkPzogc3RyaW5nXG4gIGNyZWF0ZWRBdD86IERhdGVcbiAgdXBkYXRlZEF0PzogRGF0ZVxufVxuXG5leHBvcnQgdHlwZSBPYXV0aEFwcGxpY2F0aW9uID0gT2F1dGhBcHBsaWNhdGlvbkZpZWxkc1xuXG5leHBvcnQgdHlwZSBPYXV0aEFjY2Vzc1Rva2VuRmllbGRzID0ge1xuICBhY2Nlc3NUb2tlbj86IHN0cmluZ1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmdcbiAgYWNjZXNzVG9rZW5FeHBpcmVzQXQ/OiBEYXRlXG4gIHJlZnJlc2hUb2tlbkV4cGlyZXNBdD86IERhdGVcbiAgY2xpZW50SWQ/OiBzdHJpbmdcbiAgdXNlcklkPzogc3RyaW5nXG4gIHNjb3Blcz86IHN0cmluZ1xuICBjcmVhdGVkQXQ/OiBEYXRlXG4gIHVwZGF0ZWRBdD86IERhdGVcbn1cblxuZXhwb3J0IHR5cGUgT2F1dGhBY2Nlc3NUb2tlbiA9IE9hdXRoQWNjZXNzVG9rZW5GaWVsZHNcblxuZXhwb3J0IHR5cGUgT2F1dGhDb25zZW50RmllbGRzID0ge1xuICBjbGllbnRJZD86IHN0cmluZ1xuICB1c2VySWQ/OiBzdHJpbmdcbiAgc2NvcGVzPzogc3RyaW5nXG4gIGNyZWF0ZWRBdD86IERhdGVcbiAgdXBkYXRlZEF0PzogRGF0ZVxuICBjb25zZW50R2l2ZW4/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIE9hdXRoQ29uc2VudCA9IE9hdXRoQ29uc2VudEZpZWxkc1xuXG5leHBvcnQgdHlwZSBTc29Qcm92aWRlckZpZWxkcyA9IHtcbiAgaXNzdWVyOiBzdHJpbmdcbiAgb2lkY0NvbmZpZz86IHN0cmluZ1xuICBzYW1sQ29uZmlnPzogc3RyaW5nXG4gIHVzZXJJZD86IHN0cmluZ1xuICBwcm92aWRlcklkOiBzdHJpbmdcbiAgb3JnYW5pemF0aW9uSWQ/OiBzdHJpbmdcbiAgZG9tYWluOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgU3NvUHJvdmlkZXIgPSBTc29Qcm92aWRlckZpZWxkc1xuXG5leHBvcnQgdHlwZSBPcmdhbml6YXRpb25GaWVsZHMgPSB7XG4gIG5hbWU6IHN0cmluZ1xuICBzbHVnPzogc3RyaW5nXG4gIGxvZ28/OiBzdHJpbmdcbiAgY3JlYXRlZEF0OiBEYXRlXG4gIG1ldGFkYXRhPzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIE9yZ2FuaXphdGlvbiA9IE9yZ2FuaXphdGlvbkZpZWxkc1xuXG5leHBvcnQgdHlwZSBNZW1iZXJGaWVsZHMgPSB7XG4gIG9yZ2FuaXphdGlvbklkOiBzdHJpbmdcbiAgdXNlcklkOiBzdHJpbmdcbiAgcm9sZTogc3RyaW5nXG4gIHRlYW1JZD86IHN0cmluZ1xuICBjcmVhdGVkQXQ6IERhdGVcbn1cblxuZXhwb3J0IHR5cGUgTWVtYmVyID0gTWVtYmVyRmllbGRzXG5cbmV4cG9ydCB0eXBlIEludml0YXRpb25GaWVsZHMgPSB7XG4gIG9yZ2FuaXphdGlvbklkOiBzdHJpbmdcbiAgZW1haWw6IHN0cmluZ1xuICByb2xlPzogc3RyaW5nXG4gIHRlYW1JZD86IHN0cmluZ1xuICBzdGF0dXM6IHN0cmluZ1xuICBleHBpcmVzQXQ6IERhdGVcbiAgaW52aXRlcklkOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgSW52aXRhdGlvbiA9IEludml0YXRpb25GaWVsZHNcblxuZXhwb3J0IHR5cGUgVGVhbUZpZWxkcyA9IHtcbiAgbmFtZTogc3RyaW5nXG4gIG9yZ2FuaXphdGlvbklkOiBzdHJpbmdcbiAgY3JlYXRlZEF0OiBEYXRlXG4gIHVwZGF0ZWRBdD86IERhdGVcbn1cblxuZXhwb3J0IHR5cGUgVGVhbSA9IFRlYW1GaWVsZHNcblxuZXhwb3J0IHR5cGUgSndrc0ZpZWxkcyA9IHtcbiAgcHVibGljS2V5OiBzdHJpbmdcbiAgcHJpdmF0ZUtleTogc3RyaW5nXG4gIGNyZWF0ZWRBdDogRGF0ZVxufVxuXG5leHBvcnQgdHlwZSBKd2tzID0gSndrc0ZpZWxkc1xuXG5leHBvcnQgdHlwZSBUd29GYWN0b3JGaWVsZHMgPSB7XG4gIHNlY3JldDogc3RyaW5nXG4gIGJhY2t1cENvZGVzOiBzdHJpbmdcbiAgdXNlcklkOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgVHdvRmFjdG9yID0gVHdvRmFjdG9yRmllbGRzXG5cbmV4cG9ydCB0eXBlIFN1YnNjcmlwdGlvbkZpZWxkcyA9IHtcbiAgcGxhbjogc3RyaW5nXG4gIHJlZmVyZW5jZUlkOiBzdHJpbmdcbiAgc3RyaXBlQ3VzdG9tZXJJZD86IHN0cmluZ1xuICBzdHJpcGVTdWJzY3JpcHRpb25JZD86IHN0cmluZ1xuICBzdGF0dXM/OiBzdHJpbmdcbiAgcGVyaW9kU3RhcnQ/OiBEYXRlXG4gIHBlcmlvZEVuZD86IERhdGVcbiAgY2FuY2VsQXRQZXJpb2RFbmQ/OiBib29sZWFuXG4gIHNlYXRzPzogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbkZpZWxkc1xuXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUNBQXFDO0FBMlByQyxXQUE2QyJ9
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iZXR0ZXItYXV0aC9nZW5lcmF0ZWQtdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQXV0by1nZW5lcmF0ZWQgdHlwZXMuIERvIG5vdCBlZGl0LlxuXG5leHBvcnQgdHlwZSBCYXNlVXNlckZpZWxkcyA9IHtcbiAgbmFtZTogc3RyaW5nXG4gIGVtYWlsOiBzdHJpbmdcbiAgZW1haWxWZXJpZmllZDogYm9vbGVhblxuICBpbWFnZT86IHN0cmluZ1xuICBjcmVhdGVkQXQ6IERhdGVcbiAgdXBkYXRlZEF0OiBEYXRlXG4gIHJvbGU/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgVXNlclBsdWdpbkZpZWxkcyA9IHtcbiAgXCJ1c2VybmFtZVwiOiB7XG4gICAgdXNlcm5hbWU/OiBzdHJpbmdcbiAgICBkaXNwbGF5VXNlcm5hbWU/OiBzdHJpbmdcbiAgfVxuICBcImFkbWluXCI6IHtcbiAgICBiYW5uZWQ/OiBib29sZWFuXG4gICAgYmFuUmVhc29uPzogc3RyaW5nXG4gICAgYmFuRXhwaXJlcz86IERhdGVcbiAgfVxuICBcImhhcm1vbnktZW1haWxcIjoge1xuICAgIG5vcm1hbGl6ZWRFbWFpbD86IHN0cmluZ1xuICB9XG4gIFwicGhvbmUtbnVtYmVyXCI6IHtcbiAgICBwaG9uZU51bWJlcj86IHN0cmluZ1xuICAgIHBob25lTnVtYmVyVmVyaWZpZWQ/OiBib29sZWFuXG4gIH1cbiAgXCJhbm9ueW1vdXNcIjoge1xuICAgIGlzQW5vbnltb3VzPzogYm9vbGVhblxuICB9XG4gIFwidHdvLWZhY3RvclwiOiB7XG4gICAgdHdvRmFjdG9yRW5hYmxlZD86IGJvb2xlYW5cbiAgfVxuICBcInN0cmlwZVwiOiB7XG4gICAgc3RyaXBlQ3VzdG9tZXJJZD86IHN0cmluZ1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFVzZXIgPSBCYXNlVXNlckZpZWxkcyAmIFVzZXJQbHVnaW5GaWVsZHNbXCJ1c2VybmFtZVwiXSAmIFVzZXJQbHVnaW5GaWVsZHNbXCJhZG1pblwiXSAmIFVzZXJQbHVnaW5GaWVsZHNbXCJoYXJtb255LWVtYWlsXCJdICYgVXNlclBsdWdpbkZpZWxkc1tcInBob25lLW51bWJlclwiXSAmIFVzZXJQbHVnaW5GaWVsZHNbXCJhbm9ueW1vdXNcIl0gJiBVc2VyUGx1Z2luRmllbGRzW1widHdvLWZhY3RvclwiXSAmIFVzZXJQbHVnaW5GaWVsZHNbXCJzdHJpcGVcIl1cblxuZXhwb3J0IHR5cGUgQmFzZVNlc3Npb25GaWVsZHMgPSB7XG4gIGV4cGlyZXNBdDogRGF0ZVxuICB0b2tlbjogc3RyaW5nXG4gIGNyZWF0ZWRBdDogRGF0ZVxuICB1cGRhdGVkQXQ6IERhdGVcbiAgaXBBZGRyZXNzPzogc3RyaW5nXG4gIHVzZXJBZ2VudD86IHN0cmluZ1xuICB1c2VySWQ6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBTZXNzaW9uUGx1Z2luRmllbGRzID0ge1xuICBcImFkbWluXCI6IHtcbiAgICBpbXBlcnNvbmF0ZWRCeT86IHN0cmluZ1xuICB9XG4gIFwib3JnYW5pemF0aW9uXCI6IHtcbiAgICBhY3RpdmVPcmdhbml6YXRpb25JZD86IHN0cmluZ1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFNlc3Npb24gPSBCYXNlU2Vzc2lvbkZpZWxkcyAmIFNlc3Npb25QbHVnaW5GaWVsZHNbXCJhZG1pblwiXSAmIFNlc3Npb25QbHVnaW5GaWVsZHNbXCJvcmdhbml6YXRpb25cIl1cblxuZXhwb3J0IHR5cGUgQmFzZUFjY291bnRGaWVsZHMgPSB7XG4gIGFjY291bnRJZDogc3RyaW5nXG4gIHByb3ZpZGVySWQ6IHN0cmluZ1xuICB1c2VySWQ6IHN0cmluZ1xuICBhY2Nlc3NUb2tlbj86IHN0cmluZ1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmdcbiAgaWRUb2tlbj86IHN0cmluZ1xuICBhY2Nlc3NUb2tlbkV4cGlyZXNBdD86IERhdGVcbiAgcmVmcmVzaFRva2VuRXhwaXJlc0F0PzogRGF0ZVxuICBzY29wZT86IHN0cmluZ1xuICBwYXNzd29yZD86IHN0cmluZ1xuICBjcmVhdGVkQXQ6IERhdGVcbiAgdXBkYXRlZEF0OiBEYXRlXG59XG5cbmV4cG9ydCB0eXBlIEFjY291bnQgPSBCYXNlQWNjb3VudEZpZWxkc1xuXG5leHBvcnQgdHlwZSBCYXNlVmVyaWZpY2F0aW9uRmllbGRzID0ge1xuICBpZGVudGlmaWVyOiBzdHJpbmdcbiAgdmFsdWU6IHN0cmluZ1xuICBleHBpcmVzQXQ6IERhdGVcbiAgY3JlYXRlZEF0PzogRGF0ZVxuICB1cGRhdGVkQXQ/OiBEYXRlXG59XG5cbmV4cG9ydCB0eXBlIFZlcmlmaWNhdGlvbiA9IEJhc2VWZXJpZmljYXRpb25GaWVsZHNcblxuZXhwb3J0IHR5cGUgQXBpa2V5RmllbGRzID0ge1xuICBuYW1lPzogc3RyaW5nXG4gIHN0YXJ0Pzogc3RyaW5nXG4gIHByZWZpeD86IHN0cmluZ1xuICBrZXk6IHN0cmluZ1xuICB1c2VySWQ6IHN0cmluZ1xuICByZWZpbGxJbnRlcnZhbD86IG51bWJlclxuICByZWZpbGxBbW91bnQ/OiBudW1iZXJcbiAgbGFzdFJlZmlsbEF0PzogRGF0ZVxuICBlbmFibGVkPzogYm9vbGVhblxuICByYXRlTGltaXRFbmFibGVkPzogYm9vbGVhblxuICByYXRlTGltaXRUaW1lV2luZG93PzogbnVtYmVyXG4gIHJhdGVMaW1pdE1heD86IG51bWJlclxuICByZXF1ZXN0Q291bnQ/OiBudW1iZXJcbiAgcmVtYWluaW5nPzogbnVtYmVyXG4gIGxhc3RSZXF1ZXN0PzogRGF0ZVxuICBleHBpcmVzQXQ/OiBEYXRlXG4gIGNyZWF0ZWRBdDogRGF0ZVxuICB1cGRhdGVkQXQ6IERhdGVcbiAgcGVybWlzc2lvbnM/OiBzdHJpbmdcbiAgbWV0YWRhdGE/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQXBpa2V5ID0gQXBpa2V5RmllbGRzXG5cbmV4cG9ydCB0eXBlIFBhc3NrZXlGaWVsZHMgPSB7XG4gIG5hbWU/OiBzdHJpbmdcbiAgcHVibGljS2V5OiBzdHJpbmdcbiAgdXNlcklkOiBzdHJpbmdcbiAgY3JlZGVudGlhbElEOiBzdHJpbmdcbiAgY291bnRlcjogbnVtYmVyXG4gIGRldmljZVR5cGU6IHN0cmluZ1xuICBiYWNrZWRVcDogYm9vbGVhblxuICB0cmFuc3BvcnRzPzogc3RyaW5nXG4gIGNyZWF0ZWRBdD86IERhdGVcbn1cblxuZXhwb3J0IHR5cGUgUGFzc2tleSA9IFBhc3NrZXlGaWVsZHNcblxuZXhwb3J0IHR5cGUgT2F1dGhBcHBsaWNhdGlvbkZpZWxkcyA9IHtcbiAgbmFtZT86IHN0cmluZ1xuICBpY29uPzogc3RyaW5nXG4gIG1ldGFkYXRhPzogc3RyaW5nXG4gIGNsaWVudElkPzogc3RyaW5nXG4gIGNsaWVudFNlY3JldD86IHN0cmluZ1xuICByZWRpcmVjdFVSTHM/OiBzdHJpbmdcbiAgdHlwZT86IHN0cmluZ1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgdXNlcklkPzogc3RyaW5nXG4gIGNyZWF0ZWRBdD86IERhdGVcbiAgdXBkYXRlZEF0PzogRGF0ZVxufVxuXG5leHBvcnQgdHlwZSBPYXV0aEFwcGxpY2F0aW9uID0gT2F1dGhBcHBsaWNhdGlvbkZpZWxkc1xuXG5leHBvcnQgdHlwZSBPYXV0aEFjY2Vzc1Rva2VuRmllbGRzID0ge1xuICBhY2Nlc3NUb2tlbj86IHN0cmluZ1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmdcbiAgYWNjZXNzVG9rZW5FeHBpcmVzQXQ/OiBEYXRlXG4gIHJlZnJlc2hUb2tlbkV4cGlyZXNBdD86IERhdGVcbiAgY2xpZW50SWQ/OiBzdHJpbmdcbiAgdXNlcklkPzogc3RyaW5nXG4gIHNjb3Blcz86IHN0cmluZ1xuICBjcmVhdGVkQXQ/OiBEYXRlXG4gIHVwZGF0ZWRBdD86IERhdGVcbn1cblxuZXhwb3J0IHR5cGUgT2F1dGhBY2Nlc3NUb2tlbiA9IE9hdXRoQWNjZXNzVG9rZW5GaWVsZHNcblxuZXhwb3J0IHR5cGUgT2F1dGhDb25zZW50RmllbGRzID0ge1xuICBjbGllbnRJZD86IHN0cmluZ1xuICB1c2VySWQ/OiBzdHJpbmdcbiAgc2NvcGVzPzogc3RyaW5nXG4gIGNyZWF0ZWRBdD86IERhdGVcbiAgdXBkYXRlZEF0PzogRGF0ZVxuICBjb25zZW50R2l2ZW4/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIE9hdXRoQ29uc2VudCA9IE9hdXRoQ29uc2VudEZpZWxkc1xuXG5leHBvcnQgdHlwZSBTc29Qcm92aWRlckZpZWxkcyA9IHtcbiAgaXNzdWVyOiBzdHJpbmdcbiAgb2lkY0NvbmZpZz86IHN0cmluZ1xuICBzYW1sQ29uZmlnPzogc3RyaW5nXG4gIHVzZXJJZD86IHN0cmluZ1xuICBwcm92aWRlcklkOiBzdHJpbmdcbiAgb3JnYW5pemF0aW9uSWQ/OiBzdHJpbmdcbiAgZG9tYWluOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgU3NvUHJvdmlkZXIgPSBTc29Qcm92aWRlckZpZWxkc1xuXG5leHBvcnQgdHlwZSBPcmdhbml6YXRpb25GaWVsZHMgPSB7XG4gIG5hbWU6IHN0cmluZ1xuICBzbHVnPzogc3RyaW5nXG4gIGxvZ28/OiBzdHJpbmdcbiAgY3JlYXRlZEF0OiBEYXRlXG4gIG1ldGFkYXRhPzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIE9yZ2FuaXphdGlvbiA9IE9yZ2FuaXphdGlvbkZpZWxkc1xuXG5leHBvcnQgdHlwZSBNZW1iZXJGaWVsZHMgPSB7XG4gIG9yZ2FuaXphdGlvbklkOiBzdHJpbmdcbiAgdXNlcklkOiBzdHJpbmdcbiAgcm9sZTogc3RyaW5nXG4gIHRlYW1JZD86IHN0cmluZ1xuICBjcmVhdGVkQXQ6IERhdGVcbn1cblxuZXhwb3J0IHR5cGUgTWVtYmVyID0gTWVtYmVyRmllbGRzXG5cbmV4cG9ydCB0eXBlIEludml0YXRpb25GaWVsZHMgPSB7XG4gIG9yZ2FuaXphdGlvbklkOiBzdHJpbmdcbiAgZW1haWw6IHN0cmluZ1xuICByb2xlPzogc3RyaW5nXG4gIHRlYW1JZD86IHN0cmluZ1xuICBzdGF0dXM6IHN0cmluZ1xuICBleHBpcmVzQXQ6IERhdGVcbiAgaW52aXRlcklkOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgSW52aXRhdGlvbiA9IEludml0YXRpb25GaWVsZHNcblxuZXhwb3J0IHR5cGUgVGVhbUZpZWxkcyA9IHtcbiAgbmFtZTogc3RyaW5nXG4gIG9yZ2FuaXphdGlvbklkOiBzdHJpbmdcbiAgY3JlYXRlZEF0OiBEYXRlXG4gIHVwZGF0ZWRBdD86IERhdGVcbn1cblxuZXhwb3J0IHR5cGUgVGVhbSA9IFRlYW1GaWVsZHNcblxuZXhwb3J0IHR5cGUgSndrc0ZpZWxkcyA9IHtcbiAgcHVibGljS2V5OiBzdHJpbmdcbiAgcHJpdmF0ZUtleTogc3RyaW5nXG4gIGNyZWF0ZWRBdDogRGF0ZVxufVxuXG5leHBvcnQgdHlwZSBKd2tzID0gSndrc0ZpZWxkc1xuXG5leHBvcnQgdHlwZSBUd29GYWN0b3JGaWVsZHMgPSB7XG4gIHNlY3JldDogc3RyaW5nXG4gIGJhY2t1cENvZGVzOiBzdHJpbmdcbiAgdXNlcklkOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgVHdvRmFjdG9yID0gVHdvRmFjdG9yRmllbGRzXG5cbmV4cG9ydCB0eXBlIFN1YnNjcmlwdGlvbkZpZWxkcyA9IHtcbiAgcGxhbjogc3RyaW5nXG4gIHJlZmVyZW5jZUlkOiBzdHJpbmdcbiAgc3RyaXBlQ3VzdG9tZXJJZD86IHN0cmluZ1xuICBzdHJpcGVTdWJzY3JpcHRpb25JZD86IHN0cmluZ1xuICBzdGF0dXM/OiBzdHJpbmdcbiAgcGVyaW9kU3RhcnQ/OiBEYXRlXG4gIHBlcmlvZEVuZD86IERhdGVcbiAgY2FuY2VsQXRQZXJpb2RFbmQ/OiBib29sZWFuXG4gIHNlYXRzPzogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbkZpZWxkc1xuXG5leHBvcnQgdHlwZSBQbHVnaW5JZCA9IFwidXNlcm5hbWVcIiB8IFwiYWRtaW5cIiB8IFwiYXBpLWtleVwiIHwgXCJwYXNza2V5XCIgfCBcImhhcm1vbnktZW1haWxcIiB8IFwiaGFybW9ueS1waG9uZS1udW1iZXJcIiB8IFwiYmVhcmVyXCIgfCBcImVtYWlsLW90cFwiIHwgXCJtYWdpYy1saW5rXCIgfCBcInBob25lLW51bWJlclwiIHwgXCJvbmUtdGFwXCIgfCBcImFub255bW91c1wiIHwgXCJtdWx0aS1zZXNzaW9uXCIgfCBcIm9uZS10aW1lLXRva2VuXCIgfCBcIm9pZGNcIiB8IFwic3NvXCIgfCBcImdlbmVyaWMtb2F1dGhcIiB8IFwib3Blbi1hcGlcIiB8IFwib3JnYW5pemF0aW9uXCIgfCBcImp3dFwiIHwgXCJ0d28tZmFjdG9yXCIgfCBcInN0cmlwZVwiIHwgXCJwb2xhclwiXG5cbmV4cG9ydCB0eXBlIEJldHRlckF1dGhGdWxsU2NoZW1hID0ge1xuICBcInVzZXJcIjogVXNlclxuICBcInNlc3Npb25cIjogU2Vzc2lvblxuICBcImFjY291bnRcIjogQWNjb3VudFxuICBcInZlcmlmaWNhdGlvblwiOiBWZXJpZmljYXRpb25cbiAgXCJhcGlrZXlcIjogQXBpa2V5XG4gIFwicGFzc2tleVwiOiBQYXNza2V5XG4gIFwib2F1dGhBcHBsaWNhdGlvblwiOiBPYXV0aEFwcGxpY2F0aW9uXG4gIFwib2F1dGhBY2Nlc3NUb2tlblwiOiBPYXV0aEFjY2Vzc1Rva2VuXG4gIFwib2F1dGhDb25zZW50XCI6IE9hdXRoQ29uc2VudFxuICBcInNzb1Byb3ZpZGVyXCI6IFNzb1Byb3ZpZGVyXG4gIFwib3JnYW5pemF0aW9uXCI6IE9yZ2FuaXphdGlvblxuICBcIm1lbWJlclwiOiBNZW1iZXJcbiAgXCJpbnZpdGF0aW9uXCI6IEludml0YXRpb25cbiAgXCJ0ZWFtXCI6IFRlYW1cbiAgXCJqd2tzXCI6IEp3a3NcbiAgXCJ0d29GYWN0b3JcIjogVHdvRmFjdG9yXG4gIFwic3Vic2NyaXB0aW9uXCI6IFN1YnNjcmlwdGlvblxufVxuXG5leHBvcnQgdHlwZSBNb2RlbEtleSA9IGtleW9mIEJldHRlckF1dGhGdWxsU2NoZW1hIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQW1SckMsV0FBaUQifQ==
@@ -1,22 +1,19 @@
1
- import { type FieldAttribute } from 'better-auth/db';
2
- import type { BetterAuthOptions } from 'better-auth';
1
+ import { BetterAuthPluginOptions, BetterAuthSchemas } from '../types';
3
2
  /**
4
- * This is a slighlty modfied version of the getSchema function from better-auth.
5
- * Found here: https://github.com/better-auth/better-auth/blob/main/packages/better-auth/src/db/get-schema.ts
3
+ * A consistent BetterAuth schema generator.
6
4
  *
7
- * We DON'T do this:
8
- * actualFields[field.fieldName || key] = field;
5
+ * Differences from the original `getSchema` implementation in BetterAuth:
6
+ * 1. Keys in the returned object are always the **static table identifiers** coming from
7
+ * `getAuthTables`, never the possibly-overridden `modelName`. This guarantees that
8
+ * subsequent look-ups remain stable even if the user renames collections.
9
+ * 2. Each schema entry now contains an explicit `modelName` property exposing the current
10
+ * (potentially user-overridden) model name, while `fields` continue to be referenced by
11
+ * their static BetterAuth field keys.
12
+ * 3. When converting fields, we store them under their original key (`actualFields[key] = field`)
13
+ * instead of `field.fieldName || key` to avoid accidental renames.
9
14
  *
10
- * Instead we will do this:
11
- * actualFields[key] = field;
12
- *
13
- * This is to contain consistency when statically hard coded keys.
14
- *
15
- * @param config - The better auth config
16
- * @returns The schema for the better auth tables
15
+ * @param config - The BetterAuth options fed into `getAuthTables`.
16
+ * @returns A map keyed by static table keys, each value containing `{ modelName, fields, order }`.
17
17
  */
18
- export declare function getBetterAuthSchema(config: BetterAuthOptions): Record<string, {
19
- fields: Record<string, FieldAttribute>;
20
- order: number;
21
- }>;
18
+ export declare function getDefaultBetterAuthSchema(pluginOptions: BetterAuthPluginOptions): BetterAuthSchemas;
22
19
  //# sourceMappingURL=get-better-auth-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-better-auth-schema.d.ts","sourceRoot":"","sources":["../../../../src/better-auth/plugin/helpers/get-better-auth-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB;YAK/C,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;WAC/B,MAAM;GAgClB"}
1
+ {"version":3,"file":"get-better-auth-schema.d.ts","sourceRoot":"","sources":["../../../../src/better-auth/plugin/helpers/get-better-auth-schema.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGtE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CAAC,aAAa,EAAE,uBAAuB,GAAG,iBAAiB,CAoDpG"}
@@ -1,45 +1,63 @@
1
1
  import { getAuthTables } from "better-auth/db";
2
+ import { baModelFieldKeysToFieldNames } from "../constants";
3
+ import { getDeafultCollectionSlug } from "./get-collection-slug";
2
4
  /**
3
- * This is a slighlty modfied version of the getSchema function from better-auth.
4
- * Found here: https://github.com/better-auth/better-auth/blob/main/packages/better-auth/src/db/get-schema.ts
5
+ * A consistent BetterAuth schema generator.
5
6
  *
6
- * We DON'T do this:
7
- * actualFields[field.fieldName || key] = field;
7
+ * Differences from the original `getSchema` implementation in BetterAuth:
8
+ * 1. Keys in the returned object are always the **static table identifiers** coming from
9
+ * `getAuthTables`, never the possibly-overridden `modelName`. This guarantees that
10
+ * subsequent look-ups remain stable even if the user renames collections.
11
+ * 2. Each schema entry now contains an explicit `modelName` property exposing the current
12
+ * (potentially user-overridden) model name, while `fields` continue to be referenced by
13
+ * their static BetterAuth field keys.
14
+ * 3. When converting fields, we store them under their original key (`actualFields[key] = field`)
15
+ * instead of `field.fieldName || key` to avoid accidental renames.
8
16
  *
9
- * Instead we will do this:
10
- * actualFields[key] = field;
11
- *
12
- * This is to contain consistency when statically hard coded keys.
13
- *
14
- * @param config - The better auth config
15
- * @returns The schema for the better auth tables
16
- */ export function getBetterAuthSchema(config) {
17
- const tables = getAuthTables(config);
18
- let schema = {};
19
- for(const key in tables){
20
- const table = tables[key];
21
- const fields = table.fields;
22
- let actualFields = {};
23
- Object.entries(fields).forEach(([key, field])=>{
24
- actualFields[key] = field;
25
- if (field.references) {
26
- const refTable = tables[field.references.model];
27
- if (refTable) {
28
- actualFields[key].references = {
29
- model: refTable.modelName,
30
- field: field.references.field
31
- };
32
- }
17
+ * @param config - The BetterAuth options fed into `getAuthTables`.
18
+ * @returns A map keyed by static table keys, each value containing `{ modelName, fields, order }`.
19
+ */ export function getDefaultBetterAuthSchema(pluginOptions) {
20
+ const betterAuthOptions = pluginOptions.betterAuthOptions ?? {};
21
+ const tables = getAuthTables(betterAuthOptions);
22
+ const schema = {};
23
+ for (const modelKey of Object.keys(tables)){
24
+ const table = tables[modelKey];
25
+ // Resolve the canonical collection slug / model name for this key
26
+ const resolvedModelName = getDeafultCollectionSlug({
27
+ modelKey,
28
+ pluginOptions
29
+ });
30
+ const defaultFieldMap = baModelFieldKeysToFieldNames[modelKey] ?? {};
31
+ const actualFields = {};
32
+ Object.entries(table.fields).forEach(([fieldKey, fieldValue])=>{
33
+ // Build the field ensuring a fieldName exists
34
+ const newField = {
35
+ ...fieldValue,
36
+ fieldName: defaultFieldMap[fieldKey] ?? fieldKey
37
+ };
38
+ // Rewrite references to use the resolved modelName for the target table
39
+ if (fieldValue.references) {
40
+ const refModelKey = fieldValue.references.model;
41
+ const resolvedRefModelName = getDeafultCollectionSlug({
42
+ modelKey: refModelKey,
43
+ pluginOptions
44
+ });
45
+ newField.references = {
46
+ model: resolvedRefModelName,
47
+ field: fieldValue.references.field
48
+ };
33
49
  }
50
+ actualFields[fieldKey] = newField;
34
51
  });
35
- if (schema[table.modelName]) {
36
- schema[table.modelName].fields = {
37
- ...schema[table.modelName].fields,
52
+ if (schema[modelKey]) {
53
+ schema[modelKey].fields = {
54
+ ...schema[modelKey].fields,
38
55
  ...actualFields
39
56
  };
40
57
  continue;
41
58
  }
42
- schema[table.modelName] = {
59
+ schema[modelKey] = {
60
+ modelName: resolvedModelName,
43
61
  fields: actualFields,
44
62
  order: table.order || Infinity
45
63
  };
@@ -47,4 +65,4 @@ import { getAuthTables } from "better-auth/db";
47
65
  return schema;
48
66
  }
49
67
 
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vaGVscGVycy9nZXQtYmV0dGVyLWF1dGgtc2NoZW1hLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEF1dGhUYWJsZXMsIHR5cGUgRmllbGRBdHRyaWJ1dGUgfSBmcm9tICdiZXR0ZXItYXV0aC9kYidcbmltcG9ydCB0eXBlIHsgQmV0dGVyQXV0aE9wdGlvbnMgfSBmcm9tICdiZXR0ZXItYXV0aCdcblxuLyoqXG4gKiBUaGlzIGlzIGEgc2xpZ2hsdHkgbW9kZmllZCB2ZXJzaW9uIG9mIHRoZSBnZXRTY2hlbWEgZnVuY3Rpb24gZnJvbSBiZXR0ZXItYXV0aC5cbiAqIEZvdW5kIGhlcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZXR0ZXItYXV0aC9iZXR0ZXItYXV0aC9ibG9iL21haW4vcGFja2FnZXMvYmV0dGVyLWF1dGgvc3JjL2RiL2dldC1zY2hlbWEudHNcbiAqXG4gKiBXZSBET04nVCBkbyB0aGlzOlxuICogYWN0dWFsRmllbGRzW2ZpZWxkLmZpZWxkTmFtZSB8fCBrZXldID0gZmllbGQ7XG4gKlxuICogSW5zdGVhZCB3ZSB3aWxsIGRvIHRoaXM6XG4gKiBhY3R1YWxGaWVsZHNba2V5XSA9IGZpZWxkO1xuICpcbiAqIFRoaXMgaXMgdG8gY29udGFpbiBjb25zaXN0ZW5jeSB3aGVuIHN0YXRpY2FsbHkgaGFyZCBjb2RlZCBrZXlzLlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBUaGUgYmV0dGVyIGF1dGggY29uZmlnXG4gKiBAcmV0dXJucyBUaGUgc2NoZW1hIGZvciB0aGUgYmV0dGVyIGF1dGggdGFibGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCZXR0ZXJBdXRoU2NoZW1hKGNvbmZpZzogQmV0dGVyQXV0aE9wdGlvbnMpIHtcbiAgY29uc3QgdGFibGVzID0gZ2V0QXV0aFRhYmxlcyhjb25maWcpXG4gIGxldCBzY2hlbWE6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgZmllbGRzOiBSZWNvcmQ8c3RyaW5nLCBGaWVsZEF0dHJpYnV0ZT5cbiAgICAgIG9yZGVyOiBudW1iZXJcbiAgICB9XG4gID4gPSB7fVxuICBmb3IgKGNvbnN0IGtleSBpbiB0YWJsZXMpIHtcbiAgICBjb25zdCB0YWJsZSA9IHRhYmxlc1trZXldXG4gICAgY29uc3QgZmllbGRzID0gdGFibGUuZmllbGRzXG4gICAgbGV0IGFjdHVhbEZpZWxkczogUmVjb3JkPHN0cmluZywgRmllbGRBdHRyaWJ1dGU+ID0ge31cbiAgICBPYmplY3QuZW50cmllcyhmaWVsZHMpLmZvckVhY2goKFtrZXksIGZpZWxkXSkgPT4ge1xuICAgICAgYWN0dWFsRmllbGRzW2tleV0gPSBmaWVsZFxuICAgICAgaWYgKGZpZWxkLnJlZmVyZW5jZXMpIHtcbiAgICAgICAgY29uc3QgcmVmVGFibGUgPSB0YWJsZXNbZmllbGQucmVmZXJlbmNlcy5tb2RlbF1cbiAgICAgICAgaWYgKHJlZlRhYmxlKSB7XG4gICAgICAgICAgYWN0dWFsRmllbGRzW2tleV0ucmVmZXJlbmNlcyA9IHtcbiAgICAgICAgICAgIG1vZGVsOiByZWZUYWJsZS5tb2RlbE5hbWUsXG4gICAgICAgICAgICBmaWVsZDogZmllbGQucmVmZXJlbmNlcy5maWVsZFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgaWYgKHNjaGVtYVt0YWJsZS5tb2RlbE5hbWVdKSB7XG4gICAgICBzY2hlbWFbdGFibGUubW9kZWxOYW1lXS5maWVsZHMgPSB7XG4gICAgICAgIC4uLnNjaGVtYVt0YWJsZS5tb2RlbE5hbWVdLmZpZWxkcyxcbiAgICAgICAgLi4uYWN0dWFsRmllbGRzXG4gICAgICB9XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBzY2hlbWFbdGFibGUubW9kZWxOYW1lXSA9IHtcbiAgICAgIGZpZWxkczogYWN0dWFsRmllbGRzLFxuICAgICAgb3JkZXI6IHRhYmxlLm9yZGVyIHx8IEluZmluaXR5XG4gICAgfVxuICB9XG4gIHJldHVybiBzY2hlbWFcbn1cbiJdLCJuYW1lcyI6WyJnZXRBdXRoVGFibGVzIiwiZ2V0QmV0dGVyQXV0aFNjaGVtYSIsImNvbmZpZyIsInRhYmxlcyIsInNjaGVtYSIsImtleSIsInRhYmxlIiwiZmllbGRzIiwiYWN0dWFsRmllbGRzIiwiT2JqZWN0IiwiZW50cmllcyIsImZvckVhY2giLCJmaWVsZCIsInJlZmVyZW5jZXMiLCJyZWZUYWJsZSIsIm1vZGVsIiwibW9kZWxOYW1lIiwib3JkZXIiLCJJbmZpbml0eSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsYUFBYSxRQUE2QixpQkFBZ0I7QUFHbkU7Ozs7Ozs7Ozs7Ozs7O0NBY0MsR0FDRCxPQUFPLFNBQVNDLG9CQUFvQkMsTUFBeUI7SUFDM0QsTUFBTUMsU0FBU0gsY0FBY0U7SUFDN0IsSUFBSUUsU0FNQSxDQUFDO0lBQ0wsSUFBSyxNQUFNQyxPQUFPRixPQUFRO1FBQ3hCLE1BQU1HLFFBQVFILE1BQU0sQ0FBQ0UsSUFBSTtRQUN6QixNQUFNRSxTQUFTRCxNQUFNQyxNQUFNO1FBQzNCLElBQUlDLGVBQStDLENBQUM7UUFDcERDLE9BQU9DLE9BQU8sQ0FBQ0gsUUFBUUksT0FBTyxDQUFDLENBQUMsQ0FBQ04sS0FBS08sTUFBTTtZQUMxQ0osWUFBWSxDQUFDSCxJQUFJLEdBQUdPO1lBQ3BCLElBQUlBLE1BQU1DLFVBQVUsRUFBRTtnQkFDcEIsTUFBTUMsV0FBV1gsTUFBTSxDQUFDUyxNQUFNQyxVQUFVLENBQUNFLEtBQUssQ0FBQztnQkFDL0MsSUFBSUQsVUFBVTtvQkFDWk4sWUFBWSxDQUFDSCxJQUFJLENBQUNRLFVBQVUsR0FBRzt3QkFDN0JFLE9BQU9ELFNBQVNFLFNBQVM7d0JBQ3pCSixPQUFPQSxNQUFNQyxVQUFVLENBQUNELEtBQUs7b0JBQy9CO2dCQUNGO1lBQ0Y7UUFDRjtRQUNBLElBQUlSLE1BQU0sQ0FBQ0UsTUFBTVUsU0FBUyxDQUFDLEVBQUU7WUFDM0JaLE1BQU0sQ0FBQ0UsTUFBTVUsU0FBUyxDQUFDLENBQUNULE1BQU0sR0FBRztnQkFDL0IsR0FBR0gsTUFBTSxDQUFDRSxNQUFNVSxTQUFTLENBQUMsQ0FBQ1QsTUFBTTtnQkFDakMsR0FBR0MsWUFBWTtZQUNqQjtZQUNBO1FBQ0Y7UUFDQUosTUFBTSxDQUFDRSxNQUFNVSxTQUFTLENBQUMsR0FBRztZQUN4QlQsUUFBUUM7WUFDUlMsT0FBT1gsTUFBTVcsS0FBSyxJQUFJQztRQUN4QjtJQUNGO0lBQ0EsT0FBT2Q7QUFDVCJ9
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vaGVscGVycy9nZXQtYmV0dGVyLWF1dGgtc2NoZW1hLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsS2V5IH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9nZW5lcmF0ZWQtdHlwZXMnO1xuaW1wb3J0IHsgZ2V0QXV0aFRhYmxlcywgdHlwZSBGaWVsZEF0dHJpYnV0ZSB9IGZyb20gJ2JldHRlci1hdXRoL2RiJztcbmltcG9ydCB7IGJhTW9kZWxGaWVsZEtleXNUb0ZpZWxkTmFtZXMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQmV0dGVyQXV0aFBsdWdpbk9wdGlvbnMsIEJldHRlckF1dGhTY2hlbWFzIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0RGVhZnVsdENvbGxlY3Rpb25TbHVnIH0gZnJvbSAnLi9nZXQtY29sbGVjdGlvbi1zbHVnJztcblxuLyoqXG4gKiBBIGNvbnNpc3RlbnQgQmV0dGVyQXV0aCBzY2hlbWEgZ2VuZXJhdG9yLlxuICpcbiAqIERpZmZlcmVuY2VzIGZyb20gdGhlIG9yaWdpbmFsIGBnZXRTY2hlbWFgIGltcGxlbWVudGF0aW9uIGluIEJldHRlckF1dGg6XG4gKiAxLiBLZXlzIGluIHRoZSByZXR1cm5lZCBvYmplY3QgYXJlIGFsd2F5cyB0aGUgKipzdGF0aWMgdGFibGUgaWRlbnRpZmllcnMqKiBjb21pbmcgZnJvbVxuICogICAgYGdldEF1dGhUYWJsZXNgLCBuZXZlciB0aGUgcG9zc2libHktb3ZlcnJpZGRlbiBgbW9kZWxOYW1lYC4gIFRoaXMgZ3VhcmFudGVlcyB0aGF0XG4gKiAgICBzdWJzZXF1ZW50IGxvb2stdXBzIHJlbWFpbiBzdGFibGUgZXZlbiBpZiB0aGUgdXNlciByZW5hbWVzIGNvbGxlY3Rpb25zLlxuICogMi4gRWFjaCBzY2hlbWEgZW50cnkgbm93IGNvbnRhaW5zIGFuIGV4cGxpY2l0IGBtb2RlbE5hbWVgIHByb3BlcnR5IGV4cG9zaW5nIHRoZSBjdXJyZW50XG4gKiAgICAocG90ZW50aWFsbHkgdXNlci1vdmVycmlkZGVuKSBtb2RlbCBuYW1lLCB3aGlsZSBgZmllbGRzYCBjb250aW51ZSB0byBiZSByZWZlcmVuY2VkIGJ5XG4gKiAgICB0aGVpciBzdGF0aWMgQmV0dGVyQXV0aCBmaWVsZCBrZXlzLlxuICogMy4gV2hlbiBjb252ZXJ0aW5nIGZpZWxkcywgd2Ugc3RvcmUgdGhlbSB1bmRlciB0aGVpciBvcmlnaW5hbCBrZXkgKGBhY3R1YWxGaWVsZHNba2V5XSA9IGZpZWxkYClcbiAqICAgIGluc3RlYWQgb2YgYGZpZWxkLmZpZWxkTmFtZSB8fCBrZXlgIHRvIGF2b2lkIGFjY2lkZW50YWwgcmVuYW1lcy5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gVGhlIEJldHRlckF1dGggb3B0aW9ucyBmZWQgaW50byBgZ2V0QXV0aFRhYmxlc2AuXG4gKiBAcmV0dXJucyBBIG1hcCBrZXllZCBieSBzdGF0aWMgdGFibGUga2V5cywgZWFjaCB2YWx1ZSBjb250YWluaW5nIGB7IG1vZGVsTmFtZSwgZmllbGRzLCBvcmRlciB9YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRCZXR0ZXJBdXRoU2NoZW1hKHBsdWdpbk9wdGlvbnM6IEJldHRlckF1dGhQbHVnaW5PcHRpb25zKTogQmV0dGVyQXV0aFNjaGVtYXMge1xuICBjb25zdCBiZXR0ZXJBdXRoT3B0aW9ucyA9IHBsdWdpbk9wdGlvbnMuYmV0dGVyQXV0aE9wdGlvbnMgPz8ge31cbiAgY29uc3QgdGFibGVzID0gZ2V0QXV0aFRhYmxlcyhiZXR0ZXJBdXRoT3B0aW9ucylcblxuICBjb25zdCBzY2hlbWE6IFBhcnRpYWw8QmV0dGVyQXV0aFNjaGVtYXM+ID0ge31cblxuICBmb3IgKGNvbnN0IG1vZGVsS2V5IG9mIE9iamVjdC5rZXlzKHRhYmxlcykgYXMgTW9kZWxLZXlbXSkge1xuICAgIGNvbnN0IHRhYmxlID0gdGFibGVzW21vZGVsS2V5XVxuXG4gICAgLy8gUmVzb2x2ZSB0aGUgY2Fub25pY2FsIGNvbGxlY3Rpb24gc2x1ZyAvIG1vZGVsIG5hbWUgZm9yIHRoaXMga2V5XG4gICAgY29uc3QgcmVzb2x2ZWRNb2RlbE5hbWUgPSBnZXREZWFmdWx0Q29sbGVjdGlvblNsdWcoeyBtb2RlbEtleSwgcGx1Z2luT3B0aW9ucyB9KVxuXG4gICAgY29uc3QgZGVmYXVsdEZpZWxkTWFwID0gKGJhTW9kZWxGaWVsZEtleXNUb0ZpZWxkTmFtZXMgYXMgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4pW21vZGVsS2V5XSA/PyB7fVxuXG4gICAgY29uc3QgYWN0dWFsRmllbGRzOiBSZWNvcmQ8c3RyaW5nLCBGaWVsZEF0dHJpYnV0ZT4gPSB7fVxuXG4gICAgT2JqZWN0LmVudHJpZXModGFibGUuZmllbGRzKS5mb3JFYWNoKChbZmllbGRLZXksIGZpZWxkVmFsdWVdKSA9PiB7XG4gICAgICAvLyBCdWlsZCB0aGUgZmllbGQgZW5zdXJpbmcgYSBmaWVsZE5hbWUgZXhpc3RzXG4gICAgICBjb25zdCBuZXdGaWVsZDogRmllbGRBdHRyaWJ1dGUgPSB7XG4gICAgICAgIC4uLmZpZWxkVmFsdWUsXG4gICAgICAgIGZpZWxkTmFtZTogZGVmYXVsdEZpZWxkTWFwW2ZpZWxkS2V5XSA/PyBmaWVsZEtleVxuICAgICAgfVxuXG4gICAgICAvLyBSZXdyaXRlIHJlZmVyZW5jZXMgdG8gdXNlIHRoZSByZXNvbHZlZCBtb2RlbE5hbWUgZm9yIHRoZSB0YXJnZXQgdGFibGVcbiAgICAgIGlmIChmaWVsZFZhbHVlLnJlZmVyZW5jZXMpIHtcbiAgICAgICAgY29uc3QgcmVmTW9kZWxLZXkgPSBmaWVsZFZhbHVlLnJlZmVyZW5jZXMubW9kZWwgYXMgc3RyaW5nXG4gICAgICAgIGNvbnN0IHJlc29sdmVkUmVmTW9kZWxOYW1lID0gZ2V0RGVhZnVsdENvbGxlY3Rpb25TbHVnKHsgbW9kZWxLZXk6IHJlZk1vZGVsS2V5LCBwbHVnaW5PcHRpb25zIH0pXG4gICAgICAgIG5ld0ZpZWxkLnJlZmVyZW5jZXMgPSB7XG4gICAgICAgICAgbW9kZWw6IHJlc29sdmVkUmVmTW9kZWxOYW1lLFxuICAgICAgICAgIGZpZWxkOiBmaWVsZFZhbHVlLnJlZmVyZW5jZXMuZmllbGRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhY3R1YWxGaWVsZHNbZmllbGRLZXldID0gbmV3RmllbGRcbiAgICB9KVxuXG4gICAgaWYgKHNjaGVtYVttb2RlbEtleV0pIHtcbiAgICAgIHNjaGVtYVttb2RlbEtleV0uZmllbGRzID0ge1xuICAgICAgICAuLi5zY2hlbWFbbW9kZWxLZXldLmZpZWxkcyxcbiAgICAgICAgLi4uYWN0dWFsRmllbGRzXG4gICAgICB9XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIHNjaGVtYVttb2RlbEtleV0gPSB7XG4gICAgICBtb2RlbE5hbWU6IHJlc29sdmVkTW9kZWxOYW1lLFxuICAgICAgZmllbGRzOiBhY3R1YWxGaWVsZHMsXG4gICAgICBvcmRlcjogdGFibGUub3JkZXIgfHwgSW5maW5pdHlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2NoZW1hIGFzIEJldHRlckF1dGhTY2hlbWFzXG59XG4iXSwibmFtZXMiOlsiZ2V0QXV0aFRhYmxlcyIsImJhTW9kZWxGaWVsZEtleXNUb0ZpZWxkTmFtZXMiLCJnZXREZWFmdWx0Q29sbGVjdGlvblNsdWciLCJnZXREZWZhdWx0QmV0dGVyQXV0aFNjaGVtYSIsInBsdWdpbk9wdGlvbnMiLCJiZXR0ZXJBdXRoT3B0aW9ucyIsInRhYmxlcyIsInNjaGVtYSIsIm1vZGVsS2V5IiwiT2JqZWN0Iiwia2V5cyIsInRhYmxlIiwicmVzb2x2ZWRNb2RlbE5hbWUiLCJkZWZhdWx0RmllbGRNYXAiLCJhY3R1YWxGaWVsZHMiLCJlbnRyaWVzIiwiZmllbGRzIiwiZm9yRWFjaCIsImZpZWxkS2V5IiwiZmllbGRWYWx1ZSIsIm5ld0ZpZWxkIiwiZmllbGROYW1lIiwicmVmZXJlbmNlcyIsInJlZk1vZGVsS2V5IiwibW9kZWwiLCJyZXNvbHZlZFJlZk1vZGVsTmFtZSIsImZpZWxkIiwibW9kZWxOYW1lIiwib3JkZXIiLCJJbmZpbml0eSJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EsYUFBYSxRQUE2QixpQkFBaUI7QUFDcEUsU0FBU0MsNEJBQTRCLFFBQVEsZUFBZTtBQUU1RCxTQUFTQyx3QkFBd0IsUUFBUSx3QkFBd0I7QUFFakU7Ozs7Ozs7Ozs7Ozs7OztDQWVDLEdBQ0QsT0FBTyxTQUFTQywyQkFBMkJDLGFBQXNDO0lBQy9FLE1BQU1DLG9CQUFvQkQsY0FBY0MsaUJBQWlCLElBQUksQ0FBQztJQUM5RCxNQUFNQyxTQUFTTixjQUFjSztJQUU3QixNQUFNRSxTQUFxQyxDQUFDO0lBRTVDLEtBQUssTUFBTUMsWUFBWUMsT0FBT0MsSUFBSSxDQUFDSixRQUF1QjtRQUN4RCxNQUFNSyxRQUFRTCxNQUFNLENBQUNFLFNBQVM7UUFFOUIsa0VBQWtFO1FBQ2xFLE1BQU1JLG9CQUFvQlYseUJBQXlCO1lBQUVNO1lBQVVKO1FBQWM7UUFFN0UsTUFBTVMsa0JBQWtCLEFBQUNaLDRCQUF1RSxDQUFDTyxTQUFTLElBQUksQ0FBQztRQUUvRyxNQUFNTSxlQUErQyxDQUFDO1FBRXRETCxPQUFPTSxPQUFPLENBQUNKLE1BQU1LLE1BQU0sRUFBRUMsT0FBTyxDQUFDLENBQUMsQ0FBQ0MsVUFBVUMsV0FBVztZQUMxRCw4Q0FBOEM7WUFDOUMsTUFBTUMsV0FBMkI7Z0JBQy9CLEdBQUdELFVBQVU7Z0JBQ2JFLFdBQVdSLGVBQWUsQ0FBQ0ssU0FBUyxJQUFJQTtZQUMxQztZQUVBLHdFQUF3RTtZQUN4RSxJQUFJQyxXQUFXRyxVQUFVLEVBQUU7Z0JBQ3pCLE1BQU1DLGNBQWNKLFdBQVdHLFVBQVUsQ0FBQ0UsS0FBSztnQkFDL0MsTUFBTUMsdUJBQXVCdkIseUJBQXlCO29CQUFFTSxVQUFVZTtvQkFBYW5CO2dCQUFjO2dCQUM3RmdCLFNBQVNFLFVBQVUsR0FBRztvQkFDcEJFLE9BQU9DO29CQUNQQyxPQUFPUCxXQUFXRyxVQUFVLENBQUNJLEtBQUs7Z0JBQ3BDO1lBQ0Y7WUFFQVosWUFBWSxDQUFDSSxTQUFTLEdBQUdFO1FBQzNCO1FBRUEsSUFBSWIsTUFBTSxDQUFDQyxTQUFTLEVBQUU7WUFDcEJELE1BQU0sQ0FBQ0MsU0FBUyxDQUFDUSxNQUFNLEdBQUc7Z0JBQ3hCLEdBQUdULE1BQU0sQ0FBQ0MsU0FBUyxDQUFDUSxNQUFNO2dCQUMxQixHQUFHRixZQUFZO1lBQ2pCO1lBQ0E7UUFDRjtRQUVBUCxNQUFNLENBQUNDLFNBQVMsR0FBRztZQUNqQm1CLFdBQVdmO1lBQ1hJLFFBQVFGO1lBQ1JjLE9BQU9qQixNQUFNaUIsS0FBSyxJQUFJQztRQUN4QjtJQUNGO0lBRUEsT0FBT3RCO0FBQ1QifQ==
@@ -1,41 +1,16 @@
1
- import type { Collection, CollectionConfig, Field } from 'payload';
1
+ import { BetterAuthFullSchema, ModelKey } from '@/better-auth/generated-types';
2
+ import { type Collection, type CollectionConfig } from 'payload';
3
+ export declare function getCollectionByModelKey(collections: Record<string, Collection>, modelKey: ModelKey): CollectionConfig;
2
4
  /**
3
- * Retrieves a collection from the collection map based on its Better Auth model key
5
+ * Retrieves the field name from a collection based on the field key
4
6
  *
5
- * This function searches through the provided collection map to find a collection
6
- * that has been marked with a specific Better Auth model key in its custom properties.
7
- * It's used to map between Better Auth's internal model keys and Payload CMS collections.
7
+ * This function searches through the fields of a collection to find a field
8
+ * that has a matching custom property betterAuthFieldKey.
8
9
  *
9
- * @param collectionMap - Map of all available collections
10
- * @param betterAuthModelKey - The Better Auth model key to search for
11
- * @returns The matched collection configuration
12
- * @throws {Error} If no collection with the specified Better Auth model key is found
10
+ * @param collection - The collection configuration to search through
11
+ * @param model - The model key of the collection (This is really just for type hinting)
12
+ * @param fieldKey - The key of the field to search for
13
+ * @returns The name of the field if found, otherwise the field key itself
13
14
  */
14
- export declare function getMappedCollection({ collectionMap, betterAuthModelKey }: {
15
- collectionMap: Record<string, CollectionConfig>;
16
- betterAuthModelKey: string;
17
- }): CollectionConfig;
18
- interface MappedField extends Omit<Field, 'type'> {
19
- name: string;
20
- type: Exclude<Field['type'], 'tabs' | 'row' | 'collapsible'>;
21
- }
22
- /**
23
- * Retrieves a field from a collection based on its Better Auth field key
24
- *
25
- * This function searches through the fields of a provided collection to find a field
26
- * that has been marked with a specific Better Auth field key in its custom properties.
27
- * It's used to map between Better Auth's internal field keys and Payload CMS field configurations.
28
- *
29
- * @param collection - The collection configuration to search within
30
- * @param betterAuthFieldKey - The Better Auth field key to search for
31
- * @returns The matched field configuration with a guaranteed name and non-UI type
32
- * @throws {Error} If no field with the specified Better Auth field key is found
33
- * @throws {Error} If the found field is a UI-only field type (tabs, row, collapsible)
34
- */
35
- export declare function getMappedField({ collection, betterAuthFieldKey }: {
36
- collection: CollectionConfig;
37
- betterAuthFieldKey: string;
38
- }): MappedField;
39
- export declare function transformCollectionsToCollectionConfigs(collections: Record<string, Collection>): Record<string, CollectionConfig>;
40
- export {};
15
+ export declare function getCollectionFieldNameByFieldKey<M extends ModelKey>(collection: CollectionConfig, model: M, fieldKey: Extract<keyof BetterAuthFullSchema[M], string>): string;
41
16
  //# sourceMappingURL=get-collection.d.ts.map