From 2a32b11ba85d156d7e148c142e9ed1a545df3601 Mon Sep 17 00:00:00 2001 From: Nicolas Delsaux Date: Mon, 3 Oct 2022 21:19:17 +0200 Subject: [PATCH] There are times where things are quite hard to accept. Nevertheless, some things have to be done. --- aadarchi-maven-plugin/pom.xml | 155 +- .../main/resources/META-INF/gems/.jrubydir | 8 + .../resources/META-INF/gems/gems/.jrubydir | 4 + .../gems/asciidoctor-kroki-0.5.0/.jrubydir | 9 + .../gems/asciidoctor-kroki-0.5.0/.rubocop.yml | 26 + .../asciidoctor-kroki-0.5.0/.ruby-version | 1 + .../gems/gems/asciidoctor-kroki-0.5.0/Gemfile | 5 + .../gems/asciidoctor-kroki-0.5.0/Gemfile.lock | 52 + .../gems/asciidoctor-kroki-0.5.0/Rakefile | 5 + .../asciidoctor-kroki.gemspec | 26 + .../asciidoctor-kroki-0.5.0/lib/.jrubydir | 4 + .../lib/asciidoctor-kroki.rb | 5 + .../lib/asciidoctor/.jrubydir | 3 + .../lib/asciidoctor/extensions/.jrubydir | 4 + .../extensions/asciidoctor_kroki.rb | 11 + .../extensions/asciidoctor_kroki/.jrubydir | 3 + .../extensions/asciidoctor_kroki/extension.rb | 385 +++ .../asciidoctor-kroki-0.5.0/spec/.jrubydir | 9 + .../asciidoctor-kroki-0.5.0/spec/.rubocop.yml | 5 + .../asciidoctor_kroki_block_macro_spec.rb | 128 + .../spec/asciidoctor_kroki_client_spec.rb | 91 + .../spec/asciidoctor_kroki_diagram_spec.rb | 61 + .../spec/asciidoctor_kroki_spec.rb | 160 ++ .../spec/fixtures/.jrubydir | 4 + .../spec/fixtures/alice.puml | 1 + .../spec/fixtures/config.puml | 1 + .../spec/require_spec.rb | 11 + .../spec/rspec_helper.rb | 10 + .../asciidoctor-kroki-0.5.0/tasks/.jrubydir | 5 + .../tasks/bundler.rake | 7 + .../asciidoctor-kroki-0.5.0/tasks/lint.rake | 5 + .../asciidoctor-kroki-0.5.0/tasks/rspec.rake | 8 + .../gems/asciidoctor-revealjs-4.1.0/.jrubydir | 11 + .../gems/asciidoctor-revealjs-4.1.0/Gemfile | 6 + .../asciidoctor-revealjs-4.1.0/LICENSE.adoc | 22 + .../asciidoctor-revealjs-4.1.0/README.adoc | 1388 ++++++++++ .../gems/asciidoctor-revealjs-4.1.0/Rakefile | 161 ++ .../asciidoctor-revealjs.gemspec | 53 + .../examples/.jrubydir | 83 + .../examples/README.adoc | 17 + .../examples/a11y-dark.css | 99 + .../examples/admonitions-icons.adoc | 37 + .../examples/admonitions.adoc | 38 + .../examples/autoslide.adoc | 22 + .../examples/background-color.adoc | 45 + .../examples/background-color.css | 18 + .../examples/concealed-slide-titles.adoc | 20 + .../examples/custom-layout.adoc | 10 + .../examples/customcss.adoc | 9 + .../examples/customcss.css | 8 + .../examples/data-attributes.adoc | 245 ++ .../examples/data-background-newstyle.adoc | 63 + .../examples/data-background-oldstyle.adoc | 44 + .../examples/docinfo-footer-revealjs.html | 10 + .../examples/docinfo-revealjs.html | 7 + .../font-awesome-specific-version.adoc | 11 + .../examples/font-awesome.adoc | 43 + .../examples/font-awesome.css | 3 + .../examples/footnotes.adoc | 46 + .../examples/fragments.adoc | 44 + .../examples/fragments.css | 18 + .../examples/grid-layout-3x2.adoc | 50 + .../grid-layout-docinfo-revealjs.html | 11 + .../examples/grid-layout.adoc | 194 ++ .../examples/history-hash.adoc | 19 + .../examples/history-regression-tests.adoc | 44 + .../examples/history.adoc | 19 + .../examples/images.adoc | 51 + .../examples/images/.jrubydir | 13 + .../examples/images/70s.jpg | Bin 0 -> 74098 bytes .../examples/images/asciidoctor-logo.svg | 102 + .../examples/images/bio.jpg | Bin 0 -> 57942 bytes .../examples/images/cover.jpg | Bin 0 -> 97667 bytes .../examples/images/cute-cat-1.jpg | Bin 0 -> 46498 bytes .../examples/images/cute-cat-2.jpg | Bin 0 -> 31867 bytes .../examples/images/cute-cat-3.jpg | Bin 0 -> 50793 bytes .../flock-of-seagulls_daniel-simion.mp3 | Bin 0 -> 1778222 bytes .../examples/images/meme-2.jpg | Bin 0 -> 51782 bytes .../examples/images/meme-7.png | Bin 0 -> 826680 bytes .../examples/images/web_surfing_time.gif | Bin 0 -> 1021688 bytes .../examples/issue-grid-layout-images.adoc | 25 + .../examples/keyboard-shortcuts.adoc | 24 + .../examples/level-sections.adoc | 44 + .../examples/level-sectnums.adoc | 24 + .../examples/links-preview.adoc | 32 + .../examples/links.adoc | 39 + .../examples/mathjax-cdn.adoc | 21 + .../examples/mathjax.adoc | 20 + .../examples/multi-destination-content.adoc | 68 + .../examples/release-4.0.adoc | 192 ++ .../examples/release-4.0.css | 23 + .../examples/release-4.1.adoc | 133 + .../examples/release-4.1.css | 50 + .../examples/revealjs-custom-theme.adoc | 10 + .../examples/revealjs-plugin-activation.adoc | 16 + .../examples/revealjs-plugins-conf.js | 10 + .../examples/revealjs-plugins.adoc | 16 + .../examples/revealjs-plugins.js | 2 + .../examples/revealjs-plugins/.jrubydir | 4 + .../revealjs-plugins/chalkboard/.jrubydir | 5 + .../revealjs-plugins/chalkboard/README.md | 124 + .../revealjs-plugins/chalkboard/chalkboard.js | 1288 ++++++++++ .../revealjs-plugins/chalkboard/img/.jrubydir | 7 + .../chalkboard/img/blackboard.png | Bin 0 -> 32733 bytes .../chalkboard/img/boardmarker.png | Bin 0 -> 2242 bytes .../revealjs-plugins/chalkboard/img/chalk.png | Bin 0 -> 5199 bytes .../chalkboard/img/sponge.png | Bin 0 -> 3612 bytes .../chalkboard/img/whiteboard.png | Bin 0 -> 34129 bytes .../revealjs-plugins/reveal.js-menu/.jrubydir | 10 + .../reveal.js-menu/CONTRIBUTING.md | 9 + .../revealjs-plugins/reveal.js-menu/LICENSE | 19 + .../revealjs-plugins/reveal.js-menu/README.md | 334 +++ .../reveal.js-menu/bower.json | 21 + .../reveal.js-menu/font-awesome/.jrubydir | 5 + .../reveal.js-menu/font-awesome/LICENSE.txt | 34 + .../reveal.js-menu/font-awesome/css/.jrubydir | 10 + .../reveal.js-menu/font-awesome/css/all.css | 5 + .../font-awesome/css/brands.css | 5 + .../font-awesome/css/fontawesome.css | 5 + .../font-awesome/css/regular.css | 5 + .../reveal.js-menu/font-awesome/css/solid.css | 5 + .../font-awesome/css/svg-with-js.css | 5 + .../font-awesome/css/v4-shims.css | 2170 ++++++++++++++++ .../font-awesome/css/v4-shims.min.css | 5 + .../font-awesome/webfonts/.jrubydir | 17 + .../font-awesome/webfonts/fa-brands-400.eot | Bin 0 -> 115052 bytes .../font-awesome/webfonts/fa-brands-400.svg | 1127 +++++++++ .../font-awesome/webfonts/fa-brands-400.ttf | Bin 0 -> 114816 bytes .../font-awesome/webfonts/fa-brands-400.woff | Bin 0 -> 73920 bytes .../font-awesome/webfonts/fa-brands-400.woff2 | Bin 0 -> 63376 bytes .../font-awesome/webfonts/fa-regular-400.eot | Bin 0 -> 40744 bytes .../font-awesome/webfonts/fa-regular-400.svg | 467 ++++ .../font-awesome/webfonts/fa-regular-400.ttf | Bin 0 -> 40516 bytes .../font-awesome/webfonts/fa-regular-400.woff | Bin 0 -> 18212 bytes .../webfonts/fa-regular-400.woff2 | Bin 0 -> 14952 bytes .../font-awesome/webfonts/fa-solid-900.eot | Bin 0 -> 160768 bytes .../font-awesome/webfonts/fa-solid-900.svg | 2231 +++++++++++++++++ .../font-awesome/webfonts/fa-solid-900.ttf | Bin 0 -> 160548 bytes .../font-awesome/webfonts/fa-solid-900.woff | Bin 0 -> 76632 bytes .../font-awesome/webfonts/fa-solid-900.woff2 | Bin 0 -> 59572 bytes .../revealjs-plugins/reveal.js-menu/menu.css | 345 +++ .../revealjs-plugins/reveal.js-menu/menu.js | 949 +++++++ .../reveal.js-menu/package.json | 22 + .../examples/revealjs-stretch.adoc | 22 + .../examples/slide-numbers-custom.adoc | 18 + .../examples/slide-numbers-for-speaker.adoc | 23 + .../examples/slide-numbers-no.adoc | 18 + .../examples/slide-numbers.adoc | 28 + .../examples/slide-state.adoc | 18 + .../examples/slide-state.css | 6 + .../examples/source-callouts.adoc | 28 + .../examples/source-coderay.adoc | 48 + .../examples/source-emphasis.adoc | 128 + .../examples/source-highlightjs-html.adoc | 22 + .../source-highlightjs-languages.adoc | 27 + .../examples/source-highlightjs.adoc | 108 + .../examples/source-prettify.adoc | 16 + .../examples/source-pygments.adoc | 44 + .../examples/source-rouge-docinfo.html | 8 + .../examples/source-rouge.adoc | 59 + .../examples/speaker-notes.adoc | 44 + .../examples/steps.adoc | 87 + .../examples/tables-styles.adoc | 141 ++ .../examples/text-alignments.adoc | 44 + .../examples/theme-custom.adoc | 33 + .../examples/theme-custom.css | 33 + .../examples/title-preamble.adoc | 10 + .../examples/title-slide-color.adoc | 10 + .../examples/title-slide-image.adoc | 13 + .../examples/title-slide-video.adoc | 13 + .../examples/title-subtitle-partitioning.adoc | 7 + .../examples/transitions.adoc | 20 + .../examples/vertical-slides.adoc | 24 + .../examples/video.adoc | 54 + .../examples/with-docinfo-shared.adoc | 13 + .../asciidoctor-revealjs-4.1.0/lib/.jrubydir | 5 + .../lib/asciidoctor-revealjs.rb | 10 + .../lib/asciidoctor-revealjs/.jrubydir | 5 + .../lib/asciidoctor-revealjs/converter.rb | 1726 +++++++++++++ .../lib/asciidoctor-revealjs/highlightjs.rb | 372 +++ .../lib/asciidoctor-revealjs/version.rb | 5 + .../lib/asciidoctor-templates-compiler.rb | 11 + .../templates/.jrubydir | 46 + .../templates/admonition.html.slim | 17 + .../templates/asciidoctor-compatibility.css | 390 +++ .../templates/audio.html.slim | 6 + .../templates/colist.html.slim | 20 + .../templates/dlist.html.slim | 53 + .../templates/document.html.slim | 263 ++ .../templates/embedded.html.slim | 9 + .../templates/example.html.slim | 4 + .../templates/floating_title.html.slim | 2 + .../templates/helpers.rb | 287 +++ .../templates/image.html.slim | 21 + .../templates/inline_anchor.html.slim | 13 + .../templates/inline_break.html.slim | 2 + .../templates/inline_button.html.slim | 2 + .../templates/inline_callout.html.slim | 7 + .../templates/inline_footnote.html.slim | 13 + .../templates/inline_image.html.slim | 21 + .../templates/inline_indexterm.html.slim | 2 + .../templates/inline_kbd.html.slim | 9 + .../templates/inline_menu.html.slim | 16 + .../templates/inline_quoted.html.slim | 14 + .../templates/listing.html.slim | 24 + .../templates/literal.html.slim | 4 + .../templates/notes.html.slim | 1 + .../templates/olist.html.slim | 9 + .../templates/open.html.slim | 18 + .../templates/outline.html.slim | 9 + .../templates/page_break.html.slim | 1 + .../templates/paragraph.html.slim | 7 + .../templates/pass.html.slim | 1 + .../templates/preamble.html.slim | 2 + .../templates/quote.html.slim | 14 + .../templates/ruler.html.slim | 1 + .../templates/section.html.slim | 99 + .../templates/sidebar.html.slim | 8 + .../templates/stem.html.slim | 10 + .../templates/stretch_nested_elements.js.slim | 65 + .../templates/table.html.slim | 46 + .../templates/thematic_break.html.slim | 1 + .../templates/title_slide.html.slim | 28 + .../templates/toc.html.slim | 17 + .../templates/ulist.html.slim | 25 + .../templates/verse.html.slim | 14 + .../templates/video.html.slim | 46 + .../META-INF/gems/specifications/.jrubydir | 4 + .../asciidoctor-kroki-0.5.0.gemspec | 42 + .../asciidoctor-revealjs-4.1.0.gemspec | 77 + .../.asciidoctorconfig.adoc | 12 + 231 files changed, 19308 insertions(+), 73 deletions(-) create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/.rubocop.yml create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/.ruby-version create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/Gemfile create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/Gemfile.lock create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/Rakefile create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/asciidoctor-kroki.gemspec create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor-kroki.rb create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/extensions/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/extensions/asciidoctor_kroki.rb create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/extensions/asciidoctor_kroki/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/extensions/asciidoctor_kroki/extension.rb create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/.rubocop.yml create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/asciidoctor_kroki_block_macro_spec.rb create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/asciidoctor_kroki_client_spec.rb create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/asciidoctor_kroki_diagram_spec.rb create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/asciidoctor_kroki_spec.rb create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/fixtures/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/fixtures/alice.puml create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/fixtures/config.puml create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/require_spec.rb create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/rspec_helper.rb create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/tasks/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/tasks/bundler.rake create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/tasks/lint.rake create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/tasks/rspec.rake create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/Gemfile create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/LICENSE.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/README.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/Rakefile create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/asciidoctor-revealjs.gemspec create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/README.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/a11y-dark.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/admonitions-icons.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/admonitions.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/autoslide.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/background-color.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/background-color.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/concealed-slide-titles.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/custom-layout.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/customcss.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/customcss.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/data-attributes.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/data-background-newstyle.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/data-background-oldstyle.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/docinfo-footer-revealjs.html create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/docinfo-revealjs.html create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/font-awesome-specific-version.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/font-awesome.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/font-awesome.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/footnotes.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/fragments.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/fragments.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/grid-layout-3x2.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/grid-layout-docinfo-revealjs.html create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/grid-layout.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/history-hash.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/history-regression-tests.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/history.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/70s.jpg create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/asciidoctor-logo.svg create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/bio.jpg create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/cover.jpg create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/cute-cat-1.jpg create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/cute-cat-2.jpg create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/cute-cat-3.jpg create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/flock-of-seagulls_daniel-simion.mp3 create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/meme-2.jpg create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/meme-7.png create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/web_surfing_time.gif create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/issue-grid-layout-images.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/keyboard-shortcuts.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/level-sections.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/level-sectnums.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/links-preview.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/links.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/mathjax-cdn.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/mathjax.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/multi-destination-content.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/release-4.0.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/release-4.0.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/release-4.1.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/release-4.1.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-custom-theme.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugin-activation.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins-conf.js create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins.js create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/chalkboard/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/chalkboard/README.md create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/chalkboard/chalkboard.js create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/chalkboard/img/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/chalkboard/img/blackboard.png create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/chalkboard/img/boardmarker.png create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/chalkboard/img/chalk.png create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/chalkboard/img/sponge.png create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/chalkboard/img/whiteboard.png create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/CONTRIBUTING.md create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/LICENSE create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/README.md create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/bower.json create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/LICENSE.txt create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/css/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/css/all.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/css/brands.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/css/fontawesome.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/css/regular.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/css/solid.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/css/svg-with-js.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/css/v4-shims.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/css/v4-shims.min.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/webfonts/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/webfonts/fa-brands-400.eot create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/webfonts/fa-brands-400.svg create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/webfonts/fa-brands-400.ttf create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/webfonts/fa-brands-400.woff create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/webfonts/fa-brands-400.woff2 create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/webfonts/fa-regular-400.eot create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/webfonts/fa-regular-400.svg create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/webfonts/fa-regular-400.ttf create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/webfonts/fa-regular-400.woff create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/webfonts/fa-regular-400.woff2 create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/webfonts/fa-solid-900.eot create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/webfonts/fa-solid-900.svg create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/webfonts/fa-solid-900.ttf create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/webfonts/fa-solid-900.woff create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/font-awesome/webfonts/fa-solid-900.woff2 create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/menu.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/menu.js create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-plugins/reveal.js-menu/package.json create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/revealjs-stretch.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/slide-numbers-custom.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/slide-numbers-for-speaker.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/slide-numbers-no.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/slide-numbers.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/slide-state.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/slide-state.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/source-callouts.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/source-coderay.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/source-emphasis.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/source-highlightjs-html.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/source-highlightjs-languages.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/source-highlightjs.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/source-prettify.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/source-pygments.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/source-rouge-docinfo.html create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/source-rouge.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/speaker-notes.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/steps.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/tables-styles.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/text-alignments.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/theme-custom.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/theme-custom.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/title-preamble.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/title-slide-color.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/title-slide-image.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/title-slide-video.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/title-subtitle-partitioning.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/transitions.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/vertical-slides.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/video.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/with-docinfo-shared.adoc create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/lib/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/lib/asciidoctor-revealjs.rb create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/lib/asciidoctor-revealjs/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/lib/asciidoctor-revealjs/converter.rb create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/lib/asciidoctor-revealjs/highlightjs.rb create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/lib/asciidoctor-revealjs/version.rb create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/lib/asciidoctor-templates-compiler.rb create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/admonition.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/asciidoctor-compatibility.css create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/audio.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/colist.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/dlist.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/document.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/embedded.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/example.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/floating_title.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/helpers.rb create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/image.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_anchor.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_break.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_button.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_callout.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_footnote.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_image.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_indexterm.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_kbd.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_menu.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_quoted.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/listing.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/literal.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/notes.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/olist.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/open.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/outline.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/page_break.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/paragraph.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/pass.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/preamble.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/quote.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/ruler.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/section.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/sidebar.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/stem.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/stretch_nested_elements.js.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/table.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/thematic_break.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/title_slide.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/toc.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/ulist.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/verse.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/video.html.slim create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/specifications/.jrubydir create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/specifications/asciidoctor-kroki-0.5.0.gemspec create mode 100644 aadarchi-maven-plugin/src/main/resources/META-INF/gems/specifications/asciidoctor-revealjs-4.1.0.gemspec create mode 100644 architecture-documentation/.asciidoctorconfig.adoc diff --git a/aadarchi-maven-plugin/pom.xml b/aadarchi-maven-plugin/pom.xml index ca179ed1..03db8e6f 100644 --- a/aadarchi-maven-plugin/pom.xml +++ b/aadarchi-maven-plugin/pom.xml @@ -12,14 +12,10 @@ Aadarchi : Maven plugin This maven plugin allows integration of our documentation system into maven builds by providing a set of useful mojos - - 0.5.0 - 4.1.0 9.2.9.0 4.3.0 - ${project.build.outputDirectory}/META-INF/gems - - rubygems - asciidoctor-kroki - ${version.asciidoctor.kroki} - gem - - - - rubygems - asciidoctor - - - rubygems - thread_safe - - - rubygems - concurrent-ruby - - - - - rubygems - asciidoctor-revealjs - ${version.asciidoctor.revealjs} - gem - - - - rubygems - asciidoctor - - - rubygems - thread_safe - - - rubygems - concurrent-ruby - - - - @@ -150,28 +100,6 @@ 1.0.3 - - - de.saumya.mojo - gem-maven-plugin - 2.0.1 - - ${version.jruby} - ${gems.destination} - ${gems.destination} - - - - - install-gems - - initialize - - initialize - - - - @@ -217,7 +145,88 @@ - + + + Download rubgems in a scope where I can access that damned repository + + + ${project.basedir}/src/main/resources/META-INF/gems + + + + 0.5.0 + 4.1.0 + ${project.basedir}/src/main/resources/META-INF/gems + + + + + rubygems + asciidoctor-kroki + ${version.asciidoctor.kroki} + gem + + + + rubygems + asciidoctor + + + rubygems + thread_safe + + + rubygems + concurrent-ruby + + + + + rubygems + asciidoctor-revealjs + ${version.asciidoctor.revealjs} + gem + + + + rubygems + asciidoctor + + + rubygems + thread_safe + + + rubygems + concurrent-ruby + + + + + + + + de.saumya.mojo + gem-maven-plugin + 2.0.1 + + ${version.jruby} + ${gems.destination} + ${gems.destination} + + + + + install-gems + + initialize + + initialize + + + + + \ No newline at end of file diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/.jrubydir b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/.jrubydir new file mode 100644 index 00000000..33cd0f2b --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/.jrubydir @@ -0,0 +1,8 @@ +. +bin +build_info +cache +doc +extensions +gems +specifications diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/.jrubydir b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/.jrubydir new file mode 100644 index 00000000..ac49eda6 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/.jrubydir @@ -0,0 +1,4 @@ +.. +. +asciidoctor-kroki-0.5.0 +asciidoctor-revealjs-4.1.0 diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/.jrubydir b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/.jrubydir new file mode 100644 index 00000000..a90f0f1a --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/.jrubydir @@ -0,0 +1,9 @@ +.. +. +asciidoctor-kroki.gemspec +Gemfile +Gemfile.lock +lib +Rakefile +spec +tasks diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/.rubocop.yml b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/.rubocop.yml new file mode 100644 index 00000000..9f8fefc1 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/.rubocop.yml @@ -0,0 +1,26 @@ +Style/Encoding: + Enabled: false + +Layout/EndOfLine: + EnforcedStyle: lf + +Metrics/LineLength: + Max: 180 + +Metrics/ClassLength: + Max: 150 + +Metrics/MethodLength: + Max: 50 + +Metrics/CyclomaticComplexity: + Max: 10 + +Metrics/PerceivedComplexity: + Max: 10 + +Metrics/AbcSize: + Max: 30 + +Metrics/ParameterLists: + Max: 7 diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/.ruby-version b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/.ruby-version new file mode 100644 index 00000000..57cf282e --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/.ruby-version @@ -0,0 +1 @@ +2.6.5 diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/Gemfile b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/Gemfile new file mode 100644 index 00000000..7f4f5e95 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/Gemfile @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +source 'https://rubygems.org' + +gemspec diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/Gemfile.lock b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/Gemfile.lock new file mode 100644 index 00000000..a23ddbf0 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/Gemfile.lock @@ -0,0 +1,52 @@ +PATH + remote: . + specs: + asciidoctor-kroki (0.5.0) + asciidoctor (~> 2.0) + +GEM + remote: https://rubygems.org/ + specs: + asciidoctor (2.0.11) + ast (2.4.1) + diff-lcs (1.3) + jaro_winkler (1.5.4) + parallel (1.19.1) + parser (2.7.1.3) + ast (~> 2.4.0) + rainbow (3.0.0) + rake (12.3.3) + rspec (3.8.0) + rspec-core (~> 3.8.0) + rspec-expectations (~> 3.8.0) + rspec-mocks (~> 3.8.0) + rspec-core (3.8.2) + rspec-support (~> 3.8.0) + rspec-expectations (3.8.6) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.8.0) + rspec-mocks (3.8.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.8.0) + rspec-support (3.8.3) + rubocop (0.74.0) + jaro_winkler (~> 1.5.1) + parallel (~> 1.10) + parser (>= 2.6) + rainbow (>= 2.2.2, < 4.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 1.4.0, < 1.7) + ruby-progressbar (1.10.1) + unicode-display_width (1.6.1) + +PLATFORMS + ruby + +DEPENDENCIES + asciidoctor-kroki! + rake (~> 12.3.2) + rspec (~> 3.8.0) + rubocop (~> 0.74.0) + +BUNDLED WITH + 2.2.17 diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/Rakefile b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/Rakefile new file mode 100644 index 00000000..8d6050f4 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/Rakefile @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +Dir.glob('tasks/*.rake').each { |file| load file } + +task default: %w[lint spec] diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/asciidoctor-kroki.gemspec b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/asciidoctor-kroki.gemspec new file mode 100644 index 00000000..3ab96941 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/asciidoctor-kroki.gemspec @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +Gem::Specification.new do |s| + s.name = 'asciidoctor-kroki' + s.version = '0.5.0' + s.summary = 'Asciidoctor extension to convert diagrams to images using Kroki' + s.description = 'An extension for Asciidoctor to convert diagrams to images using https://kroki.io' + + s.authors = ['Guillaume Grossetie'] + s.email = ['ggrossetie@yuzutech.fr'] + s.homepage = 'https://github.com/Mogztter/asciidoctor-kroki' + s.license = 'MIT' + s.metadata = { + 'bug_tracker_uri' => 'https://github.com/Mogztter/asciidoctor-kroki/issues', + 'source_code_uri' => 'https://github.com/Mogztter/asciidoctor-kroki' + } + s.files = `git ls-files`.split($RS) + s.test_files = s.files.grep(%r{^(test|spec|features|tasks)/}) + s.require_paths = ['lib'] + + s.add_runtime_dependency 'asciidoctor', '~> 2.0' + + s.add_development_dependency 'rake', '~> 12.3.2' + s.add_development_dependency 'rspec', '~> 3.8.0' + s.add_development_dependency 'rubocop', '~> 0.74.0' +end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/.jrubydir b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/.jrubydir new file mode 100644 index 00000000..778524ae --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/.jrubydir @@ -0,0 +1,4 @@ +.. +. +asciidoctor +asciidoctor-kroki.rb diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor-kroki.rb b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor-kroki.rb new file mode 100644 index 00000000..e12e32d7 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor-kroki.rb @@ -0,0 +1,5 @@ +# rubocop:disable Naming/FileName +# rubocop:enable Naming/FileName +# frozen_string_literal: true + +require_relative 'asciidoctor/extensions/asciidoctor_kroki' diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/.jrubydir b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/.jrubydir new file mode 100644 index 00000000..8cab0f77 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/.jrubydir @@ -0,0 +1,3 @@ +.. +. +extensions diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/extensions/.jrubydir b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/extensions/.jrubydir new file mode 100644 index 00000000..45d85ead --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/extensions/.jrubydir @@ -0,0 +1,4 @@ +.. +. +asciidoctor_kroki +asciidoctor_kroki.rb diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/extensions/asciidoctor_kroki.rb b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/extensions/asciidoctor_kroki.rb new file mode 100644 index 00000000..780d1365 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/extensions/asciidoctor_kroki.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +require 'asciidoctor/extensions' unless RUBY_ENGINE == 'opal' +require_relative 'asciidoctor_kroki/extension' + +Asciidoctor::Extensions.register do + ::AsciidoctorExtensions::Kroki::SUPPORTED_DIAGRAM_NAMES.each do |name| + block_macro ::AsciidoctorExtensions::KrokiBlockMacroProcessor, name + block ::AsciidoctorExtensions::KrokiBlockProcessor, name + end +end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/extensions/asciidoctor_kroki/.jrubydir b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/extensions/asciidoctor_kroki/.jrubydir new file mode 100644 index 00000000..bab0821f --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/extensions/asciidoctor_kroki/.jrubydir @@ -0,0 +1,3 @@ +.. +. +extension.rb diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/extensions/asciidoctor_kroki/extension.rb b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/extensions/asciidoctor_kroki/extension.rb new file mode 100644 index 00000000..7a11ee3d --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/lib/asciidoctor/extensions/asciidoctor_kroki/extension.rb @@ -0,0 +1,385 @@ +# frozen_string_literal: true + +require 'asciidoctor/extensions' unless RUBY_ENGINE == 'opal' + +# Asciidoctor extensions +# +module AsciidoctorExtensions + include Asciidoctor + + # A block extension that converts a diagram into an image. + # + class KrokiBlockProcessor < Extensions::BlockProcessor + use_dsl + + on_context :listing, :literal + name_positional_attributes 'target', 'format' + + # @param name [String] name of the block macro (optional) + # @param config [Hash] a config hash (optional) + # - :logger a logger used to log warning and errors (optional) + # + def initialize(name = nil, config = {}) + @logger = (config || {}).delete(:logger) { ::Asciidoctor::LoggerManager.logger } + super(name, config) + end + + def process(parent, reader, attrs) + diagram_type = @name + diagram_text = reader.string + KrokiProcessor.process(self, parent, attrs, diagram_type, diagram_text, @logger) + end + + protected + + attr_reader :logger + end + + # A block macro extension that converts a diagram into an image. + # + class KrokiBlockMacroProcessor < Asciidoctor::Extensions::BlockMacroProcessor + use_dsl + + name_positional_attributes 'format' + + # @param name [String] name of the block macro (optional) + # @param config [Hash] a config hash (optional) + # - :logger a logger used to log warning and errors (optional) + # + def initialize(name = nil, config = {}) + @logger = (config || {}).delete(:logger) { ::Asciidoctor::LoggerManager.logger } + super(name, config) + end + + def process(parent, target, attrs) + diagram_type = @name + target = parent.apply_subs(target, [:attributes]) + + unless read_allowed?(target) + link = create_inline(parent, :anchor, target, type: :link, target: target) + return create_block(parent, :paragraph, link.convert, {}, content_model: :raw) + end + + unless (path = resolve_target_path(target)) + logger.error "#{diagram_type} block macro not found: #{target}." + create_block(parent, 'paragraph', unresolved_block_macro_message(diagram_type, target), {}) + end + + begin + diagram_text = read(path) + rescue => e # rubocop:disable RescueStandardError + logger.error "Failed to read #{diagram_type} file: #{path}. #{e}." + return create_block(parent, 'paragraph', unresolved_block_macro_message(diagram_type, path), {}) + end + KrokiProcessor.process(self, parent, attrs, diagram_type, diagram_text, @logger) + end + + protected + + attr_reader :logger + + def resolve_target_path(target) + target + end + + def read_allowed?(_target) + true + end + + def read(target) + if target.start_with?('http://') || target.start_with?('https://') + require 'open-uri' + URI.open(target, &:read) + else + File.open(target, &:read) + end + end + + def unresolved_block_macro_message(name, target) + "Unresolved block macro - #{name}::#{target}[]" + end + end + + # Kroki API + # + module Kroki + SUPPORTED_DIAGRAM_NAMES = %w[ + actdiag + blockdiag + bpmn + bytefield + c4plantuml + ditaa + erd + excalidraw + graphviz + mermaid + nomnoml + nwdiag + packetdiag + pikchr + plantuml + rackdiag + seqdiag + svgbob + umlet + vega + vegalite + wavedrom + ].freeze + end + + # Internal processor + # + class KrokiProcessor + TEXT_FORMATS = %w[txt atxt utxt].freeze + + class << self + def process(processor, parent, attrs, diagram_type, diagram_text, logger) + doc = parent.document + diagram_text = prepend_plantuml_config(diagram_text, diagram_type, doc, logger) + # If "subs" attribute is specified, substitute accordingly. + # Be careful not to specify "specialcharacters" or your diagram code won't be valid anymore! + if (subs = attrs['subs']) + diagram_text = parent.apply_subs(diagram_text, parent.resolve_subs(subs)) + end + title = attrs.delete('title') + caption = attrs.delete('caption') + attrs.delete('opts') + role = attrs['role'] + format = get_format(doc, attrs, diagram_type) + attrs['role'] = get_role(format, role) + attrs['format'] = format + kroki_diagram = KrokiDiagram.new(diagram_type, format, diagram_text) + kroki_client = KrokiClient.new(server_url(doc), http_method(doc), KrokiHttpClient, logger, max_uri_length(doc)) + if TEXT_FORMATS.include?(format) + text_content = kroki_client.text_content(kroki_diagram) + block = processor.create_block(parent, 'literal', text_content, attrs) + else + attrs['alt'] = get_alt(attrs) + attrs['target'] = create_image_src(doc, kroki_diagram, kroki_client) + block = processor.create_image_block(parent, attrs) + end + block.title = title if title + block.assign_caption(caption, 'figure') + block + end + + private + + def prepend_plantuml_config(diagram_text, diagram_type, doc, logger) + if diagram_type == :plantuml && doc.safe < ::Asciidoctor::SafeMode::SECURE && doc.attr?('kroki-plantuml-include') + # REMIND: this behaves different than the JS version + # Once we have a preprocessor for Ruby, the value should be added in the diagram source as "!include #{plantuml_include}" + plantuml_include_path = doc.normalize_system_path(doc.attr('kroki-plantuml-include')) + if ::File.readable? plantuml_include_path + config = File.read(plantuml_include_path) + diagram_text = config + "\n" + diagram_text + else + logger.warn "Unable to read plantuml-include. File not found or not readable: #{plantuml_include_path}." + end + end + diagram_text + end + + def get_alt(attrs) + if (title = attrs['title']) + title + elsif (target = attrs['target']) + target + else + 'Diagram' + end + end + + def get_role(format, role) + if role + if format + "#{role} kroki-format-#{format} kroki" + else + "#{role} kroki" + end + else + 'kroki' + end + end + + def get_format(doc, attrs, diagram_type) + format = attrs['format'] || 'svg' + # The JavaFX preview doesn't support SVG well, therefore we'll use PNG format... + if doc.attr?('env-idea') && format == 'svg' + # ... unless the diagram library does not support PNG as output format! + # Currently, mermaid, nomnoml, svgbob, wavedrom only support SVG as output format. + svg_only_diagram_types = %w[:mermaid :nomnoml :svgbob :wavedrom] + format = 'png' unless svg_only_diagram_types.include?(diagram_type) + end + format + end + + def create_image_src(doc, kroki_diagram, kroki_client) + if doc.attr('kroki-fetch-diagram') && doc.safe < ::Asciidoctor::SafeMode::SECURE + kroki_diagram.save(output_dir_path(doc), kroki_client) + else + kroki_diagram.get_diagram_uri(server_url(doc)) + end + end + + def server_url(doc) + doc.attr('kroki-server-url', 'https://kroki.io') + end + + def http_method(doc) + doc.attr('kroki-http-method', 'adaptive').downcase + end + + def max_uri_length(doc) + doc.attr('kroki-max-uri-length', '4000').to_i + end + + def output_dir_path(doc) + images_dir = doc.attr('imagesdir', '') + if (images_output_dir = doc.attr('imagesoutdir')) + images_output_dir + elsif (out_dir = doc.attr('outdir')) + File.join(out_dir, images_dir) + elsif (to_dir = doc.attr('to_dir')) + File.join(to_dir, images_dir) + else + File.join(doc.base_dir, images_dir) + end + end + end + end + + # Kroki diagram + # + class KrokiDiagram + require 'fileutils' + require 'zlib' + require 'digest' + + attr_reader :type + attr_reader :text + attr_reader :format + + def initialize(type, format, text) + @text = text + @type = type + @format = format + end + + def get_diagram_uri(server_url) + _join_uri_segments(server_url, @type, @format, encode) + end + + def encode + Base64.urlsafe_encode64(Zlib::Deflate.deflate(@text, 9)) + end + + def save(output_dir_path, kroki_client) + diagram_url = get_diagram_uri(kroki_client.server_url) + diagram_name = "diag-#{Digest::SHA256.hexdigest diagram_url}.#{@format}" + file_path = File.join(output_dir_path, diagram_name) + encoding = if @format == 'txt' || @format == 'atxt' || @format == 'utxt' + 'utf8' + elsif @format == 'svg' + 'binary' + else + 'binary' + end + # file is either (already) on the file system or we should read it from Kroki + contents = File.exist?(file_path) ? File.open(file_path, &:read) : kroki_client.get_image(self, encoding) + FileUtils.mkdir_p(output_dir_path) + if encoding == 'binary' + File.binwrite(file_path, contents) + else + File.write(file_path, contents) + end + diagram_name + end + + private + + def _join_uri_segments(base, *uris) + segments = [] + # remove trailing slashes + segments.push(base.gsub(%r{[/]+$}, '')) + segments.concat(uris.map do |uri| + # remove leading and trailing slashes + uri.to_s + .gsub(%r{^[/]+}, '') + .gsub(%r{[/]+$}, '') + end) + segments.join('/') + end + end + + # Kroki client + # + class KrokiClient + attr_reader :server_url + attr_reader :method + attr_reader :max_uri_length + + SUPPORTED_HTTP_METHODS = %w[get post adaptive].freeze + + def initialize(server_url, http_method, http_client, logger = ::Asciidoctor::LoggerManager.logger, max_uri_length = 4000) + @server_url = server_url + @max_uri_length = max_uri_length + @http_client = http_client + method = (http_method || 'adaptive').downcase + if SUPPORTED_HTTP_METHODS.include?(method) + @method = method + else + logger.warn "Invalid value '#{method}' for kroki-http-method attribute. The value must be either: 'get', 'post' or 'adaptive'. Proceeding using: 'adaptive'." + @method = 'adaptive' + end + end + + def text_content(kroki_diagram) + get_image(kroki_diagram, 'utf-8') + end + + def get_image(kroki_diagram, encoding) + type = kroki_diagram.type + format = kroki_diagram.format + text = kroki_diagram.text + if @method == 'adaptive' || @method == 'get' + uri = kroki_diagram.get_diagram_uri(server_url) + if uri.length > @max_uri_length + # The request URI is longer than the max URI length. + if @method == 'get' + # The request might be rejected by the server with a 414 Request-URI Too Large. + # Consider using the attribute kroki-http-method with the value 'adaptive'. + @http_client.get(uri, encoding) + else + @http_client.post("#{@server_url}/#{type}/#{format}", text, encoding) + end + else + @http_client.get(uri, encoding) + end + else + @http_client.post("#{@server_url}/#{type}/#{format}", text, encoding) + end + end + end + + # Kroki HTTP client + # + class KrokiHttpClient + require 'net/http' + require 'uri' + require 'json' + + class << self + def get(uri, _) + ::OpenURI.open_uri(uri, 'r', &:read) + end + + def post(uri, data, _) + res = ::Net::HTTP.request_post(uri, data) + res.body + end + end + end +end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/.jrubydir b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/.jrubydir new file mode 100644 index 00000000..44f5d6aa --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/.jrubydir @@ -0,0 +1,9 @@ +.. +. +asciidoctor_kroki_block_macro_spec.rb +asciidoctor_kroki_client_spec.rb +asciidoctor_kroki_diagram_spec.rb +asciidoctor_kroki_spec.rb +fixtures +require_spec.rb +rspec_helper.rb diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/.rubocop.yml b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/.rubocop.yml new file mode 100644 index 00000000..e3261c03 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/.rubocop.yml @@ -0,0 +1,5 @@ +inherit_from: + - ../.rubocop.yml + +Metrics/BlockLength: + Max: 500 diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/asciidoctor_kroki_block_macro_spec.rb b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/asciidoctor_kroki_block_macro_spec.rb new file mode 100644 index 00000000..3825290a --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/asciidoctor_kroki_block_macro_spec.rb @@ -0,0 +1,128 @@ +# frozen_string_literal: true + +require 'rspec_helper' +require 'asciidoctor' +require_relative '../lib/asciidoctor/extensions/asciidoctor_kroki' +require_relative '../lib/asciidoctor/extensions/asciidoctor_kroki/extension' + +describe ::AsciidoctorExtensions::KrokiBlockMacroProcessor do + context 'convert to html5' do + it 'should catch exception if target is not readable' do + input = <<~'ADOC' + plantuml::spec/fixtures/missing.puml[svg,role=sequence] + ADOC + output = Asciidoctor.convert(input, standalone: false) + (expect output).to eql %(
+

Unresolved block macro - plantuml::spec/fixtures/missing.puml[]

+
) + end + end + context 'using a custom block macro' do + it 'should disallow read' do + # noinspection RubyClassModuleNamingConvention + class DisallowReadKrokiBlockMacroProcessor < ::AsciidoctorExtensions::KrokiBlockMacroProcessor + def read_allowed?(_target) + false + end + end + registry = Asciidoctor::Extensions.create do + block_macro DisallowReadKrokiBlockMacroProcessor, 'plantuml' + end + input = <<~'ADOC' + plantuml::spec/fixtures/alice.puml[svg,role=sequence] + ADOC + output = Asciidoctor.convert(input, standalone: false, extension_registry: registry) + (expect output).to eql %(
+

spec/fixtures/alice.puml

+
) + end + it 'should allow read if target is not a URI' do + # noinspection RubyClassModuleNamingConvention + class DisallowUriReadKrokiBlockMacroProcessor < ::AsciidoctorExtensions::KrokiBlockMacroProcessor + def read_allowed?(target) + return false if ::Asciidoctor::Helpers.uriish?(target) + + true + end + end + registry = Asciidoctor::Extensions.create do + block_macro DisallowUriReadKrokiBlockMacroProcessor, 'plantuml' + end + input = <<~'ADOC' + plantuml::https://domain.org/alice.puml[svg,role=sequence] + + plantuml::file://path/to/alice.puml[svg,role=sequence] + + plantuml::spec/fixtures/alice.puml[svg,role=sequence] + ADOC + output = Asciidoctor.convert(input, standalone: false, extension_registry: registry) + (expect output).to eql %(
+

https://domain.org/alice.puml

+
+
+

file://path/to/alice.puml

+
+
+
+Diagram +
+
) + end + it 'should override the resolve target method' do + # noinspection RubyClassModuleNamingConvention + class FixtureResolveTargetKrokiBlockMacroProcessor < ::AsciidoctorExtensions::KrokiBlockMacroProcessor + def resolve_target_path(target) + "spec/fixtures/#{target}" + end + end + registry = Asciidoctor::Extensions.create do + block_macro FixtureResolveTargetKrokiBlockMacroProcessor, 'plantuml' + end + input = <<~'ADOC' + plantuml::alice.puml[svg,role=sequence] + ADOC + output = Asciidoctor.convert(input, standalone: false, extension_registry: registry) + (expect output).to eql %(
+
+Diagram +
+
) + end + it 'should display unresolved block macro message when the traget cannot be resolved' do + # noinspection RubyClassModuleNamingConvention + class UnresolvedTargetKrokiBlockMacroProcessor < ::AsciidoctorExtensions::KrokiBlockMacroProcessor + def resolve_target_path(_target) + nil + end + end + registry = Asciidoctor::Extensions.create do + block_macro UnresolvedTargetKrokiBlockMacroProcessor, 'plantuml' + end + input = <<~'ADOC' + plantuml::alice.puml[svg,role=sequence] + ADOC + output = Asciidoctor.convert(input, standalone: false, extension_registry: registry) + (expect output).to eql %(
+

Unresolved block macro - plantuml::[]

+
) + end + it 'should override the unresolved block macro message' do + # noinspection RubyClassModuleNamingConvention + class CustomUnresolvedTargetMessageKrokiBlockMacroProcessor < ::AsciidoctorExtensions::KrokiBlockMacroProcessor + def unresolved_block_macro_message(name, target) + "*[ERROR: #{name}::#{target}[] - unresolved block macro]*" + end + end + registry = Asciidoctor::Extensions.create do + block_macro CustomUnresolvedTargetMessageKrokiBlockMacroProcessor, 'plantuml' + end + input = <<~'ADOC' + plantuml::spec/fixtures/missing.puml[svg,role=sequence] + ADOC + output = Asciidoctor.convert(input, standalone: false, extension_registry: registry) + (expect output).to eql %(
+

[ERROR: plantuml::spec/fixtures/missing.puml[] - unresolved block macro]

+
) + end + end +end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/asciidoctor_kroki_client_spec.rb b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/asciidoctor_kroki_client_spec.rb new file mode 100644 index 00000000..fd026af0 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/asciidoctor_kroki_client_spec.rb @@ -0,0 +1,91 @@ +# frozen_string_literal: true + +require 'rspec_helper' +require 'asciidoctor' +require_relative '../lib/asciidoctor/extensions/asciidoctor_kroki' + +describe ::AsciidoctorExtensions::KrokiClient do + it 'should use adaptive method when http method is invalid' do + kroki_http_client = ::AsciidoctorExtensions::KrokiHttpClient + kroki_client = ::AsciidoctorExtensions::KrokiClient.new('http://localhost:8000', 'patch', kroki_http_client) + expect(kroki_client.method).to eq('adaptive') + end + it 'should use post method when http method is post' do + kroki_http_client = ::AsciidoctorExtensions::KrokiHttpClient + kroki_client = ::AsciidoctorExtensions::KrokiClient.new('http://localhost:8000', 'POST', kroki_http_client) + expect(kroki_client.method).to eq('post') + end + it 'should use get method when http method is get' do + kroki_http_client = ::AsciidoctorExtensions::KrokiHttpClient + kroki_client = ::AsciidoctorExtensions::KrokiClient.new('http://localhost:8000', 'get', kroki_http_client) + expect(kroki_client.method).to eq('get') + end + it 'should use 4000 as the default max URI length' do + kroki_http_client = ::AsciidoctorExtensions::KrokiHttpClient + kroki_client = ::AsciidoctorExtensions::KrokiClient.new('http://localhost:8000', 'get', kroki_http_client) + expect(kroki_client.max_uri_length).to eq(4000) + end + it 'should use a custom value as max URI length' do + kroki_http_client = ::AsciidoctorExtensions::KrokiHttpClient + kroki_client = ::AsciidoctorExtensions::KrokiClient.new('http://localhost:8000', 'get', kroki_http_client, nil, 8000) + expect(kroki_client.max_uri_length).to eq(8000) + end + it 'should get an image with POST request if the URI length is greater than the value configured' do + kroki_http_client = Class.new do + class << self + def get(uri, _) + "GET #{uri}" + end + + def post(uri, data, _) + "POST #{uri} - #{data}" + end + end + end + kroki_diagram = Class.new do + attr_reader :type, :text, :format + + def initialize(type, format, text) + @text = text + @type = type + @format = format + end + + def get_diagram_uri(_) + 'diagram-uri' + end + end.new('type', 'format', 'text') + kroki_client = ::AsciidoctorExtensions::KrokiClient.new('http://localhost:8000', 'adaptive', kroki_http_client, nil, 10) + result = kroki_client.get_image(kroki_diagram, 'utf8') + expect(result).to eq('POST http://localhost:8000/type/format - text') + end + it 'should get an image with GET request if the URI length is lower or equals than the value configured' do + kroki_http_client = Class.new do + class << self + def get(uri, _) + "GET #{uri}" + end + + def post(uri, data, _) + "POST #{uri} - #{data}" + end + end + end + kroki_diagram = Class.new do + attr_reader :type, :text, :format + + def initialize(type, format, text) + @text = text + @type = type + @format = format + end + + def get_diagram_uri(_) + 'diagram-uri' + end + end.new('type', 'format', 'text') + kroki_client = ::AsciidoctorExtensions::KrokiClient.new('http://localhost:8000', 'adaptive', kroki_http_client, nil, 11) + result = kroki_client.get_image(kroki_diagram, 'utf8') + expect(result).to eq('GET diagram-uri') + end +end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/asciidoctor_kroki_diagram_spec.rb b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/asciidoctor_kroki_diagram_spec.rb new file mode 100644 index 00000000..73ba9d4e --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/asciidoctor_kroki_diagram_spec.rb @@ -0,0 +1,61 @@ +# frozen_string_literal: true + +require 'rspec_helper' +require 'asciidoctor' +require_relative '../lib/asciidoctor/extensions/asciidoctor_kroki' + +describe ::AsciidoctorExtensions::KrokiDiagram do + it 'should compute a diagram URI' do + kroki_diagram = ::AsciidoctorExtensions::KrokiDiagram.new('vegalite', 'png', '{}') + diagram_uri = kroki_diagram.get_diagram_uri('http://localhost:8000') + expect(diagram_uri).to eq('http://localhost:8000/vegalite/png/eNqrrgUAAXUA-Q==') + end + it 'should compute a diagram URI with a trailing slashes' do + kroki_diagram = ::AsciidoctorExtensions::KrokiDiagram.new('vegalite', 'png', '{}') + diagram_uri = kroki_diagram.get_diagram_uri('https://my.domain.org/kroki/') + expect(diagram_uri).to eq('https://my.domain.org/kroki/vegalite/png/eNqrrgUAAXUA-Q==') + end + it 'should compute a diagram URI with trailing slashes' do + kroki_diagram = ::AsciidoctorExtensions::KrokiDiagram.new('vegalite', 'png', '{}') + diagram_uri = kroki_diagram.get_diagram_uri('https://my-server/kroki//') + expect(diagram_uri).to eq('https://my-server/kroki/vegalite/png/eNqrrgUAAXUA-Q==') + end + it 'should encode a diagram text definition' do + kroki_diagram = ::AsciidoctorExtensions::KrokiDiagram.new('plantuml', 'txt', ' alice -> bob: hello') + diagram_definition_encoded = kroki_diagram.encode + expect(diagram_definition_encoded).to eq('eNpTSMzJTE5V0LVTSMpPslLISM3JyQcAQAwGaw==') + end + it 'should fetch a diagram from Kroki and save it to disk' do + kroki_diagram = ::AsciidoctorExtensions::KrokiDiagram.new('plantuml', 'txt', ' alice -> bob: hello') + kroki_http_client = ::AsciidoctorExtensions::KrokiHttpClient + kroki_client = ::AsciidoctorExtensions::KrokiClient.new('https://kroki.io', 'get', kroki_http_client) + output_dir_path = "#{__dir__}/../.asciidoctor/kroki" + diagram_name = kroki_diagram.save(output_dir_path, kroki_client) + diagram_path = File.join(output_dir_path, diagram_name) + expect(File.exist?(diagram_path)).to be_truthy, "expected diagram to be saved at #{diagram_path}" + content = <<-TXT.chomp + ,-----. ,---. + |alice| |bob| + `--+--' `-+-' + | hello | + |-------------->| + ,--+--. ,-+-. + |alice| |bob| + `-----' `---' + TXT + expect(File.read(diagram_path).split("\n").map(&:rstrip).join("\n")).to eq(content) + end + it 'should fetch a diagram from Kroki with the same definition only once' do + kroki_diagram = ::AsciidoctorExtensions::KrokiDiagram.new('plantuml', 'png', ' guillaume -> dan: hello') + kroki_http_client = ::AsciidoctorExtensions::KrokiHttpClient + kroki_client = ::AsciidoctorExtensions::KrokiClient.new('https://kroki.io', 'get', kroki_http_client) + output_dir_path = "#{__dir__}/../.asciidoctor/kroki" + # make sure that we are doing only one GET request + expect(kroki_http_client).to receive(:get).once + diagram_name = kroki_diagram.save(output_dir_path, kroki_client) + diagram_path = File.join(output_dir_path, diagram_name) + expect(File.exist?(diagram_path)).to be_truthy, "expected diagram to be saved at #{diagram_path}" + # calling again... should read the file from disk (and not do a GET request) + kroki_diagram.save(output_dir_path, kroki_client) + end +end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/asciidoctor_kroki_spec.rb b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/asciidoctor_kroki_spec.rb new file mode 100644 index 00000000..ff8f1e0d --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/asciidoctor_kroki_spec.rb @@ -0,0 +1,160 @@ +# frozen_string_literal: true + +require 'rspec_helper' +require 'asciidoctor' +require_relative '../lib/asciidoctor/extensions/asciidoctor_kroki' + +describe ::AsciidoctorExtensions::KrokiBlockProcessor do + context 'convert to html5' do + it 'should convert a PlantUML block to an image' do + input = <<~'ADOC' + [plantuml] + .... + alice -> bob: hello + .... + ADOC + output = Asciidoctor.convert(input, standalone: false) + (expect output).to eql %(
+
+Diagram +
+
) + end + it 'should use png if env-idea is defined' do + input = <<~'ADOC' + [plantuml] + .... + alice -> bob: hello + .... + ADOC + output = Asciidoctor.convert(input, attributes: { 'env-idea' => '' }, standalone: false) + (expect output).to eql %(
+
+Diagram +
+
) + end + it 'should include the plantuml-include file when safe mode is safe' do + input = <<~'ADOC' + [plantuml] + .... + alice -> bob: hello + .... + ADOC + output = Asciidoctor.convert(input, attributes: { 'env-idea' => '', 'kroki-plantuml-include' => 'spec/fixtures/config.puml' }, standalone: false, safe: :safe) + (expect output).to eql %(
+
+Diagram +
+
) + end + it 'should normalize plantuml-include path when safe mode is safe' do + input = <<~'ADOC' + [plantuml] + .... + alice -> bob: hello + .... + ADOC + output = Asciidoctor.convert(input, attributes: { 'env-idea' => '', 'kroki-plantuml-include' => '../../../spec/fixtures/config.puml' }, standalone: false, safe: :safe) + (expect output).to eql %(
+
+Diagram +
+
) + end + it 'should not include file which reside outside of the parent directory of the source when safe mode is safe' do + input = <<~'ADOC' + [plantuml] + .... + alice -> bob: hello + .... + ADOC + output = Asciidoctor.convert(input, attributes: { 'env-idea' => '', 'kroki-plantuml-include' => '/etc/passwd' }, standalone: false, safe: :safe) + (expect output).to eql %(
+
+Diagram +
+
) + end + it 'should not include file when safe mode is secure' do + input = <<~'ADOC' + [plantuml] + .... + alice -> bob: hello + .... + ADOC + output = Asciidoctor.convert(input, attributes: { 'env-idea' => '', 'kroki-plantuml-include' => 'spec/fixtures/config.puml' }, standalone: false, safe: :secure) + (expect output).to eql %(
+
+Diagram +
+
) + end + it 'should create SVG diagram in imagesdir if kroki-fetch-diagram is set' do + input = <<~'ADOC' + :imagesdir: .asciidoctor/kroki + + plantuml::spec/fixtures/alice.puml[svg,role=sequence] + ADOC + output = Asciidoctor.convert(input, attributes: { 'kroki-fetch-diagram' => '' }, standalone: false, safe: :safe) + (expect output).to eql %(
+
+Diagram +
+
) + end + it 'should not fetch diagram when safe mode is secure' do + input = <<~'ADOC' + :imagesdir: .asciidoctor/kroki + + plantuml::spec/fixtures/alice.puml[svg,role=sequence] + ADOC + output = Asciidoctor.convert(input, attributes: { 'kroki-fetch-diagram' => '' }, standalone: false) + (expect output).to eql %(
+
+Diagram +
+
) + end + it 'should create PNG diagram in imagesdir if kroki-fetch-diagram is set' do + input = <<~'ADOC' + :imagesdir: .asciidoctor/kroki + + plantuml::spec/fixtures/alice.puml[png,role=sequence] + ADOC + output = Asciidoctor.convert(input, attributes: { 'kroki-fetch-diagram' => '' }, standalone: false, safe: :safe) + (expect output).to eql %(
+
+Diagram +
+
) + end + end + context 'instantiate' do + it 'should instantiate block processor without warning' do + original_stderr = $stderr + $stderr = StringIO.new + ::AsciidoctorExtensions::KrokiBlockProcessor.new 'plantuml'.to_sym, {} + output = $stderr.string + (expect output).to eql '' + ensure + $stderr = original_stderr + end + end +end + +describe ::AsciidoctorExtensions::Kroki do + it 'should return the list of supported diagrams' do + diagram_names = ::AsciidoctorExtensions::Kroki::SUPPORTED_DIAGRAM_NAMES + expect(diagram_names).to include('vegalite', 'plantuml', 'bytefield', 'bpmn', 'excalidraw', 'wavedrom', 'pikchr') + end + it 'should register the extension for the list of supported diagrams' do + doc = Asciidoctor::Document.new + registry = Asciidoctor::Extensions::Registry.new + registry.activate doc + ::AsciidoctorExtensions::Kroki::SUPPORTED_DIAGRAM_NAMES.each do |name| + expect(registry.find_block_extension(name)).to_not be_nil, "expected block extension named '#{name}' to be registered" + expect(registry.find_block_macro_extension(name)).to_not be_nil, "expected block macro extension named '#{name}' to be registered " + end + end +end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/fixtures/.jrubydir b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/fixtures/.jrubydir new file mode 100644 index 00000000..8d3b8dfe --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/fixtures/.jrubydir @@ -0,0 +1,4 @@ +.. +. +alice.puml +config.puml diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/fixtures/alice.puml b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/fixtures/alice.puml new file mode 100644 index 00000000..893862de --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/fixtures/alice.puml @@ -0,0 +1 @@ +alice -> bob: hello diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/fixtures/config.puml b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/fixtures/config.puml new file mode 100644 index 00000000..0663003d --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/fixtures/config.puml @@ -0,0 +1 @@ +skinparam monochrome true diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/require_spec.rb b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/require_spec.rb new file mode 100644 index 00000000..e5ab8d64 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/require_spec.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +describe 'require' do + it 'should require the library' do + lib = File.expand_path('lib', __dir__) + $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) + require 'asciidoctor-kroki' + + (expect Asciidoctor::Extensions.groups[:extgrp0]).to_not be_nil + end +end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/rspec_helper.rb b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/rspec_helper.rb new file mode 100644 index 00000000..c0147af4 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/spec/rspec_helper.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +RSpec.configure do |config| + config.before(:suite) do + FileUtils.rm(Dir.glob("#{__dir__}/../.asciidoctor/kroki/diag-*")) + end + config.after(:suite) do + FileUtils.rm(Dir.glob("#{__dir__}/../.asciidoctor/kroki/diag-*")) unless ENV['DEBUG'] + end +end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/tasks/.jrubydir b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/tasks/.jrubydir new file mode 100644 index 00000000..fef7e581 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/tasks/.jrubydir @@ -0,0 +1,5 @@ +.. +. +bundler.rake +lint.rake +rspec.rake diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/tasks/bundler.rake b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/tasks/bundler.rake new file mode 100644 index 00000000..44cd0d65 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/tasks/bundler.rake @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +begin + require 'bundler/gem_tasks' +rescue LoadError + warn $ERROR_INFO.message +end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/tasks/lint.rake b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/tasks/lint.rake new file mode 100644 index 00000000..e3912f38 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/tasks/lint.rake @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +require 'rubocop/rake_task' + +RuboCop::RakeTask.new :lint diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/tasks/rspec.rake b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/tasks/rspec.rake new file mode 100644 index 00000000..61811725 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-kroki-0.5.0/tasks/rspec.rake @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +begin + require 'rspec/core/rake_task' + RSpec::Core::RakeTask.new :spec +rescue LoadError + warn $ERROR_INFO.message +end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/.jrubydir b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/.jrubydir new file mode 100644 index 00000000..ec8c21bc --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/.jrubydir @@ -0,0 +1,11 @@ +.. +. +asciidoctor-revealjs.gemspec +bin +examples +Gemfile +lib +LICENSE.adoc +Rakefile +README.adoc +templates diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/Gemfile b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/Gemfile new file mode 100644 index 00000000..ea28e8c5 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/Gemfile @@ -0,0 +1,6 @@ +source 'https://rubygems.org' + +# Specify your gem's dependencies in asciidoctor-revealjs.gemspec +gemspec +# Asciidoctor.js 2.0.0 requires an unreleased Opal 0.11.99.dev (d136ea8) +gem 'opal', :git => 'https://github.com/opal/opal.git', :ref => 'd136ea8' diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/LICENSE.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/LICENSE.adoc new file mode 100644 index 00000000..3bce22d5 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/LICENSE.adoc @@ -0,0 +1,22 @@ +.The MIT License +.... +Copyright (C) 2012-2020 Olivier Bilodeau, Charles Moulliard, Dan Allen and the Asciidoctor Project + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +.... diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/README.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/README.adoc new file mode 100644 index 00000000..c5be8840 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/README.adoc @@ -0,0 +1,1388 @@ += Reveal.js converter for Asciidoctor +Olivier Bilodeau ; Guillaume Grossetie ; Dan Allen ; Rahman Usta ; Charles Moulliard +ifdef::env-github,env-browser[] +:toc: preamble +:toclevels: 2 +endif::[] +ifdef::env-github[] +:branch: master +:status: +:outfilesuffix: .adoc +:!toc-title: +:caution-caption: :fire: +:important-caption: :exclamation: +:note-caption: :paperclip: +:tip-caption: :bulb: +:warning-caption: :warning: +endif::[] +:uri-project-repo: https://github.com/asciidoctor/asciidoctor-reveal.js +:uri-asciidoctor: https://github.com/asciidoctor/asciidoctor +:uri-asciidoctorjs: https://github.com/asciidoctor/asciidoctor.js +:uri-revealjs-home: https://revealjs.com +:uri-revealjs-gh: https://github.com/hakimel/reveal.js/blob/v3.9 +:uri-revealjs-doc: {uri-revealjs-gh}/README.md +:uri-nodejs-download: https://nodejs.org/en/download/ +:showcasedir: showcase + +ifdef::env-github[] +image:https://travis-ci.org/asciidoctor/asciidoctor-reveal.js.svg?branch=master[Build Status,link=https://travis-ci.org/asciidoctor/asciidoctor-reveal.js] +image:http://img.shields.io/gem/v/asciidoctor-revealjs.svg[gem, link=https://rubygems.org/gems/asciidoctor-revealjs] +image:http://img.shields.io/npm/v/@asciidoctor/reveal.js.svg[npm, link=https://www.npmjs.org/package/@asciidoctor/reveal.js] +endif::[] + +// IMPORTANT: Changes made to this description should be sync'ed with the readme field in package.json. +{uri-project-repo}[Asciidoctor reveal.js] is a converter for {uri-asciidoctor}[Asciidoctor] and {uri-asciidoctorjs}[Asciidoctor.js] that transforms an AsciiDoc document into an HTML5 presentation designed to be executed by the {uri-revealjs-home}[reveal.js] presentation framework. + +TIP: Want to see some example presentations, see <> + +There are four main technology stacks that can convert AsciiDoc into HTML5 / reveal.js: + +* Asciidoctor / Ruby / Bundler (See <>) +* Asciidoctor.js / JavaScript (Node.js) / npm (See <>) +* Standalone Executable (See <>) +* AsciidoctorJ / JVM / Maven (See https://github.com/asciidoctor/asciidoctorj-reveal.js[this project]) + +ifeval::['{branch}' == 'master'] +NOTE: You're viewing the documentation for an upcoming release. +If you're looking for the documentation for the current release or an older one, please click on the appropriate link below: + +{uri-project-repo}/tree/v4.0.0#readme[4.0.1] (latest from 4.x series) +⁃ +{uri-project-repo}/tree/v3.1.0#readme[3.1.0] (latest from 3.x series) +⁃ +{uri-project-repo}/tree/reveal.js-2.x#readme[Unversioned pre-release] (compatible with reveal.js 2.x) +endif::[] + + +== Ruby Setup + +NOTE: To ensure repeatability, we recommend that you manage your presentation projects using http://bundler.io/[bundler]. + +=== Prerequisites + +. Install http://bundler.io/[bundler] (if not already installed) using your system's package manager or with: + + $ gem install bundler + +. If you're using RVM, make sure you switch away from any gemset: + + $ rvm use default ++ +or ++ + $ rvm use system + + +=== Install + +NOTE: These instructions should be repeated for every presentation project. + +. Create project directory + + $ mkdir my-awesome-presentation + $ cd my-awesome-presentation + +. Create a file named `Gemfile` with the following content: ++ +[source,ruby] +---- +source 'https://rubygems.org' + +gem 'asciidoctor-revealjs' # latest released version +---- ++ +NOTE: For some reason, when you use the system Ruby on Fedora, you also have to add the json gem to the Gemfile. ++ +. Install the gems into the project + + $ bundle config --local github.https true + $ bundle --path=.bundle/gems --binstubs=.bundle/.bin + +. Optional: Copy or clone reveal.js presentation framework. + Allows you to modify themes or view slides offline. + + $ git clone -b 3.9.2 --depth 1 https://github.com/hakimel/reveal.js.git + + +=== Rendering the AsciiDoc into slides + +. Create content in a file (*.adoc, *.ad, etc.). + See examples in <> section to get started. + +. Generate HTML presentation from the AsciiDoc source + + $ bundle exec asciidoctor-revealjs \ + -a revealjsdir=https://cdn.jsdelivr.net/npm/reveal.js@3.9.2 CONTENT_FILE.adoc + +. If you did the optional step of having a local reveal.js clone you can + convert AsciiDoc source with + + $ bundle exec asciidoctor-revealjs CONTENT_FILE.adoc + +TIP: If you are using https://pages.github.com/[GitHub Pages], plan ahead by keeping your source files on `master` branch and all output files on the `gh-pages` branch. + +=== Features Unique to the Ruby CLI + +Starting with 4.0.0 you can specify a set of custom templates to use instead of the ones provided by this project. +This can help you achieve even more concise AsciiDoc syntax and integration with reveal.js at the cost of more maintenance. + +To use it, add the following dependencies to your `Gemfile`: + + gem 'tilt', '~>2.0' + gem 'slim', '~>4.0' + +Then install the dependencies with: + + $ bundle install + +The feature is activated with the `--template-dir` or `-T` option: + + $ bundle exec asciidoctor-revealjs -T templates/ CONTENT_FILE.adoc + +Any individual template file not provided in the directory specified on the command-line will fall back to the template provided by your version of Asciidoctor reveal.js. +Refer to our https://github.com/asciidoctor/asciidoctor-reveal.js/tree/master/templates[templates] for inspiration. + +This feature hasn't been ported to the JavaScript CLI (and API) or the standalone executables. + + +== Node / JavaScript Setup + +=== Prerequisites + +First you must install and configure {uri-nodejs-download}[Node] on your machine. + +[[node-install]] +=== Install + +We recommend to install the dependencies in a project directory, such as the directory where your AsciiDoc presentations are stored. +If you don't have a `package.json` file in your project directory, you can create one to eliminate warnings during the installation using: + + $ npm init -y + +You can now install the dependencies: + + $ npm i --save asciidoctor@^2.0 @asciidoctor/reveal.js + +=== Convert AsciiDoc into slides + +Once the dependencies are installed, verify that the `asciidoctor-revealjs` command is available. +On Linux and macOS, open a terminal and type: + + $ npx asciidoctor-revealjs --version + +On Windows, open PowerShell and type: + + $ .\node_modules\.bin\asciidoctor-revealjs.cmd --version + +The command should report the Asciidoctor CLI version in the terminal: + +[source,console] +---- +Asciidoctor.js 2.0.3 (Asciidoctor 2.0.9) [https://asciidoctor.org] +Runtime Environment (node v10.15.1 on linux) +CLI version 2.0.1 +---- + +If you don't have an existing presentation, you can create a sample presentation named [.path]_presentation.adoc_: + +.presentation.adoc +[source,asciidoc] +---- += Title Slide + +== Slide One + +* Foo +* Bar +* World + +---- + +To convert the sample presentation into slides, open a terminal and type: + + $ npx asciidoctor-revealjs presentation.adoc + +On windows, open PowerShell and type: + + $ .\node_modules\.bin\asciidoctor-revealjs.cmd presentation.adoc + +The above command will generate a file named [.path]_presentation.html_. +You can open this file in a browser. + +==== Using the JavaScript API + +Alternatively, you can use the JavaScript API to register the converter and convert a document: + +.convert-slides.js +[source,javascript] +---- +// Load Asciidoctor.js and the reveal.js converter +var asciidoctor = require('@asciidoctor/core')() +var asciidoctorRevealjs = require('@asciidoctor/reveal.js') +asciidoctorRevealjs.register() + +// Convert the document 'presentation.adoc' using the reveal.js converter +var options = { safe: 'safe', backend: 'revealjs' } +asciidoctor.convertFile('presentation.adoc', options) // <1> +---- +<1> Creates a file named `presentation.html` (in the directory where command is run) + +To execute the script, open a terminal and type: + + $ node convert-slides.js + +You can open the `presentation.html` file in your browser and enjoy! + + +== Standalone Executable + +Pre-built binary packages can be downloaded from our {uri-project-repo}/releases[GitHub release page]. +We provide them for Windows 64-bit, Linux 64-bit and macOS 64-bit. +Open an issue if your platform isn't supported. +The executables are built using the <> toolchain. + +=== Install + +* {uri-project-repo}/releases[Download the executable] for your platform and make it executable with `chmod` or using the files properties' user interface. +* Copy or clone the reveal.js presentation framework in the directory where you will build your slidedeck. + Here we do a shallow clone of the repo: + + $ git clone -b 3.9.2 --depth 1 https://github.com/hakimel/reveal.js.git + +=== Convert AsciiDoc into slides + +Open a terminal where the executable is and type: + + $ ./asciidoctor-revealjs --version + +The command should report the Asciidoctor reveal.js and Asciidoctor CLI version in the terminal: + +[source,console] +---- +Asciidoctor reveal.js 3.0.1 using Asciidoctor.js 2.0.3 (Asciidoctor 2.0.9) [https://asciidoctor.org] +Runtime Environment (node v12.13.1 on linux) +CLI version 3.1.0 +---- + +If you don't have an existing presentation, you can create a sample presentation named [.path]_presentation.adoc_: + +.presentation.adoc +[source,asciidoc] +---- += Title Slide +:revealjsdir: reveal.js + +== Slide One + +* Foo +* Bar +* World + +---- + +To convert the sample presentation into slides, open a terminal and type: + + $ ./asciidoctor-revealjs presentation.adoc + +The above command will generate a file named [.path]_presentation.html_. +You can open this file in a browser. + + +== Syntax Examples + +Let's see some examples of `revealjs` backend features. +Additional examples can be found in the AsciiDoc files (.adoc) in `examples/`. + +=== Basic presentation with speaker notes + +[source, asciidoc] +---- += Title Slide + +== Slide One + +* Foo +* Bar +* World + +== Slide Two + +A Great Story + +[.notes] +-- +* tell anecdote +* make a point +-- +---- + +In previous snippet we are creating a slide titled Slide One with bullets and another one titled Slide Two with centered text (reveal.js`' default behavior) with {uri-revealjs-doc}#speaker-notes[speaker notes]. +Other syntax exists to create speaker notes, see `examples/speaker-notes.adoc`. + +Starting with Reveal.js 3.5 speaker notes supports configurable layouts: +image:https://cloud.githubusercontent.com/assets/629429/21808439/b941eb52-d743-11e6-9936-44ef80c60580.gif[] + +Speaker notes are opened by pressing `s`. +With Reveal.js 3.5 they require a webserver to work. +This limitation is not present in 3.6. +You can get a Web server running quickly with: + + ruby -run -e httpd . -p 5000 -b 127.0.0.1 + +Then use your browser to navigate to the URL \http://localhost:5000. + +=== Slides without titles + +There are a few ways to have no titles on slides. + +* Setting your title to `!` +* Adding the `notitle` option to your slide +* Adding the `conceal` option to your slide + +ifeval::[{safe-mode-level} >= 20] +See <>. +endif::[] +ifeval::[{safe-mode-level} < 20] +Here is an example of the three techniques in action: + +.concealed-slide-titles.adoc +[source,asciidoc] +.... +include::examples/concealed-slide-titles.adoc[lines=5..-1] +.... +endif::[] + +NOTE: `conceal` and `notitle` have the advantage that the slide still has an id so it can be linked to. + +IMPORTANT: Like the first page of an AsciiDoc document, the first slide is handled differently. + To hide the whole slide use the `:notitle:` http://asciidoctor.org/docs/user-manual/#header-summary[document attribute]. + To achieve the effect of hiding only the first slide's title, combine the `:notitle:` attribute on the first slide and use `[%notitle]` on the second slide which will, in effect, be your first slide now. + + +=== Background Colors + +Background colors for slides can be specified by two means: a classic one and one using AsciiDoc roles. +See <> for more examples. + +==== Using AsciiDoc Roles + +Using roles respects the AsciiDoc philosophy of separation of content and presentation. +Colors are to be defined by CSS and the <> need to be used to specify the CSS file to load. +To avoid clashing with existing reveal.js themes or CSS, a specific CSS class called `background` is expected to be present. +Here is an example: + + +[source, asciidoc] +---- += Title +:customcss: my-css.css + +[.red.background] +== Slide One + +Is very red +---- + +.my-css.css +[source, css] +---- +section.red.background { + background-color: red; +} +---- + +NOTE: The `canvas` keyword can be used instead of `background` for the same effect. + +==== Classic + +[source, asciidoc] +---- +[background-color="yellow"] +== Slide Three + +Is very yellow +---- + +Slide Three applies the attribute {uri-revealjs-doc}#slide-backgrounds[data-background-color] to the `reveal.js`
tag. +Anything accepted by CSS color formats works. + + +=== Background images + +[source, asciidoc] +---- +[%notitle] +== Grand Announcement + +image::cover.jpg[background, size=cover] +---- + +This will put `cover.jpg` as the slide's background image. +It sets reveal.js`' `data-background-image` attribute. +The `size` attribute is also supported. +See the {uri-revealjs-doc}#image-backgrounds[relevant reveal.js documentation] for details. + +NOTE: Background images file names are now relative to the `:imagesdir:` attribute if set. + +NOTE: The `canvas` keyword can be used instead of `background` for the same effect. + +[source, asciidoc] +---- +[%notitle] +== The Great Goat + +image::https://upload.wikimedia.org/wikipedia/commons/b/b2/Hausziege_04.jpg[canvas,size=contain] +---- + +As you can see, you can use a URL to specify your image resource too. + + +[#background_videos] +=== Background videos + +A background video for a slide can be specified using the `background-video` element attribute. + +[source, asciidoc] +---- +[background-video="https://my.video/file.mp4",background-video-loop=true,background-video-muted=true] +== Nice background! +---- + +For convenience `background-video-loop` and `background-video-muted` attributes are mapped to `loop` and `muted` options which can be specified with `options="loop,muted"`. + +For example: + +[source, asciidoc] +---- +[background-video="https://my.video/file.mp4",options="loop,muted"] +== Nice background! +---- + +See {uri-revealjs-doc}#video-backgrounds[the relevant reveal.js documentation] for details. +Note that the `data-` prefix is not required in asciidoc files. + + +=== Background iframes + +The background can be replaced with anything a browser can render in an iframe using the `background-iframe` reveal.js feature. + +[source, asciidoc] +---- +[%notitle,background-iframe="https://www.youtube.com/embed/LaApqL4QjH8?rel=0&start=3&enablejsapi=1&autoplay=1&loop=1&controls=0&modestbranding=1"] +== a youtube video +---- + +See {uri-revealjs-doc}#iframe-backgrounds[the relevant reveal.js documentation] for details. + + +=== Slide Transitions + +[source, asciidoc] +---- +[transition=zoom, %notitle] +== Zoom zoom + +This slide will override the presentation transition and zoom! + +[transition-speed=fast, %notitle] +== Speed + +Choose from three transition speeds: default, fast or slow! +---- + +See {uri-revealjs-doc}#slide-transitions[the relevant reveal.js documentation] for details. + + +=== Fragments + +[source, asciidoc] +---- +== Slide Four + +[%step] +* this +* is +* revealed +* gradually +---- + +Slide Four has bullets that are revealed one after the other. +This is what `reveal.js` calls {uri-revealjs-home}/fragments[fragments]. +Applying the step option or role on a list (`[%step]` or `[.step]`) will do the trick. +Here is {uri-revealjs-doc}#fragments[the relevant reveal.js +documentation] on the topic. +Note that only `fade-in` is supported for lists at the moment. + + +=== Stretch class attribute + +Reveal.js supports a special class that will give all available screen space to an HTML node. +This class element is named `stretch`. + +Sometimes it's desirable to have an element, like an image or video, stretch to consume as much space as possible within a given slide. + +To apply that class to block simply use asciidoctor's class assignment: + + [.stretch] + +See {uri-revealjs-doc}#stretching-elements[reveal.js documentation on stretching elements]. + + +=== Videos + +In addition to <>, videos can be inserted directly into slides. +The syntax is the standard http://asciidoctor.org/docs/user-manual/#video[asciidoc video block macro] syntax. + +[source, asciidoc] +---- +== Trains, we love trains! + +video::kZH9JtPBq7k[youtube, start=34, options=autoplay] +---- + +By default videos are given as much space as possible. +To override that behavior use the `width` and `height` named attributes. + + +=== Syntax highlighting + +reveal.js is well integrated with https://highlightjs.org/[Highlight.js] for syntax highlighting. +Asciidoctor reveal.js supports that. +You can activate Highlight.js syntax highlighting (disabled by default) by setting the `source-highlighter` document attribute as follows: + +[source, asciidoc] +---- += Presentation Title +// [...] other document attributes +:source-highlighter: highlightjs +---- + +[NOTE] +==== +By default, we are using a prebuilt version of Highlight.js with 34 commonly used languages hosted on https://cdnjs.com/[cdnjs]. +You can load additionnal languages using the `:highlightjs-languages:` attribute: + +``` +// load yaml and scilab languages +:highlightjs-languages: yaml, scilab +``` + +You can also load Highlight.js from a custom base directory (or remote URL) using the `:highlightjsdir:` attribute: + +``` +// load from a local path +:highlightjsdir: highlight +// load from jsdelivr CDN +//:highlightjsdir: https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@9.18.0/build +==== + +Once enabled, you can write code blocks as usual: + +[source, asciidoc] +.... +== Slide Five + +Uses highlighted code + +[source, python] +---- +print "Hello World" +---- +.... + +By default `[source]` blocks and blocks delimited by `----` will be highlighted. +An explicit `[listing]` block will not be highlighted. +`highlight.js` does language auto-detection but using the `language="..."` attribute will hint the highlighter. +For example this will highlight this source code as Perl: + +[source, asciidoc] +.... +== Slide Five + +[source,perl] +---- +print "$0: hello world\n" +---- +.... + +[NOTE] +Alternatively, you can use http://rouge.jneen.net/[Rouge], http://coderay.rubychan.de[Coderay] or http://pygments.org[Pygments] as syntax highlighters, +if you are using the Asciidoctor/Ruby/Bundler toolchain (not Asciidoctor.js/JavaScript/npm). +Check the `examples/` directory for examples and notes about what needs to be done for them to work. +They are considered unsupported by the asciidoctor-reveal.js project. + + +=== Vertical slides + +[source, asciidoc] +.... +== Slide Six + +Top slide + +=== Slide Six.One + +This is a vertical subslide +.... + +Slide Six uses the vertical slide feature of `reveal.js`. +Slide Six.One will be rendered vertically below Slide Six. +Here is {uri-revealjs-doc}#markup[the relevant reveal.js +documentation] on that topic. + +=== Columns layout + +Inspired by https://bulma.io/[Bulma], Asciidoctor reveal.js supports columns layout out-of-the-box: + +[source, asciidoc] +.... +[.columns] +== 2 columns + +[.column] +-- +* **Edgar Allen Poe** +* Sheri S. Tepper +* Bill Bryson +-- + +[.column] +-- +Edgar Allan Poe (/poʊ/; born Edgar Poe; January 19, 1809 – October 7, 1849) was an American writer, editor, and literary critic. +-- +.... + +If you do not specify a size, each column will have an equal width, no matter the number of columns. + +[source, asciidoc] +.... +[.columns] +== 3 columns + +[.column] +* Java +* **Kotlin** + +[.column] +* Node +* **Deno** + +[.column] +* Ruby +* **Crystal** +.... + +If you want to change the size of a single column, you can use one of the following classes: + +* `is-three-quarters` +* `is-two-thirds` +* `is-half` +* `is-one-third` +* `is-one-quarter` +* `is-full` + +The other columns will fill up the remaining space automatically. + +You can use the following multiples of 20% as well: + +* `is-four-fifths` +* `is-three-fifths` +* `is-two-fifths` +* `is-one-fifth` + +[source, asciidoc] +.... +[.columns] +== Columns with size + +[.column.is-one-third] +-- +* **Kotlin** +* Java +* Scala +-- + +[.column] +-- +Programming language for Android, mobile cross-platform +and web development, server-side, native, +and data science. Open source forever Github. +-- +.... + +The vertical alignment of columns defaults to top aligned. +Content can be centered by adding the `is-vcentered` class to the slide. + +[source, asciidoc] +.... +[.columns.is-vcentered] +== Columns Vertically Centered + +[.column] +-- +* Few +* Bullets +* Here +-- + +[.column] +image::large-image.png[] +.... + +Text alignment of columns is also supported. +Text content on individual columns can be aligned with `has-text-left`, `has-text-right` and `has-text-justified` CSS classes. + +[source, asciidoc] +.... +[.columns] +== Column Text Alignment + +[.column.has-text-left] +-- +Something Short + +Something So Long That We Need It Aligned +-- + +[.column.has-text-justified] +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + +[.column.has-text-right] +-- +Something Short + +Something So Long That We Need It Aligned +-- +.... + + +=== Asciidoctor reveal.js specific roles + +Roles are usually applied with the following syntax where the `important-text` CSS class would be applied to the slide title in the generated HTML: + +[source, asciidoc] +.... +[.important-text] +== Slide Title + +* Some +* Information +.... + +Or + +[source, asciidoc] +.... +[role="important-text"] +== Slide Title + +* Some +* Information +.... + +See https://asciidoctor.org/docs/user-manual/#role[Asciidoctor's documentation] for more details. + +.Image specific note +In addition to the https://asciidoctor.org/docs/user-manual/\#positioning-attributes[existing attributes] to position images, roles can be used as well. However, the shorthand syntax (.) doesn't work in the image macro arguments but must be used above with the angle bracket syntax. +See <> for examples. + +Here is a list of supported roles: + +right:: Will apply a `float: right` style to the affected block + + +=== Asciidoctor reveal.js specific attributes + +==== iFrame Preview Overlay + +The reveal.js feature activated by a global `previewLinks: true` configuration or by adding the `data-preview-link` HTML attribute to `` tags can be activated by using special AsciiDoc attributes. + +On links use the `preview=true` attribute, on images use the `link_preview=true` attribute and globally you can set `:revealjs_previewlinks:` attribute. + +See <> and <> for examples. + + +=== Title slide customization + +The title slide is customized via Asciidoc attributes. +These are the global variable assigned at the top of a document under the lead +title that look like this: `:name: value`. + +This converter supports changing the color, image, video, iframe and +transitions of the title slide. + +Read {uri-revealjs-doc}#slide-backgrounds[the relevant reveal.js documentation] to understand what attributes need to be set. +Keep in mind that for title slides you must replace `data-` with `title-slide-`. + +ifeval::[{safe-mode-level} >= 20] +See <>. +endif::[] +ifeval::[{safe-mode-level} < 20] +Here is an example: + +.title-slide-image.adoc +[source,asciidoc] +.... +include::examples/title-slide-image.adoc[lines=5..-1] +.... +endif::[] + +The title slide is also added a `title` CSS class to help with template customization. + +=== Content meant for multiple converters + +Some content can be created with both slides and book in mind. + +To mark slides split points you can use preprocessor conditionals combined +with a backend declaration. +Breaking points are set using slides with no title `=== !` wrapped in a +conditional: `ifdef::backend-revealjs[=== !]`. +In the end, the whole document has to be compiled with the backend option: +`-b revealjs` + +For example: + +[source, asciidoc] +---- +== Main section + +=== Sub Section + +Small + +Multiline + +intro + +. very +. long +. list +. of +. items + +\ifdef::backend-revealjs[=== !] + +Some overview diagram + +\ifdef::backend-revealjs[=== !] + +Detailed view diagram +---- + + +[[customcss]] +=== CSS override + +If you use the `:customcss:` document attribute, a CSS file of the name given in the attribute is added to the list of CSS resources loaded by the rendered HTML. +Doing so, you can then easily override specific elements of your theme per presentation. + +For example, to do proper position-independent text placement of a title slide with a specific background you can use: + +[source, css] +---- +.reveal section.title h1 { + margin-top: 2.3em; +} + +.reveal section.title small { + margin-top: 15.3em; + font-weight: bold; + color: white; +} +---- + +If the `:customcss:` attribute value is empty then `asciidoctor-revealjs.css` is the CSS resource that the presentation is linked to. + + +=== Slide state + +Reveal.js supports a {uri-revealjs-doc}#slide-states[data-state] tag that can be added on slides which gets rendered into `
` tags. +In AsciiDoc the `data-state` can be applied to a slide by adding a state attribute to a section like this: + +[source, asciidoc] +---- +[state=topic] +== Epic Topic +---- + +That state can be queried from JavaScript or used in CSS to apply further customization to your slide deck. +For example, by combining this feature with the <> one, you can alter fonts for specific pages with this CSS: + +[source, css] +---- +@import 'https://fonts.googleapis.com/css?family=Baloo+Bhai'; + +section[data-state="topic"] h2 { + font-family: 'Baloo Bhai', cursive; + font-size: 4em; +} +---- + +=== Admonitions + +Asciidoctor font-based http://asciidoctor.org/docs/user-manual/#admonition[admonitions] are supported. +Make sure to add the following attribute to your document: + +[source, asciidoc] +---- +:icons: font +---- + +Here is an example slide: + +[source, asciidoc] +---- +== But first + +WARNING: This presentation is dangerous! +---- + +Here are details about Asciidoctor's http://asciidoctor.org/docs/user-manual/#admonition-icons[Admonition icons] support. + +=== Supplemental Content with Docinfo +// Originally from https://github.com/asciidoctor/asciidoctor-bespoke#supplemental-content + +It's possible to inject supplemental content into the output document using http://asciidoctor.org/docs/user-manual/#docinfo-file[docinfo files]. +This core feature of AsciiDoc has been adapted to work with the reveal.js converter. + +Currently, there are three insertion locations for docinfo content in a reveal.js document: + +head:: content is inserted after the last child of the `` element +header:: content is inserted before the first child of the `
` element (before the slides) +footer:: content is inserted after the last child of the `
` element (after the slides) + +The content you want to insert goes into a sibling file of the slide deck document with the following filename patterns: + +head:: `docinfo-revealjs.html` +header:: `docinfo-header-revealjs.html` +footer:: `docinfo-footer-revealjs.html` + +For example, let's say you want to embed a tweet into your slide deck. +You might inject the shared embedding JavaScript using a footer docinfo file: + +.src/docinfo-footer-revealjs.html +[source,html] +---- + +---- + +You then need to set the following document attribute in the AsciiDoc header: + +---- +:docinfo: shared +---- + +When this attribute is defined, the converter will automatically read the docinfo file(s) and insert the contents into the specified location in the output document. + + +== Reveal.js Options + +Some attributes can be set at the top of the document that are specific to the `reveal.js` converter. +They use the same name as in the `reveal.js` project except that they are prepended by `revealjs_` and case doesn't matter. +They are applied in the link:templates/document.html.slim[document template]. + +NOTE: Default settings are based on `reveal.js` default settings. + +[cols="1m,1,2"] +|=== +|Attribute |Value(s) |Description + +|:revealjs_theme: +|beige, *black*, league, night, serif, simple, sky, solarized, white +|Chooses one of reveal.js`' {uri-revealjs-doc}#theming[built-in themes]. + +|:revealjs_customtheme: +| +|Overrides CSS with given file or URL. +Default is disabled. + +|:highlightjs-theme: +| +|Overrides https://highlightjs.org[highlight.js] CSS style with given file or URL. +Default is built-in [path]_lib/css/zenburn.css_. + +|:revealjsdir: +| +|Overrides reveal.js directory. +Example: ../reveal.js or +https://cdn.jsdelivr.net/npm/reveal.js@3.9.2. +Default is `reveal.js/` unless in a Node.js environment where it is `node_modules/reveal.js/`. + +|:revealjs_controls: +|*true*, false +|Display presentation control arrows + +|:revealjs_controlsTutorial: +|*true*, false +|Help the user learn the controls by providing hints, for example by bouncing the down arrow when they first encounter a vertical slide + +|:revealjs_controlsLayout: +|edges, *bottom-right* +|Determines where controls appear, "edges" or "bottom-right" + +|:revealjs_controlsBackArrows: +|*faded*, hidden, visible +|Visibility rule for backwards navigation arrows; "faded", "hidden" or "visible" + +|:revealjs_progress: +|*true*, false +|Display a presentation progress bar. + +|:revealjs_slideNumber: +|true, *false*, h.v, h/v, c, c/t +a|Display the page number of the current slide. +*true* will display the slide number with default formatting. +Additional formatting is available: + +h.v:: horizontal . vertical slide number (default) +h/v:: horizontal / vertical slide number +c:: flattened slide number +c/t:: flattened slide number / total slides + +|:revealjs_showSlideNumber: +|*all*, speaker, print +a|Control which views the slide number displays on using the "showSlideNumber" value: + +all:: show on all views (default) +speaker:: only show slide numbers on speaker notes view +print:: only show slide numbers when printing to PDF + +|:revealjs_hash: +|true, *false* +|Add the current slide number to the URL hash so that reloading the page/copying the URL will return you to the same slide + +|:revealjs_history: +|true, *false* +|Push each slide change to the browser history. Implies `hash: true` + +|:revealjs_keyboard: +|*true*, false +|Enable keyboard shortcuts for navigation. + +|:revealjs_overview: +|*true*, false +|Enable the slide overview mode. + +|:revealjs_touch: +|*true*, false +|Enables touch navigation on devices with touch input. + +|:revealjs_center: +|*true*, false +|Vertical centering of slides. + +|:revealjs_loop: +|true, *false* +|Loop the presentation. + +|:revealjs_rtl: +|true, *false* +|Change the presentation direction to be RTL. + +|:revealjs_navigationMode: +|*default*, linear, grid +|See {uri-revealjs-doc}#navigation-mode for details + +|:revealjs_shuffle: +|true, *false* +|Randomizes the order of slides each time the presentation loads + +|:revealjs_fragments: +|*true*, false +|Turns fragments on and off globally. + +|:revealjs_fragmentInURL: +|true, *false* +|Flags whether to include the current fragment in the URL, so that reloading brings you to the same fragment position + +|:revealjs_embedded: +|true, *false* +|Flags if the presentation is running in an embedded mode (i.e., contained within a limited portion of the screen). + +|:revealjs_help: +|*true*, false +|Flags if we should show a help overlay when the questionmark key is pressed + +|:revealjs_showNotes: +|*true*, false +|Flags if speaker notes should be visible to all viewers + +|:revealjs_autoPlayMedia: +|*null*, true, false +a|Global override for autolaying embedded media (video/audio/iframe) + +null:: Media will only autoplay if data-autoplay is present +true:: All media will autoplay, regardless of individual setting +false:: No media will autoplay, regardless of individual setting + +|:revealjs_preloadIframes: +|*null*, true, false +a|Global override for preloading lazy-loaded iframes + +null:: Iframes with `data-src` AND `data-preload` will be loaded when within the `viewDistance`, iframes with only `data-src` will be loaded when visible +true:: All iframes with `data-src` will be loaded when within the `viewDistance` +false:: All iframes with `data-src` will be loaded only when visible + +|:revealjs_autoSlide: +| +|Delay in milliseconds between automatically proceeding to the next slide. +Disabled when set to *0* (the default). +This value can be overwritten by using a `data-autoslide` attribute on your slides. + +|:revealjs_autoSlideStoppable: +|*true*, false +|Stop auto-sliding after user input. + +|:revealjs_autoSlideMethod: +|*Reveal.navigateNext* +|Use this method for navigation when auto-sliding + +|:revealjs_defaultTiming: +| +|Specify the average time in seconds that you think you will spend presenting each slide. +This is used to show a pacing timer in the speaker view. +Defaults to *120* + +|:revealjs_totalTime: +| +|Specify the total time in seconds that is available to present. +If this is set to a nonzero value, the pacing timer will work out the time available for each slide, instead of using the defaultTiming value. +Defaults to *0* + +|:revealjs_minimumTimePerSlide: +| +|Specify the minimum amount of time you want to allot to each slide, if using the totalTime calculation method. +If the automated time allocation causes slide pacing to fall below this threshold, then you will see an alert in the speaker notes window. +Defaults to *0*. + +|:revealjs_mouseWheel: +|true, *false* +|Enable slide navigation via mouse wheel. + +|:revealjs_hideInactiveCursor: +|*true*, false +|Hide cursor if inactive + +|:revealjs_hideCursorTime: +| +|Time before the cursor is hidden (in ms). +Defaults to *5000*. + +|:revealjs_hideAddressBar: +|*true*, false +|Hides the address bar on mobile devices. + +|:revealjs_previewLinks: +|true, *false* +|Opens links in an iframe preview overlay. +Add the `preview=true` attribute on links or `link_preview=true` attribute on images to customize each link individually. + +|:revealjs_transition: +|none, fade, *slide*, convex, concave, zoom +|Transition style. + +|:revealjs_transitionSpeed: +|*default*, fast, slow +|Transition speed. + +|:revealjs_backgroundTransition: +|none, *fade*, slide, convex, concave, zoom +|Transition style for full page slide backgrounds. + +|:revealjs_viewDistance: +| +|Number of slides away from the current that are visible. +Default: *3*. + +|:revealjs_mobileViewDistance: +| +|Number of slides away from the current that are visible on mobile devices. +It is advisable to set this to a lower number than viewDistance in order to save resources. +Default *3*. + +|:revealjs_parallaxBackgroundImage: +| +|Parallax background image. +Defaults to none + +|:revealjs_parallaxBackgroundSize: +| +|Parallax background size (accepts any CSS syntax). +Defaults to none + +|:revealjs_parallaxBackgroundHorizontal: +| +a|Number of pixels to move the parallax background per slide + +- Calculated automatically unless specified +- Set to 0 to disable movement along an axis + +|:revealjs_parallaxBackgroundVertical: +| +a|Number of pixels to move the parallax background per slide + +- Calculated automatically unless specified +- Set to 0 to disable movement along an axis + +|:revealjs_display: +| +|The display mode that will be used to show slides. +Defaults to *block* + +|:revealjs_width: +| +| Independent from the values, the aspect ratio will be preserved + when scaled to fit different resolutions. Defaults to *960* + +|:revealjs_height: +| +| See `:revealjs_width:`. Defaults to *700* + +|:revealjs_margin: +| +| Factor of the display size that should remain empty around the content. Defaults to *0.1* + +|:revealjs_pdfseparatefragments: +|*true*, false +|In PDF export, put each fragment on a separate page. +Defaults to *true* + +|:revealjs_pdfmaxpagesperslide: +| +|In PDF export, when a slide does not fit on a single page, maximum number of pages. +Defaults to *1* + +|=== + +If you want to build a custom theme or customize an existing one you should +look at the +{uri-revealjs-gh}/css/theme/README.md[reveal.js +theme documentation] and use the `revealjs_customtheme` AsciiDoc attribute to +activate it. + + +=== PDF Export + +Follow {uri-revealjs-doc}#pdf-export[reveal.js' documentation] for PDF export. +We would add that we have successfully used PDF export without the requirement of a Web server. + + +=== Default plugins + +By default, generated presentations will have the following reveal.js plugins enabled: + +* plugin/zoom-js/zoom.js +* plugin/notes/notes.js + +All these plugins are part of the reveal.js distribution. + +To enable or disable a built-in plugin, it is possible to set the `revealjs_plugin_[plugin name]` attribute to `enable` or `disable`. + +For example, to disable all the default plugins set the following document attributes: + +---- +:revealjs_plugin_zoom: disabled +:revealjs_plugin_notes: disabled +---- + + +=== Additional plugins + +Additional reveal.js plugins can be installed and activated using AsciiDoc attributes and external javascript files. + +. Extract the plugin files in a directory +. Create a JavaScript file that will contain the JavaScript statements to load the plugin (only one required even if you are using several plugins) +. Add a `:revealjs_plugins:` attribute to point to that JavaScript file +. (Optional) Add a `:revealjs_plugins_configuration:` attribute to point to a JavaScript file that configures the plugins you use + +Looking at the example provided in the repository will provide guidance: link:examples/revealjs-plugins.adoc[AsciiDoc source], link:examples/revealjs-plugins.js[Plugin Loader], link:examples/revealjs-plugins-conf.js[Plugin Configuration]. + +Read {uri-revealjs-doc}#dependencies[the relevant reveal.js documentation] to understand more about reveal.js plugins. +A {uri-revealjs-gh}/wiki/Plugins,-Tools-and-Hardware[list of existing reveal.js plugins] is also maintained upstream. + + +== Minimum Requirements + +Our requirements are expressed in our packages and by our dependencies. +Basically, all you need is the package manager of the flavor of Asciidoctor reveal.js you are interested to run: + +* With Ruby / Bundler: A https://www.ruby-lang.org/en/downloads/[recent Ruby] and https://bundler.io/[Bundler] +* With JavaScript (Node.js) / npm: a https://nodejs.org/en/download/[recent Node.js] environment + +If you need more details about our dependencies check out Asciidoctor dependencies: + +* With Ruby / Bundler: https://github.com/asciidoctor/asciidoctor/tree/v2.0.10#requirements[Asciidoctor] 2.0.10 +* With JavaScript (Node.js) / NPM: https://github.com/asciidoctor/asciidoctor.js/blob/v2.0.3/packages/core/package.json[Asciidoctor.js] 2.0.3 + + +[[revealjs-compatibility-matrix]] +== reveal.js Compatibility Matrix + +We try as much as possible to be compatible with a broad range of reveal.js versions. +However, changes made by that project sometimes forces us to drop compatibility with older reveal.js releases. +This table tracks this compatibility. + +|=== +|Asciidoctor reveal.js version |reveal.js version + +|4.x +|3.9 - 3.8 + +|3.x, 2.x, 1.x +|3.7 - 3.0 + +|Unversioned releases +|2.x +|=== + + +[[asciidoctorjs-compatibility-matrix]] +== Asciidoctor.js Compatibility Matrix + +NOTE: This section is intended only for more advanced users who combine extensions or maintain slide decks over many releases and need to update their dependencies. + +Due to our Ruby to JavaScript conversion process, published npm packages have strict requirements with which version of Asciidoctor.js they are compatible with. +This table tracks this compatibility. + +|=== +|Asciidoctor-reveal.js version |Asciidoctor.js version + +|3.x +|2.x + +|2.x +|1.5.9 + +|1.1.x +|1.5.6-preview.4 +|=== + +Be aware that it is always possible to recompile the converter into JavaScript from source so compatibility can be created by anyone if needed. +More details on that topic can be found link:HACKING.adoc#node-binary-compatibility[in the development guide]. + + +== Showcase Presentations + +=== Power Catchup -- Everything Practical and Important in Java 9 to 13 + +A smooth presentation, featuring video backgrounds, slide transitions, code and callout examples and the use of notes. + +https://bentolor.github.io/java9to13/[Presentation] and https://github.com/bentolor/java9to13[source] + +==== Screenshots + +image:{showcasedir}/java9to13_4.png[width=200,link=./{showcasedir}/java9to13_4.png] image:{showcasedir}/java9to13_1.jpg[width=200,link={showcasedir}/java9to13_1.jpg] + +image:{showcasedir}/java9to13_2.jpg[width=200,link={showcasedir}/java9to13_2.jpg] +image:{showcasedir}/java9to13_3.png[width=200,link={showcasedir}/java9to13_3.png] + + +== Contributing + +Interested in contributing? +We are interested! +Developer-focused documentation is link:HACKING.adoc[over here]. + + +== Copyright and Licensing + +Copyright (C) 2012-2020 {authors} and the Asciidoctor Project. +Free use of this software is granted under the terms of the MIT License. + +ifdef::env-github,env-browser[See the <> file for details.] diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/Rakefile b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/Rakefile new file mode 100644 index 00000000..3972924e --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/Rakefile @@ -0,0 +1,161 @@ +#!/usr/bin/env rake + +require 'asciidoctor' +require 'asciidoctor/doctest' +require 'colorize' +require 'tilt' +require 'rake/testtask' + +CONVERTER_FILE = 'lib/asciidoctor-revealjs/converter.rb' +JS_FILE = 'build/asciidoctor-reveal.js' +DIST_FILE = 'dist/main.js' +TEMPLATES_DIR = 'templates' +PUBLIC_DIR = 'public' + +file CONVERTER_FILE => FileList["#{TEMPLATES_DIR}/*"] do + build_converter :fast +end + +namespace :build do + desc 'Compile Slim templates and generate converter.rb' + task :converter => 'clean' do + # NOTE: use :pretty if you want to debug the generated code + build_converter :fast + end + + desc 'Compile Slim templates and generate converter.rb for Opal' + task 'converter:opal' => 'clean' do + build_converter :opal + end + + desc "Transcompile to JavaScript and generate #{JS_FILE}" + task :js => 'converter:opal' do + require 'opal' + + builder = Opal::Builder.new(compiler_options: { + dynamic_require_severity: :error, + }) + builder.append_paths 'lib' + builder.build 'asciidoctor-revealjs' + + mkdir_p [File.dirname(JS_FILE), File.dirname(DIST_FILE)] + File.open(JS_FILE, 'w') do |file| + template = File.read('src/asciidoctor-revealjs.tmpl.js') + template['//OPAL-GENERATED-CODE//'] = builder.to_s + file << template + end + File.binwrite "#{JS_FILE}.map", builder.source_map + + cp JS_FILE, DIST_FILE, :verbose => true + end +end + +task :build => 'build:converter' + +task :clean do + rm_rf CONVERTER_FILE + rm_rf PUBLIC_DIR +end + +def build_converter(mode = :pretty) + #require 'asciidoctor-templates-compiler' + require_relative 'lib/asciidoctor-templates-compiler' + require 'slim-htag' + + generator = if mode == :opal + Temple::Generators::ArrayBuffer.new(freeze_static: false) + else + Temple::Generators::StringBuffer + end + + File.open(CONVERTER_FILE, 'w') do |file| + puts "Generating #{file.path} (mode: #{mode})." + + Asciidoctor::TemplatesCompiler::RevealjsSlim.compile_converter( + templates_dir: TEMPLATES_DIR, + class_name: 'Asciidoctor::Revealjs::Converter', + register_for: ['revealjs', 'reveal.js'], + backend_info: { + basebackend: 'html', + outfilesuffix: '.html', + filetype: 'html', + supports_templates: true + }, + delegate_backend: 'html5', + engine_opts: { + generator: generator, + }, + pretty: (mode == :pretty), + output: file + ) + end +end + +DocTest::RakeTasks.new do |t| + t.output_examples :html, path: 'test/doctest' + t.input_examples :asciidoc, path: [ *DocTest.examples_path, 'examples' ] + t.converter = DocTest::HTML::Converter + t.converter_opts = { backend_name: 'revealjs' } +end + +Rake::TestTask.new(:test) do |t| + t.test_files = FileList['test/asciidoctor-revealjs/*_test.rb'] + t.warning = false +end + +task 'prepare-converter' do + # Run as an external process to ensure that it will not affect tests + # environment with extra loaded modules (especially slim). + `bundle exec rake #{CONVERTER_FILE}` + + require_relative 'lib/asciidoctor-revealjs' +end + +namespace :examples do + desc 'Converts all the test slides into fully working examples that you can look in a browser' + # converted slides will be put in examples/ directory + task :convert => 'build:converter' do + require 'slim-htag' + require_relative 'lib/asciidoctor-revealjs' + Dir.glob('examples/*.adoc') do |_file| + print "Converting file #{_file}... " + out = Asciidoctor.convert_file _file, + :safe => 'safe', + :backend => 'revealjs', + :base_dir => 'examples' + if out.instance_of? Asciidoctor::Document + puts "✔️".green + else + puts "✖️".red + end + end + end + + task :serve do + puts "View rendered examples at: http://127.0.0.1:5000/" + puts "Exit with Ctrl-C" + Dir.chdir('examples') do + `ruby -run -e httpd . -p 5000 -b 127.0.0.1` + end + end + + task :publish do + FileUtils.rm_rf PUBLIC_DIR + Dir.mkdir PUBLIC_DIR + Dir.mkdir "#{PUBLIC_DIR}/reveal.js" + FileUtils.cp 'src/index.html', "#{PUBLIC_DIR}/index.html" + FileUtils.cp_r 'node_modules/reveal.js/', "#{PUBLIC_DIR}" + FileUtils.cp_r 'examples/images/', "#{PUBLIC_DIR}" + FileUtils.cp 'examples/release-4.0.html', "#{PUBLIC_DIR}/release-4.0.html" + FileUtils.cp 'examples/release-4.0.css', "#{PUBLIC_DIR}/release-4.0.css" + FileUtils.cp 'examples/release-4.1.html', "#{PUBLIC_DIR}/release-4.1.html" + FileUtils.cp 'examples/release-4.1.css', "#{PUBLIC_DIR}/release-4.1.css" + FileUtils.cp 'examples/a11y-dark.css', "#{PUBLIC_DIR}/a11y-dark.css" + end +end + +task 'test' => 'doctest' +task 'doctest:test' => 'prepare-converter' +task 'doctest:generate' => 'prepare-converter' +# When no task specified, run test. +task :default => :test diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/asciidoctor-revealjs.gemspec b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/asciidoctor-revealjs.gemspec new file mode 100644 index 00000000..ab4a8cbd --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/asciidoctor-revealjs.gemspec @@ -0,0 +1,53 @@ +# -*- encoding: utf-8 -*- +require File.expand_path '../lib/asciidoctor-revealjs/version', __FILE__ +require 'open3' + +Gem::Specification.new do |s| + s.name = 'asciidoctor-revealjs' + s.version = Asciidoctor::Revealjs::VERSION + s.authors = ['Olivier Bilodeau'] + s.email = ['olivier@bottomlesspit.org'] + s.homepage = 'https://github.com/asciidoctor/asciidoctor-reveal.js' + s.summary = 'A reveal.js converter for Asciidoctor. Write your slides in AsciiDoc!' + s.description = 'Converts AsciiDoc documents into HTML5 presentations designed to be executed by the reveal.js presentation framework.' + s.license = 'MIT' + + + files = begin + if (result = Open3.popen3('git ls-files -z') {|_, out| out.read }.split %(\0)).empty? + Dir['**/*'] + else + # converter.rb is built locally before packaging but ignored by git. Adding manually. + result + ['lib/asciidoctor-revealjs/converter.rb'] + end + rescue + Dir['**/*'] + end + # TODO should we still package template files now that they are built into ruby? + s.files = files.grep %r/^(?:(?:examples|lib|templates)\/.+|Gemfile|Rakefile|(?:CHANGELOG|LICENSE|README)\.adoc|#{s.name}\.gemspec)$/ + + s.executables = ['asciidoctor-revealjs'] + s.extra_rdoc_files = Dir['README.adoc', 'LICENSE.adoc', 'HACKING.adoc'] + s.require_paths = ['lib'] + + s.add_runtime_dependency 'asciidoctor', ['>= 2.0.0', '< 3.0.0'] + s.add_runtime_dependency 'thread_safe', '~> 0.3.5' + s.add_runtime_dependency 'concurrent-ruby', '~> 1.0' + + s.add_development_dependency 'rake', '~> 13.0.0' + s.add_development_dependency 'asciidoctor-doctest', '= 2.0.0.beta.7' + s.add_development_dependency 'minitest', '~> 5.14' + if RUBY_ENGINE != 'jruby' + s.add_development_dependency 'pry', '~> 0.12.0' + s.add_development_dependency 'irb' + s.add_development_dependency 'pry-byebug' + s.add_development_dependency 'pygments.rb' + end + s.add_development_dependency 'colorize' + s.add_development_dependency 'asciidoctor-templates-compiler', '~> 0.6.0' + s.add_development_dependency 'slim', '~> 3.0.6' + s.add_development_dependency 'slim-htag', '~> 0.1.0' + s.add_development_dependency 'rouge' + # Overriden in Gemfile and Gemfile.upstream for now + #s.add_development_dependency 'opal', '~> 0.11.1' +end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/.jrubydir b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/.jrubydir new file mode 100644 index 00000000..1525b296 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/.jrubydir @@ -0,0 +1,83 @@ +.. +. +a11y-dark.css +admonitions-icons.adoc +admonitions.adoc +autoslide.adoc +background-color.adoc +background-color.css +concealed-slide-titles.adoc +custom-layout.adoc +customcss.adoc +customcss.css +data-attributes.adoc +data-background-newstyle.adoc +data-background-oldstyle.adoc +docinfo-footer-revealjs.html +docinfo-revealjs.html +font-awesome-specific-version.adoc +font-awesome.adoc +font-awesome.css +footnotes.adoc +fragments.adoc +fragments.css +grid-layout-3x2.adoc +grid-layout-docinfo-revealjs.html +grid-layout.adoc +history-hash.adoc +history-regression-tests.adoc +history.adoc +images +images.adoc +issue-grid-layout-images.adoc +keyboard-shortcuts.adoc +level-sections.adoc +level-sectnums.adoc +links-preview.adoc +links.adoc +mathjax-cdn.adoc +mathjax.adoc +multi-destination-content.adoc +README.adoc +release-4.0.adoc +release-4.0.css +release-4.1.adoc +release-4.1.css +revealjs-custom-theme.adoc +revealjs-plugin-activation.adoc +revealjs-plugins +revealjs-plugins-conf.js +revealjs-plugins.adoc +revealjs-plugins.js +revealjs-stretch.adoc +slide-numbers-custom.adoc +slide-numbers-for-speaker.adoc +slide-numbers-no.adoc +slide-numbers.adoc +slide-state.adoc +slide-state.css +source-callouts.adoc +source-coderay.adoc +source-emphasis.adoc +source-highlightjs-html.adoc +source-highlightjs-languages.adoc +source-highlightjs.adoc +source-prettify.adoc +source-pygments.adoc +source-rouge-docinfo.html +source-rouge.adoc +speaker-notes.adoc +steps.adoc +tables-styles.adoc +text-alignments.adoc +theme-custom.adoc +theme-custom.css +title-preamble.adoc +title-slide-color.adoc +title-slide-image.adoc +title-slide-video.adoc +title-subtitle-partitioning.adoc +transitions.adoc +vertical-slides.adoc +video.adoc +with-docinfo-shared.adoc diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/README.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/README.adoc new file mode 100644 index 00000000..76e80023 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/README.adoc @@ -0,0 +1,17 @@ += Examples + +Minimal AsciiDoc slide-decks to showcase reveal.js' features or test for regressions. + +They are also used in automated testing. +Because of that some metadata (AsciiDoc comments `//`) is present. + +== Preview examples (ruby) + + $ bundle exec rake examples:convert + +== Preview examples (javascript) + + $ bundle exec rake build:converter:opal + $ npm run examples + +Make sure you have a link between `examples/node_modules/` and `node_modules/` where reveal.js is installed. diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/a11y-dark.css b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/a11y-dark.css new file mode 100644 index 00000000..5c82c4a3 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/a11y-dark.css @@ -0,0 +1,99 @@ +/* a11y-dark theme */ +/* Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css */ +/* @author: ericwbailey */ + +/* Comment */ +.hljs-comment, +.hljs-quote { + color: #d4d0ab; +} + +/* Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #ffa07a; +} + +/* Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #f5ab35; +} + +/* Yellow */ +.hljs-attribute { + color: #ffd700; +} + +/* Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #abe338; +} + +/* Blue */ +.hljs-title, +.hljs-section { + color: #32aaee; +} + +/* Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #dcc6e0; +} + +.hljs { + display: block; + overflow-x: auto; + background: #2b2b2b; + color: #f8f8f2; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +@media screen and (-ms-high-contrast: active) { + .hljs-addition, + .hljs-attribute, + .hljs-built_in, + .hljs-builtin-name, + .hljs-bullet, + .hljs-comment, + .hljs-link, + .hljs-literal, + .hljs-meta, + .hljs-number, + .hljs-params, + .hljs-string, + .hljs-symbol, + .hljs-type, + .hljs-quote { + color: highlight; + } + + .hljs-keyword, + .hljs-selector-tag { + font-weight: bold; + } +} diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/admonitions-icons.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/admonitions-icons.adoc new file mode 100644 index 00000000..7bdb6a98 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/admonitions-icons.adoc @@ -0,0 +1,37 @@ +// .admonitions-font +// :include: //div[@class="slides"] +// :header_footer: += Admonitions +:backend: revealjs + +== Admonition + +IMPORTANT: This presentation is important + +== Admonition block + +[WARNING] +==== +This is a warning block +==== + +== Admonition block complex + +[NOTE] +.Keeping notes +==== +These are very thorough notes. + +* With +* Bullets +==== + +== Admonition with caption + +[TIP, caption='ProTip(TM)'] +.Reveal.JS +==== +Use include blocks to split your talks into small sections. +It's easier to reorganize afterwards. +==== + diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/admonitions.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/admonitions.adoc new file mode 100644 index 00000000..6d5e2667 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/admonitions.adoc @@ -0,0 +1,38 @@ +// .admonitions-font +// :include: //div[@class="slides"] +// :header_footer: += Admonitions +:backend: revealjs +:icons: font + +== Admonition + +IMPORTANT: This presentation is important + +== Admonition block + +[WARNING] +==== +This is a warning block +==== + +== Admonition block complex + +[NOTE] +.Keeping notes +==== +These are very thorough notes. + +* With +* Bullets +==== + +== Admonition with caption + +[TIP, caption='ProTip(TM)'] +.Reveal.JS +==== +Use include blocks to split your talks into small sections. +It's easier to reorganize afterwards. +==== + diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/autoslide.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/autoslide.adoc new file mode 100644 index 00000000..1f30eb2d --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/autoslide.adoc @@ -0,0 +1,22 @@ += Autoslide! +// automatically proceed to the next slide after 5 seconds +:revealjs_autoSlide: 5000 + +== Slide 0 + +I can do it in 5 seconds! + +// on this slide we need 10 seconds +[autoslide=10000] +== Slide 1 + +All things considered, let's try again in 10 seconds. + +[autoslide=1000] +== Slide 2 + +Don't blink or you'll miss me :) + +== Slide 3 + +(: diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/background-color.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/background-color.adoc new file mode 100644 index 00000000..aea56be3 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/background-color.adoc @@ -0,0 +1,45 @@ +// .revealjs-background-color +// Demonstration of background color features of both reveal.js and what can be done with CSS. +// :include: //div[@class="slides"] +// :header_footer: += Colorful Presentation +:backend: revealjs +:customcss: background-color.css +:topic: state=title +:icons: font + +// classic +[background-color="yellow"] +== Hello + +// New: with roles backed by CSS (see background-color.css) +[.red.background] +== Here + +Red + +[.green] +== We + +Green + +NOTE: Green background color shouldn't be applied to the whole slide + +[.blue.canvas] +== Go + +Blue + +// role that alter style but not slide color +[.topic] +== Default color + +but fancy font + +// style role *and* color role (using shorthand markup) +// could also be written in long form like this: +// [role="topic red background"] +[.topic.red.background] +== fancy font + +and color! diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/background-color.css b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/background-color.css new file mode 100644 index 00000000..a45bb228 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/background-color.css @@ -0,0 +1,18 @@ +section.red.background { + background-color: red; +} + +section.green { + background-color: green; +} + +section.blue.canvas { + background-color: blue; +} + +/* font example */ +@import 'https://fonts.googleapis.com/css?family=Baloo+Bhai'; +section.topic h2, +section.topic div p { + font-family: 'Baloo Bhai', cursive; +} diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/concealed-slide-titles.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/concealed-slide-titles.adoc new file mode 100644 index 00000000..e92c522b --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/concealed-slide-titles.adoc @@ -0,0 +1,20 @@ +// .concealed-slide-titles +// The three different ways to hide slide titles +// :include: //div[@class="slides"] +// :header_footer: += Concealed Slide Titles +:backend: revealjs + +== ! + +This + +[%notitle] +== Presentation + +presentation's titles + +[%conceal] +== Concealed + +should be concealed diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/custom-layout.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/custom-layout.adoc new file mode 100644 index 00000000..d18d2c0b --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/custom-layout.adoc @@ -0,0 +1,10 @@ +// .custom-layout +// The three different ways to hide slide titles +// :include: //body/script | //div[@class="slides"] +// :header_footer: += Custom Layout +:revealjs_disablelayout: true + +== Layout Disabled! + +Hello 👋 diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/customcss.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/customcss.adoc new file mode 100644 index 00000000..b64805d2 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/customcss.adoc @@ -0,0 +1,9 @@ +// .customcss +// Use of the customcss attribute to load external CSS +// :include: //head//link[@rel="stylesheet"] +// :header_footer: += Custom CSS +Author +:customcss: customcss.css + +== Slide 1 diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/customcss.css b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/customcss.css new file mode 100644 index 00000000..e5402965 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/customcss.css @@ -0,0 +1,8 @@ +.reveal section h1 { + font-family: cursive; +} + +.reveal section small { + margin-top: 15.3em; + font-family: fantasy; +} diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/data-attributes.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/data-attributes.adoc new file mode 100644 index 00000000..4338254f --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/data-attributes.adoc @@ -0,0 +1,245 @@ +// :include: //div[@class="slides"] +// :header_footer: += Data attributes +:stem: +:icons: font +:source-highlighter: highlight.js +:revealjs_hash: true +:experimental: + +== Reference + +https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes + +// .paragraphs +== Paragraphs + +[.fragment.highlight-blue,data-fragment-index=0] +blue + +[.fragment,data-fragment-index=1] +white + +[.fragment.highlight-red,data-fragment-index=0] +red + +// .inline-images +== Inline images +:imagesdir: images + +image:cute-cat-1.jpg[cute-cat-laying,role="fragment fade-in",data-fragment-index=3] +image:cute-cat-2.jpg[cute-cat-yawning,role="fragment fade-in",data-fragment-index=1] +image:cute-cat-3.jpg[cute-cat-melting,role="fragment fade-in",data-fragment-index=2] + +== Admonitions + +[TIP,role="fragment fade-in",data-fragment-index=3] +==== +Pro tip... +==== + +[WARNING,role="fragment fade-in",data-fragment-index=1] +==== +Watch out for... +==== + +[IMPORTANT,role="fragment fade-in",data-fragment-index=2] +==== +Don't forget... +==== + +== Callout numbers + +[source,js] +---- +console.log('Hello'); // <1> + +console.log('Bonjour'); // <2> + +console.log('Bye'); // <3> +---- +[role="fragment fade-in",data-state="explanation"] +<1> Display `Hello` +<2> Display `Bonjour` +<3> Display `Bye` + +== FAQ + +[qanda,data-count="3"] +What's the deal with this converter?:: +This is the official reveal.js converter for Asciidoctor. +Is it safe to put my credit card number into this presentation?:: +Probably not. +I need all the Powerpoint features:: +No you don’t. + +[[horizontal-list]] +== Horizontal list + +[horizontal,data-style="horizontal"] +Hard drive:: Permanent storage for operating system and/or user files. +RAM:: Temporarily stores information the CPU uses during operation. + +== Description list + +[.operating-systems,data-id="1234"] +Operating Systems:: +* Linux +* macOS +* Windows + +== Example + +[#lorem.ipsum,data-style="lorem ipsum"] +==== +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor +incididunt ut labore et dolore magna aliqua. +==== + +[[images]] +== Images + +:imagesdir: images + +image::cute-cat-1.jpg[cute-cat-laying,height="100px",role="fragment fade-in",data-fragment-index=3] + +image::cute-cat-2.jpg[cute-cat-yawning,height="100px",role="fragment fade-in",data-fragment-index=1] + +image::cute-cat-3.jpg[cute-cat-melting,height="100px",role="fragment fade-in",data-fragment-index=2] + +== Inline links + +Learn how to use xref:images[images,role=fragment,data-fragment-index=1], +xref:horizontal-list[horizontal lists,role=fragment,data-fragment-index=2] +and link:https://duckduckgo.com/[duckduckgo.com,role=fragment,data-fragment-index=3]. + +== Source blocks + +[source,javascript,role=fragment,data-fragment-index=2,data-lang-family=interpreted] +---- +console.log('Hello world') +---- + +[source,kotlin,role=fragment,data-fragment-index=1,data-lang-family=compiled] +---- +println("Hello world") +---- + +== Literal + +Open a terminal and type: + +[data-program-type=bash,data-program-version=1.2.3] + ./forgotten-realms.sh + +[data-output-type=error,data-prompt=y/n] +.... +error: The requested operation returned error: 1954 Forbidden search for defensive operations manual +absolutely fatal: operation initiation lost in the dodecahedron of doom +would you like to die again? y/n +.... + +== Atom podium + +[role=fragment,data-fragment-index=2,data-medal=gold] +. Protons + +[start=2,role=fragment,data-fragment-index=1,data-medal=silver] +. Electrons + +[start=3,role=fragment,data-fragment-index=0,data-medal=bronze] +. Neutrons + +[.columns.wrap] +== Colors + +[.column.fragment,data-fragment-index=1] +-- +image::data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ccircle fill='blue' cx='50' cy='50' r='50'/%3E%3C/svg%3E[width=40%] + +image::data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ccircle fill='yellow' cx='50' cy='50' r='50'/%3E%3C/svg%3E[width=40%] +-- + +[.column.fragment.fade-in-out,data-fragment-index=0] +-- +image::data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ccircle fill='green' cx='50' cy='50' r='50'/%3E%3C/svg%3E[width=40%] +-- + +== Abstract + +[abstract,data-block-type=abstract] +.Abstract +Documentation is a distillation of many long, squiggly adventures. + +== Quote + +[data-context=civil-rights,data-event=speech,data-date=28/08/1963] +> I have a dream that my four little children will one day live in a nation where they will not be judged by the color of their skin, but by the content of their character. I have a dream today! +> -- Martin Luther King Jr. delivering the speech at the 1963 Washington D.C. Civil Rights March. + +== Math! + +[stem,data-algebra-concept=square-root] +++++ +\sqrt{37} = \sqrt{\frac{73^2-1}{12^2}} \approx \frac{73}{12} (1 - \frac{1}{2\cdot73^2}) +++++ + +== Tables + +[cols="1,1",options=header,role=fragment,data-fragment-index=1] +.App +|=== +|Name +|Category + +|Firefox +|Browser +|=== + +[%header,format=csv,role=fragment,data-fragment-index=0] +.Music +|=== +Artist,Track,Genre +The Lumineers,Ho Hey,Folk Rock +|=== + +== TODO + +[%interactive,data-state=in-progress] +- [ ] Dig +- [x] Plant +- [ ] Hose + +== Seagulls + +// Title: Flock Seagulls +// License: Attribution CC 3.0 +// Recorded by Daniel Simion +audio::flock-of-seagulls_daniel-simion.mp3[options="autoplay,loop",data-license="cc-3.0"] + +== Verse + +[verse, Carl Sandburg, two lines from the poem Fog, data-verse-type=poem] +The fog comes +on little cat feet. + +== Video + +video::kZH9JtPBq7k[youtube,start=34,data-video-id=kZH9JtPBq7k] + +== Inline quoted + +I can't believe it, we *won*! + +Type the word [.userinput]#asciidoc# into the search bar. + +Word with an [#bookmark-a]#explicit# id. + +Let's put some [#bookmark-b.concept.word]_emphasis_. + +== Sidebar + +[data-visiblity=visible,data-position=left] +**** +Sidebars are used to visually separate auxiliary bits of content that supplement the main text. +**** diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/data-background-newstyle.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/data-background-newstyle.adoc new file mode 100644 index 00000000..26b98c14 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/data-background-newstyle.adoc @@ -0,0 +1,63 @@ +// .images-data-background-new +// Demonstration of the new image background syntax. +// See https://github.com/asciidoctor/asciidoctor-reveal.js/pull/52 +// :include: //div[@class="slides"] +// :header_footer: += Test slide deck +:imagesdir: images +:backend: revealjs + +[%notitle] +== Opening + +image::cover.jpg[background, size=cover] + +== canvas + +image::cover.jpg[canvas, size=cover] + +== ! + +image::70s.jpg[background, size=cover] + +image::meme-2.jpg[width=500px] + +== I have no background + +== ! + +image::meme-7.png[] + +== ! + +image::70s.jpg[background,size=contain] + +== hey + +image::bio.jpg[background,size=100px] + +=== here + +image::bio.jpg[background,size=200px] + +=== I + +image::bio.jpg[background,size=400px] + +=== come + +image::bio.jpg[background,size=800px] + +== URL goat + +image::https://upload.wikimedia.org/wikipedia/commons/b/b2/Hausziege_04.jpg[background,size=contain] + +[background-color=yellow] +== No [yellow] regression + + +== Empty Vertical top + +=== Vertical with background + +image::70s.jpg[canvas, size=cover] diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/data-background-oldstyle.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/data-background-oldstyle.adoc new file mode 100644 index 00000000..06f75e77 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/data-background-oldstyle.adoc @@ -0,0 +1,44 @@ +// .images-data-background-old +// Demonstration of the old image background syntax. +// We should retain compatibility for a while. +// See https://github.com/asciidoctor/asciidoctor-reveal.js/pull/52 +// :include: //div[@class="slides"] +// :header_footer: += Test slide deck +:imagesdir: images +:backend: revealjs + +[background-image=cover.jpg,background-size=cover] +== ! + +[background-image=70s.jpg,background-size=cover] +== ! + +image::meme-2.jpg[width=500px] + +== I have no background + +== ! + +image::meme-7.png[] + +[background-image=70s.jpg,background-size=contain] +== ! + +[background-image=bio.jpg,background-size=100px] +== hey + +[background-image=bio.jpg,background-size=200px] +=== here + +[background-image=bio.jpg,background-size=400px] +=== I + +[background-image=bio.jpg,background-size=800px] +=== come + +[background-image=https://upload.wikimedia.org/wikipedia/commons/b/b2/Hausziege_04.jpg,background-size=contain] +== URL Goat + +[background-color=yellow] +== No [yellow] regression diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/docinfo-footer-revealjs.html b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/docinfo-footer-revealjs.html new file mode 100644 index 00000000..223258c2 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/docinfo-footer-revealjs.html @@ -0,0 +1,10 @@ + + diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/docinfo-revealjs.html b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/docinfo-revealjs.html new file mode 100644 index 00000000..c482ae87 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/docinfo-revealjs.html @@ -0,0 +1,7 @@ + + diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/font-awesome-specific-version.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/font-awesome-specific-version.adoc new file mode 100644 index 00000000..d2d8de9a --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/font-awesome-specific-version.adoc @@ -0,0 +1,11 @@ +// .font-awesome-specific-version +// Testing font-awesome icons +// :include: //head//link[@rel="stylesheet"] | //div[@class="slides"] +// :header_footer: += Font Awesome Tests +:icons: font +:font-awesome-version: 5.14.0 + +== Updated in Version 5.14.0 + +icon:rust[2x,set=fab] diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/font-awesome.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/font-awesome.adoc new file mode 100644 index 00000000..d01b2529 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/font-awesome.adoc @@ -0,0 +1,43 @@ +// .font-awesome +// Testing font-awesome icons +// :include: //head//link[@rel="stylesheet"] | //div[@class="slides"] +// :header_footer: += Font Awesome Tests +:icons: font +:customcss: font-awesome.css + +== ! + +icon:heart[2x] + +== ! + +icon:heart[size=5x] + +== ! + +[.red] +icon:heart[size=5x] + +== ! + +icon:stackpath[size=5x,set=fab] + +== ! + +icon:twitter[size=5x] + +== Added in 5.15.0 + +icon:vest[size=2x] + +== Sets + +.Brand +icon:creative-commons[size=2x,set=fab] + +.Regular +icon:address-book[size=2x,set=far] + +.Solid +icon:address-book[size=2x,set=fas] diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/font-awesome.css b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/font-awesome.css new file mode 100644 index 00000000..d793d5b5 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/font-awesome.css @@ -0,0 +1,3 @@ +div.red > p > span.icon { + color: red; +} diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/footnotes.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/footnotes.adoc new file mode 100644 index 00000000..52016e26 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/footnotes.adoc @@ -0,0 +1,46 @@ +// .footnotes +// :include: //div[@class="slides"] +// :header_footer: += Presentation +Author Name +:revealjs_theme: simple +:revealjs_transition: none +:revealjs_hash: true + +== Introductionfootnote:[A footnote on introduction?!] + +This is some text.footnote:[An example footnote.] + +== Footnotesfootnote:[A footnote on footnotes?!]footnote:[Another one!] + +A statement.footnote:[Some text.] + +== Press Release + +A statement.footnote:[Clarification about this statement.] + +A bold statement!footnote:disclaimer[Opinions are my own.] + +== Externalized Footnotes + +:fn-hail-and-rainbow: footnote:[The double hail-and-rainbow level makes my toes tingle.] +:fn-disclaimer: footnote:disclaimer[Opinions are my own.] + +The hail-and-rainbow protocol can be initiated at five levels: +double, tertiary, supernumerary, supermassive, and apocalyptic party.{fn-hail-and-rainbow} +A bold statement!{fn-disclaimer} +Another outrageous statement.{fn-disclaimer} + +=== Nestedfootnote:[A footnote on nested?!] + +A statement.footnote:[No need to explain.] + +A statement.footnote:[Might need some clarification...] + +=== Another One + +A statement.footnote:[Do you even...?] + +== Next Topic + +A statement.footnote:[Still here?] diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/fragments.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/fragments.adoc new file mode 100644 index 00000000..0ff21127 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/fragments.adoc @@ -0,0 +1,44 @@ +// .revealjs-features +// This example tests some of reveal.js' fragments features +// :include: //body/script | //div[@class="slides"] +// :header_footer: += Fragments +:revealjs_history: true +:revealjs_fragmentInURL: true +:customcss: fragments.css + +== Fragments + +[%step] +* Fragments +* Are a reveal.js feature +* Very familiar to Powerpoint users + +== Fragments in URL + +[%step] +* With reveal.js 3.6 +* Fragments +* Can now be displayed in URLs + +== Using data-fragment + +[%step] +* You can now +* Do +* Fancy +* CSS Things +* With Fragments +* See `fragments.css` + +== Fragments on paragraphs + +[%step] +This is step one! + +[%step] +-- +This is step two: + + $ echo 'hello world' +-- diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/fragments.css b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/fragments.css new file mode 100644 index 00000000..a20b18a7 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/fragments.css @@ -0,0 +1,18 @@ +@import 'https://fonts.googleapis.com/css?family=Baloo+Bhai'; + +section[data-fragment="2"] p { + font-family: 'Baloo Bhai', cursive; +} + +section[data-fragment="3"] p { + color: black; + flex: 1; + font-size: 2em; + line-height: 1.2; + text-decoration: none; + background-image: linear-gradient(to right, yellow 0, yellow 100%); + background-position: 0 -0.1em; + background-size: 100% 100%; + background-repeat: no-repeat; + transition: background .5s; +} diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/grid-layout-3x2.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/grid-layout-3x2.adoc new file mode 100644 index 00000000..4eb70f10 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/grid-layout-3x2.adoc @@ -0,0 +1,50 @@ +:revealjs_transition: none +:icons: font +:revealjs_theme: white +:revealjs_slideNumber: true +:revealjs_center: false +//:customcss: customcss.css +:revealjs_width: 1680 +:revealjs_height: 1050 +:revealjs_hash: true + +[.columns.wrap] +== Different Colors + +[.column.is-one-third] +[.fragment] +.Title +-- +.Blue +image::https://upload.wikimedia.org/wikipedia/commons/f/ff/Solid_blue.svg[width=40%] +-- +[.column.is-one-third] +[.fragment] +-- +.Solid green but with longer caption +image::https://upload.wikimedia.org/wikipedia/commons/2/29/Solid_green.svg[width=40%] +-- +[.column.is-one-third] +[.fragment] +-- +.Solid red +image::https://upload.wikimedia.org/wikipedia/commons/2/25/Red.svg[width=40%] +-- +[.column.is-one-third] +[.fragment] +-- +.Solid blue +image::https://upload.wikimedia.org/wikipedia/commons/f/ff/Solid_blue.svg[width=40%] +-- +[.column.is-one-third] +[.fragment] +-- +.Blue +image::https://upload.wikimedia.org/wikipedia/commons/f/ff/Solid_blue.svg[width=40%] +-- +[.column.is-one-third] +[.fragment] +-- +.Solid green but with longer caption +image::https://upload.wikimedia.org/wikipedia/commons/2/29/Solid_green.svg[width=40%] +-- diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/grid-layout-docinfo-revealjs.html b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/grid-layout-docinfo-revealjs.html new file mode 100644 index 00000000..4f83d4a7 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/grid-layout-docinfo-revealjs.html @@ -0,0 +1,11 @@ + diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/grid-layout.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/grid-layout.adoc new file mode 100644 index 00000000..67811f81 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/grid-layout.adoc @@ -0,0 +1,194 @@ +// .grid-layout +// Testing our columns roles +// :include: //div[@class="slides"] +// :header_footer: += Grid Layout +:docinfo: private +:source-highlighter: highlight.js +:highlightjs-languages: clojure,scala +:revealjs_hash: true + +[.columns] +== 2 columns + +[.column] +-- +* **Edgar Allen Poe** +* Sheri S. Tepper +* Bill Bryson +-- + +[.column] +-- +Edgar Allan Poe (/poʊ/; born Edgar Poe; January 19, 1809 – October 7, 1849) was an American writer, editor, and literary critic. +-- + +[.columns.wrap] +== Multi-columns with wrap + +[.column] +-- +.Kotlin +[source,kotlin] +---- +fun main() { + println("Hello, World!") +} +---- +-- + +[.column] +-- +.Clojure +[source,clojure] +---- +(defn -main [& args] + (println "Hello, World!")) +---- +-- + +[.column] +-- +.Scala +[source,scala] +---- +object HelloWorld { + def main(args: Array[String]): Unit = { + println("Hello, world!") + } +} +---- +-- + +[.columns] +== Columns with size + +[.column.is-one-third] +-- +* **Kotlin** +* Java +* Scala +-- + +[.column] +-- +Programming language for Android, mobile cross-platform +and web development, server-side, native, +and data science. Open source forever Github. +-- + +[.columns] +== 3 columns + +[.column] +* Java +* **Kotlin** + +[.column] +* Node +* **Deno** + +[.column] +* Ruby +* **Crystal** + + +[.columns.is-half.sunrise.left] +== ! + +[.column.is-half] +* Java +* **Kotlin** + +[.column.is-half] +* Ruby +* **Crystal** + +== Languages + +We will go over languages + +[.columns] +=== Kotlin + +[.column] +[source,kotlin] +---- +fun main() { + println("Hello, World!") +} +---- + +[.column] +-- +* Nice and compact +* Works well on Android +-- + +[.columns] +=== Clojure + +[.column] +[source,clojure] +---- +(defn -main [& args] + (println "Hello, World!")) +---- + +[.column] +-- +* Lisp-like +* Few simple concepts +-- + +[.columns.is-vcentered] +== Vertically Centered Columns + +[.column] +* Java +* **Kotlin** + +[.column] +* Node +* **Deno** + +[.column.is-half] +-- +.Source +[source,asciidoc] +.... +[.columns.is-vcentered] +== Vertically Aligned Columns + +[.column] +* Java +* **Kotlin** + +[.column] +* Node +* **Deno** + +[.column.is-half] +[...] +.... +-- + +[.columns] +== Column Text Alignment + +[.column.has-text-left] +-- +Something Short + +Something So Long That We Need It Aligned +-- + +[.column.has-text-justified] +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + +[.column.has-text-right] +-- +Something Short + +Something So Long That We Need It Aligned +-- diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/history-hash.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/history-hash.adoc new file mode 100644 index 00000000..505c5700 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/history-hash.adoc @@ -0,0 +1,19 @@ +// .hash +// Enables reveal.js hash feature which is good to reload in-progress slides and doesn't push to browser history. +// :include: //body/script | //div[@class="slides"] +// :header_footer: += No History +:backend: revealjs +:revealjs_hash: true + +== First slide + +This Deck + +== Second slide + +You can reload anytime + +== Third slide + +Yet browser history is not spammed diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/history-regression-tests.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/history-regression-tests.adoc new file mode 100644 index 00000000..57f49055 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/history-regression-tests.adoc @@ -0,0 +1,44 @@ +// .history-regression-tests +// Demonstration of revealjs history regression. +// See https://github.com/asciidoctor/asciidoctor-reveal.js/pull/99 and https://github.com/asciidoctor/asciidoctor-reveal.js/issues/127 +// :include: //body/script | //div[@class="slides"] +// :header_footer: += First Slide +:revealjs_history: true + +== Second Slide + +== 3rd Slide +// slide that starts with a number + +== P3rhaps this will not work +// Second char is a number + +== 5th Slide +// is it skipped by reveal.js? + +== Illegal çhàrâctérß + +[[explicit_with_anchor]] +== Explicit section id + +[id=explicit_with_id] +== Another Explicit Section Id + +[#explicit_with_short_anchor] +== 3rd Explicit is the Charm + +== 67848727 +// Everything should be stripped in the id + +== Repeated title + +== ! +// Explicit no title + +== Repeated title +// Exact same title means exact same id + +== hello こんにちは + +== hello 你好 diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/history.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/history.adoc new file mode 100644 index 00000000..ef9549cb --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/history.adoc @@ -0,0 +1,19 @@ +// .history +// Enables reveal.js' browser history feature +// :include: //body/script | //div[@class="slides"] +// :header_footer: += History +:backend: revealjs +:revealjs_history: true + +== First slide + +This + +== Second slide + +Pushes + +== Third slide + +To Browser History Stack diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images.adoc b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images.adoc new file mode 100644 index 00000000..9ae3f17c --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images.adoc @@ -0,0 +1,51 @@ +// .images +// Demonstration of revealjs images embedding with some options. +// :include: //div[@class="slides"] +// :header_footer: += Images tests +:imagesdir: images + +== Normal + +image::web_surfing_time.gif[] + +== Stretched + +[.stretch] +image::web_surfing_time.gif[] + +== Hardcoded + +image::web_surfing_time.gif[width="1200"] + +== Image Floating + +image::web_surfing_time.gif[width=400px,float=right] + +* Some +* Points +* You +* Won't +* Look At + +== Image Role Right + +// This is asciidoctor-revealjs specific, it allows you to put an image on the right even though it is not part of the same block +// It uses custom CSS, see #197. + +image::web_surfing_time.gif[role=right,width=400px] + +* Some +* Points +* You +* Won't +* Look At + +== Image Role Right [alt syntax] + +[.right] +image::web_surfing_time.gif[alt text,width=400px] + +* Yup +* That +* Too diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/.jrubydir b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/.jrubydir new file mode 100644 index 00000000..35c59c82 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/.jrubydir @@ -0,0 +1,13 @@ +.. +. +70s.jpg +asciidoctor-logo.svg +bio.jpg +cover.jpg +cute-cat-1.jpg +cute-cat-2.jpg +cute-cat-3.jpg +flock-of-seagulls_daniel-simion.mp3 +meme-2.jpg +meme-7.png +web_surfing_time.gif diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/70s.jpg b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/70s.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fbee5707ea24e602287e050e45e9247d54304540 GIT binary patch literal 74098 zcmb5Vby%BC_bwVFK#@>d+}&M^7Y|UJ;8L6b!ChM@P$=%M!QHJuf#L<)AjK)g3KVxJ zaMJgCzx~_iT>Jd7C)bm?XRS4B);u#$Cb?(wIRE$q@Ki-nSrLGO0sx>OUx3GTk~9Th zs4W1XtjrF;0ssIYqz3J;3h)UR3ID|jPXGXX6jT5@QvOOw0q_)w|5~>quV??-{H?=> zlw%_E9^}Q3#DvIv5P4;VV*lfF0g0iJ=>On7BxZX59}GuUW_geGkDL|_0KiQ8PYjQb z007p%7--*MpMPMs#6l7IQ3``If7KoaVfROtC zIz4^@5MTj(0R?C%^Z-->6f^>q$Ik%DzuiLn`xyT>p##w{0H~NKSV*n(QvfOo8X77Z z1~Pn1AkqW{6%Bw+0DMM=!S`H73zOc$?QJ3 z0}AA5Aie)@?$OXuP=NppOr(;F0DyvyifjNC{qLjx*E`ah0G;j`pA1mT;yFD7zuPxL zS?$EazT?M504^F*O@KxKkOs7lJ~g1A+bx!C4k%m5% zBCc*%b*WY(PfGUSyPO>jajyJuB2jc#nTu<3#ItV%R6_#u(y!Oheub#GQNF(MDQ}_B zy!;I&>#NbjV^m(meS^8}w9^943F{yYQ-#rXd}5lp!CU^JbffHf7jt)_ ztv}-rL2%%;X2%?b+yc3{sy8BS*&`gUA9M0~TD!004!3D9*} zFDDp!JCzhSu%o);SbmtO`u?XxE6BbJPi3X#xQ5=3%&j|DC4L5y)u)F_7``E2p^(k@ zOe4+ZFkWM^C5`em3=mj3;Nj$B9d}MRx9Jw6nNx|!e(^+dCXhbci> zvYEgD%`6>Qk{RZ+kX*m=MjEpETo1YMlDS+Cu^zJn*<19{0wHl}bQ8I?ekPASNyox| zD|Uf5Y7ik``K*Yd0_%W@M}U2e6B|77Tt)dpUnS9zrd`T5Cf2vGMuU@Ak@Tuq|Geyz zqWdC{d0ju}8OqLvDQK99ovkpR);fmZuRoe)k3&s z?6$$%vqUP>x0Z-Q!$eDqb>X=OxBK$7OZG2U_>X|)5C`b=M+dQ@TeZ9Ck8h1|L;1y2 z#FW+?qCya@!lgtu3DwVjI%?m9qsNLv7-OPBPSkG`9s%MSXpaC*X+-vjbVk0| zQ6U+N3T}K=OaD>faUGLPLggkX2oHxIZIbm~_Yu%L^$6%(+qTDGq5AkR8@>IzM$?|j zD7D=i?R79dMw46%HUbb`CK*mf%WS47Ij!@n!Pa}D3*~ku779{fKj6+yA;WCp=x)Gz zvZQ~*gOhH*u+Tm>gG3h46yfWb}7Q<+)nb3>SogLlDT7WXv@YR!h zD5iZ4C9IvhrTh!|ajVkyZ?>SEXl`3=6pAy`CxZL*IZOTSqE|pY|IW!(#Lrb#Uv0^~ zzSbD)7|VL|_tzQJN38WW{7SAUF6g7p&ms4AI`z}sLO4}7bEJXNUsjr$+IC;nOj;eC z)fyfwZvCA80?19`{wWD2ExqUPu@+a=_6PrCEy#P+X>wI6JL+1k|gZ zH|z!cg0tAnhV|>uq@e_V-q|(l*U*Tn=0=BqK0NKLNr^s;!^gxFS}f|qTGD1tc)!7d zi|MwMwN5UW8HFNB=XO~;P3WOP84MD*_RYxI7^~R5-3;5Ke_ulUR-DRC8^t>!@RVO> z%E4=cm+`6Fo^J4k@z<4&xfX($M}QzIU{X|Y-LNc&<=qG-W0GH4hCSylRWpwk_~*Vl zF2))uHKyd?3%~d6u~gWh>L8ilY$TeZj^l#tilcAPZ!XJ7xT1<}uU@XY`;rd(*Z;0E z3*8V)#^_488gIC_XQA~G;@T`2`}|afC2>ck&RKYZLip9|yHD5y^kefi^px>We>?(w z?(HY@X_uWXQKNJiFVO@Oorw+&h7*dU`Qkh@Zb_8{-Rm==R!tkq<9$VG(AIj1KEXg5 zV_m>1@u4B**U28lax|7b5VQRcTL?jl6>U|&+GmRl3`)czywsVr5DVgH{FSLq(h z)xz788doAQX|jr7GQbAeaH&J?fyN@|?Uni-xp#cAb3>*#MO9R*K&=vM?i54EX(`UY zAXD~}P06HKoJFEY!##ee)}q;NxbvnjP7R))1y0M*UV&5{+OgL>y)9Xqwxf z!nHpqkue)+zKwZCx_KKXZKM-axw5CPjQ8n1J8tc4-=^M*|05vEn3&>a#HFZV6dE>~ z^+U^~WWk+G%kCQ1t}Vs*LIRO?&>-MPa=a8i(Y8hS4TwOgQHM`{sA-QtrMKqJ>^s+O zqcInYT5HnKqV4-(TJfDlSM{UA%llt-PFLG^a??E2i;i|3Z71Yp(t_4;!$%PH~sC1jWZ zotHL-lE%#503jbd2TERO=f{XtHhx(58aH?8gyfa@_+YA;t6oP;QttxLL^p7<(vI%H zobN}Wh;3o%)YT(zkdha`FVOLWx|4F&r5fI5{2(>Mu(uV&ZnVGL3=)W;ss_b2di%w-*A+A<+tWK8qc1$cREil&c4>-TxC6R zzuB~l_XJ2u%&Kbd9YAYZ)I{|5xMUB6tTGeEyg&P3FoL|pLfa{=#-sHenPO9~!LZo^ z6UDv=vJ}7MJq_llw8dfV?v8dyCN~%Y`H+H1ij(8>;sD$!H?{7h5cS*&?LGI+$#L}x zM-Y@med&V$-5X*u+o9<^C6@R<-}u+KJ{MuV_cJ~%YG=H;BvN){xc9&Qz(K zi=P+k^rj_52Jp=9VC_ivS83X+b=DJVHmxv*!ai+@K0^CKP|O=oh#ldJ7cOh-K|JMm z;C%30U30nTxOg^e#`w?fQDuWJVc$N|ANPDF@m2n5x2MVl0u{|Cs>8SdSo{kVftVj4 zN%rgtb2Ig^E0Jfa5{UrQ_!pxurWWIU;#ScWGd-Ho(l+zOXpZ|*)MqUy+=+i$iHB>& z4&$ns)g;1x7st4wqAGoXkb(VDjt4~1$va2Z3E6hArN>ex$?erPoK@L5%s$R>pLbMy z;Z$%lW54nc-JyPcJIn1d=wOto6&Z*s(uyJF#huSpQ{A^?$mlk?j9M&h2CY&kU8VVn z<3rWbPszxnZW4F{(6X{Nm}H8rx;~9Dx_JZjF(V}Q$7m8-$&y1yHBM6u<((g440rm| zMC7QVolDBUn?vbK1@cDs!%`NCRD-iAC|MGB`83 z#TyA|WvyOaHw|37F|Eub58;Hp@iYDG?{QVKmhkg3lkB_MMo1$E9~kpP#NDq)z@RX~ zdUyTzAEA~Rz1yUv4qsxfiJxriH$N~iX(Ucmj1JCg^O_peSd7||wFU>qT?1cG^ShGC z=G0&31XhG-$RF?VEj!kgDqB5E^PSCzWT=0glX!fsbMH~;GnPDw zF2v0%Rp@g%D>jdIf=`sM!*X`I6*!z&Z2#bJ9 z&<=WXIMpb1W+jhK^VfN3qH3k#%CHLsUG#$6dWR@u&fUU8T`uRJ01@c=UaW5|#o67( z&Vt{=*WhP!+bf&A?gdZUvBZ-F+ zmyjpevK2?W>a&P?V`|-pO?Y`hxKU_hzQIgib)>)|6_SD=V?JT>N&OH|X0NpqCzbNO z$a+|F>2k{?WD(kteGQ_);TO365%1YgI)~Na`aI^~D1NnUH?pcj`#9MYz5QRx1{vsd?V_6;B%%I9bCN>33@|Ik%)VPci0gja z^uF7kF@p$}a8Wp;JKxe&w>s%4Abpl@D+3Ru=q-!mGvC1=o!>ri!4Fc|jgGk(FKV3y zuO~huYK?528YC`%yd5qHTq+rGo4L2Ju=0GsZTqfeoMzzB=7Dk(c#=1Jp2E2o{v95|5|6&qVgFl-rP$vhahk7F7;W3Be%@^!E83ex3Mj{Tr^|Ek za8KSvkqPY!xNRls@W<0~=;=v8g2BD73YW7ktm%C07${@r2G!l7Pgw_CHHZd3mH*Id zYIf!)p)n%*G&)Emwvn(v$dRBfS^+gNYVGVek;c`dqfGeBV2eq2k|Qh;2a?Jxci#4! z7e9SD?68DdoM1Huhg2RI`%jm8;nDv*z1eCLMl1srbefre=dH9KKrEmH+SCtYbU7Oy zB9DLs$A&u<92Nx!29);-t{R!RAjkKiv2O~ya5v)~e6RJC;MUUgIBxSo52)WJW2+Oe zwZ|TA6jDZtn{Z?9Z%T6+@BBl*b)gQ1$f+J|wAe5k=7Iu%6MWMp)0~He9nY7aQ(%1h z(7SKMpKW1J{VY-N48+8hl25I{6L@k_mEP2q#1WxxMvt`7` z{JwAe>$YSvT@YcIVnP3#USU$Hmer3_px*#vnp6kZ>CKhb@rMWAZ{wm*l~|%ps5ThT zPqavqwsjK}C>dF`b>h}mC9ZC?&lz)$pVXZ0AEC-n#ZvN$oR;KWNp(2)F4o&~z}%`A z1|+v~V}j|M({;cbukq3t>lhPv&oAn#J56svH+J2-QNOwE+9-^46Z3SJCB}0HXnpE( z?sEbZsdyZjK4!_26fTcU&abpziPG1s@XglmuLK0m;<>n3kWPnZ#Kil>d2}%xoK}jd zi?b@Fjr7vmA{Ya5j)M~yP^QlEuFV=;!3;00^cm0O-8y~Ou8>>MK6Ii;8l8Y>-t zt-%0M%FDZ}0&_A6EkxD95a!I+Mvf}06&j=M4!L5@m^i;0(>T89RRwF4TsRG{0}179 zpR5O#e!hLKcAL!k2Nn#v&yx~U=kej15r9KXL}O!0|J#JmaTqvWgD{6$qZF5SdUI`T)OLNI znv}@JoCeR*qiT30IdZT+(E}LeF}`+pmr|_0=LxuexijE{H;mR$U0pER(8BW?HPOFh z(?gWAkvqr@e8~54GuhBk*0KqJruO=;XyZw1X=4XZPZJ zT1(RF3#sv{xysqtL&5&;Hah<5x>o*%q&=R#U=dH6YdTKIA~docXhgS?H0l{?hc6YAnj``4p|rHhxR zBt5d_|AYi{{aHx*58DQ`47YUm*xHcOV~&S){`esFfnm)v9WNG7z+i- z5@P@{urV;O@o;f*|6c!h=^us{NzWol?*EP9r9#rGKqLkGKO8L51j$09V4*%ilCXMz zDP9x|B*Tk}frW;S34DU&V4tC&1E16LV-Uz<64LQ$TM{t{xMPJ9%gE_?B#|%*T3Cf8 z7ikqY%D-(oCe^ie^Gum}!t^e&|C^8kym{dBIvLV0<-g4D|1^sX3)wCz=3io2ga8@O zKh!b?00RZdHY0Z%(4V8AG6(<(2<3F15z*1}@nbLw%2;{GYFRL8Te^o8AIty0N#L)i z>^O;tPwVf6m2Zk2ce7>M+{Qf*sEswal<247PDzgZGu#JY!y4xViFrQ?HKvF{SYyKS ztpe6A{tZe54c@RvFR!6RnPyX@8qq1S1{|07dY5VtW+W5b&9F5!&03Sah;ijn6T~S# zTCN4Hk4jYjEvw*RQ(+cw^?^xWrMAe~$Y{)mK)~d*#nI*wFu)u%=*i3w@yo_CIiPQ= zOA7Y=tguvV3nCOSl(4+lSPD~EaLSmi=YF=~d!(!?#Ls-re3vW4FS5z%8;Q-oh)^h% zHI8_(Hq0LMEMOorsIldnZ3KID<;3U(kZZEe`R(eygN${P(Zr1QOkm4CCaA~v>r$91 zp7G0F=PXhogsrg`2{Rj)2gWW>TussF38PI1q#0V4R!|+6>h)n%S5CRssr8zdCv(b8 zLw7P4D*sOJ`VdEmF>tme%QKqQe1_aMc*V|5?FXx3R(83dVNRItNUFUj&LJ?B!GW-K zR54*jMCTw^mes!!n9Bme6v#Lg(ex|StA`4MYD#3~1Vq5j*Nc_fHuT;_MIDXC5Fz3~ zk+C{MiZu!ZImN#FqM44m#VsNYO^9z6g6=7@rvAem({ImCt4rK^|1Q$IzXk@;C3%un z!>I9Vb=GKB=PTG`FM35@CENkLdgwIAhj~29^uXJ5A{P{&_WilxZ>W{N?zaVDe+9hJ zAjZhRD1Xy%yi*?4lnc$Hl=x_(on{da^J~z0&)`%wr~ZiK`iat*{2xAr<@EA|qlAC~ zJGmo@lgKdz9}bWYy|Eau31Sf}yU;N@D|4EVEO+&xqsq8Fbs}tL$07oM74Le6W%HcA zE2*9`ocS&X?@lh0m&c$k#%D}+!UK=!OKQXp$&rGfX7G7@tjuX?osTqCU*Uj$#RuH) zFM9nkD00lZwbsa^N3<7c-?;s=t7F!p@g+}E*qgf>DANJ6Whc1Y* zT<3cOL$fi>)Xoy(V`YP1Jp#`4yRxaSUFHpfDZ4y0@%z5#ozt9@OX<$;*3UY=oQOae zKHwi}N&`+@GTzpPZ6cXq1*=Y9Pt=H=OJcuz+Y6Sn59c-=&e~qzXxJUf2BZdZCo5Zt zX}-0Z!AXAIx&NZ74fT`6J{OTDcF?5pxWi%T+gyTE8VKeLv?C+K@0cx3p=0XH5?(Zy z0(`Pv?;wNP%sksp)<4Mlp`*-|$GGN6wN4@dFDoZHA}FoXa*H%$h6>V0;N!`u)-tYW zbe`yp8^0?SYl?5jz{rgzYe6-H_y;6jIrwvAQhQ6XFTnJL?Bj zh8kj(gww1Jgyh5c-BSY&&z?gUvAIl@nhyjHJ?AmkTl}Ap^=63dA+b;>A298xKieIfilbdD$vbXo`(+)LB$ z%!r?~MchW=luYCe!F`A(^fd}J5?1`b9WO7X)xg8&cGnMZc&-u+(us-;#ya7Y6;164 zX^g5OM8B1y4D(W#_8DsOl)c0rUam|uH&)*DxtKK>)_Xe|DY#6EcfS5Tr_-Dki96nq ztw0;hI8_R)T73k7pX4?I^NjcCM5s}V&W&$uyX zEp)E*+xa4jvTBXwRPn^#sDN)AcGQoh=JXj0A_w10U}_czy-g#6Et!DS#N`b2#aeM# z+@8NcP~?}{Q*W;(F3;lVOG6p7rJxmF5S^x%%X_QERa@ejUZ^vz{(xkOREt_wp-!cs zsliI4@Gj>!FA(;I4l^8ZseL1y(28eEScYkvg%#L|GBHIB{4t>8yEEvrBP>j$C zkW<(u=FrcjABD`g!T|1aMkEKo7nzaF<#yavm|>C%yJ#>qi*XB>Ot{lx8z>Q^AOh}% z=zh4+<=ktIOBrST_@Hhq-cyv=A-ktP_hZ-xK) zrL_Ka=HL+^BV9EEauV`^S(7m`Yc%MrKR?}+MK><-Gb(z=?bHG$cbG?c9v*^?4 z5w5OYhA3{&E9_kXuIAR&NJi!kNSiBSO%`-mb-pP)TCou zkP^M!TfawT%3$cmte$8b2q&hioET^!5M!#}P5oV=Yz&_@R963Vl@!D8t}==m>tMXLB4=o z9Pl`+l~(8~hxG6~DD0uf^Q(h4nus6lb2w<3ej~A8RR%YOeFrwbJ--#9VOO{nAy1l9 z@loGb3WO$~LO0|eV(aJ>2HYBiMvVLjPD*`7i=LlDj3)Xc!!~v;`|#MgRmX~g1xIfr z9sWqLS2-uF72@nM7dCz34TQ$0Dmb1?8kdv&(r9l9?o@zF2@a1IwcJu1qTNy*a#^%S z4rSa3>O2BuDP}y*#a4|!7&JP;WtQM4eqU0H~8_y5vZ}MaLkS@UOk{3AVQjo>LC9wnn z;~D>JWG7YbpQo$QhA7x=+Dk)eK3M85s2nnwOx#F%>a4F<%=O8=QEBx`z77;zm;(=Z zEVFE|Y*u_-Z{%5~=u|!8TwtGz9;qNWiOW;TP3ACGlW#V#tJ0$5t^#^?KwxrZ{2WQp z<5_waUq=rIRl(*1J@Rq>;ny@`7gZ}0ouOCaN`5WQz_DBikr#e~-SYfz&H5v;DpHV_ zFy4&IXo2?f9`JaIU`9{d+d*HuzDCwd;Lt3&!6LeUqH+u(JHTI)l_7+mT+h9;p#kp7 zjpV%P%1XUNZNzRpWH9S%cHaCLemuC+%!MF#Dl?Up%3rS?$q5ng+w{nGMrF`xEIZ>HiC?@10V*6=sQc~S1}ST?7Lc}R30a#xtrmL z?dCnI@gOkg?88*0iZF5&4rGG`_o+nIaTLz>0!Gu|_0_pn zIlSggJYThGe7(ABjG~}pAeKh+)KH2DWh?1p#zCIhM#8`z0;B<9(kc6cCO9!}Pr2=g z={=#A6{o5)-{~34Y+H|*b0(j_5uQVcO^*<#R#Xyt{&_vEfc9iE}tizI5gw}XOG-xPrr)eb&{PO_DoB~S+(xMnBvBbL0mHh=ZSf~1v>WqvaK zf{t+AO9V`B+F_=!q@zt3;_&`gtyArn2?z!}iy{O_UAj$7A%{JpkyC?N@#d5&G};BF zhZlHQD<8-h{u`S7(=;ia4oax`2w-gq*6clxMG3C2A3*eH(csY*o|e|gJ!BG++shu- z8#`U$h=1}f?%l+6F0}Inj#lX)*KjZ`tHsF-8*(W9K?62=5fO*W=1_NE9{unp^hj9!;(FCTZB4WBSxJq57qX__@NBy zJI={4rTkzdBT(NuHeiCRDl{4LD^ z@R=pBDptEoi$S$?*3J4QUb6TeP!Iy6Qs8fSr|~&O7&D5)XdEHfqvN9rZ95_#cPI{8 zx5=u)GG0cAW7puNw2I=ciIprV8pqx3bM>B%RHt2Fj0MZK)&zQ1w+%hWs0IbgYp{tr z;}MxON6btrKWPv)OQ`<|8!LLo-tl4EGj>sk`EKRoTc5VA=J?43{4aRL8_W;%=NOR$ z!Nw}*!e9zv^;Z-sGpUgz&i=ZBFS_{5j*_@%afnV8+U#NE$-M*~`Bb(DI88u;>8S!< zv9|HgSFIJJZre-hMW~LO*%_vn>Ood*1Sivv0BTrs#PxvtqW%NpYOXq~TPFG3bh!wA zOjh^Cm!5hZE8JGts)B0N2sWp>;_g3j2&koEbK3P6vHVQp-a@mvNSi2Zc2JjlKU;2k z&@BeekK#YyCHb74fE*^(z#uOu!!h!_jE!^i_pgF^*UPO(oUY+%<@8DkmbE~%N&34QFQTEfu z>ArR#6c!OaZ)bCcV0=RD&aP>8^ue>I!Rh^;GDu-3UaWyZbN|C!dxQ0Rj zFPHFy_o{_ct1hVqg^XIu4=FHm&LgJa&1K7lGt)X&yog-^q2?KmvUb5H_5)MdOE|Pb zmA$f*q0VP$M<;}CQFahhUkhuVQwwsSwKA<=4_ab}edao&hH{qj>^z}P{p=QU;amvrg3Tl6`X=ZVPI^Q^hp7si zbgf)h@n3xYjdt>;gt8?1V9FV%z8goR!*U88o-C~Y<_=xZJ^H6z5+$Fg5KEYu?wdQE8?gO*Sy z{tOt_!X|4f<-e&QJlvNgNQ#c|zd|Ptvkc>P`J4U_G59kBPEE z+xfZKqBZ9}`@-J*yxqyl*ml0Xj_O>WXwbRYId4}Irr-{=Dlc_5PLNE7{BjrR zxX!(HiA%$*F`7F2C_)wC?}UacDTLDju@NE=N$x3FnNUnvk?bF{)Ty9DuD@*MK7?Q7 zH$}MmM_n{0D*cm=Cw_2-BUa?Sby!W(9P!OIwB0#&-cur2l3{o@O5NGd>x^VM*z38K zA`PG5WvBQM#S{p^o5M%6naSXU(`}M7araNaa+at2c!W4#;v&2?7rwM;b6hg+uq^v9 zfv@YFIOk?WsXj+&M6CM=T@b7sbQ~hQDVE&PeL(BsK{A%%L2~NXU%V+cxbl7+#Qo_0 z<~>7fT-2sTv$~{d;706-)@ttRy!AlaNHQaEG%@n~MYf1~!ogeHC?DNI%g%t5_@h*e zBiM~xt9YdA@^`%wwB_$J1x?v-qV%Dy5+(0%M{*C_Jtg8RM9o#KlN=iXpzStE`T*!5 z)s>of0yL>=2E%c~LDTdY_mD9lsZAU8+UO3$bgVqM-Si)5_lQjaLA!F}dVBQM*lS3+> zabQVxc~sW*YNA}A?e6oM%_9w3{Ys-jw4BA}T|)hSvyUFErFZ=U{Iz*SQjQ0DLJVNL z;zRfCS?Rc(NoV6;TKg6P-ieJe9k00Uo@z&(`h}|}Cvf_xUbgX7-i8G=AwKhTn#9Xr zF@gfOdcB5XiK3~8wgC>Q&9`V4U#~gXzJzb-2=|#XCmE#@r(U#!bIbfjQU#pRj=$%P zWi}R{2hYhW;Sbo)Le%!%W+PK0UH5aKHmrs2x3v-2zue-bhT6?$nAIaH)LAv}YV z9{#dp>Gu8aEGKcsu{j;EvaQX`utnJ!_A`M|XWeK6hc;JeC83dGn5so-&C9~b86;n- zXHex(cY4GJAKoOl zuy|TxI1r)~{9{G%_m+Cr&IVkwfAmm${T4JnqkrVXZ0yC6{jB=e_+=6MXlk3iXh2`; z1wKFFR=Tih$qa0+(kh`@50ZkYt501IR1vj8)TRWfjN&3+VpA@OMbuBKcN(<@F6;i(sDMocad@H{(VLCM{%>R{p7Gs z(mr-hAY_g=g4~Ni>k|0c!v6QHDV?*2(#zZrN$IdJ^mmLfow;vm9HqQHNgOIQbo4!y zGga;J^m|GhV~bFn6UL?L=;+jC5;5tJ+t=#N%`f_EQnk;+JFT$iTGQ!^GL6+cWd{Re z9T05K!E!Mi#x1)zC)eNIJBZ5CzKe2xYt#7CP*UobUG?xv5v zqmg7st{iWZvz#e|M5k48Hh#6vsyg2h)J7$(p);c6w>k3$De(|uy;r5kScu~hK$rc;!e}hh{GQJ+-WOVT z&pYE?(LCSY&%9jskWrgsg@!y~moPy$-0AfQpxxuN(Et9B;lS>Zt#r>3mRB0GNoZn) z$=$ojKNVB;*YaqHq_p>ZScTcq;Yyt;Y{ut24V1+WiFEvfTT1QsI&KywFRm(FR_P|V^eGz^*B5N z$}P=lAdR_%(VVISs?5D7nD&aT3*1Z;hTYOLM9E6ydu6u~Oeah@#QZ&<5KPR|c&E~< zEVrQ%cQi-O@8w7%$;?avmO~I219)z^Ycq(Smeh^)5#SraBP`f^MyPjxe z`_}oDD}81uqm=1nYYSX7T)g)Ps22RX64W{^xWD(3cd{!>e$I-94ARmP@&)ZA+(rK^ zvO#RgE-*I4K6E0sX4%r56oUL(zEAk#^2e;Kknrja4YN_gZ^OVgQoEr*y~3IK2~+bU zJeF~?)(QSL?a)RqSam7it;|Me{u%J3#F#?=ZV)Q2W0#e$jXGuILl+b1r(aojhKigQ zi%rr@7G;T|t)yjU#wjGys%$AH*P+6*+BMXt?z>S#iwt8@$H^}xB_2P222+2ljXi8L* z`)3fVoWT@AI+`4yz@+6i)Il9X!NjX}{j~Km_v72Fx7Kx<%9{uii(bFK zy`S#)>e>wKvr4@Qmm95QUwZ^=AUh)`B0zUmGIaAUZU9eq5{^4RtnvtWQAZvag;UM( zMRQ}UE>*QEVC;`U(riUr_&`IrdDWTyJo4N>BbTpNOzkXYM%?<+AuN>}VFnXU-S!vf znEB-AySpf!{zV5e`j)CAE9jFu+p;#gwx~KmnU8ncekiAui zu0zLB*MsrNmC#Z-sPrV6lg zqI<^;Hn6};2>ipa_0BKiS2HIs)u@CAI|WlHSvcXCz`$$0`ou`w(gBh5FyocWY%FC9 zy>hSjvp3+1(klwmCf_Zp_doWQJfG%Hq-!W!WN8Zc@l^~$`9;^w@6CR)Jc)#;-i({H z3Bf)GiZI2Mm^B`e|BC-ZaMiU@Q>9oqi?}h(GCsv7?+jD*&}%J03~uqz1%w$1M%x-g z({F~o)z+vAzq06?H!|a( zB+!+|$$1*bY8@2wy&R-DbU7htqT_HCtPsgQj}L2k)OV023H3M}FOxDLNy1rVZ z{bRnvLB{lj@b7HR`T+s%jbyc5O<87YP}r44h+M(_0t3j7OG$h~1Wa=GZLRRiSR%t<&EWcu#67dcgU0jlId<`R0JCxo))rxp79~qCC>Y z)5)W3cb(pB{_HaGXk=lo8mSPmZLO3==K31Swh?y+K%o5RDx;`p)*0bl6hM?+X07iWV8FSOXetWh%DmdoIdYLT-M$C-E**u zc2Bs{y;axayQk$dnX0*%o9h7YPF%^J!@1?{axc?zI!c-6zWrEPrg^Yjd{r6pjcI9B z@I&KW8^j-{`9*%Smbtz*f&~WpuAt35#=V*tg6x4RvAs*rO6XC~*Oif_xiX|k!|F zOaC&g-PeIfnTt^R3$Z$QEIdb{jeXlkDCG<_mP+cIZ@GkHeYsn!EuhoIvT9=w{ zQ>QLah`NSBwUo5pSf#=-i^jVzLgNFmaICqLfd!0HZT;&VI2+F1s{5&dn$Ljq*7@QV zBZS@mlACwFD;vzQ%BPlB%+P&V$N@b>9C2LrOdoNTIDaXA;KKT@I1upJ7@}4V6=qW3 zh7Vb8jBkuott_bVfIfL}nXJH&RA#QxpLhEOZLgF|+P1jNPK|coG%cNNR?WYwLGsom z`Zt*A8d{q=mZSZe-(ESE=vY`}p+0}tVl+EX;drBH|LgUlo$0dlOG%6(S(#`}OV#jHaM654sh47LUR8EfyB$!l^Tl?0?$7oL5 zPugd;Jaus!ZQix0RWp@;Lz$>7ls=*vK8?UOY=feQ6AB^^-HW6f6g9yK>M8R9qEd<5 z`#}XB-9^&J#)1(wWlj;)B`nNXo1b3)8w zTqo70Ap{%o)e}TU46A7>lNA@>HnTP=BZJ;o9$tI&bv~lc7K`j&emyZRn>FhGWtx)M zyho{)?w>@UrZr!esA1X2?}#RhJKpl%7S04G%CO>wKgde$2EiZ>jC4Ib^hYsj^E{P{ z-facGisRizNoF+cp9L(|N01SPLP7<50NDuRbq^^JzR z$m40`4On~)LO+r8%taDjTO_S&q$@ zTN?QZSJ*eA`^(1^>hFAG2Nn}E(kqC^e0QG??xYzAv zXao(_rv!I-@_EA=v?Mm_p(dz9TQszyp8Mcai!=QBhSDfLL?PIy#WU>*_@)+OFlL-6 zBp6}4S-lt;bfzJLc?_jc=_-n~?JL_-cT8iUXU&>AsZ3=!+bhY`E)qX?4z4hb$j3~p z%)CVDMCfRo304w2!e{2?*T4DB7+6I4`Ga@TLfq|6)Uo(DQNFc)>drp@QPGc6Z8MhtWtdZPCPN48810M9 z-7Dr<`{sB~G@ha@b>uV;UyH6%e-&wk3UVMY zc$ndd)8o#C8Srewoo4)YKM^>TE9DSP*bz8kG*bh^e+#wp*jJxY4Pdv( zwrS}e1T`}=l!~(L3+%(Gsd4Qk(06dS%yKSD@JeB_I4Rz5qX6< z%`Gv-i`sd;472t9#5DF{3Y&pPm$ZfAHibf{8G(D+QWRUbV6&6=zsOYwU{Z5%KYT#j zk$k|h%Wpjvt(?I&f*;#zHHK#0>(1FJznBcChYCJ4jR?J^eNUB^r9&T)Y?AtZe;c>P zLcGnj4W`}4ZgUhdTT|tT(P`;1cxdkDxU;cOt`n{1r3H*A3*EM zeh}4XYsK!jP7;S1Gf|y#;KLF91hP6Ds^->&g;jD{NG|qlHD`j6U(&OIb$ERG6x21v zYj0>-&n7b@r`2qIm!qxSKfFd6M>sD@Z&#nL)~DPHKka9g>h1?3*@#kcECY)ZS{Q5d zLNlkC?B;U+sl{htJ13GQ_@p_HGH(Z~CMW#}^4PNK6Vwrt}NB>)rX<9FTqW$}!nZn|rZOZqTg_97q|`E~Q2$FCip- zxORj32i1I~_tv%pB>B`liZ+n!zV8frIsauI{hqJw6q}OTe5LJ_BE}#IB4>A zO{&xq>NR>dQj2jd_^~HDgs$sq?@Z)k#v3A_e)5gpvPyVJ2aB; z!#qve)FIKC0ZZSOu@ti6TG%+E?oY(k8pGv>9;E~Pah5BBoAf^}QUmX#DvLwT2SHRU zJf%qPA}{pFEkFTjhPl;yN^?dX6p5Ff%SG`BC?%#8y61Vw{OHquUna#w!kzG^HN-V= z?)mZet%lwN!g;5>^anY|bket;zi^28&crItk!SH4<|W^y~a_yDQL5^PLlZhw``; zlGmsnph!y%*%TpjV z19_etTWdSTVndis2WcisIi#{&g_S!3B{D`G!KGygPGL|X)KNGhg53K(SiqpThW7L$ z$j)E6JpYH!0r2qu0Te;&zN9X50u&AMd~}K!Ld*-7v}vL0-O?=o07&m77Eg}RLt-{> zFuSY`H=Q7IJs|RmmLCd8s9$Tqi-$to%LURO4O)n+q%F9Wimq$vJ@TlQ%3sV2 zCuC^UG#=2ITM@HquvtC?g|LFMkV-CCMPxlHOHBwI zh4hKkQX&{dlDmlNbAfbqm$g8AjEHzXp<5^(^WuvQM z2j)kN8f4Nn{{XmZ@@ltE(Pen*)D~|bI=vtR$*b)How||Ucc>QYH7JvI z1C#DM4XvnCOuwuZmU1f{vsynJgXJ|P254%xQx}dQ(;HO9A}Ok|y+xR{@j=P-jb*dL zNb9~+XSk2O+RU`6>Rv}PmcE*H+I5cavG*U+-LVp)2 z2P8H~P(=Hb$~ej@ZxSdhCLJrJl;hi)=F~;uJ2bJ-dSl*KbD-z#8rcttA*2i@^Bn<* z!{P2BFLg0y#GxxUxO`cOTa^%age%OJx@}RU+P5g~=q8OJVTO?0zqns;p$UPh@T5?y z0fye7+}oIIBWYQ0xGlawth3q{Z!IH)-KWwPkTH1%>Jh0s1B5R~y`s{!9*BH})ys82 zrmLMnY}5vYoHUA-wU~D_!iJq%M-*SFnSk9djI5)$VfKnIJwCD!xp191>a1&VT>K2z zgJE9qw3{v+hMhmA_}Ce$emQgbY((KW43gWRxZ)UZ%bKo&M}sa@)Lr=dI@I=l#e4KR zbqo3_Klhp!A#yEzd6%<>aW@J}=_9Xr43TPOHG&U|VyZ9m1nW2P@XWcLiWO6nz%HVK z+FuUCS?$m}_yp_HSU55t3X4B7{N}5%L-;hSWmJkB9#*qycgPEnJ5gTBN5CcYocJ`p zlJUq~gHZNS{tYjrJU9frwxMz6BhS0ak?`5QBKU0HlI|{H?v)B`8ed3nfJ^BvT!QjF zYfrL~HUT2^ke9ewcN&>Z;&>^tuXvhF&UjJgx_XCrL_0vuHCjm=3Jq#_drn1wNY-r) z@M(E%E-=~PE=8S0dnq3QlhOuk21WguedH{F)IFI**lkv=OV(L_4#K_M{D03ZIXcBn z=A0`tTHp`Y2=VQn)3y;b*rcpzwJF5kG<4ILpOmdd;5kLI4QSC=@VUu zi`_d_oD|TnQ@LQ873WYXu4>+c(w@32(_G`_xz61%)mEyfCh}KpI)FwF>%T8D?9}bhSFSeMo5|( zZPE)QcQhi&8?3Z`NF0(wBv~Q?CT+)N9Lo^0yajuu6_MZuXi0k^=^9N3h^Mqb8Hs6O zUSxc_ZDKu-G?;5(>yXyVJt9punq^U*Pf+h7pgAkFlt|WV7m%_8O=7N)JcXUHA1#$_ z3#*^BE>Dh-GeXCmfGnRHgeyOkSw1?phmhGT{AFcP{f<&~ZKS&KZkYc7IZm=2$DSHk z((UXDJ6BaBStn&iRidHI(jN+$sT#{mTT5*vrLVU2=17Nd!Yq^Kq?&Y!7()seLtrRN z70Y1-2_pp3Et+F?9WrQXi`HoY>7Ht-$=h7oj%8jg{S ziN)aXWhvLsO-0)sg}D^#-kT2`86-{b%y)G1)HJ=q&1FNpKUI{J>d~3zkh*}yH6jT} z@viXGxKVkE4=tk3s=?DDgTv?IBar!q%IY3~p@YCKOLYrBrA3lJaxWv69f}%iIS!jW z!7_)lS4r8SIbgZfq)-DpXrhP3g3Aw3u8`}ghXG=Tz-ufjw6CqlUf|g(+L(kc{hNJw ze)G_GD0~bbf#y}b$4R@vWpA9@rZZ`g4B_4-9RozjkSV=BS*o z>B|m{D2SdT`ed;kj>GcU4`kDMwxBTioxV%0fkmdH8~xXsmj-<${uyB_{0;P!pEhKn z!{|Z~B!nRVa7RP|!=exZ5QG8CN_QD-{{S$!+EaMrZ~20H{Aik!olz~rKUGLgwGzA= z^Q1uEQP_yY4OKuv1hftvuI<*0sr2tx%#$J$6)ZId|(BG?QkmTN- z<4oY$AIt}Jl!8q$9aao3lX#Einvt#7sCZ{9Bkq$j*-a$29Sc|Yj8#qDEbw44S>sJZ%!+IpMW=S*BU?-C z?jM%ld2H@}1$(n-ep5HRxa5}SKH8TE{GUh|VI(EFizJO+bf80)9>f}dvab3WQnjxi@kLH8KYcv9ZmQR4l zl9*?cN#$xt`*m6d*lDPdo*tpB`ga}skf@@l=s zw&`C@Wjbg)be6s?@=}#F-^?yeDR$=MaMievvZb_lXc-~t)>>TpZ)RkOk;w2GWS==G z5JS0!f`hQaP2A?vLPh3FT|9>(i0oc==2mgJzFQUyU(Bsy+gJ>kygjh6Lk&fL1Dio$ zx(2@DXm@mlNeH1|NYX7MxTYGbL))YwVF47?4=(4GM_~(-P=dv#!to`NA0xm3YX-?C zmURU?3?~UgIqg0lro~eP>Mq@?-0DcmP6y=5Y2bGH*KOQ_Mw=xq!b=|g2EF#qSIh# zY4nQQf4o)_uIB4QOX(JJt%A<#VZ}QXA#BnMJDJT~fa%OwwF{T`0=8hfxq%|XH9&+Y zq45Acw1S3j9U*P>f``tKO&@UjM`J@}G`?wAmS2qBgs^w@eby=-85;f!KBWN*CW z0kLRxx84TNEhabAY&AX%`YKp#EBp=pol60!Kj_S(q7a6pgdqSS2tWuz5CS=A)0TiD zo5#9h{N>1}c7^o6II4KwdOx~{H@J}C->n*vQqAH`@JH5DK7K{|c-qHEh0-HcNRC=` z<)9G~!Q#KfB%$0!%ejAuNc9BK!?T`o<8SSgednX5JlV$ce_OnL=1y;oXA8)!&E~*z zcXb7t9~~o2OJf}Cpmt-Lc?xeWB8Sodp`M{lZ;c{~+CcNv17KTi`vYfnFd4m~{Zy)e z8>AH8L2TM7rtqYaf$0O@15NiG(jd@bsdoX$@X{K8a0o1?P~dAXl{Aeo`nj;~SbZRH z_8kxz3)P3aoSO3Mi! zEM6rukuuriq!+uSkd_u2WcV-*VN0lwn%~Sim&g>fso?F1?Y2@hmS!EyC}98;0{)Pu-R8pAvE3; zvg#Sj7fmC!o3505dn0fep(K01{&|7qeD_+Xx;$wqAt@g(n3LuSCv);4$s3&h1Ls4y zGsV2h{w?&_uwuj}Aq`5v^U#ms>8e7{b1OVA&I=QBS<(^oSSh_JxXSY#ap^a4wNW<^Z|r1r+j_`mwjX^qgKtRq4Jq24j zOJ0Z1Z2@4!VZ6d9U#YT|i5-c^+-!KkZkK zy!4dbN1J%dRpxKwnK`~Tt{?YSuXFlT6uw%8G|SC}?m5=bQvuac$*1)x-2K3Unx(J| zI)|D@dO$g3%~dCDo{*Y(g8gg~D{Hy*=>y&Z`>6vhJBJO9$K_Qb&-RKhFKD^@g$V;J z)!C%%yD1bi?l~0IS{jX!rSHn2rV%qWqs!d>8bIK8Hs;!iM%0dwQg{UN5QLgV=G@mv z(r-;VM{`Y8qey1)WdcTu4;oaQ!eFY}h&Z&C93~a!Iz@KUpQ}oZHip&9+6L$}Hr@w^ z`m|-Nukc6qX#T>@l50+Vwo#@?ERoQm0*x|Gj)7!})@hvZ4D5t?kaEEQ$0TbsB!t6B zp%(Iwn24B{m}h*1rA5>o^4dn3H4^gJq;%r-0||zNgs_Yyx5rR}c9~1$HNC^&NKQ1H z+)oD>@?S_8YUQ?(*v`Q;G#RE1EIt8qxkWyJ;sa8_-1#;GB608^}I&HVxXTsPN`-2lE@K>@YX)95!q_ zTEUzM7H}Nm=F)W`IOkL>W_W(%Oyb>8F_zsXrc(X~k$&HUz>|lEO@fE03>9q+kx12XBA3FEMF*%9HhP0aq(-nXx`9J5ShZR_Ig{#Ozo-^> zv{P!-M8lC)$WeLf6Lf|D0CDJ}j$SM@ipq9|htvl<#X!^PreL=}aMvf?JBvuoMJ=2& zH_VLmMbF6dj}HAv&qrLml_&d)U-UHX8BPc!jkHC|@> z&rBX|;%UBo)qehCBR9s@!&Ya7fJ7dDFc#EdaN3!r?h0+Hpds&?tP~J0B1v{?c?!r^ zl}ZOacGC3*&+ytP(>P|T-9yP~=>rT4)SzIT0Mk|ZMKm>8s8fB%NdVcjTWr*#-Ly0? z_)R;NI*SGc2Z+*qiFu*$rlFi#N0UR~Gqwtk zW%A!RHXrKn{e^}iCx#)W82-Xq(_(%$Q-TnO0ELniQwRpuSTvpjLP4#kfQz;eGQvqt zGnA}qGH6KqFWN`*6aN5VvNM>E zy~9_uk-k~(Bc+6sj4y(U8gz>JPc;RSEZGZfswklF(km@r%qeN)SMnvFac-G+732?YU$ha>guyzCJOyIuxs|W+!Kl@SfTMHx`vlPunkf>fcmoEaq|J#2TYN28`O3feZo0yq?@Q{6T?&tW!Eh>nzlEpDL;l}kkwIt)BKA)9yPM*sG7okBrVXI!XfcH`7kP$ zz3pQd;ymRH~dAL<4TaMcV$1AHJe6o&ER$#x{oshX9TosX5*RdxO~D(Ig}TC@T3eA zR2mw05)PvB1??8!v=((XfPKZ}D<)oHav7`z4x2^+ZHBF(PTQv6Y0TmZTX=WQGtzi& z#rqF4@boIVY~HidSbx)B;hjgPc-R?&&FB7E2Z8zid5L+qsS|{Gx8E_a$>m}Z&SK_4 z?wp@#(Y)J8A&+rq)sy&yd|F9fGOIR17AmzE)$%rF<7z#geIN4+Wu-f_8U9Os<*w6K zel}lUkZTT{vd~<{y*_Oatq>G&AqWj1A%p-JLfUlYpbEm9+85Ga;ugZE+C`Mazj&&6 z-g-Z~KbV^A_v)zudziBD6hAdevi|Gz{*6u%9Of=%^(RCj07hBnqtxmnV49~=N)Dhz zoS5@QH&b3DUwp@<<~+rVO;oZszGEZQS{P`%+`wY;6tj4X?K$SrrSh%4AfeM>S*l&Y zx`71@%-tfGH~m0zd;p@DTWl8XqRDPRX-lfmIz=?>EkBfyQvU!bw^%HiwQU#LML;<# z%9U-0cP68qCt&iV0y=5DDP6;?CKg_yrSDCQJj48|CsHUh+dyuxQBK`Ln^m;zAt760 zuAZP!`f3Yo-6L2b>SAP1CouWaSa3Lhn5_Q2JBv04GcAKlKfUR&kHhBaVcqXgu;_KK z@c~npqi{HWRDZ)HMz}`R{umrz7+4mjHvDr?KZHQ8lPlP)yId(eatIJn0u4aSI~oWE zvj84UG@PkJ5%;n_TDcMv4Q3R4kXDUl^CTx3%NK!2)LrmrFOcqWq_B(SuWzEvHm98hiXUdV0b!CaC4Jqr^ShgjbV^Y-pgoX!<*B-6NQ1I!bWz@9j z>m{)0S#>E>_q2GQZG4JlYXa`Gaa6;z7o@O7eCKA+_Ee_5jQ;?LsmzdwiVt@3M~J3u z#{MA_r&Co}mh8Zq8g*I=R+?BeQ!{%3OLK2gV`}W{J$oMb#O5o~lDEPZ^*QruFlK2m z)=|*bQ`hWh%mBAfF{oRl-X)-rn`;&My`i=iU`bKEHI0PyJ<2fK}$h{0h5asol%5Jx(QNu~b) zV||84ovZVj?jg0l!y>(T{{Wa?!1670c-J_6MAixBSMHN-C9pZQZa$SKHC2}PwTw@U z{;N`Lm$|gHN1u4h7^+63ZfQ7b{v$Vo5!XxRwN=_qVKB!kwM(!Mz!7cJrHq$DD$IqQ zNo>8(9C6i3Gi8*Cp=PzJVw}&~6u9(Bx>T$09bGXcZAi%8^gO59)y<;5%&gD*!(Qw< z_`S_&XJ+fH+O7t?eTw{Bxvi<$FNkdKaUYy1ubw7c*L9_#m{U#CG=})PnWzKtCG{ce z*quphoZ`wFMK@5PzEy9u^D*N|L+48d<^97wBfFf-%8(%II-5PCT>f^7ZAUb&pp?Q# z^=i}>A0RVDx2P;$TSn|DXTav$_nwErK9c_c4D)UU(^stYmk)gi{==g5)-Ga5g224n z_=M@6L&S`dNUN({#^WoNh0I*a6kVlN`ze3ZJ2z-;`=|avUyq?4{4att&*?s$(K*|v zYRdM~s4INNz7_5``qB^)P2x)NJ@Yl$y<}8cjQaT+vi^y_7@9_vVpermf0;q3L&Hn^ z$$!)`{tcR&%zt^U*@;KWs*MbP8m32(*Yst7c`x&d90S!Pzs@`O%6fx$#q}1ot0TSu zzPW$YIq)BRzs@`OqMi86Yt#h(hMxdmT)*lH9v`RnlK%iW8{Za2yH(hCbH<}<0Ue-z z4NqLZ&KuzV`G3?o@s#xj_@$npPv~nl4dL}A{&7Qte~B;pgSc@uZKF?(FQxwg(*wUk z_yYRn{{T?T__Fx6xb)e`u5MD)so@@&5q2Cvj!$?iS5ou&qnx zO>k}Ui4}^I@-5f;HQr+8LHtfu=mRzF|i$XA_1Q_JH!!jM_sBfUI; z-r?{TL1$HELdgXb-ZauIpK%CtIeAjYeaZ$K6|CzEH1z4DlZtItdIoc8v1uM>)un*v z)3ktTh|aBM+5=&}Lp(-r4O@d@6>_DRka^CXBPeF{sAypIFs9l-G@DI8p{tNtyqck` zvo}uD(E4Zbbg^c`rm1NwS5LIE;CptAR2w?3oq=#jS2{ZO)(TL(JE~ayHGw-jZJ!UC zR<)?C&UnulzbuVfzFD~4A@Cxxz8hQ3l(SO3Wx8Yb)u&J1r}kOKGEZW}>qQZoSs!)4 zVoPd8q?RpXPgzu^$~XsTU?a=qA*92wQwVu984qRzQ#Btk9eansk(jS>K0g)GDJ7Mu zjXq&kr%W71YHVio6;IP^wq9dOsJWSX%rCUh##P?Pq)Vi4B#-jzf7zZ<#=AwmUMyv4 zSy$>%g^7B7D6!Gd{U`5nwVGO?u5XW-`MZU7nSX;+SF6JR0GLnVUx<88IVx+*%D#sm z`Bewtd;0iCUg7X>#QmR@WPTSn~xrnRZknZ<=BBq%6nNyGx4P~4q zgHpuInH{9ir5w za*~jSi%Am=M2ATVX&Ar#p=}z){{Za^5$a?M5NHOISxBsufO&TnlhiZK7cE2mgSX9$ zWjDBWH}MTZdCa>IhvrH5mvKCceJd5xYOJJ=mmXNJF{?J09o>AFk(Bn6i89OXK8eLO zxt@varnb+-{h`3H$@5cTp@jrQJ>1ZM&<@`oY-?E6vd5f5jfsT!| zSUA6m8v8D5*-KDQ@Km#)HiRk1tb-JV%iw9L@vS<-9&0EOvUacjLl z;~sLQs~(!yF>BoYUb4YI4rvwHk#Bd3tKLF!4`Mf{qh^B;sc6{n9*4qpN2rA27*{G! z;hemuvU@0s^sZzo{Zs*S7_<<9UrE#eMK*PnR#w9 zj3-sG-@A-zs8My5i;fq~W3R{})VP7Vu&@*2=c8t`k$Wvjf)vQwB z5zx&_XcRMhhjUM%zlJMZ$=b)UVXPr>dAvbI=4DsN=q2My@MJlci2neHYnH-hd=K?w zr`BncZZt9cY8fBFMF3lFOSlwUhjx~gB96XX)vOv`@YQQ6Bqo?bwU1;?(*~y9#J*2} zZdyPD=g>WZ?n}5dFoA||5koU`4MZKo4}e^ilbLDs;Z9@Gpw;Gw72ljGsC%>);%YQX^u~_W6V}+v8mi<`j7Cn zh4lfN9}%Uqbq9ys0$O(*?~S)3X{u_NP)}8Yn@>=t^r!-dO{}7Zb#J&@R8v7swGxLV zsPF#pGRzuYV-gnaBHPpkY3b6SA)HzrhGyH+8fm(i4ATo$JG6$tHg||EJxU5tx!xK` zAjA#nH`E}~CJ=kBBpvnvW4DzIstt5wUCU-D+trTG?>jhY2f)U z_cFtpCsln0Ep0DjdX3oR z(_eABJXz9g-rG(Nu?U%2w9+&+*{;Je?9amA7x$}^M9ox}ccAf+zkUwyjJMg6tuF?% zAJrwZ9Xw6y{ZxYG?H%UUg@E|L%DQ~FMAk+Wma2z>Zp#MZvsa5s@C+4 zG76J)oFlD+#9duz8fmrqfb#Vowwouo;lL$(DpdtH3Qy@m?}NkP`Nx?j4e|C(&HU<3 zn|_2(=}+ec`VV;anx;syM{$lnGV4$=ZWCsTHAuc=VtT*(}^Q zKcUE(xN3jhxwvG2?&VL0Z2d{+yhDX2YggsIkMP4o3rD52vAoT9GJZaSo5$Z7H0NKD zrHzxbwvM@vC!CJDc@FK|A#_MbaM|ETl2=PS1re<0I8gb4gfQRKAh3W4 zLJ%ZaO_%VSG)awJT5YYH8I42jFI|vdGO-)0e~44c{{T-zrR090;y9E_(Z-7Gvc6eQ z;(P5j%>^#Bb&?&MV>QbiTD9mceWz2ErizRie*Arm>i*1+!10yS>PhL$Eq6(kN}hMl znSaDAIDeAWxW%)x z4)J<*5R*+v-amytQWsBC5*a=WR<4)N6{&ZY3#7`nHBG2G5yK! zexnk;M@2Q?fT_%1ywfj~t(6&X1I)Rbe`slw?xmQ}$ML9Se*oPFQv%6V(^jCe`4*Kz z12ojwb{$(qEIt5$bE)bLH@FngbphSDsj(j5_sT;T!1t5sS@aN(5dq?y!|wahM{ zS5F|ii%TI}Ih^svnI!woFwFSh>bLO)Q^vIq?yX+os?q-d4(YX2VJzE;P95B(3HcUl z{TlQ>LKGp5MI(52owKOrqMQm*cz63_f1F*eo=yBhox>m6oBZPAbnpFVp~(xVQwwMrXYg$x@(uET3PyR$%Wy14`Rya-skVwSAr54g z>7)(sH)_y3!eL%SjI{En)-_jWaUW$=wx5}p3tHQ>bqqA>74mi#btbP%i9a@}bd#7w z-z`~)J|~)(*@t{RHE^v&1msmMfUVU~EaqL>g)Ov+26wo0bP@8*+iKK2y?GJ8uB9Cz zuVQZxnyO3g9adVYLc(vJKBD_{(_)UAp=7ICs$clF6FGPS|CJloW2+jBDs z4kE;>yhzLI8~*@-W}Ibn&AQ#-T`hjZp^yBVxx2#+HY)lLG4`?B1=|P2uz0Tu%^WaG zc#@CV&3OH}=`0f-iuV%B1c@wireZo4vG~@h*Z%BF@dJrT6spS9{If2?c=la2GwU>O z#EdIcZBIdjVbd8|Ki#X3ukbws*@istd0LxEyhM4QvTBy|8tA0-#6Cr@PGx3GxLM#r zf;3eFkZU;VP*YkgBT6S~c$8Obl+w=HVobvKF`V|_bBXZF)@*sIiJ3u3ZyU(`_Tvm; z?~=(qnpxb0xI*hwGSo`lJlc@Isg$?3Uv2a+i$A8#vALRAHiG>fdTK6`-4$D)4k0xv z)Ul^5pSH)Q54Orto_kMB{td9?XTCq}5g|OyFPZF*!dD1nTx6crrLS-Q03?r8ulaX3 z*4eh&b2_a;v(r#7)k(vwPslDxu@jDcIX=QiXoDd;zp9kXa+3QyIBfzRw1k24UKL&sw*z)eQ5sSZY|?-eBZOv+1?& zC|Gxp@^U)pNZ&k+`Z}i}nMb!jA~qdFmChdlGfxLG1+#D{rV9Yl#++T;UEEOHNb(#$ zED1;+VLsXeGyW)>=COaUqVb-Ye<18ycNXWvKH}Tw%cRLMZ8q*SzA~4UwRD+&EjH#> zsQMNMjZ>LUbW-@nZyHSR5ik5#GPNZG5T{YuVzF|J2UkowN7#dnc=yYJ{?_finoa}@;^ZMPWerdwXH)%JTf7$_J<4JU{;B1 z`FWBU$7h!~<*}oEUq(Xt!#%L8-~JxTipYmKhhB{u=rSkQv-Ui>&-%pGe(;;azTu}C z+_JCtg!E4^Xl5}i>E+|?rmmW-(i&Y>0faVnT2Cb6g@c zAG3MCs;TEZCKJ#-mVaja=C`ML7=EMu7Q5Gy{pNp&L;ZX6!e}?IFY^rh7yjM(;W|FH z9RC1?lNOs(Q@IGM-Ob+8R}s@A4I!Di?J87&u_^=xGArbD67j8E0rfvQcD>?M$xC|w0MjX41NAii@)GxZ z!J}yznT;HO8xJ+j(p6THZfZ#QVO6D6cYBB3L1&&z;A)QZ(pRR&WscfurAK&#NLf2`T6X#g3#HAuYGOL)eP*_mQeGLo zqh}<@40w(kZ-v)gy(!w72=i z%ID3%o<%Xt0-$C@xmX^DQr zCpE9>!P!?ZQvJszo5S1+D0-?n#?Tj|x|+k1($R;)w;4O zt0y&c+oToqVD1^}(lo@h?NKLHS>lOTE|PDDVWu_v3eOzO%NCzmH-yaDQLnIdCHfDh zkdzL0QwEf2w!tWnShU^?=_BEqkhqOJi1>8VPO^A0Wx+hn3hAbjKe1c}E7j$aRjG3G z4fFavx_S!}pW|jzucMZ6!MK!AG}22VBP0`L*8c!dX@ufYOCqgHzgcnOF2t@^t0{WQ z&;E>8G__hOZwkrp4Si~#v6A+?*voMZxTYYIK4r!7E~)z|A-kFX0O1q13+2xL03IIf z?RS<;w}t-zXEE%~2<-82`?Fn=S7mu7lD9LD{Td)lL*fe5$(fm;vBy1n)~DCe{W{Vg zi5h5)m5)4O(|GA*JtfDzn0KpmyZ-<=pMU87t8ZWPnVA!(<6Xm~=g@W82i9NW9;1iI z^S=i08(n2qR(&3`U5AMobk$en8--13xg6}LZE@rTug%1))>5pM0lDK8*{lBm5YYLo z{b{+TUZz2zhj!oELfxW`t4O3r%%k^)6?^mss22715C`QJ$L*AsDsx29*jO7h74ZsltbzAr7uz9C9AC+YnY z@+3He9g11xWJ*=vpis=aimcd@(Ms+G4kb>SoYVNLQuRN$n#5*b%rv)B?FEv}v{KZz zX(x%Ix!ZcszoV5@+fAqN*^FNM+Q5>#UC}cgAL$tmd-9~b_C?0caJ|PPP|?fs+-6r4 zq?r2V_EfO=u+rT&DAM=EaV;xW{ewxdDy(Kxi06fQ$nsm?jU{`CXZcL3EJqoqsHbAs z#d>NK(Z-(2cLIj3z-9YR%QahCmP3T!|8^7-Y z#)h6pY_R7^+4hzQbOhT@9ozsbCMjHJH8Ore>QcD-%}B=bE%Y(oJcq$dmld1Fou;+g z49vDElHwHEYcqA9PxQYVHr_>BinQ2JFNNzH)SF5z@}sN9Wmutvy7pznjfY-Vby~k? zK}v_nn!}-Hvq^HiY?_-!?Q^u|#9~!wo+U@jGH-*kZ7i77GSaoN4U*iq3B{JF`%G7q zP*6c(E)+uP5MGc&u#T`zGROCgAq$7i^B3INLNV5lv2&3oOH1r97%t3!C6l9z?y*O^Q2;YOEvfb1e(d zJGO5D%1K;49~zDGvcK%#<{o{*W?ppfH_pkwv$x)BdUuhPo8w$>K1CCVzqS7WqF*n2 z3Lg;7{b^VDCr8%9=vi-gGfK?L!LE1&i*D-FmAS$^JlCCtN-Fp0nyo!yq2Z|4S5YlD znA1COoo8y{i}4jI>_uHkZXx=O{7Hy5_L+6^H6`O(`#atF;V!&Ia@N$h%=(lS4$kV# zYQK32b;mH(XJ$3=zoR2J_(x&b!#%XB{&K~{Urw5}IbFgqdTlKDz0SKS8O+rpufEeWh5fGGOH~vH27t|ah*JEVIM5a?NuqE%MKmqO*N6%Ofjgcl0qnH)IM?? zRWA$_?Vv5N)wmVXb{*R?mR2GRH5E=FtD7xaON=BQBZkyUc|~E@##>c)5S(T88}BT) zOP;c|#$Q#w@}|Go_l^83(*4Ab4@0R)uh*!R;plZJsWdC&Yn>xY&W z9!hOiR0eNQvzzjPf|0KSLp>@p&fV!0zF@C@l@#`lnil2jBlT`xf^J{5kCv6QaP)=x zOCsr27wKDa)T2z6V6emDzr-9*jA*#wYGulC*Tz+d{9ja_>H|ZkZqW(Xv0vhQ<4a<# zJ!QiW*sDoY#9>ypo}%M)(u=E6>b^8ouYD{AX}l^Gkgy`XQ!n7t7qw~JG`d6K?hA`c zO+KTyNvbACYgu@D`6O1WBQm$J)UJF?qD3eX|4KssyRc|+Z%*Uwn%;`@WuWbi6X*a~Nn<*NPVMMxqEE%TAd$m6E zVVARSOt1Whl>21BC%E3UP}DfCHcf9HeH3~h`de19be#T^U(Q(D?c*~iC%LX{uLS%%Vl&%R zs<3_T3y(h!oyG>0r>>7-ufxUiHI*|;zhO%4Gai=t8r@=MX0I{b{{Uu0vZ=A1T2hPx z937kGrl}u)_+z`L4YJ#>QGb@_6~-D;nxA|A@UQnadunE-Q=rxPI~He+{{X42m~?Ap zN<~X+HKeW~d{wfQ+C^Uc^r%ejlQo*>;Y$IFPLQ)z%U3{Kqzc=I5#(uHKgBHYs=K{W zY#m^op-UA?&03j^*T#z74M_eg<296+wZ&NXp1o~iUN%{5sX<}WX30|Y8LT}tv2ftq z<20Pi+hXgVZ0ujSwaqge?~T*6?YGryHi7>D^_ko@qzuzC+gC^~_^WQAWccdZ3n#{^ zNjh_Wm)!O!?gBdJE`<#g#~~`~aGH-HoGqhBMVwuhR$Nm#s?irUObMdZeNuAxKz;pNWC zNYYB>1w{D=2QdbR)HI5&ptekTcuB%HKBC%uj-d|e7f1+B=LtM33WpiP;-$XLELC{> zN-HS%`5xxSdqUY!jpIALM!(0EG-}2-jOn(Xlj;7K<7Z_nc(qhEqL+H|E||8Z+EVW) zV~WJHn0~J@MSNx2z_9-SFu6V>l-9f>4O!_{ZA^uRUInHZCFxI=RXAr7RFPWUD?zVd zoJnx;$EArYe7Q+Pa1q zuV{B`t*VmBiq2(SsP>sH)qAvGQPX*Y-ti}UYIb&KH}P;b_b8!jJ=?<=^itT(6Qg~H zqB|Og}_3WT81vJwq9R8@M_q++8EEV$-k{D ze+0N<^Jrp;#8ZD*Urt;mw_lCU&&bze@(wb(UsaJ=PG=rHj5x{zmAEc=()srRyI9W< z>3KhiF<-;H$zCCw=Cf6%xrj)nrplDduaTuc8sWj0##w(nCb?}bZly8a0o696Xqx3! zrMP(1GCzmTO8QR2s?ADr7(*77-Oo@OPUH(9gcozLQ$nK16u<@2qU5A~@~%R;)HIE$ z4v<;i(L+$O1uQ$aYME~tOxcoEr{)^Lk#>hOEV5JUD)s*WMVNndCUGmn6E0$vOD~(X z65KI-`HIR_m3xa-pKZKkfy8f-rJC6n?;?1ciqhwHn)5D&i8Bw(KG^$rzhbwkA2wK_ z%+U%z(=& z*;0vlDQ2p{thBJRycjWm6H#uHe8vqdK9(b} z?NUvv_JodgHhYNWGD1rZrBc_Dt<|uqXKE(lzIZS_g^lqdU6#38l~4JGVU7MEtmfG< zRqt|_+J-MIld`>Psj&(vwTpp2B^37SXqbm>_m{S+Vhe}%-+4{R6DgT;7HOyOCQja7 zvh26C*e}kix+L@)Trl`?N{Ga+htNTK5o=+|-Yo4N}20 zBS~TK6R2%v-K22Z%XGXVs%BB3^4DNI6W(ugJj#r>eG*oCZxFfoF`8jLp51WEFB7F} zoAW0s`_g^3tnxc*pA%p=Xsptjy@zgno5d`3)XQH+VO5*8`?R*}Nl?2sq*VGTi!6u9F10|FGf_S zkj#CaKxUgYb6=oqp3h*z;$JR?+g@Nx+}|oWQFOn{pw(O3Kd5VagLezb zoj|niQY38k&&FXks)EHgf~_F3s?|swpAz9S?e_xW3b|Al3BE4iSd7(aU87DOrlwHW z+a|SIu8{cn7fue-(pK=hp?SdVrpinV?-|&>O>;`-t3H|qomQ6Io`J7DM<%CNOC0{E zK|P!mu(vJS0Y!XXrqmkQX+>Iq!wULP_MMv_p%C$8YhtS_iY_^e-bUXr(h~Iv^F5tx ziDOQSpXtmVqmgmU4b*2BxM?iB1&mW`B?{lPt;@L7`-rX&MCY+*{WFXHKkWYi{T=-} zgVsS`J5{H#+#UDnE~GV7$i zCogt*RnjA8TIc1nX%hCA0{Z^|(;_dOr^MANtFf8h{J~v3*^gSbO>$T>nr}L$C9a-d z{$wT{=1ttn>y-p~avAj57D6>)Aizi7%4n zUNWN5q213A=T&HEW~SZ8SzqwxKD}xmn*RXC{aCt6uc=zK_8sPafA(AWj=o`^F4oV7 z(Ek9lJyqEc;uZ{2+_qe)y$}0Ch0pYCj3udcPQEs)VO8VkTPV0>6`nZy40G}FEX{{; zwOKn%ZyKkY8&?}&K2<)m72;W``;Vu3H;jy>TNaz;l=;h5?rN2a-0+>8oc)b1oqe)uiZ5%4MZTiZ3Us}pxP zdbOE(K1S9zZfjInkJu@3ifU%sLf-F-6_qiN@wXj3?8=Pm7)uvu=Ej|<;we4lnHr@k zIrNTV!&`F>;=$3Z)YP2}yK`kydkieS+Grh?_V0ed?QZVNOYcW0m%JjLp+$r!&WE!w{{W`H!wn2RCUeI9s;(U^%_U@5?;FX#=~oY?uJI84G-Ld!t{lLW zuj!u;{rUmNJ5_;hSBun6jJI?Ti$U_H&$zba%_Nko?<@H-a&0bOCj3a@lvSG$(&^jw z7}YjxN59K?c<0ooGd=>TC8@M2xx;)`+QvO}{7B)8X7tbo_xQEL654C5^U;Gxt~00B z+cT6|>R^+8GjOhS@?uv5{8!N`CR*5~$tB+j^IY z_>v2ZO)Tw7{{Z3@?g;HGzu2!8((sVJ$&WgIBEJxeWKgU!eCxyz$^H~@-VCRQyJo!I zVptOL@kae=`!gn;TKe4%H>Ygq*!>>QRj}kUs~%$EkHs8OTO3b1-(ky!Jm*ZQbB)F> zH_x$qu2WYZT!oqOu}3C!$MPpJym~9FZ9ML=Mw{Kw6n69YsEK8fZi`mE4&z_N-)>jr zm9Y0ziBl!$M?8OezBAg)&8UvJ?Cq}M^mg_%``_XY`1UnTywQ6%{7}%*tgB5OXP9|~ zxqo2mdHh#4D|B0|Du}Q19*^1{Tes9d!muajw6IIU)Y(v;DLFQ=y)w1v z_nMU~Lhf#sRZA&v!}xBdR;NjDy~3*Ul#?szycc`VU zyQC9P=aO*@3%yA*)XLfNn_pr*wqCB%{H!u1hVc1w0dS*Ah>GCGcuuc$c#;tZ2+$scHDQXn$*T&k3tKJ%xtrVSQSd;(T#`*iRXp|I0 zq@|@B6a=J&vBBtY;5ND&gHFi_6A)q4fB~anpi~%82`&ZDL`}1a5mR%+=6?^$_PEeFi*lqoT5{Qq8SCHOKfZcMytw>nJ z$%iIjzf{MwPuZYvMuA^M=V};guDjoZXQVdn2n$br+}U6l33|`Hg3g$H`L^^JMk&4j zejvE;Cu&=&Iwvr(eYKb>E3&?%xUiz?fMjymj|(5r9WX5O%Laz?aTp3n!^&hsD6-=( zoAes9;#BB^LG_*9X;&*G8G(bZq}cpFGtwH=VJcxCg4EeMcQmk;D_tAxAC*?APD=4+ zc_RCj6!8LV^6*A^C1^ZvGBmhh@bL5J`+(Fl{C23tjaQ9i%cj#Kks$v-0;A$9_%G_e zG&pM3prwUSLD8RN0gW*dc91u9y3#<+uIvxdRbfeFj1E4x)s3NYie`muSVc5{Ib>yU81<$Z_4{w0~TuSg{8$sV-)Y2 zB2w{=vdhy4461Gu_xOqDFeNGsr(wLi|DR0yx~PkQ5d zvZ;0n-%cpxiO#*^4poM)HoUW2Ros9qSE0hvB!(OQhLR%O?`&~r85|q4>)Y9jpkQZv z*^OcbxSw))FT#uW_^+4Z7^6AgviR_VB`T=dkMhssAAl7qFO{O=0IBik7%c;FJhn;wC z!6sG`-6^=mL>;l;u7WhNx>c$5^K%>H3UL#-0>#@QRSsIiej^{2Wl@DMgVT_6KXCa zNH~RBl_C2EEp9H981_n%^8GRY0xfU`c1>JvpowG7^$9iHKH#m)@)3Fw@#SHjVp%#cUWmGnOM^u8I; zLa&XppA@HvDfMNGTwRd$y&mtUx1JtZvT9?Vwowg?RG3Zs^fIEe3tOHGZ2LO#kBr$= z2I`8v_}ll7Y;%--FiLrBJl~syir{*I+cRRL8OmxZx-;3zUh<;KT<&M||T=6?U<2!!o#ZWiPJ6S~m$ z=t*{64+KA(ll++m7%z8Nx=P}zokXx`hqlg&N#OK_Rv4-N);9*f48`h3h&}S;YY3x; zz6Bbq-=4pdk>Mz&B-x%lGv!v<-8=Yo#`<19J}vv1k@;scwCgI5gz^g#m@X6GO{vmV z@9|-GXSa5rUm{p)opphwqyF8b$@hZeZ%{Y*L#(()XG3dkGNX5+ACn1+g?J7i&8{A< z&s%1B`ZG)&Nw7l^B~=;NDBPsb_qE+w`%l+|!V|qZxh>e{wdv-xK4W@lzt4ry!-=w? za|#-fPB8`iq)CK8AM@PrM$3O>b;n)wF|YQz)_VK2UX0K!pmZ6{BQE=qRZ0PkJ^#rd z^g5)q-C0nmOqe)a#Cr@a8gdnx>d-%#mQv=@BLwAbQZFIUfndZ#@;7elSJZ| z`A~?+xRzEbSS!2g1{Z1nuVcIp&b%wkVnEBg0ep2u+7zb9tx{-KL$Hb=pO#QIbtQih zP5Gk*vcX4btwKL{O_@r-S+WyaGje#~Y%O!B(BPb74CA4ZEQ8<$*t=0<{)SuI!spH= zZL15xxD1!mfN{~-zDJ!X1mbbwWm*pxG_$!hMU{hq1mtwS-Jy`HeFu8VM{e4Ayy|}) zEU@xg!S$yBtZ5SpwP}+DVrycGAt<7g;f5e2P+7oWGC#s@v>NTAY)C{fOwS%B)Ar_Z zCOr5@cH%{evn%ldx%8VpHxS66>>WgY59|Qhh{vTy?6++Nd0}TH^=8kL0Q2-Cx5Mlf zc7C3Xx~0R;=ZyZGQ16_-GP;h?3zf!yeeU`>I&#}O8XwG6|^d*$fovnr?dr<&tQ}QxpkK?|`IU3f2FqZ~uXCE_Kn*ey7&=BN=8As5|Dvt->zGR*uzB0 z2Wr7{`S#Sjt$+sPuZEuwpgvbiV`)VRe)srNzSGlf&18*zH!-J|1ZTC!OZ@I@41r*x zgTNM@sjp)DkO!MWZ)O;sA)-1q9(ac(eD*+u>+|W~SFYx>O&^Jo^?Y0yFNxyw2j*Kl zZ(Psk8*>xT zHB^%>=$E}f^r!MZPPF?o$I>w%UI=x94*emiH{G%6Y>+rRU)YIue*{|*-l)HY!~gCr zdzj+eW?aZA{!EagU*^k-L~|majy0#(qrXq+#cme5qkp`#oIfwM+w}G-a#^(L@DU2l znyhu&lD&C^yl7Ev4?n~#gmT>MC5No$$thln%$?C?GlgBq%lPjX&X<1wf3k>&cM1Sj zl^FDo>=t88^rh^>=14Zn##lE2i?7Ohx|UbJ*J>tor#n5hweKb7ceTYCFq(fr)F1& zRDD`c%@(M9Rt9hqrv4e`f8m2J+g+mGIrgeUc0BxfT4+Ssf1TMa z=eiyilZ+SY7rTL;kDg(!xKt& zw4@RaK0@9z379aseC%U-Lzeed#v^PizxrNVtt)0`BxwAY+KFz9W;HY2T7x`Oz2yYs70qhd`uQ)qbH6>ooThW2Z==7$}( z2G8%O{Uek3N4A6{>w$3W4dep0q%1YhKh@T1uy61k>7ApP**btOmMCEU@){$i?oYZe zCj_t1zEYSMK4N07DEU{mZD2i8EK_N&Spev3DL57o(LP^N!dGQUQS!ET%K9TbGDsy9 zHptfq_&O!`g`u2@ivC_6D7#>^zSo7F=#{5)!%2Arb4WXA&0EM)Zw11s{iFWp_yMAG zq*B>nNHNFSTZ{@>9%qZln3wWVHu0uGxF%WXlBjY4gyQN@QC?!28@O|(Up!$B3vk=?J)nn+0=b-Fkx}lbv`Rn z&M3wIQg=l`=Xkr^k}?Kj?Eq1J;N8k+UbQ^Skrm_MrjE=WdScQvHf7Q|gutn4d^w!5 z3R?YOxbS57Z(|dQ{L{hdLFH@FA+0WK6vTI~X_~NCyAKPnceF7N{*xg#%|*0vDYCwV zHG3D7J;$BwlrJ-i443`({U~}xj`j1>-0x7X)ewGABVGpJ3O)*(4BJ~aCEwOLS1K)G z)E)a==+-OgKqP6HxsQcdPd5+W3>?_LY*`qzq}LhA&x>4OFX2l^)li3_c;L{yB;bvB z11(js3>>fF7kic|rKBndrWL&5kONVUuCBuJSGdT}4o^;10+eoOoeCT7k(o4$=<4b| zarn@Yr&(%{b^+O0eSg)+TCS>3MVdYvt3|V6iS}WCkGDzt=}^|8m{Obl`#IEG;%+jq zt2AcHS=A@HqU*|ckX0=Ka3F;E^c(``s+Pvx&{jORdfPIK`fZ|4j;Ka%I$Wt4GLXWN4!}H#)mBw}{O|&f(Il7MYk75AZB~iI7=M{Dx6hQF`2~{@H|-}q^mTvrlwP(~A=IQWMbug# zH{*l_3>~re$J&moa^)KJc<{T)I8u6Nf`-3EUJ3*q_RbTB*!!Za7hBNE&n`wzKj#+s zo+RJ7S*70C*c5inUC&KNT~_Z9-Q+Bc%Yidnv=b)3ju*O^9iuCrFOHWQmjM*AXUBuzPt|~lL^lz1%-PLotde9LvNzQ`x zEst>=2y_cb)s+-BL7G)>BS5&HO0d(|EOXF@G1*S-J2lNB*5QJW1-z`+MzAC4RjU3k zbfuuM!T$P;5E29p`z1F{!6;jP$bRNR`|(BXH=&t>;;D&9KUs#ML6ome<>z1it)RLn zRQhS++2r78<>vjyGlIS@M5`0eF6|u=nJm5BEFe!km{;}(ctWb8o`2J3VZv?iV`xr4 zA6u8e*XaLnL>Kf;e$;H>^)*JhCfHPrRl_?X?6Y6$eDPf%=q_HLH)`g!5Mf5R9X%~9 zjWaF*JX@#lRa=(?7}?GfYZoszUkYmUO9t1IjZEWnk`N-+Q6aT5`k zvzT5sUa871pe1$mHR}=>Tw7Nn-zpQ&9cC26TzGlt{pNa+(!gAayfN$t20T>9`wBMoD}x^tDg-8|72 zMLNl+=S`)gfxQ7UyHeQxEe$ueX#>qZ?X)%3Y5a`P)9uLGb-_bnV|r)>hE}GWv@JGl z-|?*3st+(?@p}HVuMx51^s?VA?Oba{m!&4dWRs4!LS+?%1nv9xw#Qc-$T+o@-Y7h{yy64#|){4V12V zt+ysjYlb`k6Q&v>a09?H0muEjeiEsfC{_*!(yn5V$O zU}+VlGdcUE{S3!jo%YtYzC{OZYNR)x`$B$ z*vjqN6Iji7J#1}t&!2X$$Xt5mR8S)Snnj-;+q>-hv0%*QEC0_29cdMLa-&82(n=ef zg>}kejvENd4sGAp`T2P&&QWn^S#8ldv^#Ry3kp!v;0~$$ z;c@^6H{{U_AuZN%QvH=`lb$t<CgD9Jwxbhu-lmBv`%p||M3}V=n%wu@3fBU&t( z&(UyK^~~$Hr0)D13*HUvVM4aT%23Y{aYlQCfxoapk$qmbcEJ47qjf0Itt4f>4R!M{ zb}s#W?_Af{u)j#wMh3)4K!#AN7rsJtVKzhAhIZlderzw`R&4IV3$bhQ=YzpF|MNrd ze)>m-V#9pPT$QiJ8_2`) zk1U?w=BE29r>$;3T(-`tV)H~^gnB1i?*JXL+*aF9Nj`uf$LR{Y{v*?TCxMDb*~obU zryyFG5XYf}C?gN9^0div!3*{qBiZniub;t%t3GZx3KKJ>a=2jEfL7i;n|!Z>i-)AP zWkvlnMU^bmX#Z`DfPsloNVJC4b3dPQ;M5j_l6=55q3ySoKX*cvl7ePXQy;woX@-jOMNA05i-N?Y*^Vloag)f4ODXl?&-Dz($UVE>?dX6azW ziYoZCZgkTmx>3LAcB^DNTM*S`pXE3-`#=%Of`YvCt9@58CWU=yttWLhAWq;iUQPzL zYMP&G68B4puDbMkF<;hp)4woB1_`&mu6|XiD?IG>>N*pT z$JNK1oeER|o9ymq;G16Rf9i^u-(LU|I zdc;@zuKY{-ffoYf6~PksTQ$mcOezkjn>&s8YGspv2tirT8p(PF)PM zy;u39N@2d8A#QJZWfd+GzaK>VPJ?2>1zo00|WCIP5l|JD!N&d;fbes=IrFp_b8 zpflSf5laJ*)ec*vTp(0cq~vZ3pN%;!PPj}@;dSifj#qXagaLgITaO|Ru=h(e=m?ag z{m*VXa@X@8*@P=^axf|L+$ORq*{Eg4$20u83`ZkaO_V4+9h6U!m@&Oxfr=_k)p?rt`Lt&Qi9Dt1|xR~dCRl-}Erhm#rR&&1uv z3BRKLmwv)69=0%mwuIKcZhqN#I(V$&T!vixobTH_nKHNHy36d-e8dY;WotL5-bzFtG-T*Lrr%`yV2L6OKR>ZpDaZ@na5Fca5b^-^6?D&;7&SMIf*Ib^9cp&+0`R>}fq zS{yE_m-$g=@3ehJ*q6wJiN zlP5oP*`59rV_WM&DJ69AlhmaoPOkyMHZX-1pT|J4y8r#&C)|5?5Vj@1=hk2stu|0p z;5R2&okt)X#q1||-J^|2XEdpFKblpDF0Pqqs!#RjQDJTK=gKEpIcciOl5{riFbwp) z*Xf#bjU&jn8KVbAbZn7MW@v!G|#|I-e2Pez5sMWs$39wAz}HqH+khdQ>L(J zt8D(I(9{8OHaW}v+5?BxpvN@@Zc^>!g%nx?c8bjW{8`PRjb$mbne|-iT&z)!d!z16 zByr$j)a35HSqvhRX_sEw-A$@>NY16AUd|q&m#mes5>c)iCHqn*v7$HD(l*Rhau;iTlmQ13^M)C8Dlq2z`v=+7XO zZTz-53##dY3n0(?58!vGQIiXUIU2&wr4BwPlSkuCWhLg{+Yc zlDA8y>V&62e1&6usNUP@A{N8DOuR<`RY1#29^v_6u zD;zZ>vR@-L`xbbdt4{jEO{Uw}o+JC|NICW>0F{K<1=ZKR{ae@ev36i-_0KJPC*lfP z#x>~OSG;mz4=QxhEoOIK*j;HWRh79Ot26x$d;8i-(9NxiLLPVl?dsY*kjrMqEdlCKvtNs&_MT5qp5=9q_T%Weib$u!*0qGF8MWUgCfyV zP^GZ5zQ0)+iVK@=g*$;=k21IW#(;|N{(j+Y$B-))m`jDRGzyGhG8op+o?Ugt^?Th{ zoR(4)%j@)&V&^2x0v}dxBz_mP;Zj?d?PEx7QT0UVWt@B0TUR5(SESK8gm(zt+>fMu zXm3UR%XR-6l%mr~f7Lp>-RTg=yY~57u)e|vE8%zBg`@JVPPNB0yjwLSU@`!dqD9`t zIGT?(vT2&fh-3k~5KXo>oQ5V>4s%4?roTt6bzBWd>>7p%SofmAK-?4MXohEwZl7()wGjV8w{)c8XSPcIa%+iYU|1n3M$#Z9 zJDkJe;K|;uerbkx)G2y2dM6g<@`yHfKC~yG6-Wgo_s}O6>?=(}0>xCiUSM{X4$nh!70(h@m$&ksiZ9X?QSr6=< z^9MtxS)AI7Uen^vVW%xxzVux?Io_p$x&Zq%Y~~YGHAh7p2Vy}=5HTooqK{um*jL)4 zWKv#fjF*(K(STHq1os$jD6@Be$;S}} z$!3Ad9Wd@G>I;L6KjmlmG8+XLhiZ#D8^sGUrF>&rrxq-etMI=nC4Fm4=Fj_etv-|nVp`d(^B zEu7oxH;|zg7U#j=VulgH3zb$o8eLlEUVn2nklJ6JcCx+5n1p{N63h_cf%OgJbeTCs zfwlNFT;DA)P$xEmE!rRVwkm~pWRo#YByGDEyD2}^P_Elp>M&vx;e1y*7J6iI0LgJ| z-y6>^(eQOsWA&r3H}pf<`^BV&Z6zk+iCy&rr=b}0{S2{WpJc?JfH1laQ-Had#~_}+ zMI&w7DBI&MuMS|7%4{RoBiDSZu$G^#RkF{tg>m<$5(~Q%M2MYvtqV7GZkHLU(h+#2 ztf%d=LL(v*-h3T)CrY1l^wo|ur#+e>zwuu6cYXEN~;`_^5{7LUFM&pBKJlyGW2a3K-l$P7`F^$UGuYMge!e+*m?JYGGx z|B6&nO)AG#|5SNQQ;E#>6im?NC!fB83!2tT^_?p&yn{v;{W3qRcDbV@9_+YuPE&}S zc|$M{d?l9>H<0Z!&OwIkH&YC2AQ)UeLigS~xSAydxDiMnQw0H|z zQvaF-3a1&6R^}R9clqU0Vd(f1GUAw`@+hNoi8-&KJQbVdsqt89kE&QlM zCFdK?Lp!01ya50^@}Q3N*O#-B>q4?Ec8#$+Qv8YOxP2?$Fy=*C560*@C6*$4xs)4R z=h?#cJA)8%XN%Za?-ngCX`QM2&Zf+T72oScMSc7mIKKC9{v$)%EQXGyR|u1)=L@G) zIV3w2T+4Lx$0IDAwIqA?*u392G~$E2p+n{|Wr%#1S%}kPEQ$KbjrP)VKflF@cYEN% zN&6-0%{etEdpkttA$WPC7vcKjD|^?&X~#r=aLVi4=Ue7wkjWR|74A$AYa$Zbe#~9v zO8DC)8Yd_%$v+<1RwSOUe#()-o_3NP@M~8{Si}Gay=*^f{&4nFY}|iYQzu(G@4yXs zi+5%d{ZldQP1hwMqjGcSMDdh zV^$DL3A(YHA_XRy4wWdzw?XBo)Ed{vF#OWo8!5fBrSB%gcaPcuW|_g5}YLAA6bbEi|8O!q!#7l{}@V{arH8UezD)nNd1QMG4*Sqhg z&}`YvAZr2r;1gm6qmJgljU9Z;qE;rB$gGK54*KZ+_>#vIW?Gisp(yuplU_-9#ksmj z0iN&qrRF!nrB#2bx0BL{T{7_h(|Iriav6*<(m=*=0QEXdgB^?43`*PhCP_? zS#^B(J;SC-QmvDCOya=w1^y#b^K#p|m&Cdln3sVV z>RAU+1-a?&3sW2JIk_aLxCpRzHaCzZ?479|&Ax-K-wny&*m$81*$BGVvALKL)_&&m zK&<3X))|~a47P5pu9#JqpIz>2blmcK&{*-8dwieY!!|C;N7<<_wcF2<@m(f@(+*xZ zYiSXZ975ETU*wm+{(V$KQ_Tn0mLaUL;}}iewRaCQ4qI)(M8){ zYuO=*5JUdChSBGG_UWbHb33LrN9wkp(VQltJ9Tz8Imx>^$MuusXG?SpEjtGpB>zX9 z0+m1PE3C)^dlz+TR?_a&w^6t-+-|Z_w$OUAlbrtf_+H}xFzs_Qzugz7xQ*&>GcTH= z7#*)CRB7zp)i9ptl>TG8HUx=^DfdVAIILbxk63@$KA+UhV9*P*ig6QPG%sJG>Rvyl zw%@PCFiU!%H|?CkDDMFY%}M0Wn7A*}{95aP=P4%iZ6X`RK`}h~JT7IfYg{?f_elfE zG>et{`-8jH?$p1E?RfhpnBdsw6?MuS)VRd8PCR`li%e_d3$Qi4NK<(OvZ}5MSR+oG zS3Q0bR34wIAxzSaCCwpp8T7#pou}w!^ejL0-8s}E-Aczn_uTi9oU+%V)17Snn#Aby zLQ+BZx-^K{>@aW4ciuZzpe^l9tQi=xppgeOHKGjau&S?BwH;SLJ~E;4D}J>s-!iU} z9a4?6D;^vDvW&nc-fp(xd54CiB(_a5mZ?&w_~tPZ6PP32St^*y%82y^L@j)Ce7R4l zgFU|HI)=&%yIK3I(`3~DIQ>dxRb<7vrW_YGAIG+EHAc9|E&pxl_GuRZ+I`-8(;d;j zKIE1>Jl0}oXxWkgpxZL0fQ^e)w51t&JfUbpwduT%D#gS2S-G*qLfcMeGUM$Dl;hG{E|s*AgVNdq}7+lwHz zaVg1O*aTPvOQo6`5Iq=(LeCCDrCCV{-jh3_?c3*iTbN;4(#&H2SUoGgcT<g4x$Y^jH$&p$FDvk9Dc(XNRbK=x@v@aROZm6)Y)0=j^D zBqGyC5XFy4Rd(U{prIy&lo@4^qpaIt-lYsG2WJ!lS^H?OEbF>SkDtFA$buKfOJab^ zc3#zmRnBzKOu@zre1DB`$$1ZzY6M2izM4vL%9H;r=%G`J9IuHtc2&S$1X6SZBQ&^<-dgq1@xIrN-Ia1f1l5ivvVA zSluILsC)jDxrhYcKeBzwA-Vvle3xJ|@7K_>do^?+DFJ&1toJd&uK7K#lhV#CfNS-Wd z?6jYg7P8MQGwre}6Tmo6W%h3@I_Kdl3O~$lF*N)VL4N+`C|k^A8|-l7*(3Xqzc3H8 z&XM%-^ZUlcQ3;u0Y1xNCYVAn^|LeDGH|d%beV|tk0h$Q7d8f-2LMA&R@aNXszkJwh zxv92JQheL>bC2WQkvX`6vRQk<%$sv$JGtY0v`>&ue`}y_61m!d>jEnHEyh2M&{gy2 zO#a-D6U!;rp%4MBPu_(u%ZR-hJ6$5wazS`UitXHL z;KIT;I5PWI={n<4JgYz{)+;f9SoO9k^yw}ToJNcT8x9VoX&IiPv7%o01?BAJP&>~&wt-3Fm^4?#MKT(gM%;#yJN2d#`$ZY=vQ zuOelG_SPj`pLTAzL5n`b)|zinGIj@hr|Zu00?S5kb%@1}8f&cr8+Lf(%0Hy0SE}%J zl-8O~m~I_RGqYtBvUVDBhZ>K|@WQJTi4@VG0OP#80#9_ZnHQJV~i$M6KE14%@AOpEiDR!Qq2e_Jv^w1L^)#}Nx{<(!at0}2a* zi!gp!&{#9COFH`!o$n6s99qI7wShL2F$`3(8e^t@L2+3@ zhga=6OQ;BKVB%{$4%$*|r6|!dQ&y7gInb8mpGw;}QT6lT8u5}yHNvzA%8}LqhPZ06 z@lPS`ZB_-a;Bvg3Ju9&GPW$}5gpI12%sHbYcB?|4Xb%8y4ceL2ZW<7}&6>AezG{ArP zZr-AfoyWs!7QB=%;TMK_l&~-nr;{{@LQCIT>T~`49K68cu1pz(EQV9fa@vhTxXpsQerFADtF}AY%ILaV^!>or zV5Av)F6p0Mnfux|ygl`;ViG1G)!0a{mfYyClK0vx-1WxeyFW>UtM`OOs}ROnJKnaS zbZJLEaGY|>VK#c#5H{@21hof3%lFM*-iaG}{ofTg{DE0w5ng}hDWp2Xl+@o;*qilA z)5G{cMgp#yB>%zt7jwFy0y%*{Gway1D6Vw>N9I<)S>7fXU~l7)CD~b|+|8L?k=-}~I1;t~S=svt zw8>~=x3WXHp8KOq~IZa*-k5 zsPXBijuQYvn?vS-AfbfoVU>ptuJ#SdfQ_%oycCcHD2X{xiU^}^ebGD`W%J~NNC{(< z=bmW;T#UN(_%3nS@L;MZbUsH+(>$~GE^gl^5LgTl&PY4Bv(INCmHGAJ?b_VpI8;=* z_|I|&@QC2_Ro4LSd53CX$Q^GZsl~<&WRbr?9R!jN&d{otbm1?azI;i>K=<*zuKQPM zZGbluRjdnFgM)tj=tH`V+W3ugW(W^I-TCJN4Bc))xYY6@py+crr<(ZfyAL%jrBiy5 z@Ps>LuQ=)MtKF6(5iw{c^xX^D0E9l{y!-E3BqN8J8~dkA;h6^+y*v^?XD*Cq^;AI? zZk^LDG*B;~rrM{~F3LA$v|ZYf@!gjF=1;l}^dJ2eSlE79!%{znWAC>-CWm^1w;|Ti zbhKW$jI@@;1SE9SN%Kx+s+$(QA$1);a{kslBhV0ocxdeca28#cbv{Pr9gNnP>gjeO zpgM?zM}Y?Iox=wZm-bK*@^iq2?Tny#lzBkV2Ym_j^D$zAnhZQEjJBg>l2BE$H^eFl zF0W%rvwk~HyI?Jq8DNGjU8*iQn>-OpMCWBMjD#Aitp}H)?1kvE&=v+i8zN8ka8Dt778+oy* z%bj+Kxo>b{5>wz^-5m5xI_RvAHk^i&+~;pjpBSP?;=BG!|MqJ5z?c#d2*n7a4wtdk z?KdLQ#VkJisl_u=>&obZH=*M&(dug+aR zZB~3@=KDghl0eSA#&~}xNFfq}r8?RMrQ>43ZIA~^0)Uy}an(eBmtG_DE0s?0#vDRyO)%$0*jaujm*L#B|G?4E0g}~*!(EqKTUhr% z^D7(C_Q0m(V`|bjt)gUXTPT z^jiAwY=J6)2)&kLnOyL?>%b+oo?2h?=)p~Xwjd2yY~{RXp}m5t1^N{H-JYE~Y=E6}qps4SxH%65Ab=0$tM=n2yKhsPBF;(zqs@eK015kJ*xLH_Jp`jwE+F@rJ z_vV+fxprA@THn_5XBTD5bwH#d!T>+gK5-f$Onc;!qbyV$=DoFGSqp)|rAQ&NknX1I31i`E=OS{kN{`33T zn|ZjzK700Z%V%J689_d8L7Ju|;09Iy$as_FLpno+b->P`7y+B2Z>9!J{=883xZ9S1 zJA?9~1M07l6k&9}pM-1hHE%NQ`8x#`6=MgjdPN`h=Tpw|pdDZWss%~U-;mW)TDT3HV;YgS5IgC9vA8A ze1JjSZ7~h5(6pCv&NDwAvTfjC@4JJeYW;Zpb2`8~zyeoL+V=P6&u{s}oh%=k5orUl zQPoo`|GBus71y1{2ZbGF;Z61j8|KsR2lk6W*2Jby3j=P;raQdf7X-or|Dw7f$BhrY zvn7Q{-*H^oYi`(vJ+%84x$!rlhPm}Q_QU<~JK2kG-l*Na_4LOJs@u=s-@58+0x z&su(nG-wF1t`nG64f2);UDz};j3-MZm?2k!XG@d6zgw_3mNs%gv0|*bPovdX!pqE3 zwIIT^&%{386i1NGVATk7g4H13Z1CT*NJcY_&8{0-1Q$Vv=Ut5v%5O2 zE$yU34z20cz}rw8Ho1A*ZP_Ol*Pn+7B~&EONy`^LMv4N#7bG!jAjC~7QQw~4vrZb| z*yjB8$(&~0`WdVp-9`#1Ic>{+WC}`HhZ16>q9v}L_2Ld@RIxRLDpqqvJW1N{`07-0 z(uC4T6gU$z;K*U&Z#cqn|2(D`YeVcQral#}zxxY1yfZG@)5 zxXY{F-)a?Jr@w>f;Ru z!EIL7at!osXB8`~cu20B-N|ZFub(=tuxs_zYSMFml5r|TMkfEy;|FJqxH)d{6Q2(@ zV-bM8fu9GnkVMO-{D|YR(D(DxfpL!3) zJhoE_J{Cy|{QRC_V#XII0MO}>qp`MlGkBRVBvG%P9%|6jr1Z$Zd%I}-ODC-|HG|2;h)3djDo^{ z^+xt>r0}4^LwgI_Q5PP)S!Y3O%`TvTUI6~XeYKj(uHX!sM_Hw5?}fkKi)=Y8^AOP& z>wCpjJrOG618@?$O?s`Uz{*6~OMLlN9=-L%A9SskuU&YiQPET5yefoh7tF4sZB6ec zp=|?KIR0J*Dca7iybT#dgE^U$1$jxhq?)ntG44-IfNXkHkYwt!B;2p^Mx7v)Y+6i# zhxLxMk!h=RdJYHBb>7f4U&N}S} z#=ME@Qz_iK8bf;5N&%d45bc0UM<3DVCK$^0l&gkMA5;v80k#BX+xSGTOr?b$>rBa} zos+6P5>B6Zh7zMK|2!vZkLYJvM*LRe{;Woq^fa9FVG3Qi+N~bCH>B*$H_}s^>=n!X zTXeQh?@N#L-_OhXO!?Kc(}Y!B^#jL#VAM&WtVYmK~C=HP+QzUy~H~ADNJl8%dStPO@==`4ONxD(%x^K&{kE$$WNl;kPvCDex8 z-S=MX*+nRp&SnS^JoxueN&mo-HQMLx#fQX-pDkj)V{TYj05hJ_OW{fzCJQ&BJU(|KahM*BjYUZj; zByqnfYw;`y?==cbnY-xKJc9ts>^%iys7Q&0_RFfUhN&u7wvQH4gD90#;*l;yH-O-_ zuyQ0Rfs@#f;Ryad8OMva$wWn?XaDOfmf=7ljPk9#0bN9uDea8OZ=)I-pQ?8Hzjb0f zW>%emm~Z78!Is&zteE)_VYf^;~c}P zY?6+X?w=%h0bA;4&6}V6#9P!}pv+qhs@o=)RL2T|*H@jGO2MqYrLe#32u6|`Iu!5( zm>NF6b0`EZNLpmc0B0hBq>eZJrkD0~^$LlOCOgg+MMZr}!5Q!byO!4B@-dEEJsnjh zWu4~2I#Sc!MxtBe{NNtxs9!Bv**{THKVqWdMf*Ti8eMeKNJ4@MzjxA3vZ(`qapW(^ zJ3ch()>P+nFMO}mB9)8}B%RS*v8$Ius!;&YttsQWU^`=6%jn^+J2PFkawIN_VC0GjF*!xyvF|lNkO*0 z;rP6W%GA4l;u^wn4jTN~vZYwlVo~)AUjgt^r8lWrnrG;v-CX@eR`VHf4rEjom4|NM>1o^M`J4Op2x`Ti%C;m96Ju73IWRQt$>4B zFf8H#ptFFE;UEPFg$PgqLOX_Gq#=nD5JH3$(+~n01q3{z3kWDe!U!P-1PM)Go=if` z=Eau;hvn2(rt@J_{_X7PYsZPc18G#yx}m(1=U|JSIpP* za?Hu}&Y!-HvX{u0M!b5O_Q!+Igx@5(y44y!WDonuLhv6ArQ+@1FA=|W?^zD%`!c`U zKO1-Ky53o2OzPd-yLK7dTvt1V>kOLhp0|h0N3SdA3i#a|c;0E9kpFH#WhUK+ljlR zI!H^N;%_%iCS_e`rg+t?T56t>Yk=_TYLT{~0W>_`lHYrqBI{4AeLQ;Elk!rOQ}JA4 zxmZzB+d)l(w&m0`_-iR^hCelS^`_IdT>(oA5)oq(s?%1Hn?Vv7gv`|JBgjBO zVG!>Lrma8$?skn!UK0&gvib;_aK&d~TT+h%I_`cOwF|kj*;P75pwvPT0uY1%gdqR~ zLJ$HJA`OvEfCva<=#+tFhjI?sA`|QncLUwWgFqg|$me$sAO$y)jEQ`omc&p8ISP}a z93M1-4hRRbPlx`ZmZ_=aQtlH{%3JN3TFo@;GqPpeTgEKoSnQG-SJUq@e41^f*!wS< znEbSu*qjj(bX9$(ZQBj)bE8jTl`3}% z#-DMMcemwEfrcSdS-7xX;a${~tV64$+m~^nS?lsCcdEI!GW)=sQi~HK`ZN?QLvsO& zW?v&>lG!$F(!5_zZk?nETh;BF+N}gSNL+J#bp^U%4KAfuVk=)NX(!>trGh;zLYWoq z_}lXT0FgI`_Ip32RekP1{*D`;)lviWzFpM@n~UY?Gd1Ki_TjBjc6_a=rx)lXT zYttzeF9*oBX`zX16TDuZDj1qmWZ^!>ol>jQYW>O;^0U4dl8Ka|SDvEb3EJ9K4&od( z&`7+`Phz|_wpmIlnGb1rJ91ig3c>Y{kwdxkx$!@BQt2+5RZSDIEJ~Z?Yfo90T`p6u znu-1tz20DzS|>zm%_~oiUVbeo_a_!j{d#Umzqy_|?e=C|PG)T;pTzj~Fw(0_d5Kxl z87o5;<8B<4=Vq1Oc{<$YeKIqaM$M0X7&Q3ko*u-1snXi0oRH2|Ro++boHr`i)GN|E z!|r#cvYHOIn*53~m1jL|tFX)G_3OU#(wt#@ru%rMS*yuBZNPZ-`s*xmBwCUB%{z&E zO~qxrG`7cgf=0%4$TWWYT75*l{=bmXE zR;iu!mR`*8c;a?v)1cbhKZU5=oEmLiZ*z?$o22J_RkUj~(e$x_CF;dh?Hdtjppu=& z58mpxQyz%Mu6e58^cfBBv*~JTQK>sGOv;?++;bkMfss!dtDZZ$&YbnvNk0!~GWuGf z)zh<=>Q**BPB+|Uep#9J)d*o$+q96t@rSy~vc%e=e8Os8&L{m!#IFqYO)RrUlD1TC z`rr3(hdDUkaIecUf8K9JaBt#q78T8*WTRq67U}qwuT#*iU!(RV+X?(MU@EG=6h`@f z;06AGFcj1AMgIVha~$*2{{Z!xGU>+u0D1oa`c+Hc;t~#tbyw&E4{mohcCJ^a?4RZn z_}63jDz1z5MHd&~`y4oU^tJJ-55l{5ivaOc+N~OZ{Ji>f6Ji+_{!FL8Fig7s$q03nz0mla&^6V-KRr>?XmIY7IjLaoFYb#~PXsWR4f zHU~J=*p-%5axV9zXAREswrxU7Je2m`-GP`F0x)FymPcRX{A~XKwBN&r4qPshUT+I{ ziiGH&=E*VQTyGdzS)+k+p|3(42X0(>dg2UMxx=nBpCaoDe$)JOTAT1Kc1x<)d6&FV zt<&je9=QGg0MTxB{2$%pTw4d8?DS6?MJLpu;|qu365d@>1bJkBgfzb1cqUt&w{@0R zoslMjxBbappbZHenVKQq;PO2M<*gGHLqG zLSfgpyU9y0-i}CO81rprMqgkeTE>UWmX>WSSFU%(X3|beXMvknRfAsII|I4bAvcQH zuP$Fo1>yK;vPWXK@g~e>QPS>Foo?J0tP;qU%2^5cuxqTVsybWPX7@~8y+p1bj#JiY zcHGzCPvX6vqgnEZ341Yhw{n(TKZ!l=Kbsd`byUSJb{{Hs)mz_Zxe&K_iP+7?E zQkB)#B(q#56=^AbHIBH(=BkTBI}JTA=ncddv}oy87HvCfpoM6QNFfRsM^fC|qyeac z_cl;lKms8M0YW^7Ri9wa5YTP}yJeucjfBUqR}A$Dz94p{DHV zn495$s~O|sLxy;wdz`B+-d2i4>q9py2V>1VZ+hE?yjIf6VSTE=t9tto+xs}}Wv>@V zXS_zT)|%Z62efV}?^l_nNa>Ef2Qw*m9`Kb3uWe0AR`%47Zwe*mlJckx z)~-dyX1#Ro3zO|0LuEEpGv+HuD^|YY=I^w36-{8$8L6{SXm+r(SDpjn_PfWTT&C+R zztWVvwO(KO%z~bk7E1ClE9rBsHc`^Y)hQ|K*4Lu#9;Ry8wvcf zXa0Lnw$S3@JF;$N{yNU^8})c3oA~ z`3!Q|vm5Lc@5@l%$???x06wJKAM~XL>i+=PO>qAJ7%ZsG7SjT{K&+d#7fuP{n69eI z?YvceB6FW?V|wi=PUBy?aU8mqszq)t^4qIZ6u;>*?7dI?fPbYszdDti#r(3LZK?UD zwbEHwT$ya~T_r*;)b8B%GliSAo3|=;(oevr+ehaMd{#4Av|c?*R3hz41+tqfBru-P zQTD4b6~UzbntwR!PsLTeAu?IILHuFWYRY;_)$g=)OKGLV%Nt_n=5$(lH>B(^vslGe zUe;n-w6WNGWs7RW!~P9E+Mnk%n%xvF%U0oPRj95107;7aXmwCGzB=&If$(Ye$LAft zBFWzymX<0QhiXj}jFeSJyq1fK6Oz^FGrU$6d1RNQyNiQ5c_yQk>iu({YK>=r@y5hf z`9%vg-VF4I_k}A7?PE4oirA5Be7fr(J1ygAt}|Yxm0g+cvq1;(iY?M=ZD#5;W$AO- zMrY@le{s3-H)shIvLsEP98Z^D?+9DpYc$!g&9LdTFl*P4`FdVF&;0i@TIu~Sw^U#6 zE}UbI_dA`&^2@6HlSxPJ;WBQ{I3`?9_YK-5s<+nv0K0^^cHP90Ua<)7&^PrwJt4X! zANxP{iOTiC$Jwl&J##beEnG9jD<#tLe7r71F?_f`_KV-{41!si?PlpO{jqVhSDc%z z-EyusB+G#l_LG0wC%hT9b1`EF7guplD?cMA$Rt#*&|8ESA0tgc^<{vsP3`j61XJZ zBE&GpT|-`(#@q(Ci_|!JGb*}fPp|2oP~yH7XfLx}Rnl4~ z%SZi@U#IcXoyV+s^lN&X@JZPNMPp*K#;ux}cUu1d{$g|0ScUSXWmP=$zCSMdvc3oR06Y|Sd1KiYNP@e?9OinL|X zL4xsTY#4;~BR-cYSbjY!RlQiP`2PTY#s2_@Pr%)KKE^wp>hXuV{I`7jsMED99=j__ zYKzcf*S;y2F<&v7MC%JT9$sHfVyd?(>;2(z<*_;}i>6Mpm50Mq(oJJcIi5Rcv4ReSmTI=zOtfZpew=nCz zGYlpjAmD@|O=)~FhQ%%0+=YJk!*tZh#D5QBOqMd#O3jaWYGo>FN-7^I6^Ks&xV7kPRwh9}QP|eabvT-S-&oXJSF43-VvzL~jC`bcm4D*3YeFSPwXDe7V zz0(@hHHKlHBR7dUk*w4Zgj+m>Ap%GcgaCvnLd!F401$)(ko6B^Sc^6rO8&_vGtBR( z3$d;*%8vDRX5N{IH09yA-&mb@6CXY z?|y7FnBG(5Ap#0H3%@1hRYz=_$Izi=hO2aezE9wDb9ObBvrE;^t19#n(Ae8aX=-aK zZKP1?G3zm59%pos(2pUQaG!EwTLnR(t7?MfRi5DA%t{5x6kBwSVW?2cyQE3;uD_;r z52#UjgXjI>Zj*n+3fg~^+^Q@0$UI8~R#jyrE$$x@CM!PKMRV|4NbE)iCG&m6bh8&` zMKzj356f@76eO+gWm^?U`(|E|(ozdJ;4I+7OXra^orVxRsvcp{Rc#^enI!PMHMvz! z*jzXg9c)M2GOE(5OK?u7Zj%ctyC+8P6X=_5$y~3t9zMmMXc(x?105bX*Yo|B*S z&m&JO_v5K~?AFqxt{-%#?gfWolxnnhEWhwOHz&0z48dZVn2(08ps{)GAd|e72Yb^T znu2%6wLb9%nXz%-B zgxYs&P&jVJ4>r=F%g6Myk#=jI8FovaYGvN9HRj&$AO0i$%v2$!ExM%jjWC=wwP_}> zObMC1M0VzUkNM{E{ItP~?k8W8~z z2p9|@gef5B2tbCQg7kt40AL~z0t`CgoE@(dLjrD<;f)V}@c#hdD++=YYs8m})YNNw z@}eW2RcVpYH-h+k0+#VCaYU}tIqTleI|ExG*B{I*w@%A0xOD#j)nZlsnYeJC4z#N^ zWx4cy#!hZV$@bYKJ%>e0Xfv)X?1Jrfnz&uN$L>)xa}Qv5I||G=YTc!2Df+#6V`>|XNtL<_&O)h-JWM(ooCm$yK}qOpTXk(3UhY*m&*L%@H%wu9 z0Gcjh)rb73sv&f8=hCXn!76-K6RMF**c70DZ^!A*%((lyQ!pV)sb%@?Q?F(}kS z^`l|_Ol|8U=7yU^6wIM#1O?O=C4E4$L_j-=6<(o33i^P>Fl{1EkkHJl>kDQkq;R2x z6SXDZRksZ@*V1zCc5nw@6J}M8tts@-Y21R^EP_ih$plDC52R_5!%!DL?;1=y5G2z$ zR))y~Y(4-25L3B68;1}GgdjX1po9Uhc5&Hc7yKg_ywc5j!_pbjkEN6U0BAA^k5T>! zxQ->061dAx_1rpW(!bhFd7lx6n^}DhW8&7EX)tOb0X70|>2qa=JsVO!Ta);8?=>p0 zkKsv^BKVHztjU<4;!H*G&Lu-r(&lYtvF97f+*_s^-r@fMf!S}KBTMb`orO6r`}WnF z-sT$Fv@P?^hNjGv`5-|=HRYl1>ipnlr=2wdhujuvm29a_UEBE!IFG%|x~U8CCFIo* zlHWZgxk*nZy|cJrWwczGwE~7_YZzLFvwM2aF8xPyn`j+fBIe8lokcTrg6cUmEvAuV zur6yj)yyr{8g1M(hSocs>ID^x52T95;RSTW{X&-cRg|ciPq@9eWc8sly+chy$)RsZ z(rJx3G3w@~+$doda3Q1}$38k=@ewO|=n1%_mrub*JLQymuE)&-FD%ZFHEt z_J22ylQSw^w$2TEoyVY}x8-T{7>^!9^G&A;o8@Wr80Q;9RJ5Fbrg>XgUCFC5`ECUe z?rWQEq$F2HJ9j6ln;p9O9QK8Zt+bu)lI;GJ)R)WE-X&VAcw+^tnQQFJ zi4x&{yWXYxaY>luR-Lh{gs)S|Mht-I-%)1^CyQDF+UY72C^ z)o599C0?yU!lGx?r!~!8W=yBAwk)FwVkiC&YkNruxK(&OZ7(;yHqr`BcCylg{!!X~<1xnY-7Tc3OXg|( zSEdOJ*6Vbuc9VMsy|*!+Ep+Xg^E(Zr?&lKqII>fuy|qhGh;Cz>AdK(BRkpDkO4ezd z8#rGLWdoB)!+Vn;LJ$%`MF@Zpgdh!n@RxwC=N-7K?TSqQ0RCM4M8t248aAqr&JV%n z8vXid)lssL_9h|4Y`R#j%{B7Oy!LgLIW=-s?=)T=nWfHI?Z?aZ(4k*Arq0~TEg-yxaK6@lQiPVyjr5Gh<+y3?9~>csfc#jn`JD&>@sP_ z$4xwbvs_wcT9t~fEe%I84lh@=s;r8a9$r-I7bcFr+5-{u7)VUs?}*(jMaeSyT)ibK zm`VsHb%4u+5QHKDZ5DF~5eXM)vw;W@L34ox08vb#bAbvkFan4|01zPx5Cj$w*~+_A z2m%Bl5(rStDW*{n0nQ8uBtQlb5!e8OLw-05BmzR`OIj(cB6TQk`ogt6d!{1u9m@)k zS6k&n%P*o$nckjbNxeX`y})-3D`VzsM!7+AMKs<7rSY^B!C?e70P+RMccczTBq0R^ z03ihgI4+%$@vp-%3$5{%rMtdkr|%8>@h{k|#(R@v_++sy-dD_??O)A~Yr*8e-x86Q zhIh;KR%X)|xwHdkm??!|jWAHlNNc3bw$!0wg?W2`#0W_IN%@T>zB6uNLokE@Mx&rZ zfI<*~XLBH_6?4*vi~=-j22FFhfm z^)R26L+61tYv4`Fkhe}7T{RX9q$|%>(77tsY3LF1XeWU`sI5(duQtJylt5MvVM{Ofg zKPH_)Vuf`vAq*?YfpVuyZ6j$~r!z>R@fc%xI`XM^60*{^Fw;B3#f!44y=U~*oRHAm z*@De7^ol8|u+d>V+{Ke;AX&oB0o!wE7^-1s3pkVwlEv4v=v$deixOqBoyEhm-!h(8 zjdvHw^cD#-G+I>6xWc8CRM7ZpZWE7dkW zm4WEfocoGYJUFZO7G4y==(U$^WvdS1s%@#1cPjGYTX;V)4a`LBe(-6V@G?yintw&DQMSJ16metd|uj6=X zqUq9UJXeOdBRk@`w9`!|SA$)w4E$|M=OJe>B0~wew5+OYunH^NC|I#CP+UWY9xHrC z8A841L%Wj)JH$aj4J4ruf`SV;6e0@@HCsprs(%R3v{7Cfsv2F6Zg_?a?{Cx^_Al7Z zRl@48rc8{-G`rts%&Dd7V!t^50IM3AJs*u!z_?OFQNnQ6<+_rmbm7TTm8y?h)=gp4 zGkm(KWG~Ko+4Qc(${1-2kx?HMG}*eK+5Z5{NoIG*6^}pm^TN6D$4z-?`q2&U_dkJD z#BkP^GNsZQ_DsxrYwkS%02T#tXqJfL+2|s#cn#W`7A5{d)y7;MBo54*N+dX&b7rv0 zq`u>BR#CW{g;8y0T36U-_q;WA8m=vT*46bCtZo(Q6~jhKB(&-nO$jx7x%loPvy`y4 zR88&`=@=98(%VQ|+#{r<_z-~&0)h$%fI<*}5LiJ404_)<9vcFwl1h0tyH$GYSMW$s{z9_pnR1KQZN# z5xqm$Hj&BFDMTv)0!Tv15aNOmga8p|cnClXI8cZbAb~+-g%BXqAn526z&*l*2w)&N z8W176K!70z_J{yGL@bd22oUI5BmIZ7NQNI8tzq5M$Z6c_v(h_;9-59HYw12Z9ck4_ zXneMTx6t zM2gCm!wuVplT4wdo5i{9Atjg6Y|2bpgOg3VgL0@BxKP95TT|_nt4JC{Jcmj# z%9qD7H<(3`$NrjjODS+w;a z`Bd*D&pYb1iWa3(D(SwK(7>;gw@VM!L8lnNsGP5Hxx1h{%Y&R*XJp;rLuS-&5d|?mF+;x7LlS+9U z$Er$m@vHqJ5RKkqRfcY&bWpetYx(G&lq4W6|C_d zhT<8#8H{I&^;q1B*)3dVONeW;cA~3$mYv0`8@aOTrjoaaM674GCqK4?z0=D}R6#j6q>s*G#Fouw8eZV4!Q8QUgR&rb)QYm^cO;OM7csj=q;^QMSdb8HCsIGTizJZA z1z>F&jWPpd1@?&YcA#>7L7@<#0$&*(0d25bMQ9pt(hDRgfTGFp1QZYg7IO$d3ps@_ zflL4p*&$&BSOE135eAFQf`}|2geVXhg8>9P3?s>*0RVe8kbeOPKw+no5Rs+RU@y2? z!aV?{7T~bd3Sb421T@nDm}oALL3%-1)C7=(ERaVfoGjr8074K@PqavvuEj;#$Yv+YS38bgo2PL^ucFjFNWxiFki@o0)R-(kDrAp36QqArn zuXvY$(rid=WUAIw#+0PSt+r4pZ;ZoC;afFUh|=Mmv|e_O@c3Qrr4ik_5dlLDR#a+# zhKN_9}T(Uo{<&ck*w;$k?gfxQA8bTl* z=T;N^6ZHrS39bp7<_fQj>~AB{oE4@$#V@oA<0Y+2QpKl({+UtjE2)kP8~sDKw!K}p zZMRVsdzqWpNUvAQw5cn@_-Z|jj_VV29lp(TaPyYRAugJ2s8c}AZA6A4b7X3Cx4fFf zI1=*&D=V+de?WYxjZ{W4> zB_~hO%uc&IoTY5WXjNd);(3~sr{kPc2QL{^rDDCSs@Y6cwFBkp^r=5CQ}Q+Wv6fvd zN6m~UQy7)+wHwRXO-V@$dg3YG%}(Z&y$X!peNul-=zHEJ64{w+DGM(b-MKSnA%pkF zYbj=NtzP2ny&ivXkIp~iX*h=(BU;q8MH`4Ob;(kU0P{8_i#ai?l}Zg^Z|wg7h|=q9 zjc-{>9l|=Y**#>+x~Z|Q%i4@wx`w~fvh=Bz^9v28Z{?WnFU>L*{8zNceXB`O#4#p& zYG7QB8d8+z&8=x)AVLsWMvzdNFJ&F6-mrUQd!s5eyYv-K6ydkN-eJ2Z)Vw?}A?;i{ z{{XX@DA$QKUdRaNm0DAyqx-U)Kk==Lrl#)g`3qJF`1`#_Wis7jm-Cm;{{ZJ**O&hQ zyeF&dfQZLG`#vH>sWBF--vE!?@%ZA8!2bXnu~$^LW?!(`cnk4$gN%g% zt}tQuTebC_W=QfK&r;#oly4fyjheE@n2v$Z9?Z(llPl&YPf1?IrdB0ykkxAyOj?~@ z!p{nGRd|YT1~Q%{z9yqf;u%$JW-?wUr|vWI8+g-a_}t3XdP*)K3hk)3;?*^@`UA6i1@pA`p)$1TeFO(g_4Y5FjB2(j(uwI>8XKL_!}zv|RLpiqcJe=LlIK zwt+=3p%lU-5QG*Od}=BqvjYPNCjtD=geMg0+MO z8$!)*h^4lYO4J8U^J!_AYlwZGqS+J@>B*$kFn4^Z}TWC7a1 zi^xKT5oCcQLJG@8ZGmCx5^s>uSs`@u5aL1^Ld!KaFw$G&3?{wQI#bwA-FptZ=YtGBCDJsP67V9W#F)~Ym=(&_ zkiFk2w@DX!zEx)7S!abrRI>j7#JMRmD^YH+*2<-;8^B|VHKmoCtf)mbHuw(VzB60m zK9Wt)+!( z`-GYb(M=6DiYbeLTMoho$%6>w9ZNE{)ueyIlYG^rhLn@xPpYD;;}P;b55m)FD&3<( z&0|ue{{RQmq>Akq%0r2l`iFZ?Y+zSxIX^SJ@{+Vd({{W7^?6;Px8Gc$<`!a=O%+~sahsxG6vZ_=j znB5eg;5vCddlNiiggw?~M%29o2A-1N#JqJa;?>TIDwE~tDiZ3onMdO6*W4!B{+U}h zw7PbGh|_H)9@`5i1#2Aq z@nRnxxvN=FX>XnYW}2%#Oj3{Nu_isocoQv7jY*qZEv?kfZ@f*1E2|imD~7T&Qhh7a zGIq~f=l=lW99>k|GYwwhY9?^Gd_2jRZfMqR)M@;UZfoOhQw0pf{r>5u zD(q6MwHjv#LKsO16e0u)8X16y0K(1}A#wzYEZ|VWD*+Dm6F5ygwGg3V(ksZBwXVRi zD6Y8G##f^)CqG$XnOe$}{Cez5hTi>(T<*x!w6nvk{e+6zQB!oMZB|}VZX;#{lr{dU?a@1Y8nq}p= zDf`T~7RF;+TT=f3Ip&qtt2KWX#M!E;w3J+O9p3V55XIx?BC$osF^Zm=jQZ8BjWvG| zwwqd_mx#?(RF+HLB(*UMdcH2LMP|I`^%Yy(G~1+!?tUcRAu$y(c1u$<$!f=W?tt~=3_*LXr*fG=CDt-FjY9I52bWZec- zwNWXBUl-I$=Q7*sBBi~=)@{}61r{Q!W}2Ca)v;@iewx91zIZJpP45zAwyH+I7k;G$ zE+XEQ8z~oDo`9vtS!^QZ#oEx=gv#4gipkt*N>gK3DwH~kTYp;);?y*{j^T&WG@0xN zH^6E-y~4^hCPi{AFtZX7XtP%0DlH_{(->CMD%4F@@wJ6!8tr9Dxsw6T`V9^w?urtXJUnViCf$)%B566r+bZT^$*xhXReN3>1zf7Z+E(ZLK7#GyP$=1 z5GR0?kib5wk?KfbA5}=Nh)c-yF9-dkFKKertV-~Pn@C>KW~QTrm->foT6UO>)UCUM z=TtVE&5xMvr0)1}9HcLI&q|FVm{QCRAV9g*YB`)CLIK!($qW`|vQ;DH{@~YHX||$k z;yyLkM(e}#Z7h*#w5D)=B~qY!bgdzF>Lc!uFD+FChR&lq zQpW~3wM>RjjZ5>I%1vVspTNg>f@*IEQ|SIjKmI2F08U|ghKp+HCa|nX6tFAU)(vo- zHqysIU+Ca4D@}_X>KfIUsNxuFrlUl{u4~GWxQ7la*-@D+t!}QqkMek9lLfj$&8Eeu zmEsH^B1(N_n-Ac&f*jhak<(}H&X!f#HwTp}V{@&a1%!7rEzPPL!b8i4e^Jh$-5{0! z0D$-^=Xy%77tZS6VP(DcHHRgP-xiDc3~!StTQ6+gMNM=X#>8P%k(C;yPOu+3pygCDuEiuPyNeftq;*VaBmJr zak|3-$Mlmdn!{m(4!bHOdQ;`5fKhRTa@kcs^2;;m{0#bJb>u3XSqn0<<M#Z>9=q~5S~=FG~47lq7_`2Xb~F5L)-(0Ztu3B4 zLl%Wr%_@}@Tu02ZUhyvm)2M*NA?g)1x%U;ELa#{`EnLe5@5qIhO{M8A(9lxF{{REB zOK2|}NO=dC(o#ZQBURiykl{Mh3Qr+huA2DAUMc)Bi2n zR!7THg@#dc38$I;vbogVLE^cu>tVm#eB|{KRE}nbHPoy$X{tH~+PUo@>NzcpprNpJ zoT9Ru29u~RVWFGA{{W~^%s_ojXkLDir6B-qDZIf3-EN^x zP$VxPFhCkx8)zjgNSCqr?iE|K)zPgF7~?dotx4$)*l&~1Wf5)bJl~B&OH;OkjQ;=( z%Us=WtOc7@n}_#X<9bNElF`BVYRgSav#jfKYpMq7_Xg?&XBj?0nzAF;)T1cw{UcA9rcXDuVxV(j&3LvANN+7wwgeVFKLa=CP zoB@dRnw8R?TZ|KiuXIRlcqG-ToJXn4T{b?K=viAa^`@eln*}$PmIX8v+8SR?hdb`- z(fEYatz9N5#JG)fGgxZ;RV@*p1d~f3yrpEKO2^y>TS+?v>l~kwdjJXDxqFNTy-!vv?7( zk0SCKw>Kr5zzA-VLkYuHx}Rw!a&^L-AuaMnL|s0!TE@FUg9f`b#^R{giGIE0&anwH^`RnIe_OT+Odikex~ zy@RYnif4Iq+E!`3b^Ou|*Vc;4WM)><$-MVR;cxKYah~BF@zpO#*jzB21|+jgNWYLQGf1hfu-8lDHJezm zHVU(4Z8K83PJ_t9U?`>+NF6%tn7Q==n^w>=*bH$yUe&$u+O4gn40p6%$d+oQ zhf8`7NlS)w)AyDBA-Sr?$HcHR>5op^=+)wRJ-R%BFJ(86VLylPHR324Rce#iZFqJM znpt7O7RxE5>1pefQJw_m@jdFLwUM`Viw~!9ZsSX$rRHUL>DMsVhPXxVmeY5MC;z^Qcn!?KF$0WOvJSv>9J`Z|Gh5)h+Vp0{iDG{$mfg(fqdh*}m-| zWrM>}uHpTe;E`EX=N49PL?|ew;fNipYyIhciIgLsQ=c9=*nACsN-=n%^o8zrw$)>E zx^}(8w|}F9ysiHLw9YAi78WI+)o`3P4|}F*A3rjlJZGvS#{uj0QJmratz0{S6>2#N+R+LiwC^>3GkU%as|%qis3MSdD9hAdv#Qy;PmtjBj&puv!&e$v0n+naRZ6_bgme>&Zi2LL} zlyX84h(qep)Hga-rW(iQKfO&*kuYJGT}IEs7tJbSu^P8$Qq^LZ{;@9Gtp5NG*SOK) z+wBzJ%o^!6Hhth_r;+og(-hu2m6jkzv#yBnRuLmcyZ{!CO(QVkf99CuX^7 z3luChDGU=+Hj!f2#?-181csYgn`mp^8jWpA#ZA4%&08jl!?4zssVtmL!V7nXHnqNE zYz2hEsbxyUem8q*Hf$*5~PWVjKpzUD7xrjWm5jDeSWm;mkTH`CqQJedf1>cEg4}nlG1s=NHk> zJoy;e9eXIf-tUdlqf4dnmd#s=^xS)PZ`;J*oR+#{@ljIH{{Wn_q3n^1&ZeX;a{55w z*TsEGpry>OZju03x_Ry(@f=B7s#unWrmCpuD>$`Uw4vz=ejznhwOdLiEi&_O9VM@c z@h+8AR{PBV034aQH>Aq0PPU|^r(=_NwxXAc%}=hPe-^8sNn6FHs@{+A%A8T7DIq2D zsEfVS)_OZNrK>`H@lej1>;7LOWg`MCRI1m;{qVg7V z2oeV%T!&SEcrqTffF2lWuwSg_>LnAC>JbQ2ObC4Pq!lb1I9b(dA?sLOLg^GDnqpo` z8oEPtfrL&IE;}cLB1WP;BMp?l~~zR4zjHh+l9NK)+t0XA4sh3-#$0 zKG59i3(uqt)MykIcZi4}h3yo;p#U|OQVdoLn9_=EBF+@RfCMEFxQtsMLO?Ro;}iGgApm=q(dLM==%J7~E6f01kywhF-7K>(j;*D$d~%m6ZqKR*+*X%tof z_9>-b)M#Cu-#jTZi%mDPSbPlMRPnkGLjM3#*Kn#?X=WAb3T$CrA*R7zspa+`Hu{gQ zaK<}Jn_853OV4R@RU(vVPpA54`gg~DbNyutk-%YXG?>nE(sGmP!Q3#39>7BdL%XgS z>S|8&{_r-=2KdkUDvqMWTcnHR#|oN__e%U)IzG@50Suwt`Q zW|9^g<8mEhGiKSO(r&$t-J-cQ^7DR)bZCV>tdkKw+{G!}{TXL`@HrQjpjPU&sWhI; zyBd5>*5>(2HBOb+r{M#Kx}cSt`178B{AKnVal&G`&u~nomFA9pWbx7NiRMqQuUcF1Y1_j= zdc0k)_ovC0JsHpYW7?O#Buu>3WN7_pemG(CH#(J%Kz zVleo9L^G^j_`KU%QfF36^X;klh3%fgpNPXwsJVOk-U}oM zee&rA$S-v81>HT!2mbPmQbScoZHL@)$XnD2`eA1Z$?6nPFQ{1{PjGM42;?zz)C!^o z(et`M!!W<<7J7rp3piRuli)}wW)vdH@E1r2CA8?@sO^)GTIH10xS#`MBh#<8j)XTL(*l|rdWiQYP&w?N zg3Vy8vvDK17Egd3TSuR09osDEP#0|7HXSNAJwP{q@A`O1C~M$I4mCE5(Zki zoyj>Y$8(qiXf%)`d{ET_2mvK4qHUtAL&A-zpatgZXQ=|AC$_USeUs(r_E ztKGN^wR1ZxRGj|+-gfS2gIN!NTh-;vbjsBYEG2QQIhsZz`=zH-8vc%2ronSUcQc*QiyH{k93gW>+}TBv#0^fvGj0Q% z8!5Q~1Qa$G?f}PCA1$<$7)Mb}PN6wc+dXTz88pVG$Exu7YO!h54;6)#TS@o%b`f8wi_aBrbG_cs3kLzMhOi7U31T|I6W;!94MDPq^jnR@#5thV4Wt-GK3%7<&c zkKAz^q=|ZFr9NUke@u1yNYSNLR%QPHh@RCR?T50gYyDv|>#ScC=r&m0bfdx?S#yFb z%*l0TmK1!ncm1L0ufca^anB@}gtRtK%YqvJ0Oy`&mfEdmHLt@rXj0rU7}Z(cIlfz< z&Rqp1+kS#x?oldJPNP1@DchGpalP>(vMohZ7sr>SUXraS#hjH%pv~zkTtkMc)y-0( z;fUj^wlyl{6NoV^+f}K5c~j~wYg6$IHZE+%e)opNx@kgh7KNJKHRvGkb5*-><)e)x zHR}gmOscvF{6^@jXMs0+o5YH}!mDqnYTWqzYW_&pSXXf?d%5l+d!FSi9jV-vYX+G< zkh4+>$w1oc3NI=}Wj#W)?VeuYgwObVOmio~p-ne{T|B8FGdAV~f86XEbrLl`GL!_c z{{X;ulTpl_!L<{Y<2Qy8WQ!4)GVJ7XA4(Kl6Y1{;wxD(z{^nummwia@+*tL5?*$p~HH>q?Grzz_w zZS@P1^95w}TkZ>!xq)(Y`(e#XSPR+~8ituYN=%3-Y6KT0y+E>AhLl|*7EgxYIn>*v z4%k`VG@Y0ZcZgp4yvZxK_#MtWFD5xG%gAU$$lGiKZGwhy(#)-3(!7qtq)|=cbW+SL zz#*76maq&nR48X<(lEINX3;|nHsH2f?i$%K1vxLBCv2%sW*z0=JUT3qXB>uM2=;r% z>2viCuX9tSMV(HS8ty&}`Y1l_0jASsKz~&t)6_dyMR5i3Y>G`?2Z`|req(*-wec7g z>RmLRGUBVARP!&T&ini`^(MjfiFVO&%Soj6VT<80W;OaLWok4c8Ii-cr1no+nVmJP zoI%8Sw$O~--5=y5ztbT>LKfIqbfv8xLAh06p_CLbi>MQ{>%Inu6QpU9!iEt#joCzp zd#ch_EIIjYEB9HcE*MrWtz}+;RqgoBl{R?+_zZ)%uqORN{We~EK>nJqI+UmWVDD+q z>K)C1w@_HPZCc8zQa|*iMfzZi(&9UVwy<4rC2Lok4rbxhUZS@T7%w`7`fRPaTu!Pq zE_6g8c!gbQl)NdR78O6IZd08fSMIsXJ(l=O=i@B zp`_Qkyv52U%O6;`OPf8q7N+(aFJL{NO1G7sSf57C1yiy(mo}?UN^r*#ELvJpEnlXL znsv0hrSX=9R2l7>VSjt%YuB_Stjf99sC?x$C6PvAkin z()5}JEsP}$iroftd%gHFt0M~I`Wuh0Vj3Blt~)wrA}LW@bMa3xHMX|5Sf;BK9P63KMwu?7(?{aA;xi6m>s$2Ytk(50NZUBx{?X@2Ot!;G2Y-gEJ}5SklR4=qcRP>4%M^N0`p4ScB+j6L#rs_w5CA*rfRI7sSby&JXX+Iit3y&$5q#O1ay^5+WfU?zRTUDkpfO%INi1spNjr zwBIH7x$2x&YIQc_%pIzKYj$nNZT=qeGW}EiI+0=1mIgk8;$JX@kH`?Mi1ciZ;h(@< z!OAFRAl$d}`atB>Xeg%e3!FFoTpnl(2Wm5-qhz>He8nJIGaK zu=&$imQ7G-u3i-|7(;62H8Uw;USfnnA zK%D3lGYSz+3wlDubMYkLau{5LO$#oOMGsI7d>S7%+C7FJ1CvAI8%gF!;INMSkQuIY zhSD_+H0#I=Qv&XGk`Y|j)Ir_K1q8vf!r2n^u%oxcQT{hGg$<*)plIdqjuqvkadh(9M#Sq~xFZK-vaMf`+qh=-sFdVOFTKnMhw&NLV;A^w>*YJQ`^?I- z={=2-_r$9db!Aie2ur6GGwn_9=rg~MUmnVBBqGFbi(=BrSD>NnO!4NmVmOaY3{tOu zYoP92M)ubD(t}85pHnj~f_M{@&2b7G=9-b2F_%4Hqt z{J?TY5G+vrgI&I7a=-J;?ADJvV35h+3q3(a0)>hoE6C(tVuo)KMY)3H)n#2mP+jiO z-SfZ}Pg4bpQ3>uHLkl&VTo>!6nrI#O*&51KhMCOP?kX-;XO~NyZK;?KIC)b`vk~&z z%c`JLO-;IoYa4rhGt1m7&q|J=vOZgN5n0sRs0`IDqqQn+){vT>bgH0UOUj#QsEW@G z-xa>$I*pwM(!PK*UpzHX3R~-P)7A_1?H#DCn%svIr_gp>O}#@*;IT}sH&Gip>D$;h z#F=efL7~K*e$Y3#Rkc(G%k3a`-F;`1VtymIwR%W6W?rQaY}AR=bnEpfe|v>#W?jTp zkgD0MaID0ctUH@kp5fD-CQmh;Dcds-52?0*v)p$|(h71Zj?1duA$M8}+%Y?`uQh*+IEi6eovNVow-sV5c$uEwvdP6fPS>Yut5xVJm$*D>K9lKqKOKqcb=YY& zJgHDw3cW#cd>CBxog@@WT$x)mKd1@d|gK`v9^A>-FBF^-Zg3eaype!@5A*43c zb9T}bA>o;M(iR9jbd4f}cL%7GrdjoA0h}KqtwM$p3GO*;;)hpAY35Kc`4Vrp?<|32 z_y&f?<|ts?16V!GEHDR$`NCUsZd~ajo_&Pzf`$QPFZ=^TH;$zia`f#MZmEHj=?x4k z)CW7jS;wF@OnkJc&U+4qmX@<=1$hzQXoBSU0xh#e1r#D3!UA&!C_>D4_3aCj;w5uX zw@d9d0?uwi$Q91OAH1`h)GX!;lS$m4a2#39$WctnF7PN|ZOjCTtJHVCH>g&MDp*gs z-s5-1Yc~MZ>IDoThmRmR-a42pHFU7n5!KevDs$Lht8lUooQ47o8W6cF$Z8iPTghaB zi_B4Z28t?%6fa50eIR+Vh32A<*mq`|LgtNO)nHqw2^>XhbdnKO$d8Li>gi{=Pb4lF zCOs0{t#u)K!7+qu7M1HWygrVlPrT81dnp#BYKm2vbnU0_Q*~1G{eipUwTjBDSLMDn zI%{K>PdzoEN7+|ea`!SNjLyGhWoBGTrD{WB*UITysv1QSu=#e*)Qgu9ZgkVUYd17a zqpKpS-P(q-+fSQnJ*^{Uo2$??i(Q*TVl#Mxm)o>#jdLfJgnYNn$~(PzZqi5F)z?_* zr)T?3*k+^*(+j!vC@HP+r1Wg*N%q0o9?O?iK_>F1k*1(K_CBndoxpMjaKYoNS=eBv z+DI!{u~OFRuRv`bH361tc7ca6t@H_K?A9HXZ5rhGl9NN=HI^kCDl@Ah7kufcQp5L( zC|lA7_dc1XPf()!i4TUeSTu&_-1d>QYNo?mYzq`ExOX-WAfcI;PJr6EDQof?XE37F zNOv~m-jQL@t6SpKldx+0h`gpyHr2?L#9{QcN=M}?+e>N*RZmxNEZTu(GLQ0?q!w*D zX&gW7HHJ||H?%F+lH0T_P^c3*7)2`mqKZ(m#o{Qfvrz{A@U5A8R8bwa#q^wQLyDNW z)mccQ)H=iARk4K)i>ZpIYWsmjXODm`b$!FDZKBLG}F&;XklJe1%?&c%67;p+(9#$ zrhPj_52)rt2ZE8MN<&#P(YH_=C#Vdw3sUOP2&=PC{KD_5)@o2W-X};KKG@Ms;YgzM z0}LLaSx7y7F|)ijoX)DvJpl7t@|^ulden`tZE5{|VD)kXE$m@6@}8;`_=LE9E^{nz z5m>CM*3yOv$2@-5iCW7(niD;zahknRMA~})0K_t%ao>7Jrfcp|&*$a!_~v&l_s2-r zJI7YznI521om`~n`+&_bAhuE(DteS^r9#gIoEJ|zLqn%cBqPXcmUkrk=T53aO?W+R zPNPU*s?gIy8Y!v^4fDd2$eiYB?Gy)djz9oUv^J%(p+$V~)u>iqTa`T`&6qynMdZT$ zP1bf829Mq~vv>f`W46vLWc3E|@=NwaAqHP-ML&-me zNv_L%s_{y)eHzW@z9M;X*zAejq2@nl=&9-L{5?)+A~M8yj$J@k28Pwi<;k z>;C}c1NBrWYSbHU(6>pcwxAmJb((Tv5;DzItkjJytE2|KV2T}DLqZlRc>zx6uRNJI9-qA%fdPo$TnG6dhgJ%MpO{Ak(kwA7Un+h4Kuyx6n%_JW=%r554ax15S z+}@Lvl5F+6lFD)$K~3ZrS1)K2%$@d%C_O^S@eBH?1#u;SQC!z`K%oil1Lq;3g?VlZ zbce%mp%!;ai9T|i-*H^m)JokUPNo>eXGr4d?rKGideRWWi_~ZwGkir|Nt#h%g&U|?nZsLQhp7&wYSI@Gc8lI;)t@+CK`-OYMV_Pb& zlB*Uj%WmWad%iaRXea-JyiwHU*rP~ zO>IL*{{WDtzDud91*vVNw+`X*11_MFU6y8DH4QUZkcJ+n1Kj<@>_^6>4PyI(>Rq8? zg?gA$&ExGOYGsYCeZyI1X4Ob2d9fkh>;s)ol7`f3oj#$iOLOoRPf%Rytrv;tonXZe zh-rMO7Ih${nOe|W?dx(cDnn$gI)LX=8*ma()9My-^JeJ-FPYr$Z9tk(>S>j%+6z0t z4s~B>DQ2q0Q_O`9;?g!3v?Mbs+ezq;AW==~3v-6AAY9v>T_-cVG_W5q<%+9y3R~wb zJA(fJFeqa7kXJtc08BjZ8kFQ#`-1bPz*gDq8a#eL;j5EWE1+8`+6ws(qzL|iBb}Z%m!xX}X8i8ceI?nK=Mw!&w0oc69T2{(;0?w#e^nzsOO7a!3Rkf%)49m|@ zt-fv+boI^aOhWfgqb}qAIq+yAZ_XFAUO%GDq}=8;dcJt>IFCp4aamz6pA%J+O{ zw@}kNa;R-g1|zp|_2g{!<+xK!)B*ixc~w$^B~sn@28UIHJeE;IGYm%0-`pPVbPlcE zL2ZG#RKQb^&Fb14OKBTfU>--UNS!sG!|9|HQ8R5&HreA-7h9$znKY`>!YfT{vXtnk zcQ)m=l@ueZ-Z0kLsfGijr(J(cT_+|34y#9*KA;+chR+(5Q0f*%CrA&iptFUmNTTy% zO-S7=rk1EJ?rN>7q9p9w#OXh7xt+~6og&Wg_W`yBYej4wN=i0$mUl>O{{Rp^;MYG> zC<*>L6gKpMh93|!OuY1+=W6PxX9^&nwwF~>bC9{(DDPTmX#D$ErN<~5W2T?l1Xah3K@mpDYB7%tt2F&nwuCD zH4fp1n<`}sli)&igEpPpgGDt%NvdmoL%49p1W#ww6el8JW$)6yt!sd<&Z}yH+fO3Cdr%H>*sqJrXe{Lvw<_yKO{U#J^ZYc0 zmo2GaQ%<{7dat{={tZyqCAv;c54bn#rlF*5ojidcQ2NaYUyEoOGeR6d-SOzY{kiK)oB*%DhCcE$|$iW<;10JtOae^&~@MNTz z)pk)!3v<-EePdX!kF{CF74AmURYSGVowFAuy~TqL;YE>ZXGL$ks&~fJ3LHtjLTM^c zODc1s&3oZyOLrh2fj3(s{&Fiwww40t(4{?9Gd46S@ks#*}gvD zyRD^()j_s@PH7A}D799^hr@2vRha0%VPDCoO+j<0w@_*}b)5Wy!wf5Ks@+LxVS=3t zsIS9(1r{Uf4QZZK&b0H}NY^DA-vQLH)n@HOS$wHoBc??X8PQRetNFu}Jl;qlmu**)N zvXI-dg5IZQwyH&($7Q~F)Sz>jZ2?~AS$Edws9pDPrki%1K(nf_cBM^}nAxDAnRx-- z)GVHoP&K-=jV7y*p@+vvYa#Kbq6d<0{;j}l)3`Q8Hc|&Zt>5K>0 + + + + Asciidoctor + + + + + + image/svg+xml + + Asciidoctor + + + Asciidoctor + + + Asciidoctor project logo. + + + AsciiDoc + + + https://asciidoctor.org + + + + + + + + + + + diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/bio.jpg b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/bio.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d766c870445e8d3758e19a08fa15eecbfa49149a GIT binary patch literal 57942 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 literal 0 HcmV?d00001 diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/cover.jpg b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3c63c103712a80b9dcc690aeb78f97b9281beccc GIT binary patch literal 97667 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

lF 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

?Qpmtf-VSIy0NtT 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¬!?e@vf||v^DQ11h1FbF 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 C-s8jo literal 0 HcmV?d00001 diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/cute-cat-1.jpg b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/cute-cat-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..36ca562d0dfeb292f8145ae3dcee08286b19a8f5 GIT binary patch literal 46498 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 literal 0 HcmV?d00001 diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/flock-of-seagulls_daniel-simion.mp3 b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/flock-of-seagulls_daniel-simion.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..c6bb685727afcc70f6ee98942a90f29790dd3eb3 GIT binary patch literal 1778222 zcmdp-Ra8`O*yv}50fz2I9fqO1Tj@p`>Fy3`q+{roM!LHM6ltWpyBkFTK@jHf|JM5M z&RXaGyf^z|@3r>x?)Uffvyl%;(t!WR(zSE8d42>B0KgCcP(hCYAXIcrY&=3@GD_-K zFggZiR(38PejyPtaY-3DMHN*IEgd}rV^a%jTL&jscTXR`55b`kQ8DpJsp*;7d7p|( z%d4vE8k$?%zjXEV4-Jn^PR}hYt*&qF>>r+-{kXjPbNBG{{62kU2^AS0b|E2maR2{G z$Ona^l&b)Mr~k>(I}~X0zc>EBy&@l`pAQH){6Pv8unl@Xh06i}kX)FK>2EX$MR<_z z4HpQ))s6hWt}DDZPv!ALdv5LPwr1&Ke|H7npl|=nM(IHT?iytBQbHm--xbO+q{ahgRYRb;7rksHyW^}brC8awoW6vvblXt|K$*F+o)0Ah31eY#7iGa}L2 z!{S)xoGC>Vo;NUJZ2v*c1{3(vgnS$vVnyvmjnw)^$__1<$ZEJFF2tcQlcz|S9uAp7 zeH2IqXUE78V8!*S$%PyPhM|HJ1#6o24(d%hyvXad4S5bEva-|mLzfB?`E+YVZ3R0T z$3&jJXPEat^_~{|-DgX*hi`~h{5o?Ki#^ z(t^#r1OO+tY`oErDun!59+KSeD38`BUGm@ZzYn1VNwP8~D$630*`oS~H7uF)ib$Q; zxGV8X9J#L2V@Taf zN(UJ7owr0Nd`FiJTX}$;x+B0aT+e1kuM?7iPgTN{MMRG=BKnq$ke36+kg>#dhm%$% zewe~n4xizL!Y8_9mYSxPR6Y-L!>hWM`H>j~G;SMSjSSv`5+Z#F6S~I2Pv@wurWaZ# z`v0j=RWO=E;Bb)JHs*lK3de;sknH4$<-BCo{-BGls~Io7{Aq)Y^sFH#vz)6 zj3^p5chqj{z5vOKJE&7$-`0?)<{47eFX4L37RistzIW~N)az5^C&Ms%X z`In?3^}}L1?IC7qA^w(k#KjI16&R_8V%@hNn{ODOtjI=crj7r(G>pqL8KDuB|EJB} z)trHn3x%jeVyZP5bY%bJ;B{L)@}+%qV==;+@ zmW);#e)Y#KyVmj(56|$FFcgdPe8rla>mTe!SaI)c=m?o@wsb=!)#k~WEu?VP!Q`}P zFo?RAAZh7~O*umZiTKH=b=}g* zt*;KVkM?ql)NxXON>&d$Z1)Lhv=TlBhXdC)IAfvlX1khF&@gg{p29M3vH}=;%1hE{ za2t}#np-V+XlDyY$C(f;ksgH8?WA*gAMhZ@kRzjYI$^D<%VN{rY)Ki25;r?~5JuWa zf-PUoY^$A(B?!px@@=`tRB>JvtMxN@+*LA4&U~H@BexFI3Y1cg={#*j8l^Yl1e;aT zUUtCCIe$G@4WF9n5|6>NW9lVuOb=%v{mwU>ZN4HSJDt1xhS`vg<(eutPAKqXKJ zXHv5C*9>sps}Cp(r7%`DfmqOzO|HVZQdm9?KMqJU`#uzFOvtwj{5}erV7cWz)U=&^ zpDDudbE44esA#~F_83|s8QOX~&Staf?M_JRjQmp*P*uQXIZbJbjsqfyQf_*Tq!kYy z=9kt>kGJMW1&I=TQ@X|wW*57|SkO=Yl6==?hh4TmUJMyS`Q(guj_Ou9?Q9>`D6iay z0z$#XSC)7(qA@xs3C0^^e%?TVIOvCuiW-)=$P;bT;3tIpa(g))`QtT}TUVm8%G zGm%`pK^=2=sIc|Ai?ZLV^IXs|#9RiZ-wYD}J(6yr^v5MlLw)?ABhld(X_f|ob1EZ< zmMu9OA#~BUNoh8VP~i!j;dUk@Om>VT!FUxP*~BkRn@YCUB~-TKt;zB3C;KcR3HL*$ z%4CD52;YgeGtE5VjxuuL&DHP-&wk_+iy$+o3hxhtMCV;m_AQ@?2mv64C+MOi+Hn_! z^RQ2te*x_kCP5Gj}mdnqsbGLhv)s(zlld8Z@;bo1Uob@ARW_f zy|wWHX!&3CPz<$jcqtXxQGkT%=;L<4O0xML;GMSgP)Ky7L)n_GW3fvB??Bc;z1-e=Iinde+&ZRz zzYr9s@I5$ZNN3hXX*^<4wHZ7xczWXdo8u^xa9R=c?-1i>{uy@CO-!N4xnFjFK*Eq; zyLk{c#)SE-^haJ|2lT7cfWek=d}@`d6}UKnz#r+zF(V#FBSFB6gD>GqOJ!z?I$ram zGpq4!31Jqf+xK%Y|CLEdAqF01Jx9ok#UITF?!J#28YUetGQ_mf5B@eYg?HJzw3BgR zz3soRXDBxjJ{@R)xnF}}%q zw)#4p$!xl@eEK@zxUBgEauU&H{bbd_O>KE8X^E+|%&!aa>zXu}89$6;6fGO(doVz- zRYKzm7UM{A-J)$`1F;LUToNW*bsE^>H7c$hoWp!}KLW)fQKiyrGo+M4eOOzP1&DDM ziZWh?eCUxr4@S+mR(W80*08vUZ5auf zE_MvDb)qByNOG$-a->)W1B51z9c&&NLSf2HbAnm=bsSa1q$_6L z^0iz(<~(WPbjW0+jX!)n9VQXSoyJyerX~&`$53D;Rz?HsCu4XJ3if^iCqeEL52fXK z5tVxon$VF~{Og9TM!4N$o~3-VtBp+WYtzsnKG^!r&YaR1BELQ=SgK9DTNND8 zdg1xi*&T$2o{Zy+^H=o8HBIb#Nc7rt@7YVo8y1eKo>dE34V|c=A8mm)pn2zCyUO1b z@0UKiv?5o+6GWmI-g}JnF{K!{mVw}0Zq1){aVBK_G`Em+cSb_XKVN&w#DvPDc6X%O zZN1HQ;D=OUt1PV3?^njNzK2v(dhK2qe)k zHeGH^0g;uW8P_*OV**xREY61`|B5`e9WeF(u>yDgDs>SJY|RlYG|s8i5S**gg}a)~ z@HUT%DoIeFi~1Pq^%WM%2CZlxC1huLsQs5^zg3b+$~Z9SD;UPCO99D}o2l7L4dV~X z3&n}r#gT_a<#73_w|e16yu|*hcUnP*nNaRfH<9;;o*SYFgJ`fVBSa<-m|d{I4mayM z^f{6EYQLm#?I5X4k3sDq(#OoB*It7w@fqolnSm`{HC-rJs&hjr3-?!!tTg!?F;%k~ zk0JqKzezbH1tW(`ztFI4q^BJBxB*b2Kx8aAAX-n$qBpWT%ziXpe~J9eT$Ic*FmcK6 zH6%)PXByL@EZoycDHZPqlvlRw!j{ObvcxVpS9c4TPsG9#ji%oVC!^U$z|pC+ zC4y~tBVt}|swh+`WhB8dO_}cKML5vH(b3qlj{~#!^J5zQ+%?um40=AmJkk^VTLn$G zU4am}&8pi!}wPpSOa`Akgplk|;1*T25=F z8Z?+FXSBNphR@#~RPgClb3mEPc<)He0d4<`;_!OwWLnKm$e^=vD-KWT#|`Rs!nuaR zh&I`q8G8c51{DRwB2VLHQVj?%l#P4k{fcEAr!ZYxj%Df~6)7Swjk*MMqTUo#y^NLJvoo(VJf_!8DOZMsxhQJ4DaFW6Q$p_hS@d@5VAcK1%`mY?$0H zCSVK7+(fK10Mmtda8j#LSOH3rV_GQ4QXDl8Mw+Y%@9gJqPFk1cLa*gN(=Z3>FQjr~ zq_?O0{^5NvPGt5nZYQ_LtI;hPGiiD6?6au#S&R6*@ckfXj}uUsq+h?SVM);*A4+5P zB@>@~*R2~*oRYk}am+R7k*jm)oDS_hN+GqNAkb8b@T;xRu?z|sb>I;egV?*^Zb5tP zh!N$roMo?P_JM0IgGH3YGpL@F2W74Z3*O|kar1B>5xA$c4E){n$feTU8NUp-x)G;~ zqd2f_kxe%>bg>x-UDr)%LkYM1xQBmLudmZ^9z)n9UR=Gn{hP1T28(^p<`28AZ?vK$ zxsH72zY0!va^j@evd?c=C%Ki}xr@B+DbYA>ooI|3D1aZ<=8Mm|-onSbI&8VNMRoDXIV20B9*Iz{)yta>D^La;>uC*(5l=*Kp z5CEJ6AIJ7GkKE_`^jweNG6gGUunSf34UTv!apM^i z5|%IZD_DO3_ZNjHXt-GpyVs!+fN4LU)Pt?$oavR5I_L!=2;a4e6ta_>TJ^ zTV}WP&q>vRVGhVNf2IP({pVyumOCk$c$m~!D9TGgy_UX@IGBU55Y_P; zjRj$)>*`b8&*TLmM|)(tsrAenx1QN6ztklrrZ%brJ<;VFO2CNE7|>oeidLCa!^>}s zJ!5E#-@dt&kC6qko_4%)cr)kO^m6I3)kuwr8gSzqej&3kUZRkbrTC!^oEJk70I*w$9GkA`QFYqJlybK@` z6Ag-n0wI?tWMTuY*U34vkg|t*k)dc|h3)W7B)#K#-CPzOLMYJWv{a^)WiLLQos&}= zR7)hsk%3D#uK8Rsu|Wz;Q)8dd$7(+{=B8lc88>Tcmfk2UC+mfsEpMsw$J-)=6&b%H zoA@?N0T^3msNkV$f@pGLK4Nanw_3H>*nLbiWf<~;?9BL*8kVSPFa3Vf2{=hDu{B)3 z@EiN5OGuseUpz7vZbfN6>(8Mh+!3q)%EHNn#M58qys_Ork;C>ep6`P}Py`l$j;X-e zOszl49Eyk|LodLG+UguJr;m_!>-fnqX#<_4(fbO>beavEHNg^gom0YyC zbWRHw=V^pg?lrN;d6)KJbP*w;B}Y@a>HE(cBSzB)*#PzE5c$sGvXRyn1<-X6poq<- z=DO2R>HQSG%DkLWkcv#IWQ<%4{N!u9$?Kqd5Co@J#Ng3L8#?-ONBgPG^P7jnEBnMp zx%O|H2A;ys3prjT02BaF)2Y{0F3EPrtsWbo7H9hvB#}dCa3>jZjVg&j^~YX3{jXDq zVz{adQ%bB7B}*2A170s9T6Nztec^nGxlTLF9J8*ni8~!OLpJh=;ucBu&9+80{PT}Z zyh{@GYPJKz7dRDapO2(m7I|Mm`sd?(0tPin)Vsfjqf9*2&<0;F7udTB3n5kKJYtE& z#%o=QE#q8-Elhu4OlC#`o@?Ml7sG^BP!XU9{DgTt49F`k&KokucEiLQUPRp3a3X9o zD>*bDM3|v?uF|}8Gi>lHovS2>A}bUJn1vFfZ|;tcMplLW!HOzO54-JERO^R!AS)`q z!`owM47$$W5mBXqcB~`~f=BCSrmIo$0tL#r79xX3sTuBj)f{sA z#evNJ_`MzGq+W_QXCH1(MO|J3uaMMc#Bl~UJ^=yVod0Pa^Se>r5NS)0xukjxZ2^v8 z>u`sei1rE04rDGm-cy=Wg0mH_J{mLC+kkoTE#-VQ>t}jDF5pjpDF${HVVjGXz5>b@ zcLkgmtP!`$CI6v49SpxSne)dJ^{d0YH?eT?*Ie*dIM36simtc&Q2t5T9W_LKD~*Qc zGLR25d}rqZDOv#r_iF6-6#5*UhH-%iV}GMB-!Mjf`nzqbVQ_8ErDm>QCyGQ~snW<; zjDBKHW%!usgNO2I@78c%3JQR-xbV^R0i#hlOO;wov7tW6Zuqi(=~nsXXd%Lip@~gb zEX2LvykGvaw&JAy^Ql@VMl#xUob&!Od`zIcr!YLEaJjpdpVE1(=vt=nU72I;o(MBG zV>}osB%pgA|Eo&&sRPPd6LTQNfV>fl#*HwPWwd;ABOYh3G}?BQ{YUJn9NddszSPB! zlQXnM-thd}m(e>(zhMK37Hy@b)%v*ufByGb2|e%fV#9Xjd81{cjor2H&d^k# zwH(36fk-8C0BGJdL$g~w){Y3h($qLw()2fD@l&+zIXU4kpG;@#&h8hxy67`mhgo8+ z?xY-r%Jfh;+dVD;N{5|DASZ$uR1;XQbGm1E{#9kDyVh$~RO<(G<}akjV*Oi6sh%}uMR)zv2$;U;>DOoQyZx5-X9$hyQSR%ob9k>APr+9PE4N6*e_JlvQxl|2SWbhBQO)$b!+~$tYzs8~K8Bv=%ei>1JaX z00Ds6zP;=RWi^KN#7@@qgfP`mn<7yD6c=n;3~4xZkOO2bZZsLQ7;c3lQS#EJ+q6~;SWL3584qPfQd^hUn8sl8 z@y^fB?V&lkr-v{Ho1l%yr#7$9%6kSiSWh&W&;9(~7?GWx`9;vEU~t18)6eozFid{k zO>ax;)x48-)t;2St@s9}VT$E{#)JNBRAmoFFBCp>D1lN8gAlNug9wP<-r?sS!5O71 zgJtzaBbJR0N*$bL1B)M+?2;yYa2SFI_D+a6>o6xrfc>1b~EqVQ&QO!?!HN7~yPImMWirgVDyw4jrKcIw=AN#XL7Iwc^1;QpJy< zBc!qQh7xLdoXDT~EktfU-NCP8%{S{5gNZ+I!`}0lz1Z*4BqQxvVgTwzuU#xYmXByp{6V8RWoy?RFdVrQdl{T^9EdzC|>^45jXrjY2#l-4>zP_LTz$d()KgvEV71!OX z^i&YDzKD^S5(VAwL2Ys@F(O@?I7PUSqn z%1g92b@~tO!*H1-tJw!i2m7k=P8SOm7tI3)^$XE^^Wqx2$2=JC0`M&1qnLi}n3t%= zUk1m5GvjZ(1POz>x#+@p$A6WIk8pA-C(LHP1#6#}OARDFYN7#9tM4#veYqs!Gnop+ zg*Z9;c!*B<^UQ5hi3^MP!6;O*pyrpdObMKEDjzjiS_i`0Nzdp9E{VYWM2&Rm(YEQV$y0nbWB}KFi%58Gp3;(#4si{yD_+L2Z)hAP(omN8)${|@lai! zVlt=zRE%K`(zCDkI5hb}sPm2{)B4J&Q=1x>831}p3FpSmImBznX{KkPPbdEFa8r;6 zQ~Rp!zP)Kzh_$h=sz~nUvcZL3)ZK}p-*ZETs zo$iWv{ijbu=d+AYc%}K}N&o2`w@dGAx}8VwU>p=*&8^@qgu)MNu2?7-n!x04c&+;S zLYX|GmpzPQDQZ^@9{3TGA9ncxTfr16gKsL`yJ2VaL6Gl|4!5RQsHlKejey-${8IIm zJ()3={*x&|5UQ-xTV$ArlG%Zroo{3F&5rYM-th7pq78fDzx8Ez!H8;T$^5)`wfWxM zPTV=`jg?$yOSAp(FpJiki>^e=&#%O9*n0qOLhZ~oypdty%9ULBi`V2b`4j*?SGJ3Hf8<%oY@=Sr_K;0@Am^K})? z1YsP^(;sRqzJ0ngxP7^U$wgV%+}cI;uy`xq`aAQoG|HEylB)S~>`N;ch?_|0cZNi! z8p-ZZdjE&^&u|$Z)7b|V+0N4Q(?mO~CGFbiXRCdGTG(j!SV?PT9dz_*A-23g%ib^k zn|bb;*K5DpQ!Aa*{zwv8n>6dOxS>k=s!IS+CWzZi>9;Ti2R77Zf9NG<3^R;U@;)h< z{(K^*bBXn27hwQS_T6L>%QWa9Z*@ubG5C&0VQMd0sr1yHds=@jyIAZ++R`?^t;H## zlv^jq_)bY*wRwDW`!^Xua&q6Q)#v4JY8HQtzV)Cu6d7q>Qe;#(;x)pfV}V`&@Fl}8fwAb1CNbc_ScLjBA3$sW5S_SaOBiSI zG$%QqF>b7dMbCCogQP+%SiBe8AS|47B-)BrJ~x-S>DZhD-^;2=_)G#l2cgxJP{LtjWA4H z4`ZeC)t!rjKmg0`zl~5#5UUnGQ(;UPA#>ssKE#0=g+v9+u2|4SD~h;Pf}youhE^Nq zN1oXDOR3^E>{Fp+EAxehWjpd1do^e1RR3PuBcRYdb+e4I66Q>>bFpjuw$Wh;?oBrG zdD=3eOy3SR9OHRK=0~B13&!L^e|CX%WT+}Z4_h6_p%H-&Gv=26RC7TV)yRtj)5aUA z-ENajct24X+xMQ5bm324M!^6ufQ0TdYS!X#9J49Dt|2)tgiky~&{fDuKC}P@6-Y!( z2;}Tk?lldi`9~e0Ug;!ibkZs!@kW8e^!O>+8cZ_R&N?{A>tICvWON{nc!SD|ao7yv zX-55H`RS=6dK=SB<<;1S-JFNU!zTH#uNP~y>KKPaM!;dC4SnPhGH;(H=*c8tOW{|L zfP>w?qW{po2}TVw)p$^S-C5yqA7pntr!DqD^@o_(?&tcG$MR2Fwpv$ z(|I0ZE^>2P0fmav`R{D)#4EGHMQjgOxZRurW7TV4w5N4tIMoOa28Q%BuY-tPQ!~v= zbQacf!P_`8z5TAW?{hmhU|wr|3GRKZ^{+Yupp6d<&!m%_StS$|EmKN3i!=z0{g<1-Uf~KBpLEi*1 zdWZ!exNkdyaR_oRy~s375PU1leOGOnu2g2_{Znd!&WpD}O+~LKrh}lf?U2DicQPWe zJGq2fEvgMq+UfOFoywgWMpTKF#e-SEG9kv)e1P(6z5cj3otN0A-U(};LZ{}~k;-Be zZiY?iyfN7t**Rhg1zh|40PGUvWK5J8$eYk?RYCS`h)~`LbHaaL6iDHVKwC?QL`y@E zpp|5q!phK5EA&v^6)P%ev~l-%n009+oN@)CZ`I3pmi$X+s(dAYbGVmkJ@;I&;fm7Z z%Os+i)?19ckKI2olG(q5fLWH3D{2ug9juJ$Zzx-$Hx7j`)IQr2ow#1HO%#zDC1v*p ze;B!tdm`oZo`ey35k!SyZkY^K%Kk2C<&5jy`~8`qUzv9ij+w}JT)#$;yAMYSZpm>d z*A4b{)nZ`!nu`Mnx4yn;9Z;7f0GRbFDJ>U_FSAqV%7u{Yp(Q{t6-sQ9LVg31FfQrZ z&(+iGK8guZge#h;=~7OoWGQBhn4A${Nb@KVh52nPT&1k9+?z6l^ZM}fJnWx!P&?S@ zokHp1V5zeiU zeeah3L;Eh=ipoICpM`X|wYu|--O++pufNKL8BWm?i>+rD+dqk|i|MuObZTk6&TLP{ zPx6E=;WBM~PynO4Z4VIR2M)e&KTxKD@FjPd6b2(Fm&IQ2d-|(Z$-Zea@ zv*7&5hHo{HIq8uk;k52#5a154%C{;7v6|!qS|R zR}t;G9>&-M!^w=pr~tdok`r225zNiHPNU<)N~XMa8hczhdyZw8Y*(#SSfc@qG#>%E zsQZCC9%BP-r!Lwuc_YvY?N`w-GZ&)T(B6ZetRI$UD|QRi^DUNFKv?6x>^5iw_zJ*n@Kp2O-E zy$QcxVUPLvJPYu=Kq^TKINAF#@llqpJL^CX)z`E}F-;gCq+@&TdrU*Aio21I`1G zFgr-X*U;rScTCKnr|>lBv%OjCnUkG1m1fq=3ZXGgE|vu#xR>~AU#<9+{tfG*Waj#6 zMQy8q2+t&EiK{laB?gcJK`-$_DEiGghNr6{O&t2(fPmE zD)MC|2M(d`;<+SYVdcUTPTx7&O-&)PicMc596w(>F|gfsymz_K()A8YT8?3q9k-9e zazTnf+~#ZDzpc+tYNsYjCj3}tpT)VvJG%Irzq-a4qH)Cz-j@lsP5Na9>TRu4#Agnf zZlu!3HzWq4U<2c@NO`#ip65m&J>vu2<{hbd~}+D_XLnV9(19|5Lw_`z<6%T zg@{uGijp}Qbr_TucUVZ!oo+R0h?tr#q;<`my!A_C{I~0*uQo+Z{3xj2pB;Yd;V^%3 z(=rt`?(T1-(wG;<-A=0mEs_0OjqmtwMNPx8JcDsqPQmBwMnc;d%GNp+Yc(2aKIT$2 zl(_y{|McGF=?AQ;sCv&g?EurG`_W#I_kS3qo9K^`v6kGY$Ha?3^qQe3k4I)&T>|D_ z0x}UZm&{TufGP8m94YC4OT!f zk0!rw2Pgt~?W?YdaY!i^aH~=+8ECV~dVz;84kcD7;hZj50a`&Lo+-Myt{y>mpO9n} z4#)uRC9(yRwH#>)2S`v>KmZl(>B3FH@ZW9mD7r}@wQDEe;Aw0AOI~RLcPXLZ|1<~J z*rLE?CKN3V7a#l)4OJ|@+>P4k6vd6rbL67!1a-%^tEl;4l zCiXNd&NQ38mMbm@i5Mj4m0n;W$`p>G($q`uvKA)naPPSL!&s12SX%TP8}UzKlkpZ0 zIpT+R@JLPqi)f-#t*sZqsO)Ze@|KhNj_8IbWw;L1S##m=aj?{79s;!|^Kw9PnV&_? z7MP@i3Mwd)m~ZM0QV40#Fs~MDE2&J_|BYWH@ez3Y;T12OUQu!oHoxF)-}d1@75W=4 zQ>&}tuPmE68F$a&A`_%n8zyrB4?H8|uxTkGI9 zbuR}nYSd$joE|0f$chYFRWGJ`R4S8&fE+zOIqr8zVK={5+Rj%xLN29L_TyG9I`99k zxZ-OUa9&O7x>OrF)uV6!3!5O2COil|WiO1Gjhq0Y_)pz9-P1f%IWwBM^f+Q-WWY#K#A;sKJGblcwV0N1Url z86T83cr8``6zBrbSSKWR=iSO^EktnvUwebKLLzWK$Vm}RJ7H^JDwjsdvoCckBr?=$ z7i9FBMU~FugYiW2i`c8n7Pj6yNBV!Ho*(!?Tl>52z{_>23llxsWDND^-Uo-94oxSPIr7EK zNC)QFdrFG8YA$zWw9Ao&20IVS&{=d1!X-wN1BagAH(jTTo|zyosH~*Re*xAbSQctC z`(VH}I$CqD>LQ;=W@MvsAx3_RtUviso=7MBXK>%JZBVH&nPUCo1*yW&@q`=VPs50T zs8CV}bVtwsGiJ^&lZnDIh78^FHI4827l#k+hy_>aE6?P_%~925*GO)&nMg=n7CTRG1x_deYd z>|ZFOR3A)8yGogo4w}^!;`sViD^g1%6>UzuUy1niB-sjECHmYNE!qM32*LwV!)C007fjKW2Y$ z962KMD?7b1EjTWWtfti*O1K+~6NZHvH*QT%>}*PdP0UJe!Bi$Ks~$mURu=2PLsbcA zR@?rQo^&?!vmkEn{Y1s-^`_x0Q?&%vbG2Ju&xejcNXtdkQLEDH_d(=tT@KOf^~a#* zXo^DLSE9k$iUqPQ`lB=RSOxs4Fl*C~Mh|BGSO3P|H^yF?kNn|x!+!WcDHQ|R!-2$0 z#18v+5OueAbp@s_eqFK2eLt{A{@Z?Gz}QTPYcn!iBwFf&GN;RA8t=G=?gIso6{2vm zA`hU-xq@Nf$pJ_r->R$8EptGoX_9JL8NvGUf|xzz6}Xu05Y3$56O*Xw|9OYGa5PTK zxd&fm{id<(ARCAa$wbt>>+Hoca$dxofArc~{sQW%Nzs-+pJ=&c`h6IKr464q zA|D-=j~4y?`J~b*4_|`Zfq!js?$MHy{RRkps*XG<%6 zLXjB-6wmhrdb`fbd>cAf&iDkC?A;lAEqjugD7&)thTmKj=;m$AAa2owyxfw{jhBac ze`HOMso9vL?#s>PAe2+Rp}jb?cbtCwDe$aA(KdLF!X}^auveh%R@+uMpvs@Wkys?? zCub-Z5pA6r)jDipbAIblc2iBHX07cBAU2{Mo9+4^J&Gp1Z%Nw0Nv6Ookl7#(F&Y*S z3lwWn=x!nV?urQ)S4Vje#x10$)up13^~T+C)U7Ot`He=#N6Gcf-f*aNM>{V+d8uv8 z$VjZ*rMzzILLX<~uqC>&OZR$9=S^Ate2{mzD-g1d+El<{jNagBTt zg^z0;X0Y^7obJy(y}%?rRT)c;E6I0HTQvrnqJP^xZ@dl`5670BD}@fnzpUs)4H}U1 zyuc`UsC{ctjK3vvUhFUUr)gH5cl}g)xnDQ?$1zQW6-63F^C#4M3%kz&JoauKT{$OO z3v0rOy=o^nsDb&0^8i$`ZXP_ja4x8zR*PIN2#Q~&#iwR^zQLB(>QJJaH1yU^xxY@C zM}hU~@SpUnBLXi?Sv~)vs^Nj>X-H@;c2;q30dYe~2V;N^MogcDDGY=A1490OB(+zm z1%p7(N+8hTEy;t4^hd0xfex5r_SdQxFn{h34)m! zl~u~Y0J0C_*yVjKY2;=}cM(0Zhv#hoDVV(wso{#Wv>^YsvTP->JDP6gtIv7b8xLSwO?;YVaj)Uex2q9-X$u|O6V_3t^S2uXsO%VY zB+T8Z>g9bn0gga~VcBps>QaiXy6*Zx(9pqSec8Ch?)Ne-TdqAG#?Xp_X_NVK#zL-P zD3}>C_Ks~dUXyPDUPQ0zJC^b1Z_Y{n6SZ?wmhJX4FaY3I?+Qu?2!j}=s>zK{e0i78 zgMpnr-5zqVj~2(p_rr3KU6Xel#{618nF6bQ#01kChz8%!HFej02{IZ%%7;zSlrR=RWd4drr|2Vk8S+c6Vgbo z)lpE-eWC{G)M&+qY}&q(RA5`~H*1@N3=t(groMrztwx81YJBR!2EEbRn$77qr;D`` zn+6YEQ|@@{L%H=ycY&U+WD5``|n=@!0>^8dZmZ1GYB?a8Dy?zrfq zxUkzM#Ankwyi?!0msi%B`63D1Iva9*vT7WP3A!E5V|s%`D#mhQ_Boab!iv&-B*xiU z3op%}>c7(qe#f;;db3){uIuxiE>mT?)>RkA4glQ_mn7w{EJ4emtcR$R!UAGa z?h?tu_?ZxhY-DYG-bjQ}N#eDvk^ak2eOjfUqkisIJ6#ybYZG&wG{7_3mRD%j2n#KL zU5n!!?9m`Qxw z+_Mrz=t!O~v0*KNDwJ|%b4^8_n$>oBmQ23~3ANyS{8Yia$#*L$xpci54i%;fHj4Ekr{{e#{(oYi2j4uYIrg?3Xhe$`G@&>B(72ybm528&yC#sxq zt@xrvxtn#?yv-O9g0xEqXqmj?+Xiv^-x}X~dv)NMb|;n#?ga=W*ggD$1?b*Hf$U#rk!vd&soR9W?9FPG1M*pLH`GjJ`r%(>Ncw zAP;03XR5Z_0n?l`5-rlGmlb3MxcHO(KqyNDevljM8uk0df)l)ij?!Z;furP98U^z) zI^M#PAGF730{AiF04Mty^)-6q|{PDk~$efNhBnmggmU@f`SAZUxJU+syeJ zSPQo~+MC$L3>u0>t6qFvW438}?g!-ascM{kBp=4WroJ3Q4FxN?wZKsamQdQC3dIaF zp^_xh2i2y!T*;{z>~c7>$`RAy>4ugvvIWef8oqrXtQzYH6giI7gKlHN9G&8<6GB2d zpLy2FLHnc=UcbI>7nt#tN+*|;Is+Cc-htJT`@)z3o(qS#E}4-DKqs;K=lht#p_}Zo z7K?|I7AOf~Sm#)vcvr zd94v$nD_@uY?xU=4=@<{W`9Yo$NUbuLf`>t0CDL8%HxvM+_bI0w7iJWQ2EkyP=$rF zFqZ>Kg~LI6a6DNCLamRavZqU~Dtm3~g{%;(wOmik;>&+%bUYCss!e_pcJFVZ}g3+rN*|BC;bndOCP$y(ay7e^9XR>jYhGkm98Vp&F zf>likNxRKXn00aX#T@C}926&+3$C?0=hU~ndgvugz@n{2Od$jql zy_ib2_`0?dVT95c4{@(mQX(@#dL7@D1-&?$g+9tbz1f|aUinxM@_dXq>Dy(|%lwWc zp%&YxM#t;+=SqK!N8WG!{M)_%rImPZVC4zU^@NMY!yZj2j3=^defG9`h*MHxc%{&4 zBMuC}G$_EOX3n;NvesFT9r=c1k{7oWw8QzRCc@=I&~ohv;ZW^}>rEaz%gV$W6wcgc zdYv_h-$2&B`wI{ywf3d$Nr7=5!3copk0D7?MXY`jlh2o&G%~OdoBV&?VJ8%A#74{C zK>9wqy0hMnuAi#1SpEEhXlIh%zN-u~trr{zH|z|COHrYaqxqX@jCr^(*VsRunOW-v z(txBc*iP-Mb+Ti$^FP%7aXj*O*jSL%&w_|cq7ta^(0HU}FZn-4zFM}X$NGKJpRCh; zTS|TJnwoE05$b#D%17xW*!%qkuVx>XKxsLFondc}&~B9Jpps8S`yx6&80YlY3xNMz z@Dv*=lLXQZA;{xw#HLT?^l73Y2<%sc_?&{Vint^Z>KFy-!P{D8yODC;;2>gUxLL$9xZ@$#5{ds!%^J@tQNut9h zfq@Lm+Z&(E{|2uB0HvWS40=>*EJ8Nj6OZurG`(mv%V>m2rg>i@4tYUE_^CM>S4u4q z%e~pUsoD{o88^58Z={U&0$c^?LlIcURSzEH#R&*!=cL8K#eRobF-MEDd8YDzIJydk zsM;>LEDKU1-5@O8oq{gi(%s!ir@+$P-QC^YUD92WN{fJm!hZXH|KPcMXV0B8bIv>- zwDE{#_}H8a1S7@=W9rDp-w~iH6PP3})+Vs28OJ2mmjN{IIj{Y9JRZBZDQZ`%q>UbV zyyf+Z5_YlUaoQ_4MXAmE)i26CZ}c+b}@Mi5+Xfe!>2mNHC@8Xo@ueF9Lu?G>m?_ z>?L1V5){z@ajyEI=%b@yypGggIFeKzeIgS-3EGd)vJ6Sfmsz$L+bhlRSp7aDrt@ic zhwBrpEVlm334eR>4s9`PWi-G~R7Q|O<=O&_1`N-$n4iec0@1}-YuLo#SS4pB9YxJL zpQ6y92D1&$yd5we*I``3AQ6_rL!pYTw(Gd42iaIA+*$=}Ya!6(QKNZHRdQc^PMmk0 zpJr^c1ipLcFaVGUV$@DRaqnQu=;FWzu|&lOp%dTR?yE(jXQvFlT~$Hg@cM7)*!&O~ zdBI}YS5I=?jWH|VBB+$)CR^o_ldN)_uIi;cimax=EhX}8R7r?E6;Y*hY4A@hf)(>| zH1R5_-f|^0m6}$aDt!=2_;O2iRQx@KrJ8PS5BvQM%U2E;z;IXwMVeFRZ|@6uFoVcD zDPft@3b`gy+Oq59@yQ*Hlc?c%rX0=MY%CqouO9!G)8F8}pkTU}6kT;mMgk4T z1Pujc5LJ5t3k~PafWtyo-pC?>)NunTg7|5y1=qh0f4O%syp%hkc&rNZz_~ahNYi<7 zjmDNQz8;+05}hoxuIL`g%qf;Go+_kn{|0SbZn(0Jm*ykO>$2YN#Vp~}(sT5;XX`TA zFYh8-mTcqwgr9!gua37zroML7#qDS`S~hwc_>`9FK>zzAay#8Iuxz6u1V&|bnova_ ztzdv%F|>zDx%u>^#7bH8Wvalbk`>Gahhxj9?oG1ouUb;Sx|-+7sSzDn7x@+pH@*gD z{W&76A|Hz>F)^TADT0L1bMT~E|1@zp+o&BAnYV}I-N*LVX@{kyk&+zZ3__0|DgRl z*wWT~*;mMrBq2sOz?$KQ_S<5mSqDy2_oma{reXtk-u#>9n6~Lsr=1DD70cN+3+LZG zX9&Quo2^#eQa?q8F{Xf9;t=zfp7h$3;z*v>FXu|Hy*rZ(i(Ooyo;XHIjB;u{Wt3^= z!+}Agms|_tv{>9;xM&hch_np?BRE88N`a7q*-;Z>p4dLi`3n~hdVt#E=PpbMe}Z*Q zKdZ|e-tsO_HJ;XArG>3Ui8?#@fqB{WE0xXEYAbr82)1r^LX3{H+HLgjpO8*u3J#)i z3`Tn&7XvHAs69RkYdg&)&I^2bQR!*T&2}Yp{&_5I78TG~-lY+3N%+bX>E8QPUeK;{N4--`mrb5@x&PePB2fu*{rzyWcH zT^HR|YvTZNL{+U##+Xs%49RoqC)-TaV1Vpz^P)GDII#?-G)UEnXdnLdqaoFw$7_AVcIF%+wUrfOqQW?nI;l#$W%dUpQMKN~27B$k|2euVXRVYe8Ga%8lI^=NKC4>0-${S!(HswEPFc z*Z9qBwlw1JM_AdI@3j=oxV>sV%7~A9}=AguN z9OT;uGS17U9-A#f3z3k|c%Y0LBFW++byUe}&s~9$e&%G)dr2#dkF)mHg1P(;+W$fO z7YKR8TFv(hzW{t*INq9ZO}jNv>EdGZjD_>`B@J!XLjHqkZ|+oQ8b6)EYBXwEdrepz zAlp9Kt^-dw_*aQrIFpH=1FHG;E2;11-`)qfj`@YSoxGehMaz`);SIN?=jvxI!&r|A zw@WKDMZkfj%;wLL|3F33o`Muvw$Qt7Os9u{6HYfX6FL->#fxMcIxnynB}DhKQpA)fBCD<EcmhZe&8Y&V}-zAA`u`Q7i5L>`R5M^tWN67_~1PFxQCoqpexUhbZ6P28d8f@{t3QSKtn|rJ`>+dB|I*I=AaM{v@h#3-oHI=n+50uzuCDMyH#yTqCthg%BvPJTDf z-EO~Y`$T@NKebKHP|4s+Y0vm;xB;K8$|T)oXqE7??v14=2J&P8JMR+5CvGar2`oPMmg_^mn}ZuQEX}QT)o^4rNcg7IvQ%7 z=Sj{?B;7KQ@>Qxs|Bc zu$nIO?~ovL+N<{Js83#=B1X33S>i}ZXnp3Lb4E5uG&5)cy&(@NLnOhOLOq zx7B3-(V>PulXis+7|#Vy&W*v9pzx(xiXxI1$h#*| zOxnTv{d`LK^@yyxva+Ine3y^zHwFX(MbLR*qQy}#Lr&xdc5xIah!-oHi^28c5ERUk z`GGgNW;C|9&Sf4?T7`)pr!^)chEuBzzfkiPFLv`JAleYcwhuvPq5_*(MpK9XE2cA0 zWE9=yze@Z}VN+H4CWqcyvDs>u!rN7VDki`5*xDtWDsc>bffyeR+jthIwevmQtlZfb zPc-RYnYc-d9S&v&RZEHL2Tl@a6pUpjT0|Y8y%wQr;j2&28$qfgGfEtZ=d(+gi(e*d zFh&};48I=bJngi;Rm=Uag_T_(c6u+U7cs;Jig2-d1BFeDJuwe{wM+rY8%D z21+tK9YVPVv8_2w2?`6)5!gN<2{>|ynW(hV#Wk(ivQp6~|MB3TdB>mOY;2RW=i

F$8@agQ_ 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 LW6*qpZJGbs#GdmO literal 0 HcmV?d00001 diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/cute-cat-2.jpg b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/examples/images/cute-cat-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ddee543e71902193d70c0fb014a0f2e064db8d9c GIT binary patch literal 31867 zcmbTd1ymeO*Dl&P!JQ$vJHg!v?(QVGyF<|6!QI_mfpgEKG`~LI&_nvjm zy65hhTJ=oT-n(m8SI^qr{nVf3KbruWjD)lV00993NP$1VpDl7DaSux~0FaiZ1K#ii78YJ+4iaV_UUm*%RyMFUMDD+i^LGq?1w1N< ze|i1u3gW+ENbrcD{;Gi6q5eHOSnyBS|Aw*ujsNOFK>o`QELb1%-&mFGuY)2@eAk6^rmaF%jW=0s;~WCTbEg z266%d8ZKG}W)^mKc4BHC0d7`)CN_4~zfK_Dy?cj*hy+4L2CsiZX66=_R?aT2ZtfnQUSETPLqfyCBjOVhlafSXUtQna z-rYa^eth~H*WWn*Oa2wu|0^zZa9ohk&`{8Df8&CHbO#qGbZ8h-7FY}sWjI4eOfuF0 zcr4Mlyt2sjk%Ta;ISL;EMP|8Ic>{{M>Xe+KrSxK;rqCe5y_&!?|z|`3Vj}I__c4F)2LHCeb=M1F+#ZOqDZe9Wa^%Kv@A67j9^{c22V%uPfWGL{ zw$ON05B|^`6gxy4{K0A>fd;=$KZd6rg?`NZLEd%^;_~X+I2<(;am*i}+Mf|Bb1s-g zN-KQQYi`DWP|;=@s%+Cy`9g)utxRcG72=pqn2uvY27Z7PrFf=A)m;gytT=@OU#fLT z^-LHgKh{|!7pa@p5{5UxzeEKb7_9|lRsG;u}(O80ksgn9E`v>t^)fxW`b7pOMcIL*d%75|Y#bry@s>W-0sX2N&en zLOM)1oVkl8QrVnNEOUfilh!4*ONF{7_?PZw_n-@eZWZM&DbRci-8IQvVNAm%W~qo8{)Wk~N-n26Sea1Sf-Jul)E z>W0*I(*>1r_$W_(~0&=k3&s1;`yWh)9iuRo_S$U^^ZLFduy%h`?+F!GboXYXo)Y(p5WZviOn8;-t9}4n?^L4!K4M4&aN# zGM09CXL;`ZmK2GTq;j^UY3R6Uk=oZKj&WE6tQH+KIG+%yIV=o$*5 zM$C=1VHsQ?+Cc%n2Gn&`TsRBLaH>xTA*uMVGp}Ln5u=%iBu@@_kiS^85ysfIbZT9G znU>!BBw%T@u=A0LQWf-ktVnxtPT#+?*eH-ekt~Mqsxe$4>sT7_1J4A>iP`&Ub{`y~ z=eEA-j{UjhBo&XlPA;D9p?X;}U@`-lN$?d_r#BVZgM9 z-^52jKthNv&mHndwz{-MtUvZs&EwH;4J&c2o8<#<-KaitqQ*rJx2=*uagrbV2s}F= zp|P4Ry}?E(5y5xR%)>*Ee*m5;A1d+sS=b}Nn{x?+AO}B|c)|SdUin_h`}H^v=cAkz zz($PnO9knUwWo<$&vQNMWSbO|#>>!#e+mB%0lKzVQNhPT7;>wtN0--kWnwJR$iwv6 zpWaPv3l+IAGb_@DFt177Z~g(IoUe?1%HFV2ET0IRUrtJ987W#!BB`{MNS|{40O}af z)^a#f^Cot_%#x0g#5YHJ=effvVKYrwHG+MMHNT@(OQ_Bz-o6TW5bx;KwOiKy<`a!t zzMc95ln1p%H8eFORqw?BK)G9_%XVW|L;Myb@ec(x<7t$n@k3TYD7dwl4xgt?-<;Iy z(aBwLetgz}FvS{YrNKx6`W|G)b9*gGI}~Q#+7tb~tfJ%$jH0AUM_S@90SQW0Yz(1a zxbc0j-jX8i?A#k#Z7>IY1cK?;-FSz850S!NwsJ2MwjC1(gnV0~AaW-d{c)N!{0l+_wRU)IbK)^y?E z@SrX$B0Nj07a}PFrp?Lx`BP*r=Xtxrs?R^D2>s+lvf?&Awr-2YmxV^}vnefjE@gSC zAe%JCsc^^0DjMA5IhHh_XH&f*UP)_ajtj-(hd9$)z_eNABg7s!MJkzSh+2AUsivph znln$Vt4GY)j%vyozS7&g(w|>Z*Qz^T6 zdLhUB_IWdm9PY3W(`y1As%WKVJW{*`tqMM9iU*U%S5LBUG* zvqnp+RKW_VDjEfHU+U|R%(q5i+^D1?CtT2I<^|DXKZBF`XD79Q3`h(ie$!((SY^?GGmIy1OK+tLY7mF+woTvo5C zH{hmwpc|(0a@)88fkLVVB8al~f}8LpOBKHrb(`CoLhxF4EQLbe6{SNTPn$;D9+$^;ny8Z(Qg;iTiE3=#8)wNvRR?!FBD(bk9$;xli^XSh$Z z5z*p&ieu@(&fPF0W240#jTS?>+i-#Z=H1i#-412*JwBOScKfM$jf+U-rGpP-UJfXJ zQ;YTFE$?eW0VBDlN7d{?w@S0Nbdg*B*By*&Mp0d{cWo>3ZdYgQm6na0Ly&1Gx)Vf*VgxXRX?->}jAZ0g> zsw1H>dDJ2>U=$~xNR1jt7kLv{l3Sr9Ol=4;&gKbXO@`rg@rU4hNkq%xf4!esgeBBN?)U z^GnX#RI}UE?#1se*fS@}*0i==c`s3d0DXEhllb`n+hIN&{qP>`*zNkA2nxzZ`-sBn<_{6@BQLeq>6hm*E;z>vI}Go+46>GT4kAvz zFczJ4#W`Qw9UO|3+UiwUIR7B1)m$>vfU|B*A+Iz213;*L5r1d8ZLtQ}1`AhTC|vHk zt)|OuI-U4)Z%GK%+*Gq|FO>2|HI5sn!9%~ou-`#8htA4|Em9B+uTT?q3MF~L6goGT;K&QUSJ{R1kxQC>6({o;%K*0(AR zPQEQUm)<&#-KVB+Oi4VyxUhvh%wdZX!y8qR0!*Ox&b?_p*J4?H#QlK^?|`l@x~aECxpJe2OY!3SNy zooFXH-Di%pk9~>y3Bmsc+s4K^gvECm5kzmEhd1Ckzq(7~VFdDXZ?sdh@{MOk zdmM;mRcBDP=w&^dfb;MDcXTmlGlg4nP()JJs zOFE*Y*aad}7HljOQ9BBSSJI#0*NZ87Jo5W9`-#Xr5YyJtpE!&+bdJiRKM%5sV9zhF z7focJV*GxvU+nnx>(?<}3KtVxo{g_-W68!ZtzY(@ppOdpmgSAztKVdUtiJK@kPFcT z|4hHINn}85lmeZz=uKuhV{*r`4x{pgax6-y7r=O->&`6?ddEzVp2$jBi$Y&06wiJY z##^5ov?#*z=S&B9N}yIF03~D|3EJGb_G#cG*4Kc3>c!R&dDjNdt(FitIJqzg)w>8| z%*)20kguBOvY$+N&yReXj$dEYau%@`xba{m7U@0z)Y%g9J94P!xv$D}eN=6m(`e)L zM!V7Z6dM>#o9)Xu;)w|Wg`zm}}BHfM=W@^FKsXbZu{2?0%{D$@IU=wOL zc|&6(VNc-0(*BW7{3j9nz^h#Kw?o+4GjfD(j8TZ)xQKSfN`<1JaRuKa0u@uTdCfMt z`Y$tkF?`}yYgEalCN1@mlFfYZcpMXJ;smPa%wh9>xXQnmWQ(+#ikwrrX8|QYxxiu+qj-+mgF&( zrv!a0&EweedPo$J-rMfdpzJM*CdmxTAE=#;@#M~&!~T!GnVCxkmd=bp`6LRz`j>Kk z=jhGnMKPTfVCb-n5uHq!FMGTVE54s%D-U?Mw2&WD`}9G=J1B*w5@Kj#xY}FglIfcd z-%knyxv3G_Zt5dF>EB(0&&ZTGk95@&;h3+d!NqGGyu4vkXgoOODe?CUrq z>aFR+??$sa`;U4E1?#kA;BQ&;@b^bpYeqo~uRBNFawix8yy|?q%GbkcP|-h+FJum* z!v+;jRpr^uBJw|Cbso{=A|xt{lVGW~t6Dk^05l~CpJ6lEgi(9w9QFJnW*-gRB141) ztZRG9Q|=x0g~uoie;=jGp>N_kN!_siP>WvSFqnY)RmM11O1z^#*|?P|H)LrMF5o}l zd~@iiUBI`FB4EvzPVO}7ZLy=l6!)sjVdq#lg`)k9<*2#Hb3NN7rk-(}tp~44o=g6R z`Bc_-6a{&z*mJ$k+5i(u(ASfQsrcSaT2IP%7`KcAZk*}fhHm{jawfwP!d3Wwh`Rbx zl&uL9)X5YFIU>s{EvF7ocF7-#AP`6WI{Nl>ZW;L`aGLTtrbtXh&qsY05W5ucZc<3+T51>fz^1@vLMatZRcj$9!{r6hY$nG}O6p=^?WA zsr7uDOfxYDDvMvE_b8gvJ<@+2uVS<>qp)%wL<=VEX0u*4SUg3ncXu6Ln>)p9ah%SD zh_1;R?@=V2y;{dz;V-|YdlY5aF(Jf~t7Z~=MaU>6&CI>`ozdFi$Np^R%H9%d1Zu-v zUur+P{*YKg5$R|ku=&$nLTh%>)q^4iiiz9a>#kGKqBxugc0IJ1ZV#7MFTGAln%snI zEITR9)gxa&_sh?E-i1L1O}HYB_>BoZt6cClqP zr>-1_h{c7W4{=|kL$NqBpgl;1$y@TM`0^PA3az=v>rQ<-{GI3~eM;4@mw-rRU2^6p z6=fM(|HQ-{`2j$qkSsYl7P%-t&;r1^D~3{36~;h_HiCRvAzv-TmQ=&2Y5=7|!g}Tf zOjsMp*3ndIxm6>oGv4`;7Z0!SnnHlrw!RjbAUz?b}Q{Ipux1CB0+)d$wpV7q;L!if5Md0A0kJjmXxZ-}{Nr5g$c`9|`BLg|fT{Q%stg;sz`HD+2TuzZHu+mWh=H z!>po3`wS^gza_1c!9+TK)W75Ju(tYAXvcjvz#x50Cqksi!R`>ryyqDGn-za+F<7!BT=$j!>d?6vpOLp1{hFMJ7x4nolie-uFjP zmdDyk|E$nSkJ*nqxJY2Tj%v8rgx8d3$E%s`QPK}XeSJ@Z;D;$494cnBq`1#d*LtY6 zuu*pvH5MbH&FkA#12U%*2$--!JS^6G9FUxCph>0)A_3o}s~?_kM>$|+`Zi`qq2t}) zb;+c2<7fK5Nxi+&Hi8KVN&zhqAbG)~s^po8fq^olVC@1FjZC`FD993JRg-4l1E>u=5ag8BBkmH5-aM%@4^>H^mL<>Xu zzoafU1Wv?c7fgbCPn^=}Mbw)GNmVU!v zwzm6e6q6c<<&`|bL1H`PC36W+RGd_uR$IWsk%NzG__gJIJC+Au4ADG%k}-vyvC0rJ z`Dz^N%PnDOkxmq>@XL{w;rk>*O%=wmn+OvY(;LlxzxMndXQB(44YD!2E%@V-ywVhr z?5zjB!LBN6A>`)S%Dxkoqk$}zLG?(R)Sq1PvLp)b!+zgDP)9mt17d{WMX5Ewh(5+M zYM=hGpop)L`MsM2UF2}d9W|~sbZ3}GWo1(r$pseaQ zQmyJK!TPQ`C@ZeX;HC>pHm@d9%HU*TDM1?oc$KJV$79wu!zd_x8pREzOld|p=$R-m z9{bHzQ>Bw<$!gSj>>0J&)n-;p`P$kqgUH#hCn%dN@{c3;WgoED6I$ZwQnHn7zht@% zh~)mR{N(_CarY`u8famHpA;ehM^?RZd@0PuGgKd)lFmgz@ zu6%BINP})fd7%*iL5F^%LWCJ%M4ywkhE3USyVH_KMzQNEKx1k+xlVM8oKoOR=W4U) z#kT2Eq1;;jv3~hThNpC)rA)o0n2gp5M%b#qIFEfA2{tQEL`O~)!iknmIzk5U6~`K% zNe6~_hYYUzh{NMC zBxi7|56#b$;fZiV-IUpCh%lMBk^kV~D1KOstHxPK4OnQOgUsrH)uSKAu28{u8y07k zk}Q!KvK7W%FD*OMd9s@F+Vshb2BnB6cMovFx%%pKD-EzyU%u6B+|i?O#l zxb1`l#me-<3TRJ}Xet}pLt9=G_CJ(97xTH=ZlEto<#kmGn&2^t-*275MkRnF;=V1 zdA07Izh!KJCNAKdP1o@`7Fn(m>)I;z8~tn{YQSu{XOE(eD(_AeGqu@Bv8q_ek&I;? z$^>5Ve#B=+QmpSvP>#|Oj)l1h-LqfiCh)o^NGOI067)XA@QXIN{rJeXEy@d};!!hj z|KwtCSN$!+ z!d=#OGsSv)Q95)IY>L6GI|AkA!f<2(Xcs+0R#kM5@n#wPX|}l!W%+v5;-t$`%XxiB z^INzcE<5w8+EyOM`~=g|c>s);hR@k_b8H9+)NJvyRx`C{Z^YhfT2Kotg3GAXTwZbXk^e>=BO~eKB(i7B1xo z`6%+?4$blr*K+yR_Bg#;6(|zuYagrg0!)FmWWI2o0Tt%*7N$akjP(L1kbkJd=fPaF zRR!J4Qui%32pcsPxwYtrJZV%}Ns6^I;3~0aH(48>`6AI_| zvD@-z4A4mEo+$l1d_X&AvBN86{D3pNg+x<$(B*Yex%0lUJULvAr`_DnNJ9N*JwMdRl2{;%s+FX739KU*}?o2U`$FJNim$UuK4cw z-Bw9AcSuC*o`^VN+RiZfB0<-!1p`Kj`;Z3KqBmGVdUu|Sivpt+?1U97sM)KpGnIQi z>JBS4?z63(mACPYQA3r2Z(r*IY{S=YB^6 zyN47%t2ocK%!u1pqaLOop9Kx|3M{vIv{*l<%M~hr)$C`fAV}z`ZWo=4zog%x{$U;e zP4cIE^KWN^@U27SHkzXd3nv{y!p_)`b(%9N4-Qvpi$4HD{tF9sJ}UwYm8GTscNO;{ zb|BF#F`M=~#NcuB6&6DP3Ip6fdiIU7F7c^9s2dErJPBa-)0Q0h9m?-}| z>|T!uS_Y=EGBWV}QPPI-UbW^Rz!5E}H{FB%edxwe8x;>bk8nEphh18=w`^CGZSO%6 zXh2VTU=%Yuq@m^1#m`C`mt?=-S#d0KNzj$@J1DM}9^+!5R>X1d;@D$=FYueWJBY!Z zNL*>b*4Scf6Un{!u-V?#hC;~Y8dmX%URGRQQ! z&=a8C2pXtAE5M&^$XaPJu}?}WiW1Ut;$Q{~n0=CKV{GdT%?tpxb}mjTlAdh4u5ef7-Jb*7@B}_B^Wa}fd>f2%YWOA{)JEfV)K9SUrrE!<)o$} z29E778HmLEzhR^QhK((pY{5G0U>yn*TRX6SNUeWilfU@OUuxQ#*B4 za7_U&1b`$U4afsZ0103OxB`}d4VZYu2(InGEzW=nxL@>tWB>jidnK@y5!lKSFa}$E z1ndD@!0;b?;O{vA>wx7ybL(uz#`;ea1d=EK!2J62=Y|ph;1U4fHTKV+=e$3EUh~21 zqjdo2w)>C0eJ%iS-+|j>|Ij(dcQ7#Tu#gdvvHq{+Pw!vG69WVT6a<*;^Iwc70&qZZ z|6x1*osj=x27!4)@Bg2iq5t&$`8W3l4GIlxa8w3Y5gg^)bkRT)_n3-r4 zsmpC35Q74NE!wd@w=!RvcDMQwyf*>Zy!aE96)JcZ}qZG)Dm-;?Vp%|1q05EqmNW}%`h9L%~P)3HHiN^!+$@0G0-LpUh56ftNJ6zunMQe8d%{ zDZmwsGs9qMS6Ai7r`^D5cU`qU<qB)m+Gc#%$ZjwZ=Lc`n#3V}}|G!|E@ zUg93Ce|Zv^(mCEItiz5j>#IUmKG(FesH@^+C#RpoC-Ry*a45+AWzJYMky4TH)1i(= zRHIhuGm?=Wm7c*WwlU`tucxti7vC)RZRi~Lj|9Y}6tRPLBCq^8`Z-=ZuXX1o&Wllu zi${CoC>!Q6gKr9<8)J?~yCTyVkd@4RSTq$ef|qCW9X&M z@1@ZVZ55CRw1$a`i_us3J-tT7y*sD#>D^yfKXVv|I5FYrqnG1GR9AU(yLhtz zdxa>R9(hb`pf}gWn9U(7zR-2hsh$xz#e1LS9dgglYf+z@Zf&jTo?^R{J{<@kbVM>A zsd8-V$XNjU5oBbUMei zy5*S2S+kTsw2v+EUb()LVjj(mWLD`5(&U}&xMC_ukx}p3n>Dj3D@d>mY))vSCA zJnG;)zC*Dll&fK?y{(bS7g$XHAZ>8Lv{S=D3JuE7p@fAH9UM3NfSxf?S$QFQaKva_ zB&6VEb#5h>o;jK}gP}3u_AQE9&N*A4mfk&T_aXf)t(7y`zSF=5RSuezG(^p$wwp$) z7W7!dX>2)oOW?-ED$uebZ|QM|wq-wAZlHU#Gwtbm+TrDrBbf~CoGlpXM>Jt&#&;bz z%j3KvK)~_Jj1B>dryU;*3t|p$R>yB z_UYt1_FVFVflZ2FAQFtPFpEeCjkfp)(2yPhlm3H%L;`g^ ztj0!;Lf-DL=4O1(`d_H#a8KD@HHu6VHv;+_2AZ9jbbDW!FkD*C#_X5kKThYOnfeMd z_aSN3*KT&SZ53CNoo1w;&eKBPzPXD~MmOkBwR#F*rJwb@CAVLMxCnM}x|d9eamZ#3 zG`aioR(H$-y@mc?W5NF~3|g4PVOQc08#T8krJMKQXiD^X&`YN#o;>pG*6&8gfU;oYjT?B;5cS6aa~&bvf%)Y0o(2C8*mu zSZMNAl-xkA&0#Fi!r3|Ndb+T)5%udnThU$Z)|Xsyu0Mmq>VwQgegr%OEC?QrCNK~s zQHor8-1C;9&}<_4*9Zp>E)=hV>!jnwzCp~V&)2V!CHhlWuYw!rFEBBRP|y8Y7+>m;^$lHKUNtlGHMdNKsC>t6WP}#{aE^vUEOp02YBbX zu`jczS4uBiZs-pI3t&5?<|2m|1%Chy)_VR5G`pQKbx8gg5k>D&Q+ayKa0E5=1ke8# zJLqM<@M2r@iTr7FP$NU44+$LgsAn#X5_EXAW0d2#i&WdJnf72fli{|Blr}}+Y!5H< zg>w!2*_EH;q6XP&PdPXTLxN$S4JJX-tI|X|n9DMEX^VBuk|3n!yrwFOBgvGdUI-qS zNS=t7o%eRM_%72sQws}Da7NRL$YNo6K#{jwprf2**uuJRT&ea($Nm|UO|pWtn}8g< zgV%VzSp$hzznTsy2?hW_YcUVdX8y1bcRYcic>>i1aW^KfFPQ7Y@yzKhQO45r`CNdvFR+cl!d6O|^@uSS_dg*L)%<|Yz zzVza9M2)32*U#>)`a8GICh!HgE;f(lSx4#*&l`4QAqXS+x{p8F$BilGF4{O%tw$-! zj9V7Br*MYs>qjed6tvc)WbAl_XYes92V|kQCLOFYEN=Had`*!jGJ@+aYoGDrG2=PU;9IfACv>b^B-80u zGXzMc7_Ki;BYeyV^(S^*N1v?f7q!LXzOOrNgj^Za*SPl|xL)vB?SHQ=Wju2^+nAbY z@+LNmr<7t*O$I;WzpagQWK8*j*~X~p>3yz0C!RcauBb5@vMsT{Jg}8z_;R1lW$au- z(cLi~3+PgRA0~93ySEH_WRji;mUbXlP8iKN-AJfkjn^<``V67C{r>b3X^7UAzdq@! z;LwLKzVJcC(W1a`^`_546A3F3e*lyD-2?ljS}eEw>|42|FOE96Ld2~?Pe1zi0&`7- z3}*Q1&&3SmM*8hdpx+OE2{Ug$E@?(8AklH4sb-HeaXfVp!?phAr_J)wfkm$3Tb8tS zth|8{Pk!^!=vlZ|@x+Sd`yXPgYC=ahb{`Opq2YR6PUL~3AMvT;uTt^eqLfrp#?GBc z(T`HyV;``{lbWWeOG!N}NBE@3?SfOYvT3ujn|8x;k7>zHJSld|g>HAo!bZpu#XhJ< zF#akClgsE6y*Ju2pi0Do8{wMZT43<`npDMaXf0$RRj-=c&Je+eArnR|LNJr$HD00l z-Zk~(6y>Mbe!_$?8#3;nl}T;q{Tp<5cq4&%Uf!C19nwFqrkX6h(#JdNurrM2be%l@eCcC_8HYRB0bU)+SV%6&)td6jyKD9UKvbH@ZqRLf3 z&%FE_))N(+DV7*R;_s)@sra~5*miHO#o?7Or-j`igUP{d=gc@P&2Zyk2E;#rn5<1& zm23mXn%L{5U-;hl^WU=`bxTvk9P1U@F>vujHQ3U}wjLTG$LhZEx$+A--^eSsbE(5+ z*&Iu4q<;)iYq$RtBlzk^=-IX#8JhIYfGl}<1pRCVWwmJp##e*2r8lfv+Y%M&xgsNf z#~fwCOwIw@^9CC}r*B~t0Visw%fD(hFR?hQnXV33u30{Ufqn8+$Pl&3sWnk6!#923 zs(26AA-*)a#d6q#9eMTA_;Co|wV-fub8LZ^tAj`A-oy&2iS~2LY69WlLteDbr4;&r zJHb7_EH-nVO4k74roS&6L$?gXR$1h3%-vnavqx<3$pp)QQDgP8kdwqI2|-p@ts1Lq zCiJUg3XSzjG9JHt5WzaAhmNbb;VftbYApgMv!3#ZMmfZCGpT$!_2$eFeKpZ!FsL9R zGfy-3LMwHZU2x)&Yg?=_xnJIc)q}in%W%u8WR2dtV7ee9Y%CsD&AA%&bUq!g106MpC1U0hUSWB!+1 zmf1yn6p!I^tj-JTs zTcZdw?hB=wlp5pinO+!w_&r_#zEpNuV7f!1&m0*M%g;@;WfCtvlZbP>q{(OksY!Wf zFI-dwky}B|H7$wx5CJRtrO|QWju3%qC39YDL6e_NM3c6gWc&~COK_rikZ+8`e8(>6 z3QGh{R-pqE*}^Ln?6UhK-j^6Fo~)$zXEvKdAyr!@afSJpxMe5$9Z57)w4X!s3BFMD z^>T;E*>L7h8JYDZYT9sn5W$(g`;nEJn9FdDq%*b>P1da)-Cgorqk*?Gu_Hr^x}u&@ z=r>O&#sBe!#ku}^9yI!c^JkjlvUxcv?6*~_RHLM}&j)D{i0T<=@^O6D%2+}CoX(;jpbgElq#n4a8Ocqi*B^gGK$0>-UF%OA>0$T43}{C zRC|OZQl<>+)_C{*qM|QCyLh$jK*gd`-pZG$R)D@nsS`%%t((41`8Fk#> z8@hs8Kk<&;Qy0bn#5i0NnSAwAuW)Ss4kQG<&ASCLhXE@$`tjuMzTT8xh+srv7CN48 ze4NE`j*awNdNeYlqg+u`q4tv<4}t8x8A)iOQ(t$Ta$~8(f)_m>6OFO>mGK9^sZSYH z8m1@Fd#R_=$ebp3Kj)2t3UKh!=BP}zvpO4YAH`%;V+KNrwO77nY`8gQnVw5xaa8pUo0=Q3>QL(;I_p%`%Xhbtc6+T?6S-UNI=pic%~ccQSXMx{LsJu_>A~Zv;B5eL^7Yto@AO#19JS)CA82Uwqvcm+xR{;NcwV z^CNMa?Bijwe;+bjCz%+gJY`@;MB;Mcs9q(J*Ln;OgGlpr0-*puIAeg`7C(RfhJD@MHbcvp(}{hBU@Pn_$iME3w60l671{oCHQzp$|Rd=$9GNhI#&;TTo;{GvW{F_ zwI)1U5V9HAT1El+W|jEaaGhu z=GQ-F8~Q{%DktY-i~nN!`ifKRXcO1gMcyj;83q(e;*bdMa=t$~Fpzm)+vJasm@kaZ zLK-IS$SVKo7xVTCjc4ESx2CRRT9TE9Q z*5aNbW+C|8B}05gJpW??ygOv1iiKZYdfiTHlZUVV^0MQ=$n4&x;l;}Lq`o{2!*2?l z=2C;76GHw?bivOq|0cO$fq+CugTi1ICLx7pAyXn3VO9D3PkIa9T_^8 zSRajvfzlwU*%;*nfgP8Fl$^Fr9wL&*ml*h?_Pz`ohb)eK0YlMuGlbY8$(0lXuwUN{QH$p#9_12@^~PdHMDieUIaE zvcrWXJ#s{yTq1qo-yXs8m-}0}FFhQ@E{07R{6V~^fQ4$Txw5I$V!690)L!qhpt>$zD85}4^rpXLsSCl~` z=msBIB8}*VZ{*)AZVN?PH4w(Vrw9&t~hs5F!)mMs-cG=>%yFCHzCf0?sw&@Yy!<Fq6#Ifh{{c5h ztbpODPIxwgJyDf5DvlCU9>evpDVR;!6#cL+f-3z3Z|VGmP0VoWQHp3%lr~NM#%aA^ zeeiUCjQIWtX&YGvEvd{dcO8{MoXikLa8RW_^|uvHZ?aO~kfR*j;lk3{xEo&cL2r7N z!#bi-_UvzDNKEP zy32u@K%qzg<*vZUmOqvWnWaY1SH2~kb_hNbjnW?yY0iwiGDc}7Ka7~BjQ_T&f5gG1 zKdm-j)^pP~-uJFRjN6X*X}syJET*3HZL_nnF~)l}HQbGYamuKd_yc%R2!ii`!MmU# zVc}sQVg9)T{<{$ugA|HIM48MG4U^R|APyS5LPS;a>d1|HW-i&Buqedhuas1s^Xvb8 zLkuef`5+|pL{NI@a(L0^b1i(MOmi)^L8;Gsscfh4F~KHGtL_TG!PdUl`$n~XD~x&d zX~g*hMJ|qI6zoAhFOQ49hy$D{uXpr8Jb|e5g*?gHwpApT9>Ifx^Qp)L@-Pf4t(?no zFm>lA*3A2Cu?gR6z((2>~SLmIoCCLr9nc6-}@{@P`E zB@L(+$Yk-jx^MciB{gUUnsRV*KN3U*^d&XQffRt6ZSS(0bf6iRpc!z21eu>E-l*^qM`G;WH%3Z4@*DPwZSc;8==F$(-!9aYC~NAA%ozCjvCH20 zF5c&5*YbwVP#^8t08E{rhv~AVKGG^~C&aHI4O}s8`uLb_H$hJ%wVMk0`B1u2} zY7(@4fFAnTC<=}AJL%)1=Gj>tBdSNn==SEm`UsuQ%9U_vCT3ft4m@Y&I~cUJ$?&^C z)c))xKLzK^r1xK4{mphE=UP_a2C^wcCk$mv$b9!WHqe=@J8-B-9z}?!V1lM1YKp?1 zOIlkEH+rB_D8%F@D!)2eV3j$L<{-K&C%7SI_n2>;$yGAA_0`g~H(I5!`(S6$5q0kw zqAcg(IR2Iib;v@AsO(~vaB?xp+n6_#bSob4_i$R`LOn?5PBqfalQ(YXC7cU$i4_uG zm^eb5o^*uyWt&s)BOic*yTYyL)aPr*qY#E^_loUd9JZ-b&79)!nqzVs-^L!sU}DzGBRt-!(fgIUJ!(f7#?TXZtaO}Tb(qv z8{0OTWMWTjO>DHWZQHhOI}MvQNgMRb`+j@xXZ}6U-?@%s-D{oKx+l}sPboPZM}JsQ zO=2vl4I4~oX$0@$HV>?(Xaj*orwgP`L$Dt5`AKaHyaZ5>%d|6zrsLGB^%3ouq#Ps+ zJtBDPwXZh^5*YIrLuLV5eC_c$Kqcj}oNqSt1#?}V3^ZG*BMZgLJA*TdaDFS*xIL4( zmHhc=95}9i*U2`cHaE!$8bKR7Ps*M}n<|4$^*eHSl4(pF#`-zmdML;WuIPR{v06RJjCM$W6DnZ2B&IfOQ85J>uU{oa?zWp zY0;^F&ZaUx0{O+FgrJB2)Dbl1soc1!bYB>9^##eZT3_E!24Fd8!M)=i!#>kC^Q6Yd zEzh({9&`;59}H+oh`qKx5w%51m%=F!x#x6!?T zUxUF{A4Ll_+fU;dpQ42Q*Xn0RPycV=90=oTZq8Vz6cu^t)IEhDByr2Jo$Z_?dkwd% zyK4KFtFo6n2X%mI56MEr!J*k<#9>@B+Fc&kpTNK9w7eX*4Ym%`2g!o-!)wMn?s24E ztmtK)||I@s`8rJyrd9{FF}6u~oKrx)wDH0=PM zytY?Xyr}c%oNVdE^z{Uf?;sVIq=?fx$D7!dh|06rK`_2q?!oB>g|0S!$bJ=3e&((E z`>{k03OmqNE3=l$KK$ixv19!kRev_W>F3V9Laavcy_nZa1>I6+g?Ui>d0&k?hJ9)5 zMk0f>?Z#Dz``V6;T~dl>dFKJpV=hRis=KPw+s$|-1l(7=GC03`>&}rwROC*E3t8lG z7FGZ3x14;~7?v3)bk{HO@l}Pp(GtP-#v9rohV%FNT&gwJITV{RSX}*mPFlU)VY~MEMj|wCS{_@9#+<+K z%Z&XM7MQ8K)+mT*H$@SY?G}O+awx zHS_A^I~{k;_pc8MF51K{nON`8#WZ&!SY{M0pWc59pJ zXq}v4jv2JdQ$R{)NJ9ydCo&$A_%4*(d0*x6`2@6^5=p@|+D+7gd2PFV=MLsB-si~L z+F+6jG(Bchg(g)3Ai^qT5wwK{8O%mH-90rPD>;J<_9R})hx z8DlNcCQ(rGD6T0mD@&T&!&PXXQ_R7@efMl!&fTGd2qPjmQWwKjx)<89F=Y@ z;SX*);i_!(S_P7+*w^1K`0oR~zuyO2)D(Vh0<#RkYpl~#q}9d^_dG>nDhww&JT?Rk z$S@0q{{XOa4DLN*#dN-@OFI_6!*vfu^M7TV4U4Cbwo_18y)KKgAiU}f+AHf|0?szRK)kP!dBSeQ zYcH!$Q(rz$yIWWk8D9<40q(zog1@_8{{sM{7%tdE1C~6g-)kF$7b6mWWKcdHQaSDi zh47^q>$#Yknd07(b&?k>b~4gw`(AJ|#8(z*Yz5`AAabDTz5D|-p-%2sK9u#mmn@*M z{R14jVyqL(u>L7~;uNT(_Iw|9?R7ASGSMq)e|cVueBrOE<@wY5oc_3@e5ds^)IAo5 zqT_%e_4~_!d-yBa?99Lr^q0=J%$$S*v|n!n(AAFo0cZ-svIEIM?4Ig#-Eap^rD44p z8I!I2H}5YagU8ZAEneNe(id`FLa^qP_2h$JG-_g}@b?e7ZK6WI#>@w=w#NrsZUT>p zH~)(CP)ov=K4(&vmeOpHhFO|(3E4}aZE$SdV?%GWZFMW5@oYw(-)t|%Cf?F#O(Dw! zZl!O&tdrP+&y#zb1B}{*! zad`}Mf-XwzBySA1aBmf&31P4fJQku;k0mBwhy(Gw@@1)XM%^M&oZW>$e|e5w;~weD zF_S__kQtgt_A-wydy2g}*yN29{p#yy&VH(ST~f_3u|CbDxf-11JzNa%46oY~DuEoQ zP1yPuK74Im{V-;{`gw9j&{TNpJ;AOHBJ3@+g-;W&5A+=P-dcU5C|o_h(~-VBJ-sxm zGgE3IUp@VnJK(qt1HX%fb`#&cml7Hj{LI|u%-m{5W`p1S+_I9O&K6G{zd6yK%HG6{ zZrSd{Nt3L z98-66Ns5up1xV~Gbc+>Z$3vVe7CBint?P4$8qp>^whQk%h!Y)tUFU3*M9IAQ#y7z_ zJW5abqTvWb_kx)5NTyp0wYtrPXBDf9?`hzgG|EBAz@RSA>stB2!$V}(GI86x$34ay zR2d7!J!tb+CI6fO5xH9r;}Q_d*k_%-v6yvbsT(0(bYIh&@&ht+8(}vreMdlW#!&|9 zV#!UC(Ub}42}CVc+v0w&(+|!se5_OsJo8$4!*&SW%f_8F`ubho(6fjL)7C4M&&Ynq zxKV`Cd9rVrr^VcpWABMAu4X7_Y>=heV0+~4B)FvHZ3Be2L0D1ac!84B7W~C^Z&*A$ zs0UFrXG)ih{0u7_1w4>Y*&CdOXkvyJWXO6gEhE!2f{Vx2_#if;d z41!--ZeEf{d@0g-d!18$98&nz>Gz_F_DPpweCau@BFN6H8@UR^D7x^F8I}=Uc^CLC zN%0z+xO+8Wki6L4@AJqlBQ1Z|x$y2GD9R!*OXCOgA<0C{*&-T|NBE=f|!(8wd~CU$%lue4AL(hrGvn&rBv@a2bb#eYhx)@9MlC1zCyncpoM#5*V@E9K}A$29(etET3@>>f6Odi9T73Rk20tdE)^# zpL=Y9l>4*5is*-hbL`&g5v~MwTqg$#ER@T;C_833&dyz%x^$m3GC-MG|w`B&f=|VO)g-jdRTN z;KHRyWW8M1#waojW6qzZeUDI zDB&F(awD#b{{w8etQf;DHZ^wnEx>YhT_gDIO|xCs%9p$iW5bkJp43o#Q{b%)n{!`I z9+)zkj!(j^pTg888#_}iMO`fX@JCNsFyaa^{ZZN_xg_(Rs7?OOAjEgzn%vQ%Rh>AV zIUbh44iY5u#J2257sPW8=Lf`_f<){ZkBNFbS)@8*BhI>^1!|i3a{s2y{@O0B{lL)A zE1gRnVb6e>WKr?vvLInkOJo%4i|8tC+b0e0?8`tb&9=&xg6K}D5W51e)N6986F7mo zRQg1aS<7VU_LVNO;#EExcOhLep4ZW^@>acl$E*sssPM_ghXky?wZQ!ndmIsIz`7&rRYxp8S{QYi4y zD_TQQE0oN(7?HrH3jepYxMBL>3q97y2UK-DM|_#q|LmLTRuyGr zt4W0oiykc5(ewJvunxAdt#DhDeWIlV5}ZH9J)!@8#H?cehzLh%!U%h1u})h(wev1r z#aTqWaPwB!JSMY=qA|GRs)}je{xcw-&kcDqFHBUhzBL&WRN^;C6q%^}I^d%?hUr7b zpd)!sh7Pew*feA>YduKmk@A@{#%u|Jd-C0aIVKrQO$0EtMOHQR?0@&$A+LMNh}Iw% z0s9ah*Jv}t2H;kUHGZL@00&nunWbqnIzssM{KxfZ9~fFMTy3J+Y1IqsO5A|%K8Ed` zc-;x79hVt1*@no4+nPSeuX`_%dL!(mzM`mT@t-@7ZUb1i=D3%B4A811rRRMw^1 z{dF3Rc#0bN&Nm)NK2e0Y-;&2^Fj)R4)qS8izYrd_xNd(&uem%2$%sTDB~bjLv7{e1 zD@n9=w%i?AIxJ<(CJ%0BC+zHuy|WC$qOEFIT{g$=Hbu4xvmB+b1%3hcTX~S)zWmNO zGRW4j#J3bj6l4BHr7FN!;*YWD#S~>`h{GNTSf1DT0kaKlN+|73dB#)*-I1wH#xD+6 zk2zoH&-pv3yA~p&?<+XkuxzH=RX3a}f1)5jX+m2YagKZ`8JhzeQh=C%2thNVZJ(V+ z*BapV?1G&d^9rly0ZtZpRK+mgDIpHm5?|m@JDEs8jSu(3?FLtC2YH8}7ug0Lk{KbX z*YZMI2N;JB1%cD(HJj#|J);x(=f5^hajvkmW$%)Hv*6h2pte=ynDHMHM0qemjz|ML!FbMi0r-o@DazkiC}cDtWxd9cQqf&aRvxiBl|Ds(i(2o6 zii3C6AY!Si?U0Qsp(!s-UD1&ncd2{=B1*xEC3R;p?C@8YL-i}niAuNVZ~O~)->bT? z-Lo+;3Z|T{oh7VgX{CljDMl$6vT`^l2Wf5o5+~+fb)qWZ`lQT>J(@i=yo)!_mVgD~ zq+8UiZDTiq+XmeU1&xW2e7*q;t+243C(VEXTI#NJZ{K zYHzjVyqo0AcEW7#=a$E!Hjy(oE&b<&}_as;6{&DxMLhTM| zU@r}E6i$ORIsKu8-0s2eXp$V|%(mToqaXAqzD6iRg}~@YQ#XsFi5~1@tbggQZ-`{b zPrS|jy_YJ$ys2nYyM=5?;zK;h45RX^<$UX<$GnD@uZz9?CdG!OJOazq14AtxJFq zJctdIV0&R6kow{=IIf{*Bk=km@k9XGTHR2TTndh7zSI?+)ySq$@nw3%RMMj=hN&s zNw9l+Oq{0#`o$m9;MT0WLI@V$W71d)!-$XcSxg~Gs+E#QDY1?)W zT{Dp8a`i|I51w6^dhJ{gcP4Zk@aex&Sh2MPAZL7TTTWl8JRAhWh5p&hG^e1y1; zLb^os0juAqzDBwpw#Vhzm9Hkek5ZWk(@!*$wN3F8(%e&QE$62e4g#?HB{yLR>ZQ>e z2=YC&HMXkT%koi$j#LP+bmEb(UQkf z8)&OWSI!JW(GE{2aI`zTlLWphIS%>kiG?j={5_zl0j`2TLA^RfQc<>>O$XOd=;SC8 zhPAoW$gM+?#hnR7d7*V_y4^sk1p~=MCOt(aI46HS^y{%@j-V8kHP_T!5F1qV13cxX zns)fzsV?f`+eSq0V%V!$B!}&Em?tU{8@wfpb?l&`U>SL5dkU(XD0a8>N|AZ|Jb8mi zGfm&FKApZD9E1fpUx}EM%euZjPQ8SKqD1#I$(#De1_R@+Uc)dsG4+qj5hF=O^$}v4 zVIFsq-#&pK$M63(p8j`n1ru5f79t9Oz`Re;GV{EBAc%k|u_$biC@eO9 zCf61J<2Q#yIY6=)7A5FCCrwvia-V#hrfRcuncp@Ul6#dIr zr!nUv$Lhx@Ow>j>3+(I?R|-S!eCmA|=GLiQw@)HX(ok1;0{}Vm)*lO|Fv`NS;#eQ{ z{FX)ZWS_>@yf#Nz9(B}KJ=4~BCg9=VY{*?uuzjlRg=|14phh5dgSjyYD%m}>a^Va% zT9RYSzInsG$0OVO@FN`#ZQU?$lr0N!2-rwJ+i|vU-1wB*60g3_mzO51_x2C)q6duN zCU^1JtOX=*1wJhXUTm+`^-YPdr|f;Opj!uLRQ|x!E?v{#ZCkfa@95sc-4=2qOV|Fb zTW>WOGfePg>{S_;zPC^R0JnCdJzFvUKchp8_X6Agp62~I#*0aKK%i>da(aRy@v~uC zc(_0vzwZ49aLSY>%h&&;lsb21aNWAPgi>9=fGYp9`AFv_@D4nhQ~`(unkP}t?QOME z=K>us;4S zAHV-Kc0Sx4C@f4Wc1kueQ8m;5OYbpX6GMN7{!*ELtJ;mUUr&O~g(?o0mbTw$q^71S z7Tj~88Gt1pl*E=qZ<;Vg6ptJg0S$iwV##uW6@6(jBNe&9PLkL(vS!tFeB5Di*!yxq zW@ym95d9$tqN26hBv1bJ{Q2)~qhah{)F=fONJ-Z2#K3N_Ki7OKdqMp&<$j~$dZc3o zGuoaJ<1>RlHdkDX5fz3NAMl26@S8~f{t7<2dlF3qjCYY$BP)ndvDtupd|Xf{Q5=Sr zPcOug7?c>oE<|SfLOIeR9hPOL>B~hlf9~vvU65}@Z9!Z#uY30v#iMIY%Qa9nC~iF; zLcag5gxPAn-^>%*Ooe7`6gSj6tRmr#sGEh&HL**^gH*r|W5C3W0>K*CMOhD9U{8Qh z>5~z_$11kd;dGNAx^YvRY1{lVzFIopjo9m8SL_Tc6eLodLeG;_4gX|-SE$$vYp+lv z62ffzy*KXs2gX)^C|CdP00u}7^A|9_IgHNQ?3+2Jk1OJORx?+6Lu@B;w}>-?Ay$)e zjD*gG@sfs8%%Oz+$T^l#!{f4;$wH_SB2Oy?I#lh{vt)IMB)#(j2{OlKtcIx^t#z~3 zojXzkFPzMVQxAKjA^ifAYWNw#8zMiN@TrO;A~g|v&gUD<2$eg3!ugdE(dbe9;cYZB zaqh)ibQ@j5C$L+S5Jlg4C=i5RKY{}ci%(VZ$A~ z?z_8-$E74^7^cm<=KlYf*hrs*{iE zX-G%#cMV8cVI+`}hVn}_cKV$|Q=dJE1>twhaks7s8v9rjKrn4yHP6m2rdC{iyGO1Kwrg|Y3Q z;|TwXn=G?7W?`EifN%yHxKhS|=ZfYOfjfN&{murQE1m8pgi_9c9j z3Ty$SLS6v9;zz;Wme7O*gif-XW+G*yhM<~-ej2)MVL!kOi`b^ZV1pnEwD-4s8PuTMqvKE&l)? z-JTXymj;HAdZRInH)4Hx%h1-z%~%=u)LRjzKnJ0@@Z(WC|4_c;nKrM0VTUO~qNXf8 z#kl()WJf$dLZS;k3Utv6e7@>Z9V*d~6x-DS2r)y3RIoDy;^a(>_?K5^YK4N+Yx+n-1MbH%8e5Bdnl{p~! z_SmSCeAVOTN61r%(!Tr$0gF8sTDOSOopO1zDV;Nc;LLg#^e!4m)3UTX-HO(>4z0#8 zIvM|0;eAN1v&)0Mn&3ynCGzzqwD6uFg&il%i~HacqVBuCB3qva3^oO=U*pN!F~`l0 zLxA+2#ZtM;%e7TPl&+QPbs{X4&=qzejq7aVzl!#*CnJbSSF4_Lbe4OyS7kowV;JAMmKA)rQLUGn*9 zYtY`oEtr23VIsO3swy0Gr-Yz93f-c0_3{oKMI5IOIQI*-sT8}&^xY!cX9)`PS!q*H zdZa#7z*ONQBnzFXpL{wvX`Eupr5;%(+V_3j7{=jTOV_iA_$e|jh$8d@$z$D1ICyA) z9M-o}4m3FBkN7(8-RF-tUDlNG?W-$|Rv{yo>+$G_ zkM5riOyONa;nJ3`6ZK~2JS4$<=tt{24PJsgw@FeV&7g0cGl2>zF)`cKUA|DXSXss1Ns`A^D%`BAOE zaBz43e<2GdM;J6oUH>#4gV7Kt5HiuMx@nQlKB%}fy&w=Jm4?XIcZok$>93B}78!;z zdoradp~#t$x^0ZZKu*|51y|`(ZRQ1+ zbY)4Mfh{^~?g?XiO(rE0g7TfbgiXfhs4G&aKP-$3?B!%cF`03@BG?o`J}F>Hc7`T8 z$<$MTQEa((pi6n!fZvGMI3nj*R^1^RF1Rg5-+hxvB7!Qh@a}D^{0~dIcsNfp!C0!3 zlA@OC3$YNb)%>6m+%I@OuFCjzMc1+e7Io#Ljf9g&Q3+Wz6Q@A_m^4~@4VxFiWqBpN zPS!BB3J>M$Z@{P;|H#fl(sP!GtUueBUSf+exZJ*AH67P9^#(Xb$m%ZmH$5cYJwGHD zGCuk%GR0^C5N{@5vFepnd|uW$00{2W(`WqMYi=UwjZR>~7b{;};ijfh;X&(+qe3J6%PyJE_1c6nK^}2(}y(rG`NB5)O6~ znIfsK84~QaG)dT}lzs!aG4Z2bT8|<9NkT|}RXEikrLWNPebk^tMgr;#9n;D*$9lK& zx=g^ErNVHVq}1BEHa#_q&Ze_IQ%P@pfIzdpNW2cJj@l%jDxJ8zrm)AHNh(MD1e?UI z`!#8}&P+aEcrpx!a!?e{X7ETtGYtm{1wVWz=tr#$17BPQFV|RMHbPW9U>dS(cKdnT zfzZRKxbB&rRg`#C9%FLXZwjpFil_|birhFOjfOPO^fwI=Wx`GDvCSxl2336|$K1Rv zX;%1{@-sYRt}D8ljdWI9{OXCNYgkCGjyMzXDXE!HYtmYfvL z#+S8?XbD!WtfjDiUb%pXdX?l>~onyo~>ZK z+o4D`v+Q}-+xRR=5F+o5XYP&m?xTJ*owunZJe!-G-w(D~_ja8#_h#0Mo6-2Rizy?AiS&JrK|j4j zJrjjtqKa;@q)iD6RNbI0L(N+r6G9i>-fN4GOqqz+xrm;o|Jj@I^gVZ6IXh8x{?_RN zKj!q5!c2*_%A4q*_M47`z1$^iuS8H#j;2;OcM*JN`M{Solzejg`oGu(607#@JV7vh z8DZwA?3&Pj${ip~_$9iYdfl*|z|`DndJ9XPX4w@v4SD=VNc)LTd4&cEtaV0nsx8tO}!rpSODsVpn^Yi`-!hGHqy`mRl!y7fK!P1I2=Si zNDJk=$6AF>QOHIJBYoB$tutbDi#sA?20zZNlp`{wE}Km8H`h2kPd=l1z=c^k-G_JV@XLC zL*xw&j1Q4|CfWMtH}XC?t}CfjYZ|~WYN^_<3!5+|oIvk-Ufr`X z9^{&t*3l|IN4zw{l4zN&BuGqg|0Vw3{JO*VhmB#GfdNV>-K4grG=WyE7x738{+ho- zvDg5FiVzMfm@^_s7(exS?Ez(gXT3TPmqM`d44HZ>gC(ORpd+{k^ytW1v+|0487y5iL zYner-8)o2J@cs1!$2+z0^|@W|14$Uxr{1o7MLIQ(wEPFa$H5>sQ|N6TZ8;8&$EqgZ z{+lpRiOb8=y+$*Dl^te4F8^K#^^F;3m-4qQ1P^>nt3Q<4#Ai?elPGXp#G9Pd$Ma=V zIrWcZaS*u5S@ipD><+C6*u5o2H5#qGCTC@HWdaZSt(=D0RFtW38PcyIY8H_DEkGB> zOOIi*GIQ~jX5s=`3hFrjbD6&($w_aDKrJh)1f%{*_CB>2%k7{m6lF|lxzj>#R(NlL z`eX@1-m9!bS-*xBhDUCJ`N1)*7|iU7$FS$1f+*K3)RRHnNrgdqQP9^v>IyM_u3;`m zanszVNT1UvmId?8VIDOVG7{3#hXnRtS*W5s>9fl)0|^6IHgduO#wQCgF$xhbO`9Y2 zM!9tGNSnZE&%jtKL1$(9zbTjb<)1p8i$u)m1>?E??INc z#1TI3p^6MOAz|?>cHmE_#j)l!DUP*7-;yNs+^89oaBM3*b|=vly9TW?sT%tY#FT{? z`=Cx?4y(pfo-1lOM=85p+AA@jXP9IlCX<4C!dNpYV8l%dk@_@u@B~lQsBmf599k3w zkrf4Dr|}IUNyU~Qv29^zvmKHffL+R*c-NKK8WZsKH_@Tn?sCk?4Nb4IYM}f-fCfKS zV+4z(;!!X4Z5)NvS5RKzLcD4GlF`ULF$Z@i4-=Pp z$fD$j>C>z9TsGC8IjqQ-mS?HJ=*YxF%3IRRP|I8=bmAbkONNEPEss33Bz&V{=$RH{ zhDmgbQ5WaNYq2HmuBKLwK9fmaWiL^V675tyK#@w2Y&*PHnQ-$6?J%w-0x>8$wu1rFdh)|nw{`3bYmw8{F= z*9|g!roRXFePP0g_hi@9?FiR!j}`XpVO_!bigxAnomcsNyR?`~Xj7*I*788|i6nY` z>xb~Wm!O8${I4P8+}=;D7foG+26d9{LtWt#VyI0qN5lS~bwh+$0i+RJpD45&f0B9y zY$VCXnv9d5JCcNn>T1slC!@!P8Lf6#=L zu3Dr8707t$zjP?ps?+qJ#HI9S@vhvB*t|?Hc-2nWSL#Yp(7>Xao*JG#6PuyaG{GX2 zQ%%6Adb&g7VDt5!B5>3}rJ?px%PTR%yUI|zf~PpX5c-(J82JmW&hm$Lz@=90IFnvG zYx&8`OdjFw`%euOxZEBnw$F1*e`q#Sw-QYZ6i|;X;8ZrkHhf?Wd6-RhFv5F<EbpVIeGhZe{u^-5(o`8pfS_E*^j zxD{HHQP3S`43xT?C!&G%Aur}L%e-SvLI!){@jX#}QA`EdjEtoow7lOLMc}rvoX^$p zP&V2yT*aFhn33(g{-iKc0yl|X+}|nL!0<`ZdotV8P*Ktb2BH{>1RgteC^VA3NTObR z!X}rc$p#PTD9>544XT=) z)Cb7}QTmKlZ;6fvQfn#iQ{P_+@I~a>8|upD83SEW95HT4eIXnxm^y6~YJXh_nr58? zanwHHd{&RtHmx>hrfAEhodenNY;yRqV6A}sM0vd5eq(9Je%oA+owk!_9Lf`%V!%WV z(eR+zi<~TsLLE5DG0p(d!Qxt-$Eo5LqfljEx3y%C+a8>iHR33`S}Zr&8GY$9XQA!S z2kSj}qV?*ZgL^3{%|wQ!K5UXo;5#bRYiL36v(d0?tC}G(0xQ;!$AN)c=PGEfg&zc* z&G=Hm`|pa@Fq$lrFVmcrNwY3G6hx`jrVDsiIvnqnq8#MX^fPUAL;1rlRsR6OwNP%$ z$lY29Ax{Kfz;Js-<%{3K>Ix=)4$FNrp1kv^dSmY-4sF1^m-y=Vr4dtnfA~2>2YrFV zE{5X?jf2j_Ie{>ihlW2o1m(z_@=M43UuCmi$)G^=Z$s$`KG+Lnn*)puAHDIPKNWA1 z7|2qeam2Vkqo0)a;pYY6!%QPNh|lBo?MTK&g%Vv7;`q8UyQb^FWcI!bNsXCmVbtoX z-{D%m-=m}BRtp<1YUGDO=>S}^v_iLq#rD}G>6)a6F7;qs61zbCe0nxL63+5eW9a1? zidEP!f@j@4N~5fsjkRSH?4pd zooh!yc$hn6JNf%Yog)D}N|gRVKhu_k zpwSDqIb@Rg{gDXD~CS-P~>G_T9$6MR4cg@wf2@L>XV0?jBDjzT$BnXE+9F?nf~otR^2o2~1~VO?mED`&l)4y2ML7!bw`VyX%+S^LC| zH>PG(sq7v$K_I*4m3oa`4qVKd$)C@K8@5zs(Hxtu(<2EiWI)#7T^7La`19R;voH(?-rUsQaZ z>bIoMju&03jm1;l8msccYtkq93VpjNQeqf29SJzU89<2t;Mon=gcTBhasU3(Y6HLt zCgdL=)o;pRd9uz3#80W{_&xs_`8T_vemRe*m{>fvQ4o3pGdRL1$g5BM| ze1Z?CkQL1=j-IagxU62QgO*(7;Pq}w(hC=H`1va-lfN>Jl@#b*7kgRs{1-{W0y=;~ zb)C_rTf0&hSh&}rJs3SgqaEXr9u~YUD3cWdhfElCvCWaWRbO;?;&bb^w?pufC&(@7 zlc~U|Ugi3na#)nj{yKvCPTgTvx7@$1W6nHwsi#{pZbORo570$F5D5OR3quQqMr<(b z=z{jaH}dg2Vd#YO#H0fJ#B{3B#4brxdlodN)WjO2`7mWkcM>x6JBWG@3pms+ap2HS zu~$dGM({}3c2F&shPq{q=rn3ohXpb? zRkS(G7XF%;=utM&R_tWu>cPy zh$Sdk=i@dNlgsIZOZ_4a*7GoOdzh_q`F%PH?E(NHk|QW>KnA-6f85~eP#}G#X}se% z`G#ew^$pKFv!eyvnj<{-FT*~%Vk!lxSRNimb50cnn@EKo8m;0{(?WA4Z4wa}p?B@< zq1n%=>bWKF=!IC^Wc5x(^wvsbzUiB#(+!SG_9a$K?7#819jE(L`FH})IDTs1tNfAx zG4bfE1iCgvw$@aLy^fi2=ePwP+gHrxAMWF7Y2AS(VM=a@tJ@;S2bs>_ z+*94C*hM|rn8(_s>XxCg#}#5Cf7~6>JENlTywe+s5^B&we@exbtflxnluQqyYx)G}%*G%kfroinI4iYxaaNrSV zF|%DxKo|#2yphed;Izca+Rx3QXWDj(tp^*0ZWdoyl6-r&T^WzXco$sGKemr&ohgw` z*rvtEZ{rO-90o^rR$Zw7DItbsfOU&LJ+g7=QFbJDHEt)pN~9T~)5HjQw|rq%T5+jg z2_M9D{|9Is=%&}qzmjjK*miJ)CW5M^vErNPNQ~)CVia}tn8KTfBK&ejSFyPgl{_oy z&RBzQAA^F^YtbWtCiWO^@s47y5UfUegU0v0A$5q0dAcXkx|_*J{MxI$9D1=R#h8T} z*zSnJtb6@1tO^_V(H3MVd2XCeI}*4cs0%k-c-J}p08pUH66~(Erqf(tgv2Act2dlS zG4B>MF}%byV&I|fReVKugpTnr#Fb(`!=dxm!LFP&>um^qy>nZI*LV zqlrzTD@;wDGuYh->;RIy2^AFzV;>E={FX4w&g5Z-Vaj$K$?LW#Lqb!O z>i&v1QBr-11BptyvfkwfhElhWRaBu%iaP;}k!X!$YRlYzDwbGbPq;CR$H*Eq$>e~c{st(q^OF`&1YEH*XSfBGhcvxl3m~DTC!!2oQ?QaC~PmaMSi_x9S-6 z3GFA%ND(XLnbwWh3qM7^XDREJN*RC|UWM1+u-Mr(8PLhD(Dp+KM|V@`mVtGdq}FjB zS7(7jCa{kBE<}w@98`x`4GS6pHHP=A22gHV69T+KyZ3d@+GU+uTt4pqgo|-!q2w>* z8NCz$l&NMmPw$9+ZR2($oJt~9Sh?amWeioso8Z=^FEod;HSz_EqlgVRd`II&#)90k zA!tuQ_-3jjb8EV{D@M3nXkS5TpQ_I-OH@PeK>RR^I)Wsn>Oh$>DHCNsBLB%ulh)fq zW2BKgDcf&SAgxswphwALEW-|&l$=yVq?hJ6KjCKZG;?Elh7w*Q16nrQ%{h?+f6T1( zI5N+%=xK$l*)Zmpc6jG!gbYRb$M#_JsyPY>r)leOsf}AYr`q4>X`%G6>no5@>V~R? zWk}yAmsE3h9?=X~ZznzhNS!Atj37bK8di_PMKZi}3xp{Aiz(r*7WR~TIW&{+caG<2 z9Djh8p)abT(YNd1O7td-3JWK-XnNooPITlWP?pUWTP89B#JvJWtw*+FL+)uHEb+}2 z{F{d7@&aMCRw(fTjuxXA(Bd7Kqdi)Kw#Aww>S1XH0Fsil06YKy zumC;;3;+Q}YT)C;zp)+|e}sVgM-K_c%n*jNZEZ83M-#CutZ-BpN`TO(s z-)rU&{$5cC@L>NX5Rg#NFtBj&2#82vgC=wUTq!6>XebyMXlSst z54azI#(=>jWfp>cr)UUA=7_}-5dRIHT)3_WTWR`&g4M_=5CIYAJuV(TB^C8Y8d^5? z&m5dw+#+8@#l$5frIb}v)zmdKwTw+n&CD$SXUtV3` z+}_>)d3gMr*WWzprxX&MoSf^CcP@^5PYWcGiSSm6ItX8$9x|H^9xK!$<oT*#khJhf;h3M|Cg&Y}=lW4m>J`Lz)BMJv2{(+%s={wUI^ z?e*Y99@($$ai$(cEF7+h%eK43USO@{w~f!Qh3tI%@OT(L7_M(96EF~~Px(3h{zH(_ z^b8WO6MSV~pk|VI-T)Wn7J++Fd^E)_iGm@*qt)Cg#kLn1eAoin*0Y6JQp=~@DJ7gZ z=YZHEeAs+XB=NY$)8WI9V>yA*P>Nl`voer5GC6^u(U>_41~H#(Oa2L(hs4#ZLVo+a z=h7*5ygS$8Ow%#}@3RLbVvdz)xH61pEyE_Qw1=*_VCk5GtNbB$x=hvk((#O3t=cbL z1y{uw9Hq}?%dkae^-|H5agXx}4SpWJs(6xbK$ifmnoya>(qKk(C1z#X!Rs4vq}b^E z229G&M3KzZm(vOc%~X^o#eRQO2{0AtvuH5NM=V7+b$({N-f6K^$udLg+Ntn$3H-3$?BT79^%9c9uh80&O!u#&K5=WiB4a$aS zC%m-C3XWKpRcWPJAud`62NoLI`0tT-PHU$gw^;UqtgXf;dS*Y~*)W=;uZqyPaRM>4 ztUG*n#gbS9RrgL_Gp)h=N-Q=%99E+)v^!Vt$gR-h0@52rhs_N(R*DX3udB_xwUiO}kwk6(xPFnUB9hE>B zEZxW5h}ir`<4!4_+Vlj?Q59;7G9iP`<%^Z5r466JY$HXO^P8AjUPgrSo!L zK>;-qjXNeL&bdOH#6&3iJQ&j1`vx#57x;+VS2=e~s<}|&T0|{otj00yw>}iV0jeY; z{@!Ru$`&j-`W5UwJl$8jB2$|eekE@}bxD+9hzf~2*@$NXC(JP@noS;Vm6Cg`BdbN!Q-Q#Xd~9992-R4vWi+wcGMm{p_jj1*V!J>&Iuo$*tUpa;fP$X7}WA zBzNlvB`SDHXA<)4a(L>aMeM{HhUH)M(&6N!s&J}!Z@|g?uHWh545w#~Bs%8}^hMY5 zZ!L+C+4m5vbg)omJH-O@3-ask>{{Z=<2yR6qO$KZWN};_?X77v2apKpOGS%j8kP1QL4gl}x zH98;eMdgBLtqdxaj?o%n?I0E7*2X!T&ZtJr-k1aj@z!b{{fj3{@iUy|gsB_5BA;mV z1iMKwn*Nm&6`%L{9u?9H+sfE06}ekf?GT7L?wE8ttF~JEGlIrx)!gXTGhaVlx}C@( z!G3%C%xedKAUD3I{e#CTmET5a%A==HFCD*Malqa($% zcTbJmEpUI5e6a>%z_(!rxIMA#V78w@f2=-7z+FT-h8iyzKd9K+9aK&}OkY8Yw#GL5 z(R#GXi#?aAQ4oem)z#z`C`=i&5yqD#>Zc`blgSrp!FL7bpnD;*6Hf0Fu}`_a0XS?J z15t$e{QIbDxq0Po8)$9yv6S$%%psfVH84cUgkuJ)U09fKc$It7nNB;(sm8sZZpN!+ z0<_`ceik;wtWb;@l$7$(l`b$Cu1$1@PI#%adKpJz8rezq;2v7%4jpO5>Hd1qCnfGM z_J0x1)sprsM0uKjkl%ock5xQV)LI$A3*Kb2@x50N|1-aIm%A?ZfH%k|{sw3jMPq+D zOR?qJj?Z-Y3Ryzn`dksWaO%5?$8V3+8UTu)LaVVl?38w4+pNZFAlvfi9C3LA1hnje zOg^!xwK-<(Vdb7bg5%6^M7CvBF(AJIP&#b*gtMN~aXTnERZIB89XV=5BGOH}anIk8 zaCi@HvBo)6q;VO~AV|M}dZEe=Y2!PtDPr~wQ#I8=Zg7d(+G=ApMbS$pPso_k+@`z0 zyWF-wzZ~&B4Xx^i&t+d@(h)n9Z}47Ki)w!LGNxUM=CTdFCnwmC@}abCY^AnxyF~OhsT?yFMv`h8-rx z{Bz)Z1|JcnE%(hiINm!%xSM=R?;s4@S;z!e$r{uN(v$7oBcRQ?9z4)&fUtKOkr*N6 z9E57Q!sh0~vlgjs&X_m_di3ma<*mMz97eLoiP}kzVSZ7HOwm^zLh&dIw zQ@B%KzN*eFS*MH%O9*{+vHKMwCC3A0rJY0?t`!pbRZRQ*Y*%$I86P%O5Z4$vZHRnM zg?sH1=9=8x5{~QXN3Q-zedCMFBvZuHz-aeDO>4fwzB>G9^3u>kBdg88_TqiYi*t@z zEvof&VbBCj0p}X(9(mA7zY~6FG_P}R!_V`=i*goGOF19BYzb?Ru&~?Fb!wGBZFPq& z{}r^2nktvoS-xO~kB+2*+T>kyJ-#^40=cU51@r75^>{o!(1PIUy@`u_&=8S7#>c-N9ErHqL@uzv4Aa$=pSf2Nn5WBl^tB<`vtHuY$x zr6}0b160nTghn!N!GMV{HqFU67>6bxg$B7b4cZijt%^~JtU{Sm*KguNHML7O-(yN88pF%21wqexnl(eO> zH5=)J|7Iz1j-R5+sjW#;^}O4GOFG^V!J>NEiZ)-5MUTdndrUg+k-`zv_oh|e5~nsG zSPvLr@V+-`@=^=#?PLBX$*KcW7`|JbXl-t^zMvogBjn94wS>Xj1M* zR`+DTcSd)f%)7&)UbA(hKY9$@xaMu0T$gwld;|3I+v{UC9G&gz@wn@Z6LmJ*GFDE@ zpYyzKuuENWT7x0zJJG(+WLHXAR>?(9&n-(xLmJzOH)+SN2$4T1ByqO2SFv01dt*P-&MfKc4Qi%3J!*Ta(J zxHkZoID~0HUR@xB2}4c!*{_IK?4U9`F6&qLAV zJ(h5C^tNQisGOzo?|xg)5kC1X9sSr_a-x(T<&c9MT5~&Hq>!~H&S<%7UsYWp-W2R8 z>r&xV(hQA7%bwu@>-erq*aBx~iq8*toB;mJMN8=U@89@75{bxPPuD!zCr?jns9c=a zmr*Yn?uyFvs*00INkAodzM(wykUZvCc}WFID1RgZuq+ldo+ zaXr`|o!d_SCLu^7RuqnV&{`eos8fth@zBVV3wYG)D&1J#|9Mg%rgK@N>zb!e!ZHIA zAg`xlZa0ZOv?VY&Eo^aG6ryA;&S(|-nkLEo@Tl#1rbCQZObKn=-EHDsRIgk0@11Fk06Q@ruU{j7RO`^I&%zkVO??A~5BLNoi;RDn!7qSs8suwP z*Taw7MRXYgWQq1E?!lbvSvz>!O@8%bQxKfc*Z|bgUKFhm`bP7`fNDkvJt6!0~ zqyDYru zUM?B?-)LGhEhJVf39cjve`p0BZ>&?AM2kUm^E7Ce(=f9WV@bV|t8#}rJ$U69rggevWX&87n+6AsYN1Dy1=;cXzANN_prcnT z8mL&M;5r$d;BF-*K>+dBg;+G>w`~nlZ`BM;r>8bRjSjM!$uU;zlo#QyXpx+Wb5ajt zJJai(@nHv@#_1V(C>wlvo`K4Kg%&~%3`>sV(%h@Uxnxz!3NAAOR2gJ}xzMw4?q12g zDAg1XqE~qM5SmQx&$Kab(z0=}^^bU%y@T}fJ4)dy3h;yyC7zK2;VR28OZgOp<$_U1 zGMFVcxj&Pn&_u1+P$b=ArFJ@9jS?--wFLcRw%dO*cQ6=w;r085`UK|N zs!aQ^4WceZM?6wAYLl>xCiPS?v!iRPSoY~t`5yMs3lTi3z z*BM+KNpUA6YgjLvOBdVyL70l1kBf%h+dSU3h|;!wQV23GJ!d)`%dlm%`GhlV-3MjW zk+E$|yRMK5%SzQMiUfX7RSFfyZtQzM zvkCnv(&`ZQsXYhxxw;bOhS`00Hx*M_K|X8yo)v-B&ZA=ab)sDreEU#WSvONwkvnfy zu7?3u-M&RHyD+1aIM5k^zc}>|ub<9`EgU7NmDhggmP$u0zv*$&Q+Be9%2$pnt_mZD zxK2O|FYCMR?kGPjA_BN}uBy$I>ci2eIQY{lV#>!NEY4#>?5DHp<9a;dy;ZH#`%1vb5H9w<<)e|5s;hqL`zE|>%L4G$4`~WH zYL1lfE%yU3l5eRBXlacVo0xEG^Ujol^@S87^1%}ZQGf8=SMmub_oRi6<$#-#$V$d- z>Y$8xs$chl0?~AN4b-Kd$gZoh9S{b+JQ%$Z#l=m@-T0Gu*x*u5KHJnwKoI)S#dI}) zNn(y}$ziF8^FzEL##?>Kph`~fp5(0IN?4(er;PE8N_hj+Cj=hnhpkzwc=F#FdeYH} zk_F!mFyCS~*wVMV29YE+7za#J6-j8ph%d3oaT&*6R9r4Kp5mgvClps!=CUkP&{{jN zp%N(_cchn^8DNn(L^#u~9dmncHYz}YUw$X_sRY7nhk6m4uAehJAmEQnwNyd}kLAx% zrI7i}=pnHW9lMvB99oHhrvJ00-Ecq_7s)}fb!tb)Sdlu>a#fiq3vHKDSFLepTBB@G zZo0K}Z`=p(G)4(%(jh$TXq3)L+7WbfPV$8&W3fns?z&ya1c78Xfv}|QsQb29`OH2q z9rS$zyaAR1JiJQpNu1ty*v)lfc0tb0xsH*0j0l+{>XE`;u#T?+Qq>C)t+>0thsmM+ zaniJKr#=lHX{nzNGTb(%cIQ(8jI_nwbdI#dBEGj0qXt<{M? zSwo(PUpqR8!UUq@4XDxrX@^Bu~c2Ol3g7N)qhI8MA1U1e>${y-7Om0CNtHj21lxEer}#vNLU|XsJR7(!N{9KNsYCU-g@L2TZV!Bje+SC z8TK*h9gN)dm1aJz3IR~ICsWOV!g1dZQ}QZ}Ikz(5SgCNS>=@sqOX@s!FEVzD6*L8u zPl*`310@&5aK_V?-EB8m)q%a8g#$qM9cOV8U?A0dIeA^wbF3Apz9=B&4)tDVdV7xE zM3PdC!a*v~dbs+lK$&H#{^6@k-N84dlE=kbD?76AIJ7-IKWDb$(^1Nqfk+R1t%K5A zj*_};@4G*hYGUK|b!U2X6~mu1KP{i@;9)l>c*hKcz%)gZ)1CLKEiO2W)UnX)ya6>jD`Ukz zeJT7w-=*)o$BmV6E}Zz@w=8@|>(zsgk`rMVi7=%gz?f;iw=AF@=d!GeFVB@<9fTKw##)2t$umzoT!hg1*S!~86 z&zO?Q)FHw-_dAW&6sL7bm3~EKS?6z>JkBA@xg7HJ*FTR*wktFMVRK1lXCFi~KFO3i z)1eNr>b%^87>i(RzhQj3PrKF$ZYgR-7C5n z-L~l8jb@d9UF<|Kuil}sgra#oZfkUtI(yDZO?0bRlUpW`t(I}S7_whFUXCu@=vgiy zK0Snm%B+M|W7T^WUK++p8c|u9Pu5E@%2n0jft2u ziWqr@iGI#^{Mhofx9kjMj!Z1VA%2~FwBY$ClMg)->i$3ve=i{n&V4QYs3~gz7aoM? z5)a}yx#q6OO`NAk1q%@N9$1+A%6ER1cDcLf>A$2$f83C{WSp(vVRG<>=$c ztMM~k_T0@=xbgLv_7*QfKI!Z=0o18yRT+Q(_Q#PW?qw^ag%#y1$=9P(pNb4mb`<>E zX;AYlS|`GQ_!U_r$mUC-Sv?MaAHXadYjp18o(#u~(AnO@jUQAb0o z226hx<$N^@rT=c}jVW*Jo_g8)FKTxft7YJ&Fb^&WIkY{c;yO0e8YmX2LMPbSKMMq@ ztmo_31n$^PMfw!u^(x4Y8;MAF+$RibcgM>mDZ=Lm&gc+qSJ7lR=7~pyrU{>E zqnway5>DB{MvuctF%bV&CQ*-I;;Q%E zszB!0-9&W(@nLOgQmTRtsqu{DX`aHrf^shXBxW}<;sAM>I)ggaU^7egvtx_p(?As& z<3#hMZMUVnjp);<7lYj6PZLp_G{xyyPKKu*XLHpQ_ z@V{rNr_5tsyu9a}lAV>1BB+LM_Lkcbzhia0ci8efs0@O-z)qz4hKyQQGNBHm;?wPM zAkgRY2GCY6vaB(=C;ceVj@_0m3 zKGU3D6*Ylg%xkP{i&-L)xV3R1nj5Vc?nd3hcYq~7j7Po>Sr@j;O*ci^z2i;CFS zS||8!=*I=ZU1hsX@SN>~?%-9K+?cJ7eb}?SyD`c8_*&srRmtJOvNr(nJVlyNQCj$L zJjQX{)8z51v#yxjLHq*+BeR<6g4xV1G2>E_1p4Lh@bB9yduJXt*VL7-beu*7-{2w- zYHZP2?_e9MdCeV3%;PF9g9%x@6Tjq8HRr6mi^&WE0Vm>g46?5DAKc)@uG9&SLT7*} zo-L6*gd6@JrPaRIdP$WziYviio3dT2c#det#x$wuvTkAg9_OVPqE;wQ-C5V^HyZVd_!)OPxsm0uheS zz6C!Ps#cGCH5#;0OiFUHD8Tpi=~z|%olDrZA7nnXw`Y`8G+R!2CV{x_Rp}c7=zYJ@ zuWnWF5}246fn)WTABw+DWYY^iDa`CPw0d0lDv!hu5zl$g+Em-o?_p|ph_Ox)n6K1W zw#S)jOW)hZUm`D!{`BEnT&bKi#E%1&S9>bsJx~y)%Tf)*?J#`5fW7^~_(C1+VQ;Rl z?-)Cfv0}2KU3r`@?f%NnrF_G#_rX;BA*nt`Zfm2(2DGqnbqeu~d_Q_XHALE!!bo>L z!Yp=#*El|7t|fT^8xD$HP8+^j^Sm-SK+Yr}M(Qb6QT9Eq6L`BqN>Q(fggljJ_f8RK zdouKuJnw>t-q$6H+p~>I`s0ySJn9;D2Ap&UDFiOOV$VolohxyvXk8HpV5f-Gm0oVV z^>-vaPx$VRg&wQwUW8O)tsPm;3_&1@x~GGLURP3|er?nl#keDNsyz|Q6L$_L(HkK1 zitVJUAlIb>6zcdh4?_|9b*q_ubI?D(gf_<*;M4=p^TrNjTR?YY*VYA$1qbEGZ(24= znWkZ!Q!WMH4e5F8WL>`S7dMeV@h8J4zX9GZ;zMmCH9sDnVa!E65x>lkg>R{K>s*t& z4WGnb(N-ojUeU)q7hyQ*-XtMp#?h%#dm-};FX%vZ=X#^o-(_( z;$T@L{X0jN$@htpx!OZ<{XD`*>hzs+uODWS>*V9!SqgQ$953UcJs=~3e2pY`vRo=F zhQ_p%%Z?f0UIXW8+7Nd!d#6z6GBVLl^PCf|cg?%7-hlA(2$p#q+fUHkcB!QSVU6uf zLp}=E&k@*;m2&JT6oy?B1LtG+OTJgJHU=+hwN)&yM04r_P8ueIFE;|ERTXsgHjUYe zzLvJ>RaDR~d&DfSRvLcYR_Pz>xKZpyG?(7_n0(Xi=+upPba_-`bC$*mlvq#ESR(8# zyxOU_!>$RXn44ZlHnWFGzu1NwO-+W z>i3WL(ai|G+!A#aT$Z^kH?O|r93d|Z#s`Iptd+fHpX5I24rIC#EX0hcoGX3*Ug10z zdj9E*hZ4SUdmr$K&TPF=@?%U!d5=?V<7d{A+Gra`WSlI%LA-OOZV)K3^{ZtM*n|5s z#|=Hc*WSi}QXvFQOph{5s1spziUg=#zy6DtA`-wj2cfBk@Hiz&@8oT4#i zxWGA#m=~y>Bj=s#JX29Q11%csCQhDZ9G`f~_cS&8DQ#<)UQ)l42~Dox0TEy!a>4>R z55vX0Otx4Fj$(|FMEUxgm22sMQChf%P&(6)FZ!?K`qoZ;S-`w;0gs8MSQk{(_=D=OQc4jotr}g~Iig`h^ z?{?z+tx{xUXbehx7T9^XDGr{Lyhtw1?S=o{6oZO{91z2^NLh~EvLIDMGr~&bqhUQkXZuoO`09GVJQSjn>eCO?sh$rWHQ8;f}zEQM>T!q4q^Z?B}^J zYp&4IZw-#}{JjEY&~?b~DTtW)!}r`S0wyR_8ngf^3n%vAucfN~pX^=6(WyW(-fj1D z2&W`d0yD*z7$%8cColJsWK7z64n*e3BXwnIW-$|Y%1j=ilUT2Uy)3iOBt(PXsu)Fs z1A#H!Fgt{Dugc8)mRLd#j(x#5VA<+aHh6c-F>%~vUGiW|;_$~uqIt!&bQ{@Xl)J|y zu5NFo-s8%u=YX=CuwTViYA+hJ6G7_;lZOL&vx17A<{+Yen^+8da zo@!rTfk?4f0{l8VV|T@OWW!YO)e0c&q<)YPTzD53?45-fCLVKxo-c_cmGuM6);z8h3FD+FY;$7Wwg{hYy1dbxriD`UkP%|CdOpGl# zk+ZHK-T-8y8qH%ml=;z7vZBtm-o)%mG1i+(MHbz#*{N7&vBRO$-qJ^m$H?({@pxKo zvA!(`U%$wbl)a6g8`Y~VlBuX@BrcPGl*y5+vP%f-3&bPG(q*psSX#NN~upA^R@2M6_Rr6IJQ3RBk&Mf8kzY*}w7kDt&3?;r+z^rVgn zYh$Zc!x`8+XM#TndX+4_M=4gqictwZ^m0J6uYyic{Te6IEHS|fy5UbIZzD-!sW0xQ z4vJx&w6_yq$UPLl4p;iwMQS*Rt-&eL;|cg?IY; zgJd-vk(*|%p$^8qc5p{;z;U^jUX?9l6$?3yI4BF_zHUlQF-kJyb0(APhhc**k7W(0 zpKrizxteZW96*BqqjJ#pPJ{=WrNYE7ccks;Q!iv`A)2yQm82J+)Z*`ErKq2`{Ypq# zmm7sfV@^(%Jx*MN)}r51b}vej3)h$lMvnb=N(pioZIv+UTTMAhZm~^O;)ki*-T-`E z|DeIIijEr7?`_SuKUPmi4xA>U^Bh3GwpAtCmWa@=3U^e*X}0m=cemk5n@>o@;yu0_ zmn=p9M1?4U66lAHBCXC~VQVGSB+X+T$rHsE)hgZ|3KmPDqP&}?22beAK}ZW8ngN2U)AyC$GvB-V#o;l`(C>h zykjZbtkR=L`L@d1+>)Lu_`oarBxvdlcr3M1{KEV(7!o8>!$tUGQmS#cGf2w z*B3`s=(2!Xm$OrDm7M_dr-?BG{#j7njDODYh`#5RHDBS$vy9K)1kk?U>;x!D4N=A!hUyqRLVCqdQuC^6dm_-ZE&1a|rN8WwGKfWM#EE>2)FGA}TJ# zOp41*g~9`F2nh2YZ}XrhRE4iw?I`XCxyWk?=DZa-IGx6rgb0kAeI}tIlbF!x@7NR2ixwbTW9h^9Kp0BJ@lcps!Q3nVdoMWx#XoE3v zqYFONO?kb@3Xbu1k9>B_+JuDrGfyQg$~BybtQmf!;Q7@tD5HI(LypDspqUTus*o9S z>1TEy>Js%#cE3@ao*0wQ<>TznT_*vE=knoLI)4r?@25E<)_CwN%_VrFD_;SLul~Ub z2x<-Ot4fatvHaCX=9cspf9}hfNq&A0pqAufg6#G@v3Anif>tK)$2$C&UB^l7kplWqspG&-Wot zxaPkSB}~5hOb4PJ(pr1=xnpqfAgrvzIxnskscrzuAYXQZ%vhd!A2cl}qp_NLaZn3z zJ6J?3d2M1&e84+P<;p|ghY7p;r0PgB3=<=-96QOTfsi93fIFz;rGiGq)W&%d^lO$4 z)a%BzCMJmWQ#dGu;5F%#F2LvjDImu=_C)M5zO5dO6EgjpAaTwW{B48`66!JXA}+!~ ziebUwobaK+4fuI`b0Q0)?r;)+vXGd-xrq@&v!wp1BiZ;G;%dk0>U%3T*(i1T)kkDb z^4XlA$2n@`HLcLjERF$M1FTOG#o>OkC~@6^izZ%HfS1SibwM6E7sCtjTQ_ zf(RTw#CAL?**r)?sxWe3^a$l-x0O_gL3R)ZgY4vltI0P`lObj zov@{Lh=TB-_)D;6wv|wk+(@!q4hyb}(-AilV>4;thp53@9fS;+n^+JpTkj9GZ?GUp z;#vV+^_z>FsLbpTsZqAJt4aaeoFfsd&9|l?JcYCA31-*ti^A=LyG$ zD8_L(?Wuqh%FK}fr4r4nSeW*@uygmYH%ZPU>+=D zVp^Rfob-a)al0Pk0$iyw_fh&b8;B2NM3(Czb_rbh8~s6NyibqHU&2OTIE%|3>cvNV zEbu<^NTajBAIUQAMHul1rfEC-Y{M-ihstrk0UZkg@Fvh_6KHv5lvEPv*U1lZ+;d-$ zy)b5H;!SW#L$N@&CxS>Fdn5rt`%;05(=e3tF+=8n_uz+=II`rrzu>__z&&96Kzt$ti=30?rIaJ2;IxsuxDj`- zcUQPN%p*@Y4k_@q{I(5QD=8wPub?C^CMhEdX1{=$D|t4?w$9K@0AOq9;-n-lOadli zkihK%NB|6&!a@hY7#ce}2q`GY{D%(mKeu-af0-=+Fw5{a*8kl9zty0am^vGSX(S|I zD?wuiCou5`!T^jvySq62#c5!SWo%(+0>+hKOz#99AQ&(G)f@c_pZ>+>|KPuTA^^)t zMM(sl8x|OonEy9y^xv?tg_AAVh7D{(VPb0sjt{BvFKqG`fBlPXZCt@)`$zs}h-_-7 zstj%^zy|>!4oCvBfC4}Q7y+(;C13+4Eir&wJFvzXPy+W0|1bRU|M6Dzz)RfQ+tatVx0ie{ zb7>6#y6yhU-#!ljIB&uFxc|~ocd|Kc3|r|WO~50~og-?SZcD0Hyq?D+{Do~-c(gk}gK z=|)jEaPcYvEO{d!4H&Zf)_=mSuGyL4O-eXl625G6;x6FF880T&A7V z!kv=|+hl5W0jaIiYf!En23zLW3g#|1R;A*4Lf(vXyF{^s?OGqsL&uKOrh%L5B^5Wf z_KiRCg@L9hg2CV+!5(}|Ai)nS$S^HI+5OGvDmxzEIX$u3&`^|~QdGo^Iyb9KW) zlurFR?~^ZMgQ7sLX1oSbCye5B=j*xm>R{aQ-h#Q$RY~O<7A$G4AagY45js&AG<;1i z^U7>geRTIX3b^AvL z-#gP8yEv$SHPn>2j#q)8<3ic!S;HIAd12sZ9>mey)Z8ZHKhqjqe=r&3ss;h;!D`wz zl?T#)oKz(u$Cm=~2bwH~Y_m*cdJCYI2XlYr9>e>*rk1hcPEC<`@Y>4`DL8=FjrZ?2 z$3I|;7Fq;FyE)$R%T-gZkLqm;{w@&9FOYfsL9NE&ksiIEGiRAy*nx3S!)M2nKzmhi z)YT=@X249vWQ>jn3kjidrL)=}x_`Lq>z8-T`nc!LKH%-~^y9rg!z%BxAxIxnEB!;bAf1mq8Z4ZfL^f-{yib>jZlbz%k%yoqbZ zsF>e80Zp|BhmRFeEh!b_M|fw{g;#FQL|ybhzU}wKT^HqOZ)`QvW!fChsr5oOA z^%lAqZAxK`!ZP7QrG!`nk|WOcW?bDo-{&+x*t8HVwnTmMypgl3DfW153qFbc#b)mu z`UY@3cJW3#l_(btD&e0zv~wM(GbW-`7FejFAG_B3_)HI5J55=z$$Y?N!^mguzEGLR zo$&dSN^JK*W7b?@?IEw@Oh*?_=5ENz10}&uo#?t(JKU)5+G*jq})~ zH2jJdcd-6!$CdU;ZrYRu6D$>yZRYSRZ= zBw$DlQJ?ynk4Wnfm7zE&=7RZX+VS>)yEv>MlX>}I@%LoY?pZc-&QYH&N~tWSh3pWK zyq#RQ?bR))hWXz&CZ;#qqaMJ92;f=^aT%Q35!gB%Ph3+JaXO=eDCnJJ#Oc+W*>6J!Z+(~%q9;mo%u~D z>-mEHgIMtJX9J&8*6QxXVd132$8hv2h+Ji_4WV~V_96+cDB!(Odu!hn7m^yhu>{K= z9y^@A>+n>29e46|z5yk}}|nei4pNYhio8T zzH7PPA-^k|zHr4{tk*y^CL9!qZi_;qBVKZY>TF-Ax!~rWH6rKS2f4~neX)?kP1;!l zb4L8RCAaAN!2+V^h{}C-r2DLb%P3y;C!=J&FH&j`-x<9$c3O%DC4>;-8dV1zKf<@a z|0LRtO%1(SYsDJQ!7)^qInh?L%CM2B%DuJGoxsIxl}`IJ8ET~Kq83?nC?t=zi7l)s zippzpQU#5<02{rWPAhcbgf{%0=_(Z|LRqvbyVpce`uMVBwPWLCwX}_OwzncX>LygI zRm4`-EK*tA!%e?8NJJ* zCUkmdXxJjF@^->E+-0yTC`CLGwLlS*QK_G?)u&Dx!&x2Ef^u;jEC6z7uS^b{bW43_ zXA~NtLaH=oqyj^?wgn`e{m~J7EG<)?p6zUD))9xJ4Aq9T zFb5*VpX`hr)-=jz%qvWjRT;i;;Ab_*tR)LV6L63^;e5eJ6ik<#kx<)ZA4`_Ckd+X@ zhe{WfO5ymdT#aNyy2gZ7hzu-59N;BZr>4`eQ4o3q5dlYv)?rG>cerfq#q7JxJn6GPRbG@N zQFWSxo$|sjnB)y~Kr+Ok(Vm~9dKH97KB5%2Tg%IlGKyH>#$g0t`o}xti0i!zAytf& zBpCR1##|&@#fCeJ{!_&Uj>%Y&gbDv=9s?Ujaq(v|jG@(Q5ok%_2{wt_q>fN?`S#a^MS zOEqR(&@C(8!{DsbHZ&T658n%zTVBd{x++z8Nb(j)6=NWdhoBzs8-2<|?@zIesJ7d( zcA1cCWiMlpw2&6pwacNns1BJLovpvw&Y+m4ib&P6Saz+qSmuFm%G#4U_9OKvyfXep zzQ;w>uGtwXbZTN&q&HzV9=xk8#BipgEzY&ZsL_JL`E8_2a^!Rh8BdZ_XrF-g)kwI) z^G|)r-dq()6IN8Mx%r{#92V{qxtDeN&Ag z7>JbL&PiA6+^#pl#qfJWqumCFcS{*YF~&|YGO4;sW$$=)_c%&+eiI7DSfa{A%k{tH z%tz38Yy`ZN5Pw|%z`0!dU|U`jeBDalq^)`m3$7!$a=FLTEEef(Htow6qoegju{Byj z5gMHrjph`4>RA1RUU|^wmwt_S!$k;ReRp)ChDa9Hph@W!yyndon$0rnb9!LRX5f#p z>LZ3O#p4?catRF!lFVZIxIq6OS8o9nR}*cG;*j9(&fxA&aCi40gS$Jy-Q696yF(x_ zxDFQFA-KEc=ezISzv{hRT{GuYo#|?ub$Uy$%~EW*j~acWuQNXos7lsVoLYfwu1plQ z%Qbs^TCYGC``N)A!`+(waP*ly7rvezJZ~~vw>Hfx5DQfvqgFR2uA4U=fyLND^74~) zhqYGOykXemBL8v56RQ~*&IQbuh*-H%few|)LH9pb;wMs;b#fGk(vh=LEQ{eGP z;?${ta+*MxALom80Ikx%Z=c?2o}aY#}5H`k07R7;GcB8|(poTvy2CL_Iv0c~z_U3wqV zgFr>U@2B6uthKsMdB1v^R?>I7B|VzXB$W0tci~e!#WjoV;;ySW4d1zK{s42`l_ewS z=XwjDaSo7#d6XA7W^}DcFc>-w!g##$oe?pXe3_`2ai|V4hu7F7Yj>=Gm8LCu@hYL0 zKl=A7+KnTN*E6V3FPM?7aSVxWf%80bM%kG^ z(nrS(CDrT12QToBqzb(a47J{r`q+Wz)}-s{I_&fJAspXSBp^*WY&n}y#zEIaUTby_ zMz1jWLcslO>Rp!VZW?aGkh=p1h6Zh0=3#ZcS$1};2PPRQ)%T7X3%2{|a;3Z`Bncem zElZ$Zw;caDXSgHYkfk^KwN5uPPLx)?Pmqq)PGq!A>;){R^`Qx6Ty&qVlnG<_Vr)@o zx8N^KgY#v`qzG+8+uHQlT>Ycj@~9N42`L4}4kHPFE~c4g;=*Y86`AQMue%bY*6E&n zJxPN)(Uo^w{@K{y|7V8QNB6=u^Y#HQiJxGh*xo*JQ5E#(o$Z9@biTvx8yz z@)eLxg5L}74oWWha)O5zHy@-1)oX16Ro(0Itb{g9J>s<-)sv@8IBSWML#tP##qrmy zC){Y3b?E)uuU}yOv+O#JPB)xd72o)P-7FL&CrcEjTI9)e$6L#GUO!f7dw9quNRjQ_ z=bP6^WU>|-u9@J`y7$|Csq-5VhfT=B(3J%so~Gf81&7jc+T|D6*#0CF#*bBOxL)qI zWKTtFwj?C%e)eO-NjB(@9yqpq7M|DM_ep zSvD^jdy*n7(q520lImY-ZauB+i8oUN))FwL))dgOJMNw3Qo3__A+Uc4w6xF~#5ztm zv|ZE^OkK>4eNg46aWj`GW%d`_$Z}{i=z3-*_S4m4k_M~@HcY+FX>GF+rpI1Y+oi7h_U0RjmR0noW8hxctzSW)_%e?zH^j z_C~G0hW6Y~J4c+@&V7ZbY5^5)u6EtJd`)~=xo0**-a|eQZWL4Zj|Kv@_~@)$V`jpkK~bA1iSxnYrMlan7+B9sLxGs{-d3p_h_#o_@_q5E&g z<6q4kk+tiXlDx3(_W$HoBwH?YQtZflj4(6{*2Rx|=MIgf3abJa0+cBd#zIrQpT3}& zLQ5yYIRb9z-n9sHzcL#nX+#<*3>(U(CR|TtK!%LnC%85!nm;qZP(6lo5$(e^ND_A` z-H$K`icbkd8<>caR#|C3!fO@1e z4A2l7(%L6hvYU=~hvC*Io=HQqH=FF*WZ{lTDxLAkT(!QG!_m=cFui8ah79n)n<4vCwwP}yu6;pS! z3y$uu0;MkkEr*u6ar!``dDhv!5>bYUd)lAi3%Nqo?EG()c_(7fTJySJezYTO zvWK_rO3h<|u`TI3tPTS7q-p*}tbj#mXTokYDKEX*k&b4ou`b?Q*Dc)bj9?7Xyge$)Ln)RLY=^f|yYR4Oxy>#uPe%WId;$t#f z{bDOOgg7rmS!ZBQ{o1f*iC>*6HSp#eZAoEYpyocKKD>^(h=*2@$k7E+$#h|mVi6V5kYHQtU1bph?fv8>RI z2B(TtcBj~sEAPb=!QW83S z+q}FrP8LS@OBku)#8+nMUBqG9ydOIr7x%#k9}R69D;apbagiP5ubn9di99c-pEilu zUCMBq_?!(Q=?U$5!%bC^C3yDX1>pIYY~%fULT_kkreU%7ly0Z6?cGD}?es8XmJWg$ zx!6BU2p6Rs)^7TpShA~`FFqMzAYPNeSOU$lAisYTJVetQw_3ZSmN*AmP)iM2<$*3}5Xq|4M&-;MM~~7QnIZ z{SnHmhA?HAC-yNdHoE_mzRuZ0<6hnL#v@2uu#V633OkW>kS&tDW{!GJE<$b4$sH$W zS+%#1A&DbEzu7f(q{q`_wPk6dSFZRJAVk;q6nF8+mnYf`xO#Os^)2#ihQBoLw|i6i5T2FJt~%dxJ0%Bb7JaX~934yI#|k!L z4U7y+%skQeGrqItyyd01&Y<>VUXiv_oKyOFDU20_Ds?FJG2Byd@1+stxyYW=?Cbvd z2SM@nG1XT4$>IU`H<`utZ#oH4Z$^_w?pt(jJMCt*yH@(R#Dax3iN@lLd{@}6_Um^a_|do2hsgAgFwJMt0Lk@6YuD*_>y z@+u;NHP!5V`Kf@?emXs%KI!{D{V<H;plcWI|I{o|9{0|cY=p7nzs1=TWVA#vHqtJDwfYp45jOSJ~ot-)v>P6 z*rN-)YMOZS)oo4v?}?TYdn|iyLge6ioXoqa@L_xIR8{bQGJDjb3(Se(A&eW|bN>9H zX=rAP?iJ`M)sG^HUi_@&9|Xr7W>Ykl%7SzS`f;-@!)IOp+X^fhYyUh6S03(};xTsg zU&F7UF5J*8lym~_HfiMtKkK?E1I0f_djZH?$6jsvdmT*^j8PTkea!%V!bT6kgP={j zIdRHkjn>Yu83~=tF@8#ZOf`wSwuhJ!XW2BPJYv%c#uDq6ReQ4Tv-KW)9c5(9xNLDC z;X~XCw)7IFsRtJj-8Aja)>`{Ur+GoOWmQ#@Fop-mf#<72lvj@N#it zCRozVi^d-rwV1J4jntNOp=o08b5z8n3an~)baE)V2s{&zxg4gXB@7#@S(?{*#LPa# zIwB2|=QYhFi7h4=n(ax~Q>Jmn z64)s%2#HF*gCIh2X9L8F+2Y=vDO|l@brX=m`94)uIts< z;gY%<%7!ec*`rf3MRzJu->#f#b6%#fr=w}-P8(0Shw$a+jE6AJuI3(bqp^Ir{u(0h z3MJ+FI5aKS#~yw5#p-itn-x>Tq>5X7>@BkEB~&GF&D@l<$?F@@?&J=@Lc(1a76l4LcXa-2M-|&G`tBA(U%mp|BeUmT0MJ{C!KbCx$LD7$N2!j@EmFYc zh&jSHtoRtlbzOW9A5Kmwv9c9B2j8rgqU?M(2m1$W>1sg57gCsjp(f~scNE3EG_yE# z^q=Z)qw`lO%%eGWb1}u?vfxU7Y~fM4C>yr%k!S`CajYm#Ns zsnYX!X0iF=tdBh0$QD)UlCWfbFI8eXHmi@J(u6otg14_j%QfpmY!j~BvY0O7S!IrM zMo4A?Of`;0a?|0m2~GSCVzci_!3p%V#qsem6y$<3)i`y_54N&X**+<)}L{eDL&yY%f9hyD7h&x-K(Zah{ zFeFTn9GGD2@k2BF2a!O!@(;q`iAo5cl#o7hmm^i==ex+<@aX4%F4C@xv5|dhh#WC& zw-05(-dK`U{2i&0J)Jp04s@8*nPG-01aig^X5rSg>}+0Nj0dQMP7o3$3(+pfBGdqe z>685Mk0p^04ii`##ov*&n8VL9B;4V-4SS3zL&F($I#!mmwzm++ff-)jO@@aw9SR17 zELTRlz_^`~0hm{c2#Sef@Lw1nakNs&nBX@a15yMZHj^HIEH&`~T&rud0SbSUYu$ek z^3u`@FSJ*W*pa`clo15XXJ;e8$BadcvnAq0KfA|;hW3iDy=#o&88oaht_<@S*}BJ% z)QJ0FNmsgm#jJ)gk0Fvc`F%7rjSnY|R?*-dWk}>31F@(bFeS=N#k4ntaE}^q#AtzR zE{23d0%plPNHt);j8g6ns=I2#Au{$H5=wDdtk ze3t)(Sqx}2ayBwiOjQb26ZUT~SYrPJvrzxRY;iOj5HB+`GnGo67F66;9IK!pM+^Ft zeozU<=Z%7byks%h>JyFeDZp0ERG+9EBlUm9!a_<)G7BHa{8J_sbpJzOyp_l_6l!V! zUS_JPs^k|(Ni3~($Kf|3oEXUxD)ZQ+WOgZ;(a~l~j(uVA17R({*vZM!(Kb4w+)sH@ zr^`%Lm7@L>05OWH_|l88?naF6Ot_qceWO(PGs7BV9ZU{E2{}i?-dDe)dzQ5;uzsN6IeFq%|>;Zi21l_23w1?tUCpOoq1kV&rq-;4>%>~ZYX z#k^v3V0^ws+O|Rc{h*?E%!PjtROq2(?{%>0H-mQO`ilM z5Cy?DdAW;7LS^swLfC=t>VGrjN`1cErjh}sZJ~44XGW?Ha#4j#qSL21vM-^G%P{k8 zMjh4qZ^cB@mOx{oQ)-7aN;aW+BR;8CBN^7#6w{`ZH1YGST$KuON3`kF(X^&V`kw!s9-iJ z>WbaT%z4f{e&*ODo;;1%)JzR16c2KHu&37(pG_ z+*?DAV(FEnB_M)^Hy)T|b_7mn}=-n=!0&6TTh-Uo8;Mw zn~khc2^dQZ-hd#niQh_9M!)g=D47xmU|d2;tu zMi(!@jE+SmuPNd44?=t)<*K%(nS(N^T$LHsOo}r!;hGYWELF9#){i{fNzEX0nD))1 z=|NnJ_iJyKsj`+rA52?uXf(sHd-Kk16Df5HSJ|meqo}s!@MkP8TKYry87TANzpYH0 z-i@$F*gpu$vuE%vwWXTC-#N9zqWUD;H;-gw{M^iS zwY2X2(k#X394Vq$uy-V}d$A=QO_SbN^Y64KlHR=y?H=n1F$im`ha;Lyk2F3}0q;ud z>1=6g#q1-XE_#EhDn?(4QxXrXAhwdU_Qdvn_V6H-VdUPm*@M1PB_3>_6obJAWV35C z#aUoG>(iF@KL;DVx!XjJCe8kO6WGW@YN3!QxzmPPiEVrWyQu~cpa1N`l%ratU>Ea4 zja%9r7D_TR#b|TyUXAaub>CYqQUce5%LAiUd|6P2`VSm~I|R&*^o@^wUvZ<+t5-z3E1OURc~;Ht(CSYU|(S7;G2@ zqU(j*KPx#Gd&h3Q48Z<4_wo@ky0rY*IRC`uZ=e1b=uaACI0P72XxRVuzyHI!OOC-N zO2Mvb0)vJr<{U(+_8&Dc_zH{6bO)A|L)=9@xLCz3x#`;V|8>d0i9r2>D6wePz5n}` z+edAv%a|??NFFn9`k#xgcCFnF{TSDexa=v5=C{?Fba^UO21yL`NZL3tvToZSimMpm z%UUk1_mHFKx}UYwEZKU0etl}VaV zU4TDhCWOpM$>o1|qi_$q3CP;uEQ4(cjyxLNgS)A9FJcYqDi^#5&I+Br7M5`LIBR-L zc6gcaT1HhA#(YW1e$1IMns@Ouf2a+we9%TJ(P2MGI$D7BVQb=y zMs(FzdaIMjp_#kzNqHE}b!RvwW^F=Kb;`5Yer7A9*UeG_L-cmd5F`9t1~q6z`Iq&j z<2}iI#9e!Ig(euuimV`;I^VKKJt_+xm2(WlREP+x6~X#w)U7ArCdi{PZe5{KK7ULS z^`_!WgebSEKjBw<(=7Dg%xYQ#xT}vuuFfZLs=kK;i#Ew+mR<6+sF6boC?Y@hJj&Dq zDAv|tkm3}oma{$0aA7qEMo`dX$1$_=>3Dm`E`iyHCJ7W(e@8a^!qumj^Com}($p&N z>?}5vueXKoHEkAobtpZz(QK`M!yS;ehrzZ`mqoW|_T!$G|i!P2W zLqjiAF0*sM#-n+3RjpCLkl)7l4 zF>j<>e^L$!K=?+WR}Jf~G~7-Ji5IaAC!G^q>cX`qwrj~tW^d__Ji`bTEtUXHz2imU zJyi$$_(Jh6PlCJ@%GBo7CG?n>lu_`YLBfLbdb?5-uG>Ww7Lf4C{cE<5`&lYF{Ch(L zq0<$Ymz-|`%7N8|%3ckrR)<37lRV6mZwm^s&#Bvx5LO4Uv+%G0P`nJQLsC`i4kw6u z26ZfZ=EkD=WVG0X@1Cmm$R^cU(=K-)8hcF;fRaX%^pl+nR9x;H#a&KZqrZ;Lt-<36 zGn^C*WgmsnAc3M+ctf6@6|^5>GiTd^!iNf>h11z~uZ05vR}qckmdr)HU!g~$9GxPV zSYRerdIPO5i0(qjY^LuW20P(x;nVb?L}p^58red_ohPl}sqJX6J(8j|0g6Ys)4RB< z9lb`tddy@Z;e(`D@`2sfQ@Iz;g2U z=Z+t3;D;apnzW^JIGQ~$_oIGv2@JJ`sKnq;K}T{;ImnazwdRQ7oOR4g;cR*n;=s(V zRlSIID_+-{kVa&rtXJ=3S!UV6+NFnjp`nkeIOObr6uwdVj@gD?3 zF}bNbA5n@&Xt|a}G|8?_i@BSQQ(cstKSLFiG(uN7_1D~NMy6~gd{fXL>If^KlI)D2 zrVZ0ZHHII5NYMC^=!oB}ztD#qDXo$oqXS-NkUJ#+9-uTw)0=FyV!h3O^Py$6jo}}| zX>2<6^-V+;W8Rv9RH`;&jL095dK~|NHT9_FTGCQEpu&fYW~(>@%c~fj86}otfT(06 zxrBSzSH*f|n1)x!ic8moD7Bemb(;~G`3PB?wBOOH|tH^ zmXaSRA03xIT^2y!ea)2tsbC^Gd;&fbz1#5ESC5IB(!g#VQ^FIB&d_io-EUL2`Uhc0 zTZ$;n#a0lu0LesB#ZjO^Zd=~PviEjNo0812%5x7ppW;XsXRM*V=WnjO zgqzf#{WdLL^n4pVL>0T!9266K(|Eq3m0#vY8eGL*8AZXw!#JTg#=PpdI*InwTRAD> zuY^vdW9#%&`q4WRy=U4^C*HQ^Pc+bqWt(692LW*NQ+Rg8eD`=Ae;0_$E0-F z3M+lgwH5Lmut$|9hr0>Z+M`UTwZ~d|HRChY%sorC#-?Nf2)hl911a6V=}tVfIBAmEk6Q3S)j7$oXtUng_{!=tL+Ayq zYT&1nttQr4*>&YRqgSE66xC;>$Iu_Ka+0}}?kTBu3D4b1+X(MpUuJNLZJ5UD$(Quu|!4YmZO==CC*DV(@Mlv)mwfLUt z9sPZ~&dq8M!{H%?E+C1UBd9m{@+w36_p!O>QNq{0&~pD8bMN1;xe`ltCSx;zHHwjZ zDA~pIsGVDj%dLtXDVU^jD?fM3MkcPn|eYyBNuy26M`2@pPVUsmUm${@d+u(7Fys9yG$2Ib>ZojV$RKX`UG4G%?;Gf84 zvla>DYH!-|AunpB{4`YG-%2cO{w|IJDIxOqX~g?!Jjm~i@kjl)it}Jo;2vUmAkt9GYl|`l zY;Wx|joa6}_bRHRe-K-M&|p3%x^rJ&IWBISd7=G3>OvJ#l|Jsm(%JR|uNuS3gbPd1 zC@~R8kvd~tPEKckfEq89sTK?RXC9&MR&ssDD8*nKMjSKy^X)986sz|R>c&FhPMp@T zUl-lfeK-r9n~en#oC=Zic`YwhCOJBJ2NkUzcKPFZJ<6D%8>Q7g%-g-~Vvl^5*LQ54 zD4xUIGnY-zt|}Yi4a2Jb-(-hp^pk@eUJ?SH*t6)cOKA}vToQ7WA$lUa*tkAv`9ei~ zl5ZmAtVvp_V48vRr`I(81t|je2&>Wg$cHLJuFl1kpKxg+e(zP5)|Kz1rSe@&3M17o z!HhJR#4RIn(%3z{ z542n)_%=$hCuwEt*(g9(xQR5jh&H?jbI2~id1&zhLp7OC4+b%m$8&4u4eeL$EmV#8 zM!qm-$S(})c`|~(pGBJaNmr-aL4r{Z|qWYY!_9LBFyLdYG7LhU9(h|v*O|EYgqY@0f ztQxsWdEA_!*onZ2gb~WxC)!mj8A=&{vR!kXZQ)k}i#;sShFUnNp zUcAd$QQVR@&#>oMiTw16qHX&!)aq|v3V2y~e5Yd(>5XHIqC--;%CG zQ1#=~51lHL8^jbnIw1?U^h9yaj5>m#Jl5EMFiK-eoQ2=N@qQ6i?sSH~jf2}JGjX{Z zitE?)Q}aFx<;Liy;zGUBbQ8}H?3j@}O=F`)<{4V2 zOXjKMeeaJZ;cB2d5^-BWPoHQanwLP2j1{TQ?%W}JoB^xzIJHp-L-I=Q z%SU*or4T6*8l$?I|A2C1VA!O!EP_aGs#sL2 z&$!ssICxraal5&@=}H9Wv~ z_>rTZ2HtM?5sXQB?~gO7OrEH<%1>SoD?Dv8;C*dOQbQXG2LzsL;wg-Z`BZQzoObmv zmRlBRAY;AW>25&9rHw-t>z@=L%_haQEp)WKh!*eNiuds_> z`!xPRXuaxn6t9N1JVs71reB&Wzv*SVx;MlLYH;(RP^-e*CUDTUj=V*T;heg{&0@#j zMQ(FQ#KbMde;olDZ9DD8uK%T1@=M}BhLuY!HbFEr8b?kA)-JsIG}?mPC5(epGJ5e1 z;9<>$2M&XKyeqyD!ibf*wm}LnHru&;b+Up%gmB1Fz|bL|^%{s(3Z{BhCp;BE?Ztyu ziE%|9Lrk$V+F#0v;Flwkg(RFNPK*hQaS0P>;50Z;vczCn#HjdWMp}DGyjCr}SL&=B z6Z53Z&Ql?v`N;Zq%}2YR>qUuU{Aul@LHo4s{g>qI{~qmwgh2nyZl-GD{F&G6)5N!P zg?3H$zj4+grZ`dN^3QbquIUr1~ch0Kh`N zQdia}xdI~(z%O@~%A0!3K!-m64snc@ni?~khxrC2UU@Beh0<`udc+=2CZv*P&x}uE zwx`2C{zG?DWB-?hUb}x4T3gC0`71_raL_H;z#+1Cw0`ygG`YLe_n)BxXm+ez{@=Oj zHUkr08c+QH`jhl+(ili)RGKZt8ny6}?xH@S&@xHLK;qS-nzwhDrqvW)?|^$j4wVmJ zX3d`*?lYkFbOHQ+$&;_5@1z`TnBpm#eeCBJirM3Ht-oGzkBzRO(!=XxE^k+LRZ12_ zFphMgESX4dVi9t4)n2Q23t7Gs>ot%HgBg&pub0^MY2I^wKascbrhRGjm4dG&X+HmC zL2L0roP&RYa@zZ(X8Z@S#xEhVAECWV{CCb{%Uah9ptNVRFlK3rD55@T(C+T9VxvnW zg6j2|!%IKLM}2D&QE9OIfz^0($Wj?pytk9MA`NQ)7St5+^<~6P-wg`}jf^70?t5JC zgkjzItuu$-V^e*}syQdh;gS6L*wEGES8@U>({9Hid@&Pyy@`Y0yEtt|t~C%54FP_? z=eF4j%vZ!zwX0$Ac0(xHRk-Yjk9ZO8FdH%F0K2Sg7@usCDn~{0p+7J<-R^Uf8Ua3g z%^{OD(B2)wETl?Jk<2q8Z)YPj5GmhQakv4_u${UKwQuX3nWo#RA7%A6j6HSlpdz|7 zKFyHiBPl`gX2yA8 zhmFI=7U&9Nf#>YC;}^$sJb~M6j$m{;J3Yd?cctoiyt?;*>)}xhABglHKO}83{*cT~ zxw-34k@gTFX;T{zGno|r$os+2E9nDZN%%XV_vY(kQ5#oY9SL9W^}}bA?*2{wh%5{0 zp?=j|w-D;7;sPXRa+B|!9`WgV1%Ny-UqQ}Zp_M;_%Y&J5KzJn8=e)AVj42C&U3V_K zRT{YNm4Srm<9qz;U3W%NiDrK?4G^I`d=hClqK)SHlr{snEM4hrNZv^Dw zp7>JcaE1+fhjv!O<82*0MFFJ5r;hI|5mH72H7ZoM2|fa5>v@bdx7yd}jxx+jU0>XC zC0Y|LHjW4CJ`h}3dfe(0{mJ|i1l}j*uFtm5o{uq^q;P)yVRzJ9S;xJ36>W%h6C8Ok zsOx&2)B*m5TNAAf3J$m`td;AKxcf|PkcLup3AsZb(($6SgK{?#Hp~rs9YV=+_5{07 z^{vNneqq7ph_89F8=A^}yjvvdJ7LmEfp>fKbXeANx+ZMOCOKb1xcfCnD#%@({=9+s z{(TjRg@7M*F|sWN*j=yEclrYmk|7^<{z^s*z9S~dyh9jN(-{`1FXadA)VOXUuh*f| zPL&>=v)y8=KPCmtG}1vQ_4U4io(=wRP&15Ivzt|pfG$Vt0qXcQ%)I4-lPP1j+slmq zD?J4|kPSy%>tySkZ&1kMBT<+BBj@o^ytquV=W?Pz92Zh5mT|nHl@T4!f5S!<8{f#A z*eB3@u8XOgr0>_;E*n-C$2kMPYNW!q(?-j#X-eI=R(3#|wv{N3(*;*pORO1e|9u|4 zr!YB`i_*xZD!k{~TQnu>L9{yxyhK_2yP%MQ6lS+VY0)pTid_TgEgwl$zJyCQ%4X^H zVT6`9bbihPM;Rc1Bm>na_~5I1_uei}ln8GIO2Q1`OMm;hVow>-RLiTraHlV3?evcq zh{x~Ph8M3fkEsK;GJ&oQBl z5cf7UL5Ih?txvfx+VHJ2L&GIijr$tYv>T}74Cx-a*JhhKh;@UvjHcH!viTD~XGGCi zoGw2g$1r!WtNkf9c=LRhM+1XZ2RA+DQZnW!3nz+*uMMO%vZ#7o={znP{U+qA;Vlu4 zVUIYKG;ceK9&?UqQP`kq<=f^yR*zwy32@OZIyQy^sdUC~Pl+1hWCkO(C+n~p*1Ud^ zWl8M>D9Z{tf?nK!g9_w%0hGHpquBn;WJfBOo5gUg@~%6gs zZV?F|0_~@4p|vq-@fNeF z*vxJ9*!1Y|3Q~&WxRpP!ZLbn<8J$foaZ06mAT+1HOL+weBz*}oeF}d^$Wy&E6__GN z7IVj7)BM5L?GJ2Ninf0-m$$%t%tTG{)U&TqF}MivR|SXYc{@f3#FQX8Kp1z{5&UzA?*FBJlekF^qi zLqNTfBsXIl^mw?Mm%J_{-`h)6;Gc#?cGhLKg9Dlqx4k3eFxbUa=IQ$n&3m}FWJA7G z@1l(kH*dAT+arfg3dSU89~x26hhJmKDVQZ(axkhjOO?5hTI{G8X`NVp!!}carRLFS zBc3oL#aJDzI804X!6PXXEnGQkHw@Ty4)`VT_qAH)wn8n4LHh01`G36Wy)ATKien`z#&W=UC62rYX?CoTo> z$=3_Cyrl*Ul9cr*WN&-4ctEQs*090&52qM$A4aiSMsw5zS#v?_{maJ)9~z1Gk^%Hc z$G=kcm!FdqPw|(ss>L{JhL3fo-B5xnEzWd&C@~ z2Y<|Io*ea=x02D74s2^LLUuW}MvvYuD=i+DV?I6KB{X~{1a#Z?x*yxd>-b#@Fgs(D zL$4-Um7p$-3jAS>Mj?H(P)HE6N=0%c*ImUW#=9O)dUaOd)i*cb?mLV?g&tTf$tg`( zrkbOL_day;lp>+9fPMEeleC8u(y>mU-@Jm}^$Y0|YnC(CS9>c2jjIslexHGKf3uH7 z4^u1D&@!2Ay+AZznwRZk=7Avl$;tt&y;2O@l8~y*&^us}9o)IXmC8YJJx7pJUj_ZBX$A0uX@bOi?i7#8}qt$k@eM$S7Yw!7FCdsH|cFbOWKUi ztkK3L02&0MzGD5Ymdqb%ry#L5W|WAXYyKS;RDGzy)-%EJfeh8>bL{Y&rMynTU0mli zpS)hwZXARQ_ydmNrLtNDLTJ_rGN79&v;nTwdpTjDlEuv_d=*t0bsoR5Yz+VR{Y!OZ zwp_{;t;8nr9$VuP{di{f6BfI8P zEAT9@bL{55u+IkV_=Oui5hMXkD;AHs%P)g;)^A?1OKYBn6=r7&$3Hz2j&l!&b6N7u z_ColbGd9u0LnnDQ(_JBLtnj7C!6yf=X*&@PhR2MQYesu8#r&slLL>l%etl1+Uo*3S zxI}l--)Mm4j3cs)Zs?$=ELw0tvHy%2gS?;buio5Au*1(%1~~^b{F|jRtX#I4lny#C z5{o~)8*&iy2J#>#kkVk+?yU#z-!(zU(tZ2oHBqLY%Lb$w!zN#fke_Bos);Ftw%XyB zSi93VwfT&vzD-!w8w(2TP13vyqO`XQ1766r&3n83&4va=*mcHP*GuYnNV0)**!mwG zeqD3bGXXl-;JKCGeizUlmdZUs>dxb|r}Xn=Uy@QQI-i7rXm(}<0mU;z9N&rpY3q}g zzC%=9R@9%k;=rG)-hvN(19>c;o=;J%odYjCQ$?Yn{Jxc5u_U@k)X8@EZb@-N6M8AL z&nsSI8Y^egV>}mI!1`gDXz|weM}jIn5i1>A)NYTlB2R36UC%8WzmBJ;Z|G zQ@&m%0U)5ULnJXfYJVo!h#f+m(m4`*aGuHBuycW`BZu`2G0y*}x1F=*Q&{D)u>jXI zX~*rp_kjVLZ%iA)SzTH;J@{KJc_w@=TKlW3|(qBH+#%s4Y$NcsMDGG~=g%EO?P&dWzE$JipStWtv6vj&v zc)WEVp9s5C=8r(m&qiv#lfgu!{{o$5`hdI_?Jb}XBObVjQHb@BpehwYbwR~$RBA`T zhjg!A2D{@osA|jUoz9Q}69<4HTn8{;WAd)i93+ zs|tiD6INUp*QBS` zMv11|c_jQtn=!7%XBI-3i*tdW=7*JeZCAapNop2X$^T0$hPN8>zE z^Az|!nqvbf+xtcPm}Mu+W8AV-bj?&#?fziQZ;aSpbBZTATn__5_#}taD7oJ!AZB%A zn~tg*q}rU^&)HeyimaOcu6yQ;sD1xEe2edEZUp>~3pB^UsXn4tA^!DkBd>Ua_e*8|U5w|B_2z3h)R zXzII%N3~Q+3qMItIHKu!oYaY0JSkdwMK}Z6feA-E1r841f|jKUm%+VlkHK-4K6?Y# z<)(_@lQi&Av`g-6_3S%mQ#R!2@Y@0XyoKzb$JsHo+{D*7R5N7sG6k3KL8R$WW%`VD zlWube@}ZPK+Yv1xe9fvE?D^MWqwLI)$7@vbpFeE6FVL(kCAvJ%>~l4&qbKI``h46|-;`tfrnAru}{zm-?F>5qN3 z22Xoj+Ug12O99Fy&HcF+LZ5(HP{xuHse^-2E#0*7eaAL}ypvl7+c$& z!D_Q>{eA0Hq-|M#V((=?f|+6q50>t{qX23lHen#h%XLRM{)X-2q2na|f_q?rdxcp~ z3Vetb!L3dJk!R`O|1idyCY5H7+)SB2J!Nj$&@TFlnaC?$(F1T!$9WdM8sz?w+|+rf z0f@SLdXvN^_<7pKgPrrI%NPy?Ne;617Y}ns$g4|!noolI$T?j)L0Xr|d=IkPj_q%< z#9CTrDIu5my-G+A-ZpOJ=nR{KnW%0*gp;6i;zExwArfV%55RXu%JNkYvho&I!xh=< z6jv&flRRRb*Hq!CyS}Xb81bhj_ZVqf=Rii&a#GJZ4kqw@x^oFoD4odX z8Yj(5U^U~z1}l|C*QuOLY<0rnOzt z^YDJD z)a~hsHh3Sp6A0d=p_20=?>s6y(n-6`(t&cW^nrH^uLC{cU%Dr7&<|!PzY;y2gS~<2 z8vAW(T_MAJF3B`0Ixo_26I0$kqA97{CvS3Chu2#@9iBD@b{yAi<+ReR2M`_Zp0i=H zM$ZXzML`OI{qdWV3&0}fKz9&5wyswAJ%S^}M4VL<_N@~Va4Sm}@wb`qT>2qAGaItR zwCnaMo06j1o;z>oP|eyEK-q@=q^UNt}i zXK)>f0u_;m(=Y_;5204+{DUzxDd)N*44phs9st=S1&*Fe*o`55WloP8io2m@5-Eq?ly0@@P1|$-Z~{7n}`+$60n4y@1GS<~ii zQ>*BZGcawpO4%UUt5ikKfEYwCeh`6{7)6_ifAvgiBXOy6lDHrkEV8-qO4M1=y&If`Y=8=Ay%$e;h2I)6h$StDHu>M zM@gD3_iZ?eX2{CbB&L?R;j5&rW>8#;V%~ z#Ybp2*BFHgJUNJAZ#iOfR>N~O{Pms$pm(d7k!yoMY1$0})rRlkejwNH{uSh}M+6giNt{x!WfpK}3Eoav<(=QFn zUrIwG$Xr9^rc_=u8&!O57apseFC zR;;b-HY}W@;l`k+*~Hhnpis@Xe(`SH`JO=V!$$3qk6n(ew^e>~gIT;wWL8Nzm0;v_ z^?^rCd6`1npye@dTRrp46?RNaNz@*CLZkx&!x1eOZ)aq)H!%RJ7Yy^m{T$pue=$DsE=d#4^IxQXC0Q zwb>`jK^yFBJ4NwoyeX^xU`EE_qhFU@yh$M&;}Uz5oL!U=R)S#7nX=6zH@2Fzd-0Mv zPz?bk@UG&kIhYLqH~#={Me*;$nH=0uzUY*qT}M(+-O2-=Be`sN#k^Kbhs~;ZK*Ay&D&Q%S;&)di@Z2@6@nlg}1I9{gRLzPGLj@}@- z4-9F_EO%7ONvD#nuOSI=(mK4cS74yh9LAs|25eaYz6)d4GI7E9NI`^U!w4kU&7Q!# zC!zpQ?%Gl9!qKij4R3Z`rtf8QMSAjeh`TJ*4&4savZjX0RMC>cm~E}?3$=x0nK%7y zWYZXp4G$y&4#6W3;&~xuZ@rL_S<*wd1Yqc-1Brz;XOIKmm2|$>_Ka%8C3~SclBHX_ zxCOGx9c&;^9#I`KaR+V6RGbH8e9(NpJl4vlB*{91;FnykKG8*DT5#(+5+D@|)r z#nh1~6rI)q69sM(eGCjjwoy1~GF`p*cZ2%%49N1W2W)B%n1;waTdaGiJf)`la0a6_ z?@|*=;A-Uc>^4Zql4xt*K5N)tU^Rlj$74>97XJYM!~h@>0RaI40RaI40RaI40RR91 z0RRypF+mVfVR0alF#p;B2mu2D0Y4D^sWw0GyRj?foU>-ln-*-@vu4ekHf-6mX3d){ zi#C6jEPpM3Kk^#-2C#_<5stCy_YWCyLRp0(A+QlfUU^&0dr%2V{avI zZf!ldSUErD{zTOr%l>2!Z1oWpf>mroum=l2%RkHhZ}|N6?Z=kwTD58sh2|5w&KS=? z+aE{< zc5Pn75KEG$Ba;qC>nAwCw=p;{<02aSF4(QklRitHSvu#S>|avJ;tr!zUs+rIKLMZ2 zxc>mpj%x(^-fWkohx}j3AvW;XLIc=j4m!u9II-k9v6cl-W=(B9mTWe~K2AP%mHa&? z&0~%&981@hmLHZsJGE-mZL}W*`8<%kwQl(d%idd07B0=Omq{E-;X=rGhq-uy#f_P? zK1gJJJhVPAyV(ax%)XG8)vv+T{{V6uKMP--TD2XU?oZ9vg^%R9%M=ELwn|{^Tsbeeen&XnesFJ=mr@o_=fC%5sO`i_C?thXmPY~yG(3tvdc2%&&|EH z6L(pbCqIiEZKNQ^TkZ{JCpHGGlG_Uf3%^i|nzUeU(CyRPOR#=0`*G!=Y5xF_ zZKzL?=*Rkk;A61j(Z+qTc@82kA=?9~4wm?UA7_ZesK|V*Un~r5PPzN-xBmc0{ftQd zU-9_Vz$1h6$lC`A5A}CT{->OXtP`h`8@+b*NfHhxZ|1nSJeK<^*<;w5uyc|h{#j+8 zf!;~=XUhX39fjKoEy!#!*!8k_f@(i991Hp`{B6nCkn#s|@3CPkvz>rscU8fxl*w{aiD7vd>jpn2EIplG{)zJVHa(wN z9}@on33uCV{PNcAi=@zF0P&FSP8(tyE7H?h7g_6wL!TiN#zh{2ap`Zx!N>Ld{{RjB*cM}=*F;DKGp;`-ujSN>x`TX`JcJj>17q4u@Ua~7 z2HEZQWQVZ&Ec}BVWyhAkj6WnFCtkw*{GI|h@sNS?!Rb0?KzngUG1hFAHk%AQpC<7k z%P&6;{$8NYPE)%X*aKwl$np~<+#}{*PYokeSw{%uudScSk1hCJ`+T%ZJ)cJD#r`ea zAA-&?o{=UohagKz82bIJNzoosLy7xjReehOyVXIUHUj>+949g|Cjl52KNIbyiM4zJ;| z_CK)uA?m?*<%|l-OAsy>5^>G9#n|Pn>BjZ=O6)kiT}H4?1InwU(ec5NoGm;~W zhZ_Ty2?LgYAQ<1WYsgB;H2+dNrUmJe;q zbp4C$Byu)YsleswK3%NYB9(x|B!PWdFTuC+9=V#(iwjp%vX6=_FhN%t& zrP-4uVfC

".freeze); + ; end; end; _buf << ((content).to_s); + ; unless (_docinfo = docinfo :footer, '-revealjs.html').empty?; + ; _buf << ((_docinfo).to_s); + ; end; _buf << ("".freeze); + ; + ; + ; if syntax_hl && (syntax_hl.docinfo? :footer); + ; _buf << ((syntax_hl.docinfo :footer, self, cdn_base_url: cdn_base, linkcss: linkcss, self_closing_tag_slash: '/').to_s); + ; + ; end; unless (docinfo_content = (docinfo :footer, '.html')).empty?; + ; _buf << ((docinfo_content).to_s); + ; end; _buf << ("".freeze); _buf + end + end + + def thematic_break(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; _buf << ("
".freeze); + ; _buf + end + end + + def inline_quoted(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; quote_tags = { emphasis: 'em', strong: 'strong', monospaced: 'code', superscript: 'sup', subscript: 'sup' }; + ; if (quote_tag = quote_tags[@type]); + ; _buf << ((html_tag(quote_tag, { :id => @id, :class => [role, ('fragment' if (option? :step) || (attr? 'step'))].compact }.merge(data_attrs(@attributes)), @text)).to_s); + ; else; + ; case @type; + ; when :double; + ; inline_text_container("“#{@text}”"); + ; when :single; + ; _buf << ((inline_text_container("‘#{@text}’")).to_s); + ; when :asciimath, :latexmath; + ; open, close = Asciidoctor::INLINE_MATH_DELIMITERS[@type]; + ; _buf << ((inline_text_container("#{open}#{@text}#{close}")).to_s); + ; else; + ; _buf << ((inline_text_container(@text)).to_s); + ; end; end; _buf + end + end + + def outline(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; unless sections.empty?; + ; toclevels ||= (document.attr 'toclevels', DEFAULT_TOCLEVELS).to_i; + ; slevel = section_level sections.first; + ; _buf << ("
    ".freeze); + ; sections.each do |sec|; + ; _buf << ("
  1. ".freeze); _buf << ((section_title sec).to_s); + ; _buf << ("".freeze); if (sec.level < toclevels) && (child_toc = converter.convert sec, 'outline'); + ; _buf << ((child_toc).to_s); + ; end; _buf << ("
  2. ".freeze); end; _buf << ("
".freeze); end; _buf + end + end + + def inline_footnote(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; footnote = slide_footnote(self); + ; index = footnote.attr(:index); + ; id = footnote.id; + ; if @type == :xref; + ; _slim_controls1 = html_tag('sup', { :class => ['footnoteref'] }.merge(data_attrs(footnote.attributes))) do; _slim_controls2 = ''; + ; _slim_controls2 << ("[".freeze); + ; _slim_controls2 << ((index).to_s); + ; _slim_controls2 << ("]".freeze); + ; _slim_controls2; end; _buf << ((_slim_controls1).to_s); else; + ; _slim_controls3 = html_tag('sup', { :id => ("_footnote_#{id}" if id), :class => ['footnote'] }.merge(data_attrs(footnote.attributes))) do; _slim_controls4 = ''; + ; _slim_controls4 << ("[".freeze); + ; _slim_controls4 << ((index).to_s); + ; _slim_controls4 << ("]".freeze); + ; _slim_controls4; end; _buf << ((_slim_controls3).to_s); end; _buf + end + end + + def video(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; + ; + ; no_stretch = ((attr? :width) || (attr? :height)); + ; width = (attr? :width) ? (attr :width) : "100%"; + ; height = (attr? :height) ? (attr :height) : "100%"; + ; + ; _slim_controls1 = html_tag('div', { :id => @id, :class => ['videoblock', @style, role, (no_stretch ? nil : 'stretch'), ('fragment' if (option? :step) || (has_role? 'step') || (attr? 'step'))] }.merge(data_attrs(@attributes))) do; _slim_controls2 = ''; + ; if title?; + ; _slim_controls2 << ("
".freeze); _slim_controls2 << ((captioned_title).to_s); + ; _slim_controls2 << ("
".freeze); end; case attr :poster; + ; when 'vimeo'; + ; unless (asset_uri_scheme = (attr :asset_uri_scheme, 'https')).empty?; + ; asset_uri_scheme = %(#{asset_uri_scheme}:); + ; end; start_anchor = (attr? :start) ? "#at=#{attr :start}" : nil; + ; delimiter = ['?']; + ; loop_param = (option? 'loop') ? %(#{delimiter.pop || '&'}loop=1) : ''; + ; muted_param = (option? 'muted') ? %(#{delimiter.pop || '&'}muted=1) : ''; + ; src = %(#{asset_uri_scheme}//player.vimeo.com/video/#{attr :target}#{loop_param}#{muted_param}#{start_anchor}); + ; + ; + ; + ; + ; + ; _slim_controls2 << ("".freeze); + ; when 'youtube'; + ; unless (asset_uri_scheme = (attr :asset_uri_scheme, 'https')).empty?; + ; asset_uri_scheme = %(#{asset_uri_scheme}:); + ; end; params = ['rel=0']; + ; params << "start=#{attr :start}" if attr? :start; + ; params << "end=#{attr :end}" if attr? :end; + ; params << "loop=1" if option? 'loop'; + ; params << "mute=1" if option? 'muted'; + ; params << "controls=0" if option? 'nocontrols'; + ; src = %(#{asset_uri_scheme}//www.youtube.com/embed/#{attr :target}?#{params * '&'}); + ; + ; + ; + ; + ; + ; _slim_controls2 << ("".freeze); + ; else; + ; + ; + ; + ; _slim_controls2 << ("Your browser does not support the video tag.".freeze); + ; + ; end; _slim_controls2; end; _buf << ((_slim_controls1).to_s); _buf + end + end + + def dlist(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; case @style; + ; when 'qanda'; + ; _slim_controls1 = html_tag('div', { :id => @id, :class => ['qlist', @style, role] }.merge(data_attrs(@attributes))) do; _slim_controls2 = ''; + ; if title?; + ; _slim_controls2 << ("
".freeze); _slim_controls2 << ((title).to_s); + ; _slim_controls2 << ("
".freeze); end; _slim_controls2 << ("
    ".freeze); + ; items.each do |questions, answer|; + ; _slim_controls2 << ("
  1. ".freeze); + ; [*questions].each do |question|; + ; _slim_controls2 << ("

    ".freeze); _slim_controls2 << ((question.text).to_s); + ; _slim_controls2 << ("

    ".freeze); end; unless answer.nil?; + ; if answer.text?; + ; _slim_controls2 << ("

    ".freeze); _slim_controls2 << ((answer.text).to_s); + ; _slim_controls2 << ("

    ".freeze); end; if answer.blocks?; + ; _slim_controls2 << ((answer.content).to_s); + ; end; end; _slim_controls2 << ("
  2. ".freeze); end; _slim_controls2 << ("
".freeze); _slim_controls2; end; _buf << ((_slim_controls1).to_s); when 'horizontal'; + ; _slim_controls3 = html_tag('div', { :id => @id, :class => ['hdlist', role] }.merge(data_attrs(@attributes))) do; _slim_controls4 = ''; + ; if title?; + ; _slim_controls4 << ("
".freeze); _slim_controls4 << ((title).to_s); + ; _slim_controls4 << ("
".freeze); end; _slim_controls4 << ("".freeze); + ; if (attr? :labelwidth) || (attr? :itemwidth); + ; _slim_controls4 << ("".freeze); + ; end; items.each do |terms, dd|; + ; _slim_controls4 << ("".freeze); + ; terms = [*terms]; + ; last_term = terms.last; + ; terms.each do |dt|; + ; _slim_controls4 << ((dt.text).to_s); + ; if dt != last_term; + ; _slim_controls4 << ("
".freeze); + ; end; end; _slim_controls4 << ("
".freeze); end; _slim_controls4 << ("
".freeze); + ; unless dd.nil?; + ; if dd.text?; + ; _slim_controls4 << ("

".freeze); _slim_controls4 << ((dd.text).to_s); + ; _slim_controls4 << ("

".freeze); end; if dd.blocks?; + ; _slim_controls4 << ((dd.content).to_s); + ; end; end; _slim_controls4 << ("
".freeze); _slim_controls4; end; _buf << ((_slim_controls3).to_s); else; + ; _slim_controls5 = html_tag('div', { :id => @id, :class => ['dlist', @style, role] }.merge(data_attrs(@attributes))) do; _slim_controls6 = ''; + ; if title?; + ; _slim_controls6 << ("
".freeze); _slim_controls6 << ((title).to_s); + ; _slim_controls6 << ("
".freeze); end; _slim_controls6 << ("
".freeze); + ; items.each do |terms, dd|; + ; [*terms].each do |dt|; + ; _slim_controls6 << ("".freeze); _slim_controls6 << ((dt.text).to_s); + ; _slim_controls6 << ("".freeze); end; unless dd.nil?; + ; _slim_controls6 << ("
".freeze); + ; if dd.text?; + ; _slim_controls6 << ("

".freeze); _slim_controls6 << ((dd.text).to_s); + ; _slim_controls6 << ("

".freeze); end; if dd.blocks?; + ; _slim_controls6 << ((dd.content).to_s); + ; end; _slim_controls6 << ("
".freeze); end; end; _slim_controls6 << ("
".freeze); _slim_controls6; end; _buf << ((_slim_controls5).to_s); end; _buf + end + end + + def pass(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; _buf << ((content).to_s); + ; _buf + end + end + + def title_slide(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; bg_image = (attr? 'title-slide-background-image') ? (image_uri(attr 'title-slide-background-image')) : nil; + ; bg_video = (attr? 'title-slide-background-video') ? (media_uri(attr 'title-slide-background-video')) : nil; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; _buf << ("".freeze); + ; if (_title_obj = doctitle partition: true, use_fallback: true).subtitle?; + ; _buf << ("

".freeze); _buf << ((slice_text _title_obj.title, (_slice = header.option? :slice)).to_s); + ; _buf << ("

".freeze); _buf << ((slice_text _title_obj.subtitle, _slice).to_s); + ; _buf << ("

".freeze); else; + ; _buf << ("

".freeze); _buf << ((@header.title).to_s); + ; _buf << ("

".freeze); end; preamble = @document.find_by context: :preamble; + ; unless preamble.nil? or preamble.length == 0; + ; _buf << ("
".freeze); _buf << ((preamble.pop.content).to_s); + ; _buf << ("
".freeze); end; unless author.nil?; + ; _buf << ("

".freeze); _buf << ((author).to_s); + ; _buf << ("

".freeze); end; _buf << ("
".freeze); _buf + end + end + + def inline_kbd(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; if (keys = attr 'keys').size == 1; + ; _slim_controls1 = html_tag('kbd', data_attrs(@attributes)) do; _slim_controls2 = ''; + ; _slim_controls2 << ((keys.first).to_s); + ; _slim_controls2; end; _buf << ((_slim_controls1).to_s); else; + ; _slim_controls3 = html_tag('span', { :class => ['keyseq'] }.merge(data_attrs(@attributes))) do; _slim_controls4 = ''; + ; keys.each_with_index do |key, idx|; + ; unless idx.zero?; + ; _slim_controls4 << ("+".freeze); + ; end; _slim_controls4 << ("".freeze); _slim_controls4 << ((key).to_s); + ; _slim_controls4 << ("".freeze); end; _slim_controls4; end; _buf << ((_slim_controls3).to_s); end; _buf + end + end + + def verse(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; _slim_controls1 = html_tag('div', { :id => @id, :class => ['verseblock', role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) do; _slim_controls2 = ''; + ; if title?; + ; _slim_controls2 << ("
".freeze); _slim_controls2 << ((title).to_s); + ; _slim_controls2 << ("
".freeze); end; _slim_controls2 << ("
".freeze); _slim_controls2 << ((content).to_s); 
+      ; _slim_controls2 << ("
".freeze); attribution = (attr? :attribution) ? (attr :attribution) : nil; + ; citetitle = (attr? :citetitle) ? (attr :citetitle) : nil; + ; if attribution || citetitle; + ; _slim_controls2 << ("
".freeze); + ; if citetitle; + ; _slim_controls2 << ("".freeze); _slim_controls2 << ((citetitle).to_s); + ; _slim_controls2 << ("".freeze); end; if attribution; + ; if citetitle; + ; _slim_controls2 << ("
".freeze); + ; end; _slim_controls2 << ("— ".freeze); _slim_controls2 << ((attribution).to_s); + ; end; _slim_controls2 << ("
".freeze); end; _slim_controls2; end; _buf << ((_slim_controls1).to_s); _buf + end + end + + def literal(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; _slim_controls1 = html_tag('div', { :id => id, :class => ['literalblock', role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) do; _slim_controls2 = ''; + ; if title?; + ; _slim_controls2 << ("
".freeze); _slim_controls2 << ((title).to_s); + ; _slim_controls2 << ("
".freeze); end; _slim_controls2 << ("
".freeze); _slim_controls2 << ((content).to_s); + ; _slim_controls2 << ("
".freeze); _slim_controls2; end; _buf << ((_slim_controls1).to_s); _buf + end + end + + def toc(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; _buf << ("
".freeze); + ; _buf << (((document.attr 'toc-title')).to_s); + ; _buf << ("
".freeze); + ; _buf << ((converter.convert document, 'outline').to_s); + ; _buf << ("
".freeze); _buf + end + end + + def notes(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; _buf << ("".freeze); _buf + end + end + + def quote(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; _slim_controls1 = html_tag('div', { :id => @id, :class => ['quoteblock', role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) do; _slim_controls2 = ''; + ; if title?; + ; _slim_controls2 << ("
".freeze); _slim_controls2 << ((title).to_s); + ; _slim_controls2 << ("
".freeze); end; _slim_controls2 << ("
".freeze); _slim_controls2 << ((content).to_s); + ; _slim_controls2 << ("
".freeze); attribution = (attr? :attribution) ? (attr :attribution) : nil; + ; citetitle = (attr? :citetitle) ? (attr :citetitle) : nil; + ; if attribution || citetitle; + ; _slim_controls2 << ("
".freeze); + ; if citetitle; + ; _slim_controls2 << ("".freeze); _slim_controls2 << ((citetitle).to_s); + ; _slim_controls2 << ("".freeze); end; if attribution; + ; if citetitle; + ; _slim_controls2 << ("
".freeze); + ; end; _slim_controls2 << ("— ".freeze); _slim_controls2 << ((attribution).to_s); + ; end; _slim_controls2 << ("
".freeze); end; _slim_controls2; end; _buf << ((_slim_controls1).to_s); _buf + end + end + + def example(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; _slim_controls1 = html_tag('div', { :id => @id, :class => ['exampleblock', role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) do; _slim_controls2 = ''; + ; if title?; + ; _slim_controls2 << ("
".freeze); _slim_controls2 << ((captioned_title).to_s); + ; _slim_controls2 << ("
".freeze); end; _slim_controls2 << ("
".freeze); _slim_controls2 << ((content).to_s); + ; _slim_controls2 << ("
".freeze); _slim_controls2; end; _buf << ((_slim_controls1).to_s); _buf + end + end + + def inline_menu(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; menu = attr 'menu'; + ; menuitem = attr 'menuitem'; + ; if !(submenus = attr 'submenus').empty?; + ; _slim_controls1 = html_tag('span', { :class => ['menuseq'] }.merge(data_attrs(@attributes))) do; _slim_controls2 = ''; + ; _slim_controls2 << ("".freeze); _slim_controls2 << ((menu).to_s); + ; _slim_controls2 << (" ▸ ".freeze); + ; _slim_controls2 << ((submenus.map {|submenu| %(#{submenu} ▸ ) }.join).to_s); + ; _slim_controls2 << ("".freeze); _slim_controls2 << ((menuitem).to_s); + ; _slim_controls2 << ("".freeze); _slim_controls2; end; _buf << ((_slim_controls1).to_s); elsif !menuitem.nil?; + ; _slim_controls3 = html_tag('span', { :class => ['menuseq'] }.merge(data_attrs(@attributes))) do; _slim_controls4 = ''; + ; _slim_controls4 << ("".freeze); _slim_controls4 << ((menu).to_s); + ; _slim_controls4 << (" ▸ ".freeze); + ; _slim_controls4 << ((menuitem).to_s); + ; _slim_controls4 << ("".freeze); _slim_controls4; end; _buf << ((_slim_controls3).to_s); else; + ; _slim_controls5 = html_tag('span', { :class => ['menu'] }.merge(data_attrs(@attributes))) do; _slim_controls6 = ''; + ; _slim_controls6 << ((menu).to_s); + ; _slim_controls6; end; _buf << ((_slim_controls5).to_s); end; _buf + end + end + + def page_break(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; _buf << ("
".freeze); + ; _buf + end + end + + def ruler(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; _buf << ("
".freeze); + ; _buf + end + end + + def embedded(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; unless notitle || !has_header?; + ; _buf << ("".freeze); _buf << ((@header.title).to_s); + ; _buf << ("".freeze); end; _buf << ((content).to_s); + ; unless !footnotes? || attr?(:nofootnotes); + ; _buf << ("

".freeze); + ; + ; footnotes.each do |fn|; + ; _buf << ("
".freeze); _buf << ((fn.index).to_s); _buf << (". ".freeze); _buf << ((fn.text).to_s); + ; _buf << ("
".freeze); end; _buf << ("
".freeze); end; _buf + end + end + + def table(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; classes = ['tableblock', "frame-#{attr :frame, 'all'}", "grid-#{attr :grid, 'all'}", role, ('fragment' if (option? :step) || (attr? 'step'))]; + ; styles = [("width:#{attr :tablepcwidth}%" unless option? 'autowidth'), ("float:#{attr :float}" if attr? :float)].compact.join('; '); + ; _slim_controls1 = html_tag('table', { :id => @id, :class => classes, :style => styles }.merge(data_attrs(@attributes))) do; _slim_controls2 = ''; + ; if title?; + ; _slim_controls2 << ("".freeze); _slim_controls2 << ((captioned_title).to_s); + ; _slim_controls2 << ("".freeze); end; unless (attr :rowcount).zero?; + ; _slim_controls2 << ("".freeze); + ; if option? 'autowidth'; + ; @columns.each do; + ; _slim_controls2 << ("".freeze); + ; end; else; + ; @columns.each do |col|; + ; _slim_controls2 << ("".freeze); + ; end; end; _slim_controls2 << ("".freeze); [:head, :foot, :body].select {|tblsec| !@rows[tblsec].empty? }.each do |tblsec|; + ; + ; _slim_controls2 << ("".freeze); + ; @rows[tblsec].each do |row|; + ; _slim_controls2 << ("".freeze); + ; row.each do |cell|; + ; + ; if tblsec == :head; + ; cell_content = cell.text; + ; else; + ; case cell.style; + ; when :literal; + ; cell_content = cell.text; + ; else; + ; cell_content = cell.content; + ; end; end; _slim_controls3 = html_tag(tblsec == :head || cell.style == :header ? 'th' : 'td', + :class=>['tableblock', "halign-#{cell.attr :halign}", "valign-#{cell.attr :valign}"], + :colspan=>cell.colspan, :rowspan=>cell.rowspan, + :style=>((@document.attr? :cellbgcolor) ? %(background-color:#{@document.attr :cellbgcolor};) : nil)) do; _slim_controls4 = ''; + ; if tblsec == :head; + ; _slim_controls4 << ((cell_content).to_s); + ; else; + ; case cell.style; + ; when :asciidoc; + ; _slim_controls4 << ("
".freeze); _slim_controls4 << ((cell_content).to_s); + ; _slim_controls4 << ("
".freeze); when :literal; + ; _slim_controls4 << ("
".freeze); _slim_controls4 << ((cell_content).to_s); 
+      ; _slim_controls4 << ("
".freeze); when :header; + ; cell_content.each do |text|; + ; _slim_controls4 << ("

".freeze); _slim_controls4 << ((text).to_s); + ; _slim_controls4 << ("

".freeze); end; else; + ; cell_content.each do |text|; + ; _slim_controls4 << ("

".freeze); _slim_controls4 << ((text).to_s); + ; _slim_controls4 << ("

".freeze); end; end; end; _slim_controls4; end; _slim_controls2 << ((_slim_controls3).to_s); end; _slim_controls2 << ("".freeze); end; end; end; _slim_controls2; end; _buf << ((_slim_controls1).to_s); _buf + end + end + + def listing(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; nowrap = (option? 'nowrap') || !(document.attr? 'prewrap'); + ; if @style == 'source'; + ; syntax_hl = document.syntax_highlighter; + ; lang = attr :language; + ; if syntax_hl; + ; doc_attrs = document.attributes; + ; css_mode = (doc_attrs[%(#{syntax_hl.name}-css)] || :class).to_sym; + ; style = doc_attrs[%(#{syntax_hl.name}-style)]; + ; opts = syntax_hl.highlight? ? { css_mode: css_mode, style: style } : {}; + ; opts[:nowrap] = nowrap; + ; end; end; _slim_controls1 = html_tag('div', { :id => id, :class => ['listingblock', role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) do; _slim_controls2 = ''; + ; if title?; + ; _slim_controls2 << ("
".freeze); _slim_controls2 << ((captioned_title).to_s); + ; _slim_controls2 << ("
".freeze); end; _slim_controls2 << ("
".freeze); + ; if syntax_hl; + ; _slim_controls2 << (((syntax_hl.format self, lang, opts)).to_s); + ; else; + ; if @style == 'source'; + ; _slim_controls2 << ("".freeze); + ; _slim_controls2 << ((content || '').to_s); + ; _slim_controls2 << ("".freeze); else; + ; _slim_controls2 << ("".freeze); + ; _slim_controls2 << ((content || '').to_s); + ; _slim_controls2 << ("".freeze); end; end; _slim_controls2 << ("
".freeze); _slim_controls2; end; _buf << ((_slim_controls1).to_s); _buf + end + end + + def inline_callout(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; if @document.attr? :icons, 'font'; + ; _buf << ("".freeze); + ; _buf << (("(#{@text})").to_s); + ; _buf << ("".freeze); elsif @document.attr? :icons; + ; _buf << ("".freeze); + ; else; + ; _buf << ("".freeze); _buf << (("(#{@text})").to_s); + ; _buf << ("".freeze); end; _buf + end + end + + def inline_indexterm(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; if @type == :visible; + ; _buf << ((@text).to_s); + ; end; _buf + end + end + + def floating_title(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; _slim_htag_filter1 = ((level + 1)).to_s; _buf << ("".freeze); + ; _buf << ((title).to_s); + ; _buf << ("".freeze); _buf + end + end + + def inline_anchor(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; case @type; + ; when :xref; + ; refid = (attr :refid) || @target; + ; _slim_controls1 = html_tag('a', { :href => @target, :class => [role, ('fragment' if (option? :step) || (attr? 'step'))].compact }.merge(data_attrs(@attributes))) do; _slim_controls2 = ''; + ; _slim_controls2 << (((@text || @document.references[:ids].fetch(refid, "[#{refid}]")).tr_s("\n", ' ')).to_s); + ; _slim_controls2; end; _buf << ((_slim_controls1).to_s); when :ref; + ; _buf << ((html_tag('a', { :id => @target }.merge(data_attrs(@attributes)))).to_s); + ; when :bibref; + ; _buf << ((html_tag('a', { :id => @target }.merge(data_attrs(@attributes)))).to_s); + ; _buf << ("[".freeze); _buf << ((@target).to_s); _buf << ("]".freeze); + ; else; + ; _slim_controls3 = html_tag('a', { :href => @target, :class => [role, ('fragment' if (option? :step) || (attr? 'step'))].compact, :target => (attr :window), 'data-preview-link' => (bool_data_attr :preview) }.merge(data_attrs(@attributes))) do; _slim_controls4 = ''; + ; _slim_controls4 << ((@text).to_s); + ; _slim_controls4; end; _buf << ((_slim_controls3).to_s); end; _buf + end + end + + def inline_break(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; _buf << ((@text).to_s); + ; _buf << ("
".freeze); + ; _buf + end + end + + def paragraph(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; _slim_controls1 = html_tag('div', { :id => @id, :class => ['paragraph', role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) do; _slim_controls2 = ''; + ; if title?; + ; _slim_controls2 << ("
".freeze); _slim_controls2 << ((title).to_s); + ; _slim_controls2 << ("
".freeze); end; if has_role? 'small'; + ; _slim_controls2 << ("".freeze); _slim_controls2 << ((content).to_s); + ; _slim_controls2 << ("".freeze); else; + ; _slim_controls2 << ("

".freeze); _slim_controls2 << ((content).to_s); + ; _slim_controls2 << ("

".freeze); end; _slim_controls2; end; _buf << ((_slim_controls1).to_s); _buf + end + end + + def admonition(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; if (has_role? 'aside') or (has_role? 'speaker') or (has_role? 'notes'); + ; _buf << ("".freeze); + ; else; + ; _slim_controls1 = html_tag('div', { :id => @id, :class => ['admonitionblock', (attr :name), role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) do; _slim_controls2 = ''; + ; _slim_controls2 << ("
".freeze); + ; + ; if @document.attr? :icons, 'font'; + ; icon_mapping = Hash['caution', 'fire', 'important', 'exclamation-circle', 'note', 'info-circle', 'tip', 'lightbulb-o', 'warning', 'warning']; + ; _slim_controls2 << ("".freeze); + ; elsif @document.attr? :icons; + ; _slim_controls2 << ("".freeze); + ; else; + ; _slim_controls2 << ("
".freeze); _slim_controls2 << (((attr :textlabel) || @caption).to_s); + ; _slim_controls2 << ("
".freeze); end; _slim_controls2 << ("
".freeze); + ; if title?; + ; _slim_controls2 << ("
".freeze); _slim_controls2 << ((title).to_s); + ; _slim_controls2 << ("
".freeze); end; _slim_controls2 << ((content).to_s); + ; _slim_controls2 << ("
".freeze); _slim_controls2; end; _buf << ((_slim_controls1).to_s); end; _buf + end + end + + def image(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; width = (attr? :width) ? (attr :width) : nil; + ; height = (attr? :height) ? (attr :height) : nil; + ; + ; + ; + ; + ; + ; + ; if (has_role? 'stretch') && !((attr? :width) || (attr? :height)); + ; height = "100%"; + ; + ; end; unless attributes[1] == 'background' || attributes[1] == 'canvas'; + ; inline_style = [("text-align: #{attr :align}" if attr? :align),("float: #{attr :float}" if attr? :float)].compact.join('; '); + ; _slim_controls1 = html_tag('div', { :id => @id, :class => ['imageblock', role, ('fragment' if (option? :step) || (attr? 'step'))], :style => inline_style }.merge(data_attrs(@attributes))) do; _slim_controls2 = ''; + ; if attr? :link; + ; _slim_controls2 << ("".freeze); + ; else; + ; _slim_controls2 << ("".freeze); + ; end; _slim_controls2; end; _buf << ((_slim_controls1).to_s); if title?; + ; _buf << ("
".freeze); _buf << ((captioned_title).to_s); + ; _buf << ("
".freeze); end; end; _buf + end + end + + def preamble(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; + ; + ; _buf + end + end + + def section(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; + ; + ; titleless = (title = self.title) == '!'; + ; hide_title = (titleless || (option? :notitle) || (option? :conceal)); + ; + ; vertical_slides = find_by(context: :section) {|section| section.level == 2 }; + ; + ; + ; + ; data_background_image, data_background_size, data_background_repeat, + data_background_position, data_background_transition = nil; + ; + ; + ; section_images = blocks.map do |block|; + ; if (ctx = block.context) == :image; + ; ['background', 'canvas'].include?(block.attributes[1]) ? block : []; + ; elsif ctx == :section; + ; []; + ; else; + ; block.find_by(context: :image) {|image| ['background', 'canvas'].include?(image.attributes[1]) } || []; + ; end; end; if (bg_image = section_images.flatten.first); + ; data_background_image = image_uri(bg_image.attr 'target'); + ; + ; data_background_size = bg_image.attr 'size'; + ; data_background_repeat = bg_image.attr 'repeat'; + ; data_background_transition = bg_image.attr 'transition'; + ; data_background_position = bg_image.attr 'position'; + ; + ; + ; end; if attr? 'background-image'; + ; data_background_image = image_uri(attr 'background-image'); + ; + ; end; if attr? 'background-video'; + ; data_background_video = media_uri(attr 'background-video'); + ; + ; end; if attr? 'background-color'; + ; data_background_color = attr 'background-color'; + ; + ; end; parent_section_with_vertical_slides = @level == 1 && !vertical_slides.empty?; + ; + ; content_for :footnotes do; + ; slide_footnotes = slide_footnotes(self); + ; if document.footnotes? && !(parent.attr? 'nofootnotes') && !slide_footnotes.empty?; + ; _buf << ("
".freeze); + ; slide_footnotes.each do |footnote|; + ; _buf << ("
".freeze); + ; _buf << (("#{footnote.index}. #{footnote.text}").to_s); + ; + ; _buf << ("
".freeze); end; _buf << ("
".freeze); end; end; content_for :section do; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; + ; _buf << ("".freeze); + ; unless hide_title; + ; _buf << ("

".freeze); _buf << ((section_title).to_s); + ; _buf << ("

".freeze); end; if parent_section_with_vertical_slides; + ; unless (_blocks = blocks - vertical_slides).empty?; + ; _buf << ("
".freeze); + ; _blocks.each do |block|; + ; _buf << ((block.convert).to_s); + ; end; _buf << ("
".freeze); end; yield_content :footnotes; + ; + ; else; + ; unless (_content = content.chomp).empty?; + ; _buf << ("
".freeze); + ; _buf << ((_content).to_s); + ; _buf << ("
".freeze); end; yield_content :footnotes; + ; + ; end; clear_slide_footnotes; + ; + ; _buf << ("".freeze); + ; + ; end; if parent_section_with_vertical_slides; + ; _buf << ("
".freeze); + ; yield_content :section; + ; vertical_slides.each do |subsection|; + ; _buf << ((subsection.convert).to_s); + ; + ; end; _buf << ("
".freeze); + ; else; + ; if @level >= 3; + ; + ; _slim_htag_filter1 = ((@level)).to_s; _buf << ("".freeze); _buf << ((title).to_s); + ; _buf << ("".freeze); _buf << ((content.chomp).to_s); + ; else; + ; yield_content :section; + ; end; end; _buf + end + end + + def open(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; if @style == 'abstract'; + ; if @parent == @document && @document.doctype == 'book'; + ; puts 'asciidoctor: WARNING: abstract block cannot be used in a document without a title when doctype is book. Excluding block content.'; + ; else; + ; _slim_controls1 = html_tag('div', { :id => @id, :class => ['quoteblock', 'abstract', role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) do; _slim_controls2 = ''; + ; if title?; + ; _slim_controls2 << ("
".freeze); _slim_controls2 << ((title).to_s); + ; _slim_controls2 << ("
".freeze); end; _slim_controls2 << ("
".freeze); _slim_controls2 << ((content).to_s); + ; _slim_controls2 << ("
".freeze); _slim_controls2; end; _buf << ((_slim_controls1).to_s); end; elsif @style == 'partintro' && (@level != 0 || @parent.context != :section || @document.doctype != 'book'); + ; puts 'asciidoctor: ERROR: partintro block can only be used when doctype is book and it\'s a child of a book part. Excluding block content.'; + ; else; + ; if (has_role? 'aside') or (has_role? 'speaker') or (has_role? 'notes'); + ; _buf << ("".freeze); + ; else; + ; _slim_controls3 = html_tag('div', { :id => @id, :class => ['openblock', (@style != 'open' ? @style : nil), role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) do; _slim_controls4 = ''; + ; if title?; + ; _slim_controls4 << ("
".freeze); _slim_controls4 << ((title).to_s); + ; _slim_controls4 << ("
".freeze); end; _slim_controls4 << ("
".freeze); _slim_controls4 << ((content).to_s); + ; _slim_controls4 << ("
".freeze); _slim_controls4; end; _buf << ((_slim_controls3).to_s); end; end; _buf + end + end + + def inline_button(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; _slim_controls1 = html_tag('b', { :class => ['button'] }.merge(data_attrs(@attributes))) do; _slim_controls2 = ''; + ; _slim_controls2 << ((@text).to_s); + ; _slim_controls2; end; _buf << ((_slim_controls1).to_s); _buf + end + end + + def inline_image(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; _slim_controls1 = html_tag('span', { :class => [@type, role, ('fragment' if (option? :step) || (attr? 'step'))], :style => ("float: #{attr :float}" if attr? :float) }.merge(data_attrs(@attributes))) do; _slim_controls2 = ''; + ; if @type == 'icon' && (@document.attr? :icons, 'font'); + ; style_class = [(attr :set, 'fa'), "fa-#{@target}", ("fa-#{attr :size}" if attr? :size), ("fa-rotate-#{attr :rotate}" if attr? :rotate), ("fa-flip-#{attr :flip}" if attr? :flip)]; + ; if attr? :link; + ; _slim_controls2 << ("
".freeze); + ; else; + ; _slim_controls2 << ("
".freeze); + ; end; elsif @type == 'icon' && !(@document.attr? :icons); + ; if attr? :link; + ; _slim_controls2 << ("[".freeze); + ; _slim_controls2 << ((attr :alt).to_s); _slim_controls2 << ("]".freeze); + ; else; + ; _slim_controls2 << ("[".freeze); _slim_controls2 << ((attr :alt).to_s); _slim_controls2 << ("]".freeze); + ; end; else; + ; src = (@type == 'icon' ? (icon_uri @target) : (image_uri @target)); + ; if attr? :link; + ; _slim_controls2 << ("".freeze); + ; else; + ; _slim_controls2 << ("".freeze); + ; end; end; _slim_controls2; end; _buf << ((_slim_controls1).to_s); _buf + end + end + + def audio(node, opts = {}) + node.extend(Helpers) + node.instance_eval do + converter.set_local_variables(binding, opts) unless opts.empty? + _buf = ''; _slim_controls1 = html_tag('div', { :id => @id, :class => ['audioblock', @style, role] }.merge(data_attrs(@attributes))) do; _slim_controls2 = ''; + ; if title?; + ; _slim_controls2 << ("
".freeze); _slim_controls2 << ((captioned_title).to_s); + ; _slim_controls2 << ("
".freeze); end; _slim_controls2 << ("
Your browser does not support the audio tag.
".freeze); + ; + ; _slim_controls2; end; _buf << ((_slim_controls1).to_s); _buf + end + end + #------------------ End of generated transformation methods ------------------# + + def set_local_variables(binding, vars) + vars.each do |key, val| + binding.local_variable_set(key.to_sym, val) + end + end + +end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/lib/asciidoctor-revealjs/highlightjs.rb b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/lib/asciidoctor-revealjs/highlightjs.rb new file mode 100644 index 00000000..f866c8dc --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/lib/asciidoctor-revealjs/highlightjs.rb @@ -0,0 +1,372 @@ +# frozen_string_literal: true +module Asciidoctor + module Revealjs + module SyntaxHighlighter + # Override the built-in highlight.js syntax highlighter + class HighlightJsAdapter < Asciidoctor::SyntaxHighlighter::Base + register_for 'highlightjs', 'highlight.js' + + HIGHLIGHT_JS_VERSION = '9.18.1' + + def initialize *args + super + @name = @pre_class = 'highlightjs' + end + + # Convert between highlight notation formats + # In addition to Asciidoctor's linenum converter leveraging core's resolve_lines_to_highlight, + # we also support reveal.js step-by-step highlights. + # The steps are split using the | character + # For example, this method makes "1..3|6,7" into "1,2,3|6,7" + def _convert_highlight_to_revealjs node + return node.attributes["highlight"].split("|").collect { |linenums| + node.resolve_lines_to_highlight(node.content, linenums).join(",") + }.join("|") + end + + def format node, lang, opts + super node, lang, (opts.merge transform: proc { |_, code| + code['class'] = %(language-#{lang || 'none'} hljs) + code['data-noescape'] = true + + if node.attributes.key?("highlight") + code['data-line-numbers'] = self._convert_highlight_to_revealjs(node) + elsif node.attributes.key?("linenums") + code['data-line-numbers'] = '' + end + }) + end + + def docinfo? location + location == :footer + end + + def docinfo location, doc, opts + if RUBY_ENGINE == 'opal' && JAVASCRIPT_PLATFORM == 'node' + revealjsdir = (doc.attr :revealjsdir, 'node_modules/reveal.js') + else + revealjsdir = (doc.attr :revealjsdir, 'reveal.js') + end + if doc.attr? 'highlightjs-theme' + theme_href = doc.attr 'highlightjs-theme' + else + theme_href = "#{revealjsdir}/lib/css/monokai.css" + end + base_url = doc.attr 'highlightjsdir', %(#{opts[:cdn_base_url]}/highlight.js/#{HIGHLIGHT_JS_VERSION}) + %( + +#{(doc.attr? 'highlightjs-languages') ? ((doc.attr 'highlightjs-languages').split ',').map {|lang| %[\n] }.join : ''} +) + end + + # this file was copied-pasted from https://raw.githubusercontent.com/hakimel/reveal.js/3.9.2/plugin/highlight/highlight.js + # please note that the bundled highlight.js code was removed so we can use the latest version from cdnjs. + HIGHLIGHT_PLUGIN_SOURCE = %q{ +/* highlightjs-line-numbers.js 2.6.0 | (C) 2018 Yauheni Pakala | MIT License | github.com/wcoder/highlightjs-line-numbers.js */ +/* Edited by Hakim for reveal.js; removed async timeout */ +!function(n,e){"use strict";function t(){var n=e.createElement("style");n.type="text/css",n.innerHTML=g(".{0}{border-collapse:collapse}.{0} td{padding:0}.{1}:before{content:attr({2})}",[v,L,b]),e.getElementsByTagName("head")[0].appendChild(n)}function r(t){"interactive"===e.readyState||"complete"===e.readyState?i(t):n.addEventListener("DOMContentLoaded",function(){i(t)})}function i(t){try{var r=e.querySelectorAll("code.hljs,code.nohighlight");for(var i in r)r.hasOwnProperty(i)&&l(r[i],t)}catch(o){n.console.error("LineNumbers error: ",o)}}function l(n,e){"object"==typeof n&&f(function(){n.innerHTML=s(n,e)})}function o(n,e){if("string"==typeof n){var t=document.createElement("code");return t.innerHTML=n,s(t,e)}}function s(n,e){e=e||{singleLine:!1};var t=e.singleLine?0:1;return c(n),a(n.innerHTML,t)}function a(n,e){var t=u(n);if(""===t[t.length-1].trim()&&t.pop(),t.length>e){for(var r="",i=0,l=t.length;i
{6}
',[j,m,L,b,p,i+1,t[i].length>0?t[i]:" "]);return g('{1}
',[v,r])}return n}function c(n){var e=n.childNodes;for(var t in e)if(e.hasOwnProperty(t)){var r=e[t];h(r.textContent)>0&&(r.childNodes.length>0?c(r):d(r.parentNode))}}function d(n){var e=n.className;if(/hljs-/.test(e)){for(var t=u(n.innerHTML),r=0,i="";r0?t[r]:" ";i+=g('{1}\n',[e,l])}n.innerHTML=i.trim()}}function u(n){return 0===n.length?[]:n.split(y)}function h(n){return(n.trim().match(y)||[]).length}function f(e){e()}function g(n,e){return n.replace(/\{(\d+)\}/g,function(n,t){return e[t]?e[t]:n})}var v="hljs-ln",m="hljs-ln-line",p="hljs-ln-code",j="hljs-ln-numbers",L="hljs-ln-n",b="data-line-number",y=/\r\n|\r|\n/g;n.hljs?(n.hljs.initLineNumbersOnLoad=r,n.hljs.lineNumbersBlock=l,n.hljs.lineNumbersValue=o,t()):n.console.error("highlight.js not detected!")}(window,document); + +/** + * This reveal.js plugin is wrapper around the highlight.js + * syntax highlighting library. + */ +(function( root, factory ) { + if (typeof define === 'function' && define.amd) { + root.RevealHighlight = factory(); + } else if( typeof exports === 'object' ) { + module.exports = factory(); + } else { + // Browser globals (root is window) + root.RevealHighlight = factory(); + } +}( this, function() { + + // Function to perform a better "data-trim" on code snippets + // Will slice an indentation amount on each line of the snippet (amount based on the line having the lowest indentation length) + function betterTrim(snippetEl) { + // Helper functions + function trimLeft(val) { + // Adapted from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill + return val.replace(/^[\s\uFEFF\xA0]+/g, ''); + } + function trimLineBreaks(input) { + var lines = input.split('\n'); + + // Trim line-breaks from the beginning + for (var i = 0; i < lines.length; i++) { + if (lines[i].trim() === '') { + lines.splice(i--, 1); + } else break; + } + + // Trim line-breaks from the end + for (var i = lines.length-1; i >= 0; i--) { + if (lines[i].trim() === '') { + lines.splice(i, 1); + } else break; + } + + return lines.join('\n'); + } + + // Main function for betterTrim() + return (function(snippetEl) { + var content = trimLineBreaks(snippetEl.innerHTML); + var lines = content.split('\n'); + // Calculate the minimum amount to remove on each line start of the snippet (can be 0) + var pad = lines.reduce(function(acc, line) { + if (line.length > 0 && trimLeft(line).length > 0 && acc > line.length - trimLeft(line).length) { + return line.length - trimLeft(line).length; + } + return acc; + }, Number.POSITIVE_INFINITY); + // Slice each line with this amount + return lines.map(function(line, index) { + return line.slice(pad); + }) + .join('\n'); + })(snippetEl); + } + + var RevealHighlight = { + + HIGHLIGHT_STEP_DELIMITER: '|', + HIGHLIGHT_LINE_DELIMITER: ',', + HIGHLIGHT_LINE_RANGE_DELIMITER: '-', + + init: function() { + + // Read the plugin config options and provide fallbacks + var config = Reveal.getConfig().highlight || {}; + config.highlightOnLoad = typeof config.highlightOnLoad === 'boolean' ? config.highlightOnLoad : true; + config.escapeHTML = typeof config.escapeHTML === 'boolean' ? config.escapeHTML : true; + + [].slice.call( document.querySelectorAll( '.reveal pre code' ) ).forEach( function( block ) { + + // Trim whitespace if the "data-trim" attribute is present + if( block.hasAttribute( 'data-trim' ) && typeof block.innerHTML.trim === 'function' ) { + block.innerHTML = betterTrim( block ); + } + + // Escape HTML tags unless the "data-noescape" attrbute is present + if( config.escapeHTML && !block.hasAttribute( 'data-noescape' )) { + block.innerHTML = block.innerHTML.replace( //g, '>' ); + } + + // Re-highlight when focus is lost (for contenteditable code) + block.addEventListener( 'focusout', function( event ) { + hljs.highlightBlock( event.currentTarget ); + }, false ); + + if( config.highlightOnLoad ) { + RevealHighlight.highlightBlock( block ); + } + } ); + + }, + + /** + * Highlights a code block. If the node has the + * 'data-line-numbers' attribute we also generate slide + * numbers. + * + * If the block contains multiple line highlight steps, + * we clone the block and create a fragment for each step. + */ + highlightBlock: function( block ) { + + hljs.highlightBlock( block ); + + // Don't generate line numbers for empty code blocks + if( block.innerHTML.trim().length === 0 ) return; + + if( block.hasAttribute( 'data-line-numbers' ) ) { + hljs.lineNumbersBlock( block, { singleLine: true } ); + + // If there is at least one highlight step, generate + // fragments + var highlightSteps = RevealHighlight.deserializeHighlightSteps( block.getAttribute( 'data-line-numbers' ) ); + if( highlightSteps.length > 1 ) { + + // If the original code block has a fragment-index, + // each clone should follow in an incremental sequence + var fragmentIndex = parseInt( block.getAttribute( 'data-fragment-index' ), 10 ); + if( typeof fragmentIndex !== 'number' || isNaN( fragmentIndex ) ) { + fragmentIndex = null; + } + + // Generate fragments for all steps except the original block + highlightSteps.slice(1).forEach( function( highlight ) { + + var fragmentBlock = block.cloneNode( true ); + fragmentBlock.setAttribute( 'data-line-numbers', RevealHighlight.serializeHighlightSteps( [ highlight ] ) ); + fragmentBlock.classList.add( 'fragment' ); + block.parentNode.appendChild( fragmentBlock ); + RevealHighlight.highlightLines( fragmentBlock ); + + if( typeof fragmentIndex === 'number' ) { + fragmentBlock.setAttribute( 'data-fragment-index', fragmentIndex ); + fragmentIndex += 1; + } + else { + fragmentBlock.removeAttribute( 'data-fragment-index' ); + } + + } ); + + block.removeAttribute( 'data-fragment-index' ) + block.setAttribute( 'data-line-numbers', RevealHighlight.serializeHighlightSteps( [ highlightSteps[0] ] ) ); + + } + + RevealHighlight.highlightLines( block ); + + } + + }, + + /** + * Visually emphasize specific lines within a code block. + * This only works on blocks with line numbering turned on. + * + * @param {HTMLElement} block a block + * @param {String} [linesToHighlight] The lines that should be + * highlighted in this format: + * "1" = highlights line 1 + * "2,5" = highlights lines 2 & 5 + * "2,5-7" = highlights lines 2, 5, 6 & 7 + */ + highlightLines: function( block, linesToHighlight ) { + + var highlightSteps = RevealHighlight.deserializeHighlightSteps( linesToHighlight || block.getAttribute( 'data-line-numbers' ) ); + + if( highlightSteps.length ) { + + highlightSteps[0].forEach( function( highlight ) { + + var elementsToHighlight = []; + + // Highlight a range + if( typeof highlight.end === 'number' ) { + elementsToHighlight = [].slice.call( block.querySelectorAll( 'table tr:nth-child(n+'+highlight.start+'):nth-child(-n+'+highlight.end+')' ) ); + } + // Highlight a single line + else if( typeof highlight.start === 'number' ) { + elementsToHighlight = [].slice.call( block.querySelectorAll( 'table tr:nth-child('+highlight.start+')' ) ); + } + + if( elementsToHighlight.length ) { + elementsToHighlight.forEach( function( lineElement ) { + lineElement.classList.add( 'highlight-line' ); + } ); + + block.classList.add( 'has-highlights' ); + } + + } ); + + } + + }, + + /** + * Parses and formats a user-defined string of line + * numbers to highlight. + * + * @example + * RevealHighlight.deserializeHighlightSteps( '1,2|3,5-10' ) + * // [ + * // [ { start: 1 }, { start: 2 } ], + * // [ { start: 3 }, { start: 5, end: 10 } ] + * // ] + */ + deserializeHighlightSteps: function( highlightSteps ) { + + // Remove whitespace + highlightSteps = highlightSteps.replace( /\s/g, '' ); + + // Divide up our line number groups + highlightSteps = highlightSteps.split( RevealHighlight.HIGHLIGHT_STEP_DELIMITER ); + + return highlightSteps.map( function( highlights ) { + + return highlights.split( RevealHighlight.HIGHLIGHT_LINE_DELIMITER ).map( function( highlight ) { + + // Parse valid line numbers + if( /^[\d-]+$/.test( highlight ) ) { + + highlight = highlight.split( RevealHighlight.HIGHLIGHT_LINE_RANGE_DELIMITER ); + + var lineStart = parseInt( highlight[0], 10 ), + lineEnd = parseInt( highlight[1], 10 ); + + if( isNaN( lineEnd ) ) { + return { + start: lineStart + }; + } + else { + return { + start: lineStart, + end: lineEnd + }; + } + + } + // If no line numbers are provided, no code will be highlighted + else { + + return {}; + + } + + } ); + + } ); + + }, + + /** + * Serializes parsed line number data into a string so + * that we can store it in the DOM. + */ + serializeHighlightSteps: function( highlightSteps ) { + + return highlightSteps.map( function( highlights ) { + + return highlights.map( function( highlight ) { + + // Line range + if( typeof highlight.end === 'number' ) { + return highlight.start + RevealHighlight.HIGHLIGHT_LINE_RANGE_DELIMITER + highlight.end; + } + // Single line + else if( typeof highlight.start === 'number' ) { + return highlight.start; + } + // All lines + else { + return ''; + } + + } ).join( RevealHighlight.HIGHLIGHT_LINE_DELIMITER ); + + } ).join( RevealHighlight.HIGHLIGHT_STEP_DELIMITER ); + + } + + } + + Reveal.registerPlugin( 'highlight', RevealHighlight ); + + return RevealHighlight; + +})); + } + end + end + end +end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/lib/asciidoctor-revealjs/version.rb b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/lib/asciidoctor-revealjs/version.rb new file mode 100644 index 00000000..3367d04c --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/lib/asciidoctor-revealjs/version.rb @@ -0,0 +1,5 @@ +module Asciidoctor +module Revealjs + VERSION = '4.1.0' +end +end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/lib/asciidoctor-templates-compiler.rb b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/lib/asciidoctor-templates-compiler.rb new file mode 100644 index 00000000..ff76edbb --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/lib/asciidoctor-templates-compiler.rb @@ -0,0 +1,11 @@ +require 'asciidoctor-templates-compiler' + +module Asciidoctor::TemplatesCompiler + class RevealjsSlim < Asciidoctor::TemplatesCompiler::Slim + def engine_options + ::Asciidoctor::Converter::TemplateConverter::DEFAULT_ENGINE_OPTIONS[:slim].merge( + generator: Temple::Generators::ArrayBuffer.new(capture_generator: 'ArrayBuffer') + ) + end + end +end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/.jrubydir b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/.jrubydir new file mode 100644 index 00000000..ce3bf08a --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/.jrubydir @@ -0,0 +1,46 @@ +.. +. +admonition.html.slim +asciidoctor-compatibility.css +audio.html.slim +colist.html.slim +dlist.html.slim +document.html.slim +embedded.html.slim +example.html.slim +floating_title.html.slim +helpers.rb +image.html.slim +inline_anchor.html.slim +inline_break.html.slim +inline_button.html.slim +inline_callout.html.slim +inline_footnote.html.slim +inline_image.html.slim +inline_indexterm.html.slim +inline_kbd.html.slim +inline_menu.html.slim +inline_quoted.html.slim +listing.html.slim +literal.html.slim +notes.html.slim +olist.html.slim +open.html.slim +outline.html.slim +page_break.html.slim +paragraph.html.slim +pass.html.slim +preamble.html.slim +quote.html.slim +ruler.html.slim +section.html.slim +sidebar.html.slim +stem.html.slim +stretch_nested_elements.js.slim +table.html.slim +thematic_break.html.slim +title_slide.html.slim +toc.html.slim +ulist.html.slim +verse.html.slim +video.html.slim diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/admonition.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/admonition.html.slim new file mode 100644 index 00000000..5d77e99b --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/admonition.html.slim @@ -0,0 +1,17 @@ +- if (has_role? 'aside') or (has_role? 'speaker') or (has_role? 'notes') + include notes.html.slim +- else + = html_tag('div', { :id => @id, :class => ['admonitionblock', (attr :name), role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) + table: tr + td.icon + - if @document.attr? :icons, 'font' + - icon_mapping = Hash['caution', 'fire', 'important', 'exclamation-circle', 'note', 'info-circle', 'tip', 'lightbulb-o', 'warning', 'warning'] + i class=%(fa fa-#{icon_mapping[attr :name]}) title=(attr :textlabel || @caption) + - elsif @document.attr? :icons + img src=icon_uri(attr :name) alt=@caption + - else + .title=(attr :textlabel) || @caption + td.content + - if title? + .title=title + =content diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/asciidoctor-compatibility.css b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/asciidoctor-compatibility.css new file mode 100644 index 00000000..2942f800 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/asciidoctor-compatibility.css @@ -0,0 +1,390 @@ +.reveal div.right { + float: right +} + +/* listing block */ +.reveal .listingblock.stretch > .content { + height: 100% +} + +.reveal .listingblock.stretch > .content > pre { + height: 100% +} + +.reveal .listingblock.stretch > .content > pre > code { + height: 100%; + max-height: 100% +} + +/* tables */ +table { + border-collapse: collapse; + border-spacing: 0 +} + +table { + margin-bottom: 1.25em; + border: solid 1px #dedede +} + +table thead tr th, table thead tr td, table tfoot tr th, table tfoot tr td { + padding: .5em .625em .625em; + font-size: inherit; + text-align: left +} + +table tr th, table tr td { + padding: .5625em .625em; + font-size: inherit +} + +table thead tr th, table tfoot tr th, table tbody tr td, table tr td, table tfoot tr td { + display: table-cell; + line-height: 1.6 +} + +td.tableblock > .content { + margin-bottom: 1.25em +} + +td.tableblock > .content > :last-child { + margin-bottom: -1.25em +} + +table.tableblock, th.tableblock, td.tableblock { + border: 0 solid #dedede +} + +table.grid-all > thead > tr > .tableblock, table.grid-all > tbody > tr > .tableblock { + border-width: 0 1px 1px 0 +} + +table.grid-all > tfoot > tr > .tableblock { + border-width: 1px 1px 0 0 +} + +table.grid-cols > * > tr > .tableblock { + border-width: 0 1px 0 0 +} + +table.grid-rows > thead > tr > .tableblock, table.grid-rows > tbody > tr > .tableblock { + border-width: 0 0 1px +} + +table.grid-rows > tfoot > tr > .tableblock { + border-width: 1px 0 0 +} + +table.grid-all > * > tr > .tableblock:last-child, table.grid-cols > * > tr > .tableblock:last-child { + border-right-width: 0 +} + +table.grid-all > tbody > tr:last-child > .tableblock, table.grid-all > thead:last-child > tr > .tableblock, table.grid-rows > tbody > tr:last-child > .tableblock, table.grid-rows > thead:last-child > tr > .tableblock { + border-bottom-width: 0 +} + +table.frame-all { + border-width: 1px +} + +table.frame-sides { + border-width: 0 1px +} + +table.frame-topbot, table.frame-ends { + border-width: 1px 0 +} + +.reveal table th.halign-left, .reveal table td.halign-left { + text-align: left +} + +.reveal table th.halign-right, .reveal table td.halign-right { + text-align: right +} + +.reveal table th.halign-center, .reveal table td.halign-center { + text-align: center +} + +.reveal table th.valign-top, .reveal table td.valign-top { + vertical-align: top +} + +.reveal table th.valign-bottom, .reveal table td.valign-bottom { + vertical-align: bottom +} + +.reveal table th.valign-middle, .reveal table td.valign-middle { + vertical-align: middle +} + +table thead th, table tfoot th { + font-weight: bold +} + +tbody tr th { + display: table-cell; + line-height: 1.6 +} + +tbody tr th, tbody tr th p, tfoot tr th, tfoot tr th p { + font-weight: bold +} + +thead { + display: table-header-group +} + +.reveal table.grid-none th, .reveal table.grid-none td { + border-bottom: 0 !important +} + +/* kbd macro */ +kbd { + font-family: "Droid Sans Mono", "DejaVu Sans Mono", monospace; + display: inline-block; + color: rgba(0, 0, 0, .8); + font-size: .65em; + line-height: 1.45; + background: #f7f7f7; + border: 1px solid #ccc; + -webkit-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, .2), 0 0 0 .1em white inset; + box-shadow: 0 1px 0 rgba(0, 0, 0, .2), 0 0 0 .1em #fff inset; + margin: 0 .15em; + padding: .2em .5em; + vertical-align: middle; + position: relative; + top: -.1em; + white-space: nowrap +} + +.keyseq kbd:first-child { + margin-left: 0 +} + +.keyseq kbd:last-child { + margin-right: 0 +} + +/* callouts */ +.conum[data-value] { + display: inline-block; + color: #fff !important; + background: rgba(0, 0, 0, .8); + -webkit-border-radius: 50%; + border-radius: 50%; + text-align: center; + font-size: .75em; + width: 1.67em; + height: 1.67em; + line-height: 1.67em; + font-family: "Open Sans", "DejaVu Sans", sans-serif; + font-style: normal; + font-weight: bold +} + +.conum[data-value] * { + color: #fff !important +} + +.conum[data-value] + b { + display: none +} + +.conum[data-value]:after { + content: attr(data-value) +} + +pre .conum[data-value] { + position: relative; + top: -.125em +} + +b.conum * { + color: inherit !important +} + +.conum:not([data-value]):empty { + display: none +} + +/* Callout list */ +.hdlist > table, .colist > table { + border: 0; + background: none +} + +.hdlist > table > tbody > tr, .colist > table > tbody > tr { + background: none +} + +td.hdlist1, td.hdlist2 { + vertical-align: top; + padding: 0 .625em +} + +td.hdlist1 { + font-weight: bold; + padding-bottom: 1.25em +} + +/* Disabled from Asciidoctor CSS because it caused callout list to go under the + * source listing when .stretch is applied (see #335) + * .literalblock+.colist,.listingblock+.colist{margin-top:-.5em} */ +.colist td:not([class]):first-child { + padding: .4em .75em 0; + line-height: 1; + vertical-align: top +} + +.colist td:not([class]):first-child img { + max-width: none +} + +.colist td:not([class]):last-child { + padding: .25em 0 +} + +/* Override Asciidoctor CSS that causes issues with reveal.js features */ +.reveal .hljs table { + border: 0 +} + +/* Callout list rows would have a bottom border with some reveal.js themes (see #335) */ +.reveal .colist > table th, .reveal .colist > table td { + border-bottom: 0 +} + +/* Fixes line height with Highlight.js source listing when linenums enabled (see #331) */ +.reveal .hljs table thead tr th, .reveal .hljs table tfoot tr th, .reveal .hljs table tbody tr td, .reveal .hljs table tr td, .reveal .hljs table tfoot tr td { + line-height: inherit +} + +/* Columns layout */ +.columns .slide-content { + display: flex; +} + +.columns.wrap .slide-content { + flex-wrap: wrap; +} + +.columns.is-vcentered .slide-content { + align-items: center; +} + +.columns .slide-content > .column { + display: block; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 1; +} + +.columns .slide-content > .column > * { + padding: .75rem; +} + +/* See #353 */ +.columns.wrap .slide-content > .column { + flex-basis: auto; +} + +.columns .slide-content > .column.is-full { + flex: none; + width: 100%; +} + +.columns .slide-content > .column.is-four-fifths { + flex: none; + width: 80%; +} + +.columns .slide-content > .column.is-three-quarters { + flex: none; + width: 75%; +} + +.columns .slide-content > .column.is-two-thirds { + flex: none; + width: 66.6666%; +} + +.columns .slide-content > .column.is-three-fifths { + flex: none; + width: 60%; +} + +.columns .slide-content > .column.is-half { + flex: none; + width: 50%; +} + +.columns .slide-content > .column.is-two-fifths { + flex: none; + width: 40%; +} + +.columns .slide-content > .column.is-one-third { + flex: none; + width: 33.3333%; +} + +.columns .slide-content > .column.is-one-quarter { + flex: none; + width: 25%; +} + +.columns .slide-content > .column.is-one-fifth { + flex: none; + width: 20%; +} + +.columns .slide-content > .column.has-text-left { + text-align: left; +} + +.columns .slide-content > .column.has-text-justified { + text-align: justify; +} + +.columns .slide-content > .column.has-text-right { + text-align: right; +} + +.columns .slide-content > .column.has-text-left { + text-align: left; +} + +.columns .slide-content > .column.has-text-justified { + text-align: justify; +} + +.columns .slide-content > .column.has-text-right { + text-align: right; +} + +.text-left { + text-align: left !important +} + +.text-right { + text-align: right !important +} + +.text-center { + text-align: center !important +} + +.text-justify { + text-align: justify !important +} + +.footnotes { + border-top: 1px solid rgba(0, 0, 0, 0.2); + padding: 0.5em 0 0 0; + font-size: 0.65em; + margin-top: 4em; +} diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/audio.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/audio.html.slim new file mode 100644 index 00000000..98f8f8ff --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/audio.html.slim @@ -0,0 +1,6 @@ += html_tag('div', { :id => @id, :class => ['audioblock', @style, role] }.merge(data_attrs(@attributes))) + - if title? + .title=captioned_title + .content + audio src=media_uri(attr :target) autoplay=(option? 'autoplay') controls=!(option? 'nocontrols') loop=(option? 'loop') + |Your browser does not support the audio tag. diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/colist.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/colist.html.slim new file mode 100644 index 00000000..e920c8c9 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/colist.html.slim @@ -0,0 +1,20 @@ += html_tag('div', { :id => @id, :class => ['colist', @style, role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) + - if title? + .title=title + - if @document.attr? :icons + - font_icons = @document.attr? :icons, 'font' + table + - items.each_with_index do |item, i| + - num = i + 1 + tr + td + - if font_icons + i.conum data-value=num + b=num + - else + img src=icon_uri("callouts/#{num}") alt=num + td=item.text + - else + ol + - items.each do |item| + li: p=item.text diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/dlist.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/dlist.html.slim new file mode 100644 index 00000000..3c375794 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/dlist.html.slim @@ -0,0 +1,53 @@ +- case @style +- when 'qanda' + = html_tag('div', { :id => @id, :class => ['qlist', @style, role] }.merge(data_attrs(@attributes))) + - if title? + .title=title + ol + - items.each do |questions, answer| + li + - [*questions].each do |question| + p: em=question.text + - unless answer.nil? + - if answer.text? + p=answer.text + - if answer.blocks? + =answer.content +- when 'horizontal' + = html_tag('div', { :id => @id, :class => ['hdlist', role] }.merge(data_attrs(@attributes))) + - if title? + .title=title + table + - if (attr? :labelwidth) || (attr? :itemwidth) + colgroup + col style=((attr? :labelwidth) ? %(width:#{(attr :labelwidth).chomp '%'}%;) : nil) + col style=((attr? :itemwidth) ? %(width:#{(attr :itemwidth).chomp '%'}%;) : nil) + - items.each do |terms, dd| + tr + td class=['hdlist1',('strong' if option? 'strong')] + - terms = [*terms] + - last_term = terms.last + - terms.each do |dt| + =dt.text + - if dt != last_term + br + td.hdlist2 + - unless dd.nil? + - if dd.text? + p=dd.text + - if dd.blocks? + =dd.content +- else + = html_tag('div', { :id => @id, :class => ['dlist', @style, role] }.merge(data_attrs(@attributes))) + - if title? + .title=title + dl + - items.each do |terms, dd| + - [*terms].each do |dt| + dt class=('hdlist1' unless @style) =dt.text + - unless dd.nil? + dd + - if dd.text? + p=dd.text + - if dd.blocks? + =dd.content diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/document.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/document.html.slim new file mode 100644 index 00000000..dded70ee --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/document.html.slim @@ -0,0 +1,263 @@ +doctype 5 +html lang=(attr :lang, 'en' unless attr? :nolang) + head + meta charset="utf-8" + meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui" + + title=(doctitle sanitize: true, use_fallback: true) + + - if RUBY_ENGINE == 'opal' && JAVASCRIPT_PLATFORM == 'node' + - revealjsdir = (attr :revealjsdir, 'node_modules/reveal.js') + - else + - revealjsdir = (attr :revealjsdir, 'reveal.js') + - unless (asset_uri_scheme = (attr 'asset-uri-scheme', 'https')).empty? + - asset_uri_scheme = %(#{asset_uri_scheme}:) + - cdn_base = %(#{asset_uri_scheme}//cdnjs.cloudflare.com/ajax/libs) + - [:description, :keywords, :author, :copyright].each do |key| + - if attr? key + meta name=key content=(attr key) + - linkcss = (attr? 'linkcss') + link rel="stylesheet" href="#{revealjsdir}/css/reset.css" + link rel="stylesheet" href="#{revealjsdir}/css/reveal.css" + + / Default theme required even when using custom theme + link rel='stylesheet' href=(attr :revealjs_customtheme, %(#{revealjsdir}/css/theme/#{attr 'revealjs_theme', 'black'}.css)) id='theme' + /! This CSS is generated by the Asciidoctor reveal.js converter to further integrate AsciiDoc's existing semantic with reveal.js + style type="text/css" + include asciidoctor-compatibility.css + - if attr? :icons, 'font' + / iconfont-remote is implicitly set by Asciidoctor core. See https://github.com/asciidoctor/asciidoctor.org/issues/361 + - if attr? 'iconfont-remote' + - if (iconfont_cdn = (attr 'iconfont-cdn')) + link rel='stylesheet' href=iconfont_cdn + - else + / default icon font is Font Awesome + - font_awesome_version = (attr 'font-awesome-version', '5.15.1') + link rel='stylesheet' href=%(#{cdn_base}/font-awesome/#{font_awesome_version}/css/all.min.css) + link rel='stylesheet' href=%(#{cdn_base}/font-awesome/#{font_awesome_version}/css/v4-shims.min.css) + - else + link rel='stylesheet' href=(normalize_web_path %(#{attr 'iconfont-name', 'font-awesome'}.css), (attr 'stylesdir', ''), false) + - if attr? :stem + - eqnums_val = (attr 'eqnums', 'none') + - eqnums_val = 'AMS' if eqnums_val == '' + - eqnums_opt = %( equationNumbers: { autoNumber: "#{eqnums_val}" } ) + - mathjaxdir = (attr 'mathjaxdir', "#{cdn_base}/mathjax/2.7.6") + script type='text/x-mathjax-config' + | MathJax.Hub.Config({ + tex2jax: { + inlineMath: [#{Asciidoctor::INLINE_MATH_DELIMITERS[:latexmath].to_s}], + displayMath: [#{Asciidoctor::BLOCK_MATH_DELIMITERS[:latexmath].to_s}], + ignoreClass: "nostem|nolatexmath" + }, + asciimath2jax: { + delimiters: [#{Asciidoctor::BLOCK_MATH_DELIMITERS[:asciimath].to_s}], + ignoreClass: "nostem|noasciimath" + }, + TeX: {#{eqnums_opt}} + }); + script src='#{mathjaxdir}/MathJax.js?config=TeX-MML-AM_HTMLorMML' + + - syntax_hl = self.syntax_highlighter + - if syntax_hl && (syntax_hl.docinfo? :head) + =syntax_hl.docinfo :head, self, cdn_base_url: cdn_base, linkcss: linkcss, self_closing_tag_slash: '/' + + /! Printing and PDF exports + javascript: + var link = document.createElement( 'link' ); + link.rel = 'stylesheet'; + link.type = 'text/css'; + link.href = window.location.search.match( /print-pdf/gi ) ? "#{revealjsdir}/css/print/pdf.css" : "#{revealjsdir}/css/print/paper.css"; + document.getElementsByTagName( 'head' )[0].appendChild( link ); + + - if attr? :customcss + link rel='stylesheet' href=((customcss = attr :customcss).empty? ? 'asciidoctor-revealjs.css' : customcss) + - unless (_docinfo = docinfo :head, '-revealjs.html').empty? + =_docinfo + body + .reveal + / Any section element inside of this container is displayed as a slide + .slides + - unless noheader + - unless (_docinfo = docinfo :header, '-revealjs.html').empty? + = _docinfo + - if header? + include title_slide.html.slim + = content + - unless (_docinfo = docinfo :footer, '-revealjs.html').empty? + = _docinfo + script src="#{revealjsdir}/js/reveal.js" + / Supports easy AsciiDoc syntax for background color + javascript: + Array.prototype.slice.call(document.querySelectorAll('.slides section')).forEach(function(slide) { + if (slide.getAttribute('data-background-color')) return; + // user needs to explicitly say he wants CSS color to override otherwise we might break custom css or theme (#226) + if (!(slide.classList.contains('canvas') || slide.classList.contains('background'))) return; + var bgColor = getComputedStyle(slide).backgroundColor; + if (bgColor !== 'rgba(0, 0, 0, 0)' && bgColor !== 'transparent') { + slide.setAttribute('data-background-color', bgColor); + slide.style.backgroundColor = 'transparent'; + } + }); + + // More info about config & dependencies: + // - https://github.com/hakimel/reveal.js#configuration + // - https://github.com/hakimel/reveal.js#dependencies + Reveal.initialize({ + // Display presentation control arrows + controls: #{to_boolean(attr 'revealjs_controls', true)}, + // Help the user learn the controls by providing hints, for example by + // bouncing the down arrow when they first encounter a vertical slide + controlsTutorial: #{to_boolean(attr 'revealjs_controlstutorial', true)}, + // Determines where controls appear, "edges" or "bottom-right" + controlsLayout: '#{attr 'revealjs_controlslayout', 'bottom-right'}', + // Visibility rule for backwards navigation arrows; "faded", "hidden" + // or "visible" + controlsBackArrows: '#{attr 'revealjs_controlsbackarrows', 'faded'}', + // Display a presentation progress bar + progress: #{to_boolean(attr 'revealjs_progress', true)}, + // Display the page number of the current slide + slideNumber: #{to_valid_slidenumber(attr 'revealjs_slidenumber', false)}, + // Control which views the slide number displays on + showSlideNumber: '#{attr 'revealjs_showslidenumber', 'all'}', + // Add the current slide number to the URL hash so that reloading the + // page/copying the URL will return you to the same slide + hash: #{to_boolean(attr 'revealjs_hash', false)}, + // Push each slide change to the browser history. Implies `hash: true` + history: #{to_boolean(attr 'revealjs_history', false)}, + // Enable keyboard shortcuts for navigation + keyboard: #{to_boolean(attr 'revealjs_keyboard', true)}, + // Enable the slide overview mode + overview: #{to_boolean(attr 'revealjs_overview', true)}, + // Disables the default reveal.js slide layout so that you can use custom CSS layout + disableLayout: #{to_boolean(attr 'revealjs_disablelayout', false)}, + // Vertical centering of slides + center: #{to_boolean(attr 'revealjs_center', true)}, + // Enables touch navigation on devices with touch input + touch: #{to_boolean(attr 'revealjs_touch', true)}, + // Loop the presentation + loop: #{to_boolean(attr 'revealjs_loop', false)}, + // Change the presentation direction to be RTL + rtl: #{to_boolean(attr 'revealjs_rtl', false)}, + // See https://github.com/hakimel/reveal.js/#navigation-mode + navigationMode: '#{attr 'revealjs_navigationmode', 'default'}', + // Randomizes the order of slides each time the presentation loads + shuffle: #{to_boolean(attr 'revealjs_shuffle', false)}, + // Turns fragments on and off globally + fragments: #{to_boolean(attr 'revealjs_fragments', true)}, + // Flags whether to include the current fragment in the URL, + // so that reloading brings you to the same fragment position + fragmentInURL: #{to_boolean(attr 'revealjs_fragmentinurl', false)}, + // Flags if the presentation is running in an embedded mode, + // i.e. contained within a limited portion of the screen + embedded: #{to_boolean(attr 'revealjs_embedded', false)}, + // Flags if we should show a help overlay when the questionmark + // key is pressed + help: #{to_boolean(attr 'revealjs_help', true)}, + // Flags if speaker notes should be visible to all viewers + showNotes: #{to_boolean(attr 'revealjs_shownotes', false)}, + // Global override for autolaying embedded media (video/audio/iframe) + // - null: Media will only autoplay if data-autoplay is present + // - true: All media will autoplay, regardless of individual setting + // - false: No media will autoplay, regardless of individual setting + autoPlayMedia: #{attr 'revealjs_autoplaymedia', 'null'}, + // Global override for preloading lazy-loaded iframes + // - null: Iframes with data-src AND data-preload will be loaded when within + // the viewDistance, iframes with only data-src will be loaded when visible + // - true: All iframes with data-src will be loaded when within the viewDistance + // - false: All iframes with data-src will be loaded only when visible + preloadIframes: #{attr 'revealjs_preloadiframes', 'null'}, + // Number of milliseconds between automatically proceeding to the + // next slide, disabled when set to 0, this value can be overwritten + // by using a data-autoslide attribute on your slides + autoSlide: #{attr 'revealjs_autoslide', 0}, + // Stop auto-sliding after user input + autoSlideStoppable: #{to_boolean(attr 'revealjs_autoslidestoppable', true)}, + // Use this method for navigation when auto-sliding + autoSlideMethod: #{attr 'revealjs_autoslidemethod', 'Reveal.navigateNext'}, + // Specify the average time in seconds that you think you will spend + // presenting each slide. This is used to show a pacing timer in the + // speaker view + defaultTiming: #{attr 'revealjs_defaulttiming', 120}, + // Specify the total time in seconds that is available to + // present. If this is set to a nonzero value, the pacing + // timer will work out the time available for each slide, + // instead of using the defaultTiming value + totalTime: #{attr 'revealjs_totaltime', 0}, + // Specify the minimum amount of time you want to allot to + // each slide, if using the totalTime calculation method. If + // the automated time allocation causes slide pacing to fall + // below this threshold, then you will see an alert in the + // speaker notes window + minimumTimePerSlide: #{attr 'revealjs_minimumtimeperslide', 0}, + // Enable slide navigation via mouse wheel + mouseWheel: #{to_boolean(attr 'revealjs_mousewheel', false)}, + // Hide cursor if inactive + hideInactiveCursor: #{to_boolean(attr 'revealjs_hideinactivecursor', true)}, + // Time before the cursor is hidden (in ms) + hideCursorTime: #{attr 'revealjs_hidecursortime', 5000}, + // Hides the address bar on mobile devices + hideAddressBar: #{to_boolean(attr 'revealjs_hideaddressbar', true)}, + // Opens links in an iframe preview overlay + // Add `data-preview-link` and `data-preview-link="false"` to customise each link + // individually + previewLinks: #{to_boolean(attr 'revealjs_previewlinks', false)}, + // Transition style (e.g., none, fade, slide, convex, concave, zoom) + transition: '#{attr 'revealjs_transition', 'slide'}', + // Transition speed (e.g., default, fast, slow) + transitionSpeed: '#{attr 'revealjs_transitionspeed', 'default'}', + // Transition style for full page slide backgrounds (e.g., none, fade, slide, convex, concave, zoom) + backgroundTransition: '#{attr 'revealjs_backgroundtransition', 'fade'}', + // Number of slides away from the current that are visible + viewDistance: #{attr 'revealjs_viewdistance', 3}, + // Number of slides away from the current that are visible on mobile + // devices. It is advisable to set this to a lower number than + // viewDistance in order to save resources. + mobileViewDistance: #{attr 'revealjs_mobileviewdistance', 3}, + // Parallax background image (e.g., "'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg'") + parallaxBackgroundImage: '#{attr 'revealjs_parallaxbackgroundimage', ''}', + // Parallax background size in CSS syntax (e.g., "2100px 900px") + parallaxBackgroundSize: '#{attr 'revealjs_parallaxbackgroundsize', ''}', + // Number of pixels to move the parallax background per slide + // - Calculated automatically unless specified + // - Set to 0 to disable movement along an axis + parallaxBackgroundHorizontal: #{attr 'revealjs_parallaxbackgroundhorizontal', 'null'}, + parallaxBackgroundVertical: #{attr 'revealjs_parallaxbackgroundvertical', 'null'}, + // The display mode that will be used to show slides + display: '#{attr 'revealjs_display', 'block'}', + + // The "normal" size of the presentation, aspect ratio will be preserved + // when the presentation is scaled to fit different resolutions. Can be + // specified using percentage units. + width: #{attr 'revealjs_width', 960}, + height: #{attr 'revealjs_height', 700}, + + // Factor of the display size that should remain empty around the content + margin: #{attr 'revealjs_margin', 0.1}, + + // Bounds for smallest/largest possible scale to apply to content + minScale: #{attr 'revealjs_minscale', 0.2}, + maxScale: #{attr 'revealjs_maxscale', 1.5}, + + // PDF Export Options + // Put each fragment on a separate page + pdfSeparateFragments: #{to_boolean(attr 'revealjs_pdfseparatefragments', true)}, + // For slides that do not fit on a page, max number of pages + pdfMaxPagesPerSlide: #{attr 'revealjs_pdfmaxpagesperslide', 1}, + + // Optional libraries used to extend on reveal.js + dependencies: [ + #{revealjs_dependencies(document, self, revealjsdir)} + ], + + #{(attr? 'revealjs_plugins_configuration') ? File.read(attr('revealjs_plugins_configuration', '')) : ""} + + }); + / Workaround the "Only direct descendants of a slide section can be stretched" limitation in reveal.js + / https://github.com/hakimel/reveal.js/issues/2584 + include stretch_nested_elements.js.slim + + - if syntax_hl && (syntax_hl.docinfo? :footer) + =syntax_hl.docinfo :footer, self, cdn_base_url: cdn_base, linkcss: linkcss, self_closing_tag_slash: '/' + + - unless (docinfo_content = (docinfo :footer, '.html')).empty? + =docinfo_content diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/embedded.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/embedded.html.slim new file mode 100644 index 00000000..0594a40e --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/embedded.html.slim @@ -0,0 +1,9 @@ +- unless notitle || !has_header? + h1 id=@id =@header.title +=content +- unless !footnotes? || attr?(:nofootnotes) + #footnotes + hr + - footnotes.each do |fn| + .footnote id='_footnote_#{fn.index}' + #{fn.index}. #{fn.text} diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/example.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/example.html.slim new file mode 100644 index 00000000..870210a1 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/example.html.slim @@ -0,0 +1,4 @@ += html_tag('div', { :id => @id, :class => ['exampleblock', role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) + - if title? + .title=captioned_title + .content=content diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/floating_title.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/floating_title.html.slim new file mode 100644 index 00000000..0728e3b2 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/floating_title.html.slim @@ -0,0 +1,2 @@ +h level=(level + 1) id=id class=[style, role] + =title diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/helpers.rb b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/helpers.rb new file mode 100644 index 00000000..43370902 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/helpers.rb @@ -0,0 +1,287 @@ +unless RUBY_ENGINE == 'opal' + # This helper file borrows from the Bespoke converter + # https://github.com/asciidoctor/asciidoctor-bespoke + require 'asciidoctor' +end + +# This module gets mixed in to every node (the context of the template) at the +# time the node is being converted. The properties and methods in this module +# effectively become direct members of the template. +module Slim::Helpers + + EOL = %(\n) + SliceHintRx = / +/ + + def slice_text str, active = nil + if (active || (active.nil? && (option? :slice))) && (str.include? ' ') + (str.split SliceHintRx).map {|line| %(#{line}) }.join EOL + else + str + end + end + + def to_boolean val + val && val != 'false' && val.to_s != '0' || false + end + + # bool_data_attr + # If the AsciiDoc attribute doesn't exist, no HTML attribute is added + # If the AsciiDoc attribute exist and is a true value, HTML attribute is enabled (bool) + # If the AsciiDoc attribute exist and is a false value, HTML attribute is a false string + # Ex: a feature is enabled globally but can be disabled using a data- attribute on individual items + # :revealjs_previewlinks: True + # then link::example.com[Link text, preview=false] + # Here the template must have data-preview-link="false" not just no data-preview-link attribute + def bool_data_attr val + return false unless attr?(val) + if attr(val).downcase == 'false' || attr(val) == '0' + 'false' + else + true + end + end + + # false needs to be verbatim everything else is a string. + # Calling side isn't responsible for quoting so we are doing it here + def to_valid_slidenumber val + # corner case: empty is empty attribute which is true + return true if val == "" + # using to_s here handles both the 'false' string and the false boolean + val.to_s == 'false' ? false : "'#{val}'" + end + + ## + # These constants and functions are from the asciidictor-html5s project + # https://github.com/jirutka/asciidoctor-html5s/blob/a71db48a1dd5196b668b3a3d93693c5d877c5bf3/data/templates/helpers.rb + + # Defaults + DEFAULT_TOCLEVELS = 2 + DEFAULT_SECTNUMLEVELS = 3 + + + VOID_ELEMENTS = %w(area base br col command embed hr img input keygen link + meta param source track wbr) + + ## + # Creates an HTML tag with the given name and optionally attributes. Can take + # a block that will run between the opening and closing tags. + # + # @param name [#to_s] the name of the tag. + # @param attributes [Hash] (default: {}) + # @param content [#to_s] the content; +nil+ to call the block. (default: nil). + # @yield The block of Slim/HTML code within the tag (optional). + # @return [String] a rendered HTML element. + # + def html_tag(name, attributes = {}, content = nil) + attrs = attributes.inject([]) do |attrs, (k, v)| + next attrs unless v && (v == true || !v.nil_or_empty?) + v = v.compact.join(' ') if v.is_a? Array + attrs << (v == true ? k : %(#{k}="#{v}")) + end + attrs_str = attrs.empty? ? '' : ' ' + attrs.join(' ') + + if VOID_ELEMENTS.include? name.to_s + %(<#{name}#{attrs_str}>) + else + content ||= (yield if block_given?) + %(<#{name}#{attrs_str}>#{content}) + end + end + + + # + # Extracts data- attributes from the attributes. + # @param attributes [Hash] (default: {}) + # @return [Hash] a Hash that contains only data- attributes + # + def data_attrs(attributes) + # key can be an Integer (for positional attributes) + attributes.map { |key, value| (key == 'step') ? ['data-fragment-index', value] : [key, value] } + .to_h + .select { |key, _| key.to_s.start_with?('data-') } + end + + + # + # Wrap an inline text in a element if the node contains a role, an id or data- attributes. + # @param content [#to_s] the content; +nil+ to call the block. (default: nil). + # @return [String] the content or the content wrapped in a element as string + # + def inline_text_container(content = nil) + data_attrs = data_attrs(@attributes) + classes = [role, ('fragment' if (option? :step) || (attr? 'step') || (roles.include? 'step'))].compact + if !roles.empty? || !data_attrs.empty? || !@id.nil? + html_tag('span', { :id => @id, :class => classes }.merge(data_attrs), (content || (yield if block_given?))) + else + content || (yield if block_given?) + end + end + + + ## + # Returns corrected section level. + # + # @param sec [Asciidoctor::Section] the section node (default: self). + # @return [Integer] + # + def section_level(sec = self) + @_section_level ||= (sec.level == 0 && sec.special) ? 1 : sec.level + end + + ## + # Display footnotes per slide + # + @@slide_footnotes = {} + @@section_footnotes = {} + + def slide_footnote(footnote) + footnote_parent = footnote.parent + # footnotes declared on the section title are processed during the parsing/substitution. + # as a result, we need to store them to display them on the right slide/section + if footnote_parent.instance_of?(::Asciidoctor::Section) + footnote_parent_object_id = footnote_parent.object_id + section_footnotes = (@@section_footnotes[footnote_parent_object_id] || []) + footnote_index = section_footnotes.length + 1 + attributes = footnote.attributes.merge({ 'index' => footnote_index }) + inline_footnote = Asciidoctor::Inline.new(footnote_parent, footnote.context, footnote.text, :attributes => attributes) + section_footnotes << Asciidoctor::Document::Footnote.new(inline_footnote.attr(:index), inline_footnote.id, inline_footnote.text) + @@section_footnotes[footnote_parent_object_id] = section_footnotes + inline_footnote + else + parent = footnote.parent + until parent == nil || parent.instance_of?(::Asciidoctor::Section) + parent = parent.parent + end + # check if there is any footnote attached on the section title + section_footnotes = parent != nil ? @@section_footnotes[parent.object_id] || [] : [] + initial_index = footnote.attr(:index) + # reset the footnote numbering to 1 on each slide + # make sure that if a footnote is used more than once it will use the same index/number + slide_index = (existing_footnote = @@slide_footnotes[initial_index]) ? existing_footnote.index : @@slide_footnotes.length + section_footnotes.length + 1 + attributes = footnote.attributes.merge({ 'index' => slide_index }) + inline_footnote = Asciidoctor::Inline.new(footnote_parent, footnote.context, footnote.text, :attributes => attributes) + @@slide_footnotes[initial_index] = Asciidoctor::Document::Footnote.new(inline_footnote.attr(:index), inline_footnote.id, inline_footnote.text) + inline_footnote + end + end + + def clear_slide_footnotes + @@slide_footnotes = {} + end + + def slide_footnotes(section) + section_object_id = section.object_id + section_footnotes = @@section_footnotes[section_object_id] || [] + section_footnotes + @@slide_footnotes.values + end + + ## + # Returns the captioned section's title, optionally numbered. + # + # @param sec [Asciidoctor::Section] the section node (default: self). + # @return [String] + # + def section_title(sec = self) + sectnumlevels = document.attr(:sectnumlevels, DEFAULT_SECTNUMLEVELS).to_i + + if sec.numbered && !sec.caption && sec.level <= sectnumlevels + [sec.sectnum, sec.captioned_title].join(' ') + else + sec.captioned_title + end + end + + def revealjs_dependencies(document, node, revealjsdir) + dependencies = [] + dependencies << "{ src: '#{revealjsdir}/plugin/zoom-js/zoom.js', async: true }" unless (node.attr? 'revealjs_plugin_zoom', 'disabled') + dependencies << "{ src: '#{revealjsdir}/plugin/notes/notes.js', async: true }" unless (node.attr? 'revealjs_plugin_notes', 'disabled') + dependencies << "{ src: '#{revealjsdir}/plugin/markdown/marked.js', async: true }" if (node.attr? 'revealjs_plugin_marked', 'enabled') + dependencies << "{ src: '#{revealjsdir}/plugin/markdown/markdown.js', async: true }" if (node.attr? 'revealjs_plugin_markdown', 'enabled') + if (node.attr? 'revealjs_plugins') && + !(revealjs_plugins_file = (node.attr 'revealjs_plugins', '').strip).empty? && + !(revealjs_plugins_content = (File.read revealjs_plugins_file).strip).empty? + dependencies << revealjs_plugins_content + end + dependencies.join(",\n ") + end + + + # Between delimiters (--) is code taken from asciidoctor-bespoke 1.0.0.alpha.1 + # Licensed under MIT, Copyright (C) 2015-2016 Dan Allen and the Asciidoctor Project + #-- + # Retrieve the converted content, wrap it in a `

` element if + # the content_model equals :simple and return the result. + # + # Returns the block content as a String, wrapped inside a `

` element if + # the content_model equals `:simple`. + def resolve_content + @content_model == :simple ? %(

#{content}

) : content + end + + # Capture nested template content and register it with the specified key, to + # be executed at a later time. + # + # This method must be invoked using the control code directive (i.e., -). By + # using a control code directive, the block is set up to append the result + # directly to the output buffer. (Integrations often hide the distinction + # between a control code directive and an output directive in this context). + # + # key - The Symbol under which to save the template block. + # opts - A Hash of options to control processing (default: {}): + # * :append - A Boolean that indicates whether to append this block + # to others registered with this key (default: false). + # * :content - String content to be used if template content is not + # provided (optional). + # block - The template content (in Slim template syntax). + # + # Examples + # + # - content_for :body + # p content + # - content_for :body, append: true + # p more content + # + # Returns nothing. + def content_for key, opts = {}, &block + @content = {} unless defined? @content + (opts[:append] ? (@content[key] ||= []) : (@content[key] = [])) << (block_given? ? block : lambda { opts[:content] }) + nil + end + + # Checks whether deferred template content has been registered for the specified key. + # + # key - The Symbol under which to look for saved template blocks. + # + # Returns a Boolean indicating whether content has been registered for this key. + def content_for? key + (defined? @content) && (@content.key? key) + end + + # Evaluates the deferred template content registered with the specified key. + # + # When the corresponding content_for method is invoked using a control code + # directive, the block is set up to append the result to the output buffer + # directly. + # + # key - The Symbol under which to look for template blocks to yield. + # opts - A Hash of options to control processing (default: {}): + # * :drain - A Boolean indicating whether to drain the key of blocks + # after calling them (default: true). + # + # Examples + # + # - yield_content :body + # + # Returns nothing (assuming the content has been captured in the context of control code). + def yield_content key, opts = {} + if (defined? @content) && (blks = (opts.fetch :drain, true) ? (@content.delete key) : @content[key]) + blks.map {|b| b.call }.join + end + nil + end + #-- +end + +# More custom functions can be added in another namespace if required +#module Helpers +#end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/image.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/image.html.slim new file mode 100644 index 00000000..4f47126a --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/image.html.slim @@ -0,0 +1,21 @@ +- width = (attr? :width) ? (attr :width) : nil +- height = (attr? :height) ? (attr :height) : nil + +/ When the stretch class is present, block images will take the most space +/ they can take. Setting width and height can override that. +/ We pinned the 100% to height to avoid aspect ratio breakage and since +/ widescreen monitors are the most popular, chances are that height will +/ be the biggest constraint +- if (has_role? 'stretch') && !((attr? :width) || (attr? :height)) + - height = "100%" + +- unless attributes[1] == 'background' || attributes[1] == 'canvas' + - inline_style = [("text-align: #{attr :align}" if attr? :align),("float: #{attr :float}" if attr? :float)].compact.join('; ') + = html_tag('div', { :id => @id, :class => ['imageblock', role, ('fragment' if (option? :step) || (attr? 'step'))], :style => inline_style }.merge(data_attrs(@attributes))) + - if attr? :link + a.image href=(attr :link) target=(attr :window) data-preview-link=(bool_data_attr :link_preview) + img src=image_uri(attr :target) alt=(attr :alt) width=(width) height=(height) style=((attr? :background) ? "background: #{attr :background}" : nil) + - else + img src=image_uri(attr :target) alt=(attr :alt) width=(width) height=(height) style=((attr? :background) ? "background: #{attr :background}" : nil) + - if title? + .title=captioned_title diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_anchor.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_anchor.html.slim new file mode 100644 index 00000000..23507561 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_anchor.html.slim @@ -0,0 +1,13 @@ +- case @type +- when :xref + - refid = (attr :refid) || @target + = html_tag('a', { :href => @target, :class => [role, ('fragment' if (option? :step) || (attr? 'step'))].compact }.merge(data_attrs(@attributes))) + =(@text || @document.references[:ids].fetch(refid, "[#{refid}]")).tr_s("\n", ' ') +- when :ref + = html_tag('a', { :id => @target }.merge(data_attrs(@attributes))) +- when :bibref + = html_tag('a', { :id => @target }.merge(data_attrs(@attributes))) + |[#{@target}] +- else + = html_tag('a', { :href => @target, :class => [role, ('fragment' if (option? :step) || (attr? 'step'))].compact, :target => (attr :window), 'data-preview-link' => (bool_data_attr :preview) }.merge(data_attrs(@attributes))) + =@text diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_break.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_break.html.slim new file mode 100644 index 00000000..dc4c215e --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_break.html.slim @@ -0,0 +1,2 @@ +=@text +br diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_button.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_button.html.slim new file mode 100644 index 00000000..d43adf1a --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_button.html.slim @@ -0,0 +1,2 @@ += html_tag('b', { :class => ['button'] }.merge(data_attrs(@attributes))) + = @text diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_callout.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_callout.html.slim new file mode 100644 index 00000000..452c19d8 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_callout.html.slim @@ -0,0 +1,7 @@ +- if @document.attr? :icons, 'font' + i.conum data-value=@text + b="(#{@text})" +- elsif @document.attr? :icons + img src=icon_uri("callouts/#{@text}") alt=@text +- else + b="(#{@text})" diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_footnote.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_footnote.html.slim new file mode 100644 index 00000000..a9e6b008 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_footnote.html.slim @@ -0,0 +1,13 @@ +- footnote = slide_footnote(self) +- index = footnote.attr(:index) +- id = footnote.id +- if @type == :xref + = html_tag('sup', { :class => ['footnoteref'] }.merge(data_attrs(footnote.attributes))) + | [ + span(class="footnote" title="View footnote.") = index + | ] +- else + = html_tag('sup', { :id => ("_footnote_#{id}" if id), :class => ['footnote'] }.merge(data_attrs(footnote.attributes))) + | [ + span(class="footnote" title="View footnote.") = index + | ] diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_image.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_image.html.slim new file mode 100644 index 00000000..dea0e799 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_image.html.slim @@ -0,0 +1,21 @@ += html_tag('span', { :class => [@type, role, ('fragment' if (option? :step) || (attr? 'step'))], :style => ("float: #{attr :float}" if attr? :float) }.merge(data_attrs(@attributes))) + - if @type == 'icon' && (@document.attr? :icons, 'font') + - style_class = [(attr :set, 'fa'), "fa-#{@target}", ("fa-#{attr :size}" if attr? :size), ("fa-rotate-#{attr :rotate}" if attr? :rotate), ("fa-flip-#{attr :flip}" if attr? :flip)] + - if attr? :link + a.image href=(attr :link) target=(attr :window) data-preview-link=(bool_data_attr :link_preview) + i class=style_class title=(attr :title) + - else + i class=style_class title=(attr :title) + - elsif @type == 'icon' && !(@document.attr? :icons) + - if attr? :link + a.image href=(attr :link) target=(attr :window) data-preview-link=(bool_data_attr :link_preview) + |[#{attr :alt}] + - else + |[#{attr :alt}] + - else + - src = (@type == 'icon' ? (icon_uri @target) : (image_uri @target)) + - if attr? :link + a.image href=(attr :link) target=(attr :window) data-preview-link=(bool_data_attr :link_preview) + img src=src alt=(attr :alt) width=(attr :width) height=(attr :height) title=(attr :title) + - else + img src=src alt=(attr :alt) width=(attr :width) height=(attr :height) title=(attr :title) diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_indexterm.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_indexterm.html.slim new file mode 100644 index 00000000..7ad91063 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_indexterm.html.slim @@ -0,0 +1,2 @@ +- if @type == :visible + =@text diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_kbd.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_kbd.html.slim new file mode 100644 index 00000000..989ac996 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_kbd.html.slim @@ -0,0 +1,9 @@ +- if (keys = attr 'keys').size == 1 + = html_tag('kbd', data_attrs(@attributes)) + = keys.first +- else + = html_tag('span', { :class => ['keyseq'] }.merge(data_attrs(@attributes))) + - keys.each_with_index do |key, idx| + - unless idx.zero? + |+ + kbd=key diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_menu.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_menu.html.slim new file mode 100644 index 00000000..c8eddfb2 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_menu.html.slim @@ -0,0 +1,16 @@ +- menu = attr 'menu' +- menuitem = attr 'menuitem' +- if !(submenus = attr 'submenus').empty? + = html_tag('span', { :class => ['menuseq'] }.merge(data_attrs(@attributes))) + span.menu=menu + | ▸ + =submenus.map {|submenu| %(#{submenu} ▸ ) }.join + span.menuitem=menuitem +- elsif !menuitem.nil? + = html_tag('span', { :class => ['menuseq'] }.merge(data_attrs(@attributes))) + span.menu=menu + | ▸ + span.menuitem=menuitem +- else + = html_tag('span', { :class => ['menu'] }.merge(data_attrs(@attributes))) + = menu diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_quoted.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_quoted.html.slim new file mode 100644 index 00000000..521255e7 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/inline_quoted.html.slim @@ -0,0 +1,14 @@ +- quote_tags = { emphasis: 'em', strong: 'strong', monospaced: 'code', superscript: 'sup', subscript: 'sup' } +- if (quote_tag = quote_tags[@type]) + = html_tag(quote_tag, { :id => @id, :class => [role, ('fragment' if (option? :step) || (attr? 'step'))].compact }.merge(data_attrs(@attributes)), @text) +- else + - case @type + - when :double + - inline_text_container("“#{@text}”") + - when :single + = inline_text_container("‘#{@text}’") + - when :asciimath, :latexmath + - open, close = Asciidoctor::INLINE_MATH_DELIMITERS[@type] + = inline_text_container("#{open}#{@text}#{close}") + - else + = inline_text_container(@text) diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/listing.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/listing.html.slim new file mode 100644 index 00000000..6c2209bd --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/listing.html.slim @@ -0,0 +1,24 @@ +- nowrap = (option? 'nowrap') || !(document.attr? 'prewrap') +- if @style == 'source' + - syntax_hl = document.syntax_highlighter + - lang = attr :language + - if syntax_hl + - doc_attrs = document.attributes + - css_mode = (doc_attrs[%(#{syntax_hl.name}-css)] || :class).to_sym + - style = doc_attrs[%(#{syntax_hl.name}-style)] + - opts = syntax_hl.highlight? ? { css_mode: css_mode, style: style } : {} + - opts[:nowrap] = nowrap += html_tag('div', { :id => id, :class => ['listingblock', role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) + - if title? + div.title= captioned_title + div.content + - if syntax_hl + = (syntax_hl.format self, lang, opts) + - else + - if @style == 'source' + pre class = ['highlight', ('nowrap' if nowrap)] + code class = [("language-#{lang}" if lang)] data-lang = ("#{lang}" if lang) + = content || '' + - else + pre class = [('nowrap' if nowrap)] + = content || '' diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/literal.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/literal.html.slim new file mode 100644 index 00000000..a8acfca0 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/literal.html.slim @@ -0,0 +1,4 @@ += html_tag('div', { :id => id, :class => ['literalblock', role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) + - if title? + .title=title + .content: pre class=(!(@document.attr? :prewrap) || (option? 'nowrap') ? 'nowrap' : nil) =content diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/notes.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/notes.html.slim new file mode 100644 index 00000000..c78b0599 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/notes.html.slim @@ -0,0 +1 @@ +aside.notes =resolve_content diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/olist.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/olist.html.slim new file mode 100644 index 00000000..b970a954 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/olist.html.slim @@ -0,0 +1,9 @@ += html_tag('div', { :id => @id, :class => ['olist', @style, role] }.merge(data_attrs(@attributes))) + - if title? + .title=title + ol class=@style start=(attr :start) type=list_marker_keyword + - items.each do |item| + li class=('fragment' if (option? :step) || (has_role? 'step') || (attr? 'step')) + p=item.text + - if item.blocks? + =item.content diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/open.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/open.html.slim new file mode 100644 index 00000000..818857f7 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/open.html.slim @@ -0,0 +1,18 @@ +- if @style == 'abstract' + - if @parent == @document && @document.doctype == 'book' + - puts 'asciidoctor: WARNING: abstract block cannot be used in a document without a title when doctype is book. Excluding block content.' + - else + = html_tag('div', { :id => @id, :class => ['quoteblock', 'abstract', role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) + - if title? + .title=title + blockquote=content +- elsif @style == 'partintro' && (@level != 0 || @parent.context != :section || @document.doctype != 'book') + - puts 'asciidoctor: ERROR: partintro block can only be used when doctype is book and it\'s a child of a book part. Excluding block content.' +- else + - if (has_role? 'aside') or (has_role? 'speaker') or (has_role? 'notes') + include notes.html.slim + - else + = html_tag('div', { :id => @id, :class => ['openblock', (@style != 'open' ? @style : nil), role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) + - if title? + .title=title + .content=content diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/outline.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/outline.html.slim new file mode 100644 index 00000000..970e5d02 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/outline.html.slim @@ -0,0 +1,9 @@ +- unless sections.empty? + - toclevels ||= (document.attr 'toclevels', DEFAULT_TOCLEVELS).to_i + - slevel = section_level sections.first + ol class="sectlevel#{slevel}" + - sections.each do |sec| + li + a href="##{sec.id}" =section_title sec + - if (sec.level < toclevels) && (child_toc = converter.convert sec, 'outline') + = child_toc diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/page_break.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/page_break.html.slim new file mode 100644 index 00000000..3781f057 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/page_break.html.slim @@ -0,0 +1 @@ +div style='page-break-after: always;' diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/paragraph.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/paragraph.html.slim new file mode 100644 index 00000000..83d354a1 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/paragraph.html.slim @@ -0,0 +1,7 @@ += html_tag('div', { :id => @id, :class => ['paragraph', role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) + - if title? + .title=title + - if has_role? 'small' + small=content + - else + p=content diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/pass.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/pass.html.slim new file mode 100644 index 00000000..7125c22c --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/pass.html.slim @@ -0,0 +1 @@ +=content diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/preamble.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/preamble.html.slim new file mode 100644 index 00000000..ee2bed46 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/preamble.html.slim @@ -0,0 +1,2 @@ +/ file intentionally left blank +/ preamble is shown on the title slide which is rendered by document template diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/quote.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/quote.html.slim new file mode 100644 index 00000000..13d19ff0 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/quote.html.slim @@ -0,0 +1,14 @@ += html_tag('div', { :id => @id, :class => ['quoteblock', role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) + - if title? + .title=title + blockquote=content + - attribution = (attr? :attribution) ? (attr :attribution) : nil + - citetitle = (attr? :citetitle) ? (attr :citetitle) : nil + - if attribution || citetitle + .attribution + - if citetitle + cite=citetitle + - if attribution + - if citetitle + br + | — #{attribution} diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/ruler.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/ruler.html.slim new file mode 100644 index 00000000..fcb5e9c6 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/ruler.html.slim @@ -0,0 +1 @@ +hr diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/section.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/section.html.slim new file mode 100644 index 00000000..e3d7071a --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/section.html.slim @@ -0,0 +1,99 @@ +/ OPTIONS PROCESSING +/ hide slides on %conceal, %notitle and named "!" +- titleless = (title = self.title) == '!' +- hide_title = (titleless || (option? :notitle) || (option? :conceal)) + +- vertical_slides = find_by(context: :section) {|section| section.level == 2 } + +/ extracting block image attributes to find an image to use as a +/ background_image attribute +- data_background_image, data_background_size, data_background_repeat, + data_background_position, data_background_transition = nil + +/ process the first image block in the current section that acts as a background +- section_images = blocks.map do |block| + - if (ctx = block.context) == :image + - ['background', 'canvas'].include?(block.attributes[1]) ? block : [] + - elsif ctx == :section + - [] + - else + - block.find_by(context: :image) {|image| ['background', 'canvas'].include?(image.attributes[1]) } || [] +- if (bg_image = section_images.flatten.first) + - data_background_image = image_uri(bg_image.attr 'target') + / make sure no crash on nil and default values make sense + - data_background_size = bg_image.attr 'size' + - data_background_repeat = bg_image.attr 'repeat' + - data_background_transition = bg_image.attr 'transition' + - data_background_position = bg_image.attr 'position' + +/ background-image section attribute overrides the image one +- if attr? 'background-image' + - data_background_image = image_uri(attr 'background-image') + +- if attr? 'background-video' + - data_background_video = media_uri(attr 'background-video') + +- if attr? 'background-color' + - data_background_color = attr 'background-color' + +- parent_section_with_vertical_slides = @level == 1 && !vertical_slides.empty? + +- content_for :footnotes + - slide_footnotes = slide_footnotes(self) + - if document.footnotes? && !(parent.attr? 'nofootnotes') && !slide_footnotes.empty? + .footnotes + - slide_footnotes.each do |footnote| + .footnote + = "#{footnote.index}. #{footnote.text}" + +- content_for :section + section(id=(titleless ? nil : id) + class=roles + data-transition=(attr 'transition') + data-transition-speed=(attr 'transition-speed') + data-background-color=data_background_color + data-background-image=data_background_image + data-background-size=(data_background_size || attr('background-size')) + data-background-repeat=(data_background_repeat || attr('background-repeat')) + data-background-transition=(data_background_transition || attr('background-transition')) + data-background-position=(data_background_position || attr('background-position')) + data-background-iframe=(attr "background-iframe") + data-background-video=data_background_video + data-background-video-loop=((attr? 'background-video-loop') || (option? 'loop')) + data-background-video-muted=((attr? 'background-video-muted') || (option? 'muted')) + data-background-opacity=(attr "background-opacity") + data-autoslide=(attr "autoslide") + data-state=(attr 'state')) + - unless hide_title + h2=section_title + - if parent_section_with_vertical_slides + - unless (_blocks = blocks - vertical_slides).empty? + div.slide-content + - _blocks.each do |block| + =block.convert + - yield_content :footnotes + + - else + - unless (_content = content.chomp).empty? + div.slide-content + =_content + - yield_content :footnotes + + - clear_slide_footnotes + +/ RENDERING +/ render parent section of vertical slides set +- if parent_section_with_vertical_slides + section + - yield_content :section + - vertical_slides.each do |subsection| + =subsection.convert + +/ render standalone slides (or vertical slide subsection) +- else + - if @level >= 3 + / dynamic tags which maps with level + h level=(@level) =title + =content.chomp + - else + - yield_content :section diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/sidebar.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/sidebar.html.slim new file mode 100644 index 00000000..adef45c8 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/sidebar.html.slim @@ -0,0 +1,8 @@ +- if (has_role? 'aside') or (has_role? 'speaker') or (has_role? 'notes') + include notes.html.slim +- else + = html_tag('div', { :id => @id, :class => ['sidebarblock', role, ('fragment' if (option? :step) || (has_role? 'step') || (attr? 'step'))] }.merge(data_attrs(@attributes))) + .content + - if title? + .title=title + =content diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/stem.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/stem.html.slim new file mode 100644 index 00000000..5a0dd275 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/stem.html.slim @@ -0,0 +1,10 @@ +- open, close = Asciidoctor::BLOCK_MATH_DELIMITERS[@style.to_sym] +- equation = content.strip +- if (@subs.nil? || @subs.empty?) && !(attr? 'subs') + - equation = sub_specialcharacters equation +- unless (equation.start_with? open) && (equation.end_with? close) + - equation = %(#{open}#{equation}#{close}) += html_tag('div', { :id => @id, :class => ['stemblock', role, ('fragment' if (option? :step) || (has_role? 'step') || (attr? 'step'))] }.merge(data_attrs(@attributes))) + - if title? + .title=title + .content=equation diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/stretch_nested_elements.js.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/stretch_nested_elements.js.slim new file mode 100644 index 00000000..2cc2b739 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/stretch_nested_elements.js.slim @@ -0,0 +1,65 @@ +javascript: + var dom = {}; + dom.slides = document.querySelector('.reveal .slides'); + + function getRemainingHeight(element, slideElement, height) { + height = height || 0; + if (element) { + var newHeight, oldHeight = element.style.height; + // Change the .stretch element height to 0 in order find the height of all + // the other elements + element.style.height = '0px'; + // In Overview mode, the parent (.slide) height is set of 700px. + // Restore it temporarily to its natural height. + slideElement.style.height = 'auto'; + newHeight = height - slideElement.offsetHeight; + // Restore the old height, just in case + element.style.height = oldHeight + 'px'; + // Clear the parent (.slide) height. .removeProperty works in IE9+ + slideElement.style.removeProperty('height'); + return newHeight; + } + return height; + } + + function layoutSlideContents(width, height) { + // Handle sizing of elements with the 'stretch' class + toArray(dom.slides.querySelectorAll('section .stretch')).forEach(function (element) { + // Determine how much vertical space we can use + var limit = 5; // hard limit + var parent = element.parentNode; + while (parent.nodeName !== 'SECTION' && limit > 0) { + parent = parent.parentNode; + limit--; + } + if (limit === 0) { + // unable to find parent, aborting! + return; + } + var remainingHeight = getRemainingHeight(element, parent, height); + // Consider the aspect ratio of media elements + if (/(img|video)/gi.test(element.nodeName)) { + var nw = element.naturalWidth || element.videoWidth, nh = element.naturalHeight || element.videoHeight; + var es = Math.min(width / nw, remainingHeight / nh); + element.style.width = (nw * es) + 'px'; + element.style.height = (nh * es) + 'px'; + } else { + element.style.width = width + 'px'; + element.style.height = remainingHeight + 'px'; + } + }); + } + + function toArray(o) { + return Array.prototype.slice.call(o); + } + + Reveal.addEventListener('slidechanged', function () { + layoutSlideContents(#{attr 'revealjs_width', 960}, #{attr 'revealjs_height', 700}) + }); + Reveal.addEventListener('ready', function () { + layoutSlideContents(#{attr 'revealjs_width', 960}, #{attr 'revealjs_height', 700}) + }); + Reveal.addEventListener('resize', function () { + layoutSlideContents(#{attr 'revealjs_width', 960}, #{attr 'revealjs_height', 700}) + }); diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/table.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/table.html.slim new file mode 100644 index 00000000..eb5737f7 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/table.html.slim @@ -0,0 +1,46 @@ +- classes = ['tableblock', "frame-#{attr :frame, 'all'}", "grid-#{attr :grid, 'all'}", role, ('fragment' if (option? :step) || (attr? 'step'))] +- styles = [("width:#{attr :tablepcwidth}%" unless option? 'autowidth'), ("float:#{attr :float}" if attr? :float)].compact.join('; ') += html_tag('table', { :id => @id, :class => classes, :style => styles }.merge(data_attrs(@attributes))) + - if title? + caption.title=captioned_title + - unless (attr :rowcount).zero? + colgroup + - if option? 'autowidth' + - @columns.each do + col + - else + - @columns.each do |col| + col style="width:#{col.attr :colpcwidth}%" + - [:head, :foot, :body].select {|tblsec| !@rows[tblsec].empty? }.each do |tblsec| + / not sure about this one, done when converting to a compilable slim template + + - @rows[tblsec].each do |row| + tr + - row.each do |cell| + / store reference of content in advance to resolve attribute assignments in cells + - if tblsec == :head + - cell_content = cell.text + - else + - case cell.style + - when :literal + - cell_content = cell.text + - else + - cell_content = cell.content + = html_tag(tblsec == :head || cell.style == :header ? 'th' : 'td', + :class=>['tableblock', "halign-#{cell.attr :halign}", "valign-#{cell.attr :valign}"], + :colspan=>cell.colspan, :rowspan=>cell.rowspan, + :style=>((@document.attr? :cellbgcolor) ? %(background-color:#{@document.attr :cellbgcolor};) : nil)) + - if tblsec == :head + =cell_content + - else + - case cell.style + - when :asciidoc + div=cell_content + - when :literal + .literal: pre=cell_content + - when :header + - cell_content.each do |text| + p.tableblock.header=text + - else + - cell_content.each do |text| + p.tableblock=text diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/thematic_break.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/thematic_break.html.slim new file mode 100644 index 00000000..fcb5e9c6 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/thematic_break.html.slim @@ -0,0 +1 @@ +hr diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/title_slide.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/title_slide.html.slim new file mode 100644 index 00000000..fa305884 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/title_slide.html.slim @@ -0,0 +1,28 @@ +- bg_image = (attr? 'title-slide-background-image') ? (image_uri(attr 'title-slide-background-image')) : nil +- bg_video = (attr? 'title-slide-background-video') ? (media_uri(attr 'title-slide-background-video')) : nil +section.title(class = role + data-state='title' + data-transition=(attr 'title-slide-transition') + data-transition-speed=(attr 'title-slide-transition-speed') + data-background=(attr 'title-slide-background') + data-background-size=(attr 'title-slide-background-size') + data-background-image=bg_image + data-background-video=bg_video + data-background-video-loop=(attr 'title-slide-background-video-loop') + data-background-video-muted=(attr 'title-slide-background-video-muted') + data-background-opacity=(attr 'title-slide-background-opacity') + data-background-iframe=(attr 'title-slide-background-iframe') + data-background-color=(attr 'title-slide-background-color') + data-background-repeat=(attr 'title-slide-background-repeat') + data-background-position=(attr 'title-slide-background-position') + data-background-transition=(attr 'title-slide-background-transition')) + - if (_title_obj = doctitle partition: true, use_fallback: true).subtitle? + h1=slice_text _title_obj.title, (_slice = header.option? :slice) + h2=slice_text _title_obj.subtitle, _slice + - else + h1=@header.title + - preamble = @document.find_by context: :preamble + - unless preamble.nil? or preamble.length == 0 + div.preamble=preamble.pop.content + - unless author.nil? + p.author: small=author diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/toc.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/toc.html.slim new file mode 100644 index 00000000..5e03274e --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/toc.html.slim @@ -0,0 +1,17 @@ +/ this made tests crash so I replaced it with asciidoctor-backends HTML5 slim template +/- if @document.attr? :toc +/ - toc_id = @id +/ - toc_role = (attr 'role', (@document.attr 'toc-class', 'toc')) +/ - toc_title_id = nil +/ - toc_title = title? ? title : (@document.attr 'toc-title') +/ - toc_levels = (attr? :levels) ? (attr :levels).to_i : (@document.attr :toclevels, 2).to_i +/ - if !toc_id && (@document.embedded? || !(@document.attr? 'toc-placement')) +/ - toc_id = 'toc' +/ - toc_title_id = 'toctitle' +/ div id=toc_id class=toc_role +/ .title id=toc_title_id =toc_title +/ =Asciidoctor::HTML5::DocumentTemplate.outline(@document, toc_levels) +#toc class=(document.attr 'toc-class', 'toc') + #toctitle =(document.attr 'toc-title') + / Renders block_outline.html. + = converter.convert document, 'outline' diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/ulist.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/ulist.html.slim new file mode 100644 index 00000000..aba79166 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/ulist.html.slim @@ -0,0 +1,25 @@ +- if (checklist = (option? :checklist) ? 'checklist' : nil) + - if option? :interactive + - marker_checked = '' + - marker_unchecked = '' + - else + - if @document.attr? :icons, 'font' + - marker_checked = '' + - marker_unchecked = '' + - else + / could use ☑ (checked ballot) and ☐ (ballot) w/o font instead + - marker_checked = '' + - marker_unchecked = '' += html_tag('div', { :id => @id, :class => ['ulist', checklist, @style, role] }.merge(data_attrs(@attributes))) + - if title? + .title=title + ul class=(checklist || @style) + - items.each do |item| + li class=('fragment' if (option? :step) || (has_role? 'step') || (attr? 'step')) + p + - if checklist && (item.attr? :checkbox) + =%(#{(item.attr? :checked) ? marker_checked : marker_unchecked}#{item.text}) + - else + =item.text + - if item.blocks? + =item.content diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/verse.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/verse.html.slim new file mode 100644 index 00000000..fcc04db5 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/verse.html.slim @@ -0,0 +1,14 @@ += html_tag('div', { :id => @id, :class => ['verseblock', role, ('fragment' if (option? :step) || (attr? 'step'))] }.merge(data_attrs(@attributes))) + - if title? + .title=title + pre.content=content + - attribution = (attr? :attribution) ? (attr :attribution) : nil + - citetitle = (attr? :citetitle) ? (attr :citetitle) : nil + - if attribution || citetitle + .attribution + - if citetitle + cite=citetitle + - if attribution + - if citetitle + br + | — #{attribution} diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/video.html.slim b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/video.html.slim new file mode 100644 index 00000000..6c259494 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/gems/asciidoctor-revealjs-4.1.0/templates/video.html.slim @@ -0,0 +1,46 @@ +/ in a slide-deck context we assume video should take as much place as possible +/ unless already specified +- no_stretch = ((attr? :width) || (attr? :height)) +- width = (attr? :width) ? (attr :width) : "100%" +- height = (attr? :height) ? (attr :height) : "100%" +/ we apply revealjs stretch class to the videoblock take all the place we can += html_tag('div', { :id => @id, :class => ['videoblock', @style, role, (no_stretch ? nil : 'stretch'), ('fragment' if (option? :step) || (has_role? 'step') || (attr? 'step'))] }.merge(data_attrs(@attributes))) + - if title? + .title=captioned_title + - case attr :poster + - when 'vimeo' + - unless (asset_uri_scheme = (attr :asset_uri_scheme, 'https')).empty? + - asset_uri_scheme = %(#{asset_uri_scheme}:) + - start_anchor = (attr? :start) ? "#at=#{attr :start}" : nil + - delimiter = ['?'] + - loop_param = (option? 'loop') ? %(#{delimiter.pop || '&'}loop=1) : '' + - muted_param = (option? 'muted') ? %(#{delimiter.pop || '&'}muted=1) : '' + - src = %(#{asset_uri_scheme}//player.vimeo.com/video/#{attr :target}#{loop_param}#{muted_param}#{start_anchor}) + / We need to delegate autoplay into the iframe starting with Chrome 62 (and other browsers too) + / See https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#iframe + iframe(width=(width) height=(height) src=src frameborder=0 + webkitAllowFullScreen=true mozallowfullscreen=true allowFullScreen=true + data-autoplay=(option? 'autoplay') + allow=((option? 'autoplay') ? "autoplay" : nil)) + - when 'youtube' + - unless (asset_uri_scheme = (attr :asset_uri_scheme, 'https')).empty? + - asset_uri_scheme = %(#{asset_uri_scheme}:) + - params = ['rel=0'] + - params << "start=#{attr :start}" if attr? :start + - params << "end=#{attr :end}" if attr? :end + - params << "loop=1" if option? 'loop' + - params << "mute=1" if option? 'muted' + - params << "controls=0" if option? 'nocontrols' + - src = %(#{asset_uri_scheme}//www.youtube.com/embed/#{attr :target}?#{params * '&'}) + / We need to delegate autoplay into the iframe starting with Chrome 62 (and other browsers too) + / See https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#iframe + iframe(width=(width) height=(height) src=src + frameborder=0 allowfullscreen=!(option? 'nofullscreen') + data-autoplay=(option? 'autoplay') + allow=((option? 'autoplay') ? "autoplay" : nil)) + - else + video(src=media_uri(attr :target) width=(width) height=(height) + poster=((attr :poster) ? media_uri(attr :poster) : nil) + data-autoplay=(option? 'autoplay') controls=!(option? 'nocontrols') + loop=(option? 'loop')) + |Your browser does not support the video tag. diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/specifications/.jrubydir b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/specifications/.jrubydir new file mode 100644 index 00000000..80b74893 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/specifications/.jrubydir @@ -0,0 +1,4 @@ +.. +. +asciidoctor-kroki-0.5.0.gemspec +asciidoctor-revealjs-4.1.0.gemspec diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/specifications/asciidoctor-kroki-0.5.0.gemspec b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/specifications/asciidoctor-kroki-0.5.0.gemspec new file mode 100644 index 00000000..0878f0f6 --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/specifications/asciidoctor-kroki-0.5.0.gemspec @@ -0,0 +1,42 @@ +# -*- encoding: utf-8 -*- +# stub: asciidoctor-kroki 0.5.0 ruby lib + +Gem::Specification.new do |s| + s.name = "asciidoctor-kroki".freeze + s.version = "0.5.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.metadata = { "bug_tracker_uri" => "https://github.com/Mogztter/asciidoctor-kroki/issues", "source_code_uri" => "https://github.com/Mogztter/asciidoctor-kroki" } if s.respond_to? :metadata= + s.require_paths = ["lib".freeze] + s.authors = ["Guillaume Grossetie".freeze] + s.date = "2021-07-05" + s.description = "An extension for Asciidoctor to convert diagrams to images using https://kroki.io".freeze + s.email = ["ggrossetie@yuzutech.fr".freeze] + s.homepage = "https://github.com/Mogztter/asciidoctor-kroki".freeze + s.licenses = ["MIT".freeze] + s.rubygems_version = "2.7.10".freeze + s.summary = "Asciidoctor extension to convert diagrams to images using Kroki".freeze + + s.installed_by_version = "2.7.10" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q.freeze, ["~> 2.0"]) + s.add_development_dependency(%q.freeze, ["~> 12.3.2"]) + s.add_development_dependency(%q.freeze, ["~> 3.8.0"]) + s.add_development_dependency(%q.freeze, ["~> 0.74.0"]) + else + s.add_dependency(%q.freeze, ["~> 2.0"]) + s.add_dependency(%q.freeze, ["~> 12.3.2"]) + s.add_dependency(%q.freeze, ["~> 3.8.0"]) + s.add_dependency(%q.freeze, ["~> 0.74.0"]) + end + else + s.add_dependency(%q.freeze, ["~> 2.0"]) + s.add_dependency(%q.freeze, ["~> 12.3.2"]) + s.add_dependency(%q.freeze, ["~> 3.8.0"]) + s.add_dependency(%q.freeze, ["~> 0.74.0"]) + end +end diff --git a/aadarchi-maven-plugin/src/main/resources/META-INF/gems/specifications/asciidoctor-revealjs-4.1.0.gemspec b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/specifications/asciidoctor-revealjs-4.1.0.gemspec new file mode 100644 index 00000000..8189916a --- /dev/null +++ b/aadarchi-maven-plugin/src/main/resources/META-INF/gems/specifications/asciidoctor-revealjs-4.1.0.gemspec @@ -0,0 +1,77 @@ +# -*- encoding: utf-8 -*- +# stub: asciidoctor-revealjs 4.1.0 ruby lib + +Gem::Specification.new do |s| + s.name = "asciidoctor-revealjs".freeze + s.version = "4.1.0" + + s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= + s.require_paths = ["lib".freeze] + s.authors = ["Olivier Bilodeau".freeze] + s.date = "2020-12-19" + s.description = "Converts AsciiDoc documents into HTML5 presentations designed to be executed by the reveal.js presentation framework.".freeze + s.email = ["olivier@bottomlesspit.org".freeze] + s.executables = ["asciidoctor-revealjs".freeze] + s.extra_rdoc_files = ["README.adoc".freeze, "LICENSE.adoc".freeze] + s.files = ["LICENSE.adoc".freeze, "README.adoc".freeze, "bin/asciidoctor-revealjs".freeze] + s.homepage = "https://github.com/asciidoctor/asciidoctor-reveal.js".freeze + s.licenses = ["MIT".freeze] + s.rubygems_version = "2.7.10".freeze + s.summary = "A reveal.js converter for Asciidoctor. Write your slides in AsciiDoc!".freeze + + s.installed_by_version = "2.7.10" if s.respond_to? :installed_by_version + + if s.respond_to? :specification_version then + s.specification_version = 4 + + if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then + s.add_runtime_dependency(%q.freeze, [">= 2.0.0", "< 3.0.0"]) + s.add_runtime_dependency(%q.freeze, ["~> 0.3.5"]) + s.add_runtime_dependency(%q.freeze, ["~> 1.0"]) + s.add_development_dependency(%q.freeze, ["~> 13.0.0"]) + s.add_development_dependency(%q.freeze, ["= 2.0.0.beta.7"]) + s.add_development_dependency(%q.freeze, ["~> 5.14"]) + s.add_development_dependency(%q.freeze, ["~> 0.12.0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + s.add_development_dependency(%q.freeze, ["~> 0.6.0"]) + s.add_development_dependency(%q.freeze, ["~> 3.0.6"]) + s.add_development_dependency(%q.freeze, ["~> 0.1.0"]) + s.add_development_dependency(%q.freeze, [">= 0"]) + else + s.add_dependency(%q.freeze, [">= 2.0.0", "< 3.0.0"]) + s.add_dependency(%q.freeze, ["~> 0.3.5"]) + s.add_dependency(%q.freeze, ["~> 1.0"]) + s.add_dependency(%q.freeze, ["~> 13.0.0"]) + s.add_dependency(%q.freeze, ["= 2.0.0.beta.7"]) + s.add_dependency(%q.freeze, ["~> 5.14"]) + s.add_dependency(%q.freeze, ["~> 0.12.0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, ["~> 0.6.0"]) + s.add_dependency(%q.freeze, ["~> 3.0.6"]) + s.add_dependency(%q.freeze, ["~> 0.1.0"]) + s.add_dependency(%q.freeze, [">= 0"]) + end + else + s.add_dependency(%q.freeze, [">= 2.0.0", "< 3.0.0"]) + s.add_dependency(%q.freeze, ["~> 0.3.5"]) + s.add_dependency(%q.freeze, ["~> 1.0"]) + s.add_dependency(%q.freeze, ["~> 13.0.0"]) + s.add_dependency(%q.freeze, ["= 2.0.0.beta.7"]) + s.add_dependency(%q.freeze, ["~> 5.14"]) + s.add_dependency(%q.freeze, ["~> 0.12.0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, [">= 0"]) + s.add_dependency(%q.freeze, ["~> 0.6.0"]) + s.add_dependency(%q.freeze, ["~> 3.0.6"]) + s.add_dependency(%q.freeze, ["~> 0.1.0"]) + s.add_dependency(%q.freeze, [">= 0"]) + end +end diff --git a/architecture-documentation/.asciidoctorconfig.adoc b/architecture-documentation/.asciidoctorconfig.adoc new file mode 100644 index 00000000..d3cddb77 --- /dev/null +++ b/architecture-documentation/.asciidoctorconfig.adoc @@ -0,0 +1,12 @@ +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// + Initial AsciiDoc editor configuration file - V1.0 + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// +// Did not find any configuration files, so creating this at project root level. +// If you do not like those files to be generated - you can turn it off inside Asciidoctor Editor preferences. +// +// You can define editor specific parts here. +// For example: with next line you could set imagesdir attribute to subfolder "images" relative to the folder where this config file is located. +// :imagesdir: {asciidoctorconfigdir}/images +// +// For more information please take a look at https://github.com/de-jcup/eclipse-asciidoctor-editor/wiki/Asciidoctor-configfiles