diff --git a/.gitignore b/.gitignore index 52ee07a..b255847 100755 --- a/.gitignore +++ b/.gitignore @@ -4,13 +4,14 @@ books/* *.pyc app/content.opf .vscode -app/data/* fontend/db.sqlite3 GPATH GRTAGS GTAGS +data/shelf.json .#* frontend/interface/migrations/* +src/backend/data/*.json # Standard Python gitignore below # Created by https://www.gitignore.io/api/python # Edit at https://www.gitignore.io/?templates=python @@ -122,3 +123,4 @@ dmypy.json .pyre/ # End of https://www.gitignore.io/api/python +0 diff --git a/README.md b/README.md index d22f8cf..1aef713 100644 --- a/README.md +++ b/README.md @@ -1,64 +1,68 @@ -# pyShelf 0.2.1 -## Patch Notes. -* fixed missing src/interface/models.py. thanks to u/thelastpenguin212 -* Removed un necessary data files from repo +# pyShelf 0.3.0 -

A simple terminal based ebook server

+

Terminal based ebook server. Open source & Lightweight.

+ +Having used Calibre for hosting my eBook collection in the past, I found myself frustrated having to install X on my server, or manage my library externally, Thus I have decided to spin up my own. + +## Current Features +* Recursive Scanning +* Fast database access +* Django based frontend +* Basic seaching via a SearchVector of author, title, & file_name fields. + +## Currently Supported Formats +* epub + +## Installation Example +* In addition to the above steps you must now also make the requisite changes in config.json to reflect the connection to your postgresql server Server Frontend -Frustrated with Calibre being my only option for hosting my eBook collection, I have decided to spin up my own. +## 0.3.0 Patch Notes. +### "And now we search." -Calibre is a great organizational tool for your books, however not having a terminal based option for running and maintaining -a server is cumbersome when running on a headless server. -Calibre does have a console based server solution, However there is currently no way to create, and manage your library in a headless enviroment. - -Thus I am creating pyShelf and I hope to be able to provide all the functionality required to organize and host all your ebooks. - -I am open to and hoping for community help in the design and execution of this program. +Just about all the changes in this release were in some way related to implementing the search features. +There is one new requirement +* Requirement: **PostgreSQL** +*This is what I believe to be the last infrastructure requirement, users with larger libraries should notice an increase in access speed.* +* Feature: **Searching** +*The search feature is now implemented. In its current incarnation you will by default search the author, title, & file_name fields. More defined search options will be available in future releases. Searches are paginated @ 20 results per page.* +* Discord [https://discord.gg/H9TbNJS](https://discord.gg/H9TbNJS) +* IRC find us on freenode.net @ #pyshelf ## Development -pyShelf uses [`pre-commit`](https://pre-commit.com/) to automate some tasks. -Before developing, run `pre-commit install`. -See the [documentation](https://pre-commit.com/) for more information. +* [`pre-commit`](https://pre-commit.com/) +_Before developing, run `pre-commit install` See the [documentation](https://pre-commit.com/) for more information._ -pyShelf uses ['Doxygen'](http://www.doxygen.nl/) for source code documentation. -Any changes to source should be documented and have run doxygen doxygen.conf prior to commiting. +* ['Doxygen'](http://www.doxygen.nl/) +_Any changes to source should be documented and have run doxygen doxygen.conf prior to commiting._ -pyShelf follows ['sem-ver'](https://semver.org) standards. Before advancing version numbers be sure to set PROJECT_NUMBER in doxygen.conf accordingly. +* ['sem-ver'](https://semver.org) +_Before advancing version numbers be sure to set PROJECT_NUMBER in doxygen.conf accordingly._ ## Configuration -All pyShelf configuration is done in config.py. -### Nginx configuration -I have included a default nginx config file pyshelf_nginx.conf. This file should be sufficient to get you up and running. You are required to change the location alias's to reflect your pyshelf install folder leaving everything after /frontend intact. +### Nginx +Included is a default nginx config file {pyshelf_nginx.conf}. This file should be sufficient to get you up and running. You are required to change the location alias's to reflect your pyshelf install folder leaving everything after /frontend intact. Further resources for nginx setup may be found @ [This nginx, django, & uwsgi, guide](https://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html) -### uwsgi configuration +### uwsgi Inside uwsgi.ini you should make changes to reflect your install directory, and the port you wish uwsgi to listen on. Alternativly you can make the requisite changes to listen on a socket instead. This change would also require a change to the pyshelf_nginx.conf file as well. -### pyShelf configuration -User configuration is contained within config.json in the project root. The only currently required configuration is to set book_path to the location of your books. +### pyShelf +User configuration is contained within config.json in the project root. You must set book_path to the location of your books, and change the database connection details to match your environment. -## Current Features -Currently pyShelf will recursively scan your collection, extract and store some metadata in the sqlite database. It will also provide you with a web based frontend to view and download your books. Note that this is a very early alpha and lacking the ability to sort and search your collection. This feature is coming however. - -Django has been implemented to power the frontend experience, and web based database maintenance. The first steps of which are included in this commit. Also the book database has been switched over to reflect this. A properly configured web server is required for hosting the frontend, configuration of which is outside of the scope of this readme. Running via the Django test server might be possible, albeit not recomended. - -## New in 0.2.0 -* UI - * The UI has moved closer to what I have envisioned for this project, however more features and changes will be coming as needed to both the form and function. -* UX - * Results have now been limited to 20 per page. Currently this is hardcoded in however in the future it will be user definable. - * Previous page & next page buttons have been implemented, and are working. +## Misc +Django has been implemented to power the frontend experience, and web based database maintenance. A properly configured web server is required for hosting the frontend, and a PostgreSQL server for the database, configuration of these servers is outside of the scope of this readme. +Running via the Django test server might be possible, albeit not recomended. ## In Progress -* UI/UX tweaks, including making the book display responsive. and not so ugly. * Searching, & further organizational tools. +* Docker image for those who need it. * Improved cover image storage, and acquisition. ## Future Goals @@ -66,6 +70,4 @@ Django has been implemented to power the frontend experience, and web based data * Terminal Backend for catalogue maintenance * Calculate page count from total characters * (Thanks to @Fireblend for the idea) https://github.com/th3r00t/pyShelf/issues/3 -* Move towards sqlAlchemy and enable user to specify desired storage system - * (Thanks to Sarcism) over on r/opensource for this idea! -* Android app for easy integration with your catalogue +* Reader for easy integration with your catalogue diff --git a/config.json b/config.json index f89c692..77f2b02 100644 --- a/config.json +++ b/config.json @@ -1,7 +1,11 @@ { "TITLE": "pyShelf E-Book Server", - "VERSION": "0.2.0", + "VERSION": "0.3.0", "BOOKPATH": "books/", - "DATABASE": "src/db.sqlite3", + "DB_HOST": "localhost", + "DB_PORT": "5432", + "DATABASE": "pyshelf", + "USER": "pyshelf", + "PASSWORD": "pyshelf", "BOOKSHELF": "data/shelf.json" } diff --git a/data/.track_me b/data/.track_this_folder similarity index 100% rename from data/.track_me rename to data/.track_this_folder diff --git a/docs/html/HTML/D/index.html b/docs/html/HTML/D/index.html old mode 100755 new mode 100644 diff --git a/docs/html/HTML/FILEMAP b/docs/html/HTML/FILEMAP old mode 100755 new mode 100644 diff --git a/docs/html/HTML/GTAGSROOT b/docs/html/HTML/GTAGSROOT old mode 100755 new mode 100644 index 3da86ee..c725022 --- a/docs/html/HTML/GTAGSROOT +++ b/docs/html/HTML/GTAGSROOT @@ -1 +1 @@ -/home/raelon/Projects/pyShelf +/home/raelon/Projects/pyShelf/src/backend diff --git a/docs/html/HTML/I/index.html b/docs/html/HTML/I/index.html old mode 100755 new mode 100644 diff --git a/docs/html/HTML/J/index.html b/docs/html/HTML/J/index.html old mode 100755 new mode 100644 diff --git a/docs/html/HTML/R/index.html b/docs/html/HTML/R/index.html old mode 100755 new mode 100644 diff --git a/docs/html/HTML/S/index.html b/docs/html/HTML/S/index.html old mode 100755 new mode 100644 diff --git a/docs/html/HTML/Y/index.html b/docs/html/HTML/Y/index.html old mode 100755 new mode 100644 diff --git a/docs/html/HTML/defines.html b/docs/html/HTML/defines.html old mode 100755 new mode 100644 diff --git a/docs/html/HTML/defines/index.html b/docs/html/HTML/defines/index.html old mode 100755 new mode 100644 diff --git a/docs/html/HTML/files.html b/docs/html/HTML/files.html old mode 100755 new mode 100644 diff --git a/docs/html/HTML/files/index.html b/docs/html/HTML/files/index.html old mode 100755 new mode 100644 diff --git a/docs/html/HTML/help.html b/docs/html/HTML/help.html old mode 100755 new mode 100644 diff --git a/docs/html/HTML/index.html b/docs/html/HTML/index.html old mode 100755 new mode 100644 index 1fc2c79..c610c6b --- a/docs/html/HTML/index.html +++ b/docs/html/HTML/index.html @@ -1,16 +1,16 @@ -pyShelf Open Source Ebook Server-0.2.0 +pyShelf Open Source Ebook Server-0.3.0 -

pyShelf Open Source Ebook Server-0.2.0

+

pyShelf Open Source Ebook Server-0.3.0

-Last updated Fri Nov 29 22:17:44 EST 2019
+Last updated Sun Dec 15 12:54:07 EST 2019
Powered by GLOBAL-6.6.3.

diff --git a/docs/html/HTML/mains.html b/docs/html/HTML/mains.html old mode 100755 new mode 100644 index 1fc2c79..c610c6b --- a/docs/html/HTML/mains.html +++ b/docs/html/HTML/mains.html @@ -1,16 +1,16 @@ -pyShelf Open Source Ebook Server-0.2.0 +pyShelf Open Source Ebook Server-0.3.0 -

pyShelf Open Source Ebook Server-0.2.0

+

pyShelf Open Source Ebook Server-0.3.0

-Last updated Fri Nov 29 22:17:44 EST 2019
+Last updated Sun Dec 15 12:54:07 EST 2019
Powered by GLOBAL-6.6.3.

diff --git a/docs/html/HTML/rebuild.sh b/docs/html/HTML/rebuild.sh index dbc9d71..a0ce080 100644 --- a/docs/html/HTML/rebuild.sh +++ b/docs/html/HTML/rebuild.sh @@ -5,4 +5,4 @@ # Usage: # % sh rebuild.sh # -cd /home/raelon/Projects/pyShelf && 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.2.0' /home/raelon/Projects/pyShelf/docs/html +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.3.0' /home/raelon/Projects/pyShelf/docs/html diff --git a/docs/html/annotated.html b/docs/html/annotated.html old mode 100755 new mode 100644 index e4f6aac..0cf1c06 --- a/docs/html/annotated.html +++ b/docs/html/annotated.html @@ -19,7 +19,7 @@
pyShelf Open Source Ebook Server -  0.1.0 +  0.3.0
Open source, console based E-book server
@@ -45,30 +45,35 @@ $(function() {
Here are the classes, structs, unions and interfaces with brief descriptions:
-
[detail level 1234]
- - - - - - - - - - - - - - - - - +
[detail level 123456]
 Napp
 Nconfig
 CConfig
 Nlib
 Napi_hooks
 CDuckDuckGo
 Ndisplay
 CFrontend
 Nlibrary
 CCatalogue
 NpyShelf
 CBookDisplay
 CBookServer
 CInitFiles
 CRequestHandler
 Nstorage
 CStorage
+ + + + + + + + + + + + + + + + + + + + + +
 NpyShelf
 Nsrc
 Nbackend
 Nlib
 Napi_hooks
 CDuckDuckGo
 Nconfig
 CConfig
 Nlibrary
 CCatalogue
 NpyShelf
 CBookDisplay
 CInitFiles
 Nstorage
 CStorage
 Ntests
 Nconfig_test
 CTestConfig
 Nlibrary_test
 CTest_Catalogue
 CTest_Config
 CTestCatalogue
diff --git a/docs/html/bc_s.png b/docs/html/bc_s.png old mode 100755 new mode 100644 diff --git a/docs/html/bdwn.png b/docs/html/bdwn.png old mode 100755 new mode 100644 diff --git a/docs/html/classapp_1_1config_1_1Config-members.html b/docs/html/classapp_1_1config_1_1Config-members.html deleted file mode 100755 index 0a78d67..0000000 --- a/docs/html/classapp_1_1config_1_1Config-members.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - -pyShelf Open Source Ebook Server: Member List - - - - - - -
-
- - - - - - -
-
pyShelf Open Source Ebook Server -  0.1.0 -
-
Open source, console based E-book server
-
-
- - - - - - - -
-
-
-
app.config.Config Member List
-
-
- -

This is the complete list of members for app.config.Config, including all inherited members.

- - - - - - - - -
__init__(self) (defined in app.config.Config)app.config.Config
auto_scan (defined in app.config.Config)app.config.Config
book_path (defined in app.config.Config)app.config.Config
book_shelf (defined in app.config.Config)app.config.Config
catalogue_db (defined in app.config.Config)app.config.Config
file_array (defined in app.config.Config)app.config.Config
TITLE (defined in app.config.Config)app.config.Config
- - - - diff --git a/docs/html/classapp_1_1config_1_1Config.html b/docs/html/classapp_1_1config_1_1Config.html deleted file mode 100755 index 044db30..0000000 --- a/docs/html/classapp_1_1config_1_1Config.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -pyShelf Open Source Ebook Server: app.config.Config Class Reference - - - - - - -
-
- - - - - - -
-
pyShelf Open Source Ebook Server -  0.1.0 -
-
Open source, console based E-book server
-
-
- - - - - - - -
-
-
-Public Member Functions | -Public Attributes | -List of all members
-
-
app.config.Config Class Reference
-
-
- - - - -

-Public Member Functions

-def __init__ (self)
 
- - - - - - - - - - - - - -

-Public Attributes

book_path
 
TITLE
 
book_shelf
 
catalogue_db
 
file_array
 
auto_scan
 
-

Detailed Description

-
Main System Configuration

The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/html/classapp_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html b/docs/html/classapp_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html deleted file mode 100755 index be81301..0000000 --- a/docs/html/classapp_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.1.0 -
-
Open source, console based E-book server
-
-
- - - - - - - -
-
-
-
app.lib.api_hooks.DuckDuckGo Member List
-
-
- -

This is the complete list of members for app.lib.api_hooks.DuckDuckGo, including all inherited members.

- - - - -
__init__(self) (defined in app.lib.api_hooks.DuckDuckGo)app.lib.api_hooks.DuckDuckGo
image_result(self, query)app.lib.api_hooks.DuckDuckGo
url (defined in app.lib.api_hooks.DuckDuckGo)app.lib.api_hooks.DuckDuckGo
- - - - diff --git a/docs/html/classapp_1_1lib_1_1display_1_1Frontend-members.html b/docs/html/classapp_1_1lib_1_1display_1_1Frontend-members.html deleted file mode 100755 index dfd3cbc..0000000 --- a/docs/html/classapp_1_1lib_1_1display_1_1Frontend-members.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - -pyShelf Open Source Ebook Server: Member List - - - - - - -
-
- - - - - - -
-
pyShelf Open Source Ebook Server -  0.1.0 -
-
Open source, console based E-book server
-
-
- - - - - - - -
-
-
-
app.lib.display.Frontend Member List
-
-
- -

This is the complete list of members for app.lib.display.Frontend, including all inherited members.

- - - - - - - - - -
__init__(self, dimensions=[0, 0])app.lib.display.Frontend
app_body(self, nav, shelf)app.lib.display.Frontend
app_footer(self)app.lib.display.Frontend
app_Headers(self)app.lib.display.Frontend
compile(self, nav, shelf)app.lib.display.Frontend
dimensions (defined in app.lib.display.Frontend)app.lib.display.Frontend
html_Headers(self)app.lib.display.Frontend
TITLE (defined in app.lib.display.Frontend)app.lib.display.Frontend
- - - - diff --git a/docs/html/classapp_1_1lib_1_1display_1_1Frontend.html b/docs/html/classapp_1_1lib_1_1display_1_1Frontend.html deleted file mode 100755 index e6e3239..0000000 --- a/docs/html/classapp_1_1lib_1_1display_1_1Frontend.html +++ /dev/null @@ -1,257 +0,0 @@ - - - - - - - -pyShelf Open Source Ebook Server: app.lib.display.Frontend Class Reference - - - - - - -
-
- - - - - - -
-
pyShelf Open Source Ebook Server -  0.1.0 -
-
Open source, console based E-book server
-
-
- - - - - - - -
-
-
-Public Member Functions | -Public Attributes | -List of all members
-
-
app.lib.display.Frontend Class Reference
-
-
- - - - - - - - - - - - - - -

-Public Member Functions

def __init__ (self, dimensions=[0, 0])
 
def html_Headers (self)
 
def app_Headers (self)
 
def app_body (self, nav, shelf)
 
def app_footer (self)
 
def compile (self, nav, shelf)
 
- - - - - -

-Public Attributes

dimensions
 
TITLE
 
-

Detailed Description

-
Dynamic frontend display functions

Constructor & Destructor Documentation

- -

◆ __init__()

- -
-
- - - - - - - - - - - - - - - - - - -
def app.lib.display.Frontend.__init__ ( self,
 dimensions = [0, 0] 
)
-
-
:param dimensions: array containing screen size [x, y]
-
-
-
-

Member Function Documentation

- -

◆ app_body()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
def app.lib.display.Frontend.app_body ( self,
 nav,
 shelf 
)
-
-
Main interface body, and navigation
-:param nav: nav[] system navigation list
-:param shelf: shelf[0{path:"",title:"",cover:"",author:""}]
-:returns _body: HTML render of page body
-
-
-
- -

◆ app_footer()

- -
-
- - - - - - - - -
def app.lib.display.Frontend.app_footer ( self)
-
-
Main interface footer; Closes HTML
-:returns _footer: HTML render of page footer
-
-
-
- -

◆ app_Headers()

- -
-
- - - - - - - - -
def app.lib.display.Frontend.app_Headers ( self)
-
-
App specific headers
-:returns _head: HTML render of application specific headers
-
-
-
- -

◆ compile()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
def app.lib.display.Frontend.compile ( self,
 nav,
 shelf 
)
-
-
Compiles user interface
-:returns _ui: Compiled HTML for page layout
-
-
-
- -

◆ html_Headers()

- -
-
- - - - - - - - -
def app.lib.display.Frontend.html_Headers ( self)
-
-
HTML headers
-:returns _head: HTML render of page headers
-
-
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/html/classapp_1_1lib_1_1library_1_1Catalogue-members.html b/docs/html/classapp_1_1lib_1_1library_1_1Catalogue-members.html deleted file mode 100755 index e68e270..0000000 --- a/docs/html/classapp_1_1lib_1_1library_1_1Catalogue-members.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - -pyShelf Open Source Ebook Server: Member List - - - - - - -
-
- - - - - - -
-
pyShelf Open Source Ebook Server -  0.1.0 -
-
Open source, console based E-book server
-
-
- - - - - - - -
-
-
-
app.lib.library.Catalogue Member List
-
-
- -

This is the complete list of members for app.lib.library.Catalogue, including all inherited members.

- - - - - - - - - - - - - - - - - -
__init__(self) (defined in app.lib.library.Catalogue)app.lib.library.Catalogue
books (defined in app.lib.library.Catalogue)app.lib.library.Catalogue
compare_shelf_current(self) (defined in app.lib.library.Catalogue)app.lib.library.Catalogue
cover_regx (defined in app.lib.library.Catalogue)app.lib.library.Catalogue
extract_content(self, book_zip, book) (defined in app.lib.library.Catalogue)app.lib.library.Catalogue
extract_cover_html(self, book_zip, book) (defined in app.lib.library.Catalogue)app.lib.library.Catalogue
extract_cover_image(self, book_zip, book) (defined in app.lib.library.Catalogue)app.lib.library.Catalogue
extract_metadata(self, book)app.lib.library.Catalogue
file_list (defined in app.lib.library.Catalogue)app.lib.library.Catalogue
filter_books(self)app.lib.library.Catalogue
html_regx (defined in app.lib.library.Catalogue)app.lib.library.Catalogue
import_books(self, list=None) (defined in app.lib.library.Catalogue)app.lib.library.Catalogue
opf_regx (defined in app.lib.library.Catalogue)app.lib.library.Catalogue
process_book(self, book)app.lib.library.Catalogue
scan_book(self, book)app.lib.library.Catalogue
scan_folder(self, folder=config.book_path) (defined in app.lib.library.Catalogue)app.lib.library.Catalogue
- - - - diff --git a/docs/html/classapp_1_1lib_1_1library_1_1Catalogue.html b/docs/html/classapp_1_1lib_1_1library_1_1Catalogue.html deleted file mode 100755 index f1886d7..0000000 --- a/docs/html/classapp_1_1lib_1_1library_1_1Catalogue.html +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - -pyShelf Open Source Ebook Server: app.lib.library.Catalogue Class Reference - - - - - - -
-
- - - - - - -
-
pyShelf Open Source Ebook Server -  0.1.0 -
-
Open source, console based E-book server
-
-
- - - - - - - -
-
-
-Public Member Functions | -Public Attributes | -List of all members
-
-
app.lib.library.Catalogue Class Reference
-
-
- - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

-def __init__ (self)
 
-def scan_folder (self, folder=config.book_path)
 
def scan_book (self, book)
 
def filter_books (self)
 
def process_book (self, book)
 
def extract_metadata (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)
 
- - - - - - - - - - - -

-Public Attributes

file_list
 
opf_regx
 
cover_regx
 
html_regx
 
books
 
-

Detailed Description

-
Decodes and stores book information
Step One: filter_books

Member Function Documentation

- -

◆ extract_metadata()

- -
-
- - - - - - - - - - - - - - - - - - -
def app.lib.library.Catalogue.extract_metadata ( 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 app.lib.library.Catalogue.filter_books ( self)
-
-
    Scan book folder recursively for epub files
-    filter_books(0) -> Catalogue.books
-    filter_books(1) -> self.books[]
-    :param ret: 0 -> create class property -> dump json
-    :param ret: 1 -> create & return class property
-
-
-
- -

◆ process_book()

- -
-
- - - - - - - - - - - - - - - - - - -
def app.lib.library.Catalogue.process_book ( self,
 book 
)
-
-
Return dictionary of epub file contents
-
-
- -

◆ scan_book()

- -
-
- - - - - - - - - - - - - - - - - - -
def app.lib.library.Catalogue.scan_book ( self,
 book 
)
-
-
REMOVE ME?
-
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay-members.html b/docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay-members.html deleted file mode 100755 index 4553e03..0000000 --- a/docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay-members.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - -pyShelf Open Source Ebook Server: Member List - - - - - - -
-
- - - - - - -
-
pyShelf Open Source Ebook Server -  0.1.0 -
-
Open source, console based E-book server
-
-
- - - - - - - -
-
-
-
app.lib.pyShelf.BookDisplay Member List
-
-
- -

This is the complete list of members for app.lib.pyShelf.BookDisplay, including all inherited members.

- - - - - - - - - - -
__init__(self)app.lib.pyShelf.BookDisplay
books_per_page (defined in app.lib.pyShelf.BookDisplay)app.lib.pyShelf.BookDisplay
booksPerPage(self, screen_size)app.lib.pyShelf.BookDisplay
current_page (defined in app.lib.pyShelf.BookDisplay)app.lib.pyShelf.BookDisplay
nextPage(self)app.lib.pyShelf.BookDisplay
previousPage(self)app.lib.pyShelf.BookDisplay
thumbnail_scale (defined in app.lib.pyShelf.BookDisplay)app.lib.pyShelf.BookDisplay
thumbnail_size (defined in app.lib.pyShelf.BookDisplay)app.lib.pyShelf.BookDisplay
total_pages (defined in app.lib.pyShelf.BookDisplay)app.lib.pyShelf.BookDisplay
- - - - diff --git a/docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay.html b/docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay.html deleted file mode 100755 index e28a867..0000000 --- a/docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - - -pyShelf Open Source Ebook Server: app.lib.pyShelf.BookDisplay Class Reference - - - - - - -
-
- - - - - - -
-
pyShelf Open Source Ebook Server -  0.1.0 -
-
Open source, console based E-book server
-
-
- - - - - - - -
-
-
-Public Member Functions | -Public Attributes | -List of all members
-
-
app.lib.pyShelf.BookDisplay Class Reference
-
-
- - - - - - - - - - -

-Public Member Functions

def __init__ (self)
 
def nextPage (self)
 
def previousPage (self)
 
def booksPerPage (self, screen_size)
 
- - - - - - - - - - - -

-Public Attributes

books_per_page
 
current_page
 
thumbnail_size
 
thumbnail_scale
 
total_pages
 
-

Detailed Description

-
All functions related to displaying book information in the HTML UI

Constructor & Destructor Documentation

- -

◆ __init__()

- -
-
- - - - - - - - -
def app.lib.pyShelf.BookDisplay.__init__ ( self)
-
-
Initialize class variables
-:return: None
-
-
-
-

Member Function Documentation

- -

◆ booksPerPage()

- -
-
- - - - - - - - - - - - - - - - - - -
def app.lib.pyShelf.BookDisplay.booksPerPage ( self,
 screen_size 
)
-
-
Set books per page
-
-:param screen_size: Array containing x,y pixel sizes
-:return: self.books_per_page
-
-
-
- -

◆ nextPage()

- -
-
- - - - - - - - -
def app.lib.pyShelf.BookDisplay.nextPage ( self)
-
-
Goto next book page
-:return: new current_page
-
-
-
- -

◆ previousPage()

- -
-
- - - - - - - - -
def app.lib.pyShelf.BookDisplay.previousPage ( self)
-
-
Goto previous book page
-:return: new current_page
-
-
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer-members.html b/docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer-members.html deleted file mode 100755 index 9521817..0000000 --- a/docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer-members.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - -pyShelf Open Source Ebook Server: Member List - - - - - - -
-
- - - - - - -
-
pyShelf Open Source Ebook Server -  0.1.0 -
-
Open source, console based E-book server
-
-
- - - - - - - -
-
-
-
app.lib.pyShelf.BookServer Member List
-
-
- -

This is the complete list of members for app.lib.pyShelf.BookServer, including all inherited members.

- - - - - - - - -
__init__(self) (defined in app.lib.pyShelf.BookServer)app.lib.pyShelf.BookServer
close(self)app.lib.pyShelf.BookServer
close_prompt(self)app.lib.pyShelf.BookServer
handler (defined in app.lib.pyShelf.BookServer)app.lib.pyShelf.BookServer
httpd (defined in app.lib.pyShelf.BookServer)app.lib.pyShelf.BookServer
run(self)app.lib.pyShelf.BookServer
server_address (defined in app.lib.pyShelf.BookServer)app.lib.pyShelf.BookServer
- - - - diff --git a/docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer.html b/docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer.html deleted file mode 100755 index 98764ae..0000000 --- a/docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - -pyShelf Open Source Ebook Server: app.lib.pyShelf.BookServer Class Reference - - - - - - -
-
- - - - - - -
-
pyShelf Open Source Ebook Server -  0.1.0 -
-
Open source, console based E-book server
-
-
- - - - - - - -
-
-
-Public Member Functions | -Public Attributes | -List of all members
-
-
app.lib.pyShelf.BookServer Class Reference
-
-
- - - - - - - - - - -

-Public Member Functions

-def __init__ (self)
 
def close_prompt (self)
 
def run (self)
 
def close (self)
 
- - - - - - - -

-Public Attributes

server_address
 
handler
 
httpd
 
-

Detailed Description

-
HTTP server functions required to display e-books
-

Member Function Documentation

- -

◆ close()

- -
-
- - - - - - - - -
def app.lib.pyShelf.BookServer.close ( self)
-
-
Stop HTTP Server
-
-
- -

◆ close_prompt()

- -
-
- - - - - - - - -
def app.lib.pyShelf.BookServer.close_prompt ( self)
-
-
Prompt to close server
-
-
- -

◆ run()

- -
-
- - - - - - - - -
def app.lib.pyShelf.BookServer.run ( self)
-
-
Start HTTP Server
-
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler.html b/docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler.html deleted file mode 100755 index def0079..0000000 --- a/docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -pyShelf Open Source Ebook Server: app.lib.pyShelf.RequestHandler Class Reference - - - - - - -
-
- - - - - - -
-
pyShelf Open Source Ebook Server -  0.1.0 -
-
Open source, console based E-book server
-
-
- - - - - - - -
-
-
-Public Member Functions | -Public Attributes | -List of all members
-
-
app.lib.pyShelf.RequestHandler Class Reference
-
-
-
- + Inheritance diagram for app.lib.pyShelf.RequestHandler:
-
-
- - - - - -

-Public Member Functions

-def do_GET (self)
 
- - - -

-Public Attributes

path
 
-

Detailed Description

-
Request Handler

The documentation for this class was generated from the following file: -
- - - - diff --git a/docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler.png b/docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler.png deleted file mode 100755 index 1dc1265..0000000 Binary files a/docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler.png and /dev/null differ diff --git a/docs/html/classapp_1_1lib_1_1storage_1_1Storage-members.html b/docs/html/classapp_1_1lib_1_1storage_1_1Storage-members.html deleted file mode 100755 index 130aa15..0000000 --- a/docs/html/classapp_1_1lib_1_1storage_1_1Storage-members.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - -pyShelf Open Source Ebook Server: Member List - - - - - - -
-
- - - - - - -
-
pyShelf Open Source Ebook Server -  0.1.0 -
-
Open source, console based E-book server
-
-
- - - - - - - -
-
-
-
app.lib.storage.Storage Member List
-
-
- -

This is the complete list of members for app.lib.storage.Storage, including all inherited members.

- - - - - - - - - - - -
__init__(self) (defined in app.lib.storage.Storage)app.lib.storage.Storage
book_paths_list(self) (defined in app.lib.storage.Storage)app.lib.storage.Storage
close(self) (defined in app.lib.storage.Storage)app.lib.storage.Storage
commit(self) (defined in app.lib.storage.Storage)app.lib.storage.Storage
create_tables(self)app.lib.storage.Storage
cursor (defined in app.lib.storage.Storage)app.lib.storage.Storage
database(self)app.lib.storage.Storage
db (defined in app.lib.storage.Storage)app.lib.storage.Storage
db_file (defined in app.lib.storage.Storage)app.lib.storage.Storage
insert_book(self, book)app.lib.storage.Storage
- - - - diff --git a/docs/html/classapp_1_1lib_1_1storage_1_1Storage.html b/docs/html/classapp_1_1lib_1_1storage_1_1Storage.html deleted file mode 100755 index 5e4c61f..0000000 --- a/docs/html/classapp_1_1lib_1_1storage_1_1Storage.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - -pyShelf Open Source Ebook Server: app.lib.storage.Storage Class Reference - - - - - - -
-
- - - - - - -
-
pyShelf Open Source Ebook Server -  0.1.0 -
-
Open source, console based E-book server
-
-
- - - - - - - -
-
-
-Public Member Functions | -Public Attributes | -List of all members
-
-
app.lib.storage.Storage Class Reference
-
-
- - - - - - - - - - - - - - - - -

-Public Member Functions

-def __init__ (self)
 
def database (self)
 
def create_tables (self)
 
def insert_book (self, book)
 
-def book_paths_list (self)
 
-def commit (self)
 
-def close (self)
 
- - - - - - - -

-Public Attributes

db_file
 
db
 
cursor
 
-

Detailed Description

-
Contains all methods for system storage

Member Function Documentation

- -

◆ create_tables()

- -
-
- - - - - - - - -
def app.lib.storage.Storage.create_tables ( self)
-
-
Create table structure
-
-
- -

◆ database()

- -
-
- - - - - - - - -
def app.lib.storage.Storage.database ( self)
-
-
Create database cursor
-
-
- -

◆ insert_book()

- -
-
- - - - - - - - - - - - - - - - - - -
def app.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/classes.html b/docs/html/classes.html old mode 100755 new mode 100644 index 5d9cb4e..98d2ccf --- a/docs/html/classes.html +++ b/docs/html/classes.html @@ -19,7 +19,7 @@
pyShelf Open Source Ebook Server -  0.1.0 +  0.3.0
Open source, console based E-book server
@@ -44,45 +44,44 @@ $(function() {
Class Index
-
b | c | d | f | i | r | s
+
b | c | d | i | s | t
- - + + + - - - + + + - - - - - + - + - - + + + +
  b  
Config (app.config)   
  i  
-
Config (pyShelf.src.backend.lib.config)   
  s  
Test_Config (pyShelf.src.backend.tests.library_test)   
  d  
TestCatalogue (pyShelf.src.backend.tests.library_test)   
BookDisplay (app.lib.pyShelf)   InitFiles (app.lib.pyShelf)   Storage (app.lib.storage)   
BookDisplay (pyShelf.src.backend.lib.pyShelf)   Storage (pyShelf.src.backend.lib.storage)   TestConfig (pyShelf.src.backend.tests.config_test)   
BookServer (app.lib.pyShelf)   DuckDuckGo (app.lib.api_hooks)   
  r  
-
  c  
  f  
+
DuckDuckGo (pyShelf.src.backend.lib.api_hooks)   
  t  
RequestHandler (app.lib.pyShelf)   
  i  
+
Catalogue (app.lib.library)   Frontend (app.lib.display)   
Catalogue (pyShelf.src.backend.lib.library)   Test_Catalogue (pyShelf.src.backend.tests.library_test)   
InitFiles (pyShelf.src.backend.lib.pyShelf)   
-
b | c | d | f | i | r | s
+
b | c | d | i | s | t
diff --git a/docs/html/closed.png b/docs/html/closed.png old mode 100755 new mode 100644 diff --git a/docs/html/d1/d06/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config-members.html b/docs/html/d1/d06/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config-members.html new file mode 100644 index 0000000..525af54 --- /dev/null +++ b/docs/html/d1/d06/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config-members.html @@ -0,0 +1,76 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+
+
pyShelf.src.backend.lib.config.Config Member List
+
+
+ +

This is the complete list of members for pyShelf.src.backend.lib.config.Config, including all inherited members.

+ + + + + + + + + + + + + + + +
__init__(self, root)pyShelf.src.backend.lib.config.Config
auto_scan (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
book_path (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
book_shelf (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
catalogue_db (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
db_host (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
db_port (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
file_array (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
open_file(self, _cp)pyShelf.src.backend.lib.config.Config
password (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
root (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
TITLE (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
user (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
VERSION (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
+ + + + diff --git a/docs/html/d1/d44/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html b/docs/html/d1/d44/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html new file mode 100644 index 0000000..b859d5b --- /dev/null +++ b/docs/html/d1/d44/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html @@ -0,0 +1,77 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+
+
pyShelf.src.backend.tests.library_test.Test_Config Member List
+
+
+ +

This is the complete list of members for pyShelf.src.backend.tests.library_test.Test_Config, including all inherited members.

+ + + + + + + + + + + + + + + + +
__init__(self) (defined in pyShelf.src.backend.tests.library_test.Test_Config)pyShelf.src.backend.tests.library_test.Test_Config
pyShelf::src::backend::lib::config::Config.__init__(self, root)pyShelf.src.backend.lib.config.Config
auto_scan (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
book_path (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
book_shelf (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
catalogue_db (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
db_host (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
db_port (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
file_array (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
open_file(self, root="config.json")pyShelf.src.backend.tests.library_test.Test_Config
password (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
root (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
TITLE (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
user (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
VERSION (defined in pyShelf.src.backend.lib.config.Config)pyShelf.src.backend.lib.config.Config
+ + + + diff --git a/docs/html/d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html b/docs/html/d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html new file mode 100644 index 0000000..5dd90d5 --- /dev/null +++ b/docs/html/d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html @@ -0,0 +1,214 @@ + + + + + + + +pyShelf Open Source Ebook Server: pyShelf.src.backend.lib.storage.Storage Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+
+Public Member Functions | +Public Attributes | +List of all members
+
+
pyShelf.src.backend.lib.storage.Storage Class Reference
+
+
+ + + + + + + + + + + + + + +

+Public Member Functions

+def __init__ (self, db_pointer, config)
 
def create_tables (self)
 
def insert_book (self, book)
 
def book_paths_list (self)
 
def commit (self)
 
def close (self)
 
+ + + + + + + + + + + + + + + +

+Public Attributes

sql
 
user
 
password
 
db_host
 
db_port
 
db
 
cursor
 
+

Detailed Description

+
Contains all methods for system storage

Member Function Documentation

+ +

◆ book_paths_list()

+ +
+
+ + + + + + + + +
def pyShelf.src.backend.lib.storage.Storage.book_paths_list ( self)
+
+
Get file paths from database for comparison to system files
+
+
+
+ +

◆ close()

+ +
+
+ + + + + + + + +
def pyShelf.src.backend.lib.storage.Storage.close ( self)
+
+
Close database connection
+
+
+
+ +

◆ commit()

+ +
+
+ + + + + + + + +
def pyShelf.src.backend.lib.storage.Storage.commit ( self)
+
+
Commit database transactions
+
+
+
+ +

◆ create_tables()

+ +
+
+ + + + + + + + +
def pyShelf.src.backend.lib.storage.Storage.create_tables ( self)
+
+
Create table structure
+
+
+ +

◆ insert_book()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def pyShelf.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/d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html b/docs/html/d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html new file mode 100644 index 0000000..7ad638a --- /dev/null +++ b/docs/html/d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html @@ -0,0 +1,206 @@ + + + + + + + +pyShelf Open Source Ebook Server: pyShelf.src.backend.lib.pyShelf.BookDisplay Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+
+Public Member Functions | +Public Attributes | +List of all members
+
+
pyShelf.src.backend.lib.pyShelf.BookDisplay Class Reference
+
+
+ + + + + + + + + + +

+Public Member Functions

def __init__ (self, **kwargs)
 
def nextPage (self)
 
def previousPage (self)
 
def booksPerPage (self, screen_size)
 
+ + + + + + + + + + + + + +

+Public Attributes

books_per_page
 
current_page
 
thumbnail_size
 
thumbnail_scale
 
total_pages
 
screen_size
 
+

Detailed Description

+
All functions related to displaying book information in the HTML UI

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def pyShelf.src.backend.lib.pyShelf.BookDisplay.__init__ ( self,
** kwargs 
)
+
+
Initialize class variables
+:return: None
+
+
+
+

Member Function Documentation

+ +

◆ booksPerPage()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def pyShelf.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 pyShelf.src.backend.lib.pyShelf.BookDisplay.nextPage ( self)
+
+
## TODO Remove me
+Goto next book page
+:return: new current_page
+
+
+
+ +

◆ previousPage()

+ +
+
+ + + + + + + + +
def pyShelf.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/d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html b/docs/html/d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html new file mode 100644 index 0000000..4327dbb --- /dev/null +++ b/docs/html/d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html @@ -0,0 +1,407 @@ + + + + + + + +pyShelf Open Source Ebook Server: pyShelf.src.backend.lib.library.Catalogue Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+
+Public Member Functions | +Static Public Member Functions | +Public Attributes | +List of all members
+
+
pyShelf.src.backend.lib.library.Catalogue Class Reference
+
+
+
+ + Inheritance diagram for pyShelf.src.backend.lib.library.Catalogue:
+
+
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+def __init__ (self, config)
 
def scan_folder (self, _path=None)
 
def filter_books (self)
 
def extract_metadata (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)
 
+ + + +

+Static Public Member Functions

def process_book (book)
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

file_list
 
opf_regx
 
cover_regx
 
html_regx
 
root_dir
 
book_folder
 
book_shelf
 
books
 
db_pointer
 
config
 
+

Detailed Description

+
Decodes book metadata for storage
+

Member Function Documentation

+ +

◆ compare_shelf_current()

+ +
+
+ + + + + + + + +
def pyShelf.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 pyShelf.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 pyShelf.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 pyShelf.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()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def pyShelf.src.backend.lib.library.Catalogue.extract_metadata ( 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 pyShelf.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 pyShelf.src.backend.tests.library_test.Test_Catalogue.

+ +
+
+ +

◆ import_books()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def pyShelf.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_book()

+ +
+
+ + + + + +
+ + + + + + + + +
def pyShelf.src.backend.lib.library.Catalogue.process_book ( book)
+
+static
+
+
Return dictionary of epub file contents
+
+
+ +

◆ scan_folder()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def pyShelf.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/d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.png b/docs/html/d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.png new file mode 100644 index 0000000..9198213 Binary files /dev/null and b/docs/html/d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.png differ diff --git a/docs/html/d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html b/docs/html/d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html new file mode 100644 index 0000000..e713b7a --- /dev/null +++ b/docs/html/d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html @@ -0,0 +1,462 @@ + + + + + + + +pyShelf Open Source Ebook Server: pyShelf.src.backend.tests.library_test.Test_Catalogue Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+
+Public Member Functions | +Static Public Member Functions | +Public Attributes | +List of all members
+
+
pyShelf.src.backend.tests.library_test.Test_Catalogue Class Reference
+
+
+
+ + Inheritance diagram for pyShelf.src.backend.tests.library_test.Test_Catalogue:
+
+
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+def __init__ (self)
 
def filter_books (self)
 
def scan_folder (self, _path=None)
 
def extract_metadata (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)
 
+ + + +

+Static Public Member Functions

def process_book (book)
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

book_shelf
 
file_list
 
opf_regx
 
cover_regx
 
html_regx
 
root_dir
 
book_folder
 
books
 
db_pointer
 
config
 
+

Detailed Description

+

Member Function Documentation

+ +

◆ compare_shelf_current()

+ +
+
+ + + + + +
+ + + + + + + + +
def pyShelf.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 pyShelf.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 pyShelf.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 pyShelf.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()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
def pyShelf.src.backend.lib.library.Catalogue.extract_metadata ( 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 pyShelf.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 pyShelf.src.backend.lib.library.Catalogue.

+ +
+
+ +

◆ import_books()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
def pyShelf.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_book()

+ +
+
+ + + + + +
+ + + + + + + + +
def pyShelf.src.backend.lib.library.Catalogue.process_book ( book)
+
+staticinherited
+
+
Return dictionary of epub file contents
+
+
+ +

◆ scan_folder()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
def pyShelf.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/d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png b/docs/html/d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png new file mode 100644 index 0000000..33ae867 Binary files /dev/null and b/docs/html/d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png differ diff --git a/docs/html/d5/d74/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html b/docs/html/d5/d74/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html new file mode 100644 index 0000000..bea88e3 --- /dev/null +++ b/docs/html/d5/d74/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue-members.html @@ -0,0 +1,65 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+
+
pyShelf.src.backend.tests.library_test.TestCatalogue Member List
+
+
+ +

This is the complete list of members for pyShelf.src.backend.tests.library_test.TestCatalogue, including all inherited members.

+ + + + +
config (defined in pyShelf.src.backend.tests.library_test.TestCatalogue)pyShelf.src.backend.tests.library_test.TestCataloguestatic
root (defined in pyShelf.src.backend.tests.library_test.TestCatalogue)pyShelf.src.backend.tests.library_test.TestCataloguestatic
test_filter_books(self) (defined in pyShelf.src.backend.tests.library_test.TestCatalogue)pyShelf.src.backend.tests.library_test.TestCatalogue
+ + + + diff --git a/docs/html/d5/d85/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html b/docs/html/d5/d85/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html new file mode 100644 index 0000000..19ce362 --- /dev/null +++ b/docs/html/d5/d85/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html @@ -0,0 +1,83 @@ + + + + + + + +pyShelf Open Source Ebook Server: pyShelf.src.backend.tests.library_test.TestCatalogue Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+
+Public Member Functions | +Static Public Attributes | +List of all members
+
+
pyShelf.src.backend.tests.library_test.TestCatalogue Class Reference
+
+
+ + + + +

+Public Member Functions

+def test_filter_books (self)
 
+ + + + + +

+Static Public Attributes

root = os.path.abspath(os.path.curdir)
 
config = Test_Config()
 
+

Detailed Description

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/html/d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html b/docs/html/d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html new file mode 100644 index 0000000..6520f9b --- /dev/null +++ b/docs/html/d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html @@ -0,0 +1,158 @@ + + + + + + + +pyShelf Open Source Ebook Server: pyShelf.src.backend.tests.library_test.Test_Config Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+
+Public Member Functions | +Public Attributes | +List of all members
+
+
pyShelf.src.backend.tests.library_test.Test_Config Class Reference
+
+
+
+ + Inheritance diagram for pyShelf.src.backend.tests.library_test.Test_Config:
+
+
+ + + + + + + +

+Public Member Functions

+def __init__ (self)
 
def open_file (self, root="config.json")
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

book_path
 
TITLE
 
VERSION
 
book_shelf
 
catalogue_db
 
user
 
password
 
db_host
 
db_port
 
file_array
 
root
 
auto_scan
 
+

Detailed Description

+

Member Function Documentation

+ +

◆ open_file()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def pyShelf.src.backend.tests.library_test.Test_Config.open_file ( self,
 _cp = "config.json" 
)
+
+
Opens config.json and reads in configuration options
+
+

Reimplemented from pyShelf.src.backend.lib.config.Config.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/html/d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png b/docs/html/d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png new file mode 100644 index 0000000..f564331 Binary files /dev/null and b/docs/html/d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png differ diff --git a/docs/html/d7/d7c/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html b/docs/html/d7/d7c/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html new file mode 100644 index 0000000..d76ee83 --- /dev/null +++ b/docs/html/d7/d7c/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html @@ -0,0 +1,83 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+
+
pyShelf.src.backend.tests.library_test.Test_Catalogue Member List
+
+
+ +

This is the complete list of members for pyShelf.src.backend.tests.library_test.Test_Catalogue, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
__init__(self) (defined in pyShelf.src.backend.tests.library_test.Test_Catalogue)pyShelf.src.backend.tests.library_test.Test_Catalogue
__init__(self, config) (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
book_folder (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
book_shelf (defined in pyShelf.src.backend.tests.library_test.Test_Catalogue)pyShelf.src.backend.tests.library_test.Test_Catalogue
books (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
compare_shelf_current(self)pyShelf.src.backend.lib.library.Catalogue
config (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
cover_regx (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
db_pointer (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
extract_content(self, book_zip, book)pyShelf.src.backend.lib.library.Catalogue
extract_cover_html(self, book_zip, book)pyShelf.src.backend.lib.library.Catalogue
extract_cover_image(self, book_zip, book)pyShelf.src.backend.lib.library.Catalogue
extract_metadata(self, book)pyShelf.src.backend.lib.library.Catalogue
file_list (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
filter_books(self)pyShelf.src.backend.tests.library_test.Test_Catalogue
html_regx (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
import_books(self, list=None)pyShelf.src.backend.lib.library.Catalogue
opf_regx (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
process_book(book)pyShelf.src.backend.lib.library.Cataloguestatic
root_dir (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
scan_folder(self, _path=None)pyShelf.src.backend.lib.library.Catalogue
+ + + + diff --git a/docs/html/d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html b/docs/html/d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html new file mode 100644 index 0000000..8cdaf01 --- /dev/null +++ b/docs/html/d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html @@ -0,0 +1,188 @@ + + + + + + + +pyShelf Open Source Ebook Server: pyShelf.src.backend.lib.config.Config Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+
+Public Member Functions | +Public Attributes | +List of all members
+
+
pyShelf.src.backend.lib.config.Config Class Reference
+
+
+
+ + Inheritance diagram for pyShelf.src.backend.lib.config.Config:
+
+
+ + + + + + + +

+Public Member Functions

def __init__ (self, root)
 
def open_file (self, _cp)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

book_path
 
TITLE
 
VERSION
 
book_shelf
 
catalogue_db
 
user
 
password
 
db_host
 
db_port
 
file_array
 
root
 
auto_scan
 
+

Detailed Description

+
Main System Configuration
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def pyShelf.src.backend.lib.config.Config.__init__ ( self,
 root 
)
+
+
Initialize main configuration options
+
+
+
+

Member Function Documentation

+ +

◆ open_file()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def pyShelf.src.backend.lib.config.Config.open_file ( self,
 _cp 
)
+
+
Opens config.json and reads in configuration options
+
+

Reimplemented in pyShelf.src.backend.tests.library_test.Test_Config.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/html/d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.png b/docs/html/d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.png new file mode 100644 index 0000000..b7d4d5a Binary files /dev/null and b/docs/html/d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.png differ diff --git a/docs/html/da/d1e/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html b/docs/html/da/d1e/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html new file mode 100644 index 0000000..4fda3ab --- /dev/null +++ b/docs/html/da/d1e/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html @@ -0,0 +1,82 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+
+
pyShelf.src.backend.lib.library.Catalogue Member List
+
+
+ +

This is the complete list of members for pyShelf.src.backend.lib.library.Catalogue, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
__init__(self, config) (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
book_folder (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
book_shelf (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
books (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
compare_shelf_current(self)pyShelf.src.backend.lib.library.Catalogue
config (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
cover_regx (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
db_pointer (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
extract_content(self, book_zip, book)pyShelf.src.backend.lib.library.Catalogue
extract_cover_html(self, book_zip, book)pyShelf.src.backend.lib.library.Catalogue
extract_cover_image(self, book_zip, book)pyShelf.src.backend.lib.library.Catalogue
extract_metadata(self, book)pyShelf.src.backend.lib.library.Catalogue
file_list (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
filter_books(self)pyShelf.src.backend.lib.library.Catalogue
html_regx (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
import_books(self, list=None)pyShelf.src.backend.lib.library.Catalogue
opf_regx (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
process_book(book)pyShelf.src.backend.lib.library.Cataloguestatic
root_dir (defined in pyShelf.src.backend.lib.library.Catalogue)pyShelf.src.backend.lib.library.Catalogue
scan_folder(self, _path=None)pyShelf.src.backend.lib.library.Catalogue
+ + + + diff --git a/docs/html/da/de5/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html b/docs/html/da/de5/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html new file mode 100644 index 0000000..ce797d3 --- /dev/null +++ b/docs/html/da/de5/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html @@ -0,0 +1,64 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+
+
pyShelf.src.backend.lib.pyShelf.InitFiles Member List
+
+
+ +

This is the complete list of members for pyShelf.src.backend.lib.pyShelf.InitFiles, including all inherited members.

+ + + +
__init__(self, file_array) (defined in pyShelf.src.backend.lib.pyShelf.InitFiles)pyShelf.src.backend.lib.pyShelf.InitFiles
CreateFile(self, _pointer)pyShelf.src.backend.lib.pyShelf.InitFiles
+ + + + diff --git a/docs/html/dc/d11/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage-members.html b/docs/html/dc/d11/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage-members.html new file mode 100644 index 0000000..8069a15 --- /dev/null +++ b/docs/html/dc/d11/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage-members.html @@ -0,0 +1,75 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+
+
pyShelf.src.backend.lib.storage.Storage Member List
+
+
+ +

This is the complete list of members for pyShelf.src.backend.lib.storage.Storage, including all inherited members.

+ + + + + + + + + + + + + + +
__init__(self, db_pointer, config) (defined in pyShelf.src.backend.lib.storage.Storage)pyShelf.src.backend.lib.storage.Storage
book_paths_list(self)pyShelf.src.backend.lib.storage.Storage
close(self)pyShelf.src.backend.lib.storage.Storage
commit(self)pyShelf.src.backend.lib.storage.Storage
create_tables(self)pyShelf.src.backend.lib.storage.Storage
cursor (defined in pyShelf.src.backend.lib.storage.Storage)pyShelf.src.backend.lib.storage.Storage
db (defined in pyShelf.src.backend.lib.storage.Storage)pyShelf.src.backend.lib.storage.Storage
db_host (defined in pyShelf.src.backend.lib.storage.Storage)pyShelf.src.backend.lib.storage.Storage
db_port (defined in pyShelf.src.backend.lib.storage.Storage)pyShelf.src.backend.lib.storage.Storage
insert_book(self, book)pyShelf.src.backend.lib.storage.Storage
password (defined in pyShelf.src.backend.lib.storage.Storage)pyShelf.src.backend.lib.storage.Storage
sql (defined in pyShelf.src.backend.lib.storage.Storage)pyShelf.src.backend.lib.storage.Storage
user (defined in pyShelf.src.backend.lib.storage.Storage)pyShelf.src.backend.lib.storage.Storage
+ + + + diff --git a/docs/html/dc/deb/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html b/docs/html/dc/deb/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html new file mode 100644 index 0000000..943f51c --- /dev/null +++ b/docs/html/dc/deb/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html @@ -0,0 +1,65 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+
+
pyShelf.src.backend.lib.api_hooks.DuckDuckGo Member List
+
+
+ +

This is the complete list of members for pyShelf.src.backend.lib.api_hooks.DuckDuckGo, including all inherited members.

+ + + + +
__init__(self) (defined in pyShelf.src.backend.lib.api_hooks.DuckDuckGo)pyShelf.src.backend.lib.api_hooks.DuckDuckGo
image_result(self, query)pyShelf.src.backend.lib.api_hooks.DuckDuckGo
url (defined in pyShelf.src.backend.lib.api_hooks.DuckDuckGo)pyShelf.src.backend.lib.api_hooks.DuckDuckGo
+ + + + diff --git a/docs/html/classapp_1_1lib_1_1api__hooks_1_1DuckDuckGo.html b/docs/html/dd/d4a/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html old mode 100755 new mode 100644 similarity index 58% rename from docs/html/classapp_1_1lib_1_1api__hooks_1_1DuckDuckGo.html rename to docs/html/dd/d4a/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html index 6edec3e..de26674 --- a/docs/html/classapp_1_1lib_1_1api__hooks_1_1DuckDuckGo.html +++ b/docs/html/dd/d4a/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html @@ -5,11 +5,11 @@ -pyShelf Open Source Ebook Server: app.lib.api_hooks.DuckDuckGo Class Reference - - - - +pyShelf Open Source Ebook Server: pyShelf.src.backend.lib.api_hooks.DuckDuckGo Class Reference + + + +
@@ -19,7 +19,7 @@
pyShelf Open Source Ebook Server -  0.1.0 +  0.3.0
Open source, console based E-book server
@@ -29,54 +29,54 @@
- - + +
Public Member Functions | Public Attributes | -List of all members
+List of all members
-
app.lib.api_hooks.DuckDuckGo Class Reference
+
pyShelf.src.backend.lib.api_hooks.DuckDuckGo Class Reference
- - - - + + +

Public Member Functions

+
def __init__ (self)
 
def image_result (self, query)
 
 
def image_result (self, query)
 
- - +

Public Attributes

+
 url
 
 

Detailed Description

duckduckgo related searching

Member Function Documentation

- -

◆ image_result()

+ +

◆ image_result()

- + @@ -100,13 +100,13 @@ Public Attributes
The documentation for this class was generated from the following file: diff --git a/docs/html/classapp_1_1lib_1_1pyShelf_1_1InitFiles.html b/docs/html/dd/d7e/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html old mode 100755 new mode 100644 similarity index 56% rename from docs/html/classapp_1_1lib_1_1pyShelf_1_1InitFiles.html rename to docs/html/dd/d7e/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html index d0428d4..af54bd7 --- a/docs/html/classapp_1_1lib_1_1pyShelf_1_1InitFiles.html +++ b/docs/html/dd/d7e/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html @@ -5,11 +5,11 @@ -pyShelf Open Source Ebook Server: app.lib.pyShelf.InitFiles Class Reference - - - - +pyShelf Open Source Ebook Server: pyShelf.src.backend.lib.pyShelf.InitFiles Class Reference + + + +
@@ -19,7 +19,7 @@
@@ -29,47 +29,47 @@ - - + +
-
app.lib.pyShelf.InitFiles Class Reference
+
pyShelf.src.backend.lib.pyShelf.InitFiles Class Reference
def app.lib.api_hooks.DuckDuckGo.image_result def pyShelf.src.backend.lib.api_hooks.DuckDuckGo.image_result (   self,
pyShelf Open Source Ebook Server -  0.1.0 +  0.3.0
Open source, console based E-book server
- - - - + + +

Public Member Functions

+
def __init__ (self, file_array)
 
def CreateFile (self, _pointer)
 
 
def CreateFile (self, _pointer)
 

Detailed Description

First run file creation operations

Member Function Documentation

- -

◆ CreateFile()

+ +

◆ CreateFile()

- + @@ -87,17 +87,18 @@ def 
def app.lib.pyShelf.InitFiles.CreateFile def pyShelf.src.backend.lib.pyShelf.InitFiles.CreateFile (   self, __init__ (self, fi
-
Create the file
+
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/dd/df1/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html b/docs/html/dd/df1/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html new file mode 100644 index 0000000..d0abc73 --- /dev/null +++ b/docs/html/dd/df1/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html @@ -0,0 +1,66 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+
+
pyShelf.src.backend.tests.config_test.TestConfig Member List
+
+ + + + + diff --git a/docs/html/dd/df7/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay-members.html b/docs/html/dd/df7/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay-members.html new file mode 100644 index 0000000..e448586 --- /dev/null +++ b/docs/html/dd/df7/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay-members.html @@ -0,0 +1,72 @@ + + + + + + + +pyShelf Open Source Ebook Server: Member List + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+
+
pyShelf.src.backend.lib.pyShelf.BookDisplay Member List
+
+ + + + + diff --git a/docs/html/df/d16/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html b/docs/html/df/d16/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html new file mode 100644 index 0000000..20f0129 --- /dev/null +++ b/docs/html/df/d16/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html @@ -0,0 +1,86 @@ + + + + + + + +pyShelf Open Source Ebook Server: pyShelf.src.backend.tests.config_test.TestConfig Class Reference + + + + + + +
+
+ + + + + + +
+
pyShelf Open Source Ebook Server +  0.3.0 +
+
Open source, console based E-book server
+
+
+ + + + + + + +
+
+ +
+
pyShelf.src.backend.tests.config_test.TestConfig Class Reference
+
+
+ + + + + + + + +

+Public Member Functions

+def test_book_dir (self)
 
+def test_title (self)
 
+def test_version (self)
 
+ + + +

+Static Public Attributes

config = Config(os.path.abspath(os.path.curdir))
 
+

Detailed Description

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/html/dir_9dc6c7acf21934bbaaf79b41db58c4e7.html b/docs/html/dir_1c7294442ce83d360610449d04c9d7fc.html old mode 100755 new mode 100644 similarity index 80% rename from docs/html/dir_9dc6c7acf21934bbaaf79b41db58c4e7.html rename to docs/html/dir_1c7294442ce83d360610449d04c9d7fc.html index 6a79080..e0f30e1 --- a/docs/html/dir_9dc6c7acf21934bbaaf79b41db58c4e7.html +++ b/docs/html/dir_1c7294442ce83d360610449d04c9d7fc.html @@ -5,7 +5,7 @@ -pyShelf Open Source Ebook Server: app/lib Directory Reference +pyShelf Open Source Ebook Server: src/backend/lib Directory Reference @@ -19,7 +19,7 @@
pyShelf Open Source Ebook Server -  0.1.0 +  0.3.0
Open source, console based E-book server
@@ -40,7 +40,7 @@ $(function() {
@@ -51,7 +51,7 @@ $(function() {
diff --git a/docs/html/classapp_1_1lib_1_1pyShelf_1_1InitFiles-members.html b/docs/html/dir_3f615ade772d23cefe5e20dcb18424a2.html old mode 100755 new mode 100644 similarity index 58% rename from docs/html/classapp_1_1lib_1_1pyShelf_1_1InitFiles-members.html rename to docs/html/dir_3f615ade772d23cefe5e20dcb18424a2.html index 82b4f48..267c996 --- a/docs/html/classapp_1_1lib_1_1pyShelf_1_1InitFiles-members.html +++ b/docs/html/dir_3f615ade772d23cefe5e20dcb18424a2.html @@ -5,7 +5,7 @@ -pyShelf Open Source Ebook Server: Member List +pyShelf Open Source Ebook Server: src/backend Directory Reference @@ -19,7 +19,7 @@
pyShelf Open Source Ebook Server -  0.1.0 +  0.3.0
Open source, console based E-book server
@@ -40,23 +40,22 @@ $(function() {
-
app.lib.pyShelf.InitFiles Member List
+
backend Directory Reference
- -

This is the complete list of members for app.lib.pyShelf.InitFiles, including all inherited members.

- - - -
__init__(self, file_array) (defined in app.lib.pyShelf.InitFiles)app.lib.pyShelf.InitFiles
CreateFile(self, _pointer)app.lib.pyShelf.InitFiles
+ + +

+Directories

+ diff --git a/docs/html/dir_d422163b96683743ed3963d4aac17747.html b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html old mode 100755 new mode 100644 similarity index 86% rename from docs/html/dir_d422163b96683743ed3963d4aac17747.html rename to docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 9672e63..aa80e43 --- a/docs/html/dir_d422163b96683743ed3963d4aac17747.html +++ b/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -5,7 +5,7 @@ -pyShelf Open Source Ebook Server: app Directory Reference +pyShelf Open Source Ebook Server: src Directory Reference @@ -19,7 +19,7 @@
pyShelf Open Source Ebook Server -  0.1.0 +  0.3.0
Open source, console based E-book server
@@ -40,12 +40,12 @@ $(function() {
-
app Directory Reference
+
src Directory Reference
@@ -55,7 +55,7 @@ Directories diff --git a/docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler-members.html b/docs/html/dir_9020577e2da81c4cf5a5554c26431f94.html old mode 100755 new mode 100644 similarity index 57% rename from docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler-members.html rename to docs/html/dir_9020577e2da81c4cf5a5554c26431f94.html index 30532f4..7973a41 --- a/docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler-members.html +++ b/docs/html/dir_9020577e2da81c4cf5a5554c26431f94.html @@ -5,7 +5,7 @@ -pyShelf Open Source Ebook Server: Member List +pyShelf Open Source Ebook Server: src/backend/tests Directory Reference @@ -19,7 +19,7 @@ @@ -40,23 +40,18 @@ $(function() {
-
app.lib.pyShelf.RequestHandler Member List
+
tests Directory Reference
- -

This is the complete list of members for app.lib.pyShelf.RequestHandler, including all inherited members.

-
pyShelf Open Source Ebook Server -  0.1.0 +  0.3.0
Open source, console based E-book server
- - -
do_GET(self) (defined in app.lib.pyShelf.RequestHandler)app.lib.pyShelf.RequestHandler
path (defined in app.lib.pyShelf.RequestHandler)app.lib.pyShelf.RequestHandler
+ diff --git a/docs/html/doc.png b/docs/html/doc.png old mode 100755 new mode 100644 diff --git a/docs/html/doxygen.css b/docs/html/doxygen.css old mode 100755 new mode 100644 diff --git a/docs/html/doxygen.png b/docs/html/doxygen.png old mode 100755 new mode 100644 diff --git a/docs/html/dynsections.js b/docs/html/dynsections.js old mode 100755 new mode 100644 diff --git a/docs/html/files.html b/docs/html/files.html old mode 100755 new mode 100644 index cfd365b..44fb9b7 --- a/docs/html/files.html +++ b/docs/html/files.html @@ -19,7 +19,7 @@
pyShelf Open Source Ebook Server -  0.1.0 +  0.3.0
Open source, console based E-book server
@@ -45,24 +45,28 @@ $(function() {
Here is a list of all documented files with brief descriptions:
-
[detail level 123]
- - - - - - - - - - - +
[detail level 1234]
  app
  lib
 __init__.py
 api_hooks.py
 display.py
 library.py
 pyShelf.py
 storage.py
 __init__.py
 config.py
 main.py
+ + + + + + + + + + + + + + +
  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_ScanLibrary.py
diff --git a/docs/html/folderclosed.png b/docs/html/folderclosed.png old mode 100755 new mode 100644 diff --git a/docs/html/folderopen.png b/docs/html/folderopen.png old mode 100755 new mode 100644 diff --git a/docs/html/functions.html b/docs/html/functions.html old mode 100755 new mode 100644 index 2236be4..d7ac943 --- a/docs/html/functions.html +++ b/docs/html/functions.html @@ -19,7 +19,7 @@
pyShelf Open Source Ebook Server -  0.1.0 +  0.3.0
Open source, console based E-book server
@@ -42,74 +42,76 @@ $(function() {
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 old mode 100755 new mode 100644 index 89bb656..c71a6b5 --- a/docs/html/functions_func.html +++ b/docs/html/functions_func.html @@ -19,7 +19,7 @@
pyShelf Open Source Ebook Server -  0.1.0 +  0.3.0
Open source, console based E-book server
@@ -42,74 +42,76 @@ $(function() {
 
diff --git a/docs/html/hierarchy.html b/docs/html/hierarchy.html old mode 100755 new mode 100644 index cf3cb18..bacea1f --- a/docs/html/hierarchy.html +++ b/docs/html/hierarchy.html @@ -19,7 +19,7 @@
pyShelf Open Source Ebook Server -  0.1.0 +  0.3.0
Open source, console based E-book server
@@ -46,22 +46,22 @@ $(function() {
This inheritance list is sorted roughly, but not completely, alphabetically:
[detail level 12]
- - - - - - - - - - + + + + + + + + + +
 Capp.lib.pyShelf.BookDisplay
 Capp.lib.pyShelf.BookServer
 Capp.lib.library.Catalogue
 Capp.config.Config
 Capp.lib.api_hooks.DuckDuckGo
 Capp.lib.display.Frontend
 Capp.lib.pyShelf.InitFiles
 Capp.lib.storage.Storage
 CBaseHTTPRequestHandler
 Capp.lib.pyShelf.RequestHandler
 CpyShelf.src.backend.lib.pyShelf.BookDisplay
 CpyShelf.src.backend.lib.library.Catalogue
 CpyShelf.src.backend.tests.library_test.Test_Catalogue
 CpyShelf.src.backend.lib.config.Config
 CpyShelf.src.backend.tests.library_test.Test_Config
 CpyShelf.src.backend.lib.api_hooks.DuckDuckGo
 CpyShelf.src.backend.lib.pyShelf.InitFiles
 CpyShelf.src.backend.lib.storage.Storage
 CpyShelf.src.backend.tests.library_test.TestCatalogue
 CpyShelf.src.backend.tests.config_test.TestConfig
diff --git a/docs/html/index.hhc b/docs/html/index.hhc old mode 100755 new mode 100644 index a1f54eb..d1f6a98 --- a/docs/html/index.hhc +++ b/docs/html/index.hhc @@ -4,6 +4,228 @@ diff --git a/docs/html/index.hhk b/docs/html/index.hhk old mode 100755 new mode 100644 index a1f54eb..ef7d9f0 --- a/docs/html/index.hhk +++ b/docs/html/index.hhk @@ -4,6 +4,642 @@ diff --git a/docs/html/index.hhp b/docs/html/index.hhp old mode 100755 new mode 100644 index 007220f..658ebb0 --- a/docs/html/index.hhp +++ b/docs/html/index.hhp @@ -14,7 +14,37 @@ Title=pyShelf Open Source Ebook Server main="pyShelf Open Source Ebook Server","index.hhc","index.hhk","index.html","index.html",,,,,0x23520,,0x70387e,,,,,,,,0 [FILES] +dd/d4a/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo.html +dc/deb/classpyShelf_1_1src_1_1backend_1_1lib_1_1api__hooks_1_1DuckDuckGo-members.html +d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.html +d1/d06/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config-members.html +d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.html +da/d1e/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue-members.html +d2/dd1/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay.html +dd/df7/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1BookDisplay-members.html +dd/d7e/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles.html +da/de5/classpyShelf_1_1src_1_1backend_1_1lib_1_1pyShelf_1_1InitFiles-members.html +d2/d53/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage.html +dc/d11/classpyShelf_1_1src_1_1backend_1_1lib_1_1storage_1_1Storage-members.html +df/d16/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig.html +dd/df1/classpyShelf_1_1src_1_1backend_1_1tests_1_1config__test_1_1TestConfig-members.html +d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.html +d7/d7c/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue-members.html +d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.html +d1/d44/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config-members.html +d5/d85/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1TestCatalogue.html +d5/d74/classpyShelf_1_1src_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 @@ -28,3 +58,7 @@ open.png bdwn.png sync_on.png sync_off.png +d7/dc4/classpyShelf_1_1src_1_1backend_1_1lib_1_1config_1_1Config.png +d4/d49/classpyShelf_1_1src_1_1backend_1_1lib_1_1library_1_1Catalogue.png +d4/d5d/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Catalogue.png +d7/d46/classpyShelf_1_1src_1_1backend_1_1tests_1_1library__test_1_1Test__Config.png diff --git a/docs/html/index.html b/docs/html/index.html old mode 100755 new mode 100644 index cf0ac9d..a272a65 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -19,7 +19,7 @@
pyShelf Open Source Ebook Server -  0.2.0 +  0.3.0
Open source, console based E-book server
@@ -47,7 +47,7 @@ $(function() { diff --git a/docs/html/jquery.js b/docs/html/jquery.js old mode 100755 new mode 100644 diff --git a/docs/html/menu.js b/docs/html/menu.js old mode 100755 new mode 100644 diff --git a/docs/html/menudata.js b/docs/html/menudata.js old mode 100755 new mode 100644 index bdab70c..25e7273 --- a/docs/html/menudata.js +++ b/docs/html/menudata.js @@ -21,4 +21,13 @@ with this program; if not, write to the Free Software Foundation, Inc., for the JavaScript code in this file */ var menudata={children:[ -{text:"Main Page",url:"index.html"}]} +{text:"Main Page",url:"index.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html"}, +{text:"Functions",url:"functions_func.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/docs/html/nav_f.png b/docs/html/nav_f.png old mode 100755 new mode 100644 diff --git a/docs/html/nav_g.png b/docs/html/nav_g.png old mode 100755 new mode 100644 diff --git a/docs/html/nav_h.png b/docs/html/nav_h.png old mode 100755 new mode 100644 diff --git a/docs/html/open.png b/docs/html/open.png old mode 100755 new mode 100644 diff --git a/docs/html/splitbar.png b/docs/html/splitbar.png old mode 100755 new mode 100644 diff --git a/docs/html/sync_off.png b/docs/html/sync_off.png old mode 100755 new mode 100644 diff --git a/docs/html/sync_on.png b/docs/html/sync_on.png old mode 100755 new mode 100644 diff --git a/docs/html/tab_a.png b/docs/html/tab_a.png old mode 100755 new mode 100644 diff --git a/docs/html/tab_b.png b/docs/html/tab_b.png old mode 100755 new mode 100644 diff --git a/docs/html/tab_h.png b/docs/html/tab_h.png old mode 100755 new mode 100644 diff --git a/docs/html/tab_s.png b/docs/html/tab_s.png old mode 100755 new mode 100644 diff --git a/docs/html/tabs.css b/docs/html/tabs.css old mode 100755 new mode 100644 diff --git a/docs/man/man3/app_config_Config.3 b/docs/man/man3/app_config_Config.3 deleted file mode 100755 index bbecc14..0000000 --- a/docs/man/man3/app_config_Config.3 +++ /dev/null @@ -1,50 +0,0 @@ -.TH "app.config.Config" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- -.ad l -.nh -.SH NAME -app.config.Config -.SH SYNOPSIS -.br -.PP -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "def \fB__init__\fP (self)" -.br -.in -1c -.SS "Public Attributes" - -.in +1c -.ti -1c -.RI "\fBbook_path\fP" -.br -.ti -1c -.RI "\fBTITLE\fP" -.br -.ti -1c -.RI "\fBbook_shelf\fP" -.br -.ti -1c -.RI "\fBcatalogue_db\fP" -.br -.ti -1c -.RI "\fBfile_array\fP" -.br -.ti -1c -.RI "\fBauto_scan\fP" -.br -.in -1c -.SH "Detailed Description" -.PP - -.PP -.nf -Main System Configuration -.fi -.PP - - -.SH "Author" -.PP -Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/man/man3/app_lib_display_Frontend.3 b/docs/man/man3/app_lib_display_Frontend.3 deleted file mode 100755 index 29c1a88..0000000 --- a/docs/man/man3/app_lib_display_Frontend.3 +++ /dev/null @@ -1,118 +0,0 @@ -.TH "app.lib.display.Frontend" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- -.ad l -.nh -.SH NAME -app.lib.display.Frontend -.SH SYNOPSIS -.br -.PP -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "def \fB__init__\fP (self, dimensions=[0, 0])" -.br -.ti -1c -.RI "def \fBhtml_Headers\fP (self)" -.br -.ti -1c -.RI "def \fBapp_Headers\fP (self)" -.br -.ti -1c -.RI "def \fBapp_body\fP (self, nav, shelf)" -.br -.ti -1c -.RI "def \fBapp_footer\fP (self)" -.br -.ti -1c -.RI "def \fBcompile\fP (self, nav, shelf)" -.br -.in -1c -.SS "Public Attributes" - -.in +1c -.ti -1c -.RI "\fBdimensions\fP" -.br -.ti -1c -.RI "\fBTITLE\fP" -.br -.in -1c -.SH "Detailed Description" -.PP - -.PP -.nf -Dynamic frontend display functions -.fi -.PP - -.SH "Constructor & Destructor Documentation" -.PP -.SS "def app\&.lib\&.display\&.Frontend\&.__init__ ( self, dimensions = \fC[0, 0]\fP)" - -.PP -.nf -:param dimensions: array containing screen size [x, y] - -.fi -.PP - -.SH "Member Function Documentation" -.PP -.SS "def app\&.lib\&.display\&.Frontend\&.app_body ( self, nav, shelf)" - -.PP -.nf -Main interface body, and navigation -:param nav: nav[] system navigation list -:param shelf: shelf[0{path:"",title:"",cover:"",author:""}] -:returns _body: HTML render of page body - -.fi -.PP - -.SS "def app\&.lib\&.display\&.Frontend\&.app_footer ( self)" - -.PP -.nf -Main interface footer; Closes HTML -:returns _footer: HTML render of page footer - -.fi -.PP - -.SS "def app\&.lib\&.display\&.Frontend\&.app_Headers ( self)" - -.PP -.nf -App specific headers -:returns _head: HTML render of application specific headers - -.fi -.PP - -.SS "def app\&.lib\&.display\&.Frontend\&.compile ( self, nav, shelf)" - -.PP -.nf -Compiles user interface -:returns _ui: Compiled HTML for page layout - -.fi -.PP - -.SS "def app\&.lib\&.display\&.Frontend\&.html_Headers ( self)" - -.PP -.nf -HTML headers -:returns _head: HTML render of page headers - -.fi -.PP - - -.SH "Author" -.PP -Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/man/man3/app_lib_library_Catalogue.3 b/docs/man/man3/app_lib_library_Catalogue.3 deleted file mode 100755 index 1b3537c..0000000 --- a/docs/man/man3/app_lib_library_Catalogue.3 +++ /dev/null @@ -1,123 +0,0 @@ -.TH "app.lib.library.Catalogue" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- -.ad l -.nh -.SH NAME -app.lib.library.Catalogue -.SH SYNOPSIS -.br -.PP -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "def \fB__init__\fP (self)" -.br -.ti -1c -.RI "def \fBscan_folder\fP (self, folder=config\&.book_path)" -.br -.ti -1c -.RI "def \fBscan_book\fP (self, book)" -.br -.ti -1c -.RI "def \fBfilter_books\fP (self)" -.br -.ti -1c -.RI "def \fBprocess_book\fP (self, book)" -.br -.ti -1c -.RI "def \fBextract_metadata\fP (self, book)" -.br -.ti -1c -.RI "def \fBextract_content\fP (self, book_zip, book)" -.br -.ti -1c -.RI "def \fBextract_cover_html\fP (self, book_zip, book)" -.br -.ti -1c -.RI "def \fBextract_cover_image\fP (self, book_zip, book)" -.br -.ti -1c -.RI "def \fBcompare_shelf_current\fP (self)" -.br -.ti -1c -.RI "def \fBimport_books\fP (self, list=None)" -.br -.in -1c -.SS "Public Attributes" - -.in +1c -.ti -1c -.RI "\fBfile_list\fP" -.br -.ti -1c -.RI "\fBopf_regx\fP" -.br -.ti -1c -.RI "\fBcover_regx\fP" -.br -.ti -1c -.RI "\fBhtml_regx\fP" -.br -.ti -1c -.RI "\fBbooks\fP" -.br -.in -1c -.SH "Detailed Description" -.PP - -.PP -.nf -Decodes and stores book information -.fi -.PP -.PP -.nf -Step One: filter_books.fi -.PP - -.SH "Member Function Documentation" -.PP -.SS "def app\&.lib\&.library\&.Catalogue\&.extract_metadata ( self, book)" - -.PP -.nf -Return extracted metadata and cover picture -book['path'] == Full path to ebook file -book['files'] == list of files from self.process_book(book) - -.fi -.PP - -.SS "def app\&.lib\&.library\&.Catalogue\&.filter_books ( self)" - -.PP -.nf - Scan book folder recursively for epub files - filter_books(0) -> Catalogue.books - filter_books(1) -> self.books[] - :param ret: 0 -> create class property -> dump json - :param ret: 1 -> create & return class property - -.fi -.PP - -.SS "def app\&.lib\&.library\&.Catalogue\&.process_book ( self, book)" - -.PP -.nf -Return dictionary of epub file contents -.fi -.PP - -.SS "def app\&.lib\&.library\&.Catalogue\&.scan_book ( self, book)" - -.PP -.nf -REMOVE ME? -.fi -.PP - - -.SH "Author" -.PP -Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/man/man3/app_lib_pyShelf_BookServer.3 b/docs/man/man3/app_lib_pyShelf_BookServer.3 deleted file mode 100755 index 65d1692..0000000 --- a/docs/man/man3/app_lib_pyShelf_BookServer.3 +++ /dev/null @@ -1,77 +0,0 @@ -.TH "app.lib.pyShelf.BookServer" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- -.ad l -.nh -.SH NAME -app.lib.pyShelf.BookServer -.SH SYNOPSIS -.br -.PP -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "def \fB__init__\fP (self)" -.br -.ti -1c -.RI "def \fBclose_prompt\fP (self)" -.br -.ti -1c -.RI "def \fBrun\fP (self)" -.br -.ti -1c -.RI "def \fBclose\fP (self)" -.br -.in -1c -.SS "Public Attributes" - -.in +1c -.ti -1c -.RI "\fBserver_address\fP" -.br -.ti -1c -.RI "\fBhandler\fP" -.br -.ti -1c -.RI "\fBhttpd\fP" -.br -.in -1c -.SH "Detailed Description" -.PP - -.PP -.nf -HTTP server functions required to display e-books - -.fi -.PP - -.SH "Member Function Documentation" -.PP -.SS "def app\&.lib\&.pyShelf\&.BookServer\&.close ( self)" - -.PP -.nf -Stop HTTP Server -.fi -.PP - -.SS "def app\&.lib\&.pyShelf\&.BookServer\&.close_prompt ( self)" - -.PP -.nf -Prompt to close server -.fi -.PP - -.SS "def app\&.lib\&.pyShelf\&.BookServer\&.run ( self)" - -.PP -.nf -Start HTTP Server -.fi -.PP - - -.SH "Author" -.PP -Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/man/man3/app_lib_pyShelf_RequestHandler.3 b/docs/man/man3/app_lib_pyShelf_RequestHandler.3 deleted file mode 100755 index e6948aa..0000000 --- a/docs/man/man3/app_lib_pyShelf_RequestHandler.3 +++ /dev/null @@ -1,37 +0,0 @@ -.TH "app.lib.pyShelf.RequestHandler" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- -.ad l -.nh -.SH NAME -app.lib.pyShelf.RequestHandler -.SH SYNOPSIS -.br -.PP -.PP -Inherits BaseHTTPRequestHandler\&. -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "def \fBdo_GET\fP (self)" -.br -.in -1c -.SS "Public Attributes" - -.in +1c -.ti -1c -.RI "\fBpath\fP" -.br -.in -1c -.SH "Detailed Description" -.PP - -.PP -.nf -Request Handler -.fi -.PP - - -.SH "Author" -.PP -Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/man/man3/app_lib_storage_Storage.3 b/docs/man/man3/app_lib_storage_Storage.3 deleted file mode 100755 index ad06c6e..0000000 --- a/docs/man/man3/app_lib_storage_Storage.3 +++ /dev/null @@ -1,87 +0,0 @@ -.TH "app.lib.storage.Storage" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- -.ad l -.nh -.SH NAME -app.lib.storage.Storage -.SH SYNOPSIS -.br -.PP -.SS "Public Member Functions" - -.in +1c -.ti -1c -.RI "def \fB__init__\fP (self)" -.br -.ti -1c -.RI "def \fBdatabase\fP (self)" -.br -.ti -1c -.RI "def \fBcreate_tables\fP (self)" -.br -.ti -1c -.RI "def \fBinsert_book\fP (self, book)" -.br -.ti -1c -.RI "def \fBbook_paths_list\fP (self)" -.br -.ti -1c -.RI "def \fBcommit\fP (self)" -.br -.ti -1c -.RI "def \fBclose\fP (self)" -.br -.in -1c -.SS "Public Attributes" - -.in +1c -.ti -1c -.RI "\fBdb_file\fP" -.br -.ti -1c -.RI "\fBdb\fP" -.br -.ti -1c -.RI "\fBcursor\fP" -.br -.in -1c -.SH "Detailed Description" -.PP - -.PP -.nf -Contains all methods for system storage -.fi -.PP - -.SH "Member Function Documentation" -.PP -.SS "def app\&.lib\&.storage\&.Storage\&.create_tables ( self)" - -.PP -.nf -Create table structure -.fi -.PP - -.SS "def app\&.lib\&.storage\&.Storage\&.database ( self)" - -.PP -.nf -Create database cursor -.fi -.PP - -.SS "def app\&.lib\&.storage\&.Storage\&.insert_book ( self, book)" - -.PP -.nf -Insert book in database -:returns: True if succeeds False if not - -.fi -.PP - - -.SH "Author" -.PP -Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/man/man3/app_lib_api_hooks_DuckDuckGo.3 b/docs/man/man3/pyShelf_src_backend_lib_api_hooks_DuckDuckGo.3 old mode 100755 new mode 100644 similarity index 68% rename from docs/man/man3/app_lib_api_hooks_DuckDuckGo.3 rename to docs/man/man3/pyShelf_src_backend_lib_api_hooks_DuckDuckGo.3 index 8513078..cea0505 --- a/docs/man/man3/app_lib_api_hooks_DuckDuckGo.3 +++ b/docs/man/man3/pyShelf_src_backend_lib_api_hooks_DuckDuckGo.3 @@ -1,8 +1,8 @@ -.TH "app.lib.api_hooks.DuckDuckGo" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.TH "pyShelf.src.backend.lib.api_hooks.DuckDuckGo" 3 "Sun Dec 15 2019" "Version 0.3.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- .ad l .nh .SH NAME -app.lib.api_hooks.DuckDuckGo +pyShelf.src.backend.lib.api_hooks.DuckDuckGo .SH SYNOPSIS .br .PP @@ -34,7 +34,7 @@ duckduckgo related searching .SH "Member Function Documentation" .PP -.SS "def app\&.lib\&.api_hooks\&.DuckDuckGo\&.image_result ( self, query)" +.SS "def pyShelf\&.src\&.backend\&.lib\&.api_hooks\&.DuckDuckGo\&.image_result ( self, query)" .PP .nf diff --git a/docs/man/man3/pyShelf_src_backend_lib_config_Config.3 b/docs/man/man3/pyShelf_src_backend_lib_config_Config.3 new file mode 100644 index 0000000..e67eb34 --- /dev/null +++ b/docs/man/man3/pyShelf_src_backend_lib_config_Config.3 @@ -0,0 +1,98 @@ +.TH "pyShelf.src.backend.lib.config.Config" 3 "Sun Dec 15 2019" "Version 0.3.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +pyShelf.src.backend.lib.config.Config +.SH SYNOPSIS +.br +.PP +.PP +Inherited by \fBpyShelf\&.src\&.backend\&.tests\&.library_test\&.Test_Config\fP\&. +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "def \fB__init__\fP (self, root)" +.br +.ti -1c +.RI "def \fBopen_file\fP (self, _cp)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBbook_path\fP" +.br +.ti -1c +.RI "\fBTITLE\fP" +.br +.ti -1c +.RI "\fBVERSION\fP" +.br +.ti -1c +.RI "\fBbook_shelf\fP" +.br +.ti -1c +.RI "\fBcatalogue_db\fP" +.br +.ti -1c +.RI "\fBuser\fP" +.br +.ti -1c +.RI "\fBpassword\fP" +.br +.ti -1c +.RI "\fBdb_host\fP" +.br +.ti -1c +.RI "\fBdb_port\fP" +.br +.ti -1c +.RI "\fBfile_array\fP" +.br +.ti -1c +.RI "\fBroot\fP" +.br +.ti -1c +.RI "\fBauto_scan\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +Main System Configuration + +.fi +.PP + +.SH "Constructor & Destructor Documentation" +.PP +.SS "def pyShelf\&.src\&.backend\&.lib\&.config\&.Config\&.__init__ ( self, root)" + +.PP +.nf +Initialize main configuration options + +.fi +.PP + +.SH "Member Function Documentation" +.PP +.SS "def pyShelf\&.src\&.backend\&.lib\&.config\&.Config\&.open_file ( self, _cp)" + +.PP +.nf +Opens config.json and reads in configuration options + +.fi +.PP + +.PP +Reimplemented in \fBpyShelf\&.src\&.backend\&.tests\&.library_test\&.Test_Config\fP\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/man/man3/pyShelf_src_backend_lib_library_Catalogue.3 b/docs/man/man3/pyShelf_src_backend_lib_library_Catalogue.3 new file mode 100644 index 0000000..98da085 --- /dev/null +++ b/docs/man/man3/pyShelf_src_backend_lib_library_Catalogue.3 @@ -0,0 +1,187 @@ +.TH "pyShelf.src.backend.lib.library.Catalogue" 3 "Sun Dec 15 2019" "Version 0.3.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +pyShelf.src.backend.lib.library.Catalogue +.SH SYNOPSIS +.br +.PP +.PP +Inherited by \fBpyShelf\&.src\&.backend\&.tests\&.library_test\&.Test_Catalogue\fP\&. +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "def \fB__init__\fP (self, config)" +.br +.ti -1c +.RI "def \fBscan_folder\fP (self, _path=None)" +.br +.ti -1c +.RI "def \fBfilter_books\fP (self)" +.br +.ti -1c +.RI "def \fBextract_metadata\fP (self, book)" +.br +.ti -1c +.RI "def \fBextract_content\fP (self, book_zip, book)" +.br +.ti -1c +.RI "def \fBextract_cover_html\fP (self, book_zip, book)" +.br +.ti -1c +.RI "def \fBextract_cover_image\fP (self, book_zip, book)" +.br +.ti -1c +.RI "def \fBcompare_shelf_current\fP (self)" +.br +.ti -1c +.RI "def \fBimport_books\fP (self, list=None)" +.br +.in -1c +.SS "Static Public Member Functions" + +.in +1c +.ti -1c +.RI "def \fBprocess_book\fP (book)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBfile_list\fP" +.br +.ti -1c +.RI "\fBopf_regx\fP" +.br +.ti -1c +.RI "\fBcover_regx\fP" +.br +.ti -1c +.RI "\fBhtml_regx\fP" +.br +.ti -1c +.RI "\fBroot_dir\fP" +.br +.ti -1c +.RI "\fBbook_folder\fP" +.br +.ti -1c +.RI "\fBbook_shelf\fP" +.br +.ti -1c +.RI "\fBbooks\fP" +.br +.ti -1c +.RI "\fBdb_pointer\fP" +.br +.ti -1c +.RI "\fBconfig\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +Decodes book metadata for storage + +.fi +.PP + +.SH "Member Function Documentation" +.PP +.SS "def pyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\&.compare_shelf_current ( self)" + +.PP +.nf +Calls storage system, gets list of books stored and compares against files on disk + +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\&.extract_content ( self, book_zip, book)" + +.PP +.nf +Opens epub as zip file filters then stores as list any files matching opf_regx + +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\&.extract_cover_html ( self, book_zip, book)" + +.PP +.nf +Opens epub as zip file filters then stores as list any files matching html_regx + +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\&.extract_cover_image ( self, book_zip, book)" + +.PP +.nf +Opens epub as zip file filters then stores as list any files matching cover_regx + +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata ( self, book)" + +.PP +.nf +Return extracted metadata and cover picture +book['path'] == Full path to ebook file +book['files'] == list of files from self.process_book(book) + +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\&.filter_books ( self)" + +.PP +.nf +Calls scan_folder and filters out book files +Proceeds to call process_book + +:returns self._book_list_expanded: json string containing all book metadata + +.fi +.PP + +.PP +Reimplemented in \fBpyShelf\&.src\&.backend\&.tests\&.library_test\&.Test_Catalogue\fP\&. +.SS "def pyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\&.import_books ( self, list = \fCNone\fP)" + +.PP +.nf +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. + +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\&.process_book ( book)\fC [static]\fP" + +.PP +.nf +Return dictionary of epub file contents +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\&.scan_folder ( self, _path = \fCNone\fP)" + +.PP +.nf +Scan folder by _path, allows recurisive scanning + +.fi +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/man/man3/app_lib_pyShelf_BookDisplay.3 b/docs/man/man3/pyShelf_src_backend_lib_pyShelf_BookDisplay.3 old mode 100755 new mode 100644 similarity index 62% rename from docs/man/man3/app_lib_pyShelf_BookDisplay.3 rename to docs/man/man3/pyShelf_src_backend_lib_pyShelf_BookDisplay.3 index 74b871a..3d2bb2d --- a/docs/man/man3/app_lib_pyShelf_BookDisplay.3 +++ b/docs/man/man3/pyShelf_src_backend_lib_pyShelf_BookDisplay.3 @@ -1,8 +1,8 @@ -.TH "app.lib.pyShelf.BookDisplay" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.TH "pyShelf.src.backend.lib.pyShelf.BookDisplay" 3 "Sun Dec 15 2019" "Version 0.3.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- .ad l .nh .SH NAME -app.lib.pyShelf.BookDisplay +pyShelf.src.backend.lib.pyShelf.BookDisplay .SH SYNOPSIS .br .PP @@ -10,7 +10,7 @@ app.lib.pyShelf.BookDisplay .in +1c .ti -1c -.RI "def \fB__init__\fP (self)" +.RI "def \fB__init__\fP (self, **kwargs)" .br .ti -1c .RI "def \fBnextPage\fP (self)" @@ -40,6 +40,9 @@ app.lib.pyShelf.BookDisplay .ti -1c .RI "\fBtotal_pages\fP" .br +.ti -1c +.RI "\fBscreen_size\fP" +.br .in -1c .SH "Detailed Description" .PP @@ -52,7 +55,7 @@ All functions related to displaying book information in the HTML UI .SH "Constructor & Destructor Documentation" .PP -.SS "def app\&.lib\&.pyShelf\&.BookDisplay\&.__init__ ( self)" +.SS "def pyShelf\&.src\&.backend\&.lib\&.pyShelf\&.BookDisplay\&.__init__ ( self, ** kwargs)" .PP .nf @@ -64,32 +67,34 @@ Initialize class variables .SH "Member Function Documentation" .PP -.SS "def app\&.lib\&.pyShelf\&.BookDisplay\&.booksPerPage ( self, screen_size)" +.SS "def pyShelf\&.src\&.backend\&.lib\&.pyShelf\&.BookDisplay\&.booksPerPage ( self, screen_size)" .PP .nf +## TODO Remove me Set books per page - :param screen_size: Array containing x,y pixel sizes :return: self.books_per_page .fi .PP -.SS "def app\&.lib\&.pyShelf\&.BookDisplay\&.nextPage ( self)" +.SS "def pyShelf\&.src\&.backend\&.lib\&.pyShelf\&.BookDisplay\&.nextPage ( self)" .PP .nf +## TODO Remove me Goto next book page :return: new current_page .fi .PP -.SS "def app\&.lib\&.pyShelf\&.BookDisplay\&.previousPage ( self)" +.SS "def pyShelf\&.src\&.backend\&.lib\&.pyShelf\&.BookDisplay\&.previousPage ( self)" .PP .nf +## TODO Remove me Goto previous book page :return: new current_page diff --git a/docs/man/man3/app_lib_pyShelf_InitFiles.3 b/docs/man/man3/pyShelf_src_backend_lib_pyShelf_InitFiles.3 old mode 100755 new mode 100644 similarity index 58% rename from docs/man/man3/app_lib_pyShelf_InitFiles.3 rename to docs/man/man3/pyShelf_src_backend_lib_pyShelf_InitFiles.3 index 9ee1866..f48ff01 --- a/docs/man/man3/app_lib_pyShelf_InitFiles.3 +++ b/docs/man/man3/pyShelf_src_backend_lib_pyShelf_InitFiles.3 @@ -1,8 +1,8 @@ -.TH "app.lib.pyShelf.InitFiles" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.TH "pyShelf.src.backend.lib.pyShelf.InitFiles" 3 "Sun Dec 15 2019" "Version 0.3.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- .ad l .nh .SH NAME -app.lib.pyShelf.InitFiles +pyShelf.src.backend.lib.pyShelf.InitFiles .SH SYNOPSIS .br .PP @@ -27,11 +27,12 @@ First run file creation operations .SH "Member Function Documentation" .PP -.SS "def app\&.lib\&.pyShelf\&.InitFiles\&.CreateFile ( self, _pointer)" +.SS "def pyShelf\&.src\&.backend\&.lib\&.pyShelf\&.InitFiles\&.CreateFile ( self, _pointer)" .PP .nf -Create the file +Checks if file exists and creates it if not + .fi .PP diff --git a/docs/man/man3/pyShelf_src_backend_lib_storage_Storage.3 b/docs/man/man3/pyShelf_src_backend_lib_storage_Storage.3 new file mode 100644 index 0000000..7e5c38d --- /dev/null +++ b/docs/man/man3/pyShelf_src_backend_lib_storage_Storage.3 @@ -0,0 +1,115 @@ +.TH "pyShelf.src.backend.lib.storage.Storage" 3 "Sun Dec 15 2019" "Version 0.3.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +pyShelf.src.backend.lib.storage.Storage +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "def \fB__init__\fP (self, db_pointer, config)" +.br +.ti -1c +.RI "def \fBcreate_tables\fP (self)" +.br +.ti -1c +.RI "def \fBinsert_book\fP (self, book)" +.br +.ti -1c +.RI "def \fBbook_paths_list\fP (self)" +.br +.ti -1c +.RI "def \fBcommit\fP (self)" +.br +.ti -1c +.RI "def \fBclose\fP (self)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBsql\fP" +.br +.ti -1c +.RI "\fBuser\fP" +.br +.ti -1c +.RI "\fBpassword\fP" +.br +.ti -1c +.RI "\fBdb_host\fP" +.br +.ti -1c +.RI "\fBdb_port\fP" +.br +.ti -1c +.RI "\fBdb\fP" +.br +.ti -1c +.RI "\fBcursor\fP" +.br +.in -1c +.SH "Detailed Description" +.PP + +.PP +.nf +Contains all methods for system storage +.fi +.PP + +.SH "Member Function Documentation" +.PP +.SS "def pyShelf\&.src\&.backend\&.lib\&.storage\&.Storage\&.book_paths_list ( self)" + +.PP +.nf +Get file paths from database for comparison to system files + +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.lib\&.storage\&.Storage\&.close ( self)" + +.PP +.nf +Close database connection + +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.lib\&.storage\&.Storage\&.commit ( self)" + +.PP +.nf +Commit database transactions + +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.lib\&.storage\&.Storage\&.create_tables ( self)" + +.PP +.nf +Create table structure +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.lib\&.storage\&.Storage\&.insert_book ( self, book)" + +.PP +.nf +Insert book in database +:returns: True if succeeds False if not + +.fi +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/man/man3/pyShelf_src_backend_tests_config_test_TestConfig.3 b/docs/man/man3/pyShelf_src_backend_tests_config_test_TestConfig.3 new file mode 100644 index 0000000..bd649bf --- /dev/null +++ b/docs/man/man3/pyShelf_src_backend_tests_config_test_TestConfig.3 @@ -0,0 +1,35 @@ +.TH "pyShelf.src.backend.tests.config_test.TestConfig" 3 "Sun Dec 15 2019" "Version 0.3.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +pyShelf.src.backend.tests.config_test.TestConfig +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "def \fBtest_book_dir\fP (self)" +.br +.ti -1c +.RI "def \fBtest_title\fP (self)" +.br +.ti -1c +.RI "def \fBtest_version\fP (self)" +.br +.in -1c +.SS "Static Public Attributes" + +.in +1c +.ti -1c +.RI "\fBconfig\fP = \fBConfig\fP(os\&.path\&.abspath(os\&.path\&.curdir))" +.br +.in -1c +.SH "Detailed Description" +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/man/man3/pyShelf_src_backend_tests_library_test_TestCatalogue.3 b/docs/man/man3/pyShelf_src_backend_tests_library_test_TestCatalogue.3 new file mode 100644 index 0000000..5e05cad --- /dev/null +++ b/docs/man/man3/pyShelf_src_backend_tests_library_test_TestCatalogue.3 @@ -0,0 +1,32 @@ +.TH "pyShelf.src.backend.tests.library_test.TestCatalogue" 3 "Sun Dec 15 2019" "Version 0.3.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +pyShelf.src.backend.tests.library_test.TestCatalogue +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "def \fBtest_filter_books\fP (self)" +.br +.in -1c +.SS "Static Public Attributes" + +.in +1c +.ti -1c +.RI "\fBroot\fP = os\&.path\&.abspath(os\&.path\&.curdir)" +.br +.ti -1c +.RI "\fBconfig\fP = \fBTest_Config\fP()" +.br +.in -1c +.SH "Detailed Description" +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/man/man3/pyShelf_src_backend_tests_library_test_Test_Catalogue.3 b/docs/man/man3/pyShelf_src_backend_tests_library_test_Test_Catalogue.3 new file mode 100644 index 0000000..533d1d7 --- /dev/null +++ b/docs/man/man3/pyShelf_src_backend_tests_library_test_Test_Catalogue.3 @@ -0,0 +1,179 @@ +.TH "pyShelf.src.backend.tests.library_test.Test_Catalogue" 3 "Sun Dec 15 2019" "Version 0.3.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +pyShelf.src.backend.tests.library_test.Test_Catalogue +.SH SYNOPSIS +.br +.PP +.PP +Inherits \fBpyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\fP\&. +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "def \fB__init__\fP (self)" +.br +.ti -1c +.RI "def \fBfilter_books\fP (self)" +.br +.ti -1c +.RI "def \fBscan_folder\fP (self, _path=None)" +.br +.ti -1c +.RI "def \fBextract_metadata\fP (self, book)" +.br +.ti -1c +.RI "def \fBextract_content\fP (self, book_zip, book)" +.br +.ti -1c +.RI "def \fBextract_cover_html\fP (self, book_zip, book)" +.br +.ti -1c +.RI "def \fBextract_cover_image\fP (self, book_zip, book)" +.br +.ti -1c +.RI "def \fBcompare_shelf_current\fP (self)" +.br +.ti -1c +.RI "def \fBimport_books\fP (self, list=None)" +.br +.in -1c +.SS "Static Public Member Functions" + +.in +1c +.ti -1c +.RI "def \fBprocess_book\fP (book)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBbook_shelf\fP" +.br +.ti -1c +.RI "\fBfile_list\fP" +.br +.ti -1c +.RI "\fBopf_regx\fP" +.br +.ti -1c +.RI "\fBcover_regx\fP" +.br +.ti -1c +.RI "\fBhtml_regx\fP" +.br +.ti -1c +.RI "\fBroot_dir\fP" +.br +.ti -1c +.RI "\fBbook_folder\fP" +.br +.ti -1c +.RI "\fBbooks\fP" +.br +.ti -1c +.RI "\fBdb_pointer\fP" +.br +.ti -1c +.RI "\fBconfig\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +.SH "Member Function Documentation" +.PP +.SS "def pyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\&.compare_shelf_current ( self)\fC [inherited]\fP" + +.PP +.nf +Calls storage system, gets list of books stored and compares against files on disk + +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\&.extract_content ( self, book_zip, book)\fC [inherited]\fP" + +.PP +.nf +Opens epub as zip file filters then stores as list any files matching opf_regx + +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\&.extract_cover_html ( self, book_zip, book)\fC [inherited]\fP" + +.PP +.nf +Opens epub as zip file filters then stores as list any files matching html_regx + +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\&.extract_cover_image ( self, book_zip, book)\fC [inherited]\fP" + +.PP +.nf +Opens epub as zip file filters then stores as list any files matching cover_regx + +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\&.extract_metadata ( self, book)\fC [inherited]\fP" + +.PP +.nf +Return extracted metadata and cover picture +book['path'] == Full path to ebook file +book['files'] == list of files from self.process_book(book) + +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.tests\&.library_test\&.Test_Catalogue\&.filter_books ( self)" + +.PP +.nf +Calls scan_folder and filters out book files +Proceeds to call process_book + +:returns self._book_list_expanded: json string containing all book metadata + +.fi +.PP + +.PP +Reimplemented from \fBpyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\fP\&. +.SS "def pyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\&.import_books ( self, list = \fCNone\fP)\fC [inherited]\fP" + +.PP +.nf +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. + +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\&.process_book ( book)\fC [static]\fP, \fC [inherited]\fP" + +.PP +.nf +Return dictionary of epub file contents +.fi +.PP + +.SS "def pyShelf\&.src\&.backend\&.lib\&.library\&.Catalogue\&.scan_folder ( self, _path = \fCNone\fP)\fC [inherited]\fP" + +.PP +.nf +Scan folder by _path, allows recurisive scanning + +.fi +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/man/man3/pyShelf_src_backend_tests_library_test_Test_Config.3 b/docs/man/man3/pyShelf_src_backend_tests_library_test_Test_Config.3 new file mode 100644 index 0000000..5fbfcff --- /dev/null +++ b/docs/man/man3/pyShelf_src_backend_tests_library_test_Test_Config.3 @@ -0,0 +1,79 @@ +.TH "pyShelf.src.backend.tests.library_test.Test_Config" 3 "Sun Dec 15 2019" "Version 0.3.0" "pyShelf Open Source Ebook Server" \" -*- nroff -*- +.ad l +.nh +.SH NAME +pyShelf.src.backend.tests.library_test.Test_Config +.SH SYNOPSIS +.br +.PP +.PP +Inherits \fBpyShelf\&.src\&.backend\&.lib\&.config\&.Config\fP\&. +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "def \fB__init__\fP (self)" +.br +.ti -1c +.RI "def \fBopen_file\fP (self, root='config\&.json')" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBbook_path\fP" +.br +.ti -1c +.RI "\fBTITLE\fP" +.br +.ti -1c +.RI "\fBVERSION\fP" +.br +.ti -1c +.RI "\fBbook_shelf\fP" +.br +.ti -1c +.RI "\fBcatalogue_db\fP" +.br +.ti -1c +.RI "\fBuser\fP" +.br +.ti -1c +.RI "\fBpassword\fP" +.br +.ti -1c +.RI "\fBdb_host\fP" +.br +.ti -1c +.RI "\fBdb_port\fP" +.br +.ti -1c +.RI "\fBfile_array\fP" +.br +.ti -1c +.RI "\fBroot\fP" +.br +.ti -1c +.RI "\fBauto_scan\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +.SH "Member Function Documentation" +.PP +.SS "def pyShelf\&.src\&.backend\&.tests\&.library_test\&.Test_Config\&.open_file ( self, _cp = \fC'config\&.json'\fP)" + +.PP +.nf +Opens config.json and reads in configuration options + +.fi +.PP + +.PP +Reimplemented from \fBpyShelf\&.src\&.backend\&.lib\&.config\&.Config\fP\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for pyShelf Open Source Ebook Server from the source code\&. diff --git a/docs/warn.log b/docs/warn.log old mode 100755 new mode 100644 index 9ceb12d..30ea500 --- a/docs/warn.log +++ b/docs/warn.log @@ -1,2 +1,106 @@ -warning: source app is not a readable file or directory... skipping. -error: Cannot find directory app/. Check the value of the INPUT tag in the configuration file. +/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:19: warning: Compound pyShelf::src::backend::tests::library_test::Test_Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:28: warning: Compound pyShelf::src::backend::tests::library_test::TestCatalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/tests/config_test.py:6: warning: Compound pyShelf::src::backend::tests::config_test::TestConfig is not documented. +/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:8: warning: Compound pyShelf::src::backend::tests::library_test::Test_Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/api_hooks.py:12: warning: Member __init__(self) (function) of class pyShelf::src::backend::lib::api_hooks::DuckDuckGo is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/api_hooks.py:13: warning: Member url (variable) of class pyShelf::src::backend::lib::api_hooks::DuckDuckGo is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/api_hooks.py:15: warning: return type of member pyShelf.src.backend.lib.api_hooks.DuckDuckGo.image_result is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:20: warning: Member book_path (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:21: warning: Member TITLE (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:22: warning: Member VERSION (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:24: warning: Member book_shelf (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:27: warning: Member catalogue_db (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:28: warning: Member user (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:29: warning: Member password (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:30: warning: Member db_host (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:31: warning: Member db_port (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:32: warning: Member file_array (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:36: warning: Member root (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:37: warning: Member auto_scan (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:39: warning: return type of member pyShelf.src.backend.lib.config.Config.open_file is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:22: warning: Member __init__(self, config) (function) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:23: warning: Member file_list (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:24: warning: Member opf_regx (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:25: warning: Member cover_regx (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:26: warning: Member html_regx (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:27: warning: Member root_dir (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:28: warning: Member book_folder (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:29: warning: Member book_shelf (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:31: warning: Member books (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:32: warning: Member db_pointer (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:33: warning: Member config (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:140: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.compare_shelf_current is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:115: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.extract_content is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:122: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.extract_cover_html is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:129: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.extract_cover_image is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:89: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.extract_metadata is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:52: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.filter_books is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:158: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.import_books is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:73: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.process_book is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:35: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.scan_folder is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:45: warning: Member books_per_page (variable) of class pyShelf::src::backend::lib::pyShelf::BookDisplay is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:46: warning: Member current_page (variable) of class pyShelf::src::backend::lib::pyShelf::BookDisplay is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:47: warning: Member thumbnail_size (variable) of class pyShelf::src::backend::lib::pyShelf::BookDisplay is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:48: warning: Member thumbnail_scale (variable) of class pyShelf::src::backend::lib::pyShelf::BookDisplay is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:49: warning: Member total_pages (variable) of class pyShelf::src::backend::lib::pyShelf::BookDisplay is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:51: warning: Member screen_size (variable) of class pyShelf::src::backend::lib::pyShelf::BookDisplay is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:40: warning: parameters of member pyShelf.src.backend.lib.pyShelf.BookDisplay.__init__ are not (all) documented +/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:73: warning: return type of member pyShelf.src.backend.lib.pyShelf.BookDisplay.booksPerPage is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:55: warning: return type of member pyShelf.src.backend.lib.pyShelf.BookDisplay.nextPage is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:64: warning: return type of member pyShelf.src.backend.lib.pyShelf.BookDisplay.previousPage is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:15: warning: Member __init__(self, file_array) (function) of class pyShelf::src::backend::lib::pyShelf::InitFiles is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/pyShelf.py:27: warning: return type of member pyShelf.src.backend.lib.pyShelf.InitFiles.CreateFile is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:15: warning: Member __init__(self, db_pointer, config) (function) of class pyShelf::src::backend::lib::storage::Storage is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:17: warning: Member sql (variable) of class pyShelf::src::backend::lib::storage::Storage is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:18: warning: Member user (variable) of class pyShelf::src::backend::lib::storage::Storage is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:19: warning: Member password (variable) of class pyShelf::src::backend::lib::storage::Storage is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:20: warning: Member db_host (variable) of class pyShelf::src::backend::lib::storage::Storage is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:21: warning: Member db_port (variable) of class pyShelf::src::backend::lib::storage::Storage is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:22: warning: Member db (variable) of class pyShelf::src::backend::lib::storage::Storage is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:25: warning: Member cursor (variable) of class pyShelf::src::backend::lib::storage::Storage is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:58: warning: return type of member pyShelf.src.backend.lib.storage.Storage.book_paths_list is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:81: warning: return type of member pyShelf.src.backend.lib.storage.Storage.close is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:71: warning: return type of member pyShelf.src.backend.lib.storage.Storage.commit is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:28: warning: return type of member pyShelf.src.backend.lib.storage.Storage.create_tables is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/storage.py:39: warning: return type of member pyShelf.src.backend.lib.storage.Storage.insert_book is not documented +/home/raelon/Projects/pyShelf/src/backend/tests/config_test.py:9: warning: Member test_book_dir(self) (function) of class pyShelf::src::backend::tests::config_test::TestConfig is not documented. +/home/raelon/Projects/pyShelf/src/backend/tests/config_test.py:12: warning: Member test_title(self) (function) of class pyShelf::src::backend::tests::config_test::TestConfig is not documented. +/home/raelon/Projects/pyShelf/src/backend/tests/config_test.py:15: warning: Member test_version(self) (function) of class pyShelf::src::backend::tests::config_test::TestConfig is not documented. +/home/raelon/Projects/pyShelf/src/backend/tests/config_test.py:7: warning: Member config (variable) of class pyShelf::src::backend::tests::config_test::TestConfig is not documented. +/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:20: warning: Member __init__(self) (function) of class pyShelf::src::backend::tests::library_test::Test_Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:24: warning: Member book_shelf (variable) of class pyShelf::src::backend::tests::library_test::Test_Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:23: warning: Member file_list (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:24: warning: Member opf_regx (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:25: warning: Member cover_regx (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:26: warning: Member html_regx (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:27: warning: Member root_dir (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:28: warning: Member book_folder (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:31: warning: Member books (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:32: warning: Member db_pointer (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:33: warning: Member config (variable) of class pyShelf::src::backend::lib::library::Catalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:140: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.compare_shelf_current is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:115: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.extract_content is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:122: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.extract_cover_html is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:129: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.extract_cover_image is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:89: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.extract_metadata is not documented +/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:23: warning: return type of member pyShelf.src.backend.tests.library_test.Test_Catalogue.filter_books is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:158: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.import_books is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:73: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.process_book is not documented +/home/raelon/Projects/pyShelf/src/backend/lib/library.py:35: warning: return type of member pyShelf.src.backend.lib.library.Catalogue.scan_folder is not documented +/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:9: warning: Member __init__(self) (function) of class pyShelf::src::backend::tests::library_test::Test_Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:20: warning: Member book_path (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:21: warning: Member TITLE (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:22: warning: Member VERSION (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:24: warning: Member book_shelf (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:27: warning: Member catalogue_db (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:28: warning: Member user (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:29: warning: Member password (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:30: warning: Member db_host (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:31: warning: Member db_port (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:32: warning: Member file_array (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:36: warning: Member root (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/lib/config.py:37: warning: Member auto_scan (variable) of class pyShelf::src::backend::lib::config::Config is not documented. +/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:13: warning: return type of member pyShelf.src.backend.tests.library_test.Test_Config.open_file is not documented +/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:32: warning: Member test_filter_books(self) (function) of class pyShelf::src::backend::tests::library_test::TestCatalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:29: warning: Member root (variable) of class pyShelf::src::backend::tests::library_test::TestCatalogue is not documented. +/home/raelon/Projects/pyShelf/src/backend/tests/library_test.py:30: warning: Member config (variable) of class pyShelf::src::backend::tests::library_test::TestCatalogue is not documented. diff --git a/doxygen.conf b/doxygen.conf index 740efd9..4ee4fbc 100644 --- a/doxygen.conf +++ b/doxygen.conf @@ -38,7 +38,7 @@ PROJECT_NAME = "pyShelf Open Source Ebook Server" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 0.2.0 +PROJECT_NUMBER = 0.3.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a @@ -68,7 +68,7 @@ OUTPUT_DIRECTORY = "docs/" # performance problems for the file system. # The default value is: NO. -CREATE_SUBDIRS = NO +CREATE_SUBDIRS = YES # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII @@ -829,7 +829,7 @@ WARN_LOGFILE = "docs/warn.log" # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = "app/" +INPUT = "src/backend" # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses diff --git a/pyproject.toml b/pyproject.toml index ffa6471..38d47ab 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,4 +7,4 @@ use_parentheses = true # NOTE: the known_third_party setting is managed by # seed-isort-config and should not be modified directly. # Any changes made to this setting will be overwritten. -known_third_party = ["bs4", "django", "interface", "requests"] +known_third_party = ["bs4", "django", "interface", "psycopg2", "requests"] diff --git a/requirements.txt b/requirements.txt index 761f48e..b2f93d8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,3 +14,4 @@ django toml uwsgi django-debug-toolbar +psycopg2-binary diff --git a/src/backend/lib/config.py b/src/backend/lib/config.py index 9372742..1591db6 100755 --- a/src/backend/lib/config.py +++ b/src/backend/lib/config.py @@ -12,6 +12,9 @@ class Config: _fp = "config.json" def __init__(self, root): + """ + Initialize main configuration options + """ _cp = pathlib.Path.joinpath(root, self._fp) _data = self.open_file(_cp) self.book_path = _data["BOOKPATH"] @@ -20,15 +23,23 @@ class Config: self.TITLE = self.TITLE + " ver " + self.VERSION self.book_shelf = _data["BOOKSHELF"] # self.catalogue_db = "data/catalogue.db" - self.catalogue_db = str(root) + "/" + _data["DATABASE"] + # self.catalogue_db = str(root) + "/" + _data["DATABASE"] + self.catalogue_db = _data["DATABASE"] + self.user = _data["USER"] + self.password = _data["PASSWORD"] + self.db_host = _data["DB_HOST"] + self.db_port = _data["DB_PORT"] self.file_array = [ self.book_shelf, - self.catalogue_db, + # self.catalogue_db, ] self.root = root self.auto_scan = True def open_file(self, _cp): + """ + Opens config.json and reads in configuration options + """ with open(str(_cp), "r") as read_file: data = json.load(read_file) return data diff --git a/src/backend/lib/library.py b/src/backend/lib/library.py index 449cd1e..94e7c9d 100755 --- a/src/backend/lib/library.py +++ b/src/backend/lib/library.py @@ -15,9 +15,9 @@ from .storage import Storage class Catalogue: - """Decodes and stores book information""" - - """Step One: filter_books""" + """ + Decodes book metadata for storage + """ def __init__(self, config): self.file_list = [] @@ -30,8 +30,12 @@ class Catalogue: self._book_list_expanded = None self.books = None self.db_pointer = config.catalogue_db + self.config = config def scan_folder(self, _path=None): + """ + Scan folder by _path, allows recurisive scanning + """ if _path is not None: folder = _path elif os.path.isdir(str(self.root_dir) + "/" + self.book_folder): @@ -47,11 +51,10 @@ class Catalogue: def filter_books(self): """ - Scan book folder recursively for epub files - filter_books(0) -> Catalogue.books - filter_books(1) -> self.books[] - :param ret: 0 -> create class property -> dump json - :param ret: 1 -> create & return class property + Calls scan_folder and filters out book files + Proceeds to call process_book + + :returns self._book_list_expanded: json string containing all book metadata """ self.scan_folder() regx = re.compile(r"\.epub") @@ -110,14 +113,23 @@ class Catalogue: return book_details def extract_content(self, book_zip, book): + """ + Opens epub as zip file filters then stores as list any files matching opf_regx + """ content = book_zip.open(list(filter(self.opf_regx.search, book["files"]))[0]) return content def extract_cover_html(self, book_zip, book): + """ + Opens epub as zip file filters then stores as list any files matching html_regx + """ cover = book_zip.open(list(filter(self.html_regx.search, book["files"]))[0]) return cover def extract_cover_image(self, book_zip, book): + """ + Opens epub as zip file filters then stores as list any files matching cover_regx + """ cover = book_zip.open(list(filter(self.cover_regx.search, book["files"]))[0]) try: cover = book_zip.read(cover.name) @@ -126,9 +138,12 @@ class Catalogue: return False def compare_shelf_current(self): - db = Storage(self.db_pointer) + """ + Calls storage system, gets list of books stored and compares against files on disk + """ + db = Storage(self.db_pointer, self.config) stored = db.book_paths_list() - closed = db.close() + db.close() if self.books is None: self.filter_books() on_disk, in_storage = [], [] @@ -141,8 +156,13 @@ class Catalogue: return c def 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. + """ book_list = self.compare_shelf_current() - db = Storage(self.db_pointer) + db = Storage(self.db_pointer, self.config) for book in book_list: book = self.process_book(book) extracted = self.extract_metadata(book) diff --git a/src/backend/lib/pyShelf.py b/src/backend/lib/pyShelf.py index 3e41029..d19d3e5 100755 --- a/src/backend/lib/pyShelf.py +++ b/src/backend/lib/pyShelf.py @@ -25,7 +25,9 @@ class InitFiles: print("File check complete.") def CreateFile(self, _pointer): - """Create the file""" + """ + Checks if file exists and creates it if not + """ if not os.path.isdir(os.path.split(_pointer)[0]): os.mkdir(os.path.split(_pointer)[0]) f = open(_pointer, "w+") @@ -52,6 +54,7 @@ class BookDisplay: def nextPage(self): """ + ## TODO Remove me Goto next book page :return: new current_page """ @@ -60,6 +63,7 @@ class BookDisplay: def previousPage(self): """ + ## TODO Remove me Goto previous book page :return: new current_page """ @@ -68,8 +72,8 @@ class BookDisplay: def 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 """ diff --git a/src/backend/lib/storage.py b/src/backend/lib/storage.py index f652865..b681a10 100755 --- a/src/backend/lib/storage.py +++ b/src/backend/lib/storage.py @@ -1,8 +1,9 @@ #!/usr/bin/python import sqlite3 -import sys -# sys.path.insert(1, '../') +import psycopg2 +from psycopg2 import Error + from .config import Config # db_pointer = Config().catalogue_db @@ -11,25 +12,19 @@ from .config import Config class Storage: """Contains all methods for system storage""" - def __init__(self, db_pointer): - # Optionaly pass db_file to specify another db or for testing - if db_pointer is None: - db_pointer = Config().catalogue_db - self.db_file = db_pointer - self.database() + def __init__(self, db_pointer, config): + # self.db_file = db_pointer + self.sql = config.catalogue_db + self.user = config.user + self.password = config.password + self.db_host = config.db_host + self.db_port = config.db_port + self.db = psycopg2.connect( + database=self.sql, user=self.user, password=self.password, host=self.db_host + ) + self.cursor = self.db.cursor() # self.create_tables() - def database(self): - """Create database cursor""" - try: - self.db = sqlite3.connect(self.db_file) - self.cursor = self.db.cursor() - return True - except Exception as e: - print(self.db_file) - print(e) - return False - def create_tables(self): """Create table structure""" q_check = "SELECT * FROM books" @@ -38,7 +33,7 @@ class Storage: file_name text)""" try: self.cursor.execute(q_check) - except sqlite3.OperationalError as e: + except Exception as e: self.cursor.execute(q_create) def insert_book(self, book): @@ -46,35 +41,37 @@ class Storage: Insert book in database :returns: True if succeeds False if not """ - q_x = """SELECT title FROM books WHERE EXISTS(SELECT * from books WHERE `title` = ?)""" - q = """INSERT INTO books (title, author, cover, progress, file_name, pages) values (?, ?, ?, 0, ?, 0)""" + q = "INSERT INTO books (title, author, cover, progress, file_name, pages) values (%s, %s, %s, 0, %s, 0);" try: try: cover_image = book[2].data except: cover_image = book[2] - x = self.cursor.execute(q_x, (book[0],)) - try: - len(x.fetchone()) > 0 - except Exception: - if not book[2]: # If cover image is missing unset entry - cover_image = None - self.cursor.execute(q, (book[0], book[1], cover_image, book[3])) + if not book[2]: # If cover image is missing unset entry + cover_image = None + self.cursor.execute(q, (book[0], book[1], cover_image, book[3])) return True except Exception as e: print(e) return False def book_paths_list(self): - q = """SELECT file_name FROM books""" - x = self.cursor.execute(q) + """ + Get file paths from database for comparison to system files + """ + q = "SELECT file_name FROM books;" + self.cursor.execute(q) try: - x = x.fetchall() - except Exception: + x = self.cursor.fetchall() + except psycopg2.Error as e: + print(e) x = [] return x def commit(self): + """ + Commit database transactions + """ try: self.db.commit() return True @@ -82,5 +79,8 @@ class Storage: return e def close(self): + """ + Close database connection + """ self.db.close() return True diff --git a/src/backend/pyShelf_ScanLibrary.py b/src/backend/pyShelf_ScanLibrary.py index 656626e..904ee3a 100755 --- a/src/backend/pyShelf_ScanLibrary.py +++ b/src/backend/pyShelf_ScanLibrary.py @@ -11,6 +11,10 @@ sys.path.append(os.path.abspath(".")) def execute_scan(root): + """ + Main scan execution + :param root: Project root. Required to properly execute program. Sends to configuration. + """ _t1 = time.time() config = Config(root) # Get configuration settings InitFiles(config.file_array) # Initialize file system diff --git a/src/frontend/settings.py b/src/frontend/settings.py index 8747a60..397f10e 100755 --- a/src/frontend/settings.py +++ b/src/frontend/settings.py @@ -85,8 +85,11 @@ WSGI_APPLICATION = "frontend.wsgi.application" DATABASES = { "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": os.path.join(BASE_DIR, "db.sqlite3"), + "ENGINE": "django.db.backends.postgresql", + # "ENGINE": "django.db.backends.sqlite3", + "NAME": "pyshelf", + "PASSWORD": "", + # "NAME": os.path.join(BASE_DIR, "db.sqlite3"), } } diff --git a/src/frontend/urls.py b/src/frontend/urls.py index 4d47ec2..5852873 100755 --- a/src/frontend/urls.py +++ b/src/frontend/urls.py @@ -24,6 +24,9 @@ urlpatterns = [ path("download/", views.download, name="download"), path("prev_page/", views.prev_page, name="prev_page"), path("next_page/", views.next_page, name="next_page"), + path("search/", views.search, name="search"), + path("search/", views.search, name="search"), + path("search//<_set>", views.search, name="search"), ] if settings.DEBUG: import debug_toolbar diff --git a/src/interface/migrations/0001_initial.py b/src/interface/migrations/0001_initial.py index f9155d6..ab512f0 100644 --- a/src/interface/migrations/0001_initial.py +++ b/src/interface/migrations/0001_initial.py @@ -7,24 +7,29 @@ class Migration(migrations.Migration): initial = True - dependencies = [ - ] + dependencies = [] operations = [ migrations.CreateModel( - name='Books', + name="Books", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(max_length=255)), - ('author', models.CharField(max_length=255, null=True)), - ('categories', models.CharField(max_length=255, null=True)), - ('cover', models.BinaryField(editable=True, null=True)), - ('pages', models.IntegerField(null=True)), - ('progress', models.IntegerField(null=True)), - ('file_name', models.CharField(max_length=255)), + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("title", models.CharField(max_length=255)), + ("author", models.CharField(max_length=255, null=True)), + ("categories", models.CharField(max_length=255, null=True)), + ("cover", models.BinaryField(editable=True, null=True)), + ("pages", models.IntegerField(null=True)), + ("progress", models.IntegerField(null=True)), + ("file_name", models.CharField(max_length=255)), ], - options={ - 'db_table': 'books', - }, + options={"db_table": "books",}, ), ] diff --git a/src/interface/models.py b/src/interface/models.py index 3e58a4b..929eed2 100755 --- a/src/interface/models.py +++ b/src/interface/models.py @@ -35,7 +35,10 @@ class Books(models.Model): return reverse("model-detail-view", args=[str(self.id)]) def generic_search(self, query): - results = Books.objects.annotate( - search=SearchVector("author", "title", "file_name") - ).filter(str(query)) + try: + results = Books.objects.annotate( + search=SearchVector("author", "title", "file_name"), + ).filter(search=query) + except Exception as e: + raise return results diff --git a/src/interface/static/css/main.css b/src/interface/static/css/main.css index 07cdfc2..3c58dff 100755 --- a/src/interface/static/css/main.css +++ b/src/interface/static/css/main.css @@ -3,14 +3,14 @@ body{ padding: 0px; background-color: #DCDCDD; color: #fff; - overflow: hidden; + overflow-x: hidden; } #app{ display: grid; grid-template-areas: "app_header" "app_body" "app_footer"; - grid-template-rows: auto 84vh auto; + grid-template-rows: auto auto auto; max-height: 100%; } .clear{ @@ -74,14 +74,39 @@ body{ grid-template-rows: auto; grid-template-areas: "shelf"; justify-items: center; - overflow-y: scroll; background-color: dimgray; } .app_footer{ grid-area: app_footer; + display: grid; + grid-template-areas: "python_badge gplv3_badge contact"; + grid-template-columns: 1fr 1fr 8fr; + justify-content: space-between; min-width: 100%; background-color: #2b2b2b; margin: 0px; + font-family: Audiowide, cursive; + font-size: 15px; +} +.web_footer_link{ + text-decoration: none; + color: #a5a3a3; +} +.copyright{ + grid-area: gplv3_badge; + display: grid; + align-content: center; + font-family: Audiowide, cursive; + font-size: 9px; + justify-self: left; +} +.footer_contact{ + grid-area: contact; + display: inline-grid; + align-content: center; + justify-items: right; + font-size: 12px; + } .nav_top{ grid-area: nav_top; @@ -115,6 +140,10 @@ justify-content: right; } .button{ +} +.discord-button{ + max-width: 78px; + max-height: 26px; } .nav_button{ background-color:darkgray; @@ -132,6 +161,11 @@ justify-content: right; } .search{ +} +.search_details{ + display: flex; + justify-content: center; + margin: 0px 0px 5px 0px; } .shelf{ grid-area: shelf; @@ -140,18 +174,21 @@ justify-content: right; list-style-type: none; } .shelf_contents{ - display: flex; - flex-direction: column; - flex: 1; } .right_col{ grid-area: right_col } .python_logo{ + grid-area: python_badge; + display: grid; + align-content: center; } +p{ + margin: 0px; +} #python_logo{ - height: 50px; + height: 37px; width: 91px; } #book_shelf{ @@ -162,17 +199,19 @@ justify-content: right; font-size: 25px; padding: 0; margin: 0px; + min-width: 99vw; } .shelf_item{ + display: grid; background-color: burlywood; - margin: 0 10px 10px 0; + margin: 0 10px 10px 10px; max-width: 23vw; max-height: 75vh; text-align: center; } .book_thumb{ width: 23vw; - height: 75vh; + height: 50vh; } a.book_link{ text-decoration: none; diff --git a/src/interface/static/img/discord_logo_color.png b/src/interface/static/img/discord_logo_color.png new file mode 100644 index 0000000..5e2872e Binary files /dev/null and b/src/interface/static/img/discord_logo_color.png differ diff --git a/src/interface/static/img/gplv3-or-later.png b/src/interface/static/img/gplv3-or-later.png new file mode 100644 index 0000000..fe5eb73 Binary files /dev/null and b/src/interface/static/img/gplv3-or-later.png differ diff --git a/src/interface/static/img/pyShelf_frontend_0_1_0.png b/src/interface/static/img/pyShelf_frontend_0_1_0.png index 9fd1ddc..9a11246 100644 Binary files a/src/interface/static/img/pyShelf_frontend_0_1_0.png and b/src/interface/static/img/pyShelf_frontend_0_1_0.png differ diff --git a/src/interface/static/img/pyShelf_frontend_0_1_0_thumb.png b/src/interface/static/img/pyShelf_frontend_0_1_0_thumb.png index 492329c..1ab86de 100644 Binary files a/src/interface/static/img/pyShelf_frontend_0_1_0_thumb.png and b/src/interface/static/img/pyShelf_frontend_0_1_0_thumb.png differ diff --git a/src/interface/static/js/pyshelf_ux.js b/src/interface/static/js/pyshelf_ux.js index e69de29..fcadd24 100644 --- a/src/interface/static/js/pyshelf_ux.js +++ b/src/interface/static/js/pyshelf_ux.js @@ -0,0 +1,15 @@ +$(document).ready(function(){ + $(".search_submit").click(function(){ + var query = $('.nav_search').val(); + console.log(query); + window.location.href = '/search/'+query; + }) + $('.nav_search').on('keypress', function (e) { + if(e.which === 13){ + $(this).attr("disabled", "disabled"); + var query = $('.nav_search').val(); + window.location.href = '/search/'+query; + $(this).removeAttr("disabled"); + } + }); +}) diff --git a/src/interface/templates/index.html b/src/interface/templates/index.html index be55ec3..6935f17 100755 --- a/src/interface/templates/index.html +++ b/src/interface/templates/index.html @@ -18,12 +18,15 @@
-

pyShelf

+

pyShelf 0.3.0

-

""An elegant tool... for a more civilized age."

+

"An elegant tool... for a more civilized age."

+ + + Fork @@ -38,7 +41,7 @@
diff --git a/src/interface/templates/search.html b/src/interface/templates/search.html new file mode 100644 index 0000000..8b56ff8 --- /dev/null +++ b/src/interface/templates/search.html @@ -0,0 +1,77 @@ +{% load filters %} + + + + + + + +pyShelf E-Book Server Search Results + + + + + + + + +
+
+
+

pyShelf 0.3.0

+
+
+

"An elegant tool... for a more civilized age."

+
+
+ + + + + Fork + +Issue + +
+ + + + +
+
+
+
+ Your search for {{ Query }} returned {{ len_results }} results +
+
+
    + {% for book in Books %} +
  • {{ book.title }}
  • + {% endfor %} +
+
+
+
+ +
+ + diff --git a/src/interface/views.py b/src/interface/views.py index b5430a8..57d299d 100755 --- a/src/interface/views.py +++ b/src/interface/views.py @@ -11,6 +11,9 @@ from .models import Books def index(request): + """ + Return template index + """ _set = 1 return render( request, "index.html", {"Books": book_set(20, _set), "Set": str(_set)} @@ -18,6 +21,9 @@ def index(request): def next_page(request, bookset): + """ + Goto next page in bookset + """ try: _set = int(bookset) + 1 except Exception: @@ -28,6 +34,9 @@ def next_page(request, bookset): def prev_page(request, bookset): + """ + Goto previous page in bookset + """ _set = int(bookset) if _set <= 1: _set = 1 @@ -41,7 +50,33 @@ def prev_page(request, bookset): ) +def search(request, query=None, _set=1, _limit=None): + """ + Call generic search and return rendered results + """ + _set = int(_set) + if query is None: + return render(request, "index.html", {"Books": None}) + if _limit is None: + _limit = 20 ## TODO set to user defaults + if _set < 1: + _set = 1 + _set_max = int(_set) * _limit + _set_min = _set_max - _limit + search = Books().generic_search(query) + search_len = search.count() + _r = search[_set_min:_set_max] + return render( + request, + "search.html", + {"Books": _r, "Query": query, "Set": _set, "len_results": search_len}, + ) + + def book_set(_limit=None, _set=1): + """ + Get books results by set # + """ if _limit is None: _limit = 20 # TODO default from user choice _set_max = int(_set) * _limit @@ -72,6 +107,9 @@ def book_set_as_dict(_limit=None, _set=1): def download(request, pk): + """ + Download book by primary key + """ _book = Books.objects.all().filter(pk=pk)[0] _fn = hr_name(_book) response = HttpResponse( @@ -82,4 +120,7 @@ def download(request, pk): def hr_name(book): + """ + Nicer file names + """ return "{0}.{1}".format(slugify(book.title), book.file_name.split(".")[1]) diff --git a/tags b/tags deleted file mode 100644 index 0426fe8..0000000 --- a/tags +++ /dev/null @@ -1,3803 +0,0 @@ -!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ -!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ -!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/ -!_TAG_PROGRAM_AUTHOR Universal Ctags Team // -!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/ -!_TAG_PROGRAM_URL https://ctags.io/ /official site/ -!_TAG_PROGRAM_VERSION 0.0.0 /3fdf28bc/ -#app app/static/css/main.css /^#app{$/;" i -#doc-content docs/html/doxygen.css /^ #doc-content$/;" i -#guide docs/html/HTML/style.css /^#guide {$/;" i -#guide a docs/html/HTML/style.css /^#guide a {$/;" s -#guide ul docs/html/HTML/style.css /^#guide ul {$/;" s -#guide ul li docs/html/HTML/style.css /^#guide ul li {$/;" s -#guide ul li.standout span docs/html/HTML/style.css /^#guide ul li.standout span {$/;" s -#main-nav ul docs/html/doxygen.css /^#main-nav ul {$/;" s -#nav-path docs/html/doxygen.css /^ #nav-path { display: none; }$/;" i -#powerTip docs/html/doxygen.css /^#powerTip {$/;" i -#powerTip div docs/html/doxygen.css /^#powerTip div {$/;" s -#powerTip div.ttdeci docs/html/doxygen.css /^#powerTip div.ttdeci {$/;" c -#powerTip div.ttdoc docs/html/doxygen.css /^#powerTip div.ttdoc {$/;" c -#powerTip div.ttname docs/html/doxygen.css /^#powerTip div.ttname {$/;" c -#powerTip div.ttname a docs/html/doxygen.css /^#powerTip div.ttname a {$/;" s -#powerTip.e:after docs/html/doxygen.css /^#powerTip.e:after {$/;" c -#powerTip.e:after docs/html/doxygen.css /^#powerTip.e:after, #powerTip.e:before,$/;" c -#powerTip.e:after docs/html/doxygen.css /^#powerTip.e:after, #powerTip.e:before {$/;" c -#powerTip.e:after docs/html/doxygen.css /^#powerTip.w:after, #powerTip.e:after,$/;" c -#powerTip.e:before docs/html/doxygen.css /^#powerTip.e:after, #powerTip.e:before,$/;" c -#powerTip.e:before docs/html/doxygen.css /^#powerTip.e:after, #powerTip.e:before {$/;" c -#powerTip.e:before docs/html/doxygen.css /^#powerTip.e:before {$/;" c -#powerTip.e:before docs/html/doxygen.css /^#powerTip.w:before, #powerTip.e:before,$/;" c -#powerTip.n:after docs/html/doxygen.css /^#powerTip.n:after, #powerTip.n:before,$/;" c -#powerTip.n:after docs/html/doxygen.css /^#powerTip.n:after, #powerTip.s:after,$/;" c -#powerTip.n:after docs/html/doxygen.css /^#powerTip.n:after, #powerTip.n:before {$/;" c -#powerTip.n:after docs/html/doxygen.css /^#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {$/;" c -#powerTip.n:before docs/html/doxygen.css /^#powerTip.n:after, #powerTip.n:before,$/;" c -#powerTip.n:before docs/html/doxygen.css /^#powerTip.n:after, #powerTip.n:before {$/;" c -#powerTip.n:before docs/html/doxygen.css /^#powerTip.n:before {$/;" c -#powerTip.n:before docs/html/doxygen.css /^#powerTip.n:before, #powerTip.s:before,$/;" c -#powerTip.ne:after docs/html/doxygen.css /^#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {$/;" c -#powerTip.ne:after docs/html/doxygen.css /^#powerTip.ne:after, #powerTip.ne:before {$/;" c -#powerTip.ne:after docs/html/doxygen.css /^#powerTip.ne:after, #powerTip.ne:before,$/;" c -#powerTip.ne:after docs/html/doxygen.css /^#powerTip.nw:after, #powerTip.ne:after,$/;" c -#powerTip.ne:before docs/html/doxygen.css /^#powerTip.ne:after, #powerTip.ne:before {$/;" c -#powerTip.ne:before docs/html/doxygen.css /^#powerTip.ne:after, #powerTip.ne:before,$/;" c -#powerTip.ne:before docs/html/doxygen.css /^#powerTip.nw:before, #powerTip.ne:before,$/;" c -#powerTip.nw:after docs/html/doxygen.css /^#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {$/;" c -#powerTip.nw:after docs/html/doxygen.css /^#powerTip.nw:after, #powerTip.ne:after,$/;" c -#powerTip.nw:after docs/html/doxygen.css /^#powerTip.nw:after, #powerTip.nw:before {$/;" c -#powerTip.nw:after docs/html/doxygen.css /^#powerTip.nw:after, #powerTip.nw:before,$/;" c -#powerTip.nw:before docs/html/doxygen.css /^#powerTip.nw:after, #powerTip.nw:before {$/;" c -#powerTip.nw:before docs/html/doxygen.css /^#powerTip.nw:after, #powerTip.nw:before,$/;" c -#powerTip.nw:before docs/html/doxygen.css /^#powerTip.nw:before, #powerTip.ne:before,$/;" c -#powerTip.s:after docs/html/doxygen.css /^#powerTip.n:after, #powerTip.s:after,$/;" c -#powerTip.s:after docs/html/doxygen.css /^#powerTip.s:after, #powerTip.s:before,$/;" c -#powerTip.s:after docs/html/doxygen.css /^#powerTip.s:after, #powerTip.s:before {$/;" c -#powerTip.s:after docs/html/doxygen.css /^#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {$/;" c -#powerTip.s:before docs/html/doxygen.css /^#powerTip.n:before, #powerTip.s:before,$/;" c -#powerTip.s:before docs/html/doxygen.css /^#powerTip.s:after, #powerTip.s:before,$/;" c -#powerTip.s:before docs/html/doxygen.css /^#powerTip.s:after, #powerTip.s:before {$/;" c -#powerTip.s:before docs/html/doxygen.css /^#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {$/;" c -#powerTip.se:after docs/html/doxygen.css /^#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {$/;" c -#powerTip.se:after docs/html/doxygen.css /^#powerTip.se:after, #powerTip.se:before {$/;" c -#powerTip.se:after docs/html/doxygen.css /^#powerTip.se:after, #powerTip.se:before,$/;" c -#powerTip.se:after docs/html/doxygen.css /^#powerTip.sw:after, #powerTip.se:after {$/;" c -#powerTip.se:before docs/html/doxygen.css /^#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {$/;" c -#powerTip.se:before docs/html/doxygen.css /^#powerTip.se:after, #powerTip.se:before {$/;" c -#powerTip.se:before docs/html/doxygen.css /^#powerTip.se:after, #powerTip.se:before,$/;" c -#powerTip.se:before docs/html/doxygen.css /^#powerTip.sw:before, #powerTip.se:before {$/;" c -#powerTip.sw:after docs/html/doxygen.css /^#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {$/;" c -#powerTip.sw:after docs/html/doxygen.css /^#powerTip.sw:after, #powerTip.se:after {$/;" c -#powerTip.sw:after docs/html/doxygen.css /^#powerTip.sw:after, #powerTip.sw:before {$/;" c -#powerTip.sw:before docs/html/doxygen.css /^#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {$/;" c -#powerTip.sw:before docs/html/doxygen.css /^#powerTip.sw:after, #powerTip.sw:before {$/;" c -#powerTip.sw:before docs/html/doxygen.css /^#powerTip.sw:before, #powerTip.se:before {$/;" c -#powerTip.w:after docs/html/doxygen.css /^#powerTip.w:after {$/;" c -#powerTip.w:after docs/html/doxygen.css /^#powerTip.w:after, #powerTip.e:after,$/;" c -#powerTip.w:after docs/html/doxygen.css /^#powerTip.w:after, #powerTip.w:before,$/;" c -#powerTip.w:after docs/html/doxygen.css /^#powerTip.w:after, #powerTip.w:before {$/;" c -#powerTip.w:before docs/html/doxygen.css /^#powerTip.w:after, #powerTip.w:before,$/;" c -#powerTip.w:before docs/html/doxygen.css /^#powerTip.w:after, #powerTip.w:before {$/;" c -#powerTip.w:before docs/html/doxygen.css /^#powerTip.w:before {$/;" c -#powerTip.w:before docs/html/doxygen.css /^#powerTip.w:before, #powerTip.e:before,$/;" c -#powerTip:after docs/html/doxygen.css /^#powerTip:before, #powerTip:after {$/;" i -#powerTip:before docs/html/doxygen.css /^#powerTip:before, #powerTip:after {$/;" i -#projectalign docs/html/doxygen.css /^#projectalign$/;" i -#projectbrief docs/html/doxygen.css /^#projectbrief$/;" i -#projectlogo docs/html/doxygen.css /^#projectlogo$/;" i -#projectlogo img docs/html/doxygen.css /^#projectlogo img$/;" s -#projectname docs/html/doxygen.css /^#projectname$/;" i -#projectnumber docs/html/doxygen.css /^#projectnumber$/;" i -#python_logo app/static/css/main.css /^#python_logo{$/;" i -#side-nav docs/html/doxygen.css /^ #side-nav { display: none; }$/;" i -#side-nav ul docs/html/doxygen.css /^#side-nav ul {$/;" s -#titlearea docs/html/doxygen.css /^#titlearea$/;" i -#top docs/html/doxygen.css /^ #top { display: none; }$/;" i -◆ CreateFile() docs/html/classapp_1_1lib_1_1pyShelf_1_1InitFiles.html /^

◆/;" i -◆ __init__() docs/html/classapp_1_1lib_1_1display_1_1Frontend.html /^

◆/;" i -◆ __init__() docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay.html /^

◆/;" i -◆ app_Headers() docs/html/classapp_1_1lib_1_1display_1_1Frontend.html /^

◆/;" i -◆ app_body() docs/html/classapp_1_1lib_1_1display_1_1Frontend.html /^

◆/;" i -◆ app_footer() docs/html/classapp_1_1lib_1_1display_1_1Frontend.html /^

◆/;" i -◆ booksPerPage() docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay.html /^

◆/;" i -◆ close() docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer.html /^

◆/;" i -◆ close_prompt() docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer.html /^

◆/;" i -◆ compile() docs/html/classapp_1_1lib_1_1display_1_1Frontend.html /^

◆/;" i -◆ create_tables() docs/html/classapp_1_1lib_1_1storage_1_1Storage.html /^

◆/;" i -◆ database() docs/html/classapp_1_1lib_1_1storage_1_1Storage.html /^

◆/;" i -◆ extract_metadata() docs/html/classapp_1_1lib_1_1library_1_1Catalogue.html /^

◆/;" i -◆ filter_books() docs/html/classapp_1_1lib_1_1library_1_1Catalogue.html /^

◆/;" i -◆ html_Headers() docs/html/classapp_1_1lib_1_1display_1_1Frontend.html /^

◆/;" i -◆ image_result() docs/html/classapp_1_1lib_1_1api__hooks_1_1DuckDuckGo.html /^

◆/;" i -◆ insert_book() docs/html/classapp_1_1lib_1_1storage_1_1Storage.html /^

◆/;" i -◆ nextPage() docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay.html /^

◆/;" i -◆ previousPage() docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay.html /^

◆/;" i -◆ process_book() docs/html/classapp_1_1lib_1_1library_1_1Catalogue.html /^

◆/;" i -◆ run() docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer.html /^

◆/;" i -◆ scan_book() docs/html/classapp_1_1lib_1_1library_1_1Catalogue.html /^

◆/;" i -.DocNodeLTR docs/html/doxygen.css /^.DocNodeLTR {$/;" c -.DocNodeRTL docs/html/doxygen.css /^.DocNodeRTL {$/;" c -.PageDocRTL-title div.headertitle docs/html/doxygen.css /^.PageDocRTL-title div.headertitle {$/;" c -.PageDocRTL-title div.toc docs/html/doxygen.css /^.PageDocRTL-title div.toc {$/;" c -.PageDocRTL-title div.toc li docs/html/doxygen.css /^.PageDocRTL-title div.toc li {$/;" s -.PageDocRTL-title div.toc li.level1 docs/html/doxygen.css /^.PageDocRTL-title div.toc li.level1 {$/;" c -.PageDocRTL-title div.toc li.level2 docs/html/doxygen.css /^.PageDocRTL-title div.toc li.level2 {$/;" c -.PageDocRTL-title div.toc li.level3 docs/html/doxygen.css /^.PageDocRTL-title div.toc li.level3 {$/;" c -.PageDocRTL-title div.toc li.level4 docs/html/doxygen.css /^.PageDocRTL-title div.toc li.level4 {$/;" c -.app_body app/static/css/main.css /^.app_body{$/;" c -.app_footer app/static/css/main.css /^.app_footer{$/;" c -.app_hdr app/static/css/main.css /^.app_hdr{$/;" c -.app_header app/static/css/main.css /^.app_header{$/;" c -.app_subhdr app/static/css/main.css /^.app_subhdr{$/;" c -.arrow docs/html/doxygen.css /^.arrow {$/;" c -.caption docs/html/doxygen.css /^.caption$/;" c -.caution docs/html/HTML/style.css /^.caution { text-align: center; margin: 1em 40px; }$/;" c -.contents a.qindexHL:visited docs/html/doxygen.css /^.contents a.qindexHL:visited {$/;" c -.contents a:visited docs/html/doxygen.css /^.contents a:visited {$/;" s -.curline:hover docs/html/HTML/style.css /^.curline:hover { background-color:lightgray; }$/;" c -.cvs docs/html/HTML/style.css /^.cvs { font-size: 90%; }$/;" c -.diagraph docs/html/doxygen.css /^.diagraph$/;" c -.directory .levels docs/html/doxygen.css /^.directory .levels {$/;" c -.directory .levels span docs/html/doxygen.css /^.directory .levels span {$/;" s -.directory img docs/html/doxygen.css /^.directory img {$/;" s -.directory table docs/html/doxygen.css /^.directory table {$/;" s -.directory td docs/html/doxygen.css /^.directory td {$/;" s -.directory td.desc docs/html/doxygen.css /^.directory td.desc {$/;" c -.directory td.entry docs/html/doxygen.css /^.directory td.entry {$/;" c -.directory td.entry a docs/html/doxygen.css /^.directory td.entry a {$/;" s -.directory td.entry a img docs/html/doxygen.css /^.directory td.entry a img {$/;" s -.directory tr.even docs/html/doxygen.css /^.directory tr.even {$/;" c -.dirtab docs/html/doxygen.css /^.dirtab {$/;" c -.dotgraph docs/html/doxygen.css /^.dotgraph$/;" c -.error docs/html/HTML/style.css /^.error { color: red; }$/;" c -.exception docs/html/doxygen.css /^.params, .retval, .exception, .tparams {$/;" c -.exception .paramname docs/html/doxygen.css /^.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {$/;" c -.fieldtable td docs/html/doxygen.css /^.fieldtable td, .fieldtable th {$/;" s -.fieldtable td.fielddoc docs/html/doxygen.css /^.fieldtable td.fielddoc {$/;" c -.fieldtable td.fielddoc p:first-child docs/html/doxygen.css /^.fieldtable td.fielddoc p:first-child {$/;" s -.fieldtable td.fielddoc p:last-child docs/html/doxygen.css /^.fieldtable td.fielddoc p:last-child {$/;" s -.fieldtable td.fieldname docs/html/doxygen.css /^.fieldtable td.fieldname {$/;" c -.fieldtable td.fieldname docs/html/doxygen.css /^.fieldtable td.fieldtype, .fieldtable td.fieldname {$/;" c -.fieldtable td.fieldtype docs/html/doxygen.css /^.fieldtable td.fieldtype, .fieldtable td.fieldname {$/;" c -.fieldtable th docs/html/doxygen.css /^.fieldtable td, .fieldtable th {$/;" s -.fieldtable th docs/html/doxygen.css /^.fieldtable th {$/;" s -.fieldtable tr docs/html/doxygen.css /^.memberdecls td, .fieldtable tr {$/;" s -.fieldtable tr.glow docs/html/doxygen.css /^.memberdecls td.glow, .fieldtable tr.glow {$/;" c -.fieldtable tr:last-child td docs/html/doxygen.css /^.fieldtable tr:last-child td {$/;" s -.fragment docs/html/doxygen.css /^.fragment {$/;" c -.icon docs/html/doxygen.css /^.icon {$/;" c -.icona docs/html/doxygen.css /^.icona {$/;" c -.icondoc docs/html/doxygen.css /^.icondoc {$/;" c -.iconfclosed docs/html/doxygen.css /^.iconfclosed {$/;" c -.iconfopen docs/html/doxygen.css /^.iconfopen {$/;" c -.image docs/html/doxygen.css /^.image$/;" c -.inherit docs/html/doxygen.css /^.inherit {$/;" c -.inherit_header docs/html/doxygen.css /^.inherit_header {$/;" c -.inherit_header td docs/html/doxygen.css /^.inherit_header td {$/;" s -.left_col app/static/css/main.css /^.left_col{$/;" c -.lineno docs/html/doxygen.css /^.lineno {$/;" c -.loading docs/html/HTML/style.css /^.loading { color: white; background-color: red; }$/;" c -.mdescLeft docs/html/doxygen.css /^.mdescLeft, .mdescRight {$/;" c -.mdescLeft docs/html/doxygen.css /^.mdescLeft, .mdescRight,$/;" c -.mdescRight docs/html/doxygen.css /^.mdescLeft, .mdescRight {$/;" c -.mdescRight docs/html/doxygen.css /^.mdescLeft, .mdescRight,$/;" c -.memItemLeft docs/html/doxygen.css /^.memItemLeft, .memItemRight,$/;" c -.memItemLeft docs/html/doxygen.css /^.memItemLeft, .memTemplItemLeft {$/;" c -.memItemRight docs/html/doxygen.css /^.memItemLeft, .memItemRight,$/;" c -.memItemRight docs/html/doxygen.css /^.memItemRight {$/;" c -.memSeparator docs/html/doxygen.css /^.memSeparator {$/;" c -.memTemplItemLeft docs/html/doxygen.css /^.memItemLeft, .memTemplItemLeft {$/;" c -.memTemplItemLeft docs/html/doxygen.css /^.memTemplItemLeft, .memTemplItemRight, .memTemplParams {$/;" c -.memTemplItemRight docs/html/doxygen.css /^.memTemplItemLeft, .memTemplItemRight, .memTemplParams {$/;" c -.memTemplParams docs/html/doxygen.css /^.memTemplItemLeft, .memTemplItemRight, .memTemplParams {$/;" c -.memTemplParams docs/html/doxygen.css /^.memTemplParams {$/;" c -.memberdecls td docs/html/doxygen.css /^.memberdecls td, .fieldtable tr {$/;" s -.memberdecls td.glow docs/html/doxygen.css /^.memberdecls td.glow, .fieldtable tr.glow {$/;" c -.memdoc docs/html/doxygen.css /^.memdoc, dl.reflist dd {$/;" c -.memitem docs/html/doxygen.css /^ .memitem { page-break-inside: avoid; }$/;" c -.memitem docs/html/doxygen.css /^.memitem {$/;" c -.memitem.glow docs/html/doxygen.css /^.memitem.glow {$/;" c -.memname docs/html/doxygen.css /^.memname {$/;" c -.memname td docs/html/doxygen.css /^.memname td {$/;" s -.memnav docs/html/doxygen.css /^.memnav {$/;" c -.mempage docs/html/doxygen.css /^.mempage {$/;" c -.memproto docs/html/doxygen.css /^.memproto, dl.reflist dt {$/;" c -.memtemplate docs/html/doxygen.css /^.memtemplate {$/;" c -.memtitle docs/html/doxygen.css /^.memtitle {$/;" c -.mscgraph docs/html/doxygen.css /^.mscgraph$/;" c -.navpath li docs/html/doxygen.css /^.navpath li$/;" s -.navpath li.footer docs/html/doxygen.css /^.navpath li.footer$/;" c -.navpath li.navelem a docs/html/doxygen.css /^.navpath li.navelem a$/;" s -.navpath li.navelem a:hover docs/html/doxygen.css /^.navpath li.navelem a:hover$/;" s -.navpath ul docs/html/doxygen.css /^.navpath ul$/;" s -.overload docs/html/doxygen.css /^.overload {$/;" c -.paramkey docs/html/doxygen.css /^.paramkey {$/;" c -.paramname docs/html/doxygen.css /^.paramname {$/;" c -.paramname code docs/html/doxygen.css /^.paramname code {$/;" s -.paramname em docs/html/doxygen.css /^.paramname em {$/;" s -.params docs/html/doxygen.css /^.params, .retval, .exception, .tparams {$/;" c -.params .paramdir docs/html/doxygen.css /^.params .paramdir, .tparams .paramdir {$/;" c -.params .paramname docs/html/doxygen.css /^.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {$/;" c -.params .paramtype docs/html/doxygen.css /^.params .paramtype, .tparams .paramtype {$/;" c -.paramtype docs/html/doxygen.css /^.paramtype {$/;" c -.permalink docs/html/doxygen.css /^.permalink$/;" c -.plantumlgraph docs/html/doxygen.css /^.plantumlgraph$/;" c -.poweredby docs/html/HTML/style.css /^.poweredby { text-align: right; }$/;" c -.python_logo app/static/css/main.css /^.python_logo{$/;" c -.retval docs/html/doxygen.css /^.params, .retval, .exception, .tparams {$/;" c -.retval .paramname docs/html/doxygen.css /^.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {$/;" c -.right_col app/static/css/main.css /^.right_col{$/;" c -.shadow app/static/css/main.css /^.shadow{$/;" c -.shelf app/static/css/main.css /^.shelf{$/;" c -.shelf_contents app/static/css/main.css /^.shelf_contents{$/;" c -.sm docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm * docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm *:after docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm *:before docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm a.disabled docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm li docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm ul docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox a span.sub-arrow docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox a.current docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox a.disabled docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox a.highlighted span.sub-arrow:before docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox a:active docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox a:focus docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox a:hover docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul a:active docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul a:focus docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul a:hover docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul ul a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul ul a:active docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul ul a:focus docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul ul a:hover docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul ul ul a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul ul ul a:active docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul ul ul a:focus docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul ul ul a:hover docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul ul ul ul a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul ul ul ul a:active docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul ul ul ul a:focus docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul ul ul ul a:hover docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul ul ul ul ul a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul ul ul ul ul a:active docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul ul ul ul ul a:focus docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox ul ul ul ul ul a:hover docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox>li:first-child>:not(ul) a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox>li:first-child>a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>*:not(ul) a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox>li:last-child>*:not(ul) a.highlighted docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>a.highlighted docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>ul docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>ul>li:last-child>a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>ul>li:last-child>a.highlighted docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>ul>li:last-child>ul docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-rtl docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm-rtl li docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm-rtl ul docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" s -.sm:after docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm>li>h1 docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm>li>h2 docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm>li>h3 docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm>li>h4 docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm>li>h5 docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.sm>li>h6 docs/html/tabs.css /^.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padd/;" c -.summary docs/html/doxygen.css /^ .summary { display: none; }$/;" c -.tabsearch docs/html/doxygen.css /^.tabsearch {$/;" c -.title docs/html/HTML/style.css /^.title { color: #cc0000; }$/;" c -.title docs/html/doxygen.css /^.title {$/;" c -.tparams docs/html/doxygen.css /^.params, .retval, .exception, .tparams {$/;" c -.tparams .paramdir docs/html/doxygen.css /^.params .paramdir, .tparams .paramdir {$/;" c -.tparams .paramname docs/html/doxygen.css /^.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {$/;" c -.tparams .paramtype docs/html/doxygen.css /^.params .paramtype, .tparams .paramtype {$/;" c -.ttc docs/html/doxygen.css /^.ttc {$/;" c -/home/raelon/Projects/pyShelf/books/Star Wars/1 - Before the Republic/002 - Dawn of the Jedi_Into the Void.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/003 - Lost Tribe of the Sith_The Collected Stories.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/004 - The Old Republic_Revan.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/005 - The Old Republic_Deceived.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/006 - Red Harvest.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/007 - The Old Republic_Fatal Alliance.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/008 - The Old Republic_Annihilation.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/009 - Knight Errant.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/010 - Darth Bane_Path of Destruction.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/011 - Darth Bane_Rule of Two.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/012 - Darth Bane_Dynasty of Evil.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/013 - Legacy of the Jedi.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/014 - Darth Plagueis.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/015 - Jedi Apprentice_The Rising Force.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/016 - Jedi Apprentice_The Dark Rival.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/017 - Jedi Apprentice_The Hidden Past.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/018 - Jedi Apprentice_The Mark of the Crown.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/019 - Jedi Apprentice_The Defenders of the Dead.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/020 - Jedi Apprentice_The Uncertain Path.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/021 - Jedi Apprentice_The Captive Temple.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/022 - Jedi Apprentice_The Day of Reckoning.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/023 - Jedi Apprentice_The Fight for Truth.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/024 - Jedi Apprentice_The Shattered Peace.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/025 - Jedi Apprentice_Deceptions.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/026 - The Life and Legend of Obi-Wan Kenobi.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/027 - Jedi Apprentice_The Deadly Hunter.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/028 - Jedi Apprentice_The Evil Experiment.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/029 - Jedi Apprentice_The Dangerous Rescue.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/030 - Jedi Apprentice_The Ties That Bind.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/031 - Jedi Apprentice_The Death of Hope.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/032 - Jedi Apprentice_The Call to Vengeance.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/033 - Jedi Apprentice_The Only Witness.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/034 - Jedi Apprentice_The Threat Within.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/035 - Jedi Apprentice_The Followers.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/036 - Secrets of the Jedi.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/037 - The Rise and Fall of Darth Vader.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/038 - Darth Maul_Saboteur.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/039 - Cloak of Deception.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/040 - Maul_Lockdown.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/041 - Darth Maul_Shadow Hunter.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/042 - Episode I_The Phantom Menace.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/043 - Journal_Anakin Skywalker.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/044 - Journal_Darth Maul.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/045 - Journal_Queen Amidala.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/046 - Rogue Planet.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/047 - Jedi Quest_Path to Truth.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/048 - Jedi Quest_The Way of the Apprentice.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/049 - Outbound Flight.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/050 - Jedi Quest_The Trail of the Jedi.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/051 - Jedi Quest_Dangerous Games.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/052 - Jedi Quest_The Master of Disguise.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/053 - Jedi Quest_The School of Fear.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/054 - Jedi Quest_The Shadow Trap.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/055 - Jedi Quest_The Moment of Truth.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/056 - Jedi Quest_The Changing of the Guard.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/057 - Jedi Quest_The False Peace.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/058 - Jedi Quest_The Final Showdown.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/059 - The Approaching Storm.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/060 - Episode II_Attack of the Clones.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/061 - Boba Fett_The Fight to Survive.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/062 - Boba Fett_Crossfire.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/063 - Boba Fett_Maze of Deception.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/064 - The Cestus Deception.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/065 - The Hive.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/066 - Jedi Trial.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/067 - The Clone Wars.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/068 - Clone Wars Secret Missions_Breakout Squad.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/069 - Clone Wars Secret Missions_Curse of the Black Hole Pirates.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/070 - Clone Wars Secret Missions_Duel at Shattered Rock.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/071 - Clone Wars Secret Missions_Guardians of the Chiss Key.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/072 - The Clone Wars_Wild Space.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/073 - Boba Fett_Hunted.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/074 - Republic Commando_Hard Contact.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/075 - Shatterpoint.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/076 - The Clone Wars_No Prisoners.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/077 - Republic Commando_Triple Zero.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/078 - Clone Wars Gambit_Stealth.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/079 - Clone Wars Gambit_Siege.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/080 - Republic Commando_True Colors.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/081 - The Wrath of Darth Maul.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/082 - Medstar I_Battle Surgeons.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/083 - Medstar II_Jedi Healer.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/084 - Yoda Dark Rendezvous.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/085 - Boba Fett_A New Threat.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/086 - Boba Fett_Pursuit.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/087 - Episode III_Labyrinth of Evil.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/088 - Episode III_Revenge of the Sith.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/089 - Republic Commando_Order 066.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/090 - Kenobi.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/091 - Episode III_Dark Lord The Rise of Darth Vader.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/092 - Republic Commando_501st.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/093 - Coruscant Nights_Jedi Twilight.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/094 - The Last of the Jedi_The Desperate Mission.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/095 - The Last of the Jedi_Dark Warning.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/096 - The Last of the Jedi_Underworld.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/097 - The Last of the Jedi_Death on Naboo.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/098 - Coruscant Nights_Street of Shadows.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/099 - The Last of the Jedi_A Tangled Web.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/100 - The Last of the Jedi_Return of the Dark Side.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/101 - The Last of the Jedi_Secret Weapon.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/102 - The Last of the Jedi_Against the Empire.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/103 - The Last of the Jedi_Master of Deception.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/104 - The Last of the Jedi_Reckoning.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/105 - Coruscant Nights_Patterns of Force.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/106 - The Last Jedi.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/107 - A New Hope_The Life of Luke Skywalker.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/108 - Han Solo_The Paradise Snare.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/109 - Han Solo_The Hutt Gambit.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/110 - The Force Unleashed.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/111 - The Adventures of Lando Calrissian.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/112 - Death Star.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/113 - The Han Solo Adventures.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/114 - Han Solo_Rebel Dawn.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/115 - The Force Unleashed II.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/116 - Dark Forces_Soldier for the Empire.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/117 - Dark Forces_Rebel Agent.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/118 - Dark Forces_Jedi Knight.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/119 - Death Troopers.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/120 - Shadow Games.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/121 - Episode IV_A New Hope.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/122 - Tales From Mos Eisley Cantina.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/123 - Scoundrels.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/124 - Rebel Force_Target.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/125 - Rebel Force_Hostage.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/126 - Rebel Force_Renegade.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/127 - Rebel Force_Firefight.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/128 - Rebel Force_Trapped.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/129 - Allegiance.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/130 - Rebel Force_Uprising.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/131 - Eaten Alive.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/132 - City of the Dead.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/133 - Planet Plague.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/134 - The Nightmare Machine.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/135 - Ghost of the Jedi.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/136 - Army of Terror.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/137 - Choices of One.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/138 - The Brain Spiders.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/139 - The Swarm.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/140 - Spore.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/141 - The Doomsday Ship.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/142 - Clones.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/143 - The Hunger.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/144 - Honor Among Thieves.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/145 - Galaxies_The Ruins of Dantooine.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/146 - Splinter of the Mind's Eye.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/147 - Empire and Rebellion_Razor's Edge.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/148 - Episode V_The Empire Strikes Back.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/149 - Tales of the Bounty Hunters.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/150 - Shadows of the Empire.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/151 - Tales From the Empire.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/152 - Tales From Jabba's Palace.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/153 - Episode VI_Return of the Jedi.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/154 - The Bounty Hunter Wars_The Mandalorian Armor.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/155 - The Bounty Hunter Wars_Slave Ship.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/156 - The Truce at Bakura.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/157 - The Bounty Hunter Wars_Hard Merchandise.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/158 - Tales From the New Republic.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/159 - Luke Skywalker and the Shadows of Mindor.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/160 - Jedi Prince_The Glove of Darth Vader.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/161 - Jedi Prince_The Lost City of the Jedi.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/162 - Jedi Prince_Zorba the Hutt's Revenge.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/163 - Jedi Prince_Mission From Mount Yoda.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/164 - Jedi Prince_Queen of the Empire.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/165 - Jedi Prince_Prophets of the Dark Side.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/166 - Dark Forces_Rebel Agent.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/167 - Dark Forces_ Jedi Knight.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/168 - X-Wing_Rogue Squadron.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/169 - X-Wing_Wedge's Gamble.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/170 - X-Wing_The Krytos Trap.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/171 - X-Wing_The Bacta War.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/172 - X-Wing_Wraith Squadron.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/173 - X-Wing_Iron Fist.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/174 - X-Wing_Solo Command.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/175 - The Courtship of Princess Leia.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/176 - A Forest Apart.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/177 - Tatooine Ghost.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/178 - Thrawn_Heir to the Empire.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/179 - Thrawn_Dark Force Rising.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/180 - Thrawn_The Last Command.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/181 - X-Wing_Isard's Revenge.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/182 - The Jedi Academy_Jedi Search.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/183 - The Jedi Academy_Dark Apprentice.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/184 - The Jedi Academy_Champions of the Force.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/185 - I, Jedi.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/186 - Children of the Jedi.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/187 - Darksaber.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/188 - X-Wing_Starfighters of Adumar.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/189 - Planet of Twilight.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/190 - The Crystal Star.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/191 - The Black Fleet Crisis_Before the Storm.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/192 - The Black Fleet Crisis_Shield of Lies.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/193 - The Black Fleet Crisis_Tyrant's Test.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/194 - The New Rebellion.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/195 - The Corellian_Ambush at Corellia.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/196 - The Corellian_Assault at Selonia.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/197 - The Corellian_Showdown at Centerpoint.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/198 - The Hand of Thrawn_Specter of the Past.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/199 - The Hand of Thrawn_Vision of the Future.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/200 - Scourge.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/201 - Junior Jedi Knights_The Golden Globe.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/202 - Junior Jedi Knights_Lyric's World.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/203 - Junior Jedi Knights_Promises.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/204 - Junior Jedi Knights_Anakin's Quest.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/205 - Junior Jedi Knights_Vader's Fortress.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/206 - Junior Jedi Knights_Kenobi's Blade.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/207 - Fool's Bargain.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/208 - Survivor's Quest.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/209 - Young Jedi Knights_Heirs of the Force.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/210 - Young Jedi Knights_Shadow Academy.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/211 - Young Jedi Knights_The Lost Ones.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/212 - Young Jedi Knights_Lightsabers.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/213 - Young Jedi Knights_Darkest Knight.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/214 - Young Jedi Knights_Jedi Under Siege.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/215 - Young Jedi Knights_Shards of Alderaann.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/216 - Young Jedi Knights_Diversity Alliance.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/217 - Young Jedi Knights_Delusions of Grandeur.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/218 - Young Jedi Knights_Jedi Bounty.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/219 - Young Jedi Knights_The Emperor's Plague.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/220 - Young Jedi Knights_Return to Ord Mantell.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/221 - Young Jedi Knights_Trouble on Cloud City.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/222 - Young Jedi Knights_Crisis at Crystal Reef.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/223 - Boba Fett_A Practical Man.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/224 - The New Jedi Order_Vector Prime.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/225 - The New Jedi Order_Dark Tide I - Onslaught.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/226 - The New Jedi Order_Dark Tide II - Ruin.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/227 - The New Jedi Order_Agents of Chaos I - Hero's Trial.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/228 - The New Jedi Order_Agents of Chaos II - Jedi Eclipse.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/229 - The New Jedi Order_Balance Point.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/230 - The New Jedi Order_Recovery.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/231 - The New Jedi Order_Edge of Victory I - Conquest.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/232 - The New Jedi Order_Edge of Victory II - Rebirth.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/233 - The New Jedi Order_Star by Star.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/234 - The New Jedi Order_Dark Journey.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/235 - The New Jedi Order_Enemy Lines I - Rebel Dream.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/236 - The New Jedi Order_Enemy Lines II - Rebel Stand.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/237 - The New Jedi Order_Traitor.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/238 - The New Jedi Order_Destiny's Way.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/239 - The New Jedi Order_Ylesia.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/240 - The New Jedi Order_Force Heretic I - Remnant.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/241 - The New Jedi Order_Force Heretic II - Refugee.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/242 - The New Jedi Order_Force Heretic III - Reunion.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/243 - The New Jedi Order_The Final Prophecy.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/244 - The New Jedi Order_The Unifying Force.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/245 - Dark Nest_The Joiner King.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/246 - Dark Nest_The Unseen Queen.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/247 - Dark Nest_The Swarm War.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/248 - Legacy of the Force_Betrayal.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/249- Legacy of the Force_Bloodlines.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/250 - Legacy of the Force_Tempest.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/251 - Legacy of the Force_Exile.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/252 - Legacy of the Force_Sacrifice.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/253 - Legacy of the Force_Inferno.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/254 - Legacy of the Force_Fury.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/255 - Legacy of the Force_Revelation.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/256 - Legacy of the Force_Invincible.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/257 - Crosscurrent.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/258 - Riptide.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/259 - Millennium Falcon.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/260 - Fate of the Jedi_Outcast.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/261 - Fate of the Jedi_Omen.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/262 - Fate of the Jedi_Abyss.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/263 - Fate of the Jedi_Backlash.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/264 - Fate of the Jedi_Allies.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/265 - Fate of the Jedi_Vortex.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/266 - Fate of the Jedi_Conviction.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/267 - Fate of the Jedi_Ascension.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/268 - Fate of the Jedi_Apocalypse.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/269 - X-Wing_Mercy Kill.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/270 - Crucible.epub app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" o -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/1 - Before the Republic/002 - Dawn of the Jedi_Into the Void.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/003 - Lost Tribe of the Sith_The Collected Stories.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/004 - The Old Republic_Revan.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/005 - The Old Republic_Deceived.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/006 - Red Harvest.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/007 - The Old Republic_Fatal Alliance.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/008 - The Old Republic_Annihilation.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/009 - Knight Errant.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/010 - Darth Bane_Path of Destruction.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/011 - Darth Bane_Rule of Two.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/012 - Darth Bane_Dynasty of Evil.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/013 - Legacy of the Jedi.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/014 - Darth Plagueis.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/015 - Jedi Apprentice_The Rising Force.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/016 - Jedi Apprentice_The Dark Rival.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/017 - Jedi Apprentice_The Hidden Past.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/018 - Jedi Apprentice_The Mark of the Crown.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/019 - Jedi Apprentice_The Defenders of the Dead.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/020 - Jedi Apprentice_The Uncertain Path.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/021 - Jedi Apprentice_The Captive Temple.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/022 - Jedi Apprentice_The Day of Reckoning.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/023 - Jedi Apprentice_The Fight for Truth.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/024 - Jedi Apprentice_The Shattered Peace.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/025 - Jedi Apprentice_Deceptions.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/026 - The Life and Legend of Obi-Wan Kenobi.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/027 - Jedi Apprentice_The Deadly Hunter.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/028 - Jedi Apprentice_The Evil Experiment.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/029 - Jedi Apprentice_The Dangerous Rescue.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/030 - Jedi Apprentice_The Ties That Bind.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/031 - Jedi Apprentice_The Death of Hope.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/032 - Jedi Apprentice_The Call to Vengeance.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/033 - Jedi Apprentice_The Only Witness.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/034 - Jedi Apprentice_The Threat Within.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/035 - Jedi Apprentice_The Followers.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/036 - Secrets of the Jedi.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/037 - The Rise and Fall of Darth Vader.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/038 - Darth Maul_Saboteur.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/039 - Cloak of Deception.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/040 - Maul_Lockdown.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/041 - Darth Maul_Shadow Hunter.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/042 - Episode I_The Phantom Menace.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/043 - Journal_Anakin Skywalker.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/044 - Journal_Darth Maul.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/045 - Journal_Queen Amidala.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/046 - Rogue Planet.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/047 - Jedi Quest_Path to Truth.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/048 - Jedi Quest_The Way of the Apprentice.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/049 - Outbound Flight.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/050 - Jedi Quest_The Trail of the Jedi.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/051 - Jedi Quest_Dangerous Games.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/052 - Jedi Quest_The Master of Disguise.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/053 - Jedi Quest_The School of Fear.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/054 - Jedi Quest_The Shadow Trap.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/055 - Jedi Quest_The Moment of Truth.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/056 - Jedi Quest_The Changing of the Guard.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/057 - Jedi Quest_The False Peace.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/058 - Jedi Quest_The Final Showdown.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/059 - The Approaching Storm.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/060 - Episode II_Attack of the Clones.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/061 - Boba Fett_The Fight to Survive.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/062 - Boba Fett_Crossfire.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/063 - Boba Fett_Maze of Deception.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/064 - The Cestus Deception.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/065 - The Hive.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/066 - Jedi Trial.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/067 - The Clone Wars.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/068 - Clone Wars Secret Missions_Breakout Squad.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/069 - Clone Wars Secret Missions_Curse of the Black Hole Pirates.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/070 - Clone Wars Secret Missions_Duel at Shattered Rock.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/071 - Clone Wars Secret Missions_Guardians of the Chiss Key.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/072 - The Clone Wars_Wild Space.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/073 - Boba Fett_Hunted.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/074 - Republic Commando_Hard Contact.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/075 - Shatterpoint.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/076 - The Clone Wars_No Prisoners.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/077 - Republic Commando_Triple Zero.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/078 - Clone Wars Gambit_Stealth.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/079 - Clone Wars Gambit_Siege.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/080 - Republic Commando_True Colors.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/081 - The Wrath of Darth Maul.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/082 - Medstar I_Battle Surgeons.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/083 - Medstar II_Jedi Healer.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/084 - Yoda Dark Rendezvous.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/085 - Boba Fett_A New Threat.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/086 - Boba Fett_Pursuit.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/087 - Episode III_Labyrinth of Evil.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/088 - Episode III_Revenge of the Sith.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/089 - Republic Commando_Order 066.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/090 - Kenobi.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/091 - Episode III_Dark Lord The Rise of Darth Vader.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/092 - Republic Commando_501st.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/093 - Coruscant Nights_Jedi Twilight.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/094 - The Last of the Jedi_The Desperate Mission.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/095 - The Last of the Jedi_Dark Warning.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/096 - The Last of the Jedi_Underworld.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/097 - The Last of the Jedi_Death on Naboo.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/098 - Coruscant Nights_Street of Shadows.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/099 - The Last of the Jedi_A Tangled Web.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/100 - The Last of the Jedi_Return of the Dark Side.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/101 - The Last of the Jedi_Secret Weapon.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/102 - The Last of the Jedi_Against the Empire.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/103 - The Last of the Jedi_Master of Deception.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/104 - The Last of the Jedi_Reckoning.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/105 - Coruscant Nights_Patterns of Force.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/106 - The Last Jedi.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/107 - A New Hope_The Life of Luke Skywalker.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/108 - Han Solo_The Paradise Snare.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/109 - Han Solo_The Hutt Gambit.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/110 - The Force Unleashed.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/111 - The Adventures of Lando Calrissian.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/112 - Death Star.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/113 - The Han Solo Adventures.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/114 - Han Solo_Rebel Dawn.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/115 - The Force Unleashed II.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/116 - Dark Forces_Soldier for the Empire.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/117 - Dark Forces_Rebel Agent.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/118 - Dark Forces_Jedi Knight.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/119 - Death Troopers.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/120 - Shadow Games.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/121 - Episode IV_A New Hope.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/122 - Tales From Mos Eisley Cantina.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/123 - Scoundrels.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/124 - Rebel Force_Target.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/125 - Rebel Force_Hostage.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/126 - Rebel Force_Renegade.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/127 - Rebel Force_Firefight.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/128 - Rebel Force_Trapped.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/129 - Allegiance.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/130 - Rebel Force_Uprising.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/131 - Eaten Alive.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/132 - City of the Dead.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/133 - Planet Plague.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/134 - The Nightmare Machine.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/135 - Ghost of the Jedi.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/136 - Army of Terror.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/137 - Choices of One.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/138 - The Brain Spiders.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/139 - The Swarm.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/140 - Spore.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/141 - The Doomsday Ship.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/142 - Clones.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/143 - The Hunger.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/144 - Honor Among Thieves.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/145 - Galaxies_The Ruins of Dantooine.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/146 - Splinter of the Mind's Eye.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/147 - Empire and Rebellion_Razor's Edge.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/148 - Episode V_The Empire Strikes Back.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/149 - Tales of the Bounty Hunters.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/150 - Shadows of the Empire.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/151 - Tales From the Empire.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/152 - Tales From Jabba's Palace.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/153 - Episode VI_Return of the Jedi.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/154 - The Bounty Hunter Wars_The Mandalorian Armor.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/155 - The Bounty Hunter Wars_Slave Ship.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/156 - The Truce at Bakura.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/157 - The Bounty Hunter Wars_Hard Merchandise.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/158 - Tales From the New Republic.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/159 - Luke Skywalker and the Shadows of Mindor.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/160 - Jedi Prince_The Glove of Darth Vader.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/161 - Jedi Prince_The Lost City of the Jedi.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/162 - Jedi Prince_Zorba the Hutt's Revenge.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/163 - Jedi Prince_Mission From Mount Yoda.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/164 - Jedi Prince_Queen of the Empire.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/165 - Jedi Prince_Prophets of the Dark Side.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/166 - Dark Forces_Rebel Agent.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/167 - Dark Forces_ Jedi Knight.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/168 - X-Wing_Rogue Squadron.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/169 - X-Wing_Wedge's Gamble.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/170 - X-Wing_The Krytos Trap.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/171 - X-Wing_The Bacta War.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/172 - X-Wing_Wraith Squadron.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/173 - X-Wing_Iron Fist.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/174 - X-Wing_Solo Command.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/175 - The Courtship of Princess Leia.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/176 - A Forest Apart.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/177 - Tatooine Ghost.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/178 - Thrawn_Heir to the Empire.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/179 - Thrawn_Dark Force Rising.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/180 - Thrawn_The Last Command.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/181 - X-Wing_Isard's Revenge.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/182 - The Jedi Academy_Jedi Search.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/183 - The Jedi Academy_Dark Apprentice.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/184 - The Jedi Academy_Champions of the Force.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/185 - I, Jedi.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/186 - Children of the Jedi.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/187 - Darksaber.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/188 - X-Wing_Starfighters of Adumar.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/189 - Planet of Twilight.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/190 - The Crystal Star.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/191 - The Black Fleet Crisis_Before the Storm.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/192 - The Black Fleet Crisis_Shield of Lies.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/193 - The Black Fleet Crisis_Tyrant's Test.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/194 - The New Rebellion.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/195 - The Corellian_Ambush at Corellia.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/196 - The Corellian_Assault at Selonia.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/197 - The Corellian_Showdown at Centerpoint.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/198 - The Hand of Thrawn_Specter of the Past.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/199 - The Hand of Thrawn_Vision of the Future.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/200 - Scourge.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/201 - Junior Jedi Knights_The Golden Globe.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/202 - Junior Jedi Knights_Lyric's World.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/203 - Junior Jedi Knights_Promises.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/204 - Junior Jedi Knights_Anakin's Quest.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/205 - Junior Jedi Knights_Vader's Fortress.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/206 - Junior Jedi Knights_Kenobi's Blade.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/207 - Fool's Bargain.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/208 - Survivor's Quest.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/209 - Young Jedi Knights_Heirs of the Force.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/210 - Young Jedi Knights_Shadow Academy.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/211 - Young Jedi Knights_The Lost Ones.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/212 - Young Jedi Knights_Lightsabers.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/213 - Young Jedi Knights_Darkest Knight.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/214 - Young Jedi Knights_Jedi Under Siege.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/215 - Young Jedi Knights_Shards of Alderaann.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/216 - Young Jedi Knights_Diversity Alliance.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/217 - Young Jedi Knights_Delusions of Grandeur.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/218 - Young Jedi Knights_Jedi Bounty.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/219 - Young Jedi Knights_The Emperor's Plague.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/220 - Young Jedi Knights_Return to Ord Mantell.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/221 - Young Jedi Knights_Trouble on Cloud City.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/222 - Young Jedi Knights_Crisis at Crystal Reef.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/223 - Boba Fett_A Practical Man.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/224 - The New Jedi Order_Vector Prime.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/225 - The New Jedi Order_Dark Tide I - Onslaught.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/226 - The New Jedi Order_Dark Tide II - Ruin.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/227 - The New Jedi Order_Agents of Chaos I - Hero's Trial.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/228 - The New Jedi Order_Agents of Chaos II - Jedi Eclipse.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/229 - The New Jedi Order_Balance Point.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/230 - The New Jedi Order_Recovery.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/231 - The New Jedi Order_Edge of Victory I - Conquest.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/232 - The New Jedi Order_Edge of Victory II - Rebirth.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/233 - The New Jedi Order_Star by Star.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/234 - The New Jedi Order_Dark Journey.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/235 - The New Jedi Order_Enemy Lines I - Rebel Dream.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/236 - The New Jedi Order_Enemy Lines II - Rebel Stand.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/237 - The New Jedi Order_Traitor.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/238 - The New Jedi Order_Destiny's Way.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/239 - The New Jedi Order_Ylesia.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/240 - The New Jedi Order_Force Heretic I - Remnant.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/241 - The New Jedi Order_Force Heretic II - Refugee.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/242 - The New Jedi Order_Force Heretic III - Reunion.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/243 - The New Jedi Order_The Final Prophecy.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/244 - The New Jedi Order_The Unifying Force.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/245 - Dark Nest_The Joiner King.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/246 - Dark Nest_The Unseen Queen.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/247 - Dark Nest_The Swarm War.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/248 - Legacy of the Force_Betrayal.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/249- Legacy of the Force_Bloodlines.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/250 - Legacy of the Force_Tempest.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/251 - Legacy of the Force_Exile.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/252 - Legacy of the Force_Sacrifice.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/253 - Legacy of the Force_Inferno.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/254 - Legacy of the Force_Fury.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/255 - Legacy of the Force_Revelation.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/256 - Legacy of the Force_Invincible.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/257 - Crosscurrent.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/258 - Riptide.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/259 - Millennium Falcon.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/260 - Fate of the Jedi_Outcast.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/261 - Fate of the Jedi_Omen.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/262 - Fate of the Jedi_Abyss.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/263 - Fate of the Jedi_Backlash.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/264 - Fate of the Jedi_Allies.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/265 - Fate of the Jedi_Vortex.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/266 - Fate of the Jedi_Conviction.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/267 - Fate of the Jedi_Ascension.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/268 - Fate of the Jedi_Apocalypse.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/269 - X-Wing_Mercy Kill.epub.files -0 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/270 - Crucible.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/003 - Lost Tribe of the Sith_The Collected Stories.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/004 - The Old Republic_Revan.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/005 - The Old Republic_Deceived.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/006 - Red Harvest.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/007 - The Old Republic_Fatal Alliance.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/009 - Knight Errant.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/010 - Darth Bane_Path of Destruction.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/011 - Darth Bane_Rule of Two.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/012 - Darth Bane_Dynasty of Evil.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/013 - Legacy of the Jedi.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/014 - Darth Plagueis.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/015 - Jedi Apprentice_The Rising Force.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/016 - Jedi Apprentice_The Dark Rival.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/017 - Jedi Apprentice_The Hidden Past.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/018 - Jedi Apprentice_The Mark of the Crown.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/019 - Jedi Apprentice_The Defenders of the Dead.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/020 - Jedi Apprentice_The Uncertain Path.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/021 - Jedi Apprentice_The Captive Temple.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/022 - Jedi Apprentice_The Day of Reckoning.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/023 - Jedi Apprentice_The Fight for Truth.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/024 - Jedi Apprentice_The Shattered Peace.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/025 - Jedi Apprentice_Deceptions.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/026 - The Life and Legend of Obi-Wan Kenobi.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/027 - Jedi Apprentice_The Deadly Hunter.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/028 - Jedi Apprentice_The Evil Experiment.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/029 - Jedi Apprentice_The Dangerous Rescue.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/030 - Jedi Apprentice_The Ties That Bind.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/031 - Jedi Apprentice_The Death of Hope.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/032 - Jedi Apprentice_The Call to Vengeance.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/033 - Jedi Apprentice_The Only Witness.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/034 - Jedi Apprentice_The Threat Within.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/035 - Jedi Apprentice_The Followers.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/036 - Secrets of the Jedi.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/037 - The Rise and Fall of Darth Vader.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/038 - Darth Maul_Saboteur.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/039 - Cloak of Deception.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/041 - Darth Maul_Shadow Hunter.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/042 - Episode I_The Phantom Menace.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/043 - Journal_Anakin Skywalker.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/044 - Journal_Darth Maul.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/045 - Journal_Queen Amidala.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/046 - Rogue Planet.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/047 - Jedi Quest_Path to Truth.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/048 - Jedi Quest_The Way of the Apprentice.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/049 - Outbound Flight.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/050 - Jedi Quest_The Trail of the Jedi.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/051 - Jedi Quest_Dangerous Games.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/052 - Jedi Quest_The Master of Disguise.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/053 - Jedi Quest_The School of Fear.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/054 - Jedi Quest_The Shadow Trap.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/055 - Jedi Quest_The Moment of Truth.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/056 - Jedi Quest_The Changing of the Guard.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/057 - Jedi Quest_The False Peace.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/058 - Jedi Quest_The Final Showdown.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/059 - The Approaching Storm.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/060 - Episode II_Attack of the Clones.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/061 - Boba Fett_The Fight to Survive.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/062 - Boba Fett_Crossfire.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/063 - Boba Fett_Maze of Deception.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/064 - The Cestus Deception.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/065 - The Hive.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/066 - Jedi Trial.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/067 - The Clone Wars.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/068 - Clone Wars Secret Missions_Breakout Squad.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/069 - Clone Wars Secret Missions_Curse of the Black Hole Pirates.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/070 - Clone Wars Secret Missions_Duel at Shattered Rock.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/071 - Clone Wars Secret Missions_Guardians of the Chiss Key.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/072 - The Clone Wars_Wild Space.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/073 - Boba Fett_Hunted.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/074 - Republic Commando_Hard Contact.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/075 - Shatterpoint.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/076 - The Clone Wars_No Prisoners.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/077 - Republic Commando_Triple Zero.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/078 - Clone Wars Gambit_Stealth.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/079 - Clone Wars Gambit_Siege.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/080 - Republic Commando_True Colors.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/081 - The Wrath of Darth Maul.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/082 - Medstar I_Battle Surgeons.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/083 - Medstar II_Jedi Healer.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/084 - Yoda Dark Rendezvous.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/085 - Boba Fett_A New Threat.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/086 - Boba Fett_Pursuit.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/087 - Episode III_Labyrinth of Evil.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/088 - Episode III_Revenge of the Sith.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/089 - Republic Commando_Order 066.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/090 - Kenobi.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/091 - Episode III_Dark Lord The Rise of Darth Vader.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/092 - Republic Commando_501st.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/093 - Coruscant Nights_Jedi Twilight.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/094 - The Last of the Jedi_The Desperate Mission.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/095 - The Last of the Jedi_Dark Warning.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/096 - The Last of the Jedi_Underworld.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/097 - The Last of the Jedi_Death on Naboo.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/098 - Coruscant Nights_Street of Shadows.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/099 - The Last of the Jedi_A Tangled Web.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/100 - The Last of the Jedi_Return of the Dark Side.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/101 - The Last of the Jedi_Secret Weapon.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/102 - The Last of the Jedi_Against the Empire.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/103 - The Last of the Jedi_Master of Deception.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/104 - The Last of the Jedi_Reckoning.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/105 - Coruscant Nights_Patterns of Force.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/106 - The Last Jedi.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/107 - A New Hope_The Life of Luke Skywalker.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/108 - Han Solo_The Paradise Snare.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/109 - Han Solo_The Hutt Gambit.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/110 - The Force Unleashed.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/111 - The Adventures of Lando Calrissian.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/112 - Death Star.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/113 - The Han Solo Adventures.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/114 - Han Solo_Rebel Dawn.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/115 - The Force Unleashed II.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/116 - Dark Forces_Soldier for the Empire.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/117 - Dark Forces_Rebel Agent.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/118 - Dark Forces_Jedi Knight.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/119 - Death Troopers.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/120 - Shadow Games.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/121 - Episode IV_A New Hope.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/122 - Tales From Mos Eisley Cantina.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/123 - Scoundrels.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/124 - Rebel Force_Target.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/125 - Rebel Force_Hostage.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/126 - Rebel Force_Renegade.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/127 - Rebel Force_Firefight.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/128 - Rebel Force_Trapped.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/129 - Allegiance.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/130 - Rebel Force_Uprising.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/131 - Eaten Alive.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/132 - City of the Dead.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/133 - Planet Plague.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/134 - The Nightmare Machine.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/135 - Ghost of the Jedi.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/136 - Army of Terror.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/137 - Choices of One.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/138 - The Brain Spiders.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/139 - The Swarm.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/140 - Spore.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/141 - The Doomsday Ship.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/142 - Clones.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/143 - The Hunger.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/144 - Honor Among Thieves.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/145 - Galaxies_The Ruins of Dantooine.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/146 - Splinter of the Mind's Eye.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/147 - Empire and Rebellion_Razor's Edge.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/148 - Episode V_The Empire Strikes Back.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/149 - Tales of the Bounty Hunters.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/150 - Shadows of the Empire.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/151 - Tales From the Empire.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/152 - Tales From Jabba's Palace.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/153 - Episode VI_Return of the Jedi.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/154 - The Bounty Hunter Wars_The Mandalorian Armor.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/155 - The Bounty Hunter Wars_Slave Ship.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/156 - The Truce at Bakura.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/157 - The Bounty Hunter Wars_Hard Merchandise.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/158 - Tales From the New Republic.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/159 - Luke Skywalker and the Shadows of Mindor.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/160 - Jedi Prince_The Glove of Darth Vader.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/161 - Jedi Prince_The Lost City of the Jedi.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/162 - Jedi Prince_Zorba the Hutt's Revenge.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/163 - Jedi Prince_Mission From Mount Yoda.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/164 - Jedi Prince_Queen of the Empire.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/165 - Jedi Prince_Prophets of the Dark Side.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/166 - Dark Forces_Rebel Agent.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/167 - Dark Forces_ Jedi Knight.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/168 - X-Wing_Rogue Squadron.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/169 - X-Wing_Wedge's Gamble.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/170 - X-Wing_The Krytos Trap.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/171 - X-Wing_The Bacta War.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/172 - X-Wing_Wraith Squadron.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/173 - X-Wing_Iron Fist.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/174 - X-Wing_Solo Command.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/175 - The Courtship of Princess Leia.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/176 - A Forest Apart.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/177 - Tatooine Ghost.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/178 - Thrawn_Heir to the Empire.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/179 - Thrawn_Dark Force Rising.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/180 - Thrawn_The Last Command.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/181 - X-Wing_Isard's Revenge.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/182 - The Jedi Academy_Jedi Search.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/183 - The Jedi Academy_Dark Apprentice.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/184 - The Jedi Academy_Champions of the Force.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/185 - I, Jedi.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/186 - Children of the Jedi.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/187 - Darksaber.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/188 - X-Wing_Starfighters of Adumar.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/189 - Planet of Twilight.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/190 - The Crystal Star.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/191 - The Black Fleet Crisis_Before the Storm.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/192 - The Black Fleet Crisis_Shield of Lies.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/193 - The Black Fleet Crisis_Tyrant's Test.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/194 - The New Rebellion.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/195 - The Corellian_Ambush at Corellia.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/196 - The Corellian_Assault at Selonia.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/197 - The Corellian_Showdown at Centerpoint.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/198 - The Hand of Thrawn_Specter of the Past.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/199 - The Hand of Thrawn_Vision of the Future.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/200 - Scourge.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/201 - Junior Jedi Knights_The Golden Globe.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/202 - Junior Jedi Knights_Lyric's World.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/203 - Junior Jedi Knights_Promises.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/204 - Junior Jedi Knights_Anakin's Quest.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/205 - Junior Jedi Knights_Vader's Fortress.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/206 - Junior Jedi Knights_Kenobi's Blade.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/207 - Fool's Bargain.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/208 - Survivor's Quest.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/209 - Young Jedi Knights_Heirs of the Force.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/210 - Young Jedi Knights_Shadow Academy.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/211 - Young Jedi Knights_The Lost Ones.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/212 - Young Jedi Knights_Lightsabers.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/213 - Young Jedi Knights_Darkest Knight.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/214 - Young Jedi Knights_Jedi Under Siege.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/215 - Young Jedi Knights_Shards of Alderaann.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/216 - Young Jedi Knights_Diversity Alliance.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/217 - Young Jedi Knights_Delusions of Grandeur.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/218 - Young Jedi Knights_Jedi Bounty.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/219 - Young Jedi Knights_The Emperor's Plague.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/220 - Young Jedi Knights_Return to Ord Mantell.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/221 - Young Jedi Knights_Trouble on Cloud City.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/222 - Young Jedi Knights_Crisis at Crystal Reef.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/223 - Boba Fett_A Practical Man.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/224 - The New Jedi Order_Vector Prime.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/225 - The New Jedi Order_Dark Tide I - Onslaught.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/226 - The New Jedi Order_Dark Tide II - Ruin.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/227 - The New Jedi Order_Agents of Chaos I - Hero's Trial.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/228 - The New Jedi Order_Agents of Chaos II - Jedi Eclipse.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/229 - The New Jedi Order_Balance Point.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/230 - The New Jedi Order_Recovery.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/231 - The New Jedi Order_Edge of Victory I - Conquest.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/232 - The New Jedi Order_Edge of Victory II - Rebirth.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/233 - The New Jedi Order_Star by Star.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/234 - The New Jedi Order_Dark Journey.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/235 - The New Jedi Order_Enemy Lines I - Rebel Dream.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/236 - The New Jedi Order_Enemy Lines II - Rebel Stand.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/237 - The New Jedi Order_Traitor.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/238 - The New Jedi Order_Destiny's Way.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/239 - The New Jedi Order_Ylesia.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/240 - The New Jedi Order_Force Heretic I - Remnant.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/241 - The New Jedi Order_Force Heretic II - Refugee.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/242 - The New Jedi Order_Force Heretic III - Reunion.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/243 - The New Jedi Order_The Final Prophecy.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/244 - The New Jedi Order_The Unifying Force.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/245 - Dark Nest_The Joiner King.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/246 - Dark Nest_The Unseen Queen.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/247 - Dark Nest_The Swarm War.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/248 - Legacy of the Force_Betrayal.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/249- Legacy of the Force_Bloodlines.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/250 - Legacy of the Force_Tempest.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/251 - Legacy of the Force_Exile.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/252 - Legacy of the Force_Sacrifice.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/253 - Legacy of the Force_Inferno.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/254 - Legacy of the Force_Fury.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/255 - Legacy of the Force_Revelation.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/256 - Legacy of the Force_Invincible.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/257 - Crosscurrent.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/258 - Riptide.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/259 - Millennium Falcon.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/260 - Fate of the Jedi_Outcast.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/261 - Fate of the Jedi_Omen.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/262 - Fate of the Jedi_Abyss.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/263 - Fate of the Jedi_Backlash.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/264 - Fate of the Jedi_Allies.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/265 - Fate of the Jedi_Vortex.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/266 - Fate of the Jedi_Conviction.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/267 - Fate of the Jedi_Ascension.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/268 - Fate of the Jedi_Apocalypse.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/269 - X-Wing_Mercy Kill.epub.files -1 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/270 - Crucible.epub.files -2 app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" s array:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/144 - Honor Among Thieves.epub.files -A docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -ABBREVIATE_BRIEF doxygen.conf /^ABBREVIATE_BRIEF = "The $name class" \\$/;" k -ALIASES doxygen.conf /^ALIASES =$/;" k -ALLEXTERNALS doxygen.conf /^ALLEXTERNALS = NO$/;" k -ALLOWED_HOSTS frontend/frontend/settings.py /^ALLOWED_HOSTS = []$/;" v -ALLOW_UNICODE_NAMES doxygen.conf /^ALLOW_UNICODE_NAMES = NO$/;" k -ALPHABETICAL_INDEX doxygen.conf /^ALPHABETICAL_INDEX = YES$/;" k -ALWAYS_DETAILED_SEC doxygen.conf /^ALWAYS_DETAILED_SEC = NO$/;" k -AUTH_PASSWORD_VALIDATORS frontend/frontend/settings.py /^AUTH_PASSWORD_VALIDATORS = [$/;" v -AUTOLINK_SUPPORT doxygen.conf /^AUTOLINK_SUPPORT = YES$/;" k -Ae docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac0100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac0200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac0300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac0400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac0500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac0600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac0700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac0800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac0900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac0800 -AnonymousFunction4d6c64ac0a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac0b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac0c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac0d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac0e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac0f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac10000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac10100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac10200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac10100 -AnonymousFunction4d6c64ac10300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac10100.AnonymousFunction4d6c64ac10200 -AnonymousFunction4d6c64ac10400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac10500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac10400 -AnonymousFunction4d6c64ac10600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac10700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac10600 -AnonymousFunction4d6c64ac10800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac10900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" c class:AnonymousFunction4d6c64ac10800 -AnonymousFunction4d6c64ac10a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac10b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" c class:AnonymousFunction4d6c64ac10a00 -AnonymousFunction4d6c64ac10c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac10d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac10e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac10d00 -AnonymousFunction4d6c64ac10f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac11000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac10f00 -AnonymousFunction4d6c64ac11100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac11200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac11100 -AnonymousFunction4d6c64ac11300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac11400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac11500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac11600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac11700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac11800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac11900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac11a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac11b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:Ge -AnonymousFunction4d6c64ac11c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac11d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac11e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac11f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac12000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:k.cssHooks -AnonymousFunction4d6c64ac12100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac12200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac12100 -AnonymousFunction4d6c64ac12300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac12400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac12500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac12400 -AnonymousFunction4d6c64ac12600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" c -AnonymousFunction4d6c64ac12700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac12800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac12900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac12a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac12b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac12c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac12d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac12e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac12f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:dt -AnonymousFunction4d6c64ac1300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac13000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac13100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac13200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac13300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac13400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac13500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac13600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac13500 -AnonymousFunction4d6c64ac13700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac13500 -AnonymousFunction4d6c64ac13800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac13900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac13500 -AnonymousFunction4d6c64ac13a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac13500 -AnonymousFunction4d6c64ac13b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac13500 -AnonymousFunction4d6c64ac13c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac13d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac13e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac13f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac14000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac14100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac14000 -AnonymousFunction4d6c64ac14200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac14300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac14200 -AnonymousFunction4d6c64ac14400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac14500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac14600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac14700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac14800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac14900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac14a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac14b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac14a00 -AnonymousFunction4d6c64ac14c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac14d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac14e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac14d00 -AnonymousFunction4d6c64ac14f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac15000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac15100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac15200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac15300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac15400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac15500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac15600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac15500 -AnonymousFunction4d6c64ac15700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac15800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac15900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac15a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac15b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac15c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac15d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac15c00 -AnonymousFunction4d6c64ac15e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac15f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac15e00 -AnonymousFunction4d6c64ac1600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac16000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac16100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac16000 -AnonymousFunction4d6c64ac16200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac16000 -AnonymousFunction4d6c64ac16300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac16400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac16500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac16600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac16500 -AnonymousFunction4d6c64ac16700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac16800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac16900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac16a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac16b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac16c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac16d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac16e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac16f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac17000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac16f00 -AnonymousFunction4d6c64ac17100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac17200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac17300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac17400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:qt -AnonymousFunction4d6c64ac17500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac17600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac17700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac17800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac17900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac17800 -AnonymousFunction4d6c64ac17a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac17b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac17c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac17b00 -AnonymousFunction4d6c64ac17d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:Bt -AnonymousFunction4d6c64ac17e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac17f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac18000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac18100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac18200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac18000.l -AnonymousFunction4d6c64ac18300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac18000.l -AnonymousFunction4d6c64ac18400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac18500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac18600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac18700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac18800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac18900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac18a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac18b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac18a00 -AnonymousFunction4d6c64ac18c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac18d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac18e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac18f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac19000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac18f00 -AnonymousFunction4d6c64ac19100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac19200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac19300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac19400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac19500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac19600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac19700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac19600.o -AnonymousFunction4d6c64ac19800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac19900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac19a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac19b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac19c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac19d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac19c00 -AnonymousFunction4d6c64ac19e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac19f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1a000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac19f00 -AnonymousFunction4d6c64ac1a100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1a200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1a300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1a400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1a500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1a600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1a700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1a800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1a900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1aa00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1ab00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac1aa00 -AnonymousFunction4d6c64ac1ac00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1ad00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1ae00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac1ad00 -AnonymousFunction4d6c64ac1af00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1b000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:k.fn -AnonymousFunction4d6c64ac1b100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1b200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1b300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1b400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1b500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:k.fn -AnonymousFunction4d6c64ac1b600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1b700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1b800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1b900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1ba00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1bb00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1bc00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1bd00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac1bc00 -AnonymousFunction4d6c64ac1be00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1bf00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1c000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1c100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1c200 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1c300 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:t.cleanData -AnonymousFunction4d6c64ac1c400 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1c500 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1c600 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:AnonymousFunction4d6c64ac1c500 -AnonymousFunction4d6c64ac1c700 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:o.o -AnonymousFunction4d6c64ac1c800 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1c900 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1ca00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:t.Widget._createWidget -AnonymousFunction4d6c64ac1cb00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:t -AnonymousFunction4d6c64ac1cc00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1cd00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1ce00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c class:t.Widget._hoverable -AnonymousFunction4d6c64ac1cf00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c class:t.Widget._hoverable -AnonymousFunction4d6c64ac1d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1d000 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c class:t.Widget._focusable -AnonymousFunction4d6c64ac1d100 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c class:t.Widget._focusable -AnonymousFunction4d6c64ac1d200 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1d300 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1d400 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1d500 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1d600 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1d700 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1d800 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1d900 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:AnonymousFunction4d6c64ac1d800 -AnonymousFunction4d6c64ac1da00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1db00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1dc00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:AnonymousFunction4d6c64ac1db00 -AnonymousFunction4d6c64ac1dd00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:AnonymousFunction4d6c64ac1db00.AnonymousFunction4d6c64ac1dc00 -AnonymousFunction4d6c64ac1de00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1df00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1e000 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1e100 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1e200 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1e300 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:AnonymousFunction4d6c64ac1e200 -AnonymousFunction4d6c64ac1e400 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c -AnonymousFunction4d6c64ac1e500 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1e600 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1e700 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1e800 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1e900 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:t.fn -AnonymousFunction4d6c64ac1ea00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:t.fn -AnonymousFunction4d6c64ac1eb00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1ec00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1ed00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:AnonymousFunction4d6c64ac1ec00 -AnonymousFunction4d6c64ac1ee00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1ef00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac1f000 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:AnonymousFunction4d6c64ac1ef00 -AnonymousFunction4d6c64ac1f100 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1f200 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1f300 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:AnonymousFunction4d6c64ac1f200 -AnonymousFunction4d6c64ac1f400 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c class:AnonymousFunction4d6c64ac1f200.AnonymousFunction4d6c64ac1f300 -AnonymousFunction4d6c64ac1f500 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1f600 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:AnonymousFunction4d6c64ac1f500 -AnonymousFunction4d6c64ac1f700 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1f800 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c -AnonymousFunction4d6c64ac1f900 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:element -AnonymousFunction4d6c64ac1fa00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:element -AnonymousFunction4d6c64ac1fb00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c -AnonymousFunction4d6c64ac1fc00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac1fd00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:s -AnonymousFunction4d6c64ac1fe00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:s -AnonymousFunction4d6c64ac1ff00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:s -AnonymousFunction4d6c64ac2000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac20000 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac20100 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c -AnonymousFunction4d6c64ac20200 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac20300 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac20400 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac20500 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac20600 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac20700 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac20800 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac20900 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac20a00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac20b00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac20c00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac20d00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c -AnonymousFunction4d6c64ac20e00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:i -AnonymousFunction4d6c64ac20f00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:i -AnonymousFunction4d6c64ac2100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac21000 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c -AnonymousFunction4d6c64ac21100 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac21200 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c -AnonymousFunction4d6c64ac21300 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:_handles -AnonymousFunction4d6c64ac21400 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c -AnonymousFunction4d6c64ac21500 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac21600 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac21700 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac21800 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c -AnonymousFunction4d6c64ac21900 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c -AnonymousFunction4d6c64ac21a00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac21b00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac21c00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c -AnonymousFunction4d6c64ac21d00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac21e00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac21f00 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac2200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac22000 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -AnonymousFunction4d6c64ac22100 docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c -AnonymousFunction4d6c64ac22200 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac22300 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac22400 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac22500 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac22600 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac22700 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac22800 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac22900 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac22a00 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac22b00 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac22c00 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac22d00 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac22e00 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac22f00 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f function:AnonymousFunction4d6c64ac22e00 -AnonymousFunction4d6c64ac2300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac23000 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac23100 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac23200 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac23300 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac23400 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac23500 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac23600 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac23700 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac23800 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac23900 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac23a00 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac23b00 docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" f -AnonymousFunction4d6c64ac23c00 docs/html/jquery.js /^;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefine/;" f -AnonymousFunction4d6c64ac23d00 docs/html/jquery.js /^;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefine/;" f function:$.fn.scrollTo -AnonymousFunction4d6c64ac23e00 docs/html/jquery.js /^;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefine/;" f function:$.fn.scrollTo.AnonymousFunction4d6c64ac23d00.k -AnonymousFunction4d6c64ac23f00 docs/html/jquery.js /^;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefine/;" f -AnonymousFunction4d6c64ac2400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac24000 docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -AnonymousFunction4d6c64ac24100 docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -AnonymousFunction4d6c64ac24200 docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -AnonymousFunction4d6c64ac24300 docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -AnonymousFunction4d6c64ac24400 docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f function:closeDesyncedTip -AnonymousFunction4d6c64ac24500 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac24600 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac24700 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac24800 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c -AnonymousFunction4d6c64ac24900 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac24a00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c -AnonymousFunction4d6c64ac24b00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac24c00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac24d00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:AnonymousFunction4d6c64ac24c00 -AnonymousFunction4d6c64ac24e00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c -AnonymousFunction4d6c64ac24f00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:$root -AnonymousFunction4d6c64ac2500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:de -AnonymousFunction4d6c64ac25000 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:$root -AnonymousFunction4d6c64ac25100 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac25200 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac25300 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac25400 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:AnonymousFunction4d6c64ac25300 -AnonymousFunction4d6c64ac25500 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac25600 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c -AnonymousFunction4d6c64ac25700 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c -AnonymousFunction4d6c64ac25800 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac25900 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac25a00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac25b00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac25c00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac25d00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac25e00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac25f00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac2600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:he -AnonymousFunction4d6c64ac26000 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac26100 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac26200 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac26300 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac26400 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac26500 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac26600 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac26700 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac26800 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac26900 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac26a00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac26b00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c -AnonymousFunction4d6c64ac26c00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac26d00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c -AnonymousFunction4d6c64ac26e00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac26f00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:AnonymousFunction4d6c64ac26e00 -AnonymousFunction4d6c64ac2700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:ge -AnonymousFunction4d6c64ac27000 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c -AnonymousFunction4d6c64ac27100 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c -AnonymousFunction4d6c64ac27200 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac27300 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c -AnonymousFunction4d6c64ac27400 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac27500 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac27600 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac27700 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac27800 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac27900 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac27a00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:AnonymousFunction4d6c64ac27600 -AnonymousFunction4d6c64ac27b00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:AnonymousFunction4d6c64ac27600 -AnonymousFunction4d6c64ac27c00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:AnonymousFunction4d6c64ac27600 -AnonymousFunction4d6c64ac27d00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac27e00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:AnonymousFunction4d6c64ac27d00 -AnonymousFunction4d6c64ac27f00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac2800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:ve -AnonymousFunction4d6c64ac28000 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac28100 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac28200 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c -AnonymousFunction4d6c64ac28300 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac28400 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac28500 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac28600 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c -AnonymousFunction4d6c64ac28700 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:AnonymousFunction4d6c64ac28600 -AnonymousFunction4d6c64ac28800 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac28900 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c -AnonymousFunction4d6c64ac28a00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac28b00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac28c00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:AnonymousFunction4d6c64ac28b00 -AnonymousFunction4d6c64ac28d00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c -AnonymousFunction4d6c64ac28e00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f -AnonymousFunction4d6c64ac28f00 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:Array -AnonymousFunction4d6c64ac2900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:ve.AnonymousFunction4d6c64ac2800 -AnonymousFunction4d6c64ac29000 docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:$.fn.smartmenus -AnonymousFunction4d6c64ac2a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac2b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac2c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00 -AnonymousFunction4d6c64ac2d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00 -AnonymousFunction4d6c64ac2e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00 -AnonymousFunction4d6c64ac2f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00 -AnonymousFunction4d6c64ac3000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00.AnonymousFunction4d6c64ac2f00 -AnonymousFunction4d6c64ac3100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00 -AnonymousFunction4d6c64ac3200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00 -AnonymousFunction4d6c64ac3300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00.AnonymousFunction4d6c64ac3200 -AnonymousFunction4d6c64ac3400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00 -AnonymousFunction4d6c64ac3500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00 -AnonymousFunction4d6c64ac3600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00 -AnonymousFunction4d6c64ac3700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00 -AnonymousFunction4d6c64ac3800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00 -AnonymousFunction4d6c64ac3900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00 -AnonymousFunction4d6c64ac3a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00 -AnonymousFunction4d6c64ac3b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00 -AnonymousFunction4d6c64ac3c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00 -AnonymousFunction4d6c64ac3d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00 -AnonymousFunction4d6c64ac3e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac2b00 -AnonymousFunction4d6c64ac3f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac4000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac4100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac4200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac4300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac4400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac4500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac4600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac4700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac4800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac4900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac4a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac4b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac4c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac4b00 -AnonymousFunction4d6c64ac4d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac4e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac4d00 -AnonymousFunction4d6c64ac4f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac5000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac5100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac5200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac5300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac5400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac5300 -AnonymousFunction4d6c64ac5500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac5600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac5500 -AnonymousFunction4d6c64ac5700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac5800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac5900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac5a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac5b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac5c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac5d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac5e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac5f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac6000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac6100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac6200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac6300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac6400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac6500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac6600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac6700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac6800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac6900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac6a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac6b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:Ce -AnonymousFunction4d6c64ac6c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:Ee -AnonymousFunction4d6c64ac6d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:Ee -AnonymousFunction4d6c64ac6e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:Ee -AnonymousFunction4d6c64ac6f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac7000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac7100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac7000 -AnonymousFunction4d6c64ac7200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac7300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac7400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac7500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac7600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac7700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac7800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac7900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac7a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac7b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac7c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac7d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac7e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac7f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac8000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac7f00 -AnonymousFunction4d6c64ac8100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac8200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac8100 -AnonymousFunction4d6c64ac8300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac8400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac8500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac8600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac8700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac8800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac8700 -AnonymousFunction4d6c64ac8900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac8a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac8b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac8c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac8d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac8e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac8f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac9000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac9100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac9200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac9300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac9400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac9500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac9600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac9700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac9800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac9900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac9a00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac9b00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac9a00 -AnonymousFunction4d6c64ac9c00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac9d00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac9e00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ac9f00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64aca000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64aca100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64aca200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64aca300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64aca400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64aca500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64aca600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64aca700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64aca800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64aca900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acaa00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acab00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acac00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64aca900.a.then.l -AnonymousFunction4d6c64acad00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64aca900.a -AnonymousFunction4d6c64acae00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acaf00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acb000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acb100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64acb000.a -AnonymousFunction4d6c64acb200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acb300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acb400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acb500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acb600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acb700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acb800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64acb700 -AnonymousFunction4d6c64acb900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acba00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acbb00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acbc00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acbd00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acbe00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acbf00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acc000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acc100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acc200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acc300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acc400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acc500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acc600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64acc500 -AnonymousFunction4d6c64acc700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" c class:AnonymousFunction4d6c64acc500 -AnonymousFunction4d6c64acc800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64acc500.AnonymousFunction4d6c64acc700 -AnonymousFunction4d6c64acc900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acca00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64acc900 -AnonymousFunction4d6c64accb00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64accc00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64accd00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64accc00 -AnonymousFunction4d6c64acce00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64accf00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acd000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acd100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acd200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acd300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64acd200 -AnonymousFunction4d6c64acd400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acd500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acd600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acd700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acd800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acd900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acda00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acdb00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acdc00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acdd00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64acdc00 -AnonymousFunction4d6c64acde00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:Ae -AnonymousFunction4d6c64acdf00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ace000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:De -AnonymousFunction4d6c64ace100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ace200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ace300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ace400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ace500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ace600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ace700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ace800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64ace900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acea00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64aceb00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acec00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64aced00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acee00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acef00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acf000 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acf100 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" c -AnonymousFunction4d6c64acf200 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" c -AnonymousFunction4d6c64acf300 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" c -AnonymousFunction4d6c64acf400 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acf500 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acf600 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acf700 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acf800 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acf900 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acfa00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64acf900 -AnonymousFunction4d6c64acfb00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:Ie -AnonymousFunction4d6c64acfc00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acfd00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acfe00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction4d6c64acff00 docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -AnonymousFunction8660289f0100 docs/html/dynsections.js /^ $('table.directory tr').each(function() {$/;" f -AnonymousFunction8660289f0200 docs/html/dynsections.js /^ var childRows = rows.filter(function() { return this.id.match(re); });$/;" f function:toggleFolder -AnonymousFunction8660289f0300 docs/html/dynsections.js /^$(document).ready(function() {$/;" f -AnonymousFunction8660289f0400 docs/html/dynsections.js /^ $('.code,.codeRef').each(function() {$/;" f -Array docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c -Author docs/man/man3/app_config_Config.3 /^.SH "Author"$/;" s title:app.config.Config -Author docs/man/man3/app_lib_api_hooks_DuckDuckGo.3 /^.SH "Author"$/;" s title:app.lib.api_hooks.DuckDuckGo -Author docs/man/man3/app_lib_display_Frontend.3 /^.SH "Author"$/;" s title:app.lib.display.Frontend -Author docs/man/man3/app_lib_library_Catalogue.3 /^.SH "Author"$/;" s title:app.lib.library.Catalogue -Author docs/man/man3/app_lib_pyShelf_BookDisplay.3 /^.SH "Author"$/;" s title:app.lib.pyShelf.BookDisplay -Author docs/man/man3/app_lib_pyShelf_BookServer.3 /^.SH "Author"$/;" s title:app.lib.pyShelf.BookServer -Author docs/man/man3/app_lib_pyShelf_InitFiles.3 /^.SH "Author"$/;" s title:app.lib.pyShelf.InitFiles -Author docs/man/man3/app_lib_pyShelf_RequestHandler.3 /^.SH "Author"$/;" s title:app.lib.pyShelf.RequestHandler -Author docs/man/man3/app_lib_storage_Storage.3 /^.SH "Author"$/;" s title:app.lib.storage.Storage -B docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -BASE_DIR frontend/frontend/settings.py /^BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))$/;" v -BINARY_TOC doxygen.conf /^BINARY_TOC = YES$/;" k -BRIEF_MEMBER_DESC doxygen.conf /^BRIEF_MEMBER_DESC = YES$/;" k -BUILTIN_STL_SUPPORT doxygen.conf /^BUILTIN_STL_SUPPORT = NO$/;" k -BookDisplay app/lib/pyShelf.py /^class BookDisplay:$/;" c -BookServer app/lib/pyShelf.py /^class BookServer:$/;" c -BookServerTest tests/test_bookserver.py /^class BookServerTest(unittest.TestCase):$/;" c -Bt docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -C docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:AnonymousFunction4d6c64ac27600 -CALLER_GRAPH doxygen.conf /^CALLER_GRAPH = NO$/;" k -CALL_GRAPH doxygen.conf /^CALL_GRAPH = NO$/;" k -CASE_SENSE_NAMES doxygen.conf /^CASE_SENSE_NAMES = YES$/;" k -CHM_FILE doxygen.conf /^CHM_FILE = pyShelf_docs$/;" k -CHM_INDEX_ENCODING doxygen.conf /^CHM_INDEX_ENCODING =$/;" k -CITE_BIB_FILES doxygen.conf /^CITE_BIB_FILES =$/;" k -CLASS_DIAGRAMS doxygen.conf /^CLASS_DIAGRAMS = YES$/;" k -CLASS_GRAPH doxygen.conf /^CLASS_GRAPH = YES$/;" k -COLLABORATION_GRAPH doxygen.conf /^COLLABORATION_GRAPH = YES$/;" k -COLS_IN_ALPHA_INDEX doxygen.conf /^COLS_IN_ALPHA_INDEX = 5$/;" k -COMPACT_LATEX doxygen.conf /^COMPACT_LATEX = NO$/;" k -COMPACT_RTF doxygen.conf /^COMPACT_RTF = NO$/;" k -CPP_CLI_SUPPORT doxygen.conf /^CPP_CLI_SUPPORT = NO$/;" k -CREATE_SUBDIRS doxygen.conf /^CREATE_SUBDIRS = NO$/;" k -CSSCoordinates docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -Catalogue app/lib/library.py /^class Catalogue:$/;" c -Catalogue app/main.py /^Catalogue = Catalogue() # Open the Catalogue$/;" v -Catalogue tests/test_library.py /^Catalogue = Catalogue()$/;" v -Ce docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -Collision docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" c class:AnonymousFunction4d6c64ac24000 -Config app/config.py /^class Config:$/;" c -Configuration README.md /^## Configuration$/;" s -Constructor & Destructor Documentation docs/man/man3/app_lib_display_Frontend.3 /^.SH "Constructor & Destructor Documentation"$/;" s title:app.lib.display.Frontend -Constructor & Destructor Documentation docs/man/man3/app_lib_pyShelf_BookDisplay.3 /^.SH "Constructor & Destructor Documentation"$/;" s title:app.lib.pyShelf.BookDisplay -Constructor & Destructor Documentation docs/html/classapp_1_1lib_1_1display_1_1Frontend.html /^
Dynamic frontend display functions<\/pre> <\/div>
All functions related to displaying book informatio/;"	i
-CreateFile	app/lib/pyShelf.py	/^    def CreateFile(self, _pointer):$/;"	m	class:InitFiles
-Current Features	README.md	/^## Current Features$/;"	s
-D	docs/html/jquery.js	/^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;"	f	function:AnonymousFunction4d6c64ac1d00
-DATABASES	frontend/frontend/settings.py	/^DATABASES = {$/;"	v
-DEBUG	frontend/frontend/settings.py	/^DEBUG = True$/;"	v
-DEFINITIONS	docs/html/HTML/defines.html	/^

DEFINITIONS<\/h2>$/;" i -DEFINITIONS docs/html/HTML/index.html /^

DEFINITIONS<\/h2>$/;" i -DEFINITIONS docs/html/HTML/mains.html /^

DEFINITIONS<\/h2>$/;" i -DIAFILE_DIRS doxygen.conf /^DIAFILE_DIRS =$/;" k -DIA_PATH doxygen.conf /^DIA_PATH =$/;" k -DIRECTORY_GRAPH doxygen.conf /^DIRECTORY_GRAPH = YES$/;" k -DISABLE_INDEX doxygen.conf /^DISABLE_INDEX = NO$/;" k -DISTRIBUTE_GROUP_DOC doxygen.conf /^DISTRIBUTE_GROUP_DOC = NO$/;" k -DOCBOOK_OUTPUT doxygen.conf /^DOCBOOK_OUTPUT = docbook$/;" k -DOCBOOK_PROGRAMLISTING doxygen.conf /^DOCBOOK_PROGRAMLISTING = NO$/;" k -DOCSET_BUNDLE_ID doxygen.conf /^DOCSET_BUNDLE_ID = co.mylocaltech.pyShelf$/;" k -DOCSET_FEEDNAME doxygen.conf /^DOCSET_FEEDNAME = "Doxygen generated docs"$/;" k -DOCSET_PUBLISHER_ID doxygen.conf /^DOCSET_PUBLISHER_ID = co.mylocaltech.myoung$/;" k -DOCSET_PUBLISHER_NAME doxygen.conf /^DOCSET_PUBLISHER_NAME = myoung$/;" k -DOTFILE_DIRS doxygen.conf /^DOTFILE_DIRS =$/;" k -DOT_CLEANUP doxygen.conf /^DOT_CLEANUP = YES$/;" k -DOT_FONTNAME doxygen.conf /^DOT_FONTNAME = Helvetica$/;" k -DOT_FONTPATH doxygen.conf /^DOT_FONTPATH =$/;" k -DOT_FONTSIZE doxygen.conf /^DOT_FONTSIZE = 10$/;" k -DOT_GRAPH_MAX_NODES doxygen.conf /^DOT_GRAPH_MAX_NODES = 50$/;" k -DOT_IMAGE_FORMAT doxygen.conf /^DOT_IMAGE_FORMAT = png$/;" k -DOT_MULTI_TARGETS doxygen.conf /^DOT_MULTI_TARGETS = NO$/;" k -DOT_NUM_THREADS doxygen.conf /^DOT_NUM_THREADS = 0$/;" k -DOT_PATH doxygen.conf /^DOT_PATH =$/;" k -DOT_TRANSPARENT doxygen.conf /^DOT_TRANSPARENT = NO$/;" k -DOXYFILE_ENCODING doxygen.conf /^DOXYFILE_ENCODING = UTF-8$/;" k -De docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -Detailed Description docs/html/classapp_1_1config_1_1Config.html /^<\/a>

Detailed Description<\/h2>$/;" i -Detailed Description docs/html/classapp_1_1lib_1_1api__hooks_1_1DuckDuckGo.html /^<\/a>

Detailed Description<\/h2>$/;" i -Detailed Description docs/html/classapp_1_1lib_1_1display_1_1Frontend.html /^<\/a>

Detailed Description<\/h2>$/;" i -Detailed Description docs/html/classapp_1_1lib_1_1library_1_1Catalogue.html /^<\/a>

Detailed Description<\/h2>$/;" i -Detailed Description docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay.html /^<\/a>

Detailed Description<\/h2>$/;" i -Detailed Description docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer.html /^<\/a>

Detailed Description<\/h2>$/;" i -Detailed Description docs/html/classapp_1_1lib_1_1pyShelf_1_1InitFiles.html /^<\/a>

Detailed Description<\/h2>$/;" i -Detailed Description docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler.html /^<\/a>

Detailed Description<\/h2>$/;" i -Detailed Description docs/html/classapp_1_1lib_1_1storage_1_1Storage.html /^<\/a>

Detailed Description<\/h2>$/;" i -Detailed Description docs/man/man3/app_config_Config.3 /^.SH "Detailed Description"$/;" s title:app.config.Config -Detailed Description docs/man/man3/app_lib_api_hooks_DuckDuckGo.3 /^.SH "Detailed Description"$/;" s title:app.lib.api_hooks.DuckDuckGo -Detailed Description docs/man/man3/app_lib_display_Frontend.3 /^.SH "Detailed Description"$/;" s title:app.lib.display.Frontend -Detailed Description docs/man/man3/app_lib_library_Catalogue.3 /^.SH "Detailed Description"$/;" s title:app.lib.library.Catalogue -Detailed Description docs/man/man3/app_lib_pyShelf_BookDisplay.3 /^.SH "Detailed Description"$/;" s title:app.lib.pyShelf.BookDisplay -Detailed Description docs/man/man3/app_lib_pyShelf_BookServer.3 /^.SH "Detailed Description"$/;" s title:app.lib.pyShelf.BookServer -Detailed Description docs/man/man3/app_lib_pyShelf_InitFiles.3 /^.SH "Detailed Description"$/;" s title:app.lib.pyShelf.InitFiles -Detailed Description docs/man/man3/app_lib_pyShelf_RequestHandler.3 /^.SH "Detailed Description"$/;" s title:app.lib.pyShelf.RequestHandler -Detailed Description docs/man/man3/app_lib_storage_Storage.3 /^.SH "Detailed Description"$/;" s title:app.lib.storage.Storage -Development README.md /^## Development$/;" s -Directories docs/html/dir_d422163b96683743ed3963d4aac17747.html /^Directories<\/h2><\/td><\/tr>$/;" i -DisplayController docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" c -DuckDuckGo app/lib/api_hooks.py /^class DuckDuckGo:$/;" c -ECLIPSE_DOC_ID doxygen.conf /^ECLIPSE_DOC_ID = org.doxygen.Project$/;" k -ENABLED_SECTIONS doxygen.conf /^ENABLED_SECTIONS =$/;" k -ENABLE_PREPROCESSING doxygen.conf /^ENABLE_PREPROCESSING = YES$/;" k -ENUM_VALUES_PER_LINE doxygen.conf /^ENUM_VALUES_PER_LINE = 4$/;" k -EXAMPLE_PATH doxygen.conf /^EXAMPLE_PATH =$/;" k -EXAMPLE_PATTERNS doxygen.conf /^EXAMPLE_PATTERNS = *$/;" k -EXAMPLE_RECURSIVE doxygen.conf /^EXAMPLE_RECURSIVE = NO$/;" k -EXCLUDE doxygen.conf /^EXCLUDE =$/;" k -EXCLUDE_PATTERNS doxygen.conf /^EXCLUDE_PATTERNS =$/;" k -EXCLUDE_SYMBOLS doxygen.conf /^EXCLUDE_SYMBOLS =$/;" k -EXCLUDE_SYMLINKS doxygen.conf /^EXCLUDE_SYMLINKS = NO$/;" k -EXPAND_AS_DEFINED doxygen.conf /^EXPAND_AS_DEFINED =$/;" k -EXPAND_ONLY_PREDEF doxygen.conf /^EXPAND_ONLY_PREDEF = NO$/;" k -EXTENSION_MAPPING doxygen.conf /^EXTENSION_MAPPING =$/;" k -EXTERNAL_GROUPS doxygen.conf /^EXTERNAL_GROUPS = YES$/;" k -EXTERNAL_PAGES doxygen.conf /^EXTERNAL_PAGES = YES$/;" k -EXTERNAL_SEARCH doxygen.conf /^EXTERNAL_SEARCH = NO$/;" k -EXTERNAL_SEARCH_ID doxygen.conf /^EXTERNAL_SEARCH_ID =$/;" k -EXTRACT_ALL doxygen.conf /^EXTRACT_ALL = NO$/;" k -EXTRACT_ANON_NSPACES doxygen.conf /^EXTRACT_ANON_NSPACES = NO$/;" k -EXTRACT_LOCAL_CLASSES doxygen.conf /^EXTRACT_LOCAL_CLASSES = YES$/;" k -EXTRACT_LOCAL_METHODS doxygen.conf /^EXTRACT_LOCAL_METHODS = NO$/;" k -EXTRACT_PACKAGE doxygen.conf /^EXTRACT_PACKAGE = NO$/;" k -EXTRACT_PRIVATE doxygen.conf /^EXTRACT_PRIVATE = NO$/;" k -EXTRACT_PRIV_VIRTUAL doxygen.conf /^EXTRACT_PRIV_VIRTUAL = NO$/;" k -EXTRACT_STATIC doxygen.conf /^EXTRACT_STATIC = NO$/;" k -EXTRA_PACKAGES doxygen.conf /^EXTRA_PACKAGES =$/;" k -EXTRA_SEARCH_MAPPINGS doxygen.conf /^EXTRA_SEARCH_MAPPINGS =$/;" k -EXT_LINKS_IN_WINDOW doxygen.conf /^EXT_LINKS_IN_WINDOW = NO$/;" k -Ee docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -FILES docs/html/HTML/files.html /^

FILES<\/a><\/h2>$/;" i -FILES docs/html/HTML/index.html /^

FILES<\/h2>$/;" i -FILES docs/html/HTML/mains.html /^

FILES<\/h2>$/;" i -FILE_PATTERNS doxygen.conf /^FILE_PATTERNS = *.c \\$/;" k -FILE_VERSION_FILTER doxygen.conf /^FILE_VERSION_FILTER =$/;" k -FILTER_PATTERNS doxygen.conf /^FILTER_PATTERNS =$/;" k -FILTER_SOURCE_FILES doxygen.conf /^FILTER_SOURCE_FILES = NO$/;" k -FILTER_SOURCE_PATTERNS doxygen.conf /^FILTER_SOURCE_PATTERNS =$/;" k -FORCE_LOCAL_INCLUDES doxygen.conf /^FORCE_LOCAL_INCLUDES = NO$/;" k -FORMULA_FONTSIZE doxygen.conf /^FORMULA_FONTSIZE = 10$/;" k -FORMULA_TRANSPARENT doxygen.conf /^FORMULA_TRANSPARENT = YES$/;" k -FULL_PATH_NAMES doxygen.conf /^FULL_PATH_NAMES = YES$/;" k -Frontend app/lib/display.py /^class Frontend():$/;" c -Future Goals README.md /^## Future Goals$/;" s -GENERATE_AUTOGEN_DEF doxygen.conf /^GENERATE_AUTOGEN_DEF = NO$/;" k -GENERATE_BUGLIST doxygen.conf /^GENERATE_BUGLIST = YES$/;" k -GENERATE_CHI doxygen.conf /^GENERATE_CHI = NO$/;" k -GENERATE_DEPRECATEDLIST doxygen.conf /^GENERATE_DEPRECATEDLIST= YES$/;" k -GENERATE_DOCBOOK doxygen.conf /^GENERATE_DOCBOOK = NO$/;" k -GENERATE_DOCSET doxygen.conf /^GENERATE_DOCSET = NO$/;" k -GENERATE_ECLIPSEHELP doxygen.conf /^GENERATE_ECLIPSEHELP = NO$/;" k -GENERATE_HTML doxygen.conf /^GENERATE_HTML = YES$/;" k -GENERATE_HTMLHELP doxygen.conf /^GENERATE_HTMLHELP = YES$/;" k -GENERATE_LATEX doxygen.conf /^GENERATE_LATEX = NO$/;" k -GENERATE_LEGEND doxygen.conf /^GENERATE_LEGEND = YES$/;" k -GENERATE_MAN doxygen.conf /^GENERATE_MAN = YES$/;" k -GENERATE_PERLMOD doxygen.conf /^GENERATE_PERLMOD = NO$/;" k -GENERATE_QHP doxygen.conf /^GENERATE_QHP = NO$/;" k -GENERATE_RTF doxygen.conf /^GENERATE_RTF = NO$/;" k -GENERATE_TAGFILE doxygen.conf /^GENERATE_TAGFILE =$/;" k -GENERATE_TESTLIST doxygen.conf /^GENERATE_TESTLIST = YES$/;" k -GENERATE_TODOLIST doxygen.conf /^GENERATE_TODOLIST = YES$/;" k -GENERATE_TREEVIEW doxygen.conf /^GENERATE_TREEVIEW = YES$/;" k -GENERATE_XML doxygen.conf /^GENERATE_XML = NO$/;" k -GRAPHICAL_HIERARCHY doxygen.conf /^GRAPHICAL_HIERARCHY = YES$/;" k -GROUP_GRAPHS doxygen.conf /^GROUP_GRAPHS = YES$/;" k -GROUP_NESTED_COMPOUNDS doxygen.conf /^GROUP_NESTED_COMPOUNDS = NO$/;" k -Ge docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -HAVE_DOT doxygen.conf /^HAVE_DOT = NO$/;" k -HHC_LOCATION doxygen.conf /^HHC_LOCATION =$/;" k -HIDE_COMPOUND_REFERENCE doxygen.conf /^HIDE_COMPOUND_REFERENCE= NO$/;" k -HIDE_FRIEND_COMPOUNDS doxygen.conf /^HIDE_FRIEND_COMPOUNDS = NO$/;" k -HIDE_IN_BODY_DOCS doxygen.conf /^HIDE_IN_BODY_DOCS = NO$/;" k -HIDE_SCOPE_NAMES doxygen.conf /^HIDE_SCOPE_NAMES = NO$/;" k -HIDE_UNDOC_CLASSES doxygen.conf /^HIDE_UNDOC_CLASSES = NO$/;" k -HIDE_UNDOC_MEMBERS doxygen.conf /^HIDE_UNDOC_MEMBERS = NO$/;" k -HIDE_UNDOC_RELATIONS doxygen.conf /^HIDE_UNDOC_RELATIONS = YES$/;" k -HTML_COLORSTYLE_GAMMA doxygen.conf /^HTML_COLORSTYLE_GAMMA = 80$/;" k -HTML_COLORSTYLE_HUE doxygen.conf /^HTML_COLORSTYLE_HUE = 220$/;" k -HTML_COLORSTYLE_SAT doxygen.conf /^HTML_COLORSTYLE_SAT = 100$/;" k -HTML_DYNAMIC_MENUS doxygen.conf /^HTML_DYNAMIC_MENUS = YES$/;" k -HTML_DYNAMIC_SECTIONS doxygen.conf /^HTML_DYNAMIC_SECTIONS = YES$/;" k -HTML_EXTRA_FILES doxygen.conf /^HTML_EXTRA_FILES =$/;" k -HTML_EXTRA_STYLESHEET doxygen.conf /^HTML_EXTRA_STYLESHEET =$/;" k -HTML_FILE_EXTENSION doxygen.conf /^HTML_FILE_EXTENSION = .html$/;" k -HTML_FOOTER doxygen.conf /^HTML_FOOTER =$/;" k -HTML_HEADER doxygen.conf /^HTML_HEADER =$/;" k -HTML_INDEX_NUM_ENTRIES doxygen.conf /^HTML_INDEX_NUM_ENTRIES = 100$/;" k -HTML_OUTPUT doxygen.conf /^HTML_OUTPUT = html$/;" k -HTML_STYLESHEET doxygen.conf /^HTML_STYLESHEET =$/;" k -HTML_TIMESTAMP doxygen.conf /^HTML_TIMESTAMP = YES$/;" k -I docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -IDL_PROPERTY_SUPPORT doxygen.conf /^IDL_PROPERTY_SUPPORT = YES$/;" k -IGNORE_PREFIX doxygen.conf /^IGNORE_PREFIX =$/;" k -IMAGE_PATH doxygen.conf /^IMAGE_PATH =$/;" k -INCLUDED_BY_GRAPH doxygen.conf /^INCLUDED_BY_GRAPH = YES$/;" k -INCLUDE_FILE_PATTERNS doxygen.conf /^INCLUDE_FILE_PATTERNS =$/;" k -INCLUDE_GRAPH doxygen.conf /^INCLUDE_GRAPH = YES$/;" k -INCLUDE_PATH doxygen.conf /^INCLUDE_PATH =$/;" k -INHERIT_DOCS doxygen.conf /^INHERIT_DOCS = YES$/;" k -INLINE_GROUPED_CLASSES doxygen.conf /^INLINE_GROUPED_CLASSES = NO$/;" k -INLINE_INFO doxygen.conf /^INLINE_INFO = YES$/;" k -INLINE_INHERITED_MEMB doxygen.conf /^INLINE_INHERITED_MEMB = YES$/;" k -INLINE_SIMPLE_STRUCTS doxygen.conf /^INLINE_SIMPLE_STRUCTS = NO$/;" k -INLINE_SOURCES doxygen.conf /^INLINE_SOURCES = NO$/;" k -INPUT doxygen.conf /^INPUT = "app\/"$/;" k -INPUT_ENCODING doxygen.conf /^INPUT_ENCODING = UTF-8$/;" k -INPUT_FILTER doxygen.conf /^INPUT_FILTER =$/;" k -INSTALLED_APPS frontend/frontend/settings.py /^INSTALLED_APPS = [$/;" v -INTERACTIVE_SVG doxygen.conf /^INTERACTIVE_SVG = NO$/;" k -INTERNAL_DOCS doxygen.conf /^INTERNAL_DOCS = YES$/;" k -Ie docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -InitFiles app/lib/pyShelf.py /^class InitFiles:$/;" c -InterfaceConfig frontend/interface/apps.py /^class InterfaceConfig(AppConfig):$/;" c -JAVADOC_AUTOBRIEF doxygen.conf /^JAVADOC_AUTOBRIEF = NO$/;" k -JAVADOC_BANNER doxygen.conf /^JAVADOC_BANNER = NO$/;" k -LANGUAGE_CODE frontend/frontend/settings.py /^LANGUAGE_CODE = 'en-us'$/;" v -LATEX_BATCHMODE doxygen.conf /^LATEX_BATCHMODE = NO$/;" k -LATEX_BIB_STYLE doxygen.conf /^LATEX_BIB_STYLE = plain$/;" k -LATEX_CMD_NAME doxygen.conf /^LATEX_CMD_NAME =$/;" k -LATEX_EMOJI_DIRECTORY doxygen.conf /^LATEX_EMOJI_DIRECTORY =$/;" k -LATEX_EXTRA_FILES doxygen.conf /^LATEX_EXTRA_FILES =$/;" k -LATEX_EXTRA_STYLESHEET doxygen.conf /^LATEX_EXTRA_STYLESHEET =$/;" k -LATEX_FOOTER doxygen.conf /^LATEX_FOOTER =$/;" k -LATEX_HEADER doxygen.conf /^LATEX_HEADER =$/;" k -LATEX_HIDE_INDICES doxygen.conf /^LATEX_HIDE_INDICES = NO$/;" k -LATEX_MAKEINDEX_CMD doxygen.conf /^LATEX_MAKEINDEX_CMD = makeindex$/;" k -LATEX_OUTPUT doxygen.conf /^LATEX_OUTPUT = latex$/;" k -LATEX_SOURCE_CODE doxygen.conf /^LATEX_SOURCE_CODE = YES$/;" k -LATEX_TIMESTAMP doxygen.conf /^LATEX_TIMESTAMP = YES$/;" k -LAYOUT_FILE doxygen.conf /^LAYOUT_FILE =$/;" k -LOOKUP_CACHE_SIZE doxygen.conf /^LOOKUP_CACHE_SIZE = 0$/;" k -LibraryTest tests/test_library.py /^class LibraryTest(unittest.TestCase):$/;" c -M docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -MACRO_EXPANSION doxygen.conf /^MACRO_EXPANSION = NO$/;" k -MAINS docs/html/HTML/index.html /^

MAINS<\/h2>$/;" i -MAINS docs/html/HTML/mains.html /^

MAINS<\/h2>$/;" i -MAKEINDEX_CMD_NAME doxygen.conf /^MAKEINDEX_CMD_NAME = makeindex$/;" k -MAN_EXTENSION doxygen.conf /^MAN_EXTENSION = .3$/;" k -MAN_LINKS doxygen.conf /^MAN_LINKS = NO$/;" k -MAN_OUTPUT doxygen.conf /^MAN_OUTPUT = man$/;" k -MAN_SUBDIR doxygen.conf /^MAN_SUBDIR =$/;" k -MARKDOWN_SUPPORT doxygen.conf /^MARKDOWN_SUPPORT = YES$/;" k -MATHJAX_CODEFILE doxygen.conf /^MATHJAX_CODEFILE =$/;" k -MATHJAX_EXTENSIONS doxygen.conf /^MATHJAX_EXTENSIONS =$/;" k -MATHJAX_FORMAT doxygen.conf /^MATHJAX_FORMAT = HTML-CSS$/;" k -MATHJAX_RELPATH doxygen.conf /^MATHJAX_RELPATH = https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/mathjax\/2.7.5\/$/;" k -MAX_DOT_GRAPH_DEPTH doxygen.conf /^MAX_DOT_GRAPH_DEPTH = 0$/;" k -MAX_INITIALIZER_LINES doxygen.conf /^MAX_INITIALIZER_LINES = 30$/;" k -MIDDLEWARE frontend/frontend/settings.py /^MIDDLEWARE = [$/;" v -MSCFILE_DIRS doxygen.conf /^MSCFILE_DIRS =$/;" k -MULTILINE_CPP_IS_BRIEF doxygen.conf /^MULTILINE_CPP_IS_BRIEF = NO$/;" k -Me docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -Member Function Documentation docs/html/classapp_1_1lib_1_1api__hooks_1_1DuckDuckGo.html /^
duckduckgo related searching<\/pre> <\/div>

Member Function Documentation<\/h2>$/;" i -Member Function Documentation docs/html/classapp_1_1lib_1_1library_1_1Catalogue.html /^
Decodes and stores book information<\/pre>
Member Function Documentation<\/h2>$/;"	i
-Member Function Documentation	docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer.html	/^<\/pre> <\/div>

Member Function Documentation<\/h2>$/;" i -Member Function Documentation docs/html/classapp_1_1lib_1_1pyShelf_1_1InitFiles.html /^
First run file creation operations<\/pre> <\/div>
Contains all methods for system storage<\/pre> <\/d/;"	i
-Member Function Documentation	docs/man/man3/app_lib_api_hooks_DuckDuckGo.3	/^.SH "Member Function Documentation"$/;"	s	title:app.lib.api_hooks.DuckDuckGo
-Member Function Documentation	docs/man/man3/app_lib_display_Frontend.3	/^.SH "Member Function Documentation"$/;"	s	title:app.lib.display.Frontend
-Member Function Documentation	docs/man/man3/app_lib_library_Catalogue.3	/^.SH "Member Function Documentation"$/;"	s	title:app.lib.library.Catalogue
-Member Function Documentation	docs/man/man3/app_lib_pyShelf_BookDisplay.3	/^.SH "Member Function Documentation"$/;"	s	title:app.lib.pyShelf.BookDisplay
-Member Function Documentation	docs/man/man3/app_lib_pyShelf_BookServer.3	/^.SH "Member Function Documentation"$/;"	s	title:app.lib.pyShelf.BookServer
-Member Function Documentation	docs/man/man3/app_lib_pyShelf_InitFiles.3	/^.SH "Member Function Documentation"$/;"	s	title:app.lib.pyShelf.InitFiles
-Member Function Documentation	docs/man/man3/app_lib_storage_Storage.3	/^.SH "Member Function Documentation"$/;"	s	title:app.lib.storage.Storage
-Migration	frontend/interface/migrations/0001_initial.py	/^class Migration(migrations.Migration):$/;"	c
-NAME	docs/man/man3/app_config_Config.3	/^.SH NAME$/;"	s	title:app.config.Config
-NAME	docs/man/man3/app_lib_api_hooks_DuckDuckGo.3	/^.SH NAME$/;"	s	title:app.lib.api_hooks.DuckDuckGo
-NAME	docs/man/man3/app_lib_display_Frontend.3	/^.SH NAME$/;"	s	title:app.lib.display.Frontend
-NAME	docs/man/man3/app_lib_library_Catalogue.3	/^.SH NAME$/;"	s	title:app.lib.library.Catalogue
-NAME	docs/man/man3/app_lib_pyShelf_BookDisplay.3	/^.SH NAME$/;"	s	title:app.lib.pyShelf.BookDisplay
-NAME	docs/man/man3/app_lib_pyShelf_BookServer.3	/^.SH NAME$/;"	s	title:app.lib.pyShelf.BookServer
-NAME	docs/man/man3/app_lib_pyShelf_InitFiles.3	/^.SH NAME$/;"	s	title:app.lib.pyShelf.InitFiles
-NAME	docs/man/man3/app_lib_pyShelf_RequestHandler.3	/^.SH NAME$/;"	s	title:app.lib.pyShelf.RequestHandler
-NAME	docs/man/man3/app_lib_storage_Storage.3	/^.SH NAME$/;"	s	title:app.lib.storage.Storage
-Ne	docs/html/jquery.js	/^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;"	f
-OPTIMIZE_FOR_FORTRAN	doxygen.conf	/^OPTIMIZE_FOR_FORTRAN   = NO$/;"	k
-OPTIMIZE_OUTPUT_FOR_C	doxygen.conf	/^OPTIMIZE_OUTPUT_FOR_C  = NO$/;"	k
-OPTIMIZE_OUTPUT_JAVA	doxygen.conf	/^OPTIMIZE_OUTPUT_JAVA   = NO$/;"	k
-OPTIMIZE_OUTPUT_SLICE	doxygen.conf	/^OPTIMIZE_OUTPUT_SLICE  = NO$/;"	k
-OPTIMIZE_OUTPUT_VHDL	doxygen.conf	/^OPTIMIZE_OUTPUT_VHDL   = NO$/;"	k
-OUTPUT_DIRECTORY	doxygen.conf	/^OUTPUT_DIRECTORY       = "docs\/"$/;"	k
-OUTPUT_LANGUAGE	doxygen.conf	/^OUTPUT_LANGUAGE        = English$/;"	k
-OUTPUT_TEXT_DIRECTION	doxygen.conf	/^OUTPUT_TEXT_DIRECTION  = None$/;"	k
-Oe	docs/html/jquery.js	/^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;"	f
-Open Source E-book Server	app/static/index.html	/^            

Open Source E-book Server<\/h2>$/;" i -P docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -PAPER_TYPE doxygen.conf /^PAPER_TYPE = a4$/;" k -PDF_HYPERLINKS doxygen.conf /^PDF_HYPERLINKS = YES$/;" k -PERLMOD_LATEX doxygen.conf /^PERLMOD_LATEX = NO$/;" k -PERLMOD_MAKEVAR_PREFIX doxygen.conf /^PERLMOD_MAKEVAR_PREFIX =$/;" k -PERLMOD_PRETTY doxygen.conf /^PERLMOD_PRETTY = YES$/;" k -PLANTUML_CFG_FILE doxygen.conf /^PLANTUML_CFG_FILE =$/;" k -PLANTUML_INCLUDE_PATH doxygen.conf /^PLANTUML_INCLUDE_PATH =$/;" k -PLANTUML_JAR_PATH doxygen.conf /^PLANTUML_JAR_PATH =$/;" k -PREDEFINED doxygen.conf /^PREDEFINED =$/;" k -PROJECT_BRIEF doxygen.conf /^PROJECT_BRIEF = "Open source, console based E-book server"$/;" k -PROJECT_LOGO doxygen.conf /^PROJECT_LOGO =$/;" k -PROJECT_NAME doxygen.conf /^PROJECT_NAME = "pyShelf Open Source Ebook Server"$/;" k -PROJECT_NUMBER doxygen.conf /^PROJECT_NUMBER = 0.1.0$/;" k -Pe docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -PlacementCalculator docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -Public Attributes docs/html/classapp_1_1config_1_1Config.html /^Public Attributes<\/h2><\/td><\/tr>$/;" i -Public Attributes docs/html/classapp_1_1lib_1_1api__hooks_1_1DuckDuckGo.html /^Public Attributes<\/h2><\/td><\/tr>$/;" i -Public Attributes docs/html/classapp_1_1lib_1_1display_1_1Frontend.html /^Public Attributes<\/h2><\/td><\/tr>$/;" i -Public Attributes docs/html/classapp_1_1lib_1_1library_1_1Catalogue.html /^Public Attributes<\/h2><\/td><\/tr>$/;" i -Public Attributes docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay.html /^Public Attributes<\/h2><\/td><\/tr>$/;" i -Public Attributes docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer.html /^Public Attributes<\/h2><\/td><\/tr>$/;" i -Public Attributes docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler.html /^Public Attributes<\/h2><\/td><\/tr>$/;" i -Public Attributes docs/html/classapp_1_1lib_1_1storage_1_1Storage.html /^Public Attributes<\/h2><\/td><\/tr>$/;" i -Public Member Functions docs/html/classapp_1_1config_1_1Config.html /^Public Member Functions<\/h2><\/td><\/tr>$/;" i -Public Member Functions docs/html/classapp_1_1lib_1_1api__hooks_1_1DuckDuckGo.html /^Public Member Functions<\/h2><\/td><\/tr>$/;" i -Public Member Functions docs/html/classapp_1_1lib_1_1display_1_1Frontend.html /^Public Member Functions<\/h2><\/td><\/tr>$/;" i -Public Member Functions docs/html/classapp_1_1lib_1_1library_1_1Catalogue.html /^Public Member Functions<\/h2><\/td><\/tr>$/;" i -Public Member Functions docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay.html /^Public Member Functions<\/h2><\/td><\/tr>$/;" i -Public Member Functions docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer.html /^Public Member Functions<\/h2><\/td><\/tr>$/;" i -Public Member Functions docs/html/classapp_1_1lib_1_1pyShelf_1_1InitFiles.html /^Public Member Functions<\/h2><\/td><\/tr>$/;" i -Public Member Functions docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler.html /^Public Member Functions<\/h2><\/td><\/tr>$/;" i -Public Member Functions docs/html/classapp_1_1lib_1_1storage_1_1Storage.html /^Public Member Functions<\/h2><\/td><\/tr>$/;" i -QCH_FILE doxygen.conf /^QCH_FILE =$/;" k -QHG_LOCATION doxygen.conf /^QHG_LOCATION =$/;" k -QHP_CUST_FILTER_ATTRS doxygen.conf /^QHP_CUST_FILTER_ATTRS =$/;" k -QHP_CUST_FILTER_NAME doxygen.conf /^QHP_CUST_FILTER_NAME =$/;" k -QHP_NAMESPACE doxygen.conf /^QHP_NAMESPACE = org.doxygen.Project$/;" k -QHP_SECT_FILTER_ATTRS doxygen.conf /^QHP_SECT_FILTER_ATTRS =$/;" k -QHP_VIRTUAL_FOLDER doxygen.conf /^QHP_VIRTUAL_FOLDER = doc$/;" k -QT_AUTOBRIEF doxygen.conf /^QT_AUTOBRIEF = NO$/;" k -QUIET doxygen.conf /^QUIET = NO$/;" k -RECURSIVE doxygen.conf /^RECURSIVE = YES$/;" k -REFERENCED_BY_RELATION doxygen.conf /^REFERENCED_BY_RELATION = NO$/;" k -REFERENCES_LINK_SOURCE doxygen.conf /^REFERENCES_LINK_SOURCE = YES$/;" k -REFERENCES_RELATION doxygen.conf /^REFERENCES_RELATION = NO$/;" k -REPEAT_BRIEF doxygen.conf /^REPEAT_BRIEF = YES$/;" k -ROOT_URLCONF frontend/frontend/settings.py /^ROOT_URLCONF = 'frontend.urls'$/;" v -RTF_EXTENSIONS_FILE doxygen.conf /^RTF_EXTENSIONS_FILE =$/;" k -RTF_HYPERLINKS doxygen.conf /^RTF_HYPERLINKS = NO$/;" k -RTF_OUTPUT doxygen.conf /^RTF_OUTPUT = rtf$/;" k -RTF_SOURCE_CODE doxygen.conf /^RTF_SOURCE_CODE = NO$/;" k -RTF_STYLESHEET_FILE doxygen.conf /^RTF_STYLESHEET_FILE =$/;" k -Re docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -RequestHandler app/lib/pyShelf.py /^class RequestHandler(BaseHTTPRequestHandler):$/;" c -SEARCHDATA_FILE doxygen.conf /^SEARCHDATA_FILE = searchdata.xml$/;" k -SEARCHENGINE doxygen.conf /^SEARCHENGINE = YES$/;" k -SEARCHENGINE_URL doxygen.conf /^SEARCHENGINE_URL =$/;" k -SEARCH_INCLUDES doxygen.conf /^SEARCH_INCLUDES = YES$/;" k -SECRET_KEY frontend/frontend/settings.py /^SECRET_KEY = '@(9b9jslgg41u1u=mr)-2*-n2x0vef0zsy39*z@sz18&tvow18'$/;" v -SEPARATE_MEMBER_PAGES doxygen.conf /^SEPARATE_MEMBER_PAGES = NO$/;" k -SERVER_BASED_SEARCH doxygen.conf /^SERVER_BASED_SEARCH = NO$/;" k -SHORT_NAMES doxygen.conf /^SHORT_NAMES = NO$/;" k -SHOW_FILES doxygen.conf /^SHOW_FILES = YES$/;" k -SHOW_GROUPED_MEMB_INC doxygen.conf /^SHOW_GROUPED_MEMB_INC = NO$/;" k -SHOW_INCLUDE_FILES doxygen.conf /^SHOW_INCLUDE_FILES = YES$/;" k -SHOW_NAMESPACES doxygen.conf /^SHOW_NAMESPACES = YES$/;" k -SHOW_USED_FILES doxygen.conf /^SHOW_USED_FILES = YES$/;" k -SIP_SUPPORT doxygen.conf /^SIP_SUPPORT = NO$/;" k -SKIP_FUNCTION_MACROS doxygen.conf /^SKIP_FUNCTION_MACROS = YES$/;" k -SORT_BRIEF_DOCS doxygen.conf /^SORT_BRIEF_DOCS = NO$/;" k -SORT_BY_SCOPE_NAME doxygen.conf /^SORT_BY_SCOPE_NAME = NO$/;" k -SORT_GROUP_NAMES doxygen.conf /^SORT_GROUP_NAMES = NO$/;" k -SORT_MEMBERS_CTORS_1ST doxygen.conf /^SORT_MEMBERS_CTORS_1ST = NO$/;" k -SORT_MEMBER_DOCS doxygen.conf /^SORT_MEMBER_DOCS = YES$/;" k -SOURCE_BROWSER doxygen.conf /^SOURCE_BROWSER = YES$/;" k -SOURCE_TOOLTIPS doxygen.conf /^SOURCE_TOOLTIPS = YES$/;" k -STATIC_URL frontend/frontend/settings.py /^STATIC_URL = '\/static\/'$/;" v -STRICT_PROTO_MATCHING doxygen.conf /^STRICT_PROTO_MATCHING = NO$/;" k -STRIP_CODE_COMMENTS doxygen.conf /^STRIP_CODE_COMMENTS = YES$/;" k -STRIP_FROM_INC_PATH doxygen.conf /^STRIP_FROM_INC_PATH =$/;" k -STRIP_FROM_PATH doxygen.conf /^STRIP_FROM_PATH =$/;" k -SUBGROUPING doxygen.conf /^SUBGROUPING = YES$/;" k -SYNOPSIS docs/man/man3/app_config_Config.3 /^.SH SYNOPSIS$/;" s title:app.config.Config -SYNOPSIS docs/man/man3/app_lib_api_hooks_DuckDuckGo.3 /^.SH SYNOPSIS$/;" s title:app.lib.api_hooks.DuckDuckGo -SYNOPSIS docs/man/man3/app_lib_display_Frontend.3 /^.SH SYNOPSIS$/;" s title:app.lib.display.Frontend -SYNOPSIS docs/man/man3/app_lib_library_Catalogue.3 /^.SH SYNOPSIS$/;" s title:app.lib.library.Catalogue -SYNOPSIS docs/man/man3/app_lib_pyShelf_BookDisplay.3 /^.SH SYNOPSIS$/;" s title:app.lib.pyShelf.BookDisplay -SYNOPSIS docs/man/man3/app_lib_pyShelf_BookServer.3 /^.SH SYNOPSIS$/;" s title:app.lib.pyShelf.BookServer -SYNOPSIS docs/man/man3/app_lib_pyShelf_InitFiles.3 /^.SH SYNOPSIS$/;" s title:app.lib.pyShelf.InitFiles -SYNOPSIS docs/man/man3/app_lib_pyShelf_RequestHandler.3 /^.SH SYNOPSIS$/;" s title:app.lib.pyShelf.RequestHandler -SYNOPSIS docs/man/man3/app_lib_storage_Storage.3 /^.SH SYNOPSIS$/;" s title:app.lib.storage.Storage -Se docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -Server app/main.py /^Server = BookServer()$/;" v -SmartMenus docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c class:$ -Storage app/lib/pyShelf.py /^Storage = Storage()$/;" v -Storage app/lib/storage.py /^class Storage:$/;" c -StorageTest tests/test_storage.py /^class StorageTest(unittest.TestCase):$/;" c -SysIoTest tests/test_sysio.py /^class SysIoTest(unittest.TestCase):$/;" c -T docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" c class:AnonymousFunction4d6c64ac18000 -TAB_SIZE doxygen.conf /^TAB_SIZE = 4$/;" k -TAGFILES doxygen.conf /^TAGFILES =$/;" k -TCL_SUBST doxygen.conf /^TCL_SUBST =$/;" k -TEMPLATES frontend/frontend/settings.py /^TEMPLATES = [$/;" v -TEMPLATE_RELATIONS doxygen.conf /^TEMPLATE_RELATIONS = NO$/;" k -TIME_ZONE frontend/frontend/settings.py /^TIME_ZONE = 'UTC'$/;" v -TOC_EXPAND doxygen.conf /^TOC_EXPAND = YES$/;" k -TOC_INCLUDE_HEADINGS doxygen.conf /^TOC_INCLUDE_HEADINGS = 5$/;" k -TREEVIEW_WIDTH doxygen.conf /^TREEVIEW_WIDTH = 250$/;" k -TYPEDEF_HIDES_STRUCT doxygen.conf /^TYPEDEF_HIDES_STRUCT = NO$/;" k -Te docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -TooltipController docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -UI app/main.py /^UI = Frontend()$/;" v -UML_LIMIT_NUM_FIELDS doxygen.conf /^UML_LIMIT_NUM_FIELDS = 10$/;" k -UML_LOOK doxygen.conf /^UML_LOOK = NO$/;" k -USE_HTAGS doxygen.conf /^USE_HTAGS = YES$/;" k -USE_I18N frontend/frontend/settings.py /^USE_I18N = True$/;" v -USE_L10N frontend/frontend/settings.py /^USE_L10N = True$/;" v -USE_MATHJAX doxygen.conf /^USE_MATHJAX = NO$/;" k -USE_MDFILE_AS_MAINPAGE doxygen.conf /^USE_MDFILE_AS_MAINPAGE =$/;" k -USE_PDFLATEX doxygen.conf /^USE_PDFLATEX = YES$/;" k -USE_TZ frontend/frontend/settings.py /^USE_TZ = True$/;" v -Usage of Links docs/html/HTML/help.html /^

Usage of Links<\/h2>$/;" i -V docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -VERBATIM_HEADERS doxygen.conf /^VERBATIM_HEADERS = YES$/;" k -W docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -WARNINGS doxygen.conf /^WARNINGS = YES$/;" k -WARN_AS_ERROR doxygen.conf /^WARN_AS_ERROR = NO$/;" k -WARN_FORMAT doxygen.conf /^WARN_FORMAT = "$file:$line: $text"$/;" k -WARN_IF_DOC_ERROR doxygen.conf /^WARN_IF_DOC_ERROR = YES$/;" k -WARN_IF_UNDOCUMENTED doxygen.conf /^WARN_IF_UNDOCUMENTED = YES$/;" k -WARN_LOGFILE doxygen.conf /^WARN_LOGFILE = "docs\/warn.log"$/;" k -WARN_NO_PARAMDOC doxygen.conf /^WARN_NO_PARAMDOC = YES$/;" k -WSGI_APPLICATION frontend/frontend/settings.py /^WSGI_APPLICATION = 'frontend.wsgi.application'$/;" v -We docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -Widget docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c class:t -Widget docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:t -X docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -XML_NS_MEMB_FILE_SCOPE doxygen.conf /^XML_NS_MEMB_FILE_SCOPE = NO$/;" k -XML_OUTPUT doxygen.conf /^XML_OUTPUT = xml$/;" k -XML_PROGRAMLISTING doxygen.conf /^XML_PROGRAMLISTING = YES$/;" k -Y docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" c -Ze docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -__init__ app/config.py /^ def __init__(self):$/;" m class:Config -__init__ app/lib/api_hooks.py /^ def __init__(self):$/;" m class:DuckDuckGo -__init__ app/lib/display.py /^ def __init__(self, dimensions=[0, 0]):$/;" m class:Frontend -__init__ app/lib/library.py /^ def __init__(self):$/;" m class:Catalogue -__init__ app/lib/pyShelf.py /^ def __init__(self):$/;" m class:BookDisplay -__init__ app/lib/pyShelf.py /^ def __init__(self):$/;" m class:BookServer -__init__ app/lib/pyShelf.py /^ def __init__(self, file_array):$/;" m class:InitFiles -__init__ app/lib/storage.py /^ def __init__(self):$/;" m class:Storage -__init__ tests/test_bookserver.py /^ def __init__(self):$/;" m class:BookServerTest -_addClass docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -_classes docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -_create docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:t.Widget -_createWidget docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -_delay docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -_destroy docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:t.Widget -_e docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -_focusable docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -_getCreateEventData docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:t.Widget -_getCreateOptions docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -_hoverable docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -_init docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:t.Widget -_mouseDestroy docs/html/jquery.js /^!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a./;" f function:b -_mouseInit docs/html/jquery.js /^!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a./;" f function:b -_off docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -_on docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -_removeClass docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -_renderAxis docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:AnonymousFunction4d6c64ac21200 -_setOption docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -_setOptionClasses docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -_setOptionDisabled docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -_setOptions docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -_t docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -_toggleClass docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -_touchEnd docs/html/jquery.js /^!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a./;" f function:b -_touchMove docs/html/jquery.js /^!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a./;" f function:b -_touchStart docs/html/jquery.js /^!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a./;" f function:b -_trigger docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -_untrackClassesElement docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -a docs/html/doxygen.css /^a {$/;" s -a docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" c class:AnonymousFunction4d6c64aca900 -a docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac13f00 -a docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac14000 -a docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64acb000 -a docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c class:AnonymousFunction4d6c64ac1e700 -a.code docs/html/doxygen.css /^a.code, a.code:visited, a.line, a.line:visited {$/;" c -a.code:visited docs/html/doxygen.css /^a.code, a.code:visited, a.line, a.line:visited {$/;" c -a.codeRef docs/html/doxygen.css /^a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {$/;" c -a.codeRef:visited docs/html/doxygen.css /^a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {$/;" c -a.el docs/html/doxygen.css /^a.el {$/;" c -a.elRef docs/html/doxygen.css /^a.elRef {$/;" c -a.line docs/html/doxygen.css /^a.code, a.code:visited, a.line, a.line:visited {$/;" c -a.line:visited docs/html/doxygen.css /^a.code, a.code:visited, a.line, a.line:visited {$/;" c -a.lineRef docs/html/doxygen.css /^a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {$/;" c -a.lineRef:visited docs/html/doxygen.css /^a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {$/;" c -a.qindex docs/html/doxygen.css /^a.qindex {$/;" c -a.qindexHL docs/html/doxygen.css /^a.qindexHL {$/;" c -a.visited docs/html/HTML/style.css /^a.visited { color: gray; }$/;" c -a00c793aa4f36d6c4623db5509153623a docs/html/classapp_1_1lib_1_1library_1_1Catalogue.html /^<\/a>$/;" I -a062e40dcea67408d1cf36b0319316408 docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler.html /^<\/a>$/;" I -a3580927488f4d8571fcd4c7bd7ae7481 docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay.html /^<\/a>$/;" I -a56cbc79336b86698a6954a56ee29b167 docs/html/classapp_1_1config_1_1Config.html /^<\/a>$/;" I -a6a62aedc980975e37cd10eb6006b18a3 docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer.html /^<\/a>$/;" I -a6ea053a288f542ca0c22dbb8f4317a7b docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay.html /^<\/a>$/;" I -a74b9d8ea8187dab68396d11fb4f98542 docs/html/classapp_1_1lib_1_1library_1_1Catalogue.html /^<\/a>$/;" I -a8f4d613f2476e124202a62b224d3cc2b docs/html/classapp_1_1lib_1_1display_1_1Frontend.html /^<\/a>$/;" I -a9166da1804181b156a264498c6df9301 docs/html/classapp_1_1lib_1_1storage_1_1Storage.html /^<\/a>$/;" I -a:hover docs/html/doxygen.css /^a:hover {$/;" s -aa3319ca207a2d9b087307b71246d13b8 docs/html/classapp_1_1lib_1_1storage_1_1Storage.html /^<\/a>$/;" I -ab462c2dc90bdabbea4f885dbffb7d8b5 docs/html/classapp_1_1lib_1_1api__hooks_1_1DuckDuckGo.html /^<\/a>$/;" I -ab8a381a4ce3f5ab9aa070d286d41d6ec docs/html/classapp_1_1lib_1_1storage_1_1Storage.html /^<\/a>$/;" I -ab9842f8c0937e6e23fa9562ff4c9d9b6 docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer.html /^<\/a>$/;" I -abort docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" m class:AnonymousFunction4d6c64ac18000.T -ac024ff106efd6c9dd533fb88a982fa5c docs/html/classapp_1_1lib_1_1display_1_1Frontend.html /^<\/a>$/;" I -ac0c087b439c6b50241b08ee88c44a0d2 docs/html/classapp_1_1lib_1_1api__hooks_1_1DuckDuckGo.html /^<\/a>$/;" I -acd24ea8f14df2ef4bdfdb56f5480dea8 docs/html/classapp_1_1lib_1_1library_1_1Catalogue.html /^<\/a>$/;" I -acd81b86d200fed8ea177e16dff358237 docs/html/classapp_1_1config_1_1Config.html /^<\/a>$/;" I -aeb4e5e1f4d450de77e71b1b8fd4b30ba docs/html/classapp_1_1lib_1_1storage_1_1Storage.html /^<\/a>$/;" I -aeef7a8b53b250749b2147649a32f6ec9 docs/html/classapp_1_1lib_1_1storage_1_1Storage.html /^<\/a>$/;" I -af15b4054633e9a7e8043d2a33b520acb docs/html/classapp_1_1config_1_1Config.html /^<\/a>$/;" I -af6d4779a748534f2b6d2226de791a636 docs/html/classapp_1_1lib_1_1library_1_1Catalogue.html /^<\/a>$/;" I -afdf0fe4499eb1e4d462fa24d6f542b90 docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer.html /^<\/a>$/;" I -aff6ec0378811d900c8768354aa08a66b docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay.html /^$/;" I -app.config.Config docs/man/man3/app_config_Config.3 /^.TH "app.config.Config" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Ebook Server" \\/;" t -app.lib.api_hooks.DuckDuckGo docs/man/man3/app_lib_api_hooks_DuckDuckGo.3 /^.TH "app.lib.api_hooks.DuckDuckGo" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Eboo/;" t -app.lib.display.Frontend docs/man/man3/app_lib_display_Frontend.3 /^.TH "app.lib.display.Frontend" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Ebook Se/;" t -app.lib.library.Catalogue docs/man/man3/app_lib_library_Catalogue.3 /^.TH "app.lib.library.Catalogue" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Ebook S/;" t -app.lib.pyShelf.BookDisplay docs/man/man3/app_lib_pyShelf_BookDisplay.3 /^.TH "app.lib.pyShelf.BookDisplay" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Ebook/;" t -app.lib.pyShelf.BookServer docs/man/man3/app_lib_pyShelf_BookServer.3 /^.TH "app.lib.pyShelf.BookServer" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Ebook /;" t -app.lib.pyShelf.InitFiles docs/man/man3/app_lib_pyShelf_InitFiles.3 /^.TH "app.lib.pyShelf.InitFiles" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Ebook S/;" t -app.lib.pyShelf.RequestHandler docs/man/man3/app_lib_pyShelf_RequestHandler.3 /^.TH "app.lib.pyShelf.RequestHandler" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Eb/;" t -app.lib.storage.Storage docs/man/man3/app_lib_storage_Storage.3 /^.TH "app.lib.storage.Storage" 3 "Sun Nov 10 2019" "Version 0.1.0" "pyShelf Open Source Ebook Ser/;" t -app_Headers app/lib/display.py /^ def app_Headers(self):$/;" m class:Frontend -app_body app/lib/display.py /^ def app_body(self, nav, shelf):$/;" m class:Frontend -app_footer app/lib/display.py /^ def app_footer(self):$/;" m class:Frontend -application frontend/frontend/wsgi.py /^application = get_wsgi_application()$/;" v -arr_0_ docs/html/annotated.html /^/;" I -arr_0_ docs/html/files.html /^/;" I -arr_0_0_ docs/html/annotated.html /^ <\/span/;" I -arr_0_0_ docs/html/files.html /^ <\/span/;" I -arr_0_1_ docs/html/annotated.html /^ <\/span/;" I -arr_0_1_0_ docs/html/annotated.html /^ <\/sp/;" I -arr_8_ docs/html/hierarchy.html /^/;" I -author frontend/interface/models.py /^ author = models.CharField(max_length=255, blank=True)$/;" v class:books -axis docs/html/jquery.js /^;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefine/;" p class:p.defaults -b docs/html/jquery.js /^!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a./;" v -b docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -be docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -beginShowTip docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f function:TooltipController -bindType docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" p class:k.event.special -blockquote docs/html/doxygen.css /^blockquote {$/;" s -blockquote.DocNodeRTL docs/html/doxygen.css /^blockquote.DocNodeRTL {$/;" c -body app/static/css/main.css /^body{$/;" s -body docs/html/HTML/style.css /^body { color: #191970; background-color: #f5f5dc; }$/;" s -body docs/html/doxygen.css /^ body { overflow:visible; }$/;" s -body docs/html/doxygen.css /^body {$/;" s -body docs/html/doxygen.css /^body, table, div, p, dl {$/;" s -book_paths_list app/lib/storage.py /^ def book_paths_list(self):$/;" m class:Storage -books frontend/interface/models.py /^class books(models.Model):$/;" c -booksPerPage app/lib/pyShelf.py /^ def booksPerPage(self, screen_size):$/;" m class:BookDisplay -bottom docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" p class:AnonymousFunction4d6c64ac24000.Collision -bottomToTopSubMenus docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" p class:$.fn.smartmenus.defaults -bridge docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:t.widget -bt docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -c docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac9a00 -cancelClose docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f function:DisplayController -cancelTimer docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f function:DisplayController -caption docs/html/doxygen.css /^caption {$/;" s -catch docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" m class:AnonymousFunction4d6c64aca900.a -categories frontend/interface/models.py /^ categories = models.CharField(max_length=255, blank=True)$/;" v class:books -ce docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -checkForIntent docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f function:DisplayController -children docs/html/menudata.js /^var menudata={children:[$/;" p class:menudata -classes docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:t.Widget.options -cleanData docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:t -close app/lib/pyShelf.py /^ def close(self):$/;" m class:BookServer -close app/lib/storage.py /^ def close(self):$/;" m class:Storage -closeAnyDelayed docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f function:DisplayController -closeDelay docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -closeDelayTimeout docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" p class:AnonymousFunction4d6c64ac24000.session -closeDesyncedTip docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -closeTooltip docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f function:DisplayController -close_prompt app/lib/pyShelf.py /^ def close_prompt(self):$/;" m class:BookServer -code docs/html/doxygen.css /^tt, code, kbd, samp$/;" s -collapsibleBehavior docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" p class:$.fn.smartmenus.defaults -collapsibleHideDuration docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" p class:$.fn.smartmenus.defaults -collapsibleHideFunction docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" m class:$.fn.smartmenus.defaults -collapsibleShowDuration docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" p class:$.fn.smartmenus.defaults -collapsibleShowFunction docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" m class:$.fn.smartmenus.defaults -commit app/lib/storage.py /^ def commit(self):$/;" m class:Storage -compare_shelf_current app/lib/library.py /^ def compare_shelf_current(self):$/;" m class:Catalogue -compile app/lib/display.py /^ def compile(self, nav, shelf):$/;" m class:Frontend -complete docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:r -computePlacementCoords docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f function:PlacementCalculator -config app/lib/library.py /^config = Config()$/;" v -config app/lib/pyShelf.py /^config = Config()$/;" v -config app/main.py /^config = Config() # Get configuration settings$/;" v -countFlags docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -cover frontend/interface/models.py /^ cover = models.BinaryField(blank=True, editable=True)$/;" v class:books -create docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:t.Widget.options -create_tables app/lib/storage.py /^ def create_tables(self):$/;" m class:Storage -cssHooks docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" c class:k -ct docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -currentX docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" p class:AnonymousFunction4d6c64ac24000.session -currentY docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" p class:AnonymousFunction4d6c64ac24000.session -d docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -dataSM docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:$.fn -database app/lib/storage.py /^ def database(self):$/;" m class:Storage -db_pointer app/lib/storage.py /^db_pointer = Config().catalogue_db$/;" v -de docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -defaultElement docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:t.Widget -defaults docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c class:$.fn.smartmenus -defaults docs/html/jquery.js /^;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefine/;" c class:p -delayInProgress docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" p class:AnonymousFunction4d6c64ac24000.session -delegateType docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" p class:k.event.special -dependencies frontend/interface/migrations/0001_initial.py /^ dependencies = [$/;" v class:Migration -destroy docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -desyncTimeout docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" p class:AnonymousFunction4d6c64ac24000.session -details docs/html/classapp_1_1config_1_1Config.html /^<\/a>

Detailed Description<\/h2>$/;" I -details docs/html/classapp_1_1config_1_1Config.html /^<\/a>

Detailed Description<\/h2>$/;" a -details docs/html/classapp_1_1lib_1_1api__hooks_1_1DuckDuckGo.html /^<\/a>

Detailed Description<\/h2>$/;" I -details docs/html/classapp_1_1lib_1_1api__hooks_1_1DuckDuckGo.html /^<\/a>

Detailed Description<\/h2>$/;" a -details docs/html/classapp_1_1lib_1_1display_1_1Frontend.html /^<\/a>

Detailed Description<\/h2>$/;" I -details docs/html/classapp_1_1lib_1_1display_1_1Frontend.html /^<\/a>

Detailed Description<\/h2>$/;" a -details docs/html/classapp_1_1lib_1_1library_1_1Catalogue.html /^<\/a>

Detailed Description<\/h2>$/;" I -details docs/html/classapp_1_1lib_1_1library_1_1Catalogue.html /^<\/a>

Detailed Description<\/h2>$/;" a -details docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay.html /^<\/a>

Detailed Description<\/h2>$/;" I -details docs/html/classapp_1_1lib_1_1pyShelf_1_1BookDisplay.html /^<\/a>

Detailed Description<\/h2>$/;" a -details docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer.html /^<\/a>

Detailed Description<\/h2>$/;" I -details docs/html/classapp_1_1lib_1_1pyShelf_1_1BookServer.html /^<\/a>

Detailed Description<\/h2>$/;" a -details docs/html/classapp_1_1lib_1_1pyShelf_1_1InitFiles.html /^<\/a>

Detailed Description<\/h2>$/;" I -details docs/html/classapp_1_1lib_1_1pyShelf_1_1InitFiles.html /^<\/a>

Detailed Description<\/h2>$/;" a -details docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler.html /^<\/a>

Detailed Description<\/h2>$/;" I -details docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler.html /^<\/a>

Detailed Description<\/h2>$/;" a -details docs/html/classapp_1_1lib_1_1storage_1_1Storage.html /^<\/a>

Detailed Description<\/h2>$/;" I -details docs/html/classapp_1_1lib_1_1storage_1_1Storage.html /^<\/a>

Detailed Description<\/h2>$/;" a -disable docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -disabled docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:t.Widget.options -div docs/html/doxygen.css /^body, table, div, p, dl {$/;" s -div.ah docs/html/doxygen.css /^div.ah, span.ah {$/;" c -div.center docs/html/doxygen.css /^div.center {$/;" c -div.center img docs/html/doxygen.css /^div.center img {$/;" s -div.classindex span.ai docs/html/doxygen.css /^div.classindex span.ai {$/;" c -div.classindex ul docs/html/doxygen.css /^div.classindex ul {$/;" s -div.contents docs/html/doxygen.css /^div.contents {$/;" c -div.directory docs/html/doxygen.css /^div.directory {$/;" c -div.dynheader docs/html/doxygen.css /^div.dynheader {$/;" c -div.fragment docs/html/doxygen.css /^div.fragment {$/;" c -div.groupHeader docs/html/doxygen.css /^div.groupHeader {$/;" c -div.groupText docs/html/doxygen.css /^div.groupText {$/;" c -div.header docs/html/doxygen.css /^div.header$/;" c -div.headertitle docs/html/doxygen.css /^div.headertitle$/;" c -div.ingroups docs/html/doxygen.css /^div.ingroups$/;" c -div.ingroups a docs/html/doxygen.css /^div.ingroups a$/;" s -div.line docs/html/doxygen.css /^div.line {$/;" c -div.line.glow docs/html/doxygen.css /^div.line.glow {$/;" c -div.line:after docs/html/doxygen.css /^div.line:after {$/;" c -div.navpath docs/html/doxygen.css /^div.qindex, div.navpath {$/;" c -div.navtab docs/html/doxygen.css /^div.navtab {$/;" c -div.navtab docs/html/doxygen.css /^div.qindex, div.navtab{$/;" c -div.qindex docs/html/doxygen.css /^div.qindex, div.navpath {$/;" c -div.qindex docs/html/doxygen.css /^div.qindex, div.navtab{$/;" c -div.summary docs/html/doxygen.css /^div.summary$/;" c -div.summary a docs/html/doxygen.css /^div.summary a$/;" s -div.toc docs/html/doxygen.css /^div.toc {$/;" c -div.toc h3 docs/html/doxygen.css /^div.toc h3 {$/;" s -div.toc li docs/html/doxygen.css /^div.toc li {$/;" s -div.toc li.level1 docs/html/doxygen.css /^div.toc li.level1 {$/;" c -div.toc li.level2 docs/html/doxygen.css /^div.toc li.level2 {$/;" c -div.toc li.level3 docs/html/doxygen.css /^div.toc li.level3 {$/;" c -div.toc li.level4 docs/html/doxygen.css /^div.toc li.level4 {$/;" c -div.toc ul docs/html/doxygen.css /^div.toc ul {$/;" s -div.zoom docs/html/doxygen.css /^div.zoom$/;" c -dl docs/html/doxygen.css /^body, table, div, p, dl {$/;" s -dl docs/html/doxygen.css /^dl {$/;" s -dl.attention docs/html/doxygen.css /^dl.warning, dl.attention {$/;" c -dl.attention.DocNodeRTL docs/html/doxygen.css /^dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {$/;" c -dl.bug docs/html/doxygen.css /^dl.bug {$/;" c -dl.bug.DocNodeRTL docs/html/doxygen.css /^dl.bug.DocNodeRTL {$/;" c -dl.citelist docs/html/doxygen.css /^dl.citelist {$/;" c -dl.citelist dd docs/html/doxygen.css /^dl.citelist dd {$/;" s -dl.citelist dt docs/html/doxygen.css /^dl.citelist dt {$/;" s -dl.deprecated docs/html/doxygen.css /^dl.deprecated {$/;" c -dl.deprecated.DocNodeRTL docs/html/doxygen.css /^dl.deprecated.DocNodeRTL {$/;" c -dl.el docs/html/doxygen.css /^dl.el {$/;" c -dl.invariant docs/html/doxygen.css /^dl.pre, dl.post, dl.invariant {$/;" c -dl.invariant.DocNodeRTL docs/html/doxygen.css /^dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {$/;" c -dl.note docs/html/doxygen.css /^dl.note {$/;" c -dl.note.DocNodeRTL docs/html/doxygen.css /^dl.note.DocNodeRTL {$/;" c -dl.post docs/html/doxygen.css /^dl.pre, dl.post, dl.invariant {$/;" c -dl.post.DocNodeRTL docs/html/doxygen.css /^dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {$/;" c -dl.pre docs/html/doxygen.css /^dl.pre, dl.post, dl.invariant {$/;" c -dl.pre.DocNodeRTL docs/html/doxygen.css /^dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {$/;" c -dl.reflist dd docs/html/doxygen.css /^.memdoc, dl.reflist dd {$/;" s -dl.reflist dd docs/html/doxygen.css /^dl.reflist dd {$/;" s -dl.reflist dt docs/html/doxygen.css /^.memproto, dl.reflist dt {$/;" s -dl.reflist dt docs/html/doxygen.css /^dl.reflist dt {$/;" s -dl.section docs/html/doxygen.css /^dl.section {$/;" c -dl.section dd docs/html/doxygen.css /^dl.section dd {$/;" s -dl.section.DocNodeRTL docs/html/doxygen.css /^dl.section.DocNodeRTL {$/;" c -dl.test docs/html/doxygen.css /^dl.test {$/;" c -dl.test.DocNodeRTL docs/html/doxygen.css /^dl.test.DocNodeRTL {$/;" c -dl.todo docs/html/doxygen.css /^dl.todo {$/;" c -dl.todo.DocNodeRTL docs/html/doxygen.css /^dl.todo.DocNodeRTL {$/;" c -dl.warning docs/html/doxygen.css /^dl.warning, dl.attention {$/;" c -dl.warning.DocNodeRTL docs/html/doxygen.css /^dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {$/;" c -do_GET app/lib/pyShelf.py /^ def do_GET(self):$/;" m class:RequestHandler -documentClick docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -dt docs/html/doxygen.css /^dt {$/;" s -dt docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -duration docs/html/jquery.js /^;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefine/;" p class:p.defaults -dynsection-0 docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler.html /^
$/;" I -dynsection-0-summary docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler.html /^
$/;" I -dynsection-0-trigger docs/html/classapp_1_1lib_1_1pyShelf_1_1RequestHandler.html /^ + Inheritance diagram for app.lib.pyS/;" I -e docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c class:AnonymousFunction4d6c64ac24500.initMouseDetection.o.mousemove -e docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:AnonymousFunction4d6c64ac27200 -e docs/html/jquery.js /^!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a./;" v -e docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac11500 -e docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64aca900.a.then.l.AnonymousFunction4d6c64acac00 -e docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:ue -e docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -e docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:AnonymousFunction4d6c64ac1c200 -ee docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -element docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c class:AnonymousFunction4d6c64ac1d700.u -element docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:AnonymousFunction4d6c64ac1d700.u.element -element docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:AnonymousFunction4d6c64ac1d700.u.target -element docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:t.Widget._toggleClass.o -elementClose docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -elementKeyDown docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -elementOpen docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -elementSetup docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -elementToggle docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -em docs/html/HTML/style.css /^em { font-style: normal; }$/;" s -em.brace docs/html/HTML/style.css /^em.brace { color: red; }$/;" c -em.comment docs/html/HTML/style.css /^em.comment { color: green; font-style: italic; }$/;" c -em.sharp docs/html/HTML/style.css /^em.sharp { color: #8b0000; }$/;" c -em.string docs/html/HTML/style.css /^em.string { text-decoration: underline; }$/;" c -em.warned docs/html/HTML/style.css /^em.warned { background-color: yellow; }$/;" c -enable docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.Widget -et docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -expand docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" m class:k.cssHooks -extend docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:t.widget -extra docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:t.Widget._toggleClass.o -extract_content app/lib/library.py /^ def extract_content(self, book_zip, book):$/;" m class:Catalogue -extract_cover_html app/lib/library.py /^ def extract_cover_html(self, book_zip, book):$/;" m class:Catalogue -extract_cover_image app/lib/library.py /^ def extract_cover_image(self, book_zip, book):$/;" m class:Catalogue -extract_metadata app/lib/library.py /^ def extract_metadata(self, book):$/;" m class:Catalogue -f docs/html/jquery.js /^!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a./;" f -fadeInCallback docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -fadeOutCallback docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -fe docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -file_name frontend/interface/models.py /^ file_name = models.CharField(max_length=255, blank=False)$/;" v class:books -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/1 - Before the Republic/002 - Dawn of the Jedi_Into the Void.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/003 - Lost Tribe of the Sith_The Collected Stories.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/004 - The Old Republic_Revan.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/005 - The Old Republic_Deceived.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/006 - Red Harvest.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/007 - The Old Republic_Fatal Alliance.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/008 - The Old Republic_Annihilation.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/009 - Knight Errant.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/010 - Darth Bane_Path of Destruction.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/011 - Darth Bane_Rule of Two.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/2 - Old Galactic Republic Era/012 - Darth Bane_Dynasty of Evil.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/013 - Legacy of the Jedi.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/014 - Darth Plagueis.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/015 - Jedi Apprentice_The Rising Force.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/016 - Jedi Apprentice_The Dark Rival.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/017 - Jedi Apprentice_The Hidden Past.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/018 - Jedi Apprentice_The Mark of the Crown.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/019 - Jedi Apprentice_The Defenders of the Dead.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/020 - Jedi Apprentice_The Uncertain Path.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/021 - Jedi Apprentice_The Captive Temple.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/022 - Jedi Apprentice_The Day of Reckoning.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/023 - Jedi Apprentice_The Fight for Truth.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/024 - Jedi Apprentice_The Shattered Peace.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/025 - Jedi Apprentice_Deceptions.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/026 - The Life and Legend of Obi-Wan Kenobi.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/027 - Jedi Apprentice_The Deadly Hunter.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/028 - Jedi Apprentice_The Evil Experiment.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/029 - Jedi Apprentice_The Dangerous Rescue.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/030 - Jedi Apprentice_The Ties That Bind.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/031 - Jedi Apprentice_The Death of Hope.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/032 - Jedi Apprentice_The Call to Vengeance.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/033 - Jedi Apprentice_The Only Witness.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/034 - Jedi Apprentice_The Threat Within.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/035 - Jedi Apprentice_The Followers.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/036 - Secrets of the Jedi.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/037 - The Rise and Fall of Darth Vader.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/038 - Darth Maul_Saboteur.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/039 - Cloak of Deception.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/040 - Maul_Lockdown.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/041 - Darth Maul_Shadow Hunter.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/042 - Episode I_The Phantom Menace.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/043 - Journal_Anakin Skywalker.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/044 - Journal_Darth Maul.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/045 - Journal_Queen Amidala.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/046 - Rogue Planet.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/047 - Jedi Quest_Path to Truth.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/048 - Jedi Quest_The Way of the Apprentice.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/049 - Outbound Flight.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/050 - Jedi Quest_The Trail of the Jedi.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/051 - Jedi Quest_Dangerous Games.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/052 - Jedi Quest_The Master of Disguise.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/053 - Jedi Quest_The School of Fear.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/054 - Jedi Quest_The Shadow Trap.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/055 - Jedi Quest_The Moment of Truth.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/056 - Jedi Quest_The Changing of the Guard.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/057 - Jedi Quest_The False Peace.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/058 - Jedi Quest_The Final Showdown.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/059 - The Approaching Storm.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/060 - Episode II_Attack of the Clones.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/061 - Boba Fett_The Fight to Survive.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/062 - Boba Fett_Crossfire.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/063 - Boba Fett_Maze of Deception.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/064 - The Cestus Deception.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/065 - The Hive.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/066 - Jedi Trial.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/067 - The Clone Wars.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/068 - Clone Wars Secret Missions_Breakout Squad.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/069 - Clone Wars Secret Missions_Curse of the Black Hole Pirates.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/070 - Clone Wars Secret Missions_Duel at Shattered Rock.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/071 - Clone Wars Secret Missions_Guardians of the Chiss Key.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/072 - The Clone Wars_Wild Space.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/073 - Boba Fett_Hunted.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/074 - Republic Commando_Hard Contact.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/075 - Shatterpoint.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/076 - The Clone Wars_No Prisoners.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/077 - Republic Commando_Triple Zero.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/078 - Clone Wars Gambit_Stealth.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/079 - Clone Wars Gambit_Siege.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/080 - Republic Commando_True Colors.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/081 - The Wrath of Darth Maul.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/082 - Medstar I_Battle Surgeons.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/083 - Medstar II_Jedi Healer.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/084 - Yoda Dark Rendezvous.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/085 - Boba Fett_A New Threat.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/086 - Boba Fett_Pursuit.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/087 - Episode III_Labyrinth of Evil.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/088 - Episode III_Revenge of the Sith.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/089 - Republic Commando_Order 066.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/090 - Kenobi.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/091 - Episode III_Dark Lord The Rise of Darth Vader.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/092 - Republic Commando_501st.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/093 - Coruscant Nights_Jedi Twilight.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/094 - The Last of the Jedi_The Desperate Mission.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/095 - The Last of the Jedi_Dark Warning.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/096 - The Last of the Jedi_Underworld.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/097 - The Last of the Jedi_Death on Naboo.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/098 - Coruscant Nights_Street of Shadows.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/099 - The Last of the Jedi_A Tangled Web.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/100 - The Last of the Jedi_Return of the Dark Side.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/101 - The Last of the Jedi_Secret Weapon.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/102 - The Last of the Jedi_Against the Empire.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/103 - The Last of the Jedi_Master of Deception.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/104 - The Last of the Jedi_Reckoning.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/105 - Coruscant Nights_Patterns of Force.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/106 - The Last Jedi.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/107 - A New Hope_The Life of Luke Skywalker.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/108 - Han Solo_The Paradise Snare.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/109 - Han Solo_The Hutt Gambit.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/110 - The Force Unleashed.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/111 - The Adventures of Lando Calrissian.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/112 - Death Star.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/113 - The Han Solo Adventures.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/114 - Han Solo_Rebel Dawn.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/115 - The Force Unleashed II.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/116 - Dark Forces_Soldier for the Empire.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/117 - Dark Forces_Rebel Agent.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/118 - Dark Forces_Jedi Knight.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/3 - Rise of the Empire Era/119 - Death Troopers.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/120 - Shadow Games.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/121 - Episode IV_A New Hope.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/122 - Tales From Mos Eisley Cantina.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/123 - Scoundrels.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/124 - Rebel Force_Target.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/125 - Rebel Force_Hostage.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/126 - Rebel Force_Renegade.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/127 - Rebel Force_Firefight.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/128 - Rebel Force_Trapped.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/129 - Allegiance.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/130 - Rebel Force_Uprising.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/131 - Eaten Alive.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/132 - City of the Dead.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/133 - Planet Plague.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/134 - The Nightmare Machine.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/135 - Ghost of the Jedi.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/136 - Army of Terror.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/137 - Choices of One.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/138 - The Brain Spiders.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/139 - The Swarm.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/140 - Spore.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/141 - The Doomsday Ship.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/142 - Clones.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/143 - The Hunger.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/144 - Honor Among Thieves.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/145 - Galaxies_The Ruins of Dantooine.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/146 - Splinter of the Mind's Eye.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/147 - Empire and Rebellion_Razor's Edge.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/148 - Episode V_The Empire Strikes Back.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/149 - Tales of the Bounty Hunters.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/150 - Shadows of the Empire.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/151 - Tales From the Empire.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/152 - Tales From Jabba's Palace.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/153 - Episode VI_Return of the Jedi.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/154 - The Bounty Hunter Wars_The Mandalorian Armor.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/155 - The Bounty Hunter Wars_Slave Ship.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/156 - The Truce at Bakura.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/4 - Rebellion Era/157 - The Bounty Hunter Wars_Hard Merchandise.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/158 - Tales From the New Republic.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/159 - Luke Skywalker and the Shadows of Mindor.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/160 - Jedi Prince_The Glove of Darth Vader.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/161 - Jedi Prince_The Lost City of the Jedi.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/162 - Jedi Prince_Zorba the Hutt's Revenge.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/163 - Jedi Prince_Mission From Mount Yoda.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/164 - Jedi Prince_Queen of the Empire.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/165 - Jedi Prince_Prophets of the Dark Side.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/166 - Dark Forces_Rebel Agent.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/167 - Dark Forces_ Jedi Knight.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/168 - X-Wing_Rogue Squadron.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/169 - X-Wing_Wedge's Gamble.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/170 - X-Wing_The Krytos Trap.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/171 - X-Wing_The Bacta War.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/172 - X-Wing_Wraith Squadron.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/173 - X-Wing_Iron Fist.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/174 - X-Wing_Solo Command.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/175 - The Courtship of Princess Leia.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/176 - A Forest Apart.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/177 - Tatooine Ghost.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/178 - Thrawn_Heir to the Empire.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/179 - Thrawn_Dark Force Rising.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/180 - Thrawn_The Last Command.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/181 - X-Wing_Isard's Revenge.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/182 - The Jedi Academy_Jedi Search.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/183 - The Jedi Academy_Dark Apprentice.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/184 - The Jedi Academy_Champions of the Force.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/185 - I, Jedi.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/186 - Children of the Jedi.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/187 - Darksaber.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/188 - X-Wing_Starfighters of Adumar.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/189 - Planet of Twilight.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/190 - The Crystal Star.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/191 - The Black Fleet Crisis_Before the Storm.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/192 - The Black Fleet Crisis_Shield of Lies.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/193 - The Black Fleet Crisis_Tyrant's Test.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/194 - The New Rebellion.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/195 - The Corellian_Ambush at Corellia.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/196 - The Corellian_Assault at Selonia.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/197 - The Corellian_Showdown at Centerpoint.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/198 - The Hand of Thrawn_Specter of the Past.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/199 - The Hand of Thrawn_Vision of the Future.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/200 - Scourge.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/201 - Junior Jedi Knights_The Golden Globe.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/202 - Junior Jedi Knights_Lyric's World.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/203 - Junior Jedi Knights_Promises.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/204 - Junior Jedi Knights_Anakin's Quest.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/205 - Junior Jedi Knights_Vader's Fortress.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/206 - Junior Jedi Knights_Kenobi's Blade.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/207 - Fool's Bargain.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/208 - Survivor's Quest.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/209 - Young Jedi Knights_Heirs of the Force.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/210 - Young Jedi Knights_Shadow Academy.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/211 - Young Jedi Knights_The Lost Ones.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/212 - Young Jedi Knights_Lightsabers.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/213 - Young Jedi Knights_Darkest Knight.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/214 - Young Jedi Knights_Jedi Under Siege.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/215 - Young Jedi Knights_Shards of Alderaann.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/216 - Young Jedi Knights_Diversity Alliance.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/217 - Young Jedi Knights_Delusions of Grandeur.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/218 - Young Jedi Knights_Jedi Bounty.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/219 - Young Jedi Knights_The Emperor's Plague.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/220 - Young Jedi Knights_Return to Ord Mantell.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/221 - Young Jedi Knights_Trouble on Cloud City.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/5 - New Republic Era/222 - Young Jedi Knights_Crisis at Crystal Reef.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/223 - Boba Fett_A Practical Man.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/224 - The New Jedi Order_Vector Prime.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/225 - The New Jedi Order_Dark Tide I - Onslaught.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/226 - The New Jedi Order_Dark Tide II - Ruin.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/227 - The New Jedi Order_Agents of Chaos I - Hero's Trial.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/228 - The New Jedi Order_Agents of Chaos II - Jedi Eclipse.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/229 - The New Jedi Order_Balance Point.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/230 - The New Jedi Order_Recovery.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/231 - The New Jedi Order_Edge of Victory I - Conquest.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/232 - The New Jedi Order_Edge of Victory II - Rebirth.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/233 - The New Jedi Order_Star by Star.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/234 - The New Jedi Order_Dark Journey.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/235 - The New Jedi Order_Enemy Lines I - Rebel Dream.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/236 - The New Jedi Order_Enemy Lines II - Rebel Stand.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/237 - The New Jedi Order_Traitor.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/238 - The New Jedi Order_Destiny's Way.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/239 - The New Jedi Order_Ylesia.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/240 - The New Jedi Order_Force Heretic I - Remnant.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/241 - The New Jedi Order_Force Heretic II - Refugee.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/242 - The New Jedi Order_Force Heretic III - Reunion.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/243 - The New Jedi Order_The Final Prophecy.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/244 - The New Jedi Order_The Unifying Force.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/245 - Dark Nest_The Joiner King.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/246 - Dark Nest_The Unseen Queen.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/6 - New Jedi Order Era/247 - Dark Nest_The Swarm War.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/248 - Legacy of the Force_Betrayal.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/249- Legacy of the Force_Bloodlines.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/250 - Legacy of the Force_Tempest.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/251 - Legacy of the Force_Exile.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/252 - Legacy of the Force_Sacrifice.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/253 - Legacy of the Force_Inferno.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/254 - Legacy of the Force_Fury.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/255 - Legacy of the Force_Revelation.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/256 - Legacy of the Force_Invincible.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/257 - Crosscurrent.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/258 - Riptide.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/259 - Millennium Falcon.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/260 - Fate of the Jedi_Outcast.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/261 - Fate of the Jedi_Omen.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/262 - Fate of the Jedi_Abyss.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/263 - Fate of the Jedi_Backlash.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/264 - Fate of the Jedi_Allies.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/265 - Fate of the Jedi_Vortex.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/266 - Fate of the Jedi_Conviction.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/267 - Fate of the Jedi_Ascension.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/268 - Fate of the Jedi_Apocalypse.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/269 - X-Wing_Mercy Kill.epub -files app/data/shelf.json /^{"\/home\/raelon\/Projects\/pyShelf\/books\/Star Wars\/1 - Before the Republic\/002 - Dawn of th/;" a object:/home/raelon/Projects/pyShelf/books/Star Wars/7 - Legacy Era/270 - Crucible.epub -filter_books app/lib/library.py /^ def filter_books(self):$/;" m class:Catalogue -fit docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c class:t.ui.position -flip docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c class:t.ui.position -flipfit docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c class:t.ui.position -fn docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:k -fn docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:t -ft docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -ge docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -getAllResponseHeaders docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" m class:AnonymousFunction4d6c64ac18000.T -getEventsNS docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:AnonymousFunction4d6c64ac24500 -getHtmlPlacement docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -getResponseHeader docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" m class:AnonymousFunction4d6c64ac18000.T -getScrollInfo docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.position -getSvgPlacement docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -getTooltipContent docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -getViewportCollisions docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -getViewportDimensions docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -getWithinInfo docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.position -gt docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac15300 -h docs/html/jquery.js /^;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefine/;" f function:AnonymousFunction4d6c64ac23c00 -h docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" c class:AnonymousFunction4d6c64ac22c00 -h1 docs/html/doxygen.css /^ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }$/;" s -h1 docs/html/doxygen.css /^h1, h2, h3, h4, h5, h6 {$/;" s -h1.glow docs/html/doxygen.css /^h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {$/;" c -h1.groupheader docs/html/doxygen.css /^h1.groupheader {$/;" c -h2 docs/html/doxygen.css /^ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }$/;" s -h2 docs/html/doxygen.css /^h1, h2, h3, h4, h5, h6 {$/;" s -h2.glow docs/html/doxygen.css /^h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {$/;" c -h2.groupheader docs/html/doxygen.css /^h2.groupheader {$/;" c -h3 docs/html/doxygen.css /^ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }$/;" s -h3 docs/html/doxygen.css /^h1, h2, h3, h4, h5, h6 {$/;" s -h3.glow docs/html/doxygen.css /^h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {$/;" c -h3.groupheader docs/html/doxygen.css /^h3.groupheader {$/;" c -h3.version docs/html/doxygen.css /^h3.version {$/;" c -h4 docs/html/doxygen.css /^ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }$/;" s -h4 docs/html/doxygen.css /^h1, h2, h3, h4, h5, h6 {$/;" s -h4.glow docs/html/doxygen.css /^h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {$/;" c -h5 docs/html/doxygen.css /^ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }$/;" s -h5 docs/html/doxygen.css /^h1, h2, h3, h4, h5, h6 {$/;" s -h5.glow docs/html/doxygen.css /^h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {$/;" c -h6 docs/html/doxygen.css /^ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }$/;" s -h6 docs/html/doxygen.css /^h1, h2, h3, h4, h5, h6 {$/;" s -h6.glow docs/html/doxygen.css /^h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {$/;" c -handle docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" m class:k.event.special -he docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -height docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" p class:ft.i -height docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:AnonymousFunction4d6c64ac1d700.u.element -height docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:AnonymousFunction4d6c64ac1d700.u.target -height docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:AnonymousFunction4d6c64ac21900.prevSize -height docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:sizeDiff -height docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" p class:AnonymousFunction4d6c64ac22c00.h -height docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" p class:AnonymousFunction4d6c64ac22d00.s -height docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" p class:AnonymousFunction4d6c64ac23400.r -hideDuration docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" p class:$.fn.smartmenus.defaults -hideFunction docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" m class:$.fn.smartmenus.defaults -hideOnClick docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" p class:$.fn.smartmenus.defaults -hideTimeout docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" p class:$.fn.smartmenus.defaults -hideTip docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f function:TooltipController -horizontal docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:AnonymousFunction4d6c64ac1d700.u -hr docs/html/doxygen.css /^hr {$/;" s -hr.footer docs/html/doxygen.css /^hr.footer {$/;" c -html_Headers app/lib/display.py /^ def html_Headers(self):$/;" m class:Frontend -i docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" c class:AnonymousFunction4d6c64ac1ac00 -i docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" c class:ft -i docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac17200 -i docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac17500 -i docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" c -i docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f -i docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:t.Widget._classes -i docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" f function:t.Widget._delay -i docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:AnonymousFunction4d6c64ac21000 -image_result app/lib/api_hooks.py /^ def image_result(self, query):$/;" m class:DuckDuckGo -img.footer docs/html/doxygen.css /^img.footer {$/;" c -img.formulaDsp docs/html/doxygen.css /^img.formulaDsp {$/;" c -img.formulaInl docs/html/doxygen.css /^img.formulaInl, img.inline {$/;" c -img.icon docs/html/HTML/style.css /^img.icon { vertical-align: top; border: 0; }$/;" c -img.inline docs/html/doxygen.css /^img.formulaInl, img.inline {$/;" c -img_0_ docs/html/files.html /^/;" I -img_0_0_ docs/html/files.html /^ <\/span/;" I -import_books app/lib/library.py /^ def import_books(self, list=None):$/;" m class:Catalogue -index frontend/interface/views.py /^def index(request):$/;" f -initMenu docs/html/menu.js /^function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {$/;" f -initMouseDetection docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:AnonymousFunction4d6c64ac24500 -initTracking docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -initial frontend/interface/migrations/0001_initial.py /^ initial = True$/;" v class:Migration -innerHeight docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:AnonymousFunction4d6c64ac1e700.a -innerWidth docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:AnonymousFunction4d6c64ac1e700.a -insert_book app/lib/storage.py /^ def insert_book(self, book):$/;" m class:Storage -intentDelay docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f function:DisplayController.openTooltip -isClosing docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" p class:AnonymousFunction4d6c64ac24000.session -isFixedTipOpen docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" p class:AnonymousFunction4d6c64ac24000.session -isMouseEvent docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -isMouseOver docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -isPopup docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" p class:$.fn.smartmenus.defaults -isSvgElement docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" f -isTipOpen docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" p class:AnonymousFunction4d6c64ac24000.session -isTouchEvent docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" f function:AnonymousFunction4d6c64ac24500 -j docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -k docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac18600 -k docs/html/jquery.js /^;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefine/;" f function:$.fn.scrollTo.AnonymousFunction4d6c64ac23d00 -kbd docs/html/doxygen.css /^tt, code, kbd, samp$/;" s -ke docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -keepHighlighted docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" p class:$.fn.smartmenus.defaults -keepInViewport docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" p class:$.fn.smartmenus.defaults -keys docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:t.Widget._toggleClass.o -l docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64ac18000 -l docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:AnonymousFunction4d6c64aca900.a.then -l docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f function:_t -lastTouch docs/html/jquery.js /^ * Copyright Vasil Dinkov, Vadikom Web Ltd. http:\/\/vadikom.com; Licensed MIT *\/(function(t){"/;" c class:AnonymousFunction4d6c64ac25600 -le docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" f -left docs/html/jquery.js /^!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.expo/;" p class:AnonymousFunction4d6c64ac1ac00.i -left docs/html/jquery.js /^(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}el/;" p class:AnonymousFunction4d6c64ac24000.Collision -left docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.ui.position.fit -left docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.ui.position.flip -left docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" m class:t.ui.position.flipfit -left docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:AnonymousFunction4d6c64ac1d700.u.element -left docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:AnonymousFunction4d6c64ac1d700.u.target -left docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:AnonymousFunction4d6c64ac21900.prevPosition -left docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:originalMousePosition -left docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:originalPosition -left docs/html/jquery.js /^(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){/;" p class:position -left docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" p class:AnonymousFunction4d6c64ac22d00.s -left docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" p class:AnonymousFunction4d6c64ac23000.u -left docs/html/jquery.js /^},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.o/;" p class:AnonymousFunction4d6c64ac23400.r -letter_b docs/html/classes.html /^<\/a>
<\/a>
<\/a><\/a>
<\/a>
<\/a>
<\/a>
<\/div>$/;" I -main-nav docs/html/classapp_1_1config_1_1Config-members.html /^