diff --git a/.gitignore b/.gitignore
index 1ef8d84..d132133 100755
--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,7 @@ GRTAGS
GTAGS
data/shelf.json
package-lock.json
+Pipfile.lock
.#*
frontend/interface/migrations/*
src/backend/data/*.json
diff --git a/Pipfile b/Pipfile
new file mode 100644
index 0000000..fe86960
--- /dev/null
+++ b/Pipfile
@@ -0,0 +1,36 @@
+[[source]]
+name = "pypi"
+url = "https://pypi.org/simple"
+verify_ssl = true
+
+[dev-packages]
+
+[packages]
+bs4 = "*"
+certifi = "*"
+lxml = "*"
+requests = "*"
+soupsieve = "*"
+urllib3 = "*"
+urwid = "*"
+w3lib = "*"
+websockets = "*"
+pre-commit = "*"
+isort = "*"
+toml = "*"
+django-debug-toolbar = "*"
+psycopg2-binary = "*"
+prompt-toolkit = "*"
+psutil = "*"
+pyfiglet = "*"
+mobi-python = "*"
+jsonpickle = "*"
+django-widget-tweaks = "*"
+Pillow = "*"
+Django = "*"
+uWSGI = "*"
+pudb = "*"
+loguru = "*"
+
+[requires]
+python_version = "3.8"
diff --git a/Pipfile.lock b/Pipfile.lock
new file mode 100644
index 0000000..ebec91a
--- /dev/null
+++ b/Pipfile.lock
@@ -0,0 +1,456 @@
+{
+ "_meta": {
+ "hash": {
+ "sha256": "28592c8791edd0163c498191c84b83abc005d18135363f381d8b241f990d1eed"
+ },
+ "pipfile-spec": 6,
+ "requires": {
+ "python_version": "3.8"
+ },
+ "sources": [
+ {
+ "name": "pypi",
+ "url": "https://pypi.org/simple",
+ "verify_ssl": true
+ }
+ ]
+ },
+ "default": {
+ "appdirs": {
+ "hashes": [
+ "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41",
+ "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"
+ ],
+ "version": "==1.4.4"
+ },
+ "asgiref": {
+ "hashes": [
+ "sha256:7e51911ee147dd685c3c8b805c0ad0cb58d360987b56953878f8c06d2d1c6f1a",
+ "sha256:9fc6fb5d39b8af147ba40765234fa822b39818b12cc80b35ad9b0cef3a476aed"
+ ],
+ "markers": "python_version >= '3.5'",
+ "version": "==3.2.10"
+ },
+ "beautifulsoup4": {
+ "hashes": [
+ "sha256:73cc4d115b96f79c7d77c1c7f7a0a8d4c57860d1041df407dd1aae7f07a77fd7",
+ "sha256:a6237df3c32ccfaee4fd201c8f5f9d9df619b93121d01353a64a73ce8c6ef9a8",
+ "sha256:e718f2342e2e099b640a34ab782407b7b676f47ee272d6739e60b8ea23829f2c"
+ ],
+ "version": "==4.9.1"
+ },
+ "bs4": {
+ "hashes": [
+ "sha256:36ecea1fd7cc5c0c6e4a1ff075df26d50da647b75376626cc186e2212886dd3a"
+ ],
+ "index": "pypi",
+ "version": "==0.0.1"
+ },
+ "certifi": {
+ "hashes": [
+ "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3",
+ "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"
+ ],
+ "index": "pypi",
+ "version": "==2020.6.20"
+ },
+ "cfgv": {
+ "hashes": [
+ "sha256:32e43d604bbe7896fe7c248a9c2276447dbef840feb28fe20494f62af110211d",
+ "sha256:cf22deb93d4bcf92f345a5c3cd39d3d41d6340adc60c78bbbd6588c384fda6a1"
+ ],
+ "markers": "python_full_version >= '3.6.1'",
+ "version": "==3.2.0"
+ },
+ "chardet": {
+ "hashes": [
+ "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
+ "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
+ ],
+ "version": "==3.0.4"
+ },
+ "distlib": {
+ "hashes": [
+ "sha256:8c09de2c67b3e7deef7184574fc060ab8a793e7adbb183d942c389c8b13c52fb",
+ "sha256:edf6116872c863e1aa9d5bb7cb5e05a022c519a4594dc703843343a9ddd9bff1"
+ ],
+ "version": "==0.3.1"
+ },
+ "django": {
+ "hashes": [
+ "sha256:1a63f5bb6ff4d7c42f62a519edc2adbb37f9b78068a5a862beff858b68e3dc8b",
+ "sha256:2d390268a13c655c97e0e2ede9d117007996db692c1bb93eabebd4fb7ea7012b"
+ ],
+ "index": "pypi",
+ "version": "==3.1"
+ },
+ "django-debug-toolbar": {
+ "hashes": [
+ "sha256:eabbefe89881bbe4ca7c980ff102e3c35c8e8ad6eb725041f538988f2f39a943",
+ "sha256:ff94725e7aae74b133d0599b9bf89bd4eb8f5d2c964106e61d11750228c8774c"
+ ],
+ "index": "pypi",
+ "version": "==2.2"
+ },
+ "django-widget-tweaks": {
+ "hashes": [
+ "sha256:9f91ca4217199b7671971d3c1f323a2bec71a0c27dec6260b3c006fa541bc489",
+ "sha256:f80bff4a8a59b278bb277a405a76a8b9a884e4bae7a6c70e78a39c626cd1c836"
+ ],
+ "index": "pypi",
+ "version": "==1.4.8"
+ },
+ "filelock": {
+ "hashes": [
+ "sha256:18d82244ee114f543149c66a6e0c14e9c4f8a1044b5cdaadd0f82159d6a6ff59",
+ "sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836"
+ ],
+ "version": "==3.0.12"
+ },
+ "identify": {
+ "hashes": [
+ "sha256:110ed090fec6bce1aabe3c72d9258a9de82207adeaa5a05cd75c635880312f9a",
+ "sha256:ccd88716b890ecbe10920659450a635d2d25de499b9a638525a48b48261d989b"
+ ],
+ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
+ "version": "==1.4.25"
+ },
+ "idna": {
+ "hashes": [
+ "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6",
+ "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"
+ ],
+ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
+ "version": "==2.10"
+ },
+ "importlib-metadata": {
+ "hashes": [
+ "sha256:90bb658cdbbf6d1735b6341ce708fc7024a3e14e99ffdc5783edea9f9b077f83",
+ "sha256:dc15b2969b4ce36305c51eebe62d418ac7791e9a157911d58bfb1f9ccd8e2070"
+ ],
+ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
+ "version": "==1.7.0"
+ },
+ "isort": {
+ "hashes": [
+ "sha256:723de131d9ae9d2561844f0ee525ce33a396a11bcda57174f036ed5ab3d6a122",
+ "sha256:cdca22530d093ed16983ba52c41560fa0219d1b958e44fd2ae2995dcc7b785be"
+ ],
+ "index": "pypi",
+ "version": "==5.3.0"
+ },
+ "jsonpickle": {
+ "hashes": [
+ "sha256:8919c166bac0574e3d74425c7559434062002d9dfc0ac2afa6dc746ba4a19439",
+ "sha256:e8d4b7cd0bd6826001a74377df1079a76ad8bae0f909282de2554164c837c8ba"
+ ],
+ "index": "pypi",
+ "version": "==1.4.1"
+ },
+ "lxml": {
+ "hashes": [
+ "sha256:05a444b207901a68a6526948c7cc8f9fe6d6f24c70781488e32fd74ff5996e3f",
+ "sha256:08fc93257dcfe9542c0a6883a25ba4971d78297f63d7a5a26ffa34861ca78730",
+ "sha256:107781b213cf7201ec3806555657ccda67b1fccc4261fb889ef7fc56976db81f",
+ "sha256:121b665b04083a1e85ff1f5243d4a93aa1aaba281bc12ea334d5a187278ceaf1",
+ "sha256:1fa21263c3aba2b76fd7c45713d4428dbcc7644d73dcf0650e9d344e433741b3",
+ "sha256:2b30aa2bcff8e958cd85d907d5109820b01ac511eae5b460803430a7404e34d7",
+ "sha256:4b4a111bcf4b9c948e020fd207f915c24a6de3f1adc7682a2d92660eb4e84f1a",
+ "sha256:5591c4164755778e29e69b86e425880f852464a21c7bb53c7ea453bbe2633bbe",
+ "sha256:59daa84aef650b11bccd18f99f64bfe44b9f14a08a28259959d33676554065a1",
+ "sha256:5a9c8d11aa2c8f8b6043d845927a51eb9102eb558e3f936df494e96393f5fd3e",
+ "sha256:5dd20538a60c4cc9a077d3b715bb42307239fcd25ef1ca7286775f95e9e9a46d",
+ "sha256:74f48ec98430e06c1fa8949b49ebdd8d27ceb9df8d3d1c92e1fdc2773f003f20",
+ "sha256:786aad2aa20de3dbff21aab86b2fb6a7be68064cbbc0219bde414d3a30aa47ae",
+ "sha256:7ad7906e098ccd30d8f7068030a0b16668ab8aa5cda6fcd5146d8d20cbaa71b5",
+ "sha256:80a38b188d20c0524fe8959c8ce770a8fdf0e617c6912d23fc97c68301bb9aba",
+ "sha256:8f0ec6b9b3832e0bd1d57af41f9238ea7709bbd7271f639024f2fc9d3bb01293",
+ "sha256:92282c83547a9add85ad658143c76a64a8d339028926d7dc1998ca029c88ea6a",
+ "sha256:94150231f1e90c9595ccc80d7d2006c61f90a5995db82bccbca7944fd457f0f6",
+ "sha256:9dc9006dcc47e00a8a6a029eb035c8f696ad38e40a27d073a003d7d1443f5d88",
+ "sha256:a76979f728dd845655026ab991df25d26379a1a8fc1e9e68e25c7eda43004bed",
+ "sha256:aa8eba3db3d8761db161003e2d0586608092e217151d7458206e243be5a43843",
+ "sha256:bea760a63ce9bba566c23f726d72b3c0250e2fa2569909e2d83cda1534c79443",
+ "sha256:c3f511a3c58676147c277eff0224c061dd5a6a8e1373572ac817ac6324f1b1e0",
+ "sha256:c9d317efde4bafbc1561509bfa8a23c5cab66c44d49ab5b63ff690f5159b2304",
+ "sha256:cc411ad324a4486b142c41d9b2b6a722c534096963688d879ea6fa8a35028258",
+ "sha256:cdc13a1682b2a6241080745b1953719e7fe0850b40a5c71ca574f090a1391df6",
+ "sha256:cfd7c5dd3c35c19cec59c63df9571c67c6d6e5c92e0fe63517920e97f61106d1",
+ "sha256:e1cacf4796b20865789083252186ce9dc6cc59eca0c2e79cca332bdff24ac481",
+ "sha256:e70d4e467e243455492f5de463b72151cc400710ac03a0678206a5f27e79ddef",
+ "sha256:ecc930ae559ea8a43377e8b60ca6f8d61ac532fc57efb915d899de4a67928efd",
+ "sha256:f161af26f596131b63b236372e4ce40f3167c1b5b5d459b29d2514bd8c9dc9ee"
+ ],
+ "index": "pypi",
+ "version": "==4.5.2"
+ },
+ "mobi-python": {
+ "hashes": [
+ "sha256:010d0ed1933ee9bf33330ac125e55f9cb956078b6e62cbdba59b3bd753f903f3",
+ "sha256:890a14485ee83f6973f72eb51b6117a6c6da73e52210ea4c41dad9093f1d01b8"
+ ],
+ "index": "pypi",
+ "version": "==0.0.1"
+ },
+ "nodeenv": {
+ "hashes": [
+ "sha256:4b0b77afa3ba9b54f4b6396e60b0c83f59eaeb2d63dc3cc7a70f7f4af96c82bc"
+ ],
+ "version": "==1.4.0"
+ },
+ "pillow": {
+ "hashes": [
+ "sha256:0295442429645fa16d05bd567ef5cff178482439c9aad0411d3f0ce9b88b3a6f",
+ "sha256:06aba4169e78c439d528fdeb34762c3b61a70813527a2c57f0540541e9f433a8",
+ "sha256:09d7f9e64289cb40c2c8d7ad674b2ed6105f55dc3b09aa8e4918e20a0311e7ad",
+ "sha256:0a80dd307a5d8440b0a08bd7b81617e04d870e40a3e46a32d9c246e54705e86f",
+ "sha256:1ca594126d3c4def54babee699c055a913efb01e106c309fa6b04405d474d5ae",
+ "sha256:25930fadde8019f374400f7986e8404c8b781ce519da27792cbe46eabec00c4d",
+ "sha256:431b15cffbf949e89df2f7b48528be18b78bfa5177cb3036284a5508159492b5",
+ "sha256:52125833b070791fcb5710fabc640fc1df07d087fc0c0f02d3661f76c23c5b8b",
+ "sha256:5e51ee2b8114def244384eda1c82b10e307ad9778dac5c83fb0943775a653cd8",
+ "sha256:612cfda94e9c8346f239bf1a4b082fdd5c8143cf82d685ba2dba76e7adeeb233",
+ "sha256:6d7741e65835716ceea0fd13a7d0192961212fd59e741a46bbed7a473c634ed6",
+ "sha256:6edb5446f44d901e8683ffb25ebdfc26988ee813da3bf91e12252b57ac163727",
+ "sha256:725aa6cfc66ce2857d585f06e9519a1cc0ef6d13f186ff3447ab6dff0a09bc7f",
+ "sha256:8dad18b69f710bf3a001d2bf3afab7c432785d94fcf819c16b5207b1cfd17d38",
+ "sha256:94cf49723928eb6070a892cb39d6c156f7b5a2db4e8971cb958f7b6b104fb4c4",
+ "sha256:97f9e7953a77d5a70f49b9a48da7776dc51e9b738151b22dacf101641594a626",
+ "sha256:9ad7f865eebde135d526bb3163d0b23ffff365cf87e767c649550964ad72785d",
+ "sha256:a060cf8aa332052df2158e5a119303965be92c3da6f2d93b6878f0ebca80b2f6",
+ "sha256:c79f9c5fb846285f943aafeafda3358992d64f0ef58566e23484132ecd8d7d63",
+ "sha256:c92302a33138409e8f1ad16731568c55c9053eee71bb05b6b744067e1b62380f",
+ "sha256:d08b23fdb388c0715990cbc06866db554e1822c4bdcf6d4166cf30ac82df8c41",
+ "sha256:d350f0f2c2421e65fbc62690f26b59b0bcda1b614beb318c81e38647e0f673a1",
+ "sha256:ec29604081f10f16a7aea809ad42e27764188fc258b02259a03a8ff7ded3808d",
+ "sha256:edf31f1150778abd4322444c393ab9c7bd2af271dd4dafb4208fb613b1f3cdc9",
+ "sha256:f7e30c27477dffc3e85c2463b3e649f751789e0f6c8456099eea7ddd53be4a8a",
+ "sha256:ffe538682dc19cc542ae7c3e504fdf54ca7f86fb8a135e59dd6bc8627eae6cce"
+ ],
+ "index": "pypi",
+ "version": "==7.2.0"
+ },
+ "pre-commit": {
+ "hashes": [
+ "sha256:1657663fdd63a321a4a739915d7d03baedd555b25054449090f97bb0cb30a915",
+ "sha256:e8b1315c585052e729ab7e99dcca5698266bedce9067d21dc909c23e3ceed626"
+ ],
+ "index": "pypi",
+ "version": "==2.6.0"
+ },
+ "prompt-toolkit": {
+ "hashes": [
+ "sha256:563d1a4140b63ff9dd587bda9557cffb2fe73650205ab6f4383092fb882e7dc8",
+ "sha256:df7e9e63aea609b1da3a65641ceaf5bc7d05e0a04de5bd45d05dbeffbabf9e04"
+ ],
+ "index": "pypi",
+ "version": "==3.0.5"
+ },
+ "psutil": {
+ "hashes": [
+ "sha256:0ee3c36428f160d2d8fce3c583a0353e848abb7de9732c50cf3356dd49ad63f8",
+ "sha256:10512b46c95b02842c225f58fa00385c08fa00c68bac7da2d9a58ebe2c517498",
+ "sha256:4080869ed93cce662905b029a1770fe89c98787e543fa7347f075ade761b19d6",
+ "sha256:5e9d0f26d4194479a13d5f4b3798260c20cecf9ac9a461e718eb59ea520a360c",
+ "sha256:66c18ca7680a31bf16ee22b1d21b6397869dda8059dbdb57d9f27efa6615f195",
+ "sha256:68d36986ded5dac7c2dcd42f2682af1db80d4bce3faa126a6145c1637e1b559f",
+ "sha256:90990af1c3c67195c44c9a889184f84f5b2320dce3ee3acbd054e3ba0b4a7beb",
+ "sha256:a5b120bb3c0c71dfe27551f9da2f3209a8257a178ed6c628a819037a8df487f1",
+ "sha256:d8a82162f23c53b8525cf5f14a355f5d1eea86fa8edde27287dd3a98399e4fdf",
+ "sha256:f2018461733b23f308c298653c8903d32aaad7873d25e1d228765e91ae42c3f2",
+ "sha256:ff1977ba1a5f71f89166d5145c3da1cea89a0fdb044075a12c720ee9123ec818"
+ ],
+ "index": "pypi",
+ "version": "==5.7.2"
+ },
+ "psycopg2-binary": {
+ "hashes": [
+ "sha256:008da3ab51adc70a5f1cfbbe5db3a22607ab030eb44bcecf517ad11a0c2b3cac",
+ "sha256:07cf82c870ec2d2ce94d18e70c13323c89f2f2a2628cbf1feee700630be2519a",
+ "sha256:08507efbe532029adee21b8d4c999170a83760d38249936038bd0602327029b5",
+ "sha256:107d9be3b614e52a192719c6bf32e8813030020ea1d1215daa86ded9a24d8b04",
+ "sha256:17a0ea0b0eabf07035e5e0d520dabc7950aeb15a17c6d36128ba99b2721b25b1",
+ "sha256:3286541b9d85a340ee4ed42732d15fc1bb441dc500c97243a768154ab8505bb5",
+ "sha256:3939cf75fc89c5e9ed836e228c4a63604dff95ad19aed2bbf71d5d04c15ed5ce",
+ "sha256:40abc319f7f26c042a11658bf3dd3b0b3bceccf883ec1c565d5c909a90204434",
+ "sha256:51f7823f1b087d2020d8e8c9e6687473d3d239ba9afc162d9b2ab6e80b53f9f9",
+ "sha256:6bb2dd006a46a4a4ce95201f836194eb6a1e863f69ee5bab506673e0ca767057",
+ "sha256:702f09d8f77dc4794651f650828791af82f7c2efd8c91ae79e3d9fe4bb7d4c98",
+ "sha256:7036ccf715925251fac969f4da9ad37e4b7e211b1e920860148a10c0de963522",
+ "sha256:7b832d76cc65c092abd9505cc670c4e3421fd136fb6ea5b94efbe4c146572505",
+ "sha256:8f74e631b67482d504d7e9cf364071fc5d54c28e79a093ff402d5f8f81e23bfa",
+ "sha256:930315ac53dc65cbf52ab6b6d27422611f5fb461d763c531db229c7e1af6c0b3",
+ "sha256:96d3038f5bd061401996614f65d27a4ecb62d843eb4f48e212e6d129171a721f",
+ "sha256:a20299ee0ea2f9cca494396ac472d6e636745652a64a418b39522c120fd0a0a4",
+ "sha256:a34826d6465c2e2bbe9d0605f944f19d2480589f89863ed5f091943be27c9de4",
+ "sha256:a69970ee896e21db4c57e398646af9edc71c003bc52a3cc77fb150240fefd266",
+ "sha256:b9a8b391c2b0321e0cd7ec6b4cfcc3dd6349347bd1207d48bcb752aa6c553a66",
+ "sha256:ba13346ff6d3eb2dca0b6fa0d8a9d999eff3dcd9b55f3a890f12b0b6362b2b38",
+ "sha256:bb0608694a91db1e230b4a314e8ed00ad07ed0c518f9a69b83af2717e31291a3",
+ "sha256:c8830b7d5f16fd79d39b21e3d94f247219036b29b30c8270314c46bf8b732389",
+ "sha256:cac918cd7c4c498a60f5d2a61d4f0a6091c2c9490d81bc805c963444032d0dab",
+ "sha256:cc30cb900f42c8a246e2cb76539d9726f407330bc244ca7729c41a44e8d807fb",
+ "sha256:ccdc6a87f32b491129ada4b87a43b1895cf2c20fdb7f98ad979647506ffc41b6",
+ "sha256:d1a8b01f6a964fec702d6b6dac1f91f2b9f9fe41b310cbb16c7ef1fac82df06d",
+ "sha256:e004db88e5a75e5fdab1620fb9f90c9598c2a195a594225ac4ed2a6f1c23e162",
+ "sha256:eb2f43ae3037f1ef5e19339c41cf56947021ac892f668765cd65f8ab9814192e",
+ "sha256:fa466306fcf6b39b8a61d003123d442b23707d635a5cb05ac4e1b62cc79105cd"
+ ],
+ "index": "pypi",
+ "version": "==2.8.5"
+ },
+ "pyfiglet": {
+ "hashes": [
+ "sha256:c6c2321755d09267b438ec7b936825a4910fec696292139e664ca8670e103639",
+ "sha256:d555bcea17fbeaf70eaefa48bb119352487e629c9b56f30f383e2c62dd67a01c"
+ ],
+ "index": "pypi",
+ "version": "==0.8.post1"
+ },
+ "pytz": {
+ "hashes": [
+ "sha256:a494d53b6d39c3c6e44c3bec237336e14305e4f29bbf800b599253057fbb79ed",
+ "sha256:c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048"
+ ],
+ "version": "==2020.1"
+ },
+ "pyyaml": {
+ "hashes": [
+ "sha256:06a0d7ba600ce0b2d2fe2e78453a470b5a6e000a985dd4a4e54e436cc36b0e97",
+ "sha256:240097ff019d7c70a4922b6869d8a86407758333f02203e0fc6ff79c5dcede76",
+ "sha256:4f4b913ca1a7319b33cfb1369e91e50354d6f07a135f3b901aca02aa95940bd2",
+ "sha256:69f00dca373f240f842b2931fb2c7e14ddbacd1397d57157a9b005a6a9942648",
+ "sha256:73f099454b799e05e5ab51423c7bcf361c58d3206fa7b0d555426b1f4d9a3eaf",
+ "sha256:74809a57b329d6cc0fdccee6318f44b9b8649961fa73144a98735b0aaf029f1f",
+ "sha256:7739fc0fa8205b3ee8808aea45e968bc90082c10aef6ea95e855e10abf4a37b2",
+ "sha256:95f71d2af0ff4227885f7a6605c37fd53d3a106fcab511b8860ecca9fcf400ee",
+ "sha256:b8eac752c5e14d3eca0e6dd9199cd627518cb5ec06add0de9d32baeee6fe645d",
+ "sha256:cc8955cfbfc7a115fa81d85284ee61147059a753344bc51098f3ccd69b0d7e0c",
+ "sha256:d13155f591e6fcc1ec3b30685d50bf0711574e2c0dfffd7644babf8b5102ca1a"
+ ],
+ "version": "==5.3.1"
+ },
+ "requests": {
+ "hashes": [
+ "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b",
+ "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"
+ ],
+ "index": "pypi",
+ "version": "==2.24.0"
+ },
+ "six": {
+ "hashes": [
+ "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259",
+ "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"
+ ],
+ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'",
+ "version": "==1.15.0"
+ },
+ "soupsieve": {
+ "hashes": [
+ "sha256:1634eea42ab371d3d346309b93df7870a88610f0725d47528be902a0d95ecc55",
+ "sha256:a59dc181727e95d25f781f0eb4fd1825ff45590ec8ff49eadfd7f1a537cc0232"
+ ],
+ "index": "pypi",
+ "version": "==2.0.1"
+ },
+ "sqlparse": {
+ "hashes": [
+ "sha256:022fb9c87b524d1f7862b3037e541f68597a730a8843245c349fc93e1643dc4e",
+ "sha256:e162203737712307dfe78860cc56c8da8a852ab2ee33750e33aeadf38d12c548"
+ ],
+ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
+ "version": "==0.3.1"
+ },
+ "toml": {
+ "hashes": [
+ "sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f",
+ "sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88"
+ ],
+ "index": "pypi",
+ "version": "==0.10.1"
+ },
+ "urllib3": {
+ "hashes": [
+ "sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a",
+ "sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461"
+ ],
+ "index": "pypi",
+ "version": "==1.25.10"
+ },
+ "urwid": {
+ "hashes": [
+ "sha256:7870866e35b00b71b0c9ccdd1281c8e7fac3806d60b9c1075c95dd5dad88d526"
+ ],
+ "index": "pypi",
+ "version": "==2.1.1"
+ },
+ "uwsgi": {
+ "hashes": [
+ "sha256:faa85e053c0b1be4d5585b0858d3a511d2cd10201802e8676060fd0a109e5869"
+ ],
+ "index": "pypi",
+ "version": "==2.0.19.1"
+ },
+ "virtualenv": {
+ "hashes": [
+ "sha256:7b54fd606a1b85f83de49ad8d80dbec08e983a2d2f96685045b262ebc7481ee5",
+ "sha256:8cd7b2a4850b003a11be2fc213e206419efab41115cc14bca20e69654f2ac08e"
+ ],
+ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'",
+ "version": "==20.0.30"
+ },
+ "w3lib": {
+ "hashes": [
+ "sha256:0161d55537063e00d95a241663ede3395c4c6d7b777972ba2fd58bbab2001e53",
+ "sha256:0ad6d0203157d61149fd45aaed2e24f53902989c32fc1dccc2e2bfba371560df"
+ ],
+ "index": "pypi",
+ "version": "==1.22.0"
+ },
+ "wcwidth": {
+ "hashes": [
+ "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784",
+ "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"
+ ],
+ "version": "==0.2.5"
+ },
+ "websockets": {
+ "hashes": [
+ "sha256:0e4fb4de42701340bd2353bb2eee45314651caa6ccee80dbd5f5d5978888fed5",
+ "sha256:1d3f1bf059d04a4e0eb4985a887d49195e15ebabc42364f4eb564b1d065793f5",
+ "sha256:20891f0dddade307ffddf593c733a3fdb6b83e6f9eef85908113e628fa5a8308",
+ "sha256:295359a2cc78736737dd88c343cd0747546b2174b5e1adc223824bcaf3e164cb",
+ "sha256:2db62a9142e88535038a6bcfea70ef9447696ea77891aebb730a333a51ed559a",
+ "sha256:3762791ab8b38948f0c4d281c8b2ddfa99b7e510e46bd8dfa942a5fff621068c",
+ "sha256:3db87421956f1b0779a7564915875ba774295cc86e81bc671631379371af1170",
+ "sha256:3ef56fcc7b1ff90de46ccd5a687bbd13a3180132268c4254fc0fa44ecf4fc422",
+ "sha256:4f9f7d28ce1d8f1295717c2c25b732c2bc0645db3215cf757551c392177d7cb8",
+ "sha256:5c01fd846263a75bc8a2b9542606927cfad57e7282965d96b93c387622487485",
+ "sha256:5c65d2da8c6bce0fca2528f69f44b2f977e06954c8512a952222cea50dad430f",
+ "sha256:751a556205d8245ff94aeef23546a1113b1dd4f6e4d102ded66c39b99c2ce6c8",
+ "sha256:7ff46d441db78241f4c6c27b3868c9ae71473fe03341340d2dfdbe8d79310acc",
+ "sha256:965889d9f0e2a75edd81a07592d0ced54daa5b0785f57dc429c378edbcffe779",
+ "sha256:9b248ba3dd8a03b1a10b19efe7d4f7fa41d158fdaa95e2cf65af5a7b95a4f989",
+ "sha256:9bef37ee224e104a413f0780e29adb3e514a5b698aabe0d969a6ba426b8435d1",
+ "sha256:c1ec8db4fac31850286b7cd3b9c0e1b944204668b8eb721674916d4e28744092",
+ "sha256:c8a116feafdb1f84607cb3b14aa1418424ae71fee131642fc568d21423b51824",
+ "sha256:ce85b06a10fc65e6143518b96d3dca27b081a740bae261c2fb20375801a9d56d",
+ "sha256:d705f8aeecdf3262379644e4b55107a3b55860eb812b673b28d0fbc347a60c55",
+ "sha256:e898a0863421650f0bebac8ba40840fc02258ef4714cb7e1fd76b6a6354bda36",
+ "sha256:f8a7bff6e8664afc4e6c28b983845c5bc14965030e3fb98789734d416af77c4b"
+ ],
+ "index": "pypi",
+ "version": "==8.1"
+ },
+ "zipp": {
+ "hashes": [
+ "sha256:aa36550ff0c0b7ef7fa639055d797116ee891440eac1a56f378e2d3179e0320b",
+ "sha256:c599e4d75c98f6798c509911d08a22e6c021d074469042177c8c86fb92eefd96"
+ ],
+ "markers": "python_version >= '3.6'",
+ "version": "==3.1.0"
+ }
+ },
+ "develop": {}
+}
diff --git a/docs/html/HTML/D/index.html b/docs/html/HTML/D/index.html
deleted file mode 100644
index f931715..0000000
--- a/docs/html/HTML/D/index.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/docs/html/HTML/FILEMAP b/docs/html/HTML/FILEMAP
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/html/HTML/GTAGSROOT b/docs/html/HTML/GTAGSROOT
deleted file mode 100644
index c725022..0000000
--- a/docs/html/HTML/GTAGSROOT
+++ /dev/null
@@ -1 +0,0 @@
-/home/raelon/Projects/pyShelf/src/backend
diff --git a/docs/html/HTML/I/index.html b/docs/html/HTML/I/index.html
deleted file mode 100644
index f931715..0000000
--- a/docs/html/HTML/I/index.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/docs/html/HTML/J/index.html b/docs/html/HTML/J/index.html
deleted file mode 100644
index f931715..0000000
--- a/docs/html/HTML/J/index.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/docs/html/HTML/R/index.html b/docs/html/HTML/R/index.html
deleted file mode 100644
index f931715..0000000
--- a/docs/html/HTML/R/index.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/docs/html/HTML/S/index.html b/docs/html/HTML/S/index.html
deleted file mode 100644
index f931715..0000000
--- a/docs/html/HTML/S/index.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/docs/html/HTML/Y/index.html b/docs/html/HTML/Y/index.html
deleted file mode 100644
index f931715..0000000
--- a/docs/html/HTML/Y/index.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/docs/html/HTML/defines.html b/docs/html/HTML/defines.html
deleted file mode 100644
index 12bb5f1..0000000
--- a/docs/html/HTML/defines.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-DEFINITIONS
-
-
-
-
-
-
-
-
-
diff --git a/docs/html/HTML/defines/index.html b/docs/html/HTML/defines/index.html
deleted file mode 100644
index f931715..0000000
--- a/docs/html/HTML/defines/index.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/docs/html/HTML/files.html b/docs/html/HTML/files.html
deleted file mode 100644
index 96fffe8..0000000
--- a/docs/html/HTML/files.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-FILES
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/html/HTML/files/index.html b/docs/html/HTML/files/index.html
deleted file mode 100644
index f931715..0000000
--- a/docs/html/HTML/files/index.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/docs/html/HTML/help.html b/docs/html/HTML/help.html
deleted file mode 100644
index 217d2a6..0000000
--- a/docs/html/HTML/help.html
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-HELP
-
-
-
-
-
-
-
-/* [<][>][^][v][top][bottom][index][help] */
-
-[<] Previous definition.
-[>] Next definition.
-[^] First definition in this file.
-[v] Last definition in this file.
-[top] Top of this file.
-[bottom] Bottom of this file.
-[index] Return to index page.
-[help] You are seeing now.
-
-
-
diff --git a/docs/html/HTML/index.html b/docs/html/HTML/index.html
deleted file mode 100644
index 90ee372..0000000
--- a/docs/html/HTML/index.html
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-pyShelf Open Source Ebook Server-0.6.0
-
-
-
-
-
-
-pyShelf Open Source Ebook Server-0.6.0
-
-Last updated Mon Aug 03 09:02:53 EDT 2020
-Powered by
GLOBAL-6.6.4 .
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/html/HTML/mains.html b/docs/html/HTML/mains.html
deleted file mode 100644
index 90ee372..0000000
--- a/docs/html/HTML/mains.html
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-pyShelf Open Source Ebook Server-0.6.0
-
-
-
-
-
-
-pyShelf Open Source Ebook Server-0.6.0
-
-Last updated Mon Aug 03 09:02:53 EDT 2020
-Powered by
GLOBAL-6.6.4 .
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/html/HTML/rebuild.sh b/docs/html/HTML/rebuild.sh
deleted file mode 100644
index 4510cdf..0000000
--- a/docs/html/HTML/rebuild.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-#
-# rebuild.sh: rebuild hypertext with the previous context.
-#
-# Usage:
-# % sh rebuild.sh
-#
-cd /home/raelon/Projects/pyShelf/src/backend && GTAGSCONF=':langmap=c\:.c.h,yacc\:.y,asm\:.s.S,java\:.java,cpp\:.c++.cc.hh.cpp.cxx.hxx.hpp.C.H,php\:.php.php3.phtml:skip=HTML/,HTML.pub/,tags,TAGS,ID,y.tab.c,y.tab.h,gtags.files,cscope.files,cscope.out,cscope.po.out,cscope.in.out,SCCS/,RCS/,CVS/,CVSROOT/,{arch}/,autom4te.cache/,*.orig,*.rej,*.bak,*~,#*#,*.swp,*.tmp,*_flymake.*,*_flymake,*.o,*.a,*.so,*.lo,*.zip,*.gz,*.bz2,*.xz,*.lzh,*.Z,*.tgz,*.min.js,*min.css:' htags -g -s -a -n -v -w -t 'pyShelf Open Source Ebook Server-0.6.0' /home/raelon/Projects/pyShelf/docs/html
diff --git a/docs/html/HTML/style.css b/docs/html/HTML/style.css
deleted file mode 100755
index d7db34a..0000000
--- a/docs/html/HTML/style.css
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2005, 2010, 2011 Tama Communications Corporation
- *
- * This file is free software; as a special exception the author gives
- * unlimited permission to copy and/or distribute it, with or without
- * modifications, as long as this notice is preserved.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- */
-/*
- * Souce code
- */
-body { color: #191970; background-color: #f5f5dc; }
-a.visited { color: gray; }
-.title { color: #cc0000; }
-.poweredby { text-align: right; }
-.error { color: red; }
-.loading { color: white; background-color: red; }
-.cvs { font-size: 90%; }
-.caution { text-align: center; margin: 1em 40px; }
-img.icon { vertical-align: top; border: 0; }
-.curline:hover { background-color:lightgray; }
-table.flist { border-spacing: 2px; width: 100%; }
-/*
- * Parts
- */
-em { font-style: normal; }
-em.comment { color: green; font-style: italic; }
-em.sharp { color: #8b0000; }
-em.brace { color: red; }
-em.warned { background-color: yellow; }
-em.string { text-decoration: underline; }
-strong.reserved { font-weight: bold; }
-/*
- * Tag list using table (--table-list)
- */
-th, td { white-space: nowrap; }
-th.tag { text-align: left; }
-th.line { text-align: right; }
-th.file { text-align: left; }
-th.code { text-align: left; }
-td.tag { text-align: left; }
-td.line { text-align: right; }
-td.file { text-align: left; }
-td.code { text-align: left; }
-/* end of TAG LIST */
-/*
- * Fixed guide (--fixed-guide)
- */
-#guide {
- height: 35px;
- position: fixed;
- bottom:0px; left:0px; right:0px;
- background: #f5f5dc;
- border: 1px solid #ccc;
-}
-#guide ul {
- height: 25px;
- margin: 5px;
- width: 90%;
-}
-#guide ul li {
- float: left;
- display: inline;
- margin: 1px 1px;
-}
-#guide a {
- line-height: 24px;
-}
-#guide ul li.standout span {
- margin: 0px 4px;
- font-size: 115%;
- font-weight: bold;
-}
-/* end of FIXED GUIDE */
diff --git a/docs/html/annotated.html b/docs/html/annotated.html
deleted file mode 100755
index cfc0d30..0000000
--- a/docs/html/annotated.html
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: Class List
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Here are the classes, structs, unions and interfaces with brief descriptions:
-
-
-
-
-
diff --git a/docs/html/bc_s.png b/docs/html/bc_s.png
deleted file mode 100755
index 224b29a..0000000
Binary files a/docs/html/bc_s.png and /dev/null differ
diff --git a/docs/html/bdwn.png b/docs/html/bdwn.png
deleted file mode 100755
index 940a0b9..0000000
Binary files a/docs/html/bdwn.png and /dev/null differ
diff --git a/docs/html/classes.html b/docs/html/classes.html
deleted file mode 100755
index 7ab66de..0000000
--- a/docs/html/classes.html
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: Class Index
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/html/closed.png b/docs/html/closed.png
deleted file mode 100755
index 98cc2c9..0000000
Binary files a/docs/html/closed.png and /dev/null differ
diff --git a/docs/html/d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html b/docs/html/d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html
deleted file mode 100755
index d4afe5e..0000000
--- a/docs/html/d0/d35/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay.html
+++ /dev/null
@@ -1,129 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: src.backend.lib.display.TerminalDisplay Class Reference
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.4.1
-
- Open source, console based E-book server
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def __init__ (self)
-
-
-def screen (self)
-
-
-def installer (self)
-
-
-def prompt (self, questions)
-
-
-def h_rule (self)
-
-
-def banner (self)
-
-
-def banner_render (self)
-
-
-
-
- term
-
-
- y
-
-
- home
-
-
- user
-
-
- version
-
-
- slogan
-
-
- green
-
-
- blue
-
-
- clr_term
-
-
-
-
The documentation for this class was generated from the following file:
-
-
-
-
-
diff --git a/docs/html/d1/dca/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html b/docs/html/d1/dca/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html
deleted file mode 100755
index d32fd28..0000000
--- a/docs/html/d1/dca/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: Member List
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
This is the complete list of members for src.backend.lib.pyShelf.InitFiles , including all inherited members.
-
-
-
-
-
diff --git a/docs/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html b/docs/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html
deleted file mode 100755
index d8b183b..0000000
--- a/docs/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html
+++ /dev/null
@@ -1,173 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: src.backend.tests.library_test.Test_Config Class Reference
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def __init__ (self)
-
-def open_file (self, root="config.json")
-
-
-def django_secret (self, _data)
-
-
-
-
- book_path
-
-
- TITLE
-
-
- VERSION
-
-
- book_shelf
-
-
- catalogue_db
-
-
- user
-
-
- password
-
-
- db_host
-
-
- db_port
-
-
- file_array
-
-
- root
-
-
- auto_scan
-
-
- allowed_hosts
-
-
- db_user
-
-
- db_pass
-
-
- SECRET
-
-
-
-
-
-
◆ open_file()
-
-
-
-
-
- def src.backend.tests.library_test.Test_Config.open_file
- (
-
- self ,
-
-
-
-
-
- _cp = "config.json"
-
-
-
- )
-
-
-
-
-
-
The documentation for this class was generated from the following file:
-
-
-
-
-
diff --git a/docs/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png b/docs/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png
deleted file mode 100755
index d263ae1..0000000
Binary files a/docs/html/d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png and /dev/null differ
diff --git a/docs/html/d3/d4a/classsrc_1_1backend_1_1lib_1_1config_1_1Config-members.html b/docs/html/d3/d4a/classsrc_1_1backend_1_1lib_1_1config_1_1Config-members.html
deleted file mode 100755
index fb0f2f4..0000000
--- a/docs/html/d3/d4a/classsrc_1_1backend_1_1lib_1_1config_1_1Config-members.html
+++ /dev/null
@@ -1,81 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: Member List
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
This is the complete list of members for src.backend.lib.config.Config , including all inherited members.
-
-
-
-
-
diff --git a/docs/html/d3/d95/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html b/docs/html/d3/d95/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html
deleted file mode 100755
index 4c9b937..0000000
--- a/docs/html/d3/d95/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: Member List
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
This is the complete list of members for src.backend.tests.library_test.TestCatalogue , including all inherited members.
-
-
-
-
-
diff --git a/docs/html/d4/d45/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay-members.html b/docs/html/d4/d45/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay-members.html
deleted file mode 100755
index aa04309..0000000
--- a/docs/html/d4/d45/classsrc_1_1backend_1_1lib_1_1display_1_1TerminalDisplay-members.html
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: Member List
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.4.1
-
- Open source, console based E-book server
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
This is the complete list of members for src.backend.lib.display.TerminalDisplay , including all inherited members.
-
-
-
-
-
diff --git a/docs/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html b/docs/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html
deleted file mode 100755
index 9b3f2d6..0000000
--- a/docs/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html
+++ /dev/null
@@ -1,422 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: src.backend.lib.library.Catalogue Class Reference
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def __init__ (self, config)
-
-def scan_folder (self, _path=None)
-
-def filter_books (self)
-
-
-def process_by_filetype (self, book)
-
-def extract_metadata_epub (self, book)
-
-
-def extract_metadata_mobi (self, book)
-
-def extract_content (self, book_zip, book)
-
-def extract_cover_html (self, book_zip, book)
-
-def extract_cover_image (self, book_zip, book)
-
-def compare_shelf_current (self)
-
-def import_books (self, list=None)
-
-
-
-
- file_list
-
-
- opf_regx
-
-
- cover_regx
-
-
- html_regx
-
-
- title_sanitization_regx
-
-
- title_sanitization_lvl2_regx
-
-
- title_sanitization_dirs_regx
-
-
- root_dir
-
-
- book_folder
-
-
- books
-
-
- db_pointer
-
-
- config
-
-
-
-
Decodes book metadata for storage
-
-
-
◆ compare_shelf_current()
-
-
-
-
-
- def src.backend.lib.library.Catalogue.compare_shelf_current
- (
-
- self )
-
-
-
-
-
Calls storage system, gets list of books stored and compares against files on disk
-
-
-
-
-
◆ extract_content()
-
-
-
-
-
- def src.backend.lib.library.Catalogue.extract_content
- (
-
- self ,
-
-
-
-
-
- book_zip ,
-
-
-
-
-
- book
-
-
-
- )
-
-
-
-
-
Opens epub as zip file filters then stores as list any files matching opf_regx
-
-
-
-
-
◆ extract_cover_html()
-
-
-
-
-
- def src.backend.lib.library.Catalogue.extract_cover_html
- (
-
- self ,
-
-
-
-
-
- book_zip ,
-
-
-
-
-
- book
-
-
-
- )
-
-
-
-
-
Opens epub as zip file filters then stores as list any files matching html_regx
-
-
-
-
-
◆ extract_cover_image()
-
-
-
-
-
- def src.backend.lib.library.Catalogue.extract_cover_image
- (
-
- self ,
-
-
-
-
-
- book_zip ,
-
-
-
-
-
- book
-
-
-
- )
-
-
-
-
-
Opens epub as zip file filters then stores as list any files matching cover_regx
-
-
-
-
-
◆ extract_metadata_epub()
-
-
-
-
-
- def src.backend.lib.library.Catalogue.extract_metadata_epub
- (
-
- self ,
-
-
-
-
-
- book
-
-
-
- )
-
-
-
-
-
Return extracted metadata and cover picture
-book['path'] == Full path to ebook file
-book['files'] == list of files from self.process_book(book)
-
-
-
-
-
◆ filter_books()
-
-
-
-
-
- def src.backend.lib.library.Catalogue.filter_books
- (
-
- self )
-
-
-
-
-
Calls scan_folder and filters out book files
-Proceeds to call process_book
-
-:returns self._book_list_expanded: json string containing all book metadata
-
-
Reimplemented in src.backend.tests.library_test.Test_Catalogue .
-
-
-
-
-
◆ import_books()
-
-
-
-
-
- def src.backend.lib.library.Catalogue.import_books
- (
-
- self ,
-
-
-
-
-
- list = None
-
-
-
- )
-
-
-
-
-
Main entry point for import operations.
-Gets a list of new files via compare_shelf_current.
-Iterates over list and inserts new books into database.
-
-
-
-
-
◆ process_epub()
-
-
-
-
-
-
-
-
- def src.backend.lib.library.Catalogue.process_epub
- (
-
- book )
-
-
-
-
-
-static
-
-
-
-
Return dictionary of epub file contents
-
-
-
-
◆ scan_folder()
-
-
-
-
-
- def src.backend.lib.library.Catalogue.scan_folder
- (
-
- self ,
-
-
-
-
-
- _path = None
-
-
-
- )
-
-
-
-
-
Scan folder by _path, allows recurisive scanning
-
-
-
-
The documentation for this class was generated from the following file:
-
-
-
-
-
diff --git a/docs/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.png b/docs/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.png
deleted file mode 100755
index 22e8081..0000000
Binary files a/docs/html/d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.png and /dev/null differ
diff --git a/docs/html/d5/ddf/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html b/docs/html/d5/ddf/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html
deleted file mode 100755
index d13e851..0000000
--- a/docs/html/d5/ddf/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html
+++ /dev/null
@@ -1,82 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: Member List
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
This is the complete list of members for src.backend.tests.library_test.Test_Config , including all inherited members.
-
-
-
-
-
diff --git a/docs/html/d5/dee/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html b/docs/html/d5/dee/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html
deleted file mode 100755
index f7d2cb9..0000000
--- a/docs/html/d5/dee/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: Member List
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
This is the complete list of members for src.backend.tests.config_test.TestConfig , including all inherited members.
-
-
-
-
-
diff --git a/docs/html/d6/d20/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html b/docs/html/d6/d20/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html
deleted file mode 100755
index 2dc3649..0000000
--- a/docs/html/d6/d20/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: Member List
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
This is the complete list of members for src.backend.lib.library.Catalogue , including all inherited members.
-
- __init__ (self, config) (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- book_folder (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- books (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- compare_shelf_current (self)src.backend.lib.library.Catalogue
- config (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- cover_regx (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- db_pointer (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- extract_content (self, book_zip, book)src.backend.lib.library.Catalogue
- extract_cover_html (self, book_zip, book)src.backend.lib.library.Catalogue
- extract_cover_image (self, book_zip, book)src.backend.lib.library.Catalogue
- extract_metadata_epub (self, book)src.backend.lib.library.Catalogue
- extract_metadata_mobi (self, book) (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- file_list (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- filter_books (self)src.backend.lib.library.Catalogue
- html_regx (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- import_books (self, list=None)src.backend.lib.library.Catalogue
- opf_regx (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- process_by_filetype (self, book) (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- process_epub (book)src.backend.lib.library.Catalogue static
- root_dir (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- scan_folder (self, _path=None)src.backend.lib.library.Catalogue
- stripTags (source) (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue static
- title_sanitization_dirs_regx (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- title_sanitization_lvl2_regx (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- title_sanitization_regx (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
-
-
-
-
-
diff --git a/docs/html/d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html b/docs/html/d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html
deleted file mode 100755
index 59be543..0000000
--- a/docs/html/d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html
+++ /dev/null
@@ -1,223 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: src.backend.lib.storage.Storage Class Reference
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- sql
-
-
- user
-
-
- password
-
-
- db_host
-
-
- db_port
-
-
- db
-
-
- config
-
-
- cursor
-
-
-
-
Contains all methods for system storage
-
-
◆ book_paths_list()
-
-
-
-
-
- def src.backend.lib.storage.Storage.book_paths_list
- (
-
- self )
-
-
-
-
-
Get file paths from database for comparison to system files
-
-
-
-
-
◆ close()
-
-
-
-
-
- def src.backend.lib.storage.Storage.close
- (
-
- self )
-
-
-
-
-
Close database connection
-
-
-
-
-
◆ commit()
-
-
-
-
-
- def src.backend.lib.storage.Storage.commit
- (
-
- self )
-
-
-
-
-
Commit database transactions
-
-
-
-
-
◆ create_tables()
-
-
-
-
-
- def src.backend.lib.storage.Storage.create_tables
- (
-
- self )
-
-
-
-
-
Create table structure
-
-
-
-
◆ insert_book()
-
-
-
-
-
- def src.backend.lib.storage.Storage.insert_book
- (
-
- self ,
-
-
-
-
-
- book
-
-
-
- )
-
-
-
-
-
Insert book in database
-:returns: True if succeeds False if not
-
-
-
-
The documentation for this class was generated from the following file:
-
-
-
-
-
diff --git a/docs/html/d7/d69/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay-members.html b/docs/html/d7/d69/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay-members.html
deleted file mode 100755
index 0293bd4..0000000
--- a/docs/html/d7/d69/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay-members.html
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: Member List
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
This is the complete list of members for src.backend.lib.pyShelf.BookDisplay , including all inherited members.
-
-
-
-
-
diff --git a/docs/html/d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html b/docs/html/d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html
deleted file mode 100755
index 7961883..0000000
--- a/docs/html/d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: src.backend.lib.api_hooks.DuckDuckGo Class Reference
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def __init__ (self)
-
-def image_result (self, query)
-
-
-
-
duckduckgo related searching
-
-
◆ image_result()
-
-
-
-
-
- def src.backend.lib.api_hooks.DuckDuckGo.image_result
- (
-
- self ,
-
-
-
-
-
- query
-
-
-
- )
-
-
-
-
-
Returns json containing url to image
-:param _key: &t=h_&iar=images&iax=images&ia=images&format=json&pretty=1
-
-
-
-
The documentation for this class was generated from the following file:
-
-
-
-
-
diff --git a/docs/html/d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html b/docs/html/d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html
deleted file mode 100755
index ac07992..0000000
--- a/docs/html/d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: src.backend.tests.library_test.TestCatalogue Class Reference
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def test_filter_books (self)
-
-
-
-
- root = os.path.abspath(os.path.curdir)
-
-
- config = Test_Config ()
-
-
-
-
The documentation for this class was generated from the following file:
-
-
-
-
-
diff --git a/docs/html/d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html b/docs/html/d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html
deleted file mode 100755
index 2127c9a..0000000
--- a/docs/html/d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html
+++ /dev/null
@@ -1,203 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: src.backend.lib.config.Config Class Reference
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def __init__ (self, root)
-
-def open_file (self, _cp)
-
-
-def django_secret (self, _data)
-
-
-
-
- book_path
-
-
- TITLE
-
-
- VERSION
-
-
- book_shelf
-
-
- catalogue_db
-
-
- user
-
-
- password
-
-
- db_host
-
-
- db_port
-
-
- file_array
-
-
- root
-
-
- auto_scan
-
-
- allowed_hosts
-
-
- db_user
-
-
- db_pass
-
-
- SECRET
-
-
-
-
Main System Configuration
-
-
-
◆ __init__()
-
-
-
-
-
- def src.backend.lib.config.Config.__init__
- (
-
- self ,
-
-
-
-
-
- root
-
-
-
- )
-
-
-
-
-
Initialize main configuration options
-
-
-
-
-
-
◆ open_file()
-
-
-
-
-
- def src.backend.lib.config.Config.open_file
- (
-
- self ,
-
-
-
-
-
- _cp
-
-
-
- )
-
-
-
-
-
-
The documentation for this class was generated from the following file:
-
-
-
-
-
diff --git a/docs/html/d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.png b/docs/html/d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.png
deleted file mode 100755
index c1f0983..0000000
Binary files a/docs/html/d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.png and /dev/null differ
diff --git a/docs/html/da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html b/docs/html/da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html
deleted file mode 100755
index d96c229..0000000
--- a/docs/html/da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: src.backend.lib.pyShelf.InitFiles Class Reference
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def __init__ (self, file_array)
-
-def CreateFile (self, _pointer)
-
-
-
-
First run file creation operations
-
-
◆ CreateFile()
-
-
-
-
-
- def src.backend.lib.pyShelf.InitFiles.CreateFile
- (
-
- self ,
-
-
-
-
-
- _pointer
-
-
-
- )
-
-
-
-
-
Checks if file exists and creates it if not
-
-
-
-
The documentation for this class was generated from the following file:
-
-
-
-
-
diff --git a/docs/html/db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html b/docs/html/db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html
deleted file mode 100755
index 012e93b..0000000
--- a/docs/html/db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html
+++ /dev/null
@@ -1,206 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: src.backend.lib.pyShelf.BookDisplay Class Reference
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- books_per_page
-
-
- current_page
-
-
- thumbnail_size
-
-
- thumbnail_scale
-
-
- total_pages
-
-
- screen_size
-
-
-
-
All functions related to displaying book information in the HTML UI
-
-
◆ __init__()
-
-
-
-
-
- def src.backend.lib.pyShelf.BookDisplay.__init__
- (
-
- self ,
-
-
-
-
- **
- kwargs
-
-
-
- )
-
-
-
-
-
Initialize class variables
-:return: None
-
-
-
-
-
-
◆ booksPerPage()
-
-
-
-
-
- def src.backend.lib.pyShelf.BookDisplay.booksPerPage
- (
-
- self ,
-
-
-
-
-
- screen_size
-
-
-
- )
-
-
-
-
-
## TODO Remove me
-Set books per page
-:param screen_size: Array containing x,y pixel sizes
-:return: self.books_per_page
-
-
-
-
-
◆ nextPage()
-
-
-
-
-
- def src.backend.lib.pyShelf.BookDisplay.nextPage
- (
-
- self )
-
-
-
-
-
## TODO Remove me
-Goto next book page
-:return: new current_page
-
-
-
-
-
◆ previousPage()
-
-
-
-
-
- def src.backend.lib.pyShelf.BookDisplay.previousPage
- (
-
- self )
-
-
-
-
-
## TODO Remove me
-Goto previous book page
-:return: new current_page
-
-
-
-
The documentation for this class was generated from the following file:
-
-
-
-
-
diff --git a/docs/html/db/d9a/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage-members.html b/docs/html/db/d9a/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage-members.html
deleted file mode 100755
index 9bfacff..0000000
--- a/docs/html/db/d9a/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage-members.html
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: Member List
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
This is the complete list of members for src.backend.lib.storage.Storage , including all inherited members.
-
-
-
-
-
diff --git a/docs/html/db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html b/docs/html/db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html
deleted file mode 100755
index d368e1a..0000000
--- a/docs/html/db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html
+++ /dev/null
@@ -1,480 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: src.backend.tests.library_test.Test_Catalogue Class Reference
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def __init__ (self)
-
-def filter_books (self)
-
-def scan_folder (self, _path=None)
-
-
-def process_by_filetype (self, book)
-
-def extract_metadata_epub (self, book)
-
-
-def extract_metadata_mobi (self, book)
-
-def extract_content (self, book_zip, book)
-
-def extract_cover_html (self, book_zip, book)
-
-def extract_cover_image (self, book_zip, book)
-
-def compare_shelf_current (self)
-
-def import_books (self, list=None)
-
-
-
-
- book_shelf
-
-
- file_list
-
-
- opf_regx
-
-
- cover_regx
-
-
- html_regx
-
-
- title_sanitization_regx
-
-
- title_sanitization_lvl2_regx
-
-
- title_sanitization_dirs_regx
-
-
- root_dir
-
-
- book_folder
-
-
- books
-
-
- db_pointer
-
-
- config
-
-
-
-
-
-
◆ compare_shelf_current()
-
-
-
-
-
-
-
-
- def src.backend.lib.library.Catalogue.compare_shelf_current
- (
-
- self )
-
-
-
-
-
-inherited
-
-
-
-
Calls storage system, gets list of books stored and compares against files on disk
-
-
-
-
-
◆ extract_content()
-
-
-
-
-
-
-
-
- def src.backend.lib.library.Catalogue.extract_content
- (
-
- self ,
-
-
-
-
-
- book_zip ,
-
-
-
-
-
- book
-
-
-
- )
-
-
-
-
-
-inherited
-
-
-
-
Opens epub as zip file filters then stores as list any files matching opf_regx
-
-
-
-
-
◆ extract_cover_html()
-
-
-
-
-
-
-
-
- def src.backend.lib.library.Catalogue.extract_cover_html
- (
-
- self ,
-
-
-
-
-
- book_zip ,
-
-
-
-
-
- book
-
-
-
- )
-
-
-
-
-
-inherited
-
-
-
-
Opens epub as zip file filters then stores as list any files matching html_regx
-
-
-
-
-
◆ extract_cover_image()
-
-
-
-
-
-
-
-
- def src.backend.lib.library.Catalogue.extract_cover_image
- (
-
- self ,
-
-
-
-
-
- book_zip ,
-
-
-
-
-
- book
-
-
-
- )
-
-
-
-
-
-inherited
-
-
-
-
Opens epub as zip file filters then stores as list any files matching cover_regx
-
-
-
-
-
◆ extract_metadata_epub()
-
-
-
-
-
-
-
-
- def src.backend.lib.library.Catalogue.extract_metadata_epub
- (
-
- self ,
-
-
-
-
-
- book
-
-
-
- )
-
-
-
-
-
-inherited
-
-
-
-
Return extracted metadata and cover picture
-book['path'] == Full path to ebook file
-book['files'] == list of files from self.process_book(book)
-
-
-
-
-
◆ filter_books()
-
-
-
-
-
- def src.backend.tests.library_test.Test_Catalogue.filter_books
- (
-
- self )
-
-
-
-
-
Calls scan_folder and filters out book files
-Proceeds to call process_book
-
-:returns self._book_list_expanded: json string containing all book metadata
-
-
Reimplemented from src.backend.lib.library.Catalogue .
-
-
-
-
-
◆ import_books()
-
-
-
-
-
-
-
-
- def src.backend.lib.library.Catalogue.import_books
- (
-
- self ,
-
-
-
-
-
- list = None
-
-
-
- )
-
-
-
-
-
-inherited
-
-
-
-
Main entry point for import operations.
-Gets a list of new files via compare_shelf_current.
-Iterates over list and inserts new books into database.
-
-
-
-
-
◆ process_epub()
-
-
-
-
-
-
-
-
- def src.backend.lib.library.Catalogue.process_epub
- (
-
- book )
-
-
-
-
-
-static inherited
-
-
-
-
Return dictionary of epub file contents
-
-
-
-
◆ scan_folder()
-
-
-
-
-
-
-
-
- def src.backend.lib.library.Catalogue.scan_folder
- (
-
- self ,
-
-
-
-
-
- _path = None
-
-
-
- )
-
-
-
-
-
-inherited
-
-
-
-
Scan folder by _path, allows recurisive scanning
-
-
-
-
The documentation for this class was generated from the following file:
-
-
-
-
-
diff --git a/docs/html/db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png b/docs/html/db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png
deleted file mode 100755
index 2532ba5..0000000
Binary files a/docs/html/db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png and /dev/null differ
diff --git a/docs/html/dc/d3e/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html b/docs/html/dc/d3e/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html
deleted file mode 100755
index ee9737b..0000000
--- a/docs/html/dc/d3e/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html
+++ /dev/null
@@ -1,89 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: Member List
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
This is the complete list of members for src.backend.tests.library_test.Test_Catalogue , including all inherited members.
-
- __init__ (self) (defined in src.backend.tests.library_test.Test_Catalogue )src.backend.tests.library_test.Test_Catalogue
- __init__ (self, config) (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- book_folder (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- book_shelf (defined in src.backend.tests.library_test.Test_Catalogue )src.backend.tests.library_test.Test_Catalogue
- books (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- compare_shelf_current (self)src.backend.lib.library.Catalogue
- config (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- cover_regx (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- db_pointer (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- extract_content (self, book_zip, book)src.backend.lib.library.Catalogue
- extract_cover_html (self, book_zip, book)src.backend.lib.library.Catalogue
- extract_cover_image (self, book_zip, book)src.backend.lib.library.Catalogue
- extract_metadata_epub (self, book)src.backend.lib.library.Catalogue
- extract_metadata_mobi (self, book) (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- file_list (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- filter_books (self)src.backend.tests.library_test.Test_Catalogue
- html_regx (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- import_books (self, list=None)src.backend.lib.library.Catalogue
- opf_regx (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- process_by_filetype (self, book) (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- process_epub (book)src.backend.lib.library.Catalogue static
- root_dir (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- scan_folder (self, _path=None)src.backend.lib.library.Catalogue
- stripTags (source) (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue static
- title_sanitization_dirs_regx (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- title_sanitization_lvl2_regx (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
- title_sanitization_regx (defined in src.backend.lib.library.Catalogue )src.backend.lib.library.Catalogue
-
-
-
-
-
diff --git a/docs/html/de/d11/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html b/docs/html/de/d11/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html
deleted file mode 100755
index 18d0968..0000000
--- a/docs/html/de/d11/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: Member List
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
This is the complete list of members for src.backend.lib.api_hooks.DuckDuckGo , including all inherited members.
-
-
-
-
-
diff --git a/docs/html/df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html b/docs/html/df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html
deleted file mode 100755
index e928079..0000000
--- a/docs/html/df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: src.backend.tests.config_test.TestConfig Class Reference
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def test_book_dir (self)
-
-
-def test_title (self)
-
-
-def test_version (self)
-
-
-
-
- config = Config (os.path.abspath(os.path.curdir))
-
-
-
-
The documentation for this class was generated from the following file:
-
-
-
-
-
diff --git a/docs/html/dir_1c7294442ce83d360610449d04c9d7fc.html b/docs/html/dir_1c7294442ce83d360610449d04c9d7fc.html
deleted file mode 100755
index 18cc6e8..0000000
--- a/docs/html/dir_1c7294442ce83d360610449d04c9d7fc.html
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: src/backend/lib Directory Reference
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/html/dir_3f615ade772d23cefe5e20dcb18424a2.html b/docs/html/dir_3f615ade772d23cefe5e20dcb18424a2.html
deleted file mode 100755
index f696e8f..0000000
--- a/docs/html/dir_3f615ade772d23cefe5e20dcb18424a2.html
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: src/backend Directory Reference
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
deleted file mode 100755
index a817550..0000000
--- a/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: src Directory Reference
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/html/dir_9020577e2da81c4cf5a5554c26431f94.html b/docs/html/dir_9020577e2da81c4cf5a5554c26431f94.html
deleted file mode 100755
index a4f6f0b..0000000
--- a/docs/html/dir_9020577e2da81c4cf5a5554c26431f94.html
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: src/backend/tests Directory Reference
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/html/doc.png b/docs/html/doc.png
deleted file mode 100755
index 17edabf..0000000
Binary files a/docs/html/doc.png and /dev/null differ
diff --git a/docs/html/doxygen.css b/docs/html/doxygen.css
deleted file mode 100755
index 5e35db3..0000000
--- a/docs/html/doxygen.css
+++ /dev/null
@@ -1,1730 +0,0 @@
-/* The standard CSS for doxygen 1.8.18 */
-
-body, table, div, p, dl {
- font: 400 14px/22px Roboto,sans-serif;
-}
-
-p.reference, p.definition {
- font: 400 14px/22px Roboto,sans-serif;
-}
-
-/* @group Heading Levels */
-
-h1.groupheader {
- font-size: 150%;
-}
-
-.title {
- font: 400 14px/28px Roboto,sans-serif;
- font-size: 150%;
- font-weight: bold;
- margin: 10px 2px;
-}
-
-h2.groupheader {
- border-bottom: 1px solid #879ECB;
- color: #354C7B;
- font-size: 150%;
- font-weight: normal;
- margin-top: 1.75em;
- padding-top: 8px;
- padding-bottom: 4px;
- width: 100%;
-}
-
-h3.groupheader {
- font-size: 100%;
-}
-
-h1, h2, h3, h4, h5, h6 {
- -webkit-transition: text-shadow 0.5s linear;
- -moz-transition: text-shadow 0.5s linear;
- -ms-transition: text-shadow 0.5s linear;
- -o-transition: text-shadow 0.5s linear;
- transition: text-shadow 0.5s linear;
- margin-right: 15px;
-}
-
-h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
- text-shadow: 0 0 15px cyan;
-}
-
-dt {
- font-weight: bold;
-}
-
-ul.multicol {
- -moz-column-gap: 1em;
- -webkit-column-gap: 1em;
- column-gap: 1em;
- -moz-column-count: 3;
- -webkit-column-count: 3;
- column-count: 3;
-}
-
-p.startli, p.startdd {
- margin-top: 2px;
-}
-
-th p.starttd, p.intertd, p.endtd {
- font-size: 100%;
- font-weight: 700;
-}
-
-p.starttd {
- margin-top: 0px;
-}
-
-p.endli {
- margin-bottom: 0px;
-}
-
-p.enddd {
- margin-bottom: 4px;
-}
-
-p.endtd {
- margin-bottom: 2px;
-}
-
-p.interli {
-}
-
-p.interdd {
-}
-
-p.intertd {
-}
-
-/* @end */
-
-caption {
- font-weight: bold;
-}
-
-span.legend {
- font-size: 70%;
- text-align: center;
-}
-
-h3.version {
- font-size: 90%;
- text-align: center;
-}
-
-div.qindex, div.navtab{
- background-color: #EBEFF6;
- border: 1px solid #A3B4D7;
- text-align: center;
-}
-
-div.qindex, div.navpath {
- width: 100%;
- line-height: 140%;
-}
-
-div.navtab {
- margin-right: 15px;
-}
-
-/* @group Link Styling */
-
-a {
- color: #3D578C;
- font-weight: normal;
- text-decoration: none;
-}
-
-.contents a:visited {
- color: #4665A2;
-}
-
-a:hover {
- text-decoration: underline;
-}
-
-a.qindex {
- font-weight: bold;
-}
-
-a.qindexHL {
- font-weight: bold;
- background-color: #9CAFD4;
- color: #FFFFFF;
- border: 1px double #869DCA;
-}
-
-.contents a.qindexHL:visited {
- color: #FFFFFF;
-}
-
-a.el {
- font-weight: bold;
-}
-
-a.elRef {
-}
-
-a.code, a.code:visited, a.line, a.line:visited {
- color: #4665A2;
-}
-
-a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
- color: #4665A2;
-}
-
-/* @end */
-
-dl.el {
- margin-left: -1cm;
-}
-
-ul {
- overflow: hidden; /*Fixed: list item bullets overlap floating elements*/
-}
-
-#side-nav ul {
- overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
-}
-
-#main-nav ul {
- overflow: visible; /* reset ul rule for the navigation bar drop down lists */
-}
-
-.fragment {
- text-align: left;
- direction: ltr;
- overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/
- overflow-y: hidden;
-}
-
-pre.fragment {
- border: 1px solid #C4CFE5;
- background-color: #FBFCFD;
- padding: 4px 6px;
- margin: 4px 8px 4px 2px;
- overflow: auto;
- word-wrap: break-word;
- font-size: 9pt;
- line-height: 125%;
- font-family: monospace, fixed;
- font-size: 105%;
-}
-
-div.fragment {
- padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/
- margin: 4px 8px 4px 2px;
- background-color: #FBFCFD;
- border: 1px solid #C4CFE5;
-}
-
-div.line {
- font-family: monospace, fixed;
- font-size: 13px;
- min-height: 13px;
- line-height: 1.0;
- text-wrap: unrestricted;
- white-space: -moz-pre-wrap; /* Moz */
- white-space: -pre-wrap; /* Opera 4-6 */
- white-space: -o-pre-wrap; /* Opera 7 */
- white-space: pre-wrap; /* CSS3 */
- word-wrap: break-word; /* IE 5.5+ */
- text-indent: -53px;
- padding-left: 53px;
- padding-bottom: 0px;
- margin: 0px;
- -webkit-transition-property: background-color, box-shadow;
- -webkit-transition-duration: 0.5s;
- -moz-transition-property: background-color, box-shadow;
- -moz-transition-duration: 0.5s;
- -ms-transition-property: background-color, box-shadow;
- -ms-transition-duration: 0.5s;
- -o-transition-property: background-color, box-shadow;
- -o-transition-duration: 0.5s;
- transition-property: background-color, box-shadow;
- transition-duration: 0.5s;
-}
-
-div.line:after {
- content:"\000A";
- white-space: pre;
-}
-
-div.line.glow {
- background-color: cyan;
- box-shadow: 0 0 10px cyan;
-}
-
-
-span.lineno {
- padding-right: 4px;
- text-align: right;
- border-right: 2px solid #0F0;
- background-color: #E8E8E8;
- white-space: pre;
-}
-span.lineno a {
- background-color: #D8D8D8;
-}
-
-span.lineno a:hover {
- background-color: #C8C8C8;
-}
-
-.lineno {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-
-div.ah, span.ah {
- background-color: black;
- font-weight: bold;
- color: #FFFFFF;
- margin-bottom: 3px;
- margin-top: 3px;
- padding: 0.2em;
- border: solid thin #333;
- border-radius: 0.5em;
- -webkit-border-radius: .5em;
- -moz-border-radius: .5em;
- box-shadow: 2px 2px 3px #999;
- -webkit-box-shadow: 2px 2px 3px #999;
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
- background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
- background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
-}
-
-div.classindex ul {
- list-style: none;
- padding-left: 0;
-}
-
-div.classindex span.ai {
- display: inline-block;
-}
-
-div.groupHeader {
- margin-left: 16px;
- margin-top: 12px;
- font-weight: bold;
-}
-
-div.groupText {
- margin-left: 16px;
- font-style: italic;
-}
-
-body {
- background-color: white;
- color: black;
- margin: 0;
-}
-
-div.contents {
- margin-top: 10px;
- margin-left: 12px;
- margin-right: 8px;
-}
-
-td.indexkey {
- background-color: #EBEFF6;
- font-weight: bold;
- border: 1px solid #C4CFE5;
- margin: 2px 0px 2px 0;
- padding: 2px 10px;
- white-space: nowrap;
- vertical-align: top;
-}
-
-td.indexvalue {
- background-color: #EBEFF6;
- border: 1px solid #C4CFE5;
- padding: 2px 10px;
- margin: 2px 0px;
-}
-
-tr.memlist {
- background-color: #EEF1F7;
-}
-
-p.formulaDsp {
- text-align: center;
-}
-
-img.formulaDsp {
-
-}
-
-img.formulaInl, img.inline {
- vertical-align: middle;
-}
-
-div.center {
- text-align: center;
- margin-top: 0px;
- margin-bottom: 0px;
- padding: 0px;
-}
-
-div.center img {
- border: 0px;
-}
-
-address.footer {
- text-align: right;
- padding-right: 12px;
-}
-
-img.footer {
- border: 0px;
- vertical-align: middle;
-}
-
-/* @group Code Colorization */
-
-span.keyword {
- color: #008000
-}
-
-span.keywordtype {
- color: #604020
-}
-
-span.keywordflow {
- color: #e08000
-}
-
-span.comment {
- color: #800000
-}
-
-span.preprocessor {
- color: #806020
-}
-
-span.stringliteral {
- color: #002080
-}
-
-span.charliteral {
- color: #008080
-}
-
-span.vhdldigit {
- color: #ff00ff
-}
-
-span.vhdlchar {
- color: #000000
-}
-
-span.vhdlkeyword {
- color: #700070
-}
-
-span.vhdllogic {
- color: #ff0000
-}
-
-blockquote {
- background-color: #F7F8FB;
- border-left: 2px solid #9CAFD4;
- margin: 0 24px 0 4px;
- padding: 0 12px 0 16px;
-}
-
-blockquote.DocNodeRTL {
- border-left: 0;
- border-right: 2px solid #9CAFD4;
- margin: 0 4px 0 24px;
- padding: 0 16px 0 12px;
-}
-
-/* @end */
-
-/*
-.search {
- color: #003399;
- font-weight: bold;
-}
-
-form.search {
- margin-bottom: 0px;
- margin-top: 0px;
-}
-
-input.search {
- font-size: 75%;
- color: #000080;
- font-weight: normal;
- background-color: #e8eef2;
-}
-*/
-
-td.tiny {
- font-size: 75%;
-}
-
-.dirtab {
- padding: 4px;
- border-collapse: collapse;
- border: 1px solid #A3B4D7;
-}
-
-th.dirtab {
- background: #EBEFF6;
- font-weight: bold;
-}
-
-hr {
- height: 0px;
- border: none;
- border-top: 1px solid #4A6AAA;
-}
-
-hr.footer {
- height: 1px;
-}
-
-/* @group Member Descriptions */
-
-table.memberdecls {
- border-spacing: 0px;
- padding: 0px;
-}
-
-.memberdecls td, .fieldtable tr {
- -webkit-transition-property: background-color, box-shadow;
- -webkit-transition-duration: 0.5s;
- -moz-transition-property: background-color, box-shadow;
- -moz-transition-duration: 0.5s;
- -ms-transition-property: background-color, box-shadow;
- -ms-transition-duration: 0.5s;
- -o-transition-property: background-color, box-shadow;
- -o-transition-duration: 0.5s;
- transition-property: background-color, box-shadow;
- transition-duration: 0.5s;
-}
-
-.memberdecls td.glow, .fieldtable tr.glow {
- background-color: cyan;
- box-shadow: 0 0 15px cyan;
-}
-
-.mdescLeft, .mdescRight,
-.memItemLeft, .memItemRight,
-.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
- background-color: #F9FAFC;
- border: none;
- margin: 4px;
- padding: 1px 0 0 8px;
-}
-
-.mdescLeft, .mdescRight {
- padding: 0px 8px 4px 8px;
- color: #555;
-}
-
-.memSeparator {
- border-bottom: 1px solid #DEE4F0;
- line-height: 1px;
- margin: 0px;
- padding: 0px;
-}
-
-.memItemLeft, .memTemplItemLeft {
- white-space: nowrap;
-}
-
-.memItemRight, .memTemplItemRight {
- width: 100%;
-}
-
-.memTemplParams {
- color: #4665A2;
- white-space: nowrap;
- font-size: 80%;
-}
-
-/* @end */
-
-/* @group Member Details */
-
-/* Styles for detailed member documentation */
-
-.memtitle {
- padding: 8px;
- border-top: 1px solid #A8B8D9;
- border-left: 1px solid #A8B8D9;
- border-right: 1px solid #A8B8D9;
- border-top-right-radius: 4px;
- border-top-left-radius: 4px;
- margin-bottom: -1px;
- background-image: url('nav_f.png');
- background-repeat: repeat-x;
- background-color: #E2E8F2;
- line-height: 1.25;
- font-weight: 300;
- float:left;
-}
-
-.permalink
-{
- font-size: 65%;
- display: inline-block;
- vertical-align: middle;
-}
-
-.memtemplate {
- font-size: 80%;
- color: #4665A2;
- font-weight: normal;
- margin-left: 9px;
-}
-
-.memnav {
- background-color: #EBEFF6;
- border: 1px solid #A3B4D7;
- text-align: center;
- margin: 2px;
- margin-right: 15px;
- padding: 2px;
-}
-
-.mempage {
- width: 100%;
-}
-
-.memitem {
- padding: 0;
- margin-bottom: 10px;
- margin-right: 5px;
- -webkit-transition: box-shadow 0.5s linear;
- -moz-transition: box-shadow 0.5s linear;
- -ms-transition: box-shadow 0.5s linear;
- -o-transition: box-shadow 0.5s linear;
- transition: box-shadow 0.5s linear;
- display: table !important;
- width: 100%;
-}
-
-.memitem.glow {
- box-shadow: 0 0 15px cyan;
-}
-
-.memname {
- font-weight: 400;
- margin-left: 6px;
-}
-
-.memname td {
- vertical-align: bottom;
-}
-
-.memproto, dl.reflist dt {
- border-top: 1px solid #A8B8D9;
- border-left: 1px solid #A8B8D9;
- border-right: 1px solid #A8B8D9;
- padding: 6px 0px 6px 0px;
- color: #253555;
- font-weight: bold;
- text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
- background-color: #DFE5F1;
- /* opera specific markup */
- box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- border-top-right-radius: 4px;
- /* firefox specific markup */
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
- -moz-border-radius-topright: 4px;
- /* webkit specific markup */
- -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- -webkit-border-top-right-radius: 4px;
-
-}
-
-.overload {
- font-family: "courier new",courier,monospace;
- font-size: 65%;
-}
-
-.memdoc, dl.reflist dd {
- border-bottom: 1px solid #A8B8D9;
- border-left: 1px solid #A8B8D9;
- border-right: 1px solid #A8B8D9;
- padding: 6px 10px 2px 10px;
- background-color: #FBFCFD;
- border-top-width: 0;
- background-image:url('nav_g.png');
- background-repeat:repeat-x;
- background-color: #FFFFFF;
- /* opera specific markup */
- border-bottom-left-radius: 4px;
- border-bottom-right-radius: 4px;
- box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
- /* firefox specific markup */
- -moz-border-radius-bottomleft: 4px;
- -moz-border-radius-bottomright: 4px;
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
- /* webkit specific markup */
- -webkit-border-bottom-left-radius: 4px;
- -webkit-border-bottom-right-radius: 4px;
- -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-}
-
-dl.reflist dt {
- padding: 5px;
-}
-
-dl.reflist dd {
- margin: 0px 0px 10px 0px;
- padding: 5px;
-}
-
-.paramkey {
- text-align: right;
-}
-
-.paramtype {
- white-space: nowrap;
-}
-
-.paramname {
- color: #602020;
- white-space: nowrap;
-}
-.paramname em {
- font-style: normal;
-}
-.paramname code {
- line-height: 14px;
-}
-
-.params, .retval, .exception, .tparams {
- margin-left: 0px;
- padding-left: 0px;
-}
-
-.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
- font-weight: bold;
- vertical-align: top;
-}
-
-.params .paramtype, .tparams .paramtype {
- font-style: italic;
- vertical-align: top;
-}
-
-.params .paramdir, .tparams .paramdir {
- font-family: "courier new",courier,monospace;
- vertical-align: top;
-}
-
-table.mlabels {
- border-spacing: 0px;
-}
-
-td.mlabels-left {
- width: 100%;
- padding: 0px;
-}
-
-td.mlabels-right {
- vertical-align: bottom;
- padding: 0px;
- white-space: nowrap;
-}
-
-span.mlabels {
- margin-left: 8px;
-}
-
-span.mlabel {
- background-color: #728DC1;
- border-top:1px solid #5373B4;
- border-left:1px solid #5373B4;
- border-right:1px solid #C4CFE5;
- border-bottom:1px solid #C4CFE5;
- text-shadow: none;
- color: white;
- margin-right: 4px;
- padding: 2px 3px;
- border-radius: 3px;
- font-size: 7pt;
- white-space: nowrap;
- vertical-align: middle;
-}
-
-
-
-/* @end */
-
-/* these are for tree view inside a (index) page */
-
-div.directory {
- margin: 10px 0px;
- border-top: 1px solid #9CAFD4;
- border-bottom: 1px solid #9CAFD4;
- width: 100%;
-}
-
-.directory table {
- border-collapse:collapse;
-}
-
-.directory td {
- margin: 0px;
- padding: 0px;
- vertical-align: top;
-}
-
-.directory td.entry {
- white-space: nowrap;
- padding-right: 6px;
- padding-top: 3px;
-}
-
-.directory td.entry a {
- outline:none;
-}
-
-.directory td.entry a img {
- border: none;
-}
-
-.directory td.desc {
- width: 100%;
- padding-left: 6px;
- padding-right: 6px;
- padding-top: 3px;
- border-left: 1px solid rgba(0,0,0,0.05);
-}
-
-.directory tr.even {
- padding-left: 6px;
- background-color: #F7F8FB;
-}
-
-.directory img {
- vertical-align: -30%;
-}
-
-.directory .levels {
- white-space: nowrap;
- width: 100%;
- text-align: right;
- font-size: 9pt;
-}
-
-.directory .levels span {
- cursor: pointer;
- padding-left: 2px;
- padding-right: 2px;
- color: #3D578C;
-}
-
-.arrow {
- color: #9CAFD4;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- cursor: pointer;
- font-size: 80%;
- display: inline-block;
- width: 16px;
- height: 22px;
-}
-
-.icon {
- font-family: Arial, Helvetica;
- font-weight: bold;
- font-size: 12px;
- height: 14px;
- width: 16px;
- display: inline-block;
- background-color: #728DC1;
- color: white;
- text-align: center;
- border-radius: 4px;
- margin-left: 2px;
- margin-right: 2px;
-}
-
-.icona {
- width: 24px;
- height: 22px;
- display: inline-block;
-}
-
-.iconfopen {
- width: 24px;
- height: 18px;
- margin-bottom: 4px;
- background-image:url('folderopen.png');
- background-position: 0px -4px;
- background-repeat: repeat-y;
- vertical-align:top;
- display: inline-block;
-}
-
-.iconfclosed {
- width: 24px;
- height: 18px;
- margin-bottom: 4px;
- background-image:url('folderclosed.png');
- background-position: 0px -4px;
- background-repeat: repeat-y;
- vertical-align:top;
- display: inline-block;
-}
-
-.icondoc {
- width: 24px;
- height: 18px;
- margin-bottom: 4px;
- background-image:url('doc.png');
- background-position: 0px -4px;
- background-repeat: repeat-y;
- vertical-align:top;
- display: inline-block;
-}
-
-table.directory {
- font: 400 14px Roboto,sans-serif;
-}
-
-/* @end */
-
-div.dynheader {
- margin-top: 8px;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-
-address {
- font-style: normal;
- color: #2A3D61;
-}
-
-table.doxtable caption {
- caption-side: top;
-}
-
-table.doxtable {
- border-collapse:collapse;
- margin-top: 4px;
- margin-bottom: 4px;
-}
-
-table.doxtable td, table.doxtable th {
- border: 1px solid #2D4068;
- padding: 3px 7px 2px;
-}
-
-table.doxtable th {
- background-color: #374F7F;
- color: #FFFFFF;
- font-size: 110%;
- padding-bottom: 4px;
- padding-top: 5px;
-}
-
-table.fieldtable {
- /*width: 100%;*/
- margin-bottom: 10px;
- border: 1px solid #A8B8D9;
- border-spacing: 0px;
- -moz-border-radius: 4px;
- -webkit-border-radius: 4px;
- border-radius: 4px;
- -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
- -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
- box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
-}
-
-.fieldtable td, .fieldtable th {
- padding: 3px 7px 2px;
-}
-
-.fieldtable td.fieldtype, .fieldtable td.fieldname {
- white-space: nowrap;
- border-right: 1px solid #A8B8D9;
- border-bottom: 1px solid #A8B8D9;
- vertical-align: top;
-}
-
-.fieldtable td.fieldname {
- padding-top: 3px;
-}
-
-.fieldtable td.fielddoc {
- border-bottom: 1px solid #A8B8D9;
- /*width: 100%;*/
-}
-
-.fieldtable td.fielddoc p:first-child {
- margin-top: 0px;
-}
-
-.fieldtable td.fielddoc p:last-child {
- margin-bottom: 2px;
-}
-
-.fieldtable tr:last-child td {
- border-bottom: none;
-}
-
-.fieldtable th {
- background-image:url('nav_f.png');
- background-repeat:repeat-x;
- background-color: #E2E8F2;
- font-size: 90%;
- color: #253555;
- padding-bottom: 4px;
- padding-top: 5px;
- text-align:left;
- font-weight: 400;
- -moz-border-radius-topleft: 4px;
- -moz-border-radius-topright: 4px;
- -webkit-border-top-left-radius: 4px;
- -webkit-border-top-right-radius: 4px;
- border-top-left-radius: 4px;
- border-top-right-radius: 4px;
- border-bottom: 1px solid #A8B8D9;
-}
-
-
-.tabsearch {
- top: 0px;
- left: 10px;
- height: 36px;
- background-image: url('tab_b.png');
- z-index: 101;
- overflow: hidden;
- font-size: 13px;
-}
-
-.navpath ul
-{
- font-size: 11px;
- background-image:url('tab_b.png');
- background-repeat:repeat-x;
- background-position: 0 -5px;
- height:30px;
- line-height:30px;
- color:#8AA0CC;
- border:solid 1px #C2CDE4;
- overflow:hidden;
- margin:0px;
- padding:0px;
-}
-
-.navpath li
-{
- list-style-type:none;
- float:left;
- padding-left:10px;
- padding-right:15px;
- background-image:url('bc_s.png');
- background-repeat:no-repeat;
- background-position:right;
- color:#364D7C;
-}
-
-.navpath li.navelem a
-{
- height:32px;
- display:block;
- text-decoration: none;
- outline: none;
- color: #283A5D;
- font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
- text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
- text-decoration: none;
-}
-
-.navpath li.navelem a:hover
-{
- color:#6884BD;
-}
-
-.navpath li.footer
-{
- list-style-type:none;
- float:right;
- padding-left:10px;
- padding-right:15px;
- background-image:none;
- background-repeat:no-repeat;
- background-position:right;
- color:#364D7C;
- font-size: 8pt;
-}
-
-
-div.summary
-{
- float: right;
- font-size: 8pt;
- padding-right: 5px;
- width: 50%;
- text-align: right;
-}
-
-div.summary a
-{
- white-space: nowrap;
-}
-
-table.classindex
-{
- margin: 10px;
- white-space: nowrap;
- margin-left: 3%;
- margin-right: 3%;
- width: 94%;
- border: 0;
- border-spacing: 0;
- padding: 0;
-}
-
-div.ingroups
-{
- font-size: 8pt;
- width: 50%;
- text-align: left;
-}
-
-div.ingroups a
-{
- white-space: nowrap;
-}
-
-div.header
-{
- background-image:url('nav_h.png');
- background-repeat:repeat-x;
- background-color: #F9FAFC;
- margin: 0px;
- border-bottom: 1px solid #C4CFE5;
-}
-
-div.headertitle
-{
- padding: 5px 5px 5px 10px;
-}
-
-.PageDocRTL-title div.headertitle {
- text-align: right;
- direction: rtl;
-}
-
-dl {
- padding: 0 0 0 0;
-}
-
-/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */
-dl.section {
- margin-left: 0px;
- padding-left: 0px;
-}
-
-dl.section.DocNodeRTL {
- margin-right: 0px;
- padding-right: 0px;
-}
-
-dl.note {
- margin-left: -7px;
- padding-left: 3px;
- border-left: 4px solid;
- border-color: #D0C000;
-}
-
-dl.note.DocNodeRTL {
- margin-left: 0;
- padding-left: 0;
- border-left: 0;
- margin-right: -7px;
- padding-right: 3px;
- border-right: 4px solid;
- border-color: #D0C000;
-}
-
-dl.warning, dl.attention {
- margin-left: -7px;
- padding-left: 3px;
- border-left: 4px solid;
- border-color: #FF0000;
-}
-
-dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {
- margin-left: 0;
- padding-left: 0;
- border-left: 0;
- margin-right: -7px;
- padding-right: 3px;
- border-right: 4px solid;
- border-color: #FF0000;
-}
-
-dl.pre, dl.post, dl.invariant {
- margin-left: -7px;
- padding-left: 3px;
- border-left: 4px solid;
- border-color: #00D000;
-}
-
-dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {
- margin-left: 0;
- padding-left: 0;
- border-left: 0;
- margin-right: -7px;
- padding-right: 3px;
- border-right: 4px solid;
- border-color: #00D000;
-}
-
-dl.deprecated {
- margin-left: -7px;
- padding-left: 3px;
- border-left: 4px solid;
- border-color: #505050;
-}
-
-dl.deprecated.DocNodeRTL {
- margin-left: 0;
- padding-left: 0;
- border-left: 0;
- margin-right: -7px;
- padding-right: 3px;
- border-right: 4px solid;
- border-color: #505050;
-}
-
-dl.todo {
- margin-left: -7px;
- padding-left: 3px;
- border-left: 4px solid;
- border-color: #00C0E0;
-}
-
-dl.todo.DocNodeRTL {
- margin-left: 0;
- padding-left: 0;
- border-left: 0;
- margin-right: -7px;
- padding-right: 3px;
- border-right: 4px solid;
- border-color: #00C0E0;
-}
-
-dl.test {
- margin-left: -7px;
- padding-left: 3px;
- border-left: 4px solid;
- border-color: #3030E0;
-}
-
-dl.test.DocNodeRTL {
- margin-left: 0;
- padding-left: 0;
- border-left: 0;
- margin-right: -7px;
- padding-right: 3px;
- border-right: 4px solid;
- border-color: #3030E0;
-}
-
-dl.bug {
- margin-left: -7px;
- padding-left: 3px;
- border-left: 4px solid;
- border-color: #C08050;
-}
-
-dl.bug.DocNodeRTL {
- margin-left: 0;
- padding-left: 0;
- border-left: 0;
- margin-right: -7px;
- padding-right: 3px;
- border-right: 4px solid;
- border-color: #C08050;
-}
-
-dl.section dd {
- margin-bottom: 6px;
-}
-
-
-#projectlogo
-{
- text-align: center;
- vertical-align: bottom;
- border-collapse: separate;
-}
-
-#projectlogo img
-{
- border: 0px none;
-}
-
-#projectalign
-{
- vertical-align: middle;
-}
-
-#projectname
-{
- font: 300% Tahoma, Arial,sans-serif;
- margin: 0px;
- padding: 2px 0px;
-}
-
-#projectbrief
-{
- font: 120% Tahoma, Arial,sans-serif;
- margin: 0px;
- padding: 0px;
-}
-
-#projectnumber
-{
- font: 50% Tahoma, Arial,sans-serif;
- margin: 0px;
- padding: 0px;
-}
-
-#titlearea
-{
- padding: 0px;
- margin: 0px;
- width: 100%;
- border-bottom: 1px solid #5373B4;
-}
-
-.image
-{
- text-align: center;
-}
-
-.dotgraph
-{
- text-align: center;
-}
-
-.mscgraph
-{
- text-align: center;
-}
-
-.plantumlgraph
-{
- text-align: center;
-}
-
-.diagraph
-{
- text-align: center;
-}
-
-.caption
-{
- font-weight: bold;
-}
-
-div.zoom
-{
- border: 1px solid #90A5CE;
-}
-
-dl.citelist {
- margin-bottom:50px;
-}
-
-dl.citelist dt {
- color:#334975;
- float:left;
- font-weight:bold;
- margin-right:10px;
- padding:5px;
-}
-
-dl.citelist dd {
- margin:2px 0;
- padding:5px 0;
-}
-
-div.toc {
- padding: 14px 25px;
- background-color: #F4F6FA;
- border: 1px solid #D8DFEE;
- border-radius: 7px 7px 7px 7px;
- float: right;
- height: auto;
- margin: 0 8px 10px 10px;
- width: 200px;
-}
-
-.PageDocRTL-title div.toc {
- float: left !important;
- text-align: right;
-}
-
-div.toc li {
- background: url("bdwn.png") no-repeat scroll 0 5px transparent;
- font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
- margin-top: 5px;
- padding-left: 10px;
- padding-top: 2px;
-}
-
-.PageDocRTL-title div.toc li {
- background-position-x: right !important;
- padding-left: 0 !important;
- padding-right: 10px;
-}
-
-div.toc h3 {
- font: bold 12px/1.2 Arial,FreeSans,sans-serif;
- color: #4665A2;
- border-bottom: 0 none;
- margin: 0;
-}
-
-div.toc ul {
- list-style: none outside none;
- border: medium none;
- padding: 0px;
-}
-
-div.toc li.level1 {
- margin-left: 0px;
-}
-
-div.toc li.level2 {
- margin-left: 15px;
-}
-
-div.toc li.level3 {
- margin-left: 30px;
-}
-
-div.toc li.level4 {
- margin-left: 45px;
-}
-
-.PageDocRTL-title div.toc li.level1 {
- margin-left: 0 !important;
- margin-right: 0;
-}
-
-.PageDocRTL-title div.toc li.level2 {
- margin-left: 0 !important;
- margin-right: 15px;
-}
-
-.PageDocRTL-title div.toc li.level3 {
- margin-left: 0 !important;
- margin-right: 30px;
-}
-
-.PageDocRTL-title div.toc li.level4 {
- margin-left: 0 !important;
- margin-right: 45px;
-}
-
-.inherit_header {
- font-weight: bold;
- color: gray;
- cursor: pointer;
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-
-.inherit_header td {
- padding: 6px 0px 2px 5px;
-}
-
-.inherit {
- display: none;
-}
-
-tr.heading h2 {
- margin-top: 12px;
- margin-bottom: 4px;
-}
-
-/* tooltip related style info */
-
-.ttc {
- position: absolute;
- display: none;
-}
-
-#powerTip {
- cursor: default;
- white-space: nowrap;
- background-color: white;
- border: 1px solid gray;
- border-radius: 4px 4px 4px 4px;
- box-shadow: 1px 1px 7px gray;
- display: none;
- font-size: smaller;
- max-width: 80%;
- opacity: 0.9;
- padding: 1ex 1em 1em;
- position: absolute;
- z-index: 2147483647;
-}
-
-#powerTip div.ttdoc {
- color: grey;
- font-style: italic;
-}
-
-#powerTip div.ttname a {
- font-weight: bold;
-}
-
-#powerTip div.ttname {
- font-weight: bold;
-}
-
-#powerTip div.ttdeci {
- color: #006318;
-}
-
-#powerTip div {
- margin: 0px;
- padding: 0px;
- font: 12px/16px Roboto,sans-serif;
-}
-
-#powerTip:before, #powerTip:after {
- content: "";
- position: absolute;
- margin: 0px;
-}
-
-#powerTip.n:after, #powerTip.n:before,
-#powerTip.s:after, #powerTip.s:before,
-#powerTip.w:after, #powerTip.w:before,
-#powerTip.e:after, #powerTip.e:before,
-#powerTip.ne:after, #powerTip.ne:before,
-#powerTip.se:after, #powerTip.se:before,
-#powerTip.nw:after, #powerTip.nw:before,
-#powerTip.sw:after, #powerTip.sw:before {
- border: solid transparent;
- content: " ";
- height: 0;
- width: 0;
- position: absolute;
-}
-
-#powerTip.n:after, #powerTip.s:after,
-#powerTip.w:after, #powerTip.e:after,
-#powerTip.nw:after, #powerTip.ne:after,
-#powerTip.sw:after, #powerTip.se:after {
- border-color: rgba(255, 255, 255, 0);
-}
-
-#powerTip.n:before, #powerTip.s:before,
-#powerTip.w:before, #powerTip.e:before,
-#powerTip.nw:before, #powerTip.ne:before,
-#powerTip.sw:before, #powerTip.se:before {
- border-color: rgba(128, 128, 128, 0);
-}
-
-#powerTip.n:after, #powerTip.n:before,
-#powerTip.ne:after, #powerTip.ne:before,
-#powerTip.nw:after, #powerTip.nw:before {
- top: 100%;
-}
-
-#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
- border-top-color: #FFFFFF;
- border-width: 10px;
- margin: 0px -10px;
-}
-#powerTip.n:before {
- border-top-color: #808080;
- border-width: 11px;
- margin: 0px -11px;
-}
-#powerTip.n:after, #powerTip.n:before {
- left: 50%;
-}
-
-#powerTip.nw:after, #powerTip.nw:before {
- right: 14px;
-}
-
-#powerTip.ne:after, #powerTip.ne:before {
- left: 14px;
-}
-
-#powerTip.s:after, #powerTip.s:before,
-#powerTip.se:after, #powerTip.se:before,
-#powerTip.sw:after, #powerTip.sw:before {
- bottom: 100%;
-}
-
-#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
- border-bottom-color: #FFFFFF;
- border-width: 10px;
- margin: 0px -10px;
-}
-
-#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
- border-bottom-color: #808080;
- border-width: 11px;
- margin: 0px -11px;
-}
-
-#powerTip.s:after, #powerTip.s:before {
- left: 50%;
-}
-
-#powerTip.sw:after, #powerTip.sw:before {
- right: 14px;
-}
-
-#powerTip.se:after, #powerTip.se:before {
- left: 14px;
-}
-
-#powerTip.e:after, #powerTip.e:before {
- left: 100%;
-}
-#powerTip.e:after {
- border-left-color: #FFFFFF;
- border-width: 10px;
- top: 50%;
- margin-top: -10px;
-}
-#powerTip.e:before {
- border-left-color: #808080;
- border-width: 11px;
- top: 50%;
- margin-top: -11px;
-}
-
-#powerTip.w:after, #powerTip.w:before {
- right: 100%;
-}
-#powerTip.w:after {
- border-right-color: #FFFFFF;
- border-width: 10px;
- top: 50%;
- margin-top: -10px;
-}
-#powerTip.w:before {
- border-right-color: #808080;
- border-width: 11px;
- top: 50%;
- margin-top: -11px;
-}
-
-@media print
-{
- #top { display: none; }
- #side-nav { display: none; }
- #nav-path { display: none; }
- body { overflow:visible; }
- h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
- .summary { display: none; }
- .memitem { page-break-inside: avoid; }
- #doc-content
- {
- margin-left:0 !important;
- height:auto !important;
- width:auto !important;
- overflow:inherit;
- display:inline;
- }
-}
-
-/* @group Markdown */
-
-table.markdownTable {
- border-collapse:collapse;
- margin-top: 4px;
- margin-bottom: 4px;
-}
-
-table.markdownTable td, table.markdownTable th {
- border: 1px solid #2D4068;
- padding: 3px 7px 2px;
-}
-
-table.markdownTable tr {
-}
-
-th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
- background-color: #374F7F;
- color: #FFFFFF;
- font-size: 110%;
- padding-bottom: 4px;
- padding-top: 5px;
-}
-
-th.markdownTableHeadLeft, td.markdownTableBodyLeft {
- text-align: left
-}
-
-th.markdownTableHeadRight, td.markdownTableBodyRight {
- text-align: right
-}
-
-th.markdownTableHeadCenter, td.markdownTableBodyCenter {
- text-align: center
-}
-
-.DocNodeRTL {
- text-align: right;
- direction: rtl;
-}
-
-.DocNodeLTR {
- text-align: left;
- direction: ltr;
-}
-
-table.DocNodeRTL {
- width: auto;
- margin-right: 0;
- margin-left: auto;
-}
-
-table.DocNodeLTR {
- width: auto;
- margin-right: auto;
- margin-left: 0;
-}
-
-tt, code, kbd, samp
-{
- display: inline-block;
- direction:ltr;
-}
-/* @end */
-
-u {
- text-decoration: underline;
-}
-
diff --git a/docs/html/doxygen.png b/docs/html/doxygen.png
deleted file mode 100755
index 3ff17d8..0000000
Binary files a/docs/html/doxygen.png and /dev/null differ
diff --git a/docs/html/dynsections.js b/docs/html/dynsections.js
deleted file mode 100755
index 88f2c27..0000000
--- a/docs/html/dynsections.js
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- @licstart The following is the entire license notice for the JavaScript code in this file.
-
- The MIT License (MIT)
-
- Copyright (C) 1997-2020 by Dimitri van Heesch
-
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software
- and associated documentation files (the "Software"), to deal in the Software without restriction,
- including without limitation the rights to use, copy, modify, merge, publish, distribute,
- sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all copies or
- substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
- @licend The above is the entire license notice for the JavaScript code in this file
- */
-function toggleVisibility(linkObj)
-{
- var base = $(linkObj).attr('id');
- var summary = $('#'+base+'-summary');
- var content = $('#'+base+'-content');
- var trigger = $('#'+base+'-trigger');
- var src=$(trigger).attr('src');
- if (content.is(':visible')===true) {
- content.hide();
- summary.show();
- $(linkObj).addClass('closed').removeClass('opened');
- $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
- } else {
- content.show();
- summary.hide();
- $(linkObj).removeClass('closed').addClass('opened');
- $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
- }
- return false;
-}
-
-function updateStripes()
-{
- $('table.directory tr').
- removeClass('even').filter(':visible:even').addClass('even');
-}
-
-function toggleLevel(level)
-{
- $('table.directory tr').each(function() {
- var l = this.id.split('_').length-1;
- var i = $('#img'+this.id.substring(3));
- var a = $('#arr'+this.id.substring(3));
- if (l
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: File List
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Here is a list of all documented files with brief descriptions:
-
[detail level 1 2 3 4 ]
- ▼ src
- ▼ backend
- ▼ lib
- __init__.py
- api_hooks.py
- config.py
- library.py
- pyShelf.py
- storage.py
- ▼ tests
- __init__.py
- config_test.py
- library_test.py
- __init__.py
- pyShelf_MakeCollections.py
- pyShelf_ScanLibrary.py
-
-
-
-
-
-
-
diff --git a/docs/html/folderclosed.png b/docs/html/folderclosed.png
deleted file mode 100755
index bb8ab35..0000000
Binary files a/docs/html/folderclosed.png and /dev/null differ
diff --git a/docs/html/folderopen.png b/docs/html/folderopen.png
deleted file mode 100755
index d6c7f67..0000000
Binary files a/docs/html/folderopen.png and /dev/null differ
diff --git a/docs/html/functions.html b/docs/html/functions.html
deleted file mode 100755
index 0e454d9..0000000
--- a/docs/html/functions.html
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: Class Members
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Here is a list of all documented class members with links to the class documentation for each member:
-
-
-
-
-
diff --git a/docs/html/functions_func.html b/docs/html/functions_func.html
deleted file mode 100755
index ea4cd9f..0000000
--- a/docs/html/functions_func.html
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: Class Members - Functions
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/html/hierarchy.html b/docs/html/hierarchy.html
deleted file mode 100755
index e9d776b..0000000
--- a/docs/html/hierarchy.html
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: Class Hierarchy
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
This inheritance list is sorted roughly, but not completely, alphabetically:
-
-
-
-
-
diff --git a/docs/html/index.hhc b/docs/html/index.hhc
deleted file mode 100755
index 6712a06..0000000
--- a/docs/html/index.hhc
+++ /dev/null
@@ -1,251 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/html/index.hhk b/docs/html/index.hhk
deleted file mode 100755
index e54d40a..0000000
--- a/docs/html/index.hhk
+++ /dev/null
@@ -1,798 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/html/index.hhp b/docs/html/index.hhp
deleted file mode 100755
index 533b45e..0000000
--- a/docs/html/index.hhp
+++ /dev/null
@@ -1,64 +0,0 @@
-[OPTIONS]
-Compiled file=pyShelf_docs
-Compatibility=1.1
-Full-text search=Yes
-Contents file=index.hhc
-Default Window=main
-Default topic=index.html
-Index file=index.hhk
-Language=0x409 English (United States)
-Binary TOC=YES
-Title=pyShelf Open Source Ebook Server
-
-[WINDOWS]
-main="pyShelf Open Source Ebook Server","index.hhc","index.hhk","index.html","index.html",,,,,0x23520,,0x70387e,,,,,,,,0
-
-[FILES]
-d7/d88/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html
-de/d11/classsrc_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html
-d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.html
-d3/d4a/classsrc_1_1backend_1_1lib_1_1config_1_1Config-members.html
-d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.html
-d6/d20/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html
-db/d7d/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html
-d7/d69/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay-members.html
-da/d3c/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html
-d1/dca/classsrc_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html
-d7/d40/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage.html
-db/d9a/classsrc_1_1backend_1_1lib_1_1storage_1_1Storage-members.html
-df/d83/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html
-d5/dee/classsrc_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html
-db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html
-dc/d3e/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html
-d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html
-d5/ddf/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html
-d8/d3d/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html
-d3/d95/classsrc_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html
-dir_3f615ade772d23cefe5e20dcb18424a2.html
-dir_1c7294442ce83d360610449d04c9d7fc.html
-dir_68267d1309a1af8e8297ef4c3efbcdba.html
-dir_9020577e2da81c4cf5a5554c26431f94.html
-index.html
-annotated.html
-classes.html
-hierarchy.html
-functions.html
-functions_func.html
-files.html
-tab_a.png
-tab_b.png
-tab_h.png
-tab_s.png
-nav_h.png
-nav_f.png
-bc_s.png
-doxygen.png
-closed.png
-open.png
-bdwn.png
-sync_on.png
-sync_off.png
-d8/dfe/classsrc_1_1backend_1_1lib_1_1config_1_1Config.png
-d5/da5/classsrc_1_1backend_1_1lib_1_1library_1_1Catalogue.png
-db/dda/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png
-d3/d29/classsrc_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png
diff --git a/docs/html/index.html b/docs/html/index.html
deleted file mode 100755
index 7e70665..0000000
--- a/docs/html/index.html
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
-
-
-
-pyShelf Open Source Ebook Server: Main Page
-
-
-
-
-
-
-
-
-
-
-
-
- pyShelf Open Source Ebook Server
- 0.6.0
-
- FOSS E-Book Server, https://pyshelf.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/html/jquery.js b/docs/html/jquery.js
deleted file mode 100755
index 103c32d..0000000
--- a/docs/html/jquery.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
-!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML=" ",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML=" ";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""," "],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/