@idea-ionic/auth 5.29.4 → 6.0.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 (289) hide show
  1. package/environment.d.ts +3 -0
  2. package/esm2020/environment.mjs +25 -0
  3. package/esm2020/idea-ionic-auth.mjs +5 -0
  4. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  5. package/esm2020/src/auth.module.mjs +70 -0
  6. package/esm2020/src/auth.service.mjs +317 -0
  7. package/esm2020/src/confirmPassword.page.mjs +59 -0
  8. package/esm2020/src/forgotPassword.page.mjs +48 -0
  9. package/esm2020/src/newPassword.page.mjs +52 -0
  10. package/esm2020/src/resendLink.page.mjs +52 -0
  11. package/esm2020/src/signIn.page.mjs +91 -0
  12. package/esm2020/src/signUp.page.mjs +79 -0
  13. package/fesm2015/idea-ionic-auth.mjs +741 -0
  14. package/fesm2015/idea-ionic-auth.mjs.map +1 -0
  15. package/fesm2020/idea-ionic-auth.mjs +726 -0
  16. package/fesm2020/idea-ionic-auth.mjs.map +1 -0
  17. package/idea-ionic-auth.d.ts +4 -6
  18. package/package.json +30 -18
  19. package/src/auth.module.d.ts +15 -0
  20. package/src/auth.service.d.ts +67 -3
  21. package/src/confirmPassword.page.d.ts +24 -0
  22. package/src/forgotPassword.page.d.ts +15 -0
  23. package/src/newPassword.page.d.ts +23 -1
  24. package/src/resendLink.page.d.ts +15 -0
  25. package/src/signIn.page.d.ts +45 -0
  26. package/src/signUp.page.d.ts +26 -1
  27. package/bundles/idea-ionic-auth.umd.js +0 -1009
  28. package/bundles/idea-ionic-auth.umd.js.map +0 -1
  29. package/bundles/idea-ionic-auth.umd.min.js +0 -16
  30. package/bundles/idea-ionic-auth.umd.min.js.map +0 -1
  31. package/esm2015/environment.js +0 -22
  32. package/esm2015/environment.ngsummary.json +0 -1
  33. package/esm2015/idea-ionic-auth.js +0 -8
  34. package/esm2015/idea-ionic-auth.ngsummary.json +0 -1
  35. package/esm2015/node_modules/@angular/common/common.ngfactory.js +0 -5
  36. package/esm2015/node_modules/@angular/common/common.ngsummary.json +0 -1
  37. package/esm2015/node_modules/@angular/common/http/http.ngsummary.json +0 -1
  38. package/esm2015/node_modules/@angular/core/core.ngfactory.js +0 -4
  39. package/esm2015/node_modules/@angular/core/core.ngsummary.json +0 -1
  40. package/esm2015/node_modules/@angular/forms/forms.ngfactory.js +0 -9
  41. package/esm2015/node_modules/@angular/forms/forms.ngsummary.json +0 -1
  42. package/esm2015/node_modules/@angular/router/router.ngfactory.js +0 -12
  43. package/esm2015/node_modules/@angular/router/router.ngsummary.json +0 -1
  44. package/esm2015/node_modules/@capacitor/core/dist/esm/core-plugin-definitions.ngsummary.json +0 -1
  45. package/esm2015/node_modules/@capacitor/core/dist/esm/definitions.ngsummary.json +0 -1
  46. package/esm2015/node_modules/@capacitor/core/dist/esm/global.ngsummary.json +0 -1
  47. package/esm2015/node_modules/@capacitor/core/dist/esm/index.ngsummary.json +0 -1
  48. package/esm2015/node_modules/@capacitor/core/dist/esm/web/accessibility.ngsummary.json +0 -1
  49. package/esm2015/node_modules/@capacitor/core/dist/esm/web/app.ngsummary.json +0 -1
  50. package/esm2015/node_modules/@capacitor/core/dist/esm/web/browser.ngsummary.json +0 -1
  51. package/esm2015/node_modules/@capacitor/core/dist/esm/web/camera.ngsummary.json +0 -1
  52. package/esm2015/node_modules/@capacitor/core/dist/esm/web/clipboard.ngsummary.json +0 -1
  53. package/esm2015/node_modules/@capacitor/core/dist/esm/web/device.ngsummary.json +0 -1
  54. package/esm2015/node_modules/@capacitor/core/dist/esm/web/filesystem.ngsummary.json +0 -1
  55. package/esm2015/node_modules/@capacitor/core/dist/esm/web/geolocation.ngsummary.json +0 -1
  56. package/esm2015/node_modules/@capacitor/core/dist/esm/web/index.ngsummary.json +0 -1
  57. package/esm2015/node_modules/@capacitor/core/dist/esm/web/local-notifications.ngsummary.json +0 -1
  58. package/esm2015/node_modules/@capacitor/core/dist/esm/web/modals.ngsummary.json +0 -1
  59. package/esm2015/node_modules/@capacitor/core/dist/esm/web/motion.ngsummary.json +0 -1
  60. package/esm2015/node_modules/@capacitor/core/dist/esm/web/network.ngsummary.json +0 -1
  61. package/esm2015/node_modules/@capacitor/core/dist/esm/web/permissions.ngsummary.json +0 -1
  62. package/esm2015/node_modules/@capacitor/core/dist/esm/web/share.ngsummary.json +0 -1
  63. package/esm2015/node_modules/@capacitor/core/dist/esm/web/splash-screen.ngsummary.json +0 -1
  64. package/esm2015/node_modules/@capacitor/core/dist/esm/web/storage.ngsummary.json +0 -1
  65. package/esm2015/node_modules/@capacitor/core/dist/esm/web/toast.ngsummary.json +0 -1
  66. package/esm2015/node_modules/@capacitor/core/dist/esm/web-plugins.ngsummary.json +0 -1
  67. package/esm2015/node_modules/@idea-ionic/common/idea-ionic-common.ngfactory.js +0 -1546
  68. package/esm2015/node_modules/@idea-ionic/common/idea-ionic-common.ngsummary.json +0 -1
  69. package/esm2015/node_modules/@ionic/angular/ionic-angular.ngfactory.js +0 -524
  70. package/esm2015/node_modules/@ionic/angular/ionic-angular.ngsummary.json +0 -1
  71. package/esm2015/node_modules/@ionic/angular/node_modules/tslib/tslib.ngsummary.json +0 -1
  72. package/esm2015/node_modules/@ionic/core/dist/types/components/action-sheet/action-sheet-interface.ngsummary.json +0 -1
  73. package/esm2015/node_modules/@ionic/core/dist/types/components/alert/alert-interface.ngsummary.json +0 -1
  74. package/esm2015/node_modules/@ionic/core/dist/types/components/checkbox/checkbox-interface.ngsummary.json +0 -1
  75. package/esm2015/node_modules/@ionic/core/dist/types/components/content/content-interface.ngsummary.json +0 -1
  76. package/esm2015/node_modules/@ionic/core/dist/types/components/datetime/datetime-interface.ngsummary.json +0 -1
  77. package/esm2015/node_modules/@ionic/core/dist/types/components/input/input-interface.ngsummary.json +0 -1
  78. package/esm2015/node_modules/@ionic/core/dist/types/components/loading/loading-interface.ngsummary.json +0 -1
  79. package/esm2015/node_modules/@ionic/core/dist/types/components/menu/menu-interface.ngsummary.json +0 -1
  80. package/esm2015/node_modules/@ionic/core/dist/types/components/modal/modal-interface.ngsummary.json +0 -1
  81. package/esm2015/node_modules/@ionic/core/dist/types/components/nav/constants.ngsummary.json +0 -1
  82. package/esm2015/node_modules/@ionic/core/dist/types/components/nav/nav-interface.ngsummary.json +0 -1
  83. package/esm2015/node_modules/@ionic/core/dist/types/components/nav/view-controller.ngsummary.json +0 -1
  84. package/esm2015/node_modules/@ionic/core/dist/types/components/picker/picker-interface.ngsummary.json +0 -1
  85. package/esm2015/node_modules/@ionic/core/dist/types/components/popover/popover-interface.ngsummary.json +0 -1
  86. package/esm2015/node_modules/@ionic/core/dist/types/components/radio-group/radio-group-interface.ngsummary.json +0 -1
  87. package/esm2015/node_modules/@ionic/core/dist/types/components/range/range-interface.ngsummary.json +0 -1
  88. package/esm2015/node_modules/@ionic/core/dist/types/components/refresher/refresher-interface.ngsummary.json +0 -1
  89. package/esm2015/node_modules/@ionic/core/dist/types/components/reorder-group/reorder-group-interface.ngsummary.json +0 -1
  90. package/esm2015/node_modules/@ionic/core/dist/types/components/route/route-interface.ngsummary.json +0 -1
  91. package/esm2015/node_modules/@ionic/core/dist/types/components/router/utils/interface.ngsummary.json +0 -1
  92. package/esm2015/node_modules/@ionic/core/dist/types/components/searchbar/searchbar-interface.ngsummary.json +0 -1
  93. package/esm2015/node_modules/@ionic/core/dist/types/components/segment/segment-interface.ngsummary.json +0 -1
  94. package/esm2015/node_modules/@ionic/core/dist/types/components/select/select-interface.ngsummary.json +0 -1
  95. package/esm2015/node_modules/@ionic/core/dist/types/components/select-popover/select-popover-interface.ngsummary.json +0 -1
  96. package/esm2015/node_modules/@ionic/core/dist/types/components/spinner/spinner-configs.ngsummary.json +0 -1
  97. package/esm2015/node_modules/@ionic/core/dist/types/components/spinner/spinner-interface.ngsummary.json +0 -1
  98. package/esm2015/node_modules/@ionic/core/dist/types/components/tab-bar/tab-bar-interface.ngsummary.json +0 -1
  99. package/esm2015/node_modules/@ionic/core/dist/types/components/textarea/textarea-interface.ngsummary.json +0 -1
  100. package/esm2015/node_modules/@ionic/core/dist/types/components/toast/toast-interface.ngsummary.json +0 -1
  101. package/esm2015/node_modules/@ionic/core/dist/types/components/toggle/toggle-interface.ngsummary.json +0 -1
  102. package/esm2015/node_modules/@ionic/core/dist/types/components/virtual-scroll/virtual-scroll-interface.ngsummary.json +0 -1
  103. package/esm2015/node_modules/@ionic/core/dist/types/components.ngsummary.json +0 -1
  104. package/esm2015/node_modules/@ionic/core/dist/types/global/config.ngsummary.json +0 -1
  105. package/esm2015/node_modules/@ionic/core/dist/types/index.ngsummary.json +0 -1
  106. package/esm2015/node_modules/@ionic/core/dist/types/interface.ngsummary.json +0 -1
  107. package/esm2015/node_modules/@ionic/core/dist/types/stencil-public-runtime.ngsummary.json +0 -1
  108. package/esm2015/node_modules/@ionic/core/dist/types/utils/animation/animation-interface.ngsummary.json +0 -1
  109. package/esm2015/node_modules/@ionic/core/dist/types/utils/animation/animation.ngsummary.json +0 -1
  110. package/esm2015/node_modules/@ionic/core/dist/types/utils/animation/cubic-bezier.ngsummary.json +0 -1
  111. package/esm2015/node_modules/@ionic/core/dist/types/utils/config.ngsummary.json +0 -1
  112. package/esm2015/node_modules/@ionic/core/dist/types/utils/gesture/gesture-controller.ngsummary.json +0 -1
  113. package/esm2015/node_modules/@ionic/core/dist/types/utils/gesture/index.ngsummary.json +0 -1
  114. package/esm2015/node_modules/@ionic/core/dist/types/utils/menu-controller/index.ngsummary.json +0 -1
  115. package/esm2015/node_modules/@ionic/core/dist/types/utils/overlays-interface.ngsummary.json +0 -1
  116. package/esm2015/node_modules/@ionic/core/dist/types/utils/overlays.ngsummary.json +0 -1
  117. package/esm2015/node_modules/@ionic/core/dist/types/utils/platform.ngsummary.json +0 -1
  118. package/esm2015/node_modules/@ionic/core/dist/types/utils/sanitization/index.ngsummary.json +0 -1
  119. package/esm2015/node_modules/@ionic/core/dist/types/utils/transition/index.ngsummary.json +0 -1
  120. package/esm2015/node_modules/@ionic/core/dist/types/utils/transition/ios.transition.ngsummary.json +0 -1
  121. package/esm2015/node_modules/@ionic/core/dist/types/utils/transition/md.transition.ngsummary.json +0 -1
  122. package/esm2015/node_modules/@ionic/storage/dist/esm/index.ngsummary.json +0 -1
  123. package/esm2015/node_modules/amazon-cognito-identity-js/index.ngsummary.json +0 -1
  124. package/esm2015/node_modules/idea-toolbox/dist/index.ngsummary.json +0 -1
  125. package/esm2015/node_modules/idea-toolbox/dist/src/APIRequestLog.model.ngsummary.json +0 -1
  126. package/esm2015/node_modules/idea-toolbox/dist/src/RCAttachedResource.model.ngsummary.json +0 -1
  127. package/esm2015/node_modules/idea-toolbox/dist/src/RCConfiguredFolder.model.ngsummary.json +0 -1
  128. package/esm2015/node_modules/idea-toolbox/dist/src/RCFolder.model.ngsummary.json +0 -1
  129. package/esm2015/node_modules/idea-toolbox/dist/src/RCResource.model.ngsummary.json +0 -1
  130. package/esm2015/node_modules/idea-toolbox/dist/src/address.model.ngsummary.json +0 -1
  131. package/esm2015/node_modules/idea-toolbox/dist/src/amazonTranslateLanguages.enum.ngsummary.json +0 -1
  132. package/esm2015/node_modules/idea-toolbox/dist/src/announcement.model.ngsummary.json +0 -1
  133. package/esm2015/node_modules/idea-toolbox/dist/src/appointment.model.ngsummary.json +0 -1
  134. package/esm2015/node_modules/idea-toolbox/dist/src/attachment.model.ngsummary.json +0 -1
  135. package/esm2015/node_modules/idea-toolbox/dist/src/booleanChoices.enum.ngsummary.json +0 -1
  136. package/esm2015/node_modules/idea-toolbox/dist/src/cacheable.model.ngsummary.json +0 -1
  137. package/esm2015/node_modules/idea-toolbox/dist/src/cacheableResource.model.ngsummary.json +0 -1
  138. package/esm2015/node_modules/idea-toolbox/dist/src/calendar.model.ngsummary.json +0 -1
  139. package/esm2015/node_modules/idea-toolbox/dist/src/check.model.ngsummary.json +0 -1
  140. package/esm2015/node_modules/idea-toolbox/dist/src/clientInfo.model.ngsummary.json +0 -1
  141. package/esm2015/node_modules/idea-toolbox/dist/src/cognitoUser.model.ngsummary.json +0 -1
  142. package/esm2015/node_modules/idea-toolbox/dist/src/contactRequest.model.ngsummary.json +0 -1
  143. package/esm2015/node_modules/idea-toolbox/dist/src/contacts.model.ngsummary.json +0 -1
  144. package/esm2015/node_modules/idea-toolbox/dist/src/countries.enum.ngsummary.json +0 -1
  145. package/esm2015/node_modules/idea-toolbox/dist/src/customBlockMeta.model.ngsummary.json +0 -1
  146. package/esm2015/node_modules/idea-toolbox/dist/src/customFieldMeta.model.ngsummary.json +0 -1
  147. package/esm2015/node_modules/idea-toolbox/dist/src/customFieldTypes.enum.ngsummary.json +0 -1
  148. package/esm2015/node_modules/idea-toolbox/dist/src/customSectionMeta.model.ngsummary.json +0 -1
  149. package/esm2015/node_modules/idea-toolbox/dist/src/delta.model.ngsummary.json +0 -1
  150. package/esm2015/node_modules/idea-toolbox/dist/src/emailChangeRequest.model.ngsummary.json +0 -1
  151. package/esm2015/node_modules/idea-toolbox/dist/src/emailData.model.ngsummary.json +0 -1
  152. package/esm2015/node_modules/idea-toolbox/dist/src/epoch.ngsummary.json +0 -1
  153. package/esm2015/node_modules/idea-toolbox/dist/src/errorReport.model.ngsummary.json +0 -1
  154. package/esm2015/node_modules/idea-toolbox/dist/src/errorWhitelisted.model.ngsummary.json +0 -1
  155. package/esm2015/node_modules/idea-toolbox/dist/src/excelRow.model.ngsummary.json +0 -1
  156. package/esm2015/node_modules/idea-toolbox/dist/src/invitation.model.ngsummary.json +0 -1
  157. package/esm2015/node_modules/idea-toolbox/dist/src/ionicons.enum.ngsummary.json +0 -1
  158. package/esm2015/node_modules/idea-toolbox/dist/src/label.model.ngsummary.json +0 -1
  159. package/esm2015/node_modules/idea-toolbox/dist/src/labelVariable.model.ngsummary.json +0 -1
  160. package/esm2015/node_modules/idea-toolbox/dist/src/languages.enum.ngsummary.json +0 -1
  161. package/esm2015/node_modules/idea-toolbox/dist/src/languages.model.ngsummary.json +0 -1
  162. package/esm2015/node_modules/idea-toolbox/dist/src/limitCounter.model.ngsummary.json +0 -1
  163. package/esm2015/node_modules/idea-toolbox/dist/src/markdown.ngsummary.json +0 -1
  164. package/esm2015/node_modules/idea-toolbox/dist/src/membership.model.ngsummary.json +0 -1
  165. package/esm2015/node_modules/idea-toolbox/dist/src/notification.model.ngsummary.json +0 -1
  166. package/esm2015/node_modules/idea-toolbox/dist/src/pdfTemplate.model.ngsummary.json +0 -1
  167. package/esm2015/node_modules/idea-toolbox/dist/src/projectPlan.model.ngsummary.json +0 -1
  168. package/esm2015/node_modules/idea-toolbox/dist/src/projectSubscription.model.ngsummary.json +0 -1
  169. package/esm2015/node_modules/idea-toolbox/dist/src/pushNotificationsDevice.model.ngsummary.json +0 -1
  170. package/esm2015/node_modules/idea-toolbox/dist/src/pushNotificationsPlatforms.enum.ngsummary.json +0 -1
  171. package/esm2015/node_modules/idea-toolbox/dist/src/resource.model.ngsummary.json +0 -1
  172. package/esm2015/node_modules/idea-toolbox/dist/src/sentiment.enum.ngsummary.json +0 -1
  173. package/esm2015/node_modules/idea-toolbox/dist/src/signature.model.ngsummary.json +0 -1
  174. package/esm2015/node_modules/idea-toolbox/dist/src/signedURL.model.ngsummary.json +0 -1
  175. package/esm2015/node_modules/idea-toolbox/dist/src/stringVariable.model.ngsummary.json +0 -1
  176. package/esm2015/node_modules/idea-toolbox/dist/src/suggestion.model.ngsummary.json +0 -1
  177. package/esm2015/node_modules/idea-toolbox/dist/src/team.model.ngsummary.json +0 -1
  178. package/esm2015/node_modules/idea-toolbox/dist/src/teamModules.model.ngsummary.json +0 -1
  179. package/esm2015/node_modules/idea-toolbox/dist/src/timeInterval.model.ngsummary.json +0 -1
  180. package/esm2015/node_modules/idea-toolbox/dist/src/user.model.ngsummary.json +0 -1
  181. package/esm2015/node_modules/idea-toolbox/dist/src/utils.ngsummary.json +0 -1
  182. package/esm2015/node_modules/ionicons/dist/types/components/icon/icon.ngsummary.json +0 -1
  183. package/esm2015/node_modules/ionicons/dist/types/components/icon/utils.ngsummary.json +0 -1
  184. package/esm2015/node_modules/ionicons/dist/types/components.ngsummary.json +0 -1
  185. package/esm2015/node_modules/ionicons/dist/types/index.ngsummary.json +0 -1
  186. package/esm2015/node_modules/ionicons/dist/types/stencil-public-runtime.ngsummary.json +0 -1
  187. package/esm2015/node_modules/rxjs/index.ngsummary.json +0 -1
  188. package/esm2015/node_modules/rxjs/internal/AsyncSubject.ngsummary.json +0 -1
  189. package/esm2015/node_modules/rxjs/internal/BehaviorSubject.ngsummary.json +0 -1
  190. package/esm2015/node_modules/rxjs/internal/InnerSubscriber.ngsummary.json +0 -1
  191. package/esm2015/node_modules/rxjs/internal/Notification.ngsummary.json +0 -1
  192. package/esm2015/node_modules/rxjs/internal/Observable.ngsummary.json +0 -1
  193. package/esm2015/node_modules/rxjs/internal/Operator.ngsummary.json +0 -1
  194. package/esm2015/node_modules/rxjs/internal/OuterSubscriber.ngsummary.json +0 -1
  195. package/esm2015/node_modules/rxjs/internal/ReplaySubject.ngsummary.json +0 -1
  196. package/esm2015/node_modules/rxjs/internal/Scheduler.ngsummary.json +0 -1
  197. package/esm2015/node_modules/rxjs/internal/Subject.ngsummary.json +0 -1
  198. package/esm2015/node_modules/rxjs/internal/Subscriber.ngsummary.json +0 -1
  199. package/esm2015/node_modules/rxjs/internal/Subscription.ngsummary.json +0 -1
  200. package/esm2015/node_modules/rxjs/internal/config.ngsummary.json +0 -1
  201. package/esm2015/node_modules/rxjs/internal/observable/ConnectableObservable.ngsummary.json +0 -1
  202. package/esm2015/node_modules/rxjs/internal/observable/bindCallback.ngsummary.json +0 -1
  203. package/esm2015/node_modules/rxjs/internal/observable/bindNodeCallback.ngsummary.json +0 -1
  204. package/esm2015/node_modules/rxjs/internal/observable/combineLatest.ngsummary.json +0 -1
  205. package/esm2015/node_modules/rxjs/internal/observable/concat.ngsummary.json +0 -1
  206. package/esm2015/node_modules/rxjs/internal/observable/defer.ngsummary.json +0 -1
  207. package/esm2015/node_modules/rxjs/internal/observable/empty.ngsummary.json +0 -1
  208. package/esm2015/node_modules/rxjs/internal/observable/forkJoin.ngsummary.json +0 -1
  209. package/esm2015/node_modules/rxjs/internal/observable/from.ngsummary.json +0 -1
  210. package/esm2015/node_modules/rxjs/internal/observable/fromEvent.ngsummary.json +0 -1
  211. package/esm2015/node_modules/rxjs/internal/observable/fromEventPattern.ngsummary.json +0 -1
  212. package/esm2015/node_modules/rxjs/internal/observable/generate.ngsummary.json +0 -1
  213. package/esm2015/node_modules/rxjs/internal/observable/iif.ngsummary.json +0 -1
  214. package/esm2015/node_modules/rxjs/internal/observable/interval.ngsummary.json +0 -1
  215. package/esm2015/node_modules/rxjs/internal/observable/merge.ngsummary.json +0 -1
  216. package/esm2015/node_modules/rxjs/internal/observable/never.ngsummary.json +0 -1
  217. package/esm2015/node_modules/rxjs/internal/observable/of.ngsummary.json +0 -1
  218. package/esm2015/node_modules/rxjs/internal/observable/onErrorResumeNext.ngsummary.json +0 -1
  219. package/esm2015/node_modules/rxjs/internal/observable/pairs.ngsummary.json +0 -1
  220. package/esm2015/node_modules/rxjs/internal/observable/partition.ngsummary.json +0 -1
  221. package/esm2015/node_modules/rxjs/internal/observable/race.ngsummary.json +0 -1
  222. package/esm2015/node_modules/rxjs/internal/observable/range.ngsummary.json +0 -1
  223. package/esm2015/node_modules/rxjs/internal/observable/throwError.ngsummary.json +0 -1
  224. package/esm2015/node_modules/rxjs/internal/observable/timer.ngsummary.json +0 -1
  225. package/esm2015/node_modules/rxjs/internal/observable/using.ngsummary.json +0 -1
  226. package/esm2015/node_modules/rxjs/internal/observable/zip.ngsummary.json +0 -1
  227. package/esm2015/node_modules/rxjs/internal/operators/groupBy.ngsummary.json +0 -1
  228. package/esm2015/node_modules/rxjs/internal/scheduled/scheduled.ngsummary.json +0 -1
  229. package/esm2015/node_modules/rxjs/internal/scheduler/Action.ngsummary.json +0 -1
  230. package/esm2015/node_modules/rxjs/internal/scheduler/AnimationFrameScheduler.ngsummary.json +0 -1
  231. package/esm2015/node_modules/rxjs/internal/scheduler/AsapScheduler.ngsummary.json +0 -1
  232. package/esm2015/node_modules/rxjs/internal/scheduler/AsyncAction.ngsummary.json +0 -1
  233. package/esm2015/node_modules/rxjs/internal/scheduler/AsyncScheduler.ngsummary.json +0 -1
  234. package/esm2015/node_modules/rxjs/internal/scheduler/QueueScheduler.ngsummary.json +0 -1
  235. package/esm2015/node_modules/rxjs/internal/scheduler/VirtualTimeScheduler.ngsummary.json +0 -1
  236. package/esm2015/node_modules/rxjs/internal/scheduler/animationFrame.ngsummary.json +0 -1
  237. package/esm2015/node_modules/rxjs/internal/scheduler/asap.ngsummary.json +0 -1
  238. package/esm2015/node_modules/rxjs/internal/scheduler/async.ngsummary.json +0 -1
  239. package/esm2015/node_modules/rxjs/internal/scheduler/queue.ngsummary.json +0 -1
  240. package/esm2015/node_modules/rxjs/internal/symbol/observable.ngsummary.json +0 -1
  241. package/esm2015/node_modules/rxjs/internal/types.ngsummary.json +0 -1
  242. package/esm2015/node_modules/rxjs/internal/util/ArgumentOutOfRangeError.ngsummary.json +0 -1
  243. package/esm2015/node_modules/rxjs/internal/util/EmptyError.ngsummary.json +0 -1
  244. package/esm2015/node_modules/rxjs/internal/util/ObjectUnsubscribedError.ngsummary.json +0 -1
  245. package/esm2015/node_modules/rxjs/internal/util/TimeoutError.ngsummary.json +0 -1
  246. package/esm2015/node_modules/rxjs/internal/util/UnsubscriptionError.ngsummary.json +0 -1
  247. package/esm2015/node_modules/rxjs/internal/util/identity.ngsummary.json +0 -1
  248. package/esm2015/node_modules/rxjs/internal/util/isObservable.ngsummary.json +0 -1
  249. package/esm2015/node_modules/rxjs/internal/util/noop.ngsummary.json +0 -1
  250. package/esm2015/node_modules/rxjs/internal/util/pipe.ngsummary.json +0 -1
  251. package/esm2015/node_modules/signature_pad/dist/types/point.ngsummary.json +0 -1
  252. package/esm2015/node_modules/signature_pad/dist/types/signature_pad.ngsummary.json +0 -1
  253. package/esm2015/node_modules/tslib/tslib.ngsummary.json +0 -1
  254. package/esm2015/public-api.ngsummary.json +0 -1
  255. package/esm2015/src/auth.module.js +0 -42
  256. package/esm2015/src/auth.module.ngfactory.js +0 -24
  257. package/esm2015/src/auth.module.ngsummary.json +0 -1
  258. package/esm2015/src/auth.scss.shim.ngstyle.js +0 -3
  259. package/esm2015/src/auth.service.js +0 -214
  260. package/esm2015/src/auth.service.ngsummary.json +0 -1
  261. package/esm2015/src/confirmPassword.page.js +0 -59
  262. package/esm2015/src/confirmPassword.page.ngfactory.js +0 -70
  263. package/esm2015/src/confirmPassword.page.ngsummary.json +0 -1
  264. package/esm2015/src/forgotPassword.page.js +0 -48
  265. package/esm2015/src/forgotPassword.page.ngfactory.js +0 -43
  266. package/esm2015/src/forgotPassword.page.ngsummary.json +0 -1
  267. package/esm2015/src/newPassword.page.js +0 -54
  268. package/esm2015/src/newPassword.page.ngfactory.js +0 -42
  269. package/esm2015/src/newPassword.page.ngsummary.json +0 -1
  270. package/esm2015/src/resendLink.page.js +0 -54
  271. package/esm2015/src/resendLink.page.ngfactory.js +0 -42
  272. package/esm2015/src/resendLink.page.ngsummary.json +0 -1
  273. package/esm2015/src/signIn.page.js +0 -84
  274. package/esm2015/src/signIn.page.ngfactory.js +0 -82
  275. package/esm2015/src/signIn.page.ngsummary.json +0 -1
  276. package/esm2015/src/signUp.page.js +0 -74
  277. package/esm2015/src/signUp.page.ngfactory.js +0 -70
  278. package/esm2015/src/signUp.page.ngsummary.json +0 -1
  279. package/fesm2015/idea-ionic-auth.js +0 -592
  280. package/fesm2015/idea-ionic-auth.js.map +0 -1
  281. package/idea-ionic-auth.metadata.json +0 -1
  282. package/src/auth.module.ngfactory.d.ts +0 -3
  283. package/src/auth.scss.shim.ngstyle.d.ts +0 -1
  284. package/src/confirmPassword.page.ngfactory.d.ts +0 -1
  285. package/src/forgotPassword.page.ngfactory.d.ts +0 -1
  286. package/src/newPassword.page.ngfactory.d.ts +0 -1
  287. package/src/resendLink.page.ngfactory.d.ts +0 -1
  288. package/src/signIn.page.ngfactory.d.ts +0 -1
  289. package/src/signUp.page.ngfactory.d.ts +0 -1
@@ -0,0 +1,48 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@ionic/angular";
4
+ import * as i2 from "@idea-ionic/common";
5
+ import * as i3 from "./auth.service";
6
+ import * as i4 from "@angular/forms";
7
+ export class IDEAForgotPasswordPage {
8
+ constructor(navCtrl, message, loading, auth, t) {
9
+ this.navCtrl = navCtrl;
10
+ this.message = message;
11
+ this.loading = loading;
12
+ this.auth = auth;
13
+ this.t = t;
14
+ }
15
+ /**
16
+ * "I forgot my password" procedure.
17
+ */
18
+ async forgotPassword() {
19
+ await this.loading.show();
20
+ this.auth
21
+ .forgotPassword(this.email)
22
+ .then(() => {
23
+ this.message.success('IDEA_AUTH.PASSWORD_RESET_CODE_SENT');
24
+ this.goToConfirmPassword();
25
+ })
26
+ .catch(() => this.message.error('IDEA_AUTH.USER_NOT_FOUND'))
27
+ .finally(() => this.loading.hide());
28
+ }
29
+ /**
30
+ * Go to the confirm password page.
31
+ */
32
+ goToConfirmPassword() {
33
+ this.navCtrl.navigateForward(['auth/confirm-password'], { queryParams: { email: this.email || null } });
34
+ }
35
+ /**
36
+ * Go to auth page.
37
+ */
38
+ goToAuth() {
39
+ this.navCtrl.navigateBack(['auth']);
40
+ }
41
+ }
42
+ IDEAForgotPasswordPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAForgotPasswordPage, deps: [{ token: i1.NavController }, { token: i2.IDEAMessageService }, { token: i2.IDEALoadingService }, { token: i3.IDEAAuthService }, { token: i2.IDEATranslationsService }], target: i0.ɵɵFactoryTarget.Component });
43
+ IDEAForgotPasswordPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: IDEAForgotPasswordPage, selector: "idea-forgot-password", ngImport: i0, template: "<ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.PASSWORD_RESET' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.PASSWORD_RESET_HINT' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\"> </ion-icon>\n </ion-label>\n <ion-input\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"t._('IDEA_AUTH.EMAIL')\"\n [title]=\"t._('IDEA_AUTH.EMAIL_HINT')\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"forgotPassword()\"\n ></ion-input>\n </ion-item>\n <ion-button expand=\"block\" [title]=\"t._('IDEA_AUTH.RESET_MY_PASSWORD_HINT')\" (click)=\"forgotPassword()\">\n {{ 'IDEA_AUTH.RESET_MY_PASSWORD' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"t._('IDEA_AUTH.ALREADY_HAVE_A_RESET_CODE_HINT')\"\n (click)=\"goToConfirmPassword()\"\n >\n {{ 'IDEA_AUTH.ALREADY_HAVE_A_RESET_CODE' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"t._('IDEA_AUTH.BACK_TO_SIGN_IN_HINT')\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n</ion-content>\n", styles: [".flexBox{background:var(--ion-color-white-shade)}.authCard{min-width:400px;max-width:550px;margin:0 10px;padding:20px;background-color:var(--ion-color-white);border:1px solid var(--ion-color-light);border-radius:10px;box-shadow:none;text-align:center}.authCard ion-img{width:150px;display:block;margin:0 auto}.authCard ion-card-title{font-family:auth-title;font-size:3em}.authCard ion-card-subtitle{font-family:auth-title;font-size:1.2em}.authCard ion-card-content{padding-top:16px}.authCard ion-card-content .errorBox{padding-left:10px;margin-bottom:20px;text-align:left;border-left:2px solid var(--ion-color-danger)}.authCard ion-card-content ion-item{--ion-item-background: var(--ion-color-white);--border-color: var(--ion-color-light)}.authCard ion-card-content ion-icon{padding-top:4px;padding-right:5px;font-size:1.3em}.authCard ion-card-content .agreementsAcceptanceRow{margin-top:15px;font-size:.9em}.authCard ion-card-content .agreementsAcceptanceRow ion-checkbox{vertical-align:bottom;margin-right:3px}.authCard ion-card-content ion-button{margin-top:15px}.authCard ion-card-content .smallCaseButton{text-transform:none;letter-spacing:normal;font-size:1em}@media only screen and (max-width: 500px){.authCard{background-color:transparent;border:none}}.ideaLogo{width:65px;margin:40px auto 0;cursor:pointer}\n"], components: [{ type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { type: i1.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { type: i1.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { type: i1.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { type: i1.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i1.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }], directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i2.IDEATranslatePipe } });
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAForgotPasswordPage, decorators: [{
45
+ type: Component,
46
+ args: [{ selector: 'idea-forgot-password', template: "<ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.PASSWORD_RESET' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.PASSWORD_RESET_HINT' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\"> </ion-icon>\n </ion-label>\n <ion-input\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"t._('IDEA_AUTH.EMAIL')\"\n [title]=\"t._('IDEA_AUTH.EMAIL_HINT')\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"forgotPassword()\"\n ></ion-input>\n </ion-item>\n <ion-button expand=\"block\" [title]=\"t._('IDEA_AUTH.RESET_MY_PASSWORD_HINT')\" (click)=\"forgotPassword()\">\n {{ 'IDEA_AUTH.RESET_MY_PASSWORD' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"t._('IDEA_AUTH.ALREADY_HAVE_A_RESET_CODE_HINT')\"\n (click)=\"goToConfirmPassword()\"\n >\n {{ 'IDEA_AUTH.ALREADY_HAVE_A_RESET_CODE' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"t._('IDEA_AUTH.BACK_TO_SIGN_IN_HINT')\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n</ion-content>\n", styles: [".flexBox{background:var(--ion-color-white-shade)}.authCard{min-width:400px;max-width:550px;margin:0 10px;padding:20px;background-color:var(--ion-color-white);border:1px solid var(--ion-color-light);border-radius:10px;box-shadow:none;text-align:center}.authCard ion-img{width:150px;display:block;margin:0 auto}.authCard ion-card-title{font-family:auth-title;font-size:3em}.authCard ion-card-subtitle{font-family:auth-title;font-size:1.2em}.authCard ion-card-content{padding-top:16px}.authCard ion-card-content .errorBox{padding-left:10px;margin-bottom:20px;text-align:left;border-left:2px solid var(--ion-color-danger)}.authCard ion-card-content ion-item{--ion-item-background: var(--ion-color-white);--border-color: var(--ion-color-light)}.authCard ion-card-content ion-icon{padding-top:4px;padding-right:5px;font-size:1.3em}.authCard ion-card-content .agreementsAcceptanceRow{margin-top:15px;font-size:.9em}.authCard ion-card-content .agreementsAcceptanceRow ion-checkbox{vertical-align:bottom;margin-right:3px}.authCard ion-card-content ion-button{margin-top:15px}.authCard ion-card-content .smallCaseButton{text-transform:none;letter-spacing:normal;font-size:1em}@media only screen and (max-width: 500px){.authCard{background-color:transparent;border:none}}.ideaLogo{width:65px;margin:40px auto 0;cursor:pointer}\n"] }]
47
+ }], ctorParameters: function () { return [{ type: i1.NavController }, { type: i2.IDEAMessageService }, { type: i2.IDEALoadingService }, { type: i3.IDEAAuthService }, { type: i2.IDEATranslationsService }]; } });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZ290UGFzc3dvcmQucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYXV0aC9zcmMvZm9yZ290UGFzc3dvcmQucGFnZS50cyIsIi4uLy4uLy4uLy4uL21vZHVsZXMvYXV0aC9zcmMvZm9yZ290UGFzc3dvcmQucGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVUxQyxNQUFNLE9BQU8sc0JBQXNCO0lBTWpDLFlBQ1MsT0FBc0IsRUFDdEIsT0FBMkIsRUFDM0IsT0FBMkIsRUFDM0IsSUFBcUIsRUFDckIsQ0FBMEI7UUFKMUIsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUN0QixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFpQjtRQUNyQixNQUFDLEdBQUQsQ0FBQyxDQUF5QjtJQUNoQyxDQUFDO0lBRUo7O09BRUc7SUFDSSxLQUFLLENBQUMsY0FBYztRQUN6QixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUk7YUFDTixjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUMxQixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsb0NBQW9DLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQzthQUMzRCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNJLG1CQUFtQjtRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUNEOztPQUVHO0lBQ0ksUUFBUTtRQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDOzttSEF4Q1Usc0JBQXNCO3VHQUF0QixzQkFBc0IsNERDVm5DLGkrREFvREE7MkZEMUNhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBJREVBQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBJREVBTWVzc2FnZVNlcnZpY2UsIElERUFMb2FkaW5nU2VydmljZSwgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLWZvcmdvdC1wYXNzd29yZCcsXG4gIHRlbXBsYXRlVXJsOiAnZm9yZ290UGFzc3dvcmQucGFnZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2F1dGguc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIElERUFGb3Jnb3RQYXNzd29yZFBhZ2Uge1xuICAvKipcbiAgICogVGhlIGVtYWlsIGFkZHJlc3MgdXNlZCB0byBpZGVudGlmeSB0aGUgYWNjb3VudC5cbiAgICovXG4gIHB1YmxpYyBlbWFpbDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuYXZDdHJsOiBOYXZDb250cm9sbGVyLFxuICAgIHB1YmxpYyBtZXNzYWdlOiBJREVBTWVzc2FnZVNlcnZpY2UsXG4gICAgcHVibGljIGxvYWRpbmc6IElERUFMb2FkaW5nU2VydmljZSxcbiAgICBwdWJsaWMgYXV0aDogSURFQUF1dGhTZXJ2aWNlLFxuICAgIHB1YmxpYyB0OiBJREVBVHJhbnNsYXRpb25zU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFwiSSBmb3Jnb3QgbXkgcGFzc3dvcmRcIiBwcm9jZWR1cmUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZm9yZ290UGFzc3dvcmQoKSB7XG4gICAgYXdhaXQgdGhpcy5sb2FkaW5nLnNob3coKTtcbiAgICB0aGlzLmF1dGhcbiAgICAgIC5mb3Jnb3RQYXNzd29yZCh0aGlzLmVtYWlsKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2Uuc3VjY2VzcygnSURFQV9BVVRILlBBU1NXT1JEX1JFU0VUX0NPREVfU0VOVCcpO1xuICAgICAgICB0aGlzLmdvVG9Db25maXJtUGFzc3dvcmQoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4gdGhpcy5tZXNzYWdlLmVycm9yKCdJREVBX0FVVEguVVNFUl9OT1RfRk9VTkQnKSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMubG9hZGluZy5oaWRlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdvIHRvIHRoZSBjb25maXJtIHBhc3N3b3JkIHBhZ2UuXG4gICAqL1xuICBwdWJsaWMgZ29Ub0NvbmZpcm1QYXNzd29yZCgpIHtcbiAgICB0aGlzLm5hdkN0cmwubmF2aWdhdGVGb3J3YXJkKFsnYXV0aC9jb25maXJtLXBhc3N3b3JkJ10sIHsgcXVlcnlQYXJhbXM6IHsgZW1haWw6IHRoaXMuZW1haWwgfHwgbnVsbCB9IH0pO1xuICB9XG4gIC8qKlxuICAgKiBHbyB0byBhdXRoIHBhZ2UuXG4gICAqL1xuICBwdWJsaWMgZ29Ub0F1dGgoKSB7XG4gICAgdGhpcy5uYXZDdHJsLm5hdmlnYXRlQmFjayhbJ2F1dGgnXSk7XG4gIH1cbn1cbiIsIjxpb24tY29udGVudD5cbiAgPGZvcm0gY2xhc3M9XCJmbGV4Qm94XCI+XG4gICAgPGlvbi1jYXJkIGNsYXNzPVwiYXV0aENhcmRcIj5cbiAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgIDxpb24tY2FyZC10aXRsZSBjb2xvcj1cInByaW1hcnlcIj57eyAnSURFQV9BVVRILlBBU1NXT1JEX1JFU0VUJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT57eyAnSURFQV9BVVRILlBBU1NXT1JEX1JFU0VUX0hJTlQnIHwgdHJhbnNsYXRlIH19PC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxpb24taXRlbT5cbiAgICAgICAgICA8aW9uLWxhYmVsIHBvc2l0aW9uPVwiaW5saW5lXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlcnNvbi1jaXJjbGVcIiBjb2xvcj1cInByaW1hcnlcIj4gPC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgICB0eXBlPVwiZW1haWxcIlxuICAgICAgICAgICAgaW5wdXRtb2RlPVwiZW1haWxcIlxuICAgICAgICAgICAgcGF0dGVybj1cIltBLVphLXowLTkuXyUrLV17Mix9QFthLXpBLVotXy5dezIsfVsuXXsxfVthLXpBLVpdezIsfVwiXG4gICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgICAgICAgYXV0b2NvcnJlY3Q9XCJvZmZcIlxuICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwiZW1haWxcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInQuXygnSURFQV9BVVRILkVNQUlMJylcIlxuICAgICAgICAgICAgW3RpdGxlXT1cInQuXygnSURFQV9BVVRILkVNQUlMX0hJTlQnKVwiXG4gICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbWFpbFwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiZm9yZ290UGFzc3dvcmQoKVwiXG4gICAgICAgICAgPjwvaW9uLWlucHV0PlxuICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIFt0aXRsZV09XCJ0Ll8oJ0lERUFfQVVUSC5SRVNFVF9NWV9QQVNTV09SRF9ISU5UJylcIiAoY2xpY2spPVwiZm9yZ290UGFzc3dvcmQoKVwiPlxuICAgICAgICAgIHt7ICdJREVBX0FVVEguUkVTRVRfTVlfUEFTU1dPUkQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgIGV4cGFuZD1cImJsb2NrXCJcbiAgICAgICAgICBjbGFzcz1cInNtYWxsQ2FzZUJ1dHRvblwiXG4gICAgICAgICAgW3RpdGxlXT1cInQuXygnSURFQV9BVVRILkFMUkVBRFlfSEFWRV9BX1JFU0VUX0NPREVfSElOVCcpXCJcbiAgICAgICAgICAoY2xpY2spPVwiZ29Ub0NvbmZpcm1QYXNzd29yZCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdJREVBX0FVVEguQUxSRUFEWV9IQVZFX0FfUkVTRVRfQ09ERScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgZXhwYW5kPVwiYmxvY2tcIlxuICAgICAgICAgIGNsYXNzPVwic21hbGxDYXNlQnV0dG9uXCJcbiAgICAgICAgICBbdGl0bGVdPVwidC5fKCdJREVBX0FVVEguQkFDS19UT19TSUdOX0lOX0hJTlQnKVwiXG4gICAgICAgICAgKGNsaWNrKT1cImdvVG9BdXRoKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ0lERUFfQVVUSC5CQUNLX1RPX1NJR05fSU4nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuICA8L2Zvcm0+XG48L2lvbi1jb250ZW50PlxuIl19
@@ -0,0 +1,52 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@ionic/angular";
4
+ import * as i2 from "@idea-ionic/common";
5
+ import * as i3 from "./auth.service";
6
+ import * as i4 from "@angular/forms";
7
+ import * as i5 from "@angular/common";
8
+ export class IDEANewPasswordPage {
9
+ constructor(navCtrl, tc, message, loading, auth, t) {
10
+ this.navCtrl = navCtrl;
11
+ this.tc = tc;
12
+ this.message = message;
13
+ this.loading = loading;
14
+ this.auth = auth;
15
+ this.t = t;
16
+ }
17
+ ngOnInit() {
18
+ this.email = this.tc.get('email', true);
19
+ this.password = this.tc.get('password', true);
20
+ if (!this.email || !this.password)
21
+ this.goToAuth();
22
+ }
23
+ /**
24
+ * Confirm a new password (auth flow that follows a registration or a password reset).
25
+ */
26
+ async confirmNewPassword() {
27
+ this.errorMsg = null;
28
+ await this.loading.show();
29
+ this.auth
30
+ .confirmNewPassword(this.email, this.password, this.newPassword)
31
+ // we are logged in
32
+ .then(() => window.location.assign(''))
33
+ .catch(() => {
34
+ this.errorMsg = this.t._('IDEA_AUTH.PASSWORD_POLICY_VIOLATION', { n: 8 });
35
+ this.message.error(this.errorMsg, true);
36
+ })
37
+ .finally(() => this.loading.hide());
38
+ }
39
+ /**
40
+ * Go to auth page.
41
+ */
42
+ goToAuth() {
43
+ this.navCtrl.navigateBack(['auth']);
44
+ }
45
+ }
46
+ IDEANewPasswordPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEANewPasswordPage, deps: [{ token: i1.NavController }, { token: i2.IDEATinCanService }, { token: i2.IDEAMessageService }, { token: i2.IDEALoadingService }, { token: i3.IDEAAuthService }, { token: i2.IDEATranslationsService }], target: i0.ɵɵFactoryTarget.Component });
47
+ IDEANewPasswordPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: IDEANewPasswordPage, selector: "idea-new-password", ngImport: i0, template: "<ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.CHOOSE_A_PASSWORD' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.YOU_NEED_TO_CHOOSE_A_NEW_PASSWORD' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <p class=\"errorBox\" *ngIf=\"errorMsg\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg }}\n </p>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\"></ion-icon>\n </ion-label>\n <ion-input\n type=\"password\"\n pattern=\".{8,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"new-password\"\n [clearOnEdit]=\"false\"\n [placeholder]=\"t._('IDEA_AUTH.PASSWORD')\"\n [title]=\"t._('IDEA_AUTH.CHOOSE_A_PASSWORD')\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"newPassword\"\n (keyup.enter)=\"confirmNewPassword()\"\n ></ion-input>\n </ion-item>\n <ion-button expand=\"block\" [title]=\"t._('IDEA_AUTH.CONFIRM_NEW_PASSWORD_HINT')\" (click)=\"confirmNewPassword()\">\n {{ 'IDEA_AUTH.CONFIRM_NEW_PASSWORD' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"t._('IDEA_AUTH.BACK_TO_SIGN_IN_HINT')\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n</ion-content>\n", styles: [".flexBox{background:var(--ion-color-white-shade)}.authCard{min-width:400px;max-width:550px;margin:0 10px;padding:20px;background-color:var(--ion-color-white);border:1px solid var(--ion-color-light);border-radius:10px;box-shadow:none;text-align:center}.authCard ion-img{width:150px;display:block;margin:0 auto}.authCard ion-card-title{font-family:auth-title;font-size:3em}.authCard ion-card-subtitle{font-family:auth-title;font-size:1.2em}.authCard ion-card-content{padding-top:16px}.authCard ion-card-content .errorBox{padding-left:10px;margin-bottom:20px;text-align:left;border-left:2px solid var(--ion-color-danger)}.authCard ion-card-content ion-item{--ion-item-background: var(--ion-color-white);--border-color: var(--ion-color-light)}.authCard ion-card-content ion-icon{padding-top:4px;padding-right:5px;font-size:1.3em}.authCard ion-card-content .agreementsAcceptanceRow{margin-top:15px;font-size:.9em}.authCard ion-card-content .agreementsAcceptanceRow ion-checkbox{vertical-align:bottom;margin-right:3px}.authCard ion-card-content ion-button{margin-top:15px}.authCard ion-card-content .smallCaseButton{text-transform:none;letter-spacing:normal;font-size:1em}@media only screen and (max-width: 500px){.authCard{background-color:transparent;border:none}}.ideaLogo{width:65px;margin:40px auto 0;cursor:pointer}\n"], components: [{ type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { type: i1.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { type: i1.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { type: i1.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { type: i1.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i1.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }], directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i2.IDEATranslatePipe } });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEANewPasswordPage, decorators: [{
49
+ type: Component,
50
+ args: [{ selector: 'idea-new-password', template: "<ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.CHOOSE_A_PASSWORD' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.YOU_NEED_TO_CHOOSE_A_NEW_PASSWORD' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <p class=\"errorBox\" *ngIf=\"errorMsg\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg }}\n </p>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\"></ion-icon>\n </ion-label>\n <ion-input\n type=\"password\"\n pattern=\".{8,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"new-password\"\n [clearOnEdit]=\"false\"\n [placeholder]=\"t._('IDEA_AUTH.PASSWORD')\"\n [title]=\"t._('IDEA_AUTH.CHOOSE_A_PASSWORD')\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"newPassword\"\n (keyup.enter)=\"confirmNewPassword()\"\n ></ion-input>\n </ion-item>\n <ion-button expand=\"block\" [title]=\"t._('IDEA_AUTH.CONFIRM_NEW_PASSWORD_HINT')\" (click)=\"confirmNewPassword()\">\n {{ 'IDEA_AUTH.CONFIRM_NEW_PASSWORD' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"t._('IDEA_AUTH.BACK_TO_SIGN_IN_HINT')\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n</ion-content>\n", styles: [".flexBox{background:var(--ion-color-white-shade)}.authCard{min-width:400px;max-width:550px;margin:0 10px;padding:20px;background-color:var(--ion-color-white);border:1px solid var(--ion-color-light);border-radius:10px;box-shadow:none;text-align:center}.authCard ion-img{width:150px;display:block;margin:0 auto}.authCard ion-card-title{font-family:auth-title;font-size:3em}.authCard ion-card-subtitle{font-family:auth-title;font-size:1.2em}.authCard ion-card-content{padding-top:16px}.authCard ion-card-content .errorBox{padding-left:10px;margin-bottom:20px;text-align:left;border-left:2px solid var(--ion-color-danger)}.authCard ion-card-content ion-item{--ion-item-background: var(--ion-color-white);--border-color: var(--ion-color-light)}.authCard ion-card-content ion-icon{padding-top:4px;padding-right:5px;font-size:1.3em}.authCard ion-card-content .agreementsAcceptanceRow{margin-top:15px;font-size:.9em}.authCard ion-card-content .agreementsAcceptanceRow ion-checkbox{vertical-align:bottom;margin-right:3px}.authCard ion-card-content ion-button{margin-top:15px}.authCard ion-card-content .smallCaseButton{text-transform:none;letter-spacing:normal;font-size:1em}@media only screen and (max-width: 500px){.authCard{background-color:transparent;border:none}}.ideaLogo{width:65px;margin:40px auto 0;cursor:pointer}\n"] }]
51
+ }], ctorParameters: function () { return [{ type: i1.NavController }, { type: i2.IDEATinCanService }, { type: i2.IDEAMessageService }, { type: i2.IDEALoadingService }, { type: i3.IDEAAuthService }, { type: i2.IDEATranslationsService }]; } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3UGFzc3dvcmQucGFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvYXV0aC9zcmMvbmV3UGFzc3dvcmQucGFnZS50cyIsIi4uLy4uLy4uLy4uL21vZHVsZXMvYXV0aC9zcmMvbmV3UGFzc3dvcmQucGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFXbEQsTUFBTSxPQUFPLG1CQUFtQjtJQWtCOUIsWUFDUyxPQUFzQixFQUN0QixFQUFxQixFQUNyQixPQUEyQixFQUMzQixPQUEyQixFQUMzQixJQUFxQixFQUNyQixDQUEwQjtRQUwxQixZQUFPLEdBQVAsT0FBTyxDQUFlO1FBQ3RCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQWlCO1FBQ3JCLE1BQUMsR0FBRCxDQUFDLENBQXlCO0lBQ2hDLENBQUM7SUFDRyxRQUFRO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsa0JBQWtCO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSTthQUNOLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ2hFLG1CQUFtQjthQUNsQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdEMsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUNBQXFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQzthQUNELE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDOztnSEF0RFUsbUJBQW1CO29HQUFuQixtQkFBbUIseURDWGhDLDZ5REErQ0E7MkZEcENhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IElERUFNZXNzYWdlU2VydmljZSwgSURFQUxvYWRpbmdTZXJ2aWNlLCBJREVBVGluQ2FuU2VydmljZSwgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5pbXBvcnQgeyBJREVBQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtbmV3LXBhc3N3b3JkJyxcbiAgdGVtcGxhdGVVcmw6ICduZXdQYXNzd29yZC5wYWdlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnYXV0aC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSURFQU5ld1Bhc3N3b3JkUGFnZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBUaGUgZW1haWwgYWRkcmVzcyB1c2VkIHRvIGlkZW50aWZ5IHRoZSBhY2NvdW50LlxuICAgKi9cbiAgcHVibGljIGVtYWlsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB0ZW1wb3JhcnkgcGFzc3dvcmQuXG4gICAqL1xuICBwdWJsaWMgcGFzc3dvcmQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBuZXcgcGFzc3dvcmQgZm9yIHRoZSBhY2NvdW50LlxuICAgKi9cbiAgcHVibGljIG5ld1Bhc3N3b3JkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZXJyb3IgbWVzc2FnZSB0byBkaXNwbGF5IGluIHRoZSBVSSwgaWYgYW55LlxuICAgKi9cbiAgcHVibGljIGVycm9yTXNnOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5hdkN0cmw6IE5hdkNvbnRyb2xsZXIsXG4gICAgcHVibGljIHRjOiBJREVBVGluQ2FuU2VydmljZSxcbiAgICBwdWJsaWMgbWVzc2FnZTogSURFQU1lc3NhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBsb2FkaW5nOiBJREVBTG9hZGluZ1NlcnZpY2UsXG4gICAgcHVibGljIGF1dGg6IElERUFBdXRoU2VydmljZSxcbiAgICBwdWJsaWMgdDogSURFQVRyYW5zbGF0aW9uc1NlcnZpY2VcbiAgKSB7fVxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5lbWFpbCA9IHRoaXMudGMuZ2V0KCdlbWFpbCcsIHRydWUpO1xuICAgIHRoaXMucGFzc3dvcmQgPSB0aGlzLnRjLmdldCgncGFzc3dvcmQnLCB0cnVlKTtcbiAgICBpZiAoIXRoaXMuZW1haWwgfHwgIXRoaXMucGFzc3dvcmQpIHRoaXMuZ29Ub0F1dGgoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maXJtIGEgbmV3IHBhc3N3b3JkIChhdXRoIGZsb3cgdGhhdCBmb2xsb3dzIGEgcmVnaXN0cmF0aW9uIG9yIGEgcGFzc3dvcmQgcmVzZXQpLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNvbmZpcm1OZXdQYXNzd29yZCgpIHtcbiAgICB0aGlzLmVycm9yTXNnID0gbnVsbDtcbiAgICBhd2FpdCB0aGlzLmxvYWRpbmcuc2hvdygpO1xuICAgIHRoaXMuYXV0aFxuICAgICAgLmNvbmZpcm1OZXdQYXNzd29yZCh0aGlzLmVtYWlsLCB0aGlzLnBhc3N3b3JkLCB0aGlzLm5ld1Bhc3N3b3JkKVxuICAgICAgLy8gd2UgYXJlIGxvZ2dlZCBpblxuICAgICAgLnRoZW4oKCkgPT4gd2luZG93LmxvY2F0aW9uLmFzc2lnbignJykpXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTXNnID0gdGhpcy50Ll8oJ0lERUFfQVVUSC5QQVNTV09SRF9QT0xJQ1lfVklPTEFUSU9OJywgeyBuOiA4IH0pO1xuICAgICAgICB0aGlzLm1lc3NhZ2UuZXJyb3IodGhpcy5lcnJvck1zZywgdHJ1ZSk7XG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoKCkgPT4gdGhpcy5sb2FkaW5nLmhpZGUoKSk7XG4gIH1cblxuICAvKipcbiAgICogR28gdG8gYXV0aCBwYWdlLlxuICAgKi9cbiAgcHVibGljIGdvVG9BdXRoKCkge1xuICAgIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZUJhY2soWydhdXRoJ10pO1xuICB9XG59XG4iLCI8aW9uLWNvbnRlbnQ+XG4gIDxmb3JtIGNsYXNzPVwiZmxleEJveFwiPlxuICAgIDxpb24tY2FyZCBjbGFzcz1cImF1dGhDYXJkXCI+XG4gICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICA8aW9uLWNhcmQtdGl0bGUgY29sb3I9XCJwcmltYXJ5XCI+e3sgJ0lERUFfQVVUSC5DSE9PU0VfQV9QQVNTV09SRCcgfCB0cmFuc2xhdGUgfX08L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+e3sgJ0lERUFfQVVUSC5ZT1VfTkVFRF9UT19DSE9PU0VfQV9ORVdfUEFTU1dPUkQnIHwgdHJhbnNsYXRlIH19PC9pb24tY2FyZC1zdWJ0aXRsZT5cbiAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxwIGNsYXNzPVwiZXJyb3JCb3hcIiAqbmdJZj1cImVycm9yTXNnXCI+XG4gICAgICAgICAgPGI+IHt7ICdJREVBX0FVVEguRVJST1InIHwgdHJhbnNsYXRlIH19LiA8L2I+XG4gICAgICAgICAge3sgZXJyb3JNc2cgfX1cbiAgICAgICAgPC9wPlxuICAgICAgICA8aW9uLWl0ZW0+XG4gICAgICAgICAgPGlvbi1sYWJlbCBwb3NpdGlvbj1cImlubGluZVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJrZXlcIiBjb2xvcj1cInByaW1hcnlcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICBwYXR0ZXJuPVwiLns4LH1cIlxuICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICAgICAgICAgIGF1dG9jb3JyZWN0PVwib2ZmXCJcbiAgICAgICAgICAgIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiXG4gICAgICAgICAgICBbY2xlYXJPbkVkaXRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInQuXygnSURFQV9BVVRILlBBU1NXT1JEJylcIlxuICAgICAgICAgICAgW3RpdGxlXT1cInQuXygnSURFQV9BVVRILkNIT09TRV9BX1BBU1NXT1JEJylcIlxuICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwibmV3UGFzc3dvcmRcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImNvbmZpcm1OZXdQYXNzd29yZCgpXCJcbiAgICAgICAgICA+PC9pb24taW5wdXQ+XG4gICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgW3RpdGxlXT1cInQuXygnSURFQV9BVVRILkNPTkZJUk1fTkVXX1BBU1NXT1JEX0hJTlQnKVwiIChjbGljayk9XCJjb25maXJtTmV3UGFzc3dvcmQoKVwiPlxuICAgICAgICAgIHt7ICdJREVBX0FVVEguQ09ORklSTV9ORVdfUEFTU1dPUkQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgIGV4cGFuZD1cImJsb2NrXCJcbiAgICAgICAgICBjbGFzcz1cInNtYWxsQ2FzZUJ1dHRvblwiXG4gICAgICAgICAgW3RpdGxlXT1cInQuXygnSURFQV9BVVRILkJBQ0tfVE9fU0lHTl9JTl9ISU5UJylcIlxuICAgICAgICAgIChjbGljayk9XCJnb1RvQXV0aCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdJREVBX0FVVEguQkFDS19UT19TSUdOX0lOJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cbiAgPC9mb3JtPlxuPC9pb24tY29udGVudD5cbiJdfQ==
@@ -0,0 +1,52 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@ionic/angular";
4
+ import * as i2 from "@idea-ionic/common";
5
+ import * as i3 from "./auth.service";
6
+ import * as i4 from "@angular/forms";
7
+ import * as i5 from "@angular/common";
8
+ export class IDEAResendLinkPage {
9
+ constructor(navCtrl, message, loading, auth, t) {
10
+ this.navCtrl = navCtrl;
11
+ this.message = message;
12
+ this.loading = loading;
13
+ this.auth = auth;
14
+ this.t = t;
15
+ }
16
+ /**
17
+ * Resend the link to confirm the email address.
18
+ */
19
+ async resendConfirmationLink() {
20
+ this.errorMsg = null;
21
+ if (!this.email) {
22
+ this.errorMsg = this.t._('IDEA_AUTH.VALID_EMAIL_OBLIGATORY');
23
+ this.message.error('IDEA_AUTH.SENDING_FAILED');
24
+ return;
25
+ }
26
+ await this.loading.show();
27
+ this.auth
28
+ .resendConfirmationCode(this.email)
29
+ .then(() => {
30
+ this.message.success('IDEA_AUTH.CONFIRMATION_LINK_SENT');
31
+ this.goToAuth();
32
+ })
33
+ .catch(() => {
34
+ this.errorMsg = this.t._('IDEA_AUTH.IS_THE_EMAIL_CORRECT');
35
+ this.message.error('IDEA_AUTH.SENDING_FAILED');
36
+ })
37
+ .finally(() => this.loading.hide());
38
+ }
39
+ /**
40
+ * Go to auth page.
41
+ */
42
+ goToAuth() {
43
+ this.navCtrl.navigateBack(['auth']);
44
+ }
45
+ }
46
+ IDEAResendLinkPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAResendLinkPage, deps: [{ token: i1.NavController }, { token: i2.IDEAMessageService }, { token: i2.IDEALoadingService }, { token: i3.IDEAAuthService }, { token: i2.IDEATranslationsService }], target: i0.ɵɵFactoryTarget.Component });
47
+ IDEAResendLinkPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: IDEAResendLinkPage, selector: "idea-resend-link", ngImport: i0, template: "<ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.CONFIRM_ACCOUNT' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.RESEND_CONFIRMATION_LINK_HINT' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <p class=\"errorBox\" *ngIf=\"errorMsg\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg }}\n </p>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\"> </ion-icon>\n </ion-label>\n <ion-input\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"t._('IDEA_AUTH.EMAIL')\"\n [title]=\"t._('IDEA_AUTH.EMAIL_HINT')\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"resendConfirmationLink()\"\n ></ion-input>\n </ion-item>\n <ion-button expand=\"block\" [title]=\"t._('IDEA_AUTH.RESEND_LINK_HINT')\" (click)=\"resendConfirmationLink()\">\n {{ 'IDEA_AUTH.RESEND_LINK' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"t._('IDEA_AUTH.BACK_TO_SIGN_IN_HINT')\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n</ion-content>\n", styles: [".flexBox{background:var(--ion-color-white-shade)}.authCard{min-width:400px;max-width:550px;margin:0 10px;padding:20px;background-color:var(--ion-color-white);border:1px solid var(--ion-color-light);border-radius:10px;box-shadow:none;text-align:center}.authCard ion-img{width:150px;display:block;margin:0 auto}.authCard ion-card-title{font-family:auth-title;font-size:3em}.authCard ion-card-subtitle{font-family:auth-title;font-size:1.2em}.authCard ion-card-content{padding-top:16px}.authCard ion-card-content .errorBox{padding-left:10px;margin-bottom:20px;text-align:left;border-left:2px solid var(--ion-color-danger)}.authCard ion-card-content ion-item{--ion-item-background: var(--ion-color-white);--border-color: var(--ion-color-light)}.authCard ion-card-content ion-icon{padding-top:4px;padding-right:5px;font-size:1.3em}.authCard ion-card-content .agreementsAcceptanceRow{margin-top:15px;font-size:.9em}.authCard ion-card-content .agreementsAcceptanceRow ion-checkbox{vertical-align:bottom;margin-right:3px}.authCard ion-card-content ion-button{margin-top:15px}.authCard ion-card-content .smallCaseButton{text-transform:none;letter-spacing:normal;font-size:1em}@media only screen and (max-width: 500px){.authCard{background-color:transparent;border:none}}.ideaLogo{width:65px;margin:40px auto 0;cursor:pointer}\n"], components: [{ type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { type: i1.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { type: i1.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { type: i1.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { type: i1.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i1.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }], directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i2.IDEATranslatePipe } });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEAResendLinkPage, decorators: [{
49
+ type: Component,
50
+ args: [{ selector: 'idea-resend-link', template: "<ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.CONFIRM_ACCOUNT' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.RESEND_CONFIRMATION_LINK_HINT' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <p class=\"errorBox\" *ngIf=\"errorMsg\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg }}\n </p>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\"> </ion-icon>\n </ion-label>\n <ion-input\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"t._('IDEA_AUTH.EMAIL')\"\n [title]=\"t._('IDEA_AUTH.EMAIL_HINT')\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"resendConfirmationLink()\"\n ></ion-input>\n </ion-item>\n <ion-button expand=\"block\" [title]=\"t._('IDEA_AUTH.RESEND_LINK_HINT')\" (click)=\"resendConfirmationLink()\">\n {{ 'IDEA_AUTH.RESEND_LINK' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"t._('IDEA_AUTH.BACK_TO_SIGN_IN_HINT')\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n</ion-content>\n", styles: [".flexBox{background:var(--ion-color-white-shade)}.authCard{min-width:400px;max-width:550px;margin:0 10px;padding:20px;background-color:var(--ion-color-white);border:1px solid var(--ion-color-light);border-radius:10px;box-shadow:none;text-align:center}.authCard ion-img{width:150px;display:block;margin:0 auto}.authCard ion-card-title{font-family:auth-title;font-size:3em}.authCard ion-card-subtitle{font-family:auth-title;font-size:1.2em}.authCard ion-card-content{padding-top:16px}.authCard ion-card-content .errorBox{padding-left:10px;margin-bottom:20px;text-align:left;border-left:2px solid var(--ion-color-danger)}.authCard ion-card-content ion-item{--ion-item-background: var(--ion-color-white);--border-color: var(--ion-color-light)}.authCard ion-card-content ion-icon{padding-top:4px;padding-right:5px;font-size:1.3em}.authCard ion-card-content .agreementsAcceptanceRow{margin-top:15px;font-size:.9em}.authCard ion-card-content .agreementsAcceptanceRow ion-checkbox{vertical-align:bottom;margin-right:3px}.authCard ion-card-content ion-button{margin-top:15px}.authCard ion-card-content .smallCaseButton{text-transform:none;letter-spacing:normal;font-size:1em}@media only screen and (max-width: 500px){.authCard{background-color:transparent;border:none}}.ideaLogo{width:65px;margin:40px auto 0;cursor:pointer}\n"] }]
51
+ }], ctorParameters: function () { return [{ type: i1.NavController }, { type: i2.IDEAMessageService }, { type: i2.IDEALoadingService }, { type: i3.IDEAAuthService }, { type: i2.IDEATranslationsService }]; } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZW5kTGluay5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbW9kdWxlcy9hdXRoL3NyYy9yZXNlbmRMaW5rLnBhZ2UudHMiLCIuLi8uLi8uLi8uLi9tb2R1bGVzL2F1dGgvc3JjL3Jlc2VuZExpbmsucGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFXMUMsTUFBTSxPQUFPLGtCQUFrQjtJQVU3QixZQUNTLE9BQXNCLEVBQ3RCLE9BQTJCLEVBQzNCLE9BQTJCLEVBQzNCLElBQXFCLEVBQ3JCLENBQTBCO1FBSjFCLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFDM0IsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFDckIsTUFBQyxHQUFELENBQUMsQ0FBeUI7SUFDaEMsQ0FBQztJQUVKOztPQUVHO0lBQ0ksS0FBSyxDQUFDLHNCQUFzQjtRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0NBQWtDLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQy9DLE9BQU87U0FDUjtRQUNELE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSTthQUNOLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDbEMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNULElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUM7YUFDRCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7K0dBL0NVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHdEQ1gvQiwyekRBK0NBOzJGRHBDYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0Usa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgSURFQU1lc3NhZ2VTZXJ2aWNlLCBJREVBTG9hZGluZ1NlcnZpY2UsIElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLXJlc2VuZC1saW5rJyxcbiAgdGVtcGxhdGVVcmw6ICdyZXNlbmRMaW5rLnBhZ2UuaHRtbCcsXG4gIHN0eWxlVXJsczogWydhdXRoLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBUmVzZW5kTGlua1BhZ2Uge1xuICAvKipcbiAgICogVGhlIGVtYWlsIGFkZHJlc3MgdXNlZCB0byBpZGVudGlmeSB0aGUgYWNjb3VudC5cbiAgICovXG4gIHB1YmxpYyBlbWFpbDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVycm9yIG1lc3NhZ2UgdG8gZGlzcGxheSBpbiB0aGUgVUksIGlmIGFueS5cbiAgICovXG4gIHB1YmxpYyBlcnJvck1zZzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuYXZDdHJsOiBOYXZDb250cm9sbGVyLFxuICAgIHB1YmxpYyBtZXNzYWdlOiBJREVBTWVzc2FnZVNlcnZpY2UsXG4gICAgcHVibGljIGxvYWRpbmc6IElERUFMb2FkaW5nU2VydmljZSxcbiAgICBwdWJsaWMgYXV0aDogSURFQUF1dGhTZXJ2aWNlLFxuICAgIHB1YmxpYyB0OiBJREVBVHJhbnNsYXRpb25zU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJlc2VuZCB0aGUgbGluayB0byBjb25maXJtIHRoZSBlbWFpbCBhZGRyZXNzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlc2VuZENvbmZpcm1hdGlvbkxpbmsoKSB7XG4gICAgdGhpcy5lcnJvck1zZyA9IG51bGw7XG4gICAgaWYgKCF0aGlzLmVtYWlsKSB7XG4gICAgICB0aGlzLmVycm9yTXNnID0gdGhpcy50Ll8oJ0lERUFfQVVUSC5WQUxJRF9FTUFJTF9PQkxJR0FUT1JZJyk7XG4gICAgICB0aGlzLm1lc3NhZ2UuZXJyb3IoJ0lERUFfQVVUSC5TRU5ESU5HX0ZBSUxFRCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmxvYWRpbmcuc2hvdygpO1xuICAgIHRoaXMuYXV0aFxuICAgICAgLnJlc2VuZENvbmZpcm1hdGlvbkNvZGUodGhpcy5lbWFpbClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5tZXNzYWdlLnN1Y2Nlc3MoJ0lERUFfQVVUSC5DT05GSVJNQVRJT05fTElOS19TRU5UJyk7XG4gICAgICAgIHRoaXMuZ29Ub0F1dGgoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yTXNnID0gdGhpcy50Ll8oJ0lERUFfQVVUSC5JU19USEVfRU1BSUxfQ09SUkVDVCcpO1xuICAgICAgICB0aGlzLm1lc3NhZ2UuZXJyb3IoJ0lERUFfQVVUSC5TRU5ESU5HX0ZBSUxFRCcpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMubG9hZGluZy5oaWRlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdvIHRvIGF1dGggcGFnZS5cbiAgICovXG4gIHB1YmxpYyBnb1RvQXV0aCgpIHtcbiAgICB0aGlzLm5hdkN0cmwubmF2aWdhdGVCYWNrKFsnYXV0aCddKTtcbiAgfVxufVxuIiwiPGlvbi1jb250ZW50PlxuICA8Zm9ybSBjbGFzcz1cImZsZXhCb3hcIj5cbiAgICA8aW9uLWNhcmQgY2xhc3M9XCJhdXRoQ2FyZFwiPlxuICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgPGlvbi1jYXJkLXRpdGxlIGNvbG9yPVwicHJpbWFyeVwiPnt7ICdJREVBX0FVVEguQ09ORklSTV9BQ0NPVU5UJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT57eyAnSURFQV9BVVRILlJFU0VORF9DT05GSVJNQVRJT05fTElOS19ISU5UJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWNhcmQtc3VidGl0bGU+XG4gICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICA8cCBjbGFzcz1cImVycm9yQm94XCIgKm5nSWY9XCJlcnJvck1zZ1wiPlxuICAgICAgICAgIDxiPiB7eyAnSURFQV9BVVRILkVSUk9SJyB8IHRyYW5zbGF0ZSB9fS4gPC9iPlxuICAgICAgICAgIHt7IGVycm9yTXNnIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGlvbi1pdGVtPlxuICAgICAgICAgIDxpb24tbGFiZWwgcG9zaXRpb249XCJpbmxpbmVcIj5cbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwicGVyc29uLWNpcmNsZVwiIGNvbG9yPVwicHJpbWFyeVwiPiA8L2lvbi1pY29uPlxuICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJlbWFpbFwiXG4gICAgICAgICAgICBpbnB1dG1vZGU9XCJlbWFpbFwiXG4gICAgICAgICAgICBwYXR0ZXJuPVwiW0EtWmEtejAtOS5fJSstXXsyLH1AW2EtekEtWi1fLl17Mix9Wy5dezF9W2EtekEtWl17Mix9XCJcbiAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXG4gICAgICAgICAgICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgICAgICAgICBhdXRvY29tcGxldGU9XCJlbWFpbFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidC5fKCdJREVBX0FVVEguRU1BSUwnKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwidC5fKCdJREVBX0FVVEguRU1BSUxfSElOVCcpXCJcbiAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVtYWlsXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJyZXNlbmRDb25maXJtYXRpb25MaW5rKClcIlxuICAgICAgICAgID48L2lvbi1pbnB1dD5cbiAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBbdGl0bGVdPVwidC5fKCdJREVBX0FVVEguUkVTRU5EX0xJTktfSElOVCcpXCIgKGNsaWNrKT1cInJlc2VuZENvbmZpcm1hdGlvbkxpbmsoKVwiPlxuICAgICAgICAgIHt7ICdJREVBX0FVVEguUkVTRU5EX0xJTksnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgIGV4cGFuZD1cImJsb2NrXCJcbiAgICAgICAgICBjbGFzcz1cInNtYWxsQ2FzZUJ1dHRvblwiXG4gICAgICAgICAgW3RpdGxlXT1cInQuXygnSURFQV9BVVRILkJBQ0tfVE9fU0lHTl9JTl9ISU5UJylcIlxuICAgICAgICAgIChjbGljayk9XCJnb1RvQXV0aCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdJREVBX0FVVEguQkFDS19UT19TSUdOX0lOJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cbiAgPC9mb3JtPlxuPC9pb24tY29udGVudD5cbiJdfQ==
@@ -0,0 +1,91 @@
1
+ import { Component } from '@angular/core';
2
+ import { Plugins } from '@capacitor/core';
3
+ import { environment as env } from '@env';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ionic/angular";
6
+ import * as i2 from "@idea-ionic/common";
7
+ import * as i3 from "./auth.service";
8
+ import * as i4 from "@angular/common";
9
+ import * as i5 from "@angular/forms";
10
+ const { Browser } = Plugins;
11
+ export class IDEASignInPage {
12
+ constructor(navCtrl, tc, message, loading, auth, t) {
13
+ this.navCtrl = navCtrl;
14
+ this.tc = tc;
15
+ this.message = message;
16
+ this.loading = loading;
17
+ this.auth = auth;
18
+ this.t = t;
19
+ this.title = env.idea.app.title;
20
+ this.registrationPossible = env.idea.auth.registrationIsPossible;
21
+ this.hasIntroPage = env.idea.app.hasIntroPage;
22
+ this.website = env.idea.website;
23
+ this.agreementsCheck = true;
24
+ }
25
+ ionViewDidEnter() {
26
+ // manage the scenario in which we just created a new account (show a explanatory message: email must be confirmed)
27
+ if (this.tc.get('newAccountRegistered')) {
28
+ this.newAccountRegistered = true;
29
+ this.email = this.tc.get('newAccountRegistered', true);
30
+ }
31
+ }
32
+ /**
33
+ * Sign-in with the auth details provided.
34
+ */
35
+ async login() {
36
+ if (!this.agreementsCheck)
37
+ return;
38
+ this.errorMsg = null;
39
+ await this.loading.show();
40
+ this.auth
41
+ .login(this.email, this.password)
42
+ .then(needNewPassword => {
43
+ if (needNewPassword) {
44
+ this.tc.set('email', this.email);
45
+ this.tc.set('password', this.password);
46
+ this.navCtrl.navigateForward(['auth/new-password']);
47
+ }
48
+ else
49
+ window.location.assign(''); // hard reload
50
+ })
51
+ .catch(err => {
52
+ if (err.name === 'UserNotConfirmedException')
53
+ this.errorMsg = this.t._('IDEA_AUTH.CONFIRM_YOUR_EMAIL_TO_LOGIN');
54
+ this.message.error('IDEA_AUTH.AUTHENTICATION_FAILED');
55
+ })
56
+ .finally(() => this.loading.hide());
57
+ }
58
+ /**
59
+ * Go to the homepage.
60
+ */
61
+ goToIntro() {
62
+ this.navCtrl.navigateBack(['intro']);
63
+ }
64
+ /**
65
+ * Go to the forgot password page.
66
+ */
67
+ goToForgotPassword() {
68
+ this.navCtrl.navigateForward(['auth/forgot-password']);
69
+ }
70
+ /**
71
+ * Go to registration page.
72
+ */
73
+ goToRegistration() {
74
+ this.tc.set('email', this.email);
75
+ this.tc.set('password', this.password);
76
+ this.navCtrl.navigateForward(['auth', 'sign-up']);
77
+ }
78
+ /**
79
+ * Open a URL in the browser.
80
+ */
81
+ openLink(url) {
82
+ Browser.open({ url });
83
+ }
84
+ }
85
+ IDEASignInPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEASignInPage, deps: [{ token: i1.NavController }, { token: i2.IDEATinCanService }, { token: i2.IDEAMessageService }, { token: i2.IDEALoadingService }, { token: i3.IDEAAuthService }, { token: i2.IDEATranslationsService }], target: i0.ɵɵFactoryTarget.Component });
86
+ IDEASignInPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: IDEASignInPage, selector: "idea-sign-in", ngImport: i0, template: "<ion-content>\n <ion-card color=\"warning\" *ngIf=\"newAccountRegistered\">\n <ion-card-content>{{ 'IDEA_AUTH.CONFIRM_YOUR_EMAIL_TO_LOGIN' | translate }}</ion-card-content>\n </ion-card>\n <form class=\"flexBox\">\n <div>\n <ion-card class=\"authCard\">\n <ion-img\n [title]=\"t._('IDEA_AUTH.SERVICE_LOGO')\"\n [src]=\"tc.get('darkMode') ? 'assets/icons/icon-auth-alt.svg' : 'assets/icons/icon-auth.svg'\"\n ></ion-img>\n <ion-card-header>\n <ion-card-title color=\"primary\" *ngIf=\"title\">{{ title }}</ion-card-title>\n <ion-card-subtitle *ngIf=\"t._('IDEA_VARIABLES.TAGLINE')\">\n {{ 'IDEA_VARIABLES.TAGLINE' | translate }}\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <p class=\"errorBox\" *ngIf=\"errorMsg\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg }}\n </p>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\"> </ion-icon>\n </ion-label>\n <ion-input\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"t._('IDEA_AUTH.EMAIL')\"\n [title]=\"t._('IDEA_AUTH.EMAIL_HINT')\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"login()\"\n ></ion-input>\n </ion-item>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\"></ion-icon>\n </ion-label>\n <ion-input\n id=\"current-password\"\n type=\"password\"\n pattern=\".{8,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"current-password\"\n [clearOnEdit]=\"false\"\n [placeholder]=\"t._('IDEA_AUTH.PASSWORD')\"\n [title]=\"t._('IDEA_AUTH.PASSWORD_HINT')\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"password\"\n (keyup.enter)=\"login()\"\n ></ion-input>\n </ion-item>\n <ion-row\n class=\"agreementsAcceptanceRow\"\n *ngIf=\"\n !registrationPossible &&\n (t._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL') || t._('IDEA_VARIABLES.PRIVACY_POLICY_URL'))\n \"\n >\n <ion-col>\n <ion-checkbox\n size=\"small\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"agreementsCheck\"\n ></ion-checkbox>\n {{ 'IDEA_AUTH.AGREEMENTS_CHECK_LOGIN' | translate }}:\n <a\n ion-text\n color=\"primary\"\n target=\"_blank\"\n *ngIf=\"t._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')\"\n [title]=\"t._('IDEA_AUTH.TERMS_AND_CONDITIONS_HINT')\"\n [href]=\"t._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')\"\n >\n {{ 'IDEA_AUTH.TERMS_AND_CONDITIONS' | translate }}\n </a>\n <ion-text\n *ngIf=\"\n t._('IDEA_VARIABLES.PRIVACY_POLICY_URL') && t._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')\n \"\n >\n &\n </ion-text>\n <a\n ion-text\n color=\"primary\"\n target=\"_blank\"\n *ngIf=\"t._('IDEA_VARIABLES.PRIVACY_POLICY_URL')\"\n [title]=\"t._('IDEA_AUTH.PRIVACY_POLICY_HINT')\"\n [href]=\"t._('IDEA_VARIABLES.PRIVACY_POLICY_URL')\"\n >\n {{ 'IDEA_AUTH.PRIVACY_POLICY' | translate }}\n </a>\n </ion-col>\n </ion-row>\n <ion-button\n expand=\"block\"\n [disabled]=\"!agreementsCheck\"\n [title]=\"t._('IDEA_AUTH.SIGN_IN_HINT')\"\n (click)=\"login()\"\n >\n {{ 'IDEA_AUTH.SIGN_IN' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n *ngIf=\"registrationPossible\"\n [title]=\"t._('IDEA_AUTH.CREATE_AN_ACCOUNT_HINT')\"\n (click)=\"goToRegistration()\"\n >\n {{ 'IDEA_AUTH.CREATE_AN_ACCOUNT' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"t._('IDEA_AUTH.I_FORGOT_MY_PASSWORD_HINT')\"\n (click)=\"goToForgotPassword()\"\n >\n {{ 'IDEA_AUTH.I_FORGOT_MY_PASSWORD' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n color=\"medium\"\n class=\"smallCaseButton\"\n *ngIf=\"hasIntroPage\"\n [title]=\"t._('IDEA_AUTH.BACK_TO_INTRO_HINT')\"\n (click)=\"goToIntro()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_INTRO' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n <ion-img\n class=\"ideaLogo\"\n *ngIf=\"website\"\n [src]=\"tc.get('darkMode') ? './assets/icons/idea-alt.png' : './assets/icons/idea.png'\"\n [title]=\"t._('IDEA_AUTH.IDEA_TAGLINE')\"\n (click)=\"openLink(website)\"\n ></ion-img>\n </div>\n </form>\n</ion-content>\n", styles: [".flexBox{background:var(--ion-color-white-shade)}.authCard{min-width:400px;max-width:550px;margin:0 10px;padding:20px;background-color:var(--ion-color-white);border:1px solid var(--ion-color-light);border-radius:10px;box-shadow:none;text-align:center}.authCard ion-img{width:150px;display:block;margin:0 auto}.authCard ion-card-title{font-family:auth-title;font-size:3em}.authCard ion-card-subtitle{font-family:auth-title;font-size:1.2em}.authCard ion-card-content{padding-top:16px}.authCard ion-card-content .errorBox{padding-left:10px;margin-bottom:20px;text-align:left;border-left:2px solid var(--ion-color-danger)}.authCard ion-card-content ion-item{--ion-item-background: var(--ion-color-white);--border-color: var(--ion-color-light)}.authCard ion-card-content ion-icon{padding-top:4px;padding-right:5px;font-size:1.3em}.authCard ion-card-content .agreementsAcceptanceRow{margin-top:15px;font-size:.9em}.authCard ion-card-content .agreementsAcceptanceRow ion-checkbox{vertical-align:bottom;margin-right:3px}.authCard ion-card-content ion-button{margin-top:15px}.authCard ion-card-content .smallCaseButton{text-transform:none;letter-spacing:normal;font-size:1em}@media only screen and (max-width: 500px){.authCard{background-color:transparent;border:none}}.ideaLogo{width:65px;margin:40px auto 0;cursor:pointer}\n"], components: [{ type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { type: i1.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { type: i1.IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { type: i1.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { type: i1.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { type: i1.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i1.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i1.IonRow, selector: "ion-row" }, { type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i1.IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "indeterminate", "mode", "name", "value"] }, { type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i5.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }], pipes: { "translate": i2.IDEATranslatePipe } });
87
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEASignInPage, decorators: [{
88
+ type: Component,
89
+ args: [{ selector: 'idea-sign-in', template: "<ion-content>\n <ion-card color=\"warning\" *ngIf=\"newAccountRegistered\">\n <ion-card-content>{{ 'IDEA_AUTH.CONFIRM_YOUR_EMAIL_TO_LOGIN' | translate }}</ion-card-content>\n </ion-card>\n <form class=\"flexBox\">\n <div>\n <ion-card class=\"authCard\">\n <ion-img\n [title]=\"t._('IDEA_AUTH.SERVICE_LOGO')\"\n [src]=\"tc.get('darkMode') ? 'assets/icons/icon-auth-alt.svg' : 'assets/icons/icon-auth.svg'\"\n ></ion-img>\n <ion-card-header>\n <ion-card-title color=\"primary\" *ngIf=\"title\">{{ title }}</ion-card-title>\n <ion-card-subtitle *ngIf=\"t._('IDEA_VARIABLES.TAGLINE')\">\n {{ 'IDEA_VARIABLES.TAGLINE' | translate }}\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <p class=\"errorBox\" *ngIf=\"errorMsg\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg }}\n </p>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\"> </ion-icon>\n </ion-label>\n <ion-input\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"email\"\n [placeholder]=\"t._('IDEA_AUTH.EMAIL')\"\n [title]=\"t._('IDEA_AUTH.EMAIL_HINT')\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"login()\"\n ></ion-input>\n </ion-item>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\"></ion-icon>\n </ion-label>\n <ion-input\n id=\"current-password\"\n type=\"password\"\n pattern=\".{8,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"current-password\"\n [clearOnEdit]=\"false\"\n [placeholder]=\"t._('IDEA_AUTH.PASSWORD')\"\n [title]=\"t._('IDEA_AUTH.PASSWORD_HINT')\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"password\"\n (keyup.enter)=\"login()\"\n ></ion-input>\n </ion-item>\n <ion-row\n class=\"agreementsAcceptanceRow\"\n *ngIf=\"\n !registrationPossible &&\n (t._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL') || t._('IDEA_VARIABLES.PRIVACY_POLICY_URL'))\n \"\n >\n <ion-col>\n <ion-checkbox\n size=\"small\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"agreementsCheck\"\n ></ion-checkbox>\n {{ 'IDEA_AUTH.AGREEMENTS_CHECK_LOGIN' | translate }}:\n <a\n ion-text\n color=\"primary\"\n target=\"_blank\"\n *ngIf=\"t._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')\"\n [title]=\"t._('IDEA_AUTH.TERMS_AND_CONDITIONS_HINT')\"\n [href]=\"t._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')\"\n >\n {{ 'IDEA_AUTH.TERMS_AND_CONDITIONS' | translate }}\n </a>\n <ion-text\n *ngIf=\"\n t._('IDEA_VARIABLES.PRIVACY_POLICY_URL') && t._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')\n \"\n >\n &\n </ion-text>\n <a\n ion-text\n color=\"primary\"\n target=\"_blank\"\n *ngIf=\"t._('IDEA_VARIABLES.PRIVACY_POLICY_URL')\"\n [title]=\"t._('IDEA_AUTH.PRIVACY_POLICY_HINT')\"\n [href]=\"t._('IDEA_VARIABLES.PRIVACY_POLICY_URL')\"\n >\n {{ 'IDEA_AUTH.PRIVACY_POLICY' | translate }}\n </a>\n </ion-col>\n </ion-row>\n <ion-button\n expand=\"block\"\n [disabled]=\"!agreementsCheck\"\n [title]=\"t._('IDEA_AUTH.SIGN_IN_HINT')\"\n (click)=\"login()\"\n >\n {{ 'IDEA_AUTH.SIGN_IN' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n *ngIf=\"registrationPossible\"\n [title]=\"t._('IDEA_AUTH.CREATE_AN_ACCOUNT_HINT')\"\n (click)=\"goToRegistration()\"\n >\n {{ 'IDEA_AUTH.CREATE_AN_ACCOUNT' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"t._('IDEA_AUTH.I_FORGOT_MY_PASSWORD_HINT')\"\n (click)=\"goToForgotPassword()\"\n >\n {{ 'IDEA_AUTH.I_FORGOT_MY_PASSWORD' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n color=\"medium\"\n class=\"smallCaseButton\"\n *ngIf=\"hasIntroPage\"\n [title]=\"t._('IDEA_AUTH.BACK_TO_INTRO_HINT')\"\n (click)=\"goToIntro()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_INTRO' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n <ion-img\n class=\"ideaLogo\"\n *ngIf=\"website\"\n [src]=\"tc.get('darkMode') ? './assets/icons/idea-alt.png' : './assets/icons/idea.png'\"\n [title]=\"t._('IDEA_AUTH.IDEA_TAGLINE')\"\n (click)=\"openLink(website)\"\n ></ion-img>\n </div>\n </form>\n</ion-content>\n", styles: [".flexBox{background:var(--ion-color-white-shade)}.authCard{min-width:400px;max-width:550px;margin:0 10px;padding:20px;background-color:var(--ion-color-white);border:1px solid var(--ion-color-light);border-radius:10px;box-shadow:none;text-align:center}.authCard ion-img{width:150px;display:block;margin:0 auto}.authCard ion-card-title{font-family:auth-title;font-size:3em}.authCard ion-card-subtitle{font-family:auth-title;font-size:1.2em}.authCard ion-card-content{padding-top:16px}.authCard ion-card-content .errorBox{padding-left:10px;margin-bottom:20px;text-align:left;border-left:2px solid var(--ion-color-danger)}.authCard ion-card-content ion-item{--ion-item-background: var(--ion-color-white);--border-color: var(--ion-color-light)}.authCard ion-card-content ion-icon{padding-top:4px;padding-right:5px;font-size:1.3em}.authCard ion-card-content .agreementsAcceptanceRow{margin-top:15px;font-size:.9em}.authCard ion-card-content .agreementsAcceptanceRow ion-checkbox{vertical-align:bottom;margin-right:3px}.authCard ion-card-content ion-button{margin-top:15px}.authCard ion-card-content .smallCaseButton{text-transform:none;letter-spacing:normal;font-size:1em}@media only screen and (max-width: 500px){.authCard{background-color:transparent;border:none}}.ideaLogo{width:65px;margin:40px auto 0;cursor:pointer}\n"] }]
90
+ }], ctorParameters: function () { return [{ type: i1.NavController }, { type: i2.IDEATinCanService }, { type: i2.IDEAMessageService }, { type: i2.IDEALoadingService }, { type: i3.IDEAAuthService }, { type: i2.IDEATranslationsService }]; } });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbkluLnBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2R1bGVzL2F1dGgvc3JjL3NpZ25Jbi5wYWdlLnRzIiwiLi4vLi4vLi4vLi4vbW9kdWxlcy9hdXRoL3NyYy9zaWduSW4ucGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBTTFDLE9BQU8sRUFBRSxXQUFXLElBQUksR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBTDFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFZNUIsTUFBTSxPQUFPLGNBQWM7SUFzQ3pCLFlBQ1MsT0FBc0IsRUFDdEIsRUFBcUIsRUFDckIsT0FBMkIsRUFDM0IsT0FBMkIsRUFDM0IsSUFBcUIsRUFDckIsQ0FBMEI7UUFMMUIsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUN0QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFpQjtRQUNyQixNQUFDLEdBQUQsQ0FBQyxDQUF5QjtRQUVqQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUM7UUFDakUsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7UUFDOUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0lBQ00sZUFBZTtRQUNwQixtSEFBbUg7UUFDbkgsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7WUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZTtZQUFFLE9BQU87UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJO2FBQ04sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDdEIsSUFBSSxlQUFlLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO2FBQ3JEOztnQkFBTSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWM7UUFDbkQsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1gsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLDJCQUEyQjtnQkFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7WUFDaEgsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUM7YUFDRCxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNJLFNBQVM7UUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNEOztPQUVHO0lBQ0ksa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRDs7T0FFRztJQUNJLGdCQUFnQjtRQUNyQixJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRLENBQUMsR0FBVztRQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN4QixDQUFDOzsyR0E3R1UsY0FBYzsrRkFBZCxjQUFjLG9EQ2YzQiwrMExBMEpBOzJGRDNJYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBQbHVnaW5zIH0gZnJvbSAnQGNhcGFjaXRvci9jb3JlJztcbmNvbnN0IHsgQnJvd3NlciB9ID0gUGx1Z2lucztcbmltcG9ydCB7IElERUFNZXNzYWdlU2VydmljZSwgSURFQUxvYWRpbmdTZXJ2aWNlLCBJREVBVGluQ2FuU2VydmljZSwgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5pbXBvcnQgeyBJREVBQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbmltcG9ydCB7IGVudmlyb25tZW50IGFzIGVudiB9IGZyb20gJ0BlbnYnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLXNpZ24taW4nLFxuICB0ZW1wbGF0ZVVybDogJ3NpZ25Jbi5wYWdlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnYXV0aC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSURFQVNpZ25JblBhZ2Uge1xuICAvKipcbiAgICogVGhlIHRpdGxlIG9mIHRoZSBwcm9qZWN0LlxuICAgKi9cbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBwdWJsaWMgcmVnaXN0cmF0aW9uIGlzIGFsbG93ZWQgZm9yIHRoZSBwcm9qZWN0LlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdHJhdGlvblBvc3NpYmxlOiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgcHJvamVjdCBoYXMgYW4gaW50cm8gKGV4cGxhbmF0b3J5KSBwYWdlLlxuICAgKi9cbiAgcHVibGljIGhhc0ludHJvUGFnZTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBVUkwgdG8gSURFQSdzIHdlYnNpdGUuXG4gICAqL1xuICBwdWJsaWMgd2Vic2l0ZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVtYWlsIGFkZHJlc3MgdG8gaWRlbnRpZnkgYSB1c2VyLlxuICAgKi9cbiAgcHVibGljIGVtYWlsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcGFzc3dvcmQgdG8gbG9naW4gZm9yIHRoZSBlbWFpbCBzZWxlY3RlZC5cbiAgICovXG4gIHB1YmxpYyBwYXNzd29yZDogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgYWdyZWVtZW50cyBoYXZlIGJlZW4gYWNjZXB0ZWQuXG4gICAqL1xuICBwdWJsaWMgYWdyZWVtZW50c0NoZWNrOiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBhIG5ldyBhY2NvdW50IHdhcyBqdXN0IGNyZWF0ZWQgdGhyb3VnaCB0aGUgU2lnblVwIHBhZ2UuXG4gICAqL1xuICBwdWJsaWMgbmV3QWNjb3VudFJlZ2lzdGVyZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgZXJyb3IgbWVzc2FnZSB0byBkaXNwbGF5IGluIHRoZSBVSSwgaWYgYW55LlxuICAgKi9cbiAgcHVibGljIGVycm9yTXNnOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5hdkN0cmw6IE5hdkNvbnRyb2xsZXIsXG4gICAgcHVibGljIHRjOiBJREVBVGluQ2FuU2VydmljZSxcbiAgICBwdWJsaWMgbWVzc2FnZTogSURFQU1lc3NhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBsb2FkaW5nOiBJREVBTG9hZGluZ1NlcnZpY2UsXG4gICAgcHVibGljIGF1dGg6IElERUFBdXRoU2VydmljZSxcbiAgICBwdWJsaWMgdDogSURFQVRyYW5zbGF0aW9uc1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy50aXRsZSA9IGVudi5pZGVhLmFwcC50aXRsZTtcbiAgICB0aGlzLnJlZ2lzdHJhdGlvblBvc3NpYmxlID0gZW52LmlkZWEuYXV0aC5yZWdpc3RyYXRpb25Jc1Bvc3NpYmxlO1xuICAgIHRoaXMuaGFzSW50cm9QYWdlID0gZW52LmlkZWEuYXBwLmhhc0ludHJvUGFnZTtcbiAgICB0aGlzLndlYnNpdGUgPSBlbnYuaWRlYS53ZWJzaXRlO1xuICAgIHRoaXMuYWdyZWVtZW50c0NoZWNrID0gdHJ1ZTtcbiAgfVxuICBwdWJsaWMgaW9uVmlld0RpZEVudGVyKCkge1xuICAgIC8vIG1hbmFnZSB0aGUgc2NlbmFyaW8gaW4gd2hpY2ggd2UganVzdCBjcmVhdGVkIGEgbmV3IGFjY291bnQgKHNob3cgYSBleHBsYW5hdG9yeSBtZXNzYWdlOiBlbWFpbCBtdXN0IGJlIGNvbmZpcm1lZClcbiAgICBpZiAodGhpcy50Yy5nZXQoJ25ld0FjY291bnRSZWdpc3RlcmVkJykpIHtcbiAgICAgIHRoaXMubmV3QWNjb3VudFJlZ2lzdGVyZWQgPSB0cnVlO1xuICAgICAgdGhpcy5lbWFpbCA9IHRoaXMudGMuZ2V0KCduZXdBY2NvdW50UmVnaXN0ZXJlZCcsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduLWluIHdpdGggdGhlIGF1dGggZGV0YWlscyBwcm92aWRlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBsb2dpbigpIHtcbiAgICBpZiAoIXRoaXMuYWdyZWVtZW50c0NoZWNrKSByZXR1cm47XG4gICAgdGhpcy5lcnJvck1zZyA9IG51bGw7XG4gICAgYXdhaXQgdGhpcy5sb2FkaW5nLnNob3coKTtcbiAgICB0aGlzLmF1dGhcbiAgICAgIC5sb2dpbih0aGlzLmVtYWlsLCB0aGlzLnBhc3N3b3JkKVxuICAgICAgLnRoZW4obmVlZE5ld1Bhc3N3b3JkID0+IHtcbiAgICAgICAgaWYgKG5lZWROZXdQYXNzd29yZCkge1xuICAgICAgICAgIHRoaXMudGMuc2V0KCdlbWFpbCcsIHRoaXMuZW1haWwpO1xuICAgICAgICAgIHRoaXMudGMuc2V0KCdwYXNzd29yZCcsIHRoaXMucGFzc3dvcmQpO1xuICAgICAgICAgIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZUZvcndhcmQoWydhdXRoL25ldy1wYXNzd29yZCddKTtcbiAgICAgICAgfSBlbHNlIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24oJycpOyAvLyBoYXJkIHJlbG9hZFxuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICBpZiAoZXJyLm5hbWUgPT09ICdVc2VyTm90Q29uZmlybWVkRXhjZXB0aW9uJykgdGhpcy5lcnJvck1zZyA9IHRoaXMudC5fKCdJREVBX0FVVEguQ09ORklSTV9ZT1VSX0VNQUlMX1RPX0xPR0lOJyk7XG4gICAgICAgIHRoaXMubWVzc2FnZS5lcnJvcignSURFQV9BVVRILkFVVEhFTlRJQ0FUSU9OX0ZBSUxFRCcpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMubG9hZGluZy5oaWRlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdvIHRvIHRoZSBob21lcGFnZS5cbiAgICovXG4gIHB1YmxpYyBnb1RvSW50cm8oKSB7XG4gICAgdGhpcy5uYXZDdHJsLm5hdmlnYXRlQmFjayhbJ2ludHJvJ10pO1xuICB9XG4gIC8qKlxuICAgKiBHbyB0byB0aGUgZm9yZ290IHBhc3N3b3JkIHBhZ2UuXG4gICAqL1xuICBwdWJsaWMgZ29Ub0ZvcmdvdFBhc3N3b3JkKCkge1xuICAgIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZUZvcndhcmQoWydhdXRoL2ZvcmdvdC1wYXNzd29yZCddKTtcbiAgfVxuICAvKipcbiAgICogR28gdG8gcmVnaXN0cmF0aW9uIHBhZ2UuXG4gICAqL1xuICBwdWJsaWMgZ29Ub1JlZ2lzdHJhdGlvbigpIHtcbiAgICB0aGlzLnRjLnNldCgnZW1haWwnLCB0aGlzLmVtYWlsKTtcbiAgICB0aGlzLnRjLnNldCgncGFzc3dvcmQnLCB0aGlzLnBhc3N3b3JkKTtcbiAgICB0aGlzLm5hdkN0cmwubmF2aWdhdGVGb3J3YXJkKFsnYXV0aCcsICdzaWduLXVwJ10pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gYSBVUkwgaW4gdGhlIGJyb3dzZXIuXG4gICAqL1xuICBwdWJsaWMgb3BlbkxpbmsodXJsOiBzdHJpbmcpIHtcbiAgICBCcm93c2VyLm9wZW4oeyB1cmwgfSk7XG4gIH1cbn1cbiIsIjxpb24tY29udGVudD5cbiAgPGlvbi1jYXJkIGNvbG9yPVwid2FybmluZ1wiICpuZ0lmPVwibmV3QWNjb3VudFJlZ2lzdGVyZWRcIj5cbiAgICA8aW9uLWNhcmQtY29udGVudD57eyAnSURFQV9BVVRILkNPTkZJUk1fWU9VUl9FTUFJTF9UT19MT0dJTicgfCB0cmFuc2xhdGUgfX08L2lvbi1jYXJkLWNvbnRlbnQ+XG4gIDwvaW9uLWNhcmQ+XG4gIDxmb3JtIGNsYXNzPVwiZmxleEJveFwiPlxuICAgIDxkaXY+XG4gICAgICA8aW9uLWNhcmQgY2xhc3M9XCJhdXRoQ2FyZFwiPlxuICAgICAgICA8aW9uLWltZ1xuICAgICAgICAgIFt0aXRsZV09XCJ0Ll8oJ0lERUFfQVVUSC5TRVJWSUNFX0xPR08nKVwiXG4gICAgICAgICAgW3NyY109XCJ0Yy5nZXQoJ2RhcmtNb2RlJykgPyAnYXNzZXRzL2ljb25zL2ljb24tYXV0aC1hbHQuc3ZnJyA6ICdhc3NldHMvaWNvbnMvaWNvbi1hdXRoLnN2ZydcIlxuICAgICAgICA+PC9pb24taW1nPlxuICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgIDxpb24tY2FyZC10aXRsZSBjb2xvcj1cInByaW1hcnlcIiAqbmdJZj1cInRpdGxlXCI+e3sgdGl0bGUgfX08L2lvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZSAqbmdJZj1cInQuXygnSURFQV9WQVJJQUJMRVMuVEFHTElORScpXCI+XG4gICAgICAgICAgICB7eyAnSURFQV9WQVJJQUJMRVMuVEFHTElORScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cbiAgICAgICAgPGlvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgPHAgY2xhc3M9XCJlcnJvckJveFwiICpuZ0lmPVwiZXJyb3JNc2dcIj5cbiAgICAgICAgICAgIDxiPiB7eyAnSURFQV9BVVRILkVSUk9SJyB8IHRyYW5zbGF0ZSB9fS4gPC9iPlxuICAgICAgICAgICAge3sgZXJyb3JNc2cgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGlvbi1pdGVtPlxuICAgICAgICAgICAgPGlvbi1sYWJlbCBwb3NpdGlvbj1cImlubGluZVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlcnNvbi1jaXJjbGVcIiBjb2xvcj1cInByaW1hcnlcIj4gPC9pb24taWNvbj5cbiAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiZW1haWxcIlxuICAgICAgICAgICAgICBpbnB1dG1vZGU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgIHBhdHRlcm49XCJbQS1aYS16MC05Ll8lKy1dezIsfUBbYS16QS1aLV8uXXsyLH1bLl17MX1bYS16QS1aXXsyLH1cIlxuICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBhdXRvY29ycmVjdD1cIm9mZlwiXG4gICAgICAgICAgICAgIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcbiAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwiZW1haWxcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidC5fKCdJREVBX0FVVEguRU1BSUwnKVwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCJ0Ll8oJ0lERUFfQVVUSC5FTUFJTF9ISU5UJylcIlxuICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImxvZ2luKClcIlxuICAgICAgICAgICAgPjwvaW9uLWlucHV0PlxuICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgPGlvbi1pdGVtPlxuICAgICAgICAgICAgPGlvbi1sYWJlbCBwb3NpdGlvbj1cImlubGluZVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImtleVwiIGNvbG9yPVwicHJpbWFyeVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAgICAgaWQ9XCJjdXJyZW50LXBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgcGF0dGVybj1cIi57OCx9XCJcbiAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcbiAgICAgICAgICAgICAgYXV0b2NvcnJlY3Q9XCJvZmZcIlxuICAgICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXG4gICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cImN1cnJlbnQtcGFzc3dvcmRcIlxuICAgICAgICAgICAgICBbY2xlYXJPbkVkaXRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidC5fKCdJREVBX0FVVEguUEFTU1dPUkQnKVwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCJ0Ll8oJ0lERUFfQVVUSC5QQVNTV09SRF9ISU5UJylcIlxuICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImxvZ2luKClcIlxuICAgICAgICAgICAgPjwvaW9uLWlucHV0PlxuICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgPGlvbi1yb3dcbiAgICAgICAgICAgIGNsYXNzPVwiYWdyZWVtZW50c0FjY2VwdGFuY2VSb3dcIlxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgIXJlZ2lzdHJhdGlvblBvc3NpYmxlICYmXG4gICAgICAgICAgICAgICh0Ll8oJ0lERUFfVkFSSUFCTEVTLlRFUk1TX0FORF9DT05ESVRJT05TX1VSTCcpIHx8IHQuXygnSURFQV9WQVJJQUJMRVMuUFJJVkFDWV9QT0xJQ1lfVVJMJykpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgICA8aW9uLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYWdyZWVtZW50c0NoZWNrXCJcbiAgICAgICAgICAgICAgPjwvaW9uLWNoZWNrYm94PlxuICAgICAgICAgICAgICB7eyAnSURFQV9BVVRILkFHUkVFTUVOVFNfQ0hFQ0tfTE9HSU4nIHwgdHJhbnNsYXRlIH19OlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGlvbi10ZXh0XG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwidC5fKCdJREVBX1ZBUklBQkxFUy5URVJNU19BTkRfQ09ORElUSU9OU19VUkwnKVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cInQuXygnSURFQV9BVVRILlRFUk1TX0FORF9DT05ESVRJT05TX0hJTlQnKVwiXG4gICAgICAgICAgICAgICAgW2hyZWZdPVwidC5fKCdJREVBX1ZBUklBQkxFUy5URVJNU19BTkRfQ09ORElUSU9OU19VUkwnKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyAnSURFQV9BVVRILlRFUk1TX0FORF9DT05ESVRJT05TJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDxpb24tdGV4dFxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICB0Ll8oJ0lERUFfVkFSSUFCTEVTLlBSSVZBQ1lfUE9MSUNZX1VSTCcpICYmIHQuXygnSURFQV9WQVJJQUJMRVMuVEVSTVNfQU5EX0NPTkRJVElPTlNfVVJMJylcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgJlxuICAgICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGlvbi10ZXh0XG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwidC5fKCdJREVBX1ZBUklBQkxFUy5QUklWQUNZX1BPTElDWV9VUkwnKVwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cInQuXygnSURFQV9BVVRILlBSSVZBQ1lfUE9MSUNZX0hJTlQnKVwiXG4gICAgICAgICAgICAgICAgW2hyZWZdPVwidC5fKCdJREVBX1ZBUklBQkxFUy5QUklWQUNZX1BPTElDWV9VUkwnKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyAnSURFQV9BVVRILlBSSVZBQ1lfUE9MSUNZJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWFncmVlbWVudHNDaGVja1wiXG4gICAgICAgICAgICBbdGl0bGVdPVwidC5fKCdJREVBX0FVVEguU0lHTl9JTl9ISU5UJylcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImxvZ2luKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdJREVBX0FVVEguU0lHTl9JTicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgICAgICBjbGFzcz1cInNtYWxsQ2FzZUJ1dHRvblwiXG4gICAgICAgICAgICAqbmdJZj1cInJlZ2lzdHJhdGlvblBvc3NpYmxlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJ0Ll8oJ0lERUFfQVVUSC5DUkVBVEVfQU5fQUNDT1VOVF9ISU5UJylcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9SZWdpc3RyYXRpb24oKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0lERUFfQVVUSC5DUkVBVEVfQU5fQUNDT1VOVCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgICAgICBjbGFzcz1cInNtYWxsQ2FzZUJ1dHRvblwiXG4gICAgICAgICAgICBbdGl0bGVdPVwidC5fKCdJREVBX0FVVEguSV9GT1JHT1RfTVlfUEFTU1dPUkRfSElOVCcpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJnb1RvRm9yZ290UGFzc3dvcmQoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ0lERUFfQVVUSC5JX0ZPUkdPVF9NWV9QQVNTV09SRCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgICAgICBjb2xvcj1cIm1lZGl1bVwiXG4gICAgICAgICAgICBjbGFzcz1cInNtYWxsQ2FzZUJ1dHRvblwiXG4gICAgICAgICAgICAqbmdJZj1cImhhc0ludHJvUGFnZVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwidC5fKCdJREVBX0FVVEguQkFDS19UT19JTlRST19ISU5UJylcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9JbnRybygpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnSURFQV9BVVRILkJBQ0tfVE9fSU5UUk8nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgICA8L2lvbi1jYXJkPlxuICAgICAgPGlvbi1pbWdcbiAgICAgICAgY2xhc3M9XCJpZGVhTG9nb1wiXG4gICAgICAgICpuZ0lmPVwid2Vic2l0ZVwiXG4gICAgICAgIFtzcmNdPVwidGMuZ2V0KCdkYXJrTW9kZScpID8gJy4vYXNzZXRzL2ljb25zL2lkZWEtYWx0LnBuZycgOiAnLi9hc3NldHMvaWNvbnMvaWRlYS5wbmcnXCJcbiAgICAgICAgW3RpdGxlXT1cInQuXygnSURFQV9BVVRILklERUFfVEFHTElORScpXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5MaW5rKHdlYnNpdGUpXCJcbiAgICAgID48L2lvbi1pbWc+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
@@ -0,0 +1,79 @@
1
+ import { Component } from '@angular/core';
2
+ import { isEmpty } from 'idea-toolbox';
3
+ import { environment as env } from '@env';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ionic/angular";
6
+ import * as i2 from "@idea-ionic/common";
7
+ import * as i3 from "./auth.service";
8
+ import * as i4 from "@angular/forms";
9
+ import * as i5 from "@angular/common";
10
+ export class IDEASignUpPage {
11
+ constructor(navCtrl, tc, message, loading, auth, t) {
12
+ this.navCtrl = navCtrl;
13
+ this.tc = tc;
14
+ this.message = message;
15
+ this.loading = loading;
16
+ this.auth = auth;
17
+ this.t = t;
18
+ this.email = this.tc.get('email', true);
19
+ this.password = this.tc.get('password', true);
20
+ this.agreementsCheck = false;
21
+ }
22
+ ngOnInit() {
23
+ if (!env.idea.auth.registrationIsPossible)
24
+ return this.goToAuth();
25
+ // if there isn't any agreement to agree to, set the check true
26
+ this.agreementsCheck =
27
+ this.t._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL') || this.t._('IDEA_VARIABLES.PRIVACY_POLICY_URL')
28
+ ? this.agreementsCheck
29
+ : true;
30
+ }
31
+ /**
32
+ * Register the new user in cognito (note DynamoDB still need to be managed).
33
+ */
34
+ async register() {
35
+ this.errorMsg = null;
36
+ // check the fields
37
+ if (isEmpty(this.email, 'email'))
38
+ this.errorMsg = this.t._('IDEA_AUTH.VALID_EMAIL_OBLIGATORY');
39
+ else if (!this.password || this.password.length < 8)
40
+ this.errorMsg = this.t._('IDEA_AUTH.PASSWORD_POLICY_VIOLATION', { n: 8 });
41
+ // output the error, if there was one
42
+ if (this.errorMsg)
43
+ return this.message.error('IDEA_AUTH.REGISTRATION_FAILED');
44
+ // start the registration
45
+ await this.loading.show();
46
+ this.auth
47
+ .register(this.email, this.password)
48
+ .then(() => {
49
+ this.message.success('IDEA_AUTH.REGISTRATION_COMPLETED');
50
+ this.tc.set('newAccountRegistered', this.email);
51
+ this.goToAuth();
52
+ })
53
+ .catch(err => {
54
+ // show the unexpected error on screen (english)
55
+ this.errorMsg = err.message;
56
+ this.message.error('IDEA_AUTH.REGISTRATION_FAILED');
57
+ })
58
+ .finally(() => this.loading.hide());
59
+ }
60
+ /**
61
+ * Go to the resend link page.
62
+ */
63
+ goToResendLink() {
64
+ this.navCtrl.navigateForward(['auth/resend-link']);
65
+ }
66
+ /**
67
+ * Go to auth page.
68
+ */
69
+ goToAuth() {
70
+ this.navCtrl.navigateBack(['auth']);
71
+ }
72
+ }
73
+ IDEASignUpPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEASignUpPage, deps: [{ token: i1.NavController }, { token: i2.IDEATinCanService }, { token: i2.IDEAMessageService }, { token: i2.IDEALoadingService }, { token: i3.IDEAAuthService }, { token: i2.IDEATranslationsService }], target: i0.ɵɵFactoryTarget.Component });
74
+ IDEASignUpPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: IDEASignUpPage, selector: "idea-sign-up", ngImport: i0, template: "<ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.NEW_ACCOUNT' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.REGISTER_A_NEW_ACCOUNT_TO_THE_SYSTEM' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <p class=\"errorBox\" *ngIf=\"errorMsg\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg }}\n </p>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\"> </ion-icon>\n </ion-label>\n <ion-input\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"off\"\n [placeholder]=\"t._('IDEA_AUTH.EMAIL')\"\n [title]=\"t._('IDEA_AUTH.REGISTRATION_EMAIL_HINT')\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"register()\"\n ></ion-input>\n </ion-item>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\"></ion-icon>\n </ion-label>\n <ion-input\n type=\"password\"\n pattern=\".{8,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"off\"\n [clearOnEdit]=\"false\"\n [placeholder]=\"t._('IDEA_AUTH.PASSWORD')\"\n [title]=\"t._('IDEA_AUTH.CHOOSE_A_PASSWORD')\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"password\"\n (keyup.enter)=\"register()\"\n ></ion-input>\n </ion-item>\n <ion-row\n class=\"agreementsAcceptanceRow\"\n *ngIf=\"t._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL') || t._('IDEA_VARIABLES.PRIVACY_POLICY_URL')\"\n >\n <ion-col>\n <ion-checkbox\n size=\"small\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"agreementsCheck\"\n ></ion-checkbox>\n {{ 'IDEA_AUTH.AGREEMENTS_CHECK_REGISTRATION' | translate }}:\n <a\n ion-text\n color=\"primary\"\n target=\"_blank\"\n *ngIf=\"t._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')\"\n [title]=\"t._('IDEA_AUTH.TERMS_AND_CONDITIONS_HINT')\"\n [href]=\"t._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')\"\n >\n {{ 'IDEA_AUTH.TERMS_AND_CONDITIONS' | translate }}\n </a>\n <ion-text\n *ngIf=\"\n t._('IDEA_VARIABLES.PRIVACY_POLICY_URL') && t._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')\n \"\n >\n &\n </ion-text>\n <a\n ion-text\n color=\"primary\"\n target=\"_blank\"\n *ngIf=\"t._('IDEA_VARIABLES.PRIVACY_POLICY_URL')\"\n [title]=\"t._('IDEA_AUTH.PRIVACY_POLICY_HINT')\"\n [href]=\"t._('IDEA_VARIABLES.PRIVACY_POLICY_URL')\"\n >\n {{ 'IDEA_AUTH.PRIVACY_POLICY' | translate }}\n </a>\n </ion-col>\n </ion-row>\n <ion-button\n expand=\"block\"\n [disabled]=\"!agreementsCheck\"\n [title]=\"t._('IDEA_AUTH.CREATE_AN_ACCOUNT_HINT')\"\n (click)=\"register()\"\n >\n {{ 'IDEA_AUTH.CREATE_AN_ACCOUNT' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"t._('IDEA_AUTH.HAVEN_T_RECEIVED_CONFIRMATION_LINK_HINT')\"\n (click)=\"goToResendLink()\"\n >\n {{ 'IDEA_AUTH.HAVEN_T_RECEIVED_CONFIRMATION_LINK' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"t._('IDEA_AUTH.BACK_TO_SIGN_IN_HINT')\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n</ion-content>\n", styles: [".flexBox{background:var(--ion-color-white-shade)}.authCard{min-width:400px;max-width:550px;margin:0 10px;padding:20px;background-color:var(--ion-color-white);border:1px solid var(--ion-color-light);border-radius:10px;box-shadow:none;text-align:center}.authCard ion-img{width:150px;display:block;margin:0 auto}.authCard ion-card-title{font-family:auth-title;font-size:3em}.authCard ion-card-subtitle{font-family:auth-title;font-size:1.2em}.authCard ion-card-content{padding-top:16px}.authCard ion-card-content .errorBox{padding-left:10px;margin-bottom:20px;text-align:left;border-left:2px solid var(--ion-color-danger)}.authCard ion-card-content ion-item{--ion-item-background: var(--ion-color-white);--border-color: var(--ion-color-light)}.authCard ion-card-content ion-icon{padding-top:4px;padding-right:5px;font-size:1.3em}.authCard ion-card-content .agreementsAcceptanceRow{margin-top:15px;font-size:.9em}.authCard ion-card-content .agreementsAcceptanceRow ion-checkbox{vertical-align:bottom;margin-right:3px}.authCard ion-card-content ion-button{margin-top:15px}.authCard ion-card-content .smallCaseButton{text-transform:none;letter-spacing:normal;font-size:1em}@media only screen and (max-width: 500px){.authCard{background-color:transparent;border:none}}.ideaLogo{width:65px;margin:40px auto 0;cursor:pointer}\n"], components: [{ type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i1.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { type: i1.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { type: i1.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { type: i1.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { type: i1.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i1.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i1.IonRow, selector: "ion-row" }, { type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i1.IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "indeterminate", "mode", "name", "value"] }, { type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }], directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }], pipes: { "translate": i2.IDEATranslatePipe } });
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: IDEASignUpPage, decorators: [{
76
+ type: Component,
77
+ args: [{ selector: 'idea-sign-up', template: "<ion-content>\n <form class=\"flexBox\">\n <ion-card class=\"authCard\">\n <ion-card-header>\n <ion-card-title color=\"primary\">{{ 'IDEA_AUTH.NEW_ACCOUNT' | translate }}</ion-card-title>\n <ion-card-subtitle>{{ 'IDEA_AUTH.REGISTER_A_NEW_ACCOUNT_TO_THE_SYSTEM' | translate }}</ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <p class=\"errorBox\" *ngIf=\"errorMsg\">\n <b> {{ 'IDEA_AUTH.ERROR' | translate }}. </b>\n {{ errorMsg }}\n </p>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"person-circle\" color=\"primary\"> </ion-icon>\n </ion-label>\n <ion-input\n type=\"email\"\n inputmode=\"email\"\n pattern=\"[A-Za-z0-9._%+-]{2,}@[a-zA-Z-_.]{2,}[.]{1}[a-zA-Z]{2,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"off\"\n [placeholder]=\"t._('IDEA_AUTH.EMAIL')\"\n [title]=\"t._('IDEA_AUTH.REGISTRATION_EMAIL_HINT')\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"email\"\n (keyup.enter)=\"register()\"\n ></ion-input>\n </ion-item>\n <ion-item>\n <ion-label position=\"inline\">\n <ion-icon name=\"key\" color=\"primary\"></ion-icon>\n </ion-label>\n <ion-input\n type=\"password\"\n pattern=\".{8,}\"\n spellcheck=\"false\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n autocomplete=\"off\"\n [clearOnEdit]=\"false\"\n [placeholder]=\"t._('IDEA_AUTH.PASSWORD')\"\n [title]=\"t._('IDEA_AUTH.CHOOSE_A_PASSWORD')\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"password\"\n (keyup.enter)=\"register()\"\n ></ion-input>\n </ion-item>\n <ion-row\n class=\"agreementsAcceptanceRow\"\n *ngIf=\"t._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL') || t._('IDEA_VARIABLES.PRIVACY_POLICY_URL')\"\n >\n <ion-col>\n <ion-checkbox\n size=\"small\"\n [ngModelOptions]=\"{ standalone: true }\"\n [(ngModel)]=\"agreementsCheck\"\n ></ion-checkbox>\n {{ 'IDEA_AUTH.AGREEMENTS_CHECK_REGISTRATION' | translate }}:\n <a\n ion-text\n color=\"primary\"\n target=\"_blank\"\n *ngIf=\"t._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')\"\n [title]=\"t._('IDEA_AUTH.TERMS_AND_CONDITIONS_HINT')\"\n [href]=\"t._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')\"\n >\n {{ 'IDEA_AUTH.TERMS_AND_CONDITIONS' | translate }}\n </a>\n <ion-text\n *ngIf=\"\n t._('IDEA_VARIABLES.PRIVACY_POLICY_URL') && t._('IDEA_VARIABLES.TERMS_AND_CONDITIONS_URL')\n \"\n >\n &\n </ion-text>\n <a\n ion-text\n color=\"primary\"\n target=\"_blank\"\n *ngIf=\"t._('IDEA_VARIABLES.PRIVACY_POLICY_URL')\"\n [title]=\"t._('IDEA_AUTH.PRIVACY_POLICY_HINT')\"\n [href]=\"t._('IDEA_VARIABLES.PRIVACY_POLICY_URL')\"\n >\n {{ 'IDEA_AUTH.PRIVACY_POLICY' | translate }}\n </a>\n </ion-col>\n </ion-row>\n <ion-button\n expand=\"block\"\n [disabled]=\"!agreementsCheck\"\n [title]=\"t._('IDEA_AUTH.CREATE_AN_ACCOUNT_HINT')\"\n (click)=\"register()\"\n >\n {{ 'IDEA_AUTH.CREATE_AN_ACCOUNT' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"t._('IDEA_AUTH.HAVEN_T_RECEIVED_CONFIRMATION_LINK_HINT')\"\n (click)=\"goToResendLink()\"\n >\n {{ 'IDEA_AUTH.HAVEN_T_RECEIVED_CONFIRMATION_LINK' | translate }}\n </ion-button>\n <ion-button\n fill=\"clear\"\n expand=\"block\"\n class=\"smallCaseButton\"\n [title]=\"t._('IDEA_AUTH.BACK_TO_SIGN_IN_HINT')\"\n (click)=\"goToAuth()\"\n >\n {{ 'IDEA_AUTH.BACK_TO_SIGN_IN' | translate }}\n </ion-button>\n </ion-card-content>\n </ion-card>\n </form>\n</ion-content>\n", styles: [".flexBox{background:var(--ion-color-white-shade)}.authCard{min-width:400px;max-width:550px;margin:0 10px;padding:20px;background-color:var(--ion-color-white);border:1px solid var(--ion-color-light);border-radius:10px;box-shadow:none;text-align:center}.authCard ion-img{width:150px;display:block;margin:0 auto}.authCard ion-card-title{font-family:auth-title;font-size:3em}.authCard ion-card-subtitle{font-family:auth-title;font-size:1.2em}.authCard ion-card-content{padding-top:16px}.authCard ion-card-content .errorBox{padding-left:10px;margin-bottom:20px;text-align:left;border-left:2px solid var(--ion-color-danger)}.authCard ion-card-content ion-item{--ion-item-background: var(--ion-color-white);--border-color: var(--ion-color-light)}.authCard ion-card-content ion-icon{padding-top:4px;padding-right:5px;font-size:1.3em}.authCard ion-card-content .agreementsAcceptanceRow{margin-top:15px;font-size:.9em}.authCard ion-card-content .agreementsAcceptanceRow ion-checkbox{vertical-align:bottom;margin-right:3px}.authCard ion-card-content ion-button{margin-top:15px}.authCard ion-card-content .smallCaseButton{text-transform:none;letter-spacing:normal;font-size:1em}@media only screen and (max-width: 500px){.authCard{background-color:transparent;border:none}}.ideaLogo{width:65px;margin:40px auto 0;cursor:pointer}\n"] }]
78
+ }], ctorParameters: function () { return [{ type: i1.NavController }, { type: i2.IDEATinCanService }, { type: i2.IDEAMessageService }, { type: i2.IDEALoadingService }, { type: i3.IDEAAuthService }, { type: i2.IDEATranslationsService }]; } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblVwLnBhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2R1bGVzL2F1dGgvc3JjL3NpZ25VcC5wYWdlLnRzIiwiLi4vLi4vLi4vLi4vbW9kdWxlcy9hdXRoL3NyYy9zaWduVXAucGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUt2QyxPQUFPLEVBQUUsV0FBVyxJQUFJLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQU8xQyxNQUFNLE9BQU8sY0FBYztJQWtCekIsWUFDUyxPQUFzQixFQUN0QixFQUFxQixFQUNyQixPQUEyQixFQUMzQixPQUEyQixFQUMzQixJQUFxQixFQUNyQixDQUEwQjtRQUwxQixZQUFPLEdBQVAsT0FBTyxDQUFlO1FBQ3RCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNCLFNBQUksR0FBSixJQUFJLENBQWlCO1FBQ3JCLE1BQUMsR0FBRCxDQUFDLENBQXlCO1FBRWpDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFDTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQjtZQUFFLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xFLCtEQUErRDtRQUMvRCxJQUFJLENBQUMsZUFBZTtZQUNsQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx5Q0FBeUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1DQUFtQyxDQUFDO2dCQUNsRyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWU7Z0JBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsUUFBUTtRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixtQkFBbUI7UUFDbkIsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUM7WUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7YUFDMUYsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNqRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFDQUFxQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUUscUNBQXFDO1FBQ3JDLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDOUUseUJBQXlCO1FBQ3pCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSTthQUNOLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDbkMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNULElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDWCxnREFBZ0Q7WUFDaEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDO2FBQ0QsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxjQUFjO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRDs7T0FFRztJQUNJLFFBQVE7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7MkdBOUVVLGNBQWM7K0ZBQWQsY0FBYyxvRENkM0IsazhJQXdIQTsyRkQxR2EsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSAnaWRlYS10b29sYm94JztcbmltcG9ydCB7IElERUFNZXNzYWdlU2VydmljZSwgSURFQUxvYWRpbmdTZXJ2aWNlLCBJREVBVGluQ2FuU2VydmljZSwgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5pbXBvcnQgeyBJREVBQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbmltcG9ydCB7IGVudmlyb25tZW50IGFzIGVudiB9IGZyb20gJ0BlbnYnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZGVhLXNpZ24tdXAnLFxuICB0ZW1wbGF0ZVVybDogJ3NpZ25VcC5wYWdlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnYXV0aC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSURFQVNpZ25VcFBhZ2UgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogVGhlIGVtYWlsIGFkZHJlc3MgdXNlZCB0byBpZGVudGlmeSB0aGUgbmV3IGFjY291bnQuXG4gICAqL1xuICBwdWJsaWMgZW1haWw6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBwYXNzd29yZCBvZiB0aGUgbmV3IGFjY291bnQuXG4gICAqL1xuICBwdWJsaWMgcGFzc3dvcmQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGFncmVlbWVudHMgaGF2ZSBiZWVuIGFjY2VwdGVkLlxuICAgKi9cbiAgcHVibGljIGFncmVlbWVudHNDaGVjazogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBlcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgaW4gdGhlIFVJLCBpZiBhbnkuXG4gICAqL1xuICBwdWJsaWMgZXJyb3JNc2c6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmF2Q3RybDogTmF2Q29udHJvbGxlcixcbiAgICBwdWJsaWMgdGM6IElERUFUaW5DYW5TZXJ2aWNlLFxuICAgIHB1YmxpYyBtZXNzYWdlOiBJREVBTWVzc2FnZVNlcnZpY2UsXG4gICAgcHVibGljIGxvYWRpbmc6IElERUFMb2FkaW5nU2VydmljZSxcbiAgICBwdWJsaWMgYXV0aDogSURFQUF1dGhTZXJ2aWNlLFxuICAgIHB1YmxpYyB0OiBJREVBVHJhbnNsYXRpb25zU2VydmljZVxuICApIHtcbiAgICB0aGlzLmVtYWlsID0gdGhpcy50Yy5nZXQoJ2VtYWlsJywgdHJ1ZSk7XG4gICAgdGhpcy5wYXNzd29yZCA9IHRoaXMudGMuZ2V0KCdwYXNzd29yZCcsIHRydWUpO1xuICAgIHRoaXMuYWdyZWVtZW50c0NoZWNrID0gZmFsc2U7XG4gIH1cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIGlmICghZW52LmlkZWEuYXV0aC5yZWdpc3RyYXRpb25Jc1Bvc3NpYmxlKSByZXR1cm4gdGhpcy5nb1RvQXV0aCgpO1xuICAgIC8vIGlmIHRoZXJlIGlzbid0IGFueSBhZ3JlZW1lbnQgdG8gYWdyZWUgdG8sIHNldCB0aGUgY2hlY2sgdHJ1ZVxuICAgIHRoaXMuYWdyZWVtZW50c0NoZWNrID1cbiAgICAgIHRoaXMudC5fKCdJREVBX1ZBUklBQkxFUy5URVJNU19BTkRfQ09ORElUSU9OU19VUkwnKSB8fCB0aGlzLnQuXygnSURFQV9WQVJJQUJMRVMuUFJJVkFDWV9QT0xJQ1lfVVJMJylcbiAgICAgICAgPyB0aGlzLmFncmVlbWVudHNDaGVja1xuICAgICAgICA6IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgdGhlIG5ldyB1c2VyIGluIGNvZ25pdG8gKG5vdGUgRHluYW1vREIgc3RpbGwgbmVlZCB0byBiZSBtYW5hZ2VkKS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZWdpc3RlcigpIHtcbiAgICB0aGlzLmVycm9yTXNnID0gbnVsbDtcbiAgICAvLyBjaGVjayB0aGUgZmllbGRzXG4gICAgaWYgKGlzRW1wdHkodGhpcy5lbWFpbCwgJ2VtYWlsJykpIHRoaXMuZXJyb3JNc2cgPSB0aGlzLnQuXygnSURFQV9BVVRILlZBTElEX0VNQUlMX09CTElHQVRPUlknKTtcbiAgICBlbHNlIGlmICghdGhpcy5wYXNzd29yZCB8fCB0aGlzLnBhc3N3b3JkLmxlbmd0aCA8IDgpXG4gICAgICB0aGlzLmVycm9yTXNnID0gdGhpcy50Ll8oJ0lERUFfQVVUSC5QQVNTV09SRF9QT0xJQ1lfVklPTEFUSU9OJywgeyBuOiA4IH0pO1xuICAgIC8vIG91dHB1dCB0aGUgZXJyb3IsIGlmIHRoZXJlIHdhcyBvbmVcbiAgICBpZiAodGhpcy5lcnJvck1zZykgcmV0dXJuIHRoaXMubWVzc2FnZS5lcnJvcignSURFQV9BVVRILlJFR0lTVFJBVElPTl9GQUlMRUQnKTtcbiAgICAvLyBzdGFydCB0aGUgcmVnaXN0cmF0aW9uXG4gICAgYXdhaXQgdGhpcy5sb2FkaW5nLnNob3coKTtcbiAgICB0aGlzLmF1dGhcbiAgICAgIC5yZWdpc3Rlcih0aGlzLmVtYWlsLCB0aGlzLnBhc3N3b3JkKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2Uuc3VjY2VzcygnSURFQV9BVVRILlJFR0lTVFJBVElPTl9DT01QTEVURUQnKTtcbiAgICAgICAgdGhpcy50Yy5zZXQoJ25ld0FjY291bnRSZWdpc3RlcmVkJywgdGhpcy5lbWFpbCk7XG4gICAgICAgIHRoaXMuZ29Ub0F1dGgoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgLy8gc2hvdyB0aGUgdW5leHBlY3RlZCBlcnJvciBvbiBzY3JlZW4gKGVuZ2xpc2gpXG4gICAgICAgIHRoaXMuZXJyb3JNc2cgPSBlcnIubWVzc2FnZTtcbiAgICAgICAgdGhpcy5tZXNzYWdlLmVycm9yKCdJREVBX0FVVEguUkVHSVNUUkFUSU9OX0ZBSUxFRCcpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMubG9hZGluZy5oaWRlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdvIHRvIHRoZSByZXNlbmQgbGluayBwYWdlLlxuICAgKi9cbiAgcHVibGljIGdvVG9SZXNlbmRMaW5rKCkge1xuICAgIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZUZvcndhcmQoWydhdXRoL3Jlc2VuZC1saW5rJ10pO1xuICB9XG4gIC8qKlxuICAgKiBHbyB0byBhdXRoIHBhZ2UuXG4gICAqL1xuICBwdWJsaWMgZ29Ub0F1dGgoKSB7XG4gICAgdGhpcy5uYXZDdHJsLm5hdmlnYXRlQmFjayhbJ2F1dGgnXSk7XG4gIH1cbn1cbiIsIjxpb24tY29udGVudD5cbiAgPGZvcm0gY2xhc3M9XCJmbGV4Qm94XCI+XG4gICAgPGlvbi1jYXJkIGNsYXNzPVwiYXV0aENhcmRcIj5cbiAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgIDxpb24tY2FyZC10aXRsZSBjb2xvcj1cInByaW1hcnlcIj57eyAnSURFQV9BVVRILk5FV19BQ0NPVU5UJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgIDxpb24tY2FyZC1zdWJ0aXRsZT57eyAnSURFQV9BVVRILlJFR0lTVEVSX0FfTkVXX0FDQ09VTlRfVE9fVEhFX1NZU1RFTScgfCB0cmFuc2xhdGUgfX08L2lvbi1jYXJkLXN1YnRpdGxlPlxuICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgPHAgY2xhc3M9XCJlcnJvckJveFwiICpuZ0lmPVwiZXJyb3JNc2dcIj5cbiAgICAgICAgICA8Yj4ge3sgJ0lERUFfQVVUSC5FUlJPUicgfCB0cmFuc2xhdGUgfX0uIDwvYj5cbiAgICAgICAgICB7eyBlcnJvck1zZyB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxpb24taXRlbT5cbiAgICAgICAgICA8aW9uLWxhYmVsIHBvc2l0aW9uPVwiaW5saW5lXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlcnNvbi1jaXJjbGVcIiBjb2xvcj1cInByaW1hcnlcIj4gPC9pb24taWNvbj5cbiAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8aW9uLWlucHV0XG4gICAgICAgICAgICB0eXBlPVwiZW1haWxcIlxuICAgICAgICAgICAgaW5wdXRtb2RlPVwiZW1haWxcIlxuICAgICAgICAgICAgcGF0dGVybj1cIltBLVphLXowLTkuXyUrLV17Mix9QFthLXpBLVotXy5dezIsfVsuXXsxfVthLXpBLVpdezIsfVwiXG4gICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgICAgICAgYXV0b2NvcnJlY3Q9XCJvZmZcIlxuICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0Ll8oJ0lERUFfQVVUSC5FTUFJTCcpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJ0Ll8oJ0lERUFfQVVUSC5SRUdJU1RSQVRJT05fRU1BSUxfSElOVCcpXCJcbiAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVtYWlsXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJyZWdpc3RlcigpXCJcbiAgICAgICAgICA+PC9pb24taW5wdXQ+XG4gICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgIDxpb24taXRlbT5cbiAgICAgICAgICA8aW9uLWxhYmVsIHBvc2l0aW9uPVwiaW5saW5lXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImtleVwiIGNvbG9yPVwicHJpbWFyeVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgIHBhdHRlcm49XCIuezgsfVwiXG4gICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgICAgICAgYXV0b2NvcnJlY3Q9XCJvZmZcIlxuICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU9XCJvZmZcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIFtjbGVhck9uRWRpdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidC5fKCdJREVBX0FVVEguUEFTU1dPUkQnKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwidC5fKCdJREVBX0FVVEguQ0hPT1NFX0FfUEFTU1dPUkQnKVwiXG4gICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwicmVnaXN0ZXIoKVwiXG4gICAgICAgICAgPjwvaW9uLWlucHV0PlxuICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICA8aW9uLXJvd1xuICAgICAgICAgIGNsYXNzPVwiYWdyZWVtZW50c0FjY2VwdGFuY2VSb3dcIlxuICAgICAgICAgICpuZ0lmPVwidC5fKCdJREVBX1ZBUklBQkxFUy5URVJNU19BTkRfQ09ORElUSU9OU19VUkwnKSB8fCB0Ll8oJ0lERUFfVkFSSUFCTEVTLlBSSVZBQ1lfUE9MSUNZX1VSTCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgPGlvbi1jaGVja2JveFxuICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImFncmVlbWVudHNDaGVja1wiXG4gICAgICAgICAgICA+PC9pb24tY2hlY2tib3g+XG4gICAgICAgICAgICB7eyAnSURFQV9BVVRILkFHUkVFTUVOVFNfQ0hFQ0tfUkVHSVNUUkFUSU9OJyB8IHRyYW5zbGF0ZSB9fTpcbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGlvbi10ZXh0XG4gICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICpuZ0lmPVwidC5fKCdJREVBX1ZBUklBQkxFUy5URVJNU19BTkRfQ09ORElUSU9OU19VUkwnKVwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCJ0Ll8oJ0lERUFfQVVUSC5URVJNU19BTkRfQ09ORElUSU9OU19ISU5UJylcIlxuICAgICAgICAgICAgICBbaHJlZl09XCJ0Ll8oJ0lERUFfVkFSSUFCTEVTLlRFUk1TX0FORF9DT05ESVRJT05TX1VSTCcpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ0lERUFfQVVUSC5URVJNU19BTkRfQ09ORElUSU9OUycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDxpb24tdGV4dFxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIHQuXygnSURFQV9WQVJJQUJMRVMuUFJJVkFDWV9QT0xJQ1lfVVJMJykgJiYgdC5fKCdJREVBX1ZBUklBQkxFUy5URVJNU19BTkRfQ09ORElUSU9OU19VUkwnKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAmXG4gICAgICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgaW9uLXRleHRcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJ0Ll8oJ0lERUFfVkFSSUFCTEVTLlBSSVZBQ1lfUE9MSUNZX1VSTCcpXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cInQuXygnSURFQV9BVVRILlBSSVZBQ1lfUE9MSUNZX0hJTlQnKVwiXG4gICAgICAgICAgICAgIFtocmVmXT1cInQuXygnSURFQV9WQVJJQUJMRVMuUFJJVkFDWV9QT0xJQ1lfVVJMJylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyAnSURFQV9BVVRILlBSSVZBQ1lfUE9MSUNZJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgPC9pb24tcm93PlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIGV4cGFuZD1cImJsb2NrXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWFncmVlbWVudHNDaGVja1wiXG4gICAgICAgICAgW3RpdGxlXT1cInQuXygnSURFQV9BVVRILkNSRUFURV9BTl9BQ0NPVU5UX0hJTlQnKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlZ2lzdGVyKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ0lERUFfQVVUSC5DUkVBVEVfQU5fQUNDT1VOVCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgZXhwYW5kPVwiYmxvY2tcIlxuICAgICAgICAgIGNsYXNzPVwic21hbGxDYXNlQnV0dG9uXCJcbiAgICAgICAgICBbdGl0bGVdPVwidC5fKCdJREVBX0FVVEguSEFWRU5fVF9SRUNFSVZFRF9DT05GSVJNQVRJT05fTElOS19ISU5UJylcIlxuICAgICAgICAgIChjbGljayk9XCJnb1RvUmVzZW5kTGluaygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdJREVBX0FVVEguSEFWRU5fVF9SRUNFSVZFRF9DT05GSVJNQVRJT05fTElOSycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgZXhwYW5kPVwiYmxvY2tcIlxuICAgICAgICAgIGNsYXNzPVwic21hbGxDYXNlQnV0dG9uXCJcbiAgICAgICAgICBbdGl0bGVdPVwidC5fKCdJREVBX0FVVEguQkFDS19UT19TSUdOX0lOX0hJTlQnKVwiXG4gICAgICAgICAgKGNsaWNrKT1cImdvVG9BdXRoKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ0lERUFfQVVUSC5CQUNLX1RPX1NJR05fSU4nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuICA8L2Zvcm0+XG48L2lvbi1jb250ZW50PlxuIl19