hiddifypanel 3.0.0.dev64__cp311-cp311-manylinux2014_x86_64.whl → 3.0.0.dev66__cp311-cp311-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 (44) 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/admin/Actions.py +1 -1
  17. hiddifypanel/panel/admin_2.py +33 -3
  18. hiddifypanel/panel/cf_api.py +35 -4
  19. hiddifypanel/panel/common.py +98 -3
  20. hiddifypanel/panel/custom_widgets.py +71 -4
  21. hiddifypanel/panel/database.py +18 -3
  22. hiddifypanel/panel/hiddify_api.py +70 -3
  23. hiddifypanel/panel/usage.py +4 -5
  24. hiddifypanel/panel/user/templates/clash_config.yml +1 -0
  25. hiddifypanel/panel/user/templates/home/multi.html +1 -1
  26. hiddifypanel/panel/user/user.py +2 -0
  27. hiddifypanel/static/css/custom.css +6 -0
  28. hiddifypanel/templates/500.html +1 -1
  29. hiddifypanel/translations/en/LC_MESSAGES/messages.mo +0 -0
  30. hiddifypanel/translations/en/LC_MESSAGES/messages.po +194 -190
  31. hiddifypanel/translations/fa/LC_MESSAGES/messages.mo +0 -0
  32. hiddifypanel/translations/fa/LC_MESSAGES/messages.po +123 -120
  33. hiddifypanel/translations/zh/LC_MESSAGES/messages.mo +0 -0
  34. hiddifypanel/translations/zh/LC_MESSAGES/messages.po +123 -121
  35. hiddifypanel/xray_api.py +109 -3
  36. {hiddifypanel-3.0.0.dev64.dist-info → hiddifypanel-3.0.0.dev66.dist-info}/METADATA +1 -1
  37. {hiddifypanel-3.0.0.dev64.dist-info → hiddifypanel-3.0.0.dev66.dist-info}/RECORD +41 -43
  38. hiddifypanel-3.0.0.dev66.dist-info/top_level.txt +1 -0
  39. hiddifypanel-3.0.0.dev64.dist-info/top_level.txt +0 -2
  40. pyarmor_runtime_000000/__init__.py +0 -4
  41. pyarmor_runtime_000000/pyarmor_runtime.so +0 -0
  42. {hiddifypanel-3.0.0.dev64.dist-info → hiddifypanel-3.0.0.dev66.dist-info}/LICENSE +0 -0
  43. {hiddifypanel-3.0.0.dev64.dist-info → hiddifypanel-3.0.0.dev66.dist-info}/WHEEL +0 -0
  44. {hiddifypanel-3.0.0.dev64.dist-info → hiddifypanel-3.0.0.dev66.dist-info}/entry_points.txt +0 -0
@@ -1,5 +1,100 @@
1
- # 2023-04-08T16:23:30.500375
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\x0b\x00\xa7\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00n \x00\x00\x12\t\x04\x00`\xca\x19\x1e+\xd4\x1f\xe3_\x8ad\x7f\x822\xa2\x10\x00\x00\x00\x00\x00\x00\x00\x00\x8a(\x03\xa7L\xd9\x90\xdcC\xebK\x17 3\x19\xd7\xa7\x8e%\x89pN\x9a\xa3\x836\x94\xb8\xa2?\xe7\xec(L\x7fXM\xb4W\xf0\xb9\xa0\x19\x8a\xdc\x90\xc12C<\xacQ\xdb\xae\x81\xe6I}qa=z\xe4.\x1b]>\xb8W\x80S\xf4\xd8\xdc\x80Q\x93\xd6"\x00`iX+\x9e\xbfm,\xa0\x086\xfapD\xf4\xa8E\x88x\x9cf\xb2\x97^\x18\xfd\x9c)\x98\x92\x18%\xeb\nP\x1df(\x1cO<r\xeb\x9f\x1c\xd3>\x89\xfdY\xfbY\x16DX"\xa5\x1c\xae\xc6"\x82\xc9\x0c+]U\xc4HjM\n\xa1O\xe0\x91\'\x03\x84\xaa\x89\r\x16 \x9c\x171H\x9d\xcf!\xb0\xa9P\x1e\x83\xcb\x84E\x8a\t\xe4\x99\x0b\x8a\xb9\xc4\xc3:\x81\x03\xb0zH\x9aV\xbd\x00\xc0\x96\xc2x\xd4\x8a\x84\x97U\xad\x15\xc2=y\x91B\x05\xd5\\\xf5\x83\xd0\x06\x88!\xdb\xae\xf4\xf6s\xb8\xda\x8c\xfd\xb8\x1bX2\xb4\xdb\x88Ko\xdc\x1b\x0e\x8c\xc5xM\x9c\xdd\r\xac\x0b~\x95 \xd5\xd6\x03\x95)ci\xaa\xa3]=h\xb0\xda\x19C\xb9\xfa\xe9\xc3\xdcvHK\xbf\x85\xc7Of\n\x1e[\x94\xa9\xe7\n\xc8\x81\xb4\x0c)\xd9$\x80\xc0ZA\x08\x8a\x90\xb9\x1f\x98j\x9fk\x1b\xf3L\xbeh\xa4\x1eSy\xf2\xedg\x8ef\xe6[Q\x89\xca\xb4\xcbw\xe8p\x97\xe0;\x84h\xc8\x07\x12}S,\x82CfD\xda\x84\x00j1\x98\xad\x14\xbd\xfe\x95\x9b\\"\xe0u\x0f=\x81\xd9\xedj\x8c@\xc2\xf5l\x7fr\xbb\x9b\xc0A{A\x9f\x97\xa1\xde\xac\xbaa\xc3,\xa7\xba\xd5\x80Y\xb9\x88\x82\x98\x80\xe8\x97t\xb3\x91\xf0\xfeu\xde9\xd0\x1a\xc0\xcd\x0f\xbd M\xc7"\x03\xe6\xaaKO\xd7\xef\x1a\x19\x02O\xce/\xd6\x1b\x04\x0e\xc3[\x9b\x8d\xb2j\xd0\xcd\xe8\xef\x96\x95\xc0\xd4*\xfe\xb5M\x9fl\xab\x95\xdfD\xc6O=\xf3\xd28\xd3@Y"?am\x934\xa0\x9a\x92\x9e\xedv\xd0\xf0\xf1x\xaf\xa2\x88y^\x1ek\xb2%[\x90\x89\x0e\xca\xe2@)D\x90\xb1\x84\x0f\xd8\xea\xd8\xa8\x1aJ\x15K\xe9\xd2\xcb\x902Rd\xc9\x9e\xc0\xe5\x9an\xb7D^\x12\xa0|\xdb\tl\xed:\xba\xe5iAcsQ1:\x110\xf1\x91C\xdf4c\xeez\xc2\x10\x17\xdf\xa7\xfe`bbl,59\x80\x17\xd2\xcdPG\x87C@x\xc6\xa5\x9d>\xa8\xd7\x8aQ\x05\xc3\x19\x9aS\xd5\x04*KF{8\x0c\xcf\xee\xda\n\x05\x07"k\xe2\x9f\xfb\x8b\xfe\x1b!\xca\x13\x90\xc9\x08\xd7\xb0\xc5\xa3\x16\xc6\xce\xc5d\x0b\xeaM\xcc\xd9\x90\x80E\x9b.\xd7\xcb\x10\xea5\xfb\x17dQd\xc3n=\xc1\xf9\xe3\x87p\xa5{i\xdf$\xcc\x05\x0f\xf7C\x16]*vr|\xe0\x89\xc3\xd1\x8d\xe5\xd7\xeb\xaa\nv\xf2\xb1\xf5wL\xf8,\xc9\x0e\x85\x19\xc7lk\'`S\xca\x94o\xab\xdb"\x06x^\xa5\x97\xe1\xc9Na\xa8\xd6\\\xa2\xaa\x94\x1b\x8c!\x07e\x93nZ\xf4V\xc8k\xac\xfcp\xa7\xf3\xc6Sj\x1b\x8f|\xdb\xb1Cl\x1c\xcd\xed\xc6\x11rj\x1a\xe0\xcc\xbe\x93\x93PR|\xad\xd6\x9c,\xcf\x9c\xe8\xe6\xbc\xa1\xaf\xcb*\t\x98\xe3\xff\xacB\xb6;-3\xd0\xfcTkB\xa3\xbd\xd7\x11!a-\x9e\x8cWp\x84^\x00\x1fg\xba\xca\xdd\xdewtC\x9a5\xedW\x00P;Yg\xa4\xb3\x88W\x9b\x85f\x16\x1c\x9e\x02\xb2\xf8\xcfC.\x90\xe7\xfa\x88\xfd\x1c\xf6\x18j\xa4\xd1\xd9\xc2vD\x05\xd7\x035\x96\xa0\xd6\x94>\x93\xe1 \x9e\x06\xf3\xb2\x86\xdd\xd8\x15\xa4\xe92\x06v\x89\x06#\xb7_a\xb8j\xdf\xb2\xb9%;n\xb7\x13\xc0\x99\x9d\xd4s\xe3\xd8\xd1\x86\xae;&B\xba|\xee/\x9f8\xa8Y\xbf\xf1`\xf0\xcf\xac\x959\xdd!X\xd5\xc5\xfa\xc2y^i/\xd7\x98\xf0|\x07\xf8\x0eV:\x9d0\xc2\xe9|\x98#\x8a\xd5jC\xd9$\x8f\xcfX\x95lt\xf4|\xe1\xdcwT{\xbf\x89\xd1\x9f\xfb\x99\xab\xda/]\xd4\xb1\xf7\xb2\xed\x03\xa9\xde\xb2\x83n\xa5i\xa3\x99+\n\xcf\x12\x84\xd5e\xadP\x0c]EX\xc5E\xd6\x95\xdc\xde~\xc9\xff\xae)\x18{_A\x02,\xa0\x8cK?5\xab\xd6\xd8\x8a\xeb ]\xa5\xe26\xb1\xc8\x01\xba\xa3\x98y\x08\x98\x10\x01\x7f;G\x9b\xb0\xb37\xae\x12\xe5&\x8a\xe7\xea\x1f\x8f7\xd4P*(\xc0\xba\x9c\x853\xdd\xc4\x18\x105\xeb\xbfj\x15r*\xf1\x9f\xb9\x11\xbc\x7f/\x1a\\\xeac\xd7\x8e\xc1@\xbfF\x9e\xe7\xed\x84\xa2J\x12xX\xdbM\xb4\r\x92\xbc\xf7\xde\x9d\xe8\x98%6\x1f\x1aQ\xbc\x8c\xc7K\xd7J\x80\x87.\xba\xac\x7f\xd2z\xa4\x1cz@\xdd\x0f\x8f)\x18eZ\xdc \xb0\xe6AV\xf9>\xf4\x0c*C\xd9\xcfH\x9c\x89\x0eV\x1doc\xf5\xe5\x0ci\x964\xdf\xc2\xfc"\xdf\xe1\x1e\xab\t\xdb\x85\xe4\xea@\xa0i\x9d%Y\xe4\xff\xfe6\x11\xa1\xb1g\x13\x13\xf8\xf9\x13\xb8\xbd\x82\xc3K\x95C\x94\xa9\xea\\\xf9+\xb8\xa5\x15\xdd\xaa\xa5\xd7M\xe9\xf2[\x10\x95\x1f\x85\x15e\x1a\xb6v<\x0cn\x10\x9bm\xa2\x9c\xfa\\\xe6\x17\x8b\xa4\x95\xe7Pn\x8a8\xcb\xc4"\xa42\xa9\x04\x92\xd0\x92\x9c\r6\xec\xe1\xd5\t\xf6\x85\x08\xd4v \xaf&\x94\x92\x8f\x87\x94d\xab.\x8e+l:h<\x9e\x0f\x1b\x99b\x0eD(\x7f\xbb\x8buh\xe4\xa7\x0bI\xf1i\x9c\xa5U\x9apf\x82\xe6\x0f\xf0\x07/\xaa1\xdb\x9a\x8d\xa7zP;\xcbC\xf6\x99\x8d\xb4\xec:\xacc\xef\t\xf5\x13hV\xcd\xb1\\\x07\xd1\xc8,\xe3\xba\xa3\x8e\x9c~\x0bF\x94\x91(\xbc\xf6\xc3g]d\x98S7\xf0)w\xf24W\x8b1p\xc6\x9a\xdb#\xdc\xdc>\xfbE9\x9b9~\xd5!\xd6tunq\x93H\xaa \xc82J[,\xdb\x02\xa2O\xfev\xb8Ss\xcb\x1d\x18\xc8*\xa2]ZY\xf1O\x96\xf7\x85xQ\x18\x8c\xb0^-\x9a\xc0\x1d\xb9`\xe0\xcc40V/\xd1u\xb2\xf3\r\x0f\xb3h&:\xcbM:\xcd\xe4]\x82\x9f\xd6\x8c\xee\xfd\xe9\xd4\xe0rJf\x82F\xa7\x00\x19\xa8\xea9r\xaa\xf0kL\x93r\xaf\xed\xbe\rf=\xc67\x91\x129\xb7\xde]\rq\x0f1\x19=\xbd]G"\xab\xd4\xca3\r\xd6jl{b\xca0\x7f\xf2\x87\xc7e?\xd4\x95]c\xf9\x86\xa4k\xbf,\xf3\xe8\xf4\tp\xc6\xe9;/\xc8\x8b\x14\xbfD[\xb3pI\x12\xc83\x96\xbfK\xb8\x17\xd6\x12D\xce\r\x9bc\xafkvZ\xc1\x9a\xd2\x9b\xfa\xfel\xd2\xb8\xb9\xbajF\x8e\xf7<\xef\xab\xeeb\xd4*\xf61*\xcc\xdc\xdc\x0f\x8b\x8a\x1c\x1e\xf4!\xfaqH\xab\xffwW\x13i\xa1\xf5\xf3n\xecM\xcf\xfdT\xa8\x11\xc2_\x10\xe5\xb46\xa5k&@\x0f\xb7\xb36\xcc\x1c[\xbct{\x05hm\xe6\x8d\xb4\x9d9\xadt+\xe8\xeee\xc2K\xb4u\\\x13\xa86\x81G\xde[\xe8\xf2\x12\xdb\x0c\x9aG\xa6\x9f\xa6\xa7\xeb\x87\x1f\x8a.\x99\xadN\x11B\xad\xc63\xd8;\x822g\xcc\xc1\xe24j4\xbfj\xde\xb7b`\xe9mWk\xc0\xa8\xc1x\xc9\xed\xc7\x9a\xa9\xbb \xe1\xa8\xd6\xae\xb0\xb0\xb9R\xd1E\xe1j\xd0\xf2:\x12\xb6kP\x9cd\xc7>\x8fN\xdec\x19+W=\x92\x072a\xaf\xe0J\xf5_\xb6\xfd\xf1\xbd\xc2\xe2\'\xcbm\xfb\x87\xd0*!v\xaf\x92\xff\xcd\xd7j_\xf7(\x8d\x97\xc0r%\x14)\xf4\xafW\xcb\xf6\xd0\xca\xdb-\xf5\xe0\xc2gj\xc3:o^r}S\x9e\x7f\xafc\x9d5P\\\x85\xc8yn\x8b\xbe \xf5\xdf,\xb68<\xa4\xfc\x97\xcf\xb4\xbf\xc4y/^a\x8e+\x00\xc6$\xa4Sp\xda\xf4h\xfa\x8d-\xfa\x17\x19 \xc7>\xcf\xcb\xfak\xe1\x92"\xb1\x92\xfe\xc9\xc7t"?\xf6;e\x89\xbcv(\xc0\xbd \x069U\x10\xc6\x87bn6h\x95\xe6i\x03\\\x8a_.<+\x82\x8f\xb2\xe6\xc3=\xea\x1a\xbf\x0b6~\x8d|\xce\x0c\x87\xdb\xfd\xd2\x87\xc5\xe4P\xab\x01\x90\x15c\xdb\xc2x.n\xf8\xc0W\x98\xdf\xb7QOM\xf8\xd0:H4\xa6\xaa\x0eK\x81\x86\xa8\x0c\x85\xa5x4\xd1\x93}\xbd\xd6\xfd\xaf5w\xe5\xcd\xce\xec\x18\xa4e)\xb7\xe9\xf9\xb8\x88\xd0\xfd%\xfb\xc8\x89\x1cH\xd6<\xd0\xbb\x85h\xd3\x1c\x18\xce}!Y\xb1\x84\x83$\xad\x8a \x11r\xca\xc8\x8d\xeeC~2\xbe\n\x95\x8b\x0f\x0b\x1b\xa2\xfd)\x16\xc3\xa8_\xfc\xcc\xdf\xcc\x07\xba\xe5\x17\x07\x93\xaa>\x8a\xc0q@\xba\x13\xb3\xa7\xec\xee\xddGt\x8a?\x14\xeb$\x9ds\xc4\xf8\x9a\xc3\x97\x19r\x80\xe8cm\x80\x00\x81\'\x01\xc8|s\xf4$0"4\xdd#<6\xb6b\xa5\xaa_pH\xb9G\x9f\xf4\xfe\x000\x95\xf0\xf7\xbe\x8c\r\xb8\xf2\x94\xacc^PK\x08\x85b&5;\xbd%m3\x1f,\xbf\xbe\xd0\x8d<\x8d\x16\xa8\xa2\x91C\xfd\xc14|\xe5p23$\x12\x15\xe1\xa2\xb9G@5\xc5k$\xd1wQ\xbf}?\xc6J\x91\x8e\xc0\x9fsABGR\x02\x03\x86\xaa<\x0fp\xf5iK\xd0<\\\xe9\x97\x95\xca\x8f@T\xf9\xff\x1d\xe6n4\x8f\xc5\xaf\xc5\xc6\x84`\xcbT\xcd2\xa4{\x0e\xd3\xf5\xb3\xc7\x92Gi\x0fX\xc5uM\xe2\x8ah\x1c\xf6]48\xda\x01\xca\xca\xb2\xf1\xf3\xb9\x9a\xf7ai;\r\xa3\x1c_\x88\x0e\xa6B\x143\x9d\xbcy\xa6\xf7\x8ew\xf3\xec$\xc0\x12\xef\x9f~d\x1b\xad\x93\x02\\\xd4\xc1\xf4\xf53F\t~\xf1\x19\xd0>RX\xbbt\x17Q\x1aG\x11\x9d\xf2\xeds\xd2\x1a@f\xeb\xb9\xe4?\xaf\x81\x0b\xcbl\x12\x0c%\x1c\xdd\xbd\xd5\xb8"\xa5m\xdf\xdad4\xf9G?F\xc7@\x17\x0b\\\x97\xae@\xb9%\xe1 \xebFTE@\xb29\xef\x9aP|\x88\x8d\x1e\xb5:\xe1X\xac\xda\x05\xfa\x12n\xffG\x13\xe9\r\xe6#Z\xbew\x08\xaa\x85\xd7y)<\xea\x9b\xb1\xeb\x8c\xbb\xae\x8e1\x0f\xb5\'\x80L\x06(\xc8\xe3\xe6e\x16w\x14/\x8a.P\xb5k"\x14\xf2\x9e\x04\x8aI{\xd8\xc0%\xea\xd9)\xcc\x87\\\x85\xb0\xe2P8\x8e(\x8c\xf0\x89)@\xa5\\\xc0SL{\xde\xe1\x81O\xd7<\xed\xaeDv~SSj[4\x9b\x9aQU\x81\x87$P+P\xd7T\'\xf6\xcb\xb4\xbb\'tf\x01\xe8In\xb5\x81\x05P\xdd\xa9\x0e-QC\xdb\xf8\xecciDm"\xdf\x0b\xc0\xcc%:\xf3c/\xa6Q\x8c\x9eV\x10\xe8\xe2\x8e\xd7\xbdzT\x93\xe6Y\xd3\'5\xb8\xb1\x0e\x04\xf2\x16\x8b\x905\xd8\xb5a\x94\x13r\xdc\xc4\xbf\xac\xf8\x04\x8f\xf8<\x04\x83\x1b(\'g\x16\xa0\xe56\xa7\xcc~\x99|3f\xcb\x18\xa5\xf2X\xb8=\x180\xdc"\x9b\xfb\xed+\xc5\xfc\x9f\x89\x87\x9e\x88\xabX\xccx\x95\x88\xa2Tb\xd8\x888\xba;\xcc\x12\r2\x95B\xb8\xb3\xf9\x83\x8f\x14\x97\xfbm=\xffB8\x18\xb22\'\x94\x1e\x965G=\x1eD\xc3\xccl\n\x13\xe4+\xa5\xd7x\xe2\xc5\x10\xab\'\xbfl\xd8cSt\xf0\xfa!\x1eI\x03\xe8\xdf\x99\xda\xd7\xd5\xd7\xbcR\xac\xb7i=)\x82\x95`\xd6\xc8\x06\xb5X\x1c9p\x0c\xb3//\xef\x8f\xa4e\xc0\xbd\x8f\xa7A\x04w\xa83\xd5\x7f\xfc\xa6\xd0\x12\x80s\x88):\xd9\xf7\xcd3\x16\x88\xaf~y\\8S\x8d\xb4\'6\xde\x05/\xf2Yd\x8dm\xdd\xc9\xfe$\x02T\xc4\xe7Q\xcbp\xac;\xa6\xb8\\g x\\\xf1!2g\xe4\xc2\x16F\xcfT4\xb2\xeb\x19\x15\'\x85`[\xbe.\x89\xc9+[?\x88RA\xc9\xf4\xd6\xa0\x9c\xe73\x9bE\xd6\x12\xff\x9e\x98\x8a\xd2\x8b\xa9+\x97\xfa6\xe1r\xbb\x8a\x92\x16\xe5V:\xcd(\xf0.\xaa\xe1\xe6\xfcNz\xae\x86\x02\xe9\x94\xcf\xd0\xbbLNErX\x04\x04e\xa0\x8c_\x0c\x13\xb5\xcdM\x146\x04\x18\xa9\x08\xab\x1b\'\xb3gR\xed\x17w\xb6\x10~\xf6\xa5\x80\xce\xd3t.\xda\x0c\x00}s\xe5\xe0\xcfZsG\xc3\x89\x9d0\xd6\xac}z2\xe0k\x0b[&\x8e\xf9N\xfb!EZ~\x98\x91\xce\xf6\xcf\xea\xa3EG\xb7\xc1d\xb0X\xea\x1c\x8c\xad\xa1\x14\xaa\xbbYlY\x95\xc6\xcf\xcfFD%\\\\\\\xcc7PG;/\xa3\x7fE\x8c\xee2\xf2\xfafFO\xe5\xd5\x0fv\x7fa\xc8\x03k\xedjoa\x9a\xfb\x061\x06\xd5\xae.rP#R.\x94A\xb9\x11\xf5+\x9f+\x15\xb3\x0c\x13\x95\xc8\x03\xae\x8f`F\x12F\x1aa\xc6C\xb2OD\xe6\xf6\xb5|\xe9>>)?\xb3F\xa5L\xe0\x07;I]\xac\xba\xddk\xfd\xf2 o\x1d\xd2\xe2]\x91E\xe4i\x0b\xff\xf4\x0fDR@Cx\xdf\xd1\xa9\x1b\x91\x08\x12\xdb\x01-\x03\x8c\xb0\xf5;\xc52\x8c\xc3\xf8b\xa7\xe3GV\xa7\xac\x1d\xd2y\xf6\xa1S`b\xefp{\xc9v\x81\tD\x93\x03\xa1o\xf3\xd9>V\x9f&\x13\xa2\xd5\x96+w\x9d~\xea\xf1A\xa9Bn@\xee]\x10\xa92\xc7D\x1b\x8a\xcf\xd6\xf4Q\xb4B\xb1\x81\x11Y\x12\x10"\x18wk7\xcc\x1e(O`\x92\xceZ\x89\x1c&2\x08\xd2\x803\xe4\xd6\x9es\\"\r\xf0\x1e\x91jVU\xcf\xe8E\xddr\x90\xa1-\xdf\x10\xc8\xd8\x946\x80\xd3\x96L\xeb\xb3\x12\x83-\x99L\xa2\x03D\xebY\x83\x87J\x02\xbf\x14\xb8\xce\xf2W\x14j<4V\x88\xd8\x0e,\x86\xf7\xc5\xfdh\x92\x1d\xf8\x06\xf2\\L\xc6\x91\xe6\xa47E\xb9]jYHJ\xbc\xfa\x99\xddv\xbe\xf6\x11[\xe7\xdf\x97\x82E\xd3\x0e\x0eh\x87b\xfa\xdd\xeb\x1e-N\xfb\xe4\x81z!\x06\xdf\tb\xe5\x04\nHk\xd3(\x92\xff\x8a\x0b\xc8\xe8\xb0"\x89\xbeB\xb8\xf2\xb4\x14\x14k-\x1c9\x1f,\xf4&7w$\x81\xf7\xa4\xa2\xe4/\xe7L\xe5\xaeR\xe3\x1b\xd8\x9cm\xd0\x9f\x93\x93\xdc\xfe.?\xc3\'zq\xeb\r\x92\xafkg\xd3\x97%\xfb\\ \xec\xb3%\xccO\x85"k\xab\xcb!0yQ\xfeS\x0c{\xaf\x97\x87-\xfb>\xb3\xf2\xb7\x18\x94yW\x95$\x93\x13N\x02\x01\xd6\x9d\xe56\xe8e0\xbd~\x03\x05s\x18\x966\xe8t]\x16`\x98(\x19\xa4`\r\xc1\xb6{\xaa\xa9\xf0\x06\xcb\xf8\xd7p!w\xecH\xd3\xe2\x00\xea\x9a\ne]\x0b\x08\x82\x13\xbe\xaf>!\xa8\xf3\x83\x13S\xed\x1a\xca^\xd9~\xe9j\xdc-\x1em\xa7\xf9+\\\x8cY\x9c\x15i\xfc3\xc0Pz\x17L\x14\x15\xd9\xe6c\xd8\xb2\xeb`\xd3\xc5\x9c\x95\x0c*\xf1\xd6U\xb2\xfd\x0f\x98\xaa\xef\xdd\xc3\xbf\xda_\xea[\x99J\x03\xbb\t\xa1\x19V\x9a\xca8D\x15\xf4:@\xfb\x82\x93\xa1\x0c\x17\xac!k+\xd9v\xf9T\x9aG\xdd\xb2\xf2\x94\xb2\xfc\xb7\xaa\xc1\x95V\xa3fI\xf9\xa7\xc5\xba\x06U\xba\xe8\xe9\xe7v\x1a*\x9e\x028\x13\x0b\xa5\xc01\x9fy\xd3\xe5\xf5\xcai\xf5\x02\xe3\xf6\xca\x1deG\x9d\xade"\xacJ>h\xea\x02\x1af"B\xd6f\xdd\xa8x$\xac\xb4\xbd\x06<oJ\xad>\xc1\xa1cI\xefE\x17j\xafa\xc0\xe23\x1byeV\xbb(2\xbc\xe7\x8f:{\xa7\x85N\xd7\xc2\x9f\x04\xc3]\x8b\x1a\x0fZ\x0c^\x9e\xf7\x16\xcbM{\xf3\\[\x93f\xa1\xaeB\xfez\x05\x17\xe8\x99\xdc\xf3eK\xd5\x0e\x03q=\x9e\xfb\x82\xeb&q\x8f9\xd7.eB\x15n\xe5\x9f:\x15\xa8r\x84]\xffd\x94\xe5\xcen`\xf4\xd6\x9e/\xdc\xbe\x9b\x99\xe0\'\x81\xa4\x91\x8b\x81\xee\xd0x\xf9\xf7\xfd\xcbo\nY\xb5B\x15\x98}\x8dy \x83\xc6\xc2@8?2\xcb\x91\x8a\xa4e\x8c(tn\xd7\xec\xf8\xaf\x9a\xe5Ad\x18y\xca\x1e\xaf\x11\xe4\r\x8d\x9d\xba\x12\x06\x97\x88\xb8\x16\xc6\xc8~\xb3\xf3>\xde%\xa6\x82\x03\xb0\xb9c\x15K\x1a\xfd.\x01\x17\xbd~1\xcf#6\xe9-\x8b%.\xaf\xab\xe1\xd5\xa6\xe8?.=\'[8`TlN\x13\xf6\xba\xa7{\xd1\xd9\x80\x9c\t\xd4\xf9\xbff\xc6\xb3\xf9b`\xaeh;-\xbe\x8b?R\xe5\x05\xe9jC\xb7\x0e*:\x85\x0eB\xe1L!\n\xb7\x1f\x81\x0fA\x0e?\xcc\xbb\xf1\x06o\xae9\x8eg\xfb0f\x950\xbc\xaaV\xcf\x170\x04,\xf1m\xa6\x1d\xf5\x1b\x96\xd6\xc0g\xf7\x9d\x1e\\\x00\nJ\x11\x8cT\xda\xed\xb8\xa5V\xee\x19|\xf9\x95""7f\xf5\xf4\x0eZ\xb0\xb0X\x0b\r\xf0\xd9L\x0c\x16\xc5\x99\xd1\xf9\xc8\xe3\r\nn\x1b\xa2Kefj2\xce\xf19(\xaaz\x1b\xbd\xb2\xe3\xe7\xfa`\x92\xf1)JV\xee\xfaS\x1a\xee\x86\xa6\xf8\x0b9\xe8\x93\x1b\xb5\x7f\x94I\xee\x00\x19\xb8]6\xb3\x00^ \x01\x0fQ\xa7u\xb6\xad\xb3\x08\xae\x1d\xf5l\x93\x15L$w\xa9\xdbm\xc1\x0c8\xd7\xad\xfcs\x05\xc3\x91\xd8\xa5\xe2\xcb\xd2B\x85\xd1wm\xa3ax&\xf3MdWtG\xbc}OV\xb5\xea\x84\xf5\xfc\x89\x85\x891\xb5A,\x8a\x88\xdf\x050\x897\x18\x00\x81&t\xa3\xd0\x93Y*\x11\xe4\xf2\x92;\x9aW\n-t\xf9OO\x18y\xa9F\xf4\xeb\xb1\xf7\x99\xa4\'P\x9e\x89Uk*`\x80\x1c\x8a\xf7Bj\xd7\xfaY\xd2^\x1e\xb9r\x01\xe9\x98\xf8t\xea\xb3\x9ay\xce@\x18\xdbI$w\'\x913\xe4\x1d\x89\xb3\x0ex:\x94\xe3^M\x05S\xa2\xec^\xbb\xad\t\r\xd9\xb8\xcaa\xdb\x97\xe4i\xe1\xce\x82\xc7\xe6~.\xda\xea/\xa5\xf0Rgp\x94\x13G\xec\xf1\xfd\x99w*g\x91~\xf5\xeb7\xbd\xc7\xf7\xf9Z}VJ\x93s\xde\x85%U7\xc1\xa2?\xe3+\xa4\x8a\xc8\xd1\xfbK\x98\'N\xf9\xf1haE\x85\xc5\xccu\xe1\x96\xba\x0f"\x87P\xf4\xb2X[\x93Vj\xf9[\xd3\xb8\x91\xa0\n;{\x0ftEE\xfbx\x01\xb6\xdc\xe9\x90\xbe\xbd\x89\x91\n\'=J\xe4\xa5\x90\x14\n4+\xc5\x9b\xa3[\x85V\xf0\xb2M)\xdb\x1c\xc9\x13d\xf7\x15c\x9a\x11\x87t?\xe5c)`G\xdb\xa9-5\x02:l\x80|\xac\xad \x8d\xc7\xdb\xa3%j\xedUM2\x99\x88(\x85\x0eJR\x07\xba\xf4v#\x17\x9a\xcd\xfb!\xdd\xb3\x1e\xc5\x93\xc27p\xf1\x9e\xa0\xe2\xb2\xfc\xa6_S:\xf1\x06\xfdI;\x80\x90e\xbec\xd3\x8f\xea\x01\x04\x10\x8e\x85M\x95H\xe6\xaf\xd2\xa7\xdd\xbb-\xa9\x96u\x11\x18\xb0\xcf\xba\xabD\xd1<raM\xfai>\x13W\xc5\x9dWgc\x86o\xf7\xb6\x89V\xfd\x9b=i!\xf5W\x1e#*\xad\x0e\xf7Z\x01\xd3`V\x82]\xa8\x03Fp\xf1V\xf0\xcd\xc6;\x1a}[\x13r\x9dj\xf9\x93\x92\xf9b\x86~\xe5\xf0tM8\xec)\xecu\x9a\x15\x85\x14\xdf\xd2\x9d\x91\xa8Ff\xa4F\xce\x1fR/\xd0\xce\xbd\x83(!U=\xd8h\x050s\x9e\xc1\x87\x00\xb9*H\x018\xa7\x9d\xdfVa5L1S\xeex\x9dd\x1b!\xfc\x0b\xff;\x15\x8a\x96pn\xb5\x16_N\xed\x01\x87\xa0\xe5\xc1\xd4\xfa\xd7\xcau\xf9j\x9ei~|\x07|\xdc\\\xb3\xc2kj\xcd\xba\xfd\xa7\xf4\r\x9a\x17\xb4\x9dR(\xc6\xcbJ\x16\xe8!\x16oI\xb2Ep\xf4\xafX\xf9B*\x02%\xc9\xa5_RT\x18\x05\xc6 \x11c$0\xd5b\x0b\xbc\xd7w[c\xa1R\x91\xd4\x92*\xb9\xda\xa5\xfb\x16\xab\x06T\xb2AC\xc5[\xc2\t\xfe\xe2\r\xcd=,^b\x07\xb0\xdd\x91\r-\xb6^H\xfav\x94UY\xd9\xf8\xdda%I\x1e\xba1\xf6\xdeLG#:Lo\xdc\xe7m\xa3\x0b\xe3\x93;\xa5\xf4=\xaa\xda\xa9\x8b|\n\xab\xb1{\xbd\x9c\xa6\x83\xdfDB\xdblh[\x9a\xab\xb0\x9d\xdb\xc33\xf4\x13\x89\xbaSk\xa6}0\x14\x97C\'\x7f\xe5g\xa2\xa7\n\xfe\xfe\x0cLb\xd8.b\xc2\xce?=qei\xba}\xdc\xbf\xfae\x07\xc9\xc4K\\V\xf9j\xc5\n\x02}i\x8d\x7fP:(\xedF!N[\xc1\xfc\xa5KD\xcf\x04!H\xb3Lrt\xc9\xc1\xf6\x17F\x0fI\xd5\xb1\x1f\t\xc8\xf2\x15\xca\x90\xe0\xe4\x7fm\x07\xa1\x13>Z\xb8B5\xe6m(\x0c\t\xb5\x85zw\x89c\xc2\x11\x00\x7f\x15$\x94O%\xa3&\x05FeK7\n\xa4.?\x8b\x1e\xba&G\xdb\x7f\xf5\xbfn\xeb\xeb8\xf4!\x97t3\xc9\xb1\xc9B\xa5\xc0\xac-\xb1ax\xaaU\xba\x85\r\xc3@\xa5]!\x1a\xb2\xf3\xa4\xf5k\xcak\xf0\\-,S\xe8\x9a\xe8\xc0g\x1a\x03\xef\xc8QG\xc9m\xa4\xab\x8a\xbc\xc8\xa7\xcd\\TE6\xec\xf1\xb3\xe0\xe8\\\xeb\xb4\xccs`\t\x079\xde\xb0\x1e\xe3[`\xe3\xfaOD\x92m\x02hc\xcd\xd5,\xf8C\xa3\xad\xa5z=\xaf\xc4\xf7^\x92\x85X|\x9c\xc5\xcd\x04\xce\x85\x88m\xed\x8bL\xddb\xad\x0c\x9cI\xc9\x98\xaf\xd3$\xbf\xaaUi^\x18\xd3\xa6\xfaS-J$\xbb\xd2\xff\x99\xf4oaF\xffZq\xd4\xb3\x00C\xabn\xa4H\xe2\x08\xef\xe1K\x1a\x1a\x93a*\'7\xe5\x97C\x01;\xf1\x1e\x03\xb1\xebJ=H\xc3u\xba\x1f]\x01 :\x1c\x0ec=\xdaX-\x0beM\xbf7\x9e\xf6N\xfc\xc9(4U\xa1\xc1\x12\x95\xea\xc4\x9a\x11\t\xe2\xef\xdcN\x1f\xa2\x9c\x80\x93\xed\xdf\xbe()\x1e5\xc9\x81\xaf\xf6_\xa1\xfb\xa7\xfe6\x8b\xb5\'\xed|\xeaM\xfa\xfa\xe5:9=}\xfds\xc0\x10\xef\x9a\x1cAH\xd2Wg\xbd$Bb(g\xe4(a@!1\xf9\xff\x87?\xaf?G\n\xa84\x06f_0C\xf4\xbc\x96\x0fmZH\x83\x7fR\xce\x89\xa5\xde\t\xb3\x85\xfe\xd09\x81\x86\x15\xf0\x82\x03\x17\xcb3\x96\x02,\xf4\x9b1\xd5\x7f\xe7\xf4q\x11q\xc18S\xf8\xe2\xd5\x84\x86OqOP\xf0Lc\x9at\xbb\x96\xc1\xfa\x1d\\V\x18\xa8\xf9\xcf\tz\xb9z\x96\x14\xe6FM+$\x06\xeb\x8c\x18E\xaep\xe9\xcd\x9cccL\xf1\x11\x86U\xccW\xcc\xfc14{\x01\x9e\x90\xa2\xb5\x13\xac\x9c\xb7|\xc6v.\x02\x19\xbf\xa7\xb7\xabY\xd7\x00?\xcd\xd0H\x03\x0c\xeaA\xf4iGIK\x1b\xec\xce\xfe\xc1\xf7\x1b\xe7%Y\xf2\xe31\xbdlZiQ\x87\x93\xcf\xeb\xc0\xdc\x8bOD\x90\xd7\xf6\x91\xec\x9di\xf9Vl \x12^\x18\x0b\x90\xd8\xdc:\xca\xe9\xce\xc8Khb\xe80\x8a\xdf\xd7\xe96\x0f\xaa\x1fy\xac`T\xfb\x9d\xddI\xe5\xaf\x01\xc8\xd5\xef\xdf\x10 1\x0f!\x15F\xe6\x9a)\xe2\xee\xa4A\xf1\xe6\xeb\xd1k\r\xf3\xb3\xe2%T\xf5n\xd8\x01\xe5\xe9t\xf8\x94)\xf1\x9f\x08\xb0a*\xf6\xa9\xe5\xdd\x00\xafr\xe4a\x01\xd7\xb8-\xd6N\xf2\x19\xb0\xf9\x083\x06\x95F\xfcN\xca\n\xe7v\xa0\xc3x)cG\xc3\xe6m\xb9q\x02\xf0h\xa5[E \xf8NK\tXN\xfc\x18\xda2\xd8[\xe2.\xea\xd1u\x01\x0e(]\x12\x01\xa6a\xdb\xa4N\x97Hy\x9ew9H\xdd\xdb\x92|6\xa0\x1a\xdf\x96uz\xa3,9\x0ciO\x05\x8c*\x8b\x07ud\t\xdc;?\xa0\x9f\xa01\xd9\rSh\xb9\x05\xdf\xcaz>\xd8C\xd3\x82\xd2\x03C\xd4\x90\xb5P\xba.\x9b\xc7W\xb5]Z\xe6\xfb\x8c5\xbc\n\x07Vc\xa6\x1a.\x19\xed\xdb\xb4\x80&\xbe\xcdt\xbb\xd2D\x1e\x0e8j=\x0c\xba\x1e\xa7\x90J*\x19\x06\x8b\xe5\x10\x10t\x08m\x9d\xfb\xb0\x13\x0e_\x12\xa7\xb4\x9a\x1a\x9c\xc8\xf2\xc74\x88a\xc6T0dq\xc5\x15/\x17\xfe\x9a(\xb4\x00\xea\xc5\xa9[\r5\xfb6x\xc8rX\x96\x8bV\xb3y\xcd\x92\xac\x1c\xd8\x97_\xcb>\x99\xe7\xbc\x98\xe6\x05\xe3Q\x1e.\xd5=\xf6\xccD\x08\x1fe\xaaV\x94\xe0\xa2@\xc2\xd4o,\x84_A\xd58\x98\xc4J\x16\th\x97\xf6R\xd8\xdbO\xf5%\x9b\x8d}-\x07<\xe1\x91\xe8\x041Zk\xc8-\x8b\xf4_\xb6\xaf,\x94f\x83\x94\x92\x86o\x02\t\tHN\x83\xdf\x85uY\xb3\x03`\xc1l\x12\xa9\xd3\xeaL\x1a7oF7\xb1&\xf6\x93\xe33A\xf0\xed|\x89\xc0\x01\xe5\xaa\x06,\xed\x9aj\xb4a9\x9f\x14\xf4T\x816\xd76}\xebq\xe8QZ\xca\x80\x12\x0eiY\xd2\xd4\xca\xf5S\xad\xc8\xda\xef\xc2\x80-L_\x95Hi\xf9\xef\xca\x89\xcc\xbd\xf9v\xd8Ei\x01o\x17\xa4U*=E\xaf,\x8e7%\xc8\xf3\x92\x0b\x06\xbfG\rt\xd6\x15~\xb2e\xae\xd1\xc4h]\xa4\xde\xb2(\x08\x99:\x99\xc8\xdf\x0e\xa7\xdf\\\xcb\x8d\xa1\x8b\x07\x98|A\x00#\xd7\xd1\x8cw\xad\xb5\xc6o\xbe\xdcW,*\xae\ti\xf9S\x15W\x8b\x8f\x0f\xcf\x02\xa0\xd5]L\x12\xa8R?\xbaC[1\xa0K\xd2\x1a4\x138hr\xc4z,v\x1bL\xe7\xc51I\xcc\xc0)O\xff\xb8\xb9>\xd2\xe1rI`\xc6\xf5=\xad\xf3\x8e_\xbd^|\xb0\x19\x14\xfbI\x02&\xb6\x89\xdc\x83\xcd$\xe8w\x97\x8c\x94\x1en~\x96+\x96\x8e\x80w4\x8d\xa7\xcc\xe8\x81\x8c\xc8\xfbnQ\xccPz\x91\xed\xd7%\xa1i\xcei\x88\x01\x89\x15\x85`\x9dt\x89\xae5\xdc<\xbfmL\x14\xcb\xc4E2He\xbf\xa9\x81\xdb\x1f4\x7f\x04P\xd1\xfc\x1f\xd8\xc5\xdb\x9ciZ\xea\xef\xb5\xd12^\\.oLw\xf8K!\xe3\xed>\x843m\x8fv\x8e\xc7N\x10&\x03a\xa0\xe8\xb9\t\xacG0s;\xcdH\xd2\xcf]t%\xdd\x8f\x91\x9d\x8f]\xa7\xd1n Y\xbdb\x17\xb6\x18\x0b\x8b\x08\x1b\x18\x0b\x9b\xd7\xde\x92\t\x90(\xcf\xea\x0eS/\rH\xf5O\xd7\t\x1f\xb9\x12\xab\x8d3kd\x18\xd5K\x8c\xa7d\xe5M\xff\xe7x\x00\x88\x8e\xc8\xe8?\xc2|\xcd\x1d\xb2\xd5}X@^\x9dG\x95\xfb\x89\xf3\xd8\x1bb\x0b\xae\x06\xf6\x08RD\xcaX\xf9\x9e\x1b\xeb\x90\x82\x02\xb3\xcb\xa8\xb85\xd3-~J\xee\xc2\xd3t\xc0\xb9x\xee~\'N\x07]\xf9<Sm\xb8\xd5:\xaa\x8c_-B\x94qzF\xfdg\xd3\xe2\x0b\xd1\xb5\xb8\x10\xf9.@10mc\x86^\xe6#bf[\xe3\xbd\xa4\x1e\x8fl\x83\xcfC\xae\xbc@C\x89\x0e$Qz\x00 d3B\x16\x07\xaa\xebk\xf3G\xabp\xcf\x8e&\x98.O\xff\xf4$3t\xdc\xd2\x03\x940U\xb9\xe5\xb8\x7fq8~\xbe\x92\xe0\x05\xf4\x1bg\xbb\x9c\rX\xd6\xbb g\xfd\xee\x93\x160\x14C\xe9c\xffQ\x81\xf8\xbc2^\x15\xa0\x01x\xa3\x9a\xdc\xc6\xac<"\x91\x90\xb8\x8a\xeb\xe2\xcaj\x83G\x96\x8aUan\xc6Z5\x9d\x8d//\x05G\xfe\xd5F\x90R\xf8\xda^.a\xe8r\xf17\xca\xc0\xe1\xf3\x1c\xf1\x08}\x17\x11\xd6\xba\xc4\x97!\xfb\xe5\xef\xf3E\x96\xcc_\xaef[\xd3\xa9\xd1\x07|\x18k\x00`w\xac\xc1\x98Q\xc4\x0e\x84\xea\x9dF\x0f\n\x8d\x05\xed50\x1b/\xa9\xfc\xf5\x10rM=+\xab\xb3\x86G\xcf\x1e\xf3\xa1<C\xea\x94\xd8nJ\xcb\x83\xe5\x82\xbd`\xa71\xbb/\x89x\x05\xc4\x9b\xac\xd0\xeabs\xc0\x99\x94\x8ay\x96\xa8\xe0\xb9p,-\xaeS\x04\xdc\x8d\xa3\x80d\x0c%\xa04\xc5\xab\xa5\x1d/u\xd6z\x8aR\\]\xf8g\xa4>\x00\xe5\xd6\xa4D\x85:<\tzl\xf7\x96\x0bb\xd6b\xbb@\x0f\x15\xc9\r\xe8v\x16\x8e\x82\x9f\xe4\x8a-\x87%&t;\xa0\xe7\x88\xb3\xfd~\\m\xb9\x8eb\x8b\xbc\xf2\xa5:\xad2\xc0\xbd\xd6Jt>X\xe5\x1b]\x81\xb8\xda\x06g6\xb1\x95 \xf3p\xc7\x91\xe8\xf9\xd5\xf7I9\xc2/\xd5\xdb\x1c,\xe4X\x94\xa4C.\xaf4B\xe9\xc2\xe8eE\x0fl\x0f\x1c\xd7\xab\xb5i\x18\xe5\x1csG7}\xe8\xff\xe0a\xdc{\x13D\xce\x8a\x88\xdd#\xe6\xb2\x8a\x1d\x93\x16\x01\xd4\x91\x1d\x1eU9\x86/\xe5\x9b\x06\x1fA!\x99\xed`\x98\xca$\x95l9dx\xd64#\x88\x8e:X\xc1\xaf!qud{\xeb\x88k\xcd\xc3\x8a\x1ex\x83\xd1\xd1.\x1e\xff\xe6\xfeE\xf2#\xd7\xa0\xb0\x8e>\x9fef\xc5\xa3m\x94\x93\xea$\xe4<=\xa0\xf2\xafr\xa8\xfd/}\xf1\x7f\x87M\xa8\'\xbd\xbe\xb4\xa7\x19\x84\xed\x12\xa3\xa3\xf4\xc5\x9c\xe2\x034\xbd[\xd8\xf0\xaa\xefs\xe8\xaf\xbf\xa1\x01\xee\xfa\x1f\x05\xa7\xaf>"\x97\xcbqU\xc4\xce6\xaa_\xe99\xf1\x9c\x9c\xc5\xb7\x14\xde\x15i\xa07\xc0\xa1E\xa1\xaf\x8fa\x8d\xc2\x1aP\xbdtnz\xb9\xef\x1d\xc4\xbb\xe2\x10\xf4G\x9b\x86QI \x17\n\xd0kgr\x14}:\xab\xfcU\xa0\t\xbb\xff?|\x92*m\xdc\xba\xd0i#}3\xb0uN\xbbJ\x8a\n\xa6\xd0\xb7\xe8\xc2\x9f\xc3\x94\xa9\xc8\x96\x9c+U/\xa4t,6\xcb\'\x03\xa3\xc1\xda\xff\x0f\x9c\xa8R\x1a r\xa8.\xfa\x93\xac\xea\x06\xb1\x8d\xfc\x99B,\xb5[H\xc8\xce\x94\xbax\xeauH\x9f\x04z\xa40\x05\x80\xd5n!\xd9\xa3\xd7\xdc\xdcK\xfe\x04?\x00\x81\x86\xd6Lch\xda\x0f\xb4\xa2\xe9^\xde\x96\x0f\x00t\'\x13\x19Q\xdd\x05\xa93\xb1\xfah\x12\x07\xaet\x83\xd4\xd7N\xdf\xb5JL\x7f7L\xa3~\x04\xeeJ 7\xd2\x08\xe3d\\v\xcbBM:9u\xa6=B\x0es\x9b\xb5\xbdK\x8d\x92E\x11\xe8\x96\x96{]\xd4\x8cD(\xec\xa8\x0b\x13v\x0b"\xf6&6x\x848\x00\x16\x9c\x07\xe3|>\x0e\x93.\x1ay\xaaw3NbQ\x0c\x84w\'\x98L\x9c\xee]\xb7\x03\xa1\xa8\xb2s\xa0\n\xe34Q\xec\x92\x02p\x7f\x95V\xed\xf7\xa7*\xd8^\x91d\xb7\x01\xf0s\x05\x0clr\xa2\xb9W\x06 %\xbbr\x0b\x7f-\x9b$\xd2\xc9\x82.v|\xa7Y\x1a\xc8\x14\xb8\x84#\xd1j\x9eI\xef\xa2\xf7Y\xa3\x8bQ5P\x84B~4q\x11\xfd\xbb\x01\xd8N\x9a\xd3K\xbai<\xe6\xf2\xabOUA\xf7{;\xccw/M\t\xa8\'\'\x92\xa1\xa4p\r\xfc\xff\x82y"J\xdb\x9d\xa0\xae\x10\x90\xfa_\xfdr\xb5F\xb4oV\xbd\x8c\xe5\xa2Y\xf1vA\x02\x93\xc4\xfc*,\xb7S\x19\x80\xb1\xee3I\r\x05x\xa3\x9f\x17G\xeau\xa3\xf2h\xe5^\xdd>\xe8\xe23\x7f[c@ C\xb3WZ6RO~\xdd\x83\x16\x1ep\x97\xf0\xec\x93\x95\x9a\xd3s \\`\x84.D\xe9N\xd6\xc9\xab:7\xbd\xc2\xfa\x1a\xb0 ?\x11\x02{\xb34\x9c\x1f\xde\xd0\xe2N\x85\x90\x8b\xf1c\x00O\xc3\xa6\xa4\x99\xbf\xe1W\x0f\xaet\xd5\xbf\x89\xd7\'\x10\x99\x84}\xbc\x00\x99AX\xf3\xb1g\x85\x00.D\x15\xcax\xf3\x11\xf2\\\xbe\xe9)\xa2\xe2DJq\xba\xc1S\x1e]\xacvJZ\xf0\xa7\x83V12\x82\x14\x97N\xc6\x98\x1a7Q\xa7\x16\xa7\xc7t\x9a,\xd1\xe4J\xeb\x05\xcd_\x94\xc9\x04\x0e\x8f\x17\x99\x83\x18\x15\xe2\xde\xbbj\xd6\xc5\xbf\xa9\xed\xee}o\xf6\xe5r\xaeHL\xef\xd7\x9ey\x9e8\xb8\xbeA\'\xdf\xbf\x89\xa3JI\xbb\xc2\xafT\x90\xb64js\xb4\xf9\xccS\x81Lc\x99\x16g}\xaf\x9c\xf7\xdcS\xc4\x87G\xcd\xb2b\xf8J\xdf\xdf\xf7\xc9\x9cI\xac!\x95\x88u\xe8\x08<\xb0\xe8\xe6\xe2\xe7\x16s0\xc76(k\xacc\x8a\x86\x89\x84\xba\xdf@\xec\x1aB YU\xf8.\xa7@\x98\x16\xff\x8bL\xfe\x03\xeb\x0c\x94\xaa\xd3\x87x\xab|\xcc`\x94\x0ef\xbeA\x91\xf7\x82\x7f\\\x10\xeb\x8b\x1c.E\xa2+`\xc4\xd6\xd2-\x85\x96\x83H\x95\xef\xdcC\xcf\x9a5\xc2\xdb>\x158\xdeKJy\n\xb8<\xf1\xae\xb8\x9aa\xc7\xf1\xd9\xed_\xac\xeb"\x96\x05Q\xecT\x0f\xb0\xad\xd7\x17\x8f\x8c\x9a\xbc1{>\x1a\xc0\x99\x93W\xecQ\x15\xe2~\x1c\x95+\x02\x14\xf9`^\xc6\xec\xaf\xa67\xfa!$\xe7\x83B\x8a\xdbu7]?Cc\xdb\xfd\x9ei\xf1\xb6\x97\x93%k\xae>\x88"t\x99Z)K\x90\x9d\xd3\x86\xa1\xe7\x1d\xa3 ]\x0c\xe58\x143\xe0"\xdb\xe4U\xaa\xc1Y\x917\x00[.Kh\xbb\x105VQ\x8di\xd1Ee\xe0\xd3\xff\x10&\xfaL-\x8e\xfc\xf8\xac\xf0\xbbv\xa8\x89\xec\x03\x82=@\xcc\xdd\x9e\x81\xb4|k4\x90@\xa4\xeck\x17\xec\xfd\x9b\x1c\xb0\xb0T]\xea\xae\xdc|\x96!\x16Nb4\x97\xdb\xe1vU\x87\xd3\x1d8w<\x8dD\xa9-\x96\xf1$\xc4\xd6\xf9C\xf7v\xbfO\x8e\x02G\\\x03\xe4\x05\x87\\\xa2W\x1by\x1e \xf9\xd1A\xea\xc3\x0bF/%Z`\xd9;\r2b\x13\x84E\xe4\x95\x91\xbc\xee\x0c\x1a\xed\xa8\xe9\tSS\xceoQUg\\\xe6\xfc\xc2\xd9\x83q\x80XE\xef\x01\x06\xab\x05\xdb\x19\xecYB\xc7\xfaX\x93K`\x9a\x05z\xf57\xc6\xa7\x0c\xbdI\xb0\x1b\xef\xf3\x9fD\xcfG\x1b\xd5\xa1\xe4\xdf\xebb\x15EP\xe88\x93U\xcd\x91\x9b\x9d.\x87\xb1\xdc\xbd\xf9te1\xe4\x83\xb2\x99WH\xb9Ac\xd0\xa0\x08\xfe&\x16\x8d\xab\xe3LJ\xa4\x1bN\xa0\xb7\rz\xbeo\x85\xfa~\xbcX\xa2\x8e\xe5W\r\xfb\xef()\xe6\xb2FR\x1b\xd3\x8b\x0cj\xc7\xad\xec\xb3\xfd\xc7\xa9\x93\x91\xbd\x1e\x7f\x97\r\xf7\xe5_\xfc\xae.Xh\xc9]b\x98\xa6\xab\xf9"\xc0\xd6e\x7f\xc0\x96A\xde\x8b\x0c\xb5\xd8\x90\x02\xe0\xae.I\xd9S\xda-\xeb\xaeT\x7f\xe0\x1aI\xd9\xe4\xdb&w\x86_\xee\xed\xb2\x15)\xf98\x98\xa2s>\xafq\xba\xfb\x9f}\xd2\xe2L\x1e\xdc\xc2\t\xb8\x9e\xd1/-\x89\xed+\'\xc3\xe5\x08;K\xe2\xe6Y}p\x84X\x7f\xa5\x0eo\xb3\xcc\xbd\xa433\xc2c\x18\xda\x1c\x19f\xf3\xb7\xeeF\xa6\xe6\xcc\xdb{\x8d\xc0 \xd6\x14\xc40\x008>\xda\xe0\xac\x95&\xb2T2\x1e\xe52J\xcb\x1e]\xa5hc\xebm\x1a\x81^\x98\x97\xe0\xe7\xe1[M\xa1\xaf\x8f\xb6')
1
+ from flask import g, jsonify, abort, render_template, request, send_from_directory
2
+ from hiddifypanel.models import *
3
+ from hiddifypanel.panel import hiddify
4
+ import uuid
5
+ from flask import g, send_from_directory, url_for,session
6
+ import traceback
7
+ import user_agents
8
+ import hiddifypanel
9
+
10
+ def init_app(app):
11
+ app.jinja_env.globals['ConfigEnum'] = ConfigEnum
12
+ app.jinja_env.globals['DomainType'] = DomainType
13
+ app.jinja_env.globals['UserMode'] = UserMode
14
+ app.jinja_env.globals['hconfig'] = hconfig
15
+
16
+ @app.errorhandler(Exception)
17
+ def internal_server_error(e):
18
+ if not hasattr(e, 'code') or e.code == 500:
19
+ trace = traceback.format_exc()
20
+ import lastversion
21
+ last_version=lastversion.latest("hiddifypanel",at="pip")
22
+
23
+ has_update= "dev" not in hiddifypanel.__version__ and f'{last_version}' != hiddifypanel.__version__
24
+ return render_template('500.html', error=e, trace=trace,has_update=has_update,last_version=last_version), 500
25
+ # if e.code in [400,401,403]:
26
+ # return render_template('access-denied.html',error=e), e.code
27
+
28
+ return render_template('error.html', error=e), e.code
29
+
30
+ @app.url_defaults
31
+ def add_proxy_path_user(endpoint, values):
32
+
33
+ if 'user_secret' not in values and hasattr(g, 'user_uuid'):
34
+ values['user_secret'] = f'{g.user_uuid}'
35
+ if 'proxy_path' not in values:
36
+ # values['proxy_path']=f'{g.proxy_path}'
37
+ values['proxy_path'] = hconfig(ConfigEnum.proxy_path)
38
+
39
+ @app.route("/<proxy_path>/videos/<file>")
40
+ def videos(file):
41
+ print("file", file, app.config['HIDDIFY_CONFIG_PATH'] +
42
+ '/hiddify-panel/videos/'+file)
43
+ return send_from_directory(app.config['HIDDIFY_CONFIG_PATH']+'/hiddify-panel/videos/', file)
44
+ # @app.template_filter()
45
+ # def rel_datetime(value):
46
+ # diff=datetime.datetime.now()-value
47
+ # return format_timedelta(diff, add_direction=True, locale=hconfig(ConfigEnum.lang))
48
+
49
+ @app.url_value_preprocessor
50
+ def pull_secret_code(endpoint, values):
51
+ # print("Y",endpoint, values)
52
+ # if values is None:
53
+ # return
54
+
55
+ g.user = None
56
+ g.user_uuid = None
57
+ g.is_admin = False
58
+
59
+
60
+ if request.args.get('darkmode')!=None:
61
+ session['darkmode'] = request.args.get('darkmode','').lower()=='true'
62
+ g.darkmode=session.get('darkmode', False)
63
+
64
+ if request.args.get('pwa')!=None:
65
+ session['pwa'] = request.args.get('pwa','').lower()=='true'
66
+ g.pwa=session.get('pwa', False)
67
+
68
+ g.user_agent = user_agents.parse(request.user_agent.string)
69
+ if g.user_agent.is_bot:
70
+ abort(400, "invalid")
71
+ g.proxy_path = values.pop('proxy_path', None) if values else None
72
+ if g.proxy_path != hconfig(ConfigEnum.proxy_path):
73
+ abort(400, "Invalid Proxy Path")
74
+ if endpoint == 'static' or endpoint == "videos":
75
+ return
76
+ tmp_secret = values.pop('user_secret', None) if values else None
77
+ try:
78
+ if tmp_secret:
79
+ g.user_uuid = uuid.UUID(tmp_secret)
80
+ except:
81
+ # raise PermissionError("Invalid secret")
82
+ abort(400, 'invalid user')
83
+ g.is_admin = g.user_uuid == uuid.UUID(hconfig(ConfigEnum.admin_secret))
84
+ bare_path=request.path.replace(g.proxy_path,"").replace(tmp_secret,"").lower()
85
+ if not g.is_admin:
86
+ g.user = User.query.filter(User.uuid == f'{g.user_uuid}').first()
87
+ if not g.user:
88
+ abort(401, 'invalid user')
89
+ if endpoint and ("admin" in endpoint or "api" in endpoint):
90
+ # raise PermissionError("Access Denied")
91
+ abort(403, 'Access Denied')
92
+ if "admin" in bare_path or "api" in bare_path:
93
+ abort(403, 'Access Denied')
94
+
95
+ if hconfig(ConfigEnum.telegram_bot_token):
96
+ from hiddifypanel.panel.commercial.telegrambot import bot
97
+ g.bot=bot
98
+ # print(g.user)
4
99
  #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
100
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product
@@ -1,5 +1,72 @@
1
- # 2023-04-08T16:23:30.549240
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\x0b\x00\xa7\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\x94\x1d\x00\x00\x12\t\x04\x00/\xe5\xc4\xb3\xe66\xc2\x99\xb9S\xb5\x84\x9be\x0f\xf0\x00\x00\x00\x00\x00\x00\x00\x00|\x16c\xd2\xd8$J\x90cY\xba\xb0\xec0\xeb\xfd\xf2\xb0C6\xb4\xa6Q\xa1\x0e\xe6h\xc6\x02\x11\xb9\xd0(\x19\xfa\xc7f\x13\x19\x84s\x88\xa1\x1diM$\x1ac\x94wV\xdd\xe5\xb7z\x03\x9b\x8f\xa75sr\x99\x07\xff\xfd\t<\x05\x06P\x9b\xb2\xef!\x01\xc3\xbal\xb4\x95\x05\x8b\xeb\xd5\x0c;\x11q\x07^\xfd\xcasC\xb7\x9b\x8d\x13\xd1\x01\xaaW\x13\x1b\xdetX6\x0f\x01\x1e\xa5\xc1C.\xbd\x05V\xc9)\x9au\x19)S^T\x1e\xec\x10\x84K\xf3>\xe4\xd7d\'\xc7\x99\xf0\xde::\xcc\xc5\xc2y\x98NZ\xd8w\xcc\xa3a\xdeR\x0e\x9am\x18\x91upT\xd7\xab\xc3\xb1\n\x06\xcc"L\x06%\x0c_\x18u~<%\x162sE\xfe\xe1\xfa\x8a\xd0\'\x0e\xb3\xe5y\xd7\xea\xa7J\xd8\x04\x83\xa1\xffc_\x93\x83\x9d}\xb4\x03\xed\x99\x85B\xf6\xa4uw\x1f;\xdb\xd4\xa9\x99\xbf\x10\x88\xc5\x81\x8d\x8a\xb1\x9d\x08i\x93\\8\xd7\xee\xbbV\x91\x9d\x8d)\xbcor\xea\x1a\xb5\x8f$s\x85\xeb\xbe\xee"Gq\x8c~hDn\xe0\xd5\xe5:\xb7^R\xd4\xae\x8b\xab#\xb8\x02.\xbf\xb2N\xc0Z\\\xe3\xe7u\x10\xae\xf5I\x1c@\x1d\xc3\xed\x83\x8c\x1f\xfdL\xa4S}\x88\xc9\xf1\n\xf4$\x84\x91\x11 B\xd8\xbd\xab\xb8\x8c\xdb\x7f\x9f\xb4u|\xef,\xb1P:j*\xe85\xea\xbc+]t\xf8j\xbaC\x91\x94\xd6\x98\x1c[lg\x84H\x9a:\xaa\x14+\xa0\\p|\x8bEH\xf7#\n\xe0G\x16\x86\x85\x10\xec\xeew\x9c\'*\xe1\xd1\x8e\xdbz\xa4w_:\x0e\xac7+\xf2\xd6)/{\xef>\xf8\x15b\x9c\xf0O\x96\x8e\xe92\xc2\xa34\xdd/|\xcd\x0fx\xa3\xe9\x01\x02&\xca\xe9\x1f\x18\xec\xaeZ\xc8}x\xdbL\x87\xa2\xd5A\x1c\xed>\x85M\x98\x10h\xaf\xce\xae\xc8\x14\xa4\x8e}\x8f\xcfc\xf6\xaf\x95\xb8\xba\xa2\x0f\x8cr\xf8\x199Z\x8aG\xc8_=\x1a\xe0\xf0B\x07y\xa1\xa0OH\xce\x03\xf4\xbe\x07\'\xc5\xe6\x8a\xff\x170r\x1f\xa7sER\x83\xf3^\xfe\xec\xacl\x8e\x93\'\\\x870\x95\xb6\x15V\xae,\xc5\xe6E\x81\x95\xdd>+\x80\x99Nl\xab\xba\xf4\x80\xe0Qpl,\x02\xa1\x9bm\x8af\xbb-\x9b]<\x18H\x95\xd2\x88\x87\xa8 \xf0\x9a \x87\x90\xb3\xb8\x1aF\x97\x0ee\x11 .\xfe\x89\xda \xfb\x10\x8c)f\xd2`\xf0\xc3\x10\xf8\x13\x82\x96Tn\xeeB\xabU8\x16\x91\x00\xb3U)gR\x99.s\xe5#Z\xdc\xf9:\x8a\x15\xb1\xccQ\x88W8\xe7\xd8\xa87v9\xcc\xeav\xc1kH\t0\xdf\x15\xe5\x1b\xd8\xff\xb9`\x18\xc0\xd2\xa6\xe1\x1c\x8d\xaa\xfb\x84\xf3m\xd3\xd18hge\xfa\xec\xc8(\x80KXI<\x7f\xc4\x99\xc1\x13\xa4\x00LyK\x1f\xa1\x01w\n\x81\xa3\xf5 \xb2P\xc5\x10\x0eXp\xbb-yLAGsn\xed\x01B\xa4\xd9\xd0,\x04\x8f\x0f\xd2\x02\x1d\x80\xe1fnc\xa4\xb8\x98\\+r\x8c\xcf\xf1\xf5\xeb\xe8T\xca<E\xa1\xb5\x1c"\xe6\xe1\x93\x82X\xb5m_X\x9c\xab\xd8>Q\xe5c\xc4\xf6\n\xae\xed(\xa88\xa2\xc0\x0e\xf7\xd7\x88\x1f\xbb\xac\x0b\xff\xd9\x19\x87\xc7\xc6b\xad4\xd6\xa9\xde\xf9 \x95\x19\xf7S|\xbaPIN\xc3 \xb5T9o\x93\xe4\xd0k\xa2:\x12sj\xe3\xbc\xe4\x92<\x17v\xe7\xe8n\r\xc1\xa6\xb51\x94\x8eN4\xb5\x0f\x17\x80D\xad\x1a\x00\x9a\xfd\xf1\x90C\x8b\x8fR\x14c\x1d>o\xf5m\xdc\x1a\xe5C:a\x00<=\xcb\x8au\xf4<[\xc8\xc2g]\xb4\xf1\xae(L\xdc\x87\xd2\xa8\x17$d1[\xee\xe7\xfa\r.\r\xa9q\xc7\xf58\xb36\xcf}-\x90\xd5\x13"\xaa\xf0@\xb8M\xc9y\x1bF\rg\x00a\x85\x11\xeb!\xfd\x17+#\x85\x8d\xd4\x8e\x9b\x9d\x8f]n$L\xf0\x92R\xa8\x96]o\x07\\\x9f\r\xc9T6mu\x05\x85\xf4\x92~\x88\x01\xf3\x16\xb2F\x10[k\xa7\x9d\x16y\xc4\x89\x7f\xaa[\xad\xdf\xb7Z\x0e\xa3\xa3k\xe4\xcd%\x18\xa5%\xe3\xaaH1\xe8nXrg\x1d\xbf=&\xe5\x9d\xc3JA\x1a<\xd6\xd2%\x80\x93638\x8e\xde\x8ad\x8e\n\xd1[d;\xbd\x7f}B\xf2\xe5\xf2\x81C\x929\xfe\xf4Q,/F\x8d\x90Q\xaf\xce2"\xf4)\xba[\xf6\xd3b\xbe\xd3|K\xa4v\x11\xd7Ro\xd1\xb7;S\x9e\x03\xbd\x1f\xba\xc8m\xdd\x94\xf1I\xde=\xe5\xc7\x9a\x869\x00\xb4\xdb\xde\x99\xb2\x18\xc3\x19\x0e\x8eK\x94\xb9=\x98\x1a\xfd%\xa1\xb17\xad\x1f\xf9Q"G\x9a\xeb\xef\x1e9v\xe4|4\xb1\xf4\xbe\x8a)\xc7(\xe9\xa3!\xb9\x97iV\xe8\xca\xd7\xedt\xb0j\r\x17\xfc\xec\x1aI\x84LG|:\xe4\xaclY\x81\x06\xbc\xcc\xce\x15\xf2\xdem\xca\xe9\x7fc\xbd\xb58X;\xb6\xe2\xdc\xa0\x18\xd5\x8e\x8f6\x1f~\n\xe0\x92[\xdc\xa4\xd9d\x06\xd2\xde\x0e4\x04T\x1a\x00\xcc\x9d\'Y\x01\xc9\x0b\x84D\xa9\x14\xb7\xfd\x0e\xe3\xae[\xb4a\xbeW\xa7\xa6\xb6\xa4\x9f\xd3uT\x11Bd\xb0\x94\x14\xd0F\x86^&8|!\x84\xec\x02\x81H \xbc\xf3\xa6\x8f\x0c\x9f\x8b$\x03\xa8\x97E\x98\x9d\x0bFD\x07d\xc2\xf9\xa2\x8f\x03\x04u\xbd\xb1\xb6\x98x4|\xfc17\x12n)\t"\xed\x19\x86f\xf6q/\xc3-\xd9\xdaHk\xbb\xe8~3\x9c\x9a\xbaT\x07O\xae\xd2\xc3\xcd\xa5\x93\xd3z"\x91:\x8eo\x19\x9e\x11\xa2\xe1\x0c:\xd49\x8b\xdc\x87\x9e\x8e\xb5>\x15G>"\x1a\'\x9e\xbd\x06N\xbc\x8c_p\xf9T\x1c\x83\x927yXoX\x89\xc0\xd7\xb8g\xc2\x87Rd=\xddQ|Z\x15\x913\xc0\xe8\xa3\xfaR`\x0f\xa5\xb3M\xdb[\xe5\xf2\xf1\xba\xd4\xfa\x04\x83\xe5_l\xebt\xc4X\x872u\xefB\xee\xba\x83\xb1\x90\x1e\x0f\xbcp!\x9d\xd7]s\xd8\xcb\xf1x1\xa4\x8b2\x80\xfb6\xe0W~\xe3\x04m\x9e3\xe73n)\xa4c\x07\x87\xd0\xb04p]\xf2R\xf1\xbe\xac?\xdd\x94=R\x0e\x94\xac\xa2\xaa\x1f\xfd?\xc3\xb5\x97\xcfA\x977#\xc9)\x06\xa2i\xc1\xd6\xc4\xcc\x1cTs\x9e\x88,\xe7\xff\xecBx{\x15\x90J\x12\x12J\x8f\xe8\xbbU\xb9-q\xe5\xb4?F\xec\x99\x05f{\xe5}\\\xceB(\xa3\x17\xa1U\x86\xbbC\x8e\x08\xe6fR(\x92\xa2y8\x0eH\x87b\x1bQ}\xd0\xbbf\xcbT\xa6\x96\xb9H\xdb\xf5F\xff\x00\x0b\xb3\xc2\x9c\xfb\xdb\xd2\xfc\x86\x9d\x0b}n8{]}\xa4\x19\x0fP1)2\x90f\xa2\xe7\xe8\x067("g\x8e\x94\xdc\x106\x04\xc7p\xd9\x8c\xb2V\x13TF\xf2B\xdc\xc9\xfb,\x9cut\xad-{\'p-g{\xe3\x12A\x8bu\x1b\xbf\x83#7\xf4\xbc\x0b\xb7\x81\x92\xce\x8d\xed\x17\xd7\x9e\xa2I@\xeb!7\xe9\xa8\x95R\x90\xc7/\xa3w?\xef\xd2:\x98\xbd#\xe4\xd8\nO\x8ao\xa4w\xcca(\xe0\xff&\x99\x98\xc0/\xc6\xcbO\t\x15!N\xa9\xf5S_jr\x8e\xcb2\xcc\x08\xe1tTF\x91h\xeb-\x18\xc6\xdd\xce6O\r\xed-\x1b/\xe5\x9ah\xe2\xce\xeeN\x82\x1b|\xe8{>\x16\xf8\xe4f\x1e\x00\xc8\x94^\xfe\xfcV~S\x868\xd3\x1e\xf1>\xd0\x1fh\x8a\x10\xcf\x95\x03\x08\x03k\x8bu\x90y17\xd63D,C4\xe1&\xddg\x88\x96\xc2\x0c\xf6\xa38\xf3\xcb\xad\x96G\x8f\x0b\xa3\xf6\xe6v\x81\xf4q\x10\xc3q\x00\x7f\xa0\x0c\x98\xf4\x16\xd0\x03\xc2y\x0c\x91\xc5p[\x96\x97q\xa4f\xd5\xe0y\xb7O\xf9q\xc5AP6\xfa\xeec\xc2o"\xf4\x9c\xce\xee\x8c\xc6\x87\x99\x84[P\x7f\xbe\xea\x12JZ9d|\'\xf8\x1f@}\xcb\x7f\x00)\xe6\nS\xc0\xcf\x15\xdf\x07\x9a\xe5\\?\xa3\xe3\x1c\xd6\x11Y\xa9F;;\x95\xa7\x86\x16\xfd\x80\x8dvs\x97\xda\x07\xd7By\x8c8\x87\xd4\x02\x01\x85\xc7\xa9\x01\x8f1\x0e\xb7\xf7\xc4\xbe\x8a\\\x19-\x8f\x87G(\xbb;[\xbeAF\xcb\x9br\x8cf\xb8Y&95\x19?\xbbk(J\x1e\x01U\xa2\xa7[\xbe\xdc%%\xd5\x1d\x8a\xbdX{\x97\xd6\xd244;\x1eA\xc3m\xecJ\x9f\x87\xe1 MK\x19r\xa8`\x82\xe2\xc7\x98\x18\xea\xf85\\x\xe5\xa0\x97\xf0W~\x81#\xedP!\xf3\x18\xeb\xa8p\x837\xd6N\xe1I3l\xaa\xa2+\xc3C\xda\xc5\x00\xb1\xca\xc9\xa1\xd9~\xb3\x8de{\xb3\xe1`P\x08\xa8,\x90\x8ei\xa2g!a\xa3\xae\x8d\xc4:B\x1fT\x86\x01\xa3<\xb8B`\xd8\xbdz_Z\xf8+\xa8\xc9\xf2\xdc}fq\xc3\x04A\xf8bb\x8c\xba`\x8f\x84\x1f\xc0\xf9S_"O[R\xc8\xbb!\xd5;8Y\x13v9\x1e6*\x1a\xbbP\xcb\x8c\xd2[\xd5\xc9\xfb\x03\x17,\x0e\x92y\xb8\xe0sl\xdd\xc5\xb2\xdd\x9e(\x17\xc6\x8c\x8e\x01\xcdp\xaa4\xb7\xf7\xe1g\xa7\xb9\x03w\xbc\xda\xfap\xe2\x8b\xff\xb4\r\x89-\xb9g\xac%@%5\xf0\xde\xb9PL9\xc4\xf4\xd6\x9b\xab}Bi\x0c\xe2\xb2\xc1Z\xae\x92lU6=D4V\x86\xe2o\x88\x15\x19\r\x12\xd1e\xeb\xd9\x1e\x92\x89\xee\xe2\xa6_\x06\xa7%\xcb{\xdf9\xf72\xd2\rCF\xd1|D\xe1\xb6\xb1\x8889r\xfe\xfdA.\xfao\xb1`\xf8\xb2I\xbf\x12JK\\RhA\xbf\x1a\xb3\x7f\xe6\xect_8\x89\xde\xb7\xbc\xa0?P\xa0Y=\x07\xe1\x80\xafg47\xf8x$r\x1a\xfe\xd7\x94\xb9\xa3\xcf\xcdj\x8as\n\xd2sV\xa2r@,;\x07\xbcR\x01\x12\x17K\xf5Y\xef\x9c5"q\xd8IH\x1dX\xdbn\xce&T9\xad\xee\x86;\xee\xd0\x08\x07\xd7\xd0\x0e\xb9\xc8s\xbd\x83\x02\x0b\xb9`#\xac7\xbc\xe7\xa9U\xa8\x0cG\xcb\xe9O\x82\xe4)\xfc\x08\xbe\x82\xdaZ\xb1\x9a\xefM\xa5\xde&YVt\x92\xe6\x96\xa8\xab\xfe\xb5\x18\xf4>\xcfG\xf2I[\x02X\x18\x7f\x0b\xa5\x87\x00\xde\xd6\xc6\x98[\xe7\xbe"\xf0\xc1\xf5 \x00\x19\xfb\xcc\x87\x9f\xf9\x8b\x97bW\'~z\xd8\xcf\x04Ox\xbd\xd9\xc0\xd6\x05\xb2\xfe\x18\x1e}V%\xe8\xfc\xb0m\xc5\xf3\xd4\xd6\x8b\xd4\xd8\x08nC\xa9\xb6\xc1z\\\x8f\x12\x01y \xe1\xfe\x8a\x82<\x11j\x05!\xfe\x98E\xc7\r\xd3\xc0\xcf\xcf\x0e\x7f\xa8t\xbf(\xd22.\xe4D~\xf5q\xcaIks2DV^u\xfe\x9c\xa5\x16\xfb\x83\x1at\x11\x10v\x1bJ\xee\xc6z\xaf\x80\x12\x85\xdd_\x96\xc9\x1c\xfc\xac\xf6\x7f/\xae\x07\x07\x11\x10[\xda\xf9t\xb9\xe1\x85\x93~\xdf\t\xa0\xbf\xb4\xb77\xf2\x88:W\xe6\x91\xabF\x171\x81\xa3:Zt\xc8x\xd5\xfc=\'\x0b\xd2G\x94\x08v\x80\xb9\x91Q\x7fM\xd3\xd6\xdb\x04\xb7\x1a\xe5\x9e\x9a\xff}Z\x8a\xbc\';\x9f\xe8\xa5\x85^!\x1ei\xa7\xc3\xf9\xb7\x9c\x18\xa1N\xac~Y\x97\x87-\xae\x85\xaa\x16o\xc5\xc8m\x87\x8b\xae\x17\x1c\xec\x0f\xb3\xc0X{\xfbL\xd0Ob\xe8\x97\xbb\x08F\xcd\xa4x.\x9b\xd9z\x9c*%\xde\x13\xf4\xa5@\x0b\xc6\xba\x01S\xde\xf6U\xca\xc9d[\xf1\xc7d@\xf0!\x86\xd4c]\xfa\xb1j\x16\xa6 \xe9\xb4l\xa8\x8c\xca\xa3\xcaE -`\xac\x98l*\xbf\x8a\xb8\x08aR?\xe7=1\xffu\xa2\xaf\xd6\xae\xaeJ\xbd\xc1\xa4\xc7\x98NW$\x0f\xf6\x15\x0f5RkL\xfc\xa8L\xb8\xc5\xeb-\x1a\x1a\x95/\xa9z;3\r\xfd\x82R\xb1\xc0\xac\x0f\x8f\xe9\xe0\xa332\xcbW\x9d\x93\xa7\x85}\xfa5\xaaD\x81\xd3\x9b\xe0\xf0\xdd\xdf~\xd1Wdc\x97}\xb2\xe9\xf1s\xe8\x00PDi8:\xdba\xdcl\xce\xd4\xb5\x8av^\xd5\x89:\x98\xe4F1D[\xb6\xa6\x11\xe0\xc5vS|\xb4\xc8\x1d\xb2BX\xb3\x13\x9a\x1f\xb7w\xe1\x9d\xe8\xae\x15\xa4\xfe\x94\xd3\x85\xab\x84\x1e\x03fC\x15\xa2[>w\xcf\xb3_P\xa7k\xa9\xdbek\x9c\x7f/\xe4\xf5\x82\x1d\xd7\xe0\x91\x1a\xcc\x98\xf2\xb0R\xe6\xf7V\x9cI\xc2\xc8\xeez\x9d\xfc\x81\xfc\xdd\x8dXw\x94,\x81\x17Z\x9dyL\xb6\xc1=pEF\x1f\xf3\x00\x18\xb2<\x0c\x07\xb5\xc5"\xbb\x87%\xcb\xfdU\x1f=O\x9c\xee\t\x90o[\xbek\xce\xaa4\x8fxo_\xaa\xdc"\x19&<C\x17\xee\x84\x99Y\x97\x0c\x9b=Z\x87m[ \x13\x10\xbf\xc9y\x0e\xef\x88\x87\x05}\x18\xfe2}:\x03\xa0\xa3E\xbf\x91J\xba\xadXS\xa7\xd4US\xcc\xce\xa8\xc2\xfd\xd3\xd0\x8a.\x1f\xc2|\xf5\x1b\xba\xd7\xa2\xa5\xde\xb2\xf1\x90\xca\xa1l0\xe7\xfd6[\xea\xc4\xd2\x83N\xee\r\x14\xc2\xc7\x86\x0c\x96\x1a\x17N<Tn\xa0u\x1d\x01q\x82\xdc\xad\x1f\x1b\x9b\xd8v\x9enp\xd3C\x1d\xe0o\xe6\x0f\x96\xdag\xd2\xde\x18\x1eb{p1\xac\x7f,G\x94 \xf9\xd9\xc9\x1d\xee\t}\xac\x8d\x19a\xa4\x98M\xe1\xc3e\r\xc9\x96z\xc2\x17\xdcs\x88\xb7\xad\x10\xf4\x0e\x1d\xfa\xfd\xa8\x90p\xb1\xe1\xfa\x7f\xaf\x06\x9aR\xf3.\x03[\x95*\xc7#t\x8f\x93\x03\x9eu\xdcbT\xc4P\x1eh\xb9T\x91}y\t5\xfe\xda2\x14?\x08\xacXS\xc8\x05\ns\xb8\x14z\xa5|\x07\x11/\xc9e]A\xa4\x95\xe3b\x03/)\xdb]\xe9^w\x99"P\xa0\xfd1\xb7\x08\xd8\tn\x90\xa2\xcd*\xda<*\x1a\xab\x10\xea1\xe5\xf4Oht4\xb6\xddq\xfe8\xb5\x18K>\xcf\x15\x9c\xc3E\x0cu\xd1\x8cI(\xf5\xdc\xf4\xf6\xc9\xe7\x92\x16<\xf5\xbfE\x8d\xd1\x07\xbf{\xb0\x9a\xea\xcf\x11\xfb\xd1\x94F\xdd\xe6\xa3\xc7\xa7\xf6@\x96\xc5r\xf0\xd8\xfe\x8f\x1b\x9f\xf8U^\x8a\x03;\xacAP\xf8\x94z]\xbd\xb8\x94\xb0)!^\xbc\xa7b\x9c\xdd\x1c_L[\xb0ec\xf9\x17\x19\xf8\xf41@"\x0c\x1f\x18\xbb3\x17\x861n\xbd\'\x1b\x12\x8e\x1a\xdfJ\x89]\x93\xe7P\xf5,\xa3\x89\xf5fw\xc4~l\xf4\x18\x7f\xdeC\xf0^\xd6\x7f}\xc8[\xbd\xc7\xdfN\x04\xddvl!G\xb4\xc0,\xf5\xbeYa \xbd\\\xb8\x87Qd\x81o\x02|\x8e\xcf\xa4\xe7\x15J\x81H\x0f\xe8E\xf1l\xa5p\n\xe6\x1e\xdc\xa7\x1f\xdd.\xb6v\n\xaa|\x80UK\xab9\xbc\xc4\xb6\xa8\xea=\x81\x06\xa2\xae\xce\x10d0\xd1\x1ae\xcf\x1a\xdf>g\xd8.\xa3\xcc\xe4\x8dWahV%-\xe2K\xa9\xff\x17_\xc5\xff\nP:\xb2J\xae\xd8\xe3\x9b\xc3\x14\x8ai\xca^\xbfx@\x04\x81y\xf3\x93u\xc4\xdc\xf1\xa0\x8d\xc5\x97\xa9\x8a?\xf3\xce\x05\x87\xc1\xfe\xd5Q&\xab\xb9\x82\xf9V\x8b\xdbf\xb3k\x165\x99\xe2\x95\xe0\xd3]!\x90\xf7\x8d\x9c\xfc\xe3\x9ap\xaf\x7f\x9d\xa3\x90\xb4\x1c\xb3\xaf\xac\xcba\xe9\x0c\n4\x89l\xcea\xac~\x89E\xcd\x9a"jo\xcf\xd2\xe8\xfb@\xb0\xa7#\x99<\x96\xb0S\x85\xb3\xc0\xfc\x0b\xbc\xbb_\xba\xd0\xac\x06,\x9c\xeaN\xbb`\xccd\x84C\xae\'\x10\x84\x9a\xae~4a2V\x05\x11\xadZ\x18.\xc3\xe7(`\x14s\xc8m\xe5}y4:jM\xff\xdb$J\x87*\xae\xee\x99\xbe\x8c\x8ej\xb3\xfb\x04m\xc34\xe0\xcd<{\x95\xdc\x1e"\\\xed\xbe2\xe9\x9f\x0c\x03\xba\xa3\xc2\xefq\x84z\x84\x97\xf3\x17-\x9a\xf6\xcd*7\xbarx-\xe0\xb4\xd3rG\xb0\xb0?\xe3\xe5\xd2b4\xcbr\x0e\x04i\xcd%\xf2ro\x8a\x9c\xb7\xf7\'\xad\x146\xca\x99v"\xe0I\x8c\xdd\xc45\x8d"\xdb\xa524V\xc2P\xc0y\x7f\x1c\x07\xc2\xfef$\xbf1]\x83\x1a\xfbY\x8ev\xb4\xbfT\xc3\xfe\xd3M-\x11t\x92\x90%\x0ei@\xa6n\xf7\xf5A\xd5\x8c\x05\x12mHbp\xd5\xe38:ZA\x9d\x9f:\x11\x12N\xa1d5f\xa2E\xbd\x02\xb6QO\xa6\xa1E;\\px\xa08.\x8dm\xb5\x94\x0b\x0fe\x18\xaeIlp}\xe0[\x86\xb7\xf9\x81Z;\x8a\xdd7:\xbe\x9eM\x9d\xe9u*Wx\xf6L\xff\x04=`\xea\x98BTa{\xe9\xa6\xcb]\xe7h\xa9\x01\xbe\xdbz\x19\x84\xcfF\xfe2\xe0\x0b\xc8\xd6\x86\xcdt\xfe\xe3b\xb4H\xe3\x02\x07m\xe8\xf6\xb9>\x12&vmJG\xd6\xbf\x86\x90\xd4\xeaI\xb8\xb9[\xa2\x83\x06\x8e\xd4\x97\x0e\xf0\xbb\r\xff\x92\x93\x1a\x9d9\x17\xad<\xa9\xfeA2]\x19d\xdb\xd5\xd9>\xda\\\xe8\xa4f\x85\xe5P\x18-}\xc1\xd4\x84\xcbg\xc1A\xd5\xb5\xdb6\xf61\xd1\'\xf7\x81\xfaq\xbeX\xfeQ\xa4[\xd9\xb2\xc9\xd5\xcb\x00\x0f\xf8\xfa\xe0\xeb\xba\xf0\x11\xe9\xa7"C\xfe\xcc\xaf\x91\xfd\x9d\xe1\xb9\xee\x1c\xed\x05+\x7f\xd05\x05\x1e\xe1\x03\x1eS\x02\xadOz\xfe\xf4Y\x1c\xc0\x81\xbb\x89\x93SN-G\x06\xddR)\x97m\xca\x9f\r\xc9\xc8\x97\xce\x89\xa4\x1dpl\xdd\x8de\x9a\xcc\xc0\xfc\x82\xb3\x02\xdb\x94\x87\xb4Qk\x12m\xc1\xab\x1b\xab\xb6\xb7\xb8\xe6\x92d\x12\xe1\xe5\xe9\x93\xeb\x0e\xc6\xa1 c\xea\x84\x11\x92,\xd6\xaa/\'d)\xdbt\t\x9d\x0ev\x97\x17\xe0\x98\xb2\\\x03\xf8\x8e\x10\x82\xed\x94\xc1\xf2\xb7\xb0f\x9ds\x8c\xff)\xe8\x1f\xd1\x05\x18\n\x06\x9b\x0ex\xb6\x95\xad\xfc\xbf\x936/T`\xf0\x1c-\xc9\xc3\x9a\x08\x84/\x86\xfd\x02T\x10\x86\xa938\xc6M\xf0\xf7K\x1a\x8eJ\xaa\x0b\xfd\xada`\x97\xca\x18\xe1\x1d1#8-\xc3\xf0\x13=s\xb9\x80\xd4\x86\xae\x95\x9e\x94\xb8L\xdc\xff\xce7\xa4%I\x92\xf6e\xc7R\xea\xee\x08\xd6\n{\x86\xec\xb6J/G\xf6\x0c\x0c:\x94\xee$@\x06}\x07\xb25\xf0W\x96\x11\xad(\xff\xf6\xda\x88\n\x059\x01\x999r\xb8\x9d}]<\x83\xb0WM\xa8\x11\xbdmz\x7fL6\xbc\xb5]\xce\xc6D\x12\xdb\x7f\xca\x15\xa7\n\r\xe2\x05\x83\xd4\x9d,\x0f\xd6\xc3\x16\xaat\x19\xd9\x0f\xccj\\=l=\xab[\xe5\x8cO\xb5w\x0f\xb7iv\r\x0c\xf6\xf0\x19oQ\xd6\xe4\r\x8c\xea\xc6\xd5&\xbc[\xfc97\x98\xf8;V\x98F\xfdP\xd4WRW\x02\xe7\xf1\xef\xfbb\x97\xb38.|ca\xcf8\xb4x\x00\xad\x11H\x9d{\xd0\xc9o\xfbb\x83\xc3>,R\x16\xfbW\xcac|\x8f\xe4\x8c\x15s\x0f\xa8\x8df\xda\xf3\xcb\xb09m\xef\xd6\xd8\xdf3\xbc\xad\xb9=5V\xdf\xc6u\xa5`\xd0c\x1b\x05`K\xee\xe1\xf5\xea\xa9e\xbdX\xce\x19\xdf\xe4\r\x08>\x12\xf5O\x03\xb2\xbfdP\x1b\xb1V\xe9\x92\x19\xc2\x17nx\xe4D\x17(\x0f\x96\x9f&\x99\x1c\xe37+\xc5\xf2\x1d\x88\xbe\x12\xc5\xc9\xf9UEz\xa3\xb3\x0823\x92\xa6\xa6\xb6V~Ta%#\xbcB\xe6\x01^\xe2\x8ar\xe0\x0f\xa0^A\x9d&/\x12\xad\xef\x82DJ\x18\xa4\x95\xf8\xaf\xcc\x82!\r\xcd\xd4\x99m"\x03LP\xc9=\xe1\x1aP\xd6\xcf)\x9e\xd6^\xa9*\xd3\x89&\x02\x95;\xe3\xd8\x85Ql\xd7CM\x1d\x06\x0b\x12\xdc\xec\xc7\x04\xc1\xd3b`o\xed\xd3u6\x8bCj\xdf_!w\x86\xcd[\xf9\xe8\xdf@\x11$\x98\x86\xc6e\xba\xb8\xc5\xd7-\x86\xd580\xfeS\x05\xf9\xf2\x9d\x82%\xceZ\xe7b\xb4S\xff:\xdap\xd9\x1e,\xb6<.\x8e\xa0A\xb7\x89\x97\xe1\x97\xf6\xab\xcc\x1cOSb;\x82\xbd#h\xb8b6U\xee5X\x98\xe0\x90\xee2\xb60\x06\xd9tuN\xca:Z\xa3\xb1\xd3\x93w\xa0\xbd\x10$\x83\x0e\xa4m\xf3l\xdfe\xdc\xf0\xb6\x87\xc8\xdb\xa1\x94~\x18DC2\x95\x7fG.Qd\xceH\x18]\xfa4\x1bQ\x03 \xf5\xc8Rw\x9b\x1c\xbf~\x0e\xd6^\xc0H\xe0W\x0e0\x93\xa2\xf9\xe1\x98i\xeax\x93I\x89\x0b\x8cX{_K?\x8aY\xad\x12\xe97z\x0c\x9f\xd6\x0c\xba\xbe\xbft\xd8&\'\xa6a\xb9l\xd7\x0b\xdd\'\x02\xa7\x98\xaa\xdf\x18\x7fG\x8ay\x8c\xd9,\xe3k_,\x96?\xdc\x81\xcb\x0cH\xa5(A\x0b0+\xd5\x8a\xd0\r\xfb[fU\x9f\x9b\xf6\xb2z\xc6V>\x06\xa1\xa7\x8a8\xaf\xce\x1a\tu\xd0\t`l\xa7uk\x01A\x9a\x87\'\x9f\x83}\xdb\x12.>\xb0\xd2\xa8\x85\x83vO\x97\x17\x8b\xc1\xec\xc8nq\xda\xd4\xc26\x01\x7f\xc7\xe4}t\tz=h\x02\x8f\xf5\x10\x1c\x98\x89\x0b\xec\xd4\x15\xafK\xd6\x13\xaf\xf2wX\x92>\xaa=\x94\x12\xaf\xf6u\x8a\xe3Rt\x96\x08\xdes\xa1.W\xe0\x04\x9e\x10N\x01XI}\xcb\xc7\xb3\x1f\xd5\xb5\'\x8a\xc9\xca\xf3u\xc2<\x96$,\xfa\xed\xf8T\xc1\xd0\xa5U\x81)\xab\x99\x93\xb4O\xb0\xef\x8f\x92(\xa2J\xd9X\xd1\x17k,?\xd3\x9e\xcf\xc3\xb3\x0c\xbc\x9f\x12K\x1ah\xb2\tU\xc6=VOO\xc6\xe5_\x96\x8c\xa9I_i\xa8d,0Ca\xd0k\x19p\x8f\x8c\xa6\xaaJ\x9b\xb9+\xb3\xa8\xac\x8b\xdb\x08\xb8\xba\x82\xd0\xe9\x1fp\xebm\xc8 \x90~+S=\xcf:s}\x17\xfa\x1d\x19\x11@$\x8fH\xd6^\xb5\x1c\xc3\x0b\xd3\xb7\xd8\x16\xa5"%\xcb\xf1H\xcd\x96\x12\x10\xff\xb9W\xb9\xbd.\xbe|\xc9\x92,\xdd\xd5\x12n\xa8=0\xd0\x9e\x01\xa8\xb7\xd9\x88\xa2-q,\xd1\xb0\xe5\x16\xe5I)\xcf\xfa%\t#\x94\r:\x97a\xc1\xa93\xad\xa0H6I:9\xbc\xf1\x1c,\xbb7@\xdc\x94\x1e\xc4\xd3\xce\x86\xd0\xe3\x94\xeb#\x9a\x1dU\xd1@e\xb0\n9\x94\xca:g\xc5\xbbe\x8c\xfc<&\x1e\xe7\xa6\x1bG\xbe\xa8\xda9\xdcYG\x06\x9e\x17\xb4\xe3\xd7\x83\xf5\xe70\x1brqD\x1d\x10\x1d\x1e\xe4\xac\x96\xe4\xfd\x86\t\xfb\x0c\xa6R\x04\xb5\xc2o\xb3\x87\xcc\x18\x1e+\\\xe1\x0bMy\xfdB\x18\xa5\xda\xaaKq\x7f.]\xf0\xf6\xbe\xddN\xd0\xf5\xd14\xc7K\x1fh\x88`\x03v\x14\x88LC\xc28$\x7fY-\xb8\x93\xab\xfd~L\xe9\xa6a}A\x7f\xbd\x95\xcc\xe2\x05\xd2\r\xd3\x95\xd8\xb1\xf2\xcb\x14*Jk\xe4["\xf4\xe5\xa5\xe1\xdd\x9c\xb6\xfb\xfe\xb8\xb6\xf50h\xa0\xc5L\xe3\xd3\xf8d\x1f0\xd6\xbdJ`[\tCcc\x01\xfd\xd9\xb9\xa1\xec\x8e\xa0\xcb\x1ee#\x9c\x08n\x89\xa2\xf4\xc1\'v|\xf4\xbe\xf8\xf2\x8dt\xd7\x14\xc5\x14\x0f\xd2\xea\xc1\xfa\xfe\xcb\x0e\x00\xf3\xfcG\x7f2\xe3]\xdb\x0f\xdd\xffTJL\x89i\\\xb8*\\\xcc6\r\xf8*\xc06\xd7\x9e\xb8\x9f\xce\x8d$\x1b\x86?\x84\xe6\xfbtL*\xa1\x84\x06Eb\x93\x8dx!5G9P\'\xc5\xad\x0b0\x80\xd7\x0eW\xbfa\xc3\'\xf8I~\xb0\x13Dz\xdb\xa0%V\x86\x06b\x03\xcdx\x94\xb9Ko\x04\xe9\x8a\x1d8$\xbc\xf0\xbc\xd3 \x07\xa0\xa4K\x8f\xbe#E\xea\xd1\x9eu\xea1m\xd6\xf9\xbb-\x1c\xe7\xaa\xe9\xb2\x95\xc8q\xa9\xd3\x86\x89Qz\xf7!\xee\x9d-\xcc\xc7\x1a\x0f\xdf\xc8\xfd\xbc\xc17\xf6\xc3z&\x8c\x82\xf3U\x0f\r\xe2sp\xe8\x99\xb9\xe8\xa1\xe6nl\\\xc1\xae\x1a\x0ei\xd90L8}\x1a\xee\xb6\x90\xf4\x86V0\x90\x8dn\xbd\x8a\rt2q^(+\xee\x83\xc1\x8dbtb7<\xc7xn\xce\xd1\x08f\x84`\x925\x04\x85\x1f-O~\x9do\x94\xb2\xff\xca\xfd\x807\x8e0\r\x0c\xd3\x8a\xd2\x9ci\xa6qy\x81\xf7i\xf2R\x8e\n\x9c\xb8s\x9e\x04\x1a\xa0=y\xc66\xf2\xc5\x13~E\x18\x8d\x10\x8a\xc2\xf5\xc9t\xbb\xf5\x1e\xd5\xd1\x8d\xbao*\x10\x9ec\x9f\xde\x91\xfcW{\x87\xb5\xddT)\xad\x99\xaetg{\x13\xa1U@\x1ftsB\xb5\x18ioj\x07R\xdak\xfe\xa3["\xf8\xca\xcd\xc8\xe0\x9a\xaf$=;y\xb9\xc1ifS\xb8.\x8ap\xb9\x1fKu\xfd\xbe\x8a\x92i|1zE={\x8c\xd9]\xa4!\xed\xba\xf7\x04\xe9 \xaf\xc3l\xf5k\x91\xcb\xa0\xaf\xff\xcb\xed\x9b`\xcb\x05\xcd\x9c_\xa7\x0f\xc7\xe8\x7f2\x08\x16\xf2\x87\xad\xa2\xe2JF\xad\xc2td\x13\x86`\xe3\x00f\xf1F\xc6\x86\x89M\xf4\xc7c\xcd4\x87A\x801:#\xe8\x97\x1a\xa4\xf7\xed\x95\x10\x00\x1b\xa4\xae\xce\xee\x02jw5\x9c=RC\xd1\xfb\x9d/\xf7OnB\xa0\xc3i\xb7\xaagY\xa1\xb4\xbe\xd5q\xb04\x14\x9c\xa8\xadIQ\xca\xaa\x7f^t\xbc\xab\xceB\x0c\x167\x85I\x12\x95\x01\xd2\xc0zeJ\xe8\xdaw$\xfbF\x9e\xc7@\xdcs\x9b\x0c\xca\x86\x11\x16\xa4 \xfd\xb2!\x82}4j&\'=M\x1c1\xcd(\x1e\xb5\n\xc0g]\xfb\x1fe\x01\x01h\x9aO\x8a\x04\x12\x0b\xc4Q\xd9n|\x98L\xa0U\xa7\xe3\x91Z\x8f|I=\x9c\xb8\x11\xf14x\xc4\xe1\xec\xa1H2\x15\x86O\x16]rg\x0bH\x9c.f\xa7\xd7\x16(;Q\xe6]\xf5\xad\x07Y\x97<6\xbc\xb1\x1b\x19\x11}\xc9\xef\xa1\x1e\xdb"xo\xc9\xa5\xac\xf1\xa0\x1fL*w\x81]\xf6Sej\x90<\xc4b\x8a\x94\x13@J\x98G\xdcZg\xc4$\x1by\xbe\xfe|\xb7\xc2\x11\xa2\x1d\xc9k\xd3eRr\xab\x9df\xa3q\xd3\x05\xaf\x1fP\x93Y\xad\xa0u\x84\xdd^\x05m\xe7Z\xe4\x00sw\x99\xfb\x91]\xafb\x1eK\x8c\x9dG\xca?0\x15\x96\xf3\x030\'B\x1dp\x05&\xae\xf4uwr,\x9eA\x0bR\xb3\xf5\xf0F\x1a\x81\x12\xf6\xe5\xbdQ\r\xccf\x8d\xcfGa\xf5\xf7\x06\xdbm\xe7\x95,"\x8eC\xac%\x8d\x00\x99\x82\xa9\xa3\xe7\xb1\xf8Fs{F\xc0\x11F8l\x89\xc9\x0b\xc6\x01q,\xde\x1d1\x02\xa9\xcdy\xffv\x0e\xc1\xa6\x1f\xed&Q\xc7+\x1aW.X\x9c6N\x94\xc1Y\xcbrQ\x99r6\x84\x8e\x0cUd\xff2b\xb3\xe7\x966\xbb\xa6)\xc8B$\xcbf8\x02\x95a\\s*\xb3b]|\xaf\xcc\xdc\xc8\n\x0e\x99\xe6\xc8\xcb<as\xd4(+\xcc\x1f^\xd0Z\xf04\xc8V9\xed\r8y\xb7*,\xb6\x18\xca-\x1e\x92\x81"e\xc2J\xbc\x15G\xeeT\xa9\x0f\xffB\xc9HM\x15d\xb6\xdd\xea\x0fv\xfc\xa6\x12\xf0qY\x1f\x16\xac\xd3\xc8\x10\xa0\xec\xa14\xfc\x08\x8f\x8a,\r\xacGN{\xd0\xc6\t\x19n\xe0I\xb9\xea\xa6p\x9c\xfc\xfc\nJU\x9anP"V\xb5c\xbf\x06\'D+\xd1yu\xb9\x13\xed\xf4su\xf9\x83\xbd\xb2\t5<`h\x04b\xaa9\x93\x9f\xd0\x84\x13\xec\xf3\x1a\x05\x94\x8f`gJ\x15\xdce!8z\x93\x11\x93\xc4<\xfc\xad\x80\x8d\xe5\xc1\xe9s\xef\xa8onp\xa4\xd3\xd9a\x14\x1c\xe0\xb3z\xec\xa0+rXJV\x15CD\xbf\x0f\xe3\x01\xa1`+\xe8\xfdPk\xc4\x1dl\xe7\x1c9\x14bG\xb8@\xafl\xce[\xf8*\xfe\x8a\x02zj\x90z\x7f\x17\x9d\x07j\xea"\x08\xd3\x1d\xad\x85\x01\xc2\xf9\xd8\xac\nR\xbd\'\xbe\x9e\xf4 \xe2\x0c\xff*\xfd\x9b\x94\x82^\x1d\x16\x1b:h\xb9\xe3Z\xc6+\x83\xc5\xa3\x1c\x93>\x00\xcf\x0c\x8f\xf1\xee8\xcb\xf4/<\x98\xa5-SM\xebL\xd5\x04u@S\xac\xfa\x10f#\xd3\x05\x87\xd42\xb7\x03\xa6\x1b|\xd4\x9f\x9algY\xaa\xb6o\xf1\xd6\xd9\xe1\xf3\x11Uf.\x00\xb1\xe1\x9e? \x1f\n`\xe4\xfe\xc3\xb2Y\xb6\xebk\xb5\xcb8\xc5-\xc3z\xf4.\x98\xe8\xc4"\x90\xaf\x81\xf5\x1c\x1d\xe7\x8bHj\x89\xac\',=0d\x1e\x9a8q\xbd?`\x88<\xdf\x08m\xae\x85\xe3\xbd_\xc0\x88\xb6\x9f\xf7\xf4W\x98\xd1\xe2\x9d\xa3~@\x06[\xb8\x9f\xbe\xadc\x00\x8c\xc5\xb6[\x0f\x97\xbf\x02=/\x99A3\xc1\xbc\x1a\xdb\xcf\xde;\x00XY\xe0\\\x0f\xcb<Q}\xb8&\'D\xe9\x85\xb5\xd2,*\xd7\x7f*\x00\x9b\xd3\x8c\x13\xd3v\x1f\xca\x0f\x8a\x0c\xc1 \x94\xb8\xb4\x9f9\rYN\xff\x8a-Q\x97\xbe5\xd23*u\xbf\x9c\xe9\xa7$O\xbc\xbbj\x0f\xc0:d\x86]4\xee\x17a\xbb\xb5\xf6\xf8N\x11\x19\xcce\x08\xb5\xd5\xaf\xd3\x92\x1fxJ\xbb?\xdei2jU\xb8\x10%\xc1\xc2\xa6\x14\xbe\xf5\x0f;\xdaq-\xda\xce\x07y\xc4\xb9S)@\xdcZ\xca\x15\x1c\xfc\x84}\x8b\xb1\xf4\xf1\x1c\xdc\xfe\xe1g\xcevY\x1c\x8a!\x99\xb5J\xa6\xf6\xd1\x8b\x945\x1e\xbc\xd9U\x9e\x835\xa1=/\x8cD\xde\x85\x9e\xffP4\x90S\xfdr\xb2\xfd\xe1\xaa&reS\xb9\x18\'\xd9![\xae\xf7\x7f\xd74\x9e>\xba8\x06mQ\x97S@\ro\xa2H{\x11JF\x9b\xd2\xa4d\x04\xect\x0c\xc0\x1b\xfa\xe4\xa6\xbb6\x86l\xf9\xe5\xc7C\x0c\x00\xcf4r2w\x18\xdb\xf1\xa9e6\xf8\xab\x01\x92\xc5\x1a\xd3h,<\xf8\xdb\x17\xbb\xdc\x1dI\x94s\xd1:\xda\xe5\xdeD\x96/\xfc\xb5\xa9Q\xf8I&"\\iDu\x15\xbe\xaa\xd5\xe8(\x8c\x061\x1b\xad{\xc5:NC\xef,#]\xa4j\xca\xdcB\x80S\x93\x04\xad\xac\x94\x88\x0e\xf59d\xe3_\x1b\xec\x8b,U\xb2\x1e`\x12.\x15Sk\xba\xbd\xd8PMK\xaf/\xf0\xff\xc8\xb4iU\xc3Q-\xab\x91\x19G\x81\x87=4\xd2s\x94\xa3\xee\x16\x03:"\x10_\xd4\xf10\xd9\x13\xc0\xdc)\x08\x7f\xcfm\xa2\xe5\xbb\xdd/\xed,v\xf1\xa0\xa0\x8b\xbf5\x19q\x0f\xc8 \x11\xb6u\xf1\xa7`\x98\xd5\xcf\xc2i<\xe4\x18\xbd\x18y\xf6SX\xd0\xafAGv\x01/\x0f\x0b\x9d\xde\xd7\x91\xaf\xf2O&?\xac\x01t\x1a]\x99\xcf\x19\x87\x0b\xe1=X\x8fFvR\xc57<g\x0e\xaa\xf1\xcc\xe3 \xf6y\xa1\x81\x13\xbf\x10/$\x037F\x87n\x17\xa5\x05k\x9cq\x12\x7f\xda\xdb\x97Rv\xa01U1\t\xdd|\xa2a\xf2*\xb7\xc2G\xd8\xf5\x052~\xf4\xb2@m\xc4?\xce#\x10\xd3\x8c<8@W\xaf\xd3\xdd\xa8N\x1f\x0c\x1f\xa5\xe1\xc0\xefs\xf5K\x9e\x9b\xeb"Y\xb0\x92\xdeS\x1a&\x96\xef\xfe\xd2\xf2\xc4.@\x86\x98yP0\x0b\x01}Y\xc9\xf3\x1c\x16\xa5\x81\x8c\xbc\xa9\xd9X\x7f-\xb8\xe23\xcb\xd6?_\xeep\x8fe\xca\x0c\x9fPh\xec*\x9d\xe9\xa91~\xb8Nz1\xb6)\xcf\xc6\xaf\x1a/\xb1Ls7\xb0\xed\xcfN\xd6\x84\xe5L\x8cs\x8e\x03\x8c\xf9\xcd/\x8e\xa6\xf3\x8c\xca!\x82\xd8\xa3\xa0\xbblU,;j\xe9\x13\x83\x7f\xa2j\x96\x84\x98\xf0\xf2\xcfD\xe1\xc3\x1c\x8c\xcb\x93\xd3>\x06\x0b\x07\xdb\xf9>\xfa\xec\xe9v\x82]w\x99\x99wP\xe1\xfa\x91\x99\x8a\xf5\x00#\x99\'\x14O\x0f\x0b\x1e^N%\xe6?\xc1\xd9l\xbf\x0e\xf4\xbb\x8a3\x06O\xfax\xc5\x91\x93@f\xb2L\x805r\xd0\x0e\x82#\x0eo\x7f\x9e\xba\x99{Q\xfc\xc6\x01\x1a\xf3m\x1eQ\xe2x\nk\xddX\xec\xd5\xff\xc1\x01+\xa4\xba')
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-08T16:23:30.532772
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\x0b\x00\xa7\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\xc7\x04\x00\x00\x12\t\x04\x00\rn\xd6\xa9\xb5\xebI\xef\xb1\x19\x1f.\xf4M\x0bu\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x1d^2?\x01\x96gJ\xb2X\x99V\x0bg\xa9\\\xb7\x89;?\x95^r\x8a\x9b\xae\xcf\x13N)\\\x9dHn\xb4\xcf"\x04\xf6\xcem\xfd\x9f\x15_\x13\x0b\x07\x8af0|\xdfT8RONa\x1d\xae4\xfd)k\x1fd\xd6\xda\xff\xb2\x1d\xac\xbf}\xdfe\xe2\x9apD\x04\xc9\x1e\xc8\xea\x14m\x04\xe2Q&\x99\x05\xa4=O\xd3,R\xb5<\x1d\x1b\x00e\xdc\xac\xfa]C\x84&\x14\x88\x84\x05\x04%\xb5D\xc0\x94\x86\xd4\x9c\xa1\x04\xad\x8c8\xbf\xdc\xb1\xac\x84\x951H\x01\x01\xc9\x866<I&E\xfd\x8e \x14\x90]:^<\xbbk\xbd\x13\xa9\r\x13\xf0^[ \\\xe0S\x1cz\x1abpp\xb6\xb1pk\xcd\x8f\xb2\x10\xc1A\xf6\xd0}\xc17*\x90\xb2Df\r\x86@9#\xc2\x94;Tf~\xb8q\x9e\x9f-cY\xa9\x0czw\xdc\x05\x00t~\x08\xf4 \xe6\xef\x92\x8c\xf3\x13\xce\x16>\xc6&\xca~<c\xcb\x14O\xdeg\xb4\xe6\x07\x9b\x18~\x16v\xc5\x0c\xd8\xe9\xed\x8e\xfa\xe4\x18!\xec\x8b{\x8c(w\xab1|\xf9=f\xd7iN7\xc2\x93\xb2]\xdd\x1b$\xdb\x13\xa0\x95\xbc,\x00fGg\x8d\xd9\xb3|\x18\\\xfc\xaf\xbf\x80T\x01B\x80\x97*\xc3\x86\x17i\xe5\xfa${\xe1\x1bm\xc9\xaf\x9c\x00\x07e(\x9a\xac\x01a\x94\xa16`>\x05\xed\x8a\x07\xfc1\x1cIn\xb8\xads\x0fh\x04@\xa4w\x9eHNn6\x1b\r\xaeQEt\x03\x85\x15\x0f\x9c\xd8\x84\x89S!\x18\x0b\xd8\xca$\x88\xa6\x08\xdb\\\xaf\xfe\x9f\xf4dl7\x1f.fEc5\xdeZ\x1caKuy\x18[=\xef3\x10k#\xec\x13F-\xd4\xe4\x15a\xc8R\'$\xd4v\x0b_\x0bx\x91g\xa8T\xd8\xa7+,\r\xcb%\x97\xbe\xeb9\x92\r$!Xl\x1f\x86\x15M\xd6\x90\x88\x90`%x\x0bN\x82\x11\xe1\xc8w|\x17n\x10\xfb#\xda\x13Z)d\xaa\xab? `1\xfe\x81)\xc0\xf2>\xbc\xbc\x85`e\xcb\xdd\xf35W&\xcd%\xe4\xad\xb1\xe7\xd9\x18\xcb$\xe3%\xf8,\xdc\xbdMB\xdaE\x9a\x19\xa3;yM\xbc\xb8 \xe7`\x03Z Z*f\x07}\xaf\xc6Q\xac\xd9Bq\xb2|\xa4;\xf0,\x7foM\xc9r\x01\x0c\xb1\xbd\xe9\xa1B\xe0\x14<uU-@7\x7f\xe2\xad?\xfd\x83\x04\x08r\xf9\x1a[\xd8\xed\xb2\x95\x92\x07U%\x8d\xd319"gE\x82$\xe8\x88(n\xbd\x0c\xd7\xf3w\x99\xe8co\xac\xc8\x94\x90\x05C\xc3\xa5W\xdb\xc4\xd2q\xb4 \x15\xf3\x103\xb91\x8f\xd2\xd2\t7\x1b\x92"\xa0\xa6\xf5\x9a\xb6\x987\x87\xc1\xe4\xb4\x1f\x07i\xd5\x07P3\x80XI\xc5\xbf\x8a9\xdc\x1c\x1cK\xf2\xc4\xf0,\x7fA\xf8\x1b\xa3]\xdb\x14\xd4*\xa8\x1fR\xb5\x8b,\xa9\xde\xc9%%\xb1P\xe3T%\xac\xbd\x12\xd3\xacE\xdaS,\xa8aI\xca\xc9$\xf7JEb\'\xc8#\xc9\xbe\x98\x01k\xd6\xfa\x82\x91\x01\xb7\xaepr\n\x98u\r=nLJ\x9c*\xf9\xe4\xff}\xd5\x83^x\xb9j\xaa2\x92\x9apU\x1d<*\xad\x91\xb2\xf3\x18\xc2\xdf\xc5\xbc\xa4\xb6m\xa0\r\xdb\x99+\x06\x059\xda\xa2/h~K\xa4J\xe0\xe4\x15\xf7\x08Qh\xb9\xf2k3J\xf6\x1f\xf5\xa6\x81\xf9XNf\xe5\x95\x11X\xbf\xda&\x17\x1dQ|\x18\xb9\xdc\xc3\xd5\xadk\x8b\xda#$JA\xbc\xc0S\x181=\xb5w\x8a\xb7\xfa\xfag"2\x85\x0e\x17D\xefa4&<\xdaxm9T\xf2\x93\xfe\xc7ny-\x03\x0c\xc1\xba\x08Xi\xafq\xd3\x06&X\xac$\xfc\xc0a\xe0q8FQ\xa6\x8d7\x1e`-\x82Y-\xe2R\x0cEn\xcf_\xa3\x95K\xb4\x144I\n\x89\xc3N\x95k\x12\xba\xc3#\xd1\xd6\x07q\xe0\xaf\x94}?\xb0`(QO\xd5Y \x0e`n^/\x92\xe3\x06\x9f\xdeozhdY\xda\x81D\xa6K\xe1\xc5\x92\xa1M\x8b\xd2\x86\xed6Y\xb8\xe7\xcdlSV{\xe0\x8e\x03/\xb8\xe1\xeex\x8f\xa17\x88\xbba\xa8n\xab\x06\x91~N&\xd2sbc\x98\xf5\x9f\x0b\xf5\xe5\xb3\xcd\xcd\x04\xb9o\xd2`\xc4\x96\xc0\xaa_\x9aZ\x9f\xcf\xae\xd4d\xcf\xaa:\x9a\x16}\x14e\x02\xff]\xefCV$\xdcw\xf1\xda\x84\xde\xfe\xfc\x92\xc8\xb0zv\xff&\xb6eV\x94\xab\xce)0l\xf6#HcZ\xf8\x97m9n4\xd6\xa3\x0c\xb9+\x8ey\xe3t\xa6\x94\xef\xfc\xf9h\x9fs\xff\x07\xc8\x10t\xd0\x1f\xf89\xddm\xa9\xa8\xff\xa7\rl\x18\xc8M{1\xbe\xa5\xac\xf3\x1a\x85\x87\xf9\xd3\xde\xdep\xda\x80\xbbh,\x12[\xbc\x83.\xc6\x1cSj_\x145\xc4(\xdc\xd6\xe5E\xaa2J,\x8c\xe1\x11\x0b\x99\xc5\xb2iI\xa6n\xa4\xfc\x08\x1d\x9d\x85\xbd\xdb\xd2.*\xa6\x02+tg\xe2\x0f\x1b\x82\x01L\'\xa6\x82\x01b\xe2\xbd\xdaU-\x82\x80t')
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
@@ -1,5 +1,72 @@
1
- # 2023-04-08T16:23:30.512993
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\x0b\x00\xa7\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\x8f\x16\x00\x00\x12\t\x04\x00\xab:\xaa\xc7\xb0\xefDJ\xb9N\x1f\xc6\xe2N\xa7Y\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x1c\xc5\xb0\x05\x86\xe0\xf2\xd1\x89\xb7\xcd{\x1f\xe1\x9b\xf2@\xc4\t\x99\xb7\xed\tq\xefnl\xb5\xb7\x82!`\xfe\x0e\xe4[\xc3;\x9b\xef\xb6xE\x01p\x11\x14Mu\xa3\x83Yh\xea[i\x96\xd0d\x94\x97K\x9c\t\xc8A\xe2_\xce\xb7*\xaea\x833\xcf\x9d\x166\x1eK\xae\xc7\xfc\xed\xb5\xfb\x1e\xba\r\xf9\xb7\xb2&\xcapu\xd5\xeax\x95\x94?L\xe0\x0c\xc9\xa2\x1f=\xf3\xc2\x7f*\xe1\x10}\xe8R\x07\xa8\xd0\x90\x16!^\xf2\x0bf\x1e\x9f\x07213\xf7R\xaa\xfb\xf3t\xef\x97\x8c*\xbc\x8dUT\xee\xd11y\x80\xcb\xd14\x13\xfdG\xa5\'\xdf\xe1\xd9^\x9d5r\xc9\xad\xaah\xf3} nW\xe8\xf4v\x1e\xad\xd7\x82b\xc1\xd62\x15\xd9\x80\xb1 !;\xf6\xc1\xe8$\x10\xc8\xac#Kv\r\xf1\x9dE*\x0e\x80%\xe4M\x9fh\xcbzv\'\xe7\xb9\xf7\x87\x14J/\x93_}Z\xd6\xf1A/\x9fn\xc0{\xcf\x1b\x13IB\xf4V\xd7\xbf\x02\xa9\x9b\x14\x0b\xcc\x86\xd2Ko#1\xc0D5\x9fB\xdc\x03\xb6\x94\xd1\x96\xd364\xd0\xec\xb0,\x98{\xe9\x8c+\xff\x82\xe5\'&\xec\xec\x0b\xcd\xb02\xe8\xc8\xa2\xd05:\xb2s\'\xa0w\x00\x9a\xad\x83\xb8\xcf\xb4\xf1\xfa\x07+N\x93\x1a\xcal\xfb\x0e\xd9\x86\x1aU,P-\xd9\xcf\xafNh]\xf9\xd7\x88\xc4\x9fmK\x8d\x80Qf\\\xb9\xcc\x80\x8d\x84\xd1\xed]\x1a\x80\xa6\xc7B\x92F\xcae_\x94q\x89\x11\xb1-iI\x1b\xcc\x17\xb1!\xb6\x95V\x8dI\xdd\x81\x04\x7f\x13}\xe3\x0c7 \xab\x1dr\x82\x9a"\xa8\x18\xaf\\ H\x02O\n\xf6B;\xb8\x8c\xa3\xeag\xbb\xcc\xee,M\xb8\xb75\x9b\xe3\xe5R\xd2\x8c!S\xe6\xd7\xef<\xcaIk\xd3/\xd0\xb7\xbb\xab\x8a\x81C\xb1_\x18\xff<lu\x1ddh+5\xe3\x7f\x0c\x1e_%\xeb\xb1\x97\x00\x96\x92jv\x91i.\xe1\xd1\x9a\xd8\xd6N\x024\x8ax\x1a\xec\x08gN\x80\xe5\\$e\x03\xc4\xdcUD\x82\xb8\xd0\xd8\xfe:Y\x03\xf5\x84\xd2\xd5G\x11\xca5\x82t\x08\x16<\xcc\x1d\xc1\xdd\x1e\x8d\xa7\xdd\x92c\x1e\x1bE\xd1\x10A\xdbY\x9cVx\xdcY\xb5\xa4\t\xcb\xd9\x13\nu\xaam\xb0AA7\xc7\xe6\x0e?g\xe8XS\xa3EQ\x8c\x152z\x0e\xc3}\xad\x8d\xfc\x01\xcf\xb3\xcd\x9dQ\x98\xcf\x16\xe9\xdf\x8cb\xbd\xee\xadH\xe8\xc3\xbe;"\xd7\xc1\xd6\xedX\xf5t\x07\x89N\xcdr\x9c5\xc0\xdd\xdb\xa7e\x8c\x19\x90\x0e\xd6\x8d\x8fS\xebm\xb3\xf4k\xa4\xbc\xcdA\x88\xb6\x18\xc2\x96W<@\xfe~\x8f\xa2\x0byO\xd7\xd2s@\xce\xa3\xbc\xd6\xcf\xc2\x87\xca\xe6"9\x0c\xf0T\x97\x84\xa4B\x87\xc8\xb8\xb0\x82H\x12\xce\xabe\xc7gY\xe9B\r\xf0l\x9f\xfa\x06\x8f\xea\x08;z?{J\x99?\x05PX\x8dT\x84\x98r\x8f/&Q_5\x17~\xe3\xbd\xcd\xba$\x1c\x1b\xdd\x06\xc56Zd\xd1D~\x18\x13\x1c\x8a\xc0!\x97\x86g\x84\xe6\xd6j\xee\xcc\x7f\xe9\xf1\x99\xd7~@\xb3\xb6/\x1cT7\xe5\x10\xf8\x0f\xf2;\xf3\xb0\x96N\x7f>\xe2\xa8\x1f.\xf0\xe8\xad\x0f\xf2\xdd5b\xe5\x9d{\xfd\xec\xb6\xb1\xa5O\x04\x99q\xb1\x83\xa8r6`*3\xa0\xeca`\x9f\x15\x1e\xb0\xa3\x93V\xadCk\x9f\xf8\xf8\xed\x04\x9c\x86<\xe5$\xc9\x8cz\xa4O\x9a\xd18\x1dIE;\x92\x92_\x00\xc2\xd0\xd8Q+\xc7\xa2DA\xf4\xee\xcc\xf4#1\n\xd2m;u\x9b\xfb\x1f,\x06$\x8b\xc5a\x98\xf3\xd6\xa5uo5\x1f\xd3eTaN* 1g\x9f)t\xe7\x87\x1cf\x88@,\xc5\xc3\xb2\xb7O\x17\xe9\xf0\xfam\xdaM\x9d\xc6\x04\x0e~\x181\x97\xef\xe3mH\xd1\xab\x88K.\xa9\x9b\xfa\xf9\xa4\xcf\xa77\xf2$_\xc0\x17\xee\xfbe\\\xea\xdd\x95\x855ue?\xa5\xbdY\xa1\xbb\xd4\xac\x80\xcb\xe4\x0bN\xb1\x19\xa92L]z\xc4\x90\xe5\n7\xcb\xd6I=\xb0\x89\x8b\xf3k\x82\x0b_\x8d\xce\xc0\x87u\xc7^>\xa4\xf3\x1eW\x0f\xfbY\x028\xcb\xeb=\xc9itM|\xc2\xe4dO\xe4\xdb\xa0]\x0bY\\z\xee\x9c1$\xbb\xd6\x92\x9f=@\xfb\x8d\xe6\x1aO\xd3\xfax\xc5\xd0/\xb55\xcc\x9f\x94| u\'\\ \xaeRlQx\x94L%~n1\x8b\xc5\xaaW\x05\xf6I\x88\'\xe8\x1f\xcf@\x05;\x01Q@\xff\x11\xe2\xd4*\x0c!N2\xf4FQ\x0b\xdd7\x9dFjA+\x05\xc4z\xa0$T\x1b\x10\xea;/4\xde\xae\xb1}\xb7\xa8\x9f\x89K\x94g\x89t\xee}\xa22\xe5\xf5\xed]<\xf6\xcd\x11P\xce(\xe7\x82\x9dH\x93<%#)\xf1C%b\xa1R\xac\x90R\x1f\xa9\x9c5\x12b\xb9\x9c\xca\xbb\xca\xe9V.\xe3vK\x8dU\xd3\xef\xc5o\x1c\xaf\xd6v\x8fU\xe9T:\xda;!\x83\xfa\x8a\xf1\xecXbF>D\x84)\xe6\xa3i~\x06\xe0\x93\xb0\xb2\x10\xc1NN\xbe\xfb\x0c\xbe+P\xab\xeb\x869`\x0c\xa3\x0c\xfc\xa3\xe8\xe4f\xde`\xdd\xe7\x8a\xf3\x9b^3O\x12\xb8&e4n\xde\x17\x0f\x95\xbf\x8b\x9a}l\x8ap\xb2\xe0z\xe8*>\xd1\x8b\x94\xe9P\xdctkr=\x89B\xd6\x81\x99\xbe\xf1\x9f\x923\x84\xab\x12:DS6\xa5\xc4\x96y\xff\xd9\xfeV\x05{\xf3\xd1g\xfeL\xdaC\xf6X\x17\xb1\xc6\xb4\x08\x8e\x07\x02 \xa4\xe6\xee\xa2$\xbd\xcd\xa8\xf4\xfci\x86/\xaa\x06\x85s\\ya\xc4\r=\xba\xa8\xfe\x01PjDR\xba\x82\xdf\xa5\xdb@\xa2\x950g&\x1a\xc8\x89JV4`\xf9\xb6\xed\xe3\x03K\x95\xb4\x8e\xcd3\x0b\x14~\x0e\x88\xaa\xcb:\x10\xc9\xcc\xf4g\x7f\xfc\x1b/\xbd\x8c1INpA\xccX\x9e,\xfd\x98D[w\x17\x87\n\xee\x0c\x9a\xf9.V$"o\x7f\x04j\xb3(vB\xda\x19\x12\xd1\xfaXV\xb7\x8f\xb0\xedD\xd2:\x87\x9a<t\xcal\xbb\x99B\xa9\xee\x1d\xe7\x1e\x12\xbe\x89=\xa2X\xe1\xfbP\xec\xf3\xbf\xe1k\xca\x14\x87\x9d\x00\xcac\x8a\xc5\x14|\xf8\x07U\xe3\xb6\xf1\xa0\r\xe03\xca\x0f\xf1\xe5\xb2\xde6\xbehY\xcb\x8a\xd0\xf3q\xec\'#-\xab\xb7\xfb\xe1\t\xabn \xd3*K\x1e\x1b\x93\x87N\xdb}\xce\x85\x92\xfe\xa2w>\x9eUg\xe2\x9c\xe2\xcaxu\xc2\x07\xe2\x92d\x061C\xba\xbd/\xed4\x8f\x01\x03\xe4}\xb1\x1f\xc1(b\x83\xa1\xde\r\xf5\xf8\xef\xb8\'\x97n\xc6CwP$\x12\x17y\x8f\xe5.\xb8\xda\xb4\xea\xae\x17>\xc9\xf9\xcf[\x03\xab\xa5T\x95.\xee\xa3\xa56+v\x02\xeb:\x95wk\x91\xdb\x13M\xe7\x1f\xa0\x1e\x9cq\xbb\x8c5eR\x9aG0\xe8\xf9\xafn\x9d`\x1f]Of\x16\xe3\x8c\xaf3\xcb\xda>\xac\xf2\xa6J\xa8si\xb5\n\x1eH\xc7\xa8x\x03u\xea\xbcz\x0f\x02\xaay\x82\xf6\xf7r\x9a\x05\x00\xfd\x80Fl\xf7\x1b\xbe\xdad\x1eC,W\x82\x10\x1b*qO?\xa3\xb5\xd2\xec_\x93_\xe9\xacz0\xd3R\x1dNj\x91[\xac:`\xbd\\\x0e\xed\x02\xd9o\x8b\xbe\xac\x03\xe0Dc\xb7\x99Q`\xa9\x19\xe3\x9a3j)8\n\xa1\xd0\x81b\xd4 \xdfA\x0c\x9b}O\xd9^!\xd0FML!\xe8\xaf\xa0Tx1\x0c\x16\xd4\x0c\xa0\xc5|p+G\x08\xe2\x1a\x0b\x90U1\xad\x95\xaa\x80\x02+\x8c:\x99li&t\xf8\x8de\x0e\xb2\x06\x1a\x89n\x9c,\x7f\xeeM[]\xf0\x0e&1\x90\x8aj*\xf4\n\x8a\xdb\xa0\xb1#e\xf1K\xaaA\x1aY $\x06\xd2\x9a\xa1P\xbb\x87@t\x0e\xa2\xfd\x0c\x85\t\x8bB\xad3\x03\xd5(\x08\xcc\xf4\x17\x1fB\'d\x1b\xb9\x1b\xee)\xf1\xf80\xdb\xa0\x8a\x00g9\x04xw\xcc\xb4\x1e\x91\xeb\x99\xe5\x7f\x03\xff6`VW\x17\x1e\x01\x07,{\x01;7\xb1\xb3hEG`\x8a]\x8e\xd4\xfb.\x96E\x9fis\xec\xcb\x8fK\x86\xd3k uVx\x86\xf0\xd06\x8as\xb8\x8c \x1d\xec\xa0\x1b\xbbg+$\xeb\xaf\xca\xe8\xd9\x01\xdc\x8c\x04\xe70\xca\xe3<\xd7\xae\x03#,)@f\xe8\xbd\x13\xc5\x88[\xab+\x9c)G~\x86\x17\xe3,\x008\x85\xb0\xd8\xad0U\x16\x01&l\xa5\x05u\x82\xfai\xb8\x8c4pMv\x08\xa8Vb& \xc2\n\xa9\x9d\xdd2J\xe3\x06\xb0\x14\xd3dM\xc0\xd9K\xd5\xf4\x15\x92z\xb7;\xd3=#I\x1d\xcb\xe2U\xd1\xab\x13\x07\x18Q_\x87\xf2\x82\x8a\x17\x0c/J\x85\xf1\xcf|\x85\x90\x8d\x1a\xb0\xc9E\xf8\x95\xbeF\xcch\x9c\x02k\x9b=\xa0\xac\x15\x87\xe1c\xec\xa1\xd5\xbb\xf5\xcd\xe5\x82\x82\xd1J\x84\xd0\xed\xd7X\x17\x1e\x9a\x9c\x17\xb9\xdap=@\xf0\x1b\xdc\x9c)^\x98O\x90\x91\x7fL\x85\x82\xae\xb4\x89\x17#\xfaI}r\xf9\x8f\xaf\n\x14\xbe(\x93\x93 \xdd\xf6\x88 \xa3\xe2\xed\xb3O\xb9\xc24\xb0o\xea\x82\x07E\x0b\xe9X\xd9c\xef\xba\x96\xc5\xcd\x87\xf8\xc6bU`\x91\x1bO\x1c\xa3\x894\x89\xfa\xad\xf3E\xa0\xa8\xc5\xff\t/^\xf1\x01\x10}\x02\x81[\x15i\xbd\xef\xa5\x1cA7\x83,\x1a\x94\xca\xe3\x8a\xa4\xdf\xbfZ\xc4o\xd7\x9b>4\xe9<\xa4\xd9\xdct\xf3\x80\xdd\n\xd6\xb2\x06\xb8\xd9G2/\x8bFI+p\x8b\xee\xd8\x10B\x1e\xef\x17\xbc\xa7\x99E\x0f\xba\xf9$\x84\xa9~\xee\x89&\x1e\xe3\x96\x01\x01aY2\xa0\x12u\x8a}!\x9c:;\xa7\x1f\xe3@\n\xf5\xa2\x9c)\xc1\xdb\x88s\xf4\x8cjB\x08\x87\xa0\xeem\xb6\x1f\xbf\xec&\xee\xffD<"v\xc51\x7f\x90?\x95\x99\x03\xff\xe8\x04{Z\xe7\xd0\\x0\x87_\xd6S\xc4\n%\xeeG\xaf\x86\xb9\x8e\xaf\x04\x88\xea&\xd2\xe2\x8a\xc4\xf1\x00\x80n\xa3\x17n\xd6\xadU\x90JB\xa9\x8fU\xbfP\xe1\xa3D)\x1fKj\xce\xc9W\xb6v\xdbF=\x00\xbcJ\xa0\xabZ\xb3\xdbq\xd3\x06#7\xe2d6\xaa\xe3%N\xae\x1c<\xcbw<\xe2\xebx\x17\xf8\tb\xf0\xb3\xa7\xfa\x02\xe5\xf5\x183M\x0b\xe99\x84\r5&}l\xb3=\xd0mOe\xa2\xf1\xf5W\xea<3\xe6\x80*\xa9^\xcax\xc7\xb4\xb7\xf1T\x93]Z\xcc=\x90\xdc\xce\xa9f\xa4t\x7fd#\xc7p9g\xd1\xc3\x8a\x03TP\x1e\x0e)\x89\x15>%\xa6\xd7\x85\x12(/\xdfd\x7f-.\x81\xdcP\xc8\x93\xa8\x1fJ\x08\xde\x18\xac1\xeb\xfd\x07\x1d\xdf\x0e\xad\xe1P%:Vc\x0f<\xa1&2\xbc\xd3\x0e\x08J\xdb/_\x1d\x8b\x0eiL\x1f\x0c\xa1\xd2\x8e\x10\xf9?\xa2P\xeb\t\xe5}\xba\x93iz\x91\x80\x1e\x9as7\xb1\r\xa3;?\xb0h\x06\x8a;\x01\xf1\x97\x10*\xa4c\x1eH\xd6m\xd0\xb2\x94\x9cK\xa2\x9f\xa4\x87\xa4\x94b\xb7x\xaei\xacR\xd8\xefzF\xe6\x98\x90\r\xe71\x13\x13\x05\x91\xfd\x9d\xc1\xe5Z\rS;Z\xa0@\xba\x8c\xe7\xf31\xbd`\x02b\xd3:\x13\xc1q`\xd9\x01\x81\xe5\x86\x0f\xcar,\x02\x87D_\xbfu\xf73\x95\xf6\'b\x95x-+\xf8dq_@"!\xdb\x8dt\xeb}\x96\x14\x0e\xe6h!3\x11\xc4\x00\t\xbfib\xfeT\x07?C\xc91\xf6\x88\x02v\x9f\x9aU\xf3\xf9\xecf\xb1Qf6\xf1\xd9xB\x86"\x11\xc7\xe6`\x83\xcf\xb4F\x13\x8eO\xfe\xfa\xc4P\x9ct=$U@k\xd5t\x8e\xd1\xb4\xb5z\xad0)\x1b\x83\x0fOP\xc3\x84V\x91\x95=\xfe\xa2\xfa\xd3\xeb\xdf\x8b5\xa4\xb7\xe5\xee\x905\x91\xe6\xb7\x7f\x03\xa2\xa8\xe6"x\xdans\xce\x94Y\xc6\x15\xc8\xc4\xb9$\xb1\xd03A\x7f\xcf\x14)\xb3\xf3\xaa\xa1\xb3\x9c\xe1/\xf4k\xaa\x99\x14U\x82!\xc5\xf6\xd7\x83,\xce\xbc\xb5\xf2\xa646)H.\xbcU\xda\x0e>\x88\xcaXx\xf4\x01P\x97\xc8\'\x99\xbeuG\xe0\x18\xc5\xb3\xdc\x9e\xdesS\x9b\xa0!X\xe0\xcb\xb5R(I\xdb?\xa82\x87C`\x95H\xfc\xb4\x1c\x08\xb4\xc3\xa5\xc9\xc1L\xe9<+\xf4\x0c\xe4\xa7\xf7\xd8\xd4k\xff*\xc3\xf9\\\x98\xa4\xb6<^\xadM\xf5p&\xf9\x9e\x88\x946\x7f\x80\x1b\xd3\xe45\xa3\x86\x11\xd9\x91\x05\xba&\xeb\xa1\x1d\xd1W\xe9+h\x07QK\x11\xd2\xb3\\\xf3\x93kd\x96*n-\xdaEH\xfc\x89w\xb9c\xc9\x99\x7f\x13\xc1HP\r\xf7\xc5\xc2\xf2\x13\xb9\xdf\x14\xcbT;-\x96\x1dy\x04\x04\x91\xc0\xcah;\xf0\x1e\x1b\x9a\xe1($T\x18\x9d\x89B6\x06\xd8bDJ\x8e\xded\xae31\xcf+_~\xf0\xc6-\xaewC\xc9\xfe\x92\xd5\xc8{>t,\xfcO\xcb&\n\xa0V\xdd\x86\x97\xff\x087$z_\x05\xbd\x82\xd6$v\xcd\xd7;P\x9a]AH\x0c\xc6\xc5\x9e\x15\xfa\xd2"\n\x91U\x95\x9b\xd5\xf2\xcce\x90\xcf\xac\x03\x8a\xcb\x19\xea\x15{\xd6 \xe2\x04!\xd2)\x9ag\xa2\nl\xea[F\xa0\x89\x92@\xf7\xe5\xf3\x7f\xc30\xd6\xe6\x06\xd3+=I\x92\xacs\xe4\xd1\xbc\xf6\xad=\x03\xa6\xb4_e\xa6\xd9\x98\x9e*\x1cK\xac \x80\xb1\x03\xaa\x9dS\xd5+\x1d\x03t\xe9\xd9GO\xd4\xd6\xc3\x84d\xb7\xf7\xd9\x89\x05\x94^.\x07_\xdf\x19Y<$9\xd0\xda\x82\xf5\xdd\xca\xbeos\n\n721\x1f\x04,i\xfdB\xfa\x15l\xb9\xbd\x86\x16\xd1\x88\x06\xed\x05\xdb\x9c\x18\xfe\xc8\xc1\xbe`I\xf2\x8b\xa0|E2:Zuv.s=\xeb\xe8\x00\xf3\xd6\xa5\x8d\x05S\x1e\xae\xda\xad*\x97\xec\x00B\x17U6o\xb9\xe8\xe5\xa9\x85<<Po*\x8aq9_\xe2\x97\x96\x81\x12\xce\xc7\xf2\x9c )v\xb3F\x05B\x14\x91\xcbE\xeeD\xab\x91\xec\xbfE>\x87\x13\xbc\xdd:\x85\x07%}5b\x12\xd2\xa9\t\x08\x19\xae\xf6v\n\xa1\xfb\xf1\x85\x1f\x10Y\xf3\xe6\xd6#Sn\x9c\r\x10Nl\xb6\x8c\xe5\x7fl ;\xfc\xe4\xc4B\xbc{02\x15\xd1FT\xdf2\xc7\x86\xf7\x9a\xa3;\x0b\xa7\x01\x8f;\xb9-\xc2\xbb\xb9\x13k\xe1L\x17\x11\x15\xf8\xaaI+\xfe\xa9=0#\x81v\xed\x0b\x98\xec\xae\xcc\xd6\xc4`\x12\x98\x89\xcb\xa3\xbc\xf1\xa3\xd5\xb6\x84\x00P\x9a?\x7f\x9d/\x0e\xf3\xf1\x07\'\xf7\x99Z\x94\x0cb\xd7\xc0\xbc\xb5\xc6\x84\xedEwM\xc0\xee\xa3\xab\xab\x07u\xa4\x0b\xe4\x9aa\xa0\x19\xa8\xc9\xdc+\xe5\x8e\x82\x1a\xf5\x9cj\x10Mv\x82\x9e\xfdQ\xd7\xdf\x19\xc9\xa2\xf5[\x11@Z$\x07\x0by\xde\xcb\xb8\xea\xb8\xc2\xcea-\r\x9dC\xdc\xd0g\x08\x12N\xfe\xc4!N\xa4\xe8\x9e\x06\x8aML\xb8e~\x93j\x94\xd7\xb0H\xda\x17K~\xea\xca\xb7+j\xe4\xa2\xb3+\xeb\xde\'P\xc9V\xf4W\x8ff\x0c\x97\x82jlUR\x8a1\xb6\x19\t\xe6\xdd[J\x1c\xbe\xe2\xa1\xe1iU!\xe8\x8a\xdcI>\xbcyH\xab\x88\x01\xe3.\x0ep\x94\xfc\xadi\xcb\xa1\xd7\xcbY\x07\xe1\x9f\xd5\xab\xd2g\x02\x0b\xa8\x0c\x94[\x16I\xb9\xd8\xe8m\xcaz?.\xa0\xf1\x89\xcf\xa9\x84|\x8en\xfb\xc5\xc5\xfb$\x13f3\x98i\x04T\x86\xea\x8b\xff\xd1\xac\xef\xc1w\xb5&\xef\xaaO\xf6\xe7\x91E"^\xa7\x80\r\xbb&\xd1\xf2\xed\xaaH\xed+prf\xaf\x82\xd8T@\xe4{\xba\xcc+3m\x17L\xd2\xe9\xe4L\xfc;\xa05~:\xf1\xac\x86;\'\x00\x93s\xae\xcaQ\xd3I\xbaz\xb9\xa4 \xe5\xb1m\xe61J \xff\x0e7\x90\xf9\x9a \xed\x83\xa7\x80|`\xb9\x88\x8e\xe9\xe2\xd3\xbe\xdbC\x9e\xf4&\xa3a\x1f]|\xad\xf9\x04tn\xa1a\xaa\x18\xd7\xb6\xc3\xe0|p1\xca]\xdfm\xda\xda\xf61\x96?^\xe8<\x97{\xb8\xd9\xeb\xadc\xce\x16\x05.\xd7\t\x15\xbb\xa0]\xf4\xe3\xc6\xc2+\xaa\x04\x1eY\xa9qTG\xcc\xaeqc\xdc\xee$;\xecJ\xb5\xbb\xd0\xde\x08*\x05-h\xf6\x7f\xdc\xee\xf8\x99\x04@\xd3\xee\xf3\xe0\xdc\x147\x80 b\xaa\xf6\x84\x11o\xf0\'a\xa4\x06SF\x15~\xf85kCr\xe0bV\xdd\\\x01>W^\xab\xef\x08\xa7G\x17\x05N\xcb\xae\xa5vv\xc9\xdc\x02y}0p\xa0\xbd\x8c\xd5\xcc,\xc4zk-\xd9\x08/@\xfa\xd8\x16\xe0Fm{\xcb^\xb0vB\xb2x\xb6\xb8\x12\x08r9C\xc8H\xcc\xfe\xa0\xe2\xfe\x98&\x03\xa9\xd4\xb3\xceh\xaf\x17-\xb4)^Op\xd8\xab~\'+\xcaW\xcb\x88\xd9\xf7\x0b\xba\x07\xf5\xe9\x98\xb3\xe01\xac\xe7B\x04\xb6\xbcu\x00\x9a\xbdi\\\xef\xe9\xd9`\xf3\x9ap\x96)\xf2K\x04\x87\xd9{\xc6Mp\xb4\x8d\xd1\x1c\x89\x1f\xb3Ro\x01\xcd\x03\'\x85\x8a\x0e\n{\xefMp\xc9\x0f\xbf\xff\xb2\x9a\xffW\x14\xac+\x12dt\t\xadU\x17\xd7\xd1\x98)5R\x1a\x1dj\xe6\x97\x8d\xcf\xea\xae\xb0\x90\xdc\xd2\x94t\xd6Q\x957l9\xe6nN\xe7\xc0\xc4\xd5\xe3]\xc3#\xda\x08jt1\xb7\xb8\xa7\xb1T\x0c\x14c\xf4\x03*\x88<\x1e$\xcb\xca\xdc\xbe\xb1\x06z\xcfq\x1b\xa5\x93GGG7\xf1\x8dVWC\xe6\xb3\xaf\x07\xa2ts\xfd\xb4\x14\xcd\x019\xff4\x7f\x07F\xfb\x90\x12YiL\xed\xa5\x87R\t{\x90\x85\xc1\xbd\xa8\x86\x80\xb4sl\x06\xeb\x0b\xcc\xb0\x07z;\xd1q\x06/[i\xa3\x94l\x06\x97\x9a*8y\xa7\xeb/\xdf0=w4KqH^\xc2\xa3zu\x94\xb3\x98g\xd0\xbb\xda\x01&q\x08\xef\xbbi\x91Bk\x90\x82t\xd5\xb1\x12\x860\x16\xbfE\x88\xbb\xe5\'\xaf\x1d\x0f\xa9.\xec\xf2D#\xb0\xe9\x9dM\x0ek\xbb\x0c\xe3\xd3\xd2\x1a\xec\xc2\xed\x94F\x0b\xfe\xc6L\xd4\x86\xc3I\x9f\x17\xcb0\xd9xP\xb6\x93\xd4\xdef\xde\xed\xbc\xdd^q\xba)J\x9ew\x19\xf1\x04\xcd\x8e5\x88\xf3\x19\xf3\xf3\xf7\xa5B\x9e8\xbdS\xe4"!\x9d`\xfc\\0j-z)\xea\r\xb5\xb3\x1b\xefk\xb8xZI\x1a\x12\x9c\xe2\x0eG\x07\xcbXl6\xe0;\xcf\xda\xba\xc6\xac\xf4\xa3\xdf\xefGi\xae\x02\x1f\x8b\xa1\xf2\xa4U7\xd5\xed\xcc\x9b\xbc9\xdd\x94\x0f\xb2@\xf8\xc2\xbb\xdad\x1e\xf1\n\xd4\xb4"o\xde\x96A\x9d\xcd1\xd1\x8e\xd5iu\xa3\xc8\x1a\xaf,@)\xecR/\xdew8\xe1~f\xe4\'\x03,i\xce\x12\xf0h\xd2\x87\xe3\x9c\xf8\t5r9\xff\x13G\xa9\x1a\xe5\xfc\xf8\x98).\xe6\\8#d1\xdb\x1c\xe8\xe7\t\xbd-T\x1a]\xe4\xf4\xbfLl\xc0\xc7Y\x98\x8a\xd1\xec\xc6}\xd9\xa5\x92\x19\xbc\xd0{vPYQ<\x03\x921\xe3\xd9\xf0$j:\x13\xc8\x7f\xda\x9e\x15\x11\x0f\xc5\x8c\x02\xb8\xd5\xa9\xebJZ8\x95a\xa1DCY\x1b\xf5\xb1\xb0E\xb59Fg\xc3\xdd\xdd\xa7\x10\x11\x04\x8a\xcdOd^\x970\xfbz\xdaL\xec\x9f49#\x06\x11\x82L*n\x82\x8d\xc0\x94\xed\xc5\xb0\xaa\x87\x9a\x83\xfd.\t\xe0\xf6\xa6\x14\xe9\xb2\xd0\x15\'\xcdZ\xac\x07\xe1U$\xb35\xe7\xe1 v\x1a\x95+B+\x97\x9fN\xfe\xae=\xbd\x81\x03^n\xd7.\xdf9`\xcc\x8c\x10t\xda\x88$\xd6j\xe9\xcc\xd2\xc7@\x9a|\xba\xf9\xd3\xebS\xdcX\xf2dJ~\x9c T\xcc\x90A\x19\xaaGdp\xa3\xb03\x8fI\xa1H\xde\xdc\xe3\xf0=\xde\x90i\xf7\xc7t\xa9\xae\xec\x08\xed\x97\xc8\'\x87Q\x9c\xf5\x9c\x0b\x92|\x10X\x97=:(j\x1aha\xca\xed\x19\xf8\xda94\xfd\x93\xf8e\xbe\x89x\xf5\xa5"\xdc\x99\x87\x99\xe1\x9e\x80rh\xcf\xfd\x0c\xcc,c\x87\x07\xe1\xfcN%\xfa\x95$\xb0\xc2\x02\x95\x19\x9a\xfbb\xd4\xf3\xd3 \xe6\x08]\x00\x85(\x94\xf9t\xff{\x84,\x9d\xa2\x90\xc4\'/9\xa6\x95!\xfe.5\xb4\x85\r\\\xd9\xecj&\x99HK\xa7\xbeGn\xe0_\xfa\xe7\x19\xe7\xa8c\xe1\xc9\xe9A\x88\xe6\x07/\xa3~JN\xae\x80\x16\x8a\x8d\xe8\xcb\x80Q*\xd1\x0fH0\xc36\xf9\xf3I\x9bu\xb72\x95\xd4-M\x14\xf1\xba\xd0\x92\xad\xad\xf7I\x8d\xcd\x9c\xd4$\x92\x16_\xb4\xb8\x03\xea=Vk\xf5\x0e\x18\x96$\xee\x81\'\xceI\x82\xbeO\x96\xf9\xd3:`\x14F3\x08":#\xa1_\xd8\xfeE\xa8/\xcf\xf0\xf4\xd4\xb2\x1b\x9b\x8d8\xed4rt1\xeaA l fDpyZW\xc8\x9dA\xe0\x00\x8d\x86\xb1\xb6:\xf0Q\x11K\\A\x8b0\xda\x99\x99w\xe6\xd4[\xa9\x08]eT\x94\xa5\xb7j\xb2Zeezz\x8a\x96N\x17\xa6\xf8\xf7\xd2E\xac\x01\xd2\x89\x97G\xcf\x0fy\x9bi+\x12\xd4=\x86\xc2N9\xeb_\xa6&\x06\x00X\x83\x99G\xd0{\x0eo!p\xbdK\xf6\x94\xa6\xc2\xab\xc2\xed\\\xb9"\x0b\x02<\x89\xb2/\x9c\xe5\x13\x0b3I\xc6m\x90\xb5.\x8d\x96\xc0b\x17\x06\xe6\xb3&6\x88\x13\xc9\x896\xad\t\xe3\xc4\xe3LtV\x1c\xcc\xfd\xbd\xd6\t{\xe3$Z\x86\x9d4\xb8\x04\xe3\xfb\x12\xc9\x00!\xf2\xf7R\xb3\xa9\x9d\xc69%=\xf2cHB\xaf(\xf3mj^w\xe8[6\xec\xa0\x1d\x96hL\xe8\xc4.\xb4jh\x1b\xef&\x95\xcaUF\x94\x1d+xSW\xc9\xbe\x15\t~W\xb8\x8fU\x86(\x0e\xe0\xad\xa1B\x94\x10\xc8\x8b8\x12\xf2i\x80\xd8.\x86\xeb\x005-\xc2\x11Ni\xfa\xd5|;t\xc38\x9b\x8d\xd1\x12\xe2\x8dQj\xd2\xda\xf0\x86\xc4\x13\xe3\x05\xaa\xc1\xe5\x0f\xbb\xbd\te\rr\t\xfb\xee<`/D\xc1\x19\x18\x92\xb6\xf6\x87\xab5\x18\xc2!,{\x93\xaa\x85\x1c\xb6\x1cO\xa2\xc3\x12\xd3O`\x0bD\xaf\xda\xc1\xa5\x05\xb1L\xb9\xd4MW)}q_\xe8.-\xbf\x0b\x14\xd5\r\x9f\x04)\x05\xa0\x83\xe8cs`e\x86j\x9dn\xc7d6\xda\t\xecv\x8e2A\x83\x90^\xde\xd8f\x9f\x03k\xaa\\\xb1\xf4\x03\xado\xd1 \x86\xba>\x96?\x979\xe6\xf3\xeb\xb4\x9dc\x179W\x85,\xf1\x04\xbb_=\x1b\xba\xb2}\xf7\xbdJc\x1b\xa2\xd7lZ\x8dbuz\xac\xa8j\xdeF\x93\x16\xce\xb2\xa3\x81\x07\x80\xed\xc6\xc1h\xd4\x15\x15\xa6\xff\xbb\x90G8\rH\xff\xf4\xd4\xaf\x9f\x15|\x02\x1a\x81\xfa\xfc9\x13/G_+\x8b2V;v\x1a\xd1\xfa3t\xa4\x80\xe9\xd4C\x84\xd3\xce\xb3S[\x89\xd5\xd9\xb3}\x97\xd7~\x0f\xa6_\xe5h\xf0\x92\x14<\x03\xab\x05\xd5\xbc\xa9Y\xc2\xbfI\xe0t\xee2\x8f\x0c\x83\x1a8\xe3\xb5\xf6\x1aaY\x89\x1fG\xff\xbc,0,V\x8a\xdfN!\xbf\xf2\x03\x8a\xbc\x98\xcb\x92w\x8fnU\xb9S\x93\xadW@~\xdb\\\x06l\xdf\xf5\x86~d\xf5\x81M\x9f\xee\xbb\xfe#OD\x8c\xa9U\xc38\x12\x01\x9c\xcd\xd1p\xe4!v\xf8$\xb6O\xd1-\xa4\x9a\xb1\x86\xf7`K\xb3\x84\xc8\xe4\x00\xce\x1c9\x02\xb2\xaepA\xbb\xf7\xcft\x8a?\x88\n\xe6F\xc9\xb5z\x9dT \x93\xa1B1*\xbe\xadg\\z\xc6\x9a\xcd\xa1\xad\xa1H}\x87\xa4U\x96cq\xfaG\xd1r\xfa\xdb^\x0f3{\xf1\xab\xf6F(\xbf\xc3b\x1cgCg\xef\xb5~{\xcf_\x9cql\x0bA\xc0\x9d\xe3\xa7G\xea\xf7\xcf\xc3\x19\xe7J\xd9\xf8\xb3T\x8eM\xf81kW\xfd\x03\xb1\xc8*\xa9\x92:\x15\x8a\xc6:!\xd7<\xb6\xe5\x85\xd3\xc4\x1c\xc5\xd65\x99\x1e\xdf\x0c2\x17\xb5\x96\\G\xe1\x12\xbd7n\x9b\'-\xb9|\xe3\xf6b\x93\x88\xd1-\xbb\x84"\xb14\xa5\xf0\x1e=z')
1
+ from hiddifypanel.models import *
2
+ from hiddifypanel.panel import hiddify
3
+ import json
4
+ def sync_child_to_parent(parent_link=None):
5
+ parent_link= parent_link or hconfig(ConfigEnum.parent_panel)
6
+ if not parent_link:
7
+ raise ConnectionError("no parent link")
8
+
9
+ return send_to_panel(f"{parent_link}/api/v1/sync_child/",'PUT',hiddify.dump_db_to_dict())
10
+
11
+ def add_user_usage_to_parent(dbusers_bytes,parent_link=None):
12
+ uuid_bytes={u.uuid:b for u,b in dbusers_bytes.items()}
13
+ new_user_data=send_to_panel(parent_link+"api/v1/add_usage/",'PUT',uuid_bytes)
14
+
15
+
16
+ uuid_status={u.uuid:is_user_active(u) for u in dbusers_bytes}
17
+ hiddify.set_db_from_json(new_user_data,override_child=True,override_child_id=None,remove_users=True)
18
+ have_change=False
19
+ for u in User.query.all():
20
+ if u not in uuid_status:
21
+ have_change=True
22
+ break
23
+ if is_user_active(u)!=uuid_status[u]:
24
+ have_change=True
25
+ break
26
+ if have_change:
27
+ hiddify.quick_apply_users()
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+ def send_to_parent_panel(parent_link=None):
36
+ send_to_panel(parent_link)
37
+
38
+ def send_to_panel(url,method="GET",data=None):
39
+ try:
40
+ import requests
41
+ from requests.adapters import HTTPAdapter
42
+ from requests.packages.urllib3.util.retry import Retry
43
+
44
+ retry_strategy = Retry(
45
+ total=3,
46
+ backoff_factor=0.5,
47
+ status_forcelist=[429, 500, 502, 503, 504],
48
+ method_whitelist=["HEAD", "GET", "OPTIONS"]
49
+ )
50
+ adapter = HTTPAdapter(max_retries=retry_strategy)
51
+ http = requests.Session()
52
+ http.mount("https://", adapter)
53
+ http.mount("http://", adapter)
54
+
55
+ headers = {'Content-Type': 'application/json',
56
+ 'Unique-Id': hconfig(ConfigEnum.unique_id)}
57
+ print(headers)
58
+ if method=="GET":
59
+ response = http.get(url,params=data,headers=headers)
60
+ if method == "PUT":
61
+ response = http.put(url,json=data,headers=headers)
62
+
63
+ res= response.json()
64
+ print(res)
65
+ return res
66
+ except Exception as e:
67
+ print(e)
68
+ print(url)
69
+ print(headers)
70
+ print(json.dumps(data,indent=4,default=str))
4
71
  #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
72
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product
@@ -1,6 +1,6 @@
1
1
  from flask import jsonify,g,url_for,Markup
2
2
  from flask import flash as flask_flash
3
- to_gig_d = 1000*1000*1000
3
+ to_gig_d = 1024**3
4
4
  import datetime
5
5
 
6
6
  from hiddifypanel.panel.database import db
@@ -52,10 +52,9 @@ def add_users_usage(dbusers_bytes):
52
52
  for user,usage_bytes in dbusers_bytes.items():
53
53
  # user_active_before=is_user_active(user)
54
54
 
55
- if not user.last_reset_time or (datetime.date.today()-user.last_reset_time).days>0:
56
- if days_to_reset(user)==0:
57
- user.last_reset_time=datetime.date.today()
58
- user.current_usage_GB=0
55
+ if not user.last_reset_time or user_should_reset(user):
56
+ user.last_reset_time=datetime.date.today()
57
+ user.current_usage_GB=0
59
58
 
60
59
  if before_enabled_users[user.uuid]==0 and is_user_active(user):
61
60
  xray_api.add_client(user.uuid)
@@ -52,6 +52,7 @@ proxy-groups:
52
52
  - automatic
53
53
  - sequential
54
54
  {{link_maker.get_clash_config_names(meta_or_normal,domains)|indent(6)}}
55
+
55
56
  # use:
56
57
  # %for phttp in hconfigs[ConfigEnum.http_ports].split(',')
57
58
  # - all_proxies_{{phttp}}
@@ -393,7 +393,7 @@ responsive: {
393
393
  %endif
394
394
  </script>
395
395
 
396
- %if country.lower()!=hconfig(ConfigEnum.country) and has_auto_cdn
396
+ %if has_auto_cdn and hconfig(ConfigEnum.country)!="other" and country.lower()!=hconfig(ConfigEnum.country)
397
397
  {% macro reload() -%}
398
398
  <button onclick='document.location.reload()' class='btn btn-primary'>
399
399
  {{_("Check again")}}
@@ -195,6 +195,8 @@ def get_common_data(user_uuid,mode,no_domain=False,filter_domain=None):
195
195
  g.locale= hconfig(ConfigEnum.lang)
196
196
  expire_days=remaining_days(user)
197
197
  reset_days=days_to_reset(user)
198
+ # print(reset_days)
199
+ # raise
198
200
  if reset_days>=expire_days:
199
201
  reset_days=1000
200
202
  # print(reset_days,expire_days,reset_days<=expire_days)
@@ -168,4 +168,10 @@ legend {
168
168
  .dark-mode .ms-choice{
169
169
  background-color: #343a40;
170
170
  color: white;
171
+ }
172
+ .dark-mode pre{
173
+ color:white
174
+ }
175
+ .dark-mode .callout a{
176
+ color:#b0b8bf
171
177
  }
@@ -17,7 +17,7 @@
17
17
  </div>
18
18
  %if not has_update
19
19
  <pre class="ltr">
20
- {%if "codec can't encode characters" in error %}
20
+ {%if "codec can't encode characters" in (""~error) %}
21
21
  Please restart the server.
22
22
  {%endif%}
23
23
  {{error}}