Full Code of iberezansky/flip-book-jquery for AI

master cbc3b2b82f5c cached
17 files
3.1 MB
810.3k tokens
1045 symbols
1 requests
Download .txt
Showing preview only (3,246K chars total). Download the full file or copy to clipboard to get everything.
Repository: iberezansky/flip-book-jquery
Branch: master
Commit: cbc3b2b82f5c
Files: 17
Total size: 3.1 MB

Directory structure:
gitextract_rn_nh3ga/

├── .gitignore
├── LICENSE
├── README.md
├── css/
│   ├── black-book-view.css
│   ├── short-black-book-view.css
│   ├── short-white-book-view.css
│   └── white-book-view.css
├── dist/
│   └── flip-book.js
├── fonts/
│   └── FontAwesome.otf
├── index.js
├── js/
│   ├── default-book-view.js
│   └── pdf.worker.js
├── package.json
├── src/
│   ├── 3dflipbook.js
│   └── libs.js
├── templates/
│   └── default-book-view.html
└── webpack.config.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
/node_modules


================================================
FILE: LICENSE
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

                    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                            NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    {description}
    Copyright (C) {year}  {fullname}

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  {signature of Ty Coon}, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.


================================================
FILE: README.md
================================================
<h1>3D FlipBook jQuery plugin</h1>

<p>
  <a href="http://3dflipbook.net/">3D FlipBook</a> is jQuery plugin that allows to browse images, PDFs or HTMLs as a flipping book.
  It can be used for demonstration magazines, books, cards, brochures, booklets and much more in natural way.
  It helps to attract user attention and make more impression on him.
</p>

<div align="center">
  <a href="https://www.youtube.com/watch?v=pN2TqSLLMYs" target="_blank"><img src="https://img.youtube.com/vi/pN2TqSLLMYs/0.jpg" alt="3D FlipBook Demonstration"></a>
</div>

<p>
  Start from <a href="http://3dflipbook.net/">the live preview</a>.
</p>

<h2>Main features</h2>

<h3>Version 1.7</h3>
<ul>
  <li>RTL mode</li>
  <li>Default template option in General Settings</li>
</ul>

<h3>Version 1.6</h3>
<ul>
  <li>CSS Layers</li>
  <li>Languages</li>
</ul>

<h3>Version 1.5</h3>
<ul>
  <li>PDF search</li>
</ul>

<h3>Version 1.4</h3>
<ul>
  <li>Thumbnails</li>
  <li>Flip sounds</li>
  <li>Deep linking</li>
</ul>

<h3>Version 1.3</h3>
<ul>
  <li>PDF bookmarks</li>
  <li>Printing</li>
  <li>Single page mode</li>
  <li>Control customization</li>
  <li>Fit view command</li>
  <li>Controllable script for templates</li>
</ul>

<h3>Version 1.2</h3>
<ul>
  <li>PDF links</li>
  <li>Mobile-Friendly</li>
  <li>Flipping sheet animation style</li>
  <li>Loading animation and progress</li>
</ul>

<h3>Version 1.1</h3>
<ul>
  <li>Smart pan mode</li>
  <li>Skins</li>
  <li>Flipping covers together with other pages</li>
</ul>

<h3>Version 1.0</h3>
<ul>
  <li>Realistic view</li>
  <li>Natural behaviour</li>
  <li>Flixible page corners</li>
  <li>User behaviour prediction system</li>
  <li>HTML, PDF, images as sources</li>
  <li>User friendly</li>
  <li>High perfomance</li>
  <li>Lightbox effect</li>
  <li>Interactive</li>
  <li>Responsive</li>
  <li>Easy to use</li>
  <li>Well documented</li>
</ul>


<h2>Details</h2>

<h3>Realistic view</h3>
<p>
  <a href="http://3dflipbook.net/">3D FlipBook</a> allows to create volume book, with page thickness. It is the most exact computer model of a book or a magazine from real world.
</p>
<p>
  The plugin is able to simulate book opening process.
  Modeled book repeat the same actions as its real prototype:
    while the cover is opening or closing the internal pages are deforming as it happens in life.
  The deformation can be customized. You can reduce it or switch off.
</p>

<h3>Natural behaviour</h3>
<p>
  The plugin is called <a href="http://3dflipbook.net/">3D FlipBook</a>, for sure, it can perform page flipping animation.
</p>
<p>
  But this is very common ability so all typical plugins are able to do it.
  <a href="http://3dflipbook.net/">3D FlipBook</a> allows to customize the shape of flipping pages but it is still not enough to be unique.
</p>
<p>
  The main feature is using specially designed physics engine that perform all interaction with a user.
  This engine is based on physics laws so all user actions with the model seems realistic.
  The plugin allow you drag and throw pages together. The engine solve the collisions and show natural scene.
</p>
<p>
  Physics engine has a lot of properties: gravity, mass, flexibility, page flipping velocities and much more.
  But it is little necessary to know for using the plugin because all those properties have default presets.
</p>

<h3>Flexible page corners</h3>
<p>
  The main goal of <a href="http://3dflipbook.net/">3D FlipBook</a> is maximum user friendly. Main key of being friendly is behave in habitual for user way.
  How are we used to turn pages in books? - of course it is dragging a page while holding a corner!
  <a href="http://3dflipbook.net/">3D FlipBook</a> is one known 3D plugin that has such feature.
</p>

<h3>Skins support</h3>
<p>
  Supporting skins makes customization very easy. It is necessary just to choose appropriate skin and that is all.
  Now there are available skins for light and dark themes - the most universal ones.
</p>

<h3>Smart pan</h3>
<p>
  3d FlipBook has smart algorithm to show the book in maximum comfortable and appropriate for user way.
  It automatically chooses book scale and alignment on the screen, disallows user to drag the book out of view port.
  The pan makes only smooth moves that seems very friendly for user. All these abilities help the book to look richer.
</p>

<h3>HTML, PDF, images as sources</h3>
<p>
  The plugin can use PDF, images and HTMLs as texture for pages. Supporting HTML format as texture is a new technology no one of other plugins support it.
  HTML allow easily create interactive books, handle user events, manage plugin behaviour. Using HTML textures is next important step in development web animation.
</p>

<h3>User behaviour prediction system</h3>
<p>
  The plugin is not just pretty but it is smart. It has user behaviour prediction system.
  <a href="http://3dflipbook.net/">3D FlipBook</a> tracks user actions and try to predict next necessary pages.
  In the background it loads predicted pages and renders them. When the user go to next page it is ready to be shown.
</p>
<p>
  <a href="http://3dflipbook.net/">3D FlipBook</a> uses priorities for page loading. First of all it loads visible for user pages then predicted ones.
  It is possible to customize amount of pages to predict and quantity of used by user pages for predicting his behaviour.
</p>

<h3>User friendly</h3>
<p>
  <a href="http://3dflipbook.net/">3D FlipBook</a> is designed to be maximum user friendly. It has familiar to user page flipping control.
  Flexible corners help user to understand that he can turn the page by means drag and drop technology.
  Physics engine computes page transforms in similar to real world way.
  Modeling book is close to natural book - it has the same volume and shape.
  It is possible to use hard flat covers to create hard bending and use flexible pages, make whole book flexible or flat.
</p>
<p>
  The plugin has specially designed animation of page loading process.
  It is created automatically for different page colors.
  <a href="http://3dflipbook.net/">3D FlipBook</a> computes animation colors as inversion of page color.
  It looks nice for all colors.
</p>
<p>
  <a href="http://3dflipbook.net/">3D FlipBook</a> supports fullscreen mode. It is comfortable to watch magazines in this mode, they look like alive.
</p>
<p>
  Sometimes it is useful to change lightning. <a href="http://3dflipbook.net/">3D FlipBook</a> gives to its users such ability.
  User can change lightning to do it appropriate for him. It is important option for reading long texts.
</p>

<h3>High performance</h3>
<p>
  The plugin performance does not depend on number of pages because it does not manage single pages.
  <a href="http://3dflipbook.net/">3D FlipBook</a> works with blocks of pages, it allows to keep in memory just visible for user pages.
  So if the book is closed then there are 2 or 3 blocks.
  The first is left cover, the second is right cover and third is internal pages.
  If the book is opened there can be two blocks for left and right internal pages.
  There can be more blocks just when the flipping animation is performing.
  The plugin has no problem with more than 50 simultaneously flipping blocks.
  When the turn is finished the turned block merges with neighbour block.
</p>
<p>
  For fast rendering 3D graphics <a href="http://3dflipbook.net/">3D FlipBook</a> uses WebGL. WebGL is a API for creating interactive 3D graphics without using plugins.
</p>

<h3>Interactive</h3>
<p>
  Supporting HTML opens wide abilities for creating interactive books.
  It allows to use CSS3 and JavaScript, create navigation, use hover effects and much more.
</p>


<h3>Responsive</h3>
<p>
  <a href="http://3dflipbook.net/">3D FlipBook</a> is designed to occupy whole container where you place it. So if the container size changes the plagin recompute its dimensions.
  So keep the container responsive and plugin will be responsive too.
</p>

<h3>Easy to use and customize</h3>
<p>
  <a href="http://3dflipbook.net/">3D FlipBook</a> is well documented, has a lot of examples and getting started manual. It is easy to start.
  The plugin supports skins, so it is possible to create own skins or customize style or template files of existing.
</p>
<p>
  The plugin has a lot of customization options (<a href="http://3dflipbook.net/documentation#properties">see the documentation</a>).
  If it is not enough you can edit the project. It is written in modern JavaScript (ES6) object oriented style. Very easy to understand how it works.
</p>

<h2>How to use</h2>

See <a href="https://github.com/iberezansky/flip-book-jquery-example">the example</a>.

<h2>Rebuilding</h2>

Clone a copy of the main git repo by running:
```bash
git clone https://github.com/iberezansky/flip-book-jquery.git
```

Enter the flip-book-jquery-example directory and run the installation:
```bash
cd flip-book-jquery && npm install
```

To build debug version:

```bash
npm run build-debug
```

To build production version:
```bash
npm run build-production
```


================================================
FILE: css/black-book-view.css
================================================
.flip-book {
  position: relative;
  height: 100%;
}

.flip-book .view {
  text-align: center;
  height: 100%;
}

.flip-book .view .fnav {
}

.flip-book .view .prev, .flip-book .view .next {
  position: absolute;
  top: 50%;
  transform: translate(0, -50%);
  z-index: 1;
}

.flip-book .view .prev {
  left: 20px;
}

.flip-book .view .next {
  right: 20px;
}


.flip-book .view .fnav a {
  font-size: 72pt;
  color: #666;
}

.flip-book .view .fnav a:hover {
  cursor: pointer;
  text-shadow: 0 0 7px #000;
}

.flip-book .view .fnav a:active {
  font-size: 70pt;
}

.flip-book .view .fnav .hidden {
  display: none;
}

.flip-book .view .fnav .active {
  color: #555;
}

.flip-book .view .fnav .disabled {
  color: #aaa;
}

.flip-book .view .fnav .disabled:hover {
  cursor: not-allowed;
  text-shadow: none;
}

.flip-book .view .loading-progress {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.flip-book .view .loading-progress.hidden {
  display: none;
}

.flip-book .loading-progress .progress {
  background-color: #555;
  background-image: none;
  width: 50px;
  height: 50px;
  margin: 0 auto;
  border-radius: 30px;
  padding: 5px;
  box-shadow: 0px 0px 3px #000;
  margin-bottom: 10px;
}

.flip-book .loading-progress .progress::after {
  content: ' ';
  display: block;
  width: 100%;
  height: 100%;
  background-size: contain;
  background-image: url('../images/light-loader.gif');
}

.flip-book .page-loading {
  width: 50px;
  height: 50px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 1;
}

.flip-book .page-loading.hidden {
  display: none;
}

.flip-book .page-loading::after {
  content: ' ';
  display: block;
  width: 100%;
  height: 100%;
  background-size: contain;
  background-image: url('../images/light-loader.gif');
}

.flip-book .loading-progress .caption {
  background-color: #555;
  border: 1px solid #333;
  padding: 7px 10px;
  font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
  font-size: 10pt;
  border-radius: 5px;
  font-style: italic;
  color: #eee;
}

.flip-book .controls {
  position: absolute;
  bottom: 0px;
  width: 100%;
}

.flip-book .controls .fnavbar {
  margin: 0 auto;
  opacity: 0.3;
  transition: opacity 2s ease-in-out 3s;
}

.flip-book .controls .fnavbar:hover {
  opacity: 1;
  transition: opacity 1s ease;
}



.ctrl {
  font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
}
.ctrl ul {
  margin: 0;
  padding: 0;
}
.ctrl .fnavbar {
  text-align: center;
  background-image: linear-gradient(to bottom,#3c3c3c 0,#222 100%);
  background-repeat: repeat-x;
  padding: 3px;
  overflow: visible;
  background-color: #3c3c3c;
}
.ctrl .fnavbar a {
  text-decoration: none;
  font-size: 14px;
}
.ctrl .fnavbar .fnav {
  font-size: 0;
  display: inline-block;
  text-align: left;
}
.ctrl .fnavbar .fnav li{
  font-size: 12pt;
  margin: 0;
  width: auto;
}
.ctrl .fnavbar .fnav .fnav-item {
  display: inline-block;
}
.ctrl .fnavbar .fnav .hidden {
  display: none;
}
.ctrl .fnavbar .fnav .fnav-item>a {
  padding: 10px;
  display: inline-block;
  color: #ccc;
}
.ctrl .fnavbar .fnav>.active>a {
  color: #fff;
}
.ctrl .fnavbar .fnav .fnav-item>a:hover {
  color: #fff;
  cursor: pointer;
}
.ctrl .fnavbar .fnav .fnav-item>a:active {
  text-shadow: 0 0 2px #fff;
}
.ctrl .fnavbar .fnav>.disabled>a {
  color: #888;
}
.ctrl .fnavbar .fnav>.disabled>a:hover {
  color: #888;
  cursor: not-allowed;
}
.ctrl .fnavbar .fnav>.active {
  background: #222;
}

.ctrl .fnavbar .fnav .dropdown, .ctrl .fnavbar .fnav .dropup {
  position: relative;
}
.ctrl .fnavbar .fnav .dropdown .menu {
  top: 100%;
  box-shadow: 3px 0 3px #222;
}
.ctrl .fnavbar .fnav .dropdown .caret {
  display: inline-block;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-top: 5px solid #ccc;
}
.ctrl .fnavbar .fnav .dropup .menu {
  bottom: 100%;
  box-shadow: 3px 0 3px #222;
}
.ctrl .fnavbar .fnav .dropup .caret {
  display: inline-block;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-bottom: 5px solid #ccc;
}
.ctrl .fnavbar .menu {
  position: absolute;
  border: 1px solid #444;
  background-color: #222;
  z-index: 10;
  min-width: 160px;
}
.ctrl .fnavbar .menu li {
  display: block;
  padding: 5px 10px;
}
.ctrl .fnavbar .menu .divider {
  height: 1px;
  background-color: #444;
  padding: 0;
  margin: 5px 0;
}
.ctrl .fnavbar .menu .active {
  background-color: #444;
}
.ctrl .fnavbar .menu .active:hover {
  /*background-color: #444;*/
}
.ctrl .fnavbar .menu li:hover {
  background-color: #333;
  cursor: pointer;
}
.ctrl .fnavbar .menu li a {
  color: #fff;
}
.ctrl .fnavbar .menu .disabled a {
  color: #aaa;
  cursor: not-allowed;
}

.ctrl .fnavbar .menu .icon {
  display: inline-block;
  width: 14px;
  height: 14px;
  text-align: center;
}

.ctrl .pages {
  padding: 0 10px;
  display: inline-block;
  font-size: 0;
}

.ctrl .pages .number, .ctrl .pages .amount {
  width: 50px;
  height: 20px;
  text-align: center;
  display: inline-block;
  font-size: 11pt;
  border: 0;
  color: #000;
  background-color: #ccc;
  font-weight: bold;
  border-radius: 0;
  margin: 0;
  padding: 2px;
}

.ctrl .pages .number {
  border-top-left-radius: 5px;
  border-bottom-left-radius: 5px;
  background-color: #ddd;
}

.ctrl .pages .amount {
  border-top-right-radius: 5px;
  border-bottom-right-radius: 5px;
}

/* floating window */

.flip-book .float-wnd {
  position: absolute;
  top: 10px;
  left: 10px;
  border-radius: 5px 5px 0 0;
  background-color: #1a1a1a;
  width: 300px;
  z-index: 1;
  box-shadow: 3px 0 3px #222;
}

.flip-book .float-wnd.hidden {
  display: none;
}

.flip-book .float-wnd .header {
  border-radius: 4px 4px 0 0;
  background-color: #3c3c3c;
  background-image: linear-gradient(to bottom,#3c3c3c 0,#222 100%);
  background-repeat: repeat-x;
  padding: 7px 10px;
  border: 1px solid #444;
  border-bottom: none;
  color: #fff;
  font-weight: bold;
  cursor: move;
}

.flip-book .float-wnd .header .close {
  top: 5px;
  right: 8px;
  font-size: 14px;
  position: absolute;
  color: #ccc;
}

.flip-book .float-wnd .header .close:hover {
  color: #fff;
}
.flip-book .float-wnd .header .close:active {
  font-size: 12px;
  padding-top: 1px;
  padding-right: 1px;
}

.flip-book .float-wnd .body {
  border: 1px solid #444;
  border-top: none;
}

/* toc */

.ctrl .toc {
  font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;
}

.ctrl .toc a {
  text-decoration: none;
}

.ctrl .toc .hidden {
  display: none;
}

.ctrl .toc .toc-menu {
  padding: 5px 10px;
}

.ctrl .toc .toc-menu ul {
  list-style: none;
  padding: 0;
}
.ctrl .toc .toc-menu li {
  display: inline-block;
  padding-right: 5px;
}
.ctrl .toc .toc-menu a {
  color: #ccc;
  font-size: 14px;
}
.ctrl .toc .toc-menu a:hover {
  color: #fff;
}
.ctrl .toc .toc-menu a:active {
  text-shadow: 0 0 2px #fff;
}
.ctrl .toc .toc-menu .active a {
  color: #fff;
}


.ctrl .toc .toc-view {
  padding: 10px 0;
  max-height: 80vh;
  overflow-y: auto;
  overflow-x: hidden;
}
.ctrl .toc .toc-view::-webkit-scrollbar {
  width: 7px;
  height: 7px;
}
.ctrl .toc .toc-view::-webkit-scrollbar-button {
  width: 0;
  height: 0;
}
.ctrl .toc .toc-view::-webkit-scrollbar-thumb {
  background: #4a4a4a;
  border-radius: 2px;
}
.ctrl .toc .toc-view::-webkit-scrollbar-thumb:hover {
  background: #3a3a3a;
}
.ctrl .toc .toc-view::-webkit-scrollbar-thumb:active {
  background: #5a5a5a;
}
.ctrl .toc .toc-view::-webkit-scrollbar-track {
  background: #2a2a2a;
  border-left: 2px solid #1a1a1a;
  border-right: 2px solid #1a1a1a;
}

.ctrl .bookmarks .white-space, .ctrl .bookmarks .togle, .ctrl .bookmarks .togle i {
  width: 18px;
  height: 18px;
}

.ctrl .bookmarks .white-space {
  display: inline-block;
}

.ctrl .bookmarks li {
  width: 10000px;
}

.ctrl .bookmarks .item .area {
  padding: 2px 0;
}

.ctrl .bookmarks .level-0 .area {
  padding-left: 5px;
}
.ctrl .bookmarks .level-1 .area {
  padding-left: 10px;
}
.ctrl .bookmarks .level-2 .area {
  padding-left: 15px;
}
.ctrl .bookmarks .level-3 .area {
  padding-left: 20px;
}
.ctrl .bookmarks .level-4 .area {
  padding-left: 25px;
}

.ctrl .bookmarks .item .area:hover {
  background-color: #444;
}

.ctrl .bookmarks .item .area:active {
  background-color: #333;
}

.ctrl .bookmarks .item a {
  color: #fff;
  font-size: 14px;
}

.ctrl .bookmarks ul {
  list-style: none;
  padding: 0;
}

.ctrl .bookmarks .togle {
  display: inline-block;
  text-align: center;
  position: relative;
}

.ctrl .bookmarks .togle::before {
  content: ' ';
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  border: 0px solid #222;
  transition: border 0.2s;
}

.ctrl .bookmarks .togle:active::before {
  border: 12px solid #222;
  transition: border 0.05s;
}

.ctrl .bookmarks .togle i {
  transform: rotateZ(0deg);
  transition: transform 0.2s;
}

.ctrl .bookmarks .togle.minimized i {
  transform: rotateZ(90deg);
  transition: transform 0.2s;
}


.ctrl .thumbnails .item a {
  color: #fff;
  font-size: 14px;
}

.ctrl .thumbnails {
  padding: 10px 0;
  text-align: center;
}
.ctrl .thumbnails .thumbnail {
  height: 170px;
  margin-bottom: 5px;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}
.ctrl .thumbnails .loading {
  position: relative;
}
.ctrl .thumbnails .loading::after {
  content: ' ';
  position: absolute;
  width: 40px;
  height: 40px;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  background-size: contain;
  background-image: url('../images/light-loader.gif');
}
.ctrl .thumbnails .item {
  display: inline-block;
  width: 128px;
  padding: 5px 5px;
  border: 1px solid transparent;
  border-radius: 3px;
}
.ctrl .thumbnails .item:hover {
  border: 1px solid #555;
  background-color: #444;
}
.ctrl .thumbnails .heading {
  overflow: hidden;
  height: 20px;
}


.ctrl .search .result {
  padding: 7px 10px;
  cursor: pointer;
}

.ctrl .search .result:hover {
  background-color: #444;
}

.ctrl .search .results a {
  color: #fff;
  font-size: 14px;
}

.ctrl .search .query {
  padding: 0 10px;
  padding-bottom: 10px;
}

.ctrl .search .query input {
  width: 100%;
}

.ctrl .search .status {
  text-align: center;
  color: #ccc;
  font-size: 12px;
}


================================================
FILE: css/short-black-book-view.css
================================================
.flip-book {
  position: relative;
  height: 100%;
}

.flip-book .view {
  text-align: center;
  height: 100%;
}

.flip-book .view .fnav {
}

.flip-book .view .prev, .flip-book .view .next {
  position: absolute;
  top: 50%;
  transform: translate(0, -50%);
  z-index: 1;
}

.flip-book .view .prev {
  left: 20px;
}

.flip-book .view .next {
  right: 20px;
}


.flip-book .view .fnav a {
  font-size: 72pt;
  color: #666;
}

.flip-book .view .fnav a:hover {
  cursor: pointer;
  text-shadow: 0 0 7px #000;
}

.flip-book .view .fnav a:active {
  font-size: 70pt;
}

.flip-book .view .fnav .hidden {
  display: none;
}

.flip-book .view .fnav .active {
  color: #555;
}

.flip-book .view .fnav .disabled {
  color: #aaa;
}

.flip-book .view .fnav .disabled:hover {
  cursor: not-allowed;
  text-shadow: none;
}

.flip-book .view .loading-progress {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.flip-book .view .loading-progress.hidden {
  display: none;
}

.flip-book .loading-progress .progress {
  background-color: #555;
  background-image: none;
  width: 50px;
  height: 50px;
  margin: 0 auto;
  border-radius: 30px;
  padding: 5px;
  box-shadow: 0px 0px 3px #000;
  margin-bottom: 10px;
}

.flip-book .loading-progress .progress::after {
  content: ' ';
  display: block;
  width: 100%;
  height: 100%;
  background-size: contain;
  background-image: url('../images/light-loader.gif');
}

.flip-book .page-loading {
  width: 50px;
  height: 50px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 1;
}

.flip-book .page-loading.hidden {
  display: none;
}

.flip-book .page-loading::after {
  content: ' ';
  display: block;
  width: 100%;
  height: 100%;
  background-size: contain;
  background-image: url('../images/light-loader.gif');
}

.flip-book .loading-progress .caption {
  background-color: #555;
  border: 1px solid #333;
  padding: 7px 10px;
  font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
  font-size: 10pt;
  border-radius: 5px;
  font-style: italic;
  color: #eee;
}

.flip-book .controls {
  position: relative;
}

.flip-book .controls .fnavbar {
  margin: 0 auto;
  opacity: 0.3;
  transition: opacity 2s ease-in-out 3s;
}

.flip-book .controls .fnavbar:hover {
  opacity: 1;
  transition: opacity 1s ease;
}

.flip-book .controls .ctrl {
  font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
  position: absolute;
  bottom: 10px;
}
.ctrl ul {
  margin: 0;
  padding: 0;
}
.ctrl .fnavbar {
  text-align: center;
  background-image: linear-gradient(to bottom,#3c3c3c 0,#222 100%);
  background-repeat: repeat-x;
  padding: 3px;
  overflow: visible;
  background-color: #3c3c3c;

  border-radius: 4px;
}
.ctrl .fnavbar a {
  text-decoration: none;
  font-size: 14px;
}
.ctrl .fnavbar .fnav {
  font-size: 0;
  display: flex;
  text-align: left;
}
.ctrl .fnavbar .fnav li{
  font-size: 12pt;
  margin: 0;
  width: auto;
}
.ctrl .fnavbar .fnav .fnav-item {
  display: inline-block;
}
.ctrl .fnavbar .fnav .hidden {
  display: none;
}
.ctrl .fnavbar .fnav .fnav-item>a {
  padding: 10px;
  display: inline-block;
  color: #ccc;
}
.ctrl .fnavbar .fnav>.active>a {
  color: #fff;
}
.ctrl .fnavbar .fnav .fnav-item>a:hover {
  color: #fff;
  cursor: pointer;
}
.ctrl .fnavbar .fnav .fnav-item>a:active {
  text-shadow: 0 0 2px #fff;
}
.ctrl .fnavbar .fnav>.disabled>a {
  color: #888;
}
.ctrl .fnavbar .fnav>.disabled>a:hover {
  color: #888;
  cursor: not-allowed;
}
.ctrl .fnavbar .fnav>.active {
  background: #222;
}

.ctrl .fnavbar .fnav .dropdown, .ctrl .fnavbar .fnav .dropup {
  position: relative;
}
.ctrl .fnavbar .fnav .dropdown .menu {
  top: 100%;
  box-shadow: 3px 0 3px #222;
}
.ctrl .fnavbar .fnav .icon-caret {
  width: 26px;
  display: inline-block;
}
.ctrl .fnavbar .fnav .dropdown .caret {
  display: inline-block;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-top: 5px solid #ccc;
}
.ctrl .fnavbar .fnav .dropup .menu {
  bottom: 100%;
  box-shadow: 3px 0 3px #222;
}
.ctrl .fnavbar .fnav .dropup .caret {
  display: inline-block;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-bottom: 5px solid #ccc;
}
.ctrl .fnavbar .menu {
  position: absolute;
  border: 1px solid #444;
  background-color: #222;
  z-index: 10;
  min-width: 160px;
}
.ctrl .fnavbar .menu li {
  display: block;
  padding: 5px 10px;
}
.ctrl .fnavbar .menu .divider {
  height: 1px;
  background-color: #444;
  padding: 0;
  margin: 5px 0;
}
.ctrl .fnavbar .menu .active {
  background-color: #444;
}
.ctrl .fnavbar .menu .active:hover {
  /*background-color: #444;*/
}
.ctrl .fnavbar .menu li:hover {
  background-color: #333;
  cursor: pointer;
}
.ctrl .fnavbar .menu li a {
  color: #fff;
}
.ctrl .fnavbar .menu .disabled a {
  color: #aaa;
  cursor: not-allowed;
}

.ctrl .fnavbar .menu .icon {
  display: inline-block;
  width: 14px;
  height: 14px;
  text-align: center;
}

.ctrl .pages {
  padding: 8px 10px;
  display: flex;
  font-size: 0;
}

.ctrl .pages .number, .ctrl .pages .amount {
  width: 50px;
  height: 20px;
  text-align: center;
  display: inline-block;
  font-size: 11pt;
  border: 0;
  color: #000;
  background-color: #ccc;
  font-weight: bold;
  border-radius: 0;
  margin: 0;
  padding: 2px;
}

.ctrl .pages .number {
  border-top-left-radius: 5px;
  border-bottom-left-radius: 5px;
  background-color: #ddd;
}

.ctrl .pages .amount {
  border-top-right-radius: 5px;
  border-bottom-right-radius: 5px;
}

/* floating window */

.flip-book .float-wnd {
  position: absolute;
  top: 10px;
  left: 10px;
  border-radius: 5px 5px 0 0;
  background-color: #1a1a1a;
  width: 300px;
  z-index: 1;
  box-shadow: 3px 0 3px #222;
}

.flip-book .float-wnd.hidden {
  display: none;
}

.flip-book .float-wnd .header {
  border-radius: 4px 4px 0 0;
  background-color: #3c3c3c;
  background-image: linear-gradient(to bottom,#3c3c3c 0,#222 100%);
  background-repeat: repeat-x;
  padding: 7px 10px;
  border: 1px solid #444;
  border-bottom: none;
  color: #fff;
  font-weight: bold;
  cursor: move;
}

.flip-book .float-wnd .header .close {
  top: 5px;
  right: 8px;
  font-size: 14px;
  position: absolute;
  color: #ccc;
}

.flip-book .float-wnd .header .close:hover {
  color: #fff;
}
.flip-book .float-wnd .header .close:active {
  font-size: 12px;
  padding-top: 1px;
  padding-right: 1px;
}

.flip-book .float-wnd .body {
  border: 1px solid #444;
  border-top: none;
}

/* toc */

.ctrl .toc {
  font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;
}

.ctrl .toc a {
  text-decoration: none;
}

.ctrl .toc .hidden {
  display: none;
}

.ctrl .toc .toc-menu {
  padding: 5px 10px;
}

.ctrl .toc .toc-menu ul {
  list-style: none;
  padding: 0;
}
.ctrl .toc .toc-menu li {
  display: inline-block;
  padding-right: 5px;
}
.ctrl .toc .toc-menu a {
  color: #ccc;
  font-size: 14px;
}
.ctrl .toc .toc-menu a:hover {
  color: #fff;
}
.ctrl .toc .toc-menu a:active {
  text-shadow: 0 0 2px #fff;
}
.ctrl .toc .toc-menu .active a {
  color: #fff;
}


.ctrl .toc .toc-view {
  padding: 10px 0;
  max-height: 80vh;
  overflow-y: auto;
  overflow-x: hidden;
}
.ctrl .toc .toc-view::-webkit-scrollbar {
  width: 7px;
  height: 7px;
}
.ctrl .toc .toc-view::-webkit-scrollbar-button {
  width: 0;
  height: 0;
}
.ctrl .toc .toc-view::-webkit-scrollbar-thumb {
  background: #4a4a4a;
  border-radius: 2px;
}
.ctrl .toc .toc-view::-webkit-scrollbar-thumb:hover {
  background: #3a3a3a;
}
.ctrl .toc .toc-view::-webkit-scrollbar-thumb:active {
  background: #5a5a5a;
}
.ctrl .toc .toc-view::-webkit-scrollbar-track {
  background: #2a2a2a;
  border-left: 2px solid #1a1a1a;
  border-right: 2px solid #1a1a1a;
}

.ctrl .bookmarks .white-space, .ctrl .bookmarks .togle, .ctrl .bookmarks .togle i {
  width: 18px;
  height: 18px;
}

.ctrl .bookmarks .white-space {
  display: inline-block;
}

.ctrl .bookmarks li {
  width: 10000px;
}

.ctrl .bookmarks .item .area {
  padding: 2px 0;
}

.ctrl .bookmarks .level-0 .area {
  padding-left: 5px;
}
.ctrl .bookmarks .level-1 .area {
  padding-left: 10px;
}
.ctrl .bookmarks .level-2 .area {
  padding-left: 15px;
}
.ctrl .bookmarks .level-3 .area {
  padding-left: 20px;
}
.ctrl .bookmarks .level-4 .area {
  padding-left: 25px;
}

.ctrl .bookmarks .item .area:hover {
  background-color: #444;
}

.ctrl .bookmarks .item .area:active {
  background-color: #333;
}

.ctrl .bookmarks .item a {
  color: #fff;
  font-size: 14px;
}

.ctrl .bookmarks ul {
  list-style: none;
  padding: 0;
}

.ctrl .bookmarks .togle {
  display: inline-block;
  text-align: center;
  position: relative;
}

.ctrl .bookmarks .togle::before {
  content: ' ';
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  border: 0px solid #222;
  transition: border 0.2s;
}

.ctrl .bookmarks .togle:active::before {
  border: 12px solid #222;
  transition: border 0.05s;
}

.ctrl .bookmarks .togle i {
  transform: rotateZ(0deg);
  transition: transform 0.2s;
}

.ctrl .bookmarks .togle.minimized i {
  transform: rotateZ(90deg);
  transition: transform 0.2s;
}


.ctrl .thumbnails .item a {
  color: #fff;
  font-size: 14px;
}

.ctrl .thumbnails {
  padding: 10px 0;
  text-align: center;
}
.ctrl .thumbnails .thumbnail {
  height: 170px;
  margin-bottom: 5px;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}
.ctrl .thumbnails .loading {
  position: relative;
}
.ctrl .thumbnails .loading::after {
  content: ' ';
  position: absolute;
  width: 40px;
  height: 40px;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  background-size: contain;
  background-image: url('../images/light-loader.gif');
}
.ctrl .thumbnails .item {
  display: inline-block;
  width: 128px;
  padding: 5px 5px;
  border: 1px solid transparent;
  border-radius: 3px;
}
.ctrl .thumbnails .item:hover {
  border: 1px solid #555;
  background-color: #444;
}
.ctrl .thumbnails .heading {
  overflow: hidden;
  height: 20px;
}


.ctrl .search .result {
  padding: 7px 10px;
  cursor: pointer;
}

.ctrl .search .result:hover {
  background-color: #444;
}

.ctrl .search .results a {
  color: #fff;
  font-size: 14px;
}

.ctrl .search .query {
  padding: 0 10px;
  padding-bottom: 10px;
}

.ctrl .search .query input {
  width: 100%;
}

.ctrl .search .status {
  text-align: center;
  color: #ccc;
  font-size: 12px;
}


================================================
FILE: css/short-white-book-view.css
================================================
.flip-book {
  position: relative;
  height: 100%;
}

.flip-book .view {
  position: relative;
  height: 100%;
}

.flip-book .view .fnav {
}

.flip-book .view .prev, .flip-book .view .next {
  position: absolute;
  top: 50%;
  transform: translate(0, -50%);
  z-index: 1;
}

.flip-book .view .prev {
  left: 20px;
}

.flip-book .view .next {
  right: 20px;
}


.flip-book .view .fnav a {
  font-size: 72pt;
  color: #ccc;
}

.flip-book .view .fnav a:hover {
  cursor: pointer;
  text-shadow: 0 0 7px #fff;
}

.flip-book .view .fnav a:active {
  font-size: 70pt;
}

.flip-book .view .fnav .hidden {
  display: none;
}

.flip-book .view .fnav .active {
  color: #ddd;
}

.flip-book .view .fnav .disabled {
  color: #888;
}

.flip-book .view .fnav .disabled:hover {
  cursor: not-allowed;
  text-shadow: none;
}

.flip-book .view .loading-progress {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.flip-book .view .loading-progress.hidden {
  display: none;
}

.flip-book .loading-progress .progress {
  background-color: #eee;
  background-image: none;
  width: 50px;
  height: 50px;
  margin: 0 auto;
  border-radius: 30px;
  padding: 5px;
  box-shadow: 0px 0px 3px #fff;
  margin-bottom: 10px;
}

.flip-book .loading-progress .progress::after {
  content: ' ';
  display: block;
  width: 100%;
  height: 100%;
  background-size: contain;
  background-image: url('../images/dark-loader.gif');
}

.flip-book .page-loading {
  width: 50px;
  height: 50px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 1;
}

.flip-book .page-loading.hidden {
  display: none;
}

.flip-book .page-loading::after {
  content: ' ';
  display: block;
  width: 100%;
  height: 100%;
  background-size: contain;
  background-image: url('../images/dark-loader.gif');
}

.flip-book .loading-progress .caption {
  background-color: #eee;
  border: 1px solid #fff;
  padding: 7px 10px;
  font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
  font-size: 10pt;
  border-radius: 5px;
  font-style: italic;
  color: #111;
}

.flip-book .controls {
  position: relative;
}

.flip-book .controls .fnavbar {
  margin: 0 auto;
  opacity: 0.3;
  transition: opacity 2s ease-in-out 3s;
}

.flip-book .controls .fnavbar:hover {
  opacity: 1;
  transition: opacity 1s ease;
}

.flip-book .controls .ctrl {
  font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
  position: absolute;
  bottom: 10px;
}
.ctrl ul {
  margin: 0;
  padding: 0;
}
.ctrl .fnavbar {
  background-image: linear-gradient(to bottom,#fff 0,#f8f8f8 100%);
  background-repeat: repeat-x;
  padding: 3px;
  overflow: visible;
  background-color: #f8f8f8;

  border-radius: 4px;
}
.ctrl .fnavbar a {
  text-decoration: none;
  font-size: 14px;
}
.ctrl .fnavbar .fnav {
  font-size: 0;
  display: flex;
  text-align: left;
}
.ctrl .fnavbar .fnav li{
  font-size: 12pt;
  margin: 0;
  width: auto;
}
.ctrl .fnavbar .fnav .fnav-item {
  display: inline-block;
}
.ctrl .fnavbar .fnav .hidden {
  display: none;
}
.ctrl .fnavbar .fnav .fnav-item>a {
  padding: 10px;
  display: inline-block;
  color: #777;
}
.ctrl .fnavbar .fnav>.active>a {
  color: #000;
}
.ctrl .fnavbar .fnav .fnav-item>a:hover {
  color: #000;
  cursor: pointer;
}
.ctrl .fnavbar .fnav .fnav-item>a:active {
  text-shadow: 0 0 1px #000;
}
.ctrl .fnavbar .fnav>.disabled>a {
  color: #aaa;
}
.ctrl .fnavbar .fnav>.disabled>a:hover {
  color: #aaa;
  cursor: not-allowed;
}
.ctrl .fnavbar .fnav>.active {
  background: #fff;
}

.ctrl .fnavbar .fnav .dropdown, .ctrl .fnavbar .fnav .dropup {
  position: relative;
}
.ctrl .fnavbar .fnav .dropdown .menu {
  top: 100%;
  box-shadow: 3px 0 3px #ddd;
}
.ctrl .fnavbar .fnav .icon-caret {
  width: 26px;
  display: inline-block;
}
.ctrl .fnavbar .fnav .dropdown .caret {
  display: inline-block;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-top: 5px solid #777;
}
.ctrl .fnavbar .fnav .dropup .menu {
  bottom: 100%;
  box-shadow: 3px 0 3px #ddd;
}
.ctrl .fnavbar .fnav .dropup .caret {
  display: inline-block;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-bottom: 5px solid #777;
}
.ctrl .fnavbar .menu {
  position: absolute;
  border: 1px solid #ddd;
  background-color: #fff;
  z-index: 10;
  min-width: 160px;
}
.ctrl .fnavbar .menu li {
  display: block;
  padding: 5px 10px;
}
.ctrl .fnavbar .menu .divider {
  height: 1px;
  background-color: #ddd;
  padding: 0;
  margin: 5px 0;
}
.ctrl .fnavbar .menu .active {
  background-color: #e0e0e0;
}
.ctrl .fnavbar .menu .active:hover {
  /*background-color: #e0e0e0;*/
}
.ctrl .fnavbar .menu li:hover {
  background-color: #eee;
  cursor: pointer;
}
.ctrl .fnavbar .menu li a {
  color: #000;
}
.ctrl .fnavbar .menu .disabled a {
  color: #777;
  cursor: not-allowed;
}

.ctrl .fnavbar .menu .icon {
  display: inline-block;
  width: 14px;
  height: 14px;
  text-align: center;
}

.ctrl .pages {
  padding: 8px 10px;
  display: flex;
  font-size: 0;
}

.ctrl .pages .number, .ctrl .pages .amount {
  width: 50px;
  height: 20px;
  text-align: center;
  display: inline-block;
  font-size: 11pt;
  border: 0;
  color: #fff;
  background-color: #444;
  font-weight: bold;
  border-radius: 0;
  margin: 0;
  padding: 2px;
}

.ctrl .pages .number {
  border-top-left-radius: 5px;
  border-bottom-left-radius: 5px;
  background-color: #000;
}

.ctrl .pages .amount {
  border-top-right-radius: 5px;
  border-bottom-right-radius: 5px;
}

/* floating window */

.flip-book .float-wnd {
  position: absolute;
  top: 10px;
  left: 10px;
  border-radius: 5px 5px 0 0;
  background-color: #fff;
  width: 300px;
  z-index: 1;
  box-shadow: 3px 0 3px #ddd;
}

.flip-book .float-wnd.hidden {
  display: none;
}

.flip-book .float-wnd .header {
  border-radius: 4px 4px 0 0;
  background-color: #fff;
  background-image: linear-gradient(to bottom,#fff 0,#f8f8f8 100%);
  background-repeat: repeat-x;
  padding: 7px 10px;
  border: 1px solid #ddd;
  border-bottom: none;
  font-weight: bold;
  cursor: move;
}

.flip-book .float-wnd .header .close {
  top: 5px;
  right: 8px;
  font-size: 14px;
  position: absolute;
  color: #777;
}

.flip-book .float-wnd .header .close:hover {
  color: #000;
}
.flip-book .float-wnd .header .close:active {
  font-size: 12px;
  padding-top: 1px;
  padding-right: 1px;
}

.flip-book .float-wnd .body {
  border: 1px solid #ddd;
  border-top: none;
}

/* toc */

.ctrl .toc {
  font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;
}

.ctrl .toc a {
  text-decoration: none;
}

.ctrl .toc .hidden {
  display: none;
}

.ctrl .toc .toc-menu {
  padding: 5px 10px;
}

.ctrl .toc .toc-menu ul {
  list-style: none;
  padding: 0;
}
.ctrl .toc .toc-menu li {
  display: inline-block;
  padding-right: 5px;
}
.ctrl .toc .toc-menu a {
  color: #777;
  font-size: 14px;
}
.ctrl .toc .toc-menu a:hover {
  color: #000;
}
.ctrl .toc .toc-menu a:active {
  text-shadow: 0 0 1px rgba(0,0,0,0.3);
}
.ctrl .toc .toc-menu .active a {
  color: #000;
}

.ctrl .toc .toc-view {
  padding: 10px 0;
  max-height: 80vh;
  overflow-y: auto;
  overflow-x: hidden;
}
.ctrl .toc .toc-view::-webkit-scrollbar {
  width: 7px;
  height: 7px;
}
.ctrl .toc .toc-view::-webkit-scrollbar-button {
  width: 0;
  height: 0;
}
.ctrl .toc .toc-view::-webkit-scrollbar-thumb {
  background: #ccc;
  border-radius: 2px;
}
.ctrl .toc .toc-view::-webkit-scrollbar-thumb:hover {
  background: #ddd;
}
.ctrl .toc .toc-view::-webkit-scrollbar-thumb:active {
  background: #bbb;
}
.ctrl .toc .toc-view::-webkit-scrollbar-track {
  background: #eee;
  border-left: 2px solid #fff;
  border-right: 2px solid #fff;
}

.ctrl .bookmarks .white-space, .ctrl .bookmarks .togle, .ctrl .bookmarks .togle i {
  width: 18px;
  height: 18px;
}

.ctrl .bookmarks .white-space {
  display: inline-block;
}

.ctrl .bookmarks li {
  width: 10000px;
}

.ctrl .bookmarks .item .area {
  padding: 2px 0;
}

.ctrl .bookmarks .level-0 .area {
  padding-left: 5px;
}
.ctrl .bookmarks .level-1 .area {
  padding-left: 10px;
}
.ctrl .bookmarks .level-2 .area {
  padding-left: 15px;
}
.ctrl .bookmarks .level-3 .area {
  padding-left: 20px;
}
.ctrl .bookmarks .level-4 .area {
  padding-left: 25px;
}

.ctrl .bookmarks .item .area:hover {
  background-color: #eee;
}

.ctrl .bookmarks .item .area:active {
  background-color: #e0e0e0;
}

.ctrl .bookmarks .item a {
  color: #000;
  font-size: 14px;
}

.ctrl .bookmarks ul {
  list-style: none;
  padding: 0;
}

.ctrl .bookmarks .togle {
  display: inline-block;
  text-align: center;
  position: relative;
}

.ctrl .bookmarks .togle::before {
  content: ' ';
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  border: 0px solid #f5f5f5;
  transition: border 0.2s;
}

.ctrl .bookmarks .togle:active::before {
  border: 12px solid #f5f5f5;
  transition: border 0.05s;
}

.ctrl .bookmarks .togle i {
  transform: rotateZ(0deg);
  transition: transform 0.2s;
}

.ctrl .bookmarks .togle.minimized i {
  transform: rotateZ(90deg);
  transition: transform 0.2s;
}

.ctrl .thumbnails .item a {
  color: #000;
  font-size: 14px;
}

.ctrl .thumbnails {
  padding: 10px 0;
  text-align: center;
}
.ctrl .thumbnails .thumbnail {
  height: 170px;
  margin-bottom: 5px;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}
.ctrl .thumbnails .loading {
  position: relative;
}
.ctrl .thumbnails .loading::after {
  content: ' ';
  position: absolute;
  width: 40px;
  height: 40px;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  background-size: contain;
  background-image: url('../images/dark-loader.gif');
}
.ctrl .thumbnails .item {
  display: inline-block;
  width: 128px;
  padding: 5px 5px;
  border: 1px solid transparent;
  border-radius: 3px;
}
.ctrl .thumbnails .item:hover {
  border: 1px solid #ddd;
  background-color: #eee;
}
.ctrl .thumbnails .heading {
  overflow: hidden;
  height: 20px;
}


.ctrl .search .result {
  padding: 7px 10px;
  cursor: pointer;
}

.ctrl .search .result:hover {
  background-color: #ddd;
}

.ctrl .search .results a {
  color: #000;
  font-size: 14px;
}

.ctrl .search .query {
  padding: 0 10px;
  padding-bottom: 10px;
}

.ctrl .search .query input {
  width: 100%;
}

.ctrl .search .status {
  text-align: center;
  color: #333;
  font-size: 12px;
}


================================================
FILE: css/white-book-view.css
================================================
.flip-book {
  position: relative;
  height: 100%;
}

.flip-book .view {
  text-align: center;
  height: 100%;
}

.flip-book .view .fnav {
}

.flip-book .view .prev, .flip-book .view .next {
  position: absolute;
  top: 50%;
  transform: translate(0, -50%);
  z-index: 1;
}

.flip-book .view .prev {
  left: 20px;
}

.flip-book .view .next {
  right: 20px;
}


.flip-book .view .fnav a {
  font-size: 72pt;
  color: #ccc;
}

.flip-book .view .fnav a:hover {
  cursor: pointer;
  text-shadow: 0 0 7px #fff;
}

.flip-book .view .fnav a:active {
  font-size: 70pt;
}

.flip-book .view .fnav .hidden {
  display: none;
}

.flip-book .view .fnav .active {
  color: #ddd;
}

.flip-book .view .fnav .disabled {
  color: #888;
}

.flip-book .view .fnav .disabled:hover {
  cursor: not-allowed;
  text-shadow: none;
}

.flip-book .view .loading-progress {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.flip-book .view .loading-progress.hidden {
  display: none;
}

.flip-book .loading-progress .progress {
  background-color: #eee;
  background-image: none;
  width: 50px;
  height: 50px;
  margin: 0 auto;
  border-radius: 30px;
  padding: 5px;
  box-shadow: 0px 0px 3px #fff;
  margin-bottom: 10px;
}

.flip-book .loading-progress .progress::after {
  content: ' ';
  display: block;
  width: 100%;
  height: 100%;
  background-size: contain;
  background-image: url('../images/dark-loader.gif');
}

.flip-book .page-loading {
  width: 50px;
  height: 50px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 1;
}

.flip-book .page-loading.hidden {
  display: none;
}

.flip-book .page-loading::after {
  content: ' ';
  display: block;
  width: 100%;
  height: 100%;
  background-size: contain;
  background-image: url('../images/dark-loader.gif');
}

.flip-book .loading-progress .caption {
  background-color: #eee;
  border: 1px solid #fff;
  padding: 7px 10px;
  font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
  font-size: 10pt;
  border-radius: 5px;
  font-style: italic;
  color: #111;
}

.flip-book .controls {
  position: absolute;
  bottom: 0px;
  width: 100%;
}

.flip-book .controls .fnavbar {
  margin: 0 auto;
  opacity: 0.3;
  transition: opacity 2s ease-in-out 3s;
}

.flip-book .controls .fnavbar:hover {
  opacity: 1;
  transition: opacity 1s ease;
}

.ctrl {
  font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
}
.ctrl ul {
  margin: 0;
  padding: 0;
}
.ctrl .fnavbar {
  text-align: center;
  background-image: linear-gradient(to bottom,#fff 0,#f8f8f8 100%);
  background-repeat: repeat-x;
  padding: 3px;
  overflow: visible;
  background-color: #f8f8f8;
}
.ctrl .fnavbar a {
  text-decoration: none;
  font-size: 14px;
}
.ctrl .fnavbar .fnav {
  font-size: 0;
  display: inline-block;
  text-align: left;
}
.ctrl .fnavbar .fnav li{
  font-size: 12pt;
  margin: 0;
  width: auto;
}
.ctrl .fnavbar .fnav .fnav-item {
  display: inline-block;
}
.ctrl .fnavbar .fnav .hidden {
  display: none;
}
.ctrl .fnavbar .fnav .fnav-item>a {
  padding: 10px;
  display: inline-block;
  color: #777;
}
.ctrl .fnavbar .fnav>.active>a {
  color: #000;
}
.ctrl .fnavbar .fnav .fnav-item>a:hover {
  color: #000;
  cursor: pointer;
}
.ctrl .fnavbar .fnav .fnav-item>a:active {
  text-shadow: 0 0 1px #000;
}
.ctrl .fnavbar .fnav>.disabled>a {
  color: #aaa;
}
.ctrl .fnavbar .fnav>.disabled>a:hover {
  color: #aaa;
  cursor: not-allowed;
}
.ctrl .fnavbar .fnav>.active {
  background: #fff;
}

.ctrl .fnavbar .fnav .dropdown, .ctrl .fnavbar .fnav .dropup {
  position: relative;
}
.ctrl .fnavbar .fnav .dropdown .menu {
  top: 100%;
  box-shadow: 3px 0 3px #ddd;
}
.ctrl .fnavbar .fnav .dropdown .caret {
  display: inline-block;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-top: 5px solid #777;
}
.ctrl .fnavbar .fnav .dropup .menu {
  bottom: 100%;
  box-shadow: 3px 0 3px #ddd;
}
.ctrl .fnavbar .fnav .dropup .caret {
  display: inline-block;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-bottom: 5px solid #777;
}
.ctrl .fnavbar .menu {
  position: absolute;
  border: 1px solid #ddd;
  background-color: #fff;
  z-index: 10;
  min-width: 160px;
}
.ctrl .fnavbar .menu li {
  display: block;
  padding: 5px 10px;
}
.ctrl .fnavbar .menu .divider {
  height: 1px;
  background-color: #ddd;
  padding: 0;
  margin: 5px 0;
}
.ctrl .fnavbar .menu .active {
  background-color: #e0e0e0;
}
.ctrl .fnavbar .menu .active:hover {
  /*background-color: #e0e0e0;*/
}
.ctrl .fnavbar .menu li:hover {
  background-color: #eee;
  cursor: pointer;
}
.ctrl .fnavbar .menu li a {
  color: #000;
}
.ctrl .fnavbar .menu .disabled a {
  color: #777;
  cursor: not-allowed;
}

.ctrl .fnavbar .menu .icon {
  display: inline-block;
  width: 14px;
  height: 14px;
  text-align: center;
}

.ctrl .pages {
  padding: 0 10px;
  display: inline-block;
  font-size: 0;
}

.ctrl .pages .number, .ctrl .pages .amount {
  width: 50px;
  height: 20px;
  text-align: center;
  display: inline-block;
  font-size: 11pt;
  border: 0;
  color: #fff;
  background-color: #444;
  font-weight: bold;
  border-radius: 0;
  margin: 0;
  padding: 2px;
}

.ctrl .pages .number {
  border-top-left-radius: 5px;
  border-bottom-left-radius: 5px;
  background-color: #000;
}

.ctrl .pages .amount {
  border-top-right-radius: 5px;
  border-bottom-right-radius: 5px;
}


/* floating window */

.flip-book .float-wnd {
  position: absolute;
  top: 10px;
  left: 10px;
  border-radius: 5px 5px 0 0;
  background-color: #fff;
  width: 300px;
  z-index: 1;
  box-shadow: 3px 0 3px #ddd;
}

.flip-book .float-wnd.hidden {
  display: none;
}

.flip-book .float-wnd .header {
  border-radius: 4px 4px 0 0;
  background-color: #fff;
  background-image: linear-gradient(to bottom,#fff 0,#f8f8f8 100%);
  background-repeat: repeat-x;
  padding: 7px 10px;
  border: 1px solid #ddd;
  border-bottom: none;
  font-weight: bold;
  cursor: move;
}

.flip-book .float-wnd .header .close {
  top: 5px;
  right: 8px;
  font-size: 14px;
  position: absolute;
  color: #777;
}

.flip-book .float-wnd .header .close:hover {
  color: #000;
}
.flip-book .float-wnd .header .close:active {
  font-size: 12px;
  padding-top: 1px;
  padding-right: 1px;
}

.flip-book .float-wnd .body {
  border: 1px solid #ddd;
  border-top: none;
}


/* toc */

.ctrl .toc {
  font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;
}

.ctrl .toc a {
  text-decoration: none;
}

.ctrl .toc .hidden {
  display: none;
}

.ctrl .toc .toc-menu {
  padding: 5px 10px;
}

.ctrl .toc .toc-menu ul {
  list-style: none;
  padding: 0;
}
.ctrl .toc .toc-menu li {
  display: inline-block;
  padding-right: 5px;
}
.ctrl .toc .toc-menu a {
  color: #777;
  font-size: 14px;
}
.ctrl .toc .toc-menu a:hover {
  color: #000;
}
.ctrl .toc .toc-menu a:active {
  text-shadow: 0 0 1px rgba(0,0,0,0.3);
}
.ctrl .toc .toc-menu .active a {
  color: #000;
}

.ctrl .toc .toc-view {
  padding: 10px 0;
  max-height: 80vh;
  overflow-y: auto;
  overflow-x: hidden;
}
.ctrl .toc .toc-view::-webkit-scrollbar {
  width: 7px;
  height: 7px;
}
.ctrl .toc .toc-view::-webkit-scrollbar-button {
  width: 0;
  height: 0;
}
.ctrl .toc .toc-view::-webkit-scrollbar-thumb {
  background: #ccc;
  border-radius: 2px;
}
.ctrl .toc .toc-view::-webkit-scrollbar-thumb:hover {
  background: #ddd;
}
.ctrl .toc .toc-view::-webkit-scrollbar-thumb:active {
  background: #bbb;
}
.ctrl .toc .toc-view::-webkit-scrollbar-track {
  background: #eee;
  border-left: 2px solid #fff;
  border-right: 2px solid #fff;
}

.ctrl .bookmarks .white-space, .ctrl .bookmarks .togle, .ctrl .bookmarks .togle i {
  width: 18px;
  height: 18px;
}

.ctrl .bookmarks .white-space {
  display: inline-block;
}

.ctrl .bookmarks li {
  width: 10000px;
}

.ctrl .bookmarks .item .area {
  padding: 2px 0;
}

.ctrl .bookmarks .level-0 .area {
  padding-left: 5px;
}
.ctrl .bookmarks .level-1 .area {
  padding-left: 10px;
}
.ctrl .bookmarks .level-2 .area {
  padding-left: 15px;
}
.ctrl .bookmarks .level-3 .area {
  padding-left: 20px;
}
.ctrl .bookmarks .level-4 .area {
  padding-left: 25px;
}

.ctrl .bookmarks .item .area:hover {
  background-color: #eee;
}

.ctrl .bookmarks .item .area:active {
  background-color: #e0e0e0;
}

.ctrl .bookmarks .item a {
  color: #000;
  font-size: 14px;
}

.ctrl .bookmarks ul {
  list-style: none;
  padding: 0;
}

.ctrl .bookmarks .togle {
  display: inline-block;
  text-align: center;
  position: relative;
}

.ctrl .bookmarks .togle::before {
  content: ' ';
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  border: 0px solid #f5f5f5;
  transition: border 0.2s;
}

.ctrl .bookmarks .togle:active::before {
  border: 12px solid #f5f5f5;
  transition: border 0.05s;
}

.ctrl .bookmarks .togle i {
  transform: rotateZ(0deg);
  transition: transform 0.2s;
}

.ctrl .bookmarks .togle.minimized i {
  transform: rotateZ(90deg);
  transition: transform 0.2s;
}

.ctrl .thumbnails .item a {
  color: #000;
  font-size: 14px;
}

.ctrl .thumbnails {
  padding: 10px 0;
  text-align: center;
}
.ctrl .thumbnails .thumbnail {
  height: 170px;
  margin-bottom: 5px;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}
.ctrl .thumbnails .loading {
  position: relative;
}
.ctrl .thumbnails .loading::after {
  content: ' ';
  position: absolute;
  width: 40px;
  height: 40px;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  background-size: contain;
  background-image: url('../images/dark-loader.gif');
}
.ctrl .thumbnails .item {
  display: inline-block;
  width: 128px;
  padding: 5px 5px;
  border: 1px solid transparent;
  border-radius: 3px;
}
.ctrl .thumbnails .item:hover {
  border: 1px solid #ddd;
  background-color: #eee;
}
.ctrl .thumbnails .heading {
  overflow: hidden;
  height: 20px;
}


.ctrl .search .result {
  padding: 7px 10px;
  cursor: pointer;
}

.ctrl .search .result:hover {
  background-color: #ddd;
}

.ctrl .search .results a {
  color: #000;
  font-size: 14px;
}

.ctrl .search .query {
  padding: 0 10px;
  padding-bottom: 10px;
}

.ctrl .search .query input {
  width: 100%;
}

.ctrl .search .status {
  text-align: center;
  color: #333;
  font-size: 12px;
}


================================================
FILE: dist/flip-book.js
================================================
/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// identity function for calling harmony imports with the correct context
/******/ 	__webpack_require__.i = function(value) { return value; };
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, {
/******/ 				configurable: false,
/******/ 				enumerable: true,
/******/ 				get: getter
/******/ 			});
/******/ 		}
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = 3);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


exports.__esModule = true;

var _libs = __webpack_require__(2);

__webpack_require__(1);

exports.default = _libs.$;

/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

/******/(function (modules) {
  // webpackBootstrap
  /******/ // The module cache
  /******/var installedModules = {};
  /******/
  /******/ // The require function
  /******/function __webpack_require__(moduleId) {
    /******/
    /******/ // Check if module is in cache
    /******/if (installedModules[moduleId])
      /******/return installedModules[moduleId].exports;
    /******/
    /******/ // Create a new module (and put it into the cache)
    /******/var module = installedModules[moduleId] = {
      /******/i: moduleId,
      /******/l: false,
      /******/exports: {}
      /******/ };
    /******/
    /******/ // Execute the module function
    /******/modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
    /******/
    /******/ // Flag the module as loaded
    /******/module.l = true;
    /******/
    /******/ // Return the exports of the module
    /******/return module.exports;
    /******/
  }
  /******/
  /******/
  /******/ // expose the modules object (__webpack_modules__)
  /******/__webpack_require__.m = modules;
  /******/
  /******/ // expose the module cache
  /******/__webpack_require__.c = installedModules;
  /******/
  /******/ // identity function for calling harmony imports with the correct context
  /******/__webpack_require__.i = function (value) {
    return value;
  };
  /******/
  /******/ // define getter function for harmony exports
  /******/__webpack_require__.d = function (exports, name, getter) {
    /******/if (!__webpack_require__.o(exports, name)) {
      /******/Object.defineProperty(exports, name, {
        /******/configurable: false,
        /******/enumerable: true,
        /******/get: getter
        /******/ });
      /******/
    }
    /******/
  };
  /******/
  /******/ // getDefaultExport function for compatibility with non-harmony modules
  /******/__webpack_require__.n = function (module) {
    /******/var getter = module && module.__esModule ?
    /******/function getDefault() {
      return module['default'];
    } :
    /******/function getModuleExports() {
      return module;
    };
    /******/__webpack_require__.d(getter, 'a', getter);
    /******/return getter;
    /******/
  };
  /******/
  /******/ // Object.prototype.hasOwnProperty.call
  /******/__webpack_require__.o = function (object, property) {
    return Object.prototype.hasOwnProperty.call(object, property);
  };
  /******/
  /******/ // __webpack_public_path__
  /******/__webpack_require__.p = "";
  /******/
  /******/ // Load entry module and return exports
  /******/return __webpack_require__(__webpack_require__.s = 72);
  /******/
})(
/************************************************************************/
/******/[
/* 0 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;
  var _$ = true ? window.jQuery : require('jquery'),
      _html2canvas = true ? window.html2canvas : require('html2canvas'),
      _THREE = true ? window.THREE : require('three'),
      _React = true ? window.React : require('react'),
      _ReactDOM = true ? window.ReactDOM : require('react-dom'),
      _PDFJS = true ? window.PDFJS : require('pdfjs'),
      _tr = function _tr(s) {
    return (window.iberezansky || {}).tr && window.iberezansky.tr(s) || s;
  };

  exports.$ = _$;
  exports.html2canvas = _html2canvas;
  exports.THREE = _THREE;
  exports.React = _React;
  exports.ReactDOM = _ReactDOM;
  exports.PDFJS = _PDFJS;
  exports.tr = _tr;

  /***/
},
/* 1 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  var _extends = Object.assign || function (target) {
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments[i];for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }return target;
  };

  var _$ = true ? window.jQuery : require('jquery'),
      _html2canvas = true ? window.html2canvas : require('html2canvas'),
      _THREE = true ? window.THREE : require('three'),
      _PDFJS = true ? window.PDFJS : require('pdfjs'),
      _tr = function _tr(s) {
    return (window.iberezansky || {}).tr && window.iberezansky.tr(s) || s;
  };

  if (window.FB3D_LOCALE) {
    window.iberezansky = _extends({}, window.iberezansky, {
      tr: function tr(s) {
        return (FB3D_LOCALE.dictionary || {})[s] || s;
      }
    });
  }

  exports.$ = _$;
  exports.html2canvas = _html2canvas;
  exports.THREE = _THREE;
  exports.PDFJS = _PDFJS;
  exports.tr = _tr;

  /***/
},
/* 2 */
/***/function (module, exports) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  var BaseMathUtils = function () {
    function BaseMathUtils() {
      _classCallCheck(this, BaseMathUtils);
    }

    BaseMathUtils.sum1 = function sum1(ka, a, kb, b) {
      return [ka * a[0] + kb * b[0]];
    };

    BaseMathUtils.sum2 = function sum2(ka, a, kb, b) {
      return [ka * a[0] + kb * b[0], ka * a[1] + kb * b[1]];
    };

    BaseMathUtils.sum3 = function sum3(ka, a, kb, b) {
      return [ka * a[0] + kb * b[0], ka * a[1] + kb * b[1], ka * a[2] + kb * b[2]];
    };

    BaseMathUtils.sum4 = function sum4(ka, a, kb, b) {
      return [ka * a[0] + kb * b[0], ka * a[1] + kb * b[1], ka * a[2] + kb * b[2], ka * a[3] + kb * b[3]];
    };

    BaseMathUtils.rk4 = function rk4(dy, t, dt, y) {
      var sum = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : BaseMathUtils.sum[y.length - 1];

      var k1 = dy(t, y),
          k2 = dy(t + dt / 2, sum(1, y, dt / 2, k1)),
          k3 = dy(t + dt / 2, sum(1, y, dt / 2, k2)),
          k4 = dy(t + dt, sum(1, y, dt, k3));
      return sum(1, y, dt / 6, sum(1, sum(1, k1, 2, k2), 1, sum(2, k3, 1, k4)));
    };

    BaseMathUtils.extrapolateLinear = function extrapolateLinear(x, y, xi) {
      return y[0] + (y[1] - y[0]) / (x[1] - x[0]) * (xi - x[0]);
    };

    BaseMathUtils.interpolateLinear = function interpolateLinear(x, y, xi) {
      var yi = void 0;
      if (x[0] > x[1]) {
        x = x.reverse();
        y = y.reverse();
      }
      if (xi < x[0]) {
        yi = y[0];
      } else if (xi > x[1]) {
        yi = y[1];
      } else {
        yi = BaseMathUtils.extrapolateLinear(x, y, xi);
      }
      return yi;
    };

    BaseMathUtils.calcScale = function calcScale(srcW, srcH, dstW, dstH) {
      return Math.min(dstW / srcW, dstH / srcH);
    };

    BaseMathUtils.mulM = function mulM(a, b) {
      var r = [];
      for (var i = 0; i < a.length; ++i) {
        r.push([]);
        for (var j = 0; j < b[0].length; ++j) {
          r[i][j] = 0;
          for (var k = 0; k < b.length; ++k) {
            r[i][j] += a[i][k] * b[k][j];
          }
        }
      }
      return r;
    };

    BaseMathUtils.transM = function transM(m) {
      var r = [];
      for (var i = 0; i < m.length; ++i) {
        for (var j = 0; j < m[0].length; ++j) {
          if (!r[j]) {
            r[j] = [];
          }
          r[j][i] = m[i][j];
        }
      }
      return r;
    };

    BaseMathUtils.mat = function mat(data) {
      var s = 0;
      for (var _iterator = data, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
        var _ref;

        if (_isArray) {
          if (_i >= _iterator.length) break;
          _ref = _iterator[_i++];
        } else {
          _i = _iterator.next();
          if (_i.done) break;
          _ref = _i.value;
        }

        var x = _ref;

        s += x;
      }
      return s / data.length;
    };

    BaseMathUtils.disp = function disp(data) {
      var M = BaseMathUtils.mat(data);
      var s = 0;
      for (var _iterator2 = data, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
        var _ref2;

        if (_isArray2) {
          if (_i2 >= _iterator2.length) break;
          _ref2 = _iterator2[_i2++];
        } else {
          _i2 = _iterator2.next();
          if (_i2.done) break;
          _ref2 = _i2.value;
        }

        var x = _ref2;

        s += (x - M) * (x - M);
      }
      return s / data.length;
    };

    BaseMathUtils.predict = function predict(data, num) {
      var r = [],
          l = data.length,
          D = BaseMathUtils.disp(data);
      if (D < l && l > 1) {
        var am = [],
            bm = [];
        for (var i = 0; i < l; ++i) {
          am.push([i, 1]);
          bm.push([data[i]]);
        }
        var ta = BaseMathUtils.transM(am),
            a = BaseMathUtils.mulM(ta, am),
            b = BaseMathUtils.mulM(ta, bm),
            d = a[0][0] * a[1][1] - a[1][0] * a[0][1],
            p = [-(a[0][1] * b[1][0] - b[0][0] * a[1][1]) / d, (a[0][0] * b[1][0] - a[1][0] * b[0][0]) / d];
        for (var _i3 = 0; _i3 < num; ++_i3) {
          var v = Math.round(p[0] * (_i3 + l) + p[1]);
          if (r.indexOf(v) === -1) {
            r.push(v);
          }
        }
      }
      return r;
    };

    BaseMathUtils.getUnique = function getUnique() {
      return Math.ceil(1e9 * Math.random());
    };

    BaseMathUtils.setSplinePoints = function setSplinePoints(spline, ps) {
      if (spline.points.length !== ps.x.length) {
        console.warn('setSplinePoints: bad points');
      }
      for (var i = 0; i < spline.points.length; ++i) {
        spline.points[i].set(ps.x[i], ps.y[i], ps.z ? ps.z[i] : 0);
      }
    };

    BaseMathUtils.mapl2L = function mapl2L(ls, len, n, f) {
      var dL = len / (n - 1);
      var L = 0;
      for (var i = 0, d = ls[0]; i < ls.length - 1 && L < len + 0.1 * dL; ++i, d += ls[i]) {
        if (Math.abs(L - d) < Math.abs(L - d - ls[i + 1])) {
          f(i, L);
          L += dL;
        }
      }
      if (L < len + 0.1 * dL) {
        console.warn('mapl2L: ls is not enought');
      }
    };

    BaseMathUtils.det2 = function det2(a, b, c, d) {
      return a * d - b * c;
    };

    BaseMathUtils.solve2Lin = function solve2Lin(a1, b1, a2, b2) {
      var res = void 0;
      var d = BaseMathUtils.det2(a1[0], a1[1], a2[0], a2[1]);
      if (Math.abs(d) > BaseMathUtils.eps) {
        var dx = BaseMathUtils.det2(b1, a1[1], b2, a2[1]),
            dy = BaseMathUtils.det2(a1[0], b1, a2[0], b2);
        res = {
          x: dx / d,
          y: dy / d
        };
      }
      return res;
    };

    BaseMathUtils.isInsidePoly = function isInsidePoly(ps, p) {
      var done = false,
          ct = void 0;
      for (var i = 0; i < ps.length; ++i) {
        if (BaseMathUtils.v2dist(p, ps[i]) < BaseMathUtils.eps) {
          ct = 1;
          done = true;
          break;
        }
      }
      while (!done) {
        done = true;
        ct = 0;
        var np = { x: p.x + Math.random() - 0.5, y: p.y + Math.random() - 0.5 },
            rn = { x: np.x - p.x, y: np.y - p.y },
            a1 = [rn.y, -rn.x],
            b1 = p.x * rn.y - p.y * rn.x;
        for (var _i4 = 0; _i4 < ps.length; ++_i4) {
          var p0 = ps[_i4],
              p1 = ps[(_i4 + 1) % ps.length],
              n = { x: p1.x - p0.x, y: p1.y - p0.y },
              a2 = [n.y, -n.x],
              b2 = p0.x * n.y - p0.y * n.x,
              ip = BaseMathUtils.solve2Lin(a1, b1, a2, b2);
          if (ip) {
            if (BaseMathUtils.v2dist(ip, p0) < BaseMathUtils.eps || BaseMathUtils.v2dist(ip, p1) < BaseMathUtils.eps) {
              done = false;
              break;
            } else if (ip.x > Math.min(p0.x, p1.x) - BaseMathUtils.eps && ip.x < Math.max(p0.x, p1.x) + BaseMathUtils.eps && ip.y > Math.min(p0.y, p1.y) - BaseMathUtils.eps && ip.y < Math.max(p0.y, p1.y) + BaseMathUtils.eps) {
              if (BaseMathUtils.v2dist(ip, p) < BaseMathUtils.eps) {
                ct = 1;
                break;
              } else {
                var tn = { x: ip.x - p.x, y: ip.y - p.y };
                ct += tn.x * rn.x + tn.y * rn.y > 0;
              }
            }
          }
        }
      }
      return ct % 2;
    };

    BaseMathUtils.isInsideConvPoly = function isInsideConvPoly(ps, p) {
      var sg = [0, 0];
      for (var i = 0; i < ps.length; ++i) {
        var p0 = ps[i],
            p1 = ps[(i + 1) % ps.length],
            a = { x: p0.x - p.x, y: p0.y - p.y },
            b = { x: p1.x - p.x, y: p1.y - p.y };
        ++sg[(a.x * b.y - a.y * b.x < 0) + 0];
      }
      return ~sg.indexOf(ps.length);
    };

    BaseMathUtils.v2len = function v2len(v2) {
      return Math.sqrt(v2.x * v2.x + v2.y * v2.y);
    };

    BaseMathUtils.v2dist = function v2dist(v21, v22) {
      return BaseMathUtils.v2len({
        x: v22.x - v21.x,
        y: v22.y - v21.y
      });
    };

    BaseMathUtils.computeSquare = function computeSquare(ps) {
      var a = [];
      var p = 0;
      for (var i = 0; i < ps.length; ++i) {
        a.push(BaseMathUtils.v2dist(ps[i], ps[(i + 1) % ps.length]));
        p += 0.5 * a[i];
      }
      return Math.sqrt(p * (p - a[0]) * (p - a[1]) * (p - a[2]));
    };

    BaseMathUtils.computeInterpCoefs = function computeInterpCoefs(tri, p) {
      var s = BaseMathUtils.computeSquare(tri),
          coefs = [],
          l = tri.length;
      for (var i = 0; i < l; ++i) {
        coefs[i] = BaseMathUtils.computeSquare([p, tri[(i + 1) % l], tri[(i + 2) % l]]) / s;
      }
      return coefs;
    };

    return BaseMathUtils;
  }();

  BaseMathUtils.sum = [BaseMathUtils.sum1, BaseMathUtils.sum2, BaseMathUtils.sum3, BaseMathUtils.sum4];
  BaseMathUtils.eps = 1e-4;
  exports.default = BaseMathUtils;

  /***/
},
/* 3 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  var _libs = __webpack_require__(0);

  var _BaseMathUtils2 = __webpack_require__(2);

  var _BaseMathUtils3 = _interopRequireDefault(_BaseMathUtils2);

  function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : { default: obj };
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _possibleConstructorReturn(self, call) {
    if (!self) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }return call && ((typeof call === 'undefined' ? 'undefined' : _typeof2(call)) === "object" || typeof call === "function") ? call : self;
  }

  function _inherits(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === 'undefined' ? 'undefined' : _typeof2(superClass)));
    }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
  }

  var MathUtils = function (_BaseMathUtils) {
    _inherits(MathUtils, _BaseMathUtils);

    function MathUtils() {
      _classCallCheck(this, MathUtils);

      return _possibleConstructorReturn(this, _BaseMathUtils.apply(this, arguments));
    }

    MathUtils.splitSpline = function splitSpline(spline, N) {
      var o = { len: 0, ls: [0] },
          dl = 1 / N;
      for (var i = 0; i <= N; ++i) {
        var p = spline.getPoint(i * dl);
        if (i) {
          var d = MathUtils.v1.distanceTo(p);
          o.len += d;
          o.ls.push(d);
        }
        MathUtils.v1.copy(p);
      }
      return o;
    };

    MathUtils.getLinearIndeces = function getLinearIndeces(spline, n) {
      var del = 5000,
          dDel = 1 / del;
      var ls = [0];
      var l = 0;
      for (var i = 0; i <= del; ++i) {
        var p = spline.getPoint(i * dDel);
        if (i) {
          var d = MathUtils.v1.distanceTo(p);
          l += d;
          ls.push(d);
        }
        MathUtils.v1.copy(p);
      }
      ls.push(1e7);

      var res = [],
          dl = l / (n - 1);
      for (var _i = 0, L = 0, _d = ls[0]; _i < ls.length - 1; ++_i, _d += ls[_i]) {
        if (Math.abs(L - _d) < Math.abs(L - _d - ls[_i + 1])) {
          res.push(_i * dDel);
          L += dl;
        }
      }

      return res;
    };

    MathUtils.refinePoly = function refinePoly(poly, maxDl) {
      var res = [];
      for (var i = 0; i < poly.length; ++i) {
        var p0 = poly[i],
            p1 = poly[(i + 1) % poly.length],
            l = _BaseMathUtils3.default.v2dist(p0, p1),
            n = Math.ceil(l / maxDl),
            dl = l / n;
        res.push(p0);
        for (var j = 1; j < n; ++j) {
          res.push(new _libs.THREE.Vector2(p0.x + j * dl * (p1.x - p0.x) / l, p0.y + j * dl * (p1.y - p0.y) / l));
        }
      }
      return res;
    };

    return MathUtils;
  }(_BaseMathUtils3.default);

  MathUtils.v1 = new _libs.THREE.Vector3();
  exports.default = MathUtils;

  /***/
},
/* 4 */
/***/function (module, exports) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  var Utils = function () {
    function Utils() {
      _classCallCheck(this, Utils);
    }

    Utils.normalizeUrl = function normalizeUrl(url) {
      function split(s) {
        return s.replace(/\\/g, '/').split('/');
      }
      var base = split(window.location.href);
      url = split(url);
      if (base[2] === url[2]) {
        url[0] = base[0];
      }
      return url.join('/');
    };

    Utils.extends = function _extends(der, base) {
      for (var name in base) {
        if (!der.hasOwnProperty(name)) {
          der[name] = base[name];
        }
      }
    };

    Utils.defaultCmp = function defaultCmp(a, b) {
      return a - b;
    };

    Utils.lowerBound = function lowerBound(a, x, cmp) {
      cmp = cmp || Utils.defaultCmp;
      var l = 0,
          h = a.length - 1;
      while (h - l > 1) {
        var mid = Math.floor((l + h) / 2);
        if (cmp(x, a[mid]) < 0) {
          h = mid;
        } else {
          l = mid;
        }
      }
      return cmp(x, a[h]) >= 0 ? h : l;
    };

    return Utils;
  }();

  exports.default = Utils;

  /***/
},
/* 5 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  var _libs = __webpack_require__(0);

  var _GraphUtils = __webpack_require__(7);

  var _GraphUtils2 = _interopRequireDefault(_GraphUtils);

  function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : { default: obj };
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  var ImageBase = function () {
    function ImageBase(context, width, height, color) {
      _classCallCheck(this, ImageBase);

      this.context = context;
      this.wnd = context.wnd;
      this.doc = context.doc;
      this.element = context.element || context.doc.body;
      this.c = context.renderCanvas || ImageBase.renderCanvas;
      this.ctx = context.renderCanvasCtx || ImageBase.renderCanvasCtx;
      this.resW = this.width = width;
      this.resH = this.height = height;
      this.color = color;
    }

    ImageBase.prototype.setResolution = function setResolution(res) {
      this.resW = res.width;
      this.resH = res.height;
    };

    ImageBase.prototype.dispose = function dispose() {};

    ImageBase.prototype.renderBlankPage = function renderBlankPage() {
      this.ctx.beginPath();
      this.ctx.fillStyle = _GraphUtils2.default.color2Rgba(this.color, 1);
      this.ctx.rect(0, 0, this.c.width, this.c.height);
      this.ctx.fill();
    };

    ImageBase.prototype.renderImage = function renderImage(image) {
      this.pushCtx();
      this.ctx.drawImage(image, 0, 0);
      this.popCtx();
    };

    ImageBase.prototype.normToConv = function normToConv(p) {
      return {
        x: p.x * this.c.width,
        y: (1 - p.y) * this.c.height
      };
    };

    ImageBase.prototype.renderHit = function renderHit(poly) {
      var ctx = this.ctx;
      ctx.fillStyle = 'rgba(255,255,0,0.4)';
      ctx.beginPath();
      var p = this.normToConv(poly[0]);
      ctx.moveTo(p.x, p.y);
      for (var i = 1; i < poly.length; ++i) {
        p = this.normToConv(poly[i]);
        ctx.lineTo(p.x, p.y);
      }
      ctx.closePath();
      ctx.fill();
    };

    ImageBase.prototype.pushCtx = function pushCtx() {
      if (this.resW != this.c.width) {
        this.c.width = this.resW;
      }
      if (this.resH != this.c.height) {
        this.c.height = this.resH;
      }
      this.ctx.save();
      this.ctx.scale(this.c.width / this.width, this.c.height / this.height);
      return this.ctx;
    };

    ImageBase.prototype.popCtx = function popCtx() {
      this.ctx.restore();
    };

    ImageBase.prototype.renderNotFoundPage = function renderNotFoundPage() {
      this.renderBlankPage();
    };

    ImageBase.prototype.finishRender = function finishRender() {
      if (this.onChange) {
        this.onChange(this.c);
      }
    };

    ImageBase.prototype.finishLoad = function finishLoad() {
      if (this.onLoad) {
        this.onLoad();
      } else {
        this.startRender();
      }
    };

    ImageBase.prototype.getSimulatedDoc = function getSimulatedDoc() {
      return undefined;
    };

    return ImageBase;
  }();

  ImageBase.renderCanvas = (0, _libs.$)('<canvas>')[0];
  ImageBase.renderCanvasCtx = ImageBase.renderCanvas.getContext('2d');
  exports.default = ImageBase;

  /***/
},
/* 6 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  var _extends = Object.assign || function (target) {
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments[i];for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }return target;
  };

  var _libs = __webpack_require__(0);

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  var EventConverter = function () {

    // virtuals
    // getObject(e, data);
    // getCallback(object);
    // test(object1, object1);

    function EventConverter(wnd, doc) {
      _classCallCheck(this, EventConverter);

      this.wnd = wnd;
      this.doc = doc;
      this.enabled = true;
    }

    EventConverter.prototype.setEnable = function setEnable(vl) {
      if (!vl) {
        if (this.mCapObject) {
          this.notify(this.mCapObject, _libs.$.Event('mouseup'), 'mouseup');
          this.mCapObject = undefined;
        }
        if (this.mHovObject) {
          this.notify(this.mHovObject, _libs.$.Event('mouseout'), 'mouseout');
          this.mHovObject = undefined;
        }
      }
      this.enabled = vl;
    };

    EventConverter.prototype.getCallback = function getCallback(object) {
      return undefined;
    };

    EventConverter.prototype.notify = function notify(object, e, type) {
      var callback = this.getCallback(object);
      if (callback) {
        var props = _extends({}, e, {
          type: type,
          view: this.wnd
        });
        var jE = _libs.$.Event(type, props);
        callback(jE, object);
      }
    };

    EventConverter.prototype.convert = function convert(e, data) {
      if (!this.enabled) return;

      if (this.filter) {
        e = this.filter(this.element, e);
      }

      var object = this.getObject(e, data),
          notify = ~e.type.indexOf('touch') ? this.convertTouch(e, data, object) : this.convertMouse(e, data, object);
      if (notify && object) {
        this.notify(object, e, e.type);
      }
    };

    EventConverter.prototype.convertTouch = function convertTouch(e, data, object) {
      var notify = true;
      switch (e.type) {
        case 'touchstart':
          {
            if (this.tCapObject) {
              this.notify(this.tCapObject, e, 'touchend');
            }
            this.tCapObject = object;
            break;
          }
        case 'touchend':
          {
            if (this.tCapObject && !this.test(this.tCapObject, object)) {
              this.notify(this.tCapObject, e, 'touchend');
              notify = false;
            } else if (object && this.test(this.tCapObject, object)) {
              this.notify(object, e, 'touchtap');
            }
            this.tCapObject = undefined;
            break;
          }
        case 'touchtap':
          {
            notify = false;
            break;
          }
      }
      return notify;
    };

    EventConverter.prototype.convertMouse = function convertMouse(e, data, object) {
      var notify = true;
      switch (e.type) {
        case 'mousedown':
          {
            if (this.mCapObject) {
              this.notify(this.mCapObject, e, 'mouseup');
            }
            this.mCapObject = object;
            break;
          }
        case 'mouseup':
          {
            if (this.mCapObject && !this.test(this.mCapObject, object)) {
              this.notify(this.mCapObject, e, 'mouseup');
              notify = false;
            }
            break;
          }
        case 'click':
          {
            notify = this.test(this.mCapObject, object);
            this.mCapObject = undefined;
            break;
          }
        case 'mouseenter':
        case 'mouseover':
        case 'mousemove':
          {
            if (!this.test(this.mHovObject, object) && this.mHovObject) {
              this.notify(this.mHovObject, e, 'mouseout');
              this.mHovObject = undefined;
            }
            if (!this.mHovObject && object) {
              this.notify(object, e, 'mouseover');
              this.mHovObject = object;
            }
            notify = e.type === 'mousemove';
            break;
          }
        case 'mouseleave':
        case 'mouseout':
          {
            if (this.mHovObject) {
              this.notify(this.mHovObject, e, 'mouseout');
              this.mHovObject = undefined;
            }
            notify = false;
            break;
          }
      }
      return notify;
    };

    return EventConverter;
  }();

  exports.default = EventConverter;

  /***/
},
/* 7 */
/***/function (module, exports) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  var GraphUtils = function () {
    function GraphUtils() {
      _classCallCheck(this, GraphUtils);
    }

    GraphUtils.extrapolateLinear = function extrapolateLinear(x, y, xi) {
      return y[0] + (y[1] - y[0]) / (x[1] - x[0]) * (xi - x[0]);
    };

    GraphUtils.interpolate01 = function interpolate01(y1, y2, t) {
      return GraphUtils.extrapolateLinear([0, 1], [y1, y2], t);
    };

    GraphUtils.getColorBytes = function getColorBytes(color) {
      return [color >> 16 & 0xFF, color >> 8 & 0xFF, color & 0xFF];
    };

    GraphUtils.inverseColor = function inverseColor(color) {
      var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;

      var bs = GraphUtils.getColorBytes(color),
          ibs = [0xFF - bs[0], 0xFF - bs[1], 0xFF - bs[2]],
          nbs = [Math.round(GraphUtils.interpolate01(bs[0], ibs[0], t)), Math.round(GraphUtils.interpolate01(bs[1], ibs[1], t)), Math.round(GraphUtils.interpolate01(bs[2], ibs[2], t))];
      return GraphUtils.bytes2Color(nbs);
    };

    GraphUtils.color2Rgba = function color2Rgba(color, a) {
      return GraphUtils.bytes2Rgba(GraphUtils.getColorBytes(color), a);
    };

    GraphUtils.bytes2Rgba = function bytes2Rgba(bs, a) {
      return 'rgba(' + bs.join(',') + ',' + a + ')';
    };

    GraphUtils.bytes2Color = function bytes2Color(bs) {
      return bs[2] | bs[1] << 8 | bs[0] << 16;
    };

    return GraphUtils;
  }();

  exports.default = GraphUtils;

  /***/
},
/* 8 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  var _Cache = __webpack_require__(14);

  var _Cache2 = _interopRequireDefault(_Cache);

  var _BlankImage = __webpack_require__(43);

  var _BlankImage2 = _interopRequireDefault(_BlankImage);

  var _StaticImage = __webpack_require__(59);

  var _StaticImage2 = _interopRequireDefault(_StaticImage);

  var _PdfImage = __webpack_require__(57);

  var _PdfImage2 = _interopRequireDefault(_PdfImage);

  var _InteractiveImage = __webpack_require__(51);

  var _InteractiveImage2 = _interopRequireDefault(_InteractiveImage);

  function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : { default: obj };
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  var ImageFactory = function () {
    function ImageFactory(context, cache) {
      _classCallCheck(this, ImageFactory);

      this.context = context;
      this.cache = cache || new _Cache2.default();
    }

    ImageFactory.prototype.build = function build(info) {
      var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
      var widthTexels = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 210;
      var heightTexels = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 297;
      var color = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0xFFFFFF;
      var injector = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : undefined;

      var image = void 0;
      switch (info.type) {
        case 'html':
          {
            image = new _InteractiveImage2.default(this.context, widthTexels, heightTexels, color, info.src, this.cache, injector);
            break;
          }
        case 'image':
          {
            image = new _StaticImage2.default(this.context, widthTexels, heightTexels, color, info.src);
            break;
          }
        case 'pdf':
          {
            image = new _PdfImage2.default(this.context, widthTexels, heightTexels, color, info.src, n);
            break;
          }
        case 'blank':
        default:
          {
            image = new _BlankImage2.default(this.context, widthTexels, heightTexels, color);
            break;
          }
      }
      return image;
    };

    return ImageFactory;
  }();

  exports.default = ImageFactory;

  /***/
},
/* 9 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  var _extends = Object.assign || function (target) {
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments[i];for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }return target;
  };

  var _book = __webpack_require__(11);

  var _BaseMathUtils = __webpack_require__(2);

  var _BaseMathUtils2 = _interopRequireDefault(_BaseMathUtils);

  function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : { default: obj };
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  var BookPropsBuilder = function () {
    function BookPropsBuilder(onReady) {
      _classCallCheck(this, BookPropsBuilder);

      this.onReady = onReady;
      this.defaults = (0, _book.props)();
    }

    BookPropsBuilder.prototype.dispose = function dispose() {};

    BookPropsBuilder.prototype.calcSize = function calcSize(width, height) {
      var scale = _BaseMathUtils2.default.calcScale(width, height, this.defaults.width, this.defaults.height);
      return {
        width: scale * width,
        height: scale * height
      };
    };

    BookPropsBuilder.prototype.calcTexels = function calcTexels(width, height) {
      var sheet = this.defaults.sheet,
          scale = _BaseMathUtils2.default.calcScale(width, height, sheet.widthTexels, sheet.heightTexels);
      return {
        widthTexels: scale * width,
        heightTexels: scale * height
      };
    };

    BookPropsBuilder.prototype.calcProps = function calcProps(width, height) {
      this.props = _extends({}, this.defaults, this.calcSize(width, height), {
        sheet: _extends({}, this.defaults.sheet, this.calcTexels(width, height)),
        cover: _extends({}, this.defaults.cover),
        page: _extends({}, this.defaults.page)
      });
    };

    BookPropsBuilder.prototype.calcSheets = function calcSheets(pages) {
      return this.sheets = Math.ceil(Math.max(0, pages - 4) / 2);
    };

    BookPropsBuilder.prototype.getSheets = function getSheets() {
      return this.sheets;
    };

    BookPropsBuilder.prototype.getProps = function getProps() {
      return this.props;
    };

    BookPropsBuilder.prototype.getPageCallback = function getPageCallback() {
      return this.binds.pageCallback;
    };

    BookPropsBuilder.prototype.ready = function ready() {
      if (this.onReady) {
        this.onReady(this.getProps(), this.getSheets(), this.getPageCallback());
      }
    };

    return BookPropsBuilder;
  }();

  exports.default = BookPropsBuilder;

  /***/
},
/* 10 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) {
    return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj);
  } : function (obj) {
    return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj);
  };

  var _extends = Object.assign || function (target) {
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments[i];for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }return target;
  };

  var _libs = __webpack_require__(1);

  var _sheetBlock = __webpack_require__(41);

  var _sheetBlock2 = _interopRequireDefault(_sheetBlock);

  var _MathUtils = __webpack_require__(3);

  var _MathUtils2 = _interopRequireDefault(_MathUtils);

  var _ThreeUtils = __webpack_require__(20);

  var _ThreeUtils2 = _interopRequireDefault(_ThreeUtils);

  function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : { default: obj };
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  // import ThreeMarkup from './ThreeMarkup';

  var SheetBlock = function () {
    function SheetBlock(visual, p, first, last) {
      var angle = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;

      var _this = this;

      var state = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'closed';
      var height = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;

      _classCallCheck(this, SheetBlock);

      this.visual = visual;
      this.p = _extends({}, p, {
        first: first,
        last: last
      });
      var props = this.getProps();

      var loadedPoints = this.loadPoints();
      Object.keys(loadedPoints).map(function (k) {
        _this[k] = loadedPoints[k][props.shape] || loadedPoints[k][0];
      });

      this.pSpline = new _libs.THREE.Spline([]);
      for (var i = 0; i < this.interpolationPoints.x[0].length; ++i) {
        this.pSpline.points.push(new _libs.THREE.Vector3());
      }

      this.iSpline = new _libs.THREE.Spline([]);
      for (var _i = 0; _i < _sheetBlock2.default.resX; ++_i) {
        this.iSpline.points.push(new _libs.THREE.Vector3());
      }

      this.aSplines = [];

      //this.three = new THREE.Object3D();

      this.geometry = _sheetBlock2.default.geometry.clone();

      this.p.sideFaces = [{
        first: 0,
        last: _sheetBlock2.default.faces[0]
      }, {
        first: _sheetBlock2.default.faces[0],
        last: _sheetBlock2.default.faces[1]
      }];

      this.sideTexture = new _libs.THREE.Texture();
      this.sideTexture.wrapT = _libs.THREE.RepeatWrapping;
      this.sideTexture.repeat.set(0, last - first);
      this.sideTexture.image = props.sideTexture;
      this.sideTexture.needsUpdate = true;

      this.materials = [new _libs.THREE.MeshPhongMaterial(), new _libs.THREE.MeshPhongMaterial(), new _libs.THREE.MeshPhongMaterial({ map: this.sideTexture }), new _libs.THREE.MeshPhongMaterial({ map: this.sideTexture }), new _libs.THREE.MeshPhongMaterial({ map: this.sideTexture }), new _libs.THREE.MeshPhongMaterial({ map: this.sideTexture })];

      this.p.setTexture(this.materials[0], 2 * first);
      this.p.setTexture(this.materials[1], 2 * last - 1);

      this.mesh = new _libs.THREE.Mesh(this.geometry, new _libs.THREE.MeshFaceMaterial(this.materials));
      this.mesh.castShadow = false;
      this.mesh.receiveShadow = false;
      // this.mesh.frustumCulled = true;

      //this.three.add(this.mesh);
      this.three = this.mesh;
      this.three.userData.self = this;

      this.markers = [];
      if (this.p.marker.use) {
        var l = this.geometry.vertices.length;
        var is = void 0;
        // is = [0, sheetBlock.resX-1, (sheetBlock.resZ-1)*sheetBlock.resX, sheetBlock.resZ*sheetBlock.resX-1];
        is = Array.apply(0, Array(l)).map(function (_, i) {
          return i;
        });

        for (var _iterator = is, _isArray = Array.isArray(_iterator), _i2 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
          var _ref;

          if (_isArray) {
            if (_i2 >= _iterator.length) break;
            _ref = _iterator[_i2++];
          } else {
            _i2 = _iterator.next();
            if (_i2.done) break;
            _ref = _i2.value;
          }

          var _i3 = _ref;

          var marker = _ThreeUtils2.default.createMarker(this.geometry.vertices[_i3], _i3 < l / 2 ? 0xFF0000 : 0x00FF00, this.p.marker.size);
          this.markers.push({
            marker: marker,
            vertex: _i3
          });
          this.three.add(marker);
        }
      }

      this.corner = {
        use: true,
        height: 0,
        maxDistance: 0,
        points: [],
        OZ: new _libs.THREE.Vector3(0, 0, 1),
        axis: new _libs.THREE.Vector3()
      };
      this.set(0, 'closed', height, first, last); // calculate corner points

      this.set(angle, state, height, first, last); // init position

      // if(!SheetBlock.markup) {
      //   SheetBlock.markup=true;
      //   this.markup = new ThreeMarkup(this, 0, [{
      //     x: 0,
      //     y: 0,
      //   }, {
      //     x: 0.5,
      //     y: 1
      //   }, {
      //     x: 1,
      //     y: 0
      //   }].map((p)=>new THREE.Vector2(p.x, p.y)), {});
      // }
    }

    SheetBlock.prototype.dispose = function dispose() {
      for (var _iterator2 = this.materials, _isArray2 = Array.isArray(_iterator2), _i4 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
        var _ref2;

        if (_isArray2) {
          if (_i4 >= _iterator2.length) break;
          _ref2 = _iterator2[_i4++];
        } else {
          _i4 = _iterator2.next();
          if (_i4.done) break;
          _ref2 = _i4.value;
        }

        var m = _ref2;

        if (m.map) {
          m.map = null;
          m.needsUpdate = true;
        }
        m.dispose();
      }
      delete this.materials;
      this.geometry.dispose();
    };

    SheetBlock.prototype.getSize = function getSize() {
      return this.p.last - this.p.first;
    };

    SheetBlock.prototype.getProps = function getProps() {
      return _extends({}, this.p.page, {
        sheets: this.p.sheets
      });
    };

    SheetBlock.prototype.getTopCerners = function getTopCerners() {
      var off = this.angle > Math.PI / 2 ? this.geometry.vertices.length / 2 : 0;
      return [this.geometry.vertices[off], this.geometry.vertices[_sheetBlock2.default.resX - 1 + off], this.geometry.vertices[(_sheetBlock2.default.resZ - 1) * _sheetBlock2.default.resX + off], this.geometry.vertices[_sheetBlock2.default.resZ * _sheetBlock2.default.resX - 1 + off]];
    };

    SheetBlock.prototype.getTopSize = function getTopSize() {
      // const l=this.geometry.vertices.length, off = this.angle>Math.PI/2? l/2: 0,
      //   v0 = this.geometry.vertices[off], v1 = this.geometry.vertices[sheetBlock.resZ*sheetBlock.resX-1+off];
      // // is = [0, sheetBlock.resX-1, (sheetBlock.resZ-1)*sheetBlock.resX, sheetBlock.resZ*sheetBlock.resX-1];
      // return {
      //   width: Math.abs(v1.x-v0.x),
      //   height: Math.abs(v1.z-v0.z)
      // };
      var vs = this.getTopCerners();
      return {
        width: vs[0].distanceTo(vs[1]),
        height: vs[0].distanceTo(vs[2])
      };
    };

    SheetBlock.prototype.getTopWorldRotation = function getTopWorldRotation(q) {
      q.x = -Math.PI / 2;
      return q;
    };

    SheetBlock.prototype.getTopWorldPosition = function getTopWorldPosition(v) {
      var l = this.geometry.vertices.length,
          off = this.angle > Math.PI / 2 ? l / 2 : 0,
          vs = [this.geometry.vertices[off], this.geometry.vertices[_sheetBlock2.default.resX - 1 + off], this.geometry.vertices[(_sheetBlock2.default.resZ - 1) * _sheetBlock2.default.resX + off], this.geometry.vertices[_sheetBlock2.default.resZ * _sheetBlock2.default.resX - 1 + off]];
      v.set(0, 0, 0);
      for (var _iterator3 = vs, _isArray3 = Array.isArray(_iterator3), _i5 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
        var _ref3;

        if (_isArray3) {
          if (_i5 >= _iterator3.length) break;
          _ref3 = _iterator3[_i5++];
        } else {
          _i5 = _iterator3.next();
          if (_i5.done) break;
          _ref3 = _i5.value;
        }

        var vi = _ref3;

        v.x += 0.25 * vi.x;
        v.y += 0.25 * vi.y;
        v.z += 0.25 * vi.z;
      }
      this.three.localToWorld(v);
      return v;
    };

    SheetBlock.prototype.getInterpolationPoints = function getInterpolationPoints(inds, mod) {
      var ps = { x: [], y: [] },
          K = this.getProps().wave;
      for (var _iterator4 = inds, _isArray4 = Array.isArray(_iterator4), _i6 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {
        var _ref4;

        if (_isArray4) {
          if (_i6 >= _iterator4.length) break;
          _ref4 = _iterator4[_i6++];
        } else {
          _i6 = _iterator4.next();
          if (_i6.done) break;
          _ref4 = _i6.value;
        }

        var i = _ref4;

        ps.x.push([].concat(this.interpolationPoints.x[i]));
        ps.y.push(~mod.indexOf(i) ? this.interpolationPoints.y[i].map(function (n) {
          return K * n;
        }) : [].concat(this.interpolationPoints.y[i]));
      }
      return ps;
    };

    SheetBlock.prototype.set = function set(angle) {
      var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;
      var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.corner.height;
      var first = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : this.p.first;
      var last = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.p.last;

      var PI = Math.PI;
      this.state = state;
      var closedAngle = void 0,
          binderTurn = void 0;
      if ((typeof angle === 'undefined' ? 'undefined' : _typeof(angle)) === 'object') {
        this.angle = angle.openedAngle;
        closedAngle = angle.closedAngle;
        binderTurn = angle.binderTurn > PI / 2 ? PI - angle.binderTurn : angle.binderTurn;
      } else {
        this.angle = angle;
      }
      this.corner.height = height;
      if (this.p.first !== first || this.p.last !== last) {
        this.sideTexture.repeat.set(0, last - first);
        this.sideTexture.needsUpdate = true;
        if (this.p.first !== first) {
          this.p.setTexture(this.materials[0], 2 * first);
        }
        if (this.p.last !== last) {
          this.p.setTexture(this.materials[1], 2 * last - 1);
        }
      }
      this.p.first = first;
      this.p.last = last;
      var points = void 0;
      var props = this.getProps();
      if (this.state === 'closed') {
        points = this.getInterpolationPoints(this.closedInterpolationIndeces, this.closedInterpolationIndeces);
      } else if (this.state === 'opened') {
        if (closedAngle !== undefined && Math.abs(closedAngle - PI / 2) > 1e-2) {
          points = this.getInterpolationPoints(this.flatInterpolationIndeces, []);
          var ps = this.getPointsAtAngle(this.getInterpolationPoints(this.closedInterpolationIndeces, this.closedInterpolationIndeces), closedAngle > PI / 2 ? PI - closedAngle : closedAngle);
          points.x = [ps.x].concat(points.x);
          points.y = [ps.y].concat(points.y);
          // console.log(ps);
        } else {
          points = this.getInterpolationPoints(this.openedInterpolationIndeces, this.closedInterpolationIndeces);
        }
      }
      var hl = void 0,
          hr = void 0,
          offset = 0.5 * props.sheets * props.depth;
      if (this.state === 'closed') {
        offset -= 7e-6 * this.p.scale;
      }
      if (this.angle <= PI / 2) {
        hl = (props.sheets - first) * props.depth;
        hr = (props.sheets - last) * props.depth;
      } else {
        hl = first * props.depth;
        hr = last * props.depth;
      }

      var inAngle = this.angle > PI / 2 ? PI - this.angle : this.angle,
          hAngle = this.state === 'closed' ? inAngle : binderTurn === undefined ? PI / 2 : binderTurn;

      var _getPointsAtAngleAndH = this.getPointsAtAngleAndHs(points, inAngle, hAngle, [hl / props.width, hr / props.width]),
          left = _getPointsAtAngleAndH[0],
          right = _getPointsAtAngleAndH[1];

      if (this.angle > PI / 2) {
        this.inverse(left);
        this.inverse(right);
        offset = -offset;
      }
      this.setPoints(left, right, offset);
    };

    SheetBlock.prototype.setPoints = function setPoints(left, right, offset) {
      var _this2 = this;

      var p = this.getProps();
      var i = 0;

      var ys = [right, left];
      for (var y = 0; y < _sheetBlock2.default.resY; ++y) {
        for (var z = 0; z < _sheetBlock2.default.resZ; ++z) {
          for (var x = 0; x < _sheetBlock2.default.resX; ++x) {
            this.geometry.vertices[i++].set(ys[y].x[x] * p.width + offset, ys[y].y[x] * p.width, z * p.height / (_sheetBlock2.default.resZ - 1) - 0.5 * p.height);
          }
        }
      }
      if (i !== this.geometry.vertices.length) {
        console.warn('setPoints: bad mapping!');
      }

      if (this.corner.use && !this.corner.points.length) {
        var plane = new _libs.THREE.Plane(),
            normal = plane.normal,
            planeOffset = (1 - this.getProps().flexibleCorner) * Math.min(p.width, p.height),
            proj = new _libs.THREE.Vector3();
        plane.setFromNormalAndCoplanarPoint(new _libs.THREE.Vector3(-1, 0, -1).normalize(), new _libs.THREE.Vector3(planeOffset + offset, 0, 0.5 * p.height));
        for (var _i7 = 0, l = this.geometry.vertices.length; _i7 < l; ++_i7) {
          plane.projectPoint(this.geometry.vertices[_i7], proj);
          proj.sub(this.geometry.vertices[_i7]);
          if (proj.x * normal.x + proj.y * normal.y + proj.z * normal.z > 0) {
            var d = proj.length() / planeOffset;
            this.corner.maxDistance = Math.max(this.corner.maxDistance, d);
            this.corner.points.push({ vertex: _i7, distance: d });
          }
        }
      }

      if (this.corner.use && Math.abs(this.corner.height) > 1e-3) {
        var d2Angle = function d2Angle(d) {
          return p.cornerDeviation * _this2.corner.height / (1 + Math.exp(-p.bending * (d - 0.5 * _this2.corner.maxDistance)));
        };
        this.corner.axis.set(-1, 0, 1).normalize();
        this.corner.axis.applyAxisAngle(this.corner.OZ, this.angle);
        for (var _iterator5 = this.corner.points, _isArray5 = Array.isArray(_iterator5), _i8 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {
          var _ref5;

          if (_isArray5) {
            if (_i8 >= _iterator5.length) break;
            _ref5 = _iterator5[_i8++];
          } else {
            _i8 = _iterator5.next();
            if (_i8.done) break;
            _ref5 = _i8.value;
          }

          var point = _ref5;

          this.geometry.vertices[point.vertex].applyAxisAngle(this.corner.axis, d2Angle(point.distance));
        }
      }

      for (var _iterator6 = this.markers, _isArray6 = Array.isArray(_iterator6), _i9 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {
        var _ref6;

        if (_isArray6) {
          if (_i9 >= _iterator6.length) break;
          _ref6 = _iterator6[_i9++];
        } else {
          _i9 = _iterator6.next();
          if (_i9.done) break;
          _ref6 = _i9.value;
        }

        var m = _ref6;

        m.marker.position.copy(this.geometry.vertices[m.vertex]);
      }

      this.geometry.computeVertexNormals();
      //this.geometry.computeFaceNormals();
      this.geometry.computeBoundingSphere();
      //this.geometry.computeBoundingBox();
      this.geometry.verticesNeedUpdate = true;

      if (this.markup) {
        this.markup.computeVertices();
      }
    };

    SheetBlock.prototype.inverse = function inverse(ps) {
      for (var i = 0; i < ps.x.length; ++i) {
        ps.x[i] = -ps.x[i];
      }
      return ps;
    };

    SheetBlock.prototype.getPointsAtHs = function getPointsAtHs(ps, angle, hs) {
      var _this3 = this;

      var N = 1000;
      _MathUtils2.default.setSplinePoints(this.pSpline, ps);
      var bl = _MathUtils2.default.splitSpline(this.pSpline, N),
          r = [];
      {
        var p1 = _extends({}, this.pSpline.getPoint((N - 1) / N)),
            p2 = _extends({}, this.pSpline.getPoint(1)),
            dp = { x: p2.x - p1.x, y: p2.y - p1.y },
            ln = Math.sqrt(dp.x * dp.x + dp.y * dp.y),
            sp = this.pSpline.points[this.pSpline.points.length - 1];
        sp.set(sp.x + 0.1 * dp.x / ln, sp.y + 0.1 * dp.y / ln, 0);
        bl = _MathUtils2.default.splitSpline(this.pSpline, N);
      }
      bl.ls.push(1e7);
      _MathUtils2.default.mapl2L(bl.ls, bl.len, _sheetBlock2.default.resX, function (i) {
        for (var j = 0; j < hs.length; ++j) {
          if (!i) {
            r[j] = { x: [-hs[j] * Math.sin(angle)], y: [hs[j] * Math.cos(angle)] };
          } else {
            var p0 = _extends({}, _this3.pSpline.getPoint((i - 1) / N)),
                _p = _this3.pSpline.getPoint(i / N),
                x = -(_p.y - p0.y),
                y = _p.x - p0.x,
                l = Math.sqrt(x * x + y * y);
            r[j].x.push(_p.x + x / l * hs[j]);
            r[j].y.push(_p.y + y / l * hs[j]);
          }
        }
      });

      var nps = [];

      var _loop = function _loop(j) {
        nps[j] = { x: [], y: [] };
        _MathUtils2.default.setSplinePoints(_this3.iSpline, r[j]);
        var l = _MathUtils2.default.splitSpline(_this3.iSpline, N);
        l.ls.push(1e7);
        _MathUtils2.default.mapl2L(l.ls, 1, _sheetBlock2.default.resX, function (i) {
          var p = _this3.iSpline.getPoint(i / N);
          nps[j].x.push(p.x);
          nps[j].y.push(p.y);
        });
      };

      for (var j = 0; j < hs.length; ++j) {
        _loop(j);
      }
      return nps;
    };

    SheetBlock.prototype.getPointsAtAngleAndHs = function getPointsAtAngleAndHs(points, angle, hAngle, hs) {
      var ps = this.getPointsAtAngle(points, angle);
      return this.getPointsAtHs(ps, hAngle, hs);
    };

    SheetBlock.prototype.getPointsAtAngle = function getPointsAtAngle(points, angle) {
      var ps = { x: [], y: [] },
          angles = [];
      angle /= Math.PI / 2;
      for (var j = 0; j < points.x.length; ++j) {
        angles.push(j / (points.x.length - 1));
      }
      for (var i = 0; i < points.x[0].length; ++i) {
        var xps = [],
            yps = [];
        for (var _j = 0; _j < points.x.length; ++_j) {
          xps.push(points.x[_j][i]);
          yps.push(points.y[_j][i]);
        }
        ps.x.push(this.interpolate(angles, xps, angle));
        ps.y.push(this.interpolate(angles, yps, angle));
      }
      return ps;
    };

    SheetBlock.prototype.interpolate = function interpolate(x, y, xi) {
      if (!this.aSplines[x.length]) {
        this.aSplines[x.length] = new _libs.THREE.Spline([]);
        var ps = this.aSplines[x.length].points;
        for (var i = 0; i < x.length; ++i) {
          ps.push(new _libs.THREE.Vector3());
        }
      }
      var spline = this.aSplines[x.length];
      for (var _i10 = 0; _i10 < x.length; ++_i10) {
        spline.points[_i10].set(x[_i10], y[_i10], 0);
      }
      return spline.getPoint(Math.min(1, Math.max(xi, 0))).y;
    };

    SheetBlock.prototype.loadPoints = function loadPoints() {
      var x = [],
          y = [];
      var _arr = [0, 0.2877, 0.6347, 0.8174, 1.0000];
      for (var _i11 = 0; _i11 < _arr.length; _i11++) {
        var r = _arr[_i11];
        x.push(r * Math.cos(0.9 * Math.PI / 4));
        y.push(r * Math.sin(0.9 * Math.PI / 4));
      }

      var openedInterpolationIndeces = [[2, 3, 4], [2, 3, 4, 5, 6]],
          closedInterpolationIndeces = [[0, 1, 2], [0, 1, 2]],
          flatInterpolationIndeces = [[5, 4], [7, 6]],
          interpolationPoints = [{
        x: [[0, 0.2877, 0.6347, 0.8174, 1.0000], [0.000, 0.286, 0.632, 0.815, 0.997], [0.000, 0.279, 0.623, 0.806, 0.988], [0.000, 0.126, 0.411, 0.593, 0.774], [0, 0, 0, 0, 0], x],
        y: [[0, 0, 0, 0, 0], [0.000, 0.030, 0.010, 0.002, 0.000], [0.000, 0.060, 0.017, 0.004, 0.000], [0.000, 0.259, 0.440, 0.446, 0.429], [0, 0.2877, 0.6347, 0.8174, 1.0000], y]
      }, {
        x: [[0, 0.2877, 0.6347, 0.8174, 1.0000], [0.000, 0.286, 0.632, 0.815, 0.997], [0.000, 0.279, 0.623, 0.806, 0.988], [0.000, 0.233, 0.563, 0.746, 0.927], [0.000, 0.144, 0.433, 0.613, 0.796], [0.000, 0.070, 0.288, 0.455, 0.626], [0, 0, 0, 0, 0], x],
        y: [[0, 0, 0, 0, 0], [0.000, 0.030, 0.010, 0.002, 0.000], [0.000, 0.060, 0.017, 0.004, 0.000], [0.000, 0.168, 0.269, 0.270, 0.255], [0.000, 0.245, 0.435, 0.458, 0.460], [0.000, 0.278, 0.544, 0.614, 0.673], [0, 0.2877, 0.6347, 0.8174, 1.0000], y]
      }];

      return {
        interpolationPoints: interpolationPoints,
        openedInterpolationIndeces: openedInterpolationIndeces,
        closedInterpolationIndeces: closedInterpolationIndeces,
        flatInterpolationIndeces: flatInterpolationIndeces
      };
    };

    return SheetBlock;
  }();

  exports.default = SheetBlock;

  /***/
},
/* 11 */
/***/function (module, exports) {

  "use strict";
  'use strict';

  exports.__esModule = true;
  exports.props = props;
  function props() {
    // const props = {
    //   height,
    //   width,
    //   gravity,
    //   injector,
    //   cachedPages,
    //   renderInactivePages,
    //   renderWhileFlipping,
    //   pagesForPredicting,
    //   preloadPages,
    //   sheet: {
    //     startVelocity,
    //     cornerDeviation,
    //     flexibility,
    //     flexibleCorner,
    //     bending,
    //     wave,
    //     shape,
    //     widthTexels,
    //     heightTexels,
    //     color,
    //     sideTexture
    //   },
    //   cover: {
    //     ...sheet,
    //     padding,
    //     binderTexture,
    //     depth,
    //     mass
    //   },
    //   page: {
    //     ...sheet,
    //     depth,
    //     mass
    //   }
    // };

    return {
      height: 0.297,
      width: 0.21,
      gravity: 1,
      cachedPages: 50,
      renderInactivePages: true,
      renderInactivePagesOnMobile: false,
      renderWhileFlipping: false,
      pagesForPredicting: 5,
      preloadPages: 5,
      rtl: false,
      sheet: {
        startVelocity: 0.9,
        cornerDeviation: 0.25,
        flexibility: 10,
        flexibleCorner: 0.5,
        bending: 11,
        wave: 0.5,
        shape: 0,
        widthTexels: 5 * 210,
        heightTexels: 5 * 297,
        color: 0xFFFFFF
      },
      cover: {
        binderTexture: '',
        depth: 0.0003,
        padding: 0,
        mass: 0.003
      },
      page: {
        depth: 0.0001,
        mass: 0.001
      },
      cssLayerProps: {
        width: 1024
      }
    };
  };

  /***/
},
/* 12 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;
  exports.CSS3DSprite = exports.CSS3DObject = undefined;

  var _libs = __webpack_require__(0);

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _possibleConstructorReturn(self, call) {
    if (!self) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }return call && ((typeof call === 'undefined' ? 'undefined' : _typeof2(call)) === "object" || typeof call === "function") ? call : self;
  }

  function _inherits(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === 'undefined' ? 'undefined' : _typeof2(superClass)));
    }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
  }

  _libs.THREE.CSS3DObject = function (_THREE$Object3D) {
    _inherits(CSS3DObject, _THREE$Object3D);

    function CSS3DObject() {
      var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;

      _classCallCheck(this, CSS3DObject);

      var _this = _possibleConstructorReturn(this, _THREE$Object3D.call(this));

      if (element) {
        _this.set(element);
      }
      return _this;
    }

    CSS3DObject.prototype.set = function set(element) {
      this.element = element;
      this.element.style.position = 'absolute';

      this.addEventListener('removed', function () {
        if (this.element.parentNode !== null) {
          this.element.parentNode.removeChild(this.element);
        }
      });
    };

    return CSS3DObject;
  }(_libs.THREE.Object3D);

  _libs.THREE.CSS3DSprite = function (_THREE$CSS3DObject) {
    _inherits(CSS3DSprite, _THREE$CSS3DObject);

    function CSS3DSprite(element) {
      _classCallCheck(this, CSS3DSprite);

      return _possibleConstructorReturn(this, _THREE$CSS3DObject.call(this, element));
    }

    return CSS3DSprite;
  }(_libs.THREE.CSS3DObject);

  _libs.THREE.CSS3DRenderer = function CSS3DRenderer() {
    _classCallCheck(this, CSS3DRenderer);

    var _width, _height;
    var _widthHalf, _heightHalf;

    var matrix = new _libs.THREE.Matrix4();

    var cache = {
      camera: { fov: 0, style: '' },
      objects: {}
    };

    var domElement = document.createElement('div');
    domElement.style.overflow = 'hidden';

    this.domElement = domElement;

    var cameraElement = document.createElement('div');

    cameraElement.style.WebkitTransformStyle = 'preserve-3d';
    cameraElement.style.MozTransformStyle = 'preserve-3d';
    cameraElement.style.transformStyle = 'preserve-3d';

    domElement.appendChild(cameraElement);

    var isIE = /Trident/i.test(navigator.userAgent);

    this.setClearColor = function () {};

    this.getSize = function () {

      return {
        width: _width,
        height: _height
      };
    };

    this.setSize = function (width, height) {

      _width = width;
      _height = height;
      _widthHalf = _width / 2;
      _heightHalf = _height / 2;

      domElement.style.width = width + 'px';
      domElement.style.height = height + 'px';

      cameraElement.style.width = width + 'px';
      cameraElement.style.height = height + 'px';
    };

    function epsilon(value) {

      return Math.abs(value) < 1e-10 ? 0 : value;
    }

    function getCameraCSSMatrix(matrix) {

      var elements = matrix.elements;

      return 'matrix3d(' + epsilon(elements[0]) + ',' + epsilon(-elements[1]) + ',' + epsilon(elements[2]) + ',' + epsilon(elements[3]) + ',' + epsilon(elements[4]) + ',' + epsilon(-elements[5]) + ',' + epsilon(elements[6]) + ',' + epsilon(elements[7]) + ',' + epsilon(elements[8]) + ',' + epsilon(-elements[9]) + ',' + epsilon(elements[10]) + ',' + epsilon(elements[11]) + ',' + epsilon(elements[12]) + ',' + epsilon(-elements[13]) + ',' + epsilon(elements[14]) + ',' + epsilon(elements[15]) + ')';
    }

    function getObjectCSSMatrix(matrix, cameraCSSMatrix) {

      var elements = matrix.elements;
      var matrix3d = 'matrix3d(' + epsilon(elements[0]) + ',' + epsilon(elements[1]) + ',' + epsilon(elements[2]) + ',' + epsilon(elements[3]) + ',' + epsilon(-elements[4]) + ',' + epsilon(-elements[5]) + ',' + epsilon(-elements[6]) + ',' + epsilon(-elements[7]) + ',' + epsilon(elements[8]) + ',' + epsilon(elements[9]) + ',' + epsilon(elements[10]) + ',' + epsilon(elements[11]) + ',' + epsilon(elements[12]) + ',' + epsilon(elements[13]) + ',' + epsilon(elements[14]) + ',' + epsilon(elements[15]) + ')';

      if (isIE) {

        return 'translate(-50%,-50%)' + 'translate(' + _widthHalf + 'px,' + _heightHalf + 'px)' + cameraCSSMatrix + matrix3d;
      }

      return 'translate(-50%,-50%)' + matrix3d;
    }

    function renderObject(object, camera, cameraCSSMatrix) {

      if (object instanceof _libs.THREE.CSS3DObject) {

        var style;

        if (object instanceof _libs.THREE.CSS3DSprite) {
          matrix.copy(camera.matrixWorldInverse);
          matrix.transpose();
          matrix.copyPosition(object.matrixWorld);
          matrix.scale(object.scale);

          matrix.elements[3] = 0;
          matrix.elements[7] = 0;
          matrix.elements[11] = 0;
          matrix.elements[15] = 1;

          style = getObjectCSSMatrix(matrix, cameraCSSMatrix);
        } else {

          style = getObjectCSSMatrix(object.matrixWorld, cameraCSSMatrix);
        }

        var element = object.element;
        var cachedStyle = cache.objects[object.id] && cache.objects[object.id].style;

        if (cachedStyle === undefined || cachedStyle !== style) {
          element.style.WebkitTransform = style;
          element.style.MozTransform = style;
          element.style.transform = style;

          cache.objects[object.id] = { style: style };
          if (isIE) {
            cache.objects[object.id].distanceToCameraSquared = getDistanceToSquared(camera, object);
          }
        }

        if (element.parentNode !== cameraElement) {
          cameraElement.appendChild(element);
        }
      }

      for (var i = 0, l = object.children.length; i < l; i++) {

        renderObject(object.children[i], camera, cameraCSSMatrix);
      }
    }

    var getDistanceToSquared = function () {

      var a = new _libs.THREE.Vector3();
      var b = new _libs.THREE.Vector3();

      return function (object1, object2) {

        a.setFromMatrixPosition(object1.matrixWorld);
        b.setFromMatrixPosition(object2.matrixWorld);

        return a.distanceToSquared(b);
      };
    }();

    function zOrder(scene) {

      var order = Object.keys(cache.objects).sort(function (a, b) {

        return cache.objects[a].distanceToCameraSquared - cache.objects[b].distanceToCameraSquared;
      });
      var zMax = order.length;

      scene.traverse(function (object) {

        var index = order.indexOf(object.id + '');

        if (index !== -1) {

          object.element.style.zIndex = zMax - index;
        }
      });
    }

    this.render = function (scene, camera) {

      var fov = camera.projectionMatrix.elements[5] * _heightHalf;

      if (cache.camera.fov !== fov) {

        domElement.style.WebkitPerspective = fov + 'px';
        domElement.style.MozPerspective = fov + 'px';
        domElement.style.perspective = fov + 'px';

        cache.camera.fov = fov;
      }

      scene.updateMatrixWorld();

      if (camera.parent === null) camera.updateMatrixWorld();

      var cameraCSSMatrix = 'translateZ(' + fov + 'px)' + getCameraCSSMatrix(camera.matrixWorldInverse);

      var style = cameraCSSMatrix + 'translate(' + _widthHalf + 'px,' + _heightHalf + 'px)';

      if (cache.camera.style !== style && !isIE) {

        cameraElement.style.WebkitTransform = style;
        cameraElement.style.MozTransform = style;
        cameraElement.style.transform = style;

        cache.camera.style = style;
      }

      renderObject(scene, camera, cameraCSSMatrix);

      if (isIE) {

        // IE10 and 11 does not support 'preserve-3d'.
        // Thus, z-order in 3D will not work.
        // We have to calc z-order manually and set CSS z-index for IE.
        // FYI: z-index can't handle object intersection
        zOrder(scene);
      }
    };
  };

  exports.default = _libs.THREE.CSS3DRenderer;

  var _CSS3DObject = _libs.THREE.CSS3DObject,
      _CSS3DSprite = _libs.THREE.CSS3DSprite;
  exports.CSS3DObject = _CSS3DObject;
  exports.CSS3DSprite = _CSS3DSprite;

  /***/
},
/* 13 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  var _libs = __webpack_require__(0);

  var _CSS3DRenderer = __webpack_require__(12);

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _possibleConstructorReturn(self, call) {
    if (!self) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }return call && ((typeof call === 'undefined' ? 'undefined' : _typeof2(call)) === "object" || typeof call === "function") ? call : self;
  }

  function _inherits(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === 'undefined' ? 'undefined' : _typeof2(superClass)));
    }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
  }

  var CSSLayer = function (_CSS3DObject) {
    _inherits(CSSLayer, _CSS3DObject);

    CSSLayer.init = function init(doc) {
      var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 150;

      CSSLayer.delay = delay;
      CSSLayer.style = (0, _libs.$)('<style type=text/css>\n      .css-layer {\n    \t\topacity: 1;\n    \t\ttransition: opacity ' + delay + 'ms ease-out;\n        visibility: visible;\n        overflow: hidden;\n    \t}\n    \t.css-layer.hidden {\n    \t\ttransition: opacity ' + delay + 'ms ease-in, visibility ' + delay + 'ms step-end;\n    \t\topacity: 0;\n        visibility: hidden;\n      }\n    </style>').appendTo(doc.head);
    };

    CSSLayer.dispose = function dispose() {
      CSSLayer.style.remove();
    };

    function CSSLayer(width, height, props) {
      _classCallCheck(this, CSSLayer);

      var _this = _possibleConstructorReturn(this, _CSS3DObject.call(this));

      _this.props = props;
      _this.jContainer = (0, _libs.$)('<div class="hidden css-layer"></div>');
      var widthPxs = props.width,
          heightPxs = height / width * widthPxs;
      _this.jContainer.width(widthPxs).height(heightPxs);
      _this.scale.x /= widthPxs / width;
      _this.scale.y /= widthPxs / width;

      _this.setData();
      _this.set(_this.jContainer[0]);
      return _this;
    }

    CSSLayer.prototype.callInternal = function callInternal(name) {
      if (this.object && this.object[name]) {
        try {
          this.object[name]();
        } catch (e) {
          console.error(e);
        }
      }
    };

    CSSLayer.prototype.dispose = function dispose() {
      this.clearInternals();
    };

    CSSLayer.prototype.clearInternals = function clearInternals() {
      this.callInternal('dispose');
      !this.css || this.css.remove();
      !this.html || this.html.remove();
    };

    CSSLayer.prototype.setData = function setData() {
      var css = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
      var html = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
      var js = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';

      this.clearInternals();

      this.css = (0, _libs.$)('<style type="text/css">' + css + '</style>').appendTo(this.jContainer);
      this.html = (0, _libs.$)(html).appendTo(this.jContainer);
      var init = eval(js);
      if (init) {
        this.object = init(this.jContainer, this.props) || {};
      }
    };

    CSSLayer.prototype.pendedCall = function pendedCall(clb) {
      var _this2 = this;

      var timestamp = this.timestamp = Date.now();
      setTimeout(function () {
        if (timestamp === _this2.timestamp) {
          clb();
        }
      }, CSSLayer.delay);
    };

    CSSLayer.prototype.isHidden = function isHidden() {
      return this.jContainer.hasClass('hidden');
    };

    CSSLayer.prototype.hide = function hide() {
      var _this3 = this;

      var res = void 0;
      if (!this.isHidden()) {
        this.jContainer.addClass('hidden');
        this.callInternal('hide');
        res = new Promise(function (resolve) {
          _this3.pendedCall(function () {
            _this3.callInternal('hidden');
            resolve();
          });
        });
      } else {
        res = Promise.resolve();
      }
      return res;
    };

    CSSLayer.prototype.show = function show() {
      var _this4 = this;

      var res = void 0;
      if (this.isHidden()) {
        this.jContainer.removeClass('hidden');
        this.callInternal('show');
        res = new Promise(function (resolve) {
          _this4.pendedCall(function () {
            _this4.callInternal('shown');
            resolve();
          });
        });
      } else {
        res = Promise.resolve();
      }
      return res;
    };

    return CSSLayer;
  }(_CSS3DRenderer.CSS3DObject);

  exports.default = CSSLayer;

  /***/
},
/* 14 */
/***/function (module, exports) {

  "use strict";
  "use strict";

  exports.__esModule = true;

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  var Cache = function () {
    function Cache() {
      var maxSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Infinity;
      var sizeof = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Cache.countSizeof;

      _classCallCheck(this, Cache);

      this.os = new Map();
      this.sizeof = sizeof;
      this.maxSize = maxSize;
      this.size = 0;
    }

    Cache.prototype.forEach = function forEach(clb) {
      this.os.forEach(function (v, k) {
        return clb([k, v]);
      });
    };

    Cache.countSizeof = function countSizeof(value) {
      return 1;
    };

    Cache.prototype.remove = function remove(k) {
      var res = false;
      var v = this.os.get(k);
      if (!v.locked || !v.locked(k)) {
        this.size -= this.sizeof(v);
        if (v.dispose) {
          v.dispose();
        }
        this.os.delete(k);
        res = true;
      }
      return res;
    };

    Cache.prototype.freeSpace = function freeSpace() {
      var arr = [];
      for (var _iterator = this.os, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
        var _ref;

        if (_isArray) {
          if (_i >= _iterator.length) break;
          _ref = _iterator[_i++];
        } else {
          _i = _iterator.next();
          if (_i.done) break;
          _ref = _i.value;
        }

        var p = _ref;

        arr.push({ timestamp: p[1].timestamp, key: p[0] });
      }
      arr.sort(function (a, b) {
        return a.timestamp - b.timestamp;
      });
      for (var i = 0; i < arr.length && this.size > 3 * this.maxSize / 4; ++i) {
        this.remove(arr[i].key);
      }
    };

    Cache.prototype.dispose = function dispose() {
      var arr = [];
      for (var _iterator2 = this.os, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
        var _ref2;

        if (_isArray2) {
          if (_i2 >= _iterator2.length) break;
          _ref2 = _iterator2[_i2++];
        } else {
          _i2 = _iterator2.next();
          if (_i2.done) break;
          _ref2 = _i2.value;
        }

        var p = _ref2;

        arr.push({ v: p[1], k: p[0] });
      }
      for (var _iterator3 = arr, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
        var _ref3;

        if (_isArray3) {
          if (_i3 >= _iterator3.length) break;
          _ref3 = _iterator3[_i3++];
        } else {
          _i3 = _iterator3.next();
          if (_i3.done) break;
          _ref3 = _i3.value;
        }

        var o = _ref3;

        if (o.v.dispose) {
          o.v.dispose();
        }
        this.os.delete(o.k);
      }
    };

    Cache.recursionSizeof = function recursionSizeof(value) {
      var size = 0;
      if (value) {
        ++size;
        var len = value.length;
        if (len === undefined) {
          for (var p in value) {
            if (value.hasOwnProperty(p)) {
              size += Cache.recursionSizeof(value[p]);
            }
          }
        } else {
          size += len;
        }
      }
      return size;
    };

    Cache.prototype.getTimestamp = function getTimestamp() {
      return Date.now();
    };

    Cache.prototype.get = function get(key) {
      var value = this.os.get(key);
      if (value) {
        value.timestamp = this.getTimestamp();
      }
      return value;
    };

    Cache.prototype.put = function put(key, value) {
      value.timestamp = this.getTimestamp();
      this.os.set(key, value);
      this.size += this.sizeof(value);
      if (this.size > this.maxSize) {
        this.freeSpace();
      }
      return value;
    };

    return Cache;
  }();

  exports.default = Cache;

  /***/
},
/* 15 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  var _libs = __webpack_require__(0);

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _possibleConstructorReturn(self, call) {
    if (!self) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }return call && ((typeof call === 'undefined' ? 'undefined' : _typeof2(call)) === "object" || typeof call === "function") ? call : self;
  }

  function _inherits(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === 'undefined' ? 'undefined' : _typeof2(superClass)));
    }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
  }

  var Controller = function (_THREE$EventDispatche) {
    _inherits(Controller, _THREE$EventDispatche);

    function Controller() {
      _classCallCheck(this, Controller);

      return _possibleConstructorReturn(this, _THREE$EventDispatche.apply(this, arguments));
    }

    Controller.prototype.handleDefault = function handleDefault(id, e, data) {
      //console.log(id+'-'+e.type+'-'+data);
    };

    Controller.prototype.dispatchAsync = function dispatchAsync(e) {
      var _this2 = this;

      Promise.resolve().then(function () {
        return _this2.dispatchEvent(e);
      });
    };

    Controller.prototype.dispose = function dispose() {};

    return Controller;
  }(_libs.THREE.EventDispatcher);

  exports.default = Controller;

  /***/
},
/* 16 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  var _EventConverter2 = __webpack_require__(6);

  var _EventConverter3 = _interopRequireDefault(_EventConverter2);

  function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : { default: obj };
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _possibleConstructorReturn(self, call) {
    if (!self) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }return call && ((typeof call === 'undefined' ? 'undefined' : _typeof2(call)) === "object" || typeof call === "function") ? call : self;
  }

  function _inherits(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === 'undefined' ? 'undefined' : _typeof2(superClass)));
    }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
  }

  var CustomEventConverter = function (_EventConverter) {
    _inherits(CustomEventConverter, _EventConverter);

    // custom
    // testIntersection(e, data);
    // custom.object
    // test(object);

    function CustomEventConverter(wnd, doc) {
      var customTest = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {
        return false;
      };
      var eDoc = arguments[3];

      _classCallCheck(this, CustomEventConverter);

      var _this = _possibleConstructorReturn(this, _EventConverter.call(this, wnd, doc));

      _this.eDoc = eDoc;
      _this.customTest = customTest;
      _this.customs = [];
      return _this;
    }

    CustomEventConverter.prototype.test = function test(object1, object2) {
      return object1 && object2 ? this.customTest(object1, object2) : false;
    };

    CustomEventConverter.prototype.getCallback = function getCallback(object) {
      return object.target.callback;
    };

    CustomEventConverter.prototype.addCustom = function addCustom(custom) {
      this.customs.push(custom);
    };

    CustomEventConverter.prototype.getObject = function getObject(e, data) {
      var object = void 0;
      if (data.doc === this.eDoc) {
        for (var _iterator = this.customs, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
          var _ref;

          if (_isArray) {
            if (_i >= _iterator.length) break;
            _ref = _iterator[_i++];
          } else {
            _i = _iterator.next();
            if (_i.done) break;
            _ref = _i.value;
          }

          var custom = _ref;

          object = custom.testIntersection(e, data);
          if (object) {
            break;
          }
        }
      }
      return object;
    };

    return CustomEventConverter;
  }(_EventConverter3.default);

  exports.default = CustomEventConverter;

  /***/
},
/* 17 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  var _extends = Object.assign || function (target) {
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments[i];for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }return target;
  };

  var _Utils = __webpack_require__(4);

  var _Utils2 = _interopRequireDefault(_Utils);

  function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : { default: obj };
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  var Finder = function () {
    Finder.isDelimetr = function isDelimetr(s) {
      return s === Finder.DELIMITER;
    };

    Finder.prototype.merge = function merge() {
      var as = [],
          map = [],
          strs = this.strs;
      var p = 0;
      for (var i = 0; i < strs.length; ++i) {
        if (strs[i].length) {
          map.push({
            base: i,
            offset: p
          });
          as.push(strs[i]);
          p += strs[i].length;
          if (i < strs.length - 1 && !Finder.isDelimetr(strs[i].charAt(strs[i].length - 1)) && !Finder.isDelimetr(strs[i + 1].charAt(0))) {
            as.push(Finder.DELIMITER);
            ++p;
          }
        }
      }
      this.map = map;
      this.str = as.join('');
    };

    Finder.prototype.addHits = function addHits(p) {
      var info = this.map[_Utils2.default.lowerBound(this.map, { offset: p }, function (a, b) {
        return a.offset - b.offset;
      })];
      var chars = this.pattern.length,
          i = info.base;
      p -= info.offset;
      while (chars) {
        if (this.strs[i].length) {
          var delimeter = i < this.strs.length - 1 && !Finder.isDelimetr(this.strs[i].charAt(this.strs[i].length - 1)) && !Finder.isDelimetr(this.strs[i + 1].charAt(0)),
              length = Math.min(this.strs[i].length + (delimeter ? 1 : 0) - p, chars);
          if (p < this.strs[i].length) {
            this.hits.push({
              index: i,
              offset: p,
              length: Math.min(length, this.strs[i].length - p)
            });
          }
          chars -= length;
          ++i;
          p = 0;
        }
      }
    };

    Finder.prototype.addContext = function addContext(p) {
      var f = p,
          l = p + this.pattern.length - 1,
          dels = this.props.contextLength,
          prevDels = dels + 1;
      while (dels && prevDels - dels) {
        prevDels = dels;
        if (dels % 2) {
          for (var i = f - 2; i >= 0; --i) {
            if (Finder.isDelimetr(this.str[i]) || i === 0) {
              f = i === 0 ? 0 : i + 1;
              --dels;
              break;
            }
          }
        } else {
          for (var _i = l + 2; _i < this.str.length; ++_i) {
            if (Finder.isDelimetr(this.str[_i]) || _i === this.str.length - 1) {
              l = _i === this.str.length - 1 ? _i === this.str.length - 1 : _i - 1;
              --dels;
              break;
            }
          }
        }
      }
      this.contexts.push(this.str.substr(f, l - f + 1));
    };

    Finder.prototype.getHits = function getHits() {
      return this.hits;
    };

    Finder.prototype.getContexts = function getContexts() {
      return this.contexts;
    };

    function Finder(strs, pattern, props) {
      _classCallCheck(this, Finder);

      this.props = _extends({}, Finder.defaults, props);
      this.strs = strs;
      var data = this.merge(strs);
      this.hits = [];
      this.contexts = [];
      this.pattern = pattern.toLowerCase();
      this.lstr = this.str.toLowerCase();
      var p = 0;
      while (true) {
        p = this.lstr.indexOf(this.pattern, p);
        if (p === -1) {
          break;
        } else {
          this.addHits(p);
          this.addContext(p);
          p += this.pattern.length;
        }
      }
    }

    return Finder;
  }();

  Finder.DELIMITER = ' ';
  Finder.defaults = {
    contextLength: 7,
    hits: true,
    contexts: true
  };
  exports.default = Finder;

  /***/
},
/* 18 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  var _libs = __webpack_require__(0);

  var _Utils = __webpack_require__(4);

  var _Utils2 = _interopRequireDefault(_Utils);

  function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : { default: obj };
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  _libs.PDFJS.workerSrc = (window.PDFJS_LOCALE ? PDFJS_LOCALE : { "pdfJsWorker": "js/pdf.worker.js", "pdfJsCMapUrl": "cmaps/" }).pdfJsWorker;
  _libs.PDFJS.cMapUrl = (window.PDFJS_LOCALE ? PDFJS_LOCALE : { "pdfJsWorker": "js/pdf.worker.js", "pdfJsCMapUrl": "cmaps/" }).pdfJsCMapUrl;
  _libs.PDFJS.cMapPacked = true;

  var Pdf = function () {
    function Pdf(src, loadingProgress) {
      var _this = this;

      _classCallCheck(this, Pdf);

      this.src = _Utils2.default.normalizeUrl(src);
      this.handlerQueue = [];
      this.progresData = { loaded: -1, total: 1 };
      this.loadingProgress = loadingProgress;

      _libs.PDFJS.getDocument({
        url: this.src,
        rangeChunkSize: 512 * 1024
      }, null, null, function (data) {
        if (_this.loadingProgress) {
          var cur = Math.floor(100 * data.loaded / data.total),
              old = Math.floor(100 * _this.progresData.loaded / _this.progresData.total);
          if (cur !== old) {
            cur = isNaN(cur) ? 0 : cur;
            cur = cur > 100 ? 100 : cur;
            _this.loadingProgress(cur);
          }
        }
        _this.progresData = data;
      }).then(function (handler) {
        if (handler.numPages > 1) {
          Promise.all([handler.getPage(1), handler.getPage(2)]).then(function (pages) {
            _this.init(handler, pages);
          });
        } else {
          _this.init(handler);
        }
      });
    }

    Pdf.prototype.init = function init(handler, pages) {
      this.handler = handler;
      this.doubledPages = pages ? Math.abs(2 * Pdf.getPageSize(pages[0]).width - Pdf.getPageSize(pages[1]).width) / Pdf.getPageSize(pages[0]).width < 1e-4 : false;
      var done = Promise.resolve(handler);

      var _loop = function _loop() {
        if (_isArray) {
          if (_i >= _iterator.length) return 'break';
          _ref = _iterator[_i++];
        } else {
          _i = _iterator.next();
          if (_i.done) return 'break';
          _ref = _i.value;
        }

        var clb = _ref;

        done = done.then(function (handler) {
          clb(handler);
          return handler;
        });
      };

      for (var _iterator = this.handlerQueue.reverse(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
        var _ref;

        var _ret = _loop();

        if (_ret === 'break') break;
      }
    };

    Pdf.prototype.getPageType = function getPageType(n) {
      return !this.doubledPages || n === 0 || n === this.getPagesNum() - 1 ? 'full' : n & 1 ? 'left' : 'right';
    };

    Pdf.prototype.getPage = function getPage(n) {
      return this.handler.getPage(this.doubledPages ? Math.ceil(n / 2) + 1 : n + 1);
    };

    Pdf.prototype.dispose = function dispose() {
      this.handlerQueue.splice(0, this.handlerQueue.length);
      delete this.handler;
    };

    Pdf.prototype.setLoadingProgressClb = function setLoadingProgressClb(clb) {
      this.loadingProgress = clb;
    };

    Pdf.prototype.getPagesNum = function getPagesNum() {
      return this.handler ? this.doubledPages ? 2 * (this.handler.numPages - 1) : this.handler.numPages : undefined;
    };

    Pdf.getPageSize = function getPageSize(page) {
      return {
        width: page.view[2] - page.view[0],
        height: page.view[3] - page.view[1]
      };
    };

    //   if(pages>1) {
    //   handler.getPage(2).
    //   then((page)=> {
    //     const size1 = Pdf.getPageSize(page);
    //     this.props.doubledPages = 2*size0.width===size1.width;
    //     this.ready();
    //   }).
    //   catch(()=> this.ready());
    // }
    // else {

    Pdf.prototype.getHandler = function getHandler(clb) {
      if (this.handler) {
        clb(this.handler);
      } else {
        this.handlerQueue.push(clb);
      }
    };

    return Pdf;
  }();

  exports.default = Pdf;

  /***/
},
/* 19 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  var _libs = __webpack_require__(0);

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  var ThreeEventConverterFs = function () {
    ThreeEventConverterFs.objectsTest = function objectsTest(object1, object2) {
      return object1 && object2 ? object1.object === object2.object : false;
    };

    ThreeEventConverterFs.objectsAndFacesTest = function objectsAndFacesTest(object1, object2) {
      return object1 && object2 ? object1.object === object2.object && object1.face.materialIndex === object2.face.materialIndex : false;
    };

    function ThreeEventConverterFs(visualWorld) {
      var test = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ThreeEventConverterFs.objectsAndFacesTest;

      _classCallCheck(this, ThreeEventConverterFs);

      this.visual = visualWorld;
      this.coords = new _libs.THREE.Vector2();
      this.raycaster = this.visual.raycaster;
      this.camera = this.visual.camera;
      this.threes = [];
      this.test = test;
    }

    ThreeEventConverterFs.prototype.addThree = function addThree(three) {
      this.threes.push(three);
    };

    ThreeEventConverterFs.prototype.removeThree = function removeThree(three) {
      var i = this.threes.indexOf(three);
      if (~i) {
        this.threes.splice(i, 1);
      }
    };

    ThreeEventConverterFs.prototype.getObject = function getObject(e) {
      this.setCoordsFromEvent(e);
      this.raycaster.setFromCamera(this.coords, this.camera);
      var intersects = this.raycaster.intersectObjects(this.threes);
      return intersects[0];
    };

    return ThreeEventConverterFs;
  }();

  exports.default = ThreeEventConverterFs;

  /***/
},
/* 20 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  var _BaseMathUtils = __webpack_require__(2);

  var _BaseMathUtils2 = _interopRequireDefault(_BaseMathUtils);

  function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : { default: obj };
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  var ThreeUtils = function () {
    function ThreeUtils() {
      _classCallCheck(this, ThreeUtils);
    }

    ThreeUtils.vertices2UVs = function vertices2UVs(vertices, indeces, first, last, converClb) {
      var r = [];
      for (var i = first; i < last; ++i) {
        var vis = [indeces[i].a, indeces[i].b, indeces[i].c];
        for (var j = 0; j < vis.length; ++j) {
          if (!r[vis[j]]) {
            r[vis[j]] = converClb(vertices[vis[j]]);
          }
        }
      }
      return r;
    };

    ThreeUtils.computeFaceVertexUvs = function computeFaceVertexUvs(geometry, faces) {
      var uvs = [ThreeUtils.vertices2UVs(geometry.vertices, geometry.faces, 0, faces[0], function (p) {
        return new THREE.Vector2(p.x, 1 - p.z);
      }), ThreeUtils.vertices2UVs(geometry.vertices, geometry.faces, faces[0], faces[1], function (p) {
        return new THREE.Vector2(1 - p.x, 1 - p.z);
      }), ThreeUtils.vertices2UVs(geometry.vertices, geometry.faces, faces[1], faces[2], function (p) {
        return new THREE.Vector2(p.x, p.y);
      }), ThreeUtils.vertices2UVs(geometry.vertices, geometry.faces, faces[2], faces[3], function (p) {
        return new THREE.Vector2(1 - p.x, p.y);
      }), ThreeUtils.vertices2UVs(geometry.vertices, geometry.faces, faces[3], faces[4], function (p) {
        return new THREE.Vector2(p.z, p.y);
      }), ThreeUtils.vertices2UVs(geometry.vertices, geometry.faces, faces[4], geometry.faces.length, function (p) {
        return new THREE.Vector2(1 - p.z, p.y);
      })];

      var uvsi = 0;
      for (var i = 0; i < geometry.faces.length; ++i) {
        uvsi += faces[uvsi] === i;
        var f = geometry.faces[i];
        f.materialIndex = uvsi;
        geometry.faceVertexUvs[0][i] = [uvs[uvsi][f.a], uvs[uvsi][f.b], uvs[uvsi][f.c]];
      }
    };

    ThreeUtils.createMarker = function createMarker(p, c, size) {
      var marker = new THREE.Mesh(new THREE.SphereGeometry(size), new THREE.MeshPhongMaterial({ color: c }));
      marker.position.set(p.x, p.y, p.z);
      return marker;
    };

    ThreeUtils.findUvTris = function findUvTris(geometry, ps, first, last) {
      var res = [];
      for (var _iterator = ps, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
        var _ref;

        if (_isArray) {
          if (_i >= _iterator.length) break;
          _ref = _iterator[_i++];
        } else {
          _i = _iterator.next();
          if (_i.done) break;
          _ref = _i.value;
        }

        var p = _ref;

        var found = false;
        for (var i = first; i < last && !found; ++i) {
          var tri = geometry.faceVertexUvs[0][i];
          if (_BaseMathUtils2.default.isInsideConvPoly(tri, p)) {
            res.push({
              coefs: _BaseMathUtils2.default.computeInterpCoefs(tri, p),
              i: i
            });
            found = true;
          }
        }
        if (!found) {
          console.error('Bad point');
          res.push(undefined);
        }
      }
      return res;
    };

    ThreeUtils.findInternalVertices = function findInternalVertices(geometry, ps, first, last) {
      var res = {};
      for (var i = first; i < last; ++i) {
        var tri = geometry.faceVertexUvs[0][i],
            f = geometry.faces[i],
            vs = [f.a, f.b, f.c];
        for (var j = 0; j < tri.length; ++j) {
          if (res[vs[j]] === undefined && _BaseMathUtils2.default.isInsidePoly(ps, tri[j])) {
            res[vs[j]] = {
              p: tri[j],
              i: vs[j],
              n: f.vertexNormals[j]
            };
          }
        }
      }
      return Object.values(res);
    };

    return ThreeUtils;
  }();

  exports.default = ThreeUtils;

  /***/
},
/* 21 */
/***/function (module, exports) {

  "use strict";
  "use strict";

  exports.__esModule = true;

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  var Target = function () {
    function Target() {
      _classCallCheck(this, Target);
    }

    Target.test = function test(object1, object2) {
      return object1.target === object2.target;
    };

    return Target;
  }();

  exports.default = Target;

  /***/
},
/* 22 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  var _extends = Object.assign || function (target) {
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments[i];for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }return target;
  };

  var _libs = __webpack_require__(1);

  var _Detector = __webpack_require__(45);

  var _Detector2 = _interopRequireDefault(_Detector);

  var _VisualWorld = __webpack_require__(66);

  var _VisualWorld2 = _interopRequireDefault(_VisualWorld);

  var _PdfLinksHandler = __webpack_require__(35);

  var _PdfLinksHandler2 = _interopRequireDefault(_PdfLinksHandler);

  var _Book = __webpack_require__(26);

  var _Book2 = _interopRequireDefault(_Book);

  var _BookView = __webpack_require__(29);

  var _BookView2 = _interopRequireDefault(_BookView);

  var _BookController = __webpack_require__(27);

  var _BookController2 = _interopRequireDefault(_BookController);

  var _PdfBookPropsBuilder = __webpack_require__(34);

  var _PdfBookPropsBuilder2 = _interopRequireDefault(_PdfBookPropsBuilder);

  var _ClbBookPropsBuilder = __webpack_require__(30);

  var _ClbBookPropsBuilder2 = _interopRequireDefault(_ClbBookPropsBuilder);

  var _LoadingController = __webpack_require__(53);

  var _LoadingController2 = _interopRequireDefault(_LoadingController);

  var _Search = __webpack_require__(58);

  var _Search2 = _interopRequireDefault(_Search);

  var _Bookmarks = __webpack_require__(44);

  var _Bookmarks2 = _interopRequireDefault(_Bookmarks);

  var _Thumbnails = __webpack_require__(63);

  var _Thumbnails2 = _interopRequireDefault(_Thumbnails);

  var _TocController = __webpack_require__(40);

  var _TocController2 = _interopRequireDefault(_TocController);

  var _BookPrinter = __webpack_require__(28);

  var _BookPrinter2 = _interopRequireDefault(_BookPrinter);

  var _AutoNavigator = __webpack_require__(24);

  var _AutoNavigator2 = _interopRequireDefault(_AutoNavigator);

  var _SoundsEnviroment = __webpack_require__(39);

  var _SoundsEnviroment2 = _interopRequireDefault(_SoundsEnviroment);

  function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : { default: obj };
  }

  _libs.$.fn.FlipBook = function (options) {
    var scene = {
      dispose: function dispose() {
        if (this.ready) {
          !scene.pdfLinksHandler || scene.pdfLinksHandler.dispose();
          delete scene.pdfLinksHandler;
          scene.sounds.dispose();
          delete scene.sounds;
          scene.tocCtrl.dispose();
          delete scene.tocCtrl;
          scene.thumbnails.dispose();
          delete scene.thumbnails;
          !scene.bookmarks || scene.bookmarks.dispose();
          delete scene.bookmarks;
          scene.ctrl.dispose();
          delete scene.ctrl;
          scene.bookPrinter.dispose();
          delete scene.bookPrinter;
          scene.book.dispose();
          delete scene.book;
          scene.propsBuilder.dispose();
          delete scene.propsBuilder;
          delete scene.bookBuilder;
          scene.visual.dispose();
          delete scene.visual;
          scene.view.dispose();
          delete scene.view;
          delete scene.dispose;
        } else {
          this.pendingDispose = true;
        }
      }
    };
    options = _extends({}, options);
    scene.view = new _BookView2.default(this.length ? this[0] : (0, _libs.$)('<div>').appendTo('body'), function () {
      if (!_Detector2.default.webgl) {
        _Detector2.default.addGetWebGLMessage({ parent: scene.view.getView() });
      } else {
        scene.loadingCtrl = new _LoadingController2.default(scene.view, true, function (progress) {
          return progress === 0 ? (0, _libs.tr)('Please wait... the Application is Loading') : (0, _libs.tr)('PDF is Loading:') + ' ' + progress + '%';
        });
        scene.visual = new _VisualWorld2.default(scene.view.getContainer().ownerDocument.defaultView, scene.view.getContainer().ownerDocument, scene.view.getView());
        scene.bookBuilder = function (props, sheets, pageCallback) {
          props.cssLayerProps = _extends({}, props.cssLayerProps, {
            scene: scene
          });
          if (options.propertiesCallback) {
            props = options.propertiesCallback(props);
          }
          scene.book = new _Book2.default(scene.visual, sheets, pageCallback, props);
          scene.bookPrinter = new _BookPrinter2.default(scene.visual, scene.book, (options.template || {}).printStyle);
          scene.loadingCtrl.dispose();
          delete scene.loadingCtrl;
          scene.ctrl = new _BookController2.default(scene.book, scene.view, options.controlsProps);
          scene.book.setInjector(function (w) {
            w.jQuery = w.$ = _libs.$;
            w.book = scene.book;
            w.bookCtrl = scene.ctrl;
            if (props.injector) {
              props.injector(w);
            }
          });
          scene.view.addHandler(scene.ctrl);
          scene.ctrl.setPrinter(scene.bookPrinter);
          var test = pageCallback(0);

          scene.search = new _Search2.default(scene.view.getSearchView(), scene.book.getPages());
          scene.search.onQuery = scene.book.setQuery.bind(scene.book);
          scene.book.addEventListener('searchResults', function (e) {
            scene.search.setResults(e.results, e.lastPage);
          });

          scene.thumbnails = new _Thumbnails2.default(scene.visual, scene.view.getThumbnailsView(), pageCallback, 2 * (sheets + 2), { kWtoH: props.width / props.height });
          scene.tocCtrl = new _TocController2.default(scene.view, scene.ctrl);
          scene.tocCtrl.setThumbnails(scene.thumbnails);
          scene.tocCtrl.setSearch(scene.search);
          scene.ctrl.setTocCtrl(scene.tocCtrl);
          scene.view.addHandler(scene.tocCtrl);

          if (test.type === 'pdf') {
            scene.pdfLinksHandler = new _PdfLinksHandler2.default(test.src, scene.ctrl, scene.visual.element);
            scene.book.addEventListener('pdfAnnotation', scene.pdfLinksHandler.handleEvent.bind(scene.pdfLinksHandler));
            test.src.getHandler(function (handler) {
              handler.getOutline().then(function (outline) {
                scene.bookmarks = new _Bookmarks2.default(scene.view.getBookmarksView(), outline);
                scene.tocCtrl.setBookmarks(scene.bookmarks, test.src);
              });
            });
            if (options.pdfLinks && options.pdfLinks.handler) {
              scene.pdfLinksHandler.setHandler(options.pdfLinks.handler);
            }
          }

          scene.sounds = new _SoundsEnviroment2.default(options.template);
          scene.ctrl.setSounds(scene.sounds);
          scene.sounds.subscribeFlips(scene.ctrl);

          scene.ready = true;
          new _AutoNavigator2.default(scene.visual, scene.ctrl, options.autoNavigation).dispose();
          if (options.ready) {
            options.ready(scene);
          }
          if (scene.pendingDispose) {
            scene.dispose();
          }
        };
        if (options.pdf) {
          scene.propsBuilder = new _PdfBookPropsBuilder2.default(options.pdf, scene.bookBuilder);
          scene.propsBuilder.pdf.setLoadingProgressClb(scene.loadingCtrl.setProgress.bind(scene.loadingCtrl));
        } else if (options.pageCallback) {
          scene.propsBuilder = new _ClbBookPropsBuilder2.default(scene.visual, options.pageCallback, options.pages, scene.bookBuilder);
        } else {
          scene.propsBuilder = new _ClbBookPropsBuilder2.default(scene.visual, _Book2.default.pageCallback, 6, scene.bookBuilder);
        }
      }
    }, options.template);
    return scene;
  };

  (0, _libs.$)(function () {
    var containers = (0, _libs.$)('.flip-book-container');
    for (var i = 0; i < containers.length; ++i) {
      var jContainer = (0, _libs.$)(containers[i]),
          src = jContainer.attr('src');
      if (!!src) {
        jContainer.FlipBook({ pdf: src });
      }
    }
  });

  window.jQuery = window.$ = _libs.$;

  /***/
},
/* 23 */
/***/function (module, exports) {

  "use strict";
  'use strict';

  if (!Array.prototype.fill) {
    Array.prototype.fill = function (value) {

      // Шаги 1-2.
      if (this == null) {
        throw new TypeError('this is null or not defined');
      }

      var O = Object(this);

      // Шаги 3-5.
      var len = O.length >>> 0;

      // Шаги 6-7.
      var start = arguments[1];
      var relativeStart = start >> 0;

      // Шаг 8.
      var k = relativeStart < 0 ? Math.max(len + relativeStart, 0) : Math.min(relativeStart, len);

      // Шаги 9-10.
      var end = arguments[2];
      var relativeEnd = end === undefined ? len : end >> 0;

      // Шаг 11.
      var final = relativeEnd < 0 ? Math.max(len + relativeEnd, 0) : Math.min(relativeEnd, len);

      // Шаг 12.
      while (k < final) {
        O[k] = value;
        k++;
      }

      // Шаг 13.
      return O;
    };
  }

  if (!Array.prototype.find) {
    Object.defineProperty(Array.prototype, 'find', {
      value: function value(predicate) {
        'use strict';

        if (this == null) {
          throw new TypeError('Array.prototype.find called on null or undefined');
        }
        if (typeof predicate !== 'function') {
          throw new TypeError('predicate must be a function');
        }
        var list = Object(this);
        var length = list.length >>> 0;
        var thisArg = arguments[1];
        var value;

        for (var i = 0; i < length; i++) {
          value = list[i];
          if (predicate.call(thisArg, value, i, list)) {
            return value;
          }
        }
        return undefined;
      }
    });
  }

  if (!Array.prototype.findIndex) {
    Array.prototype.findIndex = function (predicate) {
      if (this == null) {
        throw new TypeError('Array.prototype.findIndex called on null or undefined');
      }
      if (typeof predicate !== 'function') {
        throw new TypeError('predicate must be a function');
      }
      var list = Object(this);
      var length = list.length >>> 0;
      var thisArg = arguments[1];
      var value;

      for (var i = 0; i < length; i++) {
        value = list[i];
        if (predicate.call(thisArg, value, i, list)) {
          return i;
        }
      }
      return -1;
    };
  }

  if (!Object.values) {
    Object.values = function values(O) {
      return Object.keys(O).map(function (name) {
        return O[name];
      }) || [];
    };
  }

  /***/
},
/* 24 */
/***/function (module, exports) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  var _extends = Object.assign || function (target) {
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments[i];for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }return target;
  };

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  var AutoNavigator = function () {
    function AutoNavigator(context, bookCtrl) {
      var props = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};

      _classCallCheck(this, AutoNavigator);

      props = _extends({}, props, {
        urlParam: props.urlParam || 'fb3d-page',
        navigates: props.navigates === undefined ? 1 : props.navigates
      });
      this.props = props;
      this.context = context;
      this.bookCtrl = bookCtrl;
      this.urlParam = props.urlParam;
      this.wnd = context.wnd;

      this.wnd.fb3d = _extends({}, this.wnd.fb3d);
      this.wnd.fb3d.navigator = _extends({}, this.wnd.fb3d.navigator);
      this.navigator = this.wnd.fb3d.navigator[this.urlParam] = _extends({}, this.wnd.fb3d.navigator[this.urlParam]);
      this.navigator.instances = (this.navigator.instances || 0) + 1;

      if (this.navigator.instances <= this.props.navigates) {
        this.bookCtrl.goToPage(this.getPageNumber());
      }
    }

    AutoNavigator.prototype.dispose = function dispose() {};

    AutoNavigator.prototype.getParameterByName = function getParameterByName(name, url) {
      if (!url) {
        url = window.location.href;
      }
      name = name.replace(/[\[\]]/g, '\\$&');
      var regex = new RegExp('[?&]' + name + '(=([^]*)|&|#|$)'),
          results = regex.exec(url);
      if (!results) return null;
      if (!results[2]) return '';
      return decodeURIComponent(results[2].replace(/\+/g, ' '));
    };

    AutoNavigator.prototype.getPageNumber = function getPageNumber() {
      var number = this.getParameterByName(this.urlParam);
      number = parseInt(number);
      if (isNaN(number)) {
        number = 1;
      }
      return number - 1;
    };

    return AutoNavigator;
  }();

  exports.default = AutoNavigator;

  /***/
},
/* 25 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  var _extends = Object.assign || function (target) {
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments[i];for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }return target;
  };

  var _libs = __webpack_require__(1);

  var _MathUtils = __webpack_require__(3);

  var _MathUtils2 = _interopRequireDefault(_MathUtils);

  function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : { default: obj };
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  var Binder = function () {
    function Binder(visual, p) {
      var _this = this;

      _classCallCheck(this, Binder);

      this.visual = visual;
      this.p = _extends({}, p, {
        backSize: 2 * p.cover.depth + p.sheets * p.page.depth
      });
      this.OZ = new _libs.THREE.Vector3(0, 0, 1);

      this.backG = new _libs.THREE.BoxGeometry(p.cover.depth, this.p.backSize, p.cover.height);

      this.materials = [new _libs.THREE.MeshPhongMaterial({ color: p.cover.color }), new _libs.THREE.MeshPhongMaterial({ color: p.cover.color }), new _libs.THREE.MeshPhongMaterial({ color: p.cover.color }), new _libs.THREE.MeshPhongMaterial({ color: p.cover.color }), new _libs.THREE.MeshPhongMaterial({ color: p.cover.color }), new _libs.THREE.MeshPhongMaterial({ color: p.cover.color })];

      var backM = new _libs.THREE.Mesh(this.backG, new _libs.THREE.MeshFaceMaterial(this.materials));

      if (p.cover.binderTexture !== '') {
        this.visual.textureLoader.load(p.cover.binderTexture, function (texture) {
          _this.materials[1].color.setHex(0xFFFFFF);
          _this.materials[1].map = texture;
          texture.minFilter = _libs.THREE.LinearFilter;
          texture.needsUpdate = true;
          _this.materials[1].needsUpdate = true;
        });
      }

      this.three = new _libs.THREE.Object3D();
      this.back = new _libs.THREE.Object3D();
      this.backRT = new _libs.THREE.Object3D();
      this.backRR = new _libs.THREE.Object3D();
      this.backLT = new _libs.THREE.Object3D();
      this.backLR = new _libs.THREE.Object3D();
      this.leftPivot = new _libs.THREE.Object3D();
      this.rightPivot = new _libs.THREE.Object3D();

      this.back.add(backM);
      this.back.add(this.leftPivot);
      this.back.add(this.rightPivot);
      this.backRT.add(this.back);
      this.backRR.add(this.backRT);
      this.backLT.add(this.backRR);
      this.backLR.add(this.backLT);
      this.three.add(this.backLR);
    }

    Binder.prototype.dispose = function dispose() {
      for (var _iterator = this.materials, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
        var _ref;

        if (_isArray) {
          if (_i >= _iterator.length) break;
          _ref = _iterator[_i++];
        } else {
          _i = _iterator.next();
          if (_i.done) break;
          _ref = _i.value;
        }

        var m = _ref;

        if (m.map) {
          m.map = null;
          m.needsUpdate = true;
        }
        m.dispose();
      }
      delete this.materials;
      this.backG.dispose();
    };

    Binder.prototype.set = function set(angle) {
      var right = void 0,
          left = void 0;
      if (angle > Math.PI / 2) {
        right = Math.PI / 2;
        left = angle - Math.PI / 2;
      } else {
        right = angle;
        left = 0;
      }
      var p = this.p,
          tr1 = { x: -0.5 * p.cover.depth, y: 0.5 * p.backSize - p.cover.depth };
      this.backRT.position.set(tr1.x, tr1.y, 0);
      this.backRR.position.set(-tr1.x, -tr1.y, 0);
      this.backRR.quaternion.setFromAxisAngle(this.OZ, right);

      var tr2 = { x: p.backSize - 2 * p.cover.depth - 0.5 * p.cover.depth, y: 0.5 * p.backSize - p.cover.depth };
      this.backLT.position.set(tr2.x, tr2.y, 0);
      this.backLR.position.set(-tr2.x, -tr2.y, 0);
      this.backLR.quaternion.setFromAxisAngle(this.OZ, left);
    };

    Binder.prototype.setLeft = function setLeft(angle) {
      var PI = Math.PI;
      this.leftPivot.position.set(_MathUtils2.default.interpolateLinear([-PI, -PI / 2], [0, this.p.cover.depth], angle), 0.5 * this.p.backSize - 0.5 * this.p.cover.depth, 0);
      this.leftPivot.quaternion.setFromAxisAngle(this.OZ, angle);
    };

    Binder.prototype.setRight = function setRight(angle) {
      var PI = Math.PI;
      this.rightPivot.position.set(_MathUtils2.default.interpolateLinear([-PI / 2, 0], [this.p.cover.depth, 0], angle), -0.5 * this.p.backSize + 0.5 * this.p.cover.depth, 0);
      this.rightPivot.quaternion.setFromAxisAngle(this.OZ, angle);
    };

    Binder.prototype.joinLeftCover = function joinLeftCover(cover) {
      cover.three.position.set(0, -0.5 * this.p.cover.depth, 0);
      this.leftPivot.add(cover.three);
    };

    Binder.prototype.disconnectLeftCover = function disconnectLeftCover(cover) {
      this.leftPivot.remove(cover.three);
    };

    Binder.prototype.joinRightCover = function joinRightCover(cover) {
      cover.three.position.set(0, -0.5 * this.p.cover.depth, 0);
      this.rightPivot.add(cover.three);
    };

    Binder.prototype.disconnectRightCover = function disconnectRightCover(cover) {
      this.rightPivot.remove(cover.three);
    };

    return Binder;
  }();

  exports.default = Binder;

  /***/
},
/* 26 */
/***/function (module, exports, __webpack_require__) {

  "use strict";
  'use strict';

  exports.__esModule = true;

  var _extends = Object.assign || function (target) {
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments[i];for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }return target;
  };

  var _libs = __webpack_require__(1);

  var _book = __webpack_require__(11);

  var _GraphUtils = __webpack_require__(7);

  var _GraphUtils2 = _interopRequireDefault(_GraphUtils);

  var _Binder = __webpack_require__(25);

  var _Binder2 = _interopRequireDefault(_Binder);

  var _Cover = __webpack_require__(31);

  var _Cover2 = _interopRequireDefault(_Cover);

  var _SheetBlock = __webpack_require__(10);

  var _SheetBlock2 = _interopRequireDefault(_SheetBlock);

  var _SheetPhysics = __webpack_require__(38);

  var _SheetPhysics2 = _interopRequireDefault(_SheetPhysics);

  var _PageManager = __webpack_require__(33);

  var _PageManager2 = _interopRequireDefault(_PageManager);

  var _CSSLayer = __webpack_require__(13);

  var _CSSLayer2 = _interopRequireDefault(_CSSLayer);

  var _CssLayersManager = __webpack_require__(32);

  var _CssLayersManager2 = _interopRequireDefault(_CssLayersManager);

  var _SearchEngine = __webpack_require__(36);

  var _SearchEngine2 = _interopRequireDefault(_SearchEngine);

  var _CustomEventConverter = __webpack_require__(16);

  var _CustomEventConverter2 = _interopRequireDefault(_CustomEventConverter);

  var _CircleTarget = __webpack_require__(68);

  var _CircleTarget2 = _interopRequireDefault(_CircleTarget);

  function _interopRequireDefault(obj) {
    return obj && obj.__esModule ? obj : { default: obj };
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _possibleConstructorReturn(self, call) {
    if (!self) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }return call && ((typeof call === 'undefined' ? 'undefined' : _typeof2(call)) === "object" || typeof call === "function") ? call : self;
  }

  function _inherits(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function, not " + (typeof superClass === 'undefined' ? 'undefined' : _typeof2(superClass)));
    }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
  }

  var Book = function (_THREE$EventDispatche) {
    _inherits(Book, _THREE$EventDispatche);

    // pageCallback samples

    // (n)=> ({
    //   type: 'image',
    //   src: 'sample.png',
    //   interactive: false
    // });
    //
    // (n)=> ({
    //   type: 'html',
    //   src: 'sample.html',
    //   interactive: true
    // });
    //
    // const pdf = new Pdf('sample.pdf');
    // (n)=> ({
    //   type: 'pdf',
    //   src: pdf,
    //   interactive: false
    // });

    function Book(visual, sheets, pageCallback, props) {
      _classCallCheck(this, Book);

      var _this = _possibleConstructorReturn(this, _THREE$EventDispatche.call(this));

      sheets = Math.min(3, sheets);
      visual.jContainer.append('\n      <style type="text/css">\n        .demo-msg {\n          position: absolute;\n          top: 10px;\n          right: 10px;\n          padding: 10px;\n          background-color: #ffe4e1;\n          border-radius: 3px;\n        }\n      </style>\n      <div class="demo-msg">\n        This is the demo version, only 10 pages are available. Use the <a href="http://3dflipbook.net/download-jq" target="_blank">full version</a>.\n      </div>\n    ');
      _this.visual = visual;
      _this.mouseController = true;
      _this.p = _extends({}, Book.prepareProps(props), {
        sheets: sheets,
        pageCallback: pageCallback,
        zoom: 1,
        singlePage: false,
        autoResolution: {
          enable: false,
          k: 1.5
        }
      });
      _this.pageManager = new _PageManager2.default(visual, _this, _this.p);
      _CSSLayer2.default.init(visual.doc);
      _this.layerManager = new _CssLayersManager2.default(_this);
      _this.searchEngine = new _SearchEngine2.default(pageCallback, 2 * (sheets + 2));
      _this.searchEngine.onPageHitsChanged = function (page, query) {
        _this.pageManager.refreshPageQuery(page, query);
        _this.dispatchEvent({
          type: 'searchResults',
          results: _this.searchEngine.results,
          lastPage: page,
          query: query
        });
      };

      _this.three = new _libs.THREE.Object3D();

      _this.binder = new _Binder2.default(visual, _this.p);
      _this.three.add(_this.binder.three);

      _this.leftCover = new _Cover2.default(visual, _extends({}, _this.p, { setTexture: _this.setLeftCoverTexture.bind(_this) }), Math.PI / 2, 'opened');
      _this.binder.joinLeftCover(_this.leftCover);
      _this.subscribeSheetBlock(_this.leftCover, 0);
      _this.rightCover = new _Cover2.default(visual, _extends({}, _this.p, { setTexture: _this.setRightCoverTexture.bind(_this) }), 0, 'closed');
      _this.binder.joinRightCover(_this.rightCover);
      _this.subscribeSheetBlock(_this.rightCover, 2 * (_this.p.sheets + 1));

      _this.threeSheetBlocks = new _libs.THREE.Object3D();
      _this.three.add(_this.threeSheetBlocks);
      _this.threeSheetBlocks.position.set(0.5 * _this.p.cover.depth - 0.5 * sheets * _this.p.page.depth, -0.5 * sheets * _this.p.page.depth, 0);

      _this.sheetBlocks = [];
      if (sheets > 0) {
        _this.addSheetBlock(0, new _SheetBlock2.default(visual, _extends({}, _this.p, { setTexture: _this.setPageTexture.bind(_this) }), 0, sheets, 0, 'closed'));
      }

      _this.angle = _this.p.rtl ? Math.PI : 0;
      _this.closedAngle = 0;
      _this.set(_this.angle, 0);
      _this.lastMousePos = {
        t: 0
      };

      _this.three.position.set(-0.5 * _this.p.cover.depth + 0.5 * sheets * _this.p.page.depth, 0, 0);
      _this.sheetPhysics = new _SheetPhysics2.default(_this.p.page.width / _this.p.scale, _this.p.gravity, _this.p.page.cornerDeviation);

      _this.binds = {
        update: _this.update.bind(_this),
        lastMousePos: function lastMousePos(e) {
          _this.lastMousePos = _extends({}, _this.lastMousePos, {
            pageX: e.pageX,
            pageY: e.pageY
          });
        }
      };
      _this.visual.addRenderCallback(_this.binds.update);
      (0, _libs.$)(_this.visual.element).on('mousemove', _this.binds.lastMousePos);

      _this.binds.onPickCallback = _this.onPickCallback.bind(_this);
      _this.visual.drag.onPickCallback = _this.binds.onPickCallback;
      _this.binds.onDragCallback = _this.onDragCallback.bind(_this);
      _this.visual.drag.onDragCallback = _this.binds.onDragCallback;
      _this.binds.onReleaseCallback = _this.onReleaseCallback.bind(_this);
      _this.visual.drag.onReleaseCallback = _this.binds.onReleaseCallback;

      _this.dragAngle = 0.05;
      _this.tmp = {
        boxs: [new _libs.THREE.Box3(), new _libs.THREE.Box3()]
      };

      _this.visual.addObject(_this.three);
      _this.visual.addEventListener('resize', _this.pageManager.refreshZoom.bind(_this.pageManager));

      setTimeout(function () {
        _this.notifyBeforeAnimation();
        _this.notifyAfterAnimation();
      }, 100);
      return _this;
    }

    Book.prototype.dispose = function dispose() {
      this.visual.removeObject(this.three);
      this.sheetPhysics.dispose();
      delete this.visual.drag.onPickCallback;
      delete this.visual.drag.onDragCallback;
      delete this.visual.drag.onReleaseCallback;
      (0, _libs.$)(this.visual.element).off('mousemove', this.binds.lastMousePos);
      this.visual.removeRenderCallback(this.binds.update);
      this.removeSheetBlocks(0, this.sheetBlocks.length);
      this.binder.disconnectLeftCover(this.leftCover);
      this.removeSheetBlock(this.leftCover);
      this.binder.disconnectRightCover(this.rightCover);
      this.removeSheetBlock(this.rightCover);
      this.binder.dispose();
      this.layerManager.dispose();
      _CSSLayer2.default.dispose();
      this.pageManager.dispose();
    };

    // publics {

    Book.prototype.setAutoResolution = function setAutoResolution(enable) {
      var k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1.5;

      this.p.autoResolution = _extends({}, this.p.autoResolution, {
        enable: enable,
        k: k
      });
    };

    Book.prototype.setZoom = function setZoom(zoom, singlePage) {
      if (Math.abs(this.p.zoom - zoom) > 1e-3 || singlePage !== this.p.singlePage) {
        this.p.zoom = zoom;
        this.p.singlePage = singlePage;
        this.pageManager.refreshZoom();
      }
    };

    Book.prototype.getPageCallback = function getPageCallback() {
      return this.p.pageCallback;
    };

    Book.prototype.setQuery = function setQuery(query) {
      this.searchEngine.setQuery(query);
    };

    Book.prototype.isProcessing = function isProcessing() {
      return this.sheetPhysics.getSize() !== 0;
    };

    Book.prototype.getPages = function getPages() {
      return 4 + 2 * this.p.sheets;
    };

    Book.prototype.setFlipProgressClb = function setFlipProgressClb(clb) {
      this.p.flipProgressClb = clb;
    };

    Book.prototype.setInjector = function setInjector(injector) {
      this.p.injector = injector;
    };

    Book.prototype.isActivePage = function isActivePage(n) {
      var res = true;
      if (n > 1 && n < this.getPages() - 2) {
        for (var _iterator = this.sheetBlocks, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
          var _ref;

          if (_isArray) {
            if (_i >= _iterator.length) break;
            _ref = _iterator[_i++];
          } else {
            _i = _iterator.next();
            if (_i.done) break;
            _ref = _i.value;
          }

          var b = _ref;

          if (n - 2 > 2 * b.p.first && n - 2 < 2 * b.p.last - 1) {
            res = false;
            break;
          }
        }
      }
      return res;
    };

    Book.prototype.getBlockByPage = function getBlockByPage(n) {
      var block = void 0;
      if (n < 2) {
        block = this.leftCover;
      } else if (n < 2 * (this.p.sheets + 1)) {
        for (var _iterator2 = this.sheetBlocks, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
          var _ref2;

          if (_isArray2) {
            if (_i2 >= _iterator2.length) break;
            _ref2 = _iterator2[_i2++];
          } else {
            _i2 = _iterator2.next();
            if (_i2.done) break;
            _ref2 = _i2.value;
          }

          var b = _ref2;

          if (n - 2 >= 2 * b.p.first && n - 2 < 2 * b.p.last) {
            block = b;
            break;
          }
        }
      } else {
        block = this.rightCover;
      }
      return block;
    };

    Book.prototype.getBlockPages = function getBlockPages(block) {
      var range = void 0;
      switch (block) {
        case this.leftCover:
          {
            range = [0, 1];
            break;
          }
        case this.rightCover:
          {
            range = [2 * (this.p.sheets + 1), 2 * (this.p.sheets + 1) + 1];
            break;
          }
        default:
          {
            range = block ? [2 * (block.p.first + 1), 2 * (block.p.last + 1) - 1] : undefined;
          }
      }
      return range;
    };

    Book.prototype.getPage = function getPage() {
      var PI = Math.PI;
      var p = void 0;
      if (this.angle === PI / 2 || this.angle === 3 * PI / 2) {
        for (var _iterator3 = this.sheetBlocks, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
          var _ref3;

          if (_isArray3) {
       
Download .txt
gitextract_rn_nh3ga/

├── .gitignore
├── LICENSE
├── README.md
├── css/
│   ├── black-book-view.css
│   ├── short-black-book-view.css
│   ├── short-white-book-view.css
│   └── white-book-view.css
├── dist/
│   └── flip-book.js
├── fonts/
│   └── FontAwesome.otf
├── index.js
├── js/
│   ├── default-book-view.js
│   └── pdf.worker.js
├── package.json
├── src/
│   ├── 3dflipbook.js
│   └── libs.js
├── templates/
│   └── default-book-view.html
└── webpack.config.js
Download .txt
SYMBOL INDEX (1045 symbols across 4 files)

FILE: dist/flip-book.js
  function __webpack_require__ (line 6) | function __webpack_require__(moduleId) {
  function __webpack_require__ (line 99) | function __webpack_require__(moduleId) {
  function _classCallCheck (line 253) | function _classCallCheck(instance, Constructor) {
  function BaseMathUtils (line 260) | function BaseMathUtils() {
  function _interopRequireDefault (line 564) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 568) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 574) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 580) | function _inherits(subClass, superClass) {
  function MathUtils (line 589) | function MathUtils() {
  function _classCallCheck (line 670) | function _classCallCheck(instance, Constructor) {
  function Utils (line 677) | function Utils() {
  function split (line 682) | function split(s) {
  function _interopRequireDefault (line 741) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 745) | function _classCallCheck(instance, Constructor) {
  function ImageBase (line 752) | function ImageBase(context, width, height, color) {
  function _classCallCheck (line 874) | function _classCallCheck(instance, Constructor) {
  function EventConverter (line 887) | function EventConverter(wnd, doc) {
  function _classCallCheck (line 1039) | function _classCallCheck(instance, Constructor) {
  function GraphUtils (line 1046) | function GraphUtils() {
  function _interopRequireDefault (line 1118) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 1122) | function _classCallCheck(instance, Constructor) {
  function ImageFactory (line 1129) | function ImageFactory(context, cache) {
  function _interopRequireDefault (line 1201) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 1205) | function _classCallCheck(instance, Constructor) {
  function BookPropsBuilder (line 1212) | function BookPropsBuilder(onReady) {
  function _interopRequireDefault (line 1313) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 1317) | function _classCallCheck(instance, Constructor) {
  function SheetBlock (line 1326) | function SheetBlock(visual, p, first, last) {
  function props (line 1868) | function props() {
  function _classCallCheck (line 1958) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 1964) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 1970) | function _inherits(subClass, superClass) {
  function CSS3DObject (line 1979) | function CSS3DObject() {
  function CSS3DSprite (line 2009) | function CSS3DSprite(element) {
  function epsilon (line 2070) | function epsilon(value) {
  function getCameraCSSMatrix (line 2075) | function getCameraCSSMatrix(matrix) {
  function getObjectCSSMatrix (line 2082) | function getObjectCSSMatrix(matrix, cameraCSSMatrix) {
  function renderObject (line 2095) | function renderObject(object, camera, cameraCSSMatrix) {
  function zOrder (line 2157) | function zOrder(scene) {
  function _classCallCheck (line 2240) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 2246) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 2252) | function _inherits(subClass, superClass) {
  function CSSLayer (line 2272) | function CSSLayer(width, height, props) {
  function _classCallCheck (line 2393) | function _classCallCheck(instance, Constructor) {
  function Cache (line 2400) | function Cache() {
  function _classCallCheck (line 2558) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 2564) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 2570) | function _inherits(subClass, superClass) {
  function Controller (line 2579) | function Controller() {
  function _interopRequireDefault (line 2618) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 2622) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 2628) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 2634) | function _inherits(subClass, superClass) {
  function CustomEventConverter (line 2648) | function CustomEventConverter(wnd, doc) {
  function _interopRequireDefault (line 2731) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 2735) | function _classCallCheck(instance, Constructor) {
  function Finder (line 2830) | function Finder(strs, pattern, props) {
  function _interopRequireDefault (line 2880) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 2884) | function _classCallCheck(instance, Constructor) {
  function Pdf (line 2895) | function Pdf(src, loadingProgress) {
  function _classCallCheck (line 3026) | function _classCallCheck(instance, Constructor) {
  function ThreeEventConverterFs (line 3041) | function ThreeEventConverterFs(visualWorld) {
  function _interopRequireDefault (line 3091) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 3095) | function _classCallCheck(instance, Constructor) {
  function ThreeUtils (line 3102) | function ThreeUtils() {
  function _classCallCheck (line 3218) | function _classCallCheck(instance, Constructor) {
  function Target (line 3225) | function Target() {
  function _interopRequireDefault (line 3322) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 3582) | function _classCallCheck(instance, Constructor) {
  function AutoNavigator (line 3589) | function AutoNavigator(context, bookCtrl) {
  function _interopRequireDefault (line 3668) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 3672) | function _classCallCheck(instance, Constructor) {
  function Binder (line 3679) | function Binder(visual, p) {
  function _interopRequireDefault (line 3875) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 3879) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 3885) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 3891) | function _inherits(subClass, superClass) {
  function Book (line 3921) | function Book(visual, sheets, pageCallback, props) {
  function _interopRequireDefault (line 4956) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 4960) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 4966) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 4972) | function _inherits(subClass, superClass) {
  function BookController (line 4981) | function BookController(book, view, props) {
  function merge (line 5766) | function merge(first, second) {
  function _classCallCheck (line 5818) | function _classCallCheck(instance, Constructor) {
  function BookPrinter (line 5825) | function BookPrinter(context, book, styleSheet) {
  function _interopRequireDefault (line 6031) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 6035) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 6041) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 6047) | function _inherits(subClass, superClass) {
  function BookView (line 6056) | function BookView(container, onLoad, template, handler) {
  function _interopRequireDefault (line 6167) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 6171) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 6177) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 6183) | function _inherits(subClass, superClass) {
  function ClbBookPropsBuilder (line 6192) | function ClbBookPropsBuilder(context, pageCallback, pages, onReady) {
  function _interopRequireDefault (line 6249) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 6253) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 6259) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 6265) | function _inherits(subClass, superClass) {
  function Cover (line 6274) | function Cover(visual, p, angle, state) {
  function _interopRequireDefault (line 6322) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 6326) | function _classCallCheck(instance, Constructor) {
  function CssLayersManager (line 6333) | function CssLayersManager(book) {
  function _interopRequireDefault (line 6524) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 6528) | function _classCallCheck(instance, Constructor) {
  function PageManager (line 6535) | function PageManager(visual, book, p) {
  function _interopRequireDefault (line 7067) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 7071) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 7077) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 7083) | function _inherits(subClass, superClass) {
  function PdfBookPropsBuilder (line 7092) | function PdfBookPropsBuilder(src, onReady) {
  function _classCallCheck (line 7155) | function _classCallCheck(instance, Constructor) {
  function PdfLinksHandler (line 7162) | function PdfLinksHandler(pdf, ctrl, element) {
  function _interopRequireDefault (line 7252) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 7256) | function _classCallCheck(instance, Constructor) {
  function SearchEngine (line 7263) | function SearchEngine(pageCallback, pages) {
  function _interopRequireDefault (line 7379) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 7383) | function _classCallCheck(instance, Constructor) {
  function SheetCssLayer (line 7390) | function SheetCssLayer(visual, block, props) {
  function _interopRequireDefault (line 7457) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 7461) | function _classCallCheck(instance, Constructor) {
  function SheetPhysics (line 7500) | function SheetPhysics() {
  function _classCallCheck (line 7881) | function _classCallCheck(instance, Constructor) {
  function SoundsEnviroment (line 7888) | function SoundsEnviroment() {
  function _interopRequireDefault (line 7956) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 7960) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 7966) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 7972) | function _inherits(subClass, superClass) {
  function TocController (line 7981) | function TocController(view, bookCtrl) {
  function _interopRequireDefault (line 8138) | function _interopRequireDefault(obj) {
  function props (line 8278) | function props() {
  function _interopRequireDefault (line 8441) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 8445) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 8451) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 8457) | function _inherits(subClass, superClass) {
  function BlankImage (line 8466) | function BlankImage(context, width, height, color) {
  function _classCallCheck (line 8498) | function _classCallCheck(instance, Constructor) {
  function Bookmarks (line 8505) | function Bookmarks(container, items) {
  function _classCallCheck (line 8694) | function _classCallCheck(instance, Constructor) {
  function Detector (line 8701) | function Detector() {
  function _classCallCheck (line 8769) | function _classCallCheck(instance, Constructor) {
  function DocMouseSimulator (line 8776) | function DocMouseSimulator(jFrame, element) {
  function _classCallCheck (line 9117) | function _classCallCheck(instance, Constructor) {
  function toSvg (line 9162) | function toSvg(node, options) {
  function toPixelData (line 9189) | function toPixelData(node, options) {
  function toPng (line 9200) | function toPng(node, options) {
  function toJpeg (line 9211) | function toJpeg(node, options) {
  function toBlob (line 9223) | function toBlob(node, options) {
  function draw (line 9227) | function draw(domNode, options) {
  function cloneNode (line 9249) | function cloneNode(node, filter, root) {
  function embedFonts (line 9364) | function embedFonts(node) {
  function inlineImages (line 9373) | function inlineImages(node) {
  function makeSvgDataUri (line 9379) | function makeSvgDataUri(node, width, height) {
  function newUtil (line 9388) | function newUtil() {
  function newInliner (line 9660) | function newInliner() {
  function newFontFaces (line 9720) | function newFontFaces() {
  function newImages (line 9777) | function newImages() {
  function _classCallCheck (line 9843) | function _classCallCheck(instance, Constructor) {
  function Drag (line 9850) | function Drag(wnd, doc, visualWorld) {
  function _classCallCheck (line 9986) | function _classCallCheck(instance, Constructor) {
  function EventsToActions (line 10017) | function EventsToActions(element, actions) {
  function _classCallCheck (line 10314) | function _classCallCheck(instance, Constructor) {
  function FullScreen (line 10321) | function FullScreen() {
  function _interopRequireDefault (line 10420) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 10424) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 10430) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 10436) | function _inherits(subClass, superClass) {
  function InteractiveImage (line 10445) | function InteractiveImage(context, width, height, color, src, cache, inj...
  function _interopRequireDefault (line 10569) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 10573) | function _classCallCheck(instance, Constructor) {
  function LoadingAnimation (line 10693) | function LoadingAnimation(width, height, color) {
  function _classCallCheck (line 10726) | function _classCallCheck(instance, Constructor) {
  function LoadingController (line 10733) | function LoadingController(view) {
  function _interopRequireDefault (line 10830) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 10834) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 10840) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 10846) | function _inherits(subClass, superClass) {
  function MouseEventConverter (line 10855) | function MouseEventConverter(wnd, doc, element) {
  function _interopRequireDefault (line 10905) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 10909) | function _classCallCheck(instance, Constructor) {
  function Object3DWatcher (line 10916) | function Object3DWatcher(visual, boundBoxClb) {
  function _classCallCheck (line 11171) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 11177) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 11183) | function _inherits(subClass, superClass) {
  function Orbit (line 11192) | function Orbit(object, domElement) {
  function _interopRequireDefault (line 11562) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 11566) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 11572) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 11578) | function _inherits(subClass, superClass) {
  function PdfImage (line 11587) | function PdfImage(context, width, height, color, pdf, n) {
  function _classCallCheck (line 11862) | function _classCallCheck(instance, Constructor) {
  function Search (line 11869) | function Search(container, pages) {
  function _interopRequireDefault (line 11976) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 11980) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 11986) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 11992) | function _inherits(subClass, superClass) {
  function StaticImage (line 12001) | function StaticImage(context, width, height, color, src) {
  function _classCallCheck (line 12054) | function _classCallCheck(instance, Constructor) {
  function TextureAnimator (line 12061) | function TextureAnimator(img, tilesHoriz, tilesVert, numTiles, tileDispD...
  function _interopRequireDefault (line 12137) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 12141) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 12147) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 12153) | function _inherits(subClass, superClass) {
  function ThreeMouseEventConverter (line 12162) | function ThreeMouseEventConverter(wnd, doc, visualWorld, test) {
  function _interopRequireDefault (line 12212) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 12216) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 12222) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 12228) | function _inherits(subClass, superClass) {
  function ThreeTouchEventConverter (line 12237) | function ThreeTouchEventConverter(wnd, doc, visualWorld, test) {
  function _interopRequireDefault (line 12294) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 12298) | function _classCallCheck(instance, Constructor) {
  function Thumbnails (line 12305) | function Thumbnails(context, container, thumbnailsClb, size) {
  function _interopRequireDefault (line 12490) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 12494) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 12500) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 12506) | function _inherits(subClass, superClass) {
  function TouchConverter (line 12515) | function TouchConverter(wnd, doc, element) {
  function _classCallCheck (line 12561) | function _classCallCheck(instance, Constructor) {
  function View (line 12865) | function View(parentContainer, onLoad) {
  function _interopRequireDefault (line 13317) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 13321) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 13327) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 13333) | function _inherits(subClass, superClass) {
  function VisualWorld (line 13342) | function VisualWorld(wnd, doc, container) {
  function _interopRequireDefault (line 13692) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 13696) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 13702) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 13708) | function _inherits(subClass, superClass) {
  function WidgetController (line 13717) | function WidgetController(view) {
  function _interopRequireDefault (line 13773) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 13777) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 13783) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 13789) | function _inherits(subClass, superClass) {
  function CircleTarget (line 13798) | function CircleTarget(x, y, r) {
  function _interopRequireDefault (line 13849) | function _interopRequireDefault(obj) {
  function _classCallCheck (line 13853) | function _classCallCheck(instance, Constructor) {
  function _possibleConstructorReturn (line 13859) | function _possibleConstructorReturn(self, call) {
  function _inherits (line 13865) | function _inherits(subClass, superClass) {
  function PolyTarget (line 13874) | function PolyTarget(poly) {
  function e (line 13905) | function e(a) {
  function u (line 13907) | function u(a) {
  function handler (line 14047) | function handler(event) {
  function nullLowestDelta (line 14174) | function nullLowestDelta() {
  function shouldAdjustOldDeltas (line 14178) | function shouldAdjustOldDeltas(orgEvent, absDelta) {

FILE: js/default-book-view.js
  function init (line 1) | function init(container) {

FILE: js/pdf.worker.js
  function r (line 1) | function r(e,t,r){this.data=e;this.bp=t;this.dataEnd=r;this.chigh=e[t];t...
  function l (line 1) | function l(e){switch(e){case"WinAnsiEncoding":return n;case"StandardEnco...
  function g (line 1) | function g(e){d=e}
  function v (line 1) | function v(){return d}
  function p (line 1) | function p(e){if(d>=u.infos){console.log("Info: "+e)}}
  function m (line 1) | function m(e){if(d>=u.warnings){console.log("Warning: "+e)}}
  function b (line 1) | function b(e){console.log("Deprecated API usage: "+e)}
  function y (line 1) | function y(e){if(d>=u.errors){console.log("Error: "+e);console.log(k())}...
  function k (line 1) | function k(){try{throw new Error}catch(e){return e.stack?e.stack.split("...
  function w (line 1) | function w(e,t){if(!e){y(t)}}
  function x (line 1) | function x(e,t){try{var r=new URL(e);if(!r.origin||r.origin==="null"){re...
  function S (line 1) | function S(e){if(!e){return false}switch(e.protocol){case"http:":case"ht...
  function A (line 1) | function A(e,t){if(!e){return null}try{var r=t?new URL(e,t):new URL(e);i...
  function I (line 1) | function I(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:true,con...
  function B (line 1) | function B(e){var t;return function(){if(e){t=Object.create(null);e(t);e...
  function t (line 1) | function t(e,t){this.name="PasswordException";this.message=e;this.code=t}
  function t (line 1) | function t(e,t){this.name="UnknownErrorException";this.message=e;this.de...
  function t (line 1) | function t(e){this.name="InvalidPDFException";this.message=e}
  function t (line 1) | function t(e){this.name="MissingPDFException";this.message=e}
  function t (line 1) | function t(e,t){this.name="UnexpectedResponseException";this.message=e;t...
  function t (line 1) | function t(e){this.message=e}
  function t (line 1) | function t(e,t){this.begin=e;this.end=t;this.message="Missing data ["+e+...
  function t (line 1) | function t(e){this.message=e}
  function j (line 1) | function j(e){if(typeof e!=="string"){m("The argument for removeNullChar...
  function q (line 1) | function q(e){w(e!==null&&typeof e==="object"&&e.length!==undefined,"Inv...
  function N (line 1) | function N(e){w(typeof e==="string","Invalid argument for stringToBytes"...
  function _ (line 1) | function _(e){if(e.length!==undefined){return e.length}w(e.byteLength!==...
  function z (line 1) | function z(e){if(e.length===1&&e[0]instanceof Uint8Array){return e[0]}va...
  function H (line 1) | function H(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,e&...
  function G (line 1) | function G(e){var t=1,r=0;while(e>t){t<<=1;r++}return r}
  function X (line 1) | function X(e,t){return e[t]<<24>>24}
  function W (line 1) | function W(e,t){return e[t]<<8|e[t+1]}
  function V (line 1) | function V(e,t){return(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0}
  function K (line 1) | function K(){var e=new Uint8Array(2);e[0]=1;var t=new Uint16Array(e.buff...
  function Y (line 1) | function Y(){try{new Function("");return true}catch(e){return false}}
  function t (line 1) | function t(e,t){this.buffer=e;this.byteLength=e.length;this.length=t===u...
  function a (line 1) | function a(e){return{get:function(){var t=this.buffer,r=e<<2;return(t[r]...
  function i (line 1) | function i(e){while(r<e){Object.defineProperty(t.prototype,r,a(r));r++}}
  function t (line 1) | function t(){}
  function i (line 1) | function i(e,t){return e-t}
  function t (line 1) | function t(e,t,r,a,i,n){this.viewBox=e;this.scale=t;this.rotation=r;this...
  function te (line 1) | function te(e){var t,r=e.length,a=[];if(e[0]==="þ"&&e[1]==="ÿ"){for(t=2;...
  function re (line 1) | function re(e){return decodeURIComponent(escape(e))}
  function ae (line 1) | function ae(e){return unescape(encodeURIComponent(e))}
  function ie (line 1) | function ie(e){for(var t in e){return false}return true}
  function ne (line 1) | function ne(e){return typeof e==="boolean"}
  function se (line 1) | function se(e){return typeof e==="number"&&(e|0)===e}
  function oe (line 1) | function oe(e){return typeof e==="number"}
  function le (line 1) | function le(e){return typeof e==="string"}
  function ce (line 1) | function ce(e){return e instanceof Array}
  function he (line 1) | function he(e){return typeof e==="object"&&e!==null&&e.byteLength!==unde...
  function ue (line 1) | function ue(e){return e===32||e===9||e===13||e===10}
  function fe (line 1) | function fe(){var e={};e.promise=new Promise(function(t,r){e.resolve=t;e...
  function c (line 1) | function c(e){if(n._status===i){return}l=[];a(e)}
  function a (line 1) | function a(){this.id="$weakmap"+r++}
  function t (line 1) | function t(e,t,r){while(e.length<r){e+=t}return e}
  function r (line 1) | function r(){this.started=Object.create(null);this.times=[];this.enabled...
  function pe (line 1) | function pe(e,t,r){this.sourceName=e;this.targetName=t;this.comObj=r;thi...
  function me (line 1) | function me(e,t,r){var a=new Image;a.onload=function t(){r.resolve(e,a)}...
  function s (line 1) | function s(e){return i[e]!==undefined}
  function o (line 1) | function o(){v.call(this);this._isInvalid=true}
  function l (line 1) | function l(e){if(e===""){o.call(this)}return e.toLowerCase()}
  function c (line 1) | function c(e){var t=e.charCodeAt(0);if(t>32&&t<127&&[34,35,60,62,63,96]....
  function h (line 1) | function h(e){var t=e.charCodeAt(0);if(t>32&&t<127&&[34,35,60,62,96].ind...
  function g (line 1) | function g(e,t,r){function a(e){y.push(e)}var g=t||"scheme start",v=0,p=...
  function v (line 1) | function v(){this._scheme="";this._schemeData="";this._username="";this....
  function p (line 1) | function p(e,t){if(t!==undefined&&!(t instanceof p)){t=new p(String(t))}...
  method href (line 1) | get href(){if(this._isInvalid){return this._url}var e="";if(""!==this._u...
  method href (line 1) | set href(e){v.call(this);g.call(this,e)}
  method protocol (line 1) | get protocol(){return this._scheme+":"}
  method protocol (line 1) | set protocol(e){if(this._isInvalid){return}g.call(this,e+":","scheme sta...
  method host (line 1) | get host(){return this._isInvalid?"":this._port?this._host+":"+this._por...
  method host (line 1) | set host(e){if(this._isInvalid||!this._isRelative){return}g.call(this,e,...
  method hostname (line 1) | get hostname(){return this._host}
  method hostname (line 1) | set hostname(e){if(this._isInvalid||!this._isRelative){return}g.call(thi...
  method port (line 1) | get port(){return this._port}
  method port (line 1) | set port(e){if(this._isInvalid||!this._isRelative){return}g.call(this,e,...
  method pathname (line 1) | get pathname(){return this._isInvalid?"":this._isRelative?"/"+this._path...
  method pathname (line 1) | set pathname(e){if(this._isInvalid||!this._isRelative){return}this._path...
  method search (line 1) | get search(){return this._isInvalid||!this._query||this._query==="?"?"":...
  method search (line 1) | set search(e){if(this._isInvalid||!this._isRelative){return}this._query=...
  method hash (line 1) | get hash(){return this._isInvalid||!this._fragment||this._fragment==="#"...
  method hash (line 1) | set hash(e){if(this._isInvalid){return}this._fragment="#";if(e[0]==="#")...
  method origin (line 1) | get origin(){var e;if(this._isInvalid||!this._scheme){return""}switch(th...
  function n (line 1) | function n(e){return(e&1)!==0}
  function s (line 1) | function s(e){return(e&1)===0}
  function o (line 1) | function o(e,t,r){for(var a=t,i=e.length;a<i;++a){if(e[a]!==r){return a}...
  function l (line 1) | function l(e,t,r,a){for(var i=t;i<r;++i){e[i]=a}}
  function c (line 1) | function c(e,t,r){for(var a=t,i=r-1;a<i;++a,--i){var n=e[a];e[a]=e[i];e[...
  function h (line 1) | function h(e,t,r){return{str:e,dir:r?"ttb":t?"ltr":"rtl"}}
  function d (line 1) | function d(e,t,d){var g=true;var v=e.length;if(v===0||d){return h(e,g,d)...
  function a (line 1) | function a(e,t,r){this.bytes=e.getBytes();this.properties=t;this.seacAna...
  function a (line 1) | function a(){var e=t[r++];if(e===30){return i()}else if(e===28){e=t[r++]...
  function i (line 1) | function i(){var e="";var a=15;var i=["0","1","2","3","4","5","6","7","8...
  function g (line 1) | function g(){var e=o[t++];for(u=0;u<e;u++){var r=o[t++];var i=(o[t++]<<8...
  function t (line 1) | function t(){this.header=null;this.names=[];this.topDict=null;this.strin...
  function t (line 1) | function t(e,t,r,a){this.major=e;this.minor=t;this.hdrSize=r;this.offSiz...
  function t (line 1) | function t(){this.strings=[]}
  method count (line 1) | get count(){return this.strings.length}
  function t (line 1) | function t(){this.objects=[];this.length=0}
  method count (line 1) | get count(){return this.objects.length}
  function t (line 1) | function t(e,t){this.keyToNameMap=e.keyToNameMap;this.nameToKeyMap=e.nam...
  function a (line 1) | function a(e){if(r===null){r=S.createTables(t)}S.call(this,r,e);this.pri...
  function a (line 1) | function a(e){if(r===null){r=S.createTables(t)}S.call(this,r,e);this.sub...
  function t (line 1) | function t(e,t,r,a){this.predefined=e;this.format=t;this.charset=r;this....
  function t (line 1) | function t(e,t,r,a){this.predefined=e;this.format=t;this.encoding=r;this...
  function t (line 1) | function t(e,t){this.fdSelect=e;this.raw=t}
  function t (line 1) | function t(){this.offsets=Object.create(null)}
  function t (line 1) | function t(e){this.cff=e}
  function t (line 1) | function t(e,t,r){this.bytes=new Uint8Array(e);this.start=0;this.pos=0;t...
  method length (line 1) | get length(){return this.end-this.start}
  method isEmpty (line 1) | get isEmpty(){return this.length===0}
  function i (line 1) | function i(){}
  function t (line 1) | function t(e,t){var r=t.rangeChunkSize;var a=t.length;this.stream=new c(...
  function t (line 1) | function t(){}
  function r (line 1) | function r(e,t,r){this.data=e;this.start=t;this.end=r}
  method decoder (line 1) | get decoder(){var e=new c(this.data,this.start,this.end);return l(this,"...
  method contextCache (line 1) | get contextCache(){var e=new t;return l(this,"contextCache",e)}
  function h (line 1) | function h(e,t,r){var a=e.getContexts(t);var i=1;function n(e){var t=0;f...
  function u (line 1) | function u(e,t,r){var a=e.getContexts("IAID");var i=1;for(var n=0;n<r;n+...
  function m (line 1) | function m(e,t,r){var a=r.decoder;var i=r.contextCache.getContexts("GB")...
  function b (line 1) | function b(e,t,r,i,n,s,o,l){if(e){a("JBIG2 error: MMR encoding is not su...
  function y (line 1) | function y(e,t,r,i,n,s,o,l,c){var h=g[r].coding;if(r===0){h=h.concat([l[...
  function k (line 1) | function k(e,t,r,n,s,o,l,c,f,d,g){if(e){a("JBIG2 error: huffman is not s...
  function w (line 1) | function w(e,t,r,i,n,s,o,l,c,f,d,g,v,p,m,b,k){if(e){a("JBIG2 error: huff...
  function C (line 1) | function C(e,t){var r={};r.number=o(e,t);var i=e[t+4];var n=i&63;if(!f[n...
  function x (line 1) | function x(e,t,r,a){var i=[];var n=r;while(n<a){var s=C(t,n);n=s.headerE...
  function S (line 1) | function S(e,t){return{width:o(e,t),height:o(e,t+4),x:o(e,t+8),y:o(e,t+1...
  function I (line 1) | function I(e,t){var r=e.header;var i=e.data,l=e.start,c=e.end;var h,u,f,...
  function B (line 1) | function B(e,t){for(var r=0,a=e.length;r<a;r++){I(e[r],t)}}
  function R (line 1) | function R(e,t,r){var i=t;if(e[i]!==151||e[i+1]!==74||e[i+2]!==66||e[i+3...
  function T (line 1) | function T(e){var t=new O;for(var r=0,a=e.length;r<a;r++){var i=e[r];var...
  function O (line 1) | function O(){}
  function P (line 1) | function P(){}
  function u (line 1) | function u(){this.decodeTransform=null;this.colorTransform=-1}
  function f (line 1) | function f(e,t){var r=0,a=[],i,n,s=16;while(s>0&&!e[s-1]){s--}a.push({ch...
  function d (line 1) | function d(e,t,r){return 64*((e.blocksPerLine+1)*t+r)}
  function g (line 1) | function g(e,a,i,n,s,o,l,c,h){var u=i.mcusPerLine;var f=i.progressive;va...
  function v (line 1) | function v(e,t,u){var f=e.quantizationTable,d=e.blockData;var g,v,p,m,b,...
  function p (line 1) | function p(e,t){var r=t.blocksPerLine;var a=t.blocksPerColumn;var i=new ...
  function m (line 1) | function m(e){return e<=0?0:e>=255?255:e}
  function i (line 1) | function i(){var e=a[o]<<8|a[o+1];o+=2;return e}
  function n (line 1) | function n(){var e=i();var t=a.subarray(o,o+e-2);o+=t.length;return t}
  function s (line 1) | function s(e){var t=Math.ceil(e.samplesPerLine/8/e.maxH);var r=Math.ceil...
  function r (line 1) | function r(){this.failOnCorruptedImage=false}
  function h (line 1) | function h(e,t){e.x0=Math.ceil(t.XOsiz/e.XRsiz);e.x1=Math.ceil(t.Xsiz/e....
  function u (line 1) | function u(e,t){var r=e.SIZ;var a,i=[];var n=Math.ceil((r.Xsiz-r.XTOsiz)...
  function f (line 1) | function f(e,t,r){var a=t.codingStyleParameters;var i={};if(!a.entropyCo...
  function d (line 1) | function d(e,t,r){var a=1<<r.PPx;var i=1<<r.PPy;var n=t.resLevel===0;var...
  function g (line 1) | function g(e,t,r){var a=r.xcb_;var i=r.ycb_;var n=1<<a;var s=1<<i;var o=...
  function v (line 1) | function v(e,t,r){var a=[];var i=e.subbands;for(var n=0,s=i.length;n<s;n...
  function p (line 1) | function p(e){var t=e.SIZ;var r=e.currentTile.index;var a=e.tiles[r];var...
  function m (line 1) | function m(e){var t=e.SIZ;var r=e.currentTile.index;var a=e.tiles[r];var...
  function b (line 1) | function b(e){var t=e.SIZ;var r=e.currentTile.index;var a=e.tiles[r];var...
  function y (line 1) | function y(e){var t=e.SIZ;var r=e.currentTile.index;var a=e.tiles[r];var...
  function k (line 1) | function k(e){var t=e.SIZ;var r=e.currentTile.index;var a=e.tiles[r];var...
  function w (line 1) | function w(e,t,r,a,i){var n=e*a.minWidth;var s=t*a.minHeight;if(n%r.widt...
  function C (line 1) | function C(e){var t=e.components.length;var r=Number.MAX_VALUE;var a=Num...
  function x (line 1) | function x(e){var t=e.SIZ;var r=e.currentTile.index;var a=e.tiles[r];var...
  function S (line 1) | function S(e,t,r,a){var i=0;var n,o=0,l=false;function c(e){while(o<e){v...
  function A (line 1) | function A(e,t,r,a,i,n,s,o){var l=a.tbx0;var h=a.tby0;var u=a.tbx1-a.tbx...
  function I (line 1) | function I(e,r,a){var i=r.components[a];var n=i.codingStyleParameters;va...
  function B (line 1) | function B(e){var t=e.SIZ;var r=e.components;var a=t.Csiz;var i=[];for(v...
  function R (line 1) | function R(e,t){var r=e.SIZ;var a=r.Csiz;var i=e.tiles[t];for(var n=0;n<...
  function t (line 1) | function t(e,t){var r=s(Math.max(e,t))+1;this.levels=[];for(var a=0;a<r;...
  function t (line 1) | function t(e,t,r){var a=s(Math.max(e,t))+1;this.levels=[];for(var i=0;i<...
  function o (line 1) | function o(e,t,r,n,o){this.width=e;this.height=t;this.contextLabelTable=...
  function t (line 1) | function t(){}
  function t (line 1) | function t(){E.call(this)}
  function t (line 1) | function t(){E.call(this)}
  function n (line 1) | function n(e){var t=3285377520;this.h1=e?e&4294967295:t;this.h2=e?e&4294...
  function t (line 1) | function t(e){this.name=e}
  function t (line 1) | function t(e){this.cmd=e}
  function a (line 1) | function a(e){this.map=Object.create(null);this.xref=e;this.objId=null;t...
  function t (line 1) | function t(e,t){this.num=e;this.gen=t}
  function t (line 1) | function t(){this.dict=Object.create(null)}
  function t (line 1) | function t(){this.dict=Object.create(null)}
  function c (line 1) | function c(e,t){return e instanceof a&&(t===undefined||e.name===t)}
  function h (line 1) | function h(e,t){return e instanceof i&&(t===undefined||e.cmd===t)}
  function u (line 1) | function u(e,t){return e instanceof n&&(t===undefined||c(e.get("Type"),t))}
  function f (line 1) | function f(e){return e instanceof s}
  function d (line 1) | function d(e,t){return e.num===t.num&&e.gen===t.gen}
  function g (line 1) | function g(e){return typeof e==="object"&&e!==null&&e.getBytes!==undefined}
  function i (line 1) | function i(e){if(e>=65520&&e<=65535){return 0}else if(e>=62976&&e<=63743...
  function n (line 1) | function n(e,t){var r=t[e];if(r!==undefined){return r}if(!e){return-1}if...
  function o (line 1) | function o(e){for(var t=0,r=s.length;t<r;t++){var a=s[t];if(e>=a.begin&&...
  function l (line 1) | function l(e){var t=s[13];if(e>=t.begin&&e<t.end){return true}t=s[11];if...
  function h (line 1) | function h(e){var t=e.length;if(t<=1||!l(e.charCodeAt(0))){return e}var ...
  function t (line 1) | function t(e,t,r,a){this.bytes=e instanceof Uint8Array?e:new Uint8Array(...
  method length (line 1) | get length(){return this.end-this.start}
  method isEmpty (line 1) | get isEmpty(){return this.length===0}
  function t (line 1) | function t(e){var t=e.length;var r=new Uint8Array(t);for(var a=0;a<t;++a...
  function r (line 1) | function r(e){this.pos=0;this.bufferLength=0;this.eof=false;this.buffer=...
  method isEmpty (line 1) | get isEmpty(){while(!this.eof&&this.bufferLength===0){this.readBlock()}r...
  function t (line 1) | function t(e){this.streams=e;x.call(this,null)}
  function s (line 1) | function s(e,t){this.str=e;this.dict=e.dict;var r=e.getByte();var a=e.ge...
  function t (line 1) | function t(e,t,r){if(!p(r)){return e}var a=this.predictor=r.get("Predict...
  function t (line 1) | function t(e,t,r,a){var i;while((i=e.getByte())!==-1){if(i===255){e.skip...
  function t (line 1) | function t(e,t,r,a){this.stream=e;this.maybeLength=t;this.dict=r;this.pa...
  function t (line 1) | function t(e,t,r,a){this.stream=e;this.maybeLength=t;this.dict=r;this.pa...
  function t (line 1) | function t(e,t,r){this.str=e;this.dict=e.dict;this.decrypt=r;this.nextCh...
  function t (line 1) | function t(e,t){this.str=e;this.dict=e.dict;this.input=new Uint8Array(5)...
  function t (line 1) | function t(e,t){this.str=e;this.dict=e.dict;this.firstDigit=-1;if(t){t=....
  function t (line 1) | function t(e,t){this.str=e;this.dict=e.dict;x.call(this,t)}
  function k (line 1) | function k(e,t,r){this.str=e;this.dict=e.dict;r=r||v.empty;this.encoding...
  function t (line 1) | function t(e,t,r){this.str=e;this.dict=e.dict;this.cachedData=0;this.bit...
  function t (line 1) | function t(){w.call(this,new Uint8Array(0))}
  function t (line 1) | function t(e){this.a=0;this.b=0;var t=new Uint8Array(256);var r,a=0,i,n=...
  function a (line 1) | function a(e,a,i){var n=1732584193,s=-271733879,o=-1732584194,l=27173387...
  function t (line 1) | function t(e,t){this.high=e|0;this.low=t|0}
  function t (line 1) | function t(e,t){return e>>>t|e<<32-t}
  function r (line 1) | function r(e,t,r){return e&t^~e&r}
  function a (line 1) | function a(e,t,r){return e&t^e&r^t&r}
  function i (line 1) | function i(e){return t(e,2)^t(e,13)^t(e,22)}
  function n (line 1) | function n(e){return t(e,6)^t(e,11)^t(e,25)}
  function s (line 1) | function s(e){return t(e,7)^t(e,18)^e>>>3}
  function o (line 1) | function o(e){return t(e,17)^t(e,19)^e>>>10}
  function c (line 1) | function c(e,t,c){var h=1779033703,u=3144134277,f=1013904242,d=277348076...
  function t (line 1) | function t(e,t,r,a,i){e.assign(t);e.and(r);i.assign(t);i.not();i.and(a);...
  function r (line 1) | function r(e,t,r,a,i){e.assign(t);e.and(r);i.assign(t);i.and(a);e.xor(i)...
  function a (line 1) | function a(e,t,r){e.assign(t);e.rotateRight(28);r.assign(t);r.rotateRigh...
  function i (line 1) | function i(e,t,r){e.assign(t);e.rotateRight(14);r.assign(t);r.rotateRigh...
  function n (line 1) | function n(e,t,r){e.assign(t);e.rotateRight(1);r.assign(t);r.rotateRight...
  function s (line 1) | function s(e,t,r){e.assign(t);e.rotateRight(19);r.assign(t);r.rotateRigh...
  function l (line 1) | function l(e,l,c,h){h=!!h;var u,f,d,g,v,p,m,b;if(!h){u=new y(1779033703,...
  function t (line 1) | function t(e,t,r){return w(e,t,r,true)}
  function t (line 1) | function t(){}
  function o (line 1) | function o(e){var a=176,i=new Uint8Array(a);i.set(e);for(var n=16,s=1;n<...
  function l (line 1) | function l(e,t){var r=new Uint8Array(16);r.set(e);var i,n,o;var l,c,h;fo...
  function c (line 1) | function c(e,t){var a,s,o,l;var c=new Uint8Array(16);c.set(e);for(h=0;h<...
  function h (line 1) | function h(e){this.key=o(e);this.buffer=new Uint8Array(16);this.bufferPo...
  function u (line 1) | function u(e,t){var r,a,i,n=e.length,s=this.buffer,o=this.bufferPosition...
  function o (line 1) | function o(e){var t=240,a=new Uint8Array(t);var i=1;a.set(e);for(var n=3...
  function l (line 1) | function l(e,t){var r=new Uint8Array(16);r.set(e);var i,n,o;var l,c,h;fo...
  function c (line 1) | function c(e,t){var a,s,o,l;var c=new Uint8Array(16);c.set(e);for(h=0;h<...
  function h (line 1) | function h(e){this.key=o(e);this.buffer=new Uint8Array(16);this.bufferPo...
  function u (line 1) | function u(e,t){var r,a,i,n=e.length,s=this.buffer,o=this.bufferPosition...
  function t (line 1) | function t(e,t){if(e.length!==t.length){return false}for(var r=0;r<e.len...
  function r (line 1) | function r(){}
  function t (line 1) | function t(e,t){var r=new Uint8Array(e.length+t.length);r.set(e,0);r.set...
  function r (line 1) | function r(e,r,a){var i=k(r,0,r.length).subarray(0,32);var n=[0];var s=0...
  function a (line 1) | function a(){}
  function i (line 1) | function i(e,t){if(e.length!==t.length){return false}for(var r=0;r<e.len...
  function t (line 1) | function t(e,t){this.StringCipherConstructor=e;this.StreamCipherConstruc...
  function r (line 1) | function r(e,t,r,a,i,n,s,o,l,c,h,u){if(t){var f=Math.min(127,t.length);t...
  function a (line 1) | function a(e,r,a,i,n,s,o,l){var c=40+a.length+e.length;var h=new Uint8Ar...
  function s (line 1) | function s(e,r,a,i){var n=new Uint8Array(32),s=0,o,l;l=Math.min(32,e.len...
  function y (line 1) | function y(e,t,c){var d=e.get("Filter");if(!g(d,"Standard")){l("unknown ...
  function k (line 1) | function k(e,t,r,a){var i=new Uint8Array(r.length+9),n,s;for(n=0,s=r.len...
  function w (line 1) | function w(e,t,r,a,i){c(g(t),"Invalid crypt filter name.");var n=e.get(t...
  function t (line 1) | function t(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]}
  function r (line 1) | function r(e,t){return e[t]<<8|e[t+1]}
  function a (line 1) | function a(e,a,i){var n=r(e,a+2)===1?t(e,a+8):t(e,a+16);var s=r(e,a+n);v...
  function i (line 1) | function i(e,t,r,a){var i={};var n=new f(new c(e,t,r-t),i,a);var s=n.par...
  function n (line 1) | function n(e,t,r){var a,i;if(r){a=4;i=function e(t,r){return t[r]<<24|t[...
  function d (line 1) | function d(e,t){var r=t.charCodeAt(0),a=0;var i=0,n=e.length-1;while(i<n...
  function g (line 1) | function g(e,t,r){function a(e,r){t.push({cmd:"moveTo",args:[e,r]})}func...
  function v (line 1) | function v(e,t,r){var a=[];var i=0,n=0;var s=0;function o(e,r){t.push({c...
  function m (line 1) | function m(e){this.compiledGlyphs=Object.create(null);this.compiledCharC...
  function b (line 1) | function b(e,t,r){r=r||[488e-6,0,0,488e-6,0,0];m.call(this,r);this.glyph...
  function y (line 1) | function y(e,t,r,a){r=r||[.001,0,0,.001,0,0];m.call(this,r);this.glyphs=...
  function M (line 1) | function M(e){return e===E}
  function t (line 1) | function t(e,t,r,a){this.lexer=e;this.allowStreams=t;this.xref=r;this.re...
  function t (line 1) | function t(e,t){this.stream=e;this.nextChar();this.strBuf=[];this.knownC...
  function a (line 1) | function a(e){if(e>=48&&e<=57){return e&15}if(e>=65&&e<=70||e>=97&&e<=10...
  function r (line 1) | function r(e,t){var r=l.get(e);if(h(r)&&(t?r>=0:r>0)){return r}throw new...
  function a (line 1) | function a(){var e=l.get("H"),t,r;if(c(e)&&((t=e.length)===2||t===4)){fo...
  function r (line 1) | function r(){this.width=0;this.lsb=0;this.flexing=false;this.output=[];t...
  function a (line 1) | function a(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}
  function i (line 1) | function i(e,t,r){if(r>=e.length){return new Uint8Array(0)}var a=t|0,i=5...
  function h (line 1) | function h(e,t,r){var i=t|0,n=52845,s=22719;var o=e.length,l=o>>>1;var c...
  function u (line 1) | function u(e){return e===47||e===91||e===93||e===123||e===125||e===40||e...
  function f (line 1) | function f(e,r,n){if(r){var o=e.getBytes();var l=!(a(o[0])&&a(o[1])&&a(o...
  function t (line 1) | function t(e){this.codespaceRanges=[[],[],[],[]];this.numCodespaceRanges...
  method length (line 1) | get length(){return this._map.length}
  method isIdentityCMap (line 1) | get isIdentityCMap(){if(!(this.name==="Identity-H"||this.name==="Identit...
  function t (line 1) | function t(e,t){y.call(this);this.vertical=e;this.addCodespaceRange(t,0,...
  method length (line 1) | get length(){return 65536}
  method isIdentityCMap (line 1) | get isIdentityCMap(){l("should not access .isIdentityCMap")}
  function t (line 1) | function t(e){return new Promise(function(t,r){var a=new XMLHttpRequest;...
  function r (line 1) | function r(e,t){var r=0;for(var a=0;a<=t;a++){r=r<<8|e[a]}return r>>>0}
  function a (line 1) | function a(e,t){if(t===1){return String.fromCharCode(e[0],e[1])}if(t===3...
  function i (line 1) | function i(e,t,r){var a=0;for(var i=r;i>=0;i--){a+=e[i]+t[i];e[i]=a&255;...
  function n (line 1) | function n(e,t){var r=1;for(var a=t;a>=0&&r>0;a--){r+=e[a];e[a]=r&255;r>...
  function h (line 1) | function h(e){this.buffer=e;this.pos=0;this.end=e.length;this.tmpBuf=new...
  function u (line 1) | function u(e,c,u){return t(e).then(function(e){var t=new h(e);var f=t.re...
  function f (line 1) | function f(){}
  function t (line 1) | function t(e){var t=0;for(var r=0;r<e.length;r++){t=t<<8|e.charCodeAt(r)...
  function r (line 1) | function r(e){if(!h(e)){l("Malformed CMap: expected string.")}}
  function a (line 1) | function a(e){if(!c(e)){l("Malformed CMap: expected int.")}}
  function i (line 1) | function i(e,a){while(true){var i=a.getObj();if(m(i)){break}if(d(i,"endb...
  function n (line 1) | function n(e,a){while(true){var i=a.getObj();if(m(i)){break}if(d(i,"endb...
  function C (line 1) | function C(e,i){while(true){var n=i.getObj();if(m(n)){break}if(d(n,"endc...
  function x (line 1) | function x(e,i){while(true){var n=i.getObj();if(m(n)){break}if(d(n,"endc...
  function S (line 1) | function S(e,r){while(true){var a=r.getObj();if(m(a)){break}if(d(a,"endc...
  function A (line 1) | function A(e,t){var r=t.getObj();if(c(r)){e.vertical=!!r}}
  function I (line 1) | function I(e,t){var r=t.getObj();if(f(r)&&h(r.name)){e.name=r.name}}
  function B (line 1) | function B(e,t,r,a){var s;var l;e:while(true){try{var c=t.getObj();if(m(...
  function R (line 1) | function R(e,t,r){return O(r,t).then(function(t){e.useCMap=t;if(e.numCod...
  function T (line 1) | function T(e,t){var r=t.url+e+".bcmap";var a=new y(true);return(new w).r...
  function O (line 1) | function O(e,t){if(e==="Identity-H"){return Promise.resolve(new k(false,...
  function se (line 1) | function se(e){if(!e.fontMatrix){return}if(e.fontMatrix[0]===u[0]){retur...
  function oe (line 1) | function oe(e,t){if(e.hasIncludedToUnicodeMap){return}if(e.hasEncoding){...
  function le (line 1) | function le(e,t){switch(e){case"Type1":return t==="Type1C"?f.TYPE1C:f.TY...
  function ce (line 1) | function ce(e,t){if(t[e]!==undefined){return e}var r=_(e,t);if(r!==-1){f...
  function t (line 1) | function t(e,t,r,a,i,n,s,o){this.fontChar=e;this.unicode=t;this.accent=r...
  function t (line 1) | function t(e){this._map=e}
  method length (line 1) | get length(){return this._map.length}
  function t (line 1) | function t(e,t){this.firstChar=e;this.lastChar=t}
  method length (line 1) | get length(){return this.lastChar+1-this.firstChar}
  function t (line 1) | function t(e,t,r){e[t]=r>>8&255;e[t+1]=r&255}
  function r (line 1) | function r(e,t,r){e[t]=r>>24&255;e[t+1]=r>>16&255;e[t+2]=r>>8&255;e[t+3]...
  function a (line 1) | function a(e,t,r){var a,i;if(r instanceof Uint8Array){e.set(r,t)}else if...
  function i (line 1) | function i(e){this.sfnt=e;this.tables=Object.create(null)}
  function t (line 1) | function t(e,t,r){var a,i,n;this.name=e;this.loadedName=r.loadedName;thi...
  function r (line 1) | function r(e,t){return(e<<8)+t}
  function a (line 1) | function a(e,t){var r=(e<<8)+t;return r&1<<15?r-65536:r}
  function i (line 1) | function i(e,t,r,a){return(e<<24)+(t<<16)+(r<<8)+a}
  function n (line 1) | function n(e){return String.fromCharCode(e>>8&255,e&255)}
  function s (line 1) | function s(e){e=e>32767?32767:e<-32768?-32768:e;return String.fromCharCo...
  function o (line 1) | function o(e){var t=e.peekBytes(4);return k(t,0)===65536}
  function l (line 1) | function l(e){var t=e.peekBytes(4);return g(t)==="OTTO"}
  function c (line 1) | function c(e){var t=e.peekBytes(2);if(t[0]===37&&t[1]===33){return true}...
  function h (line 1) | function h(e,t,r){var a=[],i;for(var n=0,s=e.length;n<s;n++){i=_(e[n],t)...
  function m (line 1) | function m(e){var t=0,r=ge.length-1;while(t<r){var a=t+r+1>>1;if(e<ge[a]...
  function b (line 1) | function b(e,t){var r=t.toUnicode;var a=!!(t.flags&ie.Symbolic);var i=t....
  function S (line 1) | function S(e,t){var r=[];for(var a in e){if(e[a]>=t){continue}r.push({fo...
  function A (line 1) | function A(e,t){var r=S(e,t);var a=r[r.length-1][1]>65535?2:1;var i="\0\...
  function z (line 1) | function z(e){var t=new I(e.data);var r=t.getUint16();t.getBytes(60);var...
  function H (line 1) | function H(e,t,r){r=r||{unitsPerEm:0,yMax:0,yMin:0,ascent:0,descent:0};v...
  function W (line 1) | function W(e){var t=Math.floor(e.italicAngle*Math.pow(2,16));return"\0\...
  function V (line 1) | function V(e,t){if(!t){t=[[],[]]}var r=[t[0][0]||"Original licence",t[0]...
  method renderer (line 1) | get renderer(){var e=T.create(this,ae);return w(this,"renderer",e)}
  function o (line 1) | function o(e){var t=g(e.getBytes(4));var r=e.getInt32()>>>0;var a=e.getI...
  function l (line 1) | function l(e){return{version:g(e.getBytes(4)),numTables:e.getUint16(),se...
  function c (line 1) | function c(e,t,r,a){if(!e){x("No cmap table available.");return{platform...
  function h (line 1) | function h(e,t,r,a){if(!t){if(r){r.data=null}return}e.pos=(e.start?e.sta...
  function u (line 1) | function u(e,t,r,a,i,n){if(r-t<=12){return 0}var s=e.subarray(t,r);var o...
  function f (line 1) | function f(e,t,a){var n=e.data;var s=i(n[0],n[1],n[2],n[3]);if(s>>16!==1...
  function m (line 1) | function m(e,t,r,a,i,n){var s,o,l;if(a){s=4;o=function e(t,r){return t[r...
  function k (line 1) | function k(e,t,r){var a=(n.start?n.start:0)+e.offset;n.pos=a;var i=e.len...
  function w (line 1) | function w(e){var t=(n.start?n.start:0)+e.offset;n.pos=t;var r=[[],[]];v...
  function S (line 1) | function S(e,t){var r=e.data;var a=0,i,n,s,o,l,c=0,h=0;var u=[];var f=[]...
  function R (line 1) | function R(e,t){if(e.tooComplexToFollowFunctions){return}if(e.functionsD...
  function T (line 1) | function T(e,t){if(t.length>1){var r=0;var a,i;for(a=0,i=t.length;a<i;a+...
  function E (line 1) | function E(e,t,r,a){var i={functionsDefined:[],functionsUsed:[],function...
  function pe (line 1) | function pe(e,t,r){if(!te[e]){return true}if(!ve&&t>=0&&ue.has(t)){retur...
  function c (line 1) | function c(e,t){var r=null;for(var a in e){if(t===e[a]){if(!r){r=[]}r.pu...
  function h (line 1) | function h(e,t){for(var r in e){if(t===e[r]){return r|0}}o.charCodeToGly...
  method spaceWidth (line 1) | get spaceWidth(){if("_shadowWidth"in this){return this._shadowWidth}var ...
  function t (line 1) | function t(e){this.error=e;this.loadedName="g_font_error";this.loading=f...
  function me (line 1) | function me(e,t,r){var a=Object.create(null);var i,n,s;var o=!!(e.flags&...
  function t (line 1) | function t(e,t,r){var a=e.length;var i=t.length;var n=a-i;var s=r,o,l=fa...
  function r (line 1) | function r(e,r){var a=[101,101,120,101,99];var i=e.pos;var n,s,o;try{n=e...
  function a (line 1) | function a(e,t){var r=e.getBytes();return{stream:new I(r),length:r.length}}
  function i (line 1) | function i(e,t,i){var n=6;var s=i.length1;var o=i.length2;var l=t.peekBy...
  method numGlyphs (line 1) | get numGlyphs(){return this.charstrings.length+1}
  function t (line 1) | function t(e,t){this.properties=t;var r=new G(e,t,ae);this.cff=r.parse()...
  method numGlyphs (line 1) | get numGlyphs(){return this.cff.charStrings.count}
  function t (line 1) | function t(e){this.lexer=e;this.operators=[];this.token=null;this.prev=n...
  function t (line 1) | function t(e,t){this.type=e;this.value=t}
  function t (line 1) | function t(e){this.stream=e;this.nextChar();this.strBuf=[]}
  function s (line 1) | function s(e){var t=e.length;var r=[];var a=0;for(var i=0;i<t;i+=2){r[a]...
  function r (line 1) | function r(e,t,r,a,i){return a+(e-t)*((i-a)/(r-t))}
  function d (line 1) | function d(e){var t;if(typeof e!=="object"){return false}else if(l(e)){t...
  function r (line 1) | function r(e){this.stack=!e?[]:Array.prototype.slice.call(e,0)}
  function t (line 1) | function t(e){this.operators=e}
  function t (line 1) | function t(e){this.type=e}
  function r (line 1) | function r(e,r,a){t.call(this,"args");this.index=e;this.min=r;this.max=a}
  function a (line 1) | function a(e){t.call(this,"literal");this.number=e;this.min=e;this.max=e}
  function i (line 1) | function i(e,r,a,i,n){t.call(this,"binary");this.op=e;this.arg1=r;this.a...
  function n (line 1) | function n(e,r){t.call(this,"max");this.arg=e;this.min=e.min;this.max=r}
  function s (line 1) | function s(e,r,a){t.call(this,"var");this.index=e;this.min=r;this.max=a}
  function o (line 1) | function o(e,r){t.call(this,"definition");this.variable=e;this.arg=r}
  function l (line 1) | function l(){this.parts=[]}
  function c (line 1) | function c(e,t){if(t.type==="literal"&&t.number===0){return e}if(e.type=...
  function h (line 1) | function h(e,t){if(t.type==="literal"){if(t.number===0){return new a(0)}...
  function u (line 1) | function u(e,t){if(t.type==="literal"){if(t.number===0){return e}else if...
  function f (line 1) | function f(e,t){if(e.min>=t){return new a(t)}else if(e.max<=t){return e}...
  function d (line 1) | function d(){}
  function t (line 1) | function t(e,t,r,a,i,n,s,o){var l=3;s=s!==1?0:s;var c=r/i;var h=a/n;var ...
  function r (line 1) | function r(){i("should not call ColorSpace constructor")}
  method gray (line 1) | get gray(){return l(this,"gray",new b)}
  method rgb (line 1) | get rgb(){return l(this,"rgb",new y)}
  method cmyk (line 1) | get cmyk(){return l(this,"cmyk",new k)}
  function t (line 1) | function t(e,t,r){this.name="Alternate";this.numComps=e;this.defaultColo...
  function t (line 1) | function t(e){this.name="Pattern";this.base=e}
  function t (line 1) | function t(e,t,r){this.name="Indexed";this.numComps=1;this.defaultColor=...
  function t (line 1) | function t(){this.name="DeviceGray";this.numComps=1;this.defaultColor=ne...
  function t (line 1) | function t(){this.name="DeviceRGB";this.numComps=3;this.defaultColor=new...
  function t (line 1) | function t(e,t,r,a,i){var n=e[t+0]*r;var s=e[t+1]*r;var o=e[t+2]*r;var l...
  function r (line 1) | function r(){this.name="DeviceCMYK";this.numComps=4;this.defaultColor=ne...
  function t (line 1) | function t(e,t,r){this.name="CalGray";this.numComps=1;this.defaultColor=...
  function r (line 1) | function r(e,t,r,a,i,n){var s=t[r]*n;var o=Math.pow(s,e.G);var l=e.YW*o;...
  function u (line 1) | function u(e,t,r,a){this.name="CalRGB";this.numComps=3;this.defaultColor...
  function f (line 1) | function f(e,t,r){r[0]=e[0]*t[0]+e[1]*t[1]+e[2]*t[2];r[1]=e[3]*t[0]+e[4]...
  function d (line 1) | function d(e,t,r){r[0]=t[0]*1/e[0];r[1]=t[1]*1/e[1];r[2]=t[2]*1/e[2]}
  function v (line 1) | function v(e,t,r){var a=.95047;var i=1;var n=1.08883;r[0]=t[0]*a/e[0];r[...
  function p (line 1) | function p(e){if(e<=.0031308){return m(0,1,12.92*e)}return m(0,1,(1+.055...
  function m (line 1) | function m(e,t,r){return Math.max(e,Math.min(t,r))}
  function b (line 1) | function b(e){if(e<0){return-b(-e)}if(e>8){return Math.pow((e+16)/116,3)...
  function y (line 1) | function y(e,t,r){if(e[0]===0&&e[1]===0&&e[2]===0){r[0]=t[0];r[1]=t[1];r...
  function k (line 1) | function k(e,a,i){if(e[0]===1&&e[2]===1){i[0]=a[0];i[1]=a[1];i[2]=a[2];r...
  function w (line 1) | function w(e,a,i){var n=i;f(t,a,n);var s=o;v(e,n,s);f(r,s,i)}
  function C (line 1) | function C(e,t,r,i,n,o){var h=m(0,1,t[r]*o);var u=m(0,1,t[r+1]*o);var d=...
  function t (line 1) | function t(e,t,r){this.name="Lab";this.numComps=3;this.defaultColor=new ...
  function r (line 1) | function r(e){var t;if(e>=6/29){t=e*e*e}else{t=108/841*(e-4/29)}return t}
  function a (line 1) | function a(e,t,r,a){return r+e*(a-r)/t}
  function s (line 1) | function s(e,t,i,n,s,o){var l=t[i];var c=t[i+1];var h=t[i+2];if(n!==fals...
  function t (line 1) | function t(e,t){if(t&&t.canDecode(e)){return t.decode(e)}return Promise....
  function r (line 1) | function r(e,t,r,a){e=t+e*r;return e<0?0:e>a?a:e}
  function a (line 1) | function a(e,t,r,a,i,n){var s=i*n;var o=t<=8?new Uint8Array(s):t<=16?new...
  function i (line 1) | function i(e,t,r,a,n,s,o){this.image=r;var h=r.dict;if(h.has("Filter")){...
  method drawWidth (line 1) | get drawWidth(){return Math.max(this.width,this.smask&&this.smask.width|...
  method drawHeight (line 1) | get drawHeight(){return Math.max(this.height,this.smask&&this.smask.heig...
  function t (line 1) | function t(e,t,r){this.pdfManager=e;this.xref=t;this.catDict=t.getCatalo...
  method metadata (line 1) | get metadata(){var e=this.catDict.getRaw("Metadata");if(!P(e)){return y(...
  method toplevelPagesDict (line 1) | get toplevelPagesDict(){var e=this.catDict.get("Pages");h(O(e),"invalid ...
  method documentOutline (line 1) | get documentOutline(){var e=null;try{e=this.readDocumentOutline()}catch(...
  method numPages (line 1) | get numPages(){var e=this.toplevelPagesDict.get("Count");h(m(e),"page co...
  method destinations (line 1) | get destinations(){function e(e){return O(e)?e.get("D"):e}var t=this.xre...
  function r (line 1) | function r(e){return O(e)?e.get("D"):e}
  method pageLabels (line 1) | get pageLabels(){var e=null;try{e=this.readPageLabels()}catch(e){if(e in...
  method attachments (line 1) | get attachments(){var e=this.xref;var t=null,r;var a=this.catDict.get("N...
  method javaScript (line 1) | get javaScript(){var e=this.xref;var t=this.catDict.get("Names");var r=[...
  function o (line 1) | function o(){while(a.length){var e=a.pop();if(P(e)){n.fetchAsync(e).then...
  function a (line 1) | function a(e){var a=0;var i;return r.fetchAsync(e).then(function(r){if(E...
  function n (line 1) | function n(e){return a(e).then(function(e){if(!e){return i}var t=e[0];va...
  function r (line 1) | function r(e){if(e.indexOf("www.")===0){return"http://"+e}return e}
  function a (line 1) | function a(e){try{return w(e)}catch(t){return e}}
  function t (line 1) | function t(e,t){this.stream=e;this.pdfManager=t;this.entries=[];this.xre...
  function l (line 1) | function l(e,t){var i="",n=e[t];while(n!==r&&n!==a&&n!==s){if(++t>=e.len...
  function c (line 1) | function c(e,t,r){var a=r.length,i=e.length;var n=0;while(t<i){var s=0;w...
  function t (line 1) | function t(e,t){throw new Error("Cannot initialize NameOrNumberTree.")}
  function t (line 1) | function t(e,t){this.root=e;this.xref=t;this._type="Names"}
  function t (line 1) | function t(e,t){this.root=e;this.xref=t;this._type="Nums"}
  function t (line 1) | function t(e,t){if(!e||!O(e)){return}this.xref=t;this.root=e;if(e.has("F...
  function r (line 1) | function r(e){if(e.has("UF")){return e.get("UF")}else if(e.has("F")){ret...
  method filename (line 1) | get filename(){if(!this._filename&&this.root){var e=r(this.root)||"unnam...
  method content (line 1) | get content(){if(!this.contentAvailable){return null}if(!this.contentRef...
  method serializable (line 1) | get serializable(){return{filename:this.filename,content:this.content}}
  function e (line 1) | function e(e){return P(e)||O(e)||v(e)||M(e)}
  function t (line 1) | function t(t,r){var a;if(O(t)||M(t)){var i;if(O(t)){i=t.map}else{i=t.dic...
  function r (line 1) | function r(e,t,r){this.obj=e;this.keys=t;this.xref=r;this.refSet=null;th...
  function t (line 1) | function t(){c("should not call Pattern constructor")}
  function t (line 1) | function t(e,t,r,a){this.matrix=t;this.coordsArr=e.getArray("Coords");th...
  function t (line 1) | function t(e,t){this.stream=e;this.context=t;this.buffer=0;this.bufferLe...
  method hasData (line 1) | get hasData(){if(this.stream.end){return this.stream.pos<this.stream.end...
  function r (line 1) | function r(e,t){var r=e.coords;var a=e.colors;var i=[];var n=[];var s=0;...
  function a (line 1) | function a(e,t,r){var a=e.coords;var i=e.colors;var n=[];while(t.hasData...
  function t (line 1) | function t(e){var t=[];for(var r=0;r<=e;r++){var a=r/e,i=1-a;t.push(new ...
  function h (line 1) | function h(e,t){var r=e.figures[t];l(r.type==="patch","Unexpected patch ...
  function u (line 1) | function u(e,t){var r=e.coords;var a=e.colors;var i=new Int32Array(16);v...
  function p (line 1) | function p(e,t){var r=e.coords;var a=e.colors;var i=new Int32Array(16);v...
  function m (line 1) | function m(e){var t=e.coords[0][0],r=e.coords[0][1],a=t,i=r;for(var n=1,...
  function b (line 1) | function b(e){var t,r,a,i;var n=e.coords;var s=new Float32Array(n.length...
  function y (line 1) | function y(e,i,n,s){l(f(e),"Mesh data is not a stream");var o=e.dict;thi...
  function t (line 1) | function t(){this.type="Pattern"}
  function b (line 1) | function b(e,t,r){var a=t.getArray("Matrix");var i=t.getArray("BBox");va...
  function r (line 1) | function r(e,t,r,a){this.xref=e;this.resources=t;this.handler=r;this.for...
  function a (line 1) | function a(e,r,a,i,n,s,o){this.pdfManager=e;this.xref=r;this.handler=a;t...
  function s (line 1) | function s(){this.reset()}
  function n (line 1) | function n(){return Promise.resolve(new Se("g_font_error",new J("Font "+...
  function I (line 1) | function I(){if(u.initialized){return u}var e=x.font;if(!(e.loadedName i...
  function B (line 1) | function B(e){var t=0,r=e.length,a;while(t<r&&(a=e.charCodeAt(t))>=32&&a...
  function R (line 1) | function R(e){var t=e.str.join("");var r=ce(t,-1,e.vertical);return{str:...
  function P (line 1) | function P(e,t){return v.loadFont(e,t,p,a).then(function(e){x.font=e.fon...
  function E (line 1) | function E(e){var t=x.font;var r=I();var a=0;var i=0;var n=t.charsToGlyp...
  function M (line 1) | function M(e,t){if(e<u.fakeSpaceMin){return}if(e<u.fakeMultiSpaceMin){t....
  function D (line 1) | function D(){if(!u.initialized){return}u.width*=u.textAdvanceScale;u.hei...
  function t (line 1) | function t(e,t,r){this.loadedName=e;this.font=t;this.dict=r;this.type3Lo...
  function a (line 1) | function a(e){var t=[];var r=e.fnArray,a=e.argsArray;for(var i=0,n=e.len...
  function i (line 1) | function i(e,t,r){this.messageHandler=t;this.fnArray=[];this.argsArray=[...
  method length (line 1) | get length(){return this.argsArray.length}
  method totalLength (line 1) | get totalLength(){return this._totalLength+this.length}
  function t (line 1) | function t(e){this.state=e;this.stateStack=[]}
  function t (line 1) | function t(){this.ctm=new Float32Array(y);this.fontName=null;this.fontSi...
  function t (line 1) | function t(){this.ctm=new Float32Array(y);this.font=null;this.textRender...
  function r (line 1) | function r(e,r,a){this.opMap=t();this.parser=new X(new G(e,this.opMap),f...
  method savedStatesDepth (line 1) | get savedStatesDepth(){return this.stateManager.stateStack.length}
  function t (line 1) | function t(e,t,r){var a=e;for(var i=0,n=t.length-1;i<n;i++){var s=t[i];a...
  function r (line 1) | function r(e,t,r,a){var i=e+2;for(var n=0;n<t;n++){var s=a[i+4*n];var o=...
  function i (line 1) | function i(){}
  function T (line 1) | function T(){}
  function t (line 1) | function t(e,t,r){var a=f.getAxialAlignedBoundingBox(t,r);var i=a[0];var...
  function r (line 1) | function r(e){var t=e.get("AP");if(!k(t)){return}var r;var a=t.get("N");...
  function a (line 1) | function a(e){var t=e.dict;this.setFlags(t.get("F"));this.setRectangle(t...
  method viewable (line 1) | get viewable(){if(this.flags===0){return true}return this._isViewable(th...
  method printable (line 1) | get printable(){if(this.flags===0){return false}return this._isPrintable...
  function t (line 1) | function t(){this.width=1;this.style=o.SOLID;this.dashArray=[3];this.hor...
  function t (line 1) | function t(e){O.call(this,e);var t=e.dict;var r=this.data;r.annotationTy...
  function t (line 1) | function t(e){E.call(this,e);this.data.fieldValue=m(this.data.fieldValue...
  function t (line 1) | function t(e){E.call(this,e);this.data.checkBox=!this.hasFieldFlag(l.RAD...
  function t (line 1) | function t(e){E.call(this,e);this.data.options=[];var t=e.dict.get("Opt"...
  function r (line 1) | function r(e){O.call(this,e);this.data.annotationType=h.TEXT;if(this.dat...
  function t (line 1) | function t(e){O.call(this,e);var t=this.data;t.annotationType=h.LINK;A.p...
  function t (line 1) | function t(e){O.call(this,e);this.data.annotationType=h.POPUP;var t=e.di...
  function t (line 1) | function t(e){O.call(this,e);this.data.annotationType=h.HIGHLIGHT;this._...
  function t (line 1) | function t(e){O.call(this,e);this.data.annotationType=h.UNDERLINE;this._...
  function t (line 1) | function t(e){O.call(this,e);this.data.annotationType=h.SQUIGGLY;this._p...
  function t (line 1) | function t(e){O.call(this,e);this.data.annotationType=h.STRIKEOUT;this._...
  function t (line 1) | function t(e){O.call(this,e);var t=new B(e.dict.get("FS"),e.xref);this.d...
  function a (line 1) | function a(e,t,r,a,i,n){this.pdfManager=e;this.pageIndex=r;this.pageDict...
  method content (line 1) | get content(){return this.getPageProp("Contents")}
  method resources (line 1) | get resources(){return b(this,"resources",this.getInheritedPageProp("Res...
  method mediaBox (line 1) | get mediaBox(){var e=this.getInheritedPageProp("MediaBox",true);if(!g(e)...
  method cropBox (line 1) | get cropBox(){var e=this.getInheritedPageProp("CropBox",true);if(!g(e)||...
  method userUnit (line 1) | get userUnit(){var e=this.getPageProp("UserUnit");if(!p(e)||e<=0){e=t}re...
  method view (line 1) | get view(){var e=this.mediaBox,t=this.cropBox;if(e===t){return b(this,"v...
  method rotate (line 1) | get rotate(){var e=this.getInheritedPageProp("Rotate")||0;if(e%90!==0){e...
  method annotations (line 1) | get annotations(){var e=[];var t=this.getInheritedPageProp("Annots")||[]...
  function a (line 1) | function a(e,t){var r;if(I(t)){r=t}else if(v(t)){r=new R(t)}else{f("PDFD...
  function i (line 1) | function i(e,t,r,a){var i=e.pos;var n=e.end;var s=[];if(i+r>n){r=n-i}for...
  method entries (line 1) | get entries(){return b(this,"entries",{Title:m,Author:m,Subject:m,Keywor...
  method linearization (line 1) | get linearization(){var e=null;if(this.stream.length){try{e=M.create(thi...
  method startXRef (line 1) | get startXRef(){var e=this.stream;var t=0;var r=this.linearization;if(r)...
  method mainXRefEntriesOffset (line 1) | get mainXRefEntriesOffset(){var e=0;var t=this.linearization;if(t){e=t.m...
  method numPages (line 1) | get numPages(){var e=this.linearization;var t=e?e.numPages:this.catalog....
  method documentInfo (line 1) | get documentInfo(){var e={PDFFormatVersion:this.pdfFormatVersion,IsAcroF...
  method fingerprint (line 1) | get fingerprint(){var e=this.xref,a,i="";var n=e.trailer.get("ID");if(n&...
  function t (line 1) | function t(){throw new Error("Cannot initialize BaseManagerManager")}
  method docId (line 1) | get docId(){return this._docId}
  method password (line 1) | get password(){return this._password}
  method docBaseUrl (line 1) | get docBaseUrl(){var e=null;if(this._docBaseUrl){var t=s(this._docBaseUr...
  function t (line 1) | function t(e,t,r,a,i){this._docId=e;this._password=r;this._docBaseUrl=i;...
  function t (line 1) | function t(e,t,r,a,i){this._docId=e;this._password=r.password;this._docB...
  function s (line 1) | function s(){try{var o;var l=t[r];if(typeof l==="function"){o=l.apply(t,...
  function t (line 1) | function t(e){this.name=e;this.terminated=false;this._capability=p()}
  method finished (line 1) | get finished(){return this._capability.promise}
  function t (line 1) | function t(e,t){this._queuedChunks=[];var r=e.initialData;if(r&&r.length...
  function r (line 1) | function r(e,t){this._stream=e;this._done=false;this._queuedChunks=t||[]...
  method headersReady (line 1) | get headersReady(){return this._headersReady}
  method isRangeSupported (line 1) | get isRangeSupported(){return this._stream._isRangeSupported}
  method isStreamingSupported (line 1) | get isStreamingSupported(){return this._stream._isStreamingSupported}
  method contentLength (line 1) | get contentLength(){return this._stream._contentLength}
  function a (line 1) | function a(e,t,r){this._stream=e;this._begin=t;this._end=r;this._queuedC...
  method isStreamingSupported (line 1) | get isStreamingSupported(){return false}
  function R (line 1) | function R(e){B=e}
  function P (line 1) | function P(){if(h){throw new Error("Worker was terminated")}}
  function E (line 1) | function E(e){k.push(e)}
  function M (line 1) | function M(e){e.finish();var t=k.indexOf(e);k.splice(t,1)}
  function L (line 1) | function L(e){var t=p();var r=function e(){var r=a.ensureDoc("numPages")...
  function D (line 1) | function D(e,t){var r=p();var a;var i=e.source;if(i.data){try{a=new C(S,...
  function F (line 1) | function F(e){function t(e){P();O.send("GetDoc",{pdfInfo:e})}function r(...
  function O (line 1) | function O(){if(!("console"in S)){var e={};var t={log:function e(){var t...
  function n (line 1) | function n(e,t){this.url=e;t=t||{};this.isHttp=/^https?:/i.test(e);this....
  function s (line 1) | function s(e){var t=e.response;if(typeof t!=="string"){return t}var r=t....
  function d (line 1) | function d(e){this._options=e;var t=e.source;this._manager=new n(t.url,{...
  function g (line 1) | function g(e,t){this._manager=e;var r=t.source;var a={onHeadersReceived:...
  method isRangeSupported (line 1) | get isRangeSupported(){return this._isRangeSupported}
  method isStreamingSupported (line 1) | get isStreamingSupported(){return this._isStreamingSupported}
  method contentLength (line 1) | get contentLength(){return this._contentLength}
  method headersReady (line 1) | get headersReady(){return this._headersReceivedCapability.promise}
  function v (line 1) | function v(e,t,r){this._manager=e;var a={onDone:this._onDone.bind(this),...
  method isStreamingSupported (line 1) | get isStreamingSupported(){return false}

FILE: src/3dflipbook.js
  function __webpack_require__ (line 6) | function __webpack_require__(moduleId) {
  function _classCallCheck (line 137) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function BaseMathUtils (line 140) | function BaseMathUtils() {
  function _interopRequireDefault (line 443) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 445) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 447) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 449) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function MathUtils (line 454) | function MathUtils() {
  function _classCallCheck (line 534) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Utils (line 537) | function Utils() {
  function split (line 542) | function split(s) {
  function _interopRequireDefault (line 600) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 602) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function ImageBase (line 605) | function ImageBase(context, width, height, color) {
  function _classCallCheck (line 718) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function EventConverter (line 727) | function EventConverter(wnd, doc) {
  function _classCallCheck (line 878) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function GraphUtils (line 881) | function GraphUtils() {
  function _interopRequireDefault (line 952) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 954) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function ImageFactory (line 957) | function ImageFactory(context, cache) {
  function _interopRequireDefault (line 1020) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 1022) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function BookPropsBuilder (line 1025) | function BookPropsBuilder(onReady) {
  function _interopRequireDefault (line 1113) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 1115) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function SheetBlock (line 1120) | function SheetBlock(visual, p, first, last) {
  function props (line 1661) | function props() {
  function _classCallCheck (line 1750) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 1752) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 1754) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function CSS3DObject (line 1759) | function CSS3DObject() {
  function CSS3DSprite (line 1789) | function CSS3DSprite(element) {
  function epsilon (line 1850) | function epsilon(value) {
  function getCameraCSSMatrix (line 1855) | function getCameraCSSMatrix(matrix) {
  function getObjectCSSMatrix (line 1862) | function getObjectCSSMatrix(matrix, cameraCSSMatrix) {
  function renderObject (line 1875) | function renderObject(object, camera, cameraCSSMatrix) {
  function zOrder (line 1937) | function zOrder(scene) {
  function _classCallCheck (line 2020) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 2022) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 2024) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function CSSLayer (line 2040) | function CSSLayer(width, height, props) {
  function _classCallCheck (line 2160) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Cache (line 2163) | function Cache() {
  function _classCallCheck (line 2320) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 2322) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 2324) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function Controller (line 2329) | function Controller() {
  function _interopRequireDefault (line 2367) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 2369) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 2371) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 2373) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function CustomEventConverter (line 2383) | function CustomEventConverter(wnd, doc) {
  function _interopRequireDefault (line 2457) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 2459) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Finder (line 2550) | function Finder(strs, pattern, props) {
  function _interopRequireDefault (line 2599) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 2601) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Pdf (line 2608) | function Pdf(src, loadingProgress) {
  function _classCallCheck (line 2738) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function ThreeEventConverterFs (line 2749) | function ThreeEventConverterFs(visualWorld) {
  function _interopRequireDefault (line 2798) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 2800) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function ThreeUtils (line 2803) | function ThreeUtils() {
  function _classCallCheck (line 2918) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Target (line 2921) | function Target() {
  function _interopRequireDefault (line 3009) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 3257) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function AutoNavigator (line 3260) | function AutoNavigator(context, bookCtrl) {
  function _interopRequireDefault (line 3330) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 3332) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Binder (line 3335) | function Binder(visual, p) {
  function _interopRequireDefault (line 3522) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 3524) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 3526) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 3528) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function Book (line 3554) | function Book(visual, sheets, pageCallback, props) {
  function _interopRequireDefault (line 4576) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 4578) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 4580) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 4582) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function BookController (line 4587) | function BookController(book, view, props) {
  function merge (line 5372) | function merge(first, second) {
  function _classCallCheck (line 5423) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function BookPrinter (line 5426) | function BookPrinter(context, book, styleSheet) {
  function _interopRequireDefault (line 5631) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 5633) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 5635) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 5637) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function BookView (line 5642) | function BookView(container, onLoad, template, handler) {
  function _interopRequireDefault (line 5752) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 5754) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 5756) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 5758) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function ClbBookPropsBuilder (line 5763) | function ClbBookPropsBuilder(context, pageCallback, pages, onReady) {
  function _interopRequireDefault (line 5811) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 5813) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 5815) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 5817) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function Cover (line 5822) | function Cover(visual, p, angle, state) {
  function _interopRequireDefault (line 5869) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 5871) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function CssLayersManager (line 5874) | function CssLayersManager(book) {
  function _interopRequireDefault (line 6056) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 6058) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function PageManager (line 6061) | function PageManager(visual, book, p) {
  function _interopRequireDefault (line 6592) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 6594) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 6596) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 6598) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function PdfBookPropsBuilder (line 6603) | function PdfBookPropsBuilder(src, onReady) {
  function _classCallCheck (line 6665) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function PdfLinksHandler (line 6668) | function PdfLinksHandler(pdf, ctrl, element) {
  function _interopRequireDefault (line 6757) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 6759) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function SearchEngine (line 6762) | function SearchEngine(pageCallback, pages) {
  function _interopRequireDefault (line 6877) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 6879) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function SheetCssLayer (line 6882) | function SheetCssLayer(visual, block, props) {
  function _interopRequireDefault (line 6940) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 6942) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function SheetPhysics (line 6977) | function SheetPhysics() {
  function _classCallCheck (line 7357) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function SoundsEnviroment (line 7360) | function SoundsEnviroment() {
  function _interopRequireDefault (line 7427) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 7429) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 7431) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 7433) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function TocController (line 7438) | function TocController(view, bookCtrl) {
  function _interopRequireDefault (line 7594) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function props (line 7731) | function props() {
  function _interopRequireDefault (line 7893) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 7895) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 7897) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 7899) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function BlankImage (line 7904) | function BlankImage(context, width, height, color) {
  function _classCallCheck (line 7935) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Bookmarks (line 7938) | function Bookmarks(container, items) {
  function _classCallCheck (line 8126) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Detector (line 8129) | function Detector() {
  function _classCallCheck (line 8196) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function DocMouseSimulator (line 8199) | function DocMouseSimulator(jFrame, element) {
  function _classCallCheck (line 8540) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function toSvg (line 8581) | function toSvg(node, options) {
  function toPixelData (line 8608) | function toPixelData(node, options) {
  function toPng (line 8619) | function toPng(node, options) {
  function toJpeg (line 8630) | function toJpeg(node, options) {
  function toBlob (line 8642) | function toBlob(node, options) {
  function draw (line 8646) | function draw(domNode, options) {
  function cloneNode (line 8668) | function cloneNode(node, filter, root) {
  function embedFonts (line 8783) | function embedFonts(node) {
  function inlineImages (line 8792) | function inlineImages(node) {
  function makeSvgDataUri (line 8798) | function makeSvgDataUri(node, width, height) {
  function newUtil (line 8807) | function newUtil() {
  function newInliner (line 9079) | function newInliner() {
  function newFontFaces (line 9139) | function newFontFaces() {
  function newImages (line 9196) | function newImages() {
  function _classCallCheck (line 9261) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Drag (line 9264) | function Drag(wnd, doc, visualWorld) {
  function _classCallCheck (line 9391) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function EventsToActions (line 9418) | function EventsToActions(element, actions) {
  function _classCallCheck (line 9714) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function FullScreen (line 9717) | function FullScreen() {
  function _interopRequireDefault (line 9815) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 9817) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 9819) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 9821) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function InteractiveImage (line 9826) | function InteractiveImage(context, width, height, color, src, cache, inj...
  function _interopRequireDefault (line 9949) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 9951) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function LoadingAnimation (line 10067) | function LoadingAnimation(width, height, color) {
  function _classCallCheck (line 10099) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function LoadingController (line 10102) | function LoadingController(view) {
  function _interopRequireDefault (line 10198) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 10200) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 10202) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 10204) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function MouseEventConverter (line 10209) | function MouseEventConverter(wnd, doc, element) {
  function _interopRequireDefault (line 10250) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 10252) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Object3DWatcher (line 10255) | function Object3DWatcher(visual, boundBoxClb) {
  function _classCallCheck (line 10509) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 10511) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 10513) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function Orbit (line 10518) | function Orbit(object, domElement) {
  function _interopRequireDefault (line 10887) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 10889) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 10891) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 10893) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function PdfImage (line 10898) | function PdfImage(context, width, height, color, pdf, n) {
  function _classCallCheck (line 11172) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Search (line 11175) | function Search(container, pages) {
  function _interopRequireDefault (line 11281) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 11283) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 11285) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 11287) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function StaticImage (line 11292) | function StaticImage(context, width, height, color, src) {
  function _classCallCheck (line 11344) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function TextureAnimator (line 11347) | function TextureAnimator(img, tilesHoriz, tilesVert, numTiles, tileDispD...
  function _interopRequireDefault (line 11422) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 11424) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 11426) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 11428) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function ThreeMouseEventConverter (line 11433) | function ThreeMouseEventConverter(wnd, doc, visualWorld, test) {
  function _interopRequireDefault (line 11482) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 11484) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 11486) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 11488) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function ThreeTouchEventConverter (line 11493) | function ThreeTouchEventConverter(wnd, doc, visualWorld, test) {
  function _interopRequireDefault (line 11541) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 11543) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function Thumbnails (line 11546) | function Thumbnails(context, container, thumbnailsClb, size) {
  function _interopRequireDefault (line 11730) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 11732) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 11734) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 11736) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function TouchConverter (line 11741) | function TouchConverter(wnd, doc, element) {
  function _classCallCheck (line 11778) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function View (line 12078) | function View(parentContainer, onLoad) {
  function _interopRequireDefault (line 12521) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 12523) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 12525) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 12527) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function VisualWorld (line 12532) | function VisualWorld(wnd, doc, container) {
  function _interopRequireDefault (line 12881) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 12883) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 12885) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 12887) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function WidgetController (line 12892) | function WidgetController(view) {
  function _interopRequireDefault (line 12947) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 12949) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 12951) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 12953) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function CircleTarget (line 12958) | function CircleTarget(x, y, r) {
  function _interopRequireDefault (line 13008) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
  function _classCallCheck (line 13010) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
  function _possibleConstructorReturn (line 13012) | function _possibleConstructorReturn(self, call) { if (!self) { throw new...
  function _inherits (line 13014) | function _inherits(subClass, superClass) { if (typeof superClass !== "fu...
  function PolyTarget (line 13019) | function PolyTarget(poly) {
  function e (line 13045) | function e(a){c.appendChild(a.dom);return a}
  function u (line 13045) | function u(a){for(var d=0;d<c.children.length;d++)c.children[d].style.di...
  function handler (line 13150) | function handler(event) {
  function nullLowestDelta (line 13263) | function nullLowestDelta() {
  function shouldAdjustOldDeltas (line 13267) | function shouldAdjustOldDeltas(orgEvent, absDelta) {
Condensed preview — 17 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,312K chars).
[
  {
    "path": ".gitignore",
    "chars": 14,
    "preview": "/node_modules\n"
  },
  {
    "path": "LICENSE",
    "chars": 18046,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
  },
  {
    "path": "README.md",
    "chars": 9038,
    "preview": "<h1>3D FlipBook jQuery plugin</h1>\n\n<p>\n  <a href=\"http://3dflipbook.net/\">3D FlipBook</a> is jQuery plugin that allows "
  },
  {
    "path": "css/black-book-view.css",
    "chars": 10294,
    "preview": ".flip-book {\n  position: relative;\n  height: 100%;\n}\n\n.flip-book .view {\n  text-align: center;\n  height: 100%;\n}\n\n.flip-"
  },
  {
    "path": "css/short-black-book-view.css",
    "chars": 10407,
    "preview": ".flip-book {\n  position: relative;\n  height: 100%;\n}\n\n.flip-book .view {\n  text-align: center;\n  height: 100%;\n}\n\n.flip-"
  },
  {
    "path": "css/short-white-book-view.css",
    "chars": 10367,
    "preview": ".flip-book {\n  position: relative;\n  height: 100%;\n}\n\n.flip-book .view {\n  position: relative;\n  height: 100%;\n}\n\n.flip-"
  },
  {
    "path": "css/white-book-view.css",
    "chars": 10276,
    "preview": ".flip-book {\n  position: relative;\n  height: 100%;\n}\n\n.flip-book .view {\n  text-align: center;\n  height: 100%;\n}\n\n.flip-"
  },
  {
    "path": "dist/flip-book.js",
    "chars": 1180992,
    "preview": "/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/**"
  },
  {
    "path": "index.js",
    "chars": 152,
    "preview": "import {$, html2canvas, THREE, PDFJS} from './src/libs';\nrequire('./src/'+(ENVIROMENT.debug? '3dflipbook.js': '3dflipboo"
  },
  {
    "path": "js/default-book-view.js",
    "chars": 3281,
    "preview": "function init(container) {\n  var instance;\n  if(window.jQuery) {\n    var $ = window.jQuery;\n    instance = {\n      float"
  },
  {
    "path": "js/pdf.worker.js",
    "chars": 644197,
    "preview": "(function(e,t){\"use strict\";if(typeof define===\"function\"&&define.amd){define(\"pdfjs-dist/build/pdf.worker\",[\"exports\"],"
  },
  {
    "path": "package.json",
    "chars": 1398,
    "preview": "{\n  \"name\": \"flip-book\",\n  \"version\": \"1.9.9\",\n  \"description\": \"3D FlipBook allows to browse images, PDFs or HTMLs as a"
  },
  {
    "path": "src/3dflipbook.js",
    "chars": 1332864,
    "preview": "/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/**"
  },
  {
    "path": "src/libs.js",
    "chars": 379,
    "preview": "const _$ = GLOBAL_LIBS.jQuery? window.jQuery: require('jquery'),\n      _html2canvas = GLOBAL_LIBS.html2canvas? window.ht"
  },
  {
    "path": "templates/default-book-view.html",
    "chars": 4907,
    "preview": "<div id=\"fb3d-ctx\" class=\"flip-book\">\n  <div class=\"view\">\n    <div class=\"fnav\">\n      <div class=\"prev\">\n        <a cl"
  },
  {
    "path": "webpack.config.js",
    "chars": 1597,
    "preview": "var webpack = require('webpack');\nvar path = require('path');\n\nmodule.exports = function(env) {\n  var debug = false;\n  i"
  }
]

// ... and 1 more files (download for full content)

About this extraction

This page contains the full source code of the iberezansky/flip-book-jquery GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 17 files (3.1 MB), approximately 810.3k tokens, and a symbol index with 1045 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!