codex 1.6.6__py3-none-any.whl → 1.6.7__py3-none-any.whl

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.

Potentially problematic release.


This version of codex might be problematic. Click here for more details.

Files changed (392) hide show
  1. codex/static_root/assets/{VCheckbox-t2lVZLiy.85aa40c3f0ec.js → VCheckbox-CNCrUhbz.58c18f2fb2cd.js} +1 -1
  2. codex/static_root/assets/VCheckbox-CNCrUhbz.58c18f2fb2cd.js.br +0 -0
  3. codex/static_root/assets/VCheckbox-CNCrUhbz.58c18f2fb2cd.js.gz +0 -0
  4. codex/static_root/assets/{VCheckbox-t2lVZLiy.js → VCheckbox-CNCrUhbz.js} +1 -1
  5. codex/static_root/assets/VCheckbox-CNCrUhbz.js.br +0 -0
  6. codex/static_root/assets/VCheckbox-CNCrUhbz.js.gz +0 -0
  7. codex/static_root/assets/{VCheckboxBtn-C6Ngrnnm.74cb2e3d8c74.js → VCheckboxBtn-BQpfgjoJ.073ee1642f91.js} +1 -1
  8. codex/static_root/assets/VCheckboxBtn-BQpfgjoJ.073ee1642f91.js.br +0 -0
  9. codex/static_root/assets/VCheckboxBtn-BQpfgjoJ.073ee1642f91.js.gz +0 -0
  10. codex/static_root/assets/{VCheckboxBtn-C6Ngrnnm.js → VCheckboxBtn-BQpfgjoJ.js} +1 -1
  11. codex/static_root/assets/VCheckboxBtn-BQpfgjoJ.js.br +0 -0
  12. codex/static_root/assets/VCheckboxBtn-BQpfgjoJ.js.gz +0 -0
  13. codex/static_root/assets/{VCombobox-Sd-OIVIP.7bf2adc355ee.js → VCombobox-Bg-XK8ZC.5e53616e3bf3.js} +1 -1
  14. codex/static_root/assets/VCombobox-Bg-XK8ZC.5e53616e3bf3.js.br +0 -0
  15. codex/static_root/assets/VCombobox-Bg-XK8ZC.5e53616e3bf3.js.gz +0 -0
  16. codex/static_root/assets/{VCombobox-Sd-OIVIP.js → VCombobox-Bg-XK8ZC.js} +1 -1
  17. codex/static_root/assets/VCombobox-Bg-XK8ZC.js.br +0 -0
  18. codex/static_root/assets/VCombobox-Bg-XK8ZC.js.gz +0 -0
  19. codex/static_root/assets/{VDialog-BNfcpCH0.0d18beaa3249.js → VDialog-C2lwLEJ5.2bf46190a6d5.js} +1 -1
  20. codex/static_root/assets/VDialog-C2lwLEJ5.2bf46190a6d5.js.br +0 -0
  21. codex/static_root/assets/VDialog-C2lwLEJ5.2bf46190a6d5.js.gz +0 -0
  22. codex/static_root/assets/{VDialog-BNfcpCH0.js → VDialog-C2lwLEJ5.js} +1 -1
  23. codex/static_root/assets/VDialog-C2lwLEJ5.js.br +0 -0
  24. codex/static_root/assets/VDialog-C2lwLEJ5.js.gz +0 -0
  25. codex/static_root/assets/VExpansionPanels-CXR8yBcB.a8008489f539.js +1 -0
  26. codex/static_root/assets/VExpansionPanels-CXR8yBcB.a8008489f539.js.br +0 -0
  27. codex/static_root/assets/VExpansionPanels-CXR8yBcB.a8008489f539.js.gz +0 -0
  28. codex/static_root/assets/VExpansionPanels-CXR8yBcB.js +1 -0
  29. codex/static_root/assets/VExpansionPanels-CXR8yBcB.js.br +0 -0
  30. codex/static_root/assets/VExpansionPanels-CXR8yBcB.js.gz +0 -0
  31. codex/static_root/assets/VRadioGroup-DL9_Ywre.a7b73019c5f4.js +1 -0
  32. codex/static_root/assets/VRadioGroup-DL9_Ywre.a7b73019c5f4.js.br +0 -0
  33. codex/static_root/assets/VRadioGroup-DL9_Ywre.a7b73019c5f4.js.gz +0 -0
  34. codex/static_root/assets/VRadioGroup-DL9_Ywre.js +1 -0
  35. codex/static_root/assets/VRadioGroup-DL9_Ywre.js.br +0 -0
  36. codex/static_root/assets/VRadioGroup-DL9_Ywre.js.gz +0 -0
  37. codex/static_root/assets/{VSelect-B-kyTG8I.c8d8e2815ac0.js → VSelect-CRvxnYwi.9a9bcedf5919.js} +1 -1
  38. codex/static_root/assets/VSelect-CRvxnYwi.9a9bcedf5919.js.br +0 -0
  39. codex/static_root/assets/VSelect-CRvxnYwi.9a9bcedf5919.js.gz +0 -0
  40. codex/static_root/assets/{VSelect-B-kyTG8I.js → VSelect-CRvxnYwi.js} +1 -1
  41. codex/static_root/assets/VSelect-CRvxnYwi.js.br +0 -0
  42. codex/static_root/assets/VSelect-CRvxnYwi.js.gz +0 -0
  43. codex/static_root/assets/VSelectionControl-AnuOsZjr.0ca164ae628f.css +1 -0
  44. codex/static_root/assets/VSelectionControl-AnuOsZjr.0ca164ae628f.css.br +0 -0
  45. codex/static_root/assets/VSelectionControl-AnuOsZjr.0ca164ae628f.css.gz +0 -0
  46. codex/static_root/assets/VSelectionControl-AnuOsZjr.css +1 -0
  47. codex/static_root/assets/VSelectionControl-AnuOsZjr.css.br +0 -0
  48. codex/static_root/assets/VSelectionControl-AnuOsZjr.css.gz +0 -0
  49. codex/static_root/assets/VSelectionControl-Cg44PiY9.a2ae0de72544.js +1 -0
  50. codex/static_root/assets/VSelectionControl-Cg44PiY9.a2ae0de72544.js.br +0 -0
  51. codex/static_root/assets/VSelectionControl-Cg44PiY9.a2ae0de72544.js.gz +0 -0
  52. codex/static_root/assets/VSelectionControl-Cg44PiY9.js +1 -0
  53. codex/static_root/assets/VSelectionControl-Cg44PiY9.js.br +0 -0
  54. codex/static_root/assets/VSelectionControl-Cg44PiY9.js.gz +0 -0
  55. codex/static_root/assets/{VSlideGroup-BCaUdgHs.3b1cdf2acbda.js → VSlideGroup-CW34YaB5.5ca4ce80da01.js} +1 -1
  56. codex/static_root/assets/VSlideGroup-CW34YaB5.5ca4ce80da01.js.br +0 -0
  57. codex/static_root/assets/VSlideGroup-CW34YaB5.5ca4ce80da01.js.gz +0 -0
  58. codex/static_root/assets/{VSlideGroup-BCaUdgHs.js → VSlideGroup-CW34YaB5.js} +1 -1
  59. codex/static_root/assets/VSlideGroup-CW34YaB5.js.br +0 -0
  60. codex/static_root/assets/VSlideGroup-CW34YaB5.js.gz +0 -0
  61. codex/static_root/assets/{VTable-BTvFrnRE.f7e39d2399db.js → VTable-CQQRjtmk.ea08a8b7b98e.js} +1 -1
  62. codex/static_root/assets/VTable-CQQRjtmk.ea08a8b7b98e.js.br +0 -0
  63. codex/static_root/assets/VTable-CQQRjtmk.ea08a8b7b98e.js.gz +0 -0
  64. codex/static_root/assets/{VTable-BTvFrnRE.js → VTable-CQQRjtmk.js} +1 -1
  65. codex/static_root/assets/VTable-CQQRjtmk.js.br +0 -0
  66. codex/static_root/assets/VTable-CQQRjtmk.js.gz +0 -0
  67. codex/static_root/assets/VTextField-Bc1tD4nS.2026682c8437.css +1 -0
  68. codex/static_root/assets/VTextField-Bc1tD4nS.2026682c8437.css.br +0 -0
  69. codex/static_root/assets/VTextField-Bc1tD4nS.2026682c8437.css.gz +0 -0
  70. codex/static_root/assets/VTextField-Bc1tD4nS.css +1 -0
  71. codex/static_root/assets/VTextField-Bc1tD4nS.css.br +0 -0
  72. codex/static_root/assets/VTextField-Bc1tD4nS.css.gz +0 -0
  73. codex/static_root/assets/VTextField-BkcCIE7o.b563f2af1649.js +1 -0
  74. codex/static_root/assets/VTextField-BkcCIE7o.b563f2af1649.js.br +0 -0
  75. codex/static_root/assets/VTextField-BkcCIE7o.b563f2af1649.js.gz +0 -0
  76. codex/static_root/assets/VTextField-BkcCIE7o.js +1 -0
  77. codex/static_root/assets/VTextField-BkcCIE7o.js.br +0 -0
  78. codex/static_root/assets/VTextField-BkcCIE7o.js.gz +0 -0
  79. codex/static_root/assets/{VWindowItem-SAyGzszW.6aac49e0cb25.js → VWindowItem-C-ieUh3X.b48eab9f2068.js} +1 -1
  80. codex/static_root/assets/VWindowItem-C-ieUh3X.b48eab9f2068.js.br +0 -0
  81. codex/static_root/assets/VWindowItem-C-ieUh3X.b48eab9f2068.js.gz +0 -0
  82. codex/static_root/assets/{VWindowItem-SAyGzszW.js → VWindowItem-C-ieUh3X.js} +1 -1
  83. codex/static_root/assets/VWindowItem-C-ieUh3X.js.br +0 -0
  84. codex/static_root/assets/VWindowItem-C-ieUh3X.js.gz +0 -0
  85. codex/static_root/assets/{admin-Crxy4nNV.33ef855fbf4b.js → admin-DogdiwQo.74b6a788601b.js} +1 -1
  86. codex/static_root/assets/admin-DogdiwQo.74b6a788601b.js.br +0 -0
  87. codex/static_root/assets/admin-DogdiwQo.74b6a788601b.js.gz +0 -0
  88. codex/static_root/assets/{admin-Crxy4nNV.js → admin-DogdiwQo.js} +1 -1
  89. codex/static_root/assets/admin-DogdiwQo.js.br +0 -0
  90. codex/static_root/assets/admin-DogdiwQo.js.gz +0 -0
  91. codex/static_root/assets/{admin-drawer-panel-CtwFZKqt.69ac4d71d030.js → admin-drawer-panel-DC6Y8jEw.2a38b027f538.js} +20 -20
  92. codex/static_root/assets/admin-drawer-panel-DC6Y8jEw.2a38b027f538.js.br +0 -0
  93. codex/static_root/assets/admin-drawer-panel-DC6Y8jEw.2a38b027f538.js.gz +0 -0
  94. codex/static_root/assets/{admin-drawer-panel-CtwFZKqt.js → admin-drawer-panel-DC6Y8jEw.js} +20 -20
  95. codex/static_root/assets/admin-drawer-panel-DC6Y8jEw.js.br +0 -0
  96. codex/static_root/assets/admin-drawer-panel-DC6Y8jEw.js.gz +0 -0
  97. codex/static_root/assets/admin-drawer-panel-Dm28c2tG.css +1 -0
  98. codex/static_root/assets/admin-drawer-panel-Dm28c2tG.css.br +0 -0
  99. codex/static_root/assets/admin-drawer-panel-Dm28c2tG.css.gz +0 -0
  100. codex/static_root/assets/admin-drawer-panel-Dm28c2tG.fb4e885ba7c4.css +1 -0
  101. codex/static_root/assets/admin-drawer-panel-Dm28c2tG.fb4e885ba7c4.css.br +0 -0
  102. codex/static_root/assets/admin-drawer-panel-Dm28c2tG.fb4e885ba7c4.css.gz +0 -0
  103. codex/static_root/assets/{browser-5mT8zJ-k.js → browser-CpAQokFL.107f9f92f55c.js} +1 -1
  104. codex/static_root/assets/browser-CpAQokFL.107f9f92f55c.js.br +0 -0
  105. codex/static_root/assets/browser-CpAQokFL.107f9f92f55c.js.gz +0 -0
  106. codex/static_root/assets/{browser-5mT8zJ-k.c8c31ef41b80.js → browser-CpAQokFL.js} +1 -1
  107. codex/static_root/assets/browser-CpAQokFL.js.br +0 -0
  108. codex/static_root/assets/browser-CpAQokFL.js.gz +0 -0
  109. codex/static_root/assets/{change-password-dialog-CHOnC-Zr.ea9e9979901f.js → change-password-dialog-DA5q-03T.dee52c2bee1d.js} +1 -1
  110. codex/static_root/assets/change-password-dialog-DA5q-03T.dee52c2bee1d.js.br +0 -0
  111. codex/static_root/assets/change-password-dialog-DA5q-03T.dee52c2bee1d.js.gz +0 -0
  112. codex/static_root/assets/{change-password-dialog-CHOnC-Zr.js → change-password-dialog-DA5q-03T.js} +1 -1
  113. codex/static_root/assets/change-password-dialog-DA5q-03T.js.br +0 -0
  114. codex/static_root/assets/change-password-dialog-DA5q-03T.js.gz +0 -0
  115. codex/static_root/assets/{confirm-dialog-BEylmNEi.1770e4c440bc.js → confirm-dialog-BQg9lyfv.583f88254cd6.js} +1 -1
  116. codex/static_root/assets/confirm-dialog-BQg9lyfv.583f88254cd6.js.br +0 -0
  117. codex/static_root/assets/confirm-dialog-BQg9lyfv.583f88254cd6.js.gz +0 -0
  118. codex/static_root/assets/{confirm-dialog-BEylmNEi.js → confirm-dialog-BQg9lyfv.js} +1 -1
  119. codex/static_root/assets/confirm-dialog-BQg9lyfv.js.br +0 -0
  120. codex/static_root/assets/confirm-dialog-BQg9lyfv.js.gz +0 -0
  121. codex/static_root/assets/{datetime-column-D2cjCSko.0fa890d6ca0f.js → datetime-column-D_0U7O5k.82d3bf46f6f0.js} +1 -1
  122. codex/static_root/assets/datetime-column-D_0U7O5k.82d3bf46f6f0.js.br +0 -0
  123. codex/static_root/assets/datetime-column-D_0U7O5k.82d3bf46f6f0.js.gz +0 -0
  124. codex/static_root/assets/{datetime-column-D2cjCSko.js → datetime-column-D_0U7O5k.js} +1 -1
  125. codex/static_root/assets/datetime-column-D_0U7O5k.js.br +0 -0
  126. codex/static_root/assets/datetime-column-D_0U7O5k.js.gz +0 -0
  127. codex/static_root/assets/{filter-kHxo3w0C.81765ef36d0b.js → filter-Cd_ZATJq.d632f2f33be8.js} +1 -1
  128. codex/static_root/assets/filter-Cd_ZATJq.d632f2f33be8.js.br +0 -0
  129. codex/static_root/assets/filter-Cd_ZATJq.d632f2f33be8.js.gz +0 -0
  130. codex/static_root/assets/{filter-kHxo3w0C.js → filter-Cd_ZATJq.js} +1 -1
  131. codex/static_root/assets/filter-Cd_ZATJq.js.br +0 -0
  132. codex/static_root/assets/filter-Cd_ZATJq.js.gz +0 -0
  133. codex/static_root/assets/{flag-tab-CHpJEV6e.9bef68d8019c.js → flag-tab-BDStg-L6.542821f0bf3a.js} +1 -1
  134. codex/static_root/assets/flag-tab-BDStg-L6.542821f0bf3a.js.br +0 -0
  135. codex/static_root/assets/flag-tab-BDStg-L6.542821f0bf3a.js.gz +0 -0
  136. codex/static_root/assets/{flag-tab-CHpJEV6e.js → flag-tab-BDStg-L6.js} +1 -1
  137. codex/static_root/assets/flag-tab-BDStg-L6.js.br +0 -0
  138. codex/static_root/assets/flag-tab-BDStg-L6.js.gz +0 -0
  139. codex/static_root/assets/{group-tab-D7hMON1p.c43da9487835.js → group-tab-DjLTMu0n.ec5e6c7d8fd4.js} +1 -1
  140. codex/static_root/assets/group-tab-DjLTMu0n.ec5e6c7d8fd4.js.br +0 -0
  141. codex/static_root/assets/group-tab-DjLTMu0n.ec5e6c7d8fd4.js.gz +0 -0
  142. codex/static_root/assets/{group-tab-D7hMON1p.js → group-tab-DjLTMu0n.js} +1 -1
  143. codex/static_root/assets/group-tab-DjLTMu0n.js.br +0 -0
  144. codex/static_root/assets/group-tab-DjLTMu0n.js.gz +0 -0
  145. codex/static_root/assets/{http-error-CpMJuFj6.8b3a74a1afb7.js → http-error-6oixwfCY.fc79a5c9cec4.js} +1 -1
  146. codex/static_root/assets/http-error-6oixwfCY.fc79a5c9cec4.js.br +0 -0
  147. codex/static_root/assets/http-error-6oixwfCY.fc79a5c9cec4.js.gz +0 -0
  148. codex/static_root/assets/{http-error-CpMJuFj6.js → http-error-6oixwfCY.js} +1 -1
  149. codex/static_root/assets/http-error-6oixwfCY.js.br +0 -0
  150. codex/static_root/assets/http-error-6oixwfCY.js.gz +0 -0
  151. codex/static_root/assets/{library-tab-DbtKQkEv.js → library-tab-DOkzAkbS.62feecf67428.js} +1 -1
  152. codex/static_root/assets/library-tab-DOkzAkbS.62feecf67428.js.br +0 -0
  153. codex/static_root/assets/library-tab-DOkzAkbS.62feecf67428.js.gz +0 -0
  154. codex/static_root/assets/{library-tab-DbtKQkEv.cd1b5cb4098d.js → library-tab-DOkzAkbS.js} +1 -1
  155. codex/static_root/assets/library-tab-DOkzAkbS.js.br +0 -0
  156. codex/static_root/assets/library-tab-DOkzAkbS.js.gz +0 -0
  157. codex/static_root/assets/{main-DG4M9J1O.636c9d4cd8a9.js → main-DzK0FyQ4.64342c46e52e.js} +3 -3
  158. codex/static_root/assets/main-DzK0FyQ4.64342c46e52e.js.br +0 -0
  159. codex/static_root/assets/main-DzK0FyQ4.64342c46e52e.js.gz +0 -0
  160. codex/static_root/assets/{main-DG4M9J1O.js → main-DzK0FyQ4.js} +3 -3
  161. codex/static_root/assets/main-DzK0FyQ4.js.br +0 -0
  162. codex/static_root/assets/main-DzK0FyQ4.js.gz +0 -0
  163. codex/static_root/assets/{pagination-toolbar-T96tREnT.5c036e8490cc.js → pagination-toolbar-Btd4gD8q.dccad5e791aa.js} +1 -1
  164. codex/static_root/assets/pagination-toolbar-Btd4gD8q.dccad5e791aa.js.br +0 -0
  165. codex/static_root/assets/pagination-toolbar-Btd4gD8q.dccad5e791aa.js.gz +0 -0
  166. codex/static_root/assets/{pagination-toolbar-T96tREnT.js → pagination-toolbar-Btd4gD8q.js} +1 -1
  167. codex/static_root/assets/pagination-toolbar-Btd4gD8q.js.br +0 -0
  168. codex/static_root/assets/pagination-toolbar-Btd4gD8q.js.gz +0 -0
  169. codex/static_root/assets/{pdf-doc-Bi52wiF2.2d24a692aae7.js → pdf-doc-DJFTgxDu.b2f20f4fcce8.js} +1 -1
  170. codex/static_root/assets/pdf-doc-DJFTgxDu.b2f20f4fcce8.js.br +0 -0
  171. codex/static_root/assets/pdf-doc-DJFTgxDu.b2f20f4fcce8.js.gz +0 -0
  172. codex/static_root/assets/{pdf-doc-Bi52wiF2.js → pdf-doc-DJFTgxDu.js} +1 -1
  173. codex/static_root/assets/pdf-doc-DJFTgxDu.js.br +0 -0
  174. codex/static_root/assets/pdf-doc-DJFTgxDu.js.gz +0 -0
  175. codex/static_root/assets/{reader-BvLeh7uY.1a72c602c44f.js → reader-BZ1zrFjp.37c92f19b36e.js} +2 -2
  176. codex/static_root/assets/reader-BZ1zrFjp.37c92f19b36e.js.br +0 -0
  177. codex/static_root/assets/reader-BZ1zrFjp.37c92f19b36e.js.gz +0 -0
  178. codex/static_root/assets/{reader-BvLeh7uY.js → reader-BZ1zrFjp.js} +2 -2
  179. codex/static_root/assets/reader-BZ1zrFjp.js.br +0 -0
  180. codex/static_root/assets/reader-BZ1zrFjp.js.gz +0 -0
  181. codex/static_root/assets/relation-chips-Do3jKDRV.90b12692b374.js +1 -0
  182. codex/static_root/assets/relation-chips-Do3jKDRV.90b12692b374.js.br +0 -0
  183. codex/static_root/assets/relation-chips-Do3jKDRV.90b12692b374.js.gz +0 -0
  184. codex/static_root/assets/relation-chips-Do3jKDRV.js +1 -0
  185. codex/static_root/assets/relation-chips-Do3jKDRV.js.br +0 -0
  186. codex/static_root/assets/relation-chips-Do3jKDRV.js.gz +0 -0
  187. codex/static_root/assets/{settings-drawer-D20xBWbs.5b01c6683046.js → settings-drawer-DG-CKNyF.442b7b74fcd2.js} +2 -2
  188. codex/static_root/assets/settings-drawer-DG-CKNyF.442b7b74fcd2.js.br +0 -0
  189. codex/static_root/assets/settings-drawer-DG-CKNyF.442b7b74fcd2.js.gz +0 -0
  190. codex/static_root/assets/{settings-drawer-D20xBWbs.js → settings-drawer-DG-CKNyF.js} +2 -2
  191. codex/static_root/assets/settings-drawer-DG-CKNyF.js.br +0 -0
  192. codex/static_root/assets/settings-drawer-DG-CKNyF.js.gz +0 -0
  193. codex/static_root/assets/{stats-tab-JXf5C0L2.8a1f23c48803.js → stats-tab-GFSKUO2d.423e5a929890.js} +1 -1
  194. codex/static_root/assets/stats-tab-GFSKUO2d.423e5a929890.js.br +0 -0
  195. codex/static_root/assets/stats-tab-GFSKUO2d.423e5a929890.js.gz +0 -0
  196. codex/static_root/assets/{stats-tab-JXf5C0L2.js → stats-tab-GFSKUO2d.js} +1 -1
  197. codex/static_root/assets/stats-tab-GFSKUO2d.js.br +0 -0
  198. codex/static_root/assets/stats-tab-GFSKUO2d.js.gz +0 -0
  199. codex/static_root/assets/{task-tab-BQTHu8AN.88e4de451b29.js → task-tab-BPIRLtMw.e11b108187cb.js} +1 -1
  200. codex/static_root/assets/task-tab-BPIRLtMw.e11b108187cb.js.br +0 -0
  201. codex/static_root/assets/task-tab-BPIRLtMw.e11b108187cb.js.gz +0 -0
  202. codex/static_root/assets/{task-tab-BQTHu8AN.js → task-tab-BPIRLtMw.js} +1 -1
  203. codex/static_root/assets/task-tab-BPIRLtMw.js.br +0 -0
  204. codex/static_root/assets/task-tab-BPIRLtMw.js.gz +0 -0
  205. codex/static_root/assets/{unauthorized-Fo9yxN_s.be090f98b112.js → unauthorized-D99cAzQr.3fcb871efc34.js} +1 -1
  206. codex/static_root/assets/unauthorized-D99cAzQr.3fcb871efc34.js.br +0 -0
  207. codex/static_root/assets/unauthorized-D99cAzQr.3fcb871efc34.js.gz +0 -0
  208. codex/static_root/assets/{unauthorized-Fo9yxN_s.js → unauthorized-D99cAzQr.js} +1 -1
  209. codex/static_root/assets/unauthorized-D99cAzQr.js.br +0 -0
  210. codex/static_root/assets/unauthorized-D99cAzQr.js.gz +0 -0
  211. codex/static_root/assets/{user-tab-Bc31zSPX.35b6785d0fa8.js → user-tab-DhN1GEZN.f7c314e1f210.js} +1 -1
  212. codex/static_root/assets/user-tab-DhN1GEZN.f7c314e1f210.js.br +0 -0
  213. codex/static_root/assets/user-tab-DhN1GEZN.f7c314e1f210.js.gz +0 -0
  214. codex/static_root/assets/{user-tab-Bc31zSPX.js → user-tab-DhN1GEZN.js} +1 -1
  215. codex/static_root/assets/user-tab-DhN1GEZN.js.br +0 -0
  216. codex/static_root/assets/user-tab-DhN1GEZN.js.gz +0 -0
  217. codex/static_root/{manifest.82e98a155f9e.json → manifest.15533be94933.json} +219 -219
  218. codex/static_root/manifest.15533be94933.json.br +0 -0
  219. codex/static_root/manifest.15533be94933.json.gz +0 -0
  220. codex/static_root/manifest.json +219 -219
  221. codex/static_root/manifest.json.br +0 -0
  222. codex/static_root/manifest.json.gz +0 -0
  223. codex/static_root/staticfiles.json +1 -1
  224. codex/views/auth.py +31 -13
  225. codex/views/opds/auth.py +1 -1
  226. {codex-1.6.6.dist-info → codex-1.6.7.dist-info}/METADATA +1 -1
  227. {codex-1.6.6.dist-info → codex-1.6.7.dist-info}/RECORD +230 -230
  228. codex/static_root/assets/VCheckbox-t2lVZLiy.85aa40c3f0ec.js.br +0 -0
  229. codex/static_root/assets/VCheckbox-t2lVZLiy.85aa40c3f0ec.js.gz +0 -0
  230. codex/static_root/assets/VCheckbox-t2lVZLiy.js.br +0 -0
  231. codex/static_root/assets/VCheckbox-t2lVZLiy.js.gz +0 -0
  232. codex/static_root/assets/VCheckboxBtn-C6Ngrnnm.74cb2e3d8c74.js.br +0 -0
  233. codex/static_root/assets/VCheckboxBtn-C6Ngrnnm.74cb2e3d8c74.js.gz +0 -0
  234. codex/static_root/assets/VCheckboxBtn-C6Ngrnnm.js.br +0 -0
  235. codex/static_root/assets/VCheckboxBtn-C6Ngrnnm.js.gz +0 -0
  236. codex/static_root/assets/VCombobox-Sd-OIVIP.7bf2adc355ee.js.br +0 -0
  237. codex/static_root/assets/VCombobox-Sd-OIVIP.7bf2adc355ee.js.gz +0 -0
  238. codex/static_root/assets/VCombobox-Sd-OIVIP.js.br +0 -0
  239. codex/static_root/assets/VCombobox-Sd-OIVIP.js.gz +0 -0
  240. codex/static_root/assets/VDialog-BNfcpCH0.0d18beaa3249.js.br +0 -0
  241. codex/static_root/assets/VDialog-BNfcpCH0.0d18beaa3249.js.gz +0 -0
  242. codex/static_root/assets/VDialog-BNfcpCH0.js.br +0 -0
  243. codex/static_root/assets/VDialog-BNfcpCH0.js.gz +0 -0
  244. codex/static_root/assets/VExpansionPanels-DDXfjvGC.2931ea38d85a.js +0 -1
  245. codex/static_root/assets/VExpansionPanels-DDXfjvGC.2931ea38d85a.js.br +0 -0
  246. codex/static_root/assets/VExpansionPanels-DDXfjvGC.2931ea38d85a.js.gz +0 -0
  247. codex/static_root/assets/VExpansionPanels-DDXfjvGC.js +0 -1
  248. codex/static_root/assets/VExpansionPanels-DDXfjvGC.js.br +0 -0
  249. codex/static_root/assets/VExpansionPanels-DDXfjvGC.js.gz +0 -0
  250. codex/static_root/assets/VRadioGroup-DKmAGLI5.5ef0c59584e8.js +0 -1
  251. codex/static_root/assets/VRadioGroup-DKmAGLI5.5ef0c59584e8.js.br +0 -0
  252. codex/static_root/assets/VRadioGroup-DKmAGLI5.5ef0c59584e8.js.gz +0 -0
  253. codex/static_root/assets/VRadioGroup-DKmAGLI5.js +0 -1
  254. codex/static_root/assets/VRadioGroup-DKmAGLI5.js.br +0 -0
  255. codex/static_root/assets/VRadioGroup-DKmAGLI5.js.gz +0 -0
  256. codex/static_root/assets/VSelect-B-kyTG8I.c8d8e2815ac0.js.br +0 -0
  257. codex/static_root/assets/VSelect-B-kyTG8I.c8d8e2815ac0.js.gz +0 -0
  258. codex/static_root/assets/VSelect-B-kyTG8I.js.br +0 -0
  259. codex/static_root/assets/VSelect-B-kyTG8I.js.gz +0 -0
  260. codex/static_root/assets/VSelectionControl-BFq--28I.9687c77461fc.css +0 -1
  261. codex/static_root/assets/VSelectionControl-BFq--28I.9687c77461fc.css.br +0 -0
  262. codex/static_root/assets/VSelectionControl-BFq--28I.9687c77461fc.css.gz +0 -0
  263. codex/static_root/assets/VSelectionControl-BFq--28I.css +0 -1
  264. codex/static_root/assets/VSelectionControl-BFq--28I.css.br +0 -0
  265. codex/static_root/assets/VSelectionControl-BFq--28I.css.gz +0 -0
  266. codex/static_root/assets/VSelectionControl-Dp57cbQU.3dffd15f6e66.js +0 -1
  267. codex/static_root/assets/VSelectionControl-Dp57cbQU.3dffd15f6e66.js.br +0 -0
  268. codex/static_root/assets/VSelectionControl-Dp57cbQU.3dffd15f6e66.js.gz +0 -0
  269. codex/static_root/assets/VSelectionControl-Dp57cbQU.js +0 -1
  270. codex/static_root/assets/VSelectionControl-Dp57cbQU.js.br +0 -0
  271. codex/static_root/assets/VSelectionControl-Dp57cbQU.js.gz +0 -0
  272. codex/static_root/assets/VSlideGroup-BCaUdgHs.3b1cdf2acbda.js.br +0 -0
  273. codex/static_root/assets/VSlideGroup-BCaUdgHs.3b1cdf2acbda.js.gz +0 -0
  274. codex/static_root/assets/VSlideGroup-BCaUdgHs.js.br +0 -0
  275. codex/static_root/assets/VSlideGroup-BCaUdgHs.js.gz +0 -0
  276. codex/static_root/assets/VTable-BTvFrnRE.f7e39d2399db.js.br +0 -0
  277. codex/static_root/assets/VTable-BTvFrnRE.f7e39d2399db.js.gz +0 -0
  278. codex/static_root/assets/VTable-BTvFrnRE.js.br +0 -0
  279. codex/static_root/assets/VTable-BTvFrnRE.js.gz +0 -0
  280. codex/static_root/assets/VTextField-BssVoDhB.4cc388b4aa3c.css +0 -1
  281. codex/static_root/assets/VTextField-BssVoDhB.4cc388b4aa3c.css.br +0 -0
  282. codex/static_root/assets/VTextField-BssVoDhB.4cc388b4aa3c.css.gz +0 -0
  283. codex/static_root/assets/VTextField-BssVoDhB.css +0 -1
  284. codex/static_root/assets/VTextField-BssVoDhB.css.br +0 -0
  285. codex/static_root/assets/VTextField-BssVoDhB.css.gz +0 -0
  286. codex/static_root/assets/VTextField-bmvK4DuL.98bc6ed20321.js +0 -1
  287. codex/static_root/assets/VTextField-bmvK4DuL.98bc6ed20321.js.br +0 -0
  288. codex/static_root/assets/VTextField-bmvK4DuL.98bc6ed20321.js.gz +0 -0
  289. codex/static_root/assets/VTextField-bmvK4DuL.js +0 -1
  290. codex/static_root/assets/VTextField-bmvK4DuL.js.br +0 -0
  291. codex/static_root/assets/VTextField-bmvK4DuL.js.gz +0 -0
  292. codex/static_root/assets/VWindowItem-SAyGzszW.6aac49e0cb25.js.br +0 -0
  293. codex/static_root/assets/VWindowItem-SAyGzszW.6aac49e0cb25.js.gz +0 -0
  294. codex/static_root/assets/VWindowItem-SAyGzszW.js.br +0 -0
  295. codex/static_root/assets/VWindowItem-SAyGzszW.js.gz +0 -0
  296. codex/static_root/assets/admin-Crxy4nNV.33ef855fbf4b.js.br +0 -0
  297. codex/static_root/assets/admin-Crxy4nNV.33ef855fbf4b.js.gz +0 -0
  298. codex/static_root/assets/admin-Crxy4nNV.js.br +0 -0
  299. codex/static_root/assets/admin-Crxy4nNV.js.gz +0 -0
  300. codex/static_root/assets/admin-drawer-panel-CtwFZKqt.69ac4d71d030.js.br +0 -0
  301. codex/static_root/assets/admin-drawer-panel-CtwFZKqt.69ac4d71d030.js.gz +0 -0
  302. codex/static_root/assets/admin-drawer-panel-CtwFZKqt.js.br +0 -0
  303. codex/static_root/assets/admin-drawer-panel-CtwFZKqt.js.gz +0 -0
  304. codex/static_root/assets/admin-drawer-panel-mne3FIj6.561b3f75fe65.css +0 -1
  305. codex/static_root/assets/admin-drawer-panel-mne3FIj6.561b3f75fe65.css.br +0 -0
  306. codex/static_root/assets/admin-drawer-panel-mne3FIj6.561b3f75fe65.css.gz +0 -0
  307. codex/static_root/assets/admin-drawer-panel-mne3FIj6.css +0 -1
  308. codex/static_root/assets/admin-drawer-panel-mne3FIj6.css.br +0 -0
  309. codex/static_root/assets/admin-drawer-panel-mne3FIj6.css.gz +0 -0
  310. codex/static_root/assets/browser-5mT8zJ-k.c8c31ef41b80.js.br +0 -0
  311. codex/static_root/assets/browser-5mT8zJ-k.c8c31ef41b80.js.gz +0 -0
  312. codex/static_root/assets/browser-5mT8zJ-k.js.br +0 -0
  313. codex/static_root/assets/browser-5mT8zJ-k.js.gz +0 -0
  314. codex/static_root/assets/change-password-dialog-CHOnC-Zr.ea9e9979901f.js.br +0 -0
  315. codex/static_root/assets/change-password-dialog-CHOnC-Zr.ea9e9979901f.js.gz +0 -0
  316. codex/static_root/assets/change-password-dialog-CHOnC-Zr.js.br +0 -0
  317. codex/static_root/assets/change-password-dialog-CHOnC-Zr.js.gz +0 -0
  318. codex/static_root/assets/confirm-dialog-BEylmNEi.1770e4c440bc.js.br +0 -0
  319. codex/static_root/assets/confirm-dialog-BEylmNEi.1770e4c440bc.js.gz +0 -0
  320. codex/static_root/assets/confirm-dialog-BEylmNEi.js.br +0 -0
  321. codex/static_root/assets/confirm-dialog-BEylmNEi.js.gz +0 -0
  322. codex/static_root/assets/datetime-column-D2cjCSko.0fa890d6ca0f.js.br +0 -0
  323. codex/static_root/assets/datetime-column-D2cjCSko.0fa890d6ca0f.js.gz +0 -0
  324. codex/static_root/assets/datetime-column-D2cjCSko.js.br +0 -0
  325. codex/static_root/assets/datetime-column-D2cjCSko.js.gz +0 -0
  326. codex/static_root/assets/filter-kHxo3w0C.81765ef36d0b.js.br +0 -0
  327. codex/static_root/assets/filter-kHxo3w0C.81765ef36d0b.js.gz +0 -0
  328. codex/static_root/assets/filter-kHxo3w0C.js.br +0 -0
  329. codex/static_root/assets/filter-kHxo3w0C.js.gz +0 -0
  330. codex/static_root/assets/flag-tab-CHpJEV6e.9bef68d8019c.js.br +0 -0
  331. codex/static_root/assets/flag-tab-CHpJEV6e.9bef68d8019c.js.gz +0 -0
  332. codex/static_root/assets/flag-tab-CHpJEV6e.js.br +0 -0
  333. codex/static_root/assets/flag-tab-CHpJEV6e.js.gz +0 -0
  334. codex/static_root/assets/group-tab-D7hMON1p.c43da9487835.js.br +0 -0
  335. codex/static_root/assets/group-tab-D7hMON1p.c43da9487835.js.gz +0 -0
  336. codex/static_root/assets/group-tab-D7hMON1p.js.br +0 -0
  337. codex/static_root/assets/group-tab-D7hMON1p.js.gz +0 -0
  338. codex/static_root/assets/http-error-CpMJuFj6.8b3a74a1afb7.js.br +0 -0
  339. codex/static_root/assets/http-error-CpMJuFj6.8b3a74a1afb7.js.gz +0 -0
  340. codex/static_root/assets/http-error-CpMJuFj6.js.br +0 -0
  341. codex/static_root/assets/http-error-CpMJuFj6.js.gz +0 -0
  342. codex/static_root/assets/library-tab-DbtKQkEv.cd1b5cb4098d.js.br +0 -0
  343. codex/static_root/assets/library-tab-DbtKQkEv.cd1b5cb4098d.js.gz +0 -0
  344. codex/static_root/assets/library-tab-DbtKQkEv.js.br +0 -0
  345. codex/static_root/assets/library-tab-DbtKQkEv.js.gz +0 -0
  346. codex/static_root/assets/main-DG4M9J1O.636c9d4cd8a9.js.br +0 -0
  347. codex/static_root/assets/main-DG4M9J1O.636c9d4cd8a9.js.gz +0 -0
  348. codex/static_root/assets/main-DG4M9J1O.js.br +0 -0
  349. codex/static_root/assets/main-DG4M9J1O.js.gz +0 -0
  350. codex/static_root/assets/pagination-toolbar-T96tREnT.5c036e8490cc.js.br +0 -0
  351. codex/static_root/assets/pagination-toolbar-T96tREnT.5c036e8490cc.js.gz +0 -0
  352. codex/static_root/assets/pagination-toolbar-T96tREnT.js.br +0 -0
  353. codex/static_root/assets/pagination-toolbar-T96tREnT.js.gz +0 -0
  354. codex/static_root/assets/pdf-doc-Bi52wiF2.2d24a692aae7.js.br +0 -0
  355. codex/static_root/assets/pdf-doc-Bi52wiF2.2d24a692aae7.js.gz +0 -0
  356. codex/static_root/assets/pdf-doc-Bi52wiF2.js.br +0 -0
  357. codex/static_root/assets/pdf-doc-Bi52wiF2.js.gz +0 -0
  358. codex/static_root/assets/reader-BvLeh7uY.1a72c602c44f.js.br +0 -0
  359. codex/static_root/assets/reader-BvLeh7uY.1a72c602c44f.js.gz +0 -0
  360. codex/static_root/assets/reader-BvLeh7uY.js.br +0 -0
  361. codex/static_root/assets/reader-BvLeh7uY.js.gz +0 -0
  362. codex/static_root/assets/relation-chips-C7aq5P_5.9c0fbbf9fa13.js +0 -1
  363. codex/static_root/assets/relation-chips-C7aq5P_5.9c0fbbf9fa13.js.br +0 -0
  364. codex/static_root/assets/relation-chips-C7aq5P_5.9c0fbbf9fa13.js.gz +0 -0
  365. codex/static_root/assets/relation-chips-C7aq5P_5.js +0 -1
  366. codex/static_root/assets/relation-chips-C7aq5P_5.js.br +0 -0
  367. codex/static_root/assets/relation-chips-C7aq5P_5.js.gz +0 -0
  368. codex/static_root/assets/settings-drawer-D20xBWbs.5b01c6683046.js.br +0 -0
  369. codex/static_root/assets/settings-drawer-D20xBWbs.5b01c6683046.js.gz +0 -0
  370. codex/static_root/assets/settings-drawer-D20xBWbs.js.br +0 -0
  371. codex/static_root/assets/settings-drawer-D20xBWbs.js.gz +0 -0
  372. codex/static_root/assets/stats-tab-JXf5C0L2.8a1f23c48803.js.br +0 -0
  373. codex/static_root/assets/stats-tab-JXf5C0L2.8a1f23c48803.js.gz +0 -0
  374. codex/static_root/assets/stats-tab-JXf5C0L2.js.br +0 -0
  375. codex/static_root/assets/stats-tab-JXf5C0L2.js.gz +0 -0
  376. codex/static_root/assets/task-tab-BQTHu8AN.88e4de451b29.js.br +0 -0
  377. codex/static_root/assets/task-tab-BQTHu8AN.88e4de451b29.js.gz +0 -0
  378. codex/static_root/assets/task-tab-BQTHu8AN.js.br +0 -0
  379. codex/static_root/assets/task-tab-BQTHu8AN.js.gz +0 -0
  380. codex/static_root/assets/unauthorized-Fo9yxN_s.be090f98b112.js.br +0 -0
  381. codex/static_root/assets/unauthorized-Fo9yxN_s.be090f98b112.js.gz +0 -0
  382. codex/static_root/assets/unauthorized-Fo9yxN_s.js.br +0 -0
  383. codex/static_root/assets/unauthorized-Fo9yxN_s.js.gz +0 -0
  384. codex/static_root/assets/user-tab-Bc31zSPX.35b6785d0fa8.js.br +0 -0
  385. codex/static_root/assets/user-tab-Bc31zSPX.35b6785d0fa8.js.gz +0 -0
  386. codex/static_root/assets/user-tab-Bc31zSPX.js.br +0 -0
  387. codex/static_root/assets/user-tab-Bc31zSPX.js.gz +0 -0
  388. codex/static_root/manifest.82e98a155f9e.json.br +0 -0
  389. codex/static_root/manifest.82e98a155f9e.json.gz +0 -0
  390. {codex-1.6.6.dist-info → codex-1.6.7.dist-info}/LICENSE +0 -0
  391. {codex-1.6.6.dist-info → codex-1.6.7.dist-info}/WHEEL +0 -0
  392. {codex-1.6.6.dist-info → codex-1.6.7.dist-info}/entry_points.txt +0 -0
Binary file
Binary file
@@ -1 +1 @@
1
- {"paths": {"rest_framework/docs/js/api.js": "rest_framework/docs/js/api.18a5ba8a1bd8.js", "rest_framework/docs/js/jquery.json-view.min.js": "rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js", "rest_framework/docs/js/highlight.pack.js": "rest_framework/docs/js/highlight.pack.479b5f21dcba.js", "rest_framework/docs/img/favicon.ico": "rest_framework/docs/img/favicon.5195b4d0f3eb.ico", "rest_framework/docs/img/grid.png": "rest_framework/docs/img/grid.a4b938cf382b.png", "rest_framework/docs/css/jquery.json-view.min.css": "rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css", "rest_framework/docs/css/highlight.css": "rest_framework/docs/css/highlight.e0e4d973c6d7.css", "rest_framework/docs/css/base.css": "rest_framework/docs/css/base.e630f8f4990e.css", "rest_framework/js/ajax-form.js": "rest_framework/js/ajax-form.4e1cdcb7acab.js", "rest_framework/js/csrf.js": "rest_framework/js/csrf.455080a7b2ce.js", "rest_framework/js/prettify-min.js": "rest_framework/js/prettify-min.709bfcc456c6.js", "rest_framework/js/jquery-3.7.1.min.js": "rest_framework/js/jquery-3.7.1.min.2c872dbe60f4.js", "rest_framework/js/default.js": "rest_framework/js/default.5b08897dbdc3.js", "rest_framework/js/bootstrap.min.js": "rest_framework/js/bootstrap.min.2f34b630ffe3.js", "rest_framework/js/coreapi-0.1.1.js": "rest_framework/js/coreapi-0.1.1.8851fb9336c9.js", "rest_framework/js/load-ajax-form.js": "rest_framework/js/load-ajax-form.8cdb3a9f3466.js", "rest_framework/fonts/fontawesome-webfont.woff": "rest_framework/fonts/fontawesome-webfont.3293616ec0c6.woff", "rest_framework/fonts/glyphicons-halflings-regular.eot": "rest_framework/fonts/glyphicons-halflings-regular.f4769f9bdb74.eot", "rest_framework/fonts/glyphicons-halflings-regular.ttf": "rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf", "rest_framework/fonts/fontawesome-webfont.ttf": "rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf", "rest_framework/fonts/glyphicons-halflings-regular.woff2": "rest_framework/fonts/glyphicons-halflings-regular.448c34a56d69.woff2", "rest_framework/fonts/fontawesome-webfont.svg": "rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg", "rest_framework/fonts/glyphicons-halflings-regular.woff": "rest_framework/fonts/glyphicons-halflings-regular.fa2772327f55.woff", "rest_framework/fonts/glyphicons-halflings-regular.svg": "rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg", "rest_framework/fonts/fontawesome-webfont.eot": "rest_framework/fonts/fontawesome-webfont.8b27bc96115c.eot", "rest_framework/img/glyphicons-halflings-white.png": "rest_framework/img/glyphicons-halflings-white.9bbc6e960299.png", "rest_framework/img/glyphicons-halflings.png": "rest_framework/img/glyphicons-halflings.90233c9067e9.png", "rest_framework/img/grid.png": "rest_framework/img/grid.a4b938cf382b.png", "rest_framework/css/bootstrap.min.css.map": "rest_framework/css/bootstrap.min.css.cafbda9c0e9e.map", "rest_framework/css/default.css": "rest_framework/css/default.789dfb5732d7.css", "rest_framework/css/bootstrap.min.css": "rest_framework/css/bootstrap.min.f17d4516b026.css", "rest_framework/css/prettify.css": "rest_framework/css/prettify.a987f72342ee.css", "rest_framework/css/bootstrap-theme.min.css": "rest_framework/css/bootstrap-theme.min.1d4b05b397c3.css", "rest_framework/css/bootstrap-tweaks.css": "rest_framework/css/bootstrap-tweaks.ee4ee6acf9eb.css", "rest_framework/css/font-awesome-4.0.3.css": "rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css", "rest_framework/css/bootstrap-theme.min.css.map": "rest_framework/css/bootstrap-theme.min.css.51806092cc05.map", "img/publisher.svg": "img/publisher.82d378fcd601.svg", "img/logo-32.webp": "img/logo-32.5688944495bf.webp", "img/logo.svg": "img/logo.0f5344a028ca.svg", "img/story-arc.svg": "img/story-arc.ca10014355ef.svg", "img/missing-cover-165.webp": "img/missing-cover-165.0743171f2148.webp", "img/series.svg": "img/series.ec8a889b8f95.svg", "img/logo-maskable-180.webp": "img/logo-maskable-180.c58d966aa64e.webp", "img/missing-cover.svg": "img/missing-cover.ddb038cc2c56.svg", "img/folder.svg": "img/folder.f28936a3701d.svg", "img/volume.svg": "img/volume.814e4c79461a.svg", "img/logo-maskable.svg": "img/logo-maskable.8f7de7f1c6a8.svg", "img/imprint.svg": "img/imprint.7c2adebb76d6.svg", "pwa/offline.html": "pwa/offline.7bfaf9f94bf9.html", "js/choices.json": "js/choices.2f6b0359e1ef.json", "js/choices-admin.json": "js/choices-admin.3521e2a863df.json", "assets/group-tab-CBKuS3Iv.css": "assets/group-tab-CBKuS3Iv.7e4746634782.css", "assets/http-error-DKulXuTl.css": "assets/http-error-DKulXuTl.95e42988d5d5.css", "assets/VSelect-ARDhJiQK.css": "assets/VSelect-ARDhJiQK.372c098fb475.css", "assets/reader-BvLeh7uY.js": "assets/reader-BvLeh7uY.1a72c602c44f.js", "assets/VCheckbox-t2lVZLiy.js": "assets/VCheckbox-t2lVZLiy.85aa40c3f0ec.js", "assets/VSelectionControl-BFq--28I.css": "assets/VSelectionControl-BFq--28I.9687c77461fc.css", "assets/http-error-CpMJuFj6.js": "assets/http-error-CpMJuFj6.8b3a74a1afb7.js", "assets/filter-kHxo3w0C.js": "assets/filter-kHxo3w0C.81765ef36d0b.js", "assets/user-tab-Bc31zSPX.js": "assets/user-tab-Bc31zSPX.35b6785d0fa8.js", "assets/pdf-doc-CMzaSV_K.css": "assets/pdf-doc-CMzaSV_K.8cd4b3e65f9a.css", "assets/pagination-toolbar-T96tREnT.js": "assets/pagination-toolbar-T96tREnT.5c036e8490cc.js", "assets/materialdesignicons-webfont-PXm3-2wK.woff": "assets/materialdesignicons-webfont-PXm3-2wK.026b7ac9c43c.woff", "assets/admin-Crxy4nNV.js": "assets/admin-Crxy4nNV.33ef855fbf4b.js", "assets/VSlideGroup-Dk_1upHt.css": "assets/VSlideGroup-Dk_1upHt.2c836070ec75.css", "assets/admin-drawer-panel-mne3FIj6.css": "assets/admin-drawer-panel-mne3FIj6.561b3f75fe65.css", "assets/VTable-DflzroDq.css": "assets/VTable-DflzroDq.160504d82195.css", "assets/settings-drawer-nZ9HvKSZ.css": "assets/settings-drawer-nZ9HvKSZ.01744e131806.css", "assets/VDialog-lQ13FnRR.css": "assets/VDialog-lQ13FnRR.1c801ad756b2.css", "assets/relation-chips-BGitp3yx.css": "assets/relation-chips-BGitp3yx.b3e7d178a615.css", "assets/main-Ztp855PW.css": "assets/main-Ztp855PW.d46d718fac45.css", "assets/group-tab-D7hMON1p.js": "assets/group-tab-D7hMON1p.c43da9487835.js", "assets/VRadioGroup-i2qP9Wu9.css": "assets/VRadioGroup-i2qP9Wu9.8e3741381961.css", "assets/admin-D4sw3N4T.css": "assets/admin-D4sw3N4T.b590f88a62cf.css", "assets/reader-YbzUiD0T.css": "assets/reader-YbzUiD0T.efb15835b39d.css", "assets/change-password-dialog-0u6IJA87.css": "assets/change-password-dialog-0u6IJA87.5f9a9aa573b7.css", "assets/relation-chips-C7aq5P_5.js": "assets/relation-chips-C7aq5P_5.9c0fbbf9fa13.js", "assets/copy-to-clipboard-DoUvDJVx.js": "assets/copy-to-clipboard-DoUvDJVx.bec27f144aca.js", "assets/VWindowItem-ByIod57Y.css": "assets/VWindowItem-ByIod57Y.f7fb19752bf3.css", "assets/pdf-doc-Bi52wiF2.js": "assets/pdf-doc-Bi52wiF2.2d24a692aae7.js", "assets/VTextField-bmvK4DuL.js": "assets/VTextField-bmvK4DuL.98bc6ed20321.js", "assets/unauthorized-Fo9yxN_s.js": "assets/unauthorized-Fo9yxN_s.be090f98b112.js", "assets/VSelectionControl-Dp57cbQU.js": "assets/VSelectionControl-Dp57cbQU.3dffd15f6e66.js", "assets/pagination-toolbar-BA9ifTed.css": "assets/pagination-toolbar-BA9ifTed.b4865334ee08.css", "assets/library-tab-BygwYPnO.css": "assets/library-tab-BygwYPnO.94e92aa60bf2.css", "assets/change-password-dialog-CHOnC-Zr.js": "assets/change-password-dialog-CHOnC-Zr.ea9e9979901f.js", "assets/VExpansionPanels-DDXfjvGC.js": "assets/VExpansionPanels-DDXfjvGC.2931ea38d85a.js", "assets/stats-tab-JXf5C0L2.js": "assets/stats-tab-JXf5C0L2.8a1f23c48803.js", "assets/browser-Cy0OgQJC.css": "assets/browser-Cy0OgQJC.fabbd1aaffcf.css", "assets/confirm-dialog-BmhedLCx.css": "assets/confirm-dialog-BmhedLCx.7c2103d319d4.css", "assets/VWindowItem-SAyGzszW.js": "assets/VWindowItem-SAyGzszW.6aac49e0cb25.js", "assets/browser-5mT8zJ-k.js": "assets/browser-5mT8zJ-k.c8c31ef41b80.js", "assets/materialdesignicons-webfont-B7mPwVP_.ttf": "assets/materialdesignicons-webfont-B7mPwVP_.6e435534bd35.ttf", "assets/VDialog-BNfcpCH0.js": "assets/VDialog-BNfcpCH0.0d18beaa3249.js", "assets/unauthorized-DGIM1VFy.css": "assets/unauthorized-DGIM1VFy.c93d0b3ea5a4.css", "assets/library-tab-DbtKQkEv.js": "assets/library-tab-DbtKQkEv.cd1b5cb4098d.js", "assets/VCombobox-BksEr4D_.css": "assets/VCombobox-BksEr4D_.73429bb75f42.css", "assets/VSelect-B-kyTG8I.js": "assets/VSelect-B-kyTG8I.c8d8e2815ac0.js", "assets/flag-tab-DBqpLKi7.css": "assets/flag-tab-DBqpLKi7.dcfef39f541e.css", "assets/VCheckboxBtn-C6Ngrnnm.js": "assets/VCheckboxBtn-C6Ngrnnm.74cb2e3d8c74.js", "assets/task-tab-1XiWn9xP.css": "assets/task-tab-1XiWn9xP.06cb8e1b794d.css", "assets/confirm-dialog-BEylmNEi.js": "assets/confirm-dialog-BEylmNEi.1770e4c440bc.js", "assets/datetime-column-DeCthByU.css": "assets/datetime-column-DeCthByU.1f3bf499e063.css", "assets/materialdesignicons-webfont-CSr8KVlo.eot": "assets/materialdesignicons-webfont-CSr8KVlo.8ced95a05e3c.eot", "assets/VSlideGroup-BCaUdgHs.js": "assets/VSlideGroup-BCaUdgHs.3b1cdf2acbda.js", "assets/flag-tab-CHpJEV6e.js": "assets/flag-tab-CHpJEV6e.9bef68d8019c.js", "assets/settings-drawer-D20xBWbs.js": "assets/settings-drawer-D20xBWbs.5b01c6683046.js", "assets/stats-tab-CI0u-X7Y.css": "assets/stats-tab-CI0u-X7Y.2d1b6a0d4139.css", "assets/VCombobox-Sd-OIVIP.js": "assets/VCombobox-Sd-OIVIP.7bf2adc355ee.js", "assets/datetime-column-D2cjCSko.js": "assets/datetime-column-D2cjCSko.0fa890d6ca0f.js", "assets/admin-drawer-panel-CtwFZKqt.js": "assets/admin-drawer-panel-CtwFZKqt.69ac4d71d030.js", "assets/VExpansionPanels-DsEXVcCv.css": "assets/VExpansionPanels-DsEXVcCv.20b475255e66.css", "assets/VTable-BTvFrnRE.js": "assets/VTable-BTvFrnRE.f7e39d2399db.js", "assets/main-DG4M9J1O.js": "assets/main-DG4M9J1O.636c9d4cd8a9.js", "assets/VRadioGroup-DKmAGLI5.js": "assets/VRadioGroup-DKmAGLI5.5ef0c59584e8.js", "assets/task-tab-BQTHu8AN.js": "assets/task-tab-BQTHu8AN.88e4de451b29.js", "assets/VCheckbox-CMKdyl0R.css": "assets/VCheckbox-CMKdyl0R.016ed8d222c4.css", "assets/VTextField-BssVoDhB.css": "assets/VTextField-BssVoDhB.4cc388b4aa3c.css", "assets/materialdesignicons-webfont-Dp5v-WZN.woff2": "assets/materialdesignicons-webfont-Dp5v-WZN.1d7bcee1b302.woff2", "robots.txt": "robots.b6216d61c03e.txt", "manifest.json": "manifest.82e98a155f9e.json"}, "version": "1.1", "hash": "02a316934d3a"}
1
+ {"paths": {"rest_framework/docs/js/api.js": "rest_framework/docs/js/api.18a5ba8a1bd8.js", "rest_framework/docs/js/jquery.json-view.min.js": "rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js", "rest_framework/docs/js/highlight.pack.js": "rest_framework/docs/js/highlight.pack.479b5f21dcba.js", "rest_framework/docs/img/favicon.ico": "rest_framework/docs/img/favicon.5195b4d0f3eb.ico", "rest_framework/docs/img/grid.png": "rest_framework/docs/img/grid.a4b938cf382b.png", "rest_framework/docs/css/jquery.json-view.min.css": "rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css", "rest_framework/docs/css/highlight.css": "rest_framework/docs/css/highlight.e0e4d973c6d7.css", "rest_framework/docs/css/base.css": "rest_framework/docs/css/base.e630f8f4990e.css", "rest_framework/js/ajax-form.js": "rest_framework/js/ajax-form.4e1cdcb7acab.js", "rest_framework/js/csrf.js": "rest_framework/js/csrf.455080a7b2ce.js", "rest_framework/js/prettify-min.js": "rest_framework/js/prettify-min.709bfcc456c6.js", "rest_framework/js/jquery-3.7.1.min.js": "rest_framework/js/jquery-3.7.1.min.2c872dbe60f4.js", "rest_framework/js/default.js": "rest_framework/js/default.5b08897dbdc3.js", "rest_framework/js/bootstrap.min.js": "rest_framework/js/bootstrap.min.2f34b630ffe3.js", "rest_framework/js/coreapi-0.1.1.js": "rest_framework/js/coreapi-0.1.1.8851fb9336c9.js", "rest_framework/js/load-ajax-form.js": "rest_framework/js/load-ajax-form.8cdb3a9f3466.js", "rest_framework/fonts/fontawesome-webfont.woff": "rest_framework/fonts/fontawesome-webfont.3293616ec0c6.woff", "rest_framework/fonts/glyphicons-halflings-regular.eot": "rest_framework/fonts/glyphicons-halflings-regular.f4769f9bdb74.eot", "rest_framework/fonts/glyphicons-halflings-regular.ttf": "rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf", "rest_framework/fonts/fontawesome-webfont.ttf": "rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf", "rest_framework/fonts/glyphicons-halflings-regular.woff2": "rest_framework/fonts/glyphicons-halflings-regular.448c34a56d69.woff2", "rest_framework/fonts/fontawesome-webfont.svg": "rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg", "rest_framework/fonts/glyphicons-halflings-regular.woff": "rest_framework/fonts/glyphicons-halflings-regular.fa2772327f55.woff", "rest_framework/fonts/glyphicons-halflings-regular.svg": "rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg", "rest_framework/fonts/fontawesome-webfont.eot": "rest_framework/fonts/fontawesome-webfont.8b27bc96115c.eot", "rest_framework/img/glyphicons-halflings-white.png": "rest_framework/img/glyphicons-halflings-white.9bbc6e960299.png", "rest_framework/img/glyphicons-halflings.png": "rest_framework/img/glyphicons-halflings.90233c9067e9.png", "rest_framework/img/grid.png": "rest_framework/img/grid.a4b938cf382b.png", "rest_framework/css/bootstrap.min.css.map": "rest_framework/css/bootstrap.min.css.cafbda9c0e9e.map", "rest_framework/css/default.css": "rest_framework/css/default.789dfb5732d7.css", "rest_framework/css/bootstrap.min.css": "rest_framework/css/bootstrap.min.f17d4516b026.css", "rest_framework/css/prettify.css": "rest_framework/css/prettify.a987f72342ee.css", "rest_framework/css/bootstrap-theme.min.css": "rest_framework/css/bootstrap-theme.min.1d4b05b397c3.css", "rest_framework/css/bootstrap-tweaks.css": "rest_framework/css/bootstrap-tweaks.ee4ee6acf9eb.css", "rest_framework/css/font-awesome-4.0.3.css": "rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css", "rest_framework/css/bootstrap-theme.min.css.map": "rest_framework/css/bootstrap-theme.min.css.51806092cc05.map", "img/publisher.svg": "img/publisher.82d378fcd601.svg", "img/logo-32.webp": "img/logo-32.5688944495bf.webp", "img/logo.svg": "img/logo.0f5344a028ca.svg", "img/story-arc.svg": "img/story-arc.ca10014355ef.svg", "img/missing-cover-165.webp": "img/missing-cover-165.0743171f2148.webp", "img/series.svg": "img/series.ec8a889b8f95.svg", "img/logo-maskable-180.webp": "img/logo-maskable-180.c58d966aa64e.webp", "img/missing-cover.svg": "img/missing-cover.ddb038cc2c56.svg", "img/folder.svg": "img/folder.f28936a3701d.svg", "img/volume.svg": "img/volume.814e4c79461a.svg", "img/logo-maskable.svg": "img/logo-maskable.8f7de7f1c6a8.svg", "img/imprint.svg": "img/imprint.7c2adebb76d6.svg", "pwa/offline.html": "pwa/offline.7bfaf9f94bf9.html", "js/choices.json": "js/choices.2f6b0359e1ef.json", "js/choices-admin.json": "js/choices-admin.3521e2a863df.json", "assets/group-tab-CBKuS3Iv.css": "assets/group-tab-CBKuS3Iv.7e4746634782.css", "assets/group-tab-DjLTMu0n.js": "assets/group-tab-DjLTMu0n.ec5e6c7d8fd4.js", "assets/http-error-DKulXuTl.css": "assets/http-error-DKulXuTl.95e42988d5d5.css", "assets/VSelect-ARDhJiQK.css": "assets/VSelect-ARDhJiQK.372c098fb475.css", "assets/pdf-doc-CMzaSV_K.css": "assets/pdf-doc-CMzaSV_K.8cd4b3e65f9a.css", "assets/pagination-toolbar-Btd4gD8q.js": "assets/pagination-toolbar-Btd4gD8q.dccad5e791aa.js", "assets/materialdesignicons-webfont-PXm3-2wK.woff": "assets/materialdesignicons-webfont-PXm3-2wK.026b7ac9c43c.woff", "assets/admin-drawer-panel-Dm28c2tG.css": "assets/admin-drawer-panel-Dm28c2tG.fb4e885ba7c4.css", "assets/VSlideGroup-Dk_1upHt.css": "assets/VSlideGroup-Dk_1upHt.2c836070ec75.css", "assets/VTable-DflzroDq.css": "assets/VTable-DflzroDq.160504d82195.css", "assets/settings-drawer-nZ9HvKSZ.css": "assets/settings-drawer-nZ9HvKSZ.01744e131806.css", "assets/VDialog-lQ13FnRR.css": "assets/VDialog-lQ13FnRR.1c801ad756b2.css", "assets/relation-chips-BGitp3yx.css": "assets/relation-chips-BGitp3yx.b3e7d178a615.css", "assets/VTextField-BkcCIE7o.js": "assets/VTextField-BkcCIE7o.b563f2af1649.js", "assets/reader-BZ1zrFjp.js": "assets/reader-BZ1zrFjp.37c92f19b36e.js", "assets/main-Ztp855PW.css": "assets/main-Ztp855PW.d46d718fac45.css", "assets/VDialog-C2lwLEJ5.js": "assets/VDialog-C2lwLEJ5.2bf46190a6d5.js", "assets/http-error-6oixwfCY.js": "assets/http-error-6oixwfCY.fc79a5c9cec4.js", "assets/VRadioGroup-i2qP9Wu9.css": "assets/VRadioGroup-i2qP9Wu9.8e3741381961.css", "assets/VWindowItem-C-ieUh3X.js": "assets/VWindowItem-C-ieUh3X.b48eab9f2068.js", "assets/admin-D4sw3N4T.css": "assets/admin-D4sw3N4T.b590f88a62cf.css", "assets/filter-Cd_ZATJq.js": "assets/filter-Cd_ZATJq.d632f2f33be8.js", "assets/admin-drawer-panel-DC6Y8jEw.js": "assets/admin-drawer-panel-DC6Y8jEw.2a38b027f538.js", "assets/relation-chips-Do3jKDRV.js": "assets/relation-chips-Do3jKDRV.90b12692b374.js", "assets/settings-drawer-DG-CKNyF.js": "assets/settings-drawer-DG-CKNyF.442b7b74fcd2.js", "assets/VSlideGroup-CW34YaB5.js": "assets/VSlideGroup-CW34YaB5.5ca4ce80da01.js", "assets/confirm-dialog-BQg9lyfv.js": "assets/confirm-dialog-BQg9lyfv.583f88254cd6.js", "assets/reader-YbzUiD0T.css": "assets/reader-YbzUiD0T.efb15835b39d.css", "assets/change-password-dialog-0u6IJA87.css": "assets/change-password-dialog-0u6IJA87.5f9a9aa573b7.css", "assets/copy-to-clipboard-DoUvDJVx.js": "assets/copy-to-clipboard-DoUvDJVx.bec27f144aca.js", "assets/VWindowItem-ByIod57Y.css": "assets/VWindowItem-ByIod57Y.f7fb19752bf3.css", "assets/pagination-toolbar-BA9ifTed.css": "assets/pagination-toolbar-BA9ifTed.b4865334ee08.css", "assets/library-tab-BygwYPnO.css": "assets/library-tab-BygwYPnO.94e92aa60bf2.css", "assets/user-tab-DhN1GEZN.js": "assets/user-tab-DhN1GEZN.f7c314e1f210.js", "assets/browser-Cy0OgQJC.css": "assets/browser-Cy0OgQJC.fabbd1aaffcf.css", "assets/confirm-dialog-BmhedLCx.css": "assets/confirm-dialog-BmhedLCx.7c2103d319d4.css", "assets/VTextField-Bc1tD4nS.css": "assets/VTextField-Bc1tD4nS.2026682c8437.css", "assets/VTable-CQQRjtmk.js": "assets/VTable-CQQRjtmk.ea08a8b7b98e.js", "assets/materialdesignicons-webfont-B7mPwVP_.ttf": "assets/materialdesignicons-webfont-B7mPwVP_.6e435534bd35.ttf", "assets/VSelect-CRvxnYwi.js": "assets/VSelect-CRvxnYwi.9a9bcedf5919.js", "assets/unauthorized-DGIM1VFy.css": "assets/unauthorized-DGIM1VFy.c93d0b3ea5a4.css", "assets/VCombobox-BksEr4D_.css": "assets/VCombobox-BksEr4D_.73429bb75f42.css", "assets/VCheckboxBtn-BQpfgjoJ.js": "assets/VCheckboxBtn-BQpfgjoJ.073ee1642f91.js", "assets/VCheckbox-CNCrUhbz.js": "assets/VCheckbox-CNCrUhbz.58c18f2fb2cd.js", "assets/flag-tab-DBqpLKi7.css": "assets/flag-tab-DBqpLKi7.dcfef39f541e.css", "assets/browser-CpAQokFL.js": "assets/browser-CpAQokFL.107f9f92f55c.js", "assets/datetime-column-D_0U7O5k.js": "assets/datetime-column-D_0U7O5k.82d3bf46f6f0.js", "assets/VSelectionControl-AnuOsZjr.css": "assets/VSelectionControl-AnuOsZjr.0ca164ae628f.css", "assets/VSelectionControl-Cg44PiY9.js": "assets/VSelectionControl-Cg44PiY9.a2ae0de72544.js", "assets/task-tab-1XiWn9xP.css": "assets/task-tab-1XiWn9xP.06cb8e1b794d.css", "assets/pdf-doc-DJFTgxDu.js": "assets/pdf-doc-DJFTgxDu.b2f20f4fcce8.js", "assets/main-DzK0FyQ4.js": "assets/main-DzK0FyQ4.64342c46e52e.js", "assets/flag-tab-BDStg-L6.js": "assets/flag-tab-BDStg-L6.542821f0bf3a.js", "assets/change-password-dialog-DA5q-03T.js": "assets/change-password-dialog-DA5q-03T.dee52c2bee1d.js", "assets/admin-DogdiwQo.js": "assets/admin-DogdiwQo.74b6a788601b.js", "assets/datetime-column-DeCthByU.css": "assets/datetime-column-DeCthByU.1f3bf499e063.css", "assets/task-tab-BPIRLtMw.js": "assets/task-tab-BPIRLtMw.e11b108187cb.js", "assets/materialdesignicons-webfont-CSr8KVlo.eot": "assets/materialdesignicons-webfont-CSr8KVlo.8ced95a05e3c.eot", "assets/stats-tab-CI0u-X7Y.css": "assets/stats-tab-CI0u-X7Y.2d1b6a0d4139.css", "assets/unauthorized-D99cAzQr.js": "assets/unauthorized-D99cAzQr.3fcb871efc34.js", "assets/VExpansionPanels-DsEXVcCv.css": "assets/VExpansionPanels-DsEXVcCv.20b475255e66.css", "assets/stats-tab-GFSKUO2d.js": "assets/stats-tab-GFSKUO2d.423e5a929890.js", "assets/VRadioGroup-DL9_Ywre.js": "assets/VRadioGroup-DL9_Ywre.a7b73019c5f4.js", "assets/VExpansionPanels-CXR8yBcB.js": "assets/VExpansionPanels-CXR8yBcB.a8008489f539.js", "assets/VCombobox-Bg-XK8ZC.js": "assets/VCombobox-Bg-XK8ZC.5e53616e3bf3.js", "assets/VCheckbox-CMKdyl0R.css": "assets/VCheckbox-CMKdyl0R.016ed8d222c4.css", "assets/materialdesignicons-webfont-Dp5v-WZN.woff2": "assets/materialdesignicons-webfont-Dp5v-WZN.1d7bcee1b302.woff2", "assets/library-tab-DOkzAkbS.js": "assets/library-tab-DOkzAkbS.62feecf67428.js", "robots.txt": "robots.b6216d61c03e.txt", "manifest.json": "manifest.15533be94933.json"}, "version": "1.1", "hash": "88f87462cf7f"}
codex/views/auth.py CHANGED
@@ -51,22 +51,40 @@ class TimezoneView(AuthGenericAPIView):
51
51
  input_serializer_class = TimezoneSerializer
52
52
  serializer_class = OKSerializer
53
53
 
54
+ def _save_timezone(self, django_timezone):
55
+ """Save django timezone in session."""
56
+ if not django_timezone:
57
+ return
58
+ session = self.request.session
59
+ session["django_timezone"] = django_timezone
60
+ session.save()
61
+
62
+ def _update_user_active(self):
63
+ """Update user activity."""
64
+ user = self.request.user
65
+ if user and user.is_authenticated:
66
+ UserActive.objects.update_or_create(user=user)
67
+
54
68
  @extend_schema(request=input_serializer_class)
55
- def put(self, request, *args, **kwargs):
69
+ def put(self, *args, **kwargs):
56
70
  """Get the user info for the current user."""
71
+ data = self.request.data # type: ignore
72
+ serializer = self.input_serializer_class(data=data)
73
+ serializer.is_valid(raise_exception=True)
74
+ try:
75
+ self._save_timezone(serializer.validated_data.get("timezone")) # type: ignore
76
+ except Exception as exc:
77
+ reason = f"update user timezone {exc}"
78
+ LOG.warning(reason)
79
+
57
80
  try:
58
- data = self.request.data # type: ignore
59
- serializer = self.input_serializer_class(data=data)
60
- serializer.is_valid(raise_exception=True)
61
- request.session["django_timezone"] = serializer.validated_data["timezone"] # type: ignore
62
- request.session.save()
63
- user = self.request.user
64
- if user.is_authenticated:
65
- UserActive.objects.update_or_create(user=user)
66
- serializer = self.get_serializer()
67
- return Response(serializer.data)
68
- except Exception:
69
- LOG.exception("timezone put")
81
+ self._update_user_active()
82
+ except Exception as exc:
83
+ reason = f"update user activity {exc}"
84
+ LOG.warning(reason)
85
+
86
+ serializer = self.get_serializer()
87
+ return Response(serializer.data)
70
88
 
71
89
 
72
90
  class GroupACLMixin:
codex/views/opds/auth.py CHANGED
@@ -9,7 +9,7 @@ from codex.views.template import CodexXMLTemplateView
9
9
  class OPDSAuthMixin:
10
10
  """Add Basic Auth."""
11
11
 
12
- authentication_classes = (SessionAuthentication, BasicAuthentication)
12
+ authentication_classes = (BasicAuthentication, SessionAuthentication)
13
13
  permission_classes = (IsAuthenticatedOrEnabledNonUsers,)
14
14
 
15
15
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: codex
3
- Version: 1.6.6
3
+ Version: 1.6.7
4
4
  Summary: A comic archive web server.
5
5
  Home-page: https://github.com/ajslater/codex
6
6
  License: GPL-3.0-only