@keycloakify/angular 0.0.1-rc.2 → 0.0.1-rc.3

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 (145) hide show
  1. package/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.mjs +3 -3
  2. package/login/components/field-errors/field-errors.component.mjs +3 -3
  3. package/login/components/group-label/group-label.component.mjs +3 -3
  4. package/login/components/input-field-by-type/input-field-by-type.component.mjs +4 -11
  5. package/login/components/input-tag/input-tag.component.mjs +3 -3
  6. package/login/components/input-tag-selects/input-tag-selects.component.mjs +3 -3
  7. package/login/components/logout-other-sessions/logout-other-sessions.component.mjs +3 -3
  8. package/login/components/password-wrapper/password-wrapper.component.mjs +3 -3
  9. package/login/components/select-tag/select-tag.component.mjs +3 -3
  10. package/login/components/textarea-tag/textarea-tag.component.mjs +3 -3
  11. package/login/components/user-profile-form-fields/user-profile-form-fields.component.mjs +4 -11
  12. package/login/containers/template.component.mjs +4 -5
  13. package/login/pages/code/code.component.mjs +3 -3
  14. package/login/pages/delete-account-confirm/delete-account-confirm.component.mjs +3 -3
  15. package/login/pages/delete-credential/delete-credential.component.mjs +3 -3
  16. package/login/pages/error/error.component.mjs +3 -3
  17. package/login/pages/frontchannel-logout/frontchannel-logout.component.mjs +3 -3
  18. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.mjs +4 -9
  19. package/login/pages/info/info.component.mjs +3 -3
  20. package/login/pages/login/login.component.mjs +5 -15
  21. package/login/pages/login-config-totp/login-config-totp.component.mjs +4 -11
  22. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.mjs +3 -3
  23. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.mjs +3 -3
  24. package/login/pages/login-idp-link-email/login-idp-link-email.component.mjs +3 -3
  25. package/login/pages/login-oauth-grant/login-oauth-grant.component.mjs +3 -3
  26. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.mjs +3 -3
  27. package/login/pages/login-otp/login-otp.component.mjs +3 -3
  28. package/login/pages/login-page-expired/login-page-expired.component.mjs +3 -3
  29. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.mjs +3 -3
  30. package/login/pages/login-password/login-password.component.mjs +4 -10
  31. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.mjs +4 -9
  32. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.mjs +3 -3
  33. package/login/pages/login-reset-otp/login-reset-otp.component.mjs +3 -3
  34. package/login/pages/login-reset-password/login-reset-password.component.mjs +3 -3
  35. package/login/pages/login-update-password/login-update-password.component.mjs +4 -11
  36. package/login/pages/login-update-profile/login-update-profile.component.mjs +4 -9
  37. package/login/pages/login-username/login-username.component.mjs +5 -14
  38. package/login/pages/login-verify-email/login-verify-email.component.mjs +3 -3
  39. package/login/pages/login-x509-info/login-x509-info.component.mjs +3 -3
  40. package/login/pages/logout-confirm/logout-confirm.component.mjs +3 -3
  41. package/login/pages/register/register.component.mjs +3 -3
  42. package/login/pages/saml-post-form/saml-post-form.component.mjs +3 -3
  43. package/login/pages/select-authenticator/select-authenticator.component.mjs +4 -10
  44. package/login/pages/terms/terms.component.mjs +3 -3
  45. package/login/pages/update-email/update-email.component.mjs +4 -10
  46. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.mjs +4 -10
  47. package/login/pages/webauthn-error/webauthn-error.component.mjs +4 -9
  48. package/login/pages/webauthn-register/webauthn-register.component.mjs +4 -9
  49. package/package.json +5 -5
  50. package/src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.html +19 -19
  51. package/src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.ts +2 -12
  52. package/src/login/components/field-errors/field-errors.component.html +10 -10
  53. package/src/login/components/field-errors/field-errors.component.ts +1 -7
  54. package/src/login/components/group-label/group-label.component.html +25 -25
  55. package/src/login/components/group-label/group-label.component.ts +1 -8
  56. package/src/login/components/input-field-by-type/input-field-by-type.component.html +57 -57
  57. package/src/login/components/input-field-by-type/input-field-by-type.component.ts +3 -21
  58. package/src/login/components/input-tag/input-tag.component.html +41 -45
  59. package/src/login/components/input-tag/input-tag.component.ts +2 -13
  60. package/src/login/components/input-tag-selects/input-tag-selects.component.html +22 -22
  61. package/src/login/components/input-tag-selects/input-tag-selects.component.ts +3 -17
  62. package/src/login/components/logout-other-sessions/logout-other-sessions.component.html +15 -15
  63. package/src/login/components/password-wrapper/password-wrapper.component.html +13 -13
  64. package/src/login/components/password-wrapper/password-wrapper.component.ts +2 -15
  65. package/src/login/components/select-tag/select-tag.component.html +26 -26
  66. package/src/login/components/select-tag/select-tag.component.ts +4 -19
  67. package/src/login/components/textarea-tag/textarea-tag.component.html +13 -15
  68. package/src/login/components/textarea-tag/textarea-tag.component.ts +2 -12
  69. package/src/login/components/user-profile-form-fields/user-profile-form-fields.component.html +71 -71
  70. package/src/login/components/user-profile-form-fields/user-profile-form-fields.component.ts +4 -28
  71. package/src/login/containers/template.component.html +183 -183
  72. package/src/login/containers/template.component.ts +4 -22
  73. package/src/login/pages/code/code.component.html +21 -21
  74. package/src/login/pages/code/code.component.ts +1 -5
  75. package/src/login/pages/delete-account-confirm/delete-account-confirm.component.html +44 -42
  76. package/src/login/pages/delete-account-confirm/delete-account-confirm.component.ts +2 -7
  77. package/src/login/pages/delete-credential/delete-credential.component.html +29 -29
  78. package/src/login/pages/delete-credential/delete-credential.component.ts +3 -14
  79. package/src/login/pages/error/error.component.html +20 -20
  80. package/src/login/pages/error/error.component.ts +1 -5
  81. package/src/login/pages/frontchannel-logout/frontchannel-logout.component.html +31 -31
  82. package/src/login/pages/frontchannel-logout/frontchannel-logout.component.ts +3 -15
  83. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.html +36 -36
  84. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.ts +4 -21
  85. package/src/login/pages/info/info.component.html +45 -45
  86. package/src/login/pages/info/info.component.ts +3 -15
  87. package/src/login/pages/login/login.component.html +194 -194
  88. package/src/login/pages/login/login.component.ts +5 -30
  89. package/src/login/pages/login-config-totp/login-config-totp.component.html +189 -179
  90. package/src/login/pages/login-config-totp/login-config-totp.component.ts +5 -26
  91. package/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.html +35 -35
  92. package/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.ts +3 -14
  93. package/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.html +34 -34
  94. package/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.ts +3 -16
  95. package/src/login/pages/login-idp-link-email/login-idp-link-email.component.html +32 -30
  96. package/src/login/pages/login-idp-link-email/login-idp-link-email.component.ts +3 -14
  97. package/src/login/pages/login-oauth-grant/login-oauth-grant.component.html +83 -81
  98. package/src/login/pages/login-oauth-grant/login-oauth-grant.component.ts +3 -14
  99. package/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.html +57 -57
  100. package/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.ts +3 -16
  101. package/src/login/pages/login-otp/login-otp.component.html +96 -96
  102. package/src/login/pages/login-otp/login-otp.component.ts +2 -12
  103. package/src/login/pages/login-page-expired/login-page-expired.component.html +31 -31
  104. package/src/login/pages/login-page-expired/login-page-expired.component.ts +3 -14
  105. package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.html +183 -181
  106. package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.ts +2 -9
  107. package/src/login/pages/login-password/login-password.component.html +82 -82
  108. package/src/login/pages/login-password/login-password.component.ts +3 -20
  109. package/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.html +142 -142
  110. package/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.ts +4 -23
  111. package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.html +67 -67
  112. package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.ts +4 -18
  113. package/src/login/pages/login-reset-otp/login-reset-otp.component.html +61 -59
  114. package/src/login/pages/login-reset-otp/login-reset-otp.component.ts +2 -12
  115. package/src/login/pages/login-reset-password/login-reset-password.component.html +84 -84
  116. package/src/login/pages/login-reset-password/login-reset-password.component.ts +3 -14
  117. package/src/login/pages/login-update-password/login-update-password.component.html +107 -107
  118. package/src/login/pages/login-update-password/login-update-password.component.ts +5 -26
  119. package/src/login/pages/login-update-profile/login-update-profile.component.html +53 -53
  120. package/src/login/pages/login-update-profile/login-update-profile.component.ts +4 -21
  121. package/src/login/pages/login-username/login-username.component.html +146 -146
  122. package/src/login/pages/login-username/login-username.component.ts +4 -25
  123. package/src/login/pages/login-verify-email/login-verify-email.component.html +22 -22
  124. package/src/login/pages/login-verify-email/login-verify-email.component.ts +3 -14
  125. package/src/login/pages/login-x509-info/login-x509-info.component.html +96 -96
  126. package/src/login/pages/login-x509-info/login-x509-info.component.ts +2 -12
  127. package/src/login/pages/logout-confirm/logout-confirm.component.html +51 -51
  128. package/src/login/pages/logout-confirm/logout-confirm.component.ts +2 -12
  129. package/src/login/pages/register/register.component.html +113 -113
  130. package/src/login/pages/register/register.component.ts +2 -13
  131. package/src/login/pages/saml-post-form/saml-post-form.component.html +47 -48
  132. package/src/login/pages/saml-post-form/saml-post-form.component.ts +2 -14
  133. package/src/login/pages/select-authenticator/select-authenticator.component.html +43 -44
  134. package/src/login/pages/select-authenticator/select-authenticator.component.ts +4 -21
  135. package/src/login/pages/terms/terms.component.html +32 -32
  136. package/src/login/pages/terms/terms.component.ts +2 -12
  137. package/src/login/pages/update-email/update-email.component.html +52 -52
  138. package/src/login/pages/update-email/update-email.component.ts +3 -20
  139. package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.html +146 -148
  140. package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.ts +5 -29
  141. package/src/login/pages/webauthn-error/webauthn-error.component.html +53 -53
  142. package/src/login/pages/webauthn-error/webauthn-error.component.ts +3 -18
  143. package/src/login/pages/webauthn-register/webauthn-register.component.html +73 -73
  144. package/src/login/pages/webauthn-register/webauthn-register.component.ts +4 -20
  145. package/src/tsconfig.json +0 -1
@@ -32,20 +32,15 @@ export class WebauthnErrorComponent extends ComponentReference {
32
32
  provide: ComponentReference,
33
33
  useExisting: forwardRef(() => WebauthnErrorComponent)
34
34
  }
35
- ], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ 'webauthn-error-title' | msgStr }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-error-credential-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n id=\"executionValue\"\n name=\"authenticationExecution\"\n />\n <input\n type=\"hidden\"\n id=\"isSetRetry\"\n name=\"isSetRetry\"\n />\n </form>\n <input\n tabIndex=\"4\"\n (click)=\"onClick()\"\n type=\"button\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"try-again\"\n id=\"kc-try-again\"\n [value]=\"'doTryAgain' | msgStr\"\n />\n @if (isAppInitiatedAction) {\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-webauthn-settings-form\"\n method=\"post\"\n >\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ 'doCancel' | msgStr }}\n </button>\n </form>\n }\n </ng-container>\n</kc-login-template>\n", dependencies: [{ kind: "component", type: TemplateComponent, selector: "kc-login-template", inputs: ["displayInfo", "displayMessage", "displayRequiredFields", "documentTitle", "bodyClassName"] }, { kind: "pipe", type: MsgStrPipe, name: "msgStr" }, { kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35
+ ], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ 'webauthn-error-title' | msgStr }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-error-credential-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n id=\"executionValue\"\n name=\"authenticationExecution\"\n />\n <input\n type=\"hidden\"\n id=\"isSetRetry\"\n name=\"isSetRetry\"\n />\n </form>\n <input\n tabIndex=\"4\"\n (click)=\"onClick()\"\n type=\"button\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"try-again\"\n id=\"kc-try-again\"\n [value]=\"'doTryAgain' | msgStr\"\n />\n @if (isAppInitiatedAction) {\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-webauthn-settings-form\"\n method=\"post\"\n >\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ 'doCancel' | msgStr }}\n </button>\n </form>\n }\n </ng-container>\n</kc-login-template>\n", dependencies: [{ kind: "component", type: TemplateComponent, selector: "kc-login-template", inputs: ["displayInfo", "displayMessage", "displayRequiredFields", "documentTitle", "bodyClassName"] }, { kind: "pipe", type: MsgStrPipe, name: "msgStr" }, { kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36
36
  }
37
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WebauthnErrorComponent, decorators: [{
38
38
  type: Component,
39
- args: [{ standalone: true, imports: [
40
- TemplateComponent,
41
- MsgStrPipe,
42
- KcClassDirective,
43
- LogoutOtherSessionsComponent
44
- ], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
39
+ args: [{ standalone: true, imports: [TemplateComponent, MsgStrPipe, KcClassDirective, LogoutOtherSessionsComponent], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
45
40
  {
46
41
  provide: ComponentReference,
47
42
  useExisting: forwardRef(() => WebauthnErrorComponent)
48
43
  }
49
- ], template: "@let url = kcContext.url;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ 'webauthn-error-title' | msgStr }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-error-credential-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n id=\"executionValue\"\n name=\"authenticationExecution\"\n />\n <input\n type=\"hidden\"\n id=\"isSetRetry\"\n name=\"isSetRetry\"\n />\n </form>\n <input\n tabIndex=\"4\"\n (click)=\"onClick()\"\n type=\"button\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"try-again\"\n id=\"kc-try-again\"\n [value]=\"'doTryAgain' | msgStr\"\n />\n @if (isAppInitiatedAction) {\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-webauthn-settings-form\"\n method=\"post\"\n >\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ 'doCancel' | msgStr }}\n </button>\n </form>\n }\n </ng-container>\n</kc-login-template>\n" }]
44
+ ], template: "@let url = kcContext.url;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n {{ 'webauthn-error-title' | msgStr }}\n </ng-container>\n <ng-container content>\n <form\n id=\"kc-error-credential-form\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <input\n type=\"hidden\"\n id=\"executionValue\"\n name=\"authenticationExecution\"\n />\n <input\n type=\"hidden\"\n id=\"isSetRetry\"\n name=\"isSetRetry\"\n />\n </form>\n <input\n tabIndex=\"4\"\n (click)=\"onClick()\"\n type=\"button\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n name=\"try-again\"\n id=\"kc-try-again\"\n [value]=\"'doTryAgain' | msgStr\"\n />\n @if (isAppInitiatedAction) {\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-webauthn-settings-form\"\n method=\"post\"\n >\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ 'doCancel' | msgStr }}\n </button>\n </form>\n }\n </ng-container>\n</kc-login-template>\n" }]
50
45
  }] });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViYXV0aG4tZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvd2ViYXV0aG4tZXJyb3Ivd2ViYXV0aG4tZXJyb3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvd2ViYXV0aG4tZXJyb3Ivd2ViYXV0aG4tZXJyb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ1YsZUFBZSxFQUNsQixNQUFNLHFDQUFxQyxDQUFDO0FBRzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZGQUE2RixDQUFDO0FBQzNJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7QUFvQjNFLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxrQkFBa0I7SUFsQjlEOztRQW1CSSxjQUFTLEdBQUcsTUFBTSxDQUF1RCxVQUFVLENBQUMsQ0FBQztRQUM1RSxvQkFBZSxHQUFHLE1BQU0sQ0FBVSxlQUFlLENBQUMsQ0FBQztRQUNuRCxZQUFPLEdBQUcsTUFBTSxDQUFvQyxPQUFPLENBQUMsQ0FBQztRQUN0RSwwQkFBcUIsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ2hDLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLG1CQUFjLEdBQVksSUFBSSxDQUFDO0tBVWxDO0lBUkcsT0FBTztRQUNILDRDQUE0QztRQUM1QyxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7UUFDdEQsNENBQTRDO1FBQzVDLFFBQVEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDO1FBQ2pFLDRDQUE0QztRQUM1QyxRQUFRLENBQUMsY0FBYyxDQUFDLDBCQUEwQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDakUsQ0FBQzs4R0FqQlEsc0JBQXNCO2tHQUF0QixzQkFBc0IsMGdCQVBwQjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7YUFDeEQ7U0FDSixpRENwQ0wsbXFEQTREQSw0Q0RyQ1EsaUJBQWlCLCtKQUNqQixVQUFVLCtDQUNWLGdCQUFnQjs7MkZBYVgsc0JBQXNCO2tCQWxCbEMsU0FBUztpQ0FDTSxJQUFJLFdBQ1A7d0JBQ0wsaUJBQWlCO3dCQUNqQixVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsNEJBQTRCO3FCQUMvQixZQUNTLFNBQVMsbUJBRUYsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzt5QkFDeEQ7cUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ0xBU1NFUyxcbiAgICBLQ19DT05URVhULFxuICAgIFVTRV9ERUZBVUxUX0NTU1xufSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9saWIvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBDbGFzc0tleSB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL2xpYi9rY0Nsc3gnO1xuaW1wb3J0IHsgS2NDb250ZXh0IH0gZnJvbSAna2V5Y2xvYWtpZnkvbG9naW4vS2NDb250ZXh0JztcbmltcG9ydCB7IENvbXBvbmVudFJlZmVyZW5jZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NsYXNzZXMvY29tcG9uZW50LXJlZmVyZW5jZS5jbGFzcyc7XG5pbXBvcnQgeyBMb2dvdXRPdGhlclNlc3Npb25zQ29tcG9uZW50IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vY29tcG9uZW50cy9sb2dvdXQtb3RoZXItc2Vzc2lvbnMvbG9nb3V0LW90aGVyLXNlc3Npb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NvbnRhaW5lcnMvdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IEtjQ2xhc3NEaXJlY3RpdmUgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IE1zZ1N0clBpcGUgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9waXBlcy9tc2ctc3RyLnBpcGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgVGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIE1zZ1N0clBpcGUsXG4gICAgICAgIEtjQ2xhc3NEaXJlY3RpdmUsXG4gICAgICAgIExvZ291dE90aGVyU2Vzc2lvbnNDb21wb25lbnRcbiAgICBdLFxuICAgIHNlbGVjdG9yOiAna2Mtcm9vdCcsXG4gICAgdGVtcGxhdGVVcmw6ICd3ZWJhdXRobi1lcnJvci5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IENvbXBvbmVudFJlZmVyZW5jZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdlYmF1dGhuRXJyb3JDb21wb25lbnQpXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFdlYmF1dGhuRXJyb3JDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRSZWZlcmVuY2Uge1xuICAgIGtjQ29udGV4dCA9IGluamVjdDxFeHRyYWN0PEtjQ29udGV4dCwgeyBwYWdlSWQ6ICd3ZWJhdXRobi1lcnJvci5mdGwnIH0+PihLQ19DT05URVhUKTtcbiAgICBvdmVycmlkZSBkb1VzZURlZmF1bHRDc3MgPSBpbmplY3Q8Ym9vbGVhbj4oVVNFX0RFRkFVTFRfQ1NTKTtcbiAgICBvdmVycmlkZSBjbGFzc2VzID0gaW5qZWN0PFBhcnRpYWw8UmVjb3JkPENsYXNzS2V5LCBzdHJpbmc+Pj4oQ0xBU1NFUyk7XG4gICAgZGlzcGxheVJlcXVpcmVkRmllbGRzID0gaW5wdXQoZmFsc2UpO1xuICAgIGRvY3VtZW50VGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgYm9keUNsYXNzTmFtZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBkaXNwbGF5SW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGRpc3BsYXlNZXNzYWdlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIG9uQ2xpY2soKSB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IFRydXN0ZWQgS2V5Y2xvYWsncyBjb2RlXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpc1NldFJldHJ5JykudmFsdWUgPSAncmV0cnknO1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBUcnVzdGVkIEtleWNsb2FrJ3MgY29kZVxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhlY3V0aW9uVmFsdWUnKS52YWx1ZSA9ICcke2V4ZWN1dGlvbn0nO1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBUcnVzdGVkIEtleWNsb2FrJ3MgY29kZVxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna2MtZXJyb3ItY3JlZGVudGlhbC1mb3JtJykuc3VibWl0KCk7XG4gICAgfVxufVxuIiwiQGxldCB1cmwgPSBrY0NvbnRleHQudXJsO1xuQGxldCBpc0FwcEluaXRpYXRlZEFjdGlvbiA9IGtjQ29udGV4dC5pc0FwcEluaXRpYXRlZEFjdGlvbjtcblxuPGtjLWxvZ2luLXRlbXBsYXRlXG4gIFtkaXNwbGF5SW5mb109XCJkaXNwbGF5SW5mb1wiXG4gIFtib2R5Q2xhc3NOYW1lXT1cImJvZHlDbGFzc05hbWUoKVwiXG4gIFtkaXNwbGF5TWVzc2FnZV09XCJkaXNwbGF5TWVzc2FnZVwiXG4gIFtkaXNwbGF5UmVxdWlyZWRGaWVsZHNdPVwiZGlzcGxheVJlcXVpcmVkRmllbGRzKClcIlxuICBbZG9jdW1lbnRUaXRsZV09XCJkb2N1bWVudFRpdGxlKClcIlxuPlxuICA8bmctY29udGFpbmVyIGhlYWRlck5vZGU+XG4gICAge3sgJ3dlYmF1dGhuLWVycm9yLXRpdGxlJyB8IG1zZ1N0ciB9fVxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciBjb250ZW50PlxuICAgIDxmb3JtXG4gICAgICBpZD1cImtjLWVycm9yLWNyZWRlbnRpYWwtZm9ybVwiXG4gICAgICBba2NDbGFzc109XCIna2NGb3JtQ2xhc3MnXCJcbiAgICAgIFthY3Rpb25dPVwidXJsLmxvZ2luQWN0aW9uXCJcbiAgICAgIG1ldGhvZD1cInBvc3RcIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgaWQ9XCJleGVjdXRpb25WYWx1ZVwiXG4gICAgICAgIG5hbWU9XCJhdXRoZW50aWNhdGlvbkV4ZWN1dGlvblwiXG4gICAgICAvPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICBpZD1cImlzU2V0UmV0cnlcIlxuICAgICAgICBuYW1lPVwiaXNTZXRSZXRyeVwiXG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgICA8aW5wdXRcbiAgICAgIHRhYkluZGV4PVwiNFwiXG4gICAgICAoY2xpY2spPVwib25DbGljaygpXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uUHJpbWFyeUNsYXNzJywgJ2tjQnV0dG9uQmxvY2tDbGFzcycsICdrY0J1dHRvbkxhcmdlQ2xhc3MnXVwiXG4gICAgICBuYW1lPVwidHJ5LWFnYWluXCJcbiAgICAgIGlkPVwia2MtdHJ5LWFnYWluXCJcbiAgICAgIFt2YWx1ZV09XCInZG9UcnlBZ2FpbicgfCBtc2dTdHJcIlxuICAgIC8+XG4gICAgQGlmIChpc0FwcEluaXRpYXRlZEFjdGlvbikge1xuICAgICAgPGZvcm1cbiAgICAgICAgW2FjdGlvbl09XCJ1cmwubG9naW5BY3Rpb25cIlxuICAgICAgICBba2NDbGFzc109XCIna2NGb3JtQ2xhc3MnXCJcbiAgICAgICAgaWQ9XCJrYy13ZWJhdXRobi1zZXR0aW5ncy1mb3JtXCJcbiAgICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICBba2NDbGFzc109XCJbJ2tjQnV0dG9uQ2xhc3MnLCAna2NCdXR0b25EZWZhdWx0Q2xhc3MnLCAna2NCdXR0b25CbG9ja0NsYXNzJywgJ2tjQnV0dG9uTGFyZ2VDbGFzcyddXCJcbiAgICAgICAgICBpZD1cImNhbmNlbFdlYkF1dGhuQUlBXCJcbiAgICAgICAgICBuYW1lPVwiY2FuY2VsLWFpYVwiXG4gICAgICAgICAgdmFsdWU9XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdkb0NhbmNlbCcgfCBtc2dTdHIgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Zvcm0+XG4gICAgfVxuICA8L25nLWNvbnRhaW5lcj5cbjwva2MtbG9naW4tdGVtcGxhdGU+XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViYXV0aG4tZXJyb3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvd2ViYXV0aG4tZXJyb3Ivd2ViYXV0aG4tZXJyb3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvd2ViYXV0aG4tZXJyb3Ivd2ViYXV0aG4tZXJyb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUczRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2RkFBNkYsQ0FBQztBQUMzSSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUM3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0NBQStDLENBQUM7O0FBZTNFLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxrQkFBa0I7SUFiOUQ7O1FBY0ksY0FBUyxHQUFHLE1BQU0sQ0FBdUQsVUFBVSxDQUFDLENBQUM7UUFDNUUsb0JBQWUsR0FBRyxNQUFNLENBQVUsZUFBZSxDQUFDLENBQUM7UUFDbkQsWUFBTyxHQUFHLE1BQU0sQ0FBb0MsT0FBTyxDQUFDLENBQUM7UUFDdEUsMEJBQXFCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixtQkFBYyxHQUFZLElBQUksQ0FBQztLQVVsQztJQVJHLE9BQU87UUFDSCw0Q0FBNEM7UUFDNUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1FBQ3RELDRDQUE0QztRQUM1QyxRQUFRLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBSyxHQUFHLGNBQWMsQ0FBQztRQUNqRSw0Q0FBNEM7UUFDNUMsUUFBUSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2pFLENBQUM7OEdBakJRLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDBnQkFQcEI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDO2FBQ3hEO1NBQ0osaURDckJMLHErREE0REEsNENEaERjLGlCQUFpQiwrSkFBRSxVQUFVLCtDQUFFLGdCQUFnQjs7MkZBV2hELHNCQUFzQjtrQkFibEMsU0FBUztpQ0FDTSxJQUFJLFdBQ1AsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsNEJBQTRCLENBQUMsWUFDOUUsU0FBUyxtQkFFRix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxrQkFBa0I7NEJBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDO3lCQUN4RDtxQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGZvcndhcmRSZWYsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENMQVNTRVMsIEtDX0NPTlRFWFQsIFVTRV9ERUZBVUxUX0NTUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xpYi9wdWJsaWMtYXBpJztcbmltcG9ydCB7IENsYXNzS2V5IH0gZnJvbSAna2V5Y2xvYWtpZnkvbG9naW4vbGliL2tjQ2xzeCc7XG5pbXBvcnQgeyBLY0NvbnRleHQgfSBmcm9tICdrZXljbG9ha2lmeS9sb2dpbi9LY0NvbnRleHQnO1xuaW1wb3J0IHsgQ29tcG9uZW50UmVmZXJlbmNlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vY2xhc3Nlcy9jb21wb25lbnQtcmVmZXJlbmNlLmNsYXNzJztcbmltcG9ydCB7IExvZ291dE90aGVyU2Vzc2lvbnNDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jb21wb25lbnRzL2xvZ291dC1vdGhlci1zZXNzaW9ucy9sb2dvdXQtb3RoZXItc2Vzc2lvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vY29udGFpbmVycy90ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgS2NDbGFzc0RpcmVjdGl2ZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgTXNnU3RyUGlwZSB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL3BpcGVzL21zZy1zdHIucGlwZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1RlbXBsYXRlQ29tcG9uZW50LCBNc2dTdHJQaXBlLCBLY0NsYXNzRGlyZWN0aXZlLCBMb2dvdXRPdGhlclNlc3Npb25zQ29tcG9uZW50XSxcbiAgICBzZWxlY3RvcjogJ2tjLXJvb3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnd2ViYXV0aG4tZXJyb3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDb21wb25lbnRSZWZlcmVuY2UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXZWJhdXRobkVycm9yQ29tcG9uZW50KVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBXZWJhdXRobkVycm9yQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50UmVmZXJlbmNlIHtcbiAgICBrY0NvbnRleHQgPSBpbmplY3Q8RXh0cmFjdDxLY0NvbnRleHQsIHsgcGFnZUlkOiAnd2ViYXV0aG4tZXJyb3IuZnRsJyB9Pj4oS0NfQ09OVEVYVCk7XG4gICAgb3ZlcnJpZGUgZG9Vc2VEZWZhdWx0Q3NzID0gaW5qZWN0PGJvb2xlYW4+KFVTRV9ERUZBVUxUX0NTUyk7XG4gICAgb3ZlcnJpZGUgY2xhc3NlcyA9IGluamVjdDxQYXJ0aWFsPFJlY29yZDxDbGFzc0tleSwgc3RyaW5nPj4+KENMQVNTRVMpO1xuICAgIGRpc3BsYXlSZXF1aXJlZEZpZWxkcyA9IGlucHV0KGZhbHNlKTtcbiAgICBkb2N1bWVudFRpdGxlID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIGJvZHlDbGFzc05hbWUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgZGlzcGxheUluZm86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBkaXNwbGF5TWVzc2FnZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBvbkNsaWNrKCkge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBUcnVzdGVkIEtleWNsb2FrJ3MgY29kZVxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXNTZXRSZXRyeScpLnZhbHVlID0gJ3JldHJ5JztcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogVHJ1c3RlZCBLZXljbG9haydzIGNvZGVcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4ZWN1dGlvblZhbHVlJykudmFsdWUgPSAnJHtleGVjdXRpb259JztcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogVHJ1c3RlZCBLZXljbG9haydzIGNvZGVcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2tjLWVycm9yLWNyZWRlbnRpYWwtZm9ybScpLnN1Ym1pdCgpO1xuICAgIH1cbn1cbiIsIkBsZXQgdXJsID0ga2NDb250ZXh0LnVybDtcbkBsZXQgaXNBcHBJbml0aWF0ZWRBY3Rpb24gPSBrY0NvbnRleHQuaXNBcHBJbml0aWF0ZWRBY3Rpb247XG5cbjxrYy1sb2dpbi10ZW1wbGF0ZVxuICAgIFtkaXNwbGF5SW5mb109XCJkaXNwbGF5SW5mb1wiXG4gICAgW2JvZHlDbGFzc05hbWVdPVwiYm9keUNsYXNzTmFtZSgpXCJcbiAgICBbZGlzcGxheU1lc3NhZ2VdPVwiZGlzcGxheU1lc3NhZ2VcIlxuICAgIFtkaXNwbGF5UmVxdWlyZWRGaWVsZHNdPVwiZGlzcGxheVJlcXVpcmVkRmllbGRzKClcIlxuICAgIFtkb2N1bWVudFRpdGxlXT1cImRvY3VtZW50VGl0bGUoKVwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciBoZWFkZXJOb2RlPlxuICAgICAgICB7eyAnd2ViYXV0aG4tZXJyb3ItdGl0bGUnIHwgbXNnU3RyIH19XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciBjb250ZW50PlxuICAgICAgICA8Zm9ybVxuICAgICAgICAgICAgaWQ9XCJrYy1lcnJvci1jcmVkZW50aWFsLWZvcm1cIlxuICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjRm9ybUNsYXNzJ1wiXG4gICAgICAgICAgICBbYWN0aW9uXT1cInVybC5sb2dpbkFjdGlvblwiXG4gICAgICAgICAgICBtZXRob2Q9XCJwb3N0XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgaWQ9XCJleGVjdXRpb25WYWx1ZVwiXG4gICAgICAgICAgICAgICAgbmFtZT1cImF1dGhlbnRpY2F0aW9uRXhlY3V0aW9uXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICBpZD1cImlzU2V0UmV0cnlcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJpc1NldFJldHJ5XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZm9ybT5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0YWJJbmRleD1cIjRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtrY0NsYXNzXT1cIlsna2NCdXR0b25DbGFzcycsICdrY0J1dHRvblByaW1hcnlDbGFzcycsICdrY0J1dHRvbkJsb2NrQ2xhc3MnLCAna2NCdXR0b25MYXJnZUNsYXNzJ11cIlxuICAgICAgICAgICAgbmFtZT1cInRyeS1hZ2FpblwiXG4gICAgICAgICAgICBpZD1cImtjLXRyeS1hZ2FpblwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiJ2RvVHJ5QWdhaW4nIHwgbXNnU3RyXCJcbiAgICAgICAgLz5cbiAgICAgICAgQGlmIChpc0FwcEluaXRpYXRlZEFjdGlvbikge1xuICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICBbYWN0aW9uXT1cInVybC5sb2dpbkFjdGlvblwiXG4gICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiJ2tjRm9ybUNsYXNzJ1wiXG4gICAgICAgICAgICAgICAgaWQ9XCJrYy13ZWJhdXRobi1zZXR0aW5ncy1mb3JtXCJcbiAgICAgICAgICAgICAgICBtZXRob2Q9XCJwb3N0XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICBba2NDbGFzc109XCJbJ2tjQnV0dG9uQ2xhc3MnLCAna2NCdXR0b25EZWZhdWx0Q2xhc3MnLCAna2NCdXR0b25CbG9ja0NsYXNzJywgJ2tjQnV0dG9uTGFyZ2VDbGFzcyddXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJjYW5jZWxXZWJBdXRobkFJQVwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJjYW5jZWwtYWlhXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdkb0NhbmNlbCcgfCBtc2dTdHIgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgfVxuICAgIDwvbmctY29udGFpbmVyPlxuPC9rYy1sb2dpbi10ZW1wbGF0ZT5cbiJdfQ==
@@ -61,21 +61,16 @@ export class WebauthnRegisterComponent extends ComponentReference {
61
61
  provide: ComponentReference,
62
62
  useExisting: forwardRef(() => WebauthnRegisterComponent)
63
63
  }
64
- ], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let isSetRetry = kcContext.isSetRetry;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n <span [kcClass]=\"'kcWebAuthnKeyIcon'\"></span>\n {{ 'webauthn-registration-title' | msgStr }}\n </ng-container>\n <ng-container content>\n <form\n id=\"register\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <div [kcClass]=\"'kcFormGroupClass'\">\n <input\n type=\"hidden\"\n id=\"clientDataJSON\"\n name=\"clientDataJSON\"\n />\n <input\n type=\"hidden\"\n id=\"attestationObject\"\n name=\"attestationObject\"\n />\n <input\n type=\"hidden\"\n id=\"publicKeyCredentialId\"\n name=\"publicKeyCredentialId\"\n />\n <input\n type=\"hidden\"\n id=\"authenticatorLabel\"\n name=\"authenticatorLabel\"\n />\n <input\n type=\"hidden\"\n id=\"transports\"\n name=\"transports\"\n />\n <input\n type=\"hidden\"\n id=\"error\"\n name=\"error\"\n />\n <kc-logout-other-sessions />\n </div>\n </form>\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [id]=\"authButtonId\"\n [value]=\"'doRegisterSecurityKey' | msgStr\"\n />\n @if (!isSetRetry && isAppInitiatedAction) {\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-webauthn-settings-form\"\n method=\"post\"\n >\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ 'doCancel' | msgStr }}\n </button>\n </form>\n }\n </ng-container>\n</kc-login-template>\n", dependencies: [{ kind: "component", type: TemplateComponent, selector: "kc-login-template", inputs: ["displayInfo", "displayMessage", "displayRequiredFields", "documentTitle", "bodyClassName"] }, { kind: "pipe", type: MsgStrPipe, name: "msgStr" }, { kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "component", type: LogoutOtherSessionsComponent, selector: "kc-logout-other-sessions" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
64
+ ], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let isSetRetry = kcContext.isSetRetry;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n <span [kcClass]=\"'kcWebAuthnKeyIcon'\"></span>\n {{ 'webauthn-registration-title' | msgStr }}\n </ng-container>\n <ng-container content>\n <form\n id=\"register\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <div [kcClass]=\"'kcFormGroupClass'\">\n <input\n type=\"hidden\"\n id=\"clientDataJSON\"\n name=\"clientDataJSON\"\n />\n <input\n type=\"hidden\"\n id=\"attestationObject\"\n name=\"attestationObject\"\n />\n <input\n type=\"hidden\"\n id=\"publicKeyCredentialId\"\n name=\"publicKeyCredentialId\"\n />\n <input\n type=\"hidden\"\n id=\"authenticatorLabel\"\n name=\"authenticatorLabel\"\n />\n <input\n type=\"hidden\"\n id=\"transports\"\n name=\"transports\"\n />\n <input\n type=\"hidden\"\n id=\"error\"\n name=\"error\"\n />\n <kc-logout-other-sessions />\n </div>\n </form>\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [id]=\"authButtonId\"\n [value]=\"'doRegisterSecurityKey' | msgStr\"\n />\n @if (!isSetRetry && isAppInitiatedAction) {\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-webauthn-settings-form\"\n method=\"post\"\n >\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ 'doCancel' | msgStr }}\n </button>\n </form>\n }\n </ng-container>\n</kc-login-template>\n", dependencies: [{ kind: "component", type: TemplateComponent, selector: "kc-login-template", inputs: ["displayInfo", "displayMessage", "displayRequiredFields", "documentTitle", "bodyClassName"] }, { kind: "pipe", type: MsgStrPipe, name: "msgStr" }, { kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "component", type: LogoutOtherSessionsComponent, selector: "kc-logout-other-sessions" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
65
65
  }
66
66
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WebauthnRegisterComponent, decorators: [{
67
67
  type: Component,
68
- args: [{ standalone: true, imports: [
69
- TemplateComponent,
70
- MsgStrPipe,
71
- KcClassDirective,
72
- LogoutOtherSessionsComponent
73
- ], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
68
+ args: [{ standalone: true, imports: [TemplateComponent, MsgStrPipe, KcClassDirective, LogoutOtherSessionsComponent], selector: 'kc-root', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
74
69
  MsgStrPipe,
75
70
  {
76
71
  provide: ComponentReference,
77
72
  useExisting: forwardRef(() => WebauthnRegisterComponent)
78
73
  }
79
- ], template: "@let url = kcContext.url;\n@let isSetRetry = kcContext.isSetRetry;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n <span [kcClass]=\"'kcWebAuthnKeyIcon'\"></span>\n {{ 'webauthn-registration-title' | msgStr }}\n </ng-container>\n <ng-container content>\n <form\n id=\"register\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <div [kcClass]=\"'kcFormGroupClass'\">\n <input\n type=\"hidden\"\n id=\"clientDataJSON\"\n name=\"clientDataJSON\"\n />\n <input\n type=\"hidden\"\n id=\"attestationObject\"\n name=\"attestationObject\"\n />\n <input\n type=\"hidden\"\n id=\"publicKeyCredentialId\"\n name=\"publicKeyCredentialId\"\n />\n <input\n type=\"hidden\"\n id=\"authenticatorLabel\"\n name=\"authenticatorLabel\"\n />\n <input\n type=\"hidden\"\n id=\"transports\"\n name=\"transports\"\n />\n <input\n type=\"hidden\"\n id=\"error\"\n name=\"error\"\n />\n <kc-logout-other-sessions />\n </div>\n </form>\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [id]=\"authButtonId\"\n [value]=\"'doRegisterSecurityKey' | msgStr\"\n />\n @if (!isSetRetry && isAppInitiatedAction) {\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-webauthn-settings-form\"\n method=\"post\"\n >\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ 'doCancel' | msgStr }}\n </button>\n </form>\n }\n </ng-container>\n</kc-login-template>\n" }]
74
+ ], template: "@let url = kcContext.url;\n@let isSetRetry = kcContext.isSetRetry;\n@let isAppInitiatedAction = kcContext.isAppInitiatedAction;\n\n<kc-login-template\n [displayInfo]=\"displayInfo\"\n [bodyClassName]=\"bodyClassName()\"\n [displayMessage]=\"displayMessage\"\n [displayRequiredFields]=\"displayRequiredFields()\"\n [documentTitle]=\"documentTitle()\"\n>\n <ng-container headerNode>\n <span [kcClass]=\"'kcWebAuthnKeyIcon'\"></span>\n {{ 'webauthn-registration-title' | msgStr }}\n </ng-container>\n <ng-container content>\n <form\n id=\"register\"\n [kcClass]=\"'kcFormClass'\"\n [action]=\"url.loginAction\"\n method=\"post\"\n >\n <div [kcClass]=\"'kcFormGroupClass'\">\n <input\n type=\"hidden\"\n id=\"clientDataJSON\"\n name=\"clientDataJSON\"\n />\n <input\n type=\"hidden\"\n id=\"attestationObject\"\n name=\"attestationObject\"\n />\n <input\n type=\"hidden\"\n id=\"publicKeyCredentialId\"\n name=\"publicKeyCredentialId\"\n />\n <input\n type=\"hidden\"\n id=\"authenticatorLabel\"\n name=\"authenticatorLabel\"\n />\n <input\n type=\"hidden\"\n id=\"transports\"\n name=\"transports\"\n />\n <input\n type=\"hidden\"\n id=\"error\"\n name=\"error\"\n />\n <kc-logout-other-sessions />\n </div>\n </form>\n <input\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n [id]=\"authButtonId\"\n [value]=\"'doRegisterSecurityKey' | msgStr\"\n />\n @if (!isSetRetry && isAppInitiatedAction) {\n <form\n [action]=\"url.loginAction\"\n [kcClass]=\"'kcFormClass'\"\n id=\"kc-webauthn-settings-form\"\n method=\"post\"\n >\n <button\n type=\"submit\"\n [kcClass]=\"['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonBlockClass', 'kcButtonLargeClass']\"\n id=\"cancelWebAuthnAIA\"\n name=\"cancel-aia\"\n value=\"true\"\n >\n {{ 'doCancel' | msgStr }}\n </button>\n </form>\n }\n </ng-container>\n</kc-login-template>\n" }]
80
75
  }], ctorParameters: () => [] });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViYXV0aG4tcmVnaXN0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvd2ViYXV0aG4tcmVnaXN0ZXIvd2ViYXV0aG4tcmVnaXN0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvd2ViYXV0aG4tcmVnaXN0ZXIvd2ViYXV0aG4tcmVnaXN0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ1YsZUFBZSxFQUNsQixNQUFNLHFDQUFxQyxDQUFDO0FBSTdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZGQUE2RixDQUFDO0FBQzNJLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFxQm5GLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxrQkFBa0I7SUFlN0Q7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQWZaLGNBQVMsR0FDTCxNQUFNLENBQTBELFVBQVUsQ0FBQyxDQUFDO1FBQ2hGLGlDQUE0QixHQUFHLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3BFLFdBQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkIsb0JBQWUsR0FBRyxNQUFNLENBQVUsZUFBZSxDQUFDLENBQUM7UUFDbkQsWUFBTyxHQUFHLE1BQU0sQ0FBb0MsT0FBTyxDQUFDLENBQUM7UUFDdEUsMEJBQXFCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUNoQyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixtQkFBYyxHQUFZLElBQUksQ0FBQztRQUUvQixpQkFBWSxHQUFHLDRCQUE0QixDQUFDO1FBSXhDLE1BQU0sRUFDRixHQUFHLEVBQ0gsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixJQUFJLEVBQ0osK0JBQStCLEVBQy9CLHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzNCLGFBQWEsRUFDYixvQkFBb0IsRUFDdkIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ25CLE1BQU0sT0FBTyxHQUFhO1lBQ3RCO2dCQUNJLElBQUksRUFBRSxRQUFRO2dCQUNkLEVBQUUsRUFBRSx3QkFBd0I7Z0JBQzVCLFdBQVcsRUFBRTtvREFDdUIsR0FBRyxDQUFDLGFBQWE7Z0VBQ0wsSUFBSSxDQUFDLFlBQVk7OztxQ0FHNUMsU0FBUztrQ0FDWixNQUFNO29DQUNKLFFBQVE7OENBQ0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQzt1Q0FDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7K0JBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDOzBEQUNPLElBQUksQ0FBQyxTQUFTLENBQUMsK0JBQStCLENBQUM7a0RBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUM7NkNBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUM7c0RBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsMkJBQTJCLENBQUM7d0NBQ3pELGFBQWE7K0NBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQztvQ0FDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDOzBDQUNuRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7aUNBQ3pGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsbUNBQW1DLENBQUMsQ0FBQzs7OztXQUloRzthQUNFO1NBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2RSxDQUFDOzhHQS9EUSx5QkFBeUI7a0dBQXpCLHlCQUF5QiwwZ0JBUnZCO1lBQ1AsVUFBVTtZQUNWO2dCQUNJLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7YUFDM0Q7U0FDSixpREN2Q0wsMHlFQWtGQSw0Q0R6RFEsaUJBQWlCLCtKQUNqQixVQUFVLCtDQUNWLGdCQUFnQiwrRkFDaEIsNEJBQTRCOzsyRkFhdkIseUJBQXlCO2tCQW5CckMsU0FBUztpQ0FDTSxJQUFJLFdBQ1A7d0JBQ0wsaUJBQWlCO3dCQUNqQixVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsNEJBQTRCO3FCQUMvQixZQUNTLFNBQVMsbUJBRUYsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUCxVQUFVO3dCQUNWOzRCQUNJLE9BQU8sRUFBRSxrQkFBa0I7NEJBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDBCQUEwQixDQUFDO3lCQUMzRDtxQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDTEFTU0VTLFxuICAgIEtDX0NPTlRFWFQsXG4gICAgVVNFX0RFRkFVTFRfQ1NTXG59IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xpYi9wdWJsaWMtYXBpJztcbmltcG9ydCB7IFNjcmlwdCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgQ2xhc3NLZXkgfSBmcm9tICdrZXljbG9ha2lmeS9sb2dpbi9saWIva2NDbHN4JztcbmltcG9ydCB7IEtjQ29udGV4dCB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL0tjQ29udGV4dCc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZlcmVuY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jbGFzc2VzL2NvbXBvbmVudC1yZWZlcmVuY2UuY2xhc3MnO1xuaW1wb3J0IHsgTG9nb3V0T3RoZXJTZXNzaW9uc0NvbXBvbmVudCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NvbXBvbmVudHMvbG9nb3V0LW90aGVyLXNlc3Npb25zL2xvZ291dC1vdGhlci1zZXNzaW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jb250YWluZXJzL3RlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLY0NsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBNc2dTdHJQaXBlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vcGlwZXMvbXNnLXN0ci5waXBlJztcbmltcG9ydCB7IExvZ2luUmVzb3VyY2VJbmplY3RvclNlcnZpY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgTXNnU3RyUGlwZSxcbiAgICAgICAgS2NDbGFzc0RpcmVjdGl2ZSxcbiAgICAgICAgTG9nb3V0T3RoZXJTZXNzaW9uc0NvbXBvbmVudFxuICAgIF0sXG4gICAgc2VsZWN0b3I6ICdrYy1yb290JyxcbiAgICB0ZW1wbGF0ZVVybDogJ3dlYmF1dGhuLXJlZ2lzdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgTXNnU3RyUGlwZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQ29tcG9uZW50UmVmZXJlbmNlLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2ViYXV0aG5SZWdpc3RlckNvbXBvbmVudClcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgV2ViYXV0aG5SZWdpc3RlckNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudFJlZmVyZW5jZSB7XG4gICAga2NDb250ZXh0ID1cbiAgICAgICAgaW5qZWN0PEV4dHJhY3Q8S2NDb250ZXh0LCB7IHBhZ2VJZDogJ3dlYmF1dGhuLXJlZ2lzdGVyLmZ0bCcgfT4+KEtDX0NPTlRFWFQpO1xuICAgIGxvZ2luUmVzb3VyY2VJbmplY3RvclNlcnZpY2UgPSBpbmplY3QoTG9naW5SZXNvdXJjZUluamVjdG9yU2VydmljZSk7XG4gICAgbXNnU3RyID0gaW5qZWN0KE1zZ1N0clBpcGUpO1xuICAgIG92ZXJyaWRlIGRvVXNlRGVmYXVsdENzcyA9IGluamVjdDxib29sZWFuPihVU0VfREVGQVVMVF9DU1MpO1xuICAgIG92ZXJyaWRlIGNsYXNzZXMgPSBpbmplY3Q8UGFydGlhbDxSZWNvcmQ8Q2xhc3NLZXksIHN0cmluZz4+PihDTEFTU0VTKTtcbiAgICBkaXNwbGF5UmVxdWlyZWRGaWVsZHMgPSBpbnB1dChmYWxzZSk7XG4gICAgZG9jdW1lbnRUaXRsZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBib2R5Q2xhc3NOYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIGRpc3BsYXlJbmZvOiBib29sZWFuID0gZmFsc2U7XG4gICAgZGlzcGxheU1lc3NhZ2U6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgYXV0aEJ1dHRvbklkID0gJ2F1dGhlbnRpY2F0ZVdlYkF1dGhuQnV0dG9uJztcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICBjaGFsbGVuZ2UsXG4gICAgICAgICAgICB1c2VyaWQsXG4gICAgICAgICAgICB1c2VybmFtZSxcbiAgICAgICAgICAgIHNpZ25hdHVyZUFsZ29yaXRobXMsXG4gICAgICAgICAgICBycEVudGl0eU5hbWUsXG4gICAgICAgICAgICBycElkLFxuICAgICAgICAgICAgYXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSxcbiAgICAgICAgICAgIGF1dGhlbnRpY2F0b3JBdHRhY2htZW50LFxuICAgICAgICAgICAgcmVxdWlyZVJlc2lkZW50S2V5LFxuICAgICAgICAgICAgdXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50LFxuICAgICAgICAgICAgY3JlYXRlVGltZW91dCxcbiAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsSWRzXG4gICAgICAgIH0gPSB0aGlzLmtjQ29udGV4dDtcbiAgICAgICAgY29uc3Qgc2NyaXB0czogU2NyaXB0W10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ21vZHVsZScsXG4gICAgICAgICAgICAgICAgaWQ6ICdXZWJBdXRoblJlZ2lzdGVyU2NyaXB0JyxcbiAgICAgICAgICAgICAgICB0ZXh0Q29udGVudDogYFxuICAgICAgICAgICAgICBpbXBvcnQgeyByZWdpc3RlckJ5V2ViQXV0aG4gfSBmcm9tIFwiJHt1cmwucmVzb3VyY2VzUGF0aH0vanMvd2ViYXV0aG5SZWdpc3Rlci5qc1wiO1xuICAgICAgICAgICAgICBjb25zdCByZWdpc3RlckJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCcke3RoaXMuYXV0aEJ1dHRvbklkfScpO1xuICAgICAgICAgICAgICByZWdpc3RlckJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2UgOiAnJHtjaGFsbGVuZ2V9JyxcbiAgICAgICAgICAgICAgICAgICAgICB1c2VyaWQgOiAnJHt1c2VyaWR9JyxcbiAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZSA6ICcke3VzZXJuYW1lfScsXG4gICAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlQWxnb3JpdGhtcyA6ICR7SlNPTi5zdHJpbmdpZnkoc2lnbmF0dXJlQWxnb3JpdGhtcyl9LFxuICAgICAgICAgICAgICAgICAgICAgIHJwRW50aXR5TmFtZSA6ICR7SlNPTi5zdHJpbmdpZnkocnBFbnRpdHlOYW1lKX0sXG4gICAgICAgICAgICAgICAgICAgICAgcnBJZCA6ICR7SlNPTi5zdHJpbmdpZnkocnBJZCl9LFxuICAgICAgICAgICAgICAgICAgICAgIGF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UgOiAke0pTT04uc3RyaW5naWZ5KGF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UpfSxcbiAgICAgICAgICAgICAgICAgICAgICBhdXRoZW50aWNhdG9yQXR0YWNobWVudCA6ICR7SlNPTi5zdHJpbmdpZnkoYXV0aGVudGljYXRvckF0dGFjaG1lbnQpfSxcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlUmVzaWRlbnRLZXkgOiAke0pTT04uc3RyaW5naWZ5KHJlcXVpcmVSZXNpZGVudEtleSl9LFxuICAgICAgICAgICAgICAgICAgICAgIHVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVudCA6ICR7SlNPTi5zdHJpbmdpZnkodXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50KX0sXG4gICAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGltZW91dCA6ICR7Y3JlYXRlVGltZW91dH0sXG4gICAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRpYWxJZHMgOiAke0pTT04uc3RyaW5naWZ5KGV4Y2x1ZGVDcmVkZW50aWFsSWRzKX0sXG4gICAgICAgICAgICAgICAgICAgICAgaW5pdExhYmVsIDogJHtKU09OLnN0cmluZ2lmeSh0aGlzLm1zZ1N0ci50cmFuc2Zvcm0oJ3dlYmF1dGhuLXJlZ2lzdHJhdGlvbi1pbml0LWxhYmVsJykpfSxcbiAgICAgICAgICAgICAgICAgICAgICBpbml0TGFiZWxQcm9tcHQgOiAke0pTT04uc3RyaW5naWZ5KHRoaXMubXNnU3RyLnRyYW5zZm9ybSgnd2ViYXV0aG4tcmVnaXN0cmF0aW9uLWluaXQtbGFiZWwtcHJvbXB0JykpfSxcbiAgICAgICAgICAgICAgICAgICAgICBlcnJtc2cgOiAke0pTT04uc3RyaW5naWZ5KHRoaXMubXNnU3RyLnRyYW5zZm9ybSgnd2ViYXV0aG4tdW5zdXBwb3J0ZWQtYnJvd3Nlci10ZXh0JykpfVxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyQnlXZWJBdXRobihpbnB1dCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIGBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5sb2dpblJlc291cmNlSW5qZWN0b3JTZXJ2aWNlLmluc2VydEFkZGl0aW9uYWxTY3JpcHRzKHNjcmlwdHMpO1xuICAgIH1cbn1cbiIsIkBsZXQgdXJsID0ga2NDb250ZXh0LnVybDtcbkBsZXQgaXNTZXRSZXRyeSA9IGtjQ29udGV4dC5pc1NldFJldHJ5O1xuQGxldCBpc0FwcEluaXRpYXRlZEFjdGlvbiA9IGtjQ29udGV4dC5pc0FwcEluaXRpYXRlZEFjdGlvbjtcblxuPGtjLWxvZ2luLXRlbXBsYXRlXG4gIFtkaXNwbGF5SW5mb109XCJkaXNwbGF5SW5mb1wiXG4gIFtib2R5Q2xhc3NOYW1lXT1cImJvZHlDbGFzc05hbWUoKVwiXG4gIFtkaXNwbGF5TWVzc2FnZV09XCJkaXNwbGF5TWVzc2FnZVwiXG4gIFtkaXNwbGF5UmVxdWlyZWRGaWVsZHNdPVwiZGlzcGxheVJlcXVpcmVkRmllbGRzKClcIlxuICBbZG9jdW1lbnRUaXRsZV09XCJkb2N1bWVudFRpdGxlKClcIlxuPlxuICA8bmctY29udGFpbmVyIGhlYWRlck5vZGU+XG4gICAgPHNwYW4gW2tjQ2xhc3NdPVwiJ2tjV2ViQXV0aG5LZXlJY29uJ1wiPjwvc3Bhbj5cbiAgICB7eyAnd2ViYXV0aG4tcmVnaXN0cmF0aW9uLXRpdGxlJyB8IG1zZ1N0ciB9fVxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciBjb250ZW50PlxuICAgIDxmb3JtXG4gICAgICBpZD1cInJlZ2lzdGVyXCJcbiAgICAgIFtrY0NsYXNzXT1cIidrY0Zvcm1DbGFzcydcIlxuICAgICAgW2FjdGlvbl09XCJ1cmwubG9naW5BY3Rpb25cIlxuICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgPlxuICAgICAgPGRpdiBba2NDbGFzc109XCIna2NGb3JtR3JvdXBDbGFzcydcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgaWQ9XCJjbGllbnREYXRhSlNPTlwiXG4gICAgICAgICAgbmFtZT1cImNsaWVudERhdGFKU09OXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgaWQ9XCJhdHRlc3RhdGlvbk9iamVjdFwiXG4gICAgICAgICAgbmFtZT1cImF0dGVzdGF0aW9uT2JqZWN0XCJcbiAgICAgICAgLz5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgaWQ9XCJwdWJsaWNLZXlDcmVkZW50aWFsSWRcIlxuICAgICAgICAgIG5hbWU9XCJwdWJsaWNLZXlDcmVkZW50aWFsSWRcIlxuICAgICAgICAvPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICBpZD1cImF1dGhlbnRpY2F0b3JMYWJlbFwiXG4gICAgICAgICAgbmFtZT1cImF1dGhlbnRpY2F0b3JMYWJlbFwiXG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICAgIGlkPVwidHJhbnNwb3J0c1wiXG4gICAgICAgICAgbmFtZT1cInRyYW5zcG9ydHNcIlxuICAgICAgICAvPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICBpZD1cImVycm9yXCJcbiAgICAgICAgICBuYW1lPVwiZXJyb3JcIlxuICAgICAgICAvPlxuICAgICAgICA8a2MtbG9nb3V0LW90aGVyLXNlc3Npb25zIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIFtrY0NsYXNzXT1cIlsna2NCdXR0b25DbGFzcycsICdrY0J1dHRvblByaW1hcnlDbGFzcycsICdrY0J1dHRvbkJsb2NrQ2xhc3MnLCAna2NCdXR0b25MYXJnZUNsYXNzJ11cIlxuICAgICAgW2lkXT1cImF1dGhCdXR0b25JZFwiXG4gICAgICBbdmFsdWVdPVwiJ2RvUmVnaXN0ZXJTZWN1cml0eUtleScgfCBtc2dTdHJcIlxuICAgIC8+XG4gICAgQGlmICghaXNTZXRSZXRyeSAmJiBpc0FwcEluaXRpYXRlZEFjdGlvbikge1xuICAgICAgPGZvcm1cbiAgICAgICAgW2FjdGlvbl09XCJ1cmwubG9naW5BY3Rpb25cIlxuICAgICAgICBba2NDbGFzc109XCIna2NGb3JtQ2xhc3MnXCJcbiAgICAgICAgaWQ9XCJrYy13ZWJhdXRobi1zZXR0aW5ncy1mb3JtXCJcbiAgICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICBba2NDbGFzc109XCJbJ2tjQnV0dG9uQ2xhc3MnLCAna2NCdXR0b25EZWZhdWx0Q2xhc3MnLCAna2NCdXR0b25CbG9ja0NsYXNzJywgJ2tjQnV0dG9uTGFyZ2VDbGFzcyddXCJcbiAgICAgICAgICBpZD1cImNhbmNlbFdlYkF1dGhuQUlBXCJcbiAgICAgICAgICBuYW1lPVwiY2FuY2VsLWFpYVwiXG4gICAgICAgICAgdmFsdWU9XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdkb0NhbmNlbCcgfCBtc2dTdHIgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Zvcm0+XG4gICAgfVxuICA8L25nLWNvbnRhaW5lcj5cbjwva2MtbG9naW4tdGVtcGxhdGU+XG4iXX0=
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViYXV0aG4tcmVnaXN0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvd2ViYXV0aG4tcmVnaXN0ZXIvd2ViYXV0aG4tcmVnaXN0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2V5Y2xvYWtpZnktYW5ndWxhci9zcmMvbG9naW4vcGFnZXMvd2ViYXV0aG4tcmVnaXN0ZXIvd2ViYXV0aG4tcmVnaXN0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUkzRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2RkFBNkYsQ0FBQztBQUMzSSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUM3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDM0UsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBZ0JuRixNQUFNLE9BQU8seUJBQTBCLFNBQVEsa0JBQWtCO0lBYzdEO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFkWixjQUFTLEdBQUcsTUFBTSxDQUEwRCxVQUFVLENBQUMsQ0FBQztRQUN4RixpQ0FBNEIsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUNw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IGZvcndhcmRSZWYsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENMQVNTRVMsIEtDX0NPTlRFWFQsIFVTRV9ERUZBVUxUX0NTUyB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xpYi9wdWJsaWMtYXBpJztcbmltcG9ydCB7IFNjcmlwdCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgQ2xhc3NLZXkgfSBmcm9tICdrZXljbG9ha2lmeS9sb2dpbi9saWIva2NDbHN4JztcbmltcG9ydCB7IEtjQ29udGV4dCB9IGZyb20gJ2tleWNsb2FraWZ5L2xvZ2luL0tjQ29udGV4dCc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWZlcmVuY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jbGFzc2VzL2NvbXBvbmVudC1yZWZlcmVuY2UuY2xhc3MnO1xuaW1wb3J0IHsgTG9nb3V0T3RoZXJTZXNzaW9uc0NvbXBvbmVudCB9IGZyb20gJ0BrZXljbG9ha2lmeS9hbmd1bGFyL2xvZ2luL2NvbXBvbmVudHMvbG9nb3V0LW90aGVyLXNlc3Npb25zL2xvZ291dC1vdGhlci1zZXNzaW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9jb250YWluZXJzL3RlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLY0NsYXNzRGlyZWN0aXZlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBNc2dTdHJQaXBlIH0gZnJvbSAnQGtleWNsb2FraWZ5L2FuZ3VsYXIvbG9naW4vcGlwZXMvbXNnLXN0ci5waXBlJztcbmltcG9ydCB7IExvZ2luUmVzb3VyY2VJbmplY3RvclNlcnZpY2UgfSBmcm9tICdAa2V5Y2xvYWtpZnkvYW5ndWxhci9sb2dpbi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1RlbXBsYXRlQ29tcG9uZW50LCBNc2dTdHJQaXBlLCBLY0NsYXNzRGlyZWN0aXZlLCBMb2dvdXRPdGhlclNlc3Npb25zQ29tcG9uZW50XSxcbiAgICBzZWxlY3RvcjogJ2tjLXJvb3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnd2ViYXV0aG4tcmVnaXN0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBNc2dTdHJQaXBlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBDb21wb25lbnRSZWZlcmVuY2UsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXZWJhdXRoblJlZ2lzdGVyQ29tcG9uZW50KVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBXZWJhdXRoblJlZ2lzdGVyQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50UmVmZXJlbmNlIHtcbiAgICBrY0NvbnRleHQgPSBpbmplY3Q8RXh0cmFjdDxLY0NvbnRleHQsIHsgcGFnZUlkOiAnd2ViYXV0aG4tcmVnaXN0ZXIuZnRsJyB9Pj4oS0NfQ09OVEVYVCk7XG4gICAgbG9naW5SZXNvdXJjZUluamVjdG9yU2VydmljZSA9IGluamVjdChMb2dpblJlc291cmNlSW5qZWN0b3JTZXJ2aWNlKTtcbiAgICBtc2dTdHIgPSBpbmplY3QoTXNnU3RyUGlwZSk7XG4gICAgb3ZlcnJpZGUgZG9Vc2VEZWZhdWx0Q3NzID0gaW5qZWN0PGJvb2xlYW4+KFVTRV9ERUZBVUxUX0NTUyk7XG4gICAgb3ZlcnJpZGUgY2xhc3NlcyA9IGluamVjdDxQYXJ0aWFsPFJlY29yZDxDbGFzc0tleSwgc3RyaW5nPj4+KENMQVNTRVMpO1xuICAgIGRpc3BsYXlSZXF1aXJlZEZpZWxkcyA9IGlucHV0KGZhbHNlKTtcbiAgICBkb2N1bWVudFRpdGxlID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIGJvZHlDbGFzc05hbWUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgZGlzcGxheUluZm86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBkaXNwbGF5TWVzc2FnZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBhdXRoQnV0dG9uSWQgPSAnYXV0aGVudGljYXRlV2ViQXV0aG5CdXR0b24nO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgIGNoYWxsZW5nZSxcbiAgICAgICAgICAgIHVzZXJpZCxcbiAgICAgICAgICAgIHVzZXJuYW1lLFxuICAgICAgICAgICAgc2lnbmF0dXJlQWxnb3JpdGhtcyxcbiAgICAgICAgICAgIHJwRW50aXR5TmFtZSxcbiAgICAgICAgICAgIHJwSWQsXG4gICAgICAgICAgICBhdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlLFxuICAgICAgICAgICAgYXV0aGVudGljYXRvckF0dGFjaG1lbnQsXG4gICAgICAgICAgICByZXF1aXJlUmVzaWRlbnRLZXksXG4gICAgICAgICAgICB1c2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQsXG4gICAgICAgICAgICBjcmVhdGVUaW1lb3V0LFxuICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRpYWxJZHNcbiAgICAgICAgfSA9IHRoaXMua2NDb250ZXh0O1xuICAgICAgICBjb25zdCBzY3JpcHRzOiBTY3JpcHRbXSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnbW9kdWxlJyxcbiAgICAgICAgICAgICAgICBpZDogJ1dlYkF1dGhuUmVnaXN0ZXJTY3JpcHQnLFxuICAgICAgICAgICAgICAgIHRleHRDb250ZW50OiBgXG4gICAgICAgICAgICAgIGltcG9ydCB7IHJlZ2lzdGVyQnlXZWJBdXRobiB9IGZyb20gXCIke3VybC5yZXNvdXJjZXNQYXRofS9qcy93ZWJhdXRoblJlZ2lzdGVyLmpzXCI7XG4gICAgICAgICAgICAgIGNvbnN0IHJlZ2lzdGVyQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyR7dGhpcy5hdXRoQnV0dG9uSWR9Jyk7XG4gICAgICAgICAgICAgIHJlZ2lzdGVyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZSA6ICcke2NoYWxsZW5nZX0nLFxuICAgICAgICAgICAgICAgICAgICAgIHVzZXJpZCA6ICcke3VzZXJpZH0nLFxuICAgICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lIDogJyR7dXNlcm5hbWV9JyxcbiAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmVBbGdvcml0aG1zIDogJHtKU09OLnN0cmluZ2lmeShzaWduYXR1cmVBbGdvcml0aG1zKX0sXG4gICAgICAgICAgICAgICAgICAgICAgcnBFbnRpdHlOYW1lIDogJHtKU09OLnN0cmluZ2lmeShycEVudGl0eU5hbWUpfSxcbiAgICAgICAgICAgICAgICAgICAgICBycElkIDogJHtKU09OLnN0cmluZ2lmeShycElkKX0sXG4gICAgICAgICAgICAgICAgICAgICAgYXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSA6ICR7SlNPTi5zdHJpbmdpZnkoYXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZSl9LFxuICAgICAgICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0b3JBdHRhY2htZW50IDogJHtKU09OLnN0cmluZ2lmeShhdXRoZW50aWNhdG9yQXR0YWNobWVudCl9LFxuICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVSZXNpZGVudEtleSA6ICR7SlNPTi5zdHJpbmdpZnkocmVxdWlyZVJlc2lkZW50S2V5KX0sXG4gICAgICAgICAgICAgICAgICAgICAgdXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50IDogJHtKU09OLnN0cmluZ2lmeSh1c2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQpfSxcbiAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVUaW1lb3V0IDogJHtjcmVhdGVUaW1lb3V0fSxcbiAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbElkcyA6ICR7SlNPTi5zdHJpbmdpZnkoZXhjbHVkZUNyZWRlbnRpYWxJZHMpfSxcbiAgICAgICAgICAgICAgICAgICAgICBpbml0TGFiZWwgOiAke0pTT04uc3RyaW5naWZ5KHRoaXMubXNnU3RyLnRyYW5zZm9ybSgnd2ViYXV0aG4tcmVnaXN0cmF0aW9uLWluaXQtbGFiZWwnKSl9LFxuICAgICAgICAgICAgICAgICAgICAgIGluaXRMYWJlbFByb21wdCA6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5tc2dTdHIudHJhbnNmb3JtKCd3ZWJhdXRobi1yZWdpc3RyYXRpb24taW5pdC1sYWJlbC1wcm9tcHQnKSl9LFxuICAgICAgICAgICAgICAgICAgICAgIGVycm1zZyA6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5tc2dTdHIudHJhbnNmb3JtKCd3ZWJhdXRobi11bnN1cHBvcnRlZC1icm93c2VyLXRleHQnKSl9XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJCeVdlYkF1dGhuKGlucHV0KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgYFxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmxvZ2luUmVzb3VyY2VJbmplY3RvclNlcnZpY2UuaW5zZXJ0QWRkaXRpb25hbFNjcmlwdHMoc2NyaXB0cyk7XG4gICAgfVxufVxuIiwiQGxldCB1cmwgPSBrY0NvbnRleHQudXJsO1xuQGxldCBpc1NldFJldHJ5ID0ga2NDb250ZXh0LmlzU2V0UmV0cnk7XG5AbGV0IGlzQXBwSW5pdGlhdGVkQWN0aW9uID0ga2NDb250ZXh0LmlzQXBwSW5pdGlhdGVkQWN0aW9uO1xuXG48a2MtbG9naW4tdGVtcGxhdGVcbiAgICBbZGlzcGxheUluZm9dPVwiZGlzcGxheUluZm9cIlxuICAgIFtib2R5Q2xhc3NOYW1lXT1cImJvZHlDbGFzc05hbWUoKVwiXG4gICAgW2Rpc3BsYXlNZXNzYWdlXT1cImRpc3BsYXlNZXNzYWdlXCJcbiAgICBbZGlzcGxheVJlcXVpcmVkRmllbGRzXT1cImRpc3BsYXlSZXF1aXJlZEZpZWxkcygpXCJcbiAgICBbZG9jdW1lbnRUaXRsZV09XCJkb2N1bWVudFRpdGxlKClcIlxuPlxuICAgIDxuZy1jb250YWluZXIgaGVhZGVyTm9kZT5cbiAgICAgICAgPHNwYW4gW2tjQ2xhc3NdPVwiJ2tjV2ViQXV0aG5LZXlJY29uJ1wiPjwvc3Bhbj5cbiAgICAgICAge3sgJ3dlYmF1dGhuLXJlZ2lzdHJhdGlvbi10aXRsZScgfCBtc2dTdHIgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyIGNvbnRlbnQ+XG4gICAgICAgIDxmb3JtXG4gICAgICAgICAgICBpZD1cInJlZ2lzdGVyXCJcbiAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0Zvcm1DbGFzcydcIlxuICAgICAgICAgICAgW2FjdGlvbl09XCJ1cmwubG9naW5BY3Rpb25cIlxuICAgICAgICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgW2tjQ2xhc3NdPVwiJ2tjRm9ybUdyb3VwQ2xhc3MnXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJoaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImNsaWVudERhdGFKU09OXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImNsaWVudERhdGFKU09OXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJhdHRlc3RhdGlvbk9iamVjdFwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJhdHRlc3RhdGlvbk9iamVjdFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwicHVibGljS2V5Q3JlZGVudGlhbElkXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cInB1YmxpY0tleUNyZWRlbnRpYWxJZFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiYXV0aGVudGljYXRvckxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImF1dGhlbnRpY2F0b3JMYWJlbFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwidHJhbnNwb3J0c1wiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ0cmFuc3BvcnRzXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvclwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJlcnJvclwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8a2MtbG9nb3V0LW90aGVyLXNlc3Npb25zIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb3JtPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uUHJpbWFyeUNsYXNzJywgJ2tjQnV0dG9uQmxvY2tDbGFzcycsICdrY0J1dHRvbkxhcmdlQ2xhc3MnXVwiXG4gICAgICAgICAgICBbaWRdPVwiYXV0aEJ1dHRvbklkXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCInZG9SZWdpc3RlclNlY3VyaXR5S2V5JyB8IG1zZ1N0clwiXG4gICAgICAgIC8+XG4gICAgICAgIEBpZiAoIWlzU2V0UmV0cnkgJiYgaXNBcHBJbml0aWF0ZWRBY3Rpb24pIHtcbiAgICAgICAgICAgIDxmb3JtXG4gICAgICAgICAgICAgICAgW2FjdGlvbl09XCJ1cmwubG9naW5BY3Rpb25cIlxuICAgICAgICAgICAgICAgIFtrY0NsYXNzXT1cIidrY0Zvcm1DbGFzcydcIlxuICAgICAgICAgICAgICAgIGlkPVwia2Mtd2ViYXV0aG4tc2V0dGluZ3MtZm9ybVwiXG4gICAgICAgICAgICAgICAgbWV0aG9kPVwicG9zdFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgW2tjQ2xhc3NdPVwiWydrY0J1dHRvbkNsYXNzJywgJ2tjQnV0dG9uRGVmYXVsdENsYXNzJywgJ2tjQnV0dG9uQmxvY2tDbGFzcycsICdrY0J1dHRvbkxhcmdlQ2xhc3MnXVwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiY2FuY2VsV2ViQXV0aG5BSUFcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiY2FuY2VsLWFpYVwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyAnZG9DYW5jZWwnIHwgbXNnU3RyIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIH1cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwva2MtbG9naW4tdGVtcGxhdGU+XG4iXX0=
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@keycloakify/angular",
3
- "version": "0.0.1-rc.2",
3
+ "version": "0.0.1-rc.3",
4
4
  "description": "Angular components for Keycloakify",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git://github.com/keycloakify/keycloakify-angular.git"
8
8
  },
9
9
  "lint-staged": {
10
- "*.{ts,tsx,json,md}": [
10
+ "*.{ts,html,json,md}": [
11
11
  "prettier --write"
12
12
  ]
13
13
  },
@@ -304,16 +304,16 @@
304
304
  ],
305
305
  "homepage": "https://www.keycloakify.dev",
306
306
  "dependencies": {
307
- "tsafe": "^1.6.6"
307
+ "tsafe": "^1.7.4"
308
308
  },
309
309
  "peerDependencies": {
310
- "keycloakify": "^11.2.2",
310
+ "keycloakify": "^11.2.4",
311
311
  "@angular/core": "^18.0.0",
312
312
  "@angular/common": "^18.0.0",
313
313
  "@angular/platform-browser": "^18.0.0"
314
314
  },
315
315
  "devDependencies": {
316
- "keycloakify": "^11.2.2",
316
+ "keycloakify": "^11.2.4",
317
317
  "prettier": "^3.2.5",
318
318
  "typescript": "~5.4.0",
319
319
  "husky": "^4.3.8",
@@ -1,24 +1,24 @@
1
1
  @let idPostfix = attribute()?.name ?? '' + '-' + (fieldIndex() ?? 0 + 1);
2
2
  @if (hasRemove()) {
3
- <button
4
- [id]="'kc-remove-' + idPostfix"
5
- type="button"
6
- class="pf-c-button pf-m-inline pf-m-link"
7
- (click)="onRemove()"
8
- >
9
- {{ 'remove' | msgStr }}
10
- </button>
11
- @if (hasAdd()) {
12
- &nbsp;|&nbsp;
13
- }
3
+ <button
4
+ [id]="'kc-remove-' + idPostfix"
5
+ type="button"
6
+ class="pf-c-button pf-m-inline pf-m-link"
7
+ (click)="onRemove()"
8
+ >
9
+ {{ 'remove' | msgStr }}
10
+ </button>
11
+ @if (hasAdd()) {
12
+ &nbsp;|&nbsp;
13
+ }
14
14
  }
15
15
  @if (hasAdd()) {
16
- <button
17
- [id]="'kc-add-' + idPostfix"
18
- type="button"
19
- class="pf-c-button pf-m-inline pf-m-link"
20
- (click)="onAdd()"
21
- >
22
- {{ 'addValue' | msgStr }}
23
- </button>
16
+ <button
17
+ [id]="'kc-add-' + idPostfix"
18
+ type="button"
19
+ class="pf-c-button pf-m-inline pf-m-link"
20
+ (click)="onAdd()"
21
+ >
22
+ {{ 'addValue' | msgStr }}
23
+ </button>
24
24
  }
@@ -1,10 +1,4 @@
1
- import {
2
- ChangeDetectionStrategy,
3
- Component,
4
- computed,
5
- input,
6
- output
7
- } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';
8
2
  import { Attribute } from 'keycloakify/login/KcContext';
9
3
  import { MsgStrPipe } from '@keycloakify/angular/login/pipes/msg-str.pipe';
10
4
  import { FormAction } from '@keycloakify/angular/login/services/user-profile-form.service';
@@ -72,11 +66,7 @@ export class AddRemoveButtonsMultiValuedAttributeComponent {
72
66
  });
73
67
  }
74
68
 
75
- private getButtonToDisplayForMultivaluedAttributeField(params: {
76
- attribute: Attribute;
77
- values: string[];
78
- fieldIndex: number;
79
- }) {
69
+ private getButtonToDisplayForMultivaluedAttributeField(params: { attribute: Attribute; values: string[]; fieldIndex: number }) {
80
70
  const { attribute, values, fieldIndex } = params;
81
71
 
82
72
  const hasRemove = (() => {
@@ -1,15 +1,15 @@
1
1
  @let index = fieldIndex();
2
2
  <span
3
- [id]="'input-error-' + attribute.name + (index === undefined ? '' : '-' + index)"
4
- [kcClass]="'kcInputErrorMessageClass'"
5
- aria-live="polite"
3
+ [id]="'input-error-' + attribute.name + (index === undefined ? '' : '-' + index)"
4
+ [kcClass]="'kcInputErrorMessageClass'"
5
+ aria-live="polite"
6
6
  >
7
- @for (error of displayableErrors(); track error; let i = $index) {
8
- @if (error.fieldIndex === index) {
9
- <span [innerHTML]="error.errorMessage"></span>
10
- @if (displayableErrors()?.length ?? 0 - 1 !== i) {
11
- <br />
12
- }
7
+ @for (error of displayableErrors(); track error; let i = $index) {
8
+ @if (error.fieldIndex === index) {
9
+ <span [innerHTML]="error.errorMessage"></span>
10
+ @if (displayableErrors()?.length ?? 0 - 1 !== i) {
11
+ <br />
12
+ }
13
+ }
13
14
  }
14
- }
15
15
  </span>
@@ -1,10 +1,4 @@
1
- import {
2
- ChangeDetectionStrategy,
3
- Component,
4
- forwardRef,
5
- inject,
6
- input
7
- } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, forwardRef, inject, input } from '@angular/core';
8
2
  import { CLASSES, USE_DEFAULT_CSS } from '@keycloakify/angular/lib/public-api';
9
3
  import { Attribute } from 'keycloakify/login/KcContext';
10
4
  import { ClassKey } from 'keycloakify/login/lib/kcClsx';
@@ -1,30 +1,30 @@
1
1
  @let attr = attribute();
2
2
  @let groupName = groupNameRef();
3
3
  @if (attr && groupName !== '') {
4
- <div
5
- [kcClass]="'kcFormGroupClass'"
6
- [kcAttributes]="attr.group?.html5DataAnnotations"
7
- >
8
- @let groupDisplayHeader = attr.group?.displayHeader ?? '';
9
- @let groupHeaderText = groupDisplayHeader !== '' ? groupDisplayHeader : (attr.group?.name ?? '');
10
- <div [kcClass]="'kcContentWrapperClass'">
11
- <label
12
- [id]="'header-' + attr.group?.name"
13
- [kcClass]="'kcFormGroupHeader'"
14
- >
15
- {{ groupHeaderText | advancedMsgStr }}
16
- </label>
4
+ <div
5
+ [kcClass]="'kcFormGroupClass'"
6
+ [kcAttributes]="attr.group?.html5DataAnnotations"
7
+ >
8
+ @let groupDisplayHeader = attr.group?.displayHeader ?? '';
9
+ @let groupHeaderText = groupDisplayHeader !== '' ? groupDisplayHeader : (attr.group?.name ?? '');
10
+ <div [kcClass]="'kcContentWrapperClass'">
11
+ <label
12
+ [id]="'header-' + attr.group?.name"
13
+ [kcClass]="'kcFormGroupHeader'"
14
+ >
15
+ {{ groupHeaderText | advancedMsgStr }}
16
+ </label>
17
+ </div>
18
+ @let groupDisplayDescription = attr.group?.displayDescription ?? '';
19
+ @if (groupDisplayDescription !== '') {
20
+ <div [kcClass]="'kcLabelWrapperClass'">
21
+ <label
22
+ [id]="'description-' + attr.group?.name"
23
+ [kcClass]="'kcLabelClass'"
24
+ >
25
+ {{ groupDisplayDescription | advancedMsgStr }}
26
+ </label>
27
+ </div>
28
+ }
17
29
  </div>
18
- @let groupDisplayDescription = attr.group?.displayDescription ?? '';
19
- @if (groupDisplayDescription !== '') {
20
- <div [kcClass]="'kcLabelWrapperClass'">
21
- <label
22
- [id]="'description-' + attr.group?.name"
23
- [kcClass]="'kcLabelClass'"
24
- >
25
- {{ groupDisplayDescription | advancedMsgStr }}
26
- </label>
27
- </div>
28
- }
29
- </div>
30
30
  }
@@ -1,11 +1,4 @@
1
- import {
2
- ChangeDetectionStrategy,
3
- Component,
4
- computed,
5
- forwardRef,
6
- inject,
7
- input
8
- } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, forwardRef, inject, input } from '@angular/core';
9
2
  import { CLASSES, USE_DEFAULT_CSS } from '@keycloakify/angular/lib/public-api';
10
3
  import { Attribute } from 'keycloakify/login/KcContext';
11
4
  import { ClassKey } from 'keycloakify/login/lib/kcClsx';
@@ -1,63 +1,63 @@
1
1
  @let attr = attribute();
2
2
  @if (attr) {
3
- @let type = attr.annotations.inputType;
4
- @switch (type) {
5
- @case ('textarea') {
6
- <kc-textarea-tag
7
- [attribute]="attribute()"
8
- [value]="$any(valueOrValues())"
9
- [displayableErrors]="displayableErrors()"
10
- (dispatchFormAction)="dispatchFormAction.emit($event)"
11
- ></kc-textarea-tag>
12
- }
13
- @case (type === 'select' || type === 'multiselect' ? type : '') {
14
- <kc-select-tag
15
- [attribute]="attribute()"
16
- [valueOrValues]="valueOrValues()"
17
- [displayableErrors]="displayableErrors()"
18
- (dispatchFormAction)="dispatchFormAction.emit($event)"
19
- ></kc-select-tag>
20
- }
21
- @case (type === 'select-radiobuttons' || type === 'multiselect-checkboxes' ? type : '') {
22
- <kc-input-tag-selects
23
- [attribute]="attribute()"
24
- [valueOrValues]="valueOrValues()"
25
- [displayableErrors]="displayableErrors()"
26
- (dispatchFormAction)="dispatchFormAction.emit($event)"
27
- ></kc-input-tag-selects>
28
- }
29
- @default {
30
- @let values = valueOrValues();
31
- <!-- if valueOrValues is string skip -->
32
- @if (values && (values | toArray: true).length) {
33
- @for (value of values; track value; let i = $index) {
34
- <kc-input-tag
35
- [attribute]="attribute()"
36
- [valueOrValues]="valueOrValues()"
37
- [fieldIndex]="i"
38
- [displayableErrors]="displayableErrors()"
39
- (dispatchFormAction)="dispatchFormAction.emit($event)"
40
- ></kc-input-tag>
3
+ @let type = attr.annotations.inputType;
4
+ @switch (type) {
5
+ @case ('textarea') {
6
+ <kc-textarea-tag
7
+ [attribute]="attribute()"
8
+ [value]="$any(valueOrValues())"
9
+ [displayableErrors]="displayableErrors()"
10
+ (dispatchFormAction)="dispatchFormAction.emit($event)"
11
+ ></kc-textarea-tag>
12
+ }
13
+ @case (type === 'select' || type === 'multiselect' ? type : '') {
14
+ <kc-select-tag
15
+ [attribute]="attribute()"
16
+ [valueOrValues]="valueOrValues()"
17
+ [displayableErrors]="displayableErrors()"
18
+ (dispatchFormAction)="dispatchFormAction.emit($event)"
19
+ ></kc-select-tag>
20
+ }
21
+ @case (type === 'select-radiobuttons' || type === 'multiselect-checkboxes' ? type : '') {
22
+ <kc-input-tag-selects
23
+ [attribute]="attribute()"
24
+ [valueOrValues]="valueOrValues()"
25
+ [displayableErrors]="displayableErrors()"
26
+ (dispatchFormAction)="dispatchFormAction.emit($event)"
27
+ ></kc-input-tag-selects>
41
28
  }
42
- } @else {
43
- @if (attr.name === 'password' || attr.name === 'password-confirm') {
44
- <kc-password-wrapper [passwordInputId]="attr.name">
45
- <kc-input-tag
46
- [attribute]="attributePassword()"
47
- [valueOrValues]="valueOrValues()"
48
- [displayableErrors]="displayableErrors()"
49
- (dispatchFormAction)="dispatchFormAction.emit($event)"
50
- ></kc-input-tag>
51
- </kc-password-wrapper>
52
- } @else {
53
- <kc-input-tag
54
- [attribute]="attribute()"
55
- [valueOrValues]="valueOrValues()"
56
- [displayableErrors]="displayableErrors()"
57
- (dispatchFormAction)="dispatchFormAction.emit($event)"
58
- ></kc-input-tag>
29
+ @default {
30
+ @let values = valueOrValues();
31
+ <!-- if valueOrValues is string skip -->
32
+ @if (values && (values | toArray: true).length) {
33
+ @for (value of values; track value; let i = $index) {
34
+ <kc-input-tag
35
+ [attribute]="attribute()"
36
+ [valueOrValues]="valueOrValues()"
37
+ [fieldIndex]="i"
38
+ [displayableErrors]="displayableErrors()"
39
+ (dispatchFormAction)="dispatchFormAction.emit($event)"
40
+ ></kc-input-tag>
41
+ }
42
+ } @else {
43
+ @if (attr.name === 'password' || attr.name === 'password-confirm') {
44
+ <kc-password-wrapper [passwordInputId]="attr.name">
45
+ <kc-input-tag
46
+ [attribute]="attributePassword()"
47
+ [valueOrValues]="valueOrValues()"
48
+ [displayableErrors]="displayableErrors()"
49
+ (dispatchFormAction)="dispatchFormAction.emit($event)"
50
+ ></kc-input-tag>
51
+ </kc-password-wrapper>
52
+ } @else {
53
+ <kc-input-tag
54
+ [attribute]="attribute()"
55
+ [valueOrValues]="valueOrValues()"
56
+ [displayableErrors]="displayableErrors()"
57
+ (dispatchFormAction)="dispatchFormAction.emit($event)"
58
+ ></kc-input-tag>
59
+ }
60
+ }
59
61
  }
60
- }
61
62
  }
62
- }
63
63
  }
@@ -1,21 +1,10 @@
1
- import {
2
- ChangeDetectionStrategy,
3
- Component,
4
- computed,
5
- forwardRef,
6
- inject,
7
- input,
8
- output
9
- } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, forwardRef, inject, input, output } from '@angular/core';
10
2
  import { CLASSES, USE_DEFAULT_CSS } from '@keycloakify/angular/lib/public-api';
11
3
  import { Attribute } from 'keycloakify/login/KcContext';
12
4
  import { ClassKey } from 'keycloakify/login/lib/kcClsx';
13
5
  import { ComponentReference } from '@keycloakify/angular/login/classes/component-reference.class';
14
6
  import { ToArrayPipe } from '@keycloakify/angular/login/pipes/to-array.pipe';
15
- import {
16
- FormAction,
17
- FormFieldError
18
- } from '@keycloakify/angular/login/services/user-profile-form.service';
7
+ import { FormAction, FormFieldError } from '@keycloakify/angular/login/services/user-profile-form.service';
19
8
  import { InputTagSelectsComponent } from '@keycloakify/angular/login/components/input-tag-selects/input-tag-selects.component';
20
9
  import { InputTagComponent } from '@keycloakify/angular/login/components/input-tag/input-tag.component';
21
10
  import { PasswordWrapperComponent } from '@keycloakify/angular/login/components/password-wrapper/password-wrapper.component';
@@ -31,14 +20,7 @@ import { TextareaTagComponent } from '@keycloakify/angular/login/components/text
31
20
  }
32
21
  `
33
22
  ],
34
- imports: [
35
- ToArrayPipe,
36
- TextareaTagComponent,
37
- SelectTagComponent,
38
- InputTagSelectsComponent,
39
- InputTagComponent,
40
- PasswordWrapperComponent
41
- ],
23
+ imports: [ToArrayPipe, TextareaTagComponent, SelectTagComponent, InputTagSelectsComponent, InputTagComponent, PasswordWrapperComponent],
42
24
  selector: 'kc-input-field-by-type',
43
25
  templateUrl: 'input-field-by-type.component.html',
44
26
  changeDetection: ChangeDetectionStrategy.OnPush,