.alignnone { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 4em; line-height: 1.2; max-width: 100%; text-indent: 0; width: 11.83em; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; background-color: #fbfbfb; box-sizing: border-box; display: block; font-size: 1em; padding-left: 0; padding-right: 0; margin: 0 5pt } .calibre1 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; -webkit-transform: none; box-sizing: border-box; clear: both; color: #333; display: block; font-family: Georgia, "Droid Serif", Times, serif; font-style: normal; font-weight: 400; margin-bottom: 0; margin-top: 0; max-width: 37em; min-height: 450px; position: relative; width: 100%; z-index: 10; padding: 1.25rem; border: #ddd solid 0 } .calibre2 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; display: block; text-indent: 0; word-break: break-word; word-wrap: break-word } .calibre3 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; font-style: normal; font-weight: 700; text-indent: 0; word-break: break-word; word-wrap: break-word } .calibre4 { -moz-box-sizing: border-box; -moz-hyphens: auto; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-hyphens: auto; -webkit-tap-highlight-color: transparent; box-sizing: border-box; display: block; font-family: inherit; font-size: 1em; hyphens: auto; line-height: 1.2; text-align: left; text-indent: 0; word-break: break-word; word-wrap: break-word; padding: 0; margin: 0.75em 0 1.25em } .calibre5 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; text-indent: 0; word-break: break-word; word-wrap: break-word } .calibre6 { -moz-box-sizing: border-box; -moz-hyphens: auto; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-hyphens: auto; -webkit-tap-highlight-color: transparent; box-sizing: border-box; display: block; font-family: inherit; font-size: 0.625em; hyphens: auto; line-height: 1.2; text-align: left; text-indent: 0; word-break: break-word; word-wrap: break-word; padding: 0; margin: 0.75em 0 1.25em } .calibre7 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; font-style: normal; font-weight: 700; line-height: 1.2; text-indent: 0; word-break: break-word; word-wrap: break-word } .calibre8 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; display: block; line-height: 1.2; text-indent: 0; word-break: break-word; word-wrap: break-word } .calibre9 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; line-height: 1.2; text-indent: 0; word-break: break-word; word-wrap: break-word } .calibre10 { -moz-box-sizing: border-box; -moz-transition: border-bottom 0.3s ease; -o-transition: color 0.2s ease-out; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; -webkit-transition: border-bottom 0.3s ease; box-sizing: border-box; color: #070707; font-family: monospace; font-size: 1em; font-weight: normal; line-height: 1.2; text-decoration: none; text-indent: 0; transition: border-bottom 0.3s ease; word-break: break-all; word-wrap: break-word; border-bottom: #bbb dashed 1px } .calibre11 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 7.58em; max-width: 100%; text-indent: 0; width: 24.58em; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre12 { -moz-box-sizing: border-box; -moz-transition: border-bottom 0.3s ease; -o-transition: color 0.2s ease-out; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; -webkit-transition: border-bottom 0.3s ease; box-sizing: border-box; color: #070707; font-family: monospace; font-size: 0.75em; font-weight: normal; text-decoration: none; text-indent: 0; transition: border-bottom 0.3s ease; word-break: break-all; word-wrap: break-word; border-bottom: #bbb dashed 1px } .calibre13 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; display: block; font-weight: normal; list-style-image: none; list-style-position: outside; list-style-type: disc; margin-bottom: 2em; margin-right: 0; margin-top: 1.5em; padding-bottom: 0; padding-right: 0; padding-top: 0; text-indent: 0; word-break: break-word; word-wrap: break-word } .calibre14 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; display: list-item; line-height: 1.5; list-style-image: none; list-style-position: outside; list-style-type: disc; text-indent: 0; word-break: break-word; word-wrap: break-word; padding: 0; margin: 0.5em 0 0.65em } .calibre15 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: monospace; font-size: 0.75em; font-weight: normal; text-indent: 0; word-break: break-word; word-wrap: break-word } .calibre16 { -moz-box-sizing: border-box; -moz-hyphens: auto; -ms-word-break: break-all; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-hyphens: auto; -webkit-tap-highlight-color: transparent; background-color: transparent; box-sizing: border-box; color: #404040; display: block; font-family: "source sans pro", sans-serif, AvenirNextCondensed-Medium, HelveticaNeue-CondensedBold, "Droid Sans", Helvetica, Arial, sans-serif; font-size: 2em; font-style: normal; font-weight: bold; hyphens: auto; line-height: 1.2; text-indent: 0; word-break: break-word; word-wrap: break-word; padding: 0; margin: 1.5em 0 0.35em } .calibre17 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; display: block; font-weight: normal; list-style-image: none; list-style-position: outside; list-style-type: none; margin-bottom: 2em; margin-right: 0; margin-top: 1.5em; padding-bottom: 0; padding-right: 0; padding-top: 0; text-indent: 0; word-break: break-word; word-wrap: break-word } .calibre18 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; display: block; margin-top: 5em; text-indent: 0; word-break: break-word; word-wrap: break-word } .calibre19 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; font-style: italic; line-height: 1.2; text-indent: 0; word-break: break-word; word-wrap: break-word } .calibre20 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-hyphens: none; -webkit-tap-highlight-color: transparent; background-color: #fbfbfb; box-sizing: border-box; color: #404040; display: block; font-family: monospace; font-size: 0.83333em; font-weight: normal; line-height: 1.5em; overflow: unset; overflow-x: unset; overflow-y: unset; text-indent: 0; white-space: pre-wrap; word-break: keep-all; word-wrap: initial; padding: 1em 2em 1em 0.3em; border-top: #DDD solid 1px; border-bottom: #DDD solid 1px; border-left: black solid 1px; margin: 0 0 0.01em 1.25em } .calibre21 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: monospace; font-size: 1em; font-weight: normal; text-indent: 0; word-break: break-word; word-wrap: break-word } .calibre22 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 24.67em; max-width: 100%; text-indent: 0; width: 18.58em; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre23 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 22.92em; max-width: 100%; text-indent: 0; width: 27.67em; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre24 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-hyphens: none; -webkit-tap-highlight-color: transparent; background-color: #fbfbfb; box-sizing: border-box; color: #404040; display: block; font-family: monospace; font-size: 0.83333em; font-weight: normal; line-height: 1.5em; overflow: unset; overflow-x: unset; overflow-y: unset; text-indent: 0; white-space: pre-wrap; word-break: keep-all; word-wrap: initial; padding: 1em 2em 1em 60px; border-top: #DDD solid 1px; border-bottom: #DDD solid 1px; border-left: black solid 1px; margin: 0 0 0.01em 1.25em } .calibre25 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 17.58em; max-width: 100%; text-indent: 0; width: 35.25em; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre26 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 25.92em; max-width: 100%; text-indent: 0; width: 23.75em; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre27 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 760px; max-width: 100%; text-indent: 0; width: 1276px; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre28 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 1024px; max-width: 100%; text-indent: 0; width: 1901px; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre29 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; font-style: italic; text-indent: 0; word-break: break-word; word-wrap: break-word } .calibre30 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 25em; max-width: 100%; text-indent: 0; width: 37.33em; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre31 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 21.58em; max-width: 100%; text-indent: 0; width: 32.17em; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre32 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 33.58em; max-width: 100%; text-indent: 0; width: 36.33em; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre33 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 634px; max-width: 100%; text-indent: 0; width: 1081px; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre34 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 756px; max-width: 100%; text-indent: 0; width: 962px; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre35 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 506px; max-width: 100%; text-indent: 0; width: 843px; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre36 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 587px; max-width: 100%; text-indent: 0; width: 1056px; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre37 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 36.08em; max-width: 100%; text-indent: 0; width: 25.5em; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre38 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 867px; max-width: 100%; text-indent: 0; width: 1250px; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre39 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 751px; max-width: 100%; text-indent: 0; width: 982px; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre40 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 33.25em; max-width: 100%; text-indent: 0; width: 39.83em; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre41 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 31.5em; max-width: 100%; text-indent: 0; width: 37.75em; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .calibre42 { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; height: 13.25em; max-width: 100%; text-indent: 0; width: 10.75em; word-break: break-word; word-wrap: break-word; border: currentColor none 0 } .cdpaligncenter { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; display: block; font-family: inherit; text-align: center; text-indent: 0; width: 100%; word-break: break-word; word-wrap: break-word; padding: 0; margin: 0.01em 0 } .cdpalignleft { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; display: block; font-family: inherit; text-align: left; text-indent: 0; width: 100%; word-break: break-word; word-wrap: break-word; padding: 0; margin: 0.01em 0 } .chapter { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; display: list-item; line-height: 1.5; list-style-image: none; list-style-position: outside; list-style-type: decimal; text-indent: 0; word-break: break-word; word-wrap: break-word; padding: 0; margin: 0 } .front-matter { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; display: list-item; line-height: 1.5; list-style-image: none; list-style-position: outside; list-style-type: none; text-indent: 0; word-break: break-word; word-wrap: break-word; padding: 0; margin: 0 } .header-title { -moz-box-sizing: border-box; -moz-hyphens: auto; -ms-word-break: break-all; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-hyphens: auto; -webkit-tap-highlight-color: transparent; background-color: transparent; box-sizing: border-box; color: #404040; display: block; font-family: "source sans pro", sans-serif, AvenirNextCondensed-Medium, HelveticaNeue-CondensedBold, "Droid Sans", Helvetica, Arial, sans-serif; font-size: 2em; font-style: normal; font-weight: bold; hyphens: auto; line-height: 1.1; text-indent: 0; word-break: break-word; word-wrap: break-word; padding: 0; margin: 1.5em 0 0.35em } .packt_infobox { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; background-image: url(assets/98015da6-0c3b-4ec3-824b-e89633e66753.png); background-position: left center; background-repeat: no-repeat; background-size: 2.5em; box-sizing: border-box; color: black; display: block; font-family: inherit; font-size: 0.625em; font-style: italic; font-weight: normal; min-height: 2.5em; text-indent: 0; word-break: break-word; word-wrap: break-word; padding: 0 0 0 3em; margin: 0 1.25em } .packt_quote { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; color: black; display: block; font-family: inherit; font-size: 0.625em; font-style: italic; font-weight: normal; text-indent: 0; word-break: break-word; word-wrap: break-word; padding: 0; margin: 0 } .packt_tip { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; background-image: url(assets/86abf433-62ed-420b-bf75-9473cec3b85f.png); background-position: left center; background-repeat: no-repeat; background-size: 2.5em; box-sizing: border-box; color: black; display: block; font-family: inherit; font-size: 0.625em; font-style: italic; font-weight: normal; min-height: 2.5em; text-indent: 0; word-break: break-word; word-wrap: break-word; padding: 0 0 0 3em; margin: 0 1.25em } .title-page-name { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; box-sizing: border-box; display: block; font-family: inherit; text-indent: 0; word-break: break-word; word-wrap: break-word; padding: 0; margin: 0 } .pcalibre:visited { -moz-transition: border-bottom 0.3s ease; -webkit-transition: border-bottom 0.3s ease; color: #070707; text-decoration: none; transition: border-bottom 0.3s ease; border-bottom: #bbb dashed 1px } .pcalibre2:link { -moz-transition: border-bottom 0.3s ease; -webkit-transition: border-bottom 0.3s ease; color: #070707; text-decoration: none; transition: border-bottom 0.3s ease; border-bottom: #bbb dashed 1px } .pcalibre3:focus { border-bottom: #333 dashed 1px } .pcalibre1:hover { border-bottom: #333 dashed 1px }