hiddifypanel 3.0.0.dev63__cp310-cp310-manylinux2014_x86_64.whl → 3.0.0.dev65__cp310-cp310-manylinux2014_x86_64.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.
Files changed (72) hide show
  1. hiddifypanel/Events.py +27 -4
  2. hiddifypanel/VERSION +1 -1
  3. hiddifypanel/VERSION.py +1 -3
  4. hiddifypanel/__init__.py +7 -3
  5. hiddifypanel/__main__.py +13 -3
  6. hiddifypanel/base.py +88 -3
  7. hiddifypanel/base2.py +40 -3
  8. hiddifypanel/models/__init__.py +10 -3
  9. hiddifypanel/models/child.py +26 -4
  10. hiddifypanel/models/config.py +105 -4
  11. hiddifypanel/models/config_enum.py +207 -4
  12. hiddifypanel/models/domain.py +106 -4
  13. hiddifypanel/models/proxy.py +55 -3
  14. hiddifypanel/models/usage.py +58 -3
  15. hiddifypanel/models/user.py +171 -3
  16. hiddifypanel/panel/__init__.py +7 -4
  17. hiddifypanel/panel/admin/Actions.py +170 -3
  18. hiddifypanel/panel/admin/Backup.py +80 -4
  19. hiddifypanel/panel/admin/ChildAdmin.py +122 -3
  20. hiddifypanel/panel/admin/ConfigAdmin.py +54 -4
  21. hiddifypanel/panel/admin/Dashboard.py +70 -4
  22. hiddifypanel/panel/admin/DomainAdmin.py +195 -4
  23. hiddifypanel/panel/admin/ProxyAdmin.py +128 -3
  24. hiddifypanel/panel/admin/QuickSetup.py +127 -4
  25. hiddifypanel/panel/admin/SettingAdmin.py +224 -3
  26. hiddifypanel/panel/admin/Terminal.py +51 -4
  27. hiddifypanel/panel/admin/UserAdmin.py +277 -4
  28. hiddifypanel/panel/admin/__init__.py +82 -4
  29. hiddifypanel/panel/admin/adminlte.py +13 -4
  30. hiddifypanel/panel/admin/commercial_info.py +23 -3
  31. hiddifypanel/panel/admin/templates/config.html +1 -1
  32. hiddifypanel/panel/admin/templates/proxy.html +2 -2
  33. hiddifypanel/panel/admin/websocket.py +9 -3
  34. hiddifypanel/panel/admin_2.py +33 -3
  35. hiddifypanel/panel/asset.py +17 -3
  36. hiddifypanel/panel/cf_api.py +35 -4
  37. hiddifypanel/panel/clean_ip.py +125 -3
  38. hiddifypanel/panel/cli.py +172 -3
  39. hiddifypanel/panel/commercial/CommercialDashboard.py +59 -4
  40. hiddifypanel/panel/commercial/CommercialSettings.py +224 -3
  41. hiddifypanel/panel/commercial/ProxyDetailsAdmin.py +38 -4
  42. hiddifypanel/panel/commercial/__init__.py +50 -4
  43. hiddifypanel/panel/commercial/restapi/__init__.py +14 -3
  44. hiddifypanel/panel/commercial/restapi/tgbot.py +57 -3
  45. hiddifypanel/panel/commercial/telegrambot/DefaultResponse.py +11 -3
  46. hiddifypanel/panel/commercial/telegrambot/Usage.py +71 -3
  47. hiddifypanel/panel/commercial/telegrambot/__init__.py +6 -4
  48. hiddifypanel/panel/commercial/telegrambot/admin.py +120 -3
  49. hiddifypanel/panel/commercial/telegrambot/information.py +123 -3
  50. hiddifypanel/panel/common.py +98 -3
  51. hiddifypanel/panel/custom_widgets.py +71 -4
  52. hiddifypanel/panel/database.py +18 -3
  53. hiddifypanel/panel/hiddify.py +655 -4
  54. hiddifypanel/panel/hiddify_api.py +70 -3
  55. hiddifypanel/panel/init_db.py +393 -3
  56. hiddifypanel/panel/usage.py +85 -3
  57. hiddifypanel/panel/user/__init__.py +25 -4
  58. hiddifypanel/panel/user/link_maker.py +416 -3
  59. hiddifypanel/panel/user/templates/home/multi.html +1 -1
  60. hiddifypanel/panel/user/user.py +233 -3
  61. hiddifypanel/static/css/custom.css +11 -0
  62. hiddifypanel/templates/500.html +1 -1
  63. hiddifypanel/xray_api.py +109 -3
  64. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/METADATA +1 -1
  65. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/RECORD +69 -71
  66. hiddifypanel-3.0.0.dev65.dist-info/top_level.txt +1 -0
  67. hiddifypanel-3.0.0.dev63.dist-info/top_level.txt +0 -2
  68. pyarmor_runtime_000000/__init__.py +0 -4
  69. pyarmor_runtime_000000/pyarmor_runtime.so +0 -0
  70. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/LICENSE +0 -0
  71. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/WHEEL +0 -0
  72. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/entry_points.txt +0 -0
@@ -1,5 +1,72 @@
1
- # 2023-04-08T15:11:21.717394
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\n\x00o\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\xf7\x14\x00\x00\x12\t\x04\x00\xea#f\x88\xbb\x95aM={\xd6_g\xec`\xbe\x00\x00\x00\x00\x00\x00\x00\x00\xa1y!t\xdf\xa64W\xd1\x1f\xe6\xf9B\xdc\xa7\xafxh\xeaL\ni\xebw\xc9\x883\x8c\xef\xbc\xb6\\ALM\xb0\xebZ\x8b\xa7\n\xc8Uf\xc9\xa7\x96\x8c,\xc0\x16\xe1n\xc4\x0b\x07\x1e\x8f\xf3\xc9\x93\xfa\x80\xf9\xacM \xcdWg>\xd1\xf3\xc2 \x1e}\xe3\'\x01\xe5\xb3%!\xe9\x02\xc1I\xf3\x8e\xd1x\x19\x15Muv\x8d\xae\x99\xeb\xf0\xfcP\x9b\xb0\x08\xfc\x9b=@T\x9f\xbf\xc9\xf7\x88\xd6Y\x80&\x02\xd9\xc4\x18\x9eO\x15\xdf\xdc\xfeF\xc1\xa3\xfbe\xbc\xf0a\xd79p[\xa2\x8eQ\xa9\x14)~\xb2qa\x95\x02\xba\xd7a\xd87\x17>\x10\xb8(\xc4\xe8\x1f\x8dFm\xa9\x87\xa5\x12\xc17\xe3\xf7\xb6\xcf\x0e\xf9:$\x83\x0b\x11+z\x938\x9e\x90\xf1\nH\x88\x8b-f\x8e\x8f\xcb\xea\xc9\x8c=a\xac\xca\xc9v\xf5\xfalJc\x0bX\xa2\x0e\x97s\xc50\x10XS\x9c\x19$]\xa6|YUN\xd3\xe9g\x8f\xa5\x10x\xd2\xf1\xe3\xd5\x95\xe6\x83\xb9k\x1dPFbj4\xa2\x19\xf1\xe9S\xad\xf3\x9f\x14\x91\xb7\xcdU\x172\xdcm\xe6y\x9dB\x0f\xca\x06?\x81\xbaL\x90\x02C\xe6VA@\xc6\x11_\xfe\xd8\xa0\x87\x8d"\xa4Q\xfe\x02\xf5\x8f\xa3\x8b\xa9\x11W&\x1e\xd4\xa4J\x90\xf6\x1c\xf6%\xe9W\xa1FD\xfa\xc3R\x7f\xa1\xc5\xe9\xaev\xe8S\x89\xa8\xf6\xc8\xad\x1f\x12CY\x1f!\x9b\x12^\x9a\x96\x8f\x8a\xc4C\\t|r\x10\xa7+\xe56\xdf6\xdd\x04W\x1b\xe2g\xbb\x81B;\x9c\xdd\x12(\x7f\t\xe1\xa8,J\xca\x90\x89\xf7\x04.\xec\x11\xe4\xdb\xe4\x0e\x17\x19\xd5h\xd7G|`6\xa6\xb8)$\x9a\xc7<\xfeN\xf8\xf5a\xfd\xa7\x91uGB\xc5\x1b\x9f\xca\x01\x8c\t3\x18Ldx2\x1c\xdf\x06\x98,\xb0CN\xee\xd7\xae\x08-\xa8 \xdb\xeeYz\x8b\x8f\x9bK\xab\xcf\xaa\xf8\x06\x1f\xb5Ne\x91&\xd1\x94pPa\xddh\xac=\x0e\xe3\x1eX\n\xf2\xd9\xd7\x89\xf1\xda\x1a\x17\x19rm7J\x9aY\x9a\xb5\xac\xfaN\xb5\xc5\xd3%ib\x8e\xcd \x19P\x1f\xde\x9e\t\x91\xfega\xd9\xce3\x8cq\x02O>{\xa6\xc7\x93\xeb\xd2\x0bV\xb9&@\xbfb$3K^\x07\xad\xf8\xd4\xdc\x92:\x14u\xa5\x16\xc7\xbfz\xce\x7fo\xf7\xc4\xa88F\xcb\xce[\x86\x0eb\xf5\xf2\xdc2\xb3\xb5}r>C\xe7 ~d\x7f\xa4\xb6\xea\xf8Pi\xe7\x05\xb4\x85p\x15\x08\xdf\xdb_\xb2}r\xa1\xf9\xddW\x18\x9bb\xdb*\x92\x9a\x85\x82\xf5\x1fA\xc1\x1b\x99k\xda#\x1d\x10\xa9\x9c:s\x13\xa7p4\x1b\x98\x081\xcb\x7fH\xd5\xbd\xe6!\xb6\x17W^\x0eM\xfd\xb2\xd2&\xe3\xbe{\xb8\xc63S\x84&\xb7 \xed\x8a\x03ubH/$;\x8417\x96\xe1\xcfR\x89C3\xc5\xfbX\xf6\xde\xba\xd3\x95x|\x01?\xddV\x0cI\xdb\xad\x84\x91\xa2\x1e8\xb3\x12\xe5HS\xc0\xc8\xf6a\xec\x9a@7)\xe2N\x05\xb4\x03\xe7H\xb6\xfe;\x83\xbb\xad\x0e\xbe1\xe9@ho\xe0\xcc\x1e\xba)\x9eA\xa3P\r\xa4\x08\x10\x87\xb7\xf2\xe4aD\xfa\xb4\x87\x0f\x0e\xbf`!\t\xc2vm\x1dhb\xac\xe1\xc7f>\xf9\xb3I\x05\xb3\xca\x9eh\x9e\x9e|\xff\x05\xe2\x08\x04\xf4\x1c\x92\xb5\x87E\x85\x98\xb7\xbb\xa0\x94Yq\xa7(\x96\xe1\x1f3\x9b;R\xa6\x1e?\xda\x9a!{\xbdP\x183\xe0\x8f9\x97\xf0\xb56\xee\xd6\xa9\xf7e\x12N\xb4\xd2\x81\xe1IU\xbd\x82\x95\xaf\x8c\x9e\xc6"\xcd\xde\xc9t$\xb0\xa2\xb9\x1aLCH\x8c\x81z\xf0\x9fn\xcfK\rf\x93\x96Y\rq.sI|\x032\xad\xbe\x85\xaa\xed\x03\x96\xfd\x8e]\x08\x01h"\xa2\xf8\x93W.\xb2\xda"\xa18\x0e\xc3\xbe\x8f\x17{\xaa\xd4\x9b\x1f\x13\xc4\xe1\xad\xa3\xdf\x1f\xed\x04r\x8d\x18\x11\xb1X\xdeUJ4%0\x0f\x8aR\xea\x07\xe7\x99\x12<\xc8.\xeb\xfdO\x04X\xb6J\x98\x8b\x82Ba\x97w9\x9f\xdd\xed\x03\xf9Vc\xe9l>E\xc4s\xa2\x86\xe9$2\xb4\xf7i \x14*zGt\xf3\xee\x829\xbfS\xd7f\xcf@\xef!+z\x82\xe5\xb0\xa0\xec\xec\xf8=\x00\xcfn\xec\x02\xf8 \xdbk\xf6\xffh\xef\x84\xddU\xe8j\xadv\x80\x16`8\xf7\xa1Ia:\xf2\xc8\xce\xc6\xc1\xde\n\xb2;OO]Z\xca\xdc\xea\xec2N\xcc\xab\x92p\xfcE}zz\xec\xa9n7\xf6\xa4\x0c?.\x8ae\x00GS\x08*]\xa8\x0c-\x06\xd5\xa4\x1f\xc9\x8b&\xe20j\xaa\x15)\xfcaA\xd6`\xe9\xa0\xa9fA\xb9oa#@e\xe5\x0bbK\xb9\x06\x18\x8c"i\xa8z"\xab\xc0\xc4\x80\x9a\x0f\xfd\xb0v\xf0\xa5\x91>\x05y\xd7\x04)b\xb0ZdY\xf3\xd3\n\x890\xc1\x8d\xc8\\\xb9\x95\xad\xe3r\xb4\xfeh\xd7v\xb6QX\xeeX\xf6\xc4\x91,\xcf\x95\x08\x0c:\xab\xeaub\x81\xb1\xd8(a\xa1\'\xe3\x8d\xea\xd6\xbb\x1c5`J\xab\xc5Z#\x92u\xa6\x15!\xf9\xdd\x8a\xda\xa4t\x1b?x,\xfaK\x01g3\xb6\x16\xb0\x83\x8d\xd1o\x12\x90Y%\xe5qvs\xe1\n\xe7\xa7==\x963-l\xf6z\x88\x08\xe6E\x17\xbf\x05\xb4.@\xde\xad`\x95O\x14\\\xeaXw\x1a\xaa\x8a\xd0\xd4y\xcd^\xc8\xd9\x85;\xf0+Oh\xfa3#a!\x9e}\x9aQ\xdc\xc6\xa5`L\xff\xbf\xb4\t\x10 T\xec\xda\xe2\x01\x8d\x17\x18\xf8D\x9dZ\xa4\xd8\'.v\xf47\x0c\x07H\x95t|&\xab\xd3\x08=g`r\x15\x1dh\xa8\xf71\x06\xb7\x7fd@\xddU\xb3\xd4\x95\xe4\x81l\x178\x84@\xab\xb7S$\x0f\xd7<\xe1qp\xd0y|e\x18\nR3\x02K\xa9\x9bi\xe8\xf4=\xe4xr\xfd\x1e\xc3\xf1\xcaa"\xb6\x1eI\xf4o\xc8\x97\xf9|.=[\xf4\x07\xa7\xd9\xf9\xf7\xde\xa6\x9b\xb4s\x10\xa9J\xc9\xeb\xe3\xc2\xba\xcfe\xd7\x9ai\xca\xb0\xd1\x13R\x17\xd8\xd9\x82\xa7K\xdb\xe4\x9b\xcbN\x98\xff\xe0\xc6aL\x8c}\xaa\x0fM\x1e\xf6\x196\xa0\xd2\xfa\r\x7f>\x82"\xf5N\x88U|TL\xc4\xf1v2\xef:\xac\xb6\xe34\xcc\xb8\xf00\xaam\xa8\x8a\x7fo E\x96\\+)\x1c\xe9\x8d&\xfcsR\xf2Y\xd1\xff\x941vb\x18\x9a\x7fT\x06\xaf\xd7\x8a}\x99z/Mb\x80&\x9c\xb5\x05\x80\x19\xb1\x05\x9a\xfc<dl\x833]t\x8c\xde]\\\xf8\xda\x93\x81O\x8bo[\xb2\x86/\x06\x19\xb3\x14\x1f\xacI\xd0\x13\xe7\xed_\xf1\x99@&\xd1\xf4\xe3A\x9e\x95t\xd3\xea^\xa3\xba\xf95P\xd2\xb3\x99\x99\x80\xe4%8\xd0gh\x1a\xe6\xf2>\x84YJ\x9f8\x0b\t\xcdE\x11\x1ap\x07,\x95\x1fK[\xa1\x85\x05\x83?\xd4\xecZv\xd5\xaa\xf5\x8c\xc4\xfa\xf8\xc4\xb0\x97\xff\x17\x98\xc2\xab\xb1\xabt;\xd3\xf0\xdd%\x11\xedsR\xf5\x1fE6y)\x1bV\x8c\x1d\x19\x14\xd4\xaf\x8b\x13\x04\x14\x00\x81\xa4\xb4F_\xdc\x8a\x11mT~d\x83\x9b_\x19\xb4\xb3y\xc2\x82\x0c\xd9o%\x8f\xc3\xa6\xc3\xde\xb2\x90\xc2\x16W\x1a\xce\xcd\xdb;\x84\xaf\xc5\xce\xc9+\x15P\x18*;\xa3\xa0+\x03dq\xdf\xe6Xp\xa6\xa7\x87g\xfc\xb8\xe2\x0b\xdcQ\xd3\xbc\xdb1\x852\x86\xb5\xaf\xab\x17\x7f\x06Q\xca\xc6.\x10\x7fT\xfe\x8c\xe0\xd3h\x98\xde\x1a\x9f\\\xf2c\xa3Z,3\xa1\xe6\x8c\x88\xa9\xda\xc6\x81\'\xb1\xc3\x8a\xa8\xe9f1W\x84\xb8 _Zo\xe0\xd8\xf0gy\xf4{\x8b@\xa9M\x0b\x8b\xf0\xf3\xde\n\xbc\xfa/\x14L\xaa\x82\xac)\x9azw\x9d\xce\x19\xd7\xe8/\x8c\xb2\xa4\x17D\xe6\xdb\x9eG\xe4N\xfb\xfeYw\xc2\x0e4\xa9\x96\x84\xad:\x8d\xddtw\xfa\xc1i\xef\xc2;\x14Y\xb1\xb6(\xfd\x01\xc0\xaf\x088\xc1G\xd7K\xc3\xa3\xea\xb5\xda\xb1\x90\x8f!s\xb2\x1a\xe3w\xeb\x9b\xf1\x832\x98\xdexy\xe3\xf6\'T\xd8\xbf~M\xb9\xc7\xed4\xc4\xee\x83\x912\xe2\x16\x9b\xdf\xae\xe4\xfe\x9cU\x80\x9d\xd5$e\xe8z+\xfa\xc7Z\xb3\xbd\x84>V8^-j!\xf2\x94_\x1e\x0e\xeb\x87?\x0c\xea\xee\xc2&\x17@\xcep\x14\x87\x181?\x0bOc3\x01YgB\xbe0L\x08\xfb\xb3\x11\x84\xb1\xb5\xcc\xf6\xa5\xcc$\xb9\x99G1\xa7!\xcd^m\xacQ \xa3T\x1f@\xd8wZ\x18\xe7\x82-rR\x06\x19\r\xbfn\xe3hA\xf8\xf59\xe8\x1a\n\x97\x7f3\x16\xff\xe4\x12\xf1\x98KJ\xe6\xc7\x19\x89\xf1 \x1e\xa3\x8d\xf0L\xea\xd4\xa0\xbd\xae\x1d\xb9\xbe\xc8*\xfc6\x10\xe4u,|\x1d\xed\xac\xbc\x91!`\xf3\xcc\xaa\xb1\x9c\x98\xe8\x14\xec\x13X\x1eJE\xb5\xbd\x18\x87\xc6\xafy$\xe1`\xa6\xaf\xb0\xd3\x7fd\xe9\x14R\xad\x0c\xcc\x99pM\xc8\x84\xb0\xebaW\x80\xd0\xf0\x836\r\x9d{\xd6n\xd9\xfb\xd9U\xc2\x1d\xa3\xa8\x8a\x86\x8fAzW\x17s\xb0Y\xdfI%\xf6\xdbb\x8b\xea\x907\x1f\x88\x13\'\xb5C\x97\xca\xdb5V\xb4\xa3\xfd\xc8\xaa\x19$2\x19,\x95\x08\xe8\xfak\xfb\xa0\x82\xdc\xceYx\xba\xa4F_\xc6mE\xfa\x0cG\x8d\xd8\x1f2\xf3\xef\xa2\xad\x01\x01\x1c\xbc\x00sO\xc2\x92\xc9\xe5uw:\xf7[\x86\x80\xee\x1fD+\xd0\xc9\xf7\x06\x004\xdf\x0c&"E\xbb3\xd94Aa8]\xca\xb2\xbf\xbb\x12Dt\xf1O\xab\xfff\x13\xd8\xeeo\xb0\xa5\x1ce\xa2\xacS\xe7\x80\xc9\x82c\xa0\x9e\xc3W\xa5\xc7TK\x06\x9c\x91\x99\x01\x91\x9a\xebq\x14`\xe5(\xe9\xccXB\x0e\x9au\xd1\xf6\xb2M\xd7\xfe\xc4-qP\xc4\x89n\x02\x9e\xa5W\x86\xe1\x8f_KLZ4\xba\xf2%\xf5\xe6\x9cp\x9fe\xe5\xb1\x94\xe9\xa0\x03\xf7\x1b\xdc^\x90N\x8a\x1bl6\xfe\x1b\xf9\x1e\xe9J\\\xd8\xbcJ\xaaC\xce{\x93\x84\xa7UG\xf0k\xe8(\xc8+\x83w\xdb \xa3W0\x87\x07|\xe5\xec\xe6\tGg\xf6U$)\x92\x8bN\x96\xe2 \t\xe0AI\x8fy\xa5\xec\xc0=\xfb\xf1\x80%Or\xe2\xa8\xeb\x87\x18\x95\x86\rB\xc9e\xb7\xc4%\xc2,D1{c\x9d\x9exC\x90\x1eH\xb3\xc9\x9c\xebErc\x01=\xfe\xd9\x91c\x8d\xb9\x92\xf4\x95\x07\xdd\x1f\xf7J"qhj\x1d\xa1S\xef\xd4\x84\x88\x16u\xf6IJ`\x8e\xf2\xc4\x99\x90\xea\xebT\xa4@\x8ce\xf5\x8eE}\xc9i\xff\x98\xbe\xc1\r$$\xd0\x9f\x89\xd2\xed\xf5NTXPJ\xd9\x88\x02;"!\x08\xd7\xa2z\x1c8a\xffc\x81\x7fq\x11Y\x1c\xc0n\xdc\xa9V\x0b\xb4\xd9\r\xee7\xa1j\xd5\xf1\xb7\xffy\xc7\x12\xedv\xd7\x07\xcf\x18\xd2h?\xd5\xb9\x93\xa5o\xdf7\xa2\xab\xf0@\x04\xcf\xf4\x0c\x04+\xed\xbe\xda\x9f\x17\xb2J\x11w"O\x11\x1c\xabB>(\xfa<\xc3\xc0t\xf2\x80\xde\xc9x\r\xdd\xed\r\x1f~\xa8o\xc1\x04\x11?\x99%qo\x05\xa7;\xc4\xea\x95\xcf4\x9e\xedh\xcf\xff`\xe82A\xd1\x9e/SHW\x902>\xfb\x0c/(0\t\xb5P,\x83\xa6\x92\xc0\xb4\xd4H\xf5\x0b<N\x19\n!s+\x10\x8f\xb1x\x9c\x8e\xc5\x8b\x89\xc4\x83\x0b:\xc8\xa1A\xe2A\x1a\x97\x99\xe3\x1d\xbbc\xb7<\xa3\xb0-\x05\x9b\x97z:\'\x184\\)\xa7\xae\xf4q(5\xddf\x84\xaa\x8a\xd9\xf1\xcb\xeemx\x90l\x01&\x02d\x08\xe4A\x19\xd6\xdd\xa2\x06\x85\xe4t\xb5\x93\x89\xad\xd1{\xf8#\xbd\xae\xc3Q\x05^\xf56\x00\x936\xe71\xb8U\x1d\x91\xe84\xbeD\xa9\x1d$\xf3\x81R;\x96F}\xdd\x94\xd8>\x07t\x97\x7f\xc6\xb3bt\xbe\xa9\xf4\xb7\x8e\xec\xfbf\x9bXS>\xe4\\SA\xe1\x8d\x9b\x1d([\x11K9\xfb\xfc\x11\xed|\x9d\x8d\x96\x81\xcb\xf6r\x1dV\xa0\xa5?@\x83\x128\x1e`bG\xa5t\xd3<~\xd9h\xc2\x95\x11\xd03\xce\x9f\xc8\xa9T\xe4%\xa2}\xd9\xf8\xb6\x9f\x97\xeb\xa8\xa5\xbbZ\xa1\x18\xa1*\x11\xf3!\xa76\xa5\xad\x1e\xc3\xbc9>*\x12\xf2\xb6:/\x01\xe9\x87\xd7\xf4/U\xcfR\xb1\x0c\xbf\x99\xe9\x9f\'\xf5\x8a\xb9%\xe5l\xc71\xb0\xe4x\x85\xc0P\x01\x05\x04\xa3&\xe6\xc7\xe3\xd5b;\x1e\xa3\xf6\xeap\x08{\xc5%{rA\x1b\x06\xe5\xe5\x95k\x04H\xe2L\x1b\x10\x05\xbe\xb3\xf6\x8d\x85qg\x85\xc4\xeb\xf1,\xa6\xfb#M\xb5\x04Wl\x14\xf2\x96s\xf8+\xad\xc0\xe5\xf0\x90\xa3\xb2z\x12a[\xdcu\xd5\x0f\x83E\xd0\xe0l"\xa1\x9d\xfaG\xa0\xaes\x05\x92\x17j\xfc\x89\xdf\x03\x19\xfe%#\x1c\x1d\xdbU\xefe\xf7\xdf\xe5\x8f\x1beN\xb3\xd4\x07\t\xcaYMQ\xa3z_lP\xb5q\xe0\xcc\xc8L<\xec\xedt\x8f\xb5\xcd"\xce\xc0\xa9T\xaa\xf9\x06e\xb2\x13\xdd\x08\x19nQ\xe1K\x8a\'O\xbb \xbe\xd3\xbd\xbb\xa5\xa1g\x98\xfc\x80\x1bb\xe0\xc0_\x0e\x1a\xf3\xd8\x9fP2\xd8\x15\xaa\xc4U\xb6\xc9\xa9x\x1f\x11\xef\x11\x84|\'\xe3\x91b\x0e\xe4P\xc8)\xa6x\x88K\x93R\n\xa4[\x945\xe5}\xee\x07cl\x90\xeajlm\xb3\x03\x12[\x8aO!\x01\xd6w\x1d\x10;\x85\xc1\\E\xec*\xd9k\x0f"\x10\xa5\x95]mD[U2\x0cn\x05L\x90x\xf6\xda\x00\x0f\xc7\xed\xf6\xb2\xc0m\xb7\xfc\xf2\xb9\xd3\xdb\xf2\x0b\xbd\xf7E\x01\xc4\xebW\x04\xdf!\xb8?\xc1\x81\x1a06\x12#n\xce\xeaj\x0e\x1b)\x84\x86\xd0\x8a\xd1\xde\xd8H\x02"j\xcf\x08W\x17\xb2\x81\x95\xd4r\xca\xb4\x18o\xb7\x03F\xf9go\'5;\xb7\x003\x8b\x9c+,Xut\xde\xfc\xba\xe3\xaatC(jO\x9a\x9c\x92\x8fBxa\xc4\x19J\xa4\xdb\xc5\xfb\x08\x12\x86\xff\x12\xf5\x81\x05&U\x90\x92\xbb\xfas\xcf\x00\xb0\x12#\x99x\xd0\tL\x96e\x06\xb8\x8d\x8f\x95\x10\xa6\xac\xbc7\x0c$\x13l\xe4\x8e\xb3\x0b\x17ZX\xbb\xcf\xed\\\xbc\x92\x89\xe1\xd8\xc1V\xd7\xfe^\xa07j\x9c\xca\x1c2\xc7\x7f\xf4\x93\xae\xe2\x8c9\xc1}.\xe0\x92\x96\x83(\xb8U\x18\xd9\x8b\x9c\x12z\xbe\x03!\xc4\xbaQ\xd9\xe8E\xfc\x80\xd8\xedK\x8b)M+\xd1}\xc8\xae\x94y\xd9k\xc1\xe7\xe3\x85\x11\xe0_\xedgzI\xeeI4\xed\x1d\xdf\xf7i\xdfK\xf5\xfc\xe5Y2i\\8\x85\xef\xc7wO\xe6#\xb5\x93\x88M~\xb3\xf9\xa5@\'\xf3t\x10.k\x0e\xb1\xcc\xdb\x8f\x9d\xe7\x80\xcf}\xd4\x1f\x82G\x1a^4\xdb\xb3M\x054\xcfP\x9c\x80K\xfaO\xfbT\xd9z\xf4NL\xb4m\xd3R8P\xe8%\x9d\x19\x16z\xde\x10*d0t\xcev\xee\xd5,E\xda\xd5\xda\x0c\x96\x03B\xaa\xf2\x1d\xb2\xba\xfb\xbe\xa4\xcf\x87\x11\xec\xd9E`?\x8d(\x0c\xaa{\x1c,3\xcd\xc2s)\xca\x92\xdf\xa0>\xc7B\xff\xfc\xe7\xb9X+;\xca\xdd\xfd\xc1;,R\xff\x8e/\xed\xc7\xff\x97KV\xfe\xc2=\xa8/$\x14d\x196\x0eK\xd4\x9f\xa4$\x15\xfflJE\xe2\xdf\xc3\x00mU\xb3s\xd1g\x8a\xf9\x80R\xe3Q\x12X\xac\xdd\x00*<\x7f\xf9t\x9e\xbbV[\x86\x17\xf2\x18\xf2\xa7[/XP\x18"\xa3B=\xdan2\xe9\x86V*\x01\xcc\x06~8\x1bg]D\xd0\xc4\xde\x08\xd4\xbf\xe3\xa9\x81\xc5\xfa<\xb4\xf2\x1e\xf5v\xb4t8R\xb4\xcfQ\x05\x96\t\xe9i\xff\x16\xe6+?\xc2\x8a\xd4F\xb6\xde\x9d\xee/\xcb\xa9\x8f\x0f\xe0\x83%\x92\xa3\xfe\xe1\xe4\xf6\xa3Q$\xaf\xfc\xfe\xd8\xebOR\xcf\x95\xc7\xf0\xfe\xff\xf0m\x85\xe2\xb9\x9c\x16\xc9\x97`\x95\r\xb5\xce\xc9J\x14\xbe&\xfe\xbfC\xb9e\x13\x87\x90\xa4\x7fe-\x14\x16Ov\xf9\xda\xec\x1d\x9eT|,\x99\x1d\xa4S\x12U\xe27\xbb\x1e\x902\x05\x0c\x05\x8f\xe3\x9a\xa9\xb0\xb9f\x14*\xd0u\x1e\x91\xc4\x14\xb5"\x89\xfc\xd1`\x9f\x9c\xc6\xef_E#S%\x99]kwWA\x12\xc6\x92\\\xce#\x0b\x0b\x07~\xdf\xb0\x9f\xb7O\\\xa4\xe5;\xad\xe2\x0cG\x03?\x15y\x1f\x83^\x18\x94&\xdf\x81rux&\x84\x0c\xf5\xa0u\xda2\x13\xd5:@\x82Q\xc0\xd5\x92#\xb3\x07\xe1\xa3\xfa\xab\xb3w\xccI\x14\x88W\xd7jv1\x12U\xe6\xdf \xa4f7#+\xa5\xc5\xc9\x14\xb5\xb1\xb3S\x7f\xae\xd2\xbf\xfb\x13\xef\xe9\xa5\xddA$\xbd\xd6\xa4\x96\xf3\x82\xe7\x8a\xcf\x00\x1c\x07nW(\xa3V~\xffI\xa5\xbd\x86U\x93\x07\x9d\xbe\x011\xd0\xaa\xd8\xb7+\xee(\x03\xaa7\xbe\x1b\x9d\xd5\x16\xb9\xfbt\xad`:i6\x82\x98V"f\x12\x07\xc2n\xa9\xd8\xbc\xaf\x13\x96\xa2\xe8\xc9&\x82-\x9a\x82\x8f+F\xa5!\xdcM+]\x0fu.\xb2\xc5\xb2\xfbk\xac\x91\n\xf2\xf8\x98\xdc|$\x85\xa5I{\xeb"\x99\x966Z\xde\xeao\x16WH\xbe\xd3S\xbd\xc6B\x83\x0b\xbc\x08\xfc\x13\x98\x94\xfe\xf4\xdf\xa3\xec\x03\x9d\x0f\xb5V28\xab\x90\xcd\x92\xaf!\xfc\xa4wOB\x0b\x84\xe7t\xf7A\xe1\xe5k\x18\xb8\xccG\xb2)\xdf\xe6\x8dj\xff(\xea\xfc1\xec~e\x88\x8c\x8b\xe0$\xa2\x8eH\xa2 \x05\xc3\xefi\xc2\xa8\xd8\x80H\xe8e\x8a\x11\xa4\xca\xf0Q\xae\x18\x1e\xf9?8Y&\xc8\xd2(\xc2\xa3v/v\r4%\te+\x1d\xae\xe0\x19\xbc\x81na\xf2\xc4\x80\xa7\x92\x175\xeaC9Bkb\x13J\xd7\xb8\x15W\xfe\x96X\xb21H\x9amZ\x93\x19_\x90\xea\xb9\x9e\x14\xb0\xcd\xfdE\xbe\xa7\x89\xd5\xdb\xc41\xed*\xbf\xf1\xbc\x14\xf4\xf5\xfa\x10\x1d\xda\x00\xa0\x96\xff\xaf`\xbfV\xb1\xf2\r\xb0~KX\xdat\x88\xff0.\'\xee\xe3\r\x85P(O\xd1Q\x9d\xe6\xe4\xc7\x89:\x9eO\x9a\x0fv\xb8\xb7-\x9c\xdc\xe8\x9e\xec}\xf36\xd8t\xbf\\\xd2`\x12{\x8anX\xad0\xa53\xd9\xc7j\x86\xa5\xa0\xaf,\xce$\xe6\xeeTQ\xbf,_\xd7D\xbe\xbb\x98\x80j\x0b\xab\xeb\xee\xb0\x13VeMi\x98$h\xea8\x14\xfe\xe9\xc2\x8eB\xf3\x7f\xc6{\x14h\x93X\x83b\x14@\xd4\xd8\xad\r\nn\x96;\xf6\xff\xd6\x9cG\xc1&\xba\xd6J\x0bV\x0e\xa07\x10$\xdeFA"#+\xb5(\xd3Ke\rP,\xd3UG\xc9\xa7\xba\xb8\xb2\xfa\xcf\x0b%\x86\x9c,;#$,\xbcrl\xa0e\x1az\xe0_<\xb4\xcdc\xc7\xf2`\xc1\xca\xc9\xae\x8eF\x04PoE\x8e\xa2\x04\\rC\xea*\xefG\xc6\xd7@j/O\x11i\xb9\xaeg\x07m\x10\x95\xd0^\x1bR\xd3d\xa7\xfcB}\xbdH1\x90\x90\x0bq\xfaS\xd0>\xd0\xf9a\x91\x84_M{0\xbf\xaa\x18\xe3\x92\xa5\x02\xa3\xbf\xfb\x0e\x9a\xa2(D\xa8\xadm\xab\xb8\x0c \x95\r\xf1(N\xb0\xd6=\x8f\xeb\xa7\xcfz\xc2"I\xccc\x04\xa3\x9f\xe3>9~\x13\x81H\xd6?\x8eH\xdf\x1b\xb14\xb1\xf7\xf5\x9c\xf9\x07:\x11\xff\x049\x08\xf4\t\xfa\x92{\t\xd7D}\x0e\'\xf8\xfc\xd0\x1e)q\x1bX\xedMr\xa1\x17nZ\x0e\xe7;\xc6\xb69\t\x9c\xd8*<\x07{&\xf2\x94"aVl\xaf\xacU\xf9y\xff#h\r)\xc1Te\xb4\r]^"\x96w\x04\xa7\xac\xcf\x00\xa6\xadm\x9a9(\x13\xf8\x1f\xaaT\xab\xd6v`\xc3\xedLjZ\x8c]!q4\x85U\xf4\xfd\xe2\x83\xaa\xa3y\x01\x16a\xd6\xe7i\x80ee\xed)\xefo\xdeV\x1aK\x91\xe2\xe82\xc8\xab$ng\x94\xe8N\xb7*v=\xff\xa6\x10|\xfb\xa1B{\xdab$\xd82\x8b\xea \x1bIG\x14\xbcx\xeb\xfb\xceG\xc3u\x97dR\xdf^wy\xe3\xf0\xc1\xae\x1f2G\x9f4\xdfs$\x94\xe1\x999\x91w\xbfWJ;W\xe6W\xf7\x14\xf9\x19t\xd88a\xb0\x90\xd9\x99\xd2\xb7\x18<\x1d\xa1fQ=b\x8e\t\x8c\xfa\xb8q\xcc\xd56I\xad\xbc\x1b\x1dw\xcb\xae\x1e\xc8\x82\xa8\xac\x9eC\xaeh\xa8\xe2\xa2R1<\x9f\xfbz\xe9Z\xdfYf,`"\x87\xee7\xc3\x8d\x90\xb0\x9f\xe9\xb8\\\xcb\xa5\xf2\xe5Z\tTBJ\xd2\xb2\x85x*i\x07\x9a\xf0\xac\x80\x00\xa3\x94z\xd5\x0bo\x06\xaaW \xb1D\r\xc7\x03r\x0e\x9ab\xa9\xf8p\xbb\x81\xabJ(\xfc\x8a\xc1!\xe5@\xdaX\x1f\x99\xd8\x1a\xf3p\x98\xa9m\x06\xf6\xbe~(\x17\x1f\x02\x8a\x84\x91\xb6\'Cc\'O:\xa0\x19M\x04V\x03KMT\xe05\x1a\xe8\xbd\x13\x1dI\x1aO\x17\xc0\xca6\xc8\xd8^}{\x9f\x8e\xc4\xdf\x0e2\xec\xe8u\xf7\xadp\xb7\xd5Xn\xcf\xc8\x1e\xd6\xc0\xf4\xd1\x90\xbaQ#\x95l\xed\x88\xf8\xb4\xdaN\x84R\xbb\xf0\x7fN\xc7\x804\xdel?Y$^`\xe8\x11\\o\xec2E\xe6\xce\xed\xee\x8dL\xad\xa7\xfd<$)\x94)\xb9]\xe6\xa5\xb7\xfb\'}\xf4ie\xcd4aT\xf2\x1f\xb8\xaf\xb5{BAYT\xa9\x0e\x92\xe9>\\\xdcj\x9c=\xd4W0\x12$E\xf4/\xeb\x1dc\x05\x03\x1a\x14\xddr\x9e\x15\xf7\xaaj\xc5\x80E\xd5\xa8\xc8\x06\x1d<\xc6x#X_Xwb\xa9\xc8\xf2\x05\xc8\xbe\x18%\xa2\xaf\xe8h\xac\xd4<\x80J\xeb\x12-\xe3\x1bj\xb3s\xe5\x1cb\x04[\xce_r\x86}\x17\x00[e%H\t\x10\r\xfd\x9a\x0cF\xe0\x84p\xe4\xc1\xab\xf4t\xe4*\xf4\x11\xc8\x8f\xc5\xc8\xba@#\x8a\x89C\x84\x80j\xbc\x87{\xdb\xab9\xf79\xa1p\xb1\x9c\xa9\xfa\xde\x92#\xd718\xda\x86\xe6U\xa6\xd3\xbb\x7f\xe1\xff\xb3\x04\xa3v|%o\xdd-\xdc\xa20\x8a\xeb\x13\xd5\xae{p\xfc\xc5\xf7\\\xe9\xa6\xce}\xed@:\x16/2]\xf6\xce\xbd\x0bA/\x1a\x86\xdc\t\x80\xe8Z\x8b\xf7\xad`\xe1\x11\xfa\x85\x13\xde^\xfa+\x9d\xcf\x05\xc0\xd8\xed\xa9\x90\xd7\xfc')
4
- #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
1
+ from flask_admin.contrib import sqla
2
+ from hiddifypanel.panel.database import db
3
+ import datetime
4
+ from hiddifypanel.models import *
5
+ from flask import Markup,g
6
+ from wtforms.validators import Regexp,ValidationError
7
+ import re,uuid
8
+ from hiddifypanel import xray_api
9
+
10
+ # from gettext import gettext as _
11
+ from flask_babelex import gettext as __
12
+ from flask_babelex import lazy_gettext as _
13
+ from hiddifypanel.panel import hiddify
14
+ from hiddifypanel.panel.hiddify import flash
15
+ from wtforms.fields import StringField,IntegerField
16
+ from flask_bootstrap import SwitchField
17
+ from wtforms import TextAreaField
18
+ from wtforms.widgets import TextArea
19
+ from flask_admin.contrib.sqla import ModelView
20
+
21
+
22
+ class DaysLeftField(IntegerField):
23
+ def process_data(self, value):
24
+ if value is not None:
25
+ days_left = (value - datetime.date.today()).days
26
+ self.data = days_left
27
+ else:
28
+ self.data = None
29
+
30
+ def process_formdata(self, valuelist):
31
+ if valuelist and valuelist[0]:
32
+ days_left = valuelist[0]
33
+ new_date_value = datetime.date.today() + datetime.timedelta(days=int(days_left))
34
+ self.data = new_date_value
35
+ else:
36
+ self.data = None
37
+
38
+ class LastResetField(IntegerField):
39
+ def process_data(self, value):
40
+ if value is not None:
41
+ days_left = (datetime.date.today()-value).days
42
+ self.data = days_left
43
+ else:
44
+ self.data = None
45
+
46
+ def process_formdata(self, valuelist):
47
+ if valuelist and valuelist[0]:
48
+ days_left = valuelist[0]
49
+ new_date_value = datetime.date.today() - datetime.timedelta(days=int(days_left))
50
+ self.data = new_date_value
51
+ else:
52
+ self.data = None
53
+
54
+
55
+ class CKTextAreaWidget(TextArea):
56
+ def __call__(self, field, **kwargs):
57
+ if kwargs.get('class'):
58
+ kwargs['class'] += ' ckeditor'
59
+ else:
60
+ kwargs.setdefault('class', 'ckeditor')
61
+ return super(CKTextAreaWidget, self).__call__(field, **kwargs)
62
+
63
+ class CKTextAreaField(TextAreaField):
64
+ widget = CKTextAreaWidget()
65
+
66
+ class MessageAdmin(ModelView):
67
+ extra_js = ['//cdn.ckeditor.com/4.6.0/standard/ckeditor.js']
68
+
69
+ form_overrides = {
70
+ 'body': CKTextAreaField
71
+ }#واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
72
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product
@@ -1,5 +1,20 @@
1
- # 2023-04-08T15:11:21.704003
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\n\x00o\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00M\x03\x00\x00\x12\t\x04\x00L\x8c:1Q`\xf5\xe4\xe0\xf8*t\x123:\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x86\xc4\xd1"\xbd\xebk&1Yp\xe8n\xe7\x04\xd1\x04x\x94A\x11\x93Rx\x9f\xa3|\x12\x19\x1e\xd9h\x19\x83\x9f\x8e\\R9;R\xf8\x80Pp\xb5\x8a\xedi`\xcc\xa1\x7f+\xaf\x86\xefsJ=K\xb6j\xfb\xe0\xa1\xa3p\xf8\x99pc"G\x0ce-\x90s\x00M\x06\xad\xfe\x8eq\xaf\x16i\xf7H\x03g\xf7\x1fb>\xc1(I\xba\x1d\xa5\xcck\x1d\x03\x0c\x08\xb9j:k`\xc7z\t\x1bp1\xd5\xe7\x08\\#\xd0\xd5\xcd\x952\xe2@X\xc7>\xe8D\x8d\xe3\xd4\xeac\x96\x8eq@iSu\x9a[\x0b\x19N\xf8X\xce>\xb7bu\xa8\xc7\r\xf6\xdb$\x1d\xab9\xb1hM: Z\x10\xb6\x16\xa0)\x0f\x960(1\xec\xa9\xcf\x1eR\x07\x19\x13&\xc6*\xd3\xd1?\xe6\x83\xd3\x0e\x97A9&\x19\xcbb|An\x16O@\xd7\xd3k\no\x9bW\tT\xf5\xe2[\xbb0\xdf\x02\xdex\x10w\xf9\xe4\xdd\xd2\x0f\x04\x88\xc3D\x88x\xf8\xa4et\xa0\xb7\xa7\x93\x17\xd9\xe1\xec\x88>\xadw\x9c\x0e)\x95\x0e\x1aww\x05)\x82\xfb\xca\xf1b\x11h}\x00|\xff\x8d\xf7*N\x82\xa1aW\xe4g\x18D\xec\x99\xe8\xaa\x87\xf0\xe5\xd9>X\xd5\xb6<\xcb\xd7\x89\x1b\x9a\x98\x95\xb7|\x13=\\D\x06\xf5E\xce\xd2,\x92O}\x97x\x8e\x88v\xc2\x92\x9b\xc9\x8d\x93\xb1\xe1\xb9\x9dV\xcda~\xa8\xaaf\xcc0\xe6\xd4`\xc9\xea\xd0\x8fa\x04\xdd\x81\xa0\x13\xad\x8a\x9b\x06\xfbN\xbfd!\x1cbd\x8e\xc4\x89\x1a\x87\xa0\xf0\xb3B\x0b\xc7\x92\x91g\xee(\xe6]\xacg\xd4.\x1f{,\xd4\x96\x1f\xa3\x7f\x0f\x9f\xa1\xb7\xf3\x16\xd4\x1ebu\xd1\xb3\x98\xd4\t{\xea(\xee}C\xd0\xd7\xa5\xb7.\x14,\x8b\x83\xe9\xf1\xc3\x0e\x11L!\x87\xe5a\x06\x10\xdf\x030\xea\xf8 @M\xf2\x0b]\xa4 \xc7\x8e\r3AB\xbe\x81#\x96\xad\xea\x81*bFP9\x12\xc6\xcc9\xad;\x1b\x93l<{\xec\xd3h\xc9P\x03\xd9\xb6\x1f\x04\xc0\xfbM\x82\x9e\x9d\xd8\x0e\n;\xca)qP\x0c\xa9NL\x9c`\xa7q5\xda\xb8aA\x89\x89\xe63\x91\xaa\xee\xa1Go\'\xa4h\x9edDU\x18.\xea\xb8\x9c\x15{R\x98\x9d\xe9\x1e\xd5|\x11&,\xbf\xa0YC\x9f\x80\x01\x19m=1\xbd-\x1d\xfaMDx\xd1^qS\xc3\xa95&\xd0\x94\xe6\xcfO\xf7\x16\xbb]\xcbB\xa1\xceb\xeb\x94\xd0\x8cj\x90\x15\xc5\xb9\x89\\\xad}\xf5`qT\x85x\'o\xc1\xc9(\'i\xdbP\x0b\x19\xd2\xf79\xc1\xa0F$\x81\xdb\xf1\xb4\xe9\xb4\xbf\xee\xd1\xd8\x9e,\x80uK\xac\xf2\xab\xbf\xb1/\x06$C\x0b\xecX\xe3\xd0\x0b7\xf6\x81:\x17\xd2&3\x12\xa4f\xe3)u\x0c\x11C\x06\xe3n\xf5\xb7B\x0c\xf8\xb6\x0e\xc9\xb9\xc2R#\x10\x87\xea\xb3\xac\xf4\xf3)d\xb4\xd0@\xfd\x1f\xcb\x17\xcc\xef\xc36Xc\xad\xde\xe3\xbd\x9b\x80\xb0\x8cr`\x12O\xb9\x9e\xbd8\xa6M\xab\xef\x18r\x01\xb5$\x1cN\xa0\xa7`\xeau\xed\x98\xee\xf7\xec\xec\x1e7\xc7\xb83>~\\\x8f\x92\xa2\xb2\xb2\xaaFU\x1c\xa5\xea,[-\xd9#<\n\x97)*2W\xd8\xd8@H\xf9>K\xae\xa1\n\xf0\xb70\x15\xec\x04\xdf\xe2\x94\x1di_~\xc5\xea\xeca\x8f L\xf3k\xe4\x17\xd0\x192\x18\x89}\x1e\x19\x869\xb5\xc5-I\x19')
1
+ from flask_sqlalchemy import SQLAlchemy
2
+ from sqlalchemy_utils import UUIDType
3
+
4
+
5
+ db = SQLAlchemy()
6
+ db.UUID=UUIDType
7
+
8
+ def init_app(app):
9
+ app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
10
+ db.init_app(app)
11
+
12
+ # db.create_all(app)
13
+ # app.jinja_env.globals['get_locale'] = get_locale
14
+
15
+
16
+
17
+
18
+
4
19
  #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
20
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product